@sapui5/sap.fe.core 1.102.0 → 1.103.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 (311) hide show
  1. package/package.json +5 -5
  2. package/src/sap/fe/core/.library +1 -1
  3. package/src/sap/fe/core/AppComponent.js +62 -26
  4. package/src/sap/fe/core/AppComponent.ts +56 -40
  5. package/src/sap/fe/core/AppStateHandler.js +10 -10
  6. package/src/sap/fe/core/AppStateHandler.ts +9 -9
  7. package/src/sap/fe/core/BaseController.js +11 -9
  8. package/src/sap/fe/core/BaseController.ts +15 -13
  9. package/src/sap/fe/core/CommonUtils.js +236 -109
  10. package/src/sap/fe/core/CommonUtils.ts +252 -136
  11. package/src/sap/fe/core/ExtensionAPI.js +24 -27
  12. package/src/sap/fe/core/ExtensionAPI.ts +36 -38
  13. package/src/sap/fe/core/PageController.js +4 -4
  14. package/src/sap/fe/core/PageController.ts +4 -5
  15. package/src/sap/fe/core/TemplateComponent.js +1 -1
  16. package/src/sap/fe/core/TemplateComponent.ts +6 -6
  17. package/src/sap/fe/core/TemplateModel.js +1 -1
  18. package/src/sap/fe/core/TemplateModel.ts +1 -1
  19. package/src/sap/fe/core/buildingBlocks/AttributeModel.js +1 -1
  20. package/src/sap/fe/core/buildingBlocks/AttributeModel.ts +1 -1
  21. package/src/sap/fe/core/buildingBlocks/BuildingBlockRuntime.js +8 -8
  22. package/src/sap/fe/core/buildingBlocks/BuildingBlockRuntime.ts +11 -10
  23. package/src/sap/fe/core/buildingBlocks/TraceInfo.js +27 -27
  24. package/src/sap/fe/core/buildingBlocks/TraceInfo.ts +28 -26
  25. package/src/sap/fe/core/controllerextensions/EditFlow.js +129 -118
  26. package/src/sap/fe/core/controllerextensions/EditFlow.ts +154 -141
  27. package/src/sap/fe/core/controllerextensions/IntentBasedNavigation.js +9 -9
  28. package/src/sap/fe/core/controllerextensions/IntentBasedNavigation.ts +10 -10
  29. package/src/sap/fe/core/controllerextensions/InternalEditFlow.js +31 -26
  30. package/src/sap/fe/core/controllerextensions/InternalEditFlow.ts +34 -35
  31. package/src/sap/fe/core/controllerextensions/InternalIntentBasedNavigation.js +70 -70
  32. package/src/sap/fe/core/controllerextensions/InternalIntentBasedNavigation.ts +77 -77
  33. package/src/sap/fe/core/controllerextensions/InternalRouting.js +84 -78
  34. package/src/sap/fe/core/controllerextensions/InternalRouting.ts +105 -101
  35. package/src/sap/fe/core/controllerextensions/KPIManagement.js +66 -68
  36. package/src/sap/fe/core/controllerextensions/KPIManagement.ts +106 -123
  37. package/src/sap/fe/core/controllerextensions/MassEdit.js +8 -8
  38. package/src/sap/fe/core/controllerextensions/MassEdit.ts +19 -26
  39. package/src/sap/fe/core/controllerextensions/MessageHandler.js +20 -12
  40. package/src/sap/fe/core/controllerextensions/MessageHandler.ts +29 -14
  41. package/src/sap/fe/core/controllerextensions/PageReady.js +97 -25
  42. package/src/sap/fe/core/controllerextensions/PageReady.ts +94 -34
  43. package/src/sap/fe/core/controllerextensions/Paginator.js +21 -22
  44. package/src/sap/fe/core/controllerextensions/Paginator.ts +24 -25
  45. package/src/sap/fe/core/controllerextensions/Placeholder.js +4 -6
  46. package/src/sap/fe/core/controllerextensions/Placeholder.ts +12 -14
  47. package/src/sap/fe/core/controllerextensions/Routing.js +10 -11
  48. package/src/sap/fe/core/controllerextensions/Routing.ts +12 -13
  49. package/src/sap/fe/core/controllerextensions/Share.js +22 -22
  50. package/src/sap/fe/core/controllerextensions/Share.ts +30 -29
  51. package/src/sap/fe/core/controllerextensions/SideEffects.js +46 -50
  52. package/src/sap/fe/core/controllerextensions/SideEffects.ts +56 -60
  53. package/src/sap/fe/core/controllerextensions/ViewState.js +65 -62
  54. package/src/sap/fe/core/controllerextensions/ViewState.ts +68 -63
  55. package/src/sap/fe/core/controllerextensions/collaboration/ActivityBase.js +5 -5
  56. package/src/sap/fe/core/controllerextensions/collaboration/ActivityBase.ts +8 -7
  57. package/src/sap/fe/core/controllerextensions/collaboration/ActivitySync.js +6 -6
  58. package/src/sap/fe/core/controllerextensions/collaboration/ActivitySync.ts +12 -17
  59. package/src/sap/fe/core/controllerextensions/collaboration/CollaborationCommon.js +2 -2
  60. package/src/sap/fe/core/controllerextensions/collaboration/CollaborationCommon.ts +4 -4
  61. package/src/sap/fe/core/controllerextensions/collaboration/Manage.js +7 -9
  62. package/src/sap/fe/core/controllerextensions/collaboration/Manage.ts +18 -19
  63. package/src/sap/fe/core/controllerextensions/editFlow/TransactionHelper.js +184 -137
  64. package/src/sap/fe/core/controllerextensions/editFlow/TransactionHelper.ts +253 -206
  65. package/src/sap/fe/core/controllerextensions/editFlow/draft.js +113 -121
  66. package/src/sap/fe/core/controllerextensions/editFlow/draft.ts +148 -158
  67. package/src/sap/fe/core/controllerextensions/editFlow/operations.js +198 -148
  68. package/src/sap/fe/core/controllerextensions/editFlow/operations.ts +223 -159
  69. package/src/sap/fe/core/controllerextensions/editFlow/sticky.js +24 -26
  70. package/src/sap/fe/core/controllerextensions/editFlow/sticky.ts +35 -33
  71. package/src/sap/fe/core/controllerextensions/messageHandler/messageHandling.js +78 -44
  72. package/src/sap/fe/core/controllerextensions/messageHandler/messageHandling.ts +90 -60
  73. package/src/sap/fe/core/controllerextensions/routing/RouterProxy.js +52 -55
  74. package/src/sap/fe/core/controllerextensions/routing/RouterProxy.ts +55 -58
  75. package/src/sap/fe/core/controls/Any.js +9 -5
  76. package/src/sap/fe/core/controls/Any.ts +10 -4
  77. package/src/sap/fe/core/controls/CommandExecution.js +11 -25
  78. package/src/sap/fe/core/controls/CommandExecution.ts +11 -25
  79. package/src/sap/fe/core/controls/ConditionalWrapper.js +2 -2
  80. package/src/sap/fe/core/controls/ConditionalWrapper.ts +3 -3
  81. package/src/sap/fe/core/controls/CustomFilterFieldContentWrapper.js +22 -22
  82. package/src/sap/fe/core/controls/CustomFilterFieldContentWrapper.ts +25 -24
  83. package/src/sap/fe/core/controls/CustomQuickViewPage.js +2 -2
  84. package/src/sap/fe/core/controls/CustomQuickViewPage.ts +2 -2
  85. package/src/sap/fe/core/controls/DataLossOrDraftDiscard/DataLossOrDraftDiscardHandler.js +3 -3
  86. package/src/sap/fe/core/controls/DataLossOrDraftDiscard/DataLossOrDraftDiscardHandler.ts +5 -5
  87. package/src/sap/fe/core/controls/FieldWrapper.js +2 -2
  88. package/src/sap/fe/core/controls/FieldWrapper.ts +3 -3
  89. package/src/sap/fe/core/controls/FileWrapper.js +2 -2
  90. package/src/sap/fe/core/controls/FileWrapper.ts +11 -11
  91. package/src/sap/fe/core/controls/FilterBar.js +6 -2
  92. package/src/sap/fe/core/controls/FilterBar.ts +13 -9
  93. package/src/sap/fe/core/controls/FormElementWrapper.js +1 -1
  94. package/src/sap/fe/core/controls/FormElementWrapper.ts +2 -2
  95. package/src/sap/fe/core/controls/MassEditSelect.js +1 -1
  96. package/src/sap/fe/core/controls/MassEditSelect.ts +0 -4
  97. package/src/sap/fe/core/controls/NonComputedVisibleKeyFieldsDialog.fragment.xml +3 -3
  98. package/src/sap/fe/core/controls/filterbar/VisualFilter.js +16 -12
  99. package/src/sap/fe/core/controls/filterbar/VisualFilter.ts +20 -22
  100. package/src/sap/fe/core/controls/filterbar/VisualFilterContainer.js +3 -3
  101. package/src/sap/fe/core/controls/filterbar/VisualFilterContainer.ts +8 -8
  102. package/src/sap/fe/core/controls/filterbar/utils/VisualFilterUtils.js +47 -47
  103. package/src/sap/fe/core/controls/filterbar/utils/VisualFilterUtils.ts +52 -52
  104. package/src/sap/fe/core/controls/massEdit/MassEditDialog.fragment.xml +8 -2
  105. package/src/sap/fe/core/controls/massEdit/MassEditHandlers.js +89 -88
  106. package/src/sap/fe/core/controls/massEdit/MassEditHandlers.ts +107 -106
  107. package/src/sap/fe/core/converters/ConverterContext.js +26 -33
  108. package/src/sap/fe/core/converters/ConverterContext.ts +51 -60
  109. package/src/sap/fe/core/converters/ManifestSettings.js +1 -1
  110. package/src/sap/fe/core/converters/ManifestSettings.ts +14 -14
  111. package/src/sap/fe/core/converters/ManifestWrapper.js +59 -45
  112. package/src/sap/fe/core/converters/ManifestWrapper.ts +55 -45
  113. package/src/sap/fe/core/converters/MetaModelConverter.js +50 -32
  114. package/src/sap/fe/core/converters/MetaModelConverter.ts +145 -127
  115. package/src/sap/fe/core/converters/TemplateConverter.js +21 -20
  116. package/src/sap/fe/core/converters/TemplateConverter.ts +27 -24
  117. package/src/sap/fe/core/converters/annotations/DataField.js +54 -34
  118. package/src/sap/fe/core/converters/annotations/DataField.ts +97 -75
  119. package/src/sap/fe/core/converters/common/AnnotationConverter.js +1911 -1495
  120. package/src/sap/fe/core/converters/controls/Common/Action.js +50 -41
  121. package/src/sap/fe/core/converters/controls/Common/Action.ts +56 -46
  122. package/src/sap/fe/core/converters/controls/Common/Chart.js +14 -14
  123. package/src/sap/fe/core/converters/controls/Common/Chart.ts +23 -26
  124. package/src/sap/fe/core/converters/controls/Common/Criticality.js +3 -3
  125. package/src/sap/fe/core/converters/controls/Common/Criticality.ts +4 -4
  126. package/src/sap/fe/core/converters/controls/Common/DataVisualization.js +28 -28
  127. package/src/sap/fe/core/converters/controls/Common/DataVisualization.ts +40 -36
  128. package/src/sap/fe/core/converters/controls/Common/Form.js +25 -27
  129. package/src/sap/fe/core/converters/controls/Common/Form.ts +37 -45
  130. package/src/sap/fe/core/converters/controls/Common/KPI.js +11 -11
  131. package/src/sap/fe/core/converters/controls/Common/KPI.ts +35 -39
  132. package/src/sap/fe/core/converters/controls/Common/Table.js +174 -183
  133. package/src/sap/fe/core/converters/controls/Common/Table.ts +237 -250
  134. package/src/sap/fe/core/converters/controls/Common/table/StandardActions.js +119 -119
  135. package/src/sap/fe/core/converters/controls/Common/table/StandardActions.ts +144 -141
  136. package/src/sap/fe/core/converters/controls/ListReport/FilterBar.js +45 -41
  137. package/src/sap/fe/core/converters/controls/ListReport/FilterBar.ts +64 -57
  138. package/src/sap/fe/core/converters/controls/ListReport/VisualFilters.js +28 -26
  139. package/src/sap/fe/core/converters/controls/ListReport/VisualFilters.ts +46 -43
  140. package/src/sap/fe/core/converters/controls/ObjectPage/Avatar.js +9 -9
  141. package/src/sap/fe/core/converters/controls/ObjectPage/Avatar.ts +14 -13
  142. package/src/sap/fe/core/converters/controls/ObjectPage/HeaderFacet.js +67 -64
  143. package/src/sap/fe/core/converters/controls/ObjectPage/HeaderFacet.ts +69 -66
  144. package/src/sap/fe/core/converters/controls/ObjectPage/SubSection.js +73 -72
  145. package/src/sap/fe/core/converters/controls/ObjectPage/SubSection.ts +98 -96
  146. package/src/sap/fe/core/converters/helpers/Aggregation.js +2 -4
  147. package/src/sap/fe/core/converters/helpers/Aggregation.ts +10 -13
  148. package/src/sap/fe/core/converters/helpers/BindingHelper.js +31 -31
  149. package/src/sap/fe/core/converters/helpers/BindingHelper.ts +30 -29
  150. package/src/sap/fe/core/converters/helpers/ConfigurableObject.js +4 -4
  151. package/src/sap/fe/core/converters/helpers/ConfigurableObject.ts +9 -9
  152. package/src/sap/fe/core/converters/helpers/ID.js +46 -46
  153. package/src/sap/fe/core/converters/helpers/ID.ts +25 -25
  154. package/src/sap/fe/core/converters/helpers/Key.js +7 -7
  155. package/src/sap/fe/core/converters/helpers/Key.ts +7 -7
  156. package/src/sap/fe/core/converters/helpers/SelectionVariantHelper.js +1 -1
  157. package/src/sap/fe/core/converters/helpers/SelectionVariantHelper.ts +4 -4
  158. package/src/sap/fe/core/converters/objectPage/FormMenuActions.js +6 -6
  159. package/src/sap/fe/core/converters/objectPage/FormMenuActions.ts +10 -10
  160. package/src/sap/fe/core/converters/objectPage/HeaderAndFooterAction.js +46 -62
  161. package/src/sap/fe/core/converters/objectPage/HeaderAndFooterAction.ts +54 -82
  162. package/src/sap/fe/core/converters/templates/ListReportConverter.js +30 -29
  163. package/src/sap/fe/core/converters/templates/ListReportConverter.ts +40 -40
  164. package/src/sap/fe/core/converters/templates/ObjectPageConverter.js +39 -38
  165. package/src/sap/fe/core/converters/templates/ObjectPageConverter.ts +52 -61
  166. package/src/sap/fe/core/designtime/AppComponent.designtime.js +4 -4
  167. package/src/sap/fe/core/designtime/AppComponent.designtime.ts +4 -4
  168. package/src/sap/fe/core/formatters/CollaborationFormatter.js +2 -2
  169. package/src/sap/fe/core/formatters/CollaborationFormatter.ts +3 -3
  170. package/src/sap/fe/core/formatters/FPMFormatter.js +5 -5
  171. package/src/sap/fe/core/formatters/FPMFormatter.ts +10 -10
  172. package/src/sap/fe/core/formatters/KPIFormatter.js +7 -7
  173. package/src/sap/fe/core/formatters/KPIFormatter.ts +10 -10
  174. package/src/sap/fe/core/formatters/StandardFormatter.js +89 -0
  175. package/src/sap/fe/core/formatters/StandardFormatter.ts +64 -0
  176. package/src/sap/fe/core/formatters/TableFormatter.js +11 -11
  177. package/src/sap/fe/core/formatters/TableFormatter.ts +12 -12
  178. package/src/sap/fe/core/formatters/ValueFormatter.js +8 -8
  179. package/src/sap/fe/core/formatters/ValueFormatter.ts +9 -9
  180. package/src/sap/fe/core/helpers/AppStartupHelper.js +15 -15
  181. package/src/sap/fe/core/helpers/AppStartupHelper.ts +37 -40
  182. package/src/sap/fe/core/helpers/BindingToolkit.js +1809 -0
  183. package/src/sap/fe/core/helpers/{BindingExpression.ts → BindingToolkit.ts} +365 -264
  184. package/src/sap/fe/core/helpers/ClassSupport.js +20 -11
  185. package/src/sap/fe/core/helpers/ClassSupport.ts +14 -10
  186. package/src/sap/fe/core/helpers/DynamicAnnotationPathHelper.js +2 -2
  187. package/src/sap/fe/core/helpers/DynamicAnnotationPathHelper.ts +1 -1
  188. package/src/sap/fe/core/helpers/EditState.js +1 -6
  189. package/src/sap/fe/core/helpers/EditState.ts +5 -10
  190. package/src/sap/fe/core/helpers/ExcelFormatHelper.js +2 -2
  191. package/src/sap/fe/core/helpers/ExcelFormatHelper.ts +4 -4
  192. package/src/sap/fe/core/helpers/FPMHelper.js +1 -1
  193. package/src/sap/fe/core/helpers/FPMHelper.ts +2 -2
  194. package/src/sap/fe/core/helpers/KeepAliveHelper.js +31 -31
  195. package/src/sap/fe/core/helpers/KeepAliveHelper.ts +52 -56
  196. package/src/sap/fe/core/helpers/MassEditHelper.js +281 -254
  197. package/src/sap/fe/core/helpers/MassEditHelper.ts +337 -289
  198. package/src/sap/fe/core/helpers/ModelHelper.js +25 -25
  199. package/src/sap/fe/core/helpers/ModelHelper.ts +34 -32
  200. package/src/sap/fe/core/helpers/PasteHelper.js +3 -10
  201. package/src/sap/fe/core/helpers/PasteHelper.ts +20 -25
  202. package/src/sap/fe/core/helpers/SemanticDateOperators.js +1 -1
  203. package/src/sap/fe/core/helpers/SemanticDateOperators.ts +11 -11
  204. package/src/sap/fe/core/helpers/SemanticKeyHelper.js +3 -3
  205. package/src/sap/fe/core/helpers/SemanticKeyHelper.ts +8 -8
  206. package/src/sap/fe/core/helpers/StableIdHelper.js +12 -12
  207. package/src/sap/fe/core/helpers/StableIdHelper.ts +12 -12
  208. package/src/sap/fe/core/jsx-runtime/jsx.js +1 -1
  209. package/src/sap/fe/core/jsx-runtime/jsx.ts +8 -8
  210. package/src/sap/fe/core/library.js +42 -3
  211. package/src/sap/fe/core/library.ts +38 -0
  212. package/src/sap/fe/core/manifestMerger/ChangePageConfiguration.js +3 -3
  213. package/src/sap/fe/core/manifestMerger/ChangePageConfiguration.ts +2 -2
  214. package/src/sap/fe/core/messagebundle.properties +49 -35
  215. package/src/sap/fe/core/messagebundle_ar.properties +13 -5
  216. package/src/sap/fe/core/messagebundle_bg.properties +13 -5
  217. package/src/sap/fe/core/messagebundle_ca.properties +13 -5
  218. package/src/sap/fe/core/messagebundle_cs.properties +13 -5
  219. package/src/sap/fe/core/messagebundle_cy.properties +14 -6
  220. package/src/sap/fe/core/messagebundle_da.properties +13 -5
  221. package/src/sap/fe/core/messagebundle_de.properties +15 -7
  222. package/src/sap/fe/core/messagebundle_el.properties +14 -6
  223. package/src/sap/fe/core/messagebundle_en.properties +9 -1
  224. package/src/sap/fe/core/messagebundle_en_GB.properties +11 -3
  225. package/src/sap/fe/core/messagebundle_en_US_sappsd.properties +7 -1
  226. package/src/sap/fe/core/messagebundle_en_US_saprigi.properties +9 -1
  227. package/src/sap/fe/core/messagebundle_en_US_saptrc.properties +44 -85
  228. package/src/sap/fe/core/messagebundle_es.properties +13 -5
  229. package/src/sap/fe/core/messagebundle_es_MX.properties +13 -5
  230. package/src/sap/fe/core/messagebundle_et.properties +13 -5
  231. package/src/sap/fe/core/messagebundle_fi.properties +14 -6
  232. package/src/sap/fe/core/messagebundle_fr.properties +14 -6
  233. package/src/sap/fe/core/messagebundle_fr_CA.properties +14 -6
  234. package/src/sap/fe/core/messagebundle_hi.properties +14 -6
  235. package/src/sap/fe/core/messagebundle_hr.properties +14 -6
  236. package/src/sap/fe/core/messagebundle_hu.properties +13 -5
  237. package/src/sap/fe/core/messagebundle_id.properties +13 -5
  238. package/src/sap/fe/core/messagebundle_it.properties +33 -25
  239. package/src/sap/fe/core/messagebundle_iw.properties +13 -5
  240. package/src/sap/fe/core/messagebundle_ja.properties +14 -6
  241. package/src/sap/fe/core/messagebundle_kk.properties +13 -5
  242. package/src/sap/fe/core/messagebundle_ko.properties +13 -5
  243. package/src/sap/fe/core/messagebundle_lt.properties +13 -5
  244. package/src/sap/fe/core/messagebundle_lv.properties +14 -6
  245. package/src/sap/fe/core/messagebundle_ms.properties +13 -5
  246. package/src/sap/fe/core/messagebundle_nl.properties +13 -5
  247. package/src/sap/fe/core/messagebundle_no.properties +13 -5
  248. package/src/sap/fe/core/messagebundle_pl.properties +13 -5
  249. package/src/sap/fe/core/messagebundle_pt.properties +13 -5
  250. package/src/sap/fe/core/messagebundle_pt_PT.properties +14 -6
  251. package/src/sap/fe/core/messagebundle_ro.properties +13 -5
  252. package/src/sap/fe/core/messagebundle_ru.properties +13 -5
  253. package/src/sap/fe/core/messagebundle_sh.properties +13 -5
  254. package/src/sap/fe/core/messagebundle_sk.properties +13 -5
  255. package/src/sap/fe/core/messagebundle_sl.properties +17 -9
  256. package/src/sap/fe/core/messagebundle_sv.properties +14 -6
  257. package/src/sap/fe/core/messagebundle_th.properties +13 -5
  258. package/src/sap/fe/core/messagebundle_tr.properties +13 -5
  259. package/src/sap/fe/core/messagebundle_uk.properties +13 -5
  260. package/src/sap/fe/core/messagebundle_vi.properties +13 -5
  261. package/src/sap/fe/core/messagebundle_zh_CN.properties +14 -6
  262. package/src/sap/fe/core/messagebundle_zh_TW.properties +13 -5
  263. package/src/sap/fe/core/services/AsyncComponentServiceFactory.js +2 -2
  264. package/src/sap/fe/core/services/AsyncComponentServiceFactory.ts +5 -5
  265. package/src/sap/fe/core/services/CacheHandlerServiceFactory.js +2 -2
  266. package/src/sap/fe/core/services/CacheHandlerServiceFactory.ts +14 -14
  267. package/src/sap/fe/core/services/EnvironmentServiceFactory.js +1 -1
  268. package/src/sap/fe/core/services/EnvironmentServiceFactory.ts +3 -2
  269. package/src/sap/fe/core/services/NavigationServiceFactory.js +53 -44
  270. package/src/sap/fe/core/services/NavigationServiceFactory.ts +54 -46
  271. package/src/sap/fe/core/services/ResourceModelServiceFactory.js +2 -2
  272. package/src/sap/fe/core/services/ResourceModelServiceFactory.ts +4 -4
  273. package/src/sap/fe/core/services/RoutingServiceFactory.js +55 -55
  274. package/src/sap/fe/core/services/RoutingServiceFactory.ts +67 -65
  275. package/src/sap/fe/core/services/ShellServicesFactory.js +72 -76
  276. package/src/sap/fe/core/services/ShellServicesFactory.ts +76 -82
  277. package/src/sap/fe/core/services/SideEffectsServiceFactory.js +61 -61
  278. package/src/sap/fe/core/services/SideEffectsServiceFactory.ts +102 -92
  279. package/src/sap/fe/core/services/TemplatedViewServiceFactory.js +20 -15
  280. package/src/sap/fe/core/services/TemplatedViewServiceFactory.ts +26 -21
  281. package/src/sap/fe/core/support/CommonHelper.js +3 -2
  282. package/src/sap/fe/core/support/CommonHelper.ts +9 -13
  283. package/src/sap/fe/core/support/Diagnostics.js +1 -1
  284. package/src/sap/fe/core/support/Diagnostics.ts +5 -5
  285. package/src/sap/fe/core/templating/CommonFormatters.js +84 -0
  286. package/src/sap/fe/core/templating/CommonFormatters.ts +86 -0
  287. package/src/sap/fe/core/templating/CriticalityFormatters.js +31 -31
  288. package/src/sap/fe/core/templating/CriticalityFormatters.ts +42 -40
  289. package/src/sap/fe/core/templating/DataFieldFormatters.js +8 -8
  290. package/src/sap/fe/core/templating/DataFieldFormatters.ts +13 -10
  291. package/src/sap/fe/core/templating/DataModelPathHelper.js +16 -15
  292. package/src/sap/fe/core/templating/DataModelPathHelper.ts +42 -32
  293. package/src/sap/fe/core/templating/DisplayModeFormatter.js +1 -1
  294. package/src/sap/fe/core/templating/DisplayModeFormatter.ts +2 -3
  295. package/src/sap/fe/core/templating/EntitySetHelper.js +7 -7
  296. package/src/sap/fe/core/templating/EntitySetHelper.ts +6 -8
  297. package/src/sap/fe/core/templating/FieldControlHelper.js +35 -34
  298. package/src/sap/fe/core/templating/FieldControlHelper.ts +29 -46
  299. package/src/sap/fe/core/templating/FilterHelper.js +10 -9
  300. package/src/sap/fe/core/templating/FilterHelper.ts +13 -13
  301. package/src/sap/fe/core/templating/FilterTemplating.js +1 -1
  302. package/src/sap/fe/core/templating/FilterTemplating.ts +3 -3
  303. package/src/sap/fe/core/templating/PropertyFormatters.js +7 -7
  304. package/src/sap/fe/core/templating/PropertyFormatters.ts +21 -19
  305. package/src/sap/fe/core/templating/PropertyHelper.js +25 -25
  306. package/src/sap/fe/core/templating/PropertyHelper.ts +25 -26
  307. package/src/sap/fe/core/templating/UIFormatters.js +148 -93
  308. package/src/sap/fe/core/templating/UIFormatters.ts +196 -124
  309. package/src/sap/fe/core/type/Email.js +2 -2
  310. package/src/sap/fe/core/type/Email.ts +2 -2
  311. package/src/sap/fe/core/helpers/BindingExpression.js +0 -1732
