@sap/open.fe 1.99.0 → 1.100.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 (969) hide show
  1. package/package.json +1 -1
  2. package/packages/sap.fe.common/src/sap/fe/common/.library +1 -1
  3. package/packages/sap.fe.common/src/sap/fe/common/.theming +1 -1
  4. package/packages/sap.fe.common/src/sap/fe/common/MessageButton-dbg.js +1748 -1813
  5. package/packages/sap.fe.common/src/sap/fe/common/MessageButton.js +2 -3
  6. package/packages/sap.fe.common/src/sap/fe/common/MessageButton.ts +1801 -0
  7. package/packages/sap.fe.common/src/sap/fe/common/MessageFilter-dbg.js +77 -32
  8. package/packages/sap.fe.common/src/sap/fe/common/MessageFilter.js +2 -3
  9. package/packages/sap.fe.common/src/sap/fe/common/MessageFilter.ts +26 -0
  10. package/packages/sap.fe.common/src/sap/fe/common/MessagePopover-dbg.js +43 -53
  11. package/packages/sap.fe.common/src/sap/fe/common/MessagePopover.js +2 -3
  12. package/packages/sap.fe.common/src/sap/fe/common/MessagePopover.ts +39 -0
  13. package/packages/sap.fe.common/src/sap/fe/common/library-dbg.js +31 -38
  14. package/packages/sap.fe.common/src/sap/fe/common/library-h2-preload.js +8 -9
  15. package/packages/sap.fe.common/src/sap/fe/common/library-h2-preload.js.map +3 -3
  16. package/packages/sap.fe.common/src/sap/fe/common/library-preload.js +23 -71
  17. package/packages/sap.fe.common/src/sap/fe/common/library-preload.js.map +4 -4
  18. package/packages/sap.fe.common/src/sap/fe/common/library.js +4 -5
  19. package/packages/sap.fe.common/src/sap/fe/common/library.ts +35 -0
  20. package/packages/sap.fe.common/src/sap/fe/common/manifest.json +3 -3
  21. package/packages/sap.fe.common/src/sap/fe/common/resources.json +54 -32
  22. package/packages/sap.fe.common/test/sap/fe/common/designtime/api.json +1 -1
  23. package/packages/sap.fe.common/test/sap/fe/common/designtime/apiref/api.json +1 -1
  24. package/packages/sap.fe.common/test/sap/fe/common/designtime/codeassistance/Library.jsmeta.json +1 -1
  25. package/packages/sap.fe.common/test/sap/fe/common/designtime/codeassistance/Library.xmlmeta.json +1 -1
  26. package/packages/sap.fe.core/src/sap/fe/core/.library +1 -1
  27. package/packages/sap.fe.core/src/sap/fe/core/.theming +1 -1
  28. package/packages/sap.fe.core/src/sap/fe/core/AnnotationHelper-dbg.js +1 -69
  29. package/packages/sap.fe.core/src/sap/fe/core/AnnotationHelper.js +1 -1
  30. package/packages/sap.fe.core/src/sap/fe/core/AnnotationHelper.ts +0 -70
  31. package/packages/sap.fe.core/src/sap/fe/core/AppComponent-dbg.js +388 -399
  32. package/packages/sap.fe.core/src/sap/fe/core/AppComponent.js +2 -3
  33. package/packages/sap.fe.core/src/sap/fe/core/AppComponent.ts +403 -0
  34. package/packages/sap.fe.core/src/sap/fe/core/AppStateHandler-dbg.js +127 -158
  35. package/packages/sap.fe.core/src/sap/fe/core/AppStateHandler.js +1 -1
  36. package/packages/sap.fe.core/src/sap/fe/core/BaseController-dbg.js +82 -58
  37. package/packages/sap.fe.core/src/sap/fe/core/BaseController.js +2 -3
  38. package/packages/sap.fe.core/src/sap/fe/core/BaseController.ts +68 -0
  39. package/packages/sap.fe.core/src/sap/fe/core/CommonUtils-dbg.js +111 -20
  40. package/packages/sap.fe.core/src/sap/fe/core/CommonUtils.js +1 -1
  41. package/packages/sap.fe.core/src/sap/fe/core/CommonUtils.ts +131 -32
  42. package/packages/sap.fe.core/src/sap/fe/core/ExtensionAPI-dbg.js +278 -274
  43. package/packages/sap.fe.core/src/sap/fe/core/ExtensionAPI.js +2 -3
  44. package/packages/sap.fe.core/src/sap/fe/core/ExtensionAPI.ts +250 -0
  45. package/packages/sap.fe.core/src/sap/fe/core/PageController-dbg.js +157 -29
  46. package/packages/sap.fe.core/src/sap/fe/core/PageController.js +1 -1
  47. package/packages/sap.fe.core/src/sap/fe/core/PageController.ts +60 -32
  48. package/packages/sap.fe.core/src/sap/fe/core/RouterProxy-dbg.js +694 -756
  49. package/packages/sap.fe.core/src/sap/fe/core/RouterProxy.js +1 -1
  50. package/packages/sap.fe.core/src/sap/fe/core/RouterProxy.ts +11 -9
  51. package/packages/sap.fe.core/src/sap/fe/core/Synchronization-dbg.js +21 -31
  52. package/packages/sap.fe.core/src/sap/fe/core/Synchronization.js +1 -1
  53. package/packages/sap.fe.core/src/sap/fe/core/TemplateComponent-dbg.js +1 -1
  54. package/packages/sap.fe.core/src/sap/fe/core/TemplateComponent.ts +10 -3
  55. package/packages/sap.fe.core/src/sap/fe/core/TemplateModel-dbg.js +20 -38
  56. package/packages/sap.fe.core/src/sap/fe/core/TemplateModel.js +1 -1
  57. package/packages/sap.fe.core/src/sap/fe/core/TemplateModel.ts +1 -1
  58. package/packages/sap.fe.core/src/sap/fe/core/TransactionHelper-dbg.js +1354 -1370
  59. package/packages/sap.fe.core/src/sap/fe/core/TransactionHelper.js +1 -1
  60. package/packages/sap.fe.core/src/sap/fe/core/TransactionHelper.ts +33 -22
  61. package/packages/sap.fe.core/src/sap/fe/core/actions/collaboration/ActivitySync-dbg.js +392 -0
  62. package/packages/sap.fe.core/src/sap/fe/core/actions/collaboration/ActivitySync.js +5 -0
  63. package/packages/sap.fe.core/src/sap/fe/core/actions/collaboration/ActivitySync.ts +355 -0
  64. package/packages/sap.fe.core/src/sap/fe/core/actions/collaboration/CollaborationCommon-dbg.js +136 -0
  65. package/packages/sap.fe.core/src/sap/fe/core/actions/collaboration/CollaborationCommon.js +5 -0
  66. package/packages/sap.fe.core/src/sap/fe/core/actions/collaboration/CollaborationCommon.ts +119 -0
  67. package/packages/sap.fe.core/src/sap/fe/core/actions/collaboration/Manage-dbg.js +262 -0
  68. package/packages/sap.fe.core/src/sap/fe/core/actions/collaboration/Manage.js +5 -0
  69. package/packages/sap.fe.core/src/sap/fe/core/actions/collaboration/Manage.ts +244 -0
  70. package/packages/sap.fe.core/src/sap/fe/core/actions/collaboration/ManageDialog.fragment.xml +103 -0
  71. package/packages/sap.fe.core/src/sap/fe/core/actions/collaboration/UserDetails.fragment.xml +13 -0
  72. package/packages/sap.fe.core/src/sap/fe/core/actions/draft-dbg.js +30 -68
  73. package/packages/sap.fe.core/src/sap/fe/core/actions/draft.js +1 -1
  74. package/packages/sap.fe.core/src/sap/fe/core/actions/draft.ts +44 -71
  75. package/packages/sap.fe.core/src/sap/fe/core/actions/messageHandling-dbg.js +55 -36
  76. package/packages/sap.fe.core/src/sap/fe/core/actions/messageHandling.js +1 -1
  77. package/packages/sap.fe.core/src/sap/fe/core/actions/messageHandling.ts +66 -46
  78. package/packages/sap.fe.core/src/sap/fe/core/actions/operations-dbg.js +34 -15
  79. package/packages/sap.fe.core/src/sap/fe/core/actions/operations.js +1 -1
  80. package/packages/sap.fe.core/src/sap/fe/core/actions/operations.ts +48 -18
  81. package/packages/sap.fe.core/src/sap/fe/core/actions/sticky-dbg.js +17 -4
  82. package/packages/sap.fe.core/src/sap/fe/core/actions/sticky.js +1 -1
  83. package/packages/sap.fe.core/src/sap/fe/core/actions/sticky.ts +21 -4
  84. package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/ControllerExtensionMetadata-dbg.js +69 -66
  85. package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/ControllerExtensionMetadata.js +2 -3
  86. package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/ControllerExtensionMetadata.ts +65 -0
  87. package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/EditFlow-dbg.js +1593 -1669
  88. package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/EditFlow.js +2 -3
  89. package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/EditFlow.ts +1672 -0
  90. package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/IntentBasedNavigation-dbg.js +79 -54
  91. package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/IntentBasedNavigation.js +2 -3
  92. package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/IntentBasedNavigation.ts +61 -0
  93. package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/InternalEditFlow-dbg.js +718 -779
  94. package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/InternalEditFlow.js +2 -3
  95. package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/InternalEditFlow.ts +783 -0
  96. package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/InternalIntentBasedNavigation-dbg.js +796 -816
  97. package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/InternalIntentBasedNavigation.js +2 -3
  98. package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/InternalIntentBasedNavigation.ts +803 -0
  99. package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/InternalRouting-dbg.js +1004 -1005
  100. package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/InternalRouting.js +2 -3
  101. package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/InternalRouting.ts +978 -0
  102. package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/KPIManagement-dbg.js +487 -521
  103. package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/KPIManagement.js +1 -1
  104. package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/KPIManagement.ts +2 -2
  105. package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/MassEdit-dbg.js +141 -169
  106. package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/MassEdit.js +2 -3
  107. package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/MassEdit.ts +156 -0
  108. package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/MessageHandler-dbg.js +233 -244
  109. package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/MessageHandler.js +2 -3
  110. package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/MessageHandler.ts +225 -0
  111. package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/PageReady-dbg.js +301 -336
  112. package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/PageReady.js +1 -1
  113. package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/PageReady.ts +12 -10
  114. package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/Paginator-dbg.js +188 -175
  115. package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/Paginator.js +2 -3
  116. package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/Paginator.ts +163 -0
  117. package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/Placeholder-dbg.js +157 -149
  118. package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/Placeholder.js +2 -3
  119. package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/Placeholder.ts +151 -0
  120. package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/Routing-dbg.js +144 -125
  121. package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/Routing.js +2 -3
  122. package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/Routing.ts +132 -0
  123. package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/RoutingListener-dbg.js +7 -6
  124. package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/RoutingListener.js +2 -3
  125. package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/RoutingListener.ts +3 -0
  126. package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/Share-dbg.js +230 -268
  127. package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/Share.js +2 -3
  128. package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/Share.ts +231 -0
  129. package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/SideEffects-dbg.js +592 -633
  130. package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/SideEffects.js +1 -1
  131. package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/SideEffects.ts +8 -7
  132. package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/ViewState-dbg.js +788 -806
  133. package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/ViewState.js +2 -3
  134. package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/ViewState.ts +805 -0
  135. package/packages/sap.fe.core/src/sap/fe/core/controls/ActionParameterDialog.fragment.xml +2 -2
  136. package/packages/sap.fe.core/src/sap/fe/core/controls/ActionPartial.fragment.xml +2 -2
  137. package/packages/sap.fe.core/src/sap/fe/core/controls/CommandExecution-dbg.js +67 -66
  138. package/packages/sap.fe.core/src/sap/fe/core/controls/CommandExecution.js +2 -3
  139. package/packages/sap.fe.core/src/sap/fe/core/controls/CommandExecution.ts +72 -0
  140. package/packages/sap.fe.core/src/sap/fe/core/controls/ConditionalWrapper-dbg.js +90 -75
  141. package/packages/sap.fe.core/src/sap/fe/core/controls/ConditionalWrapper.js +2 -3
  142. package/packages/sap.fe.core/src/sap/fe/core/controls/ConditionalWrapper.ts +83 -0
  143. package/packages/sap.fe.core/src/sap/fe/core/controls/CustomQuickViewPage-dbg.js +130 -125
  144. package/packages/sap.fe.core/src/sap/fe/core/controls/CustomQuickViewPage.js +2 -3
  145. package/packages/sap.fe.core/src/sap/fe/core/controls/CustomQuickViewPage.ts +126 -0
  146. package/packages/sap.fe.core/src/sap/fe/core/controls/DataLossOrDraftDiscard/DataLossOrDraftDiscardHandler-dbg.js +103 -112
  147. package/packages/sap.fe.core/src/sap/fe/core/controls/DataLossOrDraftDiscard/DataLossOrDraftDiscardHandler.js +2 -3
  148. package/packages/sap.fe.core/src/sap/fe/core/controls/DataLossOrDraftDiscard/DataLossOrDraftDiscardHandler.ts +101 -0
  149. package/packages/sap.fe.core/src/sap/fe/core/controls/FieldWrapper-dbg.js +122 -135
  150. package/packages/sap.fe.core/src/sap/fe/core/controls/FieldWrapper.js +2 -3
  151. package/packages/sap.fe.core/src/sap/fe/core/controls/FieldWrapper.ts +115 -0
  152. package/packages/sap.fe.core/src/sap/fe/core/controls/FilterBar-dbg.js +162 -159
  153. package/packages/sap.fe.core/src/sap/fe/core/controls/FilterBar.js +2 -3
  154. package/packages/sap.fe.core/src/sap/fe/core/controls/FilterBar.ts +143 -0
  155. package/packages/sap.fe.core/src/sap/fe/core/controls/FormElementWrapper-dbg.js +45 -39
  156. package/packages/sap.fe.core/src/sap/fe/core/controls/FormElementWrapper.js +2 -3
  157. package/packages/sap.fe.core/src/sap/fe/core/controls/FormElementWrapper.ts +40 -0
  158. package/packages/sap.fe.core/src/sap/fe/core/controls/MultiValueParameterDelegate-dbg.js +37 -42
  159. package/packages/sap.fe.core/src/sap/fe/core/controls/MultiValueParameterDelegate.js +1 -2
  160. package/packages/sap.fe.core/src/sap/fe/core/controls/MultiValueParameterDelegate.ts +31 -0
  161. package/packages/sap.fe.core/src/sap/fe/core/controls/filterbar/FilterContainer-dbg.js +126 -116
  162. package/packages/sap.fe.core/src/sap/fe/core/controls/filterbar/FilterContainer.js +2 -3
  163. package/packages/sap.fe.core/src/sap/fe/core/controls/filterbar/FilterContainer.ts +98 -0
  164. package/packages/sap.fe.core/src/sap/fe/core/controls/filterbar/VisualFilter-dbg.js +241 -255
  165. package/packages/sap.fe.core/src/sap/fe/core/controls/filterbar/VisualFilter.js +2 -3
  166. package/packages/sap.fe.core/src/sap/fe/core/controls/filterbar/VisualFilter.ts +245 -0
  167. package/packages/sap.fe.core/src/sap/fe/core/controls/filterbar/VisualFilterContainer-dbg.js +150 -141
  168. package/packages/sap.fe.core/src/sap/fe/core/controls/filterbar/VisualFilterContainer.js +2 -3
  169. package/packages/sap.fe.core/src/sap/fe/core/controls/filterbar/VisualFilterContainer.ts +125 -0
  170. package/packages/sap.fe.core/src/sap/fe/core/controls/filterbar/utils/VisualFilterUtils-dbg.js +335 -322
  171. package/packages/sap.fe.core/src/sap/fe/core/controls/filterbar/utils/VisualFilterUtils.js +2 -3
  172. package/packages/sap.fe.core/src/sap/fe/core/controls/filterbar/utils/VisualFilterUtils.ts +337 -0
  173. package/packages/sap.fe.core/src/sap/fe/core/controls/massEdit/MassEditHandlers-dbg.js +74 -74
  174. package/packages/sap.fe.core/src/sap/fe/core/controls/massEdit/MassEditHandlers.js +2 -3
  175. package/packages/sap.fe.core/src/sap/fe/core/controls/massEdit/MassEditHandlers.ts +70 -0
  176. package/packages/sap.fe.core/src/sap/fe/core/converters/ConverterContext-dbg.js +348 -379
  177. package/packages/sap.fe.core/src/sap/fe/core/converters/ConverterContext.js +1 -1
  178. package/packages/sap.fe.core/src/sap/fe/core/converters/ConverterContext.ts +19 -16
  179. package/packages/sap.fe.core/src/sap/fe/core/converters/ManifestSettings-dbg.js +12 -1
  180. package/packages/sap.fe.core/src/sap/fe/core/converters/ManifestSettings.js +1 -1
  181. package/packages/sap.fe.core/src/sap/fe/core/converters/ManifestSettings.ts +12 -1
  182. package/packages/sap.fe.core/src/sap/fe/core/converters/ManifestWrapper-dbg.js +354 -378
  183. package/packages/sap.fe.core/src/sap/fe/core/converters/ManifestWrapper.js +1 -1
  184. package/packages/sap.fe.core/src/sap/fe/core/converters/ManifestWrapper.ts +10 -0
  185. package/packages/sap.fe.core/src/sap/fe/core/converters/MetaModelConverter-dbg.js +6 -4
  186. package/packages/sap.fe.core/src/sap/fe/core/converters/MetaModelConverter.js +1 -1
  187. package/packages/sap.fe.core/src/sap/fe/core/converters/MetaModelConverter.ts +5 -2
  188. package/packages/sap.fe.core/src/sap/fe/core/converters/TemplateConverter-dbg.js +1 -1
  189. package/packages/sap.fe.core/src/sap/fe/core/converters/TemplateConverter.ts +2 -1
  190. package/packages/sap.fe.core/src/sap/fe/core/converters/annotations/DataField-dbg.js +26 -12
  191. package/packages/sap.fe.core/src/sap/fe/core/converters/annotations/DataField.js +1 -1
  192. package/packages/sap.fe.core/src/sap/fe/core/converters/annotations/DataField.ts +37 -13
  193. package/packages/sap.fe.core/src/sap/fe/core/converters/controls/Common/Form-dbg.js +2 -2
  194. package/packages/sap.fe.core/src/sap/fe/core/converters/controls/Common/Form.js +1 -1
  195. package/packages/sap.fe.core/src/sap/fe/core/converters/controls/Common/Form.ts +4 -2
  196. package/packages/sap.fe.core/src/sap/fe/core/converters/controls/Common/KPI-dbg.js +1 -1
  197. package/packages/sap.fe.core/src/sap/fe/core/converters/controls/Common/KPI.ts +3 -2
  198. package/packages/sap.fe.core/src/sap/fe/core/converters/controls/Common/Table-dbg.js +130 -23
  199. package/packages/sap.fe.core/src/sap/fe/core/converters/controls/Common/Table.js +1 -1
  200. package/packages/sap.fe.core/src/sap/fe/core/converters/controls/Common/Table.ts +134 -29
  201. package/packages/sap.fe.core/src/sap/fe/core/converters/controls/Common/table/StandardActions-dbg.js +118 -53
  202. package/packages/sap.fe.core/src/sap/fe/core/converters/controls/Common/table/StandardActions.js +1 -1
  203. package/packages/sap.fe.core/src/sap/fe/core/converters/controls/Common/table/StandardActions.ts +156 -93
  204. package/packages/sap.fe.core/src/sap/fe/core/converters/controls/ListReport/FilterBar-dbg.js +161 -207
  205. package/packages/sap.fe.core/src/sap/fe/core/converters/controls/ListReport/FilterBar.js +1 -1
  206. package/packages/sap.fe.core/src/sap/fe/core/converters/controls/ListReport/FilterBar.ts +148 -206
  207. package/packages/sap.fe.core/src/sap/fe/core/converters/helpers/Aggregation-dbg.js +115 -133
  208. package/packages/sap.fe.core/src/sap/fe/core/converters/helpers/Aggregation.js +1 -1
  209. package/packages/sap.fe.core/src/sap/fe/core/converters/helpers/BindingHelper-dbg.js +20 -6
  210. package/packages/sap.fe.core/src/sap/fe/core/converters/helpers/BindingHelper.js +1 -1
  211. package/packages/sap.fe.core/src/sap/fe/core/converters/helpers/BindingHelper.ts +16 -4
  212. package/packages/sap.fe.core/src/sap/fe/core/converters/helpers/ConfigurableObject-dbg.js +12 -1
  213. package/packages/sap.fe.core/src/sap/fe/core/converters/helpers/ConfigurableObject.ts +11 -0
  214. package/packages/sap.fe.core/src/sap/fe/core/converters/helpers/Key-dbg.js +42 -57
  215. package/packages/sap.fe.core/src/sap/fe/core/converters/helpers/Key.js +1 -1
  216. package/packages/sap.fe.core/src/sap/fe/core/converters/helpers/Key.ts +1 -1
  217. package/packages/sap.fe.core/src/sap/fe/core/converters/objectPage/HeaderAndFooterAction-dbg.js +25 -4
  218. package/packages/sap.fe.core/src/sap/fe/core/converters/objectPage/HeaderAndFooterAction.js +1 -1
  219. package/packages/sap.fe.core/src/sap/fe/core/converters/objectPage/HeaderAndFooterAction.ts +20 -3
  220. package/packages/sap.fe.core/src/sap/fe/core/converters/templates/ListReportConverter-dbg.js +10 -4
  221. package/packages/sap.fe.core/src/sap/fe/core/converters/templates/ListReportConverter.js +1 -1
  222. package/packages/sap.fe.core/src/sap/fe/core/converters/templates/ListReportConverter.ts +15 -4
  223. package/packages/sap.fe.core/src/sap/fe/core/converters/templates/ObjectPageConverter-dbg.js +7 -5
  224. package/packages/sap.fe.core/src/sap/fe/core/converters/templates/ObjectPageConverter.js +1 -1
  225. package/packages/sap.fe.core/src/sap/fe/core/converters/templates/ObjectPageConverter.ts +5 -1
  226. package/packages/sap.fe.core/src/sap/fe/core/designtime/AppComponent-dbg.designtime.js +92 -98
  227. package/packages/sap.fe.core/src/sap/fe/core/designtime/AppComponent.designtime.js +2 -3
  228. package/packages/sap.fe.core/src/sap/fe/core/designtime/AppComponent.designtime.ts +91 -0
  229. package/packages/sap.fe.core/src/sap/fe/core/designtime/library-preload.designtime.js +2 -3
  230. package/packages/sap.fe.core/src/sap/fe/core/designtime/library-preload.designtime.js.map +3 -3
  231. package/packages/sap.fe.core/src/sap/fe/core/formatters/CollaborationFormatter-dbg.js +104 -0
  232. package/packages/sap.fe.core/src/sap/fe/core/formatters/CollaborationFormatter.js +5 -0
  233. package/packages/sap.fe.core/src/sap/fe/core/formatters/CollaborationFormatter.ts +60 -0
  234. package/packages/sap.fe.core/src/sap/fe/core/formatters/TableFormatter-dbg.js +53 -2
  235. package/packages/sap.fe.core/src/sap/fe/core/formatters/TableFormatter.js +1 -1
  236. package/packages/sap.fe.core/src/sap/fe/core/formatters/TableFormatter.ts +51 -0
  237. package/packages/sap.fe.core/src/sap/fe/core/fpm/Component-dbg.js +50 -54
  238. package/packages/sap.fe.core/src/sap/fe/core/fpm/Component.js +2 -3
  239. package/packages/sap.fe.core/src/sap/fe/core/fpm/Component.ts +48 -0
  240. package/packages/sap.fe.core/src/sap/fe/core/fpm/manifest.json +2 -2
  241. package/packages/sap.fe.core/src/sap/fe/core/fpm/resources.json +7 -3
  242. package/packages/sap.fe.core/src/sap/fe/core/helpers/AppStartupHelper-dbg.js +323 -309
  243. package/packages/sap.fe.core/src/sap/fe/core/helpers/AppStartupHelper.js +1 -1
  244. package/packages/sap.fe.core/src/sap/fe/core/helpers/AppStartupHelper.ts +363 -337
  245. package/packages/sap.fe.core/src/sap/fe/core/helpers/BindingExpression-dbg.js +7 -7
  246. package/packages/sap.fe.core/src/sap/fe/core/helpers/BindingExpression.js +1 -1
  247. package/packages/sap.fe.core/src/sap/fe/core/helpers/BindingExpression.ts +7 -7
  248. package/packages/sap.fe.core/src/sap/fe/core/helpers/ClassSupport-dbg.js +186 -62
  249. package/packages/sap.fe.core/src/sap/fe/core/helpers/ClassSupport.js +1 -1
  250. package/packages/sap.fe.core/src/sap/fe/core/helpers/ClassSupport.ts +168 -52
  251. package/packages/sap.fe.core/src/sap/fe/core/helpers/DynamicAnnotationPathHelper-dbg.js +5 -4
  252. package/packages/sap.fe.core/src/sap/fe/core/helpers/DynamicAnnotationPathHelper.js +1 -1
  253. package/packages/sap.fe.core/src/sap/fe/core/helpers/DynamicAnnotationPathHelper.ts +1 -5
  254. package/packages/sap.fe.core/src/sap/fe/core/helpers/FPMHelper-dbg.js +1 -1
  255. package/packages/sap.fe.core/src/sap/fe/core/helpers/FPMHelper.ts +1 -1
  256. package/packages/sap.fe.core/src/sap/fe/core/helpers/MassEditHelper-dbg.js +601 -684
  257. package/packages/sap.fe.core/src/sap/fe/core/helpers/MassEditHelper.js +2 -3
  258. package/packages/sap.fe.core/src/sap/fe/core/helpers/MassEditHelper.ts +699 -0
  259. package/packages/sap.fe.core/src/sap/fe/core/helpers/ModelHelper-dbg.js +25 -1
  260. package/packages/sap.fe.core/src/sap/fe/core/helpers/ModelHelper.js +1 -1
  261. package/packages/sap.fe.core/src/sap/fe/core/helpers/ModelHelper.ts +23 -0
  262. package/packages/sap.fe.core/src/sap/fe/core/helpers/SemanticDateOperators-dbg.js +5 -1
  263. package/packages/sap.fe.core/src/sap/fe/core/helpers/SemanticDateOperators.js +1 -1
  264. package/packages/sap.fe.core/src/sap/fe/core/helpers/SemanticDateOperators.ts +4 -0
  265. package/packages/sap.fe.core/src/sap/fe/core/library-dbg.js +426 -451
  266. package/packages/sap.fe.core/src/sap/fe/core/library-h2-preload.js +36 -32
  267. package/packages/sap.fe.core/src/sap/fe/core/library-h2-preload.js.map +3 -3
  268. package/packages/sap.fe.core/src/sap/fe/core/library-preload.js +644 -738
  269. package/packages/sap.fe.core/src/sap/fe/core/library-preload.js.map +4 -4
  270. package/packages/sap.fe.core/src/sap/fe/core/library-preload.support.js +24 -35
  271. package/packages/sap.fe.core/src/sap/fe/core/library-preload.support.js.map +2 -2
  272. package/packages/sap.fe.core/src/sap/fe/core/library.js +2 -3
  273. package/packages/sap.fe.core/src/sap/fe/core/library.support.js +22 -33
  274. package/packages/sap.fe.core/src/sap/fe/core/library.support.ts +23 -0
  275. package/packages/sap.fe.core/src/sap/fe/core/library.ts +420 -0
  276. package/packages/sap.fe.core/src/sap/fe/core/manifest.json +10 -10
  277. package/packages/sap.fe.core/src/sap/fe/core/manifestMerger/ChangePageConfiguration-dbg.js +5 -3
  278. package/packages/sap.fe.core/src/sap/fe/core/manifestMerger/ChangePageConfiguration.js +1 -1
  279. package/packages/sap.fe.core/src/sap/fe/core/manifestMerger/ChangePageConfiguration.ts +4 -1
  280. package/packages/sap.fe.core/src/sap/fe/core/messagebundle.properties +22 -5
  281. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_ar.properties +27 -7
  282. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_bg.properties +27 -7
  283. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_ca.properties +27 -7
  284. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_cs.properties +27 -7
  285. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_cy.properties +27 -7
  286. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_da.properties +27 -7
  287. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_de.properties +27 -7
  288. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_el.properties +27 -7
  289. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_en.properties +27 -7
  290. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_en_GB.properties +27 -7
  291. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_en_US_sappsd.properties +27 -7
  292. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_en_US_saprigi.properties +27 -7
  293. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_en_US_saptrc.properties +27 -7
  294. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_es.properties +27 -7
  295. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_es_MX.properties +27 -7
  296. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_et.properties +27 -7
  297. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_fi.properties +28 -8
  298. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_fr.properties +28 -8
  299. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_fr_CA.properties +29 -9
  300. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_hi.properties +27 -7
  301. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_hr.properties +27 -7
  302. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_hu.properties +27 -7
  303. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_id.properties +27 -7
  304. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_it.properties +27 -7
  305. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_iw.properties +27 -7
  306. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_ja.properties +26 -6
  307. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_kk.properties +27 -7
  308. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_ko.properties +27 -7
  309. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_lt.properties +27 -7
  310. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_lv.properties +28 -8
  311. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_ms.properties +27 -7
  312. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_nl.properties +27 -7
  313. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_no.properties +27 -7
  314. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_pl.properties +27 -7
  315. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_pt.properties +28 -8
  316. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_pt_PT.properties +27 -7
  317. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_ro.properties +27 -7
  318. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_ru.properties +27 -7
  319. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_sh.properties +27 -7
  320. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_sk.properties +27 -7
  321. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_sl.properties +27 -7
  322. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_sv.properties +27 -7
  323. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_th.properties +26 -6
  324. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_tr.properties +30 -10
  325. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_uk.properties +27 -7
  326. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_vi.properties +27 -7
  327. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_zh_CN.properties +27 -7
  328. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_zh_TW.properties +27 -7
  329. package/packages/sap.fe.core/src/sap/fe/core/resources.json +745 -384
  330. package/packages/sap.fe.core/src/sap/fe/core/services/AsyncComponentServiceFactory-dbg.js +45 -71
  331. package/packages/sap.fe.core/src/sap/fe/core/services/AsyncComponentServiceFactory.js +1 -1
  332. package/packages/sap.fe.core/src/sap/fe/core/services/CacheHandlerServiceFactory-dbg.js +154 -192
  333. package/packages/sap.fe.core/src/sap/fe/core/services/CacheHandlerServiceFactory.js +1 -1
  334. package/packages/sap.fe.core/src/sap/fe/core/services/CacheHandlerServiceFactory.ts +4 -4
  335. package/packages/sap.fe.core/src/sap/fe/core/services/EnvironmentServiceFactory-dbg.js +66 -92
  336. package/packages/sap.fe.core/src/sap/fe/core/services/EnvironmentServiceFactory.js +1 -1
  337. package/packages/sap.fe.core/src/sap/fe/core/services/EnvironmentServiceFactory.ts +1 -1
  338. package/packages/sap.fe.core/src/sap/fe/core/services/NavigationServiceFactory-dbg.js +284 -339
  339. package/packages/sap.fe.core/src/sap/fe/core/services/NavigationServiceFactory.js +1 -1
  340. package/packages/sap.fe.core/src/sap/fe/core/services/NavigationServiceFactory.ts +10 -13
  341. package/packages/sap.fe.core/src/sap/fe/core/services/ResourceModelServiceFactory-dbg.js +67 -102
  342. package/packages/sap.fe.core/src/sap/fe/core/services/ResourceModelServiceFactory.js +1 -1
  343. package/packages/sap.fe.core/src/sap/fe/core/services/ResourceModelServiceFactory.ts +5 -2
  344. package/packages/sap.fe.core/src/sap/fe/core/services/RoutingServiceFactory-dbg.js +754 -814
  345. package/packages/sap.fe.core/src/sap/fe/core/services/RoutingServiceFactory.js +1 -1
  346. package/packages/sap.fe.core/src/sap/fe/core/services/RoutingServiceFactory.ts +13 -13
  347. package/packages/sap.fe.core/src/sap/fe/core/services/ShellServicesFactory-dbg.js +649 -736
  348. package/packages/sap.fe.core/src/sap/fe/core/services/ShellServicesFactory.js +1 -1
  349. package/packages/sap.fe.core/src/sap/fe/core/services/ShellServicesFactory.ts +7 -4
  350. package/packages/sap.fe.core/src/sap/fe/core/services/SideEffectsServiceFactory-dbg.js +567 -592
  351. package/packages/sap.fe.core/src/sap/fe/core/services/SideEffectsServiceFactory.js +1 -1
  352. package/packages/sap.fe.core/src/sap/fe/core/services/SideEffectsServiceFactory.ts +22 -3
  353. package/packages/sap.fe.core/src/sap/fe/core/services/TemplatedViewServiceFactory-dbg.js +354 -386
  354. package/packages/sap.fe.core/src/sap/fe/core/services/TemplatedViewServiceFactory.js +1 -1
  355. package/packages/sap.fe.core/src/sap/fe/core/services/TemplatedViewServiceFactory.ts +21 -14
  356. package/packages/sap.fe.core/src/sap/fe/core/services/view/TemplatingErrorPage-dbg.controller.js +1 -1
  357. package/packages/sap.fe.core/src/sap/fe/core/services/view/TemplatingErrorPage.controller.ts +1 -1
  358. package/packages/sap.fe.core/src/sap/fe/core/support/CommonHelper-dbg.js +1 -1
  359. package/packages/sap.fe.core/src/sap/fe/core/support/CommonHelper.ts +1 -1
  360. package/packages/sap.fe.core/src/sap/fe/core/support/Diagnostics-dbg.js +36 -48
  361. package/packages/sap.fe.core/src/sap/fe/core/support/Diagnostics.js +1 -1
  362. package/packages/sap.fe.core/src/sap/fe/core/templating/DataModelPathHelper-dbg.js +93 -85
  363. package/packages/sap.fe.core/src/sap/fe/core/templating/DataModelPathHelper.js +1 -1
  364. package/packages/sap.fe.core/src/sap/fe/core/templating/DataModelPathHelper.ts +104 -95
  365. package/packages/sap.fe.core/src/sap/fe/core/templating/FilterHelper-dbg.js +25 -32
  366. package/packages/sap.fe.core/src/sap/fe/core/templating/FilterHelper.js +1 -1
  367. package/packages/sap.fe.core/src/sap/fe/core/templating/FilterHelper.ts +36 -35
  368. package/packages/sap.fe.core/src/sap/fe/core/templating/PropertyHelper-dbg.js +2 -2
  369. package/packages/sap.fe.core/src/sap/fe/core/templating/PropertyHelper.js +1 -1
  370. package/packages/sap.fe.core/src/sap/fe/core/templating/PropertyHelper.ts +1 -1
  371. package/packages/sap.fe.core/src/sap/fe/core/templating/UIFormatters-dbg.js +32 -26
  372. package/packages/sap.fe.core/src/sap/fe/core/templating/UIFormatters.js +1 -1
  373. package/packages/sap.fe.core/src/sap/fe/core/templating/UIFormatters.ts +37 -24
  374. package/packages/sap.fe.core/test/sap/fe/core/designtime/api.json +1664 -1
  375. package/packages/sap.fe.core/test/sap/fe/core/designtime/apiref/api.json +1 -1
  376. package/packages/sap.fe.core/test/sap/fe/core/designtime/codeassistance/Library.jsmeta.json +1 -1
  377. package/packages/sap.fe.core/test/sap/fe/core/designtime/codeassistance/Library.jstemplates.json +1 -1
  378. package/packages/sap.fe.core/test/sap/fe/core/designtime/codeassistance/Library.xmlmeta.json +1 -1
  379. package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/model/MacroNavigationModel.js +59 -0
  380. package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/field/fieldDisplay/localService/RootEntity.json +1 -1
  381. package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/field/fieldMessages/Component.js +33 -0
  382. package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/field/fieldMessages/FieldMessages.controller.js +34 -0
  383. package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/field/fieldMessages/FieldMessages.view.xml +18 -0
  384. package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/field/fieldMessages/localService/Entities.json +6 -0
  385. package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/field/fieldMessages/localService/service.cds +6 -0
  386. package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/field/fieldMessages/manifest.json +68 -0
  387. package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/fieldMessages.html +37 -0
  388. package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/filterBar/filterBarSVandAnnotationDefaults/FilterBarSVandAnnotationDefaults.controller.js +1 -0
  389. package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/table/tableCustoms/Page.controller.js +7 -2
  390. package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/table/tableCustoms/Page.view.xml +9 -3
  391. package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/table/tableCustoms/localService/RootEntity.js +23 -0
  392. package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/table/tableCustoms/localService/RootEntity.ts +11 -0
  393. package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/table/tableCustoms/localService/service.cds +11 -23
  394. package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/table/tableMessages/Component.js +40 -0
  395. package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/table/tableMessages/TableMessages.controller.js +35 -0
  396. package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/table/tableMessages/TableMessages.view.xml +21 -0
  397. package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/table/tableMessages/localService/RootEntity.json +82 -0
  398. package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/table/tableMessages/localService/service.cds +82 -0
  399. package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/table/tableMessages/manifest.json +78 -0
  400. package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/tableMessages.html +37 -0
  401. package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/controllerExtensions/basicExtensibility/localService/ChildEntity.json +5 -4
  402. package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/customElements/customColumn/customColumnContent/manifest.json +3 -0
  403. package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/view/App.view.xml +1 -1
  404. package/packages/sap.fe.core/test/sap/fe/core/jest/AnnotationHelper.spec.js +1 -169
  405. package/packages/sap.fe.core/test/sap/fe/core/jest/AnnotationHelper.spec.ts +0 -212
  406. package/packages/sap.fe.core/test/sap/fe/core/jest/CommonUtils.spec.js +2305 -119
  407. package/packages/sap.fe.core/test/sap/fe/core/jest/CommonUtils.spec.ts +2206 -67
  408. package/packages/sap.fe.core/test/sap/fe/core/jest/FilterUtils.spec.js +40 -0
  409. package/packages/sap.fe.core/test/sap/fe/core/jest/FilterUtils.spec.ts +34 -0
  410. package/packages/sap.fe.core/test/sap/fe/core/jest/FlexibleColumnLayout.spec.js +114 -0
  411. package/packages/sap.fe.core/test/sap/fe/core/jest/FlexibleColumnLayout.spec.ts +114 -0
  412. package/packages/sap.fe.core/test/sap/fe/core/jest/Paginators.spec.js +113 -0
  413. package/packages/sap.fe.core/test/sap/fe/core/jest/Paginators.spec.ts +78 -0
  414. package/packages/sap.fe.core/test/sap/fe/core/jest/RouterProxy.spec.js +599 -1
  415. package/packages/sap.fe.core/test/sap/fe/core/jest/RouterProxy.spec.ts +614 -0
  416. package/packages/sap.fe.core/test/sap/fe/core/jest/TemplateConverter.spec.js +23 -5
  417. package/packages/sap.fe.core/test/sap/fe/core/jest/TemplateConverter.spec.ts +26 -14
  418. package/packages/sap.fe.core/test/sap/fe/core/jest/TransactionHelper.spec.js +87 -1
  419. package/packages/sap.fe.core/test/sap/fe/core/jest/TransactionHelper.spec.ts +82 -1
  420. package/packages/sap.fe.core/test/sap/fe/core/jest/VisualFilterUtils.spec.js +124 -0
  421. package/packages/sap.fe.core/test/sap/fe/core/jest/VisualFilterUtils.spec.ts +141 -0
  422. package/packages/sap.fe.core/test/sap/fe/core/jest/__snapshots__/TemplateConverter.spec.ts.snap +34768 -67
  423. package/packages/sap.fe.core/test/sap/fe/core/jest/actions/collaboration/ActivitySync.spec.js +170 -0
  424. package/packages/sap.fe.core/test/sap/fe/core/jest/actions/collaboration/ActivitySync.spec.ts +155 -0
  425. package/packages/sap.fe.core/test/sap/fe/core/jest/actions/collaboration/CollaborationCommon.spec.js +101 -0
  426. package/packages/sap.fe.core/test/sap/fe/core/jest/actions/collaboration/CollaborationCommon.spec.ts +94 -0
  427. package/packages/sap.fe.core/test/sap/fe/core/jest/actions/collaboration/Manage.spec.js +82 -0
  428. package/packages/sap.fe.core/test/sap/fe/core/jest/actions/collaboration/Manage.spec.ts +77 -0
  429. package/packages/sap.fe.core/test/sap/fe/core/jest/actions/draft.spec.js +2 -2
  430. package/packages/sap.fe.core/test/sap/fe/core/jest/actions/draft.spec.ts +1 -1
  431. package/packages/sap.fe.core/test/sap/fe/core/jest/actions/messageHandling.spec.js +7 -2
  432. package/packages/sap.fe.core/test/sap/fe/core/jest/actions/messageHandling.spec.ts +7 -0
  433. package/packages/sap.fe.core/test/sap/fe/core/jest/actions/operations.spec.js +104 -2
  434. package/packages/sap.fe.core/test/sap/fe/core/jest/actions/operations.spec.ts +96 -1
  435. package/packages/sap.fe.core/test/sap/fe/core/jest/actions/sticky.spec.js +83 -0
  436. package/packages/sap.fe.core/test/sap/fe/core/jest/actions/sticky.spec.ts +79 -0
  437. package/packages/sap.fe.core/test/sap/fe/core/jest/appcomponent.spec.js +72 -0
  438. package/packages/sap.fe.core/test/sap/fe/core/jest/appcomponent.spec.ts +64 -0
  439. package/packages/sap.fe.core/test/sap/fe/core/jest/controllerextensions/EditFlow.spec.js +619 -3
  440. package/packages/sap.fe.core/test/sap/fe/core/jest/controllerextensions/EditFlow.spec.ts +668 -5
  441. package/packages/sap.fe.core/test/sap/fe/core/jest/controllerextensions/InternalEditFlow.spec.js +297 -1
  442. package/packages/sap.fe.core/test/sap/fe/core/jest/controllerextensions/InternalEditFlow.spec.ts +276 -6
  443. package/packages/sap.fe.core/test/sap/fe/core/jest/controllerextensions/InternalIntentBasedNavigation.spec.js +149 -0
  444. package/packages/sap.fe.core/test/sap/fe/core/jest/controllerextensions/InternalIntentBasedNavigation.spec.ts +142 -0
  445. package/packages/sap.fe.core/test/sap/fe/core/jest/controllerextensions/InternalRouting.spec.js +776 -182
  446. package/packages/sap.fe.core/test/sap/fe/core/jest/controllerextensions/InternalRouting.spec.ts +181 -3
  447. package/packages/sap.fe.core/test/sap/fe/core/jest/controllerextensions/KPIManagement.spec.js +19 -43
  448. package/packages/sap.fe.core/test/sap/fe/core/jest/controllerextensions/MassEdit.spec.js +2 -18
  449. package/packages/sap.fe.core/test/sap/fe/core/jest/controllerextensions/MassEdit.spec.ts +8 -6
  450. package/packages/sap.fe.core/test/sap/fe/core/jest/controllerextensions/MessageHandler.spec.js +5 -27
  451. package/packages/sap.fe.core/test/sap/fe/core/jest/controllerextensions/MessageHandler.spec.ts +1 -1
  452. package/packages/sap.fe.core/test/sap/fe/core/jest/controllerextensions/Routing.spec.js +1 -1
  453. package/packages/sap.fe.core/test/sap/fe/core/jest/controllerextensions/Routing.spec.ts +1 -1
  454. package/packages/sap.fe.core/test/sap/fe/core/jest/controllerextensions/Share.spec.js +86 -0
  455. package/packages/sap.fe.core/test/sap/fe/core/jest/controllerextensions/Share.spec.ts +80 -0
  456. package/packages/sap.fe.core/test/sap/fe/core/jest/controllerextensions/SideEffects.spec.js +1 -1
  457. package/packages/sap.fe.core/test/sap/fe/core/jest/controllerextensions/SideEffects.spec.ts +1 -1
  458. package/packages/sap.fe.core/test/sap/fe/core/jest/controllerextensions/ViewState.spec.js +2 -18
  459. package/packages/sap.fe.core/test/sap/fe/core/jest/controllerextensions/ViewState.spec.ts +1 -1
  460. package/packages/sap.fe.core/test/sap/fe/core/jest/controls/DataLossOrDraftDiscardHandler.spec.js +45 -0
  461. package/packages/sap.fe.core/test/sap/fe/core/jest/controls/DataLossOrDraftDiscardHandler.spec.ts +29 -0
  462. package/packages/sap.fe.core/test/sap/fe/core/jest/controls/FilterBar.spec.js +51 -1
  463. package/packages/sap.fe.core/test/sap/fe/core/jest/controls/FilterBar.spec.ts +47 -1
  464. package/packages/sap.fe.core/test/sap/fe/core/jest/controls/__snapshots__/FilterBar.spec.ts.snap +3 -0
  465. package/packages/sap.fe.core/test/sap/fe/core/jest/converters/ConverterContext.spec.js +2 -2
  466. package/packages/sap.fe.core/test/sap/fe/core/jest/converters/ConverterContext.spec.ts +1 -1
  467. package/packages/sap.fe.core/test/sap/fe/core/jest/converters/Filter.spec.js +25 -36
  468. package/packages/sap.fe.core/test/sap/fe/core/jest/converters/Filter.spec.ts +26 -36
  469. package/packages/sap.fe.core/test/sap/fe/core/jest/converters/ListReportConverter.spec.js +3 -3
  470. package/packages/sap.fe.core/test/sap/fe/core/jest/converters/ListReportConverter.spec.ts +2 -2
  471. package/packages/sap.fe.core/test/sap/fe/core/jest/converters/MetaModelConverter.spec.js +1 -1
  472. package/packages/sap.fe.core/test/sap/fe/core/jest/converters/MetaModelConverter.spec.ts +6 -5
  473. package/packages/sap.fe.core/test/sap/fe/core/jest/converters/Table.spec.js +133 -9
  474. package/packages/sap.fe.core/test/sap/fe/core/jest/converters/Table.spec.ts +171 -8
  475. package/packages/sap.fe.core/test/sap/fe/core/jest/converters/TableStandardActions.spec.js +174 -210
  476. package/packages/sap.fe.core/test/sap/fe/core/jest/converters/TableStandardActions.spec.ts +294 -230
  477. package/packages/sap.fe.core/test/sap/fe/core/jest/converters/__snapshots__/Filter.spec.ts.snap +3 -1
  478. package/packages/sap.fe.core/test/sap/fe/core/jest/converters/controls/Chart.spec.js +237 -0
  479. package/packages/sap.fe.core/test/sap/fe/core/jest/converters/controls/Chart.spec.ts +246 -0
  480. package/packages/sap.fe.core/test/sap/fe/core/jest/converters/controls/DataVisualization.spec.js +9993 -0
  481. package/packages/sap.fe.core/test/sap/fe/core/jest/converters/controls/DataVisualization.spec.ts +11352 -0
  482. package/packages/sap.fe.core/test/sap/fe/core/jest/converters/controls/Table.spec.js +460 -0
  483. package/packages/sap.fe.core/test/sap/fe/core/jest/converters/controls/Table.spec.ts +543 -0
  484. package/packages/sap.fe.core/test/sap/fe/core/jest/converters/controls/TableAnalytics.spec.js +616 -0
  485. package/packages/sap.fe.core/test/sap/fe/core/jest/converters/controls/TableAnalytics.spec.ts +711 -0
  486. package/packages/sap.fe.core/test/sap/fe/core/jest/converters/controls/manifest.json +887 -0
  487. package/packages/sap.fe.core/test/sap/fe/core/jest/converters/objectPage/HeaderAndFooterAction.spec.js +393 -0
  488. package/packages/sap.fe.core/test/sap/fe/core/jest/converters/objectPage/HeaderAndFooterAction.spec.ts +434 -0
  489. package/packages/sap.fe.core/test/sap/fe/core/jest/data/DataConverter.js +31 -0
  490. package/packages/sap.fe.core/test/sap/fe/core/jest/data/DataConverter.ts +12 -0
  491. package/packages/sap.fe.core/test/sap/fe/core/jest/data/Filter.cds +27 -0
  492. package/packages/sap.fe.core/test/sap/fe/core/jest/data/MassEditHelper.cds +12 -0
  493. package/packages/sap.fe.core/test/sap/fe/core/jest/data/OKRA/manifest.json +150 -0
  494. package/packages/sap.fe.core/test/sap/fe/core/jest/data/OKRA/metadata.xml +365 -0
  495. package/packages/sap.fe.core/test/sap/fe/core/jest/data/OKRA/metadata_groupable_options.xml +96 -0
  496. package/packages/sap.fe.core/test/sap/fe/core/jest/data/OKRA/metadata_textArrangement.xml +102 -0
  497. package/packages/sap.fe.core/test/sap/fe/core/jest/data/OKRA/metadata_withPV.xml +359 -0
  498. package/packages/sap.fe.core/test/sap/fe/core/jest/data/Table.cds +89 -27
  499. package/packages/sap.fe.core/test/sap/fe/core/jest/data/TemplatingTestData.js +421 -0
  500. package/packages/sap.fe.core/test/sap/fe/core/jest/data/TemplatingTestData.ts +413 -0
  501. package/packages/sap.fe.core/test/sap/fe/core/jest/data/aggregatedSD/metadata.xml +3767 -0
  502. package/packages/sap.fe.core/test/sap/fe/core/jest/data/dsr/manifest.json +185 -0
  503. package/packages/sap.fe.core/test/sap/fe/core/jest/data/dsr/metadata.xml +1534 -0
  504. package/packages/sap.fe.core/test/sap/fe/core/jest/data/manifest.json +887 -0
  505. package/packages/sap.fe.core/test/sap/fe/core/jest/data/salesOrderMetadata_qunit.xml +4995 -0
  506. package/packages/sap.fe.core/test/sap/fe/core/jest/formatters/CollaborationFormatters.spec.js +48 -0
  507. package/packages/sap.fe.core/test/sap/fe/core/jest/formatters/CollaborationFormatters.spec.ts +48 -0
  508. package/packages/sap.fe.core/test/sap/fe/core/jest/formatters/TableFormatters.spec.js +131 -51
  509. package/packages/sap.fe.core/test/sap/fe/core/jest/formatters/TableFormatters.spec.ts +81 -31
  510. package/packages/sap.fe.core/test/sap/fe/core/jest/helpers/AppStartupHelper.spec.js +13 -7
  511. package/packages/sap.fe.core/test/sap/fe/core/jest/helpers/AppStartupHelper.spec.ts +12 -6
  512. package/packages/sap.fe.core/test/sap/fe/core/jest/helpers/MassEditHelper.spec.js +17 -3
  513. package/packages/sap.fe.core/test/sap/fe/core/jest/helpers/MassEditHelper.spec.ts +24 -7
  514. package/packages/sap.fe.core/test/sap/fe/core/jest/helpers/ModelHelper.spec.js +61 -1
  515. package/packages/sap.fe.core/test/sap/fe/core/jest/helpers/ModelHelper.spec.ts +59 -0
  516. package/packages/sap.fe.core/test/sap/fe/core/jest/helpers/PasteHelper.spec.js +3 -3
  517. package/packages/sap.fe.core/test/sap/fe/core/jest/helpers/PasteHelper.spec.ts +1 -2
  518. package/packages/sap.fe.core/test/sap/fe/core/jest/helpers/SemanticDateOperators.spec.js +4 -4
  519. package/packages/sap.fe.core/test/sap/fe/core/jest/helpers/SemanticDateOperators.spec.ts +6 -3
  520. package/packages/sap.fe.core/test/sap/fe/core/jest/helpers/StableIdHelper.spec.js +1 -1
  521. package/packages/sap.fe.core/test/sap/fe/core/jest/helpers/StableIdHelper.spec.ts +1 -1
  522. package/packages/sap.fe.core/test/sap/fe/core/jest/helpers/__snapshots__/AppStartupHelper.spec.ts.snap +19 -0
  523. package/packages/sap.fe.core/test/sap/fe/core/jest/helpers/__snapshots__/MassEditHelper.spec.ts.snap +0 -73
  524. package/packages/sap.fe.core/test/sap/fe/core/jest/manifestmerger/ChangePageConfiguration.spec.js +11 -1
  525. package/packages/sap.fe.core/test/sap/fe/core/jest/manifestmerger/ChangePageConfiguration.spec.ts +15 -0
  526. package/packages/sap.fe.core/test/sap/fe/core/jest/manifestmerger/__snapshots__/ChangePageConfiguration.spec.ts.snap +30 -0
  527. package/packages/sap.fe.core/test/sap/fe/core/jest/services/SideEffectsService.spec.js +49 -5
  528. package/packages/sap.fe.core/test/sap/fe/core/jest/services/SideEffectsService.spec.ts +60 -5
  529. package/packages/sap.fe.core/test/sap/fe/core/jest/templating/DataModelPathHelper.spec.js +384 -0
  530. package/packages/sap.fe.core/test/sap/fe/core/jest/templating/DataModelPathHelper.spec.ts +427 -0
  531. package/packages/sap.fe.core/test/sap/fe/core/jest/templating/PropertyHelper.spec.js +132 -2
  532. package/packages/sap.fe.core/test/sap/fe/core/jest/templating/PropertyHelper.spec.ts +156 -2
  533. package/packages/sap.fe.core/test/sap/fe/core/jest/templating/UIFormatters.spec.js +273 -0
  534. package/packages/sap.fe.core/test/sap/fe/core/jest/templating/UIFormatters.spec.ts +402 -0
  535. package/packages/sap.fe.core/test/sap/fe/core/jest/templating/ValueHelpTemplating.spec.js +45 -0
  536. package/packages/sap.fe.core/test/sap/fe/core/jest/templating/ValueHelpTemplating.spec.ts +40 -0
  537. package/packages/sap.fe.core/test/sap/fe/core/qunit/TemplatingExpressions.qunit.js +2 -1
  538. package/packages/sap.fe.core/test/sap/fe/core/qunit/apps/generalTests.json +0 -102
  539. package/packages/sap.fe.core/test/sap/fe/core/relnotes/changes-1.100.json +326 -0
  540. package/packages/sap.fe.core/test/sap/fe/core/relnotes/changes-1.99.json +0 -22
  541. package/packages/sap.fe.macros/src/sap/fe/macros/.library +1 -1
  542. package/packages/sap.fe.macros/src/sap/fe/macros/.theming +1 -1
  543. package/packages/sap.fe.macros/src/sap/fe/macros/Chart.metadata-dbg.js +2 -2
  544. package/packages/sap.fe.macros/src/sap/fe/macros/Chart.metadata.js +1 -1
  545. package/packages/sap.fe.macros/src/sap/fe/macros/ChartAPI-dbg.js +22 -43
  546. package/packages/sap.fe.macros/src/sap/fe/macros/ChartAPI.js +1 -1
  547. package/packages/sap.fe.macros/src/sap/fe/macros/ChartAPI.ts +3 -3
  548. package/packages/sap.fe.macros/src/sap/fe/macros/ChartDelegate-dbg.js +14 -24
  549. package/packages/sap.fe.macros/src/sap/fe/macros/ChartDelegate.js +1 -1
  550. package/packages/sap.fe.macros/src/sap/fe/macros/CommonHelper-dbg.js +1 -1
  551. package/packages/sap.fe.macros/src/sap/fe/macros/DraftIndicator.fragment.xml +3 -2
  552. package/packages/sap.fe.macros/src/sap/fe/macros/Field.fragment.xml +16 -18
  553. package/packages/sap.fe.macros/src/sap/fe/macros/FieldAPI-dbg.js +162 -100
  554. package/packages/sap.fe.macros/src/sap/fe/macros/FieldAPI.js +1 -1
  555. package/packages/sap.fe.macros/src/sap/fe/macros/FieldAPI.ts +93 -16
  556. package/packages/sap.fe.macros/src/sap/fe/macros/FilterBar.fragment.xml +2 -1
  557. package/packages/sap.fe.macros/src/sap/fe/macros/FilterBar.metadata-dbg.js +16 -8
  558. package/packages/sap.fe.macros/src/sap/fe/macros/FilterBar.metadata.js +1 -1
  559. package/packages/sap.fe.macros/src/sap/fe/macros/FilterBarAPI-dbg.js +58 -83
  560. package/packages/sap.fe.macros/src/sap/fe/macros/FilterBarAPI.js +1 -1
  561. package/packages/sap.fe.macros/src/sap/fe/macros/FilterBarAPI.ts +16 -2
  562. package/packages/sap.fe.macros/src/sap/fe/macros/FilterBarDelegate-dbg.js +112 -192
  563. package/packages/sap.fe.macros/src/sap/fe/macros/FilterBarDelegate.js +1 -1
  564. package/packages/sap.fe.macros/src/sap/fe/macros/Form.metadata-dbg.js +1 -1
  565. package/packages/sap.fe.macros/src/sap/fe/macros/Form.metadata.js +1 -1
  566. package/packages/sap.fe.macros/src/sap/fe/macros/FormAPI-dbg.js +4 -20
  567. package/packages/sap.fe.macros/src/sap/fe/macros/FormAPI.js +1 -1
  568. package/packages/sap.fe.macros/src/sap/fe/macros/FormContainer.fragment.xml +1 -1
  569. package/packages/sap.fe.macros/src/sap/fe/macros/FormContainerAPI-dbg.js +10 -31
  570. package/packages/sap.fe.macros/src/sap/fe/macros/FormContainerAPI.js +1 -1
  571. package/packages/sap.fe.macros/src/sap/fe/macros/MacroAPI-dbg.js +147 -162
  572. package/packages/sap.fe.macros/src/sap/fe/macros/MacroAPI.js +1 -1
  573. package/packages/sap.fe.macros/src/sap/fe/macros/MacroAPI.ts +32 -8
  574. package/packages/sap.fe.macros/src/sap/fe/macros/MacroMetadata-dbg.js +5 -0
  575. package/packages/sap.fe.macros/src/sap/fe/macros/MacroMetadata.js +1 -1
  576. package/packages/sap.fe.macros/src/sap/fe/macros/PhantomUtil-dbg.js +56 -74
  577. package/packages/sap.fe.macros/src/sap/fe/macros/PhantomUtil.js +1 -1
  578. package/packages/sap.fe.macros/src/sap/fe/macros/Table.fragment.xml +1 -1
  579. package/packages/sap.fe.macros/src/sap/fe/macros/Table.metadata-dbg.js +90 -39
  580. package/packages/sap.fe.macros/src/sap/fe/macros/Table.metadata.js +1 -1
  581. package/packages/sap.fe.macros/src/sap/fe/macros/TableAPI-dbg.js +284 -251
  582. package/packages/sap.fe.macros/src/sap/fe/macros/TableAPI.js +1 -1
  583. package/packages/sap.fe.macros/src/sap/fe/macros/TableAPI.ts +126 -14
  584. package/packages/sap.fe.macros/src/sap/fe/macros/field/FieldHelper-dbg.js +38 -101
  585. package/packages/sap.fe.macros/src/sap/fe/macros/field/FieldHelper.js +1 -1
  586. package/packages/sap.fe.macros/src/sap/fe/macros/field/FieldRuntime-dbg.js +68 -6
  587. package/packages/sap.fe.macros/src/sap/fe/macros/field/FieldRuntime.js +1 -1
  588. package/packages/sap.fe.macros/src/sap/fe/macros/field/FieldTemplating-dbg.js +72 -12
  589. package/packages/sap.fe.macros/src/sap/fe/macros/field/FieldTemplating.js +1 -1
  590. package/packages/sap.fe.macros/src/sap/fe/macros/field/FieldTemplating.ts +67 -10
  591. package/packages/sap.fe.macros/src/sap/fe/macros/field/QuickViewLinkDelegate-dbg.js +5 -12
  592. package/packages/sap.fe.macros/src/sap/fe/macros/field/QuickViewLinkDelegate.js +1 -1
  593. package/packages/sap.fe.macros/src/sap/fe/macros/filter/DraftEditState.fragment.xml +1 -1
  594. package/packages/sap.fe.macros/src/sap/fe/macros/filter/FilterFieldHelper-dbg.js +1 -3
  595. package/packages/sap.fe.macros/src/sap/fe/macros/filter/FilterFieldHelper.js +1 -1
  596. package/packages/sap.fe.macros/src/sap/fe/macros/filter/FilterUtils-dbg.js +62 -39
  597. package/packages/sap.fe.macros/src/sap/fe/macros/filter/FilterUtils.js +1 -1
  598. package/packages/sap.fe.macros/src/sap/fe/macros/filter/type/MultiValue-dbg.js +104 -50
  599. package/packages/sap.fe.macros/src/sap/fe/macros/filter/type/MultiValue.js +2 -3
  600. package/packages/sap.fe.macros/src/sap/fe/macros/filter/type/MultiValue.ts +68 -0
  601. package/packages/sap.fe.macros/src/sap/fe/macros/filter/type/Range-dbg.js +83 -35
  602. package/packages/sap.fe.macros/src/sap/fe/macros/filter/type/Range.js +2 -3
  603. package/packages/sap.fe.macros/src/sap/fe/macros/filter/type/Range.ts +66 -0
  604. package/packages/sap.fe.macros/src/sap/fe/macros/filter/type/Value-dbg.js +327 -216
  605. package/packages/sap.fe.macros/src/sap/fe/macros/filter/type/Value.js +2 -3
  606. package/packages/sap.fe.macros/src/sap/fe/macros/filter/type/Value.ts +303 -0
  607. package/packages/sap.fe.macros/src/sap/fe/macros/internal/CollaborationAvatar.fragment.xml +15 -0
  608. package/packages/sap.fe.macros/src/sap/fe/macros/internal/CollectionField.metadata-dbg.js +14 -2
  609. package/packages/sap.fe.macros/src/sap/fe/macros/internal/CollectionField.metadata.js +1 -1
  610. package/packages/sap.fe.macros/src/sap/fe/macros/internal/CollectionField.metadata.ts +18 -2
  611. package/packages/sap.fe.macros/src/sap/fe/macros/internal/DataPoint.fragment.xml +12 -29
  612. package/packages/sap.fe.macros/src/sap/fe/macros/internal/DataPoint.metadata-dbg.js +9 -0
  613. package/packages/sap.fe.macros/src/sap/fe/macros/internal/DataPoint.metadata.js +1 -1
  614. package/packages/sap.fe.macros/src/sap/fe/macros/internal/Field.fragment.xml +1 -0
  615. package/packages/sap.fe.macros/src/sap/fe/macros/internal/Field.metadata-dbg.js +529 -533
  616. package/packages/sap.fe.macros/src/sap/fe/macros/internal/Field.metadata.js +2 -3
  617. package/packages/sap.fe.macros/src/sap/fe/macros/internal/Field.metadata.ts +568 -0
  618. package/packages/sap.fe.macros/src/sap/fe/macros/internal/FilterField.fragment.xml +0 -1
  619. package/packages/sap.fe.macros/src/sap/fe/macros/internal/SituationsIndicator-dbg.js +3 -3
  620. package/packages/sap.fe.macros/src/sap/fe/macros/internal/SituationsIndicator.js +1 -1
  621. package/packages/sap.fe.macros/src/sap/fe/macros/internal/SituationsIndicator.ts +3 -2
  622. package/packages/sap.fe.macros/src/sap/fe/macros/internal/field/FieldContent.fragment.xml +3 -1
  623. package/packages/sap.fe.macros/src/sap/fe/macros/internal/field/FieldStructure.fragment.xml +13 -3
  624. package/packages/sap.fe.macros/src/sap/fe/macros/internal/field/displayStyle/DataPoint.fragment.xml +4 -1
  625. package/packages/sap.fe.macros/src/sap/fe/macros/internal/field/displayStyle/ExpandableText.fragment.xml +1 -0
  626. package/packages/sap.fe.macros/src/sap/fe/macros/internal/field/displayStyle/LabelSemanticKey.fragment.xml +1 -0
  627. package/packages/sap.fe.macros/src/sap/fe/macros/internal/field/displayStyle/Link.fragment.xml +38 -4
  628. package/packages/sap.fe.macros/src/sap/fe/macros/internal/field/displayStyle/LinkWithQuickViewForm.fragment.xml +2 -2
  629. package/packages/sap.fe.macros/src/sap/fe/macros/internal/field/displayStyle/LinkWrapper.fragment.xml +3 -3
  630. package/packages/sap.fe.macros/src/sap/fe/macros/internal/field/displayStyle/MdcFieldWithValueHelp.fragment.xml +1 -2
  631. package/packages/sap.fe.macros/src/sap/fe/macros/internal/field/displayStyle/ObjectIdentifier.fragment.xml +55 -11
  632. package/packages/sap.fe.macros/src/sap/fe/macros/internal/field/displayStyle/SemanticKeyWithDraftIndicator.fragment.xml +1 -1
  633. package/packages/sap.fe.macros/src/sap/fe/macros/internal/field/displayStyle/Text.fragment.xml +3 -3
  634. package/packages/sap.fe.macros/src/sap/fe/macros/internal/field/editStyle/DatePicker.fragment.xml +9 -2
  635. package/packages/sap.fe.macros/src/sap/fe/macros/internal/field/editStyle/DateTimePicker.fragment.xml +9 -2
  636. package/packages/sap.fe.macros/src/sap/fe/macros/internal/field/editStyle/Input.fragment.xml +12 -3
  637. package/packages/sap.fe.macros/src/sap/fe/macros/internal/field/editStyle/InputWithUnit.fragment.xml +26 -5
  638. package/packages/sap.fe.macros/src/sap/fe/macros/internal/field/editStyle/InputWithValueHelp.fragment.xml +10 -2
  639. package/packages/sap.fe.macros/src/sap/fe/macros/internal/field/editStyle/RatingIndicator.fragment.xml +9 -2
  640. package/packages/sap.fe.macros/src/sap/fe/macros/internal/field/editStyle/TimePicker.fragment.xml +9 -2
  641. package/packages/sap.fe.macros/src/sap/fe/macros/internal/field/fragments/ObjectIdentifierContent.fragment.xml +4 -0
  642. package/packages/sap.fe.macros/src/sap/fe/macros/internal/helpers/DataPointTemplating-dbg.js +31 -2
  643. package/packages/sap.fe.macros/src/sap/fe/macros/internal/helpers/DataPointTemplating.js +1 -1
  644. package/packages/sap.fe.macros/src/sap/fe/macros/internal/helpers/DataPointTemplating.ts +20 -0
  645. package/packages/sap.fe.macros/src/sap/fe/macros/internal/situations/Runtime-dbg.js +2 -2
  646. package/packages/sap.fe.macros/src/sap/fe/macros/internal/situations/Runtime.js +1 -1
  647. package/packages/sap.fe.macros/src/sap/fe/macros/internal/situations/Runtime.ts +7 -9
  648. package/packages/sap.fe.macros/src/sap/fe/macros/internal/valuehelp/ValueListHelper-dbg.js +90 -118
  649. package/packages/sap.fe.macros/src/sap/fe/macros/internal/valuehelp/ValueListHelper.js +1 -1
  650. package/packages/sap.fe.macros/src/sap/fe/macros/library-dbg.js +1 -1
  651. package/packages/sap.fe.macros/src/sap/fe/macros/library-h2-preload.js +13 -12
  652. package/packages/sap.fe.macros/src/sap/fe/macros/library-h2-preload.js.map +2 -2
  653. package/packages/sap.fe.macros/src/sap/fe/macros/library-preload.js +185 -214
  654. package/packages/sap.fe.macros/src/sap/fe/macros/library-preload.js.map +4 -4
  655. package/packages/sap.fe.macros/src/sap/fe/macros/library.js +1 -1
  656. package/packages/sap.fe.macros/src/sap/fe/macros/manifest.json +9 -9
  657. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle.properties +4 -1
  658. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_ar.properties +3 -1
  659. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_bg.properties +3 -1
  660. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_ca.properties +3 -1
  661. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_cs.properties +3 -1
  662. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_cy.properties +3 -1
  663. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_da.properties +3 -1
  664. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_de.properties +4 -2
  665. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_el.properties +3 -1
  666. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_en.properties +3 -1
  667. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_en_GB.properties +3 -1
  668. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_en_US_sappsd.properties +3 -1
  669. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_en_US_saprigi.properties +3 -1
  670. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_en_US_saptrc.properties +3 -1
  671. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_es.properties +3 -1
  672. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_es_MX.properties +3 -1
  673. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_et.properties +3 -1
  674. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_fi.properties +3 -1
  675. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_fr.properties +3 -1
  676. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_fr_CA.properties +3 -1
  677. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_hi.properties +3 -1
  678. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_hr.properties +3 -1
  679. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_hu.properties +4 -2
  680. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_id.properties +4 -2
  681. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_it.properties +3 -1
  682. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_iw.properties +3 -1
  683. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_ja.properties +3 -1
  684. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_kk.properties +3 -1
  685. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_ko.properties +3 -1
  686. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_lt.properties +3 -1
  687. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_lv.properties +3 -1
  688. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_ms.properties +3 -1
  689. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_nl.properties +3 -1
  690. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_no.properties +3 -1
  691. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_pl.properties +3 -1
  692. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_pt.properties +3 -1
  693. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_pt_PT.properties +3 -1
  694. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_ro.properties +3 -1
  695. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_ru.properties +3 -1
  696. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_sh.properties +3 -1
  697. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_sk.properties +3 -1
  698. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_sl.properties +3 -1
  699. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_sv.properties +3 -1
  700. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_th.properties +3 -1
  701. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_tr.properties +3 -1
  702. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_uk.properties +3 -1
  703. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_vi.properties +3 -1
  704. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_zh_CN.properties +3 -1
  705. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_zh_TW.properties +3 -1
  706. package/packages/sap.fe.macros/src/sap/fe/macros/resources.json +273 -199
  707. package/packages/sap.fe.macros/src/sap/fe/macros/table/Actions.fragment.xml +1 -1
  708. package/packages/sap.fe.macros/src/sap/fe/macros/table/Column.fragment.xml +1 -1
  709. package/packages/sap.fe.macros/src/sap/fe/macros/table/ColumnContent.fragment.xml +2 -0
  710. package/packages/sap.fe.macros/src/sap/fe/macros/table/CreationRow.fragment.xml +13 -20
  711. package/packages/sap.fe.macros/src/sap/fe/macros/table/CustomColumn.fragment.xml +1 -0
  712. package/packages/sap.fe.macros/src/sap/fe/macros/table/TableHelper-dbg.js +5 -110
  713. package/packages/sap.fe.macros/src/sap/fe/macros/table/TableHelper.js +1 -1
  714. package/packages/sap.fe.macros/src/sap/fe/macros/table/delegates/TableDelegate-dbg.js +98 -78
  715. package/packages/sap.fe.macros/src/sap/fe/macros/table/delegates/TableDelegate.js +1 -1
  716. package/packages/sap.fe.macros/src/sap/fe/macros/valuehelp/ValueHelpFilterBar.metadata-dbg.js +1 -1
  717. package/packages/sap.fe.macros/src/sap/fe/macros/valuehelp/ValueHelpFilterBar.metadata.js +1 -1
  718. package/packages/sap.fe.macros/test/sap/fe/macros/designtime/api.json +211 -10
  719. package/packages/sap.fe.macros/test/sap/fe/macros/designtime/apiref/api.json +1 -1
  720. package/packages/sap.fe.macros/test/sap/fe/macros/designtime/codeassistance/Library.jsmeta.json +1 -1
  721. package/packages/sap.fe.macros/test/sap/fe/macros/designtime/codeassistance/Library.xmlmeta.json +1 -1
  722. package/packages/sap.fe.macros/test/sap/fe/macros/jest/ChartDelegate.spec.js +1 -45
  723. package/packages/sap.fe.macros/test/sap/fe/macros/jest/ChartDelegate.spec.ts +0 -60
  724. package/packages/sap.fe.macros/test/sap/fe/macros/jest/FieldAPI.spec.js +78 -0
  725. package/packages/sap.fe.macros/test/sap/fe/macros/jest/FieldAPI.spec.ts +71 -0
  726. package/packages/sap.fe.macros/test/sap/fe/macros/jest/FieldMacroDataFieldTypes.spec.js +35 -1
  727. package/packages/sap.fe.macros/test/sap/fe/macros/jest/FieldMacroDataFieldTypes.spec.ts +44 -0
  728. package/packages/sap.fe.macros/test/sap/fe/macros/jest/FilterBarDelegate.spec.js +0 -76
  729. package/packages/sap.fe.macros/test/sap/fe/macros/jest/FilterBarMacro.spec.js +27 -1
  730. package/packages/sap.fe.macros/test/sap/fe/macros/jest/FilterBarMacro.spec.ts +28 -0
  731. package/packages/sap.fe.macros/test/sap/fe/macros/jest/FilterFieldHelper.spec.js +10 -12
  732. package/packages/sap.fe.macros/test/sap/fe/macros/jest/FilterFieldHelper.spec.ts +10 -10
  733. package/packages/sap.fe.macros/test/sap/fe/macros/jest/FilterUtils.spec.js +129 -15
  734. package/packages/sap.fe.macros/test/sap/fe/macros/jest/MacroAPI.spec.js +13 -39
  735. package/packages/sap.fe.macros/test/sap/fe/macros/jest/MacroAPI.spec.ts +2 -2
  736. package/packages/sap.fe.macros/test/sap/fe/macros/jest/RetrieveTextFromValueList.spec.js +119 -0
  737. package/packages/sap.fe.macros/test/sap/fe/macros/jest/RetrieveTextFromValueList.spec.ts +113 -0
  738. package/packages/sap.fe.macros/test/sap/fe/macros/jest/Table.spec.js +166 -2
  739. package/packages/sap.fe.macros/test/sap/fe/macros/jest/Table.spec.ts +190 -3
  740. package/packages/sap.fe.macros/test/sap/fe/macros/jest/TableAPI.spec.js +457 -389
  741. package/packages/sap.fe.macros/test/sap/fe/macros/jest/TableAPI.spec.ts +504 -425
  742. package/packages/sap.fe.macros/test/sap/fe/macros/jest/TableMacro.spec.js +104 -2
  743. package/packages/sap.fe.macros/test/sap/fe/macros/jest/TableMacro.spec.ts +158 -1
  744. package/packages/sap.fe.macros/test/sap/fe/macros/jest/__snapshots__/ChartDelegate.spec.ts.snap +0 -6
  745. package/packages/sap.fe.macros/test/sap/fe/macros/jest/__snapshots__/DatapointMacro.spec.ts.snap +5 -5
  746. package/packages/sap.fe.macros/test/sap/fe/macros/jest/__snapshots__/FieldMacroDataFieldTypes.spec.ts.snap +114 -25
  747. package/packages/sap.fe.macros/test/sap/fe/macros/jest/__snapshots__/FieldMacroWithSemanticKey.spec.ts.snap +40 -40
  748. package/packages/sap.fe.macros/test/sap/fe/macros/jest/__snapshots__/FieldMacroWithValueHelp.spec.ts.snap +4 -8
  749. package/packages/sap.fe.macros/test/sap/fe/macros/jest/__snapshots__/FilterBarMacro.spec.ts.snap +19 -19
  750. package/packages/sap.fe.macros/test/sap/fe/macros/jest/__snapshots__/FilterField.spec.ts.snap +3 -5
  751. package/packages/sap.fe.macros/test/sap/fe/macros/jest/__snapshots__/QuickViewForm.spec.ts.snap +12 -0
  752. package/packages/sap.fe.macros/test/sap/fe/macros/jest/__snapshots__/SimpleFieldMacro.spec.ts.snap +89 -90
  753. package/packages/sap.fe.macros/test/sap/fe/macros/jest/__snapshots__/Table.spec.ts.snap +1314 -58
  754. package/packages/sap.fe.macros/test/sap/fe/macros/jest/__snapshots__/TableMacro.spec.ts.snap +459 -0
  755. package/packages/sap.fe.macros/test/sap/fe/macros/jest/data/FieldMacroDataFieldTypes.cds +18 -2
  756. package/packages/sap.fe.macros/test/sap/fe/macros/jest/data/QuickViewForm.cds +6 -1
  757. package/packages/sap.fe.macros/test/sap/fe/macros/jest/data/Table.cds +107 -106
  758. package/packages/sap.fe.macros/test/sap/fe/macros/jest/data/TableAPI.cds +197 -0
  759. package/packages/sap.fe.macros/test/sap/fe/macros/jest/field/FieldRuntime.spec.js +33 -4
  760. package/packages/sap.fe.macros/test/sap/fe/macros/jest/field/FieldRuntime.spec.ts +30 -4
  761. package/packages/sap.fe.macros/test/sap/fe/macros/jest/field/FieldTemplating.spec.js +72 -29
  762. package/packages/sap.fe.macros/test/sap/fe/macros/jest/field/FieldTemplating.spec.ts +86 -18
  763. package/packages/sap.fe.macros/test/sap/fe/macros/jest/table/__snapshots__/columnWidth.spec.ts.snap +51 -27
  764. package/packages/sap.fe.macros/test/sap/fe/macros/jest/table/columnWidth.spec.js +55 -9
  765. package/packages/sap.fe.macros/test/sap/fe/macros/jest/table/columnWidth.spec.ts +46 -6
  766. package/packages/sap.fe.macros/test/sap/fe/macros/jest/table/data/columnWidth.cds +28 -1
  767. package/packages/sap.fe.macros/test/sap/fe/macros/jest/table/delegates/TableDelegate.spec.js +170 -43
  768. package/packages/sap.fe.macros/test/sap/fe/macros/jest/table/delegates/TableDelegate.spec.ts +131 -15
  769. package/packages/sap.fe.macros/test/sap/fe/macros/jest/table/delegates/__snapshots__/TableDelegate.spec.ts.snap +90 -53
  770. package/packages/sap.fe.macros/test/sap/fe/macros/jest/tsx/TestTSX.spec.tsx +2 -1
  771. package/packages/sap.fe.macros/test/sap/fe/macros/qunit/index.json +0 -5
  772. package/packages/sap.fe.macros/test/sap/fe/macros/qunit/macros/FieldHelper.qunit.js +1 -99
  773. package/packages/sap.fe.macros/test/sap/fe/macros/qunit/macros/FormElementTemplating.qunit.js +1 -1
  774. package/packages/sap.fe.macros/test/sap/fe/macros/qunit/macros/MacroMetadata.qunit.js +4 -4
  775. package/packages/sap.fe.macros/test/sap/fe/macros/qunit/macros/TableHelper.qunit.js +4 -4
  776. package/packages/sap.fe.macros/test/sap/fe/macros/qunit/macros/ValueHelpTemplating.qunit.js +15 -0
  777. package/packages/sap.fe.macros/test/sap/fe/macros/qunit/macros/ValueListHelper.qunit.js +265 -106
  778. package/packages/sap.fe.macros/test/sap/fe/macros/qunit/macros/metadata/simpleMetadata.js +38 -0
  779. package/packages/sap.fe.macros/test/sap/fe/macros/relnotes/changes-1.100.json +372 -0
  780. package/packages/sap.fe.macros/test/sap/fe/macros/relnotes/changes-1.99.json +0 -11
  781. package/packages/sap.fe.navigation/src/sap/fe/navigation/.library +1 -1
  782. package/packages/sap.fe.navigation/src/sap/fe/navigation/.theming +1 -1
  783. package/packages/sap.fe.navigation/src/sap/fe/navigation/library-dbg.js +1 -1
  784. package/packages/sap.fe.navigation/src/sap/fe/navigation/library-h2-preload.js +2 -2
  785. package/packages/sap.fe.navigation/src/sap/fe/navigation/library-h2-preload.js.map +2 -2
  786. package/packages/sap.fe.navigation/src/sap/fe/navigation/library-preload.js +2 -2
  787. package/packages/sap.fe.navigation/src/sap/fe/navigation/library-preload.js.map +2 -2
  788. package/packages/sap.fe.navigation/src/sap/fe/navigation/library.js +1 -1
  789. package/packages/sap.fe.navigation/src/sap/fe/navigation/manifest.json +3 -3
  790. package/packages/sap.fe.navigation/src/sap/fe/navigation/resources.json +8 -8
  791. package/packages/sap.fe.navigation/test/sap/fe/navigation/designtime/api.json +1 -1
  792. package/packages/sap.fe.navigation/test/sap/fe/navigation/designtime/apiref/api.json +1 -1
  793. package/packages/sap.fe.navigation/test/sap/fe/navigation/designtime/codeassistance/Library.xmlmeta.json +1 -1
  794. package/packages/sap.fe.placeholder/src/sap/fe/placeholder/.library +1 -1
  795. package/packages/sap.fe.placeholder/src/sap/fe/placeholder/.theming +1 -1
  796. package/packages/sap.fe.placeholder/src/sap/fe/placeholder/library-dbg.js +1 -1
  797. package/packages/sap.fe.placeholder/src/sap/fe/placeholder/library-h2-preload.js +2 -2
  798. package/packages/sap.fe.placeholder/src/sap/fe/placeholder/library-h2-preload.js.map +2 -2
  799. package/packages/sap.fe.placeholder/src/sap/fe/placeholder/library-preload.js +2 -2
  800. package/packages/sap.fe.placeholder/src/sap/fe/placeholder/library-preload.js.map +2 -2
  801. package/packages/sap.fe.placeholder/src/sap/fe/placeholder/library.js +1 -1
  802. package/packages/sap.fe.placeholder/src/sap/fe/placeholder/manifest.json +3 -3
  803. package/packages/sap.fe.placeholder/src/sap/fe/placeholder/resources.json +27 -27
  804. package/packages/sap.fe.placeholder/src/sap/fe/placeholder/themes/base/css_variables.source.less +316 -15
  805. package/packages/sap.fe.placeholder/src/sap/fe/placeholder/themes/base/resources.json +1 -1
  806. package/packages/sap.fe.placeholder/src/sap/fe/placeholder/themes/sap_belize/css_variables.less +315 -14
  807. package/packages/sap.fe.placeholder/src/sap/fe/placeholder/themes/sap_belize/css_variables.source.less +315 -14
  808. package/packages/sap.fe.placeholder/src/sap/fe/placeholder/themes/sap_belize/resources.json +2 -2
  809. package/packages/sap.fe.placeholder/src/sap/fe/placeholder/themes/sap_belize_hcb/css_variables.less +316 -15
  810. package/packages/sap.fe.placeholder/src/sap/fe/placeholder/themes/sap_belize_hcb/css_variables.source.less +316 -15
  811. package/packages/sap.fe.placeholder/src/sap/fe/placeholder/themes/sap_belize_hcb/resources.json +2 -2
  812. package/packages/sap.fe.placeholder/src/sap/fe/placeholder/themes/sap_belize_hcw/css_variables.less +316 -15
  813. package/packages/sap.fe.placeholder/src/sap/fe/placeholder/themes/sap_belize_hcw/css_variables.source.less +316 -15
  814. package/packages/sap.fe.placeholder/src/sap/fe/placeholder/themes/sap_belize_hcw/resources.json +2 -2
  815. package/packages/sap.fe.placeholder/src/sap/fe/placeholder/themes/sap_belize_plus/css_variables.less +315 -14
  816. package/packages/sap.fe.placeholder/src/sap/fe/placeholder/themes/sap_belize_plus/css_variables.source.less +315 -14
  817. package/packages/sap.fe.placeholder/src/sap/fe/placeholder/themes/sap_belize_plus/resources.json +2 -2
  818. package/packages/sap.fe.placeholder/src/sap/fe/placeholder/themes/sap_fiori_3/css_variables.less +317 -16
  819. package/packages/sap.fe.placeholder/src/sap/fe/placeholder/themes/sap_fiori_3/css_variables.source.less +317 -16
  820. package/packages/sap.fe.placeholder/src/sap/fe/placeholder/themes/sap_fiori_3/resources.json +2 -2
  821. package/packages/sap.fe.placeholder/src/sap/fe/placeholder/themes/sap_fiori_3_dark/css_variables.less +317 -16
  822. package/packages/sap.fe.placeholder/src/sap/fe/placeholder/themes/sap_fiori_3_dark/css_variables.source.less +317 -16
  823. package/packages/sap.fe.placeholder/src/sap/fe/placeholder/themes/sap_fiori_3_dark/resources.json +2 -2
  824. package/packages/sap.fe.placeholder/src/sap/fe/placeholder/themes/sap_fiori_3_hcb/css_variables.less +316 -15
  825. package/packages/sap.fe.placeholder/src/sap/fe/placeholder/themes/sap_fiori_3_hcb/css_variables.source.less +316 -15
  826. package/packages/sap.fe.placeholder/src/sap/fe/placeholder/themes/sap_fiori_3_hcb/resources.json +2 -2
  827. package/packages/sap.fe.placeholder/src/sap/fe/placeholder/themes/sap_fiori_3_hcw/css_variables.less +316 -15
  828. package/packages/sap.fe.placeholder/src/sap/fe/placeholder/themes/sap_fiori_3_hcw/css_variables.source.less +316 -15
  829. package/packages/sap.fe.placeholder/src/sap/fe/placeholder/themes/sap_fiori_3_hcw/resources.json +2 -2
  830. package/packages/sap.fe.placeholder/src/sap/fe/placeholder/themes/sap_horizon/css_variables.less +400 -99
  831. package/packages/sap.fe.placeholder/src/sap/fe/placeholder/themes/sap_horizon/css_variables.source.less +400 -99
  832. package/packages/sap.fe.placeholder/src/sap/fe/placeholder/themes/sap_horizon/resources.json +2 -2
  833. package/packages/sap.fe.placeholder/test/sap/fe/placeholder/designtime/api.json +1 -1
  834. package/packages/sap.fe.placeholder/test/sap/fe/placeholder/designtime/apiref/api.json +1 -1
  835. package/packages/sap.fe.templates/src/sap/fe/templates/.library +1 -1
  836. package/packages/sap.fe.templates/src/sap/fe/templates/.theming +1 -1
  837. package/packages/sap.fe.templates/src/sap/fe/templates/AnalyticalListPage/manifest.json +2 -2
  838. package/packages/sap.fe.templates/src/sap/fe/templates/AnalyticalListPage/resources.json +1 -1
  839. package/packages/sap.fe.templates/src/sap/fe/templates/ListComponent-dbg.js +1 -1
  840. package/packages/sap.fe.templates/src/sap/fe/templates/ListComponent.js +1 -1
  841. package/packages/sap.fe.templates/src/sap/fe/templates/ListReport/Component-dbg.js +7 -1
  842. package/packages/sap.fe.templates/src/sap/fe/templates/ListReport/Component.js +1 -1
  843. package/packages/sap.fe.templates/src/sap/fe/templates/ListReport/ListReport.view.xml +22 -21
  844. package/packages/sap.fe.templates/src/sap/fe/templates/ListReport/ListReportController-dbg.controller.js +13 -18
  845. package/packages/sap.fe.templates/src/sap/fe/templates/ListReport/ListReportController.controller.js +1 -1
  846. package/packages/sap.fe.templates/src/sap/fe/templates/ListReport/manifest.json +2 -2
  847. package/packages/sap.fe.templates/src/sap/fe/templates/ListReport/resources.json +7 -7
  848. package/packages/sap.fe.templates/src/sap/fe/templates/ListReport/view/fragments/MultipleMode.fragment.xml +3 -3
  849. package/packages/sap.fe.templates/src/sap/fe/templates/ObjectPage/AnnotationHelper-dbg.js +50 -9
  850. package/packages/sap.fe.templates/src/sap/fe/templates/ObjectPage/AnnotationHelper.js +1 -1
  851. package/packages/sap.fe.templates/src/sap/fe/templates/ObjectPage/Component-dbg.js +1 -12
  852. package/packages/sap.fe.templates/src/sap/fe/templates/ObjectPage/Component.js +1 -1
  853. package/packages/sap.fe.templates/src/sap/fe/templates/ObjectPage/ObjectPage.view.xml +5 -1
  854. package/packages/sap.fe.templates/src/sap/fe/templates/ObjectPage/ObjectPageController-dbg.controller.js +50 -17
  855. package/packages/sap.fe.templates/src/sap/fe/templates/ObjectPage/ObjectPageController.controller.js +1 -1
  856. package/packages/sap.fe.templates/src/sap/fe/templates/ObjectPage/controls/StashableHBox-dbg.js +7 -1
  857. package/packages/sap.fe.templates/src/sap/fe/templates/ObjectPage/controls/StashableHBox.js +1 -1
  858. package/packages/sap.fe.templates/src/sap/fe/templates/ObjectPage/designtime/FlexBox-dbg.designtime.js +3 -0
  859. package/packages/sap.fe.templates/src/sap/fe/templates/ObjectPage/designtime/FlexBox.designtime.js +1 -1
  860. package/packages/sap.fe.templates/src/sap/fe/templates/ObjectPage/manifest.json +2 -2
  861. package/packages/sap.fe.templates/src/sap/fe/templates/ObjectPage/resources.json +19 -15
  862. package/packages/sap.fe.templates/src/sap/fe/templates/ObjectPage/view/fragments/CollaborationDraft.fragment.xml +36 -0
  863. package/packages/sap.fe.templates/src/sap/fe/templates/ObjectPage/view/fragments/EditableHeaderFacet.fragment.xml +1 -1
  864. package/packages/sap.fe.templates/src/sap/fe/templates/ObjectPage/view/fragments/HeaderFacet.fragment.xml +1 -0
  865. package/packages/sap.fe.templates/src/sap/fe/templates/ObjectPage/view/fragments/HeaderFacetCustomContainer.fragment.xml +1 -0
  866. package/packages/sap.fe.templates/src/sap/fe/templates/RootContainer/controller/Fcl-dbg.controller.js +3 -1
  867. package/packages/sap.fe.templates/src/sap/fe/templates/RootContainer/controller/Fcl.controller.js +1 -1
  868. package/packages/sap.fe.templates/src/sap/fe/templates/RootContainer/controller/NavContainer-dbg.controller.js +3 -1
  869. package/packages/sap.fe.templates/src/sap/fe/templates/RootContainer/controller/NavContainer.controller.js +1 -1
  870. package/packages/sap.fe.templates/src/sap/fe/templates/designtime/library-preload.designtime.js +1 -1
  871. package/packages/sap.fe.templates/src/sap/fe/templates/designtime/library-preload.designtime.js.map +2 -2
  872. package/packages/sap.fe.templates/src/sap/fe/templates/library-dbg.js +1 -1
  873. package/packages/sap.fe.templates/src/sap/fe/templates/library-h2-preload.js +4 -3
  874. package/packages/sap.fe.templates/src/sap/fe/templates/library-h2-preload.js.map +2 -2
  875. package/packages/sap.fe.templates/src/sap/fe/templates/library-preload.js +22 -21
  876. package/packages/sap.fe.templates/src/sap/fe/templates/library-preload.js.map +4 -4
  877. package/packages/sap.fe.templates/src/sap/fe/templates/library.js +1 -1
  878. package/packages/sap.fe.templates/src/sap/fe/templates/manifest.json +14 -14
  879. package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_ar.properties +0 -15
  880. package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_bg.properties +0 -15
  881. package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_ca.properties +0 -15
  882. package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_cs.properties +0 -15
  883. package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_cy.properties +0 -15
  884. package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_da.properties +0 -15
  885. package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_de.properties +0 -15
  886. package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_el.properties +0 -15
  887. package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_en.properties +0 -15
  888. package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_en_GB.properties +0 -15
  889. package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_en_US_sappsd.properties +0 -15
  890. package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_en_US_saprigi.properties +0 -15
  891. package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_en_US_saptrc.properties +0 -15
  892. package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_es.properties +0 -15
  893. package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_es_MX.properties +0 -15
  894. package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_et.properties +0 -15
  895. package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_fi.properties +0 -15
  896. package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_fr.properties +0 -15
  897. package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_fr_CA.properties +0 -15
  898. package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_hi.properties +0 -15
  899. package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_hr.properties +0 -15
  900. package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_hu.properties +0 -15
  901. package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_id.properties +0 -15
  902. package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_it.properties +0 -15
  903. package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_iw.properties +0 -15
  904. package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_ja.properties +0 -15
  905. package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_kk.properties +0 -15
  906. package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_ko.properties +0 -15
  907. package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_lt.properties +0 -15
  908. package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_lv.properties +0 -15
  909. package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_ms.properties +0 -15
  910. package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_nl.properties +0 -15
  911. package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_no.properties +0 -15
  912. package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_pl.properties +0 -15
  913. package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_pt.properties +0 -15
  914. package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_pt_PT.properties +0 -15
  915. package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_ro.properties +0 -15
  916. package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_ru.properties +0 -15
  917. package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_sh.properties +0 -15
  918. package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_sk.properties +0 -15
  919. package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_sl.properties +0 -15
  920. package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_sv.properties +0 -15
  921. package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_th.properties +0 -15
  922. package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_tr.properties +0 -15
  923. package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_uk.properties +0 -15
  924. package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_vi.properties +0 -15
  925. package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_zh_CN.properties +0 -15
  926. package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_zh_TW.properties +0 -15
  927. package/packages/sap.fe.templates/src/sap/fe/templates/resources.json +115 -89
  928. package/packages/sap.fe.templates/test/sap/fe/templates/demokit/apps/itelo/webapp/manifest.json +1 -1
  929. package/packages/sap.fe.templates/test/sap/fe/templates/designtime/api.json +353 -1
  930. package/packages/sap.fe.templates/test/sap/fe/templates/designtime/apiref/api.json +1 -1
  931. package/packages/sap.fe.templates/test/sap/fe/templates/designtime/codeassistance/Library.jsmeta.json +1 -1
  932. package/packages/sap.fe.templates/test/sap/fe/templates/designtime/codeassistance/Library.xmlmeta.json +1 -1
  933. package/packages/sap.fe.templates/test/sap/fe/templates/jest/ListReport/overrides/IntentBasedNavigation.spec.js +1 -1
  934. package/packages/sap.fe.templates/test/sap/fe/templates/jest/ListReport/overrides/IntentBasedNavigation.spec.ts +3 -3
  935. package/packages/sap.fe.templates/test/sap/fe/templates/jest/ListReport/overrides/Share.spec.js +1 -1
  936. package/packages/sap.fe.templates/test/sap/fe/templates/jest/ListReport/overrides/Share.spec.ts +4 -4
  937. package/packages/sap.fe.templates/test/sap/fe/templates/jest/ListReport/overrides/ViewState.spec.js +1 -1
  938. package/packages/sap.fe.templates/test/sap/fe/templates/jest/ListReport/overrides/ViewState.spec.ts +2 -2
  939. package/packages/sap.fe.templates/test/sap/fe/templates/jest/ObjectPage/view/fragments/ObjectPageHeaderForm.spec.js +2 -1
  940. package/packages/sap.fe.templates/test/sap/fe/templates/jest/ObjectPage/view/fragments/ObjectPageHeaderForm.spec.ts +2 -1
  941. package/packages/sap.fe.templates/test/sap/fe/templates/jest/ObjectPage/view/fragments/__snapshots__/HeaderFacet.spec.ts.snap +7 -7
  942. package/packages/sap.fe.templates/test/sap/fe/templates/jest/RootContainer/RootContainerBaseController.spec.js +30 -61
  943. package/packages/sap.fe.templates/test/sap/fe/templates/jest/RootContainer/RootContainerBaseController.spec.ts +1 -1
  944. package/packages/sap.fe.templates/test/sap/fe/templates/relnotes/changes-1.100.json +192 -0
  945. package/packages/sap.fe.templates/test/sap/fe/templates/relnotes/changes-1.99.json +0 -11
  946. package/packages/sap.fe.test/src/sap/fe/test/.library +1 -1
  947. package/packages/sap.fe.test/src/sap/fe/test/.theming +1 -1
  948. package/packages/sap.fe.test/src/sap/fe/test/FeMocks-dbg.js +1 -1
  949. package/packages/sap.fe.test/src/sap/fe/test/FeMocks.ts +8 -8
  950. package/packages/sap.fe.test/src/sap/fe/test/JestTemplatingHelper-dbg.js +6 -4
  951. package/packages/sap.fe.test/src/sap/fe/test/JestTemplatingHelper.js +1 -1
  952. package/packages/sap.fe.test/src/sap/fe/test/JestTemplatingHelper.ts +10 -6
  953. package/packages/sap.fe.test/src/sap/fe/test/UI5MockHelper-dbg.js +126 -203
  954. package/packages/sap.fe.test/src/sap/fe/test/UI5MockHelper.js +1 -1
  955. package/packages/sap.fe.test/src/sap/fe/test/UI5MockHelper.ts +17 -2
  956. package/packages/sap.fe.test/src/sap/fe/test/api/FilterBarAPI-dbg.js +9 -1
  957. package/packages/sap.fe.test/src/sap/fe/test/api/FilterBarAPI.js +1 -1
  958. package/packages/sap.fe.test/src/sap/fe/test/library-dbg.js +1 -1
  959. package/packages/sap.fe.test/src/sap/fe/test/library-h2-preload.js +2 -2
  960. package/packages/sap.fe.test/src/sap/fe/test/library-h2-preload.js.map +2 -2
  961. package/packages/sap.fe.test/src/sap/fe/test/library-preload.js +9 -18
  962. package/packages/sap.fe.test/src/sap/fe/test/library-preload.js.map +3 -3
  963. package/packages/sap.fe.test/src/sap/fe/test/library.js +1 -1
  964. package/packages/sap.fe.test/src/sap/fe/test/manifest.json +3 -3
  965. package/packages/sap.fe.test/src/sap/fe/test/resources.json +18 -18
  966. package/packages/sap.fe.test/test/sap/fe/test/designtime/api.json +1 -1
  967. package/packages/sap.fe.test/test/sap/fe/test/designtime/apiref/api.json +1 -1
  968. package/packages/sap.fe.test/test/sap/fe/test/designtime/codeassistance/Library.xmlmeta.json +1 -1
  969. package/packages/sap.fe.macros/test/sap/fe/macros/qunit/macros/FormTemplatingTs.qunit.js +0 -271
@@ -120,6 +120,17 @@ sap.ui.define([], function () {
120
120
  /**
121
121
  * Insert a set of custom elements in the right position in an original collection.
122
122
  *
123
+ * Parameters for overwritableKeys and their implications:
124
+ * "overwrite": The whole object gets overwritten - if the customElements include a default, this will overrule the whole rootElements configuration.
125
+ * "merge": This is similar to calling insertCustomElements itself. You must include the
126
+ * full CustomElement syntax within the customElements, including anchors, for example.
127
+ * "ignore": There are no additions and no combinations. Only the rootElements object is used.
128
+ *
129
+ * Note - Proceed as follows in case you have defined customElements and do not want to overwrite their values with defaults:
130
+ * Hand the rootElements into the creation function of the customElement.
131
+ * Depending on the existence of both rootElement-configuration and customElement-configuration,
132
+ * you must set the customElements property, for which the "overwrite"-property is set, explicitly to undefined.
133
+ *
123
134
  * @template T
124
135
  * @param rootElements A list of "ConfigurableObject" which means object that have a unique "key"
125
136
  * @param customElements An object containing extra object to add, they are indexed by a key and have a "position" object
@@ -214,4 +225,4 @@ sap.ui.define([], function () {
214
225
  _exports.insertCustomElements = insertCustomElements;
215
226
  return _exports;
216
227
  }, false);
217
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIkNvbmZpZ3VyYWJsZU9iamVjdC50cyJdLCJuYW1lcyI6WyJQbGFjZW1lbnQiLCJvcmRlclBvc2l0aW9uaW5nSXRlbVJlY3Vyc2l2ZWx5IiwicG9zaXRpb25pbmdJdGVtcyIsImFuY2hvciIsInNvcnRlZCIsInZpc2l0ZWQiLCJpbnNlcnRJbmRleCIsImluZGV4T2YiLCJhbmNob3JJdGVtIiwidW5kZWZpbmVkIiwiRXJyb3IiLCJwbGFjZW1lbnQiLCJCZWZvcmUiLCJsZW5ndGgiLCJzcGxpY2UiLCJpc0FycmF5Q29uZmlnIiwiY29uZmlnIiwiYXBwbHlPdmVycmlkZSIsIm92ZXJ3cml0YWJsZUtleXMiLCJzb3VyY2VJdGVtIiwiY3VzdG9tRWxlbWVudCIsIm91dEl0ZW0iLCJvdmVyd3JpdGFibGVLZXkiLCJPYmplY3QiLCJoYXNPd25Qcm9wZXJ0eSIsImNhbGwiLCJvdmVycmlkZUNvbmZpZyIsInN1Ykl0ZW0iLCJzdWJDb25maWciLCJBcnJheSIsImlzQXJyYXkiLCJpbnNlcnRDdXN0b21FbGVtZW50cyIsInJvb3RFbGVtZW50cyIsImN1c3RvbUVsZW1lbnRzIiwiZmlyc3RBbmNob3IiLCJrZXkiLCJyb290RWxlbWVudHNXaXRob3V0TGFzdCIsImZpbHRlciIsInJvb3RFbGVtZW50IiwicG9zaXRpb24iLCJFbmQiLCJsYXN0QW5jaG9yIiwiZW5kRWxlbWVudCIsIml0ZW1zUGVyS2V5IiwiZm9yRWFjaCIsIkFmdGVyIiwia2V5cyIsImN1c3RvbUVsZW1lbnRLZXkiLCJwb3RlbnRpYWxBbmNob3IiLCJtZW51IiwibWFwIiwic29ydGVkS2V5cyIsInBvc2l0aW9uSXRlbUtleSIsIm91dEVsZW1lbnRzIiwicHVzaCJdLCJtYXBwaW5ncyI6IjtBQUFBO0FBQ0E7QUFDQTs7Ozs7O01BR1lBLFM7O2FBQUFBLFM7QUFBQUEsSUFBQUEsUztBQUFBQSxJQUFBQSxTO0FBQUFBLElBQUFBLFM7S0FBQUEsUyxLQUFBQSxTOzs7O0FBcUJaO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7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LEdBQWYsQ0FBaEIsR0FBc0NRLFdBQVcsQ0FBQ3ZCLGFBQWEsQ0FBQ2UsR0FBZixDQUFYLENBQStCSSxRQUFyRTtBQUNBO0FBQ0Q7QUFDSDtBQUNBO0FBQ0E7QUFDQTs7QUFDRyxPQVpELE1BWU87QUFDTkksUUFBQUEsV0FBVyxDQUFDdkIsYUFBYSxDQUFDZSxHQUFmLENBQVgsR0FBaUNsQixhQUFhLENBQUNDLGdCQUFELEVBQW1CLElBQW5CLEVBQXlCRSxhQUF6QixDQUE5QztBQUNBbEIsUUFBQUEsZ0JBQWdCLENBQUNrQixhQUFhLENBQUNlLEdBQWYsQ0FBaEIsR0FBc0NmLGFBQWEsQ0FBQ21CLFFBQXBEO0FBQ0E7QUFDRCxLQWxDRDtBQW1DQSxRQUFNWSxVQUFvQixHQUFHLEVBQTdCO0FBRUE1QixJQUFBQSxNQUFNLENBQUN1QixJQUFQLENBQVk1QyxnQkFBWixFQUE4QjBDLE9BQTlCLENBQXNDLFVBQUFRLGVBQWUsRUFBSTtBQUN4RG5ELE1BQUFBLCtCQUErQixDQUFDQyxnQkFBRCxFQUFtQmtELGVBQW5CLEVBQW9DRCxVQUFwQyxFQUFnRCxFQUFoRCxDQUEvQjtBQUNBLEtBRkQ7QUFJQSxRQUFNRSxXQUFXLEdBQUdGLFVBQVUsQ0FBQ0QsR0FBWCxDQUFlLFVBQUFmLEdBQUc7QUFBQSxhQUFJUSxXQUFXLENBQUNSLEdBQUQsQ0FBZjtBQUFBLEtBQWxCLENBQXBCOztBQUNBLFFBQUlPLFVBQUosRUFBZ0I7QUFDZlcsTUFBQUEsV0FBVyxDQUFDQyxJQUFaLENBQWlCWixVQUFqQjtBQUNBOztBQUNELFdBQU9XLFdBQVA7QUFDQSIsInNvdXJjZVJvb3QiOiIuIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHR5cGUgUG9zaXRpb24gPSB7XG5cdGFuY2hvcj86IHN0cmluZztcblx0cGxhY2VtZW50OiBQbGFjZW1lbnQ7XG59O1xuXG5leHBvcnQgZW51bSBQbGFjZW1lbnQge1xuXHRBZnRlciA9IFwiQWZ0ZXJcIixcblx0QmVmb3JlID0gXCJCZWZvcmVcIixcblx0RW5kID0gXCJFbmRcIlxufVxuZXhwb3J0IHR5cGUgQ29uZmlndXJhYmxlT2JqZWN0S2V5ID0gc3RyaW5nO1xuZXhwb3J0IHR5cGUgQ29uZmlndXJhYmxlT2JqZWN0ID0gUG9zaXRpb25hYmxlICYge1xuXHRrZXk6IENvbmZpZ3VyYWJsZU9iamVjdEtleTtcbn07XG5cbmV4cG9ydCB0eXBlIEN1c3RvbUVsZW1lbnQ8VCBleHRlbmRzIENvbmZpZ3VyYWJsZU9iamVjdD4gPSBUICYge1xuXHRwb3NpdGlvbjogUG9zaXRpb247XG5cdG1lbnU/OiBhbnlbXSB8IHVuZGVmaW5lZDtcbn07XG5cbmV4cG9ydCB0eXBlIFBvc2l0aW9uYWJsZSA9IHtcblx0cG9zaXRpb24/OiBQb3NpdGlvbjtcbn07XG5cbmV4cG9ydCB0eXBlIENvbmZpZ3VyYWJsZVJlY29yZDxUPiA9IFJlY29yZDxDb25maWd1cmFibGVPYmplY3RLZXksIFQ+O1xuXG4vKipcbiAqIFJlY3Vyc2l2ZSBtZXRob2QgdGhhdCBvcmRlciB0aGUga2V5cyBiYXNlZCBvbiBhIHBvc2l0aW9uIGluZm9ybWF0aW9uLlxuICpcbiAqIEBwYXJhbSBwb3NpdGlvbmluZ0l0ZW1zXG4gKiBAcGFyYW0gYW5jaG9yXG4gKiBAcGFyYW0gc29ydGVkXG4gKiBAcGFyYW0gdmlzaXRlZFxuICogQHJldHVybnMge251bWJlcn0gVGhlIG9yZGVyIG9mIHRoZSBjdXJyZW50IGl0ZW1cbiAqL1xuY29uc3Qgb3JkZXJQb3NpdGlvbmluZ0l0ZW1SZWN1cnNpdmVseSA9IChcblx0cG9zaXRpb25pbmdJdGVtczogUmVjb3JkPHN0cmluZywgUmVxdWlyZWQ8UG9zaXRpb24+Pixcblx0YW5jaG9yOiBzdHJpbmcsXG5cdHNvcnRlZDogc3RyaW5nW10sXG5cdHZpc2l0ZWQ6IFJlY29yZDxzdHJpbmcsIFJlcXVpcmVkPFBvc2l0aW9uPj5cbik6IG51bWJlciA9PiB7XG5cdGxldCBpbnNlcnRJbmRleCA9IHNvcnRlZC5pbmRleE9mKGFuY2hvcik7XG5cdGlmIChpbnNlcnRJbmRleCAhPT0gLTEpIHtcblx0XHRyZXR1cm4gaW5zZXJ0SW5kZXg7XG5cdH1cblx0Y29uc3QgYW5jaG9ySXRlbTogUmVxdWlyZWQ8UG9zaXRpb24+ID0gcG9zaXRpb25pbmdJdGVtc1thbmNob3JdO1xuXHRpZiAoYW5jaG9ySXRlbSA9PT0gdW5kZWZpbmVkKSB7XG5cdFx0Ly9yZXR1cm4gc29ydGVkLmxlbmd0aDtcblx0XHR0aHJvdyBuZXcgRXJyb3IoXCJwb3NpdGlvbiBhbmNob3Igbm90IGZvdW5kOiBcIiArIGFuY2hvcik7XG5cdH1cblxuXHR2aXNpdGVkW2FuY2hvcl0gPSBhbmNob3JJdGVtO1xuXHRpZiAoYW5jaG9ySXRlbSAmJiAhKGFuY2hvckl0ZW0uYW5jaG9yIGluIHZpc2l0ZWQpKSB7XG5cdFx0aW5zZXJ0SW5kZXggPSBvcmRlclBvc2l0aW9uaW5nSXRlbVJlY3Vyc2l2ZWx5KHBvc2l0aW9uaW5nSXRlbXMsIGFuY2hvckl0ZW0uYW5jaG9yLCBzb3J0ZWQsIHZpc2l0ZWQpO1xuXHRcdGlmIChhbmNob3JJdGVtLnBsYWNlbWVudCAhPT0gUGxhY2VtZW50LkJlZm9yZSkge1xuXHRcdFx0KytpbnNlcnRJbmRleDtcblx0XHR9XG5cdH0gZWxzZSB7XG5cdFx0aW5zZXJ0SW5kZXggPSBzb3J0ZWQubGVuZ3RoO1xuXHR9XG5cblx0c29ydGVkLnNwbGljZShpbnNlcnRJbmRleCwgMCwgYW5jaG9yKTtcblx0cmV0dXJuIGluc2VydEluZGV4O1xufTtcblxudHlwZSBPdmVycmlkZVR5cGUgPSBcIm1lcmdlXCIgfCBcIm92ZXJ3cml0ZVwiIHwgXCJpZ25vcmVcIjtcbnR5cGUgQXJyYXlPdmVycmlkZVR5cGU8QXJyYXlUeXBlPiA9IE92ZXJyaWRlS2V5czxBcnJheVR5cGU+O1xuXG50eXBlIEVsZW1lbnRUeXBlPFQ+ID0gVCBleHRlbmRzIGFueVtdID8gVFtudW1iZXJdIDogVDtcbnR5cGUgT3ZlcnJpZGVLZXlzPFQ+ID0ge1xuXHRbUCBpbiBrZXlvZiBUXT86IE92ZXJyaWRlVHlwZSB8IEFycmF5T3ZlcnJpZGVUeXBlPEVsZW1lbnRUeXBlPFRbUF0+Pjtcbn07XG5cbmZ1bmN0aW9uIGlzQXJyYXlDb25maWc8VD4oY29uZmlnOiBPdmVycmlkZVR5cGUgfCBBcnJheU92ZXJyaWRlVHlwZTxUPiB8IHVuZGVmaW5lZCk6IGNvbmZpZyBpcyBBcnJheU92ZXJyaWRlVHlwZTxUPiB7XG5cdHJldHVybiB0eXBlb2YgY29uZmlnID09PSBcIm9iamVjdFwiO1xufVxuXG5mdW5jdGlvbiBhcHBseU92ZXJyaWRlPFQgZXh0ZW5kcyBPYmplY3Q+KG92ZXJ3cml0YWJsZUtleXM6IE92ZXJyaWRlS2V5czxUPiwgc291cmNlSXRlbTogVCB8IG51bGwsIGN1c3RvbUVsZW1lbnQ6IFQpOiBUIHtcblx0Y29uc3Qgb3V0SXRlbTogVCA9IHNvdXJjZUl0ZW0gfHwgY3VzdG9tRWxlbWVudDtcblx0Zm9yIChjb25zdCBvdmVyd3JpdGFibGVLZXkgaW4gb3ZlcndyaXRhYmxlS2V5cykge1xuXHRcdGlmIChPYmplY3QuaGFzT3duUHJvcGVydHkuY2FsbChvdmVyd3JpdGFibGVLZXlzLCBvdmVyd3JpdGFibGVLZXkpKSB7XG5cdFx0XHRjb25zdCBvdmVycmlkZUNvbmZpZyA9IG92ZXJ3cml0YWJsZUtleXNbb3ZlcndyaXRhYmxlS2V5XTtcblx0XHRcdGlmIChzb3VyY2VJdGVtICE9PSBudWxsKSB7XG5cdFx0XHRcdHN3aXRjaCAob3ZlcnJpZGVDb25maWcpIHtcblx0XHRcdFx0XHRjYXNlIFwib3ZlcndyaXRlXCI6XG5cdFx0XHRcdFx0XHRpZiAoY3VzdG9tRWxlbWVudC5oYXNPd25Qcm9wZXJ0eShvdmVyd3JpdGFibGVLZXkpICYmIGN1c3RvbUVsZW1lbnRbb3ZlcndyaXRhYmxlS2V5XSAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0XHRcdFx0XHRcdHNvdXJjZUl0ZW1bb3ZlcndyaXRhYmxlS2V5XSA9IGN1c3RvbUVsZW1lbnRbb3ZlcndyaXRhYmxlS2V5XTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgXCJtZXJnZVwiOlxuXHRcdFx0XHRcdGRlZmF1bHQ6XG5cdFx0XHRcdFx0XHRjb25zdCBzdWJJdGVtID0gc291cmNlSXRlbVtvdmVyd3JpdGFibGVLZXldIHx8IChbXSBhcyBhbnlbXSk7XG5cdFx0XHRcdFx0XHRsZXQgc3ViQ29uZmlnID0ge307XG5cdFx0XHRcdFx0XHRpZiAoaXNBcnJheUNvbmZpZyhvdmVycmlkZUNvbmZpZykpIHtcblx0XHRcdFx0XHRcdFx0c3ViQ29uZmlnID0gb3ZlcnJpZGVDb25maWc7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRpZiAoQXJyYXkuaXNBcnJheShzdWJJdGVtKSkge1xuXHRcdFx0XHRcdFx0XHRzb3VyY2VJdGVtW292ZXJ3cml0YWJsZUtleV0gPSBpbnNlcnRDdXN0b21FbGVtZW50cyhcblx0XHRcdFx0XHRcdFx0XHRzdWJJdGVtLFxuXHRcdFx0XHRcdFx0XHRcdChjdXN0b21FbGVtZW50ICYmIChjdXN0b21FbGVtZW50W292ZXJ3cml0YWJsZUtleV0gYXMgUmVjb3JkPHN0cmluZywgQ3VzdG9tRWxlbWVudDxhbnk+PikpIHx8IHt9LFxuXHRcdFx0XHRcdFx0XHRcdHN1YkNvbmZpZ1xuXHRcdFx0XHRcdFx0XHQpIGFzIGFueTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHR9XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRzd2l0Y2ggKG92ZXJyaWRlQ29uZmlnKSB7XG5cdFx0XHRcdFx0Y2FzZSBcIm92ZXJ3cml0ZVwiOlxuXHRcdFx0XHRcdFx0aWYgKGN1c3RvbUVsZW1lbnQuaGFzT3duUHJvcGVydHkob3ZlcndyaXRhYmxlS2V5KSAmJiBjdXN0b21FbGVtZW50W292ZXJ3cml0YWJsZUtleV0gIT09IHVuZGVmaW5lZCkge1xuXHRcdFx0XHRcdFx0XHRvdXRJdGVtW292ZXJ3cml0YWJsZUtleV0gPSBjdXN0b21FbGVtZW50W292ZXJ3cml0YWJsZUtleV07XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHRjYXNlIFwibWVyZ2VcIjpcblx0XHRcdFx0XHRkZWZhdWx0OlxuXHRcdFx0XHRcdFx0bGV0IHN1YkNvbmZpZyA9IHt9O1xuXHRcdFx0XHRcdFx0aWYgKGlzQXJyYXlDb25maWcob3ZlcnJpZGVDb25maWcpKSB7XG5cdFx0XHRcdFx0XHRcdHN1YkNvbmZpZyA9IG92ZXJyaWRlQ29uZmlnO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0b3V0SXRlbVtvdmVyd3JpdGFibGVLZXldID0gaW5zZXJ0Q3VzdG9tRWxlbWVudHMoXG5cdFx0XHRcdFx0XHRcdFtdIGFzIGFueVtdLFxuXHRcdFx0XHRcdFx0XHQoY3VzdG9tRWxlbWVudCAmJiAoY3VzdG9tRWxlbWVudFtvdmVyd3JpdGFibGVLZXldIGFzIFJlY29yZDxzdHJpbmcsIEN1c3RvbUVsZW1lbnQ8YW55Pj4pKSB8fCB7fSxcblx0XHRcdFx0XHRcdFx0c3ViQ29uZmlnXG5cdFx0XHRcdFx0XHQpIGFzIGFueTtcblx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cdHJldHVybiBvdXRJdGVtO1xufVxuXG4vKipcbiAqIEluc2VydCBhIHNldCBvZiBjdXN0b20gZWxlbWVudHMgaW4gdGhlIHJpZ2h0IHBvc2l0aW9uIGluIGFuIG9yaWdpbmFsIGNvbGxlY3Rpb24uXG4gKlxuICogQHRlbXBsYXRlIFRcbiAqIEBwYXJhbSByb290RWxlbWVudHMgQSBsaXN0IG9mIFwiQ29uZmlndXJhYmxlT2JqZWN0XCIgd2hpY2ggbWVhbnMgb2JqZWN0IHRoYXQgaGF2ZSBhIHVuaXF1ZSBcImtleVwiXG4gKiBAcGFyYW0gY3VzdG9tRWxlbWVudHMgQW4gb2JqZWN0IGNvbnRhaW5pbmcgZXh0cmEgb2JqZWN0IHRvIGFkZCwgdGhleSBhcmUgaW5kZXhlZCBieSBhIGtleSBhbmQgaGF2ZSBhIFwicG9zaXRpb25cIiBvYmplY3RcbiAqIEBwYXJhbSBvdmVyd3JpdGFibGVLZXlzIFRoZSBsaXN0IG9mIGtleXMgZnJvbSB0aGUgb3JpZ2luYWwgb2JqZWN0IHRoYXQgY2FuIGJlIG92ZXJ3cml0dGVuIGluIGNhc2UgYSBjdXN0b20gZWxlbWVudCBoYXMgdGhlIHNhbWUgXCJrZXlcIlxuICogQHJldHVybnMge1RbXX0gQW4gb3JkZXJlZCBhcnJheSBvZiBlbGVtZW50cyBpbmNsdWRpbmcgdGhlIGN1c3RvbSBvbmVzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpbnNlcnRDdXN0b21FbGVtZW50czxUIGV4dGVuZHMgQ29uZmlndXJhYmxlT2JqZWN0Pihcblx0cm9vdEVsZW1lbnRzOiBUW10sXG5cdGN1c3RvbUVsZW1lbnRzOiBSZWNvcmQ8c3RyaW5nLCBDdXN0b21FbGVtZW50PFQ+Pixcblx0b3ZlcndyaXRhYmxlS2V5czogT3ZlcnJpZGVLZXlzPFQ+ID0ge31cbik6IFRbXSB7XG5cdGNvbnN0IGZpcnN0QW5jaG9yID0gcm9vdEVsZW1lbnRzLmxlbmd0aCA/IHJvb3RFbGVtZW50c1swXS5rZXkgOiBudWxsO1xuXHRjb25zdCByb290RWxlbWVudHNXaXRob3V0TGFzdCA9IHJvb3RFbGVtZW50cy5maWx0ZXIocm9vdEVsZW1lbnQgPT4ge1xuXHRcdHJldHVybiByb290RWxlbWVudC5wb3NpdGlvbj8ucGxhY2VtZW50ICE9PSBQbGFjZW1lbnQuRW5kO1xuXHR9KTtcblx0Y29uc3QgbGFzdEFuY2hvciA9IHJvb3RFbGVtZW50cy5sZW5ndGggPyByb290RWxlbWVudHNbcm9vdEVsZW1lbnRzV2l0aG91dExhc3QubGVuZ3RoIC0gMV0ua2V5IDogbnVsbDtcblx0bGV0IGVuZEVsZW1lbnQ6IFQgfCB1bmRlZmluZWQ7XG5cdGNvbnN0IHBvc2l0aW9uaW5nSXRlbXM6IFJlY29yZDxzdHJpbmcsIFJlcXVpcmVkPFBvc2l0aW9uPj4gPSB7fTtcblx0Y29uc3QgaXRlbXNQZXJLZXk6IFJlY29yZDxzdHJpbmcsIFQ+ID0ge307XG5cdHJvb3RFbGVtZW50cy5mb3JFYWNoKHJvb3RFbGVtZW50ID0+IHtcblx0XHRpZiAocm9vdEVsZW1lbnQucG9zaXRpb24/LnBsYWNlbWVudCA9PT0gUGxhY2VtZW50LkVuZCAmJiAhZW5kRWxlbWVudCkge1xuXHRcdFx0ZW5kRWxlbWVudCA9IHJvb3RFbGVtZW50O1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRwb3NpdGlvbmluZ0l0ZW1zW3Jvb3RFbGVtZW50LmtleV0gPSB7XG5cdFx0XHRcdGFuY2hvcjogcm9vdEVsZW1lbnQucG9zaXRpb24/LmFuY2hvciB8fCByb290RWxlbWVudC5rZXksXG5cdFx0XHRcdHBsYWNlbWVudDogcm9vdEVsZW1lbnQucG9zaXRpb24/LnBsYWNlbWVudCB8fCBQbGFjZW1lbnQuQWZ0ZXJcblx0XHRcdH07XG5cdFx0fVxuXHRcdGl0ZW1zUGVyS2V5W3Jvb3RFbGVtZW50LmtleV0gPSByb290RWxlbWVudDtcblx0fSk7XG5cdE9iamVjdC5rZXlzKGN1c3RvbUVsZW1lbnRzKS5mb3JFYWNoKGN1c3RvbUVsZW1lbnRLZXkgPT4ge1xuXHRcdGNvbnN0IGN1c3RvbUVsZW1lbnQgPSBjdXN0b21FbGVtZW50c1tjdXN0b21FbGVtZW50S2V5XTtcblx0XHRjb25zdCBhbmNob3IgPSBjdXN0b21FbGVtZW50LnBvc2l0aW9uLmFuY2hvcjtcblx0XHQvLyBJZiBubyBwbGFjZW1lbnQgZGVmaW5lZCB3ZSBhcmUgQWZ0ZXJcblx0XHRpZiAoIWN1c3RvbUVsZW1lbnQucG9zaXRpb24ucGxhY2VtZW50KSB7XG5cdFx0XHRjdXN0b21FbGVtZW50LnBvc2l0aW9uLnBsYWNlbWVudCA9IFBsYWNlbWVudC5BZnRlcjtcblx0XHR9XG5cdFx0Ly8gSWYgbm8gYW5jaG9yIHdlJ3JlIGVpdGhlciBBZnRlciB0aGUgbGFzdCBhbmNob3Igb3IgQmVmb3JlIHRoZSBmaXJzdFxuXHRcdGlmICghYW5jaG9yKSB7XG5cdFx0XHRjb25zdCBwb3RlbnRpYWxBbmNob3IgPSBjdXN0b21FbGVtZW50LnBvc2l0aW9uLnBsYWNlbWVudCA9PT0gUGxhY2VtZW50LkFmdGVyID8gbGFzdEFuY2hvciA6IGZpcnN0QW5jaG9yO1xuXHRcdFx0Y3VzdG9tRWxlbWVudC5wb3NpdGlvbi5hbmNob3IgPSBwb3RlbnRpYWxBbmNob3IgPyBwb3RlbnRpYWxBbmNob3IgOiBjdXN0b21FbGVtZW50S2V5O1xuXHRcdH1cblxuXHRcdC8vIEFkZGluZyBib3VuZC91bmJvdW5kIGFjdGlvbnMgdG8gbWVudVxuXHRcdGN1c3RvbUVsZW1lbnQubWVudSA9IGN1c3RvbUVsZW1lbnQ/Lm1lbnU/Lm1hcChtZW51ID0+IHtcblx0XHRcdHJldHVybiBpdGVtc1BlcktleVttZW51LmtleV0gPz8gbWVudTtcblx0XHR9KTtcblxuXHRcdGlmIChpdGVtc1BlcktleVtjdXN0b21FbGVtZW50LmtleV0pIHtcblx0XHRcdGl0ZW1zUGVyS2V5W2N1c3RvbUVsZW1lbnQua2V5XSA9IGFwcGx5T3ZlcnJpZGUob3ZlcndyaXRhYmxlS2V5cywgaXRlbXNQZXJLZXlbY3VzdG9tRWxlbWVudC5rZXldLCBjdXN0b21FbGVtZW50KTtcblxuXHRcdFx0Ly9Qb3NpdGlvbiBpcyBvdmVyd3JpdHRlbiBmb3IgZmlsdGVyIGZpZWxkcyBpZiB0aGVyZSBpcyBhIGNoYW5nZSBpbiBtYW5pZmVzdFxuXHRcdFx0aWYgKGFuY2hvciAmJiBjdXN0b21FbGVtZW50LnBvc2l0aW9uICYmIG92ZXJ3cml0YWJsZUtleXMucG9zaXRpb24gJiYgb3ZlcndyaXRhYmxlS2V5cy5wb3NpdGlvbiA9PT0gXCJvdmVyd3JpdGVcIikge1xuXHRcdFx0XHRwb3NpdGlvbmluZ0l0ZW1zW2N1c3RvbUVsZW1lbnQua2V5XSA9IGl0ZW1zUGVyS2V5W2N1c3RvbUVsZW1lbnQua2V5XS5wb3NpdGlvbiBhcyBSZXF1aXJlZDxQb3NpdGlvbj47XG5cdFx0XHR9XG5cdFx0XHQvKipcblx0XHRcdCAqIGFuY2hvciBjaGVjayBpcyBhZGRlZCB0byBtYWtlIHN1cmUgY2hhbmdlIGluIHByb3BlcnRpZXMgaW4gdGhlIG1hbmlmZXN0IGRvZXMgbm90IGFmZmVjdCB0aGUgcG9zaXRpb24gb2YgdGhlIGZpZWxkLlxuXHRcdFx0ICogT3RoZXJ3aXNlLCB3aGVuIG5vIHBvc2l0aW9uIGlzIG1lbnRpb25lZCBpbiBtYW5pZmVzdCBmb3IgYW4gYWx0ZXJlZCBmaWVsZCwgdGhlIHBvc2l0aW9uIGlzIGNoYW5nZWQgYXNcblx0XHRcdCAqIHBlciB0aGUgcG90ZW50aWFsIGFuY2hvclxuXHRcdFx0ICovXG5cdFx0fSBlbHNlIHtcblx0XHRcdGl0ZW1zUGVyS2V5W2N1c3RvbUVsZW1lbnQua2V5XSA9IGFwcGx5T3ZlcnJpZGUob3ZlcndyaXRhYmxlS2V5cywgbnVsbCwgY3VzdG9tRWxlbWVudCk7XG5cdFx0XHRwb3NpdGlvbmluZ0l0ZW1zW2N1c3RvbUVsZW1lbnQua2V5XSA9IGN1c3RvbUVsZW1lbnQucG9zaXRpb24gYXMgUmVxdWlyZWQ8UG9zaXRpb24+O1xuXHRcdH1cblx0fSk7XG5cdGNvbnN0IHNvcnRlZEtleXM6IHN0cmluZ1tdID0gW107XG5cblx0T2JqZWN0LmtleXMocG9zaXRpb25pbmdJdGVtcykuZm9yRWFjaChwb3NpdGlvbkl0ZW1LZXkgPT4ge1xuXHRcdG9yZGVyUG9zaXRpb25pbmdJdGVtUmVjdXJzaXZlbHkocG9zaXRpb25pbmdJdGVtcywgcG9zaXRpb25JdGVtS2V5LCBzb3J0ZWRLZXlzLCB7fSk7XG5cdH0pO1xuXG5cdGNvbnN0IG91dEVsZW1lbnRzID0gc29ydGVkS2V5cy5tYXAoa2V5ID0+IGl0ZW1zUGVyS2V5W2tleV0pO1xuXHRpZiAoZW5kRWxlbWVudCkge1xuXHRcdG91dEVsZW1lbnRzLnB1c2goZW5kRWxlbWVudCk7XG5cdH1cblx0cmV0dXJuIG91dEVsZW1lbnRzO1xufVxuIl19
228
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIkNvbmZpZ3VyYWJsZU9iamVjdC50cyJdLCJuYW1lcyI6WyJQbGFjZW1lbnQiLCJvcmRlclBvc2l0aW9uaW5nSXRlbVJlY3Vyc2l2ZWx5IiwicG9zaXRpb25pbmdJdGVtcyIsImFuY2hvciIsInNvcnRlZCIsInZpc2l0ZWQiLCJpbnNlcnRJbmRleCIsImluZGV4T2YiLCJhbmNob3JJdGVtIiwidW5kZWZpbmVkIiwiRXJyb3IiLCJwbGFjZW1lbnQiLCJCZWZvcmUiLCJsZW5ndGgiLCJzcGxpY2UiLCJpc0FycmF5Q29uZmlnIiwiY29uZmlnIiwiYXBwbHlPdmVycmlkZSIsIm92ZXJ3cml0YWJsZUtleXMiLCJzb3VyY2VJdGVtIiwiY3VzdG9tRWxlbWVudCIsIm91dEl0ZW0iLCJvdmVyd3JpdGFibGVLZXkiLCJPYmplY3QiLCJoYXNPd25Qcm9wZXJ0eSIsImNhbGwiLCJvdmVycmlkZUNvbmZpZyIsInN1Ykl0ZW0iLCJzdWJDb25maWciLCJBcnJheSIsImlzQXJyYXkiLCJpbnNlcnRDdXN0b21FbGVtZW50cyIsInJvb3RFbGVtZW50cyIsImN1c3RvbUVsZW1lbnRzIiwiZmlyc3RBbmNob3IiLCJrZXkiLCJyb290RWxlbWVudHNXaXRob3V0TGFzdCIsImZpbHRlciIsInJvb3RFbGVtZW50IiwicG9zaXRpb24iLCJFbmQiLCJsYXN0QW5jaG9yIiwiZW5kRWxlbWVudCIsIml0ZW1zUGVyS2V5IiwiZm9yRWFjaCIsIkFmdGVyIiwia2V5cyIsImN1c3RvbUVsZW1lbnRLZXkiLCJwb3RlbnRpYWxBbmNob3IiLCJtZW51IiwibWFwIiwic29ydGVkS2V5cyIsInBvc2l0aW9uSXRlbUtleSIsIm91dEVsZW1lbnRzIiwicHVzaCJdLCJtYXBwaW5ncyI6IjtBQUFBO0FBQ0E7QUFDQTs7Ozs7O01BR1lBLFM7O2FBQUFBLFM7QUFBQUEsSUFBQUEsUztBQUFBQSxJQUFBQSxTO0FBQUFBLElBQUFBLFM7S0FBQUEsUyxLQUFBQSxTOzs7O0FBcUJaO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7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QUE4QixXQUFuRyxFQUFnSDtBQUMvR3JDLFVBQUFBLGdCQUFnQixDQUFDa0IsYUFBYSxDQUFDZSxHQUFmLENBQWhCLEdBQXNDUSxXQUFXLENBQUN2QixhQUFhLENBQUNlLEdBQWYsQ0FBWCxDQUErQkksUUFBckU7QUFDQTtBQUNEO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7O0FBQ0csT0FaRCxNQVlPO0FBQ05JLFFBQUFBLFdBQVcsQ0FBQ3ZCLGFBQWEsQ0FBQ2UsR0FBZixDQUFYLEdBQWlDbEIsYUFBYSxDQUFDQyxnQkFBRCxFQUFtQixJQUFuQixFQUF5QkUsYUFBekIsQ0FBOUM7QUFDQWxCLFFBQUFBLGdCQUFnQixDQUFDa0IsYUFBYSxDQUFDZSxHQUFmLENBQWhCLEdBQXNDZixhQUFhLENBQUNtQixRQUFwRDtBQUNBO0FBQ0QsS0FsQ0Q7QUFtQ0EsUUFBTVksVUFBb0IsR0FBRyxFQUE3QjtBQUVBNUIsSUFBQUEsTUFBTSxDQUFDdUIsSUFBUCxDQUFZNUMsZ0JBQVosRUFBOEIwQyxPQUE5QixDQUFzQyxVQUFBUSxlQUFlLEVBQUk7QUFDeERuRCxNQUFBQSwrQkFBK0IsQ0FBQ0MsZ0JBQUQsRUFBbUJrRCxlQUFuQixFQUFvQ0QsVUFBcEMsRUFBZ0QsRUFBaEQsQ0FBL0I7QUFDQSxLQUZEO0FBSUEsUUFBTUUsV0FBVyxHQUFHRixVQUFVLENBQUNELEdBQVgsQ0FBZSxVQUFBZixHQUFHO0FBQUEsYUFBSVEsV0FBVyxDQUFDUixHQUFELENBQWY7QUFBQSxLQUFsQixDQUFwQjs7QUFDQSxRQUFJTyxVQUFKLEVBQWdCO0FBQ2ZXLE1BQUFBLFdBQVcsQ0FBQ0MsSUFBWixDQUFpQlosVUFBakI7QUFDQTs7QUFDRCxXQUFPVyxXQUFQO0FBQ0EiLCJzb3VyY2VSb290IjoiLiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB0eXBlIFBvc2l0aW9uID0ge1xuXHRhbmNob3I/OiBzdHJpbmc7XG5cdHBsYWNlbWVudDogUGxhY2VtZW50O1xufTtcblxuZXhwb3J0IGVudW0gUGxhY2VtZW50IHtcblx0QWZ0ZXIgPSBcIkFmdGVyXCIsXG5cdEJlZm9yZSA9IFwiQmVmb3JlXCIsXG5cdEVuZCA9IFwiRW5kXCJcbn1cbmV4cG9ydCB0eXBlIENvbmZpZ3VyYWJsZU9iamVjdEtleSA9IHN0cmluZztcbmV4cG9ydCB0eXBlIENvbmZpZ3VyYWJsZU9iamVjdCA9IFBvc2l0aW9uYWJsZSAmIHtcblx0a2V5OiBDb25maWd1cmFibGVPYmplY3RLZXk7XG59O1xuXG5leHBvcnQgdHlwZSBDdXN0b21FbGVtZW50PFQgZXh0ZW5kcyBDb25maWd1cmFibGVPYmplY3Q+ID0gVCAmIHtcblx0cG9zaXRpb246IFBvc2l0aW9uO1xuXHRtZW51PzogYW55W10gfCB1bmRlZmluZWQ7XG59O1xuXG5leHBvcnQgdHlwZSBQb3NpdGlvbmFibGUgPSB7XG5cdHBvc2l0aW9uPzogUG9zaXRpb247XG59O1xuXG5leHBvcnQgdHlwZSBDb25maWd1cmFibGVSZWNvcmQ8VD4gPSBSZWNvcmQ8Q29uZmlndXJhYmxlT2JqZWN0S2V5LCBUPjtcblxuLyoqXG4gKiBSZWN1cnNpdmUgbWV0aG9kIHRoYXQgb3JkZXIgdGhlIGtleXMgYmFzZWQgb24gYSBwb3NpdGlvbiBpbmZvcm1hdGlvbi5cbiAqXG4gKiBAcGFyYW0gcG9zaXRpb25pbmdJdGVtc1xuICogQHBhcmFtIGFuY2hvclxuICogQHBhcmFtIHNvcnRlZFxuICogQHBhcmFtIHZpc2l0ZWRcbiAqIEByZXR1cm5zIHtudW1iZXJ9IFRoZSBvcmRlciBvZiB0aGUgY3VycmVudCBpdGVtXG4gKi9cbmNvbnN0IG9yZGVyUG9zaXRpb25pbmdJdGVtUmVjdXJzaXZlbHkgPSAoXG5cdHBvc2l0aW9uaW5nSXRlbXM6IFJlY29yZDxzdHJpbmcsIFJlcXVpcmVkPFBvc2l0aW9uPj4sXG5cdGFuY2hvcjogc3RyaW5nLFxuXHRzb3J0ZWQ6IHN0cmluZ1tdLFxuXHR2aXNpdGVkOiBSZWNvcmQ8c3RyaW5nLCBSZXF1aXJlZDxQb3NpdGlvbj4+XG4pOiBudW1iZXIgPT4ge1xuXHRsZXQgaW5zZXJ0SW5kZXggPSBzb3J0ZWQuaW5kZXhPZihhbmNob3IpO1xuXHRpZiAoaW5zZXJ0SW5kZXggIT09IC0xKSB7XG5cdFx0cmV0dXJuIGluc2VydEluZGV4O1xuXHR9XG5cdGNvbnN0IGFuY2hvckl0ZW06IFJlcXVpcmVkPFBvc2l0aW9uPiA9IHBvc2l0aW9uaW5nSXRlbXNbYW5jaG9yXTtcblx0aWYgKGFuY2hvckl0ZW0gPT09IHVuZGVmaW5lZCkge1xuXHRcdC8vcmV0dXJuIHNvcnRlZC5sZW5ndGg7XG5cdFx0dGhyb3cgbmV3IEVycm9yKFwicG9zaXRpb24gYW5jaG9yIG5vdCBmb3VuZDogXCIgKyBhbmNob3IpO1xuXHR9XG5cblx0dmlzaXRlZFthbmNob3JdID0gYW5jaG9ySXRlbTtcblx0aWYgKGFuY2hvckl0ZW0gJiYgIShhbmNob3JJdGVtLmFuY2hvciBpbiB2aXNpdGVkKSkge1xuXHRcdGluc2VydEluZGV4ID0gb3JkZXJQb3NpdGlvbmluZ0l0ZW1SZWN1cnNpdmVseShwb3NpdGlvbmluZ0l0ZW1zLCBhbmNob3JJdGVtLmFuY2hvciwgc29ydGVkLCB2aXNpdGVkKTtcblx0XHRpZiAoYW5jaG9ySXRlbS5wbGFjZW1lbnQgIT09IFBsYWNlbWVudC5CZWZvcmUpIHtcblx0XHRcdCsraW5zZXJ0SW5kZXg7XG5cdFx0fVxuXHR9IGVsc2Uge1xuXHRcdGluc2VydEluZGV4ID0gc29ydGVkLmxlbmd0aDtcblx0fVxuXG5cdHNvcnRlZC5zcGxpY2UoaW5zZXJ0SW5kZXgsIDAsIGFuY2hvcik7XG5cdHJldHVybiBpbnNlcnRJbmRleDtcbn07XG5cbnR5cGUgT3ZlcnJpZGVUeXBlID0gXCJtZXJnZVwiIHwgXCJvdmVyd3JpdGVcIiB8IFwiaWdub3JlXCI7XG50eXBlIEFycmF5T3ZlcnJpZGVUeXBlPEFycmF5VHlwZT4gPSBPdmVycmlkZUtleXM8QXJyYXlUeXBlPjtcblxudHlwZSBFbGVtZW50VHlwZTxUPiA9IFQgZXh0ZW5kcyBhbnlbXSA/IFRbbnVtYmVyXSA6IFQ7XG50eXBlIE92ZXJyaWRlS2V5czxUPiA9IHtcblx0W1AgaW4ga2V5b2YgVF0/OiBPdmVycmlkZVR5cGUgfCBBcnJheU92ZXJyaWRlVHlwZTxFbGVtZW50VHlwZTxUW1BdPj47XG59O1xuXG5mdW5jdGlvbiBpc0FycmF5Q29uZmlnPFQ+KGNvbmZpZzogT3ZlcnJpZGVUeXBlIHwgQXJyYXlPdmVycmlkZVR5cGU8VD4gfCB1bmRlZmluZWQpOiBjb25maWcgaXMgQXJyYXlPdmVycmlkZVR5cGU8VD4ge1xuXHRyZXR1cm4gdHlwZW9mIGNvbmZpZyA9PT0gXCJvYmplY3RcIjtcbn1cblxuZnVuY3Rpb24gYXBwbHlPdmVycmlkZTxUIGV4dGVuZHMgT2JqZWN0PihvdmVyd3JpdGFibGVLZXlzOiBPdmVycmlkZUtleXM8VD4sIHNvdXJjZUl0ZW06IFQgfCBudWxsLCBjdXN0b21FbGVtZW50OiBUKTogVCB7XG5cdGNvbnN0IG91dEl0ZW06IFQgPSBzb3VyY2VJdGVtIHx8IGN1c3RvbUVsZW1lbnQ7XG5cdGZvciAoY29uc3Qgb3ZlcndyaXRhYmxlS2V5IGluIG92ZXJ3cml0YWJsZUtleXMpIHtcblx0XHRpZiAoT2JqZWN0Lmhhc093blByb3BlcnR5LmNhbGwob3ZlcndyaXRhYmxlS2V5cywgb3ZlcndyaXRhYmxlS2V5KSkge1xuXHRcdFx0Y29uc3Qgb3ZlcnJpZGVDb25maWcgPSBvdmVyd3JpdGFibGVLZXlzW292ZXJ3cml0YWJsZUtleV07XG5cdFx0XHRpZiAoc291cmNlSXRlbSAhPT0gbnVsbCkge1xuXHRcdFx0XHRzd2l0Y2ggKG92ZXJyaWRlQ29uZmlnKSB7XG5cdFx0XHRcdFx0Y2FzZSBcIm92ZXJ3cml0ZVwiOlxuXHRcdFx0XHRcdFx0aWYgKGN1c3RvbUVsZW1lbnQuaGFzT3duUHJvcGVydHkob3ZlcndyaXRhYmxlS2V5KSAmJiBjdXN0b21FbGVtZW50W292ZXJ3cml0YWJsZUtleV0gIT09IHVuZGVmaW5lZCkge1xuXHRcdFx0XHRcdFx0XHRzb3VyY2VJdGVtW292ZXJ3cml0YWJsZUtleV0gPSBjdXN0b21FbGVtZW50W292ZXJ3cml0YWJsZUtleV07XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHRjYXNlIFwibWVyZ2VcIjpcblx0XHRcdFx0XHRkZWZhdWx0OlxuXHRcdFx0XHRcdFx0Y29uc3Qgc3ViSXRlbSA9IHNvdXJjZUl0ZW1bb3ZlcndyaXRhYmxlS2V5XSB8fCAoW10gYXMgYW55W10pO1xuXHRcdFx0XHRcdFx0bGV0IHN1YkNvbmZpZyA9IHt9O1xuXHRcdFx0XHRcdFx0aWYgKGlzQXJyYXlDb25maWcob3ZlcnJpZGVDb25maWcpKSB7XG5cdFx0XHRcdFx0XHRcdHN1YkNvbmZpZyA9IG92ZXJyaWRlQ29uZmlnO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0aWYgKEFycmF5LmlzQXJyYXkoc3ViSXRlbSkpIHtcblx0XHRcdFx0XHRcdFx0c291cmNlSXRlbVtvdmVyd3JpdGFibGVLZXldID0gaW5zZXJ0Q3VzdG9tRWxlbWVudHMoXG5cdFx0XHRcdFx0XHRcdFx0c3ViSXRlbSxcblx0XHRcdFx0XHRcdFx0XHQoY3VzdG9tRWxlbWVudCAmJiAoY3VzdG9tRWxlbWVudFtvdmVyd3JpdGFibGVLZXldIGFzIFJlY29yZDxzdHJpbmcsIEN1c3RvbUVsZW1lbnQ8YW55Pj4pKSB8fCB7fSxcblx0XHRcdFx0XHRcdFx0XHRzdWJDb25maWdcblx0XHRcdFx0XHRcdFx0KSBhcyBhbnk7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0fVxuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0c3dpdGNoIChvdmVycmlkZUNvbmZpZykge1xuXHRcdFx0XHRcdGNhc2UgXCJvdmVyd3JpdGVcIjpcblx0XHRcdFx0XHRcdGlmIChjdXN0b21FbGVtZW50Lmhhc093blByb3BlcnR5KG92ZXJ3cml0YWJsZUtleSkgJiYgY3VzdG9tRWxlbWVudFtvdmVyd3JpdGFibGVLZXldICE9PSB1bmRlZmluZWQpIHtcblx0XHRcdFx0XHRcdFx0b3V0SXRlbVtvdmVyd3JpdGFibGVLZXldID0gY3VzdG9tRWxlbWVudFtvdmVyd3JpdGFibGVLZXldO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSBcIm1lcmdlXCI6XG5cdFx0XHRcdFx0ZGVmYXVsdDpcblx0XHRcdFx0XHRcdGxldCBzdWJDb25maWcgPSB7fTtcblx0XHRcdFx0XHRcdGlmIChpc0FycmF5Q29uZmlnKG92ZXJyaWRlQ29uZmlnKSkge1xuXHRcdFx0XHRcdFx0XHRzdWJDb25maWcgPSBvdmVycmlkZUNvbmZpZztcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdG91dEl0ZW1bb3ZlcndyaXRhYmxlS2V5XSA9IGluc2VydEN1c3RvbUVsZW1lbnRzKFxuXHRcdFx0XHRcdFx0XHRbXSBhcyBhbnlbXSxcblx0XHRcdFx0XHRcdFx0KGN1c3RvbUVsZW1lbnQgJiYgKGN1c3RvbUVsZW1lbnRbb3ZlcndyaXRhYmxlS2V5XSBhcyBSZWNvcmQ8c3RyaW5nLCBDdXN0b21FbGVtZW50PGFueT4+KSkgfHwge30sXG5cdFx0XHRcdFx0XHRcdHN1YkNvbmZpZ1xuXHRcdFx0XHRcdFx0KSBhcyBhbnk7XG5cdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblx0fVxuXHRyZXR1cm4gb3V0SXRlbTtcbn1cblxuLyoqXG4gKiBJbnNlcnQgYSBzZXQgb2YgY3VzdG9tIGVsZW1lbnRzIGluIHRoZSByaWdodCBwb3NpdGlvbiBpbiBhbiBvcmlnaW5hbCBjb2xsZWN0aW9uLlxuICpcbiAqIFBhcmFtZXRlcnMgZm9yIG92ZXJ3cml0YWJsZUtleXMgYW5kIHRoZWlyIGltcGxpY2F0aW9uczpcbiAqIFwib3ZlcndyaXRlXCI6IFRoZSB3aG9sZSBvYmplY3QgZ2V0cyBvdmVyd3JpdHRlbiAtIGlmIHRoZSBjdXN0b21FbGVtZW50cyBpbmNsdWRlIGEgZGVmYXVsdCwgdGhpcyB3aWxsIG92ZXJydWxlIHRoZSB3aG9sZSByb290RWxlbWVudHMgY29uZmlndXJhdGlvbi5cbiAqIFwibWVyZ2VcIjogVGhpcyBpcyBzaW1pbGFyIHRvIGNhbGxpbmcgaW5zZXJ0Q3VzdG9tRWxlbWVudHMgaXRzZWxmLiBZb3UgbXVzdCBpbmNsdWRlIHRoZVxuICogZnVsbCBDdXN0b21FbGVtZW50IHN5bnRheCB3aXRoaW4gdGhlIGN1c3RvbUVsZW1lbnRzLCBpbmNsdWRpbmcgYW5jaG9ycywgZm9yIGV4YW1wbGUuXG4gKiBcImlnbm9yZVwiOiBUaGVyZSBhcmUgbm8gYWRkaXRpb25zIGFuZCBubyBjb21iaW5hdGlvbnMuIE9ubHkgdGhlIHJvb3RFbGVtZW50cyBvYmplY3QgaXMgdXNlZC5cbiAqXG4gKiBOb3RlIC0gUHJvY2VlZCBhcyBmb2xsb3dzIGluIGNhc2UgeW91IGhhdmUgZGVmaW5lZCBjdXN0b21FbGVtZW50cyBhbmQgZG8gbm90IHdhbnQgdG8gb3ZlcndyaXRlIHRoZWlyIHZhbHVlcyB3aXRoIGRlZmF1bHRzOlxuICogSGFuZCB0aGUgcm9vdEVsZW1lbnRzIGludG8gdGhlIGNyZWF0aW9uIGZ1bmN0aW9uIG9mIHRoZSBjdXN0b21FbGVtZW50LlxuICogRGVwZW5kaW5nIG9uIHRoZSBleGlzdGVuY2Ugb2YgYm90aCByb290RWxlbWVudC1jb25maWd1cmF0aW9uIGFuZCBjdXN0b21FbGVtZW50LWNvbmZpZ3VyYXRpb24sXG4gKiB5b3UgbXVzdCBzZXQgdGhlIGN1c3RvbUVsZW1lbnRzIHByb3BlcnR5LCBmb3Igd2hpY2ggdGhlIFwib3ZlcndyaXRlXCItcHJvcGVydHkgaXMgc2V0LCBleHBsaWNpdGx5IHRvIHVuZGVmaW5lZC5cbiAqXG4gKiBAdGVtcGxhdGUgVFxuICogQHBhcmFtIHJvb3RFbGVtZW50cyBBIGxpc3Qgb2YgXCJDb25maWd1cmFibGVPYmplY3RcIiB3aGljaCBtZWFucyBvYmplY3QgdGhhdCBoYXZlIGEgdW5pcXVlIFwia2V5XCJcbiAqIEBwYXJhbSBjdXN0b21FbGVtZW50cyBBbiBvYmplY3QgY29udGFpbmluZyBleHRyYSBvYmplY3QgdG8gYWRkLCB0aGV5IGFyZSBpbmRleGVkIGJ5IGEga2V5IGFuZCBoYXZlIGEgXCJwb3NpdGlvblwiIG9iamVjdFxuICogQHBhcmFtIG92ZXJ3cml0YWJsZUtleXMgVGhlIGxpc3Qgb2Yga2V5cyBmcm9tIHRoZSBvcmlnaW5hbCBvYmplY3QgdGhhdCBjYW4gYmUgb3ZlcndyaXR0ZW4gaW4gY2FzZSBhIGN1c3RvbSBlbGVtZW50IGhhcyB0aGUgc2FtZSBcImtleVwiXG4gKiBAcmV0dXJucyB7VFtdfSBBbiBvcmRlcmVkIGFycmF5IG9mIGVsZW1lbnRzIGluY2x1ZGluZyB0aGUgY3VzdG9tIG9uZXNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGluc2VydEN1c3RvbUVsZW1lbnRzPFQgZXh0ZW5kcyBDb25maWd1cmFibGVPYmplY3Q+KFxuXHRyb290RWxlbWVudHM6IFRbXSxcblx0Y3VzdG9tRWxlbWVudHM6IFJlY29yZDxzdHJpbmcsIEN1c3RvbUVsZW1lbnQ8VD4+LFxuXHRvdmVyd3JpdGFibGVLZXlzOiBPdmVycmlkZUtleXM8VD4gPSB7fVxuKTogVFtdIHtcblx0Y29uc3QgZmlyc3RBbmNob3IgPSByb290RWxlbWVudHMubGVuZ3RoID8gcm9vdEVsZW1lbnRzWzBdLmtleSA6IG51bGw7XG5cdGNvbnN0IHJvb3RFbGVtZW50c1dpdGhvdXRMYXN0ID0gcm9vdEVsZW1lbnRzLmZpbHRlcihyb290RWxlbWVudCA9PiB7XG5cdFx0cmV0dXJuIHJvb3RFbGVtZW50LnBvc2l0aW9uPy5wbGFjZW1lbnQgIT09IFBsYWNlbWVudC5FbmQ7XG5cdH0pO1xuXHRjb25zdCBsYXN0QW5jaG9yID0gcm9vdEVsZW1lbnRzLmxlbmd0aCA/IHJvb3RFbGVtZW50c1tyb290RWxlbWVudHNXaXRob3V0TGFzdC5sZW5ndGggLSAxXS5rZXkgOiBudWxsO1xuXHRsZXQgZW5kRWxlbWVudDogVCB8IHVuZGVmaW5lZDtcblx0Y29uc3QgcG9zaXRpb25pbmdJdGVtczogUmVjb3JkPHN0cmluZywgUmVxdWlyZWQ8UG9zaXRpb24+PiA9IHt9O1xuXHRjb25zdCBpdGVtc1BlcktleTogUmVjb3JkPHN0cmluZywgVD4gPSB7fTtcblx0cm9vdEVsZW1lbnRzLmZvckVhY2gocm9vdEVsZW1lbnQgPT4ge1xuXHRcdGlmIChyb290RWxlbWVudC5wb3NpdGlvbj8ucGxhY2VtZW50ID09PSBQbGFjZW1lbnQuRW5kICYmICFlbmRFbGVtZW50KSB7XG5cdFx0XHRlbmRFbGVtZW50ID0gcm9vdEVsZW1lbnQ7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHBvc2l0aW9uaW5nSXRlbXNbcm9vdEVsZW1lbnQua2V5XSA9IHtcblx0XHRcdFx0YW5jaG9yOiByb290RWxlbWVudC5wb3NpdGlvbj8uYW5jaG9yIHx8IHJvb3RFbGVtZW50LmtleSxcblx0XHRcdFx0cGxhY2VtZW50OiByb290RWxlbWVudC5wb3NpdGlvbj8ucGxhY2VtZW50IHx8IFBsYWNlbWVudC5BZnRlclxuXHRcdFx0fTtcblx0XHR9XG5cdFx0aXRlbXNQZXJLZXlbcm9vdEVsZW1lbnQua2V5XSA9IHJvb3RFbGVtZW50O1xuXHR9KTtcblx0T2JqZWN0LmtleXMoY3VzdG9tRWxlbWVudHMpLmZvckVhY2goY3VzdG9tRWxlbWVudEtleSA9PiB7XG5cdFx0Y29uc3QgY3VzdG9tRWxlbWVudCA9IGN1c3RvbUVsZW1lbnRzW2N1c3RvbUVsZW1lbnRLZXldO1xuXHRcdGNvbnN0IGFuY2hvciA9IGN1c3RvbUVsZW1lbnQucG9zaXRpb24uYW5jaG9yO1xuXHRcdC8vIElmIG5vIHBsYWNlbWVudCBkZWZpbmVkIHdlIGFyZSBBZnRlclxuXHRcdGlmICghY3VzdG9tRWxlbWVudC5wb3NpdGlvbi5wbGFjZW1lbnQpIHtcblx0XHRcdGN1c3RvbUVsZW1lbnQucG9zaXRpb24ucGxhY2VtZW50ID0gUGxhY2VtZW50LkFmdGVyO1xuXHRcdH1cblx0XHQvLyBJZiBubyBhbmNob3Igd2UncmUgZWl0aGVyIEFmdGVyIHRoZSBsYXN0IGFuY2hvciBvciBCZWZvcmUgdGhlIGZpcnN0XG5cdFx0aWYgKCFhbmNob3IpIHtcblx0XHRcdGNvbnN0IHBvdGVudGlhbEFuY2hvciA9IGN1c3RvbUVsZW1lbnQucG9zaXRpb24ucGxhY2VtZW50ID09PSBQbGFjZW1lbnQuQWZ0ZXIgPyBsYXN0QW5jaG9yIDogZmlyc3RBbmNob3I7XG5cdFx0XHRjdXN0b21FbGVtZW50LnBvc2l0aW9uLmFuY2hvciA9IHBvdGVudGlhbEFuY2hvciA/IHBvdGVudGlhbEFuY2hvciA6IGN1c3RvbUVsZW1lbnRLZXk7XG5cdFx0fVxuXG5cdFx0Ly8gQWRkaW5nIGJvdW5kL3VuYm91bmQgYWN0aW9ucyB0byBtZW51XG5cdFx0Y3VzdG9tRWxlbWVudC5tZW51ID0gY3VzdG9tRWxlbWVudD8ubWVudT8ubWFwKG1lbnUgPT4ge1xuXHRcdFx0cmV0dXJuIGl0ZW1zUGVyS2V5W21lbnUua2V5XSA/PyBtZW51O1xuXHRcdH0pO1xuXG5cdFx0aWYgKGl0ZW1zUGVyS2V5W2N1c3RvbUVsZW1lbnQua2V5XSkge1xuXHRcdFx0aXRlbXNQZXJLZXlbY3VzdG9tRWxlbWVudC5rZXldID0gYXBwbHlPdmVycmlkZShvdmVyd3JpdGFibGVLZXlzLCBpdGVtc1BlcktleVtjdXN0b21FbGVtZW50LmtleV0sIGN1c3RvbUVsZW1lbnQpO1xuXG5cdFx0XHQvL1Bvc2l0aW9uIGlzIG92ZXJ3cml0dGVuIGZvciBmaWx0ZXIgZmllbGRzIGlmIHRoZXJlIGlzIGEgY2hhbmdlIGluIG1hbmlmZXN0XG5cdFx0XHRpZiAoYW5jaG9yICYmIGN1c3RvbUVsZW1lbnQucG9zaXRpb24gJiYgb3ZlcndyaXRhYmxlS2V5cy5wb3NpdGlvbiAmJiBvdmVyd3JpdGFibGVLZXlzLnBvc2l0aW9uID09PSBcIm92ZXJ3cml0ZVwiKSB7XG5cdFx0XHRcdHBvc2l0aW9uaW5nSXRlbXNbY3VzdG9tRWxlbWVudC5rZXldID0gaXRlbXNQZXJLZXlbY3VzdG9tRWxlbWVudC5rZXldLnBvc2l0aW9uIGFzIFJlcXVpcmVkPFBvc2l0aW9uPjtcblx0XHRcdH1cblx0XHRcdC8qKlxuXHRcdFx0ICogYW5jaG9yIGNoZWNrIGlzIGFkZGVkIHRvIG1ha2Ugc3VyZSBjaGFuZ2UgaW4gcHJvcGVydGllcyBpbiB0aGUgbWFuaWZlc3QgZG9lcyBub3QgYWZmZWN0IHRoZSBwb3NpdGlvbiBvZiB0aGUgZmllbGQuXG5cdFx0XHQgKiBPdGhlcndpc2UsIHdoZW4gbm8gcG9zaXRpb24gaXMgbWVudGlvbmVkIGluIG1hbmlmZXN0IGZvciBhbiBhbHRlcmVkIGZpZWxkLCB0aGUgcG9zaXRpb24gaXMgY2hhbmdlZCBhc1xuXHRcdFx0ICogcGVyIHRoZSBwb3RlbnRpYWwgYW5jaG9yXG5cdFx0XHQgKi9cblx0XHR9IGVsc2Uge1xuXHRcdFx0aXRlbXNQZXJLZXlbY3VzdG9tRWxlbWVudC5rZXldID0gYXBwbHlPdmVycmlkZShvdmVyd3JpdGFibGVLZXlzLCBudWxsLCBjdXN0b21FbGVtZW50KTtcblx0XHRcdHBvc2l0aW9uaW5nSXRlbXNbY3VzdG9tRWxlbWVudC5rZXldID0gY3VzdG9tRWxlbWVudC5wb3NpdGlvbiBhcyBSZXF1aXJlZDxQb3NpdGlvbj47XG5cdFx0fVxuXHR9KTtcblx0Y29uc3Qgc29ydGVkS2V5czogc3RyaW5nW10gPSBbXTtcblxuXHRPYmplY3Qua2V5cyhwb3NpdGlvbmluZ0l0ZW1zKS5mb3JFYWNoKHBvc2l0aW9uSXRlbUtleSA9PiB7XG5cdFx0b3JkZXJQb3NpdGlvbmluZ0l0ZW1SZWN1cnNpdmVseShwb3NpdGlvbmluZ0l0ZW1zLCBwb3NpdGlvbkl0ZW1LZXksIHNvcnRlZEtleXMsIHt9KTtcblx0fSk7XG5cblx0Y29uc3Qgb3V0RWxlbWVudHMgPSBzb3J0ZWRLZXlzLm1hcChrZXkgPT4gaXRlbXNQZXJLZXlba2V5XSk7XG5cdGlmIChlbmRFbGVtZW50KSB7XG5cdFx0b3V0RWxlbWVudHMucHVzaChlbmRFbGVtZW50KTtcblx0fVxuXHRyZXR1cm4gb3V0RWxlbWVudHM7XG59XG4iXX0=
@@ -132,6 +132,17 @@ function applyOverride<T extends Object>(overwritableKeys: OverrideKeys<T>, sour
132
132
  /**
133
133
  * Insert a set of custom elements in the right position in an original collection.
134
134
  *
135
+ * Parameters for overwritableKeys and their implications:
136
+ * "overwrite": The whole object gets overwritten - if the customElements include a default, this will overrule the whole rootElements configuration.
137
+ * "merge": This is similar to calling insertCustomElements itself. You must include the
138
+ * full CustomElement syntax within the customElements, including anchors, for example.
139
+ * "ignore": There are no additions and no combinations. Only the rootElements object is used.
140
+ *
141
+ * Note - Proceed as follows in case you have defined customElements and do not want to overwrite their values with defaults:
142
+ * Hand the rootElements into the creation function of the customElement.
143
+ * Depending on the existence of both rootElement-configuration and customElement-configuration,
144
+ * you must set the customElements property, for which the "overwrite"-property is set, explicitly to undefined.
145
+ *
135
146
  * @template T
136
147
  * @param rootElements A list of "ConfigurableObject" which means object that have a unique "key"
137
148
  * @param customElements An object containing extra object to add, they are indexed by a key and have a "position" object
@@ -8,74 +8,59 @@ sap.ui.define(["../../helpers/StableIdHelper"], function (StableIdHelper) {
8
8
  var _exports = {};
9
9
  var getStableIdPartFromDataField = StableIdHelper.getStableIdPartFromDataField;
10
10
 
11
- function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
12
-
13
- function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
14
-
15
- function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
16
-
17
11
  /**
18
12
  * The KeyHelper is used for dealing with Key in the concern of the flexible programming model
19
13
  */
20
14
  var KeyHelper = /*#__PURE__*/function () {
21
- function KeyHelper() {
22
- _classCallCheck(this, KeyHelper);
23
- }
15
+ function KeyHelper() {}
24
16
 
25
17
  _exports.KeyHelper = KeyHelper;
26
18
 
27
- _createClass(KeyHelper, null, [{
28
- key: "generateKeyFromDataField",
29
- value:
30
- /**
31
- * Returns a generated key for DataFields to be used in the flexible programming model.
32
- *
33
- * @param {DataFieldAbstractTypes} oDataField DataField to generate the key for
34
- * @returns {string} Returns a through StableIdHelper generated key
35
- */
36
- function generateKeyFromDataField(oDataField) {
37
- return getStableIdPartFromDataField(oDataField);
38
- }
39
- /**
40
- * Throws a Error if any other character then aA-zZ, 0-9, ':', '_' or '-' is used.
41
- *
42
- * @param {string} key String to check validity on
43
- */
19
+ /**
20
+ * Returns a generated key for DataFields to be used in the flexible programming model.
21
+ *
22
+ * @param {DataFieldAbstractTypes} oDataField DataField to generate the key for
23
+ * @returns {string} Returns a through StableIdHelper generated key
24
+ */
25
+ KeyHelper.generateKeyFromDataField = function generateKeyFromDataField(oDataField) {
26
+ return getStableIdPartFromDataField(oDataField);
27
+ }
28
+ /**
29
+ * Throws a Error if any other character then aA-zZ, 0-9, ':', '_' or '-' is used.
30
+ *
31
+ * @param {string} key String to check validity on
32
+ */
33
+ ;
44
34
 
45
- }, {
46
- key: "validateKey",
47
- value: function validateKey(key) {
48
- var pattern = /[^A-Za-z0-9_\-:]/;
35
+ KeyHelper.validateKey = function validateKey(key) {
36
+ var pattern = /[^A-Za-z0-9_\-:]/;
49
37
 
50
- if (pattern.exec(key)) {
51
- throw new Error("Invalid key: " + key + " - only 'A-Za-z0-9_-:' are allowed");
52
- }
38
+ if (pattern.exec(key)) {
39
+ throw new Error("Invalid key: " + key + " - only 'A-Za-z0-9_-:' are allowed");
53
40
  }
54
- /**
55
- * Returns the key for a selection field required for adaption.
56
- *
57
- * @param fullPropertyPath The full property path (without entityType)
58
- * @returns {string} The key of the selection field
59
- */
41
+ }
42
+ /**
43
+ * Returns the key for a selection field required for adaption.
44
+ *
45
+ * @param fullPropertyPath The full property path (without entityType)
46
+ * @returns {string} The key of the selection field
47
+ */
48
+ ;
60
49
 
61
- }, {
62
- key: "getSelectionFieldKeyFromPath",
63
- value: function getSelectionFieldKeyFromPath(fullPropertyPath) {
64
- return fullPropertyPath.replace(/(\*|\+)?\//g, "::");
65
- }
66
- /**
67
- * Returns the path for a selection field required for adaption.
68
- *
69
- * @param selectionFieldKey The key of the selection field
70
- * @returns {string} The full property path
71
- */
50
+ KeyHelper.getSelectionFieldKeyFromPath = function getSelectionFieldKeyFromPath(fullPropertyPath) {
51
+ return fullPropertyPath.replace(/(\*|\+)?\//g, "::");
52
+ }
53
+ /**
54
+ * Returns the path for a selection field required for adaption.
55
+ *
56
+ * @param selectionFieldKey The key of the selection field
57
+ * @returns {string} The full property path
58
+ */
59
+ ;
72
60
 
73
- }, {
74
- key: "getPathFromSelectionFieldKey",
75
- value: function getPathFromSelectionFieldKey(selectionFieldKey) {
76
- return selectionFieldKey.replace(/::\//g, "/");
77
- }
78
- }]);
61
+ KeyHelper.getPathFromSelectionFieldKey = function getPathFromSelectionFieldKey(selectionFieldKey) {
62
+ return selectionFieldKey.replace(/::/g, "/");
63
+ };
79
64
 
80
65
  return KeyHelper;
81
66
  }();
@@ -83,4 +68,4 @@ sap.ui.define(["../../helpers/StableIdHelper"], function (StableIdHelper) {
83
68
  _exports.KeyHelper = KeyHelper;
84
69
  return _exports;
85
70
  }, false);
86
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIktleS50cyJdLCJuYW1lcyI6WyJLZXlIZWxwZXIiLCJvRGF0YUZpZWxkIiwiZ2V0U3RhYmxlSWRQYXJ0RnJvbURhdGFGaWVsZCIsImtleSIsInBhdHRlcm4iLCJleGVjIiwiRXJyb3IiLCJmdWxsUHJvcGVydHlQYXRoIiwicmVwbGFjZSIsInNlbGVjdGlvbkZpZWxkS2V5Il0sIm1hcHBpbmdzIjoiO0FBQUE7QUFDQTtBQUNBOzs7Ozs7Ozs7Ozs7O0FBQ0E7QUFDQTtBQUNBO01BQ2FBLFM7Ozs7Ozs7Ozs7QUFDWjtBQUNEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQyx3Q0FBZ0NDLFVBQWhDLEVBQTRFO0FBQzNFLGVBQU9DLDRCQUE0QixDQUFDRCxVQUFELENBQW5DO0FBQ0E7QUFFRDtBQUNEO0FBQ0E7QUFDQTtBQUNBOzs7O2FBQ0MscUJBQW1CRSxHQUFuQixFQUFnQztBQUMvQixZQUFNQyxPQUFPLEdBQUcsa0JBQWhCOztBQUNBLFlBQUlBLE9BQU8sQ0FBQ0MsSUFBUixDQUFhRixHQUFiLENBQUosRUFBdUI7QUFDdEIsZ0JBQU0sSUFBSUcsS0FBSixDQUFVLGtCQUFrQkgsR0FBbEIsR0FBd0Isb0NBQWxDLENBQU47QUFDQTtBQUNEO0FBRUQ7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7O2FBQ0Msc0NBQW9DSSxnQkFBcEMsRUFBOEQ7QUFDN0QsZUFBT0EsZ0JBQWdCLENBQUNDLE9BQWpCLENBQXlCLGFBQXpCLEVBQXdDLElBQXhDLENBQVA7QUFDQTtBQUVEO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7OzthQUNDLHNDQUFvQ0MsaUJBQXBDLEVBQStEO0FBQzlELGVBQU9BLGlCQUFpQixDQUFDRCxPQUFsQixDQUEwQixPQUExQixFQUFtQyxHQUFuQyxDQUFQO0FBQ0EiLCJzb3VyY2VSb290IjoiLiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERhdGFGaWVsZEFic3RyYWN0VHlwZXMgfSBmcm9tIFwiQHNhcC11eC92b2NhYnVsYXJpZXMtdHlwZXNcIjtcbmltcG9ydCB7IGdldFN0YWJsZUlkUGFydEZyb21EYXRhRmllbGQgfSBmcm9tIFwiLi4vLi4vaGVscGVycy9TdGFibGVJZEhlbHBlclwiO1xuXG4vKipcbiAqIFRoZSBLZXlIZWxwZXIgaXMgdXNlZCBmb3IgZGVhbGluZyB3aXRoIEtleSBpbiB0aGUgY29uY2VybiBvZiB0aGUgZmxleGlibGUgcHJvZ3JhbW1pbmcgbW9kZWxcbiAqL1xuZXhwb3J0IGNsYXNzIEtleUhlbHBlciB7XG5cdC8qKlxuXHQgKiBSZXR1cm5zIGEgZ2VuZXJhdGVkIGtleSBmb3IgRGF0YUZpZWxkcyB0byBiZSB1c2VkIGluIHRoZSBmbGV4aWJsZSBwcm9ncmFtbWluZyBtb2RlbC5cblx0ICpcblx0ICogQHBhcmFtIHtEYXRhRmllbGRBYnN0cmFjdFR5cGVzfSBvRGF0YUZpZWxkIERhdGFGaWVsZCB0byBnZW5lcmF0ZSB0aGUga2V5IGZvclxuXHQgKiBAcmV0dXJucyB7c3RyaW5nfSBSZXR1cm5zIGEgdGhyb3VnaCBTdGFibGVJZEhlbHBlciBnZW5lcmF0ZWQga2V5XG5cdCAqL1xuXHRzdGF0aWMgZ2VuZXJhdGVLZXlGcm9tRGF0YUZpZWxkKG9EYXRhRmllbGQ6IERhdGFGaWVsZEFic3RyYWN0VHlwZXMpOiBzdHJpbmcge1xuXHRcdHJldHVybiBnZXRTdGFibGVJZFBhcnRGcm9tRGF0YUZpZWxkKG9EYXRhRmllbGQpITtcblx0fVxuXG5cdC8qKlxuXHQgKiBUaHJvd3MgYSBFcnJvciBpZiBhbnkgb3RoZXIgY2hhcmFjdGVyIHRoZW4gYUEtelosIDAtOSwgJzonLCAnXycgb3IgJy0nIGlzIHVzZWQuXG5cdCAqXG5cdCAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgU3RyaW5nIHRvIGNoZWNrIHZhbGlkaXR5IG9uXG5cdCAqL1xuXHRzdGF0aWMgdmFsaWRhdGVLZXkoa2V5OiBzdHJpbmcpIHtcblx0XHRjb25zdCBwYXR0ZXJuID0gL1teQS1aYS16MC05X1xcLTpdLztcblx0XHRpZiAocGF0dGVybi5leGVjKGtleSkpIHtcblx0XHRcdHRocm93IG5ldyBFcnJvcihcIkludmFsaWQga2V5OiBcIiArIGtleSArIFwiIC0gb25seSAnQS1aYS16MC05Xy06JyBhcmUgYWxsb3dlZFwiKTtcblx0XHR9XG5cdH1cblxuXHQvKipcblx0ICogUmV0dXJucyB0aGUga2V5IGZvciBhIHNlbGVjdGlvbiBmaWVsZCByZXF1aXJlZCBmb3IgYWRhcHRpb24uXG5cdCAqXG5cdCAqIEBwYXJhbSBmdWxsUHJvcGVydHlQYXRoIFRoZSBmdWxsIHByb3BlcnR5IHBhdGggKHdpdGhvdXQgZW50aXR5VHlwZSlcblx0ICogQHJldHVybnMge3N0cmluZ30gVGhlIGtleSBvZiB0aGUgc2VsZWN0aW9uIGZpZWxkXG5cdCAqL1xuXHRzdGF0aWMgZ2V0U2VsZWN0aW9uRmllbGRLZXlGcm9tUGF0aChmdWxsUHJvcGVydHlQYXRoOiBzdHJpbmcpIHtcblx0XHRyZXR1cm4gZnVsbFByb3BlcnR5UGF0aC5yZXBsYWNlKC8oXFwqfFxcKyk/XFwvL2csIFwiOjpcIik7XG5cdH1cblxuXHQvKipcblx0ICogUmV0dXJucyB0aGUgcGF0aCBmb3IgYSBzZWxlY3Rpb24gZmllbGQgcmVxdWlyZWQgZm9yIGFkYXB0aW9uLlxuXHQgKlxuXHQgKiBAcGFyYW0gc2VsZWN0aW9uRmllbGRLZXkgVGhlIGtleSBvZiB0aGUgc2VsZWN0aW9uIGZpZWxkXG5cdCAqIEByZXR1cm5zIHtzdHJpbmd9IFRoZSBmdWxsIHByb3BlcnR5IHBhdGhcblx0ICovXG5cdHN0YXRpYyBnZXRQYXRoRnJvbVNlbGVjdGlvbkZpZWxkS2V5KHNlbGVjdGlvbkZpZWxkS2V5OiBzdHJpbmcpIHtcblx0XHRyZXR1cm4gc2VsZWN0aW9uRmllbGRLZXkucmVwbGFjZSgvOjpcXC8vZywgXCIvXCIpO1xuXHR9XG59XG4iXX0=
71
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIktleS50cyJdLCJuYW1lcyI6WyJLZXlIZWxwZXIiLCJnZW5lcmF0ZUtleUZyb21EYXRhRmllbGQiLCJvRGF0YUZpZWxkIiwiZ2V0U3RhYmxlSWRQYXJ0RnJvbURhdGFGaWVsZCIsInZhbGlkYXRlS2V5Iiwia2V5IiwicGF0dGVybiIsImV4ZWMiLCJFcnJvciIsImdldFNlbGVjdGlvbkZpZWxkS2V5RnJvbVBhdGgiLCJmdWxsUHJvcGVydHlQYXRoIiwicmVwbGFjZSIsImdldFBhdGhGcm9tU2VsZWN0aW9uRmllbGRLZXkiLCJzZWxlY3Rpb25GaWVsZEtleSJdLCJtYXBwaW5ncyI6IjtBQUFBO0FBQ0E7QUFDQTs7Ozs7OztBQUNBO0FBQ0E7QUFDQTtNQUNhQSxTOzs7OztBQUNaO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtjQUNRQyx3QixHQUFQLGtDQUFnQ0MsVUFBaEMsRUFBNEU7QUFDM0UsYUFBT0MsNEJBQTRCLENBQUNELFVBQUQsQ0FBbkM7QUFDQTtBQUVEO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7OztjQUNRRSxXLEdBQVAscUJBQW1CQyxHQUFuQixFQUFnQztBQUMvQixVQUFNQyxPQUFPLEdBQUcsa0JBQWhCOztBQUNBLFVBQUlBLE9BQU8sQ0FBQ0MsSUFBUixDQUFhRixHQUFiLENBQUosRUFBdUI7QUFDdEIsY0FBTSxJQUFJRyxLQUFKLENBQVUsa0JBQWtCSCxHQUFsQixHQUF3QixvQ0FBbEMsQ0FBTjtBQUNBO0FBQ0Q7QUFFRDtBQUNEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztjQUNRSSw0QixHQUFQLHNDQUFvQ0MsZ0JBQXBDLEVBQThEO0FBQzdELGFBQU9BLGdCQUFnQixDQUFDQyxPQUFqQixDQUF5QixhQUF6QixFQUF3QyxJQUF4QyxDQUFQO0FBQ0E7QUFFRDtBQUNEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztjQUNRQyw0QixHQUFQLHNDQUFvQ0MsaUJBQXBDLEVBQStEO0FBQzlELGFBQU9BLGlCQUFpQixDQUFDRixPQUFsQixDQUEwQixLQUExQixFQUFpQyxHQUFqQyxDQUFQO0FBQ0EsSyIsInNvdXJjZVJvb3QiOiIuIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGF0YUZpZWxkQWJzdHJhY3RUeXBlcyB9IGZyb20gXCJAc2FwLXV4L3ZvY2FidWxhcmllcy10eXBlc1wiO1xuaW1wb3J0IHsgZ2V0U3RhYmxlSWRQYXJ0RnJvbURhdGFGaWVsZCB9IGZyb20gXCIuLi8uLi9oZWxwZXJzL1N0YWJsZUlkSGVscGVyXCI7XG5cbi8qKlxuICogVGhlIEtleUhlbHBlciBpcyB1c2VkIGZvciBkZWFsaW5nIHdpdGggS2V5IGluIHRoZSBjb25jZXJuIG9mIHRoZSBmbGV4aWJsZSBwcm9ncmFtbWluZyBtb2RlbFxuICovXG5leHBvcnQgY2xhc3MgS2V5SGVscGVyIHtcblx0LyoqXG5cdCAqIFJldHVybnMgYSBnZW5lcmF0ZWQga2V5IGZvciBEYXRhRmllbGRzIHRvIGJlIHVzZWQgaW4gdGhlIGZsZXhpYmxlIHByb2dyYW1taW5nIG1vZGVsLlxuXHQgKlxuXHQgKiBAcGFyYW0ge0RhdGFGaWVsZEFic3RyYWN0VHlwZXN9IG9EYXRhRmllbGQgRGF0YUZpZWxkIHRvIGdlbmVyYXRlIHRoZSBrZXkgZm9yXG5cdCAqIEByZXR1cm5zIHtzdHJpbmd9IFJldHVybnMgYSB0aHJvdWdoIFN0YWJsZUlkSGVscGVyIGdlbmVyYXRlZCBrZXlcblx0ICovXG5cdHN0YXRpYyBnZW5lcmF0ZUtleUZyb21EYXRhRmllbGQob0RhdGFGaWVsZDogRGF0YUZpZWxkQWJzdHJhY3RUeXBlcyk6IHN0cmluZyB7XG5cdFx0cmV0dXJuIGdldFN0YWJsZUlkUGFydEZyb21EYXRhRmllbGQob0RhdGFGaWVsZCkhO1xuXHR9XG5cblx0LyoqXG5cdCAqIFRocm93cyBhIEVycm9yIGlmIGFueSBvdGhlciBjaGFyYWN0ZXIgdGhlbiBhQS16WiwgMC05LCAnOicsICdfJyBvciAnLScgaXMgdXNlZC5cblx0ICpcblx0ICogQHBhcmFtIHtzdHJpbmd9IGtleSBTdHJpbmcgdG8gY2hlY2sgdmFsaWRpdHkgb25cblx0ICovXG5cdHN0YXRpYyB2YWxpZGF0ZUtleShrZXk6IHN0cmluZykge1xuXHRcdGNvbnN0IHBhdHRlcm4gPSAvW15BLVphLXowLTlfXFwtOl0vO1xuXHRcdGlmIChwYXR0ZXJuLmV4ZWMoa2V5KSkge1xuXHRcdFx0dGhyb3cgbmV3IEVycm9yKFwiSW52YWxpZCBrZXk6IFwiICsga2V5ICsgXCIgLSBvbmx5ICdBLVphLXowLTlfLTonIGFyZSBhbGxvd2VkXCIpO1xuXHRcdH1cblx0fVxuXG5cdC8qKlxuXHQgKiBSZXR1cm5zIHRoZSBrZXkgZm9yIGEgc2VsZWN0aW9uIGZpZWxkIHJlcXVpcmVkIGZvciBhZGFwdGlvbi5cblx0ICpcblx0ICogQHBhcmFtIGZ1bGxQcm9wZXJ0eVBhdGggVGhlIGZ1bGwgcHJvcGVydHkgcGF0aCAod2l0aG91dCBlbnRpdHlUeXBlKVxuXHQgKiBAcmV0dXJucyB7c3RyaW5nfSBUaGUga2V5IG9mIHRoZSBzZWxlY3Rpb24gZmllbGRcblx0ICovXG5cdHN0YXRpYyBnZXRTZWxlY3Rpb25GaWVsZEtleUZyb21QYXRoKGZ1bGxQcm9wZXJ0eVBhdGg6IHN0cmluZykge1xuXHRcdHJldHVybiBmdWxsUHJvcGVydHlQYXRoLnJlcGxhY2UoLyhcXCp8XFwrKT9cXC8vZywgXCI6OlwiKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBSZXR1cm5zIHRoZSBwYXRoIGZvciBhIHNlbGVjdGlvbiBmaWVsZCByZXF1aXJlZCBmb3IgYWRhcHRpb24uXG5cdCAqXG5cdCAqIEBwYXJhbSBzZWxlY3Rpb25GaWVsZEtleSBUaGUga2V5IG9mIHRoZSBzZWxlY3Rpb24gZmllbGRcblx0ICogQHJldHVybnMge3N0cmluZ30gVGhlIGZ1bGwgcHJvcGVydHkgcGF0aFxuXHQgKi9cblx0c3RhdGljIGdldFBhdGhGcm9tU2VsZWN0aW9uRmllbGRLZXkoc2VsZWN0aW9uRmllbGRLZXk6IHN0cmluZykge1xuXHRcdHJldHVybiBzZWxlY3Rpb25GaWVsZEtleS5yZXBsYWNlKC86Oi9nLCBcIi9cIik7XG5cdH1cbn1cbiJdfQ==
@@ -2,4 +2,4 @@
2
2
  * SAP UI development toolkit for HTML5 (SAPUI5)
3
3
  * (c) Copyright 2009-2021 SAP SE. All rights reserved
4
4
  */
5
- sap.ui.define(["../../helpers/StableIdHelper"],function(S){"use strict";var _={};var g=S.getStableIdPartFromDataField;function a(i,C){if(!(i instanceof C)){throw new TypeError("Cannot call a class as a function");}}function b(t,p){for(var i=0;i<p.length;i++){var d=p[i];d.enumerable=d.enumerable||false;d.configurable=true;if("value"in d)d.writable=true;Object.defineProperty(t,d.key,d);}}function c(C,p,s){if(p)b(C.prototype,p);if(s)b(C,s);return C;}var K=function(){function K(){a(this,K);}_.KeyHelper=K;c(K,null,[{key:"generateKeyFromDataField",value:function e(d){return g(d);}},{key:"validateKey",value:function v(k){var p=/[^A-Za-z0-9_\-:]/;if(p.exec(k)){throw new Error("Invalid key: "+k+" - only 'A-Za-z0-9_-:' are allowed");}}},{key:"getSelectionFieldKeyFromPath",value:function d(f){return f.replace(/(\*|\+)?\//g,"::");}},{key:"getPathFromSelectionFieldKey",value:function d(s){return s.replace(/::\//g,"/");}}]);return K;}();_.KeyHelper=K;return _;},false);
5
+ sap.ui.define(["../../helpers/StableIdHelper"],function(S){"use strict";var _={};var g=S.getStableIdPartFromDataField;var K=function(){function K(){}_.KeyHelper=K;K.generateKeyFromDataField=function a(d){return g(d);};K.validateKey=function v(k){var p=/[^A-Za-z0-9_\-:]/;if(p.exec(k)){throw new Error("Invalid key: "+k+" - only 'A-Za-z0-9_-:' are allowed");}};K.getSelectionFieldKeyFromPath=function a(f){return f.replace(/(\*|\+)?\//g,"::");};K.getPathFromSelectionFieldKey=function a(s){return s.replace(/::/g,"/");};return K;}();_.KeyHelper=K;return _;},false);
@@ -44,6 +44,6 @@ export class KeyHelper {
44
44
  * @returns {string} The full property path
45
45
  */
46
46
  static getPathFromSelectionFieldKey(selectionFieldKey: string) {
47
- return selectionFieldKey.replace(/::\//g, "/");
47
+ return selectionFieldKey.replace(/::/g, "/");
48
48
  }
49
49
  }
@@ -56,6 +56,7 @@ sap.ui.define(["../ManifestSettings", "sap/fe/core/converters/controls/Common/Ac
56
56
  * Retrieve all the IBN actions for the identification annotation.
57
57
  * They must be
58
58
  * - Not statically hidden.
59
+ *
59
60
  * @param {EntityType} entityType The current entitytype
60
61
  * @param {boolean} bDetermining Whether or not the action should be determining
61
62
  * @returns {DataFieldForIntentBasedNavigationTypes[]} An array of datafield for action respecting the bDetermining property.
@@ -97,7 +98,7 @@ sap.ui.define(["../ManifestSettings", "sap/fe/core/converters/controls/Common/Ac
97
98
  // Set absolute binding path for Singleton references, otherwise the configured annotation path itself.
98
99
  // For e.g. /com.sap.namespace.EntityContainer/Singleton/Property to /Singleton/Property
99
100
  deleteHiddenExpression = annotationExpression(deleteHidden, visitedNavigationPaths, undefined, function (path) {
100
- return singletonPathVisitor(path, converterContext, []);
101
+ return singletonPathVisitor(path, converterContext.getConvertedTypes(), []);
101
102
  }),
102
103
  manifestWrapper = converterContext.getManifestWrapper(),
103
104
  viewLevel = manifestWrapper.getViewLevel(),
@@ -148,7 +149,7 @@ sap.ui.define(["../ManifestSettings", "sap/fe/core/converters/controls/Common/Ac
148
149
  // Set absolute binding path for Singleton references, otherwise the configured annotation path itself.
149
150
  // For e.g. /com.sap.namespace.EntityContainer/Singleton/Property to /Singleton/Property
150
151
  updateHiddenExpression = annotationExpression(updateHidden, visitedNavigationPaths, undefined, function (path) {
151
- return singletonPathVisitor(path, converterContext, visitedNavigationPaths);
152
+ return singletonPathVisitor(path, converterContext.getConvertedTypes(), visitedNavigationPaths);
152
153
  }),
153
154
  notEditableExpression = not(UI.IsEditable); // If UI.UpdateHidden annotation on entity set or type is either not defined or explicitly set to false,
154
155
  // Edit button is visible in display mode.
@@ -207,6 +208,11 @@ sap.ui.define(["../ManifestSettings", "sap/fe/core/converters/controls/Common/Ac
207
208
 
208
209
  return true;
209
210
  }
211
+ /**
212
+ * @param converterContext
213
+ * @returns {BaseAction[]}
214
+ */
215
+
210
216
 
211
217
  _exports.getEditButtonEnabled = getEditButtonEnabled;
212
218
 
@@ -221,7 +227,11 @@ sap.ui.define(["../ManifestSettings", "sap/fe/core/converters/controls/Common/Ac
221
227
  oEntityDeleteRestrictions = entitySet && ((_entitySet$annotation11 = entitySet.annotations) === null || _entitySet$annotation11 === void 0 ? void 0 : (_entitySet$annotation12 = _entitySet$annotation11.Capabilities) === null || _entitySet$annotation12 === void 0 ? void 0 : _entitySet$annotation12.DeleteRestrictions),
222
228
  bUpdateHidden = entitySet && ((_entitySet$annotation13 = entitySet.annotations.UI) === null || _entitySet$annotation13 === void 0 ? void 0 : (_entitySet$annotation14 = _entitySet$annotation13.UpdateHidden) === null || _entitySet$annotation14 === void 0 ? void 0 : _entitySet$annotation14.valueOf()),
223
229
  dataModelObjectPath = converterContext.getDataModelObjectPath(),
224
- isParentDeletable = isPathDeletable(dataModelObjectPath),
230
+ isParentDeletable = isPathDeletable(dataModelObjectPath, {
231
+ pathVisitor: function (path, navigationPaths) {
232
+ return singletonPathVisitor(path, converterContext.getConvertedTypes(), navigationPaths);
233
+ }
234
+ }),
225
235
  bParentEntitySetDeletable = isParentDeletable ? compileBinding(isParentDeletable) : isParentDeletable,
226
236
  headerDataFieldForActions = getIdentificationDataFieldForActions(converterContext.getEntityType(), false); // First add the "Critical" DataFieldForActions
227
237
 
@@ -326,6 +336,11 @@ sap.ui.define(["../ManifestSettings", "sap/fe/core/converters/controls/Common/Ac
326
336
  });
327
337
  return headerActions;
328
338
  }
339
+ /**
340
+ * @param converterContext
341
+ * @returns {BaseAction[]}
342
+ */
343
+
329
344
 
330
345
  _exports.getHeaderDefaultActions = getHeaderDefaultActions;
331
346
 
@@ -345,6 +360,12 @@ sap.ui.define(["../ManifestSettings", "sap/fe/core/converters/controls/Common/Ac
345
360
  };
346
361
  });
347
362
  }
363
+ /**
364
+ * @param viewLevel
365
+ * @param converterContext
366
+ * @returns {BaseAction[]}
367
+ */
368
+
348
369
 
349
370
  _exports.getHiddenHeaderActions = getHiddenHeaderActions;
350
371
 
@@ -424,4 +445,4 @@ sap.ui.define(["../ManifestSettings", "sap/fe/core/converters/controls/Common/Ac
424
445
  _exports.getFooterDefaultActions = getFooterDefaultActions;
425
446
  return _exports;
426
447
  }, false);
427
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIkhlYWRlckFuZEZvb3RlckFjdGlvbi50cyJdLCJuYW1lcyI6WyJnZXRJZGVudGlmaWNhdGlvbkRhdGFGaWVsZEZvckFjdGlvbnMiLCJlbnRpdHlUeXBlIiwiYkRldGVybWluaW5nIiwiYW5ub3RhdGlvbnMiLCJVSSIsIklkZW50aWZpY2F0aW9uIiwiZmlsdGVyIiwiaWRlbnRpZmljYXRpb25EYXRhRmllbGQiLCJIaWRkZW4iLCJ2YWx1ZU9mIiwiJFR5cGUiLCJEZXRlcm1pbmluZyIsIkFjdGlvblRhcmdldCIsImlzQm91bmQiLCJDb3JlIiwiT3BlcmF0aW9uQXZhaWxhYmxlIiwiZ2V0SWRlbnRpZmljYXRpb25EYXRhRmllbGRGb3JJQk5BY3Rpb25zIiwiSU1QT1JUQU5UX0NSSVRJQ0FMSVRJRVMiLCJnZXREZWxldGVCdXR0b25WaXNpYmlsaXR5IiwiY29udmVydGVyQ29udGV4dCIsImRlbGV0ZUhpZGRlbiIsImRhdGFNb2RlbE9iamVjdFBhdGgiLCJnZXREYXRhTW9kZWxPYmplY3RQYXRoIiwidmlzaXRlZE5hdmlnYXRpb25QYXRocyIsIm5hdmlnYXRpb25Qcm9wZXJ0aWVzIiwibWFwIiwibmF2UHJvcCIsIm5hbWUiLCJkZWxldGVIaWRkZW5FeHByZXNzaW9uIiwiYW5ub3RhdGlvbkV4cHJlc3Npb24iLCJ1bmRlZmluZWQiLCJwYXRoIiwic2luZ2xldG9uUGF0aFZpc2l0b3IiLCJtYW5pZmVzdFdyYXBwZXIiLCJnZXRNYW5pZmVzdFdyYXBwZXIiLCJ2aWV3TGV2ZWwiLCJnZXRWaWV3TGV2ZWwiLCJlZGl0YWJsZUV4cHJlc3Npb24iLCJJc0VkaXRhYmxlIiwibm90IiwiaWZFbHNlIiwiYW5kIiwiZXF1YWwiLCJnZXREZWxldGVCdXR0b25FbmFibGVkIiwiaXNEZWxldGFibGUiLCJpc1BhcmVudERlbGV0YWJsZSIsImNvbnN0YW50IiwiZ2V0RWRpdEJ1dHRvblZpc2liaWxpdHkiLCJ1cGRhdGVIaWRkZW4iLCJlbnRpdHlTZXQiLCJnZXRFbnRpdHlTZXQiLCJiSXNEcmFmdFJvb3QiLCJDb21tb24iLCJEcmFmdFJvb3QiLCJ1cGRhdGVIaWRkZW5FeHByZXNzaW9uIiwibm90RWRpdGFibGVFeHByZXNzaW9uIiwicmVzdWx0YW50RXhwcmVzc2lvbiIsIkRyYWZ0IiwiSGFzTm9EcmFmdEZvckN1cnJlbnRVc2VyIiwiZ2V0RWRpdEJ1dHRvbkVuYWJsZWQiLCJpc0RyYWZ0Um9vdCIsImlzU3RpY2t5IiwiU2Vzc2lvbiIsIlN0aWNreVNlc3Npb25TdXBwb3J0ZWQiLCJlZGl0QWN0aW9uTmFtZSIsIkVkaXRBY3Rpb24iLCJlZGl0QWN0aW9uQW5ub3RhdGlvblBhdGgiLCJnZXRBYnNvbHV0ZUFubm90YXRpb25QYXRoIiwiZWRpdEFjdGlvbnMiLCJnZXRFbnRpdHlUeXBlQW5ub3RhdGlvbiIsImFubm90YXRpb24iLCJhY3Rpb25zIiwibGVuZ3RoIiwiZWRpdEFjdGlvbiIsImdldEVuYWJsZWRGb3JBbm5vdGF0aW9uQWN0aW9uIiwiZ2V0SGVhZGVyRGVmYXVsdEFjdGlvbnMiLCJnZXRFbnRpdHlUeXBlIiwib1N0aWNreVNlc3Npb25TdXBwb3J0ZWQiLCJvRHJhZnRSb290Iiwib0VudGl0eURlbGV0ZVJlc3RyaWN0aW9ucyIsIkNhcGFiaWxpdGllcyIsIkRlbGV0ZVJlc3RyaWN0aW9ucyIsImJVcGRhdGVIaWRkZW4iLCJVcGRhdGVIaWRkZW4iLCJpc1BhdGhEZWxldGFibGUiLCJiUGFyZW50RW50aXR5U2V0RGVsZXRhYmxlIiwiY29tcGlsZUJpbmRpbmciLCJoZWFkZXJEYXRhRmllbGRGb3JBY3Rpb25zIiwiaGVhZGVyQWN0aW9ucyIsImRhdGFGaWVsZCIsImluZGV4T2YiLCJDcml0aWNhbGl0eSIsInR5cGUiLCJBY3Rpb25UeXBlIiwiRGF0YUZpZWxkRm9yQWN0aW9uIiwiYW5ub3RhdGlvblBhdGgiLCJnZXRFbnRpdHlTZXRCYXNlZEFubm90YXRpb25QYXRoIiwiZnVsbHlRdWFsaWZpZWROYW1lIiwia2V5IiwiS2V5SGVscGVyIiwiZ2VuZXJhdGVLZXlGcm9tRGF0YUZpZWxkIiwidmlzaWJsZSIsImVuYWJsZWQiLCJpc05hdmlnYWJsZSIsInB1c2giLCJQcmltYXJ5IiwiRGVsZXRhYmxlIiwiRGVsZXRlSGlkZGVuIiwiU2Vjb25kYXJ5IiwicGFyZW50RW50aXR5RGVsZXRlRW5hYmxlZCIsIlN3aXRjaFRvQWN0aXZlT2JqZWN0IiwiU3dpdGNoVG9EcmFmdE9iamVjdCIsImhlYWRlckRhdGFGaWVsZEZvcklCTkFjdGlvbnMiLCJmb3JFYWNoIiwib05hdmlnYXRpb25QYXJhbXMiLCJzZW1hbnRpY09iamVjdE1hcHBpbmciLCJNYXBwaW5nIiwiZ2V0U2VtYW50aWNPYmplY3RNYXBwaW5nIiwiUmVxdWlyZXNDb250ZXh0IiwiRXJyb3IiLCJMYWJlbCIsIklubGluZSIsIkRhdGFGaWVsZEZvckludGVudEJhc2VkTmF2aWdhdGlvbiIsInRleHQiLCJ0b1N0cmluZyIsImJ1dHRvblR5cGUiLCJCdXR0b25UeXBlIiwiR2hvc3QiLCJOYXZpZ2F0aW9uQXZhaWxhYmxlIiwicHJlc3MiLCJmbiIsIlNlbWFudGljT2JqZWN0IiwiQWN0aW9uIiwiY3VzdG9tRGF0YSIsInNlbWFudGljT2JqZWN0IiwiYWN0aW9uIiwiZ2V0SGlkZGVuSGVhZGVyQWN0aW9ucyIsImhpZGRlbkFjdGlvbnMiLCJEZWZhdWx0IiwiZ2V0Rm9vdGVyRGVmYXVsdEFjdGlvbnMiLCJzRW50aXR5U2V0RHJhZnRSb290IiwidGVybSIsImJDb25kaXRpb25TYXZlIiwiU2F2ZUFjdGlvbiIsImJDb25kaXRpb25BcHBseSIsImJDb25kaXRpb25DYW5jZWwiLCJEaXNjYXJkQWN0aW9uIiwiZm9vdGVyRGF0YUZpZWxkRm9yQWN0aW9ucyIsImZvb3RlckFjdGlvbnMiLCJlbnRpdHlUeXBlTmFtZSIsIkRlZmF1bHRBcHBseSIsInBvc2l0aW9uIiwicGxhY2VtZW50IiwiUGxhY2VtZW50IiwiRW5kIl0sIm1hcHBpbmdzIjoiO0FBQUE7QUFDQTtBQUNBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUEwQkE7QUFDQTtBQUNBO0FBQ0E7QUFD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QUNDLGtCQURDO0FBRWxCQyxRQUFBQSxjQUFjLEVBQUU1RSxnQkFBZ0IsQ0FBQzZFLCtCQUFqQixDQUFpRFAsU0FBUyxDQUFDUSxrQkFBM0QsQ0FGRTtBQUdsQkMsUUFBQUEsR0FBRyxFQUFFQyxTQUFTLENBQUNDLHdCQUFWLENBQW1DWCxTQUFuQyxDQUhhO0FBSWxCWSxRQUFBQSxPQUFPLEVBQUVmLGNBQWMsQ0FBQy9DLEdBQUcsQ0FBQ0csS0FBSyxDQUFDYixvQkFBb0IsNEJBQUM0RCxTQUFTLENBQUN0RixXQUFYLHVGQUFDLHdCQUF1QkMsRUFBeEIsNERBQUMsd0JBQTJCSSxNQUE1QixDQUFyQixFQUEwRCxJQUExRCxDQUFOLENBQUosQ0FKTDtBQUtsQjhGLFFBQUFBLE9BQU8sRUFBRTVCLDZCQUE2QixDQUFDdkQsZ0JBQUQsRUFBbUJzRSxTQUFTLENBQUM3RSxZQUE3QixDQUxwQjtBQU1sQjJGLFFBQUFBLFdBQVcsRUFBRTtBQU5LLE9BQW5CO0FBUUEsS0FiRixFQTVDNEcsQ0EyRDVHOztBQUNBLFFBQUkwQyxnQkFBSixFQUFzQjtBQUNyQkcsTUFBQUEsYUFBYSxDQUFDNUMsSUFBZCxDQUFtQjtBQUNsQlosUUFBQUEsSUFBSSxFQUFFQyxVQUFVLENBQUNlLFNBREM7QUFFbEJWLFFBQUFBLEdBQUcsRUFBRSxjQUZhO0FBR2xCcUQsUUFBQUEsUUFBUSxFQUFFO0FBQUVDLFVBQUFBLFNBQVMsRUFBRUMsU0FBUyxDQUFDQztBQUF2QjtBQUhRLE9BQW5CO0FBS0E7O0FBQ0QsV0FBT04sYUFBUDtBQUNBIiwic291cmNlUm9vdCI6Ii4iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBY3Rpb25UeXBlIH0gZnJvbSBcIi4uL01hbmlmZXN0U2V0dGluZ3NcIjtcbmltcG9ydCB7IEVudGl0eVR5cGUgfSBmcm9tIFwiQHNhcC11eC9hbm5vdGF0aW9uLWNvbnZlcnRlclwiO1xuaW1wb3J0IHtcblx0QW5ub3RhdGlvbkFjdGlvbixcblx0QmFzZUFjdGlvbixcblx0QnV0dG9uVHlwZSxcblx0Z2V0RW5hYmxlZEZvckFubm90YXRpb25BY3Rpb24sXG5cdGdldFNlbWFudGljT2JqZWN0TWFwcGluZ1xufSBmcm9tIFwic2FwL2ZlL2NvcmUvY29udmVydGVycy9jb250cm9scy9Db21tb24vQWN0aW9uXCI7XG5pbXBvcnQgeyBEYXRhRmllbGRGb3JBY3Rpb25UeXBlcywgRGF0YUZpZWxkRm9ySW50ZW50QmFzZWROYXZpZ2F0aW9uVHlwZXMsIFByb3BlcnR5QW5ub3RhdGlvblZhbHVlIH0gZnJvbSBcIkBzYXAtdXgvdm9jYWJ1bGFyaWVzLXR5cGVzXCI7XG5pbXBvcnQgeyBQbGFjZW1lbnQgfSBmcm9tIFwic2FwL2ZlL2NvcmUvY29udmVydGVycy9oZWxwZXJzL0NvbmZpZ3VyYWJsZU9iamVjdFwiO1xuaW1wb3J0IHtcblx0YW5ub3RhdGlvbkV4cHJlc3Npb24sXG5cdGNvbXBpbGVCaW5kaW5nLFxuXHRub3QsXG5cdGVxdWFsLFxuXHRmbixcblx0RXhwcmVzc2lvbixcblx0YW5kLFxuXHRpZkVsc2UsXG5cdEJpbmRpbmdFeHByZXNzaW9uLFxuXHRjb25zdGFudFxufSBmcm9tIFwic2FwL2ZlL2NvcmUvaGVscGVycy9CaW5kaW5nRXhwcmVzc2lvblwiO1xuaW1wb3J0IHsgS2V5SGVscGVyIH0gZnJvbSBcInNhcC9mZS9jb3JlL2NvbnZlcnRlcnMvaGVscGVycy9LZXlcIjtcbmltcG9ydCB7IGlzUGF0aERlbGV0YWJsZSB9IGZyb20gXCJzYXAvZmUvY29yZS90ZW1wbGF0aW5nL0RhdGFNb2RlbFBhdGhIZWxwZXJcIjtcbmltcG9ydCBDb252ZXJ0ZXJDb250ZXh0IGZyb20gXCIuLi9Db252ZXJ0ZXJDb250ZXh0XCI7XG5pbXBvcnQgeyBEcmFmdCwgc2luZ2xldG9uUGF0aFZpc2l0b3IsIFVJIH0gZnJvbSBcIi4uL2hlbHBlcnMvQmluZGluZ0hlbHBlclwiO1xuXG4vKipcbiAqIFJldHJpZXZlcyBhbGwgdGhlIGRhdGEgZmllbGQgZm9yIGFjdGlvbnMgZm9yIHRoZSBpZGVudGlmaWNhdGlvbiBhbm5vdGF0aW9uXG4gKiBUaGV5IG11c3QgYmVcbiAqIC0gTm90IHN0YXRpY2FsbHkgaGlkZGVuXG4gKiAtIEVpdGhlciBsaW5rZWQgdG8gYW4gVW5ib3VuZCBhY3Rpb24gb3IgdG8gYW4gYWN0aW9uIHdoaWNoIGhhcyBhbiBPcGVyYXRpb25BdmFpbGFibGUgdGhhdCBpcyBub3Qgc2V0IHRvIGZhbHNlIHN0YXRpY2FsbHkuXG4gKlxuICogQHBhcmFtIHtFbnRpdHlUeXBlfSBlbnRpdHlUeXBlIFRoZSBjdXJyZW50IGVudGl0eSB0eXBlXG4gKiBAcGFyYW0ge2Jvb2xlYW59IGJEZXRlcm1pbmluZyBUaGUgZmxhZyB3aGljaCBkZW5vdGVzIHdoZXRoZXIgb3Igbm90IHRoZSBhY3Rpb24gaXMgYSBkZXRlcm1pbmluZyBhY3Rpb25cbiAqIEByZXR1cm5zIHtEYXRhRmllbGRGb3JBY3Rpb25UeXBlc1tdfSBBbiBhcnJheSBvZiBEYXRhRmllbGQgZm9yIGFjdGlvbiByZXNwZWN0aW5nIHRoZSBpbnB1dCBwYXJhbWV0ZXIgJ2JEZXRlcm1pbmluZydcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldElkZW50aWZpY2F0aW9uRGF0YUZpZWxkRm9yQWN0aW9ucyhlbnRpdHlUeXBlOiBFbnRpdHlUeXBlLCBiRGV0ZXJtaW5pbmc6IGJvb2xlYW4pOiBEYXRhRmllbGRGb3JBY3Rpb25UeXBlc1tdIHtcblx0cmV0dXJuIChlbnRpdHlUeXBlLmFubm90YXRpb25zPy5VST8uSWRlbnRpZmljYXRpb24/LmZpbHRlcihpZGVudGlmaWNhdGlvbkRhdGFGaWVsZCA9PiB7XG5cdFx0aWYgKGlkZW50aWZpY2F0aW9uRGF0YUZpZWxkPy5hbm5vdGF0aW9ucz8uVUk/LkhpZGRlbj8udmFsdWVPZigpICE9PSB0cnVlKSB7XG5cdFx0XHRpZiAoXG5cdFx0XHRcdGlkZW50aWZpY2F0aW9uRGF0YUZpZWxkPy4kVHlwZSA9PT0gXCJjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5EYXRhRmllbGRGb3JBY3Rpb25cIiAmJlxuXHRcdFx0XHQhIWlkZW50aWZpY2F0aW9uRGF0YUZpZWxkLkRldGVybWluaW5nID09PSBiRGV0ZXJtaW5pbmcgJiZcblx0XHRcdFx0KCFpZGVudGlmaWNhdGlvbkRhdGFGaWVsZD8uQWN0aW9uVGFyZ2V0Py5pc0JvdW5kIHx8XG5cdFx0XHRcdFx0aWRlbnRpZmljYXRpb25EYXRhRmllbGQ/LkFjdGlvblRhcmdldD8uYW5ub3RhdGlvbnM/LkNvcmU/Lk9wZXJhdGlvbkF2YWlsYWJsZT8udmFsdWVPZigpICE9PSBmYWxzZSlcblx0XHRcdCkge1xuXHRcdFx0XHRyZXR1cm4gdHJ1ZTtcblx0XHRcdH1cblx0XHR9XG5cdFx0cmV0dXJuIGZhbHNlO1xuXHR9KSB8fCBbXSkgYXMgRGF0YUZpZWxkRm9yQWN0aW9uVHlwZXNbXTtcbn1cblxuLyoqXG4gKiBSZXRyaWV2ZSBhbGwgdGhlIElCTiBhY3Rpb25zIGZvciB0aGUgaWRlbnRpZmljYXRpb24gYW5ub3RhdGlvbi5cbiAqIFRoZXkgbXVzdCBiZVxuICogLSBOb3Qgc3RhdGljYWxseSBoaWRkZW4uXG4gKiBAcGFyYW0ge0VudGl0eVR5cGV9IGVudGl0eVR5cGUgVGhlIGN1cnJlbnQgZW50aXR5dHlwZVxuICogQHBhcmFtIHtib29sZWFufSBiRGV0ZXJtaW5pbmcgV2hldGhlciBvciBub3QgdGhlIGFjdGlvbiBzaG91bGQgYmUgZGV0ZXJtaW5pbmdcbiAqIEByZXR1cm5zIHtEYXRhRmllbGRGb3JJbnRlbnRCYXNlZE5hdmlnYXRpb25UeXBlc1tdfSBBbiBhcnJheSBvZiBkYXRhZmllbGQgZm9yIGFjdGlvbiByZXNwZWN0aW5nIHRoZSBiRGV0ZXJtaW5pbmcgcHJvcGVydHkuXG4gKi9cbmZ1bmN0aW9uIGdldElkZW50aWZpY2F0aW9uRGF0YUZpZWxkRm9ySUJOQWN0aW9ucyhlbnRpdHlUeXBlOiBFbnRpdHlUeXBlLCBiRGV0ZXJtaW5pbmc6IGJvb2xlYW4pOiBEYXRhRmllbGRGb3JJbnRlbnRCYXNlZE5hdmlnYXRpb25UeXBlc1tdIHtcblx0cmV0dXJuIChlbnRpdHlUeXBlLmFubm90YXRpb25zPy5VST8uSWRlbnRpZmljYXRpb24/LmZpbHRlcihpZGVudGlmaWNhdGlvbkRhdGFGaWVsZCA9PiB7XG5cdFx0aWYgKGlkZW50aWZpY2F0aW9uRGF0YUZpZWxkPy5hbm5vdGF0aW9ucz8uVUk/LkhpZGRlbj8udmFsdWVPZigpICE9PSB0cnVlKSB7XG5cdFx0XHRpZiAoXG5cdFx0XHRcdGlkZW50aWZpY2F0aW9uRGF0YUZpZWxkPy4kVHlwZSA9PT0gXCJjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5EYXRhRmllbGRGb3JJbnRlbnRCYXNlZE5hdmlnYXRpb25cIiAmJlxuXHRcdFx0XHQhIWlkZW50aWZpY2F0aW9uRGF0YUZpZWxkLkRldGVybWluaW5nID09PSBiRGV0ZXJtaW5pbmdcblx0XHRcdCkge1xuXHRcdFx0XHRyZXR1cm4gdHJ1ZTtcblx0XHRcdH1cblx0XHR9XG5cblx0XHRyZXR1cm4gZmFsc2U7XG5cdH0pIHx8IFtdKSBhcyBEYXRhRmllbGRGb3JJbnRlbnRCYXNlZE5hdmlnYXRpb25UeXBlc1tdO1xufVxuXG5jb25zdCBJTVBPUlRBTlRfQ1JJVElDQUxJVElFUyA9IFtcblx0XCJVSS5Dcml0aWNhbGl0eVR5cGUvVmVyeVBvc2l0aXZlXCIsXG5cdFwiVUkuQ3JpdGljYWxpdHlUeXBlL1Bvc2l0aXZlXCIsXG5cdFwiVUkuQ3JpdGljYWxpdHlUeXBlL05lZ2F0aXZlXCIsXG5cdFwiVUkuQ3JpdGljYWxpdHlUeXBlL1ZlcnlOZWdhdGl2ZVwiXG5dO1xuXG4vKipcbiAqIE1ldGhvZCB0byBkZXRlcm1pbmUgdGhlICd2aXNpYmxlJyBwcm9wZXJ0eSBiaW5kaW5nIGZvciB0aGUgRGVsZXRlIGJ1dHRvbiBvbiBhbiBvYmplY3QgcGFnZS5cbiAqXG4gKiBAcGFyYW0ge0NvbnZlcnRlckNvbnRleHR9IGNvbnZlcnRlckNvbnRleHQgSW5zdGFuY2Ugb2YgdGhlIGNvbnZlcnRlciBjb250ZXh0LlxuICogQHBhcmFtIHtQcm9wZXJ0eUFubm90YXRpb25WYWx1ZTxib29sZWFuPiB8IHVuZGVmaW5lZH0gZGVsZXRlSGlkZGVuIFRoZSB2YWx1ZSBvZiB0aGUgVUkuRGVsZXRlSGlkZGVuIGFubm90YXRpb24gb24gdGhlIGVudGl0eSBzZXQgLyB0eXBlLlxuICogQHJldHVybnMge0V4cHJlc3Npb248Ym9vbGVhbj59IFRoZSBiaW5kaW5nIGV4cHJlc3Npb24gZm9yIHRoZSAndmlzaWJsZScgcHJvcGVydHkgb2YgdGhlIERlbGV0ZSBidXR0b24uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXREZWxldGVCdXR0b25WaXNpYmlsaXR5KFxuXHRjb252ZXJ0ZXJDb250ZXh0OiBDb252ZXJ0ZXJDb250ZXh0LFxuXHRkZWxldGVIaWRkZW46IFByb3BlcnR5QW5ub3RhdGlvblZhbHVlPGJvb2xlYW4+IHwgdW5kZWZpbmVkXG4pOiBFeHByZXNzaW9uPGJvb2xlYW4+IHtcblx0Y29uc3QgZGF0YU1vZGVsT2JqZWN0UGF0aCA9IGNvbnZlcnRlckNvbnRleHQuZ2V0RGF0YU1vZGVsT2JqZWN0UGF0aCgpLFxuXHRcdHZpc2l0ZWROYXZpZ2F0aW9uUGF0aHMgPSBkYXRhTW9kZWxPYmplY3RQYXRoLm5hdmlnYXRpb25Qcm9wZXJ0aWVzLm1hcChuYXZQcm9wID0+IG5hdlByb3AubmFtZSksXG5cdFx0Ly8gU2V0IGFic29sdXRlIGJpbmRpbmcgcGF0aCBmb3IgU2luZ2xldG9uIHJlZmVyZW5jZXMsIG90aGVyd2lzZSB0aGUgY29uZmlndXJlZCBhbm5vdGF0aW9uIHBhdGggaXRzZWxmLlxuXHRcdC8vIEZvciBlLmcuIC9jb20uc2FwLm5hbWVzcGFjZS5FbnRpdHlDb250YWluZXIvU2luZ2xldG9uL1Byb3BlcnR5IHRvIC9TaW5nbGV0b24vUHJvcGVydHlcblx0XHRkZWxldGVIaWRkZW5FeHByZXNzaW9uOiBFeHByZXNzaW9uPGJvb2xlYW4gfCB1bmRlZmluZWQ+ID0gYW5ub3RhdGlvbkV4cHJlc3Npb24oXG5cdFx0XHRkZWxldGVIaWRkZW4sXG5cdFx0XHR2aXNpdGVkTmF2aWdhdGlvblBhdGhzLFxuXHRcdFx0dW5kZWZpbmVkLFxuXHRcdFx0KHBhdGg6IHN0cmluZykgPT4gc2luZ2xldG9uUGF0aFZpc2l0b3IocGF0aCwgY29udmVydGVyQ29udGV4dCwgW10pXG5cdFx0KSxcblx0XHRtYW5pZmVzdFdyYXBwZXIgPSBjb252ZXJ0ZXJDb250ZXh0LmdldE1hbmlmZXN0V3JhcHBlcigpLFxuXHRcdHZpZXdMZXZlbCA9IG1hbmlmZXN0V3JhcHBlci5nZXRWaWV3TGV2ZWwoKSxcblx0XHQvLyBEZWxldGUgYnV0dG9uIGlzIHZpc2libGVcblx0XHQvLyBJbiBPUCBcdFx0LS0+ICB3aGVuIG5vdCBpbiBlZGl0IG1vZGVcblx0XHQvLyBJbiBzdWItT1AgXHQtLT4gIHdoZW4gaW4gZWRpdCBtb2RlXG5cdFx0ZWRpdGFibGVFeHByZXNzaW9uOiBFeHByZXNzaW9uPGJvb2xlYW4+ID0gdmlld0xldmVsID4gMSA/IFVJLklzRWRpdGFibGUgOiBub3QoVUkuSXNFZGl0YWJsZSk7XG5cblx0Ly8gSWYgVUkuRGVsZXRlSGlkZGVuIGFubm90YXRpb24gb24gZW50aXR5IHNldCBvciB0eXBlIGlzIGVpdGhlciBub3QgZGVmaW5lZCBvciBleHBsaWNpdGx5IHNldCB0byBmYWxzZSxcblx0Ly8gRGVsZXRlIGJ1dHRvbiBpcyB2aXNpYmxlIGJhc2VkIG9uIGVkaXRhYmxlRXhwcmVzc2lvbi5cblx0Ly8gZWxzZSxcblx0Ly8gRGVsZXRlIGJ1dHRvbiBpcyB2aXNpYmxlIGJhc2VkIG9uIGJvdGggYW5ub3RhdGlvbiBwYXRoIGFuZCBlZGl0YWJsZUV4cHJlc3Npb24uXG5cdHJldHVybiBpZkVsc2UoXG5cdFx0ZGVsZXRlSGlkZGVuID09PSB1bmRlZmluZWQgfHwgZGVsZXRlSGlkZGVuLnZhbHVlT2YoKSA9PT0gZmFsc2UsXG5cdFx0ZWRpdGFibGVFeHByZXNzaW9uLFxuXHRcdGFuZChlZGl0YWJsZUV4cHJlc3Npb24sIGVxdWFsKGRlbGV0ZUhpZGRlbkV4cHJlc3Npb24sIGZhbHNlKSlcblx0KTtcbn1cblxuLyoqXG4gKiBNZXRob2QgdG8gZGV0ZXJtaW5lIHRoZSAnZW5hYmxlZCcgcHJvcGVydHkgYmluZGluZyBmb3IgdGhlIERlbGV0ZSBidXR0b24gb24gYW4gb2JqZWN0IHBhZ2UuXG4gKlxuICogQHBhcmFtIHtQcm9wZXJ0eUFubm90YXRpb25WYWx1ZTxib29sZWFuPnx1bmRlZmluZWR9IGlzRGVsZXRhYmxlIFRoZSBkZWxldGUgcmVzdHJpY3Rpb24gY29uZmlndXJlZFxuICogQHBhcmFtIHtFeHByZXNzaW9uPGJvb2xlYW4+fSBpc1BhcmVudERlbGV0YWJsZSBUaGUgZGVsZXRlIHJlc3RyaWN0aW9uIGNvbmZpZ3VyZWQgb24gdGhlIHBhcmVudCBlbnRpdHlcbiAqIEByZXR1cm5zIHtFeHByZXNzaW9uPGJvb2xlYW4+fSBUaGUgYmluZGluZyBleHByZXNzaW9uIGZvciB0aGUgJ2VuYWJsZWQnIHByb3BlcnR5IG9mIHRoZSBEZWxldGUgYnV0dG9uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXREZWxldGVCdXR0b25FbmFibGVkKFxuXHRpc0RlbGV0YWJsZTogUHJvcGVydHlBbm5vdGF0aW9uVmFsdWU8Qm9vbGVhbj4gfCB1bmRlZmluZWQsXG5cdGlzUGFyZW50RGVsZXRhYmxlOiBFeHByZXNzaW9uPGJvb2xlYW4+XG4pOiBFeHByZXNzaW9uPGJvb2xlYW4+IHtcblx0cmV0dXJuIGlmRWxzZShcblx0XHRpc1BhcmVudERlbGV0YWJsZSAhPT0gdW5kZWZpbmVkLFxuXHRcdGlzUGFyZW50RGVsZXRhYmxlLFxuXHRcdGlmRWxzZShpc0RlbGV0YWJsZSAhPT0gdW5kZWZpbmVkLCBlcXVhbChpc0RlbGV0YWJsZSwgdHJ1ZSksIGNvbnN0YW50KHRydWUpKVxuXHQpO1xufVxuXG4vKipcbiAqIE1ldGhvZCB0byBkZXRlcm1pbmUgdGhlICd2aXNpYmxlJyBwcm9wZXJ0eSBiaW5kaW5nIGZvciB0aGUgRWRpdCBidXR0b24gb24gYW4gb2JqZWN0IHBhZ2UuXG4gKlxuICogQHBhcmFtIHtDb252ZXJ0ZXJDb250ZXh0fSBjb252ZXJ0ZXJDb250ZXh0IEluc3RhbmNlIG9mIHRoZSBjb252ZXJ0ZXIgY29udGV4dC5cbiAqIEBwYXJhbSB7UHJvcGVydHlBbm5vdGF0aW9uVmFsdWU8Ym9vbGVhbj4gfCB1bmRlZmluZWR9IHVwZGF0ZUhpZGRlbiBUaGUgdmFsdWUgb2YgdGhlIFVJLlVwZGF0ZUhpZGRlbiBhbm5vdGF0aW9uIG9uIHRoZSBlbnRpdHkgc2V0IC8gdHlwZS5cbiAqIEByZXR1cm5zIHtFeHByZXNzaW9uPGJvb2xlYW4+fSBUaGUgYmluZGluZyBleHByZXNzaW9uIGZvciB0aGUgJ3Zpc2libGUnIHByb3BlcnR5IG9mIHRoZSBFZGl0IGJ1dHRvbi5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldEVkaXRCdXR0b25WaXNpYmlsaXR5KFxuXHRjb252ZXJ0ZXJDb250ZXh0OiBDb252ZXJ0ZXJDb250ZXh0LFxuXHR1cGRhdGVIaWRkZW46IFByb3BlcnR5QW5ub3RhdGlvblZhbHVlPGJvb2xlYW4+IHwgdW5kZWZpbmVkXG4pOiBFeHByZXNzaW9uPGJvb2xlYW4+IHtcblx0Y29uc3QgZW50aXR5U2V0ID0gY29udmVydGVyQ29udGV4dC5nZXRFbnRpdHlTZXQoKSxcblx0XHRiSXNEcmFmdFJvb3QgPSBlbnRpdHlTZXQgJiYgZW50aXR5U2V0LmFubm90YXRpb25zLkNvbW1vbj8uRHJhZnRSb290ID8gdHJ1ZSA6IGZhbHNlLFxuXHRcdGRhdGFNb2RlbE9iamVjdFBhdGggPSBjb252ZXJ0ZXJDb250ZXh0LmdldERhdGFNb2RlbE9iamVjdFBhdGgoKSxcblx0XHR2aXNpdGVkTmF2aWdhdGlvblBhdGhzID0gZGF0YU1vZGVsT2JqZWN0UGF0aC5uYXZpZ2F0aW9uUHJvcGVydGllcy5tYXAobmF2UHJvcCA9PiBuYXZQcm9wLm5hbWUpLFxuXHRcdC8vIFNldCBhYnNvbHV0ZSBiaW5kaW5nIHBhdGggZm9yIFNpbmdsZXRvbiByZWZlcmVuY2VzLCBvdGhlcndpc2UgdGhlIGNvbmZpZ3VyZWQgYW5ub3RhdGlvbiBwYXRoIGl0c2VsZi5cblx0XHQvLyBGb3IgZS5nLiAvY29tLnNhcC5uYW1lc3BhY2UuRW50aXR5Q29udGFpbmVyL1NpbmdsZXRvbi9Qcm9wZXJ0eSB0byAvU2luZ2xldG9uL1Byb3BlcnR5XG5cdFx0dXBkYXRlSGlkZGVuRXhwcmVzc2lvbjogRXhwcmVzc2lvbjxib29sZWFuIHwgdW5kZWZpbmVkPiA9IGFubm90YXRpb25FeHByZXNzaW9uKFxuXHRcdFx0dXBkYXRlSGlkZGVuLFxuXHRcdFx0dmlzaXRlZE5hdmlnYXRpb25QYXRocyxcblx0XHRcdHVuZGVmaW5lZCxcblx0XHRcdChwYXRoOiBzdHJpbmcpID0+IHNpbmdsZXRvblBhdGhWaXNpdG9yKHBhdGgsIGNvbnZlcnRlckNvbnRleHQsIHZpc2l0ZWROYXZpZ2F0aW9uUGF0aHMpXG5cdFx0KSxcblx0XHRub3RFZGl0YWJsZUV4cHJlc3Npb246IEV4cHJlc3Npb248Ym9vbGVhbj4gPSBub3QoVUkuSXNFZGl0YWJsZSk7XG5cblx0Ly8gSWYgVUkuVXBkYXRlSGlkZGVuIGFubm90YXRpb24gb24gZW50aXR5IHNldCBvciB0eXBlIGlzIGVpdGhlciBub3QgZGVmaW5lZCBvciBleHBsaWNpdGx5IHNldCB0byBmYWxzZSxcblx0Ly8gRWRpdCBidXR0b24gaXMgdmlzaWJsZSBpbiBkaXNwbGF5IG1vZGUuXG5cdC8vIGVsc2UsXG5cdC8vIEVkaXQgYnV0dG9uIGlzIHZpc2libGUgYmFzZWQgb24gYm90aCBhbm5vdGF0aW9uIHBhdGggYW5kIGluIGRpc3BsYXkgbW9kZS5cblx0Y29uc3QgcmVzdWx0YW50RXhwcmVzc2lvbjogRXhwcmVzc2lvbjxib29sZWFuPiA9IGlmRWxzZShcblx0XHR1cGRhdGVIaWRkZW4gPT09IHVuZGVmaW5lZCB8fCB1cGRhdGVIaWRkZW4udmFsdWVPZigpID09PSBmYWxzZSxcblx0XHRub3RFZGl0YWJsZUV4cHJlc3Npb24sXG5cdFx0YW5kKG5vdEVkaXRhYmxlRXhwcmVzc2lvbiwgZXF1YWwodXBkYXRlSGlkZGVuRXhwcmVzc2lvbiwgZmFsc2UpKVxuXHQpO1xuXHRyZXR1cm4gaWZFbHNlKGJJc0RyYWZ0Um9vdCwgYW5kKHJlc3VsdGFudEV4cHJlc3Npb24sIERyYWZ0Lkhhc05vRHJhZnRGb3JDdXJyZW50VXNlciksIHJlc3VsdGFudEV4cHJlc3Npb24pO1xufVxuXG4vKipcbiAqIE1ldGhvZCB0byBkZXRlcm1pbmUgdGhlICdlbmFibGVkJyBwcm9wZXJ0eSBiaW5kaW5nIGZvciB0aGUgRWRpdCBidXR0b24gb24gYW4gb2JqZWN0IHBhZ2UuXG4gKlxuICogQHBhcmFtIHtDb252ZXJ0ZXJDb250ZXh0fSBjb252ZXJ0ZXJDb250ZXh0IEluc3RhbmNlIG9mIHRoZSBjb252ZXJ0ZXIgY29udGV4dC5cbiAqIEByZXR1cm5zIHtFeHByZXNzaW9uPGJvb2xlYW4+fSBUaGUgYmluZGluZyBleHByZXNzaW9uIGZvciB0aGUgJ2VuYWJsZWQnIHByb3BlcnR5IG9mIHRoZSBFZGl0IGJ1dHRvbi5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldEVkaXRCdXR0b25FbmFibGVkKGNvbnZlcnRlckNvbnRleHQ6IENvbnZlcnRlckNvbnRleHQpOiBCaW5kaW5nRXhwcmVzc2lvbjxib29sZWFuPiB7XG5cdGNvbnN0IGVudGl0eVNldCA9IGNvbnZlcnRlckNvbnRleHQuZ2V0RW50aXR5U2V0KCksXG5cdFx0aXNEcmFmdFJvb3QgPSBlbnRpdHlTZXQgJiYgZW50aXR5U2V0LmFubm90YXRpb25zLkNvbW1vbj8uRHJhZnRSb290ID8gdHJ1ZSA6IGZhbHNlLFxuXHRcdGlzU3RpY2t5ID0gZW50aXR5U2V0ICYmIGVudGl0eVNldC5hbm5vdGF0aW9ucy5TZXNzaW9uPy5TdGlja3lTZXNzaW9uU3VwcG9ydGVkID8gdHJ1ZSA6IGZhbHNlO1xuXG5cdGxldCBlZGl0QWN0aW9uTmFtZTogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXHRpZiAoaXNEcmFmdFJvb3QpIHtcblx0XHRlZGl0QWN0aW9uTmFtZSA9IGVudGl0eVNldD8uYW5ub3RhdGlvbnMuQ29tbW9uPy5EcmFmdFJvb3Q/LkVkaXRBY3Rpb24gYXMgc3RyaW5nO1xuXHR9IGVsc2UgaWYgKGlzU3RpY2t5KSB7XG5cdFx0ZWRpdEFjdGlvbk5hbWUgPSBlbnRpdHlTZXQ/LmFubm90YXRpb25zLlNlc3Npb24/LlN0aWNreVNlc3Npb25TdXBwb3J0ZWQ/LkVkaXRBY3Rpb24gYXMgc3RyaW5nO1xuXHR9XG5cdGlmIChlZGl0QWN0aW9uTmFtZSkge1xuXHRcdGNvbnN0IGVkaXRBY3Rpb25Bbm5vdGF0aW9uUGF0aCA9IGNvbnZlcnRlckNvbnRleHQuZ2V0QWJzb2x1dGVBbm5vdGF0aW9uUGF0aChlZGl0QWN0aW9uTmFtZSBhcyBzdHJpbmcpLFxuXHRcdFx0ZWRpdEFjdGlvbnMgPSAoY29udmVydGVyQ29udGV4dC5nZXRFbnRpdHlUeXBlQW5ub3RhdGlvbihlZGl0QWN0aW9uQW5ub3RhdGlvblBhdGgpPy5hbm5vdGF0aW9uIGFzIGFueSk/LmFjdGlvbnM7XG5cdFx0aWYgKGVkaXRBY3Rpb25zPy5sZW5ndGgpIHtcblx0XHRcdGNvbnN0IGVkaXRBY3Rpb24gPSBlZGl0QWN0aW9uc1swXTtcblx0XHRcdGlmIChlZGl0QWN0aW9uPy5hbm5vdGF0aW9ucz8uQ29yZT8uT3BlcmF0aW9uQXZhaWxhYmxlID09PSBudWxsKSB7XG5cdFx0XHRcdHJldHVybiBcIns9ICR7I1wiICsgZWRpdEFjdGlvbk5hbWUgKyBcIn0gPyB0cnVlIDogZmFsc2UgfVwiO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0cmV0dXJuIGdldEVuYWJsZWRGb3JBbm5vdGF0aW9uQWN0aW9uKGNvbnZlcnRlckNvbnRleHQsIGVkaXRBY3Rpb24pO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxuXHRyZXR1cm4gdHJ1ZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldEhlYWRlckRlZmF1bHRBY3Rpb25zKGNvbnZlcnRlckNvbnRleHQ6IENvbnZlcnRlckNvbnRleHQpOiBCYXNlQWN0aW9uW10ge1xuXHRjb25zdCBlbnRpdHlTZXQgPSBjb252ZXJ0ZXJDb250ZXh0LmdldEVudGl0eVNldCgpLFxuXHRcdGVudGl0eVR5cGUgPSBjb252ZXJ0ZXJDb250ZXh0LmdldEVudGl0eVR5cGUoKSxcblx0XHRvU3RpY2t5U2Vzc2lvblN1cHBvcnRlZCA9IGVudGl0eVNldCAmJiBlbnRpdHlTZXQuYW5ub3RhdGlvbnM/LlNlc3Npb24/LlN0aWNreVNlc3Npb25TdXBwb3J0ZWQsIC8vZm9yIHN0aWNreSBhcHBcblx0XHRvRHJhZnRSb290ID0gZW50aXR5U2V0ICYmIGVudGl0eVNldC5hbm5vdGF0aW9ucy5Db21tb24/LkRyYWZ0Um9vdCxcblx0XHRvRW50aXR5RGVsZXRlUmVzdHJpY3Rpb25zID0gZW50aXR5U2V0ICYmIGVudGl0eVNldC5hbm5vdGF0aW9ucz8uQ2FwYWJpbGl0aWVzPy5EZWxldGVSZXN0cmljdGlvbnMsXG5cdFx0YlVwZGF0ZUhpZGRlbiA9IGVudGl0eVNldCAmJiBlbnRpdHlTZXQuYW5ub3RhdGlvbnMuVUk/LlVwZGF0ZUhpZGRlbj8udmFsdWVPZigpLFxuXHRcdGRhdGFNb2RlbE9iamVjdFBhdGggPSBjb252ZXJ0ZXJDb250ZXh0LmdldERhdGFNb2RlbE9iamVjdFBhdGgoKSxcblx0XHRpc1BhcmVudERlbGV0YWJsZSA9IGlzUGF0aERlbGV0YWJsZShkYXRhTW9kZWxPYmplY3RQYXRoKSxcblx0XHRiUGFyZW50RW50aXR5U2V0RGVsZXRhYmxlID0gaXNQYXJlbnREZWxldGFibGUgPyBjb21waWxlQmluZGluZyhpc1BhcmVudERlbGV0YWJsZSkgOiBpc1BhcmVudERlbGV0YWJsZSxcblx0XHRoZWFkZXJEYXRhRmllbGRGb3JBY3Rpb25zID0gZ2V0SWRlbnRpZmljYXRpb25EYXRhRmllbGRGb3JBY3Rpb25zKGNvbnZlcnRlckNvbnRleHQuZ2V0RW50aXR5VHlwZSgpLCBmYWxzZSk7XG5cblx0Ly8gRmlyc3QgYWRkIHRoZSBcIkNyaXRpY2FsXCIgRGF0YUZpZWxkRm9yQWN0aW9uc1xuXHRjb25zdCBoZWFkZXJBY3Rpb25zOiBCYXNlQWN0aW9uW10gPSBoZWFkZXJEYXRhRmllbGRGb3JBY3Rpb25zXG5cdFx0LmZpbHRlcihkYXRhRmllbGQgPT4ge1xuXHRcdFx0cmV0dXJuIElNUE9SVEFOVF9DUklUSUNBTElUSUVTLmluZGV4T2YoZGF0YUZpZWxkPy5Dcml0aWNhbGl0eSBhcyBzdHJpbmcpID4gLTE7XG5cdFx0fSlcblx0XHQubWFwKGRhdGFGaWVsZCA9PiB7XG5cdFx0XHRyZXR1cm4ge1xuXHRcdFx0XHR0eXBlOiBBY3Rpb25UeXBlLkRhdGFGaWVsZEZvckFjdGlvbixcblx0XHRcdFx0YW5ub3RhdGlvblBhdGg6IGNvbnZlcnRlckNvbnRleHQuZ2V0RW50aXR5U2V0QmFzZWRBbm5vdGF0aW9uUGF0aChkYXRhRmllbGQuZnVsbHlRdWFsaWZpZWROYW1lKSxcblx0XHRcdFx0a2V5OiBLZXlIZWxwZXIuZ2VuZXJhdGVLZXlGcm9tRGF0YUZpZWxkKGRhdGFGaWVsZCksXG5cdFx0XHRcdHZpc2libGU6IGNvbXBpbGVCaW5kaW5nKG5vdChlcXVhbChhbm5vdGF0aW9uRXhwcmVzc2lvbihkYXRhRmllbGQuYW5ub3RhdGlvbnM/LlVJPy5IaWRkZW4pLCB0cnVlKSkpLFxuXHRcdFx0XHRlbmFibGVkOiBnZXRFbmFibGVkRm9yQW5ub3RhdGlvbkFjdGlvbihjb252ZXJ0ZXJDb250ZXh0LCBkYXRhRmllbGQuQWN0aW9uVGFyZ2V0KSxcblx0XHRcdFx0aXNOYXZpZ2FibGU6IHRydWVcblx0XHRcdH07XG5cdFx0fSk7XG5cblx0Ly8gVGhlbiB0aGUgZWRpdCBhY3Rpb24gaWYgaXQgZXhpc3RzXG5cdGlmICgob0RyYWZ0Um9vdD8uRWRpdEFjdGlvbiB8fCBvU3RpY2t5U2Vzc2lvblN1cHBvcnRlZD8uRWRpdEFjdGlvbikgJiYgYlVwZGF0ZUhpZGRlbiAhPT0gdHJ1ZSkge1xuXHRcdGNvbnN0IHVwZGF0ZUhpZGRlbiA9IChlbnRpdHlTZXQ/LmFubm90YXRpb25zLlVJPy5VcGRhdGVIaWRkZW4/LnZhbHVlT2YoKSAhPT0gdW5kZWZpbmVkXG5cdFx0XHQ/IGVudGl0eVNldD8uYW5ub3RhdGlvbnMuVUk/LlVwZGF0ZUhpZGRlblxuXHRcdFx0OiBlbnRpdHlUeXBlPy5hbm5vdGF0aW9ucy5VST8uVXBkYXRlSGlkZGVuKSBhcyBQcm9wZXJ0eUFubm90YXRpb25WYWx1ZTxib29sZWFuPjtcblx0XHRoZWFkZXJBY3Rpb25zLnB1c2goe1xuXHRcdFx0dHlwZTogQWN0aW9uVHlwZS5QcmltYXJ5LFxuXHRcdFx0a2V5OiBcIkVkaXRBY3Rpb25cIixcblx0XHRcdHZpc2libGU6IGNvbXBpbGVCaW5kaW5nKGdldEVkaXRCdXR0b25WaXNpYmlsaXR5KGNvbnZlcnRlckNvbnRleHQsIHVwZGF0ZUhpZGRlbikpLFxuXHRcdFx0ZW5hYmxlZDogZ2V0RWRpdEJ1dHRvbkVuYWJsZWQoY29udmVydGVyQ29udGV4dClcblx0XHR9KTtcblx0fVxuXHQvLyBUaGVuIHRoZSBkZWxldGUgYWN0aW9uIGlmIHdlJ3JlIG5vdCBzdGF0aWNhbGx5IG5vdCBkZWxldGFibGVcblx0aWYgKFxuXHRcdChiUGFyZW50RW50aXR5U2V0RGVsZXRhYmxlICYmIGJQYXJlbnRFbnRpdHlTZXREZWxldGFibGUgIT09IFwiZmFsc2VcIikgfHxcblx0XHQob0VudGl0eURlbGV0ZVJlc3RyaWN0aW9ucz8uRGVsZXRhYmxlPy52YWx1ZU9mKCkgIT09IGZhbHNlICYmIGJQYXJlbnRFbnRpdHlTZXREZWxldGFibGUgIT09IFwiZmFsc2VcIilcblx0KSB7XG5cdFx0Y29uc3QgZGVsZXRlSGlkZGVuID0gKGVudGl0eVNldD8uYW5ub3RhdGlvbnMuVUk/LkRlbGV0ZUhpZGRlbj8udmFsdWVPZigpICE9PSB1bmRlZmluZWRcblx0XHRcdD8gZW50aXR5U2V0Py5hbm5vdGF0aW9ucy5VST8uRGVsZXRlSGlkZGVuXG5cdFx0XHQ6IGVudGl0eVR5cGU/LmFubm90YXRpb25zLlVJPy5EZWxldGVIaWRkZW4pIGFzIFByb3BlcnR5QW5ub3RhdGlvblZhbHVlPGJvb2xlYW4+O1xuXHRcdGhlYWRlckFjdGlvbnMucHVzaCh7XG5cdFx0XHR0eXBlOiBBY3Rpb25UeXBlLlNlY29uZGFyeSxcblx0XHRcdGtleTogXCJEZWxldGVBY3Rpb25cIixcblx0XHRcdHZpc2libGU6IGNvbXBpbGVCaW5kaW5nKGdldERlbGV0ZUJ1dHRvblZpc2liaWxpdHkoY29udmVydGVyQ29udGV4dCwgZGVsZXRlSGlkZGVuKSksXG5cdFx0XHRlbmFibGVkOiBjb21waWxlQmluZGluZyhnZXREZWxldGVCdXR0b25FbmFibGVkKG9FbnRpdHlEZWxldGVSZXN0cmljdGlvbnM/LkRlbGV0YWJsZSwgaXNQYXJlbnREZWxldGFibGUpKSxcblx0XHRcdHBhcmVudEVudGl0eURlbGV0ZUVuYWJsZWQ6IGJQYXJlbnRFbnRpdHlTZXREZWxldGFibGVcblx0XHR9KTtcblx0fVxuXG5cdGlmIChvRHJhZnRSb290Py5FZGl0QWN0aW9uICYmIGJVcGRhdGVIaWRkZW4gIT09IHRydWUpIHtcblx0XHRoZWFkZXJBY3Rpb25zLnB1c2goeyB0eXBlOiBBY3Rpb25UeXBlLlN3aXRjaFRvQWN0aXZlT2JqZWN0LCBrZXk6IFwiU3dpdGNoVG9BY3RpdmVPYmplY3RcIiB9KTtcblx0XHRoZWFkZXJBY3Rpb25zLnB1c2goeyB0eXBlOiBBY3Rpb25UeXBlLlN3aXRjaFRvRHJhZnRPYmplY3QsIGtleTogXCJTd2l0Y2hUb0RyYWZ0T2JqZWN0XCIgfSk7XG5cdH1cblxuXHRjb25zdCBoZWFkZXJEYXRhRmllbGRGb3JJQk5BY3Rpb25zID0gZ2V0SWRlbnRpZmljYXRpb25EYXRhRmllbGRGb3JJQk5BY3Rpb25zKGNvbnZlcnRlckNvbnRleHQuZ2V0RW50aXR5VHlwZSgpLCBmYWxzZSk7XG5cblx0aGVhZGVyRGF0YUZpZWxkRm9ySUJOQWN0aW9uc1xuXHRcdC5maWx0ZXIoZGF0YUZpZWxkID0+IHtcblx0XHRcdHJldHVybiBJTVBPUlRBTlRfQ1JJVElDQUxJVElFUy5pbmRleE9mKGRhdGFGaWVsZD8uQ3JpdGljYWxpdHkgYXMgc3RyaW5nKSA9PT0gLTE7XG5cdFx0fSlcblx0XHQuZm9yRWFjaChkYXRhRmllbGQgPT4ge1xuXHRcdFx0Y29uc3Qgb05hdmlnYXRpb25QYXJhbXMgPSB7XG5cdFx0XHRcdHNlbWFudGljT2JqZWN0TWFwcGluZzogZGF0YUZpZWxkLk1hcHBpbmcgPyBnZXRTZW1hbnRpY09iamVjdE1hcHBpbmcoZGF0YUZpZWxkLk1hcHBpbmcpIDogW11cblx0XHRcdH07XG5cblx0XHRcdGlmIChkYXRhRmllbGQuUmVxdWlyZXNDb250ZXh0Py52YWx1ZU9mKCkgPT09IHRydWUpIHtcblx0XHRcdFx0dGhyb3cgbmV3IEVycm9yKFwiUmVxdWlyZXNDb250ZXh0IHByb3BlcnR5IHNob3VsZCBub3QgYmUgdHJ1ZSBmb3IgaGVhZGVyIElCTiBhY3Rpb24gOiBcIiArIGRhdGFGaWVsZC5MYWJlbCk7XG5cdFx0XHR9IGVsc2UgaWYgKGRhdGFGaWVsZC5JbmxpbmU/LnZhbHVlT2YoKSA9PT0gdHJ1ZSkge1xuXHRcdFx0XHR0aHJvdyBuZXcgRXJyb3IoXCJJbmxpbmUgcHJvcGVydHkgc2hvdWxkIG5vdCBiZSB0cnVlIGZvciBoZWFkZXIgSUJOIGFjdGlvbiA6IFwiICsgZGF0YUZpZWxkLkxhYmVsKTtcblx0XHRcdH1cblx0XHRcdGhlYWRlckFjdGlvbnMucHVzaCh7XG5cdFx0XHRcdHR5cGU6IEFjdGlvblR5cGUuRGF0YUZpZWxkRm9ySW50ZW50QmFzZWROYXZpZ2F0aW9uLFxuXHRcdFx0XHR0ZXh0OiBkYXRhRmllbGQuTGFiZWw/LnRvU3RyaW5nKCksXG5cdFx0XHRcdGFubm90YXRpb25QYXRoOiBjb252ZXJ0ZXJDb250ZXh0LmdldEVudGl0eVNldEJhc2VkQW5ub3RhdGlvblBhdGgoZGF0YUZpZWxkLmZ1bGx5UXVhbGlmaWVkTmFtZSksXG5cdFx0XHRcdGJ1dHRvblR5cGU6IEJ1dHRvblR5cGUuR2hvc3QsXG5cdFx0XHRcdHZpc2libGU6IGNvbXBpbGVCaW5kaW5nKG5vdChlcXVhbChhbm5vdGF0aW9uRXhwcmVzc2lvbihkYXRhRmllbGQuYW5ub3RhdGlvbnM/LlVJPy5IaWRkZW4/LnZhbHVlT2YoKSksIHRydWUpKSksXG5cdFx0XHRcdGVuYWJsZWQ6XG5cdFx0XHRcdFx0ZGF0YUZpZWxkLk5hdmlnYXRpb25BdmFpbGFibGUgIT09IHVuZGVmaW5lZFxuXHRcdFx0XHRcdFx0PyBjb21waWxlQmluZGluZyhlcXVhbChhbm5vdGF0aW9uRXhwcmVzc2lvbihkYXRhRmllbGQuTmF2aWdhdGlvbkF2YWlsYWJsZT8udmFsdWVPZigpKSwgdHJ1ZSkpXG5cdFx0XHRcdFx0XHQ6IHRydWUsXG5cdFx0XHRcdGtleTogS2V5SGVscGVyLmdlbmVyYXRlS2V5RnJvbURhdGFGaWVsZChkYXRhRmllbGQpLFxuXHRcdFx0XHRpc05hdmlnYWJsZTogdHJ1ZSxcblx0XHRcdFx0cHJlc3M6IGNvbXBpbGVCaW5kaW5nKFxuXHRcdFx0XHRcdGZuKFwiLl9pbnRlbnRCYXNlZE5hdmlnYXRpb24ubmF2aWdhdGVcIiwgW1xuXHRcdFx0XHRcdFx0YW5ub3RhdGlvbkV4cHJlc3Npb24oZGF0YUZpZWxkLlNlbWFudGljT2JqZWN0KSxcblx0XHRcdFx0XHRcdGFubm90YXRpb25FeHByZXNzaW9uKGRhdGFGaWVsZC5BY3Rpb24pLFxuXHRcdFx0XHRcdFx0b05hdmlnYXRpb25QYXJhbXNcblx0XHRcdFx0XHRdKVxuXHRcdFx0XHQpLFxuXHRcdFx0XHRjdXN0b21EYXRhOiBjb21waWxlQmluZGluZyh7XG5cdFx0XHRcdFx0c2VtYW50aWNPYmplY3Q6IGFubm90YXRpb25FeHByZXNzaW9uKGRhdGFGaWVsZC5TZW1hbnRpY09iamVjdCksXG5cdFx0XHRcdFx0YWN0aW9uOiBhbm5vdGF0aW9uRXhwcmVzc2lvbihkYXRhRmllbGQuQWN0aW9uKVxuXHRcdFx0XHR9KVxuXHRcdFx0fSBhcyBBbm5vdGF0aW9uQWN0aW9uKTtcblx0XHR9KTtcblx0Ly8gRmluYWxseSB0aGUgbm9uIGNyaXRpY2FsIERhdGFGaWVsZEZvckFjdGlvbnNcblx0aGVhZGVyRGF0YUZpZWxkRm9yQWN0aW9uc1xuXHRcdC5maWx0ZXIoZGF0YUZpZWxkID0+IHtcblx0XHRcdHJldHVybiBJTVBPUlRBTlRfQ1JJVElDQUxJVElFUy5pbmRleE9mKGRhdGFGaWVsZD8uQ3JpdGljYWxpdHkgYXMgc3RyaW5nKSA9PT0gLTE7XG5cdFx0fSlcblx0XHQuZm9yRWFjaChkYXRhRmllbGQgPT4ge1xuXHRcdFx0aGVhZGVyQWN0aW9ucy5wdXNoKHtcblx0XHRcdFx0dHlwZTogQWN0aW9uVHlwZS5EYXRhRmllbGRGb3JBY3Rpb24sXG5cdFx0XHRcdGFubm90YXRpb25QYXRoOiBjb252ZXJ0ZXJDb250ZXh0LmdldEVudGl0eVNldEJhc2VkQW5ub3RhdGlvblBhdGgoZGF0YUZpZWxkLmZ1bGx5UXVhbGlmaWVkTmFtZSksXG5cdFx0XHRcdGtleTogS2V5SGVscGVyLmdlbmVyYXRlS2V5RnJvbURhdGFGaWVsZChkYXRhRmllbGQpLFxuXHRcdFx0XHR2aXNpYmxlOiBjb21waWxlQmluZGluZyhub3QoZXF1YWwoYW5ub3RhdGlvbkV4cHJlc3Npb24oZGF0YUZpZWxkLmFubm90YXRpb25zPy5VST8uSGlkZGVuKSwgdHJ1ZSkpKSxcblx0XHRcdFx0ZW5hYmxlZDogZ2V0RW5hYmxlZEZvckFubm90YXRpb25BY3Rpb24oY29udmVydGVyQ29udGV4dCwgZGF0YUZpZWxkLkFjdGlvblRhcmdldCksXG5cdFx0XHRcdGlzTmF2aWdhYmxlOiB0cnVlXG5cdFx0XHR9IGFzIEFubm90YXRpb25BY3Rpb24pO1xuXHRcdH0pO1xuXG5cdHJldHVybiBoZWFkZXJBY3Rpb25zO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0SGlkZGVuSGVhZGVyQWN0aW9ucyhjb252ZXJ0ZXJDb250ZXh0OiBDb252ZXJ0ZXJDb250ZXh0KTogQmFzZUFjdGlvbltdIHtcblx0Y29uc3QgZW50aXR5VHlwZSA9IGNvbnZlcnRlckNvbnRleHQuZ2V0RW50aXR5VHlwZSgpO1xuXHRjb25zdCBoaWRkZW5BY3Rpb25zID0gKGVudGl0eVR5cGUuYW5ub3RhdGlvbnM/LlVJPy5JZGVudGlmaWNhdGlvbj8uZmlsdGVyKGlkZW50aWZpY2F0aW9uRGF0YUZpZWxkID0+IHtcblx0XHRyZXR1cm4gaWRlbnRpZmljYXRpb25EYXRhRmllbGQ/LmFubm90YXRpb25zPy5VST8uSGlkZGVuPy52YWx1ZU9mKCkgPT09IHRydWU7XG5cdH0pIHx8IFtdKSBhcyBEYXRhRmllbGRGb3JBY3Rpb25UeXBlc1tdO1xuXHRyZXR1cm4gaGlkZGVuQWN0aW9ucy5tYXAoZGF0YUZpZWxkID0+IHtcblx0XHRyZXR1cm4ge1xuXHRcdFx0dHlwZTogQWN0aW9uVHlwZS5EZWZhdWx0LFxuXHRcdFx0a2V5OiBLZXlIZWxwZXIuZ2VuZXJhdGVLZXlGcm9tRGF0YUZpZWxkKGRhdGFGaWVsZClcblx0XHR9O1xuXHR9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldEZvb3RlckRlZmF1bHRBY3Rpb25zKHZpZXdMZXZlbDogbnVtYmVyLCBjb252ZXJ0ZXJDb250ZXh0OiBDb252ZXJ0ZXJDb250ZXh0KTogQmFzZUFjdGlvbltdIHtcblx0Y29uc3QgZW50aXR5U2V0ID0gY29udmVydGVyQ29udGV4dC5nZXRFbnRpdHlTZXQoKTtcblx0Y29uc3QgZW50aXR5VHlwZSA9IGNvbnZlcnRlckNvbnRleHQuZ2V0RW50aXR5VHlwZSgpO1xuXHRjb25zdCBvU3RpY2t5U2Vzc2lvblN1cHBvcnRlZCA9IGVudGl0eVNldCAmJiBlbnRpdHlTZXQuYW5ub3RhdGlvbnM/LlNlc3Npb24/LlN0aWNreVNlc3Npb25TdXBwb3J0ZWQsIC8vZm9yIHN0aWNreSBhcHBcblx0XHRzRW50aXR5U2V0RHJhZnRSb290ID1cblx0XHRcdGVudGl0eVNldCAmJiAoZW50aXR5U2V0LmFubm90YXRpb25zLkNvbW1vbj8uRHJhZnRSb290Py50ZXJtIHx8IGVudGl0eVNldC5hbm5vdGF0aW9ucz8uU2Vzc2lvbj8uU3RpY2t5U2Vzc2lvblN1cHBvcnRlZD8udGVybSksXG5cdFx0YkNvbmRpdGlvblNhdmUgPVxuXHRcdFx0c0VudGl0eVNldERyYWZ0Um9vdCA9PT0gXCJjb20uc2FwLnZvY2FidWxhcmllcy5Db21tb24udjEuRHJhZnRSb290XCIgfHxcblx0XHRcdChvU3RpY2t5U2Vzc2lvblN1cHBvcnRlZCAmJiBvU3RpY2t5U2Vzc2lvblN1cHBvcnRlZD8uU2F2ZUFjdGlvbiksXG5cdFx0YkNvbmRpdGlvbkFwcGx5ID0gdmlld0xldmVsID4gMSxcblx0XHRiQ29uZGl0aW9uQ2FuY2VsID1cblx0XHRcdHNFbnRpdHlTZXREcmFmdFJvb3QgPT09IFwiY29tLnNhcC52b2NhYnVsYXJpZXMuQ29tbW9uLnYxLkRyYWZ0Um9vdFwiIHx8XG5cdFx0XHQob1N0aWNreVNlc3Npb25TdXBwb3J0ZWQgJiYgb1N0aWNreVNlc3Npb25TdXBwb3J0ZWQ/LkRpc2NhcmRBY3Rpb24pO1xuXG5cdC8vIFJldHJpZXZlIGFsbCBkZXRlcm1pbmluZyBhY3Rpb25zXG5cdGNvbnN0IGZvb3RlckRhdGFGaWVsZEZvckFjdGlvbnMgPSBnZXRJZGVudGlmaWNhdGlvbkRhdGFGaWVsZEZvckFjdGlvbnMoY29udmVydGVyQ29udGV4dC5nZXRFbnRpdHlUeXBlKCksIHRydWUpO1xuXG5cdC8vIEZpcnN0IGFkZCB0aGUgXCJDcml0aWNhbFwiIERhdGFGaWVsZEZvckFjdGlvbnNcblx0Y29uc3QgZm9vdGVyQWN0aW9uczogQmFzZUFjdGlvbltdID0gZm9vdGVyRGF0YUZpZWxkRm9yQWN0aW9uc1xuXHRcdC5maWx0ZXIoZGF0YUZpZWxkID0+IHtcblx0XHRcdHJldHVybiBJTVBPUlRBTlRfQ1JJVElDQUxJVElFUy5pbmRleE9mKGRhdGFGaWVsZD8uQ3JpdGljYWxpdHkgYXMgc3RyaW5nKSA+IC0xO1xuXHRcdH0pXG5cdFx0Lm1hcChkYXRhRmllbGQgPT4ge1xuXHRcdFx0cmV0dXJuIHtcblx0XHRcdFx0dHlwZTogQWN0aW9uVHlwZS5EYXRhRmllbGRGb3JBY3Rpb24sXG5cdFx0XHRcdGFubm90YXRpb25QYXRoOiBjb252ZXJ0ZXJDb250ZXh0LmdldEVudGl0eVNldEJhc2VkQW5ub3RhdGlvblBhdGgoZGF0YUZpZWxkLmZ1bGx5UXVhbGlmaWVkTmFtZSksXG5cdFx0XHRcdGtleTogS2V5SGVscGVyLmdlbmVyYXRlS2V5RnJvbURhdGFGaWVsZChkYXRhRmllbGQpLFxuXHRcdFx0XHR2aXNpYmxlOiBjb21waWxlQmluZGluZyhub3QoZXF1YWwoYW5ub3RhdGlvbkV4cHJlc3Npb24oZGF0YUZpZWxkLmFubm90YXRpb25zPy5VST8uSGlkZGVuKSwgdHJ1ZSkpKSxcblx0XHRcdFx0ZW5hYmxlZDogZ2V0RW5hYmxlZEZvckFubm90YXRpb25BY3Rpb24oY29udmVydGVyQ29udGV4dCwgZGF0YUZpZWxkLkFjdGlvblRhcmdldCksXG5cdFx0XHRcdGlzTmF2aWdhYmxlOiB0cnVlXG5cdFx0XHR9O1xuXHRcdH0pO1xuXG5cdC8vIFRoZW4gdGhlIHNhdmUgYWN0aW9uIGlmIGl0IGV4aXN0c1xuXHRpZiAoZW50aXR5U2V0Py5lbnRpdHlUeXBlTmFtZSA9PT0gZW50aXR5VHlwZT8uZnVsbHlRdWFsaWZpZWROYW1lICYmIGJDb25kaXRpb25TYXZlKSB7XG5cdFx0Zm9vdGVyQWN0aW9ucy5wdXNoKHsgdHlwZTogQWN0aW9uVHlwZS5QcmltYXJ5LCBrZXk6IFwiU2F2ZUFjdGlvblwiIH0pO1xuXHR9XG5cblx0Ly8gVGhlbiB0aGUgYXBwbHkgYWN0aW9uIGlmIGl0IGV4aXN0c1xuXHRpZiAoYkNvbmRpdGlvbkFwcGx5KSB7XG5cdFx0Zm9vdGVyQWN0aW9ucy5wdXNoKHsgdHlwZTogQWN0aW9uVHlwZS5EZWZhdWx0QXBwbHksIGtleTogXCJBcHBseUFjdGlvblwiIH0pO1xuXHR9XG5cblx0Ly8gVGhlbiB0aGUgbm9uIGNyaXRpY2FsIERhdGFGaWVsZEZvckFjdGlvbnNcblx0Zm9vdGVyRGF0YUZpZWxkRm9yQWN0aW9uc1xuXHRcdC5maWx0ZXIoZGF0YUZpZWxkID0+IHtcblx0XHRcdHJldHVybiBJTVBPUlRBTlRfQ1JJVElDQUxJVElFUy5pbmRleE9mKGRhdGFGaWVsZD8uQ3JpdGljYWxpdHkgYXMgc3RyaW5nKSA9PT0gLTE7XG5cdFx0fSlcblx0XHQuZm9yRWFjaChkYXRhRmllbGQgPT4ge1xuXHRcdFx0Zm9vdGVyQWN0aW9ucy5wdXNoKHtcblx0XHRcdFx0dHlwZTogQWN0aW9uVHlwZS5EYXRhRmllbGRGb3JBY3Rpb24sXG5cdFx0XHRcdGFubm90YXRpb25QYXRoOiBjb252ZXJ0ZXJDb250ZXh0LmdldEVudGl0eVNldEJhc2VkQW5ub3RhdGlvblBhdGgoZGF0YUZpZWxkLmZ1bGx5UXVhbGlmaWVkTmFtZSksXG5cdFx0XHRcdGtleTogS2V5SGVscGVyLmdlbmVyYXRlS2V5RnJvbURhdGFGaWVsZChkYXRhRmllbGQpLFxuXHRcdFx0XHR2aXNpYmxlOiBjb21waWxlQmluZGluZyhub3QoZXF1YWwoYW5ub3RhdGlvbkV4cHJlc3Npb24oZGF0YUZpZWxkLmFubm90YXRpb25zPy5VST8uSGlkZGVuKSwgdHJ1ZSkpKSxcblx0XHRcdFx0ZW5hYmxlZDogZ2V0RW5hYmxlZEZvckFubm90YXRpb25BY3Rpb24oY29udmVydGVyQ29udGV4dCwgZGF0YUZpZWxkLkFjdGlvblRhcmdldCksXG5cdFx0XHRcdGlzTmF2aWdhYmxlOiB0cnVlXG5cdFx0XHR9IGFzIEFubm90YXRpb25BY3Rpb24pO1xuXHRcdH0pO1xuXG5cdC8vIFRoZW4gdGhlIGNhbmNlbCBhY3Rpb24gaWYgaXQgZXhpc3RzXG5cdGlmIChiQ29uZGl0aW9uQ2FuY2VsKSB7XG5cdFx0Zm9vdGVyQWN0aW9ucy5wdXNoKHtcblx0XHRcdHR5cGU6IEFjdGlvblR5cGUuU2Vjb25kYXJ5LFxuXHRcdFx0a2V5OiBcIkNhbmNlbEFjdGlvblwiLFxuXHRcdFx0cG9zaXRpb246IHsgcGxhY2VtZW50OiBQbGFjZW1lbnQuRW5kIH1cblx0XHR9KTtcblx0fVxuXHRyZXR1cm4gZm9vdGVyQWN0aW9ucztcbn1cbiJdfQ==
448
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIkhlYWRlckFuZEZvb3RlckFjdGlvbi50cyJdLCJuYW1lcyI6WyJnZXRJZGVudGlmaWNhdGlvbkRhdGFGaWVsZEZvckFjdGlvbnMiLCJlbnRpdHlUeXBlIiwiYkRldGVybWluaW5nIiwiYW5ub3RhdGlvbnMiLCJVSSIsIklkZW50aWZpY2F0aW9uIiwiZmlsdGVyIiwiaWRlbnRpZmljYXRpb25EYXRhRmllbGQiLCJIaWRkZW4iLCJ2YWx1ZU9mIiwiJFR5cGUiLCJEZXRlcm1pbmluZyIsIkFjdGlvblRhcmdldCIsImlzQm91bmQiLCJDb3JlIiwiT3BlcmF0aW9uQXZhaWxhYmxlIiwiZ2V0SWRlbnRpZmljYXRpb25EYXRhRmllbGRGb3JJQk5BY3Rpb25zIiwiSU1QT1JUQU5UX0NSSVRJQ0FMSVRJRVMiLCJnZXREZWxldGVCdXR0b25WaXNpYmlsaXR5IiwiY29udmVydGVyQ29udGV4dCIsImRlbGV0ZUhpZGRlbiIsImRhdGFNb2RlbE9iamVjdFBhdGgiLCJnZXREYXRhTW9kZWxPYmplY3RQYXRoIiwidmlzaXRlZE5hdmlnYXRpb25QYXRocyIsIm5hdmlnYXRpb25Qcm9wZXJ0aWVzIiwibWFwIiwibmF2UHJvcCIsIm5hbWUiLCJkZWxldGVIaWRkZW5FeHByZXNzaW9uIiwiYW5ub3RhdGlvbkV4cHJlc3Npb24iLCJ1bmRlZmluZWQiLCJwYXRoIiwic2luZ2xldG9uUGF0aFZpc2l0b3IiLCJnZXRDb252ZXJ0ZWRUeXBlcyIsIm1hbmlmZXN0V3JhcHBlciIsImdldE1hbmlmZXN0V3JhcHBlciIsInZpZXdMZXZlbCIsImdldFZpZXdMZXZlbCIsImVkaXRhYmxlRXhwcmVzc2lvbiIsIklzRWRpdGFibGUiLCJub3QiLCJpZkVsc2UiLCJhbmQiLCJlcXVhbCIsImdldERlbGV0ZUJ1dHRvbkVuYWJsZWQiLCJpc0RlbGV0YWJsZSIsImlzUGFyZW50RGVsZXRhYmxlIiwiY29uc3RhbnQiLCJnZXRFZGl0QnV0dG9uVmlzaWJpbGl0eSIsInVwZGF0ZUhpZGRlbiIsImVudGl0eVNldCIsImdldEVudGl0eVNldCIsImJJc0RyYWZ0Um9vdCIsIkNvbW1vbiIsIkRyYWZ0Um9vdCIsInVwZGF0ZUhpZGRlbkV4cHJlc3Npb24iLCJub3RFZGl0YWJsZUV4cHJlc3Npb24iLCJyZXN1bHRhbnRFeHByZXNzaW9uIiwiRHJhZnQiLCJIYXNOb0RyYWZ0Rm9yQ3VycmVudFVzZXIiLCJnZXRFZGl0QnV0dG9uRW5hYmxlZCIsImlzRHJhZnRSb290IiwiaXNTdGlja3kiLCJTZXNzaW9uIiwiU3RpY2t5U2Vzc2lvblN1cHBvcnRlZCIsImVkaXRBY3Rpb25OYW1lIiwiRWRpdEFjdGlvbiIsImVkaXRBY3Rpb25Bbm5vdGF0aW9uUGF0aCIsImdldEFic29sdXRlQW5ub3RhdGlvblBhdGgiLCJlZGl0QWN0aW9ucyIsImdldEVudGl0eVR5cGVBbm5vdGF0aW9uIiwiYW5ub3RhdGlvbiIsImFjdGlvbnMiLCJsZW5ndGgiLCJlZGl0QWN0aW9uIiwiZ2V0RW5hYmxlZEZvckFubm90YXRpb25BY3Rpb24iLCJnZXRIZWFkZXJEZWZhdWx0QWN0aW9ucyIsImdldEVudGl0eVR5cGUiLCJvU3RpY2t5U2Vzc2lvblN1cHBvcnRlZCIsIm9EcmFmdFJvb3QiLCJvRW50aXR5RGVsZXRlUmVzdHJpY3Rpb25zIiwiQ2FwYWJpbGl0aWVzIiwiRGVsZXRlUmVzdHJpY3Rpb25zIiwiYlVwZGF0ZUhpZGRlbiIsIlVwZGF0ZUhpZGRlbiIsImlzUGF0aERlbGV0YWJsZSIsInBhdGhWaXNpdG9yIiwibmF2aWdhdGlvblBhdGhzIiwiYlBhcmVudEVudGl0eVNldERlbGV0YWJsZSIsImNvbXBpbGVCaW5kaW5nIiwiaGVhZGVyRGF0YUZpZWxkRm9yQWN0aW9ucyIsImhlYWRlckFjdGlvbnMiLCJkYXRhRmllbGQiLCJpbmRleE9mIiwiQ3JpdGljYWxpdHkiLCJ0eXBlIiwiQWN0aW9uVHlwZSIsIkRhdGFGaWVsZEZvckFjdGlvbiIsImFubm90YXRpb25QYXRoIiwiZ2V0RW50aXR5U2V0QmFzZWRBbm5vdGF0aW9uUGF0aCIsImZ1bGx5UXVhbGlmaWVkTmFtZSIsImtleSIsIktleUhlbHBlciIsImdlbmVyYXRlS2V5RnJvbURhdGFGaWVsZCIsInZpc2libGUiLCJlbmFibGVkIiwiaXNOYXZpZ2FibGUiLCJwdXNoIiwiUHJpbWFyeSIsIkRlbGV0YWJsZSIsIkRlbGV0ZUhpZGRlbiIsIlNlY29uZGFyeSIsInBhcmVudEVudGl0eURlbGV0ZUVuYWJsZWQiLCJTd2l0Y2hUb0FjdGl2ZU9iamVjdCIsIlN3aXRjaFRvRHJhZnRPYmplY3QiLCJoZWFkZXJEYXRhRmllbGRGb3JJQk5BY3Rpb25zIiwiZm9yRWFjaCIsIm9OYXZpZ2F0aW9uUGFyYW1zIiwic2VtYW50aWNPYmplY3RNYXBwaW5nIiwiTWFwcGluZyIsImdldFNlbWFudGljT2JqZWN0TWFwcGluZyIsIlJlcXVpcmVzQ29udGV4dCIsIkVycm9yIiwiTGFiZWwiLCJJbmxpbmUiLCJEYXRhRmllbGRGb3JJbnRlbnRCYXNlZE5hdmlnYXRpb24iLCJ0ZXh0IiwidG9TdHJpbmciLCJidXR0b25UeXBlIiwiQnV0dG9uVHlwZSIsIkdob3N0IiwiTmF2aWdhdGlvbkF2YWlsYWJsZSIsInByZXNzIiwiZm4iLCJTZW1hbnRpY09iamVjdCIsIkFjdGlvbiIsImN1c3RvbURhdGEiLCJzZW1hbnRpY09iamVjdCIsImFjdGlvbiIsImdldEhpZGRlbkhlYWRlckFjdGlvbnMiLCJoaWRkZW5BY3Rpb25zIiwiRGVmYXVsdCIsImdldEZvb3RlckRlZmF1bHRBY3Rpb25zIiwic0VudGl0eVNldERyYWZ0Um9vdCIsInRlcm0iLCJiQ29uZGl0aW9uU2F2ZSIsIlNhdmVBY3Rpb24iLCJiQ29uZGl0aW9uQXBwbHkiLCJiQ29uZGl0aW9uQ2FuY2VsIiwiRGlzY2FyZEFjdGlvbiIsImZvb3RlckRhdGFGaWVsZEZvckFjdGlvbnMiLCJmb290ZXJBY3Rpb25zIiwiZW50aXR5VHlwZU5hbWUiLCJEZWZhdWx0QXBwbHkiLCJwb3NpdGlvbiIsInBsYWNlbWVudCIsIlBsYWNlbWVudCIsIkVuZCJdLCJtYXBwaW5ncyI6IjtBQUFBO0FBQ0E7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UUFBQUEsUUFBUSxFQUFFO0FBQUVDLFVBQUFBLFNBQVMsRUFBRUMsU0FBUyxDQUFDQztBQUF2QjtBQUhRLE9BQW5CO0FBS0E7O0FBQ0QsV0FBT04sYUFBUDtBQUNBIiwic291cmNlUm9vdCI6Ii4iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBY3Rpb25UeXBlIH0gZnJvbSBcIi4uL01hbmlmZXN0U2V0dGluZ3NcIjtcbmltcG9ydCB7IEVudGl0eVR5cGUgfSBmcm9tIFwiQHNhcC11eC9hbm5vdGF0aW9uLWNvbnZlcnRlclwiO1xuaW1wb3J0IHtcblx0QW5ub3RhdGlvbkFjdGlvbixcblx0QmFzZUFjdGlvbixcblx0QnV0dG9uVHlwZSxcblx0Z2V0RW5hYmxlZEZvckFubm90YXRpb25BY3Rpb24sXG5cdGdldFNlbWFudGljT2JqZWN0TWFwcGluZ1xufSBmcm9tIFwic2FwL2ZlL2NvcmUvY29udmVydGVycy9jb250cm9scy9Db21tb24vQWN0aW9uXCI7XG5pbXBvcnQgeyBEYXRhRmllbGRGb3JBY3Rpb25UeXBlcywgRGF0YUZpZWxkRm9ySW50ZW50QmFzZWROYXZpZ2F0aW9uVHlwZXMsIFByb3BlcnR5QW5ub3RhdGlvblZhbHVlIH0gZnJvbSBcIkBzYXAtdXgvdm9jYWJ1bGFyaWVzLXR5cGVzXCI7XG5pbXBvcnQgeyBQbGFjZW1lbnQgfSBmcm9tIFwic2FwL2ZlL2NvcmUvY29udmVydGVycy9oZWxwZXJzL0NvbmZpZ3VyYWJsZU9iamVjdFwiO1xuaW1wb3J0IHtcblx0YW5ub3RhdGlvbkV4cHJlc3Npb24sXG5cdGNvbXBpbGVCaW5kaW5nLFxuXHRub3QsXG5cdGVxdWFsLFxuXHRmbixcblx0RXhwcmVzc2lvbixcblx0YW5kLFxuXHRpZkVsc2UsXG5cdEJpbmRpbmdFeHByZXNzaW9uLFxuXHRjb25zdGFudFxufSBmcm9tIFwic2FwL2ZlL2NvcmUvaGVscGVycy9CaW5kaW5nRXhwcmVzc2lvblwiO1xuaW1wb3J0IHsgS2V5SGVscGVyIH0gZnJvbSBcInNhcC9mZS9jb3JlL2NvbnZlcnRlcnMvaGVscGVycy9LZXlcIjtcbmltcG9ydCB7IGlzUGF0aERlbGV0YWJsZSB9IGZyb20gXCJzYXAvZmUvY29yZS90ZW1wbGF0aW5nL0RhdGFNb2RlbFBhdGhIZWxwZXJcIjtcbmltcG9ydCBDb252ZXJ0ZXJDb250ZXh0IGZyb20gXCIuLi9Db252ZXJ0ZXJDb250ZXh0XCI7XG5pbXBvcnQgeyBEcmFmdCwgc2luZ2xldG9uUGF0aFZpc2l0b3IsIFVJIH0gZnJvbSBcIi4uL2hlbHBlcnMvQmluZGluZ0hlbHBlclwiO1xuXG4vKipcbiAqIFJldHJpZXZlcyBhbGwgdGhlIGRhdGEgZmllbGQgZm9yIGFjdGlvbnMgZm9yIHRoZSBpZGVudGlmaWNhdGlvbiBhbm5vdGF0aW9uXG4gKiBUaGV5IG11c3QgYmVcbiAqIC0gTm90IHN0YXRpY2FsbHkgaGlkZGVuXG4gKiAtIEVpdGhlciBsaW5rZWQgdG8gYW4gVW5ib3VuZCBhY3Rpb24gb3IgdG8gYW4gYWN0aW9uIHdoaWNoIGhhcyBhbiBPcGVyYXRpb25BdmFpbGFibGUgdGhhdCBpcyBub3Qgc2V0IHRvIGZhbHNlIHN0YXRpY2FsbHkuXG4gKlxuICogQHBhcmFtIHtFbnRpdHlUeXBlfSBlbnRpdHlUeXBlIFRoZSBjdXJyZW50IGVudGl0eSB0eXBlXG4gKiBAcGFyYW0ge2Jvb2xlYW59IGJEZXRlcm1pbmluZyBUaGUgZmxhZyB3aGljaCBkZW5vdGVzIHdoZXRoZXIgb3Igbm90IHRoZSBhY3Rpb24gaXMgYSBkZXRlcm1pbmluZyBhY3Rpb25cbiAqIEByZXR1cm5zIHtEYXRhRmllbGRGb3JBY3Rpb25UeXBlc1tdfSBBbiBhcnJheSBvZiBEYXRhRmllbGQgZm9yIGFjdGlvbiByZXNwZWN0aW5nIHRoZSBpbnB1dCBwYXJhbWV0ZXIgJ2JEZXRlcm1pbmluZydcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldElkZW50aWZpY2F0aW9uRGF0YUZpZWxkRm9yQWN0aW9ucyhlbnRpdHlUeXBlOiBFbnRpdHlUeXBlLCBiRGV0ZXJtaW5pbmc6IGJvb2xlYW4pOiBEYXRhRmllbGRGb3JBY3Rpb25UeXBlc1tdIHtcblx0cmV0dXJuIChlbnRpdHlUeXBlLmFubm90YXRpb25zPy5VST8uSWRlbnRpZmljYXRpb24/LmZpbHRlcihpZGVudGlmaWNhdGlvbkRhdGFGaWVsZCA9PiB7XG5cdFx0aWYgKGlkZW50aWZpY2F0aW9uRGF0YUZpZWxkPy5hbm5vdGF0aW9ucz8uVUk/LkhpZGRlbj8udmFsdWVPZigpICE9PSB0cnVlKSB7XG5cdFx0XHRpZiAoXG5cdFx0XHRcdGlkZW50aWZpY2F0aW9uRGF0YUZpZWxkPy4kVHlwZSA9PT0gXCJjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5EYXRhRmllbGRGb3JBY3Rpb25cIiAmJlxuXHRcdFx0XHQhIWlkZW50aWZpY2F0aW9uRGF0YUZpZWxkLkRldGVybWluaW5nID09PSBiRGV0ZXJtaW5pbmcgJiZcblx0XHRcdFx0KCFpZGVudGlmaWNhdGlvbkRhdGFGaWVsZD8uQWN0aW9uVGFyZ2V0Py5pc0JvdW5kIHx8XG5cdFx0XHRcdFx0aWRlbnRpZmljYXRpb25EYXRhRmllbGQ/LkFjdGlvblRhcmdldD8uYW5ub3RhdGlvbnM/LkNvcmU/Lk9wZXJhdGlvbkF2YWlsYWJsZT8udmFsdWVPZigpICE9PSBmYWxzZSlcblx0XHRcdCkge1xuXHRcdFx0XHRyZXR1cm4gdHJ1ZTtcblx0XHRcdH1cblx0XHR9XG5cdFx0cmV0dXJuIGZhbHNlO1xuXHR9KSB8fCBbXSkgYXMgRGF0YUZpZWxkRm9yQWN0aW9uVHlwZXNbXTtcbn1cblxuLyoqXG4gKiBSZXRyaWV2ZSBhbGwgdGhlIElCTiBhY3Rpb25zIGZvciB0aGUgaWRlbnRpZmljYXRpb24gYW5ub3RhdGlvbi5cbiAqIFRoZXkgbXVzdCBiZVxuICogLSBOb3Qgc3RhdGljYWxseSBoaWRkZW4uXG4gKlxuICogQHBhcmFtIHtFbnRpdHlUeXBlfSBlbnRpdHlUeXBlIFRoZSBjdXJyZW50IGVudGl0eXR5cGVcbiAqIEBwYXJhbSB7Ym9vbGVhbn0gYkRldGVybWluaW5nIFdoZXRoZXIgb3Igbm90IHRoZSBhY3Rpb24gc2hvdWxkIGJlIGRldGVybWluaW5nXG4gKiBAcmV0dXJucyB7RGF0YUZpZWxkRm9ySW50ZW50QmFzZWROYXZpZ2F0aW9uVHlwZXNbXX0gQW4gYXJyYXkgb2YgZGF0YWZpZWxkIGZvciBhY3Rpb24gcmVzcGVjdGluZyB0aGUgYkRldGVybWluaW5nIHByb3BlcnR5LlxuICovXG5mdW5jdGlvbiBnZXRJZGVudGlmaWNhdGlvbkRhdGFGaWVsZEZvcklCTkFjdGlvbnMoZW50aXR5VHlwZTogRW50aXR5VHlwZSwgYkRldGVybWluaW5nOiBib29sZWFuKTogRGF0YUZpZWxkRm9ySW50ZW50QmFzZWROYXZpZ2F0aW9uVHlwZXNbXSB7XG5cdHJldHVybiAoZW50aXR5VHlwZS5hbm5vdGF0aW9ucz8uVUk/LklkZW50aWZpY2F0aW9uPy5maWx0ZXIoaWRlbnRpZmljYXRpb25EYXRhRmllbGQgPT4ge1xuXHRcdGlmIChpZGVudGlmaWNhdGlvbkRhdGFGaWVsZD8uYW5ub3RhdGlvbnM/LlVJPy5IaWRkZW4/LnZhbHVlT2YoKSAhPT0gdHJ1ZSkge1xuXHRcdFx0aWYgKFxuXHRcdFx0XHRpZGVudGlmaWNhdGlvbkRhdGFGaWVsZD8uJFR5cGUgPT09IFwiY29tLnNhcC52b2NhYnVsYXJpZXMuVUkudjEuRGF0YUZpZWxkRm9ySW50ZW50QmFzZWROYXZpZ2F0aW9uXCIgJiZcblx0XHRcdFx0ISFpZGVudGlmaWNhdGlvbkRhdGFGaWVsZC5EZXRlcm1pbmluZyA9PT0gYkRldGVybWluaW5nXG5cdFx0XHQpIHtcblx0XHRcdFx0cmV0dXJuIHRydWU7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0cmV0dXJuIGZhbHNlO1xuXHR9KSB8fCBbXSkgYXMgRGF0YUZpZWxkRm9ySW50ZW50QmFzZWROYXZpZ2F0aW9uVHlwZXNbXTtcbn1cblxuY29uc3QgSU1QT1JUQU5UX0NSSVRJQ0FMSVRJRVMgPSBbXG5cdFwiVUkuQ3JpdGljYWxpdHlUeXBlL1ZlcnlQb3NpdGl2ZVwiLFxuXHRcIlVJLkNyaXRpY2FsaXR5VHlwZS9Qb3NpdGl2ZVwiLFxuXHRcIlVJLkNyaXRpY2FsaXR5VHlwZS9OZWdhdGl2ZVwiLFxuXHRcIlVJLkNyaXRpY2FsaXR5VHlwZS9WZXJ5TmVnYXRpdmVcIlxuXTtcblxuLyoqXG4gKiBNZXRob2QgdG8gZGV0ZXJtaW5lIHRoZSAndmlzaWJsZScgcHJvcGVydHkgYmluZGluZyBmb3IgdGhlIERlbGV0ZSBidXR0b24gb24gYW4gb2JqZWN0IHBhZ2UuXG4gKlxuICogQHBhcmFtIHtDb252ZXJ0ZXJDb250ZXh0fSBjb252ZXJ0ZXJDb250ZXh0IEluc3RhbmNlIG9mIHRoZSBjb252ZXJ0ZXIgY29udGV4dC5cbiAqIEBwYXJhbSB7UHJvcGVydHlBbm5vdGF0aW9uVmFsdWU8Ym9vbGVhbj4gfCB1bmRlZmluZWR9IGRlbGV0ZUhpZGRlbiBUaGUgdmFsdWUgb2YgdGhlIFVJLkRlbGV0ZUhpZGRlbiBhbm5vdGF0aW9uIG9uIHRoZSBlbnRpdHkgc2V0IC8gdHlwZS5cbiAqIEByZXR1cm5zIHtFeHByZXNzaW9uPGJvb2xlYW4+fSBUaGUgYmluZGluZyBleHByZXNzaW9uIGZvciB0aGUgJ3Zpc2libGUnIHByb3BlcnR5IG9mIHRoZSBEZWxldGUgYnV0dG9uLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0RGVsZXRlQnV0dG9uVmlzaWJpbGl0eShcblx0Y29udmVydGVyQ29udGV4dDogQ29udmVydGVyQ29udGV4dCxcblx0ZGVsZXRlSGlkZGVuOiBQcm9wZXJ0eUFubm90YXRpb25WYWx1ZTxib29sZWFuPiB8IHVuZGVmaW5lZFxuKTogRXhwcmVzc2lvbjxib29sZWFuPiB7XG5cdGNvbnN0IGRhdGFNb2RlbE9iamVjdFBhdGggPSBjb252ZXJ0ZXJDb250ZXh0LmdldERhdGFNb2RlbE9iamVjdFBhdGgoKSxcblx0XHR2aXNpdGVkTmF2aWdhdGlvblBhdGhzID0gZGF0YU1vZGVsT2JqZWN0UGF0aC5uYXZpZ2F0aW9uUHJvcGVydGllcy5tYXAobmF2UHJvcCA9PiBuYXZQcm9wLm5hbWUpLFxuXHRcdC8vIFNldCBhYnNvbHV0ZSBiaW5kaW5nIHBhdGggZm9yIFNpbmdsZXRvbiByZWZlcmVuY2VzLCBvdGhlcndpc2UgdGhlIGNvbmZpZ3VyZWQgYW5ub3RhdGlvbiBwYXRoIGl0c2VsZi5cblx0XHQvLyBGb3IgZS5nLiAvY29tLnNhcC5uYW1lc3BhY2UuRW50aXR5Q29udGFpbmVyL1NpbmdsZXRvbi9Qcm9wZXJ0eSB0byAvU2luZ2xldG9uL1Byb3BlcnR5XG5cdFx0ZGVsZXRlSGlkZGVuRXhwcmVzc2lvbjogRXhwcmVzc2lvbjxib29sZWFuIHwgdW5kZWZpbmVkPiA9IGFubm90YXRpb25FeHByZXNzaW9uKFxuXHRcdFx0ZGVsZXRlSGlkZGVuLFxuXHRcdFx0dmlzaXRlZE5hdmlnYXRpb25QYXRocyxcblx0XHRcdHVuZGVmaW5lZCxcblx0XHRcdChwYXRoOiBzdHJpbmcpID0+IHNpbmdsZXRvblBhdGhWaXNpdG9yKHBhdGgsIGNvbnZlcnRlckNvbnRleHQuZ2V0Q29udmVydGVkVHlwZXMoKSwgW10pXG5cdFx0KSxcblx0XHRtYW5pZmVzdFdyYXBwZXIgPSBjb252ZXJ0ZXJDb250ZXh0LmdldE1hbmlmZXN0V3JhcHBlcigpLFxuXHRcdHZpZXdMZXZlbCA9IG1hbmlmZXN0V3JhcHBlci5nZXRWaWV3TGV2ZWwoKSxcblx0XHQvLyBEZWxldGUgYnV0dG9uIGlzIHZpc2libGVcblx0XHQvLyBJbiBPUCBcdFx0LS0+ICB3aGVuIG5vdCBpbiBlZGl0IG1vZGVcblx0XHQvLyBJbiBzdWItT1AgXHQtLT4gIHdoZW4gaW4gZWRpdCBtb2RlXG5cdFx0ZWRpdGFibGVFeHByZXNzaW9uOiBFeHByZXNzaW9uPGJvb2xlYW4+ID0gdmlld0xldmVsID4gMSA/IFVJLklzRWRpdGFibGUgOiBub3QoVUkuSXNFZGl0YWJsZSk7XG5cblx0Ly8gSWYgVUkuRGVsZXRlSGlkZGVuIGFubm90YXRpb24gb24gZW50aXR5IHNldCBvciB0eXBlIGlzIGVpdGhlciBub3QgZGVmaW5lZCBvciBleHBsaWNpdGx5IHNldCB0byBmYWxzZSxcblx0Ly8gRGVsZXRlIGJ1dHRvbiBpcyB2aXNpYmxlIGJhc2VkIG9uIGVkaXRhYmxlRXhwcmVzc2lvbi5cblx0Ly8gZWxzZSxcblx0Ly8gRGVsZXRlIGJ1dHRvbiBpcyB2aXNpYmxlIGJhc2VkIG9uIGJvdGggYW5ub3RhdGlvbiBwYXRoIGFuZCBlZGl0YWJsZUV4cHJlc3Npb24uXG5cdHJldHVybiBpZkVsc2UoXG5cdFx0ZGVsZXRlSGlkZGVuID09PSB1bmRlZmluZWQgfHwgZGVsZXRlSGlkZGVuLnZhbHVlT2YoKSA9PT0gZmFsc2UsXG5cdFx0ZWRpdGFibGVFeHByZXNzaW9uLFxuXHRcdGFuZChlZGl0YWJsZUV4cHJlc3Npb24sIGVxdWFsKGRlbGV0ZUhpZGRlbkV4cHJlc3Npb24sIGZhbHNlKSlcblx0KTtcbn1cblxuLyoqXG4gKiBNZXRob2QgdG8gZGV0ZXJtaW5lIHRoZSAnZW5hYmxlZCcgcHJvcGVydHkgYmluZGluZyBmb3IgdGhlIERlbGV0ZSBidXR0b24gb24gYW4gb2JqZWN0IHBhZ2UuXG4gKlxuICogQHBhcmFtIHtQcm9wZXJ0eUFubm90YXRpb25WYWx1ZTxib29sZWFuPnx1bmRlZmluZWR9IGlzRGVsZXRhYmxlIFRoZSBkZWxldGUgcmVzdHJpY3Rpb24gY29uZmlndXJlZFxuICogQHBhcmFtIHtFeHByZXNzaW9uPGJvb2xlYW4+fSBpc1BhcmVudERlbGV0YWJsZSBUaGUgZGVsZXRlIHJlc3RyaWN0aW9uIGNvbmZpZ3VyZWQgb24gdGhlIHBhcmVudCBlbnRpdHlcbiAqIEByZXR1cm5zIHtFeHByZXNzaW9uPGJvb2xlYW4+fSBUaGUgYmluZGluZyBleHByZXNzaW9uIGZvciB0aGUgJ2VuYWJsZWQnIHByb3BlcnR5IG9mIHRoZSBEZWxldGUgYnV0dG9uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXREZWxldGVCdXR0b25FbmFibGVkKFxuXHRpc0RlbGV0YWJsZTogUHJvcGVydHlBbm5vdGF0aW9uVmFsdWU8Qm9vbGVhbj4gfCB1bmRlZmluZWQsXG5cdGlzUGFyZW50RGVsZXRhYmxlOiBFeHByZXNzaW9uPGJvb2xlYW4+XG4pOiBFeHByZXNzaW9uPGJvb2xlYW4+IHtcblx0cmV0dXJuIGlmRWxzZShcblx0XHRpc1BhcmVudERlbGV0YWJsZSAhPT0gdW5kZWZpbmVkLFxuXHRcdGlzUGFyZW50RGVsZXRhYmxlLFxuXHRcdGlmRWxzZShpc0RlbGV0YWJsZSAhPT0gdW5kZWZpbmVkLCBlcXVhbChpc0RlbGV0YWJsZSwgdHJ1ZSksIGNvbnN0YW50KHRydWUpKVxuXHQpO1xufVxuXG4vKipcbiAqIE1ldGhvZCB0byBkZXRlcm1pbmUgdGhlICd2aXNpYmxlJyBwcm9wZXJ0eSBiaW5kaW5nIGZvciB0aGUgRWRpdCBidXR0b24gb24gYW4gb2JqZWN0IHBhZ2UuXG4gKlxuICogQHBhcmFtIHtDb252ZXJ0ZXJDb250ZXh0fSBjb252ZXJ0ZXJDb250ZXh0IEluc3RhbmNlIG9mIHRoZSBjb252ZXJ0ZXIgY29udGV4dC5cbiAqIEBwYXJhbSB7UHJvcGVydHlBbm5vdGF0aW9uVmFsdWU8Ym9vbGVhbj4gfCB1bmRlZmluZWR9IHVwZGF0ZUhpZGRlbiBUaGUgdmFsdWUgb2YgdGhlIFVJLlVwZGF0ZUhpZGRlbiBhbm5vdGF0aW9uIG9uIHRoZSBlbnRpdHkgc2V0IC8gdHlwZS5cbiAqIEByZXR1cm5zIHtFeHByZXNzaW9uPGJvb2xlYW4+fSBUaGUgYmluZGluZyBleHByZXNzaW9uIGZvciB0aGUgJ3Zpc2libGUnIHByb3BlcnR5IG9mIHRoZSBFZGl0IGJ1dHRvbi5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldEVkaXRCdXR0b25WaXNpYmlsaXR5KFxuXHRjb252ZXJ0ZXJDb250ZXh0OiBDb252ZXJ0ZXJDb250ZXh0LFxuXHR1cGRhdGVIaWRkZW46IFByb3BlcnR5QW5ub3RhdGlvblZhbHVlPGJvb2xlYW4+IHwgdW5kZWZpbmVkXG4pOiBFeHByZXNzaW9uPGJvb2xlYW4+IHtcblx0Y29uc3QgZW50aXR5U2V0ID0gY29udmVydGVyQ29udGV4dC5nZXRFbnRpdHlTZXQoKSxcblx0XHRiSXNEcmFmdFJvb3QgPSBlbnRpdHlTZXQgJiYgZW50aXR5U2V0LmFubm90YXRpb25zLkNvbW1vbj8uRHJhZnRSb290ID8gdHJ1ZSA6IGZhbHNlLFxuXHRcdGRhdGFNb2RlbE9iamVjdFBhdGggPSBjb252ZXJ0ZXJDb250ZXh0LmdldERhdGFNb2RlbE9iamVjdFBhdGgoKSxcblx0XHR2aXNpdGVkTmF2aWdhdGlvblBhdGhzID0gZGF0YU1vZGVsT2JqZWN0UGF0aC5uYXZpZ2F0aW9uUHJvcGVydGllcy5tYXAobmF2UHJvcCA9PiBuYXZQcm9wLm5hbWUpLFxuXHRcdC8vIFNldCBhYnNvbHV0ZSBiaW5kaW5nIHBhdGggZm9yIFNpbmdsZXRvbiByZWZlcmVuY2VzLCBvdGhlcndpc2UgdGhlIGNvbmZpZ3VyZWQgYW5ub3RhdGlvbiBwYXRoIGl0c2VsZi5cblx0XHQvLyBGb3IgZS5nLiAvY29tLnNhcC5uYW1lc3BhY2UuRW50aXR5Q29udGFpbmVyL1NpbmdsZXRvbi9Qcm9wZXJ0eSB0byAvU2luZ2xldG9uL1Byb3BlcnR5XG5cdFx0dXBkYXRlSGlkZGVuRXhwcmVzc2lvbjogRXhwcmVzc2lvbjxib29sZWFuIHwgdW5kZWZpbmVkPiA9IGFubm90YXRpb25FeHByZXNzaW9uKFxuXHRcdFx0dXBkYXRlSGlkZGVuLFxuXHRcdFx0dmlzaXRlZE5hdmlnYXRpb25QYXRocyxcblx0XHRcdHVuZGVmaW5lZCxcblx0XHRcdChwYXRoOiBzdHJpbmcpID0+IHNpbmdsZXRvblBhdGhWaXNpdG9yKHBhdGgsIGNvbnZlcnRlckNvbnRleHQuZ2V0Q29udmVydGVkVHlwZXMoKSwgdmlzaXRlZE5hdmlnYXRpb25QYXRocylcblx0XHQpLFxuXHRcdG5vdEVkaXRhYmxlRXhwcmVzc2lvbjogRXhwcmVzc2lvbjxib29sZWFuPiA9IG5vdChVSS5Jc0VkaXRhYmxlKTtcblxuXHQvLyBJZiBVSS5VcGRhdGVIaWRkZW4gYW5ub3RhdGlvbiBvbiBlbnRpdHkgc2V0IG9yIHR5cGUgaXMgZWl0aGVyIG5vdCBkZWZpbmVkIG9yIGV4cGxpY2l0bHkgc2V0IHRvIGZhbHNlLFxuXHQvLyBFZGl0IGJ1dHRvbiBpcyB2aXNpYmxlIGluIGRpc3BsYXkgbW9kZS5cblx0Ly8gZWxzZSxcblx0Ly8gRWRpdCBidXR0b24gaXMgdmlzaWJsZSBiYXNlZCBvbiBib3RoIGFubm90YXRpb24gcGF0aCBhbmQgaW4gZGlzcGxheSBtb2RlLlxuXHRjb25zdCByZXN1bHRhbnRFeHByZXNzaW9uOiBFeHByZXNzaW9uPGJvb2xlYW4+ID0gaWZFbHNlKFxuXHRcdHVwZGF0ZUhpZGRlbiA9PT0gdW5kZWZpbmVkIHx8IHVwZGF0ZUhpZGRlbi52YWx1ZU9mKCkgPT09IGZhbHNlLFxuXHRcdG5vdEVkaXRhYmxlRXhwcmVzc2lvbixcblx0XHRhbmQobm90RWRpdGFibGVFeHByZXNzaW9uLCBlcXVhbCh1cGRhdGVIaWRkZW5FeHByZXNzaW9uLCBmYWxzZSkpXG5cdCk7XG5cdHJldHVybiBpZkVsc2UoYklzRHJhZnRSb290LCBhbmQocmVzdWx0YW50RXhwcmVzc2lvbiwgRHJhZnQuSGFzTm9EcmFmdEZvckN1cnJlbnRVc2VyKSwgcmVzdWx0YW50RXhwcmVzc2lvbik7XG59XG5cbi8qKlxuICogTWV0aG9kIHRvIGRldGVybWluZSB0aGUgJ2VuYWJsZWQnIHByb3BlcnR5IGJpbmRpbmcgZm9yIHRoZSBFZGl0IGJ1dHRvbiBvbiBhbiBvYmplY3QgcGFnZS5cbiAqXG4gKiBAcGFyYW0ge0NvbnZlcnRlckNvbnRleHR9IGNvbnZlcnRlckNvbnRleHQgSW5zdGFuY2Ugb2YgdGhlIGNvbnZlcnRlciBjb250ZXh0LlxuICogQHJldHVybnMge0V4cHJlc3Npb248Ym9vbGVhbj59IFRoZSBiaW5kaW5nIGV4cHJlc3Npb24gZm9yIHRoZSAnZW5hYmxlZCcgcHJvcGVydHkgb2YgdGhlIEVkaXQgYnV0dG9uLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0RWRpdEJ1dHRvbkVuYWJsZWQoY29udmVydGVyQ29udGV4dDogQ29udmVydGVyQ29udGV4dCk6IEJpbmRpbmdFeHByZXNzaW9uPGJvb2xlYW4+IHtcblx0Y29uc3QgZW50aXR5U2V0ID0gY29udmVydGVyQ29udGV4dC5nZXRFbnRpdHlTZXQoKSxcblx0XHRpc0RyYWZ0Um9vdCA9IGVudGl0eVNldCAmJiBlbnRpdHlTZXQuYW5ub3RhdGlvbnMuQ29tbW9uPy5EcmFmdFJvb3QgPyB0cnVlIDogZmFsc2UsXG5cdFx0aXNTdGlja3kgPSBlbnRpdHlTZXQgJiYgZW50aXR5U2V0LmFubm90YXRpb25zLlNlc3Npb24/LlN0aWNreVNlc3Npb25TdXBwb3J0ZWQgPyB0cnVlIDogZmFsc2U7XG5cblx0bGV0IGVkaXRBY3Rpb25OYW1lOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cdGlmIChpc0RyYWZ0Um9vdCkge1xuXHRcdGVkaXRBY3Rpb25OYW1lID0gZW50aXR5U2V0Py5hbm5vdGF0aW9ucy5Db21tb24/LkRyYWZ0Um9vdD8uRWRpdEFjdGlvbiBhcyBzdHJpbmc7XG5cdH0gZWxzZSBpZiAoaXNTdGlja3kpIHtcblx0XHRlZGl0QWN0aW9uTmFtZSA9IGVudGl0eVNldD8uYW5ub3RhdGlvbnMuU2Vzc2lvbj8uU3RpY2t5U2Vzc2lvblN1cHBvcnRlZD8uRWRpdEFjdGlvbiBhcyBzdHJpbmc7XG5cdH1cblx0aWYgKGVkaXRBY3Rpb25OYW1lKSB7XG5cdFx0Y29uc3QgZWRpdEFjdGlvbkFubm90YXRpb25QYXRoID0gY29udmVydGVyQ29udGV4dC5nZXRBYnNvbHV0ZUFubm90YXRpb25QYXRoKGVkaXRBY3Rpb25OYW1lIGFzIHN0cmluZyksXG5cdFx0XHRlZGl0QWN0aW9ucyA9IChjb252ZXJ0ZXJDb250ZXh0LmdldEVudGl0eVR5cGVBbm5vdGF0aW9uKGVkaXRBY3Rpb25Bbm5vdGF0aW9uUGF0aCk/LmFubm90YXRpb24gYXMgYW55KT8uYWN0aW9ucztcblx0XHRpZiAoZWRpdEFjdGlvbnM/Lmxlbmd0aCkge1xuXHRcdFx0Y29uc3QgZWRpdEFjdGlvbiA9IGVkaXRBY3Rpb25zWzBdO1xuXHRcdFx0aWYgKGVkaXRBY3Rpb24/LmFubm90YXRpb25zPy5Db3JlPy5PcGVyYXRpb25BdmFpbGFibGUgPT09IG51bGwpIHtcblx0XHRcdFx0cmV0dXJuIFwiez0gJHsjXCIgKyBlZGl0QWN0aW9uTmFtZSArIFwifSA/IHRydWUgOiBmYWxzZSB9XCI7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRyZXR1cm4gZ2V0RW5hYmxlZEZvckFubm90YXRpb25BY3Rpb24oY29udmVydGVyQ29udGV4dCwgZWRpdEFjdGlvbik7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cdHJldHVybiB0cnVlO1xufVxuXG4vKipcbiAqIEBwYXJhbSBjb252ZXJ0ZXJDb250ZXh0XG4gKiBAcmV0dXJucyB7QmFzZUFjdGlvbltdfVxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0SGVhZGVyRGVmYXVsdEFjdGlvbnMoY29udmVydGVyQ29udGV4dDogQ29udmVydGVyQ29udGV4dCk6IEJhc2VBY3Rpb25bXSB7XG5cdGNvbnN0IGVudGl0eVNldCA9IGNvbnZlcnRlckNvbnRleHQuZ2V0RW50aXR5U2V0KCksXG5cdFx0ZW50aXR5VHlwZSA9IGNvbnZlcnRlckNvbnRleHQuZ2V0RW50aXR5VHlwZSgpLFxuXHRcdG9TdGlja3lTZXNzaW9uU3VwcG9ydGVkID0gZW50aXR5U2V0ICYmIGVudGl0eVNldC5hbm5vdGF0aW9ucz8uU2Vzc2lvbj8uU3RpY2t5U2Vzc2lvblN1cHBvcnRlZCwgLy9mb3Igc3RpY2t5IGFwcFxuXHRcdG9EcmFmdFJvb3QgPSBlbnRpdHlTZXQgJiYgZW50aXR5U2V0LmFubm90YXRpb25zLkNvbW1vbj8uRHJhZnRSb290LFxuXHRcdG9FbnRpdHlEZWxldGVSZXN0cmljdGlvbnMgPSBlbnRpdHlTZXQgJiYgZW50aXR5U2V0LmFubm90YXRpb25zPy5DYXBhYmlsaXRpZXM/LkRlbGV0ZVJlc3RyaWN0aW9ucyxcblx0XHRiVXBkYXRlSGlkZGVuID0gZW50aXR5U2V0ICYmIGVudGl0eVNldC5hbm5vdGF0aW9ucy5VST8uVXBkYXRlSGlkZGVuPy52YWx1ZU9mKCksXG5cdFx0ZGF0YU1vZGVsT2JqZWN0UGF0aCA9IGNvbnZlcnRlckNvbnRleHQuZ2V0RGF0YU1vZGVsT2JqZWN0UGF0aCgpLFxuXHRcdGlzUGFyZW50RGVsZXRhYmxlID0gaXNQYXRoRGVsZXRhYmxlKGRhdGFNb2RlbE9iamVjdFBhdGgsIHtcblx0XHRcdHBhdGhWaXNpdG9yOiAocGF0aDogc3RyaW5nLCBuYXZpZ2F0aW9uUGF0aHM6IHN0cmluZ1tdKSA9PlxuXHRcdFx0XHRzaW5nbGV0b25QYXRoVmlzaXRvcihwYXRoLCBjb252ZXJ0ZXJDb250ZXh0LmdldENvbnZlcnRlZFR5cGVzKCksIG5hdmlnYXRpb25QYXRocylcblx0XHR9KSxcblx0XHRiUGFyZW50RW50aXR5U2V0RGVsZXRhYmxlID0gaXNQYXJlbnREZWxldGFibGUgPyBjb21waWxlQmluZGluZyhpc1BhcmVudERlbGV0YWJsZSkgOiBpc1BhcmVudERlbGV0YWJsZSxcblx0XHRoZWFkZXJEYXRhRmllbGRGb3JBY3Rpb25zID0gZ2V0SWRlbnRpZmljYXRpb25EYXRhRmllbGRGb3JBY3Rpb25zKGNvbnZlcnRlckNvbnRleHQuZ2V0RW50aXR5VHlwZSgpLCBmYWxzZSk7XG5cblx0Ly8gRmlyc3QgYWRkIHRoZSBcIkNyaXRpY2FsXCIgRGF0YUZpZWxkRm9yQWN0aW9uc1xuXHRjb25zdCBoZWFkZXJBY3Rpb25zOiBCYXNlQWN0aW9uW10gPSBoZWFkZXJEYXRhRmllbGRGb3JBY3Rpb25zXG5cdFx0LmZpbHRlcihkYXRhRmllbGQgPT4ge1xuXHRcdFx0cmV0dXJuIElNUE9SVEFOVF9DUklUSUNBTElUSUVTLmluZGV4T2YoZGF0YUZpZWxkPy5Dcml0aWNhbGl0eSBhcyBzdHJpbmcpID4gLTE7XG5cdFx0fSlcblx0XHQubWFwKGRhdGFGaWVsZCA9PiB7XG5cdFx0XHRyZXR1cm4ge1xuXHRcdFx0XHR0eXBlOiBBY3Rpb25UeXBlLkRhdGFGaWVsZEZvckFjdGlvbixcblx0XHRcdFx0YW5ub3RhdGlvblBhdGg6IGNvbnZlcnRlckNvbnRleHQuZ2V0RW50aXR5U2V0QmFzZWRBbm5vdGF0aW9uUGF0aChkYXRhRmllbGQuZnVsbHlRdWFsaWZpZWROYW1lKSxcblx0XHRcdFx0a2V5OiBLZXlIZWxwZXIuZ2VuZXJhdGVLZXlGcm9tRGF0YUZpZWxkKGRhdGFGaWVsZCksXG5cdFx0XHRcdHZpc2libGU6IGNvbXBpbGVCaW5kaW5nKG5vdChlcXVhbChhbm5vdGF0aW9uRXhwcmVzc2lvbihkYXRhRmllbGQuYW5ub3RhdGlvbnM/LlVJPy5IaWRkZW4pLCB0cnVlKSkpLFxuXHRcdFx0XHRlbmFibGVkOiBnZXRFbmFibGVkRm9yQW5ub3RhdGlvbkFjdGlvbihjb252ZXJ0ZXJDb250ZXh0LCBkYXRhRmllbGQuQWN0aW9uVGFyZ2V0KSxcblx0XHRcdFx0aXNOYXZpZ2FibGU6IHRydWVcblx0XHRcdH07XG5cdFx0fSk7XG5cblx0Ly8gVGhlbiB0aGUgZWRpdCBhY3Rpb24gaWYgaXQgZXhpc3RzXG5cdGlmICgob0RyYWZ0Um9vdD8uRWRpdEFjdGlvbiB8fCBvU3RpY2t5U2Vzc2lvblN1cHBvcnRlZD8uRWRpdEFjdGlvbikgJiYgYlVwZGF0ZUhpZGRlbiAhPT0gdHJ1ZSkge1xuXHRcdGNvbnN0IHVwZGF0ZUhpZGRlbiA9IChlbnRpdHlTZXQ/LmFubm90YXRpb25zLlVJPy5VcGRhdGVIaWRkZW4/LnZhbHVlT2YoKSAhPT0gdW5kZWZpbmVkXG5cdFx0XHQ/IGVudGl0eVNldD8uYW5ub3RhdGlvbnMuVUk/LlVwZGF0ZUhpZGRlblxuXHRcdFx0OiBlbnRpdHlUeXBlPy5hbm5vdGF0aW9ucy5VST8uVXBkYXRlSGlkZGVuKSBhcyBQcm9wZXJ0eUFubm90YXRpb25WYWx1ZTxib29sZWFuPjtcblx0XHRoZWFkZXJBY3Rpb25zLnB1c2goe1xuXHRcdFx0dHlwZTogQWN0aW9uVHlwZS5QcmltYXJ5LFxuXHRcdFx0a2V5OiBcIkVkaXRBY3Rpb25cIixcblx0XHRcdHZpc2libGU6IGNvbXBpbGVCaW5kaW5nKGdldEVkaXRCdXR0b25WaXNpYmlsaXR5KGNvbnZlcnRlckNvbnRleHQsIHVwZGF0ZUhpZGRlbikpLFxuXHRcdFx0ZW5hYmxlZDogZ2V0RWRpdEJ1dHRvbkVuYWJsZWQoY29udmVydGVyQ29udGV4dClcblx0XHR9KTtcblx0fVxuXHQvLyBUaGVuIHRoZSBkZWxldGUgYWN0aW9uIGlmIHdlJ3JlIG5vdCBzdGF0aWNhbGx5IG5vdCBkZWxldGFibGVcblx0aWYgKFxuXHRcdChiUGFyZW50RW50aXR5U2V0RGVsZXRhYmxlICYmIGJQYXJlbnRFbnRpdHlTZXREZWxldGFibGUgIT09IFwiZmFsc2VcIikgfHxcblx0XHQob0VudGl0eURlbGV0ZVJlc3RyaWN0aW9ucz8uRGVsZXRhYmxlPy52YWx1ZU9mKCkgIT09IGZhbHNlICYmIGJQYXJlbnRFbnRpdHlTZXREZWxldGFibGUgIT09IFwiZmFsc2VcIilcblx0KSB7XG5cdFx0Y29uc3QgZGVsZXRlSGlkZGVuID0gKGVudGl0eVNldD8uYW5ub3RhdGlvbnMuVUk/LkRlbGV0ZUhpZGRlbj8udmFsdWVPZigpICE9PSB1bmRlZmluZWRcblx0XHRcdD8gZW50aXR5U2V0Py5hbm5vdGF0aW9ucy5VST8uRGVsZXRlSGlkZGVuXG5cdFx0XHQ6IGVudGl0eVR5cGU/LmFubm90YXRpb25zLlVJPy5EZWxldGVIaWRkZW4pIGFzIFByb3BlcnR5QW5ub3RhdGlvblZhbHVlPGJvb2xlYW4+O1xuXHRcdGhlYWRlckFjdGlvbnMucHVzaCh7XG5cdFx0XHR0eXBlOiBBY3Rpb25UeXBlLlNlY29uZGFyeSxcblx0XHRcdGtleTogXCJEZWxldGVBY3Rpb25cIixcblx0XHRcdHZpc2libGU6IGNvbXBpbGVCaW5kaW5nKGdldERlbGV0ZUJ1dHRvblZpc2liaWxpdHkoY29udmVydGVyQ29udGV4dCwgZGVsZXRlSGlkZGVuKSksXG5cdFx0XHRlbmFibGVkOiBjb21waWxlQmluZGluZyhnZXREZWxldGVCdXR0b25FbmFibGVkKG9FbnRpdHlEZWxldGVSZXN0cmljdGlvbnM/LkRlbGV0YWJsZSwgaXNQYXJlbnREZWxldGFibGUpKSxcblx0XHRcdHBhcmVudEVudGl0eURlbGV0ZUVuYWJsZWQ6IGJQYXJlbnRFbnRpdHlTZXREZWxldGFibGVcblx0XHR9KTtcblx0fVxuXG5cdGlmIChvRHJhZnRSb290Py5FZGl0QWN0aW9uICYmIGJVcGRhdGVIaWRkZW4gIT09IHRydWUpIHtcblx0XHRoZWFkZXJBY3Rpb25zLnB1c2goeyB0eXBlOiBBY3Rpb25UeXBlLlN3aXRjaFRvQWN0aXZlT2JqZWN0LCBrZXk6IFwiU3dpdGNoVG9BY3RpdmVPYmplY3RcIiB9KTtcblx0XHRoZWFkZXJBY3Rpb25zLnB1c2goeyB0eXBlOiBBY3Rpb25UeXBlLlN3aXRjaFRvRHJhZnRPYmplY3QsIGtleTogXCJTd2l0Y2hUb0RyYWZ0T2JqZWN0XCIgfSk7XG5cdH1cblxuXHRjb25zdCBoZWFkZXJEYXRhRmllbGRGb3JJQk5BY3Rpb25zID0gZ2V0SWRlbnRpZmljYXRpb25EYXRhRmllbGRGb3JJQk5BY3Rpb25zKGNvbnZlcnRlckNvbnRleHQuZ2V0RW50aXR5VHlwZSgpLCBmYWxzZSk7XG5cblx0aGVhZGVyRGF0YUZpZWxkRm9ySUJOQWN0aW9uc1xuXHRcdC5maWx0ZXIoZGF0YUZpZWxkID0+IHtcblx0XHRcdHJldHVybiBJTVBPUlRBTlRfQ1JJVElDQUxJVElFUy5pbmRleE9mKGRhdGFGaWVsZD8uQ3JpdGljYWxpdHkgYXMgc3RyaW5nKSA9PT0gLTE7XG5cdFx0fSlcblx0XHQuZm9yRWFjaChkYXRhRmllbGQgPT4ge1xuXHRcdFx0Y29uc3Qgb05hdmlnYXRpb25QYXJhbXMgPSB7XG5cdFx0XHRcdHNlbWFudGljT2JqZWN0TWFwcGluZzogZGF0YUZpZWxkLk1hcHBpbmcgPyBnZXRTZW1hbnRpY09iamVjdE1hcHBpbmcoZGF0YUZpZWxkLk1hcHBpbmcpIDogW11cblx0XHRcdH07XG5cblx0XHRcdGlmIChkYXRhRmllbGQuUmVxdWlyZXNDb250ZXh0Py52YWx1ZU9mKCkgPT09IHRydWUpIHtcblx0XHRcdFx0dGhyb3cgbmV3IEVycm9yKFwiUmVxdWlyZXNDb250ZXh0IHByb3BlcnR5IHNob3VsZCBub3QgYmUgdHJ1ZSBmb3IgaGVhZGVyIElCTiBhY3Rpb24gOiBcIiArIGRhdGFGaWVsZC5MYWJlbCk7XG5cdFx0XHR9IGVsc2UgaWYgKGRhdGFGaWVsZC5JbmxpbmU/LnZhbHVlT2YoKSA9PT0gdHJ1ZSkge1xuXHRcdFx0XHR0aHJvdyBuZXcgRXJyb3IoXCJJbmxpbmUgcHJvcGVydHkgc2hvdWxkIG5vdCBiZSB0cnVlIGZvciBoZWFkZXIgSUJOIGFjdGlvbiA6IFwiICsgZGF0YUZpZWxkLkxhYmVsKTtcblx0XHRcdH1cblx0XHRcdGhlYWRlckFjdGlvbnMucHVzaCh7XG5cdFx0XHRcdHR5cGU6IEFjdGlvblR5cGUuRGF0YUZpZWxkRm9ySW50ZW50QmFzZWROYXZpZ2F0aW9uLFxuXHRcdFx0XHR0ZXh0OiBkYXRhRmllbGQuTGFiZWw/LnRvU3RyaW5nKCksXG5cdFx0XHRcdGFubm90YXRpb25QYXRoOiBjb252ZXJ0ZXJDb250ZXh0LmdldEVudGl0eVNldEJhc2VkQW5ub3RhdGlvblBhdGgoZGF0YUZpZWxkLmZ1bGx5UXVhbGlmaWVkTmFtZSksXG5cdFx0XHRcdGJ1dHRvblR5cGU6IEJ1dHRvblR5cGUuR2hvc3QsXG5cdFx0XHRcdHZpc2libGU6IGNvbXBpbGVCaW5kaW5nKG5vdChlcXVhbChhbm5vdGF0aW9uRXhwcmVzc2lvbihkYXRhRmllbGQuYW5ub3RhdGlvbnM/LlVJPy5IaWRkZW4/LnZhbHVlT2YoKSksIHRydWUpKSksXG5cdFx0XHRcdGVuYWJsZWQ6XG5cdFx0XHRcdFx0ZGF0YUZpZWxkLk5hdmlnYXRpb25BdmFpbGFibGUgIT09IHVuZGVmaW5lZFxuXHRcdFx0XHRcdFx0PyBjb21waWxlQmluZGluZyhlcXVhbChhbm5vdGF0aW9uRXhwcmVzc2lvbihkYXRhRmllbGQuTmF2aWdhdGlvbkF2YWlsYWJsZT8udmFsdWVPZigpKSwgdHJ1ZSkpXG5cdFx0XHRcdFx0XHQ6IHRydWUsXG5cdFx0XHRcdGtleTogS2V5SGVscGVyLmdlbmVyYXRlS2V5RnJvbURhdGFGaWVsZChkYXRhRmllbGQpLFxuXHRcdFx0XHRpc05hdmlnYWJsZTogdHJ1ZSxcblx0XHRcdFx0cHJlc3M6IGNvbXBpbGVCaW5kaW5nKFxuXHRcdFx0XHRcdGZuKFwiLl9pbnRlbnRCYXNlZE5hdmlnYXRpb24ubmF2aWdhdGVcIiwgW1xuXHRcdFx0XHRcdFx0YW5ub3RhdGlvbkV4cHJlc3Npb24oZGF0YUZpZWxkLlNlbWFudGljT2JqZWN0KSxcblx0XHRcdFx0XHRcdGFubm90YXRpb25FeHByZXNzaW9uKGRhdGFGaWVsZC5BY3Rpb24pLFxuXHRcdFx0XHRcdFx0b05hdmlnYXRpb25QYXJhbXNcblx0XHRcdFx0XHRdKVxuXHRcdFx0XHQpLFxuXHRcdFx0XHRjdXN0b21EYXRhOiBjb21waWxlQmluZGluZyh7XG5cdFx0XHRcdFx0c2VtYW50aWNPYmplY3Q6IGFubm90YXRpb25FeHByZXNzaW9uKGRhdGFGaWVsZC5TZW1hbnRpY09iamVjdCksXG5cdFx0XHRcdFx0YWN0aW9uOiBhbm5vdGF0aW9uRXhwcmVzc2lvbihkYXRhRmllbGQuQWN0aW9uKVxuXHRcdFx0XHR9KVxuXHRcdFx0fSBhcyBBbm5vdGF0aW9uQWN0aW9uKTtcblx0XHR9KTtcblx0Ly8gRmluYWxseSB0aGUgbm9uIGNyaXRpY2FsIERhdGFGaWVsZEZvckFjdGlvbnNcblx0aGVhZGVyRGF0YUZpZWxkRm9yQWN0aW9uc1xuXHRcdC5maWx0ZXIoZGF0YUZpZWxkID0+IHtcblx0XHRcdHJldHVybiBJTVBPUlRBTlRfQ1JJVElDQUxJVElFUy5pbmRleE9mKGRhdGFGaWVsZD8uQ3JpdGljYWxpdHkgYXMgc3RyaW5nKSA9PT0gLTE7XG5cdFx0fSlcblx0XHQuZm9yRWFjaChkYXRhRmllbGQgPT4ge1xuXHRcdFx0aGVhZGVyQWN0aW9ucy5wdXNoKHtcblx0XHRcdFx0dHlwZTogQWN0aW9uVHlwZS5EYXRhRmllbGRGb3JBY3Rpb24sXG5cdFx0XHRcdGFubm90YXRpb25QYXRoOiBjb252ZXJ0ZXJDb250ZXh0LmdldEVudGl0eVNldEJhc2VkQW5ub3RhdGlvblBhdGgoZGF0YUZpZWxkLmZ1bGx5UXVhbGlmaWVkTmFtZSksXG5cdFx0XHRcdGtleTogS2V5SGVscGVyLmdlbmVyYXRlS2V5RnJvbURhdGFGaWVsZChkYXRhRmllbGQpLFxuXHRcdFx0XHR2aXNpYmxlOiBjb21waWxlQmluZGluZyhub3QoZXF1YWwoYW5ub3RhdGlvbkV4cHJlc3Npb24oZGF0YUZpZWxkLmFubm90YXRpb25zPy5VST8uSGlkZGVuKSwgdHJ1ZSkpKSxcblx0XHRcdFx0ZW5hYmxlZDogZ2V0RW5hYmxlZEZvckFubm90YXRpb25BY3Rpb24oY29udmVydGVyQ29udGV4dCwgZGF0YUZpZWxkLkFjdGlvblRhcmdldCksXG5cdFx0XHRcdGlzTmF2aWdhYmxlOiB0cnVlXG5cdFx0XHR9IGFzIEFubm90YXRpb25BY3Rpb24pO1xuXHRcdH0pO1xuXG5cdHJldHVybiBoZWFkZXJBY3Rpb25zO1xufVxuXG4vKipcbiAqIEBwYXJhbSBjb252ZXJ0ZXJDb250ZXh0XG4gKiBAcmV0dXJucyB7QmFzZUFjdGlvbltdfVxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0SGlkZGVuSGVhZGVyQWN0aW9ucyhjb252ZXJ0ZXJDb250ZXh0OiBDb252ZXJ0ZXJDb250ZXh0KTogQmFzZUFjdGlvbltdIHtcblx0Y29uc3QgZW50aXR5VHlwZSA9IGNvbnZlcnRlckNvbnRleHQuZ2V0RW50aXR5VHlwZSgpO1xuXHRjb25zdCBoaWRkZW5BY3Rpb25zID0gKGVudGl0eVR5cGUuYW5ub3RhdGlvbnM/LlVJPy5JZGVudGlmaWNhdGlvbj8uZmlsdGVyKGlkZW50aWZpY2F0aW9uRGF0YUZpZWxkID0+IHtcblx0XHRyZXR1cm4gaWRlbnRpZmljYXRpb25EYXRhRmllbGQ/LmFubm90YXRpb25zPy5VST8uSGlkZGVuPy52YWx1ZU9mKCkgPT09IHRydWU7XG5cdH0pIHx8IFtdKSBhcyBEYXRhRmllbGRGb3JBY3Rpb25UeXBlc1tdO1xuXHRyZXR1cm4gaGlkZGVuQWN0aW9ucy5tYXAoZGF0YUZpZWxkID0+IHtcblx0XHRyZXR1cm4ge1xuXHRcdFx0dHlwZTogQWN0aW9uVHlwZS5EZWZhdWx0LFxuXHRcdFx0a2V5OiBLZXlIZWxwZXIuZ2VuZXJhdGVLZXlGcm9tRGF0YUZpZWxkKGRhdGFGaWVsZClcblx0XHR9O1xuXHR9KTtcbn1cblxuLyoqXG4gKiBAcGFyYW0gdmlld0xldmVsXG4gKiBAcGFyYW0gY29udmVydGVyQ29udGV4dFxuICogQHJldHVybnMge0Jhc2VBY3Rpb25bXX1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldEZvb3RlckRlZmF1bHRBY3Rpb25zKHZpZXdMZXZlbDogbnVtYmVyLCBjb252ZXJ0ZXJDb250ZXh0OiBDb252ZXJ0ZXJDb250ZXh0KTogQmFzZUFjdGlvbltdIHtcblx0Y29uc3QgZW50aXR5U2V0ID0gY29udmVydGVyQ29udGV4dC5nZXRFbnRpdHlTZXQoKTtcblx0Y29uc3QgZW50aXR5VHlwZSA9IGNvbnZlcnRlckNvbnRleHQuZ2V0RW50aXR5VHlwZSgpO1xuXHRjb25zdCBvU3RpY2t5U2Vzc2lvblN1cHBvcnRlZCA9IGVudGl0eVNldCAmJiBlbnRpdHlTZXQuYW5ub3RhdGlvbnM/LlNlc3Npb24/LlN0aWNreVNlc3Npb25TdXBwb3J0ZWQsIC8vZm9yIHN0aWNreSBhcHBcblx0XHRzRW50aXR5U2V0RHJhZnRSb290ID1cblx0XHRcdGVudGl0eVNldCAmJiAoZW50aXR5U2V0LmFubm90YXRpb25zLkNvbW1vbj8uRHJhZnRSb290Py50ZXJtIHx8IGVudGl0eVNldC5hbm5vdGF0aW9ucz8uU2Vzc2lvbj8uU3RpY2t5U2Vzc2lvblN1cHBvcnRlZD8udGVybSksXG5cdFx0YkNvbmRpdGlvblNhdmUgPVxuXHRcdFx0c0VudGl0eVNldERyYWZ0Um9vdCA9PT0gXCJjb20uc2FwLnZvY2FidWxhcmllcy5Db21tb24udjEuRHJhZnRSb290XCIgfHxcblx0XHRcdChvU3RpY2t5U2Vzc2lvblN1cHBvcnRlZCAmJiBvU3RpY2t5U2Vzc2lvblN1cHBvcnRlZD8uU2F2ZUFjdGlvbiksXG5cdFx0YkNvbmRpdGlvbkFwcGx5ID0gdmlld0xldmVsID4gMSxcblx0XHRiQ29uZGl0aW9uQ2FuY2VsID1cblx0XHRcdHNFbnRpdHlTZXREcmFmdFJvb3QgPT09IFwiY29tLnNhcC52b2NhYnVsYXJpZXMuQ29tbW9uLnYxLkRyYWZ0Um9vdFwiIHx8XG5cdFx0XHQob1N0aWNreVNlc3Npb25TdXBwb3J0ZWQgJiYgb1N0aWNreVNlc3Npb25TdXBwb3J0ZWQ/LkRpc2NhcmRBY3Rpb24pO1xuXG5cdC8vIFJldHJpZXZlIGFsbCBkZXRlcm1pbmluZyBhY3Rpb25zXG5cdGNvbnN0IGZvb3RlckRhdGFGaWVsZEZvckFjdGlvbnMgPSBnZXRJZGVudGlmaWNhdGlvbkRhdGFGaWVsZEZvckFjdGlvbnMoY29udmVydGVyQ29udGV4dC5nZXRFbnRpdHlUeXBlKCksIHRydWUpO1xuXG5cdC8vIEZpcnN0IGFkZCB0aGUgXCJDcml0aWNhbFwiIERhdGFGaWVsZEZvckFjdGlvbnNcblx0Y29uc3QgZm9vdGVyQWN0aW9uczogQmFzZUFjdGlvbltdID0gZm9vdGVyRGF0YUZpZWxkRm9yQWN0aW9uc1xuXHRcdC5maWx0ZXIoZGF0YUZpZWxkID0+IHtcblx0XHRcdHJldHVybiBJTVBPUlRBTlRfQ1JJVElDQUxJVElFUy5pbmRleE9mKGRhdGFGaWVsZD8uQ3JpdGljYWxpdHkgYXMgc3RyaW5nKSA+IC0xO1xuXHRcdH0pXG5cdFx0Lm1hcChkYXRhRmllbGQgPT4ge1xuXHRcdFx0cmV0dXJuIHtcblx0XHRcdFx0dHlwZTogQWN0aW9uVHlwZS5EYXRhRmllbGRGb3JBY3Rpb24sXG5cdFx0XHRcdGFubm90YXRpb25QYXRoOiBjb252ZXJ0ZXJDb250ZXh0LmdldEVudGl0eVNldEJhc2VkQW5ub3RhdGlvblBhdGgoZGF0YUZpZWxkLmZ1bGx5UXVhbGlmaWVkTmFtZSksXG5cdFx0XHRcdGtleTogS2V5SGVscGVyLmdlbmVyYXRlS2V5RnJvbURhdGFGaWVsZChkYXRhRmllbGQpLFxuXHRcdFx0XHR2aXNpYmxlOiBjb21waWxlQmluZGluZyhub3QoZXF1YWwoYW5ub3RhdGlvbkV4cHJlc3Npb24oZGF0YUZpZWxkLmFubm90YXRpb25zPy5VST8uSGlkZGVuKSwgdHJ1ZSkpKSxcblx0XHRcdFx0ZW5hYmxlZDogZ2V0RW5hYmxlZEZvckFubm90YXRpb25BY3Rpb24oY29udmVydGVyQ29udGV4dCwgZGF0YUZpZWxkLkFjdGlvblRhcmdldCksXG5cdFx0XHRcdGlzTmF2aWdhYmxlOiB0cnVlXG5cdFx0XHR9O1xuXHRcdH0pO1xuXG5cdC8vIFRoZW4gdGhlIHNhdmUgYWN0aW9uIGlmIGl0IGV4aXN0c1xuXHRpZiAoZW50aXR5U2V0Py5lbnRpdHlUeXBlTmFtZSA9PT0gZW50aXR5VHlwZT8uZnVsbHlRdWFsaWZpZWROYW1lICYmIGJDb25kaXRpb25TYXZlKSB7XG5cdFx0Zm9vdGVyQWN0aW9ucy5wdXNoKHsgdHlwZTogQWN0aW9uVHlwZS5QcmltYXJ5LCBrZXk6IFwiU2F2ZUFjdGlvblwiIH0pO1xuXHR9XG5cblx0Ly8gVGhlbiB0aGUgYXBwbHkgYWN0aW9uIGlmIGl0IGV4aXN0c1xuXHRpZiAoYkNvbmRpdGlvbkFwcGx5KSB7XG5cdFx0Zm9vdGVyQWN0aW9ucy5wdXNoKHsgdHlwZTogQWN0aW9uVHlwZS5EZWZhdWx0QXBwbHksIGtleTogXCJBcHBseUFjdGlvblwiIH0pO1xuXHR9XG5cblx0Ly8gVGhlbiB0aGUgbm9uIGNyaXRpY2FsIERhdGFGaWVsZEZvckFjdGlvbnNcblx0Zm9vdGVyRGF0YUZpZWxkRm9yQWN0aW9uc1xuXHRcdC5maWx0ZXIoZGF0YUZpZWxkID0+IHtcblx0XHRcdHJldHVybiBJTVBPUlRBTlRfQ1JJVElDQUxJVElFUy5pbmRleE9mKGRhdGFGaWVsZD8uQ3JpdGljYWxpdHkgYXMgc3RyaW5nKSA9PT0gLTE7XG5cdFx0fSlcblx0XHQuZm9yRWFjaChkYXRhRmllbGQgPT4ge1xuXHRcdFx0Zm9vdGVyQWN0aW9ucy5wdXNoKHtcblx0XHRcdFx0dHlwZTogQWN0aW9uVHlwZS5EYXRhRmllbGRGb3JBY3Rpb24sXG5cdFx0XHRcdGFubm90YXRpb25QYXRoOiBjb252ZXJ0ZXJDb250ZXh0LmdldEVudGl0eVNldEJhc2VkQW5ub3RhdGlvblBhdGgoZGF0YUZpZWxkLmZ1bGx5UXVhbGlmaWVkTmFtZSksXG5cdFx0XHRcdGtleTogS2V5SGVscGVyLmdlbmVyYXRlS2V5RnJvbURhdGFGaWVsZChkYXRhRmllbGQpLFxuXHRcdFx0XHR2aXNpYmxlOiBjb21waWxlQmluZGluZyhub3QoZXF1YWwoYW5ub3RhdGlvbkV4cHJlc3Npb24oZGF0YUZpZWxkLmFubm90YXRpb25zPy5VST8uSGlkZGVuKSwgdHJ1ZSkpKSxcblx0XHRcdFx0ZW5hYmxlZDogZ2V0RW5hYmxlZEZvckFubm90YXRpb25BY3Rpb24oY29udmVydGVyQ29udGV4dCwgZGF0YUZpZWxkLkFjdGlvblRhcmdldCksXG5cdFx0XHRcdGlzTmF2aWdhYmxlOiB0cnVlXG5cdFx0XHR9IGFzIEFubm90YXRpb25BY3Rpb24pO1xuXHRcdH0pO1xuXG5cdC8vIFRoZW4gdGhlIGNhbmNlbCBhY3Rpb24gaWYgaXQgZXhpc3RzXG5cdGlmIChiQ29uZGl0aW9uQ2FuY2VsKSB7XG5cdFx0Zm9vdGVyQWN0aW9ucy5wdXNoKHtcblx0XHRcdHR5cGU6IEFjdGlvblR5cGUuU2Vjb25kYXJ5LFxuXHRcdFx0a2V5OiBcIkNhbmNlbEFjdGlvblwiLFxuXHRcdFx0cG9zaXRpb246IHsgcGxhY2VtZW50OiBQbGFjZW1lbnQuRW5kIH1cblx0XHR9KTtcblx0fVxuXHRyZXR1cm4gZm9vdGVyQWN0aW9ucztcbn1cbiJdfQ==