@sapui5/sap.fe.core 1.110.0 → 1.111.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 (654) hide show
  1. package/README.md +0 -4
  2. package/package.json +2 -23
  3. package/src/sap/fe/core/.library +1 -1
  4. package/src/sap/fe/core/ActionRuntime-dbg.js +182 -0
  5. package/src/sap/fe/core/ActionRuntime.js +3 -181
  6. package/src/sap/fe/core/ActionRuntime.js.map +1 -0
  7. package/src/sap/fe/core/ActionRuntime.ts +3 -5
  8. package/src/sap/fe/core/AppComponent-dbg.js +435 -0
  9. package/src/sap/fe/core/AppComponent.js +3 -439
  10. package/src/sap/fe/core/AppComponent.js.map +1 -0
  11. package/src/sap/fe/core/AppComponent.ts +0 -3
  12. package/src/sap/fe/core/AppStateHandler-dbg.js +200 -0
  13. package/src/sap/fe/core/AppStateHandler.js +3 -227
  14. package/src/sap/fe/core/AppStateHandler.js.map +1 -0
  15. package/src/sap/fe/core/BaseController-dbg.js +76 -0
  16. package/src/sap/fe/core/BaseController.js +3 -73
  17. package/src/sap/fe/core/BaseController.js.map +1 -0
  18. package/src/sap/fe/core/CommonUtils-dbg.js +2135 -0
  19. package/src/sap/fe/core/CommonUtils.js +3 -2296
  20. package/src/sap/fe/core/CommonUtils.js.map +1 -0
  21. package/src/sap/fe/core/CommonUtils.ts +34 -28
  22. package/src/sap/fe/core/ExtensionAPI-dbg.js +273 -0
  23. package/src/sap/fe/core/ExtensionAPI.js +3 -280
  24. package/src/sap/fe/core/ExtensionAPI.js.map +1 -0
  25. package/src/sap/fe/core/PageController-dbg.js +203 -0
  26. package/src/sap/fe/core/PageController.js +3 -200
  27. package/src/sap/fe/core/PageController.js.map +1 -0
  28. package/src/sap/fe/core/TemplateComponent-dbg.js +218 -0
  29. package/src/sap/fe/core/TemplateComponent.js +3 -216
  30. package/src/sap/fe/core/TemplateComponent.js.map +1 -0
  31. package/src/sap/fe/core/TemplateModel-dbg.js +75 -0
  32. package/src/sap/fe/core/TemplateModel.js +3 -72
  33. package/src/sap/fe/core/TemplateModel.js.map +1 -0
  34. package/src/sap/fe/core/buildingBlocks/AttributeModel-dbg.js +57 -0
  35. package/src/sap/fe/core/buildingBlocks/AttributeModel.js +3 -54
  36. package/src/sap/fe/core/buildingBlocks/AttributeModel.js.map +1 -0
  37. package/src/sap/fe/core/buildingBlocks/BuildingBlock-dbg.js +410 -0
  38. package/src/sap/fe/core/buildingBlocks/BuildingBlock.js +11 -355
  39. package/src/sap/fe/core/buildingBlocks/BuildingBlock.js.map +1 -0
  40. package/src/sap/fe/core/buildingBlocks/BuildingBlock.ts +118 -52
  41. package/src/sap/fe/core/buildingBlocks/BuildingBlockFormatter-dbg.js +14 -0
  42. package/src/sap/fe/core/buildingBlocks/BuildingBlockFormatter.js +3 -11
  43. package/src/sap/fe/core/buildingBlocks/BuildingBlockFormatter.js.map +1 -0
  44. package/src/sap/fe/core/buildingBlocks/BuildingBlockFragment-dbg.js +44 -0
  45. package/src/sap/fe/core/buildingBlocks/BuildingBlockFragment.js +3 -40
  46. package/src/sap/fe/core/buildingBlocks/BuildingBlockFragment.js.map +1 -0
  47. package/src/sap/fe/core/buildingBlocks/BuildingBlockFragment.ts +3 -0
  48. package/src/sap/fe/core/buildingBlocks/BuildingBlockRuntime-dbg.js +932 -0
  49. package/src/sap/fe/core/buildingBlocks/BuildingBlockRuntime.js +16 -1292
  50. package/src/sap/fe/core/buildingBlocks/BuildingBlockRuntime.js.map +1 -0
  51. package/src/sap/fe/core/buildingBlocks/BuildingBlockRuntime.ts +40 -42
  52. package/src/sap/fe/core/buildingBlocks/TraceInfo-dbg.js +434 -0
  53. package/src/sap/fe/core/buildingBlocks/TraceInfo.js +3 -481
  54. package/src/sap/fe/core/buildingBlocks/TraceInfo.js.map +1 -0
  55. package/src/sap/fe/core/buildingBlocks/TraceInfo.ts +5 -5
  56. package/src/sap/fe/core/controllerextensions/BusyLocker-dbg.js +92 -0
  57. package/src/sap/fe/core/controllerextensions/BusyLocker.js +3 -89
  58. package/src/sap/fe/core/controllerextensions/BusyLocker.js.map +1 -0
  59. package/src/sap/fe/core/controllerextensions/EditFlow-dbg.js +1659 -0
  60. package/src/sap/fe/core/controllerextensions/EditFlow.js +3 -1868
  61. package/src/sap/fe/core/controllerextensions/EditFlow.js.map +1 -0
  62. package/src/sap/fe/core/controllerextensions/EditFlow.ts +180 -125
  63. package/src/sap/fe/core/controllerextensions/Feedback-dbg.js +70 -0
  64. package/src/sap/fe/core/controllerextensions/Feedback.js +3 -67
  65. package/src/sap/fe/core/controllerextensions/Feedback.js.map +1 -0
  66. package/src/sap/fe/core/controllerextensions/IntentBasedNavigation-dbg.js +83 -0
  67. package/src/sap/fe/core/controllerextensions/IntentBasedNavigation.js +3 -84
  68. package/src/sap/fe/core/controllerextensions/IntentBasedNavigation.js.map +1 -0
  69. package/src/sap/fe/core/controllerextensions/IntentBasedNavigation.ts +6 -8
  70. package/src/sap/fe/core/controllerextensions/InternalEditFlow-dbg.js +711 -0
  71. package/src/sap/fe/core/controllerextensions/InternalEditFlow.js +3 -707
  72. package/src/sap/fe/core/controllerextensions/InternalEditFlow.js.map +1 -0
  73. package/src/sap/fe/core/controllerextensions/InternalEditFlow.ts +79 -48
  74. package/src/sap/fe/core/controllerextensions/InternalIntentBasedNavigation-dbg.js +791 -0
  75. package/src/sap/fe/core/controllerextensions/InternalIntentBasedNavigation.js +3 -696
  76. package/src/sap/fe/core/controllerextensions/InternalIntentBasedNavigation.js.map +1 -0
  77. package/src/sap/fe/core/controllerextensions/InternalIntentBasedNavigation.ts +107 -7
  78. package/src/sap/fe/core/controllerextensions/InternalRouting-dbg.js +984 -0
  79. package/src/sap/fe/core/controllerextensions/InternalRouting.js +3 -996
  80. package/src/sap/fe/core/controllerextensions/InternalRouting.js.map +1 -0
  81. package/src/sap/fe/core/controllerextensions/InternalRouting.ts +43 -23
  82. package/src/sap/fe/core/controllerextensions/KPIManagement-dbg.js +1013 -0
  83. package/src/sap/fe/core/controllerextensions/KPIManagement.js +3 -1011
  84. package/src/sap/fe/core/controllerextensions/KPIManagement.js.map +1 -0
  85. package/src/sap/fe/core/controllerextensions/KPIManagement.ts +12 -10
  86. package/src/sap/fe/core/controllerextensions/MassEdit-dbg.js +135 -0
  87. package/src/sap/fe/core/controllerextensions/MassEdit.js +3 -133
  88. package/src/sap/fe/core/controllerextensions/MassEdit.js.map +1 -0
  89. package/src/sap/fe/core/controllerextensions/MassEdit.ts +1 -1
  90. package/src/sap/fe/core/controllerextensions/MessageHandler-dbg.js +221 -0
  91. package/src/sap/fe/core/controllerextensions/MessageHandler.js +3 -224
  92. package/src/sap/fe/core/controllerextensions/MessageHandler.js.map +1 -0
  93. package/src/sap/fe/core/controllerextensions/PageReady-dbg.js +254 -0
  94. package/src/sap/fe/core/controllerextensions/PageReady.js +3 -279
  95. package/src/sap/fe/core/controllerextensions/PageReady.js.map +1 -0
  96. package/src/sap/fe/core/controllerextensions/PageReady.ts +2 -2
  97. package/src/sap/fe/core/controllerextensions/Paginator-dbg.js +169 -0
  98. package/src/sap/fe/core/controllerextensions/Paginator.js +3 -174
  99. package/src/sap/fe/core/controllerextensions/Paginator.js.map +1 -0
  100. package/src/sap/fe/core/controllerextensions/Paginator.ts +4 -5
  101. package/src/sap/fe/core/controllerextensions/Placeholder-dbg.js +132 -0
  102. package/src/sap/fe/core/controllerextensions/Placeholder.js +3 -130
  103. package/src/sap/fe/core/controllerextensions/Placeholder.js.map +1 -0
  104. package/src/sap/fe/core/controllerextensions/Routing-dbg.js +138 -0
  105. package/src/sap/fe/core/controllerextensions/Routing.js +3 -135
  106. package/src/sap/fe/core/controllerextensions/Routing.js.map +1 -0
  107. package/src/sap/fe/core/controllerextensions/RoutingListener-dbg.js +10 -0
  108. package/src/sap/fe/core/controllerextensions/RoutingListener.js +3 -7
  109. package/src/sap/fe/core/controllerextensions/RoutingListener.js.map +1 -0
  110. package/src/sap/fe/core/controllerextensions/Share-dbg.js +317 -0
  111. package/src/sap/fe/core/controllerextensions/Share.js +3 -356
  112. package/src/sap/fe/core/controllerextensions/Share.js.map +1 -0
  113. package/src/sap/fe/core/controllerextensions/Share.ts +6 -1
  114. package/src/sap/fe/core/controllerextensions/SideEffects-dbg.js +553 -0
  115. package/src/sap/fe/core/controllerextensions/SideEffects.js +3 -651
  116. package/src/sap/fe/core/controllerextensions/SideEffects.js.map +1 -0
  117. package/src/sap/fe/core/controllerextensions/SideEffects.ts +411 -553
  118. package/src/sap/fe/core/controllerextensions/ViewState-dbg.js +903 -0
  119. package/src/sap/fe/core/controllerextensions/ViewState.js +3 -967
  120. package/src/sap/fe/core/controllerextensions/ViewState.js.map +1 -0
  121. package/src/sap/fe/core/controllerextensions/ViewState.ts +90 -41
  122. package/src/sap/fe/core/controllerextensions/collaboration/ActivityBase-dbg.js +99 -0
  123. package/src/sap/fe/core/controllerextensions/collaboration/ActivityBase.js +3 -96
  124. package/src/sap/fe/core/controllerextensions/collaboration/ActivityBase.js.map +1 -0
  125. package/src/sap/fe/core/controllerextensions/collaboration/ActivitySync-dbg.js +314 -0
  126. package/src/sap/fe/core/controllerextensions/collaboration/ActivitySync.js +3 -336
  127. package/src/sap/fe/core/controllerextensions/collaboration/ActivitySync.js.map +1 -0
  128. package/src/sap/fe/core/controllerextensions/collaboration/CollaborationCommon-dbg.js +152 -0
  129. package/src/sap/fe/core/controllerextensions/collaboration/CollaborationCommon.js +3 -161
  130. package/src/sap/fe/core/controllerextensions/collaboration/CollaborationCommon.js.map +1 -0
  131. package/src/sap/fe/core/controllerextensions/collaboration/Manage-dbg.js +243 -0
  132. package/src/sap/fe/core/controllerextensions/collaboration/Manage.js +3 -302
  133. package/src/sap/fe/core/controllerextensions/collaboration/Manage.js.map +1 -0
  134. package/src/sap/fe/core/controllerextensions/dialog/OperationsDialog.block-dbg.js +252 -0
  135. package/src/sap/fe/core/controllerextensions/dialog/OperationsDialog.block.js +6 -0
  136. package/src/sap/fe/core/controllerextensions/dialog/OperationsDialog.block.js.map +1 -0
  137. package/src/sap/fe/core/controllerextensions/dialog/OperationsDialog.block.tsx +188 -0
  138. package/src/sap/fe/core/controllerextensions/editFlow/TransactionHelper-dbg.js +1196 -0
  139. package/src/sap/fe/core/controllerextensions/editFlow/TransactionHelper.js +3 -1479
  140. package/src/sap/fe/core/controllerextensions/editFlow/TransactionHelper.js.map +1 -0
  141. package/src/sap/fe/core/controllerextensions/editFlow/TransactionHelper.ts +239 -289
  142. package/src/sap/fe/core/controllerextensions/editFlow/draft-dbg.js +689 -0
  143. package/src/sap/fe/core/controllerextensions/editFlow/draft.js +3 -785
  144. package/src/sap/fe/core/controllerextensions/editFlow/draft.js.map +1 -0
  145. package/src/sap/fe/core/controllerextensions/editFlow/draft.ts +134 -142
  146. package/src/sap/fe/core/controllerextensions/editFlow/draftDataLossPopup-dbg.js +236 -0
  147. package/src/sap/fe/core/controllerextensions/editFlow/draftDataLossPopup.js +3 -287
  148. package/src/sap/fe/core/controllerextensions/editFlow/draftDataLossPopup.js.map +1 -0
  149. package/src/sap/fe/core/controllerextensions/editFlow/operations-dbg.js +1422 -0
  150. package/src/sap/fe/core/controllerextensions/editFlow/operations.js +3 -1598
  151. package/src/sap/fe/core/controllerextensions/editFlow/operations.js.map +1 -0
  152. package/src/sap/fe/core/controllerextensions/editFlow/operations.ts +40 -24
  153. package/src/sap/fe/core/controllerextensions/editFlow/sticky-dbg.js +185 -0
  154. package/src/sap/fe/core/controllerextensions/editFlow/sticky.js +3 -214
  155. package/src/sap/fe/core/controllerextensions/editFlow/sticky.js.map +1 -0
  156. package/src/sap/fe/core/controllerextensions/editFlow/sticky.ts +4 -5
  157. package/src/sap/fe/core/controllerextensions/messageHandler/messageHandling-dbg.js +1219 -0
  158. package/src/sap/fe/core/controllerextensions/messageHandler/messageHandling.js +3 -1213
  159. package/src/sap/fe/core/controllerextensions/messageHandler/messageHandling.js.map +1 -0
  160. package/src/sap/fe/core/controllerextensions/pageReady/DataQueryWatcher-dbg.js +304 -0
  161. package/src/sap/fe/core/controllerextensions/pageReady/DataQueryWatcher.js +3 -339
  162. package/src/sap/fe/core/controllerextensions/pageReady/DataQueryWatcher.js.map +1 -0
  163. package/src/sap/fe/core/controllerextensions/routing/NavigationReason-dbg.js +15 -0
  164. package/src/sap/fe/core/controllerextensions/routing/NavigationReason.js +6 -0
  165. package/src/sap/fe/core/controllerextensions/routing/NavigationReason.js.map +1 -0
  166. package/src/sap/fe/core/controllerextensions/routing/NavigationReason.ts +6 -0
  167. package/src/sap/fe/core/controllerextensions/routing/RouterProxy-dbg.js +798 -0
  168. package/src/sap/fe/core/controllerextensions/routing/RouterProxy.js +3 -799
  169. package/src/sap/fe/core/controllerextensions/routing/RouterProxy.js.map +1 -0
  170. package/src/sap/fe/core/controls/Any-dbg.js +32 -0
  171. package/src/sap/fe/core/controls/Any.js +3 -29
  172. package/src/sap/fe/core/controls/Any.js.map +1 -0
  173. package/src/sap/fe/core/controls/AnyElement-dbg.js +29 -0
  174. package/src/sap/fe/core/controls/AnyElement.js +3 -26
  175. package/src/sap/fe/core/controls/AnyElement.js.map +1 -0
  176. package/src/sap/fe/core/controls/CommandExecution-dbg.js +72 -0
  177. package/src/sap/fe/core/controls/CommandExecution.js +3 -69
  178. package/src/sap/fe/core/controls/CommandExecution.js.map +1 -0
  179. package/src/sap/fe/core/controls/ConditionalWrapper-dbg.js +151 -0
  180. package/src/sap/fe/core/controls/ConditionalWrapper.js +3 -148
  181. package/src/sap/fe/core/controls/ConditionalWrapper.js.map +1 -0
  182. package/src/sap/fe/core/controls/CustomFilterFieldContentWrapper-dbg.js +330 -0
  183. package/src/sap/fe/core/controls/CustomFilterFieldContentWrapper.js +3 -328
  184. package/src/sap/fe/core/controls/CustomFilterFieldContentWrapper.js.map +1 -0
  185. package/src/sap/fe/core/controls/CustomQuickViewPage-dbg.js +126 -0
  186. package/src/sap/fe/core/controls/CustomQuickViewPage.js +3 -124
  187. package/src/sap/fe/core/controls/CustomQuickViewPage.js.map +1 -0
  188. package/src/sap/fe/core/controls/DataLossOrDraftDiscard/DataLossOrDraftDiscardHandler-dbg.js +170 -0
  189. package/src/sap/fe/core/controls/DataLossOrDraftDiscard/DataLossOrDraftDiscardHandler.js +3 -171
  190. package/src/sap/fe/core/controls/DataLossOrDraftDiscard/DataLossOrDraftDiscardHandler.js.map +1 -0
  191. package/src/sap/fe/core/controls/FieldWrapper-dbg.js +194 -0
  192. package/src/sap/fe/core/controls/FieldWrapper.js +3 -191
  193. package/src/sap/fe/core/controls/FieldWrapper.js.map +1 -0
  194. package/src/sap/fe/core/controls/FileWrapper-dbg.js +280 -0
  195. package/src/sap/fe/core/controls/FileWrapper.js +3 -277
  196. package/src/sap/fe/core/controls/FileWrapper.js.map +1 -0
  197. package/src/sap/fe/core/controls/FilterBar-dbg.js +167 -0
  198. package/src/sap/fe/core/controls/FilterBar.js +3 -166
  199. package/src/sap/fe/core/controls/FilterBar.js.map +1 -0
  200. package/src/sap/fe/core/controls/FormElementWrapper-dbg.js +92 -0
  201. package/src/sap/fe/core/controls/FormElementWrapper.js +3 -89
  202. package/src/sap/fe/core/controls/FormElementWrapper.js.map +1 -0
  203. package/src/sap/fe/core/controls/MassEditSelect-dbg.js +33 -0
  204. package/src/sap/fe/core/controls/MassEditSelect.js +3 -30
  205. package/src/sap/fe/core/controls/MassEditSelect.js.map +1 -0
  206. package/src/sap/fe/core/controls/MultiValueParameterDelegate-dbg.js +37 -0
  207. package/src/sap/fe/core/controls/MultiValueParameterDelegate.js +3 -34
  208. package/src/sap/fe/core/controls/MultiValueParameterDelegate.js.map +1 -0
  209. package/src/sap/fe/core/controls/filterbar/FilterContainer-dbg.js +119 -0
  210. package/src/sap/fe/core/controls/filterbar/FilterContainer.js +3 -121
  211. package/src/sap/fe/core/controls/filterbar/FilterContainer.js.map +1 -0
  212. package/src/sap/fe/core/controls/filterbar/VisualFilter-dbg.js +267 -0
  213. package/src/sap/fe/core/controls/filterbar/VisualFilter.js +3 -264
  214. package/src/sap/fe/core/controls/filterbar/VisualFilter.js.map +1 -0
  215. package/src/sap/fe/core/controls/filterbar/VisualFilterContainer-dbg.js +150 -0
  216. package/src/sap/fe/core/controls/filterbar/VisualFilterContainer.js +3 -150
  217. package/src/sap/fe/core/controls/filterbar/VisualFilterContainer.js.map +1 -0
  218. package/src/sap/fe/core/controls/filterbar/utils/VisualFilterUtils-dbg.js +310 -0
  219. package/src/sap/fe/core/controls/filterbar/utils/VisualFilterUtils.js +3 -307
  220. package/src/sap/fe/core/controls/filterbar/utils/VisualFilterUtils.js.map +1 -0
  221. package/src/sap/fe/core/controls/filterbar/utils/VisualFilterUtils.ts +1 -1
  222. package/src/sap/fe/core/controls/massEdit/MassEditHandlers-dbg.js +491 -0
  223. package/src/sap/fe/core/controls/massEdit/MassEditHandlers.js +3 -504
  224. package/src/sap/fe/core/controls/massEdit/MassEditHandlers.js.map +1 -0
  225. package/src/sap/fe/core/controls/massEdit/MassEditHandlers.ts +2 -2
  226. package/src/sap/fe/core/converters/ConverterContext-dbg.js +403 -0
  227. package/src/sap/fe/core/converters/ConverterContext.js +3 -406
  228. package/src/sap/fe/core/converters/ConverterContext.js.map +1 -0
  229. package/src/sap/fe/core/converters/ManifestSettings-dbg.js +88 -0
  230. package/src/sap/fe/core/converters/ManifestSettings.js +3 -84
  231. package/src/sap/fe/core/converters/ManifestSettings.js.map +1 -0
  232. package/src/sap/fe/core/converters/ManifestSettings.ts +3 -1
  233. package/src/sap/fe/core/converters/ManifestWrapper-dbg.js +402 -0
  234. package/src/sap/fe/core/converters/ManifestWrapper.js +3 -406
  235. package/src/sap/fe/core/converters/ManifestWrapper.js.map +1 -0
  236. package/src/sap/fe/core/converters/MetaModelConverter-dbg.js +1161 -0
  237. package/src/sap/fe/core/converters/MetaModelConverter.js +3 -1225
  238. package/src/sap/fe/core/converters/MetaModelConverter.js.map +1 -0
  239. package/src/sap/fe/core/converters/MetaModelConverter.ts +193 -199
  240. package/src/sap/fe/core/converters/TemplateConverter-dbg.js +89 -0
  241. package/src/sap/fe/core/converters/TemplateConverter.js +3 -86
  242. package/src/sap/fe/core/converters/TemplateConverter.js.map +1 -0
  243. package/src/sap/fe/core/converters/annotations/DataField-dbg.js +396 -0
  244. package/src/sap/fe/core/converters/annotations/DataField.js +3 -394
  245. package/src/sap/fe/core/converters/annotations/DataField.js.map +1 -0
  246. package/src/sap/fe/core/converters/annotations/DataField.ts +5 -5
  247. package/src/sap/fe/core/converters/common/AnnotationConverter-dbg.js +1948 -0
  248. package/src/sap/fe/core/converters/common/AnnotationConverter.js +3 -1868
  249. package/src/sap/fe/core/converters/common/AnnotationConverter.js.map +1 -0
  250. package/src/sap/fe/core/converters/controls/Common/Action-dbg.js +424 -0
  251. package/src/sap/fe/core/converters/controls/Common/Action.js +3 -446
  252. package/src/sap/fe/core/converters/controls/Common/Action.js.map +1 -0
  253. package/src/sap/fe/core/converters/controls/Common/Action.ts +31 -14
  254. package/src/sap/fe/core/converters/controls/Common/Chart-dbg.js +276 -0
  255. package/src/sap/fe/core/converters/controls/Common/Chart.js +3 -260
  256. package/src/sap/fe/core/converters/controls/Common/Chart.js.map +1 -0
  257. package/src/sap/fe/core/converters/controls/Common/Chart.ts +52 -7
  258. package/src/sap/fe/core/converters/controls/Common/Criticality-dbg.js +42 -0
  259. package/src/sap/fe/core/converters/controls/Common/Criticality.js +3 -39
  260. package/src/sap/fe/core/converters/controls/Common/Criticality.js.map +1 -0
  261. package/src/sap/fe/core/converters/controls/Common/DataVisualization-dbg.js +247 -0
  262. package/src/sap/fe/core/converters/controls/Common/DataVisualization.js +3 -242
  263. package/src/sap/fe/core/converters/controls/Common/DataVisualization.js.map +1 -0
  264. package/src/sap/fe/core/converters/controls/Common/DataVisualization.ts +1 -1
  265. package/src/sap/fe/core/converters/controls/Common/Form-dbg.js +229 -0
  266. package/src/sap/fe/core/converters/controls/Common/Form.js +3 -234
  267. package/src/sap/fe/core/converters/controls/Common/Form.js.map +1 -0
  268. package/src/sap/fe/core/converters/controls/Common/KPI-dbg.js +374 -0
  269. package/src/sap/fe/core/converters/controls/Common/KPI.js +3 -371
  270. package/src/sap/fe/core/converters/controls/Common/KPI.js.map +1 -0
  271. package/src/sap/fe/core/converters/controls/Common/Table-dbg.js +2596 -0
  272. package/src/sap/fe/core/converters/controls/Common/Table.js +3 -2527
  273. package/src/sap/fe/core/converters/controls/Common/Table.js.map +1 -0
  274. package/src/sap/fe/core/converters/controls/Common/Table.ts +214 -77
  275. package/src/sap/fe/core/converters/controls/Common/table/StandardActions-dbg.js +522 -0
  276. package/src/sap/fe/core/converters/controls/Common/table/StandardActions.js +3 -527
  277. package/src/sap/fe/core/converters/controls/Common/table/StandardActions.js.map +1 -0
  278. package/src/sap/fe/core/converters/controls/Common/table/StandardActions.ts +51 -50
  279. package/src/sap/fe/core/converters/controls/ListReport/FilterBar-dbg.js +786 -0
  280. package/src/sap/fe/core/converters/controls/ListReport/FilterBar.js +3 -845
  281. package/src/sap/fe/core/converters/controls/ListReport/FilterBar.js.map +1 -0
  282. package/src/sap/fe/core/converters/controls/ListReport/FilterBar.ts +0 -64
  283. package/src/sap/fe/core/converters/controls/ListReport/VisualFilters-dbg.js +291 -0
  284. package/src/sap/fe/core/converters/controls/ListReport/VisualFilters.js +3 -316
  285. package/src/sap/fe/core/converters/controls/ListReport/VisualFilters.js.map +1 -0
  286. package/src/sap/fe/core/converters/controls/ListReport/VisualFilters.ts +30 -12
  287. package/src/sap/fe/core/converters/controls/ObjectPage/Avatar-dbg.js +56 -0
  288. package/src/sap/fe/core/converters/controls/ObjectPage/Avatar.js +3 -53
  289. package/src/sap/fe/core/converters/controls/ObjectPage/Avatar.js.map +1 -0
  290. package/src/sap/fe/core/converters/controls/ObjectPage/HeaderFacet-dbg.js +438 -0
  291. package/src/sap/fe/core/converters/controls/ObjectPage/HeaderFacet.js +3 -431
  292. package/src/sap/fe/core/converters/controls/ObjectPage/HeaderFacet.js.map +1 -0
  293. package/src/sap/fe/core/converters/controls/ObjectPage/SubSection-dbg.js +597 -0
  294. package/src/sap/fe/core/converters/controls/ObjectPage/SubSection.js +3 -630
  295. package/src/sap/fe/core/converters/controls/ObjectPage/SubSection.js.map +1 -0
  296. package/src/sap/fe/core/converters/controls/ObjectPage/SubSection.ts +1 -1
  297. package/src/sap/fe/core/converters/helpers/Aggregation-dbg.js +204 -0
  298. package/src/sap/fe/core/converters/helpers/Aggregation.js +3 -204
  299. package/src/sap/fe/core/converters/helpers/Aggregation.js.map +1 -0
  300. package/src/sap/fe/core/converters/helpers/BindingHelper-dbg.js +100 -0
  301. package/src/sap/fe/core/converters/helpers/BindingHelper.js +3 -99
  302. package/src/sap/fe/core/converters/helpers/BindingHelper.js.map +1 -0
  303. package/src/sap/fe/core/converters/helpers/ConfigurableObject-dbg.js +199 -0
  304. package/src/sap/fe/core/converters/helpers/ConfigurableObject.js +3 -199
  305. package/src/sap/fe/core/converters/helpers/ConfigurableObject.js.map +1 -0
  306. package/src/sap/fe/core/converters/helpers/DataFieldHelper-dbg.js +143 -0
  307. package/src/sap/fe/core/converters/helpers/DataFieldHelper.js +3 -140
  308. package/src/sap/fe/core/converters/helpers/DataFieldHelper.js.map +1 -0
  309. package/src/sap/fe/core/converters/helpers/DataFieldHelper.ts +2 -1
  310. package/src/sap/fe/core/converters/helpers/ID-dbg.js +92 -0
  311. package/src/sap/fe/core/converters/helpers/ID.js +3 -89
  312. package/src/sap/fe/core/converters/helpers/ID.js.map +1 -0
  313. package/src/sap/fe/core/converters/helpers/IssueManager-dbg.js +62 -0
  314. package/src/sap/fe/core/converters/helpers/IssueManager.js +3 -59
  315. package/src/sap/fe/core/converters/helpers/IssueManager.js.map +1 -0
  316. package/src/sap/fe/core/converters/helpers/Key-dbg.js +62 -0
  317. package/src/sap/fe/core/converters/helpers/Key.js +3 -59
  318. package/src/sap/fe/core/converters/helpers/Key.js.map +1 -0
  319. package/src/sap/fe/core/converters/helpers/Key.ts +1 -1
  320. package/src/sap/fe/core/converters/helpers/SelectionVariantHelper-dbg.js +80 -0
  321. package/src/sap/fe/core/converters/helpers/SelectionVariantHelper.js +3 -77
  322. package/src/sap/fe/core/converters/helpers/SelectionVariantHelper.js.map +1 -0
  323. package/src/sap/fe/core/converters/objectPage/FormMenuActions-dbg.js +142 -0
  324. package/src/sap/fe/core/converters/objectPage/FormMenuActions.js +3 -139
  325. package/src/sap/fe/core/converters/objectPage/FormMenuActions.js.map +1 -0
  326. package/src/sap/fe/core/converters/objectPage/HeaderAndFooterAction-dbg.js +406 -0
  327. package/src/sap/fe/core/converters/objectPage/HeaderAndFooterAction.js +3 -422
  328. package/src/sap/fe/core/converters/objectPage/HeaderAndFooterAction.js.map +1 -0
  329. package/src/sap/fe/core/converters/objectPage/HeaderAndFooterAction.ts +132 -111
  330. package/src/sap/fe/core/converters/templates/ListReportConverter-dbg.js +557 -0
  331. package/src/sap/fe/core/converters/templates/ListReportConverter.js +3 -589
  332. package/src/sap/fe/core/converters/templates/ListReportConverter.js.map +1 -0
  333. package/src/sap/fe/core/converters/templates/ObjectPageConverter-dbg.js +474 -0
  334. package/src/sap/fe/core/converters/templates/ObjectPageConverter.js +3 -477
  335. package/src/sap/fe/core/converters/templates/ObjectPageConverter.js.map +1 -0
  336. package/src/sap/fe/core/designtime/AppComponent-dbg.designtime.js +103 -0
  337. package/src/sap/fe/core/designtime/AppComponent.designtime.js +3 -100
  338. package/src/sap/fe/core/designtime/AppComponent.designtime.js.map +1 -0
  339. package/src/sap/fe/core/designtime/library-preload.designtime.js +7 -0
  340. package/src/sap/fe/core/designtime/library-preload.designtime.js.map +1 -0
  341. package/src/sap/fe/core/formatters/CollaborationFormatter-dbg.js +95 -0
  342. package/src/sap/fe/core/formatters/CollaborationFormatter.js +3 -92
  343. package/src/sap/fe/core/formatters/CollaborationFormatter.js.map +1 -0
  344. package/src/sap/fe/core/formatters/FPMFormatter-dbg.js +46 -0
  345. package/src/sap/fe/core/formatters/FPMFormatter.js +3 -44
  346. package/src/sap/fe/core/formatters/FPMFormatter.js.map +1 -0
  347. package/src/sap/fe/core/formatters/FPMFormatter.ts +3 -2
  348. package/src/sap/fe/core/formatters/FiscalFormat-dbg.js +343 -0
  349. package/src/sap/fe/core/formatters/FiscalFormat.js +6 -0
  350. package/src/sap/fe/core/formatters/FiscalFormat.js.map +1 -0
  351. package/src/sap/fe/core/formatters/FiscalFormat.ts +319 -0
  352. package/src/sap/fe/core/formatters/KPIFormatter-dbg.js +86 -0
  353. package/src/sap/fe/core/formatters/KPIFormatter.js +3 -83
  354. package/src/sap/fe/core/formatters/KPIFormatter.js.map +1 -0
  355. package/src/sap/fe/core/formatters/StandardFormatter-dbg.js +80 -0
  356. package/src/sap/fe/core/formatters/StandardFormatter.js +3 -78
  357. package/src/sap/fe/core/formatters/StandardFormatter.js.map +1 -0
  358. package/src/sap/fe/core/formatters/TableFormatter-dbg.js +276 -0
  359. package/src/sap/fe/core/formatters/TableFormatter.js +3 -275
  360. package/src/sap/fe/core/formatters/TableFormatter.js.map +1 -0
  361. package/src/sap/fe/core/formatters/TableFormatter.ts +1 -1
  362. package/src/sap/fe/core/formatters/TableFormatterTypes-dbg.js +20 -0
  363. package/src/sap/fe/core/formatters/TableFormatterTypes.js +3 -17
  364. package/src/sap/fe/core/formatters/TableFormatterTypes.js.map +1 -0
  365. package/src/sap/fe/core/formatters/ValueFormatter-dbg.js +172 -0
  366. package/src/sap/fe/core/formatters/ValueFormatter.js +3 -161
  367. package/src/sap/fe/core/formatters/ValueFormatter.js.map +1 -0
  368. package/src/sap/fe/core/formatters/ValueFormatter.ts +25 -8
  369. package/src/sap/fe/core/fpm/Component-dbg.js +94 -0
  370. package/src/sap/fe/core/fpm/Component.js +3 -91
  371. package/src/sap/fe/core/fpm/Component.js.map +1 -0
  372. package/src/sap/fe/core/fpm/manifest.json +1 -1
  373. package/src/sap/fe/core/helpers/AnnotationEnum-dbg.js +30 -0
  374. package/src/sap/fe/core/helpers/AnnotationEnum.js +3 -36
  375. package/src/sap/fe/core/helpers/AnnotationEnum.js.map +1 -0
  376. package/src/sap/fe/core/helpers/AppStartupHelper-dbg.js +334 -0
  377. package/src/sap/fe/core/helpers/AppStartupHelper.js +3 -335
  378. package/src/sap/fe/core/helpers/AppStartupHelper.js.map +1 -0
  379. package/src/sap/fe/core/helpers/BindingToolkit-dbg.js +1739 -0
  380. package/src/sap/fe/core/helpers/BindingToolkit.js +3 -1611
  381. package/src/sap/fe/core/helpers/BindingToolkit.js.map +1 -0
  382. package/src/sap/fe/core/helpers/BindingToolkit.ts +277 -97
  383. package/src/sap/fe/core/helpers/ClassSupport-dbg.js +421 -0
  384. package/src/sap/fe/core/helpers/ClassSupport.js +3 -420
  385. package/src/sap/fe/core/helpers/ClassSupport.js.map +1 -0
  386. package/src/sap/fe/core/helpers/ClassSupport.ts +13 -15
  387. package/src/sap/fe/core/helpers/DeleteHelper-dbg.js +526 -0
  388. package/src/sap/fe/core/helpers/DeleteHelper.js +3 -618
  389. package/src/sap/fe/core/helpers/DeleteHelper.js.map +1 -0
  390. package/src/sap/fe/core/helpers/DeleteHelper.ts +116 -134
  391. package/src/sap/fe/core/helpers/DynamicAnnotationPathHelper-dbg.js +55 -0
  392. package/src/sap/fe/core/helpers/DynamicAnnotationPathHelper.js +3 -52
  393. package/src/sap/fe/core/helpers/DynamicAnnotationPathHelper.js.map +1 -0
  394. package/src/sap/fe/core/helpers/EditState-dbg.js +80 -0
  395. package/src/sap/fe/core/helpers/EditState.js +3 -77
  396. package/src/sap/fe/core/helpers/EditState.js.map +1 -0
  397. package/src/sap/fe/core/helpers/ExcelFormatHelper-dbg.js +55 -0
  398. package/src/sap/fe/core/helpers/ExcelFormatHelper.js +3 -52
  399. package/src/sap/fe/core/helpers/ExcelFormatHelper.js.map +1 -0
  400. package/src/sap/fe/core/helpers/FPMHelper-dbg.js +55 -0
  401. package/src/sap/fe/core/helpers/FPMHelper.js +3 -52
  402. package/src/sap/fe/core/helpers/FPMHelper.js.map +1 -0
  403. package/src/sap/fe/core/helpers/KeepAliveHelper-dbg.js +180 -0
  404. package/src/sap/fe/core/helpers/KeepAliveHelper.js +3 -177
  405. package/src/sap/fe/core/helpers/KeepAliveHelper.js.map +1 -0
  406. package/src/sap/fe/core/helpers/KeepAliveRefreshTypes-dbg.js +28 -0
  407. package/src/sap/fe/core/helpers/KeepAliveRefreshTypes.js +3 -25
  408. package/src/sap/fe/core/helpers/KeepAliveRefreshTypes.js.map +1 -0
  409. package/src/sap/fe/core/helpers/LoaderUtils-dbg.js +29 -0
  410. package/src/sap/fe/core/helpers/LoaderUtils.js +3 -30
  411. package/src/sap/fe/core/helpers/LoaderUtils.js.map +1 -0
  412. package/src/sap/fe/core/helpers/MassEditHelper-dbg.js +1229 -0
  413. package/src/sap/fe/core/helpers/MassEditHelper.js +3 -1309
  414. package/src/sap/fe/core/helpers/MassEditHelper.js.map +1 -0
  415. package/src/sap/fe/core/helpers/MassEditHelper.ts +6 -6
  416. package/src/sap/fe/core/helpers/MessageStrip-dbg.js +65 -0
  417. package/src/sap/fe/core/helpers/MessageStrip.js +3 -62
  418. package/src/sap/fe/core/helpers/MessageStrip.js.map +1 -0
  419. package/src/sap/fe/core/helpers/ModelHelper-dbg.js +489 -0
  420. package/src/sap/fe/core/helpers/ModelHelper.js +3 -503
  421. package/src/sap/fe/core/helpers/ModelHelper.js.map +1 -0
  422. package/src/sap/fe/core/helpers/ModelHelper.ts +13 -36
  423. package/src/sap/fe/core/helpers/PasteHelper-dbg.js +174 -0
  424. package/src/sap/fe/core/helpers/PasteHelper.js +3 -185
  425. package/src/sap/fe/core/helpers/PasteHelper.js.map +1 -0
  426. package/src/sap/fe/core/helpers/SemanticDateOperators-dbg.js +371 -0
  427. package/src/sap/fe/core/helpers/SemanticDateOperators.js +3 -368
  428. package/src/sap/fe/core/helpers/SemanticDateOperators.js.map +1 -0
  429. package/src/sap/fe/core/helpers/SemanticKeyHelper-dbg.js +70 -0
  430. package/src/sap/fe/core/helpers/SemanticKeyHelper.js +3 -67
  431. package/src/sap/fe/core/helpers/SemanticKeyHelper.js.map +1 -0
  432. package/src/sap/fe/core/helpers/SideEffectsHelper-dbg.js +141 -0
  433. package/src/sap/fe/core/helpers/SideEffectsHelper.js +3 -137
  434. package/src/sap/fe/core/helpers/SideEffectsHelper.js.map +1 -0
  435. package/src/sap/fe/core/helpers/SideEffectsHelper.ts +3 -2
  436. package/src/sap/fe/core/helpers/StableIdHelper-dbg.js +204 -0
  437. package/src/sap/fe/core/helpers/StableIdHelper.js +3 -208
  438. package/src/sap/fe/core/helpers/StableIdHelper.js.map +1 -0
  439. package/src/sap/fe/core/helpers/Synchronization-dbg.js +35 -0
  440. package/src/sap/fe/core/helpers/Synchronization.js +3 -33
  441. package/src/sap/fe/core/helpers/Synchronization.js.map +1 -0
  442. package/src/sap/fe/core/helpers/ToES6Promise-dbg.js +29 -0
  443. package/src/sap/fe/core/helpers/ToES6Promise.js +3 -26
  444. package/src/sap/fe/core/helpers/ToES6Promise.js.map +1 -0
  445. package/src/sap/fe/core/helpers/TypeGuards-dbg.js +20 -0
  446. package/src/sap/fe/core/helpers/TypeGuards.js +3 -19
  447. package/src/sap/fe/core/helpers/TypeGuards.js.map +1 -0
  448. package/src/sap/fe/core/helpers/TypeGuards.ts +5 -1
  449. package/src/sap/fe/core/jsx-runtime/Fragment-dbg.js +14 -0
  450. package/src/sap/fe/core/jsx-runtime/Fragment.js +3 -11
  451. package/src/sap/fe/core/jsx-runtime/Fragment.js.map +1 -0
  452. package/src/sap/fe/core/jsx-runtime/ViewLoader-dbg.js +76 -0
  453. package/src/sap/fe/core/jsx-runtime/ViewLoader.js +3 -86
  454. package/src/sap/fe/core/jsx-runtime/ViewLoader.js.map +1 -0
  455. package/src/sap/fe/core/jsx-runtime/jsx-control-dbg.js +124 -0
  456. package/src/sap/fe/core/jsx-runtime/jsx-control.js +3 -98
  457. package/src/sap/fe/core/jsx-runtime/jsx-control.js.map +1 -0
  458. package/src/sap/fe/core/jsx-runtime/jsx-control.ts +43 -17
  459. package/src/sap/fe/core/jsx-runtime/jsx-dbg.js +41 -0
  460. package/src/sap/fe/core/jsx-runtime/jsx-xml-dbg.js +94 -0
  461. package/src/sap/fe/core/jsx-runtime/jsx-xml.js +3 -90
  462. package/src/sap/fe/core/jsx-runtime/jsx-xml.js.map +1 -0
  463. package/src/sap/fe/core/jsx-runtime/jsx-xml.ts +1 -1
  464. package/src/sap/fe/core/jsx-runtime/jsx.js +3 -28
  465. package/src/sap/fe/core/jsx-runtime/jsx.js.map +1 -0
  466. package/src/sap/fe/core/jsx-runtime/jsx.ts +19 -1
  467. package/src/sap/fe/core/jsx-runtime/jsxs-dbg.js +10 -0
  468. package/src/sap/fe/core/jsx-runtime/jsxs.js +3 -7
  469. package/src/sap/fe/core/jsx-runtime/jsxs.js.map +1 -0
  470. package/src/sap/fe/core/jsx-runtime/useMDXComponents-dbg.js +154 -0
  471. package/src/sap/fe/core/jsx-runtime/useMDXComponents.js +3 -153
  472. package/src/sap/fe/core/jsx-runtime/useMDXComponents.js.map +1 -0
  473. package/src/sap/fe/core/library-dbg.js +437 -0
  474. package/src/sap/fe/core/library-preload.js +900 -0
  475. package/src/sap/fe/core/library-preload.js.map +1 -0
  476. package/src/sap/fe/core/library-preload.support.js +177 -0
  477. package/src/sap/fe/core/library-preload.support.js.map +1 -0
  478. package/src/sap/fe/core/library.js +3 -461
  479. package/src/sap/fe/core/library.js.map +1 -0
  480. package/src/sap/fe/core/library.support.js +1 -1
  481. package/src/sap/fe/core/library.ts +12 -25
  482. package/src/sap/fe/core/manifest.json +100 -0
  483. package/src/sap/fe/core/manifestMerger/ChangePageConfiguration-dbg.js +99 -0
  484. package/src/sap/fe/core/manifestMerger/ChangePageConfiguration.js +3 -96
  485. package/src/sap/fe/core/manifestMerger/ChangePageConfiguration.js.map +1 -0
  486. package/src/sap/fe/core/messagebundle.properties +6 -0
  487. package/src/sap/fe/core/messagebundle_ar.properties +22 -0
  488. package/src/sap/fe/core/messagebundle_bg.properties +22 -0
  489. package/src/sap/fe/core/messagebundle_ca.properties +22 -0
  490. package/src/sap/fe/core/messagebundle_cs.properties +22 -0
  491. package/src/sap/fe/core/messagebundle_cy.properties +22 -0
  492. package/src/sap/fe/core/messagebundle_da.properties +22 -0
  493. package/src/sap/fe/core/messagebundle_de.properties +22 -0
  494. package/src/sap/fe/core/messagebundle_el.properties +22 -0
  495. package/src/sap/fe/core/messagebundle_en.properties +22 -0
  496. package/src/sap/fe/core/messagebundle_en_GB.properties +22 -0
  497. package/src/sap/fe/core/messagebundle_en_US_sappsd.properties +22 -0
  498. package/src/sap/fe/core/messagebundle_en_US_saprigi.properties +4 -0
  499. package/src/sap/fe/core/messagebundle_en_US_saptrc.properties +4 -0
  500. package/src/sap/fe/core/messagebundle_es.properties +22 -0
  501. package/src/sap/fe/core/messagebundle_es_MX.properties +22 -0
  502. package/src/sap/fe/core/messagebundle_et.properties +22 -0
  503. package/src/sap/fe/core/messagebundle_fi.properties +22 -0
  504. package/src/sap/fe/core/messagebundle_fr.properties +22 -0
  505. package/src/sap/fe/core/messagebundle_fr_CA.properties +22 -0
  506. package/src/sap/fe/core/messagebundle_hi.properties +22 -0
  507. package/src/sap/fe/core/messagebundle_hr.properties +23 -1
  508. package/src/sap/fe/core/messagebundle_hu.properties +22 -0
  509. package/src/sap/fe/core/messagebundle_id.properties +22 -0
  510. package/src/sap/fe/core/messagebundle_it.properties +22 -0
  511. package/src/sap/fe/core/messagebundle_iw.properties +22 -0
  512. package/src/sap/fe/core/messagebundle_ja.properties +22 -0
  513. package/src/sap/fe/core/messagebundle_kk.properties +22 -0
  514. package/src/sap/fe/core/messagebundle_ko.properties +22 -0
  515. package/src/sap/fe/core/messagebundle_lt.properties +22 -0
  516. package/src/sap/fe/core/messagebundle_lv.properties +22 -0
  517. package/src/sap/fe/core/messagebundle_ms.properties +22 -0
  518. package/src/sap/fe/core/messagebundle_nl.properties +22 -0
  519. package/src/sap/fe/core/messagebundle_no.properties +22 -0
  520. package/src/sap/fe/core/messagebundle_pl.properties +22 -0
  521. package/src/sap/fe/core/messagebundle_pt.properties +22 -0
  522. package/src/sap/fe/core/messagebundle_pt_PT.properties +22 -0
  523. package/src/sap/fe/core/messagebundle_ro.properties +22 -0
  524. package/src/sap/fe/core/messagebundle_ru.properties +22 -0
  525. package/src/sap/fe/core/messagebundle_sh.properties +22 -0
  526. package/src/sap/fe/core/messagebundle_sk.properties +22 -0
  527. package/src/sap/fe/core/messagebundle_sl.properties +22 -0
  528. package/src/sap/fe/core/messagebundle_sv.properties +22 -0
  529. package/src/sap/fe/core/messagebundle_th.properties +22 -0
  530. package/src/sap/fe/core/messagebundle_tr.properties +22 -0
  531. package/src/sap/fe/core/messagebundle_uk.properties +22 -0
  532. package/src/sap/fe/core/messagebundle_vi.properties +22 -0
  533. package/src/sap/fe/core/messagebundle_zh_CN.properties +22 -0
  534. package/src/sap/fe/core/messagebundle_zh_TW.properties +22 -0
  535. package/src/sap/fe/core/operationsHelper-dbg.js +155 -0
  536. package/src/sap/fe/core/operationsHelper.js +3 -205
  537. package/src/sap/fe/core/operationsHelper.js.map +1 -0
  538. package/src/sap/fe/core/operationsHelper.ts +14 -68
  539. package/src/sap/fe/core/rootView/Fcl-dbg.controller.js +837 -0
  540. package/src/sap/fe/core/rootView/Fcl.controller.js +3 -855
  541. package/src/sap/fe/core/rootView/Fcl.controller.js.map +1 -0
  542. package/src/sap/fe/core/rootView/NavContainer-dbg.controller.js +190 -0
  543. package/src/sap/fe/core/rootView/NavContainer.controller.js +3 -190
  544. package/src/sap/fe/core/rootView/NavContainer.controller.js.map +1 -0
  545. package/src/sap/fe/core/rootView/RootViewBaseController-dbg.js +506 -0
  546. package/src/sap/fe/core/rootView/RootViewBaseController.js +3 -538
  547. package/src/sap/fe/core/rootView/RootViewBaseController.js.map +1 -0
  548. package/src/sap/fe/core/rootView/RootViewBaseController.ts +3 -4
  549. package/src/sap/fe/core/services/AsyncComponentServiceFactory-dbg.js +60 -0
  550. package/src/sap/fe/core/services/AsyncComponentServiceFactory.js +3 -60
  551. package/src/sap/fe/core/services/AsyncComponentServiceFactory.js.map +1 -0
  552. package/src/sap/fe/core/services/CacheHandlerServiceFactory-dbg.js +196 -0
  553. package/src/sap/fe/core/services/CacheHandlerServiceFactory.js +3 -219
  554. package/src/sap/fe/core/services/CacheHandlerServiceFactory.js.map +1 -0
  555. package/src/sap/fe/core/services/EnvironmentServiceFactory-dbg.js +80 -0
  556. package/src/sap/fe/core/services/EnvironmentServiceFactory.js +3 -82
  557. package/src/sap/fe/core/services/EnvironmentServiceFactory.js.map +1 -0
  558. package/src/sap/fe/core/services/NavigationServiceFactory-dbg.js +320 -0
  559. package/src/sap/fe/core/services/NavigationServiceFactory.js +3 -320
  560. package/src/sap/fe/core/services/NavigationServiceFactory.js.map +1 -0
  561. package/src/sap/fe/core/services/ResourceModelServiceFactory-dbg.js +91 -0
  562. package/src/sap/fe/core/services/ResourceModelServiceFactory.js +3 -89
  563. package/src/sap/fe/core/services/ResourceModelServiceFactory.js.map +1 -0
  564. package/src/sap/fe/core/services/RoutingServiceFactory-dbg.js +817 -0
  565. package/src/sap/fe/core/services/RoutingServiceFactory.js +3 -847
  566. package/src/sap/fe/core/services/RoutingServiceFactory.js.map +1 -0
  567. package/src/sap/fe/core/services/RoutingServiceFactory.ts +6 -3
  568. package/src/sap/fe/core/services/ShellServicesFactory-dbg.js +732 -0
  569. package/src/sap/fe/core/services/ShellServicesFactory.js +3 -752
  570. package/src/sap/fe/core/services/ShellServicesFactory.js.map +1 -0
  571. package/src/sap/fe/core/services/SideEffectsServiceFactory-dbg.js +569 -0
  572. package/src/sap/fe/core/services/SideEffectsServiceFactory.js +3 -599
  573. package/src/sap/fe/core/services/SideEffectsServiceFactory.js.map +1 -0
  574. package/src/sap/fe/core/services/SideEffectsServiceFactory.ts +3 -3
  575. package/src/sap/fe/core/services/TemplatedViewServiceFactory-dbg.js +355 -0
  576. package/src/sap/fe/core/services/TemplatedViewServiceFactory.js +3 -387
  577. package/src/sap/fe/core/services/TemplatedViewServiceFactory.js.map +1 -0
  578. package/src/sap/fe/core/services/view/TemplatingErrorPage-dbg.controller.js +37 -0
  579. package/src/sap/fe/core/services/view/TemplatingErrorPage.controller.js +3 -34
  580. package/src/sap/fe/core/services/view/TemplatingErrorPage.controller.js.map +1 -0
  581. package/src/sap/fe/core/support/AnnotationIssue.support.js +4 -4
  582. package/src/sap/fe/core/support/CollectionFacetMissingID.support.js +3 -3
  583. package/src/sap/fe/core/support/CollectionFacetUnsupportedLevel.support.js +3 -3
  584. package/src/sap/fe/core/support/CommonHelper-dbg.js +63 -0
  585. package/src/sap/fe/core/support/CommonHelper.js +3 -60
  586. package/src/sap/fe/core/support/CommonHelper.js.map +1 -0
  587. package/src/sap/fe/core/support/Diagnostics-dbg.js +44 -0
  588. package/src/sap/fe/core/support/Diagnostics.js +3 -49
  589. package/src/sap/fe/core/support/Diagnostics.js.map +1 -0
  590. package/src/sap/fe/core/support/InvalidAnnotationColumnKey.support.js +3 -3
  591. package/src/sap/fe/core/templating/CommonFormatters-dbg.js +70 -0
  592. package/src/sap/fe/core/templating/CommonFormatters.js +3 -66
  593. package/src/sap/fe/core/templating/CommonFormatters.js.map +1 -0
  594. package/src/sap/fe/core/templating/CommonFormatters.ts +9 -3
  595. package/src/sap/fe/core/templating/CriticalityFormatters-dbg.js +136 -0
  596. package/src/sap/fe/core/templating/CriticalityFormatters.js +3 -133
  597. package/src/sap/fe/core/templating/CriticalityFormatters.js.map +1 -0
  598. package/src/sap/fe/core/templating/DataFieldFormatters-dbg.js +58 -0
  599. package/src/sap/fe/core/templating/DataFieldFormatters.js +3 -55
  600. package/src/sap/fe/core/templating/DataFieldFormatters.js.map +1 -0
  601. package/src/sap/fe/core/templating/DataModelPathHelper-dbg.js +363 -0
  602. package/src/sap/fe/core/templating/DataModelPathHelper.js +3 -372
  603. package/src/sap/fe/core/templating/DataModelPathHelper.js.map +1 -0
  604. package/src/sap/fe/core/templating/DataModelPathHelper.ts +17 -8
  605. package/src/sap/fe/core/templating/DisplayModeFormatter-dbg.js +56 -0
  606. package/src/sap/fe/core/templating/DisplayModeFormatter.js +3 -124
  607. package/src/sap/fe/core/templating/DisplayModeFormatter.js.map +1 -0
  608. package/src/sap/fe/core/templating/DisplayModeFormatter.ts +0 -47
  609. package/src/sap/fe/core/templating/EntitySetHelper-dbg.js +68 -0
  610. package/src/sap/fe/core/templating/EntitySetHelper.js +3 -81
  611. package/src/sap/fe/core/templating/EntitySetHelper.js.map +1 -0
  612. package/src/sap/fe/core/templating/FieldControlHelper-dbg.js +77 -0
  613. package/src/sap/fe/core/templating/FieldControlHelper.js +3 -74
  614. package/src/sap/fe/core/templating/FieldControlHelper.js.map +1 -0
  615. package/src/sap/fe/core/templating/FilterHelper-dbg.js +346 -0
  616. package/src/sap/fe/core/templating/FilterHelper.js +3 -339
  617. package/src/sap/fe/core/templating/FilterHelper.js.map +1 -0
  618. package/src/sap/fe/core/templating/FilterHelper.ts +2 -21
  619. package/src/sap/fe/core/templating/FilterTemplating-dbg.js +62 -0
  620. package/src/sap/fe/core/templating/FilterTemplating.js +3 -59
  621. package/src/sap/fe/core/templating/FilterTemplating.js.map +1 -0
  622. package/src/sap/fe/core/templating/PropertyFormatters-dbg.js +93 -0
  623. package/src/sap/fe/core/templating/PropertyFormatters.js +3 -90
  624. package/src/sap/fe/core/templating/PropertyFormatters.js.map +1 -0
  625. package/src/sap/fe/core/templating/PropertyHelper-dbg.js +340 -0
  626. package/src/sap/fe/core/templating/PropertyHelper.js +3 -337
  627. package/src/sap/fe/core/templating/PropertyHelper.js.map +1 -0
  628. package/src/sap/fe/core/templating/SemanticObjectHelper-dbg.js +91 -0
  629. package/src/sap/fe/core/templating/SemanticObjectHelper.js +3 -43
  630. package/src/sap/fe/core/templating/SemanticObjectHelper.js.map +1 -0
  631. package/src/sap/fe/core/templating/SemanticObjectHelper.ts +45 -1
  632. package/src/sap/fe/core/templating/UIFormatters-dbg.js +498 -0
  633. package/src/sap/fe/core/templating/UIFormatters.js +3 -544
  634. package/src/sap/fe/core/templating/UIFormatters.js.map +1 -0
  635. package/src/sap/fe/core/templating/UIFormatters.ts +60 -110
  636. package/src/sap/fe/core/type/DateTimeWithTimezone-dbg.js +35 -0
  637. package/src/sap/fe/core/type/DateTimeWithTimezone.js +3 -33
  638. package/src/sap/fe/core/type/DateTimeWithTimezone.js.map +1 -0
  639. package/src/sap/fe/core/type/EDM-dbg.js +84 -0
  640. package/src/sap/fe/core/type/EDM.js +6 -0
  641. package/src/sap/fe/core/type/EDM.js.map +1 -0
  642. package/src/sap/fe/core/type/EDM.ts +70 -0
  643. package/src/sap/fe/core/type/Email-dbg.js +29 -0
  644. package/src/sap/fe/core/type/Email.js +3 -26
  645. package/src/sap/fe/core/type/Email.js.map +1 -0
  646. package/src/sap/fe/core/type/FiscalDate-dbg.js +174 -0
  647. package/src/sap/fe/core/type/FiscalDate.js +6 -0
  648. package/src/sap/fe/core/type/FiscalDate.js.map +1 -0
  649. package/src/sap/fe/core/type/FiscalDate.ts +179 -0
  650. package/src/sap/fe/core/type/TypeUtil-dbg.js +58 -0
  651. package/src/sap/fe/core/type/TypeUtil.js +3 -55
  652. package/src/sap/fe/core/type/TypeUtil.js.map +1 -0
  653. package/src/sap/fe/core/type/TypeUtil.ts +1 -0
  654. package/src/.eslintrc +0 -7