@@ -28,7 +28,7 @@ sap.ui.define(["sap/base/Log", "sap/base/util/UriParameters", "sap/fe/core/Templ
28
28
  var oComponent = oContext.scopeObject;
29
29
  var oAppComponent = Component.getOwnerComponentFor(oComponent);
30
30
  var oMetaModel = oAppComponent.getMetaModel();
31
- var sStableId = oAppComponent.getMetadata().getComponentName() + "::" + oAppComponent.getLocalId(oComponent.getId());
31
+ var sStableId = "".concat(oAppComponent.getMetadata().getComponentName(), "::").concat(oAppComponent.getLocalId(oComponent.getId()));
32
32
  var aEnhanceI18n = oComponent.getEnhanceI18n() || [];
33
33
  var sAppNamespace;
34
34
  this.oFactory = oContext.factory;
@@ -46,12 +46,12 @@ sap.ui.define(["sap/base/Log", "sap/base/util/UriParameters", "sap/fe/core/Templ
46
46
  if (oResourceModel && oResourceModel.isA("sap.ui.model.resource.ResourceModel")) {
47
47
  aEnhanceI18n[i] = oResourceModel;
48
48
  } else {
49
- aEnhanceI18n[i] = sAppNamespace + "." + aEnhanceI18n[i].replace(".properties", "");
49
+ aEnhanceI18n[i] = "".concat(sAppNamespace, ".").concat(aEnhanceI18n[i].replace(".properties", ""));
50
50
  }
51
51
  }
52
52
  }
53
53
 
54
- var sCacheIdentifier = oAppComponent.getMetadata().getName() + "_" + sStableId + "_" + sap.ui.getCore().getConfiguration().getLanguageTag();
54
+ var sCacheIdentifier = "".concat(oAppComponent.getMetadata().getName(), "_").concat(sStableId, "_").concat(sap.ui.getCore().getConfiguration().getLanguageTag());
55
55
  aServiceDependencies.push(ServiceFactoryRegistry.get("sap.fe.core.services.ResourceModelService").createInstance({
56
56
  scopeType: "component",
57
57
  scopeObject: oComponent,
@@ -97,7 +97,7 @@ sap.ui.define(["sap/base/Log", "sap/base/util/UriParameters", "sap/fe/core/Templ
97
97
  var oSideEffectsServices = oAppComponent.getSideEffectsService();
98
98
  oSideEffectsServices.initializeSideEffects(oAppComponent.getEnvironmentCapabilities().getCapabilities()); // In case there is no cache key we ignore the view cache
99
99
 
100
- sPageModelCacheKey = sCacheKey ? sCacheKey + "-" + sVersionInfo + "-" + sStableId + "-" + oShellServices.instanceType + "-pageModel" : undefined;
100
+ sPageModelCacheKey = sCacheKey ? "".concat(sCacheKey, "-").concat(sVersionInfo, "-").concat(sStableId, "-").concat(oShellServices.instanceType, "-pageModel") : undefined;
101
101
  return Promise.all(aDependenciesResult.concat([_this._getCachedModel(sPageModelCacheKey)]));
102
102
  }).then(function (aDependenciesResult) {
103
103
  var oResourceModel = aDependenciesResult[0];
@@ -134,7 +134,7 @@ sap.ui.define(["sap/base/Log", "sap/base/util/UriParameters", "sap/fe/core/Templ
134
134
  * This is useful for our demokit !
135
135
  *
136
136
  * @param oComponent
137
- * @returns {Promise<void>}
137
+ * @returns A promise indicating when the view is refreshed
138
138
  * @private
139
139
  */
140
140
  ;
@@ -184,20 +184,20 @@ sap.ui.define(["sap/base/Log", "sap/base/util/UriParameters", "sap/fe/core/Templ
184
184
  }
185
185
 
186
186
  if (sPathSoFar === "") {
187
- sPathSoFar = "/" + sNextPathPart;
187
+ sPathSoFar = "/".concat(sNextPathPart);
188
188
  } else {
189
- var oTarget = oMetaModel.getObject(sPathSoFar + "/$NavigationPropertyBinding/" + sNextPathPart);
189
+ var oTarget = oMetaModel.getObject("".concat(sPathSoFar, "/$NavigationPropertyBinding/").concat(sNextPathPart));
190
190
 
191
191
  if (oTarget && Object.keys(oTarget).length > 0) {
192
192
  sPathSoFar += "/$NavigationPropertyBinding";
193
193
  }
194
194
 
195
- sPathSoFar += "/" + sNextPathPart;
195
+ sPathSoFar += "/".concat(sNextPathPart);
196
196
  }
197
197
 
198
198
  return sPathSoFar;
199
199
  }, "");
200
- var oViewSettings = {
200
+ return {
201
201
  type: "XML",
202
202
  preprocessors: {
203
203
  xml: {
@@ -235,7 +235,6 @@ sap.ui.define(["sap/base/Log", "sap/base/util/UriParameters", "sap/fe/core/Templ
235
235
  },
236
236
  height: "100%"
237
237
  };
238
- return oViewSettings;
239
238
  }
240
239
 
241
240
  var createErrorPage = function (reason) {
@@ -319,7 +318,7 @@ sap.ui.define(["sap/base/Log", "sap/base/util/UriParameters", "sap/fe/core/Templ
319
318
  MetaModelConverter.convertTypes(oMetaModel, oAppComponent.getEnvironmentCapabilities().getCapabilities());
320
319
  oPageModel = new TemplateModel(function () {
321
320
  try {
322
- if (!!oPageModelCache) {
321
+ if (oPageModelCache) {
323
322
  return oPageModelCache;
324
323
  } else {
325
324
  var oDiagnostics = oAppComponent.getDiagnostics();
@@ -366,7 +365,7 @@ sap.ui.define(["sap/base/Log", "sap/base/util/UriParameters", "sap/fe/core/Templ
366
365
  }
367
366
  }).catch(function (error) {
368
367
  Log.error(error.message, error);
369
- throw new Error("Error while creating view : " + error);
368
+ throw new Error("Error while creating view : ".concat(error));
370
369
  });
371
370
  };
372
371
 
@@ -380,8 +379,14 @@ sap.ui.define(["sap/base/Log", "sap/base/util/UriParameters", "sap/fe/core/Templ
380
379
 
381
380
  _proto.exit = function exit() {
382
381
  // Deregister global instance
383
- this.oResourceModelService && this.oResourceModelService.destroy();
384
- this.oCacheHandlerService && this.oCacheHandlerService.destroy();
382
+ if (this.oResourceModelService) {
383
+ this.oResourceModelService.destroy();
384
+ }
385
+
386
+ if (this.oCacheHandlerService) {
387
+ this.oCacheHandlerService.destroy();
388
+ }
389
+
385
390
  this.oFactory.removeGlobalInstance();
386
391
  };
387
392
 
@@ -429,4 +434,4 @@ sap.ui.define(["sap/base/Log", "sap/base/util/UriParameters", "sap/fe/core/Templ
429
434
 
430
435
  return TemplatedViewServiceFactory;
431
436
  }, false);
432
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIlRlbXBsYXRlZFZpZXdTZXJ2aWNlRmFjdG9yeS50cyJdLCJuYW1lcyI6WyJUZW1wbGF0ZWRWaWV3U2VydmljZSIsImluaXQiLCJhU2VydmljZURlcGVuZGVuY2llcyIsIm9Db250ZXh0IiwiZ2V0Q29udGV4dCIsIm9Db21wb25lbnQiLCJzY29wZU9iamVjdCIsIm9BcHBDb21wb25lbnQiLCJDb21wb25lbnQiLCJnZXRPd25lckNvbXBvbmVudEZvciIsIm9NZXRhTW9kZWwiLCJnZXRNZXRhTW9kZWwiLCJzU3RhYmxlSWQiLCJnZXRNZXRhZGF0YSIsImdldENvbXBvbmVudE5hbWUiLCJnZXRMb2NhbElkIiwiZ2V0SWQiLCJhRW5oYW5jZUkxOG4iLCJnZXRFbmhhbmNlSTE4biIsInNBcHBOYW1lc3BhY2UiLCJvRmFjdG9yeSIsImZhY3RvcnkiLCJpIiwibGVuZ3RoIiwib1Jlc291cmNlTW9kZWwiLCJnZXRNb2RlbCIsImlzQSIsInJlcGxhY2UiLCJzQ2FjaGVJZGVudGlmaWVyIiwiZ2V0TmFtZSIsInNhcCIsInVpIiwiZ2V0Q29yZSIsImdldENvbmZpZ3VyYXRpb24iLCJnZXRMYW5ndWFnZVRhZyIsInB1c2giLCJTZXJ2aWNlRmFjdG9yeVJlZ2lzdHJ5IiwiZ2V0IiwiY3JlYXRlSW5zdGFuY2UiLCJzY29wZVR5cGUiLCJzZXR0aW5ncyIsImJ1bmRsZXMiLCJlbmhhbmNlSTE4biIsIm1vZGVsTmFtZSIsInRoZW4iLCJvUmVzb3VyY2VNb2RlbFNlcnZpY2UiLCJnZXRSZXNvdXJjZU1vZGVsIiwibWV0YU1vZGVsIiwiYXBwQ29tcG9uZW50IiwiY29tcG9uZW50Iiwib0NhY2hlSGFuZGxlclNlcnZpY2UiLCJ2YWxpZGF0ZUNhY2hlS2V5IiwiVmVyc2lvbkluZm8iLCJsb2FkIiwib0luZm8iLCJzVGltZXN0YW1wIiwibGlicmFyaWVzIiwiYnVpbGRpbmZvIiwiYnVpbGR0aW1lIiwiZm9yRWFjaCIsIm9MaWJyYXJ5IiwiYnVpbGRUaW1lc3RhbXAiLCJjYXRjaCIsInNQYWdlTW9kZWxDYWNoZUtleSIsImluaXRQcm9taXNlIiwiUHJvbWlzZSIsImFsbCIsImFEZXBlbmRlbmNpZXNSZXN1bHQiLCJzQ2FjaGVLZXkiLCJzVmVyc2lvbkluZm8iLCJvU2hlbGxTZXJ2aWNlcyIsImdldFNoZWxsU2VydmljZXMiLCJvU2lkZUVmZmVjdHNTZXJ2aWNlcyIsImdldFNpZGVFZmZlY3RzU2VydmljZSIsImluaXRpYWxpemVTaWRlRWZmZWN0cyIsImdldEVudmlyb25tZW50Q2FwYWJpbGl0aWVzIiwiZ2V0Q2FwYWJpbGl0aWVzIiwiaW5zdGFuY2VUeXBlIiwidW5kZWZpbmVkIiwiY29uY2F0IiwiX2dldENhY2hlZE1vZGVsIiwib1BhZ2VNb2RlbENhY2hlIiwicmVzb2x2ZSIsInJlcXVpcmUiLCJUZW1wbGF0ZUNvbnZlcnRlciIsIk1ldGFNb2RlbENvbnZlcnRlciIsImNyZWF0ZVZpZXciLCJnZXRJbnN0YW5jZSIsImludmFsaWRhdGVJZk5lZWRlZCIsIkNvcmUiLCJnZXRWaWV3Q2FjaGUiLCJDYWNoZU1hbmFnZXIiLCJfc2V0Q2FjaGVkTW9kZWwiLCJvQ2FjaGVNb2RlbCIsInNldCIsInJlZnJlc2hWaWV3Iiwib1Jvb3RWaWV3IiwiZ2V0Um9vdENvbnRyb2wiLCJkZXN0cm95Iiwib1ZpZXciLCJyZXNvdXJjZU1vZGVsIiwic3RhYmxlSWQiLCJvQ29udGFpbmVyIiwiaW52YWxpZGF0ZSIsIm9FcnJvciIsIkxvZyIsImVycm9yIiwibVNlcnZpY2VTZXR0aW5ncyIsInNDb252ZXJ0ZXJUeXBlIiwiY29udmVydGVyVHlwZSIsInNGdWxsQ29udGV4dFBhdGgiLCJnZXRSb3V0aW5nU2VydmljZSIsImdldFRhcmdldEluZm9ybWF0aW9uRm9yIiwib3B0aW9ucyIsImZ1bGxDb250ZXh0UGF0aCIsIm9NYW5pZmVzdENvbnRlbnQiLCJnZXRNYW5pZmVzdCIsIm9EZXZpY2VNb2RlbCIsIkpTT05Nb2RlbCIsIkRldmljZSIsInNldERlZmF1bHRCaW5kaW5nTW9kZSIsIm9NYW5pZmVzdE1vZGVsIiwiYkVycm9yIiwib1BhZ2VNb2RlbCIsIm9WaWV3RGF0YU1vZGVsIiwib1ZpZXdTZXR0aW5ncyIsIm1WaWV3RGF0YSIsImdldFZpZXdTZXR0aW5ncyIsImFTcGxpdFBhdGgiLCJzcGxpdCIsInNFbnRpdHlTZXRQYXRoIiwicmVkdWNlIiwic1BhdGhTb0ZhciIsInNOZXh0UGF0aFBhcnQiLCJvVGFyZ2V0IiwiZ2V0T2JqZWN0IiwiT2JqZWN0Iiwia2V5cyIsInR5cGUiLCJwcmVwcm9jZXNzb3JzIiwieG1sIiwiYmluZGluZ0NvbnRleHRzIiwiZW50aXR5U2V0IiwiY3JlYXRlQmluZGluZ0NvbnRleHQiLCJjb250ZXh0UGF0aCIsImNvbnZlcnRlckNvbnRleHQiLCJub1Jlc29sdmUiLCJ2aWV3RGF0YSIsIm1vZGVscyIsIm1hbmlmZXN0IiwiaWQiLCJ2aWV3TmFtZSIsImdldFZpZXdOYW1lIiwiY2FjaGUiLCJoZWlnaHQiLCJjcmVhdGVFcnJvclBhZ2UiLCJyZWFzb24iLCJtZXNzYWdlIiwiZXJyb3JWaWV3TmFtZSIsInJ1bkFzT3duZXIiLCJWaWV3IiwiY3JlYXRlIiwic2V0TW9kZWwiLCJNYW5hZ2VkT2JqZWN0TW9kZWwiLCJzZXRBZ2dyZWdhdGlvbiIsImdldFNlcnZpY2UiLCJvUm91dGluZ1NlcnZpY2UiLCJvVGFyZ2V0SW5mbyIsIm1PdXRib3VuZHMiLCJjcm9zc05hdmlnYXRpb24iLCJvdXRib3VuZHMiLCJtTmF2aWdhdGlvbiIsImdldE5hdmlnYXRpb24iLCJuYXZpZ2F0aW9uT2JqZWN0S2V5IiwibmF2aWdhdGlvbk9iamVjdCIsIm91dGJvdW5kQ29uZmlnIiwiZGV0YWlsIiwib3V0Ym91bmQiLCJvdXRib3VuZERldGFpbCIsInNlbWFudGljT2JqZWN0IiwiYWN0aW9uIiwicGFyYW1ldGVycyIsIm5hdmlnYXRpb24iLCJ2aWV3TGV2ZWwiLCJjb250ZW50RGVuc2l0aWVzIiwicmVzb3VyY2VCdW5kbGUiLCJfX2J1bmRsZSIsImlzRGVza3RvcCIsInN5c3RlbSIsImRlc2t0b3AiLCJpc1Bob25lIiwicGhvbmUiLCJnZXRWaWV3RGF0YSIsImFzc2lnbiIsInNoZWxsQ29udGVudERlbnNpdHkiLCJnZXRDb250ZW50RGVuc2l0eSIsInVzZU5ld0xhenlMb2FkaW5nIiwiVXJpUGFyYW1ldGVycyIsImZyb21RdWVyeSIsIndpbmRvdyIsImxvY2F0aW9uIiwic2VhcmNoIiwicmV0cmlldmVUZXh0RnJvbVZhbHVlTGlzdCIsImZvcm0iLCJfdXNlTmV3VmFsdWVIZWxwIiwiYXBwIiwiY29udHJvbENvbmZpZ3VyYXRpb24iLCJzQW5ub3RhdGlvblBhdGgiLCJpbmRleE9mIiwic1RhcmdldEFubm90YXRpb25QYXRoIiwicmVzb2x2ZUR5bmFtaWNFeHByZXNzaW9uIiwiY29udmVydFR5cGVzIiwiVGVtcGxhdGVNb2RlbCIsIm9EaWFnbm9zdGljcyIsImdldERpYWdub3N0aWNzIiwiaUlzc3VlQ291bnQiLCJnZXRJc3N1ZXMiLCJvQ29udmVydGVyUGFnZU1vZGVsIiwiY29udmVydFBhZ2UiLCJhSXNzdWVzIiwiYUFkZGVkSXNzdWVzIiwic2xpY2UiLCJ3YXJuaW5nIiwiZ2V0RGF0YSIsImUiLCJFcnJvciIsImdldFZpZXciLCJnZXRJbnRlcmZhY2UiLCJleGl0IiwicmVtb3ZlR2xvYmFsSW5zdGFuY2UiLCJTZXJ2aWNlIiwiVGVtcGxhdGVkVmlld1NlcnZpY2VGYWN0b3J5IiwiX29JbnN0YW5jZVJlZ2lzdHJ5Iiwib1NlcnZpY2VDb250ZXh0IiwiaUNyZWF0aW5nVmlld3MiLCJvVGVtcGxhdGVkVmlld1NlcnZpY2UiLCJnZXROdW1iZXJPZlZpZXdzSW5DcmVhdGlvblN0YXRlIiwiU2VydmljZUZhY3RvcnkiXSwibWFwcGluZ3MiOiI7QUFBQTtBQUNBO0FBQ0E7Ozs7Ozs7Ozs7TUFzQk1BLG9COzs7Ozs7Ozs7V0FVTEMsSSxHQUFBLGdCQUFPO0FBQUE7O0FBQ04sVUFBTUMsb0JBQW9CLEdBQUcsRUFBN0I7QUFDQSxVQUFNQyxRQUFRLEdBQUcsS0FBS0MsVUFBTCxFQUFqQjtBQUNBLFVBQU1DLFVBQVUsR0FBR0YsUUFB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Iiwic291cmNlUm9vdCI6Ii4iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgTG9nIGZyb20gXCJzYXAvYmFzZS9Mb2dcIjtcbmltcG9ydCBVcmlQYXJhbWV0ZXJzIGZyb20gXCJzYXAvYmFzZS91dGlsL1VyaVBhcmFtZXRlcnNcIjtcbmltcG9ydCBBcHBDb21wb25lbnQgZnJvbSBcInNhcC9mZS9jb3JlL0FwcENvbXBvbmVudFwiO1xuaW1wb3J0IHsgQ2FjaGVIYW5kbGVyU2VydmljZSB9IGZyb20gXCJzYXAvZmUvY29yZS9zZXJ2aWNlcy9DYWNoZUhhbmRsZXJTZXJ2aWNlRmFjdG9yeVwiO1xuaW1wb3J0IFRlbXBsYXRlTW9kZWwgZnJvbSBcInNhcC9mZS9jb3JlL1RlbXBsYXRlTW9kZWxcIjtcbmltcG9ydCBSZXNvdXJjZU1vZGVsIGZyb20gXCJzYXAvZmUvbWFjcm9zL1Jlc291cmNlTW9kZWxcIjtcbmltcG9ydCBDYWNoZU1hbmFnZXIgZnJvbSBcInNhcC91aS9jb3JlL2NhY2hlL0NhY2hlTWFuYWdlclwiO1xuaW1wb3J0IENvbXBvbmVudCBmcm9tIFwic2FwL3VpL2NvcmUvQ29tcG9uZW50XCI7XG5pbXBvcnQgQ29yZSBmcm9tIFwic2FwL3VpL2NvcmUvQ29yZVwiO1xuaW1wb3J0IFZpZXcgZnJvbSBcInNhcC91aS9jb3JlL212Yy9WaWV3XCI7XG5pbXBvcnQgU2VydmljZSBmcm9tIFwic2FwL3VpL2NvcmUvc2VydmljZS9TZXJ2aWNlXCI7XG5pbXBvcnQgU2VydmljZUZhY3RvcnkgZnJvbSBcInNhcC91aS9jb3JlL3NlcnZpY2UvU2VydmljZUZhY3RvcnlcIjtcbmltcG9ydCBTZXJ2aWNlRmFjdG9yeVJlZ2lzdHJ5IGZyb20gXCJzYXAvdWkvY29yZS9zZXJ2aWNlL1NlcnZpY2VGYWN0b3J5UmVnaXN0cnlcIjtcbmltcG9ydCBEZXZpY2UgZnJvbSBcInNhcC91aS9EZXZpY2VcIjtcbmltcG9ydCBNYW5hZ2VkT2JqZWN0TW9kZWwgZnJvbSBcInNhcC91aS9tb2RlbC9iYXNlL01hbmFnZWRPYmplY3RNb2RlbFwiO1xuaW1wb3J0IEpTT05Nb2RlbCBmcm9tIFwic2FwL3VpL21vZGVsL2pzb24vSlNPTk1vZGVsXCI7XG5pbXBvcnQgTW9kZWwgZnJvbSBcInNhcC91aS9tb2RlbC9Nb2RlbFwiO1xuaW1wb3J0IFZlcnNpb25JbmZvIGZyb20gXCJzYXAvdWkvVmVyc2lvbkluZm9cIjtcbmltcG9ydCB7IENvcmVFeCwgU2VydmljZUNvbnRleHQgfSBmcm9tIFwidHlwZXMvZXh0ZW5zaW9uX3R5cGVzXCI7XG5pbXBvcnQgeyByZXNvbHZlRHluYW1pY0V4cHJlc3Npb24gfSBmcm9tIFwiLi4vaGVscGVycy9EeW5hbWljQW5ub3RhdGlvblBhdGhIZWxwZXJcIjtcbmltcG9ydCB7IFJlc291cmNlTW9kZWxTZXJ2aWNlIH0gZnJvbSBcIi4vUmVzb3VyY2VNb2RlbFNlcnZpY2VGYWN0b3J5XCI7XG5cbnR5cGUgVGVtcGxhdGVkVmlld1NlcnZpY2VTZXR0aW5ncyA9IHt9O1xuXG5jbGFzcyBUZW1wbGF0ZWRWaWV3U2VydmljZSBleHRlbmRzIFNlcnZpY2U8VGVtcGxhdGVkVmlld1NlcnZpY2VTZXR0aW5ncz4ge1xuXHRpbml0UHJvbWlzZSE6IFByb21pc2U8YW55Pjtcblx0b1ZpZXchOiBWaWV3O1xuXHRvUmVzb3VyY2VNb2RlbFNlcnZpY2UhOiBSZXNvdXJjZU1vZGVsU2VydmljZTtcblx0b0NhY2hlSGFuZGxlclNlcnZpY2UhOiBDYWNoZUhhbmRsZXJTZXJ2aWNlO1xuXHRvRmFjdG9yeSE6IFRlbXBsYXRlZFZpZXdTZXJ2aWNlRmFjdG9yeTtcblx0cmVzb3VyY2VNb2RlbCE6IHR5cGVvZiBSZXNvdXJjZU1vZGVsO1xuXHRzdGFibGVJZCE6IHN0cmluZztcblx0VGVtcGxhdGVDb252ZXJ0ZXI6IGFueTtcblx0TWV0YU1vZGVsQ29udmVydGVyOiBhbnk7XG5cdGluaXQoKSB7XG5cdFx0Y29uc3QgYVNlcnZpY2VEZXBlbmRlbmNpZXMgPSBbXTtcblx0XHRjb25zdCBvQ29udGV4dCA9IHRoaXMuZ2V0Q29udGV4dCgpO1xuXHRcdGNvbnN0IG9Db21wb25lbnQgPSBvQ29udGV4dC5zY29wZU9iamVjdDtcblx0XHRjb25zdCBvQXBwQ29tcG9uZW50ID0gQ29tcG9uZW50LmdldE93bmVyQ29tcG9uZW50Rm9yKG9Db21wb25lbnQpIGFzIEFwcENvbXBvbmVudDtcblx0XHRjb25zdCBvTWV0YU1vZGVsID0gb0FwcENvbXBvbmVudC5nZXRNZXRhTW9kZWwoKTtcblx0XHRjb25zdCBzU3RhYmxlSWQgPSBvQXBwQ29tcG9uZW50LmdldE1ldGFkYXRhKCkuZ2V0Q29tcG9uZW50TmFtZSgpICsgXCI6OlwiICsgb0FwcENvbXBvbmVudC5nZXRMb2NhbElkKG9Db21wb25lbnQuZ2V0SWQoKSk7XG5cdFx0Y29uc3QgYUVuaGFuY2VJMThuID0gb0NvbXBvbmVudC5nZXRFbmhhbmNlSTE4bigpIHx8IFtdO1xuXHRcdGxldCBzQXBwTmFtZXNwYWNlO1xuXHRcdHRoaXMub0ZhY3RvcnkgPSBvQ29udGV4dC5mYWN0b3J5O1xuXHRcdGlmIChhRW5oYW5jZUkxOG4pIHtcblx0XHRcdHNBcHBOYW1lc3BhY2UgPSBvQXBwQ29tcG9uZW50LmdldE1ldGFkYXRhKCkuZ2V0Q29tcG9uZW50TmFtZSgpO1xuXHRcdFx0Zm9yIChsZXQgaSA9IDA7IGkgPCBhRW5oYW5jZUkxOG4ubGVuZ3RoOyBpKyspIHtcblx0XHRcdFx0Ly8gSW4gb3JkZXIgdG8gc3VwcG9ydCB0ZXh0LXZlcnRpY2FsaXphdGlvbiBhcHBsaWNhdGlvbnMgY2FuIGFsc28gcGFzc3MgYSByZXNvdXJjZSBtb2RlbCBkZWZpbmVkIGluIHRoZSBtYW5pZmVzdFxuXHRcdFx0XHQvLyBVSTUgdGFrZXMgY2FyZSBvZiB0ZXh0LXZlcnRpY2FsaXphdGlvbiBmb3IgcmVzb3VyY2UgbW9kZWxzIGRlZmluZWQgaW4gdGhlIG1hbmlmZXN0XG5cdFx0XHRcdC8vIEhlbmNlIGNoZWNrIGlmIHRoZSBnaXZlbiBrZXkgaXMgYSByZXNvdXJjZSBtb2RlbCBkZWZpbmVkIGluIHRoZSBtYW5pZmVzdFxuXHRcdFx0XHQvLyBpZiBzbyB0aGlzIG1vZGVsIHNob3VsZCBiZSB1c2VkIHRvIGVuaGFuY2UgdGhlIHNhcC5mZSByZXNvdXJjZSBtb2RlbCBzbyBwYXNzIGl0IGFzIGl0IGlzXG5cdFx0XHRcdGNvbnN0IG9SZXNvdXJjZU1vZGVsID0gb0FwcENvbXBvbmVudC5nZXRNb2RlbChhRW5oYW5jZUkxOG5baV0pO1xuXHRcdFx0XHRpZiAob1Jlc291cmNlTW9kZWwgJiYgb1Jlc291cmNlTW9kZWwuaXNBKFwic2FwLnVpLm1vZGVsLnJlc291cmNlLlJlc291cmNlTW9kZWxcIikpIHtcblx0XHRcdFx0XHRhRW5oYW5jZUkxOG5baV0gPSBvUmVzb3VyY2VNb2RlbDtcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRhRW5oYW5jZUkxOG5baV0gPSBzQXBwTmFtZXNwYWNlICsgXCIuXCIgKyBhRW5oYW5jZUkxOG5baV0ucmVwbGFjZShcIi5wcm9wZXJ0aWVzXCIsIFwiXCIpO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0Y29uc3Qgc0NhY2hlSWRlbnRpZmllciA9XG5cdFx0XHRvQXBwQ29tcG9uZW50LmdldE1ldGFkYXRhKCkuZ2V0TmFtZSgpICsgXCJfXCIgKyBzU3RhYmxlSWQgKyBcIl9cIiArIHNhcC51aS5nZXRDb3JlKCkuZ2V0Q29uZmlndXJhdGlvbigpLmdldExhbmd1YWdlVGFnKCk7XG5cdFx0YVNlcnZpY2VEZXBlbmRlbmNpZXMucHVzaChcblx0XHRcdFNlcnZpY2VGYWN0b3J5UmVnaXN0cnkuZ2V0KFwic2FwLmZlLmNvcmUuc2VydmljZXMuUmVzb3VyY2VNb2RlbFNlcnZpY2VcIilcblx0XHRcdFx0LmNyZWF0ZUluc3RhbmNlKHtcblx0XHRcdFx0XHRzY29wZVR5cGU6IFwiY29tcG9uZW50XCIsXG5cdFx0XHRcdFx0c2NvcGVPYmplY3Q6IG9Db21wb25lbnQsXG5cdFx0XHRcdFx0c2V0dGluZ3M6IHtcblx0XHRcdFx0XHRcdGJ1bmRsZXM6IFtcInNhcC5mZS5jb3JlLm1lc3NhZ2VidW5kbGVcIiwgXCJzYXAuZmUubWFjcm9zLm1lc3NhZ2VidW5kbGVcIiwgXCJzYXAuZmUudGVtcGxhdGVzLm1lc3NhZ2VidW5kbGVcIl0sXG5cdFx0XHRcdFx0XHRlbmhhbmNlSTE4bjogYUVuaGFuY2VJMThuLFxuXHRcdFx0XHRcdFx0bW9kZWxOYW1lOiBcInNhcC5mZS5pMThuXCJcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0pXG5cdFx0XHRcdC50aGVuKChvUmVzb3VyY2VNb2RlbFNlcnZpY2U6IFJlc291cmNlTW9kZWxTZXJ2aWNlKSA9PiB7XG5cdFx0XHRcdFx0dGhpcy5vUmVzb3VyY2VNb2RlbFNlcnZpY2UgPSBvUmVzb3VyY2VNb2RlbFNlcnZpY2U7XG5cdFx0XHRcdFx0cmV0dXJuIG9SZXNvdXJjZU1vZGVsU2VydmljZS5nZXRSZXNvdXJjZU1vZGVsKCk7XG5cdFx0XHRcdH0pXG5cdFx0KTtcblxuXHRcdGFTZXJ2aWNlRGVwZW5kZW5jaWVzLnB1c2goXG5cdFx0XHRTZXJ2aWNlRmFjdG9yeVJlZ2lzdHJ5LmdldChcInNhcC5mZS5jb3JlLnNlcnZpY2VzLkNhY2hlSGFuZGxlclNlcnZpY2VcIilcblx0XHRcdFx0LmNyZWF0ZUluc3RhbmNlKHtcblx0XHRcdFx0XHRzZXR0aW5nczoge1xuXHRcdFx0XHRcdFx0bWV0YU1vZGVsOiBvTWV0YU1vZGVsLFxuXHRcdFx0XHRcdFx0YXBwQ29tcG9uZW50OiBvQXBwQ29tcG9uZW50LFxuXHRcdFx0XHRcdFx0Y29tcG9uZW50OiBvQ29tcG9uZW50XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9KVxuXHRcdFx0XHQudGhlbigob0NhY2hlSGFuZGxlclNlcnZpY2U6IGFueSkgPT4ge1xuXHRcdFx0XHRcdHRoaXMub0NhY2hlSGFuZGxlclNlcnZpY2UgPSBvQ2FjaGVIYW5kbGVyU2VydmljZTtcblx0XHRcdFx0XHRyZXR1cm4gb0NhY2hlSGFuZGxlclNlcnZpY2UudmFsaWRhdGVDYWNoZUtleShzQ2FjaGVJZGVudGlmaWVyKTtcblx0XHRcdFx0fSlcblx0XHQpO1xuXHRcdGFTZXJ2aWNlRGVwZW5kZW5jaWVzLnB1c2goXG5cdFx0XHQoVmVyc2lvbkluZm8gYXMgYW55KVxuXHRcdFx0XHQubG9hZCgpXG5cdFx0XHRcdC50aGVuKGZ1bmN0aW9uIChvSW5mbzogYW55KSB7XG5cdFx0XHRcdFx0bGV0IHNUaW1lc3RhbXAgPSBcIlwiO1xuXHRcdFx0XHRcdGlmICghb0luZm8ubGlicmFyaWVzKSB7XG5cdFx0XHRcdFx0XHRzVGltZXN0YW1wID0gKHNhcC51aSBhcyBhbnkpLmJ1aWxkaW5mby5idWlsZHRpbWU7XG5cdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdG9JbmZvLmxpYnJhcmllcy5mb3JFYWNoKGZ1bmN0aW9uIChvTGlicmFyeTogYW55KSB7XG5cdFx0XHRcdFx0XHRcdHNUaW1lc3RhbXAgKz0gb0xpYnJhcnkuYnVpbGRUaW1lc3RhbXA7XG5cdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0cmV0dXJuIHNUaW1lc3RhbXA7XG5cdFx0XHRcdH0pXG5cdFx0XHRcdC5jYXRjaChmdW5jdGlvbiAoKSB7XG5cdFx0XHRcdFx0cmV0dXJuIFwiPE5PVkFMVUU+XCI7XG5cdFx0XHRcdH0pXG5cdFx0KTtcblxuXHRcdGxldCBzUGFnZU1vZGVsQ2FjaGVLZXk6IHN0cmluZyB8IHVuZGVmaW5lZDtcblx0XHR0aGlzLmluaXRQcm9taXNlID0gUHJvbWlzZS5hbGwoYVNlcnZpY2VEZXBlbmRlbmNpZXMpXG5cdFx0XHQudGhlbigoYURlcGVuZGVuY2llc1Jlc3VsdDogYW55W10pID0+IHtcblx0XHRcdFx0Y29uc3Qgc0NhY2hlS2V5ID0gYURlcGVuZGVuY2llc1Jlc3VsdFsxXTtcblx0XHRcdFx0Y29uc3Qgc1ZlcnNpb25JbmZvID0gYURlcGVuZGVuY2llc1Jlc3VsdFsyXTtcblx0XHRcdFx0Y29uc3Qgb1NoZWxsU2VydmljZXMgPSBvQXBwQ29tcG9uZW50LmdldFNoZWxsU2VydmljZXMoKTtcblx0XHRcdFx0Y29uc3Qgb1NpZGVFZmZlY3RzU2VydmljZXMgPSBvQXBwQ29tcG9uZW50LmdldFNpZGVFZmZlY3RzU2VydmljZSgpO1xuXG5cdFx0XHRcdG9TaWRlRWZmZWN0c1NlcnZpY2VzLmluaXRpYWxpemVTaWRlRWZmZWN0cyhvQXBwQ29tcG9uZW50LmdldEVudmlyb25tZW50Q2FwYWJpbGl0aWVzKCkuZ2V0Q2FwYWJpbGl0aWVzKCkpO1xuXG5cdFx0XHRcdC8vIEluIGNhc2UgdGhlcmUgaXMgbm8gY2FjaGUga2V5IHdlIGlnbm9yZSB0aGUgdmlldyBjYWNoZVxuXHRcdFx0XHRzUGFnZU1vZGVsQ2FjaGVLZXkgPSBzQ2FjaGVLZXlcblx0XHRcdFx0XHQ/IHNDYWNoZUtleSArIFwiLVwiICsgc1ZlcnNpb25JbmZvICsgXCItXCIgKyBzU3RhYmxlSWQgKyBcIi1cIiArIG9TaGVsbFNlcnZpY2VzLmluc3RhbmNlVHlwZSArIFwiLXBhZ2VNb2RlbFwiXG5cdFx0XHRcdFx0OiB1bmRlZmluZWQ7XG5cdFx0XHRcdHJldHVybiBQcm9taXNlLmFsbChhRGVwZW5kZW5jaWVzUmVzdWx0LmNvbmNhdChbdGhpcy5fZ2V0Q2FjaGVkTW9kZWwoc1BhZ2VNb2RlbENhY2hlS2V5KV0pKTtcblx0XHRcdH0pXG5cdFx0XHQudGhlbigoYURlcGVuZGVuY2llc1Jlc3VsdDogYW55W10pID0+IHtcblx0XHRcdFx0Y29uc3Qgb1Jlc291cmNlTW9kZWwgPSBhRGVwZW5kZW5jaWVzUmVzdWx0WzBdO1xuXHRcdFx0XHRjb25zdCBzQ2FjaGVLZXkgPSBhRGVwZW5kZW5jaWVzUmVzdWx0WzFdO1xuXHRcdFx0XHRjb25zdCBvUGFnZU1vZGVsQ2FjaGUgPSBhRGVwZW5kZW5jaWVzUmVzdWx0WzNdO1xuXHRcdFx0XHRyZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHtcblx0XHRcdFx0XHRzYXAudWkucmVxdWlyZShcblx0XHRcdFx0XHRcdFtcInNhcC9mZS9jb3JlL2NvbnZlcnRlcnMvVGVtcGxhdGVDb252ZXJ0ZXJcIiwgXCJzYXAvZmUvY29yZS9jb252ZXJ0ZXJzL01ldGFNb2RlbENvbnZlcnRlclwiXSxcblx0XHRcdFx0XHRcdChUZW1wbGF0ZUNvbnZlcnRlcjogYW55LCBNZXRhTW9kZWxDb252ZXJ0ZXI6IGFueSkgPT4ge1xuXHRcdFx0XHRcdFx0XHRyZXNvbHZlKFxuXHRcdFx0XHRcdFx0XHRcdHRoaXMuY3JlYXRlVmlldyhcblx0XHRcdFx0XHRcdFx0XHRcdG9SZXNvdXJjZU1vZGVsLFxuXHRcdFx0XHRcdFx0XHRcdFx0c1N0YWJsZUlkLFxuXHRcdFx0XHRcdFx0XHRcdFx0c0NhY2hlS2V5LFxuXHRcdFx0XHRcdFx0XHRcdFx0c1BhZ2VNb2RlbENhY2hlS2V5LFxuXHRcdFx0XHRcdFx0XHRcdFx0b1BhZ2VNb2RlbENhY2hlLFxuXHRcdFx0XHRcdFx0XHRcdFx0VGVtcGxhdGVDb252ZXJ0ZXIsXG5cdFx0XHRcdFx0XHRcdFx0XHRNZXRhTW9kZWxDb252ZXJ0ZXJcblx0XHRcdFx0XHRcdFx0XHQpXG5cdFx0XHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0KTtcblx0XHRcdFx0fSk7XG5cdFx0XHR9KVxuXHRcdFx0LnRoZW4oZnVuY3Rpb24gKHNDYWNoZUtleTogYW55KSB7XG5cdFx0XHRcdGNvbnN0IG9DYWNoZUhhbmRsZXJTZXJ2aWNlID0gU2VydmljZUZhY3RvcnlSZWdpc3RyeS5nZXQoXCJzYXAuZmUuY29yZS5zZXJ2aWNlcy5DYWNoZUhhbmRsZXJTZXJ2aWNlXCIpLmdldEluc3RhbmNlKG9NZXRhTW9kZWwpO1xuXHRcdFx0XHRvQ2FjaGVIYW5kbGVyU2VydmljZS5pbnZhbGlkYXRlSWZOZWVkZWQoc0NhY2hlS2V5LCBzQ2FjaGVJZGVudGlmaWVyKTtcblx0XHRcdH0pO1xuXHR9XG5cdF9nZXRDYWNoZWRNb2RlbChzQ2FjaGVLZXk6IHN0cmluZyB8IHVuZGVmaW5lZCkge1xuXHRcdGlmIChzQ2FjaGVLZXkgJiYgKENvcmUgYXMgQ29yZUV4KS5nZXRDb25maWd1cmF0aW9uKCkuZ2V0Vmlld0NhY2hlKCkpIHtcblx0XHRcdHJldHVybiBDYWNoZU1hbmFnZXIuZ2V0KHNDYWNoZUtleSk7XG5cdFx0fVxuXHRcdHJldHVybiB1bmRlZmluZWQ7XG5cdH1cblx0X3NldENhY2hlZE1vZGVsKHNDYWNoZUtleTogc3RyaW5nIHwgdW5kZWZpbmVkLCBvQ2FjaGVNb2RlbDogYW55KSB7XG5cdFx0aWYgKHNDYWNoZUtleSAmJiAoQ29yZSBhcyBDb3JlRXgpLmdldENvbmZpZ3VyYXRpb24oKS5nZXRWaWV3Q2FjaGUoKSkge1xuXHRcdFx0Q2FjaGVNYW5hZ2VyLnNldChzQ2FjaGVLZXksIG9DYWNoZU1vZGVsKTtcblx0XHR9XG5cdFx0cmV0dXJuIHVuZGVmaW5lZDtcblx0fVxuXHQvKipcblx0ICogUmVmcmVzaCB0aGUgY3VycmVudCB2aWV3IHVzaW5nIHRoZSBzYW1lIGNvbmZpZ3VyYXRpb24gYXMgYmVmb3JlLlxuXHQgKiBUaGlzIGlzIHVzZWZ1bCBmb3Igb3VyIGRlbW9raXQgIVxuXHQgKlxuXHQgKiBAcGFyYW0gb0NvbXBvbmVudFxuXHQgKiBAcmV0dXJucyB7UHJvbWlzZTx2b2lkPn1cblx0ICogQHByaXZhdGVcblx0ICovXG5cdHJlZnJlc2hWaWV3KG9Db21wb25lbnQ6IGFueSkge1xuXHRcdGNvbnN0IG9Sb290VmlldyA9IG9Db21wb25lbnQuZ2V0Um9vdENvbnRyb2woKTtcblx0XHRpZiAob1Jvb3RWaWV3KSB7XG5cdFx0XHRvUm9vdFZpZXcuZGVzdHJveSgpO1xuXHRcdH0gZWxzZSBpZiAodGhpcy5vVmlldykge1xuXHRcdFx0dGhpcy5vVmlldy5kZXN0cm95KCk7XG5cdFx0fVxuXHRcdHJldHVybiB0aGlzLmNyZWF0ZVZpZXcodGhpcy5yZXNvdXJjZU1vZGVsLCB0aGlzLnN0YWJsZUlkLCBcIlwiLCBcIlwiLCB1bmRlZmluZWQsIHRoaXMuVGVtcGxhdGVDb252ZXJ0ZXIsIHRoaXMuTWV0YU1vZGVsQ29udmVydGVyKVxuXHRcdFx0LnRoZW4oZnVuY3Rpb24gKCkge1xuXHRcdFx0XHRvQ29tcG9uZW50Lm9Db250YWluZXIuaW52YWxpZGF0ZSgpO1xuXHRcdFx0fSlcblx0XHRcdC5jYXRjaChmdW5jdGlvbiAob0Vycm9yOiBhbnkpIHtcblx0XHRcdFx0b0NvbXBvbmVudC5vQ29udGFpbmVyLmludmFsaWRhdGUoKTtcblx0XHRcdFx0TG9nLmVycm9yKG9FcnJvcik7XG5cdFx0XHR9KTtcblx0fVxuXHRjcmVhdGVWaWV3KFxuXHRcdG9SZXNvdXJjZU1vZGVsOiBhbnksXG5cdFx0c1N0YWJsZUlkOiBhbnksXG5cdFx0c0NhY2hlS2V5OiBhbnksXG5cdFx0c1BhZ2VNb2RlbENhY2hlS2V5OiBzdHJpbmcgfCB1bmRlZmluZWQsXG5cdFx0b1BhZ2VNb2RlbENhY2hlOiBhbnksXG5cdFx0VGVtcGxhdGVDb252ZXJ0ZXI6IGFueSxcblx0XHRNZXRhTW9kZWxDb252ZXJ0ZXI6IGFueVxuXHQpIHtcblx0XHR0aGlzLnJlc291cmNlTW9kZWwgPSBvUmVzb3VyY2VNb2RlbDtcblx0XHR0aGlzLnN0YWJsZUlkID0gc1N0YWJsZUlkO1xuXHRcdHRoaXMuVGVtcGxhdGVDb252ZXJ0ZXIgPSBUZW1wbGF0ZUNvbnZlcnRlcjtcblx0XHR0aGlzLk1ldGFNb2RlbENvbnZlcnRlciA9IE1ldGFNb2RlbENvbnZlcnRlcjtcblx0XHRjb25zdCBvQ29udGV4dCA9IHRoaXMuZ2V0Q29udGV4dCgpO1xuXHRcdGNvbnN0IG1TZXJ2aWNlU2V0dGluZ3MgPSBvQ29udGV4dC5zZXR0aW5ncztcblx0XHRjb25zdCBzQ29udmVydGVyVHlwZSA9IG1TZXJ2aWNlU2V0dGluZ3MuY29udmVydGVyVHlwZTtcblx0XHRjb25zdCBvQ29tcG9uZW50ID0gb0NvbnRleHQuc2NvcGVPYmplY3Q7XG5cdFx0Y29uc3Qgb0FwcENvbXBvbmVudDogQXBwQ29tcG9uZW50ID0gQ29tcG9uZW50LmdldE93bmVyQ29tcG9uZW50Rm9yKG9Db21wb25lbnQpIGFzIEFwcENvbXBvbmVudDtcblx0XHRjb25zdCBzRnVsbENvbnRleHRQYXRoID0gb0FwcENvbXBvbmVudC5nZXRSb3V0aW5nU2VydmljZSgpLmdldFRhcmdldEluZm9ybWF0aW9uRm9yKG9Db21wb25lbnQpLm9wdGlvbnMuc2V0dGluZ3MuZnVsbENvbnRleHRQYXRoO1xuXHRcdGNvbnN0IG9NZXRhTW9kZWwgPSBvQXBwQ29tcG9uZW50LmdldE1ldGFNb2RlbCgpO1xuXHRcdGNvbnN0IG9NYW5pZmVzdENvbnRlbnQ6IGFueSA9IG9BcHBDb21wb25lbnQuZ2V0TWFuaWZlc3QoKTtcblx0XHRjb25zdCBvRGV2aWNlTW9kZWwgPSBuZXcgSlNPTk1vZGVsKERldmljZSkuc2V0RGVmYXVsdEJpbmRpbmdNb2RlKFwiT25lV2F5XCIpO1xuXHRcdGNvbnN0IG9NYW5pZmVzdE1vZGVsID0gbmV3IEpTT05Nb2RlbChvTWFuaWZlc3RDb250ZW50KTtcblx0XHRjb25zdCBiRXJyb3IgPSBmYWxzZTtcblx0XHRsZXQgb1BhZ2VNb2RlbDogVGVtcGxhdGVNb2RlbCwgb1ZpZXdEYXRhTW9kZWw6IE1vZGVsLCBvVmlld1NldHRpbmdzOiBhbnksIG1WaWV3RGF0YTogYW55O1xuXG5cdFx0ZnVuY3Rpb24gZ2V0Vmlld1NldHRpbmdzKCkge1xuXHRcdFx0Y29uc3QgYVNwbGl0UGF0aCA9IHNGdWxsQ29udGV4dFBhdGguc3BsaXQoXCIvXCIpO1xuXHRcdFx0Y29uc3Qgc0VudGl0eVNldFBhdGggPSBhU3BsaXRQYXRoLnJlZHVjZShmdW5jdGlvbiAoc1BhdGhTb0ZhcjogYW55LCBzTmV4dFBhdGhQYXJ0OiBhbnkpIHtcblx0XHRcdFx0aWYgKHNOZXh0UGF0aFBhcnQgPT09IFwiXCIpIHtcblx0XHRcdFx0XHRyZXR1cm4gc1BhdGhTb0Zhcjtcblx0XHRcdFx0fVxuXHRcdFx0XHRpZiAoc1BhdGhTb0ZhciA9PT0gXCJcIikge1xuXHRcdFx0XHRcdHNQYXRoU29GYXIgPSBcIi9cIiArIHNOZXh0UGF0aFBhcnQ7XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0Y29uc3Qgb1RhcmdldCA9IG9NZXRhTW9kZWwuZ2V0T2JqZWN0KHNQYXRoU29GYXIgKyBcIi8kTmF2aWdhdGlvblByb3BlcnR5QmluZGluZy9cIiArIHNOZXh0UGF0aFBhcnQpO1xuXHRcdFx0XHRcdGlmIChvVGFyZ2V0ICYmIE9iamVjdC5rZXlzKG9UYXJnZXQpLmxlbmd0aCA+IDApIHtcblx0XHRcdFx0XHRcdHNQYXRoU29GYXIgKz0gXCIvJE5hdmlnYXRpb25Qcm9wZXJ0eUJpbmRpbmdcIjtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0c1BhdGhTb0ZhciArPSBcIi9cIiArIHNOZXh0UGF0aFBhcnQ7XG5cdFx0XHRcdH1cblx0XHRcdFx0cmV0dXJuIHNQYXRoU29GYXI7XG5cdFx0XHR9LCBcIlwiKTtcblx0XHRcdGNvbnN0IG9WaWV3U2V0dGluZ3MgPSB7XG5cdFx0XHRcdHR5cGU6IFwiWE1MXCIsXG5cdFx0XHRcdHByZXByb2Nlc3NvcnM6IHtcblx0XHRcdFx0XHR4bWw6IHtcblx0XHRcdFx0XHRcdGJpbmRpbmdDb250ZXh0czoge1xuXHRcdFx0XHRcdFx0XHRlbnRpdHlTZXQ6IHNFbnRpdHlTZXRQYXRoID8gb01ldGFNb2RlbC5jcmVhdGVCaW5kaW5nQ29udGV4dChzRW50aXR5U2V0UGF0aCkgOiBudWxsLFxuXHRcdFx0XHRcdFx0XHRmdWxsQ29udGV4dFBhdGg6IHNGdWxsQ29udGV4dFBhdGggPyBvTWV0YU1vZGVsLmNyZWF0ZUJpbmRpbmdDb250ZXh0KHNGdWxsQ29udGV4dFBhdGgpIDogbnVsbCxcblx0XHRcdFx0XHRcdFx0Y29udGV4dFBhdGg6IHNGdWxsQ29udGV4dFBhdGggPyBvTWV0YU1vZGVsLmNyZWF0ZUJpbmRpbmdDb250ZXh0KHNGdWxsQ29udGV4dFBhdGgpIDogbnVsbCxcblx0XHRcdFx0XHRcdFx0Y29udmVydGVyQ29udGV4dDogb1BhZ2VNb2RlbC5jcmVhdGVCaW5kaW5nQ29udGV4dChcIi9cIiwgdW5kZWZpbmVkLCB7IG5vUmVzb2x2ZTogdHJ1ZSB9KSxcblx0XHRcdFx0XHRcdFx0dmlld0RhdGE6IG1WaWV3RGF0YSA/IG9WaWV3RGF0YU1vZGVsLmNyZWF0ZUJpbmRpbmdDb250ZXh0KFwiL1wiKSA6IG51bGxcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRtb2RlbHM6IHtcblx0XHRcdFx0XHRcdFx0ZW50aXR5U2V0OiBvTWV0YU1vZGVsLFxuXHRcdFx0XHRcdFx0XHRmdWxsQ29udGV4dFBhdGg6IG9NZXRhTW9kZWwsXG5cdFx0XHRcdFx0XHRcdGNvbnRleHRQYXRoOiBvTWV0YU1vZGVsLFxuXHRcdFx0XHRcdFx0XHRcInNhcC5mZS5pMThuXCI6IG9SZXNvdXJjZU1vZGVsLFxuXHRcdFx0XHRcdFx0XHRtZXRhTW9kZWw6IG9NZXRhTW9kZWwsXG5cdFx0XHRcdFx0XHRcdFwiZGV2aWNlXCI6IG9EZXZpY2VNb2RlbCxcblx0XHRcdFx0XHRcdFx0bWFuaWZlc3Q6IG9NYW5pZmVzdE1vZGVsLFxuXHRcdFx0XHRcdFx0XHRjb252ZXJ0ZXJDb250ZXh0OiBvUGFnZU1vZGVsLFxuXHRcdFx0XHRcdFx0XHR2aWV3RGF0YTogb1ZpZXdEYXRhTW9kZWxcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRhcHBDb21wb25lbnQ6IG9BcHBDb21wb25lbnRcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0sXG5cdFx0XHRcdGlkOiBzU3RhYmxlSWQsXG5cdFx0XHRcdHZpZXdOYW1lOiBtU2VydmljZVNldHRpbmdzLnZpZXdOYW1lIHx8IG9Db21wb25lbnQuZ2V0Vmlld05hbWUoKSxcblx0XHRcdFx0dmlld0RhdGE6IG1WaWV3RGF0YSxcblx0XHRcdFx0Y2FjaGU6IHsga2V5czogW3NDYWNoZUtleV0gfSxcblx0XHRcdFx0bW9kZWxzOiB7XG5cdFx0XHRcdFx0XCJzYXAuZmUuaTE4blwiOiBvUmVzb3VyY2VNb2RlbFxuXHRcdFx0XHR9LFxuXHRcdFx0XHRoZWlnaHQ6IFwiMTAwJVwiXG5cdFx0XHR9O1xuXHRcdFx0cmV0dXJuIG9WaWV3U2V0dGluZ3M7XG5cdFx0fVxuXHRcdGNvbnN0IGNyZWF0ZUVycm9yUGFnZSA9IChyZWFzb246IGFueSkgPT4ge1xuXHRcdFx0Ly8ganVzdCByZXBsYWNlIHRoZSB2aWV3IG5hbWUgYW5kIGFkZCBhbiBhZGRpdGlvbmFsIG1vZGVsIGNvbnRhaW5pbmcgdGhlIHJlYXNvbiwgYnV0XG5cdFx0XHQvLyBrZWVwIHRoZSBvdGhlciBzZXR0aW5nc1xuXHRcdFx0TG9nLmVycm9yKHJlYXNvbi5tZXNzYWdlLCByZWFzb24pO1xuXHRcdFx0b1ZpZXdTZXR0aW5ncy52aWV3TmFtZSA9IG1TZXJ2aWNlU2V0dGluZ3MuZXJyb3JWaWV3TmFtZSB8fCBcInNhcC5mZS5jb3JlLnNlcnZpY2VzLnZpZXcuVGVtcGxhdGluZ0Vycm9yUGFnZVwiO1xuXHRcdFx0b1ZpZXdTZXR0aW5ncy5wcmVwcm9jZXNzb3JzLnhtbC5tb2RlbHNbXCJlcnJvclwiXSA9IG5ldyBKU09OTW9kZWwocmVhc29uKTtcblxuXHRcdFx0cmV0dXJuIG9Db21wb25lbnQucnVuQXNPd25lcigoKSA9PiB7XG5cdFx0XHRcdHJldHVybiBWaWV3LmNyZWF0ZShvVmlld1NldHRpbmdzKS50aGVuKChvVmlldzogYW55KSA9PiB7XG5cdFx0XHRcdFx0dGhpcy5vVmlldyA9IG9WaWV3O1xuXHRcdFx0XHRcdHRoaXMub1ZpZXcuc2V0TW9kZWwobmV3IE1hbmFnZWRPYmplY3RNb2RlbCh0aGlzLm9WaWV3KSwgXCIkdmlld1wiKTtcblx0XHRcdFx0XHRvQ29tcG9uZW50LnNldEFnZ3JlZ2F0aW9uKFwicm9vdENvbnRyb2xcIiwgdGhpcy5vVmlldyk7XG5cdFx0XHRcdFx0cmV0dXJuIHNDYWNoZUtleTtcblx0XHRcdFx0fSk7XG5cdFx0XHR9KTtcblx0XHR9O1xuXHRcdHJldHVybiBvQXBwQ29tcG9uZW50XG5cdFx0XHQuZ2V0U2VydmljZShcInJvdXRpbmdTZXJ2aWNlXCIpXG5cdFx0XHQudGhlbigob1JvdXRpbmdTZXJ2aWNlOiBhbnkpID0+IHtcblx0XHRcdFx0Ly8gUmV0cmlldmUgdGhlIHZpZXdMZXZlbCBmb3IgdGhlIGNvbXBvbmVudFxuXHRcdFx0XHRjb25zdCBvVGFyZ2V0SW5mbyA9IG9Sb3V0aW5nU2VydmljZS5nZXRUYXJnZXRJbmZvcm1hdGlvbkZvcihvQ29tcG9uZW50KTtcblx0XHRcdFx0Y29uc3QgbU91dGJvdW5kcyA9XG5cdFx0XHRcdFx0b01hbmlmZXN0Q29udGVudFtcInNhcC5hcHBcIl0gJiZcblx0XHRcdFx0XHRvTWFuaWZlc3RDb250ZW50W1wic2FwLmFwcFwiXS5jcm9zc05hdmlnYXRpb24gJiZcblx0XHRcdFx0XHRvTWFuaWZlc3RDb250ZW50W1wic2FwLmFwcFwiXS5jcm9zc05hdmlnYXRpb24ub3V0Ym91bmRzO1xuXHRcdFx0XHRjb25zdCBtTmF2aWdhdGlvbiA9IG9Db21wb25lbnQuZ2V0TmF2aWdhdGlvbigpIHx8IHt9O1xuXHRcdFx0XHRPYmplY3Qua2V5cyhtTmF2aWdhdGlvbikuZm9yRWFjaChmdW5jdGlvbiAobmF2aWdhdGlvbk9iamVjdEtleTogc3RyaW5nKSB7XG5cdFx0XHRcdFx0Y29uc3QgbmF2aWdhdGlvbk9iamVjdCA9IG1OYXZpZ2F0aW9uW25hdmlnYXRpb25PYmplY3RLZXldO1xuXHRcdFx0XHRcdGxldCBvdXRib3VuZENvbmZpZztcblx0XHRcdFx0XHRpZiAobmF2aWdhdGlvbk9iamVjdC5kZXRhaWwgJiYgbmF2aWdhdGlvbk9iamVjdC5kZXRhaWwub3V0Ym91bmQgJiYgbU91dGJvdW5kc1tuYXZpZ2F0aW9uT2JqZWN0LmRldGFpbC5vdXRib3VuZF0pIHtcblx0XHRcdFx0XHRcdG91dGJvdW5kQ29uZmlnID0gbU91dGJvdW5kc1tuYXZpZ2F0aW9uT2JqZWN0LmRldGFpbC5vdXRib3VuZF07XG5cdFx0XHRcdFx0XHRuYXZpZ2F0aW9uT2JqZWN0LmRldGFpbC5vdXRib3VuZERldGFpbCA9IHtcblx0XHRcdFx0XHRcdFx0c2VtYW50aWNPYmplY3Q6IG91dGJvdW5kQ29uZmlnLnNlbWFudGljT2JqZWN0LFxuXHRcdFx0XHRcdFx0XHRhY3Rpb246IG91dGJvdW5kQ29uZmlnLmFjdGlvbixcblx0XHRcdFx0XHRcdFx0cGFyYW1ldGVyczogb3V0Ym91bmRDb25maWcucGFyYW1ldGVyc1xuXHRcdFx0XHRcdFx0fTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0aWYgKG5hdmlnYXRpb25PYmplY3QuY3JlYXRlICYmIG5hdmlnYXRpb25PYmplY3QuY3JlYXRlLm91dGJvdW5kICYmIG1PdXRib3VuZHNbbmF2aWdhdGlvbk9iamVjdC5jcmVhdGUub3V0Ym91bmRdKSB7XG5cdFx0XHRcdFx0XHRvdXRib3VuZENvbmZpZyA9IG1PdXRib3VuZHNbbmF2aWdhdGlvbk9iamVjdC5jcmVhdGUub3V0Ym91bmRdO1xuXHRcdFx0XHRcdFx0bmF2aWdhdGlvbk9iamVjdC5jcmVhdGUub3V0Ym91bmREZXRhaWwgPSB7XG5cdFx0XHRcdFx0XHRcdHNlbWFudGljT2JqZWN0OiBvdXRib3VuZENvbmZpZy5zZW1hbnRpY09iamVjdCxcblx0XHRcdFx0XHRcdFx0YWN0aW9uOiBvdXRib3VuZENvbmZpZy5hY3Rpb24sXG5cdFx0XHRcdFx0XHRcdHBhcmFtZXRlcnM6IG91dGJvdW5kQ29uZmlnLnBhcmFtZXRlcnNcblx0XHRcdFx0XHRcdH07XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9KTtcblx0XHRcdFx0bVZpZXdEYXRhID0ge1xuXHRcdFx0XHRcdG5hdmlnYXRpb246IG1OYXZpZ2F0aW9uLFxuXHRcdFx0XHRcdHZpZXdMZXZlbDogb1RhcmdldEluZm8udmlld0xldmVsLFxuXHRcdFx0XHRcdHN0YWJsZUlkOiBzU3RhYmxlSWQsXG5cdFx0XHRcdFx0Y29udGVudERlbnNpdGllczogb01hbmlmZXN0Q29udGVudFtcInNhcC51aTVcIl0uY29udGVudERlbnNpdGllcyxcblx0XHRcdFx0XHRyZXNvdXJjZUJ1bmRsZTogb1Jlc291cmNlTW9kZWwuX19idW5kbGUsXG5cdFx0XHRcdFx0ZnVsbENvbnRleHRQYXRoOiBzRnVsbENvbnRleHRQYXRoLFxuXHRcdFx0XHRcdGlzRGVza3RvcDogKERldmljZSBhcyBhbnkpLnN5c3RlbS5kZXNrdG9wLFxuXHRcdFx0XHRcdGlzUGhvbmU6IChEZXZpY2UgYXMgYW55KS5zeXN0ZW0ucGhvbmVcblx0XHRcdFx0fTtcblxuXHRcdFx0XHRpZiAob0NvbXBvbmVudC5nZXRWaWV3RGF0YSkge1xuXHRcdFx0XHRcdE9iamVjdC5hc3NpZ24obVZpZXdEYXRhLCBvQ29tcG9uZW50LmdldFZpZXdEYXRhKCkpO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0Y29uc3Qgb1NoZWxsU2VydmljZXMgPSBvQXBwQ29tcG9uZW50LmdldFNoZWxsU2VydmljZXMoKTtcblx0XHRcdFx0bVZpZXdEYXRhLmNvbnZlcnRlclR5cGUgPSBzQ29udmVydGVyVHlwZTtcblx0XHRcdFx0bVZpZXdEYXRhLnNoZWxsQ29udGVudERlbnNpdHkgPSBvU2hlbGxTZXJ2aWNlcy5nZXRDb250ZW50RGVuc2l0eSgpO1xuXHRcdFx0XHRtVmlld0RhdGEudXNlTmV3TGF6eUxvYWRpbmcgPSBVcmlQYXJhbWV0ZXJzLmZyb21RdWVyeSh3aW5kb3cubG9jYXRpb24uc2VhcmNoKS5nZXQoXCJzYXAtZmUteHgtbGF6eWxvYWRpbmd0ZXN0XCIpID09PSBcInRydWVcIjtcblx0XHRcdFx0bVZpZXdEYXRhLnJldHJpZXZlVGV4dEZyb21WYWx1ZUxpc3QgPVxuXHRcdFx0XHRcdG9NYW5pZmVzdENvbnRlbnRbXCJzYXAuZmVcIl0gJiYgb01hbmlmZXN0Q29udGVudFtcInNhcC5mZVwiXS5mb3JtXG5cdFx0XHRcdFx0XHQ/IG9NYW5pZmVzdENvbnRlbnRbXCJzYXAuZmVcIl0uZm9ybS5yZXRyaWV2ZVRleHRGcm9tVmFsdWVMaXN0XG5cdFx0XHRcdFx0XHQ6IHVuZGVmaW5lZDtcblx0XHRcdFx0Ly8gXHRUaGUgbWFuaWZlc3Qgc3dpdGNoIGZvciB0aGUgdXNhZ2Ugb2YgdGhlIG5ldyBWYWx1ZUhlbHAgc2hvdWxkIG9ubHkgdXNlZCBpbnRlcm5hbGx5XG5cdFx0XHRcdG1WaWV3RGF0YS5fdXNlTmV3VmFsdWVIZWxwID1cblx0XHRcdFx0XHRvTWFuaWZlc3RDb250ZW50W1wic2FwLmZlXCJdICYmIG9NYW5pZmVzdENvbnRlbnRbXCJzYXAuZmVcIl0uYXBwXG5cdFx0XHRcdFx0XHQ/IG9NYW5pZmVzdENvbnRlbnRbXCJzYXAuZmVcIl0uYXBwLl91c2VOZXdWYWx1ZUhlbHBcblx0XHRcdFx0XHRcdDogdW5kZWZpbmVkO1xuXHRcdFx0XHRvVmlld0RhdGFNb2RlbCA9IG5ldyBKU09OTW9kZWwobVZpZXdEYXRhKTtcblx0XHRcdFx0aWYgKG1WaWV3RGF0YSAmJiBtVmlld0RhdGEuY29udHJvbENvbmZpZ3VyYXRpb24pIHtcblx0XHRcdFx0XHRPYmplY3Qua2V5cyhtVmlld0RhdGEuY29udHJvbENvbmZpZ3VyYXRpb24pLmZvckVhY2goZnVuY3Rpb24gKHNBbm5vdGF0aW9uUGF0aDogc3RyaW5nKSB7XG5cdFx0XHRcdFx0XHRpZiAoc0Fubm90YXRpb25QYXRoLmluZGV4T2YoXCJbXCIpICE9PSAtMSkge1xuXHRcdFx0XHRcdFx0XHRjb25zdCBzVGFyZ2V0QW5ub3RhdGlvblBhdGggPSByZXNvbHZlRHluYW1pY0V4cHJlc3Npb24oc0Fubm90YXRpb25QYXRoLCBvTWV0YU1vZGVsKTtcblx0XHRcdFx0XHRcdFx0bVZpZXdEYXRhLmNvbnRyb2xDb25maWd1cmF0aW9uW3NUYXJnZXRBbm5vdGF0aW9uUGF0aF0gPSBtVmlld0RhdGEuY29udHJvbENvbmZpZ3VyYXRpb25bc0Fubm90YXRpb25QYXRoXTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9KTtcblx0XHRcdFx0fVxuXHRcdFx0XHRNZXRhTW9kZWxDb252ZXJ0ZXIuY29udmVydFR5cGVzKG9NZXRhTW9kZWwsIG9BcHBDb21wb25lbnQuZ2V0RW52aXJvbm1lbnRDYXBhYmlsaXRpZXMoKS5nZXRDYXBhYmlsaXRpZXMoKSk7XG5cdFx0XHRcdG9QYWdlTW9kZWwgPSBuZXcgVGVtcGxhdGVNb2RlbCgoKSA9PiB7XG5cdFx0XHRcdFx0dHJ5IHtcblx0XHRcdFx0XHRcdGlmICghIW9QYWdlTW9kZWxDYWNoZSkge1xuXHRcdFx0XHRcdFx0XHRyZXR1cm4gb1BhZ2VNb2RlbENhY2hlO1xuXHRcdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdFx0Y29uc3Qgb0RpYWdub3N0aWNzID0gb0FwcENvbXBvbmVudC5nZXREaWFnbm9zdGljcygpO1xuXHRcdFx0XHRcdFx0XHRjb25zdCBpSXNzdWVDb3VudCA9IG9EaWFnbm9zdGljcy5nZXRJc3N1ZXMoKS5sZW5ndGg7XG5cdFx0XHRcdFx0XHRcdGNvbnN0IG9Db252ZXJ0ZXJQYWdlTW9kZWwgPSBUZW1wbGF0ZUNvbnZlcnRlci5jb252ZXJ0UGFnZShcblx0XHRcdFx0XHRcdFx0XHRzQ29udmVydGVyVHlwZSxcblx0XHRcdFx0XHRcdFx0XHRvTWV0YU1vZGVsLFxuXHRcdFx0XHRcdFx0XHRcdG1WaWV3RGF0YSxcblx0XHRcdFx0XHRcdFx0XHRvRGlhZ25vc3RpY3MsXG5cdFx0XHRcdFx0XHRcdFx0c0Z1bGxDb250ZXh0UGF0aCxcblx0XHRcdFx0XHRcdFx0XHRvQXBwQ29tcG9uZW50LmdldEVudmlyb25tZW50Q2FwYWJpbGl0aWVzKCkuZ2V0Q2FwYWJpbGl0aWVzKClcblx0XHRcdFx0XHRcdFx0KTtcblxuXHRcdFx0XHRcdFx0XHRjb25zdCBhSXNzdWVzID0gb0RpYWdub3N0aWNzLmdldElzc3VlcygpO1xuXHRcdFx0XHRcdFx0XHRjb25zdCBhQWRkZWRJc3N1ZXMgPSBhSXNzdWVzLnNsaWNlKGlJc3N1ZUNvdW50KTtcblx0XHRcdFx0XHRcdFx0aWYgKGFBZGRlZElzc3Vlcy5sZW5ndGggPiAwKSB7XG5cdFx0XHRcdFx0XHRcdFx0TG9nLndhcm5pbmcoXG5cdFx0XHRcdFx0XHRcdFx0XHRcIlNvbWUgaXNzdWVzIGhhdmUgYmVlbiBkZXRlY3RlZCBpbiB5b3VyIHByb2plY3QsIHBsZWFzZSBjaGVjayB0aGUgVUk1IHN1cHBvcnQgYXNzaXN0YW50IHJ1bGUgZm9yIHNhcC5mZS5jb3JlXCJcblx0XHRcdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdHJldHVybiBvQ29udmVydGVyUGFnZU1vZGVsO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH0gY2F0Y2ggKGVycm9yKSB7XG5cdFx0XHRcdFx0XHRMb2cuZXJyb3IoZXJyb3IgYXMgYW55LCBlcnJvciBhcyBhbnkpO1xuXHRcdFx0XHRcdFx0cmV0dXJuIHt9O1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSwgb01ldGFNb2RlbCk7XG5cblx0XHRcdFx0aWYgKCFiRXJyb3IpIHtcblx0XHRcdFx0XHRvVmlld1NldHRpbmdzID0gZ2V0Vmlld1NldHRpbmdzKCk7XG5cdFx0XHRcdFx0Ly8gU2V0dGluZyB0aGUgcGFnZU1vZGVsIG9uIHRoZSBjb21wb25lbnQgZm9yIHBvdGVudGlhbCByZXVzZVxuXHRcdFx0XHRcdG9Db21wb25lbnQuc2V0TW9kZWwob1BhZ2VNb2RlbCwgXCJfcGFnZU1vZGVsXCIpO1xuXHRcdFx0XHRcdHJldHVybiBvQ29tcG9uZW50LnJ1bkFzT3duZXIoKCkgPT4ge1xuXHRcdFx0XHRcdFx0cmV0dXJuIFZpZXcuY3JlYXRlKG9WaWV3U2V0dGluZ3MpXG5cdFx0XHRcdFx0XHRcdC5jYXRjaChjcmVhdGVFcnJvclBhZ2UpXG5cdFx0XHRcdFx0XHRcdC50aGVuKChvVmlldzogYW55KSA9PiB7XG5cdFx0XHRcdFx0XHRcdFx0dGhpcy5vVmlldyA9IG9WaWV3O1xuXHRcdFx0XHRcdFx0XHRcdHRoaXMub1ZpZXcuc2V0TW9kZWwobmV3IE1hbmFnZWRPYmplY3RNb2RlbCh0aGlzLm9WaWV3KSwgXCIkdmlld1wiKTtcblx0XHRcdFx0XHRcdFx0XHR0aGlzLm9WaWV3LnNldE1vZGVsKG9WaWV3RGF0YU1vZGVsLCBcInZpZXdEYXRhXCIpO1xuXHRcdFx0XHRcdFx0XHRcdG9Db21wb25lbnQuc2V0QWdncmVnYXRpb24oXCJyb290Q29udHJvbFwiLCB0aGlzLm9WaWV3KTtcblx0XHRcdFx0XHRcdFx0XHQvLyBGaXJlIGFuZCBmb3JnZXQgaW4gdGhlIGNhY2hlXG5cdFx0XHRcdFx0XHRcdFx0aWYgKCFvUGFnZU1vZGVsQ2FjaGUpIHtcblx0XHRcdFx0XHRcdFx0XHRcdHRoaXMuX3NldENhY2hlZE1vZGVsKHNQYWdlTW9kZWxDYWNoZUtleSwgKG9QYWdlTW9kZWwgYXMgYW55KS5nZXREYXRhKCkpO1xuXHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gc0NhY2hlS2V5O1xuXHRcdFx0XHRcdFx0XHR9KVxuXHRcdFx0XHRcdFx0XHQuY2F0Y2goKGUpID0+IExvZy5lcnJvcihlLm1lc3NhZ2UsIGUpKTtcblx0XHRcdFx0XHR9KTtcblx0XHRcdFx0fVxuXHRcdFx0fSlcblx0XHRcdC5jYXRjaChmdW5jdGlvbiAoZXJyb3I6IGFueSkge1xuXHRcdFx0XHRMb2cuZXJyb3IoZXJyb3IubWVzc2FnZSwgZXJyb3IpO1xuXHRcdFx0XHR0aHJvdyBuZXcgRXJyb3IoXCJFcnJvciB3aGlsZSBjcmVhdGluZyB2aWV3IDogXCIgKyBlcnJvcik7XG5cdFx0XHR9KTtcblx0fVxuXHRnZXRWaWV3KCkge1xuXHRcdHJldHVybiB0aGlzLm9WaWV3O1xuXHR9XG5cdGdldEludGVyZmFjZSgpOiBhbnkge1xuXHRcdHJldHVybiB0aGlzO1xuXHR9XG5cdGV4aXQoKSB7XG5cdFx0Ly8gRGVyZWdpc3RlciBnbG9iYWwgaW5zdGFuY2Vcblx0XHR0aGlzLm9SZXNvdXJjZU1vZGVsU2VydmljZSAmJiB0aGlzLm9SZXNvdXJjZU1vZGVsU2VydmljZS5kZXN0cm95KCk7XG5cdFx0dGhpcy5vQ2FjaGVIYW5kbGVyU2VydmljZSAmJiB0aGlzLm9DYWNoZUhhbmRsZXJTZXJ2aWNlLmRlc3Ryb3koKTtcblx0XHR0aGlzLm9GYWN0b3J5LnJlbW92ZUdsb2JhbEluc3RhbmNlKCk7XG5cdH1cbn1cbmNsYXNzIFRlbXBsYXRlZFZpZXdTZXJ2aWNlRmFjdG9yeSBleHRlbmRzIFNlcnZpY2VGYWN0b3J5PFRlbXBsYXRlZFZpZXdTZXJ2aWNlU2V0dGluZ3M+IHtcblx0X29JbnN0YW5jZVJlZ2lzdHJ5OiBSZWNvcmQ8c3RyaW5nLCBUZW1wbGF0ZWRWaWV3U2VydmljZT4gPSB7fTtcblx0c3RhdGljIGlDcmVhdGluZ1ZpZXdzOiAwO1xuXHRjcmVhdGVJbnN0YW5jZShvU2VydmljZUNvbnRleHQ6IFNlcnZpY2VDb250ZXh0PFRlbXBsYXRlZFZpZXdTZXJ2aWNlU2V0dGluZ3M+KSB7XG5cdFx0VGVtcGxhdGVkVmlld1NlcnZpY2VGYWN0b3J5LmlDcmVhdGluZ1ZpZXdzKys7XG5cblx0XHRjb25zdCBvVGVtcGxhdGVkVmlld1NlcnZpY2UgPSBuZXcgVGVtcGxhdGVkVmlld1NlcnZpY2UoT2JqZWN0LmFzc2lnbih7IGZhY3Rvcnk6IHRoaXMgfSwgb1NlcnZpY2VDb250ZXh0KSk7XG5cdFx0cmV0dXJuIG9UZW1wbGF0ZWRWaWV3U2VydmljZS5pbml0UHJvbWlzZS50aGVuKGZ1bmN0aW9uICgpIHtcblx0XHRcdFRlbXBsYXRlZFZpZXdTZXJ2aWNlRmFjdG9yeS5pQ3JlYXRpbmdWaWV3cy0tO1xuXHRcdFx0cmV0dXJuIG9UZW1wbGF0ZWRWaWV3U2VydmljZTtcblx0XHR9KTtcblx0fVxuXHRyZW1vdmVHbG9iYWxJbnN0YW5jZSgpIHtcblx0XHR0aGlzLl9vSW5zdGFuY2VSZWdpc3RyeSA9IHt9O1xuXHR9XG5cdHN0YXRpYyBnZXROdW1iZXJPZlZpZXdzSW5DcmVhdGlvblN0YXRlKCkge1xuXHRcdHJldHVybiBUZW1wbGF0ZWRWaWV3U2VydmljZUZhY3RvcnkuaUNyZWF0aW5nVmlld3M7XG5cdH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgVGVtcGxhdGVkVmlld1NlcnZpY2VGYWN0b3J5O1xuIl19
437
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIlRlbXBsYXRlZFZpZXdTZXJ2aWNlRmFjdG9yeS50cyJdLCJuYW1lcyI6WyJUZW1wbGF0ZWRWaWV3U2VydmljZSIsImluaXQiLCJhU2VydmljZURlcGVuZGVuY2llcyIsIm9Db250ZXh0IiwiZ2V0Q29udGV4dCIsIm9Db21wb25lbnQiLCJzY29wZU9iamVjdCIsIm9BcHBDb21wb25lbnQiLCJDb21wb25lbnQiLCJnZXRPd25lckNvbXBvbmVudEZvciIsIm9NZXRhTW9kZWwiLCJnZXRNZXRhTW9kZWwiLCJzU3RhYmxlSWQiLCJnZXRNZXRhZGF0YSIsImdldENvbXBvbmVudE5hbWUiLCJnZXRMb2NhbElkIiwiZ2V0SWQiLCJhRW5oYW5jZUkxOG4iLCJnZXRFbmhhbmNlSTE4biIsInNBcHBOYW1lc3BhY2UiLCJvRmFjdG9yeSIsImZhY3RvcnkiLCJpIiwibGVuZ3RoIiwib1Jlc291cmNlTW9kZWwiLCJnZXRNb2RlbCIsImlzQSIsInJlcGxhY2UiLCJzQ2FjaGVJZGVudGlmaWVyIiwiZ2V0TmFtZSIsInNhcCIsInVpIiwiZ2V0Q29yZSIsImdldENvbmZpZ3VyYXRpb24iLCJnZXRMYW5ndWFnZVRhZyIsInB1c2giLCJTZXJ2aWNlRmFjdG9yeVJlZ2lzdHJ5IiwiZ2V0IiwiY3JlYXRlSW5zdGFuY2UiLCJzY29wZVR5cGUiLCJzZXR0aW5ncyIsImJ1bmRsZXMiLCJlbmhhbmNlSTE4biIsIm1vZGVsTmFtZSIsInRoZW4iLCJvUmVzb3VyY2VNb2RlbFNlcnZpY2UiLCJnZXRSZXNvdXJjZU1vZGVsIiwibWV0YU1vZGVsIiwiYXBwQ29tcG9uZW50IiwiY29tcG9uZW50Iiwib0NhY2hlSGFuZGxlclNlcnZpY2UiLCJ2YWxpZGF0ZUNhY2hlS2V5IiwiVmVyc2lvbkluZm8iLCJsb2FkIiwib0luZm8iLCJzVGltZXN0YW1wIiwibGlicmFyaWVzIiwiYnVpbGRpbmZvIiwiYnVpbGR0aW1lIiwiZm9yRWFjaCIsIm9MaWJyYXJ5IiwiYnVpbGRUaW1lc3RhbXAiLCJjYXRjaCIsInNQYWdlTW9kZWxDYWNoZUtleSIsImluaXRQcm9taXNlIiwiUHJvbWlzZSIsImFsbCIsImFEZXBlbmRlbmNpZXNSZXN1bHQiLCJzQ2FjaGVLZXkiLCJzVmVyc2lvbkluZm8iLCJvU2hlbGxTZXJ2aWNlcyIsImdldFNoZWxsU2VydmljZXMiLCJvU2lkZUVmZmVjdHNTZXJ2aWNlcyIsImdldFNpZGVFZmZlY3RzU2VydmljZSIsImluaXRpYWxpemVTaWRlRWZmZWN0cyIsImdldEVudmlyb25tZW50Q2FwYWJpbGl0aWVzIiwiZ2V0Q2FwYWJpbGl0aWVzIiwiaW5zdGFuY2VUeXBlIiwidW5kZWZpbmVkIiwiY29uY2F0IiwiX2dldENhY2hlZE1vZGVsIiwib1BhZ2VNb2RlbENhY2hlIiwicmVzb2x2ZSIsInJlcXVpcmUiLCJUZW1wbGF0ZUNvbnZlcnRlciIsIk1ldGFNb2RlbENvbnZlcnRlciIsImNyZWF0ZVZpZXciLCJnZXRJbnN0YW5jZSIsImludmFsaWRhdGVJZk5lZWRlZCIsIkNvcmUiLCJnZXRWaWV3Q2FjaGUiLCJDYWNoZU1hbmFnZXIiLCJfc2V0Q2FjaGVkTW9kZWwiLCJvQ2FjaGVNb2RlbCIsInNldCIsInJlZnJlc2hWaWV3Iiwib1Jvb3RWaWV3IiwiZ2V0Um9vdENvbnRyb2wiLCJkZXN0cm95Iiwib1ZpZXciLCJyZXNvdXJjZU1vZGVsIiwic3RhYmxlSWQiLCJvQ29udGFpbmVyIiwiaW52YWxpZGF0ZSIsIm9FcnJvciIsIkxvZyIsImVycm9yIiwibVNlcnZpY2VTZXR0aW5ncyIsInNDb252ZXJ0ZXJUeXBlIiwiY29udmVydGVyVHlwZSIsInNGdWxsQ29udGV4dFBhdGgiLCJnZXRSb3V0aW5nU2VydmljZSIsImdldFRhcmdldEluZm9ybWF0aW9uRm9yIiwib3B0aW9ucyIsImZ1bGxDb250ZXh0UGF0aCIsIm9NYW5pZmVzdENvbnRlbnQiLCJnZXRNYW5pZmVzdCIsIm9EZXZpY2VNb2RlbCIsIkpTT05Nb2RlbCIsIkRldmljZSIsInNldERlZmF1bHRCaW5kaW5nTW9kZSIsIm9NYW5pZmVzdE1vZGVsIiwiYkVycm9yIiwib1BhZ2VNb2RlbCIsIm9WaWV3RGF0YU1vZGVsIiwib1ZpZXdTZXR0aW5ncyIsIm1WaWV3RGF0YSIsImdldFZpZXdTZXR0aW5ncyIsImFTcGxpdFBhdGgiLCJzcGxpdCIsInNFbnRpdHlTZXRQYXRoIiwicmVkdWNlIiwic1BhdGhTb0ZhciIsInNOZXh0UGF0aFBhcnQiLCJvVGFyZ2V0IiwiZ2V0T2JqZWN0IiwiT2JqZWN0Iiwia2V5cyIsInR5cGUiLCJwcmVwcm9jZXNzb3JzIiwieG1sIiwiYmluZGluZ0NvbnRleHRzIiwiZW50aXR5U2V0IiwiY3JlYXRlQmluZGluZ0NvbnRleHQiLCJjb250ZXh0UGF0aCIsImNvbnZlcnRlckNvbnRleHQiLCJub1Jlc29sdmUiLCJ2aWV3RGF0YSIsIm1vZGVscyIsIm1hbmlmZXN0IiwiaWQiLCJ2aWV3TmFtZSIsImdldFZpZXdOYW1lIiwiY2FjaGUiLCJoZWlnaHQiLCJjcmVhdGVFcnJvclBhZ2UiLCJyZWFzb24iLCJtZXNzYWdlIiwiZXJyb3JWaWV3TmFtZSIsInJ1bkFzT3duZXIiLCJWaWV3IiwiY3JlYXRlIiwic2V0TW9kZWwiLCJNYW5hZ2VkT2JqZWN0TW9kZWwiLCJzZXRBZ2dyZWdhdGlvbiIsImdldFNlcnZpY2UiLCJvUm91dGluZ1NlcnZpY2UiLCJvVGFyZ2V0SW5mbyIsIm1PdXRib3VuZHMiLCJjcm9zc05hdmlnYXRpb24iLCJvdXRib3VuZHMiLCJtTmF2aWdhdGlvbiIsImdldE5hdmlnYXRpb24iLCJuYXZpZ2F0aW9uT2JqZWN0S2V5IiwibmF2aWdhdGlvbk9iamVjdCIsIm91dGJvdW5kQ29uZmlnIiwiZGV0YWlsIiwib3V0Ym91bmQiLCJvdXRib3VuZERldGFpbCIsInNlbWFudGljT2JqZWN0IiwiYWN0aW9uIiwicGFyYW1ldGVycyIsIm5hdmlnYXRpb24iLCJ2aWV3TGV2ZWwiLCJjb250ZW50RGVuc2l0aWVzIiwicmVzb3VyY2VCdW5kbGUiLCJfX2J1bmRsZSIsImlzRGVza3RvcCIsInN5c3RlbSIsImRlc2t0b3AiLCJpc1Bob25lIiwicGhvbmUiLCJnZXRWaWV3RGF0YSIsImFzc2lnbiIsInNoZWxsQ29udGVudERlbnNpdHkiLCJnZXRDb250ZW50RGVuc2l0eSIsInVzZU5ld0xhenlMb2FkaW5nIiwiVXJpUGFyYW1ldGVycyIsImZyb21RdWVyeSIsIndpbmRvdyIsImxvY2F0aW9uIiwic2VhcmNoIiwicmV0cmlldmVUZXh0RnJvbVZhbHVlTGlzdCIsImZvcm0iLCJfdXNlTmV3VmFsdWVIZWxwIiwiYXBwIiwiY29udHJvbENvbmZpZ3VyYXRpb24iLCJzQW5ub3RhdGlvblBhdGgiLCJpbmRleE9mIiwic1RhcmdldEFubm90YXRpb25QYXRoIiwicmVzb2x2ZUR5bmFtaWNFeHByZXNzaW9uIiwiY29udmVydFR5cGVzIiwiVGVtcGxhdGVNb2RlbCIsIm9EaWFnbm9zdGljcyIsImdldERpYWdub3N0aWNzIiwiaUlzc3VlQ291bnQiLCJnZXRJc3N1ZXMiLCJvQ29udmVydGVyUGFnZU1vZGVsIiwiY29udmVydFBhZ2UiLCJhSXNzdWVzIiwiYUFkZGVkSXNzdWVzIiwic2xpY2UiLCJ3YXJuaW5nIiwiZ2V0RGF0YSIsImUiLCJFcnJvciIsImdldFZpZXciLCJnZXRJbnRlcmZhY2UiLCJleGl0IiwicmVtb3ZlR2xvYmFsSW5zdGFuY2UiLCJTZXJ2aWNlIiwiVGVtcGxhdGVkVmlld1NlcnZpY2VGYWN0b3J5IiwiX29JbnN0YW5jZVJlZ2lzdHJ5Iiwib1NlcnZpY2VDb250ZXh0IiwiaUNyZWF0aW5nVmlld3MiLCJvVGVtcGxhdGVkVmlld1NlcnZpY2UiLCJnZXROdW1iZXJPZlZpZXdzSW5DcmVhdGlvblN0YXRlIiwiU2VydmljZUZhY3RvcnkiXSwibWFwcGluZ3MiOiI7QUFBQTtBQUNBO0FBQ0E7Ozs7Ozs7Ozs7TUFzQk1BLG9COzs7Ozs7Ozs7V0FVTEMsSSxHQUFBLGdCQUFPO0FBQUE7O0FBQ04sVUFBTUMsb0JBQW9CLEdBQUcsRUFBN0I7QUFDQSxVQUFNQyxRQUFRLEdBQUcsS0FBS0MsVUFBTCxFQUFqQjtBQUNBLFVBQU1DLFVBQVUsR0FBR0YsUUFB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VCxhQUFPLEtBQUsvSCxLQUFaO0FBQ0EsSzs7V0FDRGdJLFksR0FBQSx3QkFBb0I7QUFDbkIsYUFBTyxJQUFQO0FBQ0EsSzs7V0FDREMsSSxHQUFBLGdCQUFPO0FBQ047QUFDQSxVQUFJLEtBQUt2TCxxQkFBVCxFQUFnQztBQUMvQixhQUFLQSxxQkFBTCxDQUEyQnFELE9BQTNCO0FBQ0E7O0FBQ0QsVUFBSSxLQUFLaEQsb0JBQVQsRUFBK0I7QUFDOUIsYUFBS0Esb0JBQUwsQ0FBMEJnRCxPQUExQjtBQUNBOztBQUNELFdBQUs5RSxRQUFMLENBQWNpTixvQkFBZDtBQUNBLEs7OztJQXJaaUNDLE87O01BdVo3QkMsMkI7Ozs7Ozs7Ozs7O2FBQ0xDLGtCLEdBQTJELEU7Ozs7OztZQUUzRGxNLGMsR0FBQSx3QkFBZW1NLGVBQWYsRUFBOEU7QUFDN0VGLE1BQUFBLDJCQUEyQixDQUFDRyxjQUE1QjtBQUVBLFVBQU1DLHFCQUFxQixHQUFHLElBQUkzTyxvQkFBSixDQUF5QndJLE1BQU0sQ0FBQ3lELE1BQVAsQ0FBYztBQUFFNUssUUFBQUEsT0FBTyxFQUFFO0FBQVgsT0FBZCxFQUFpQ29OLGVBQWpDLENBQXpCLENBQTlCO0FBQ0EsYUFBT0UscUJBQXFCLENBQUMzSyxXQUF0QixDQUFrQ3BCLElBQWxDLENBQXVDLFlBQVk7QUFDekQyTCxRQUFBQSwyQkFBMkIsQ0FBQ0csY0FBNUI7QUFDQSxlQUFPQyxxQkFBUDtBQUNBLE9BSE0sQ0FBUDtBQUlBLEs7O1lBQ0ROLG9CLEdBQUEsZ0NBQXVCO0FBQ3RCLFdBQUtHLGtCQUFMLEdBQTBCLEVBQTFCO0FBQ0EsSzs7Z0NBQ01JLCtCLEdBQVAsMkNBQXlDO0FBQ3hDLGFBQU9MLDJCQUEyQixDQUFDRyxjQUFuQztBQUNBLEs7OztJQWpCd0NHLGM7O1NBb0IzQk4sMkIiLCJzb3VyY2VSb290IjoiLiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBMb2cgZnJvbSBcInNhcC9iYXNlL0xvZ1wiO1xuaW1wb3J0IFVyaVBhcmFtZXRlcnMgZnJvbSBcInNhcC9iYXNlL3V0aWwvVXJpUGFyYW1ldGVyc1wiO1xuaW1wb3J0IHR5cGUgQXBwQ29tcG9uZW50IGZyb20gXCJzYXAvZmUvY29yZS9BcHBDb21wb25lbnRcIjtcbmltcG9ydCB0eXBlIHsgQ2FjaGVIYW5kbGVyU2VydmljZSB9IGZyb20gXCJzYXAvZmUvY29yZS9zZXJ2aWNlcy9DYWNoZUhhbmRsZXJTZXJ2aWNlRmFjdG9yeVwiO1xuaW1wb3J0IFRlbXBsYXRlTW9kZWwgZnJvbSBcInNhcC9mZS9jb3JlL1RlbXBsYXRlTW9kZWxcIjtcbmltcG9ydCB0eXBlIFJlc291cmNlTW9kZWwgZnJvbSBcInNhcC9mZS9tYWNyb3MvUmVzb3VyY2VNb2RlbFwiO1xuaW1wb3J0IENhY2hlTWFuYWdlciBmcm9tIFwic2FwL3VpL2NvcmUvY2FjaGUvQ2FjaGVNYW5hZ2VyXCI7XG5pbXBvcnQgQ29tcG9uZW50IGZyb20gXCJzYXAvdWkvY29yZS9Db21wb25lbnRcIjtcbmltcG9ydCBDb3JlIGZyb20gXCJzYXAvdWkvY29yZS9Db3JlXCI7XG5pbXBvcnQgVmlldyBmcm9tIFwic2FwL3VpL2NvcmUvbXZjL1ZpZXdcIjtcbmltcG9ydCBTZXJ2aWNlIGZyb20gXCJzYXAvdWkvY29yZS9zZXJ2aWNlL1NlcnZpY2VcIjtcbmltcG9ydCBTZXJ2aWNlRmFjdG9yeSBmcm9tIFwic2FwL3VpL2NvcmUvc2VydmljZS9TZXJ2aWNlRmFjdG9yeVwiO1xuaW1wb3J0IFNlcnZpY2VGYWN0b3J5UmVnaXN0cnkgZnJvbSBcInNhcC91aS9jb3JlL3NlcnZpY2UvU2VydmljZUZhY3RvcnlSZWdpc3RyeVwiO1xuaW1wb3J0IERldmljZSBmcm9tIFwic2FwL3VpL0RldmljZVwiO1xuaW1wb3J0IE1hbmFnZWRPYmplY3RNb2RlbCBmcm9tIFwic2FwL3VpL21vZGVsL2Jhc2UvTWFuYWdlZE9iamVjdE1vZGVsXCI7XG5pbXBvcnQgSlNPTk1vZGVsIGZyb20gXCJzYXAvdWkvbW9kZWwvanNvbi9KU09OTW9kZWxcIjtcbmltcG9ydCB0eXBlIE1vZGVsIGZyb20gXCJzYXAvdWkvbW9kZWwvTW9kZWxcIjtcbmltcG9ydCBWZXJzaW9uSW5mbyBmcm9tIFwic2FwL3VpL1ZlcnNpb25JbmZvXCI7XG5pbXBvcnQgdHlwZSB7IENvcmVFeCwgU2VydmljZUNvbnRleHQgfSBmcm9tIFwidHlwZXMvZXh0ZW5zaW9uX3R5cGVzXCI7XG5pbXBvcnQgeyByZXNvbHZlRHluYW1pY0V4cHJlc3Npb24gfSBmcm9tIFwiLi4vaGVscGVycy9EeW5hbWljQW5ub3RhdGlvblBhdGhIZWxwZXJcIjtcbmltcG9ydCB0eXBlIHsgUmVzb3VyY2VNb2RlbFNlcnZpY2UgfSBmcm9tIFwiLi9SZXNvdXJjZU1vZGVsU2VydmljZUZhY3RvcnlcIjtcblxudHlwZSBUZW1wbGF0ZWRWaWV3U2VydmljZVNldHRpbmdzID0ge307XG5cbmNsYXNzIFRlbXBsYXRlZFZpZXdTZXJ2aWNlIGV4dGVuZHMgU2VydmljZTxUZW1wbGF0ZWRWaWV3U2VydmljZVNldHRpbmdzPiB7XG5cdGluaXRQcm9taXNlITogUHJvbWlzZTxhbnk+O1xuXHRvVmlldyE6IFZpZXc7XG5cdG9SZXNvdXJjZU1vZGVsU2VydmljZSE6IFJlc291cmNlTW9kZWxTZXJ2aWNlO1xuXHRvQ2FjaGVIYW5kbGVyU2VydmljZSE6IENhY2hlSGFuZGxlclNlcnZpY2U7XG5cdG9GYWN0b3J5ITogVGVtcGxhdGVkVmlld1NlcnZpY2VGYWN0b3J5O1xuXHRyZXNvdXJjZU1vZGVsITogdHlwZW9mIFJlc291cmNlTW9kZWw7XG5cdHN0YWJsZUlkITogc3RyaW5nO1xuXHRUZW1wbGF0ZUNvbnZlcnRlcjogYW55O1xuXHRNZXRhTW9kZWxDb252ZXJ0ZXI6IGFueTtcblx0aW5pdCgpIHtcblx0XHRjb25zdCBhU2VydmljZURlcGVuZGVuY2llcyA9IFtdO1xuXHRcdGNvbnN0IG9Db250ZXh0ID0gdGhpcy5nZXRDb250ZXh0KCk7XG5cdFx0Y29uc3Qgb0NvbXBvbmVudCA9IG9Db250ZXh0LnNjb3BlT2JqZWN0O1xuXHRcdGNvbnN0IG9BcHBDb21wb25lbnQgPSBDb21wb25lbnQuZ2V0T3duZXJDb21wb25lbnRGb3Iob0NvbXBvbmVudCkgYXMgQXBwQ29tcG9uZW50O1xuXHRcdGNvbnN0IG9NZXRhTW9kZWwgPSBvQXBwQ29tcG9uZW50LmdldE1ldGFNb2RlbCgpO1xuXHRcdGNvbnN0IHNTdGFibGVJZCA9IGAke29BcHBDb21wb25lbnQuZ2V0TWV0YWRhdGEoKS5nZXRDb21wb25lbnROYW1lKCl9Ojoke29BcHBDb21wb25lbnQuZ2V0TG9jYWxJZChvQ29tcG9uZW50LmdldElkKCkpfWA7XG5cdFx0Y29uc3QgYUVuaGFuY2VJMThuID0gb0NvbXBvbmVudC5nZXRFbmhhbmNlSTE4bigpIHx8IFtdO1xuXHRcdGxldCBzQXBwTmFtZXNwYWNlO1xuXHRcdHRoaXMub0ZhY3RvcnkgPSBvQ29udGV4dC5mYWN0b3J5O1xuXHRcdGlmIChhRW5oYW5jZUkxOG4pIHtcblx0XHRcdHNBcHBOYW1lc3BhY2UgPSBvQXBwQ29tcG9uZW50LmdldE1ldGFkYXRhKCkuZ2V0Q29tcG9uZW50TmFtZSgpO1xuXHRcdFx0Zm9yIChsZXQgaSA9IDA7IGkgPCBhRW5oYW5jZUkxOG4ubGVuZ3RoOyBpKyspIHtcblx0XHRcdFx0Ly8gSW4gb3JkZXIgdG8gc3VwcG9ydCB0ZXh0LXZlcnRpY2FsaXphdGlvbiBhcHBsaWNhdGlvbnMgY2FuIGFsc28gcGFzc3MgYSByZXNvdXJjZSBtb2RlbCBkZWZpbmVkIGluIHRoZSBtYW5pZmVzdFxuXHRcdFx0XHQvLyBVSTUgdGFrZXMgY2FyZSBvZiB0ZXh0LXZlcnRpY2FsaXphdGlvbiBmb3IgcmVzb3VyY2UgbW9kZWxzIGRlZmluZWQgaW4gdGhlIG1hbmlmZXN0XG5cdFx0XHRcdC8vIEhlbmNlIGNoZWNrIGlmIHRoZSBnaXZlbiBrZXkgaXMgYSByZXNvdXJjZSBtb2RlbCBkZWZpbmVkIGluIHRoZSBtYW5pZmVzdFxuXHRcdFx0XHQvLyBpZiBzbyB0aGlzIG1vZGVsIHNob3VsZCBiZSB1c2VkIHRvIGVuaGFuY2UgdGhlIHNhcC5mZSByZXNvdXJjZSBtb2RlbCBzbyBwYXNzIGl0IGFzIGl0IGlzXG5cdFx0XHRcdGNvbnN0IG9SZXNvdXJjZU1vZGVsID0gb0FwcENvbXBvbmVudC5nZXRNb2RlbChhRW5oYW5jZUkxOG5baV0pO1xuXHRcdFx0XHRpZiAob1Jlc291cmNlTW9kZWwgJiYgb1Jlc291cmNlTW9kZWwuaXNBKFwic2FwLnVpLm1vZGVsLnJlc291cmNlLlJlc291cmNlTW9kZWxcIikpIHtcblx0XHRcdFx0XHRhRW5oYW5jZUkxOG5baV0gPSBvUmVzb3VyY2VNb2RlbDtcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRhRW5oYW5jZUkxOG5baV0gPSBgJHtzQXBwTmFtZXNwYWNlfS4ke2FFbmhhbmNlSTE4bltpXS5yZXBsYWNlKFwiLnByb3BlcnRpZXNcIiwgXCJcIil9YDtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblxuXHRcdGNvbnN0IHNDYWNoZUlkZW50aWZpZXIgPSBgJHtvQXBwQ29tcG9uZW50LmdldE1ldGFkYXRhKCkuZ2V0TmFtZSgpfV8ke3NTdGFibGVJZH1fJHtzYXAudWlcblx0XHRcdC5nZXRDb3JlKClcblx0XHRcdC5nZXRDb25maWd1cmF0aW9uKClcblx0XHRcdC5nZXRMYW5ndWFnZVRhZygpfWA7XG5cdFx0YVNlcnZpY2VEZXBlbmRlbmNpZXMucHVzaChcblx0XHRcdFNlcnZpY2VGYWN0b3J5UmVnaXN0cnkuZ2V0KFwic2FwLmZlLmNvcmUuc2VydmljZXMuUmVzb3VyY2VNb2RlbFNlcnZpY2VcIilcblx0XHRcdFx0LmNyZWF0ZUluc3RhbmNlKHtcblx0XHRcdFx0XHRzY29wZVR5cGU6IFwiY29tcG9uZW50XCIsXG5cdFx0XHRcdFx0c2NvcGVPYmplY3Q6IG9Db21wb25lbnQsXG5cdFx0XHRcdFx0c2V0dGluZ3M6IHtcblx0XHRcdFx0XHRcdGJ1bmRsZXM6IFtcInNhcC5mZS5jb3JlLm1lc3NhZ2VidW5kbGVcIiwgXCJzYXAuZmUubWFjcm9zLm1lc3NhZ2VidW5kbGVcIiwgXCJzYXAuZmUudGVtcGxhdGVzLm1lc3NhZ2VidW5kbGVcIl0sXG5cdFx0XHRcdFx0XHRlbmhhbmNlSTE4bjogYUVuaGFuY2VJMThuLFxuXHRcdFx0XHRcdFx0bW9kZWxOYW1lOiBcInNhcC5mZS5pMThuXCJcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0pXG5cdFx0XHRcdC50aGVuKChvUmVzb3VyY2VNb2RlbFNlcnZpY2U6IFJlc291cmNlTW9kZWxTZXJ2aWNlKSA9PiB7XG5cdFx0XHRcdFx0dGhpcy5vUmVzb3VyY2VNb2RlbFNlcnZpY2UgPSBvUmVzb3VyY2VNb2RlbFNlcnZpY2U7XG5cdFx0XHRcdFx0cmV0dXJuIG9SZXNvdXJjZU1vZGVsU2VydmljZS5nZXRSZXNvdXJjZU1vZGVsKCk7XG5cdFx0XHRcdH0pXG5cdFx0KTtcblxuXHRcdGFTZXJ2aWNlRGVwZW5kZW5jaWVzLnB1c2goXG5cdFx0XHRTZXJ2aWNlRmFjdG9yeVJlZ2lzdHJ5LmdldChcInNhcC5mZS5jb3JlLnNlcnZpY2VzLkNhY2hlSGFuZGxlclNlcnZpY2VcIilcblx0XHRcdFx0LmNyZWF0ZUluc3RhbmNlKHtcblx0XHRcdFx0XHRzZXR0aW5nczoge1xuXHRcdFx0XHRcdFx0bWV0YU1vZGVsOiBvTWV0YU1vZGVsLFxuXHRcdFx0XHRcdFx0YXBwQ29tcG9uZW50OiBvQXBwQ29tcG9uZW50LFxuXHRcdFx0XHRcdFx0Y29tcG9uZW50OiBvQ29tcG9uZW50XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9KVxuXHRcdFx0XHQudGhlbigob0NhY2hlSGFuZGxlclNlcnZpY2U6IGFueSkgPT4ge1xuXHRcdFx0XHRcdHRoaXMub0NhY2hlSGFuZGxlclNlcnZpY2UgPSBvQ2FjaGVIYW5kbGVyU2VydmljZTtcblx0XHRcdFx0XHRyZXR1cm4gb0NhY2hlSGFuZGxlclNlcnZpY2UudmFsaWRhdGVDYWNoZUtleShzQ2FjaGVJZGVudGlmaWVyKTtcblx0XHRcdFx0fSlcblx0XHQpO1xuXHRcdGFTZXJ2aWNlRGVwZW5kZW5jaWVzLnB1c2goXG5cdFx0XHQoVmVyc2lvbkluZm8gYXMgYW55KVxuXHRcdFx0XHQubG9hZCgpXG5cdFx0XHRcdC50aGVuKGZ1bmN0aW9uIChvSW5mbzogYW55KSB7XG5cdFx0XHRcdFx0bGV0IHNUaW1lc3RhbXAgPSBcIlwiO1xuXHRcdFx0XHRcdGlmICghb0luZm8ubGlicmFyaWVzKSB7XG5cdFx0XHRcdFx0XHRzVGltZXN0YW1wID0gKHNhcC51aSBhcyBhbnkpLmJ1aWxkaW5mby5idWlsZHRpbWU7XG5cdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdG9JbmZvLmxpYnJhcmllcy5mb3JFYWNoKGZ1bmN0aW9uIChvTGlicmFyeTogYW55KSB7XG5cdFx0XHRcdFx0XHRcdHNUaW1lc3RhbXAgKz0gb0xpYnJhcnkuYnVpbGRUaW1lc3RhbXA7XG5cdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0cmV0dXJuIHNUaW1lc3RhbXA7XG5cdFx0XHRcdH0pXG5cdFx0XHRcdC5jYXRjaChmdW5jdGlvbiAoKSB7XG5cdFx0XHRcdFx0cmV0dXJuIFwiPE5PVkFMVUU+XCI7XG5cdFx0XHRcdH0pXG5cdFx0KTtcblxuXHRcdGxldCBzUGFnZU1vZGVsQ2FjaGVLZXk6IHN0cmluZyB8IHVuZGVmaW5lZDtcblx0XHR0aGlzLmluaXRQcm9taXNlID0gUHJvbWlzZS5hbGwoYVNlcnZpY2VEZXBlbmRlbmNpZXMpXG5cdFx0XHQudGhlbigoYURlcGVuZGVuY2llc1Jlc3VsdDogYW55W10pID0+IHtcblx0XHRcdFx0Y29uc3Qgc0NhY2hlS2V5ID0gYURlcGVuZGVuY2llc1Jlc3VsdFsxXTtcblx0XHRcdFx0Y29uc3Qgc1ZlcnNpb25JbmZvID0gYURlcGVuZGVuY2llc1Jlc3VsdFsyXTtcblx0XHRcdFx0Y29uc3Qgb1NoZWxsU2VydmljZXMgPSBvQXBwQ29tcG9uZW50LmdldFNoZWxsU2VydmljZXMoKTtcblx0XHRcdFx0Y29uc3Qgb1NpZGVFZmZlY3RzU2VydmljZXMgPSBvQXBwQ29tcG9uZW50LmdldFNpZGVFZmZlY3RzU2VydmljZSgpO1xuXG5cdFx0XHRcdG9TaWRlRWZmZWN0c1NlcnZpY2VzLmluaXRpYWxpemVTaWRlRWZmZWN0cyhvQXBwQ29tcG9uZW50LmdldEVudmlyb25tZW50Q2FwYWJpbGl0aWVzKCkuZ2V0Q2FwYWJpbGl0aWVzKCkpO1xuXG5cdFx0XHRcdC8vIEluIGNhc2UgdGhlcmUgaXMgbm8gY2FjaGUga2V5IHdlIGlnbm9yZSB0aGUgdmlldyBjYWNoZVxuXHRcdFx0XHRzUGFnZU1vZGVsQ2FjaGVLZXkgPSBzQ2FjaGVLZXlcblx0XHRcdFx0XHQ/IGAke3NDYWNoZUtleX0tJHtzVmVyc2lvbkluZm99LSR7c1N0YWJsZUlkfS0ke29TaGVsbFNlcnZpY2VzLmluc3RhbmNlVHlwZX0tcGFnZU1vZGVsYFxuXHRcdFx0XHRcdDogdW5kZWZpbmVkO1xuXHRcdFx0XHRyZXR1cm4gUHJvbWlzZS5hbGwoYURlcGVuZGVuY2llc1Jlc3VsdC5jb25jYXQoW3RoaXMuX2dldENhY2hlZE1vZGVsKHNQYWdlTW9kZWxDYWNoZUtleSldKSk7XG5cdFx0XHR9KVxuXHRcdFx0LnRoZW4oKGFEZXBlbmRlbmNpZXNSZXN1bHQ6IGFueVtdKSA9PiB7XG5cdFx0XHRcdGNvbnN0IG9SZXNvdXJjZU1vZGVsID0gYURlcGVuZGVuY2llc1Jlc3VsdFswXTtcblx0XHRcdFx0Y29uc3Qgc0NhY2hlS2V5ID0gYURlcGVuZGVuY2llc1Jlc3VsdFsxXTtcblx0XHRcdFx0Y29uc3Qgb1BhZ2VNb2RlbENhY2hlID0gYURlcGVuZGVuY2llc1Jlc3VsdFszXTtcblx0XHRcdFx0cmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiB7XG5cdFx0XHRcdFx0c2FwLnVpLnJlcXVpcmUoXG5cdFx0XHRcdFx0XHRbXCJzYXAvZmUvY29yZS9jb252ZXJ0ZXJzL1RlbXBsYXRlQ29udmVydGVyXCIsIFwic2FwL2ZlL2NvcmUvY29udmVydGVycy9NZXRhTW9kZWxDb252ZXJ0ZXJcIl0sXG5cdFx0XHRcdFx0XHQoVGVtcGxhdGVDb252ZXJ0ZXI6IGFueSwgTWV0YU1vZGVsQ29udmVydGVyOiBhbnkpID0+IHtcblx0XHRcdFx0XHRcdFx0cmVzb2x2ZShcblx0XHRcdFx0XHRcdFx0XHR0aGlzLmNyZWF0ZVZpZXcoXG5cdFx0XHRcdFx0XHRcdFx0XHRvUmVzb3VyY2VNb2RlbCxcblx0XHRcdFx0XHRcdFx0XHRcdHNTdGFibGVJZCxcblx0XHRcdFx0XHRcdFx0XHRcdHNDYWNoZUtleSxcblx0XHRcdFx0XHRcdFx0XHRcdHNQYWdlTW9kZWxDYWNoZUtleSxcblx0XHRcdFx0XHRcdFx0XHRcdG9QYWdlTW9kZWxDYWNoZSxcblx0XHRcdFx0XHRcdFx0XHRcdFRlbXBsYXRlQ29udmVydGVyLFxuXHRcdFx0XHRcdFx0XHRcdFx0TWV0YU1vZGVsQ29udmVydGVyXG5cdFx0XHRcdFx0XHRcdFx0KVxuXHRcdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdCk7XG5cdFx0XHRcdH0pO1xuXHRcdFx0fSlcblx0XHRcdC50aGVuKGZ1bmN0aW9uIChzQ2FjaGVLZXk6IGFueSkge1xuXHRcdFx0XHRjb25zdCBvQ2FjaGVIYW5kbGVyU2VydmljZSA9IFNlcnZpY2VGYWN0b3J5UmVnaXN0cnkuZ2V0KFwic2FwLmZlLmNvcmUuc2VydmljZXMuQ2FjaGVIYW5kbGVyU2VydmljZVwiKS5nZXRJbnN0YW5jZShvTWV0YU1vZGVsKTtcblx0XHRcdFx0b0NhY2hlSGFuZGxlclNlcnZpY2UuaW52YWxpZGF0ZUlmTmVlZGVkKHNDYWNoZUtleSwgc0NhY2hlSWRlbnRpZmllcik7XG5cdFx0XHR9KTtcblx0fVxuXHRfZ2V0Q2FjaGVkTW9kZWwoc0NhY2hlS2V5OiBzdHJpbmcgfCB1bmRlZmluZWQpIHtcblx0XHRpZiAoc0NhY2hlS2V5ICYmIChDb3JlIGFzIENvcmVFeCkuZ2V0Q29uZmlndXJhdGlvbigpLmdldFZpZXdDYWNoZSgpKSB7XG5cdFx0XHRyZXR1cm4gQ2FjaGVNYW5hZ2VyLmdldChzQ2FjaGVLZXkpO1xuXHRcdH1cblx0XHRyZXR1cm4gdW5kZWZpbmVkO1xuXHR9XG5cdF9zZXRDYWNoZWRNb2RlbChzQ2FjaGVLZXk6IHN0cmluZyB8IHVuZGVmaW5lZCwgb0NhY2hlTW9kZWw6IGFueSkge1xuXHRcdGlmIChzQ2FjaGVLZXkgJiYgKENvcmUgYXMgQ29yZUV4KS5nZXRDb25maWd1cmF0aW9uKCkuZ2V0Vmlld0NhY2hlKCkpIHtcblx0XHRcdENhY2hlTWFuYWdlci5zZXQoc0NhY2hlS2V5LCBvQ2FjaGVNb2RlbCk7XG5cdFx0fVxuXHRcdHJldHVybiB1bmRlZmluZWQ7XG5cdH1cblx0LyoqXG5cdCAqIFJlZnJlc2ggdGhlIGN1cnJlbnQgdmlldyB1c2luZyB0aGUgc2FtZSBjb25maWd1cmF0aW9uIGFzIGJlZm9yZS5cblx0ICogVGhpcyBpcyB1c2VmdWwgZm9yIG91ciBkZW1va2l0ICFcblx0ICpcblx0ICogQHBhcmFtIG9Db21wb25lbnRcblx0ICogQHJldHVybnMgQSBwcm9taXNlIGluZGljYXRpbmcgd2hlbiB0aGUgdmlldyBpcyByZWZyZXNoZWRcblx0ICogQHByaXZhdGVcblx0ICovXG5cdHJlZnJlc2hWaWV3KG9Db21wb25lbnQ6IGFueSkge1xuXHRcdGNvbnN0IG9Sb290VmlldyA9IG9Db21wb25lbnQuZ2V0Um9vdENvbnRyb2woKTtcblx0XHRpZiAob1Jvb3RWaWV3KSB7XG5cdFx0XHRvUm9vdFZpZXcuZGVzdHJveSgpO1xuXHRcdH0gZWxzZSBpZiAodGhpcy5vVmlldykge1xuXHRcdFx0dGhpcy5vVmlldy5kZXN0cm95KCk7XG5cdFx0fVxuXHRcdHJldHVybiB0aGlzLmNyZWF0ZVZpZXcodGhpcy5yZXNvdXJjZU1vZGVsLCB0aGlzLnN0YWJsZUlkLCBcIlwiLCBcIlwiLCB1bmRlZmluZWQsIHRoaXMuVGVtcGxhdGVDb252ZXJ0ZXIsIHRoaXMuTWV0YU1vZGVsQ29udmVydGVyKVxuXHRcdFx0LnRoZW4oZnVuY3Rpb24gKCkge1xuXHRcdFx0XHRvQ29tcG9uZW50Lm9Db250YWluZXIuaW52YWxpZGF0ZSgpO1xuXHRcdFx0fSlcblx0XHRcdC5jYXRjaChmdW5jdGlvbiAob0Vycm9yOiBhbnkpIHtcblx0XHRcdFx0b0NvbXBvbmVudC5vQ29udGFpbmVyLmludmFsaWRhdGUoKTtcblx0XHRcdFx0TG9nLmVycm9yKG9FcnJvcik7XG5cdFx0XHR9KTtcblx0fVxuXHRjcmVhdGVWaWV3KFxuXHRcdG9SZXNvdXJjZU1vZGVsOiBhbnksXG5cdFx0c1N0YWJsZUlkOiBhbnksXG5cdFx0c0NhY2hlS2V5OiBhbnksXG5cdFx0c1BhZ2VNb2RlbENhY2hlS2V5OiBzdHJpbmcgfCB1bmRlZmluZWQsXG5cdFx0b1BhZ2VNb2RlbENhY2hlOiBhbnksXG5cdFx0VGVtcGxhdGVDb252ZXJ0ZXI6IGFueSxcblx0XHRNZXRhTW9kZWxDb252ZXJ0ZXI6IGFueVxuXHQpIHtcblx0XHR0aGlzLnJlc291cmNlTW9kZWwgPSBvUmVzb3VyY2VNb2RlbDtcblx0XHR0aGlzLnN0YWJsZUlkID0gc1N0YWJsZUlkO1xuXHRcdHRoaXMuVGVtcGxhdGVDb252ZXJ0ZXIgPSBUZW1wbGF0ZUNvbnZlcnRlcjtcblx0XHR0aGlzLk1ldGFNb2RlbENvbnZlcnRlciA9IE1ldGFNb2RlbENvbnZlcnRlcjtcblx0XHRjb25zdCBvQ29udGV4dCA9IHRoaXMuZ2V0Q29udGV4dCgpO1xuXHRcdGNvbnN0IG1TZXJ2aWNlU2V0dGluZ3MgPSBvQ29udGV4dC5zZXR0aW5ncztcblx0XHRjb25zdCBzQ29udmVydGVyVHlwZSA9IG1TZXJ2aWNlU2V0dGluZ3MuY29udmVydGVyVHlwZTtcblx0XHRjb25zdCBvQ29tcG9uZW50ID0gb0NvbnRleHQuc2NvcGVPYmplY3Q7XG5cdFx0Y29uc3Qgb0FwcENvbXBvbmVudDogQXBwQ29tcG9uZW50ID0gQ29tcG9uZW50LmdldE93bmVyQ29tcG9uZW50Rm9yKG9Db21wb25lbnQpIGFzIEFwcENvbXBvbmVudDtcblx0XHRjb25zdCBzRnVsbENvbnRleHRQYXRoID0gb0FwcENvbXBvbmVudC5nZXRSb3V0aW5nU2VydmljZSgpLmdldFRhcmdldEluZm9ybWF0aW9uRm9yKG9Db21wb25lbnQpLm9wdGlvbnMuc2V0dGluZ3MuZnVsbENvbnRleHRQYXRoO1xuXHRcdGNvbnN0IG9NZXRhTW9kZWwgPSBvQXBwQ29tcG9uZW50LmdldE1ldGFNb2RlbCgpO1xuXHRcdGNvbnN0IG9NYW5pZmVzdENvbnRlbnQ6IGFueSA9IG9BcHBDb21wb25lbnQuZ2V0TWFuaWZlc3QoKTtcblx0XHRjb25zdCBvRGV2aWNlTW9kZWwgPSBuZXcgSlNPTk1vZGVsKERldmljZSkuc2V0RGVmYXVsdEJpbmRpbmdNb2RlKFwiT25lV2F5XCIpO1xuXHRcdGNvbnN0IG9NYW5pZmVzdE1vZGVsID0gbmV3IEpTT05Nb2RlbChvTWFuaWZlc3RDb250ZW50KTtcblx0XHRjb25zdCBiRXJyb3IgPSBmYWxzZTtcblx0XHRsZXQgb1BhZ2VNb2RlbDogVGVtcGxhdGVNb2RlbCwgb1ZpZXdEYXRhTW9kZWw6IE1vZGVsLCBvVmlld1NldHRpbmdzOiBhbnksIG1WaWV3RGF0YTogYW55O1xuXG5cdFx0ZnVuY3Rpb24gZ2V0Vmlld1NldHRpbmdzKCkge1xuXHRcdFx0Y29uc3QgYVNwbGl0UGF0aCA9IHNGdWxsQ29udGV4dFBhdGguc3BsaXQoXCIvXCIpO1xuXHRcdFx0Y29uc3Qgc0VudGl0eVNldFBhdGggPSBhU3BsaXRQYXRoLnJlZHVjZShmdW5jdGlvbiAoc1BhdGhTb0ZhcjogYW55LCBzTmV4dFBhdGhQYXJ0OiBhbnkpIHtcblx0XHRcdFx0aWYgKHNOZXh0UGF0aFBhcnQgPT09IFwiXCIpIHtcblx0XHRcdFx0XHRyZXR1cm4gc1BhdGhTb0Zhcjtcblx0XHRcdFx0fVxuXHRcdFx0XHRpZiAoc1BhdGhTb0ZhciA9PT0gXCJcIikge1xuXHRcdFx0XHRcdHNQYXRoU29GYXIgPSBgLyR7c05leHRQYXRoUGFydH1gO1xuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdGNvbnN0IG9UYXJnZXQgPSBvTWV0YU1vZGVsLmdldE9iamVjdChgJHtzUGF0aFNvRmFyfS8kTmF2aWdhdGlvblByb3BlcnR5QmluZGluZy8ke3NOZXh0UGF0aFBhcnR9YCk7XG5cdFx0XHRcdFx0aWYgKG9UYXJnZXQgJiYgT2JqZWN0LmtleXMob1RhcmdldCkubGVuZ3RoID4gMCkge1xuXHRcdFx0XHRcdFx0c1BhdGhTb0ZhciArPSBcIi8kTmF2aWdhdGlvblByb3BlcnR5QmluZGluZ1wiO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRzUGF0aFNvRmFyICs9IGAvJHtzTmV4dFBhdGhQYXJ0fWA7XG5cdFx0XHRcdH1cblx0XHRcdFx0cmV0dXJuIHNQYXRoU29GYXI7XG5cdFx0XHR9LCBcIlwiKTtcblx0XHRcdHJldHVybiB7XG5cdFx0XHRcdHR5cGU6IFwiWE1MXCIsXG5cdFx0XHRcdHByZXByb2Nlc3NvcnM6IHtcblx0XHRcdFx0XHR4bWw6IHtcblx0XHRcdFx0XHRcdGJpbmRpbmdDb250ZXh0czoge1xuXHRcdFx0XHRcdFx0XHRlbnRpdHlTZXQ6IHNFbnRpdHlTZXRQYXRoID8gb01ldGFNb2RlbC5jcmVhdGVCaW5kaW5nQ29udGV4dChzRW50aXR5U2V0UGF0aCkgOiBudWxsLFxuXHRcdFx0XHRcdFx0XHRmdWxsQ29udGV4dFBhdGg6IHNGdWxsQ29udGV4dFBhdGggPyBvTWV0YU1vZGVsLmNyZWF0ZUJpbmRpbmdDb250ZXh0KHNGdWxsQ29udGV4dFBhdGgpIDogbnVsbCxcblx0XHRcdFx0XHRcdFx0Y29udGV4dFBhdGg6IHNGdWxsQ29udGV4dFBhdGggPyBvTWV0YU1vZGVsLmNyZWF0ZUJpbmRpbmdDb250ZXh0KHNGdWxsQ29udGV4dFBhdGgpIDogbnVsbCxcblx0XHRcdFx0XHRcdFx0Y29udmVydGVyQ29udGV4dDogb1BhZ2VNb2RlbC5jcmVhdGVCaW5kaW5nQ29udGV4dChcIi9cIiwgdW5kZWZpbmVkLCB7IG5vUmVzb2x2ZTogdHJ1ZSB9KSxcblx0XHRcdFx0XHRcdFx0dmlld0RhdGE6IG1WaWV3RGF0YSA/IG9WaWV3RGF0YU1vZGVsLmNyZWF0ZUJpbmRpbmdDb250ZXh0KFwiL1wiKSA6IG51bGxcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRtb2RlbHM6IHtcblx0XHRcdFx0XHRcdFx0ZW50aXR5U2V0OiBvTWV0YU1vZGVsLFxuXHRcdFx0XHRcdFx0XHRmdWxsQ29udGV4dFBhdGg6IG9NZXRhTW9kZWwsXG5cdFx0XHRcdFx0XHRcdGNvbnRleHRQYXRoOiBvTWV0YU1vZGVsLFxuXHRcdFx0XHRcdFx0XHRcInNhcC5mZS5pMThuXCI6IG9SZXNvdXJjZU1vZGVsLFxuXHRcdFx0XHRcdFx0XHRtZXRhTW9kZWw6IG9NZXRhTW9kZWwsXG5cdFx0XHRcdFx0XHRcdFwiZGV2aWNlXCI6IG9EZXZpY2VNb2RlbCxcblx0XHRcdFx0XHRcdFx0bWFuaWZlc3Q6IG9NYW5pZmVzdE1vZGVsLFxuXHRcdFx0XHRcdFx0XHRjb252ZXJ0ZXJDb250ZXh0OiBvUGFnZU1vZGVsLFxuXHRcdFx0XHRcdFx0XHR2aWV3RGF0YTogb1ZpZXdEYXRhTW9kZWxcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRhcHBDb21wb25lbnQ6IG9BcHBDb21wb25lbnRcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0sXG5cdFx0XHRcdGlkOiBzU3RhYmxlSWQsXG5cdFx0XHRcdHZpZXdOYW1lOiBtU2VydmljZVNldHRpbmdzLnZpZXdOYW1lIHx8IG9Db21wb25lbnQuZ2V0Vmlld05hbWUoKSxcblx0XHRcdFx0dmlld0RhdGE6IG1WaWV3RGF0YSxcblx0XHRcdFx0Y2FjaGU6IHsga2V5czogW3NDYWNoZUtleV0gfSxcblx0XHRcdFx0bW9kZWxzOiB7XG5cdFx0XHRcdFx0XCJzYXAuZmUuaTE4blwiOiBvUmVzb3VyY2VNb2RlbFxuXHRcdFx0XHR9LFxuXHRcdFx0XHRoZWlnaHQ6IFwiMTAwJVwiXG5cdFx0XHR9O1xuXHRcdH1cblx0XHRjb25zdCBjcmVhdGVFcnJvclBhZ2UgPSAocmVhc29uOiBhbnkpID0+IHtcblx0XHRcdC8vIGp1c3QgcmVwbGFjZSB0aGUgdmlldyBuYW1lIGFuZCBhZGQgYW4gYWRkaXRpb25hbCBtb2RlbCBjb250YWluaW5nIHRoZSByZWFzb24sIGJ1dFxuXHRcdFx0Ly8ga2VlcCB0aGUgb3RoZXIgc2V0dGluZ3Ncblx0XHRcdExvZy5lcnJvcihyZWFzb24ubWVzc2FnZSwgcmVhc29uKTtcblx0XHRcdG9WaWV3U2V0dGluZ3Mudmlld05hbWUgPSBtU2VydmljZVNldHRpbmdzLmVycm9yVmlld05hbWUgfHwgXCJzYXAuZmUuY29yZS5zZXJ2aWNlcy52aWV3LlRlbXBsYXRpbmdFcnJvclBhZ2VcIjtcblx0XHRcdG9WaWV3U2V0dGluZ3MucHJlcHJvY2Vzc29ycy54bWwubW9kZWxzW1wiZXJyb3JcIl0gPSBuZXcgSlNPTk1vZGVsKHJlYXNvbik7XG5cblx0XHRcdHJldHVybiBvQ29tcG9uZW50LnJ1bkFzT3duZXIoKCkgPT4ge1xuXHRcdFx0XHRyZXR1cm4gVmlldy5jcmVhdGUob1ZpZXdTZXR0aW5ncykudGhlbigob1ZpZXc6IGFueSkgPT4ge1xuXHRcdFx0XHRcdHRoaXMub1ZpZXcgPSBvVmlldztcblx0XHRcdFx0XHR0aGlzLm9WaWV3LnNldE1vZGVsKG5ldyBNYW5hZ2VkT2JqZWN0TW9kZWwodGhpcy5vVmlldyksIFwiJHZpZXdcIik7XG5cdFx0XHRcdFx0b0NvbXBvbmVudC5zZXRBZ2dyZWdhdGlvbihcInJvb3RDb250cm9sXCIsIHRoaXMub1ZpZXcpO1xuXHRcdFx0XHRcdHJldHVybiBzQ2FjaGVLZXk7XG5cdFx0XHRcdH0pO1xuXHRcdFx0fSk7XG5cdFx0fTtcblx0XHRyZXR1cm4gb0FwcENvbXBvbmVudFxuXHRcdFx0LmdldFNlcnZpY2UoXCJyb3V0aW5nU2VydmljZVwiKVxuXHRcdFx0LnRoZW4oKG9Sb3V0aW5nU2VydmljZTogYW55KSA9PiB7XG5cdFx0XHRcdC8vIFJldHJpZXZlIHRoZSB2aWV3TGV2ZWwgZm9yIHRoZSBjb21wb25lbnRcblx0XHRcdFx0Y29uc3Qgb1RhcmdldEluZm8gPSBvUm91dGluZ1NlcnZpY2UuZ2V0VGFyZ2V0SW5mb3JtYXRpb25Gb3Iob0NvbXBvbmVudCk7XG5cdFx0XHRcdGNvbnN0IG1PdXRib3VuZHMgPVxuXHRcdFx0XHRcdG9NYW5pZmVzdENvbnRlbnRbXCJzYXAuYXBwXCJdICYmXG5cdFx0XHRcdFx0b01hbmlmZXN0Q29udGVudFtcInNhcC5hcHBcIl0uY3Jvc3NOYXZpZ2F0aW9uICYmXG5cdFx0XHRcdFx0b01hbmlmZXN0Q29udGVudFtcInNhcC5hcHBcIl0uY3Jvc3NOYXZpZ2F0aW9uLm91dGJvdW5kcztcblx0XHRcdFx0Y29uc3QgbU5hdmlnYXRpb24gPSBvQ29tcG9uZW50LmdldE5hdmlnYXRpb24oKSB8fCB7fTtcblx0XHRcdFx0T2JqZWN0LmtleXMobU5hdmlnYXRpb24pLmZvckVhY2goZnVuY3Rpb24gKG5hdmlnYXRpb25PYmplY3RLZXk6IHN0cmluZykge1xuXHRcdFx0XHRcdGNvbnN0IG5hdmlnYXRpb25PYmplY3QgPSBtTmF2aWdhdGlvbltuYXZpZ2F0aW9uT2JqZWN0S2V5XTtcblx0XHRcdFx0XHRsZXQgb3V0Ym91bmRDb25maWc7XG5cdFx0XHRcdFx0aWYgKG5hdmlnYXRpb25PYmplY3QuZGV0YWlsICYmIG5hdmlnYXRpb25PYmplY3QuZGV0YWlsLm91dGJvdW5kICYmIG1PdXRib3VuZHNbbmF2aWdhdGlvbk9iamVjdC5kZXRhaWwub3V0Ym91bmRdKSB7XG5cdFx0XHRcdFx0XHRvdXRib3VuZENvbmZpZyA9IG1PdXRib3VuZHNbbmF2aWdhdGlvbk9iamVjdC5kZXRhaWwub3V0Ym91bmRdO1xuXHRcdFx0XHRcdFx0bmF2aWdhdGlvbk9iamVjdC5kZXRhaWwub3V0Ym91bmREZXRhaWwgPSB7XG5cdFx0XHRcdFx0XHRcdHNlbWFudGljT2JqZWN0OiBvdXRib3VuZENvbmZpZy5zZW1hbnRpY09iamVjdCxcblx0XHRcdFx0XHRcdFx0YWN0aW9uOiBvdXRib3VuZENvbmZpZy5hY3Rpb24sXG5cdFx0XHRcdFx0XHRcdHBhcmFtZXRlcnM6IG91dGJvdW5kQ29uZmlnLnBhcmFtZXRlcnNcblx0XHRcdFx0XHRcdH07XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdGlmIChuYXZpZ2F0aW9uT2JqZWN0LmNyZWF0ZSAmJiBuYXZpZ2F0aW9uT2JqZWN0LmNyZWF0ZS5vdXRib3VuZCAmJiBtT3V0Ym91bmRzW25hdmlnYXRpb25PYmplY3QuY3JlYXRlLm91dGJvdW5kXSkge1xuXHRcdFx0XHRcdFx0b3V0Ym91bmRDb25maWcgPSBtT3V0Ym91bmRzW25hdmlnYXRpb25PYmplY3QuY3JlYXRlLm91dGJvdW5kXTtcblx0XHRcdFx0XHRcdG5hdmlnYXRpb25PYmplY3QuY3JlYXRlLm91dGJvdW5kRGV0YWlsID0ge1xuXHRcdFx0XHRcdFx0XHRzZW1hbnRpY09iamVjdDogb3V0Ym91bmRDb25maWcuc2VtYW50aWNPYmplY3QsXG5cdFx0XHRcdFx0XHRcdGFjdGlvbjogb3V0Ym91bmRDb25maWcuYWN0aW9uLFxuXHRcdFx0XHRcdFx0XHRwYXJhbWV0ZXJzOiBvdXRib3VuZENvbmZpZy5wYXJhbWV0ZXJzXG5cdFx0XHRcdFx0XHR9O1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSk7XG5cdFx0XHRcdG1WaWV3RGF0YSA9IHtcblx0XHRcdFx0XHRuYXZpZ2F0aW9uOiBtTmF2aWdhdGlvbixcblx0XHRcdFx0XHR2aWV3TGV2ZWw6IG9UYXJnZXRJbmZvLnZpZXdMZXZlbCxcblx0XHRcdFx0XHRzdGFibGVJZDogc1N0YWJsZUlkLFxuXHRcdFx0XHRcdGNvbnRlbnREZW5zaXRpZXM6IG9NYW5pZmVzdENvbnRlbnRbXCJzYXAudWk1XCJdLmNvbnRlbnREZW5zaXRpZXMsXG5cdFx0XHRcdFx0cmVzb3VyY2VCdW5kbGU6IG9SZXNvdXJjZU1vZGVsLl9fYnVuZGxlLFxuXHRcdFx0XHRcdGZ1bGxDb250ZXh0UGF0aDogc0Z1bGxDb250ZXh0UGF0aCxcblx0XHRcdFx0XHRpc0Rlc2t0b3A6IChEZXZpY2UgYXMgYW55KS5zeXN0ZW0uZGVza3RvcCxcblx0XHRcdFx0XHRpc1Bob25lOiAoRGV2aWNlIGFzIGFueSkuc3lzdGVtLnBob25lXG5cdFx0XHRcdH07XG5cblx0XHRcdFx0aWYgKG9Db21wb25lbnQuZ2V0Vmlld0RhdGEpIHtcblx0XHRcdFx0XHRPYmplY3QuYXNzaWduKG1WaWV3RGF0YSwgb0NvbXBvbmVudC5nZXRWaWV3RGF0YSgpKTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdGNvbnN0IG9TaGVsbFNlcnZpY2VzID0gb0FwcENvbXBvbmVudC5nZXRTaGVsbFNlcnZpY2VzKCk7XG5cdFx0XHRcdG1WaWV3RGF0YS5jb252ZXJ0ZXJUeXBlID0gc0NvbnZlcnRlclR5cGU7XG5cdFx0XHRcdG1WaWV3RGF0YS5zaGVsbENvbnRlbnREZW5zaXR5ID0gb1NoZWxsU2VydmljZXMuZ2V0Q29udGVudERlbnNpdHkoKTtcblx0XHRcdFx0bVZpZXdEYXRhLnVzZU5ld0xhenlMb2FkaW5nID0gVXJpUGFyYW1ldGVycy5mcm9tUXVlcnkod2luZG93LmxvY2F0aW9uLnNlYXJjaCkuZ2V0KFwic2FwLWZlLXh4LWxhenlsb2FkaW5ndGVzdFwiKSA9PT0gXCJ0cnVlXCI7XG5cdFx0XHRcdG1WaWV3RGF0YS5yZXRyaWV2ZVRleHRGcm9tVmFsdWVMaXN0ID1cblx0XHRcdFx0XHRvTWFuaWZlc3RDb250ZW50W1wic2FwLmZlXCJdICYmIG9NYW5pZmVzdENvbnRlbnRbXCJzYXAuZmVcIl0uZm9ybVxuXHRcdFx0XHRcdFx0PyBvTWFuaWZlc3RDb250ZW50W1wic2FwLmZlXCJdLmZvcm0ucmV0cmlldmVUZXh0RnJvbVZhbHVlTGlzdFxuXHRcdFx0XHRcdFx0OiB1bmRlZmluZWQ7XG5cdFx0XHRcdC8vIFx0VGhlIG1hbmlmZXN0IHN3aXRjaCBmb3IgdGhlIHVzYWdlIG9mIHRoZSBuZXcgVmFsdWVIZWxwIHNob3VsZCBvbmx5IHVzZWQgaW50ZXJuYWxseVxuXHRcdFx0XHRtVmlld0RhdGEuX3VzZU5ld1ZhbHVlSGVscCA9XG5cdFx0XHRcdFx0b01hbmlmZXN0Q29udGVudFtcInNhcC5mZVwiXSAmJiBvTWFuaWZlc3RDb250ZW50W1wic2FwLmZlXCJdLmFwcFxuXHRcdFx0XHRcdFx0PyBvTWFuaWZlc3RDb250ZW50W1wic2FwLmZlXCJdLmFwcC5fdXNlTmV3VmFsdWVIZWxwXG5cdFx0XHRcdFx0XHQ6IHVuZGVmaW5lZDtcblx0XHRcdFx0b1ZpZXdEYXRhTW9kZWwgPSBuZXcgSlNPTk1vZGVsKG1WaWV3RGF0YSk7XG5cdFx0XHRcdGlmIChtVmlld0RhdGEgJiYgbVZpZXdEYXRhLmNvbnRyb2xDb25maWd1cmF0aW9uKSB7XG5cdFx0XHRcdFx0T2JqZWN0LmtleXMobVZpZXdEYXRhLmNvbnRyb2xDb25maWd1cmF0aW9uKS5mb3JFYWNoKGZ1bmN0aW9uIChzQW5ub3RhdGlvblBhdGg6IHN0cmluZykge1xuXHRcdFx0XHRcdFx0aWYgKHNBbm5vdGF0aW9uUGF0aC5pbmRleE9mKFwiW1wiKSAhPT0gLTEpIHtcblx0XHRcdFx0XHRcdFx0Y29uc3Qgc1RhcmdldEFubm90YXRpb25QYXRoID0gcmVzb2x2ZUR5bmFtaWNFeHByZXNzaW9uKHNBbm5vdGF0aW9uUGF0aCwgb01ldGFNb2RlbCk7XG5cdFx0XHRcdFx0XHRcdG1WaWV3RGF0YS5jb250cm9sQ29uZmlndXJhdGlvbltzVGFyZ2V0QW5ub3RhdGlvblBhdGhdID0gbVZpZXdEYXRhLmNvbnRyb2xDb25maWd1cmF0aW9uW3NBbm5vdGF0aW9uUGF0aF07XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fSk7XG5cdFx0XHRcdH1cblx0XHRcdFx0TWV0YU1vZGVsQ29udmVydGVyLmNvbnZlcnRUeXBlcyhvTWV0YU1vZGVsLCBvQXBwQ29tcG9uZW50LmdldEVudmlyb25tZW50Q2FwYWJpbGl0aWVzKCkuZ2V0Q2FwYWJpbGl0aWVzKCkpO1xuXHRcdFx0XHRvUGFnZU1vZGVsID0gbmV3IFRlbXBsYXRlTW9kZWwoKCkgPT4ge1xuXHRcdFx0XHRcdHRyeSB7XG5cdFx0XHRcdFx0XHRpZiAob1BhZ2VNb2RlbENhY2hlKSB7XG5cdFx0XHRcdFx0XHRcdHJldHVybiBvUGFnZU1vZGVsQ2FjaGU7XG5cdFx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0XHRjb25zdCBvRGlhZ25vc3RpY3MgPSBvQXBwQ29tcG9uZW50LmdldERpYWdub3N0aWNzKCk7XG5cdFx0XHRcdFx0XHRcdGNvbnN0IGlJc3N1ZUNvdW50ID0gb0RpYWdub3N0aWNzLmdldElzc3VlcygpLmxlbmd0aDtcblx0XHRcdFx0XHRcdFx0Y29uc3Qgb0NvbnZlcnRlclBhZ2VNb2RlbCA9IFRlbXBsYXRlQ29udmVydGVyLmNvbnZlcnRQYWdlKFxuXHRcdFx0XHRcdFx0XHRcdHNDb252ZXJ0ZXJUeXBlLFxuXHRcdFx0XHRcdFx0XHRcdG9NZXRhTW9kZWwsXG5cdFx0XHRcdFx0XHRcdFx0bVZpZXdEYXRhLFxuXHRcdFx0XHRcdFx0XHRcdG9EaWFnbm9zdGljcyxcblx0XHRcdFx0XHRcdFx0XHRzRnVsbENvbnRleHRQYXRoLFxuXHRcdFx0XHRcdFx0XHRcdG9BcHBDb21wb25lbnQuZ2V0RW52aXJvbm1lbnRDYXBhYmlsaXRpZXMoKS5nZXRDYXBhYmlsaXRpZXMoKVxuXHRcdFx0XHRcdFx0XHQpO1xuXG5cdFx0XHRcdFx0XHRcdGNvbnN0IGFJc3N1ZXMgPSBvRGlhZ25vc3RpY3MuZ2V0SXNzdWVzKCk7XG5cdFx0XHRcdFx0XHRcdGNvbnN0IGFBZGRlZElzc3VlcyA9IGFJc3N1ZXMuc2xpY2UoaUlzc3VlQ291bnQpO1xuXHRcdFx0XHRcdFx0XHRpZiAoYUFkZGVkSXNzdWVzLmxlbmd0aCA+IDApIHtcblx0XHRcdFx0XHRcdFx0XHRMb2cud2FybmluZyhcblx0XHRcdFx0XHRcdFx0XHRcdFwiU29tZSBpc3N1ZXMgaGF2ZSBiZWVuIGRldGVjdGVkIGluIHlvdXIgcHJvamVjdCwgcGxlYXNlIGNoZWNrIHRoZSBVSTUgc3VwcG9ydCBhc3Npc3RhbnQgcnVsZSBmb3Igc2FwLmZlLmNvcmVcIlxuXHRcdFx0XHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0cmV0dXJuIG9Db252ZXJ0ZXJQYWdlTW9kZWw7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fSBjYXRjaCAoZXJyb3IpIHtcblx0XHRcdFx0XHRcdExvZy5lcnJvcihlcnJvciBhcyBhbnksIGVycm9yIGFzIGFueSk7XG5cdFx0XHRcdFx0XHRyZXR1cm4ge307XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9LCBvTWV0YU1vZGVsKTtcblxuXHRcdFx0XHRpZiAoIWJFcnJvcikge1xuXHRcdFx0XHRcdG9WaWV3U2V0dGluZ3MgPSBnZXRWaWV3U2V0dGluZ3MoKTtcblx0XHRcdFx0XHQvLyBTZXR0aW5nIHRoZSBwYWdlTW9kZWwgb24gdGhlIGNvbXBvbmVudCBmb3IgcG90ZW50aWFsIHJldXNlXG5cdFx0XHRcdFx0b0NvbXBvbmVudC5zZXRNb2RlbChvUGFnZU1vZGVsLCBcIl9wYWdlTW9kZWxcIik7XG5cdFx0XHRcdFx0cmV0dXJuIG9Db21wb25lbnQucnVuQXNPd25lcigoKSA9PiB7XG5cdFx0XHRcdFx0XHRyZXR1cm4gVmlldy5jcmVhdGUob1ZpZXdTZXR0aW5ncylcblx0XHRcdFx0XHRcdFx0LmNhdGNoKGNyZWF0ZUVycm9yUGFnZSlcblx0XHRcdFx0XHRcdFx0LnRoZW4oKG9WaWV3OiBhbnkpID0+IHtcblx0XHRcdFx0XHRcdFx0XHR0aGlzLm9WaWV3ID0gb1ZpZXc7XG5cdFx0XHRcdFx0XHRcdFx0dGhpcy5vVmlldy5zZXRNb2RlbChuZXcgTWFuYWdlZE9iamVjdE1vZGVsKHRoaXMub1ZpZXcpLCBcIiR2aWV3XCIpO1xuXHRcdFx0XHRcdFx0XHRcdHRoaXMub1ZpZXcuc2V0TW9kZWwob1ZpZXdEYXRhTW9kZWwsIFwidmlld0RhdGFcIik7XG5cdFx0XHRcdFx0XHRcdFx0b0NvbXBvbmVudC5zZXRBZ2dyZWdhdGlvbihcInJvb3RDb250cm9sXCIsIHRoaXMub1ZpZXcpO1xuXHRcdFx0XHRcdFx0XHRcdC8vIEZpcmUgYW5kIGZvcmdldCBpbiB0aGUgY2FjaGVcblx0XHRcdFx0XHRcdFx0XHRpZiAoIW9QYWdlTW9kZWxDYWNoZSkge1xuXHRcdFx0XHRcdFx0XHRcdFx0dGhpcy5fc2V0Q2FjaGVkTW9kZWwoc1BhZ2VNb2RlbENhY2hlS2V5LCAob1BhZ2VNb2RlbCBhcyBhbnkpLmdldERhdGEoKSk7XG5cdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdHJldHVybiBzQ2FjaGVLZXk7XG5cdFx0XHRcdFx0XHRcdH0pXG5cdFx0XHRcdFx0XHRcdC5jYXRjaCgoZSkgPT4gTG9nLmVycm9yKGUubWVzc2FnZSwgZSkpO1xuXHRcdFx0XHRcdH0pO1xuXHRcdFx0XHR9XG5cdFx0XHR9KVxuXHRcdFx0LmNhdGNoKGZ1bmN0aW9uIChlcnJvcjogYW55KSB7XG5cdFx0XHRcdExvZy5lcnJvcihlcnJvci5tZXNzYWdlLCBlcnJvcik7XG5cdFx0XHRcdHRocm93IG5ldyBFcnJvcihgRXJyb3Igd2hpbGUgY3JlYXRpbmcgdmlldyA6ICR7ZXJyb3J9YCk7XG5cdFx0XHR9KTtcblx0fVxuXHRnZXRWaWV3KCkge1xuXHRcdHJldHVybiB0aGlzLm9WaWV3O1xuXHR9XG5cdGdldEludGVyZmFjZSgpOiBhbnkge1xuXHRcdHJldHVybiB0aGlzO1xuXHR9XG5cdGV4aXQoKSB7XG5cdFx0Ly8gRGVyZWdpc3RlciBnbG9iYWwgaW5zdGFuY2Vcblx0XHRpZiAodGhpcy5vUmVzb3VyY2VNb2RlbFNlcnZpY2UpIHtcblx0XHRcdHRoaXMub1Jlc291cmNlTW9kZWxTZXJ2aWNlLmRlc3Ryb3koKTtcblx0XHR9XG5cdFx0aWYgKHRoaXMub0NhY2hlSGFuZGxlclNlcnZpY2UpIHtcblx0XHRcdHRoaXMub0NhY2hlSGFuZGxlclNlcnZpY2UuZGVzdHJveSgpO1xuXHRcdH1cblx0XHR0aGlzLm9GYWN0b3J5LnJlbW92ZUdsb2JhbEluc3RhbmNlKCk7XG5cdH1cbn1cbmNsYXNzIFRlbXBsYXRlZFZpZXdTZXJ2aWNlRmFjdG9yeSBleHRlbmRzIFNlcnZpY2VGYWN0b3J5PFRlbXBsYXRlZFZpZXdTZXJ2aWNlU2V0dGluZ3M+IHtcblx0X29JbnN0YW5jZVJlZ2lzdHJ5OiBSZWNvcmQ8c3RyaW5nLCBUZW1wbGF0ZWRWaWV3U2VydmljZT4gPSB7fTtcblx0c3RhdGljIGlDcmVhdGluZ1ZpZXdzOiAwO1xuXHRjcmVhdGVJbnN0YW5jZShvU2VydmljZUNvbnRleHQ6IFNlcnZpY2VDb250ZXh0PFRlbXBsYXRlZFZpZXdTZXJ2aWNlU2V0dGluZ3M+KSB7XG5cdFx0VGVtcGxhdGVkVmlld1NlcnZpY2VGYWN0b3J5LmlDcmVhdGluZ1ZpZXdzKys7XG5cblx0XHRjb25zdCBvVGVtcGxhdGVkVmlld1NlcnZpY2UgPSBuZXcgVGVtcGxhdGVkVmlld1NlcnZpY2UoT2JqZWN0LmFzc2lnbih7IGZhY3Rvcnk6IHRoaXMgfSwgb1NlcnZpY2VDb250ZXh0KSk7XG5cdFx0cmV0dXJuIG9UZW1wbGF0ZWRWaWV3U2VydmljZS5pbml0UHJvbWlzZS50aGVuKGZ1bmN0aW9uICgpIHtcblx0XHRcdFRlbXBsYXRlZFZpZXdTZXJ2aWNlRmFjdG9yeS5pQ3JlYXRpbmdWaWV3cy0tO1xuXHRcdFx0cmV0dXJuIG9UZW1wbGF0ZWRWaWV3U2VydmljZTtcblx0XHR9KTtcblx0fVxuXHRyZW1vdmVHbG9iYWxJbnN0YW5jZSgpIHtcblx0XHR0aGlzLl9vSW5zdGFuY2VSZWdpc3RyeSA9IHt9O1xuXHR9XG5cdHN0YXRpYyBnZXROdW1iZXJPZlZpZXdzSW5DcmVhdGlvblN0YXRlKCkge1xuXHRcdHJldHVybiBUZW1wbGF0ZWRWaWV3U2VydmljZUZhY3RvcnkuaUNyZWF0aW5nVmlld3M7XG5cdH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgVGVtcGxhdGVkVmlld1NlcnZpY2VGYWN0b3J5O1xuIl19
@@ -1,9 +1,9 @@
1
1
  import Log from "sap/base/Log";
2
2
  import UriParameters from "sap/base/util/UriParameters";
3
- import AppComponent from "sap/fe/core/AppComponent";
4
- import { CacheHandlerService } from "sap/fe/core/services/CacheHandlerServiceFactory";
3
+ import type AppComponent from "sap/fe/core/AppComponent";
4
+ import type { CacheHandlerService } from "sap/fe/core/services/CacheHandlerServiceFactory";
5
5
  import TemplateModel from "sap/fe/core/TemplateModel";
6
- import ResourceModel from "sap/fe/macros/ResourceModel";
6
+ import type ResourceModel from "sap/fe/macros/ResourceModel";
7
7
  import CacheManager from "sap/ui/core/cache/CacheManager";
8
8
  import Component from "sap/ui/core/Component";
9
9
  import Core from "sap/ui/core/Core";
@@ -14,11 +14,11 @@ import ServiceFactoryRegistry from "sap/ui/core/service/ServiceFactoryRegistry";
14
14
  import Device from "sap/ui/Device";
15
15
  import ManagedObjectModel from "sap/ui/model/base/ManagedObjectModel";
16
16
  import JSONModel from "sap/ui/model/json/JSONModel";
17
- import Model from "sap/ui/model/Model";
17
+ import type Model from "sap/ui/model/Model";
18
18
  import VersionInfo from "sap/ui/VersionInfo";
19
- import { CoreEx, ServiceContext } from "types/extension_types";
19
+ import type { CoreEx, ServiceContext } from "types/extension_types";
20
20
  import { resolveDynamicExpression } from "../helpers/DynamicAnnotationPathHelper";
21
- import { ResourceModelService } from "./ResourceModelServiceFactory";
21
+ import type { ResourceModelService } from "./ResourceModelServiceFactory";
22
22
 
23
23
  type TemplatedViewServiceSettings = {};
24
24
 
@@ -38,7 +38,7 @@ class TemplatedViewService extends Service<TemplatedViewServiceSettings> {
38
38
  const oComponent = oContext.scopeObject;
39
39
  const oAppComponent = Component.getOwnerComponentFor(oComponent) as AppComponent;
40
40
  const oMetaModel = oAppComponent.getMetaModel();
41
- const sStableId = oAppComponent.getMetadata().getComponentName() + "::" + oAppComponent.getLocalId(oComponent.getId());
41
+ const sStableId = `${oAppComponent.getMetadata().getComponentName()}::${oAppComponent.getLocalId(oComponent.getId())}`;
42
42
  const aEnhanceI18n = oComponent.getEnhanceI18n() || [];
43
43
  let sAppNamespace;
44
44
  this.oFactory = oContext.factory;
@@ -53,13 +53,15 @@ class TemplatedViewService extends Service<TemplatedViewServiceSettings> {
53
53
  if (oResourceModel && oResourceModel.isA("sap.ui.model.resource.ResourceModel")) {
54
54
  aEnhanceI18n[i] = oResourceModel;
55
55
  } else {
56
- aEnhanceI18n[i] = sAppNamespace + "." + aEnhanceI18n[i].replace(".properties", "");
56
+ aEnhanceI18n[i] = `${sAppNamespace}.${aEnhanceI18n[i].replace(".properties", "")}`;
57
57
  }
58
58
  }
59
59
  }
60
60
 
61
- const sCacheIdentifier =
62
- oAppComponent.getMetadata().getName() + "_" + sStableId + "_" + sap.ui.getCore().getConfiguration().getLanguageTag();
61
+ const sCacheIdentifier = `${oAppComponent.getMetadata().getName()}_${sStableId}_${sap.ui
62
+ .getCore()
63
+ .getConfiguration()
64
+ .getLanguageTag()}`;
63
65
  aServiceDependencies.push(
64
66
  ServiceFactoryRegistry.get("sap.fe.core.services.ResourceModelService")
65
67
  .createInstance({
@@ -122,7 +124,7 @@ class TemplatedViewService extends Service<TemplatedViewServiceSettings> {
122
124
 
123
125
  // In case there is no cache key we ignore the view cache
124
126
  sPageModelCacheKey = sCacheKey
125
- ? sCacheKey + "-" + sVersionInfo + "-" + sStableId + "-" + oShellServices.instanceType + "-pageModel"
127
+ ? `${sCacheKey}-${sVersionInfo}-${sStableId}-${oShellServices.instanceType}-pageModel`
126
128
  : undefined;
127
129
  return Promise.all(aDependenciesResult.concat([this._getCachedModel(sPageModelCacheKey)]));
128
130
  })
@@ -171,7 +173,7 @@ class TemplatedViewService extends Service<TemplatedViewServiceSettings> {
171
173
  * This is useful for our demokit !
172
174
  *
173
175
  * @param oComponent
174
- * @returns {Promise<void>}
176
+ * @returns A promise indicating when the view is refreshed
175
177
  * @private
176
178
  */
177
179
  refreshView(oComponent: any) {
@@ -223,17 +225,17 @@ class TemplatedViewService extends Service<TemplatedViewServiceSettings> {
223
225
  return sPathSoFar;
224
226
  }
225
227
  if (sPathSoFar === "") {
226
- sPathSoFar = "/" + sNextPathPart;
228
+ sPathSoFar = `/${sNextPathPart}`;
227
229
  } else {
228
- const oTarget = oMetaModel.getObject(sPathSoFar + "/$NavigationPropertyBinding/" + sNextPathPart);
230
+ const oTarget = oMetaModel.getObject(`${sPathSoFar}/$NavigationPropertyBinding/${sNextPathPart}`);
229
231
  if (oTarget && Object.keys(oTarget).length > 0) {
230
232
  sPathSoFar += "/$NavigationPropertyBinding";
231
233
  }
232
- sPathSoFar += "/" + sNextPathPart;
234
+ sPathSoFar += `/${sNextPathPart}`;
233
235
  }
234
236
  return sPathSoFar;
235
237
  }, "");
236
- const oViewSettings = {
238
+ return {
237
239
  type: "XML",
238
240
  preprocessors: {
239
241
  xml: {
@@ -267,7 +269,6 @@ class TemplatedViewService extends Service<TemplatedViewServiceSettings> {
267
269
  },
268
270
  height: "100%"
269
271
  };
270
- return oViewSettings;
271
272
  }
272
273
  const createErrorPage = (reason: any) => {
273
274
  // just replace the view name and add an additional model containing the reason, but
@@ -355,7 +356,7 @@ class TemplatedViewService extends Service<TemplatedViewServiceSettings> {
355
356
  MetaModelConverter.convertTypes(oMetaModel, oAppComponent.getEnvironmentCapabilities().getCapabilities());
356
357
  oPageModel = new TemplateModel(() => {
357
358
  try {
358
- if (!!oPageModelCache) {
359
+ if (oPageModelCache) {
359
360
  return oPageModelCache;
360
361
  } else {
361
362
  const oDiagnostics = oAppComponent.getDiagnostics();
@@ -408,7 +409,7 @@ class TemplatedViewService extends Service<TemplatedViewServiceSettings> {
408
409
  })
409
410
  .catch(function (error: any) {
410
411
  Log.error(error.message, error);
411
- throw new Error("Error while creating view : " + error);
412
+ throw new Error(`Error while creating view : ${error}`);
412
413
  });
413
414
  }
414
415
  getView() {
@@ -419,8 +420,12 @@ class TemplatedViewService extends Service<TemplatedViewServiceSettings> {
419
420
  }
420
421
  exit() {
421
422
  // Deregister global instance
422
- this.oResourceModelService && this.oResourceModelService.destroy();
423
- this.oCacheHandlerService && this.oCacheHandlerService.destroy();
423
+ if (this.oResourceModelService) {
424
+ this.oResourceModelService.destroy();
425
+ }
426
+ if (this.oCacheHandlerService) {
427
+ this.oCacheHandlerService.destroy();
428
+ }
424
429
  this.oFactory.removeGlobalInstance();
425
430
  }
426
431
  }
@@ -2,7 +2,7 @@
2
2
  * SAP UI development toolkit for HTML5 (SAPUI5)
3
3
  * (c) Copyright 2009-2021 SAP SE. All rights reserved
4
4
  */
5
- sap.ui.define(["sap/ui/support/library", "sap/fe/core/converters/helpers/IssueManager"], function (SupportLib, IssueManager) {
5
+ sap.ui.define(["sap/fe/core/converters/helpers/IssueManager", "sap/ui/support/library"], function (IssueManager, SupportLib) {
6
6
  "use strict";
7
7
 
8
8
  var _exports = {};
@@ -33,6 +33,7 @@ sap.ui.define(["sap/ui/support/library", "sap/fe/core/converters/helpers/IssueMa
33
33
 
34
34
  case IssueSeverity.Medium:
35
35
  return Severity.Medium;
36
+ // no default
36
37
  }
37
38
  };
38
39
 
@@ -68,4 +69,4 @@ sap.ui.define(["sap/ui/support/library", "sap/fe/core/converters/helpers/IssueMa
68
69
  _exports.getIssueByCategory = getIssueByCategory;
69
70
  return _exports;
70
71
  }, false);
71
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIkNvbW1vbkhlbHBlci50cyJdLCJuYW1lcyI6WyJDYXRlZ29yaWVzIiwiU3VwcG9ydExpYiIsIlNldmVyaXR5IiwiQXVkaWVuY2VzIiwiZ2V0U2V2ZXJpdHkiLCJvU2V2ZXJpdHkiLCJJc3N1ZVNldmVyaXR5IiwiTG93IiwiSGlnaCIsIk1lZGl1bSIsImdldElzc3VlQnlDYXRlZ29yeSIsIm9Jc3N1ZU1hbmFnZXIiLCJvQ29yZUZhY2FkZSIsImlzc3VlQ2F0ZWdvcnlUeXBlIiwiaXNzdWVTdWJDYXRlZ29yeVR5cGUiLCJtQ29tcG9uZW50cyIsImdldENvbXBvbmVudHMiLCJvQXBwQ29tcG9uZW50IiwiT2JqZWN0Iiwia2V5cyIsImZvckVhY2giLCJzS2V5Iiwib0NvbXBvbmVudCIsImdldE1ldGFkYXRhIiwiZ2V0UGFyZW50IiwiZ2V0TmFtZSIsImFJc3N1ZXMiLCJnZXREaWFnbm9zdGljcyIsImdldElzc3Vlc0J5Q2F0ZWdvcnkiLCJJc3N1ZUNhdGVnb3J5Iiwib0VsZW1lbnQiLCJhZGRJc3N1ZSIsInNldmVyaXR5IiwiZGV0YWlscyIsImNvbnRleHQiLCJpZCIsImNhdGVnb3J5Il0sIm1hcHBpbmdzIjoiO0FBQUE7QUFDQTtBQUNBOzs7Ozs7OztBQU1PLE1BQU1BLFVBQVUsR0FBR0MsVUFBVSxDQUFDRCxVQUE5QjtBQUFBLE1BQTBDO0FBQ2hERSxFQUFBQSxRQUFRLEdBQUdELFVBQVUsQ0FBQ0MsUUFEaEI7QUFBQSxNQUMwQjtBQUNoQ0MsRUFBQUEsU0FBUyxHQUFHRixVQUFVLENBQUNFLFNBRmpCLEMsQ0FFNEI7QUFFbkM7QUFDQTtBQUNBO0FBRUE7Ozs7OztBQUVPLE1BQU1DLFdBQVcsR0FBRyxVQUFTQyxTQUFULEVBQW1DO0FBQzdELFlBQVFBLFNBQVI7QUFDQyxXQUFLQyxhQUFhLENBQUNDLEdBQW5CO0FBQ0MsZUFBT0wsUUFBUSxDQUFDSyxHQUFoQjs7QUFDRCxXQUFLRCxhQUFhLENBQUNFLElBQW5CO0FBQ0MsZUFBT04sUUFBUSxDQUFDTSxJQUFoQjs7QUFDRCxXQUFLRixhQUFhLENBQUNHLE1BQW5CO0FBQ0MsZUFBT1AsUUFBUSxDQUFDTyxNQUFoQjtBQU5GO0FBUUEsR0FUTTs7OztBQVdBLE1BQU1DLGtCQUFrQixHQUFHLFVBQ2pDQyxhQURpQyxFQUVqQ0MsV0FGaUMsRUFHakNDLGlCQUhpQyxFQUlqQ0Msb0JBSmlDLEVBS2hDO0FBQ0QsUUFBTUMsV0FBVyxHQUFHSCxXQUFXLENBQUNJLGFBQVosRUFBcEI7QUFDQSxRQUFJQyxhQUFKO0FBQ0FDLElBQUFBLE1BQU0sQ0FBQ0MsSUFBUCxDQUFZSixXQUFaLEVBQXlCSyxPQUF6QixDQUFpQyxVQUFBQyxJQUFJLEVBQUk7QUFBQTs7QUFDeEMsVUFBTUMsVUFBVSxHQUFHUCxXQUFXLENBQUNNLElBQUQsQ0FBOUI7O0FBQ0EsVUFDQyxDQUFBQyxVQUFVLFNBQVYsSUFBQUEsVUFBVSxXQUFWLHFDQUFBQSxVQUFVLENBQ1BDLFdBREgsNEdBRUdDLFNBRkgsb0ZBR0dDLE9BSEgsUUFHaUIsMEJBSmxCLEVBS0U7QUFDRFIsUUFBQUEsYUFBYSxHQUFHSyxVQUFoQjtBQUNBO0FBQ0QsS0FWRDs7QUFXQSxRQUFJTCxhQUFKLEVBQW1CO0FBQ2xCLFVBQU1TLE9BQU8sR0FBR1QsYUFBYSxDQUFDVSxjQUFkLEdBQStCQyxtQkFBL0IsQ0FBbURDLGFBQWEsQ0FBQ2hCLGlCQUFELENBQWhFLEVBQXFGQyxvQkFBckYsQ0FBaEI7QUFFQVksTUFBQUEsT0FBTyxDQUFDTixPQUFSLENBQWdCLFVBQVNVLFFBQVQsRUFBb0M7QUFDbkRuQixRQUFBQSxhQUFhLENBQUNvQixRQUFkLENBQXVCO0FBQ3RCQyxVQUFBQSxRQUFRLEVBQUU1QixXQUFXLENBQUMwQixRQUFRLENBQUNFLFFBQVYsQ0FEQztBQUV0QkMsVUFBQUEsT0FBTyxFQUFFSCxRQUFRLENBQUNHLE9BRkk7QUFHdEJDLFVBQUFBLE9BQU8sRUFBRTtBQUNSQyxZQUFBQSxFQUFFLEVBQUVMLFFBQVEsQ0FBQ007QUFETDtBQUhhLFNBQXZCO0FBT0EsT0FSRDtBQVNBO0FBQ0QsR0FoQ00iLCJzb3VyY2VSb290IjoiLiIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogRGVmaW5lcyBzdXBwb3J0IHJ1bGVzIG9mIHRoZSBPYmplY3RQYWdlSGVhZGVyIGNvbnRyb2wgb2Ygc2FwLnV4YXAgbGlicmFyeS5cbiAqL1xuaW1wb3J0IFN1cHBvcnRMaWIgZnJvbSBcInNhcC91aS9zdXBwb3J0L2xpYnJhcnlcIjtcbmltcG9ydCB7IElzc3VlQ2F0ZWdvcnksIElzc3VlU2V2ZXJpdHkgfSBmcm9tIFwic2FwL2ZlL2NvcmUvY29udmVydGVycy9oZWxwZXJzL0lzc3VlTWFuYWdlclwiO1xuaW1wb3J0IHsgSXNzdWVEZWZpbml0aW9uIH0gZnJvbSBcInNhcC9mZS9jb3JlL3N1cHBvcnQvRGlhZ25vc3RpY3NcIjtcbmltcG9ydCBBcHBDb21wb25lbnQgZnJvbSBcInNhcC9mZS9jb3JlL0FwcENvbXBvbmVudFwiO1xuXG5leHBvcnQgY29uc3QgQ2F0ZWdvcmllcyA9IFN1cHBvcnRMaWIuQ2F0ZWdvcmllcywgLy8gQWNjZXNzaWJpbGl0eSwgUGVyZm9ybWFuY2UsIE1lbW9yeSwgLi4uXG5cdFNldmVyaXR5ID0gU3VwcG9ydExpYi5TZXZlcml0eSwgLy8gSGludCwgV2FybmluZywgRXJyb3Jcblx0QXVkaWVuY2VzID0gU3VwcG9ydExpYi5BdWRpZW5jZXM7IC8vIENvbnRyb2wsIEludGVybmFsLCBBcHBsaWNhdGlvblxuXG4vLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbi8vIFJ1bGUgRGVmaW5pdGlvbnNcbi8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuXG4vLyBSdWxlIGNoZWNrcyBpZiBvYmplY3RQYWdlIGNvbXBvbmVudENvbnRhaW5lciBoZWlnaHQgaXMgc2V0XG5cbmV4cG9ydCBjb25zdCBnZXRTZXZlcml0eSA9IGZ1bmN0aW9uKG9TZXZlcml0eTogSXNzdWVTZXZlcml0eSkge1xuXHRzd2l0Y2ggKG9TZXZlcml0eSkge1xuXHRcdGNhc2UgSXNzdWVTZXZlcml0eS5Mb3c6XG5cdFx0XHRyZXR1cm4gU2V2ZXJpdHkuTG93O1xuXHRcdGNhc2UgSXNzdWVTZXZlcml0eS5IaWdoOlxuXHRcdFx0cmV0dXJuIFNldmVyaXR5LkhpZ2g7XG5cdFx0Y2FzZSBJc3N1ZVNldmVyaXR5Lk1lZGl1bTpcblx0XHRcdHJldHVybiBTZXZlcml0eS5NZWRpdW07XG5cdH1cbn07XG5cbmV4cG9ydCBjb25zdCBnZXRJc3N1ZUJ5Q2F0ZWdvcnkgPSBmdW5jdGlvbihcblx0b0lzc3VlTWFuYWdlcjogYW55LFxuXHRvQ29yZUZhY2FkZTogYW55IC8qb1Njb3BlOiBhbnkqLyxcblx0aXNzdWVDYXRlZ29yeVR5cGU6IElzc3VlQ2F0ZWdvcnksXG5cdGlzc3VlU3ViQ2F0ZWdvcnlUeXBlPzogc3RyaW5nXG4pIHtcblx0Y29uc3QgbUNvbXBvbmVudHMgPSBvQ29yZUZhY2FkZS5nZXRDb21wb25lbnRzKCk7XG5cdGxldCBvQXBwQ29tcG9uZW50ITogQXBwQ29tcG9uZW50O1xuXHRPYmplY3Qua2V5cyhtQ29tcG9uZW50cykuZm9yRWFjaChzS2V5ID0+IHtcblx0XHRjb25zdCBvQ29tcG9uZW50ID0gbUNvbXBvbmVudHNbc0tleV07XG5cdFx0aWYgKFxuXHRcdFx0b0NvbXBvbmVudFxuXHRcdFx0XHQ/LmdldE1ldGFkYXRhKClcblx0XHRcdFx0Py5nZXRQYXJlbnQoKVxuXHRcdFx0XHQ/LmdldE5hbWUoKSA9PT0gXCJzYXAuZmUuY29yZS5BcHBDb21wb25lbnRcIlxuXHRcdCkge1xuXHRcdFx0b0FwcENvbXBvbmVudCA9IG9Db21wb25lbnQ7XG5cdFx0fVxuXHR9KTtcblx0aWYgKG9BcHBDb21wb25lbnQpIHtcblx0XHRjb25zdCBhSXNzdWVzID0gb0FwcENvbXBvbmVudC5nZXREaWFnbm9zdGljcygpLmdldElzc3Vlc0J5Q2F0ZWdvcnkoSXNzdWVDYXRlZ29yeVtpc3N1ZUNhdGVnb3J5VHlwZV0sIGlzc3VlU3ViQ2F0ZWdvcnlUeXBlKTtcblxuXHRcdGFJc3N1ZXMuZm9yRWFjaChmdW5jdGlvbihvRWxlbWVudDogSXNzdWVEZWZpbml0aW9uKSB7XG5cdFx0XHRvSXNzdWVNYW5hZ2VyLmFkZElzc3VlKHtcblx0XHRcdFx0c2V2ZXJpdHk6IGdldFNldmVyaXR5KG9FbGVtZW50LnNldmVyaXR5KSxcblx0XHRcdFx0ZGV0YWlsczogb0VsZW1lbnQuZGV0YWlscyxcblx0XHRcdFx0Y29udGV4dDoge1xuXHRcdFx0XHRcdGlkOiBvRWxlbWVudC5jYXRlZ29yeVxuXHRcdFx0XHR9XG5cdFx0XHR9KTtcblx0XHR9KTtcblx0fVxufTtcbiJdfQ==
72
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIkNvbW1vbkhlbHBlci50cyJdLCJuYW1lcyI6WyJDYXRlZ29yaWVzIiwiU3VwcG9ydExpYiIsIlNldmVyaXR5IiwiQXVkaWVuY2VzIiwiZ2V0U2V2ZXJpdHkiLCJvU2V2ZXJpdHkiLCJJc3N1ZVNldmVyaXR5IiwiTG93IiwiSGlnaCIsIk1lZGl1bSIsImdldElzc3VlQnlDYXRlZ29yeSIsIm9Jc3N1ZU1hbmFnZXIiLCJvQ29yZUZhY2FkZSIsImlzc3VlQ2F0ZWdvcnlUeXBlIiwiaXNzdWVTdWJDYXRlZ29yeVR5cGUiLCJtQ29tcG9uZW50cyIsImdldENvbXBvbmVudHMiLCJvQXBwQ29tcG9uZW50IiwiT2JqZWN0Iiwia2V5cyIsImZvckVhY2giLCJzS2V5Iiwib0NvbXBvbmVudCIsImdldE1ldGFkYXRhIiwiZ2V0UGFyZW50IiwiZ2V0TmFtZSIsImFJc3N1ZXMiLCJnZXREaWFnbm9zdGljcyIsImdldElzc3Vlc0J5Q2F0ZWdvcnkiLCJJc3N1ZUNhdGVnb3J5Iiwib0VsZW1lbnQiLCJhZGRJc3N1ZSIsInNldmVyaXR5IiwiZGV0YWlscyIsImNvbnRleHQiLCJpZCIsImNhdGVnb3J5Il0sIm1hcHBpbmdzIjoiO0FBQUE7QUFDQTtBQUNBOzs7Ozs7OztBQU1PLE1BQU1BLFVBQVUsR0FBR0MsVUFBVSxDQUFDRCxVQUE5QjtBQUFBLE1BQTBDO0FBQ2hERSxFQUFBQSxRQUFRLEdBQUdELFVBQVUsQ0FBQ0MsUUFEaEI7QUFBQSxNQUMwQjtBQUNoQ0MsRUFBQUEsU0FBUyxHQUFHRixVQUFVLENBQUNFLFNBRmpCLEMsQ0FFNEI7QUFFbkM7QUFDQTtBQUNBO0FBRUE7Ozs7OztBQUVPLE1BQU1DLFdBQVcsR0FBRyxVQUFVQyxTQUFWLEVBQW9DO0FBQzlELFlBQVFBLFNBQVI7QUFDQyxXQUFLQyxhQUFhLENBQUNDLEdBQW5CO0FBQ0MsZUFBT0wsUUFBUSxDQUFDSyxHQUFoQjs7QUFDRCxXQUFLRCxhQUFhLENBQUNFLElBQW5CO0FBQ0MsZUFBT04sUUFBUSxDQUFDTSxJQUFoQjs7QUFDRCxXQUFLRixhQUFhLENBQUNHLE1BQW5CO0FBQ0MsZUFBT1AsUUFBUSxDQUFDTyxNQUFoQjtBQUNEO0FBUEQ7QUFTQSxHQVZNOzs7O0FBWUEsTUFBTUMsa0JBQWtCLEdBQUcsVUFDakNDLGFBRGlDLEVBRWpDQyxXQUZpQyxFQUdqQ0MsaUJBSGlDLEVBSWpDQyxvQkFKaUMsRUFLaEM7QUFDRCxRQUFNQyxXQUFXLEdBQUdILFdBQVcsQ0FBQ0ksYUFBWixFQUFwQjtBQUNBLFFBQUlDLGFBQUo7QUFDQUMsSUFBQUEsTUFBTSxDQUFDQyxJQUFQLENBQVlKLFdBQVosRUFBeUJLLE9BQXpCLENBQWlDLFVBQUNDLElBQUQsRUFBVTtBQUFBOztBQUMxQyxVQUFNQyxVQUFVLEdBQUdQLFdBQVcsQ0FBQ00sSUFBRCxDQUE5Qjs7QUFDQSxVQUFJLENBQUFDLFVBQVUsU0FBVixJQUFBQSxVQUFVLFdBQVYscUNBQUFBLFVBQVUsQ0FBRUMsV0FBWiw0R0FBMkJDLFNBQTNCLG9GQUF3Q0MsT0FBeEMsUUFBc0QsMEJBQTFELEVBQXNGO0FBQ3JGUixRQUFBQSxhQUFhLEdBQUdLLFVBQWhCO0FBQ0E7QUFDRCxLQUxEOztBQU1BLFFBQUlMLGFBQUosRUFBbUI7QUFDbEIsVUFBTVMsT0FBTyxHQUFHVCxhQUFhLENBQUNVLGNBQWQsR0FBK0JDLG1CQUEvQixDQUFtREMsYUFBYSxDQUFDaEIsaUJBQUQsQ0FBaEUsRUFBcUZDLG9CQUFyRixDQUFoQjtBQUVBWSxNQUFBQSxPQUFPLENBQUNOLE9BQVIsQ0FBZ0IsVUFBVVUsUUFBVixFQUFxQztBQUNwRG5CLFFBQUFBLGFBQWEsQ0FBQ29CLFFBQWQsQ0FBdUI7QUFDdEJDLFVBQUFBLFFBQVEsRUFBRTVCLFdBQVcsQ0FBQzBCLFFBQVEsQ0FBQ0UsUUFBVixDQURDO0FBRXRCQyxVQUFBQSxPQUFPLEVBQUVILFFBQVEsQ0FBQ0csT0FGSTtBQUd0QkMsVUFBQUEsT0FBTyxFQUFFO0FBQ1JDLFlBQUFBLEVBQUUsRUFBRUwsUUFBUSxDQUFDTTtBQURMO0FBSGEsU0FBdkI7QUFPQSxPQVJEO0FBU0E7QUFDRCxHQTNCTSIsInNvdXJjZVJvb3QiOiIuIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBEZWZpbmVzIHN1cHBvcnQgcnVsZXMgb2YgdGhlIE9iamVjdFBhZ2VIZWFkZXIgY29udHJvbCBvZiBzYXAudXhhcCBsaWJyYXJ5LlxuICovXG5pbXBvcnQgdHlwZSBBcHBDb21wb25lbnQgZnJvbSBcInNhcC9mZS9jb3JlL0FwcENvbXBvbmVudFwiO1xuaW1wb3J0IHsgSXNzdWVDYXRlZ29yeSwgSXNzdWVTZXZlcml0eSB9IGZyb20gXCJzYXAvZmUvY29yZS9jb252ZXJ0ZXJzL2hlbHBlcnMvSXNzdWVNYW5hZ2VyXCI7XG5pbXBvcnQgdHlwZSB7IElzc3VlRGVmaW5pdGlvbiB9IGZyb20gXCJzYXAvZmUvY29yZS9zdXBwb3J0L0RpYWdub3N0aWNzXCI7XG5pbXBvcnQgU3VwcG9ydExpYiBmcm9tIFwic2FwL3VpL3N1cHBvcnQvbGlicmFyeVwiO1xuXG5leHBvcnQgY29uc3QgQ2F0ZWdvcmllcyA9IFN1cHBvcnRMaWIuQ2F0ZWdvcmllcywgLy8gQWNjZXNzaWJpbGl0eSwgUGVyZm9ybWFuY2UsIE1lbW9yeSwgLi4uXG5cdFNldmVyaXR5ID0gU3VwcG9ydExpYi5TZXZlcml0eSwgLy8gSGludCwgV2FybmluZywgRXJyb3Jcblx0QXVkaWVuY2VzID0gU3VwcG9ydExpYi5BdWRpZW5jZXM7IC8vIENvbnRyb2wsIEludGVybmFsLCBBcHBsaWNhdGlvblxuXG4vLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbi8vIFJ1bGUgRGVmaW5pdGlvbnNcbi8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuXG4vLyBSdWxlIGNoZWNrcyBpZiBvYmplY3RQYWdlIGNvbXBvbmVudENvbnRhaW5lciBoZWlnaHQgaXMgc2V0XG5cbmV4cG9ydCBjb25zdCBnZXRTZXZlcml0eSA9IGZ1bmN0aW9uIChvU2V2ZXJpdHk6IElzc3VlU2V2ZXJpdHkpIHtcblx0c3dpdGNoIChvU2V2ZXJpdHkpIHtcblx0XHRjYXNlIElzc3VlU2V2ZXJpdHkuTG93OlxuXHRcdFx0cmV0dXJuIFNldmVyaXR5Lkxvdztcblx0XHRjYXNlIElzc3VlU2V2ZXJpdHkuSGlnaDpcblx0XHRcdHJldHVybiBTZXZlcml0eS5IaWdoO1xuXHRcdGNhc2UgSXNzdWVTZXZlcml0eS5NZWRpdW06XG5cdFx0XHRyZXR1cm4gU2V2ZXJpdHkuTWVkaXVtO1xuXHRcdC8vIG5vIGRlZmF1bHRcblx0fVxufTtcblxuZXhwb3J0IGNvbnN0IGdldElzc3VlQnlDYXRlZ29yeSA9IGZ1bmN0aW9uIChcblx0b0lzc3VlTWFuYWdlcjogYW55LFxuXHRvQ29yZUZhY2FkZTogYW55IC8qb1Njb3BlOiBhbnkqLyxcblx0aXNzdWVDYXRlZ29yeVR5cGU6IElzc3VlQ2F0ZWdvcnksXG5cdGlzc3VlU3ViQ2F0ZWdvcnlUeXBlPzogc3RyaW5nXG4pIHtcblx0Y29uc3QgbUNvbXBvbmVudHMgPSBvQ29yZUZhY2FkZS5nZXRDb21wb25lbnRzKCk7XG5cdGxldCBvQXBwQ29tcG9uZW50ITogQXBwQ29tcG9uZW50O1xuXHRPYmplY3Qua2V5cyhtQ29tcG9uZW50cykuZm9yRWFjaCgoc0tleSkgPT4ge1xuXHRcdGNvbnN0IG9Db21wb25lbnQgPSBtQ29tcG9uZW50c1tzS2V5XTtcblx0XHRpZiAob0NvbXBvbmVudD8uZ2V0TWV0YWRhdGEoKT8uZ2V0UGFyZW50KCk/LmdldE5hbWUoKSA9PT0gXCJzYXAuZmUuY29yZS5BcHBDb21wb25lbnRcIikge1xuXHRcdFx0b0FwcENvbXBvbmVudCA9IG9Db21wb25lbnQ7XG5cdFx0fVxuXHR9KTtcblx0aWYgKG9BcHBDb21wb25lbnQpIHtcblx0XHRjb25zdCBhSXNzdWVzID0gb0FwcENvbXBvbmVudC5nZXREaWFnbm9zdGljcygpLmdldElzc3Vlc0J5Q2F0ZWdvcnkoSXNzdWVDYXRlZ29yeVtpc3N1ZUNhdGVnb3J5VHlwZV0sIGlzc3VlU3ViQ2F0ZWdvcnlUeXBlKTtcblxuXHRcdGFJc3N1ZXMuZm9yRWFjaChmdW5jdGlvbiAob0VsZW1lbnQ6IElzc3VlRGVmaW5pdGlvbikge1xuXHRcdFx0b0lzc3VlTWFuYWdlci5hZGRJc3N1ZSh7XG5cdFx0XHRcdHNldmVyaXR5OiBnZXRTZXZlcml0eShvRWxlbWVudC5zZXZlcml0eSksXG5cdFx0XHRcdGRldGFpbHM6IG9FbGVtZW50LmRldGFpbHMsXG5cdFx0XHRcdGNvbnRleHQ6IHtcblx0XHRcdFx0XHRpZDogb0VsZW1lbnQuY2F0ZWdvcnlcblx0XHRcdFx0fVxuXHRcdFx0fSk7XG5cdFx0fSk7XG5cdH1cbn07XG4iXX0=
@@ -1,10 +1,10 @@
1
1
  /**
2
2
  * Defines support rules of the ObjectPageHeader control of sap.uxap library.
3
3
  */
4
- import SupportLib from "sap/ui/support/library";
4
+ import type AppComponent from "sap/fe/core/AppComponent";
5
5
  import { IssueCategory, IssueSeverity } from "sap/fe/core/converters/helpers/IssueManager";
6
- import { IssueDefinition } from "sap/fe/core/support/Diagnostics";
7
- import AppComponent from "sap/fe/core/AppComponent";
6
+ import type { IssueDefinition } from "sap/fe/core/support/Diagnostics";
7
+ import SupportLib from "sap/ui/support/library";
8
8
 
9
9
  export const Categories = SupportLib.Categories, // Accessibility, Performance, Memory, ...
10
10
  Severity = SupportLib.Severity, // Hint, Warning, Error
@@ -16,7 +16,7 @@ export const Categories = SupportLib.Categories, // Accessibility, Performance,
16
16
 
17
17
  // Rule checks if objectPage componentContainer height is set
18
18
 
19
- export const getSeverity = function(oSeverity: IssueSeverity) {
19
+ export const getSeverity = function (oSeverity: IssueSeverity) {
20
20
  switch (oSeverity) {
21
21
  case IssueSeverity.Low:
22
22
  return Severity.Low;
@@ -24,10 +24,11 @@ export const getSeverity = function(oSeverity: IssueSeverity) {
24
24
  return Severity.High;
25
25
  case IssueSeverity.Medium:
26
26
  return Severity.Medium;
27
+ // no default
27
28
  }
28
29
  };
29
30
 
30
- export const getIssueByCategory = function(
31
+ export const getIssueByCategory = function (
31
32
  oIssueManager: any,
32
33
  oCoreFacade: any /*oScope: any*/,
33
34
  issueCategoryType: IssueCategory,
@@ -35,21 +36,16 @@ export const getIssueByCategory = function(
35
36
  ) {
36
37
  const mComponents = oCoreFacade.getComponents();
37
38
  let oAppComponent!: AppComponent;
38
- Object.keys(mComponents).forEach(sKey => {
39
+ Object.keys(mComponents).forEach((sKey) => {
39
40
  const oComponent = mComponents[sKey];
40
- if (
41
- oComponent
42
- ?.getMetadata()
43
- ?.getParent()
44
- ?.getName() === "sap.fe.core.AppComponent"
45
- ) {
41
+ if (oComponent?.getMetadata()?.getParent()?.getName() === "sap.fe.core.AppComponent") {
46
42
  oAppComponent = oComponent;
47
43
  }
48
44
  });
49
45
  if (oAppComponent) {
50
46
  const aIssues = oAppComponent.getDiagnostics().getIssuesByCategory(IssueCategory[issueCategoryType], issueSubCategoryType);
51
47
 
52
- aIssues.forEach(function(oElement: IssueDefinition) {
48
+ aIssues.forEach(function (oElement: IssueDefinition) {
53
49
  oIssueManager.addIssue({
54
50
  severity: getSeverity(oElement.severity),
55
51
  details: oElement.details,
@@ -58,4 +58,4 @@ sap.ui.define([], function () {
58
58
 
59
59
  return Diagnostics;
60
60
  }, false);
61
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIkRpYWdub3N0aWNzLnRzIl0sIm5hbWVzIjpbIkRpYWdub3N0aWNzIiwiX2lzc3VlcyIsImFkZElzc3VlIiwiaXNzdWVDYXRlZ29yeSIsImlzc3VlU2V2ZXJpdHkiLCJkZXRhaWxzIiwiaXNzdWVDYXRlZ29yeVR5cGUiLCJzdWJDYXRlZ29yeSIsImNoZWNrSWZJc3N1ZUV4aXN0cyIsInB1c2giLCJjYXRlZ29yeSIsInNldmVyaXR5IiwiZ2V0SXNzdWVzIiwiZ2V0SXNzdWVzQnlDYXRlZ29yeSIsImluQ2F0ZWdvcnkiLCJmaWx0ZXIiLCJpc3N1ZSIsImlzc3VlU3ViQ2F0ZWdvcnkiLCJzb21lIiwicmVwbGFjZSJdLCJtYXBwaW5ncyI6IjtBQUFBO0FBQ0E7QUFDQTs7OztNQU1NQSxXO0FBRUwsMkJBQWM7QUFDYixXQUFLQyxPQUFMLEdBQWUsRUFBZjtBQUNBOzs7O1dBQ0RDLFEsR0FBQSxrQkFDQ0MsYUFERCxFQUVDQyxhQUZELEVBR0NDLE9BSEQsRUFJQ0MsaUJBSkQsRUFLQ0MsV0FMRCxFQU1RO0FBQ1AsVUFBTUMsa0JBQWtCLEdBQUcsS0FBS0Esa0JBQUwsQ0FBd0JMLGFBQXhCLEVBQXVDQyxhQUF2QyxFQUFzREMsT0FBdEQsRUFBK0RDLGlCQUEvRCxFQUFrRkMsV0FBbEYsQ0FBM0I7O0FBQ0EsVUFBSSxDQUFDQyxrQkFBTCxFQUF5QjtBQUN4QixhQUFLUCxPQUFMLENBQWFRLElBQWIsQ0FBa0I7QUFDakJDLFVBQUFBLFFBQVEsRUFBRVAsYUFETztBQUVqQlEsVUFBQUEsUUFBUSxFQUFFUCxhQUZPO0FBR2pCQyxVQUFBQSxPQUFPLEVBQUVBLE9BSFE7QUFJakJFLFVBQUFBLFdBQVcsRUFBRUE7QUFKSSxTQUFsQjtBQU1BO0FBQ0QsSzs7V0FDREssUyxHQUFBLHFCQUErQjtBQUM5QixhQUFPLEtBQUtYLE9BQVo7QUFDQSxLOztXQUNEWSxtQixHQUFBLDZCQUFvQkMsVUFBcEIsRUFBK0NQLFdBQS9DLEVBQXdGO0FBQ3ZGLFVBQUlBLFdBQUosRUFBaUI7QUFDaEIsZUFBTyxLQUFLTixPQUFMLENBQWFjLE1BQWIsQ0FBb0IsVUFBQUMsS0FBSztBQUFBLGlCQUFJQSxLQUFLLENBQUNOLFFBQU4sS0FBbUJJLFVBQW5CLElBQWlDRSxLQUFLLENBQUNULFdBQU4sS0FBc0JBLFdBQTNEO0FBQUEsU0FBekIsQ0FBUDtBQUNBLE9BRkQsTUFFTztBQUNOLGVBQU8sS0FBS04sT0FBTCxDQUFhYyxNQUFiLENBQW9CLFVBQUFDLEtBQUs7QUFBQSxpQkFBSUEsS0FBSyxDQUFDTixRQUFOLEtBQW1CSSxVQUF2QjtBQUFBLFNBQXpCLENBQVA7QUFDQTtBQUNELEs7O1dBQ0ROLGtCLEdBQUEsNEJBQ0NNLFVBREQsRUFFQ0gsUUFGRCxFQUdDTixPQUhELEVBSUNDLGlCQUpELEVBS0NXLGdCQUxELEVBTVc7QUFDVixVQUFJWCxpQkFBaUIsSUFBSUEsaUJBQWlCLENBQUNRLFVBQUQsQ0FBdEMsSUFBc0RHLGdCQUExRCxFQUE0RTtBQUMzRSxlQUFPLEtBQUtoQixPQUFMLENBQWFpQixJQUFiLENBQ04sVUFBQUYsS0FBSztBQUFBLGlCQUNKQSxLQUFLLENBQUNOLFFBQU4sS0FBbUJJLFVBQW5CLElBQ0FFLEtBQUssQ0FBQ0wsUUFBTixLQUFtQkEsUUFEbkIsSUFFQUssS0FBSyxDQUFDWCxPQUFOLENBQWNjLE9BQWQsQ0FBc0IsS0FBdEIsRUFBNkIsRUFBN0IsTUFBcUNkLE9BQU8sQ0FBQ2MsT0FBUixDQUFnQixLQUFoQixFQUF1QixFQUF2QixDQUZyQyxJQUdBSCxLQUFLLENBQUNULFdBQU4sS0FBc0JVLGdCQUpsQjtBQUFBLFNBREMsQ0FBUDtBQU9BOztBQUNELGFBQU8sS0FBS2hCLE9BQUwsQ0FBYWlCLElBQWIsQ0FDTixVQUFBRixLQUFLO0FBQUEsZUFDSkEsS0FBSyxDQUFDTixRQUFOLEtBQW1CSSxVQUFuQixJQUNBRSxLQUFLLENBQUNMLFFBQU4sS0FBbUJBLFFBRG5CLElBRUFLLEtBQUssQ0FBQ1gsT0FBTixDQUFjYyxPQUFkLENBQXNCLEtBQXRCLEVBQTZCLEVBQTdCLE1BQXFDZCxPQUFPLENBQUNjLE9BQVIsQ0FBZ0IsS0FBaEIsRUFBdUIsRUFBdkIsQ0FIakM7QUFBQSxPQURDLENBQVA7QUFNQSxLOzs7OztTQUdhbkIsVyIsInNvdXJjZVJvb3QiOiIuIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSXNzdWVDYXRlZ29yeSwgSXNzdWVTZXZlcml0eSB9IGZyb20gXCJzYXAvZmUvY29yZS9jb252ZXJ0ZXJzL2hlbHBlcnMvSXNzdWVNYW5hZ2VyXCI7XG5cbmV4cG9ydCB0eXBlIElzc3VlRGVmaW5pdGlvbiA9IHtcblx0Y2F0ZWdvcnk6IElzc3VlQ2F0ZWdvcnk7XG5cdHNldmVyaXR5OiBJc3N1ZVNldmVyaXR5O1xuXHRkZXRhaWxzOiBzdHJpbmc7XG5cdHN1YkNhdGVnb3J5Pzogc3RyaW5nIHwgdW5kZWZpbmVkO1xufTtcbmNsYXNzIERpYWdub3N0aWNzIHtcblx0X2lzc3VlczogSXNzdWVEZWZpbml0aW9uW107XG5cdGNvbnN0cnVjdG9yKCkge1xuXHRcdHRoaXMuX2lzc3VlcyA9IFtdO1xuXHR9XG5cdGFkZElzc3VlKFxuXHRcdGlzc3VlQ2F0ZWdvcnk6IElzc3VlQ2F0ZWdvcnksXG5cdFx0aXNzdWVTZXZlcml0eTogSXNzdWVTZXZlcml0eSxcblx0XHRkZXRhaWxzOiBzdHJpbmcsXG5cdFx0aXNzdWVDYXRlZ29yeVR5cGU/OiBhbnkgfCB1bmRlZmluZWQsXG5cdFx0c3ViQ2F0ZWdvcnk/OiBzdHJpbmcgfCB1bmRlZmluZWRcblx0KTogdm9pZCB7XG5cdFx0Y29uc3QgY2hlY2tJZklzc3VlRXhpc3RzID0gdGhpcy5jaGVja0lmSXNzdWVFeGlzdHMoaXNzdWVDYXRlZ29yeSwgaXNzdWVTZXZlcml0eSwgZGV0YWlscywgaXNzdWVDYXRlZ29yeVR5cGUsIHN1YkNhdGVnb3J5KTtcblx0XHRpZiAoIWNoZWNrSWZJc3N1ZUV4aXN0cykge1xuXHRcdFx0dGhpcy5faXNzdWVzLnB1c2goe1xuXHRcdFx0XHRjYXRlZ29yeTogaXNzdWVDYXRlZ29yeSxcblx0XHRcdFx0c2V2ZXJpdHk6IGlzc3VlU2V2ZXJpdHksXG5cdFx0XHRcdGRldGFpbHM6IGRldGFpbHMsXG5cdFx0XHRcdHN1YkNhdGVnb3J5OiBzdWJDYXRlZ29yeVxuXHRcdFx0fSk7XG5cdFx0fVxuXHR9XG5cdGdldElzc3VlcygpOiBJc3N1ZURlZmluaXRpb25bXSB7XG5cdFx0cmV0dXJuIHRoaXMuX2lzc3Vlcztcblx0fVxuXHRnZXRJc3N1ZXNCeUNhdGVnb3J5KGluQ2F0ZWdvcnk6IElzc3VlQ2F0ZWdvcnksIHN1YkNhdGVnb3J5Pzogc3RyaW5nKTogSXNzdWVEZWZpbml0aW9uW10ge1xuXHRcdGlmIChzdWJDYXRlZ29yeSkge1xuXHRcdFx0cmV0dXJuIHRoaXMuX2lzc3Vlcy5maWx0ZXIoaXNzdWUgPT4gaXNzdWUuY2F0ZWdvcnkgPT09IGluQ2F0ZWdvcnkgJiYgaXNzdWUuc3ViQ2F0ZWdvcnkgPT09IHN1YkNhdGVnb3J5KTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0cmV0dXJuIHRoaXMuX2lzc3Vlcy5maWx0ZXIoaXNzdWUgPT4gaXNzdWUuY2F0ZWdvcnkgPT09IGluQ2F0ZWdvcnkpO1xuXHRcdH1cblx0fVxuXHRjaGVja0lmSXNzdWVFeGlzdHMoXG5cdFx0aW5DYXRlZ29yeTogSXNzdWVDYXRlZ29yeSxcblx0XHRzZXZlcml0eTogSXNzdWVTZXZlcml0eSxcblx0XHRkZXRhaWxzOiBzdHJpbmcsXG5cdFx0aXNzdWVDYXRlZ29yeVR5cGU/OiBhbnksXG5cdFx0aXNzdWVTdWJDYXRlZ29yeT86IHN0cmluZ1xuXHQpOiBib29sZWFuIHtcblx0XHRpZiAoaXNzdWVDYXRlZ29yeVR5cGUgJiYgaXNzdWVDYXRlZ29yeVR5cGVbaW5DYXRlZ29yeV0gJiYgaXNzdWVTdWJDYXRlZ29yeSkge1xuXHRcdFx0cmV0dXJuIHRoaXMuX2lzc3Vlcy5zb21lKFxuXHRcdFx0XHRpc3N1ZSA9PlxuXHRcdFx0XHRcdGlzc3VlLmNhdGVnb3J5ID09PSBpbkNhdGVnb3J5ICYmXG5cdFx0XHRcdFx0aXNzdWUuc2V2ZXJpdHkgPT09IHNldmVyaXR5ICYmXG5cdFx0XHRcdFx0aXNzdWUuZGV0YWlscy5yZXBsYWNlKC9cXG4vZywgXCJcIikgPT09IGRldGFpbHMucmVwbGFjZSgvXFxuL2csIFwiXCIpICYmXG5cdFx0XHRcdFx0aXNzdWUuc3ViQ2F0ZWdvcnkgPT09IGlzc3VlU3ViQ2F0ZWdvcnlcblx0XHRcdCk7XG5cdFx0fVxuXHRcdHJldHVybiB0aGlzLl9pc3N1ZXMuc29tZShcblx0XHRcdGlzc3VlID0+XG5cdFx0XHRcdGlzc3VlLmNhdGVnb3J5ID09PSBpbkNhdGVnb3J5ICYmXG5cdFx0XHRcdGlzc3VlLnNldmVyaXR5ID09PSBzZXZlcml0eSAmJlxuXHRcdFx0XHRpc3N1ZS5kZXRhaWxzLnJlcGxhY2UoL1xcbi9nLCBcIlwiKSA9PT0gZGV0YWlscy5yZXBsYWNlKC9cXG4vZywgXCJcIilcblx0XHQpO1xuXHR9XG59XG5cbmV4cG9ydCBkZWZhdWx0IERpYWdub3N0aWNzO1xuIl19
61
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIkRpYWdub3N0aWNzLnRzIl0sIm5hbWVzIjpbIkRpYWdub3N0aWNzIiwiX2lzc3VlcyIsImFkZElzc3VlIiwiaXNzdWVDYXRlZ29yeSIsImlzc3VlU2V2ZXJpdHkiLCJkZXRhaWxzIiwiaXNzdWVDYXRlZ29yeVR5cGUiLCJzdWJDYXRlZ29yeSIsImNoZWNrSWZJc3N1ZUV4aXN0cyIsInB1c2giLCJjYXRlZ29yeSIsInNldmVyaXR5IiwiZ2V0SXNzdWVzIiwiZ2V0SXNzdWVzQnlDYXRlZ29yeSIsImluQ2F0ZWdvcnkiLCJmaWx0ZXIiLCJpc3N1ZSIsImlzc3VlU3ViQ2F0ZWdvcnkiLCJzb21lIiwicmVwbGFjZSJdLCJtYXBwaW5ncyI6IjtBQUFBO0FBQ0E7QUFDQTs7OztNQU1NQSxXO0FBRUwsMkJBQWM7QUFDYixXQUFLQyxPQUFMLEdBQWUsRUFBZjtBQUNBOzs7O1dBQ0RDLFEsR0FBQSxrQkFDQ0MsYUFERCxFQUVDQyxhQUZELEVBR0NDLE9BSEQsRUFJQ0MsaUJBSkQsRUFLQ0MsV0FMRCxFQU1RO0FBQ1AsVUFBTUMsa0JBQWtCLEdBQUcsS0FBS0Esa0JBQUwsQ0FBd0JMLGFBQXhCLEVBQXVDQyxhQUF2QyxFQUFzREMsT0FBdEQsRUFBK0RDLGlCQUEvRCxFQUFrRkMsV0FBbEYsQ0FBM0I7O0FBQ0EsVUFBSSxDQUFDQyxrQkFBTCxFQUF5QjtBQUN4QixhQUFLUCxPQUFMLENBQWFRLElBQWIsQ0FBa0I7QUFDakJDLFVBQUFBLFFBQVEsRUFBRVAsYUFETztBQUVqQlEsVUFBQUEsUUFBUSxFQUFFUCxhQUZPO0FBR2pCQyxVQUFBQSxPQUFPLEVBQUVBLE9BSFE7QUFJakJFLFVBQUFBLFdBQVcsRUFBRUE7QUFKSSxTQUFsQjtBQU1BO0FBQ0QsSzs7V0FDREssUyxHQUFBLHFCQUErQjtBQUM5QixhQUFPLEtBQUtYLE9BQVo7QUFDQSxLOztXQUNEWSxtQixHQUFBLDZCQUFvQkMsVUFBcEIsRUFBK0NQLFdBQS9DLEVBQXdGO0FBQ3ZGLFVBQUlBLFdBQUosRUFBaUI7QUFDaEIsZUFBTyxLQUFLTixPQUFMLENBQWFjLE1BQWIsQ0FBb0IsVUFBQ0MsS0FBRDtBQUFBLGlCQUFXQSxLQUFLLENBQUNOLFFBQU4sS0FBbUJJLFVBQW5CLElBQWlDRSxLQUFLLENBQUNULFdBQU4sS0FBc0JBLFdBQWxFO0FBQUEsU0FBcEIsQ0FBUDtBQUNBLE9BRkQsTUFFTztBQUNOLGVBQU8sS0FBS04sT0FBTCxDQUFhYyxNQUFiLENBQW9CLFVBQUNDLEtBQUQ7QUFBQSxpQkFBV0EsS0FBSyxDQUFDTixRQUFOLEtBQW1CSSxVQUE5QjtBQUFBLFNBQXBCLENBQVA7QUFDQTtBQUNELEs7O1dBQ0ROLGtCLEdBQUEsNEJBQ0NNLFVBREQsRUFFQ0gsUUFGRCxFQUdDTixPQUhELEVBSUNDLGlCQUpELEVBS0NXLGdCQUxELEVBTVc7QUFDVixVQUFJWCxpQkFBaUIsSUFBSUEsaUJBQWlCLENBQUNRLFVBQUQsQ0FBdEMsSUFBc0RHLGdCQUExRCxFQUE0RTtBQUMzRSxlQUFPLEtBQUtoQixPQUFMLENBQWFpQixJQUFiLENBQ04sVUFBQ0YsS0FBRDtBQUFBLGlCQUNDQSxLQUFLLENBQUNOLFFBQU4sS0FBbUJJLFVBQW5CLElBQ0FFLEtBQUssQ0FBQ0wsUUFBTixLQUFtQkEsUUFEbkIsSUFFQUssS0FBSyxDQUFDWCxPQUFOLENBQWNjLE9BQWQsQ0FBc0IsS0FBdEIsRUFBNkIsRUFBN0IsTUFBcUNkLE9BQU8sQ0FBQ2MsT0FBUixDQUFnQixLQUFoQixFQUF1QixFQUF2QixDQUZyQyxJQUdBSCxLQUFLLENBQUNULFdBQU4sS0FBc0JVLGdCQUp2QjtBQUFBLFNBRE0sQ0FBUDtBQU9BOztBQUNELGFBQU8sS0FBS2hCLE9BQUwsQ0FBYWlCLElBQWIsQ0FDTixVQUFDRixLQUFEO0FBQUEsZUFDQ0EsS0FBSyxDQUFDTixRQUFOLEtBQW1CSSxVQUFuQixJQUNBRSxLQUFLLENBQUNMLFFBQU4sS0FBbUJBLFFBRG5CLElBRUFLLEtBQUssQ0FBQ1gsT0FBTixDQUFjYyxPQUFkLENBQXNCLEtBQXRCLEVBQTZCLEVBQTdCLE1BQXFDZCxPQUFPLENBQUNjLE9BQVIsQ0FBZ0IsS0FBaEIsRUFBdUIsRUFBdkIsQ0FIdEM7QUFBQSxPQURNLENBQVA7QUFNQSxLOzs7OztTQUdhbkIsVyIsInNvdXJjZVJvb3QiOiIuIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBJc3N1ZUNhdGVnb3J5LCBJc3N1ZVNldmVyaXR5IH0gZnJvbSBcInNhcC9mZS9jb3JlL2NvbnZlcnRlcnMvaGVscGVycy9Jc3N1ZU1hbmFnZXJcIjtcblxuZXhwb3J0IHR5cGUgSXNzdWVEZWZpbml0aW9uID0ge1xuXHRjYXRlZ29yeTogSXNzdWVDYXRlZ29yeTtcblx0c2V2ZXJpdHk6IElzc3VlU2V2ZXJpdHk7XG5cdGRldGFpbHM6IHN0cmluZztcblx0c3ViQ2F0ZWdvcnk/OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG59O1xuY2xhc3MgRGlhZ25vc3RpY3Mge1xuXHRfaXNzdWVzOiBJc3N1ZURlZmluaXRpb25bXTtcblx0Y29uc3RydWN0b3IoKSB7XG5cdFx0dGhpcy5faXNzdWVzID0gW107XG5cdH1cblx0YWRkSXNzdWUoXG5cdFx0aXNzdWVDYXRlZ29yeTogSXNzdWVDYXRlZ29yeSxcblx0XHRpc3N1ZVNldmVyaXR5OiBJc3N1ZVNldmVyaXR5LFxuXHRcdGRldGFpbHM6IHN0cmluZyxcblx0XHRpc3N1ZUNhdGVnb3J5VHlwZT86IGFueSB8IHVuZGVmaW5lZCxcblx0XHRzdWJDYXRlZ29yeT86IHN0cmluZyB8IHVuZGVmaW5lZFxuXHQpOiB2b2lkIHtcblx0XHRjb25zdCBjaGVja0lmSXNzdWVFeGlzdHMgPSB0aGlzLmNoZWNrSWZJc3N1ZUV4aXN0cyhpc3N1ZUNhdGVnb3J5LCBpc3N1ZVNldmVyaXR5LCBkZXRhaWxzLCBpc3N1ZUNhdGVnb3J5VHlwZSwgc3ViQ2F0ZWdvcnkpO1xuXHRcdGlmICghY2hlY2tJZklzc3VlRXhpc3RzKSB7XG5cdFx0XHR0aGlzLl9pc3N1ZXMucHVzaCh7XG5cdFx0XHRcdGNhdGVnb3J5OiBpc3N1ZUNhdGVnb3J5LFxuXHRcdFx0XHRzZXZlcml0eTogaXNzdWVTZXZlcml0eSxcblx0XHRcdFx0ZGV0YWlsczogZGV0YWlscyxcblx0XHRcdFx0c3ViQ2F0ZWdvcnk6IHN1YkNhdGVnb3J5XG5cdFx0XHR9KTtcblx0XHR9XG5cdH1cblx0Z2V0SXNzdWVzKCk6IElzc3VlRGVmaW5pdGlvbltdIHtcblx0XHRyZXR1cm4gdGhpcy5faXNzdWVzO1xuXHR9XG5cdGdldElzc3Vlc0J5Q2F0ZWdvcnkoaW5DYXRlZ29yeTogSXNzdWVDYXRlZ29yeSwgc3ViQ2F0ZWdvcnk/OiBzdHJpbmcpOiBJc3N1ZURlZmluaXRpb25bXSB7XG5cdFx0aWYgKHN1YkNhdGVnb3J5KSB7XG5cdFx0XHRyZXR1cm4gdGhpcy5faXNzdWVzLmZpbHRlcigoaXNzdWUpID0+IGlzc3VlLmNhdGVnb3J5ID09PSBpbkNhdGVnb3J5ICYmIGlzc3VlLnN1YkNhdGVnb3J5ID09PSBzdWJDYXRlZ29yeSk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHJldHVybiB0aGlzLl9pc3N1ZXMuZmlsdGVyKChpc3N1ZSkgPT4gaXNzdWUuY2F0ZWdvcnkgPT09IGluQ2F0ZWdvcnkpO1xuXHRcdH1cblx0fVxuXHRjaGVja0lmSXNzdWVFeGlzdHMoXG5cdFx0aW5DYXRlZ29yeTogSXNzdWVDYXRlZ29yeSxcblx0XHRzZXZlcml0eTogSXNzdWVTZXZlcml0eSxcblx0XHRkZXRhaWxzOiBzdHJpbmcsXG5cdFx0aXNzdWVDYXRlZ29yeVR5cGU/OiBhbnksXG5cdFx0aXNzdWVTdWJDYXRlZ29yeT86IHN0cmluZ1xuXHQpOiBib29sZWFuIHtcblx0XHRpZiAoaXNzdWVDYXRlZ29yeVR5cGUgJiYgaXNzdWVDYXRlZ29yeVR5cGVbaW5DYXRlZ29yeV0gJiYgaXNzdWVTdWJDYXRlZ29yeSkge1xuXHRcdFx0cmV0dXJuIHRoaXMuX2lzc3Vlcy5zb21lKFxuXHRcdFx0XHQoaXNzdWUpID0+XG5cdFx0XHRcdFx0aXNzdWUuY2F0ZWdvcnkgPT09IGluQ2F0ZWdvcnkgJiZcblx0XHRcdFx0XHRpc3N1ZS5zZXZlcml0eSA9PT0gc2V2ZXJpdHkgJiZcblx0XHRcdFx0XHRpc3N1ZS5kZXRhaWxzLnJlcGxhY2UoL1xcbi9nLCBcIlwiKSA9PT0gZGV0YWlscy5yZXBsYWNlKC9cXG4vZywgXCJcIikgJiZcblx0XHRcdFx0XHRpc3N1ZS5zdWJDYXRlZ29yeSA9PT0gaXNzdWVTdWJDYXRlZ29yeVxuXHRcdFx0KTtcblx0XHR9XG5cdFx0cmV0dXJuIHRoaXMuX2lzc3Vlcy5zb21lKFxuXHRcdFx0KGlzc3VlKSA9PlxuXHRcdFx0XHRpc3N1ZS5jYXRlZ29yeSA9PT0gaW5DYXRlZ29yeSAmJlxuXHRcdFx0XHRpc3N1ZS5zZXZlcml0eSA9PT0gc2V2ZXJpdHkgJiZcblx0XHRcdFx0aXNzdWUuZGV0YWlscy5yZXBsYWNlKC9cXG4vZywgXCJcIikgPT09IGRldGFpbHMucmVwbGFjZSgvXFxuL2csIFwiXCIpXG5cdFx0KTtcblx0fVxufVxuXG5leHBvcnQgZGVmYXVsdCBEaWFnbm9zdGljcztcbiJdfQ==