@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
@@ -736,6 +736,92 @@ sap.ui.define(["sap/fe/core/TransactionHelper", "sap/fe/core/BusyLocker", "sap/f
736
736
  }
737
737
  });
738
738
  });
739
+ describe("deleteDocument(): warning text", function () {
740
+ var oTransactionHelper;
741
+ var vContexts;
742
+ var oGetProgrammingModelMock;
743
+ var oDeleteDraftMock;
744
+ var oGetTranslatedTextMock;
745
+ var mParams;
746
+ var messageHandler;
747
+
748
+ function createContext(salesOrder) {
749
+ return {
750
+ getObject: function () {
751
+ return {
752
+ SalesOrder: salesOrder
753
+ };
754
+ }
755
+ };
756
+ }
757
+
758
+ beforeEach(function () {
759
+ oTransactionHelper = new TransactionHelper(oAppComponent, oLockObject);
760
+ oGetProgrammingModelMock = jest.spyOn(oTransactionHelper, "getProgrammingModel");
761
+ oGetProgrammingModelMock.mockReturnValue("Draft");
762
+ messageHandler = {
763
+ showMessageDialog: function () {
764
+ return Promise.resolve();
765
+ },
766
+ showMessages: function () {
767
+ return Promise.resolve();
768
+ }
769
+ };
770
+ oDeleteDraftMock = jest.spyOn(draft, "deleteDraft");
771
+ oDeleteDraftMock.mockResolvedValue();
772
+ oGetTranslatedTextMock = jest.spyOn(CommonUtils, "getTranslatedText");
773
+ oGetTranslatedTextMock.mockReturnValue("");
774
+ });
775
+ afterEach(function () {
776
+ jest.restoreAllMocks();
777
+ });
778
+ it("Warning text when only title is available", function () {
779
+ try {
780
+ vContexts = [createContext(2915717)];
781
+ mParams = {
782
+ noDialog: true,
783
+ title: "2915717",
784
+ entitySetName: "SalesOrderManage"
785
+ };
786
+ return Promise.resolve(oTransactionHelper.deleteDocument(vContexts, mParams, {}, messageHandler)).then(function () {
787
+ expect(oGetTranslatedTextMock).toBeCalledWith("C_TRANSACTION_HELPER_OBJECT_PAGE_CONFIRM_DELETE_WITH_OBJECTINFO", {}, ["2915717", ""], "SalesOrderManage");
788
+ });
789
+ } catch (e) {
790
+ return Promise.reject(e);
791
+ }
792
+ });
793
+ it("Warning text when only description is available", function () {
794
+ try {
795
+ vContexts = [createContext(2915717)];
796
+ mParams = {
797
+ noDialog: true,
798
+ description: "SalesOrder",
799
+ entitySetName: "SalesOrderManage"
800
+ };
801
+ return Promise.resolve(oTransactionHelper.deleteDocument(vContexts, mParams, {}, messageHandler)).then(function () {
802
+ expect(oGetTranslatedTextMock).toBeCalledWith("C_TRANSACTION_HELPER_OBJECT_PAGE_CONFIRM_DELETE_WITH_OBJECTTITLE_SINGULAR", {});
803
+ });
804
+ } catch (e) {
805
+ return Promise.reject(e);
806
+ }
807
+ });
808
+ it("Warning text when both description and title is available", function () {
809
+ try {
810
+ vContexts = [createContext(2915717)];
811
+ mParams = {
812
+ noDialog: true,
813
+ title: "2915717",
814
+ description: "SalesOrder",
815
+ entitySetName: "SalesOrderManage"
816
+ };
817
+ return Promise.resolve(oTransactionHelper.deleteDocument(vContexts, mParams, {}, messageHandler)).then(function () {
818
+ expect(oGetTranslatedTextMock).toBeCalledWith("C_TRANSACTION_HELPER_OBJECT_PAGE_CONFIRM_DELETE_WITH_OBJECTINFO", {}, ["2915717", "SalesOrder"], "SalesOrderManage");
819
+ });
820
+ } catch (e) {
821
+ return Promise.reject(e);
822
+ }
823
+ });
824
+ });
739
825
  });
740
826
  }, false);
