@sapui5/sap.fe.core 1.108.2 → 1.110.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 (359) hide show
  1. package/README.md +5 -1
  2. package/package.json +11 -9
  3. package/src/.eslintrc +7 -0
  4. package/src/sap/fe/core/.library +39 -37
  5. package/src/sap/fe/core/.supportrc +3 -3
  6. package/src/sap/fe/core/ActionRuntime.js +72 -27
  7. package/src/sap/fe/core/ActionRuntime.ts +104 -21
  8. package/src/sap/fe/core/AppComponent.js +102 -120
  9. package/src/sap/fe/core/AppComponent.ts +148 -45
  10. package/src/sap/fe/core/AppStateHandler.js +105 -91
  11. package/src/sap/fe/core/AppStateHandler.ts +85 -23
  12. package/src/sap/fe/core/BaseController.js +5 -20
  13. package/src/sap/fe/core/BaseController.ts +11 -2
  14. package/src/sap/fe/core/CommonUtils.js +770 -1079
  15. package/src/sap/fe/core/CommonUtils.ts +750 -491
  16. package/src/sap/fe/core/ExtensionAPI.js +69 -96
  17. package/src/sap/fe/core/ExtensionAPI.ts +15 -17
  18. package/src/sap/fe/core/PageController.js +21 -46
  19. package/src/sap/fe/core/PageController.ts +11 -2
  20. package/src/sap/fe/core/TemplateComponent.js +6 -51
  21. package/src/sap/fe/core/TemplateComponent.ts +27 -16
  22. package/src/sap/fe/core/TemplateModel.js +18 -24
  23. package/src/sap/fe/core/TemplateModel.ts +25 -6
  24. package/src/sap/fe/core/buildingBlocks/AttributeModel.js +8 -23
  25. package/src/sap/fe/core/buildingBlocks/AttributeModel.ts +5 -4
  26. package/src/sap/fe/core/buildingBlocks/BuildingBlock.js +146 -180
  27. package/src/sap/fe/core/buildingBlocks/BuildingBlock.ts +144 -57
  28. package/src/sap/fe/core/buildingBlocks/BuildingBlockFormatter.js +1 -1
  29. package/src/sap/fe/core/buildingBlocks/BuildingBlockFragment.js +43 -0
  30. package/src/sap/fe/core/buildingBlocks/BuildingBlockFragment.ts +11 -0
  31. package/src/sap/fe/core/buildingBlocks/BuildingBlockRuntime.js +436 -556
  32. package/src/sap/fe/core/buildingBlocks/BuildingBlockRuntime.ts +288 -157
  33. package/src/sap/fe/core/buildingBlocks/TraceInfo.js +215 -202
  34. package/src/sap/fe/core/buildingBlocks/TraceInfo.ts +93 -51
  35. package/src/sap/fe/core/controllerextensions/BusyLocker.js +11 -26
  36. package/src/sap/fe/core/controllerextensions/EditFlow.js +407 -596
  37. package/src/sap/fe/core/controllerextensions/EditFlow.ts +163 -56
  38. package/src/sap/fe/core/controllerextensions/Feedback.js +70 -0
  39. package/src/sap/fe/core/controllerextensions/Feedback.ts +64 -0
  40. package/src/sap/fe/core/controllerextensions/IntentBasedNavigation.js +12 -23
  41. package/src/sap/fe/core/controllerextensions/IntentBasedNavigation.ts +1 -1
  42. package/src/sap/fe/core/controllerextensions/InternalEditFlow.js +127 -182
  43. package/src/sap/fe/core/controllerextensions/InternalEditFlow.ts +65 -32
  44. package/src/sap/fe/core/controllerextensions/InternalIntentBasedNavigation.js +96 -198
  45. package/src/sap/fe/core/controllerextensions/InternalIntentBasedNavigation.ts +4 -5
  46. package/src/sap/fe/core/controllerextensions/InternalRouting.js +134 -291
  47. package/src/sap/fe/core/controllerextensions/InternalRouting.ts +21 -12
  48. package/src/sap/fe/core/controllerextensions/KPIManagement.js +111 -214
  49. package/src/sap/fe/core/controllerextensions/KPIManagement.ts +44 -44
  50. package/src/sap/fe/core/controllerextensions/MassEdit.js +24 -44
  51. package/src/sap/fe/core/controllerextensions/MassEdit.ts +3 -2
  52. package/src/sap/fe/core/controllerextensions/MessageHandler.js +39 -52
  53. package/src/sap/fe/core/controllerextensions/MessageHandler.ts +26 -7
  54. package/src/sap/fe/core/controllerextensions/PageReady.js +81 -119
  55. package/src/sap/fe/core/controllerextensions/PageReady.ts +36 -15
  56. package/src/sap/fe/core/controllerextensions/Paginator.js +16 -51
  57. package/src/sap/fe/core/controllerextensions/Paginator.ts +1 -3
  58. package/src/sap/fe/core/controllerextensions/Placeholder.js +7 -33
  59. package/src/sap/fe/core/controllerextensions/Routing.js +24 -32
  60. package/src/sap/fe/core/controllerextensions/Routing.ts +6 -1
  61. package/src/sap/fe/core/controllerextensions/RoutingListener.js +1 -1
  62. package/src/sap/fe/core/controllerextensions/Share.js +53 -98
  63. package/src/sap/fe/core/controllerextensions/Share.ts +6 -3
  64. package/src/sap/fe/core/controllerextensions/SideEffects.js +103 -174
  65. package/src/sap/fe/core/controllerextensions/SideEffects.ts +37 -22
  66. package/src/sap/fe/core/controllerextensions/ViewState.js +341 -276
  67. package/src/sap/fe/core/controllerextensions/ViewState.ts +236 -84
  68. package/src/sap/fe/core/controllerextensions/collaboration/ActivityBase.js +6 -22
  69. package/src/sap/fe/core/controllerextensions/collaboration/ActivityBase.ts +8 -2
  70. package/src/sap/fe/core/controllerextensions/collaboration/ActivitySync.js +66 -88
  71. package/src/sap/fe/core/controllerextensions/collaboration/ActivitySync.ts +64 -17
  72. package/src/sap/fe/core/controllerextensions/collaboration/CollaborationCommon.js +28 -34
  73. package/src/sap/fe/core/controllerextensions/collaboration/CollaborationCommon.ts +22 -1
  74. package/src/sap/fe/core/controllerextensions/collaboration/Manage.js +69 -65
  75. package/src/sap/fe/core/controllerextensions/collaboration/Manage.ts +31 -12
  76. package/src/sap/fe/core/controllerextensions/collaboration/ManageDialog.fragment.xml +15 -13
  77. package/src/sap/fe/core/controllerextensions/editFlow/TransactionHelper.js +273 -906
  78. package/src/sap/fe/core/controllerextensions/editFlow/TransactionHelper.ts +142 -420
  79. package/src/sap/fe/core/controllerextensions/editFlow/draft.js +49 -115
  80. package/src/sap/fe/core/controllerextensions/editFlow/draft.ts +12 -7
  81. package/src/sap/fe/core/controllerextensions/editFlow/draftDataLossPopup.js +70 -89
  82. package/src/sap/fe/core/controllerextensions/editFlow/draftDataLossPopup.ts +313 -320
  83. package/src/sap/fe/core/controllerextensions/editFlow/operations.js +582 -683
  84. package/src/sap/fe/core/controllerextensions/editFlow/operations.ts +507 -386
  85. package/src/sap/fe/core/controllerextensions/editFlow/sticky.js +111 -102
  86. package/src/sap/fe/core/controllerextensions/editFlow/sticky.ts +102 -79
  87. package/src/sap/fe/core/controllerextensions/messageHandler/messageHandling.js +689 -154
  88. package/src/sap/fe/core/controllerextensions/messageHandler/messageHandling.ts +866 -31
  89. package/src/sap/fe/core/controllerextensions/pageReady/DataQueryWatcher.js +24 -101
  90. package/src/sap/fe/core/controllerextensions/pageReady/DataQueryWatcher.ts +5 -5
  91. package/src/sap/fe/core/controllerextensions/routing/RouterProxy.js +91 -217
  92. package/src/sap/fe/core/controls/ActionParameterDialog.fragment.xml +3 -20
  93. package/src/sap/fe/core/controls/ActionParameterDialogValueHelp.fragment.xml +1 -0
  94. package/src/sap/fe/core/controls/ActionPartial.fragment.xml +46 -46
  95. package/src/sap/fe/core/controls/Any.js +1 -1
  96. package/src/sap/fe/core/controls/AnyElement.js +1 -1
  97. package/src/sap/fe/core/controls/CommandExecution.js +4 -26
  98. package/src/sap/fe/core/controls/ConditionalWrapper.js +16 -33
  99. package/src/sap/fe/core/controls/ConditionalWrapper.ts +16 -2
  100. package/src/sap/fe/core/controls/CustomFilterFieldContentWrapper.js +41 -94
  101. package/src/sap/fe/core/controls/CustomFilterFieldContentWrapper.ts +1 -1
  102. package/src/sap/fe/core/controls/CustomQuickViewPage.js +5 -34
  103. package/src/sap/fe/core/controls/CustomQuickViewPage.ts +5 -7
  104. package/src/sap/fe/core/controls/DataLossOrDraftDiscard/DataLossDraft.fragment.xml +7 -7
  105. package/src/sap/fe/core/controls/DataLossOrDraftDiscard/DataLossOrDraftDiscardHandler.js +56 -58
  106. package/src/sap/fe/core/controls/DataLossOrDraftDiscard/DataLossOrDraftDiscardHandler.ts +53 -33
  107. package/src/sap/fe/core/controls/FieldWrapper.js +6 -49
  108. package/src/sap/fe/core/controls/FileWrapper.js +51 -136
  109. package/src/sap/fe/core/controls/FileWrapper.ts +25 -29
  110. package/src/sap/fe/core/controls/FilterBar.js +19 -54
  111. package/src/sap/fe/core/controls/FormElementWrapper.js +1 -22
  112. package/src/sap/fe/core/controls/MassEditSelect.js +1 -1
  113. package/src/sap/fe/core/controls/MultiValueParameterDelegate.js +1 -5
  114. package/src/sap/fe/core/controls/MultiValueParameterDelegate.ts +2 -2
  115. package/src/sap/fe/core/controls/NonComputedVisibleKeyFieldsDialog.fragment.xml +24 -46
  116. package/src/sap/fe/core/controls/filterbar/FilterContainer.js +14 -41
  117. package/src/sap/fe/core/controls/filterbar/FilterContainer.ts +4 -4
  118. package/src/sap/fe/core/controls/filterbar/VisualFilter.js +26 -67
  119. package/src/sap/fe/core/controls/filterbar/VisualFilter.ts +20 -20
  120. package/src/sap/fe/core/controls/filterbar/VisualFilterContainer.js +12 -48
  121. package/src/sap/fe/core/controls/filterbar/utils/VisualFilterUtils.js +17 -46
  122. package/src/sap/fe/core/controls/filterbar/utils/VisualFilterUtils.ts +3 -3
  123. package/src/sap/fe/core/controls/massEdit/MassEditField.fragment.xml +1 -0
  124. package/src/sap/fe/core/controls/massEdit/MassEditHandlers.js +6 -78
  125. package/src/sap/fe/core/controls/massEdit/MassEditHandlers.ts +4 -4
  126. package/src/sap/fe/core/converters/ConverterContext.js +44 -98
  127. package/src/sap/fe/core/converters/ConverterContext.ts +1 -1
  128. package/src/sap/fe/core/converters/ManifestSettings.js +1 -20
  129. package/src/sap/fe/core/converters/ManifestSettings.ts +16 -9
  130. package/src/sap/fe/core/converters/ManifestWrapper.js +97 -158
  131. package/src/sap/fe/core/converters/ManifestWrapper.ts +4 -0
  132. package/src/sap/fe/core/converters/MetaModelConverter.js +28 -167
  133. package/src/sap/fe/core/converters/MetaModelConverter.ts +9 -3
  134. package/src/sap/fe/core/converters/TemplateConverter.js +10 -22
  135. package/src/sap/fe/core/converters/TemplateConverter.ts +10 -7
  136. package/src/sap/fe/core/converters/annotations/DataField.js +88 -132
  137. package/src/sap/fe/core/converters/annotations/DataField.ts +90 -38
  138. package/src/sap/fe/core/converters/common/AnnotationConverter.js +57 -379
  139. package/src/sap/fe/core/converters/controls/Common/Action.js +45 -115
  140. package/src/sap/fe/core/converters/controls/Common/Action.ts +17 -5
  141. package/src/sap/fe/core/converters/controls/Common/Chart.js +20 -73
  142. package/src/sap/fe/core/converters/controls/Common/Chart.ts +21 -14
  143. package/src/sap/fe/core/converters/controls/Common/Criticality.js +1 -9
  144. package/src/sap/fe/core/converters/controls/Common/DataVisualization.js +40 -94
  145. package/src/sap/fe/core/converters/controls/Common/DataVisualization.ts +44 -31
  146. package/src/sap/fe/core/converters/controls/Common/Form.js +26 -63
  147. package/src/sap/fe/core/converters/controls/Common/Form.ts +24 -10
  148. package/src/sap/fe/core/converters/controls/Common/KPI.js +13 -63
  149. package/src/sap/fe/core/converters/controls/Common/Table.js +368 -707
  150. package/src/sap/fe/core/converters/controls/Common/Table.ts +308 -197
  151. package/src/sap/fe/core/converters/controls/Common/table/StandardActions.js +54 -109
  152. package/src/sap/fe/core/converters/controls/Common/table/StandardActions.ts +15 -9
  153. package/src/sap/fe/core/converters/controls/ListReport/FilterBar.js +69 -210
  154. package/src/sap/fe/core/converters/controls/ListReport/FilterBar.ts +23 -16
  155. package/src/sap/fe/core/converters/controls/ListReport/VisualFilters.js +12 -80
  156. package/src/sap/fe/core/converters/controls/ListReport/VisualFilters.ts +3 -1
  157. package/src/sap/fe/core/converters/controls/ObjectPage/Avatar.js +1 -19
  158. package/src/sap/fe/core/converters/controls/ObjectPage/HeaderFacet.js +45 -136
  159. package/src/sap/fe/core/converters/controls/ObjectPage/HeaderFacet.ts +10 -10
  160. package/src/sap/fe/core/converters/controls/ObjectPage/SubSection.js +82 -173
  161. package/src/sap/fe/core/converters/controls/ObjectPage/SubSection.ts +48 -22
  162. package/src/sap/fe/core/converters/helpers/Aggregation.js +24 -66
  163. package/src/sap/fe/core/converters/helpers/Aggregation.ts +3 -7
  164. package/src/sap/fe/core/converters/helpers/BindingHelper.js +9 -19
  165. package/src/sap/fe/core/converters/helpers/BindingHelper.ts +0 -1
  166. package/src/sap/fe/core/converters/helpers/ConfigurableObject.js +20 -48
  167. package/src/sap/fe/core/converters/helpers/ConfigurableObject.ts +5 -1
  168. package/src/sap/fe/core/converters/helpers/DataFieldHelper.js +12 -51
  169. package/src/sap/fe/core/converters/helpers/DataFieldHelper.ts +13 -11
  170. package/src/sap/fe/core/converters/helpers/ID.js +3 -17
  171. package/src/sap/fe/core/converters/helpers/ID.ts +2 -3
  172. package/src/sap/fe/core/converters/helpers/IssueManager.js +1 -6
  173. package/src/sap/fe/core/converters/helpers/Key.js +10 -19
  174. package/src/sap/fe/core/converters/helpers/Key.ts +3 -3
  175. package/src/sap/fe/core/converters/helpers/SelectionVariantHelper.js +2 -20
  176. package/src/sap/fe/core/converters/objectPage/FormMenuActions.js +2 -37
  177. package/src/sap/fe/core/converters/objectPage/HeaderAndFooterAction.js +126 -131
  178. package/src/sap/fe/core/converters/objectPage/HeaderAndFooterAction.ts +112 -31
  179. package/src/sap/fe/core/converters/templates/ListReportConverter.js +67 -131
  180. package/src/sap/fe/core/converters/templates/ListReportConverter.ts +58 -27
  181. package/src/sap/fe/core/converters/templates/ObjectPageConverter.js +106 -183
  182. package/src/sap/fe/core/converters/templates/ObjectPageConverter.ts +73 -104
  183. package/src/sap/fe/core/designtime/AppComponent.designtime.js +74 -67
  184. package/src/sap/fe/core/designtime/AppComponent.designtime.ts +77 -69
  185. package/src/sap/fe/core/formatters/CollaborationFormatter.js +20 -29
  186. package/src/sap/fe/core/formatters/CollaborationFormatter.ts +21 -0
  187. package/src/sap/fe/core/formatters/FPMFormatter.js +3 -7
  188. package/src/sap/fe/core/formatters/KPIFormatter.js +5 -13
  189. package/src/sap/fe/core/formatters/StandardFormatter.js +3 -18
  190. package/src/sap/fe/core/formatters/StandardFormatter.ts +3 -2
  191. package/src/sap/fe/core/formatters/TableFormatter.js +87 -53
  192. package/src/sap/fe/core/formatters/TableFormatter.ts +96 -9
  193. package/src/sap/fe/core/formatters/TableFormatterTypes.js +1 -4
  194. package/src/sap/fe/core/formatters/ValueFormatter.js +1 -37
  195. package/src/sap/fe/core/fpm/Component.js +2 -17
  196. package/src/sap/fe/core/helpers/AnnotationEnum.js +10 -20
  197. package/src/sap/fe/core/helpers/AnnotationEnum.ts +6 -6
  198. package/src/sap/fe/core/helpers/AppStartupHelper.js +16 -52
  199. package/src/sap/fe/core/helpers/AppStartupHelper.ts +1 -1
  200. package/src/sap/fe/core/helpers/BindingToolkit.js +106 -364
  201. package/src/sap/fe/core/helpers/BindingToolkit.ts +30 -7
  202. package/src/sap/fe/core/helpers/ClassSupport.js +16 -97
  203. package/src/sap/fe/core/helpers/ClassSupport.ts +7 -4
  204. package/src/sap/fe/core/helpers/DeleteHelper.js +621 -0
  205. package/src/sap/fe/core/helpers/DeleteHelper.ts +796 -0
  206. package/src/sap/fe/core/helpers/DynamicAnnotationPathHelper.js +1 -12
  207. package/src/sap/fe/core/helpers/EditState.js +2 -5
  208. package/src/sap/fe/core/helpers/ExcelFormatHelper.js +1 -10
  209. package/src/sap/fe/core/helpers/FPMHelper.js +3 -8
  210. package/src/sap/fe/core/helpers/FPMHelper.ts +2 -1
  211. package/src/sap/fe/core/helpers/KeepAliveHelper.js +8 -38
  212. package/src/sap/fe/core/helpers/KeepAliveRefreshTypes.js +1 -5
  213. package/src/sap/fe/core/helpers/LoaderUtils.js +1 -7
  214. package/src/sap/fe/core/helpers/MassEditHelper.js +177 -289
  215. package/src/sap/fe/core/helpers/MassEditHelper.ts +124 -91
  216. package/src/sap/fe/core/helpers/MessageStrip.js +12 -28
  217. package/src/sap/fe/core/helpers/MessageStrip.ts +7 -7
  218. package/src/sap/fe/core/helpers/ModelHelper.js +62 -103
  219. package/src/sap/fe/core/helpers/ModelHelper.ts +58 -20
  220. package/src/sap/fe/core/helpers/PasteHelper.js +28 -51
  221. package/src/sap/fe/core/helpers/PasteHelper.ts +10 -9
  222. package/src/sap/fe/core/helpers/SemanticDateOperators.js +112 -136
  223. package/src/sap/fe/core/helpers/SemanticDateOperators.ts +111 -111
  224. package/src/sap/fe/core/helpers/SemanticKeyHelper.js +5 -11
  225. package/src/sap/fe/core/helpers/SideEffectsHelper.js +26 -32
  226. package/src/sap/fe/core/helpers/StableIdHelper.js +166 -218
  227. package/src/sap/fe/core/helpers/StableIdHelper.ts +175 -191
  228. package/src/sap/fe/core/helpers/Synchronization.js +1 -8
  229. package/src/sap/fe/core/helpers/ToES6Promise.js +1 -4
  230. package/src/sap/fe/core/helpers/TypeGuards.js +22 -0
  231. package/src/sap/fe/core/helpers/TypeGuards.ts +9 -0
  232. package/src/sap/fe/core/jsx-runtime/Fragment.js +1 -3
  233. package/src/sap/fe/core/jsx-runtime/ViewLoader.js +3 -23
  234. package/src/sap/fe/core/jsx-runtime/jsx-control.js +3 -23
  235. package/src/sap/fe/core/jsx-runtime/jsx-control.ts +2 -1
  236. package/src/sap/fe/core/jsx-runtime/jsx-xml.js +4 -16
  237. package/src/sap/fe/core/jsx-runtime/jsx-xml.ts +1 -1
  238. package/src/sap/fe/core/jsx-runtime/jsx.js +2 -5
  239. package/src/sap/fe/core/jsx-runtime/jsxs.js +1 -1
  240. package/src/sap/fe/core/jsx-runtime/useMDXComponents.js +4 -27
  241. package/src/sap/fe/core/jsx-runtime/useMDXComponents.tsx +1 -1
  242. package/src/sap/fe/core/library.js +9 -48
  243. package/src/sap/fe/core/library.support.js +3 -2
  244. package/src/sap/fe/core/library.support.ts +3 -1
  245. package/src/sap/fe/core/library.ts +3 -8
  246. package/src/sap/fe/core/manifestMerger/ChangePageConfiguration.js +74 -39
  247. package/src/sap/fe/core/manifestMerger/ChangePageConfiguration.ts +71 -26
  248. package/src/sap/fe/core/messagebundle.properties +113 -67
  249. package/src/sap/fe/core/messagebundle_ar.properties +20 -3
  250. package/src/sap/fe/core/messagebundle_bg.properties +22 -5
  251. package/src/sap/fe/core/messagebundle_ca.properties +21 -4
  252. package/src/sap/fe/core/messagebundle_cs.properties +21 -4
  253. package/src/sap/fe/core/messagebundle_cy.properties +22 -5
  254. package/src/sap/fe/core/messagebundle_da.properties +20 -3
  255. package/src/sap/fe/core/messagebundle_de.properties +38 -21
  256. package/src/sap/fe/core/messagebundle_el.properties +20 -3
  257. package/src/sap/fe/core/messagebundle_en.properties +38 -21
  258. package/src/sap/fe/core/messagebundle_en_GB.properties +20 -3
  259. package/src/sap/fe/core/messagebundle_en_US_sappsd.properties +41 -28
  260. package/src/sap/fe/core/messagebundle_en_US_saprigi.properties +41 -24
  261. package/src/sap/fe/core/messagebundle_en_US_saptrc.properties +42 -29
  262. package/src/sap/fe/core/messagebundle_es.properties +40 -23
  263. package/src/sap/fe/core/messagebundle_es_MX.properties +20 -3
  264. package/src/sap/fe/core/messagebundle_et.properties +20 -3
  265. package/src/sap/fe/core/messagebundle_fi.properties +20 -3
  266. package/src/sap/fe/core/messagebundle_fr.properties +21 -4
  267. package/src/sap/fe/core/messagebundle_fr_CA.properties +22 -5
  268. package/src/sap/fe/core/messagebundle_hi.properties +20 -3
  269. package/src/sap/fe/core/messagebundle_hr.properties +22 -5
  270. package/src/sap/fe/core/messagebundle_hu.properties +20 -3
  271. package/src/sap/fe/core/messagebundle_id.properties +20 -3
  272. package/src/sap/fe/core/messagebundle_it.properties +23 -6
  273. package/src/sap/fe/core/messagebundle_iw.properties +20 -3
  274. package/src/sap/fe/core/messagebundle_ja.properties +22 -5
  275. package/src/sap/fe/core/messagebundle_kk.properties +21 -4
  276. package/src/sap/fe/core/messagebundle_ko.properties +20 -3
  277. package/src/sap/fe/core/messagebundle_lt.properties +20 -3
  278. package/src/sap/fe/core/messagebundle_lv.properties +20 -3
  279. package/src/sap/fe/core/messagebundle_ms.properties +20 -3
  280. package/src/sap/fe/core/messagebundle_nl.properties +20 -3
  281. package/src/sap/fe/core/messagebundle_no.properties +20 -3
  282. package/src/sap/fe/core/messagebundle_pl.properties +21 -4
  283. package/src/sap/fe/core/messagebundle_pt.properties +20 -3
  284. package/src/sap/fe/core/messagebundle_pt_PT.properties +20 -3
  285. package/src/sap/fe/core/messagebundle_ro.properties +20 -3
  286. package/src/sap/fe/core/messagebundle_ru.properties +20 -3
  287. package/src/sap/fe/core/messagebundle_sh.properties +20 -3
  288. package/src/sap/fe/core/messagebundle_sk.properties +20 -3
  289. package/src/sap/fe/core/messagebundle_sl.properties +26 -9
  290. package/src/sap/fe/core/messagebundle_sv.properties +20 -3
  291. package/src/sap/fe/core/messagebundle_th.properties +21 -4
  292. package/src/sap/fe/core/messagebundle_tr.properties +20 -3
  293. package/src/sap/fe/core/messagebundle_uk.properties +23 -6
  294. package/src/sap/fe/core/messagebundle_vi.properties +20 -3
  295. package/src/sap/fe/core/messagebundle_zh_CN.properties +20 -3
  296. package/src/sap/fe/core/messagebundle_zh_TW.properties +20 -3
  297. package/src/sap/fe/core/operationsHelper.js +74 -101
  298. package/src/sap/fe/core/operationsHelper.ts +113 -44
  299. package/src/sap/fe/core/rootView/Fcl.controller.js +151 -228
  300. package/src/sap/fe/core/rootView/Fcl.controller.ts +90 -15
  301. package/src/sap/fe/core/rootView/Fcl.view.xml +1 -8
  302. package/src/sap/fe/core/rootView/NavContainer.controller.js +41 -78
  303. package/src/sap/fe/core/rootView/NavContainer.controller.ts +32 -38
  304. package/src/sap/fe/core/rootView/RootViewBaseController.js +110 -181
  305. package/src/sap/fe/core/rootView/RootViewBaseController.ts +37 -17
  306. package/src/sap/fe/core/services/AsyncComponentServiceFactory.js +1 -18
  307. package/src/sap/fe/core/services/CacheHandlerServiceFactory.js +13 -52
  308. package/src/sap/fe/core/services/EnvironmentServiceFactory.js +1 -22
  309. package/src/sap/fe/core/services/NavigationServiceFactory.js +45 -87
  310. package/src/sap/fe/core/services/NavigationServiceFactory.ts +17 -10
  311. package/src/sap/fe/core/services/ResourceModelServiceFactory.js +4 -28
  312. package/src/sap/fe/core/services/RoutingServiceFactory.js +92 -250
  313. package/src/sap/fe/core/services/RoutingServiceFactory.ts +8 -12
  314. package/src/sap/fe/core/services/ShellServicesFactory.js +122 -251
  315. package/src/sap/fe/core/services/ShellServicesFactory.ts +19 -4
  316. package/src/sap/fe/core/services/SideEffectsServiceFactory.js +188 -273
  317. package/src/sap/fe/core/services/SideEffectsServiceFactory.ts +143 -154
  318. package/src/sap/fe/core/services/TemplatedViewServiceFactory.js +37 -135
  319. package/src/sap/fe/core/services/TemplatedViewServiceFactory.ts +59 -94
  320. package/src/sap/fe/core/services/view/TemplatingErrorPage.controller.js +2 -16
  321. package/src/sap/fe/core/services/view/TemplatingErrorPage.controller.ts +1 -1
  322. package/src/sap/fe/core/support/AnnotationIssue.support.js +6 -9
  323. package/src/sap/fe/core/support/AnnotationIssue.support.ts +4 -4
  324. package/src/sap/fe/core/support/CollectionFacetMissingID.support.js +6 -9
  325. package/src/sap/fe/core/support/CollectionFacetMissingID.support.ts +3 -3
  326. package/src/sap/fe/core/support/CollectionFacetUnsupportedLevel.support.js +6 -9
  327. package/src/sap/fe/core/support/CollectionFacetUnsupportedLevel.support.ts +3 -3
  328. package/src/sap/fe/core/support/CommonHelper.js +7 -16
  329. package/src/sap/fe/core/support/Diagnostics.js +1 -10
  330. package/src/sap/fe/core/support/InvalidAnnotationColumnKey.support.js +6 -9
  331. package/src/sap/fe/core/support/InvalidAnnotationColumnKey.support.ts +3 -3
  332. package/src/sap/fe/core/templating/CommonFormatters.js +1 -15
  333. package/src/sap/fe/core/templating/CriticalityFormatters.js +4 -20
  334. package/src/sap/fe/core/templating/DataFieldFormatters.js +1 -20
  335. package/src/sap/fe/core/templating/DataModelPathHelper.js +49 -121
  336. package/src/sap/fe/core/templating/DataModelPathHelper.ts +41 -31
  337. package/src/sap/fe/core/templating/DisplayModeFormatter.js +8 -15
  338. package/src/sap/fe/core/templating/DisplayModeFormatter.ts +7 -7
  339. package/src/sap/fe/core/templating/EntitySetHelper.js +6 -31
  340. package/src/sap/fe/core/templating/FieldControlHelper.js +4 -21
  341. package/src/sap/fe/core/templating/FieldControlHelper.ts +1 -1
  342. package/src/sap/fe/core/templating/FilterHelper.js +40 -111
  343. package/src/sap/fe/core/templating/FilterHelper.ts +20 -16
  344. package/src/sap/fe/core/templating/FilterTemplating.js +1 -19
  345. package/src/sap/fe/core/templating/FilterTemplating.ts +1 -1
  346. package/src/sap/fe/core/templating/PropertyFormatters.js +1 -34
  347. package/src/sap/fe/core/templating/PropertyHelper.js +120 -163
  348. package/src/sap/fe/core/templating/PropertyHelper.ts +69 -33
  349. package/src/sap/fe/core/templating/SemanticObjectHelper.js +46 -0
  350. package/src/sap/fe/core/templating/SemanticObjectHelper.ts +34 -0
  351. package/src/sap/fe/core/templating/UIFormatters.js +40 -180
  352. package/src/sap/fe/core/templating/UIFormatters.ts +37 -43
  353. package/src/sap/fe/core/type/DateTimeWithTimezone.js +3 -14
  354. package/src/sap/fe/core/type/Email.js +1 -10
  355. package/src/sap/fe/core/type/TypeUtil.js +1 -11
  356. package/ui5.yaml +0 -1
  357. package/src/sap/fe/core/controls/ActionParameterDialogFieldValueHelp.fragment.xml +0 -35
  358. package/src/sap/fe/core/helpers/LRMessageStrip.js +0 -234
  359. package/src/sap/fe/core/helpers/LRMessageStrip.ts +0 -216
