@sapui5/sap.fe.core 1.99.0 → 1.100.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +4 -2
- package/src/sap/fe/core/.library +1 -1
- package/src/sap/fe/core/AnnotationHelper.js +1 -69
- package/src/sap/fe/core/AnnotationHelper.ts +0 -70
- package/src/sap/fe/core/AppComponent.js +388 -399
- package/src/sap/fe/core/AppComponent.ts +403 -0
- package/src/sap/fe/core/AppStateHandler.js +127 -158
- package/src/sap/fe/core/BaseController.js +82 -58
- package/src/sap/fe/core/BaseController.ts +68 -0
- package/src/sap/fe/core/CommonUtils.js +111 -20
- package/src/sap/fe/core/CommonUtils.ts +131 -32
- package/src/sap/fe/core/ExtensionAPI.js +278 -274
- package/src/sap/fe/core/ExtensionAPI.ts +250 -0
- package/src/sap/fe/core/PageController.js +157 -29
- package/src/sap/fe/core/PageController.ts +60 -32
- package/src/sap/fe/core/RouterProxy.js +694 -756
- package/src/sap/fe/core/RouterProxy.ts +11 -9
- package/src/sap/fe/core/Synchronization.js +21 -31
- package/src/sap/fe/core/TemplateComponent.js +1 -1
- package/src/sap/fe/core/TemplateComponent.ts +10 -3
- package/src/sap/fe/core/TemplateModel.js +20 -38
- package/src/sap/fe/core/TemplateModel.ts +1 -1
- package/src/sap/fe/core/TransactionHelper.js +1354 -1370
- package/src/sap/fe/core/TransactionHelper.ts +33 -22
- package/src/sap/fe/core/actions/collaboration/ActivitySync.js +392 -0
- package/src/sap/fe/core/actions/collaboration/ActivitySync.ts +355 -0
- package/src/sap/fe/core/actions/collaboration/CollaborationCommon.js +136 -0
- package/src/sap/fe/core/actions/collaboration/CollaborationCommon.ts +119 -0
- package/src/sap/fe/core/actions/collaboration/Manage.js +262 -0
- package/src/sap/fe/core/actions/collaboration/Manage.ts +244 -0
- package/src/sap/fe/core/actions/collaboration/ManageDialog.fragment.xml +103 -0
- package/src/sap/fe/core/actions/collaboration/UserDetails.fragment.xml +13 -0
- package/src/sap/fe/core/actions/draft.js +30 -68
- package/src/sap/fe/core/actions/draft.ts +44 -71
- package/src/sap/fe/core/actions/messageHandling.js +55 -36
- package/src/sap/fe/core/actions/messageHandling.ts +66 -46
- package/src/sap/fe/core/actions/operations.js +34 -15
- package/src/sap/fe/core/actions/operations.ts +48 -18
- package/src/sap/fe/core/actions/sticky.js +17 -4
- package/src/sap/fe/core/actions/sticky.ts +21 -4
- package/src/sap/fe/core/controllerextensions/ControllerExtensionMetadata.js +69 -66
- package/src/sap/fe/core/controllerextensions/ControllerExtensionMetadata.ts +65 -0
- package/src/sap/fe/core/controllerextensions/EditFlow.js +1593 -1669
- package/src/sap/fe/core/controllerextensions/EditFlow.ts +1672 -0
- package/src/sap/fe/core/controllerextensions/IntentBasedNavigation.js +79 -54
- package/src/sap/fe/core/controllerextensions/IntentBasedNavigation.ts +61 -0
- package/src/sap/fe/core/controllerextensions/InternalEditFlow.js +718 -779
- package/src/sap/fe/core/controllerextensions/InternalEditFlow.ts +783 -0
- package/src/sap/fe/core/controllerextensions/InternalIntentBasedNavigation.js +796 -816
- package/src/sap/fe/core/controllerextensions/InternalIntentBasedNavigation.ts +803 -0
- package/src/sap/fe/core/controllerextensions/InternalRouting.js +1004 -1005
- package/src/sap/fe/core/controllerextensions/InternalRouting.ts +978 -0
- package/src/sap/fe/core/controllerextensions/KPIManagement.js +487 -521
- package/src/sap/fe/core/controllerextensions/KPIManagement.ts +2 -2
- package/src/sap/fe/core/controllerextensions/MassEdit.js +141 -169
- package/src/sap/fe/core/controllerextensions/MassEdit.ts +156 -0
- package/src/sap/fe/core/controllerextensions/MessageHandler.js +233 -244
- package/src/sap/fe/core/controllerextensions/MessageHandler.ts +225 -0
- package/src/sap/fe/core/controllerextensions/PageReady.js +301 -336
- package/src/sap/fe/core/controllerextensions/PageReady.ts +12 -10
- package/src/sap/fe/core/controllerextensions/Paginator.js +188 -175
- package/src/sap/fe/core/controllerextensions/Paginator.ts +163 -0
- package/src/sap/fe/core/controllerextensions/Placeholder.js +157 -149
- package/src/sap/fe/core/controllerextensions/Placeholder.ts +151 -0
- package/src/sap/fe/core/controllerextensions/Routing.js +144 -125
- package/src/sap/fe/core/controllerextensions/Routing.ts +132 -0
- package/src/sap/fe/core/controllerextensions/RoutingListener.js +7 -6
- package/src/sap/fe/core/controllerextensions/RoutingListener.ts +3 -0
- package/src/sap/fe/core/controllerextensions/Share.js +230 -268
- package/src/sap/fe/core/controllerextensions/Share.ts +231 -0
- package/src/sap/fe/core/controllerextensions/SideEffects.js +592 -633
- package/src/sap/fe/core/controllerextensions/SideEffects.ts +8 -7
- package/src/sap/fe/core/controllerextensions/ViewState.js +788 -806
- package/src/sap/fe/core/controllerextensions/ViewState.ts +805 -0
- package/src/sap/fe/core/controls/ActionParameterDialog.fragment.xml +2 -2
- package/src/sap/fe/core/controls/ActionPartial.fragment.xml +2 -2
- package/src/sap/fe/core/controls/CommandExecution.js +67 -66
- package/src/sap/fe/core/controls/CommandExecution.ts +72 -0
- package/src/sap/fe/core/controls/ConditionalWrapper.js +90 -75
- package/src/sap/fe/core/controls/ConditionalWrapper.ts +83 -0
- package/src/sap/fe/core/controls/CustomQuickViewPage.js +130 -125
- package/src/sap/fe/core/controls/CustomQuickViewPage.ts +126 -0
- package/src/sap/fe/core/controls/DataLossOrDraftDiscard/DataLossOrDraftDiscardHandler.js +103 -112
- package/src/sap/fe/core/controls/DataLossOrDraftDiscard/DataLossOrDraftDiscardHandler.ts +101 -0
- package/src/sap/fe/core/controls/FieldWrapper.js +122 -135
- package/src/sap/fe/core/controls/FieldWrapper.ts +115 -0
- package/src/sap/fe/core/controls/FilterBar.js +162 -159
- package/src/sap/fe/core/controls/FilterBar.ts +143 -0
- package/src/sap/fe/core/controls/FormElementWrapper.js +45 -39
- package/src/sap/fe/core/controls/FormElementWrapper.ts +40 -0
- package/src/sap/fe/core/controls/MultiValueParameterDelegate.js +37 -42
- package/src/sap/fe/core/controls/MultiValueParameterDelegate.ts +31 -0
- package/src/sap/fe/core/controls/filterbar/FilterContainer.js +126 -116
- package/src/sap/fe/core/controls/filterbar/FilterContainer.ts +98 -0
- package/src/sap/fe/core/controls/filterbar/VisualFilter.js +241 -255
- package/src/sap/fe/core/controls/filterbar/VisualFilter.ts +245 -0
- package/src/sap/fe/core/controls/filterbar/VisualFilterContainer.js +150 -141
- package/src/sap/fe/core/controls/filterbar/VisualFilterContainer.ts +125 -0
- package/src/sap/fe/core/controls/filterbar/utils/VisualFilterUtils.js +335 -322
- package/src/sap/fe/core/controls/filterbar/utils/VisualFilterUtils.ts +337 -0
- package/src/sap/fe/core/controls/massEdit/MassEditHandlers.js +74 -74
- package/src/sap/fe/core/controls/massEdit/MassEditHandlers.ts +70 -0
- package/src/sap/fe/core/converters/ConverterContext.js +348 -379
- package/src/sap/fe/core/converters/ConverterContext.ts +19 -16
- package/src/sap/fe/core/converters/ManifestSettings.js +12 -1
- package/src/sap/fe/core/converters/ManifestSettings.ts +12 -1
- package/src/sap/fe/core/converters/ManifestWrapper.js +354 -378
- package/src/sap/fe/core/converters/ManifestWrapper.ts +10 -0
- package/src/sap/fe/core/converters/MetaModelConverter.js +6 -4
- package/src/sap/fe/core/converters/MetaModelConverter.ts +5 -2
- package/src/sap/fe/core/converters/TemplateConverter.js +1 -1
- package/src/sap/fe/core/converters/TemplateConverter.ts +2 -1
- package/src/sap/fe/core/converters/annotations/DataField.js +26 -12
- package/src/sap/fe/core/converters/annotations/DataField.ts +37 -13
- package/src/sap/fe/core/converters/controls/Common/Form.js +2 -2
- package/src/sap/fe/core/converters/controls/Common/Form.ts +4 -2
- package/src/sap/fe/core/converters/controls/Common/KPI.js +1 -1
- package/src/sap/fe/core/converters/controls/Common/KPI.ts +3 -2
- package/src/sap/fe/core/converters/controls/Common/Table.js +130 -23
- package/src/sap/fe/core/converters/controls/Common/Table.ts +134 -29
- package/src/sap/fe/core/converters/controls/Common/table/StandardActions.js +118 -53
- package/src/sap/fe/core/converters/controls/Common/table/StandardActions.ts +156 -93
- package/src/sap/fe/core/converters/controls/ListReport/FilterBar.js +161 -207
- package/src/sap/fe/core/converters/controls/ListReport/FilterBar.ts +148 -206
- package/src/sap/fe/core/converters/helpers/Aggregation.js +115 -133
- package/src/sap/fe/core/converters/helpers/BindingHelper.js +20 -6
- package/src/sap/fe/core/converters/helpers/BindingHelper.ts +16 -4
- package/src/sap/fe/core/converters/helpers/ConfigurableObject.js +12 -1
- package/src/sap/fe/core/converters/helpers/ConfigurableObject.ts +11 -0
- package/src/sap/fe/core/converters/helpers/Key.js +42 -57
- package/src/sap/fe/core/converters/helpers/Key.ts +1 -1
- package/src/sap/fe/core/converters/objectPage/HeaderAndFooterAction.js +25 -4
- package/src/sap/fe/core/converters/objectPage/HeaderAndFooterAction.ts +20 -3
- package/src/sap/fe/core/converters/templates/ListReportConverter.js +10 -4
- package/src/sap/fe/core/converters/templates/ListReportConverter.ts +15 -4
- package/src/sap/fe/core/converters/templates/ObjectPageConverter.js +7 -5
- package/src/sap/fe/core/converters/templates/ObjectPageConverter.ts +5 -1
- package/src/sap/fe/core/designtime/AppComponent.designtime.js +92 -98
- package/src/sap/fe/core/designtime/AppComponent.designtime.ts +91 -0
- package/src/sap/fe/core/formatters/CollaborationFormatter.js +104 -0
- package/src/sap/fe/core/formatters/CollaborationFormatter.ts +60 -0
- package/src/sap/fe/core/formatters/TableFormatter.js +53 -2
- package/src/sap/fe/core/formatters/TableFormatter.ts +51 -0
- package/src/sap/fe/core/fpm/Component.js +50 -54
- package/src/sap/fe/core/fpm/Component.ts +48 -0
- package/src/sap/fe/core/helpers/AppStartupHelper.js +323 -309
- package/src/sap/fe/core/helpers/AppStartupHelper.ts +363 -337
- package/src/sap/fe/core/helpers/BindingExpression.js +7 -7
- package/src/sap/fe/core/helpers/BindingExpression.ts +7 -7
- package/src/sap/fe/core/helpers/ClassSupport.js +186 -62
- package/src/sap/fe/core/helpers/ClassSupport.ts +168 -52
- package/src/sap/fe/core/helpers/DynamicAnnotationPathHelper.js +5 -4
- package/src/sap/fe/core/helpers/DynamicAnnotationPathHelper.ts +1 -5
- package/src/sap/fe/core/helpers/FPMHelper.js +1 -1
- package/src/sap/fe/core/helpers/FPMHelper.ts +1 -1
- package/src/sap/fe/core/helpers/MassEditHelper.js +601 -684
- package/src/sap/fe/core/helpers/MassEditHelper.ts +699 -0
- package/src/sap/fe/core/helpers/ModelHelper.js +25 -1
- package/src/sap/fe/core/helpers/ModelHelper.ts +23 -0
- package/src/sap/fe/core/helpers/SemanticDateOperators.js +5 -1
- package/src/sap/fe/core/helpers/SemanticDateOperators.ts +4 -0
- package/src/sap/fe/core/library.js +426 -451
- package/src/sap/fe/core/library.support.js +22 -33
- package/src/sap/fe/core/library.support.ts +23 -0
- package/src/sap/fe/core/library.ts +420 -0
- package/src/sap/fe/core/manifestMerger/ChangePageConfiguration.js +5 -3
- package/src/sap/fe/core/manifestMerger/ChangePageConfiguration.ts +4 -1
- package/src/sap/fe/core/messagebundle.properties +22 -5
- package/src/sap/fe/core/messagebundle_ar.properties +27 -7
- package/src/sap/fe/core/messagebundle_bg.properties +27 -7
- package/src/sap/fe/core/messagebundle_ca.properties +27 -7
- package/src/sap/fe/core/messagebundle_cs.properties +27 -7
- package/src/sap/fe/core/messagebundle_cy.properties +27 -7
- package/src/sap/fe/core/messagebundle_da.properties +27 -7
- package/src/sap/fe/core/messagebundle_de.properties +27 -7
- package/src/sap/fe/core/messagebundle_el.properties +27 -7
- package/src/sap/fe/core/messagebundle_en.properties +27 -7
- package/src/sap/fe/core/messagebundle_en_GB.properties +27 -7
- package/src/sap/fe/core/messagebundle_en_US_sappsd.properties +27 -7
- package/src/sap/fe/core/messagebundle_en_US_saprigi.properties +27 -7
- package/src/sap/fe/core/messagebundle_en_US_saptrc.properties +27 -7
- package/src/sap/fe/core/messagebundle_es.properties +27 -7
- package/src/sap/fe/core/messagebundle_es_MX.properties +27 -7
- package/src/sap/fe/core/messagebundle_et.properties +27 -7
- package/src/sap/fe/core/messagebundle_fi.properties +28 -8
- package/src/sap/fe/core/messagebundle_fr.properties +28 -8
- package/src/sap/fe/core/messagebundle_fr_CA.properties +29 -9
- package/src/sap/fe/core/messagebundle_hi.properties +27 -7
- package/src/sap/fe/core/messagebundle_hr.properties +27 -7
- package/src/sap/fe/core/messagebundle_hu.properties +27 -7
- package/src/sap/fe/core/messagebundle_id.properties +27 -7
- package/src/sap/fe/core/messagebundle_it.properties +27 -7
- package/src/sap/fe/core/messagebundle_iw.properties +27 -7
- package/src/sap/fe/core/messagebundle_ja.properties +26 -6
- package/src/sap/fe/core/messagebundle_kk.properties +27 -7
- package/src/sap/fe/core/messagebundle_ko.properties +27 -7
- package/src/sap/fe/core/messagebundle_lt.properties +27 -7
- package/src/sap/fe/core/messagebundle_lv.properties +28 -8
- package/src/sap/fe/core/messagebundle_ms.properties +27 -7
- package/src/sap/fe/core/messagebundle_nl.properties +27 -7
- package/src/sap/fe/core/messagebundle_no.properties +27 -7
- package/src/sap/fe/core/messagebundle_pl.properties +27 -7
- package/src/sap/fe/core/messagebundle_pt.properties +28 -8
- package/src/sap/fe/core/messagebundle_pt_PT.properties +27 -7
- package/src/sap/fe/core/messagebundle_ro.properties +27 -7
- package/src/sap/fe/core/messagebundle_ru.properties +27 -7
- package/src/sap/fe/core/messagebundle_sh.properties +27 -7
- package/src/sap/fe/core/messagebundle_sk.properties +27 -7
- package/src/sap/fe/core/messagebundle_sl.properties +27 -7
- package/src/sap/fe/core/messagebundle_sv.properties +27 -7
- package/src/sap/fe/core/messagebundle_th.properties +26 -6
- package/src/sap/fe/core/messagebundle_tr.properties +30 -10
- package/src/sap/fe/core/messagebundle_uk.properties +27 -7
- package/src/sap/fe/core/messagebundle_vi.properties +27 -7
- package/src/sap/fe/core/messagebundle_zh_CN.properties +27 -7
- package/src/sap/fe/core/messagebundle_zh_TW.properties +27 -7
- package/src/sap/fe/core/services/AsyncComponentServiceFactory.js +45 -71
- package/src/sap/fe/core/services/CacheHandlerServiceFactory.js +154 -192
- package/src/sap/fe/core/services/CacheHandlerServiceFactory.ts +4 -4
- package/src/sap/fe/core/services/EnvironmentServiceFactory.js +66 -92
- package/src/sap/fe/core/services/EnvironmentServiceFactory.ts +1 -1
- package/src/sap/fe/core/services/NavigationServiceFactory.js +284 -339
- package/src/sap/fe/core/services/NavigationServiceFactory.ts +10 -13
- package/src/sap/fe/core/services/ResourceModelServiceFactory.js +67 -102
- package/src/sap/fe/core/services/ResourceModelServiceFactory.ts +5 -2
- package/src/sap/fe/core/services/RoutingServiceFactory.js +754 -814
- package/src/sap/fe/core/services/RoutingServiceFactory.ts +13 -13
- package/src/sap/fe/core/services/ShellServicesFactory.js +649 -736
- package/src/sap/fe/core/services/ShellServicesFactory.ts +7 -4
- package/src/sap/fe/core/services/SideEffectsServiceFactory.js +567 -592
- package/src/sap/fe/core/services/SideEffectsServiceFactory.ts +22 -3
- package/src/sap/fe/core/services/TemplatedViewServiceFactory.js +354 -386
- package/src/sap/fe/core/services/TemplatedViewServiceFactory.ts +21 -14
- package/src/sap/fe/core/services/view/TemplatingErrorPage.controller.js +1 -1
- package/src/sap/fe/core/services/view/TemplatingErrorPage.controller.ts +1 -1
- package/src/sap/fe/core/support/CommonHelper.js +1 -1
- package/src/sap/fe/core/support/CommonHelper.ts +1 -1
- package/src/sap/fe/core/support/Diagnostics.js +36 -48
- package/src/sap/fe/core/templating/DataModelPathHelper.js +93 -85
- package/src/sap/fe/core/templating/DataModelPathHelper.ts +104 -95
- package/src/sap/fe/core/templating/FilterHelper.js +25 -32
- package/src/sap/fe/core/templating/FilterHelper.ts +36 -35
- package/src/sap/fe/core/templating/PropertyHelper.js +2 -2
- package/src/sap/fe/core/templating/PropertyHelper.ts +1 -1
- package/src/sap/fe/core/templating/UIFormatters.js +32 -26
- package/src/sap/fe/core/templating/UIFormatters.ts +37 -24
|
@@ -1,403 +1,392 @@
|
|
|
1
1
|
/*!
|
|
2
2
|
* SAP UI development toolkit for HTML5 (SAPUI5)
|
|
3
|
-
|
|
4
|
-
|
|
3
|
+
* (c) Copyright 2009-2021 SAP SE. All rights reserved
|
|
5
4
|
*/
|
|
5
|
+
sap.ui.define(["sap/ui/core/UIComponent", "sap/fe/core/RouterProxy", "sap/fe/core/AppStateHandler", "sap/base/Log", "sap/fe/core/support/Diagnostics", "sap/ui/model/json/JSONModel", "sap/fe/core/library", "sap/fe/core/helpers/ModelHelper", "sap/fe/macros/internal/valuehelp/ValueListHelper", "sap/fe/core/helpers/ClassSupport", "sap/ui/core/ComponentMetadata", "./converters/MetaModelConverter"], function (UIComponent, RouterProxy, AppStateHandler, Log, Diagnostics, JSONModel, library, ModelHelper, ValueListHelper, ClassSupport, ComponentMetadata, MetaModelConverter) {
|
|
6
|
+
"use strict";
|
|
6
7
|
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
restore: function() {
|
|
392
|
-
// called by FLP when app sap-keep-alive is enabled and app is restored
|
|
393
|
-
this.getRootViewController().viewState.onRestore();
|
|
394
|
-
},
|
|
395
|
-
suspend: function() {
|
|
396
|
-
// called by FLP when app sap-keep-alive is enabled and app is suspended
|
|
397
|
-
this.getRootViewController().viewState.onSuspend();
|
|
398
|
-
}
|
|
399
|
-
});
|
|
400
|
-
|
|
401
|
-
return AppComponent;
|
|
402
|
-
}
|
|
403
|
-
);
|
|
8
|
+
var _dec, _class, _class2, _temp;
|
|
9
|
+
|
|
10
|
+
var deleteModelCacheData = MetaModelConverter.deleteModelCacheData;
|
|
11
|
+
var UI5Class = ClassSupport.UI5Class;
|
|
12
|
+
|
|
13
|
+
function _get() { if (typeof Reflect !== "undefined" && Reflect.get) { _get = Reflect.get; } else { _get = function _get(target, property, receiver) { var base = _superPropBase(target, property); if (!base) return; var desc = Object.getOwnPropertyDescriptor(base, property); if (desc.get) { return desc.get.call(arguments.length < 3 ? target : receiver); } return desc.value; }; } return _get.apply(this, arguments); }
|
|
14
|
+
|
|
15
|
+
function _superPropBase(object, property) { while (!Object.prototype.hasOwnProperty.call(object, property)) { object = _getPrototypeOf(object); if (object === null) break; } return object; }
|
|
16
|
+
|
|
17
|
+
function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }
|
|
18
|
+
|
|
19
|
+
function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }
|
|
20
|
+
|
|
21
|
+
function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }
|
|
22
|
+
|
|
23
|
+
var NAVCONF = {
|
|
24
|
+
FCL: {
|
|
25
|
+
VIEWNAME: "sap.fe.templates.RootContainer.view.Fcl",
|
|
26
|
+
ROUTERCLASS: "sap.f.routing.Router"
|
|
27
|
+
},
|
|
28
|
+
NAVCONTAINER: {
|
|
29
|
+
VIEWNAME: "sap.fe.templates.RootContainer.view.NavContainer",
|
|
30
|
+
ROUTERCLASS: "sap.m.routing.Router"
|
|
31
|
+
}
|
|
32
|
+
};
|
|
33
|
+
/**
|
|
34
|
+
* Main class for components used for an application in SAP Fiori elements.
|
|
35
|
+
*
|
|
36
|
+
* Application developers using the templates and building blocks provided by SAP Fiori elements should create their apps by extending this component.
|
|
37
|
+
* This ensures that all the necessary services that you need for the building blocks and templates to work properly are started.
|
|
38
|
+
*
|
|
39
|
+
* When you use sap.fe.core.AppComponent as the base component, you also need to use a rootView. SAP Fiori elements provides two options: <br/>
|
|
40
|
+
* - sap.fe.templates.RootContainer.view.NavContainer when using sap.m.routing.Router <br/>
|
|
41
|
+
* - sap.fe.templates.RootContainer.view.Fcl when using sap.f.routing.Router (FCL use case) <br/>
|
|
42
|
+
*
|
|
43
|
+
* @hideconstructor
|
|
44
|
+
* @public
|
|
45
|
+
* @name sap.fe.core.AppComponent
|
|
46
|
+
*/
|
|
47
|
+
|
|
48
|
+
var AppComponent = (_dec = UI5Class("sap.fe.core.AppComponent", ComponentMetadata, {
|
|
49
|
+
interfaces: ["sap.ui.core.IAsyncContentCreation"],
|
|
50
|
+
config: {
|
|
51
|
+
fullWidth: true
|
|
52
|
+
},
|
|
53
|
+
manifest: {
|
|
54
|
+
"sap.ui5": {
|
|
55
|
+
services: {
|
|
56
|
+
resourceModel: {
|
|
57
|
+
factoryName: "sap.fe.core.services.ResourceModelService",
|
|
58
|
+
"startup": "waitFor",
|
|
59
|
+
"settings": {
|
|
60
|
+
"bundles": ["sap.fe.core.messagebundle"],
|
|
61
|
+
"modelName": "sap.fe.i18n"
|
|
62
|
+
}
|
|
63
|
+
},
|
|
64
|
+
routingService: {
|
|
65
|
+
factoryName: "sap.fe.core.services.RoutingService",
|
|
66
|
+
startup: "waitFor"
|
|
67
|
+
},
|
|
68
|
+
shellServices: {
|
|
69
|
+
factoryName: "sap.fe.core.services.ShellServices",
|
|
70
|
+
startup: "waitFor"
|
|
71
|
+
},
|
|
72
|
+
ShellUIService: {
|
|
73
|
+
factoryName: "sap.ushell.ui5service.ShellUIService"
|
|
74
|
+
},
|
|
75
|
+
navigationService: {
|
|
76
|
+
factoryName: "sap.fe.core.services.NavigationService",
|
|
77
|
+
startup: "waitFor"
|
|
78
|
+
},
|
|
79
|
+
environmentCapabilities: {
|
|
80
|
+
factoryName: "sap.fe.core.services.EnvironmentService",
|
|
81
|
+
startup: "waitFor"
|
|
82
|
+
},
|
|
83
|
+
sideEffectsService: {
|
|
84
|
+
factoryName: "sap.fe.core.services.SideEffectsService",
|
|
85
|
+
startup: "waitFor"
|
|
86
|
+
},
|
|
87
|
+
asyncComponentService: {
|
|
88
|
+
factoryName: "sap.fe.core.services.AsyncComponentService",
|
|
89
|
+
startup: "waitFor"
|
|
90
|
+
}
|
|
91
|
+
},
|
|
92
|
+
rootView: {
|
|
93
|
+
viewName: NAVCONF.NAVCONTAINER.VIEWNAME,
|
|
94
|
+
type: "XML",
|
|
95
|
+
async: true,
|
|
96
|
+
id: "appRootView"
|
|
97
|
+
},
|
|
98
|
+
routing: {
|
|
99
|
+
config: {
|
|
100
|
+
controlId: "appContent",
|
|
101
|
+
routerClass: NAVCONF.NAVCONTAINER.ROUTERCLASS,
|
|
102
|
+
viewType: "XML",
|
|
103
|
+
controlAggregation: "pages",
|
|
104
|
+
async: true,
|
|
105
|
+
containerOptions: {
|
|
106
|
+
propagateModel: true
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
},
|
|
112
|
+
designtime: "sap/fe/core/designtime/AppComponent.designtime",
|
|
113
|
+
library: "sap.fe.core"
|
|
114
|
+
}), _dec(_class = (_temp = _class2 = /*#__PURE__*/function (_UIComponent) {
|
|
115
|
+
_inherits(AppComponent, _UIComponent);
|
|
116
|
+
|
|
117
|
+
function AppComponent() {
|
|
118
|
+
return _UIComponent.apply(this, arguments) || this;
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
var _proto = AppComponent.prototype;
|
|
122
|
+
|
|
123
|
+
/**
|
|
124
|
+
* @private
|
|
125
|
+
* @name sap.fe.core.AppComponent.getMetadata
|
|
126
|
+
* @function
|
|
127
|
+
*/
|
|
128
|
+
_proto._isFclEnabled = function _isFclEnabled() {
|
|
129
|
+
var oManifestUI5 = this.getMetadata().getManifestEntry("/sap.ui5", true);
|
|
130
|
+
return NAVCONF.FCL.VIEWNAME === oManifestUI5.rootView.viewName;
|
|
131
|
+
}
|
|
132
|
+
/**
|
|
133
|
+
* Get a reference to the RouterProxy.
|
|
134
|
+
*
|
|
135
|
+
* @function
|
|
136
|
+
* @name sap.fe.core.AppComponent#getRouterProxy
|
|
137
|
+
* @memberof sap.fe.core.AppComponent
|
|
138
|
+
* @returns {oObject} A Reference to the RouterProxy
|
|
139
|
+
*
|
|
140
|
+
* @ui5-restricted
|
|
141
|
+
* @final
|
|
142
|
+
*/
|
|
143
|
+
;
|
|
144
|
+
|
|
145
|
+
_proto.getRouterProxy = function getRouterProxy() {
|
|
146
|
+
return this._oRouterProxy;
|
|
147
|
+
}
|
|
148
|
+
/**
|
|
149
|
+
* Get a reference to the AppStateHandler.
|
|
150
|
+
*
|
|
151
|
+
* @function
|
|
152
|
+
* @name sap.fe.core.AppComponent#getAppStateHandler
|
|
153
|
+
* @memberof sap.fe.core.AppComponent
|
|
154
|
+
* @returns {oObject} A reference to the AppStateHandler
|
|
155
|
+
*
|
|
156
|
+
* @ui5-restricted
|
|
157
|
+
* @final
|
|
158
|
+
*/
|
|
159
|
+
;
|
|
160
|
+
|
|
161
|
+
_proto.getAppStateHandler = function getAppStateHandler() {
|
|
162
|
+
return this._oAppStateHandler;
|
|
163
|
+
}
|
|
164
|
+
/**
|
|
165
|
+
* Get a reference to the nav/FCL Controller.
|
|
166
|
+
*
|
|
167
|
+
* @function
|
|
168
|
+
* @name sap.fe.core.AppComponent#getRootViewController
|
|
169
|
+
* @memberof sap.fe.core.AppComponent
|
|
170
|
+
* @returns {oObject} A reference to the FCL Controller
|
|
171
|
+
*
|
|
172
|
+
* @ui5-restricted
|
|
173
|
+
* @final
|
|
174
|
+
*/
|
|
175
|
+
;
|
|
176
|
+
|
|
177
|
+
_proto.getRootViewController = function getRootViewController() {
|
|
178
|
+
return this.getRootControl().getController();
|
|
179
|
+
}
|
|
180
|
+
/**
|
|
181
|
+
* Get the NavContainer control or the FCL control.
|
|
182
|
+
*
|
|
183
|
+
* @function
|
|
184
|
+
* @name sap.fe.core.AppComponent#getRootContainer
|
|
185
|
+
* @memberof sap.fe.core.AppComponent
|
|
186
|
+
* @returns {oObject} A reference to NavContainer control or the FCL control
|
|
187
|
+
*
|
|
188
|
+
* @ui5-restricted
|
|
189
|
+
* @final
|
|
190
|
+
*/
|
|
191
|
+
;
|
|
192
|
+
|
|
193
|
+
_proto.getRootContainer = function getRootContainer() {
|
|
194
|
+
return this.getRootControl().getContent()[0];
|
|
195
|
+
};
|
|
196
|
+
|
|
197
|
+
_proto.init = function init() {
|
|
198
|
+
this.setModel(new JSONModel({
|
|
199
|
+
editMode: library.EditMode.Display,
|
|
200
|
+
isEditable: false,
|
|
201
|
+
draftStatus: library.DraftStatus.Clear,
|
|
202
|
+
busy: false,
|
|
203
|
+
busyLocal: {},
|
|
204
|
+
pages: {}
|
|
205
|
+
}), "ui");
|
|
206
|
+
var oInternalModel = new JSONModel({
|
|
207
|
+
pages: {}
|
|
208
|
+
});
|
|
209
|
+
ModelHelper.enhanceInternalJSONModel(oInternalModel);
|
|
210
|
+
this.setModel(oInternalModel, "internal");
|
|
211
|
+
this.bInitializeRouting = this.bInitializeRouting !== undefined ? this.bInitializeRouting : true;
|
|
212
|
+
this._oRouterProxy = new RouterProxy();
|
|
213
|
+
this._oAppStateHandler = new AppStateHandler(this);
|
|
214
|
+
this._oDiagnostics = new Diagnostics();
|
|
215
|
+
var oModel = this.getModel();
|
|
216
|
+
|
|
217
|
+
if (oModel) {
|
|
218
|
+
this.entityContainer = oModel.getMetaModel().requestObject("/$EntityContainer/");
|
|
219
|
+
}
|
|
220
|
+
|
|
221
|
+
var oManifestUI5 = this.getMetadata().getManifestEntry("/sap.ui5", true);
|
|
222
|
+
|
|
223
|
+
if (oManifestUI5.rootView.viewName === NAVCONF.FCL.VIEWNAME && oManifestUI5.routing.config.routerClass === NAVCONF.FCL.ROUTERCLASS) {
|
|
224
|
+
Log.info('Rootcontainer: "' + NAVCONF.FCL.VIEWNAME + '" - Routerclass: "' + NAVCONF.FCL.ROUTERCLASS + '"');
|
|
225
|
+
} else if (oManifestUI5.rootView.viewName === NAVCONF.NAVCONTAINER.VIEWNAME && oManifestUI5.routing.config.routerClass === NAVCONF.NAVCONTAINER.ROUTERCLASS) {
|
|
226
|
+
Log.info('Rootcontainer: "' + NAVCONF.NAVCONTAINER.VIEWNAME + '" - Routerclass: "' + NAVCONF.NAVCONTAINER.ROUTERCLASS + '"');
|
|
227
|
+
} else if (oManifestUI5.rootView.viewName.indexOf("sap.fe") !== -1) {
|
|
228
|
+
throw Error("\nWrong configuration for the couple (rootView/routerClass) in manifest file.\n" + "Current values are :(" + oManifestUI5.rootView.viewName + "/" + oManifestUI5.routing.config.routerClass + ")\n" + "Expected values are \n" + "\t - (" + NAVCONF.NAVCONTAINER.VIEWNAME + "/" + NAVCONF.NAVCONTAINER.ROUTERCLASS + ")\n" + "\t - (" + NAVCONF.FCL.VIEWNAME + "/" + NAVCONF.FCL.ROUTERCLASS + ")");
|
|
229
|
+
} else {
|
|
230
|
+
Log.info('Rootcontainer: "' + oManifestUI5.rootView.viewName + '" - Routerclass: "' + NAVCONF.NAVCONTAINER.ROUTERCLASS + '"');
|
|
231
|
+
} // Adding Semantic Date Operators
|
|
232
|
+
// Commenting since it is not needed for SingleRange
|
|
233
|
+
// SemanticDateOperators.addSemanticDateOperators();
|
|
234
|
+
// the init function configures the routing according to the settings above
|
|
235
|
+
// it will call the createContent function to instantiate the RootView and add it to the UIComponent aggregations
|
|
236
|
+
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
|
237
|
+
// @ts-ignore
|
|
238
|
+
|
|
239
|
+
|
|
240
|
+
for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
|
|
241
|
+
args[_key] = arguments[_key];
|
|
242
|
+
}
|
|
243
|
+
|
|
244
|
+
UIComponent.prototype.init.apply(this, args);
|
|
245
|
+
AppComponent.instanceMap[this.getId()] = this;
|
|
246
|
+
};
|
|
247
|
+
|
|
248
|
+
_proto.onServicesStarted = function onServicesStarted() {
|
|
249
|
+
var _this = this;
|
|
250
|
+
|
|
251
|
+
//router must be started once the rootcontainer is initialized
|
|
252
|
+
//starting of the router
|
|
253
|
+
var finalizedRoutingInitialization = function () {
|
|
254
|
+
_this.entityContainer.then(function () {
|
|
255
|
+
if (_this.getRootViewController().attachRouteMatchers) {
|
|
256
|
+
_this.getRootViewController().attachRouteMatchers();
|
|
257
|
+
}
|
|
258
|
+
|
|
259
|
+
_this.getRouter().initialize();
|
|
260
|
+
|
|
261
|
+
_this.getRouterProxy().init(_this, _this._isFclEnabled());
|
|
262
|
+
}).catch(function (error) {
|
|
263
|
+
var oResourceBundle = sap.ui.getCore().getLibraryResourceBundle("sap.fe.core");
|
|
264
|
+
|
|
265
|
+
_this.getRootViewController().displayMessagePage(oResourceBundle.getText("C_APP_COMPONENT_SAPFE_APPSTART_TECHNICAL_ISSUES"), {
|
|
266
|
+
title: oResourceBundle.getText("C_COMMON_SAPFE_ERROR"),
|
|
267
|
+
description: error.message,
|
|
268
|
+
FCLLevel: 0
|
|
269
|
+
});
|
|
270
|
+
});
|
|
271
|
+
};
|
|
272
|
+
|
|
273
|
+
if (this.bInitializeRouting) {
|
|
274
|
+
return this.getRoutingService().initializeRouting().then(function () {
|
|
275
|
+
if (_this.getRootViewController()) {
|
|
276
|
+
return finalizedRoutingInitialization();
|
|
277
|
+
} else {
|
|
278
|
+
_this.getRootControl().attachAfterInit(function () {
|
|
279
|
+
finalizedRoutingInitialization();
|
|
280
|
+
});
|
|
281
|
+
}
|
|
282
|
+
}).catch(function (err) {
|
|
283
|
+
Log.error("cannot cannot initialize routing: " + err);
|
|
284
|
+
});
|
|
285
|
+
}
|
|
286
|
+
};
|
|
287
|
+
|
|
288
|
+
_proto.exit = function exit() {
|
|
289
|
+
this._oAppStateHandler.destroy();
|
|
290
|
+
|
|
291
|
+
this._oRouterProxy.destroy(); // eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
|
292
|
+
// @ts-ignore
|
|
293
|
+
|
|
294
|
+
|
|
295
|
+
delete this._oAppStateHandler; // eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
|
296
|
+
// @ts-ignore
|
|
297
|
+
|
|
298
|
+
delete this._oRouterProxy;
|
|
299
|
+
deleteModelCacheData(this.getMetaModel());
|
|
300
|
+
this.getModel("ui").destroy();
|
|
301
|
+
};
|
|
302
|
+
|
|
303
|
+
_proto.getMetaModel = function getMetaModel() {
|
|
304
|
+
return this.getModel().getMetaModel();
|
|
305
|
+
};
|
|
306
|
+
|
|
307
|
+
_proto.getDiagnostics = function getDiagnostics() {
|
|
308
|
+
return this._oDiagnostics;
|
|
309
|
+
};
|
|
310
|
+
|
|
311
|
+
_proto.destroy = function destroy() {
|
|
312
|
+
// LEAKS, with workaround for some Flex / MDC issue
|
|
313
|
+
try {
|
|
314
|
+
// // This one is only a leak if you don't go back to the same component in the long run
|
|
315
|
+
//delete sap.ui.fl.FlexControllerFactory._componentInstantiationPromises[this.getId()];
|
|
316
|
+
ValueListHelper.initializeCachedValueHelp();
|
|
317
|
+
delete AppComponent.instanceMap[this.getId()]; // var oRegistry = sap.ui.mdc.p13n.Engine.getInstance()._getRegistry();
|
|
318
|
+
// Object.keys(oRegistry).forEach(function(sKey) {
|
|
319
|
+
// Object.keys(oRegistry[sKey].controller).forEach(function(sControllerKey) {
|
|
320
|
+
// oRegistry[sKey].controller[sControllerKey].destroy();
|
|
321
|
+
// });
|
|
322
|
+
// });
|
|
323
|
+
// sap.ui.mdc.p13n.Engine.getInstance().destroy();
|
|
324
|
+
|
|
325
|
+
delete window._routing;
|
|
326
|
+
} catch (e) {
|
|
327
|
+
Log.info(e);
|
|
328
|
+
} //WORKAROUND for sticky discard request : due to async callback, request triggered by the exitApplication will be send after the UIComponent.prototype.destroy
|
|
329
|
+
//so we need to copy the Requestor headers as it will be destroy
|
|
330
|
+
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
|
331
|
+
// @ts-ignore
|
|
332
|
+
|
|
333
|
+
|
|
334
|
+
var oMainModel = this.oModels[undefined];
|
|
335
|
+
var oHeaders = jQuery.extend({}, oMainModel.oRequestor.mHeaders); // As we need to cleanup the application / handle the dirty object we need to call our cleanup before the models are destroyed
|
|
336
|
+
|
|
337
|
+
this.getRoutingService().beforeExit(); // eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
|
338
|
+
// @ts-ignore
|
|
339
|
+
|
|
340
|
+
for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
|
|
341
|
+
args[_key2] = arguments[_key2];
|
|
342
|
+
}
|
|
343
|
+
|
|
344
|
+
UIComponent.prototype.destroy.apply(this, [args]);
|
|
345
|
+
oMainModel.oRequestor.mHeaders = oHeaders;
|
|
346
|
+
};
|
|
347
|
+
|
|
348
|
+
_proto.getComponentData = function getComponentData() {
|
|
349
|
+
return _get(_getPrototypeOf(AppComponent.prototype), "getComponentData", this).call(this);
|
|
350
|
+
};
|
|
351
|
+
|
|
352
|
+
_proto.getRoutingService = function getRoutingService() {
|
|
353
|
+
return {}; // overriden at runtime
|
|
354
|
+
};
|
|
355
|
+
|
|
356
|
+
_proto.getShellServices = function getShellServices() {
|
|
357
|
+
return {}; // overriden at runtime
|
|
358
|
+
};
|
|
359
|
+
|
|
360
|
+
_proto.getNavigationService = function getNavigationService() {
|
|
361
|
+
return {}; // overriden at runtime
|
|
362
|
+
};
|
|
363
|
+
|
|
364
|
+
_proto.getSideEffectsService = function getSideEffectsService() {
|
|
365
|
+
return {};
|
|
366
|
+
};
|
|
367
|
+
|
|
368
|
+
_proto.getEnvironmentCapabilities = function getEnvironmentCapabilities() {
|
|
369
|
+
return {};
|
|
370
|
+
};
|
|
371
|
+
|
|
372
|
+
_proto.getStartupParameters = function getStartupParameters() {
|
|
373
|
+
var oComponentData = this.getComponentData();
|
|
374
|
+
var oStartUpParameters = oComponentData && oComponentData.startupParameters || {};
|
|
375
|
+
return Promise.resolve(oStartUpParameters);
|
|
376
|
+
};
|
|
377
|
+
|
|
378
|
+
_proto.restore = function restore() {
|
|
379
|
+
// called by FLP when app sap-keep-alive is enabled and app is restored
|
|
380
|
+
this.getRootViewController().viewState.onRestore();
|
|
381
|
+
};
|
|
382
|
+
|
|
383
|
+
_proto.suspend = function suspend() {
|
|
384
|
+
// called by FLP when app sap-keep-alive is enabled and app is suspended
|
|
385
|
+
this.getRootViewController().viewState.onSuspend();
|
|
386
|
+
};
|
|
387
|
+
|
|
388
|
+
return AppComponent;
|
|
389
|
+
}(UIComponent), _class2.instanceMap = {}, _temp)) || _class);
|
|
390
|
+
return AppComponent;
|
|
391
|
+
}, false);
|
|
392
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIkFwcENvbXBvbmVudC50cyJdLCJuYW1lcyI6WyJOQVZDT05GIiwiRkNMIiwiVklFV05BTUUiLCJST1VURVJDTEFTUyIsIk5BVkNPTlRBSU5FUiIsIkFwcENvbXBvbmVudCIsIlVJNUNsYXNzIiwiQ29tcG9uZW50TWV0YWRhdGEiLCJpbnRlcmZhY2VzIiwiY29uZmlnIiwiZnVsbFdpZHRoIiwibWFuaWZlc3QiLCJzZXJ2aWNlcyIsInJlc291cmNlTW9kZWwiLCJmYWN0b3J5TmFtZSIsInJvdXRpbmdTZXJ2aWNlIiwic3RhcnR1cCIsInNoZWxsU2VydmljZXMiLCJTaGVsbFVJU2VydmljZSIsIm5hdmlnYXRpb25TZXJ2aWNlIiwiZW52aXJvbm1lbnRDYXBhYmlsaXRpZXMiLCJzaWRlRWZmZWN0c1NlcnZpY2UiLCJhc3luY0NvbXBvbmVudFNlcnZpY2UiLCJyb290VmlldyIsInZpZXdOYW1lIiwidHlwZSIsImFzeW5jIiwiaWQiLCJyb3V0aW5nIiwiY29udHJvbElkIiwicm91dGVyQ2xhc3MiLCJ2aWV3VHlwZSIsImNvbnRyb2xBZ2dyZWdhdGlvbiIsImNvbnRhaW5lck9wdGlvbnMiLCJwcm9wYWdhdGVNb2RlbCIsImRlc2lnbnRpbWUiLCJsaWJyYXJ5IiwiX2lzRmNsRW5hYmxlZCIsIm9NYW5pZmVzdFVJNSIsImdldE1ldGFkYXRhIiwiZ2V0TWFuaWZlc3RFbnRyeSIsImdldFJvdXRlclByb3h5IiwiX29Sb3V0ZXJQcm94eSIsImdldEFwcFN0YXRlSGFuZGxlciIsIl9vQXBwU3RhdGVIYW5kbGVyIiwiZ2V0Um9vdFZpZXdDb250cm9sbGVyIiwiZ2V0Um9vdENvbnRyb2wiLCJnZXRDb250cm9sbGVyIiwiZ2V0Um9vdENvbnRhaW5lciIsImdldENvbnRlbnQiLCJpbml0Iiwic2V0TW9kZWwiLCJKU09OTW9kZWwiLCJlZGl0TW9kZSIsIkVkaXRNb2RlIiwiRGlzcGxheSIsImlzRWRpdGFibGUiLCJkcmFmdFN0YXR1cyIsIkRyYWZ0U3RhdHVzIiwiQ2xlYXIiLCJidXN5IiwiYnVzeUxvY2FsIiwicGFnZXMiLCJvSW50ZXJuYWxNb2RlbCIsIk1vZGVsSGVscGVyIiwiZW5oYW5jZUludGVybmFsSlNPTk1vZGVsIiwiYkluaXRpYWxpemVSb3V0aW5nIiwidW5kZWZpbmVkIiwiUm91dGVyUHJveHkiLCJBcHBTdGF0ZUhhbmRsZXIiLCJfb0RpYWdub3N0aWNzIiwiRGlhZ25vc3RpY3MiLCJvTW9kZWwiLCJnZXRNb2RlbCIsImVudGl0eUNvbnRhaW5lciIsImdldE1ldGFNb2RlbCIsInJlcXVlc3RPYmplY3QiLCJMb2ciLCJpbmZvIiwiaW5kZXhPZiIsIkVycm9yIiwiYXJncyIsIlVJQ29tcG9uZW50IiwicHJvdG90eXBlIiwiYXBwbHkiLCJpbnN0YW5jZU1hcCIsImdldElkIiwib25TZXJ2aWNlc1N0YXJ0ZWQiLCJmaW5hbGl6ZWRSb3V0aW5nSW5pdGlhbGl6YXRpb24iLCJ0aGVuIiwiYXR0YWNoUm91dGVNYXRjaGVycyIsImdldFJvdXRlciIsImluaXRpYWxpemUiLCJjYXRjaCIsImVycm9yIiwib1Jlc291cmNlQnVuZGxlIiwic2FwIiwidWkiLCJnZXRDb3JlIiwiZ2V0TGlicmFyeVJlc291cmNlQnVuZGxlIiwiZGlzcGxheU1lc3NhZ2VQYWdlIiwiZ2V0VGV4dCIsInRpdGxlIiwiZGVzY3JpcHRpb24iLCJtZXNzYWdlIiwiRkNMTGV2ZWwiLCJnZXRSb3V0aW5nU2VydmljZSIsImluaXRpYWxpemVSb3V0aW5nIiwiYXR0YWNoQWZ0ZXJJbml0IiwiZXJyIiwiZXhpdCIsImRlc3Ryb3kiLCJkZWxldGVNb2RlbENhY2hlRGF0YSIsImdldERpYWdub3N0aWNzIiwiVmFsdWVMaXN0SGVscGVyIiwiaW5pdGlhbGl6ZUNhY2hlZFZhbHVlSGVscCIsIndpbmRvdyIsIl9yb3V0aW5nIiwiZSIsIm9NYWluTW9kZWwiLCJvTW9kZWxzIiwib0hlYWRlcnMiLCJqUXVlcnkiLCJleHRlbmQiLCJvUmVxdWVzdG9yIiwibUhlYWRlcnMiLCJiZWZvcmVFeGl0IiwiZ2V0Q29tcG9uZW50RGF0YSIsImdldFNoZWxsU2VydmljZXMiLCJnZXROYXZpZ2F0aW9uU2VydmljZSIsImdldFNpZGVFZmZlY3RzU2VydmljZSIsImdldEVudmlyb25tZW50Q2FwYWJpbGl0aWVzIiwiZ2V0U3RhcnR1cFBhcmFtZXRlcnMiLCJvQ29tcG9uZW50RGF0YSIsIm9TdGFydFVwUGFyYW1ldGVycyIsInN0YXJ0dXBQYXJhbWV0ZXJzIiwiUHJvbWlzZSIsInJlc29sdmUiLCJyZXN0b3JlIiwidmlld1N0YXRlIiwib25SZXN0b3JlIiwic3VzcGVuZCIsIm9uU3VzcGVuZCJdLCJtYXBwaW5ncyI6IjtBQUFBO0FBQ0E7QUFDQTs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQXFCQSxNQUFNQSxPQUFPLEdBQUc7QUFDZkMsSUFBQUEsR0FBRyxFQUFFO0FBQ0pDLE1BQUFBLFFBQVEsRUFBRSx5Q0FETjtBQUVKQyxNQUFBQSxXQUFXLEVBQUU7QUFGVCxLQURVO0FBS2ZDLElBQUFBLFlBQVksRUFBRTtBQUNiRixNQUFBQSxRQUFRLEVBQUUsa0RBREc7QUFFYkMsTUFBQUEsV0FBVyxFQUFFO0FBRkE7QUFMQyxHQUFoQjtBQVdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O01BcUVNRSxZLFdBcEVMQyxRQUFRLENBQUMsMEJBQUQsRUFBNkJDLGlCQUE3QixFQUFnRDtBQUN4REMsSUFBQUEsVUFBVSxFQUFFLENBQUMsbUNBQUQsQ0FENEM7QUFFeERDLElBQUFBLE1BQU0sRUFBRTtBQUNQQyxNQUFBQSxTQUFTLEVBQUU7QUFESixLQUZnRDtBQUt4REMsSUFBQUEsUUFBUSxFQUFFO0FBQ1QsaUJBQVc7QUFDVkMsUUFBQUEsUUFBUSxFQUFFO0FBQ1RDLFVBQUFBLGFBQWEsRUFBRTtBQUNkQyxZQUFBQSxXQUFXLEVBQUUsMkNBREM7QUFFZCx1QkFBVyxTQUZHO0FBR2Qsd0JBQVk7QUFDWCx5QkFBVyxDQUFDLDJCQUFELENBREE7QUFFWCwyQkFBYTtBQUZGO0FBSEUsV0FETjtB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QSxVQUFVLENBQUNLLFVBQVgsQ0FBc0JDLFFBQXRCLEdBQWlDSixRQUFqQztBQUNBLEs7O1dBQ0RNLGdCLEdBQUEsNEJBQXdCO0FBQ3ZCO0FBQ0EsSzs7V0FDRHJCLGlCLEdBQUEsNkJBQW9DO0FBQ25DLGFBQU8sRUFBUCxDQURtQyxDQUNOO0FBQzdCLEs7O1dBQ0RzQixnQixHQUFBLDRCQUFtQztBQUNsQyxhQUFPLEVBQVAsQ0FEa0MsQ0FDTDtBQUM3QixLOztXQUNEQyxvQixHQUFBLGdDQUEwQztBQUN6QyxhQUFPLEVBQVAsQ0FEeUMsQ0FDVDtBQUNoQyxLOztXQUNEQyxxQixHQUFBLGlDQUE0QztBQUMzQyxhQUFPLEVBQVA7QUFDQSxLOztXQUNEQywwQixHQUFBLHNDQUE2RDtBQUM1RCxhQUFPLEVBQVA7QUFDQSxLOztXQUVEQyxvQixHQUFBLGdDQUF1QjtBQUN0QixVQUFNQyxjQUFjLEdBQUcsS0FBS04sZ0JBQUwsRUFBdkI7QUFDQSxVQUFNTyxrQkFBa0IsR0FBSUQsY0FBYyxJQUFJQSxjQUFjLENBQUNFLGlCQUFsQyxJQUF3RCxFQUFuRjtBQUNBLGFBQU9DLE9BQU8sQ0FBQ0MsT0FBUixDQUFnQkgsa0JBQWhCLENBQVA7QUFDQSxLOztXQUNESSxPLEdBQUEsbUJBQVU7QUFDVDtBQUNDLFdBQUs3RixxQkFBTCxFQUFELENBQXNDOEYsU0FBdEMsQ0FBZ0RDLFNBQWhEO0FBQ0EsSzs7V0FDREMsTyxHQUFBLG1CQUFVO0FBQ1Q7QUFDQyxXQUFLaEcscUJBQUwsRUFBRCxDQUFzQzhGLFNBQXRDLENBQWdERyxTQUFoRDtBQUNBLEs7OztJQTNSeUI1RCxXLFdBQ25CRyxXLEdBQTRDLEU7U0E2UnJDaEYsWSIsInNvdXJjZVJvb3QiOiIuIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFVJQ29tcG9uZW50IGZyb20gXCJzYXAvdWkvY29yZS9VSUNvbXBvbmVudFwiO1xuaW1wb3J0IFJvdXRlclByb3h5IGZyb20gXCJzYXAvZmUvY29yZS9Sb3V0ZXJQcm94eVwiO1xuaW1wb3J0IEFwcFN0YXRlSGFuZGxlciBmcm9tIFwic2FwL2ZlL2NvcmUvQXBwU3RhdGVIYW5kbGVyXCI7XG5pbXBvcnQgTG9nIGZyb20gXCJzYXAvYmFzZS9Mb2dcIjtcbmltcG9ydCBEaWFnbm9zdGljcyBmcm9tIFwic2FwL2ZlL2NvcmUvc3VwcG9ydC9EaWFnbm9zdGljc1wiO1xuaW1wb3J0IEpTT05Nb2RlbCBmcm9tIFwic2FwL3VpL21vZGVsL2pzb24vSlNPTk1vZGVsXCI7XG5pbXBvcnQgbGlicmFyeSBmcm9tIFwic2FwL2ZlL2NvcmUvbGlicmFyeVwiO1xuaW1wb3J0IE1vZGVsSGVscGVyIGZyb20gXCJzYXAvZmUvY29yZS9oZWxwZXJzL01vZGVsSGVscGVyXCI7XG5pbXBvcnQgVmFsdWVMaXN0SGVscGVyIGZyb20gXCJzYXAvZmUvbWFjcm9zL2ludGVybmFsL3ZhbHVlaGVscC9WYWx1ZUxpc3RIZWxwZXJcIjtcbmltcG9ydCB7IFVJNUNsYXNzIH0gZnJvbSBcInNhcC9mZS9jb3JlL2hlbHBlcnMvQ2xhc3NTdXBwb3J0XCI7XG5pbXBvcnQgQ29tcG9uZW50TWV0YWRhdGEgZnJvbSBcInNhcC91aS9jb3JlL0NvbXBvbmVudE1ldGFkYXRhXCI7XG5pbXBvcnQgVmlldyBmcm9tIFwic2FwL3VpL2NvcmUvbXZjL1ZpZXdcIjtcbmltcG9ydCBPRGF0YU1vZGVsIGZyb20gXCJzYXAvdWkvbW9kZWwvb2RhdGEvdjQvT0RhdGFNb2RlbFwiO1xuaW1wb3J0IFJlc291cmNlQnVuZGxlIGZyb20gXCJzYXAvYmFzZS9pMThuL1Jlc291cmNlQnVuZGxlXCI7XG5pbXBvcnQgQmFzZUNvbnRyb2xsZXIgZnJvbSBcIi4vQmFzZUNvbnRyb2xsZXJcIjtcbmltcG9ydCB7IGRlbGV0ZU1vZGVsQ2FjaGVEYXRhIH0gZnJvbSBcIi4vY29udmVydGVycy9NZXRhTW9kZWxDb252ZXJ0ZXJcIjtcbmltcG9ydCBPRGF0YU1ldGFNb2RlbCBmcm9tIFwic2FwL3VpL21vZGVsL29kYXRhL3Y0L09EYXRhTWV0YU1vZGVsXCI7XG5pbXBvcnQgeyBSb3V0aW5nU2VydmljZSB9IGZyb20gXCJzYXAvZmUvY29yZS9zZXJ2aWNlcy9Sb3V0aW5nU2VydmljZUZhY3RvcnlcIjtcbmltcG9ydCB7IElTaGVsbFNlcnZpY2VzIH0gZnJvbSBcInNhcC9mZS9jb3JlL3NlcnZpY2VzL1NoZWxsU2VydmljZXNGYWN0b3J5XCI7XG5pbXBvcnQgeyBOYXZpZ2F0aW9uU2VydmljZSB9IGZyb20gXCJzYXAvZmUvY29yZS9zZXJ2aWNlcy9OYXZpZ2F0aW9uU2VydmljZUZhY3RvcnlcIjtcbmltcG9ydCB7IFNpZGVFZmZlY3RzU2VydmljZSB9IGZyb20gXCJzYXAvZmUvY29yZS9zZXJ2aWNlcy9TaWRlRWZmZWN0c1NlcnZpY2VGYWN0b3J5XCI7XG5pbXBvcnQgeyBFbnZpcm9ubWVudENhcGFiaWxpdGllc1NlcnZpY2UgfSBmcm9tIFwic2FwL2ZlL2NvcmUvc2VydmljZXMvRW52aXJvbm1lbnRTZXJ2aWNlRmFjdG9yeVwiO1xuXG5jb25zdCBOQVZDT05GID0ge1xuXHRGQ0w6IHtcblx0XHRWSUVXTkFNRTogXCJzYXAuZmUudGVtcGxhdGVzLlJvb3RDb250YWluZXIudmlldy5GY2xcIixcblx0XHRST1VURVJDTEFTUzogXCJzYXAuZi5yb3V0aW5nLlJvdXRlclwiXG5cdH0sXG5cdE5BVkNPTlRBSU5FUjoge1xuXHRcdFZJRVdOQU1FOiBcInNhcC5mZS50ZW1wbGF0ZXMuUm9vdENvbnRhaW5lci52aWV3Lk5hdkNvbnRhaW5lclwiLFxuXHRcdFJPVVRFUkNMQVNTOiBcInNhcC5tLnJvdXRpbmcuUm91dGVyXCJcblx0fVxufTtcblxuLyoqXG4gKiBNYWluIGNsYXNzIGZvciBjb21wb25lbnRzIHVzZWQgZm9yIGFuIGFwcGxpY2F0aW9uIGluIFNBUCBGaW9yaSBlbGVtZW50cy5cbiAqXG4gKiBBcHBsaWNhdGlvbiBkZXZlbG9wZXJzIHVzaW5nIHRoZSB0ZW1wbGF0ZXMgYW5kIGJ1aWxkaW5nIGJsb2NrcyBwcm92aWRlZCBieSBTQVAgRmlvcmkgZWxlbWVudHMgc2hvdWxkIGNyZWF0ZSB0aGVpciBhcHBzIGJ5IGV4dGVuZGluZyB0aGlzIGNvbXBvbmVudC5cbiAqIFRoaXMgZW5zdXJlcyB0aGF0IGFsbCB0aGUgbmVjZXNzYXJ5IHNlcnZpY2VzIHRoYXQgeW91IG5lZWQgZm9yIHRoZSBidWlsZGluZyBibG9ja3MgYW5kIHRlbXBsYXRlcyB0byB3b3JrIHByb3Blcmx5IGFyZSBzdGFydGVkLlxuICpcbiAqIFdoZW4geW91IHVzZSBzYXAuZmUuY29yZS5BcHBDb21wb25lbnQgYXMgdGhlIGJhc2UgY29tcG9uZW50LCB5b3UgYWxzbyBuZWVkIHRvIHVzZSBhIHJvb3RWaWV3LiBTQVAgRmlvcmkgZWxlbWVudHMgcHJvdmlkZXMgdHdvIG9wdGlvbnM6IDxici8+XG4gKiAgLSBzYXAuZmUudGVtcGxhdGVzLlJvb3RDb250YWluZXIudmlldy5OYXZDb250YWluZXIgd2hlbiB1c2luZyBzYXAubS5yb3V0aW5nLlJvdXRlciA8YnIvPlxuICogIC0gc2FwLmZlLnRlbXBsYXRlcy5Sb290Q29udGFpbmVyLnZpZXcuRmNsIHdoZW4gdXNpbmcgc2FwLmYucm91dGluZy5Sb3V0ZXIgKEZDTCB1c2UgY2FzZSkgPGJyLz5cbiAqXG4gKiBAaGlkZWNvbnN0cnVjdG9yXG4gKiBAcHVibGljXG4gKiBAbmFtZSBzYXAuZmUuY29yZS5BcHBDb21wb25lbnRcbiAqL1xuQFVJNUNsYXNzKFwic2FwLmZlLmNvcmUuQXBwQ29tcG9uZW50XCIsIENvbXBvbmVudE1ldGFkYXRhLCB7XG5cdGludGVyZmFjZXM6IFtcInNhcC51aS5jb3JlLklBc3luY0NvbnRlbnRDcmVhdGlvblwiXSxcblx0Y29uZmlnOiB7XG5cdFx0ZnVsbFdpZHRoOiB0cnVlXG5cdH0sXG5cdG1hbmlmZXN0OiB7XG5cdFx0XCJzYXAudWk1XCI6IHtcblx0XHRcdHNlcnZpY2VzOiB7XG5cdFx0XHRcdHJlc291cmNlTW9kZWw6IHtcblx0XHRcdFx0XHRmYWN0b3J5TmFtZTogXCJzYXAuZmUuY29yZS5zZXJ2aWNlcy5SZXNvdXJjZU1vZGVsU2VydmljZVwiLFxuXHRcdFx0XHRcdFwic3RhcnR1cFwiOiBcIndhaXRGb3JcIixcblx0XHRcdFx0XHRcInNldHRpbmdzXCI6IHtcblx0XHRcdFx0XHRcdFwiYnVuZGxlc1wiOiBbXCJzYXAuZmUuY29yZS5tZXNzYWdlYnVuZGxlXCJdLFxuXHRcdFx0XHRcdFx0XCJtb2RlbE5hbWVcIjogXCJzYXAuZmUuaTE4blwiXG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9LFxuXHRcdFx0XHRyb3V0aW5nU2VydmljZToge1xuXHRcdFx0XHRcdGZhY3RvcnlOYW1lOiBcInNhcC5mZS5jb3JlLnNlcnZpY2VzLlJvdXRpbmdTZXJ2aWNlXCIsXG5cdFx0XHRcdFx0c3RhcnR1cDogXCJ3YWl0Rm9yXCJcblx0XHRcdFx0fSxcblx0XHRcdFx0c2hlbGxTZXJ2aWNlczoge1xuXHRcdFx0XHRcdGZhY3RvcnlOYW1lOiBcInNhcC5mZS5jb3JlLnNlcnZpY2VzLlNoZWxsU2VydmljZXNcIixcblx0XHRcdFx0XHRzdGFydHVwOiBcIndhaXRGb3JcIlxuXHRcdFx0XHR9LFxuXHRcdFx0XHRTaGVsbFVJU2VydmljZToge1xuXHRcdFx0XHRcdGZhY3RvcnlOYW1lOiBcInNhcC51c2hlbGwudWk1c2VydmljZS5TaGVsbFVJU2VydmljZVwiXG5cdFx0XHRcdH0sXG5cdFx0XHRcdG5hdmlnYXRpb25TZXJ2aWNlOiB7XG5cdFx0XHRcdFx0ZmFjdG9yeU5hbWU6IFwic2FwLmZlLmNvcmUuc2VydmljZXMuTmF2aWdhdGlvblNlcnZpY2VcIixcblx0XHRcdFx0XHRzdGFydHVwOiBcIndhaXRGb3JcIlxuXHRcdFx0XHR9LFxuXHRcdFx0XHRlbnZpcm9ubWVudENhcGFiaWxpdGllczoge1xuXHRcdFx0XHRcdGZhY3RvcnlOYW1lOiBcInNhcC5mZS5jb3JlLnNlcnZpY2VzLkVudmlyb25tZW50U2VydmljZVwiLFxuXHRcdFx0XHRcdHN0YXJ0dXA6IFwid2FpdEZvclwiXG5cdFx0XHRcdH0sXG5cdFx0XHRcdHNpZGVFZmZlY3RzU2VydmljZToge1xuXHRcdFx0XHRcdGZhY3RvcnlOYW1lOiBcInNhcC5mZS5jb3JlLnNlcnZpY2VzLlNpZGVFZmZlY3RzU2VydmljZVwiLFxuXHRcdFx0XHRcdHN0YXJ0dXA6IFwid2FpdEZvclwiXG5cdFx0XHRcdH0sXG5cdFx0XHRcdGFzeW5jQ29tcG9uZW50U2VydmljZToge1xuXHRcdFx0XHRcdGZhY3RvcnlOYW1lOiBcInNhcC5mZS5jb3JlLnNlcnZpY2VzLkFzeW5jQ29tcG9uZW50U2VydmljZVwiLFxuXHRcdFx0XHRcdHN0YXJ0dXA6IFwid2FpdEZvclwiXG5cdFx0XHRcdH1cblx0XHRcdH0sXG5cdFx0XHRyb290Vmlldzoge1xuXHRcdFx0XHR2aWV3TmFtZTogTkFWQ09ORi5OQVZDT05UQUlORVIuVklFV05BTUUsXG5cdFx0XHRcdHR5cGU6IFwiWE1MXCIsXG5cdFx0XHRcdGFzeW5jOiB0cnVlLFxuXHRcdFx0XHRpZDogXCJhcHBSb290Vmlld1wiXG5cdFx0XHR9LFxuXHRcdFx0cm91dGluZzoge1xuXHRcdFx0XHRjb25maWc6IHtcblx0XHRcdFx0XHRjb250cm9sSWQ6IFwiYXBwQ29udGVudFwiLFxuXHRcdFx0XHRcdHJvdXRlckNsYXNzOiBOQVZDT05GLk5BVkNPTlRBSU5FUi5ST1VURVJDTEFTUyxcblx0XHRcdFx0XHR2aWV3VHlwZTogXCJYTUxcIixcblx0XHRcdFx0XHRjb250cm9sQWdncmVnYXRpb246IFwicGFnZXNcIixcblx0XHRcdFx0XHRhc3luYzogdHJ1ZSxcblx0XHRcdFx0XHRjb250YWluZXJPcHRpb25zOiB7XG5cdFx0XHRcdFx0XHRwcm9wYWdhdGVNb2RlbDogdHJ1ZVxuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblx0fSxcblx0ZGVzaWdudGltZTogXCJzYXAvZmUvY29yZS9kZXNpZ250aW1lL0FwcENvbXBvbmVudC5kZXNpZ250aW1lXCIsXG5cblx0bGlicmFyeTogXCJzYXAuZmUuY29yZVwiXG59KVxuY2xhc3MgQXBwQ29tcG9uZW50IGV4dGVuZHMgVUlDb21wb25lbnQge1xuXHRzdGF0aWMgaW5zdGFuY2VNYXA6IFJlY29yZDxzdHJpbmcsIEFwcENvbXBvbmVudD4gPSB7fTtcblx0cHJpdmF0ZSBfb1JvdXRlclByb3h5ITogUm91dGVyUHJveHk7XG5cdHByaXZhdGUgX29BcHBTdGF0ZUhhbmRsZXIhOiBBcHBTdGF0ZUhhbmRsZXI7XG5cdHByaXZhdGUgYkluaXRpYWxpemVSb3V0aW5nPzogYm9vbGVhbjtcblx0cHJpdmF0ZSBfb0RpYWdub3N0aWNzITogRGlhZ25vc3RpY3M7XG5cdHByaXZhdGUgZW50aXR5Q29udGFpbmVyOiBhbnk7XG5cdC8qKlxuXHQgKiBAcHJpdmF0ZVxuXHQgKiBAbmFtZSBzYXAuZmUuY29yZS5BcHBDb21wb25lbnQuZ2V0TWV0YWRhdGFcblx0ICogQGZ1bmN0aW9uXG5cdCAqL1xuXG5cdF9pc0ZjbEVuYWJsZWQoKSB7XG5cdFx0Y29uc3Qgb01hbmlmZXN0VUk1ID0gdGhpcy5nZXRNZXRhZGF0YSgpLmdldE1hbmlmZXN0RW50cnkoXCIvc2FwLnVpNVwiLCB0cnVlKTtcblx0XHRyZXR1cm4gTkFWQ09ORi5GQ0wuVklFV05BTUUgPT09IG9NYW5pZmVzdFVJNS5yb290Vmlldy52aWV3TmFtZTtcblx0fVxuXG5cdC8qKlxuXHQgKiBHZXQgYSByZWZlcmVuY2UgdG8gdGhlIFJvdXRlclByb3h5LlxuXHQgKlxuXHQgKiBAZnVuY3Rpb25cblx0ICogQG5hbWUgc2FwLmZlLmNvcmUuQXBwQ29tcG9uZW50I2dldFJvdXRlclByb3h5XG5cdCAqIEBtZW1iZXJvZiBzYXAuZmUuY29yZS5BcHBDb21wb25lbnRcblx0ICogQHJldHVybnMge29PYmplY3R9IEEgUmVmZXJlbmNlIHRvIHRoZSBSb3V0ZXJQcm94eVxuXHQgKlxuXHQgKiBAdWk1LXJlc3RyaWN0ZWRcblx0ICogQGZpbmFsXG5cdCAqL1xuXHRnZXRSb3V0ZXJQcm94eSgpOiBSb3V0ZXJQcm94eSB7XG5cdFx0cmV0dXJuIHRoaXMuX29Sb3V0ZXJQcm94eTtcblx0fVxuXG5cdC8qKlxuXHQgKiBHZXQgYSByZWZlcmVuY2UgdG8gdGhlIEFwcFN0YXRlSGFuZGxlci5cblx0ICpcblx0ICogQGZ1bmN0aW9uXG5cdCAqIEBuYW1lIHNhcC5mZS5jb3JlLkFwcENvbXBvbmVudCNnZXRBcHBTdGF0ZUhhbmRsZXJcblx0ICogQG1lbWJlcm9mIHNhcC5mZS5jb3JlLkFwcENvbXBvbmVudFxuXHQgKiBAcmV0dXJucyB7b09iamVjdH0gQSByZWZlcmVuY2UgdG8gdGhlIEFwcFN0YXRlSGFuZGxlclxuXHQgKlxuXHQgKiBAdWk1LXJlc3RyaWN0ZWRcblx0ICogQGZpbmFsXG5cdCAqL1xuXHRnZXRBcHBTdGF0ZUhhbmRsZXIoKSB7XG5cdFx0cmV0dXJuIHRoaXMuX29BcHBTdGF0ZUhhbmRsZXI7XG5cdH1cblxuXHQvKipcblx0ICogR2V0IGEgcmVmZXJlbmNlIHRvIHRoZSBuYXYvRkNMIENvbnRyb2xsZXIuXG5cdCAqXG5cdCAqIEBmdW5jdGlvblxuXHQgKiBAbmFtZSBzYXAuZmUuY29yZS5BcHBDb21wb25lbnQjZ2V0Um9vdFZpZXdDb250cm9sbGVyXG5cdCAqIEBtZW1iZXJvZiBzYXAuZmUuY29yZS5BcHBDb21wb25lbnRcblx0ICogQHJldHVybnMge29PYmplY3R9IEEgcmVmZXJlbmNlIHRvIHRoZSBGQ0wgQ29udHJvbGxlclxuXHQgKlxuXHQgKiBAdWk1LXJlc3RyaWN0ZWRcblx0ICogQGZpbmFsXG5cdCAqL1xuXHRnZXRSb290Vmlld0NvbnRyb2xsZXIoKTogQmFzZUNvbnRyb2xsZXIge1xuXHRcdHJldHVybiAodGhpcy5nZXRSb290Q29udHJvbCgpIGFzIFZpZXcpLmdldENvbnRyb2xsZXIoKSBhcyBCYXNlQ29udHJvbGxlcjtcblx0fVxuXG5cdC8qKlxuXHQgKiBHZXQgdGhlIE5hdkNvbnRhaW5lciBjb250cm9sIG9yIHRoZSBGQ0wgY29udHJvbC5cblx0ICpcblx0ICogQGZ1bmN0aW9uXG5cdCAqIEBuYW1lIHNhcC5mZS5jb3JlLkFwcENvbXBvbmVudCNnZXRSb290Q29udGFpbmVyXG5cdCAqIEBtZW1iZXJvZiBzYXAuZmUuY29yZS5BcHBDb21wb25lbnRcblx0ICogQHJldHVybnMge29PYmplY3R9IEEgcmVmZXJlbmNlIHRvIE5hdkNvbnRhaW5lciBjb250cm9sIG9yIHRoZSBGQ0wgY29udHJvbFxuXHQgKlxuXHQgKiBAdWk1LXJlc3RyaWN0ZWRcblx0ICogQGZpbmFsXG5cdCAqL1xuXHRnZXRSb290Q29udGFpbmVyKCkge1xuXHRcdHJldHVybiAodGhpcy5nZXRSb290Q29udHJvbCgpIGFzIFZpZXcpLmdldENvbnRlbnQoKVswXTtcblx0fVxuXG5cdGluaXQoLi4uYXJnczogYW55W10pIHtcblx0XHR0aGlzLnNldE1vZGVsKFxuXHRcdFx0bmV3IEpTT05Nb2RlbCh7XG5cdFx0XHRcdGVkaXRNb2RlOiBsaWJyYXJ5LkVkaXRNb2RlLkRpc3BsYXksXG5cdFx0XHRcdGlzRWRpdGFibGU6IGZhbHNlLFxuXHRcdFx0XHRkcmFmdFN0YXR1czogbGlicmFyeS5EcmFmdFN0YXR1cy5DbGVhcixcblx0XHRcdFx0YnVzeTogZmFsc2UsXG5cdFx0XHRcdGJ1c3lMb2NhbDoge30sXG5cdFx0XHRcdHBhZ2VzOiB7fVxuXHRcdFx0fSksXG5cdFx0XHRcInVpXCJcblx0XHQpO1xuXG5cdFx0Y29uc3Qgb0ludGVybmFsTW9kZWwgPSBuZXcgSlNPTk1vZGVsKHtcblx0XHRcdHBhZ2VzOiB7fVxuXHRcdH0pO1xuXG5cdFx0TW9kZWxIZWxwZXIuZW5oYW5jZUludGVybmFsSlNPTk1vZGVsKG9JbnRlcm5hbE1vZGVsKTtcblxuXHRcdHRoaXMuc2V0TW9kZWwob0ludGVybmFsTW9kZWwsIFwiaW50ZXJuYWxcIik7XG5cblx0XHR0aGlzLmJJbml0aWFsaXplUm91dGluZyA9IHRoaXMuYkluaXRpYWxpemVSb3V0aW5nICE9PSB1bmRlZmluZWQgPyB0aGlzLmJJbml0aWFsaXplUm91dGluZyA6IHRydWU7XG5cdFx0dGhpcy5fb1JvdXRlclByb3h5ID0gbmV3IFJvdXRlclByb3h5KCk7XG5cdFx0dGhpcy5fb0FwcFN0YXRlSGFuZGxlciA9IG5ldyBBcHBTdGF0ZUhhbmRsZXIodGhpcyk7XG5cdFx0dGhpcy5fb0RpYWdub3N0aWNzID0gbmV3IERpYWdub3N0aWNzKCk7XG5cdFx0Y29uc3Qgb01vZGVsID0gdGhpcy5nZXRNb2RlbCgpIGFzIE9EYXRhTW9kZWw7XG5cdFx0aWYgKG9Nb2RlbCkge1xuXHRcdFx0dGhpcy5lbnRpdHlDb250YWluZXIgPSBvTW9kZWwuZ2V0TWV0YU1vZGVsKCkucmVxdWVzdE9iamVjdChcIi8kRW50aXR5Q29udGFpbmVyL1wiKTtcblx0XHR9XG5cblx0XHRjb25zdCBvTWFuaWZlc3RVSTUgPSB0aGlzLmdldE1ldGFkYXRhKCkuZ2V0TWFuaWZlc3RFbnRyeShcIi9zYXAudWk1XCIsIHRydWUpO1xuXHRcdGlmIChcblx0XHRcdG9NYW5pZmVzdFVJNS5yb290Vmlldy52aWV3TmFtZSA9PT0gTkFWQ09ORi5GQ0wuVklFV05BTUUgJiZcblx0XHRcdG9NYW5pZmVzdFVJNS5yb3V0aW5nLmNvbmZpZy5yb3V0ZXJDbGFzcyA9PT0gTkFWQ09ORi5GQ0wuUk9VVEVSQ0xBU1Ncblx0XHQpIHtcblx0XHRcdExvZy5pbmZvKCdSb290Y29udGFpbmVyOiBcIicgKyBOQVZDT05GLkZDTC5WSUVXTkFNRSArICdcIiAtIFJvdXRlcmNsYXNzOiBcIicgKyBOQVZDT05GLkZDTC5ST1VURVJDTEFTUyArICdcIicpO1xuXHRcdH0gZWxzZSBpZiAoXG5cdFx0XHRvTWFuaWZlc3RVSTUucm9vdFZpZXcudmlld05hbWUgPT09IE5BVkNPTkYuTkFWQ09OVEFJTkVSLlZJRVdOQU1FICYmXG5cdFx0XHRvTWFuaWZlc3RVSTUucm91dGluZy5jb25maWcucm91dGVyQ2xhc3MgPT09IE5BVkNPTkYuTkFWQ09OVEFJTkVSLlJPVVRFUkNMQVNTXG5cdFx0KSB7XG5cdFx0XHRMb2cuaW5mbygnUm9vdGNvbnRhaW5lcjogXCInICsgTkFWQ09ORi5OQVZDT05UQUlORVIuVklFV05BTUUgKyAnXCIgLSBSb3V0ZXJjbGFzczogXCInICsgTkFWQ09ORi5OQVZDT05UQUlORVIuUk9VVEVSQ0xBU1MgKyAnXCInKTtcblx0XHR9IGVsc2UgaWYgKG9NYW5pZmVzdFVJNS5yb290Vmlldy52aWV3TmFtZS5pbmRleE9mKFwic2FwLmZlXCIpICE9PSAtMSkge1xuXHRcdFx0dGhyb3cgRXJyb3IoXG5cdFx0XHRcdFwiXFxuV3JvbmcgY29uZmlndXJhdGlvbiBmb3IgdGhlIGNvdXBsZSAocm9vdFZpZXcvcm91dGVyQ2xhc3MpIGluIG1hbmlmZXN0IGZpbGUuXFxuXCIgK1xuXHRcdFx0XHRcdFwiQ3VycmVudCB2YWx1ZXMgYXJlIDooXCIgK1xuXHRcdFx0XHRcdG9NYW5pZmVzdFVJNS5yb290Vmlldy52aWV3TmFtZSArXG5cdFx0XHRcdFx0XCIvXCIgK1xuXHRcdFx0XHRcdG9NYW5pZmVzdFVJNS5yb3V0aW5nLmNvbmZpZy5yb3V0ZXJDbGFzcyArXG5cdFx0XHRcdFx0XCIpXFxuXCIgK1xuXHRcdFx0XHRcdFwiRXhwZWN0ZWQgdmFsdWVzIGFyZSBcXG5cIiArXG5cdFx0XHRcdFx0XCJcXHQgLSAoXCIgK1xuXHRcdFx0XHRcdE5BVkNPTkYuTkFWQ09OVEFJTkVSLlZJRVdOQU1FICtcblx0XHRcdFx0XHRcIi9cIiArXG5cdFx0XHRcdFx0TkFWQ09ORi5OQVZDT05UQUlORVIuUk9VVEVSQ0xBU1MgK1xuXHRcdFx0XHRcdFwiKVxcblwiICtcblx0XHRcdFx0XHRcIlxcdCAtIChcIiArXG5cdFx0XHRcdFx0TkFWQ09ORi5GQ0wuVklFV05BTUUgK1xuXHRcdFx0XHRcdFwiL1wiICtcblx0XHRcdFx0XHROQVZDT05GLkZDTC5ST1VURVJDTEFTUyArXG5cdFx0XHRcdFx0XCIpXCJcblx0XHRcdCk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdExvZy5pbmZvKCdSb290Y29udGFpbmVyOiBcIicgKyBvTWFuaWZlc3RVSTUucm9vdFZpZXcudmlld05hbWUgKyAnXCIgLSBSb3V0ZXJjbGFzczogXCInICsgTkFWQ09ORi5OQVZDT05UQUlORVIuUk9VVEVSQ0xBU1MgKyAnXCInKTtcblx0XHR9XG5cblx0XHQvLyBBZGRpbmcgU2VtYW50aWMgRGF0ZSBPcGVyYXRvcnNcblx0XHQvLyBDb21tZW50aW5nIHNpbmNlIGl0IGlzIG5vdCBuZWVkZWQgZm9yIFNpbmdsZVJhbmdlXG5cdFx0Ly8gU2VtYW50aWNEYXRlT3BlcmF0b3JzLmFkZFNlbWFudGljRGF0ZU9wZXJhdG9ycygpO1xuXG5cdFx0Ly8gdGhlIGluaXQgZnVuY3Rpb24gY29uZmlndXJlcyB0aGUgcm91dGluZyBhY2NvcmRpbmcgdG8gdGhlIHNldHRpbmdzIGFib3ZlXG5cdFx0Ly8gaXQgd2lsbCBjYWxsIHRoZSBjcmVhdGVDb250ZW50IGZ1bmN0aW9uIHRvIGluc3RhbnRpYXRlIHRoZSBSb290VmlldyBhbmQgYWRkIGl0IHRvIHRoZSBVSUNvbXBvbmVudCBhZ2dyZWdhdGlvbnNcblxuXHRcdC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvYmFuLXRzLWNvbW1lbnRcblx0XHQvLyBAdHMtaWdub3JlXG5cdFx0VUlDb21wb25lbnQucHJvdG90eXBlLmluaXQuYXBwbHkodGhpcywgYXJncyk7XG5cdFx0QXBwQ29tcG9uZW50Lmluc3RhbmNlTWFwW3RoaXMuZ2V0SWQoKV0gPSB0aGlzO1xuXHR9XG5cdG9uU2VydmljZXNTdGFydGVkKCkge1xuXHRcdC8vcm91dGVyIG11c3QgYmUgc3RhcnRlZCBvbmNlIHRoZSByb290Y29udGFpbmVyIGlzIGluaXRpYWxpemVkXG5cdFx0Ly9zdGFydGluZyBvZiB0aGUgcm91dGVyXG5cdFx0Y29uc3QgZmluYWxpemVkUm91dGluZ0luaXRpYWxpemF0aW9uID0gKCkgPT4ge1xuXHRcdFx0dGhpcy5lbnRpdHlDb250YWluZXJcblx0XHRcdFx0LnRoZW4oKCkgPT4ge1xuXHRcdFx0XHRcdGlmICgodGhpcy5nZXRSb290Vmlld0NvbnRyb2xsZXIoKSBhcyBhbnkpLmF0dGFjaFJvdXRlTWF0Y2hlcnMpIHtcblx0XHRcdFx0XHRcdCh0aGlzLmdldFJvb3RWaWV3Q29udHJvbGxlcigpIGFzIGFueSkuYXR0YWNoUm91dGVNYXRjaGVycygpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHR0aGlzLmdldFJvdXRlcigpLmluaXRpYWxpemUoKTtcblx0XHRcdFx0XHR0aGlzLmdldFJvdXRlclByb3h5KCkuaW5pdCh0aGlzLCB0aGlzLl9pc0ZjbEVuYWJsZWQoKSk7XG5cdFx0XHRcdH0pXG5cdFx0XHRcdC5jYXRjaCgoZXJyb3I6IGFueSkgPT4ge1xuXHRcdFx0XHRcdGNvbnN0IG9SZXNvdXJjZUJ1bmRsZSA9IHNhcC51aS5nZXRDb3JlKCkuZ2V0TGlicmFyeVJlc291cmNlQnVuZGxlKFwic2FwLmZlLmNvcmVcIikgYXMgUmVzb3VyY2VCdW5kbGU7XG5cblx0XHRcdFx0XHQodGhpcy5nZXRSb290Vmlld0NvbnRyb2xsZXIoKSBhcyBhbnkpLmRpc3BsYXlNZXNzYWdlUGFnZShcblx0XHRcdFx0XHRcdG9SZXNvdXJjZUJ1bmRsZS5nZXRUZXh0KFwiQ19BUFBfQ09NUE9ORU5UX1NBUEZFX0FQUFNUQVJUX1RFQ0hOSUNBTF9JU1NVRVNcIiksXG5cdFx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRcdHRpdGxlOiBvUmVzb3VyY2VCdW5kbGUuZ2V0VGV4dChcIkNfQ09NTU9OX1NBUEZFX0VSUk9SXCIpLFxuXHRcdFx0XHRcdFx0XHRkZXNjcmlwdGlvbjogZXJyb3IubWVzc2FnZSxcblx0XHRcdFx0XHRcdFx0RkNMTGV2ZWw6IDBcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHQpO1xuXHRcdFx0XHR9KTtcblx0XHR9O1xuXG5cdFx0aWYgKHRoaXMuYkluaXRpYWxpemVSb3V0aW5nKSB7XG5cdFx0XHRyZXR1cm4gdGhpcy5nZXRSb3V0aW5nU2VydmljZSgpXG5cdFx0XHRcdC5pbml0aWFsaXplUm91dGluZygpXG5cdFx0XHRcdC50aGVuKCgpID0+IHtcblx0XHRcdFx0XHRpZiAodGhpcy5nZXRSb290Vmlld0NvbnRyb2xsZXIoKSkge1xuXHRcdFx0XHRcdFx0cmV0dXJuIGZpbmFsaXplZFJvdXRpbmdJbml0aWFsaXphdGlvbigpO1xuXHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHQodGhpcy5nZXRSb290Q29udHJvbCgpIGFzIGFueSkuYXR0YWNoQWZ0ZXJJbml0KGZ1bmN0aW9uKCkge1xuXHRcdFx0XHRcdFx0XHRmaW5hbGl6ZWRSb3V0aW5nSW5pdGlhbGl6YXRpb24oKTtcblx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSlcblx0XHRcdFx0LmNhdGNoKGZ1bmN0aW9uKGVycjogYW55KSB7XG5cdFx0XHRcdFx0TG9nLmVycm9yKFwiY2Fubm90IGNhbm5vdCBpbml0aWFsaXplIHJvdXRpbmc6IFwiICsgZXJyKTtcblx0XHRcdFx0fSk7XG5cdFx0fVxuXHR9XG5cdGV4aXQoKSB7XG5cdFx0dGhpcy5fb0FwcFN0YXRlSGFuZGxlci5kZXN0cm95KCk7XG5cdFx0dGhpcy5fb1JvdXRlclByb3h5LmRlc3Ryb3koKTtcblx0XHQvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L2Jhbi10cy1jb21tZW50XG5cdFx0Ly8gQHRzLWlnbm9yZVxuXHRcdGRlbGV0ZSB0aGlzLl9vQXBwU3RhdGVIYW5kbGVyO1xuXHRcdC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvYmFuLXRzLWNvbW1lbnRcblx0XHQvLyBAdHMtaWdub3JlXG5cdFx0ZGVsZXRlIHRoaXMuX29Sb3V0ZXJQcm94eTtcblx0XHRkZWxldGVNb2RlbENhY2hlRGF0YSh0aGlzLmdldE1ldGFNb2RlbCgpKTtcblx0XHR0aGlzLmdldE1vZGVsKFwidWlcIikuZGVzdHJveSgpO1xuXHR9XG5cdGdldE1ldGFNb2RlbCgpOiBPRGF0YU1ldGFNb2RlbCB7XG5cdFx0cmV0dXJuIHRoaXMuZ2V0TW9kZWwoKS5nZXRNZXRhTW9kZWwoKSBhcyBPRGF0YU1ldGFNb2RlbDtcblx0fVxuXHRnZXREaWFnbm9zdGljcygpIHtcblx0XHRyZXR1cm4gdGhpcy5fb0RpYWdub3N0aWNzO1xuXHR9XG5cdGRlc3Ryb3koLi4uYXJnczogYW55W10pIHtcblx0XHQvLyBMRUFLUywgd2l0aCB3b3JrYXJvdW5kIGZvciBzb21lIEZsZXggLyBNREMgaXNzdWVcblx0XHR0cnkge1xuXHRcdFx0Ly8gXHQvLyBUaGlzIG9uZSBpcyBvbmx5IGEgbGVhayBpZiB5b3UgZG9uJ3QgZ28gYmFjayB0byB0aGUgc2FtZSBjb21wb25lbnQgaW4gdGhlIGxvbmcgcnVuXG5cdFx0XHQvL2RlbGV0ZSBzYXAudWkuZmwuRmxleENvbnRyb2xsZXJGYWN0b3J5Ll9jb21wb25lbnRJbnN0YW50aWF0aW9uUHJvbWlzZXNbdGhpcy5nZXRJZCgpXTtcblxuXHRcdFx0VmFsdWVMaXN0SGVscGVyLmluaXRpYWxpemVDYWNoZWRWYWx1ZUhlbHAoKTtcblxuXHRcdFx0ZGVsZXRlIEFwcENvbXBvbmVudC5pbnN0YW5jZU1hcFt0aGlzLmdldElkKCldO1xuXG5cdFx0XHQvLyBcdHZhciBvUmVnaXN0cnkgPSBzYXAudWkubWRjLnAxM24uRW5naW5lLmdldEluc3RhbmNlKCkuX2dldFJlZ2lzdHJ5KCk7XG5cdFx0XHQvLyBcdE9iamVjdC5rZXlzKG9SZWdpc3RyeSkuZm9yRWFjaChmdW5jdGlvbihzS2V5KSB7XG5cdFx0XHQvLyBcdFx0T2JqZWN0LmtleXMob1JlZ2lzdHJ5W3NLZXldLmNvbnRyb2xsZXIpLmZvckVhY2goZnVuY3Rpb24oc0NvbnRyb2xsZXJLZXkpIHtcblx0XHRcdC8vIFx0XHRcdG9SZWdpc3RyeVtzS2V5XS5jb250cm9sbGVyW3NDb250cm9sbGVyS2V5XS5kZXN0cm95KCk7XG5cdFx0XHQvLyBcdFx0fSk7XG5cdFx0XHQvLyBcdH0pO1xuXHRcdFx0Ly8gXHRzYXAudWkubWRjLnAxM24uRW5naW5lLmdldEluc3RhbmNlKCkuZGVzdHJveSgpO1xuXHRcdFx0ZGVsZXRlICh3aW5kb3cgYXMgYW55KS5fcm91dGluZztcblx0XHR9IGNhdGNoIChlKSB7XG5cdFx0XHRMb2cuaW5mbyhlKTtcblx0XHR9XG5cblx0XHQvL1dPUktBUk9VTkQgZm9yIHN0aWNreSBkaXNjYXJkIHJlcXVlc3QgOiBkdWUgdG8gYXN5bmMgY2FsbGJhY2ssIHJlcXVlc3QgdHJpZ2dlcmVkIGJ5IHRoZSBleGl0QXBwbGljYXRpb24gd2lsbCBiZSBzZW5kIGFmdGVyIHRoZSBVSUNvbXBvbmVudC5wcm90b3R5cGUuZGVzdHJveVxuXHRcdC8vc28gd2UgbmVlZCB0byBjb3B5IHRoZSBSZXF1ZXN0b3IgaGVhZGVycyBhcyBpdCB3aWxsIGJlIGRlc3Ryb3lcblxuXHRcdC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvYmFuLXRzLWNvbW1lbnRcblx0XHQvLyBAdHMtaWdub3JlXG5cdFx0Y29uc3Qgb01haW5Nb2RlbCA9ICh0aGlzIGFzIGFueSkub01vZGVsc1t1bmRlZmluZWRdO1xuXHRcdGNvbnN0IG9IZWFkZXJzID0galF1ZXJ5LmV4dGVuZCh7fSwgb01haW5Nb2RlbC5vUmVxdWVzdG9yLm1IZWFkZXJzKTtcblx0XHQvLyBBcyB3ZSBuZWVkIHRvIGNsZWFudXAgdGhlIGFwcGxpY2F0aW9uIC8gaGFuZGxlIHRoZSBkaXJ0eSBvYmplY3Qgd2UgbmVlZCB0byBjYWxsIG91ciBjbGVhbnVwIGJlZm9yZSB0aGUgbW9kZWxzIGFyZSBkZXN0cm95ZWRcblx0XHR0aGlzLmdldFJvdXRpbmdTZXJ2aWNlKCkuYmVmb3JlRXhpdCgpO1xuXHRcdC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvYmFuLXRzLWNvbW1lbnRcblx0XHQvLyBAdHMtaWdub3JlXG5cdFx0VUlDb21wb25lbnQucHJvdG90eXBlLmRlc3Ryb3kuYXBwbHkodGhpcywgW2FyZ3NdKTtcblx0XHRvTWFpbk1vZGVsLm9SZXF1ZXN0b3IubUhlYWRlcnMgPSBvSGVhZGVycztcblx0fVxuXHRnZXRDb21wb25lbnREYXRhKCk6IGFueSB7XG5cdFx0cmV0dXJuIHN1cGVyLmdldENvbXBvbmVudERhdGEoKTtcblx0fVxuXHRnZXRSb3V0aW5nU2VydmljZSgpOiBSb3V0aW5nU2VydmljZSB7XG5cdFx0cmV0dXJuIHt9IGFzIFJvdXRpbmdTZXJ2aWNlOyAvLyBvdmVycmlkZW4gYXQgcnVudGltZVxuXHR9XG5cdGdldFNoZWxsU2VydmljZXMoKTogSVNoZWxsU2VydmljZXMge1xuXHRcdHJldHVybiB7fSBhcyBJU2hlbGxTZXJ2aWNlczsgLy8gb3ZlcnJpZGVuIGF0IHJ1bnRpbWVcblx0fVxuXHRnZXROYXZpZ2F0aW9uU2VydmljZSgpOiBOYXZpZ2F0aW9uU2VydmljZSB7XG5cdFx0cmV0dXJuIHt9IGFzIE5hdmlnYXRpb25TZXJ2aWNlOyAvLyBvdmVycmlkZW4gYXQgcnVudGltZVxuXHR9XG5cdGdldFNpZGVFZmZlY3RzU2VydmljZSgpOiBTaWRlRWZmZWN0c1NlcnZpY2Uge1xuXHRcdHJldHVybiB7fSBhcyBTaWRlRWZmZWN0c1NlcnZpY2U7XG5cdH1cblx0Z2V0RW52aXJvbm1lbnRDYXBhYmlsaXRpZXMoKTogRW52aXJvbm1lbnRDYXBhYmlsaXRpZXNTZXJ2aWNlIHtcblx0XHRyZXR1cm4ge30gYXMgRW52aXJvbm1lbnRDYXBhYmlsaXRpZXNTZXJ2aWNlO1xuXHR9XG5cblx0Z2V0U3RhcnR1cFBhcmFtZXRlcnMoKSB7XG5cdFx0Y29uc3Qgb0NvbXBvbmVudERhdGEgPSB0aGlzLmdldENvbXBvbmVudERhdGEoKSBhcyBhbnk7XG5cdFx0Y29uc3Qgb1N0YXJ0VXBQYXJhbWV0ZXJzID0gKG9Db21wb25lbnREYXRhICYmIG9Db21wb25lbnREYXRhLnN0YXJ0dXBQYXJhbWV0ZXJzKSB8fCB7fTtcblx0XHRyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKG9TdGFydFVwUGFyYW1ldGVycyk7XG5cdH1cblx0cmVzdG9yZSgpIHtcblx0XHQvLyBjYWxsZWQgYnkgRkxQIHdoZW4gYXBwIHNhcC1rZWVwLWFsaXZlIGlzIGVuYWJsZWQgYW5kIGFwcCBpcyByZXN0b3JlZFxuXHRcdCh0aGlzLmdldFJvb3RWaWV3Q29udHJvbGxlcigpIGFzIGFueSkudmlld1N0YXRlLm9uUmVzdG9yZSgpO1xuXHR9XG5cdHN1c3BlbmQoKSB7XG5cdFx0Ly8gY2FsbGVkIGJ5IEZMUCB3aGVuIGFwcCBzYXAta2VlcC1hbGl2ZSBpcyBlbmFibGVkIGFuZCBhcHAgaXMgc3VzcGVuZGVkXG5cdFx0KHRoaXMuZ2V0Um9vdFZpZXdDb250cm9sbGVyKCkgYXMgYW55KS52aWV3U3RhdGUub25TdXNwZW5kKCk7XG5cdH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgQXBwQ29tcG9uZW50O1xuIl19
|