@sapui5/sap.fe.core 1.93.3 → 1.97.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 +6 -6
- package/src/sap/fe/core/.library +1 -1
- package/src/sap/fe/core/AppComponent.js +8 -40
- package/src/sap/fe/core/BusyLocker.js +12 -0
- package/src/sap/fe/core/CommonUtils.js +224 -48
- package/src/sap/fe/core/ExtensionAPI.js +1 -1
- package/src/sap/fe/core/PageController.js +13 -2
- package/src/sap/fe/core/RouterProxy.js +52 -64
- package/src/sap/fe/core/TemplateComponent.js +8 -2
- package/src/sap/fe/core/TransactionHelper.js +210 -180
- package/src/sap/fe/core/actions/draft.js +13 -1
- package/src/sap/fe/core/actions/messageHandling.js +80 -4
- package/src/sap/fe/core/actions/operations.js +207 -68
- package/src/sap/fe/core/controllerextensions/EditFlow.js +82 -55
- package/src/sap/fe/core/controllerextensions/InternalEditFlow.js +13 -6
- package/src/sap/fe/core/controllerextensions/InternalIntentBasedNavigation.js +132 -23
- package/src/sap/fe/core/controllerextensions/InternalRouting.js +203 -214
- package/src/sap/fe/core/controllerextensions/KPIManagement.js +834 -170
- package/src/sap/fe/core/controllerextensions/KPIManagement.ts +890 -189
- package/src/sap/fe/core/controllerextensions/MessageHandler.js +222 -102
- package/src/sap/fe/core/controllerextensions/PageReady.js +48 -33
- package/src/sap/fe/core/controllerextensions/PageReady.ts +49 -14
- package/src/sap/fe/core/controllerextensions/Paginator.js +150 -0
- package/src/sap/fe/core/controllerextensions/Placeholder.js +133 -270
- package/src/sap/fe/core/controllerextensions/Share.js +12 -9
- package/src/sap/fe/core/controllerextensions/SideEffects.js +5 -6
- package/src/sap/fe/core/controllerextensions/SideEffects.ts +13 -12
- package/src/sap/fe/core/controllerextensions/ViewState.js +202 -8
- package/src/sap/fe/core/controls/ActionParameterDialog.fragment.xml +39 -34
- package/src/sap/fe/core/controls/ActionParameterDialogValueHelp.fragment.xml +35 -0
- package/src/sap/fe/core/controls/ActionPartial.fragment.xml +1 -1
- package/src/sap/fe/core/controls/CustomQuickViewPage.js +109 -108
- package/src/sap/fe/core/controls/MultiValueParameterDelegate.js +45 -0
- package/src/sap/fe/core/controls/filterbar/FilterContainer.js +15 -4
- package/src/sap/fe/core/controls/filterbar/VisualFilter.js +250 -94
- package/src/sap/fe/core/controls/filterbar/VisualFilterContainer.js +129 -135
- package/src/sap/fe/core/controls/filterbar/utils/VisualFilterUtils.js +325 -0
- package/src/sap/fe/core/controls/filterbar.d.js +8 -0
- package/src/sap/fe/core/controls/filterbar.d.ts +0 -0
- package/src/sap/fe/core/converters/ConverterContext.js +19 -5
- package/src/sap/fe/core/converters/ConverterContext.ts +13 -3
- package/src/sap/fe/core/converters/ManifestSettings.js +2 -1
- package/src/sap/fe/core/converters/ManifestSettings.ts +13 -3
- package/src/sap/fe/core/converters/ManifestWrapper.js +9 -9
- package/src/sap/fe/core/converters/MetaModelConverter.js +867 -871
- package/src/sap/fe/core/converters/MetaModelConverter.ts +772 -827
- package/src/sap/fe/core/converters/TemplateConverter.js +4 -4
- package/src/sap/fe/core/converters/annotations/DataField.js +57 -7
- package/src/sap/fe/core/converters/annotations/DataField.ts +52 -2
- package/src/sap/fe/core/converters/common/AnnotationConverter.js +146 -85
- package/src/sap/fe/core/converters/controls/Common/Action.js +61 -56
- package/src/sap/fe/core/converters/controls/Common/Action.ts +54 -39
- package/src/sap/fe/core/converters/controls/Common/Chart.js +101 -9
- package/src/sap/fe/core/converters/controls/Common/Chart.ts +100 -5
- package/src/sap/fe/core/converters/controls/Common/Criticality.js +1 -1
- package/src/sap/fe/core/converters/controls/Common/DataVisualization.js +15 -16
- package/src/sap/fe/core/converters/controls/Common/DataVisualization.ts +16 -30
- package/src/sap/fe/core/converters/controls/Common/Form.js +77 -29
- package/src/sap/fe/core/converters/controls/Common/Form.ts +79 -21
- package/src/sap/fe/core/converters/controls/Common/KPI.js +287 -109
- package/src/sap/fe/core/converters/controls/Common/KPI.ts +314 -139
- package/src/sap/fe/core/converters/controls/Common/Table.js +521 -166
- package/src/sap/fe/core/converters/controls/Common/Table.ts +519 -115
- package/src/sap/fe/core/converters/controls/ListReport/FilterBar.js +487 -0
- package/src/sap/fe/core/converters/controls/ListReport/FilterBar.ts +541 -0
- package/src/sap/fe/core/converters/controls/ListReport/VisualFilters.js +364 -0
- package/src/sap/fe/core/converters/controls/ListReport/VisualFilters.ts +338 -0
- package/src/sap/fe/core/converters/controls/ObjectPage/Avatar.js +74 -0
- package/src/sap/fe/core/converters/controls/ObjectPage/Avatar.ts +50 -0
- package/src/sap/fe/core/converters/controls/ObjectPage/HeaderFacet.js +11 -11
- package/src/sap/fe/core/converters/controls/ObjectPage/SubSection.js +47 -35
- package/src/sap/fe/core/converters/controls/ObjectPage/SubSection.ts +45 -29
- package/src/sap/fe/core/converters/helpers/Aggregation.js +31 -32
- package/src/sap/fe/core/converters/helpers/Aggregation.ts +26 -27
- package/src/sap/fe/core/converters/helpers/BindingHelper.js +27 -2
- package/src/sap/fe/core/converters/helpers/BindingHelper.ts +22 -2
- package/src/sap/fe/core/converters/helpers/ConfigurableObject.js +1 -1
- package/src/sap/fe/core/converters/helpers/ID.js +9 -3
- package/src/sap/fe/core/converters/helpers/ID.ts +6 -3
- package/src/sap/fe/core/converters/helpers/IssueManager.js +5 -4
- package/src/sap/fe/core/converters/helpers/IssueManager.ts +4 -3
- package/src/sap/fe/core/converters/helpers/Key.js +3 -3
- package/src/sap/fe/core/converters/helpers/SelectionVariantHelper.js +11 -6
- package/src/sap/fe/core/converters/helpers/SelectionVariantHelper.ts +9 -5
- package/src/sap/fe/core/converters/objectPage/FormMenuActions.js +18 -5
- package/src/sap/fe/core/converters/objectPage/FormMenuActions.ts +14 -14
- package/src/sap/fe/core/converters/objectPage/HeaderAndFooterAction.js +91 -20
- package/src/sap/fe/core/converters/objectPage/HeaderAndFooterAction.ts +77 -5
- package/src/sap/fe/core/converters/templates/ListReportConverter.js +87 -714
- package/src/sap/fe/core/converters/templates/ListReportConverter.ts +85 -812
- package/src/sap/fe/core/converters/templates/ObjectPageConverter.js +106 -17
- package/src/sap/fe/core/converters/templates/ObjectPageConverter.ts +121 -16
- package/src/sap/fe/core/designtime/AppComponent.designtime.js +2 -1
- package/src/sap/fe/core/formatters/CriticalityFormatter.js +1 -1
- package/src/sap/fe/core/formatters/FPMFormatter.js +1 -1
- package/src/sap/fe/core/formatters/FPMFormatter.ts +8 -3
- package/src/sap/fe/core/formatters/KPIFormatter.js +1 -1
- package/src/sap/fe/core/formatters/TableFormatter.js +27 -4
- package/src/sap/fe/core/formatters/TableFormatter.ts +20 -3
- package/src/sap/fe/core/formatters/TableFormatterTypes.js +1 -1
- package/src/sap/fe/core/formatters/ValueFormatter.js +1 -1
- package/src/sap/fe/core/fpm/Component.js +1 -1
- package/src/sap/fe/core/helpers/AnnotationEnum.js +3 -3
- package/src/sap/fe/core/helpers/BindingExpression.js +6 -6
- package/src/sap/fe/core/helpers/ClassSupport.js +4 -4
- package/src/sap/fe/core/helpers/ExcelFormatHelper.js +0 -2
- package/src/sap/fe/core/helpers/KeepAliveHelper.js +211 -0
- package/src/sap/fe/core/helpers/KeepAliveHelper.ts +202 -0
- package/src/sap/fe/core/helpers/KeepAliveRefreshTypes.js +32 -0
- package/src/sap/fe/core/helpers/KeepAliveRefreshTypes.ts +36 -0
- package/src/sap/fe/core/helpers/ModelHelper.js +78 -0
- package/src/sap/fe/core/helpers/PasteHelper.js +6 -0
- package/src/sap/fe/core/helpers/SemanticKeyHelper.js +2 -2
- package/src/sap/fe/core/helpers/StableIdHelper.js +1 -1
- package/src/sap/fe/core/helpers/StableIdHelper.ts +1 -1
- package/src/sap/fe/core/jsx-runtime/jsx.js +2 -2
- package/src/sap/fe/core/jsx-runtime/jsxs.js +1 -1
- package/src/sap/fe/core/library.js +1 -1
- package/src/sap/fe/core/messagebundle.properties +45 -2
- package/src/sap/fe/core/messagebundle_ar.properties +53 -1
- package/src/sap/fe/core/messagebundle_bg.properties +52 -0
- package/src/sap/fe/core/messagebundle_ca.properties +54 -2
- package/src/sap/fe/core/messagebundle_cs.properties +52 -0
- package/src/sap/fe/core/messagebundle_cy.properties +52 -0
- package/src/sap/fe/core/messagebundle_da.properties +53 -1
- package/src/sap/fe/core/messagebundle_de.properties +55 -3
- package/src/sap/fe/core/messagebundle_el.properties +53 -1
- package/src/sap/fe/core/messagebundle_en.properties +52 -0
- package/src/sap/fe/core/messagebundle_en_GB.properties +53 -1
- package/src/sap/fe/core/messagebundle_en_US_sappsd.properties +49 -1
- package/src/sap/fe/core/messagebundle_en_US_saprigi.properties +53 -1
- package/src/sap/fe/core/messagebundle_en_US_saptrc.properties +53 -1
- package/src/sap/fe/core/messagebundle_es.properties +60 -8
- package/src/sap/fe/core/messagebundle_es_MX.properties +55 -3
- package/src/sap/fe/core/messagebundle_et.properties +52 -0
- package/src/sap/fe/core/messagebundle_fi.properties +52 -0
- package/src/sap/fe/core/messagebundle_fr.properties +61 -9
- package/src/sap/fe/core/messagebundle_fr_CA.properties +52 -0
- package/src/sap/fe/core/messagebundle_hi.properties +53 -1
- package/src/sap/fe/core/messagebundle_hr.properties +53 -1
- package/src/sap/fe/core/messagebundle_hu.properties +52 -0
- package/src/sap/fe/core/messagebundle_id.properties +54 -2
- package/src/sap/fe/core/messagebundle_it.properties +53 -1
- package/src/sap/fe/core/messagebundle_iw.properties +54 -2
- package/src/sap/fe/core/messagebundle_ja.properties +62 -10
- package/src/sap/fe/core/messagebundle_kk.properties +53 -1
- package/src/sap/fe/core/messagebundle_ko.properties +53 -1
- package/src/sap/fe/core/messagebundle_lt.properties +53 -1
- package/src/sap/fe/core/messagebundle_lv.properties +53 -1
- package/src/sap/fe/core/messagebundle_ms.properties +53 -1
- package/src/sap/fe/core/messagebundle_nl.properties +57 -5
- package/src/sap/fe/core/messagebundle_no.properties +54 -2
- package/src/sap/fe/core/messagebundle_pl.properties +53 -1
- package/src/sap/fe/core/messagebundle_pt.properties +54 -2
- package/src/sap/fe/core/messagebundle_pt_PT.properties +53 -1
- package/src/sap/fe/core/messagebundle_ro.properties +53 -1
- package/src/sap/fe/core/messagebundle_ru.properties +53 -1
- package/src/sap/fe/core/messagebundle_sh.properties +53 -1
- package/src/sap/fe/core/messagebundle_sk.properties +52 -0
- package/src/sap/fe/core/messagebundle_sl.properties +53 -1
- package/src/sap/fe/core/messagebundle_sv.properties +53 -1
- package/src/sap/fe/core/messagebundle_th.properties +52 -0
- package/src/sap/fe/core/messagebundle_tr.properties +52 -0
- package/src/sap/fe/core/messagebundle_uk.properties +52 -0
- package/src/sap/fe/core/messagebundle_vi.properties +53 -1
- package/src/sap/fe/core/messagebundle_zh_CN.properties +53 -1
- package/src/sap/fe/core/messagebundle_zh_TW.properties +53 -1
- package/src/sap/fe/core/services/AsyncComponentServiceFactory.js +5 -5
- package/src/sap/fe/core/services/EnvironmentServiceFactory.js +5 -5
- package/src/sap/fe/core/services/RoutingServiceFactory.js +154 -78
- package/src/sap/fe/core/services/ShellServicesFactory.js +9 -9
- package/src/sap/fe/core/services/SideEffectsServiceFactory.js +11 -12
- package/src/sap/fe/core/services/TemplatedViewServiceFactory.js +12 -2
- package/src/sap/fe/core/support/AnnotationIssue.support.js +2 -4
- package/src/sap/fe/core/support/CollectionFacetMissingID.support.js +2 -4
- package/src/sap/fe/core/support/CollectionFacetUnsupportedLevel.support.js +2 -4
- package/src/sap/fe/core/support/CommonHelper.js +2 -4
- package/src/sap/fe/core/support/Diagnostics.js +1 -1
- package/src/sap/fe/core/templating/CriticalityFormatters.js +4 -4
- package/src/sap/fe/core/templating/DataFieldFormatters.js +1 -1
- package/src/sap/fe/core/templating/DataModelPathHelper.js +54 -6
- package/src/sap/fe/core/templating/DataModelPathHelper.ts +54 -4
- package/src/sap/fe/core/templating/EntitySetHelper.js +86 -3
- package/src/sap/fe/core/templating/EntitySetHelper.ts +44 -0
- package/src/sap/fe/core/templating/FieldControlHelper.js +1 -1
- package/src/sap/fe/core/templating/FilterHelper.js +23 -5
- package/src/sap/fe/core/templating/FilterHelper.ts +15 -1
- package/src/sap/fe/core/templating/FilterTemplating.js +1 -1
- package/src/sap/fe/core/templating/PropertyFormatters.js +1 -1
- package/src/sap/fe/core/templating/PropertyHelper.js +8 -8
- package/src/sap/fe/core/templating/UIFormatters.js +72 -4
- package/src/sap/fe/core/templating/UIFormatters.ts +98 -3
- package/src/sap/fe/core/type/Email.js +1 -1
|
@@ -2,14 +2,18 @@
|
|
|
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(["../ManifestSettings", "../controls/ObjectPage/SubSection", "../controls/ObjectPage/HeaderFacet", "../helpers/ID", "../helpers/ConfigurableObject", "sap/fe/core/converters/controls/Common/Action", "sap/fe/core/converters/objectPage/HeaderAndFooterAction", "sap/fe/core/helpers/BindingExpression"], function (ManifestSettings, SubSection, HeaderFacet, ID, ConfigurableObject, Action, HeaderAndFooterAction, BindingExpression) {
|
|
5
|
+
sap.ui.define(["../ManifestSettings", "../controls/ObjectPage/SubSection", "../controls/ObjectPage/HeaderFacet", "../helpers/ID", "../helpers/ConfigurableObject", "sap/fe/core/converters/controls/Common/Action", "sap/fe/core/converters/objectPage/HeaderAndFooterAction", "../controls/ObjectPage/Avatar", "sap/fe/core/helpers/BindingExpression"], function (ManifestSettings, SubSection, HeaderFacet, ID, ConfigurableObject, Action, HeaderAndFooterAction, Avatar, BindingExpression) {
|
|
6
6
|
"use strict";
|
|
7
7
|
|
|
8
8
|
var _exports = {};
|
|
9
|
+
var constant = BindingExpression.constant;
|
|
10
|
+
var ifElse = BindingExpression.ifElse;
|
|
9
11
|
var not = BindingExpression.not;
|
|
10
12
|
var equal = BindingExpression.equal;
|
|
11
13
|
var compileBinding = BindingExpression.compileBinding;
|
|
14
|
+
var bindingExpression = BindingExpression.bindingExpression;
|
|
12
15
|
var annotationExpression = BindingExpression.annotationExpression;
|
|
16
|
+
var getAvatar = Avatar.getAvatar;
|
|
13
17
|
var getHiddenHeaderActions = HeaderAndFooterAction.getHiddenHeaderActions;
|
|
14
18
|
var getFooterDefaultActions = HeaderAndFooterAction.getFooterDefaultActions;
|
|
15
19
|
var getHeaderDefaultActions = HeaderAndFooterAction.getHeaderDefaultActions;
|
|
@@ -27,7 +31,7 @@ sap.ui.define(["../ManifestSettings", "../controls/ObjectPage/SubSection", "../c
|
|
|
27
31
|
var createCustomSubSections = SubSection.createCustomSubSections;
|
|
28
32
|
var TemplateType = ManifestSettings.TemplateType;
|
|
29
33
|
|
|
30
|
-
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
|
|
34
|
+
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
|
|
31
35
|
|
|
32
36
|
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
|
|
33
37
|
|
|
@@ -174,7 +178,7 @@ sap.ui.define(["../ManifestSettings", "../controls/ObjectPage/SubSection", "../c
|
|
|
174
178
|
if (!customSectionDefinition.subSections) {
|
|
175
179
|
// If there is no subSection defined, we add the content of the custom section as subsections
|
|
176
180
|
// and make sure to set the visibility to 'true', as the actual visibility is handled by the section itself
|
|
177
|
-
manifestSubSections = _defineProperty({}, sectionKey, _objectSpread({}, customSectionDefinition, {
|
|
181
|
+
manifestSubSections = _defineProperty({}, sectionKey, _objectSpread(_objectSpread({}, customSectionDefinition), {}, {
|
|
178
182
|
position: undefined,
|
|
179
183
|
visible: true
|
|
180
184
|
}));
|
|
@@ -190,17 +194,14 @@ sap.ui.define(["../ManifestSettings", "../controls/ObjectPage/SubSection", "../c
|
|
|
190
194
|
showTitle: !!customSectionDefinition.title,
|
|
191
195
|
visible: customSectionDefinition.visible !== undefined ? customSectionDefinition.visible : true,
|
|
192
196
|
position: position,
|
|
193
|
-
subSections:
|
|
194
|
-
"title": "overwrite",
|
|
195
|
-
"actions": "merge"
|
|
196
|
-
})
|
|
197
|
+
subSections: subSections
|
|
197
198
|
};
|
|
198
199
|
return customSection;
|
|
199
200
|
}
|
|
200
201
|
/**
|
|
201
202
|
* Retrieves the ObjectPage header actions (both the default ones and the custom ones defined in the manifest).
|
|
202
203
|
*
|
|
203
|
-
* @param converterContext
|
|
204
|
+
* @param {ConverterContext} converterContext The converter context
|
|
204
205
|
* @returns An array containing all the actions for this ObjectPage header
|
|
205
206
|
*/
|
|
206
207
|
|
|
@@ -218,7 +219,7 @@ sap.ui.define(["../ManifestSettings", "../controls/ObjectPage/SubSection", "../c
|
|
|
218
219
|
/**
|
|
219
220
|
* Retrieves the ObjectPage footer actions (both the default ones and the custom ones defined in the manifest).
|
|
220
221
|
*
|
|
221
|
-
* @param converterContext
|
|
222
|
+
* @param {ConverterContext} converterContext The converter context
|
|
222
223
|
* @returns An array containing all the actions for this ObjectPage footer
|
|
223
224
|
*/
|
|
224
225
|
|
|
@@ -238,7 +239,7 @@ sap.ui.define(["../ManifestSettings", "../controls/ObjectPage/SubSection", "../c
|
|
|
238
239
|
/**
|
|
239
240
|
* Retrieves and merges the ObjectPage sections defined in the annotation and in the manifest.
|
|
240
241
|
*
|
|
241
|
-
* @param converterContext
|
|
242
|
+
* @param {ConverterContext} converterContext The converter context
|
|
242
243
|
* @returns An array of sections.
|
|
243
244
|
*/
|
|
244
245
|
|
|
@@ -247,7 +248,7 @@ sap.ui.define(["../ManifestSettings", "../controls/ObjectPage/SubSection", "../c
|
|
|
247
248
|
|
|
248
249
|
var getSections = function (converterContext) {
|
|
249
250
|
var manifestWrapper = converterContext.getManifestWrapper();
|
|
250
|
-
|
|
251
|
+
var sections = insertCustomElements(getSectionsFromAnnotation(converterContext), getSectionsFromManifest(manifestWrapper.getSections(), converterContext), {
|
|
251
252
|
"title": "overwrite",
|
|
252
253
|
"visible": "overwrite",
|
|
253
254
|
"subSections": {
|
|
@@ -255,11 +256,91 @@ sap.ui.define(["../ManifestSettings", "../controls/ObjectPage/SubSection", "../c
|
|
|
255
256
|
"title": "overwrite",
|
|
256
257
|
"sideContent": "overwrite"
|
|
257
258
|
}
|
|
259
|
+
}); // Level Adjustment for "Mixed" Collection Facets:
|
|
260
|
+
// ==============================================
|
|
261
|
+
// The manifest definition of custom side contents and actions still needs to be aligned for "Mixed" collection facets:
|
|
262
|
+
// Collection facets containing tables gain an extra reference facet as a table wrapper to ensure, that the table is always
|
|
263
|
+
// placed in an own individual Object Page Block; this additional hierarchy level is unknown to app developers, which are
|
|
264
|
+
// defining the side content and actions in the manifest at collection facet level; now, since the sideContent always needs
|
|
265
|
+
// to be assigned to a block, we need to move the sideContent of from a mixed collection facet to its first child reference facet.
|
|
266
|
+
// ==============================================
|
|
267
|
+
|
|
268
|
+
sections.forEach(function (section) {
|
|
269
|
+
var _section$subSections;
|
|
270
|
+
|
|
271
|
+
(_section$subSections = section.subSections) === null || _section$subSections === void 0 ? void 0 : _section$subSections.forEach(function (subSection) {
|
|
272
|
+
if (subSection.type === "Mixed" && subSection.sideContent != undefined && subSection.content && subSection.content.length > 0) {
|
|
273
|
+
// 1. Copy sideContent / actions to the SubSection's content
|
|
274
|
+
// 2. Delete sideContent / actions at the (invalid) manifest level
|
|
275
|
+
if (subSection.sideContent) {
|
|
276
|
+
subSection.content[0].sideContent = subSection.sideContent;
|
|
277
|
+
subSection.sideContent = undefined;
|
|
278
|
+
}
|
|
279
|
+
|
|
280
|
+
if (subSection.actions.length > 0) {
|
|
281
|
+
subSection.content[0].actions = subSection.actions;
|
|
282
|
+
subSection.actions = [];
|
|
283
|
+
}
|
|
284
|
+
}
|
|
285
|
+
});
|
|
258
286
|
});
|
|
287
|
+
return sections;
|
|
259
288
|
};
|
|
289
|
+
/**
|
|
290
|
+
* Determines if the ObjectPage has header content.
|
|
291
|
+
*
|
|
292
|
+
* @param converterContext The instance of the converter context
|
|
293
|
+
* @returns {boolean} `true` if there is at least on header facet
|
|
294
|
+
*/
|
|
295
|
+
|
|
260
296
|
|
|
261
297
|
_exports.getSections = getSections;
|
|
262
298
|
|
|
299
|
+
function hasHeaderContent(converterContext) {
|
|
300
|
+
var _converterContext$get3, _converterContext$get4;
|
|
301
|
+
|
|
302
|
+
var manifestWrapper = converterContext.getManifestWrapper();
|
|
303
|
+
return (((_converterContext$get3 = converterContext.getEntityType().annotations) === null || _converterContext$get3 === void 0 ? void 0 : (_converterContext$get4 = _converterContext$get3.UI) === null || _converterContext$get4 === void 0 ? void 0 : _converterContext$get4.HeaderFacets) || []).length > 0 || Object.keys(manifestWrapper.getHeaderFacets()).length > 0;
|
|
304
|
+
}
|
|
305
|
+
/**
|
|
306
|
+
* Gets the expression to evaluate the visibility of the header content.
|
|
307
|
+
*
|
|
308
|
+
* @param converterContext The instance of the converter context
|
|
309
|
+
* @returns {BindingExpression<boolean>} The binding expression for the Delete button
|
|
310
|
+
*/
|
|
311
|
+
|
|
312
|
+
|
|
313
|
+
function getShowHeaderContentExpression(converterContext) {
|
|
314
|
+
var manifestWrapper = converterContext.getManifestWrapper();
|
|
315
|
+
return ifElse(!hasHeaderContent(converterContext), constant(false), ifElse(equal(manifestWrapper.isHeaderEditable(), false), constant(true), not(equal(bindingExpression("/editMode", "ui"), "Editable"))));
|
|
316
|
+
}
|
|
317
|
+
/**
|
|
318
|
+
* Gets the binding expression to evaluate the visibility of the header content.
|
|
319
|
+
*
|
|
320
|
+
* @param converterContext The instance of the converter context
|
|
321
|
+
* @returns {BindingExpression<boolean>} The binding expression for the Delete button
|
|
322
|
+
*/
|
|
323
|
+
|
|
324
|
+
|
|
325
|
+
var getShowHeaderContent = function (converterContext) {
|
|
326
|
+
return compileBinding(getShowHeaderContentExpression(converterContext));
|
|
327
|
+
};
|
|
328
|
+
/**
|
|
329
|
+
* Gets the binding expression to evaluate the visibility of the avatar when the header is in expanded state.
|
|
330
|
+
*
|
|
331
|
+
* @param converterContext The instance of the converter context
|
|
332
|
+
* @returns {BindingExpression<string>} The binding expression for the Delete button
|
|
333
|
+
*/
|
|
334
|
+
|
|
335
|
+
|
|
336
|
+
_exports.getShowHeaderContent = getShowHeaderContent;
|
|
337
|
+
|
|
338
|
+
var getExpandedImageVisible = function (converterContext) {
|
|
339
|
+
return compileBinding(not(getShowHeaderContentExpression(converterContext)));
|
|
340
|
+
};
|
|
341
|
+
|
|
342
|
+
_exports.getExpandedImageVisible = getExpandedImageVisible;
|
|
343
|
+
|
|
263
344
|
var convertPage = function (converterContext) {
|
|
264
345
|
var _entityType$annotatio4, _entityType$annotatio5;
|
|
265
346
|
|
|
@@ -273,19 +354,27 @@ sap.ui.define(["../ManifestSettings", "../controls/ObjectPage/SubSection", "../c
|
|
|
273
354
|
|
|
274
355
|
var footerActions = getFooterActions(converterContext);
|
|
275
356
|
|
|
276
|
-
if (manifestWrapper.isHeaderEditable() && ((
|
|
357
|
+
if (manifestWrapper.isHeaderEditable() && ((_entityType$annotatio4 = entityType.annotations.UI) !== null && _entityType$annotatio4 !== void 0 && _entityType$annotatio4.HeaderFacets || (_entityType$annotatio5 = entityType.annotations.UI) !== null && _entityType$annotatio5 !== void 0 && _entityType$annotatio5.HeaderInfo)) {
|
|
277
358
|
headerSection = createEditableHeaderSection(converterContext, headerFacets);
|
|
278
359
|
}
|
|
279
360
|
|
|
280
361
|
var sections = getSections(converterContext);
|
|
281
362
|
return {
|
|
282
363
|
template: TemplateType.ObjectPage,
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
364
|
+
header: {
|
|
365
|
+
visible: manifestWrapper.getShowObjectPageHeader(),
|
|
366
|
+
section: headerSection,
|
|
367
|
+
facets: headerFacets,
|
|
368
|
+
actions: headerActions,
|
|
369
|
+
showContent: getShowHeaderContent(converterContext),
|
|
370
|
+
hasContent: hasHeaderContent(converterContext),
|
|
371
|
+
avatar: getAvatar(converterContext),
|
|
372
|
+
title: {
|
|
373
|
+
expandedImageVisible: getExpandedImageVisible(converterContext)
|
|
374
|
+
}
|
|
375
|
+
},
|
|
286
376
|
sections: sections,
|
|
287
377
|
footerActions: footerActions,
|
|
288
|
-
showHeader: manifestWrapper.getShowObjectPageHeader(),
|
|
289
378
|
showAnchorBar: manifestWrapper.getShowAnchorBar(),
|
|
290
379
|
useIconTabBar: manifestWrapper.useIconTabBar()
|
|
291
380
|
};
|
|
@@ -294,4 +383,4 @@ sap.ui.define(["../ManifestSettings", "../controls/ObjectPage/SubSection", "../c
|
|
|
294
383
|
_exports.convertPage = convertPage;
|
|
295
384
|
return _exports;
|
|
296
385
|
}, false);
|
|
297
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIk9iamVjdFBhZ2VDb252ZXJ0ZXIudHMiXSwibmFtZXMiOlsiZ2V0U2VjdGlvbktleSIsImZhY2V0RGVmaW5pdGlvbiIsImZhbGxiYWNrIiwiSUQiLCJ0b1N0cmluZyIsIkxhYmVsIiwiY3JlYXRlRWRpdGFibGVIZWFkZXJTZWN0aW9uIiwiY29udmVydGVyQ29udGV4dCIsImFsbEhlYWRlckZhY2V0cyIsImVkaXRhYmxlSGVhZGVyU2VjdGlvbklEIiwiRWRpdGFibGVIZWFkZXJTZWN0aW9uSUQiLCJoZWFkZXJGYWNldHMiLCJnZXRFbnRpdHlUeXBlIiwiYW5ub3RhdGlvbnMiLCJVSSIsIkhlYWRlckZhY2V0cyIsImhlYWRlcmZhY2V0U3ViU2VjdGlvbnMiLCJjcmVhdGVTdWJTZWN0aW9ucyIsImN1c3RvbUhlYWRlckZhY2V0U3ViU2VjdGlvbnMiLCJjcmVhdGVDdXN0b21IZWFkZXJGYWNldFN1YlNlY3Rpb25zIiwiYWxsSGVhZGVyRmFjZXRzU3ViU2VjdGlvbnMiLCJsZW5ndGgiLCJpIiwiZm9yRWFjaCIsIml0ZW0iLCJ2aXNpYmxlIiwicHVzaCIsImtleSIsInNsaWNlIiwibGFzdEluZGV4T2YiLCJjdXN0b21JdGVtIiwiaGVhZGVyU2VjdGlvbiIsImlkIiwidGl0bGUiLCJzdWJTZWN0aW9ucyIsImdldFNlY3Rpb25zRnJvbUFubm90YXRpb24iLCJlbnRpdHlUeXBlIiwib2JqZWN0UGFnZVNlY3Rpb25zIiwiRmFjZXRzIiwibWFwIiwiZ2V0U2VjdGlvbkZyb21Bbm5vdGF0aW9uIiwiZmFjZXQiLCJzZWN0aW9uSUQiLCJTZWN0aW9uSUQiLCJGYWNldCIsInNlY3Rpb24iLCJjb21waWxlQmluZGluZyIsImFubm90YXRpb25FeHByZXNzaW9uIiwic2hvd1RpdGxlIiwibm90IiwiZXF1YWwiLCJIaWRkZW4iLCJ2YWx1ZU9mIiwiZ2V0U2VjdGlvbnNGcm9tTWFuaWZlc3QiLCJtYW5pZmVzdFNlY3Rpb25zIiwic2VjdGlvbnMiLCJPYmplY3QiLCJrZXlzIiwibWFuaWZlc3RTZWN0aW9uS2V5IiwiZ2V0U2VjdGlvbkZyb21NYW5pZmVzdCIsImN1c3RvbVNlY3Rpb25EZWZpbml0aW9uIiwic2VjdGlvbktleSIsImN1c3RvbVNlY3Rpb25JRCIsIkN1c3RvbVNlY3Rpb25JRCIsInBvc2l0aW9uIiwicGxhY2VtZW50IiwiUGxhY2VtZW50IiwiQWZ0ZXIiLCJtYW5pZmVzdFN1YlNlY3Rpb25zIiwidW5kZWZpbmVkIiwiY3JlYXRlQ3VzdG9tU3ViU2VjdGlvbnMiLCJjdXN0b21TZWN0aW9uIiwiaW5zZXJ0Q3VzdG9tRWxlbWVudHMiLCJnZXRIZWFkZXJBY3Rpb25zIiwiYUFubm90YXRpb25IZWFkZXJBY3Rpb25zIiwiZ2V0SGVhZGVyRGVmYXVsdEFjdGlvbnMiLCJtYW5pZmVzdFdyYXBwZXIiLCJnZXRNYW5pZmVzdFdyYXBwZXIiLCJoZWFkZXJBY3Rpb25zIiwiZ2V0QWN0aW9uc0Zyb21NYW5pZmVzdCIsImdldEhpZGRlbkhlYWRlckFjdGlvbnMiLCJpc05hdmlnYWJsZSIsImVuYWJsZWQiLCJkZWZhdWx0VmFsdWVzRXh0ZW5zaW9uRnVuY3Rpb24iLCJyZW1vdmVEdXBsaWNhdGVBY3Rpb25zIiwiZ2V0Rm9vdGVyQWN0aW9ucyIsImFBbm5vdGF0aW9uRm9vdGVyQWN0aW9ucyIsImdldEZvb3RlckRlZmF1bHRBY3Rpb25zIiwiZ2V0Vmlld0xldmVsIiwiZm9vdGVyQWN0aW9ucyIsImdldFNlY3Rpb25zIiwiY29udmVydFBhZ2UiLCJnZXRIZWFkZXJGYWNldHNGcm9tQW5ub3RhdGlvbnMiLCJnZXRIZWFkZXJGYWNldHNGcm9tTWFuaWZlc3QiLCJnZXRIZWFkZXJGYWNldHMiLCJpc0hlYWRlckVkaXRhYmxlIiwiSGVhZGVySW5mbyIsInRlbXBsYXRlIiwiVGVtcGxhdGVUeXBlIiwiT2JqZWN0UGFnZSIsInNob3dIZWFkZXIiLCJnZXRTaG93T2JqZWN0UGFnZUhlYWRlciIsInNob3dBbmNob3JCYXIiLCJnZXRTaG93QW5jaG9yQmFyIiwidXNlSWNvblRhYkJhciJdLCJtYXBwaW5n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QUFLTnZCLE1BQUFBLFFBQVEsRUFBRUEsUUFMSjtBQU1Oa0MsTUFBQUEsYUFBYSxFQUFFQSxhQU5UO0FBT05XLE1BQUFBLFVBQVUsRUFBRXhCLGVBQWUsQ0FBQ3lCLHVCQUFoQixFQVBOO0FBUU5DLE1BQUFBLGFBQWEsRUFBRTFCLGVBQWUsQ0FBQzJCLGdCQUFoQixFQVJUO0FBU05DLE1BQUFBLGFBQWEsRUFBRTVCLGVBQWUsQ0FBQzRCLGFBQWhCO0FBVFQsS0FBUDtBQVdBLEdBakNNIiwic291cmNlUm9vdCI6Ii4iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBGYWNldFR5cGVzIH0gZnJvbSBcIkBzYXAtdXgvdm9jYWJ1bGFyaWVzLXR5cGVzXCI7XG5pbXBvcnQgeyBNYW5pZmVzdFNlY3Rpb24sIE1hbmlmZXN0U3ViU2VjdGlvbiwgVGVtcGxhdGVUeXBlIH0gZnJvbSBcIi4uL01hbmlmZXN0U2V0dGluZ3NcIjtcbmltcG9ydCB7IFBhZ2VEZWZpbml0aW9uIH0gZnJvbSBcIi4uL1RlbXBsYXRlQ29udmVydGVyXCI7XG5pbXBvcnQgeyBFbnRpdHlUeXBlIH0gZnJvbSBcIkBzYXAtdXgvYW5ub3RhdGlvbi1jb252ZXJ0ZXJcIjtcbmltcG9ydCB7XG5cdGNyZWF0ZUN1c3RvbVN1YlNlY3Rpb25zLFxuXHRjcmVhdGVTdWJTZWN0aW9ucyxcblx0Y3JlYXRlQ3VzdG9tSGVhZGVyRmFjZXRTdWJTZWN0aW9ucyxcblx0Q3VzdG9tT2JqZWN0UGFnZVNlY3Rpb24sXG5cdEN1c3RvbU9iamVjdFBhZ2VTdWJTZWN0aW9uLFxuXHRPYmplY3RQYWdlU2VjdGlvbixcblx0T2JqZWN0UGFnZVN1YlNlY3Rpb25cbn0gZnJvbSBcIi4uL2NvbnRyb2xzL09iamVjdFBhZ2UvU3ViU2VjdGlvblwiO1xuaW1wb3J0IHsgZ2V0SGVhZGVyRmFjZXRzRnJvbUFubm90YXRpb25zLCBnZXRIZWFkZXJGYWNldHNGcm9tTWFuaWZlc3QsIE9iamVjdFBhZ2VIZWFkZXJGYWNldCB9IGZyb20gXCIuLi9jb250cm9scy9PYmplY3RQYWdlL0hlYWRlckZhY2V0XCI7XG5pbXBvcnQgeyBDdXN0b21TZWN0aW9uSUQsIEVkaXRhYmxlSGVhZGVyU2VjdGlvbklELCBTZWN0aW9uSUQgfSBmcm9tIFwiLi4vaGVscGVycy9JRFwiO1xuaW1wb3J0IHsgQ29uZmlndXJhYmxlUmVjb3JkLCBpbnNlcnRDdXN0b21FbGVtZW50cywgUGxhY2VtZW50LCBQb3NpdGlvbiB9IGZyb20gXCIuLi9oZWxwZXJzL0NvbmZpZ3VyYWJsZU9iamVjdFwiO1xuaW1wb3J0IHsgQmFzZUFjdGlvbiwgZ2V0QWN0aW9uc0Zyb21NYW5pZmVzdCwgcmVtb3ZlRHVwbGljYXRlQWN0aW9ucyB9IGZyb20gXCJzYXAvZmUvY29yZS9jb252ZXJ0ZXJzL2NvbnRyb2xzL0NvbW1vbi9BY3Rpb25cIjtcbmltcG9ydCB7XG5cdGdldEhlYWRlckRlZmF1bHRBY3Rpb25zLFxuXHRnZXRGb290ZXJEZWZhdWx0QWN0aW9ucyxcblx0Z2V0SGlkZGVuSGVhZGVyQWN0aW9uc1xufSBmcm9tIFwic2FwL2ZlL2NvcmUvY29udmVydGVycy9vYmplY3RQYWdlL0hlYWRlckFuZEZvb3RlckFjdGlvblwiO1xuaW1wb3J0IHsgYW5ub3RhdGlvbkV4cHJlc3Npb24sIGNvbXBpbGVCaW5kaW5nLCBlcXVhbCwgbm90IH0gZnJvbSBcInNhcC9mZS9jb3JlL2hlbHBlcnMvQmluZGluZ0V4cHJlc3Npb25cIjtcbmltcG9ydCBDb252ZXJ0ZXJDb250ZXh0IGZyb20gXCIuLi9Db252ZXJ0ZXJDb250ZXh0XCI7XG5cbmV4cG9ydCB0eXBlIE9iamVjdFBhZ2VEZWZpbml0aW9uID0gUGFnZURlZmluaXRpb24gJiB7XG5cdGhlYWRlckZhY2V0czogT2JqZWN0UGFnZUhlYWRlckZhY2V0W107XG5cdGhlYWRlclNlY3Rpb24/OiBPYmplY3RQYWdlU2VjdGlvbjtcblx0aGVhZGVyQWN0aW9uczogQmFzZUFjdGlvbltdO1xuXHRzZWN0aW9uczogT2JqZWN0UGFnZVNlY3Rpb25bXTtcblx0Zm9vdGVyQWN0aW9uczogQmFzZUFjdGlvbltdO1xuXHRzaG93SGVhZGVyOiBib29sZWFuO1xuXHRzaG93QW5jaG9yQmFyOiBib29sZWFuO1xuXHR1c2VJY29uVGFiQmFyOiBib29sZWFuO1xufTtcblxuY29uc3QgZ2V0U2VjdGlvbktleSA9IChmYWNldERlZmluaXRpb246IEZhY2V0VHlwZXMsIGZhbGxiYWNrOiBzdHJpbmcpOiBzdHJpbmcgPT4ge1xuXHRyZXR1cm4gZmFjZXREZWZpbml0aW9uLklEPy50b1N0cmluZygpIHx8IGZhY2V0RGVmaW5pdGlvbi5MYWJlbD8udG9TdHJpbmcoKSB8fCBmYWxsYmFjaztcbn07XG5cbi8qKlxuICogQ3JlYXRlcyBhIHNlY3Rpb24gdGhhdCByZXByZXNlbnRzIHRoZSBlZGl0YWJsZSBoZWFkZXIgcGFydDsgaXQgaXMgb25seSB2aXNpYmxlIGluIGVkaXQgbW9kZS5cbiAqXG4gKiBAcGFyYW0gY29udmVydGVyQ29udGV4dCBUaGUgY29udmVydGVyIGNvbnRleHRcbiAqIEBwYXJhbSBhbGxIZWFkZXJGYWNldHMgVGhlIGNvbnZlcnRlciBjb250ZXh0XG4gKiBAcmV0dXJucyB7T2JqZWN0UGFnZVNlY3Rpb259IFRoZSBzZWN0aW9uIHJlcHJlc2VudGluZyB0aGUgZWRpdGFibGUgaGVhZGVyIHBhcnRzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVFZGl0YWJsZUhlYWRlclNlY3Rpb24oXG5cdGNvbnZlcnRlckNvbnRleHQ6IENvbnZlcnRlckNvbnRleHQsXG5cdGFsbEhlYWRlckZhY2V0czogT2JqZWN0UGFnZUhlYWRlckZhY2V0W11cbik6IE9iamVjdFBhZ2VTZWN0aW9uIHtcblx0Y29uc3QgZWRpdGFibGVIZWFkZXJTZWN0aW9uSUQgPSBFZGl0YWJsZUhlYWRlclNlY3Rpb25JRCgpO1xuXHRjb25zdCBoZWFkZXJGYWNldHMgPSBjb252ZXJ0ZXJDb250ZXh0LmdldEVudGl0eVR5cGUoKS5hbm5vdGF0aW9ucz8uVUk/LkhlYWRlckZhY2V0cztcblx0Y29uc3QgaGVhZGVyZmFjZXRTdWJTZWN0aW9ucyA9IGhlYWRlckZhY2V0cyA/IGNyZWF0ZVN1YlNlY3Rpb25zKGhlYWRlckZhY2V0cywgY29udmVydGVyQ29udGV4dCwgdHJ1ZSkgOiBbXTtcblx0Y29uc3QgY3VzdG9tSGVhZGVyRmFjZXRTdWJTZWN0aW9ucyA9IGNyZWF0ZUN1c3RvbUhlYWRlckZhY2V0U3ViU2VjdGlvbnMoY29udmVydGVyQ29udGV4dCk7XG5cdGxldCBhbGxIZWFkZXJGYWNldHNTdWJTZWN0aW9uczogT2JqZWN0UGFnZVN1YlNlY3Rpb25bXSA9IFtdO1xuXHRpZiAoY3VzdG9tSGVhZGVyRmFjZXRTdWJTZWN0aW9ucy5sZW5ndGggPiAwKSB7XG5cdFx0Ly8gbWVyZ2UgYW5ub3RhdGlvbiBiYXNlZCBoZWFkZXIgZmFjZXRzIGFuZCBjdXN0b20gaGVhZGVyIGZhY2V0cyBpbiB0aGUgcmlnaHQgb3JkZXJcblx0XHRsZXQgaSA9IDA7XG5cdFx0YWxsSGVhZGVyRmFjZXRzLmZvckVhY2goZnVuY3Rpb24oaXRlbSkge1xuXHRcdFx0Ly8gaGlkZGVuIGhlYWRlciBmYWNldHMgYXJlIG5vdCBpbmNsdWRlZCBpbiBhbGxIZWFkZXJGYWNldHMgYXJyYXkgPT4gYWRkIHRoZW0gYW55d2F5XG5cdFx0XHR3aGlsZSAoaGVhZGVyZmFjZXRTdWJTZWN0aW9ucy5sZW5ndGggPiBpICYmIGhlYWRlcmZhY2V0U3ViU2VjdGlvbnNbaV0udmlzaWJsZSA9PT0gXCJmYWxzZVwiKSB7XG5cdFx0XHRcdGFsbEhlYWRlckZhY2V0c1N1YlNlY3Rpb25zLnB1c2goaGVhZGVyZmFjZXRTdWJTZWN0aW9uc1tpXSk7XG5cdFx0XHRcdGkrKztcblx0XHRcdH1cblx0XHRcdGlmIChcblx0XHRcdFx0aGVhZGVyZmFjZXRTdWJTZWN0aW9ucy5sZW5ndGggPiBpICYmXG5cdFx0XHRcdChpdGVtLmtleSA9PT0gaGVhZGVyZmFjZXRTdWJTZWN0aW9uc1tpXS5rZXkgfHxcblx0XHRcdFx0XHQvLyBmb3IgaGVhZGVyIGZhY2V0cyB3aXRoIG5vIGlkIHRoZSBrZXlzIG9mIGhlYWRlciBmYWNldCBhbmQgc3Vic2VjdGlvbiBhcmUgZGlmZmVyZW50ID0+IGNoZWNrIG9ubHkgdGhlIGxhc3QgcGFydFxuXHRcdFx0XHRcdGl0ZW0ua2V5LnNsaWNlKGl0ZW0ua2V5Lmxhc3RJbmRleE9mKFwiOjpcIikgKyAyKSA9PT1cblx0XHRcdFx0XHRcdGhlYWRlcmZhY2V0U3ViU2VjdGlvbnNbaV0ua2V5LnNsaWNlKGhlYWRlcmZhY2V0U3ViU2VjdGlvbnNbaV0ua2V5Lmxhc3RJbmRleE9mKFwiOjpcIikgKyAyKSlcblx0XHRcdCkge1xuXHRcdFx0XHRhbGxIZWFkZXJGYWNldHNTdWJTZWN0aW9ucy5wdXNoKGhlYWRlcmZhY2V0U3ViU2VjdGlvbnNbaV0pO1xuXHRcdFx0XHRpKys7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRjdXN0b21IZWFkZXJGYWNldFN1YlNlY3Rpb25zLmZvckVhY2goZnVuY3Rpb24oY3VzdG9tSXRlbSkge1xuXHRcdFx0XHRcdGlmIChpdGVtLmtleSA9PT0gY3VzdG9tSXRlbS5rZXkpIHtcblx0XHRcdFx0XHRcdGFsbEhlYWRlckZhY2V0c1N1YlNlY3Rpb25zLnB1c2goY3VzdG9tSXRlbSk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9KTtcblx0XHRcdH1cblx0XHR9KTtcblx0fSBlbHNlIHtcblx0XHRhbGxIZWFkZXJGYWNldHNTdWJTZWN0aW9ucyA9IGhlYWRlcmZhY2V0U3ViU2VjdGlvbnM7XG5cdH1cblx0Y29uc3QgaGVhZGVyU2VjdGlvbjogT2JqZWN0UGFnZVNlY3Rpb24gPSB7XG5cdFx0aWQ6IGVkaXRhYmxlSGVhZGVyU2VjdGlvbklELFxuXHRcdGtleTogXCJFZGl0YWJsZUhlYWRlckNvbnRlbnRcIixcblx0XHR0aXRsZTogXCJ7c2FwLmZlLmkxOG4+VF9DT01NT05fT0JKRUNUX1BBR0VfSEVBREVSX1NFQ1RJT059XCIsXG5cdFx0dmlzaWJsZTogXCJ7PSAke3VpPi9lZGl0TW9kZX0gPT09ICdFZGl0YWJsZScgfVwiLFxuXHRcdHN1YlNlY3Rpb25zOiBhbGxIZWFkZXJGYWNldHNTdWJTZWN0aW9uc1xuXHR9O1xuXHRyZXR1cm4gaGVhZGVyU2VjdGlvbjtcbn1cblxuLyoqXG4gKiBDcmVhdGVzIGEgZGVmaW5pdGlvbiBmb3IgYSBzZWN0aW9uIGJhc2VkIG9uIHRoZSBGYWNldCBhbm5vdGF0aW9uLlxuICpcbiAqIEBwYXJhbSBjb252ZXJ0ZXJDb250ZXh0IFRoZSBjb252ZXJ0ZXIgY29udGV4dFxuICogQHJldHVybnMge09iamVjdFBhZ2VTZWN0aW9uW119IEFsbCBzZWN0aW9uc1xuICovXG5mdW5jdGlvbiBnZXRTZWN0aW9uc0Zyb21Bbm5vdGF0aW9uKGNvbnZlcnRlckNvbnRleHQ6IENvbnZlcnRlckNvbnRleHQpOiBPYmplY3RQYWdlU2VjdGlvbltdIHtcblx0Y29uc3QgZW50aXR5VHlwZSA9IGNvbnZlcnRlckNvbnRleHQuZ2V0RW50aXR5VHlwZSgpO1xuXHRjb25zdCBvYmplY3RQYWdlU2VjdGlvbnM6IE9iamVjdFBhZ2VTZWN0aW9uW10gPVxuXHRcdGVudGl0eVR5cGUuYW5ub3RhdGlvbnM/LlVJPy5GYWNldHM/Lm1hcCgoZmFjZXREZWZpbml0aW9uOiBGYWNldFR5cGVzKSA9PlxuXHRcdFx0Z2V0U2VjdGlvbkZyb21Bbm5vdGF0aW9uKGZhY2V0RGVmaW5pdGlvbiwgY29udmVydGVyQ29udGV4dClcblx0XHQpIHx8IFtdO1xuXHRyZXR1cm4gb2JqZWN0UGFnZVNlY3Rpb25zO1xufVxuXG4vKipcbiAqIENyZWF0ZSBhbiBhbm5vdGF0aW9uIGJhc2VkIHNlY3Rpb24uXG4gKlxuICogQHBhcmFtIGZhY2V0XG4gKiBAcGFyYW0gY29udmVydGVyQ29udGV4dFxuICogQHJldHVybnMge09iamVjdFBhZ2VTZWN0aW9ufSBUaGUgY3VycmVudCBzZWN0aW9uXG4gKi9cbmZ1bmN0aW9uIGdldFNlY3Rpb25Gcm9tQW5ub3RhdGlvbihmYWNldDogRmFjZXRUeXBlcywgY29udmVydGVyQ29udGV4dDogQ29udmVydGVyQ29udGV4dCk6IE9iamVjdFBhZ2VTZWN0aW9uIHtcblx0Y29uc3Qgc2VjdGlvbklEID0gU2VjdGlvbklEKHsgRmFjZXQ6IGZhY2V0IH0pO1xuXHRjb25zdCBzZWN0aW9uOiBPYmplY3RQYWdlU2VjdGlvbiA9IHtcblx0XHRpZDogc2VjdGlvbklELFxuXHRcdGtleTogZ2V0U2VjdGlvbktleShmYWNldCwgc2VjdGlvbklEKSxcblx0XHR0aXRsZTogY29tcGlsZUJpbmRpbmcoYW5ub3RhdGlvbkV4cHJlc3Npb24oZmFjZXQuTGFiZWwpKSxcblx0XHRzaG93VGl0bGU6ICEhZmFjZXQuTGFiZWwsXG5cdFx0dmlzaWJsZTogY29tcGlsZUJpbmRpbmcobm90KGVxdWFsKGFubm90YXRpb25FeHByZXNzaW9uKGZhY2V0LmFubm90YXRpb25zPy5VST8uSGlkZGVuPy52YWx1ZU9mKCkpLCB0cnVlKSkpLFxuXHRcdHN1YlNlY3Rpb25zOiBjcmVhdGVTdWJTZWN0aW9ucyhbZmFjZXRdLCBjb252ZXJ0ZXJDb250ZXh0KVxuXHR9O1xuXHRyZXR1cm4gc2VjdGlvbjtcbn1cblxuLyoqXG4gKiBDcmVhdGVzIHNlY3Rpb24gZGVmaW5pdGlvbiBiYXNlZCBvbiBtYW5pZmVzdCBkZWZpbml0aW9uLlxuICogQHBhcmFtIG1hbmlmZXN0U2VjdGlvbnMgVGhlIG1hbmlmZXN0IGRlZmluZWQgc2VjdGlvbnNcbiAqIEBwYXJhbSBjb252ZXJ0ZXJDb250ZXh0XG4gKiBAcmV0dXJucyB7UmVjb3JkPHN0cmluZywgQ3VzdG9tT2JqZWN0UGFnZVNlY3Rpb24+fSBUaGUgbWFuaWZlc3QgZGVmaW5lZCBzZWN0aW9uc1xuICovXG5mdW5jdGlvbiBnZXRTZWN0aW9uc0Zyb21NYW5pZmVzdChcblx0bWFuaWZlc3RTZWN0aW9uczogQ29uZmlndXJhYmxlUmVjb3JkPE1hbmlmZXN0U2VjdGlvbj4sXG5cdGNvbnZlcnRlckNvbnRleHQ6IENvbnZlcnRlckNvbnRleHRcbik6IFJlY29yZDxzdHJpbmcsIEN1c3RvbU9iamVjdFBhZ2VTZWN0aW9uPiB7XG5cdGNvbnN0IHNlY3Rpb25zOiBSZWNvcmQ8c3RyaW5nLCBDdXN0b21PYmplY3RQYWdlU2VjdGlvbj4gPSB7fTtcblx0T2JqZWN0LmtleXMobWFuaWZlc3RTZWN0aW9ucykuZm9yRWFjaChtYW5pZmVzdFNlY3Rpb25LZXkgPT4ge1xuXHRcdHNlY3Rpb25zW21hbmlmZXN0U2VjdGlvbktleV0gPSBnZXRTZWN0aW9uRnJvbU1hbmlmZXN0KG1hbmlmZXN0U2VjdGlvbnNbbWFuaWZlc3RTZWN0aW9uS2V5XSwgbWFuaWZlc3RTZWN0aW9uS2V5LCBjb252ZXJ0ZXJDb250ZXh0KTtcblx0fSk7XG5cdHJldHVybiBzZWN0aW9ucztcbn1cblxuLyoqXG4gKiBDcmVhdGUgYSBtYW5pZmVzdCBiYXNlZCBjdXN0b20gc2VjdGlvbi5cbiAqIEBwYXJhbSBjdXN0b21TZWN0aW9uRGVmaW5pdGlvblxuICogQHBhcmFtIHNlY3Rpb25LZXlcbiAqIEBwYXJhbSBjb252ZXJ0ZXJDb250ZXh0XG4gKiBAcmV0dXJucyB7Q3VzdG9tT2JqZWN0UGFnZVNlY3Rpb259IFRoZSBjdXJyZW50IGN1c3RvbSBzZWN0aW9uXG4gKi9cbmZ1bmN0aW9uIGdldFNlY3Rpb25Gcm9tTWFuaWZlc3QoXG5cdGN1c3RvbVNlY3Rpb25EZWZpbml0aW9uOiBNYW5pZmVzdFNlY3Rpb24sXG5cdHNlY3Rpb25LZXk6IHN0cmluZyxcblx0Y29udmVydGVyQ29udGV4dDogQ29udmVydGVyQ29udGV4dFxuKTogQ3VzdG9tT2JqZWN0UGFnZVNlY3Rpb24ge1xuXHRjb25zdCBjdXN0b21TZWN0aW9uSUQgPSBjdXN0b21TZWN0aW9uRGVmaW5pdGlvbi5pZCB8fCBDdXN0b21TZWN0aW9uSUQoc2VjdGlvbktleSk7XG5cdGxldCBwb3NpdGlvbjogUG9zaXRpb24gfCB1bmRlZmluZWQgPSBjdXN0b21TZWN0aW9uRGVmaW5pdGlvbi5wb3NpdGlvbjtcblx0aWYgKCFwb3NpdGlvbikge1xuXHRcdHBvc2l0aW9uID0ge1xuXHRcdFx0cGxhY2VtZW50OiBQbGFjZW1lbnQuQWZ0ZXJcblx0XHR9O1xuXHR9XG5cdGxldCBtYW5pZmVzdFN1YlNlY3Rpb25zOiBSZWNvcmQ8c3RyaW5nLCBNYW5pZmVzdFN1YlNlY3Rpb24+O1xuXHRpZiAoIWN1c3RvbVNlY3Rpb25EZWZpbml0aW9uLnN1YlNlY3Rpb25zKSB7XG5cdFx0Ly8gSWYgdGhlcmUgaXMgbm8gc3ViU2VjdGlvbiBkZWZpbmVkLCB3ZSBhZGQgdGhlIGNvbnRlbnQgb2YgdGhlIGN1c3RvbSBzZWN0aW9uIGFzIHN1YnNlY3Rpb25zXG5cdFx0Ly8gYW5kIG1ha2Ugc3VyZSB0byBzZXQgdGhlIHZpc2liaWxpdHkgdG8gJ3RydWUnLCBhcyB0aGUgYWN0dWFsIHZpc2liaWxpdHkgaXMgaGFuZGxlZCBieSB0aGUgc2VjdGlvbiBpdHNlbGZcblx0XHRtYW5pZmVzdFN1YlNlY3Rpb25zID0ge1xuXHRcdFx0W3NlY3Rpb25LZXldOiB7XG5cdFx0XHRcdC4uLmN1c3RvbVNlY3Rpb25EZWZpbml0aW9uLFxuXHRcdFx0XHRwb3NpdGlvbjogdW5kZWZpbmVkLFxuXHRcdFx0XHR2aXNpYmxlOiB0cnVlXG5cdFx0XHR9XG5cdFx0fTtcblx0fSBlbHNlIHtcblx0XHRtYW5pZmVzdFN1YlNlY3Rpb25zID0gY3VzdG9tU2VjdGlvbkRlZmluaXRpb24uc3ViU2VjdGlvbnM7XG5cdH1cblx0Y29uc3Qgc3ViU2VjdGlvbnMgPSBjcmVhdGVDdXN0b21TdWJTZWN0aW9ucyhtYW5pZmVzdFN1YlNlY3Rpb25zLCBjb252ZXJ0ZXJDb250ZXh0KTtcblxuXHRjb25zdCBjdXN0b21TZWN0aW9uOiBDdXN0b21PYmplY3RQYWdlU2VjdGlvbiA9IHtcblx0XHRpZDogY3VzdG9tU2VjdGlvbklELFxuXHRcdGtleTogc2VjdGlvbktleSxcblx0XHR0aXRsZTogY3VzdG9tU2VjdGlvbkRlZmluaXRpb24udGl0bGUsXG5cdFx0c2hvd1RpdGxlOiAhIWN1c3RvbVNlY3Rpb25EZWZpbml0aW9uLnRpdGxlLFxuXHRcdHZpc2libGU6IGN1c3RvbVNlY3Rpb25EZWZpbml0aW9uLnZpc2libGUgIT09IHVuZGVmaW5lZCA/IGN1c3RvbVNlY3Rpb25EZWZpbml0aW9uLnZpc2libGUgOiB0cnVlLFxuXHRcdHBvc2l0aW9uOiBwb3NpdGlvbixcblx0XHRzdWJTZWN0aW9uczogaW5zZXJ0Q3VzdG9tRWxlbWVudHMoW10gYXMgQ3VzdG9tT2JqZWN0UGFnZVN1YlNlY3Rpb25bXSwgc3ViU2VjdGlvbnMsIHsgXCJ0aXRsZVwiOiBcIm92ZXJ3cml0ZVwiLCBcImFjdGlvbnNcIjogXCJtZXJnZVwiIH0pXG5cdH07XG5cdHJldHVybiBjdXN0b21TZWN0aW9uO1xufVxuXG4vKipcbiAqIFJldHJpZXZlcyB0aGUgT2JqZWN0UGFnZSBoZWFkZXIgYWN0aW9ucyAoYm90aCB0aGUgZGVmYXVsdCBvbmVzIGFuZCB0aGUgY3VzdG9tIG9uZXMgZGVmaW5lZCBpbiB0aGUgbWFuaWZlc3QpLlxuICpcbiAqIEBwYXJhbSBjb252ZXJ0ZXJDb250ZXh0XG4gKiBAcmV0dXJucyBBbiBhcnJheSBjb250YWluaW5nIGFsbCB0aGUgYWN0aW9ucyBmb3IgdGhpcyBPYmplY3RQYWdlIGhlYWRlclxuICovXG5leHBvcnQgY29uc3QgZ2V0SGVhZGVyQWN0aW9ucyA9IGZ1bmN0aW9uKGNvbnZlcnRlckNvbnRleHQ6IENvbnZlcnRlckNvbnRleHQpOiBCYXNlQWN0aW9uW10ge1xuXHRjb25zdCBhQW5ub3RhdGlvbkhlYWRlckFjdGlvbnM6IEJhc2VBY3Rpb25bXSA9IGdldEhlYWRlckRlZmF1bHRBY3Rpb25zKGNvbnZlcnRlckNvbnRleHQpO1xuXHRjb25zdCBtYW5pZmVzdFdyYXBwZXIgPSBjb252ZXJ0ZXJDb250ZXh0LmdldE1hbmlmZXN0V3JhcHBlcigpO1xuXHRjb25zdCBoZWFkZXJBY3Rpb25zID0gaW5zZXJ0Q3VzdG9tRWxlbWVudHMoXG5cdFx0YUFubm90YXRpb25IZWFkZXJBY3Rpb25zLFxuXHRcdGdldEFjdGlvbnNGcm9tTWFuaWZlc3QoXG5cdFx0XHRtYW5pZmVzdFdyYXBwZXIuZ2V0SGVhZGVyQWN0aW9ucygpLFxuXHRcdFx0Y29udmVydGVyQ29udGV4dCxcblx0XHRcdGFBbm5vdGF0aW9uSGVhZGVyQWN0aW9ucyxcblx0XHRcdHVuZGVmaW5lZCxcblx0XHRcdHVuZGVmaW5lZCxcblx0XHRcdGdldEhpZGRlbkhlYWRlckFjdGlvbnMoY29udmVydGVyQ29udGV4dClcblx0XHQpLFxuXHRcdHsgaXNOYXZpZ2FibGU6IFwib3ZlcndyaXRlXCIsIGVuYWJsZWQ6IFwib3ZlcndyaXRlXCIsIGRlZmF1bHRWYWx1ZXNFeHRlbnNpb25GdW5jdGlvbjogXCJvdmVyd3JpdGVcIiB9XG5cdCk7XG5cdHJldHVybiByZW1vdmVEdXBsaWNhdGVBY3Rpb25zKGhlYWRlckFjdGlvbnMpO1xufTtcblxuLyoqXG4gKiBSZXRyaWV2ZXMgdGhlIE9iamVjdFBhZ2UgZm9vdGVyIGFjdGlvbnMgKGJvdGggdGhlIGRlZmF1bHQgb25lcyBhbmQgdGhlIGN1c3RvbSBvbmVzIGRlZmluZWQgaW4gdGhlIG1hbmlmZXN0KS5cbiAqXG4gKiBAcGFyYW0gY29udmVydGVyQ29udGV4dFxuICogQHJldHVybnMgQW4gYXJyYXkgY29udGFpbmluZyBhbGwgdGhlIGFjdGlvbnMgZm9yIHRoaXMgT2JqZWN0UGFnZSBmb290ZXJcbiAqL1xuZXhwb3J0IGNvbnN0IGdldEZvb3RlckFjdGlvbnMgPSBmdW5jdGlvbihjb252ZXJ0ZXJDb250ZXh0OiBDb252ZXJ0ZXJDb250ZXh0KTogQmFzZUFjdGlvbltdIHtcblx0Y29uc3QgbWFuaWZlc3RXcmFwcGVyID0gY29udmVydGVyQ29udGV4dC5nZXRNYW5pZmVzdFdyYXBwZXIoKTtcblx0Y29uc3QgYUFubm90YXRpb25Gb290ZXJBY3Rpb25zOiBCYXNlQWN0aW9uW10gPSBnZXRGb290ZXJEZWZhdWx0QWN0aW9ucyhtYW5pZmVzdFdyYXBwZXIuZ2V0Vmlld0xldmVsKCksIGNvbnZlcnRlckNvbnRleHQpO1xuXHRjb25zdCBmb290ZXJBY3Rpb25zID0gaW5zZXJ0Q3VzdG9tRWxlbWVudHMoXG5cdFx0YUFubm90YXRpb25Gb290ZXJBY3Rpb25zLFxuXHRcdGdldEFjdGlvbnNGcm9tTWFuaWZlc3QobWFuaWZlc3RXcmFwcGVyLmdldEZvb3RlckFjdGlvbnMoKSwgY29udmVydGVyQ29udGV4dCwgYUFubm90YXRpb25Gb290ZXJBY3Rpb25zKSxcblx0XHR7IGlzTmF2aWdhYmxlOiBcIm92ZXJ3cml0ZVwiLCBlbmFibGVkOiBcIm92ZXJ3cml0ZVwiLCBkZWZhdWx0VmFsdWVzRXh0ZW5zaW9uRnVuY3Rpb246IFwib3ZlcndyaXRlXCIgfVxuXHQpO1xuXHRyZXR1cm4gZm9vdGVyQWN0aW9ucztcbn07XG5cbi8qKlxuICogUmV0cmlldmVzIGFuZCBtZXJnZXMgdGhlIE9iamVjdFBhZ2Ugc2VjdGlvbnMgZGVmaW5lZCBpbiB0aGUgYW5ub3RhdGlvbiBhbmQgaW4gdGhlIG1hbmlmZXN0LlxuICpcbiAqIEBwYXJhbSBjb252ZXJ0ZXJDb250ZXh0XG4gKiBAcmV0dXJucyBBbiBhcnJheSBvZiBzZWN0aW9ucy5cbiAqL1xuZXhwb3J0IGNvbnN0IGdldFNlY3Rpb25zID0gZnVuY3Rpb24oY29udmVydGVyQ29udGV4dDogQ29udmVydGVyQ29udGV4dCk6IE9iamVjdFBhZ2VTZWN0aW9uW10ge1xuXHRjb25zdCBtYW5pZmVzdFdyYXBwZXIgPSBjb252ZXJ0ZXJDb250ZXh0LmdldE1hbmlmZXN0V3JhcHBlcigpO1xuXHRyZXR1cm4gaW5zZXJ0Q3VzdG9tRWxlbWVudHMoXG5cdFx0Z2V0U2VjdGlvbnNGcm9tQW5ub3RhdGlvbihjb252ZXJ0ZXJDb250ZXh0KSxcblx0XHRnZXRTZWN0aW9uc0Zyb21NYW5pZmVzdChtYW5pZmVzdFdyYXBwZXIuZ2V0U2VjdGlvbnMoKSwgY29udmVydGVyQ29udGV4dCksXG5cdFx0e1xuXHRcdFx0XCJ0aXRsZVwiOiBcIm92ZXJ3cml0ZVwiLFxuXHRcdFx0XCJ2aXNpYmxlXCI6IFwib3ZlcndyaXRlXCIsXG5cdFx0XHRcInN1YlNlY3Rpb25zXCI6IHtcblx0XHRcdFx0XCJhY3Rpb25zXCI6IFwibWVyZ2VcIixcblx0XHRcdFx0XCJ0aXRsZVwiOiBcIm92ZXJ3cml0ZVwiLFxuXHRcdFx0XHRcInNpZGVDb250ZW50XCI6IFwib3ZlcndyaXRlXCJcblx0XHRcdH1cblx0XHR9XG5cdCk7XG59O1xuXG5leHBvcnQgY29uc3QgY29udmVydFBhZ2UgPSBmdW5jdGlvbihjb252ZXJ0ZXJDb250ZXh0OiBDb252ZXJ0ZXJDb250ZXh0KTogT2JqZWN0UGFnZURlZmluaXRpb24ge1xuXHRjb25zdCBtYW5pZmVzdFdyYXBwZXIgPSBjb252ZXJ0ZXJDb250ZXh0LmdldE1hbmlmZXN0V3JhcHBlcigpO1xuXHRsZXQgaGVhZGVyU2VjdGlvbjogT2JqZWN0UGFnZVNlY3Rpb24gfCB1bmRlZmluZWQ7XG5cdGNvbnN0IGVudGl0eVR5cGU6IEVudGl0eVR5cGUgPSBjb252ZXJ0ZXJDb250ZXh0LmdldEVudGl0eVR5cGUoKTtcblx0Ly8gUmV0cmlldmUgYWxsIGhlYWRlciBmYWNldHMgKGZyb20gYW5ub3RhdGlvbnMgJiBjdXN0b20pXG5cdGNvbnN0IGhlYWRlckZhY2V0cyA9IGluc2VydEN1c3RvbUVsZW1lbnRzKFxuXHRcdGdldEhlYWRlckZhY2V0c0Zyb21Bbm5vdGF0aW9ucyhjb252ZXJ0ZXJDb250ZXh0KSxcblx0XHRnZXRIZWFkZXJGYWNldHNGcm9tTWFuaWZlc3QobWFuaWZlc3RXcmFwcGVyLmdldEhlYWRlckZhY2V0cygpKVxuXHQpO1xuXG5cdC8vIFJldHJpZXZlIHRoZSBwYWdlIGhlYWRlciBhY3Rpb25zXG5cdGNvbnN0IGhlYWRlckFjdGlvbnMgPSBnZXRIZWFkZXJBY3Rpb25zKGNvbnZlcnRlckNvbnRleHQpO1xuXG5cdC8vIFJldHJpZXZlIHRoZSBwYWdlIGZvb3RlciBhY3Rpb25zXG5cdGNvbnN0IGZvb3RlckFjdGlvbnMgPSBnZXRGb290ZXJBY3Rpb25zKGNvbnZlcnRlckNvbnRleHQpO1xuXG5cdGlmIChtYW5pZmVzdFdyYXBwZXIuaXNIZWFkZXJFZGl0YWJsZSgpICYmIChlbnRpdHlUeXBlLmFubm90YXRpb25zLlVJPy5IZWFkZXJGYWNldHMgfHwgZW50aXR5VHlwZS5hbm5vdGF0aW9ucy5VST8uSGVhZGVySW5mbykpIHtcblx0XHRoZWFkZXJTZWN0aW9uID0gY3JlYXRlRWRpdGFibGVIZWFkZXJTZWN0aW9uKGNvbnZlcnRlckNvbnRleHQsIGhlYWRlckZhY2V0cyk7XG5cdH1cblxuXHRjb25zdCBzZWN0aW9ucyA9IGdldFNlY3Rpb25zKGNvbnZlcnRlckNvbnRleHQpO1xuXG5cdHJldHVybiB7XG5cdFx0dGVtcGxhdGU6IFRlbXBsYXRlVHlwZS5PYmplY3RQYWdlLFxuXHRcdGhlYWRlckZhY2V0czogaGVhZGVyRmFjZXRzLFxuXHRcdGhlYWRlclNlY3Rpb246IGhlYWRlclNlY3Rpb24sXG5cdFx0aGVhZGVyQWN0aW9uczogaGVhZGVyQWN0aW9ucyxcblx0XHRzZWN0aW9uczogc2VjdGlvbnMsXG5cdFx0Zm9vdGVyQWN0aW9uczogZm9vdGVyQWN0aW9ucyxcblx0XHRzaG93SGVhZGVyOiBtYW5pZmVzdFdyYXBwZXIuZ2V0U2hvd09iamVjdFBhZ2VIZWFkZXIoKSxcblx0XHRzaG93QW5jaG9yQmFyOiBtYW5pZmVzdFdyYXBwZXIuZ2V0U2hvd0FuY2hvckJhcigpLFxuXHRcdHVzZUljb25UYWJCYXI6IG1hbmlmZXN0V3JhcHBlci51c2VJY29uVGFiQmFyKClcblx0fTtcbn07XG4iXX0=
|
|
386
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIk9iamVjdFBhZ2VDb252ZXJ0ZXIudHMiXSwibmFtZXMiOlsiZ2V0U2VjdGlvbktleSIsImZhY2V0RGVmaW5pdGlvbiIsImZhbGxiYWNrIiwiSUQiLCJ0b1N0cmluZyIsIkxhYmVsIiwiY3JlYXRlRWRpdGFibGVIZWFkZXJTZWN0aW9uIiwiY29udmVydGVyQ29udGV4dCIsImFsbEhlYWRlckZhY2V0cyIsImVkaXRhYmxlSGVhZGVyU2VjdGlvbklEIiwiRWRpdGFibGVIZWFkZXJTZWN0aW9uSUQiLCJoZWFkZXJGYWNldHMiLCJnZXRFbnRpdHlUeXBlIiwiYW5ub3RhdGlvbnMiLCJVSSIsIkhlYWRlckZhY2V0cyIsImhlYWRlcmZhY2V0U3ViU2VjdGlvbnMiLCJjcmVhdGVTdWJTZWN0aW9ucyIsImN1c3RvbUhlYWRlckZhY2V0U3ViU2VjdGlvbnMiLCJjcmVhdGVDdXN0b21IZWFkZXJGYWNldFN1YlNlY3Rpb25zIiwiYWxsSGVhZGVyRmFjZXRzU3ViU2VjdGlvbnMiLCJsZW5ndGgiLCJpIiwiZm9yRWFjaCIsIml0ZW0iLCJ2aXNpYmxlIiwicHVzaCIsImtleSIsInNsaWNlIiwibGFzdEluZGV4T2YiLCJjdXN0b21JdGVtIiwiaGVhZGVyU2VjdGlvbiIsImlkIiwidGl0bGUiLCJzdWJTZWN0aW9ucyIsImdldFNlY3Rpb25zRnJvbUFubm90YXRpb24iLCJlbnRpdHlUeXBlIiwib2JqZWN0UGFnZVNlY3Rpb25zIiwiRmFjZXRzIiwibWFwIiwiZ2V0U2VjdGlvbkZyb21Bbm5vdGF0aW9uIiwiZmFjZXQiLCJzZWN0aW9uSUQiLCJTZWN0aW9uSUQiLCJGYWNldCIsInNlY3Rpb24iLCJjb21waWxlQmluZGluZyIsImFubm90YXRpb25FeHByZXNzaW9uIiwic2hvd1RpdGxlIiwibm90IiwiZXF1YWwiLCJIaWRkZW4iLCJ2YWx1ZU9mIiwiZ2V0U2VjdGlvbnNGcm9tTWFuaWZlc3QiLCJtYW5pZmVzdFNlY3Rpb25zIiwic2VjdGlvbnMiLCJPYmplY3QiLCJrZXlzIiwibWFuaWZlc3RTZWN0aW9uS2V5IiwiZ2V0U2VjdGlvbkZyb21NYW5pZmVzdCIsImN1c3RvbVNlY3Rpb25EZWZpbml0aW9uIiwic2VjdGlvbktleSIsImN1c3RvbVNlY3Rpb25JRCIsIkN1c3RvbVNlY3Rpb25JRCIsInBvc2l0aW9uIiwicGxhY2VtZW50IiwiUGxhY2VtZW50IiwiQWZ0ZXIiLCJtYW5pZmVzdFN1YlNlY3Rpb25zIiwidW5kZWZpbmVkIiwiY3JlYXRlQ3VzdG9tU3ViU2VjdGlvbnMiLCJjdXN0b21TZWN0aW9uIiwiZ2V0SGVhZGVyQWN0aW9ucyIsImFBbm5vdGF0aW9uSGVhZGVyQWN0aW9ucyIsImdldEhlYWRlckRlZmF1bHRBY3Rpb25zIiwibWFuaWZlc3RXcmFwcGVyIiwiZ2V0TWFuaWZlc3RXcmFwcGVyIiwiaGVhZGVyQWN0aW9ucyIsImluc2VydEN1c3RvbUVsZW1lbnRzIiwiZ2V0QWN0aW9uc0Zyb21NYW5pZmVzdCIsImdldEhpZGRlbkhlYWRlckFjdGlvbnMiLCJpc05hdmlnYWJsZSIsImVuYWJsZWQiLCJkZWZhdWx0VmFsdWVzRXh0ZW5zaW9uRnVuY3Rpb24iLCJyZW1vdmVEdXBsaWNhdGVBY3Rpb25zIiwiZ2V0Rm9vdGVyQWN0aW9ucyIsImFBbm5vdGF0aW9uRm9vdGVyQWN0aW9ucyIsImdldEZvb3RlckRlZmF1bHRBY3Rpb25zIiwiZ2V0Vmlld0xldmVsIiwiZm9vdGVyQWN0aW9ucyIsImdldFNlY3Rpb25zIiwic3ViU2VjdGlvbiIsInR5cGUiLCJzaWRlQ29udGVudCIsImNvbnRlbnQiLCJhY3Rpb25zIiwiaGFzSGVhZGVyQ29udGVudCIsImdldEhlYWRlckZhY2V0cyIsImdldFNob3dIZWFkZXJDb250ZW50RXhwcmVzc2lvbiIsImlmRWxzZSIsImNvbnN0YW50IiwiaXNIZWFkZXJFZGl0YWJsZSIsImJpbmRpbmdFeHByZXNzaW9uIiwiZ2V0U2hvd0hlYWRlckNvbnRlbnQiLCJnZXRFeHBhbmRlZEltYWdlVmlzaWJsZSIsImNvbnZlcnRQYWdlIiwiZ2V0SGVhZGVyRmFjZXRzRnJvbUFubm90YXRpb25zIiwiZ2V0SGVhZGVyRmFjZXRzRnJvbU1hbmlmZXN0IiwiSGVhZGVySW5mbyIsInRlbXBsYXRlIiwiVGVtcGxhdGVUeXBlIiwiT2JqZWN0UGFnZSIsImhlYWRlciIsImdldFNob3dPYmplY3RQYWdlSGVhZGVyIiwiZmFjZXRzIiwic2hvd0NvbnRlbnQiLCJoYXNDb250ZW50IiwiYXZhdGFyIiwiZ2V0QXZhdGFyIiwiZXhwYW5kZWRJbWFnZVZpc2libGUiLCJzaG93QW5jaG9yQmFyIiwiZ2V0U2hvd0FuY2hvckJhciIsInVzZUljb25UYWJCYXIiXSwibWFwcGluZ3MiOiI7QUFBQTtBQUNBO0FBQ0E7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQXFEQSxNQUFNQSxhQUFhLEdBQUcsVUFBQ0MsZUFBRCxFQUE4QkMsUUFBOUIsRUFBMkQ7QUFBQTs7QUFDaEYsV0FBTyx3QkFBQUQsZUFBZSxDQUFDRSxFQUFoQiw0RUFBb0JDLFFBQXBCLGlDQUFrQ0gsZUFBZSxDQUFDSSxLQUFsRCwwREFBa0Msc0JBQXVCRCxRQUF2QixFQUFsQyxLQUF1RUYsUUFBOUU7QUFDQSxHQUZEO0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUNPLFdBQVNJLDJCQUFULENBQ05DLGdCQURNLEVBRU5DLGVBRk0sRUFHYztBQUFBOztBQUNwQixRQUFNQyx1QkFBdUIsR0FBR0MsdUJBQXVCLEVBQXZEO0FBQ0EsUUFBTUMsWUFBWSw0QkFBR0osZ0JBQWdCLENBQUNLLGFBQWpCLEdBQWlDQyxXQUFwQyxvRkFBRyxzQkFBOENDLEVBQWpELDJEQUFHLHVCQUFrREMsWUFBdkU7QUFDQSxRQUFNQyxzQkFBc0IsR0FBR0wsWUFBWSxHQUFHTSxpQkFBaUIsQ0FBQ04sWUFBRCxFQUFlSixnQkFBZixFQUFpQyxJQUFqQyxDQUFwQixHQUE2RCxFQUF4RztBQUNBLFFBQU1XLDRCQUE0QixHQUFHQyxrQ0FBa0MsQ0FBQ1osZ0JBQUQsQ0FBdkU7QUFDQSxRQUFJYSwwQkFBa0QsR0FBRyxFQUF6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eXBlcyB9IGZyb20gXCJAc2FwLXV4L3ZvY2FidWxhcmllcy10eXBlc1wiO1xuaW1wb3J0IHsgTWFuaWZlc3RTZWN0aW9uLCBNYW5pZmVzdFN1YlNlY3Rpb24sIFRlbXBsYXRlVHlwZSB9IGZyb20gXCIuLi9NYW5pZmVzdFNldHRpbmdzXCI7XG5pbXBvcnQgeyBQYWdlRGVmaW5pdGlvbiB9IGZyb20gXCIuLi9UZW1wbGF0ZUNvbnZlcnRlclwiO1xuaW1wb3J0IHsgRW50aXR5VHlwZSB9IGZyb20gXCJAc2FwLXV4L2Fubm90YXRpb24tY29udmVydGVyXCI7XG5pbXBvcnQge1xuXHRjcmVhdGVDdXN0b21TdWJTZWN0aW9ucyxcblx0Y3JlYXRlU3ViU2VjdGlvbnMsXG5cdGNyZWF0ZUN1c3RvbUhlYWRlckZhY2V0U3ViU2VjdGlvbnMsXG5cdEN1c3RvbU9iamVjdFBhZ2VTZWN0aW9uLFxuXHRPYmplY3RQYWdlU2VjdGlvbixcblx0T2JqZWN0UGFnZVN1YlNlY3Rpb24sXG5cdEZvcm1TdWJTZWN0aW9uXG59IGZyb20gXCIuLi9jb250cm9scy9PYmplY3RQYWdlL1N1YlNlY3Rpb25cIjtcbmltcG9ydCB7IGdldEhlYWRlckZhY2V0c0Zyb21Bbm5vdGF0aW9ucywgZ2V0SGVhZGVyRmFjZXRzRnJvbU1hbmlmZXN0LCBPYmplY3RQYWdlSGVhZGVyRmFjZXQgfSBmcm9tIFwiLi4vY29udHJvbHMvT2JqZWN0UGFnZS9IZWFkZXJGYWNldFwiO1xuaW1wb3J0IHsgQ3VzdG9tU2VjdGlvbklELCBFZGl0YWJsZUhlYWRlclNlY3Rpb25JRCwgU2VjdGlvbklEIH0gZnJvbSBcIi4uL2hlbHBlcnMvSURcIjtcbmltcG9ydCB7IENvbmZpZ3VyYWJsZVJlY29yZCwgaW5zZXJ0Q3VzdG9tRWxlbWVudHMsIFBsYWNlbWVudCwgUG9zaXRpb24gfSBmcm9tIFwiLi4vaGVscGVycy9Db25maWd1cmFibGVPYmplY3RcIjtcbmltcG9ydCB7IEJhc2VBY3Rpb24sIGdldEFjdGlvbnNGcm9tTWFuaWZlc3QsIHJlbW92ZUR1cGxpY2F0ZUFjdGlvbnMgfSBmcm9tIFwic2FwL2ZlL2NvcmUvY29udmVydGVycy9jb250cm9scy9Db21tb24vQWN0aW9uXCI7XG5pbXBvcnQge1xuXHRnZXRIZWFkZXJEZWZhdWx0QWN0aW9ucyxcblx0Z2V0Rm9vdGVyRGVmYXVsdEFjdGlvbnMsXG5cdGdldEhpZGRlbkhlYWRlckFjdGlvbnNcbn0gZnJvbSBcInNhcC9mZS9jb3JlL2NvbnZlcnRlcnMvb2JqZWN0UGFnZS9IZWFkZXJBbmRGb290ZXJBY3Rpb25cIjtcbmltcG9ydCB7IEF2YXRhciwgZ2V0QXZhdGFyIH0gZnJvbSBcIi4uL2NvbnRyb2xzL09iamVjdFBhZ2UvQXZhdGFyXCI7XG5pbXBvcnQge1xuXHRhbm5vdGF0aW9uRXhwcmVzc2lvbixcblx0YmluZGluZ0V4cHJlc3Npb24sXG5cdGNvbXBpbGVCaW5kaW5nLFxuXHRlcXVhbCxcblx0bm90LFxuXHRpZkVsc2UsXG5cdGNvbnN0YW50LFxuXHRCaW5kaW5nRXhwcmVzc2lvbixcblx0RXhwcmVzc2lvblxufSBmcm9tIFwic2FwL2ZlL2NvcmUvaGVscGVycy9CaW5kaW5nRXhwcmVzc2lvblwiO1xuaW1wb3J0IENvbnZlcnRlckNvbnRleHQgZnJvbSBcIi4uL0NvbnZlcnRlckNvbnRleHRcIjtcblxuZXhwb3J0IHR5cGUgT2JqZWN0UGFnZURlZmluaXRpb24gPSBQYWdlRGVmaW5pdGlvbiAmIHtcblx0aGVhZGVyOiB7XG5cdFx0dmlzaWJsZTogYm9vbGVhbjtcblx0XHRzZWN0aW9uPzogT2JqZWN0UGFnZVNlY3Rpb247XG5cdFx0ZmFjZXRzOiBPYmplY3RQYWdlSGVhZGVyRmFjZXRbXTtcblx0XHRhY3Rpb25zOiBCYXNlQWN0aW9uW107XG5cdFx0c2hvd0NvbnRlbnQ6IEJpbmRpbmdFeHByZXNzaW9uPGJvb2xlYW4+O1xuXHRcdGhhc0NvbnRlbnQ6IGJvb2xlYW47XG5cdFx0YXZhdGFyPzogQXZhdGFyO1xuXHRcdHRpdGxlOiB7XG5cdFx0XHRleHBhbmRlZEltYWdlVmlzaWJsZTogQmluZGluZ0V4cHJlc3Npb248c3RyaW5nPjtcblx0XHR9O1xuXHR9O1xuXHRzZWN0aW9uczogT2JqZWN0UGFnZVNlY3Rpb25bXTtcblx0Zm9vdGVyQWN0aW9uczogQmFzZUFjdGlvbltdO1xuXHRzaG93QW5jaG9yQmFyOiBib29sZWFuO1xuXHR1c2VJY29uVGFiQmFyOiBib29sZWFuO1xufTtcblxuY29uc3QgZ2V0U2VjdGlvbktleSA9IChmYWNldERlZmluaXRpb246IEZhY2V0VHlwZXMsIGZhbGxiYWNrOiBzdHJpbmcpOiBzdHJpbmcgPT4ge1xuXHRyZXR1cm4gZmFjZXREZWZpbml0aW9uLklEPy50b1N0cmluZygpIHx8IGZhY2V0RGVmaW5pdGlvbi5MYWJlbD8udG9TdHJpbmcoKSB8fCBmYWxsYmFjaztcbn07XG5cbi8qKlxuICogQ3JlYXRlcyBhIHNlY3Rpb24gdGhhdCByZXByZXNlbnRzIHRoZSBlZGl0YWJsZSBoZWFkZXIgcGFydDsgaXQgaXMgb25seSB2aXNpYmxlIGluIGVkaXQgbW9kZS5cbiAqXG4gKiBAcGFyYW0gY29udmVydGVyQ29udGV4dCBUaGUgY29udmVydGVyIGNvbnRleHRcbiAqIEBwYXJhbSBhbGxIZWFkZXJGYWNldHMgVGhlIGNvbnZlcnRlciBjb250ZXh0XG4gKiBAcmV0dXJucyB7T2JqZWN0UGFnZVNlY3Rpb259IFRoZSBzZWN0aW9uIHJlcHJlc2VudGluZyB0aGUgZWRpdGFibGUgaGVhZGVyIHBhcnRzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVFZGl0YWJsZUhlYWRlclNlY3Rpb24oXG5cdGNvbnZlcnRlckNvbnRleHQ6IENvbnZlcnRlckNvbnRleHQsXG5cdGFsbEhlYWRlckZhY2V0czogT2JqZWN0UGFnZUhlYWRlckZhY2V0W11cbik6IE9iamVjdFBhZ2VTZWN0aW9uIHtcblx0Y29uc3QgZWRpdGFibGVIZWFkZXJTZWN0aW9uSUQgPSBFZGl0YWJsZUhlYWRlclNlY3Rpb25JRCgpO1xuXHRjb25zdCBoZWFkZXJGYWNldHMgPSBjb252ZXJ0ZXJDb250ZXh0LmdldEVudGl0eVR5cGUoKS5hbm5vdGF0aW9ucz8uVUk/LkhlYWRlckZhY2V0cztcblx0Y29uc3QgaGVhZGVyZmFjZXRTdWJTZWN0aW9ucyA9IGhlYWRlckZhY2V0cyA/IGNyZWF0ZVN1YlNlY3Rpb25zKGhlYWRlckZhY2V0cywgY29udmVydGVyQ29udGV4dCwgdHJ1ZSkgOiBbXTtcblx0Y29uc3QgY3VzdG9tSGVhZGVyRmFjZXRTdWJTZWN0aW9ucyA9IGNyZWF0ZUN1c3RvbUhlYWRlckZhY2V0U3ViU2VjdGlvbnMoY29udmVydGVyQ29udGV4dCk7XG5cdGxldCBhbGxIZWFkZXJGYWNldHNTdWJTZWN0aW9uczogT2JqZWN0UGFnZVN1YlNlY3Rpb25bXSA9IFtdO1xuXHRpZiAoY3VzdG9tSGVhZGVyRmFjZXRTdWJTZWN0aW9ucy5sZW5ndGggPiAwKSB7XG5cdFx0Ly8gbWVyZ2UgYW5ub3RhdGlvbiBiYXNlZCBoZWFkZXIgZmFjZXRzIGFuZCBjdXN0b20gaGVhZGVyIGZhY2V0cyBpbiB0aGUgcmlnaHQgb3JkZXJcblx0XHRsZXQgaSA9IDA7XG5cdFx0YWxsSGVhZGVyRmFjZXRzLmZvckVhY2goZnVuY3Rpb24oaXRlbSkge1xuXHRcdFx0Ly8gaGlkZGVuIGhlYWRlciBmYWNldHMgYXJlIG5vdCBpbmNsdWRlZCBpbiBhbGxIZWFkZXJGYWNldHMgYXJyYXkgPT4gYWRkIHRoZW0gYW55d2F5XG5cdFx0XHR3aGlsZSAoaGVhZGVyZmFjZXRTdWJTZWN0aW9ucy5sZW5ndGggPiBpICYmIGhlYWRlcmZhY2V0U3ViU2VjdGlvbnNbaV0udmlzaWJsZSA9PT0gXCJmYWxzZVwiKSB7XG5cdFx0XHRcdGFsbEhlYWRlckZhY2V0c1N1YlNlY3Rpb25zLnB1c2goaGVhZGVyZmFjZXRTdWJTZWN0aW9uc1tpXSk7XG5cdFx0XHRcdGkrKztcblx0XHRcdH1cblx0XHRcdGlmIChcblx0XHRcdFx0aGVhZGVyZmFjZXRTdWJTZWN0aW9ucy5sZW5ndGggPiBpICYmXG5cdFx0XHRcdChpdGVtLmtleSA9PT0gaGVhZGVyZmFjZXRTdWJTZWN0aW9uc1tpXS5rZXkgfHxcblx0XHRcdFx0XHQvLyBmb3IgaGVhZGVyIGZhY2V0cyB3aXRoIG5vIGlkIHRoZSBrZXlzIG9mIGhlYWRlciBmYWNldCBhbmQgc3Vic2VjdGlvbiBhcmUgZGlmZmVyZW50ID0+IGNoZWNrIG9ubHkgdGhlIGxhc3QgcGFydFxuXHRcdFx0XHRcdGl0ZW0ua2V5LnNsaWNlKGl0ZW0ua2V5Lmxhc3RJbmRleE9mKFwiOjpcIikgKyAyKSA9PT1cblx0XHRcdFx0XHRcdGhlYWRlcmZhY2V0U3ViU2VjdGlvbnNbaV0ua2V5LnNsaWNlKGhlYWRlcmZhY2V0U3ViU2VjdGlvbnNbaV0ua2V5Lmxhc3RJbmRleE9mKFwiOjpcIikgKyAyKSlcblx0XHRcdCkge1xuXHRcdFx0XHRhbGxIZWFkZXJGYWNldHNTdWJTZWN0aW9ucy5wdXNoKGhlYWRlcmZhY2V0U3ViU2VjdGlvbnNbaV0pO1xuXHRcdFx0XHRpKys7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRjdXN0b21IZWFkZXJGYWNldFN1YlNlY3Rpb25zLmZvckVhY2goZnVuY3Rpb24oY3VzdG9tSXRlbSkge1xuXHRcdFx0XHRcdGlmIChpdGVtLmtleSA9PT0gY3VzdG9tSXRlbS5rZXkpIHtcblx0XHRcdFx0XHRcdGFsbEhlYWRlckZhY2V0c1N1YlNlY3Rpb25zLnB1c2goY3VzdG9tSXRlbSk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9KTtcblx0XHRcdH1cblx0XHR9KTtcblx0fSBlbHNlIHtcblx0XHRhbGxIZWFkZXJGYWNldHNTdWJTZWN0aW9ucyA9IGhlYWRlcmZhY2V0U3ViU2VjdGlvbnM7XG5cdH1cblx0Y29uc3QgaGVhZGVyU2VjdGlvbjogT2JqZWN0UGFnZVNlY3Rpb24gPSB7XG5cdFx0aWQ6IGVkaXRhYmxlSGVhZGVyU2VjdGlvbklELFxuXHRcdGtleTogXCJFZGl0YWJsZUhlYWRlckNvbnRlbnRcIixcblx0XHR0aXRsZTogXCJ7c2FwLmZlLmkxOG4+VF9DT01NT05fT0JKRUNUX1BBR0VfSEVBREVSX1NFQ1RJT059XCIsXG5cdFx0dmlzaWJsZTogXCJ7PSAke3VpPi9lZGl0TW9kZX0gPT09ICdFZGl0YWJsZScgfVwiLFxuXHRcdHN1YlNlY3Rpb25zOiBhbGxIZWFkZXJGYWNldHNTdWJTZWN0aW9uc1xuXHR9O1xuXHRyZXR1cm4gaGVhZGVyU2VjdGlvbjtcbn1cblxuLyoqXG4gKiBDcmVhdGVzIGEgZGVmaW5pdGlvbiBmb3IgYSBzZWN0aW9uIGJhc2VkIG9uIHRoZSBGYWNldCBhbm5vdGF0aW9uLlxuICpcbiAqIEBwYXJhbSBjb252ZXJ0ZXJDb250ZXh0IFRoZSBjb252ZXJ0ZXIgY29udGV4dFxuICogQHJldHVybnMge09iamVjdFBhZ2VTZWN0aW9uW119IEFsbCBzZWN0aW9uc1xuICovXG5mdW5jdGlvbiBnZXRTZWN0aW9uc0Zyb21Bbm5vdGF0aW9uKGNvbnZlcnRlckNvbnRleHQ6IENvbnZlcnRlckNvbnRleHQpOiBPYmplY3RQYWdlU2VjdGlvbltdIHtcblx0Y29uc3QgZW50aXR5VHlwZSA9IGNvbnZlcnRlckNvbnRleHQuZ2V0RW50aXR5VHlwZSgpO1xuXHRjb25zdCBvYmplY3RQYWdlU2VjdGlvbnM6IE9iamVjdFBhZ2VTZWN0aW9uW10gPVxuXHRcdGVudGl0eVR5cGUuYW5ub3RhdGlvbnM/LlVJPy5GYWNldHM/Lm1hcCgoZmFjZXREZWZpbml0aW9uOiBGYWNldFR5cGVzKSA9PlxuXHRcdFx0Z2V0U2VjdGlvbkZyb21Bbm5vdGF0aW9uKGZhY2V0RGVmaW5pdGlvbiwgY29udmVydGVyQ29udGV4dClcblx0XHQpIHx8IFtdO1xuXHRyZXR1cm4gb2JqZWN0UGFnZVNlY3Rpb25zO1xufVxuXG4vKipcbiAqIENyZWF0ZSBhbiBhbm5vdGF0aW9uIGJhc2VkIHNlY3Rpb24uXG4gKlxuICogQHBhcmFtIGZhY2V0XG4gKiBAcGFyYW0gY29udmVydGVyQ29udGV4dFxuICogQHJldHVybnMge09iamVjdFBhZ2VTZWN0aW9ufSBUaGUgY3VycmVudCBzZWN0aW9uXG4gKi9cbmZ1bmN0aW9uIGdldFNlY3Rpb25Gcm9tQW5ub3RhdGlvbihmYWNldDogRmFjZXRUeXBlcywgY29udmVydGVyQ29udGV4dDogQ29udmVydGVyQ29udGV4dCk6IE9iamVjdFBhZ2VTZWN0aW9uIHtcblx0Y29uc3Qgc2VjdGlvbklEID0gU2VjdGlvbklEKHsgRmFjZXQ6IGZhY2V0IH0pO1xuXHRjb25zdCBzZWN0aW9uOiBPYmplY3RQYWdlU2VjdGlvbiA9IHtcblx0XHRpZDogc2VjdGlvbklELFxuXHRcdGtleTogZ2V0U2VjdGlvbktleShmYWNldCwgc2VjdGlvbklEKSxcblx0XHR0aXRsZTogY29tcGlsZUJpbmRpbmcoYW5ub3RhdGlvbkV4cHJlc3Npb24oZmFjZXQuTGFiZWwpKSxcblx0XHRzaG93VGl0bGU6ICEhZmFjZXQuTGFiZWwsXG5cdFx0dmlzaWJsZTogY29tcGlsZUJpbmRpbmcobm90KGVxdWFsKGFubm90YXRpb25FeHByZXNzaW9uKGZhY2V0LmFubm90YXRpb25zPy5VST8uSGlkZGVuPy52YWx1ZU9mKCkpLCB0cnVlKSkpLFxuXHRcdHN1YlNlY3Rpb25zOiBjcmVhdGVTdWJTZWN0aW9ucyhbZmFjZXRdLCBjb252ZXJ0ZXJDb250ZXh0KVxuXHR9O1xuXHRyZXR1cm4gc2VjdGlvbjtcbn1cblxuLyoqXG4gKiBDcmVhdGVzIHNlY3Rpb24gZGVmaW5pdGlvbiBiYXNlZCBvbiBtYW5pZmVzdCBkZWZpbml0aW9uLlxuICogQHBhcmFtIG1hbmlmZXN0U2VjdGlvbnMgVGhlIG1hbmlmZXN0IGRlZmluZWQgc2VjdGlvbnNcbiAqIEBwYXJhbSBjb252ZXJ0ZXJDb250ZXh0XG4gKiBAcmV0dXJucyB7UmVjb3JkPHN0cmluZywgQ3VzdG9tT2JqZWN0UGFnZVNlY3Rpb24+fSBUaGUgbWFuaWZlc3QgZGVmaW5lZCBzZWN0aW9uc1xuICovXG5mdW5jdGlvbiBnZXRTZWN0aW9uc0Zyb21NYW5pZmVzdChcblx0bWFuaWZlc3RTZWN0aW9uczogQ29uZmlndXJhYmxlUmVjb3JkPE1hbmlmZXN0U2VjdGlvbj4sXG5cdGNvbnZlcnRlckNvbnRleHQ6IENvbnZlcnRlckNvbnRleHRcbik6IFJlY29yZDxzdHJpbmcsIEN1c3RvbU9iamVjdFBhZ2VTZWN0aW9uPiB7XG5cdGNvbnN0IHNlY3Rpb25zOiBSZWNvcmQ8c3RyaW5nLCBDdXN0b21PYmplY3RQYWdlU2VjdGlvbj4gPSB7fTtcblx0T2JqZWN0LmtleXMobWFuaWZlc3RTZWN0aW9ucykuZm9yRWFjaChtYW5pZmVzdFNlY3Rpb25LZXkgPT4ge1xuXHRcdHNlY3Rpb25zW21hbmlmZXN0U2VjdGlvbktleV0gPSBnZXRTZWN0aW9uRnJvbU1hbmlmZXN0KG1hbmlmZXN0U2VjdGlvbnNbbWFuaWZlc3RTZWN0aW9uS2V5XSwgbWFuaWZlc3RTZWN0aW9uS2V5LCBjb252ZXJ0ZXJDb250ZXh0KTtcblx0fSk7XG5cdHJldHVybiBzZWN0aW9ucztcbn1cblxuLyoqXG4gKiBDcmVhdGUgYSBtYW5pZmVzdCBiYXNlZCBjdXN0b20gc2VjdGlvbi5cbiAqIEBwYXJhbSBjdXN0b21TZWN0aW9uRGVmaW5pdGlvblxuICogQHBhcmFtIHNlY3Rpb25LZXlcbiAqIEBwYXJhbSBjb252ZXJ0ZXJDb250ZXh0XG4gKiBAcmV0dXJucyB7Q3VzdG9tT2JqZWN0UGFnZVNlY3Rpb259IFRoZSBjdXJyZW50IGN1c3RvbSBzZWN0aW9uXG4gKi9cbmZ1bmN0aW9uIGdldFNlY3Rpb25Gcm9tTWFuaWZlc3QoXG5cdGN1c3RvbVNlY3Rpb25EZWZpbml0aW9uOiBNYW5pZmVzdFNlY3Rpb24sXG5cdHNlY3Rpb25LZXk6IHN0cmluZyxcblx0Y29udmVydGVyQ29udGV4dDogQ29udmVydGVyQ29udGV4dFxuKTogQ3VzdG9tT2JqZWN0UGFnZVNlY3Rpb24ge1xuXHRjb25zdCBjdXN0b21TZWN0aW9uSUQgPSBjdXN0b21TZWN0aW9uRGVmaW5pdGlvbi5pZCB8fCBDdXN0b21TZWN0aW9uSUQoc2VjdGlvbktleSk7XG5cdGxldCBwb3NpdGlvbjogUG9zaXRpb24gfCB1bmRlZmluZWQgPSBjdXN0b21TZWN0aW9uRGVmaW5pdGlvbi5wb3NpdGlvbjtcblx0aWYgKCFwb3NpdGlvbikge1xuXHRcdHBvc2l0aW9uID0ge1xuXHRcdFx0cGxhY2VtZW50OiBQbGFjZW1lbnQuQWZ0ZXJcblx0XHR9O1xuXHR9XG5cdGxldCBtYW5pZmVzdFN1YlNlY3Rpb25zOiBSZWNvcmQ8c3RyaW5nLCBNYW5pZmVzdFN1YlNlY3Rpb24+O1xuXHRpZiAoIWN1c3RvbVNlY3Rpb25EZWZpbml0aW9uLnN1YlNlY3Rpb25zKSB7XG5cdFx0Ly8gSWYgdGhlcmUgaXMgbm8gc3ViU2VjdGlvbiBkZWZpbmVkLCB3ZSBhZGQgdGhlIGNvbnRlbnQgb2YgdGhlIGN1c3RvbSBzZWN0aW9uIGFzIHN1YnNlY3Rpb25zXG5cdFx0Ly8gYW5kIG1ha2Ugc3VyZSB0byBzZXQgdGhlIHZpc2liaWxpdHkgdG8gJ3RydWUnLCBhcyB0aGUgYWN0dWFsIHZpc2liaWxpdHkgaXMgaGFuZGxlZCBieSB0aGUgc2VjdGlvbiBpdHNlbGZcblx0XHRtYW5pZmVzdFN1YlNlY3Rpb25zID0ge1xuXHRcdFx0W3NlY3Rpb25LZXldOiB7XG5cdFx0XHRcdC4uLmN1c3RvbVNlY3Rpb25EZWZpbml0aW9uLFxuXHRcdFx0XHRwb3NpdGlvbjogdW5kZWZpbmVkLFxuXHRcdFx0XHR2aXNpYmxlOiB0cnVlXG5cdFx0XHR9XG5cdFx0fTtcblx0fSBlbHNlIHtcblx0XHRtYW5pZmVzdFN1YlNlY3Rpb25zID0gY3VzdG9tU2VjdGlvbkRlZmluaXRpb24uc3ViU2VjdGlvbnM7XG5cdH1cblx0Y29uc3Qgc3ViU2VjdGlvbnMgPSBjcmVhdGVDdXN0b21TdWJTZWN0aW9ucyhtYW5pZmVzdFN1YlNlY3Rpb25zLCBjb252ZXJ0ZXJDb250ZXh0KTtcblxuXHRjb25zdCBjdXN0b21TZWN0aW9uOiBDdXN0b21PYmplY3RQYWdlU2VjdGlvbiA9IHtcblx0XHRpZDogY3VzdG9tU2VjdGlvbklELFxuXHRcdGtleTogc2VjdGlvbktleSxcblx0XHR0aXRsZTogY3VzdG9tU2VjdGlvbkRlZmluaXRpb24udGl0bGUsXG5cdFx0c2hvd1RpdGxlOiAhIWN1c3RvbVNlY3Rpb25EZWZpbml0aW9uLnRpdGxlLFxuXHRcdHZpc2libGU6IGN1c3RvbVNlY3Rpb25EZWZpbml0aW9uLnZpc2libGUgIT09IHVuZGVmaW5lZCA/IGN1c3RvbVNlY3Rpb25EZWZpbml0aW9uLnZpc2libGUgOiB0cnVlLFxuXHRcdHBvc2l0aW9uOiBwb3NpdGlvbixcblx0XHRzdWJTZWN0aW9uczogc3ViU2VjdGlvbnMgYXMgYW55XG5cdH07XG5cdHJldHVybiBjdXN0b21TZWN0aW9uO1xufVxuXG4vKipcbiAqIFJldHJpZXZlcyB0aGUgT2JqZWN0UGFnZSBoZWFkZXIgYWN0aW9ucyAoYm90aCB0aGUgZGVmYXVsdCBvbmVzIGFuZCB0aGUgY3VzdG9tIG9uZXMgZGVmaW5lZCBpbiB0aGUgbWFuaWZlc3QpLlxuICpcbiAqIEBwYXJhbSB7Q29udmVydGVyQ29udGV4dH0gY29udmVydGVyQ29udGV4dCBUaGUgY29udmVydGVyIGNvbnRleHRcbiAqIEByZXR1cm5zIEFuIGFycmF5IGNvbnRhaW5pbmcgYWxsIHRoZSBhY3Rpb25zIGZvciB0aGlzIE9iamVjdFBhZ2UgaGVhZGVyXG4gKi9cbmV4cG9ydCBjb25zdCBnZXRIZWFkZXJBY3Rpb25zID0gZnVuY3Rpb24oY29udmVydGVyQ29udGV4dDogQ29udmVydGVyQ29udGV4dCk6IEJhc2VBY3Rpb25bXSB7XG5cdGNvbnN0IGFBbm5vdGF0aW9uSGVhZGVyQWN0aW9uczogQmFzZUFjdGlvbltdID0gZ2V0SGVhZGVyRGVmYXVsdEFjdGlvbnMoY29udmVydGVyQ29udGV4dCk7XG5cdGNvbnN0IG1hbmlmZXN0V3JhcHBlciA9IGNvbnZlcnRlckNvbnRleHQuZ2V0TWFuaWZlc3RXcmFwcGVyKCk7XG5cdGNvbnN0IGhlYWRlckFjdGlvbnMgPSBpbnNlcnRDdXN0b21FbGVtZW50cyhcblx0XHRhQW5ub3RhdGlvbkhlYWRlckFjdGlvbnMsXG5cdFx0Z2V0QWN0aW9uc0Zyb21NYW5pZmVzdChcblx0XHRcdG1hbmlmZXN0V3JhcHBlci5nZXRIZWFkZXJBY3Rpb25zKCksXG5cdFx0XHRjb252ZXJ0ZXJDb250ZXh0LFxuXHRcdFx0YUFubm90YXRpb25IZWFkZXJBY3Rpb25zLFxuXHRcdFx0dW5kZWZpbmVkLFxuXHRcdFx0dW5kZWZpbmVkLFxuXHRcdFx0Z2V0SGlkZGVuSGVhZGVyQWN0aW9ucyhjb252ZXJ0ZXJDb250ZXh0KVxuXHRcdCksXG5cdFx0eyBpc05hdmlnYWJsZTogXCJvdmVyd3JpdGVcIiwgZW5hYmxlZDogXCJvdmVyd3JpdGVcIiwgZGVmYXVsdFZhbHVlc0V4dGVuc2lvbkZ1bmN0aW9uOiBcIm92ZXJ3cml0ZVwiIH1cblx0KTtcblx0cmV0dXJuIHJlbW92ZUR1cGxpY2F0ZUFjdGlvbnMoaGVhZGVyQWN0aW9ucyk7XG59O1xuXG4vKipcbiAqIFJldHJpZXZlcyB0aGUgT2JqZWN0UGFnZSBmb290ZXIgYWN0aW9ucyAoYm90aCB0aGUgZGVmYXVsdCBvbmVzIGFuZCB0aGUgY3VzdG9tIG9uZXMgZGVmaW5lZCBpbiB0aGUgbWFuaWZlc3QpLlxuICpcbiAqIEBwYXJhbSB7Q29udmVydGVyQ29udGV4dH0gY29udmVydGVyQ29udGV4dCBUaGUgY29udmVydGVyIGNvbnRleHRcbiAqIEByZXR1cm5zIEFuIGFycmF5IGNvbnRhaW5pbmcgYWxsIHRoZSBhY3Rpb25zIGZvciB0aGlzIE9iamVjdFBhZ2UgZm9vdGVyXG4gKi9cbmV4cG9ydCBjb25zdCBnZXRGb290ZXJBY3Rpb25zID0gZnVuY3Rpb24oY29udmVydGVyQ29udGV4dDogQ29udmVydGVyQ29udGV4dCk6IEJhc2VBY3Rpb25bXSB7XG5cdGNvbnN0IG1hbmlmZXN0V3JhcHBlciA9IGNvbnZlcnRlckNvbnRleHQuZ2V0TWFuaWZlc3RXcmFwcGVyKCk7XG5cdGNvbnN0IGFBbm5vdGF0aW9uRm9vdGVyQWN0aW9uczogQmFzZUFjdGlvbltdID0gZ2V0Rm9vdGVyRGVmYXVsdEFjdGlvbnMobWFuaWZlc3RXcmFwcGVyLmdldFZpZXdMZXZlbCgpLCBjb252ZXJ0ZXJDb250ZXh0KTtcblx0Y29uc3QgZm9vdGVyQWN0aW9ucyA9IGluc2VydEN1c3RvbUVsZW1lbnRzKFxuXHRcdGFBbm5vdGF0aW9uRm9vdGVyQWN0aW9ucyxcblx0XHRnZXRBY3Rpb25zRnJvbU1hbmlmZXN0KG1hbmlmZXN0V3JhcHBlci5nZXRGb290ZXJBY3Rpb25zKCksIGNvbnZlcnRlckNvbnRleHQsIGFBbm5vdGF0aW9uRm9vdGVyQWN0aW9ucyksXG5cdFx0eyBpc05hdmlnYWJsZTogXCJvdmVyd3JpdGVcIiwgZW5hYmxlZDogXCJvdmVyd3JpdGVcIiwgZGVmYXVsdFZhbHVlc0V4dGVuc2lvbkZ1bmN0aW9uOiBcIm92ZXJ3cml0ZVwiIH1cblx0KTtcblx0cmV0dXJuIGZvb3RlckFjdGlvbnM7XG59O1xuXG4vKipcbiAqIFJldHJpZXZlcyBhbmQgbWVyZ2VzIHRoZSBPYmplY3RQYWdlIHNlY3Rpb25zIGRlZmluZWQgaW4gdGhlIGFubm90YXRpb24gYW5kIGluIHRoZSBtYW5pZmVzdC5cbiAqXG4gKiBAcGFyYW0ge0NvbnZlcnRlckNvbnRleHR9IGNvbnZlcnRlckNvbnRleHQgVGhlIGNvbnZlcnRlciBjb250ZXh0XG4gKiBAcmV0dXJucyBBbiBhcnJheSBvZiBzZWN0aW9ucy5cbiAqL1xuZXhwb3J0IGNvbnN0IGdldFNlY3Rpb25zID0gZnVuY3Rpb24oY29udmVydGVyQ29udGV4dDogQ29udmVydGVyQ29udGV4dCk6IE9iamVjdFBhZ2VTZWN0aW9uW10ge1xuXHRjb25zdCBtYW5pZmVzdFdyYXBwZXIgPSBjb252ZXJ0ZXJDb250ZXh0LmdldE1hbmlmZXN0V3JhcHBlcigpO1xuXHRjb25zdCBzZWN0aW9ucyA9IGluc2VydEN1c3RvbUVsZW1lbnRzKFxuXHRcdGdldFNlY3Rpb25zRnJvbUFubm90YXRpb24oY29udmVydGVyQ29udGV4dCksXG5cdFx0Z2V0U2VjdGlvbnNGcm9tTWFuaWZlc3QobWFuaWZlc3RXcmFwcGVyLmdldFNlY3Rpb25zKCksIGNvbnZlcnRlckNvbnRleHQpLFxuXHRcdHtcblx0XHRcdFwidGl0bGVcIjogXCJvdmVyd3JpdGVcIixcblx0XHRcdFwidmlzaWJsZVwiOiBcIm92ZXJ3cml0ZVwiLFxuXHRcdFx0XCJzdWJTZWN0aW9uc1wiOiB7XG5cdFx0XHRcdFwiYWN0aW9uc1wiOiBcIm1lcmdlXCIsXG5cdFx0XHRcdFwidGl0bGVcIjogXCJvdmVyd3JpdGVcIixcblx0XHRcdFx0XCJzaWRlQ29udGVudFwiOiBcIm92ZXJ3cml0ZVwiXG5cdFx0XHR9XG5cdFx0fVxuXHQpO1xuXHQvLyBMZXZlbCBBZGp1c3RtZW50IGZvciBcIk1peGVkXCIgQ29sbGVjdGlvbiBGYWNldHM6XG5cdC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblx0Ly8gVGhlIG1hbmlmZXN0IGRlZmluaXRpb24gb2YgY3VzdG9tIHNpZGUgY29udGVudHMgYW5kIGFjdGlvbnMgc3RpbGwgbmVlZHMgdG8gYmUgYWxpZ25lZCBmb3IgXCJNaXhlZFwiIGNvbGxlY3Rpb24gZmFjZXRzOlxuXHQvLyBDb2xsZWN0aW9uIGZhY2V0cyBjb250YWluaW5nIHRhYmxlcyBnYWluIGFuIGV4dHJhIHJlZmVyZW5jZSBmYWNldCBhcyBhIHRhYmxlIHdyYXBwZXIgdG8gZW5zdXJlLCB0aGF0IHRoZSB0YWJsZSBpcyBhbHdheXNcblx0Ly8gcGxhY2VkIGluIGFuIG93biBpbmRpdmlkdWFsIE9iamVjdCBQYWdlIEJsb2NrOyB0aGlzIGFkZGl0aW9uYWwgaGllcmFyY2h5IGxldmVsIGlzIHVua25vd24gdG8gYXBwIGRldmVsb3BlcnMsIHdoaWNoIGFyZVxuXHQvLyBkZWZpbmluZyB0aGUgc2lkZSBjb250ZW50IGFuZCBhY3Rpb25zIGluIHRoZSBtYW5pZmVzdCBhdCBjb2xsZWN0aW9uIGZhY2V0IGxldmVsOyBub3csIHNpbmNlIHRoZSBzaWRlQ29udGVudCBhbHdheXMgbmVlZHNcblx0Ly8gdG8gYmUgYXNzaWduZWQgdG8gYSBibG9jaywgd2UgbmVlZCB0byBtb3ZlIHRoZSBzaWRlQ29udGVudCBvZiBmcm9tIGEgbWl4ZWQgY29sbGVjdGlvbiBmYWNldCB0byBpdHMgZmlyc3QgY2hpbGQgcmVmZXJlbmNlIGZhY2V0LlxuXHQvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cdHNlY3Rpb25zLmZvckVhY2goZnVuY3Rpb24oc2VjdGlvbikge1xuXHRcdHNlY3Rpb24uc3ViU2VjdGlvbnM/LmZvckVhY2goZnVuY3Rpb24oc3ViU2VjdGlvbikge1xuXHRcdFx0aWYgKHN1YlNlY3Rpb24udHlwZSA9PT0gXCJNaXhlZFwiICYmIHN1YlNlY3Rpb24uc2lkZUNvbnRlbnQgIT0gdW5kZWZpbmVkICYmIHN1YlNlY3Rpb24uY29udGVudCAmJiBzdWJTZWN0aW9uLmNvbnRlbnQubGVuZ3RoID4gMCkge1xuXHRcdFx0XHQvLyAxLiBDb3B5IHNpZGVDb250ZW50IC8gYWN0aW9ucyB0byB0aGUgU3ViU2VjdGlvbidzIGNvbnRlbnRcblx0XHRcdFx0Ly8gMi4gRGVsZXRlIHNpZGVDb250ZW50IC8gYWN0aW9ucyBhdCB0aGUgKGludmFsaWQpIG1hbmlmZXN0IGxldmVsXG5cdFx0XHRcdGlmICgoc3ViU2VjdGlvbiBhcyBGb3JtU3ViU2VjdGlvbikuc2lkZUNvbnRlbnQpIHtcblx0XHRcdFx0XHRzdWJTZWN0aW9uLmNvbnRlbnRbMF0uc2lkZUNvbnRlbnQgPSBzdWJTZWN0aW9uLnNpZGVDb250ZW50O1xuXHRcdFx0XHRcdHN1YlNlY3Rpb24uc2lkZUNvbnRlbnQgPSB1bmRlZmluZWQ7XG5cdFx0XHRcdH1cblx0XHRcdFx0aWYgKChzdWJTZWN0aW9uIGFzIEZvcm1TdWJTZWN0aW9uKS5hY3Rpb25zLmxlbmd0aCA+IDApIHtcblx0XHRcdFx0XHQoc3ViU2VjdGlvbi5jb250ZW50WzBdIGFzIEZvcm1TdWJTZWN0aW9uKS5hY3Rpb25zID0gKHN1YlNlY3Rpb24gYXMgRm9ybVN1YlNlY3Rpb24pLmFjdGlvbnM7XG5cdFx0XHRcdFx0KHN1YlNlY3Rpb24gYXMgRm9ybVN1YlNlY3Rpb24pLmFjdGlvbnMgPSBbXTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH0pO1xuXHR9KTtcblx0cmV0dXJuIHNlY3Rpb25zO1xufTtcblxuLyoqXG4gKiBEZXRlcm1pbmVzIGlmIHRoZSBPYmplY3RQYWdlIGhhcyBoZWFkZXIgY29udGVudC5cbiAqXG4gKiBAcGFyYW0gY29udmVydGVyQ29udGV4dCBUaGUgaW5zdGFuY2Ugb2YgdGhlIGNvbnZlcnRlciBjb250ZXh0XG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gYHRydWVgIGlmIHRoZXJlIGlzIGF0IGxlYXN0IG9uIGhlYWRlciBmYWNldFxuICovXG5mdW5jdGlvbiBoYXNIZWFkZXJDb250ZW50KGNvbnZlcnRlckNvbnRleHQ6IENvbnZlcnRlckNvbnRleHQpOiBib29sZWFuIHtcblx0Y29uc3QgbWFuaWZlc3RXcmFwcGVyID0gY29udmVydGVyQ29udGV4dC5nZXRNYW5pZmVzdFdyYXBwZXIoKTtcblx0cmV0dXJuIChcblx0XHQoY29udmVydGVyQ29udGV4dC5nZXRFbnRpdHlUeXBlKCkuYW5ub3RhdGlvbnM/LlVJPy5IZWFkZXJGYWNldHMgfHwgW10pLmxlbmd0aCA+IDAgfHxcblx0XHRPYmplY3Qua2V5cyhtYW5pZmVzdFdyYXBwZXIuZ2V0SGVhZGVyRmFjZXRzKCkpLmxlbmd0aCA+IDBcblx0KTtcbn1cblxuLyoqXG4gKiBHZXRzIHRoZSBleHByZXNzaW9uIHRvIGV2YWx1YXRlIHRoZSB2aXNpYmlsaXR5IG9mIHRoZSBoZWFkZXIgY29udGVudC5cbiAqXG4gKiBAcGFyYW0gY29udmVydGVyQ29udGV4dCBUaGUgaW5zdGFuY2Ugb2YgdGhlIGNvbnZlcnRlciBjb250ZXh0XG4gKiBAcmV0dXJucyB7QmluZGluZ0V4cHJlc3Npb248Ym9vbGVhbj59IFRoZSBiaW5kaW5nIGV4cHJlc3Npb24gZm9yIHRoZSBEZWxldGUgYnV0dG9uXG4gKi9cbmZ1bmN0aW9uIGdldFNob3dIZWFkZXJDb250ZW50RXhwcmVzc2lvbihjb252ZXJ0ZXJDb250ZXh0OiBDb252ZXJ0ZXJDb250ZXh0KTogRXhwcmVzc2lvbjxhbnk+IHtcblx0Y29uc3QgbWFuaWZlc3RXcmFwcGVyID0gY29udmVydGVyQ29udGV4dC5nZXRNYW5pZmVzdFdyYXBwZXIoKTtcblx0cmV0dXJuIGlmRWxzZShcblx0XHQhaGFzSGVhZGVyQ29udGVudChjb252ZXJ0ZXJDb250ZXh0KSxcblx0XHRjb25zdGFudChmYWxzZSksXG5cdFx0aWZFbHNlKFxuXHRcdFx0ZXF1YWwobWFuaWZlc3RXcmFwcGVyLmlzSGVhZGVyRWRpdGFibGUoKSwgZmFsc2UpLFxuXHRcdFx0Y29uc3RhbnQodHJ1ZSksXG5cdFx0XHRub3QoZXF1YWwoYmluZGluZ0V4cHJlc3Npb24oXCIvZWRpdE1vZGVcIiwgXCJ1aVwiKSwgXCJFZGl0YWJsZVwiKSlcblx0XHQpXG5cdCk7XG59XG5cbi8qKlxuICogR2V0cyB0aGUgYmluZGluZyBleHByZXNzaW9uIHRvIGV2YWx1YXRlIHRoZSB2aXNpYmlsaXR5IG9mIHRoZSBoZWFkZXIgY29udGVudC5cbiAqXG4gKiBAcGFyYW0gY29udmVydGVyQ29udGV4dCBUaGUgaW5zdGFuY2Ugb2YgdGhlIGNvbnZlcnRlciBjb250ZXh0XG4gKiBAcmV0dXJucyB7QmluZGluZ0V4cHJlc3Npb248Ym9vbGVhbj59IFRoZSBiaW5kaW5nIGV4cHJlc3Npb24gZm9yIHRoZSBEZWxldGUgYnV0dG9uXG4gKi9cbmV4cG9ydCBjb25zdCBnZXRTaG93SGVhZGVyQ29udGVudCA9IGZ1bmN0aW9uKGNvbnZlcnRlckNvbnRleHQ6IENvbnZlcnRlckNvbnRleHQpOiBCaW5kaW5nRXhwcmVzc2lvbjxib29sZWFuPiB7XG5cdHJldHVybiBjb21waWxlQmluZGluZyhnZXRTaG93SGVhZGVyQ29udGVudEV4cHJlc3Npb24oY29udmVydGVyQ29udGV4dCkpO1xufTtcblxuLyoqXG4gKiBHZXRzIHRoZSBiaW5kaW5nIGV4cHJlc3Npb24gdG8gZXZhbHVhdGUgdGhlIHZpc2liaWxpdHkgb2YgdGhlIGF2YXRhciB3aGVuIHRoZSBoZWFkZXIgaXMgaW4gZXhwYW5kZWQgc3RhdGUuXG4gKlxuICogQHBhcmFtIGNvbnZlcnRlckNvbnRleHQgVGhlIGluc3RhbmNlIG9mIHRoZSBjb252ZXJ0ZXIgY29udGV4dFxuICogQHJldHVybnMge0JpbmRpbmdFeHByZXNzaW9uPHN0cmluZz59IFRoZSBiaW5kaW5nIGV4cHJlc3Npb24gZm9yIHRoZSBEZWxldGUgYnV0dG9uXG4gKi9cbmV4cG9ydCBjb25zdCBnZXRFeHBhbmRlZEltYWdlVmlzaWJsZSA9IGZ1bmN0aW9uKGNvbnZlcnRlckNvbnRleHQ6IENvbnZlcnRlckNvbnRleHQpOiBCaW5kaW5nRXhwcmVzc2lvbjxzdHJpbmc+IHtcblx0cmV0dXJuIGNvbXBpbGVCaW5kaW5nKG5vdChnZXRTaG93SGVhZGVyQ29udGVudEV4cHJlc3Npb24oY29udmVydGVyQ29udGV4dCkpKTtcbn07XG5cbmV4cG9ydCBjb25zdCBjb252ZXJ0UGFnZSA9IGZ1bmN0aW9uKGNvbnZlcnRlckNvbnRleHQ6IENvbnZlcnRlckNvbnRleHQpOiBPYmplY3RQYWdlRGVmaW5pdGlvbiB7XG5cdGNvbnN0IG1hbmlmZXN0V3JhcHBlciA9IGNvbnZlcnRlckNvbnRleHQuZ2V0TWFuaWZlc3RXcmFwcGVyKCk7XG5cdGxldCBoZWFkZXJTZWN0aW9uOiBPYmplY3RQYWdlU2VjdGlvbiB8IHVuZGVmaW5lZDtcblx0Y29uc3QgZW50aXR5VHlwZTogRW50aXR5VHlwZSA9IGNvbnZlcnRlckNvbnRleHQuZ2V0RW50aXR5VHlwZSgpO1xuXHQvLyBSZXRyaWV2ZSBhbGwgaGVhZGVyIGZhY2V0cyAoZnJvbSBhbm5vdGF0aW9ucyAmIGN1c3RvbSlcblx0Y29uc3QgaGVhZGVyRmFjZXRzID0gaW5zZXJ0Q3VzdG9tRWxlbWVudHMoXG5cdFx0Z2V0SGVhZGVyRmFjZXRzRnJvbUFubm90YXRpb25zKGNvbnZlcnRlckNvbnRleHQpLFxuXHRcdGdldEhlYWRlckZhY2V0c0Zyb21NYW5pZmVzdChtYW5pZmVzdFdyYXBwZXIuZ2V0SGVhZGVyRmFjZXRzKCkpXG5cdCk7XG5cblx0Ly8gUmV0cmlldmUgdGhlIHBhZ2UgaGVhZGVyIGFjdGlvbnNcblx0Y29uc3QgaGVhZGVyQWN0aW9ucyA9IGdldEhlYWRlckFjdGlvbnMoY29udmVydGVyQ29udGV4dCk7XG5cblx0Ly8gUmV0cmlldmUgdGhlIHBhZ2UgZm9vdGVyIGFjdGlvbnNcblx0Y29uc3QgZm9vdGVyQWN0aW9ucyA9IGdldEZvb3RlckFjdGlvbnMoY29udmVydGVyQ29udGV4dCk7XG5cblx0aWYgKG1hbmlmZXN0V3JhcHBlci5pc0hlYWRlckVkaXRhYmxlKCkgJiYgKGVudGl0eVR5cGUuYW5ub3RhdGlvbnMuVUk/LkhlYWRlckZhY2V0cyB8fCBlbnRpdHlUeXBlLmFubm90YXRpb25zLlVJPy5IZWFkZXJJbmZvKSkge1xuXHRcdGhlYWRlclNlY3Rpb24gPSBjcmVhdGVFZGl0YWJsZUhlYWRlclNlY3Rpb24oY29udmVydGVyQ29udGV4dCwgaGVhZGVyRmFjZXRzKTtcblx0fVxuXG5cdGNvbnN0IHNlY3Rpb25zID0gZ2V0U2VjdGlvbnMoY29udmVydGVyQ29udGV4dCk7XG5cblx0cmV0dXJuIHtcblx0XHR0ZW1wbGF0ZTogVGVtcGxhdGVUeXBlLk9iamVjdFBhZ2UsXG5cdFx0aGVhZGVyOiB7XG5cdFx0XHR2aXNpYmxlOiBtYW5pZmVzdFdyYXBwZXIuZ2V0U2hvd09iamVjdFBhZ2VIZWFkZXIoKSxcblx0XHRcdHNlY3Rpb246IGhlYWRlclNlY3Rpb24sXG5cdFx0XHRmYWNldHM6IGhlYWRlckZhY2V0cyxcblx0XHRcdGFjdGlvbnM6IGhlYWRlckFjdGlvbnMsXG5cdFx0XHRzaG93Q29udGVudDogZ2V0U2hvd0hlYWRlckNvbnRlbnQoY29udmVydGVyQ29udGV4dCksXG5cdFx0XHRoYXNDb250ZW50OiBoYXNIZWFkZXJDb250ZW50KGNvbnZlcnRlckNvbnRleHQpLFxuXHRcdFx0YXZhdGFyOiBnZXRBdmF0YXIoY29udmVydGVyQ29udGV4dCksXG5cdFx0XHR0aXRsZToge1xuXHRcdFx0XHRleHBhbmRlZEltYWdlVmlzaWJsZTogZ2V0RXhwYW5kZWRJbWFnZVZpc2libGUoY29udmVydGVyQ29udGV4dClcblx0XHRcdH1cblx0XHR9LFxuXHRcdHNlY3Rpb25zOiBzZWN0aW9ucyxcblx0XHRmb290ZXJBY3Rpb25zOiBmb290ZXJBY3Rpb25zLFxuXHRcdHNob3dBbmNob3JCYXI6IG1hbmlmZXN0V3JhcHBlci5nZXRTaG93QW5jaG9yQmFyKCksXG5cdFx0dXNlSWNvblRhYkJhcjogbWFuaWZlc3RXcmFwcGVyLnVzZUljb25UYWJCYXIoKVxuXHR9O1xufTtcbiJdfQ==
|
|
@@ -7,9 +7,9 @@ import {
|
|
|
7
7
|
createSubSections,
|
|
8
8
|
createCustomHeaderFacetSubSections,
|
|
9
9
|
CustomObjectPageSection,
|
|
10
|
-
CustomObjectPageSubSection,
|
|
11
10
|
ObjectPageSection,
|
|
12
|
-
ObjectPageSubSection
|
|
11
|
+
ObjectPageSubSection,
|
|
12
|
+
FormSubSection
|
|
13
13
|
} from "../controls/ObjectPage/SubSection";
|
|
14
14
|
import { getHeaderFacetsFromAnnotations, getHeaderFacetsFromManifest, ObjectPageHeaderFacet } from "../controls/ObjectPage/HeaderFacet";
|
|
15
15
|
import { CustomSectionID, EditableHeaderSectionID, SectionID } from "../helpers/ID";
|
|
@@ -20,16 +20,35 @@ import {
|
|
|
20
20
|
getFooterDefaultActions,
|
|
21
21
|
getHiddenHeaderActions
|
|
22
22
|
} from "sap/fe/core/converters/objectPage/HeaderAndFooterAction";
|
|
23
|
-
import {
|
|
23
|
+
import { Avatar, getAvatar } from "../controls/ObjectPage/Avatar";
|
|
24
|
+
import {
|
|
25
|
+
annotationExpression,
|
|
26
|
+
bindingExpression,
|
|
27
|
+
compileBinding,
|
|
28
|
+
equal,
|
|
29
|
+
not,
|
|
30
|
+
ifElse,
|
|
31
|
+
constant,
|
|
32
|
+
BindingExpression,
|
|
33
|
+
Expression
|
|
34
|
+
} from "sap/fe/core/helpers/BindingExpression";
|
|
24
35
|
import ConverterContext from "../ConverterContext";
|
|
25
36
|
|
|
26
37
|
export type ObjectPageDefinition = PageDefinition & {
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
38
|
+
header: {
|
|
39
|
+
visible: boolean;
|
|
40
|
+
section?: ObjectPageSection;
|
|
41
|
+
facets: ObjectPageHeaderFacet[];
|
|
42
|
+
actions: BaseAction[];
|
|
43
|
+
showContent: BindingExpression<boolean>;
|
|
44
|
+
hasContent: boolean;
|
|
45
|
+
avatar?: Avatar;
|
|
46
|
+
title: {
|
|
47
|
+
expandedImageVisible: BindingExpression<string>;
|
|
48
|
+
};
|
|
49
|
+
};
|
|
30
50
|
sections: ObjectPageSection[];
|
|
31
51
|
footerActions: BaseAction[];
|
|
32
|
-
showHeader: boolean;
|
|
33
52
|
showAnchorBar: boolean;
|
|
34
53
|
useIconTabBar: boolean;
|
|
35
54
|
};
|
|
@@ -187,7 +206,7 @@ function getSectionFromManifest(
|
|
|
187
206
|
showTitle: !!customSectionDefinition.title,
|
|
188
207
|
visible: customSectionDefinition.visible !== undefined ? customSectionDefinition.visible : true,
|
|
189
208
|
position: position,
|
|
190
|
-
subSections:
|
|
209
|
+
subSections: subSections as any
|
|
191
210
|
};
|
|
192
211
|
return customSection;
|
|
193
212
|
}
|
|
@@ -195,7 +214,7 @@ function getSectionFromManifest(
|
|
|
195
214
|
/**
|
|
196
215
|
* Retrieves the ObjectPage header actions (both the default ones and the custom ones defined in the manifest).
|
|
197
216
|
*
|
|
198
|
-
* @param converterContext
|
|
217
|
+
* @param {ConverterContext} converterContext The converter context
|
|
199
218
|
* @returns An array containing all the actions for this ObjectPage header
|
|
200
219
|
*/
|
|
201
220
|
export const getHeaderActions = function(converterContext: ConverterContext): BaseAction[] {
|
|
@@ -219,7 +238,7 @@ export const getHeaderActions = function(converterContext: ConverterContext): Ba
|
|
|
219
238
|
/**
|
|
220
239
|
* Retrieves the ObjectPage footer actions (both the default ones and the custom ones defined in the manifest).
|
|
221
240
|
*
|
|
222
|
-
* @param converterContext
|
|
241
|
+
* @param {ConverterContext} converterContext The converter context
|
|
223
242
|
* @returns An array containing all the actions for this ObjectPage footer
|
|
224
243
|
*/
|
|
225
244
|
export const getFooterActions = function(converterContext: ConverterContext): BaseAction[] {
|
|
@@ -236,12 +255,12 @@ export const getFooterActions = function(converterContext: ConverterContext): Ba
|
|
|
236
255
|
/**
|
|
237
256
|
* Retrieves and merges the ObjectPage sections defined in the annotation and in the manifest.
|
|
238
257
|
*
|
|
239
|
-
* @param converterContext
|
|
258
|
+
* @param {ConverterContext} converterContext The converter context
|
|
240
259
|
* @returns An array of sections.
|
|
241
260
|
*/
|
|
242
261
|
export const getSections = function(converterContext: ConverterContext): ObjectPageSection[] {
|
|
243
262
|
const manifestWrapper = converterContext.getManifestWrapper();
|
|
244
|
-
|
|
263
|
+
const sections = insertCustomElements(
|
|
245
264
|
getSectionsFromAnnotation(converterContext),
|
|
246
265
|
getSectionsFromManifest(manifestWrapper.getSections(), converterContext),
|
|
247
266
|
{
|
|
@@ -254,6 +273,84 @@ export const getSections = function(converterContext: ConverterContext): ObjectP
|
|
|
254
273
|
}
|
|
255
274
|
}
|
|
256
275
|
);
|
|
276
|
+
// Level Adjustment for "Mixed" Collection Facets:
|
|
277
|
+
// ==============================================
|
|
278
|
+
// The manifest definition of custom side contents and actions still needs to be aligned for "Mixed" collection facets:
|
|
279
|
+
// Collection facets containing tables gain an extra reference facet as a table wrapper to ensure, that the table is always
|
|
280
|
+
// placed in an own individual Object Page Block; this additional hierarchy level is unknown to app developers, which are
|
|
281
|
+
// defining the side content and actions in the manifest at collection facet level; now, since the sideContent always needs
|
|
282
|
+
// to be assigned to a block, we need to move the sideContent of from a mixed collection facet to its first child reference facet.
|
|
283
|
+
// ==============================================
|
|
284
|
+
sections.forEach(function(section) {
|
|
285
|
+
section.subSections?.forEach(function(subSection) {
|
|
286
|
+
if (subSection.type === "Mixed" && subSection.sideContent != undefined && subSection.content && subSection.content.length > 0) {
|
|
287
|
+
// 1. Copy sideContent / actions to the SubSection's content
|
|
288
|
+
// 2. Delete sideContent / actions at the (invalid) manifest level
|
|
289
|
+
if ((subSection as FormSubSection).sideContent) {
|
|
290
|
+
subSection.content[0].sideContent = subSection.sideContent;
|
|
291
|
+
subSection.sideContent = undefined;
|
|
292
|
+
}
|
|
293
|
+
if ((subSection as FormSubSection).actions.length > 0) {
|
|
294
|
+
(subSection.content[0] as FormSubSection).actions = (subSection as FormSubSection).actions;
|
|
295
|
+
(subSection as FormSubSection).actions = [];
|
|
296
|
+
}
|
|
297
|
+
}
|
|
298
|
+
});
|
|
299
|
+
});
|
|
300
|
+
return sections;
|
|
301
|
+
};
|
|
302
|
+
|
|
303
|
+
/**
|
|
304
|
+
* Determines if the ObjectPage has header content.
|
|
305
|
+
*
|
|
306
|
+
* @param converterContext The instance of the converter context
|
|
307
|
+
* @returns {boolean} `true` if there is at least on header facet
|
|
308
|
+
*/
|
|
309
|
+
function hasHeaderContent(converterContext: ConverterContext): boolean {
|
|
310
|
+
const manifestWrapper = converterContext.getManifestWrapper();
|
|
311
|
+
return (
|
|
312
|
+
(converterContext.getEntityType().annotations?.UI?.HeaderFacets || []).length > 0 ||
|
|
313
|
+
Object.keys(manifestWrapper.getHeaderFacets()).length > 0
|
|
314
|
+
);
|
|
315
|
+
}
|
|
316
|
+
|
|
317
|
+
/**
|
|
318
|
+
* Gets the expression to evaluate the visibility of the header content.
|
|
319
|
+
*
|
|
320
|
+
* @param converterContext The instance of the converter context
|
|
321
|
+
* @returns {BindingExpression<boolean>} The binding expression for the Delete button
|
|
322
|
+
*/
|
|
323
|
+
function getShowHeaderContentExpression(converterContext: ConverterContext): Expression<any> {
|
|
324
|
+
const manifestWrapper = converterContext.getManifestWrapper();
|
|
325
|
+
return ifElse(
|
|
326
|
+
!hasHeaderContent(converterContext),
|
|
327
|
+
constant(false),
|
|
328
|
+
ifElse(
|
|
329
|
+
equal(manifestWrapper.isHeaderEditable(), false),
|
|
330
|
+
constant(true),
|
|
331
|
+
not(equal(bindingExpression("/editMode", "ui"), "Editable"))
|
|
332
|
+
)
|
|
333
|
+
);
|
|
334
|
+
}
|
|
335
|
+
|
|
336
|
+
/**
|
|
337
|
+
* Gets the binding expression to evaluate the visibility of the header content.
|
|
338
|
+
*
|
|
339
|
+
* @param converterContext The instance of the converter context
|
|
340
|
+
* @returns {BindingExpression<boolean>} The binding expression for the Delete button
|
|
341
|
+
*/
|
|
342
|
+
export const getShowHeaderContent = function(converterContext: ConverterContext): BindingExpression<boolean> {
|
|
343
|
+
return compileBinding(getShowHeaderContentExpression(converterContext));
|
|
344
|
+
};
|
|
345
|
+
|
|
346
|
+
/**
|
|
347
|
+
* Gets the binding expression to evaluate the visibility of the avatar when the header is in expanded state.
|
|
348
|
+
*
|
|
349
|
+
* @param converterContext The instance of the converter context
|
|
350
|
+
* @returns {BindingExpression<string>} The binding expression for the Delete button
|
|
351
|
+
*/
|
|
352
|
+
export const getExpandedImageVisible = function(converterContext: ConverterContext): BindingExpression<string> {
|
|
353
|
+
return compileBinding(not(getShowHeaderContentExpression(converterContext)));
|
|
257
354
|
};
|
|
258
355
|
|
|
259
356
|
export const convertPage = function(converterContext: ConverterContext): ObjectPageDefinition {
|
|
@@ -280,12 +377,20 @@ export const convertPage = function(converterContext: ConverterContext): ObjectP
|
|
|
280
377
|
|
|
281
378
|
return {
|
|
282
379
|
template: TemplateType.ObjectPage,
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
380
|
+
header: {
|
|
381
|
+
visible: manifestWrapper.getShowObjectPageHeader(),
|
|
382
|
+
section: headerSection,
|
|
383
|
+
facets: headerFacets,
|
|
384
|
+
actions: headerActions,
|
|
385
|
+
showContent: getShowHeaderContent(converterContext),
|
|
386
|
+
hasContent: hasHeaderContent(converterContext),
|
|
387
|
+
avatar: getAvatar(converterContext),
|
|
388
|
+
title: {
|
|
389
|
+
expandedImageVisible: getExpandedImageVisible(converterContext)
|
|
390
|
+
}
|
|
391
|
+
},
|
|
286
392
|
sections: sections,
|
|
287
393
|
footerActions: footerActions,
|
|
288
|
-
showHeader: manifestWrapper.getShowObjectPageHeader(),
|
|
289
394
|
showAnchorBar: manifestWrapper.getShowAnchorBar(),
|
|
290
395
|
useIconTabBar: manifestWrapper.useIconTabBar()
|
|
291
396
|
};
|
|
@@ -55,7 +55,8 @@ sap.ui.define(
|
|
|
55
55
|
"sap.ui.layout.form.FormElement": true,
|
|
56
56
|
"sap.ui.fl.variants.VariantManagement": true,
|
|
57
57
|
"sap.fe.core.controls.FilterBar": true,
|
|
58
|
-
"sap.ui.mdc.Table": true
|
|
58
|
+
"sap.ui.mdc.Table": true,
|
|
59
|
+
"sap.m.IconTabBar": true
|
|
59
60
|
};
|
|
60
61
|
if (
|
|
61
62
|
oElement.getMetadata().getName() === "sap.m.MenuButton" &&
|
|
@@ -74,4 +74,4 @@ sap.ui.define(["sap/fe/core/formatters/TableFormatterTypes"], function (TableFor
|
|
|
74
74
|
|
|
75
75
|
return criticalityFormatters;
|
|
76
76
|
}, true);
|
|
77
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,
|
|
77
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIkNyaXRpY2FsaXR5Rm9ybWF0dGVyLnRzIl0sIm5hbWVzIjpbImNyaXRpY2FsaXR5Rm9ybWF0IiwiY3JpdGljYWxpdHlWYWx1ZSIsImNyaXRpY2FsaXR5UHJvcGVydHkiLCJNZXNzYWdlVHlwZSIsIkVycm9yIiwiV2FybmluZyIsIlN1Y2Nlc3MiLCJJbmZvcm1hdGlvbiIsIk5vbmUiLCJfX2Z1bmN0aW9uTmFtZSIsImNyaXRpY2FsaXR5Rm9ybWF0dGVycyIsInNOYW1lIiwiaGFzT3duUHJvcGVydHkiLCJvQXJncyIsImFwcGx5Il0sIm1hcHBpbmdzIjoiO0FBQUE7QUFDQTtBQUNBOzs7Ozs7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQSxNQUFNQSxpQkFBaUIsR0FBRyxVQUFTQyxnQkFBVCxFQUF5RDtBQUNsRixRQUFJQyxtQkFBSjs7QUFDQSxRQUFJLE9BQU9ELGdCQUFQLEtBQTRCLFFBQWhDLEVBQTBDO0FBQ3pDLGFBQVFBLGdCQUFSO0FBQ0E7O0FBQ0QsWUFBUUEsZ0JBQVI7QUFDQyxXQUFLLENBQUw7QUFDQ0MsUUFBQUEsbUJBQW1CLEdBQUdDLFdBQVcsQ0FBQ0MsS0FBbEM7QUFDQTs7QUFDRCxXQUFLLENBQUw7QUFDQ0YsUUFBQUEsbUJBQW1CLEdBQUdDLFdBQVcsQ0FBQ0UsT0FBbEM7QUFDQTs7QUFDRCxXQUFLLENBQUw7QUFDQ0gsUUFBQUEsbUJBQW1CLEdBQUdDLFdBQVcsQ0FBQ0csT0FBbEM7QUFDQTs7QUFDRCxXQUFLLENBQUw7QUFDQ0osUUFBQUEsbUJBQW1CLEdBQUdDLFdBQVcsQ0FBQ0ksV0FBbEM7QUFDQTs7QUFDRDtBQUNDTCxRQUFBQSxtQkFBbUIsR0FBR0MsV0FBVyxDQUFDSyxJQUFsQztBQWRGOztBQWlCQSxXQUFPTixtQkFBUDtBQUNBLEdBdkJEOztBQXdCQUYsRUFBQUEsaUJBQWlCLENBQUNTLGNBQWxCLEdBQW1DLCtEQUFuQyxDLENBRUE7O0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFDQSxNQUFNQyxxQkFBcUIsR0FBRyxVQUF1QkMsS0FBdkIsRUFBNEQ7QUFDekYsUUFBSUQscUJBQXFCLENBQUNFLGNBQXRCLENBQXFDRCxLQUFyQyxDQUFKLEVBQWlEO0FBQUEsd0NBRHFCRSxLQUNyQjtBQURxQkEsUUFBQUEsS0FDckI7QUFBQTs7QUFDaEQsYUFBUUgscUJBQUQsQ0FBK0JDLEtBQS9CLEVBQXNDRyxLQUF0QyxDQUE0QyxJQUE1QyxFQUFrREQsS0FBbEQsQ0FBUDtBQUNBLEtBRkQsTUFFTztBQUNOLGFBQU8sRUFBUDtBQUNBO0FBQ0QsR0FORDs7QUFRQUgsRUFBQUEscUJBQXFCLENBQUNWLGlCQUF0QixHQUEwQ0EsaUJBQTFDO0FBRUE7QUFDQTtBQUNBOztTQUNlVSxxQiIsInNvdXJjZVJvb3QiOiIuIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTWVzc2FnZVR5cGUgfSBmcm9tIFwic2FwL2ZlL2NvcmUvZm9ybWF0dGVycy9UYWJsZUZvcm1hdHRlclR5cGVzXCI7XG5cbi8qKlxuICogY3JpdGljYWxpdHkgZm9ybWF0dGluZ1xuICpcbiAqIEBwYXJhbSB7c3RyaW5nfG51bWJlcn0gY3JpdGljYWxpdHlWYWx1ZSBjcml0aWNhbGl0eSB2YWx1ZVxuICogQHJldHVybnMge29iamVjdH0gVGhlIGZvcm1hdHRlZCBjcml0aWNhbGl0eVxuICovXG5cbmNvbnN0IGNyaXRpY2FsaXR5Rm9ybWF0ID0gZnVuY3Rpb24oY3JpdGljYWxpdHlWYWx1ZTogc3RyaW5nIHwgbnVtYmVyKTogTWVzc2FnZVR5cGUge1xuXHRsZXQgY3JpdGljYWxpdHlQcm9wZXJ0eTtcblx0aWYgKHR5cGVvZiBjcml0aWNhbGl0eVZhbHVlID09PSBcInN0cmluZ1wiKSB7XG5cdFx0cmV0dXJuIChjcml0aWNhbGl0eVZhbHVlIGFzIHVua25vd24pIGFzIE1lc3NhZ2VUeXBlO1xuXHR9XG5cdHN3aXRjaCAoY3JpdGljYWxpdHlWYWx1ZSkge1xuXHRcdGNhc2UgMTpcblx0XHRcdGNyaXRpY2FsaXR5UHJvcGVydHkgPSBNZXNzYWdlVHlwZS5FcnJvcjtcblx0XHRcdGJyZWFrO1xuXHRcdGNhc2UgMjpcblx0XHRcdGNyaXRpY2FsaXR5UHJvcGVydHkgPSBNZXNzYWdlVHlwZS5XYXJuaW5nO1xuXHRcdFx0YnJlYWs7XG5cdFx0Y2FzZSAzOlxuXHRcdFx0Y3JpdGljYWxpdHlQcm9wZXJ0eSA9IE1lc3NhZ2VUeXBlLlN1Y2Nlc3M7XG5cdFx0XHRicmVhaztcblx0XHRjYXNlIDU6XG5cdFx0XHRjcml0aWNhbGl0eVByb3BlcnR5ID0gTWVzc2FnZVR5cGUuSW5mb3JtYXRpb247XG5cdFx0XHRicmVhaztcblx0XHRkZWZhdWx0OlxuXHRcdFx0Y3JpdGljYWxpdHlQcm9wZXJ0eSA9IE1lc3NhZ2VUeXBlLk5vbmU7XG5cdH1cblxuXHRyZXR1cm4gY3JpdGljYWxpdHlQcm9wZXJ0eTtcbn07XG5jcml0aWNhbGl0eUZvcm1hdC5fX2Z1bmN0aW9uTmFtZSA9IFwic2FwLmZlLmNvcmUuZm9ybWF0dGVycy5Dcml0aWNhbGl0eUZvcm1hdHRlciNjcml0aWNhbGl0eUZvcm1hdFwiO1xuXG4vLyBTZWUgaHR0cHM6Ly93d3cudHlwZXNjcmlwdGxhbmcub3JnL2RvY3MvaGFuZGJvb2svZnVuY3Rpb25zLmh0bWwjdGhpcy1wYXJhbWV0ZXJzIGZvciBtb3JlIGRldGFpbCBvbiB0aGlzIHdlaXJkIHN5bnRheFxuLyoqXG4gKiBDb2xsZWN0aW9uIG9mIHRhYmxlIGZvcm1hdHRlcnMuXG4gKlxuICogQHBhcmFtIHtvYmplY3R9IHRoaXMgVGhlIGNvbnRleHRcbiAqIEBwYXJhbSB7c3RyaW5nfSBzTmFtZSBUaGUgaW5uZXIgZnVuY3Rpb24gbmFtZVxuICogQHBhcmFtIHtvYmplY3RbXX0gb0FyZ3MgVGhlIGlubmVyIGZ1bmN0aW9uIHBhcmFtZXRlcnNcbiAqIEByZXR1cm5zIHtvYmplY3R9IFRoZSB2YWx1ZSBmcm9tIHRoZSBpbm5lciBmdW5jdGlvblxuICovXG5jb25zdCBjcml0aWNhbGl0eUZvcm1hdHRlcnMgPSBmdW5jdGlvbih0aGlzOiBvYmplY3QsIHNOYW1lOiBzdHJpbmcsIC4uLm9BcmdzOiBhbnlbXSk6IGFueSB7XG5cdGlmIChjcml0aWNhbGl0eUZvcm1hdHRlcnMuaGFzT3duUHJvcGVydHkoc05hbWUpKSB7XG5cdFx0cmV0dXJuIChjcml0aWNhbGl0eUZvcm1hdHRlcnMgYXMgYW55KVtzTmFtZV0uYXBwbHkodGhpcywgb0FyZ3MpO1xuXHR9IGVsc2Uge1xuXHRcdHJldHVybiBcIlwiO1xuXHR9XG59O1xuXG5jcml0aWNhbGl0eUZvcm1hdHRlcnMuY3JpdGljYWxpdHlGb3JtYXQgPSBjcml0aWNhbGl0eUZvcm1hdDtcblxuLyoqXG4gKiBAZ2xvYmFsXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGNyaXRpY2FsaXR5Rm9ybWF0dGVycztcbiJdfQ==
|
|
@@ -48,4 +48,4 @@ sap.ui.define([], function () {
|
|
|
48
48
|
|
|
49
49
|
return fpmFormatter;
|
|
50
50
|
}, true);
|
|
51
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,
|
|
51
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIkZQTUZvcm1hdHRlci50cyJdLCJuYW1lcyI6WyJjdXN0b21Jc0VuYWJsZWRDaGVjayIsIm9WaWV3IiwibW9kdWxlUGF0aCIsImFTZWxlY3RlZENvbnRleHRzIiwib0V4dGVuc2lvbkFQSSIsImdldENvbnRyb2xsZXIiLCJnZXRFeHRlbnNpb25BUEkiLCJwYXJ0cyIsInNwbGl0IiwibWV0aG9kTmFtZSIsInBvcCIsIm1vZHVsZU5hbWUiLCJqb2luIiwiUHJvbWlzZSIsInJlc29sdmUiLCJzYXAiLCJ1aSIsInJlcXVpcmUiLCJtb2R1bGUiLCJiaW5kIiwiZ2V0QmluZGluZ0NvbnRleHQiLCJfX2Z1bmN0aW9uTmFtZSIsImZwbUZvcm1hdHRlciIsInNOYW1lIiwiaGFzT3duUHJvcGVydHkiLCJvQXJncyIsImFwcGx5Il0sIm1hcHBpbmdzIjoiO0FBQUE7QUFDQTtBQUNBOzs7O0FBR0EsTUFBTUEsb0JBQW9CLEdBQUcsVUFFNUJDLEtBRjRCLEVBRzVCQyxVQUg0QixFQUk1QkMsaUJBSjRCLEVBS1o7QUFBQTs7QUFDaEIsUUFBTUMsYUFBYSxHQUFJSCxLQUFLLENBQUNJLGFBQU4sRUFBRCxDQUErQkMsZUFBL0IsRUFBdEI7QUFDQSxRQUFNQyxLQUFLLEdBQUdMLFVBQVUsQ0FBQ00sS0FBWCxDQUFpQixHQUFqQixDQUFkO0FBQ0EsUUFBTUMsVUFBVSxHQUFHRixLQUFLLENBQUNHLEdBQU4sRUFBbkI7QUFDQSxRQUFNQyxVQUFVLEdBQUdKLEtBQUssQ0FBQ0ssSUFBTixDQUFXLEdBQVgsQ0FBbkI7QUFFQSxXQUFPLElBQUlDLE9BQUosQ0FBWSxVQUFBQyxPQUFPLEVBQUk7QUFDN0JDLE1BQUFBLEdBQUcsQ0FBQ0MsRUFBSixDQUFPQyxPQUFQLENBQWUsQ0FBQ04sVUFBRCxDQUFmLEVBQTZCLFVBQUNPLE1BQUQsRUFBaUI7QUFDN0NKLFFBQUFBLE9BQU8sQ0FBQ0ksTUFBTSxDQUFDVCxVQUFELENBQU4sQ0FBbUJVLElBQW5CLENBQXdCZixhQUF4QixFQUF1QyxLQUFJLENBQUNnQixpQkFBTCxFQUF2QyxFQUFpRWpCLGlCQUFpQixJQUFJLEVBQXRGLENBQUQsQ0FBUDtBQUNBLE9BRkQ7QUFHQSxLQUpNLENBQVA7QUFLQSxHQWhCRDs7QUFpQkFILEVBQUFBLG9CQUFvQixDQUFDcUIsY0FBckIsR0FBc0MsMERBQXRDO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFDQSxNQUFNQyxZQUFZLEdBQUcsVUFBdUJDLEtBQXZCLEVBQTREO0FBQ2hGLFFBQUlELFlBQVksQ0FBQ0UsY0FBYixDQUE0QkQsS0FBNUIsQ0FBSixFQUF3QztBQUFBLHdDQURxQkUsS0FDckI7QUFEcUJBLFFBQUFBLEtBQ3JCO0FBQUE7O0FBQ3ZDLGFBQVFILFlBQUQsQ0FBc0JDLEtBQXRCLEVBQTZCRyxLQUE3QixDQUFtQyxJQUFuQyxFQUF5Q0QsS0FBekMsQ0FBUDtBQUNBLEtBRkQsTUFFTztBQUNOLGFBQU8sRUFBUDtBQUNBO0FBQ0QsR0FORDs7QUFRQUgsRUFBQUEsWUFBWSxDQUFDdEIsb0JBQWIsR0FBb0NBLG9CQUFwQztBQUVBO0FBQ0E7QUFDQTs7U0FDZXNCLFkiLCJzb3VyY2VSb290IjoiLiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbnRleHQgfSBmcm9tIFwic2FwL3VpL21vZGVsXCI7XG5pbXBvcnQgeyBNYW5hZ2VkT2JqZWN0IH0gZnJvbSBcInNhcC91aS9iYXNlXCI7XG5pbXBvcnQgeyBWaWV3IH0gZnJvbSBcInNhcC91aS9jb3JlL212Y1wiO1xuaW1wb3J0IHsgT0RhdGFNb2RlbCB9IGZyb20gXCJzYXAvdWkvbW9kZWwvb2RhdGEvdjRcIjtcblxuY29uc3QgY3VzdG9tSXNFbmFibGVkQ2hlY2sgPSBmdW5jdGlvbihcblx0dGhpczogTWFuYWdlZE9iamVjdCxcblx0b1ZpZXc6IFZpZXcsXG5cdG1vZHVsZVBhdGg6IHN0cmluZyxcblx0YVNlbGVjdGVkQ29udGV4dHM6IENvbnRleHQ8T0RhdGFNb2RlbD5bXVxuKTogUHJvbWlzZTx2b2lkPiB7XG5cdGNvbnN0IG9FeHRlbnNpb25BUEkgPSAob1ZpZXcuZ2V0Q29udHJvbGxlcigpIGFzIGFueSkuZ2V0RXh0ZW5zaW9uQVBJKCk7XG5cdGNvbnN0IHBhcnRzID0gbW9kdWxlUGF0aC5zcGxpdChcIi5cIik7XG5cdGNvbnN0IG1ldGhvZE5hbWUgPSBwYXJ0cy5wb3AoKSBhcyBzdHJpbmc7XG5cdGNvbnN0IG1vZHVsZU5hbWUgPSBwYXJ0cy5qb2luKFwiL1wiKTtcblxuXHRyZXR1cm4gbmV3IFByb21pc2UocmVzb2x2ZSA9PiB7XG5cdFx0c2FwLnVpLnJlcXVpcmUoW21vZHVsZU5hbWVdLCAobW9kdWxlOiBhbnkpID0+IHtcblx0XHRcdHJlc29sdmUobW9kdWxlW21ldGhvZE5hbWVdLmJpbmQob0V4dGVuc2lvbkFQSSkodGhpcy5nZXRCaW5kaW5nQ29udGV4dCgpLCBhU2VsZWN0ZWRDb250ZXh0cyB8fCBbXSkpO1xuXHRcdH0pO1xuXHR9KTtcbn07XG5jdXN0b21Jc0VuYWJsZWRDaGVjay5fX2Z1bmN0aW9uTmFtZSA9IFwic2FwLmZlLmNvcmUuZm9ybWF0dGVycy5GUE1Gb3JtYXR0ZXIjY3VzdG9tSXNFbmFibGVkQ2hlY2tcIjtcblxuLyoqXG4gKiBDb2xsZWN0aW9uIG9mIHRhYmxlIGZvcm1hdHRlcnMuXG4gKlxuICogQHBhcmFtIHtvYmplY3R9IHRoaXMgVGhlIGNvbnRleHRcbiAqIEBwYXJhbSB7c3RyaW5nfSBzTmFtZSBUaGUgaW5uZXIgZnVuY3Rpb24gbmFtZVxuICogQHBhcmFtIHtvYmplY3RbXX0gb0FyZ3MgVGhlIGlubmVyIGZ1bmN0aW9uIHBhcmFtZXRlcnNcbiAqIEByZXR1cm5zIHtvYmplY3R9IFRoZSB2YWx1ZSBmcm9tIHRoZSBpbm5lciBmdW5jdGlvblxuICovXG5jb25zdCBmcG1Gb3JtYXR0ZXIgPSBmdW5jdGlvbih0aGlzOiBvYmplY3QsIHNOYW1lOiBzdHJpbmcsIC4uLm9BcmdzOiBhbnlbXSk6IGFueSB7XG5cdGlmIChmcG1Gb3JtYXR0ZXIuaGFzT3duUHJvcGVydHkoc05hbWUpKSB7XG5cdFx0cmV0dXJuIChmcG1Gb3JtYXR0ZXIgYXMgYW55KVtzTmFtZV0uYXBwbHkodGhpcywgb0FyZ3MpO1xuXHR9IGVsc2Uge1xuXHRcdHJldHVybiBcIlwiO1xuXHR9XG59O1xuXG5mcG1Gb3JtYXR0ZXIuY3VzdG9tSXNFbmFibGVkQ2hlY2sgPSBjdXN0b21Jc0VuYWJsZWRDaGVjaztcblxuLyoqXG4gKiBAZ2xvYmFsXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZwbUZvcm1hdHRlcjtcbiJdfQ==
|
|
@@ -1,10 +1,15 @@
|
|
|
1
1
|
import { Context } from "sap/ui/model";
|
|
2
2
|
import { ManagedObject } from "sap/ui/base";
|
|
3
3
|
import { View } from "sap/ui/core/mvc";
|
|
4
|
-
import {
|
|
4
|
+
import { ODataModel } from "sap/ui/model/odata/v4";
|
|
5
5
|
|
|
6
|
-
const customIsEnabledCheck = function(
|
|
7
|
-
|
|
6
|
+
const customIsEnabledCheck = function(
|
|
7
|
+
this: ManagedObject,
|
|
8
|
+
oView: View,
|
|
9
|
+
modulePath: string,
|
|
10
|
+
aSelectedContexts: Context<ODataModel>[]
|
|
11
|
+
): Promise<void> {
|
|
12
|
+
const oExtensionAPI = (oView.getController() as any).getExtensionAPI();
|
|
8
13
|
const parts = modulePath.split(".");
|
|
9
14
|
const methodName = parts.pop() as string;
|
|
10
15
|
const moduleName = parts.join("/");
|