@sapui5/sap.fe.core 1.102.0 → 1.103.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 (311) hide show
  1. package/package.json +5 -5
  2. package/src/sap/fe/core/.library +1 -1
  3. package/src/sap/fe/core/AppComponent.js +62 -26
  4. package/src/sap/fe/core/AppComponent.ts +56 -40
  5. package/src/sap/fe/core/AppStateHandler.js +10 -10
  6. package/src/sap/fe/core/AppStateHandler.ts +9 -9
  7. package/src/sap/fe/core/BaseController.js +11 -9
  8. package/src/sap/fe/core/BaseController.ts +15 -13
  9. package/src/sap/fe/core/CommonUtils.js +236 -109
  10. package/src/sap/fe/core/CommonUtils.ts +252 -136
  11. package/src/sap/fe/core/ExtensionAPI.js +24 -27
  12. package/src/sap/fe/core/ExtensionAPI.ts +36 -38
  13. package/src/sap/fe/core/PageController.js +4 -4
  14. package/src/sap/fe/core/PageController.ts +4 -5
  15. package/src/sap/fe/core/TemplateComponent.js +1 -1
  16. package/src/sap/fe/core/TemplateComponent.ts +6 -6
  17. package/src/sap/fe/core/TemplateModel.js +1 -1
  18. package/src/sap/fe/core/TemplateModel.ts +1 -1
  19. package/src/sap/fe/core/buildingBlocks/AttributeModel.js +1 -1
  20. package/src/sap/fe/core/buildingBlocks/AttributeModel.ts +1 -1
  21. package/src/sap/fe/core/buildingBlocks/BuildingBlockRuntime.js +8 -8
  22. package/src/sap/fe/core/buildingBlocks/BuildingBlockRuntime.ts +11 -10
  23. package/src/sap/fe/core/buildingBlocks/TraceInfo.js +27 -27
  24. package/src/sap/fe/core/buildingBlocks/TraceInfo.ts +28 -26
  25. package/src/sap/fe/core/controllerextensions/EditFlow.js +129 -118
  26. package/src/sap/fe/core/controllerextensions/EditFlow.ts +154 -141
  27. package/src/sap/fe/core/controllerextensions/IntentBasedNavigation.js +9 -9
  28. package/src/sap/fe/core/controllerextensions/IntentBasedNavigation.ts +10 -10
  29. package/src/sap/fe/core/controllerextensions/InternalEditFlow.js +31 -26
  30. package/src/sap/fe/core/controllerextensions/InternalEditFlow.ts +34 -35
  31. package/src/sap/fe/core/controllerextensions/InternalIntentBasedNavigation.js +70 -70
  32. package/src/sap/fe/core/controllerextensions/InternalIntentBasedNavigation.ts +77 -77
  33. package/src/sap/fe/core/controllerextensions/InternalRouting.js +84 -78
  34. package/src/sap/fe/core/controllerextensions/InternalRouting.ts +105 -101
  35. package/src/sap/fe/core/controllerextensions/KPIManagement.js +66 -68
  36. package/src/sap/fe/core/controllerextensions/KPIManagement.ts +106 -123
  37. package/src/sap/fe/core/controllerextensions/MassEdit.js +8 -8
  38. package/src/sap/fe/core/controllerextensions/MassEdit.ts +19 -26
  39. package/src/sap/fe/core/controllerextensions/MessageHandler.js +20 -12
  40. package/src/sap/fe/core/controllerextensions/MessageHandler.ts +29 -14
  41. package/src/sap/fe/core/controllerextensions/PageReady.js +97 -25
  42. package/src/sap/fe/core/controllerextensions/PageReady.ts +94 -34
  43. package/src/sap/fe/core/controllerextensions/Paginator.js +21 -22
  44. package/src/sap/fe/core/controllerextensions/Paginator.ts +24 -25
  45. package/src/sap/fe/core/controllerextensions/Placeholder.js +4 -6
  46. package/src/sap/fe/core/controllerextensions/Placeholder.ts +12 -14
  47. package/src/sap/fe/core/controllerextensions/Routing.js +10 -11
  48. package/src/sap/fe/core/controllerextensions/Routing.ts +12 -13
  49. package/src/sap/fe/core/controllerextensions/Share.js +22 -22
  50. package/src/sap/fe/core/controllerextensions/Share.ts +30 -29
  51. package/src/sap/fe/core/controllerextensions/SideEffects.js +46 -50
  52. package/src/sap/fe/core/controllerextensions/SideEffects.ts +56 -60
  53. package/src/sap/fe/core/controllerextensions/ViewState.js +65 -62
  54. package/src/sap/fe/core/controllerextensions/ViewState.ts +68 -63
  55. package/src/sap/fe/core/controllerextensions/collaboration/ActivityBase.js +5 -5
  56. package/src/sap/fe/core/controllerextensions/collaboration/ActivityBase.ts +8 -7
  57. package/src/sap/fe/core/controllerextensions/collaboration/ActivitySync.js +6 -6
  58. package/src/sap/fe/core/controllerextensions/collaboration/ActivitySync.ts +12 -17
  59. package/src/sap/fe/core/controllerextensions/collaboration/CollaborationCommon.js +2 -2
  60. package/src/sap/fe/core/controllerextensions/collaboration/CollaborationCommon.ts +4 -4
  61. package/src/sap/fe/core/controllerextensions/collaboration/Manage.js +7 -9
  62. package/src/sap/fe/core/controllerextensions/collaboration/Manage.ts +18 -19
  63. package/src/sap/fe/core/controllerextensions/editFlow/TransactionHelper.js +184 -137
  64. package/src/sap/fe/core/controllerextensions/editFlow/TransactionHelper.ts +253 -206
  65. package/src/sap/fe/core/controllerextensions/editFlow/draft.js +113 -121
  66. package/src/sap/fe/core/controllerextensions/editFlow/draft.ts +148 -158
  67. package/src/sap/fe/core/controllerextensions/editFlow/operations.js +198 -148
  68. package/src/sap/fe/core/controllerextensions/editFlow/operations.ts +223 -159
  69. package/src/sap/fe/core/controllerextensions/editFlow/sticky.js +24 -26
  70. package/src/sap/fe/core/controllerextensions/editFlow/sticky.ts +35 -33
  71. package/src/sap/fe/core/controllerextensions/messageHandler/messageHandling.js +78 -44
  72. package/src/sap/fe/core/controllerextensions/messageHandler/messageHandling.ts +90 -60
  73. package/src/sap/fe/core/controllerextensions/routing/RouterProxy.js +52 -55
  74. package/src/sap/fe/core/controllerextensions/routing/RouterProxy.ts +55 -58
  75. package/src/sap/fe/core/controls/Any.js +9 -5
  76. package/src/sap/fe/core/controls/Any.ts +10 -4
  77. package/src/sap/fe/core/controls/CommandExecution.js +11 -25
  78. package/src/sap/fe/core/controls/CommandExecution.ts +11 -25
  79. package/src/sap/fe/core/controls/ConditionalWrapper.js +2 -2
  80. package/src/sap/fe/core/controls/ConditionalWrapper.ts +3 -3
  81. package/src/sap/fe/core/controls/CustomFilterFieldContentWrapper.js +22 -22
  82. package/src/sap/fe/core/controls/CustomFilterFieldContentWrapper.ts +25 -24
  83. package/src/sap/fe/core/controls/CustomQuickViewPage.js +2 -2
  84. package/src/sap/fe/core/controls/CustomQuickViewPage.ts +2 -2
  85. package/src/sap/fe/core/controls/DataLossOrDraftDiscard/DataLossOrDraftDiscardHandler.js +3 -3
  86. package/src/sap/fe/core/controls/DataLossOrDraftDiscard/DataLossOrDraftDiscardHandler.ts +5 -5
  87. package/src/sap/fe/core/controls/FieldWrapper.js +2 -2
  88. package/src/sap/fe/core/controls/FieldWrapper.ts +3 -3
  89. package/src/sap/fe/core/controls/FileWrapper.js +2 -2
  90. package/src/sap/fe/core/controls/FileWrapper.ts +11 -11
  91. package/src/sap/fe/core/controls/FilterBar.js +6 -2
  92. package/src/sap/fe/core/controls/FilterBar.ts +13 -9
  93. package/src/sap/fe/core/controls/FormElementWrapper.js +1 -1
  94. package/src/sap/fe/core/controls/FormElementWrapper.ts +2 -2
  95. package/src/sap/fe/core/controls/MassEditSelect.js +1 -1
  96. package/src/sap/fe/core/controls/MassEditSelect.ts +0 -4
  97. package/src/sap/fe/core/controls/NonComputedVisibleKeyFieldsDialog.fragment.xml +3 -3
  98. package/src/sap/fe/core/controls/filterbar/VisualFilter.js +16 -12
  99. package/src/sap/fe/core/controls/filterbar/VisualFilter.ts +20 -22
  100. package/src/sap/fe/core/controls/filterbar/VisualFilterContainer.js +3 -3
  101. package/src/sap/fe/core/controls/filterbar/VisualFilterContainer.ts +8 -8
  102. package/src/sap/fe/core/controls/filterbar/utils/VisualFilterUtils.js +47 -47
  103. package/src/sap/fe/core/controls/filterbar/utils/VisualFilterUtils.ts +52 -52
  104. package/src/sap/fe/core/controls/massEdit/MassEditDialog.fragment.xml +8 -2
  105. package/src/sap/fe/core/controls/massEdit/MassEditHandlers.js +89 -88
  106. package/src/sap/fe/core/controls/massEdit/MassEditHandlers.ts +107 -106
  107. package/src/sap/fe/core/converters/ConverterContext.js +26 -33
  108. package/src/sap/fe/core/converters/ConverterContext.ts +51 -60
  109. package/src/sap/fe/core/converters/ManifestSettings.js +1 -1
  110. package/src/sap/fe/core/converters/ManifestSettings.ts +14 -14
  111. package/src/sap/fe/core/converters/ManifestWrapper.js +59 -45
  112. package/src/sap/fe/core/converters/ManifestWrapper.ts +55 -45
  113. package/src/sap/fe/core/converters/MetaModelConverter.js +50 -32
  114. package/src/sap/fe/core/converters/MetaModelConverter.ts +145 -127
  115. package/src/sap/fe/core/converters/TemplateConverter.js +21 -20
  116. package/src/sap/fe/core/converters/TemplateConverter.ts +27 -24
  117. package/src/sap/fe/core/converters/annotations/DataField.js +54 -34
  118. package/src/sap/fe/core/converters/annotations/DataField.ts +97 -75
  119. package/src/sap/fe/core/converters/common/AnnotationConverter.js +1911 -1495
  120. package/src/sap/fe/core/converters/controls/Common/Action.js +50 -41
  121. package/src/sap/fe/core/converters/controls/Common/Action.ts +56 -46
  122. package/src/sap/fe/core/converters/controls/Common/Chart.js +14 -14
  123. package/src/sap/fe/core/converters/controls/Common/Chart.ts +23 -26
  124. package/src/sap/fe/core/converters/controls/Common/Criticality.js +3 -3
  125. package/src/sap/fe/core/converters/controls/Common/Criticality.ts +4 -4
  126. package/src/sap/fe/core/converters/controls/Common/DataVisualization.js +28 -28
  127. package/src/sap/fe/core/converters/controls/Common/DataVisualization.ts +40 -36
  128. package/src/sap/fe/core/converters/controls/Common/Form.js +25 -27
  129. package/src/sap/fe/core/converters/controls/Common/Form.ts +37 -45
  130. package/src/sap/fe/core/converters/controls/Common/KPI.js +11 -11
  131. package/src/sap/fe/core/converters/controls/Common/KPI.ts +35 -39
  132. package/src/sap/fe/core/converters/controls/Common/Table.js +174 -183
  133. package/src/sap/fe/core/converters/controls/Common/Table.ts +237 -250
  134. package/src/sap/fe/core/converters/controls/Common/table/StandardActions.js +119 -119
  135. package/src/sap/fe/core/converters/controls/Common/table/StandardActions.ts +144 -141
  136. package/src/sap/fe/core/converters/controls/ListReport/FilterBar.js +45 -41
  137. package/src/sap/fe/core/converters/controls/ListReport/FilterBar.ts +64 -57
  138. package/src/sap/fe/core/converters/controls/ListReport/VisualFilters.js +28 -26
  139. package/src/sap/fe/core/converters/controls/ListReport/VisualFilters.ts +46 -43
  140. package/src/sap/fe/core/converters/controls/ObjectPage/Avatar.js +9 -9
  141. package/src/sap/fe/core/converters/controls/ObjectPage/Avatar.ts +14 -13
  142. package/src/sap/fe/core/converters/controls/ObjectPage/HeaderFacet.js +67 -64
  143. package/src/sap/fe/core/converters/controls/ObjectPage/HeaderFacet.ts +69 -66
  144. package/src/sap/fe/core/converters/controls/ObjectPage/SubSection.js +73 -72
  145. package/src/sap/fe/core/converters/controls/ObjectPage/SubSection.ts +98 -96
  146. package/src/sap/fe/core/converters/helpers/Aggregation.js +2 -4
  147. package/src/sap/fe/core/converters/helpers/Aggregation.ts +10 -13
  148. package/src/sap/fe/core/converters/helpers/BindingHelper.js +31 -31
  149. package/src/sap/fe/core/converters/helpers/BindingHelper.ts +30 -29
  150. package/src/sap/fe/core/converters/helpers/ConfigurableObject.js +4 -4
  151. package/src/sap/fe/core/converters/helpers/ConfigurableObject.ts +9 -9
  152. package/src/sap/fe/core/converters/helpers/ID.js +46 -46
  153. package/src/sap/fe/core/converters/helpers/ID.ts +25 -25
  154. package/src/sap/fe/core/converters/helpers/Key.js +7 -7
  155. package/src/sap/fe/core/converters/helpers/Key.ts +7 -7
  156. package/src/sap/fe/core/converters/helpers/SelectionVariantHelper.js +1 -1
  157. package/src/sap/fe/core/converters/helpers/SelectionVariantHelper.ts +4 -4
  158. package/src/sap/fe/core/converters/objectPage/FormMenuActions.js +6 -6
  159. package/src/sap/fe/core/converters/objectPage/FormMenuActions.ts +10 -10
  160. package/src/sap/fe/core/converters/objectPage/HeaderAndFooterAction.js +46 -62
  161. package/src/sap/fe/core/converters/objectPage/HeaderAndFooterAction.ts +54 -82
  162. package/src/sap/fe/core/converters/templates/ListReportConverter.js +30 -29
  163. package/src/sap/fe/core/converters/templates/ListReportConverter.ts +40 -40
  164. package/src/sap/fe/core/converters/templates/ObjectPageConverter.js +39 -38
  165. package/src/sap/fe/core/converters/templates/ObjectPageConverter.ts +52 -61
  166. package/src/sap/fe/core/designtime/AppComponent.designtime.js +4 -4
  167. package/src/sap/fe/core/designtime/AppComponent.designtime.ts +4 -4
  168. package/src/sap/fe/core/formatters/CollaborationFormatter.js +2 -2
  169. package/src/sap/fe/core/formatters/CollaborationFormatter.ts +3 -3
  170. package/src/sap/fe/core/formatters/FPMFormatter.js +5 -5
  171. package/src/sap/fe/core/formatters/FPMFormatter.ts +10 -10
  172. package/src/sap/fe/core/formatters/KPIFormatter.js +7 -7
  173. package/src/sap/fe/core/formatters/KPIFormatter.ts +10 -10
  174. package/src/sap/fe/core/formatters/StandardFormatter.js +89 -0
  175. package/src/sap/fe/core/formatters/StandardFormatter.ts +64 -0
  176. package/src/sap/fe/core/formatters/TableFormatter.js +11 -11
  177. package/src/sap/fe/core/formatters/TableFormatter.ts +12 -12
  178. package/src/sap/fe/core/formatters/ValueFormatter.js +8 -8
  179. package/src/sap/fe/core/formatters/ValueFormatter.ts +9 -9
  180. package/src/sap/fe/core/helpers/AppStartupHelper.js +15 -15
  181. package/src/sap/fe/core/helpers/AppStartupHelper.ts +37 -40
  182. package/src/sap/fe/core/helpers/BindingToolkit.js +1809 -0
  183. package/src/sap/fe/core/helpers/{BindingExpression.ts → BindingToolkit.ts} +365 -264
  184. package/src/sap/fe/core/helpers/ClassSupport.js +20 -11
  185. package/src/sap/fe/core/helpers/ClassSupport.ts +14 -10
  186. package/src/sap/fe/core/helpers/DynamicAnnotationPathHelper.js +2 -2
  187. package/src/sap/fe/core/helpers/DynamicAnnotationPathHelper.ts +1 -1
  188. package/src/sap/fe/core/helpers/EditState.js +1 -6
  189. package/src/sap/fe/core/helpers/EditState.ts +5 -10
  190. package/src/sap/fe/core/helpers/ExcelFormatHelper.js +2 -2
  191. package/src/sap/fe/core/helpers/ExcelFormatHelper.ts +4 -4
  192. package/src/sap/fe/core/helpers/FPMHelper.js +1 -1
  193. package/src/sap/fe/core/helpers/FPMHelper.ts +2 -2
  194. package/src/sap/fe/core/helpers/KeepAliveHelper.js +31 -31
  195. package/src/sap/fe/core/helpers/KeepAliveHelper.ts +52 -56
  196. package/src/sap/fe/core/helpers/MassEditHelper.js +281 -254
  197. package/src/sap/fe/core/helpers/MassEditHelper.ts +337 -289
  198. package/src/sap/fe/core/helpers/ModelHelper.js +25 -25
  199. package/src/sap/fe/core/helpers/ModelHelper.ts +34 -32
  200. package/src/sap/fe/core/helpers/PasteHelper.js +3 -10
  201. package/src/sap/fe/core/helpers/PasteHelper.ts +20 -25
  202. package/src/sap/fe/core/helpers/SemanticDateOperators.js +1 -1
  203. package/src/sap/fe/core/helpers/SemanticDateOperators.ts +11 -11
  204. package/src/sap/fe/core/helpers/SemanticKeyHelper.js +3 -3
  205. package/src/sap/fe/core/helpers/SemanticKeyHelper.ts +8 -8
  206. package/src/sap/fe/core/helpers/StableIdHelper.js +12 -12
  207. package/src/sap/fe/core/helpers/StableIdHelper.ts +12 -12
  208. package/src/sap/fe/core/jsx-runtime/jsx.js +1 -1
  209. package/src/sap/fe/core/jsx-runtime/jsx.ts +8 -8
  210. package/src/sap/fe/core/library.js +42 -3
  211. package/src/sap/fe/core/library.ts +38 -0
  212. package/src/sap/fe/core/manifestMerger/ChangePageConfiguration.js +3 -3
  213. package/src/sap/fe/core/manifestMerger/ChangePageConfiguration.ts +2 -2
  214. package/src/sap/fe/core/messagebundle.properties +49 -35
  215. package/src/sap/fe/core/messagebundle_ar.properties +13 -5
  216. package/src/sap/fe/core/messagebundle_bg.properties +13 -5
  217. package/src/sap/fe/core/messagebundle_ca.properties +13 -5
  218. package/src/sap/fe/core/messagebundle_cs.properties +13 -5
  219. package/src/sap/fe/core/messagebundle_cy.properties +14 -6
  220. package/src/sap/fe/core/messagebundle_da.properties +13 -5
  221. package/src/sap/fe/core/messagebundle_de.properties +15 -7
  222. package/src/sap/fe/core/messagebundle_el.properties +14 -6
  223. package/src/sap/fe/core/messagebundle_en.properties +9 -1
  224. package/src/sap/fe/core/messagebundle_en_GB.properties +11 -3
  225. package/src/sap/fe/core/messagebundle_en_US_sappsd.properties +7 -1
  226. package/src/sap/fe/core/messagebundle_en_US_saprigi.properties +9 -1
  227. package/src/sap/fe/core/messagebundle_en_US_saptrc.properties +44 -85
  228. package/src/sap/fe/core/messagebundle_es.properties +13 -5
  229. package/src/sap/fe/core/messagebundle_es_MX.properties +13 -5
  230. package/src/sap/fe/core/messagebundle_et.properties +13 -5
  231. package/src/sap/fe/core/messagebundle_fi.properties +14 -6
  232. package/src/sap/fe/core/messagebundle_fr.properties +14 -6
  233. package/src/sap/fe/core/messagebundle_fr_CA.properties +14 -6
  234. package/src/sap/fe/core/messagebundle_hi.properties +14 -6
  235. package/src/sap/fe/core/messagebundle_hr.properties +14 -6
  236. package/src/sap/fe/core/messagebundle_hu.properties +13 -5
  237. package/src/sap/fe/core/messagebundle_id.properties +13 -5
  238. package/src/sap/fe/core/messagebundle_it.properties +33 -25
  239. package/src/sap/fe/core/messagebundle_iw.properties +13 -5
  240. package/src/sap/fe/core/messagebundle_ja.properties +14 -6
  241. package/src/sap/fe/core/messagebundle_kk.properties +13 -5
  242. package/src/sap/fe/core/messagebundle_ko.properties +13 -5
  243. package/src/sap/fe/core/messagebundle_lt.properties +13 -5
  244. package/src/sap/fe/core/messagebundle_lv.properties +14 -6
  245. package/src/sap/fe/core/messagebundle_ms.properties +13 -5
  246. package/src/sap/fe/core/messagebundle_nl.properties +13 -5
  247. package/src/sap/fe/core/messagebundle_no.properties +13 -5
  248. package/src/sap/fe/core/messagebundle_pl.properties +13 -5
  249. package/src/sap/fe/core/messagebundle_pt.properties +13 -5
  250. package/src/sap/fe/core/messagebundle_pt_PT.properties +14 -6
  251. package/src/sap/fe/core/messagebundle_ro.properties +13 -5
  252. package/src/sap/fe/core/messagebundle_ru.properties +13 -5
  253. package/src/sap/fe/core/messagebundle_sh.properties +13 -5
  254. package/src/sap/fe/core/messagebundle_sk.properties +13 -5
  255. package/src/sap/fe/core/messagebundle_sl.properties +17 -9
  256. package/src/sap/fe/core/messagebundle_sv.properties +14 -6
  257. package/src/sap/fe/core/messagebundle_th.properties +13 -5
  258. package/src/sap/fe/core/messagebundle_tr.properties +13 -5
  259. package/src/sap/fe/core/messagebundle_uk.properties +13 -5
  260. package/src/sap/fe/core/messagebundle_vi.properties +13 -5
  261. package/src/sap/fe/core/messagebundle_zh_CN.properties +14 -6
  262. package/src/sap/fe/core/messagebundle_zh_TW.properties +13 -5
  263. package/src/sap/fe/core/services/AsyncComponentServiceFactory.js +2 -2
  264. package/src/sap/fe/core/services/AsyncComponentServiceFactory.ts +5 -5
  265. package/src/sap/fe/core/services/CacheHandlerServiceFactory.js +2 -2
  266. package/src/sap/fe/core/services/CacheHandlerServiceFactory.ts +14 -14
  267. package/src/sap/fe/core/services/EnvironmentServiceFactory.js +1 -1
  268. package/src/sap/fe/core/services/EnvironmentServiceFactory.ts +3 -2
  269. package/src/sap/fe/core/services/NavigationServiceFactory.js +53 -44
  270. package/src/sap/fe/core/services/NavigationServiceFactory.ts +54 -46
  271. package/src/sap/fe/core/services/ResourceModelServiceFactory.js +2 -2
  272. package/src/sap/fe/core/services/ResourceModelServiceFactory.ts +4 -4
  273. package/src/sap/fe/core/services/RoutingServiceFactory.js +55 -55
  274. package/src/sap/fe/core/services/RoutingServiceFactory.ts +67 -65
  275. package/src/sap/fe/core/services/ShellServicesFactory.js +72 -76
  276. package/src/sap/fe/core/services/ShellServicesFactory.ts +76 -82
  277. package/src/sap/fe/core/services/SideEffectsServiceFactory.js +61 -61
  278. package/src/sap/fe/core/services/SideEffectsServiceFactory.ts +102 -92
  279. package/src/sap/fe/core/services/TemplatedViewServiceFactory.js +20 -15
  280. package/src/sap/fe/core/services/TemplatedViewServiceFactory.ts +26 -21
  281. package/src/sap/fe/core/support/CommonHelper.js +3 -2
  282. package/src/sap/fe/core/support/CommonHelper.ts +9 -13
  283. package/src/sap/fe/core/support/Diagnostics.js +1 -1
  284. package/src/sap/fe/core/support/Diagnostics.ts +5 -5
  285. package/src/sap/fe/core/templating/CommonFormatters.js +84 -0
  286. package/src/sap/fe/core/templating/CommonFormatters.ts +86 -0
  287. package/src/sap/fe/core/templating/CriticalityFormatters.js +31 -31
  288. package/src/sap/fe/core/templating/CriticalityFormatters.ts +42 -40
  289. package/src/sap/fe/core/templating/DataFieldFormatters.js +8 -8
  290. package/src/sap/fe/core/templating/DataFieldFormatters.ts +13 -10
  291. package/src/sap/fe/core/templating/DataModelPathHelper.js +16 -15
  292. package/src/sap/fe/core/templating/DataModelPathHelper.ts +42 -32
  293. package/src/sap/fe/core/templating/DisplayModeFormatter.js +1 -1
  294. package/src/sap/fe/core/templating/DisplayModeFormatter.ts +2 -3
  295. package/src/sap/fe/core/templating/EntitySetHelper.js +7 -7
  296. package/src/sap/fe/core/templating/EntitySetHelper.ts +6 -8
  297. package/src/sap/fe/core/templating/FieldControlHelper.js +35 -34
  298. package/src/sap/fe/core/templating/FieldControlHelper.ts +29 -46
  299. package/src/sap/fe/core/templating/FilterHelper.js +10 -9
  300. package/src/sap/fe/core/templating/FilterHelper.ts +13 -13
  301. package/src/sap/fe/core/templating/FilterTemplating.js +1 -1
  302. package/src/sap/fe/core/templating/FilterTemplating.ts +3 -3
  303. package/src/sap/fe/core/templating/PropertyFormatters.js +7 -7
  304. package/src/sap/fe/core/templating/PropertyFormatters.ts +21 -19
  305. package/src/sap/fe/core/templating/PropertyHelper.js +25 -25
  306. package/src/sap/fe/core/templating/PropertyHelper.ts +25 -26
  307. package/src/sap/fe/core/templating/UIFormatters.js +148 -93
  308. package/src/sap/fe/core/templating/UIFormatters.ts +196 -124
  309. package/src/sap/fe/core/type/Email.js +2 -2
  310. package/src/sap/fe/core/type/Email.ts +2 -2
  311. package/src/sap/fe/core/helpers/BindingExpression.js +0 -1732
@@ -1,5 +1,4 @@
1
- import { EntitySet } from "@sap-ux/annotation-converter";
2
- import { NavigationPropertyPath } from "@sap-ux/vocabularies-types";
1
+ import type { EntitySet, NavigationPropertyPath } from "@sap-ux/vocabularies-types";
3
2
 