741
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIlRyYW5zYWN0aW9uSGVscGVyLnNwZWMudHMiXSwibmFtZXMiOlsiYm9keSIsInJlY292ZXIiLCJyZXN1bHQiLCJlIiwidGhlbiIsIm9BcHBDb21wb25lbnQiLCJvTG9ja09iamVjdCIsImRlc2NyaWJlIiwib1RyYW5zYWN0aW9uSGVscGVyIiwiVHJhbnNhY3Rpb25IZWxwZXIiLCJhTmV3QWN0aW9uVGVzdERhdGEiLCJzRGVzY3JpcHRpb24iLCJvU3RhcnR1cFBhcmFtZXRlcnMiLCJzQ3JlYXRlSGFzaCIsIm9NZXRhTW9kZWwiLCJzTWV0YVBhdGgiLCJzRXhwZWN0ZWRSZXN1bHQiLCJ1bmRlZmluZWQiLCJzRGVzY09uU3VjY2VzcyIsInByZWZlcnJlZE1vZGUiLCJnZXRPYmplY3QiLCJmb3JFYWNoIiwib1Rlc3REYXRhIiwiaXQiLCJzUmVzdWx0IiwiX2dldE5ld0FjdGlvbiIsImV4cGVjdCIsInRvRXF1YWwiLCJhVGVzdHMiLCJ0aXRsZSIsInNOZXdBY3Rpb24iLCJvUmVzb3VyY2VCdW5kbGVDb3JlIiwiZXhwZWN0ZWQiLCJnZXRUZXh0Iiwic0Fubm90YXRpb24iLCIkVHlwZSIsIkFjdGlvbiIsIkxhYmVsIiwiTmF2aWdhdGlvbkF2YWlsYWJsZSIsIlJlcXVpcmVzQ29udGV4dCIsIlNlbWFudGljT2JqZWN0IiwiVmFsdWUiLCIkUGF0aCIsIm9UZXN0IiwiX2dldFNwZWNpZmljQ3JlYXRlQWN0aW9uRGlhbG9nTGFiZWwiLCJ0b0JlIiwib0NvbnRleHQiLCJvTG9ja01vY2siLCJvVW5sb2NrTW9jayIsIm9HZXRQcm9ncmFtbWluZ01vZGVsTW9jayIsIm9PbkJlZm9yZURpc2NhcmRNb2NrIiwib0RlbGV0ZURyYWZ0TW9jayIsIm9EaXNjYXJkRG9jdW1lbnRNb2NrIiwibVBhcmFtcyIsIm1lc3NhZ2VIYW5kbGVyIiwiYmVmb3JlRWFjaCIsImdldE1vZGVsIiwiYmluZENvbnRleHQiLCJnZXRCb3VuZENvbnRleHQiLCJyZXF1ZXN0T2JqZWN0IiwiUHJvbWlzZSIsInJlc29sdmUiLCJnZXRQYXRoIiwiaGFzUGVuZGluZ0NoYW5nZXMiLCJnZXRCaW5kaW5nIiwicmVzZXRDaGFuZ2VzIiwicmVmcmVzaCIsImplc3QiLCJzcHlPbiIsIkJ1c3lMb2NrZXIiLCJtb2NrSW1wbGVtZW50YXRpb24iLCJjYW5jZWxCdXR0b24iLCJza2lwRGlzY2FyZFBvcG92ZXIiLCJiZWZvcmVDYW5jZWxDYWxsQmFjayIsInJlbW92ZVRyYW5zaXRpb25NZXNzYWdlcyIsInNob3dNZXNzYWdlcyIsImRyYWZ0Iiwic3RpY2t5IiwiYWZ0ZXJFYWNoIiwicmVzdG9yZUFsbE1vY2tzIiwiY2FuY2VsRG9jdW1lbnQiLCJ0b0hhdmVCZWVuQ2FsbGVkVGltZXMiLCJ0b0JlQ2FsbGVkV2l0aCIsInJlamVjdCIsInZDb250ZXh0cyIsIm9PbkJlZm9yZURlbGV0ZU1vY2siLCJvRmluZEFjdGl2ZURyYWZ0Um9vdENvbnRleHRzTW9jayIsIm9BZnRlckRlbGV0ZVByb2Nlc3NNb2NrIiwib0dldFRyYW5zbGF0ZWRUZXh0TW9jayIsImNyZWF0ZUNvbnRleHQiLCJzYWxlc09yZGVyIiwiU2FsZXNPcmRlciIsIm1vY2tSZXR1cm5WYWx1ZSIsInVuU2F2ZWRDb250ZXh0cyIsImxvY2tlZENvbnRleHRzIiwiZWRpdEZsb3ciLCJiYXNlIiwib25CZWZvcmVEZWxldGUiLCJzaG93TWVzc2FnZURpYWxvZyIsIm1vY2tSZXNvbHZlZFZhbHVlIiwiQ29tbW9uVXRpbHMiLCJudW1iZXJPZlNlbGVjdGVkQ29udGV4dHMiLCJub0RpYWxvZyIsImJlZm9yZURlbGV0ZUNhbGxCYWNrIiwiZGVsZXRlRG9jdW1lbnQiLCJvTWFpbkxpc3RCaW5kaW5nIiwib09uQmVmb3JlQ3JlYXRlTW9jayIsIm9BcHBDb21wb25lbnRNb2NrIiwib01vZGVsSGVscGVyTW9jayIsIm9DYWxsRnVuY3Rpb25JbXBvcnRNb2NrIiwib09uQWZ0ZXJDcmVhdGVDb21wbGV0aW9uTW9jayIsIm9DcmVhdGVNb2NrIiwibW9ja01vZGVsIiwiTW9ja01vZGVsIiwibW9ja01ldGFNb2RlbCIsIk1vY2tNZXRhTW9kZWwiLCJzZXRNZXRhTW9kZWwiLCJnZXRIZWFkZXJDb250ZXh0IiwiaXNSZWxhdGl2ZSIsImNyZWF0ZSIsImdldENvbXBvbmVudERhdGEiLCJnZXRSb3V0ZXJQcm94eSIsImdldEhhc2giLCJNb2RlbEhlbHBlciIsIm9wZXJhdGlvbnMiLCJjcmVhdGlvbk1vZGUiLCJiZWZvcmVDcmVhdGVDYWxsQmFjayIsImNyZWF0ZURvY3VtZW50Il0sIm1hcHBpbmdzIjoiO0FBQUE7QUFDQTtBQUNBOzs7Ozs7O0FBZ2pCTyxrQkFBZ0JBLElBQWhCLEVBQXNCQyxPQUF0QixFQUErQjtBQUNyQyxRQUFJO0FBQ0gsVUFBSUMsTUFBTSxHQUFHRixJQUFJLEVBQWpCO0FBQ0EsS0FGRCxDQUVFLE9BQU1HLENBQU4sRUFBUztBQUNWLGFBQU9GLE9BQU8sQ0FBQ0UsQ0FBRCxDQUFkO0FBQ0E7O0FBQ0QsUUFBSUQsTUFBTSxJQUFJQSxNQUFNLENBQUNFLElBQXJCLEVBQTJCO0FBQzFCLGFBQU9GLE1BQU0sQ0FBQ0UsSUFBUCxDQUFZLEtBQUssQ0FBakIsRUFBb0JILE9BQXBCLENBQVA7QUFDQTs7QUFDRCxXQUFPQyxNQUFQO0FBQ0E7O0FBbmpCRCxNQUFNRyxhQUFrQixHQUFHLEVBQTNCO0FBQ0EsTUFBTUMsV0FBZ0IsR0FBRyxFQUF6QjtBQUNBQyxFQUFBQSxRQUFRLENBQUMsbUJBQUQsRUFBc0IsWUFBTTtBQUNuQyxRQUFNQyxrQkFBa0IsR0FBRyxJQUFJQyxpQkFBSixDQUFzQkosYUFBdEIsRUFBcUNDLFdBQXJDLENBQTNCO0FBRUFDLElBQUFBLFFBQVEsQ0FBQyxtQkFBRCxFQUFzQixZQUFNO0FBQ25DLFVBQU1HLGtCQUFrQixHQUFHLENBQzFCO0FBQ0NDLFFBQUFBLFlBQVksRUFBRSxzQkFEZjtBQUVDQyxRQUFBQSxrQkFBa0IsRUFBRSxFQUZyQjtBQUdDQyxRQUFBQSxXQUFXLEVBQUUsRUFIZDtBQUlDQyxRQUFBQSxVQUFVLEVBQUUsRUFKYjtBQUtDQyxRQUFBQSxTQUFT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U0FUQztBQUFBO0FBQUE7QUFBQSxRQUFGO0FBVUExRCxNQUFBQSxFQUFFLENBQUMsNEJBQUQ7QUFBQSxZQUEyQztBQUFBLDBDQUN4QztBQUNIbUYsWUFBQUEsbUJBQW1CLEdBQUd2QyxJQUFJLENBQUNDLEtBQUwsQ0FBV2YsT0FBWCxFQUFvQixzQkFBcEIsQ0FBdEI7QUFDQXFELFlBQUFBLG1CQUFtQixDQUFDUCxpQkFBcEI7QUFDQVksWUFBQUEsV0FBVyxHQUFHNUMsSUFBSSxDQUFDQyxLQUFMLENBQVdxQyxnQkFBWCxFQUE2QixRQUE3QixDQUFkO0FBQ0FNLFlBQUFBLFdBQVcsQ0FBQ1osaUJBQVo7QUFKRyxtQ0FLRzNGLGtCQUFrQixDQUFDdUgsY0FBbkIsQ0FBa0N0QixnQkFBbEMsRUFBb0RwRCxPQUFwRCxFQUE2RCxFQUE3RCxFQUFpRUMsY0FBakUsRUFBaUYsS0FBakYsRUFBd0ZyQyxTQUF4RixDQUxIO0FBTUgsV0FQMkMsY0FPcEM7QUFDUFMsWUFBQUEsTUFBTSxDQUFDZ0YsbUJBQUQsQ0FBTixDQUE0QnpCLHFCQUE1QixDQUFrRCxDQUFsRDtBQUNBdkQsWUFBQUEsTUFBTSxDQUFDZ0YsbUJBQUQsQ0FBTixDQUE0QnhCLGNBQTVCLENBQTJDO0FBQUUsNkJBQWU7QUFBakIsYUFBM0M7QUFDQXhELFlBQUFBLE1BQU0sQ0FBQ3FGLFdBQUQsQ0FBTixDQUFvQjlCLHFCQUFwQixDQUEwQyxDQUExQztBQUNBLFdBWDJDOztBQUFBO0FBWTVDLFNBWkM7QUFBQTtBQUFBO0FBQUEsUUFBRjtBQWFBLEtBaEhPLENBQVI7QUFpSEEsR0FuckJPLENBQVIiLCJzb3VyY2VSb290IjoiLiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBUcmFuc2FjdGlvbkhlbHBlciBmcm9tIFwic2FwL2ZlL2NvcmUvVHJhbnNhY3Rpb25IZWxwZXJcIjtcbmltcG9ydCBCdXN5TG9ja2VyIGZyb20gXCJzYXAvZmUvY29yZS9CdXN5TG9ja2VyXCI7XG5pbXBvcnQgZHJhZnQgZnJvbSBcInNhcC9mZS9jb3JlL2FjdGlvbnMvZHJhZnRcIjtcbmltcG9ydCBzdGlja3kgZnJvbSBcInNhcC9mZS9jb3JlL2FjdGlvbnMvc3RpY2t5XCI7XG5pbXBvcnQgQ29tbW9uVXRpbHMgZnJvbSBcInNhcC9mZS9jb3JlL0NvbW1vblV0aWxzXCI7XG5pbXBvcnQgeyBNb2NrTWV0YU1vZGVsLCBNb2NrTW9kZWwgfSBmcm9tIFwic2FwL2ZlL3Rlc3QvVUk1TW9ja0hlbHBlclwiO1xuaW1wb3J0IE1vZGVsSGVscGVyIGZyb20gXCJzYXAvZmUvY29yZS9oZWxwZXJzL01vZGVsSGVscGVyXCI7XG5pbXBvcnQgb3BlcmF0aW9ucyBmcm9tIFwic2FwL2ZlL2NvcmUvYWN0aW9ucy9vcGVyYXRpb25zXCI7XG5cbmNvbnN0IG9BcHBDb21wb25lbnQ6IGFueSA9IHt9O1xuY29uc3Qgb0xvY2tPYmplY3Q6IGFueSA9IHt9O1xuZGVzY3JpYmUoXCJUcmFuc2FjdGlvbkhlbHBlclwiLCAoKSA9PiB7XG5cdGNvbnN0IG9UcmFuc2FjdGlvbkhlbHBlciA9IG5ldyBUcmFuc2FjdGlvbkhlbHBlcihvQXBwQ29tcG9uZW50LCBvTG9ja09iamVjdCk7XG5cblx0ZGVzY3JpYmUoXCJfZ2V0TmV3QWN0aW9uKCk6IFwiLCAoKSA9PiB7XG5cdFx0Y29uc3QgYU5ld0FjdGlvblRlc3REYXRhID0gW1xuXHRcdFx0e1xuXHRcdFx0XHRzRGVzY3JpcHRpb246IFwiVGVzdGluZyBlbXB0eSB2YWx1ZXNcIixcblx0XHRcdFx0b1N0YXJ0dXBQYXJhbWV0ZXJzOiB7fSxcblx0XHRcdFx0c0NyZWF0ZUhhc2g6IFwiXCIsXG5cdFx0XHRcdG9NZXRhTW9kZWw6IHt9LFxuXHRcdFx0XHRzTWV0YVBhdGg6IFwiXCIsXG5cdFx0XHRcdHNFeHBlY3RlZFJlc3VsdDogdW5kZWZpbmVkLFxuXHRcdFx0XHRzRGVzY09uU3VjY2VzczogXCJlbXB0eSBwYXJhbWV0ZXJzOiB1bmRlZmluZWQgcmVzdWx0XCJcblx0XHRcdH0sXG5cdFx0XHR7XG5cdFx0XHRcdHNEZXNjcmlwdGlvbjogXCJNaXNzaW5nIE1ldGFNb2RlbFwiLFxuXHRcdFx0XHRvU3RhcnR1cFBhcmFtZXRlcnM6IHtcblx0XHRcdFx0XHRwcmVmZXJyZWRNb2RlOiBbXCJjcmVhdGVXaXRoOmNvbS5jX3NhbGVzb3JkZXJtYW5hZ2Vfc2QuQ3JlYXRlRnJvbUN1c3RvbWVyXCJdXG5cdFx0XHRcdH0sXG5cdFx0XHRcdHNDcmVhdGVIYXNoOiBcIlwiLFxuXHRcdFx0XHRvTWV0YU1vZGVsOiB7fSxcblx0XHRcdFx0c01ldGFQYXRoOiBcIlwiLFxuXHRcdFx0XHRzRXhwZWN0ZWRSZXN1bHQ6IHVuZGVmaW5lZCxcblx0XHRcdFx0c0Rlc2NPblN1Y2Nlc3M6IFwibWlzc2luZyBNZXRhTW9kZWw6IHVuZGVmaW5lZCByZXN1bHRcIlxuXHRcdFx0fSxcblx0XHRcdHtcblx0XHRcdFx0c0Rlc2NyaXB0aW9uOiBcInZhbGlkIGZ1bmN0aW9uIGNhbGxcIixcblx0XHRcdFx0b1N0YXJ0dXBQYXJhbWV0ZXJzOiB7XG5cdFx0XHRcdFx0cHJlZmVycmVkTW9kZTogW1wiY3JlYXRlV2l0aDpjb20uY19zYWxlc29yZGVybWFuYWdlX3NkLkNyZWF0ZUZyb21DdXN0b21lclwiXVxuXHRcdFx0XHR9LFxuXHRcdFx0XHRzQ3JlYXRlSGFzaDogXCJTYWxlc09yZGVyTWFuYWdlKC4uLik/aS1hY3Rpb249Y3JlYXRlV2l0aFwiLFxuXHRcdFx0XHRvTWV0YU1vZGVsOiB7XG5cdFx0XHRcdFx0Z2V0T2JqZWN0OiBmdW5jdGlvbigpIHtcblx0XHRcdFx0XHRcdHJldHVybiBcIk5ld0FjdGlvbiBmdW5jdGlvblwiO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSxcblx0XHRcdFx0c01ldGFQYXRoOiBcIi9TYWxlc09yZGVyTWFuYWdlXCIsXG5cdFx0XHRcdHNFeHBlY3RlZFJlc3VsdDogXCJjb20uY19zYWxlc29yZGVybWFuYWdlX3NkLkNyZWF0ZUZyb21DdXN0b21lclwiLFxuXHRcdFx0XHRzRGVzY09uU3VjY2VzczogXCJ2YWxpZCBwYXJhbWV0ZXJzOiBmdW5jdGlvbiBmb3IgQ3JlYXRlV2l0aCByZXR1cm5lZFwiXG5cdFx0XHR9LFxuXHRcdFx0e1xuXHRcdFx0XHRzRGVzY3JpcHRpb246IFwidmFsaWQgZnVuY3Rpb24gY2FsbCBmb3IgTmV3QWN0aW9uXCIsXG5cdFx0XHRcdG9TdGFydHVwUGFyYW1ldGVyczoge1xuXHRcdFx0XHRcdHByZWZlcnJlZE1vZGU6IFtcImNyZWF0ZVwiXVxuXHRcdFx0XHR9LFxuXHRcdFx0XHRzQ3JlYXRlSGFzaDogXCJTYWxlc09yZGVyTWFuYWdlKC4uLik/aS1hY3Rpb249Y3JlYXRlXCIsXG5cdFx0XHRcdG9NZXRhTW9kZWw6IHtcblx0XHRcdFx0XHRnZXRPYmplY3Q6IGZ1bmN0aW9uKCkge1xuXHRcdFx0XHRcdFx0cmV0dXJuIFwiTmV3QWN0aW9uIGZ1bmN0aW9uXCI7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9LFxuXHRcdFx0XHRzTWV0YVBhdGg6IFwiL1NhbGVzT3JkZXJNYW5hZ2VcIixcblx0XHRcdFx0c0V4cGVjdGVkUmVzdWx0OiBcIk5ld0FjdGlvbiBmdW5jdGlvblwiLFxuXHRcdFx0XHRzRGVzY09uU3VjY2VzczogXCJ2YWxpZCBwYXJhbWV0ZXJzOiBmdW5jdGlvbiBmb3IgQ3JlYXRlIGZyb20gTmV3QWN0aW9uIHJldHVybmVkXCJcblx0XHRcdH1cblx0XHRdO1xuXG5cdFx0YU5ld0FjdGlvblRlc3REYXRhLmZvckVhY2gob1Rlc3REYXRhID0+IHtcblx0XHRcdGl0KFxuXHRcdFx0XHRvVGVzdERhdGEuc0Rlc2NyaXB0aW9uLFxuXHRcdFx0XHR7XG5cdFx0XHRcdFx0XCJyZWZlcmVuY2VzXCI6IFtcblx0XHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdFx0XCJ0eXBlXCI6IFwiXCIsXG5cdFx0XHRcdFx0XHRcdFwiSURcIjogXCJcIlxuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdF1cblx0XHRcdFx0fSxcblx0XHRcdFx0ZnVuY3Rpb24oKSB7XG5cdFx0XHRcdFx0Y29uc3Qgc1Jlc3VsdCA9IG9UcmFuc2FjdGlvbkhlbHBlci5fZ2V0TmV3QWN0aW9uKFxuXHRcdFx0XHRcdFx0b1Rlc3REYXRhLm9TdGFydHVwUGFyYW1ldGVycyxcblx0XHRcdFx0XHRcdG9UZXN0RGF0YS5zQ3JlYXRlSGFzaCxcblx0XHRcdFx0XHRcdG9UZXN0RGF0YS5vTWV0YU1vZGVsIGFzIGFueSxcblx0XHRcdFx0XHRcdG9UZXN0RGF0YS5zTWV0YVBhdGhcblx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdGV4cGVjdChzUmVzdWx0KS50b0VxdWFsKG9UZXN0RGF0YS5zRXhwZWN0ZWRSZXN1bHQpO1xuXHRcdFx0XHR9XG5cdFx0XHQpO1xuXHRcdH0pO1xuXHR9KTtcblxuXHRkZXNjcmliZShcIl9nZXRTcGVjaWZpY0NyZWF0ZUFjdGlvbkRpYWxvZ0xhYmVsKCk6IFwiLCAoKSA9PiB7XG5cdFx0Y29uc3QgYVRlc3RzID0gW1xuXHRcdFx0e1xuXHRcdFx0XHR0aXRsZTogXCJhbGwgZW1wdHkgb3IgdW5kZWZpbmVkXCIsXG5cdFx0XHRcdG9NZXRhTW9kZWw6IHVuZGVmaW5lZCxcblx0XHRcdFx0c01ldGFQYXRoOiBcIlwiLFxuXHRcdFx0XHRzTmV3QWN0aW9uOiBcIlwiLFxuXHRcdFx0XHRvUmVzb3VyY2VCdW5kbGVDb3JlOiB1bmRlZmluZWQsXG5cdFx0XHRcdGV4cGVjdGVkOiB1bmRlZmluZWRcblx0XHRcdH0sXG5cdFx0XHR7XG5cdFx0XHRcdHRpdGxlOiBcIndpdGggZW1wdHkgTWV0YU1vZGVsIGFuZCB2YWxpZCBSZXNvdXJjZUJ1bmRsZVwiLFxuXHRcdFx0XHRvTWV0YU1vZGVsOiB1bmRlZmluZWQsXG5cdFx0XHRcdHNNZXRhUGF0aDogXCJcIixcblx0XHRcdFx0c05ld0FjdGlvbjogXCJcIixcblx0XHRcdFx0b1Jlc291cmNlQnVuZGxlQ29yZToge1xuXHRcdFx0XHRcdGdldFRleHQ6IGZ1bmN0aW9uKCkge1xuXHRcdFx0XHRcdFx0cmV0dXJuIFwiQ3JlYXRlXCI7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9LFxuXHRcdFx0XHRleHBlY3RlZDogXCJDcmVhdGVcIlxuXHRcdFx0fSxcblx0XHRcdHtcblx0XHRcdFx0dGl0bGU6IFwiTWV0YU1vZGVsIHJldHVybnMgdW5kZWZpbmVkXCIsXG5cdFx0XHRcdG9NZXRhTW9kZWw6IHtcblx0XHRcdFx0XHRnZXRPYmplY3Q6IGZ1bmN0aW9uKCkge1xuXHRcdFx0XHRcdFx0cmV0dXJuIHVuZGVmaW5lZDtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0sXG5cdFx0XHRcdHNNZXRhUGF0aDogXCJcIixcblx0XHRcdFx0c05ld0FjdGlvbjogXCJcIixcblx0XHRcdFx0b1Jlc291cmNlQnVuZGxlQ29yZToge1xuXHRcdFx0XHRcdGdldFRleHQ6IGZ1bmN0aW9uKCkge1xuXHRcdFx0XHRcdFx0cmV0dXJuIFwiQ3JlYXRlXCI7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9LFxuXHRcdFx0XHRleHBlY3RlZDogXCJDcmVhdGVcIlxuXHRcdFx0fSxcblx0XHRcdHtcblx0XHRcdFx0dGl0bGU6IFwiTWV0YU1vZGVsIHJldHVybnMgbGFiZWwgZm9yIEFjdGlvblwiLFxuXHRcdFx0XHRvTWV0YU1vZGVsOiB7XG5cdFx0XHRcdFx0Z2V0T2JqZWN0OiBmdW5jdGlvbihzQW5ub3RhdGlvbjogc3RyaW5nKSB7XG5cdFx0XHRcdFx0XHRyZXR1cm4gc0Fubm90YXRpb24gPT09XG5cdFx0XHRcdFx0XHRcdFwiL1NhbGVzT3JkZXJNYW5hZ2UvY29tLmNfc2FsZXNvcmRlcm1hbmFnZV9zZC5DcmVhdGVGcm9tQ3VzdG9tZXJAY29tLnNhcC52b2NhYnVsYXJpZXMuQ29tbW9uLnYxLkxhYmVsXCJcblx0XHRcdFx0XHRcdFx0PyBcIkFjdGlvbjogQ3JlYXRlIGZyb20gQ3VzdG9tZXJcIlxuXHRcdFx0XHRcdFx0XHQ6IHVuZGVmaW5lZDtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0sXG5cdFx0XHRcdHNNZXRhUGF0aDogXCIvU2FsZXNPcmRlck1hbmFnZVwiLFxuXHRcdFx0XHRzTmV3QWN0aW9uOiBcImNvbS5jX3NhbGVzb3JkZXJtYW5hZ2Vfc2QuQ3JlYXRlRnJvbUN1c3RvbWVyXCIsXG5cdFx0XHRcdG9SZXNvdXJjZUJ1bmRsZUNvcmU6IHtcblx0XHRcdFx0XHRnZXRUZXh0OiBmdW5jdGlvbigpIHtcblx0XHRcdFx0XHRcdHJldHVybiBcIkNyZWF0ZVwiO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSxcblx0XHRcdFx0ZXhwZWN0ZWQ6IFwiQWN0aW9uOiBDcmVhdGUgZnJvbSBDdXN0b21lclwiXG5cdFx0XHR9LFxuXHRcdFx0e1xuXHRcdFx0XHR0aXRsZTogXCJMaW5lSXRlbSBhbmQgQWN0aW9uIGxhYmVsIGF2YWlsYWJsZSAtLT4gTGluZUl0ZW0gaGFzIHByaW9yaXR5XCIsXG5cdFx0XHRcdG9NZXRhTW9kZWw6IHtcblx0XHRcdFx0XHRnZXRPYmplY3Q6IGZ1bmN0aW9uKHNBbm5vdGF0aW9uOiBzdHJpbmcpIHtcblx0XHRcdFx0XHRcdHN3aXRjaCAoc0Fubm90YXRpb24pIHtcblx0XHRcdFx0XHRcdFx0Y2FzZSBcIi9TYWxlc09yZGVyTWFuYWdlL0Bjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5MaW5lSXRlbVwiOlxuXHRcdFx0XHRcdFx0XHRcdHJldHVybiBbXG5cdFx0XHRcdFx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdCRUeXBlOiBcImNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLkRhdGFGaWVsZEZvckFjdGlvblwiLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRBY3Rpb246IFwiY29tLmNfc2FsZXNvcmRlcm1hbmFnZV9zZC5DcmVhdGVXaXRoU2FsZXNPcmRlclR5cGVcIixcblx0XHRcdFx0XHRcdFx0XHRcdFx0TGFiZWw6IFwiQm91bmQgQWN0aW9uIHdpdGggcGFyYW1zXCJcblx0XHRcdFx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdCRUeXBlOiBcImNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLkRhdGFGaWVsZEZvckludGVudEJhc2VkTmF2aWdhdGlvblwiLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRBY3Rpb246IFwibWFuYWdlSW5saW5lXCIsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdExhYmVsOiBcIklCTlwiLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHROYXZpZ2F0aW9uQXZhaWxhYmxlOiB0cnVlLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRSZXF1aXJlc0NvbnRleHQ6IGZhbHNlLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRTZW1hbnRpY09iamVjdDogXCJTYWxlc09yZGVyXCJcblx0XHRcdFx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdCRUeXBlOiBcImNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLkRhdGFGaWVsZEZvckFjdGlvblwiLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRBY3Rpb246IFwiY29tLmNfc2FsZXNvcmRlcm1hbmFnZV9zZC5DcmVhdGVGcm9tQ3VzdG9tZXJcIixcblx0XHRcdFx0XHRcdFx0XHRcdFx0TGFiZWw6IFwiTGluZUl0ZW06IENyZWF0ZSBmcm9tIEN1c3RvbWVyXCJcblx0XHRcdFx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdCRUeXBlOiBcImNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLkRhdGFGaWVsZFwiLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRWYWx1ZTogeyAkUGF0aDogXCJJRFwiIH1cblx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRdO1xuXHRcdFx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdFx0XHRjYXNlIFwiL1NhbGVzT3JkZXJNYW5hZ2UvY29tLmNfc2FsZXNvcmRlcm1hbmFnZV9zZC5DcmVhdGVGcm9tQ3VzdG9tZXJAY29tLnNhcC52b2NhYnVsYXJpZXMuQ29tbW9uLnYxLkxhYmVsXCI6XG5cdFx0XHRcdFx0XHRcdFx0cmV0dXJuIFwiQWN0aW9uOiBDcmVhdGUgZnJvbSBDdXN0b21lclwiO1xuXHRcdFx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdFx0XHRkZWZhdWx0OlxuXHRcdFx0XHRcdFx0XHRcdHJldHVybiB1bmRlZmluZWQ7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9LFxuXHRcdFx0XHRzTWV0YVBhdGg6IFwiL1NhbGVzT3JkZXJNYW5hZ2VcIixcblx0XHRcdFx0c05ld0FjdGlvbjogXCJjb20uY19zYWxlc29yZGVybWFuYWdlX3NkLkNyZWF0ZUZyb21DdXN0b21lclwiLFxuXHRcdFx0XHRvUmVzb3VyY2VCdW5kbGVDb3JlOiB7XG5cdFx0XHRcdFx0Z2V0VGV4dDogZnVuY3Rpb24oKSB7XG5cdFx0XHRcdFx0XHRyZXR1cm4gXCJDcmVhdGVcIjtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0sXG5cdFx0XHRcdGV4cGVjdGVkOiBcIkxpbmVJdGVtOiBDcmVhdGUgZnJvbSBDdXN0b21lclwiXG5cdFx0XHR9LFxuXHRcdFx0e1xuXHRcdFx0XHR0aXRsZTogXCJMaW5lSXRlbSBhbm5vdGF0aW9uIGhhcyBhZGRpdGlvbmFsIGNvbGxlY3Rpb24gaW4gYnJhY2tldHNcIixcblx0XHRcdFx0b01ldGFNb2RlbDoge1xuXHRcdFx0XHRcdGdldE9iamVjdDogZnVuY3Rpb24oc0Fubm90YXRpb246IHN0cmluZykge1xuXHRcdFx0XHRcdFx0c3dpdGNoIChzQW5ub3RhdGlvbikge1xuXHRcdFx0XHRcdFx0XHRjYXNlIFwiL1NhbGVzT3JkZXJNYW5hZ2UvQGNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLkxpbmVJdGVtXCI6XG5cdFx0XHRcdFx0XHRcdFx0cmV0dXJuIFtcblx0XHRcdFx0XHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0JFR5cGU6IFwiY29tLnNhcC52b2NhYnVsYXJpZXMuVUkudjEuRGF0YUZpZWxkRm9yQWN0aW9uXCIsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdEFjdGlvbjogXCJjb20uY19zYWxlc29yZGVybWFuYWdlX3NkLkNyZWF0ZVdpdGhTYWxlc09yZGVyVHlwZVwiLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRMYWJlbDogXCJCb3VuZCBBY3Rpb24gd2l0aCBwYXJhbXNcIlxuXHRcdFx0XHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0JFR5cGU6IFwiY29tLnNhcC52b2NhYnVsYXJpZXMuVUkudjEuRGF0YUZpZWxkXCIsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdExhYmVsOiBcIm5vIGFjdGlvbiBhdmFpbGFibGVcIixcblx0XHRcdFx0XHRcdFx0XHRcdFx0VmFsdWU6IHsgJFBhdGg6IFwiTk9BQ1RJT05cIiB9XG5cdFx0XHRcdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHRcdFx0XHQkVHlwZTogXCJjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5EYXRhRmllbGRGb3JJbnRlbnRCYXNlZE5hdmlnYXRpb25cIixcblx0XHRcdFx0XHRcdFx0XHRcdFx0QWN0aW9uOiBcIm1hbmFnZUlubGluZVwiLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRMYWJlbDogXCJJQk5cIixcblx0XHRcdFx0XHRcdFx0XHRcdFx0TmF2aWdhdGlvbkF2YWlsYWJsZTogdHJ1ZSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0UmVxdWlyZXNDb250ZXh0OiBmYWxzZSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0U2VtYW50aWNPYmplY3Q6IFwiU2FsZXNPcmRlclwiXG5cdFx0XHRcdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHRcdFx0XHQkVHlwZTogXCJjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5EYXRhRmllbGRGb3JBY3Rpb25cIixcblx0XHRcdFx0XHRcdFx0XHRcdFx0QWN0aW9uOlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFwiY29tLmNfc2FsZXNvcmRlcm1hbmFnZV9zZC5DcmVhdGVGcm9tQ3VzdG9tZXIoQ29sbGVjdGlvbihjb20uc2FwLmdhdGV3YXkuc3J2ZC5jX3NhbGVzb3JkZXJtYW5hZ2Vfc2QudjAwMDEuU2FsZXNPcmRlck1hbmFnZVR5cGUpKVwiLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRMYWJlbDogXCJMaW5lSXRlbTogQ3JlYXRlIGZyb20gQ3VzdG9tZXJcIlxuXHRcdFx0XHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0JFR5cGU6IFwiY29tLnNhcC52b2NhYnVsYXJpZXMuVUkudjEuRGF0YUZpZWxkXCIsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFZhbHVlOiB7ICRQYXRoOiBcIklEXCIgfVxuXHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdF07XG5cdFx0XHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0XHRcdGNhc2UgXCIvU2FsZXNPcmRlck1hbmFnZS9jb20uY19zYWxlc29yZGVybWFuYWdlX3NkLkNyZWF0ZUZyb21DdXN0b21lckBjb20uc2FwLnZvY2FidWxhcmllcy5Db21tb24udjEuTGFiZWxcIjpcblx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gXCJBY3Rpb246IENyZWF0ZSBmcm9tIEN1c3RvbWVyXCI7XG5cdFx0XHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0XHRcdGRlZmF1bHQ6XG5cdFx0XHRcdFx0XHRcdFx0cmV0dXJuIHVuZGVmaW5lZDtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0sXG5cdFx0XHRcdHNNZXRhUGF0aDogXCIvU2FsZXNPcmRlck1hbmFnZVwiLFxuXHRcdFx0XHRzTmV3QWN0aW9uOiBcImNvbS5jX3NhbGVzb3JkZXJtYW5hZ2Vfc2QuQ3JlYXRlRnJvbUN1c3RvbWVyXCIsXG5cdFx0XHRcdG9SZXNvdXJjZUJ1bmRsZUNvcmU6IHtcblx0XHRcdFx0XHRnZXRUZXh0OiBmdW5jdGlvbigpIHtcblx0XHRcdFx0XHRcdHJldHVybiBcIkNyZWF0ZVwiO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSxcblx0XHRcdFx0ZXhwZWN0ZWQ6IFwiTGluZUl0ZW06IENyZWF0ZSBmcm9tIEN1c3RvbWVyXCJcblx0XHRcdH0sXG5cdFx0XHR7XG5cdFx0XHRcdHRpdGxlOiBcIkxpbmVJdGVtIGFubm90YXRpb24gd2l0aCBzaW1pbGFyIGFjdGlvbiBuYW1lc1wiLFxuXHRcdFx0XHRvTWV0YU1vZGVsOiB7XG5cdFx0XHRcdFx0Z2V0T2JqZWN0OiBmdW5jdGlvbihzQW5ub3RhdGlvbjogc3RyaW5nKSB7XG5cdFx0XHRcdFx0XHRzd2l0Y2ggKHNBbm5vdGF0aW9uKSB7XG5cdFx0XHRcdFx0XHRcdGNhc2UgXCIvU2FsZXNPcmRlck1hbmFnZS9AY29tLnNhcC52b2NhYnVsYXJpZXMuVUkudjEuTGluZUl0ZW1cIjpcblx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gW1xuXHRcdFx0XHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHRcdFx0XHQkVHlwZTogXCJjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5EYXRhRmllbGRGb3JBY3Rpb25cIixcblx0XHRcdFx0XHRcdFx0XHRcdFx0QWN0aW9uOiBcImNvbS5jX3NhbGVzb3JkZXJtYW5hZ2Vfc2QuQ3JlYXRlV2l0aFNhbGVzT3JkZXJUeXBlXCIsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdExhYmVsOiBcIkJvdW5kIEFjdGlvbiB3aXRoIHBhcmFtc1wiXG5cdFx0XHRcdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHRcdFx0XHQkVHlwZTogXCJjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5EYXRhRmllbGRcIixcblx0XHRcdFx0XHRcdFx0XHRcdFx0TGFiZWw6IFwibm8gYWN0aW9uIGF2YWlsYWJsZVwiLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRWYWx1ZTogeyAkUGF0aDogXCJOT0FDVElPTlwiIH1cblx0XHRcdFx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdCRUeXBlOiBcImNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLkRhdGFGaWVsZEZvckFjdGlvblwiLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRBY3Rpb246IFwiY29tLmNfc2FsZXNvcmRlcm1hbmFnZV9zZC5DcmVhdGVGcm9tQ3VzdG9tZXJFeHRlbmRlZFwiLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRMYWJlbDogXCJMaW5lSXRlbTogQ3JlYXRlIGZyb20gQ3VzdG9tZXIgRXh0ZW5kZWRcIlxuXHRcdFx0XHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0JFR5cGU6IFwiY29tLnNhcC52b2NhYnVsYXJpZXMuVUkudjEuRGF0YUZpZWxkRm9ySW50ZW50QmFzZWROYXZpZ2F0aW9uXCIsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdEFjdGlvbjogXCJtYW5hZ2VJbmxpbmVcIixcblx0XHRcdFx0XHRcdFx0XHRcdFx0TGFiZWw6IFwiSUJOXCIsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdE5hdmlnYXRpb25BdmFpbGFibGU6IHRydWUsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFJlcXVpcmVzQ29udGV4dDogZmFsc2UsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFNlbWFudGljT2JqZWN0OiBcIlNhbGVzT3JkZXJcIlxuXHRcdFx0XHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0JFR5cGU6IFwiY29tLnNhcC52b2NhYnVsYXJpZXMuVUkudjEuRGF0YUZpZWxkRm9yQWN0aW9uXCIsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdEFjdGlvbjogXCJjb20uY19zYWxlc29yZGVybWFuYWdlX3NkLkNyZWF0ZUZyb21DdXN0b21lclwiLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRMYWJlbDogXCJMaW5lSXRlbTogQ3JlYXRlIGZyb20gQ3VzdG9tZXJcIlxuXHRcdFx0XHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0JFR5cGU6IFwiY29tLnNhcC52b2NhYnVsYXJpZXMuVUkudjEuRGF0YUZpZWxkXCIsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFZhbHVlOiB7ICRQYXRoOiBcIklEXCIgfVxuXHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdF07XG5cdFx0XHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0XHRcdGNhc2UgXCIvU2FsZXNPcmRlck1hbmFnZS9jb20uY19zYWxlc29yZGVybWFuYWdlX3NkLkNyZWF0ZUZyb21DdXN0b21lckBjb20uc2FwLnZvY2FidWxhcmllcy5Db21tb24udjEuTGFiZWxcIjpcblx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gXCJBY3Rpb246IENyZWF0ZSBmcm9tIEN1c3RvbWVyXCI7XG5cdFx0XHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0XHRcdGRlZmF1bHQ6XG5cdFx0XHRcdFx0XHRcdFx0cmV0dXJuIHVuZGVmaW5lZDtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0sXG5cdFx0XHRcdHNNZXRhUGF0aDogXCIvU2FsZXNPcmRlck1hbmFnZVwiLFxuXHRcdFx0XHRzTmV3QWN0aW9uOiBcImNvbS5jX3NhbGVzb3JkZXJtYW5hZ2Vfc2QuQ3JlYXRlRnJvbUN1c3RvbWVyXCIsXG5cdFx0XHRcdG9SZXNvdXJjZUJ1bmRsZUNvcmU6IHtcblx0XHRcdFx0XHRnZXRUZXh0OiBmdW5jdGlvbigpIHtcblx0XHRcdFx0XHRcdHJldHVybiBcIkNyZWF0ZVwiO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSxcblx0XHRcdFx0ZXhwZWN0ZWQ6IFwiTGluZUl0ZW06IENyZWF0ZSBmcm9tIEN1c3RvbWVyXCJcblx0XHRcdH0sXG5cdFx0XHR7XG5cdFx0XHRcdHRpdGxlOiBcIk1ldGFNb2RlbCBoYXMgbGFiZWwgZm9yIEFjdGlvbiwgYnV0IE1ldGFQYXRoIG1pc3NpbmdcIixcblx0XHRcdFx0b01ldGFNb2RlbDoge1xuXHRcdFx0XHRcdGdldE9iamVjdDogZnVuY3Rpb24oc0Fubm90YXRpb246IHN0cmluZykge1xuXHRcdFx0XHRcdFx0cmV0dXJuIHNBbm5vdGF0aW9uID09PVxuXHRcdFx0XHRcdFx0XHRcIi9TYWxlc09yZGVyTWFuYWdlL2NvbS5jX3NhbGVzb3JkZXJtYW5hZ2Vfc2QuQ3JlYXRlRnJvbUN1c3RvbWVyQGNvbS5zYXAudm9jYWJ1bGFyaWVzLkNvbW1vbi52MS5MYWJlbFwiXG5cdFx0XHRcdFx0XHRcdD8gXCJBY3Rpb246IENyZWF0ZSBieSBDdXN0b21lclwiXG5cdFx0XHRcdFx0XHRcdDogdW5kZWZpbmVkO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSxcblx0XHRcdFx0c01ldGFQYXRoOiBcIlwiLFxuXHRcdFx0XHRzTmV3QWN0aW9uOiBcImNvbS5jX3NhbGVzb3JkZXJtYW5hZ2Vfc2QuQ3JlYXRlRnJvbUN1c3RvbWVyXCIsXG5cdFx0XHRcdG9SZXNvdXJjZUJ1bmRsZUNvcmU6IHtcblx0XHRcdFx0XHRnZXRUZXh0OiBmdW5jdGlvbigpIHtcblx0XHRcdFx0XHRcdHJldHVybiBcIkNyZWF0ZVwiO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSxcblx0XHRcdFx0ZXhwZWN0ZWQ6IFwiQ3JlYXRlXCJcblx0XHRcdH1cblx0XHRdO1xuXG5cdFx0YVRlc3RzLmZvckVhY2gob1Rlc3QgPT4ge1xuXHRcdFx0aXQoXG5cdFx0XHRcdG9UZXN0LnRpdGxlLFxuXHRcdFx0XHR7XG5cdFx0XHRcdFx0XCJyZWZlcmVuY2VzXCI6IFtcblx0XHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdFx0XCJ0eXBlXCI6IFwiQkNQXCIsXG5cdFx0XHRcdFx0XHRcdFwiSURcIjogXCIyMTcwMzI2MzExXCJcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRdXG5cdFx0XHRcdH0sXG5cdFx0XHRcdGZ1bmN0aW9uKCkge1xuXHRcdFx0XHRcdGV4cGVjdChcblx0XHRcdFx0XHRcdG9UcmFuc2FjdGlvbkhlbHBlci5fZ2V0U3BlY2lmaWNDcmVhdGVBY3Rpb25EaWFsb2dMYWJlbChcblx0XHRcdFx0XHRcdFx0b1Rlc3Qub01ldGFNb2RlbCBhcyBhbnksXG5cdFx0XHRcdFx0XHRcdG9UZXN0LnNNZXRhUGF0aCxcblx0XHRcdFx0XHRcdFx0b1Rlc3Quc05ld0FjdGlvbixcblx0XHRcdFx0XHRcdFx0b1Rlc3Qub1Jlc291cmNlQnVuZGxlQ29yZSBhcyBhbnlcblx0XHRcdFx0XHRcdClcblx0XHRcdFx0XHQpLnRvQmUob1Rlc3QuZXhwZWN0ZWQpO1xuXHRcdFx0XHR9XG5cdFx0XHQpO1xuXHRcdH0pO1xuXHR9KTtcblx0ZGVzY3JpYmUoXCJjYW5jZWxEb2N1bWVudCgpOiBvbkJlZm9yZURpc2NhcmRcIiwgKCkgPT4ge1xuXHRcdGxldCBvVHJhbnNhY3Rpb25IZWxwZXI6IFRyYW5zYWN0aW9uSGVscGVyO1xuXHRcdGxldCBvQ29udGV4dDogYW55O1xuXHRcdGxldCBvTG9ja01vY2s7XG5cdFx0bGV0IG9VbmxvY2tNb2NrO1xuXHRcdGxldCBvR2V0UHJvZ3JhbW1pbmdNb2RlbE1vY2s6IGFueTtcblx0XHRsZXQgb09uQmVmb3JlRGlzY2FyZE1vY2s6IGFueTtcblx0XHRsZXQgb0RlbGV0ZURyYWZ0TW9jazogYW55O1xuXHRcdGxldCBvRGlzY2FyZERvY3VtZW50TW9jazogYW55O1xuXHRcdGxldCBtUGFyYW1zOiBhbnk7XG5cdFx0bGV0IG1lc3NhZ2VIYW5kbGVyOiBhbnk7XG5cdFx0YmVmb3JlRWFjaCgoKSA9PiB7XG5cdFx0XHRvVHJhbnNhY3Rpb25IZWxwZXIgPSBuZXcgVHJhbnNhY3Rpb25IZWxwZXIob0FwcENvbXBvbmVudCwgb0xvY2tPYmplY3QpO1xuXHRcdFx0b0NvbnRleHQgPSB7XG5cdFx0XHRcdGdldE1vZGVsOiBmdW5jdGlvbigpIHtcblx0XHRcdFx0XHRyZXR1cm4ge1xuXHRcdFx0XHRcdFx0YmluZENvbnRleHQ6IGZ1bmN0aW9uKCkge1xuXHRcdFx0XHRcdFx0XHRyZXR1cm4ge1xuXHRcdFx0XHRcdFx0XHRcdGdldEJvdW5kQ29udGV4dDogZnVuY3Rpb24oKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRyZXR1cm4ge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRyZXF1ZXN0T2JqZWN0OiBmdW5jdGlvbigpIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKGZhbHNlKTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdFx0fTtcblx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdH07XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fTtcblx0XHRcdFx0fSxcblx0XHRcdFx0Z2V0UGF0aDogZnVuY3Rpb24oKSB7XG5cdFx0XHRcdFx0cmV0dXJuIFwiXCI7XG5cdFx0XHRcdH0sXG5cdFx0XHRcdGhhc1BlbmRpbmdDaGFuZ2VzOiBmdW5jdGlvbigpIHtcblx0XHRcdFx0XHRyZXR1cm4gdHJ1ZTtcblx0XHRcdFx0fSxcblx0XHRcdFx0Z2V0QmluZGluZzogZnVuY3Rpb24oKSB7XG5cdFx0XHRcdFx0cmV0dXJuIHtcblx0XHRcdFx0XHRcdHJlc2V0Q2hhbmdlczogZnVuY3Rpb24oKSB7XG5cdFx0XHRcdFx0XHRcdHJldHVybiB1bmRlZmluZWQ7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fTtcblx0XHRcdFx0fSxcblx0XHRcdFx0cmVmcmVzaDogZnVuY3Rpb24oKSB7XG5cdFx0XHRcdFx0cmV0dXJuIHVuZGVmaW5lZDtcblx0XHRcdFx0fSxcblx0XHRcdFx0cmVxdWVzdE9iamVjdDogZnVuY3Rpb24oKSB7XG5cdFx0XHRcdFx0cmV0dXJuIFByb21pc2UucmVzb2x2ZShmYWxzZSk7XG5cdFx0XHRcdH1cblx0XHRcdH07XG5cdFx0XHRvTG9ja01vY2sgPSBqZXN0LnNweU9uKEJ1c3lMb2NrZXIsIFwibG9ja1wiKTtcblx0XHRcdG9Mb2NrTW9jay5tb2NrSW1wbGVtZW50YXRpb24oKCkgPT4gZmFsc2UpO1xuXHRcdFx0b1VubG9ja01vY2sgPSBqZXN0LnNweU9uKEJ1c3lMb2NrZXIsIFwidW5sb2NrXCIpO1xuXHRcdFx0b1VubG9ja01vY2subW9ja0ltcGxlbWVudGF0aW9uKCgpID0+IGZhbHNlKTtcblx0XHRcdG1QYXJhbXMgPSB7XG5cdFx0XHRcdGNhbmNlbEJ1dHRvbjogbnVsbCxcblx0XHRcdFx0c2tpcERpc2NhcmRQb3BvdmVyOiB0cnVlLFxuXHRcdFx0XHRiZWZvcmVDYW5jZWxDYWxsQmFjazogZnVuY3Rpb24oKSB7XG5cdFx0XHRcdFx0cmV0dXJuIFByb21pc2UucmVzb2x2ZSgpO1xuXHRcdFx0XHR9XG5cdFx0XHR9O1xuXHRcdFx0b0dldFByb2dyYW1taW5nTW9kZWxNb2NrID0gamVzdC5zcHlPbihvVHJhbnNhY3Rpb25IZWxwZXIsIFwiZ2V0UHJvZ3JhbW1pbmdNb2RlbFwiKTtcblx0XHRcdG1lc3NhZ2VIYW5kbGVyID0ge1xuXHRcdFx0XHRyZW1vdmVUcmFuc2l0aW9uTWVzc2FnZXM6IGZ1bmN0aW9uKCkge1xuXHRcdFx0XHRcdHJldHVybiB1bmRlZmluZWQ7XG5cdFx0XHRcdH0sXG5cdFx0XHRcdHNob3dNZXNzYWdlczogZnVuY3Rpb24oKSB7XG5cdFx0XHRcdFx0cmV0dXJuIFByb21pc2UucmVzb2x2ZSgpO1xuXHRcdFx0XHR9XG5cdFx0XHR9O1xuXHRcdFx0b0RlbGV0ZURyYWZ0TW9jayA9IGplc3Quc3B5T24oZHJhZnQsIFwiZGVsZXRlRHJhZnRcIik7XG5cdFx0XHRvRGVsZXRlRHJhZnRNb2NrLm1vY2tJbXBsZW1lbnRhdGlvbigoKSA9PiB7XG5cdFx0XHRcdHJldHVybiBQcm9taXNlLnJlc29sdmUoKTtcblx0XHRcdH0pO1xuXHRcdFx0b0Rpc2NhcmREb2N1bWVudE1vY2sgPSBqZXN0LnNweU9uKHN0aWNreSwgXCJkaXNjYXJkRG9jdW1lbnRcIik7XG5cdFx0XHRvRGlzY2FyZERvY3VtZW50TW9jay5tb2NrSW1wbGVtZW50YXRpb24oKCkgPT4ge1xuXHRcdFx0XHRyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7XG5cdFx0XHR9KTtcblx0XHR9KTtcblx0XHRhZnRlckVhY2goKCkgPT4ge1xuXHRcdFx0amVzdC5yZXN0b3JlQWxsTW9ja3MoKTtcblx0XHR9KTtcblx0XHRpdChcIm9uQmVmb3JlRGlzY2FyZCBpcyByZXNvbHZlZCBmb3IgZHJhZnQgcHJvZ3JhbW1pbmcgbW9kZWxcIiwgYXN5bmMgKCkgPT4ge1xuXHRcdFx0b0dldFByb2dyYW1taW5nTW9kZWxNb2NrLm1vY2tJbXBsZW1lbnRhdGlvbigoKSA9PiB7XG5cdFx0XHRcdHJldHVybiBcIkRyYWZ0XCI7XG5cdFx0XHR9KTtcblx0XHRcdG9PbkJlZm9yZURpc2NhcmRNb2NrID0gamVzdC5zcHlPbihtUGFyYW1zLCBcImJlZm9yZUNhbmNlbENhbGxCYWNrXCIpO1xuXHRcdFx0b09uQmVmb3JlRGlzY2FyZE1vY2subW9ja0ltcGxlbWVudGF0aW9uKCgpID0+IHtcblx0XHRcdFx0cmV0dXJuIFByb21pc2UucmVzb2x2ZSgpO1xuXHRcdFx0fSk7XG5cdFx0XHRhd2FpdCBvVHJhbnNhY3Rpb25IZWxwZXIuY2FuY2VsRG9jdW1lbnQob0NvbnRleHQsIG1QYXJhbXMsIHt9LCBtZXNzYWdlSGFuZGxlcik7XG5cdFx0XHRleHBlY3Qob09uQmVmb3JlRGlzY2FyZE1vY2spLnRvSGF2ZUJlZW5DYWxsZWRUaW1lcygxKTtcblx0XHRcdGV4cGVjdChvT25CZWZvcmVEaXNjYXJkTW9jaykudG9CZUNhbGxlZFdpdGgoeyBcImNvbnRleHRcIjogb0NvbnRleHQgfSk7XG5cdFx0XHRleHBlY3Qob0RlbGV0ZURyYWZ0TW9jaykudG9IYXZlQmVlbkNhbGxlZFRpbWVzKDEpO1xuXHRcdH0pO1xuXHRcdGl0KFwib25CZWZvcmVEaXNjYXJkIGlzIHJlamVjdGVkIGZvciBkcmFmdCBwcm9ncmFtbWluZyBtb2RlbFwiLCBhc3luYyAoKSA9PiB7XG5cdFx0XHR0cnkge1xuXHRcdFx0XHRvR2V0UHJvZ3JhbW1pbmdNb2RlbE1vY2subW9ja0ltcGxlbWVudGF0aW9uKCgpID0+IHtcblx0XHRcdFx0XHRyZXR1cm4gXCJEcmFmdFwiO1xuXHRcdFx0XHR9KTtcblx0XHRcdFx0b09uQmVmb3JlRGlzY2FyZE1vY2sgPSBqZXN0LnNweU9uKG1QYXJhbXMsIFwiYmVmb3JlQ2FuY2VsQ2FsbEJhY2tcIik7XG5cdFx0XHRcdG9PbkJlZm9yZURpc2NhcmRNb2NrLm1vY2tJbXBsZW1lbnRhdGlvbigoKSA9PiB7XG5cdFx0XHRcdFx0cmV0dXJuIFByb21pc2UucmVqZWN0KCk7XG5cdFx0XHRcdH0pO1xuXHRcdFx0XHRhd2FpdCBvVHJhbnNhY3Rpb25IZWxwZXIuY2FuY2VsRG9jdW1lbnQob0NvbnRleHQsIG1QYXJhbXMsIHt9LCBtZXNzYWdlSGFuZGxlcik7XG5cdFx0XHR9IGNhdGNoIHtcblx0XHRcdFx0ZXhwZWN0KG9PbkJlZm9yZURpc2NhcmRNb2NrKS50b0hhdmVCZWVuQ2FsbGVkVGltZXMoMSk7XG5cdFx0XHRcdGV4cGVjdChvT25CZWZvcmVEaXNjYXJkTW9jaykudG9CZUNhbGxlZFdpdGgoeyBcImNvbnRleHRcIjogb0NvbnRleHQgfSk7XG5cdFx0XHRcdGV4cGVjdChvRGVsZXRlRHJhZnRNb2NrKS50b0hhdmVCZWVuQ2FsbGVkVGltZXMoMCk7XG5cdFx0XHR9XG5cdFx0fSk7XG5cdFx0aXQoXCJvbkJlZm9yZURpc2NhcmQgaXMgcmVzb2x2ZWQgZm9yIHN0aWNreSBwcm9ncmFtbWluZyBtb2RlbFwiLCBhc3luYyAoKSA9PiB7XG5cdFx0XHRvR2V0UHJvZ3JhbW1pbmdNb2RlbE1vY2subW9ja0ltcGxlbWVudGF0aW9uKCgpID0+IHtcblx0XHRcdFx0cmV0dXJuIFwiU3RpY2t5XCI7XG5cdFx0XHR9KTtcblx0XHRcdG9PbkJlZm9yZURpc2NhcmRNb2NrID0gamVzdC5zcHlPbihtUGFyYW1zLCBcImJlZm9yZUNhbmNlbENhbGxCYWNrXCIpO1xuXHRcdFx0b09uQmVmb3JlRGlzY2FyZE1vY2subW9ja0ltcGxlbWVudGF0aW9uKCgpID0+IHtcblx0XHRcdFx0cmV0dXJuIFByb21pc2UucmVzb2x2ZSgpO1xuXHRcdFx0fSk7XG5cdFx0XHRhd2FpdCBvVHJhbnNhY3Rpb25IZWxwZXIuY2FuY2VsRG9jdW1lbnQob0NvbnRleHQsIG1QYXJhbXMsIHt9LCBtZXNzYWdlSGFuZGxlcik7XG5cdFx0XHRleHBlY3Qob09uQmVmb3JlRGlzY2FyZE1vY2spLnRvSGF2ZUJlZW5DYWxsZWRUaW1lcygxKTtcblx0XHRcdGV4cGVjdChvT25CZWZvcmVEaXNjYXJkTW9jaykudG9CZUNhbGxlZFdpdGgoeyBcImNvbnRleHRcIjogb0NvbnRleHQgfSk7XG5cdFx0XHRleHBlY3Qob0Rpc2NhcmREb2N1bWVudE1vY2spLnRvSGF2ZUJlZW5DYWxsZWRUaW1lcygxKTtcblx0XHR9KTtcblx0XHRpdChcIm9uQmVmb3JlRGlzY2FyZCBpcyByZWplY3RlZCBmb3Igc3RpY2t5IHByb2dyYW1taW5nIG1vZGVsXCIsIGFzeW5jICgpID0+IHtcblx0XHRcdHRyeSB7XG5cdFx0XHRcdG9HZXRQcm9ncmFtbWluZ01vZGVsTW9jay5tb2NrSW1wbGVtZW50YXRpb24oKCkgPT4ge1xuXHRcdFx0XHRcdHJldHVybiBcIlN0aWNreVwiO1xuXHRcdFx0XHR9KTtcblx0XHRcdFx0b09uQmVmb3JlRGlzY2FyZE1vY2sgPSBqZXN0LnNweU9uKG1QYXJhbXMsIFwiYmVmb3JlQ2FuY2VsQ2FsbEJhY2tcIik7XG5cdFx0XHRcdG9PbkJlZm9yZURpc2NhcmRNb2NrLm1vY2tJbXBsZW1lbnRhdGlvbigoKSA9PiB7XG5cdFx0XHRcdFx0cmV0dXJuIFByb21pc2UucmVqZWN0KCk7XG5cdFx0XHRcdH0pO1xuXHRcdFx0XHRhd2FpdCBvVHJhbnNhY3Rpb25IZWxwZXIuY2FuY2VsRG9jdW1lbnQob0NvbnRleHQsIG1QYXJhbXMsIHt9LCBtZXNzYWdlSGFuZGxlcik7XG5cdFx0XHR9IGNhdGNoIHtcblx0XHRcdFx0ZXhwZWN0KG9PbkJlZm9yZURpc2NhcmRNb2NrKS50b0hhdmVCZWVuQ2FsbGVkVGltZXMoMSk7XG5cdFx0XHRcdGV4cGVjdChvT25CZWZvcmVEaXNjYXJkTW9jaykudG9CZUNhbGxlZFdpdGgoeyBcImNvbnRleHRcIjogb0NvbnRleHQgfSk7XG5cdFx0XHRcdGV4cGVjdChvRGlzY2FyZERvY3VtZW50TW9jaykudG9IYXZlQmVlbkNhbGxlZFRpbWVzKDApO1xuXHRcdFx0fVxuXHRcdH0pO1xuXHR9KTtcblx0ZGVzY3JpYmUoXCJkZWxldGVEb2N1bWVudCgpOiBvbkJlZm9yZURlbGV0ZVwiLCAoKSA9PiB7XG5cdFx0bGV0IG9UcmFuc2FjdGlvbkhlbHBlcjogVHJhbnNhY3Rpb25IZWxwZXI7XG5cdFx0bGV0IHZDb250ZXh0cztcblx0XHRsZXQgb0xvY2tNb2NrO1xuXHRcdGxldCBvVW5sb2NrTW9jaztcblx0XHRsZXQgb0dldFByb2dyYW1taW5nTW9kZWxNb2NrOiBhbnk7XG5cdFx0bGV0IG9PbkJlZm9yZURlbGV0ZU1vY2s6IGFueTtcblx0XHRsZXQgb0RlbGV0ZURyYWZ0TW9jazogYW55O1xuXHRcdGxldCBvRmluZEFjdGl2ZURyYWZ0Um9vdENvbnRleHRzTW9jaztcblx0XHRsZXQgb0FmdGVyRGVsZXRlUHJvY2Vzc01vY2s7XG5cdFx0bGV0IG9HZXRUcmFuc2xhdGVkVGV4dE1vY2s7XG5cdFx0bGV0IG1QYXJhbXM6IGFueTtcblx0XHRsZXQgbWVzc2FnZUhhbmRsZXI6IGFueTtcblx0XHRmdW5jdGlvbiBjcmVhdGVDb250ZXh0KHNhbGVzT3JkZXI6IGFueSkge1xuXHRcdFx0cmV0dXJuIHtcblx0XHRcdFx0Z2V0T2JqZWN0OiBmdW5jdGlvbigpIHtcblx0XHRcdFx0XHRyZXR1cm4ge1xuXHRcdFx0XHRcdFx0U2FsZXNPcmRlcjogc2FsZXNPcmRlclxuXHRcdFx0XHRcdH07XG5cdFx0XHRcdH1cblx0XHRcdH07XG5cdFx0fVxuXHRcdGJlZm9yZUVhY2goKCkgPT4ge1xuXHRcdFx0b1RyYW5zYWN0aW9uSGVscGVyID0gbmV3IFRyYW5zYWN0aW9uSGVscGVyKG9BcHBDb21wb25lbnQsIG9Mb2NrT2JqZWN0KTtcblx0XHRcdG9Mb2NrTW9jayA9IGplc3Quc3B5T24oQnVzeUxvY2tlciwgXCJsb2NrXCIpO1xuXHRcdFx0b0xvY2tNb2NrLm1vY2tSZXR1cm5WYWx1ZShmYWxzZSk7XG5cdFx0XHRvVW5sb2NrTW9jayA9IGplc3Quc3B5T24oQnVzeUxvY2tlciwgXCJ1bmxvY2tcIik7XG5cdFx0XHRvVW5sb2NrTW9jay5tb2NrUmV0dXJuVmFsdWUoZmFsc2UpO1xuXHRcdFx0bVBhcmFtcyA9IHtcblx0XHRcdFx0dW5TYXZlZENvbnRleHRzOiBbXSxcblx0XHRcdFx0bG9ja2VkQ29udGV4dHM6IFtdLFxuXHRcdFx0XHRlZGl0Rmxvdzoge1xuXHRcdFx0XHRcdGJhc2U6IHtcblx0XHRcdFx0XHRcdGVkaXRGbG93OiB7XG5cdFx0XHRcdFx0XHRcdG9uQmVmb3JlRGVsZXRlOiBmdW5jdGlvbigpIHtcblx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH07XG5cdFx0XHRvR2V0UHJvZ3JhbW1pbmdNb2RlbE1vY2sgPSBqZXN0LnNweU9uKG9UcmFuc2FjdGlvbkhlbHBlciwgXCJnZXRQcm9ncmFtbWluZ01vZGVsXCIpO1xuXHRcdFx0b0dldFByb2dyYW1taW5nTW9kZWxNb2NrLm1vY2tSZXR1cm5WYWx1ZShcIkRyYWZ0XCIpO1xuXHRcdFx0bWVzc2FnZUhhbmRsZXIgPSB7XG5cdFx0XHRcdHNob3dNZXNzYWdlRGlhbG9nOiBmdW5jdGlvbigpIHtcblx0XHRcdFx0XHRyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7XG5cdFx0XHRcdH0sXG5cdFx0XHRcdHNob3dNZXNzYWdlczogZnVuY3Rpb24oKSB7XG5cdFx0XHRcdFx0cmV0dXJuIFByb21pc2UucmVzb2x2ZSgpO1xuXHRcdFx0XHR9XG5cdFx0XHR9O1xuXHRcdFx0b0RlbGV0ZURyYWZ0TW9jayA9IGplc3Quc3B5T24oZHJhZnQsIFwiZGVsZXRlRHJhZnRcIik7XG5cdFx0XHRvRGVsZXRlRHJhZnRNb2NrLm1vY2tSZXNvbHZlZFZhbHVlKCk7XG5cdFx0XHRvRmluZEFjdGl2ZURyYWZ0Um9vdENvbnRleHRzTW9jayA9IGplc3Quc3B5T24ob1RyYW5zYWN0aW9uSGVscGVyLCBcImZpbmRBY3RpdmVEcmFmdFJvb3RDb250ZXh0c1wiKTtcblx0XHRcdG9GaW5kQWN0aXZlRHJhZnRSb290Q29udGV4dHNNb2NrLm1vY2tSZXNvbHZlZFZhbHVlKCk7XG5cdFx0XHRvQWZ0ZXJEZWxldGVQcm9jZXNzTW9jayA9IGplc3Quc3B5T24ob1RyYW5zYWN0aW9uSGVscGVyLCBcImFmdGVyRGVsZXRlUHJvY2Vzc1wiKTtcblx0XHRcdG9BZnRlckRlbGV0ZVByb2Nlc3NNb2NrLm1vY2tSZXR1cm5WYWx1ZSgpO1xuXHRcdFx0b0dldFRyYW5zbGF0ZWRUZXh0TW9jayA9IGplc3Quc3B5T24oQ29tbW9uVXRpbHMsIFwiZ2V0VHJhbnNsYXRlZFRleHRcIik7XG5cdFx0XHRvR2V0VHJhbnNsYXRlZFRleHRNb2NrLm1vY2tSZXR1cm5WYWx1ZShcIlwiKTtcblx0XHR9KTtcblx0XHRhZnRlckVhY2goKCkgPT4ge1xuXHRcdFx0amVzdC5yZXN0b3JlQWxsTW9ja3MoKTtcblx0XHR9KTtcblx0XHRpdChcIm9uQmVmb3JlRGVsZXRlIGlzIHJlc29sdmVkIGZvciBzaW5nbGUgQ29udGV4dFwiLCBhc3luYyAoKSA9PiB7XG5cdFx0XHR2Q29udGV4dHMgPSBbY3JlYXRlQ29udGV4dCg2NDM3KV07XG5cdFx0XHRtUGFyYW1zLm51bWJlck9mU2VsZWN0ZWRDb250ZXh0cyA9IDE7XG5cdFx0XHRtUGFyYW1zLm5vRGlhbG9nID0gdHJ1ZTtcblx0XHRcdG1QYXJhbXMuYmVmb3JlRGVsZXRlQ2FsbEJhY2sgPSBmdW5jdGlvbigpIHtcblx0XHRcdFx0cmV0dXJuIFByb21pc2UucmVzb2x2ZSgpO1xuXHRcdFx0fTtcblx0XHRcdG9PbkJlZm9yZURlbGV0ZU1vY2sgPSBqZXN0LnNweU9uKG1QYXJhbXMsIFwiYmVmb3JlRGVsZXRlQ2FsbEJhY2tcIik7XG5cdFx0XHRvT25CZWZvcmVEZWxldGVNb2NrLm1vY2tSZXNvbHZlZFZhbHVlKCk7XG5cdFx0XHRhd2FpdCBvVHJhbnNhY3Rpb25IZWxwZXIuZGVsZXRlRG9jdW1lbnQodkNvbnRleHRzLCBtUGFyYW1zLCB7fSwgbWVzc2FnZUhhbmRsZXIpO1xuXHRcdFx0ZXhwZWN0KG9PbkJlZm9yZURlbGV0ZU1vY2spLnRvSGF2ZUJlZW5DYWxsZWRUaW1lcygxKTtcblx0XHRcdGV4cGVjdChvT25CZWZvcmVEZWxldGVNb2NrKS50b0JlQ2FsbGVkV2l0aCh7IFwiY29udGV4dHNcIjogdkNvbnRleHRzIH0pO1xuXHRcdFx0ZXhwZWN0KG9EZWxldGVEcmFmdE1vY2spLnRvSGF2ZUJlZW5DYWxsZWRUaW1lcygxKTtcblx0XHR9KTtcblx0XHRpdChcIm9uQmVmb3JlRGVsZXRlIGlzIHJlc29sdmVkIGZvciBtdWx0aXBsZSBjb250ZXh0c1wiLCBhc3luYyAoKSA9PiB7XG5cdFx0XHR2Q29udGV4dHMgPSBbY3JlYXRlQ29udGV4dCg2NDM3KSwgY3JlYXRlQ29udGV4dCgyOTE1NzE3KV07XG5cdFx0XHR0cnkge1xuXHRcdFx0XHRvR2V0UHJvZ3JhbW1pbmdNb2RlbE1vY2subW9ja1JldHVyblZhbHVlKFwiRHJhZnRcIik7XG5cdFx0XHRcdG1QYXJhbXMubm9EaWFsb2cgPSB0cnVlO1xuXHRcdFx0XHRtUGFyYW1zLmJlZm9yZURlbGV0ZUNhbGxCYWNrID0gZnVuY3Rpb24oKSB7XG5cdFx0XHRcdFx0cmV0dXJuIFByb21pc2UucmVzb2x2ZSgpO1xuXHRcdFx0XHR9O1xuXHRcdFx0XHRvT25CZWZvcmVEZWxldGVNb2NrID0gamVzdC5zcHlPbihtUGFyYW1zLCBcImJlZm9yZURlbGV0ZUNhbGxCYWNrXCIpO1xuXHRcdFx0XHRvT25CZWZvcmVEZWxldGVNb2NrLm1vY2tSZXNvbHZlZFZhbHVlKCk7XG5cdFx0XHRcdGF3YWl0IG9UcmFuc2FjdGlvbkhlbHBlci5kZWxldGVEb2N1bWVudCh2Q29udGV4dHMsIG1QYXJhbXMsIHt9LCBtZXNzYWdlSGFuZGxlcik7XG5cdFx0XHR9IGNhdGNoIHtcblx0XHRcdFx0ZXhwZWN0KG9PbkJlZm9yZURlbGV0ZU1vY2spLnRvSGF2ZUJlZW5DYWxsZWRUaW1lcygxKTtcblx0XHRcdFx0ZXhwZWN0KG9PbkJlZm9yZURlbGV0ZU1vY2spLnRvQmVDYWxsZWRXaXRoKHsgXCJjb250ZXh0c1wiOiB2Q29udGV4dHMgfSk7XG5cdFx0XHRcdGV4cGVjdChvRGVsZXRlRHJhZnRNb2NrKS50b0hhdmVCZWVuQ2FsbGVkVGltZXMoMik7XG5cdFx0XHR9XG5cdFx0fSk7XG5cdH0pO1xuXHRkZXNjcmliZShcImNyZWF0ZURvY3VtZW50KCk6IG9uQmVmb3JlQ3JlYXRlXCIsICgpID0+IHtcblx0XHRsZXQgb1RyYW5zYWN0aW9uSGVscGVyOiBUcmFuc2FjdGlvbkhlbHBlcjtcblx0XHRsZXQgb01haW5MaXN0QmluZGluZzogYW55O1xuXHRcdGxldCBvTG9ja01vY2s7XG5cdFx0bGV0IG9VbmxvY2tNb2NrO1xuXHRcdGxldCBvT25CZWZvcmVDcmVhdGVNb2NrOiBhbnk7XG5cdFx0bGV0IG9BcHBDb21wb25lbnRNb2NrO1xuXHRcdGxldCBvR2V0UHJvZ3JhbW1pbmdNb2RlbE1vY2s7XG5cdFx0bGV0IG9Nb2RlbEhlbHBlck1vY2s7XG5cdFx0bGV0IG9DYWxsRnVuY3Rpb25JbXBvcnRNb2NrO1xuXHRcdGxldCBvT25BZnRlckNyZWF0ZUNvbXBsZXRpb25Nb2NrO1xuXHRcdGxldCBvQ3JlYXRlTW9jazogYW55O1xuXHRcdGxldCBtUGFyYW1zOiBhbnk7XG5cdFx0bGV0IG1lc3NhZ2VIYW5kbGVyOiBhbnk7XG5cdFx0YmVmb3JlRWFjaCgoKSA9PiB7XG5cdFx0XHRjb25zdCBtb2NrTW9kZWwgPSBuZXcgTW9ja01vZGVsKCk7XG5cdFx0XHRjb25zdCBtb2NrTWV0YU1vZGVsID0gbmV3IE1vY2tNZXRhTW9kZWwoe30pO1xuXHRcdFx0bW9ja01vZGVsLnNldE1ldGFNb2RlbChtb2NrTWV0YU1vZGVsKTtcblx0XHRcdG9UcmFuc2FjdGlvbkhlbHBlciA9IG5ldyBUcmFuc2FjdGlvbkhlbHBlcihvQXBwQ29tcG9uZW50LCBvTG9ja09iamVjdCk7XG5cdFx0XHRvTWFpbkxpc3RCaW5kaW5nID0ge1xuXHRcdFx0XHRnZXRNb2RlbDogZnVuY3Rpb24oKSB7XG5cdFx0XHRcdFx0cmV0dXJuIG1vY2tNb2RlbDtcblx0XHRcdFx0fSxcblx0XHRcdFx0Z2V0SGVhZGVyQ29udGV4dDogZnVuY3Rpb24oKSB7XG5cdFx0XHRcdFx0cmV0dXJuIHtcblx0XHRcdFx0XHRcdGdldFBhdGg6IGZ1bmN0aW9uKCkge1xuXHRcdFx0XHRcdFx0XHRyZXR1cm4gbnVsbDtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9O1xuXHRcdFx0XHR9LFxuXHRcdFx0XHRpc1JlbGF0aXZlOiBmdW5jdGlvbigpIHtcblx0XHRcdFx0XHRyZXR1cm4gdHJ1ZTtcblx0XHRcdFx0fSxcblx0XHRcdFx0Z2V0UGF0aDogZnVuY3Rpb24oKSB7XG5cdFx0XHRcdFx0cmV0dXJuIFwiL1NhbGVzT3JkZXJNYW5hZ2VcIjtcblx0XHRcdFx0fSxcblx0XHRcdFx0Y3JlYXRlOiBmdW5jdGlvbigpIHtcblx0XHRcdFx0XHRyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7XG5cdFx0XHRcdH1cblx0XHRcdH07XG5cdFx0XHRvQXBwQ29tcG9uZW50TW9jayA9IGplc3Quc3B5T24ob1RyYW5zYWN0aW9uSGVscGVyLCBcIl9nZXRBcHBDb21wb25lbnRcIik7XG5cdFx0XHRvQXBwQ29tcG9uZW50TW9jay5tb2NrSW1wbGVtZW50YXRpb24oKCkgPT4ge1xuXHRcdFx0XHRyZXR1cm4ge1xuXHRcdFx0XHRcdGdldENvbXBvbmVudERhdGE6IGZ1bmN0aW9uKCkge1xuXHRcdFx0XHRcdFx0cmV0dXJuIG51bGw7XG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRnZXRSb3V0ZXJQcm94eTogZnVuY3Rpb24oKSB7XG5cdFx0XHRcdFx0XHRyZXR1cm4ge1xuXHRcdFx0XHRcdFx0XHRnZXRIYXNoOiBmdW5jdGlvbigpIHtcblx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gXCJcIjtcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0fTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH07XG5cdFx0XHR9KTtcblx0XHRcdG9PbkFmdGVyQ3JlYXRlQ29tcGxldGlvbk1vY2sgPSBqZXN0LnNweU9uKG9UcmFuc2FjdGlvbkhlbHBlciwgXCJvbkFmdGVyQ3JlYXRlQ29tcGxldGlvblwiKTtcblx0XHRcdG9PbkFmdGVyQ3JlYXRlQ29tcGxldGlvbk1vY2subW9ja1Jlc29sdmVkVmFsdWUodW5kZWZpbmVkKTtcblx0XHRcdG9HZXRQcm9ncmFtbWluZ01vZGVsTW9jayA9IGplc3Quc3B5T24ob1RyYW5zYWN0aW9uSGVscGVyLCBcImdldFByb2dyYW1taW5nTW9kZWxcIik7XG5cdFx0XHRvTG9ja01vY2sgPSBqZXN0LnNweU9uKEJ1c3lMb2NrZXIsIFwibG9ja1wiKTtcblx0XHRcdG9Mb2NrTW9jay5tb2NrUmV0dXJuVmFsdWUoZmFsc2UpO1xuXHRcdFx0b1VubG9ja01vY2sgPSBqZXN0LnNweU9uKEJ1c3lMb2NrZXIsIFwidW5sb2NrXCIpO1xuXHRcdFx0b1VubG9ja01vY2subW9ja1JldHVyblZhbHVlKGZhbHNlKTtcblx0XHRcdG9Nb2RlbEhlbHBlck1vY2sgPSBqZXN0LnNweU9uKE1vZGVsSGVscGVyLCBcImdldFRhcmdldEVudGl0eVNldFwiKTtcblx0XHRcdG9Nb2RlbEhlbHBlck1vY2subW9ja1JldHVyblZhbHVlKFwiXCIpO1xuXHRcdFx0b0NhbGxGdW5jdGlvbkltcG9ydE1vY2sgPSBqZXN0LnNweU9uKG9wZXJhdGlvbnMsIFwiY2FsbEZ1bmN0aW9uSW1wb3J0XCIpO1xuXHRcdFx0b0NhbGxGdW5jdGlvbkltcG9ydE1vY2subW9ja1Jlc29sdmVkVmFsdWUodW5kZWZpbmVkKTtcblx0XHRcdG1QYXJhbXMgPSB7XG5cdFx0XHRcdGNyZWF0aW9uTW9kZTogXCJDcmVhdGlvblJvd1wiLFxuXHRcdFx0XHRiZWZvcmVDcmVhdGVDYWxsQmFjazogZnVuY3Rpb24oKSB7XG5cdFx0XHRcdFx0cmV0dXJuIFByb21pc2UucmVzb2x2ZSgpO1xuXHRcdFx0XHR9XG5cdFx0XHR9O1xuXHRcdFx0b0dldFByb2dyYW1taW5nTW9kZWxNb2NrID0gamVzdC5zcHlPbihvVHJhbnNhY3Rpb25IZWxwZXIsIFwiZ2V0UHJvZ3JhbW1pbmdNb2RlbFwiKTtcblx0XHRcdG9HZXRQcm9ncmFtbWluZ01vZGVsTW9jay5tb2NrUmV0dXJuVmFsdWUoXCJEcmFmdFwiIGFzIGFueSk7XG5cdFx0XHRtZXNzYWdlSGFuZGxlciA9IHtcblx0XHRcdFx0cmVtb3ZlVHJhbnNpdGlvbk1lc3NhZ2VzOiBmdW5jdGlvbigpIHtcblx0XHRcdFx0XHRyZXR1cm4gdW5kZWZpbmVkO1xuXHRcdFx0XHR9LFxuXHRcdFx0XHRzaG93TWVzc2FnZXM6IGZ1bmN0aW9uKCkge1xuXHRcdFx0XHRcdHJldHVybiBQcm9taXNlLnJlc29sdmUoKTtcblx0XHRcdFx0fSxcblx0XHRcdFx0c2hvd01lc3NhZ2VEaWFsb2c6IGZ1bmN0aW9uKCkge1xuXHRcdFx0XHRcdHJldHVybiBQcm9taXNlLnJlc29sdmUoKTtcblx0XHRcdFx0fVxuXHRcdFx0fTtcblx0XHR9KTtcblx0XHRhZnRlckVhY2goKCkgPT4ge1xuXHRcdFx0amVzdC5yZXN0b3JlQWxsTW9ja3MoKTtcblx0XHR9KTtcblx0XHRpdChcIm9uQmVmb3JlQ3JlYXRlIGlzIHJlc29sdmVkXCIsIGFzeW5jICgpID0+IHtcblx0XHRcdG9PbkJlZm9yZUNyZWF0ZU1vY2sgPSBqZXN0LnNweU9uKG1QYXJhbXMsIFwiYmVmb3JlQ3JlYXRlQ2FsbEJhY2tcIik7XG5cdFx0XHRvT25CZWZvcmVDcmVhdGVNb2NrLm1vY2tSZXNvbHZlZFZhbHVlKCk7XG5cdFx0XHRvQ3JlYXRlTW9jayA9IGplc3Quc3B5T24ob01haW5MaXN0QmluZGluZywgXCJjcmVhdGVcIik7XG5cdFx0XHRvQ3JlYXRlTW9jay5tb2NrUmVzb2x2ZWRWYWx1ZSgpO1xuXHRcdFx0YXdhaXQgb1RyYW5zYWN0aW9uSGVscGVyLmNyZWF0ZURvY3VtZW50KG9NYWluTGlzdEJpbmRpbmcsIG1QYXJhbXMsIHt9LCBtZXNzYWdlSGFuZGxlciwgZmFsc2UsIHVuZGVmaW5lZCk7XG5cdFx0XHRleHBlY3Qob09uQmVmb3JlQ3JlYXRlTW9jaykudG9IYXZlQmVlbkNhbGxlZFRpbWVzKDEpO1xuXHRcdFx0ZXhwZWN0KG9PbkJlZm9yZUNyZWF0ZU1vY2spLnRvQmVDYWxsZWRXaXRoKHsgXCJjb250ZXh0UGF0aFwiOiBcIi9TYWxlc09yZGVyTWFuYWdlXCIgfSk7XG5cdFx0XHRleHBlY3Qob0NyZWF0ZU1vY2spLnRvSGF2ZUJlZW5DYWxsZWRUaW1lcygxKTtcblx0XHR9KTtcblx0XHRpdChcIm9uQmVmb3JlQ3JlYXRlIGlzIHJlamVjdGVkXCIsIGFzeW5jICgpID0+IHtcblx0XHRcdHRyeSB7XG5cdFx0XHRcdG9PbkJlZm9yZUNyZWF0ZU1vY2sgPSBqZXN0LnNweU9uKG1QYXJhbXMsIFwiYmVmb3JlQ3JlYXRlQ2FsbEJhY2tcIik7XG5cdFx0XHRcdG9PbkJlZm9yZUNyZWF0ZU1vY2subW9ja1Jlc29sdmVkVmFsdWUoKTtcblx0XHRcdFx0b0NyZWF0ZU1vY2sgPSBqZXN0LnNweU9uKG9NYWluTGlzdEJpbmRpbmcsIFwiY3JlYXRlXCIpO1xuXHRcdFx0XHRvQ3JlYXRlTW9jay5tb2NrUmVzb2x2ZWRWYWx1ZSgpO1xuXHRcdFx0XHRhd2FpdCBvVHJhbnNhY3Rpb25IZWxwZXIuY3JlYXRlRG9jdW1lbnQob01haW5MaXN0QmluZGluZywgbVBhcmFtcywge30sIG1lc3NhZ2VIYW5kbGVyLCBmYWxzZSwgdW5kZWZpbmVkKTtcblx0XHRcdH0gY2F0Y2gge1xuXHRcdFx0XHRleHBlY3Qob09uQmVmb3JlQ3JlYXRlTW9jaykudG9IYXZlQmVlbkNhbGxlZFRpbWVzKDEpO1xuXHRcdFx0XHRleHBlY3Qob09uQmVmb3JlQ3JlYXRlTW9jaykudG9CZUNhbGxlZFdpdGgoeyBcImNvbnRleHRQYXRoXCI6IFwiL1NhbGVzT3JkZXJNYW5hZ2VcIiB9KTtcblx0XHRcdFx0ZXhwZWN0KG9DcmVhdGVNb2NrKS50b0hhdmVCZWVuQ2FsbGVkVGltZXMoMCk7XG5cdFx0XHR9XG5cdFx0fSk7XG5cdH0pO1xufSk7XG4iXX0=
827
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIlRyYW5zYWN0aW9uSGVscGVyLnNwZWMudHMiXSwibmFtZXMiOlsiYm9keSIsInJlY292ZXIiLCJyZXN1bHQiLCJlIiwidGhlbiIsIm9BcHBDb21wb25lbnQiLCJvTG9ja09iamVjdCIsImRlc2NyaWJlIiwib1RyYW5zYWN0aW9uSGVscGVyIiwiVHJhbnNhY3Rpb25IZWxwZXIiLCJhTmV3QWN0aW9uVGVzdERhdGEiLCJzRGVzY3JpcHRpb24iLCJvU3RhcnR1cFBhcmFtZXRlcnMiLCJzQ3JlYXRlSGFzaCIsIm9NZXRhTW9kZWwiLCJzTWV0YVBhdGgiLCJzRXhwZWN0ZWRSZXN1bHQiLCJ1bmRlZmluZWQiLCJzRGVzY09uU3VjY2VzcyIsInByZWZlcnJlZE1vZGUiLCJnZXRPYmplY3QiLCJmb3JFYWNoIiwib1Rlc3REYXRhIiwiaXQiLCJzUmVzdWx0IiwiX2dldE5ld0FjdGlvbiIsImV4cGVjdCIsInRvRXF1YWwiLCJhVGVzdHMiLCJ0aXRsZSIsInNOZXdBY3Rpb24iLCJvUmVzb3VyY2VCdW5kbGVDb3JlIiwiZXhwZWN0ZWQiLCJnZXRUZXh0Iiwic0Fubm90YXRpb24iLCIkVHlwZSIsIkFjdGlvbiIsIkxhYmVsIiwiTmF2aWdhdGlvbkF2YWlsYWJsZSIsIlJlcXVpcmVzQ29udGV4dCIsIlNlbWFudGljT2JqZWN0IiwiVmFsdWUiLCIkUGF0aCIsIm9UZXN0IiwiX2dldFNwZWNpZmljQ3JlYXRlQWN0aW9uRGlhbG9nTGFiZWwiLCJ0b0JlIiwib0NvbnRleHQiLCJvTG9ja01vY2siLCJvVW5sb2NrTW9jayIsIm9HZXRQcm9ncmFtbWluZ01vZGVsTW9jayIsIm9PbkJlZm9yZURpc2NhcmRNb2NrIiwib0RlbGV0ZURyYWZ0TW9jayIsIm9EaXNjYXJkRG9jdW1lbnRNb2NrIiwibVBhcmFtcyIsIm1lc3NhZ2VIYW5kbGVyIiwiYmVmb3JlRWFjaCIsImdldE1vZGVsIiwiYmluZENvbnRleHQiLCJnZXRCb3VuZENvbnRleHQiLCJyZXF1ZXN0T2JqZWN0IiwiUHJvbWlzZSIsInJlc29sdmUiLCJnZXRQYXRoIiwiaGFzUGVuZGluZ0NoYW5nZXMiLCJnZXRCaW5kaW5nIiwicmVzZXRDaGFuZ2VzIiwicmVmcmVzaCIsImplc3QiLCJzcHlPbiIsIkJ1c3lMb2NrZXIiLCJtb2NrSW1wbGVtZW50YXRpb24iLCJjYW5jZWxCdXR0b24iLCJza2lwRGlzY2FyZFBvcG92ZXIiLCJiZWZvcmVDYW5jZWxDYWxsQmFjayIsInJlbW92ZVRyYW5zaXRpb25NZXNzYWdlcyIsInNob3dNZXNzYWdlcyIsImRyYWZ0Iiwic3RpY2t5IiwiYWZ0ZXJFYWNoIiwicmVzdG9yZUFsbE1vY2tzIiwiY2FuY2VsRG9jdW1lbnQiLCJ0b0hhdmVCZWVuQ2FsbGVkVGltZXMiLCJ0b0JlQ2FsbGVkV2l0aCIsInJlamVjdCIsInZDb250ZXh0cyIsIm9PbkJlZm9yZURlbGV0ZU1vY2siLCJvRmluZEFjdGl2ZURyYWZ0Um9vdENvbnRleHRzTW9jayIsIm9BZnRlckRlbGV0ZVByb2Nlc3NNb2NrIiwib0dldFRyYW5zbGF0ZWRUZXh0TW9jayIsImNyZWF0ZUNvbnRleHQiLCJzYWxlc09yZGVyIiwiU2FsZXNPcmRlciIsIm1vY2tSZXR1cm5WYWx1ZSIsInVuU2F2ZWRDb250ZXh0cyIsImxvY2tlZENvbnRleHRzIiwiZWRpdEZsb3ciLCJiYXNlIiwib25CZWZvcmVEZWxldGUiLCJzaG93TWVzc2FnZURpYWxvZyIsIm1vY2tSZXNvbHZlZFZhbHVlIiwiQ29tbW9uVXRpbHMiLCJudW1iZXJPZlNlbGVjdGVkQ29udGV4dHMiLCJub0RpYWxvZyIsImJlZm9yZURlbGV0ZUNhbGxCYWNrIiwiZGVsZXRlRG9jdW1lbnQiLCJvTWFpbkxpc3RCaW5kaW5nIiwib09uQmVmb3JlQ3JlYXRlTW9jayIsIm9BcHBDb21wb25lbnRNb2NrIiwib01vZGVsSGVscGVyTW9jayIsIm9DYWxsRnVuY3Rpb25JbXBvcnRNb2NrIiwib09uQWZ0ZXJDcmVhdGVDb21wbGV0aW9uTW9jayIsIm9DcmVhdGVNb2NrIiwibW9ja01vZGVsIiwiTW9ja01vZGVsIiwibW9ja01ldGFNb2RlbCIsIk1vY2tNZXRhTW9kZWwiLCJzZXRNZXRhTW9kZWwiLCJnZXRIZWFkZXJDb250ZXh0IiwiaXNSZWxhdGl2ZSIsImNyZWF0ZSIsImdldENvbXBvbmVudERhdGEiLCJnZXRSb3V0ZXJQcm94eSIsImdldEhhc2giLCJNb2RlbEhlbHBlciIsIm9wZXJhdGlvbnMiLCJjcmVhdGlvbk1vZGUiLCJiZWZvcmVDcmVhdGVDYWxsQmFjayIsImNyZWF0ZURvY3VtZW50IiwiZW50aXR5U2V0TmFtZSIsImRlc2NyaXB0aW9uIl0sIm1hcHBpbmdzIjoiO0FBQUE7QUFDQTtBQUNBOzs7Ozs7O0FBZ2pCTyxrQkFBZ0JBLElBQWhCLEVBQXNCQyxPQUF0QixFQUErQjtBQUNyQyxRQUFJO0FBQ0gsVUFBSUMsTUFBTSxHQUFHRixJQUFJLEVBQWpCO0FBQ0EsS0FGRCxDQUVFLE9BQU1HLENBQU4sRUFBUztBQUNWLGFBQU9GLE9BQU8sQ0FBQ0UsQ0FBRCxDQUFkO0FBQ0E7O0FBQ0QsUUFBSUQsTUFBTSxJQUFJQSxNQUFNLENBQUNFLElBQXJCLEVBQTJCO0FBQzFCLGFBQU9GLE1BQU0sQ0FBQ0UsSUFBUCxDQUFZLEtBQUssQ0FBakIsRUFBb0JILE9BQXBCLENBQVA7QUFDQTs7QUFDRCxXQUFPQyxNQUFQO0FBQ0E7O0FBbGpCRCxNQUFNRyxhQUFrQixHQUFHLEVBQTNCO0FBQ0EsTUFBTUMsV0FBZ0IsR0FBRyxFQUF6QjtBQUNBQyxFQUFBQSxRQUFRLENBQUMsbUJBQUQsRUFBc0IsWUFBTTtBQUNuQyxRQUFNQyxrQkFBa0IsR0FBRyxJQUFJQyxpQkFBSixDQUFzQkosYUFBdEIsRUFBcUNDLFdBQXJDLENBQTNCO0FBRUFDLElBQUFBLFFBQVEsQ0FBQyxtQkFBRCxFQUFzQixZQUFNO0FBQ25DLFVBQU1HLGtCQUFrQixHQUFHLENBQzFCO0FBQ0NDLFFBQUFBLFlBQVksRUFBRSxzQkFEZjtBQUVDQyxRQUFBQSxrQkFBa0IsRUFBRSxFQUZyQjtBQUdDQyxRQUFBQSxXQUFXLEVBQUUsRUFIZDtBQUlDQyxRQUFBQSxV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RztBQUNUaUQsWUFBQUEsUUFBUSxFQUFFLElBREQ7QUFFVHpFLFlBQUFBLEtBQUssRUFBRSxTQUZFO0FBR1RvRyxZQUFBQSxXQUFXLEVBQUUsWUFISjtBQUlURCxZQUFBQSxhQUFhLEVBQUU7QUFKTixXQUFWO0FBRjJFLGlDQVFyRXhILGtCQUFrQixDQUFDZ0csY0FBbkIsQ0FBa0NwQixTQUFsQyxFQUE2Qy9CLE9BQTdDLEVBQXNELEVBQXRELEVBQTBEQyxjQUExRCxDQVJxRTtBQVMzRTVCLFlBQUFBLE1BQU0sQ0FBQzhELHNCQUFELENBQU4sQ0FBK0JOLGNBQS9CLENBQ0MsaUVBREQsRUFFQyxFQUZELEVBR0MsQ0FBQyxTQUFELEVBQVksWUFBWixDQUhELEVBSUMsa0JBSkQ7QUFUMkU7QUFlM0UsU0FmQztBQUFBO0FBQUE7QUFBQSxRQUFGO0FBZ0JBLEtBOUVPLENBQVI7QUErRUEsR0Fud0JPLENBQVIiLCJzb3VyY2VSb290IjoiLiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBUcmFuc2FjdGlvbkhlbHBlciBmcm9tIFwic2FwL2ZlL2NvcmUvVHJhbnNhY3Rpb25IZWxwZXJcIjtcbmltcG9ydCBCdXN5TG9ja2VyIGZyb20gXCJzYXAvZmUvY29yZS9CdXN5TG9ja2VyXCI7XG5pbXBvcnQgZHJhZnQgZnJvbSBcInNhcC9mZS9jb3JlL2FjdGlvbnMvZHJhZnRcIjtcbmltcG9ydCBzdGlja3kgZnJvbSBcInNhcC9mZS9jb3JlL2FjdGlvbnMvc3RpY2t5XCI7XG5pbXBvcnQgQ29tbW9uVXRpbHMgZnJvbSBcInNhcC9mZS9jb3JlL0NvbW1vblV0aWxzXCI7XG5pbXBvcnQgeyBNb2NrTWV0YU1vZGVsLCBNb2NrTW9kZWwgfSBmcm9tIFwic2FwL2ZlL3Rlc3QvVUk1TW9ja0hlbHBlclwiO1xuaW1wb3J0IE1vZGVsSGVscGVyIGZyb20gXCJzYXAvZmUvY29yZS9oZWxwZXJzL01vZGVsSGVscGVyXCI7XG5pbXBvcnQgb3BlcmF0aW9ucyBmcm9tIFwic2FwL2ZlL2NvcmUvYWN0aW9ucy9vcGVyYXRpb25zXCI7XG5pbXBvcnQgUmVzb3VyY2VCdW5kbGUgZnJvbSBcInNhcC9iYXNlL2kxOG4vUmVzb3VyY2VCdW5kbGVcIjtcblxuY29uc3Qgb0FwcENvbXBvbmVudDogYW55ID0ge307XG5jb25zdCBvTG9ja09iamVjdDogYW55ID0ge307XG5kZXNjcmliZShcIlRyYW5zYWN0aW9uSGVscGVyXCIsICgpID0+IHtcblx0Y29uc3Qgb1RyYW5zYWN0aW9uSGVscGVyID0gbmV3IFRyYW5zYWN0aW9uSGVscGVyKG9BcHBDb21wb25lbnQsIG9Mb2NrT2JqZWN0KTtcblxuXHRkZXNjcmliZShcIl9nZXROZXdBY3Rpb24oKTogXCIsICgpID0+IHtcblx0XHRjb25zdCBhTmV3QWN0aW9uVGVzdERhdGEgPSBbXG5cdFx0XHR7XG5cdFx0XHRcdHNEZXNjcmlwdGlvbjogXCJUZXN0aW5nIGVtcHR5IHZhbHVlc1wiLFxuXHRcdFx0XHRvU3RhcnR1cFBhcmFtZXRlcnM6IHt9LFxuXHRcdFx0XHRzQ3JlYXRlSGFzaDogXCJcIixcblx0XHRcdFx0b01ldGFNb2RlbDoge30sXG5cdFx0XHRcdHNNZXRhUGF0aDogXCJcIixcblx0XHRcdFx0c0V4cGVjdGVkUmVzdWx0OiB1bmRlZmluZWQsXG5cdFx0XHRcdHNEZXNjT25TdWNjZXNzOiBcImVtcHR5IHBhcmFtZXRlcnM6IHVuZGVmaW5lZCByZXN1bHRcIlxuXHRcdFx0fSxcblx0XHRcdHtcblx0XHRcdFx0c0Rlc2NyaXB0aW9uOiBcIk1pc3NpbmcgTWV0YU1vZGVsXCIsXG5cdFx0XHRcdG9TdGFydHVwUGFyYW1ldGVyczoge1xuXHRcdFx0XHRcdHByZWZlcnJlZE1vZGU6IFtcImNyZWF0ZVdpdGg6Y29tLmNfc2FsZXNvcmRlcm1hbmFnZV9zZC5DcmVhdGVGcm9tQ3VzdG9tZXJcIl1cblx0XHRcdFx0fSxcblx0XHRcdFx0c0NyZWF0ZUhhc2g6IFwiXCIsXG5cdFx0XHRcdG9NZXRhTW9kZWw6IHt9LFxuXHRcdFx0XHRzTWV0YVBhdGg6IFwiXCIsXG5cdFx0XHRcdHNFeHBlY3RlZFJlc3VsdDogdW5kZWZpbmVkLFxuXHRcdFx0XHRzRGVzY09uU3VjY2VzczogXCJtaXNzaW5nIE1ldGFNb2RlbDogdW5kZWZpbmVkIHJlc3VsdFwiXG5cdFx0XHR9LFxuXHRcdFx0e1xuXHRcdFx0XHRzRGVzY3JpcHRpb246IFwidmFsaWQgZnVuY3Rpb24gY2FsbFwiLFxuXHRcdFx0XHRvU3RhcnR1cFBhcmFtZXRlcnM6IHtcblx0XHRcdFx0XHRwcmVmZXJyZWRNb2RlOiBbXCJjcmVhdGVXaXRoOmNvbS5jX3NhbGVzb3JkZXJtYW5hZ2Vfc2QuQ3JlYXRlRnJvbUN1c3RvbWVyXCJdXG5cdFx0XHRcdH0sXG5cdFx0XHRcdHNDcmVhdGVIYXNoOiBcIlNhbGVzT3JkZXJNYW5hZ2UoLi4uKT9pLWFjdGlvbj1jcmVhdGVXaXRoXCIsXG5cdFx0XHRcdG9NZXRhTW9kZWw6IHtcblx0XHRcdFx0XHRnZXRPYmplY3Q6IGZ1bmN0aW9uKCkge1xuXHRcdFx0XHRcdFx0cmV0dXJuIFwiTmV3QWN0aW9uIGZ1bmN0aW9uXCI7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9LFxuXHRcdFx0XHRzTWV0YVBhdGg6IFwiL1NhbGVzT3JkZXJNYW5hZ2VcIixcblx0XHRcdFx0c0V4cGVjdGVkUmVzdWx0OiBcImNvbS5jX3NhbGVzb3JkZXJtYW5hZ2Vfc2QuQ3JlYXRlRnJvbUN1c3RvbWVyXCIsXG5cdFx0XHRcdHNEZXNjT25TdWNjZXNzOiBcInZhbGlkIHBhcmFtZXRlcnM6IGZ1bmN0aW9uIGZvciBDcmVhdGVXaXRoIHJldHVybmVkXCJcblx0XHRcdH0sXG5cdFx0XHR7XG5cdFx0XHRcdHNEZXNjcmlwdGlvbjogXCJ2YWxpZCBmdW5jdGlvbiBjYWxsIGZvciBOZXdBY3Rpb25cIixcblx0XHRcdFx0b1N0YXJ0dXBQYXJhbWV0ZXJzOiB7XG5cdFx0XHRcdFx0cHJlZmVycmVkTW9kZTogW1wiY3JlYXRlXCJdXG5cdFx0XHRcdH0sXG5cdFx0XHRcdHNDcmVhdGVIYXNoOiBcIlNhbGVzT3JkZXJNYW5hZ2UoLi4uKT9pLWFjdGlvbj1jcmVhdGVcIixcblx0XHRcdFx0b01ldGFNb2RlbDoge1xuXHRcdFx0XHRcdGdldE9iamVjdDogZnVuY3Rpb24oKSB7XG5cdFx0XHRcdFx0XHRyZXR1cm4gXCJOZXdBY3Rpb24gZnVuY3Rpb25cIjtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0sXG5cdFx0XHRcdHNNZXRhUGF0aDogXCIvU2FsZXNPcmRlck1hbmFnZVwiLFxuXHRcdFx0XHRzRXhwZWN0ZWRSZXN1bHQ6IFwiTmV3QWN0aW9uIGZ1bmN0aW9uXCIsXG5cdFx0XHRcdHNEZXNjT25TdWNjZXNzOiBcInZhbGlkIHBhcmFtZXRlcnM6IGZ1bmN0aW9uIGZvciBDcmVhdGUgZnJvbSBOZXdBY3Rpb24gcmV0dXJuZWRcIlxuXHRcdFx0fVxuXHRcdF07XG5cblx0XHRhTmV3QWN0aW9uVGVzdERhdGEuZm9yRWFjaChvVGVzdERhdGEgPT4ge1xuXHRcdFx0aXQoXG5cdFx0XHRcdG9UZXN0RGF0YS5zRGVzY3JpcHRpb24sXG5cdFx0XHRcdHtcblx0XHRcdFx0XHRcInJlZmVyZW5jZXNcIjogW1xuXHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHRcInR5cGVcIjogXCJcIixcblx0XHRcdFx0XHRcdFx0XCJJRFwiOiBcIlwiXG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XVxuXHRcdFx0XHR9LFxuXHRcdFx0XHRmdW5jdGlvbigpIHtcblx0XHRcdFx0XHRjb25zdCBzUmVzdWx0ID0gb1RyYW5zYWN0aW9uSGVscGVyLl9nZXROZXdBY3Rpb24oXG5cdFx0XHRcdFx0XHRvVGVzdERhdGEub1N0YXJ0dXBQYXJhbWV0ZXJzLFxuXHRcdFx0XHRcdFx0b1Rlc3REYXRhLnNDcmVhdGVIYXNoLFxuXHRcdFx0XHRcdFx0b1Rlc3REYXRhLm9NZXRhTW9kZWwgYXMgYW55LFxuXHRcdFx0XHRcdFx0b1Rlc3REYXRhLnNNZXRhUGF0aFxuXHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0ZXhwZWN0KHNSZXN1bHQpLnRvRXF1YWwob1Rlc3REYXRhLnNFeHBlY3RlZFJlc3VsdCk7XG5cdFx0XHRcdH1cblx0XHRcdCk7XG5cdFx0fSk7XG5cdH0pO1xuXG5cdGRlc2NyaWJlKFwiX2dldFNwZWNpZmljQ3JlYXRlQWN0aW9uRGlhbG9nTGFiZWwoKTogXCIsICgpID0+IHtcblx0XHRjb25zdCBhVGVzdHMgPSBbXG5cdFx0XHR7XG5cdFx0XHRcdHRpdGxlOiBcImFsbCBlbXB0eSBvciB1bmRlZmluZWRcIixcblx0XHRcdFx0b01ldGFNb2RlbDogdW5kZWZpbmVkLFxuXHRcdFx0XHRzTWV0YVBhdGg6IFwiXCIsXG5cdFx0XHRcdHNOZXdBY3Rpb246IFwiXCIsXG5cdFx0XHRcdG9SZXNvdXJjZUJ1bmRsZUNvcmU6IHVuZGVmaW5lZCxcblx0XHRcdFx0ZXhwZWN0ZWQ6IHVuZGVmaW5lZFxuXHRcdFx0fSxcblx0XHRcdHtcblx0XHRcdFx0dGl0bGU6IFwid2l0aCBlbXB0eSBNZXRhTW9kZWwgYW5kIHZhbGlkIFJlc291cmNlQnVuZGxlXCIsXG5cdFx0XHRcdG9NZXRhTW9kZWw6IHVuZGVmaW5lZCxcblx0XHRcdFx0c01ldGFQYXRoOiBcIlwiLFxuXHRcdFx0XHRzTmV3QWN0aW9uOiBcIlwiLFxuXHRcdFx0XHRvUmVzb3VyY2VCdW5kbGVDb3JlOiB7XG5cdFx0XHRcdFx0Z2V0VGV4dDogZnVuY3Rpb24oKSB7XG5cdFx0XHRcdFx0XHRyZXR1cm4gXCJDcmVhdGVcIjtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0sXG5cdFx0XHRcdGV4cGVjdGVkOiBcIkNyZWF0ZVwiXG5cdFx0XHR9LFxuXHRcdFx0e1xuXHRcdFx0XHR0aXRsZTogXCJNZXRhTW9kZWwgcmV0dXJucyB1bmRlZmluZWRcIixcblx0XHRcdFx0b01ldGFNb2RlbDoge1xuXHRcdFx0XHRcdGdldE9iamVjdDogZnVuY3Rpb24oKSB7XG5cdFx0XHRcdFx0XHRyZXR1cm4gdW5kZWZpbmVkO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSxcblx0XHRcdFx0c01ldGFQYXRoOiBcIlwiLFxuXHRcdFx0XHRzTmV3QWN0aW9uOiBcIlwiLFxuXHRcdFx0XHRvUmVzb3VyY2VCdW5kbGVDb3JlOiB7XG5cdFx0XHRcdFx0Z2V0VGV4dDogZnVuY3Rpb24oKSB7XG5cdFx0XHRcdFx0XHRyZXR1cm4gXCJDcmVhdGVcIjtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0sXG5cdFx0XHRcdGV4cGVjdGVkOiBcIkNyZWF0ZVwiXG5cdFx0XHR9LFxuXHRcdFx0e1xuXHRcdFx0XHR0aXRsZTogXCJNZXRhTW9kZWwgcmV0dXJucyBsYWJlbCBmb3IgQWN0aW9uXCIsXG5cdFx0XHRcdG9NZXRhTW9kZWw6IHtcblx0XHRcdFx0XHRnZXRPYmplY3Q6IGZ1bmN0aW9uKHNBbm5vdGF0aW9uOiBzdHJpbmcpIHtcblx0XHRcdFx0XHRcdHJldHVybiBzQW5ub3RhdGlvbiA9PT1cblx0XHRcdFx0XHRcdFx0XCIvU2FsZXNPcmRlck1hbmFnZS9jb20uY19zYWxlc29yZGVybWFuYWdlX3NkLkNyZWF0ZUZyb21DdXN0b21lckBjb20uc2FwLnZvY2FidWxhcmllcy5Db21tb24udjEuTGFiZWxcIlxuXHRcdFx0XHRcdFx0XHQ/IFwiQWN0aW9uOiBDcmVhdGUgZnJvbSBDdXN0b21lclwiXG5cdFx0XHRcdFx0XHRcdDogdW5kZWZpbmVkO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSxcblx0XHRcdFx0c01ldGFQYXRoOiBcIi9TYWxlc09yZGVyTWFuYWdlXCIsXG5cdFx0XHRcdHNOZXdBY3Rpb246IFwiY29tLmNfc2FsZXNvcmRlcm1hbmFnZV9zZC5DcmVhdGVGcm9tQ3VzdG9tZXJcIixcblx0XHRcdFx0b1Jlc291cmNlQnVuZGxlQ29yZToge1xuXHRcdFx0XHRcdGdldFRleHQ6IGZ1bmN0aW9uKCkge1xuXHRcdFx0XHRcdFx0cmV0dXJuIFwiQ3JlYXRlXCI7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9LFxuXHRcdFx0XHRleHBlY3RlZDogXCJBY3Rpb246IENyZWF0ZSBmcm9tIEN1c3RvbWVyXCJcblx0XHRcdH0sXG5cdFx0XHR7XG5cdFx0XHRcdHRpdGxlOiBcIkxpbmVJdGVtIGFuZCBBY3Rpb24gbGFiZWwgYXZhaWxhYmxlIC0tPiBMaW5lSXRlbSBoYXMgcHJpb3JpdHlcIixcblx0XHRcdFx0b01ldGFNb2RlbDoge1xuXHRcdFx0XHRcdGdldE9iamVjdDogZnVuY3Rpb24oc0Fubm90YXRpb246IHN0cmluZykge1xuXHRcdFx0XHRcdFx0c3dpdGNoIChzQW5ub3RhdGlvbikge1xuXHRcdFx0XHRcdFx0XHRjYXNlIFwiL1NhbGVzT3JkZXJNYW5hZ2UvQGNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLkxpbmVJdGVtXCI6XG5cdFx0XHRcdFx0XHRcdFx0cmV0dXJuIFtcblx0XHRcdFx0XHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0JFR5cGU6IFwiY29tLnNhcC52b2NhYnVsYXJpZXMuVUkudjEuRGF0YUZpZWxkRm9yQWN0aW9uXCIsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdEFjdGlvbjogXCJjb20uY19zYWxlc29yZGVybWFuYWdlX3NkLkNyZWF0ZVdpdGhTYWxlc09yZGVyVHlwZVwiLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRMYWJlbDogXCJCb3VuZCBBY3Rpb24gd2l0aCBwYXJhbXNcIlxuXHRcdFx0XHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0JFR5cGU6IFwiY29tLnNhcC52b2NhYnVsYXJpZXMuVUkudjEuRGF0YUZpZWxkRm9ySW50ZW50QmFzZWROYXZpZ2F0aW9uXCIsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdEFjdGlvbjogXCJtYW5hZ2VJbmxpbmVcIixcblx0XHRcdFx0XHRcdFx0XHRcdFx0TGFiZWw6IFwiSUJOXCIsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdE5hdmlnYXRpb25BdmFpbGFibGU6IHRydWUsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFJlcXVpcmVzQ29udGV4dDogZmFsc2UsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFNlbWFudGljT2JqZWN0OiBcIlNhbGVzT3JkZXJcIlxuXHRcdFx0XHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0JFR5cGU6IFwiY29tLnNhcC52b2NhYnVsYXJpZXMuVUkudjEuRGF0YUZpZWxkRm9yQWN0aW9uXCIsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdEFjdGlvbjogXCJjb20uY19zYWxlc29yZGVybWFuYWdlX3NkLkNyZWF0ZUZyb21DdXN0b21lclwiLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRMYWJlbDogXCJMaW5lSXRlbTogQ3JlYXRlIGZyb20gQ3VzdG9tZXJcIlxuXHRcdFx0XHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0JFR5cGU6IFwiY29tLnNhcC52b2NhYnVsYXJpZXMuVUkudjEuRGF0YUZpZWxkXCIsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFZhbHVlOiB7ICRQYXRoOiBcIklEXCIgfVxuXHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdF07XG5cdFx0XHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0XHRcdGNhc2UgXCIvU2FsZXNPcmRlck1hbmFnZS9jb20uY19zYWxlc29yZGVybWFuYWdlX3NkLkNyZWF0ZUZyb21DdXN0b21lckBjb20uc2FwLnZvY2FidWxhcmllcy5Db21tb24udjEuTGFiZWxcIjpcblx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gXCJBY3Rpb246IENyZWF0ZSBmcm9tIEN1c3RvbWVyXCI7XG5cdFx0XHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0XHRcdGRlZmF1bHQ6XG5cdFx0XHRcdFx0XHRcdFx0cmV0dXJuIHVuZGVmaW5lZDtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0sXG5cdFx0XHRcdHNNZXRhUGF0aDogXCIvU2FsZXNPcmRlck1hbmFnZVwiLFxuXHRcdFx0XHRzTmV3QWN0aW9uOiBcImNvbS5jX3NhbGVzb3JkZXJtYW5hZ2Vfc2QuQ3JlYXRlRnJvbUN1c3RvbWVyXCIsXG5cdFx0XHRcdG9SZXNvdXJjZUJ1bmRsZUNvcmU6IHtcblx0XHRcdFx0XHRnZXRUZXh0OiBmdW5jdGlvbigpIHtcblx0XHRcdFx0XHRcdHJldHVybiBcIkNyZWF0ZVwiO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSxcblx0XHRcdFx0ZXhwZWN0ZWQ6IFwiTGluZUl0ZW06IENyZWF0ZSBmcm9tIEN1c3RvbWVyXCJcblx0XHRcdH0sXG5cdFx0XHR7XG5cdFx0XHRcdHRpdGxlOiBcIkxpbmVJdGVtIGFubm90YXRpb24gaGFzIGFkZGl0aW9uYWwgY29sbGVjdGlvbiBpbiBicmFja2V0c1wiLFxuXHRcdFx0XHRvTWV0YU1vZGVsOiB7XG5cdFx0XHRcdFx0Z2V0T2JqZWN0OiBmdW5jdGlvbihzQW5ub3RhdGlvbjogc3RyaW5nKSB7XG5cdFx0XHRcdFx0XHRzd2l0Y2ggKHNBbm5vdGF0aW9uKSB7XG5cdFx0XHRcdFx0XHRcdGNhc2UgXCIvU2FsZXNPcmRlck1hbmFnZS9AY29tLnNhcC52b2NhYnVsYXJpZXMuVUkudjEuTGluZUl0ZW1cIjpcblx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gW1xuXHRcdFx0XHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHRcdFx0XHQkVHlwZTogXCJjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5EYXRhRmllbGRGb3JBY3Rpb25cIixcblx0XHRcdFx0XHRcdFx0XHRcdFx0QWN0aW9uOiBcImNvbS5jX3NhbGVzb3JkZXJtYW5hZ2Vfc2QuQ3JlYXRlV2l0aFNhbGVzT3JkZXJUeXBlXCIsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdExhYmVsOiBcIkJvdW5kIEFjdGlvbiB3aXRoIHBhcmFtc1wiXG5cdFx0XHRcdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHRcdFx0XHQkVHlwZTogXCJjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5EYXRhRmllbGRcIixcblx0XHRcdFx0XHRcdFx0XHRcdFx0TGFiZWw6IFwibm8gYWN0aW9uIGF2YWlsYWJsZVwiLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRWYWx1ZTogeyAkUGF0aDogXCJOT0FDVElPTlwiIH1cblx0XHRcdFx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdCRUeXBlOiBcImNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLkRhdGFGaWVsZEZvckludGVudEJhc2VkTmF2aWdhdGlvblwiLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRBY3Rpb246IFwibWFuYWdlSW5saW5lXCIsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdExhYmVsOiBcIklCTlwiLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHROYXZpZ2F0aW9uQXZhaWxhYmxlOiB0cnVlLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRSZXF1aXJlc0NvbnRleHQ6IGZhbHNlLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRTZW1hbnRpY09iamVjdDogXCJTYWxlc09yZGVyXCJcblx0XHRcdFx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdCRUeXBlOiBcImNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLkRhdGFGaWVsZEZvckFjdGlvblwiLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRBY3Rpb246XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XCJjb20uY19zYWxlc29yZGVybWFuYWdlX3NkLkNyZWF0ZUZyb21DdXN0b21lcihDb2xsZWN0aW9uKGNvbS5zYXAuZ2F0ZXdheS5zcnZkLmNfc2FsZXNvcmRlcm1hbmFnZV9zZC52MDAwMS5TYWxlc09yZGVyTWFuYWdlVHlwZSkpXCIsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdExhYmVsOiBcIkxpbmVJdGVtOiBDcmVhdGUgZnJvbSBDdXN0b21lclwiXG5cdFx0XHRcdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHRcdFx0XHQkVHlwZTogXCJjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5EYXRhRmllbGRcIixcblx0XHRcdFx0XHRcdFx0XHRcdFx0VmFsdWU6IHsgJFBhdGg6IFwiSURcIiB9XG5cdFx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0XTtcblx0XHRcdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHRcdFx0Y2FzZSBcIi9TYWxlc09yZGVyTWFuYWdlL2NvbS5jX3NhbGVzb3JkZXJtYW5hZ2Vfc2QuQ3JlYXRlRnJvbUN1c3RvbWVyQGNvbS5zYXAudm9jYWJ1bGFyaWVzLkNvbW1vbi52MS5MYWJlbFwiOlxuXHRcdFx0XHRcdFx0XHRcdHJldHVybiBcIkFjdGlvbjogQ3JlYXRlIGZyb20gQ3VzdG9tZXJcIjtcblx0XHRcdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHRcdFx0ZGVmYXVsdDpcblx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gdW5kZWZpbmVkO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSxcblx0XHRcdFx0c01ldGFQYXRoOiBcIi9TYWxlc09yZGVyTWFuYWdlXCIsXG5cdFx0XHRcdHNOZXdBY3Rpb246IFwiY29tLmNfc2FsZXNvcmRlcm1hbmFnZV9zZC5DcmVhdGVGcm9tQ3VzdG9tZXJcIixcblx0XHRcdFx0b1Jlc291cmNlQnVuZGxlQ29yZToge1xuXHRcdFx0XHRcdGdldFRleHQ6IGZ1bmN0aW9uKCkge1xuXHRcdFx0XHRcdFx0cmV0dXJuIFwiQ3JlYXRlXCI7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9LFxuXHRcdFx0XHRleHBlY3RlZDogXCJMaW5lSXRlbTogQ3JlYXRlIGZyb20gQ3VzdG9tZXJcIlxuXHRcdFx0fSxcblx0XHRcdHtcblx0XHRcdFx0dGl0bGU6IFwiTGluZUl0ZW0gYW5ub3RhdGlvbiB3aXRoIHNpbWlsYXIgYWN0aW9uIG5hbWVzXCIsXG5cdFx0XHRcdG9NZXRhTW9kZWw6IHtcblx0XHRcdFx0XHRnZXRPYmplY3Q6IGZ1bmN0aW9uKHNBbm5vdGF0aW9uOiBzdHJpbmcpIHtcblx0XHRcdFx0XHRcdHN3aXRjaCAoc0Fubm90YXRpb24pIHtcblx0XHRcdFx0XHRcdFx0Y2FzZSBcIi9TYWxlc09yZGVyTWFuYWdlL0Bjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5MaW5lSXRlbVwiOlxuXHRcdFx0XHRcdFx0XHRcdHJldHVybiBbXG5cdFx0XHRcdFx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdCRUeXBlOiBcImNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLkRhdGFGaWVsZEZvckFjdGlvblwiLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRBY3Rpb246IFwiY29tLmNfc2FsZXNvcmRlcm1hbmFnZV9zZC5DcmVhdGVXaXRoU2FsZXNPcmRlclR5cGVcIixcblx0XHRcdFx0XHRcdFx0XHRcdFx0TGFiZWw6IFwiQm91bmQgQWN0aW9uIHdpdGggcGFyYW1zXCJcblx0XHRcdFx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdCRUeXBlOiBcImNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLkRhdGFGaWVsZFwiLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRMYWJlbDogXCJubyBhY3Rpb24gYXZhaWxhYmxlXCIsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFZhbHVlOiB7ICRQYXRoOiBcIk5PQUNUSU9OXCIgfVxuXHRcdFx0XHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0JFR5cGU6IFwiY29tLnNhcC52b2NhYnVsYXJpZXMuVUkudjEuRGF0YUZpZWxkRm9yQWN0aW9uXCIsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdEFjdGlvbjogXCJjb20uY19zYWxlc29yZGVybWFuYWdlX3NkLkNyZWF0ZUZyb21DdXN0b21lckV4dGVuZGVkXCIsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdExhYmVsOiBcIkxpbmVJdGVtOiBDcmVhdGUgZnJvbSBDdXN0b21lciBFeHRlbmRlZFwiXG5cdFx0XHRcdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHRcdFx0XHQkVHlwZTogXCJjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5EYXRhRmllbGRGb3JJbnRlbnRCYXNlZE5hdmlnYXRpb25cIixcblx0XHRcdFx0XHRcdFx0XHRcdFx0QWN0aW9uOiBcIm1hbmFnZUlubGluZVwiLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRMYWJlbDogXCJJQk5cIixcblx0XHRcdFx0XHRcdFx0XHRcdFx0TmF2aWdhdGlvbkF2YWlsYWJsZTogdHJ1ZSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0UmVxdWlyZXNDb250ZXh0OiBmYWxzZSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0U2VtYW50aWNPYmplY3Q6IFwiU2FsZXNPcmRlclwiXG5cdFx0XHRcdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHRcdFx0XHQkVHlwZTogXCJjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5EYXRhRmllbGRGb3JBY3Rpb25cIixcblx0XHRcdFx0XHRcdFx0XHRcdFx0QWN0aW9uOiBcImNvbS5jX3NhbGVzb3JkZXJtYW5hZ2Vfc2QuQ3JlYXRlRnJvbUN1c3RvbWVyXCIsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdExhYmVsOiBcIkxpbmVJdGVtOiBDcmVhdGUgZnJvbSBDdXN0b21lclwiXG5cdFx0XHRcdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHRcdFx0XHQkVHlwZTogXCJjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5EYXRhRmllbGRcIixcblx0XHRcdFx0XHRcdFx0XHRcdFx0VmFsdWU6IHsgJFBhdGg6IFwiSURcIiB9XG5cdFx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0XTtcblx0XHRcdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHRcdFx0Y2FzZSBcIi9TYWxlc09yZGVyTWFuYWdlL2NvbS5jX3NhbGVzb3JkZXJtYW5hZ2Vfc2QuQ3JlYXRlRnJvbUN1c3RvbWVyQGNvbS5zYXAudm9jYWJ1bGFyaWVzLkNvbW1vbi52MS5MYWJlbFwiOlxuXHRcdFx0XHRcdFx0XHRcdHJldHVybiBcIkFjdGlvbjogQ3JlYXRlIGZyb20gQ3VzdG9tZXJcIjtcblx0XHRcdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHRcdFx0ZGVmYXVsdDpcblx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gdW5kZWZpbmVkO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSxcblx0XHRcdFx0c01ldGFQYXRoOiBcIi9TYWxlc09yZGVyTWFuYWdlXCIsXG5cdFx0XHRcdHNOZXdBY3Rpb246IFwiY29tLmNfc2FsZXNvcmRlcm1hbmFnZV9zZC5DcmVhdGVGcm9tQ3VzdG9tZXJcIixcblx0XHRcdFx0b1Jlc291cmNlQnVuZGxlQ29yZToge1xuXHRcdFx0XHRcdGdldFRleHQ6IGZ1bmN0aW9uKCkge1xuXHRcdFx0XHRcdFx0cmV0dXJuIFwiQ3JlYXRlXCI7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9LFxuXHRcdFx0XHRleHBlY3RlZDogXCJMaW5lSXRlbTogQ3JlYXRlIGZyb20gQ3VzdG9tZXJcIlxuXHRcdFx0fSxcblx0XHRcdHtcblx0XHRcdFx0dGl0bGU6IFwiTWV0YU1vZGVsIGhhcyBsYWJlbCBmb3IgQWN0aW9uLCBidXQgTWV0YVBhdGggbWlzc2luZ1wiLFxuXHRcdFx0XHRvTWV0YU1vZGVsOiB7XG5cdFx0XHRcdFx0Z2V0T2JqZWN0OiBmdW5jdGlvbihzQW5ub3RhdGlvbjogc3RyaW5nKSB7XG5cdFx0XHRcdFx0XHRyZXR1cm4gc0Fubm90YXRpb24gPT09XG5cdFx0XHRcdFx0XHRcdFwiL1NhbGVzT3JkZXJNYW5hZ2UvY29tLmNfc2FsZXNvcmRlcm1hbmFnZV9zZC5DcmVhdGVGcm9tQ3VzdG9tZXJAY29tLnNhcC52b2NhYnVsYXJpZXMuQ29tbW9uLnYxLkxhYmVsXCJcblx0XHRcdFx0XHRcdFx0PyBcIkFjdGlvbjogQ3JlYXRlIGJ5IEN1c3RvbWVyXCJcblx0XHRcdFx0XHRcdFx0OiB1bmRlZmluZWQ7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9LFxuXHRcdFx0XHRzTWV0YVBhdGg6IFwiXCIsXG5cdFx0XHRcdHNOZXdBY3Rpb246IFwiY29tLmNfc2FsZXNvcmRlcm1hbmFnZV9zZC5DcmVhdGVGcm9tQ3VzdG9tZXJcIixcblx0XHRcdFx0b1Jlc291cmNlQnVuZGxlQ29yZToge1xuXHRcdFx0XHRcdGdldFRleHQ6IGZ1bmN0aW9uKCkge1xuXHRcdFx0XHRcdFx0cmV0dXJuIFwiQ3JlYXRlXCI7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9LFxuXHRcdFx0XHRleHBlY3RlZDogXCJDcmVhdGVcIlxuXHRcdFx0fVxuXHRcdF07XG5cblx0XHRhVGVzdHMuZm9yRWFjaChvVGVzdCA9PiB7XG5cdFx0XHRpdChcblx0XHRcdFx0b1Rlc3QudGl0bGUsXG5cdFx0XHRcdHtcblx0XHRcdFx0XHRcInJlZmVyZW5jZXNcIjogW1xuXHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHRcInR5cGVcIjogXCJCQ1BcIixcblx0XHRcdFx0XHRcdFx0XCJJRFwiOiBcIjIxNzAzMjYzMTFcIlxuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdF1cblx0XHRcdFx0fSxcblx0XHRcdFx0ZnVuY3Rpb24oKSB7XG5cdFx0XHRcdFx0ZXhwZWN0KFxuXHRcdFx0XHRcdFx0b1RyYW5zYWN0aW9uSGVscGVyLl9nZXRTcGVjaWZpY0NyZWF0ZUFjdGlvbkRpYWxvZ0xhYmVsKFxuXHRcdFx0XHRcdFx0XHRvVGVzdC5vTWV0YU1vZGVsIGFzIGFueSxcblx0XHRcdFx0XHRcdFx0b1Rlc3Quc01ldGFQYXRoLFxuXHRcdFx0XHRcdFx0XHRvVGVzdC5zTmV3QWN0aW9uLFxuXHRcdFx0XHRcdFx0XHRvVGVzdC5vUmVzb3VyY2VCdW5kbGVDb3JlIGFzIGFueVxuXHRcdFx0XHRcdFx0KVxuXHRcdFx0XHRcdCkudG9CZShvVGVzdC5leHBlY3RlZCk7XG5cdFx0XHRcdH1cblx0XHRcdCk7XG5cdFx0fSk7XG5cdH0pO1xuXHRkZXNjcmliZShcImNhbmNlbERvY3VtZW50KCk6IG9uQmVmb3JlRGlzY2FyZFwiLCAoKSA9PiB7XG5cdFx0bGV0IG9UcmFuc2FjdGlvbkhlbHBlcjogVHJhbnNhY3Rpb25IZWxwZXI7XG5cdFx0bGV0IG9Db250ZXh0OiBhbnk7XG5cdFx0bGV0IG9Mb2NrTW9jaztcblx0XHRsZXQgb1VubG9ja01vY2s7XG5cdFx0bGV0IG9HZXRQcm9ncmFtbWluZ01vZGVsTW9jazogYW55O1xuXHRcdGxldCBvT25CZWZvcmVEaXNjYXJkTW9jazogYW55O1xuXHRcdGxldCBvRGVsZXRlRHJhZnRNb2NrOiBhbnk7XG5cdFx0bGV0IG9EaXNjYXJkRG9jdW1lbnRNb2NrOiBhbnk7XG5cdFx0bGV0IG1QYXJhbXM6IGFueTtcblx0XHRsZXQgbWVzc2FnZUhhbmRsZXI6IGFueTtcblx0XHRiZWZvcmVFYWNoKCgpID0+IHtcblx0XHRcdG9UcmFuc2FjdGlvbkhlbHBlciA9IG5ldyBUcmFuc2FjdGlvbkhlbHBlcihvQXBwQ29tcG9uZW50LCBvTG9ja09iamVjdCk7XG5cdFx0XHRvQ29udGV4dCA9IHtcblx0XHRcdFx0Z2V0TW9kZWw6IGZ1bmN0aW9uKCkge1xuXHRcdFx0XHRcdHJldHVybiB7XG5cdFx0XHRcdFx0XHRiaW5kQ29udGV4dDogZnVuY3Rpb24oKSB7XG5cdFx0XHRcdFx0XHRcdHJldHVybiB7XG5cdFx0XHRcdFx0XHRcdFx0Z2V0Qm91bmRDb250ZXh0OiBmdW5jdGlvbigpIHtcblx0XHRcdFx0XHRcdFx0XHRcdHJldHVybiB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdHJlcXVlc3RPYmplY3Q6IGZ1bmN0aW9uKCkge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdHJldHVybiBQcm9taXNlLnJlc29sdmUoZmFsc2UpO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0XHR9O1xuXHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0fTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9O1xuXHRcdFx0XHR9LFxuXHRcdFx0XHRnZXRQYXRoOiBmdW5jdGlvbigpIHtcblx0XHRcdFx0XHRyZXR1cm4gXCJcIjtcblx0XHRcdFx0fSxcblx0XHRcdFx0aGFzUGVuZGluZ0NoYW5nZXM6IGZ1bmN0aW9uKCkge1xuXHRcdFx0XHRcdHJldHVybiB0cnVlO1xuXHRcdFx0XHR9LFxuXHRcdFx0XHRnZXRCaW5kaW5nOiBmdW5jdGlvbigpIHtcblx0XHRcdFx0XHRyZXR1cm4ge1xuXHRcdFx0XHRcdFx0cmVzZXRDaGFuZ2VzOiBmdW5jdGlvbigpIHtcblx0XHRcdFx0XHRcdFx0cmV0dXJuIHVuZGVmaW5lZDtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9O1xuXHRcdFx0XHR9LFxuXHRcdFx0XHRyZWZyZXNoOiBmdW5jdGlvbigpIHtcblx0XHRcdFx0XHRyZXR1cm4gdW5kZWZpbmVkO1xuXHRcdFx0XHR9LFxuXHRcdFx0XHRyZXF1ZXN0T2JqZWN0OiBmdW5jdGlvbigpIHtcblx0XHRcdFx0XHRyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKGZhbHNlKTtcblx0XHRcdFx0fVxuXHRcdFx0fTtcblx0XHRcdG9Mb2NrTW9jayA9IGplc3Quc3B5T24oQnVzeUxvY2tlciwgXCJsb2NrXCIpO1xuXHRcdFx0b0xvY2tNb2NrLm1vY2tJbXBsZW1lbnRhdGlvbigoKSA9PiBmYWxzZSk7XG5cdFx0XHRvVW5sb2NrTW9jayA9IGplc3Quc3B5T24oQnVzeUxvY2tlciwgXCJ1bmxvY2tcIik7XG5cdFx0XHRvVW5sb2NrTW9jay5tb2NrSW1wbGVtZW50YXRpb24oKCkgPT4gZmFsc2UpO1xuXHRcdFx0bVBhcmFtcyA9IHtcblx0XHRcdFx0Y2FuY2VsQnV0dG9uOiBudWxsLFxuXHRcdFx0XHRza2lwRGlzY2FyZFBvcG92ZXI6IHRydWUsXG5cdFx0XHRcdGJlZm9yZUNhbmNlbENhbGxCYWNrOiBmdW5jdGlvbigpIHtcblx0XHRcdFx0XHRyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7XG5cdFx0XHRcdH1cblx0XHRcdH07XG5cdFx0XHRvR2V0UHJvZ3JhbW1pbmdNb2RlbE1vY2sgPSBqZXN0LnNweU9uKG9UcmFuc2FjdGlvbkhlbHBlciwgXCJnZXRQcm9ncmFtbWluZ01vZGVsXCIpO1xuXHRcdFx0bWVzc2FnZUhhbmRsZXIgPSB7XG5cdFx0XHRcdHJlbW92ZVRyYW5zaXRpb25NZXNzYWdlczogZnVuY3Rpb24oKSB7XG5cdFx0XHRcdFx0cmV0dXJuIHVuZGVmaW5lZDtcblx0XHRcdFx0fSxcblx0XHRcdFx0c2hvd01lc3NhZ2VzOiBmdW5jdGlvbigpIHtcblx0XHRcdFx0XHRyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7XG5cdFx0XHRcdH1cblx0XHRcdH07XG5cdFx0XHRvRGVsZXRlRHJhZnRNb2NrID0gamVzdC5zcHlPbihkcmFmdCwgXCJkZWxldGVEcmFmdFwiKTtcblx0XHRcdG9EZWxldGVEcmFmdE1vY2subW9ja0ltcGxlbWVudGF0aW9uKCgpID0+IHtcblx0XHRcdFx0cmV0dXJuIFByb21pc2UucmVzb2x2ZSgpO1xuXHRcdFx0fSk7XG5cdFx0XHRvRGlzY2FyZERvY3VtZW50TW9jayA9IGplc3Quc3B5T24oc3RpY2t5LCBcImRpc2NhcmREb2N1bWVudFwiKTtcblx0XHRcdG9EaXNjYXJkRG9jdW1lbnRNb2NrLm1vY2tJbXBsZW1lbnRhdGlvbigoKSA9PiB7XG5cdFx0XHRcdHJldHVybiBQcm9taXNlLnJlc29sdmUoKTtcblx0XHRcdH0pO1xuXHRcdH0pO1xuXHRcdGFmdGVyRWFjaCgoKSA9PiB7XG5cdFx0XHRqZXN0LnJlc3RvcmVBbGxNb2NrcygpO1xuXHRcdH0pO1xuXHRcdGl0KFwib25CZWZvcmVEaXNjYXJkIGlzIHJlc29sdmVkIGZvciBkcmFmdCBwcm9ncmFtbWluZyBtb2RlbFwiLCBhc3luYyAoKSA9PiB7XG5cdFx0XHRvR2V0UHJvZ3JhbW1pbmdNb2RlbE1vY2subW9ja0ltcGxlbWVudGF0aW9uKCgpID0+IHtcblx0XHRcdFx0cmV0dXJuIFwiRHJhZnRcIjtcblx0XHRcdH0pO1xuXHRcdFx0b09uQmVmb3JlRGlzY2FyZE1vY2sgPSBqZXN0LnNweU9uKG1QYXJhbXMsIFwiYmVmb3JlQ2FuY2VsQ2FsbEJhY2tcIik7XG5cdFx0XHRvT25CZWZvcmVEaXNjYXJkTW9jay5tb2NrSW1wbGVtZW50YXRpb24oKCkgPT4ge1xuXHRcdFx0XHRyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7XG5cdFx0XHR9KTtcblx0XHRcdGF3YWl0IG9UcmFuc2FjdGlvbkhlbHBlci5jYW5jZWxEb2N1bWVudChvQ29udGV4dCwgbVBhcmFtcywge30sIG1lc3NhZ2VIYW5kbGVyKTtcblx0XHRcdGV4cGVjdChvT25CZWZvcmVEaXNjYXJkTW9jaykudG9IYXZlQmVlbkNhbGxlZFRpbWVzKDEpO1xuXHRcdFx0ZXhwZWN0KG9PbkJlZm9yZURpc2NhcmRNb2NrKS50b0JlQ2FsbGVkV2l0aCh7IFwiY29udGV4dFwiOiBvQ29udGV4dCB9KTtcblx0XHRcdGV4cGVjdChvRGVsZXRlRHJhZnRNb2NrKS50b0hhdmVCZWVuQ2FsbGVkVGltZXMoMSk7XG5cdFx0fSk7XG5cdFx0aXQoXCJvbkJlZm9yZURpc2NhcmQgaXMgcmVqZWN0ZWQgZm9yIGRyYWZ0IHByb2dyYW1taW5nIG1vZGVsXCIsIGFzeW5jICgpID0+IHtcblx0XHRcdHRyeSB7XG5cdFx0XHRcdG9HZXRQcm9ncmFtbWluZ01vZGVsTW9jay5tb2NrSW1wbGVtZW50YXRpb24oKCkgPT4ge1xuXHRcdFx0XHRcdHJldHVybiBcIkRyYWZ0XCI7XG5cdFx0XHRcdH0pO1xuXHRcdFx0XHRvT25CZWZvcmVEaXNjYXJkTW9jayA9IGplc3Quc3B5T24obVBhcmFtcywgXCJiZWZvcmVDYW5jZWxDYWxsQmFja1wiKTtcblx0XHRcdFx0b09uQmVmb3JlRGlzY2FyZE1vY2subW9ja0ltcGxlbWVudGF0aW9uKCgpID0+IHtcblx0XHRcdFx0XHRyZXR1cm4gUHJvbWlzZS5yZWplY3QoKTtcblx0XHRcdFx0fSk7XG5cdFx0XHRcdGF3YWl0IG9UcmFuc2FjdGlvbkhlbHBlci5jYW5jZWxEb2N1bWVudChvQ29udGV4dCwgbVBhcmFtcywge30sIG1lc3NhZ2VIYW5kbGVyKTtcblx0XHRcdH0gY2F0Y2gge1xuXHRcdFx0XHRleHBlY3Qob09uQmVmb3JlRGlzY2FyZE1vY2spLnRvSGF2ZUJlZW5DYWxsZWRUaW1lcygxKTtcblx0XHRcdFx0ZXhwZWN0KG9PbkJlZm9yZURpc2NhcmRNb2NrKS50b0JlQ2FsbGVkV2l0aCh7IFwiY29udGV4dFwiOiBvQ29udGV4dCB9KTtcblx0XHRcdFx0ZXhwZWN0KG9EZWxldGVEcmFmdE1vY2spLnRvSGF2ZUJlZW5DYWxsZWRUaW1lcygwKTtcblx0XHRcdH1cblx0XHR9KTtcblx0XHRpdChcIm9uQmVmb3JlRGlzY2FyZCBpcyByZXNvbHZlZCBmb3Igc3RpY2t5IHByb2dyYW1taW5nIG1vZGVsXCIsIGFzeW5jICgpID0+IHtcblx0XHRcdG9HZXRQcm9ncmFtbWluZ01vZGVsTW9jay5tb2NrSW1wbGVtZW50YXRpb24oKCkgPT4ge1xuXHRcdFx0XHRyZXR1cm4gXCJTdGlja3lcIjtcblx0XHRcdH0pO1xuXHRcdFx0b09uQmVmb3JlRGlzY2FyZE1vY2sgPSBqZXN0LnNweU9uKG1QYXJhbXMsIFwiYmVmb3JlQ2FuY2VsQ2FsbEJhY2tcIik7XG5cdFx0XHRvT25CZWZvcmVEaXNjYXJkTW9jay5tb2NrSW1wbGVtZW50YXRpb24oKCkgPT4ge1xuXHRcdFx0XHRyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7XG5cdFx0XHR9KTtcblx0XHRcdGF3YWl0IG9UcmFuc2FjdGlvbkhlbHBlci5jYW5jZWxEb2N1bWVudChvQ29udGV4dCwgbVBhcmFtcywge30sIG1lc3NhZ2VIYW5kbGVyKTtcblx0XHRcdGV4cGVjdChvT25CZWZvcmVEaXNjYXJkTW9jaykudG9IYXZlQmVlbkNhbGxlZFRpbWVzKDEpO1xuXHRcdFx0ZXhwZWN0KG9PbkJlZm9yZURpc2NhcmRNb2NrKS50b0JlQ2FsbGVkV2l0aCh7IFwiY29udGV4dFwiOiBvQ29udGV4dCB9KTtcblx0XHRcdGV4cGVjdChvRGlzY2FyZERvY3VtZW50TW9jaykudG9IYXZlQmVlbkNhbGxlZFRpbWVzKDEpO1xuXHRcdH0pO1xuXHRcdGl0KFwib25CZWZvcmVEaXNjYXJkIGlzIHJlamVjdGVkIGZvciBzdGlja3kgcHJvZ3JhbW1pbmcgbW9kZWxcIiwgYXN5bmMgKCkgPT4ge1xuXHRcdFx0dHJ5IHtcblx0XHRcdFx0b0dldFByb2dyYW1taW5nTW9kZWxNb2NrLm1vY2tJbXBsZW1lbnRhdGlvbigoKSA9PiB7XG5cdFx0XHRcdFx0cmV0dXJuIFwiU3RpY2t5XCI7XG5cdFx0XHRcdH0pO1xuXHRcdFx0XHRvT25CZWZvcmVEaXNjYXJkTW9jayA9IGplc3Quc3B5T24obVBhcmFtcywgXCJiZWZvcmVDYW5jZWxDYWxsQmFja1wiKTtcblx0XHRcdFx0b09uQmVmb3JlRGlzY2FyZE1vY2subW9ja0ltcGxlbWVudGF0aW9uKCgpID0+IHtcblx0XHRcdFx0XHRyZXR1cm4gUHJvbWlzZS5yZWplY3QoKTtcblx0XHRcdFx0fSk7XG5cdFx0XHRcdGF3YWl0IG9UcmFuc2FjdGlvbkhlbHBlci5jYW5jZWxEb2N1bWVudChvQ29udGV4dCwgbVBhcmFtcywge30sIG1lc3NhZ2VIYW5kbGVyKTtcblx0XHRcdH0gY2F0Y2gge1xuXHRcdFx0XHRleHBlY3Qob09uQmVmb3JlRGlzY2FyZE1vY2spLnRvSGF2ZUJlZW5DYWxsZWRUaW1lcygxKTtcblx0XHRcdFx0ZXhwZWN0KG9PbkJlZm9yZURpc2NhcmRNb2NrKS50b0JlQ2FsbGVkV2l0aCh7IFwiY29udGV4dFwiOiBvQ29udGV4dCB9KTtcblx0XHRcdFx0ZXhwZWN0KG9EaXNjYXJkRG9jdW1lbnRNb2NrKS50b0hhdmVCZWVuQ2FsbGVkVGltZXMoMCk7XG5cdFx0XHR9XG5cdFx0fSk7XG5cdH0pO1xuXHRkZXNjcmliZShcImRlbGV0ZURvY3VtZW50KCk6IG9uQmVmb3JlRGVsZXRlXCIsICgpID0+IHtcblx0XHRsZXQgb1RyYW5zYWN0aW9uSGVscGVyOiBUcmFuc2FjdGlvbkhlbHBlcjtcblx0XHRsZXQgdkNvbnRleHRzO1xuXHRcdGxldCBvTG9ja01vY2s7XG5cdFx0bGV0IG9VbmxvY2tNb2NrO1xuXHRcdGxldCBvR2V0UHJvZ3JhbW1pbmdNb2RlbE1vY2s6IGFueTtcblx0XHRsZXQgb09uQmVmb3JlRGVsZXRlTW9jazogYW55O1xuXHRcdGxldCBvRGVsZXRlRHJhZnRNb2NrOiBhbnk7XG5cdFx0bGV0IG9GaW5kQWN0aXZlRHJhZnRSb290Q29udGV4dHNNb2NrO1xuXHRcdGxldCBvQWZ0ZXJEZWxldGVQcm9jZXNzTW9jaztcblx0XHRsZXQgb0dldFRyYW5zbGF0ZWRUZXh0TW9jaztcblx0XHRsZXQgbVBhcmFtczogYW55O1xuXHRcdGxldCBtZXNzYWdlSGFuZGxlcjogYW55O1xuXHRcdGZ1bmN0aW9uIGNyZWF0ZUNvbnRleHQoc2FsZXNPcmRlcjogYW55KSB7XG5cdFx0XHRyZXR1cm4ge1xuXHRcdFx0XHRnZXRPYmplY3Q6IGZ1bmN0aW9uKCkge1xuXHRcdFx0XHRcdHJldHVybiB7XG5cdFx0XHRcdFx0XHRTYWxlc09yZGVyOiBzYWxlc09yZGVyXG5cdFx0XHRcdFx0fTtcblx0XHRcdFx0fVxuXHRcdFx0fTtcblx0XHR9XG5cdFx0YmVmb3JlRWFjaCgoKSA9PiB7XG5cdFx0XHRvVHJhbnNhY3Rpb25IZWxwZXIgPSBuZXcgVHJhbnNhY3Rpb25IZWxwZXIob0FwcENvbXBvbmVudCwgb0xvY2tPYmplY3QpO1xuXHRcdFx0b0xvY2tNb2NrID0gamVzdC5zcHlPbihCdXN5TG9ja2VyLCBcImxvY2tcIik7XG5cdFx0XHRvTG9ja01vY2subW9ja1JldHVyblZhbHVlKGZhbHNlKTtcblx0XHRcdG9VbmxvY2tNb2NrID0gamVzdC5zcHlPbihCdXN5TG9ja2VyLCBcInVubG9ja1wiKTtcblx0XHRcdG9VbmxvY2tNb2NrLm1vY2tSZXR1cm5WYWx1ZShmYWxzZSk7XG5cdFx0XHRtUGFyYW1zID0ge1xuXHRcdFx0XHR1blNhdmVkQ29udGV4dHM6IFtdLFxuXHRcdFx0XHRsb2NrZWRDb250ZXh0czogW10sXG5cdFx0XHRcdGVkaXRGbG93OiB7XG5cdFx0XHRcdFx0YmFzZToge1xuXHRcdFx0XHRcdFx0ZWRpdEZsb3c6IHtcblx0XHRcdFx0XHRcdFx0b25CZWZvcmVEZWxldGU6IGZ1bmN0aW9uKCkge1xuXHRcdFx0XHRcdFx0XHRcdHJldHVybiBQcm9taXNlLnJlc29sdmUoKTtcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fTtcblx0XHRcdG9HZXRQcm9ncmFtbWluZ01vZGVsTW9jayA9IGplc3Quc3B5T24ob1RyYW5zYWN0aW9uSGVscGVyLCBcImdldFByb2dyYW1taW5nTW9kZWxcIik7XG5cdFx0XHRvR2V0UHJvZ3JhbW1pbmdNb2RlbE1vY2subW9ja1JldHVyblZhbHVlKFwiRHJhZnRcIik7XG5cdFx0XHRtZXNzYWdlSGFuZGxlciA9IHtcblx0XHRcdFx0c2hvd01lc3NhZ2VEaWFsb2c6IGZ1bmN0aW9uKCkge1xuXHRcdFx0XHRcdHJldHVybiBQcm9taXNlLnJlc29sdmUoKTtcblx0XHRcdFx0fSxcblx0XHRcdFx0c2hvd01lc3NhZ2VzOiBmdW5jdGlvbigpIHtcblx0XHRcdFx0XHRyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7XG5cdFx0XHRcdH1cblx0XHRcdH07XG5cdFx0XHRvRGVsZXRlRHJhZnRNb2NrID0gamVzdC5zcHlPbihkcmFmdCwgXCJkZWxldGVEcmFmdFwiKTtcblx0XHRcdG9EZWxldGVEcmFmdE1vY2subW9ja1Jlc29sdmVkVmFsdWUoKTtcblx0XHRcdG9GaW5kQWN0aXZlRHJhZnRSb290Q29udGV4dHNNb2NrID0gamVzdC5zcHlPbihvVHJhbnNhY3Rpb25IZWxwZXIsIFwiZmluZEFjdGl2ZURyYWZ0Um9vdENvbnRleHRzXCIpO1xuXHRcdFx0b0ZpbmRBY3RpdmVEcmFmdFJvb3RDb250ZXh0c01vY2subW9ja1Jlc29sdmVkVmFsdWUoKTtcblx0XHRcdG9BZnRlckRlbGV0ZVByb2Nlc3NNb2NrID0gamVzdC5zcHlPbihvVHJhbnNhY3Rpb25IZWxwZXIsIFwiYWZ0ZXJEZWxldGVQcm9jZXNzXCIpO1xuXHRcdFx0b0FmdGVyRGVsZXRlUHJvY2Vzc01vY2subW9ja1JldHVyblZhbHVlKCk7XG5cdFx0XHRvR2V0VHJhbnNsYXRlZFRleHRNb2NrID0gamVzdC5zcHlPbihDb21tb25VdGlscywgXCJnZXRUcmFuc2xhdGVkVGV4dFwiKTtcblx0XHRcdG9HZXRUcmFuc2xhdGVkVGV4dE1vY2subW9ja1JldHVyblZhbHVlKFwiXCIpO1xuXHRcdH0pO1xuXHRcdGFmdGVyRWFjaCgoKSA9PiB7XG5cdFx0XHRqZXN0LnJlc3RvcmVBbGxNb2NrcygpO1xuXHRcdH0pO1xuXHRcdGl0KFwib25CZWZvcmVEZWxldGUgaXMgcmVzb2x2ZWQgZm9yIHNpbmdsZSBDb250ZXh0XCIsIGFzeW5jICgpID0+IHtcblx0XHRcdHZDb250ZXh0cyA9IFtjcmVhdGVDb250ZXh0KDY0MzcpXTtcblx0XHRcdG1QYXJhbXMubnVtYmVyT2ZTZWxlY3RlZENvbnRleHRzID0gMTtcblx0XHRcdG1QYXJhbXMubm9EaWFsb2cgPSB0cnVlO1xuXHRcdFx0bVBhcmFtcy5iZWZvcmVEZWxldGVDYWxsQmFjayA9IGZ1bmN0aW9uKCkge1xuXHRcdFx0XHRyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7XG5cdFx0XHR9O1xuXHRcdFx0b09uQmVmb3JlRGVsZXRlTW9jayA9IGplc3Quc3B5T24obVBhcmFtcywgXCJiZWZvcmVEZWxldGVDYWxsQmFja1wiKTtcblx0XHRcdG9PbkJlZm9yZURlbGV0ZU1vY2subW9ja1Jlc29sdmVkVmFsdWUoKTtcblx0XHRcdGF3YWl0IG9UcmFuc2FjdGlvbkhlbHBlci5kZWxldGVEb2N1bWVudCh2Q29udGV4dHMsIG1QYXJhbXMsIHt9LCBtZXNzYWdlSGFuZGxlcik7XG5cdFx0XHRleHBlY3Qob09uQmVmb3JlRGVsZXRlTW9jaykudG9IYXZlQmVlbkNhbGxlZFRpbWVzKDEpO1xuXHRcdFx0ZXhwZWN0KG9PbkJlZm9yZURlbGV0ZU1vY2spLnRvQmVDYWxsZWRXaXRoKHsgXCJjb250ZXh0c1wiOiB2Q29udGV4dHMgfSk7XG5cdFx0XHRleHBlY3Qob0RlbGV0ZURyYWZ0TW9jaykudG9IYXZlQmVlbkNhbGxlZFRpbWVzKDEpO1xuXHRcdH0pO1xuXHRcdGl0KFwib25CZWZvcmVEZWxldGUgaXMgcmVzb2x2ZWQgZm9yIG11bHRpcGxlIGNvbnRleHRzXCIsIGFzeW5jICgpID0+IHtcblx0XHRcdHZDb250ZXh0cyA9IFtjcmVhdGVDb250ZXh0KDY0MzcpLCBjcmVhdGVDb250ZXh0KDI5MTU3MTcpXTtcblx0XHRcdHRyeSB7XG5cdFx0XHRcdG9HZXRQcm9ncmFtbWluZ01vZGVsTW9jay5tb2NrUmV0dXJuVmFsdWUoXCJEcmFmdFwiKTtcblx0XHRcdFx0bVBhcmFtcy5ub0RpYWxvZyA9IHRydWU7XG5cdFx0XHRcdG1QYXJhbXMuYmVmb3JlRGVsZXRlQ2FsbEJhY2sgPSBmdW5jdGlvbigpIHtcblx0XHRcdFx0XHRyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7XG5cdFx0XHRcdH07XG5cdFx0XHRcdG9PbkJlZm9yZURlbGV0ZU1vY2sgPSBqZXN0LnNweU9uKG1QYXJhbXMsIFwiYmVmb3JlRGVsZXRlQ2FsbEJhY2tcIik7XG5cdFx0XHRcdG9PbkJlZm9yZURlbGV0ZU1vY2subW9ja1Jlc29sdmVkVmFsdWUoKTtcblx0XHRcdFx0YXdhaXQgb1RyYW5zYWN0aW9uSGVscGVyLmRlbGV0ZURvY3VtZW50KHZDb250ZXh0cywgbVBhcmFtcywge30sIG1lc3NhZ2VIYW5kbGVyKTtcblx0XHRcdH0gY2F0Y2gge1xuXHRcdFx0XHRleHBlY3Qob09uQmVmb3JlRGVsZXRlTW9jaykudG9IYXZlQmVlbkNhbGxlZFRpbWVzKDEpO1xuXHRcdFx0XHRleHBlY3Qob09uQmVmb3JlRGVsZXRlTW9jaykudG9CZUNhbGxlZFdpdGgoeyBcImNvbnRleHRzXCI6IHZDb250ZXh0cyB9KTtcblx0XHRcdFx0ZXhwZWN0KG9EZWxldGVEcmFmdE1vY2spLnRvSGF2ZUJlZW5DYWxsZWRUaW1lcygyKTtcblx0XHRcdH1cblx0XHR9KTtcblx0fSk7XG5cdGRlc2NyaWJlKFwiY3JlYXRlRG9jdW1lbnQoKTogb25CZWZvcmVDcmVhdGVcIiwgKCkgPT4ge1xuXHRcdGxldCBvVHJhbnNhY3Rpb25IZWxwZXI6IFRyYW5zYWN0aW9uSGVscGVyO1xuXHRcdGxldCBvTWFpbkxpc3RCaW5kaW5nOiBhbnk7XG5cdFx0bGV0IG9Mb2NrTW9jaztcblx0XHRsZXQgb1VubG9ja01vY2s7XG5cdFx0bGV0IG9PbkJlZm9yZUNyZWF0ZU1vY2s6IGFueTtcblx0XHRsZXQgb0FwcENvbXBvbmVudE1vY2s7XG5cdFx0bGV0IG9HZXRQcm9ncmFtbWluZ01vZGVsTW9jaztcblx0XHRsZXQgb01vZGVsSGVscGVyTW9jaztcblx0XHRsZXQgb0NhbGxGdW5jdGlvbkltcG9ydE1vY2s7XG5cdFx0bGV0IG9PbkFmdGVyQ3JlYXRlQ29tcGxldGlvbk1vY2s7XG5cdFx0bGV0IG9DcmVhdGVNb2NrOiBhbnk7XG5cdFx0bGV0IG1QYXJhbXM6IGFueTtcblx0XHRsZXQgbWVzc2FnZUhhbmRsZXI6IGFueTtcblx0XHRiZWZvcmVFYWNoKCgpID0+IHtcblx0XHRcdGNvbnN0IG1vY2tNb2RlbCA9IG5ldyBNb2NrTW9kZWwoKTtcblx0XHRcdGNvbnN0IG1vY2tNZXRhTW9kZWwgPSBuZXcgTW9ja01ldGFNb2RlbCh7fSk7XG5cdFx0XHRtb2NrTW9kZWwuc2V0TWV0YU1vZGVsKG1vY2tNZXRhTW9kZWwpO1xuXHRcdFx0b1RyYW5zYWN0aW9uSGVscGVyID0gbmV3IFRyYW5zYWN0aW9uSGVscGVyKG9BcHBDb21wb25lbnQsIG9Mb2NrT2JqZWN0KTtcblx0XHRcdG9NYWluTGlzdEJpbmRpbmcgPSB7XG5cdFx0XHRcdGdldE1vZGVsOiBmdW5jdGlvbigpIHtcblx0XHRcdFx0XHRyZXR1cm4gbW9ja01vZGVsO1xuXHRcdFx0XHR9LFxuXHRcdFx0XHRnZXRIZWFkZXJDb250ZXh0OiBmdW5jdGlvbigpIHtcblx0XHRcdFx0XHRyZXR1cm4ge1xuXHRcdFx0XHRcdFx0Z2V0UGF0aDogZnVuY3Rpb24oKSB7XG5cdFx0XHRcdFx0XHRcdHJldHVybiBudWxsO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH07XG5cdFx0XHRcdH0sXG5cdFx0XHRcdGlzUmVsYXRpdmU6IGZ1bmN0aW9uKCkge1xuXHRcdFx0XHRcdHJldHVybiB0cnVlO1xuXHRcdFx0XHR9LFxuXHRcdFx0XHRnZXRQYXRoOiBmdW5jdGlvbigpIHtcblx0XHRcdFx0XHRyZXR1cm4gXCIvU2FsZXNPcmRlck1hbmFnZVwiO1xuXHRcdFx0XHR9LFxuXHRcdFx0XHRjcmVhdGU6IGZ1bmN0aW9uKCkge1xuXHRcdFx0XHRcdHJldHVybiBQcm9taXNlLnJlc29sdmUoKTtcblx0XHRcdFx0fVxuXHRcdFx0fTtcblx0XHRcdG9BcHBDb21wb25lbnRNb2NrID0gamVzdC5zcHlPbihvVHJhbnNhY3Rpb25IZWxwZXIsIFwiX2dldEFwcENvbXBvbmVudFwiKTtcblx0XHRcdG9BcHBDb21wb25lbnRNb2NrLm1vY2tJbXBsZW1lbnRhdGlvbigoKSA9PiB7XG5cdFx0XHRcdHJldHVybiB7XG5cdFx0XHRcdFx0Z2V0Q29tcG9uZW50RGF0YTogZnVuY3Rpb24oKSB7XG5cdFx0XHRcdFx0XHRyZXR1cm4gbnVsbDtcblx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdGdldFJvdXRlclByb3h5OiBmdW5jdGlvbigpIHtcblx0XHRcdFx0XHRcdHJldHVybiB7XG5cdFx0XHRcdFx0XHRcdGdldEhhc2g6IGZ1bmN0aW9uKCkge1xuXHRcdFx0XHRcdFx0XHRcdHJldHVybiBcIlwiO1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHR9O1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSBhcyBhbnk7XG5cdFx0XHR9KTtcblx0XHRcdG9PbkFmdGVyQ3JlYXRlQ29tcGxldGlvbk1vY2sgPSBqZXN0LnNweU9uKG9UcmFuc2FjdGlvbkhlbHBlciwgXCJvbkFmdGVyQ3JlYXRlQ29tcGxldGlvblwiKTtcblx0XHRcdG9PbkFmdGVyQ3JlYXRlQ29tcGxldGlvbk1vY2subW9ja1Jlc29sdmVkVmFsdWUodW5kZWZpbmVkKTtcblx0XHRcdG9HZXRQcm9ncmFtbWluZ01vZGVsTW9jayA9IGplc3Quc3B5T24ob1RyYW5zYWN0aW9uSGVscGVyLCBcImdldFByb2dyYW1taW5nTW9kZWxcIik7XG5cdFx0XHRvTG9ja01vY2sgPSBqZXN0LnNweU9uKEJ1c3lMb2NrZXIsIFwibG9ja1wiKTtcblx0XHRcdG9Mb2NrTW9jay5tb2NrUmV0dXJuVmFsdWUoZmFsc2UpO1xuXHRcdFx0b1VubG9ja01vY2sgPSBqZXN0LnNweU9uKEJ1c3lMb2NrZXIsIFwidW5sb2NrXCIpO1xuXHRcdFx0b1VubG9ja01vY2subW9ja1JldHVyblZhbHVlKGZhbHNlKTtcblx0XHRcdG9Nb2RlbEhlbHBlck1vY2sgPSBqZXN0LnNweU9uKE1vZGVsSGVscGVyLCBcImdldFRhcmdldEVudGl0eVNldFwiKTtcblx0XHRcdG9Nb2RlbEhlbHBlck1vY2subW9ja1JldHVyblZhbHVlKFwiXCIpO1xuXHRcdFx0b0NhbGxGdW5jdGlvbkltcG9ydE1vY2sgPSBqZXN0LnNweU9uKG9wZXJhdGlvbnMsIFwiY2FsbEZ1bmN0aW9uSW1wb3J0XCIpO1xuXHRcdFx0b0NhbGxGdW5jdGlvbkltcG9ydE1vY2subW9ja1Jlc29sdmVkVmFsdWUodW5kZWZpbmVkKTtcblx0XHRcdG1QYXJhbXMgPSB7XG5cdFx0XHRcdGNyZWF0aW9uTW9kZTogXCJDcmVhdGlvblJvd1wiLFxuXHRcdFx0XHRiZWZvcmVDcmVhdGVDYWxsQmFjazogZnVuY3Rpb24oKSB7XG5cdFx0XHRcdFx0cmV0dXJuIFByb21pc2UucmVzb2x2ZSgpO1xuXHRcdFx0XHR9XG5cdFx0XHR9O1xuXHRcdFx0b0dldFByb2dyYW1taW5nTW9kZWxNb2NrID0gamVzdC5zcHlPbihvVHJhbnNhY3Rpb25IZWxwZXIsIFwiZ2V0UHJvZ3JhbW1pbmdNb2RlbFwiKTtcblx0XHRcdG9HZXRQcm9ncmFtbWluZ01vZGVsTW9jay5tb2NrUmV0dXJuVmFsdWUoXCJEcmFmdFwiIGFzIGFueSk7XG5cdFx0XHRtZXNzYWdlSGFuZGxlciA9IHtcblx0XHRcdFx0cmVtb3ZlVHJhbnNpdGlvbk1lc3NhZ2VzOiBmdW5jdGlvbigpIHtcblx0XHRcdFx0XHRyZXR1cm4gdW5kZWZpbmVkO1xuXHRcdFx0XHR9LFxuXHRcdFx0XHRzaG93TWVzc2FnZXM6IGZ1bmN0aW9uKCkge1xuXHRcdFx0XHRcdHJldHVybiBQcm9taXNlLnJlc29sdmUoKTtcblx0XHRcdFx0fSxcblx0XHRcdFx0c2hvd01lc3NhZ2VEaWFsb2c6IGZ1bmN0aW9uKCkge1xuXHRcdFx0XHRcdHJldHVybiBQcm9taXNlLnJlc29sdmUoKTtcblx0XHRcdFx0fVxuXHRcdFx0fTtcblx0XHR9KTtcblx0XHRhZnRlckVhY2goKCkgPT4ge1xuXHRcdFx0amVzdC5yZXN0b3JlQWxsTW9ja3MoKTtcblx0XHR9KTtcblx0XHRpdChcIm9uQmVmb3JlQ3JlYXRlIGlzIHJlc29sdmVkXCIsIGFzeW5jICgpID0+IHtcblx0XHRcdG9PbkJlZm9yZUNyZWF0ZU1vY2sgPSBqZXN0LnNweU9uKG1QYXJhbXMsIFwiYmVmb3JlQ3JlYXRlQ2FsbEJhY2tcIik7XG5cdFx0XHRvT25CZWZvcmVDcmVhdGVNb2NrLm1vY2tSZXNvbHZlZFZhbHVlKCk7XG5cdFx0XHRvQ3JlYXRlTW9jayA9IGplc3Quc3B5T24ob01haW5MaXN0QmluZGluZywgXCJjcmVhdGVcIik7XG5cdFx0XHRvQ3JlYXRlTW9jay5tb2NrUmVzb2x2ZWRWYWx1ZSgpO1xuXHRcdFx0YXdhaXQgb1RyYW5zYWN0aW9uSGVscGVyLmNyZWF0ZURvY3VtZW50KG9NYWluTGlzdEJpbmRpbmcsIG1QYXJhbXMsIHt9LCBtZXNzYWdlSGFuZGxlciwgZmFsc2UsIHVuZGVmaW5lZCk7XG5cdFx0XHRleHBlY3Qob09uQmVmb3JlQ3JlYXRlTW9jaykudG9IYXZlQmVlbkNhbGxlZFRpbWVzKDEpO1xuXHRcdFx0ZXhwZWN0KG9PbkJlZm9yZUNyZWF0ZU1vY2spLnRvQmVDYWxsZWRXaXRoKHsgXCJjb250ZXh0UGF0aFwiOiBcIi9TYWxlc09yZGVyTWFuYWdlXCIgfSk7XG5cdFx0XHRleHBlY3Qob0NyZWF0ZU1vY2spLnRvSGF2ZUJlZW5DYWxsZWRUaW1lcygxKTtcblx0XHR9KTtcblx0XHRpdChcIm9uQmVmb3JlQ3JlYXRlIGlzIHJlamVjdGVkXCIsIGFzeW5jICgpID0+IHtcblx0XHRcdHRyeSB7XG5cdFx0XHRcdG9PbkJlZm9yZUNyZWF0ZU1vY2sgPSBqZXN0LnNweU9uKG1QYXJhbXMsIFwiYmVmb3JlQ3JlYXRlQ2FsbEJhY2tcIik7XG5cdFx0XHRcdG9PbkJlZm9yZUNyZWF0ZU1vY2subW9ja1Jlc29sdmVkVmFsdWUoKTtcblx0XHRcdFx0b0NyZWF0ZU1vY2sgPSBqZXN0LnNweU9uKG9NYWluTGlzdEJpbmRpbmcsIFwiY3JlYXRlXCIpO1xuXHRcdFx0XHRvQ3JlYXRlTW9jay5tb2NrUmVzb2x2ZWRWYWx1ZSgpO1xuXHRcdFx0XHRhd2FpdCBvVHJhbnNhY3Rpb25IZWxwZXIuY3JlYXRlRG9jdW1lbnQob01haW5MaXN0QmluZGluZywgbVBhcmFtcywge30sIG1lc3NhZ2VIYW5kbGVyLCBmYWxzZSwgdW5kZWZpbmVkKTtcblx0XHRcdH0gY2F0Y2gge1xuXHRcdFx0XHRleHBlY3Qob09uQmVmb3JlQ3JlYXRlTW9jaykudG9IYXZlQmVlbkNhbGxlZFRpbWVzKDEpO1xuXHRcdFx0XHRleHBlY3Qob09uQmVmb3JlQ3JlYXRlTW9jaykudG9CZUNhbGxlZFdpdGgoeyBcImNvbnRleHRQYXRoXCI6IFwiL1NhbGVzT3JkZXJNYW5hZ2VcIiB9KTtcblx0XHRcdFx0ZXhwZWN0KG9DcmVhdGVNb2NrKS50b0hhdmVCZWVuQ2FsbGVkVGltZXMoMCk7XG5cdFx0XHR9XG5cdFx0fSk7XG5cdH0pO1xuXG5cdGRlc2NyaWJlKFwiZGVsZXRlRG9jdW1lbnQoKTogd2FybmluZyB0ZXh0XCIsICgpID0+IHtcblx0XHRsZXQgb1RyYW5zYWN0aW9uSGVscGVyOiBUcmFuc2FjdGlvbkhlbHBlcjtcblx0XHRsZXQgdkNvbnRleHRzO1xuXHRcdGxldCBvR2V0UHJvZ3JhbW1pbmdNb2RlbE1vY2s6IGFueTtcblx0XHRsZXQgb0RlbGV0ZURyYWZ0TW9jazogYW55O1xuXHRcdGxldCBvR2V0VHJhbnNsYXRlZFRleHRNb2NrOiBhbnk7XG5cdFx0bGV0IG1QYXJhbXM6IGFueTtcblx0XHRsZXQgbWVzc2FnZUhhbmRsZXI6IGFueTtcblx0XHRmdW5jdGlvbiBjcmVhdGVDb250ZXh0KHNhbGVzT3JkZXI6IGFueSkge1xuXHRcdFx0cmV0dXJuIHtcblx0XHRcdFx0Z2V0T2JqZWN0OiBmdW5jdGlvbigpIHtcblx0XHRcdFx0XHRyZXR1cm4ge1xuXHRcdFx0XHRcdFx0U2FsZXNPcmRlcjogc2FsZXNPcmRlclxuXHRcdFx0XHRcdH07XG5cdFx0XHRcdH1cblx0XHRcdH07XG5cdFx0fVxuXHRcdGJlZm9yZUVhY2goKCkgPT4ge1xuXHRcdFx0b1RyYW5zYWN0aW9uSGVscGVyID0gbmV3IFRyYW5zYWN0aW9uSGVscGVyKG9BcHBDb21wb25lbnQsIG9Mb2NrT2JqZWN0KTtcblx0XHRcdG9HZXRQcm9ncmFtbWluZ01vZGVsTW9jayA9IGplc3Quc3B5T24ob1RyYW5zYWN0aW9uSGVscGVyLCBcImdldFByb2dyYW1taW5nTW9kZWxcIik7XG5cdFx0XHRvR2V0UHJvZ3JhbW1pbmdNb2RlbE1vY2subW9ja1JldHVyblZhbHVlKFwiRHJhZnRcIik7XG5cdFx0XHRtZXNzYWdlSGFuZGxlciA9IHtcblx0XHRcdFx0c2hvd01lc3NhZ2VEaWFsb2c6IGZ1bmN0aW9uKCkge1xuXHRcdFx0XHRcdHJldHVybiBQcm9taXNlLnJlc29sdmUoKTtcblx0XHRcdFx0fSxcblx0XHRcdFx0c2hvd01lc3NhZ2VzOiBmdW5jdGlvbigpIHtcblx0XHRcdFx0XHRyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7XG5cdFx0XHRcdH1cblx0XHRcdH07XG5cdFx0XHRvRGVsZXRlRHJhZnRNb2NrID0gamVzdC5zcHlPbihkcmFmdCwgXCJkZWxldGVEcmFmdFwiKTtcblx0XHRcdG9EZWxldGVEcmFmdE1vY2subW9ja1Jlc29sdmVkVmFsdWUoKTtcblx0XHRcdG9HZXRUcmFuc2xhdGVkVGV4dE1vY2sgPSBqZXN0LnNweU9uKENvbW1vblV0aWxzLCBcImdldFRyYW5zbGF0ZWRUZXh0XCIpO1xuXHRcdFx0b0dldFRyYW5zbGF0ZWRUZXh0TW9jay5tb2NrUmV0dXJuVmFsdWUoXCJcIik7XG5cdFx0fSk7XG5cdFx0YWZ0ZXJFYWNoKCgpID0+IHtcblx0XHRcdGplc3QucmVzdG9yZUFsbE1vY2tzKCk7XG5cdFx0fSk7XG5cdFx0aXQoXCJXYXJuaW5nIHRleHQgd2hlbiBvbmx5IHRpdGxlIGlzIGF2YWlsYWJsZVwiLCBhc3luYyAoKSA9PiB7XG5cdFx0XHR2Q29udGV4dHMgPSBbY3JlYXRlQ29udGV4dCgyOTE1NzE3KV07XG5cdFx0XHRtUGFyYW1zID0ge1xuXHRcdFx0XHRub0RpYWxvZzogdHJ1ZSxcblx0XHRcdFx0dGl0bGU6IFwiMjkxNTcxN1wiLFxuXHRcdFx0XHRlbnRpdHlTZXROYW1lOiBcIlNhbGVzT3JkZXJNYW5hZ2VcIlxuXHRcdFx0fTtcblx0XHRcdGF3YWl0IG9UcmFuc2FjdGlvbkhlbHBlci5kZWxldGVEb2N1bWVudCh2Q29udGV4dHMsIG1QYXJhbXMsIHt9LCBtZXNzYWdlSGFuZGxlcik7XG5cdFx0XHRleHBlY3Qob0dldFRyYW5zbGF0ZWRUZXh0TW9jaykudG9CZUNhbGxlZFdpdGgoXG5cdFx0XHRcdFwiQ19UUkFOU0FDVElPTl9IRUxQRVJfT0JKRUNUX1BBR0VfQ09ORklSTV9ERUxFVEVfV0lUSF9PQkpFQ1RJTkZPXCIsXG5cdFx0XHRcdHt9LFxuXHRcdFx0XHRbXCIyOTE1NzE3XCIsIFwiXCJdLFxuXHRcdFx0XHRcIlNhbGVzT3JkZXJNYW5hZ2VcIlxuXHRcdFx0KTtcblx0XHR9KTtcblx0XHRpdChcIldhcm5pbmcgdGV4dCB3aGVuIG9ubHkgZGVzY3JpcHRpb24gaXMgYXZhaWxhYmxlXCIsIGFzeW5jICgpID0+IHtcblx0XHRcdHZDb250ZXh0cyA9IFtjcmVhdGVDb250ZXh0KDI5MTU3MTcpXTtcblx0XHRcdG1QYXJhbXMgPSB7XG5cdFx0XHRcdG5vRGlhbG9nOiB0cnVlLFxuXHRcdFx0XHRkZXNjcmlwdGlvbjogXCJTYWxlc09yZGVyXCIsXG5cdFx0XHRcdGVudGl0eVNldE5hbWU6IFwiU2FsZXNPcmRlck1hbmFnZVwiXG5cdFx0XHR9O1xuXHRcdFx0YXdhaXQgb1RyYW5zYWN0aW9uSGVscGVyLmRlbGV0ZURvY3VtZW50KHZDb250ZXh0cywgbVBhcmFtcywge30sIG1lc3NhZ2VIYW5kbGVyKTtcblx0XHRcdGV4cGVjdChvR2V0VHJhbnNsYXRlZFRleHRNb2NrKS50b0JlQ2FsbGVkV2l0aChcIkNfVFJBTlNBQ1RJT05fSEVMUEVSX09CSkVDVF9QQUdFX0NPTkZJUk1fREVMRVRFX1dJVEhfT0JKRUNUVElUTEVfU0lOR1VMQVJcIiwge30pO1xuXHRcdH0pO1xuXHRcdGl0KFwiV2FybmluZyB0ZXh0IHdoZW4gYm90aCBkZXNjcmlwdGlvbiBhbmQgdGl0bGUgaXMgYXZhaWxhYmxlXCIsIGFzeW5jICgpID0+IHtcblx0XHRcdHZDb250ZXh0cyA9IFtjcmVhdGVDb250ZXh0KDI5MTU3MTcpXTtcblx0XHRcdG1QYXJhbXMgPSB7XG5cdFx0XHRcdG5vRGlhbG9nOiB0cnVlLFxuXHRcdFx0XHR0aXRsZTogXCIyOTE1NzE3XCIsXG5cdFx0XHRcdGRlc2NyaXB0aW9uOiBcIlNhbGVzT3JkZXJcIixcblx0XHRcdFx0ZW50aXR5U2V0TmFtZTogXCJTYWxlc09yZGVyTWFuYWdlXCJcblx0XHRcdH07XG5cdFx0XHRhd2FpdCBvVHJhbnNhY3Rpb25IZWxwZXIuZGVsZXRlRG9jdW1lbnQodkNvbnRleHRzLCBtUGFyYW1zLCB7fSwgbWVzc2FnZUhhbmRsZXIpO1xuXHRcdFx0ZXhwZWN0KG9HZXRUcmFuc2xhdGVkVGV4dE1vY2spLnRvQmVDYWxsZWRXaXRoKFxuXHRcdFx0XHRcIkNfVFJBTlNBQ1RJT05fSEVMUEVSX09CSkVDVF9QQUdFX0NPTkZJUk1fREVMRVRFX1dJVEhfT0JKRUNUSU5GT1wiLFxuXHRcdFx0XHR7fSxcblx0XHRcdFx0W1wiMjkxNTcxN1wiLCBcIlNhbGVzT3JkZXJcIl0sXG5cdFx0XHRcdFwiU2FsZXNPcmRlck1hbmFnZVwiXG5cdFx0XHQpO1xuXHRcdH0pO1xuXHR9KTtcbn0pO1xuIl19
@@ -6,6 +6,7 @@ import CommonUtils from "sap/fe/core/CommonUtils";
6
6
  import { MockMetaModel, MockModel } from "sap/fe/test/UI5MockHelper";
