@sapui5/sap.fe.core 1.102.2 → 1.104.1

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 (324) hide show
  1. package/package.json +6 -6
  2. package/src/sap/fe/core/.library +1 -1
  3. package/src/sap/fe/core/AppComponent.js +73 -30
  4. package/src/sap/fe/core/AppComponent.ts +65 -43
  5. package/src/sap/fe/core/AppStateHandler.js +82 -70
  6. package/src/sap/fe/core/AppStateHandler.ts +32 -37
  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 +227 -126
  10. package/src/sap/fe/core/CommonUtils.ts +240 -163
  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/BuildingBlock.js +181 -43
  22. package/src/sap/fe/core/buildingBlocks/BuildingBlock.ts +150 -24
  23. package/src/sap/fe/core/buildingBlocks/BuildingBlockRuntime.js +585 -210
  24. package/src/sap/fe/core/buildingBlocks/BuildingBlockRuntime.ts +246 -96
  25. package/src/sap/fe/core/buildingBlocks/TraceInfo.js +30 -30
  26. package/src/sap/fe/core/buildingBlocks/TraceInfo.ts +32 -29
  27. package/src/sap/fe/core/controllerextensions/EditFlow.js +379 -330
  28. package/src/sap/fe/core/controllerextensions/EditFlow.ts +253 -245
  29. package/src/sap/fe/core/controllerextensions/IntentBasedNavigation.js +9 -9
  30. package/src/sap/fe/core/controllerextensions/IntentBasedNavigation.ts +10 -10
  31. package/src/sap/fe/core/controllerextensions/InternalEditFlow.js +101 -74
  32. package/src/sap/fe/core/controllerextensions/InternalEditFlow.ts +69 -79
  33. package/src/sap/fe/core/controllerextensions/InternalIntentBasedNavigation.js +67 -67
  34. package/src/sap/fe/core/controllerextensions/InternalIntentBasedNavigation.ts +76 -76
  35. package/src/sap/fe/core/controllerextensions/InternalRouting.js +85 -77
  36. package/src/sap/fe/core/controllerextensions/InternalRouting.ts +103 -99
  37. package/src/sap/fe/core/controllerextensions/KPIManagement.js +66 -68
  38. package/src/sap/fe/core/controllerextensions/KPIManagement.ts +106 -123
  39. package/src/sap/fe/core/controllerextensions/MassEdit.js +9 -9
  40. package/src/sap/fe/core/controllerextensions/MassEdit.ts +20 -27
  41. package/src/sap/fe/core/controllerextensions/MessageHandler.js +20 -12
  42. package/src/sap/fe/core/controllerextensions/MessageHandler.ts +21 -14
  43. package/src/sap/fe/core/controllerextensions/PageReady.js +97 -25
  44. package/src/sap/fe/core/controllerextensions/PageReady.ts +98 -34
  45. package/src/sap/fe/core/controllerextensions/Paginator.js +21 -22
  46. package/src/sap/fe/core/controllerextensions/Paginator.ts +24 -25
  47. package/src/sap/fe/core/controllerextensions/Placeholder.js +4 -6
  48. package/src/sap/fe/core/controllerextensions/Placeholder.ts +12 -14
  49. package/src/sap/fe/core/controllerextensions/Routing.js +10 -11
  50. package/src/sap/fe/core/controllerextensions/Routing.ts +12 -13
  51. package/src/sap/fe/core/controllerextensions/Share.js +170 -139
  52. package/src/sap/fe/core/controllerextensions/Share.ts +117 -118
  53. package/src/sap/fe/core/controllerextensions/SideEffects.js +46 -50
  54. package/src/sap/fe/core/controllerextensions/SideEffects.ts +56 -60
  55. package/src/sap/fe/core/controllerextensions/ViewState.js +200 -131
  56. package/src/sap/fe/core/controllerextensions/ViewState.ts +141 -148
  57. package/src/sap/fe/core/controllerextensions/collaboration/ActivityBase.js +5 -5
  58. package/src/sap/fe/core/controllerextensions/collaboration/ActivityBase.ts +8 -7
  59. package/src/sap/fe/core/controllerextensions/collaboration/ActivitySync.js +11 -10
  60. package/src/sap/fe/core/controllerextensions/collaboration/ActivitySync.ts +17 -20
  61. package/src/sap/fe/core/controllerextensions/collaboration/CollaborationCommon.js +2 -2
  62. package/src/sap/fe/core/controllerextensions/collaboration/CollaborationCommon.ts +4 -4
  63. package/src/sap/fe/core/controllerextensions/collaboration/Manage.js +7 -9
  64. package/src/sap/fe/core/controllerextensions/collaboration/Manage.ts +18 -19
  65. package/src/sap/fe/core/controllerextensions/editFlow/TransactionHelper.js +190 -141
  66. package/src/sap/fe/core/controllerextensions/editFlow/TransactionHelper.ts +258 -210
  67. package/src/sap/fe/core/controllerextensions/editFlow/draft.js +183 -125
  68. package/src/sap/fe/core/controllerextensions/editFlow/draft.ts +213 -156
  69. package/src/sap/fe/core/controllerextensions/editFlow/operations.js +164 -140
  70. package/src/sap/fe/core/controllerextensions/editFlow/operations.ts +180 -150
  71. package/src/sap/fe/core/controllerextensions/editFlow/sticky.js +24 -26
  72. package/src/sap/fe/core/controllerextensions/editFlow/sticky.ts +35 -33
  73. package/src/sap/fe/core/controllerextensions/messageHandler/messageHandling.js +71 -41
  74. package/src/sap/fe/core/controllerextensions/messageHandler/messageHandling.ts +102 -82
  75. package/src/sap/fe/core/controllerextensions/routing/RouterProxy.js +61 -71
  76. package/src/sap/fe/core/controllerextensions/routing/RouterProxy.ts +56 -64
  77. package/src/sap/fe/core/controls/Any.js +9 -5
  78. package/src/sap/fe/core/controls/Any.ts +10 -4
  79. package/src/sap/fe/core/controls/CommandExecution.js +11 -25
  80. package/src/sap/fe/core/controls/CommandExecution.ts +11 -25
  81. package/src/sap/fe/core/controls/ConditionalWrapper.js +2 -2
  82. package/src/sap/fe/core/controls/ConditionalWrapper.ts +3 -3
  83. package/src/sap/fe/core/controls/CustomFilterFieldContentWrapper.js +22 -22
  84. package/src/sap/fe/core/controls/CustomFilterFieldContentWrapper.ts +25 -24
  85. package/src/sap/fe/core/controls/CustomQuickViewPage.js +2 -2
  86. package/src/sap/fe/core/controls/CustomQuickViewPage.ts +2 -2
  87. package/src/sap/fe/core/controls/DataLossOrDraftDiscard/DataLossOrDraftDiscardHandler.js +3 -3
  88. package/src/sap/fe/core/controls/DataLossOrDraftDiscard/DataLossOrDraftDiscardHandler.ts +5 -5
  89. package/src/sap/fe/core/controls/FieldWrapper.js +2 -2
  90. package/src/sap/fe/core/controls/FieldWrapper.ts +3 -3
  91. package/src/sap/fe/core/controls/FileWrapper.js +7 -2
  92. package/src/sap/fe/core/controls/FileWrapper.ts +15 -11
  93. package/src/sap/fe/core/controls/FilterBar.js +6 -2
  94. package/src/sap/fe/core/controls/FilterBar.ts +13 -9
  95. package/src/sap/fe/core/controls/FormElementWrapper.js +1 -1
  96. package/src/sap/fe/core/controls/FormElementWrapper.ts +2 -2
  97. package/src/sap/fe/core/controls/MassEditSelect.js +1 -1
  98. package/src/sap/fe/core/controls/MassEditSelect.ts +0 -4
  99. package/src/sap/fe/core/controls/NonComputedVisibleKeyFieldsDialog.fragment.xml +3 -3
  100. package/src/sap/fe/core/controls/filterbar/VisualFilter.js +16 -12
  101. package/src/sap/fe/core/controls/filterbar/VisualFilter.ts +20 -22
  102. package/src/sap/fe/core/controls/filterbar/VisualFilterContainer.js +3 -3
  103. package/src/sap/fe/core/controls/filterbar/VisualFilterContainer.ts +8 -8
  104. package/src/sap/fe/core/controls/filterbar/utils/VisualFilterUtils.js +49 -49
  105. package/src/sap/fe/core/controls/filterbar/utils/VisualFilterUtils.ts +54 -54
  106. package/src/sap/fe/core/controls/massEdit/MassEditDialog.fragment.xml +8 -2
  107. package/src/sap/fe/core/controls/massEdit/MassEditField.fragment.xml +22 -35
  108. package/src/sap/fe/core/controls/massEdit/MassEditHandlers.js +89 -88
  109. package/src/sap/fe/core/controls/massEdit/MassEditHandlers.ts +107 -106
  110. package/src/sap/fe/core/converters/ConverterContext.js +26 -33
  111. package/src/sap/fe/core/converters/ConverterContext.ts +52 -61
  112. package/src/sap/fe/core/converters/ManifestSettings.js +1 -1
  113. package/src/sap/fe/core/converters/ManifestSettings.ts +17 -15
  114. package/src/sap/fe/core/converters/ManifestWrapper.js +59 -45
  115. package/src/sap/fe/core/converters/ManifestWrapper.ts +55 -45
  116. package/src/sap/fe/core/converters/MetaModelConverter.js +64 -35
  117. package/src/sap/fe/core/converters/MetaModelConverter.ts +154 -129
  118. package/src/sap/fe/core/converters/TemplateConverter.js +21 -20
  119. package/src/sap/fe/core/converters/TemplateConverter.ts +27 -24
  120. package/src/sap/fe/core/converters/annotations/DataField.js +58 -35
  121. package/src/sap/fe/core/converters/annotations/DataField.ts +102 -76
  122. package/src/sap/fe/core/converters/common/AnnotationConverter.js +1911 -1495
  123. package/src/sap/fe/core/converters/controls/Common/Action.js +50 -41
  124. package/src/sap/fe/core/converters/controls/Common/Action.ts +56 -46
  125. package/src/sap/fe/core/converters/controls/Common/Chart.js +14 -14
  126. package/src/sap/fe/core/converters/controls/Common/Chart.ts +26 -33
  127. package/src/sap/fe/core/converters/controls/Common/Criticality.js +3 -3
  128. package/src/sap/fe/core/converters/controls/Common/Criticality.ts +4 -4
  129. package/src/sap/fe/core/converters/controls/Common/DataVisualization.js +30 -28
  130. package/src/sap/fe/core/converters/controls/Common/DataVisualization.ts +60 -61
  131. package/src/sap/fe/core/converters/controls/Common/Form.js +27 -28
  132. package/src/sap/fe/core/converters/controls/Common/Form.ts +44 -57
  133. package/src/sap/fe/core/converters/controls/Common/KPI.js +11 -11
  134. package/src/sap/fe/core/converters/controls/Common/KPI.ts +49 -52
  135. package/src/sap/fe/core/converters/controls/Common/Table.js +181 -197
  136. package/src/sap/fe/core/converters/controls/Common/Table.ts +251 -280
  137. package/src/sap/fe/core/converters/controls/Common/table/StandardActions.js +119 -119
  138. package/src/sap/fe/core/converters/controls/Common/table/StandardActions.ts +144 -141
  139. package/src/sap/fe/core/converters/controls/ListReport/FilterBar.js +45 -41
  140. package/src/sap/fe/core/converters/controls/ListReport/FilterBar.ts +65 -59
  141. package/src/sap/fe/core/converters/controls/ListReport/VisualFilters.js +28 -26
  142. package/src/sap/fe/core/converters/controls/ListReport/VisualFilters.ts +46 -43
  143. package/src/sap/fe/core/converters/controls/ObjectPage/Avatar.js +9 -9
  144. package/src/sap/fe/core/converters/controls/ObjectPage/Avatar.ts +14 -13
  145. package/src/sap/fe/core/converters/controls/ObjectPage/HeaderFacet.js +67 -64
  146. package/src/sap/fe/core/converters/controls/ObjectPage/HeaderFacet.ts +69 -66
  147. package/src/sap/fe/core/converters/controls/ObjectPage/SubSection.js +77 -73
  148. package/src/sap/fe/core/converters/controls/ObjectPage/SubSection.ts +101 -97
  149. package/src/sap/fe/core/converters/helpers/Aggregation.js +2 -4
  150. package/src/sap/fe/core/converters/helpers/Aggregation.ts +12 -15
  151. package/src/sap/fe/core/converters/helpers/BindingHelper.js +31 -31
  152. package/src/sap/fe/core/converters/helpers/BindingHelper.ts +30 -29
  153. package/src/sap/fe/core/converters/helpers/ConfigurableObject.js +4 -4
  154. package/src/sap/fe/core/converters/helpers/ConfigurableObject.ts +9 -9
  155. package/src/sap/fe/core/converters/helpers/ID.js +48 -46
  156. package/src/sap/fe/core/converters/helpers/ID.ts +26 -25
  157. package/src/sap/fe/core/converters/helpers/Key.js +7 -7
  158. package/src/sap/fe/core/converters/helpers/Key.ts +7 -7
  159. package/src/sap/fe/core/converters/helpers/SelectionVariantHelper.js +1 -1
  160. package/src/sap/fe/core/converters/helpers/SelectionVariantHelper.ts +4 -5
  161. package/src/sap/fe/core/converters/objectPage/FormMenuActions.js +6 -6
  162. package/src/sap/fe/core/converters/objectPage/FormMenuActions.ts +10 -10
  163. package/src/sap/fe/core/converters/objectPage/HeaderAndFooterAction.js +46 -62
  164. package/src/sap/fe/core/converters/objectPage/HeaderAndFooterAction.ts +54 -82
  165. package/src/sap/fe/core/converters/templates/ListReportConverter.js +55 -42
  166. package/src/sap/fe/core/converters/templates/ListReportConverter.ts +81 -66
  167. package/src/sap/fe/core/converters/templates/ObjectPageConverter.js +39 -38
  168. package/src/sap/fe/core/converters/templates/ObjectPageConverter.ts +52 -61
  169. package/src/sap/fe/core/designtime/AppComponent.designtime.js +4 -4
  170. package/src/sap/fe/core/designtime/AppComponent.designtime.ts +4 -4
  171. package/src/sap/fe/core/formatters/CollaborationFormatter.js +2 -2
  172. package/src/sap/fe/core/formatters/CollaborationFormatter.ts +3 -3
  173. package/src/sap/fe/core/formatters/FPMFormatter.js +5 -5
  174. package/src/sap/fe/core/formatters/FPMFormatter.ts +10 -10
  175. package/src/sap/fe/core/formatters/KPIFormatter.js +7 -7
  176. package/src/sap/fe/core/formatters/KPIFormatter.ts +10 -10
  177. package/src/sap/fe/core/formatters/StandardFormatter.js +96 -0
  178. package/src/sap/fe/core/formatters/StandardFormatter.ts +70 -0
  179. package/src/sap/fe/core/formatters/TableFormatter.js +11 -11
  180. package/src/sap/fe/core/formatters/TableFormatter.ts +12 -12
  181. package/src/sap/fe/core/formatters/ValueFormatter.js +8 -8
  182. package/src/sap/fe/core/formatters/ValueFormatter.ts +9 -9
  183. package/src/sap/fe/core/helpers/AppStartupHelper.js +15 -15
  184. package/src/sap/fe/core/helpers/AppStartupHelper.ts +37 -40
  185. package/src/sap/fe/core/helpers/BindingToolkit.js +1832 -0
  186. package/src/sap/fe/core/helpers/{BindingExpression.ts → BindingToolkit.ts} +396 -269
  187. package/src/sap/fe/core/helpers/ClassSupport.js +49 -12
  188. package/src/sap/fe/core/helpers/ClassSupport.ts +37 -10
  189. package/src/sap/fe/core/helpers/DynamicAnnotationPathHelper.js +2 -2
  190. package/src/sap/fe/core/helpers/DynamicAnnotationPathHelper.ts +1 -1
  191. package/src/sap/fe/core/helpers/EditState.js +1 -6
  192. package/src/sap/fe/core/helpers/EditState.ts +5 -10
  193. package/src/sap/fe/core/helpers/ExcelFormatHelper.js +2 -2
  194. package/src/sap/fe/core/helpers/ExcelFormatHelper.ts +4 -4
  195. package/src/sap/fe/core/helpers/FPMHelper.js +1 -1
  196. package/src/sap/fe/core/helpers/FPMHelper.ts +2 -2
  197. package/src/sap/fe/core/helpers/KeepAliveHelper.js +31 -31
  198. package/src/sap/fe/core/helpers/KeepAliveHelper.ts +52 -56
  199. package/src/sap/fe/core/helpers/MassEditHelper.js +306 -280
  200. package/src/sap/fe/core/helpers/MassEditHelper.ts +380 -360
  201. package/src/sap/fe/core/helpers/MessageStrip.js +81 -0
  202. package/src/sap/fe/core/helpers/MessageStrip.ts +79 -0
  203. package/src/sap/fe/core/helpers/ModelHelper.js +25 -25
  204. package/src/sap/fe/core/helpers/ModelHelper.ts +34 -32
  205. package/src/sap/fe/core/helpers/PasteHelper.js +3 -10
  206. package/src/sap/fe/core/helpers/PasteHelper.ts +20 -25
  207. package/src/sap/fe/core/helpers/SemanticDateOperators.js +1 -1
  208. package/src/sap/fe/core/helpers/SemanticDateOperators.ts +11 -11
  209. package/src/sap/fe/core/helpers/SemanticKeyHelper.js +3 -3
  210. package/src/sap/fe/core/helpers/SemanticKeyHelper.ts +8 -8
  211. package/src/sap/fe/core/helpers/StableIdHelper.js +12 -12
  212. package/src/sap/fe/core/helpers/StableIdHelper.ts +12 -12
  213. package/src/sap/fe/core/helpers/ToES6Promise.js +32 -0
  214. package/src/sap/fe/core/helpers/ToES6Promise.ts +19 -0
  215. package/src/sap/fe/core/jsx-runtime/Fragment.js +16 -0
  216. package/src/sap/fe/core/jsx-runtime/Fragment.ts +3 -0
  217. package/src/sap/fe/core/jsx-runtime/jsx-control.js +99 -0
  218. package/src/sap/fe/core/jsx-runtime/jsx-control.ts +82 -0
  219. package/src/sap/fe/core/jsx-runtime/jsx-xml.js +105 -0
  220. package/src/sap/fe/core/jsx-runtime/jsx-xml.ts +89 -0
  221. package/src/sap/fe/core/jsx-runtime/jsx.js +12 -90
  222. package/src/sap/fe/core/jsx-runtime/jsx.ts +24 -85
  223. package/src/sap/fe/core/library.js +42 -3
  224. package/src/sap/fe/core/library.ts +38 -0
  225. package/src/sap/fe/core/manifestMerger/ChangePageConfiguration.js +3 -3
  226. package/src/sap/fe/core/manifestMerger/ChangePageConfiguration.ts +2 -2
  227. package/src/sap/fe/core/messagebundle.properties +39 -63
  228. package/src/sap/fe/core/messagebundle_ar.properties +25 -39
  229. package/src/sap/fe/core/messagebundle_bg.properties +25 -39
  230. package/src/sap/fe/core/messagebundle_ca.properties +25 -39
  231. package/src/sap/fe/core/messagebundle_cs.properties +25 -39
  232. package/src/sap/fe/core/messagebundle_cy.properties +25 -39
  233. package/src/sap/fe/core/messagebundle_da.properties +25 -39
  234. package/src/sap/fe/core/messagebundle_de.properties +25 -39
  235. package/src/sap/fe/core/messagebundle_el.properties +26 -40
  236. package/src/sap/fe/core/messagebundle_en.properties +25 -39
  237. package/src/sap/fe/core/messagebundle_en_GB.properties +25 -39
  238. package/src/sap/fe/core/messagebundle_en_US_sappsd.properties +25 -39
  239. package/src/sap/fe/core/messagebundle_en_US_saprigi.properties +25 -39
  240. package/src/sap/fe/core/messagebundle_en_US_saptrc.properties +26 -18
  241. package/src/sap/fe/core/messagebundle_es.properties +27 -41
  242. package/src/sap/fe/core/messagebundle_es_MX.properties +25 -39
  243. package/src/sap/fe/core/messagebundle_et.properties +25 -39
  244. package/src/sap/fe/core/messagebundle_fi.properties +25 -39
  245. package/src/sap/fe/core/messagebundle_fr.properties +26 -40
  246. package/src/sap/fe/core/messagebundle_fr_CA.properties +25 -39
  247. package/src/sap/fe/core/messagebundle_hi.properties +25 -39
  248. package/src/sap/fe/core/messagebundle_hr.properties +25 -39
  249. package/src/sap/fe/core/messagebundle_hu.properties +25 -39
  250. package/src/sap/fe/core/messagebundle_id.properties +25 -39
  251. package/src/sap/fe/core/messagebundle_it.properties +41 -55
  252. package/src/sap/fe/core/messagebundle_iw.properties +25 -39
  253. package/src/sap/fe/core/messagebundle_ja.properties +25 -39
  254. package/src/sap/fe/core/messagebundle_kk.properties +25 -39
  255. package/src/sap/fe/core/messagebundle_ko.properties +30 -44
  256. package/src/sap/fe/core/messagebundle_lt.properties +25 -39
  257. package/src/sap/fe/core/messagebundle_lv.properties +25 -39
  258. package/src/sap/fe/core/messagebundle_ms.properties +25 -39
  259. package/src/sap/fe/core/messagebundle_nl.properties +27 -41
  260. package/src/sap/fe/core/messagebundle_no.properties +25 -39
  261. package/src/sap/fe/core/messagebundle_pl.properties +26 -40
  262. package/src/sap/fe/core/messagebundle_pt.properties +26 -40
  263. package/src/sap/fe/core/messagebundle_pt_PT.properties +25 -39
  264. package/src/sap/fe/core/messagebundle_ro.properties +25 -39
  265. package/src/sap/fe/core/messagebundle_ru.properties +25 -39
  266. package/src/sap/fe/core/messagebundle_sh.properties +25 -39
  267. package/src/sap/fe/core/messagebundle_sk.properties +25 -39
  268. package/src/sap/fe/core/messagebundle_sl.properties +25 -39
  269. package/src/sap/fe/core/messagebundle_sv.properties +25 -39
  270. package/src/sap/fe/core/messagebundle_th.properties +25 -39
  271. package/src/sap/fe/core/messagebundle_tr.properties +25 -39
  272. package/src/sap/fe/core/messagebundle_uk.properties +25 -39
  273. package/src/sap/fe/core/messagebundle_vi.properties +25 -39
  274. package/src/sap/fe/core/messagebundle_zh_CN.properties +25 -39
  275. package/src/sap/fe/core/messagebundle_zh_TW.properties +25 -39
  276. package/src/sap/fe/core/services/AsyncComponentServiceFactory.js +2 -2
  277. package/src/sap/fe/core/services/AsyncComponentServiceFactory.ts +5 -5
  278. package/src/sap/fe/core/services/CacheHandlerServiceFactory.js +97 -69
  279. package/src/sap/fe/core/services/CacheHandlerServiceFactory.ts +68 -69
  280. package/src/sap/fe/core/services/EnvironmentServiceFactory.js +1 -1
  281. package/src/sap/fe/core/services/EnvironmentServiceFactory.ts +3 -2
  282. package/src/sap/fe/core/services/NavigationServiceFactory.js +61 -49
  283. package/src/sap/fe/core/services/NavigationServiceFactory.ts +63 -52
  284. package/src/sap/fe/core/services/ResourceModelServiceFactory.js +2 -2
  285. package/src/sap/fe/core/services/ResourceModelServiceFactory.ts +4 -4
  286. package/src/sap/fe/core/services/RoutingServiceFactory.js +55 -55
  287. package/src/sap/fe/core/services/RoutingServiceFactory.ts +67 -65
  288. package/src/sap/fe/core/services/ShellServicesFactory.js +92 -76
  289. package/src/sap/fe/core/services/ShellServicesFactory.ts +95 -82
  290. package/src/sap/fe/core/services/SideEffectsServiceFactory.js +61 -61
  291. package/src/sap/fe/core/services/SideEffectsServiceFactory.ts +102 -92
  292. package/src/sap/fe/core/services/TemplatedViewServiceFactory.js +224 -198
  293. package/src/sap/fe/core/services/TemplatedViewServiceFactory.ts +138 -139
  294. package/src/sap/fe/core/support/CommonHelper.js +3 -2
  295. package/src/sap/fe/core/support/CommonHelper.ts +9 -13
  296. package/src/sap/fe/core/support/Diagnostics.js +1 -1
  297. package/src/sap/fe/core/support/Diagnostics.ts +5 -5
  298. package/src/sap/fe/core/templating/CommonFormatters.js +84 -0
  299. package/src/sap/fe/core/templating/CommonFormatters.ts +86 -0
  300. package/src/sap/fe/core/templating/CriticalityFormatters.js +31 -31
  301. package/src/sap/fe/core/templating/CriticalityFormatters.ts +42 -40
  302. package/src/sap/fe/core/templating/DataFieldFormatters.js +8 -8
  303. package/src/sap/fe/core/templating/DataFieldFormatters.ts +13 -10
  304. package/src/sap/fe/core/templating/DataModelPathHelper.js +16 -15
  305. package/src/sap/fe/core/templating/DataModelPathHelper.ts +42 -32
  306. package/src/sap/fe/core/templating/DisplayModeFormatter.js +1 -1
  307. package/src/sap/fe/core/templating/DisplayModeFormatter.ts +2 -3
  308. package/src/sap/fe/core/templating/EntitySetHelper.js +7 -7
  309. package/src/sap/fe/core/templating/EntitySetHelper.ts +6 -8
  310. package/src/sap/fe/core/templating/FieldControlHelper.js +35 -34
  311. package/src/sap/fe/core/templating/FieldControlHelper.ts +29 -46
  312. package/src/sap/fe/core/templating/FilterHelper.js +16 -15
  313. package/src/sap/fe/core/templating/FilterHelper.ts +18 -18
  314. package/src/sap/fe/core/templating/FilterTemplating.js +1 -1
  315. package/src/sap/fe/core/templating/FilterTemplating.ts +3 -3
  316. package/src/sap/fe/core/templating/PropertyFormatters.js +7 -7
  317. package/src/sap/fe/core/templating/PropertyFormatters.ts +21 -19
  318. package/src/sap/fe/core/templating/PropertyHelper.js +25 -25
  319. package/src/sap/fe/core/templating/PropertyHelper.ts +25 -26
  320. package/src/sap/fe/core/templating/UIFormatters.js +152 -95
  321. package/src/sap/fe/core/templating/UIFormatters.ts +202 -128
  322. package/src/sap/fe/core/type/Email.js +2 -2
  323. package/src/sap/fe/core/type/Email.ts +2 -2
  324. package/src/sap/fe/core/helpers/BindingExpression.js +0 -1732