@@ -6,27 +6,18 @@ sap.ui.define(["sap/fe/core/helpers/ClassSupport", "sap/fe/core/helpers/Semantic
6
6
  "use strict";
7
7
 
8
8
  var _dec, _dec2, _dec3, _dec4, _dec5, _dec6, _dec7, _class, _class2, _descriptor, _descriptor2, _descriptor3, _descriptor4, _descriptor5, _descriptor6, _class3;
9
-
10
9
  var _exports = {};
11
10
  var property = ClassSupport.property;
12
11
  var implementInterface = ClassSupport.implementInterface;
13
12
  var event = ClassSupport.event;
14
13
  var defineUI5Class = ClassSupport.defineUI5Class;
15
14
  var aggregation = ClassSupport.aggregation;
16
-
17
15
  function _initializerDefineProperty(target, property, descriptor, context) { if (!descriptor) return; Object.defineProperty(target, property, { enumerable: descriptor.enumerable, configurable: descriptor.configurable, writable: descriptor.writable, value: descriptor.initializer ? descriptor.initializer.call(context) : void 0 }); }
18
-
19
16
  function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; }
20
-
21
17
  function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _setPrototypeOf(subClass, superClass); }
22
-
23
18
  function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }
24
-
25
19
  function _applyDecoratedDescriptor(target, property, decorators, descriptor, context) { var desc = {}; Object.keys(descriptor).forEach(function (key) { desc[key] = descriptor[key]; }); desc.enumerable = !!desc.enumerable; desc.configurable = !!desc.configurable; if ('value' in desc || desc.initializer) { desc.writable = true; } desc = decorators.slice().reverse().reduce(function (desc, decorator) { return decorator(target, property, desc) || desc; }, desc); if (context && desc.initializer !== void 0) { desc.value = desc.initializer ? desc.initializer.call(context) : void 0; desc.initializer = undefined; } if (desc.initializer === void 0) { Object.defineProperty(target, property, desc); desc = null; } return desc; }
26
-
27
20
  function _initializerWarningHelper(descriptor, context) { throw new Error('Decorating class property failed. Please ensure that ' + 'proposal-class-properties is enabled and runs after the decorators transform.'); }