@@ -1,788 +1,6 @@
1
1
  /*!
2
2
  * SAP UI development toolkit for HTML5 (SAPUI5)
3
- * (c) Copyright 2009-2021 SAP SE. All rights reserved
3
+ * (c) Copyright 2009-2023 SAP SE. All rights reserved
4
4
  */
5
- sap.ui.define(["sap/base/Log", "sap/fe/core/CommonUtils", "sap/fe/core/controllerextensions/collaboration/ActivitySync", "sap/fe/core/controllerextensions/messageHandler/messageHandling", "sap/m/Button", "sap/m/Dialog", "sap/m/MessageBox", "sap/m/Text", "sap/ui/core/Core", "../../operationsHelper", "./draftDataLossPopup"], function (Log, CommonUtils, ActivitySync, messageHandling, Button, Dialog, MessageBox, Text, Core, operationsHelper, draftDataLossPopup) {
6
- "use strict";
7
-
8
- function _catch(body, recover) {
9
- try {
10
- var result = body();
11
- } catch (e) {
12
- return recover(e);
13
- }
14
- if (result && result.then) {
15
- return result.then(void 0, recover);
16
- }
17
- return result;
18
- }
19
- /**
20
- * Creates an active document from a draft document.
21
- *
22
- * The function supports several hooks as there is a certain choreography defined.
23
- *
24
- * @function
25
- * @name sap.fe.core.actions.draft#activateDocument
26
- * @memberof sap.fe.core.actions.draft
27
- * @static
28
- * @param oContext Context of the active document for the new draft
29
- * @param oAppComponent The AppComponent
30
- * @param mParameters The parameters
31
- * @param [mParameters.fnBeforeActivateDocument] Callback that allows a veto before the 'Create' request is executed
32
- * @param [mParameters.fnAfterActivateDocument] Callback for postprocessing after document was activated.
33
- * @param messageHandler The message handler
34
- * @returns Promise resolves with the {@link sap.ui.model.odata.v4.Context context} of the new draft document
35
- * @private
36
- * @ui5-restricted
37
- */
38
- var activateDocument = function (oContext, oAppComponent, mParameters, messageHandler) {
39
- try {
40
- function _temp22(bExecute) {
41
- var _exit5 = false;
42
- function _temp20(_result6) {
43
- return _exit5 ? _result6 : mParam.fnAfterActivateDocument ? mParam.fnAfterActivateDocument(oContext, oActiveDocumentContext) : oActiveDocumentContext;
44
- }
45
- if (!bExecute) {
46
- throw new Error("Activation of the document was aborted by extension for document: ".concat(oContext.getPath()));
47
- }
48
- var oActiveDocumentContext;
49
- var _temp19 = function () {
50
- if (!hasPrepareAction(oContext)) {
51
- return Promise.resolve(executeDraftActivationAction(oContext, oAppComponent)).then(function (_executeDraftActivati) {
52
- oActiveDocumentContext = _executeDraftActivati;
53
- });
54
- } else {
55
- /* activation requires preparation */
56
- var sBatchGroup = "draft";
57
- // we use the same batchGroup to force prepare and activate in a same batch but with different changeset
58
- var oPreparePromise = draft.executeDraftPreparationAction(oContext, sBatchGroup, false);
59
- oContext.getModel().submitBatch(sBatchGroup);
60
- var oActivatePromise = draft.executeDraftActivationAction(oContext, oAppComponent, sBatchGroup);
61
- return _catch(function () {
62
- return Promise.resolve(Promise.all([oPreparePromise, oActivatePromise])).then(function (values) {
63
- oActiveDocumentContext = values[1];
64
- });
65
- }, function (err) {
66
- function _temp18() {
67
- throw err;
68
- }
69
- // BCP 2270084075
70
- // if the Activation fails, then the messages are retrieved from PREPARATION action
71
- var sMessagesPath = getMessagePathForPrepare(oContext);
72
- var _temp17 = function () {
73
- if (sMessagesPath) {
74
- oPreparePromise = draft.executeDraftPreparationAction(oContext, sBatchGroup, true);
75
- oContext.getModel().submitBatch(sBatchGroup);
76
- return Promise.resolve(oPreparePromise).then(function () {
77
- return Promise.resolve(oContext.requestObject()).then(function (data) {
78
- if (data[sMessagesPath].length > 0) {
79
- //if messages are available from the PREPARATION action, then previous transition messages are removed
80
- messageHandler === null || messageHandler === void 0 ? void 0 : messageHandler.removeTransitionMessages(false, false, oContext.getPath());
81
- }
82
- });
83
- });
84
- }
85
- }();
86
- return _temp17 && _temp17.then ? _temp17.then(_temp18) : _temp18(_temp17);
87
- });
88
- }
89
- }();
90
- return _temp19 && _temp19.then ? _temp19.then(_temp20) : _temp20(_temp19);
91
- }
92
- var mParam = mParameters || {};
93
- if (!oContext) {
94
- throw new Error("Binding context to draft document is required");
95
- }
96
- var _mParam$fnBeforeActiv2 = mParam.fnBeforeActivateDocument;
97
- return Promise.resolve(_mParam$fnBeforeActiv2 ? Promise.resolve(mParam.fnBeforeActivateDocument(oContext)).then(_temp22) : _temp22(true));
98
- } catch (e) {
99
- return Promise.reject(e);
100
- }
101
- };
102
- /**
103
- * HTTP POST call when DraftAction is present for Draft Delete; HTTP DELETE call when there is no DraftAction
104
- * and Active Instance always uses DELETE.
105
- *
106
- * @function
107
- * @name sap.fe.core.actions.draft#deleteDraft
108
- * @memberof sap.fe.core.actions.draft
109
- * @static
110
- * @param oContext Context of the document to be discarded
111
- * @param oAppComponent Context of the document to be discarded
112
- * @param bEnableStrictHandling
113
- * @private
114
- * @returns A Promise resolved when the context is deleted
115
- * @ui5-restricted
116
- */
117
- /**
118
- * Creates a draft document from an existing document.
119
- *
120
- * The function supports several hooks as there is a certain coreography defined.
121
- *
122
- * @function
123
- * @name sap.fe.core.actions.draft#createDraftFromActiveDocument
124
- * @memberof sap.fe.core.actions.draft
125
- * @static
126
- * @param oContext Context of the active document for the new draft
127
- * @param oAppComponent The AppComponent
128
- * @param mParameters The parameters
129
- * @param [mParameters.oView] The view
130
- * @param [mParameters.bPreserveChanges] Preserve changes of an existing draft of another user
131
- * @param [mParameters.fnBeforeCreateDraftFromActiveDocument] Callback that allows veto before create request is executed
132
- * @param [mParameters.fnAfterCreateDraftFromActiveDocument] Callback for postprocessiong after draft document was created
133
- * @param [mParameters.fnWhenDecisionToOverwriteDocumentIsRequired] Callback for deciding on overwriting an unsaved change by another user
134
- * @returns Promise resolves with the {@link sap.ui.model.odata.v4.Context context} of the new draft document
135
- * @private
136
- * @ui5-restricted
137
- */
138
- var createDraftFromActiveDocument = function (oContext, oAppComponent, mParameters) {
139
- try {
140
- var _exit2 = false;
141
- //default true
142
- /**
143
- * Overwrite or reject based on fnWhenDecisionToOverwriteDocumentIsRequired.
144
- *
145
- * @param bOverwrite Overwrite the change or not
146
- * @returns Resolves with result of {@link sap.fe.core.actions#executeDraftEditAction}
147
- */
148
- var overwriteOnDemand = function (bOverwrite) {
149
- try {
150
- var _exit4 = false;
151
- function _temp15(_result4) {
152
- if (_exit4) return _result4;
153
- throw new Error("Draft creation aborted for document: ".concat(oContext.getPath()));
154
- }
155
- var _temp16 = function () {
156
- if (bOverwrite) {
157
- //Overwrite existing changes
158
- var oModel = oContext.getModel();
159
- var draftDataContext = oModel.bindContext("".concat(oContext.getPath(), "/DraftAdministrativeData")).getBoundContext();
160
- return Promise.resolve(mParameters.oView.getModel("sap.fe.i18n").getResourceBundle()).then(function (oResourceBundle) {
161
- return Promise.resolve(draftDataContext.requestObject()).then(function (draftAdminData) {
162
- return function () {
163
- if (draftAdminData) {
164
- // remove all unbound transition messages as we show a special dialog
165
- messageHandling.removeUnboundTransitionMessages();
166
- var sInfo = draftAdminData.InProcessByUserDescription || draftAdminData.InProcessByUser;
167
- var sEntitySet = mParameters.oView.getViewData().entitySet;
168
- if (sInfo) {
169
- var sLockedByUserMsg = CommonUtils.getTranslatedText("C_DRAFT_OBJECT_PAGE_DRAFT_LOCKED_BY_USER", oResourceBundle, sInfo, sEntitySet);
170
- MessageBox.error(sLockedByUserMsg);
171
- throw new Error(sLockedByUserMsg);
172
- } else {
173
- sInfo = draftAdminData.CreatedByUserDescription || draftAdminData.CreatedByUser;
174
- var sUnsavedChangesMsg = CommonUtils.getTranslatedText("C_DRAFT_OBJECT_PAGE_DRAFT_UNSAVED_CHANGES", oResourceBundle, sInfo, sEntitySet);
175
- return Promise.resolve(showMessageBox(sUnsavedChangesMsg)).then(function () {
176
- var _executeDraftEditActi = executeDraftEditAction(oContext, false, mParameters.oView);
177
- _exit4 = true;
178
- return _executeDraftEditActi;
179
- });
180
- }
181
- }
182
- }();
183
- });
184
- });
185
- }
186
- }();
187
- return Promise.resolve(_temp16 && _temp16.then ? _temp16.then(_temp15) : _temp15(_temp16));
188
- } catch (e) {
189
- return Promise.reject(e);
190
- }
191
- };
192
- function showMessageBox(sUnsavedChangesMsg) {
193
- return new Promise(function (resolve, reject) {
194
- var oDialog = new Dialog({
195
- title: localI18nRef.getText("C_MESSAGE_HANDLING_SAPFE_ERROR_MESSAGES_PAGE_TITLE_WARNING"),
196
- state: "Warning",
197
- content: new Text({
198
- text: sUnsavedChangesMsg
199
- }),
200
- beginButton: new Button({
201
- text: localI18nRef.getText("C_COMMON_OBJECT_PAGE_EDIT"),
202
- type: "Emphasized",
203
- press: function () {
204
- oDialog.close();
205
- resolve(true);
206
- }
207
- }),
208
- endButton: new Button({
209
- text: localI18nRef.getText("C_COMMON_OBJECT_PAGE_CANCEL"),
210
- press: function () {
211
- oDialog.close();
212
- reject("Draft creation aborted for document: ".concat(oContext.getPath()));
213
- }
214
- }),
215
- afterClose: function () {
216
- oDialog.destroy();
217
- }
218
- });
219
- oDialog.addStyleClass("sapUiContentPadding");
220
- oDialog.open();
221
- });
222
- }
223
- var mParam = mParameters || {},
224
- localI18nRef = Core.getLibraryResourceBundle("sap.fe.core"),
225
- bRunPreserveChangesFlow = typeof mParam.bPreserveChanges === "undefined" || typeof mParam.bPreserveChanges === "boolean" && mParam.bPreserveChanges;
226
- if (!oContext) {
227
- throw new Error("Binding context to active document is required");
228
- }
229
- var bExecute = mParam.fnBeforeCreateDraftFromActiveDocument ? mParam.fnBeforeCreateDraftFromActiveDocument(oContext, bRunPreserveChangesFlow) : true;
230
- if (!bExecute) {
231
- throw new Error("Draft creation was aborted by extension for document: ".concat(oContext.getPath()));
232
- }
233
- return Promise.resolve(_catch(function () {
234
- function _temp12(_result) {
235
- if (_exit2) return _result;
236
- oDraftContext = oDraftContext && mParam.fnAfterCreateDraftFromActiveDocument ? mParam.fnAfterCreateDraftFromActiveDocument(oContext, oDraftContext) : oDraftContext;
237
- if (oDraftContext) {
238
- var _oSideEffects$trigger;
239
- var sEditActionName = getActionName(oDraftContext, draftOperations.EDIT);
240
- var oSideEffects = oAppComponent.getSideEffectsService().getODataActionSideEffects(sEditActionName, oDraftContext);
241
- if (oSideEffects !== null && oSideEffects !== void 0 && (_oSideEffects$trigger = oSideEffects.triggerActions) !== null && _oSideEffects$trigger !== void 0 && _oSideEffects$trigger.length) {
242
- return Promise.resolve(oAppComponent.getSideEffectsService().requestSideEffectsForODataAction(oSideEffects, oDraftContext)).then(function () {
243
- return oDraftContext;
244
- });
245
- } else {
246
- return oDraftContext;
247
- }
248
- } else {
249
- return undefined;
250
- }
251
- }
252
- var oDraftContext;
253
- var _temp11 = _catch(function () {
254
- return Promise.resolve(draft.executeDraftEditAction(oContext, bRunPreserveChangesFlow, mParameters.oView)).then(function (_draft$executeDraftEd) {
255
- oDraftContext = _draft$executeDraftEd;
256
- });
257
- }, function (oResponse) {
258
- return function () {
259
- if (bRunPreserveChangesFlow && oResponse.status === 423) {
260
- messageHandling.removeBoundTransitionMessages();
261
- messageHandling.removeUnboundTransitionMessages();
262
- return function () {
263
- if (ActivitySync.isCollaborationEnabled(mParameters.oView)) {
264
- return Promise.resolve(draft.computeSiblingInformation(oContext, oContext)).then(function (siblingInfo) {
265
- if (siblingInfo !== null && siblingInfo !== void 0 && siblingInfo.targetContext) {
266
- return Promise.resolve(CommonUtils.waitForContextRequested(siblingInfo.targetContext)).then(function () {
267
- var _siblingInfo$targetCo = siblingInfo.targetContext;
268
- _exit2 = true;
269
- return _siblingInfo$targetCo;
270
- });
271
- } else {
272
- throw new Error(oResponse);
273
- }
274
- });
275
- } else {
276
- return Promise.resolve(overwriteOnDemand(mParam.fnWhenDecisionToOverwriteDocumentIsRequired ? mParam.fnWhenDecisionToOverwriteDocumentIsRequired() : true)).then(function (_overwriteOnDemand) {
277
- oDraftContext = _overwriteOnDemand;
278
- });
279
- }
280
- }();
281
- } else if (!(oResponse && oResponse.canceled)) {
282
- throw new Error(oResponse);
283
- }
284
- }();
285
- });
286
- return _temp11 && _temp11.then ? _temp11.then(_temp12) : _temp12(_temp11);
287
- }, function (exc) {
288
- throw exc;
289
- }));
290
- } catch (e) {
291
- return Promise.reject(e);
292
- }
293
- };
294
- /**
295
- * This method creates a sibling context for a subobject page and calculates a sibling path for all intermediate paths
296
- * between the object page and the subobject page.
297
- *
298
- * @param rootCurrentContext The context for the root of the draft
299
- * @param rightmostCurrentContext The context of the subobject page
300
- * @returns The siblingInformation object
301
- */
302
- var computeSiblingInformation = function (rootCurrentContext, rightmostCurrentContext) {
303
- try {
304
- if (!rightmostCurrentContext.getPath().startsWith(rootCurrentContext.getPath())) {
305
- // Wrong usage !!
306
- Log.error("Cannot compute rightmost sibling context");
307
- throw new Error("Cannot compute rightmost sibling context");
308
- }
309
- var model = rootCurrentContext.getModel();
310
- return Promise.resolve(_catch(function () {
311
- // //////////////////////////////////////////////////////////////////
312
- // 1. Find all segments between the root object and the sub-object
313
- // Example: for root = /Param(aa)/Entity(bb) and rightMost = /Param(aa)/Entity(bb)/_Nav(cc)/_SubNav(dd)
314
- // ---> ["Param(aa)/Entity(bb)", "_Nav(cc)", "_SubNav(dd)"]
315
-
316
- // Find all segments in the rightmost path
317
- var additionalPath = rightmostCurrentContext.getPath().replace(rootCurrentContext.getPath(), "");
318
- var segments = additionalPath ? additionalPath.substring(1).split("/") : [];
319
- // First segment is always the full path of the root object, which can contain '/' in case of a parametrized entity
320
- segments.unshift(rootCurrentContext.getPath().substring(1));
321
-
322
- // //////////////////////////////////////////////////////////////////
323
- // 2. Request canonical paths of the sibling entity for each segment
324
- // Example: for ["Param(aa)/Entity(bb)", "_Nav(cc)", "_SubNav(dd)"]
325
- // --> request canonical paths for "Param(aa)/Entity(bb)/SiblingEntity", "Param(aa)/Entity(bb)/_Nav(cc)/SiblingEntity", "Param(aa)/Entity(bb)/_Nav(cc)/_SubNav(dd)/SiblingEntity"
326
- var oldPaths = [];
327
- var newPaths = [];
328
- var currentPath = "";
329
- var canonicalPathPromises = segments.map(function (segment) {
330
- currentPath += "/".concat(segment);
331
- oldPaths.unshift(currentPath);
332
- if (currentPath.endsWith(")")) {
333
- var siblingContext = model.bindContext("".concat(currentPath, "/SiblingEntity")).getBoundContext();
334
- return siblingContext.requestCanonicalPath();
335
- } else {
336
- return Promise.resolve(undefined); // 1-1 relation
337
- }
338
- });
339
-
340
- // //////////////////////////////////////////////////////////////////
341
- // 3. Reconstruct the full paths from canonical paths (for path mapping)
342
- // Example: for canonical paths "/Param(aa)/Entity(bb-sibling)", "/Entity2(cc-sibling)", "/Entity3(dd-sibling)"
343
- // --> ["Param(aa)/Entity(bb-sibling)", "Param(aa)/Entity(bb-sibling)/_Nav(cc-sibling)", "Param(aa)/Entity(bb-sibling)/_Nav(cc-sibling)/_SubNav(dd-sibling)"]
344
- return Promise.resolve(Promise.all(canonicalPathPromises)).then(function (_Promise$all) {
345
- var canonicalPaths = _Promise$all;
346
- var siblingPath = "";
347
- canonicalPaths.forEach(function (canonicalPath, index) {
348
- if (index !== 0) {
349
- if (segments[index].endsWith(")")) {
350
- var navigation = segments[index].replace(/\(.*$/, ""); // Keep only navigation name from the segment, i.e. aaa(xxx) --> aaa
351
- var keys = canonicalPath.replace(/.*\(/, "("); // Keep only the keys from the canonical path, i.e. aaa(xxx) --> (xxx)
352
- siblingPath += "/".concat(navigation).concat(keys);
353
- } else {
354
- siblingPath += "/".concat(segments[index]); // 1-1 relation
355
- }
356
- } else {
357
- siblingPath = canonicalPath; // To manage parametrized entities
358
- }
359
-
360
- newPaths.unshift(siblingPath);
361
- });
362
- return {
363
- targetContext: model.bindContext(siblingPath).getBoundContext(),
364
- // Create the rightmost sibling context from its path
365
- pathMapping: oldPaths.map(function (oldPath, index) {
366
- return {
367
- oldPath: oldPath,
368
- newPath: newPaths[index]
369
- };
370
- })
371
- };
372
- });
373
- }, function () {
374
- // A canonical path couldn't be resolved (because a sibling doesn't exist)
375
- return undefined;
376
- }));
377
- } catch (e) {
378
- return Promise.reject(e);
379
- }
380
- };
381
- /**
382
- * Executes discard of a draft function using HTTP Post.
383
- *
384
- * @function
385
- * @param oContext Context for which the action should be performed
386
- * @param oAppComponent App Component
387
- * @param bEnableStrictHandling
388
- * @returns Resolve function returns the context of the operation
389
- * @private
390
- * @ui5-restricted
391
- */
392
- var executeDraftDiscardAction = function (oContext, oAppComponent, bEnableStrictHandling) {
393
- try {
394
- if (!oContext.getProperty("IsActiveEntity")) {
395
- function _temp10(oResourceBundle) {
396
- var sGroupId = "direct";
397
- var sActionName = CommonUtils.getTranslatedText("C_TRANSACTION_HELPER_DRAFT_DISCARD_BUTTON", oResourceBundle);
398
- // as the discard action doesnt' send the active version in the response we do not use the replace in cache
399
- var oDiscardPromise = !bEnableStrictHandling ? oDiscardOperation.execute(sGroupId) : oDiscardOperation.execute(sGroupId, undefined, operationsHelper.fnOnStrictHandlingFailed.bind(draft, sGroupId, {
400
- label: sActionName,
401
- model: oContext.getModel()
402
- }, oResourceBundle, null, null, null, undefined, undefined), false);
403
- oContext.getModel().submitBatch(sGroupId);
404
- return oDiscardPromise;
405
- }
406
- var oDiscardOperation = draft.createOperation(oContext, draftOperations.DISCARD);
407
- return Promise.resolve(oAppComponent ? Promise.resolve(oAppComponent.getModel("sap.fe.i18n").getResourceBundle()).then(_temp10) : _temp10(oAppComponent));
408
- } else {
409
- throw new Error("The discard action cannot be executed on an active document");
410
- }
411
- } catch (e) {
412
- return Promise.reject(e);
413
- }
414
- };
415
- /**
416
- * Activates a draft document. The draft will replace the sibling entity and will be deleted by the back end.
417
- *
418
- * @function
419
- * @param oContext Context for which the action should be performed
420
- * @param oAppComponent The AppComponent
421
- * @param [sGroupId] The optional batch group in which the operation is to be executed
422
- * @returns Resolve function returns the context of the operation
423
- * @private
424
- * @ui5-restricted
425
- */
426
- var executeDraftActivationAction = function (oContext, oAppComponent, sGroupId) {
427
- try {
428
- var bHasPrepareAction = hasPrepareAction(oContext);
429
-
430
- // According to the draft spec if the service contains a prepare action and we trigger both prepare and
431
- // activate in one $batch the activate action is called with iF-Match=*
432
- var bIgnoreEtag = bHasPrepareAction;
433
- if (!oContext.getProperty("IsActiveEntity")) {
434
- var oOperation = createOperation(oContext, draftOperations.ACTIVATION, {
435
- $$inheritExpandSelect: true
436
- });
437
- return Promise.resolve(oAppComponent.getModel("sap.fe.i18n").getResourceBundle()).then(function (oResourceBundle) {
438
- var sActionName = CommonUtils.getTranslatedText("C_OP_OBJECT_PAGE_SAVE", oResourceBundle);
439
- return _catch(function () {
440
- return Promise.resolve(oOperation.execute(sGroupId, bIgnoreEtag, sGroupId ? operationsHelper.fnOnStrictHandlingFailed.bind(draft, sGroupId, {
441
- label: sActionName,
442
- model: oContext.getModel()
443
- }, oResourceBundle, null, null, null, undefined, undefined) : undefined, oContext.getBinding().isA("sap.ui.model.odata.v4.ODataListBinding")));
444
- }, function (e) {
445
- function _temp5() {
446
- throw e;
447
- }
448
- var _temp4 = function () {
449
- if (bHasPrepareAction) {
450
- var actionName = getActionName(oContext, draftOperations.PREPARE),
451
- oSideEffectsService = oAppComponent.getSideEffectsService(),
452
- oBindingParameters = oSideEffectsService.getODataActionSideEffects(actionName, oContext),
453
- aTargetPaths = oBindingParameters && oBindingParameters.pathExpressions;
454
- var _temp6 = function () {
455
- if (aTargetPaths && aTargetPaths.length > 0) {
456
- var _temp7 = _catch(function () {
457
- return Promise.resolve(oSideEffectsService.requestSideEffects(aTargetPaths, oContext)).then(function () {});
458
- }, function (oError) {
459
- Log.error("Error while requesting side effects", oError);
460
- });
461
- if (_temp7 && _temp7.then) return _temp7.then(function () {});
462
- } else {
463
- var _temp8 = _catch(function () {
464
- return Promise.resolve(requestMessages(oContext, oSideEffectsService)).then(function () {});
465
- }, function (oError) {
466
- Log.error("Error while requesting messages", oError);
467
- });
468
- if (_temp8 && _temp8.then) return _temp8.then(function () {});
469
- }
470
- }();
471
- if (_temp6 && _temp6.then) return _temp6.then(function () {});
472
- }
473
- }();
474
- return _temp4 && _temp4.then ? _temp4.then(_temp5) : _temp5(_temp4);
475
- });
476
- });
477
- } else {
478
- throw new Error("The activation action cannot be executed on an active document");
479
- }
480
- } catch (e) {
481
- return Promise.reject(e);
482
- }
483
- };
484
- /**
485
- * Gets the supported message property path on the PrepareAction for a context.
486
- *
487
- * @function
488
- * @param oContext Context to be checked
489
- * @returns Path to the message
490
- * @private
491
- * @ui5-restricted
492
- */
493
- /**
494
- * Executes the validation of the draft. The PrepareAction is triggered if the messages are annotated and entitySet gets a PreparationAction annotated.
495
- * If the operation succeeds and operation doesn't get a return type (RAP system) the messages are requested.
496
- *
497
- * @function
498
- * @param oContext Context for which the PrepareAction should be performed
499
- * @param oAppComponent The AppComponent
500
- * @returns Resolve function returns
501
- * - the context of the operation if the action has been successfully executed
502
- * - void if the action has failed
503
- * - undefined if the action has not been triggered since the prerequisites are not met
504
- * @private
505
- * @ui5-restricted
506
- */
507
- var executeDraftValidation = function (oContext, oAppComponent) {
508
- try {
509
- if (draft.getMessagesPath(oContext) && draft.hasPrepareAction(oContext)) {
510
- return Promise.resolve(draft.executeDraftPreparationAction(oContext, oContext.getUpdateGroupId(), true).then(function (oOperation) {
511
- // if there is no returned operation by executeDraftPreparationAction -> the action has failed
512
- if (oOperation && !getReturnType(oContext, draftOperations.PREPARE)) {
513
- var oSideEffectsService = oAppComponent.getSideEffectsService();
514
- requestMessages(oContext, oSideEffectsService);
515
- }
516
- return oOperation;
517
- }).catch(function (oError) {
518
- Log.error("Error while requesting messages", oError);
519
- }));
520
- }
521
- return Promise.resolve(undefined);
522
- } catch (e) {
523
- return Promise.reject(e);
524
- }
525
- };
526
- /**
527
- * Creates a new draft from an active document.
528
- *
529
- * @function
530
- * @param oContext Context for which the action should be performed
531
- * @param bPreserveChanges If true - existing changes from another user that are not locked are preserved and an error message (http status 423) is send from the backend, otherwise false - existing changes from another user that are not locked are overwritten</li>
532
- * @param oView If true - existing changes from another
533
- * @returns Resolve function returns the context of the operation
534
- * @private
535
- * @ui5-restricted
536
- */
537
- var executeDraftEditAction = function (oContext, bPreserveChanges, oView) {
538
- try {
539
- if (oContext.getProperty("IsActiveEntity")) {
540
- var oOptions = {
541
- $$inheritExpandSelect: true
542
- };
543
- var oOperation = createOperation(oContext, draftOperations.EDIT, oOptions);
544
- oOperation.setParameter("PreserveChanges", bPreserveChanges);
545
- var sGroupId = "direct";
546
- return Promise.resolve(oView.getModel("sap.fe.i18n").getResourceBundle()).then(function (oResourceBundle) {
547
- var sActionName = CommonUtils.getTranslatedText("C_COMMON_OBJECT_PAGE_EDIT", oResourceBundle);
548
- //If the context is coming from a list binding we pass the flag true to replace the context by the active one
549
- var oEditPromise = oOperation.execute(sGroupId, undefined, operationsHelper.fnOnStrictHandlingFailed.bind(draft, sGroupId, {
550
- label: sActionName,
551
- model: oContext.getModel()
552
- }, oResourceBundle, null, null, null, undefined, undefined), oContext.getBinding().isA("sap.ui.model.odata.v4.ODataListBinding"));
553
- oOperation.getModel().submitBatch(sGroupId);
554
- return Promise.resolve(oEditPromise);
555
- });
556
- } else {
557
- throw new Error("You cannot edit this draft document");
558
- }
559
- } catch (e) {
560
- return Promise.reject(e);
561
- }
562
- };
563
- /**
564
- * Interface for callbacks used in the functions
565
- *
566
- *
567
- * @author SAP SE
568
- * @since 1.54.0
569
- * @interface
570
- * @name sap.fe.core.actions.draft.ICallback
571
- * @private
572
- */
573
-
574
- /**
575
- * Callback to approve or reject the creation of a draft
576
- *
577
- * @name sap.fe.core.actions.draft.ICallback.beforeCreateDraftFromActiveDocument
578
- * @function
579
- * @static
580
- * @abstract
581
- * @param {sap.ui.model.odata.v4.Context} oContext Context of the active document for the new draft
582
- * @returns {(boolean|Promise)} Approval of draft creation [true|false] or Promise that resolves with the boolean value
583
- * @private
584
- */
585
-
586
- /**
587
- * Callback after a draft was successully created
588
- *
589
- * @name sap.fe.core.actions.draft.ICallback.afterCreateDraftFromActiveDocument
590
- * @function
591
- * @static
592
- * @abstract
593
- * @param {sap.ui.model.odata.v4.Context} oContext Context of the new draft
594
- * @param {sap.ui.model.odata.v4.Context} oActiveDocumentContext Context of the active document for the new draft
595
- * @returns {sap.ui.model.odata.v4.Context} oActiveDocumentContext
596
- * @private
597
- */
598
-
599
- /**
600
- * Callback to approve or reject overwriting an unsaved draft of another user
601
- *
602
- * @name sap.fe.core.actions.draft.ICallback.whenDecisionToOverwriteDocumentIsRequired
603
- * @function
604
- * @public
605
- * @static
606
- * @abstract
607
- * @param {sap.ui.model.odata.v4.Context} oContext Context of the active document for the new draft
608
- * @returns {(boolean|Promise)} Approval to overwrite unsaved draft [true|false] or Promise that resolves with the boolean value
609
- * @ui5-restricted
610
- */
611
- /* Constants for draft operations */
612
- var draftOperations = {
613
- EDIT: "EditAction",
614
- ACTIVATION: "ActivationAction",
615
- DISCARD: "DiscardAction",
616
- PREPARE: "PreparationAction"
617
- };
618
-
619
- /**
620
- * Static functions for the draft programming model
621
- *
622
- * @namespace
623
- * @alias sap.fe.core.actions.draft
624
- * @private
625
- * @experimental This module is only for experimental use! <br/><b>This is only a POC and maybe deleted</b>
626
- * @since 1.54.0
627
- */
628
-
629
- /**
630
- * Determines the action name for a draft operation.
631
- *
632
- * @param oContext The context that should be bound to the operation
633
- * @param sOperation The operation name
634
- * @returns The name of the draft operation
635
- */
636
- function getActionName(oContext, sOperation) {
637
- var oModel = oContext.getModel(),
638
- oMetaModel = oModel.getMetaModel(),
639
- sEntitySetPath = oMetaModel.getMetaPath(oContext.getPath());
640
- return oMetaModel.getObject("".concat(sEntitySetPath, "@com.sap.vocabularies.Common.v1.DraftRoot/").concat(sOperation));
641
- }
642
- /**
643
- * Creates an operation context binding for the given context and operation.
644
- *
645
- * @param oContext The context that should be bound to the operation
646
- * @param sOperation The operation (action or function import)
647
- * @param oOptions Options to create the operation context
648
- * @returns The context binding of the bound operation
649
- */
650
- function createOperation(oContext, sOperation, oOptions) {
651
- var sOperationName = getActionName(oContext, sOperation);
652
- return oContext.getModel().bindContext("".concat(sOperationName, "(...)"), oContext, oOptions);
653
- }
654
- /**
655
- * Determines the return type for a draft operation.
656
- *
657
- * @param oContext The context that should be bound to the operation
658
- * @param sOperation The operation name
659
- * @returns The return type of the draft operation
660
- */
661
- function getReturnType(oContext, sOperation) {
662
- var oModel = oContext.getModel(),
663
- oMetaModel = oModel.getMetaModel(),
664
- sEntitySetPath = oMetaModel.getMetaPath(oContext.getPath());
665
- return oMetaModel.getObject("".concat(sEntitySetPath, "@com.sap.vocabularies.Common.v1.DraftRoot/").concat(sOperation, "/$ReturnType"));
666
- }
667
- /**
668
- * Check if optional draft prepare action exists.
669
- *
670
- * @param oContext The context that should be bound to the operation
671
- * @returns True if a a prepare action exists
672
- */
673
- function hasPrepareAction(oContext) {
674
- return !!getActionName(oContext, draftOperations.PREPARE);
675
- }
676
- function getMessagePathForPrepare(oContext) {
677
- var oMetaModel = oContext.getModel().getMetaModel();
678
- var sContextPath = oMetaModel.getMetaPath(oContext.getPath());
679
- var oReturnType = getReturnType(oContext, draftOperations.PREPARE);
680
- // If there is no return parameter, it is not possible to request Messages.
681
- // RAP draft prepare has no return parameter
682
- return !!oReturnType ? oMetaModel.getObject("".concat(sContextPath, "/@").concat("com.sap.vocabularies.Common.v1.Messages", "/$Path")) : null;
683
- }
684
-
685
- /**
686
- * Execute a preparation action.
687
- *
688
- * @function
689
- * @param oContext Context for which the action should be performed
690
- * @param groupId The optional batch group in which we want to execute the operation
691
- * @param bMessages If set to true, the PREPARE action retrieves SAP_Messages
692
- * @returns Resolve function returns the context of the operation
693
- * @private
694
- * @ui5-restricted
695
- */
696
- function executeDraftPreparationAction(oContext, groupId, bMessages) {
697
- if (!oContext.getProperty("IsActiveEntity")) {
698
- var sMessagesPath = bMessages ? getMessagePathForPrepare(oContext) : null;
699
- var oOperation = createOperation(oContext, draftOperations.PREPARE, sMessagesPath ? {
700
- $select: sMessagesPath
701
- } : null);
702
-
703
- // TODO: side effects qualifier shall be even deprecated to be checked
704
- oOperation.setParameter("SideEffectsQualifier", "");
705
- var sGroupId = groupId || oOperation.getGroupId();
706
- return oOperation.execute(sGroupId).then(function () {
707
- return oOperation;
708
- }).catch(function (oError) {
709
- Log.error("Error while executing the operation", oError);
710
- });
711
- } else {
712
- throw new Error("The preparation action cannot be executed on an active document");
713
- }
714
- }
715
- /**
716
- * Determines the message path for a context.
717
- *
718
- * @function
719
- * @param oContext Context for which the path shall be determined
720
- * @returns Message path, empty if not annotated
721
- * @private
722
- * @ui5-restricted
723
- */
724
- function getMessagesPath(oContext) {
725
- var oModel = oContext.getModel(),
726
- oMetaModel = oModel.getMetaModel(),
727
- sEntitySetPath = oMetaModel.getMetaPath(oContext.getPath());
728
- return oMetaModel.getObject("".concat(sEntitySetPath, "/@com.sap.vocabularies.Common.v1.Messages/$Path"));
729
- }
730
- /**
731
- * Requests the messages if annotated for a given context.
732
- *
733
- * @function
734
- * @param oContext Context for which the messages shall be requested
735
- * @param oSideEffectsService Service for the SideEffects on SAP Fiori elements
736
- * @returns Promise which is resolved once messages were requested
737
- * @private
738
- * @ui5-restricted
739
- */
740
- function requestMessages(oContext, oSideEffectsService) {
741
- var sMessagesPath = draft.getMessagesPath(oContext);
742
- if (sMessagesPath) {
743
- return oSideEffectsService.requestSideEffects([{
744
- $PropertyPath: sMessagesPath
745
- }], oContext);
746
- }
747
- return Promise.resolve();
748
- }
749
- function deleteDraft(oContext, oAppComponent, bEnableStrictHandling) {
750
- var sDiscardAction = getActionName(oContext, draftOperations.DISCARD),
751
- bIsActiveEntity = oContext.getObject().IsActiveEntity;
752
- if (bIsActiveEntity || !bIsActiveEntity && !sDiscardAction) {
753
- //Use Delete in case of active entity and no discard action available for draft
754
- if (oContext.hasPendingChanges()) {
755
- return oContext.getBinding().resetChanges().then(function () {
756
- return oContext.delete();
757
- }).catch(function (error) {
758
- return Promise.reject(error);
759
- });
760
- } else {
761
- return oContext.delete();
762
- }
763
- } else {
764
- //Use Discard Post Action if it is a draft entity and discard action exists
765
- return executeDraftDiscardAction(oContext, oAppComponent, bEnableStrictHandling);
766
- }
767
- }
768
- var draft = {
769
- createDraftFromActiveDocument: createDraftFromActiveDocument,
770
- activateDocument: activateDocument,
771
- deleteDraft: deleteDraft,
772
- executeDraftEditAction: executeDraftEditAction,
773
- executeDraftValidation: executeDraftValidation,
774
- executeDraftPreparationAction: executeDraftPreparationAction,
775
- executeDraftActivationAction: executeDraftActivationAction,
776
- hasPrepareAction: hasPrepareAction,
777
- getMessagesPath: getMessagesPath,
778
- computeSiblingInformation: computeSiblingInformation,
779
- processDataLossOrDraftDiscardConfirmation: draftDataLossPopup.processDataLossOrDraftDiscardConfirmation,
780
- silentlyKeepDraftOnForwardNavigation: draftDataLossPopup.silentlyKeepDraftOnForwardNavigation,
781
- createOperation: createOperation,
782
- executeDraftDiscardAction: executeDraftDiscardAction,
783
- NavigationType: draftDataLossPopup.NavigationType,
784
- getActionName: getActionName
785
- };
786
- return draft;
787
- }, false);
788
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJib2R5IiwicmVjb3ZlciIsInJlc3VsdCIsImUiLCJ0aGVuIiwiYWN0aXZhdGVEb2N1bWVudCIsIm9Db250ZXh0Iiwib0FwcENvbXBvbmVudCIsIm1QYXJhbWV0ZXJzIiwibWVzc2FnZUhhbmRsZXIiLCJiRXhlY3V0ZSIsIm1QYXJhbSIsImZuQWZ0ZXJBY3RpdmF0ZURvY3VtZW50Iiwib0FjdGl2ZURvY3VtZW50Q29udGV4dCIsIkVycm9yIiwiZ2V0UGF0aCIsImhhc1ByZXBhcmVBY3Rpb24iLCJleGVjdXRlRHJhZnRBY3RpdmF0aW9uQWN0aW9uIiwic0JhdGNoR3JvdXAiLCJvUHJlcGFyZVByb21pc2UiLCJkcmFmdCIsImV4ZWN1dGVEcmFmdFByZXBhcmF0aW9uQWN0aW9uIiwiZ2V0TW9kZWwiLCJzdWJtaXRCYXRjaCIsIm9BY3RpdmF0ZVByb21pc2UiLCJQcm9taXNlIiwiYWxsIiwidmFsdWVzIiwiZXJyIiwic01lc3NhZ2VzUGF0aCIsImdldE1lc3NhZ2VQYXRoRm9yUHJlcGFyZSIsInJlcXVlc3RPYmplY3QiLCJkYXRhIiwibGVuZ3RoIiwicmVtb3ZlVHJhbnNpdGlvbk1lc3NhZ2VzIiwiZm5CZWZvcmVBY3RpdmF0ZURvY3VtZW50IiwiY3JlYXRlRHJhZnRGcm9tQWN0aXZlRG9jdW1lbnQiLCJvdmVyd3JpdGVPbkRlbWFuZCIsImJPdmVyd3JpdGUiLCJvTW9kZWwiLCJkcmFmdERhdGFDb250ZXh0IiwiYmluZENvbnRleHQiLCJnZXRCb3VuZENvbnRleHQiLCJvVmlldyIsImdldFJlc291cmNlQnVuZGxlIiwib1Jlc291cmNlQnVuZGxlIiwiZHJhZnRBZG1pbkRhdGEiLCJtZXNzYWdlSGFuZGxpbmciLCJyZW1vdmVVbmJvdW5kVHJhbnNpdGlvbk1lc3NhZ2VzIiwic0luZm8iLCJJblByb2Nlc3NCeVVzZXJEZXNjcmlwdGlvbiIsIkluUHJvY2Vzc0J5VXNlciIsInNFbnRpdHlTZXQiLCJnZXRWaWV3RGF0YSIsImVudGl0eVNldCIsInNMb2NrZWRCeVVzZXJNc2ciLCJDb21tb25VdGlscyIsImdldFRyYW5zbGF0ZWRUZXh0IiwiTWVzc2FnZUJveCIsImVycm9yIiwiQ3JlYXRlZEJ5VXNlckRlc2NyaXB0aW9uIiwiQ3JlYXRlZEJ5VXNlciIsInNVbnNhdmVkQ2hhbmdlc01zZyIsInNob3dNZXNzYWdlQm94IiwiZXhlY3V0ZURyYWZ0RWRpdEFjdGlvbiIsInJlc29sdmUiLCJyZWplY3QiLCJvRGlhbG9nIiwiRGlhbG9nIiwidGl0bGUiLCJsb2NhbEkxOG5SZWYiLCJnZXRUZXh0Iiwic3RhdGUiLCJjb250ZW50IiwiVGV4dCIsInRleHQiLCJiZWdpbkJ1dHRvbiIsIkJ1dHRvbiIsInR5cGUiLCJwcmVzcyIsImNsb3NlIiwiZW5kQnV0dG9uIiwiYWZ0ZXJDbG9zZSIsImRlc3Ryb3kiLCJhZGRTdHlsZUNsYXNzIiwib3BlbiIsIkNvcmUiLCJnZXRMaWJyYXJ5UmVzb3VyY2VCdW5kbGUiLCJiUnVuUHJlc2VydmVDaGFuZ2VzRmxvdyIsImJQcmVzZXJ2ZUNoYW5nZXMiLCJmbkJlZm9yZUNyZWF0ZURyYWZ0RnJvbUFjdGl2ZURvY3VtZW50Iiwib0RyYWZ0Q29udGV4dCIsImZuQWZ0ZXJDcmVhdGVEcmFmdEZyb21BY3RpdmVEb2N1bWVudCIsInNFZGl0QWN0aW9uTmFtZSIsImdldEFjdGlvbk5hbWUiLCJkcmFmdE9wZXJhdGlvbnMiLCJFRElUIiwib1NpZGVFZmZlY3RzIiwiZ2V0U2lkZUVmZmVjdHNTZXJ2aWNlIiwiZ2V0T0RhdGFBY3Rpb25TaWRlRWZmZWN0cyIsInRyaWdnZXJBY3Rpb25zIiwicmVxdWVzdFNpZGVFZmZlY3RzRm9yT0RhdGFBY3Rpb24iLCJ1bmRlZmluZWQiLCJvUmVzcG9uc2UiLCJzdGF0dXMiLCJyZW1vdmVCb3VuZFRyYW5zaXRpb25NZXNzYWdlcyIsIkFjdGl2aXR5U3luYyIsImlzQ29sbGFib3JhdGlvbkVuYWJsZWQiLCJjb21wdXRlU2libGluZ0luZm9ybWF0aW9uIiwic2libGluZ0luZm8iLCJ0YXJnZXRDb250ZXh0Iiwid2FpdEZvckNvbnRleHRSZXF1ZXN0ZWQiLCJmbldoZW5EZWNpc2lvblRvT3ZlcndyaXRlRG9jdW1lbnRJc1JlcXVpcmVkIiwiY2FuY2VsZWQiLCJleGMiLCJyb290Q3VycmVudENvbnRleHQiLCJyaWdodG1vc3RDdXJyZW50Q29udGV4dCIsInN0YXJ0c1dpdGgiLCJMb2ciLCJtb2RlbCIsImFkZGl0aW9uYWxQYXRoIiwicmVwbGFjZSIsInNlZ21lbnRzIiwic3Vic3RyaW5nIiwic3BsaXQiLCJ1bnNoaWZ0Iiwib2xkUGF0aHMiLCJuZXdQYXRocyIsImN1cnJlbnRQYXRoIiwiY2Fub25pY2FsUGF0aFByb21pc2VzIiwibWFwIiwic2VnbWVudCIsImVuZHNXaXRoIiwic2libGluZ0NvbnRleHQiLCJyZXF1ZXN0Q2Fub25pY2FsUGF0aCIsImNhbm9uaWNhbFBhdGhzIiwic2libGluZ1BhdGgiLCJmb3JFYWNoIiwiY2Fub25pY2FsUGF0aCIsImluZGV4IiwibmF2aWdhdGlvbiIsImtleXMiLCJwYXRoTWFwcGluZyIsIm9sZFBhdGgiLCJuZXdQYXRoIiwiZXhlY3V0ZURyYWZ0RGlzY2FyZEFjdGlvbiIsImJFbmFibGVTdHJpY3RIYW5kbGluZyIsImdldFByb3BlcnR5Iiwic0dyb3VwSWQiLCJzQWN0aW9uTmFtZSIsIm9EaXNjYXJkUHJvbWlzZSIsIm9EaXNjYXJkT3BlcmF0aW9uIiwiZXhlY3V0ZSIsIm9wZXJhdGlvbnNIZWxwZXIiLCJmbk9uU3RyaWN0SGFuZGxpbmdGYWlsZWQiLCJiaW5kIiwibGFiZWwiLCJjcmVhdGVPcGVyYXRpb24iLCJESVNDQVJEIiwiYkhhc1ByZXBhcmVBY3Rpb24iLCJiSWdub3JlRXRhZyIsIm9PcGVyYXRpb24iLCJBQ1RJVkFUSU9OIiwiJCRpbmhlcml0RXhwYW5kU2VsZWN0IiwiZ2V0QmluZGluZyIsImlzQSIsImFjdGlvbk5hbWUiLCJQUkVQQVJFIiwib1NpZGVFZmZlY3RzU2VydmljZSIsIm9CaW5kaW5nUGFyYW1ldGVycyIsImFUYXJnZXRQYXRocyIsInBhdGhFeHByZXNzaW9ucyIsInJlcXVlc3RTaWRlRWZmZWN0cyIsIm9FcnJvciIsInJlcXVlc3RNZXNzYWdlcyIsImV4ZWN1dGVEcmFmdFZhbGlkYXRpb24iLCJnZXRNZXNzYWdlc1BhdGgiLCJnZXRVcGRhdGVHcm91cElkIiwiZ2V0UmV0dXJuVHlwZSIsImNhdGNoIiwib09wdGlvbnMiLCJzZXRQYXJhbWV0ZXIiLCJvRWRpdFByb21pc2UiLCJzT3BlcmF0aW9uIiwib01ldGFNb2RlbCIsImdldE1ldGFNb2RlbCIsInNFbnRpdHlTZXRQYXRoIiwiZ2V0TWV0YVBhdGgiLCJnZXRPYmplY3QiLCJzT3BlcmF0aW9uTmFtZSIsInNDb250ZXh0UGF0aCIsIm9SZXR1cm5UeXBlIiwiZ3JvdXBJZCIsImJNZXNzYWdlcyIsIiRzZWxlY3QiLCJnZXRHcm91cElkIiwiJFByb3BlcnR5UGF0aCIsImRlbGV0ZURyYWZ0Iiwic0Rpc2NhcmRBY3Rpb24iLCJiSXNBY3RpdmVFbnRpdHkiLCJJc0FjdGl2ZUVudGl0eSIsImhhc1BlbmRpbmdDaGFuZ2VzIiwicmVzZXRDaGFuZ2VzIiwiZGVsZXRlIiwicHJvY2Vzc0RhdGFMb3NzT3JEcmFmdERpc2NhcmRDb25maXJtYXRpb24iLCJkcmFmdERhdGFMb3NzUG9wdXAiLCJzaWxlbnRseUtlZXBEcmFmdE9uRm9yd2FyZE5hdmlnYXRpb24iLCJOYXZpZ2F0aW9uVHlwZSJdLCJzb3VyY2VSb290IjoiLiIsInNvdXJjZXMiOlsiZHJhZnQudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uQW5ub3RhdGlvblRlcm1zIH0gZnJvbSBcIkBzYXAtdXgvdm9jYWJ1bGFyaWVzLXR5cGVzL3ZvY2FidWxhcmllcy9Db21tb25cIjtcbmltcG9ydCB0eXBlIFJlc291cmNlQnVuZGxlIGZyb20gXCJzYXAvYmFzZS9pMThuL1Jlc291cmNlQnVuZGxlXCI7XG5pbXBvcnQgTG9nIGZyb20gXCJzYXAvYmFzZS9Mb2dcIjtcbmltcG9ydCB0eXBlIEFwcENvbXBvbmVudCBmcm9tIFwic2FwL2ZlL2NvcmUvQXBwQ29tcG9uZW50XCI7XG5pbXBvcnQgQ29tbW9uVXRpbHMgZnJvbSBcInNhcC9mZS9jb3JlL0NvbW1vblV0aWxzXCI7XG5pbXBvcnQgQWN0aXZpdHlTeW5jIGZyb20gXCJzYXAvZmUvY29yZS9jb250cm9sbGVyZXh0ZW5zaW9ucy9jb2xsYWJvcmF0aW9uL0FjdGl2aXR5U3luY1wiO1xuaW1wb3J0IG1lc3NhZ2VIYW5kbGluZyBmcm9tIFwic2FwL2ZlL2NvcmUvY29udHJvbGxlcmV4dGVuc2lvbnMvbWVzc2FnZUhhbmRsZXIvbWVzc2FnZUhhbmRsaW5nXCI7XG5pbXBvcnQgdHlwZSB7IFNpZGVFZmZlY3RzU2VydmljZSB9IGZyb20gXCJzYXAvZmUvY29yZS9zZXJ2aWNlcy9TaWRlRWZmZWN0c1NlcnZpY2VGYWN0b3J5XCI7XG5pbXBvcnQgQnV0dG9uIGZyb20gXCJzYXAvbS9CdXR0b25cIjtcbmltcG9ydCBEaWFsb2cgZnJvbSBcInNhcC9tL0RpYWxvZ1wiO1xuaW1wb3J0IE1lc3NhZ2VCb3ggZnJvbSBcInNhcC9tL01lc3NhZ2VCb3hcIjtcbmltcG9ydCBUZXh0IGZyb20gXCJzYXAvbS9UZXh0XCI7XG5pbXBvcnQgQ29yZSBmcm9tIFwic2FwL3VpL2NvcmUvQ29yZVwiO1xuaW1wb3J0IHR5cGUgVmlldyBmcm9tIFwic2FwL3VpL2NvcmUvbXZjL1ZpZXdcIjtcbmltcG9ydCB0eXBlIFJlc291cmNlTW9kZWwgZnJvbSBcInNhcC91aS9tb2RlbC9yZXNvdXJjZS9SZXNvdXJjZU1vZGVsXCI7XG5pbXBvcnQgdHlwZSB7IE9EYXRhQ29udGV4dEJpbmRpbmdFeCwgVjRDb250ZXh0IH0gZnJvbSBcInR5cGVzL2V4dGVuc2lvbl90eXBlc1wiO1xuaW1wb3J0IG9wZXJhdGlvbnNIZWxwZXIgZnJvbSBcIi4uLy4uL29wZXJhdGlvbnNIZWxwZXJcIjtcbmltcG9ydCB0eXBlIE1lc3NhZ2VIYW5kbGVyIGZyb20gXCIuLi9NZXNzYWdlSGFuZGxlclwiO1xuaW1wb3J0IGRyYWZ0RGF0YUxvc3NQb3B1cCBmcm9tIFwiLi9kcmFmdERhdGFMb3NzUG9wdXBcIjtcblxuZXhwb3J0IHR5cGUgU2libGluZ0luZm9ybWF0aW9uID0ge1xuXHR0YXJnZXRDb250ZXh0OiBWNENvbnRleHQ7XG5cdHBhdGhNYXBwaW5nOiB7IG9sZFBhdGg6IHN0cmluZzsgbmV3UGF0aDogc3RyaW5nIH1bXTtcbn07XG5cbi8qKlxuICogSW50ZXJmYWNlIGZvciBjYWxsYmFja3MgdXNlZCBpbiB0aGUgZnVuY3Rpb25zXG4gKlxuICpcbiAqIEBhdXRob3IgU0FQIFNFXG4gKiBAc2luY2UgMS41NC4wXG4gKiBAaW50ZXJmYWNlXG4gKiBAbmFtZSBzYXAuZmUuY29yZS5hY3Rpb25zLmRyYWZ0LklDYWxsYmFja1xuICogQHByaXZhdGVcbiAqL1xuXG4vKipcbiAqIENhbGxiYWNrIHRvIGFwcHJvdmUgb3IgcmVqZWN0IHRoZSBjcmVhdGlvbiBvZiBhIGRyYWZ0XG4gKlxuICogQG5hbWUgc2FwLmZlLmNvcmUuYWN0aW9ucy5kcmFmdC5JQ2FsbGJhY2suYmVmb3JlQ3JlYXRlRHJhZnRGcm9tQWN0aXZlRG9jdW1lbnRcbiAqIEBmdW5jdGlvblxuICogQHN0YXRpY1xuICogQGFic3RyYWN0XG4gKiBAcGFyYW0ge3NhcC51aS5tb2RlbC5vZGF0YS52NC5Db250ZXh0fSBvQ29udGV4dCBDb250ZXh0IG9mIHRoZSBhY3RpdmUgZG9jdW1lbnQgZm9yIHRoZSBuZXcgZHJhZnRcbiAqIEByZXR1cm5zIHsoYm9vbGVhbnxQcm9taXNlKX0gQXBwcm92YWwgb2YgZHJhZnQgY3JlYXRpb24gW3RydWV8ZmFsc2VdIG9yIFByb21pc2UgdGhhdCByZXNvbHZlcyB3aXRoIHRoZSBib29sZWFuIHZhbHVlXG4gKiBAcHJpdmF0ZVxuICovXG5cbi8qKlxuICogQ2FsbGJhY2sgYWZ0ZXIgYSBkcmFmdCB3YXMgc3VjY2Vzc3VsbHkgY3JlYXRlZFxuICpcbiAqIEBuYW1lIHNhcC5mZS5jb3JlLmFjdGlvbnMuZHJhZnQuSUNhbGxiYWNrLmFmdGVyQ3JlYXRlRHJhZnRGcm9tQWN0aXZlRG9jdW1lbnRcbiAqIEBmdW5jdGlvblxuICogQHN0YXRpY1xuICogQGFic3RyYWN0XG4gKiBAcGFyYW0ge3NhcC51aS5tb2RlbC5vZGF0YS52NC5Db250ZXh0fSBvQ29udGV4dCBDb250ZXh0IG9mIHRoZSBuZXcgZHJhZnRcbiAqIEBwYXJhbSB7c2FwLnVpLm1vZGVsLm9kYXRhLnY0LkNvbnRleHR9IG9BY3RpdmVEb2N1bWVudENvbnRleHQgQ29udGV4dCBvZiB0aGUgYWN0aXZlIGRvY3VtZW50IGZvciB0aGUgbmV3IGRyYWZ0XG4gKiBAcmV0dXJucyB7c2FwLnVpLm1vZGVsLm9kYXRhLnY0LkNvbnRleHR9IG9BY3RpdmVEb2N1bWVudENvbnRleHRcbiAqIEBwcml2YXRlXG4gKi9cblxuLyoqXG4gKiBDYWxsYmFjayB0byBhcHByb3ZlIG9yIHJlamVjdCBvdmVyd3JpdGluZyBhbiB1bnNhdmVkIGRyYWZ0IG9mIGFub3RoZXIgdXNlclxuICpcbiAqIEBuYW1lIHNhcC5mZS5jb3JlLmFjdGlvbnMuZHJhZnQuSUNhbGxiYWNrLndoZW5EZWNpc2lvblRvT3ZlcndyaXRlRG9jdW1lbnRJc1JlcXVpcmVkXG4gKiBAZnVuY3Rpb25cbiAqIEBwdWJsaWNcbiAqIEBzdGF0aWNcbiAqIEBhYnN0cmFjdFxuICogQHBhcmFtIHtzYXAudWkubW9kZWwub2RhdGEudjQuQ29udGV4dH0gb0NvbnRleHQgQ29udGV4dCBvZiB0aGUgYWN0aXZlIGRvY3VtZW50IGZvciB0aGUgbmV3IGRyYWZ0XG4gKiBAcmV0dXJucyB7KGJvb2xlYW58UHJvbWlzZSl9IEFwcHJvdmFsIHRvIG92ZXJ3cml0ZSB1bnNhdmVkIGRyYWZ0IFt0cnVlfGZhbHNlXSBvciBQcm9taXNlIHRoYXQgcmVzb2x2ZXMgd2l0aCB0aGUgYm9vbGVhbiB2YWx1ZVxuICogQHVpNS1yZXN0cmljdGVkXG4gKi9cbi8qIENvbnN0YW50cyBmb3IgZHJhZnQgb3BlcmF0aW9ucyAqL1xuY29uc3QgZHJhZnRPcGVyYXRpb25zID0ge1xuXHRFRElUOiBcIkVkaXRBY3Rpb25cIixcblx0QUNUSVZBVElPTjogXCJBY3RpdmF0aW9uQWN0aW9uXCIsXG5cdERJU0NBUkQ6IFwiRGlzY2FyZEFjdGlvblwiLFxuXHRQUkVQQVJFOiBcIlByZXBhcmF0aW9uQWN0aW9uXCJcbn07XG5cbi8qKlxuICogU3RhdGljIGZ1bmN0aW9ucyBmb3IgdGhlIGRyYWZ0IHByb2dyYW1taW5nIG1vZGVsXG4gKlxuICogQG5hbWVzcGFjZVxuICogQGFsaWFzIHNhcC5mZS5jb3JlLmFjdGlvbnMuZHJhZnRcbiAqIEBwcml2YXRlXG4gKiBAZXhwZXJpbWVudGFsIFRoaXMgbW9kdWxlIGlzIG9ubHkgZm9yIGV4cGVyaW1lbnRhbCB1c2UhIDxici8+PGI+VGhpcyBpcyBvbmx5IGEgUE9DIGFuZCBtYXliZSBkZWxldGVkPC9iPlxuICogQHNpbmNlIDEuNTQuMFxuICovXG5cbi8qKlxuICogRGV0ZXJtaW5lcyB0aGUgYWN0aW9uIG5hbWUgZm9yIGEgZHJhZnQgb3BlcmF0aW9uLlxuICpcbiAqIEBwYXJhbSBvQ29udGV4dCBUaGUgY29udGV4dCB0aGF0IHNob3VsZCBiZSBib3VuZCB0byB0aGUgb3BlcmF0aW9uXG4gKiBAcGFyYW0gc09wZXJhdGlvbiBUaGUgb3BlcmF0aW9uIG5hbWVcbiAqIEByZXR1cm5zIFRoZSBuYW1lIG9mIHRoZSBkcmFmdCBvcGVyYXRpb25cbiAqL1xuZnVuY3Rpb24gZ2V0QWN0aW9uTmFtZShvQ29udGV4dDogVjRDb250ZXh0LCBzT3BlcmF0aW9uOiBzdHJpbmcpIHtcblx0Y29uc3Qgb01vZGVsID0gb0NvbnRleHQuZ2V0TW9kZWwoKSxcblx0XHRvTWV0YU1vZGVsID0gb01vZGVsLmdldE1ldGFNb2RlbCgpLFxuXHRcdHNFbnRpdHlTZXRQYXRoID0gb01ldGFNb2RlbC5nZXRNZXRhUGF0aChvQ29udGV4dC5nZXRQYXRoKCkpO1xuXG5cdHJldHVybiBvTWV0YU1vZGVsLmdldE9iamVjdChgJHtzRW50aXR5U2V0UGF0aH1AY29tLnNhcC52b2NhYnVsYXJpZXMuQ29tbW9uLnYxLkRyYWZ0Um9vdC8ke3NPcGVyYXRpb259YCk7XG59XG4vKipcbiAqIENyZWF0ZXMgYW4gb3BlcmF0aW9uIGNvbnRleHQgYmluZGluZyBmb3IgdGhlIGdpdmVuIGNvbnRleHQgYW5kIG9wZXJhdGlvbi5cbiAqXG4gKiBAcGFyYW0gb0NvbnRleHQgVGhlIGNvbnRleHQgdGhhdCBzaG91bGQgYmUgYm91bmQgdG8gdGhlIG9wZXJhdGlvblxuICogQHBhcmFtIHNPcGVyYXRpb24gVGhlIG9wZXJhdGlvbiAoYWN0aW9uIG9yIGZ1bmN0aW9uIGltcG9ydClcbiAqIEBwYXJhbSBvT3B0aW9ucyBPcHRpb25zIHRvIGNyZWF0ZSB0aGUgb3BlcmF0aW9uIGNvbnRleHRcbiAqIEByZXR1cm5zIFRoZSBjb250ZXh0IGJpbmRpbmcgb2YgdGhlIGJvdW5kIG9wZXJhdGlvblxuICovXG5mdW5jdGlvbiBjcmVhdGVPcGVyYXRpb24ob0NvbnRleHQ6IFY0Q29udGV4dCwgc09wZXJhdGlvbjogc3RyaW5nLCBvT3B0aW9ucz86IGFueSkge1xuXHRjb25zdCBzT3BlcmF0aW9uTmFtZSA9IGdldEFjdGlvbk5hbWUob0NvbnRleHQsIHNPcGVyYXRpb24pO1xuXG5cdHJldHVybiBvQ29udGV4dC5nZXRNb2RlbCgpLmJpbmRDb250ZXh0KGAke3NPcGVyYXRpb25OYW1lfSguLi4pYCwgb0NvbnRleHQsIG9PcHRpb25zKTtcbn1cbi8qKlxuICogRGV0ZXJtaW5lcyB0aGUgcmV0dXJuIHR5cGUgZm9yIGEgZHJhZnQgb3BlcmF0aW9uLlxuICpcbiAqIEBwYXJhbSBvQ29udGV4dCBUaGUgY29udGV4dCB0aGF0IHNob3VsZCBiZSBib3VuZCB0byB0aGUgb3BlcmF0aW9uXG4gKiBAcGFyYW0gc09wZXJhdGlvbiBUaGUgb3BlcmF0aW9uIG5hbWVcbiAqIEByZXR1cm5zIFRoZSByZXR1cm4gdHlwZSBvZiB0aGUgZHJhZnQgb3BlcmF0aW9uXG4gKi9cbmZ1bmN0aW9uIGdldFJldHVyblR5cGUob0NvbnRleHQ6IFY0Q29udGV4dCwgc09wZXJhdGlvbjogc3RyaW5nKSB7XG5cdGNvbnN0IG9Nb2RlbCA9IG9Db250ZXh0LmdldE1vZGVsKCksXG5cdFx0b01ldGFNb2RlbCA9IG9Nb2RlbC5nZXRNZXRhTW9kZWwoKSxcblx0XHRzRW50aXR5U2V0UGF0aCA9IG9NZXRhTW9kZWwuZ2V0TWV0YVBhdGgob0NvbnRleHQuZ2V0UGF0aCgpKTtcblxuXHRyZXR1cm4gb01ldGFNb2RlbC5nZXRPYmplY3QoYCR7c0VudGl0eVNldFBhdGh9QGNvbS5zYXAudm9jYWJ1bGFyaWVzLkNvbW1vbi52MS5EcmFmdFJvb3QvJHtzT3BlcmF0aW9ufS8kUmV0dXJuVHlwZWApO1xufVxuLyoqXG4gKiBDaGVjayBpZiBvcHRpb25hbCBkcmFmdCBwcmVwYXJlIGFjdGlvbiBleGlzdHMuXG4gKlxuICogQHBhcmFtIG9Db250ZXh0IFRoZSBjb250ZXh0IHRoYXQgc2hvdWxkIGJlIGJvdW5kIHRvIHRoZSBvcGVyYXRpb25cbiAqIEByZXR1cm5zIFRydWUgaWYgYSBhIHByZXBhcmUgYWN0aW9uIGV4aXN0c1xuICovXG5mdW5jdGlvbiBoYXNQcmVwYXJlQWN0aW9uKG9Db250ZXh0OiBWNENvbnRleHQpOiBib29sZWFuIHtcblx0cmV0dXJuICEhZ2V0QWN0aW9uTmFtZShvQ29udGV4dCwgZHJhZnRPcGVyYXRpb25zLlBSRVBBUkUpO1xufVxuLyoqXG4gKiBDcmVhdGVzIGEgbmV3IGRyYWZ0IGZyb20gYW4gYWN0aXZlIGRvY3VtZW50LlxuICpcbiAqIEBmdW5jdGlvblxuICogQHBhcmFtIG9Db250ZXh0IENvbnRleHQgZm9yIHdoaWNoIHRoZSBhY3Rpb24gc2hvdWxkIGJlIHBlcmZvcm1lZFxuICogQHBhcmFtIGJQcmVzZXJ2ZUNoYW5nZXMgSWYgdHJ1ZSAtIGV4aXN0aW5nIGNoYW5nZXMgZnJvbSBhbm90aGVyIHVzZXIgdGhhdCBhcmUgbm90IGxvY2tlZCBhcmUgcHJlc2VydmVkIGFuZCBhbiBlcnJvciBtZXNzYWdlIChodHRwIHN0YXR1cyA0MjMpIGlzIHNlbmQgZnJvbSB0aGUgYmFja2VuZCwgb3RoZXJ3aXNlIGZhbHNlIC0gZXhpc3RpbmcgY2hhbmdlcyBmcm9tIGFub3RoZXIgdXNlciB0aGF0IGFyZSBub3QgbG9ja2VkIGFyZSBvdmVyd3JpdHRlbjwvbGk+XG4gKiBAcGFyYW0gb1ZpZXcgSWYgdHJ1ZSAtIGV4aXN0aW5nIGNoYW5nZXMgZnJvbSBhbm90aGVyXG4gKiBAcmV0dXJucyBSZXNvbHZlIGZ1bmN0aW9uIHJldHVybnMgdGhlIGNvbnRleHQgb2YgdGhlIG9wZXJhdGlvblxuICogQHByaXZhdGVcbiAqIEB1aTUtcmVzdHJpY3RlZFxuICovXG5hc3luYyBmdW5jdGlvbiBleGVjdXRlRHJhZnRFZGl0QWN0aW9uKG9Db250ZXh0OiBWNENvbnRleHQsIGJQcmVzZXJ2ZUNoYW5nZXM6IGJvb2xlYW4sIG9WaWV3OiBhbnkpOiBQcm9taXNlPFY0Q29udGV4dD4ge1xuXHRpZiAob0NvbnRleHQuZ2V0UHJvcGVydHkoXCJJc0FjdGl2ZUVudGl0eVwiKSkge1xuXHRcdGNvbnN0IG9PcHRpb25zID0geyAkJGluaGVyaXRFeHBhbmRTZWxlY3Q6IHRydWUgfTtcblx0XHRjb25zdCBvT3BlcmF0aW9uID0gY3JlYXRlT3BlcmF0aW9uKG9Db250ZXh0LCBkcmFmdE9wZXJhdGlvbnMuRURJVCwgb09wdGlvbnMpO1xuXHRcdG9PcGVyYXRpb24uc2V0UGFyYW1ldGVyKFwiUHJlc2VydmVDaGFuZ2VzXCIsIGJQcmVzZXJ2ZUNoYW5nZXMpO1xuXHRcdGNvbnN0IHNHcm91cElkID0gXCJkaXJlY3RcIjtcblx0XHRjb25zdCBvUmVzb3VyY2VCdW5kbGUgPSBhd2FpdCAoKG9WaWV3LmdldE1vZGVsKFwic2FwLmZlLmkxOG5cIikgYXMgUmVzb3VyY2VNb2RlbCkuZ2V0UmVzb3VyY2VCdW5kbGUoKSBhcyBQcm9taXNlPFJlc291cmNlQnVuZGxlPik7XG5cdFx0Y29uc3Qgc0FjdGlvbk5hbWUgPSBDb21tb25VdGlscy5nZXRUcmFuc2xhdGVkVGV4dChcIkNfQ09NTU9OX09CSkVDVF9QQUdFX0VESVRcIiwgb1Jlc291cmNlQnVuZGxlKTtcblx0XHQvL0lmIHRoZSBjb250ZXh0IGlzIGNvbWluZyBmcm9tIGEgbGlzdCBiaW5kaW5nIHdlIHBhc3MgdGhlIGZsYWcgdHJ1ZSB0byByZXBsYWNlIHRoZSBjb250ZXh0IGJ5IHRoZSBhY3RpdmUgb25lXG5cdFx0Y29uc3Qgb0VkaXRQcm9taXNlID0gb09wZXJhdGlvbi5leGVjdXRlKFxuXHRcdFx0c0dyb3VwSWQsXG5cdFx0XHR1bmRlZmluZWQsXG5cdFx0XHQob3BlcmF0aW9uc0hlbHBlciBhcyBhbnkpLmZuT25TdHJpY3RIYW5kbGluZ0ZhaWxlZC5iaW5kKFxuXHRcdFx0XHRkcmFmdCxcblx0XHRcdFx0c0dyb3VwSWQsXG5cdFx0XHRcdHsgbGFiZWw6IHNBY3Rpb25OYW1lLCBtb2RlbDogb0NvbnRleHQuZ2V0TW9kZWwoKSB9LFxuXHRcdFx0XHRvUmVzb3VyY2VCdW5kbGUsXG5cdFx0XHRcdG51bGwsXG5cdFx0XHRcdG51bGwsXG5cdFx0XHRcdG51bGwsXG5cdFx0XHRcdHVuZGVmaW5lZCxcblx0XHRcdFx0dW5kZWZpbmVkXG5cdFx0XHQpLFxuXHRcdFx0b0NvbnRleHQuZ2V0QmluZGluZygpLmlzQShcInNhcC51aS5tb2RlbC5vZGF0YS52NC5PRGF0YUxpc3RCaW5kaW5nXCIpXG5cdFx0KTtcblx0XHRvT3BlcmF0aW9uLmdldE1vZGVsKCkuc3VibWl0QmF0Y2goc0dyb3VwSWQpO1xuXHRcdHJldHVybiBhd2FpdCBvRWRpdFByb21pc2U7XG5cdH0gZWxzZSB7XG5cdFx0dGhyb3cgbmV3IEVycm9yKFwiWW91IGNhbm5vdCBlZGl0IHRoaXMgZHJhZnQgZG9jdW1lbnRcIik7XG5cdH1cbn1cblxuLyoqXG4gKiBFeGVjdXRlcyB0aGUgdmFsaWRhdGlvbiBvZiB0aGUgZHJhZnQuIFRoZSBQcmVwYXJlQWN0aW9uIGlzIHRyaWdnZXJlZCBpZiB0aGUgbWVzc2FnZXMgYXJlIGFubm90YXRlZCBhbmQgZW50aXR5U2V0IGdldHMgYSBQcmVwYXJhdGlvbkFjdGlvbiBhbm5vdGF0ZWQuXG4gKiBJZiB0aGUgb3BlcmF0aW9uIHN1Y2NlZWRzIGFuZCBvcGVyYXRpb24gZG9lc24ndCBnZXQgYSByZXR1cm4gdHlwZSAoUkFQIHN5c3RlbSkgdGhlIG1lc3NhZ2VzIGFyZSByZXF1ZXN0ZWQuXG4gKlxuICogQGZ1bmN0aW9uXG4gKiBAcGFyYW0gb0NvbnRleHQgQ29udGV4dCBmb3Igd2hpY2ggdGhlIFByZXBhcmVBY3Rpb24gc2hvdWxkIGJlIHBlcmZvcm1lZFxuICogQHBhcmFtIG9BcHBDb21wb25lbnQgVGhlIEFwcENvbXBvbmVudFxuICogQHJldHVybnMgUmVzb2x2ZSBmdW5jdGlvbiByZXR1cm5zXG4gKiAgLSB0aGUgY29udGV4dCBvZiB0aGUgb3BlcmF0aW9uIGlmIHRoZSBhY3Rpb24gaGFzIGJlZW4gc3VjY2Vzc2Z1bGx5IGV4ZWN1dGVkXG4gKiAgLSB2b2lkIGlmIHRoZSBhY3Rpb24gaGFzIGZhaWxlZFxuICogIC0gdW5kZWZpbmVkIGlmIHRoZSBhY3Rpb24gaGFzIG5vdCBiZWVuIHRyaWdnZXJlZCBzaW5jZSB0aGUgcHJlcmVxdWlzaXRlcyBhcmUgbm90IG1ldFxuICogQHByaXZhdGVcbiAqIEB1aTUtcmVzdHJpY3RlZFxuICovXG5hc3luYyBmdW5jdGlvbiBleGVjdXRlRHJhZnRWYWxpZGF0aW9uKG9Db250ZXh0OiBWNENvbnRleHQsIG9BcHBDb21wb25lbnQ6IEFwcENvbXBvbmVudCk6IFByb21pc2U8T0RhdGFDb250ZXh0QmluZGluZ0V4IHwgdm9pZCB8IHVuZGVmaW5lZD4ge1xuXHRpZiAoZHJhZnQuZ2V0TWVzc2FnZXNQYXRoKG9Db250ZXh0KSAmJiBkcmFmdC5oYXNQcmVwYXJlQWN0aW9uKG9Db250ZXh0KSkge1xuXHRcdHJldHVybiBkcmFmdFxuXHRcdFx0LmV4ZWN1dGVEcmFmdFByZXBhcmF0aW9uQWN0aW9uKG9Db250ZXh0LCBvQ29udGV4dC5nZXRVcGRhdGVHcm91cElkKCksIHRydWUpXG5cdFx0XHQudGhlbigob09wZXJhdGlvbikgPT4ge1xuXHRcdFx0XHQvLyBpZiB0aGVyZSBpcyBubyByZXR1cm5lZCBvcGVyYXRpb24gYnkgZXhlY3V0ZURyYWZ0UHJlcGFyYXRpb25BY3Rpb24gLT4gdGhlIGFjdGlvbiBoYXMgZmFpbGVkXG5cdFx0XHRcdGlmIChvT3BlcmF0aW9uICYmICFnZXRSZXR1cm5UeXBlKG9Db250ZXh0LCBkcmFmdE9wZXJhdGlvbnMuUFJFUEFSRSkpIHtcblx0XHRcdFx0XHRjb25zdCBvU2lkZUVmZmVjdHNTZXJ2aWNlID0gb0FwcENvbXBvbmVudC5nZXRTaWRlRWZmZWN0c1NlcnZpY2UoKTtcblx0XHRcdFx0XHRyZXF1ZXN0TWVzc2FnZXMob0NvbnRleHQsIG9TaWRlRWZmZWN0c1NlcnZpY2UpO1xuXHRcdFx0XHR9XG5cdFx0XHRcdHJldHVybiBvT3BlcmF0aW9uO1xuXHRcdFx0fSlcblx0XHRcdC5jYXRjaCgob0Vycm9yKSA9PiB7XG5cdFx0XHRcdExvZy5lcnJvcihcIkVycm9yIHdoaWxlIHJlcXVlc3RpbmcgbWVzc2FnZXNcIiwgb0Vycm9yKTtcblx0XHRcdH0pO1xuXHR9XG5cdHJldHVybiB1bmRlZmluZWQ7XG59XG5cbi8qKlxuICogQWN0aXZhdGVzIGEgZHJhZnQgZG9jdW1lbnQuIFRoZSBkcmFmdCB3aWxsIHJlcGxhY2UgdGhlIHNpYmxpbmcgZW50aXR5IGFuZCB3aWxsIGJlIGRlbGV0ZWQgYnkgdGhlIGJhY2sgZW5kLlxuICpcbiAqIEBmdW5jdGlvblxuICogQHBhcmFtIG9Db250ZXh0IENvbnRleHQgZm9yIHdoaWNoIHRoZSBhY3Rpb24gc2hvdWxkIGJlIHBlcmZvcm1lZFxuICogQHBhcmFtIG9BcHBDb21wb25lbnQgVGhlIEFwcENvbXBvbmVudFxuICogQHBhcmFtIFtzR3JvdXBJZF0gVGhlIG9wdGlvbmFsIGJhdGNoIGdyb3VwIGluIHdoaWNoIHRoZSBvcGVyYXRpb24gaXMgdG8gYmUgZXhlY3V0ZWRcbiAqIEByZXR1cm5zIFJlc29sdmUgZnVuY3Rpb24gcmV0dXJucyB0aGUgY29udGV4dCBvZiB0aGUgb3BlcmF0aW9uXG4gKiBAcHJpdmF0ZVxuICogQHVpNS1yZXN0cmljdGVkXG4gKi9cbmFzeW5jIGZ1bmN0aW9uIGV4ZWN1dGVEcmFmdEFjdGl2YXRpb25BY3Rpb24ob0NvbnRleHQ6IFY0Q29udGV4dCwgb0FwcENvbXBvbmVudDogQXBwQ29tcG9uZW50LCBzR3JvdXBJZD86IHN0cmluZyk6IFByb21pc2U8VjRDb250ZXh0PiB7XG5cdGNvbnN0IGJIYXNQcmVwYXJlQWN0aW9uID0gaGFzUHJlcGFyZUFjdGlvbihvQ29udGV4dCk7XG5cblx0Ly8gQWNjb3JkaW5nIHRvIHRoZSBkcmFmdCBzcGVjIGlmIHRoZSBzZXJ2aWNlIGNvbnRhaW5zIGEgcHJlcGFyZSBhY3Rpb24gYW5kIHdlIHRyaWdnZXIgYm90aCBwcmVwYXJlIGFuZFxuXHQvLyBhY3RpdmF0ZSBpbiBvbmUgJGJhdGNoIHRoZSBhY3RpdmF0ZSBhY3Rpb24gaXMgY2FsbGVkIHdpdGggaUYtTWF0Y2g9KlxuXHRjb25zdCBiSWdub3JlRXRhZyA9IGJIYXNQcmVwYXJlQWN0aW9uO1xuXG5cdGlmICghb0NvbnRleHQuZ2V0UHJvcGVydHkoXCJJc0FjdGl2ZUVudGl0eVwiKSkge1xuXHRcdGNvbnN0IG9PcGVyYXRpb24gPSBjcmVhdGVPcGVyYXRpb24ob0NvbnRleHQsIGRyYWZ0T3BlcmF0aW9ucy5BQ1RJVkFUSU9OLCB7ICQkaW5oZXJpdEV4cGFuZFNlbGVjdDogdHJ1ZSB9KTtcblx0XHRjb25zdCBvUmVzb3VyY2VCdW5kbGUgPSBhd2FpdCAoKG9BcHBDb21wb25lbnQuZ2V0TW9kZWwoXCJzYXAuZmUuaTE4blwiKSBhcyBSZXNvdXJjZU1vZGVsKS5nZXRSZXNvdXJjZUJ1bmRsZSgpIGFzIGFueSk7XG5cdFx0Y29uc3Qgc0FjdGlvbk5hbWUgPSBDb21tb25VdGlscy5nZXRUcmFuc2xhdGVkVGV4dChcIkNfT1BfT0JKRUNUX1BBR0VfU0FWRVwiLCBvUmVzb3VyY2VCdW5kbGUpO1xuXHRcdHRyeSB7XG5cdFx0XHRyZXR1cm4gYXdhaXQgb09wZXJhdGlvbi5leGVjdXRlKFxuXHRcdFx0XHRzR3JvdXBJZCxcblx0XHRcdFx0Yklnbm9yZUV0YWcsXG5cdFx0XHRcdHNHcm91cElkXG5cdFx0XHRcdFx0PyAob3BlcmF0aW9uc0hlbHBlciBhcyBhbnkpLmZuT25TdHJpY3RIYW5kbGluZ0ZhaWxlZC5iaW5kKFxuXHRcdFx0XHRcdFx0XHRkcmFmdCxcblx0XHRcdFx0XHRcdFx0c0dyb3VwSWQsXG5cdFx0XHRcdFx0XHRcdHsgbGFiZWw6IHNBY3Rpb25OYW1lLCBtb2RlbDogb0NvbnRleHQuZ2V0TW9kZWwoKSB9LFxuXHRcdFx0XHRcdFx0XHRvUmVzb3VyY2VCdW5kbGUsXG5cdFx0XHRcdFx0XHRcdG51bGwsXG5cdFx0XHRcdFx0XHRcdG51bGwsXG5cdFx0XHRcdFx0XHRcdG51bGwsXG5cdFx0XHRcdFx0XHRcdHVuZGVmaW5lZCxcblx0XHRcdFx0XHRcdFx0dW5kZWZpbmVkXG5cdFx0XHRcdFx0ICApXG5cdFx0XHRcdFx0OiB1bmRlZmluZWQsXG5cdFx0XHRcdG9Db250ZXh0LmdldEJpbmRpbmcoKS5pc0EoXCJzYXAudWkubW9kZWwub2RhdGEudjQuT0RhdGFMaXN0QmluZGluZ1wiKVxuXHRcdFx0KTtcblx0XHR9IGNhdGNoIChlKSB7XG5cdFx0XHRpZiAoYkhhc1ByZXBhcmVBY3Rpb24pIHtcblx0XHRcdFx0Y29uc3QgYWN0aW9uTmFtZSA9IGdldEFjdGlvbk5hbWUob0NvbnRleHQsIGRyYWZ0T3BlcmF0aW9ucy5QUkVQQVJFKSxcblx0XHRcdFx0XHRvU2lkZUVmZmVjdHNTZXJ2aWNlID0gb0FwcENvbXBvbmVudC5nZXRTaWRlRWZmZWN0c1NlcnZpY2UoKSxcblx0XHRcdFx0XHRvQmluZGluZ1BhcmFtZXRlcnMgPSBvU2lkZUVmZmVjdHNTZXJ2aWNlLmdldE9EYXRhQWN0aW9uU2lkZUVmZmVjdHMoYWN0aW9uTmFtZSwgb0NvbnRleHQpLFxuXHRcdFx0XHRcdGFUYXJnZXRQYXRocyA9IG9CaW5kaW5nUGFyYW1ldGVycyAmJiBvQmluZGluZ1BhcmFtZXRlcnMucGF0aEV4cHJlc3Npb25zO1xuXHRcdFx0XHRpZiAoYVRhcmdldFBhdGhzICYmIGFUYXJnZXRQYXRocy5sZW5ndGggPiAwKSB7XG5cdFx0XHRcdFx0dHJ5IHtcblx0XHRcdFx0XHRcdGF3YWl0IG9TaWRlRWZmZWN0c1NlcnZpY2UucmVxdWVzdFNpZGVFZmZlY3RzKGFUYXJnZXRQYXRocywgb0NvbnRleHQpO1xuXHRcdFx0XHRcdH0gY2F0Y2ggKG9FcnJvcjogYW55KSB7XG5cdFx0XHRcdFx0XHRMb2cuZXJyb3IoXCJFcnJvciB3aGlsZSByZXF1ZXN0aW5nIHNpZGUgZWZmZWN0c1wiLCBvRXJyb3IpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHR0cnkge1xuXHRcdFx0XHRcdFx0YXdhaXQgcmVxdWVzdE1lc3NhZ2VzKG9Db250ZXh0LCBvU2lkZUVmZmVjdHNTZXJ2aWNlKTtcblx0XHRcdFx0XHR9IGNhdGNoIChvRXJyb3I6IGFueSkge1xuXHRcdFx0XHRcdFx0TG9nLmVycm9yKFwiRXJyb3Igd2hpbGUgcmVxdWVzdGluZyBtZXNzYWdlc1wiLCBvRXJyb3IpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdFx0dGhyb3cgZTtcblx0XHR9XG5cdH0gZWxzZSB7XG5cdFx0dGhyb3cgbmV3IEVycm9yKFwiVGhlIGFjdGl2YXRpb24gYWN0aW9uIGNhbm5vdCBiZSBleGVjdXRlZCBvbiBhbiBhY3RpdmUgZG9jdW1lbnRcIik7XG5cdH1cbn1cblxuLyoqXG4gKiBHZXRzIHRoZSBzdXBwb3J0ZWQgbWVzc2FnZSBwcm9wZXJ0eSBwYXRoIG9uIHRoZSBQcmVwYXJlQWN0aW9uIGZvciBhIGNvbnRleHQuXG4gKlxuICogQGZ1bmN0aW9uXG4gKiBAcGFyYW0gb0NvbnRleHQgQ29udGV4dCB0byBiZSBjaGVja2VkXG4gKiBAcmV0dXJucyBQYXRoIHRvIHRoZSBtZXNzYWdlXG4gKiBAcHJpdmF0ZVxuICogQHVpNS1yZXN0cmljdGVkXG4gKi9cbmZ1bmN0aW9uIGdldE1lc3NhZ2VQYXRoRm9yUHJlcGFyZShvQ29udGV4dDogVjRDb250ZXh0KTogc3RyaW5nIHwgbnVsbCB7XG5cdGNvbnN0IG9NZXRhTW9kZWwgPSBvQ29udGV4dC5nZXRNb2RlbCgpLmdldE1ldGFNb2RlbCgpO1xuXHRjb25zdCBzQ29udGV4dFBhdGggPSBvTWV0YU1vZGVsLmdldE1ldGFQYXRoKG9Db250ZXh0LmdldFBhdGgoKSk7XG5cdGNvbnN0IG9SZXR1cm5UeXBlID0gZ2V0UmV0dXJuVHlwZShvQ29udGV4dCwgZHJhZnRPcGVyYXRpb25zLlBSRVBBUkUpO1xuXHQvLyBJZiB0aGVyZSBpcyBubyByZXR1cm4gcGFyYW1ldGVyLCBpdCBpcyBub3QgcG9zc2libGUgdG8gcmVxdWVzdCBNZXNzYWdlcy5cblx0Ly8gUkFQIGRyYWZ0IHByZXBhcmUgaGFzIG5vIHJldHVybiBwYXJhbWV0ZXJcblx0cmV0dXJuICEhb1JldHVyblR5cGUgPyBvTWV0YU1vZGVsLmdldE9iamVjdChgJHtzQ29udGV4dFBhdGh9L0Ake0NvbW1vbkFubm90YXRpb25UZXJtcy5NZXNzYWdlc30vJFBhdGhgKSA6IG51bGw7XG59XG5cbi8qKlxuICogRXhlY3V0ZSBhIHByZXBhcmF0aW9uIGFjdGlvbi5cbiAqXG4gKiBAZnVuY3Rpb25cbiAqIEBwYXJhbSBvQ29udGV4dCBDb250ZXh0IGZvciB3aGljaCB0aGUgYWN0aW9uIHNob3VsZCBiZSBwZXJmb3JtZWRcbiAqIEBwYXJhbSBncm91cElkIFRoZSBvcHRpb25hbCBiYXRjaCBncm91cCBpbiB3aGljaCB3ZSB3YW50IHRvIGV4ZWN1dGUgdGhlIG9wZXJhdGlvblxuICogQHBhcmFtIGJNZXNzYWdlcyBJZiBzZXQgdG8gdHJ1ZSwgdGhlIFBSRVBBUkUgYWN0aW9uIHJldHJpZXZlcyBTQVBfTWVzc2FnZXNcbiAqIEByZXR1cm5zIFJlc29sdmUgZnVuY3Rpb24gcmV0dXJucyB0aGUgY29udGV4dCBvZiB0aGUgb3BlcmF0aW9uXG4gKiBAcHJpdmF0ZVxuICogQHVpNS1yZXN0cmljdGVkXG4gKi9cbmZ1bmN0aW9uIGV4ZWN1dGVEcmFmdFByZXBhcmF0aW9uQWN0aW9uKG9Db250ZXh0OiBWNENvbnRleHQsIGdyb3VwSWQ/OiBzdHJpbmcsIGJNZXNzYWdlcz86IGJvb2xlYW4pIHtcblx0aWYgKCFvQ29udGV4dC5nZXRQcm9wZXJ0eShcIklzQWN0aXZlRW50aXR5XCIpKSB7XG5cdFx0Y29uc3Qgc01lc3NhZ2VzUGF0aCA9IGJNZXNzYWdlcyA/IGdldE1lc3NhZ2VQYXRoRm9yUHJlcGFyZShvQ29udGV4dCkgOiBudWxsO1xuXHRcdGNvbnN0IG9PcGVyYXRpb24gPSBjcmVhdGVPcGVyYXRpb24ob0NvbnRleHQsIGRyYWZ0T3BlcmF0aW9ucy5QUkVQQVJFLCBzTWVzc2FnZXNQYXRoID8geyAkc2VsZWN0OiBzTWVzc2FnZXNQYXRoIH0gOiBudWxsKTtcblxuXHRcdC8vIFRPRE86IHNpZGUgZWZmZWN0cyBxdWFsaWZpZXIgc2hhbGwgYmUgZXZlbiBkZXByZWNhdGVkIHRvIGJlIGNoZWNrZWRcblx0XHRvT3BlcmF0aW9uLnNldFBhcmFtZXRlcihcIlNpZGVFZmZlY3RzUXVhbGlmaWVyXCIsIFwiXCIpO1xuXG5cdFx0Y29uc3Qgc0dyb3VwSWQgPSBncm91cElkIHx8IG9PcGVyYXRpb24uZ2V0R3JvdXBJZCgpO1xuXHRcdHJldHVybiBvT3BlcmF0aW9uXG5cdFx0XHQuZXhlY3V0ZShzR3JvdXBJZClcblx0XHRcdC50aGVuKGZ1bmN0aW9uICgpIHtcblx0XHRcdFx0cmV0dXJuIG9PcGVyYXRpb247XG5cdFx0XHR9KVxuXHRcdFx0LmNhdGNoKGZ1bmN0aW9uIChvRXJyb3I6IGFueSkge1xuXHRcdFx0XHRMb2cuZXJyb3IoXCJFcnJvciB3aGlsZSBleGVjdXRpbmcgdGhlIG9wZXJhdGlvblwiLCBvRXJyb3IpO1xuXHRcdFx0fSk7XG5cdH0gZWxzZSB7XG5cdFx0dGhyb3cgbmV3IEVycm9yKFwiVGhlIHByZXBhcmF0aW9uIGFjdGlvbiBjYW5ub3QgYmUgZXhlY3V0ZWQgb24gYW4gYWN0aXZlIGRvY3VtZW50XCIpO1xuXHR9XG59XG4vKipcbiAqIERldGVybWluZXMgdGhlIG1lc3NhZ2UgcGF0aCBmb3IgYSBjb250ZXh0LlxuICpcbiAqIEBmdW5jdGlvblxuICogQHBhcmFtIG9Db250ZXh0IENvbnRleHQgZm9yIHdoaWNoIHRoZSBwYXRoIHNoYWxsIGJlIGRldGVybWluZWRcbiAqIEByZXR1cm5zIE1lc3NhZ2UgcGF0aCwgZW1wdHkgaWYgbm90IGFubm90YXRlZFxuICogQHByaXZhdGVcbiAqIEB1aTUtcmVzdHJpY3RlZFxuICovXG5mdW5jdGlvbiBnZXRNZXNzYWdlc1BhdGgob0NvbnRleHQ6IFY0Q29udGV4dCk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG5cdGNvbnN0IG9Nb2RlbCA9IG9Db250ZXh0LmdldE1vZGVsKCksXG5cdFx0b01ldGFNb2RlbCA9IG9Nb2RlbC5nZXRNZXRhTW9kZWwoKSxcblx0XHRzRW50aXR5U2V0UGF0aCA9IG9NZXRhTW9kZWwuZ2V0TWV0YVBhdGgob0NvbnRleHQuZ2V0UGF0aCgpKTtcblx0cmV0dXJuIG9NZXRhTW9kZWwuZ2V0T2JqZWN0KGAke3NFbnRpdHlTZXRQYXRofS9AY29tLnNhcC52b2NhYnVsYXJpZXMuQ29tbW9uLnYxLk1lc3NhZ2VzLyRQYXRoYCk7XG59XG4vKipcbiAqIFJlcXVlc3RzIHRoZSBtZXNzYWdlcyBpZiBhbm5vdGF0ZWQgZm9yIGEgZ2l2ZW4gY29udGV4dC5cbiAqXG4gKiBAZnVuY3Rpb25cbiAqIEBwYXJhbSBvQ29udGV4dCBDb250ZXh0IGZvciB3aGljaCB0aGUgbWVzc2FnZXMgc2hhbGwgYmUgcmVxdWVzdGVkXG4gKiBAcGFyYW0gb1NpZGVFZmZlY3RzU2VydmljZSBTZXJ2aWNlIGZvciB0aGUgU2lkZUVmZmVjdHMgb24gU0FQIEZpb3JpIGVsZW1lbnRzXG4gKiBAcmV0dXJucyBQcm9taXNlIHdoaWNoIGlzIHJlc29sdmVkIG9uY2UgbWVzc2FnZXMgd2VyZSByZXF1ZXN0ZWRcbiAqIEBwcml2YXRlXG4gKiBAdWk1LXJlc3RyaWN0ZWRcbiAqL1xuZnVuY3Rpb24gcmVxdWVzdE1lc3NhZ2VzKG9Db250ZXh0OiBWNENvbnRleHQsIG9TaWRlRWZmZWN0c1NlcnZpY2U6IFNpZGVFZmZlY3RzU2VydmljZSkge1xuXHRjb25zdCBzTWVzc2FnZXNQYXRoID0gZHJhZnQuZ2V0TWVzc2FnZXNQYXRoKG9Db250ZXh0KTtcblx0aWYgKHNNZXNzYWdlc1BhdGgpIHtcblx0XHRyZXR1cm4gb1NpZGVFZmZlY3RzU2VydmljZS5yZXF1ZXN0U2lkZUVmZmVjdHMoW3sgJFByb3BlcnR5UGF0aDogc01lc3NhZ2VzUGF0aCB9XSBhcyBhbnksIG9Db250ZXh0KTtcblx0fVxuXHRyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7XG59XG4vKipcbiAqIEV4ZWN1dGVzIGRpc2NhcmQgb2YgYSBkcmFmdCBmdW5jdGlvbiB1c2luZyBIVFRQIFBvc3QuXG4gKlxuICogQGZ1bmN0aW9uXG4gKiBAcGFyYW0gb0NvbnRleHQgQ29udGV4dCBmb3Igd2hpY2ggdGhlIGFjdGlvbiBzaG91bGQgYmUgcGVyZm9ybWVkXG4gKiBAcGFyYW0gb0FwcENvbXBvbmVudCBBcHAgQ29tcG9uZW50XG4gKiBAcGFyYW0gYkVuYWJsZVN0cmljdEhhbmRsaW5nXG4gKiBAcmV0dXJucyBSZXNvbHZlIGZ1bmN0aW9uIHJldHVybnMgdGhlIGNvbnRleHQgb2YgdGhlIG9wZXJhdGlvblxuICogQHByaXZhdGVcbiAqIEB1aTUtcmVzdHJpY3RlZFxuICovXG5hc3luYyBmdW5jdGlvbiBleGVjdXRlRHJhZnREaXNjYXJkQWN0aW9uKG9Db250ZXh0OiBWNENvbnRleHQsIG9BcHBDb21wb25lbnQ/OiBhbnksIGJFbmFibGVTdHJpY3RIYW5kbGluZz86IGJvb2xlYW4pOiBQcm9taXNlPGJvb2xlYW4+IHtcblx0aWYgKCFvQ29udGV4dC5nZXRQcm9wZXJ0eShcIklzQWN0aXZlRW50aXR5XCIpKSB7XG5cdFx0Y29uc3Qgb0Rpc2NhcmRPcGVyYXRpb24gPSBkcmFmdC5jcmVhdGVPcGVyYXRpb24ob0NvbnRleHQsIGRyYWZ0T3BlcmF0aW9ucy5ESVNDQVJEKTtcblx0XHRjb25zdCBvUmVzb3VyY2VCdW5kbGUgPVxuXHRcdFx0KG9BcHBDb21wb25lbnQgJiZcblx0XHRcdFx0KGF3YWl0ICgob0FwcENvbXBvbmVudC5nZXRNb2RlbChcInNhcC5mZS5pMThuXCIpIGFzIFJlc291cmNlTW9kZWwpLmdldFJlc291cmNlQnVuZGxlKCkgYXMgUHJvbWlzZTxSZXNvdXJjZUJ1bmRsZT4pKSkgfHxcblx0XHRcdG51bGw7XG5cdFx0Y29uc3Qgc0dyb3VwSWQgPSBcImRpcmVjdFwiO1xuXHRcdGNvbnN0IHNBY3Rpb25OYW1lID0gQ29tbW9uVXRpbHMuZ2V0VHJhbnNsYXRlZFRleHQoXCJDX1RSQU5TQUNUSU9OX0hFTFBFUl9EUkFGVF9ESVNDQVJEX0JVVFRPTlwiLCBvUmVzb3VyY2VCdW5kbGUpO1xuXHRcdC8vIGFzIHRoZSBkaXNjYXJkIGFjdGlvbiBkb2VzbnQnIHNlbmQgdGhlIGFjdGl2ZSB2ZXJzaW9uIGluIHRoZSByZXNwb25zZSB3ZSBkbyBub3QgdXNlIHRoZSByZXBsYWNlIGluIGNhY2hlXG5cdFx0Y29uc3Qgb0Rpc2NhcmRQcm9taXNlID0gIWJFbmFibGVTdHJpY3RIYW5kbGluZ1xuXHRcdFx0PyBvRGlzY2FyZE9wZXJhdGlvbi5leGVjdXRlKHNHcm91cElkKVxuXHRcdFx0OiBvRGlzY2FyZE9wZXJhdGlvbi5leGVjdXRlKFxuXHRcdFx0XHRcdHNHcm91cElkLFxuXHRcdFx0XHRcdHVuZGVmaW5lZCxcblx0XHRcdFx0XHQob3BlcmF0aW9uc0hlbHBlciBhcyBhbnkpLmZuT25TdHJpY3RIYW5kbGluZ0ZhaWxlZC5iaW5kKFxuXHRcdFx0XHRcdFx0ZHJhZnQsXG5cdFx0XHRcdFx0XHRzR3JvdXBJZCxcblx0XHRcdFx0XHRcdHsgbGFiZWw6IHNBY3Rpb25OYW1lLCBtb2RlbDogb0NvbnRleHQuZ2V0TW9kZWwoKSB9LFxuXHRcdFx0XHRcdFx0b1Jlc291cmNlQnVuZGxlLFxuXHRcdFx0XHRcdFx0bnVsbCxcblx0XHRcdFx0XHRcdG51bGwsXG5cdFx0XHRcdFx0XHRudWxsLFxuXHRcdFx0XHRcdFx0dW5kZWZpbmVkLFxuXHRcdFx0XHRcdFx0dW5kZWZpbmVkXG5cdFx0XHRcdFx0KSxcblx0XHRcdFx0XHRmYWxzZVxuXHRcdFx0ICApO1xuXHRcdG9Db250ZXh0LmdldE1vZGVsKCkuc3VibWl0QmF0Y2goc0dyb3VwSWQpO1xuXHRcdHJldHVybiBvRGlzY2FyZFByb21pc2U7XG5cdH0gZWxzZSB7XG5cdFx0dGhyb3cgbmV3IEVycm9yKFwiVGhlIGRpc2NhcmQgYWN0aW9uIGNhbm5vdCBiZSBleGVjdXRlZCBvbiBhbiBhY3RpdmUgZG9jdW1lbnRcIik7XG5cdH1cbn1cblxuLyoqXG4gKiBUaGlzIG1ldGhvZCBjcmVhdGVzIGEgc2libGluZyBjb250ZXh0IGZvciBhIHN1Ym9iamVjdCBwYWdlIGFuZCBjYWxjdWxhdGVzIGEgc2libGluZyBwYXRoIGZvciBhbGwgaW50ZXJtZWRpYXRlIHBhdGhzXG4gKiBiZXR3ZWVuIHRoZSBvYmplY3QgcGFnZSBhbmQgdGhlIHN1Ym9iamVjdCBwYWdlLlxuICpcbiAqIEBwYXJhbSByb290Q3VycmVudENvbnRleHQgVGhlIGNvbnRleHQgZm9yIHRoZSByb290IG9mIHRoZSBkcmFmdFxuICogQHBhcmFtIHJpZ2h0bW9zdEN1cnJlbnRDb250ZXh0IFRoZSBjb250ZXh0IG9mIHRoZSBzdWJvYmplY3QgcGFnZVxuICogQHJldHVybnMgVGhlIHNpYmxpbmdJbmZvcm1hdGlvbiBvYmplY3RcbiAqL1xuYXN5bmMgZnVuY3Rpb24gY29tcHV0ZVNpYmxpbmdJbmZvcm1hdGlvbihcblx0cm9vdEN1cnJlbnRDb250ZXh0OiBWNENvbnRleHQsXG5cdHJpZ2h0bW9zdEN1cnJlbnRDb250ZXh0OiBWNENvbnRleHRcbik6IFByb21pc2U8U2libGluZ0luZm9ybWF0aW9uIHwgdW5kZWZpbmVkPiB7XG5cdGlmICghcmlnaHRtb3N0Q3VycmVudENvbnRleHQuZ2V0UGF0aCgpLnN0YXJ0c1dpdGgocm9vdEN1cnJlbnRDb250ZXh0LmdldFBhdGgoKSkpIHtcblx0XHQvLyBXcm9uZyB1c2FnZSAhIVxuXHRcdExvZy5lcnJvcihcIkNhbm5vdCBjb21wdXRlIHJpZ2h0bW9zdCBzaWJsaW5nIGNvbnRleHRcIik7XG5cdFx0dGhyb3cgbmV3IEVycm9yKFwiQ2Fubm90IGNvbXB1dGUgcmlnaHRtb3N0IHNpYmxpbmcgY29udGV4dFwiKTtcblx0fVxuXG5cdGNvbnN0IG1vZGVsID0gcm9vdEN1cnJlbnRDb250ZXh0LmdldE1vZGVsKCk7XG5cdHRyeSB7XG5cdFx0Ly8gLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5cdFx0Ly8gMS4gRmluZCBhbGwgc2VnbWVudHMgYmV0d2VlbiB0aGUgcm9vdCBvYmplY3QgYW5kIHRoZSBzdWItb2JqZWN0XG5cdFx0Ly8gRXhhbXBsZTogZm9yIHJvb3QgPSAvUGFyYW0oYWEpL0VudGl0eShiYikgYW5kIHJpZ2h0TW9zdCA9IC9QYXJhbShhYSkvRW50aXR5KGJiKS9fTmF2KGNjKS9fU3ViTmF2KGRkKVxuXHRcdC8vIC0tLT4gW1wiUGFyYW0oYWEpL0VudGl0eShiYilcIiwgXCJfTmF2KGNjKVwiLCBcIl9TdWJOYXYoZGQpXCJdXG5cblx0XHQvLyBGaW5kIGFsbCBzZWdtZW50cyBpbiB0aGUgcmlnaHRtb3N0IHBhdGhcblx0XHRjb25zdCBhZGRpdGlvbmFsUGF0aCA9IHJpZ2h0bW9zdEN1cnJlbnRDb250ZXh0LmdldFBhdGgoKS5yZXBsYWNlKHJvb3RDdXJyZW50Q29udGV4dC5nZXRQYXRoKCksIFwiXCIpO1xuXHRcdGNvbnN0IHNlZ21lbnRzID0gYWRkaXRpb25hbFBhdGggPyBhZGRpdGlvbmFsUGF0aC5zdWJzdHJpbmcoMSkuc3BsaXQoXCIvXCIpIDogW107XG5cdFx0Ly8gRmlyc3Qgc2VnbWVudCBpcyBhbHdheXMgdGhlIGZ1bGwgcGF0aCBvZiB0aGUgcm9vdCBvYmplY3QsIHdoaWNoIGNhbiBjb250YWluICcvJyBpbiBjYXNlIG9mIGEgcGFyYW1ldHJpemVkIGVudGl0eVxuXHRcdHNlZ21lbnRzLnVuc2hpZnQocm9vdEN1cnJlbnRDb250ZXh0LmdldFBhdGgoKS5zdWJzdHJpbmcoMSkpO1xuXG5cdFx0Ly8gLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5cdFx0Ly8gMi4gUmVxdWVzdCBjYW5vbmljYWwgcGF0aHMgb2YgdGhlIHNpYmxpbmcgZW50aXR5IGZvciBlYWNoIHNlZ21lbnRcblx0XHQvLyBFeGFtcGxlOiBmb3IgW1wiUGFyYW0oYWEpL0VudGl0eShiYilcIiwgXCJfTmF2KGNjKVwiLCBcIl9TdWJOYXYoZGQpXCJdXG5cdFx0Ly8gLS0+IHJlcXVlc3QgY2Fub25pY2FsIHBhdGhzIGZvciBcIlBhcmFtKGFhKS9FbnRpdHkoYmIpL1NpYmxpbmdFbnRpdHlcIiwgXCJQYXJhbShhYSkvRW50aXR5KGJiKS9fTmF2KGNjKS9TaWJsaW5nRW50aXR5XCIsIFwiUGFyYW0oYWEpL0VudGl0eShiYikvX05hdihjYykvX1N1Yk5hdihkZCkvU2libGluZ0VudGl0eVwiXG5cdFx0Y29uc3Qgb2xkUGF0aHM6IHN0cmluZ1tdID0gW107XG5cdFx0Y29uc3QgbmV3UGF0aHM6IHN0cmluZ1tdID0gW107XG5cdFx0bGV0IGN1cnJlbnRQYXRoID0gXCJcIjtcblx0XHRjb25zdCBjYW5vbmljYWxQYXRoUHJvbWlzZXMgPSBzZWdtZW50cy5tYXAoKHNlZ21lbnQpID0+IHtcblx0XHRcdGN1cnJlbnRQYXRoICs9IGAvJHtzZWdtZW50fWA7XG5cdFx0XHRvbGRQYXRocy51bnNoaWZ0KGN1cnJlbnRQYXRoKTtcblx0XHRcdGlmIChjdXJyZW50UGF0aC5lbmRzV2l0aChcIilcIikpIHtcblx0XHRcdFx0Y29uc3Qgc2libGluZ0NvbnRleHQgPSBtb2RlbC5iaW5kQ29udGV4dChgJHtjdXJyZW50UGF0aH0vU2libGluZ0VudGl0eWApLmdldEJvdW5kQ29udGV4dCgpO1xuXHRcdFx0XHRyZXR1cm4gc2libGluZ0NvbnRleHQucmVxdWVzdENhbm9uaWNhbFBhdGgoKTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdHJldHVybiBQcm9taXNlLnJlc29sdmUodW5kZWZpbmVkKTsgLy8gMS0xIHJlbGF0aW9uXG5cdFx0XHR9XG5cdFx0fSk7XG5cblx0XHQvLyAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cblx0XHQvLyAzLiBSZWNvbnN0cnVjdCB0aGUgZnVsbCBwYXRocyBmcm9tIGNhbm9uaWNhbCBwYXRocyAoZm9yIHBhdGggbWFwcGluZylcblx0XHQvLyBFeGFtcGxlOiBmb3IgY2Fub25pY2FsIHBhdGhzIFwiL1BhcmFtKGFhKS9FbnRpdHkoYmItc2libGluZylcIiwgXCIvRW50aXR5MihjYy1zaWJsaW5nKVwiLCBcIi9FbnRpdHkzKGRkLXNpYmxpbmcpXCJcblx0XHQvLyAtLT4gW1wiUGFyYW0oYWEpL0VudGl0eShiYi1zaWJsaW5nKVwiLCBcIlBhcmFtKGFhKS9FbnRpdHkoYmItc2libGluZykvX05hdihjYy1zaWJsaW5nKVwiLCBcIlBhcmFtKGFhKS9FbnRpdHkoYmItc2libGluZykvX05hdihjYy1zaWJsaW5nKS9fU3ViTmF2KGRkLXNpYmxpbmcpXCJdXG5cdFx0Y29uc3QgY2Fub25pY2FsUGF0aHMgPSAoYXdhaXQgUHJvbWlzZS5hbGwoY2Fub25pY2FsUGF0aFByb21pc2VzKSkgYXMgc3RyaW5nW107XG5cdFx0bGV0IHNpYmxpbmdQYXRoID0gXCJcIjtcblx0XHRjYW5vbmljYWxQYXRocy5mb3JFYWNoKChjYW5vbmljYWxQYXRoLCBpbmRleCkgPT4ge1xuXHRcdFx0aWYgKGluZGV4ICE9PSAwKSB7XG5cdFx0XHRcdGlmIChzZWdtZW50c1tpbmRleF0uZW5kc1dpdGgoXCIpXCIpKSB7XG5cdFx0XHRcdFx0Y29uc3QgbmF2aWdhdGlvbiA9IHNlZ21lbnRzW2luZGV4XS5yZXBsYWNlKC9cXCguKiQvLCBcIlwiKTsgLy8gS2VlcCBvbmx5IG5hdmlnYXRpb24gbmFtZSBmcm9tIHRoZSBzZWdtZW50LCBpLmUuIGFhYSh4eHgpIC0tPiBhYWFcblx0XHRcdFx0XHRjb25zdCBrZXlzID0gY2Fub25pY2FsUGF0aC5yZXBsYWNlKC8uKlxcKC8sIFwiKFwiKTsgLy8gS2VlcCBvbmx5IHRoZSBrZXlzIGZyb20gdGhlIGNhbm9uaWNhbCBwYXRoLCBpLmUuIGFhYSh4eHgpIC0tPiAoeHh4KVxuXHRcdFx0XHRcdHNpYmxpbmdQYXRoICs9IGAvJHtuYXZpZ2F0aW9ufSR7a2V5c31gO1xuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdHNpYmxpbmdQYXRoICs9IGAvJHtzZWdtZW50c1tpbmRleF19YDsgLy8gMS0xIHJlbGF0aW9uXG5cdFx0XHRcdH1cblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdHNpYmxpbmdQYXRoID0gY2Fub25pY2FsUGF0aDsgLy8gVG8gbWFuYWdlIHBhcmFtZXRyaXplZCBlbnRpdGllc1xuXHRcdFx0fVxuXHRcdFx0bmV3UGF0aHMudW5zaGlmdChzaWJsaW5nUGF0aCk7XG5cdFx0fSk7XG5cblx0XHRyZXR1cm4ge1xuXHRcdFx0dGFyZ2V0Q29udGV4dDogbW9kZWwuYmluZENvbnRleHQoc2libGluZ1BhdGgpLmdldEJvdW5kQ29udGV4dCgpLCAvLyBDcmVhdGUgdGhlIHJpZ2h0bW9zdCBzaWJsaW5nIGNvbnRleHQgZnJvbSBpdHMgcGF0aFxuXHRcdFx0cGF0aE1hcHBpbmc6IG9sZFBhdGhzLm1hcCgob2xkUGF0aCwgaW5kZXgpID0+IHtcblx0XHRcdFx0cmV0dXJuIHtcblx0XHRcdFx0XHRvbGRQYXRoLFxuXHRcdFx0XHRcdG5ld1BhdGg6IG5ld1BhdGhzW2luZGV4XVxuXHRcdFx0XHR9O1xuXHRcdFx0fSlcblx0XHR9O1xuXHR9IGNhdGNoIChlcnJvcikge1xuXHRcdC8vIEEgY2Fub25pY2FsIHBhdGggY291bGRuJ3QgYmUgcmVzb2x2ZWQgKGJlY2F1c2UgYSBzaWJsaW5nIGRvZXNuJ3QgZXhpc3QpXG5cdFx0cmV0dXJuIHVuZGVmaW5lZDtcblx0fVxufVxuXG4vKipcbiAqIENyZWF0ZXMgYSBkcmFmdCBkb2N1bWVudCBmcm9tIGFuIGV4aXN0aW5nIGRvY3VtZW50LlxuICpcbiAqIFRoZSBmdW5jdGlvbiBzdXBwb3J0cyBzZXZlcmFsIGhvb2tzIGFzIHRoZXJlIGlzIGEgY2VydGFpbiBjb3Jlb2dyYXBoeSBkZWZpbmVkLlxuICpcbiAqIEBmdW5jdGlvblxuICogQG5hbWUgc2FwLmZlLmNvcmUuYWN0aW9ucy5kcmFmdCNjcmVhdGVEcmFmdEZyb21BY3RpdmVEb2N1bWVudFxuICogQG1lbWJlcm9mIHNhcC5mZS5jb3JlLmFjdGlvbnMuZHJhZnRcbiAqIEBzdGF0aWNcbiAqIEBwYXJhbSBvQ29udGV4dCBDb250ZXh0IG9mIHRoZSBhY3RpdmUgZG9jdW1lbnQgZm9yIHRoZSBuZXcgZHJhZnRcbiAqIEBwYXJhbSBvQXBwQ29tcG9uZW50IFRoZSBBcHBDb21wb25lbnRcbiAqIEBwYXJhbSBtUGFyYW1ldGVycyBUaGUgcGFyYW1ldGVyc1xuICogQHBhcmFtIFttUGFyYW1ldGVycy5vVmlld10gVGhlIHZpZXdcbiAqIEBwYXJhbSBbbVBhcmFtZXRlcnMuYlByZXNlcnZlQ2hhbmdlc10gUHJlc2VydmUgY2hhbmdlcyBvZiBhbiBleGlzdGluZyBkcmFmdCBvZiBhbm90aGVyIHVzZXJcbiAqIEBwYXJhbSBbbVBhcmFtZXRlcnMuZm5CZWZvcmVDcmVhdGVEcmFmdEZyb21BY3RpdmVEb2N1bWVudF0gQ2FsbGJhY2sgdGhhdCBhbGxvd3MgdmV0byBiZWZvcmUgY3JlYXRlIHJlcXVlc3QgaXMgZXhlY3V0ZWRcbiAqIEBwYXJhbSBbbVBhcmFtZXRlcnMuZm5BZnRlckNyZWF0ZURyYWZ0RnJvbUFjdGl2ZURvY3VtZW50XSBDYWxsYmFjayBmb3IgcG9zdHByb2Nlc3Npb25nIGFmdGVyIGRyYWZ0IGRvY3VtZW50IHdhcyBjcmVhdGVkXG4gKiBAcGFyYW0gW21QYXJhbWV0ZXJzLmZuV2hlbkRlY2lzaW9uVG9PdmVyd3JpdGVEb2N1bWVudElzUmVxdWlyZWRdIENhbGxiYWNrIGZvciBkZWNpZGluZyBvbiBvdmVyd3JpdGluZyBhbiB1bnNhdmVkIGNoYW5nZSBieSBhbm90aGVyIHVzZXJcbiAqIEByZXR1cm5zIFByb21pc2UgcmVzb2x2ZXMgd2l0aCB0aGUge0BsaW5rIHNhcC51aS5tb2RlbC5vZGF0YS52NC5Db250ZXh0IGNvbnRleHR9IG9mIHRoZSBuZXcgZHJhZnQgZG9jdW1lbnRcbiAqIEBwcml2YXRlXG4gKiBAdWk1LXJlc3RyaWN0ZWRcbiAqL1xuYXN5bmMgZnVuY3Rpb24gY3JlYXRlRHJhZnRGcm9tQWN0aXZlRG9jdW1lbnQoXG5cdG9Db250ZXh0OiBhbnksXG5cdG9BcHBDb21wb25lbnQ6IEFwcENvbXBvbmVudCxcblx0bVBhcmFtZXRlcnM6IHtcblx0XHRvVmlldzogVmlldztcblx0XHRiUHJlc2VydmVDaGFuZ2VzPzogYm9vbGVhbiB8IHVuZGVmaW5lZDtcblx0XHRmbkJlZm9yZUNyZWF0ZURyYWZ0RnJvbUFjdGl2ZURvY3VtZW50PzogYW55O1xuXHRcdGZuQWZ0ZXJDcmVhdGVEcmFmdEZyb21BY3RpdmVEb2N1bWVudD86IGFueTtcblx0XHRmbldoZW5EZWNpc2lvblRvT3ZlcndyaXRlRG9jdW1lbnRJc1JlcXVpcmVkPzogYW55O1xuXHR9XG4pOiBQcm9taXNlPFY0Q29udGV4dCB8IHVuZGVmaW5lZD4ge1xuXHRjb25zdCBtUGFyYW0gPSBtUGFyYW1ldGVycyB8fCB7fSxcblx0XHRsb2NhbEkxOG5SZWYgPSBDb3JlLmdldExpYnJhcnlSZXNvdXJjZUJ1bmRsZShcInNhcC5mZS5jb3JlXCIpLFxuXHRcdGJSdW5QcmVzZXJ2ZUNoYW5nZXNGbG93ID1cblx0XHRcdHR5cGVvZiBtUGFyYW0uYlByZXNlcnZlQ2hhbmdlcyA9PT0gXCJ1bmRlZmluZWRcIiB8fCAodHlwZW9mIG1QYXJhbS5iUHJlc2VydmVDaGFuZ2VzID09PSBcImJvb2xlYW5cIiAmJiBtUGFyYW0uYlByZXNlcnZlQ2hhbmdlcyk7IC8vZGVmYXVsdCB0cnVlXG5cblx0LyoqXG5cdCAqIE92ZXJ3cml0ZSBvciByZWplY3QgYmFzZWQgb24gZm5XaGVuRGVjaXNpb25Ub092ZXJ3cml0ZURvY3VtZW50SXNSZXF1aXJlZC5cblx0ICpcblx0ICogQHBhcmFtIGJPdmVyd3JpdGUgT3ZlcndyaXRlIHRoZSBjaGFuZ2Ugb3Igbm90XG5cdCAqIEByZXR1cm5zIFJlc29sdmVzIHdpdGggcmVzdWx0IG9mIHtAbGluayBzYXAuZmUuY29yZS5hY3Rpb25zI2V4ZWN1dGVEcmFmdEVkaXRBY3Rpb259XG5cdCAqL1xuXHRhc3luYyBmdW5jdGlvbiBvdmVyd3JpdGVPbkRlbWFuZChiT3ZlcndyaXRlOiBib29sZWFuKSB7XG5cdFx0aWYgKGJPdmVyd3JpdGUpIHtcblx0XHRcdC8vT3ZlcndyaXRlIGV4aXN0aW5nIGNoYW5nZXNcblx0XHRcdGNvbnN0IG9Nb2RlbCA9IG9Db250ZXh0LmdldE1vZGVsKCk7XG5cdFx0XHRjb25zdCBkcmFmdERhdGFDb250ZXh0ID0gb01vZGVsLmJpbmRDb250ZXh0KGAke29Db250ZXh0LmdldFBhdGgoKX0vRHJhZnRBZG1pbmlzdHJhdGl2ZURhdGFgKS5nZXRCb3VuZENvbnRleHQoKTtcblxuXHRcdFx0Y29uc3Qgb1Jlc291cmNlQnVuZGxlID0gYXdhaXQgKG1QYXJhbWV0ZXJzLm9WaWV3LmdldE1vZGVsKFwic2FwLmZlLmkxOG5cIikgYXMgUmVzb3VyY2VNb2RlbCkuZ2V0UmVzb3VyY2VCdW5kbGUoKTtcblx0XHRcdGNvbnN0IGRyYWZ0QWRtaW5EYXRhID0gYXdhaXQgZHJhZnREYXRhQ29udGV4dC5yZXF1ZXN0T2JqZWN0KCk7XG5cdFx0XHRpZiAoZHJhZnRBZG1pbkRhdGEpIHtcblx0XHRcdFx0Ly8gcmVtb3ZlIGFsbCB1bmJvdW5kIHRyYW5zaXRpb24gbWVzc2FnZXMgYXMgd2Ugc2hvdyBhIHNwZWNpYWwgZGlhbG9nXG5cdFx0XHRcdG1lc3NhZ2VIYW5kbGluZy5yZW1vdmVVbmJvdW5kVHJhbnNpdGlvbk1lc3NhZ2VzKCk7XG5cdFx0XHRcdGxldCBzSW5mbyA9IGRyYWZ0QWRtaW5EYXRhLkluUHJvY2Vzc0J5VXNlckRlc2NyaXB0aW9uIHx8IGRyYWZ0QWRtaW5EYXRhLkluUHJvY2Vzc0J5VXNlcjtcblx0XHRcdFx0Y29uc3Qgc0VudGl0eVNldCA9IChtUGFyYW1ldGVycy5vVmlldy5nZXRWaWV3RGF0YSgpIGFzIGFueSkuZW50aXR5U2V0O1xuXHRcdFx0XHRpZiAoc0luZm8pIHtcblx0XHRcdFx0XHRjb25zdCBzTG9ja2VkQnlVc2VyTXNnID0gQ29tbW9uVXRpbHMuZ2V0VHJhbnNsYXRlZFRleHQoXG5cdFx0XHRcdFx0XHRcIkNfRFJBRlRfT0JKRUNUX1BBR0VfRFJBRlRfTE9DS0VEX0JZX1VTRVJcIixcblx0XHRcdFx0XHRcdG9SZXNvdXJjZUJ1bmRsZSxcblx0XHRcdFx0XHRcdHNJbmZvLFxuXHRcdFx0XHRcdFx0c0VudGl0eVNldFxuXHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0TWVzc2FnZUJveC5lcnJvcihzTG9ja2VkQnlVc2VyTXNnKTtcblx0XHRcdFx0XHR0aHJvdyBuZXcgRXJyb3Ioc0xvY2tlZEJ5VXNlck1zZyk7XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0c0luZm8gPSBkcmFmdEFkbWluRGF0YS5DcmVhdGVkQnlVc2VyRGVzY3JpcHRpb24gfHwgZHJhZnRBZG1pbkRhdGEuQ3JlYXRlZEJ5VXNlcjtcblx0XHRcdFx0XHRjb25zdCBzVW5zYXZlZENoYW5nZXNNc2cgPSBDb21tb25VdGlscy5nZXRUcmFuc2xhdGVkVGV4dChcblx0XHRcdFx0XHRcdFwiQ19EUkFGVF9PQkpFQ1RfUEFHRV9EUkFGVF9VTlNBVkVEX0NIQU5HRVNcIixcblx0XHRcdFx0XHRcdG9SZXNvdXJjZUJ1bmRsZSxcblx0XHRcdFx0XHRcdHNJbmZvLFxuXHRcdFx0XHRcdFx0c0VudGl0eVNldFxuXHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0YXdhaXQgc2hvd01lc3NhZ2VCb3goc1Vuc2F2ZWRDaGFuZ2VzTXNnKTtcblx0XHRcdFx0XHRyZXR1cm4gZXhlY3V0ZURyYWZ0RWRpdEFjdGlvbihvQ29udGV4dCwgZmFsc2UsIG1QYXJhbWV0ZXJzLm9WaWV3KTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblx0XHR0aHJvdyBuZXcgRXJyb3IoYERyYWZ0IGNyZWF0aW9uIGFib3J0ZWQgZm9yIGRvY3VtZW50OiAke29Db250ZXh0LmdldFBhdGgoKX1gKTtcblx0fVxuXG5cdGZ1bmN0aW9uIHNob3dNZXNzYWdlQm94KHNVbnNhdmVkQ2hhbmdlc01zZzogYW55KSB7XG5cdFx0cmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uIChyZXNvbHZlOiAodmFsdWU6IGFueSkgPT4gdm9pZCwgcmVqZWN0OiAocmVhc29uPzogYW55KSA9PiB2b2lkKSB7XG5cdFx0XHRjb25zdCBvRGlhbG9nID0gbmV3IERpYWxvZyh7XG5cdFx0XHRcdHRpdGxlOiBsb2NhbEkxOG5SZWYuZ2V0VGV4dChcIkNfTUVTU0FHRV9IQU5ETElOR19TQVBGRV9FUlJPUl9NRVNTQUdFU19QQUdFX1RJVExFX1dBUk5JTkdcIiksXG5cdFx0XHRcdHN0YXRlOiBcIldhcm5pbmdcIixcblx0XHRcdFx0Y29udGVudDogbmV3IFRleHQoe1xuXHRcdFx0XHRcdHRleHQ6IHNVbnNhdmVkQ2hhbmdlc01zZ1xuXHRcdFx0XHR9KSxcblx0XHRcdFx0YmVnaW5CdXR0b246IG5ldyBCdXR0b24oe1xuXHRcdFx0XHRcdHRleHQ6IGxvY2FsSTE4blJlZi5nZXRUZXh0KFwiQ19DT01NT05fT0JKRUNUX1BBR0VfRURJVFwiKSxcblx0XHRcdFx0XHR0eXBlOiBcIkVtcGhhc2l6ZWRcIixcblx0XHRcdFx0XHRwcmVzczogZnVuY3Rpb24gKCkge1xuXHRcdFx0XHRcdFx0b0RpYWxvZy5jbG9zZSgpO1xuXHRcdFx0XHRcdFx0cmVzb2x2ZSh0cnVlKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0pLFxuXHRcdFx0XHRlbmRCdXR0b246IG5ldyBCdXR0b24oe1xuXHRcdFx0XHRcdHRleHQ6IGxvY2FsSTE4blJlZi5nZXRUZXh0KFwiQ19DT01NT05fT0JKRUNUX1BBR0VfQ0FOQ0VMXCIpLFxuXHRcdFx0XHRcdHByZXNzOiBmdW5jdGlvbiAoKSB7XG5cdFx0XHRcdFx0XHRvRGlhbG9nLmNsb3NlKCk7XG5cdFx0XHRcdFx0XHRyZWplY3QoYERyYWZ0IGNyZWF0aW9uIGFib3J0ZWQgZm9yIGRvY3VtZW50OiAke29Db250ZXh0LmdldFBhdGgoKX1gKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0pLFxuXHRcdFx0XHRhZnRlckNsb3NlOiBmdW5jdGlvbiAoKSB7XG5cdFx0XHRcdFx0b0RpYWxvZy5kZXN0cm95KCk7XG5cdFx0XHRcdH1cblx0XHRcdH0pO1xuXHRcdFx0b0RpYWxvZy5hZGRTdHlsZUNsYXNzKFwic2FwVWlDb250ZW50UGFkZGluZ1wiKTtcblx0XHRcdG9EaWFsb2cub3BlbigpO1xuXHRcdH0pO1xuXHR9XG5cblx0aWYgKCFvQ29udGV4dCkge1xuXHRcdHRocm93IG5ldyBFcnJvcihcIkJpbmRpbmcgY29udGV4dCB0byBhY3RpdmUgZG9jdW1lbnQgaXMgcmVxdWlyZWRcIik7XG5cdH1cblxuXHRjb25zdCBiRXhlY3V0ZSA9IG1QYXJhbS5mbkJlZm9yZUNyZWF0ZURyYWZ0RnJvbUFjdGl2ZURvY3VtZW50XG5cdFx0PyBtUGFyYW0uZm5CZWZvcmVDcmVhdGVEcmFmdEZyb21BY3RpdmVEb2N1bWVudChvQ29udGV4dCwgYlJ1blByZXNlcnZlQ2hhbmdlc0Zsb3cpXG5cdFx0OiB0cnVlO1xuXG5cdGlmICghYkV4ZWN1dGUpIHtcblx0XHR0aHJvdyBuZXcgRXJyb3IoYERyYWZ0IGNyZWF0aW9uIHdhcyBhYm9ydGVkIGJ5IGV4dGVuc2lvbiBmb3IgZG9jdW1lbnQ6ICR7b0NvbnRleHQuZ2V0UGF0aCgpfWApO1xuXHR9XG5cdHRyeSB7XG5cdFx0bGV0IG9EcmFmdENvbnRleHQ6IFY0Q29udGV4dCB8IHVuZGVmaW5lZDtcblx0XHR0cnkge1xuXHRcdFx0b0RyYWZ0Q29udGV4dCA9IGF3YWl0IGRyYWZ0LmV4ZWN1dGVEcmFmdEVkaXRBY3Rpb24ob0NvbnRleHQsIGJSdW5QcmVzZXJ2ZUNoYW5nZXNGbG93LCBtUGFyYW1ldGVycy5vVmlldyk7XG5cdFx0fSBjYXRjaCAob1Jlc3BvbnNlOiBhbnkpIHtcblx0XHRcdC8vT25seSBjYWxsIGJhY2sgaWYgZXJyb3IgNDIzXG5cdFx0XHRpZiAoYlJ1blByZXNlcnZlQ2hhbmdlc0Zsb3cgJiYgb1Jlc3BvbnNlLnN0YXR1cyA9PT0gNDIzKSB7XG5cdFx0XHRcdG1lc3NhZ2VIYW5kbGluZy5yZW1vdmVCb3VuZFRyYW5zaXRpb25NZXNzYWdlcygpO1xuXHRcdFx0XHRtZXNzYWdlSGFuZGxpbmcucmVtb3ZlVW5ib3VuZFRyYW5zaXRpb25NZXNzYWdlcygpO1xuXHRcdFx0XHRpZiAoQWN0aXZpdHlTeW5jLmlzQ29sbGFib3JhdGlvbkVuYWJsZWQobVBhcmFtZXRlcnMub1ZpZXcpKSB7XG5cdFx0XHRcdFx0Y29uc3Qgc2libGluZ0luZm8gPSBhd2FpdCBkcmFmdC5jb21wdXRlU2libGluZ0luZm9ybWF0aW9uKG9Db250ZXh0LCBvQ29udGV4dCk7XG5cdFx0XHRcdFx0aWYgKHNpYmxpbmdJbmZvPy50YXJnZXRDb250ZXh0KSB7XG5cdFx0XHRcdFx0XHRhd2FpdCBDb21tb25VdGlscy53YWl0Rm9yQ29udGV4dFJlcXVlc3RlZChzaWJsaW5nSW5mby50YXJnZXRDb250ZXh0KTtcblx0XHRcdFx0XHRcdHJldHVybiBzaWJsaW5nSW5mby50YXJnZXRDb250ZXh0O1xuXHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHR0aHJvdyBuZXcgRXJyb3Iob1Jlc3BvbnNlKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0b0RyYWZ0Q29udGV4dCA9IGF3YWl0IG92ZXJ3cml0ZU9uRGVtYW5kKFxuXHRcdFx0XHRcdFx0bVBhcmFtLmZuV2hlbkRlY2lzaW9uVG9PdmVyd3JpdGVEb2N1bWVudElzUmVxdWlyZWQgPyBtUGFyYW0uZm5XaGVuRGVjaXNpb25Ub092ZXJ3cml0ZURvY3VtZW50SXNSZXF1aXJlZCgpIDogdHJ1ZVxuXHRcdFx0XHRcdCk7XG5cdFx0XHRcdH1cblx0XHRcdH0gZWxzZSBpZiAoIShvUmVzcG9uc2UgJiYgb1Jlc3BvbnNlLmNhbmNlbGVkKSkge1xuXHRcdFx0XHR0aHJvdyBuZXcgRXJyb3Iob1Jlc3BvbnNlKTtcblx0XHRcdH1cblx0XHR9XG5cblx0XHRvRHJhZnRDb250ZXh0ID1cblx0XHRcdG9EcmFmdENvbnRleHQgJiYgbVBhcmFtLmZuQWZ0ZXJDcmVhdGVEcmFmdEZyb21BY3RpdmVEb2N1bWVudFxuXHRcdFx0XHQ/IG1QYXJhbS5mbkFmdGVyQ3JlYXRlRHJhZnRGcm9tQWN0aXZlRG9jdW1lbnQob0NvbnRleHQsIG9EcmFmdENvbnRleHQpXG5cdFx0XHRcdDogb0RyYWZ0Q29udGV4dDtcblxuXHRcdGlmIChvRHJhZnRDb250ZXh0KSB7XG5cdFx0XHRjb25zdCBzRWRpdEFjdGlvbk5hbWUgPSBnZXRBY3Rpb25OYW1lKG9EcmFmdENvbnRleHQsIGRyYWZ0T3BlcmF0aW9ucy5FRElUKTtcblx0XHRcdGNvbnN0IG9TaWRlRWZmZWN0cyA9IG9BcHBDb21wb25lbnQuZ2V0U2lkZUVmZmVjdHNTZXJ2aWNlKCkuZ2V0T0RhdGFBY3Rpb25TaWRlRWZmZWN0cyhzRWRpdEFjdGlvbk5hbWUsIG9EcmFmdENvbnRleHQpO1xuXHRcdFx0aWYgKG9TaWRlRWZmZWN0cz8udHJpZ2dlckFjdGlvbnM/Lmxlbmd0aCkge1xuXHRcdFx0XHRhd2FpdCBvQXBwQ29tcG9uZW50LmdldFNpZGVFZmZlY3RzU2VydmljZSgpLnJlcXVlc3RTaWRlRWZmZWN0c0Zvck9EYXRhQWN0aW9uKG9TaWRlRWZmZWN0cywgb0RyYWZ0Q29udGV4dCk7XG5cblx0XHRcdFx0cmV0dXJuIG9EcmFmdENvbnRleHQ7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRyZXR1cm4gb0RyYWZ0Q29udGV4dDtcblx0XHRcdH1cblx0XHR9IGVsc2Uge1xuXHRcdFx0cmV0dXJuIHVuZGVmaW5lZDtcblx0XHR9XG5cdH0gY2F0Y2ggKGV4YzogYW55KSB7XG5cdFx0dGhyb3cgZXhjO1xuXHR9XG59XG4vKipcbiAqIENyZWF0ZXMgYW4gYWN0aXZlIGRvY3VtZW50IGZyb20gYSBkcmFmdCBkb2N1bWVudC5cbiAqXG4gKiBUaGUgZnVuY3Rpb24gc3VwcG9ydHMgc2V2ZXJhbCBob29rcyBhcyB0aGVyZSBpcyBhIGNlcnRhaW4gY2hvcmVvZ3JhcGh5IGRlZmluZWQuXG4gKlxuICogQGZ1bmN0aW9uXG4gKiBAbmFtZSBzYXAuZmUuY29yZS5hY3Rpb25zLmRyYWZ0I2FjdGl2YXRlRG9jdW1lbnRcbiAqIEBtZW1iZXJvZiBzYXAuZmUuY29yZS5hY3Rpb25zLmRyYWZ0XG4gKiBAc3RhdGljXG4gKiBAcGFyYW0gb0NvbnRleHQgQ29udGV4dCBvZiB0aGUgYWN0aXZlIGRvY3VtZW50IGZvciB0aGUgbmV3IGRyYWZ0XG4gKiBAcGFyYW0gb0FwcENvbXBvbmVudCBUaGUgQXBwQ29tcG9uZW50XG4gKiBAcGFyYW0gbVBhcmFtZXRlcnMgVGhlIHBhcmFtZXRlcnNcbiAqIEBwYXJhbSBbbVBhcmFtZXRlcnMuZm5CZWZvcmVBY3RpdmF0ZURvY3VtZW50XSBDYWxsYmFjayB0aGF0IGFsbG93cyBhIHZldG8gYmVmb3JlIHRoZSAnQ3JlYXRlJyByZXF1ZXN0IGlzIGV4ZWN1dGVkXG4gKiBAcGFyYW0gW21QYXJhbWV0ZXJzLmZuQWZ0ZXJBY3RpdmF0ZURvY3VtZW50XSBDYWxsYmFjayBmb3IgcG9zdHByb2Nlc3NpbmcgYWZ0ZXIgZG9jdW1lbnQgd2FzIGFjdGl2YXRlZC5cbiAqIEBwYXJhbSBtZXNzYWdlSGFuZGxlciBUaGUgbWVzc2FnZSBoYW5kbGVyXG4gKiBAcmV0dXJucyBQcm9taXNlIHJlc29sdmVzIHdpdGggdGhlIHtAbGluayBzYXAudWkubW9kZWwub2RhdGEudjQuQ29udGV4dCBjb250ZXh0fSBvZiB0aGUgbmV3IGRyYWZ0IGRvY3VtZW50XG4gKiBAcHJpdmF0ZVxuICogQHVpNS1yZXN0cmljdGVkXG4gKi9cbmFzeW5jIGZ1bmN0aW9uIGFjdGl2YXRlRG9jdW1lbnQoXG5cdG9Db250ZXh0OiBWNENvbnRleHQsXG5cdG9BcHBDb21wb25lbnQ6IEFwcENvbXBvbmVudCxcblx0bVBhcmFtZXRlcnM6IHsgZm5CZWZvcmVBY3RpdmF0ZURvY3VtZW50PzogYW55OyBmbkFmdGVyQWN0aXZhdGVEb2N1bWVudD86IGFueSB9LFxuXHRtZXNzYWdlSGFuZGxlcj86IE1lc3NhZ2VIYW5kbGVyXG4pIHtcblx0Y29uc3QgbVBhcmFtID0gbVBhcmFtZXRlcnMgfHwge307XG5cdGlmICghb0NvbnRleHQpIHtcblx0XHR0aHJvdyBuZXcgRXJyb3IoXCJCaW5kaW5nIGNvbnRleHQgdG8gZHJhZnQgZG9jdW1lbnQgaXMgcmVxdWlyZWRcIik7XG5cdH1cblxuXHRjb25zdCBiRXhlY3V0ZSA9IG1QYXJhbS5mbkJlZm9yZUFjdGl2YXRlRG9jdW1lbnQgPyBhd2FpdCBtUGFyYW0uZm5CZWZvcmVBY3RpdmF0ZURvY3VtZW50KG9Db250ZXh0KSA6IHRydWU7XG5cdGlmICghYkV4ZWN1dGUpIHtcblx0XHR0aHJvdyBuZXcgRXJyb3IoYEFjdGl2YXRpb24gb2YgdGhlIGRvY3VtZW50IHdhcyBhYm9ydGVkIGJ5IGV4dGVuc2lvbiBmb3IgZG9jdW1lbnQ6ICR7b0NvbnRleHQuZ2V0UGF0aCgpfWApO1xuXHR9XG5cblx0bGV0IG9BY3RpdmVEb2N1bWVudENvbnRleHQ6IGFueTtcblx0aWYgKCFoYXNQcmVwYXJlQWN0aW9uKG9Db250ZXh0KSkge1xuXHRcdG9BY3RpdmVEb2N1bWVudENvbnRleHQgPSBhd2FpdCBleGVjdXRlRHJhZnRBY3RpdmF0aW9uQWN0aW9uKG9Db250ZXh0LCBvQXBwQ29tcG9uZW50KTtcblx0fSBlbHNlIHtcblx0XHQvKiBhY3RpdmF0aW9uIHJlcXVpcmVzIHByZXBhcmF0aW9uICovXG5cdFx0Y29uc3Qgc0JhdGNoR3JvdXAgPSBcImRyYWZ0XCI7XG5cdFx0Ly8gd2UgdXNlIHRoZSBzYW1lIGJhdGNoR3JvdXAgdG8gZm9yY2UgcHJlcGFyZSBhbmQgYWN0aXZhdGUgaW4gYSBzYW1lIGJhdGNoIGJ1dCB3aXRoIGRpZmZlcmVudCBjaGFuZ2VzZXRcblx0XHRsZXQgb1ByZXBhcmVQcm9taXNlID0gZHJhZnQuZXhlY3V0ZURyYWZ0UHJlcGFyYXRpb25BY3Rpb24ob0NvbnRleHQsIHNCYXRjaEdyb3VwLCBmYWxzZSk7XG5cdFx0b0NvbnRleHQuZ2V0TW9kZWwoKS5zdWJtaXRCYXRjaChzQmF0Y2hHcm91cCk7XG5cdFx0Y29uc3Qgb0FjdGl2YXRlUHJvbWlzZSA9IGRyYWZ0LmV4ZWN1dGVEcmFmdEFjdGl2YXRpb25BY3Rpb24ob0NvbnRleHQsIG9BcHBDb21wb25lbnQsIHNCYXRjaEdyb3VwKTtcblx0XHR0cnkge1xuXHRcdFx0Y29uc3QgdmFsdWVzID0gYXdhaXQgUHJvbWlzZS5hbGwoW29QcmVwYXJlUHJvbWlzZSwgb0FjdGl2YXRlUHJvbWlzZV0pO1xuXHRcdFx0b0FjdGl2ZURvY3VtZW50Q29udGV4dCA9IHZhbHVlc1sxXTtcblx0XHR9IGNhdGNoIChlcnIpIHtcblx0XHRcdC8vIEJDUCAyMjcwMDg0MDc1XG5cdFx0XHQvLyBpZiB0aGUgQWN0aXZhdGlvbiBmYWlscywgdGhlbiB0aGUgbWVzc2FnZXMgYXJlIHJldHJpZXZlZCBmcm9tIFBSRVBBUkFUSU9OIGFjdGlvblxuXHRcdFx0Y29uc3Qgc01lc3NhZ2VzUGF0aCA9IGdldE1lc3NhZ2VQYXRoRm9yUHJlcGFyZShvQ29udGV4dCk7XG5cdFx0XHRpZiAoc01lc3NhZ2VzUGF0aCkge1xuXHRcdFx0XHRvUHJlcGFyZVByb21pc2UgPSBkcmFmdC5leGVjdXRlRHJhZnRQcmVwYXJhdGlvbkFjdGlvbihvQ29udGV4dCwgc0JhdGNoR3JvdXAsIHRydWUpO1xuXHRcdFx0XHRvQ29udGV4dC5nZXRNb2RlbCgpLnN1Ym1pdEJhdGNoKHNCYXRjaEdyb3VwKTtcblx0XHRcdFx0YXdhaXQgb1ByZXBhcmVQcm9taXNlO1xuXHRcdFx0XHRjb25zdCBkYXRhID0gYXdhaXQgb0NvbnRleHQucmVxdWVzdE9iamVjdCgpO1xuXHRcdFx0XHRpZiAoZGF0YVtzTWVzc2FnZXNQYXRoXS5sZW5ndGggPiAwKSB7XG5cdFx0XHRcdFx0Ly9pZiBtZXNzYWdlcyBhcmUgYXZhaWxhYmxlIGZyb20gdGhlIFBSRVBBUkFUSU9OIGFjdGlvbiwgdGhlbiBwcmV2aW91cyB0cmFuc2l0aW9uIG1lc3NhZ2VzIGFyZSByZW1vdmVkXG5cdFx0XHRcdFx0bWVzc2FnZUhhbmRsZXI/LnJlbW92ZVRyYW5zaXRpb25NZXNzYWdlcyhmYWxzZSwgZmFsc2UsIG9Db250ZXh0LmdldFBhdGgoKSk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHRcdHRocm93IGVycjtcblx0XHR9XG5cdH1cblx0cmV0dXJuIG1QYXJhbS5mbkFmdGVyQWN0aXZhdGVEb2N1bWVudCA/IG1QYXJhbS5mbkFmdGVyQWN0aXZhdGVEb2N1bWVudChvQ29udGV4dCwgb0FjdGl2ZURvY3VtZW50Q29udGV4dCkgOiBvQWN0aXZlRG9jdW1lbnRDb250ZXh0O1xufVxuXG4vKipcbiAqIEhUVFAgUE9TVCBjYWxsIHdoZW4gRHJhZnRBY3Rpb24gaXMgcHJlc2VudCBmb3IgRHJhZnQgRGVsZXRlOyBIVFRQIERFTEVURSBjYWxsIHdoZW4gdGhlcmUgaXMgbm8gRHJhZnRBY3Rpb25cbiAqIGFuZCBBY3RpdmUgSW5zdGFuY2UgYWx3YXlzIHVzZXMgREVMRVRFLlxuICpcbiAqIEBmdW5jdGlvblxuICogQG5hbWUgc2FwLmZlLmNvcmUuYWN0aW9ucy5kcmFmdCNkZWxldGVEcmFmdFxuICogQG1lbWJlcm9mIHNhcC5mZS5jb3JlLmFjdGlvbnMuZHJhZnRcbiAqIEBzdGF0aWNcbiAqIEBwYXJhbSBvQ29udGV4dCBDb250ZXh0IG9mIHRoZSBkb2N1bWVudCB0byBiZSBkaXNjYXJkZWRcbiAqIEBwYXJhbSBvQXBwQ29tcG9uZW50IENvbnRleHQgb2YgdGhlIGRvY3VtZW50IHRvIGJlIGRpc2NhcmRlZFxuICogQHBhcmFtIGJFbmFibGVTdHJpY3RIYW5kbGluZ1xuICogQHByaXZhdGVcbiAqIEByZXR1cm5zIEEgUHJvbWlzZSByZXNvbHZlZCB3aGVuIHRoZSBjb250ZXh0IGlzIGRlbGV0ZWRcbiAqIEB1aTUtcmVzdHJpY3RlZFxuICovXG5mdW5jdGlvbiBkZWxldGVEcmFmdChvQ29udGV4dDogVjRDb250ZXh0LCBvQXBwQ29tcG9uZW50PzogYW55LCBiRW5hYmxlU3RyaWN0SGFuZGxpbmc/OiBib29sZWFuKTogUHJvbWlzZTxib29sZWFuPiB7XG5cdGNvbnN0IHNEaXNjYXJkQWN0aW9uID0gZ2V0QWN0aW9uTmFtZShvQ29udGV4dCwgZHJhZnRPcGVyYXRpb25zLkRJU0NBUkQpLFxuXHRcdGJJc0FjdGl2ZUVudGl0eSA9IG9Db250ZXh0LmdldE9iamVjdCgpLklzQWN0aXZlRW50aXR5O1xuXG5cdGlmIChiSXNBY3RpdmVFbnRpdHkgfHwgKCFiSXNBY3RpdmVFbnRpdHkgJiYgIXNEaXNjYXJkQWN0aW9uKSkge1xuXHRcdC8vVXNlIERlbGV0ZSBpbiBjYXNlIG9mIGFjdGl2ZSBlbnRpdHkgYW5kIG5vIGRpc2NhcmQgYWN0aW9uIGF2YWlsYWJsZSBmb3IgZHJhZnRcblx0XHRpZiAob0NvbnRleHQuaGFzUGVuZGluZ0NoYW5nZXMoKSkge1xuXHRcdFx0cmV0dXJuIG9Db250ZXh0XG5cdFx0XHRcdC5nZXRCaW5kaW5nKClcblx0XHRcdFx0LnJlc2V0Q2hhbmdlcygpXG5cdFx0XHRcdC50aGVuKGZ1bmN0aW9uICgpIHtcblx0XHRcdFx0XHRyZXR1cm4gb0NvbnRleHQuZGVsZXRlKCk7XG5cdFx0XHRcdH0pXG5cdFx0XHRcdC5jYXRjaChmdW5jdGlvbiAoZXJyb3I6IGFueSkge1xuXHRcdFx0XHRcdHJldHVybiBQcm9taXNlLnJlamVjdChlcnJvcik7XG5cdFx0XHRcdH0pO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRyZXR1cm4gb0NvbnRleHQuZGVsZXRlKCk7XG5cdFx0fVxuXHR9IGVsc2Uge1xuXHRcdC8vVXNlIERpc2NhcmQgUG9zdCBBY3Rpb24gaWYgaXQgaXMgYSBkcmFmdCBlbnRpdHkgYW5kIGRpc2NhcmQgYWN0aW9uIGV4aXN0c1xuXHRcdHJldHVybiBleGVjdXRlRHJhZnREaXNjYXJkQWN0aW9uKG9Db250ZXh0LCBvQXBwQ29tcG9uZW50LCBiRW5hYmxlU3RyaWN0SGFuZGxpbmcpO1xuXHR9XG59XG5cbmNvbnN0IGRyYWZ0ID0ge1xuXHRjcmVhdGVEcmFmdEZyb21BY3RpdmVEb2N1bWVudDogY3JlYXRlRHJhZnRGcm9tQWN0aXZlRG9jdW1lbnQsXG5cdGFjdGl2YXRlRG9jdW1lbnQ6IGFjdGl2YXRlRG9jdW1lbnQsXG5cdGRlbGV0ZURyYWZ0OiBkZWxldGVEcmFmdCxcblx0ZXhlY3V0ZURyYWZ0RWRpdEFjdGlvbjogZXhlY3V0ZURyYWZ0RWRpdEFjdGlvbixcblx0ZXhlY3V0ZURyYWZ0VmFsaWRhdGlvbjogZXhlY3V0ZURyYWZ0VmFsaWRhdGlvbixcblx0ZXhlY3V0ZURyYWZ0UHJlcGFyYXRpb25BY3Rpb246IGV4ZWN1dGVEcmFmdFByZXBhcmF0aW9uQWN0aW9uLFxuXHRleGVjdXRlRHJhZnRBY3RpdmF0aW9uQWN0aW9uOiBleGVjdXRlRHJhZnRBY3RpdmF0aW9uQWN0aW9uLFxuXHRoYXNQcmVwYXJlQWN0aW9uOiBoYXNQcmVwYXJlQWN0aW9uLFxuXHRnZXRNZXNzYWdlc1BhdGg6IGdldE1lc3NhZ2VzUGF0aCxcblx0Y29tcHV0ZVNpYmxpbmdJbmZvcm1hdGlvbjogY29tcHV0ZVNpYmxpbmdJbmZvcm1hdGlvbixcblx0cHJvY2Vzc0RhdGFMb3NzT3JEcmFmdERpc2NhcmRDb25maXJtYXRpb246IGRyYWZ0RGF0YUxvc3NQb3B1cC5wcm9jZXNzRGF0YUxvc3NPckRyYWZ0RGlzY2FyZENvbmZpcm1hdGlvbixcblx0c2lsZW50bHlLZWVwRHJhZnRPbkZvcndhcmROYXZpZ2F0aW9uOiBkcmFmdERhdGFMb3NzUG9wdXAuc2lsZW50bHlLZWVwRHJhZnRPbkZvcndhcmROYXZpZ2F0aW9uLFxuXHRjcmVhdGVPcGVyYXRpb246IGNyZWF0ZU9wZXJhdGlvbixcblx0ZXhlY3V0ZURyYWZ0RGlzY2FyZEFjdGlvbjogZXhlY3V0ZURyYWZ0RGlzY2FyZEFjdGlvbixcblx0TmF2aWdhdGlvblR5cGU6IGRyYWZ0RGF0YUxvc3NQb3B1cC5OYXZpZ2F0aW9uVHlwZSxcblx0Z2V0QWN0aW9uTmFtZTogZ2V0QWN0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
5
+ sap.ui.define(["sap/base/Log","sap/fe/core/CommonUtils","sap/fe/core/controllerextensions/messageHandler/messageHandling","sap/m/Button","sap/m/Dialog","sap/m/MessageBox","sap/m/Text","sap/ui/core/Core","../../operationsHelper","./draftDataLossPopup"],function(e,t,n,o,r,a,i,s,c,u){"use strict";const d={EDIT:"EditAction",ACTIVATION:"ActivationAction",DISCARD:"DiscardAction",PREPARE:"PreparationAction"};function l(e,t){const n=e.getModel(),o=n.getMetaModel(),r=o.getMetaPath(e.getPath());return o.getObject(`${r}@com.sap.vocabularies.Common.v1.DraftRoot/${t}`)}function f(e,t,n){const o=l(e,t);return e.getModel().bindContext(`${o}(...)`,e,n)}function g(e,t){const n=e.getModel(),o=n.getMetaModel(),r=o.getMetaPath(e.getPath());return o.getObject(`${r}@com.sap.vocabularies.Common.v1.DraftRoot/${t}/$ReturnType`)}function h(e){return!!l(e,d.PREPARE)}async function E(e,n,o){if(e.getProperty("IsActiveEntity")){const r={$$inheritExpandSelect:true};const a=f(e,d.EDIT,r);a.setParameter("PreserveChanges",n);const i="direct";const s=await o.getModel("sap.fe.i18n").getResourceBundle();const u=t.getTranslatedText("C_COMMON_OBJECT_PAGE_EDIT",s);const l=a.execute(i,undefined,c.fnOnStrictHandlingFailed.bind(y,i,{label:u,model:e.getModel()},s,null,null,null,undefined,undefined),e.getBinding().isA("sap.ui.model.odata.v4.ODataListBinding"));a.getModel().submitBatch(i);return await l}else{throw new Error("You cannot edit this draft document")}}async function m(t,n,o){if(y.getMessagesPath(t)&&y.hasPrepareAction(t)){try{const e=await y.executeDraftPreparationAction(t,t.getUpdateGroupId(),true,o);if(e&&!g(t,d.PREPARE)){D(t,n.getSideEffectsService())}return e}catch(t){e.error("Error while requesting messages",t)}}return undefined}async function p(n,o,r){const a=h(n);const i=a;if(!n.getProperty("IsActiveEntity")){const s=f(n,d.ACTIVATION,{$$inheritExpandSelect:true});const u=await o.getModel("sap.fe.i18n").getResourceBundle();const g=t.getTranslatedText("C_OP_OBJECT_PAGE_SAVE",u);try{return await s.execute(r,i,r?c.fnOnStrictHandlingFailed.bind(y,r,{label:g,model:n.getModel()},u,null,null,null,undefined,undefined):undefined,n.getBinding().isA("sap.ui.model.odata.v4.ODataListBinding"))}catch(t){if(a){const t=l(n,d.PREPARE),r=o.getSideEffectsService(),a=r.getODataActionSideEffects(t,n),i=a&&a.pathExpressions;if(i&&i.length>0){try{await r.requestSideEffects(i,n)}catch(t){e.error("Error while requesting side effects",t)}}else{try{await D(n,r)}catch(t){e.error("Error while requesting messages",t)}}}throw t}}else{throw new Error("The activation action cannot be executed on an active document")}}function A(e){const t=e.getModel().getMetaModel();const n=t.getMetaPath(e.getPath());const o=g(e,d.PREPARE);return!!o?t.getObject(`${n}/@${"com.sap.vocabularies.Common.v1.Messages"}/$Path`):null}function P(t,n,o,r){if(!t.getProperty("IsActiveEntity")){const a=o?A(t):null;const i=f(t,d.PREPARE,a?{$select:a}:null);i.setParameter("SideEffectsQualifier","");const s=n||i.getGroupId();return i.execute(s,r).then(function(){return i}).catch(function(t){e.error("Error while executing the operation",t)})}else{throw new Error("The preparation action cannot be executed on an active document")}}function w(e){const t=e.getModel(),n=t.getMetaModel(),o=n.getMetaPath(e.getPath());return n.getObject(`${o}/@com.sap.vocabularies.Common.v1.Messages/$Path`)}function D(e,t){const n=y.getMessagesPath(e);if(n){return t.requestSideEffects([{$PropertyPath:n}],e)}return Promise.resolve()}async function C(e,n,o){if(!e.getProperty("IsActiveEntity")){const r=y.createOperation(e,d.DISCARD);const a=n&&await n.getModel("sap.fe.i18n").getResourceBundle()||null;const i="direct";const s=t.getTranslatedText("C_TRANSACTION_HELPER_DRAFT_DISCARD_BUTTON",a);const u=!o?r.execute(i):r.execute(i,undefined,c.fnOnStrictHandlingFailed.bind(y,i,{label:s,model:e.getModel()},a,null,null,null,undefined,undefined),false);e.getModel().submitBatch(i);return u}else{throw new Error("The discard action cannot be executed on an active document")}}async function x(t,n){if(!n.getPath().startsWith(t.getPath())){e.error("Cannot compute rightmost sibling context");throw new Error("Cannot compute rightmost sibling context")}const o=t.getModel();try{const e=n.getPath().replace(t.getPath(),"");const r=e?e.substring(1).split("/"):[];r.unshift(t.getPath().substring(1));const a=[];const i=[];let s="";const c=r.map(e=>{s+=`/${e}`;a.unshift(s);if(s.endsWith(")")){const e=o.bindContext(`${s}/SiblingEntity`).getBoundContext();return e.requestCanonicalPath()}else{return Promise.resolve(undefined)}});const u=await Promise.all(c);let d="";u.forEach((e,t)=>{if(t!==0){if(r[t].endsWith(")")){const n=r[t].replace(/\(.*$/,"");const o=e.replace(/.*\(/,"(");d+=`/${n}${o}`}else{d+=`/${r[t]}`}}else{d=e}i.unshift(d)});return{targetContext:o.bindContext(d).getBoundContext(),pathMapping:a.map((e,t)=>({oldPath:e,newPath:i[t]}))}}catch(e){return undefined}}async function v(e,o,r){const i=r||{},s=typeof i.bPreserveChanges==="undefined"||typeof i.bPreserveChanges==="boolean"&&i.bPreserveChanges;async function c(){const o=e.getModel();const i=o.bindContext(`${e.getPath()}/DraftAdministrativeData`).getBoundContext();const s=await r.oView.getModel("sap.fe.i18n").getResourceBundle();const c=await i.requestObject();if(c){n.removeUnboundTransitionMessages();let o=c.InProcessByUserDescription||c.InProcessByUser;const i=r.oView.getViewData().entitySet;if(o){const e=t.getTranslatedText("C_DRAFT_OBJECT_PAGE_DRAFT_LOCKED_BY_USER",s,o,i);a.error(e);throw new Error(e)}else{o=c.CreatedByUserDescription||c.CreatedByUser;const n=t.getTranslatedText("C_DRAFT_OBJECT_PAGE_DRAFT_UNSAVED_CHANGES",s,o,i);await y.showEditConfirmationMessageBox(n,e);return y.executeDraftEditAction(e,false,r.oView)}}throw new Error(`Draft creation aborted for document: ${e.getPath()}`)}if(!e){throw new Error("Binding context to active document is required")}try{let a;try{a=await y.executeDraftEditAction(e,s,r.oView)}catch(o){if(o.status===409||o.status===412||o.status===423){n.removeBoundTransitionMessages();n.removeUnboundTransitionMessages();const o=await y.computeSiblingInformation(e,e);if(o!==null&&o!==void 0&&o.targetContext){await t.waitForContextRequested(o.targetContext);return o.targetContext}else{a=await c()}}else if(!(o&&o.canceled)){throw new Error(o)}}if(a){var u;const e=y.getActionName(a,d.EDIT);const t=o.getSideEffectsService().getODataActionSideEffects(e,a);if(t!==null&&t!==void 0&&(u=t.triggerActions)!==null&&u!==void 0&&u.length){await o.getSideEffectsService().requestSideEffectsForODataAction(t,a);return a}else{return a}}else{return undefined}}catch(e){throw e}}async function M(e,t,n,o){const r=n||{};if(!e){throw new Error("Binding context to draft document is required")}const a=r.fnBeforeActivateDocument?await r.fnBeforeActivateDocument(e):true;if(!a){throw new Error(`Activation of the document was aborted by extension for document: ${e.getPath()}`)}let i;if(!h(e)){i=await p(e,t)}else{const n="draft";let r=y.executeDraftPreparationAction(e,n,false);e.getModel().submitBatch(n);const a=y.executeDraftActivationAction(e,t,n);try{const e=await Promise.all([r,a]);i=e[1]}catch(t){const a=A(e);if(a){r=y.executeDraftPreparationAction(e,n,true);e.getModel().submitBatch(n);await r;const t=await e.requestObject();if(t[a].length>0){o===null||o===void 0?void 0:o.removeTransitionMessages(false,false,e.getPath())}}throw t}}return r.fnAfterActivateDocument?r.fnAfterActivateDocument(e,i):i}function T(e,t){const n=s.getLibraryResourceBundle("sap.fe.core");return new Promise(function(a,s){const c=new r({title:n.getText("C_MESSAGE_HANDLING_SAPFE_ERROR_MESSAGES_PAGE_TITLE_WARNING"),state:"Warning",content:new i({text:e}),beginButton:new o({text:n.getText("C_COMMON_OBJECT_PAGE_EDIT"),type:"Emphasized",press:function(){c.close();a(true)}}),endButton:new o({text:n.getText("C_COMMON_OBJECT_PAGE_CANCEL"),press:function(){c.close();s(`Draft creation aborted for document: ${t.getPath()}`)}}),afterClose:function(){c.destroy()}});c.addStyleClass("sapUiContentPadding");c.open()})}function b(e,t,n){const o=l(e,d.DISCARD),r=e.getObject().IsActiveEntity;if(r||!r&&!o){if(e.hasPendingChanges()){return e.getBinding().resetChanges().then(function(){return e.delete()}).catch(function(e){return Promise.reject(e)})}else{return e.delete()}}else{return C(e,t,n)}}const y={createDraftFromActiveDocument:v,activateDocument:M,deleteDraft:b,executeDraftEditAction:E,executeDraftValidation:m,executeDraftPreparationAction:P,executeDraftActivationAction:p,hasPrepareAction:h,getMessagesPath:w,computeSiblingInformation:x,processDataLossOrDraftDiscardConfirmation:u.processDataLossOrDraftDiscardConfirmation,silentlyKeepDraftOnForwardNavigation:u.silentlyKeepDraftOnForwardNavigation,createOperation:f,executeDraftDiscardAction:C,NavigationType:u.NavigationType,getActionName:l,showEditConfirmationMessageBox:T};return y},false);
6
+ //# sourceMappingURL=draft.js.map