@@ -2,25 +2,25 @@
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/converters/annotations/DataField", "sap/fe/core/helpers/BindingExpression", "sap/fe/core/templating/DataModelPathHelper", "../../../helpers/StableIdHelper", "../../helpers/ConfigurableObject", "../../helpers/ID", "../../helpers/Key", "../../ManifestSettings"], function (DataField, BindingExpression, DataModelPathHelper, StableIdHelper, ConfigurableObject, ID, Key, ManifestSettings) {
5
+ sap.ui.define(["sap/fe/core/converters/annotations/DataField", "sap/fe/core/helpers/BindingToolkit", "sap/fe/core/templating/DataModelPathHelper", "../../../helpers/StableIdHelper", "../../helpers/ConfigurableObject", "../../helpers/ID", "../../helpers/Key", "../../ManifestSettings"], function (DataField, BindingToolkit, DataModelPathHelper, StableIdHelper, ConfigurableObject, ID, Key, ManifestSettings) {
6
6
  "use strict";
7
7
 
8
8
  var _exports = {};
9
9
  var ActionType = ManifestSettings.ActionType;
10
10
  var KeyHelper = Key.KeyHelper;
11
- var FormStandardActionButtonID = ID.FormStandardActionButtonID;
12
- var FormID = ID.FormID;
11
+ var getFormStandardActionButtonID = ID.getFormStandardActionButtonID;
12
+ var getFormID = ID.getFormID;
13
13
  var Placement = ConfigurableObject.Placement;
14
14
  var insertCustomElements = ConfigurableObject.insertCustomElements;
15
15
  var generate = StableIdHelper.generate;
16
16
  var getTargetObjectPath = DataModelPathHelper.getTargetObjectPath;
17
17
  var getTargetEntitySetPath = DataModelPathHelper.getTargetEntitySetPath;
18
- var not = BindingExpression.not;
19
- var ifElse = BindingExpression.ifElse;
20
- var equal = BindingExpression.equal;
21
- var compileBinding = BindingExpression.compileBinding;
22
- var bindingExpression = BindingExpression.bindingExpression;
23
- var annotationExpression = BindingExpression.annotationExpression;
18
+ var pathInModel = BindingToolkit.pathInModel;
19
+ var not = BindingToolkit.not;
20
+ var ifElse = BindingToolkit.ifElse;
21
+ var getExpressionFromAnnotation = BindingToolkit.getExpressionFromAnnotation;
22
+ var equal = BindingToolkit.equal;
23
+ var compileExpression = BindingToolkit.compileExpression;
24
24
  var getSemanticObjectPath = DataField.getSemanticObjectPath;
25
25
 
26
26
  function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
@@ -33,6 +33,7 @@ sap.ui.define(["sap/fe/core/converters/annotations/DataField", "sap/fe/core/help
33
33
 
34
34
  (function (FormElementType) {
35
35
  FormElementType["Default"] = "Default";
36
+ FormElementType["Slot"] = "Slot";
36
37
  FormElementType["Annotation"] = "Annotation";
37
38
  })(FormElementType || (FormElementType = {}));
38
39
 
@@ -41,7 +42,7 @@ sap.ui.define(["sap/fe/core/converters/annotations/DataField", "sap/fe/core/help
41
42
  /**
42
43
  * Returns default format options for text fields on a form.
43
44
  *
44
- * @returns {FormatOptionsType} Collection of format options with default values
45
+ * @returns Collection of format options with default values
45
46
  */
46
47
  function getDefaultFormatOptionsForForm() {
47
48
  return {
@@ -71,7 +72,7 @@ sap.ui.define(["sap/fe/core/converters/annotations/DataField", "sap/fe/core/help
71
72
  formElements.push({
72
73
  key: KeyHelper.generateKeyFromDataField(field),
73
74
  type: FormElementType.Annotation,
74
- annotationPath: converterContext.getEntitySetBasedAnnotationPath(field.fullyQualifiedName) + "/",
75
+ annotationPath: "".concat(converterContext.getEntitySetBasedAnnotationPath(field.fullyQualifiedName), "/"),
75
76
  semanticObjectPath: semanticObjectAnnotationPath,
76
77
  formatOptions: getDefaultFormatOptionsForForm(),
77
78
  isPartOfPreview: isFieldPartOfPreview(field, formPartOfPreview)
@@ -99,18 +100,18 @@ sap.ui.define(["sap/fe/core/converters/annotations/DataField", "sap/fe/core/help
99
100
  case "com.sap.vocabularies.UI.v1.DataPoint":
100
101
  formElements.push({
101
102
  // key: KeyHelper.generateKeyFromDataField(formAnnotation),
102
- key: "DataPoint::" + (formAnnotation.qualifier ? formAnnotation.qualifier : ""),
103
+ key: "DataPoint::".concat(formAnnotation.qualifier ? formAnnotation.qualifier : ""),
103
104
  type: FormElementType.Annotation,
104
- annotationPath: converterContext.getEntitySetBasedAnnotationPath(formAnnotation.fullyQualifiedName) + "/"
105
+ annotationPath: "".concat(converterContext.getEntitySetBasedAnnotationPath(formAnnotation.fullyQualifiedName), "/")
105
106
  });
106
107
  break;
107
108
 
108
109
  case "com.sap.vocabularies.Communication.v1.Contact":
109
110
  formElements.push({
110
111
  // key: KeyHelper.generateKeyFromDataField(formAnnotation),
111
- key: "Contact::" + (formAnnotation.qualifier ? formAnnotation.qualifier : ""),
112
+ key: "Contact::".concat(formAnnotation.qualifier ? formAnnotation.qualifier : ""),
112
113
  type: FormElementType.Annotation,
113
- annotationPath: converterContext.getEntitySetBasedAnnotationPath(formAnnotation.fullyQualifiedName) + "/"
114
+ annotationPath: "".concat(converterContext.getEntitySetBasedAnnotationPath(formAnnotation.fullyQualifiedName), "/")
114
115
  });
115
116
  break;
116
117
 
@@ -130,8 +131,8 @@ sap.ui.define(["sap/fe/core/converters/annotations/DataField", "sap/fe/core/help
130
131
  Object.keys(manifestFormContainer === null || manifestFormContainer === void 0 ? void 0 : manifestFormContainer.fields).forEach(function (fieldId) {
131
132
  formElements[fieldId] = {
132
133
  key: fieldId,
133
- id: "CustomFormElement::" + fieldId,
134
- type: FormElementType.Default,
134
+ id: "CustomFormElement::".concat(fieldId),
135
+ type: manifestFormContainer.fields[fieldId].type || FormElementType.Default,
135
136
  template: manifestFormContainer.fields[fieldId].template,
136
137
  label: manifestFormContainer.fields[fieldId].label,
137
138
  position: manifestFormContainer.fields[fieldId].position || {
@@ -153,9 +154,9 @@ sap.ui.define(["sap/fe/core/converters/annotations/DataField", "sap/fe/core/help
153
154
  var sFormContainerId = generate([{
154
155
  Facet: facetDefinition
155
156
  }]);
156
- var sAnnotationPath = "/" + facetDefinition.fullyQualifiedName;
157
+ var sAnnotationPath = "/".concat(facetDefinition.fullyQualifiedName);
157
158
  var resolvedTarget = converterContext.getEntityTypeAnnotation(facetDefinition.Target.value);
158
- var isVisible = compileBinding(not(equal(true, annotationExpression((_facetDefinition$anno5 = facetDefinition.annotations) === null || _facetDefinition$anno5 === void 0 ? void 0 : (_facetDefinition$anno6 = _facetDefinition$anno5.UI) === null || _facetDefinition$anno6 === void 0 ? void 0 : _facetDefinition$anno6.Hidden))));
159
+ var isVisible = compileExpression(not(equal(true, getExpressionFromAnnotation((_facetDefinition$anno5 = facetDefinition.annotations) === null || _facetDefinition$anno5 === void 0 ? void 0 : (_facetDefinition$anno6 = _facetDefinition$anno5.UI) === null || _facetDefinition$anno6 === void 0 ? void 0 : _facetDefinition$anno6.Hidden))));
159
160
  var sEntitySetPath; // resolvedTarget doesn't have a entitySet in case Containments and Paramterized services.
160
161
 
161
162
  if (resolvedTarget.converterContext.getEntitySet() && resolvedTarget.converterContext.getEntitySet() !== converterContext.getEntitySet()) {
@@ -176,9 +177,9 @@ sap.ui.define(["sap/fe/core/converters/annotations/DataField", "sap/fe/core/help
176
177
  }
177
178
 
178
179
  var oActionShowDetails = {
179
- id: FormStandardActionButtonID(sFormContainerId, "ShowHideDetails"),
180
+ id: getFormStandardActionButtonID(sFormContainerId, "ShowHideDetails"),
180
181
  key: "StandardAction::ShowHideDetails",
181
- text: compileBinding(ifElse(equal(bindingExpression("showDetails", "internal"), true), bindingExpression("T_COMMON_OBJECT_PAGE_HIDE_FORM_CONTAINER_DETAILS", "sap.fe.i18n"), bindingExpression("T_COMMON_OBJECT_PAGE_SHOW_FORM_CONTAINER_DETAILS", "sap.fe.i18n"))),
182
+ text: compileExpression(ifElse(equal(pathInModel("showDetails", "internal"), true), pathInModel("T_COMMON_OBJECT_PAGE_HIDE_FORM_CONTAINER_DETAILS", "sap.fe.i18n"), pathInModel("T_COMMON_OBJECT_PAGE_SHOW_FORM_CONTAINER_DETAILS", "sap.fe.i18n"))),
182
183
  type: ActionType.ShowFormDetails,
183
184
  press: "FormContainerRuntime.toggleDetails"
184
185
  };
@@ -232,8 +233,8 @@ sap.ui.define(["sap/fe/core/converters/annotations/DataField", "sap/fe/core/help
232
233
  switch (facetDefinition.$Type) {
233
234
  case "com.sap.vocabularies.UI.v1.CollectionFacet":
234
235
  // Keep only valid children
235
- var formCollectionDefinition = {
236
- id: FormID({
236
+ return {
237
+ id: getFormID({
237
238
  Facet: facetDefinition
238
239
  }),
239
240
  useFormContainerLabels: true,
@@ -245,11 +246,10 @@ sap.ui.define(["sap/fe/core/converters/annotations/DataField", "sap/fe/core/help
245
246
  formContainers: getFormContainersForCollection(facetDefinition, converterContext, actions),
246
247
  isVisible: isVisible
247
248
  };
248
- return formCollectionDefinition;
249
249
 
250
250
  case "com.sap.vocabularies.UI.v1.ReferenceFacet":
251
- var formDefinition = {
252
- id: FormID({
251
+ return {
252
+ id: getFormID({
253
253
  Facet: facetDefinition
254
254
  }),
255
255
  useFormContainerLabels: false,
@@ -257,7 +257,6 @@ sap.ui.define(["sap/fe/core/converters/annotations/DataField", "sap/fe/core/help
257
257
  formContainers: [getFormContainer(facetDefinition, converterContext, actions)],
258
258
  isVisible: isVisible
259
259
  };
260
- return formDefinition;
261
260
 
262
261
  default:
263
262
  throw new Error("Cannot create form based on ReferenceURLFacet");
@@ -267,4 +266,4 @@ sap.ui.define(["sap/fe/core/converters/annotations/DataField", "sap/fe/core/help
267
266
  _exports.createFormDefinition = createFormDefinition;
268
267
  return _exports;
269
268
  }, false);
270
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIkZvcm0udHMiXSwibmFtZXMiOlsiRm9ybUVsZW1lbnRUeXBlIiwiZ2V0RGVmYXVsdEZvcm1hdE9wdGlvbnNGb3JGb3JtIiwidGV4dExpbmVzRWRpdCIsImlzRmllbGRQYXJ0T2ZQcmV2aWV3IiwiZmllbGQiLCJmb3JtUGFydE9mUHJldmlldyIsInZhbHVlT2YiLCJhbm5vdGF0aW9ucyIsIlVJIiwiUGFydE9mUHJldmlldyIsInVuZGVmaW5lZCIsImdldEZvcm1FbGVtZW50c0Zyb21Bbm5vdGF0aW9ucyIsImZhY2V0RGVmaW5pdGlvbiIsImNvbnZlcnRlckNvbnRleHQiLCJmb3JtRWxlbWVudHMiLCJyZXNvbHZlZFRhcmdldCIsImdldEVudGl0eVR5cGVBbm5vdGF0aW9uIiwiVGFyZ2V0IiwidmFsdWUiLCJmb3JtQW5ub3RhdGlvbiIsImFubm90YXRpb24iLCJnZXREYXRhRmllbGRzRnJvbUFubm90YXRpb25zIiwic2VtYW50aWNPYmplY3RBbm5vdGF0aW9uUGF0aCIsImdldFNlbWFudGljT2JqZWN0UGF0aCIsIiRUeXBlIiwiSGlkZGVuIiwicHVzaCIsImtleSIsIktleUhlbHBlciIsImdlbmVyYXRlS2V5RnJvbURhdGFGaWVsZCIsInR5cGUiLCJBbm5vdGF0aW9uIiwiYW5ub3RhdGlvblBhdGgiLCJnZXRFbnRpdHlTZXRCYXNlZEFubm90YXRpb25QYXRoIiwiZnVsbHlRdWFsaWZpZWROYW1lIiwic2VtYW50aWNPYmplY3RQYXRoIiwiZm9ybWF0T3B0aW9ucyIsImlzUGFydE9mUHJldmlldyIsInRlcm0iLCJEYXRhIiwiZm9yRWFjaCIsInF1YWxpZmllciIsImdldEZvcm1FbGVtZW50c0Zyb21NYW5pZmVzdCIsIm1hbmlmZXN0V3JhcHBlciIsImdldE1hbmlmZXN0V3JhcHBlciIsIm1hbmlmZXN0Rm9ybUNvbnRhaW5lciIsImdldEZvcm1Db250YWluZXIiLCJmaWVsZHMiLCJPYmplY3QiLCJrZXlzIiwiZmllbGRJZCIsImlkIiwiRGVmYXVsdCIsInRlbXBsYXRlIiwibGFiZWwiLCJwb3NpdGlvbiIsInBsYWNlbWVudCIsIlBsYWNlbWVudCIsIkFmdGVyIiwiYWN0aW9ucyIsInNGb3JtQ29udGFpbmVySWQiLCJnZW5lcmF0ZSIsIkZhY2V0Iiwic0Fubm90YXRpb25QYXRoIiwiaXNWaXNpYmxlIiwiY29tcGlsZUJpbmRpbmciLCJub3QiLCJlcXVhbCIsImFubm90YXRpb25FeHByZXNzaW9uIiwic0VudGl0eVNldFBhdGgiLCJnZXRFbnRpdHlTZXQiLCJnZXRUYXJnZXRFbnRpdHlTZXRQYXRoIiwiZ2V0RGF0YU1vZGVsT2JqZWN0UGF0aCIsInRhcmdldE9iamVjdCIsImNvbnRhaW5zVGFyZ2V0IiwiZ2V0VGFyZ2V0T2JqZWN0UGF0aCIsImFGb3JtRWxlbWVudHMiLCJpbnNlcnRDdXN0b21FbGVtZW50cyIsImZpbHRlciIsImFjdGlvbiIsImZhY2V0TmFtZSIsImxlbmd0aCIsIm9BY3Rpb25TaG93RGV0YWlscyIsIkZvcm1TdGFuZGFyZEFjdGlvbkJ1dHRvbklEIiwidGV4dCIsImlmRWxzZSIsImJpbmRpbmdFeHByZXNzaW9uIiwiQWN0aW9uVHlwZSIsIlNob3dGb3JtRGV0YWlscyIsInByZXNzIiwic29tZSIsIm9Gb3JtRWxlbWVudCIsImVudGl0eVNldCIsImdldEZvcm1Db250YWluZXJzRm9yQ29sbGVjdGlvbiIsImZvcm1Db250YWluZXJzIiwiRmFjZXRzIiwiZmFjZXQiLCJpc1JlZmVyZW5jZUZhY2V0IiwiY3JlYXRlRm9ybURlZmluaXRpb24iLCJmb3JtQ29sbGVjdGlvbkRlZmluaXRpb24iLCJGb3JtSUQiLCJ1c2VGb3JtQ29udGFpbmVyTGFiZWxzIiwiaGFzRmFjZXRzTm90UGFydE9mUHJldmlldyIsImNoaWxkRmFjZXQiLCJmb3JtRGVmaW5pdGlvbiIsIkVycm9yIl0sIm1hcHBpbmdzIjoiO0FBQUE7QUFDQTtBQUNBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O01Bc0NZQSxlOzthQUFBQSxlO0FBQUFBLElBQUFBLGU7QUFBQUEsSUFBQUEsZTtL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MEdBQXdCQyxFQUF4Qiw0R0FBNEJDLGFBQTVCLGtGQUEyQ0gsT0FBM0MsUUFBeUQsS0FBekU7QUFBQSxXQUQwQixDQUhLO0FBTWhDd0YsVUFBQUEsY0FBYyxFQUFFRCw4QkFBOEIsQ0FBQ2pGLGVBQUQsRUFBa0JDLGdCQUFsQixFQUFvQzhDLE9BQXBDLENBTmQ7QUFPaENLLFVBQUFBLFNBQVMsRUFBRUE7QUFQcUIsU0FBakM7QUFTQSxlQUFPbUMsd0JBQVA7O0FBQ0Q7QUFDQyxZQUFNSyxjQUFjLEdBQUc7QUFDdEJyRCxVQUFBQSxFQUFFLEVBQUVpRCxNQUFNLENBQUM7QUFBRXRDLFlBQUFBLEtBQUssRUFBRWxEO0FBQVQsV0FBRCxDQURZO0FBRXRCeUYsVUFBQUEsc0JBQXNCLEVBQUUsS0FGRjtBQUd0QkMsVUFBQUEseUJBQXlCLEVBQUUsNEJBQUExRixlQUFlLENBQUNMLFdBQWhCLCtHQUE2QkMsRUFBN0IsK0dBQWlDQyxhQUFqQyxvRkFBZ0RILE9BQWhELFFBQThELEtBSG5FO0FBSXRCd0YsVUFBQUEsY0FBYyxFQUFFLENBQUNoRCxnQkFBZ0IsQ0FBQ2xDLGVBQUQsRUFBa0JDLGdCQUFsQixFQUFvQzhDLE9BQXBDLENBQWpCLENBSk07QUFLdEJLLFVBQUFBLFNBQVMsRUFBRUE7QUFMVyxTQUF2QjtBQU9BLGVBQU93QyxjQUFQOztBQUNEO0FBQ0MsY0FBTSxJQUFJQyxLQUFKLENBQVUsK0NBQVYsQ0FBTjtBQXZCRjtBQXlCQSIsInNvdXJjZVJvb3QiOiIuIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcblx0QW5ub3RhdGlvblRlcm0sXG5cdENvbGxlY3Rpb25GYWNldFR5cGVzLFxuXHRDb21tdW5pY2F0aW9uQW5ub3RhdGlvblRlcm1zLFxuXHREYXRhRmllbGRBYnN0cmFjdFR5cGVzLFxuXHRGYWNldFR5cGVzLFxuXHRGaWVsZEdyb3VwLFxuXHRJZGVudGlmaWNhdGlvbixcblx0UGFydE9mUHJldmlldyxcblx0UmVmZXJlbmNlRmFjZXRUeXBlcyxcblx0VUlBbm5vdGF0aW9uVGVybXMsXG5cdFVJQW5ub3RhdGlvblR5cGVzXG59IGZyb20gXCJAc2FwLXV4L3ZvY2FidWxhcmllcy10eXBlc1wiO1xuaW1wb3J0IHsgZ2V0U2VtYW50aWNPYmplY3RQYXRoIH0gZnJvbSBcInNhcC9mZS9jb3JlL2NvbnZlcnRlcnMvYW5ub3RhdGlvbnMvRGF0YUZpZWxkXCI7XG5pbXBvcnQgeyBCYXNlQWN0aW9uLCBDb252ZXJ0ZXJBY3Rpb24gfSBmcm9tIFwic2FwL2ZlL2NvcmUvY29udmVydGVycy9jb250cm9scy9Db21tb24vQWN0aW9uXCI7XG5pbXBvcnQge1xuXHRhbm5vdGF0aW9uRXhwcmVzc2lvbixcblx0YmluZGluZ0V4cHJlc3Npb24sXG5cdEJpbmRpbmdFeHByZXNzaW9uLFxuXHRjb21waWxlQmluZGluZyxcblx0ZXF1YWwsXG5cdGlmRWxzZSxcblx0bm90XG59IGZyb20gXCJzYXAvZmUvY29yZS9oZWxwZXJzL0JpbmRpbmdFeHByZXNzaW9uXCI7XG5pbXBvcnQgeyBnZXRUYXJnZXRFbnRpdHlTZXRQYXRoLCBnZXRUYXJnZXRPYmplY3RQYXRoIH0gZnJvbSBcInNhcC9mZS9jb3JlL3RlbXBsYXRpbmcvRGF0YU1vZGVsUGF0aEhlbHBlclwiO1xuaW1wb3J0IHsgZ2VuZXJhdGUgfSBmcm9tIFwiLi4vLi4vLi4vaGVscGVycy9TdGFibGVJZEhlbHBlclwiO1xuaW1wb3J0IENvbnZlcnRlckNvbnRleHQgZnJvbSBcIi4uLy4uL0NvbnZlcnRlckNvbnRleHRcIjtcbmltcG9ydCB7IENvbmZpZ3VyYWJsZU9iamVjdCwgQ3VzdG9tRWxlbWVudCwgaW5zZXJ0Q3VzdG9tRWxlbWVudHMsIFBsYWNlbWVudCB9IGZyb20gXCIuLi8uLi9oZWxwZXJzL0NvbmZpZ3VyYWJsZU9iamVjdFwiO1xuaW1wb3J0IHsgRm9ybUlELCBGb3JtU3RhbmRhcmRBY3Rpb25CdXR0b25JRCB9IGZyb20gXCIuLi8uLi9oZWxwZXJzL0lEXCI7XG5pbXBvcnQgeyBLZXlIZWxwZXIgfSBmcm9tIFwiLi4vLi4vaGVscGVycy9LZXlcIjtcbmltcG9ydCB7IEFjdGlvblR5cGUsIEZvcm1hdE9wdGlvbnNUeXBlLCBGb3JtTWFuaWZlc3RDb25maWd1cmF0aW9uIH0gZnJvbSBcIi4uLy4uL01hbmlmZXN0U2V0dGluZ3NcIjtcblxuZXhwb3J0IHR5cGUgRm9ybURlZmluaXRpb24gPSB7XG5cdGlkOiBzdHJpbmc7XG5cdHVzZUZvcm1Db250YWluZXJMYWJlbHM6IGJvb2xlYW47XG5cdGhhc0ZhY2V0c05vdFBhcnRPZlByZXZpZXc6IGJvb2xlYW47XG5cdGZvcm1Db250YWluZXJzOiBGb3JtQ29udGFpbmVyW107XG5cdGlzVmlzaWJsZTogQmluZGluZ0V4cHJlc3Npb248Ym9vbGVhbj47XG59O1xuXG5leHBvcnQgZW51bSBGb3JtRWxlbWVudFR5cGUge1xuXHREZWZhdWx0ID0gXCJEZWZhdWx0XCIsXG5cdEFubm90YXRpb24gPSBcIkFubm90YXRpb25cIlxufVxuXG5leHBvcnQgdHlwZSBCYXNlRm9ybUVsZW1lbnQgPSBDb25maWd1cmFibGVPYmplY3QgJiB7XG5cdGlkPzogc3RyaW5nO1xuXHR0eXBlOiBGb3JtRWxlbWVudFR5cGU7XG5cdGxhYmVsPzogc3RyaW5nO1xuXHR2aXNpYmxlPzogQmluZGluZ0V4cHJlc3Npb248Ym9vbGVhbj47XG5cdGZvcm1hdE9wdGlvbnM/OiBGb3JtYXRPcHRpb25zVHlwZTtcbn07XG5cbmV4cG9ydCB0eXBlIEFubm90YXRpb25Gb3JtRWxlbWVudCA9IEJhc2VGb3JtRWxlbWVudCAmIHtcblx0aWRQcmVmaXg/OiBzdHJpbmc7XG5cdGFubm90YXRpb25QYXRoPzogc3RyaW5nO1xuXHRpc1ZhbHVlTXVsdGlsaW5lVGV4dD86IGJvb2xlYW47XG5cdHNlbWFudGljT2JqZWN0UGF0aD86IHN0cmluZztcblx0aXNQYXJ0T2ZQcmV2aWV3PzogYm9vbGVhbjtcbn07XG5cbmV4cG9ydCB0eXBlIEN1c3RvbUZvcm1FbGVtZW50ID0gQ3VzdG9tRWxlbWVudDxcblx0QmFzZUZvcm1FbGVtZW50ICYge1xuXHRcdHR5cGU6IEZvcm1FbGVtZW50VHlwZS5EZWZhdWx0O1xuXHRcdHRlbXBsYXRlOiBzdHJpbmc7XG5cdH1cbj47XG5cbmV4cG9ydCB0eXBlIEZvcm1FbGVtZW50ID0gQ3VzdG9tRm9ybUVsZW1lbnQgfCBBbm5vdGF0aW9uRm9ybUVsZW1lbnQ7XG5cbnR5cGUgRm9ybUNvbnRhaW5lciA9IHtcblx0aWQ/OiBzdHJpbmc7XG5cdGZvcm1FbGVtZW50czogRm9ybUVsZW1lbnRbXTtcblx0YW5ub3RhdGlvblBhdGg6IHN0cmluZztcblx0aXNWaXNpYmxlOiBCaW5kaW5nRXhwcmVzc2lvbjxib29sZWFuPjtcblx0ZW50aXR5U2V0Pzogc3RyaW5nO1xuXHRhY3Rpb25zPzogQ29udmVydGVyQWN0aW9uW10gfCBCYXNlQWN0aW9uW107XG59O1xuXG4vKipcbiAqIFJldHVybnMgZGVmYXVsdCBmb3JtYXQgb3B0aW9ucyBmb3IgdGV4dCBmaWVsZHMgb24gYSBmb3JtLlxuICpcbiAqIEByZXR1cm5zIHtGb3JtYXRPcHRpb25zVHlwZX0gQ29sbGVjdGlvbiBvZiBmb3JtYXQgb3B0aW9ucyB3aXRoIGRlZmF1bHQgdmFsdWVzXG4gKi9cbmZ1bmN0aW9uIGdldERlZmF1bHRGb3JtYXRPcHRpb25zRm9yRm9ybSgpOiBGb3JtYXRPcHRpb25zVHlwZSB7XG5cdHJldHVybiB7XG5cdFx0dGV4dExpbmVzRWRpdDogNFxuXHR9O1xufVxuXG5mdW5jdGlvbiBpc0ZpZWxkUGFydE9mUHJldmlldyhmaWVsZDogRGF0YUZpZWxkQWJzdHJhY3RUeXBlcywgZm9ybVBhcnRPZlByZXZpZXc/OiBQYXJ0T2ZQcmV2aWV3KTogYm9vbGVhbiB7XG5cdC8vIEJvdGggZWFjaCBmb3JtIGFuZCBmaWVsZCBjYW4gaGF2ZSB0aGUgUGFydE9mUHJldmlldyBhbm5vdGF0aW9uLiBPbmx5IGlmIHRoZSBmb3JtIGlzIG5vdCBoaWRkZW4gKG5vdCBwYXJ0T2ZQcmV2aWV3KSB3ZSBhbGxvdyB0b2dnbGluZyBvbiBmaWVsZCBsZXZlbFxuXHRyZXR1cm4gKFxuXHRcdGZvcm1QYXJ0T2ZQcmV2aWV3Py52YWx1ZU9mKCkgPT09IGZhbHNlIHx8XG5cdFx0ZmllbGQuYW5ub3RhdGlvbnM/LlVJPy5QYXJ0T2ZQcmV2aWV3ID09PSB1bmRlZmluZWQgfHxcblx0XHRmaWVsZC5hbm5vdGF0aW9ucz8uVUk/LlBhcnRPZlByZXZpZXcudmFsdWVPZigpID09PSB0cnVlXG5cdCk7XG59XG5cbmZ1bmN0aW9uIGdldEZvcm1FbGVtZW50c0Zyb21Bbm5vdGF0aW9ucyhmYWNldERlZmluaXRpb246IFJlZmVyZW5jZUZhY2V0VHlwZXMsIGNvbnZlcnRlckNvbnRleHQ6IENvbnZlcnRlckNvbnRleHQpOiBBbm5vdGF0aW9uRm9ybUVsZW1lbnRbXSB7XG5cdGNvbnN0IGZvcm1FbGVtZW50czogQW5ub3RhdGlvbkZvcm1FbGVtZW50W10gPSBbXTtcblx0Y29uc3QgcmVzb2x2ZWRUYXJnZXQgPSBjb252ZXJ0ZXJDb250ZXh0LmdldEVudGl0eVR5cGVBbm5vdGF0aW9uKGZhY2V0RGVmaW5pdGlvbi5UYXJnZXQudmFsdWUpO1xuXHRjb25zdCBmb3JtQW5ub3RhdGlvbjogQW5ub3RhdGlvblRlcm08SWRlbnRpZmljYXRpb24+IHwgQW5ub3RhdGlvblRlcm08RmllbGRHcm91cD4gPSByZXNvbHZlZFRhcmdldC5hbm5vdGF0aW9uIGFzXG5cdFx0fCBBbm5vdGF0aW9uVGVybTxJZGVudGlmaWNhdGlvbj5cblx0XHR8IEFubm90YXRpb25UZXJtPEZpZWxkR3JvdXA+O1xuXHRjb252ZXJ0ZXJDb250ZXh0ID0gcmVzb2x2ZWRUYXJnZXQuY29udmVydGVyQ29udGV4dDtcblxuXHRmdW5jdGlvbiBnZXREYXRhRmllbGRzRnJvbUFubm90YXRpb25zKGZpZWxkOiBEYXRhRmllbGRBYnN0cmFjdFR5cGVzLCBmb3JtUGFydE9mUHJldmlldzogUGFydE9mUHJldmlldyB8IHVuZGVmaW5lZCkge1xuXHRcdGNvbnN0IHNlbWFudGljT2JqZWN0QW5ub3RhdGlvblBhdGggPSBnZXRTZW1hbnRpY09iamVjdFBhdGgoY29udmVydGVyQ29udGV4dCwgZmllbGQpO1xuXHRcdGlmIChcblx0XHRcdGZpZWxkLiRUeXBlICE9PSBVSUFubm90YXRpb25UeXBlcy5EYXRhRmllbGRGb3JBY3Rpb24gJiZcblx0XHRcdGZpZWxkLiRUeXBlICE9PSBVSUFubm90YXRpb25UeXBlcy5EYXRhRmllbGRGb3JJbnRlbnRCYXNlZE5hdmlnYXRpb24gJiZcblx0XHRcdGZpZWxkLmFubm90YXRpb25zPy5VST8uSGlkZGVuPy52YWx1ZU9mKCkgIT09IHRydWVcblx0XHQpIHtcblx0XHRcdGZvcm1FbGVtZW50cy5wdXNoKHtcblx0XHRcdFx0a2V5OiBLZXlIZWxwZXIuZ2VuZXJhdGVLZXlGcm9tRGF0YUZpZWxkKGZpZWxkKSxcblx0XHRcdFx0dHlwZTogRm9ybUVsZW1lbnRUeXBlLkFubm90YXRpb24sXG5cdFx0XHRcdGFubm90YXRpb25QYXRoOiBjb252ZXJ0ZXJDb250ZXh0LmdldEVudGl0eVNldEJhc2VkQW5ub3RhdGlvblBhdGgoZmllbGQuZnVsbHlRdWFsaWZpZWROYW1lKSArIFwiL1wiLFxuXHRcdFx0XHRzZW1hbnRpY09iamVjdFBhdGg6IHNlbWFudGljT2JqZWN0QW5ub3RhdGlvblBhdGgsXG5cdFx0XHRcdGZvcm1hdE9wdGlvbnM6IGdldERlZmF1bHRGb3JtYXRPcHRpb25zRm9yRm9ybSgpLFxuXHRcdFx0XHRpc1BhcnRPZlByZXZpZXc6IGlzRmllbGRQYXJ0T2ZQcmV2aWV3KGZpZWxkLCBmb3JtUGFydE9mUHJldmlldylcblx0XHRcdH0pO1xuXHRcdH1cblx0fVxuXG5cdHN3aXRjaCAoZm9ybUFubm90YXRpb24/LnRlcm0pIHtcblx0XHRjYXNlIFVJQW5ub3RhdGlvblRlcm1zLkZpZWxkR3JvdXA6XG5cdFx0XHQoZm9ybUFubm90YXRpb24gYXMgQW5ub3RhdGlvblRlcm08RmllbGRHcm91cD4pLkRhdGEuZm9yRWFjaCgoZmllbGQpID0+XG5cdFx0XHRcdGdldERhdGFGaWVsZHNGcm9tQW5ub3RhdGlvbnMoZmllbGQsIGZhY2V0RGVmaW5pdGlvbi5hbm5vdGF0aW9ucz8uVUk/LlBhcnRPZlByZXZpZXcpXG5cdFx0XHQpO1xuXHRcdFx0YnJlYWs7XG5cdFx0Y2FzZSBVSUFubm90YXRpb25UZXJtcy5JZGVudGlmaWNhdGlvbjpcblx0XHRcdChmb3JtQW5ub3RhdGlvbiBhcyBBbm5vdGF0aW9uVGVybTxJZGVudGlmaWNhdGlvbj4pLmZvckVhY2goKGZpZWxkKSA9PlxuXHRcdFx0XHRnZXREYXRhRmllbGRzRnJvbUFubm90YXRpb25zKGZpZWxkLCBmYWNldERlZmluaXRpb24uYW5ub3RhdGlvbnM/LlVJPy5QYXJ0T2ZQcmV2aWV3KVxuXHRcdFx0KTtcblx0XHRcdGJyZWFrO1xuXHRcdGNhc2UgVUlBbm5vdGF0aW9uVGVybXMuRGF0YVBvaW50OlxuXHRcdFx0Zm9ybUVsZW1lbnRzLnB1c2goe1xuXHRcdFx0XHQvLyBrZXk6IEtleUhlbHBlci5nZW5lcmF0ZUtleUZyb21EYXRhRmllbGQoZm9ybUFubm90YXRpb24pLFxuXHRcdFx0XHRrZXk6IFwiRGF0YVBvaW50OjpcIiArIChmb3JtQW5ub3RhdGlvbi5xdWFsaWZpZXIgPyBmb3JtQW5ub3RhdGlvbi5xdWFsaWZpZXIgOiBcIlwiKSxcblx0XHRcdFx0dHlwZTogRm9ybUVsZW1lbnRUeXBlLkFubm90YXRpb24sXG5cdFx0XHRcdGFubm90YXRpb25QYXRoOiBjb252ZXJ0ZXJDb250ZXh0LmdldEVudGl0eVNldEJhc2VkQW5ub3RhdGlvblBhdGgoZm9ybUFubm90YXRpb24uZnVsbHlRdWFsaWZpZWROYW1lKSArIFwiL1wiXG5cdFx0XHR9KTtcblx0XHRcdGJyZWFrO1xuXHRcdGNhc2UgQ29tbXVuaWNhdGlvbkFubm90YXRpb25UZXJtcy5Db250YWN0OlxuXHRcdFx0Zm9ybUVsZW1lbnRzLnB1c2goe1xuXHRcdFx0XHQvLyBrZXk6IEtleUhlbHBlci5nZW5lcmF0ZUtleUZyb21EYXRhRmllbGQoZm9ybUFubm90YXRpb24pLFxuXHRcdFx0XHRrZXk6IFwiQ29udGFjdDo6XCIgKyAoZm9ybUFubm90YXRpb24ucXVhbGlmaWVyID8gZm9ybUFubm90YXRpb24ucXVhbGlmaWVyIDogXCJcIiksXG5cdFx0XHRcdHR5cGU6IEZvcm1FbGVtZW50VHlwZS5Bbm5vdGF0aW9uLFxuXHRcdFx0XHRhbm5vdGF0aW9uUGF0aDogY29udmVydGVyQ29udGV4dC5nZXRFbnRpdHlTZXRCYXNlZEFubm90YXRpb25QYXRoKGZvcm1Bbm5vdGF0aW9uLmZ1bGx5UXVhbGlmaWVkTmFtZSkgKyBcIi9cIlxuXHRcdFx0fSk7XG5cdFx0XHRicmVhaztcblx0XHRkZWZhdWx0OlxuXHRcdFx0YnJlYWs7XG5cdH1cblx0cmV0dXJuIGZvcm1FbGVtZW50cztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldEZvcm1FbGVtZW50c0Zyb21NYW5pZmVzdChcblx0ZmFjZXREZWZpbml0aW9uOiBSZWZlcmVuY2VGYWNldFR5cGVzLFxuXHRjb252ZXJ0ZXJDb250ZXh0OiBDb252ZXJ0ZXJDb250ZXh0XG4pOiBSZWNvcmQ8c3RyaW5nLCBDdXN0b21Gb3JtRWxlbWVudD4ge1xuXHRjb25zdCBtYW5pZmVzdFdyYXBwZXIgPSBjb252ZXJ0ZXJDb250ZXh0LmdldE1hbmlmZXN0V3JhcHBlcigpO1xuXHRjb25zdCBtYW5pZmVzdEZvcm1Db250YWluZXI6IEZvcm1NYW5pZmVzdENvbmZpZ3VyYXRpb24gPSBtYW5pZmVzdFdyYXBwZXIuZ2V0Rm9ybUNvbnRhaW5lcihmYWNldERlZmluaXRpb24uVGFyZ2V0LnZhbHVlKTtcblx0Y29uc3QgZm9ybUVsZW1lbnRzOiBSZWNvcmQ8c3RyaW5nLCBDdXN0b21Gb3JtRWxlbWVudD4gPSB7fTtcblx0aWYgKG1hbmlmZXN0Rm9ybUNvbnRhaW5lcj8uZmllbGRzKSB7XG5cdFx0T2JqZWN0LmtleXMobWFuaWZlc3RGb3JtQ29udGFpbmVyPy5maWVsZHMpLmZvckVhY2goKGZpZWxkSWQpID0+IHtcblx0XHRcdGZvcm1FbGVtZW50c1tmaWVsZElkXSA9IHtcblx0XHRcdFx0a2V5OiBmaWVsZElkLFxuXHRcdFx0XHRpZDogXCJDdXN0b21Gb3JtRWxlbWVudDo6XCIgKyBmaWVsZElkLFxuXHRcdFx0XHR0eXBlOiBGb3JtRWxlbWVudFR5cGUuRGVmYXVsdCxcblx0XHRcdFx0dGVtcGxhdGU6IG1hbmlmZXN0Rm9ybUNvbnRhaW5lci5maWVsZHNbZmllbGRJZF0udGVtcGxhdGUsXG5cdFx0XHRcdGxhYmVsOiBtYW5pZmVzdEZvcm1Db250YWluZXIuZmllbGRzW2ZpZWxkSWRdLmxhYmVsLFxuXHRcdFx0XHRwb3NpdGlvbjogbWFuaWZlc3RGb3JtQ29udGFpbmVyLmZpZWxkc1tmaWVsZElkXS5wb3NpdGlvbiB8fCB7XG5cdFx0XHRcdFx0cGxhY2VtZW50OiBQbGFjZW1lbnQuQWZ0ZXJcblx0XHRcdFx0fSxcblx0XHRcdFx0Zm9ybWF0T3B0aW9uczoge1xuXHRcdFx0XHRcdC4uLmdldERlZmF1bHRGb3JtYXRPcHRpb25zRm9yRm9ybSgpLFxuXHRcdFx0XHRcdC4uLm1hbmlmZXN0Rm9ybUNvbnRhaW5lci5maWVsZHNbZmllbGRJZF0uZm9ybWF0T3B0aW9uc1xuXHRcdFx0XHR9XG5cdFx0XHR9O1xuXHRcdH0pO1xuXHR9XG5cdHJldHVybiBmb3JtRWxlbWVudHM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRGb3JtQ29udGFpbmVyKFxuXHRmYWNldERlZmluaXRpb246IFJlZmVyZW5jZUZhY2V0VHlwZXMsXG5cdGNvbnZlcnRlckNvbnRleHQ6IENvbnZlcnRlckNvbnRleHQsXG5cdGFjdGlvbnM/OiBCYXNlQWN0aW9uW10gfCBDb252ZXJ0ZXJBY3Rpb25bXVxuKTogRm9ybUNvbnRhaW5lciB7XG5cdGNvbnN0IHNGb3JtQ29udGFpbmVySWQgPSBnZW5lcmF0ZShbeyBGYWNldDogZmFjZXREZWZpbml0aW9uIH1dKTtcblx0Y29uc3Qgc0Fubm90YXRpb25QYXRoID0gXCIvXCIgKyBmYWNldERlZmluaXRpb24uZnVsbHlRdWFsaWZpZWROYW1lO1xuXHRjb25zdCByZXNvbHZlZFRhcmdldCA9IGNvbnZlcnRlckNvbnRleHQuZ2V0RW50aXR5VHlwZUFubm90YXRpb24oZmFjZXREZWZpbml0aW9uLlRhcmdldC52YWx1ZSk7XG5cdGNvbnN0IGlzVmlzaWJsZSA9IGNvbXBpbGVCaW5kaW5nKG5vdChlcXVhbCh0cnVlLCBhbm5vdGF0aW9uRXhwcmVzc2lvbihmYWNldERlZmluaXRpb24uYW5ub3RhdGlvbnM/LlVJPy5IaWRkZW4pKSkpO1xuXHRsZXQgc0VudGl0eVNldFBhdGghOiBzdHJpbmc7XG5cdC8vIHJlc29sdmVkVGFyZ2V0IGRvZXNuJ3QgaGF2ZSBhIGVudGl0eVNldCBpbiBjYXNlIENvbnRhaW5tZW50cyBhbmQgUGFyYW10ZXJpemVkIHNlcnZpY2VzLlxuXHRpZiAoXG5cdFx0cmVzb2x2ZWRUYXJnZXQuY29udmVydGVyQ29udGV4dC5nZXRFbnRpdHlTZXQoKSAmJlxuXHRcdHJlc29sdmVkVGFyZ2V0LmNvbnZlcnRlckNvbnRleHQuZ2V0RW50aXR5U2V0KCkgIT09IGNvbnZlcnRlckNvbnRleHQuZ2V0RW50aXR5U2V0KClcblx0KSB7XG5cdFx0c0VudGl0eVNldFBhdGggPSBnZXRUYXJnZXRFbnRpdHlTZXRQYXRoKHJlc29sdmVkVGFyZ2V0LmNvbnZlcnRlckNvbnRleHQuZ2V0RGF0YU1vZGVsT2JqZWN0UGF0aCgpKTtcblx0fSBlbHNlIGlmIChyZXNvbHZlZFRhcmdldC5jb252ZXJ0ZXJDb250ZXh0LmdldERhdGFNb2RlbE9iamVjdFBhdGgoKS50YXJnZXRPYmplY3Q/LmNvbnRhaW5zVGFyZ2V0ID09PSB0cnVlKSB7XG5cdFx0c0VudGl0eVNldFBhdGggPSBnZXRUYXJnZXRPYmplY3RQYXRoKHJlc29sdmVkVGFyZ2V0LmNvbnZlcnRlckNvbnRleHQuZ2V0RGF0YU1vZGVsT2JqZWN0UGF0aCgpLCBmYWxzZSk7XG5cdH1cblx0Y29uc3QgYUZvcm1FbGVtZW50cyA9IGluc2VydEN1c3RvbUVsZW1lbnRzKFxuXHRcdGdldEZvcm1FbGVtZW50c0Zyb21Bbm5vdGF0aW9ucyhmYWNldERlZmluaXRpb24sIGNvbnZlcnRlckNvbnRleHQpLFxuXHRcdGdldEZvcm1FbGVtZW50c0Zyb21NYW5pZmVzdChmYWNldERlZmluaXRpb24sIGNvbnZlcnRlckNvbnRleHQpLFxuXHRcdHsgZm9ybWF0T3B0aW9uczogXCJvdmVyd3JpdGVcIiB9XG5cdCk7XG5cblx0YWN0aW9ucyA9IGFjdGlvbnMgIT09IHVuZGVmaW5lZCA/IGFjdGlvbnMuZmlsdGVyKChhY3Rpb24pID0+IGFjdGlvbi5mYWNldE5hbWUgPT0gZmFjZXREZWZpbml0aW9uLmZ1bGx5UXVhbGlmaWVkTmFtZSkgOiBbXTtcblx0aWYgKGFjdGlvbnMubGVuZ3RoID09PSAwKSB7XG5cdFx0YWN0aW9ucyA9IHVuZGVmaW5lZDtcblx0fVxuXG5cdGNvbnN0IG9BY3Rpb25TaG93RGV0YWlsczogQmFzZUFjdGlvbiA9IHtcblx0XHRpZDogRm9ybVN0YW5kYXJkQWN0aW9uQnV0dG9uSUQoc0Zvcm1Db250YWluZXJJZCwgXCJTaG93SGlkZURldGFpbHNcIiksXG5cdFx0a2V5OiBcIlN0YW5kYXJkQWN0aW9uOjpTaG93SGlkZURldGFpbHNcIixcblx0XHR0ZXh0OiBjb21waWxlQmluZGluZyhcblx0XHRcdGlmRWxzZShcblx0XHRcdFx0ZXF1YWwoYmluZGluZ0V4cHJlc3Npb24oXCJzaG93RGV0YWlsc1wiLCBcImludGVybmFsXCIpLCB0cnVlKSxcblx0XHRcdFx0YmluZGluZ0V4cHJlc3Npb24oXCJUX0NPTU1PTl9PQkpFQ1RfUEFHRV9ISURFX0ZPUk1fQ09OVEFJTkVSX0RFVEFJTFNcIiwgXCJzYXAuZmUuaTE4blwiKSxcblx0XHRcdFx0YmluZGluZ0V4cHJlc3Npb24oXCJUX0NPTU1PTl9PQkpFQ1RfUEFHRV9TSE9XX0ZPUk1fQ09OVEFJTkVSX0RFVEFJTFNcIiwgXCJzYXAuZmUuaTE4blwiKVxuXHRcdFx0KVxuXHRcdCksXG5cdFx0dHlwZTogQWN0aW9uVHlwZS5TaG93Rm9ybURldGFpbHMsXG5cdFx0cHJlc3M6IFwiRm9ybUNvbnRhaW5lclJ1bnRpbWUudG9nZ2xlRGV0YWlsc1wiXG5cdH07XG5cblx0aWYgKFxuXHRcdGZhY2V0RGVmaW5pdGlvbi5hbm5vdGF0aW9ucz8uVUk/LlBhcnRPZlByZXZpZXc/LnZhbHVlT2YoKSAhPT0gZmFsc2UgJiZcblx0XHRhRm9ybUVsZW1lbnRzLnNvbWUoKG9Gb3JtRWxlbWVudCkgPT4gb0Zvcm1FbGVtZW50LmlzUGFydE9mUHJldmlldyA9PT0gZmFsc2UpXG5cdCkge1xuXHRcdGlmIChhY3Rpb25zICE9PSB1bmRlZmluZWQpIHtcblx0XHRcdGFjdGlvbnMucHVzaChvQWN0aW9uU2hvd0RldGFpbHMpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRhY3Rpb25zID0gW29BY3Rpb25TaG93RGV0YWlsc107XG5cdFx0fVxuXHR9XG5cblx0cmV0dXJuIHtcblx0XHRpZDogc0Zvcm1Db250YWluZXJJZCxcblx0XHRmb3JtRWxlbWVudHM6IGFGb3JtRWxlbWVudHMsXG5cdFx0YW5ub3RhdGlvblBhdGg6IHNBbm5vdGF0aW9uUGF0aCxcblx0XHRpc1Zpc2libGU6IGlzVmlzaWJsZSxcblx0XHRlbnRpdHlTZXQ6IHNFbnRpdHlTZXRQYXRoLFxuXHRcdGFjdGlvbnM6IGFjdGlvbnNcblx0fTtcbn1cblxuZnVuY3Rpb24gZ2V0Rm9ybUNvbnRhaW5lcnNGb3JDb2xsZWN0aW9uKFxuXHRmYWNldERlZmluaXRpb246IENvbGxlY3Rpb25GYWNldFR5cGVzLFxuXHRjb252ZXJ0ZXJDb250ZXh0OiBDb252ZXJ0ZXJDb250ZXh0LFxuXHRhY3Rpb25zPzogQmFzZUFjdGlvbltdIHwgQ29udmVydGVyQWN0aW9uW11cbik6IEZvcm1Db250YWluZXJbXSB7XG5cdGNvbnN0IGZvcm1Db250YWluZXJzOiBGb3JtQ29udGFpbmVyW10gPSBbXTtcblx0ZmFjZXREZWZpbml0aW9uLkZhY2V0cz8uZm9yRWFjaCgoZmFjZXQpID0+IHtcblx0XHQvLyBJZ25vcmUgbGV2ZWwgMyBjb2xsZWN0aW9uIGZhY2V0XG5cdFx0aWYgKGZhY2V0LiRUeXBlID09PSBVSUFubm90YXRpb25UeXBlcy5Db2xsZWN0aW9uRmFjZXQpIHtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cdFx0Zm9ybUNvbnRhaW5lcnMucHVzaChnZXRGb3JtQ29udGFpbmVyKGZhY2V0IGFzIFJlZmVyZW5jZUZhY2V0VHlwZXMsIGNvbnZlcnRlckNvbnRleHQsIGFjdGlvbnMpKTtcblx0fSk7XG5cdHJldHVybiBmb3JtQ29udGFpbmVycztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzUmVmZXJlbmNlRmFjZXQoZmFjZXREZWZpbml0aW9uOiBGYWNldFR5cGVzKTogZmFjZXREZWZpbml0aW9uIGlzIFJlZmVyZW5jZUZhY2V0VHlwZXMge1xuXHRyZXR1cm4gZmFjZXREZWZpbml0aW9uLiRUeXBlID09PSBVSUFubm90YXRpb25UeXBlcy5SZWZlcmVuY2VGYWNldDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUZvcm1EZWZpbml0aW9uKFxuXHRmYWNldERlZmluaXRpb246IEZhY2V0VHlwZXMsXG5cdGlzVmlzaWJsZTogQmluZGluZ0V4cHJlc3Npb248Ym9vbGVhbj4sXG5cdGNvbnZlcnRlckNvbnRleHQ6IENvbnZlcnRlckNvbnRleHQsXG5cdGFjdGlvbnM/OiBCYXNlQWN0aW9uW10gfCBDb252ZXJ0ZXJBY3Rpb25bXVxuKTogRm9ybURlZmluaXRpb24ge1xuXHRzd2l0Y2ggKGZhY2V0RGVmaW5pdGlvbi4kVHlwZSkge1xuXHRcdGNhc2UgVUlBbm5vdGF0aW9uVHlwZXMuQ29sbGVjdGlvbkZhY2V0OlxuXHRcdFx0Ly8gS2VlcCBvbmx5IHZhbGlkIGNoaWxkcmVuXG5cdFx0XHRjb25zdCBmb3JtQ29sbGVjdGlvbkRlZmluaXRpb24gPSB7XG5cdFx0XHRcdGlkOiBGb3JtSUQoeyBGYWNldDogZmFjZXREZWZpbml0aW9uIH0pLFxuXHRcdFx0XHR1c2VGb3JtQ29udGFpbmVyTGFiZWxzOiB0cnVlLFxuXHRcdFx0XHRoYXNGYWNldHNOb3RQYXJ0T2ZQcmV2aWV3OiBmYWNldERlZmluaXRpb24uRmFjZXRzLnNvbWUoXG5cdFx0XHRcdFx0KGNoaWxkRmFjZXQpID0+IGNoaWxkRmFjZXQuYW5ub3RhdGlvbnM/LlVJPy5QYXJ0T2ZQcmV2aWV3Py52YWx1ZU9mKCkgPT09IGZhbHNlXG5cdFx0XHRcdCksXG5cdFx0XHRcdGZvcm1Db250YWluZXJzOiBnZXRGb3JtQ29udGFpbmVyc0ZvckNvbGxlY3Rpb24oZmFjZXREZWZpbml0aW9uLCBjb252ZXJ0ZXJDb250ZXh0LCBhY3Rpb25zKSxcblx0XHRcdFx0aXNWaXNpYmxlOiBpc1Zpc2libGVcblx0XHRcdH07XG5cdFx0XHRyZXR1cm4gZm9ybUNvbGxlY3Rpb25EZWZpbml0aW9uO1xuXHRcdGNhc2UgVUlBbm5vdGF0aW9uVHlwZXMuUmVmZXJlbmNlRmFjZXQ6XG5cdFx0XHRjb25zdCBmb3JtRGVmaW5pdGlvbiA9IHtcblx0XHRcdFx0aWQ6IEZvcm1JRCh7IEZhY2V0OiBmYWNldERlZmluaXRpb24gfSksXG5cdFx0XHRcdHVzZUZvcm1Db250YWluZXJMYWJlbHM6IGZhbHNlLFxuXHRcdFx0XHRoYXNGYWNldHNOb3RQYXJ0T2ZQcmV2aWV3OiBmYWNldERlZmluaXRpb24uYW5ub3RhdGlvbnM/LlVJPy5QYXJ0T2ZQcmV2aWV3Py52YWx1ZU9mKCkgPT09IGZhbHNlLFxuXHRcdFx0XHRmb3JtQ29udGFpbmVyczogW2dldEZvcm1Db250YWluZXIoZmFjZXREZWZpbml0aW9uLCBjb252ZXJ0ZXJDb250ZXh0LCBhY3Rpb25zKV0sXG5cdFx0XHRcdGlzVmlzaWJsZTogaXNWaXNpYmxlXG5cdFx0XHR9O1xuXHRcdFx0cmV0dXJuIGZvcm1EZWZpbml0aW9uO1xuXHRcdGRlZmF1bHQ6XG5cdFx0XHR0aHJvdyBuZXcgRXJyb3IoXCJDYW5ub3QgY3JlYXRlIGZvcm0gYmFzZWQgb24gUmVmZXJlbmNlVVJMRmFjZXRcIik7XG5cdH1cbn1cbiJdfQ==
269
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIkZvcm0udHMiXSwibmFtZXMiOlsiRm9ybUVsZW1lbnRUeXBlIiwiZ2V0RGVmYXVsdEZvcm1hdE9wdGlvbnNGb3JGb3JtIiwidGV4dExpbmVzRWRpdCIsImlzRmllbGRQYXJ0T2ZQcmV2aWV3IiwiZmllbGQiLCJmb3JtUGFydE9mUHJldmlldyIsInZhbHVlT2YiLCJhbm5vdGF0aW9ucyIsIlVJIiwiUGFydE9mUHJldmlldyIsInVuZGVmaW5lZCIsImdldEZvcm1FbGVtZW50c0Zyb21Bbm5vdGF0aW9ucyIsImZhY2V0RGVmaW5pdGlvbiIsImNvbnZlcnRlckNvbnRleHQiLCJmb3JtRWxlbWVudHMiLCJyZXNvbHZlZFRhcmdldCIsImdldEVudGl0eVR5cGVBbm5vdGF0aW9uIiwiVGFyZ2V0IiwidmFsdWUiLCJmb3JtQW5ub3RhdGlvbiIsImFubm90YXRpb24iLCJnZXREYXRhRmllbGRzRnJvbUFubm90YXRpb25zIiwic2VtYW50aWNPYmplY3RBbm5vdGF0aW9uUGF0aCIsImdldFNlbWFudGljT2JqZWN0UGF0aCIsIiRUeXBlIiwiSGlkZGVuIiwicHVzaCIsImtleSIsIktleUhlbHBlciIsImdlbmVyYXRlS2V5RnJvbURhdGFGaWVsZCIsInR5cGUiLCJBbm5vdGF0aW9uIiwiYW5ub3RhdGlvblBhdGgiLCJnZXRFbnRpdHlTZXRCYXNlZEFubm90YXRpb25QYXRoIiwiZnVsbHlRdWFsaWZpZWROYW1lIiwic2VtYW50aWNPYmplY3RQYXRoIiwiZm9ybWF0T3B0aW9ucyIsImlzUGFydE9mUHJldmlldyIsInRlcm0iLCJEYXRhIiwiZm9yRWFjaCIsInF1YWxpZmllciIsImdldEZvcm1FbGVtZW50c0Zyb21NYW5pZmVzdCIsIm1hbmlmZXN0V3JhcHBlciIsImdldE1hbmlmZXN0V3JhcHBlciIsIm1hbmlmZXN0Rm9ybUNvbnRhaW5lciIsImdldEZvcm1Db250YWluZXIiLCJmaWVsZHMiLCJPYmplY3QiLCJrZXlzIiwiZmllbGRJZCIsImlkIiwiRGVmYXVsdCIsInRlbXBsYXRlIiwibGFiZWwiLCJwb3NpdGlvbiIsInBsYWNlbWVudCIsIlBsYWNlbWVudCIsIkFmdGVyIiwiYWN0aW9ucyIsInNGb3JtQ29udGFpbmVySWQiLCJnZW5lcmF0ZSIsIkZhY2V0Iiwic0Fubm90YXRpb25QYXRoIiwiaXNWaXNpYmxlIiwiY29tcGlsZUV4cHJlc3Npb24iLCJub3QiLCJlcXVhbCIsImdldEV4cHJlc3Npb25Gcm9tQW5ub3RhdGlvbiIsInNFbnRpdHlTZXRQYXRoIiwiZ2V0RW50aXR5U2V0IiwiZ2V0VGFyZ2V0RW50aXR5U2V0UGF0aCIsImdldERhdGFNb2RlbE9iamVjdFBhdGgiLCJ0YXJnZXRPYmplY3QiLCJjb250YWluc1RhcmdldCIsImdldFRhcmdldE9iamVjdFBhdGgiLCJhRm9ybUVsZW1lbnRzIiwiaW5zZXJ0Q3VzdG9tRWxlbWVudHMiLCJmaWx0ZXIiLCJhY3Rpb24iLCJmYWNldE5hbWUiLCJsZW5ndGgiLCJvQWN0aW9uU2hvd0RldGFpbHMiLCJnZXRGb3JtU3RhbmRhcmRBY3Rpb25CdXR0b25JRCIsInRleHQiLCJpZkVsc2UiLCJwYXRoSW5Nb2RlbCIsIkFjdGlvblR5cGUiLCJTaG93Rm9ybURldGFpbHMiLCJwcmVzcyIsInNvbWUiLCJvRm9ybUVsZW1lbnQiLCJlbnRpdHlTZXQiLCJnZXRGb3JtQ29udGFpbmVyc0ZvckNvbGxlY3Rpb24iLCJmb3JtQ29udGFpbmVycyIsIkZhY2V0cyIsImZhY2V0IiwiaXNSZWZlcmVuY2VGYWNldCIsImNyZWF0ZUZvcm1EZWZpbml0aW9uIiwiZ2V0Rm9ybUlEIiwidXNlRm9ybUNvbnRhaW5lckxhYmVscyIsImhhc0ZhY2V0c05vdFBhcnRPZlByZXZpZXciLCJjaGlsZEZhY2V0IiwiRXJyb3IiXSwibWFwcGluZ3MiOiI7QUFBQTtBQUNBO0FBQ0E7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7TUFnQ1lBLGU7O2FBQUFBLGU7QUFBQUEsSUFBQUEsZTtBQUFBQSxJQUFBQSxlO0FBQUFBLElBQUFBLGU7S0FBQUEsZSxLQUFBQSxlOzs7O0FB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d0JDLEVBQXhCLDRHQUE0QkMsYUFBNUIsa0ZBQTJDSCxPQUEzQyxRQUF5RCxLQUF6RTtBQUFBLFdBRDBCLENBSHJCO0FBTU53RixVQUFBQSxjQUFjLEVBQUVELDhCQUE4QixDQUFDakYsZUFBRCxFQUFrQkMsZ0JBQWxCLEVBQW9DOEMsT0FBcEMsQ0FOeEM7QUFPTkssVUFBQUEsU0FBUyxFQUFFQTtBQVBMLFNBQVA7O0FBU0Q7QUFDQyxlQUFPO0FBQ05iLFVBQUFBLEVBQUUsRUFBRWdELFNBQVMsQ0FBQztBQUFFckMsWUFBQUEsS0FBSyxFQUFFbEQ7QUFBVCxXQUFELENBRFA7QUFFTndGLFVBQUFBLHNCQUFzQixFQUFFLEtBRmxCO0FBR05DLFVBQUFBLHlCQUF5QixFQUFFLDRCQUFBekYsZUFBZSxDQUFDTCxXQUFoQiwrR0FBNkJDLEVBQTdCLCtHQUFpQ0MsYUFBakMsb0ZBQWdESCxPQUFoRCxRQUE4RCxLQUhuRjtBQUlOd0YsVUFBQUEsY0FBYyxFQUFFLENBQUNoRCxnQkFBZ0IsQ0FBQ2xDLGVBQUQsRUFBa0JDLGdCQUFsQixFQUFvQzhDLE9BQXBDLENBQWpCLENBSlY7QUFLTkssVUFBQUEsU0FBUyxFQUFFQTtBQUxMLFNBQVA7O0FBT0Q7QUFDQyxjQUFNLElBQUl1QyxLQUFKLENBQVUsK0NBQVYsQ0FBTjtBQXJCRjtBQXVCQSIsInNvdXJjZVJvb3QiOiIuIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbXVuaWNhdGlvbkFubm90YXRpb25UZXJtcywgQ29udGFjdCB9IGZyb20gXCJAc2FwLXV4L3ZvY2FidWxhcmllcy10eXBlcy92b2NhYnVsYXJpZXMvQ29tbXVuaWNhdGlvblwiO1xuaW1wb3J0IHR5cGUge1xuXHRDb2xsZWN0aW9uRmFjZXRUeXBlcyxcblx0RGF0YUZpZWxkQWJzdHJhY3RUeXBlcyxcblx0RGF0YVBvaW50LFxuXHRGYWNldFR5cGVzLFxuXHRGaWVsZEdyb3VwLFxuXHRJZGVudGlmaWNhdGlvbixcblx0UGFydE9mUHJldmlldyxcblx0UmVmZXJlbmNlRmFjZXRUeXBlc1xufSBmcm9tIFwiQHNhcC11eC92b2NhYnVsYXJpZXMtdHlwZXMvdm9jYWJ1bGFyaWVzL1VJXCI7XG5pbXBvcnQgeyBVSUFubm90YXRpb25UZXJtcywgVUlBbm5vdGF0aW9uVHlwZXMgfSBmcm9tIFwiQHNhcC11eC92b2NhYnVsYXJpZXMtdHlwZXMvdm9jYWJ1bGFyaWVzL1VJXCI7XG5pbXBvcnQgeyBnZXRTZW1hbnRpY09iamVjdFBhdGggfSBmcm9tIFwic2FwL2ZlL2NvcmUvY29udmVydGVycy9hbm5vdGF0aW9ucy9EYXRhRmllbGRcIjtcbmltcG9ydCB0eXBlIHsgQmFzZUFjdGlvbiwgQ29udmVydGVyQWN0aW9uIH0gZnJvbSBcInNhcC9mZS9jb3JlL2NvbnZlcnRlcnMvY29udHJvbHMvQ29tbW9uL0FjdGlvblwiO1xuaW1wb3J0IHR5cGUgeyBDb21waWxlZEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbiB9IGZyb20gXCJzYXAvZmUvY29yZS9oZWxwZXJzL0JpbmRpbmdUb29sa2l0XCI7XG5pbXBvcnQgeyBjb21waWxlRXhwcmVzc2lvbiwgZXF1YWwsIGdldEV4cHJlc3Npb25Gcm9tQW5ub3RhdGlvbiwgaWZFbHNlLCBub3QsIHBhdGhJbk1vZGVsIH0gZnJvbSBcInNhcC9mZS9jb3JlL2hlbHBlcnMvQmluZGluZ1Rvb2xraXRcIjtcbmltcG9ydCB7IGdldFRhcmdldEVudGl0eVNldFBhdGgsIGdldFRhcmdldE9iamVjdFBhdGggfSBmcm9tIFwic2FwL2ZlL2NvcmUvdGVtcGxhdGluZy9EYXRhTW9kZWxQYXRoSGVscGVyXCI7XG5pbXBvcnQgeyBnZW5lcmF0ZSB9IGZyb20gXCIuLi8uLi8uLi9oZWxwZXJzL1N0YWJsZUlkSGVscGVyXCI7XG5pbXBvcnQgdHlwZSBDb252ZXJ0ZXJDb250ZXh0IGZyb20gXCIuLi8uLi9Db252ZXJ0ZXJDb250ZXh0XCI7XG5pbXBvcnQgdHlwZSB7IENvbmZpZ3VyYWJsZU9iamVjdCwgQ3VzdG9tRWxlbWVudCB9IGZyb20gXCIuLi8uLi9oZWxwZXJzL0NvbmZpZ3VyYWJsZU9iamVjdFwiO1xuaW1wb3J0IHsgaW5zZXJ0Q3VzdG9tRWxlbWVudHMsIFBsYWNlbWVudCB9IGZyb20gXCIuLi8uLi9oZWxwZXJzL0NvbmZpZ3VyYWJsZU9iamVjdFwiO1xuaW1wb3J0IHsgZ2V0Rm9ybUlELCBnZXRGb3JtU3RhbmRhcmRBY3Rpb25CdXR0b25JRCB9IGZyb20gXCIuLi8uLi9oZWxwZXJzL0lEXCI7XG5pbXBvcnQgeyBLZXlIZWxwZXIgfSBmcm9tIFwiLi4vLi4vaGVscGVycy9LZXlcIjtcbmltcG9ydCB0eXBlIHsgRm9ybWF0T3B0aW9uc1R5cGUsIEZvcm1NYW5pZmVzdENvbmZpZ3VyYXRpb24gfSBmcm9tIFwiLi4vLi4vTWFuaWZlc3RTZXR0aW5nc1wiO1xuaW1wb3J0IHsgQWN0aW9uVHlwZSB9IGZyb20gXCIuLi8uLi9NYW5pZmVzdFNldHRpbmdzXCI7XG5cbmV4cG9ydCB0eXBlIEZvcm1EZWZpbml0aW9uID0ge1xuXHRpZDogc3RyaW5nO1xuXHR1c2VGb3JtQ29udGFpbmVyTGFiZWxzOiBib29sZWFuO1xuXHRoYXNGYWNldHNOb3RQYXJ0T2ZQcmV2aWV3OiBib29sZWFuO1xuXHRmb3JtQ29udGFpbmVyczogRm9ybUNvbnRhaW5lcltdO1xuXHRpc1Zpc2libGU6IENvbXBpbGVkQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uO1xufTtcblxuZXhwb3J0IGVudW0gRm9ybUVsZW1lbnRUeXBlIHtcblx0RGVmYXVsdCA9IFwiRGVmYXVsdFwiLFxuXHRTbG90ID0gXCJTbG90XCIsXG5cdEFubm90YXRpb24gPSBcIkFubm90YXRpb25cIlxufVxuXG5leHBvcnQgdHlwZSBCYXNlRm9ybUVsZW1lbnQgPSBDb25maWd1cmFibGVPYmplY3QgJiB7XG5cdGlkPzogc3RyaW5nO1xuXHR0eXBlOiBGb3JtRWxlbWVudFR5cGU7XG5cdGxhYmVsPzogc3RyaW5nO1xuXHR2aXNpYmxlPzogQ29tcGlsZWRCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb247XG5cdGZvcm1hdE9wdGlvbnM/OiBGb3JtYXRPcHRpb25zVHlwZTtcbn07XG5cbmV4cG9ydCB0eXBlIEFubm90YXRpb25Gb3JtRWxlbWVudCA9IEJhc2VGb3JtRWxlbWVudCAmIHtcblx0aWRQcmVmaXg/OiBzdHJpbmc7XG5cdGFubm90YXRpb25QYXRoPzogc3RyaW5nO1xuXHRpc1ZhbHVlTXVsdGlsaW5lVGV4dD86IGJvb2xlYW47XG5cdHNlbWFudGljT2JqZWN0UGF0aD86IHN0cmluZztcblx0aXNQYXJ0T2ZQcmV2aWV3PzogYm9vbGVhbjtcbn07XG5cbmV4cG9ydCB0eXBlIEN1c3RvbUZvcm1FbGVtZW50ID0gQ3VzdG9tRWxlbWVudDxcblx0QmFzZUZvcm1FbGVtZW50ICYge1xuXHRcdHR5cGU6IEZvcm1FbGVtZW50VHlwZTtcblx0XHR0ZW1wbGF0ZTogc3RyaW5nO1xuXHR9XG4+O1xuXG5leHBvcnQgdHlwZSBGb3JtRWxlbWVudCA9IEN1c3RvbUZvcm1FbGVtZW50IHwgQW5ub3RhdGlvbkZvcm1FbGVtZW50O1xuXG5leHBvcnQgdHlwZSBGb3JtQ29udGFpbmVyID0ge1xuXHRpZD86IHN0cmluZztcblx0Zm9ybUVsZW1lbnRzOiBGb3JtRWxlbWVudFtdO1xuXHRhbm5vdGF0aW9uUGF0aDogc3RyaW5nO1xuXHRpc1Zpc2libGU6IENvbXBpbGVkQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uO1xuXHRlbnRpdHlTZXQ/OiBzdHJpbmc7XG5cdGFjdGlvbnM/OiBDb252ZXJ0ZXJBY3Rpb25bXSB8IEJhc2VBY3Rpb25bXTtcbn07XG5cbi8qKlxuICogUmV0dXJucyBkZWZhdWx0IGZvcm1hdCBvcHRpb25zIGZvciB0ZXh0IGZpZWxkcyBvbiBhIGZvcm0uXG4gKlxuICogQHJldHVybnMgQ29sbGVjdGlvbiBvZiBmb3JtYXQgb3B0aW9ucyB3aXRoIGRlZmF1bHQgdmFsdWVzXG4gKi9cbmZ1bmN0aW9uIGdldERlZmF1bHRGb3JtYXRPcHRpb25zRm9yRm9ybSgpOiBGb3JtYXRPcHRpb25zVHlwZSB7XG5cdHJldHVybiB7XG5cdFx0dGV4dExpbmVzRWRpdDogNFxuXHR9O1xufVxuXG5mdW5jdGlvbiBpc0ZpZWxkUGFydE9mUHJldmlldyhmaWVsZDogRGF0YUZpZWxkQWJzdHJhY3RUeXBlcywgZm9ybVBhcnRPZlByZXZpZXc/OiBQYXJ0T2ZQcmV2aWV3KTogYm9vbGVhbiB7XG5cdC8vIEJvdGggZWFjaCBmb3JtIGFuZCBmaWVsZCBjYW4gaGF2ZSB0aGUgUGFydE9mUHJldmlldyBhbm5vdGF0aW9uLiBPbmx5IGlmIHRoZSBmb3JtIGlzIG5vdCBoaWRkZW4gKG5vdCBwYXJ0T2ZQcmV2aWV3KSB3ZSBhbGxvdyB0b2dnbGluZyBvbiBmaWVsZCBsZXZlbFxuXHRyZXR1cm4gKFxuXHRcdGZvcm1QYXJ0T2ZQcmV2aWV3Py52YWx1ZU9mKCkgPT09IGZhbHNlIHx8XG5cdFx0ZmllbGQuYW5ub3RhdGlvbnM/LlVJPy5QYXJ0T2ZQcmV2aWV3ID09PSB1bmRlZmluZWQgfHxcblx0XHRmaWVsZC5hbm5vdGF0aW9ucz8uVUk/LlBhcnRPZlByZXZpZXcudmFsdWVPZigpID09PSB0cnVlXG5cdCk7XG59XG5cbmZ1bmN0aW9uIGdldEZvcm1FbGVtZW50c0Zyb21Bbm5vdGF0aW9ucyhmYWNldERlZmluaXRpb246IFJlZmVyZW5jZUZhY2V0VHlwZXMsIGNvbnZlcnRlckNvbnRleHQ6IENvbnZlcnRlckNvbnRleHQpOiBBbm5vdGF0aW9uRm9ybUVsZW1lbnRbXSB7XG5cdGNvbnN0IGZvcm1FbGVtZW50czogQW5ub3RhdGlvbkZvcm1FbGVtZW50W10gPSBbXTtcblx0Y29uc3QgcmVzb2x2ZWRUYXJnZXQgPSBjb252ZXJ0ZXJDb250ZXh0LmdldEVudGl0eVR5cGVBbm5vdGF0aW9uKGZhY2V0RGVmaW5pdGlvbi5UYXJnZXQudmFsdWUpO1xuXHRjb25zdCBmb3JtQW5ub3RhdGlvbjogSWRlbnRpZmljYXRpb24gfCBGaWVsZEdyb3VwIHwgQ29udGFjdCB8IERhdGFQb2ludCA9IHJlc29sdmVkVGFyZ2V0LmFubm90YXRpb247XG5cdGNvbnZlcnRlckNvbnRleHQgPSByZXNvbHZlZFRhcmdldC5jb252ZXJ0ZXJDb250ZXh0O1xuXG5cdGZ1bmN0aW9uIGdldERhdGFGaWVsZHNGcm9tQW5ub3RhdGlvbnMoZmllbGQ6IERhdGFGaWVsZEFic3RyYWN0VHlwZXMsIGZvcm1QYXJ0T2ZQcmV2aWV3OiBQYXJ0T2ZQcmV2aWV3IHwgdW5kZWZpbmVkKSB7XG5cdFx0Y29uc3Qgc2VtYW50aWNPYmplY3RBbm5vdGF0aW9uUGF0aCA9IGdldFNlbWFudGljT2JqZWN0UGF0aChjb252ZXJ0ZXJDb250ZXh0LCBmaWVsZCk7XG5cdFx0aWYgKFxuXHRcdFx0ZmllbGQuJFR5cGUgIT09IFVJQW5ub3RhdGlvblR5cGVzLkRhdGFGaWVsZEZvckFjdGlvbiAmJlxuXHRcdFx0ZmllbGQuJFR5cGUgIT09IFVJQW5ub3RhdGlvblR5cGVzLkRhdGFGaWVsZEZvckludGVudEJhc2VkTmF2aWdhdGlvbiAmJlxuXHRcdFx0ZmllbGQuYW5ub3RhdGlvbnM/LlVJPy5IaWRkZW4/LnZhbHVlT2YoKSAhPT0gdHJ1ZVxuXHRcdCkge1xuXHRcdFx0Zm9ybUVsZW1lbnRzLnB1c2goe1xuXHRcdFx0XHRrZXk6IEtleUhlbHBlci5nZW5lcmF0ZUtleUZyb21EYXRhRmllbGQoZmllbGQpLFxuXHRcdFx0XHR0eXBlOiBGb3JtRWxlbWVudFR5cGUuQW5ub3RhdGlvbixcblx0XHRcdFx0YW5ub3RhdGlvblBhdGg6IGAke2NvbnZlcnRlckNvbnRleHQuZ2V0RW50aXR5U2V0QmFzZWRBbm5vdGF0aW9uUGF0aChmaWVsZC5mdWxseVF1YWxpZmllZE5hbWUpfS9gLFxuXHRcdFx0XHRzZW1hbnRpY09iamVjdFBhdGg6IHNlbWFudGljT2JqZWN0QW5ub3RhdGlvblBhdGgsXG5cdFx0XHRcdGZvcm1hdE9wdGlvbnM6IGdldERlZmF1bHRGb3JtYXRPcHRpb25zRm9yRm9ybSgpLFxuXHRcdFx0XHRpc1BhcnRPZlByZXZpZXc6IGlzRmllbGRQYXJ0T2ZQcmV2aWV3KGZpZWxkLCBmb3JtUGFydE9mUHJldmlldylcblx0XHRcdH0pO1xuXHRcdH1cblx0fVxuXG5cdHN3aXRjaCAoZm9ybUFubm90YXRpb24/LnRlcm0pIHtcblx0XHRjYXNlIFVJQW5ub3RhdGlvblRlcm1zLkZpZWxkR3JvdXA6XG5cdFx0XHRmb3JtQW5ub3RhdGlvbi5EYXRhLmZvckVhY2goKGZpZWxkKSA9PiBnZXREYXRhRmllbGRzRnJvbUFubm90YXRpb25zKGZpZWxkLCBmYWNldERlZmluaXRpb24uYW5ub3RhdGlvbnM/LlVJPy5QYXJ0T2ZQcmV2aWV3KSk7XG5cdFx0XHRicmVhaztcblx0XHRjYXNlIFVJQW5ub3RhdGlvblRlcm1zLklkZW50aWZpY2F0aW9uOlxuXHRcdFx0Zm9ybUFubm90YXRpb24uZm9yRWFjaCgoZmllbGQpID0+IGdldERhdGFGaWVsZHNGcm9tQW5ub3RhdGlvbnMoZmllbGQsIGZhY2V0RGVmaW5pdGlvbi5hbm5vdGF0aW9ucz8uVUk/LlBhcnRPZlByZXZpZXcpKTtcblx0XHRcdGJyZWFrO1xuXHRcdGNhc2UgVUlBbm5vdGF0aW9uVGVybXMuRGF0YVBvaW50OlxuXHRcdFx0Zm9ybUVsZW1lbnRzLnB1c2goe1xuXHRcdFx0XHQvLyBrZXk6IEtleUhlbHBlci5nZW5lcmF0ZUtleUZyb21EYXRhRmllbGQoZm9ybUFubm90YXRpb24pLFxuXHRcdFx0XHRrZXk6IGBEYXRhUG9pbnQ6OiR7Zm9ybUFubm90YXRpb24ucXVhbGlmaWVyID8gZm9ybUFubm90YXRpb24ucXVhbGlmaWVyIDogXCJcIn1gLFxuXHRcdFx0XHR0eXBlOiBGb3JtRWxlbWVudFR5cGUuQW5ub3RhdGlvbixcblx0XHRcdFx0YW5ub3RhdGlvblBhdGg6IGAke2NvbnZlcnRlckNvbnRleHQuZ2V0RW50aXR5U2V0QmFzZWRBbm5vdGF0aW9uUGF0aChmb3JtQW5ub3RhdGlvbi5mdWxseVF1YWxpZmllZE5hbWUpfS9gXG5cdFx0XHR9KTtcblx0XHRcdGJyZWFrO1xuXHRcdGNhc2UgQ29tbXVuaWNhdGlvbkFubm90YXRpb25UZXJtcy5Db250YWN0OlxuXHRcdFx0Zm9ybUVsZW1lbnRzLnB1c2goe1xuXHRcdFx0XHQvLyBrZXk6IEtleUhlbHBlci5nZW5lcmF0ZUtleUZyb21EYXRhRmllbGQoZm9ybUFubm90YXRpb24pLFxuXHRcdFx0XHRrZXk6IGBDb250YWN0Ojoke2Zvcm1Bbm5vdGF0aW9uLnF1YWxpZmllciA/IGZvcm1Bbm5vdGF0aW9uLnF1YWxpZmllciA6IFwiXCJ9YCxcblx0XHRcdFx0dHlwZTogRm9ybUVsZW1lbnRUeXBlLkFubm90YXRpb24sXG5cdFx0XHRcdGFubm90YXRpb25QYXRoOiBgJHtjb252ZXJ0ZXJDb250ZXh0LmdldEVudGl0eVNldEJhc2VkQW5ub3RhdGlvblBhdGgoZm9ybUFubm90YXRpb24uZnVsbHlRdWFsaWZpZWROYW1lKX0vYFxuXHRcdFx0fSk7XG5cdFx0XHRicmVhaztcblx0XHRkZWZhdWx0OlxuXHRcdFx0YnJlYWs7XG5cdH1cblx0cmV0dXJuIGZvcm1FbGVtZW50cztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldEZvcm1FbGVtZW50c0Zyb21NYW5pZmVzdChcblx0ZmFjZXREZWZpbml0aW9uOiBSZWZlcmVuY2VGYWNldFR5cGVzLFxuXHRjb252ZXJ0ZXJDb250ZXh0OiBDb252ZXJ0ZXJDb250ZXh0XG4pOiBSZWNvcmQ8c3RyaW5nLCBDdXN0b21Gb3JtRWxlbWVudD4ge1xuXHRjb25zdCBtYW5pZmVzdFdyYXBwZXIgPSBjb252ZXJ0ZXJDb250ZXh0LmdldE1hbmlmZXN0V3JhcHBlcigpO1xuXHRjb25zdCBtYW5pZmVzdEZvcm1Db250YWluZXI6IEZvcm1NYW5pZmVzdENvbmZpZ3VyYXRpb24gPSBtYW5pZmVzdFdyYXBwZXIuZ2V0Rm9ybUNvbnRhaW5lcihmYWNldERlZmluaXRpb24uVGFyZ2V0LnZhbHVlKTtcblx0Y29uc3QgZm9ybUVsZW1lbnRzOiBSZWNvcmQ8c3RyaW5nLCBDdXN0b21Gb3JtRWxlbWVudD4gPSB7fTtcblx0aWYgKG1hbmlmZXN0Rm9ybUNvbnRhaW5lcj8uZmllbGRzKSB7XG5cdFx0T2JqZWN0LmtleXMobWFuaWZlc3RGb3JtQ29udGFpbmVyPy5maWVsZHMpLmZvckVhY2goKGZpZWxkSWQpID0+IHtcblx0XHRcdGZvcm1FbGVtZW50c1tmaWVsZElkXSA9IHtcblx0XHRcdFx0a2V5OiBmaWVsZElkLFxuXHRcdFx0XHRpZDogYEN1c3RvbUZvcm1FbGVtZW50Ojoke2ZpZWxkSWR9YCxcblx0XHRcdFx0dHlwZTogbWFuaWZlc3RGb3JtQ29udGFpbmVyLmZpZWxkc1tmaWVsZElkXS50eXBlIHx8IEZvcm1FbGVtZW50VHlwZS5EZWZhdWx0LFxuXHRcdFx0XHR0ZW1wbGF0ZTogbWFuaWZlc3RGb3JtQ29udGFpbmVyLmZpZWxkc1tmaWVsZElkXS50ZW1wbGF0ZSxcblx0XHRcdFx0bGFiZWw6IG1hbmlmZXN0Rm9ybUNvbnRhaW5lci5maWVsZHNbZmllbGRJZF0ubGFiZWwsXG5cdFx0XHRcdHBvc2l0aW9uOiBtYW5pZmVzdEZvcm1Db250YWluZXIuZmllbGRzW2ZpZWxkSWRdLnBvc2l0aW9uIHx8IHtcblx0XHRcdFx0XHRwbGFjZW1lbnQ6IFBsYWNlbWVudC5BZnRlclxuXHRcdFx0XHR9LFxuXHRcdFx0XHRmb3JtYXRPcHRpb25zOiB7XG5cdFx0XHRcdFx0Li4uZ2V0RGVmYXVsdEZvcm1hdE9wdGlvbnNGb3JGb3JtKCksXG5cdFx0XHRcdFx0Li4ubWFuaWZlc3RGb3JtQ29udGFpbmVyLmZpZWxkc1tmaWVsZElkXS5mb3JtYXRPcHRpb25zXG5cdFx0XHRcdH1cblx0XHRcdH07XG5cdFx0fSk7XG5cdH1cblx0cmV0dXJuIGZvcm1FbGVtZW50cztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldEZvcm1Db250YWluZXIoXG5cdGZhY2V0RGVmaW5pdGlvbjogUmVmZXJlbmNlRmFjZXRUeXBlcyxcblx0Y29udmVydGVyQ29udGV4dDogQ29udmVydGVyQ29udGV4dCxcblx0YWN0aW9ucz86IEJhc2VBY3Rpb25bXSB8IENvbnZlcnRlckFjdGlvbltdXG4pOiBGb3JtQ29udGFpbmVyIHtcblx0Y29uc3Qgc0Zvcm1Db250YWluZXJJZCA9IGdlbmVyYXRlKFt7IEZhY2V0OiBmYWNldERlZmluaXRpb24gfV0pO1xuXHRjb25zdCBzQW5ub3RhdGlvblBhdGggPSBgLyR7ZmFjZXREZWZpbml0aW9uLmZ1bGx5UXVhbGlmaWVkTmFtZX1gO1xuXHRjb25zdCByZXNvbHZlZFRhcmdldCA9IGNvbnZlcnRlckNvbnRleHQuZ2V0RW50aXR5VHlwZUFubm90YXRpb24oZmFjZXREZWZpbml0aW9uLlRhcmdldC52YWx1ZSk7XG5cdGNvbnN0IGlzVmlzaWJsZSA9IGNvbXBpbGVFeHByZXNzaW9uKG5vdChlcXVhbCh0cnVlLCBnZXRFeHByZXNzaW9uRnJvbUFubm90YXRpb24oZmFjZXREZWZpbml0aW9uLmFubm90YXRpb25zPy5VST8uSGlkZGVuKSkpKTtcblx0bGV0IHNFbnRpdHlTZXRQYXRoITogc3RyaW5nO1xuXHQvLyByZXNvbHZlZFRhcmdldCBkb2Vzbid0IGhhdmUgYSBlbnRpdHlTZXQgaW4gY2FzZSBDb250YWlubWVudHMgYW5kIFBhcmFtdGVyaXplZCBzZXJ2aWNlcy5cblx0aWYgKFxuXHRcdHJlc29sdmVkVGFyZ2V0LmNvbnZlcnRlckNvbnRleHQuZ2V0RW50aXR5U2V0KCkgJiZcblx0XHRyZXNvbHZlZFRhcmdldC5jb252ZXJ0ZXJDb250ZXh0LmdldEVudGl0eVNldCgpICE9PSBjb252ZXJ0ZXJDb250ZXh0LmdldEVudGl0eVNldCgpXG5cdCkge1xuXHRcdHNFbnRpdHlTZXRQYXRoID0gZ2V0VGFyZ2V0RW50aXR5U2V0UGF0aChyZXNvbHZlZFRhcmdldC5jb252ZXJ0ZXJDb250ZXh0LmdldERhdGFNb2RlbE9iamVjdFBhdGgoKSk7XG5cdH0gZWxzZSBpZiAocmVzb2x2ZWRUYXJnZXQuY29udmVydGVyQ29udGV4dC5nZXREYXRhTW9kZWxPYmplY3RQYXRoKCkudGFyZ2V0T2JqZWN0Py5jb250YWluc1RhcmdldCA9PT0gdHJ1ZSkge1xuXHRcdHNFbnRpdHlTZXRQYXRoID0gZ2V0VGFyZ2V0T2JqZWN0UGF0aChyZXNvbHZlZFRhcmdldC5jb252ZXJ0ZXJDb250ZXh0LmdldERhdGFNb2RlbE9iamVjdFBhdGgoKSwgZmFsc2UpO1xuXHR9XG5cdGNvbnN0IGFGb3JtRWxlbWVudHMgPSBpbnNlcnRDdXN0b21FbGVtZW50cyhcblx0XHRnZXRGb3JtRWxlbWVudHNGcm9tQW5ub3RhdGlvbnMoZmFjZXREZWZpbml0aW9uLCBjb252ZXJ0ZXJDb250ZXh0KSxcblx0XHRnZXRGb3JtRWxlbWVudHNGcm9tTWFuaWZlc3QoZmFjZXREZWZpbml0aW9uLCBjb252ZXJ0ZXJDb250ZXh0KSxcblx0XHR7IGZvcm1hdE9wdGlvbnM6IFwib3ZlcndyaXRlXCIgfVxuXHQpO1xuXG5cdGFjdGlvbnMgPSBhY3Rpb25zICE9PSB1bmRlZmluZWQgPyBhY3Rpb25zLmZpbHRlcigoYWN0aW9uKSA9PiBhY3Rpb24uZmFjZXROYW1lID09IGZhY2V0RGVmaW5pdGlvbi5mdWxseVF1YWxpZmllZE5hbWUpIDogW107XG5cdGlmIChhY3Rpb25zLmxlbmd0aCA9PT0gMCkge1xuXHRcdGFjdGlvbnMgPSB1bmRlZmluZWQ7XG5cdH1cblxuXHRjb25zdCBvQWN0aW9uU2hvd0RldGFpbHM6IEJhc2VBY3Rpb24gPSB7XG5cdFx0aWQ6IGdldEZvcm1TdGFuZGFyZEFjdGlvbkJ1dHRvbklEKHNGb3JtQ29udGFpbmVySWQsIFwiU2hvd0hpZGVEZXRhaWxzXCIpLFxuXHRcdGtleTogXCJTdGFuZGFyZEFjdGlvbjo6U2hvd0hpZGVEZXRhaWxzXCIsXG5cdFx0dGV4dDogY29tcGlsZUV4cHJlc3Npb24oXG5cdFx0XHRpZkVsc2UoXG5cdFx0XHRcdGVxdWFsKHBhdGhJbk1vZGVsKFwic2hvd0RldGFpbHNcIiwgXCJpbnRlcm5hbFwiKSwgdHJ1ZSksXG5cdFx0XHRcdHBhdGhJbk1vZGVsKFwiVF9DT01NT05fT0JKRUNUX1BBR0VfSElERV9GT1JNX0NPTlRBSU5FUl9ERVRBSUxTXCIsIFwic2FwLmZlLmkxOG5cIiksXG5cdFx0XHRcdHBhdGhJbk1vZGVsKFwiVF9DT01NT05fT0JKRUNUX1BBR0VfU0hPV19GT1JNX0NPTlRBSU5FUl9ERVRBSUxTXCIsIFwic2FwLmZlLmkxOG5cIilcblx0XHRcdClcblx0XHQpLFxuXHRcdHR5cGU6IEFjdGlvblR5cGUuU2hvd0Zvcm1EZXRhaWxzLFxuXHRcdHByZXNzOiBcIkZvcm1Db250YWluZXJSdW50aW1lLnRvZ2dsZURldGFpbHNcIlxuXHR9O1xuXG5cdGlmIChcblx0XHRmYWNldERlZmluaXRpb24uYW5ub3RhdGlvbnM/LlVJPy5QYXJ0T2ZQcmV2aWV3Py52YWx1ZU9mKCkgIT09IGZhbHNlICYmXG5cdFx0YUZvcm1FbGVtZW50cy5zb21lKChvRm9ybUVsZW1lbnQpID0+IG9Gb3JtRWxlbWVudC5pc1BhcnRPZlByZXZpZXcgPT09IGZhbHNlKVxuXHQpIHtcblx0XHRpZiAoYWN0aW9ucyAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0XHRhY3Rpb25zLnB1c2gob0FjdGlvblNob3dEZXRhaWxzKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0YWN0aW9ucyA9IFtvQWN0aW9uU2hvd0RldGFpbHNdO1xuXHRcdH1cblx0fVxuXG5cdHJldHVybiB7XG5cdFx0aWQ6IHNGb3JtQ29udGFpbmVySWQsXG5cdFx0Zm9ybUVsZW1lbnRzOiBhRm9ybUVsZW1lbnRzLFxuXHRcdGFubm90YXRpb25QYXRoOiBzQW5ub3RhdGlvblBhdGgsXG5cdFx0aXNWaXNpYmxlOiBpc1Zpc2libGUsXG5cdFx0ZW50aXR5U2V0OiBzRW50aXR5U2V0UGF0aCxcblx0XHRhY3Rpb25zOiBhY3Rpb25zXG5cdH07XG59XG5cbmZ1bmN0aW9uIGdldEZvcm1Db250YWluZXJzRm9yQ29sbGVjdGlvbihcblx0ZmFjZXREZWZpbml0aW9uOiBDb2xsZWN0aW9uRmFjZXRUeXBlcyxcblx0Y29udmVydGVyQ29udGV4dDogQ29udmVydGVyQ29udGV4dCxcblx0YWN0aW9ucz86IEJhc2VBY3Rpb25bXSB8IENvbnZlcnRlckFjdGlvbltdXG4pOiBGb3JtQ29udGFpbmVyW10ge1xuXHRjb25zdCBmb3JtQ29udGFpbmVyczogRm9ybUNvbnRhaW5lcltdID0gW107XG5cdGZhY2V0RGVmaW5pdGlvbi5GYWNldHM/LmZvckVhY2goKGZhY2V0KSA9PiB7XG5cdFx0Ly8gSWdub3JlIGxldmVsIDMgY29sbGVjdGlvbiBmYWNldFxuXHRcdGlmIChmYWNldC4kVHlwZSA9PT0gVUlBbm5vdGF0aW9uVHlwZXMuQ29sbGVjdGlvbkZhY2V0KSB7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXHRcdGZvcm1Db250YWluZXJzLnB1c2goZ2V0Rm9ybUNvbnRhaW5lcihmYWNldCBhcyBSZWZlcmVuY2VGYWNldFR5cGVzLCBjb252ZXJ0ZXJDb250ZXh0LCBhY3Rpb25zKSk7XG5cdH0pO1xuXHRyZXR1cm4gZm9ybUNvbnRhaW5lcnM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc1JlZmVyZW5jZUZhY2V0KGZhY2V0RGVmaW5pdGlvbjogRmFjZXRUeXBlcyk6IGZhY2V0RGVmaW5pdGlvbiBpcyBSZWZlcmVuY2VGYWNldFR5cGVzIHtcblx0cmV0dXJuIGZhY2V0RGVmaW5pdGlvbi4kVHlwZSA9PT0gVUlBbm5vdGF0aW9uVHlwZXMuUmVmZXJlbmNlRmFjZXQ7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVGb3JtRGVmaW5pdGlvbihcblx0ZmFjZXREZWZpbml0aW9uOiBGYWNldFR5cGVzLFxuXHRpc1Zpc2libGU6IENvbXBpbGVkQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uLFxuXHRjb252ZXJ0ZXJDb250ZXh0OiBDb252ZXJ0ZXJDb250ZXh0LFxuXHRhY3Rpb25zPzogQmFzZUFjdGlvbltdIHwgQ29udmVydGVyQWN0aW9uW11cbik6IEZvcm1EZWZpbml0aW9uIHtcblx0c3dpdGNoIChmYWNldERlZmluaXRpb24uJFR5cGUpIHtcblx0XHRjYXNlIFVJQW5ub3RhdGlvblR5cGVzLkNvbGxlY3Rpb25GYWNldDpcblx0XHRcdC8vIEtlZXAgb25seSB2YWxpZCBjaGlsZHJlblxuXHRcdFx0cmV0dXJuIHtcblx0XHRcdFx0aWQ6IGdldEZvcm1JRCh7IEZhY2V0OiBmYWNldERlZmluaXRpb24gfSksXG5cdFx0XHRcdHVzZUZvcm1Db250YWluZXJMYWJlbHM6IHRydWUsXG5cdFx0XHRcdGhhc0ZhY2V0c05vdFBhcnRPZlByZXZpZXc6IGZhY2V0RGVmaW5pdGlvbi5GYWNldHMuc29tZShcblx0XHRcdFx0XHQoY2hpbGRGYWNldCkgPT4gY2hpbGRGYWNldC5hbm5vdGF0aW9ucz8uVUk/LlBhcnRPZlByZXZpZXc/LnZhbHVlT2YoKSA9PT0gZmFsc2Vcblx0XHRcdFx0KSxcblx0XHRcdFx0Zm9ybUNvbnRhaW5lcnM6IGdldEZvcm1Db250YWluZXJzRm9yQ29sbGVjdGlvbihmYWNldERlZmluaXRpb24sIGNvbnZlcnRlckNvbnRleHQsIGFjdGlvbnMpLFxuXHRcdFx0XHRpc1Zpc2libGU6IGlzVmlzaWJsZVxuXHRcdFx0fTtcblx0XHRjYXNlIFVJQW5ub3RhdGlvblR5cGVzLlJlZmVyZW5jZUZhY2V0OlxuXHRcdFx0cmV0dXJuIHtcblx0XHRcdFx0aWQ6IGdldEZvcm1JRCh7IEZhY2V0OiBmYWNldERlZmluaXRpb24gfSksXG5cdFx0XHRcdHVzZUZvcm1Db250YWluZXJMYWJlbHM6IGZhbHNlLFxuXHRcdFx0XHRoYXNGYWNldHNOb3RQYXJ0T2ZQcmV2aWV3OiBmYWNldERlZmluaXRpb24uYW5ub3RhdGlvbnM/LlVJPy5QYXJ0T2ZQcmV2aWV3Py52YWx1ZU9mKCkgPT09IGZhbHNlLFxuXHRcdFx0XHRmb3JtQ29udGFpbmVyczogW2dldEZvcm1Db250YWluZXIoZmFjZXREZWZpbml0aW9uLCBjb252ZXJ0ZXJDb250ZXh0LCBhY3Rpb25zKV0sXG5cdFx0XHRcdGlzVmlzaWJsZTogaXNWaXNpYmxlXG5cdFx0XHR9O1xuXHRcdGRlZmF1bHQ6XG5cdFx0XHR0aHJvdyBuZXcgRXJyb3IoXCJDYW5ub3QgY3JlYXRlIGZvcm0gYmFzZWQgb24gUmVmZXJlbmNlVVJMRmFjZXRcIik7XG5cdH1cbn1cbiJdfQ==
@@ -1,45 +1,40 @@
1
- import {
2
- AnnotationTerm,
1
+ import { CommunicationAnnotationTerms, Contact } from "@sap-ux/vocabularies-types/vocabularies/Communication";
2
+ import type {
3
3
  CollectionFacetTypes,
4
- CommunicationAnnotationTerms,
5
4
  DataFieldAbstractTypes,
5
+ DataPoint,
6
6
  FacetTypes,
7
7
  FieldGroup,
8
8
  Identification,
9
9
  PartOfPreview,
10
- ReferenceFacetTypes,
11
- UIAnnotationTerms,
12
- UIAnnotationTypes
13
- } from "@sap-ux/vocabularies-types";
10
+ ReferenceFacetTypes
11
+ } from "@sap-ux/vocabularies-types/vocabularies/UI";
12
+ import { UIAnnotationTerms, UIAnnotationTypes } from "@sap-ux/vocabularies-types/vocabularies/UI";
14
13
  import { getSemanticObjectPath } from "sap/fe/core/converters/annotations/DataField";
15
- import { BaseAction, ConverterAction } from "sap/fe/core/converters/controls/Common/Action";
16
- import {
17
- annotationExpression,
18
- bindingExpression,
19
- BindingExpression,
20
- compileBinding,
21
- equal,
22
- ifElse,
23
- not
24
- } from "sap/fe/core/helpers/BindingExpression";
14
+ import type { BaseAction, ConverterAction } from "sap/fe/core/converters/controls/Common/Action";
15
+ import type { CompiledBindingToolkitExpression } from "sap/fe/core/helpers/BindingToolkit";
16
+ import { compileExpression, equal, getExpressionFromAnnotation, ifElse, not, pathInModel } from "sap/fe/core/helpers/BindingToolkit";
25
17
  import { getTargetEntitySetPath, getTargetObjectPath } from "sap/fe/core/templating/DataModelPathHelper";
26
18
  import { generate } from "../../../helpers/StableIdHelper";
27
- import ConverterContext from "../../ConverterContext";
28
- import { ConfigurableObject, CustomElement, insertCustomElements, Placement } from "../../helpers/ConfigurableObject";
29
- import { FormID, FormStandardActionButtonID } from "../../helpers/ID";
19
+ import type ConverterContext from "../../ConverterContext";
20
+ import type { ConfigurableObject, CustomElement } from "../../helpers/ConfigurableObject";
21
+ import { insertCustomElements, Placement } from "../../helpers/ConfigurableObject";
22
+ import { getFormID, getFormStandardActionButtonID } from "../../helpers/ID";
30
23
  import { KeyHelper } from "../../helpers/Key";
31
- import { ActionType, FormatOptionsType, FormManifestConfiguration } from "../../ManifestSettings";
24
+ import type { FormatOptionsType, FormManifestConfiguration } from "../../ManifestSettings";
25
+ import { ActionType } from "../../ManifestSettings";
32
26
 
33
27
  export type FormDefinition = {
34
28
  id: string;
35
29
  useFormContainerLabels: boolean;
36
30
  hasFacetsNotPartOfPreview: boolean;
37
31
  formContainers: FormContainer[];
38
- isVisible: BindingExpression<boolean>;
32
+ isVisible: CompiledBindingToolkitExpression;
39
33
  };
40
34
 
41
35
  export enum FormElementType {
42
36
  Default = "Default",
37
+ Slot = "Slot",
43
38
  Annotation = "Annotation"
44
39
  }
45
40
 
@@ -47,7 +42,7 @@ export type BaseFormElement = ConfigurableObject & {
47
42
  id?: string;
48
43
  type: FormElementType;
49
44
  label?: string;
50
- visible?: BindingExpression<boolean>;
45
+ visible?: CompiledBindingToolkitExpression;
51
46
  formatOptions?: FormatOptionsType;
52
47
  };
53
48
 
@@ -61,18 +56,18 @@ export type AnnotationFormElement = BaseFormElement & {
61
56
 
62
57
  export type CustomFormElement = CustomElement<
63
58
  BaseFormElement & {
64
- type: FormElementType.Default;
59
+ type: FormElementType;
65
60
  template: string;
66
61
  }
67
62
  >;
68
63
 
69
64
  export type FormElement = CustomFormElement | AnnotationFormElement;
70
65
 
71
- type FormContainer = {
66
+ export type FormContainer = {
72
67
  id?: string;
73
68
  formElements: FormElement[];
74
69
  annotationPath: string;
75
- isVisible: BindingExpression<boolean>;
70
+ isVisible: CompiledBindingToolkitExpression;
76
71
  entitySet?: string;
77
72
  actions?: ConverterAction[] | BaseAction[];
78
73
  };
@@ -80,7 +75,7 @@ type FormContainer = {
80
75
  /**
81
76
  * Returns default format options for text fields on a form.
82
77
  *
83
- * @returns {FormatOptionsType} Collection of format options with default values
78
+ * @returns Collection of format options with default values
84
79
  */
85
80
  function getDefaultFormatOptionsForForm(): FormatOptionsType {
86
81
  return {
@@ -100,9 +95,7 @@ function isFieldPartOfPreview(field: DataFieldAbstractTypes, formPartOfPreview?:
100
95
  function getFormElementsFromAnnotations(facetDefinition: ReferenceFacetTypes, converterContext: ConverterContext): AnnotationFormElement[] {
101
96
  const formElements: AnnotationFormElement[] = [];
102
97
  const resolvedTarget = converterContext.getEntityTypeAnnotation(facetDefinition.Target.value);
103
- const formAnnotation: AnnotationTerm<Identification> | AnnotationTerm<FieldGroup> = resolvedTarget.annotation as
104
- | AnnotationTerm<Identification>
105
- | AnnotationTerm<FieldGroup>;
98
+ const formAnnotation: Identification | FieldGroup | Contact | DataPoint = resolvedTarget.annotation;
106
99
  converterContext = resolvedTarget.converterContext;
107
100
 
108
101
  function getDataFieldsFromAnnotations(field: DataFieldAbstractTypes, formPartOfPreview: PartOfPreview | undefined) {
@@ -115,7 +108,7 @@ function getFormElementsFromAnnotations(facetDefinition: ReferenceFacetTypes, co
115
108
  formElements.push({
116
109
  key: KeyHelper.generateKeyFromDataField(field),
117
110
  type: FormElementType.Annotation,
118
- annotationPath: converterContext.getEntitySetBasedAnnotationPath(field.fullyQualifiedName) + "/",
111
+ annotationPath: `${converterContext.getEntitySetBasedAnnotationPath(field.fullyQualifiedName)}/`,
119
112
  semanticObjectPath: semanticObjectAnnotationPath,
120
113
  formatOptions: getDefaultFormatOptionsForForm(),
121
114
  isPartOfPreview: isFieldPartOfPreview(field, formPartOfPreview)
@@ -125,29 +118,25 @@ function getFormElementsFromAnnotations(facetDefinition: ReferenceFacetTypes, co
125
118
 
126
119
  switch (formAnnotation?.term) {
127
120
  case UIAnnotationTerms.FieldGroup:
128
- (formAnnotation as AnnotationTerm<FieldGroup>).Data.forEach((field) =>
129
- getDataFieldsFromAnnotations(field, facetDefinition.annotations?.UI?.PartOfPreview)
130
- );
121
+ formAnnotation.Data.forEach((field) => getDataFieldsFromAnnotations(field, facetDefinition.annotations?.UI?.PartOfPreview));
131
122
  break;
132
123
  case UIAnnotationTerms.Identification:
133
- (formAnnotation as AnnotationTerm<Identification>).forEach((field) =>
134
- getDataFieldsFromAnnotations(field, facetDefinition.annotations?.UI?.PartOfPreview)
135
- );
124
+ formAnnotation.forEach((field) => getDataFieldsFromAnnotations(field, facetDefinition.annotations?.UI?.PartOfPreview));
136
125
  break;
137
126
  case UIAnnotationTerms.DataPoint:
138
127
  formElements.push({
139
128
  // key: KeyHelper.generateKeyFromDataField(formAnnotation),
140
- key: "DataPoint::" + (formAnnotation.qualifier ? formAnnotation.qualifier : ""),
129
+ key: `DataPoint::${formAnnotation.qualifier ? formAnnotation.qualifier : ""}`,
141
130
  type: FormElementType.Annotation,
142
- annotationPath: converterContext.getEntitySetBasedAnnotationPath(formAnnotation.fullyQualifiedName) + "/"
131
+ annotationPath: `${converterContext.getEntitySetBasedAnnotationPath(formAnnotation.fullyQualifiedName)}/`
143
132
  });
144
133
  break;
145
134
  case CommunicationAnnotationTerms.Contact:
146
135
  formElements.push({
147
136
  // key: KeyHelper.generateKeyFromDataField(formAnnotation),
148
- key: "Contact::" + (formAnnotation.qualifier ? formAnnotation.qualifier : ""),
137
+ key: `Contact::${formAnnotation.qualifier ? formAnnotation.qualifier : ""}`,
149
138
  type: FormElementType.Annotation,
150
- annotationPath: converterContext.getEntitySetBasedAnnotationPath(formAnnotation.fullyQualifiedName) + "/"
139
+ annotationPath: `${converterContext.getEntitySetBasedAnnotationPath(formAnnotation.fullyQualifiedName)}/`
151
140
  });
152
141
  break;
153
142
  default:
@@ -167,8 +156,8 @@ export function getFormElementsFromManifest(
167
156
  Object.keys(manifestFormContainer?.fields).forEach((fieldId) => {
168
157
  formElements[fieldId] = {
169
158
  key: fieldId,
170
- id: "CustomFormElement::" + fieldId,
171
- type: FormElementType.Default,
159
+ id: `CustomFormElement::${fieldId}`,
160
+ type: manifestFormContainer.fields[fieldId].type || FormElementType.Default,
172
161
  template: manifestFormContainer.fields[fieldId].template,
173
162
  label: manifestFormContainer.fields[fieldId].label,
174
163
  position: manifestFormContainer.fields[fieldId].position || {
@@ -190,9 +179,9 @@ export function getFormContainer(
190
179
  actions?: BaseAction[] | ConverterAction[]
191
180
  ): FormContainer {
192
181
  const sFormContainerId = generate([{ Facet: facetDefinition }]);
193
- const sAnnotationPath = "/" + facetDefinition.fullyQualifiedName;
182
+ const sAnnotationPath = `/${facetDefinition.fullyQualifiedName}`;
194
183
  const resolvedTarget = converterContext.getEntityTypeAnnotation(facetDefinition.Target.value);
195
- const isVisible = compileBinding(not(equal(true, annotationExpression(facetDefinition.annotations?.UI?.Hidden))));
184
+ const isVisible = compileExpression(not(equal(true, getExpressionFromAnnotation(facetDefinition.annotations?.UI?.Hidden))));
196
185
  let sEntitySetPath!: string;
197
186
  // resolvedTarget doesn't have a entitySet in case Containments and Paramterized services.
198
187
  if (
@@ -215,13 +204,13 @@ export function getFormContainer(
215
204
  }
216
205
 
217
206
  const oActionShowDetails: BaseAction = {
218
- id: FormStandardActionButtonID(sFormContainerId, "ShowHideDetails"),
207
+ id: getFormStandardActionButtonID(sFormContainerId, "ShowHideDetails"),
219
208
  key: "StandardAction::ShowHideDetails",
220
- text: compileBinding(
209
+ text: compileExpression(
221
210
  ifElse(
222
- equal(bindingExpression("showDetails", "internal"), true),
223
- bindingExpression("T_COMMON_OBJECT_PAGE_HIDE_FORM_CONTAINER_DETAILS", "sap.fe.i18n"),
224
- bindingExpression("T_COMMON_OBJECT_PAGE_SHOW_FORM_CONTAINER_DETAILS", "sap.fe.i18n")
211
+ equal(pathInModel("showDetails", "internal"), true),
212
+ pathInModel("T_COMMON_OBJECT_PAGE_HIDE_FORM_CONTAINER_DETAILS", "sap.fe.i18n"),
213
+ pathInModel("T_COMMON_OBJECT_PAGE_SHOW_FORM_CONTAINER_DETAILS", "sap.fe.i18n")
225
214
  )
226
215
  ),
227
216
  type: ActionType.ShowFormDetails,
@@ -271,15 +260,15 @@ export function isReferenceFacet(facetDefinition: FacetTypes): facetDefinition i
271
260
 
272
261
  export function createFormDefinition(
273
262
  facetDefinition: FacetTypes,
274
- isVisible: BindingExpression<boolean>,
263
+ isVisible: CompiledBindingToolkitExpression,
275
264
  converterContext: ConverterContext,
276
265
  actions?: BaseAction[] | ConverterAction[]
277
266
  ): FormDefinition {
278
267
  switch (facetDefinition.$Type) {
279
268
  case UIAnnotationTypes.CollectionFacet:
280
269
  // Keep only valid children
281
- const formCollectionDefinition = {
282
- id: FormID({ Facet: facetDefinition }),
270
+ return {
271
+ id: getFormID({ Facet: facetDefinition }),
283
272
  useFormContainerLabels: true,
284
273
  hasFacetsNotPartOfPreview: facetDefinition.Facets.some(
285
274
  (childFacet) => childFacet.annotations?.UI?.PartOfPreview?.valueOf() === false
@@ -287,16 +276,14 @@ export function createFormDefinition(
287
276
  formContainers: getFormContainersForCollection(facetDefinition, converterContext, actions),
288
277
  isVisible: isVisible
289
278
  };
290
- return formCollectionDefinition;
291
279
  case UIAnnotationTypes.ReferenceFacet:
292
- const formDefinition = {
293
- id: FormID({ Facet: facetDefinition }),
280
+ return {
281
+ id: getFormID({ Facet: facetDefinition }),
294
282
  useFormContainerLabels: false,
295
283
  hasFacetsNotPartOfPreview: facetDefinition.annotations?.UI?.PartOfPreview?.valueOf() === false,
296
284
  formContainers: [getFormContainer(facetDefinition, converterContext, actions)],
297
285
  isVisible: isVisible
298
286
  };
299
- return formDefinition;
300
287
  default:
301
288
  throw new Error("Cannot create form based on ReferenceURLFacet");
302
289
  }