@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,4 +1,4 @@
1
- import { IssueCategory, IssueSeverity } from "sap/fe/core/converters/helpers/IssueManager";
1
+ import type { IssueCategory, IssueSeverity } from "sap/fe/core/converters/helpers/IssueManager";
2
2
 
3
3
  export type IssueDefinition = {
4
4
  category: IssueCategory;
@@ -33,9 +33,9 @@ class Diagnostics {
33
33
  }
34
34
  getIssuesByCategory(inCategory: IssueCategory, subCategory?: string): IssueDefinition[] {
35
35
  if (subCategory) {
36
- return this._issues.filter(issue => issue.category === inCategory && issue.subCategory === subCategory);
36
+ return this._issues.filter((issue) => issue.category === inCategory && issue.subCategory === subCategory);
37
37
  } else {
38
- return this._issues.filter(issue => issue.category === inCategory);
38
+ return this._issues.filter((issue) => issue.category === inCategory);
39
39
  }
40
40
  }
41
41
  checkIfIssueExists(
@@ -47,7 +47,7 @@ class Diagnostics {
47
47
  ): boolean {
48
48
  if (issueCategoryType && issueCategoryType[inCategory] && issueSubCategory) {
49
49
  return this._issues.some(
50
- issue =>
50
+ (issue) =>
51
51
  issue.category === inCategory &&
52
52
  issue.severity === severity &&
53
53
  issue.details.replace(/\n/g, "") === details.replace(/\n/g, "") &&
@@ -55,7 +55,7 @@ class Diagnostics {
55
55
  );
56
56
  }
57
57
  return this._issues.some(
58
- issue =>
58
+ (issue) =>
59
59
  issue.category === inCategory &&
60
60
  issue.severity === severity &&
61
61
  issue.details.replace(/\n/g, "") === details.replace(/\n/g, "")
@@ -35,4 +35,4 @@ sap.ui.define(["sap/fe/core/support/CommonHelper", "sap/fe/core/converters/helpe
35
35
  _exports.getRules = getRules;
36
36
  return _exports;
37
37
  }, false);
38
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIkludmFsaWRBbm5vdGF0aW9uQ29sdW1uS2V5LnN1cHBvcnQudHMiXSwibmFtZXMiOlsib0ludmFsaWRBbm5vdGF0aW9uQ29sdW1uS2V5IiwiaWQiLCJ0aXRsZSIsIm1pbnZlcnNpb24iLCJhdWRpZW5jZXMiLCJBdWRpZW5jZXMiLCJBcHBsaWNhdGlvbiIsImNhdGVnb3JpZXMiLCJDYXRlZ29yaWVzIiwiVXNhZ2UiLCJkZXNjcmlwdGlvbiIsInJlc29sdXRpb24iLCJyZXNvbHV0aW9udXJscyIsImNoZWNrIiwib0lzc3VlTWFuYWdlciIsIm9Db3JlRmFjYWRlIiwiZ2V0SXNzdWVCeUNhdGVnb3J5IiwiSXNzdWVDYXRlZ29yeSIsIk1hbmlmZXN0IiwiZ2V0UnVsZXMiXSwibWFwcGluZ3MiOiI7QUFBQTtBQUNBO0FBQ0E7Ozs7Ozs7Ozs7QUFBQSxNQUFNQSwyQkFBMkIsR0FBRztBQUNuQ0MsSUFBQUEsRUFBRSxFQUFFLDRCQUQrQjtBQUVuQ0MsSUFBQUEsS0FBSyxFQUFFLGtDQUY0QjtBQUduQ0MsSUFBQUEsVUFBVSxFQUFFLE1BSHVCO0FBSW5DQyxJQUFBQSxTQUFTLEVBQUUsQ0FBQ0MsU0FBUyxDQUFDQyxXQUFYLENBSndCO0FBS25DQyxJQUFBQSxVQUFVLEVBQUUsQ0FBQ0MsVUFBVSxDQUFDQyxLQUFaLENBTHVCO0FBTW5DQyxJQUFBQSxXQUFXLEVBQUUsK0ZBTnNCO0FBT25DQyxJQUFBQSxVQUFVLEVBQUUsZ0dBUHVCO0FBUW5DQyxJQUFBQSxjQUFjLEVBQUUsQ0FBQztBQUFFLGNBQVEsNEJBQVY7QUFBd0MsY0FBUTtBQUFoRCxLQUFELENBUm1CO0FBU25DQyxJQUFBQSxLQUFLLEVBQUUsVUFBU0MsYUFBVCxFQUE2QkMsV0FBN0IsRUFBK0Q7QUFDckVDLE1BQUFBLGtCQUFrQixDQUFDRixhQUFELEVBQWdCQyxXQUFoQixFQUE2QkUsYUFBYSxDQUFDQyxRQUEzQyxFQUFxRCxZQUFyRCxDQUFsQjtBQUNBO0FBWGtDLEdBQXBDOztBQWFPLFdBQVNDLFFBQVQsR0FBb0I7QUFDMUIsV0FBTyxDQUFDbkIsMkJBQUQsQ0FBUDtBQUNBIiwic291cmNlUm9vdCI6Ii4iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDYXRlZ29yaWVzLCBnZXRJc3N1ZUJ5Q2F0ZWdvcnksIEF1ZGllbmNlcyB9IGZyb20gXCJzYXAvZmUvY29yZS9zdXBwb3J0L0NvbW1vbkhlbHBlclwiO1xuaW1wb3J0IHsgSXNzdWVDYXRlZ29yeSB9IGZyb20gXCJzYXAvZmUvY29yZS9jb252ZXJ0ZXJzL2hlbHBlcnMvSXNzdWVNYW5hZ2VyXCI7XG5jb25zdCBvSW52YWxpZEFubm90YXRpb25Db2x1bW5LZXkgPSB7XG5cdGlkOiBcImludmFsaWRBbm5vdGF0aW9uQ29sdW1uS2V5XCIsXG5cdHRpdGxlOiBcIkFubm90YXRpb25Db2x1bW5LZXk6IEludmFsaWQgS2V5XCIsXG5cdG1pbnZlcnNpb246IFwiMS45OFwiLFxuXHRhdWRpZW5jZXM6IFtBdWRpZW5jZXMuQXBwbGljYXRpb25dLFxuXHRjYXRlZ29yaWVzOiBbQ2F0ZWdvcmllcy5Vc2FnZV0sXG5cdGRlc2NyaXB0aW9uOiBcIlRoZSBrZXkgb2YgdGhlIGFubm90YXRpb24gY29sdW1uIGlzIG5lZWRlZCBhcyBhIHZhbGlkIGlkZW50aWZpZXIgaW4gdGhlIGFwcGxpY2F0aW9uIG1hbmlmZXN0LlwiLFxuXHRyZXNvbHV0aW9uOiBcIkEgY29sdW1uIGtleSBzZXQgaW4gdGhlIGFwcGxpY2F0aW9uIG1hbmlmZXN0IG11c3QgY29ycmVzcG9uZCB0byBhbiBleGlzdGluZyBhbm5vdGF0aW9uIGNvbHVtbi5cIixcblx0cmVzb2x1dGlvbnVybHM6IFt7IFwidGV4dFwiOiBcIkludmFsaWRBbm5vdGF0aW9uQ29sdW1uS2V5XCIsIFwiaHJlZlwiOiBcImh0dHBzOi8vdWk1LnNhcC5jb20vIy90b3BpYy9kNTI1NTIyYzFiZjU0NjcyYWU0ZTAyZDY2YjM4ZTYwY1wiIH1dLFxuXHRjaGVjazogZnVuY3Rpb24ob0lzc3VlTWFuYWdlcjogYW55LCBvQ29yZUZhY2FkZTogYW55IC8qb1Njb3BlOiBhbnkqLykge1xuXHRcdGdldElzc3VlQnlDYXRlZ29yeShvSXNzdWVNYW5hZ2VyLCBvQ29yZUZhY2FkZSwgSXNzdWVDYXRlZ29yeS5NYW5pZmVzdCwgXCJJbnZhbGlkS2V5XCIpO1xuXHR9XG59O1xuZXhwb3J0IGZ1bmN0aW9uIGdldFJ1bGVzKCkge1xuXHRyZXR1cm4gW29JbnZhbGlkQW5ub3RhdGlvbkNvbHVtbktleV07XG59XG4iXX0=
38
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJvSW52YWxpZEFubm90YXRpb25Db2x1bW5LZXkiLCJpZCIsInRpdGxlIiwibWludmVyc2lvbiIsImF1ZGllbmNlcyIsIkF1ZGllbmNlcyIsIkFwcGxpY2F0aW9uIiwiY2F0ZWdvcmllcyIsIkNhdGVnb3JpZXMiLCJVc2FnZSIsImRlc2NyaXB0aW9uIiwicmVzb2x1dGlvbiIsInJlc29sdXRpb251cmxzIiwiY2hlY2siLCJvSXNzdWVNYW5hZ2VyIiwib0NvcmVGYWNhZGUiLCJnZXRJc3N1ZUJ5Q2F0ZWdvcnkiLCJJc3N1ZUNhdGVnb3J5IiwiTWFuaWZlc3QiLCJnZXRSdWxlcyJdLCJzb3VyY2VSb290IjoiLiIsInNvdXJjZXMiOlsiSW52YWxpZEFubm90YXRpb25Db2x1bW5LZXkuc3VwcG9ydC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDYXRlZ29yaWVzLCBnZXRJc3N1ZUJ5Q2F0ZWdvcnksIEF1ZGllbmNlcyB9IGZyb20gXCJzYXAvZmUvY29yZS9zdXBwb3J0L0NvbW1vbkhlbHBlclwiO1xuaW1wb3J0IHsgSXNzdWVDYXRlZ29yeSB9IGZyb20gXCJzYXAvZmUvY29yZS9jb252ZXJ0ZXJzL2hlbHBlcnMvSXNzdWVNYW5hZ2VyXCI7XG5jb25zdCBvSW52YWxpZEFubm90YXRpb25Db2x1bW5LZXkgPSB7XG5cdGlkOiBcImludmFsaWRBbm5vdGF0aW9uQ29sdW1uS2V5XCIsXG5cdHRpdGxlOiBcIkFubm90YXRpb25Db2x1bW5LZXk6IEludmFsaWQgS2V5XCIsXG5cdG1pbnZlcnNpb246IFwiMS45OFwiLFxuXHRhdWRpZW5jZXM6IFtBdWRpZW5jZXMuQXBwbGljYXRpb25dLFxuXHRjYXRlZ29yaWVzOiBbQ2F0ZWdvcmllcy5Vc2FnZV0sXG5cdGRlc2NyaXB0aW9uOiBcIlRoZSBrZXkgb2YgdGhlIGFubm90YXRpb24gY29sdW1uIGlzIG5lZWRlZCBhcyBhIHZhbGlkIGlkZW50aWZpZXIgaW4gdGhlIGFwcGxpY2F0aW9uIG1hbmlmZXN0LlwiLFxuXHRyZXNvbHV0aW9uOiBcIkEgY29sdW1uIGtleSBzZXQgaW4gdGhlIGFwcGxpY2F0aW9uIG1hbmlmZXN0IG11c3QgY29ycmVzcG9uZCB0byBhbiBleGlzdGluZyBhbm5vdGF0aW9uIGNvbHVtbi5cIixcblx0cmVzb2x1dGlvbnVybHM6IFt7IFwidGV4dFwiOiBcIkludmFsaWRBbm5vdGF0aW9uQ29sdW1uS2V5XCIsIFwiaHJlZlwiOiBcImh0dHBzOi8vdWk1LnNhcC5jb20vIy90b3BpYy9kNTI1NTIyYzFiZjU0NjcyYWU0ZTAyZDY2YjM4ZTYwY1wiIH1dLFxuXHRjaGVjazogZnVuY3Rpb24ob0lzc3VlTWFuYWdlcjogYW55LCBvQ29yZUZhY2FkZTogYW55IC8qb1Njb3BlOiBhbnkqLykge1xuXHRcdGdldElzc3VlQnlDYXRlZ29yeShvSXNzdWVNYW5hZ2VyLCBvQ29yZUZhY2FkZSwgSXNzdWVDYXRlZ29yeS5NYW5pZmVzdCwgXCJJbnZhbGlkS2V5XCIpO1xuXHR9XG59O1xuZXhwb3J0IGZ1bmN0aW9uIGdldFJ1bGVzKCkge1xuXHRyZXR1cm4gW29JbnZhbGlkQW5ub3RhdGlvbkNvbHVtbktleV07XG59XG4iXSwibWFwcGluZ3MiOiI7QUFBQTtBQUFBO0FBQUE7Ozs7Ozs7Ozs7RUFFQSxJQUFNQSwyQkFBMkIsR0FBRztJQUNuQ0MsRUFBRSxFQUFFLDRCQUQrQjtJQUVuQ0MsS0FBSyxFQUFFLGtDQUY0QjtJQUduQ0MsVUFBVSxFQUFFLE1BSHVCO0lBSW5DQyxTQUFTLEVBQUUsQ0FBQ0MsU0FBUyxDQUFDQyxXQUFYLENBSndCO0lBS25DQyxVQUFVLEVBQUUsQ0FBQ0MsVUFBVSxDQUFDQyxLQUFaLENBTHVCO0lBTW5DQyxXQUFXLEVBQUUsK0ZBTnNCO0lBT25DQyxVQUFVLEVBQUUsZ0dBUHVCO0lBUW5DQyxjQUFjLEVBQUUsQ0FBQztNQUFFLFFBQVEsNEJBQVY7TUFBd0MsUUFBUTtJQUFoRCxDQUFELENBUm1CO0lBU25DQyxLQUFLLEVBQUUsVUFBU0MsYUFBVCxFQUE2QkMsV0FBN0IsRUFBK0Q7TUFDckVDLGtCQUFrQixDQUFDRixhQUFELEVBQWdCQyxXQUFoQixFQUE2QkUsYUFBYSxDQUFDQyxRQUEzQyxFQUFxRCxZQUFyRCxDQUFsQjtJQUNBO0VBWGtDLENBQXBDOztFQWFPLFNBQVNDLFFBQVQsR0FBb0I7SUFDMUIsT0FBTyxDQUFDbkIsMkJBQUQsQ0FBUDtFQUNBIn0=
@@ -0,0 +1,85 @@
1
+ /*!
2
+ * SAP UI development toolkit for HTML5 (SAPUI5)
3
+ * (c) Copyright 2009-2021 SAP SE. All rights reserved
4
+ */
5
+ sap.ui.define(["sap/fe/core/formatters/ValueFormatter", "sap/fe/core/helpers/BindingToolkit", "sap/fe/core/templating/DataModelPathHelper", "sap/fe/core/templating/PropertyHelper", "sap/fe/core/templating/UIFormatters", "../converters/helpers/DataFieldHelper"], function (valueFormatters, BindingToolkit, DataModelPathHelper, PropertyHelper, UIFormatters, DataFieldHelper) {
6
+ "use strict";
7
+
8
+ var _exports = {};
9
+ var isReferencePropertyStaticallyHidden = DataFieldHelper.isReferencePropertyStaticallyHidden;
10
+ var getPathRelativeLocation = DataModelPathHelper.getPathRelativeLocation;
11
+ var getContextRelativeTargetObjectPath = DataModelPathHelper.getContextRelativeTargetObjectPath;
12
+ var enhanceDataModelPath = DataModelPathHelper.enhanceDataModelPath;
13
+ var pathInModel = BindingToolkit.pathInModel;
14
+ var getExpressionFromAnnotation = BindingToolkit.getExpressionFromAnnotation;
15
+ var formatResult = BindingToolkit.formatResult;
16
+ var compileExpression = BindingToolkit.compileExpression;
17
+
18
+ // Import-export methods related to the common annotations used by the converter to use them in the templating through the Common Formatters.
19
+
20
+ /**
21
+ * Retrieves the expressionBinding created out of a binding expression.
22
+ *
23
+ * @param expression The expression which needs to be compiled
24
+ * @returns The expression-binding string
25
+ */
26
+ var getExpressionBinding = function (expression) {
27
+ return compileExpression(expression);
28
+ };
29
+
30
+ _exports.getExpressionBinding = getExpressionBinding;
31
+
32
+ var getBindingWithTextArrangement = function (oPropertyDataModelPath, propertyBindingExpression, fieldFormatOptions) {
33
+ var _oPropertyDefinition$, _oPropertyDefinition$2;
34
+
35
+ var targetDisplayModeOverride = fieldFormatOptions === null || fieldFormatOptions === void 0 ? void 0 : fieldFormatOptions.displayMode;
36
+ var outExpression = propertyBindingExpression;
37
+ var oPropertyDefinition = oPropertyDataModelPath.targetObject.type === "PropertyPath" ? oPropertyDataModelPath.targetObject.$target : oPropertyDataModelPath.targetObject;
38
+ var targetDisplayMode = targetDisplayModeOverride || UIFormatters.getDisplayMode(oPropertyDataModelPath);
39
+ var commonText = (_oPropertyDefinition$ = oPropertyDefinition.annotations) === null || _oPropertyDefinition$ === void 0 ? void 0 : (_oPropertyDefinition$2 = _oPropertyDefinition$.Common) === null || _oPropertyDefinition$2 === void 0 ? void 0 : _oPropertyDefinition$2.Text;
40
+ var relativeLocation = getPathRelativeLocation(oPropertyDataModelPath.contextLocation, oPropertyDataModelPath.navigationProperties).map(function (np) {
41
+ return np.name;
42
+ });
43
+ propertyBindingExpression = UIFormatters.formatWithTypeInformation(oPropertyDefinition, propertyBindingExpression);
44
+
45
+ if (targetDisplayMode !== "Value" && commonText) {
46
+ switch (targetDisplayMode) {
47
+ case "Description":
48
+ outExpression = getExpressionFromAnnotation(commonText, relativeLocation);
49
+ break;
50
+
51
+ case "DescriptionValue":
52
+ outExpression = formatResult([getExpressionFromAnnotation(commonText, relativeLocation), propertyBindingExpression], valueFormatters.formatWithBrackets);
53
+ break;
54
+
55
+ case "ValueDescription":
56
+ outExpression = formatResult([propertyBindingExpression, getExpressionFromAnnotation(commonText, relativeLocation)], valueFormatters.formatWithBrackets);
57
+ break;
58
+ }
59
+ }
60
+
61
+ return outExpression;
62
+ };
63
+
64
+ _exports.getBindingWithTextArrangement = getBindingWithTextArrangement;
65
+
66
+ var getBindingWithText = function (targetDataModelPath) {
67
+ var propertyDataModelPath = targetDataModelPath;
68
+
69
+ if (PropertyHelper.isPathExpression(targetDataModelPath === null || targetDataModelPath === void 0 ? void 0 : targetDataModelPath.targetObject)) {
70
+ var _targetDataModelPath$;
71
+
72
+ propertyDataModelPath = enhanceDataModelPath(targetDataModelPath, (_targetDataModelPath$ = targetDataModelPath.targetObject) === null || _targetDataModelPath$ === void 0 ? void 0 : _targetDataModelPath$.path);
73
+ }
74
+
75
+ var propertyDefinition = propertyDataModelPath.targetObject;
76
+ var propertyBindingExpression = pathInModel(getContextRelativeTargetObjectPath(propertyDataModelPath));
77
+ propertyBindingExpression = UIFormatters.formatWithTypeInformation(propertyDefinition, propertyBindingExpression, true);
78
+ var textArrangementBinding = getBindingWithTextArrangement(propertyDataModelPath, propertyBindingExpression);
79
+ return propertyDefinition.annotations.UI && !isReferencePropertyStaticallyHidden(propertyDefinition.annotations.UI.DataFieldDefault) && compileExpression(textArrangementBinding) || undefined;
80
+ };
81
+
82
+ _exports.getBindingWithText = getBindingWithText;
83
+ return _exports;
84
+ }, false);
85
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJnZXRFeHByZXNzaW9uQmluZGluZyIsImV4cHJlc3Npb24iLCJjb21waWxlRXhwcmVzc2lvbiIsImdldEJpbmRpbmdXaXRoVGV4dEFycmFuZ2VtZW50Iiwib1Byb3BlcnR5RGF0YU1vZGVsUGF0aCIsInByb3BlcnR5QmluZGluZ0V4cHJlc3Npb24iLCJmaWVsZEZvcm1hdE9wdGlvbnMiLCJ0YXJnZXREaXNwbGF5TW9kZU92ZXJyaWRlIiwiZGlzcGxheU1vZGUiLCJvdXRFeHByZXNzaW9uIiwib1Byb3BlcnR5RGVmaW5pdGlvbiIsInRhcmdldE9iamVjdCIsInR5cGUiLCIkdGFyZ2V0IiwidGFyZ2V0RGlzcGxheU1vZGUiLCJVSUZvcm1hdHRlcnMiLCJnZXREaXNwbGF5TW9kZSIsImNvbW1vblRleHQiLCJhbm5vdGF0aW9ucyIsIkNvbW1vbiIsIlRleHQiLCJyZWxhdGl2ZUxvY2F0aW9uIiwiZ2V0UGF0aFJlbGF0aXZlTG9jYXRpb24iLCJjb250ZXh0TG9jYXRpb24iLCJuYXZpZ2F0aW9uUHJvcGVydGllcyIsIm1hcCIsIm5wIiwibmFtZSIsImZvcm1hdFdpdGhUeXBlSW5mb3JtYXRpb24iLCJnZXRFeHByZXNzaW9uRnJvbUFubm90YXRpb24iLCJmb3JtYXRSZXN1bHQiLCJ2YWx1ZUZvcm1hdHRlcnMiLCJmb3JtYXRXaXRoQnJhY2tldHMiLCJnZXRCaW5kaW5nV2l0aFRleHQiLCJ0YXJnZXREYXRhTW9kZWxQYXRoIiwicHJvcGVydHlEYXRhTW9kZWxQYXRoIiwiUHJvcGVydHlIZWxwZXIiLCJpc1BhdGhFeHByZXNzaW9uIiwiZW5oYW5jZURhdGFNb2RlbFBhdGgiLCJwYXRoIiwicHJvcGVydHlEZWZpbml0aW9uIiwicGF0aEluTW9kZWwiLCJnZXRDb250ZXh0UmVsYXRpdmVUYXJnZXRPYmplY3RQYXRoIiwidGV4dEFycmFuZ2VtZW50QmluZGluZyIsIlVJIiwiaXNSZWZlcmVuY2VQcm9wZXJ0eVN0YXRpY2FsbHlIaWRkZW4iLCJEYXRhRmllbGREZWZhdWx0IiwidW5kZWZpbmVkIl0sInNvdXJjZVJvb3QiOiIuIiwic291cmNlcyI6WyJDb21tb25Gb3JtYXR0ZXJzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgUHJvcGVydHkgfSBmcm9tIFwiQHNhcC11eC92b2NhYnVsYXJpZXMtdHlwZXNcIjtcbmltcG9ydCB2YWx1ZUZvcm1hdHRlcnMgZnJvbSBcInNhcC9mZS9jb3JlL2Zvcm1hdHRlcnMvVmFsdWVGb3JtYXR0ZXJcIjtcbmltcG9ydCB0eXBlIHsgQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uLCBDb21waWxlZEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbiB9IGZyb20gXCJzYXAvZmUvY29yZS9oZWxwZXJzL0JpbmRpbmdUb29sa2l0XCI7XG5pbXBvcnQgeyBjb21waWxlRXhwcmVzc2lvbiwgZm9ybWF0UmVzdWx0LCBnZXRFeHByZXNzaW9uRnJvbUFubm90YXRpb24sIHBhdGhJbk1vZGVsIH0gZnJvbSBcInNhcC9mZS9jb3JlL2hlbHBlcnMvQmluZGluZ1Rvb2xraXRcIjtcbmltcG9ydCB0eXBlIHsgRGF0YU1vZGVsT2JqZWN0UGF0aCB9IGZyb20gXCJzYXAvZmUvY29yZS90ZW1wbGF0aW5nL0RhdGFNb2RlbFBhdGhIZWxwZXJcIjtcbmltcG9ydCB7XG5cdGVuaGFuY2VEYXRhTW9kZWxQYXRoLFxuXHRnZXRDb250ZXh0UmVsYXRpdmVUYXJnZXRPYmplY3RQYXRoLFxuXHRnZXRQYXRoUmVsYXRpdmVMb2NhdGlvblxufSBmcm9tIFwic2FwL2ZlL2NvcmUvdGVtcGxhdGluZy9EYXRhTW9kZWxQYXRoSGVscGVyXCI7XG5pbXBvcnQgdHlwZSAqIGFzIERpc3BsYXlNb2RlRm9ybWF0dGVyIGZyb20gXCJzYXAvZmUvY29yZS90ZW1wbGF0aW5nL0Rpc3BsYXlNb2RlRm9ybWF0dGVyXCI7XG5pbXBvcnQgKiBhcyBQcm9wZXJ0eUhlbHBlciBmcm9tIFwic2FwL2ZlL2NvcmUvdGVtcGxhdGluZy9Qcm9wZXJ0eUhlbHBlclwiO1xuaW1wb3J0ICogYXMgVUlGb3JtYXR0ZXJzIGZyb20gXCJzYXAvZmUvY29yZS90ZW1wbGF0aW5nL1VJRm9ybWF0dGVyc1wiO1xuaW1wb3J0IHsgaXNSZWZlcmVuY2VQcm9wZXJ0eVN0YXRpY2FsbHlIaWRkZW4gfSBmcm9tIFwiLi4vY29udmVydGVycy9oZWxwZXJzL0RhdGFGaWVsZEhlbHBlclwiO1xuZXhwb3J0IHR5cGUgRGlzcGxheU1vZGUgPSBEaXNwbGF5TW9kZUZvcm1hdHRlci5EaXNwbGF5TW9kZTtcblxuLy8gSW1wb3J0LWV4cG9ydCBtZXRob2RzIHJlbGF0ZWQgdG8gdGhlIGNvbW1vbiBhbm5vdGF0aW9ucyB1c2VkIGJ5IHRoZSBjb252ZXJ0ZXIgdG8gdXNlIHRoZW0gaW4gdGhlIHRlbXBsYXRpbmcgdGhyb3VnaCB0aGUgQ29tbW9uIEZvcm1hdHRlcnMuXG5cbi8qKlxuICogUmV0cmlldmVzIHRoZSBleHByZXNzaW9uQmluZGluZyBjcmVhdGVkIG91dCBvZiBhIGJpbmRpbmcgZXhwcmVzc2lvbi5cbiAqXG4gKiBAcGFyYW0gZXhwcmVzc2lvbiBUaGUgZXhwcmVzc2lvbiB3aGljaCBuZWVkcyB0byBiZSBjb21waWxlZFxuICogQHJldHVybnMgVGhlIGV4cHJlc3Npb24tYmluZGluZyBzdHJpbmdcbiAqL1xuZXhwb3J0IGNvbnN0IGdldEV4cHJlc3Npb25CaW5kaW5nID0gZnVuY3Rpb24gKGV4cHJlc3Npb246IEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbjxhbnk+KTogQ29tcGlsZWRCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb24ge1xuXHRyZXR1cm4gY29tcGlsZUV4cHJlc3Npb24oZXhwcmVzc2lvbik7XG59O1xuZXhwb3J0IGNvbnN0IGdldEJpbmRpbmdXaXRoVGV4dEFycmFuZ2VtZW50ID0gZnVuY3Rpb24gKFxuXHRvUHJvcGVydHlEYXRhTW9kZWxQYXRoOiBEYXRhTW9kZWxPYmplY3RQYXRoLFxuXHRwcm9wZXJ0eUJpbmRpbmdFeHByZXNzaW9uOiBCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb248c3RyaW5nPixcblx0ZmllbGRGb3JtYXRPcHRpb25zPzogeyBkaXNwbGF5TW9kZT86IERpc3BsYXlNb2RlIH1cbik6IEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbjxzdHJpbmc+IHtcblx0Y29uc3QgdGFyZ2V0RGlzcGxheU1vZGVPdmVycmlkZSA9IGZpZWxkRm9ybWF0T3B0aW9ucz8uZGlzcGxheU1vZGU7XG5cdGxldCBvdXRFeHByZXNzaW9uID0gcHJvcGVydHlCaW5kaW5nRXhwcmVzc2lvbjtcblx0Y29uc3Qgb1Byb3BlcnR5RGVmaW5pdGlvbiA9XG5cdFx0b1Byb3BlcnR5RGF0YU1vZGVsUGF0aC50YXJnZXRPYmplY3QudHlwZSA9PT0gXCJQcm9wZXJ0eVBhdGhcIlxuXHRcdFx0PyAob1Byb3BlcnR5RGF0YU1vZGVsUGF0aC50YXJnZXRPYmplY3QuJHRhcmdldCBhcyBQcm9wZXJ0eSlcblx0XHRcdDogKG9Qcm9wZXJ0eURhdGFNb2RlbFBhdGgudGFyZ2V0T2JqZWN0IGFzIFByb3BlcnR5KTtcblx0Y29uc3QgdGFyZ2V0RGlzcGxheU1vZGUgPSB0YXJnZXREaXNwbGF5TW9kZU92ZXJyaWRlIHx8IFVJRm9ybWF0dGVycy5nZXREaXNwbGF5TW9kZShvUHJvcGVydHlEYXRhTW9kZWxQYXRoKTtcblx0Y29uc3QgY29tbW9uVGV4dCA9IG9Qcm9wZXJ0eURlZmluaXRpb24uYW5ub3RhdGlvbnM/LkNvbW1vbj8uVGV4dDtcblx0Y29uc3QgcmVsYXRpdmVMb2NhdGlvbiA9IGdldFBhdGhSZWxhdGl2ZUxvY2F0aW9uKFxuXHRcdG9Qcm9wZXJ0eURhdGFNb2RlbFBhdGguY29udGV4dExvY2F0aW9uLFxuXHRcdG9Qcm9wZXJ0eURhdGFNb2RlbFBhdGgubmF2aWdhdGlvblByb3BlcnRpZXNcblx0KS5tYXAoKG5wKSA9PiBucC5uYW1lKTtcblx0cHJvcGVydHlCaW5kaW5nRXhwcmVzc2lvbiA9IFVJRm9ybWF0dGVycy5mb3JtYXRXaXRoVHlwZUluZm9ybWF0aW9uKG9Qcm9wZXJ0eURlZmluaXRpb24sIHByb3BlcnR5QmluZGluZ0V4cHJlc3Npb24pO1xuXHRpZiAodGFyZ2V0RGlzcGxheU1vZGUgIT09IFwiVmFsdWVcIiAmJiBjb21tb25UZXh0KSB7XG5cdFx0c3dpdGNoICh0YXJnZXREaXNwbGF5TW9kZSkge1xuXHRcdFx0Y2FzZSBcIkRlc2NyaXB0aW9uXCI6XG5cdFx0XHRcdG91dEV4cHJlc3Npb24gPSBnZXRFeHByZXNzaW9uRnJvbUFubm90YXRpb24oY29tbW9uVGV4dCwgcmVsYXRpdmVMb2NhdGlvbikgYXMgQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uPHN0cmluZz47XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0Y2FzZSBcIkRlc2NyaXB0aW9uVmFsdWVcIjpcblx0XHRcdFx0b3V0RXhwcmVzc2lvbiA9IGZvcm1hdFJlc3VsdChcblx0XHRcdFx0XHRbXG5cdFx0XHRcdFx0XHRnZXRFeHByZXNzaW9uRnJvbUFubm90YXRpb24oY29tbW9uVGV4dCwgcmVsYXRpdmVMb2NhdGlvbikgYXMgQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uPHN0cmluZz4sXG5cdFx0XHRcdFx0XHRwcm9wZXJ0eUJpbmRpbmdFeHByZXNzaW9uXG5cdFx0XHRcdFx0XSxcblx0XHRcdFx0XHR2YWx1ZUZvcm1hdHRlcnMuZm9ybWF0V2l0aEJyYWNrZXRzXG5cdFx0XHRcdCk7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0Y2FzZSBcIlZhbHVlRGVzY3JpcHRpb25cIjpcblx0XHRcdFx0b3V0RXhwcmVzc2lvbiA9IGZvcm1hdFJlc3VsdChcblx0XHRcdFx0XHRbXG5cdFx0XHRcdFx0XHRwcm9wZXJ0eUJpbmRpbmdFeHByZXNzaW9uLFxuXHRcdFx0XHRcdFx0Z2V0RXhwcmVzc2lvbkZyb21Bbm5vdGF0aW9uKGNvbW1vblRleHQsIHJlbGF0aXZlTG9jYXRpb24pIGFzIEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbjxzdHJpbmc+XG5cdFx0XHRcdFx0XSxcblx0XHRcdFx0XHR2YWx1ZUZvcm1hdHRlcnMuZm9ybWF0V2l0aEJyYWNrZXRzXG5cdFx0XHRcdCk7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdH1cblx0fVxuXHRyZXR1cm4gb3V0RXhwcmVzc2lvbjtcbn07XG5leHBvcnQgY29uc3QgZ2V0QmluZGluZ1dpdGhUZXh0ID0gZnVuY3Rpb24gKHRhcmdldERhdGFNb2RlbFBhdGg6IERhdGFNb2RlbE9iamVjdFBhdGgpOiBDb21waWxlZEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbiB7XG5cdGxldCBwcm9wZXJ0eURhdGFNb2RlbFBhdGggPSB0YXJnZXREYXRhTW9kZWxQYXRoO1xuXHRpZiAoUHJvcGVydHlIZWxwZXIuaXNQYXRoRXhwcmVzc2lvbih0YXJnZXREYXRhTW9kZWxQYXRoPy50YXJnZXRPYmplY3QpKSB7XG5cdFx0cHJvcGVydHlEYXRhTW9kZWxQYXRoID0gZW5oYW5jZURhdGFNb2RlbFBhdGgodGFyZ2V0RGF0YU1vZGVsUGF0aCwgdGFyZ2V0RGF0YU1vZGVsUGF0aC50YXJnZXRPYmplY3Q/LnBhdGgpO1xuXHR9XG5cdGNvbnN0IHByb3BlcnR5RGVmaW5pdGlvbiA9IHByb3BlcnR5RGF0YU1vZGVsUGF0aC50YXJnZXRPYmplY3QgYXMgUHJvcGVydHk7XG5cblx0bGV0IHByb3BlcnR5QmluZGluZ0V4cHJlc3Npb24gPSBwYXRoSW5Nb2RlbChcblx0XHRnZXRDb250ZXh0UmVsYXRpdmVUYXJnZXRPYmplY3RQYXRoKHByb3BlcnR5RGF0YU1vZGVsUGF0aClcblx0KSBhcyBCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb248c3RyaW5nPjtcblxuXHRwcm9wZXJ0eUJpbmRpbmdFeHByZXNzaW9uID0gVUlGb3JtYXR0ZXJzLmZvcm1hdFdpdGhUeXBlSW5mb3JtYXRpb24ocHJvcGVydHlEZWZpbml0aW9uLCBwcm9wZXJ0eUJpbmRpbmdFeHByZXNzaW9uLCB0cnVlKTtcblx0Y29uc3QgdGV4dEFycmFuZ2VtZW50QmluZGluZyA9IGdldEJpbmRpbmdXaXRoVGV4dEFycmFuZ2VtZW50KHByb3BlcnR5RGF0YU1vZGVsUGF0aCwgcHJvcGVydHlCaW5kaW5nRXhwcmVzc2lvbik7XG5cdHJldHVybiAoKHByb3BlcnR5RGVmaW5pdGlvbi5hbm5vdGF0aW9ucy5VSSAmJlxuXHRcdCFpc1JlZmVyZW5jZVByb3BlcnR5U3RhdGljYWxseUhpZGRlbihwcm9wZXJ0eURlZmluaXRpb24uYW5ub3RhdGlvbnMuVUkuRGF0YUZpZWxkRGVmYXVsdCkgJiZcblx0XHRjb21waWxlRXhwcmVzc2lvbih0ZXh0QXJyYW5nZW1lbnRCaW5kaW5nKSkgfHxcblx0XHR1bmRlZmluZWQpIGFzIENvbXBpbGVkQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uO1xufTtcbiJdLCJtYXBwaW5ncyI6IjtBQUFBO0FBQUE7QUFBQTs7Ozs7Ozs7Ozs7Ozs7RUFnQkE7O0VBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0VBQ08sSUFBTUEsb0JBQW9CLEdBQUcsVUFBVUMsVUFBVixFQUF1RjtJQUMxSCxPQUFPQyxpQkFBaUIsQ0FBQ0QsVUFBRCxDQUF4QjtFQUNBLENBRk07Ozs7RUFHQSxJQUFNRSw2QkFBNkIsR0FBRyxVQUM1Q0Msc0JBRDRDLEVBRTVDQyx5QkFGNEMsRUFHNUNDLGtCQUg0QyxFQUlUO0lBQUE7O0lBQ25DLElBQU1DLHlCQUF5QixHQUFHRCxrQkFBSCxhQUFHQSxrQkFBSCx1QkFBR0Esa0JBQWtCLENBQUVFLFdBQXREO0lBQ0EsSUFBSUMsYUFBYSxHQUFHSix5QkFBcEI7SUFDQSxJQUFNSyxtQkFBbUIsR0FDeEJOLHNCQUFzQixDQUFDTyxZQUF2QixDQUFvQ0MsSUFBcEMsS0FBNkMsY0FBN0MsR0FDSVIsc0JBQXNCLENBQUNPLFlBQXZCLENBQW9DRSxPQUR4QyxHQUVJVCxzQkFBc0IsQ0FBQ08sWUFINUI7SUFJQSxJQUFNRyxpQkFBaUIsR0FBR1AseUJBQXlCLElBQUlRLFlBQVksQ0FBQ0MsY0FBYixDQUE0Qlosc0JBQTVCLENBQXZEO0lBQ0EsSUFBTWEsVUFBVSw0QkFBR1AsbUJBQW1CLENBQUNRLFdBQXZCLG9GQUFHLHNCQUFpQ0MsTUFBcEMsMkRBQUcsdUJBQXlDQyxJQUE1RDtJQUNBLElBQU1DLGdCQUFnQixHQUFHQyx1QkFBdUIsQ0FDL0NsQixzQkFBc0IsQ0FBQ21CLGVBRHdCLEVBRS9DbkIsc0JBQXNCLENBQUNvQixvQkFGd0IsQ0FBdkIsQ0FHdkJDLEdBSHVCLENBR25CLFVBQUNDLEVBQUQ7TUFBQSxPQUFRQSxFQUFFLENBQUNDLElBQVg7SUFBQSxDQUhtQixDQUF6QjtJQUlBdEIseUJBQXlCLEdBQUdVLFlBQVksQ0FBQ2EseUJBQWIsQ0FBdUNsQixtQkFBdkMsRUFBNERMLHlCQUE1RCxDQUE1Qjs7SUFDQSxJQUFJUyxpQkFBaUIsS0FBSyxPQUF0QixJQUFpQ0csVUFBckMsRUFBaUQ7TUFDaEQsUUFBUUgsaUJBQVI7UUFDQyxLQUFLLGFBQUw7VUFDQ0wsYUFBYSxHQUFHb0IsMkJBQTJCLENBQUNaLFVBQUQsRUFBYUksZ0JBQWIsQ0FBM0M7VUFDQTs7UUFDRCxLQUFLLGtCQUFMO1VBQ0NaLGFBQWEsR0FBR3FCLFlBQVksQ0FDM0IsQ0FDQ0QsMkJBQTJCLENBQUNaLFVBQUQsRUFBYUksZ0JBQWIsQ0FENUIsRUFFQ2hCLHlCQUZELENBRDJCLEVBSzNCMEIsZUFBZSxDQUFDQyxrQkFMVyxDQUE1QjtVQU9BOztRQUNELEtBQUssa0JBQUw7VUFDQ3ZCLGFBQWEsR0FBR3FCLFlBQVksQ0FDM0IsQ0FDQ3pCLHlCQURELEVBRUN3QiwyQkFBMkIsQ0FBQ1osVUFBRCxFQUFhSSxnQkFBYixDQUY1QixDQUQyQixFQUszQlUsZUFBZSxDQUFDQyxrQkFMVyxDQUE1QjtVQU9BO01BckJGO0lBdUJBOztJQUNELE9BQU92QixhQUFQO0VBQ0EsQ0E1Q007Ozs7RUE2Q0EsSUFBTXdCLGtCQUFrQixHQUFHLFVBQVVDLG1CQUFWLEVBQXNGO0lBQ3ZILElBQUlDLHFCQUFxQixHQUFHRCxtQkFBNUI7O0lBQ0EsSUFBSUUsY0FBYyxDQUFDQyxnQkFBZixDQUFnQ0gsbUJBQWhDLGFBQWdDQSxtQkFBaEMsdUJBQWdDQSxtQkFBbUIsQ0FBRXZCLFlBQXJELENBQUosRUFBd0U7TUFBQTs7TUFDdkV3QixxQkFBcUIsR0FBR0csb0JBQW9CLENBQUNKLG1CQUFELDJCQUFzQkEsbUJBQW1CLENBQUN2QixZQUExQywwREFBc0Isc0JBQWtDNEIsSUFBeEQsQ0FBNUM7SUFDQTs7SUFDRCxJQUFNQyxrQkFBa0IsR0FBR0wscUJBQXFCLENBQUN4QixZQUFqRDtJQUVBLElBQUlOLHlCQUF5QixHQUFHb0MsV0FBVyxDQUMxQ0Msa0NBQWtDLENBQUNQLHFCQUFELENBRFEsQ0FBM0M7SUFJQTlCLHlCQUF5QixHQUFHVSxZQUFZLENBQUNhLHlCQUFiLENBQXVDWSxrQkFBdkMsRUFBMkRuQyx5QkFBM0QsRUFBc0YsSUFBdEYsQ0FBNUI7SUFDQSxJQUFNc0Msc0JBQXNCLEdBQUd4Qyw2QkFBNkIsQ0FBQ2dDLHFCQUFELEVBQXdCOUIseUJBQXhCLENBQTVEO0lBQ0EsT0FBU21DLGtCQUFrQixDQUFDdEIsV0FBbkIsQ0FBK0IwQixFQUEvQixJQUNSLENBQUNDLG1DQUFtQyxDQUFDTCxrQkFBa0IsQ0FBQ3RCLFdBQW5CLENBQStCMEIsRUFBL0IsQ0FBa0NFLGdCQUFuQyxDQUQ1QixJQUVSNUMsaUJBQWlCLENBQUN5QyxzQkFBRCxDQUZWLElBR1BJLFNBSEQ7RUFJQSxDQWpCTSJ9
@@ -0,0 +1,90 @@
1
+ import type { Property } from "@sap-ux/vocabularies-types";
2
+ import valueFormatters from "sap/fe/core/formatters/ValueFormatter";
3
+ import type { BindingToolkitExpression, CompiledBindingToolkitExpression } from "sap/fe/core/helpers/BindingToolkit";
4
+ import { compileExpression, formatResult, getExpressionFromAnnotation, pathInModel } from "sap/fe/core/helpers/BindingToolkit";
5
+ import type { DataModelObjectPath } from "sap/fe/core/templating/DataModelPathHelper";
6
+ import {
7
+ enhanceDataModelPath,
8
+ getContextRelativeTargetObjectPath,
9
+ getPathRelativeLocation
10
+ } from "sap/fe/core/templating/DataModelPathHelper";
11
+ import type * as DisplayModeFormatter from "sap/fe/core/templating/DisplayModeFormatter";
12
+ import * as PropertyHelper from "sap/fe/core/templating/PropertyHelper";
13
+ import * as UIFormatters from "sap/fe/core/templating/UIFormatters";
14
+ import { isReferencePropertyStaticallyHidden } from "../converters/helpers/DataFieldHelper";
15
+ export type DisplayMode = DisplayModeFormatter.DisplayMode;
16
+
17
+ // Import-export methods related to the common annotations used by the converter to use them in the templating through the Common Formatters.
18
+
19
+ /**
20
+ * Retrieves the expressionBinding created out of a binding expression.
21
+ *
22
+ * @param expression The expression which needs to be compiled
23
+ * @returns The expression-binding string
24
+ */
25
+ export const getExpressionBinding = function (expression: BindingToolkitExpression<any>): CompiledBindingToolkitExpression {
26
+ return compileExpression(expression);
27
+ };
28
+ export const getBindingWithTextArrangement = function (
29
+ oPropertyDataModelPath: DataModelObjectPath,
30
+ propertyBindingExpression: BindingToolkitExpression<string>,
31
+ fieldFormatOptions?: { displayMode?: DisplayMode }
32
+ ): BindingToolkitExpression<string> {
33
+ const targetDisplayModeOverride = fieldFormatOptions?.displayMode;
34
+ let outExpression = propertyBindingExpression;
35
+ const oPropertyDefinition =
36
+ oPropertyDataModelPath.targetObject.type === "PropertyPath"
37
+ ? (oPropertyDataModelPath.targetObject.$target as Property)
38
+ : (oPropertyDataModelPath.targetObject as Property);
39
+ const targetDisplayMode = targetDisplayModeOverride || UIFormatters.getDisplayMode(oPropertyDataModelPath);
40
+ const commonText = oPropertyDefinition.annotations?.Common?.Text;
41
+ const relativeLocation = getPathRelativeLocation(
42
+ oPropertyDataModelPath.contextLocation,
43
+ oPropertyDataModelPath.navigationProperties
44
+ ).map((np) => np.name);
45
+ propertyBindingExpression = UIFormatters.formatWithTypeInformation(oPropertyDefinition, propertyBindingExpression);
46
+ if (targetDisplayMode !== "Value" && commonText) {
47
+ switch (targetDisplayMode) {
48
+ case "Description":
49
+ outExpression = getExpressionFromAnnotation(commonText, relativeLocation) as BindingToolkitExpression<string>;
50
+ break;
51
+ case "DescriptionValue":
52
+ outExpression = formatResult(
53
+ [
54
+ getExpressionFromAnnotation(commonText, relativeLocation) as BindingToolkitExpression<string>,
55
+ propertyBindingExpression
56
+ ],
57
+ valueFormatters.formatWithBrackets
58
+ );
59
+ break;
60
+ case "ValueDescription":
61
+ outExpression = formatResult(
62
+ [
63
+ propertyBindingExpression,
64
+ getExpressionFromAnnotation(commonText, relativeLocation) as BindingToolkitExpression<string>
65
+ ],
66
+ valueFormatters.formatWithBrackets
67
+ );
68
+ break;
69
+ }
70
+ }
71
+ return outExpression;
72
+ };
73
+ export const getBindingWithText = function (targetDataModelPath: DataModelObjectPath): CompiledBindingToolkitExpression {
74
+ let propertyDataModelPath = targetDataModelPath;
75
+ if (PropertyHelper.isPathExpression(targetDataModelPath?.targetObject)) {
76
+ propertyDataModelPath = enhanceDataModelPath(targetDataModelPath, targetDataModelPath.targetObject?.path);
77
+ }
78
+ const propertyDefinition = propertyDataModelPath.targetObject as Property;
79
+
80
+ let propertyBindingExpression = pathInModel(
81
+ getContextRelativeTargetObjectPath(propertyDataModelPath)
82
+ ) as BindingToolkitExpression<string>;
83
+
84
+ propertyBindingExpression = UIFormatters.formatWithTypeInformation(propertyDefinition, propertyBindingExpression, true);
85
+ const textArrangementBinding = getBindingWithTextArrangement(propertyDataModelPath, propertyBindingExpression);
86
+ return ((propertyDefinition.annotations.UI &&
87
+ !isReferencePropertyStaticallyHidden(propertyDefinition.annotations.UI.DataFieldDefault) &&
88
+ compileExpression(textArrangementBinding)) ||
89
+ undefined) as CompiledBindingToolkitExpression;
90
+ };
@@ -2,17 +2,17 @@
2
2
  * SAP UI development toolkit for HTML5 (SAPUI5)
3
3
  * (c) Copyright 2009-2021 SAP SE. All rights reserved
4
4
  */
5
- sap.ui.define(["sap/fe/core/helpers/BindingExpression", "sap/fe/core/templating/DataModelPathHelper"], function (BindingExpression, DataModelPathHelper) {
5
+ sap.ui.define(["sap/fe/core/helpers/BindingToolkit", "sap/fe/core/templating/DataModelPathHelper"], function (BindingToolkit, DataModelPathHelper) {
6
6
  "use strict";
7
7
 
8
8
  var _exports = {};
9
9
  var getPathRelativeLocation = DataModelPathHelper.getPathRelativeLocation;
10
- var ifElse = BindingExpression.ifElse;
11
- var equal = BindingExpression.equal;
12
- var or = BindingExpression.or;
13
- var annotationExpression = BindingExpression.annotationExpression;
14
- var constant = BindingExpression.constant;
15
- var compileBinding = BindingExpression.compileBinding;
10
+ var or = BindingToolkit.or;
11
+ var ifElse = BindingToolkit.ifElse;
12
+ var getExpressionFromAnnotation = BindingToolkit.getExpressionFromAnnotation;
13
+ var equal = BindingToolkit.equal;
14
+ var constant = BindingToolkit.constant;
15
+ var compileExpression = BindingToolkit.compileExpression;
16
16
 
17
17
  /**
18
18
  * Returns an expression to set button type based on Criticality
@@ -22,29 +22,29 @@ sap.ui.define(["sap/fe/core/helpers/BindingExpression", "sap/fe/core/templating/
22
22
  * @static
23
23
  * @name sap.fe.core.CriticalityFormatters.buildExpressionForCriticalityColor
24
24
  * @memberof sap.fe.core.CriticalityFormatters
25
- * @param {object} oTarget A DataField a DataPoint or a DataModelObjectPath.
26
- * @param {object} [oPropertyDataModelPath] DataModelObjectPath.
27
- * @returns {string} An expression to deduce the state of an objectStatus.
25
+ * @param oTarget A DataField a DataPoint or a DataModelObjectPath.
26
+ * @param [oPropertyDataModelPath] DataModelObjectPath.
27
+ * @returns An expression to deduce the state of an objectStatus.
28
28
  * @private
29
29
  * @ui5-restricted
30
- **/
30
+ */
31
31
  var buildExpressionForCriticalityColor = function (oTarget, oPropertyDataModelPath) {
32
32
  var oAnnotationTarget = oTarget.targetObject ? oTarget.targetObject : oTarget;
33
33
  var oCriticalityProperty = oAnnotationTarget === null || oAnnotationTarget === void 0 ? void 0 : oAnnotationTarget.Criticality;
34
34
  var relativeLocation = oPropertyDataModelPath ? getPathRelativeLocation(oPropertyDataModelPath.contextLocation, oPropertyDataModelPath.navigationProperties).map(function (np) {
35
35
  return np.name;
36
36
  }) : undefined;
37
- var oCriticalityExpression = annotationExpression(oCriticalityProperty, relativeLocation);
37
+ var oCriticalityExpression = getExpressionFromAnnotation(oCriticalityProperty, relativeLocation);
38
38
  var sValueStateExpression;
39
39
 
40
40
  if (oCriticalityProperty) {
41
- sValueStateExpression = ifElse(or(equal(oCriticalityExpression, constant("UI.CriticalityType/Negative")), equal(oCriticalityExpression, constant(1)), equal(oCriticalityExpression, constant("1"))), constant("Error"), ifElse(or(equal(oCriticalityExpression, constant("UI.CriticalityType/Critical")), equal(oCriticalityExpression, constant(2)), equal(oCriticalityExpression, constant("2"))), constant("Warning"), ifElse(or(equal(oCriticalityExpression, constant("UI.CriticalityType/Positive")), equal(oCriticalityExpression, constant(3)), equal(oCriticalityExpression, constant("3"))), constant("Success"), ifElse(or(equal(oCriticalityExpression, constant("UI.CriticalityType/Information")), equal(oCriticalityExpression, constant(5)), equal(oCriticalityExpression, constant("5"))), constant("Indication05"), constant("None")))));
41
+ sValueStateExpression = ifElse(or(equal(oCriticalityExpression, constant("UI.CriticalityType/Negative")), equal(oCriticalityExpression, constant(1)), equal(oCriticalityExpression, constant("1"))), constant("Error"), ifElse(or(equal(oCriticalityExpression, constant("UI.CriticalityType/Critical")), equal(oCriticalityExpression, constant(2)), equal(oCriticalityExpression, constant("2"))), constant("Warning"), ifElse(or(equal(oCriticalityExpression, constant("UI.CriticalityType/Positive")), equal(oCriticalityExpression, constant(3)), equal(oCriticalityExpression, constant("3"))), constant("Success"), ifElse(or(equal(oCriticalityExpression, constant("UI.CriticalityType/Information")), equal(oCriticalityExpression, constant(5)), equal(oCriticalityExpression, constant("5"))), constant("Information"), constant("None")))));
42
42
  } else {
43
43
  // Any other cases are not valid, the default value of 'None' will be returned
44
44
  sValueStateExpression = constant("None");
45
45
  }
46
46
 
47
- return compileBinding(sValueStateExpression);
47
+ return compileExpression(sValueStateExpression);
48
48
  };
49
49
  /**
50
50
  * Returns an expression to set icon type based on Criticality
@@ -54,12 +54,12 @@ sap.ui.define(["sap/fe/core/helpers/BindingExpression", "sap/fe/core/templating/
54
54
  * @static
55
55
  * @name sap.fe.core.CriticalityFormatters.buildExpressionForCriticalityIcon
56
56
  * @memberof sap.fe.core.CriticalityFormatters
57
- * @param {object} oTarget A DataField a DataPoint or a DataModelObjectPath.
58
- * @param {object} [oPropertyDataModelPath] DataModelObjectPath.
59
- * @returns {string} An expression to deduce the icon of an objectStatus.
57
+ * @param oTarget A DataField a DataPoint or a DataModelObjectPath.
58
+ * @param [oPropertyDataModelPath] DataModelObjectPath.
59
+ * @returns An expression to deduce the icon of an objectStatus.
60
60
  * @private
61
61
  * @ui5-restricted
62
- **/
62
+ */
63
63
 
64
64
 
65
65
  _exports.buildExpressionForCriticalityColor = buildExpressionForCriticalityColor;
@@ -70,7 +70,7 @@ sap.ui.define(["sap/fe/core/helpers/BindingExpression", "sap/fe/core/templating/
70
70
  var relativeLocation = oPropertyDataModelPath ? getPathRelativeLocation(oPropertyDataModelPath.contextLocation, oPropertyDataModelPath.navigationProperties).map(function (np) {
71
71
  return np.name;
72
72
  }) : undefined;
73
- var oCriticalityExpression = annotationExpression(oCriticalityProperty, relativeLocation);
73
+ var oCriticalityExpression = getExpressionFromAnnotation(oCriticalityProperty, relativeLocation);
74
74
  var bCondition = (oAnnotationTarget === null || oAnnotationTarget === void 0 ? void 0 : oAnnotationTarget.CriticalityRepresentation) && (oAnnotationTarget === null || oAnnotationTarget === void 0 ? void 0 : oAnnotationTarget.CriticalityRepresentation) === "UI.CriticalityRepresentationType/WithoutIcon";
75
75
  var sIconPath;
76
76
 
@@ -84,7 +84,7 @@ sap.ui.define(["sap/fe/core/helpers/BindingExpression", "sap/fe/core/templating/
84
84
  sIconPath = constant("");
85
85
  }
86
86
 
87
- return compileBinding(sIconPath);
87
+ return compileExpression(sIconPath);
88
88
  };
89
89
  /**
90
90
  * Returns an expression to set button type based on Criticality
@@ -94,11 +94,11 @@ sap.ui.define(["sap/fe/core/helpers/BindingExpression", "sap/fe/core/templating/
94
94
  * @static
95
95
  * @name sap.fe.core.CriticalityFormatters.buildExpressionForCriticalityButtonType
96
96
  * @memberof sap.fe.core.CriticalityFormatters
97
- * @param {object} oTarget A DataField, DataPoint, DataModelObjectPath.
98
- * @returns {string} An expression to deduce button type.
97
+ * @param oTarget A DataField, DataPoint, DataModelObjectPath.
98
+ * @returns An expression to deduce button type.
99
99
  * @private
100
100
  * @ui5-restricted
101
- **/
101
+ */
102
102
 
103
103
 
104
104
  _exports.buildExpressionForCriticalityIcon = buildExpressionForCriticalityIcon;
@@ -106,7 +106,7 @@ sap.ui.define(["sap/fe/core/helpers/BindingExpression", "sap/fe/core/templating/
106
106
  var buildExpressionForCriticalityButtonType = function (oTarget) {
107
107
  var oAnnotationTarget = oTarget !== null && oTarget !== void 0 && oTarget.targetObject ? oTarget.targetObject : oTarget;
108
108
  var oCriticalityProperty = oAnnotationTarget === null || oAnnotationTarget === void 0 ? void 0 : oAnnotationTarget.Criticality;
109
- var oCriticalityExpression = annotationExpression(oCriticalityProperty);
109
+ var oCriticalityExpression = getExpressionFromAnnotation(oCriticalityProperty);
110
110
  var sButtonTypeExpression;
111
111
 
112
112
  if (oCriticalityProperty) {
@@ -116,7 +116,7 @@ sap.ui.define(["sap/fe/core/helpers/BindingExpression", "sap/fe/core/templating/
116
116
  sButtonTypeExpression = constant("Default");
117
117
  }
118
118
 
119
- return compileBinding(sButtonTypeExpression);
119
+ return compileExpression(sButtonTypeExpression);
120
120
  };
121
121
  /**
122
122
  * Returns an expression to set color in MicroCharts based on Criticality
@@ -126,11 +126,11 @@ sap.ui.define(["sap/fe/core/helpers/BindingExpression", "sap/fe/core/templating/
126
126
  * @static
127
127
  * @name sap.fe.core.CriticalityFormatters.buildExpressionForCriticalityColorMicroChart
128
128
  * @memberof sap.fe.core.CriticalityFormatters
129
- * @param {object} oTarget A DataField, DataPoint, DataModelObjectPath
130
- * @returns {string} An expression to deduce colors in Microcharts
129
+ * @param oTarget A DataField, DataPoint, DataModelObjectPath
130
+ * @returns An expression to deduce colors in Microcharts
131
131
  * @private
132
132
  * @ui5-restricted
133
- **/
133
+ */
134
134
 
135
135
 
136
136
  _exports.buildExpressionForCriticalityButtonType = buildExpressionForCriticalityButtonType;
@@ -138,7 +138,7 @@ sap.ui.define(["sap/fe/core/helpers/BindingExpression", "sap/fe/core/templating/
138
138
  var buildExpressionForCriticalityColorMicroChart = function (oTarget) {
139
139
  var oAnnotationTarget = oTarget !== null && oTarget !== void 0 && oTarget.targetObject ? oTarget.targetObject : oTarget;
140
140
  var oCriticalityProperty = oAnnotationTarget === null || oAnnotationTarget === void 0 ? void 0 : oAnnotationTarget.Criticality;
141
- var oCriticalityExpression = annotationExpression(oCriticalityProperty);
141
+ var oCriticalityExpression = getExpressionFromAnnotation(oCriticalityProperty);
142
142
  var sColorExpression;
143
143
 
144
144
  if (oCriticalityProperty) {
@@ -147,10 +147,10 @@ sap.ui.define(["sap/fe/core/helpers/BindingExpression", "sap/fe/core/templating/
147
147
  sColorExpression = constant("Neutral");
148
148
  }
149
149
 
150
- return compileBinding(sColorExpression);
150
+ return compileExpression(sColorExpression);
151
151
  };
152
152
 
153
153
  _exports.buildExpressionForCriticalityColorMicroChart = buildExpressionForCriticalityColorMicroChart;
154
154
  return _exports;
155
155
  }, false);
156
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIkNyaXRpY2FsaXR5Rm9ybWF0dGVycy50cyJdLCJuYW1lcyI6WyJidWlsZEV4cHJlc3Npb25Gb3JDcml0aWNhbGl0eUNvbG9yIiwib1RhcmdldCIsIm9Qcm9wZXJ0eURhdGFNb2RlbFBhdGgiLCJvQW5ub3RhdGlvblRhcmdldCIsInRhcmdldE9iamVjdCIsIm9Dcml0aWNhbGl0eVByb3BlcnR5IiwiQ3JpdGljYWxpdHkiLCJyZWxhdGl2ZUxvY2F0aW9uIiwiZ2V0UGF0aFJlbGF0aXZlTG9jYXRpb24iLCJjb250ZXh0TG9jYXRpb24iLCJuYXZpZ2F0aW9uUHJvcGVydGllcyIsIm1hcCIsIm5wIiwibmFtZSIsInVuZGVmaW5lZCIsIm9Dcml0aWNhbGl0eUV4cHJlc3Npb24iLCJhbm5vdGF0aW9uRXhwcmVzc2lvbiIsInNWYWx1ZVN0YXRlRXhwcmVzc2lvbiIsImlmRWxzZSIsIm9yIiwiZXF1YWwiLCJjb25zdGFudCIsImNvbXBpbGVCaW5kaW5nIiwiYnVpbGRFeHByZXNzaW9uRm9yQ3JpdGljYWxpdHlJY29uIiwiYkNvbmRpdGlvbiIsIkNyaXRpY2FsaXR5UmVwcmVzZW50YXRpb24iLCJzSWNvblBhdGgiLCJidWlsZEV4cHJlc3Npb25Gb3JDcml0aWNhbGl0eUJ1dHRvblR5cGUiLCJzQnV0dG9uVHlwZUV4cHJlc3Npb24iLCJidWlsZEV4cHJlc3Npb25Gb3JDcml0aWNhbGl0eUNvbG9yTWljcm9DaGFydCIsInNDb2xvckV4cHJlc3Npb24iXSwibWFwcGluZ3MiOiI7QUFBQTtBQUNBO0FBQ0E7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ08sTUFBTUEsa0NBQWtDLEdBQUcsVUFBQ0MsT0FBRCxFQUFlQyxzQkFBZixFQUFtRjtBQUNwSSxRQUFNQyxpQkFBaUIsR0FBR0YsT0FBTyxDQUFDRyxZQUFSLEdBQXVCSCxPQUFPLENBQUNHLFlBQS9CLEdBQThDSCxP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QUQsRUFBeUJNLFFBQVEsQ0FBQyxHQUFELENBQWpDLENBSEosQ0FERyxFQU1MQSxRQUFRLENBQUMsTUFBRCxDQU5ILEVBT0xBLFFBQVEsQ0FBQyxTQUFELENBUEgsQ0FQRCxDQVBrQixDQUF6QjtBQXlCQSxLQTFCRCxNQTBCTztBQUNOUyxNQUFBQSxnQkFBZ0IsR0FBR1QsUUFBUSxDQUFDLFNBQUQsQ0FBM0I7QUFDQTs7QUFDRCxXQUFPQyxjQUFjLENBQUNRLGdCQUFELENBQXJCO0FBQ0EsR0FuQ00iLCJzb3VyY2VSb290IjoiLiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGNvbXBpbGVCaW5kaW5nLCBjb25zdGFudCwgRXhwcmVzc2lvbiwgYW5ub3RhdGlvbkV4cHJlc3Npb24sIG9yLCBlcXVhbCwgaWZFbHNlIH0gZnJvbSBcInNhcC9mZS9jb3JlL2hlbHBlcnMvQmluZGluZ0V4cHJlc3Npb25cIjtcbmltcG9ydCB7IERhdGFNb2RlbE9iamVjdFBhdGgsIGdldFBhdGhSZWxhdGl2ZUxvY2F0aW9uIH0gZnJvbSBcInNhcC9mZS9jb3JlL3RlbXBsYXRpbmcvRGF0YU1vZGVsUGF0aEhlbHBlclwiO1xuLyoqXG4gKiBSZXR1cm5zIGFuIGV4cHJlc3Npb24gdG8gc2V0IGJ1dHRvbiB0eXBlIGJhc2VkIG9uIENyaXRpY2FsaXR5XG4gKiBTdXBwb3J0ZWQgQ3JpdGljYWxpdHk6IFBvc2l0aXZlLCBOZWdhdGl2ZSwgQ3JpdGljYWwgYW5kIEluZm9ybWF0aW9uIGxlYWRpbmcgdG8gU3VjY2VzcywgRXJyb3IsIFdhcm5pbmcgYW5kIE5vbmUgc3RhdGUgcmVzcGVjdGl2ZWx5LlxuICpcbiAqIEBmdW5jdGlvblxuICogQHN0YXRpY1xuICogQG5hbWUgc2FwLmZlLmNvcmUuQ3JpdGljYWxpdHlGb3JtYXR0ZXJzLmJ1aWxkRXhwcmVzc2lvbkZvckNyaXRpY2FsaXR5Q29sb3JcbiAqIEBtZW1iZXJvZiBzYXAuZmUuY29yZS5Dcml0aWNhbGl0eUZvcm1hdHRlcnNcbiAqIEBwYXJhbSB7b2JqZWN0fSBvVGFyZ2V0IEEgRGF0YUZpZWxkIGEgRGF0YVBvaW50IG9yIGEgRGF0YU1vZGVsT2JqZWN0UGF0aC5cbiAqIEBwYXJhbSB7b2JqZWN0fSBbb1Byb3BlcnR5RGF0YU1vZGVsUGF0aF0gRGF0YU1vZGVsT2JqZWN0UGF0aC5cbiAqIEByZXR1cm5zIHtzdHJpbmd9IEFuIGV4cHJlc3Npb24gdG8gZGVkdWNlIHRoZSBzdGF0ZSBvZiBhbiBvYmplY3RTdGF0dXMuXG4gKiBAcHJpdmF0ZVxuICogQHVpNS1yZXN0cmljdGVkXG4gKiovXG5leHBvcnQgY29uc3QgYnVpbGRFeHByZXNzaW9uRm9yQ3JpdGljYWxpdHlDb2xvciA9IChvVGFyZ2V0OiBhbnksIG9Qcm9wZXJ0eURhdGFNb2RlbFBhdGg6IERhdGFNb2RlbE9iamVjdFBhdGgpOiBzdHJpbmcgfCB1bmRlZmluZWQgPT4ge1xuXHRjb25zdCBvQW5ub3RhdGlvblRhcmdldCA9IG9UYXJnZXQudGFyZ2V0T2JqZWN0ID8gb1RhcmdldC50YXJnZXRPYmplY3QgOiBvVGFyZ2V0O1xuXHRjb25zdCBvQ3JpdGljYWxpdHlQcm9wZXJ0eSA9IG9Bbm5vdGF0aW9uVGFyZ2V0Py5Dcml0aWNhbGl0eTtcblx0Y29uc3QgcmVsYXRpdmVMb2NhdGlvbiA9IG9Qcm9wZXJ0eURhdGFNb2RlbFBhdGhcblx0XHQ/IGdldFBhdGhSZWxhdGl2ZUxvY2F0aW9uKG9Qcm9wZXJ0eURhdGFNb2RlbFBhdGguY29udGV4dExvY2F0aW9uLCBvUHJvcGVydHlEYXRhTW9kZWxQYXRoLm5hdmlnYXRpb25Qcm9wZXJ0aWVzKS5tYXAobnAgPT4gbnAubmFtZSlcblx0XHQ6IHVuZGVmaW5lZDtcblx0Y29uc3Qgb0NyaXRpY2FsaXR5RXhwcmVzc2lvbjogRXhwcmVzc2lvbjxzdHJpbmc+ID0gYW5ub3RhdGlvbkV4cHJlc3Npb24ob0NyaXRpY2FsaXR5UHJvcGVydHksIHJlbGF0aXZlTG9jYXRpb24pO1xuXHRsZXQgc1ZhbHVlU3RhdGVFeHByZXNzaW9uO1xuXHRpZiAob0NyaXRpY2FsaXR5UHJvcGVydHkpIHtcblx0XHRzVmFsdWVTdGF0ZUV4cHJlc3Npb24gPSBpZkVsc2UoXG5cdFx0XHRvcihcblx0XHRcdFx0ZXF1YWwob0NyaXRpY2FsaXR5RXhwcmVzc2lvbiwgY29uc3RhbnQoXCJVSS5Dcml0aWNhbGl0eVR5cGUvTmVnYXRpdmVcIikpLFxuXHRcdFx0XHRlcXVhbChvQ3JpdGljYWxpdHlFeHByZXNzaW9uIGFzIEV4cHJlc3Npb248TnVtYmVyPiwgY29uc3RhbnQoMSkpLFxuXHRcdFx0XHRlcXVhbChvQ3JpdGljYWxpdHlFeHByZXNzaW9uLCBjb25zdGFudChcIjFcIikpXG5cdFx0XHQpLFxuXHRcdFx0Y29uc3RhbnQoXCJFcnJvclwiKSxcblx0XHRcdGlmRWxzZShcblx0XHRcdFx0b3IoXG5cdFx0XHRcdFx0ZXF1YWwob0NyaXRpY2FsaXR5RXhwcmVzc2lvbiwgY29uc3RhbnQoXCJVSS5Dcml0aWNhbGl0eVR5cGUvQ3JpdGljYWxcIikpLFxuXHRcdFx0XHRcdGVxdWFsKG9Dcml0aWNhbGl0eUV4cHJlc3Npb24gYXMgRXhwcmVzc2lvbjxOdW1iZXI+LCBjb25zdGFudCgyKSksXG5cdFx0XHRcdFx0ZXF1YWwob0NyaXRpY2FsaXR5RXhwcmVzc2lvbiwgY29uc3RhbnQoXCIyXCIpKVxuXHRcdFx0XHQpLFxuXHRcdFx0XHRjb25zdGFudChcIldhcm5pbmdcIiksXG5cdFx0XHRcdGlmRWxzZShcblx0XHRcdFx0XHRvcihcblx0XHRcdFx0XHRcdGVxdWFsKG9Dcml0aWNhbGl0eUV4cHJlc3Npb24sIGNvbnN0YW50KFwiVUkuQ3JpdGljYWxpdHlUeXBlL1Bvc2l0aXZlXCIpKSxcblx0XHRcdFx0XHRcdGVxdWFsKG9Dcml0aWNhbGl0eUV4cHJlc3Npb24gYXMgRXhwcmVzc2lvbjxOdW1iZXI+LCBjb25zdGFudCgzKSksXG5cdFx0XHRcdFx0XHRlcXVhbChvQ3JpdGljYWxpdHlFeHByZXNzaW9uLCBjb25zdGFudChcIjNcIikpXG5cdFx0XHRcdFx0KSxcblx0XHRcdFx0XHRjb25zdGFudChcIlN1Y2Nlc3NcIiksXG5cdFx0XHRcdFx0aWZFbHNlKFxuXHRcdFx0XHRcdFx0b3IoXG5cdFx0XHRcdFx0XHRcdGVxdWFsKG9Dcml0aWNhbGl0eUV4cHJlc3Npb24sIGNvbnN0YW50KFwiVUkuQ3JpdGljYWxpdHlUeXBlL0luZm9ybWF0aW9uXCIpKSxcblx0XHRcdFx0XHRcdFx0ZXF1YWwob0NyaXRpY2FsaXR5RXhwcmVzc2lvbiBhcyBFeHByZXNzaW9uPE51bWJlcj4sIGNvbnN0YW50KDUpKSxcblx0XHRcdFx0XHRcdFx0ZXF1YWwob0NyaXRpY2FsaXR5RXhwcmVzc2lvbiwgY29uc3RhbnQoXCI1XCIpKVxuXHRcdFx0XHRcdFx0KSxcblx0XHRcdFx0XHRcdGNvbnN0YW50KFwiSW5kaWNhdGlvbjA1XCIpLFxuXHRcdFx0XHRcdFx0Y29uc3RhbnQoXCJOb25lXCIpXG5cdFx0XHRcdFx0KVxuXHRcdFx0XHQpXG5cdFx0XHQpXG5cdFx0KTtcblx0fSBlbHNlIHtcblx0XHQvLyBBbnkgb3RoZXIgY2FzZXMgYXJlIG5vdCB2YWxpZCwgdGhlIGRlZmF1bHQgdmFsdWUgb2YgJ05vbmUnIHdpbGwgYmUgcmV0dXJuZWRcblx0XHRzVmFsdWVTdGF0ZUV4cHJlc3Npb24gPSBjb25zdGFudChcIk5vbmVcIik7XG5cdH1cblx0cmV0dXJuIGNvbXBpbGVCaW5kaW5nKHNWYWx1ZVN0YXRlRXhwcmVzc2lvbik7XG59O1xuXG4vKipcbiAqIFJldHVybnMgYW4gZXhwcmVzc2lvbiB0byBzZXQgaWNvbiB0eXBlIGJhc2VkIG9uIENyaXRpY2FsaXR5XG4gKiBTdXBwb3J0ZWQgQ3JpdGljYWxpdHk6IFBvc2l0aXZlLCBOZWdhdGl2ZSwgQ3JpdGljYWwgYW5kIEluZm9ybWF0aW9uLlxuICpcbiAqIEBmdW5jdGlvblxuICogQHN0YXRpY1xuICogQG5hbWUgc2FwLmZlLmNvcmUuQ3JpdGljYWxpdHlGb3JtYXR0ZXJzLmJ1aWxkRXhwcmVzc2lvbkZvckNyaXRpY2FsaXR5SWNvblxuICogQG1lbWJlcm9mIHNhcC5mZS5jb3JlLkNyaXRpY2FsaXR5Rm9ybWF0dGVyc1xuICogQHBhcmFtIHtvYmplY3R9IG9UYXJnZXQgQSBEYXRhRmllbGQgYSBEYXRhUG9pbnQgb3IgYSBEYXRhTW9kZWxPYmplY3RQYXRoLlxuICogQHBhcmFtIHtvYmplY3R9IFtvUHJvcGVydHlEYXRhTW9kZWxQYXRoXSBEYXRhTW9kZWxPYmplY3RQYXRoLlxuICogQHJldHVybnMge3N0cmluZ30gQW4gZXhwcmVzc2lvbiB0byBkZWR1Y2UgdGhlIGljb24gb2YgYW4gb2JqZWN0U3RhdHVzLlxuICogQHByaXZhdGVcbiAqIEB1aTUtcmVzdHJpY3RlZFxuICoqL1xuZXhwb3J0IGNvbnN0IGJ1aWxkRXhwcmVzc2lvbkZvckNyaXRpY2FsaXR5SWNvbiA9IChvVGFyZ2V0OiBhbnksIG9Qcm9wZXJ0eURhdGFNb2RlbFBhdGg6IERhdGFNb2RlbE9iamVjdFBhdGgpOiBzdHJpbmcgfCB1bmRlZmluZWQgPT4ge1xuXHRjb25zdCBvQW5ub3RhdGlvblRhcmdldCA9IG9UYXJnZXQ/LnRhcmdldE9iamVjdCA/IG9UYXJnZXQudGFyZ2V0T2JqZWN0IDogb1RhcmdldDtcblx0Y29uc3Qgb0NyaXRpY2FsaXR5UHJvcGVydHkgPSBvQW5ub3RhdGlvblRhcmdldD8uQ3JpdGljYWxpdHk7XG5cdGNvbnN0IHJlbGF0aXZlTG9jYXRpb24gPSBvUHJvcGVydHlEYXRhTW9kZWxQYXRoXG5cdFx0PyBnZXRQYXRoUmVsYXRpdmVMb2NhdGlvbihvUHJvcGVydHlEYXRhTW9kZWxQYXRoLmNvbnRleHRMb2NhdGlvbiwgb1Byb3BlcnR5RGF0YU1vZGVsUGF0aC5uYXZpZ2F0aW9uUHJvcGVydGllcykubWFwKG5wID0+IG5wLm5hbWUpXG5cdFx0OiB1bmRlZmluZWQ7XG5cdGNvbnN0IG9Dcml0aWNhbGl0eUV4cHJlc3Npb246IEV4cHJlc3Npb248c3RyaW5nPiA9IGFubm90YXRpb25FeHByZXNzaW9uKG9Dcml0aWNhbGl0eVByb3BlcnR5LCByZWxhdGl2ZUxvY2F0aW9uKTtcblx0Y29uc3QgYkNvbmRpdGlvbiA9XG5cdFx0b0Fubm90YXRpb25UYXJnZXQ/LkNyaXRpY2FsaXR5UmVwcmVzZW50YXRpb24gJiZcblx0XHRvQW5ub3RhdGlvblRhcmdldD8uQ3JpdGljYWxpdHlSZXByZXNlbnRhdGlvbiA9PT0gXCJVSS5Dcml0aWNhbGl0eVJlcHJlc2VudGF0aW9uVHlwZS9XaXRob3V0SWNvblwiO1xuXHRsZXQgc0ljb25QYXRoO1xuXHRpZiAoIWJDb25kaXRpb24pIHtcblx0XHRpZiAob0NyaXRpY2FsaXR5UHJvcGVydHkpIHtcblx0XHRcdHNJY29uUGF0aCA9IGlmRWxzZShcblx0XHRcdFx0b3IoXG5cdFx0XHRcdFx0ZXF1YWwob0NyaXRpY2FsaXR5RXhwcmVzc2lvbiwgY29uc3RhbnQoXCJVSS5Dcml0aWNhbGl0eVR5cGUvTmVnYXRpdmVcIikpLFxuXHRcdFx0XHRcdGVxdWFsKG9Dcml0aWNhbGl0eUV4cHJlc3Npb24gYXMgRXhwcmVzc2lvbjxOdW1iZXI+LCBjb25zdGFudCgxKSksXG5cdFx0XHRcdFx0ZXF1YWwob0NyaXRpY2FsaXR5RXhwcmVzc2lvbiwgY29uc3RhbnQoXCIxXCIpKVxuXHRcdFx0XHQpLFxuXHRcdFx0XHRjb25zdGFudChcInNhcC1pY29uOi8vbWVzc2FnZS1lcnJvclwiKSxcblx0XHRcdFx0aWZFbHNlKFxuXHRcdFx0XHRcdG9yKFxuXHRcdFx0XHRcdFx0ZXF1YWwob0NyaXRpY2FsaXR5RXhwcmVzc2lvbiwgY29uc3RhbnQoXCJVSS5Dcml0aWNhbGl0eVR5cGUvQ3JpdGljYWxcIikpLFxuXHRcdFx0XHRcdFx0ZXF1YWwob0NyaXRpY2FsaXR5RXhwcmVzc2lvbiBhcyBFeHByZXNzaW9uPE51bWJlcj4sIGNvbnN0YW50KDIpKSxcblx0XHRcdFx0XHRcdGVxdWFsKG9Dcml0aWNhbGl0eUV4cHJlc3Npb24sIGNvbnN0YW50KFwiMlwiKSlcblx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdGNvbnN0YW50KFwic2FwLWljb246Ly9tZXNzYWdlLXdhcm5pbmdcIiksXG5cdFx0XHRcdFx0aWZFbHNlKFxuXHRcdFx0XHRcdFx0b3IoXG5cdFx0XHRcdFx0XHRcdGVxdWFsKG9Dcml0aWNhbGl0eUV4cHJlc3Npb24sIGNvbnN0YW50KFwiVUkuQ3JpdGljYWxpdHlUeXBlL1Bvc2l0aXZlXCIpKSxcblx0XHRcdFx0XHRcdFx0ZXF1YWwob0NyaXRpY2FsaXR5RXhwcmVzc2lvbiBhcyBFeHByZXNzaW9uPE51bWJlcj4sIGNvbnN0YW50KDMpKSxcblx0XHRcdFx0XHRcdFx0ZXF1YWwob0NyaXRpY2FsaXR5RXhwcmVzc2lvbiwgY29uc3RhbnQoXCIzXCIpKVxuXHRcdFx0XHRcdFx0KSxcblx0XHRcdFx0XHRcdGNvbnN0YW50KFwic2FwLWljb246Ly9tZXNzYWdlLXN1Y2Nlc3NcIiksXG5cdFx0XHRcdFx0XHRpZkVsc2UoXG5cdFx0XHRcdFx0XHRcdG9yKFxuXHRcdFx0XHRcdFx0XHRcdGVxdWFsKG9Dcml0aWNhbGl0eUV4cHJlc3Npb24sIGNvbnN0YW50KFwiVUkuQ3JpdGljYWxpdHlUeXBlL0luZm9ybWF0aW9uXCIpKSxcblx0XHRcdFx0XHRcdFx0XHRlcXVhbChvQ3JpdGljYWxpdHlFeHByZXNzaW9uIGFzIEV4cHJlc3Npb248TnVtYmVyPiwgY29uc3RhbnQoNSkpLFxuXHRcdFx0XHRcdFx0XHRcdGVxdWFsKG9Dcml0aWNhbGl0eUV4cHJlc3Npb24sIGNvbnN0YW50KFwiNVwiKSlcblx0XHRcdFx0XHRcdFx0KSxcblx0XHRcdFx0XHRcdFx0Y29uc3RhbnQoXCJzYXAtaWNvbjovL21lc3NhZ2UtaW5mb3JtYXRpb25cIiksXG5cdFx0XHRcdFx0XHRcdGNvbnN0YW50KFwiXCIpXG5cdFx0XHRcdFx0XHQpXG5cdFx0XHRcdFx0KVxuXHRcdFx0XHQpXG5cdFx0XHQpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRzSWNvblBhdGggPSBjb25zdGFudChcIlwiKTtcblx0XHR9XG5cdH0gZWxzZSB7XG5cdFx0c0ljb25QYXRoID0gY29uc3RhbnQoXCJcIik7XG5cdH1cblx0cmV0dXJuIGNvbXBpbGVCaW5kaW5nKHNJY29uUGF0aCk7XG59O1xuXG4vKipcbiAqIFJldHVybnMgYW4gZXhwcmVzc2lvbiB0byBzZXQgYnV0dG9uIHR5cGUgYmFzZWQgb24gQ3JpdGljYWxpdHlcbiAqIFN1cHBvcnRlZCBDcml0aWNhbGl0eTogUG9zaXRpdmUgYW5kIE5lZ2F0aXZlIGxlYWRpbmcgdG8gQWNjZXB0IGFuZCBSZWplY3QgYnV0dG9uIHR5cGUgcmVzcGVjdGl2ZWx5LlxuICpcbiAqIEBmdW5jdGlvblxuICogQHN0YXRpY1xuICogQG5hbWUgc2FwLmZlLmNvcmUuQ3JpdGljYWxpdHlGb3JtYXR0ZXJzLmJ1aWxkRXhwcmVzc2lvbkZvckNyaXRpY2FsaXR5QnV0dG9uVHlwZVxuICogQG1lbWJlcm9mIHNhcC5mZS5jb3JlLkNyaXRpY2FsaXR5Rm9ybWF0dGVyc1xuICogQHBhcmFtIHtvYmplY3R9IG9UYXJnZXQgQSBEYXRhRmllbGQsIERhdGFQb2ludCwgRGF0YU1vZGVsT2JqZWN0UGF0aC5cbiAqIEByZXR1cm5zIHtzdHJpbmd9IEFuIGV4cHJlc3Npb24gdG8gZGVkdWNlIGJ1dHRvbiB0eXBlLlxuICogQHByaXZhdGVcbiAqIEB1aTUtcmVzdHJpY3RlZFxuICoqL1xuZXhwb3J0IGNvbnN0IGJ1aWxkRXhwcmVzc2lvbkZvckNyaXRpY2FsaXR5QnV0dG9uVHlwZSA9IChvVGFyZ2V0OiBhbnkpOiBzdHJpbmcgfCB1bmRlZmluZWQgPT4ge1xuXHRjb25zdCBvQW5ub3RhdGlvblRhcmdldCA9IG9UYXJnZXQ/LnRhcmdldE9iamVjdCA/IG9UYXJnZXQudGFyZ2V0T2JqZWN0IDogb1RhcmdldDtcblx0Y29uc3Qgb0NyaXRpY2FsaXR5UHJvcGVydHkgPSBvQW5ub3RhdGlvblRhcmdldD8uQ3JpdGljYWxpdHk7XG5cdGNvbnN0IG9Dcml0aWNhbGl0eUV4cHJlc3Npb246IEV4cHJlc3Npb248c3RyaW5nPiA9IGFubm90YXRpb25FeHByZXNzaW9uKG9Dcml0aWNhbGl0eVByb3BlcnR5KTtcblx0bGV0IHNCdXR0b25UeXBlRXhwcmVzc2lvbjtcblx0aWYgKG9Dcml0aWNhbGl0eVByb3BlcnR5KSB7XG5cdFx0c0J1dHRvblR5cGVFeHByZXNzaW9uID0gaWZFbHNlKFxuXHRcdFx0b3IoXG5cdFx0XHRcdGVxdWFsKG9Dcml0aWNhbGl0eUV4cHJlc3Npb24sIGNvbnN0YW50KFwiVUkuQ3JpdGljYWxpdHlUeXBlL05lZ2F0aXZlXCIpKSxcblx0XHRcdFx0ZXF1YWwob0NyaXRpY2FsaXR5RXhwcmVzc2lvbiBhcyBFeHByZXNzaW9uPE51bWJlcj4sIGNvbnN0YW50KDEpKSxcblx0XHRcdFx0ZXF1YWwob0NyaXRpY2FsaXR5RXhwcmVzc2lvbiwgY29uc3RhbnQoXCIxXCIpKVxuXHRcdFx0KSxcblx0XHRcdGNvbnN0YW50KFwiUmVqZWN0XCIpLFxuXHRcdFx0aWZFbHNlKFxuXHRcdFx0XHRvcihcblx0XHRcdFx0XHRlcXVhbChvQ3JpdGljYWxpdHlFeHByZXNzaW9uLCBjb25zdGFudChcIlVJLkNyaXRpY2FsaXR5VHlwZS9Qb3NpdGl2ZVwiKSksXG5cdFx0XHRcdFx0ZXF1YWwob0NyaXRpY2FsaXR5RXhwcmVzc2lvbiBhcyBFeHByZXNzaW9uPE51bWJlcj4sIGNvbnN0YW50KDMpKSxcblx0XHRcdFx0XHRlcXVhbChvQ3JpdGljYWxpdHlFeHByZXNzaW9uLCBjb25zdGFudChcIjNcIikpXG5cdFx0XHRcdCksXG5cdFx0XHRcdGNvbnN0YW50KFwiQWNjZXB0XCIpLFxuXHRcdFx0XHRjb25zdGFudChcIkRlZmF1bHRcIilcblx0XHRcdClcblx0XHQpO1xuXHR9IGVsc2Uge1xuXHRcdC8vIEFueSBvdGhlciBjYXNlcyBhcmUgbm90IHZhbGlkLCB0aGUgZGVmYXVsdCB2YWx1ZSBvZiAnRGVmYXVsdCcgd2lsbCBiZSByZXR1cm5lZFxuXHRcdHNCdXR0b25UeXBlRXhwcmVzc2lvbiA9IGNvbnN0YW50KFwiRGVmYXVsdFwiKTtcblx0fVxuXHRyZXR1cm4gY29tcGlsZUJpbmRpbmcoc0J1dHRvblR5cGVFeHByZXNzaW9uKTtcbn07XG5cbi8qKlxuICogUmV0dXJucyBhbiBleHByZXNzaW9uIHRvIHNldCBjb2xvciBpbiBNaWNyb0NoYXJ0cyBiYXNlZCBvbiBDcml0aWNhbGl0eVxuICogU3VwcG9ydGVkIENyaXRpY2FsaXR5OiBQb3NpdGl2ZSwgTmVnYXRpdmUgYW5kIENyaXRpY2FsIGxlYWRpbmcgdG8gR29vZCwgRXJyb3IgYW5kIENyaXRpY2FsIGNvbG9yIHJlc3BlY3RpdmVseS5cbiAqXG4gKiBAZnVuY3Rpb25cbiAqIEBzdGF0aWNcbiAqIEBuYW1lIHNhcC5mZS5jb3JlLkNyaXRpY2FsaXR5Rm9ybWF0dGVycy5idWlsZEV4cHJlc3Npb25Gb3JDcml0aWNhbGl0eUNvbG9yTWljcm9DaGFydFxuICogQG1lbWJlcm9mIHNhcC5mZS5jb3JlLkNyaXRpY2FsaXR5Rm9ybWF0dGVyc1xuICogQHBhcmFtIHtvYmplY3R9IG9UYXJnZXQgQSBEYXRhRmllbGQsIERhdGFQb2ludCwgRGF0YU1vZGVsT2JqZWN0UGF0aFxuICogQHJldHVybnMge3N0cmluZ30gQW4gZXhwcmVzc2lvbiB0byBkZWR1Y2UgY29sb3JzIGluIE1pY3JvY2hhcnRzXG4gKiBAcHJpdmF0ZVxuICogQHVpNS1yZXN0cmljdGVkXG4gKiovXG5leHBvcnQgY29uc3QgYnVpbGRFeHByZXNzaW9uRm9yQ3JpdGljYWxpdHlDb2xvck1pY3JvQ2hhcnQgPSAob1RhcmdldDogYW55KTogc3RyaW5nIHwgdW5kZWZpbmVkID0+IHtcblx0Y29uc3Qgb0Fubm90YXRpb25UYXJnZXQgPSBvVGFyZ2V0Py50YXJnZXRPYmplY3QgPyBvVGFyZ2V0LnRhcmdldE9iamVjdCA6IG9UYXJnZXQ7XG5cdGNvbnN0IG9Dcml0aWNhbGl0eVByb3BlcnR5ID0gb0Fubm90YXRpb25UYXJnZXQ/LkNyaXRpY2FsaXR5O1xuXHRjb25zdCBvQ3JpdGljYWxpdHlFeHByZXNzaW9uOiBFeHByZXNzaW9uPHN0cmluZz4gPSBhbm5vdGF0aW9uRXhwcmVzc2lvbihvQ3JpdGljYWxpdHlQcm9wZXJ0eSk7XG5cdGxldCBzQ29sb3JFeHByZXNzaW9uO1xuXHRpZiAob0NyaXRpY2FsaXR5UHJvcGVydHkpIHtcblx0XHRzQ29sb3JFeHByZXNzaW9uID0gaWZFbHNlKFxuXHRcdFx0b3IoXG5cdFx0XHRcdGVxdWFsKG9Dcml0aWNhbGl0eUV4cHJlc3Npb24sIGNvbnN0YW50KFwiVUkuQ3JpdGljYWxpdHlUeXBlL05lZ2F0aXZlXCIpKSxcblx0XHRcdFx0ZXF1YWwob0NyaXRpY2FsaXR5RXhwcmVzc2lvbiBhcyBFeHByZXNzaW9uPE51bWJlcj4sIGNvbnN0YW50KDEpKSxcblx0XHRcdFx0ZXF1YWwob0NyaXRpY2FsaXR5RXhwcmVzc2lvbiwgY29uc3RhbnQoXCIxXCIpKVxuXHRcdFx0KSxcblx0XHRcdGNvbnN0YW50KFwiRXJyb3JcIiksXG5cdFx0XHRpZkVsc2UoXG5cdFx0XHRcdG9yKFxuXHRcdFx0XHRcdGVxdWFsKG9Dcml0aWNhbGl0eUV4cHJlc3Npb24sIGNvbnN0YW50KFwiVUkuQ3JpdGljYWxpdHlUeXBlL0NyaXRpY2FsXCIpKSxcblx0XHRcdFx0XHRlcXVhbChvQ3JpdGljYWxpdHlFeHByZXNzaW9uIGFzIEV4cHJlc3Npb248TnVtYmVyPiwgY29uc3RhbnQoMikpLFxuXHRcdFx0XHRcdGVxdWFsKG9Dcml0aWNhbGl0eUV4cHJlc3Npb24sIGNvbnN0YW50KFwiMlwiKSlcblx0XHRcdFx0KSxcblx0XHRcdFx0Y29uc3RhbnQoXCJDcml0aWNhbFwiKSxcblx0XHRcdFx0aWZFbHNlKFxuXHRcdFx0XHRcdG9yKFxuXHRcdFx0XHRcdFx0ZXF1YWwob0NyaXRpY2FsaXR5RXhwcmVzc2lvbiwgY29uc3RhbnQoXCJVSS5Dcml0aWNhbGl0eVR5cGUvUG9zaXRpdmVcIikpLFxuXHRcdFx0XHRcdFx0ZXF1YWwob0NyaXRpY2FsaXR5RXhwcmVzc2lvbiBhcyBFeHByZXNzaW9uPE51bWJlcj4sIGNvbnN0YW50KDMpKSxcblx0XHRcdFx0XHRcdGVxdWFsKG9Dcml0aWNhbGl0eUV4cHJlc3Npb24sIGNvbnN0YW50KFwiM1wiKSlcblx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdGNvbnN0YW50KFwiR29vZFwiKSxcblx0XHRcdFx0XHRjb25zdGFudChcIk5ldXRyYWxcIilcblx0XHRcdFx0KVxuXHRcdFx0KVxuXHRcdCk7XG5cdH0gZWxzZSB7XG5cdFx0c0NvbG9yRXhwcmVzc2lvbiA9IGNvbnN0YW50KFwiTmV1dHJhbFwiKTtcblx0fVxuXHRyZXR1cm4gY29tcGlsZUJpbmRpbmcoc0NvbG9yRXhwcmVzc2lvbik7XG59O1xuIl19
156
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJidWlsZEV4cHJlc3Npb25Gb3JDcml0aWNhbGl0eUNvbG9yIiwib1RhcmdldCIsIm9Qcm9wZXJ0eURhdGFNb2RlbFBhdGgiLCJvQW5ub3RhdGlvblRhcmdldCIsInRhcmdldE9iamVjdCIsIm9Dcml0aWNhbGl0eVByb3BlcnR5IiwiQ3JpdGljYWxpdHkiLCJyZWxhdGl2ZUxvY2F0aW9uIiwiZ2V0UGF0aFJlbGF0aXZlTG9jYXRpb24iLCJjb250ZXh0TG9jYXRpb24iLCJuYXZpZ2F0aW9uUHJvcGVydGllcyIsIm1hcCIsIm5wIiwibmFtZSIsInVuZGVmaW5lZCIsIm9Dcml0aWNhbGl0eUV4cHJlc3Npb24iLCJnZXRFeHByZXNzaW9uRnJvbUFubm90YXRpb24iLCJzVmFsdWVTdGF0ZUV4cHJlc3Npb24iLCJpZkVsc2UiLCJvciIsImVxdWFsIiwiY29uc3RhbnQiLCJjb21waWxlRXhwcmVzc2lvbiIsImJ1aWxkRXhwcmVzc2lvbkZvckNyaXRpY2FsaXR5SWNvbiIsImJDb25kaXRpb24iLCJDcml0aWNhbGl0eVJlcHJlc2VudGF0aW9uIiwic0ljb25QYXRoIiwiYnVpbGRFeHByZXNzaW9uRm9yQ3JpdGljYWxpdHlCdXR0b25UeXBlIiwic0J1dHRvblR5cGVFeHByZXNzaW9uIiwiYnVpbGRFeHByZXNzaW9uRm9yQ3JpdGljYWxpdHlDb2xvck1pY3JvQ2hhcnQiLCJzQ29sb3JFeHByZXNzaW9uIl0sInNvdXJjZVJvb3QiOiIuIiwic291cmNlcyI6WyJDcml0aWNhbGl0eUZvcm1hdHRlcnMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb24gfSBmcm9tIFwic2FwL2ZlL2NvcmUvaGVscGVycy9CaW5kaW5nVG9vbGtpdFwiO1xuaW1wb3J0IHsgY29tcGlsZUV4cHJlc3Npb24sIGNvbnN0YW50LCBlcXVhbCwgZ2V0RXhwcmVzc2lvbkZyb21Bbm5vdGF0aW9uLCBpZkVsc2UsIG9yIH0gZnJvbSBcInNhcC9mZS9jb3JlL2hlbHBlcnMvQmluZGluZ1Rvb2xraXRcIjtcbmltcG9ydCB0eXBlIHsgRGF0YU1vZGVsT2JqZWN0UGF0aCB9IGZyb20gXCJzYXAvZmUvY29yZS90ZW1wbGF0aW5nL0RhdGFNb2RlbFBhdGhIZWxwZXJcIjtcbmltcG9ydCB7IGdldFBhdGhSZWxhdGl2ZUxvY2F0aW9uIH0gZnJvbSBcInNhcC9mZS9jb3JlL3RlbXBsYXRpbmcvRGF0YU1vZGVsUGF0aEhlbHBlclwiO1xuLyoqXG4gKiBSZXR1cm5zIGFuIGV4cHJlc3Npb24gdG8gc2V0IGJ1dHRvbiB0eXBlIGJhc2VkIG9uIENyaXRpY2FsaXR5XG4gKiBTdXBwb3J0ZWQgQ3JpdGljYWxpdHk6IFBvc2l0aXZlLCBOZWdhdGl2ZSwgQ3JpdGljYWwgYW5kIEluZm9ybWF0aW9uIGxlYWRpbmcgdG8gU3VjY2VzcywgRXJyb3IsIFdhcm5pbmcgYW5kIE5vbmUgc3RhdGUgcmVzcGVjdGl2ZWx5LlxuICpcbiAqIEBmdW5jdGlvblxuICogQHN0YXRpY1xuICogQG5hbWUgc2FwLmZlLmNvcmUuQ3JpdGljYWxpdHlGb3JtYXR0ZXJzLmJ1aWxkRXhwcmVzc2lvbkZvckNyaXRpY2FsaXR5Q29sb3JcbiAqIEBtZW1iZXJvZiBzYXAuZmUuY29yZS5Dcml0aWNhbGl0eUZvcm1hdHRlcnNcbiAqIEBwYXJhbSBvVGFyZ2V0IEEgRGF0YUZpZWxkIGEgRGF0YVBvaW50IG9yIGEgRGF0YU1vZGVsT2JqZWN0UGF0aC5cbiAqIEBwYXJhbSBbb1Byb3BlcnR5RGF0YU1vZGVsUGF0aF0gRGF0YU1vZGVsT2JqZWN0UGF0aC5cbiAqIEByZXR1cm5zIEFuIGV4cHJlc3Npb24gdG8gZGVkdWNlIHRoZSBzdGF0ZSBvZiBhbiBvYmplY3RTdGF0dXMuXG4gKiBAcHJpdmF0ZVxuICogQHVpNS1yZXN0cmljdGVkXG4gKi9cbmV4cG9ydCBjb25zdCBidWlsZEV4cHJlc3Npb25Gb3JDcml0aWNhbGl0eUNvbG9yID0gKG9UYXJnZXQ6IGFueSwgb1Byb3BlcnR5RGF0YU1vZGVsUGF0aDogRGF0YU1vZGVsT2JqZWN0UGF0aCk6IHN0cmluZyB8IHVuZGVmaW5lZCA9PiB7XG5cdGNvbnN0IG9Bbm5vdGF0aW9uVGFyZ2V0ID0gb1RhcmdldC50YXJnZXRPYmplY3QgPyBvVGFyZ2V0LnRhcmdldE9iamVjdCA6IG9UYXJnZXQ7XG5cdGNvbnN0IG9Dcml0aWNhbGl0eVByb3BlcnR5ID0gb0Fubm90YXRpb25UYXJnZXQ/LkNyaXRpY2FsaXR5O1xuXHRjb25zdCByZWxhdGl2ZUxvY2F0aW9uID0gb1Byb3BlcnR5RGF0YU1vZGVsUGF0aFxuXHRcdD8gZ2V0UGF0aFJlbGF0aXZlTG9jYXRpb24ob1Byb3BlcnR5RGF0YU1vZGVsUGF0aC5jb250ZXh0TG9jYXRpb24sIG9Qcm9wZXJ0eURhdGFNb2RlbFBhdGgubmF2aWdhdGlvblByb3BlcnRpZXMpLm1hcCgobnApID0+IG5wLm5hbWUpXG5cdFx0OiB1bmRlZmluZWQ7XG5cdGNvbnN0IG9Dcml0aWNhbGl0eUV4cHJlc3Npb246IEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbjxzdHJpbmc+ID0gZ2V0RXhwcmVzc2lvbkZyb21Bbm5vdGF0aW9uKG9Dcml0aWNhbGl0eVByb3BlcnR5LCByZWxhdGl2ZUxvY2F0aW9uKTtcblx0bGV0IHNWYWx1ZVN0YXRlRXhwcmVzc2lvbjtcblx0aWYgKG9Dcml0aWNhbGl0eVByb3BlcnR5KSB7XG5cdFx0c1ZhbHVlU3RhdGVFeHByZXNzaW9uID0gaWZFbHNlKFxuXHRcdFx0b3IoXG5cdFx0XHRcdGVxdWFsKG9Dcml0aWNhbGl0eUV4cHJlc3Npb24sIGNvbnN0YW50KFwiVUkuQ3JpdGljYWxpdHlUeXBlL05lZ2F0aXZlXCIpKSxcblx0XHRcdFx0ZXF1YWwob0NyaXRpY2FsaXR5RXhwcmVzc2lvbiBhcyBCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb248TnVtYmVyPiwgY29uc3RhbnQoMSkpLFxuXHRcdFx0XHRlcXVhbChvQ3JpdGljYWxpdHlFeHByZXNzaW9uLCBjb25zdGFudChcIjFcIikpXG5cdFx0XHQpLFxuXHRcdFx0Y29uc3RhbnQoXCJFcnJvclwiKSxcblx0XHRcdGlmRWxzZShcblx0XHRcdFx0b3IoXG5cdFx0XHRcdFx0ZXF1YWwob0NyaXRpY2FsaXR5RXhwcmVzc2lvbiwgY29uc3RhbnQoXCJVSS5Dcml0aWNhbGl0eVR5cGUvQ3JpdGljYWxcIikpLFxuXHRcdFx0XHRcdGVxdWFsKG9Dcml0aWNhbGl0eUV4cHJlc3Npb24gYXMgQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uPE51bWJlcj4sIGNvbnN0YW50KDIpKSxcblx0XHRcdFx0XHRlcXVhbChvQ3JpdGljYWxpdHlFeHByZXNzaW9uLCBjb25zdGFudChcIjJcIikpXG5cdFx0XHRcdCksXG5cdFx0XHRcdGNvbnN0YW50KFwiV2FybmluZ1wiKSxcblx0XHRcdFx0aWZFbHNlKFxuXHRcdFx0XHRcdG9yKFxuXHRcdFx0XHRcdFx0ZXF1YWwob0NyaXRpY2FsaXR5RXhwcmVzc2lvbiwgY29uc3RhbnQoXCJVSS5Dcml0aWNhbGl0eVR5cGUvUG9zaXRpdmVcIikpLFxuXHRcdFx0XHRcdFx0ZXF1YWwob0NyaXRpY2FsaXR5RXhwcmVzc2lvbiBhcyBCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb248TnVtYmVyPiwgY29uc3RhbnQoMykpLFxuXHRcdFx0XHRcdFx0ZXF1YWwob0NyaXRpY2FsaXR5RXhwcmVzc2lvbiwgY29uc3RhbnQoXCIzXCIpKVxuXHRcdFx0XHRcdCksXG5cdFx0XHRcdFx0Y29uc3RhbnQoXCJTdWNjZXNzXCIpLFxuXHRcdFx0XHRcdGlmRWxzZShcblx0XHRcdFx0XHRcdG9yKFxuXHRcdFx0XHRcdFx0XHRlcXVhbChvQ3JpdGljYWxpdHlFeHByZXNzaW9uLCBjb25zdGFudChcIlVJLkNyaXRpY2FsaXR5VHlwZS9JbmZvcm1hdGlvblwiKSksXG5cdFx0XHRcdFx0XHRcdGVxdWFsKG9Dcml0aWNhbGl0eUV4cHJlc3Npb24gYXMgQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uPE51bWJlcj4sIGNvbnN0YW50KDUpKSxcblx0XHRcdFx0XHRcdFx0ZXF1YWwob0NyaXRpY2FsaXR5RXhwcmVzc2lvbiwgY29uc3RhbnQoXCI1XCIpKVxuXHRcdFx0XHRcdFx0KSxcblx0XHRcdFx0XHRcdGNvbnN0YW50KFwiSW5mb3JtYXRpb25cIiksXG5cdFx0XHRcdFx0XHRjb25zdGFudChcIk5vbmVcIilcblx0XHRcdFx0XHQpXG5cdFx0XHRcdClcblx0XHRcdClcblx0XHQpO1xuXHR9IGVsc2Uge1xuXHRcdC8vIEFueSBvdGhlciBjYXNlcyBhcmUgbm90IHZhbGlkLCB0aGUgZGVmYXVsdCB2YWx1ZSBvZiAnTm9uZScgd2lsbCBiZSByZXR1cm5lZFxuXHRcdHNWYWx1ZVN0YXRlRXhwcmVzc2lvbiA9IGNvbnN0YW50KFwiTm9uZVwiKTtcblx0fVxuXHRyZXR1cm4gY29tcGlsZUV4cHJlc3Npb24oc1ZhbHVlU3RhdGVFeHByZXNzaW9uKTtcbn07XG5cbi8qKlxuICogUmV0dXJucyBhbiBleHByZXNzaW9uIHRvIHNldCBpY29uIHR5cGUgYmFzZWQgb24gQ3JpdGljYWxpdHlcbiAqIFN1cHBvcnRlZCBDcml0aWNhbGl0eTogUG9zaXRpdmUsIE5lZ2F0aXZlLCBDcml0aWNhbCBhbmQgSW5mb3JtYXRpb24uXG4gKlxuICogQGZ1bmN0aW9uXG4gKiBAc3RhdGljXG4gKiBAbmFtZSBzYXAuZmUuY29yZS5Dcml0aWNhbGl0eUZvcm1hdHRlcnMuYnVpbGRFeHByZXNzaW9uRm9yQ3JpdGljYWxpdHlJY29uXG4gKiBAbWVtYmVyb2Ygc2FwLmZlLmNvcmUuQ3JpdGljYWxpdHlGb3JtYXR0ZXJzXG4gKiBAcGFyYW0gb1RhcmdldCBBIERhdGFGaWVsZCBhIERhdGFQb2ludCBvciBhIERhdGFNb2RlbE9iamVjdFBhdGguXG4gKiBAcGFyYW0gW29Qcm9wZXJ0eURhdGFNb2RlbFBhdGhdIERhdGFNb2RlbE9iamVjdFBhdGguXG4gKiBAcmV0dXJucyBBbiBleHByZXNzaW9uIHRvIGRlZHVjZSB0aGUgaWNvbiBvZiBhbiBvYmplY3RTdGF0dXMuXG4gKiBAcHJpdmF0ZVxuICogQHVpNS1yZXN0cmljdGVkXG4gKi9cbmV4cG9ydCBjb25zdCBidWlsZEV4cHJlc3Npb25Gb3JDcml0aWNhbGl0eUljb24gPSAob1RhcmdldDogYW55LCBvUHJvcGVydHlEYXRhTW9kZWxQYXRoOiBEYXRhTW9kZWxPYmplY3RQYXRoKTogc3RyaW5nIHwgdW5kZWZpbmVkID0+IHtcblx0Y29uc3Qgb0Fubm90YXRpb25UYXJnZXQgPSBvVGFyZ2V0Py50YXJnZXRPYmplY3QgPyBvVGFyZ2V0LnRhcmdldE9iamVjdCA6IG9UYXJnZXQ7XG5cdGNvbnN0IG9Dcml0aWNhbGl0eVByb3BlcnR5ID0gb0Fubm90YXRpb25UYXJnZXQ/LkNyaXRpY2FsaXR5O1xuXHRjb25zdCByZWxhdGl2ZUxvY2F0aW9uID0gb1Byb3BlcnR5RGF0YU1vZGVsUGF0aFxuXHRcdD8gZ2V0UGF0aFJlbGF0aXZlTG9jYXRpb24ob1Byb3BlcnR5RGF0YU1vZGVsUGF0aC5jb250ZXh0TG9jYXRpb24sIG9Qcm9wZXJ0eURhdGFNb2RlbFBhdGgubmF2aWdhdGlvblByb3BlcnRpZXMpLm1hcCgobnApID0+IG5wLm5hbWUpXG5cdFx0OiB1bmRlZmluZWQ7XG5cdGNvbnN0IG9Dcml0aWNhbGl0eUV4cHJlc3Npb246IEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbjxzdHJpbmc+ID0gZ2V0RXhwcmVzc2lvbkZyb21Bbm5vdGF0aW9uKG9Dcml0aWNhbGl0eVByb3BlcnR5LCByZWxhdGl2ZUxvY2F0aW9uKTtcblx0Y29uc3QgYkNvbmRpdGlvbiA9XG5cdFx0b0Fubm90YXRpb25UYXJnZXQ/LkNyaXRpY2FsaXR5UmVwcmVzZW50YXRpb24gJiZcblx0XHRvQW5ub3RhdGlvblRhcmdldD8uQ3JpdGljYWxpdHlSZXByZXNlbnRhdGlvbiA9PT0gXCJVSS5Dcml0aWNhbGl0eVJlcHJlc2VudGF0aW9uVHlwZS9XaXRob3V0SWNvblwiO1xuXHRsZXQgc0ljb25QYXRoO1xuXHRpZiAoIWJDb25kaXRpb24pIHtcblx0XHRpZiAob0NyaXRpY2FsaXR5UHJvcGVydHkpIHtcblx0XHRcdHNJY29uUGF0aCA9IGlmRWxzZShcblx0XHRcdFx0b3IoXG5cdFx0XHRcdFx0ZXF1YWwob0NyaXRpY2FsaXR5RXhwcmVzc2lvbiwgY29uc3RhbnQoXCJVSS5Dcml0aWNhbGl0eVR5cGUvTmVnYXRpdmVcIikpLFxuXHRcdFx0XHRcdGVxdWFsKG9Dcml0aWNhbGl0eUV4cHJlc3Npb24gYXMgQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uPE51bWJlcj4sIGNvbnN0YW50KDEpKSxcblx0XHRcdFx0XHRlcXVhbChvQ3JpdGljYWxpdHlFeHByZXNzaW9uLCBjb25zdGFudChcIjFcIikpXG5cdFx0XHRcdCksXG5cdFx0XHRcdGNvbnN0YW50KFwic2FwLWljb246Ly9tZXNzYWdlLWVycm9yXCIpLFxuXHRcdFx0XHRpZkVsc2UoXG5cdFx0XHRcdFx0b3IoXG5cdFx0XHRcdFx0XHRlcXVhbChvQ3JpdGljYWxpdHlFeHByZXNzaW9uLCBjb25zdGFudChcIlVJLkNyaXRpY2FsaXR5VHlwZS9Dcml0aWNhbFwiKSksXG5cdFx0XHRcdFx0XHRlcXVhbChvQ3JpdGljYWxpdHlFeHByZXNzaW9uIGFzIEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbjxOdW1iZXI+LCBjb25zdGFudCgyKSksXG5cdFx0XHRcdFx0XHRlcXVhbChvQ3JpdGljYWxpdHlFeHByZXNzaW9uLCBjb25zdGFudChcIjJcIikpXG5cdFx0XHRcdFx0KSxcblx0XHRcdFx0XHRjb25zdGFudChcInNhcC1pY29uOi8vbWVzc2FnZS13YXJuaW5nXCIpLFxuXHRcdFx0XHRcdGlmRWxzZShcblx0XHRcdFx0XHRcdG9yKFxuXHRcdFx0XHRcdFx0XHRlcXVhbChvQ3JpdGljYWxpdHlFeHByZXNzaW9uLCBjb25zdGFudChcIlVJLkNyaXRpY2FsaXR5VHlwZS9Qb3NpdGl2ZVwiKSksXG5cdFx0XHRcdFx0XHRcdGVxdWFsKG9Dcml0aWNhbGl0eUV4cHJlc3Npb24gYXMgQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uPE51bWJlcj4sIGNvbnN0YW50KDMpKSxcblx0XHRcdFx0XHRcdFx0ZXF1YWwob0NyaXRpY2FsaXR5RXhwcmVzc2lvbiwgY29uc3RhbnQoXCIzXCIpKVxuXHRcdFx0XHRcdFx0KSxcblx0XHRcdFx0XHRcdGNvbnN0YW50KFwic2FwLWljb246Ly9tZXNzYWdlLXN1Y2Nlc3NcIiksXG5cdFx0XHRcdFx0XHRpZkVsc2UoXG5cdFx0XHRcdFx0XHRcdG9yKFxuXHRcdFx0XHRcdFx0XHRcdGVxdWFsKG9Dcml0aWNhbGl0eUV4cHJlc3Npb24sIGNvbnN0YW50KFwiVUkuQ3JpdGljYWxpdHlUeXBlL0luZm9ybWF0aW9uXCIpKSxcblx0XHRcdFx0XHRcdFx0XHRlcXVhbChvQ3JpdGljYWxpdHlFeHByZXNzaW9uIGFzIEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbjxOdW1iZXI+LCBjb25zdGFudCg1KSksXG5cdFx0XHRcdFx0XHRcdFx0ZXF1YWwob0NyaXRpY2FsaXR5RXhwcmVzc2lvbiwgY29uc3RhbnQoXCI1XCIpKVxuXHRcdFx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdFx0XHRjb25zdGFudChcInNhcC1pY29uOi8vbWVzc2FnZS1pbmZvcm1hdGlvblwiKSxcblx0XHRcdFx0XHRcdFx0Y29uc3RhbnQoXCJcIilcblx0XHRcdFx0XHRcdClcblx0XHRcdFx0XHQpXG5cdFx0XHRcdClcblx0XHRcdCk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHNJY29uUGF0aCA9IGNvbnN0YW50KFwiXCIpO1xuXHRcdH1cblx0fSBlbHNlIHtcblx0XHRzSWNvblBhdGggPSBjb25zdGFudChcIlwiKTtcblx0fVxuXHRyZXR1cm4gY29tcGlsZUV4cHJlc3Npb24oc0ljb25QYXRoKTtcbn07XG5cbi8qKlxuICogUmV0dXJucyBhbiBleHByZXNzaW9uIHRvIHNldCBidXR0b24gdHlwZSBiYXNlZCBvbiBDcml0aWNhbGl0eVxuICogU3VwcG9ydGVkIENyaXRpY2FsaXR5OiBQb3NpdGl2ZSBhbmQgTmVnYXRpdmUgbGVhZGluZyB0byBBY2NlcHQgYW5kIFJlamVjdCBidXR0b24gdHlwZSByZXNwZWN0aXZlbHkuXG4gKlxuICogQGZ1bmN0aW9uXG4gKiBAc3RhdGljXG4gKiBAbmFtZSBzYXAuZmUuY29yZS5Dcml0aWNhbGl0eUZvcm1hdHRlcnMuYnVpbGRFeHByZXNzaW9uRm9yQ3JpdGljYWxpdHlCdXR0b25UeXBlXG4gKiBAbWVtYmVyb2Ygc2FwLmZlLmNvcmUuQ3JpdGljYWxpdHlGb3JtYXR0ZXJzXG4gKiBAcGFyYW0gb1RhcmdldCBBIERhdGFGaWVsZCwgRGF0YVBvaW50LCBEYXRhTW9kZWxPYmplY3RQYXRoLlxuICogQHJldHVybnMgQW4gZXhwcmVzc2lvbiB0byBkZWR1Y2UgYnV0dG9uIHR5cGUuXG4gKiBAcHJpdmF0ZVxuICogQHVpNS1yZXN0cmljdGVkXG4gKi9cbmV4cG9ydCBjb25zdCBidWlsZEV4cHJlc3Npb25Gb3JDcml0aWNhbGl0eUJ1dHRvblR5cGUgPSAob1RhcmdldDogYW55KTogc3RyaW5nIHwgdW5kZWZpbmVkID0+IHtcblx0Y29uc3Qgb0Fubm90YXRpb25UYXJnZXQgPSBvVGFyZ2V0Py50YXJnZXRPYmplY3QgPyBvVGFyZ2V0LnRhcmdldE9iamVjdCA6IG9UYXJnZXQ7XG5cdGNvbnN0IG9Dcml0aWNhbGl0eVByb3BlcnR5ID0gb0Fubm90YXRpb25UYXJnZXQ/LkNyaXRpY2FsaXR5O1xuXHRjb25zdCBvQ3JpdGljYWxpdHlFeHByZXNzaW9uOiBCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb248c3RyaW5nPiA9IGdldEV4cHJlc3Npb25Gcm9tQW5ub3RhdGlvbihvQ3JpdGljYWxpdHlQcm9wZXJ0eSk7XG5cdGxldCBzQnV0dG9uVHlwZUV4cHJlc3Npb247XG5cdGlmIChvQ3JpdGljYWxpdHlQcm9wZXJ0eSkge1xuXHRcdHNCdXR0b25UeXBlRXhwcmVzc2lvbiA9IGlmRWxzZShcblx0XHRcdG9yKFxuXHRcdFx0XHRlcXVhbChvQ3JpdGljYWxpdHlFeHByZXNzaW9uLCBjb25zdGFudChcIlVJLkNyaXRpY2FsaXR5VHlwZS9OZWdhdGl2ZVwiKSksXG5cdFx0XHRcdGVxdWFsKG9Dcml0aWNhbGl0eUV4cHJlc3Npb24gYXMgQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uPE51bWJlcj4sIGNvbnN0YW50KDEpKSxcblx0XHRcdFx0ZXF1YWwob0NyaXRpY2FsaXR5RXhwcmVzc2lvbiwgY29uc3RhbnQoXCIxXCIpKVxuXHRcdFx0KSxcblx0XHRcdGNvbnN0YW50KFwiUmVqZWN0XCIpLFxuXHRcdFx0aWZFbHNlKFxuXHRcdFx0XHRvcihcblx0XHRcdFx0XHRlcXVhbChvQ3JpdGljYWxpdHlFeHByZXNzaW9uLCBjb25zdGFudChcIlVJLkNyaXRpY2FsaXR5VHlwZS9Qb3NpdGl2ZVwiKSksXG5cdFx0XHRcdFx0ZXF1YWwob0NyaXRpY2FsaXR5RXhwcmVzc2lvbiBhcyBCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb248TnVtYmVyPiwgY29uc3RhbnQoMykpLFxuXHRcdFx0XHRcdGVxdWFsKG9Dcml0aWNhbGl0eUV4cHJlc3Npb24sIGNvbnN0YW50KFwiM1wiKSlcblx0XHRcdFx0KSxcblx0XHRcdFx0Y29uc3RhbnQoXCJBY2NlcHRcIiksXG5cdFx0XHRcdGNvbnN0YW50KFwiRGVmYXVsdFwiKVxuXHRcdFx0KVxuXHRcdCk7XG5cdH0gZWxzZSB7XG5cdFx0Ly8gQW55IG90aGVyIGNhc2VzIGFyZSBub3QgdmFsaWQsIHRoZSBkZWZhdWx0IHZhbHVlIG9mICdEZWZhdWx0JyB3aWxsIGJlIHJldHVybmVkXG5cdFx0c0J1dHRvblR5cGVFeHByZXNzaW9uID0gY29uc3RhbnQoXCJEZWZhdWx0XCIpO1xuXHR9XG5cdHJldHVybiBjb21waWxlRXhwcmVzc2lvbihzQnV0dG9uVHlwZUV4cHJlc3Npb24pO1xufTtcblxuLyoqXG4gKiBSZXR1cm5zIGFuIGV4cHJlc3Npb24gdG8gc2V0IGNvbG9yIGluIE1pY3JvQ2hhcnRzIGJhc2VkIG9uIENyaXRpY2FsaXR5XG4gKiBTdXBwb3J0ZWQgQ3JpdGljYWxpdHk6IFBvc2l0aXZlLCBOZWdhdGl2ZSBhbmQgQ3JpdGljYWwgbGVhZGluZyB0byBHb29kLCBFcnJvciBhbmQgQ3JpdGljYWwgY29sb3IgcmVzcGVjdGl2ZWx5LlxuICpcbiAqIEBmdW5jdGlvblxuICogQHN0YXRpY1xuICogQG5hbWUgc2FwLmZlLmNvcmUuQ3JpdGljYWxpdHlGb3JtYXR0ZXJzLmJ1aWxkRXhwcmVzc2lvbkZvckNyaXRpY2FsaXR5Q29sb3JNaWNyb0NoYXJ0XG4gKiBAbWVtYmVyb2Ygc2FwLmZlLmNvcmUuQ3JpdGljYWxpdHlGb3JtYXR0ZXJzXG4gKiBAcGFyYW0gb1RhcmdldCBBIERhdGFGaWVsZCwgRGF0YVBvaW50LCBEYXRhTW9kZWxPYmplY3RQYXRoXG4gKiBAcmV0dXJucyBBbiBleHByZXNzaW9uIHRvIGRlZHVjZSBjb2xvcnMgaW4gTWljcm9jaGFydHNcbiAqIEBwcml2YXRlXG4gKiBAdWk1LXJlc3RyaWN0ZWRcbiAqL1xuZXhwb3J0IGNvbnN0IGJ1aWxkRXhwcmVzc2lvbkZvckNyaXRpY2FsaXR5Q29sb3JNaWNyb0NoYXJ0ID0gKG9UYXJnZXQ6IGFueSk6IHN0cmluZyB8IHVuZGVmaW5lZCA9PiB7XG5cdGNvbnN0IG9Bbm5vdGF0aW9uVGFyZ2V0ID0gb1RhcmdldD8udGFyZ2V0T2JqZWN0ID8gb1RhcmdldC50YXJnZXRPYmplY3QgOiBvVGFyZ2V0O1xuXHRjb25zdCBvQ3JpdGljYWxpdHlQcm9wZXJ0eSA9IG9Bbm5vdGF0aW9uVGFyZ2V0Py5Dcml0aWNhbGl0eTtcblx0Y29uc3Qgb0NyaXRpY2FsaXR5RXhwcmVzc2lvbjogQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uPHN0cmluZz4gPSBnZXRFeHByZXNzaW9uRnJvbUFubm90YXRpb24ob0NyaXRpY2FsaXR5UHJvcGVydHkpO1xuXHRsZXQgc0NvbG9yRXhwcmVzc2lvbjtcblx0aWYgKG9Dcml0aWNhbGl0eVByb3BlcnR5KSB7XG5cdFx0c0NvbG9yRXhwcmVzc2lvbiA9IGlmRWxzZShcblx0XHRcdG9yKFxuXHRcdFx0XHRlcXVhbChvQ3JpdGljYWxpdHlFeHByZXNzaW9uLCBjb25zdGFudChcIlVJLkNyaXRpY2FsaXR5VHlwZS9OZWdhdGl2ZVwiKSksXG5cdFx0XHRcdGVxdWFsKG9Dcml0aWNhbGl0eUV4cHJlc3Npb24gYXMgQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uPE51bWJlcj4sIGNvbnN0YW50KDEpKSxcblx0XHRcdFx0ZXF1YWwob0NyaXRpY2FsaXR5RXhwcmVzc2lvbiwgY29uc3RhbnQoXCIxXCIpKVxuXHRcdFx0KSxcblx0XHRcdGNvbnN0YW50KFwiRXJyb3JcIiksXG5cdFx0XHRpZkVsc2UoXG5cdFx0XHRcdG9yKFxuXHRcdFx0XHRcdGVxdWFsKG9Dcml0aWNhbGl0eUV4cHJlc3Npb24sIGNvbnN0YW50KFwiVUkuQ3JpdGljYWxpdHlUeXBlL0NyaXRpY2FsXCIpKSxcblx0XHRcdFx0XHRlcXVhbChvQ3JpdGljYWxpdHlFeHByZXNzaW9uIGFzIEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbjxOdW1iZXI+LCBjb25zdGFudCgyKSksXG5cdFx0XHRcdFx0ZXF1YWwob0NyaXRpY2FsaXR5RXhwcmVzc2lvbiwgY29uc3RhbnQoXCIyXCIpKVxuXHRcdFx0XHQpLFxuXHRcdFx0XHRjb25zdGFudChcIkNyaXRpY2FsXCIpLFxuXHRcdFx0XHRpZkVsc2UoXG5cdFx0XHRcdFx0b3IoXG5cdFx0XHRcdFx0XHRlcXVhbChvQ3JpdGljYWxpdHlFeHByZXNzaW9uLCBjb25zdGFudChcIlVJLkNyaXRpY2FsaXR5VHlwZS9Qb3NpdGl2ZVwiKSksXG5cdFx0XHRcdFx0XHRlcXVhbChvQ3JpdGljYWxpdHlFeHByZXNzaW9uIGFzIEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbjxOdW1iZXI+LCBjb25zdGFudCgzKSksXG5cdFx0XHRcdFx0XHRlcXVhbChvQ3JpdGljYWxpdHlFeHByZXNzaW9uLCBjb25zdGFudChcIjNcIikpXG5cdFx0XHRcdFx0KSxcblx0XHRcdFx0XHRjb25zdGFudChcIkdvb2RcIiksXG5cdFx0XHRcdFx0Y29uc3RhbnQoXCJOZXV0cmFsXCIpXG5cdFx0XHRcdClcblx0XHRcdClcblx0XHQpO1xuXHR9IGVsc2Uge1xuXHRcdHNDb2xvckV4cHJlc3Npb24gPSBjb25zdGFudChcIk5ldXRyYWxcIik7XG5cdH1cblx0cmV0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