7
7
  import ModelHelper from "sap/fe/core/helpers/ModelHelper";
8
8
  import operations from "sap/fe/core/actions/operations";
9
+ import ResourceBundle from "sap/base/i18n/ResourceBundle";
9
10
 
10
11
  const oAppComponent: any = {};
11
12
  const oLockObject: any = {};
@@ -640,7 +641,7 @@ describe("TransactionHelper", () => {
640
641
  }
641
642
  };
642
643
  }
643
- };
644
+ } as any;
644
645
  });
645
646
  oOnAfterCreateCompletionMock = jest.spyOn(oTransactionHelper, "onAfterCreateCompletion");
646
647
  oOnAfterCreateCompletionMock.mockResolvedValue(undefined);
@@ -700,4 +701,84 @@ describe("TransactionHelper", () => {
700
701
  }
701
702
  });
702
703
  });
704
+
705
+ describe("deleteDocument(): warning text", () => {
706
+ let oTransactionHelper: TransactionHelper;
707
+ let vContexts;
708
+ let oGetProgrammingModelMock: any;
709
+ let oDeleteDraftMock: any;
710
+ let oGetTranslatedTextMock: any;
711
+ let mParams: any;
712
+ let messageHandler: any;
713
+ function createContext(salesOrder: any) {
714
+ return {
715
+ getObject: function() {
716
+ return {
717
+ SalesOrder: salesOrder
718
+ };
719
+ }
720
+ };
721
+ }
722
+ beforeEach(() => {
723
+ oTransactionHelper = new TransactionHelper(oAppComponent, oLockObject);
724
+ oGetProgrammingModelMock = jest.spyOn(oTransactionHelper, "getProgrammingModel");
725
+ oGetProgrammingModelMock.mockReturnValue("Draft");
726
+ messageHandler = {
727
+ showMessageDialog: function() {
728
+ return Promise.resolve();
729
+ },
730
+ showMessages: function() {
731
+ return Promise.resolve();
732
+ }
733
+ };
734
+ oDeleteDraftMock = jest.spyOn(draft, "deleteDraft");
735
+ oDeleteDraftMock.mockResolvedValue();
736
+ oGetTranslatedTextMock = jest.spyOn(CommonUtils, "getTranslatedText");
737
+ oGetTranslatedTextMock.mockReturnValue("");
738
+ });
739
+ afterEach(() => {
740
+ jest.restoreAllMocks();
741
+ });
742
+ it("Warning text when only title is available", async () => {
743
+ vContexts = [createContext(2915717)];
744
+ mParams = {
745
+ noDialog: true,
746
+ title: "2915717",
747
+ entitySetName: "SalesOrderManage"
748
+ };
749
+ await oTransactionHelper.deleteDocument(vContexts, mParams, {}, messageHandler);
750
+ expect(oGetTranslatedTextMock).toBeCalledWith(
751
+ "C_TRANSACTION_HELPER_OBJECT_PAGE_CONFIRM_DELETE_WITH_OBJECTINFO",
752
+ {},
753
+ ["2915717", ""],
754
+ "SalesOrderManage"
755
+ );
756
+ });
757
+ it("Warning text when only description is available", async () => {
758
+ vContexts = [createContext(2915717)];
759
+ mParams = {
760
+ noDialog: true,
761
+ description: "SalesOrder",
762
+ entitySetName: "SalesOrderManage"
763
+ };
764
+ await oTransactionHelper.deleteDocument(vContexts, mParams, {}, messageHandler);
765
+ expect(oGetTranslatedTextMock).toBeCalledWith("C_TRANSACTION_HELPER_OBJECT_PAGE_CONFIRM_DELETE_WITH_OBJECTTITLE_SINGULAR", {});
766
+ });
767
+ it("Warning text when both description and title is available", async () => {
768
+ vContexts = [createContext(2915717)];
769
+ mParams = {
770
+ noDialog: true,
771
+ title: "2915717",
772
+ description: "SalesOrder",
773
+ entitySetName: "SalesOrderManage"
774
+ };
775
+ await oTransactionHelper.deleteDocument(vContexts, mParams, {}, messageHandler);
776
+ expect(oGetTranslatedTextMock).toBeCalledWith(
777
+ "C_TRANSACTION_HELPER_OBJECT_PAGE_CONFIRM_DELETE_WITH_OBJECTINFO",
778
+ {},
779
+ ["2915717", "SalesOrder"],
780
+ "SalesOrderManage"
781
+ );
782
+ });
783
+ });
703
784
  });