28
-
29
- var CustomFilterFieldContentWrapper = (
30
21
  /**
31
22
  * @class
32
23
  * Creates an <code>sap.fe.core.controls.CustomFilterFieldContentWrapper</code> object.
@@ -35,7 +26,7 @@ sap.ui.define(["sap/fe/core/helpers/ClassSupport", "sap/fe/core/helpers/Semantic
35
26
  * @private
36
27
  * @alias sap.fe.core.controls.CustomFilterFieldContentWrapper
37
28
  */
38
- _dec = defineUI5Class("sap.fe.core.controls.CustomFilterFieldContentWrapper"), _dec2 = implementInterface("sap.ui.core.IFormContent"), _dec3 = property({
29
+ var CustomFilterFieldContentWrapper = (_dec = defineUI5Class("sap.fe.core.controls.CustomFilterFieldContentWrapper"), _dec2 = implementInterface("sap.ui.core.IFormContent"), _dec3 = property({
39
30
  type: "sap.ui.core.CSSSize",
40
31
  defaultValue: null
41
32
  }), _dec4 = property({
@@ -50,42 +41,30 @@ sap.ui.define(["sap/fe/core/helpers/ClassSupport", "sap/fe/core/helpers/Semantic
50
41
  isDefault: true
51
42
  }), _dec7 = event(), _dec(_class = (_class2 = (_class3 = /*#__PURE__*/function (_Control) {
52
43
  _inheritsLoose(CustomFilterFieldContentWrapper, _Control);
53
-
54
44
  function CustomFilterFieldContentWrapper() {
55
45
  var _this;
56
-
57
46
  for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
58
47
  args[_key] = arguments[_key];
59
48
  }
60
-
61
49
  _this = _Control.call.apply(_Control, [this].concat(args)) || this;
62
-
63
50
  _initializerDefineProperty(_this, "__implements__sap_ui_core_IFormContent", _descriptor, _assertThisInitialized(_this));
64
-
65
51
  _initializerDefineProperty(_this, "width", _descriptor2, _assertThisInitialized(_this));
66
-
67
52
  _initializerDefineProperty(_this, "formDoNotAdjustWidth", _descriptor3, _assertThisInitialized(_this));
68
-
69
53
  _initializerDefineProperty(_this, "conditions", _descriptor4, _assertThisInitialized(_this));
70
-
71
54
  _initializerDefineProperty(_this, "content", _descriptor5, _assertThisInitialized(_this));
72
-
73
55
  _initializerDefineProperty(_this, "conditionsChange", _descriptor6, _assertThisInitialized(_this));
74
-
75
56
  return _this;
76
57
  }
77
-
78
58
  _exports = CustomFilterFieldContentWrapper;
79
-
80
59
  CustomFilterFieldContentWrapper.render = function render(renderManager, control) {
81
60
  renderManager.openStart("div", control);
82
61
  renderManager.style("min-height", "1rem");
83
62
  renderManager.style("width", control.width);
84
63
  renderManager.openEnd();
85
64
  renderManager.renderControl(control.getContent()); // render the child Control
86
-
87
65
  renderManager.close("div"); // end of the complete Control
88
66
  }
67
+
89
68
  /**
90
69
  * Maps an array of filter values to an array of conditions.
91
70
  *
@@ -93,21 +72,17 @@ sap.ui.define(["sap/fe/core/helpers/ClassSupport", "sap/fe/core/helpers/Semantic
93
72
  * @param [operator] The operator to be used (optional) - if not set, the default operator (EQ) will be used
94
73
  * @private
95
74
  * @returns Array of filter conditions
96
- */
97
- ;
98
-
75
+ */;
99
76
  CustomFilterFieldContentWrapper._filterValuesToConditions = function _filterValuesToConditions(filterValues, operator) {
100
77
  var formatOptions = {
101
- operators: []
102
- },
103
- conditions = [];
104
-
78
+ operators: []
79
+ },
80
+ conditions = [];
105
81
  if (operator) {
106
82
  formatOptions = {
107
83
  operators: [operator]
108
84
  };
109
85
  }
110
-
111
86
  if (filterValues === "") {
112
87
  filterValues = [];
113
88
  } else if (typeof filterValues === "object" && filterValues.hasOwnProperty("operator") && filterValues.hasOwnProperty("values")) {
@@ -118,24 +93,24 @@ sap.ui.define(["sap/fe/core/helpers/ClassSupport", "sap/fe/core/helpers/Semantic
118
93
  } else if (filterValues !== undefined && typeof filterValues !== "object" && typeof filterValues !== "string") {
119
94
  throw new Error("FilterUtils.js#_filterValuesToConditions: Unexpected type of input parameter vValues: ".concat(typeof filterValues));
120
95
  }
121
-
122
96
  var conditionsType = new ConditionsType(formatOptions);
123
- var conditionValues = Array.isArray(filterValues) ? filterValues : [filterValues]; // Shortcut for operator without values and semantic date operations
97
+ var conditionValues = Array.isArray(filterValues) ? filterValues : [filterValues];
124
98
 
99
+ // Shortcut for operator without values and semantic date operations
125
100
  if (typeof operator === "string" && (conditionValues.length === 0 || SemanticDateOperators.getSemanticDateOperations().includes(operator))) {
126
101
  conditions = [Condition.createCondition(operator, conditionValues, null, null, ConditionValidated.NotValidated)];
127
102
  } else {
128
103
  conditions = conditionValues.map(function (conditionValue) {
129
104
  var stringValue = conditionValue === null || conditionValue === void 0 ? void 0 : conditionValue.toString(),
130
- parsedConditions = conditionsType.parseValue(stringValue, "any");
105
+ parsedConditions = conditionsType.parseValue(stringValue, "any");
131
106
  return parsedConditions === null || parsedConditions === void 0 ? void 0 : parsedConditions[0];
132
107
  }).filter(function (conditionValue) {
133
108
  return conditionValue !== undefined;
134
109
  });
135
110
  }
136
-
137
111
  return conditions;
138
112
  }
113
+
139
114
  /**
140
115
  * Maps an array of conditions to a comma separated list of filter values.
141
116
  *
@@ -143,9 +118,7 @@ sap.ui.define(["sap/fe/core/helpers/ClassSupport", "sap/fe/core/helpers/Semantic
143
118
  * @param formatOptions Format options that specifies a condition type
144
119
  * @private
145
120
  * @returns Concatenated string of filter values
146
- */
147
- ;
148
-
121
+ */;
149
122
  CustomFilterFieldContentWrapper._conditionsToFilterModelString = function _conditionsToFilterModelString(conditions, formatOptions) {
150
123
  var conditionsType = new ConditionsType(formatOptions);
151
124
  return conditions.map(function (condition) {
@@ -154,52 +127,45 @@ sap.ui.define(["sap/fe/core/helpers/ClassSupport", "sap/fe/core/helpers/Semantic
154
127
  return stringValue !== "";
155
128
  }).join(",");
156
129
  }
130
+
157
131
  /**
158
132
  * Listens to filter model changes and updates wrapper property "conditions".
159
133
  *
160
134
  * @param changeEvent Event triggered by a filter model change
161
135
  * @private
162
- */
163
- ;
164
-
136
+ */;
165
137
  var _proto = CustomFilterFieldContentWrapper.prototype;
166
-
167
138
  _proto._handleFilterModelChange = function _handleFilterModelChange(changeEvent) {
168
- var propertyPath = this.getObjectBinding("filterValues").getPath(),
169
- values = changeEvent.getSource().getProperty(propertyPath);
139
+ var _this$getObjectBindin;
140
+ var propertyPath = (_this$getObjectBindin = this.getObjectBinding("filterValues")) === null || _this$getObjectBindin === void 0 ? void 0 : _this$getObjectBindin.getPath(),
141
+ values = changeEvent.getSource().getProperty(propertyPath);
170
142
  this.updateConditionsByFilterValues(values, "");
171
143
  }
144
+
172
145
  /**
173
146
  * Listens to "conditions" changes and updates the filter model.
174
147
  *
175
148
  * @param conditions Event triggered by a "conditions" change
176
149
  * @private
177
- */
178
- ;
179
-
150
+ */;
180
151
  _proto._handleConditionsChange = function _handleConditionsChange(conditions) {
181
152
  this.updateFilterModelByConditions(conditions);
182
153
  }
154
+
183
155
  /**
184
156
  * Initialize CustomFilterFieldContentWrapper control and register observer.
185
- */
186
- ;
187
-
157
+ */;
188
158
  _proto.init = function init() {
189
159
  _Control.prototype.init.call(this);
190
-
191
160
  this._conditionsObserver = new ManagedObjectObserver(this._observeChanges.bind(this));
192
-
193
161
  this._conditionsObserver.observe(this, {
194
162
  properties: ["conditions"]
195
163
  });
196
-
197
164
  this._filterModel = new JSONModel();
198
-
199
165
  this._filterModel.attachPropertyChange(this._handleFilterModelChange, this);
200
-
201
166
  this.setModel(this._filterModel, CustomFilterFieldContentWrapper.FILTER_MODEL_ALIAS);
202
167
  }
168
+
203
169
  /**
204
170
  * Overrides {@link sap.ui.core.Control#clone Control.clone} to clone additional
205
171
  * internal states.
@@ -208,79 +174,72 @@ sap.ui.define(["sap/fe/core/helpers/ClassSupport", "sap/fe/core/helpers/Semantic
208
174
  * @param [aLocalIds] An array of local IDs within the cloned hierarchy (internally used)
209
175
  * @returns Reference to the newly created clone
210
176
  * @protected
211
- */
212
- ;
213
-
177
+ */;
214
178
  _proto.clone = function clone(sIdSuffix, aLocalIds) {
215
- var clone = _Control.prototype.clone.call(this, sIdSuffix, aLocalIds); // During cloning, the old model will be copied and overwrites any new model (same alias) that
179
+ var clone = _Control.prototype.clone.call(this, sIdSuffix, aLocalIds);
180
+ // During cloning, the old model will be copied and overwrites any new model (same alias) that
216
181
  // you introduce during init(); hence you need to overwrite it again by the new one that you've
217
182
  // created during init() (i.e. clone._filterModel); that standard behaviour of super.clone()
218
183
  // can't even be suppressed in an own constructor; for a detailed investigation of the cloning,
219
184
  // please overwrite the setModel() method and check the list of callers and steps induced by them.
220
-
221
-
222
185
  clone.setModel(clone._filterModel, CustomFilterFieldContentWrapper.FILTER_MODEL_ALIAS);
223
186
  return clone;
224
187
  }
188
+
225
189
  /**
226
190
  * Listens to property changes.
227
191
  *
228
192
  * @param changes Property changes
229
193
  * @private
230
- */
231
- ;
232
-
194
+ */;
233
195
  _proto._observeChanges = function _observeChanges(changes) {
234
196
  if (changes.name === "conditions") {
235
197
  this._handleConditionsChange(changes.current);
236
198
  }
237
199
  }
200
+
238
201
  /**
239
202
  * Gets the content of this wrapper control.
240
203
  *
241
204
  * @returns The wrapper content
242
205
  * @private
243
- */
244
- ;
245
-
206
+ */;
246
207
  _proto.getContent = function getContent() {
247
208
  return this.getAggregation("content");
248
209
  }
210
+
249
211
  /**
250
212
  * Gets the value for control property 'conditions'.
251
213
  *
252
214
  * @returns Array of filter conditions
253
215
  * @private
254
- */
255
- ;
256
-
216
+ */;
257
217
  _proto.getConditions = function getConditions() {
258
218
  return this.getProperty("conditions");
259
219
  }
220
+
260
221
  /**
261
222
  * Sets the value for control property 'conditions'.
262
223
  *
263
224
  * @param [conditions] Array of filter conditions
264
225
  * @returns Reference to this wrapper
265
226
  * @private
266
- */
267
- ;
268
-
227
+ */;
269
228
  _proto.setConditions = function setConditions(conditions) {
270
229
  this.setProperty("conditions", conditions || []);
271
230
  return this;
272
231
  }
232
+
273
233
  /**
274
234
  * Gets the filter model alias 'filterValues'.
275
235
  *
276
236
  * @returns The filter model
277
237
  * @private
278
- */
279
- ;
280
-
238
+ */;
281
239
  _proto.getFilterModelAlias = function getFilterModelAlias() {
282
240
  return CustomFilterFieldContentWrapper.FILTER_MODEL_ALIAS;
283
241
  }
242
+
284
243
  /**
285
244
  * Updates the property "conditions" with filter values
286
245
  * sent by ExtensionAPI#setFilterValues().
@@ -288,62 +247,50 @@ sap.ui.define(["sap/fe/core/helpers/ClassSupport", "sap/fe/core/helpers/Semantic
288
247
  * @param values The filter values
289
248
  * @param [operator] The operator name
290
249
  * @private
291
- */
292
- ;
293
-
250
+ */;
294
251
  _proto.updateConditionsByFilterValues = function updateConditionsByFilterValues(values, operator) {
295
252
  var conditions = CustomFilterFieldContentWrapper._filterValuesToConditions(values, operator);
296
-
297
253
  this.setConditions(conditions);
298
254
  }
255
+
299
256
  /**
300
257
  * Updates filter model with conditions
301
258
  * sent by the {@link sap.ui.mdc.FilterField FilterField}.
302
259
  *
303
260
  * @param conditions Array of filter conditions
304
261
  * @private
305
- */
306
- ;
307
-
262
+ */;
308
263
  _proto.updateFilterModelByConditions = function updateFilterModelByConditions(conditions) {
309
264
  var _conditions$;
310
-
311
265
  var operator = ((_conditions$ = conditions[0]) === null || _conditions$ === void 0 ? void 0 : _conditions$.operator) || "";
312
266
  var formatOptions = operator !== "" ? {
313
267
  operators: [operator]
314
268
  } : {
315
269
  operators: []
316
270
  };
317
-
318
271
  if (this.getBindingContext(CustomFilterFieldContentWrapper.FILTER_MODEL_ALIAS)) {
319
272
  var _this$getBindingConte;
320
-
321
273
  var stringValue = CustomFilterFieldContentWrapper._conditionsToFilterModelString(conditions, formatOptions);
322
-
323
274
  this._filterModel.setProperty((_this$getBindingConte = this.getBindingContext(CustomFilterFieldContentWrapper.FILTER_MODEL_ALIAS)) === null || _this$getBindingConte === void 0 ? void 0 : _this$getBindingConte.getPath(), stringValue);
324
275
  }
325
276
  };
326
-
327
277
  _proto.getAccessibilityInfo = function getAccessibilityInfo() {
328
278
  var _content$getAccessibi;
329
-
330
279
  var content = this.getContent();
331
280
  return (content === null || content === void 0 ? void 0 : (_content$getAccessibi = content.getAccessibilityInfo) === null || _content$getAccessibi === void 0 ? void 0 : _content$getAccessibi.call(content)) || {};
332
281
  }
282
+
333
283
  /**
334
284
  * Returns the DOMNode ID to be used for the "labelFor" attribute.
335
285
  *
336
286
  * We forward the call of this method to the content control.
337
287
  *
338
288
  * @returns ID to be used for the <code>labelFor</code>
339
- */
340
- ;
341
-
289
+ */;
342
290
  _proto.getIdForLabel = function getIdForLabel() {
343
291
  var content = this.getContent();
344
292
  return content === null || content === void 0 ? void 0 : content.getIdForLabel();
345
293
  };
346
-
347
294
  return CustomFilterFieldContentWrapper;
348
295
  }(Control), _class3.FILTER_MODEL_ALIAS = "filterValues", _class3), (_descriptor = _applyDecoratedDescriptor(_class2.prototype, "__implements__sap_ui_core_IFormContent", [_dec2], {
349
296
  configurable: true,
@@ -381,4 +328,4 @@ sap.ui.define(["sap/fe/core/helpers/ClassSupport", "sap/fe/core/helpers/Semantic
381
328
  _exports = CustomFilterFieldContentWrapper;
382
329
  return _exports;
383
330
  }, false);
384
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJDdXN0b21GaWx0ZXJGaWVsZENvbnRlbnRXcmFwcGVyIiwiZGVmaW5lVUk1Q2xhc3MiLCJpbXBsZW1lbnRJbnRlcmZhY2UiLCJwcm9wZXJ0eSIsInR5cGUiLCJkZWZhdWx0VmFsdWUiLCJhZ2dyZWdhdGlvbiIsIm11bHRpcGxlIiwiaXNEZWZhdWx0IiwiZXZlbnQiLCJyZW5kZXIiLCJyZW5kZXJNYW5hZ2VyIiwiY29udHJvbCIsIm9wZW5TdGFydCIsInN0eWxlIiwid2lkdGgiLCJvcGVuRW5kIiwicmVuZGVyQ29udHJvbCIsImdldENvbnRlbnQiLCJjbG9zZSIsIl9maWx0ZXJWYWx1ZXNUb0NvbmRpdGlvbnMiLCJmaWx0ZXJWYWx1ZXMiLCJvcGVyYXRvciIsImZvcm1hdE9wdGlvbnMiLCJvcGVyYXRvcnMiLCJjb25kaXRpb25zIiwiaGFzT3duUHJvcGVydHkiLCJ2YWx1ZXMiLCJ1bmRlZmluZWQiLCJFcnJvciIsImNvbmRpdGlvbnNUeXBlIiwiQ29uZGl0aW9uc1R5cGUiLCJjb25kaXRpb25WYWx1ZXMiLCJBcnJheSIsImlzQXJyYXkiLCJsZW5ndGgiLCJTZW1hbnRpY0RhdGVPcGVyYXRvcnMiLCJnZXRTZW1hbnRpY0RhdGVPcGVyYXRpb25zIiwiaW5jbHVkZXMiLCJDb25kaXRpb24iLCJjcmVhdGVDb25kaXRpb24iLCJDb25kaXRpb25WYWxpZGF0ZWQiLCJOb3RWYWxpZGF0ZWQiLCJtYXAiLCJjb25kaXRpb25WYWx1ZSIsInN0cmluZ1ZhbHVlIiwidG9TdHJpbmciLCJwYXJzZWRDb25kaXRpb25zIiwicGFyc2VWYWx1ZSIsImZpbHRlciIsIl9jb25kaXRpb25zVG9GaWx0ZXJNb2RlbFN0cmluZyIsImNvbmRpdGlvbiIsImZvcm1hdFZhbHVlIiwiam9pbiIsIl9oYW5kbGVGaWx0ZXJNb2RlbENoYW5nZSIsImNoYW5nZUV2ZW50IiwicHJvcGVydHlQYXRoIiwiZ2V0T2JqZWN0QmluZGluZyIsImdldFBhdGgiLCJnZXRTb3VyY2UiLCJnZXRQcm9wZXJ0eSIsInVwZGF0ZUNvbmRpdGlvbnNCeUZpbHRlclZhbHVlcyIsIl9oYW5kbGVDb25kaXRpb25zQ2hhbmdlIiwidXBkYXRlRmlsdGVyTW9kZWxCeUNvbmRpdGlvbnMiLCJpbml0IiwiX2NvbmRpdGlvbnNPYnNlcnZlciIsIk1hbmFnZWRPYmplY3RPYnNlcnZlciIsIl9vYnNlcnZlQ2hhbmdlcyIsImJpbmQiLCJvYnNlcnZlIiwicHJvcGVydGllcyIsIl9maWx0ZXJNb2RlbCIsIkpTT05Nb2RlbCIsImF0dGFjaFByb3BlcnR5Q2hhbmdlIiwic2V0TW9kZWwiLCJGSUxURVJfTU9ERUxfQUxJQVMiLCJjbG9uZSIsInNJZFN1ZmZpeCIsImFMb2NhbElkcyIsImNoYW5nZXMiLCJuYW1lIiwiY3VycmVudCIsImdldEFnZ3JlZ2F0aW9uIiwiZ2V0Q29uZGl0aW9ucyIsInNldENvbmRpdGlvbnMiLCJzZXRQcm9wZXJ0eSIsImdldEZpbHRlck1vZGVsQWxpYXMiLCJnZXRCaW5kaW5nQ29udGV4dCIsImdldEFjY2Vzc2liaWxpdHlJbmZvIiwiY29udGVudCIsImdldElkRm9yTGFiZWwiLCJDb250cm9sIl0sInNvdXJjZVJvb3QiOiIuIiwic291cmNlcyI6WyJDdXN0b21GaWx0ZXJGaWVsZENvbnRlbnRXcmFwcGVyLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGFnZ3JlZ2F0aW9uLCBkZWZpbmVVSTVDbGFzcywgZXZlbnQsIGltcGxlbWVudEludGVyZmFjZSwgcHJvcGVydHkgfSBmcm9tIFwic2FwL2ZlL2NvcmUvaGVscGVycy9DbGFzc1N1cHBvcnRcIjtcbmltcG9ydCBTZW1hbnRpY0RhdGVPcGVyYXRvcnMgZnJvbSBcInNhcC9mZS9jb3JlL2hlbHBlcnMvU2VtYW50aWNEYXRlT3BlcmF0b3JzXCI7XG5pbXBvcnQgTWFuYWdlZE9iamVjdE9ic2VydmVyIGZyb20gXCJzYXAvdWkvYmFzZS9NYW5hZ2VkT2JqZWN0T2JzZXJ2ZXJcIjtcbmltcG9ydCBDb250cm9sIGZyb20gXCJzYXAvdWkvY29yZS9Db250cm9sXCI7IC8vaW1wb3J0IENvbnRyb2wgZnJvbSBcInNhcC91aS9tZGMvZmllbGQvRmllbGRCYXNlXCI7XG5pbXBvcnQgdHlwZSB7IElGb3JtQ29udGVudCB9IGZyb20gXCJzYXAvdWkvY29yZS9saWJyYXJ5XCI7XG5pbXBvcnQgdHlwZSBSZW5kZXJNYW5hZ2VyIGZyb20gXCJzYXAvdWkvY29yZS9SZW5kZXJNYW5hZ2VyXCI7XG5pbXBvcnQgdHlwZSB7IENvbmRpdGlvbk9iamVjdCB9IGZyb20gXCJzYXAvdWkvbWRjL2NvbmRpdGlvbi9Db25kaXRpb25cIjtcbmltcG9ydCBDb25kaXRpb24gZnJvbSBcInNhcC91aS9tZGMvY29uZGl0aW9uL0NvbmRpdGlvblwiO1xuaW1wb3J0IENvbmRpdGlvblZhbGlkYXRlZCBmcm9tIFwic2FwL3VpL21kYy9lbnVtL0NvbmRpdGlvblZhbGlkYXRlZFwiO1xuaW1wb3J0IENvbmRpdGlvbnNUeXBlIGZyb20gXCJzYXAvdWkvbWRjL2ZpZWxkL0NvbmRpdGlvbnNUeXBlXCI7XG5pbXBvcnQgSlNPTk1vZGVsIGZyb20gXCJzYXAvdWkvbW9kZWwvanNvbi9KU09OTW9kZWxcIjtcblxuLyoqXG4gKiBUeXBlIHVzZWQgZm9yIGZvcm1hdCBvcHRpb25zXG4gKlxuICogQHR5cGVkZWYgRm9ybWF0T3B0aW9uc1R5cGVcbiAqL1xudHlwZSBGb3JtYXRPcHRpb25zVHlwZSA9IHtcblx0b3BlcmF0b3JzOiBzdHJpbmdbXTtcbn07XG5cbi8qKlxuICogQGNsYXNzXG4gKiBDcmVhdGVzIGFuIDxjb2RlPnNhcC5mZS5jb3JlLmNvbnRyb2xzLkN1c3RvbUZpbHRlckZpZWxkQ29udGVudFdyYXBwZXI8L2NvZGU+IG9iamVjdC5cbiAqIFRoaXMgaXMgdXNlZCBpbiB0aGUge0BsaW5rIHNhcC51aS5tZGMuRmlsdGVyRmllbGQgRmlsdGVyRmllbGR9IGFzIGEgZmlsdGVyIGNvbnRlbnQuXG4gKiBAZXh0ZW5kcyBzYXAudWkuY29yZS5Db250cm9sXG4gKiBAcHJpdmF0ZVxuICogQGFsaWFzIHNhcC5mZS5jb3JlLmNvbnRyb2xzLkN1c3RvbUZpbHRlckZpZWxkQ29udGVudFdyYXBwZXJcbiAqL1xuQGRlZmluZVVJNUNsYXNzKFwic2FwLmZlLmNvcmUuY29udHJvbHMuQ3VzdG9tRmlsdGVyRmllbGRDb250ZW50V3JhcHBlclwiKVxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQ3VzdG9tRmlsdGVyRmllbGRDb250ZW50V3JhcHBlciBleHRlbmRzIENvbnRyb2wgaW1wbGVtZW50cyBJRm9ybUNvbnRlbnQge1xuXHRAaW1wbGVtZW50SW50ZXJmYWNlKFwic2FwLnVpLmNvcmUuSUZvcm1Db250ZW50XCIpXG5cdC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBjYW1lbGNhc2Vcblx0X19pbXBsZW1lbnRzX19zYXBfdWlfY29yZV9JRm9ybUNvbnRlbnQgPSB0cnVlO1xuXG5cdEBwcm9wZXJ0eSh7IHR5cGU6IFwic2FwLnVpLmNvcmUuQ1NTU2l6ZVwiLCBkZWZhdWx0VmFsdWU6IG51bGwgfSlcblx0d2lkdGghOiBzdHJpbmc7XG5cblx0QHByb3BlcnR5KHsgdHlwZTogXCJib29sZWFuXCIsIGRlZmF1bHRWYWx1ZTogZmFsc2UgfSlcblx0Zm9ybURvTm90QWRqdXN0V2lkdGghOiBib29sZWFuO1xuXG5cdEBwcm9wZXJ0eSh7IHR5cGU6IFwib2JqZWN0W11cIiwgZGVmYXVsdFZhbHVlOiBbXSB9KVxuXHRjb25kaXRpb25zITogQ29uZGl0aW9uT2JqZWN0W107XG5cblx0QGFnZ3JlZ2F0aW9uKHsgdHlwZTogXCJzYXAudWkuY29yZS5Db250cm9sXCIsIG11bHRpcGxlOiBmYWxzZSwgaXNEZWZhdWx0OiB0cnVlIH0pXG5cdGNvbnRlbnQhOiBDb250cm9sO1xuXG5cdEBldmVudCgpXG5cdGNvbmRpdGlvbnNDaGFuZ2UhOiBGdW5jdGlvbjtcblxuXHQvLyBOb3RlOiBGaWVsZEJhc2UgbWlnaHQgYmUgdXNlZCBhcyBiYXNlIGNvbnRyb2wgKGluc3RlYWQgb2YgQ29udHJvbCkgaW4gYSBsYXRlciB2ZXJzaW9uO1xuXHQvLyBpbiB0aGF0IGNhc2UsIHlvdSBzaG91bGQgYWRkIGEgJ2NoYW5nZScgZXZlbnQgYW5kIGJ1YmJsZSBpdCB0byB0aGUgY29ycmVzcG9uZGluZyBoYW5kbGVyc1xuXG5cdHByaXZhdGUgX2ZpbHRlck1vZGVsOiBhbnk7XG5cdHByaXZhdGUgX2NvbmRpdGlvbnNPYnNlcnZlcjogYW55O1xuXHRwcml2YXRlIHN0YXRpYyByZWFkb25seSBGSUxURVJfTU9ERUxfQUxJQVMgPSBcImZpbHRlclZhbHVlc1wiO1xuXG5cdHN0YXRpYyByZW5kZXIocmVuZGVyTWFuYWdlcjogUmVuZGVyTWFuYWdlciwgY29udHJvbDogQ3VzdG9tRmlsdGVyRmllbGRDb250ZW50V3JhcHBlcik6IHZvaWQge1xuXHRcdHJlbmRlck1hbmFnZXIub3BlblN0YXJ0KFwiZGl2XCIsIGNvbnRyb2wpO1xuXHRcdHJlbmRlck1hbmFnZXIuc3R5bGUoXCJtaW4taGVpZ2h0XCIsIFwiMXJlbVwiKTtcblx0XHRyZW5kZXJNYW5hZ2VyLnN0eWxlKFwid2lkdGhcIiwgY29udHJvbC53aWR0aCk7XG5cdFx0cmVuZGVyTWFuYWdlci5vcGVuRW5kKCk7XG5cdFx0cmVuZGVyTWFuYWdlci5yZW5kZXJDb250cm9sKGNvbnRyb2wuZ2V0Q29udGVudCgpKTsgLy8gcmVuZGVyIHRoZSBjaGlsZCBDb250cm9sXG5cdFx0cmVuZGVyTWFuYWdlci5jbG9zZShcImRpdlwiKTsgLy8gZW5kIG9mIHRoZSBjb21wbGV0ZSBDb250cm9sXG5cdH1cblxuXHQvKipcblx0ICogTWFwcyBhbiBhcnJheSBvZiBmaWx0ZXIgdmFsdWVzIHRvIGFuIGFycmF5IG9mIGNvbmRpdGlvbnMuXG5cdCAqXG5cdCAqIEBwYXJhbSBmaWx0ZXJWYWx1ZXMgQXJyYXkgb2YgZmlsdGVyIHZhbHVlIGJpbmRpbmdzIG9yIGEgZmlsdGVyIHZhbHVlIHN0cmluZ1xuXHQgKiBAcGFyYW0gW29wZXJhdG9yXSBUaGUgb3BlcmF0b3IgdG8gYmUgdXNlZCAob3B0aW9uYWwpIC0gaWYgbm90IHNldCwgdGhlIGRlZmF1bHQgb3BlcmF0b3IgKEVRKSB3aWxsIGJlIHVzZWRcblx0ICogQHByaXZhdGVcblx0ICogQHJldHVybnMgQXJyYXkgb2YgZmlsdGVyIGNvbmRpdGlvbnNcblx0ICovXG5cdHN0YXRpYyBfZmlsdGVyVmFsdWVzVG9Db25kaXRpb25zKGZpbHRlclZhbHVlczogYW55IHwgYW55W10sIG9wZXJhdG9yPzogc3RyaW5nKTogQ29uZGl0aW9uT2JqZWN0W10ge1xuXHRcdGxldCBmb3JtYXRPcHRpb25zOiBGb3JtYXRPcHRpb25zVHlwZSA9IHsgb3BlcmF0b3JzOiBbXSB9LFxuXHRcdFx0Y29uZGl0aW9ucyA9IFtdO1xuXG5cdFx0aWYgKG9wZXJhdG9yKSB7XG5cdFx0XHRmb3JtYXRPcHRpb25zID0geyBvcGVyYXRvcnM6IFtvcGVyYXRvcl0gfTtcblx0XHR9XG5cdFx0aWYgKGZpbHRlclZhbHVlcyA9PT0gXCJcIikge1xuXHRcdFx0ZmlsdGVyVmFsdWVzID0gW107XG5cdFx0fSBlbHNlIGlmICh0eXBlb2YgZmlsdGVyVmFsdWVzID09PSBcIm9iamVjdFwiICYmIGZpbHRlclZhbHVlcy5oYXNPd25Qcm9wZXJ0eShcIm9wZXJhdG9yXCIpICYmIGZpbHRlclZhbHVlcy5oYXNPd25Qcm9wZXJ0eShcInZhbHVlc1wiKSkge1xuXHRcdFx0Zm9ybWF0T3B0aW9ucyA9IHsgb3BlcmF0b3JzOiBbZmlsdGVyVmFsdWVzLm9wZXJhdG9yXSB9O1xuXHRcdFx0ZmlsdGVyVmFsdWVzID0gZmlsdGVyVmFsdWVzLnZhbHVlcztcblx0XHR9IGVsc2UgaWYgKGZpbHRlclZhbHVlcyAhPT0gdW5kZWZpbmVkICYmIHR5cGVvZiBmaWx0ZXJWYWx1ZXMgIT09IFwib2JqZWN0XCIgJiYgdHlwZW9mIGZpbHRlclZhbHVlcyAhPT0gXCJzdHJpbmdcIikge1xuXHRcdFx0dGhyb3cgbmV3IEVycm9yKGBGaWx0ZXJVdGlscy5qcyNfZmlsdGVyVmFsdWVzVG9Db25kaXRpb25zOiBVbmV4cGVjdGVkIHR5cGUgb2YgaW5wdXQgcGFyYW1ldGVyIHZWYWx1ZXM6ICR7dHlwZW9mIGZpbHRlclZhbHVlc31gKTtcblx0XHR9XG5cblx0XHRjb25zdCBjb25kaXRpb25zVHlwZTogYW55ID0gbmV3IENvbmRpdGlvbnNUeXBlKGZvcm1hdE9wdGlvbnMpO1xuXHRcdGNvbnN0IGNvbmRpdGlvblZhbHVlcyA9IEFycmF5LmlzQXJyYXkoZmlsdGVyVmFsdWVzKSA/IGZpbHRlclZhbHVlcyA6IFtmaWx0ZXJWYWx1ZXNdO1xuXG5cdFx0Ly8gU2hvcnRjdXQgZm9yIG9wZXJhdG9yIHdpdGhvdXQgdmFsdWVzIGFuZCBzZW1hbnRpYyBkYXRlIG9wZXJhdGlvbnNcblx0XHRpZiAoXG5cdFx0XHR0eXBlb2Ygb3BlcmF0b3IgPT09IFwic3RyaW5nXCIgJiZcblx0XHRcdChjb25kaXRpb25WYWx1ZXMubGVuZ3RoID09PSAwIHx8IFNlbWFudGljRGF0ZU9wZXJhdG9ycy5nZXRTZW1hbnRpY0RhdGVPcGVyYXRpb25zKCkuaW5jbHVkZXMob3BlcmF0b3IpKVxuXHRcdCkge1xuXHRcdFx0Y29uZGl0aW9ucyA9IFtDb25kaXRpb24uY3JlYXRlQ29uZGl0aW9uKG9wZXJhdG9yLCBjb25kaXRpb25WYWx1ZXMsIG51bGwsIG51bGwsIENvbmRpdGlvblZhbGlkYXRlZC5Ob3RWYWxpZGF0ZWQpXTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0Y29uZGl0aW9ucyA9IGNvbmRpdGlvblZhbHVlc1xuXHRcdFx0XHQubWFwKChjb25kaXRpb25WYWx1ZSkgPT4ge1xuXHRcdFx0XHRcdGNvbnN0IHN0cmluZ1ZhbHVlID0gY29uZGl0aW9uVmFsdWU/LnRvU3RyaW5nKCksXG5cdFx0XHRcdFx0XHRwYXJzZWRDb25kaXRpb25zID0gY29uZGl0aW9uc1R5cGUucGFyc2VWYWx1ZShzdHJpbmdWYWx1ZSwgXCJhbnlcIik7XG5cdFx0XHRcdFx0cmV0dXJuIHBhcnNlZENvbmRpdGlvbnM/LlswXTtcblx0XHRcdFx0fSlcblx0XHRcdFx0LmZpbHRlcigoY29uZGl0aW9uVmFsdWUpID0+IGNvbmRpdGlvblZhbHVlICE9PSB1bmRlZmluZWQpO1xuXHRcdH1cblxuXHRcdHJldHVybiBjb25kaXRpb25zO1xuXHR9XG5cblx0LyoqXG5cdCAqIE1hcHMgYW4gYXJyYXkgb2YgY29uZGl0aW9ucyB0byBhIGNvbW1hIHNlcGFyYXRlZCBsaXN0IG9mIGZpbHRlciB2YWx1ZXMuXG5cdCAqXG5cdCAqIEBwYXJhbSBjb25kaXRpb25zIEFycmF5IG9mIGZpbHRlciBjb25kaXRpb25zXG5cdCAqIEBwYXJhbSBmb3JtYXRPcHRpb25zIEZvcm1hdCBvcHRpb25zIHRoYXQgc3BlY2lmaWVzIGEgY29uZGl0aW9uIHR5cGVcblx0ICogQHByaXZhdGVcblx0ICogQHJldHVybnMgQ29uY2F0ZW5hdGVkIHN0cmluZyBvZiBmaWx0ZXIgdmFsdWVzXG5cdCAqL1xuXHRzdGF0aWMgX2NvbmRpdGlvbnNUb0ZpbHRlck1vZGVsU3RyaW5nKGNvbmRpdGlvbnM6IG9iamVjdFtdLCBmb3JtYXRPcHRpb25zOiBGb3JtYXRPcHRpb25zVHlwZSk6IHN0cmluZyB7XG5cdFx0Y29uc3QgY29uZGl0aW9uc1R5cGUgPSBuZXcgQ29uZGl0aW9uc1R5cGUoZm9ybWF0T3B0aW9ucyk7XG5cblx0XHRyZXR1cm4gY29uZGl0aW9uc1xuXHRcdFx0Lm1hcCgoY29uZGl0aW9uKSA9PiB7XG5cdFx0XHRcdHJldHVybiBjb25kaXRpb25zVHlwZS5mb3JtYXRWYWx1ZShbY29uZGl0aW9uXSwgXCJhbnlcIikgfHwgXCJcIjtcblx0XHRcdH0pXG5cdFx0XHQuZmlsdGVyKChzdHJpbmdWYWx1ZSkgPT4ge1xuXHRcdFx0XHRyZXR1cm4gc3RyaW5nVmFsdWUgIT09IFwiXCI7XG5cdFx0XHR9KVxuXHRcdFx0LmpvaW4oXCIsXCIpO1xuXHR9XG5cblx0LyoqXG5cdCAqIExpc3RlbnMgdG8gZmlsdGVyIG1vZGVsIGNoYW5nZXMgYW5kIHVwZGF0ZXMgd3JhcHBlciBwcm9wZXJ0eSBcImNvbmRpdGlvbnNcIi5cblx0ICpcblx0ICogQHBhcmFtIGNoYW5nZUV2ZW50IEV2ZW50IHRyaWdnZXJlZCBieSBhIGZpbHRlciBtb2RlbCBjaGFuZ2Vcblx0ICogQHByaXZhdGVcblx0ICovXG5cdF9oYW5kbGVGaWx0ZXJNb2RlbENoYW5nZShjaGFuZ2VFdmVudDogYW55KTogdm9pZCB7XG5cdFx0Y29uc3QgcHJvcGVydHlQYXRoID0gdGhpcy5nZXRPYmplY3RCaW5kaW5nKFwiZmlsdGVyVmFsdWVzXCIpLmdldFBhdGgoKSxcblx0XHRcdHZhbHVlcyA9IGNoYW5nZUV2ZW50LmdldFNvdXJjZSgpLmdldFByb3BlcnR5KHByb3BlcnR5UGF0aCk7XG5cdFx0dGhpcy51cGRhdGVDb25kaXRpb25zQnlGaWx0ZXJWYWx1ZXModmFsdWVzLCBcIlwiKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBMaXN0ZW5zIHRvIFwiY29uZGl0aW9uc1wiIGNoYW5nZXMgYW5kIHVwZGF0ZXMgdGhlIGZpbHRlciBtb2RlbC5cblx0ICpcblx0ICogQHBhcmFtIGNvbmRpdGlvbnMgRXZlbnQgdHJpZ2dlcmVkIGJ5IGEgXCJjb25kaXRpb25zXCIgY2hhbmdlXG5cdCAqIEBwcml2YXRlXG5cdCAqL1xuXHRfaGFuZGxlQ29uZGl0aW9uc0NoYW5nZShjb25kaXRpb25zOiBhbnkpOiB2b2lkIHtcblx0XHR0aGlzLnVwZGF0ZUZpbHRlck1vZGVsQnlDb25kaXRpb25zKGNvbmRpdGlvbnMpO1xuXHR9XG5cblx0LyoqXG5cdCAqIEluaXRpYWxpemUgQ3VzdG9tRmlsdGVyRmllbGRDb250ZW50V3JhcHBlciBjb250cm9sIGFuZCByZWdpc3RlciBvYnNlcnZlci5cblx0ICovXG5cdGluaXQoKTogdm9pZCB7XG5cdFx0c3VwZXIuaW5pdCgpO1xuXHRcdHRoaXMuX2NvbmRpdGlvbnNPYnNlcnZlciA9IG5ldyBNYW5hZ2VkT2JqZWN0T2JzZXJ2ZXIodGhpcy5fb2JzZXJ2ZUNoYW5nZXMuYmluZCh0aGlzKSk7XG5cdFx0dGhpcy5fY29uZGl0aW9uc09ic2VydmVyLm9ic2VydmUodGhpcywge1xuXHRcdFx0cHJvcGVydGllczogW1wiY29uZGl0aW9uc1wiXVxuXHRcdH0pO1xuXHRcdHRoaXMuX2ZpbHRlck1vZGVsID0gbmV3IEpTT05Nb2RlbCgpO1xuXHRcdHRoaXMuX2ZpbHRlck1vZGVsLmF0dGFjaFByb3BlcnR5Q2hhbmdlKHRoaXMuX2hhbmRsZUZpbHRlck1vZGVsQ2hhbmdlLCB0aGlzKTtcblx0XHR0aGlzLnNldE1vZGVsKHRoaXMuX2ZpbHRlck1vZGVsLCBDdXN0b21GaWx0ZXJGaWVsZENvbnRlbnRXcmFwcGVyLkZJTFRFUl9NT0RFTF9BTElBUyk7XG5cdH1cblxuXHQvKipcblx0ICogT3ZlcnJpZGVzIHtAbGluayBzYXAudWkuY29yZS5Db250cm9sI2Nsb25lIENvbnRyb2wuY2xvbmV9IHRvIGNsb25lIGFkZGl0aW9uYWxcblx0ICogaW50ZXJuYWwgc3RhdGVzLlxuXHQgKlxuXHQgKiBAcGFyYW0gW3NJZFN1ZmZpeF0gQSBzdWZmaXggdG8gYmUgYXBwZW5kZWQgdG8gdGhlIGNsb25lZCBjb250cm9sIGlkXG5cdCAqIEBwYXJhbSBbYUxvY2FsSWRzXSBBbiBhcnJheSBvZiBsb2NhbCBJRHMgd2l0aGluIHRoZSBjbG9uZWQgaGllcmFyY2h5IChpbnRlcm5hbGx5IHVzZWQpXG5cdCAqIEByZXR1cm5zIFJlZmVyZW5jZSB0byB0aGUgbmV3bHkgY3JlYXRlZCBjbG9uZVxuXHQgKiBAcHJvdGVjdGVkXG5cdCAqL1xuXHRjbG9uZShzSWRTdWZmaXg6IHN0cmluZyB8IHVuZGVmaW5lZCwgYUxvY2FsSWRzOiBzdHJpbmdbXSB8IHVuZGVmaW5lZCk6IHRoaXMge1xuXHRcdGNvbnN0IGNsb25lID0gc3VwZXIuY2xvbmUoc0lkU3VmZml4LCBhTG9jYWxJZHMpO1xuXHRcdC8vIER1cmluZyBjbG9uaW5nLCB0aGUgb2xkIG1vZGVsIHdpbGwgYmUgY29waWVkIGFuZCBvdmVyd3JpdGVzIGFueSBuZXcgbW9kZWwgKHNhbWUgYWxpYXMpIHRoYXRcblx0XHQvLyB5b3UgaW50cm9kdWNlIGR1cmluZyBpbml0KCk7IGhlbmNlIHlvdSBuZWVkIHRvIG92ZXJ3cml0ZSBpdCBhZ2FpbiBieSB0aGUgbmV3IG9uZSB0aGF0IHlvdSd2ZVxuXHRcdC8vIGNyZWF0ZWQgZHVyaW5nIGluaXQoKSAoaS5lLiBjbG9uZS5fZmlsdGVyTW9kZWwpOyB0aGF0IHN0YW5kYXJkIGJlaGF2aW91ciBvZiBzdXBlci5jbG9uZSgpXG5cdFx0Ly8gY2FuJ3QgZXZlbiBiZSBzdXBwcmVzc2VkIGluIGFuIG93biBjb25zdHJ1Y3RvcjsgZm9yIGEgZGV0YWlsZWQgaW52ZXN0aWdhdGlvbiBvZiB0aGUgY2xvbmluZyxcblx0XHQvLyBwbGVhc2Ugb3ZlcndyaXRlIHRoZSBzZXRNb2RlbCgpIG1ldGhvZCBhbmQgY2hlY2sgdGhlIGxpc3Qgb2YgY2FsbGVycyBhbmQgc3RlcHMgaW5kdWNlZCBieSB0aGVtLlxuXHRcdGNsb25lLnNldE1vZGVsKGNsb25lLl9maWx0ZXJNb2RlbCwgQ3VzdG9tRmlsdGVyRmllbGRDb250ZW50V3JhcHBlci5GSUxURVJfTU9ERUxfQUxJQVMpO1xuXHRcdHJldHVybiBjbG9uZTtcblx0fVxuXG5cdC8qKlxuXHQgKiBMaXN0ZW5zIHRvIHByb3BlcnR5IGNoYW5nZXMuXG5cdCAqXG5cdCAqIEBwYXJhbSBjaGFuZ2VzIFByb3BlcnR5IGNoYW5nZXNcblx0ICogQHByaXZhdGVcblx0ICovXG5cdF9vYnNlcnZlQ2hhbmdlcyhjaGFuZ2VzOiBhbnkpOiB2b2lkIHtcblx0XHRpZiAoY2hhbmdlcy5uYW1lID09PSBcImNvbmRpdGlvbnNcIikge1xuXHRcdFx0dGhpcy5faGFuZGxlQ29uZGl0aW9uc0NoYW5nZShjaGFuZ2VzLmN1cnJlbnQpO1xuXHRcdH1cblx0fVxuXG5cdC8qKlxuXHQgKiBHZXRzIHRoZSBjb250ZW50IG9mIHRoaXMgd3JhcHBlciBjb250cm9sLlxuXHQgKlxuXHQgKiBAcmV0dXJucyBUaGUgd3JhcHBlciBjb250ZW50XG5cdCAqIEBwcml2YXRlXG5cdCAqL1xuXHRnZXRDb250ZW50KCk6IENvbnRyb2wge1xuXHRcdHJldHVybiB0aGlzLmdldEFnZ3JlZ2F0aW9uKFwiY29udGVudFwiKSBhcyBDb250cm9sO1xuXHR9XG5cblx0LyoqXG5cdCAqIEdldHMgdGhlIHZhbHVlIGZvciBjb250cm9sIHByb3BlcnR5ICdjb25kaXRpb25zJy5cblx0ICpcblx0ICogQHJldHVybnMgQXJyYXkgb2YgZmlsdGVyIGNvbmRpdGlvbnNcblx0ICogQHByaXZhdGVcblx0ICovXG5cdGdldENvbmRpdGlvbnMoKTogb2JqZWN0W10ge1xuXHRcdHJldHVybiB0aGlzLmdldFByb3BlcnR5KFwiY29uZGl0aW9uc1wiKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBTZXRzIHRoZSB2YWx1ZSBmb3IgY29udHJvbCBwcm9wZXJ0eSAnY29uZGl0aW9ucycuXG5cdCAqXG5cdCAqIEBwYXJhbSBbY29uZGl0aW9uc10gQXJyYXkgb2YgZmlsdGVyIGNvbmRpdGlvbnNcblx0ICogQHJldHVybnMgUmVmZXJlbmNlIHRvIHRoaXMgd3JhcHBlclxuXHQgKiBAcHJpdmF0ZVxuXHQgKi9cblx0c2V0Q29uZGl0aW9ucyhjb25kaXRpb25zOiBvYmplY3RbXSk6IHRoaXMge1xuXHRcdHRoaXMuc2V0UHJvcGVydHkoXCJjb25kaXRpb25zXCIsIGNvbmRpdGlvbnMgfHwgW10pO1xuXHRcdHJldHVybiB0aGlzO1xuXHR9XG5cblx0LyoqXG5cdCAqIEdldHMgdGhlIGZpbHRlciBtb2RlbCBhbGlhcyAnZmlsdGVyVmFsdWVzJy5cblx0ICpcblx0ICogQHJldHVybnMgVGhlIGZpbHRlciBtb2RlbFxuXHQgKiBAcHJpdmF0ZVxuXHQgKi9cblx0Z2V0RmlsdGVyTW9kZWxBbGlhcygpOiBzdHJpbmcge1xuXHRcdHJldHVybiBDdXN0b21GaWx0ZXJGaWVsZENvbnRlbnRXcmFwcGVyLkZJTFRFUl9NT0RFTF9BTElBUztcblx0fVxuXG5cdC8qKlxuXHQgKiBVcGRhdGVzIHRoZSBwcm9wZXJ0eSBcImNvbmRpdGlvbnNcIiB3aXRoIGZpbHRlciB2YWx1ZXNcblx0ICogc2VudCBieSBFeHRlbnNpb25BUEkjc2V0RmlsdGVyVmFsdWVzKCkuXG5cdCAqXG5cdCAqIEBwYXJhbSB2YWx1ZXMgVGhlIGZpbHRlciB2YWx1ZXNcblx0ICogQHBhcmFtIFtvcGVyYXRvcl0gVGhlIG9wZXJhdG9yIG5hbWVcblx0ICogQHByaXZhdGVcblx0ICovXG5cdHVwZGF0ZUNvbmRpdGlvbnNCeUZpbHRlclZhbHVlcyh2YWx1ZXM6IGFueSwgb3BlcmF0b3I/OiBzdHJpbmcpOiB2b2lkIHtcblx0XHRjb25zdCBjb25kaXRpb25zID0gQ3VzdG9tRmlsdGVyRmllbGRDb250ZW50V3JhcHBlci5fZmlsdGVyVmFsdWVzVG9Db25kaXRpb25zKHZhbHVlcywgb3BlcmF0b3IpO1xuXHRcdHRoaXMuc2V0Q29uZGl0aW9ucyhjb25kaXRpb25zKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBVcGRhdGVzIGZpbHRlciBtb2RlbCB3aXRoIGNvbmRpdGlvbnNcblx0ICogc2VudCBieSB0aGUge0BsaW5rIHNhcC51aS5tZGMuRmlsdGVyRmllbGQgRmlsdGVyRmllbGR9LlxuXHQgKlxuXHQgKiBAcGFyYW0gY29uZGl0aW9ucyBBcnJheSBvZiBmaWx0ZXIgY29uZGl0aW9uc1xuXHQgKiBAcHJpdmF0ZVxuXHQgKi9cblx0dXBkYXRlRmlsdGVyTW9kZWxCeUNvbmRpdGlvbnMoY29uZGl0aW9uczogYW55W10pOiB2b2lkIHtcblx0XHRjb25zdCBvcGVyYXRvciA9IGNvbmRpdGlvbnNbMF0/Lm9wZXJhdG9yIHx8IFwiXCI7XG5cdFx0Y29uc3QgZm9ybWF0T3B0aW9uczogRm9ybWF0T3B0aW9uc1R5cGUgPSBvcGVyYXRvciAhPT0gXCJcIiA/IHsgb3BlcmF0b3JzOiBbb3BlcmF0b3JdIH0gOiB7IG9wZXJhdG9yczogW10gfTtcblx0XHRpZiAodGhpcy5nZXRCaW5kaW5nQ29udGV4dChDdXN0b21GaWx0ZXJGaWVsZENvbnRlbnRXcmFwcGVyLkZJTFRFUl9NT0RFTF9BTElBUykpIHtcblx0XHRcdGNvbnN0IHN0cmluZ1ZhbHVlID0gQ3VzdG9tRmlsdGVyRmllbGRDb250ZW50V3JhcHBlci5fY29uZGl0aW9uc1RvRmlsdGVyTW9kZWxTdHJpbmcoY29uZGl0aW9ucywgZm9ybWF0T3B0aW9ucyk7XG5cdFx0XHR0aGlzLl9maWx0ZXJNb2RlbC5zZXRQcm9wZXJ0eShcblx0XHRcdFx0dGhpcy5nZXRCaW5kaW5nQ29udGV4dChDdXN0b21GaWx0ZXJGaWVsZENvbnRlbnRXcmFwcGVyLkZJTFRFUl9NT0RFTF9BTElBUyk/LmdldFBhdGgoKSxcblx0XHRcdFx0c3RyaW5nVmFsdWVcblx0XHRcdCk7XG5cdFx0fVxuXHR9XG5cblx0Z2V0QWNjZXNzaWJpbGl0eUluZm8oKTogYW55IHtcblx0XHRjb25zdCBjb250ZW50ID0gdGhpcy5nZXRDb250ZW50KCk7XG5cdFx0cmV0dXJuIGNvbnRlbnQ/LmdldEFjY2Vzc2liaWxpdHlJbmZvPy4oKSB8fCB7fTtcblx0fVxuXG5cdC8qKlxuXHQgKiBSZXR1cm5zIHRoZSBET01Ob2RlIElEIHRvIGJlIHVzZWQgZm9yIHRoZSBcImxhYmVsRm9yXCIgYXR0cmlidXRlLlxuXHQgKlxuXHQgKiBXZSBmb3J3YXJkIHRoZSBjYWxsIG9mIHRoaXMgbWV0aG9kIHRvIHRoZSBjb250ZW50IGNvbnRyb2wuXG5cdCAqXG5cdCAqIEByZXR1cm5zIElEIHRvIGJlIHVzZWQgZm9yIHRoZSA8Y29kZT5sYWJlbEZvcjwvY29kZT5cblx0ICovXG5cdGdldElkRm9yTGFiZWwoKTogc3RyaW5nIHtcblx0XHRjb25zdCBjb250ZW50ID0gdGhpcy5nZXRDb250ZW50KCk7XG5cdFx0cmV0dXJuIGNvbnRlbnQ/LmdldElkRm9yTGFiZWwoKTtcblx0fVxufVxuIl0sIm1hcHBpbmdzIjoiO0FBQUE7QUFBQTtBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O01BOEJxQkEsK0I7RUFUckI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtTQUNDQyxjQUFjLENBQUMsc0RBQUQsQyxVQUViQyxrQkFBa0IsQ0FBQywwQkFBRCxDLFVBSWxCQyxRQUFRLENBQUM7SUFBRUMsSUFBSSxFQUFFLHFCQUFSO0lBQStCQyxZQUFZLEVBQUU7RUFBN0MsQ0FBRCxDLFVBR1JGLFFBQVEsQ0FBQztJQUFFQyxJQUFJLEVBQUUsU0FBUjtJQUFtQkMsWUFBWSxFQUFFO0VBQWpDLENBQUQsQyxVQUdSRixRQUFRLENBQUM7SUFBRUMsSUFBSSxFQUFFLFVBQVI7SUFBb0JDLFlBQVksRUFBRTtFQUFsQyxDQUFELEMsVUFHUkMsV0FBVyxDQUFDO0lBQUVGLElBQUksRUFBRSxxQkFBUjtJQUErQkcsUUFBUSxFQUFFLEtBQXpDO0lBQWdEQyxTQUFTLEVBQUU7RUFBM0QsQ0FBRCxDLFVBR1hDLEtBQUssRTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7b0NBVUNDLE0sR0FBUCxnQkFBY0MsYUFBZCxFQUE0Q0MsT0FBNUMsRUFBNEY7TUFDM0ZELGFBQWEsQ0FBQ0UsU0FBZCxDQUF3QixLQUF4QixFQUErQkQsT0FBL0I7TUFDQUQsYUFBYSxDQUFDRyxLQUFkLENBQW9CLFlBQXBCLEVBQWtDLE1BQWxDO01BQ0FILGFBQWEsQ0FBQ0csS0FBZCxDQUFvQixPQUFwQixFQUE2QkYsT0FBTyxDQUFDRyxLQUFyQztNQUNBSixhQUFhLENBQUNLLE9BQWQ7TUFDQUwsYUFBYSxDQUFDTSxhQUFkLENBQTRCTCxPQUFPLENBQUNNLFVBQVIsRUFBNUIsRUFMMkYsQ0FLeEM7O01BQ25EUCxhQUFhLENBQUNRLEtBQWQsQ0FBb0IsS0FBcEIsRUFOMkYsQ0FNL0Q7SUFDNUI7SUFFRDtBQUNEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7b0NBQ1FDLHlCLEdBQVAsbUNBQWlDQyxZQUFqQyxFQUE0REMsUUFBNUQsRUFBa0c7TUFDakcsSUFBSUMsYUFBZ0MsR0FBRztRQUFFQyxTQUFTLEVBQUU7TUFBYixDQUF2QztNQUFBLElBQ0NDLFVBQVUsR0FBRyxFQURkOztNQUdBLElBQUlILFFBQUosRUFBYztRQUNiQyxhQUFhLEdBQUc7VUFBRUMsU0FBUyxFQUFFLENBQUNGLFFBQUQ7UUFBYixDQUFoQjtNQUNBOztNQUNELElBQUlELFlBQVksS0FBSyxFQUFyQixFQUF5QjtRQUN4QkEsWUFBWSxHQUFHLEVBQWY7TUFDQSxDQUZELE1BRU8sSUFBSSxPQUFPQSxZQUFQLEtBQXdCLFFBQXhCLElBQW9DQSxZQUFZLENBQUNLLGNBQWIsQ0FBNEIsVUFBNUIsQ0FBcEMsSUFBK0VMLFlBQVksQ0FBQ0ssY0FBYixDQUE0QixRQUE1QixDQUFuRixFQUEwSDtRQUNoSUgsYUFBYSxHQUFHO1VBQUVDLFNBQVMsRUFBRSxDQUFDSCxZQUFZLENBQUNDLFFBQWQ7UUFBYixDQUFoQjtRQUNBRCxZQUFZLEdBQUdBLFlBQVksQ0FBQ00sTUFBNUI7TUFDQSxDQUhNLE1BR0EsSUFBSU4sWUFBWSxLQUFLTyxTQUFqQixJQUE4QixPQUFPUCxZQUFQLEtBQXdCLFFBQXRELElBQWtFLE9BQU9BLFlBQVAsS0FBd0IsUUFBOUYsRUFBd0c7UUFDOUcsTUFBTSxJQUFJUSxLQUFKLGlHQUFtRyxPQUFPUixZQUExRyxFQUFOO01BQ0E7O01BRUQsSUFBTVMsY0FBbUIsR0FBRyxJQUFJQyxjQUFKLENBQW1CUixhQUFuQixDQUE1QjtNQUNBLElBQU1TLGVBQWUsR0FBR0MsS0FBSyxDQUFDQyxPQUFOLENBQWNiLFlBQWQsSUFBOEJBLFlBQTlCLEdBQTZDLENBQUNBLFlBQUQsQ0FBckUsQ0FqQmlHLENBbUJqRzs7TUFDQSxJQUNDLE9BQU9DLFFBQVAsS0FBb0IsUUFBcEIsS0FDQ1UsZUFBZSxDQUFDRyxNQUFoQixLQUEyQixDQUEzQixJQUFnQ0MscUJBQXFCLENBQUNDLHlCQUF0QixHQUFrREMsUUFBbEQsQ0FBMkRoQixRQUEzRCxDQURqQyxDQURELEVBR0U7UUFDREcsVUFBVSxHQUFHLENBQUNjLFNBQVMsQ0FBQ0MsZUFBVixDQUEwQmxCLFFBQTFCLEVBQW9DVSxlQUFwQyxFQUFxRCxJQUFyRCxFQUEyRCxJQUEzRCxFQUFpRVMsa0JBQWtCLENBQUNDLFlBQXBGLENBQUQsQ0FBYjtNQUNBLENBTEQsTUFLTztRQUNOakIsVUFBVSxHQUFHTyxlQUFlLENBQzFCVyxHQURXLENBQ1AsVUFBQ0MsY0FBRCxFQUFvQjtVQUN4QixJQUFNQyxXQUFXLEdBQUdELGNBQUgsYUFBR0EsY0FBSCx1QkFBR0EsY0FBYyxDQUFFRSxRQUFoQixFQUFwQjtVQUFBLElBQ0NDLGdCQUFnQixHQUFHakIsY0FBYyxDQUFDa0IsVUFBZixDQUEwQkgsV0FBMUIsRUFBdUMsS0FBdkMsQ0FEcEI7VUFFQSxPQUFPRSxnQkFBUCxhQUFPQSxnQkFBUCx1QkFBT0EsZ0JBQWdCLENBQUcsQ0FBSCxDQUF2QjtRQUNBLENBTFcsRUFNWEUsTUFOVyxDQU1KLFVBQUNMLGNBQUQ7VUFBQSxPQUFvQkEsY0FBYyxLQUFLaEIsU0FBdkM7UUFBQSxDQU5JLENBQWI7TUFPQTs7TUFFRCxPQUFPSCxVQUFQO0lBQ0E7SUFFRDtBQUNEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7b0NBQ1F5Qiw4QixHQUFQLHdDQUFzQ3pCLFVBQXRDLEVBQTRERixhQUE1RCxFQUFzRztNQUNyRyxJQUFNTyxjQUFjLEdBQUcsSUFBSUMsY0FBSixDQUFtQlIsYUFBbkIsQ0FBdkI7TUFFQSxPQUFPRSxVQUFVLENBQ2ZrQixHQURLLENBQ0QsVUFBQ1EsU0FBRCxFQUFlO1FBQ25CLE9BQU9yQixjQUFjLENBQUNzQixXQUFmLENBQTJCLENBQUNELFNBQUQsQ0FBM0IsRUFBd0MsS0FBeEMsS0FBa0QsRUFBekQ7TUFDQSxDQUhLLEVBSUxGLE1BSkssQ0FJRSxVQUFDSixXQUFELEVBQWlCO1FBQ3hCLE9BQU9BLFdBQVcsS0FBSyxFQUF2QjtNQUNBLENBTkssRUFPTFEsSUFQSyxDQU9BLEdBUEEsQ0FBUDtJQVFBO0lBRUQ7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7OztXQUNDQyx3QixHQUFBLGtDQUF5QkMsV0FBekIsRUFBaUQ7TUFDaEQsSUFBTUMsWUFBWSxHQUFHLEtBQUtDLGdCQUFMLENBQXNCLGNBQXRCLEVBQXNDQyxPQUF0QyxFQUFyQjtNQUFBLElBQ0MvQixNQUFNLEdBQUc0QixXQUFXLENBQUNJLFNBQVosR0FBd0JDLFdBQXhCLENBQW9DSixZQUFwQyxDQURWO01BRUEsS0FBS0ssOEJBQUwsQ0FBb0NsQyxNQUFwQyxFQUE0QyxFQUE1QztJQUNBO0lBRUQ7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7V0FDQ21DLHVCLEdBQUEsaUNBQXdCckMsVUFBeEIsRUFBK0M7TUFDOUMsS0FBS3NDLDZCQUFMLENBQW1DdEMsVUFBbkM7SUFDQTtJQUVEO0FBQ0Q7QUFDQTs7O1dBQ0N1QyxJLEdBQUEsZ0JBQWE7TUFDWixtQkFBTUEsSUFBTjs7TUFDQSxLQUFLQyxtQkFBTCxHQUEyQixJQUFJQyxxQkFBSixDQUEwQixLQUFLQyxlQUFMLENBQXFCQyxJQUFyQixDQUEwQixJQUExQixDQUExQixDQUEzQjs7TUFDQSxLQUFLSCxtQkFBTCxDQUF5QkksT0FBekIsQ0FBaUMsSUFBakMsRUFBdUM7UUFDdENDLFVBQVUsRUFBRSxDQUFDLFlBQUQ7TUFEMEIsQ0FBdkM7O01BR0EsS0FBS0MsWUFBTCxHQUFvQixJQUFJQyxTQUFKLEVBQXBCOztNQUNBLEtBQUtELFlBQUwsQ0FBa0JFLG9CQUFsQixDQUF1QyxLQUFLbkIsd0JBQTVDLEVBQXNFLElBQXRFOztNQUNBLEtBQUtvQixRQUFMLENBQWMsS0FBS0gsWUFBbkIsRUFBaUN2RSwrQkFBK0IsQ0FBQzJFLGtCQUFqRTtJQUNBO0lBRUQ7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7V0FDQ0MsSyxHQUFBLGVBQU1DLFNBQU4sRUFBcUNDLFNBQXJDLEVBQTRFO01BQzNFLElBQU1GLEtBQUssc0JBQVNBLEtBQVQsWUFBZUMsU0FBZixFQUEwQkMsU0FBMUIsQ0FBWCxDQUQyRSxDQUUzRTtNQUNBO01BQ0E7TUFDQTtNQUNBOzs7TUFDQUYsS0FBSyxDQUFDRixRQUFOLENBQWVFLEtBQUssQ0FBQ0wsWUFBckIsRUFBbUN2RSwrQkFBK0IsQ0FBQzJFLGtCQUFuRTtNQUNBLE9BQU9DLEtBQVA7SUFDQTtJQUVEO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O1dBQ0NULGUsR0FBQSx5QkFBZ0JZLE9BQWhCLEVBQW9DO01BQ25DLElBQUlBLE9BQU8sQ0FBQ0MsSUFBUixLQUFpQixZQUFyQixFQUFtQztRQUNsQyxLQUFLbEIsdUJBQUwsQ0FBNkJpQixPQUFPLENBQUNFLE9BQXJDO01BQ0E7SUFDRDtJQUVEO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O1dBQ0MvRCxVLEdBQUEsc0JBQXNCO01BQ3JCLE9BQU8sS0FBS2dFLGNBQUwsQ0FBb0IsU0FBcEIsQ0FBUDtJQUNBO0lBRUQ7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7V0FDQ0MsYSxHQUFBLHlCQUEwQjtNQUN6QixPQUFPLEtBQUt2QixXQUFMLENBQWlCLFlBQWpCLENBQVA7SUFDQTtJQUVEO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7V0FDQ3dCLGEsR0FBQSx1QkFBYzNELFVBQWQsRUFBMEM7TUFDekMsS0FBSzRELFdBQUwsQ0FBaUIsWUFBakIsRUFBK0I1RCxVQUFVLElBQUksRUFBN0M7TUFDQSxPQUFPLElBQVA7SUFDQTtJQUVEO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O1dBQ0M2RCxtQixHQUFBLCtCQUE4QjtNQUM3QixPQUFPdEYsK0JBQStCLENBQUMyRSxrQkFBdkM7SUFDQTtJQUVEO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztXQUNDZCw4QixHQUFBLHdDQUErQmxDLE1BQS9CLEVBQTRDTCxRQUE1QyxFQUFxRTtNQUNwRSxJQUFNRyxVQUFVLEdBQUd6QiwrQkFBK0IsQ0FBQ29CLHlCQUFoQyxDQUEwRE8sTUFBMUQsRUFBa0VMLFFBQWxFLENBQW5COztNQUNBLEtBQUs4RCxhQUFMLENBQW1CM0QsVUFBbkI7SUFDQTtJQUVEO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7V0FDQ3NDLDZCLEdBQUEsdUNBQThCdEMsVUFBOUIsRUFBdUQ7TUFBQTs7TUFDdEQsSUFBTUgsUUFBUSxHQUFHLGlCQUFBRyxVQUFVLENBQUMsQ0FBRCxDQUFWLDhEQUFlSCxRQUFmLEtBQTJCLEVBQTVDO01BQ0EsSUFBTUMsYUFBZ0MsR0FBR0QsUUFBUSxLQUFLLEVBQWIsR0FBa0I7UUFBRUUsU0FBUyxFQUFFLENBQUNGLFFBQUQ7TUFBYixDQUFsQixHQUE4QztRQUFFRSxTQUFTLEVBQUU7TUFBYixDQUF2Rjs7TUFDQSxJQUFJLEtBQUsrRCxpQkFBTCxDQUF1QnZGLCtCQUErQixDQUFDMkUsa0JBQXZELENBQUosRUFBZ0Y7UUFBQTs7UUFDL0UsSUFBTTlCLFdBQVcsR0FBRzdDLCtCQUErQixDQUFDa0QsOEJBQWhDLENBQStEekIsVUFBL0QsRUFBMkVGLGFBQTNFLENBQXBCOztRQUNBLEtBQUtnRCxZQUFMLENBQWtCYyxXQUFsQiwwQkFDQyxLQUFLRSxpQkFBTCxDQUF1QnZGLCtCQUErQixDQUFDMkUsa0JBQXZELENBREQsMERBQ0Msc0JBQTRFakIsT0FBNUUsRUFERCxFQUVDYixXQUZEO01BSUE7SUFDRCxDOztXQUVEMkMsb0IsR0FBQSxnQ0FBNEI7TUFBQTs7TUFDM0IsSUFBTUMsT0FBTyxHQUFHLEtBQUt2RSxVQUFMLEVBQWhCO01BQ0EsT0FBTyxDQUFBdUUsT0FBTyxTQUFQLElBQUFBLE9BQU8sV0FBUCxxQ0FBQUEsT0FBTyxDQUFFRCxvQkFBVCxxRkFBQUMsT0FBTyxNQUE4QixFQUE1QztJQUNBO0lBRUQ7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztXQUNDQyxhLEdBQUEseUJBQXdCO01BQ3ZCLElBQU1ELE9BQU8sR0FBRyxLQUFLdkUsVUFBTCxFQUFoQjtNQUNBLE9BQU91RSxPQUFQLGFBQU9BLE9BQVAsdUJBQU9BLE9BQU8sQ0FBRUMsYUFBVCxFQUFQO0lBQ0EsQzs7O0lBcFEyREMsTyxXQXlCcENoQixrQixHQUFxQixjOzs7OzthQXRCSixJIn0=
331
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJDdXN0b21GaWx0ZXJGaWVsZENvbnRlbnRXcmFwcGVyIiwiZGVmaW5lVUk1Q2xhc3MiLCJpbXBsZW1lbnRJbnRlcmZhY2UiLCJwcm9wZXJ0eSIsInR5cGUiLCJkZWZhdWx0VmFsdWUiLCJhZ2dyZWdhdGlvbiIsIm11bHRpcGxlIiwiaXNEZWZhdWx0IiwiZXZlbnQiLCJyZW5kZXIiLCJyZW5kZXJNYW5hZ2VyIiwiY29udHJvbCIsIm9wZW5TdGFydCIsInN0eWxlIiwid2lkdGgiLCJvcGVuRW5kIiwicmVuZGVyQ29udHJvbCIsImdldENvbnRlbnQiLCJjbG9zZSIsIl9maWx0ZXJWYWx1ZXNUb0NvbmRpdGlvbnMiLCJmaWx0ZXJWYWx1ZXMiLCJvcGVyYXRvciIsImZvcm1hdE9wdGlvbnMiLCJvcGVyYXRvcnMiLCJjb25kaXRpb25zIiwiaGFzT3duUHJvcGVydHkiLCJ2YWx1ZXMiLCJ1bmRlZmluZWQiLCJFcnJvciIsImNvbmRpdGlvbnNUeXBlIiwiQ29uZGl0aW9uc1R5cGUiLCJjb25kaXRpb25WYWx1ZXMiLCJBcnJheSIsImlzQXJyYXkiLCJsZW5ndGgiLCJTZW1hbnRpY0RhdGVPcGVyYXRvcnMiLCJnZXRTZW1hbnRpY0RhdGVPcGVyYXRpb25zIiwiaW5jbHVkZXMiLCJDb25kaXRpb24iLCJjcmVhdGVDb25kaXRpb24iLCJDb25kaXRpb25WYWxpZGF0ZWQiLCJOb3RWYWxpZGF0ZWQiLCJtYXAiLCJjb25kaXRpb25WYWx1ZSIsInN0cmluZ1ZhbHVlIiwidG9TdHJpbmciLCJwYXJzZWRDb25kaXRpb25zIiwicGFyc2VWYWx1ZSIsImZpbHRlciIsIl9jb25kaXRpb25zVG9GaWx0ZXJNb2RlbFN0cmluZyIsImNvbmRpdGlvbiIsImZvcm1hdFZhbHVlIiwiam9pbiIsIl9oYW5kbGVGaWx0ZXJNb2RlbENoYW5nZSIsImNoYW5nZUV2ZW50IiwicHJvcGVydHlQYXRoIiwiZ2V0T2JqZWN0QmluZGluZyIsImdldFBhdGgiLCJnZXRTb3VyY2UiLCJnZXRQcm9wZXJ0eSIsInVwZGF0ZUNvbmRpdGlvbnNCeUZpbHRlclZhbHVlcyIsIl9oYW5kbGVDb25kaXRpb25zQ2hhbmdlIiwidXBkYXRlRmlsdGVyTW9kZWxCeUNvbmRpdGlvbnMiLCJpbml0IiwiX2NvbmRpdGlvbnNPYnNlcnZlciIsIk1hbmFnZWRPYmplY3RPYnNlcnZlciIsIl9vYnNlcnZlQ2hhbmdlcyIsImJpbmQiLCJvYnNlcnZlIiwicHJvcGVydGllcyIsIl9maWx0ZXJNb2RlbCIsIkpTT05Nb2RlbCIsImF0dGFjaFByb3BlcnR5Q2hhbmdlIiwic2V0TW9kZWwiLCJGSUxURVJfTU9ERUxfQUxJQVMiLCJjbG9uZSIsInNJZFN1ZmZpeCIsImFMb2NhbElkcyIsImNoYW5nZXMiLCJuYW1lIiwiY3VycmVudCIsImdldEFnZ3JlZ2F0aW9uIiwiZ2V0Q29uZGl0aW9ucyIsInNldENvbmRpdGlvbnMiLCJzZXRQcm9wZXJ0eSIsImdldEZpbHRlck1vZGVsQWxpYXMiLCJnZXRCaW5kaW5nQ29udGV4dCIsImdldEFjY2Vzc2liaWxpdHlJbmZvIiwiY29udGVudCIsImdldElkRm9yTGFiZWwiLCJDb250cm9sIl0sInNvdXJjZVJvb3QiOiIuIiwic291cmNlcyI6WyJDdXN0b21GaWx0ZXJGaWVsZENvbnRlbnRXcmFwcGVyLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGFnZ3JlZ2F0aW9uLCBkZWZpbmVVSTVDbGFzcywgZXZlbnQsIGltcGxlbWVudEludGVyZmFjZSwgcHJvcGVydHkgfSBmcm9tIFwic2FwL2ZlL2NvcmUvaGVscGVycy9DbGFzc1N1cHBvcnRcIjtcbmltcG9ydCBTZW1hbnRpY0RhdGVPcGVyYXRvcnMgZnJvbSBcInNhcC9mZS9jb3JlL2hlbHBlcnMvU2VtYW50aWNEYXRlT3BlcmF0b3JzXCI7XG5pbXBvcnQgTWFuYWdlZE9iamVjdE9ic2VydmVyIGZyb20gXCJzYXAvdWkvYmFzZS9NYW5hZ2VkT2JqZWN0T2JzZXJ2ZXJcIjtcbmltcG9ydCBDb250cm9sIGZyb20gXCJzYXAvdWkvY29yZS9Db250cm9sXCI7IC8vaW1wb3J0IENvbnRyb2wgZnJvbSBcInNhcC91aS9tZGMvZmllbGQvRmllbGRCYXNlXCI7XG5pbXBvcnQgdHlwZSB7IElGb3JtQ29udGVudCB9IGZyb20gXCJzYXAvdWkvY29yZS9saWJyYXJ5XCI7XG5pbXBvcnQgdHlwZSBSZW5kZXJNYW5hZ2VyIGZyb20gXCJzYXAvdWkvY29yZS9SZW5kZXJNYW5hZ2VyXCI7XG5pbXBvcnQgdHlwZSB7IENvbmRpdGlvbk9iamVjdCB9IGZyb20gXCJzYXAvdWkvbWRjL2NvbmRpdGlvbi9Db25kaXRpb25cIjtcbmltcG9ydCBDb25kaXRpb24gZnJvbSBcInNhcC91aS9tZGMvY29uZGl0aW9uL0NvbmRpdGlvblwiO1xuaW1wb3J0IENvbmRpdGlvblZhbGlkYXRlZCBmcm9tIFwic2FwL3VpL21kYy9lbnVtL0NvbmRpdGlvblZhbGlkYXRlZFwiO1xuaW1wb3J0IENvbmRpdGlvbnNUeXBlIGZyb20gXCJzYXAvdWkvbWRjL2ZpZWxkL0NvbmRpdGlvbnNUeXBlXCI7XG5pbXBvcnQgSlNPTk1vZGVsIGZyb20gXCJzYXAvdWkvbW9kZWwvanNvbi9KU09OTW9kZWxcIjtcblxuLyoqXG4gKiBUeXBlIHVzZWQgZm9yIGZvcm1hdCBvcHRpb25zXG4gKlxuICogQHR5cGVkZWYgRm9ybWF0T3B0aW9uc1R5cGVcbiAqL1xudHlwZSBGb3JtYXRPcHRpb25zVHlwZSA9IHtcblx0b3BlcmF0b3JzOiBzdHJpbmdbXTtcbn07XG5cbi8qKlxuICogQGNsYXNzXG4gKiBDcmVhdGVzIGFuIDxjb2RlPnNhcC5mZS5jb3JlLmNvbnRyb2xzLkN1c3RvbUZpbHRlckZpZWxkQ29udGVudFdyYXBwZXI8L2NvZGU+IG9iamVjdC5cbiAqIFRoaXMgaXMgdXNlZCBpbiB0aGUge0BsaW5rIHNhcC51aS5tZGMuRmlsdGVyRmllbGQgRmlsdGVyRmllbGR9IGFzIGEgZmlsdGVyIGNvbnRlbnQuXG4gKiBAZXh0ZW5kcyBzYXAudWkuY29yZS5Db250cm9sXG4gKiBAcHJpdmF0ZVxuICogQGFsaWFzIHNhcC5mZS5jb3JlLmNvbnRyb2xzLkN1c3RvbUZpbHRlckZpZWxkQ29udGVudFdyYXBwZXJcbiAqL1xuQGRlZmluZVVJNUNsYXNzKFwic2FwLmZlLmNvcmUuY29udHJvbHMuQ3VzdG9tRmlsdGVyRmllbGRDb250ZW50V3JhcHBlclwiKVxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQ3VzdG9tRmlsdGVyRmllbGRDb250ZW50V3JhcHBlciBleHRlbmRzIENvbnRyb2wgaW1wbGVtZW50cyBJRm9ybUNvbnRlbnQge1xuXHRAaW1wbGVtZW50SW50ZXJmYWNlKFwic2FwLnVpLmNvcmUuSUZvcm1Db250ZW50XCIpXG5cdC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBjYW1lbGNhc2Vcblx0X19pbXBsZW1lbnRzX19zYXBfdWlfY29yZV9JRm9ybUNvbnRlbnQgPSB0cnVlO1xuXG5cdEBwcm9wZXJ0eSh7IHR5cGU6IFwic2FwLnVpLmNvcmUuQ1NTU2l6ZVwiLCBkZWZhdWx0VmFsdWU6IG51bGwgfSlcblx0d2lkdGghOiBzdHJpbmc7XG5cblx0QHByb3BlcnR5KHsgdHlwZTogXCJib29sZWFuXCIsIGRlZmF1bHRWYWx1ZTogZmFsc2UgfSlcblx0Zm9ybURvTm90QWRqdXN0V2lkdGghOiBib29sZWFuO1xuXG5cdEBwcm9wZXJ0eSh7IHR5cGU6IFwib2JqZWN0W11cIiwgZGVmYXVsdFZhbHVlOiBbXSB9KVxuXHRjb25kaXRpb25zITogQ29uZGl0aW9uT2JqZWN0W107XG5cblx0QGFnZ3JlZ2F0aW9uKHsgdHlwZTogXCJzYXAudWkuY29yZS5Db250cm9sXCIsIG11bHRpcGxlOiBmYWxzZSwgaXNEZWZhdWx0OiB0cnVlIH0pXG5cdGNvbnRlbnQhOiBDb250cm9sO1xuXG5cdEBldmVudCgpXG5cdGNvbmRpdGlvbnNDaGFuZ2UhOiBGdW5jdGlvbjtcblxuXHQvLyBOb3RlOiBGaWVsZEJhc2UgbWlnaHQgYmUgdXNlZCBhcyBiYXNlIGNvbnRyb2wgKGluc3RlYWQgb2YgQ29udHJvbCkgaW4gYSBsYXRlciB2ZXJzaW9uO1xuXHQvLyBpbiB0aGF0IGNhc2UsIHlvdSBzaG91bGQgYWRkIGEgJ2NoYW5nZScgZXZlbnQgYW5kIGJ1YmJsZSBpdCB0byB0aGUgY29ycmVzcG9uZGluZyBoYW5kbGVyc1xuXG5cdHByaXZhdGUgX2ZpbHRlck1vZGVsOiBhbnk7XG5cdHByaXZhdGUgX2NvbmRpdGlvbnNPYnNlcnZlcjogYW55O1xuXHRwcml2YXRlIHN0YXRpYyByZWFkb25seSBGSUxURVJfTU9ERUxfQUxJQVMgPSBcImZpbHRlclZhbHVlc1wiO1xuXG5cdHN0YXRpYyByZW5kZXIocmVuZGVyTWFuYWdlcjogUmVuZGVyTWFuYWdlciwgY29udHJvbDogQ3VzdG9tRmlsdGVyRmllbGRDb250ZW50V3JhcHBlcik6IHZvaWQge1xuXHRcdHJlbmRlck1hbmFnZXIub3BlblN0YXJ0KFwiZGl2XCIsIGNvbnRyb2wpO1xuXHRcdHJlbmRlck1hbmFnZXIuc3R5bGUoXCJtaW4taGVpZ2h0XCIsIFwiMXJlbVwiKTtcblx0XHRyZW5kZXJNYW5hZ2VyLnN0eWxlKFwid2lkdGhcIiwgY29udHJvbC53aWR0aCk7XG5cdFx0cmVuZGVyTWFuYWdlci5vcGVuRW5kKCk7XG5cdFx0cmVuZGVyTWFuYWdlci5yZW5kZXJDb250cm9sKGNvbnRyb2wuZ2V0Q29udGVudCgpKTsgLy8gcmVuZGVyIHRoZSBjaGlsZCBDb250cm9sXG5cdFx0cmVuZGVyTWFuYWdlci5jbG9zZShcImRpdlwiKTsgLy8gZW5kIG9mIHRoZSBjb21wbGV0ZSBDb250cm9sXG5cdH1cblxuXHQvKipcblx0ICogTWFwcyBhbiBhcnJheSBvZiBmaWx0ZXIgdmFsdWVzIHRvIGFuIGFycmF5IG9mIGNvbmRpdGlvbnMuXG5cdCAqXG5cdCAqIEBwYXJhbSBmaWx0ZXJWYWx1ZXMgQXJyYXkgb2YgZmlsdGVyIHZhbHVlIGJpbmRpbmdzIG9yIGEgZmlsdGVyIHZhbHVlIHN0cmluZ1xuXHQgKiBAcGFyYW0gW29wZXJhdG9yXSBUaGUgb3BlcmF0b3IgdG8gYmUgdXNlZCAob3B0aW9uYWwpIC0gaWYgbm90IHNldCwgdGhlIGRlZmF1bHQgb3BlcmF0b3IgKEVRKSB3aWxsIGJlIHVzZWRcblx0ICogQHByaXZhdGVcblx0ICogQHJldHVybnMgQXJyYXkgb2YgZmlsdGVyIGNvbmRpdGlvbnNcblx0ICovXG5cdHN0YXRpYyBfZmlsdGVyVmFsdWVzVG9Db25kaXRpb25zKGZpbHRlclZhbHVlczogYW55IHwgYW55W10sIG9wZXJhdG9yPzogc3RyaW5nKTogQ29uZGl0aW9uT2JqZWN0W10ge1xuXHRcdGxldCBmb3JtYXRPcHRpb25zOiBGb3JtYXRPcHRpb25zVHlwZSA9IHsgb3BlcmF0b3JzOiBbXSB9LFxuXHRcdFx0Y29uZGl0aW9ucyA9IFtdO1xuXG5cdFx0aWYgKG9wZXJhdG9yKSB7XG5cdFx0XHRmb3JtYXRPcHRpb25zID0geyBvcGVyYXRvcnM6IFtvcGVyYXRvcl0gfTtcblx0XHR9XG5cdFx0aWYgKGZpbHRlclZhbHVlcyA9PT0gXCJcIikge1xuXHRcdFx0ZmlsdGVyVmFsdWVzID0gW107XG5cdFx0fSBlbHNlIGlmICh0eXBlb2YgZmlsdGVyVmFsdWVzID09PSBcIm9iamVjdFwiICYmIGZpbHRlclZhbHVlcy5oYXNPd25Qcm9wZXJ0eShcIm9wZXJhdG9yXCIpICYmIGZpbHRlclZhbHVlcy5oYXNPd25Qcm9wZXJ0eShcInZhbHVlc1wiKSkge1xuXHRcdFx0Zm9ybWF0T3B0aW9ucyA9IHsgb3BlcmF0b3JzOiBbZmlsdGVyVmFsdWVzLm9wZXJhdG9yXSB9O1xuXHRcdFx0ZmlsdGVyVmFsdWVzID0gZmlsdGVyVmFsdWVzLnZhbHVlcztcblx0XHR9IGVsc2UgaWYgKGZpbHRlclZhbHVlcyAhPT0gdW5kZWZpbmVkICYmIHR5cGVvZiBmaWx0ZXJWYWx1ZXMgIT09IFwib2JqZWN0XCIgJiYgdHlwZW9mIGZpbHRlclZhbHVlcyAhPT0gXCJzdHJpbmdcIikge1xuXHRcdFx0dGhyb3cgbmV3IEVycm9yKGBGaWx0ZXJVdGlscy5qcyNfZmlsdGVyVmFsdWVzVG9Db25kaXRpb25zOiBVbmV4cGVjdGVkIHR5cGUgb2YgaW5wdXQgcGFyYW1ldGVyIHZWYWx1ZXM6ICR7dHlwZW9mIGZpbHRlclZhbHVlc31gKTtcblx0XHR9XG5cblx0XHRjb25zdCBjb25kaXRpb25zVHlwZTogYW55ID0gbmV3IENvbmRpdGlvbnNUeXBlKGZvcm1hdE9wdGlvbnMpO1xuXHRcdGNvbnN0IGNvbmRpdGlvblZhbHVlcyA9IEFycmF5LmlzQXJyYXkoZmlsdGVyVmFsdWVzKSA/IGZpbHRlclZhbHVlcyA6IFtmaWx0ZXJWYWx1ZXNdO1xuXG5cdFx0Ly8gU2hvcnRjdXQgZm9yIG9wZXJhdG9yIHdpdGhvdXQgdmFsdWVzIGFuZCBzZW1hbnRpYyBkYXRlIG9wZXJhdGlvbnNcblx0XHRpZiAoXG5cdFx0XHR0eXBlb2Ygb3BlcmF0b3IgPT09IFwic3RyaW5nXCIgJiZcblx0XHRcdChjb25kaXRpb25WYWx1ZXMubGVuZ3RoID09PSAwIHx8IFNlbWFudGljRGF0ZU9wZXJhdG9ycy5nZXRTZW1hbnRpY0RhdGVPcGVyYXRpb25zKCkuaW5jbHVkZXMob3BlcmF0b3IpKVxuXHRcdCkge1xuXHRcdFx0Y29uZGl0aW9ucyA9IFtDb25kaXRpb24uY3JlYXRlQ29uZGl0aW9uKG9wZXJhdG9yLCBjb25kaXRpb25WYWx1ZXMsIG51bGwsIG51bGwsIENvbmRpdGlvblZhbGlkYXRlZC5Ob3RWYWxpZGF0ZWQpXTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0Y29uZGl0aW9ucyA9IGNvbmRpdGlvblZhbHVlc1xuXHRcdFx0XHQubWFwKChjb25kaXRpb25WYWx1ZSkgPT4ge1xuXHRcdFx0XHRcdGNvbnN0IHN0cmluZ1ZhbHVlID0gY29uZGl0aW9uVmFsdWU/LnRvU3RyaW5nKCksXG5cdFx0XHRcdFx0XHRwYXJzZWRDb25kaXRpb25zID0gY29uZGl0aW9uc1R5cGUucGFyc2VWYWx1ZShzdHJpbmdWYWx1ZSwgXCJhbnlcIik7XG5cdFx0XHRcdFx0cmV0dXJuIHBhcnNlZENvbmRpdGlvbnM/LlswXTtcblx0XHRcdFx0fSlcblx0XHRcdFx0LmZpbHRlcigoY29uZGl0aW9uVmFsdWUpID0+IGNvbmRpdGlvblZhbHVlICE9PSB1bmRlZmluZWQpO1xuXHRcdH1cblxuXHRcdHJldHVybiBjb25kaXRpb25zO1xuXHR9XG5cblx0LyoqXG5cdCAqIE1hcHMgYW4gYXJyYXkgb2YgY29uZGl0aW9ucyB0byBhIGNvbW1hIHNlcGFyYXRlZCBsaXN0IG9mIGZpbHRlciB2YWx1ZXMuXG5cdCAqXG5cdCAqIEBwYXJhbSBjb25kaXRpb25zIEFycmF5IG9mIGZpbHRlciBjb25kaXRpb25zXG5cdCAqIEBwYXJhbSBmb3JtYXRPcHRpb25zIEZvcm1hdCBvcHRpb25zIHRoYXQgc3BlY2lmaWVzIGEgY29uZGl0aW9uIHR5cGVcblx0ICogQHByaXZhdGVcblx0ICogQHJldHVybnMgQ29uY2F0ZW5hdGVkIHN0cmluZyBvZiBmaWx0ZXIgdmFsdWVzXG5cdCAqL1xuXHRzdGF0aWMgX2NvbmRpdGlvbnNUb0ZpbHRlck1vZGVsU3RyaW5nKGNvbmRpdGlvbnM6IG9iamVjdFtdLCBmb3JtYXRPcHRpb25zOiBGb3JtYXRPcHRpb25zVHlwZSk6IHN0cmluZyB7XG5cdFx0Y29uc3QgY29uZGl0aW9uc1R5cGUgPSBuZXcgQ29uZGl0aW9uc1R5cGUoZm9ybWF0T3B0aW9ucyk7XG5cblx0XHRyZXR1cm4gY29uZGl0aW9uc1xuXHRcdFx0Lm1hcCgoY29uZGl0aW9uKSA9PiB7XG5cdFx0XHRcdHJldHVybiBjb25kaXRpb25zVHlwZS5mb3JtYXRWYWx1ZShbY29uZGl0aW9uXSwgXCJhbnlcIikgfHwgXCJcIjtcblx0XHRcdH0pXG5cdFx0XHQuZmlsdGVyKChzdHJpbmdWYWx1ZSkgPT4ge1xuXHRcdFx0XHRyZXR1cm4gc3RyaW5nVmFsdWUgIT09IFwiXCI7XG5cdFx0XHR9KVxuXHRcdFx0LmpvaW4oXCIsXCIpO1xuXHR9XG5cblx0LyoqXG5cdCAqIExpc3RlbnMgdG8gZmlsdGVyIG1vZGVsIGNoYW5nZXMgYW5kIHVwZGF0ZXMgd3JhcHBlciBwcm9wZXJ0eSBcImNvbmRpdGlvbnNcIi5cblx0ICpcblx0ICogQHBhcmFtIGNoYW5nZUV2ZW50IEV2ZW50IHRyaWdnZXJlZCBieSBhIGZpbHRlciBtb2RlbCBjaGFuZ2Vcblx0ICogQHByaXZhdGVcblx0ICovXG5cdF9oYW5kbGVGaWx0ZXJNb2RlbENoYW5nZShjaGFuZ2VFdmVudDogYW55KTogdm9pZCB7XG5cdFx0Y29uc3QgcHJvcGVydHlQYXRoID0gdGhpcy5nZXRPYmplY3RCaW5kaW5nKFwiZmlsdGVyVmFsdWVzXCIpPy5nZXRQYXRoKCksXG5cdFx0XHR2YWx1ZXMgPSBjaGFuZ2VFdmVudC5nZXRTb3VyY2UoKS5nZXRQcm9wZXJ0eShwcm9wZXJ0eVBhdGgpO1xuXHRcdHRoaXMudXBkYXRlQ29uZGl0aW9uc0J5RmlsdGVyVmFsdWVzKHZhbHVlcywgXCJcIik7XG5cdH1cblxuXHQvKipcblx0ICogTGlzdGVucyB0byBcImNvbmRpdGlvbnNcIiBjaGFuZ2VzIGFuZCB1cGRhdGVzIHRoZSBmaWx0ZXIgbW9kZWwuXG5cdCAqXG5cdCAqIEBwYXJhbSBjb25kaXRpb25zIEV2ZW50IHRyaWdnZXJlZCBieSBhIFwiY29uZGl0aW9uc1wiIGNoYW5nZVxuXHQgKiBAcHJpdmF0ZVxuXHQgKi9cblx0X2hhbmRsZUNvbmRpdGlvbnNDaGFuZ2UoY29uZGl0aW9uczogYW55KTogdm9pZCB7XG5cdFx0dGhpcy51cGRhdGVGaWx0ZXJNb2RlbEJ5Q29uZGl0aW9ucyhjb25kaXRpb25zKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBJbml0aWFsaXplIEN1c3RvbUZpbHRlckZpZWxkQ29udGVudFdyYXBwZXIgY29udHJvbCBhbmQgcmVnaXN0ZXIgb2JzZXJ2ZXIuXG5cdCAqL1xuXHRpbml0KCk6IHZvaWQge1xuXHRcdHN1cGVyLmluaXQoKTtcblx0XHR0aGlzLl9jb25kaXRpb25zT2JzZXJ2ZXIgPSBuZXcgTWFuYWdlZE9iamVjdE9ic2VydmVyKHRoaXMuX29ic2VydmVDaGFuZ2VzLmJpbmQodGhpcykpO1xuXHRcdHRoaXMuX2NvbmRpdGlvbnNPYnNlcnZlci5vYnNlcnZlKHRoaXMsIHtcblx0XHRcdHByb3BlcnRpZXM6IFtcImNvbmRpdGlvbnNcIl1cblx0XHR9KTtcblx0XHR0aGlzLl9maWx0ZXJNb2RlbCA9IG5ldyBKU09OTW9kZWwoKTtcblx0XHR0aGlzLl9maWx0ZXJNb2RlbC5hdHRhY2hQcm9wZXJ0eUNoYW5nZSh0aGlzLl9oYW5kbGVGaWx0ZXJNb2RlbENoYW5nZSwgdGhpcyk7XG5cdFx0dGhpcy5zZXRNb2RlbCh0aGlzLl9maWx0ZXJNb2RlbCwgQ3VzdG9tRmlsdGVyRmllbGRDb250ZW50V3JhcHBlci5GSUxURVJfTU9ERUxfQUxJQVMpO1xuXHR9XG5cblx0LyoqXG5cdCAqIE92ZXJyaWRlcyB7QGxpbmsgc2FwLnVpLmNvcmUuQ29udHJvbCNjbG9uZSBDb250cm9sLmNsb25lfSB0byBjbG9uZSBhZGRpdGlvbmFsXG5cdCAqIGludGVybmFsIHN0YXRlcy5cblx0ICpcblx0ICogQHBhcmFtIFtzSWRTdWZmaXhdIEEgc3VmZml4IHRvIGJlIGFwcGVuZGVkIHRvIHRoZSBjbG9uZWQgY29udHJvbCBpZFxuXHQgKiBAcGFyYW0gW2FMb2NhbElkc10gQW4gYXJyYXkgb2YgbG9jYWwgSURzIHdpdGhpbiB0aGUgY2xvbmVkIGhpZXJhcmNoeSAoaW50ZXJuYWxseSB1c2VkKVxuXHQgKiBAcmV0dXJucyBSZWZlcmVuY2UgdG8gdGhlIG5ld2x5IGNyZWF0ZWQgY2xvbmVcblx0ICogQHByb3RlY3RlZFxuXHQgKi9cblx0Y2xvbmUoc0lkU3VmZml4OiBzdHJpbmcgfCB1bmRlZmluZWQsIGFMb2NhbElkczogc3RyaW5nW10gfCB1bmRlZmluZWQpOiB0aGlzIHtcblx0XHRjb25zdCBjbG9uZSA9IHN1cGVyLmNsb25lKHNJZFN1ZmZpeCwgYUxvY2FsSWRzKTtcblx0XHQvLyBEdXJpbmcgY2xvbmluZywgdGhlIG9sZCBtb2RlbCB3aWxsIGJlIGNvcGllZCBhbmQgb3ZlcndyaXRlcyBhbnkgbmV3IG1vZGVsIChzYW1lIGFsaWFzKSB0aGF0XG5cdFx0Ly8geW91IGludHJvZHVjZSBkdXJpbmcgaW5pdCgpOyBoZW5jZSB5b3UgbmVlZCB0byBvdmVyd3JpdGUgaXQgYWdhaW4gYnkgdGhlIG5ldyBvbmUgdGhhdCB5b3UndmVcblx0XHQvLyBjcmVhdGVkIGR1cmluZyBpbml0KCkgKGkuZS4gY2xvbmUuX2ZpbHRlck1vZGVsKTsgdGhhdCBzdGFuZGFyZCBiZWhhdmlvdXIgb2Ygc3VwZXIuY2xvbmUoKVxuXHRcdC8vIGNhbid0IGV2ZW4gYmUgc3VwcHJlc3NlZCBpbiBhbiBvd24gY29uc3RydWN0b3I7IGZvciBhIGRldGFpbGVkIGludmVzdGlnYXRpb24gb2YgdGhlIGNsb25pbmcsXG5cdFx0Ly8gcGxlYXNlIG92ZXJ3cml0ZSB0aGUgc2V0TW9kZWwoKSBtZXRob2QgYW5kIGNoZWNrIHRoZSBsaXN0IG9mIGNhbGxlcnMgYW5kIHN0ZXBzIGluZHVjZWQgYnkgdGhlbS5cblx0XHRjbG9uZS5zZXRNb2RlbChjbG9uZS5fZmlsdGVyTW9kZWwsIEN1c3RvbUZpbHRlckZpZWxkQ29udGVudFdyYXBwZXIuRklMVEVSX01PREVMX0FMSUFTKTtcblx0XHRyZXR1cm4gY2xvbmU7XG5cdH1cblxuXHQvKipcblx0ICogTGlzdGVucyB0byBwcm9wZXJ0eSBjaGFuZ2VzLlxuXHQgKlxuXHQgKiBAcGFyYW0gY2hhbmdlcyBQcm9wZXJ0eSBjaGFuZ2VzXG5cdCAqIEBwcml2YXRlXG5cdCAqL1xuXHRfb2JzZXJ2ZUNoYW5nZXMoY2hhbmdlczogYW55KTogdm9pZCB7XG5cdFx0aWYgKGNoYW5nZXMubmFtZSA9PT0gXCJjb25kaXRpb25zXCIpIHtcblx0XHRcdHRoaXMuX2hhbmRsZUNvbmRpdGlvbnNDaGFuZ2UoY2hhbmdlcy5jdXJyZW50KTtcblx0XHR9XG5cdH1cblxuXHQvKipcblx0ICogR2V0cyB0aGUgY29udGVudCBvZiB0aGlzIHdyYXBwZXIgY29udHJvbC5cblx0ICpcblx0ICogQHJldHVybnMgVGhlIHdyYXBwZXIgY29udGVudFxuXHQgKiBAcHJpdmF0ZVxuXHQgKi9cblx0Z2V0Q29udGVudCgpOiBDb250cm9sIHtcblx0XHRyZXR1cm4gdGhpcy5nZXRBZ2dyZWdhdGlvbihcImNvbnRlbnRcIikgYXMgQ29udHJvbDtcblx0fVxuXG5cdC8qKlxuXHQgKiBHZXRzIHRoZSB2YWx1ZSBmb3IgY29udHJvbCBwcm9wZXJ0eSAnY29uZGl0aW9ucycuXG5cdCAqXG5cdCAqIEByZXR1cm5zIEFycmF5IG9mIGZpbHRlciBjb25kaXRpb25zXG5cdCAqIEBwcml2YXRlXG5cdCAqL1xuXHRnZXRDb25kaXRpb25zKCk6IG9iamVjdFtdIHtcblx0XHRyZXR1cm4gdGhpcy5nZXRQcm9wZXJ0eShcImNvbmRpdGlvbnNcIik7XG5cdH1cblxuXHQvKipcblx0ICogU2V0cyB0aGUgdmFsdWUgZm9yIGNvbnRyb2wgcHJvcGVydHkgJ2NvbmRpdGlvbnMnLlxuXHQgKlxuXHQgKiBAcGFyYW0gW2NvbmRpdGlvbnNdIEFycmF5IG9mIGZpbHRlciBjb25kaXRpb25zXG5cdCAqIEByZXR1cm5zIFJlZmVyZW5jZSB0byB0aGlzIHdyYXBwZXJcblx0ICogQHByaXZhdGVcblx0ICovXG5cdHNldENvbmRpdGlvbnMoY29uZGl0aW9uczogb2JqZWN0W10pOiB0aGlzIHtcblx0XHR0aGlzLnNldFByb3BlcnR5KFwiY29uZGl0aW9uc1wiLCBjb25kaXRpb25zIHx8IFtdKTtcblx0XHRyZXR1cm4gdGhpcztcblx0fVxuXG5cdC8qKlxuXHQgKiBHZXRzIHRoZSBmaWx0ZXIgbW9kZWwgYWxpYXMgJ2ZpbHRlclZhbHVlcycuXG5cdCAqXG5cdCAqIEByZXR1cm5zIFRoZSBmaWx0ZXIgbW9kZWxcblx0ICogQHByaXZhdGVcblx0ICovXG5cdGdldEZpbHRlck1vZGVsQWxpYXMoKTogc3RyaW5nIHtcblx0XHRyZXR1cm4gQ3VzdG9tRmlsdGVyRmllbGRDb250ZW50V3JhcHBlci5GSUxURVJfTU9ERUxfQUxJQVM7XG5cdH1cblxuXHQvKipcblx0ICogVXBkYXRlcyB0aGUgcHJvcGVydHkgXCJjb25kaXRpb25zXCIgd2l0aCBmaWx0ZXIgdmFsdWVzXG5cdCAqIHNlbnQgYnkgRXh0ZW5zaW9uQVBJI3NldEZpbHRlclZhbHVlcygpLlxuXHQgKlxuXHQgKiBAcGFyYW0gdmFsdWVzIFRoZSBmaWx0ZXIgdmFsdWVzXG5cdCAqIEBwYXJhbSBbb3BlcmF0b3JdIFRoZSBvcGVyYXRvciBuYW1lXG5cdCAqIEBwcml2YXRlXG5cdCAqL1xuXHR1cGRhdGVDb25kaXRpb25zQnlGaWx0ZXJWYWx1ZXModmFsdWVzOiBhbnksIG9wZXJhdG9yPzogc3RyaW5nKTogdm9pZCB7XG5cdFx0Y29uc3QgY29uZGl0aW9ucyA9IEN1c3RvbUZpbHRlckZpZWxkQ29udGVudFdyYXBwZXIuX2ZpbHRlclZhbHVlc1RvQ29uZGl0aW9ucyh2YWx1ZXMsIG9wZXJhdG9yKTtcblx0XHR0aGlzLnNldENvbmRpdGlvbnMoY29uZGl0aW9ucyk7XG5cdH1cblxuXHQvKipcblx0ICogVXBkYXRlcyBmaWx0ZXIgbW9kZWwgd2l0aCBjb25kaXRpb25zXG5cdCAqIHNlbnQgYnkgdGhlIHtAbGluayBzYXAudWkubWRjLkZpbHRlckZpZWxkIEZpbHRlckZpZWxkfS5cblx0ICpcblx0ICogQHBhcmFtIGNvbmRpdGlvbnMgQXJyYXkgb2YgZmlsdGVyIGNvbmRpdGlvbnNcblx0ICogQHByaXZhdGVcblx0ICovXG5cdHVwZGF0ZUZpbHRlck1vZGVsQnlDb25kaXRpb25zKGNvbmRpdGlvbnM6IGFueVtdKTogdm9pZCB7XG5cdFx0Y29uc3Qgb3BlcmF0b3IgPSBjb25kaXRpb25zWzBdPy5vcGVyYXRvciB8fCBcIlwiO1xuXHRcdGNvbnN0IGZvcm1hdE9wdGlvbnM6IEZvcm1hdE9wdGlvbnNUeXBlID0gb3BlcmF0b3IgIT09IFwiXCIgPyB7IG9wZXJhdG9yczogW29wZXJhdG9yXSB9IDogeyBvcGVyYXRvcnM6IFtdIH07XG5cdFx0aWYgKHRoaXMuZ2V0QmluZGluZ0NvbnRleHQoQ3VzdG9tRmlsdGVyRmllbGRDb250ZW50V3JhcHBlci5GSUxURVJfTU9ERUxfQUxJQVMpKSB7XG5cdFx0XHRjb25zdCBzdHJpbmdWYWx1ZSA9IEN1c3RvbUZpbHRlckZpZWxkQ29udGVudFdyYXBwZXIuX2NvbmRpdGlvbnNUb0ZpbHRlck1vZGVsU3RyaW5nKGNvbmRpdGlvbnMsIGZvcm1hdE9wdGlvbnMpO1xuXHRcdFx0dGhpcy5fZmlsdGVyTW9kZWwuc2V0UHJvcGVydHkoXG5cdFx0XHRcdHRoaXMuZ2V0QmluZGluZ0NvbnRleHQoQ3VzdG9tRmlsdGVyRmllbGRDb250ZW50V3JhcHBlci5GSUxURVJfTU9ERUxfQUxJQVMpPy5nZXRQYXRoKCksXG5cdFx0XHRcdHN0cmluZ1ZhbHVlXG5cdFx0XHQpO1xuXHRcdH1cblx0fVxuXG5cdGdldEFjY2Vzc2liaWxpdHlJbmZvKCk6IGFueSB7XG5cdFx0Y29uc3QgY29udGVudCA9IHRoaXMuZ2V0Q29udGVudCgpO1xuXHRcdHJldHVybiBjb250ZW50Py5nZXRBY2Nlc3NpYmlsaXR5SW5mbz8uKCkgfHwge307XG5cdH1cblxuXHQvKipcblx0ICogUmV0dXJucyB0aGUgRE9NTm9kZSBJRCB0byBiZSB1c2VkIGZvciB0aGUgXCJsYWJlbEZvclwiIGF0dHJpYnV0ZS5cblx0ICpcblx0ICogV2UgZm9yd2FyZCB0aGUgY2FsbCBvZiB0aGlzIG1ldGhvZCB0byB0aGUgY29udGVudCBjb250cm9sLlxuXHQgKlxuXHQgKiBAcmV0dXJucyBJRCB0byBiZSB1c2VkIGZvciB0aGUgPGNvZGU+bGFiZWxGb3I8L2NvZGU+XG5cdCAqL1xuXHRnZXRJZEZvckxhYmVsKCk6IHN0cmluZyB7XG5cdFx0Y29uc3QgY29udGVudCA9IHRoaXMuZ2V0Q29udGVudCgpO1xuXHRcdHJldHVybiBjb250ZW50Py5nZXRJZEZvckxhYmVsKCk7XG5cdH1cbn1cbiJdLCJtYXBwaW5ncyI6IjtBQUFBO0FBQUE7QUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7RUFxQkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtFQVBBLElBU3FCQSwrQkFBK0IsV0FEbkRDLGNBQWMsQ0FBQyxzREFBc0QsQ0FBQyxVQUVyRUMsa0JBQWtCLENBQUMsMEJBQTBCLENBQUMsVUFJOUNDLFFBQVEsQ0FBQztJQUFFQyxJQUFJLEVBQUUscUJBQXFCO0lBQUVDLFlB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
@@ -138,7 +138,7 @@ export default class CustomFilterFieldContentWrapper extends Control implements
138
138
  * @private
139
139
  */
140
140
  _handleFilterModelChange(changeEvent: any): void {
141
- const propertyPath = this.getObjectBinding("filterValues").getPath(),
141
+ const propertyPath = this.getObjectBinding("filterValues")?.getPath(),
142
142
  values = changeEvent.getSource().getProperty(propertyPath);
143
143
  this.updateConditionsByFilterValues(values, "");
144
144
  }