4
3
  export const isEntitySet = function (dataObject: any): dataObject is EntitySet {
5
4
  return dataObject && dataObject.hasOwnProperty("_type") && dataObject._type === "EntitySet";
@@ -13,8 +12,8 @@ export const getFilterExpressionRestrictions = function (entitySet: EntitySet) {
13
12
  * Reads all SortRestrictions of the main entity and the (first level) navigation restrictions.
14
13
  * This does not work for more than one level of navigation.
15
14
  *
16
- * @param {EntitySet} entitySet Entity set to be analyzed
17
- * @returns {string[]} Array containing the property names of all non-sortable properties
15
+ * @param entitySet Entity set to be analyzed
16
+ * @returns Array containing the property names of all non-sortable properties
18
17
  */
19
18
  export const getNonSortablePropertiesRestrictions = function (entitySet: EntitySet | undefined): string[] {
20
19
  let nonSortableProperties = [];
@@ -31,20 +30,19 @@ export const getNonSortablePropertiesRestrictions = function (entitySet: EntityS
31
30
  if (navigationRestriction?.SortRestrictions?.Sortable === false) {
32
31
  // find correct navigation property
33
32
  const navigationProperty = entitySet?.entityType?.navigationProperties?.filter(
34
- (navigationProperty) =>
35
- navigationProperty.name == (navigationRestriction?.NavigationProperty as NavigationPropertyPath)?.value
33
+ (navProperty) => navProperty.name == (navigationRestriction?.NavigationProperty as NavigationPropertyPath)?.value
36
34
  );
37
35
  if (navigationProperty[0]) {
38
36
  // add all properties of the navigation property to the nonSortableProperties
39
37
  nonSortableProperties.push(
40
38
  ...navigationProperty[0].targetType?.entityProperties.map(
41
- (property) => navigationProperty[0].name + "/" + property.name
39
+ (property) => `${navigationProperty[0].name}/${property.name}`
42
40
  )
43
41
  );
44
42
  }
45
43
  } else {
46
44
  const nonSortableNavigationProperties = navigationRestriction?.SortRestrictions?.NonSortableProperties?.map(
47
- (property) => (navigationRestriction?.NavigationProperty as NavigationPropertyPath)?.value + "/" + property.value
45
+ (property) => `${(navigationRestriction?.NavigationProperty as NavigationPropertyPath)?.value}/${property.value}`
48
46
  );
49
47
  if (nonSortableNavigationProperties) {
50
48
  nonSortableProperties.push(...nonSortableNavigationProperties);
@@ -2,49 +2,37 @@
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"], function (BindingExpression) {
5
+ sap.ui.define(["sap/fe/core/helpers/BindingToolkit"], function (BindingToolkit) {
6
6
  "use strict";
7
7
 
8
8
  var _exports = {};
9
- var annotationExpression = BindingExpression.annotationExpression;
10
- var or = BindingExpression.or;
11
- var equal = BindingExpression.equal;
9
+ var or = BindingToolkit.or;
10
+ var getExpressionFromAnnotation = BindingToolkit.getExpressionFromAnnotation;
11
+ var equal = BindingToolkit.equal;
12
+ var constant = BindingToolkit.constant;
12
13
 
13
- /**
14
- * Create the binding expression to check if the property is non editable or not.
15
- *
16
- * @param {object} oTarget The target property or DataField
17
- * @returns {ExpressionOrPrimitive<boolean>} The binding expression resolving to a Boolean being true if it's non editable
18
- */
19
- var isNonEditableExpression = function (oTarget) {
20
- return or(isReadOnlyExpression(oTarget), isDisabledExpression(oTarget));
21
- };
22
14
  /**
23
15
  * Create the binding expression to check if the property is read only or not.
24
16
  *
25
- * @param {object} oTarget The target property or DataField
26
- * @returns {ExpressionOrPrimitive<boolean>} The binding expression resolving to a Boolean being true if it's read only
17
+ * @param oTarget The target property or DataField
18
+ * @returns The binding expression resolving to a Boolean being true if it's read only
27
19
  */
28
-
29
-
30
- _exports.isNonEditableExpression = isNonEditableExpression;
31
-
32
20
  var isReadOnlyExpression = function (oTarget) {
33
21
  var _oTarget$annotations, _oTarget$annotations$, _oTarget$annotations$2;
34
22
 
35
23
  var oFieldControlValue = oTarget === null || oTarget === void 0 ? void 0 : (_oTarget$annotations = oTarget.annotations) === null || _oTarget$annotations === void 0 ? void 0 : (_oTarget$annotations$ = _oTarget$annotations.Common) === null || _oTarget$annotations$ === void 0 ? void 0 : (_oTarget$annotations$2 = _oTarget$annotations$.FieldControl) === null || _oTarget$annotations$2 === void 0 ? void 0 : _oTarget$annotations$2.valueOf();
36
24
 
37
- if (typeof oFieldControlValue === "object") {
38
- return !!oFieldControlValue && or(equal(annotationExpression(oFieldControlValue), 1), equal(annotationExpression(oFieldControlValue), "1"));
25
+ if (typeof oFieldControlValue === "object" && !!oFieldControlValue) {
26
+ return or(equal(getExpressionFromAnnotation(oFieldControlValue), 1), equal(getExpressionFromAnnotation(oFieldControlValue), "1"));
39
27
  }
40
28
 
41
- return oFieldControlValue === "Common.FieldControlType/ReadOnly";
29
+ return constant(oFieldControlValue === "Common.FieldControlType/ReadOnly");
42
30
  };
43
31
  /**
44
32
  * Create the binding expression to check if the property is disabled or not.
45
33
  *
46
- * @param {object} oTarget The target property or DataField
47
- * @returns {ExpressionOrPrimitive<boolean>} The binding expression resolving to a Boolean being true if it's disabled
34
+ * @param oTarget The target property or DataField
35
+ * @returns The binding expression resolving to a Boolean being true if it's disabled
48
36
  */
49
37
 
50
38
 
@@ -55,35 +43,48 @@ sap.ui.define(["sap/fe/core/helpers/BindingExpression"], function (BindingExpres
55
43
 
56
44
  var oFieldControlValue = oTarget === null || oTarget === void 0 ? void 0 : (_oTarget$annotations2 = oTarget.annotations) === null || _oTarget$annotations2 === void 0 ? void 0 : (_oTarget$annotations3 = _oTarget$annotations2.Common) === null || _oTarget$annotations3 === void 0 ? void 0 : (_oTarget$annotations4 = _oTarget$annotations3.FieldControl) === null || _oTarget$annotations4 === void 0 ? void 0 : _oTarget$annotations4.valueOf();
57
45
 
58
- if (typeof oFieldControlValue === "object") {
59
- return !!oFieldControlValue && or(equal(annotationExpression(oFieldControlValue), 0), equal(annotationExpression(oFieldControlValue), "0"));
46
+ if (typeof oFieldControlValue === "object" && !!oFieldControlValue) {
47
+ return or(equal(getExpressionFromAnnotation(oFieldControlValue), 0), equal(getExpressionFromAnnotation(oFieldControlValue), "0"));
60
48
  }
61
49
 
62
- return oFieldControlValue === "Common.FieldControlType/Inapplicable";
50
+ return constant(oFieldControlValue === "Common.FieldControlType/Inapplicable");
63
51
  };
64
52
  /**
65
- * Create the binding expression to check if the property is read only or not.
53
+ * Create the binding expression to check if the property is non editable or not.
66
54
  *
67
- * @param {object} oTarget The target property or DataField
68
- * @returns {ExpressionOrPrimitive<boolean>} The binding expression resolving to a Boolean being true if it's read only
55
+ * @param oTarget The target property or DataField
56
+ * @returns The binding expression resolving to a Boolean being true if it's non editable
69
57
  */
70
58
 
71
59
 
72
60
  _exports.isDisabledExpression = isDisabledExpression;
73
61
 
62
+ var isNonEditableExpression = function (oTarget) {
63
+ return or(isReadOnlyExpression(oTarget), isDisabledExpression(oTarget));
64
+ };
65
+ /**
66
+ * Create the binding expression to check if the property is read only or not.
67
+ *
68
+ * @param oTarget The target property or DataField
69
+ * @returns The binding expression resolving to a Boolean being true if it's read only
70
+ */
71
+
72
+
73
+ _exports.isNonEditableExpression = isNonEditableExpression;
74
+
74
75
  var isRequiredExpression = function (oTarget) {
75
76
  var _oTarget$annotations5, _oTarget$annotations6, _oTarget$annotations7;
76
77
 
77
78
  var oFieldControlValue = oTarget === null || oTarget === void 0 ? void 0 : (_oTarget$annotations5 = oTarget.annotations) === null || _oTarget$annotations5 === void 0 ? void 0 : (_oTarget$annotations6 = _oTarget$annotations5.Common) === null || _oTarget$annotations6 === void 0 ? void 0 : (_oTarget$annotations7 = _oTarget$annotations6.FieldControl) === null || _oTarget$annotations7 === void 0 ? void 0 : _oTarget$annotations7.valueOf();
78
79
 
79
- if (typeof oFieldControlValue === "object") {
80
- return !!oFieldControlValue && or(equal(annotationExpression(oFieldControlValue), 7), equal(annotationExpression(oFieldControlValue), "7"));
80
+ if (typeof oFieldControlValue === "object" && !!oFieldControlValue) {
81
+ return or(equal(getExpressionFromAnnotation(oFieldControlValue), 7), equal(getExpressionFromAnnotation(oFieldControlValue), "7"));
81
82
  }
82
83
 
83
- return oFieldControlValue === "Common.FieldControlType/Mandatory";
84
+ return constant(oFieldControlValue === "Common.FieldControlType/Mandatory");
84
85
  };
85
86
 
86
87
  _exports.isRequiredExpression = isRequiredExpression;
87
88
  return _exports;
88
89
  }, false);
89
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIkZpZWxkQ29udHJvbEhlbHBlci50cyJdLCJuYW1lcyI6WyJpc05vbkVkaXRhYmxlRXhwcmVzc2lvbiIsIm9UYXJnZXQiLCJvciIsImlzUmVhZE9ubHlFeHByZXNzaW9uIiwiaXNEaXNhYmxlZEV4cHJlc3Npb24iLCJvRmllbGRDb250cm9sVmFsdWUiLCJhbm5vdGF0aW9ucyIsIkNvbW1vbiIsIkZpZWxkQ29udHJvbCIsInZhbHVlT2YiLCJlcXVhbCIsImFubm90YXRpb25FeHByZXNzaW9uIiwiaXNSZXF1aXJlZEV4cHJlc3Npb24iXSwibWFwcGluZ3MiOiI7QUFBQTtBQUNBO0FBQ0E7Ozs7Ozs7OztBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNPLE1BQU1BLHVCQUF1QixHQUFHLFVBQVNDLE9BQVQsRUFBNEM7QUFDbEYsV0FBT0MsRUFBRSxDQUFDQyxvQkFBb0IsQ0FBQ0YsT0FBRCxDQUFyQixFQUFnQ0csb0JBQW9CLENBQUNILE9BQUQsQ0FBcEQsQ0FBVDtBQUNBLEdBRk07QUFJUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7O0FBQ08sTUFBTUUsb0JBQW9CLEdBQUcsVUFBU0YsT0FBVCxFQUF1RDtBQUFBOztBQUMxRixRQUFNSSxrQkFBa0IsR0FBR0osT0FBSCxhQUFHQSxPQUFILCtDQUFHQSxPQUFPLENBQUVLLFdBQVosa0ZBQUcscUJBQXNCQyxNQUF6QixvRkFBRyxzQkFBOEJDLFlBQWpDLDJEQUFHLHVCQUE0Q0MsT0FBNUMsRUFBM0I7O0FBQ0EsUUFBSSxPQUFPSixrQkFBUCxLQUE4QixRQUFsQyxFQUE0QztBQUMzQyxhQUNDLENBQUMsQ0FBQ0Esa0JBQUYsSUFDQUgsRUFBRSxDQUNEUSxLQUFLLENBQUNDLG9CQUFvQixDQUFDTixrQkFBRCxDQUFyQixFQUE0RSxDQUE1RSxDQURKLEVBRURLLEtBQUssQ0FBQ0Msb0JBQW9CLENBQUNOLGtCQUFELENBQXJCLEVBQTRFLEdBQTVFLENBRkosQ0FGSDtBQU9BOztBQUNELFdBQU9BLGtCQUFrQixLQUFLLGtDQUE5QjtBQUNBLEdBWk07QUFjUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7O0FBQ08sTUFBTUQsb0JBQW9CLEdBQUcsVUFBU0gsT0FBVCxFQUF1RDtBQUFBOztBQUMxRixRQUFNSSxrQkFBa0IsR0FBR0osT0FBSCxhQUFHQSxPQUFILGdEQUFHQSxPQUFPLENBQUVLLFdBQVosbUZBQUcsc0JBQXNCQyxNQUF6QixtRkFBRyxzQkFBOEJDLFlBQWpDLDBEQUFHLHNCQUE0Q0MsT0FBNUMsRUFBM0I7O0FBQ0EsUUFBSSxPQUFPSixrQkFBUCxLQUE4QixRQUFsQyxFQUE0QztBQUMzQyxhQUNDLENBQUMsQ0FBQ0Esa0JBQUYsSUFDQUgsRUFBRSxDQUNEUSxLQUFLLENBQUNDLG9CQUFvQixDQUFDTixrQkFBRCxDQUFyQixFQUE0RSxDQUE1RSxDQURKLEVBRURLLEtBQUssQ0FBQ0Msb0JBQW9CLENBQUNOLGtCQUFELENBQXJCLEVBQTRFLEdBQTVFLENBRkosQ0FGSDtBQU9BOztBQUNELFdBQU9BLGtCQUFrQixLQUFLLHNDQUE5QjtBQUNBLEdBWk07QUFjUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7O0FBQ08sTUFBTU8sb0JBQW9CLEdBQUcsVUFBU1gsT0FBVCxFQUF1RDtBQUFBOztBQUMxRixRQUFNSSxrQkFBa0IsR0FBR0osT0FBSCxhQUFHQSxPQUFILGdEQUFHQSxPQUFPLENBQUVLLFdBQVosbUZBQUcsc0JBQXNCQyxNQUF6QixtRkFBRyxzQkFBOEJDLFlBQWpDLDBEQUFHLHNCQUE0Q0MsT0FBNUMsRUFBM0I7O0FBQ0EsUUFBSSxPQUFPSixrQkFBUCxLQUE4QixRQUFsQyxFQUE0QztBQUMzQyxhQUNDLENBQUMsQ0FBQ0Esa0JBQUYsSUFDQUgsRUFBRSxDQUNEUSxLQUFLLENBQUNDLG9CQUFvQixDQUFDTixrQkFBRCxDQUFyQixFQUE0RSxDQUE1RSxDQURKLEVBRURLLEtBQUssQ0FBQ0Msb0JBQW9CLENBQUNOLGtCQUFELENBQXJCLEVBQTRFLEdBQTVFLENBRkosQ0FGSDtBQU9BOztBQUNELFdBQU9BLGtCQUFrQixLQUFLLG1DQUE5QjtBQUNBLEdBWk0iLCJzb3VyY2VSb290IjoiLiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGVxdWFsLCBFeHByZXNzaW9uLCBFeHByZXNzaW9uT3JQcmltaXRpdmUsIG9yLCBhbm5vdGF0aW9uRXhwcmVzc2lvbiB9IGZyb20gXCJzYXAvZmUvY29yZS9oZWxwZXJzL0JpbmRpbmdFeHByZXNzaW9uXCI7XG5cbi8qKlxuICogQ3JlYXRlIHRoZSBiaW5kaW5nIGV4cHJlc3Npb24gdG8gY2hlY2sgaWYgdGhlIHByb3BlcnR5IGlzIG5vbiBlZGl0YWJsZSBvciBub3QuXG4gKlxuICogQHBhcmFtIHtvYmplY3R9IG9UYXJnZXQgVGhlIHRhcmdldCBwcm9wZXJ0eSBvciBEYXRhRmllbGRcbiAqIEByZXR1cm5zIHtFeHByZXNzaW9uT3JQcmltaXRpdmU8Ym9vbGVhbj59IFRoZSBiaW5kaW5nIGV4cHJlc3Npb24gcmVzb2x2aW5nIHRvIGEgQm9vbGVhbiBiZWluZyB0cnVlIGlmIGl0J3Mgbm9uIGVkaXRhYmxlXG4gKi9cbmV4cG9ydCBjb25zdCBpc05vbkVkaXRhYmxlRXhwcmVzc2lvbiA9IGZ1bmN0aW9uKG9UYXJnZXQ6IGFueSk6IEV4cHJlc3Npb248Ym9vbGVhbj4ge1xuXHRyZXR1cm4gb3IoaXNSZWFkT25seUV4cHJlc3Npb24ob1RhcmdldCksIGlzRGlzYWJsZWRFeHByZXNzaW9uKG9UYXJnZXQpKTtcbn07XG5cbi8qKlxuICogQ3JlYXRlIHRoZSBiaW5kaW5nIGV4cHJlc3Npb24gdG8gY2hlY2sgaWYgdGhlIHByb3BlcnR5IGlzIHJlYWQgb25seSBvciBub3QuXG4gKlxuICogQHBhcmFtIHtvYmplY3R9IG9UYXJnZXQgVGhlIHRhcmdldCBwcm9wZXJ0eSBvciBEYXRhRmllbGRcbiAqIEByZXR1cm5zIHtFeHByZXNzaW9uT3JQcmltaXRpdmU8Ym9vbGVhbj59IFRoZSBiaW5kaW5nIGV4cHJlc3Npb24gcmVzb2x2aW5nIHRvIGEgQm9vbGVhbiBiZWluZyB0cnVlIGlmIGl0J3MgcmVhZCBvbmx5XG4gKi9cbmV4cG9ydCBjb25zdCBpc1JlYWRPbmx5RXhwcmVzc2lvbiA9IGZ1bmN0aW9uKG9UYXJnZXQ6IGFueSk6IEV4cHJlc3Npb25PclByaW1pdGl2ZTxib29sZWFuPiB7XG5cdGNvbnN0IG9GaWVsZENvbnRyb2xWYWx1ZSA9IG9UYXJnZXQ/LmFubm90YXRpb25zPy5Db21tb24/LkZpZWxkQ29udHJvbD8udmFsdWVPZigpO1xuXHRpZiAodHlwZW9mIG9GaWVsZENvbnRyb2xWYWx1ZSA9PT0gXCJvYmplY3RcIikge1xuXHRcdHJldHVybiAoXG5cdFx0XHQhIW9GaWVsZENvbnRyb2xWYWx1ZSAmJlxuXHRcdFx0b3IoXG5cdFx0XHRcdGVxdWFsKGFubm90YXRpb25FeHByZXNzaW9uKG9GaWVsZENvbnRyb2xWYWx1ZSkgYXMgRXhwcmVzc2lvbk9yUHJpbWl0aXZlPG51bWJlcj4sIDEpLFxuXHRcdFx0XHRlcXVhbChhbm5vdGF0aW9uRXhwcmVzc2lvbihvRmllbGRDb250cm9sVmFsdWUpIGFzIEV4cHJlc3Npb25PclByaW1pdGl2ZTxzdHJpbmc+LCBcIjFcIilcblx0XHRcdClcblx0XHQpO1xuXHR9XG5cdHJldHVybiBvRmllbGRDb250cm9sVmFsdWUgPT09IFwiQ29tbW9uLkZpZWxkQ29udHJvbFR5cGUvUmVhZE9ubHlcIjtcbn07XG5cbi8qKlxuICogQ3JlYXRlIHRoZSBiaW5kaW5nIGV4cHJlc3Npb24gdG8gY2hlY2sgaWYgdGhlIHByb3BlcnR5IGlzIGRpc2FibGVkIG9yIG5vdC5cbiAqXG4gKiBAcGFyYW0ge29iamVjdH0gb1RhcmdldCBUaGUgdGFyZ2V0IHByb3BlcnR5IG9yIERhdGFGaWVsZFxuICogQHJldHVybnMge0V4cHJlc3Npb25PclByaW1pdGl2ZTxib29sZWFuPn0gVGhlIGJpbmRpbmcgZXhwcmVzc2lvbiByZXNvbHZpbmcgdG8gYSBCb29sZWFuIGJlaW5nIHRydWUgaWYgaXQncyBkaXNhYmxlZFxuICovXG5leHBvcnQgY29uc3QgaXNEaXNhYmxlZEV4cHJlc3Npb24gPSBmdW5jdGlvbihvVGFyZ2V0OiBhbnkpOiBFeHByZXNzaW9uT3JQcmltaXRpdmU8Ym9vbGVhbj4ge1xuXHRjb25zdCBvRmllbGRDb250cm9sVmFsdWUgPSBvVGFyZ2V0Py5hbm5vdGF0aW9ucz8uQ29tbW9uPy5GaWVsZENvbnRyb2w/LnZhbHVlT2YoKTtcblx0aWYgKHR5cGVvZiBvRmllbGRDb250cm9sVmFsdWUgPT09IFwib2JqZWN0XCIpIHtcblx0XHRyZXR1cm4gKFxuXHRcdFx0ISFvRmllbGRDb250cm9sVmFsdWUgJiZcblx0XHRcdG9yKFxuXHRcdFx0XHRlcXVhbChhbm5vdGF0aW9uRXhwcmVzc2lvbihvRmllbGRDb250cm9sVmFsdWUpIGFzIEV4cHJlc3Npb25PclByaW1pdGl2ZTxudW1iZXI+LCAwKSxcblx0XHRcdFx0ZXF1YWwoYW5ub3RhdGlvbkV4cHJlc3Npb24ob0ZpZWxkQ29udHJvbFZhbHVlKSBhcyBFeHByZXNzaW9uT3JQcmltaXRpdmU8c3RyaW5nPiwgXCIwXCIpXG5cdFx0XHQpXG5cdFx0KTtcblx0fVxuXHRyZXR1cm4gb0ZpZWxkQ29udHJvbFZhbHVlID09PSBcIkNvbW1vbi5GaWVsZENvbnRyb2xUeXBlL0luYXBwbGljYWJsZVwiO1xufTtcblxuLyoqXG4gKiBDcmVhdGUgdGhlIGJpbmRpbmcgZXhwcmVzc2lvbiB0byBjaGVjayBpZiB0aGUgcHJvcGVydHkgaXMgcmVhZCBvbmx5IG9yIG5vdC5cbiAqXG4gKiBAcGFyYW0ge29iamVjdH0gb1RhcmdldCBUaGUgdGFyZ2V0IHByb3BlcnR5IG9yIERhdGFGaWVsZFxuICogQHJldHVybnMge0V4cHJlc3Npb25PclByaW1pdGl2ZTxib29sZWFuPn0gVGhlIGJpbmRpbmcgZXhwcmVzc2lvbiByZXNvbHZpbmcgdG8gYSBCb29sZWFuIGJlaW5nIHRydWUgaWYgaXQncyByZWFkIG9ubHlcbiAqL1xuZXhwb3J0IGNvbnN0IGlzUmVxdWlyZWRFeHByZXNzaW9uID0gZnVuY3Rpb24ob1RhcmdldDogYW55KTogRXhwcmVzc2lvbk9yUHJpbWl0aXZlPGJvb2xlYW4+IHtcblx0Y29uc3Qgb0ZpZWxkQ29udHJvbFZhbHVlID0gb1RhcmdldD8uYW5ub3RhdGlvbnM/LkNvbW1vbj8uRmllbGRDb250cm9sPy52YWx1ZU9mKCk7XG5cdGlmICh0eXBlb2Ygb0ZpZWxkQ29udHJvbFZhbHVlID09PSBcIm9iamVjdFwiKSB7XG5cdFx0cmV0dXJuIChcblx0XHRcdCEhb0ZpZWxkQ29udHJvbFZhbHVlICYmXG5cdFx0XHRvcihcblx0XHRcdFx0ZXF1YWwoYW5ub3RhdGlvbkV4cHJlc3Npb24ob0ZpZWxkQ29udHJvbFZhbHVlKSBhcyBFeHByZXNzaW9uT3JQcmltaXRpdmU8bnVtYmVyPiwgNyksXG5cdFx0XHRcdGVxdWFsKGFubm90YXRpb25FeHByZXNzaW9uKG9GaWVsZENvbnRyb2xWYWx1ZSkgYXMgRXhwcmVzc2lvbk9yUHJpbWl0aXZlPHN0cmluZz4sIFwiN1wiKVxuXHRcdFx0KVxuXHRcdCk7XG5cdH1cblx0cmV0dXJuIG9GaWVsZENvbnRyb2xWYWx1ZSA9PT0gXCJDb21tb24uRmllbGRDb250cm9sVHlwZS9NYW5kYXRvcnlcIjtcbn07XG4iXX0=
90
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIkZpZWxkQ29udHJvbEhlbHBlci50cyJdLCJuYW1lcyI6WyJpc1JlYWRPbmx5RXhwcmVzc2lvbiIsIm9UYXJnZXQiLCJvRmllbGRDb250cm9sVmFsdWUiLCJhbm5vdGF0aW9ucyIsIkNvbW1vbiIsIkZpZWxkQ29udHJvbCIsInZhbHVlT2YiLCJvciIsImVxdWFsIiwiZ2V0RXhwcmVzc2lvbkZyb21Bbm5vdGF0aW9uIiwiY29uc3RhbnQiLCJpc0Rpc2FibGVkRXhwcmVzc2lvbiIsImlzTm9uRWRpdGFibGVFeHByZXNzaW9uIiwiaXNSZXF1aXJlZEV4cHJlc3Npb24iXSwibWFwcGluZ3MiOiI7QUFBQTtBQUNBO0FBQ0E7Ozs7Ozs7Ozs7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDTyxNQUFNQSxvQkFBb0IsR0FBRyxVQUFVQyxPQUFWLEVBQTJEO0FBQUE7O0FBQzlGLFFBQU1DLGtCQUFrQixHQUFHRCxPQUFILGFBQUdBLE9BQUgsK0NBQUdBLE9BQU8sQ0FBRUUsV0FBWixrRkFBRyxxQkFBc0JDLE1BQXpCLG9GQUFHLHNCQUE4QkMsWUFBakMsMkRBQUcsdUJBQTRDQyxPQUE1QyxFQUEzQjs7QUFDQSxRQUFJLE9BQU9KLGtCQUFQLEtBQThCLFFBQTlCLElBQTBDLENBQUMsQ0FBQ0Esa0JBQWhELEVBQW9FO0FBQ25FLGFBQU9LLEVBQUUsQ0FBQ0MsS0FBSyxDQUFDQywyQkFBMkIsQ0FBQ1Asa0JBQUQsQ0FBNUIsRUFBa0QsQ0FBbEQsQ0FBTixFQUE0RE0sS0FBSyxDQUFDQywyQkFBMkIsQ0FBQ1Asa0JBQUQsQ0FBNUIsRUFBa0QsR0FBbEQsQ0FBakUsQ0FBVDtBQUNBOztBQUNELFdBQU9RLFFBQVEsQ0FBQ1Isa0JBQWtCLEtBQUssa0NBQXhCLENBQWY7QUFDQSxHQU5NO0FBUVA7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7OztBQUNPLE1BQU1TLG9CQUFvQixHQUFHLFVBQVVWLE9BQVYsRUFBMkQ7QUFBQTs7QUFDOUYsUUFBTUMsa0JBQWtCLEdBQUdELE9BQUgsYUFBR0EsT0FBSCxnREFBR0EsT0FBTyxDQUFFRSxXQUFaLG1GQUFHLHNCQUFzQkMsTUFBekIsbUZBQUcsc0JBQThCQyxZQUFqQywwREFBRyxzQkFBNENDLE9BQTVDLEVBQTNCOztBQUNBLFFBQUksT0FBT0osa0JBQVAsS0FBOEIsUUFBOUIsSUFBMEMsQ0FBQyxDQUFDQSxrQkFBaEQsRUFBb0U7QUFDbkUsYUFBT0ssRUFBRSxDQUFDQyxLQUFLLENBQUNDLDJCQUEyQixDQUFDUCxrQkFBRCxDQUE1QixFQUFrRCxDQUFsRCxDQUFOLEVBQTRETSxLQUFLLENBQUNDLDJCQUEyQixDQUFDUCxrQkFBRCxDQUE1QixFQUFrRCxHQUFsRCxDQUFqRSxDQUFUO0FBQ0E7O0FBQ0QsV0FBT1EsUUFBUSxDQUFDUixrQkFBa0IsS0FBSyxzQ0FBeEIsQ0FBZjtBQUNBLEdBTk07QUFRUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7O0FBQ08sTUFBTVUsdUJBQXVCLEdBQUcsVUFBVVgsT0FBVixFQUEyRDtBQUNqRyxXQUFPTSxFQUFFLENBQUNQLG9CQUFvQixDQUFDQyxPQUFELENBQXJCLEVBQWdDVSxvQkFBb0IsQ0FBQ1YsT0FBRCxDQUFwRCxDQUFUO0FBQ0EsR0FGTTtBQUlQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7QUFDTyxNQUFNWSxvQkFBb0IsR0FBRyxVQUFVWixPQUFWLEVBQTJEO0FBQUE7O0FBQzlGLFFBQU1DLGtCQUFrQixHQUFHRCxPQUFILGFBQUdBLE9BQUgsZ0RBQUdBLE9BQU8sQ0FBRUUsV0FBWixtRkFBRyxzQkFBc0JDLE1BQXpCLG1GQUFHLHNCQUE4QkMsWUFBakMsMERBQUcsc0JBQTRDQyxPQUE1QyxFQUEzQjs7QUFDQSxRQUFJLE9BQU9KLGtCQUFQLEtBQThCLFFBQTlCLElBQTBDLENBQUMsQ0FBQ0Esa0JBQWhELEVBQW9FO0FBQ25FLGFBQU9LLEVBQUUsQ0FBQ0MsS0FBSyxDQUFDQywyQkFBMkIsQ0FBQ1Asa0JBQUQsQ0FBNUIsRUFBa0QsQ0FBbEQsQ0FBTixFQUE0RE0sS0FBSyxDQUFDQywyQkFBMkIsQ0FBQ1Asa0JBQUQsQ0FBNUIsRUFBa0QsR0FBbEQsQ0FBakUsQ0FBVDtBQUNBOztBQUNELFdBQU9RLFFBQVEsQ0FBQ1Isa0JBQWtCLEtBQUssbUNBQXhCLENBQWY7QUFDQSxHQU5NIiwic291cmNlUm9vdCI6Ii4iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbiB9IGZyb20gXCJzYXAvZmUvY29yZS9oZWxwZXJzL0JpbmRpbmdUb29sa2l0XCI7XG5pbXBvcnQgeyBjb25zdGFudCwgZXF1YWwsIGdldEV4cHJlc3Npb25Gcm9tQW5ub3RhdGlvbiwgb3IgfSBmcm9tIFwic2FwL2ZlL2NvcmUvaGVscGVycy9CaW5kaW5nVG9vbGtpdFwiO1xuXG4vKipcbiAqIENyZWF0ZSB0aGUgYmluZGluZyBleHByZXNzaW9uIHRvIGNoZWNrIGlmIHRoZSBwcm9wZXJ0eSBpcyByZWFkIG9ubHkgb3Igbm90LlxuICpcbiAqIEBwYXJhbSBvVGFyZ2V0IFRoZSB0YXJnZXQgcHJvcGVydHkgb3IgRGF0YUZpZWxkXG4gKiBAcmV0dXJucyBUaGUgYmluZGluZyBleHByZXNzaW9uIHJlc29sdmluZyB0byBhIEJvb2xlYW4gYmVpbmcgdHJ1ZSBpZiBpdCdzIHJlYWQgb25seVxuICovXG5leHBvcnQgY29uc3QgaXNSZWFkT25seUV4cHJlc3Npb24gPSBmdW5jdGlvbiAob1RhcmdldDogYW55KTogQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uPGJvb2xlYW4+IHtcblx0Y29uc3Qgb0ZpZWxkQ29udHJvbFZhbHVlID0gb1RhcmdldD8uYW5ub3RhdGlvbnM/LkNvbW1vbj8uRmllbGRDb250cm9sPy52YWx1ZU9mKCk7XG5cdGlmICh0eXBlb2Ygb0ZpZWxkQ29udHJvbFZhbHVlID09PSBcIm9iamVjdFwiICYmICEhb0ZpZWxkQ29udHJvbFZhbHVlKSB7XG5cdFx0cmV0dXJuIG9yKGVxdWFsKGdldEV4cHJlc3Npb25Gcm9tQW5ub3RhdGlvbihvRmllbGRDb250cm9sVmFsdWUpLCAxKSwgZXF1YWwoZ2V0RXhwcmVzc2lvbkZyb21Bbm5vdGF0aW9uKG9GaWVsZENvbnRyb2xWYWx1ZSksIFwiMVwiKSk7XG5cdH1cblx0cmV0dXJuIGNvbnN0YW50KG9GaWVsZENvbnRyb2xWYWx1ZSA9PT0gXCJDb21tb24uRmllbGRDb250cm9sVHlwZS9SZWFkT25seVwiKTtcbn07XG5cbi8qKlxuICogQ3JlYXRlIHRoZSBiaW5kaW5nIGV4cHJlc3Npb24gdG8gY2hlY2sgaWYgdGhlIHByb3BlcnR5IGlzIGRpc2FibGVkIG9yIG5vdC5cbiAqXG4gKiBAcGFyYW0gb1RhcmdldCBUaGUgdGFyZ2V0IHByb3BlcnR5IG9yIERhdGFGaWVsZFxuICogQHJldHVybnMgVGhlIGJpbmRpbmcgZXhwcmVzc2lvbiByZXNvbHZpbmcgdG8gYSBCb29sZWFuIGJlaW5nIHRydWUgaWYgaXQncyBkaXNhYmxlZFxuICovXG5leHBvcnQgY29uc3QgaXNEaXNhYmxlZEV4cHJlc3Npb24gPSBmdW5jdGlvbiAob1RhcmdldDogYW55KTogQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uPGJvb2xlYW4+IHtcblx0Y29uc3Qgb0ZpZWxkQ29udHJvbFZhbHVlID0gb1RhcmdldD8uYW5ub3RhdGlvbnM/LkNvbW1vbj8uRmllbGRDb250cm9sPy52YWx1ZU9mKCk7XG5cdGlmICh0eXBlb2Ygb0ZpZWxkQ29udHJvbFZhbHVlID09PSBcIm9iamVjdFwiICYmICEhb0ZpZWxkQ29udHJvbFZhbHVlKSB7XG5cdFx0cmV0dXJuIG9yKGVxdWFsKGdldEV4cHJlc3Npb25Gcm9tQW5ub3RhdGlvbihvRmllbGRDb250cm9sVmFsdWUpLCAwKSwgZXF1YWwoZ2V0RXhwcmVzc2lvbkZyb21Bbm5vdGF0aW9uKG9GaWVsZENvbnRyb2xWYWx1ZSksIFwiMFwiKSk7XG5cdH1cblx0cmV0dXJuIGNvbnN0YW50KG9GaWVsZENvbnRyb2xWYWx1ZSA9PT0gXCJDb21tb24uRmllbGRDb250cm9sVHlwZS9JbmFwcGxpY2FibGVcIik7XG59O1xuXG4vKipcbiAqIENyZWF0ZSB0aGUgYmluZGluZyBleHByZXNzaW9uIHRvIGNoZWNrIGlmIHRoZSBwcm9wZXJ0eSBpcyBub24gZWRpdGFibGUgb3Igbm90LlxuICpcbiAqIEBwYXJhbSBvVGFyZ2V0IFRoZSB0YXJnZXQgcHJvcGVydHkgb3IgRGF0YUZpZWxkXG4gKiBAcmV0dXJucyBUaGUgYmluZGluZyBleHByZXNzaW9uIHJlc29sdmluZyB0byBhIEJvb2xlYW4gYmVpbmcgdHJ1ZSBpZiBpdCdzIG5vbiBlZGl0YWJsZVxuICovXG5leHBvcnQgY29uc3QgaXNOb25FZGl0YWJsZUV4cHJlc3Npb24gPSBmdW5jdGlvbiAob1RhcmdldDogYW55KTogQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uPGJvb2xlYW4+IHtcblx0cmV0dXJuIG9yKGlzUmVhZE9ubHlFeHByZXNzaW9uKG9UYXJnZXQpLCBpc0Rpc2FibGVkRXhwcmVzc2lvbihvVGFyZ2V0KSk7XG59O1xuXG4vKipcbiAqIENyZWF0ZSB0aGUgYmluZGluZyBleHByZXNzaW9uIHRvIGNoZWNrIGlmIHRoZSBwcm9wZXJ0eSBpcyByZWFkIG9ubHkgb3Igbm90LlxuICpcbiAqIEBwYXJhbSBvVGFyZ2V0IFRoZSB0YXJnZXQgcHJvcGVydHkgb3IgRGF0YUZpZWxkXG4gKiBAcmV0dXJucyBUaGUgYmluZGluZyBleHByZXNzaW9uIHJlc29sdmluZyB0byBhIEJvb2xlYW4gYmVpbmcgdHJ1ZSBpZiBpdCdzIHJlYWQgb25seVxuICovXG5leHBvcnQgY29uc3QgaXNSZXF1aXJlZEV4cHJlc3Npb24gPSBmdW5jdGlvbiAob1RhcmdldDogYW55KTogQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uPGJvb2xlYW4+IHtcblx0Y29uc3Qgb0ZpZWxkQ29udHJvbFZhbHVlID0gb1RhcmdldD8uYW5ub3RhdGlvbnM/LkNvbW1vbj8uRmllbGRDb250cm9sPy52YWx1ZU9mKCk7XG5cdGlmICh0eXBlb2Ygb0ZpZWxkQ29udHJvbFZhbHVlID09PSBcIm9iamVjdFwiICYmICEhb0ZpZWxkQ29udHJvbFZhbHVlKSB7XG5cdFx0cmV0dXJuIG9yKGVxdWFsKGdldEV4cHJlc3Npb25Gcm9tQW5ub3RhdGlvbihvRmllbGRDb250cm9sVmFsdWUpLCA3KSwgZXF1YWwoZ2V0RXhwcmVzc2lvbkZyb21Bbm5vdGF0aW9uKG9GaWVsZENvbnRyb2xWYWx1ZSksIFwiN1wiKSk7XG5cdH1cblx0cmV0dXJuIGNvbnN0YW50KG9GaWVsZENvbnRyb2xWYWx1ZSA9PT0gXCJDb21tb24uRmllbGRDb250cm9sVHlwZS9NYW5kYXRvcnlcIik7XG59O1xuIl19
@@ -1,71 +1,54 @@
1
- import { equal, Expression, ExpressionOrPrimitive, or, annotationExpression } from "sap/fe/core/helpers/BindingExpression";
1
+ import type { BindingToolkitExpression } from "sap/fe/core/helpers/BindingToolkit";
2
+ import { constant, equal, getExpressionFromAnnotation, or } from "sap/fe/core/helpers/BindingToolkit";
2
3
 
3
4
  /**
4
- * Create the binding expression to check if the property is non editable or not.
5
+ * Create the binding expression to check if the property is read only or not.
5
6
  *
6
- * @param {object} oTarget The target property or DataField
7
- * @returns {ExpressionOrPrimitive<boolean>} The binding expression resolving to a Boolean being true if it's non editable
7
+ * @param oTarget The target property or DataField
8
+ * @returns The binding expression resolving to a Boolean being true if it's read only
8
9
  */
9
- export const isNonEditableExpression = function(oTarget: any): Expression<boolean> {
10
- return or(isReadOnlyExpression(oTarget), isDisabledExpression(oTarget));
10
+ export const isReadOnlyExpression = function (oTarget: any): BindingToolkitExpression<boolean> {
11
+ const oFieldControlValue = oTarget?.annotations?.Common?.FieldControl?.valueOf();
12
+ if (typeof oFieldControlValue === "object" && !!oFieldControlValue) {
13
+ return or(equal(getExpressionFromAnnotation(oFieldControlValue), 1), equal(getExpressionFromAnnotation(oFieldControlValue), "1"));
14
+ }
15
+ return constant(oFieldControlValue === "Common.FieldControlType/ReadOnly");
11
16
  };
12
17
 
13
18
  /**
14
- * Create the binding expression to check if the property is read only or not.
19
+ * Create the binding expression to check if the property is disabled or not.
15
20
  *
16
- * @param {object} oTarget The target property or DataField
17
- * @returns {ExpressionOrPrimitive<boolean>} The binding expression resolving to a Boolean being true if it's read only
21
+ * @param oTarget The target property or DataField
22
+ * @returns The binding expression resolving to a Boolean being true if it's disabled
18
23
  */
19
- export const isReadOnlyExpression = function(oTarget: any): ExpressionOrPrimitive<boolean> {
24
+ export const isDisabledExpression = function (oTarget: any): BindingToolkitExpression<boolean> {
20
25
  const oFieldControlValue = oTarget?.annotations?.Common?.FieldControl?.valueOf();
21
- if (typeof oFieldControlValue === "object") {
22
- return (
23
- !!oFieldControlValue &&
24
- or(
25
- equal(annotationExpression(oFieldControlValue) as ExpressionOrPrimitive<number>, 1),
26
- equal(annotationExpression(oFieldControlValue) as ExpressionOrPrimitive<string>, "1")
27
- )
28
- );
26
+ if (typeof oFieldControlValue === "object" && !!oFieldControlValue) {
27
+ return or(equal(getExpressionFromAnnotation(oFieldControlValue), 0), equal(getExpressionFromAnnotation(oFieldControlValue), "0"));
29
28
  }
30
- return oFieldControlValue === "Common.FieldControlType/ReadOnly";
29
+ return constant(oFieldControlValue === "Common.FieldControlType/Inapplicable");
31
30
  };
32
31
 
33
32
  /**
34
- * Create the binding expression to check if the property is disabled or not.
33
+ * Create the binding expression to check if the property is non editable or not.
35
34
  *
36
- * @param {object} oTarget The target property or DataField
37
- * @returns {ExpressionOrPrimitive<boolean>} The binding expression resolving to a Boolean being true if it's disabled
35
+ * @param oTarget The target property or DataField
36
+ * @returns The binding expression resolving to a Boolean being true if it's non editable
38
37
  */
39
- export const isDisabledExpression = function(oTarget: any): ExpressionOrPrimitive<boolean> {
40
- const oFieldControlValue = oTarget?.annotations?.Common?.FieldControl?.valueOf();
41
- if (typeof oFieldControlValue === "object") {
42
- return (
43
- !!oFieldControlValue &&
44
- or(
45
- equal(annotationExpression(oFieldControlValue) as ExpressionOrPrimitive<number>, 0),
46
- equal(annotationExpression(oFieldControlValue) as ExpressionOrPrimitive<string>, "0")
47
- )
48
- );
49
- }
50
- return oFieldControlValue === "Common.FieldControlType/Inapplicable";
38
+ export const isNonEditableExpression = function (oTarget: any): BindingToolkitExpression<boolean> {
39
+ return or(isReadOnlyExpression(oTarget), isDisabledExpression(oTarget));
51
40
  };
52
41
 
53
42
  /**
54
43
  * Create the binding expression to check if the property is read only or not.
55
44
  *
56
- * @param {object} oTarget The target property or DataField
57
- * @returns {ExpressionOrPrimitive<boolean>} The binding expression resolving to a Boolean being true if it's read only
45
+ * @param oTarget The target property or DataField
46
+ * @returns The binding expression resolving to a Boolean being true if it's read only
58
47
  */
59
- export const isRequiredExpression = function(oTarget: any): ExpressionOrPrimitive<boolean> {
48
+ export const isRequiredExpression = function (oTarget: any): BindingToolkitExpression<boolean> {
60
49
  const oFieldControlValue = oTarget?.annotations?.Common?.FieldControl?.valueOf();
61
- if (typeof oFieldControlValue === "object") {
62
- return (
63
- !!oFieldControlValue &&
64
- or(
65
- equal(annotationExpression(oFieldControlValue) as ExpressionOrPrimitive<number>, 7),
66
- equal(annotationExpression(oFieldControlValue) as ExpressionOrPrimitive<string>, "7")
67
- )
68
- );
50
+ if (typeof oFieldControlValue === "object" && !!oFieldControlValue) {
51
+ return or(equal(getExpressionFromAnnotation(oFieldControlValue), 7), equal(getExpressionFromAnnotation(oFieldControlValue), "7"));
69
52
  }
70
- return oFieldControlValue === "Common.FieldControlType/Mandatory";
53
+ return constant(oFieldControlValue === "Common.FieldControlType/Mandatory");
71
54
  };
@@ -35,11 +35,11 @@ sap.ui.define(["sap/base/Log", "sap/ui/mdc/condition/Condition", "sap/ui/mdc/enu
35
35
  if (sValue.match(/^(\d{4})-(\d{1,2})-(\d{1,2})T(\d{1,2}):(\d{1,2}):(\d{1,2})\+(\d{1,4})/)) {
36
36
  oValue = sValue.match(/^(\d{4})-(\d{1,2})-(\d{1,2})T(\d{1,2}):(\d{1,2}):(\d{1,2})\+(\d{1,4})/)[0];
37
37
  } else if (sValue.match(/^(\d{4})-(\d{1,2})-(\d{1,2})T(\d{1,2}):(\d{1,2}):(\d{1,2})/)) {
38
- oValue = sValue.match(/^(\d{4})-(\d{1,2})-(\d{1,2})T(\d{1,2}):(\d{1,2}):(\d{1,2})/)[0] + "+0000";
38
+ oValue = "".concat(sValue.match(/^(\d{4})-(\d{1,2})-(\d{1,2})T(\d{1,2}):(\d{1,2}):(\d{1,2})/)[0], "+0000");
39
39
  } else if (sValue.match(/^(\d{4})-(\d{1,2})-(\d{1,2})/)) {
40
- oValue = sValue.match(/^(\d{4})-(\d{1,2})-(\d{1,2})/)[0] + "T00:00:00+0000";
40
+ oValue = "".concat(sValue.match(/^(\d{4})-(\d{1,2})-(\d{1,2})/)[0], "T00:00:00+0000");
41
41
  } else if (sValue.indexOf("Z") === sValue.length - 1) {
42
- oValue = sValue.split("Z")[0] + "+0100";
42
+ oValue = "".concat(sValue.split("Z")[0], "+0100");
43
43
  } else {
44
44
  oValue = undefined;
45
45
  }
@@ -108,6 +108,7 @@ sap.ui.define(["sap/base/Log", "sap/ui/mdc/condition/Condition", "sap/ui/mdc/enu
108
108
  }
109
109
  /**
110
110
  * Method to create a condition.
111
+ *
111
112
  * @param sOption Operator to be used.
112
113
  * @param oV1 Lower value
113
114
  * @param oV2 Higher value
@@ -181,7 +182,7 @@ sap.ui.define(["sap/base/Log", "sap/ui/mdc/condition/Condition", "sap/ui/mdc/enu
181
182
  break;
182
183
 
183
184
  default:
184
- Log.warning("Selection Option is not supported : '" + sOption + "'");
185
+ Log.warning("Selection Option is not supported : '".concat(sOption, "'"));
185
186
  return;
186
187
  }
187
188
 
@@ -227,7 +228,7 @@ sap.ui.define(["sap/base/Log", "sap/ui/mdc/condition/Condition", "sap/ui/mdc/enu
227
228
  function _getProperty(propertyName, metaModel, entitySetPath) {
228
229
  var lastSlashIndex = propertyName.lastIndexOf("/");
229
230
  var navigationPath = lastSlashIndex > -1 ? propertyName.substring(0, propertyName.lastIndexOf("/") + 1) : "";
230
- var collection = metaModel.getObject(entitySetPath + "/" + navigationPath);
231
+ var collection = metaModel.getObject("".concat(entitySetPath, "/").concat(navigationPath));
231
232
  return collection === null || collection === void 0 ? void 0 : collection[propertyName.replace(navigationPath, "")];
232
233
  }
233
234
 
@@ -315,7 +316,7 @@ sap.ui.define(["sap/base/Log", "sap/ui/mdc/condition/Condition", "sap/ui/mdc/enu
315
316
 
316
317
  if (properties) {
317
318
  for (var key in properties) {
318
- var defaultFilterValue = oMetaModel.getObject(entitySetPath + "/" + key + "@com.sap.vocabularies.Common.v1.FilterDefaultValue");
319
+ var defaultFilterValue = oMetaModel.getObject("".concat(entitySetPath, "/").concat(key, "@com.sap.vocabularies.Common.v1.FilterDefaultValue"));
319
320
 
320
321
  if (defaultFilterValue !== undefined) {
321
322
  var PropertyName = key;
@@ -354,8 +355,8 @@ sap.ui.define(["sap/base/Log", "sap/ui/mdc/condition/Condition", "sap/ui/mdc/enu
354
355
  var editStateFilter;
355
356
  var entitySetPath = oContext.getInterface(1).getPath(),
356
357
  oMetaModel = oContext.getInterface(1).getModel(),
357
- entityTypeAnnotations = oMetaModel.getObject(entitySetPath + "@"),
358
- entityTypeProperties = oMetaModel.getObject(entitySetPath + "/");
358
+ entityTypeAnnotations = oMetaModel.getObject("".concat(entitySetPath, "@")),
359
+ entityTypeProperties = oMetaModel.getObject("".concat(entitySetPath, "/"));
359
360
 
360
361
  if (entityTypeAnnotations["@com.sap.vocabularies.Common.v1.DraftRoot"] || entityTypeAnnotations["@com.sap.vocabularies.Common.v1.DraftNode"]) {
361
362
  editStateFilter = getEditStatusFilter();
@@ -390,4 +391,4 @@ sap.ui.define(["sap/base/Log", "sap/ui/mdc/condition/Condition", "sap/ui/mdc/enu
390
391
  getFilterConditions.requiresIContext = true;
391
392
  return _exports;
392
393
  }, false);
393
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIkZpbHRlckhlbHBlci50cyJdLCJuYW1lcyI6WyJhVmFsaWRUeXBlcyIsIm9FeGNsdWRlTWFwIiwiX2dldERhdGVUaW1lT2Zmc2V0Q29tcGxpYW50VmFsdWUiLCJzVmFsdWUiLCJvVmFsdWUiLCJtYXRjaCIsImluZGV4T2YiLCJsZW5ndGgiLCJzcGxpdCIsInVuZGVmaW5lZCIsIl9nZXREYXRlQ29tcGxpYW50VmFsdWUiLCJnZXRUeXBlQ29tcGxpYW50VmFsdWUiLCJzVHlwZSIsImlzTmFOIiwicGFyc2VGbG9hdCIsInBhcnNlSW50IiwicmVzb2x2ZUNvbmRpdGlvblZhbHVlcyIsInNPcHRpb24iLCJvVjEiLCJvVjIiLCJzU2lnbiIsIm9WYWx1ZTIiLCJzSW50ZXJuYWxPcGVyYXRpb24iLCJvQ29uZGl0aW9uIiwidmFsdWVzIiwiaXNFbXB0eSIsIm5JbmRleE9mIiwibkxhc3RJbmRleCIsImxhc3RJbmRleE9mIiwic3Vic3RyaW5nIiwiTG9nIiwid2FybmluZyIsIm9wZXJhdG9yIiwicHVzaCIsImdldE9wZXJhdG9yIiwic09wZXJhdG9yIiwiX2J1aWxkQ29uZGl0aW9uc0Zyb21TZWxlY3Rpb25SYW5nZXMiLCJSYW5nZXMiLCJvUHJvcGVydHkiLCJzUHJvcGVydHlOYW1lIiwiZ2V0Q3VzdG9tQ29uZGl0aW9ucyIsImFDb25kaXRpb25zIiwiZm9yRWFjaCIsIlJhbmdlIiwiZ2V0Q29uZGl0aW9ucyIsIl9nZXRQcm9wZXJ0eSIsInByb3BlcnR5TmFtZSIsIm1ldGFNb2RlbCIsImVudGl0eVNldFBhdGgiLCJsYXN0U2xhc2hJbmRleCIsIm5hdmlnYXRpb25QYXRoIiwiY29sbGVjdGlvbiIsImdldE9iamVjdCIsInJlcGxhY2UiLCJfYnVpbGRGaWx0ZXJzQ29uZGl0aW9uc0Zyb21TZWxlY3RPcHRpb24iLCJzZWxlY3RPcHRpb24iLCJQcm9wZXJ0eU5hbWUiLCJmaWx0ZXJDb25kaXRpb25zIiwicHJvcGVydHlQYXRoIiwidmFsdWUiLCIkUHJvcGVydHlQYXRoIiwidGFyZ2V0UHJvcGVydHkiLCJjb25kaXRpb25zIiwiY29uY2F0IiwiZ2V0RmlsdGVyc0NvbmRpdGlvbnNGcm9tU2VsZWN0aW9uVmFyaWFudCIsInNFbnRpdHlTZXRQYXRoIiwib01ldGFNb2RlbCIsInNlbGVjdGlvblZhcmlhbnQiLCJvRmlsdGVyQ29uZGl0aW9ucyIsImFTZWxlY3RPcHRpb25zIiwiU2VsZWN0T3B0aW9ucyIsImFQYXJhbWV0ZXJzIiwiUGFyYW1ldGVycyIsIk9iamVjdCIsImtleXMiLCJpbmNsdWRlcyIsInBhcmFtZXRlciIsInNQcm9wZXJ0eVBhdGgiLCJ2YWx1ZTEiLCJQcm9wZXJ0eVZhbHVlIiwidmFsdWUyIiwicGF0aCIsImlzUGFyYW1ldGVyIiwidmFsaWRhdGVkIiwiQ29uZGl0aW9uVmFsaWRhdGVkIiwiVmFsaWRhdGVkIiwib1ZhbGlkUHJvcGVydHkiLCJzaWduIiwiU2lnbiIsIk9wdGlvbiIsIm9WYWx1ZTEiLCJMb3ciLCIkVHlwZSIsInR5cGUiLCJIaWdoIiwib0NvbmRpdGlvblZhbHVlcyIsIkNvbmRpdGlvbiIsImNyZWF0ZUNvbmRpdGlvbiIsImdldERlZmF1bHRWYWx1ZUZpbHRlcnMiLCJvQ29udGV4dCIsInByb3BlcnRpZXMiLCJnZXRJbnRlcmZhY2UiLCJnZXRQYXRoIiwiZ2V0TW9kZWwiLCJrZXkiLCJkZWZhdWx0RmlsdGVyVmFsdWUiLCJnZXREZWZhdWx0U2VtYW50aWNEYXRlRmlsdGVycyIsImRlZmF1bHRTZW1hbnRpY0RhdGVzIiwiZ2V0RWRpdFN0YXR1c0ZpbHRlciIsIm9maWx0ZXJDb25kaXRpb25zIiwiZ2V0RmlsdGVyQ29uZGl0aW9ucyIsImVkaXRTdGF0ZUZpbHRlciIsImVudGl0eVR5cGVBbm5vdGF0aW9ucyIsImVudGl0eVR5cGVQcm9wZXJ0aWVzIiwiZGVmYXVsdEZpbHRlcnMiLCJkZWZhdWx0U2VtYW50aWNEYXRlRmlsdGVycyIsIkpTT04iLCJzdHJpbmdpZnkiLCJyZXF1aXJlc0lDb250ZXh0Il0sIm1hcHBpbmdzIjoiO0FBQUE7QUFDQTtBQUNB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LENBQXZDLEdBQTJDNkcsSUFBSSxDQUFDQyxTQUFMLENBQWU1RCxnQkFBZixFQUFpQ0osT0FBakMsQ0FBeUMsV0FBekMsRUFBc0QsTUFBdEQsQ0FBM0MsR0FBMkc1QyxTQUFuSDtBQUNBOzs7QUFFRHFHLEVBQUFBLG1CQUFtQixDQUFDUSxnQkFBcEIsR0FBdUMsSUFBdkMiLCJzb3VyY2VSb290IjoiLiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFNlbGVjdGlvblJhbmdlVHlwZVR5cGVzLCBTZWxlY3Rpb25WYXJpYW50VHlwZVR5cGVzLCBTZWxlY3RPcHRpb25UeXBlIH0gZnJvbSBcIkBzYXAtdXgvdm9jYWJ1bGFyaWVzLXR5cGVzL2Rpc3QvZ2VuZXJhdGVkL1VJXCI7XG5pbXBvcnQgTG9nIGZyb20gXCJzYXAvYmFzZS9Mb2dcIjtcbmltcG9ydCBDb25kaXRpb24sIHsgQ29uZGl0aW9uT2JqZWN0IH0gZnJvbSBcInNhcC91aS9tZGMvY29uZGl0aW9uL0NvbmRpdGlvblwiO1xuaW1wb3J0IENvbmRpdGlvblZhbGlkYXRlZCBmcm9tIFwic2FwL3VpL21kYy9lbnVtL0NvbmRpdGlvblZhbGlkYXRlZFwiO1xuaW1wb3J0IE9EYXRhTWV0YU1vZGVsIGZyb20gXCJzYXAvdWkvbW9kZWwvb2RhdGEvdjQvT0RhdGFNZXRhTW9kZWxcIjtcbmV4cG9ydCB0eXBlIEZpbHRlckNvbmRpdGlvbnMgPSB7XG5cdG9wZXJhdG9yOiBzdHJpbmc7XG5cdHZhbHVlczogQXJyYXk8c3RyaW5nPjtcblx0aXNFbXB0eT86IGJvb2xlYW4gfCBudWxsO1xuXHR2YWxpZGF0ZWQ/OiBzdHJpbmc7XG59O1xuXG5jb25zdCBhVmFsaWRUeXBlcyA9IFtcblx0XCJFZG0uQm9vbGVhblwiLFxuXHRcIkVkbS5CeXRlXCIsXG5cdFwiRWRtLkRhdGVcIixcblx0XCJFZG0uRGF0ZVRpbWVcIixcblx0XCJFZG0uRGF0ZVRpbWVPZmZzZXRcIixcblx0XCJFZG0uRGVjaW1hbFwiLFxuXHRcIkVkbS5Eb3VibGVcIixcblx0XCJFZG0uRmxvYXRcIixcblx0XCJFZG0uR3VpZFwiLFxuXHRcIkVkbS5JbnQxNlwiLFxuXHRcIkVkbS5JbnQzMlwiLFxuXHRcIkVkbS5JbnQ2NFwiLFxuXHRcIkVkbS5TQnl0ZVwiLFxuXHRcIkVkbS5TaW5nbGVcIixcblx0XCJFZG0uU3RyaW5nXCIsXG5cdFwiRWRtLlRpbWVcIixcblx0XCJFZG0uVGltZU9mRGF5XCJcbl07XG5cbmNvbnN0IG9FeGNsdWRlTWFwOiBSZWNvcmQ8c3RyaW5nLCBhbnk+ID0ge1xuXHRcIkNvbnRhaW5zXCI6IFwiTm90Q29udGFpbnNcIixcblx0XCJTdGFydHNXaXRoXCI6IFwiTm90U3RhcnRzV2l0aFwiLFxuXHRcIkVuZHNXaXRoXCI6IFwiTm90RW5kc1dpdGhcIixcblx0XCJFbXB0eVwiOiBcIk5vdEVtcHR5XCIsXG5cdFwiTm90RW1wdHlcIjogXCJFbXB0eVwiLFxuXHRcIkxFXCI6IFwiTk9UTEVcIixcblx0XCJHRVwiOiBcIk5PVEdFXCIsXG5cdFwiTFRcIjogXCJOT1RMVFwiLFxuXHRcIkdUXCI6IFwiTk9UR1RcIixcblx0XCJCVFwiOiBcIk5PVEJUXCIsXG5cdFwiTkVcIjogXCJFUVwiLFxuXHRcIkVRXCI6IFwiTkVcIlxufTtcblxuZXhwb3J0IGZ1bmN0aW9uIF9nZXREYXRlVGltZU9mZnNldENvbXBsaWFudFZhbHVlKHNWYWx1ZTogYW55KTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcblx0bGV0IG9WYWx1ZTtcblx0aWYgKHNWYWx1ZS5tYXRjaCgvXihcXGR7NH0pLShcXGR7MSwyfSktKFxcZHsxLDJ9KVQoXFxkezEsMn0pOihcXGR7MSwyfSk6KFxcZHsxLDJ9KVxcKyhcXGR7MSw0fSkvKSkge1xuXHRcdG9WYWx1ZSA9IHNWYWx1ZS5tYXRjaCgvXihcXGR7NH0pLShcXGR7MSwyfSktKFxcZHsxLDJ9KVQoXFxkezEsMn0pOihcXGR7MSwyfSk6KFxcZHsxLDJ9KVxcKyhcXGR7MSw0fSkvKVswXTtcblx0fSBlbHNlIGlmIChzVmFsdWUubWF0Y2goL14oXFxkezR9KS0oXFxkezEsMn0pLShcXGR7MSwyfSlUKFxcZHsxLDJ9KTooXFxkezEsMn0pOihcXGR7MSwyfSkvKSkge1xuXHRcdG9WYWx1ZSA9IHNWYWx1ZS5tYXRjaCgvXihcXGR7NH0pLShcXGR7MSwyfSktKFxcZHsxLDJ9KVQoXFxkezEsMn0pOihcXGR7MSwyfSk6KFxcZHsxLDJ9KS8pWzBdICsgXCIrMDAwMFwiO1xuXHR9IGVsc2UgaWYgKHNWYWx1ZS5tYXRjaCgvXihcXGR7NH0pLShcXGR7MSwyfSktKFxcZHsxLDJ9KS8pKSB7XG5cdFx0b1ZhbHVlID0gc1ZhbHVlLm1hdGNoKC9eKFxcZHs0fSktKFxcZHsxLDJ9KS0oXFxkezEsMn0pLylbMF0gKyBcIlQwMDowMDowMCswMDAwXCI7XG5cdH0gZWxzZSBpZiAoc1ZhbHVlLmluZGV4T2YoXCJaXCIpID09PSBzVmFsdWUubGVuZ3RoIC0gMSkge1xuXHRcdG9WYWx1ZSA9IHNWYWx1ZS5zcGxpdChcIlpcIilbMF0gKyBcIiswMTAwXCI7XG5cdH0gZWxzZSB7XG5cdFx0b1ZhbHVlID0gdW5kZWZpbmVkO1xuXHR9XG5cdHJldHVybiBvVmFsdWU7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBfZ2V0RGF0ZUNvbXBsaWFudFZhbHVlKHNWYWx1ZTogYW55KTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcblx0cmV0dXJuIHNWYWx1ZS5tYXRjaCgvXihcXGR7NH0pLShcXGR7MSwyfSktKFxcZHsxLDJ9KS8pXG5cdFx0PyBzVmFsdWUubWF0Y2goL14oXFxkezR9KS0oXFxkezEsMn0pLShcXGR7MSwyfSkvKVswXVxuXHRcdDogc1ZhbHVlLm1hdGNoKC9eKFxcZHs4fSkvKSAmJiBzVmFsdWUubWF0Y2goL14oXFxkezh9KS8pWzBdO1xufVxuXG4vKipcbiAqIE1ldGhvZCB0byBnZXQgdGhlIGNvbXBsaWFudCB2YWx1ZSB0eXBlIGJhc2VkIG9uIHRoZSBkYXRhIHR5cGUuXG4gKlxuICogQHBhcmFtICBzVmFsdWUgUmF3IHZhbHVlXG4gKiBAcGFyYW0gIHNUeXBlIFRoZSBwcm9wZXJ0eSB0eXBlXG4gKiBAcmV0dXJucyBWYWx1ZSB0byBiZSBwcm9wYWdhdGVkIHRvIHRoZSBjb25kaXRpb24uXG4gKi9cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFR5cGVDb21wbGlhbnRWYWx1ZShzVmFsdWU6IGFueSwgc1R5cGU6IHN0cmluZyk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG5cdGxldCBvVmFsdWU7XG5cdGlmIChhVmFsaWRUeXBlcy5pbmRleE9mKHNUeXBlKSA9PT0gLTEpIHtcblx0XHRyZXR1cm4gdW5kZWZpbmVkO1xuXHR9XG5cdG9WYWx1ZSA9IHNWYWx1ZTtcblx0c3dpdGNoIChzVHlwZSkge1xuXHRcdGNhc2UgXCJFZG0uQm9vbGVhblwiOlxuXHRcdFx0b1ZhbHVlID0gc1ZhbHVlID09PSBcInRydWVcIiB8fCAoc1ZhbHVlID09PSBcImZhbHNlXCIgPyBmYWxzZSA6IHVuZGVmaW5lZCk7XG5cdFx0XHRicmVhaztcblx0XHRjYXNlIFwiRWRtLkRvdWJsZVwiOlxuXHRcdGNhc2UgXCJFZG0uU2luZ2xlXCI6XG5cdFx0XHRvVmFsdWUgPSBpc05hTihzVmFsdWUpID8gdW5kZWZpbmVkIDogcGFyc2VGbG9hdChzVmFsdWUpO1xuXHRcdFx0YnJlYWs7XG5cdFx0Y2FzZSBcIkVkbS5CeXRlXCI6XG5cdFx0Y2FzZSBcIkVkbS5JbnQxNlwiOlxuXHRcdGNhc2UgXCJFZG0uSW50MzJcIjpcblx0XHRjYXNlIFwiRWRtLlNCeXRlXCI6XG5cdFx0XHRvVmFsdWUgPSBpc05hTihzVmFsdWUpID8gdW5kZWZpbmVkIDogcGFyc2VJbnQoc1ZhbHVlLCAxMCk7XG5cdFx0XHRicmVhaztcblx0XHRjYXNlIFwiRWRtLkRhdGVcIjpcblx0XHRcdG9WYWx1ZSA9IF9nZXREYXRlQ29tcGxpYW50VmFsdWUoc1ZhbHVlKTtcblx0XHRcdGJyZWFrO1xuXHRcdGNhc2UgXCJFZG0uRGF0ZVRpbWVPZmZzZXRcIjpcblx0XHRcdG9WYWx1ZSA9IF9nZXREYXRlVGltZU9mZnNldENvbXBsaWFudFZhbHVlKHNWYWx1ZSk7XG5cdFx0XHRicmVhaztcblx0XHRjYXNlIFwiRWRtLlRpbWVPZkRheVwiOlxuXHRcdFx0b1ZhbHVlID0gc1ZhbHVlLm1hdGNoKC8oXFxkezEsMn0pOihcXGR7MSwyfSk6KFxcZHsxLDJ9KS8pID8gc1ZhbHVlLm1hdGNoKC8oXFxkezEsMn0pOihcXGR7MSwyfSk6KFxcZHsxLDJ9KS8pWzBdIDogdW5kZWZpbmVkO1xuXHRcdFx0YnJlYWs7XG5cdFx0ZGVmYXVsdDpcblx0fVxuXG5cdHJldHVybiBvVmFsdWUgPT09IG51bGwgPyB1bmRlZmluZWQgOiBvVmFsdWU7XG59XG5cbi8qKlxuICogTWV0aG9kIHRvIGNyZWF0ZSBhIGNvbmRpdGlvbi5cbiAqIEBwYXJhbSAgc09wdGlvbiBPcGVyYXRvciB0byBiZSB1c2VkLlxuICogQHBhcmFtICBvVjEgTG93ZXIgdmFsdWVcbiAqIEBwYXJhbSAgb1YyIEhpZ2hlciB2YWx1ZVxuICogQHBhcmFtIHNTaWduXG4gKiBAcmV0dXJucyBDb25kaXRpb24gdG8gYmUgY3JlYXRlZFxuICovXG5leHBvcnQgZnVuY3Rpb24gcmVzb2x2ZUNvbmRpdGlvblZhbHVlcyhzT3B0aW9uOiBzdHJpbmcgfCB1bmRlZmluZWQsIG9WMTogYW55LCBvVjI6IGFueSwgc1NpZ246IHN0cmluZyB8IHVuZGVmaW5lZCkge1xuXHRsZXQgb1ZhbHVlID0gb1YxLFxuXHRcdG9WYWx1ZTIsXG5cdFx0c0ludGVybmFsT3BlcmF0aW9uOiBhbnk7XG5cdGNvbnN0IG9Db25kaXRpb246IFJlY29yZDxzdHJpbmcsIEZpbHRlckNvbmRpdGlvbnNbXT4gPSB7fTtcblx0b0NvbmRpdGlvbi52YWx1ZXMgPSBbXTtcblx0b0NvbmRpdGlvbi5pc0VtcHR5ID0gbnVsbCBhcyBhbnk7XG5cdGlmIChvVjEgPT09IHVuZGVmaW5lZCB8fCBvVjEgPT09IG51bGwpIHtcblx0XHRyZXR1cm47XG5cdH1cblxuXHRzd2l0Y2ggKHNPcHRpb24pIHtcblx0XHRjYXNlIFwiQ1BcIjpcblx0XHRcdHNJbnRlcm5hbE9wZXJhdGlvbiA9IFwiQ29udGFpbnNcIjtcblx0XHRcdGlmIChvVmFsdWUpIHtcblx0XHRcdFx0Y29uc3QgbkluZGV4T2YgPSBvVmFsdWUuaW5kZXhPZihcIipcIik7XG5cdFx0XHRcdGNvbnN0IG5MYXN0SW5kZXggPSBvVmFsdWUubGFzdEluZGV4T2YoXCIqXCIpO1xuXG5cdFx0XHRcdC8vIG9ubHkgd2hlbiB0aGVyZSBhcmUgJyonIGF0IGFsbFxuXHRcdFx0XHRpZiAobkluZGV4T2YgPiAtMSkge1xuXHRcdFx0XHRcdGlmIChuSW5kZXhPZiA9PT0gMCAmJiBuTGFzdEluZGV4ICE9PSBvVmFsdWUubGVuZ3RoIC0gMSkge1xuXHRcdFx0XHRcdFx0c0ludGVybmFsT3BlcmF0aW9uID0gXCJFbmRzV2l0aFwiO1xuXHRcdFx0XHRcdFx0b1ZhbHVlID0gb1ZhbHVlLnN1YnN0cmluZygxLCBvVmFsdWUubGVuZ3RoKTtcblx0XHRcdFx0XHR9IGVsc2UgaWYgKG5JbmRleE9mICE9PSAwICYmIG5MYXN0SW5kZXggPT09IG9WYWx1ZS5sZW5ndGggLSAxKSB7XG5cdFx0XHRcdFx0XHRzSW50ZXJuYWxPcGVyYXRpb24gPSBcIlN0YXJ0c1dpdGhcIjtcblx0XHRcdFx0XHRcdG9WYWx1ZSA9IG9WYWx1ZS5zdWJzdHJpbmcoMCwgb1ZhbHVlLmxlbmd0aCAtIDEpO1xuXHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRvVmFsdWUgPSBvVmFsdWUuc3Vic3RyaW5nKDEsIG9WYWx1ZS5sZW5ndGggLSAxKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0TG9nLndhcm5pbmcoXCJDb250YWlucyBPcHRpb24gY2Fubm90IGJlIHVzZWQgd2l0aG91dCAnKicuXCIpO1xuXHRcdFx0XHRcdHJldHVybjtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdFx0YnJlYWs7XG5cdFx0Y2FzZSBcIkVRXCI6XG5cdFx0XHRzSW50ZXJuYWxPcGVyYXRpb24gPSBvVjEgPT09IFwiXCIgPyBcIkVtcHR5XCIgOiBzT3B0aW9uO1xuXHRcdFx0YnJlYWs7XG5cdFx0Y2FzZSBcIk5FXCI6XG5cdFx0XHRzSW50ZXJuYWxPcGVyYXRpb24gPSBvVjEgPT09IFwiXCIgPyBcIk5vdEVtcHR5XCIgOiBzT3B0aW9uO1xuXHRcdFx0YnJlYWs7XG5cdFx0Y2FzZSBcIkJUXCI6XG5cdFx0XHRpZiAob1YyID09PSB1bmRlZmluZWQgfHwgb1YyID09PSBudWxsKSB7XG5cdFx0XHRcdHJldHVybjtcblx0XHRcdH1cblx0XHRcdG9WYWx1ZTIgPSBvVjI7XG5cdFx0XHRzSW50ZXJuYWxPcGVyYXRpb24gPSBzT3B0aW9uO1xuXHRcdFx0YnJlYWs7XG5cdFx0Y2FzZSBcIkxFXCI6XG5cdFx0Y2FzZSBcIkdFXCI6XG5cdFx0Y2FzZSBcIkdUXCI6XG5cdFx0Y2FzZSBcIkxUXCI6XG5cdFx0XHRzSW50ZXJuYWxPcGVyYXRpb24gPSBzT3B0aW9uO1xuXHRcdFx0YnJlYWs7XG5cdFx0ZGVmYXVsdDpcblx0XHRcdExvZy53YXJuaW5nKFwiU2VsZWN0aW9uIE9wdGlvbiBpcyBub3Qgc3VwcG9ydGVkIDogJ1wiICsgc09wdGlvbiArIFwiJ1wiKTtcblx0XHRcdHJldHVybjtcblx0fVxuXHRpZiAoc1NpZ24gPT09IFwiRVwiKSB7XG5cdFx0c0ludGVybmFsT3BlcmF0aW9uID0gb0V4Y2x1ZGVNYXBbc0ludGVybmFsT3BlcmF0aW9uXTtcblx0fVxuXHRvQ29uZGl0aW9uLm9wZXJhdG9yID0gc0ludGVybmFsT3BlcmF0aW9uO1xuXHRpZiAoc0ludGVybmFsT3BlcmF0aW9uICE9PSBcIkVtcHR5XCIpIHtcblx0XHRvQ29uZGl0aW9uLnZhbHVlcy5wdXNoKG9WYWx1ZSk7XG5cdFx0aWYgKG9WYWx1ZTIpIHtcblx0XHRcdG9Db25kaXRpb24udmFsdWVzLnB1c2gob1ZhbHVlMik7XG5cdFx0fVxuXHR9XG5cdHJldHVybiBvQ29uZGl0aW9uO1xufVxuXG4vKiBNZXRob2QgdG8gZ2V0IHRoZSBvcGVyYXRvciBmcm9tIHRoZSBTZWxlY3Rpb24gT3B0aW9uICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0T3BlcmF0b3Ioc09wZXJhdG9yOiBzdHJpbmcpOiBzdHJpbmcge1xuXHRyZXR1cm4gc09wZXJhdG9yLmluZGV4T2YoXCIvXCIpID4gMCA/IHNPcGVyYXRvci5zcGxpdChcIi9cIilbMV0gOiBzT3BlcmF0b3I7XG59XG5cbmZ1bmN0aW9uIF9idWlsZENvbmRpdGlvbnNGcm9tU2VsZWN0aW9uUmFuZ2VzKFxuXHRSYW5nZXM6IFNlbGVjdGlvblJhbmdlVHlwZVR5cGVzW10sXG5cdG9Qcm9wZXJ0eTogUmVjb3JkPHN0cmluZywgb2JqZWN0Pixcblx0c1Byb3BlcnR5TmFtZTogc3RyaW5nLFxuXHRnZXRDdXN0b21Db25kaXRpb25zPzogRnVuY3Rpb25cbik6IGFueVtdIHtcblx0Y29uc3QgYUNvbmRpdGlvbnM6IGFueVtdID0gW107XG5cdFJhbmdlcz8uZm9yRWFjaCgoUmFuZ2U6IGFueSkgPT4ge1xuXHRcdGNvbnN0IG9Db25kaXRpb24gPSBnZXRDdXN0b21Db25kaXRpb25zID8gZ2V0Q3VzdG9tQ29uZGl0aW9ucyhSYW5nZSwgb1Byb3BlcnR5LCBzUHJvcGVydHlOYW1lKSA6IGdldENvbmRpdGlvbnMoUmFuZ2UsIG9Qcm9wZXJ0eSk7XG5cdFx0aWYgKG9Db25kaXRpb24pIHtcblx0XHRcdGFDb25kaXRpb25zLnB1c2gob0NvbmRpdGlvbik7XG5cdFx0fVxuXHR9KTtcblx0cmV0dXJuIGFDb25kaXRpb25zO1xufVxuXG5mdW5jdGlvbiBfZ2V0UHJvcGVydHkocHJvcGVydHlOYW1lOiBzdHJpbmcsIG1ldGFNb2RlbDogT0RhdGFNZXRhTW9kZWwsIGVudGl0eVNldFBhdGg6IHN0cmluZyk6IFJlY29yZDxzdHJpbmcsIG9iamVjdD4ge1xuXHRjb25zdCBsYXN0U2xhc2hJbmRleCA9IHByb3BlcnR5TmFtZS5sYXN0SW5kZXhPZihcIi9cIik7XG5cdGNvbnN0IG5hdmlnYXRpb25QYXRoID0gbGFzdFNsYXNoSW5kZXggPiAtMSA/IHByb3BlcnR5TmFtZS5zdWJzdHJpbmcoMCwgcHJvcGVydHlOYW1lLmxhc3RJbmRleE9mKFwiL1wiKSArIDEpIDogXCJcIjtcblx0Y29uc3QgY29sbGVjdGlvbiA9IG1ldGFNb2RlbC5nZXRPYmplY3QoZW50aXR5U2V0UGF0aCArIFwiL1wiICsgbmF2aWdhdGlvblBhdGgpO1xuXHRyZXR1cm4gY29sbGVjdGlvbj8uW3Byb3BlcnR5TmFtZS5yZXBsYWNlKG5hdmlnYXRpb25QYXRoLCBcIlwiKV07XG59XG5cbmZ1bmN0aW9uIF9idWlsZEZpbHRlcnNDb25kaXRpb25zRnJvbVNlbGVjdE9wdGlvbihcblx0c2VsZWN0T3B0aW9uOiBTZWxlY3RPcHRpb25UeXBlLFxuXHRtZXRhTW9kZWw6IE9EYXRhTWV0YU1vZGVsLFxuXHRlbnRpdHlTZXRQYXRoOiBzdHJpbmcsXG5cdGdldEN1c3RvbUNvbmRpdGlvbnM/OiBGdW5jdGlvblxuKTogUmVjb3JkPHN0cmluZywgRmlsdGVyQ29uZGl0aW9uc1tdPiB7XG5cdGNvbnN0IHByb3BlcnR5TmFtZTogYW55ID0gc2VsZWN0T3B0aW9uLlByb3BlcnR5TmFtZSxcblx0XHRmaWx0ZXJDb25kaXRpb25zOiBSZWNvcmQ8c3RyaW5nLCBGaWx0ZXJDb25kaXRpb25zW10+ID0ge30sXG5cdFx0cHJvcGVydHlQYXRoOiBzdHJpbmcgPSBwcm9wZXJ0eU5hbWUudmFsdWUgfHwgcHJvcGVydHlOYW1lLiRQcm9wZXJ0eVBhdGgsXG5cdFx0UmFuZ2VzOiBTZWxlY3Rpb25SYW5nZVR5cGVUeXBlc1tdID0gc2VsZWN0T3B0aW9uLlJhbmdlcztcblx0Y29uc3QgdGFyZ2V0UHJvcGVydHkgPSBfZ2V0UHJvcGVydHkocHJvcGVydHlQYXRoLCBtZXRhTW9kZWwsIGVudGl0eVNldFBhdGgpO1xuXHRpZiAodGFyZ2V0UHJvcGVydHkpIHtcblx0XHRjb25zdCBjb25kaXRpb25zOiBhbnlbXSA9IF9idWlsZENvbmRpdGlvbnNGcm9tU2VsZWN0aW9uUmFuZ2VzKFJhbmdlcywgdGFyZ2V0UHJvcGVydHksIHByb3BlcnR5UGF0aCwgZ2V0Q3VzdG9tQ29uZGl0aW9ucyk7XG5cdFx0aWYgKGNvbmRpdGlvbnMubGVuZ3RoKSB7XG5cdFx0XHRmaWx0ZXJDb25kaXRpb25zW3Byb3BlcnR5UGF0aF0gPSAoZmlsdGVyQ29uZGl0aW9uc1twcm9wZXJ0eVBhdGhdIHx8IFtdKS5jb25jYXQoY29uZGl0aW9ucyk7XG5cdFx0fVxuXHR9XG5cdHJldHVybiBmaWx0ZXJDb25kaXRpb25zO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0RmlsdGVyc0NvbmRpdGlvbnNGcm9tU2VsZWN0aW9uVmFyaWFudChcblx0c0VudGl0eVNldFBhdGg6IHN0cmluZyxcblx0b01ldGFNb2RlbDogT0RhdGFNZXRhTW9kZWwsXG5cdHNlbGVjdGlvblZhcmlhbnQ6IFNlbGVjdGlvblZhcmlhbnRUeXBlVHlwZXMsXG5cdGdldEN1c3RvbUNvbmRpdGlvbnM/OiBGdW5jdGlvblxuKTogUmVjb3JkPHN0cmluZywgRmlsdGVyQ29uZGl0aW9uc1tdPiB7XG5cdGxldCBvRmlsdGVyQ29uZGl0aW9uczogUmVjb3JkPHN0cmluZywgRmlsdGVyQ29uZGl0aW9uc1tdPiA9IHt9O1xuXHRpZiAoIXNlbGVjdGlvblZhcmlhbnQpIHtcblx0XHRyZXR1cm4gb0ZpbHRlckNvbmRpdGlvbnM7XG5cdH1cblx0Y29uc3QgYVNlbGVjdE9wdGlvbnMgPSBzZWxlY3Rpb25WYXJpYW50LlNlbGVjdE9wdGlvbnMsXG5cdFx0YVBhcmFtZXRlcnMgPSBzZWxlY3Rpb25WYXJpYW50LlBhcmFtZXRlcnM7XG5cdGFTZWxlY3RPcHRpb25zPy5mb3JFYWNoKChzZWxlY3RPcHRpb246IFNlbGVjdE9wdGlvblR5cGUpID0+IHtcblx0XHRjb25zdCBwcm9wZXJ0eU5hbWU6IGFueSA9IHNlbGVjdE9wdGlvbi5Qcm9wZXJ0eU5hbWUsXG5cdFx0XHRzUHJvcGVydHlOYW1lOiBzdHJpbmcgPSBwcm9wZXJ0eU5hbWUudmFsdWUgfHwgcHJvcGVydHlOYW1lLiRQcm9wZXJ0eVBhdGg7XG5cdFx0aWYgKE9iamVjdC5rZXlzKG9GaWx0ZXJDb25kaXRpb25zKS5pbmNsdWRlcyhzUHJvcGVydHlOYW1lKSkge1xuXHRcdFx0b0ZpbHRlckNvbmRpdGlvbnNbc1Byb3BlcnR5TmFtZV0gPSBvRmlsdGVyQ29uZGl0aW9uc1tzUHJvcGVydHlOYW1lXS5jb25jYXQoXG5cdFx0XHRcdF9idWlsZEZpbHRlcnNDb25kaXRpb25zRnJvbVNlbGVjdE9wdGlvbihzZWxlY3RPcHRpb24sIG9NZXRhTW9kZWwsIHNFbnRpdHlTZXRQYXRoLCBnZXRDdXN0b21Db25kaXRpb25zKVtzUHJvcGVydHlOYW1lXVxuXHRcdFx0KTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0b0ZpbHRlckNvbmRpdGlvbnMgPSB7XG5cdFx0XHRcdC4uLm9GaWx0ZXJDb25kaXRpb25zLFxuXHRcdFx0XHQuLi5fYnVpbGRGaWx0ZXJzQ29uZGl0aW9uc0Zyb21TZWxlY3RPcHRpb24oc2VsZWN0T3B0aW9uLCBvTWV0YU1vZGVsLCBzRW50aXR5U2V0UGF0aCwgZ2V0Q3VzdG9tQ29uZGl0aW9ucylcblx0XHRcdH07XG5cdFx0fVxuXHR9KTtcblx0YVBhcmFtZXRlcnM/LmZvckVhY2goKHBhcmFtZXRlcjogYW55KSA9PiB7XG5cdFx0Y29uc3Qgc1Byb3BlcnR5UGF0aCA9IHBhcmFtZXRlci5Qcm9wZXJ0eU5hbWUudmFsdWUgfHwgcGFyYW1ldGVyLlByb3BlcnR5TmFtZS4kUHJvcGVydHlQYXRoO1xuXHRcdGNvbnN0IG9Db25kaXRpb246IGFueSA9IGdldEN1c3RvbUNvbmRpdGlvbnNcblx0XHRcdD8geyBvcGVyYXRvcjogXCJFUVwiLCB2YWx1ZTE6IHBhcmFtZXRlci5Qcm9wZXJ0eVZhbHVlLCB2YWx1ZTI6IG51bGwsIHBhdGg6IHNQcm9wZXJ0eVBhdGgsIGlzUGFyYW1ldGVyOiB0cnVlIH1cblx0XHRcdDoge1xuXHRcdFx0XHRcdG9wZXJhdG9yOiBcIkVRXCIsXG5cdFx0XHRcdFx0dmFsdWVzOiBbcGFyYW1ldGVyLlByb3BlcnR5VmFsdWVdLFxuXHRcdFx0XHRcdGlzRW1wdHk6IG51bGwsXG5cdFx0XHRcdFx0dmFsaWRhdGVkOiBDb25kaXRpb25WYWxpZGF0ZWQuVmFsaWRhdGVkLFxuXHRcdFx0XHRcdGlzUGFyYW1ldGVyOiB0cnVlXG5cdFx0XHQgIH07XG5cdFx0b0ZpbHRlckNvbmRpdGlvbnNbc1Byb3BlcnR5UGF0aF0gPSBbb0NvbmRpdGlvbl07XG5cdH0pO1xuXG5cdHJldHVybiBvRmlsdGVyQ29uZGl0aW9ucztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldENvbmRpdGlvbnMoUmFuZ2U6IGFueSwgb1ZhbGlkUHJvcGVydHk6IGFueSk6IENvbmRpdGlvbk9iamVjdCB8IHVuZGVmaW5lZCB7XG5cdGxldCBvQ29uZGl0aW9uO1xuXHRjb25zdCBzaWduOiBzdHJpbmcgfCB1bmRlZmluZWQgPSBSYW5nZS5TaWduO1xuXHRjb25zdCBzT3B0aW9uOiBzdHJpbmcgfCB1bmRlZmluZWQgPSBSYW5nZS5PcHRpb24gPyBnZXRPcGVyYXRvcihSYW5nZS5PcHRpb24pIDogdW5kZWZpbmVkO1xuXHRjb25zdCBvVmFsdWUxOiBhbnkgPSBnZXRUeXBlQ29tcGxpYW50VmFsdWUoUmFuZ2UuTG93LCBvVmFsaWRQcm9wZXJ0eS4kVHlwZSB8fCBvVmFsaWRQcm9wZXJ0eS50eXBlKTtcblx0Y29uc3Qgb1ZhbHVlMjogYW55ID0gUmFuZ2UuSGlnaCA/IGdldFR5cGVDb21wbGlhbnRWYWx1ZShSYW5nZS5IaWdoLCBvVmFsaWRQcm9wZXJ0eS4kVHlwZSB8fCBvVmFsaWRQcm9wZXJ0eS50eXBlKSA6IHVuZGVmaW5lZDtcblx0Y29uc3Qgb0NvbmRpdGlvblZhbHVlcyA9IHJlc29sdmVDb25kaXRpb25WYWx1ZXMoc09wdGlvbiwgb1ZhbHVlMSwgb1ZhbHVlMiwgc2lnbikgYXMgYW55O1xuXHRpZiAob0NvbmRpdGlvblZhbHVlcykge1xuXHRcdG9Db25kaXRpb24gPSBDb25kaXRpb24uY3JlYXRlQ29uZGl0aW9uKFxuXHRcdFx0b0NvbmRpdGlvblZhbHVlcy5vcGVyYXRvcixcblx0XHRcdG9Db25kaXRpb25WYWx1ZXMudmFsdWVzLFxuXHRcdFx0bnVsbCxcblx0XHRcdG51bGwsXG5cdFx0XHRDb25kaXRpb25WYWxpZGF0ZWQuVmFsaWRhdGVkXG5cdFx0KTtcblx0fVxuXHRyZXR1cm4gb0NvbmRpdGlvbjtcbn1cblxuY29uc3QgZ2V0RGVmYXVsdFZhbHVlRmlsdGVycyA9IGZ1bmN0aW9uIChvQ29udGV4dDogYW55LCBwcm9wZXJ0aWVzOiBhbnkpOiBSZWNvcmQ8c3RyaW5nLCBGaWx0ZXJDb25kaXRpb25zW10+IHtcblx0Y29uc3QgZmlsdGVyQ29uZGl0aW9uczogUmVjb3JkPHN0cmluZywgRmlsdGVyQ29uZGl0aW9uc1tdPiA9IHt9O1xuXHRjb25zdCBlbnRpdHlTZXRQYXRoID0gb0NvbnRleHQuZ2V0SW50ZXJmYWNlKDEpLmdldFBhdGgoKSxcblx0XHRvTWV0YU1vZGVsID0gb0NvbnRleHQuZ2V0SW50ZXJmYWNlKDEpLmdldE1vZGVsKCk7XG5cdGlmIChwcm9wZXJ0aWVzKSB7XG5cdFx0Zm9yIChjb25zdCBrZXkgaW4gcHJvcGVydGllcykge1xuXHRcdFx0Y29uc3QgZGVmYXVsdEZpbHRlclZhbHVlID0gb01ldGFNb2RlbC5nZXRPYmplY3QoXG5cdFx0XHRcdGVudGl0eVNldFBhdGggKyBcIi9cIiArIGtleSArIFwiQGNvbS5zYXAudm9jYWJ1bGFyaWVzLkNvbW1vbi52MS5GaWx0ZXJEZWZhdWx0VmFsdWVcIlxuXHRcdFx0KTtcblx0XHRcdGlmIChkZWZhdWx0RmlsdGVyVmFsdWUgIT09IHVuZGVmaW5lZCkge1xuXHRcdFx0XHRjb25zdCBQcm9wZXJ0eU5hbWUgPSBrZXk7XG5cdFx0XHRcdGZpbHRlckNvbmRpdGlvbnNbUHJvcGVydHlOYW1lXSA9IFtcblx0XHRcdFx0XHRDb25kaXRpb24uY3JlYXRlQ29uZGl0aW9uKFwiRVFcIiwgW2RlZmF1bHRGaWx0ZXJWYWx1ZV0sIG51bGwsIG51bGwsIENvbmRpdGlvblZhbGlkYXRlZC5WYWxpZGF0ZWQpIGFzIEZpbHRlckNvbmRpdGlvbnNcblx0XHRcdFx0XTtcblx0XHRcdH1cblx0XHR9XG5cdH1cblx0cmV0dXJuIGZpbHRlckNvbmRpdGlvbnM7XG59O1xuXG5jb25zdCBnZXREZWZhdWx0U2VtYW50aWNEYXRlRmlsdGVycyA9IGZ1bmN0aW9uIChcblx0b0NvbnRleHQ6IGFueSxcblx0cHJvcGVydGllczogYW55LFxuXHRkZWZhdWx0U2VtYW50aWNEYXRlczogYW55XG4pOiBSZWNvcmQ8c3RyaW5nLCBGaWx0ZXJDb25kaXRpb25zW10+IHtcblx0Y29uc3QgZmlsdGVyQ29uZGl0aW9uczogUmVjb3JkPHN0cmluZywgRmlsdGVyQ29uZGl0aW9uc1tdPiA9IHt9O1xuXHRpZiAocHJvcGVydGllcykge1xuXHRcdGZvciAoY29uc3Qga2V5IGluIHByb3BlcnRpZXMpIHtcblx0XHRcdC8vIGN1cnJlbnRseSBkZWZhdWx0U2VtYW50aWNEYXRlcyBjYW4gc3VwcG9ydCBvbmx5IG9uZSBlbnRyeSwgd2UgcGljayB0aGUgZmlyc3Qgb25lIGRpcmVjdGx5IHVzaW5nIDAgaW5kZXhcblx0XHRcdGlmIChkZWZhdWx0U2VtYW50aWNEYXRlc1trZXldICYmIGRlZmF1bHRTZW1hbnRpY0RhdGVzW2tleV1bMF0pIHtcblx0XHRcdFx0ZmlsdGVyQ29uZGl0aW9uc1trZXldID0gW1xuXHRcdFx0XHRcdENvbmRpdGlvbi5jcmVhdGVDb25kaXRpb24oZGVmYXVsdFNlbWFudGljRGF0ZXNba2V5XVswXS5vcGVyYXRvciwgW10sIG51bGwsIG51bGwsIG51bGwpIGFzIEZpbHRlckNvbmRpdGlvbnNcblx0XHRcdFx0XTtcblx0XHRcdH1cblx0XHR9XG5cdH1cblx0cmV0dXJuIGZpbHRlckNvbmRpdGlvbnM7XG59O1xuXG5mdW5jdGlvbiBnZXRFZGl0U3RhdHVzRmlsdGVyKCk6IFJlY29yZDxzdHJpbmcsIEZpbHRlckNvbmRpdGlvbnNbXT4ge1xuXHRjb25zdCBvZmlsdGVyQ29uZGl0aW9uczogUmVjb3JkPHN0cmluZywgRmlsdGVyQ29uZGl0aW9uc1tdPiA9IHt9O1xuXHRvZmlsdGVyQ29uZGl0aW9uc1tcIiRlZGl0U3RhdGVcIl0gPSBbXG5cdFx0Q29uZGl0aW9uLmNyZWF0ZUNvbmRpdGlvbihcIkRSQUZUX0VESVRfU1RBVEVcIiwgW1wiQUxMXCJdLCBudWxsLCBudWxsLCBDb25kaXRpb25WYWxpZGF0ZWQuVmFsaWRhdGVkKSBhcyBGaWx0ZXJDb25kaXRpb25zXG5cdF07XG5cdHJldHVybiBvZmlsdGVyQ29uZGl0aW9ucztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldEZpbHRlckNvbmRpdGlvbnMob0NvbnRleHQ6IGFueSwgZmlsdGVyQ29uZGl0aW9uczogYW55KTogUmVjb3JkPHN0cmluZywgRmlsdGVyQ29uZGl0aW9uc1tdPiB7XG5cdGxldCBlZGl0U3RhdGVGaWx0ZXI7XG5cdGNvbnN0IGVudGl0eVNldFBhdGggPSBvQ29udGV4dC5nZXRJbnRlcmZhY2UoMSkuZ2V0UGF0aCgpLFxuXHRcdG9NZXRhTW9kZWwgPSBvQ29udGV4dC5nZXRJbnRlcmZhY2UoMSkuZ2V0TW9kZWwoKSxcblx0XHRlbnRpdHlUeXBlQW5ub3RhdGlvbnMgPSBvTWV0YU1vZGVsLmdldE9iamVjdChlbnRpdHlTZXRQYXRoICsgXCJAXCIpLFxuXHRcdGVudGl0eVR5cGVQcm9wZXJ0aWVzID0gb01ldGFNb2RlbC5nZXRPYmplY3QoZW50aXR5U2V0UGF0aCArIFwiL1wiKTtcblx0aWYgKFxuXHRcdGVudGl0eVR5cGVBbm5vdGF0aW9uc1tcIkBjb20uc2FwLnZvY2FidWxhcmllcy5Db21tb24udjEuRHJhZnRSb290XCJdIHx8XG5cdFx0ZW50aXR5VHlwZUFubm90YXRpb25zW1wiQGNvbS5zYXAudm9jYWJ1bGFyaWVzLkNvbW1vbi52MS5EcmFmdE5vZGVcIl1cblx0KSB7XG5cdFx0ZWRpdFN0YXRlRmlsdGVyID0gZ2V0RWRpdFN0YXR1c0ZpbHRlcigpO1xuXHR9XG5cdGNvbnN0IHNlbGVjdGlvblZhcmlhbnQgPSBmaWx0ZXJDb25kaXRpb25zPy5zZWxlY3Rpb25WYXJpYW50O1xuXHRjb25zdCBkZWZhdWx0U2VtYW50aWNEYXRlcyA9IGZpbHRlckNvbmRpdGlvbnM/LmRlZmF1bHRTZW1hbnRpY0RhdGVzIHx8IHt9O1xuXHRjb25zdCBkZWZhdWx0RmlsdGVycyA9IGdldERlZmF1bHRWYWx1ZUZpbHRlcnMob0NvbnRleHQsIGVudGl0eVR5cGVQcm9wZXJ0aWVzKTtcblx0Y29uc3QgZGVmYXVsdFNlbWFudGljRGF0ZUZpbHRlcnMgPSBnZXREZWZhdWx0U2VtYW50aWNEYXRlRmlsdGVycyhvQ29udGV4dCwgZW50aXR5VHlwZVByb3BlcnRpZXMsIGRlZmF1bHRTZW1hbnRpY0RhdGVzKTtcblx0aWYgKHNlbGVjdGlvblZhcmlhbnQpIHtcblx0XHRmaWx0ZXJDb25kaXRpb25zID0gZ2V0RmlsdGVyc0NvbmRpdGlvbnNGcm9tU2VsZWN0aW9uVmFyaWFudChlbnRpdHlTZXRQYXRoLCBvTWV0YU1vZGVsLCBzZWxlY3Rpb25WYXJpYW50KTtcblx0fSBlbHNlIGlmIChkZWZhdWx0RmlsdGVycykge1xuXHRcdGZpbHRlckNvbmRpdGlvbnMgPSBkZWZhdWx0RmlsdGVycztcblx0fVxuXHRpZiAoZGVmYXVsdFNlbWFudGljRGF0ZUZpbHRlcnMpIHtcblx0XHQvLyBvbmx5IGZvciBzZW1hbnRpYyBkYXRlOlxuXHRcdC8vIDEuIHZhbHVlIGZyb20gbWFuaWZlc3QgZ2V0IG1lcmdlZCB3aXRoIFNWXG5cdFx0Ly8gMi4gbWFuaWZlc3QgdmFsdWUgaXMgZ2l2ZW4gcHJlZmVyZW5jZSB3aGVuIHRoZXJlIGlzIHNhbWUgc2VtYW50aWMgZGF0ZSBwcm9wZXJ0eSBpbiBTViBhbmQgbWFuaWZlc3Rcblx0XHRmaWx0ZXJDb25kaXRpb25zID0geyAuLi5maWx0ZXJDb25kaXRpb25zLCAuLi5kZWZhdWx0U2VtYW50aWNEYXRlRmlsdGVycyB9O1xuXHR9XG5cdGlmIChlZGl0U3RhdGVGaWx0ZXIpIHtcblx0XHRmaWx0ZXJDb25kaXRpb25zID0geyAuLi5maWx0ZXJDb25kaXRpb25zLCAuLi5lZGl0U3RhdGVGaWx0ZXIgfTtcblx0fVxuXHRyZXR1cm4gKE9iamVjdC5rZXlzKGZpbHRlckNvbmRpdGlvbnMpLmxlbmd0aCA+IDAgPyBKU09OLnN0cmluZ2lmeShmaWx0ZXJDb25kaXRpb25zKS5yZXBsYWNlKC8oW1xce1xcfV0pL2csIFwiXFxcXCQxXCIpIDogdW5kZWZpbmVkKSBhcyBhbnk7XG59XG5cbmdldEZpbHRlckNvbmRpdGlvbnMucmVxdWlyZXNJQ29udGV4dCA9IHRydWU7XG4iXX0=
394
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIkZpbHRlckhlbHBlci50cyJdLCJuYW1lcyI6WyJhVmFsaWRUeXBlcyIsIm9FeGNsdWRlTWFwIiwiX2dldERhdGVUaW1lT2Zmc2V0Q29tcGxpYW50VmFsdWUiLCJzVmFsdWUiLCJvVmFsdWUiLCJtYXRjaCIsImluZGV4T2YiLCJsZW5ndGgiLCJzcGxpdCIsInVuZGVmaW5lZCIsIl9nZXREYXRlQ29tcGxpYW50VmFsdWUiLCJnZXRUeXBlQ29tcGxpYW50VmFsdWUiLCJzVHlwZSIsImlzTmFOIiwicGFyc2VGbG9hdCIsInBhcnNlSW50IiwicmVzb2x2ZUNvbmRpdGlvblZhbHVlcyIsInNPcHRpb24iLCJvVjEiLCJvVjIiLCJzU2lnbiIsIm9WYWx1ZTIiLCJzSW50ZXJuYWxPcGVyYXRpb24iLCJvQ29uZGl0aW9uIiwidmFsdWVzIiwiaXNFbXB0eSIsIm5JbmRleE9mIiwibkxhc3RJbmRleCIsImxhc3RJbmRleE9mIiwic3Vic3RyaW5nIiwiTG9nIiwid2FybmluZyIsIm9wZXJhdG9yIiwicHVzaCIsImdldE9wZXJhdG9yIiwic09wZXJhdG9yIiwiX2J1aWxkQ29uZGl0aW9uc0Zyb21TZWxlY3Rpb25SYW5nZXMiLCJSYW5nZXMiLCJvUHJvcGVydHkiLCJzUHJvcGVydHlOYW1lIiwiZ2V0Q3VzdG9tQ29uZGl0aW9ucyIsImFDb25kaXRpb25zIiwiZm9yRWFjaCIsIlJhbmdlIiwiZ2V0Q29uZGl0aW9ucyIsIl9nZXRQcm9wZXJ0eSIsInByb3BlcnR5TmFtZSIsIm1ldGFNb2RlbCIsImVudGl0eVNldFBhdGgiLCJsYXN0U2xhc2hJbmRleCIsIm5hdmlnYXRpb25QYXRoIiwiY29sbGVjdGlvbiIsImdldE9iamVjdCIsInJlcGxhY2UiLCJfYnVpbGRGaWx0ZXJzQ29uZGl0aW9uc0Zyb21TZWxlY3RPcHRpb24iLCJzZWxlY3RPcHRpb24iLCJQcm9wZXJ0eU5hbWUiLCJmaWx0ZXJDb25kaXRpb25zIiwicHJvcGVydHlQYXRoIiwidmFsdWUiLCIkUHJvcGVydHlQYXRoIiwidGFyZ2V0UHJvcGVydHkiLCJjb25kaXRpb25zIiwiY29uY2F0IiwiZ2V0RmlsdGVyc0NvbmRpdGlvbnNGcm9tU2VsZWN0aW9uVmFyaWFudCIsInNFbnRpdHlTZXRQYXRoIiwib01ldGFNb2RlbCIsInNlbGVjdGlvblZhcmlhbnQiLCJvRmlsdGVyQ29uZGl0aW9ucyIsImFTZWxlY3RPcHRpb25zIiwiU2VsZWN0T3B0aW9ucyIsImFQYXJhbWV0ZXJzIiwiUGFyYW1ldGVycyIsIk9iamVjdCIsImtleXMiLCJpbmNsdWRlcyIsInBhcmFtZXRlciIsInNQcm9wZXJ0eVBhdGgiLCJ2YWx1ZTEiLCJQcm9wZXJ0eVZhbHVlIiwidmFsdWUyIiwicGF0aCIsImlzUGFyYW1ldGVyIiwidmFsaWRhdGVkIiwiQ29uZGl0aW9uVmFsaWRhdGVkIiwiVmFsaWRhdGVkIiwib1ZhbGlkUHJvcGVydHkiLCJzaWduIiwiU2lnbiIsIk9wdGlvbiIsIm9WYWx1ZTEiLCJMb3ciLCIkVHlwZSIsInR5cGUiLCJIaWdoIiwib0NvbmRpdGlvblZhbHVlcyIsIkNvbmRpdGlvbiIsImNyZWF0ZUNvbmRpdGlvbiIsImdldERlZmF1bHRWYWx1ZUZpbHRlcnMiLCJvQ29udGV4dCIsInByb3BlcnRpZXMiLCJnZXRJbnRlcmZhY2UiLCJnZXRQYXRoIiwiZ2V0TW9kZWwiLCJrZXkiLCJkZWZhdWx0RmlsdGVyVmFsdWUiLCJnZXREZWZhdWx0U2VtYW50aWNEYXRlRmlsdGVycyIsImRlZmF1bHRTZW1hbnRpY0RhdGVzIiwiZ2V0RWRpdFN0YXR1c0ZpbHRlciIsIm9maWx0ZXJDb25kaXRpb25zIiwiZ2V0RmlsdGVyQ29uZGl0aW9ucyIsImVkaXRTdGF0ZUZpbHRlciIsImVudGl0eVR5cGVBbm5vdGF0aW9ucyIsImVudGl0eVR5cGVQcm9wZXJ0aWVzIiwiZGVmYXVsdEZpbHRlcnMiLCJkZWZhdWx0U2VtYW50aWNEYXRlRmlsdGVycyIsIkpTT04iLCJzdHJpbmdpZnkiLCJyZXF1aXJlc0lDb250ZXh0Il0sIm1hcHBpbmdzIjoiO0FBQUE7QUFDQTtBQUNBOzs7Ozs7Ozs7Ozs7QUFXQSxNQUFNQSxXQUFXLEdBQUcsQ0FDbkIsYUFEbUIsRUFFbkIsVUFGbUIsRUFHbkIsVUFIbUIsRUFJbkIsY0FKbUIsRUFLbkIsb0JBTG1CLEVBTW5CLGFBTm1CLEVBT25CLFlBUG1CLEVBUW5CLFdBUm1CLEVBU25CLFVBVG1CLEVBVW5CLFdBVm1CLEVBV25CLFdBWG1CLEVBWW5CLFdBWm1CLEVBYW5CLFdBYm1CLEVBY25CLFlBZG1CLEVBZW5CLFlBZm1CLEVBZ0JuQixVQWhCbUIsRUFpQm5CLGVBakJtQixDQUFwQjtBQW9CQSxNQUFNQyxXQUFnQyxHQUFHO0FBQ3hDLGdCQUFZLGFBRDRCO0FBRXhDLGtCQUFjLGVBRjBCO0FBR3hDLGdCQUFZLGFBSDRCO0FBSXhDLGFBQVMsVUFKK0I7QUFLeEMsZ0JBQVksT0FMNEI7QUFNeEMsVUFBTSxPQU5rQztBQU94QyxVQUFNLE9BUGtDO0FBUXhDLFVBQU0sT0FSa0M7QUFTeEMsVUFBTSxPQVRrQztBQVV4QyxVQUFNLE9BVmtDO0FBV3hDLFVBQU0sSUFYa0M7QUFZeEMsVUFBTTtBQVprQyxHQUF6Qzs7QUFlTyxXQUFTQyxnQ0FBVCxDQUEwQ0MsTUFBMUMsRUFBMkU7QUFDakYsUUFBSUMsTUFBSjs7QUFDQSxRQUFJRCxNQUFNLENBQUNFLEtBQVAsQ0FBYSx1RUFBYixDQUFKLEVBQTJGO0FBQzFGRCxNQUFBQSxNQUFNLEdBQUdELE1BQU0sQ0FBQ0UsS0FBUCxDQUFhLHVFQUFiLEVBQXNGLENBQXRGLENBQVQ7QUFDQSxLQUZELE1BRU8sSUFBSUYsTUFBTSxDQUFDRSxLQUFQLENBQWEsNERBQWIsQ0FBSixFQUFnRjtBQUN0RkQsTUFBQUEsTUFBTSxhQUFNRCxNQUFNLENBQUNFLEtBQVAsQ0FBYSw0REFBYixFQUEyRSxDQUEzRSxDQUFOLFVBQU47QUFDQSxLQUZNLE1BRUEsSUFBSUYsTUFBTSxDQUFDRSxLQUFQLENBQWEsOEJBQWIsQ0FBSixFQUFrRDtBQUN4REQsTUFBQUEsTUFBTSxhQUFNRCxNQUFNLENBQUNFLEtBQVAsQ0FBYSw4QkFBYixFQUE2QyxDQUE3QyxDQUFOLG1CQUFOO0FBQ0EsS0FGTSxNQUVBLElBQUlGLE1BQU0sQ0FBQ0csT0FBUCxDQUFlLEdBQWYsTUFBd0JILE1BQU0sQ0FBQ0ksTUFBUCxHQUFnQixDQUE1QyxFQUErQztBQUNyREgsTUFBQUEsTUFBTSxhQUFNRCxNQUFNLENBQUNLLEtBQVAsQ0FBYSxHQUFiLEVBQWtCLENBQWxCLENBQU4sVUFBTjtBQUNBLEtBRk0sTUFFQTtBQUNOSixNQUFBQSxNQUFNLEdBQUdLLFNBQVQ7QUFDQTs7QUFDRCxXQUFPTCxNQUFQO0FBQ0E7Ozs7QUFFTSxXQUFTTSxzQkFBVCxDQUFnQ1AsTUFBaEMsRUFBaUU7QUFDdkUsV0FBT0EsTUFBTSxDQUFDRSxLQUFQLENBQWEsOEJBQWIsSUFDSkYsTUFBTSxDQUFDRSxLQUFQLENBQWEsOEJBQWIsRUFBNkMsQ0FBN0MsQ0FESSxHQUVKRixNQUFNLENBQUNFLEtBQVAsQ0FBYSxVQUFiLEtBQTRCRixNQUFNLENBQUNFLEtBQVAsQ0FBYSxVQUFiLEVBQXlCLENBQXpCLENBRi9CO0FBR0E7QUFFRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7QUFFTyxXQUFTTSxxQkFBVCxDQUErQlIsTUFBL0IsRUFBNENTLEtBQTVDLEVBQStFO0FBQ3JGLFFBQUlSLE1BQUo7O0FBQ0EsUUFBSUosV0FBVyxDQUFDTSxPQUFaLENBQW9CTSxLQUFwQixNQUErQixDQUFDLENBQXBDLEVBQXVDO0FBQ3RDLGFBQU9ILFNBQVA7QUFDQTs7QUFDREwsSUFBQUEsTUFBTSxHQUFHRCxNQUFUOztBQUNBLFlBQVFTLEtBQVI7QUFDQyxXQUFLLGFBQUw7QUFDQ1IsUUFBQUEsTUFBTSxHQUFHRCxNQUFNLEtBQUssTUFBWCxLQUFzQkEsTUFBTSxLQUFLLE9BQVgsR0FBcUIsS0FBckIsR0FBNkJNLFNBQW5ELENBQVQ7QUFDQTs7QUFDRCxXQUFLLFlBQUw7QUFDQSxXQUFLLFlBQUw7QUFDQ0wsUUFBQUEsTUFBTSxHQUFHUyxLQUFLLENBQUNWLE1BQUQsQ0FBTCxHQUFnQk0sU0FBaEIsR0FBNEJLLFVBQVUsQ0FBQ1gsTUFBRCxDQUEvQztBQUNBOztBQUNELFdBQUssVUFBTDtBQUNBLFdBQUssV0FBTDtBQUNBLFdBQUssV0FBTDtBQUNBLFdBQUssV0FBTDtBQUNDQyxRQUFBQSxNQUFNLEdBQUdTLEtBQUssQ0FBQ1YsTUFBRCxDQUFMLEdBQWdCTSxTQUFoQixHQUE0Qk0sUUFBUSxDQUFDWixNQUFELEVBQVMsRUFBVCxDQUE3QztBQUNBOztBQUNELFdBQUssVUFBTDtBQUNDQyxRQUFBQSxNQUFNLEdBQUdNLHNCQUFzQixDQUFDUCxNQUFELENBQS9CO0FBQ0E7O0FBQ0QsV0FBSyxvQkFBTDtBQUNDQyxRQUFBQSxNQUFNLEdBQUdGLGdDQUFnQyxDQUFDQyxNQUFELENBQXpDO0FBQ0E7O0FBQ0QsV0FBSyxlQUFMO0FBQ0NDLFFBQUFBLE1BQU0sR0FBR0QsTUFBTSxDQUFDRSxLQUFQLENBQWEsK0JBQWIsSUFBZ0RGLE1BQU0sQ0FBQ0UsS0FBUCxDQUFhLCtCQUFiLEVBQThDLENBQTlDLENBQWhELEdBQW1HSSxTQUE1RztBQUNBOztBQUNEO0FBdkJEOztBQTBCQSxXQUFPTCxNQUFNLEtBQUssSUFBWCxHQUFrQkssU0FBbEIsR0FBOEJMLE1BQXJDO0FBQ0E7QUFFRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7O0FBQ08sV0FBU1ksc0JBQVQsQ0FBZ0NDLE9BQWhDLEVBQTZEQyxHQUE3RCxFQUF1RUMsR0FBdkUsRUFBaUZDLEtBQWpGLEVBQTRHO0FBQ2xILFFBQUloQixNQUFNLEdBQUdjLEdBQWI7QUFBQSxRQUNDRyxPQUREO0FBQUEsUUFFQ0Msa0JBRkQ7QUFHQSxRQUFNQyxVQUE4QyxHQUFHLEVBQXZEO0FBQ0FBLElBQUFBLFVBQVUsQ0FBQ0MsTUFBWCxHQUFvQixFQUFwQjtBQUNBRCxJQUFBQSxVQUFVLENBQUNFLE9BQVgsR0FBcUIsSUFBckI7O0FBQ0EsUUFBSVAsR0FBRyxLQUFLVCxTQUFSLElBQXFCUyxHQUFHLEtBQUssSUFBakMsRUFBdUM7QUFDdEM7QUFDQTs7QUFFRCxZQUFRRCxPQUFSO0FBQ0MsV0FBSyxJQUFMO0FBQ0NLLFFBQUFBLGtCQUFrQixHQUFHLFVBQXJCOztBQUNBLFlBQUlsQixNQUFKLEVBQVk7QUFDWCxjQUFNc0IsUUFBUSxHQUFHdEIsTUFBTSxDQUFDRSxPQUFQLENBQWUsR0FBZixDQUFqQjtBQUNBLGNBQU1xQixVQUFVLEdBQUd2QixNQUFNLENBQUN3QixXQUFQLENBQW1CLEdBQW5CLENBQW5CLENBRlcsQ0FJWDs7QUFDQSxjQUFJRixRQUFRLEdBQUcsQ0FBQyxDQUFoQixFQUFtQjtBQUNsQixnQkFBSUEsUUFBUSxLQUFLLENBQWIsSUFBa0JDLFVBQVUsS0FBS3ZCLE1BQU0sQ0FBQ0csTUFBUCxHQUFnQixDQUFyRCxFQUF3RDtBQUN2RGUsY0FBQUEsa0JBQWtCLEdBQUcsVUFBckI7QUFDQWxCLGNBQUFBLE1BQU0sR0FBR0EsTUFBTSxDQUFDeUIsU0FBUCxDQUFpQixDQUFqQixFQUFvQnpCLE1BQU0sQ0FBQ0csTUFBM0IsQ0FBVDtBQUNBLGFBSEQsTUFHTyxJQUFJbUIsUUFBUSxLQUFLLENBQWIsSUFBa0JDLFVBQVUsS0FBS3ZCLE1BQU0sQ0FBQ0csTUFBUCxHQUFnQixDQUFyRCxFQUF3RDtBQUM5RGUsY0FBQUEsa0JBQWtCLEdBQUcsWUFBckI7QUFDQWxCLGNBQUFBLE1BQU0sR0FBR0EsTUFBTSxDQUFDeUIsU0FBUCxDQUFpQixDQUFqQixFQUFvQnpCLE1BQU0sQ0FBQ0csTUFBUCxHQUFnQixDQUFwQyxDQUFUO0FBQ0EsYUFITSxNQUdBO0FBQ05ILGNBQUFBLE1BQU0sR0FBR0EsTUFBTSxDQUFDeUIsU0FBUCxDQUFpQixDQUFqQixFQUFvQnpCLE1BQU0sQ0FBQ0csTUFBUCxHQUFnQixDQUFwQyxDQUFUO0FBQ0E7QUFDRCxXQVZELE1BVU87QUFDTnVCLFlBQUFBLEdBQUcsQ0FBQ0MsT0FBSixDQUFZLDZDQUFaO0FBQ0E7QUFDQTtBQUNEOztBQUNEOztBQUNELFdBQUssSUFBTDtBQUNDVCxRQUFBQSxrQkFBa0IsR0FBR0osR0FBRyxLQUFLLEVBQVIsR0FBYSxPQUFiLEdBQXVCRCxPQUE1QztBQUNBOztBQUNELFdBQUssSUFBTDtBQUNDSyxRQUFBQSxrQkFBa0IsR0FBR0osR0FBRyxLQUFLLEVBQVIsR0FBYSxVQUFiLEdBQTBCRCxPQUEvQztBQUNBOztBQUNELFdBQUssSUFBTDtBQUNDLFlBQUlFLEdBQUcsS0FBS1YsU0FBUixJQUFxQlUsR0FBRyxLQUFLLElBQWpDLEVBQXVDO0FBQ3RDO0FBQ0E7O0FBQ0RFLFFBQUFBLE9BQU8sR0FBR0YsR0FBVjtBQUNBRyxRQUFBQSxrQkFBa0IsR0FBR0wsT0FBckI7QUFDQTs7QUFDRCxXQUFLLElBQUw7QUFDQSxXQUFLLElBQUw7QUFDQSxXQUFLLElBQUw7QUFDQSxXQUFLLElBQUw7QUFDQ0ssUUFBQUEsa0JBQWtCLEdBQUdMLE9BQXJCO0FBQ0E7O0FBQ0Q7QUFDQ2EsUUFBQUEsR0FBRyxDQUFDQyxPQUFKLGdEQUFvRGQsT0FBcEQ7QUFDQTtBQTdDRjs7QUErQ0EsUUFBSUcsS0FBSyxLQUFLLEdBQWQsRUFBbUI7QUFDbEJFLE1BQUFBLGtCQUFrQixHQUFHckIsV0FBVyxDQUFDcUIsa0JBQUQsQ0FBaEM7QUFDQTs7QUFDREMsSUFBQUEsVUFBVSxDQUFDUyxRQUFYLEdBQXNCVixrQkFBdEI7O0FBQ0EsUUFBSUEsa0JBQWtCLEtBQUssT0FBM0IsRUFBb0M7QUFDbkNDLE1BQUFBLFVBQVUsQ0FBQ0MsTUFBWCxDQUFrQlMsSUFBbEIsQ0FBdUI3QixNQUF2Qjs7QUFDQSxVQUFJaUIsT0FBSixFQUFhO0FBQ1pFLFFBQUFBLFVBQVUsQ0FBQ0MsTUFBWCxDQUFrQlMsSUFBbEIsQ0FBdUJaLE9BQXZCO0FBQ0E7QUFDRDs7QUFDRCxXQUFPRSxVQUFQO0FBQ0E7QUFFRDs7Ozs7QUFDTyxXQUFTVyxXQUFULENBQXFCQyxTQUFyQixFQUFnRDtBQUN0RCxXQUFPQSxTQUFTLENBQUM3QixPQUFWLENBQWtCLEdBQWxCLElBQXlCLENBQXpCLEdBQTZCNkIsU0FBUyxDQUFDM0IsS0FBVixDQUFnQixHQUFoQixFQUFxQixDQUFyQixDQUE3QixHQUF1RDJCLFNBQTlEO0FBQ0E7Ozs7QUFFRCxXQUFTQyxtQ0FBVCxDQUNDQyxNQURELEVBRUNDLFNBRkQsRUFHQ0MsYUFIRCxFQUlDQyxtQkFKRCxFQUtTO0FBQ1IsUUFBTUMsV0FBa0IsR0FBRyxFQUEzQjtBQUNBSixJQUFBQSxNQUFNLFNBQU4sSUFBQUEsTUFBTSxXQUFOLFlBQUFBLE1BQU0sQ0FBRUssT0FBUixDQUFnQixVQUFDQyxLQUFELEVBQWdCO0FBQy9CLFVBQU1wQixVQUFVLEdBQUdpQixtQkFBbUIsR0FBR0EsbUJBQW1CLENBQUNHLEtBQUQsRUFBUUwsU0FBUixFQUFtQkMsYUFBbkIsQ0FBdEIsR0FBMERLLGFBQWEsQ0FBQ0QsS0FBRCxFQUFRTCxTQUFSLENBQTdHOztBQUNBLFVBQUlmLFVBQUosRUFBZ0I7QUFDZmtCLFFBQUFBLFdBQVcsQ0FBQ1IsSUFBWixDQUFpQlYsVUFBakI7QUFDQTtBQUNELEtBTEQ7QUFNQSxXQUFPa0IsV0FBUDtBQUNBOztBQUVELFdBQVNJLFlBQVQsQ0FBc0JDLFlBQXRCLEVBQTRDQyxTQUE1QyxFQUF1RUMsYUFBdkUsRUFBc0g7QUFDckgsUUFBTUMsY0FBYyxHQUFHSCxZQUFZLENBQUNsQixXQUFiLENBQXlCLEdBQXpCLENBQXZCO0FBQ0EsUUFBTXNCLGNBQWMsR0FBR0QsY0FBYyxHQUFHLENBQUMsQ0FBbEIsR0FBc0JILFlBQVksQ0FBQ2pCLFNBQWIsQ0FBdUIsQ0FBdkIsRUFBMEJpQixZQUFZLENBQUNsQixXQUFiLENBQXlCLEdBQXpCLElBQWdDLENBQTFELENBQXRCLEdBQXFGLEVBQTVHO0FBQ0EsUUFBTXVCLFVBQVUsR0FBR0osU0FBUyxDQUFDSyxTQUFWLFdBQXVCSixhQUF2QixjQUF3Q0UsY0FBeEMsRUFBbkI7QUFDQSxXQUFPQyxVQUFQLGFBQU9BLFVBQVAsdUJBQU9BLFVBQVUsQ0FBR0wsWUFBWSxDQUFDTyxPQUFiLENBQXFCSCxjQUFyQixFQUFxQyxFQUFyQyxDQUFILENBQWpCO0FBQ0E7O0FBRUQsV0FBU0ksdUNBQVQsQ0FDQ0MsWUFERCxFQUVDUixTQUZELEVBR0NDLGFBSEQsRUFJQ1IsbUJBSkQsRUFLc0M7QUFDckMsUUFBTU0sWUFBaUIsR0FBR1MsWUFBWSxDQUFDQyxZQUF2QztBQUFBLFFBQ0NDLGdCQUFvRCxHQUFHLEVBRHhEO0FBQUEsUUFFQ0MsWUFBb0IsR0FBR1osWUFBWSxDQUFDYSxLQUFiLElBQXNCYixZQUFZLENBQUNjLGFBRjNEO0FBQUEsUUFHQ3ZCLE1BQWlDLEdBQUdrQixZQUFZLENBQUNsQixNQUhsRDs7QUFJQSxRQUFNd0IsY0FBYyxHQUFHaEIsWUFBWSxDQUFDYSxZQUFELEVBQWVYLFNBQWYsRUFBMEJDLGFBQTFCLENBQW5DOztBQUNBLFFBQUlhLGNBQUosRUFBb0I7QUFDbkIsVUFBTUMsVUFBaUIsR0FBRzFCLG1DQUFtQyxDQUFDQyxNQUFELEVBQVN3QixjQUFULEVBQXlCSCxZQUF6QixFQUF1Q2xCLG1CQUF2QyxDQUE3RDs7QUFDQSxVQUFJc0IsVUFBVSxDQUFDdkQsTUFBZixFQUF1QjtBQUN0QmtELFFBQUFBLGdCQUFnQixDQUFDQyxZQUFELENBQWhCLEdBQWlDLENBQUNELGdCQUFnQixDQUFDQyxZQUFELENBQWhCLElBQWtDLEVBQW5DLEVBQXVDSyxNQUF2QyxDQUE4Q0QsVUFBOUMsQ0FBakM7QUFDQTtBQUNEOztBQUNELFdBQU9MLGdCQUFQO0FBQ0E7O0FBRU0sV0FBU08sd0NBQVQsQ0FDTkMsY0FETSxFQUVOQyxVQUZNLEVBR05DLGdCQUhNLEVBSU4zQixtQkFKTSxFQUsrQjtBQUNyQyxRQUFJNEIsaUJBQXFELEdBQUcsRUFBNUQ7O0FBQ0EsUUFBSSxDQUFDRCxnQkFBTCxFQUF1QjtBQUN0QixhQUFPQyxpQkFBUDtBQUNBOztBQUNELFFBQU1DLGNBQWMsR0FBR0YsZ0JBQWdCLENBQUNHLGFBQXhDO0FBQUEsUUFDQ0MsV0FBVyxHQUFHSixnQkFBZ0IsQ0FBQ0ssVUFEaEM7QUFFQUgsSUFBQUEsY0FBYyxTQUFkLElBQUFBLGNBQWMsV0FBZCxZQUFBQSxjQUFjLENBQUUzQixPQUFoQixDQUF3QixVQUFDYSxZQUFELEVBQW9DO0FBQzNELFVBQU1ULFlBQWlCLEdBQUdTLFlBQVksQ0FBQ0MsWUFBdkM7QUFBQSxVQUNDakIsYUFBcUIsR0FBR08sWUFBWSxDQUFDYSxLQUFiLElBQXNCYixZQUFZLENBQUNjLGFBRDVEOztBQUVBLFVBQUlhLE1BQU0sQ0FBQ0MsSUFBUCxDQUFZTixpQkFBWixFQUErQk8sUUFBL0IsQ0FBd0NwQyxhQUF4QyxDQUFKLEVBQTREO0FBQzNENkIsUUFBQUEsaUJBQWlCLENBQUM3QixhQUFELENBQWpCLEdBQW1DNkIsaUJBQWlCLENBQUM3QixhQUFELENBQWpCLENBQWlDd0IsTUFBakMsQ0FDbENULHVDQUF1QyxDQUFDQyxZQUFELEVBQWVXLFVBQWYsRUFBMkJELGNBQTNCLEVBQTJDekIsbUJBQTNDLENBQXZDLENBQXVHRCxhQUF2RyxDQURrQyxDQUFuQztBQUdBLE9BSkQsTUFJTztBQUNONkIsUUFBQUEsaUJBQWlCLG1DQUNiQSxpQkFEYSxHQUViZCx1Q0FBdUMsQ0FBQ0MsWUFBRCxFQUFlVyxVQUFmLEVBQTJCRCxjQUEzQixFQUEyQ3pCLG1CQUEzQyxDQUYxQixDQUFqQjtBQUlBO0FBQ0QsS0FiRDtBQWNBK0IsSUFBQUEsV0FBVyxTQUFYLElBQUFBLFdBQVcsV0FBWCxZQUFBQSxXQUFXLENBQUU3QixPQUFiLENBQXFCLFVBQUNrQyxTQUFELEVBQW9CO0FBQ3hDLFVBQU1DLGFBQWEsR0FBR0QsU0FBUyxDQUFDcEIsWUFBVixDQUF1QkcsS0FBdkIsSUFBZ0NpQixTQUFTLENBQUNwQixZQUFWLENBQXVCSSxhQUE3RTtBQUNBLFVBQU1yQyxVQUFlLEdBQUdpQixtQkFBbUIsR0FDeEM7QUFBRVIsUUFBQUEsUUFBUSxFQUFFLElBQVo7QUFBa0I4QyxRQUFBQSxNQUFNLEVBQUVGLFNBQVMsQ0FBQ0csYUFBcEM7QUFBbURDLFFBQUFBLE1BQU0sRUFBRSxJQUEzRDtBQUFpRUMsUUFBQUEsSUFBSSxFQUFFSixhQUF2RTtBQUFzRkssUUFBQUEsV0FBVyxFQUFFO0FBQW5HLE9BRHdDLEdBRXhDO0FBQ0FsRCxRQUFBQSxRQUFRLEVBQUUsSUFEVjtBQUVBUixRQUFBQSxNQUFNLEVBQUUsQ0FBQ29ELFNBQVMsQ0FBQ0csYUFBWCxDQUZSO0FBR0F0RCxRQUFBQSxPQUFPLEVBQUUsSUFIVDtBQUlBMEQsUUFBQUEsU0FBUyxFQUFFQyxrQkFBa0IsQ0FBQ0MsU0FKOUI7QUFLQUgsUUFBQUEsV0FBVyxFQUFFO0FBTGIsT0FGSDtBQVNBZCxNQUFBQSxpQkFBaUIsQ0FBQ1MsYUFBRCxDQUFqQixHQUFtQyxDQUFDdEQsVUFBRCxDQUFuQztBQUNBLEtBWkQ7QUFjQSxXQUFPNkMsaUJBQVA7QUFDQTs7OztBQUVNLFdBQVN4QixhQUFULENBQXVCRCxLQUF2QixFQUFtQzJDLGNBQW5DLEVBQXFGO0FBQzNGLFFBQUkvRCxVQUFKO0FBQ0EsUUFBTWdFLElBQXdCLEdBQUc1QyxLQUFLLENBQUM2QyxJQUF2QztBQUNBLFFBQU12RSxPQUEyQixHQUFHMEIsS0FBSyxDQUFDOEMsTUFBTixHQUFldkQsV0FBVyxDQUFDUyxLQUFLLENBQUM4QyxNQUFQLENBQTFCLEdBQTJDaEYsU0FBL0U7QUFDQSxRQUFNaUYsT0FBWSxHQUFHL0UscUJBQXFCLENBQUNnQyxLQUFLLENBQUNnRCxHQUFQLEVBQVlMLGNBQWMsQ0FBQ00sS0FBZixJQUF3Qk4sY0FBYyxDQUFDTyxJQUFuRCxDQUExQztBQUNBLFFBQU14RSxPQUFZLEdBQUdzQixLQUFLLENBQUNtRCxJQUFOLEdBQWFuRixxQkFBcUIsQ0FBQ2dDLEtBQUssQ0FBQ21ELElBQVAsRUFBYVIsY0FBYyxDQUFDTSxLQUFmLElBQXdCTixjQUFjLENBQUNPLElBQXBELENBQWxDLEdBQThGcEYsU0FBbkg7QUFDQSxRQUFNc0YsZ0JBQWdCLEdBQUcvRSxzQkFBc0IsQ0FBQ0MsT0FBRCxFQUFVeUUsT0FBVixFQUFtQnJFLE9BQW5CLEVBQTRCa0UsSUFBNUIsQ0FBL0M7O0FBQ0EsUUFBSVEsZ0JBQUosRUFBc0I7QUFDckJ4RSxNQUFBQSxVQUFVLEdBQUd5RSxTQUFTLENBQUNDLGVBQVYsQ0FDWkYsZ0JBQWdCLENBQUMvRCxRQURMLEVBRVorRCxnQkFBZ0IsQ0FBQ3ZFLE1BRkwsRUFHWixJQUhZLEVBSVosSUFKWSxFQUtaNEQsa0JBQWtCLENBQUNDLFNBTFAsQ0FBYjtBQU9BOztBQUNELFdBQU85RCxVQUFQO0FBQ0E7Ozs7QUFFRCxNQUFNMkUsc0JBQXNCLEdBQUcsVUFBVUMsUUFBVixFQUF5QkMsVUFBekIsRUFBOEU7QUFDNUcsUUFBTTNDLGdCQUFvRCxHQUFHLEVBQTdEO0FBQ0EsUUFBTVQsYUFBYSxHQUFHbUQsUUFBUSxDQUFDRSxZQUFULENBQXNCLENBQXRCLEVBQXlCQyxPQUF6QixFQUF0QjtBQUFBLFFBQ0NwQyxVQUFVLEdBQUdpQyxRQUFRLENBQUNFLFlBQVQsQ0FBc0IsQ0FBdEIsRUFBeUJFLFFBQXpCLEVBRGQ7O0FBRUEsUUFBSUgsVUFBSixFQUFnQjtBQUNmLFdBQUssSUFBTUksR0FBWCxJQUFrQkosVUFBbEIsRUFBOEI7QUFDN0IsWUFBTUssa0JBQWtCLEdBQUd2QyxVQUFVLENBQUNkLFNBQVgsV0FBd0JKLGFBQXhCLGNBQXlDd0QsR0FBekMsd0RBQTNCOztBQUNBLFlBQUlDLGtCQUFrQixLQUFLaEcsU0FBM0IsRUFBc0M7QUFDckMsY0FBTStDLFlBQVksR0FBR2dELEdBQXJCO0FBQ0EvQyxVQUFBQSxnQkFBZ0IsQ0FBQ0QsWUFBRCxDQUFoQixHQUFpQyxDQUNoQ3dDLFNBQVMsQ0FBQ0MsZUFBVixDQUEwQixJQUExQixFQUFnQyxDQUFDUSxrQkFBRCxDQUFoQyxFQUFzRCxJQUF0RCxFQUE0RCxJQUE1RCxFQUFrRXJCLGtCQUFrQixDQUFDQyxTQUFyRixDQURnQyxDQUFqQztBQUdBO0FBQ0Q7QUFDRDs7QUFDRCxXQUFPNUIsZ0JBQVA7QUFDQSxHQWhCRDs7QUFrQkEsTUFBTWlELDZCQUE2QixHQUFHLFVBQ3JDUCxRQURxQyxFQUVyQ0MsVUFGcUMsRUFHckNPLG9CQUhxQyxFQUlBO0FBQ3JDLFFBQU1sRCxnQkFBb0QsR0FBRyxFQUE3RDs7QUFDQSxRQUFJMkMsVUFBSixFQUFnQjtBQUNmLFdBQUssSUFBTUksR0FBWCxJQUFrQkosVUFBbEIsRUFBOEI7QUFDN0I7QUFDQSxZQUFJTyxvQkFBb0IsQ0FBQ0gsR0FBRCxDQUFwQixJQUE2Qkcsb0JBQW9CLENBQUNILEdBQUQsQ0FBcEIsQ0FBMEIsQ0FBMUIsQ0FBakMsRUFBK0Q7QUFDOUQvQyxVQUFBQSxnQkFBZ0IsQ0FBQytDLEdBQUQsQ0FBaEIsR0FBd0IsQ0FDdkJSLFNBQVMsQ0FBQ0MsZUFBVixDQUEwQlUsb0JBQW9CLENBQUNILEdBQUQsQ0FBcEIsQ0FBMEIsQ0FBMUIsRUFBNkJ4RSxRQUF2RCxFQUFpRSxFQUFqRSxFQUFxRSxJQUFyRSxFQUEyRSxJQUEzRSxFQUFpRixJQUFqRixDQUR1QixDQUF4QjtBQUdBO0FBQ0Q7QUFDRDs7QUFDRCxXQUFPeUIsZ0JBQVA7QUFDQSxHQWpCRDs7QUFtQkEsV0FBU21ELG1CQUFULEdBQW1FO0FBQ2xFLFFBQU1DLGlCQUFxRCxHQUFHLEVBQTlEO0FBQ0FBLElBQUFBLGlCQUFpQixDQUFDLFlBQUQsQ0FBakIsR0FBa0MsQ0FDakNiLFNBQVMsQ0FBQ0MsZUFBVixDQUEwQixrQkFBMUIsRUFBOEMsQ0FBQyxLQUFELENBQTlDLEVBQXVELElBQXZELEVBQTZELElBQTdELEVBQW1FYixrQkFBa0IsQ0FBQ0MsU0FBdEYsQ0FEaUMsQ0FBbEM7QUFHQSxXQUFPd0IsaUJBQVA7QUFDQTs7QUFFTSxXQUFTQyxtQkFBVCxDQUE2QlgsUUFBN0IsRUFBNEMxQyxnQkFBNUMsRUFBdUc7QUFBQTs7QUFDN0csUUFBSXNELGVBQUo7QUFDQSxRQUFNL0QsYUFBYSxHQUFHbUQsUUFBUSxDQUFDRSxZQUFULENBQXNCLENBQXRCLEVBQXlCQyxPQUF6QixFQUF0QjtBQUFBLFFBQ0NwQyxVQUFVLEdBQUdpQyxRQUFRLENBQUNFLFlBQVQsQ0FBc0IsQ0FBdEIsRUFBeUJFLFFBQXpCLEVBRGQ7QUFBQSxRQUVDUyxxQkFBcUIsR0FBRzlDLFVBQVUsQ0FBQ2QsU0FBWCxXQUF3QkosYUFBeEIsT0FGekI7QUFBQSxRQUdDaUUsb0JBQW9CLEdBQUcvQyxVQUFVLENBQUNkLFNBQVgsV0FBd0JKLGFBQXhCLE9BSHhCOztBQUlBLFFBQ0NnRSxxQkFBcUIsQ0FBQywyQ0FBRCxDQUFyQixJQUNBQSxxQkFBcUIsQ0FBQywyQ0FBRCxDQUZ0QixFQUdFO0FBQ0RELE1BQUFBLGVBQWUsR0FBR0gsbUJBQW1CLEVBQXJDO0FBQ0E7O0FBQ0QsUUFBTXpDLGdCQUFnQix3QkFBR1YsZ0JBQUgsc0RBQUcsa0JBQWtCVSxnQkFBM0M7QUFDQSxRQUFNd0Msb0JBQW9CLEdBQUcsdUJBQUFsRCxnQkFBZ0IsVUFBaEIsZ0VBQWtCa0Qsb0JBQWxCLEtBQTBDLEVBQXZFO0FBQ0EsUUFBTU8sY0FBYyxHQUFHaEIsc0JBQXNCLENBQUNDLFFBQUQsRUFBV2Msb0JBQVgsQ0FBN0M7QUFDQSxRQUFNRSwwQkFBMEIsR0FBR1QsNkJBQTZCLENBQUNQLFFBQUQsRUFBV2Msb0JBQVgsRUFBaUNOLG9CQUFqQyxDQUFoRTs7QUFDQSxRQUFJeEMsZ0JBQUosRUFBc0I7QUFDckJWLE1BQUFBLGdCQUFnQixHQUFHTyx3Q0FBd0MsQ0FBQ2hCLGFBQUQsRUFBZ0JrQixVQUFoQixFQUE0QkMsZ0JBQTVCLENBQTNEO0FBQ0EsS0FGRCxNQUVPLElBQUkrQyxjQUFKLEVBQW9CO0FBQzFCekQsTUFBQUEsZ0JBQWdCLEdBQUd5RCxjQUFuQjtBQUNBOztBQUNELFFBQUlDLDBCQUFKLEVBQWdDO0FBQy9CO0FBQ0E7QUFDQTtBQUNBMUQsTUFBQUEsZ0JBQWdCLG1DQUFRQSxnQkFBUixHQUE2QjBELDBCQUE3QixDQUFoQjtBQUNBOztBQUNELFFBQUlKLGVBQUosRUFBcUI7QUFDcEJ0RCxNQUFBQSxnQkFBZ0IsbUNBQVFBLGdCQUFSLEdBQTZCc0QsZUFBN0IsQ0FBaEI7QUFDQTs7QUFDRCxXQUFRdEMsTUFBTSxDQUFDQyxJQUFQLENBQVlqQixnQkFBWixFQUE4QmxELE1BQTlCLEdBQXVDLENBQXZDLEdBQTJDNkcsSUFBSSxDQUFDQyxTQUFMLENBQWU1RCxnQkFBZixFQUFpQ0osT0FBakMsQ0FBeUMsV0FBekMsRUFBc0QsTUFBdEQsQ0FBM0MsR0FBMkc1QyxTQUFuSDtBQUNBOzs7QUFFRHFHLEVBQUFBLG1CQUFtQixDQUFDUSxnQkFBcEIsR0FBdUMsSUFBdkMiLCJzb3VyY2VSb290IjoiLiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgU2VsZWN0aW9uUmFuZ2VUeXBlVHlwZXMsIFNlbGVjdGlvblZhcmlhbnRUeXBlVHlwZXMsIFNlbGVjdE9wdGlvblR5cGUgfSBmcm9tIFwiQHNhcC11eC92b2NhYnVsYXJpZXMtdHlwZXMvdm9jYWJ1bGFyaWVzL1VJXCI7XG5pbXBvcnQgTG9nIGZyb20gXCJzYXAvYmFzZS9Mb2dcIjtcbmltcG9ydCB0eXBlIHsgQ29uZGl0aW9uT2JqZWN0IH0gZnJvbSBcInNhcC91aS9tZGMvY29uZGl0aW9uL0NvbmRpdGlvblwiO1xuaW1wb3J0IENvbmRpdGlvbiBmcm9tIFwic2FwL3VpL21kYy9jb25kaXRpb24vQ29uZGl0aW9uXCI7XG5pbXBvcnQgQ29uZGl0aW9uVmFsaWRhdGVkIGZyb20gXCJzYXAvdWkvbWRjL2VudW0vQ29uZGl0aW9uVmFsaWRhdGVkXCI7XG5pbXBvcnQgdHlwZSBPRGF0YU1ldGFNb2RlbCBmcm9tIFwic2FwL3VpL21vZGVsL29kYXRhL3Y0L09EYXRhTWV0YU1vZGVsXCI7XG5leHBvcnQgdHlwZSBGaWx0ZXJDb25kaXRpb25zID0ge1xuXHRvcGVyYXRvcjogc3RyaW5nO1xuXHR2YWx1ZXM6IEFycmF5PHN0cmluZz47XG5cdGlzRW1wdHk/OiBib29sZWFuIHwgbnVsbDtcblx0dmFsaWRhdGVkPzogc3RyaW5nO1xufTtcblxuY29uc3QgYVZhbGlkVHlwZXMgPSBbXG5cdFwiRWRtLkJvb2xlYW5cIixcblx0XCJFZG0uQnl0ZVwiLFxuXHRcIkVkbS5EYXRlXCIsXG5cdFwiRWRtLkRhdGVUaW1lXCIsXG5cdFwiRWRtLkRhdGVUaW1lT2Zmc2V0XCIsXG5cdFwiRWRtLkRlY2ltYWxcIixcblx0XCJFZG0uRG91YmxlXCIsXG5cdFwiRWRtLkZsb2F0XCIsXG5cdFwiRWRtLkd1aWRcIixcblx0XCJFZG0uSW50MTZcIixcblx0XCJFZG0uSW50MzJcIixcblx0XCJFZG0uSW50NjRcIixcblx0XCJFZG0uU0J5dGVcIixcblx0XCJFZG0uU2luZ2xlXCIsXG5cdFwiRWRtLlN0cmluZ1wiLFxuXHRcIkVkbS5UaW1lXCIsXG5cdFwiRWRtLlRpbWVPZkRheVwiXG5dO1xuXG5jb25zdCBvRXhjbHVkZU1hcDogUmVjb3JkPHN0cmluZywgYW55PiA9IHtcblx0XCJDb250YWluc1wiOiBcIk5vdENvbnRhaW5zXCIsXG5cdFwiU3RhcnRzV2l0aFwiOiBcIk5vdFN0YXJ0c1dpdGhcIixcblx0XCJFbmRzV2l0aFwiOiBcIk5vdEVuZHNXaXRoXCIsXG5cdFwiRW1wdHlcIjogXCJOb3RFbXB0eVwiLFxuXHRcIk5vdEVtcHR5XCI6IFwiRW1wdHlcIixcblx0XCJMRVwiOiBcIk5PVExFXCIsXG5cdFwiR0VcIjogXCJOT1RHRVwiLFxuXHRcIkxUXCI6IFwiTk9UTFRcIixcblx0XCJHVFwiOiBcIk5PVEdUXCIsXG5cdFwiQlRcIjogXCJOT1RCVFwiLFxuXHRcIk5FXCI6IFwiRVFcIixcblx0XCJFUVwiOiBcIk5FXCJcbn07XG5cbmV4cG9ydCBmdW5jdGlvbiBfZ2V0RGF0ZVRpbWVPZmZzZXRDb21wbGlhbnRWYWx1ZShzVmFsdWU6IGFueSk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG5cdGxldCBvVmFsdWU7XG5cdGlmIChzVmFsdWUubWF0Y2goL14oXFxkezR9KS0oXFxkezEsMn0pLShcXGR7MSwyfSlUKFxcZHsxLDJ9KTooXFxkezEsMn0pOihcXGR7MSwyfSlcXCsoXFxkezEsNH0pLykpIHtcblx0XHRvVmFsdWUgPSBzVmFsdWUubWF0Y2goL14oXFxkezR9KS0oXFxkezEsMn0pLShcXGR7MSwyfSlUKFxcZHsxLDJ9KTooXFxkezEsMn0pOihcXGR7MSwyfSlcXCsoXFxkezEsNH0pLylbMF07XG5cdH0gZWxzZSBpZiAoc1ZhbHVlLm1hdGNoKC9eKFxcZHs0fSktKFxcZHsxLDJ9KS0oXFxkezEsMn0pVChcXGR7MSwyfSk6KFxcZHsxLDJ9KTooXFxkezEsMn0pLykpIHtcblx0XHRvVmFsdWUgPSBgJHtzVmFsdWUubWF0Y2goL14oXFxkezR9KS0oXFxkezEsMn0pLShcXGR7MSwyfSlUKFxcZHsxLDJ9KTooXFxkezEsMn0pOihcXGR7MSwyfSkvKVswXX0rMDAwMGA7XG5cdH0gZWxzZSBpZiAoc1ZhbHVlLm1hdGNoKC9eKFxcZHs0fSktKFxcZHsxLDJ9KS0oXFxkezEsMn0pLykpIHtcblx0XHRvVmFsdWUgPSBgJHtzVmFsdWUubWF0Y2goL14oXFxkezR9KS0oXFxkezEsMn0pLShcXGR7MSwyfSkvKVswXX1UMDA6MDA6MDArMDAwMGA7XG5cdH0gZWxzZSBpZiAoc1ZhbHVlLmluZGV4T2YoXCJaXCIpID09PSBzVmFsdWUubGVuZ3RoIC0gMSkge1xuXHRcdG9WYWx1ZSA9IGAke3NWYWx1ZS5zcGxpdChcIlpcIilbMF19KzAxMDBgO1xuXHR9IGVsc2Uge1xuXHRcdG9WYWx1ZSA9IHVuZGVmaW5lZDtcblx0fVxuXHRyZXR1cm4gb1ZhbHVlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gX2dldERhdGVDb21wbGlhbnRWYWx1ZShzVmFsdWU6IGFueSk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG5cdHJldHVybiBzVmFsdWUubWF0Y2goL14oXFxkezR9KS0oXFxkezEsMn0pLShcXGR7MSwyfSkvKVxuXHRcdD8gc1ZhbHVlLm1hdGNoKC9eKFxcZHs0fSktKFxcZHsxLDJ9KS0oXFxkezEsMn0pLylbMF1cblx0XHQ6IHNWYWx1ZS5tYXRjaCgvXihcXGR7OH0pLykgJiYgc1ZhbHVlLm1hdGNoKC9eKFxcZHs4fSkvKVswXTtcbn1cblxuLyoqXG4gKiBNZXRob2QgdG8gZ2V0IHRoZSBjb21wbGlhbnQgdmFsdWUgdHlwZSBiYXNlZCBvbiB0aGUgZGF0YSB0eXBlLlxuICpcbiAqIEBwYXJhbSAgc1ZhbHVlIFJhdyB2YWx1ZVxuICogQHBhcmFtICBzVHlwZSBUaGUgcHJvcGVydHkgdHlwZVxuICogQHJldHVybnMgVmFsdWUgdG8gYmUgcHJvcGFnYXRlZCB0byB0aGUgY29uZGl0aW9uLlxuICovXG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRUeXBlQ29tcGxpYW50VmFsdWUoc1ZhbHVlOiBhbnksIHNUeXBlOiBzdHJpbmcpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuXHRsZXQgb1ZhbHVlO1xuXHRpZiAoYVZhbGlkVHlwZXMuaW5kZXhPZihzVHlwZSkgPT09IC0xKSB7XG5cdFx0cmV0dXJuIHVuZGVmaW5lZDtcblx0fVxuXHRvVmFsdWUgPSBzVmFsdWU7XG5cdHN3aXRjaCAoc1R5cGUpIHtcblx0XHRjYXNlIFwiRWRtLkJvb2xlYW5cIjpcblx0XHRcdG9WYWx1ZSA9IHNWYWx1ZSA9PT0gXCJ0cnVlXCIgfHwgKHNWYWx1ZSA9PT0gXCJmYWxzZVwiID8gZmFsc2UgOiB1bmRlZmluZWQpO1xuXHRcdFx0YnJlYWs7XG5cdFx0Y2FzZSBcIkVkbS5Eb3VibGVcIjpcblx0XHRjYXNlIFwiRWRtLlNpbmdsZVwiOlxuXHRcdFx0b1ZhbHVlID0gaXNOYU4oc1ZhbHVlKSA/IHVuZGVmaW5lZCA6IHBhcnNlRmxvYXQoc1ZhbHVlKTtcblx0XHRcdGJyZWFrO1xuXHRcdGNhc2UgXCJFZG0uQnl0ZVwiOlxuXHRcdGNhc2UgXCJFZG0uSW50MTZcIjpcblx0XHRjYXNlIFwiRWRtLkludDMyXCI6XG5cdFx0Y2FzZSBcIkVkbS5TQnl0ZVwiOlxuXHRcdFx0b1ZhbHVlID0gaXNOYU4oc1ZhbHVlKSA/IHVuZGVmaW5lZCA6IHBhcnNlSW50KHNWYWx1ZSwgMTApO1xuXHRcdFx0YnJlYWs7XG5cdFx0Y2FzZSBcIkVkbS5EYXRlXCI6XG5cdFx0XHRvVmFsdWUgPSBfZ2V0RGF0ZUNvbXBsaWFudFZhbHVlKHNWYWx1ZSk7XG5cdFx0XHRicmVhaztcblx0XHRjYXNlIFwiRWRtLkRhdGVUaW1lT2Zmc2V0XCI6XG5cdFx0XHRvVmFsdWUgPSBfZ2V0RGF0ZVRpbWVPZmZzZXRDb21wbGlhbnRWYWx1ZShzVmFsdWUpO1xuXHRcdFx0YnJlYWs7XG5cdFx0Y2FzZSBcIkVkbS5UaW1lT2ZEYXlcIjpcblx0XHRcdG9WYWx1ZSA9IHNWYWx1ZS5tYXRjaCgvKFxcZHsxLDJ9KTooXFxkezEsMn0pOihcXGR7MSwyfSkvKSA/IHNWYWx1ZS5tYXRjaCgvKFxcZHsxLDJ9KTooXFxkezEsMn0pOihcXGR7MSwyfSkvKVswXSA6IHVuZGVmaW5lZDtcblx0XHRcdGJyZWFrO1xuXHRcdGRlZmF1bHQ6XG5cdH1cblxuXHRyZXR1cm4gb1ZhbHVlID09PSBudWxsID8gdW5kZWZpbmVkIDogb1ZhbHVlO1xufVxuXG4vKipcbiAqIE1ldGhvZCB0byBjcmVhdGUgYSBjb25kaXRpb24uXG4gKlxuICogQHBhcmFtICBzT3B0aW9uIE9wZXJhdG9yIHRvIGJlIHVzZWQuXG4gKiBAcGFyYW0gIG9WMSBMb3dlciB2YWx1ZVxuICogQHBhcmFtICBvVjIgSGlnaGVyIHZhbHVlXG4gKiBAcGFyYW0gc1NpZ25cbiAqIEByZXR1cm5zIENvbmRpdGlvbiB0byBiZSBjcmVhdGVkXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZXNvbHZlQ29uZGl0aW9uVmFsdWVzKHNPcHRpb246IHN0cmluZyB8IHVuZGVmaW5lZCwgb1YxOiBhbnksIG9WMjogYW55LCBzU2lnbjogc3RyaW5nIHwgdW5kZWZpbmVkKSB7XG5cdGxldCBvVmFsdWUgPSBvVjEsXG5cdFx0b1ZhbHVlMixcblx0XHRzSW50ZXJuYWxPcGVyYXRpb246IGFueTtcblx0Y29uc3Qgb0NvbmRpdGlvbjogUmVjb3JkPHN0cmluZywgRmlsdGVyQ29uZGl0aW9uc1tdPiA9IHt9O1xuXHRvQ29uZGl0aW9uLnZhbHVlcyA9IFtdO1xuXHRvQ29uZGl0aW9uLmlzRW1wdHkgPSBudWxsIGFzIGFueTtcblx0aWYgKG9WMSA9PT0gdW5kZWZpbmVkIHx8IG9WMSA9PT0gbnVsbCkge1xuXHRcdHJldHVybjtcblx0fVxuXG5cdHN3aXRjaCAoc09wdGlvbikge1xuXHRcdGNhc2UgXCJDUFwiOlxuXHRcdFx0c0ludGVybmFsT3BlcmF0aW9uID0gXCJDb250YWluc1wiO1xuXHRcdFx0aWYgKG9WYWx1ZSkge1xuXHRcdFx0XHRjb25zdCBuSW5kZXhPZiA9IG9WYWx1ZS5pbmRleE9mKFwiKlwiKTtcblx0XHRcdFx0Y29uc3Qgbkxhc3RJbmRleCA9IG9WYWx1ZS5sYXN0SW5kZXhPZihcIipcIik7XG5cblx0XHRcdFx0Ly8gb25seSB3aGVuIHRoZXJlIGFyZSAnKicgYXQgYWxsXG5cdFx0XHRcdGlmIChuSW5kZXhPZiA+IC0xKSB7XG5cdFx0XHRcdFx0aWYgKG5JbmRleE9mID09PSAwICYmIG5MYXN0SW5kZXggIT09IG9WYWx1ZS5sZW5ndGggLSAxKSB7XG5cdFx0XHRcdFx0XHRzSW50ZXJuYWxPcGVyYXRpb24gPSBcIkVuZHNXaXRoXCI7XG5cdFx0XHRcdFx0XHRvVmFsdWUgPSBvVmFsdWUuc3Vic3RyaW5nKDEsIG9WYWx1ZS5sZW5ndGgpO1xuXHRcdFx0XHRcdH0gZWxzZSBpZiAobkluZGV4T2YgIT09IDAgJiYgbkxhc3RJbmRleCA9PT0gb1ZhbHVlLmxlbmd0aCAtIDEpIHtcblx0XHRcdFx0XHRcdHNJbnRlcm5hbE9wZXJhdGlvbiA9IFwiU3RhcnRzV2l0aFwiO1xuXHRcdFx0XHRcdFx0b1ZhbHVlID0gb1ZhbHVlLnN1YnN0cmluZygwLCBvVmFsdWUubGVuZ3RoIC0gMSk7XG5cdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdG9WYWx1ZSA9IG9WYWx1ZS5zdWJzdHJpbmcoMSwgb1ZhbHVlLmxlbmd0aCAtIDEpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRMb2cud2FybmluZyhcIkNvbnRhaW5zIE9wdGlvbiBjYW5ub3QgYmUgdXNlZCB3aXRob3V0ICcqJy5cIik7XG5cdFx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0XHRicmVhaztcblx0XHRjYXNlIFwiRVFcIjpcblx0XHRcdHNJbnRlcm5hbE9wZXJhdGlvbiA9IG9WMSA9PT0gXCJcIiA/IFwiRW1wdHlcIiA6IHNPcHRpb247XG5cdFx0XHRicmVhaztcblx0XHRjYXNlIFwiTkVcIjpcblx0XHRcdHNJbnRlcm5hbE9wZXJhdGlvbiA9IG9WMSA9PT0gXCJcIiA/IFwiTm90RW1wdHlcIiA6IHNPcHRpb247XG5cdFx0XHRicmVhaztcblx0XHRjYXNlIFwiQlRcIjpcblx0XHRcdGlmIChvVjIgPT09IHVuZGVmaW5lZCB8fCBvVjIgPT09IG51bGwpIHtcblx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0fVxuXHRcdFx0b1ZhbHVlMiA9IG9WMjtcblx0XHRcdHNJbnRlcm5hbE9wZXJhdGlvbiA9IHNPcHRpb247XG5cdFx0XHRicmVhaztcblx0XHRjYXNlIFwiTEVcIjpcblx0XHRjYXNlIFwiR0VcIjpcblx0XHRjYXNlIFwiR1RcIjpcblx0XHRjYXNlIFwiTFRcIjpcblx0XHRcdHNJbnRlcm5hbE9wZXJhdGlvbiA9IHNPcHRpb247XG5cdFx0XHRicmVhaztcblx0XHRkZWZhdWx0OlxuXHRcdFx0TG9nLndhcm5pbmcoYFNlbGVjdGlvbiBPcHRpb24gaXMgbm90IHN1cHBvcnRlZCA6ICcke3NPcHRpb259J2ApO1xuXHRcdFx0cmV0dXJuO1xuXHR9XG5cdGlmIChzU2lnbiA9PT0gXCJFXCIpIHtcblx0XHRzSW50ZXJuYWxPcGVyYXRpb24gPSBvRXhjbHVkZU1hcFtzSW50ZXJuYWxPcGVyYXRpb25dO1xuXHR9XG5cdG9Db25kaXRpb24ub3BlcmF0b3IgPSBzSW50ZXJuYWxPcGVyYXRpb247XG5cdGlmIChzSW50ZXJuYWxPcGVyYXRpb24gIT09IFwiRW1wdHlcIikge1xuXHRcdG9Db25kaXRpb24udmFsdWVzLnB1c2gob1ZhbHVlKTtcblx0XHRpZiAob1ZhbHVlMikge1xuXHRcdFx0b0NvbmRpdGlvbi52YWx1ZXMucHVzaChvVmFsdWUyKTtcblx0XHR9XG5cdH1cblx0cmV0dXJuIG9Db25kaXRpb247XG59XG5cbi8qIE1ldGhvZCB0byBnZXQgdGhlIG9wZXJhdG9yIGZyb20gdGhlIFNlbGVjdGlvbiBPcHRpb24gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRPcGVyYXRvcihzT3BlcmF0b3I6IHN0cmluZyk6IHN0cmluZyB7XG5cdHJldHVybiBzT3BlcmF0b3IuaW5kZXhPZihcIi9cIikgPiAwID8gc09wZXJhdG9yLnNwbGl0KFwiL1wiKVsxXSA6IHNPcGVyYXRvcjtcbn1cblxuZnVuY3Rpb24gX2J1aWxkQ29uZGl0aW9uc0Zyb21TZWxlY3Rpb25SYW5nZXMoXG5cdFJhbmdlczogU2VsZWN0aW9uUmFuZ2VUeXBlVHlwZXNbXSxcblx0b1Byb3BlcnR5OiBSZWNvcmQ8c3RyaW5nLCBvYmplY3Q+LFxuXHRzUHJvcGVydHlOYW1lOiBzdHJpbmcsXG5cdGdldEN1c3RvbUNvbmRpdGlvbnM/OiBGdW5jdGlvblxuKTogYW55W10ge1xuXHRjb25zdCBhQ29uZGl0aW9uczogYW55W10gPSBbXTtcblx0UmFuZ2VzPy5mb3JFYWNoKChSYW5nZTogYW55KSA9PiB7XG5cdFx0Y29uc3Qgb0NvbmRpdGlvbiA9IGdldEN1c3RvbUNvbmRpdGlvbnMgPyBnZXRDdXN0b21Db25kaXRpb25zKFJhbmdlLCBvUHJvcGVydHksIHNQcm9wZXJ0eU5hbWUpIDogZ2V0Q29uZGl0aW9ucyhSYW5nZSwgb1Byb3BlcnR5KTtcblx0XHRpZiAob0NvbmRpdGlvbikge1xuXHRcdFx0YUNvbmRpdGlvbnMucHVzaChvQ29uZGl0aW9uKTtcblx0XHR9XG5cdH0pO1xuXHRyZXR1cm4gYUNvbmRpdGlvbnM7XG59XG5cbmZ1bmN0aW9uIF9nZXRQcm9wZXJ0eShwcm9wZXJ0eU5hbWU6IHN0cmluZywgbWV0YU1vZGVsOiBPRGF0YU1ldGFNb2RlbCwgZW50aXR5U2V0UGF0aDogc3RyaW5nKTogUmVjb3JkPHN0cmluZywgb2JqZWN0PiB7XG5cdGNvbnN0IGxhc3RTbGFzaEluZGV4ID0gcHJvcGVydHlOYW1lLmxhc3RJbmRleE9mKFwiL1wiKTtcblx0Y29uc3QgbmF2aWdhdGlvblBhdGggPSBsYXN0U2xhc2hJbmRleCA+IC0xID8gcHJvcGVydHlOYW1lLnN1YnN0cmluZygwLCBwcm9wZXJ0eU5hbWUubGFzdEluZGV4T2YoXCIvXCIpICsgMSkgOiBcIlwiO1xuXHRjb25zdCBjb2xsZWN0aW9uID0gbWV0YU1vZGVsLmdldE9iamVjdChgJHtlbnRpdHlTZXRQYXRofS8ke25hdmlnYXRpb25QYXRofWApO1xuXHRyZXR1cm4gY29sbGVjdGlvbj8uW3Byb3BlcnR5TmFtZS5yZXBsYWNlKG5hdmlnYXRpb25QYXRoLCBcIlwiKV07XG59XG5cbmZ1bmN0aW9uIF9idWlsZEZpbHRlcnNDb25kaXRpb25zRnJvbVNlbGVjdE9wdGlvbihcblx0c2VsZWN0T3B0aW9uOiBTZWxlY3RPcHRpb25UeXBlLFxuXHRtZXRhTW9kZWw6IE9EYXRhTWV0YU1vZGVsLFxuXHRlbnRpdHlTZXRQYXRoOiBzdHJpbmcsXG5cdGdldEN1c3RvbUNvbmRpdGlvbnM/OiBGdW5jdGlvblxuKTogUmVjb3JkPHN0cmluZywgRmlsdGVyQ29uZGl0aW9uc1tdPiB7XG5cdGNvbnN0IHByb3BlcnR5TmFtZTogYW55ID0gc2VsZWN0T3B0aW9uLlByb3BlcnR5TmFtZSxcblx0XHRmaWx0ZXJDb25kaXRpb25zOiBSZWNvcmQ8c3RyaW5nLCBGaWx0ZXJDb25kaXRpb25zW10+ID0ge30sXG5cdFx0cHJvcGVydHlQYXRoOiBzdHJpbmcgPSBwcm9wZXJ0eU5hbWUudmFsdWUgfHwgcHJvcGVydHlOYW1lLiRQcm9wZXJ0eVBhdGgsXG5cdFx0UmFuZ2VzOiBTZWxlY3Rpb25SYW5nZVR5cGVUeXBlc1tdID0gc2VsZWN0T3B0aW9uLlJhbmdlcztcblx0Y29uc3QgdGFyZ2V0UHJvcGVydHkgPSBfZ2V0UHJvcGVydHkocHJvcGVydHlQYXRoLCBtZXRhTW9kZWwsIGVudGl0eVNldFBhdGgpO1xuXHRpZiAodGFyZ2V0UHJvcGVydHkpIHtcblx0XHRjb25zdCBjb25kaXRpb25zOiBhbnlbXSA9IF9idWlsZENvbmRpdGlvbnNGcm9tU2VsZWN0aW9uUmFuZ2VzKFJhbmdlcywgdGFyZ2V0UHJvcGVydHksIHByb3BlcnR5UGF0aCwgZ2V0Q3VzdG9tQ29uZGl0aW9ucyk7XG5cdFx0aWYgKGNvbmRpdGlvbnMubGVuZ3RoKSB7XG5cdFx0XHRmaWx0ZXJDb25kaXRpb25zW3Byb3BlcnR5UGF0aF0gPSAoZmlsdGVyQ29uZGl0aW9uc1twcm9wZXJ0eVBhdGhdIHx8IFtdKS5jb25jYXQoY29uZGl0aW9ucyk7XG5cdFx0fVxuXHR9XG5cdHJldHVybiBmaWx0ZXJDb25kaXRpb25zO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0RmlsdGVyc0NvbmRpdGlvbnNGcm9tU2VsZWN0aW9uVmFyaWFudChcblx0c0VudGl0eVNldFBhdGg6IHN0cmluZyxcblx0b01ldGFNb2RlbDogT0RhdGFNZXRhTW9kZWwsXG5cdHNlbGVjdGlvblZhcmlhbnQ6IFNlbGVjdGlvblZhcmlhbnRUeXBlVHlwZXMsXG5cdGdldEN1c3RvbUNvbmRpdGlvbnM/OiBGdW5jdGlvblxuKTogUmVjb3JkPHN0cmluZywgRmlsdGVyQ29uZGl0aW9uc1tdPiB7XG5cdGxldCBvRmlsdGVyQ29uZGl0aW9uczogUmVjb3JkPHN0cmluZywgRmlsdGVyQ29uZGl0aW9uc1tdPiA9IHt9O1xuXHRpZiAoIXNlbGVjdGlvblZhcmlhbnQpIHtcblx0XHRyZXR1cm4gb0ZpbHRlckNvbmRpdGlvbnM7XG5cdH1cblx0Y29uc3QgYVNlbGVjdE9wdGlvbnMgPSBzZWxlY3Rpb25WYXJpYW50LlNlbGVjdE9wdGlvbnMsXG5cdFx0YVBhcmFtZXRlcnMgPSBzZWxlY3Rpb25WYXJpYW50LlBhcmFtZXRlcnM7XG5cdGFTZWxlY3RPcHRpb25zPy5mb3JFYWNoKChzZWxlY3RPcHRpb246IFNlbGVjdE9wdGlvblR5cGUpID0+IHtcblx0XHRjb25zdCBwcm9wZXJ0eU5hbWU6IGFueSA9IHNlbGVjdE9wdGlvbi5Qcm9wZXJ0eU5hbWUsXG5cdFx0XHRzUHJvcGVydHlOYW1lOiBzdHJpbmcgPSBwcm9wZXJ0eU5hbWUudmFsdWUgfHwgcHJvcGVydHlOYW1lLiRQcm9wZXJ0eVBhdGg7XG5cdFx0aWYgKE9iamVjdC5rZXlzKG9GaWx0ZXJDb25kaXRpb25zKS5pbmNsdWRlcyhzUHJvcGVydHlOYW1lKSkge1xuXHRcdFx0b0ZpbHRlckNvbmRpdGlvbnNbc1Byb3BlcnR5TmFtZV0gPSBvRmlsdGVyQ29uZGl0aW9uc1tzUHJvcGVydHlOYW1lXS5jb25jYXQoXG5cdFx0XHRcdF9idWlsZEZpbHRlcnNDb25kaXRpb25zRnJvbVNlbGVjdE9wdGlvbihzZWxlY3RPcHRpb24sIG9NZXRhTW9kZWwsIHNFbnRpdHlTZXRQYXRoLCBnZXRDdXN0b21Db25kaXRpb25zKVtzUHJvcGVydHlOYW1lXVxuXHRcdFx0KTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0b0ZpbHRlckNvbmRpdGlvbnMgPSB7XG5cdFx0XHRcdC4uLm9GaWx0ZXJDb25kaXRpb25zLFxuXHRcdFx0XHQuLi5fYnVpbGRGaWx0ZXJzQ29uZGl0aW9uc0Zyb21TZWxlY3RPcHRpb24oc2VsZWN0T3B0aW9uLCBvTWV0YU1vZGVsLCBzRW50aXR5U2V0UGF0aCwgZ2V0Q3VzdG9tQ29uZGl0aW9ucylcblx0XHRcdH07XG5cdFx0fVxuXHR9KTtcblx0YVBhcmFtZXRlcnM/LmZvckVhY2goKHBhcmFtZXRlcjogYW55KSA9PiB7XG5cdFx0Y29uc3Qgc1Byb3BlcnR5UGF0aCA9IHBhcmFtZXRlci5Qcm9wZXJ0eU5hbWUudmFsdWUgfHwgcGFyYW1ldGVyLlByb3BlcnR5TmFtZS4kUHJvcGVydHlQYXRoO1xuXHRcdGNvbnN0IG9Db25kaXRpb246IGFueSA9IGdldEN1c3RvbUNvbmRpdGlvbnNcblx0XHRcdD8geyBvcGVyYXRvcjogXCJFUVwiLCB2YWx1ZTE6IHBhcmFtZXRlci5Qcm9wZXJ0eVZhbHVlLCB2YWx1ZTI6IG51bGwsIHBhdGg6IHNQcm9wZXJ0eVBhdGgsIGlzUGFyYW1ldGVyOiB0cnVlIH1cblx0XHRcdDoge1xuXHRcdFx0XHRcdG9wZXJhdG9yOiBcIkVRXCIsXG5cdFx0XHRcdFx0dmFsdWVzOiBbcGFyYW1ldGVyLlByb3BlcnR5VmFsdWVdLFxuXHRcdFx0XHRcdGlzRW1wdHk6IG51bGwsXG5cdFx0XHRcdFx0dmFsaWRhdGVkOiBDb25kaXRpb25WYWxpZGF0ZWQuVmFsaWRhdGVkLFxuXHRcdFx0XHRcdGlzUGFyYW1ldGVyOiB0cnVlXG5cdFx0XHQgIH07XG5cdFx0b0ZpbHRlckNvbmRpdGlvbnNbc1Byb3BlcnR5UGF0aF0gPSBbb0NvbmRpdGlvbl07XG5cdH0pO1xuXG5cdHJldHVybiBvRmlsdGVyQ29uZGl0aW9ucztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldENvbmRpdGlvbnMoUmFuZ2U6IGFueSwgb1ZhbGlkUHJvcGVydHk6IGFueSk6IENvbmRpdGlvbk9iamVjdCB8IHVuZGVmaW5lZCB7XG5cdGxldCBvQ29uZGl0aW9uO1xuXHRjb25zdCBzaWduOiBzdHJpbmcgfCB1bmRlZmluZWQgPSBSYW5nZS5TaWduO1xuXHRjb25zdCBzT3B0aW9uOiBzdHJpbmcgfCB1bmRlZmluZWQgPSBSYW5nZS5PcHRpb24gPyBnZXRPcGVyYXRvcihSYW5nZS5PcHRpb24pIDogdW5kZWZpbmVkO1xuXHRjb25zdCBvVmFsdWUxOiBhbnkgPSBnZXRUeXBlQ29tcGxpYW50VmFsdWUoUmFuZ2UuTG93LCBvVmFsaWRQcm9wZXJ0eS4kVHlwZSB8fCBvVmFsaWRQcm9wZXJ0eS50eXBlKTtcblx0Y29uc3Qgb1ZhbHVlMjogYW55ID0gUmFuZ2UuSGlnaCA/IGdldFR5cGVDb21wbGlhbnRWYWx1ZShSYW5nZS5IaWdoLCBvVmFsaWRQcm9wZXJ0eS4kVHlwZSB8fCBvVmFsaWRQcm9wZXJ0eS50eXBlKSA6IHVuZGVmaW5lZDtcblx0Y29uc3Qgb0NvbmRpdGlvblZhbHVlcyA9IHJlc29sdmVDb25kaXRpb25WYWx1ZXMoc09wdGlvbiwgb1ZhbHVlMSwgb1ZhbHVlMiwgc2lnbikgYXMgYW55O1xuXHRpZiAob0NvbmRpdGlvblZhbHVlcykge1xuXHRcdG9Db25kaXRpb24gPSBDb25kaXRpb24uY3JlYXRlQ29uZGl0aW9uKFxuXHRcdFx0b0NvbmRpdGlvblZhbHVlcy5vcGVyYXRvcixcblx0XHRcdG9Db25kaXRpb25WYWx1ZXMudmFsdWVzLFxuXHRcdFx0bnVsbCxcblx0XHRcdG51bGwsXG5cdFx0XHRDb25kaXRpb25WYWxpZGF0ZWQuVmFsaWRhdGVkXG5cdFx0KTtcblx0fVxuXHRyZXR1cm4gb0NvbmRpdGlvbjtcbn1cblxuY29uc3QgZ2V0RGVmYXVsdFZhbHVlRmlsdGVycyA9IGZ1bmN0aW9uIChvQ29udGV4dDogYW55LCBwcm9wZXJ0aWVzOiBhbnkpOiBSZWNvcmQ8c3RyaW5nLCBGaWx0ZXJDb25kaXRpb25zW10+IHtcblx0Y29uc3QgZmlsdGVyQ29uZGl0aW9uczogUmVjb3JkPHN0cmluZywgRmlsdGVyQ29uZGl0aW9uc1tdPiA9IHt9O1xuXHRjb25zdCBlbnRpdHlTZXRQYXRoID0gb0NvbnRleHQuZ2V0SW50ZXJmYWNlKDEpLmdldFBhdGgoKSxcblx0XHRvTWV0YU1vZGVsID0gb0NvbnRleHQuZ2V0SW50ZXJmYWNlKDEpLmdldE1vZGVsKCk7XG5cdGlmIChwcm9wZXJ0aWVzKSB7XG5cdFx0Zm9yIChjb25zdCBrZXkgaW4gcHJvcGVydGllcykge1xuXHRcdFx0Y29uc3QgZGVmYXVsdEZpbHRlclZhbHVlID0gb01ldGFNb2RlbC5nZXRPYmplY3QoYCR7ZW50aXR5U2V0UGF0aH0vJHtrZXl9QGNvbS5zYXAudm9jYWJ1bGFyaWVzLkNvbW1vbi52MS5GaWx0ZXJEZWZhdWx0VmFsdWVgKTtcblx0XHRcdGlmIChkZWZhdWx0RmlsdGVyVmFsdWUgIT09IHVuZGVmaW5lZCkge1xuXHRcdFx0XHRjb25zdCBQcm9wZXJ0eU5hbWUgPSBrZXk7XG5cdFx0XHRcdGZpbHRlckNvbmRpdGlvbnNbUHJvcGVydHlOYW1lXSA9IFtcblx0XHRcdFx0XHRDb25kaXRpb24uY3JlYXRlQ29uZGl0aW9uKFwiRVFcIiwgW2RlZmF1bHRGaWx0ZXJWYWx1ZV0sIG51bGwsIG51bGwsIENvbmRpdGlvblZhbGlkYXRlZC5WYWxpZGF0ZWQpIGFzIEZpbHRlckNvbmRpdGlvbnNcblx0XHRcdFx0XTtcblx0XHRcdH1cblx0XHR9XG5cdH1cblx0cmV0dXJuIGZpbHRlckNvbmRpdGlvbnM7XG59O1xuXG5jb25zdCBnZXREZWZhdWx0U2VtYW50aWNEYXRlRmlsdGVycyA9IGZ1bmN0aW9uIChcblx0b0NvbnRleHQ6IGFueSxcblx0cHJvcGVydGllczogYW55LFxuXHRkZWZhdWx0U2VtYW50aWNEYXRlczogYW55XG4pOiBSZWNvcmQ8c3RyaW5nLCBGaWx0ZXJDb25kaXRpb25zW10+IHtcblx0Y29uc3QgZmlsdGVyQ29uZGl0aW9uczogUmVjb3JkPHN0cmluZywgRmlsdGVyQ29uZGl0aW9uc1tdPiA9IHt9O1xuXHRpZiAocHJvcGVydGllcykge1xuXHRcdGZvciAoY29uc3Qga2V5IGluIHByb3BlcnRpZXMpIHtcblx0XHRcdC8vIGN1cnJlbnRseSBkZWZhdWx0U2VtYW50aWNEYXRlcyBjYW4gc3VwcG9ydCBvbmx5IG9uZSBlbnRyeSwgd2UgcGljayB0aGUgZmlyc3Qgb25lIGRpcmVjdGx5IHVzaW5nIDAgaW5kZXhcblx0XHRcdGlmIChkZWZhdWx0U2VtYW50aWNEYXRlc1trZXldICYmIGRlZmF1bHRTZW1hbnRpY0RhdGVzW2tleV1bMF0pIHtcblx0XHRcdFx0ZmlsdGVyQ29uZGl0aW9uc1trZXldID0gW1xuXHRcdFx0XHRcdENvbmRpdGlvbi5jcmVhdGVDb25kaXRpb24oZGVmYXVsdFNlbWFudGljRGF0ZXNba2V5XVswXS5vcGVyYXRvciwgW10sIG51bGwsIG51bGwsIG51bGwpIGFzIEZpbHRlckNvbmRpdGlvbnNcblx0XHRcdFx0XTtcblx0XHRcdH1cblx0XHR9XG5cdH1cblx0cmV0dXJuIGZpbHRlckNvbmRpdGlvbnM7XG59O1xuXG5mdW5jdGlvbiBnZXRFZGl0U3RhdHVzRmlsdGVyKCk6IFJlY29yZDxzdHJpbmcsIEZpbHRlckNvbmRpdGlvbnNbXT4ge1xuXHRjb25zdCBvZmlsdGVyQ29uZGl0aW9uczogUmVjb3JkPHN0cmluZywgRmlsdGVyQ29uZGl0aW9uc1tdPiA9IHt9O1xuXHRvZmlsdGVyQ29uZGl0aW9uc1tcIiRlZGl0U3RhdGVcIl0gPSBbXG5cdFx0Q29uZGl0aW9uLmNyZWF0ZUNvbmRpdGlvbihcIkRSQUZUX0VESVRfU1RBVEVcIiwgW1wiQUxMXCJdLCBudWxsLCBudWxsLCBDb25kaXRpb25WYWxpZGF0ZWQuVmFsaWRhdGVkKSBhcyBGaWx0ZXJDb25kaXRpb25zXG5cdF07XG5cdHJldHVybiBvZmlsdGVyQ29uZGl0aW9ucztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldEZpbHRlckNvbmRpdGlvbnMob0NvbnRleHQ6IGFueSwgZmlsdGVyQ29uZGl0aW9uczogYW55KTogUmVjb3JkPHN0cmluZywgRmlsdGVyQ29uZGl0aW9uc1tdPiB7XG5cdGxldCBlZGl0U3RhdGVGaWx0ZXI7XG5cdGNvbnN0IGVudGl0eVNldFBhdGggPSBvQ29udGV4dC5nZXRJbnRlcmZhY2UoMSkuZ2V0UGF0aCgpLFxuXHRcdG9NZXRhTW9kZWwgPSBvQ29udGV4dC5nZXRJbnRlcmZhY2UoMSkuZ2V0TW9kZWwoKSxcblx0XHRlbnRpdHlUeXBlQW5ub3RhdGlvbnMgPSBvTWV0YU1vZGVsLmdldE9iamVjdChgJHtlbnRpdHlTZXRQYXRofUBgKSxcblx0XHRlbnRpdHlUeXBlUHJvcGVydGllcyA9IG9NZXRhTW9kZWwuZ2V0T2JqZWN0KGAke2VudGl0eVNldFBhdGh9L2ApO1xuXHRpZiAoXG5cdFx0ZW50aXR5VHlwZUFubm90YXRpb25zW1wiQGNvbS5zYXAudm9jYWJ1bGFyaWVzLkNvbW1vbi52MS5EcmFmdFJvb3RcIl0gfHxcblx0XHRlbnRpdHlUeXBlQW5ub3RhdGlvbnNbXCJAY29tLnNhcC52b2NhYnVsYXJpZXMuQ29tbW9uLnYxLkRyYWZ0Tm9kZVwiXVxuXHQpIHtcblx0XHRlZGl0U3RhdGVGaWx0ZXIgPSBnZXRFZGl0U3RhdHVzRmlsdGVyKCk7XG5cdH1cblx0Y29uc3Qgc2VsZWN0aW9uVmFyaWFudCA9IGZpbHRlckNvbmRpdGlvbnM/LnNlbGVjdGlvblZhcmlhbnQ7XG5cdGNvbnN0IGRlZmF1bHRTZW1hbnRpY0RhdGVzID0gZmlsdGVyQ29uZGl0aW9ucz8uZGVmYXVsdFNlbWFudGljRGF0ZXMgfHwge307XG5cdGNvbnN0IGRlZmF1bHRGaWx0ZXJzID0gZ2V0RGVmYXVsdFZhbHVlRmlsdGVycyhvQ29udGV4dCwgZW50aXR5VHlwZVByb3BlcnRpZXMpO1xuXHRjb25zdCBkZWZhdWx0U2VtYW50aWNEYXRlRmlsdGVycyA9IGdldERlZmF1bHRTZW1hbnRpY0RhdGVGaWx0ZXJzKG9Db250ZXh0LCBlbnRpdHlUeXBlUHJvcGVydGllcywgZGVmYXVsdFNlbWFudGljRGF0ZXMpO1xuXHRpZiAoc2VsZWN0aW9uVmFyaWFudCkge1xuXHRcdGZpbHRlckNvbmRpdGlvbnMgPSBnZXRGaWx0ZXJzQ29uZGl0aW9uc0Zyb21TZWxlY3Rpb25WYXJpYW50KGVudGl0eVNldFBhdGgsIG9NZXRhTW9kZWwsIHNlbGVjdGlvblZhcmlhbnQpO1xuXHR9IGVsc2UgaWYgKGRlZmF1bHRGaWx0ZXJzKSB7XG5cdFx0ZmlsdGVyQ29uZGl0aW9ucyA9IGRlZmF1bHRGaWx0ZXJzO1xuXHR9XG5cdGlmIChkZWZhdWx0U2VtYW50aWNEYXRlRmlsdGVycykge1xuXHRcdC8vIG9ubHkgZm9yIHNlbWFudGljIGRhdGU6XG5cdFx0Ly8gMS4gdmFsdWUgZnJvbSBtYW5pZmVzdCBnZXQgbWVyZ2VkIHdpdGggU1Zcblx0XHQvLyAyLiBtYW5pZmVzdCB2YWx1ZSBpcyBnaXZlbiBwcmVmZXJlbmNlIHdoZW4gdGhlcmUgaXMgc2FtZSBzZW1hbnRpYyBkYXRlIHByb3BlcnR5IGluIFNWIGFuZCBtYW5pZmVzdFxuXHRcdGZpbHRlckNvbmRpdGlvbnMgPSB7IC4uLmZpbHRlckNvbmRpdGlvbnMsIC4uLmRlZmF1bHRTZW1hbnRpY0RhdGVGaWx0ZXJzIH07XG5cdH1cblx0aWYgKGVkaXRTdGF0ZUZpbHRlcikge1xuXHRcdGZpbHRlckNvbmRpdGlvbnMgPSB7IC4uLmZpbHRlckNvbmRpdGlvbnMsIC4uLmVkaXRTdGF0ZUZpbHRlciB9O1xuXHR9XG5cdHJldHVybiAoT2JqZWN0LmtleXMoZmlsdGVyQ29uZGl0aW9ucykubGVuZ3RoID4gMCA/IEpTT04uc3RyaW5naWZ5KGZpbHRlckNvbmRpdGlvbnMpLnJlcGxhY2UoLyhbXFx7XFx9XSkvZywgXCJcXFxcJDFcIikgOiB1bmRlZmluZWQpIGFzIGFueTtcbn1cblxuZ2V0RmlsdGVyQ29uZGl0aW9ucy5yZXF1aXJlc0lDb250ZXh0ID0gdHJ1ZTtcbiJdfQ==
@@ -1,8 +1,9 @@
1
- import { SelectionRangeTypeTypes, SelectionVariantTypeTypes, SelectOptionType } from "@sap-ux/vocabularies-types/dist/generated/UI";
1
+ import type { SelectionRangeTypeTypes, SelectionVariantTypeTypes, SelectOptionType } from "@sap-ux/vocabularies-types/vocabularies/UI";
2
2
  import Log from "sap/base/Log";
3
- import Condition, { ConditionObject } from "sap/ui/mdc/condition/Condition";
3
+ import type { ConditionObject } from "sap/ui/mdc/condition/Condition";
4
+ import Condition from "sap/ui/mdc/condition/Condition";
4
5
  import ConditionValidated from "sap/ui/mdc/enum/ConditionValidated";
5
- import ODataMetaModel from "sap/ui/model/odata/v4/ODataMetaModel";
6
+ import type ODataMetaModel from "sap/ui/model/odata/v4/ODataMetaModel";
6
7
  export type FilterConditions = {
7
8
  operator: string;
8
9
  values: Array<string>;
@@ -50,11 +51,11 @@ export function _getDateTimeOffsetCompliantValue(sValue: any): string | undefine
50
51
  if (sValue.match(/^(\d{4})-(\d{1,2})-(\d{1,2})T(\d{1,2}):(\d{1,2}):(\d{1,2})\+(\d{1,4})/)) {
51
52
  oValue = sValue.match(/^(\d{4})-(\d{1,2})-(\d{1,2})T(\d{1,2}):(\d{1,2}):(\d{1,2})\+(\d{1,4})/)[0];
52
53
  } else if (sValue.match(/^(\d{4})-(\d{1,2})-(\d{1,2})T(\d{1,2}):(\d{1,2}):(\d{1,2})/)) {
53
- oValue = sValue.match(/^(\d{4})-(\d{1,2})-(\d{1,2})T(\d{1,2}):(\d{1,2}):(\d{1,2})/)[0] + "+0000";
54
+ oValue = `${sValue.match(/^(\d{4})-(\d{1,2})-(\d{1,2})T(\d{1,2}):(\d{1,2}):(\d{1,2})/)[0]}+0000`;
54
55
  } else if (sValue.match(/^(\d{4})-(\d{1,2})-(\d{1,2})/)) {
55
- oValue = sValue.match(/^(\d{4})-(\d{1,2})-(\d{1,2})/)[0] + "T00:00:00+0000";
56
+ oValue = `${sValue.match(/^(\d{4})-(\d{1,2})-(\d{1,2})/)[0]}T00:00:00+0000`;
56
57
  } else if (sValue.indexOf("Z") === sValue.length - 1) {
57
- oValue = sValue.split("Z")[0] + "+0100";
58
+ oValue = `${sValue.split("Z")[0]}+0100`;
58
59
  } else {
59
60
  oValue = undefined;
60
61
  }
@@ -112,6 +113,7 @@ export function getTypeCompliantValue(sValue: any, sType: string): string | unde
112
113
 
113
114
  /**
114
115
  * Method to create a condition.
116
+ *
115
117
  * @param sOption Operator to be used.
116
118
  * @param oV1 Lower value
117
119
  * @param oV2 Higher value
@@ -173,7 +175,7 @@ export function resolveConditionValues(sOption: string | undefined, oV1: any, oV
173
175
  sInternalOperation = sOption;
174
176
  break;
175
177
  default:
176
- Log.warning("Selection Option is not supported : '" + sOption + "'");
178
+ Log.warning(`Selection Option is not supported : '${sOption}'`);
177
179
  return;
178
180
  }
179
181
  if (sSign === "E") {
@@ -213,7 +215,7 @@ function _buildConditionsFromSelectionRanges(
213
215
  function _getProperty(propertyName: string, metaModel: ODataMetaModel, entitySetPath: string): Record<string, object> {
214
216
  const lastSlashIndex = propertyName.lastIndexOf("/");
215
217
  const navigationPath = lastSlashIndex > -1 ? propertyName.substring(0, propertyName.lastIndexOf("/") + 1) : "";
216
- const collection = metaModel.getObject(entitySetPath + "/" + navigationPath);
218
+ const collection = metaModel.getObject(`${entitySetPath}/${navigationPath}`);
217
219
  return collection?.[propertyName.replace(navigationPath, "")];
218
220
  }
219
221
 
@@ -305,9 +307,7 @@ const getDefaultValueFilters = function (oContext: any, properties: any): Record
305
307
  oMetaModel = oContext.getInterface(1).getModel();
306
308
  if (properties) {
307
309
  for (const key in properties) {
308
- const defaultFilterValue = oMetaModel.getObject(
309
- entitySetPath + "/" + key + "@com.sap.vocabularies.Common.v1.FilterDefaultValue"
310
- );
310
+ const defaultFilterValue = oMetaModel.getObject(`${entitySetPath}/${key}@com.sap.vocabularies.Common.v1.FilterDefaultValue`);
311
311
  if (defaultFilterValue !== undefined) {
312
312
  const PropertyName = key;
313
313
  filterConditions[PropertyName] = [
@@ -350,8 +350,8 @@ export function getFilterConditions(oContext: any, filterConditions: any): Recor
350
350
  let editStateFilter;
351
351
  const entitySetPath = oContext.getInterface(1).getPath(),
352
352
  oMetaModel = oContext.getInterface(1).getModel(),
353
- entityTypeAnnotations = oMetaModel.getObject(entitySetPath + "@"),
354
- entityTypeProperties = oMetaModel.getObject(entitySetPath + "/");
353
+ entityTypeAnnotations = oMetaModel.getObject(`${entitySetPath}@`),
354
+ entityTypeProperties = oMetaModel.getObject(`${entitySetPath}/`);
355
355
  if (
356
356
  entityTypeAnnotations["@com.sap.vocabularies.Common.v1.DraftRoot"] ||
357
357
  entityTypeAnnotations["@com.sap.vocabularies.Common.v1.DraftNode"]