@sapui5/sap.fe.templates 1.101.0 → 1.103.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +1 -1
- package/src/sap/fe/templates/.library +1 -1
- package/src/sap/fe/templates/AnalyticalListPage/chart/FEChartDelegate.js +2 -2
- package/src/sap/fe/templates/AnalyticalListPage/chart/FEChartDelegate.ts +1 -1
- package/src/sap/fe/templates/Feedback.js +18 -18
- package/src/sap/fe/templates/Feedback.ts +12 -12
- package/src/sap/fe/templates/ListReport/ExtensionAPI.js +15 -15
- package/src/sap/fe/templates/ListReport/ExtensionAPI.ts +19 -16
- package/src/sap/fe/templates/ListReport/ListReport.view.xml +107 -58
- package/src/sap/fe/templates/ListReport/ListReportController.controller.js +180 -70
- package/src/sap/fe/templates/ListReport/ListReportController.controller.ts +191 -88
- package/src/sap/fe/templates/ListReport/ListReportTemplating.js +45 -0
- package/src/sap/fe/templates/ListReport/ListReportTemplating.ts +30 -0
- package/src/sap/fe/templates/ListReport/overrides/IntentBasedNavigation.js +1 -1
- package/src/sap/fe/templates/ListReport/overrides/IntentBasedNavigation.ts +2 -2
- package/src/sap/fe/templates/ListReport/overrides/Share.js +9 -7
- package/src/sap/fe/templates/ListReport/overrides/Share.ts +10 -10
- package/src/sap/fe/templates/ListReport/overrides/ViewState.js +13 -6
- package/src/sap/fe/templates/ListReport/overrides/ViewState.ts +17 -11
- package/src/sap/fe/templates/ListReport/view/fragments/MultipleMode.fragment.js +1 -1
- package/src/sap/fe/templates/ListReport/view/fragments/MultipleMode.fragment.ts +1 -1
- package/src/sap/fe/templates/ObjectPage/ExtensionAPI.js +12 -16
- package/src/sap/fe/templates/ObjectPage/ExtensionAPI.ts +17 -20
- package/src/sap/fe/templates/ObjectPage/ObjectPage.view.xml +167 -20
- package/src/sap/fe/templates/ObjectPage/ObjectPageController.controller.js +195 -206
- package/src/sap/fe/templates/ObjectPage/ObjectPageController.controller.ts +187 -229
- package/src/sap/fe/templates/ObjectPage/ObjectPageTemplating.js +861 -0
- package/src/sap/fe/templates/ObjectPage/ObjectPageTemplating.ts +822 -0
- package/src/sap/fe/templates/ObjectPage/controls/SubSectionBlock.js +2 -3
- package/src/sap/fe/templates/ObjectPage/controls/SubSectionBlock.ts +4 -4
- package/src/sap/fe/templates/ObjectPage/designtime/StashableHBox.designtime.js +1 -1
- package/src/sap/fe/templates/ObjectPage/designtime/StashableHBox.designtime.ts +1 -1
- package/src/sap/fe/templates/ObjectPage/designtime/StashableVBox.designtime.js +1 -1
- package/src/sap/fe/templates/ObjectPage/designtime/StashableVBox.designtime.ts +1 -1
- package/src/sap/fe/templates/ObjectPage/handler/DraftHandler.js +103 -0
- package/src/sap/fe/templates/ObjectPage/handler/DraftHandler.ts +97 -0
- package/src/sap/fe/templates/ObjectPage/overrides/IntentBasedNavigation.js +1 -1
- package/src/sap/fe/templates/ObjectPage/overrides/IntentBasedNavigation.ts +5 -5
- package/src/sap/fe/templates/ObjectPage/overrides/InternalRouting.js +1 -1
- package/src/sap/fe/templates/ObjectPage/overrides/InternalRouting.ts +2 -2
- package/src/sap/fe/templates/ObjectPage/overrides/MessageHandler.js +1 -1
- package/src/sap/fe/templates/ObjectPage/overrides/MessageHandler.ts +2 -2
- package/src/sap/fe/templates/ObjectPage/overrides/Paginator.js +1 -1
- package/src/sap/fe/templates/ObjectPage/overrides/Paginator.ts +1 -1
- package/src/sap/fe/templates/ObjectPage/overrides/Share.js +17 -17
- package/src/sap/fe/templates/ObjectPage/overrides/Share.ts +19 -30
- package/src/sap/fe/templates/ObjectPage/overrides/ViewState.js +2 -2
- package/src/sap/fe/templates/ObjectPage/overrides/ViewState.ts +4 -4
- package/src/sap/fe/templates/ObjectPage/view/fragments/Actions.fragment.xml +15 -11
- package/src/sap/fe/templates/ObjectPage/view/fragments/CollaborationDraft.fragment.xml +1 -2
- package/src/sap/fe/templates/ObjectPage/view/fragments/EditableHeaderFacet.fragment.xml +25 -17
- package/src/sap/fe/templates/ObjectPage/view/fragments/FooterContent.fragment.xml +28 -24
- package/src/sap/fe/templates/ObjectPage/view/fragments/FormActionButtons.fragment.xml +15 -16
- package/src/sap/fe/templates/ObjectPage/view/fragments/FormActions.fragment.xml +1 -5
- package/src/sap/fe/templates/ObjectPage/view/fragments/HeaderDataPoint.fragment.xml +1 -2
- package/src/sap/fe/templates/ObjectPage/view/fragments/HeaderDataPointTitle.fragment.xml +1 -3
- package/src/sap/fe/templates/ObjectPage/view/fragments/HeaderFacet.fragment.xml +3 -17
- package/src/sap/fe/templates/ObjectPage/view/fragments/Heading.fragment.xml +16 -17
- package/src/sap/fe/templates/ObjectPage/view/fragments/HeadingTitle.fragment.xml +4 -3
- package/src/sap/fe/templates/ObjectPage/view/fragments/ObjectPageHeaderAddress.fragment.xml +7 -2
- package/src/sap/fe/templates/ObjectPage/view/fragments/ObjectPageHeaderContact.fragment.xml +26 -0
- package/src/sap/fe/templates/ObjectPage/view/fragments/ObjectPageHeaderForm.fragment.xml +4 -4
- package/src/sap/fe/templates/ObjectPage/view/fragments/RelatedApps.fragment.xml +7 -4
- package/src/sap/fe/templates/ObjectPage/view/fragments/Section.fragment.xml +74 -6
- package/src/sap/fe/templates/ObjectPage/view/fragments/SectionContent.fragment.xml +118 -94
- package/src/sap/fe/templates/ObjectPage/view/fragments/SectionContentLazyLoader.fragment.xml +127 -107
- package/src/sap/fe/templates/ObjectPage/view/fragments/SectionFormContent.fragment.xml +1 -0
- package/src/sap/fe/templates/ObjectPage/view/fragments/SectionMoreFormContent.fragment.xml +1 -0
- package/src/sap/fe/templates/ObjectPage/view/fragments/SwitchDraftAndActiveObjectPopOver.fragment.xml +2 -2
- package/src/sap/fe/templates/RootContainer/controller/Fcl.controller.js +102 -57
- package/src/sap/fe/templates/RootContainer/controller/Fcl.controller.ts +96 -61
- package/src/sap/fe/templates/RootContainer/controller/NavContainer.controller.js +3 -4
- package/src/sap/fe/templates/RootContainer/controller/NavContainer.controller.ts +4 -5
- package/src/sap/fe/templates/RootContainer/controller/RootContainerBaseController.js +140 -52
- package/src/sap/fe/templates/RootContainer/controller/RootContainerBaseController.ts +108 -54
- package/src/sap/fe/templates/RootContainer/overrides/EditFlow.js +1 -1
- package/src/sap/fe/templates/RootContainer/overrides/EditFlow.ts +3 -3
- package/src/sap/fe/templates/TableScroller.js +3 -3
- package/src/sap/fe/templates/TableScroller.ts +2 -2
- package/src/sap/fe/templates/controls/MacroChart.fragment.xml +1 -0
- package/src/sap/fe/templates/controls/Table.fragment.xml +4 -4
- package/src/sap/fe/templates/library.js +5 -2
- package/src/sap/fe/templates/library.ts +3 -0
- package/src/sap/fe/templates/messagebundle.properties +6 -18
- package/src/sap/fe/templates/messagebundle_ar.properties +10 -6
- package/src/sap/fe/templates/messagebundle_bg.properties +6 -2
- package/src/sap/fe/templates/messagebundle_ca.properties +10 -6
- package/src/sap/fe/templates/messagebundle_cs.properties +6 -2
- package/src/sap/fe/templates/messagebundle_cy.properties +10 -6
- package/src/sap/fe/templates/messagebundle_da.properties +10 -6
- package/src/sap/fe/templates/messagebundle_de.properties +10 -6
- package/src/sap/fe/templates/messagebundle_el.properties +10 -6
- package/src/sap/fe/templates/messagebundle_en.properties +6 -2
- package/src/sap/fe/templates/messagebundle_en_GB.properties +8 -4
- package/src/sap/fe/templates/messagebundle_en_US_sappsd.properties +13 -5
- package/src/sap/fe/templates/messagebundle_en_US_saprigi.properties +7 -3
- package/src/sap/fe/templates/messagebundle_en_US_saptrc.properties +7 -3
- package/src/sap/fe/templates/messagebundle_es.properties +6 -2
- package/src/sap/fe/templates/messagebundle_es_MX.properties +10 -6
- package/src/sap/fe/templates/messagebundle_et.properties +6 -2
- package/src/sap/fe/templates/messagebundle_fi.properties +10 -6
- package/src/sap/fe/templates/messagebundle_fr.properties +6 -2
- package/src/sap/fe/templates/messagebundle_fr_CA.properties +10 -6
- package/src/sap/fe/templates/messagebundle_hi.properties +10 -6
- package/src/sap/fe/templates/messagebundle_hr.properties +10 -6
- package/src/sap/fe/templates/messagebundle_hu.properties +6 -2
- package/src/sap/fe/templates/messagebundle_id.properties +6 -2
- package/src/sap/fe/templates/messagebundle_it.properties +10 -6
- package/src/sap/fe/templates/messagebundle_iw.properties +10 -6
- package/src/sap/fe/templates/messagebundle_ja.properties +6 -2
- package/src/sap/fe/templates/messagebundle_kk.properties +10 -6
- package/src/sap/fe/templates/messagebundle_ko.properties +6 -2
- package/src/sap/fe/templates/messagebundle_lt.properties +6 -2
- package/src/sap/fe/templates/messagebundle_lv.properties +6 -2
- package/src/sap/fe/templates/messagebundle_ms.properties +10 -6
- package/src/sap/fe/templates/messagebundle_nl.properties +6 -2
- package/src/sap/fe/templates/messagebundle_no.properties +10 -6
- package/src/sap/fe/templates/messagebundle_pl.properties +10 -6
- package/src/sap/fe/templates/messagebundle_pt.properties +6 -2
- package/src/sap/fe/templates/messagebundle_pt_PT.properties +6 -2
- package/src/sap/fe/templates/messagebundle_ro.properties +10 -6
- package/src/sap/fe/templates/messagebundle_ru.properties +10 -6
- package/src/sap/fe/templates/messagebundle_sh.properties +6 -2
- package/src/sap/fe/templates/messagebundle_sk.properties +6 -2
- package/src/sap/fe/templates/messagebundle_sl.properties +10 -6
- package/src/sap/fe/templates/messagebundle_sv.properties +6 -2
- package/src/sap/fe/templates/messagebundle_th.properties +10 -6
- package/src/sap/fe/templates/messagebundle_tr.properties +6 -2
- package/src/sap/fe/templates/messagebundle_uk.properties +6 -2
- package/src/sap/fe/templates/messagebundle_vi.properties +10 -6
- package/src/sap/fe/templates/messagebundle_zh_CN.properties +10 -6
- package/src/sap/fe/templates/messagebundle_zh_TW.properties +10 -6
- package/src/sap/fe/templates/ObjectPage/AnnotationHelper.js +0 -482
- package/src/sap/fe/templates/ObjectPage/AnnotationHelper.ts +0 -511
- package/src/sap/fe/templates/ObjectPage/templating/ObjectPageTemplating.js +0 -120
- package/src/sap/fe/templates/ObjectPage/templating/ObjectPageTemplating.ts +0 -138
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
sap.ui.define(["sap/base/Log", "sap/fe/core/helpers/ModelHelper", "sap/fe/core/helpers/SemanticKeyHelper", "sap/ui/core/routing/HashChanger", "sap/ui/model/Filter", "sap/ui/model/FilterOperator"], function (Log, ModelHelper, SemanticKeyHelper, HashChanger, Filter, FilterOperator) {
|
|
6
6
|
"use strict";
|
|
7
7
|
|
|
8
|
-
var
|
|
8
|
+
var bGlobalIsStickySupported;
|
|
9
9
|
|
|
10
10
|
function createFilterToFetchActiveContext(mKeyValues, bIsActiveEntityDefined) {
|
|
11
11
|
var aKeys = Object.keys(mKeyValues);
|
|
@@ -25,12 +25,11 @@ sap.ui.define(["sap/base/Log", "sap/fe/core/helpers/ModelHelper", "sap/fe/core/h
|
|
|
25
25
|
aFilters.push(oActiveFilter);
|
|
26
26
|
}
|
|
27
27
|
|
|
28
|
-
|
|
29
|
-
return oCombinedFilter;
|
|
28
|
+
return new Filter(aFilters, true);
|
|
30
29
|
}
|
|
31
30
|
|
|
32
31
|
function getActiveContextPath(oController, sPageEntityName, oFilter) {
|
|
33
|
-
var oListBinding = oController.getView().getBindingContext().getModel().bindList("/"
|
|
32
|
+
var oListBinding = oController.getView().getBindingContext().getModel().bindList("/".concat(sPageEntityName), undefined, undefined, oFilter, {
|
|
34
33
|
"$$groupId": "$auto.Heroes"
|
|
35
34
|
});
|
|
36
35
|
return oListBinding.requestContexts(0, 2).then(function (oContexts) {
|
|
@@ -76,7 +75,7 @@ sap.ui.define(["sap/base/Log", "sap/fe/core/helpers/ModelHelper", "sap/fe/core/h
|
|
|
76
75
|
|
|
77
76
|
if (sKeyAssignment.indexOf("=") === -1) {
|
|
78
77
|
var oMetaModel = oContext.getModel().getMetaModel();
|
|
79
|
-
var aTechnicalKeys = oMetaModel.getObject("/"
|
|
78
|
+
var aTechnicalKeys = oMetaModel.getObject("/".concat(aPageHashArray.join("/"), "/$Type/$Key"));
|
|
80
79
|
sKeyValue = aParts[0];
|
|
81
80
|
sKey = aTechnicalKeys[0];
|
|
82
81
|
oPageMap[sPageHash.split("(")[0]]["bIsActiveEntityDefined"] = false;
|
|
@@ -101,7 +100,7 @@ sap.ui.define(["sap/base/Log", "sap/fe/core/helpers/ModelHelper", "sap/fe/core/h
|
|
|
101
100
|
|
|
102
101
|
if (sPageEntitySetName) {
|
|
103
102
|
oPageInfo.pageEntityName = oPageEntitySet.$NavigationPropertyBinding[sNavigationPath];
|
|
104
|
-
oPageEntitySet = oContext.getModel().getMetaModel().getObject("/"
|
|
103
|
+
oPageEntitySet = oContext.getModel().getMetaModel().getObject("/".concat(sPageEntitySetName)) || oEntitySet;
|
|
105
104
|
} else {
|
|
106
105
|
oPageInfo.pageEntityName = sNavigationPath;
|
|
107
106
|
}
|
|
@@ -118,9 +117,10 @@ sap.ui.define(["sap/base/Log", "sap/fe/core/helpers/ModelHelper", "sap/fe/core/h
|
|
|
118
117
|
}
|
|
119
118
|
/**
|
|
120
119
|
* Method to fetch active context path's.
|
|
121
|
-
*
|
|
120
|
+
*
|
|
121
|
+
* @param oContext The Page Context
|
|
122
122
|
* @param oController
|
|
123
|
-
* @returns
|
|
123
|
+
* @returns Promise which is resolved once the active context's are fetched
|
|
124
124
|
*/
|
|
125
125
|
|
|
126
126
|
|
|
@@ -132,7 +132,7 @@ sap.ui.define(["sap/base/Log", "sap/fe/core/helpers/ModelHelper", "sap/fe/core/h
|
|
|
132
132
|
sRootEntityName = sRootEntityName.substring(1);
|
|
133
133
|
}
|
|
134
134
|
|
|
135
|
-
var oEntitySet = oContext.getModel().getMetaModel().getObject("/"
|
|
135
|
+
var oEntitySet = oContext.getModel().getMetaModel().getObject("/".concat(sRootEntityName));
|
|
136
136
|
var oPageContext = oContext;
|
|
137
137
|
var aActiveContextpromises = getActiveContextInstances(oContext, oController, oEntitySet);
|
|
138
138
|
|
|
@@ -167,7 +167,7 @@ sap.ui.define(["sap/base/Log", "sap/fe/core/helpers/ModelHelper", "sap/fe/core/h
|
|
|
167
167
|
|
|
168
168
|
if (sNavigatioProperty) {
|
|
169
169
|
aActiveContextPaths.push(sActiveContextPath.replace(sEntitySetName, sNavigatioProperty));
|
|
170
|
-
oPageEntitySet = oPageContext.getModel().getMetaModel().getObject("/"
|
|
170
|
+
oPageEntitySet = oPageContext.getModel().getMetaModel().getObject("/".concat(sEntitySetName)) || oEntitySet;
|
|
171
171
|
} else {
|
|
172
172
|
aActiveContextPaths.push(sActiveContextPath);
|
|
173
173
|
}
|
|
@@ -189,7 +189,7 @@ sap.ui.define(["sap/base/Log", "sap/fe/core/helpers/ModelHelper", "sap/fe/core/h
|
|
|
189
189
|
if (oContext) {
|
|
190
190
|
var oModel = oContext.getModel();
|
|
191
191
|
var oMetaModel = oModel.getMetaModel();
|
|
192
|
-
|
|
192
|
+
bGlobalIsStickySupported = ModelHelper.isStickySessionSupported(oMetaModel);
|
|
193
193
|
var sRootEntityName = sCurrentHashNoParams && sCurrentHashNoParams.substr(0, sCurrentHashNoParams.indexOf("("));
|
|
194
194
|
|
|
195
195
|
if (sRootEntityName.indexOf("/") === 0) {
|
|
@@ -204,7 +204,7 @@ sap.ui.define(["sap/base/Log", "sap/fe/core/helpers/ModelHelper", "sap/fe/core/h
|
|
|
204
204
|
|
|
205
205
|
var oViewData = oController.getView().getViewData();
|
|
206
206
|
|
|
207
|
-
if (oContext && !
|
|
207
|
+
if (oContext && !bGlobalIsStickySupported && (oViewData.viewLevel === 1 && !aSemanticKeys || oViewData.viewLevel >= 2)) {
|
|
208
208
|
oPromise = getActiveContextPaths(oContext, oController);
|
|
209
209
|
return oPromise;
|
|
210
210
|
} else {
|
|
@@ -284,17 +284,17 @@ sap.ui.define(["sap/base/Log", "sap/fe/core/helpers/ModelHelper", "sap/fe/core/h
|
|
|
284
284
|
return fetchActiveContextPaths(oContext, this.base.getView().getController()).then(function (aActiveContextPaths) {
|
|
285
285
|
var oPageTitleInfo = _this.base.getView().getController()._getPageTitleInformation();
|
|
286
286
|
|
|
287
|
-
return Promise.all([getJamUrl(bIsEditable,
|
|
287
|
+
return Promise.all([getJamUrl(bIsEditable, bGlobalIsStickySupported, aActiveContextPaths), getShareUrl(bIsEditable, bGlobalIsStickySupported, aActiveContextPaths), getShareEmailUrl()]).then(function (oData) {
|
|
288
288
|
var sTitle = oPageTitleInfo.title;
|
|
289
|
-
var sObjectSubtitle = oPageTitleInfo.subtitle.toString();
|
|
289
|
+
var sObjectSubtitle = oPageTitleInfo.subtitle ? oPageTitleInfo.subtitle.toString() : "";
|
|
290
290
|
|
|
291
291
|
if (sObjectSubtitle) {
|
|
292
|
-
sTitle = sTitle
|
|
292
|
+
sTitle = "".concat(sTitle, " - ").concat(sObjectSubtitle);
|
|
293
293
|
}
|
|
294
294
|
|
|
295
295
|
oShareMetadata.tile = {
|
|
296
296
|
title: oPageTitleInfo.title,
|
|
297
|
-
subtitle:
|
|
297
|
+
subtitle: sObjectSubtitle
|
|
298
298
|
};
|
|
299
299
|
oShareMetadata.email.title = sTitle;
|
|
300
300
|
oShareMetadata.title = sTitle;
|
|
@@ -310,4 +310,4 @@ sap.ui.define(["sap/base/Log", "sap/fe/core/helpers/ModelHelper", "sap/fe/core/h
|
|
|
310
310
|
};
|
|
311
311
|
return ShareExtensionOverride;
|
|
312
312
|
}, false);
|
|
313
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIlNoYXJlLnRzIl0sIm5hbWVzIjpbImJJc1N0aWNreVN1cHBvcnRlZCIsImNyZWF0ZUZpbHRlclRvRmV0Y2hBY3RpdmVDb250ZXh0IiwibUtleVZhbHVlcyIsImJJc0FjdGl2ZUVudGl0eURlZmluZWQiLCJhS2V5cyIsIk9iamVjdCIsImtleXMiLCJhRmlsdGVycyIsIm1hcCIsInNLZXkiLCJzVmFsdWUiLCJ1bmRlZmluZWQiLCJGaWx0ZXIiLCJGaWx0ZXJPcGVyYXRvciIsIkVRIiwib0FjdGl2ZUZpbHRlciIsImZpbHRlcnMiLCJhbmQiLCJwdXNoIiwib0NvbWJpbmVkRmlsdGVyIiwiZ2V0QWN0aXZlQ29udGV4dFBhdGgiLCJvQ29udHJvbGxlciIsInNQYWdlRW50aXR5TmFtZSIsIm9GaWx0ZXIiLCJvTGlzdEJpbmRpbmciLCJnZXRWaWV3IiwiZ2V0QmluZGluZ0NvbnRleHQiLCJnZXRNb2RlbCIsImJpbmRMaXN0IiwicmVxdWVzdENvbnRleHRzIiwidGhlbiIsIm9Db250ZXh0cyIsImxlbmd0aCIsImdldFBhdGgiLCJnZXRBY3RpdmVDb250ZXh0SW5zdGFuY2VzIiwib0NvbnRleHQiLCJvRW50aXR5U2V0IiwiYUFjdGl2ZUNvbnRleHRwcm9taXNlcyIsImFQYWdlcyIsInNNZXRhUGF0aCIsImdldE1ldGFNb2RlbCIsImdldE1ldGFQYXRoIiwiaW5kZXhPZiIsInN1YnN0cmluZyIsImFNZXRhUGF0aEFycmF5Iiwic3BsaXQiLCJzQ3VycmVudEhhc2hOb1BhcmFtcyIsIkhhc2hDaGFuZ2VyIiwiZ2V0SW5zdGFuY2UiLCJnZXRIYXNoIiwiYUN1cnJlbnRIYXNoQXJyYXkiLCJvUGFnZU1hcCIsImFQYWdlSGFzaEFycmF5IiwiZm9yRWFjaCIsInNQYWdlSGFzaCIsImFLZXlWYWx1ZXMiLCJzUGFnZUhhc2hOYW1lIiwiaSIsInNLZXlBc3NpZ25tZW50IiwiYVBhcnRzIiwic0tleVZhbHVlIiwib01ldGFNb2RlbCIsImFUZWNobmljYWxLZXlzIiwiZ2V0T2JqZWN0Iiwiam9pbiIsImxhc3RJbmRleE9mIiwiZGVjb2RlVVJJQ29tcG9uZW50Iiwib1BhZ2VFbnRpdHlTZXQiLCJzTmF2aWdhdGlvblBhdGgiLCJvUGFnZUluZm8iLCJzUGFnZUVudGl0eVNldE5hbWUiLCIkTmF2aWdhdGlvblByb3BlcnR5QmluZGluZyIsInBhZ2VFbnRpdHlOYW1lIiwiZ2V0QWN0aXZlQ29udGV4dFBhdGhzIiwic1Jvb3RFbnRpdHlOYW1lIiwic3Vic3RyIiwib1BhZ2VDb250ZXh0IiwiUHJvbWlzZSIsImFsbCIsImFEYXRhIiwiYUFjdGl2ZUNvbnRleHRQYXRocyIsInNBY3RpdmVDb250ZXh0UGF0aCIsInNOYXZpZ2F0aW9Qcm9wZXJ0eSIsInNFbnRpdHlTZXROYW1lIiwidmFsdWVzIiwicmVwbGFjZSIsImNhdGNoIiwib0Vycm9yIiwiTG9nIiwiaW5mbyIsInJlc29sdmUiLCJmZXRjaEFjdGl2ZUNvbnRleHRQYXRocyIsIm9Qcm9taXNlIiwiYVNlbWFudGljS2V5cyIsIm9Nb2RlbCIsIk1vZGVsSGVscGVyIiwiaXNTdGlja3lTZXNzaW9uU3VwcG9ydGVkIiwiU2VtYW50aWNLZXlIZWxwZXIiLCJnZXRTZW1hbnRpY0tleXMiLCJvVmlld0RhdGEiLCJnZXRWaWV3RGF0YSIsInZpZXdMZXZlbCIsImdldFNoYXJlVXJsIiwiYklzRWRpdGFibGUiLCJzU2hhcmVVcmwiLCJzSGFzaCIsInNCYXNlUGF0aCIsImhyZWZGb3JBcHBTcGVjaWZpY0hhc2giLCJ3aW5kb3ciLCJsb2NhdGlvbiIsImhhc2giLCJnZXRTaGFyZUVtYWlsVXJsIiwib1VTaGVsbENvbnRhaW5lciIsInNhcCIsInVzaGVsbCIsIkNvbnRhaW5lciIsImdldEZMUFVybEFzeW5jIiwic0ZMUFVybCIsInNFcnJvciIsImVycm9yIiwiZG9jdW1lbnQiLCJVUkwiLCJnZXRKYW1VcmwiLCJiSXNFZGl0TW9kZSIsInNKYW1VcmwiLCJydW5uaW5nSW5JZnJhbWUiLCJnZXRGTFBVcmwiLCJzVXJsIiwib3JpZ2luIiwicGF0aG5hbWUiLCJTaGFyZUV4dGVuc2lvbk92ZXJyaWRlIiwiYWRhcHRTaGFyZU1ldGFkYXRhIiwib1NoYXJlTWV0YWRhdGEiLCJiYXNlIiwib1VJTW9kZWwiLCJnZXRQcm9wZXJ0eSIsImdldENvbnRyb2xsZXIiLCJvUGFnZVRpdGxlSW5mbyIsIl9nZXRQYWdlVGl0bGVJbmZvcm1hdGlvbiIsIm9EYXRhIiwic1RpdGxlIiwidGl0bGUiLCJzT2JqZWN0U3VidGl0bGUiLCJzdWJ0aXRsZSIsInRvU3RyaW5nIiwidGlsZSIsImVtYWlsIiwiamFtIiwidXJsIl0sIm1hcHBpbmdzIjoiO0FBQUE7QUFDQTtBQUNBOzs7O0FBT0EsTUFBSUEsa0JBQUo7O0FBRUEsV0FBU0MsZ0NBQVQsQ0FBMENDLFVBQTFDLEVBQTJEQyxzQkFBM0QsRUFBd0Y7QUFDdkYsUUFBTUMsS0FBSyxHQUFHQyxNQUFNLENBQUNDLElBQVAsQ0FBWUosVUFBWixDQUFkO0FBRUEsUUFBTUssUUFBUSxHQUFHSCxLQUFLLENBQUNJLEdBQU4sQ0FBVSxVQUFVQyxJQUFWLEVBQXdCO0FBQ2xELFVBQU1DLE1BQU0sR0FBR1IsVUFBVSxDQUFDTyxJQUFELENBQXpCOztBQUNBLFVBQUlDLE1BQU0sS0FBS0MsU0FBZixFQUEwQjtBQUN6QixlQUFPLElBQUlDLE1BQUosQ0FBV0gsSUFBWCxFQUFpQkksY0FBYyxDQUFDQyxFQUFoQyxFQUFvQ0osTUFBcEMsQ0FBUDtBQUNBO0FBQ0QsS0FMZ0IsQ0FBakI7O0FBT0EsUUFBSVAsc0JBQUosRUFBNEI7QUFDM0IsVUFBTVksYUFBYSxHQUFHLElBQUlILE1BQUosQ0FBVztBQUNoQ0ksUUFBQUEsT0FBTyxFQUFFLENBQUMsSUFBSUosTUFBSixDQUFXLDhCQUFYLEVBQTJDQyxjQUFjLENBQUNDLEVBQTFELEVBQThELElBQTlELENBQUQsQ0FEdUI7QUFFaENHLFFBQUFBLEdBQUcsRUFBRTtBQUYyQixPQUFYLENBQXRCO0FBS0FWLE1BQUFBLFFBQVEsQ0FBQ1csSUFBVCxDQUFjSCxhQUFkO0FBQ0E7O0FBRUQsUUFBTUksZUFBZSxHQUFH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Q0EsY0FBSUYsZUFBSixFQUFxQjtBQUNwQkYsWUFBQUEsTUFBTSxHQUFHQSxNQUFNLEdBQUcsS0FBVCxHQUFpQkUsZUFBMUI7QUFDQTs7QUFDRFYsVUFBQUEsY0FBYyxDQUFDYSxJQUFmLEdBQXNCO0FBQ3JCSixZQUFBQSxLQUFLLEVBQUVKLGNBQWMsQ0FBQ0ksS0FERDtBQUVyQkUsWUFBQUEsUUFBUSxFQUFFTixjQUFjLENBQUNNLFFBQWYsQ0FBd0JDLFFBQXhCO0FBRlcsV0FBdEI7QUFJQVosVUFBQUEsY0FBYyxDQUFDYyxLQUFmLENBQXFCTCxLQUFyQixHQUE2QkQsTUFBN0I7QUFDQVIsVUFBQUEsY0FBYyxDQUFDUyxLQUFmLEdBQXVCRCxNQUF2QjtBQUNBUixVQUFBQSxjQUFjLENBQUNlLEdBQWYsQ0FBbUJDLEdBQW5CLEdBQXlCVCxLQUFLLENBQUMsQ0FBRCxDQUE5QjtBQUNBUCxVQUFBQSxjQUFjLENBQUNnQixHQUFmLEdBQXFCVCxLQUFLLENBQUMsQ0FBRCxDQUExQjtBQUNBUCxVQUFBQSxjQUFjLENBQUNjLEtBQWYsQ0FBcUJFLEdBQXJCLEdBQTJCVCxLQUFLLENBQUMsQ0FBRCxDQUFoQztBQUVBLGlCQUFPUCxjQUFQO0FBQ0EsU0F0QkssRUF1Qkw5QyxLQXZCSyxDQXVCQyxVQUFVaUMsS0FBVixFQUFzQjtBQUM1Qi9CLFVBQUFBLEdBQUcsQ0FBQytCLEtBQUosQ0FBVUEsS0FBVjtBQUNBLFNBekJLLENBQVA7QUEwQkEsT0E3Qk0sQ0FBUDtBQThCQTtBQW5DNkIsR0FBL0I7U0FzQ2VXLHNCIiwic291cmNlUm9vdCI6Ii4iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgTG9nIGZyb20gXCJzYXAvYmFzZS9Mb2dcIjtcbmltcG9ydCBTaGFyZSBmcm9tIFwic2FwL2ZlL2NvcmUvY29udHJvbGxlcmV4dGVuc2lvbnMvU2hhcmVcIjtcbmltcG9ydCBNb2RlbEhlbHBlciBmcm9tIFwic2FwL2ZlL2NvcmUvaGVscGVycy9Nb2RlbEhlbHBlclwiO1xuaW1wb3J0IFNlbWFudGljS2V5SGVscGVyIGZyb20gXCJzYXAvZmUvY29yZS9oZWxwZXJzL1NlbWFudGljS2V5SGVscGVyXCI7XG5pbXBvcnQgT2JqZWN0UGFnZUNvbnRyb2xsZXIgZnJvbSBcInNhcC9mZS90ZW1wbGF0ZXMvT2JqZWN0UGFnZS9PYmplY3RQYWdlQ29udHJvbGxlci5jb250cm9sbGVyXCI7XG5pbXBvcnQgSGFzaENoYW5nZXIgZnJvbSBcInNhcC91aS9jb3JlL3JvdXRpbmcvSGFzaENoYW5nZXJcIjtcbmltcG9ydCBGaWx0ZXIgZnJvbSBcInNhcC91aS9tb2RlbC9GaWx0ZXJcIjtcbmltcG9ydCBGaWx0ZXJPcGVyYXRvciBmcm9tIFwic2FwL3VpL21vZGVsL0ZpbHRlck9wZXJhdG9yXCI7XG5cbmxldCBiSXNTdGlja3lTdXBwb3J0ZWQ6IGJvb2xlYW47XG5cbmZ1bmN0aW9uIGNyZWF0ZUZpbHRlclRvRmV0Y2hBY3RpdmVDb250ZXh0KG1LZXlWYWx1ZXM6IGFueSwgYklzQWN0aXZlRW50aXR5RGVmaW5lZDogYW55KSB7XG5cdGNvbnN0IGFLZXlzID0gT2JqZWN0LmtleXMobUtleVZhbHVlcyk7XG5cblx0Y29uc3QgYUZpbHRlcnMgPSBhS2V5cy5tYXAoZnVuY3Rpb24gKHNLZXk6IHN0cmluZykge1xuXHRcdGNvbnN0IHNWYWx1ZSA9IG1LZXlWYWx1ZXNbc0tleV07XG5cdFx0aWYgKHNWYWx1ZSAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0XHRyZXR1cm4gbmV3IEZpbHRlcihzS2V5LCBGaWx0ZXJPcGVyYXRvci5FUSwgc1ZhbHVlKTtcblx0XHR9XG5cdH0pO1xuXG5cdGlmIChiSXNBY3RpdmVFbnRpdHlEZWZpbmVkKSB7XG5cdFx0Y29uc3Qgb0FjdGl2ZUZpbHRlciA9IG5ldyBGaWx0ZXIoe1xuXHRcdFx0ZmlsdGVyczogW25ldyBGaWx0ZXIoXCJTaWJsaW5nRW50aXR5L0lzQWN0aXZlRW50aXR5XCIsIEZpbHRlck9wZXJhdG9yLkVRLCB0cnVlKV0sXG5cdFx0XHRhbmQ6IGZhbHNlXG5cdFx0fSk7XG5cblx0XHRhRmlsdGVycy5wdXNoKG9BY3RpdmVGaWx0ZXIpO1xuXHR9XG5cblx0Y29uc3Qgb0NvbWJpbmVkRmlsdGVyID0gbmV3IEZpbHRlcihhRmlsdGVycyBhcyBhbnksIHRydWUpO1xuXHRyZXR1cm4gb0NvbWJpbmVkRmlsdGVyO1xufVxuZnVuY3Rpb24gZ2V0QWN0aXZlQ29udGV4dFBhdGgob0NvbnRyb2xsZXI6IGFueSwgc1BhZ2VFbnRpdHlOYW1lOiBhbnksIG9GaWx0ZXI6IGFueSkge1xuXHRjb25zdCBvTGlzdEJpbmRpbmcgPSBvQ29udHJvbGxlclxuXHRcdC5nZXRWaWV3KClcblx0XHQuZ2V0QmluZGluZ0NvbnRleHQoKVxuXHRcdC5nZXRNb2RlbCgpXG5cdFx0LmJpbmRMaXN0KFwiL1wiICsgc1BhZ2VFbnRpdHlOYW1lLCB1bmRlZmluZWQsIHVuZGVmaW5lZCwgb0ZpbHRlciwgeyBcIiQkZ3JvdXBJZFwiOiBcIiRhdXRvLkhlcm9lc1wiIH0pO1xuXHRyZXR1cm4gb0xpc3RCaW5kaW5nLnJlcXVlc3RDb250ZXh0cygwLCAyKS50aGVuKGZ1bmN0aW9uIChvQ29udGV4dHM6IGFueSkge1xuXHRcdGlmIChvQ29udGV4dHMgJiYgb0NvbnRleHRzLmxlbmd0aCkge1xuXHRcdFx0cmV0dXJuIG9Db250ZXh0c1swXS5nZXRQYXRoKCk7XG5cdFx0fVxuXHR9KTtcbn1cbmZ1bmN0aW9uIGdldEFjdGl2ZUNvbnRleHRJbnN0YW5jZXMob0NvbnRleHQ6IGFueSwgb0NvbnRyb2xsZXI6IGFueSwgb0VudGl0eVNldDogYW55KSB7XG5cdGNvbnN0IGFBY3RpdmVDb250ZXh0cHJvbWlzZXM6IGFueVtdID0gW107XG5cdGNvbnN0IGFQYWdlczogYW55W10gPSBbXTtcblx0bGV0IHNNZXRhUGF0aCA9IG9Db250ZXh0LmdldE1vZGVsKCkuZ2V0TWV0YU1vZGVsKCkuZ2V0TWV0YVBhdGgob0NvbnRleHQuZ2V0UGF0aCgpKTtcblx0aWYgKHNNZXRhUGF0aC5pbmRleE9mKFwiL1wiKSA9PT0gMCkge1xuXHRcdHNNZXRhUGF0aCA9IHNNZXRhUGF0aC5zdWJzdHJpbmcoMSk7XG5cdH1cblx0Y29uc3QgYU1ldGFQYXRoQXJyYXkgPSBzTWV0YVBhdGguc3BsaXQoXCIvXCIpO1xuXHRjb25zdCBzQ3VycmVudEhhc2hOb1BhcmFtcyA9IEhhc2hDaGFuZ2VyLmdldEluc3RhbmNlKCkuZ2V0SGFzaCgpLnNwbGl0KFwiP1wiKVswXTtcblx0Y29uc3QgYUN1cnJlbnRIYXNoQXJyYXkgPSBzQ3VycmVudEhhc2hOb1BhcmFtcy5zcGxpdChcIi9cIik7XG5cblx0Ly8gb1BhZ2VNYXAgLSBjcmVhdGluZyBhbiBvYmplY3QgdGhhdCBjb250YWlucyBtYXAgb2YgbWV0YXBhdGggbmFtZSBhbmQgaXQncyB0ZWNobmljYWwgZGV0YWlsc1xuXHQvLyB3aGljaCBpcyByZXF1aXJlZCB0byBjcmVhdGUgYSBmaWx0ZXIgdG8gZmV0Y2ggdGhlIHJlbGF2YW50L2NvcnJlY3QgYWN0aXZlIGNvbnRleHRcblx0Ly8gRXhhbXBsZToge1NhbGVzT3JkZXJNYW5hZ2U6e3RlY2huaWNhbElEOnRlY2huaWNhbElEVmFsdWV9LCBfSXRlbTp7dGVjaG5pY2FsSUQ6dGVjaG5pY2FsSURWYWx1ZX19IGV0Yy4sXG5cdGNvbnN0IG9QYWdlTWFwOiBhbnkgPSB7fTtcblx0Y29uc3QgYVBhZ2VIYXNoQXJyYXk6IGFueVtdID0gW107XG5cdGFDdXJyZW50SGFzaEFycmF5LmZvckVhY2goZnVuY3Rpb24gKHNQYWdlSGFzaDogYW55KSB7XG5cdFx0Y29uc3QgYUtleVZhbHVlcyA9IHNQYWdlSGFzaC5zdWJzdHJpbmcoc1BhZ2VIYXNoLmluZGV4T2YoXCIoXCIpICsgMSwgc1BhZ2VIYXNoLmxlbmd0aCAtIDEpLnNwbGl0KFwiLFwiKTtcblx0XHRjb25zdCBtS2V5VmFsdWVzOiBhbnkgPSB7fTtcblx0XHRjb25zdCBzUGFnZUhhc2hOYW1lID0gc1BhZ2VIYXNoLnNwbGl0KFwiKFwiKVswXTtcblx0XHRvUGFnZU1hcFtzUGFnZUhhc2hOYW1lXSA9IHt9O1xuXHRcdGFQYWdlSGFzaEFycmF5LnB1c2goc1BhZ2VIYXNoTmFtZSk7XG5cdFx0b1BhZ2VNYXBbc1BhZ2VIYXNoTmFtZV1bXCJiSXNBY3RpdmVFbnRpdHlEZWZpbmVkXCJdID0gdHJ1ZTtcblx0XHRmb3IgKGxldCBpID0gMDsgaSA8IGFLZXlWYWx1ZXMubGVuZ3RoOyBpKyspIHtcblx0XHRcdGNvbnN0IHNLZXlBc3NpZ25tZW50ID0gYUtleVZhbHVlc1tpXTtcblx0XHRcdGNvbnN0IGFQYXJ0cyA9IHNLZXlBc3NpZ25tZW50LnNwbGl0KFwiPVwiKTtcblx0XHRcdGxldCBzS2V5VmFsdWUgPSBhUGFydHNbMV07XG5cdFx0XHRsZXQgc0tleSA9IGFQYXJ0c1swXTtcblx0XHRcdC8vIEluIGNhc2UgaWYgb25seSBvbmUgdGVjaG5pY2FsIGtleSBpcyBkZWZpbmVkIHRoZW4gdGhlIHVybCBqdXN0IGNvbnRhaW5zIHRoZSB0ZWNobmljYWxJRFZhbHVlIGJ1dCBub3QgdGhlIHRlY2huaWNhbElEXG5cdFx0XHQvLyBFeGFtcGxlOiBTYWxlc09yZGVyTWFuYWdlKElEPTExMTExMTI5LWFhYWEtYmJiYi1jY2NjLWRkZGRlZWVlZmZmZixJc0FjdGl2ZUVudGl0eT1mYWxzZSkvX0l0ZW0oMTExMTExMjktYWFhYS1iYmJiLWNjY2MtZGRkZGVlZWVmZmZmKVxuXHRcdFx0Ly8gSW4gYWJvdmUgZXhhbXBsZSBTYWxlc09yZGVySXRlbSBoYXMgb25seSBvbmUgdGVjaG5pY2FsIGtleSBkZWZpbmVkLCBoZW5jZSB0ZWNobmljYWxJRCBpbmZvIGlzIG5vdCBwcmVzZW50IGluIHRoZSB1cmxcblx0XHRcdC8vIEhlbmNlIGluIHN1Y2ggY2FzZXMgd2UgZ2V0IHRlY2huaWNhbCBrZXkgYW5kIHVzZSB0aGVtIHRvIGZldGNoIGFjdGl2ZSBjb250ZXh0XG5cdFx0XHRpZiAoc0tleUFzc2lnbm1lbnQuaW5kZXhPZihcIj1cIikgPT09IC0xKSB7XG5cdFx0XHRcdGNvbnN0IG9NZXRhTW9kZWwgPSBvQ29udGV4dC5nZXRNb2RlbCgpLmdldE1ldGFNb2RlbCgpO1xuXHRcdFx0XHRjb25zdCBhVGVjaG5pY2FsS2V5cyA9IG9NZXRhTW9kZWwuZ2V0T2JqZWN0KFwiL1wiICsgYVBhZ2VIYXNoQXJyYXkuam9pbihcIi9cIikgKyBcIi8kVHlwZS8kS2V5XCIpO1xuXHRcdFx0XHRzS2V5VmFsdWUgPSBhUGFydHNbMF07XG5cdFx0XHRcdHNLZXkgPSBhVGVjaG5pY2FsS2V5c1swXTtcblx0XHRcdFx0b1BhZ2VNYXBbc1BhZ2VIYXNoLnNwbGl0KFwiKFwiKVswXV1bXCJiSXNBY3RpdmVFbnRpdHlEZWZpbmVkXCJdID0gZmFsc2U7XG5cdFx0XHR9XG5cblx0XHRcdGlmIChzS2V5ICE9PSBcIklzQWN0aXZlRW50aXR5XCIpIHtcblx0XHRcdFx0aWYgKHNLZXlWYWx1ZS5pbmRleE9mKFwiJ1wiKSA9PT0gMCAmJiBzS2V5VmFsdWUubGFzdEluZGV4T2YoXCInXCIpID09PSBzS2V5VmFsdWUubGVuZ3RoIC0gMSkge1xuXHRcdFx0XHRcdC8vIFJlbW92ZSB0aGUgcXVvdGVzIGZyb20gdGhlIHZhbHVlIGFuZCBkZWNvZGUgc3BlY2lhbCBjaGFyc1xuXHRcdFx0XHRcdHNLZXlWYWx1ZSA9IGRlY29kZVVSSUNvbXBvbmVudChzS2V5VmFsdWUuc3Vic3RyaW5nKDEsIHNLZXlWYWx1ZS5sZW5ndGggLSAxKSk7XG5cdFx0XHRcdH1cblx0XHRcdFx0bUtleVZhbHVlc1tzS2V5XSA9IHNLZXlWYWx1ZTtcblx0XHRcdH1cblx0XHR9XG5cdFx0b1BhZ2VNYXBbc1BhZ2VIYXNoTmFtZV0ubUtleVZhbHVlcyA9IG1LZXlWYWx1ZXM7XG5cdH0pO1xuXG5cdGxldCBvUGFnZUVudGl0eVNldCA9IG9FbnRpdHlTZXQ7XG5cdGFNZXRhUGF0aEFycmF5LmZvckVhY2goZnVuY3Rpb24gKHNOYXZpZ2F0aW9uUGF0aDogYW55KSB7XG5cdFx0Y29uc3Qgb1BhZ2VJbmZvOiBhbnkgPSB7fTtcblx0XHRjb25zdCBzUGFnZUVudGl0eVNldE5hbWUgPSBvUGFnZUVudGl0eVNldC4kTmF2aWdhdGlvblByb3BlcnR5QmluZGluZyAmJiBvUGFnZUVudGl0eVNldC4kTmF2aWdhdGlvblByb3BlcnR5QmluZGluZ1tzTmF2aWdhdGlvblBhdGhdO1xuXHRcdGlmIChzUGFnZUVudGl0eVNldE5hbWUpIHtcblx0XHRcdG9QYWdlSW5mby5wYWdlRW50aXR5TmFtZSA9IG9QYWdlRW50aXR5U2V0LiROYXZpZ2F0aW9uUHJvcGVydHlCaW5kaW5nW3NOYXZpZ2F0aW9uUGF0aF07XG5cdFx0XHRvUGFnZUVudGl0eVNldCA9XG5cdFx0XHRcdG9Db250ZXh0XG5cdFx0XHRcdFx0LmdldE1vZGVsKClcblx0XHRcdFx0XHQuZ2V0TWV0YU1vZGVsKClcblx0XHRcdFx0XHQuZ2V0T2JqZWN0KFwiL1wiICsgc1BhZ2VFbnRpdHlTZXROYW1lKSB8fCBvRW50aXR5U2V0O1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRvUGFnZUluZm8ucGFnZUVudGl0eU5hbWUgPSBzTmF2aWdhdGlvblBhdGg7XG5cdFx0fVxuXHRcdG9QYWdlSW5mby5tS2V5VmFsdWVzID0gb1BhZ2VNYXBbc05hdmlnYXRpb25QYXRoXS5tS2V5VmFsdWVzO1xuXHRcdG9QYWdlSW5mby5iSXNBY3RpdmVFbnRpdHlEZWZpbmVkID0gb1BhZ2VNYXBbc05hdmlnYXRpb25QYXRoXS5iSXNBY3RpdmVFbnRpdHlEZWZpbmVkO1xuXHRcdGFQYWdlcy5wdXNoKG9QYWdlSW5mbyk7XG5cdH0pO1xuXG5cdGFQYWdlcy5mb3JFYWNoKGZ1bmN0aW9uIChvUGFnZUluZm86IGFueSkge1xuXHRcdGNvbnN0IG9GaWx0ZXIgPSBjcmVhdGVGaWx0ZXJUb0ZldGNoQWN0aXZlQ29udGV4dChvUGFnZUluZm8ubUtleVZhbHVlcywgb1BhZ2VJbmZvLmJJc0FjdGl2ZUVudGl0eURlZmluZWQpO1xuXHRcdGFBY3RpdmVDb250ZXh0cHJvbWlzZXMucHVzaChnZXRBY3RpdmVDb250ZXh0UGF0aChvQ29udHJvbGxlciwgb1BhZ2VJbmZvLnBhZ2VFbnRpdHlOYW1lLCBvRmlsdGVyKSk7XG5cdH0pO1xuXG5cdHJldHVybiBhQWN0aXZlQ29udGV4dHByb21pc2VzO1xufVxuXG4vKipcbiAqIE1ldGhvZCB0byBmZXRjaCBhY3RpdmUgY29udGV4dCBwYXRoJ3MuXG4gKiBAcGFyYW0ge3NhcC51aS5tb2RlbC5vZGF0YS52NC5Db250ZXh0fSBvQ29udGV4dCBUaGUgUGFnZSBDb250ZXh0XG4gKiBAcGFyYW0gb0NvbnRyb2xsZXJcbiAqIEByZXR1cm5zIHtQcm9taXNlfSBQcm9taXNlIHdoaWNoIGlzIHJlc29sdmVkIG9uY2UgdGhlIGFjdGl2ZSBjb250ZXh0J3MgYXJlIGZldGNoZWRcbiAqL1xuZnVuY3Rpb24gZ2V0QWN0aXZlQ29udGV4dFBhdGhzKG9Db250ZXh0OiBhbnksIG9Db250cm9sbGVyOiBhbnkpIHtcblx0Y29uc3Qgc0N1cnJlbnRIYXNoTm9QYXJhbXMgPSBIYXNoQ2hhbmdlci5nZXRJbnN0YW5jZSgpLmdldEhhc2goKS5zcGxpdChcIj9cIilbMF07XG5cdGxldCBzUm9vdEVudGl0eU5hbWUgPSBzQ3VycmVudEhhc2hOb1BhcmFtcyAmJiBzQ3VycmVudEhhc2hOb1BhcmFtcy5zdWJzdHIoMCwgc0N1cnJlbnRIYXNoTm9QYXJhbXMuaW5kZXhPZihcIihcIikpO1xuXHRpZiAoc1Jvb3RFbnRpdHlOYW1lLmluZGV4T2YoXCIvXCIpID09PSAwKSB7XG5cdFx0c1Jvb3RFbnRpdHlOYW1lID0gc1Jvb3RFbnRpdHlOYW1lLnN1YnN0cmluZygxKTtcblx0fVxuXHRjb25zdCBvRW50aXR5U2V0ID0gb0NvbnRleHRcblx0XHQuZ2V0TW9kZWwoKVxuXHRcdC5nZXRNZXRhTW9kZWwoKVxuXHRcdC5nZXRPYmplY3QoXCIvXCIgKyBzUm9vdEVudGl0eU5hbWUpO1xuXHRjb25zdCBvUGFnZUNvbnRleHQgPSBvQ29udGV4dDtcblx0Y29uc3QgYUFjdGl2ZUNvbnRleHRwcm9taXNlcyA9IGdldEFjdGl2ZUNvbnRleHRJbnN0YW5jZXMob0NvbnRleHQsIG9Db250cm9sbGVyLCBvRW50aXR5U2V0KTtcblx0aWYgKGFBY3RpdmVDb250ZXh0cHJvbWlzZXMubGVuZ3RoID4gMCkge1xuXHRcdHJldHVybiBQcm9taXNlLmFsbChhQWN0aXZlQ29udGV4dHByb21pc2VzKVxuXHRcdFx0LnRoZW4oZnVuY3Rpb24gKGFEYXRhOiBhbnlbXSkge1xuXHRcdFx0XHRjb25zdCBhQWN0aXZlQ29udGV4dFBhdGhzID0gW107XG5cdFx0XHRcdGxldCBvUGFnZUVudGl0eVNldCA9IG9FbnRpdHlTZXQ7XG5cdFx0XHRcdGlmIChhRGF0YVswXS5pbmRleE9mKFwiL1wiKSA9PT0gMCkge1xuXHRcdFx0XHRcdGFBY3RpdmVDb250ZXh0UGF0aHMucHVzaChhRGF0YVswXS5zdWJzdHJpbmcoMSkpO1xuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdGFBY3RpdmVDb250ZXh0UGF0aHMucHVzaChhRGF0YVswXSk7XG5cdFx0XHRcdH1cblx0XHRcdFx0Ly8gSW4gdGhlIGFjdGl2ZSBjb250ZXh0IHBhdGhzIGlkZW50aWZ5IGFuZCByZXBsYWNlIHRoZSBlbnRpdHlTZXQgTmFtZSB3aXRoIGNvcnJlc3BvbmRpbmcgbmF2aWdhdGlvbiBwcm9wZXJ0eSBuYW1lXG5cdFx0XHRcdC8vIFJlcXVpcmVkIHRvIGZvcm0gdGhlIHVybCBwb2ludGluZyB0byBhY3RpdmUgY29udGV4dFxuXHRcdFx0XHQvLyBFeGFtcGxlIDogU2FsZXNPcmRlckl0ZW0gLS0+IF9JdGVtLCBNYXRlcmlhbERldGFpbHMgLS0+IF9NYXRlcmlhbERldGFpbHMgZXRjLixcblx0XHRcdFx0Zm9yIChsZXQgaSA9IDE7IGkgPCBhRGF0YS5sZW5ndGg7IGkrKykge1xuXHRcdFx0XHRcdGxldCBzQWN0aXZlQ29udGV4dFBhdGggPSBhRGF0YVtpXTtcblx0XHRcdFx0XHRsZXQgc05hdmlnYXRpb1Byb3BlcnR5ID0gXCJcIjtcblx0XHRcdFx0XHRsZXQgc0VudGl0eVNldE5hbWUgPSBzQWN0aXZlQ29udGV4dFBhdGggJiYgc0FjdGl2ZUNvbnRleHRQYXRoLnN1YnN0cigwLCBzQWN0aXZlQ29udGV4dFBhdGguaW5kZXhPZihcIihcIikpO1xuXHRcdFx0XHRcdGlmIChzRW50aXR5U2V0TmFtZS5pbmRleE9mKFwiL1wiKSA9PT0gMCkge1xuXHRcdFx0XHRcdFx0c0VudGl0eVNldE5hbWUgPSBzRW50aXR5U2V0TmFtZS5zdWJzdHJpbmcoMSk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdGlmIChzQWN0aXZlQ29udGV4dFBhdGguaW5kZXhPZihcIi9cIikgPT09IDApIHtcblx0XHRcdFx0XHRcdHNBY3RpdmVDb250ZXh0UGF0aCA9IHNBY3RpdmVDb250ZXh0UGF0aC5zdWJzdHJpbmcoMSk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdHNOYXZpZ2F0aW9Qcm9wZXJ0eSA9IE9iamVjdC5rZXlzKG9QYWdlRW50aXR5U2V0LiROYXZpZ2F0aW9uUHJvcGVydHlCaW5kaW5nKVtcblx0XHRcdFx0XHRcdE9iamVjdC52YWx1ZXMob1BhZ2VFbnRpdHlTZXQuJE5hdmlnYXRpb25Qcm9wZXJ0eUJpbmRpbmcpLmluZGV4T2Yoc0VudGl0eVNldE5hbWUpXG5cdFx0XHRcdFx0XTtcblx0XHRcdFx0XHRpZiAoc05hdmlnYXRpb1Byb3BlcnR5KSB7XG5cdFx0XHRcdFx0XHRhQWN0aXZlQ29udGV4dFBhdGhzLnB1c2goc0FjdGl2ZUNvbnRleHRQYXRoLnJlcGxhY2Uoc0VudGl0eVNldE5hbWUsIHNOYXZpZ2F0aW9Qcm9wZXJ0eSkpO1xuXHRcdFx0XHRcdFx0b1BhZ2VFbnRpdHlTZXQgPVxuXHRcdFx0XHRcdFx0XHRvUGFnZUNvbnRleHRcblx0XHRcdFx0XHRcdFx0XHQuZ2V0TW9kZWwoKVxuXHRcdFx0XHRcdFx0XHRcdC5nZXRNZXRhTW9kZWwoKVxuXHRcdFx0XHRcdFx0XHRcdC5nZXRPYmplY3QoXCIvXCIgKyBzRW50aXR5U2V0TmFtZSkgfHwgb0VudGl0eVNldDtcblx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0YUFjdGl2ZUNvbnRleHRQYXRocy5wdXNoKHNBY3RpdmVDb250ZXh0UGF0aCk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHRcdHJldHVybiBhQWN0aXZlQ29udGV4dFBhdGhzO1xuXHRcdFx0fSlcblx0XHRcdC5jYXRjaChmdW5jdGlvbiAob0Vycm9yOiBhbnkpIHtcblx0XHRcdFx0TG9nLmluZm8oXCJGYWlsZWQgdG8gcmV0cmlldmUgb25lIG9yIG1vcmUgYWN0aXZlIGNvbnRleHQgcGF0aCdzXCIsIG9FcnJvcik7XG5cdFx0XHR9KTtcblx0fSBlbHNlIHtcblx0XHRyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7XG5cdH1cbn1cbmZ1bmN0aW9uIGZldGNoQWN0aXZlQ29udGV4dFBhdGhzKG9Db250ZXh0OiBhbnksIG9Db250cm9sbGVyOiBhbnkpIHtcblx0bGV0IG9Qcm9taXNlLCBhU2VtYW50aWNLZXlzO1xuXHRjb25zdCBzQ3VycmVudEhhc2hOb1BhcmFtcyA9IEhhc2hDaGFuZ2VyLmdldEluc3RhbmNlKCkuZ2V0SGFzaCgpLnNwbGl0KFwiP1wiKVswXTtcblx0aWYgKG9Db250ZXh0KSB7XG5cdFx0Y29uc3Qgb01vZGVsID0gb0NvbnRleHQuZ2V0TW9kZWwoKTtcblx0XHRjb25zdCBvTWV0YU1vZGVsID0gb01vZGVsLmdldE1ldGFNb2RlbCgpO1xuXHRcdGJJc1N0aWNreVN1cHBvcnRlZCA9IE1vZGVsSGVscGVyLmlzU3RpY2t5U2Vzc2lvblN1cHBvcnRlZChvTWV0YU1vZGVsKTtcblx0XHRsZXQgc1Jvb3RFbnRpdHlOYW1lID0gc0N1cnJlbnRIYXNoTm9QYXJhbXMgJiYgc0N1cnJlbnRIYXNoTm9QYXJhbXMuc3Vic3RyKDAsIHNDdXJyZW50SGFzaE5vUGFyYW1zLmluZGV4T2YoXCIoXCIpKTtcblx0XHRpZiAoc1Jvb3RFbnRpdHlOYW1lLmluZGV4T2YoXCIvXCIpID09PSAwKSB7XG5cdFx0XHRzUm9vdEVudGl0eU5hbWUgPSBzUm9vdEVudGl0eU5hbWUuc3Vic3RyaW5nKDEpO1xuXHRcdH1cblx0XHRhU2VtYW50aWNLZXlzID0gU2VtYW50aWNLZXlIZWxwZXIuZ2V0U2VtYW50aWNLZXlzKG9NZXRhTW9kZWwsIHNSb290RW50aXR5TmFtZSk7XG5cdH1cblx0Ly8gRmV0Y2ggYWN0aXZlIGNvbnRleHQgZGV0YWlscyBpbmNhc2Ugb2YgYmVsb3cgc2NlbmFyaW8ncyh3aGVyZSBwYWdlIGlzIG5vdCBzdGlja3kgc3VwcG9ydGVkKHdlIGRvIG5vdCBoYXZlIGRyYWZ0IGluc3RhbmNlKSlcblx0Ly8gMS4gSW4gY2FzZSBvZiBkcmFmdCBlbmFibGVkIE9iamVjdCBwYWdlIHdoZXJlIHNlbWFudGljIGtleSBiYXNlZCBVUkwgaXMgbm90IHBvc3NpYmxlKGxpa2Ugc2VtYW50aWMga2V5cyBhcmUgbm90IG1vZGVsZWQgaW4gdGhlIGVudGl0eSBzZXQpXG5cdC8vIDIuIEluIGNhc2Ugb2YgZHJhZnQgZW5hYmxlZCBTdWIgT2JqZWN0IFBhZ2VzICh3aGVyZSBzZW1hbnRpYyBib29rbWFya2luZyBpcyBub3Qgc3VwcG9ydGVkKVxuXHRjb25zdCBvVmlld0RhdGEgPSBvQ29udHJvbGxlci5nZXRWaWV3KCkuZ2V0Vmlld0RhdGEoKTtcblx0aWYgKG9Db250ZXh0ICYmICFiSXNTdGlja3lTdXBwb3J0ZWQgJiYgKChvVmlld0RhdGEudmlld0xldmVsID09PSAxICYmICFhU2VtYW50aWNLZXlzKSB8fCBvVmlld0RhdGEudmlld0xldmVsID49IDIpKSB7XG5cdFx0b1Byb21pc2UgPSBnZXRBY3RpdmVDb250ZXh0UGF0aHMob0NvbnRleHQsIG9Db250cm9sbGVyKTtcblx0XHRyZXR1cm4gb1Byb21pc2U7XG5cdH0gZWxzZSB7XG5cdFx0cmV0dXJuIFByb21pc2UucmVzb2x2ZSgpO1xuXHR9XG59XG5cbi8vIC8qKlxuLy8gICogR2V0IHNoYXJlIFVSTC5cbi8vICAqIEBwYXJhbSBiSXNFZGl0YWJsZVxuLy8gICogQHBhcmFtIGJJc1N0aWNreVN1cHBvcnRlZFxuLy8gICogQHBhcmFtIGFBY3RpdmVDb250ZXh0UGF0aHNcbi8vICAqIEByZXR1cm5zIHtzdHJpbmd9IFRoZSBzaGFyZSBVUkxcbi8vICAqIEBwcm90ZWN0ZWRcbi8vICAqIEBzdGF0aWNcbi8vICAqL1xuZnVuY3Rpb24gZ2V0U2hhcmVVcmwoYklzRWRpdGFibGU6IGFueSwgYklzU3RpY2t5U3VwcG9ydGVkOiBhbnksIGFBY3RpdmVDb250ZXh0UGF0aHM6IGFueSkge1xuXHRsZXQgc1NoYXJlVXJsO1xuXHRjb25zdCBzSGFzaCA9IEhhc2hDaGFuZ2VyLmdldEluc3RhbmNlKCkuZ2V0SGFzaCgpO1xuXHRjb25zdCBzQmFzZVBhdGggPSAoSGFzaENoYW5nZXIuZ2V0SW5zdGFuY2UoKSBhcyBhbnkpLmhyZWZGb3JBcHBTcGVjaWZpY0hhc2hcblx0XHQ/IChIYXNoQ2hhbmdlci5nZXRJbnN0YW5jZSgpIGFzIGFueSkuaHJlZkZvckFwcFNwZWNpZmljSGFzaChcIlwiKVxuXHRcdDogXCJcIjtcblx0aWYgKGJJc0VkaXRhYmxlICYmICFiSXNTdGlja3lTdXBwb3J0ZWQgJiYgYUFjdGl2ZUNvbnRleHRQYXRocykge1xuXHRcdHNTaGFyZVVybCA9IHNCYXNlUGF0aCArIGFBY3RpdmVDb250ZXh0UGF0aHMuam9pbihcIi9cIik7XG5cdH0gZWxzZSB7XG5cdFx0c1NoYXJlVXJsID0gc0hhc2ggPyBzQmFzZVBhdGggKyBzSGFzaCA6IHdpbmRvdy5sb2NhdGlvbi5oYXNoO1xuXHR9XG5cdHJldHVybiBzU2hhcmVVcmw7XG59XG5mdW5jdGlvbiBnZXRTaGFyZUVtYWlsVXJsKCkge1xuXHRjb25zdCBvVVNoZWxsQ29udGFpbmVyID0gc2FwLnVzaGVsbCAmJiBzYXAudXNoZWxsLkNvbnRhaW5lcjtcblx0aWYgKG9VU2hlbGxDb250YWluZXIpIHtcblx0XHRyZXR1cm4gb1VTaGVsbENvbnRhaW5lclxuXHRcdFx0LmdldEZMUFVybEFzeW5jKHRydWUpXG5cdFx0XHQudGhlbihmdW5jdGlvbiAoc0ZMUFVybDogYW55KSB7XG5cdFx0XHRcdHJldHVybiBzRkxQVXJsO1xuXHRcdFx0fSlcblx0XHRcdC5jYXRjaChmdW5jdGlvbiAoc0Vycm9yOiBhbnkpIHtcblx0XHRcdFx0TG9nLmVycm9yKFwiQ291bGQgbm90IHJldHJpZXZlIGNGTFAgVVJMIGZvciB0aGUgc2hhcmluZyBkaWFsb2cgKGRpYWxvZyB3aWxsIG5vdCBiZSBvcGVuZWQpXCIsIHNFcnJvcik7XG5cdFx0XHR9KTtcblx0fSBlbHNlIHtcblx0XHRyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKGRvY3VtZW50LlVSTCk7XG5cdH1cbn1cblxuZnVuY3Rpb24gZ2V0SmFtVXJsKGJJc0VkaXRNb2RlOiBib29sZWFuLCBiSXNTdGlja3lTdXBwb3J0ZWQ6IGFueSwgYUFjdGl2ZUNvbnRleHRQYXRoczogYW55KSB7XG5cdGxldCBzSmFtVXJsOiBzdHJpbmc7XG5cdGNvbnN0IHNIYXNoID0gSGFzaENoYW5nZXIuZ2V0SW5zdGFuY2UoKS5nZXRIYXNoKCk7XG5cdGNvbnN0IHNCYXNlUGF0aCA9IChIYXNoQ2hhbmdlci5nZXRJbnN0YW5jZSgpIGFzIGFueSkuaHJlZkZvckFwcFNwZWNpZmljSGFzaFxuXHRcdD8gKEhhc2hDaGFuZ2VyLmdldEluc3RhbmNlKCkgYXMgYW55KS5ocmVmRm9yQXBwU3BlY2lmaWNIYXNoKFwiXCIpXG5cdFx0OiBcIlwiO1xuXHRpZiAoYklzRWRpdE1vZGUgJiYgIWJJc1N0aWNreVN1cHBvcnRlZCAmJiBhQWN0aXZlQ29udGV4dFBhdGhzKSB7XG5cdFx0c0phbVVybCA9IHNCYXNlUGF0aCArIGFBY3RpdmVDb250ZXh0UGF0aHMuam9pbihcIi9cIik7XG5cdH0gZWxzZSB7XG5cdFx0c0phbVVybCA9IHNIYXNoID8gc0Jhc2VQYXRoICsgc0hhc2ggOiB3aW5kb3cubG9jYXRpb24uaGFzaDtcblx0fVxuXHQvLyBpbiBjYXNlIHdlIGFyZSBpbiBjRkxQIHNjZW5hcmlvLCB0aGUgYXBwbGljYXRpb24gaXMgcnVubmluZ1xuXHQvLyBpbnNpZGUgYW4gaWZyYW1lLCBhbmQgdGhlcmUgZm9yIHdlIG5lZWQgdG8gZ2V0IHRoZSBjRkxQIFVSTFxuXHQvLyBhbmQgbm90ICdkb2N1bWVudC5VUkwnIHRoYXQgcmVwcmVzZW50cyB0aGUgaWZyYW1lIFVSTFxuXHRpZiAoc2FwLnVzaGVsbCAmJiBzYXAudXNoZWxsLkNvbnRhaW5lciAmJiBzYXAudXNoZWxsLkNvbnRhaW5lci5ydW5uaW5nSW5JZnJhbWUgJiYgc2FwLnVzaGVsbC5Db250YWluZXIucnVubmluZ0luSWZyYW1lKCkpIHtcblx0XHRzYXAudXNoZWxsLkNvbnRhaW5lci5nZXRGTFBVcmwodHJ1ZSlcblx0XHRcdC50aGVuKGZ1bmN0aW9uIChzVXJsOiBhbnkpIHtcblx0XHRcdFx0cmV0dXJuIHNVcmwuc3Vic3RyKDAsIHNVcmwuaW5kZXhPZihcIiNcIikpICsgc0phbVVybDtcblx0XHRcdH0pXG5cdFx0XHQuY2F0Y2goZnVuY3Rpb24gKHNFcnJvcjogYW55KSB7XG5cdFx0XHRcdExvZy5lcnJvcihcIkNvdWxkIG5vdCByZXRyaWV2ZSBjRkxQIFVSTCBmb3IgdGhlIHNoYXJpbmcgZGlhbG9nIChkaWFsb2cgd2lsbCBub3QgYmUgb3BlbmVkKVwiLCBzRXJyb3IpO1xuXHRcdFx0fSk7XG5cdH0gZWxzZSB7XG5cdFx0cmV0dXJuIFByb21pc2UucmVzb2x2ZSh3aW5kb3cubG9jYXRpb24ub3JpZ2luICsgd2luZG93LmxvY2F0aW9uLnBhdGhuYW1lICsgc0phbVVybCk7XG5cdH1cbn1cblxuY29uc3QgU2hhcmVFeHRlbnNpb25PdmVycmlkZSA9IHtcblx0YWRhcHRTaGFyZU1ldGFkYXRhOiBmdW5jdGlvbiAodGhpczogU2hhcmUsIG9TaGFyZU1ldGFkYXRhOiBhbnkpIHtcblx0XHRjb25zdCBvQ29udGV4dCA9IHRoaXMuYmFzZS5nZXRWaWV3KCkuZ2V0QmluZGluZ0NvbnRleHQoKSxcblx0XHRcdG9VSU1vZGVsID0gdGhpcy5iYXNlLmdldFZpZXcoKS5nZXRNb2RlbChcInVpXCIpLFxuXHRcdFx0YklzRWRpdGFibGUgPSBvVUlNb2RlbC5nZXRQcm9wZXJ0eShcIi9pc0VkaXRhYmxlXCIpO1xuXHRcdHJldHVybiBmZXRjaEFjdGl2ZUNvbnRleHRQYXRocyhvQ29udGV4dCwgdGhpcy5iYXNlLmdldFZpZXcoKS5nZXRDb250cm9sbGVyKCkpLnRoZW4oKGFBY3RpdmVDb250ZXh0UGF0aHMpID0+IHtcblx0XHRcdGNvbnN0IG9QYWdlVGl0bGVJbmZvID0gKHRoaXMuYmFzZS5nZXRWaWV3KCkuZ2V0Q29udHJvbGxlcigpIGFzIE9iamVjdFBhZ2VDb250cm9sbGVyKS5fZ2V0UGFnZVRpdGxlSW5mb3JtYXRpb24oKTtcblxuXHRcdFx0cmV0dXJuIFByb21pc2UuYWxsKFtcblx0XHRcdFx0Z2V0SmFtVXJsKGJJc0VkaXRhYmxlLCBiSXNTdGlja3lTdXBwb3J0ZWQsIGFBY3RpdmVDb250ZXh0UGF0aHMpLFxuXHRcdFx0XHRnZXRTaGFyZVVybChiSXNFZGl0YWJsZSwgYklzU3RpY2t5U3VwcG9ydGVkLCBhQWN0aXZlQ29udGV4dFBhdGhzKSxcblx0XHRcdFx0Z2V0U2hhcmVFbWFpbFVybCgpXG5cdFx0XHRdKVxuXHRcdFx0XHQudGhlbihmdW5jdGlvbiAob0RhdGEpIHtcblx0XHRcdFx0XHRsZXQgc1RpdGxlID0gb1BhZ2VUaXRsZUluZm8udGl0bGU7XG5cdFx0XHRcdFx0Y29uc3Qgc09iamVjdFN1YnRpdGxlID0gb1BhZ2VUaXRsZUluZm8uc3VidGl0bGUudG9TdHJpbmcoKTtcblx0XHRcdFx0XHRpZiAoc09iamVjdFN1YnRpdGxlKSB7XG5cdFx0XHRcdFx0XHRzVGl0bGUgPSBzVGl0bGUgKyBcIiAtIFwiICsgc09iamVjdFN1YnRpdGxlO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRvU2hhcmVNZXRhZGF0YS50aWxlID0ge1xuXHRcdFx0XHRcdFx0dGl0bGU6IG9QYWdlVGl0bGVJbmZvLnRpdGxlLFxuXHRcdFx0XHRcdFx0c3VidGl0bGU6IG9QYWdlVGl0bGVJbmZvLnN1YnRpdGxlLnRvU3RyaW5nKClcblx0XHRcdFx0XHR9O1xuXHRcdFx0XHRcdG9TaGFyZU1ldGFkYXRhLmVtYWlsLnRpdGxlID0gc1RpdGxlO1xuXHRcdFx0XHRcdG9TaGFyZU1ldGFkYXRhLnRpdGxlID0gc1RpdGxlO1xuXHRcdFx0XHRcdG9TaGFyZU1ldGFkYXRhLmphbS51cmwgPSBvRGF0YVswXTtcblx0XHRcdFx0XHRvU2hhcmVNZXRhZGF0YS51cmwgPSBvRGF0YVsxXTtcblx0XHRcdFx0XHRvU2hhcmVNZXRhZGF0YS5lbWFpbC51cmwgPSBvRGF0YVsyXTtcblxuXHRcdFx0XHRcdHJldHVybiBvU2hhcmVNZXRhZGF0YTtcblx0XHRcdFx0fSlcblx0XHRcdFx0LmNhdGNoKGZ1bmN0aW9uIChlcnJvcjogYW55KSB7XG5cdFx0XHRcdFx0TG9nLmVycm9yKGVycm9yKTtcblx0XHRcdFx0fSk7XG5cdFx0fSk7XG5cdH1cbn07XG5cbmV4cG9ydCBkZWZhdWx0IFNoYXJlRXh0ZW5zaW9uT3ZlcnJpZGU7XG4iXX0=
|
|
313
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIlNoYXJlLnRzIl0sIm5hbWVzIjpbImJHbG9iYWxJc1N0aWNreVN1cHBvcnRlZCIsImNyZWF0ZUZpbHRlclRvRmV0Y2hBY3RpdmVDb250ZXh0IiwibUtleVZhbHVlcyIsImJJc0FjdGl2ZUVudGl0eURlZmluZWQiLCJhS2V5cyIsIk9iamVjdCIsImtleXMiLCJhRmlsdGVycyIsIm1hcCIsInNLZXkiLCJzVmFsdWUiLCJ1bmRlZmluZWQiLCJGaWx0ZXIiLCJGaWx0ZXJPcGVyYXRvciIsIkVRIiwib0FjdGl2ZUZpbHRlciIsImZpbHRlcnMiLCJhbmQiLCJwdXNoIiwiZ2V0QWN0aXZlQ29udGV4dFBhdGgiLCJvQ29udHJvbGxlciIsInNQYWdlRW50aXR5TmFtZSIsIm9GaWx0ZXIiLCJvTGlzdEJpbmRpbmciLCJnZXRWaWV3IiwiZ2V0QmluZGluZ0NvbnRleHQiLCJnZXRNb2RlbCIsImJpbmRMaXN0IiwicmVxdWVzdENvbnRleHRzIiwidGhlbiIsIm9Db250ZXh0cyIsImxlbmd0aCIsImdldFBhdGgiLCJnZXRBY3RpdmVDb250ZXh0SW5zdGFuY2VzIiwib0NvbnRleHQiLCJvRW50aXR5U2V0IiwiYUFjdGl2ZUNvbnRleHRwcm9taXNlcyIsImFQYWdlcyIsInNNZXRhUGF0aCIsImdldE1ldGFNb2RlbCIsImdldE1ldGFQYXRoIiwiaW5kZXhPZiIsInN1YnN0cmluZyIsImFNZXRhUGF0aEFycmF5Iiwic3BsaXQiLCJzQ3VycmVudEhhc2hOb1BhcmFtcyIsIkhhc2hDaGFuZ2VyIiwiZ2V0SW5zdGFuY2UiLCJnZXRIYXNoIiwiYUN1cnJlbnRIYXNoQXJyYXkiLCJvUGFnZU1hcCIsImFQYWdlSGFzaEFycmF5IiwiZm9yRWFjaCIsInNQYWdlSGFzaCIsImFLZXlWYWx1ZXMiLCJzUGFnZUhhc2hOYW1lIiwiaSIsInNLZXlBc3NpZ25tZW50IiwiYVBhcnRzIiwic0tleVZhbHVlIiwib01ldGFNb2RlbCIsImFUZWNobmljYWxLZXlzIiwiZ2V0T2JqZWN0Iiwiam9pbiIsImxhc3RJbmRleE9mIiwiZGVjb2RlVVJJQ29tcG9uZW50Iiwib1BhZ2VFbnRpdHlTZXQiLCJzTmF2aWdhdGlvblBhdGgiLCJvUGFnZUluZm8iLCJzUGFnZUVudGl0eVNldE5hbWUiLCIkTmF2aWdhdGlvblByb3BlcnR5QmluZGluZyIsInBhZ2VFbnRpdHlOYW1lIiwiZ2V0QWN0aXZlQ29udGV4dFBhdGhzIiwic1Jvb3RFbnRpdHlOYW1lIiwic3Vic3RyIiwib1BhZ2VDb250ZXh0IiwiUHJvbWlzZSIsImFsbCIsImFEYXRhIiwiYUFjdGl2ZUNvbnRleHRQYXRocyIsInNBY3RpdmVDb250ZXh0UGF0aCIsInNOYXZpZ2F0aW9Qcm9wZXJ0eSIsInNFbnRpdHlTZXROYW1lIiwidmFsdWVzIiwicmVwbGFjZSIsImNhdGNoIiwib0Vycm9yIiwiTG9nIiwiaW5mbyIsInJlc29sdmUiLCJmZXRjaEFjdGl2ZUNvbnRleHRQYXRocyIsIm9Qcm9taXNlIiwiYVNlbWFudGljS2V5cyIsIm9Nb2RlbCIsIk1vZGVsSGVscGVyIiwiaXNTdGlja3lTZXNzaW9uU3VwcG9ydGVkIiwiU2VtYW50aWNLZXlIZWxwZXIiLCJnZXRTZW1hbnRpY0tleXMiLCJvVmlld0RhdGEiLCJnZXRWaWV3RGF0YSIsInZpZXdMZXZlbCIsImdldFNoYXJlVXJsIiwiYklzRWRpdGFibGUiLCJiSXNTdGlja3lTdXBwb3J0ZWQiLCJzU2hhcmVVcmwiLCJzSGFzaCIsInNCYXNlUGF0aCIsImhyZWZGb3JBcHBTcGVjaWZpY0hhc2giLCJ3aW5kb3ciLCJsb2NhdGlvbiIsImhhc2giLCJnZXRTaGFyZUVtYWlsVXJsIiwib1VTaGVsbENvbnRhaW5lciIsInNhcCIsInVzaGVsbCIsIkNvbnRhaW5lciIsImdldEZMUFVybEFzeW5jIiwic0ZMUFVybCIsInNFcnJvciIsImVycm9yIiwiZG9jdW1lbnQiLCJVUkwiLCJnZXRKYW1VcmwiLCJiSXNFZGl0TW9kZSIsInNKYW1VcmwiLCJydW5uaW5nSW5JZnJhbWUiLCJnZXRGTFBVcmwiLCJzVXJsIiwib3JpZ2luIiwicGF0aG5hbWUiLCJTaGFyZUV4dGVuc2lvbk92ZXJyaWRlIiwiYWRhcHRTaGFyZU1ldGFkYXRhIiwib1NoYXJlTWV0YWRhdGEiLCJiYXNlIiwib1VJTW9kZWwiLCJnZXRQcm9wZXJ0eSIsImdldENvbnRyb2xsZXIiLCJvUGFnZVRpdGxlSW5mbyIsIl9nZXRQYWdlVGl0bGVJbmZvcm1hdGlvbiIsIm9EYXRhIiwic1RpdGxlIiwidGl0bGUiLCJzT2JqZWN0U3VidGl0bGUiLCJzdWJ0aXRsZSIsInRvU3RyaW5nIiwidGlsZSIsImVtYWlsIiwiamFtIiwidXJsIl0sIm1hcHBpbmdzIjoiO0FBQUE7QUFDQTtBQUNBOzs7O0FBT0EsTUFBSUEsd0JBQUo7O0FBRUEsV0FBU0MsZ0NBQVQsQ0FBMENDLFVBQTFDLEVBQTJEQyxzQkFBM0QsRUFBd0Y7QUFDdkYsUUFBTUMsS0FBSyxHQUFHQyxNQUFNLENBQUNDLElBQVAsQ0FBWUosVUFBWixDQUFkO0FBRUEsUUFBTUssUUFBUSxHQUFHSCxLQUFLLENBQUNJLEdBQU4sQ0FBVSxVQUFVQyxJQUFWLEVBQXdCO0FBQ2xELFVBQU1DLE1BQU0sR0FBR1IsVUFBVSxDQUFDTyxJQUFELENBQXpCOztBQUNBLFVBQUlDLE1BQU0sS0FBS0MsU0FBZixFQUEwQjtBQUN6QixlQUFPLElBQUlDLE1BQUosQ0FBV0gsSUFBWCxFQUFpQkksY0FBYyxDQUFDQyxFQUFoQyxFQUFvQ0osTUFBcEMsQ0FBUDtBQUNBO0FBQ0QsS0FMZ0IsQ0FBakI7O0FBT0EsUUFBSVAsc0JBQUosRUFBNEI7QUFDM0IsVUFBTVksYUFBYSxHQUFHLElBQUlILE1BQUosQ0FBVztBQUNoQ0ksUUFBQUEsT0FBTyxFQUFFLENBQUMsSUFBSUosTUFBSixDQUFXLDhCQUFYLEVBQTJDQyxjQUFjLENBQUNDLEVBQTFELEVBQThELElBQTlELENBQUQsQ0FEdUI7QUFFaENHLFFBQUFBLEdBQUcsRUFBRTtBQUYyQixPQUFYLENBQXRCO0FBS0FWLE1BQUFBLFFBQVEsQ0FBQ1csSUFBVCxDQUFjSCxhQUFkO0FBQ0E7O0FBRUQsV0FBTyxJ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LGVBQUosRUFBcUI7QUFDcEJGLFlBQUFBLE1BQU0sYUFBTUEsTUFBTixnQkFBa0JFLGVBQWxCLENBQU47QUFDQTs7QUFDRFYsVUFBQUEsY0FBYyxDQUFDYSxJQUFmLEdBQXNCO0FBQ3JCSixZQUFBQSxLQUFLLEVBQUVKLGNBQWMsQ0FBQ0ksS0FERDtBQUVyQkUsWUFBQUEsUUFBUSxFQUFFRDtBQUZXLFdBQXRCO0FBSUFWLFVBQUFBLGNBQWMsQ0FBQ2MsS0FBZixDQUFxQkwsS0FBckIsR0FBNkJELE1BQTdCO0FBQ0FSLFVBQUFBLGNBQWMsQ0FBQ1MsS0FBZixHQUF1QkQsTUFBdkI7QUFDQVIsVUFBQUEsY0FBYyxDQUFDZSxHQUFmLENBQW1CQyxHQUFuQixHQUF5QlQsS0FBSyxDQUFDLENBQUQsQ0FBOUI7QUFDQVAsVUFBQUEsY0FBYyxDQUFDZ0IsR0FBZixHQUFxQlQsS0FBSyxDQUFDLENBQUQsQ0FBMUI7QUFDQVAsVUFBQUEsY0FBYyxDQUFDYyxLQUFmLENBQXFCRSxHQUFyQixHQUEyQlQsS0FBSyxDQUFDLENBQUQsQ0FBaEM7QUFFQSxpQkFBT1AsY0FBUDtBQUNBLFNBdEJLLEVBdUJML0MsS0F2QkssQ0F1QkMsVUFBVWtDLEtBQVYsRUFBc0I7QUFDNUJoQyxVQUFBQSxHQUFHLENBQUNnQyxLQUFKLENBQVVBLEtBQVY7QUFDQSxTQXpCSyxDQUFQO0FBMEJBLE9BN0JNLENBQVA7QUE4QkE7QUFuQzZCLEdBQS9CO1NBc0NlVyxzQiIsInNvdXJjZVJvb3QiOiIuIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IExvZyBmcm9tIFwic2FwL2Jhc2UvTG9nXCI7XG5pbXBvcnQgdHlwZSBTaGFyZSBmcm9tIFwic2FwL2ZlL2NvcmUvY29udHJvbGxlcmV4dGVuc2lvbnMvU2hhcmVcIjtcbmltcG9ydCBNb2RlbEhlbHBlciBmcm9tIFwic2FwL2ZlL2NvcmUvaGVscGVycy9Nb2RlbEhlbHBlclwiO1xuaW1wb3J0IFNlbWFudGljS2V5SGVscGVyIGZyb20gXCJzYXAvZmUvY29yZS9oZWxwZXJzL1NlbWFudGljS2V5SGVscGVyXCI7XG5pbXBvcnQgdHlwZSBPYmplY3RQYWdlQ29udHJvbGxlciBmcm9tIFwic2FwL2ZlL3RlbXBsYXRlcy9PYmplY3RQYWdlL09iamVjdFBhZ2VDb250cm9sbGVyLmNvbnRyb2xsZXJcIjtcbmltcG9ydCBIYXNoQ2hhbmdlciBmcm9tIFwic2FwL3VpL2NvcmUvcm91dGluZy9IYXNoQ2hhbmdlclwiO1xuaW1wb3J0IEZpbHRlciBmcm9tIFwic2FwL3VpL21vZGVsL0ZpbHRlclwiO1xuaW1wb3J0IEZpbHRlck9wZXJhdG9yIGZyb20gXCJzYXAvdWkvbW9kZWwvRmlsdGVyT3BlcmF0b3JcIjtcblxubGV0IGJHbG9iYWxJc1N0aWNreVN1cHBvcnRlZDogYm9vbGVhbjtcblxuZnVuY3Rpb24gY3JlYXRlRmlsdGVyVG9GZXRjaEFjdGl2ZUNvbnRleHQobUtleVZhbHVlczogYW55LCBiSXNBY3RpdmVFbnRpdHlEZWZpbmVkOiBhbnkpIHtcblx0Y29uc3QgYUtleXMgPSBPYmplY3Qua2V5cyhtS2V5VmFsdWVzKTtcblxuXHRjb25zdCBhRmlsdGVycyA9IGFLZXlzLm1hcChmdW5jdGlvbiAoc0tleTogc3RyaW5nKSB7XG5cdFx0Y29uc3Qgc1ZhbHVlID0gbUtleVZhbHVlc1tzS2V5XTtcblx0XHRpZiAoc1ZhbHVlICE9PSB1bmRlZmluZWQpIHtcblx0XHRcdHJldHVybiBuZXcgRmlsdGVyKHNLZXksIEZpbHRlck9wZXJhdG9yLkVRLCBzVmFsdWUpO1xuXHRcdH1cblx0fSk7XG5cblx0aWYgKGJJc0FjdGl2ZUVudGl0eURlZmluZWQpIHtcblx0XHRjb25zdCBvQWN0aXZlRmlsdGVyID0gbmV3IEZpbHRlcih7XG5cdFx0XHRmaWx0ZXJzOiBbbmV3IEZpbHRlcihcIlNpYmxpbmdFbnRpdHkvSXNBY3RpdmVFbnRpdHlcIiwgRmlsdGVyT3BlcmF0b3IuRVEsIHRydWUpXSxcblx0XHRcdGFuZDogZmFsc2Vcblx0XHR9KTtcblxuXHRcdGFGaWx0ZXJzLnB1c2gob0FjdGl2ZUZpbHRlcik7XG5cdH1cblxuXHRyZXR1cm4gbmV3IEZpbHRlcihhRmlsdGVycyBhcyBhbnksIHRydWUpO1xufVxuZnVuY3Rpb24gZ2V0QWN0aXZlQ29udGV4dFBhdGgob0NvbnRyb2xsZXI6IGFueSwgc1BhZ2VFbnRpdHlOYW1lOiBhbnksIG9GaWx0ZXI6IGFueSkge1xuXHRjb25zdCBvTGlzdEJpbmRpbmcgPSBvQ29udHJvbGxlclxuXHRcdC5nZXRWaWV3KClcblx0XHQuZ2V0QmluZGluZ0NvbnRleHQoKVxuXHRcdC5nZXRNb2RlbCgpXG5cdFx0LmJpbmRMaXN0KGAvJHtzUGFnZUVudGl0eU5hbWV9YCwgdW5kZWZpbmVkLCB1bmRlZmluZWQsIG9GaWx0ZXIsIHsgXCIkJGdyb3VwSWRcIjogXCIkYXV0by5IZXJvZXNcIiB9KTtcblx0cmV0dXJuIG9MaXN0QmluZGluZy5yZXF1ZXN0Q29udGV4dHMoMCwgMikudGhlbihmdW5jdGlvbiAob0NvbnRleHRzOiBhbnkpIHtcblx0XHRpZiAob0NvbnRleHRzICYmIG9Db250ZXh0cy5sZW5ndGgpIHtcblx0XHRcdHJldHVybiBvQ29udGV4dHNbMF0uZ2V0UGF0aCgpO1xuXHRcdH1cblx0fSk7XG59XG5mdW5jdGlvbiBnZXRBY3RpdmVDb250ZXh0SW5zdGFuY2VzKG9Db250ZXh0OiBhbnksIG9Db250cm9sbGVyOiBhbnksIG9FbnRpdHlTZXQ6IGFueSkge1xuXHRjb25zdCBhQWN0aXZlQ29udGV4dHByb21pc2VzOiBhbnlbXSA9IFtdO1xuXHRjb25zdCBhUGFnZXM6IGFueVtdID0gW107XG5cdGxldCBzTWV0YVBhdGggPSBvQ29udGV4dC5nZXRNb2RlbCgpLmdldE1ldGFNb2RlbCgpLmdldE1ldGFQYXRoKG9Db250ZXh0LmdldFBhdGgoKSk7XG5cdGlmIChzTWV0YVBhdGguaW5kZXhPZihcIi9cIikgPT09IDApIHtcblx0XHRzTWV0YVBhdGggPSBzTWV0YVBhdGguc3Vic3RyaW5nKDEpO1xuXHR9XG5cdGNvbnN0IGFNZXRhUGF0aEFycmF5ID0gc01ldGFQYXRoLnNwbGl0KFwiL1wiKTtcblx0Y29uc3Qgc0N1cnJlbnRIYXNoTm9QYXJhbXMgPSBIYXNoQ2hhbmdlci5nZXRJbnN0YW5jZSgpLmdldEhhc2goKS5zcGxpdChcIj9cIilbMF07XG5cdGNvbnN0IGFDdXJyZW50SGFzaEFycmF5ID0gc0N1cnJlbnRIYXNoTm9QYXJhbXMuc3BsaXQoXCIvXCIpO1xuXG5cdC8vIG9QYWdlTWFwIC0gY3JlYXRpbmcgYW4gb2JqZWN0IHRoYXQgY29udGFpbnMgbWFwIG9mIG1ldGFwYXRoIG5hbWUgYW5kIGl0J3MgdGVjaG5pY2FsIGRldGFpbHNcblx0Ly8gd2hpY2ggaXMgcmVxdWlyZWQgdG8gY3JlYXRlIGEgZmlsdGVyIHRvIGZldGNoIHRoZSByZWxhdmFudC9jb3JyZWN0IGFjdGl2ZSBjb250ZXh0XG5cdC8vIEV4YW1wbGU6IHtTYWxlc09yZGVyTWFuYWdlOnt0ZWNobmljYWxJRDp0ZWNobmljYWxJRFZhbHVlfSwgX0l0ZW06e3RlY2huaWNhbElEOnRlY2huaWNhbElEVmFsdWV9fSBldGMuLFxuXHRjb25zdCBvUGFnZU1hcDogYW55ID0ge307XG5cdGNvbnN0IGFQYWdlSGFzaEFycmF5OiBhbnlbXSA9IFtdO1xuXHRhQ3VycmVudEhhc2hBcnJheS5mb3JFYWNoKGZ1bmN0aW9uIChzUGFnZUhhc2g6IGFueSkge1xuXHRcdGNvbnN0IGFLZXlWYWx1ZXMgPSBzUGFnZUhhc2guc3Vic3RyaW5nKHNQYWdlSGFzaC5pbmRleE9mKFwiKFwiKSArIDEsIHNQYWdlSGFzaC5sZW5ndGggLSAxKS5zcGxpdChcIixcIik7XG5cdFx0Y29uc3QgbUtleVZhbHVlczogYW55ID0ge307XG5cdFx0Y29uc3Qgc1BhZ2VIYXNoTmFtZSA9IHNQYWdlSGFzaC5zcGxpdChcIihcIilbMF07XG5cdFx0b1BhZ2VNYXBbc1BhZ2VIYXNoTmFtZV0gPSB7fTtcblx0XHRhUGFnZUhhc2hBcnJheS5wdXNoKHNQYWdlSGFzaE5hbWUpO1xuXHRcdG9QYWdlTWFwW3NQYWdlSGFzaE5hbWVdW1wiYklzQWN0aXZlRW50aXR5RGVmaW5lZFwiXSA9IHRydWU7XG5cdFx0Zm9yIChsZXQgaSA9IDA7IGkgPCBhS2V5VmFsdWVzLmxlbmd0aDsgaSsrKSB7XG5cdFx0XHRjb25zdCBzS2V5QXNzaWdubWVudCA9IGFLZXlWYWx1ZXNbaV07XG5cdFx0XHRjb25zdCBhUGFydHMgPSBzS2V5QXNzaWdubWVudC5zcGxpdChcIj1cIik7XG5cdFx0XHRsZXQgc0tleVZhbHVlID0gYVBhcnRzWzFdO1xuXHRcdFx0bGV0IHNLZXkgPSBhUGFydHNbMF07XG5cdFx0XHQvLyBJbiBjYXNlIGlmIG9ubHkgb25lIHRlY2huaWNhbCBrZXkgaXMgZGVmaW5lZCB0aGVuIHRoZSB1cmwganVzdCBjb250YWlucyB0aGUgdGVjaG5pY2FsSURWYWx1ZSBidXQgbm90IHRoZSB0ZWNobmljYWxJRFxuXHRcdFx0Ly8gRXhhbXBsZTogU2FsZXNPcmRlck1hbmFnZShJRD0xMTExMTEyOS1hYWFhLWJiYmItY2NjYy1kZGRkZWVlZWZmZmYsSXNBY3RpdmVFbnRpdHk9ZmFsc2UpL19JdGVtKDExMTExMTI5LWFhYWEtYmJiYi1jY2NjLWRkZGRlZWVlZmZmZilcblx0XHRcdC8vIEluIGFib3ZlIGV4YW1wbGUgU2FsZXNPcmRlckl0ZW0gaGFzIG9ubHkgb25lIHRlY2huaWNhbCBrZXkgZGVmaW5lZCwgaGVuY2UgdGVjaG5pY2FsSUQgaW5mbyBpcyBub3QgcHJlc2VudCBpbiB0aGUgdXJsXG5cdFx0XHQvLyBIZW5jZSBpbiBzdWNoIGNhc2VzIHdlIGdldCB0ZWNobmljYWwga2V5IGFuZCB1c2UgdGhlbSB0byBmZXRjaCBhY3RpdmUgY29udGV4dFxuXHRcdFx0aWYgKHNLZXlBc3NpZ25tZW50LmluZGV4T2YoXCI9XCIpID09PSAtMSkge1xuXHRcdFx0XHRjb25zdCBvTWV0YU1vZGVsID0gb0NvbnRleHQuZ2V0TW9kZWwoKS5nZXRNZXRhTW9kZWwoKTtcblx0XHRcdFx0Y29uc3QgYVRlY2huaWNhbEtleXMgPSBvTWV0YU1vZGVsLmdldE9iamVjdChgLyR7YVBhZ2VIYXNoQXJyYXkuam9pbihcIi9cIil9LyRUeXBlLyRLZXlgKTtcblx0XHRcdFx0c0tleVZhbHVlID0gYVBhcnRzWzBdO1xuXHRcdFx0XHRzS2V5ID0gYVRlY2huaWNhbEtleXNbMF07XG5cdFx0XHRcdG9QYWdlTWFwW3NQYWdlSGFzaC5zcGxpdChcIihcIilbMF1dW1wiYklzQWN0aXZlRW50aXR5RGVmaW5lZFwiXSA9IGZhbHNlO1xuXHRcdFx0fVxuXG5cdFx0XHRpZiAoc0tleSAhPT0gXCJJc0FjdGl2ZUVudGl0eVwiKSB7XG5cdFx0XHRcdGlmIChzS2V5VmFsdWUuaW5kZXhPZihcIidcIikgPT09IDAgJiYgc0tleVZhbHVlLmxhc3RJbmRleE9mKFwiJ1wiKSA9PT0gc0tleVZhbHVlLmxlbmd0aCAtIDEpIHtcblx0XHRcdFx0XHQvLyBSZW1vdmUgdGhlIHF1b3RlcyBmcm9tIHRoZSB2YWx1ZSBhbmQgZGVjb2RlIHNwZWNpYWwgY2hhcnNcblx0XHRcdFx0XHRzS2V5VmFsdWUgPSBkZWNvZGVVUklDb21wb25lbnQoc0tleVZhbHVlLnN1YnN0cmluZygxLCBzS2V5VmFsdWUubGVuZ3RoIC0gMSkpO1xuXHRcdFx0XHR9XG5cdFx0XHRcdG1LZXlWYWx1ZXNbc0tleV0gPSBzS2V5VmFsdWU7XG5cdFx0XHR9XG5cdFx0fVxuXHRcdG9QYWdlTWFwW3NQYWdlSGFzaE5hbWVdLm1LZXlWYWx1ZXMgPSBtS2V5VmFsdWVzO1xuXHR9KTtcblxuXHRsZXQgb1BhZ2VFbnRpdHlTZXQgPSBvRW50aXR5U2V0O1xuXHRhTWV0YVBhdGhBcnJheS5mb3JFYWNoKGZ1bmN0aW9uIChzTmF2aWdhdGlvblBhdGg6IGFueSkge1xuXHRcdGNvbnN0IG9QYWdlSW5mbzogYW55ID0ge307XG5cdFx0Y29uc3Qgc1BhZ2VFbnRpdHlTZXROYW1lID0gb1BhZ2VFbnRpdHlTZXQuJE5hdmlnYXRpb25Qcm9wZXJ0eUJpbmRpbmcgJiYgb1BhZ2VFbnRpdHlTZXQuJE5hdmlnYXRpb25Qcm9wZXJ0eUJpbmRpbmdbc05hdmlnYXRpb25QYXRoXTtcblx0XHRpZiAoc1BhZ2VFbnRpdHlTZXROYW1lKSB7XG5cdFx0XHRvUGFnZUluZm8ucGFnZUVudGl0eU5hbWUgPSBvUGFnZUVudGl0eVNldC4kTmF2aWdhdGlvblByb3BlcnR5QmluZGluZ1tzTmF2aWdhdGlvblBhdGhdO1xuXHRcdFx0b1BhZ2VFbnRpdHlTZXQgPSBvQ29udGV4dC5nZXRNb2RlbCgpLmdldE1ldGFNb2RlbCgpLmdldE9iamVjdChgLyR7c1BhZ2VFbnRpdHlTZXROYW1lfWApIHx8IG9FbnRpdHlTZXQ7XG5cdFx0fSBlbHNlIHtcblx0XHRcdG9QYWdlSW5mby5wYWdlRW50aXR5TmFtZSA9IHNOYXZpZ2F0aW9uUGF0aDtcblx0XHR9XG5cdFx0b1BhZ2VJbmZvLm1LZXlWYWx1ZXMgPSBvUGFnZU1hcFtzTmF2aWdhdGlvblBhdGhdLm1LZXlWYWx1ZXM7XG5cdFx0b1BhZ2VJbmZvLmJJc0FjdGl2ZUVudGl0eURlZmluZWQgPSBvUGFnZU1hcFtzTmF2aWdhdGlvblBhdGhdLmJJc0FjdGl2ZUVudGl0eURlZmluZWQ7XG5cdFx0YVBhZ2VzLnB1c2gob1BhZ2VJbmZvKTtcblx0fSk7XG5cblx0YVBhZ2VzLmZvckVhY2goZnVuY3Rpb24gKG9QYWdlSW5mbzogYW55KSB7XG5cdFx0Y29uc3Qgb0ZpbHRlciA9IGNyZWF0ZUZpbHRlclRvRmV0Y2hBY3RpdmVDb250ZXh0KG9QYWdlSW5mby5tS2V5VmFsdWVzLCBvUGFnZUluZm8uYklzQWN0aXZlRW50aXR5RGVmaW5lZCk7XG5cdFx0YUFjdGl2ZUNvbnRleHRwcm9taXNlcy5wdXNoKGdldEFjdGl2ZUNvbnRleHRQYXRoKG9Db250cm9sbGVyLCBvUGFnZUluZm8ucGFnZUVudGl0eU5hbWUsIG9GaWx0ZXIpKTtcblx0fSk7XG5cblx0cmV0dXJuIGFBY3RpdmVDb250ZXh0cHJvbWlzZXM7XG59XG5cbi8qKlxuICogTWV0aG9kIHRvIGZldGNoIGFjdGl2ZSBjb250ZXh0IHBhdGgncy5cbiAqXG4gKiBAcGFyYW0gb0NvbnRleHQgVGhlIFBhZ2UgQ29udGV4dFxuICogQHBhcmFtIG9Db250cm9sbGVyXG4gKiBAcmV0dXJucyBQcm9taXNlIHdoaWNoIGlzIHJlc29sdmVkIG9uY2UgdGhlIGFjdGl2ZSBjb250ZXh0J3MgYXJlIGZldGNoZWRcbiAqL1xuZnVuY3Rpb24gZ2V0QWN0aXZlQ29udGV4dFBhdGhzKG9Db250ZXh0OiBhbnksIG9Db250cm9sbGVyOiBhbnkpIHtcblx0Y29uc3Qgc0N1cnJlbnRIYXNoTm9QYXJhbXMgPSBIYXNoQ2hhbmdlci5nZXRJbnN0YW5jZSgpLmdldEhhc2goKS5zcGxpdChcIj9cIilbMF07XG5cdGxldCBzUm9vdEVudGl0eU5hbWUgPSBzQ3VycmVudEhhc2hOb1BhcmFtcyAmJiBzQ3VycmVudEhhc2hOb1BhcmFtcy5zdWJzdHIoMCwgc0N1cnJlbnRIYXNoTm9QYXJhbXMuaW5kZXhPZihcIihcIikpO1xuXHRpZiAoc1Jvb3RFbnRpdHlOYW1lLmluZGV4T2YoXCIvXCIpID09PSAwKSB7XG5cdFx0c1Jvb3RFbnRpdHlOYW1lID0gc1Jvb3RFbnRpdHlOYW1lLnN1YnN0cmluZygxKTtcblx0fVxuXHRjb25zdCBvRW50aXR5U2V0ID0gb0NvbnRleHQuZ2V0TW9kZWwoKS5nZXRNZXRhTW9kZWwoKS5nZXRPYmplY3QoYC8ke3NSb290RW50aXR5TmFtZX1gKTtcblx0Y29uc3Qgb1BhZ2VDb250ZXh0ID0gb0NvbnRleHQ7XG5cdGNvbnN0IGFBY3RpdmVDb250ZXh0cHJvbWlzZXMgPSBnZXRBY3RpdmVDb250ZXh0SW5zdGFuY2VzKG9Db250ZXh0LCBvQ29udHJvbGxlciwgb0VudGl0eVNldCk7XG5cdGlmIChhQWN0aXZlQ29udGV4dHByb21pc2VzLmxlbmd0aCA+IDApIHtcblx0XHRyZXR1cm4gUHJvbWlzZS5hbGwoYUFjdGl2ZUNvbnRleHRwcm9taXNlcylcblx0XHRcdC50aGVuKGZ1bmN0aW9uIChhRGF0YTogYW55W10pIHtcblx0XHRcdFx0Y29uc3QgYUFjdGl2ZUNvbnRleHRQYXRocyA9IFtdO1xuXHRcdFx0XHRsZXQgb1BhZ2VFbnRpdHlTZXQgPSBvRW50aXR5U2V0O1xuXHRcdFx0XHRpZiAoYURhdGFbMF0uaW5kZXhPZihcIi9cIikgPT09IDApIHtcblx0XHRcdFx0XHRhQWN0aXZlQ29udGV4dFBhdGhzLnB1c2goYURhdGFbMF0uc3Vic3RyaW5nKDEpKTtcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRhQWN0aXZlQ29udGV4dFBhdGhzLnB1c2goYURhdGFbMF0pO1xuXHRcdFx0XHR9XG5cdFx0XHRcdC8vIEluIHRoZSBhY3RpdmUgY29udGV4dCBwYXRocyBpZGVudGlmeSBhbmQgcmVwbGFjZSB0aGUgZW50aXR5U2V0IE5hbWUgd2l0aCBjb3JyZXNwb25kaW5nIG5hdmlnYXRpb24gcHJvcGVydHkgbmFtZVxuXHRcdFx0XHQvLyBSZXF1aXJlZCB0byBmb3JtIHRoZSB1cmwgcG9pbnRpbmcgdG8gYWN0aXZlIGNvbnRleHRcblx0XHRcdFx0Ly8gRXhhbXBsZSA6IFNhbGVzT3JkZXJJdGVtIC0tPiBfSXRlbSwgTWF0ZXJpYWxEZXRhaWxzIC0tPiBfTWF0ZXJpYWxEZXRhaWxzIGV0Yy4sXG5cdFx0XHRcdGZvciAobGV0IGkgPSAxOyBpIDwgYURhdGEubGVuZ3RoOyBpKyspIHtcblx0XHRcdFx0XHRsZXQgc0FjdGl2ZUNvbnRleHRQYXRoID0gYURhdGFbaV07XG5cdFx0XHRcdFx0bGV0IHNOYXZpZ2F0aW9Qcm9wZXJ0eSA9IFwiXCI7XG5cdFx0XHRcdFx0bGV0IHNFbnRpdHlTZXROYW1lID0gc0FjdGl2ZUNvbnRleHRQYXRoICYmIHNBY3RpdmVDb250ZXh0UGF0aC5zdWJzdHIoMCwgc0FjdGl2ZUNvbnRleHRQYXRoLmluZGV4T2YoXCIoXCIpKTtcblx0XHRcdFx0XHRpZiAoc0VudGl0eVNldE5hbWUuaW5kZXhPZihcIi9cIikgPT09IDApIHtcblx0XHRcdFx0XHRcdHNFbnRpdHlTZXROYW1lID0gc0VudGl0eVNldE5hbWUuc3Vic3RyaW5nKDEpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRpZiAoc0FjdGl2ZUNvbnRleHRQYXRoLmluZGV4T2YoXCIvXCIpID09PSAwKSB7XG5cdFx0XHRcdFx0XHRzQWN0aXZlQ29udGV4dFBhdGggPSBzQWN0aXZlQ29udGV4dFBhdGguc3Vic3RyaW5nKDEpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRzTmF2aWdhdGlvUHJvcGVydHkgPSBPYmplY3Qua2V5cyhvUGFnZUVudGl0eVNldC4kTmF2aWdhdGlvblByb3BlcnR5QmluZGluZylbXG5cdFx0XHRcdFx0XHRPYmplY3QudmFsdWVzKG9QYWdlRW50aXR5U2V0LiROYXZpZ2F0aW9uUHJvcGVydHlCaW5kaW5nKS5pbmRleE9mKHNFbnRpdHlTZXROYW1lKVxuXHRcdFx0XHRcdF07XG5cdFx0XHRcdFx0aWYgKHNOYXZpZ2F0aW9Qcm9wZXJ0eSkge1xuXHRcdFx0XHRcdFx0YUFjdGl2ZUNvbnRleHRQYXRocy5wdXNoKHNBY3RpdmVDb250ZXh0UGF0aC5yZXBsYWNlKHNFbnRpdHlTZXROYW1lLCBzTmF2aWdhdGlvUHJvcGVydHkpKTtcblx0XHRcdFx0XHRcdG9QYWdlRW50aXR5U2V0ID0gb1BhZ2VDb250ZXh0LmdldE1vZGVsKCkuZ2V0TWV0YU1vZGVsKCkuZ2V0T2JqZWN0KGAvJHtzRW50aXR5U2V0TmFtZX1gKSB8fCBvRW50aXR5U2V0O1xuXHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRhQWN0aXZlQ29udGV4dFBhdGhzLnB1c2goc0FjdGl2ZUNvbnRleHRQYXRoKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdFx0cmV0dXJuIGFBY3RpdmVDb250ZXh0UGF0aHM7XG5cdFx0XHR9KVxuXHRcdFx0LmNhdGNoKGZ1bmN0aW9uIChvRXJyb3I6IGFueSkge1xuXHRcdFx0XHRMb2cuaW5mbyhcIkZhaWxlZCB0byByZXRyaWV2ZSBvbmUgb3IgbW9yZSBhY3RpdmUgY29udGV4dCBwYXRoJ3NcIiwgb0Vycm9yKTtcblx0XHRcdH0pO1xuXHR9IGVsc2Uge1xuXHRcdHJldHVybiBQcm9taXNlLnJlc29sdmUoKTtcblx0fVxufVxuZnVuY3Rpb24gZmV0Y2hBY3RpdmVDb250ZXh0UGF0aHMob0NvbnRleHQ6IGFueSwgb0NvbnRyb2xsZXI6IGFueSkge1xuXHRsZXQgb1Byb21pc2UsIGFTZW1hbnRpY0tleXM7XG5cdGNvbnN0IHNDdXJyZW50SGFzaE5vUGFyYW1zID0gSGFzaENoYW5nZXIuZ2V0SW5zdGFuY2UoKS5nZXRIYXNoKCkuc3BsaXQoXCI/XCIpWzBdO1xuXHRpZiAob0NvbnRleHQpIHtcblx0XHRjb25zdCBvTW9kZWwgPSBvQ29udGV4dC5nZXRNb2RlbCgpO1xuXHRcdGNvbnN0IG9NZXRhTW9kZWwgPSBvTW9kZWwuZ2V0TWV0YU1vZGVsKCk7XG5cdFx0Ykdsb2JhbElzU3RpY2t5U3VwcG9ydGVkID0gTW9kZWxIZWxwZXIuaXNTdGlja3lTZXNzaW9uU3VwcG9ydGVkKG9NZXRhTW9kZWwpO1xuXHRcdGxldCBzUm9vdEVudGl0eU5hbWUgPSBzQ3VycmVudEhhc2hOb1BhcmFtcyAmJiBzQ3VycmVudEhhc2hOb1BhcmFtcy5zdWJzdHIoMCwgc0N1cnJlbnRIYXNoTm9QYXJhbXMuaW5kZXhPZihcIihcIikpO1xuXHRcdGlmIChzUm9vdEVudGl0eU5hbWUuaW5kZXhPZihcIi9cIikgPT09IDApIHtcblx0XHRcdHNSb290RW50aXR5TmFtZSA9IHNSb290RW50aXR5TmFtZS5zdWJzdHJpbmcoMSk7XG5cdFx0fVxuXHRcdGFTZW1hbnRpY0tleXMgPSBTZW1hbnRpY0tleUhlbHBlci5nZXRTZW1hbnRpY0tleXMob01ldGFNb2RlbCwgc1Jvb3RFbnRpdHlOYW1lKTtcblx0fVxuXHQvLyBGZXRjaCBhY3RpdmUgY29udGV4dCBkZXRhaWxzIGluY2FzZSBvZiBiZWxvdyBzY2VuYXJpbydzKHdoZXJlIHBhZ2UgaXMgbm90IHN0aWNreSBzdXBwb3J0ZWQod2UgZG8gbm90IGhhdmUgZHJhZnQgaW5zdGFuY2UpKVxuXHQvLyAxLiBJbiBjYXNlIG9mIGRyYWZ0IGVuYWJsZWQgT2JqZWN0IHBhZ2Ugd2hlcmUgc2VtYW50aWMga2V5IGJhc2VkIFVSTCBpcyBub3QgcG9zc2libGUobGlrZSBzZW1hbnRpYyBrZXlzIGFyZSBub3QgbW9kZWxlZCBpbiB0aGUgZW50aXR5IHNldClcblx0Ly8gMi4gSW4gY2FzZSBvZiBkcmFmdCBlbmFibGVkIFN1YiBPYmplY3QgUGFnZXMgKHdoZXJlIHNlbWFudGljIGJvb2ttYXJraW5nIGlzIG5vdCBzdXBwb3J0ZWQpXG5cdGNvbnN0IG9WaWV3RGF0YSA9IG9Db250cm9sbGVyLmdldFZpZXcoKS5nZXRWaWV3RGF0YSgpO1xuXHRpZiAob0NvbnRleHQgJiYgIWJHbG9iYWxJc1N0aWNreVN1cHBvcnRlZCAmJiAoKG9WaWV3RGF0YS52aWV3TGV2ZWwgPT09IDEgJiYgIWFTZW1hbnRpY0tleXMpIHx8IG9WaWV3RGF0YS52aWV3TGV2ZWwgPj0gMikpIHtcblx0XHRvUHJvbWlzZSA9IGdldEFjdGl2ZUNvbnRleHRQYXRocyhvQ29udGV4dCwgb0NvbnRyb2xsZXIpO1xuXHRcdHJldHVybiBvUHJvbWlzZTtcblx0fSBlbHNlIHtcblx0XHRyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7XG5cdH1cbn1cblxuLy8gLyoqXG4vLyAgKiBHZXQgc2hhcmUgVVJMLlxuLy8gICogQHBhcmFtIGJJc0VkaXRhYmxlXG4vLyAgKiBAcGFyYW0gYklzU3RpY2t5U3VwcG9ydGVkXG4vLyAgKiBAcGFyYW0gYUFjdGl2ZUNvbnRleHRQYXRoc1xuLy8gICogQHJldHVybnMge3N0cmluZ30gVGhlIHNoYXJlIFVSTFxuLy8gICogQHByb3RlY3RlZFxuLy8gICogQHN0YXRpY1xuLy8gICovXG5mdW5jdGlvbiBnZXRTaGFyZVVybChiSXNFZGl0YWJsZTogYW55LCBiSXNTdGlja3lTdXBwb3J0ZWQ6IGFueSwgYUFjdGl2ZUNvbnRleHRQYXRoczogYW55KSB7XG5cdGxldCBzU2hhcmVVcmw7XG5cdGNvbnN0IHNIYXNoID0gSGFzaENoYW5nZXIuZ2V0SW5zdGFuY2UoKS5nZXRIYXNoKCk7XG5cdGNvbnN0IHNCYXNlUGF0aCA9IChIYXNoQ2hhbmdlci5nZXRJbnN0YW5jZSgpIGFzIGFueSkuaHJlZkZvckFwcFNwZWNpZmljSGFzaFxuXHRcdD8gKEhhc2hDaGFuZ2VyLmdldEluc3RhbmNlKCkgYXMgYW55KS5ocmVmRm9yQXBwU3BlY2lmaWNIYXNoKFwiXCIpXG5cdFx0OiBcIlwiO1xuXHRpZiAoYklzRWRpdGFibGUgJiYgIWJJc1N0aWNreVN1cHBvcnRlZCAmJiBhQWN0aXZlQ29udGV4dFBhdGhzKSB7XG5cdFx0c1NoYXJlVXJsID0gc0Jhc2VQYXRoICsgYUFjdGl2ZUNvbnRleHRQYXRocy5qb2luKFwiL1wiKTtcblx0fSBlbHNlIHtcblx0XHRzU2hhcmVVcmwgPSBzSGFzaCA/IHNCYXNlUGF0aCArIHNIYXNoIDogd2luZG93LmxvY2F0aW9uLmhhc2g7XG5cdH1cblx0cmV0dXJuIHNTaGFyZVVybDtcbn1cbmZ1bmN0aW9uIGdldFNoYXJlRW1haWxVcmwoKSB7XG5cdGNvbnN0IG9VU2hlbGxDb250YWluZXIgPSBzYXAudXNoZWxsICYmIHNhcC51c2hlbGwuQ29udGFpbmVyO1xuXHRpZiAob1VTaGVsbENvbnRhaW5lcikge1xuXHRcdHJldHVybiBvVVNoZWxsQ29udGFpbmVyXG5cdFx0XHQuZ2V0RkxQVXJsQXN5bmModHJ1ZSlcblx0XHRcdC50aGVuKGZ1bmN0aW9uIChzRkxQVXJsOiBhbnkpIHtcblx0XHRcdFx0cmV0dXJuIHNGTFBVcmw7XG5cdFx0XHR9KVxuXHRcdFx0LmNhdGNoKGZ1bmN0aW9uIChzRXJyb3I6IGFueSkge1xuXHRcdFx0XHRMb2cuZXJyb3IoXCJDb3VsZCBub3QgcmV0cmlldmUgY0ZMUCBVUkwgZm9yIHRoZSBzaGFyaW5nIGRpYWxvZyAoZGlhbG9nIHdpbGwgbm90IGJlIG9wZW5lZClcIiwgc0Vycm9yKTtcblx0XHRcdH0pO1xuXHR9IGVsc2Uge1xuXHRcdHJldHVybiBQcm9taXNlLnJlc29sdmUoZG9jdW1lbnQuVVJMKTtcblx0fVxufVxuXG5mdW5jdGlvbiBnZXRKYW1VcmwoYklzRWRpdE1vZGU6IGJvb2xlYW4sIGJJc1N0aWNreVN1cHBvcnRlZDogYW55LCBhQWN0aXZlQ29udGV4dFBhdGhzOiBhbnkpIHtcblx0bGV0IHNKYW1Vcmw6IHN0cmluZztcblx0Y29uc3Qgc0hhc2ggPSBIYXNoQ2hhbmdlci5nZXRJbnN0YW5jZSgpLmdldEhhc2goKTtcblx0Y29uc3Qgc0Jhc2VQYXRoID0gKEhhc2hDaGFuZ2VyLmdldEluc3RhbmNlKCkgYXMgYW55KS5ocmVmRm9yQXBwU3BlY2lmaWNIYXNoXG5cdFx0PyAoSGFzaENoYW5nZXIuZ2V0SW5zdGFuY2UoKSBhcyBhbnkpLmhyZWZGb3JBcHBTcGVjaWZpY0hhc2goXCJcIilcblx0XHQ6IFwiXCI7XG5cdGlmIChiSXNFZGl0TW9kZSAmJiAhYklzU3RpY2t5U3VwcG9ydGVkICYmIGFBY3RpdmVDb250ZXh0UGF0aHMpIHtcblx0XHRzSmFtVXJsID0gc0Jhc2VQYXRoICsgYUFjdGl2ZUNvbnRleHRQYXRocy5qb2luKFwiL1wiKTtcblx0fSBlbHNlIHtcblx0XHRzSmFtVXJsID0gc0hhc2ggPyBzQmFzZVBhdGggKyBzSGFzaCA6IHdpbmRvdy5sb2NhdGlvbi5oYXNoO1xuXHR9XG5cdC8vIGluIGNhc2Ugd2UgYXJlIGluIGNGTFAgc2NlbmFyaW8sIHRoZSBhcHBsaWNhdGlvbiBpcyBydW5uaW5nXG5cdC8vIGluc2lkZSBhbiBpZnJhbWUsIGFuZCB0aGVyZSBmb3Igd2UgbmVlZCB0byBnZXQgdGhlIGNGTFAgVVJMXG5cdC8vIGFuZCBub3QgJ2RvY3VtZW50LlVSTCcgdGhhdCByZXByZXNlbnRzIHRoZSBpZnJhbWUgVVJMXG5cdGlmIChzYXAudXNoZWxsICYmIHNhcC51c2hlbGwuQ29udGFpbmVyICYmIHNhcC51c2hlbGwuQ29udGFpbmVyLnJ1bm5pbmdJbklmcmFtZSAmJiBzYXAudXNoZWxsLkNvbnRhaW5lci5ydW5uaW5nSW5JZnJhbWUoKSkge1xuXHRcdHNhcC51c2hlbGwuQ29udGFpbmVyLmdldEZMUFVybCh0cnVlKVxuXHRcdFx0LnRoZW4oZnVuY3Rpb24gKHNVcmw6IGFueSkge1xuXHRcdFx0XHRyZXR1cm4gc1VybC5zdWJzdHIoMCwgc1VybC5pbmRleE9mKFwiI1wiKSkgKyBzSmFtVXJsO1xuXHRcdFx0fSlcblx0XHRcdC5jYXRjaChmdW5jdGlvbiAoc0Vycm9yOiBhbnkpIHtcblx0XHRcdFx0TG9nLmVycm9yKFwiQ291bGQgbm90IHJldHJpZXZlIGNGTFAgVVJMIGZvciB0aGUgc2hhcmluZyBkaWFsb2cgKGRpYWxvZyB3aWxsIG5vdCBiZSBvcGVuZWQpXCIsIHNFcnJvcik7XG5cdFx0XHR9KTtcblx0fSBlbHNlIHtcblx0XHRyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHdpbmRvdy5sb2NhdGlvbi5vcmlnaW4gKyB3aW5kb3cubG9jYXRpb24ucGF0aG5hbWUgKyBzSmFtVXJsKTtcblx0fVxufVxuXG5jb25zdCBTaGFyZUV4dGVuc2lvbk92ZXJyaWRlID0ge1xuXHRhZGFwdFNoYXJlTWV0YWRhdGE6IGZ1bmN0aW9uICh0aGlzOiBTaGFyZSwgb1NoYXJlTWV0YWRhdGE6IGFueSkge1xuXHRcdGNvbnN0IG9Db250ZXh0ID0gdGhpcy5iYXNlLmdldFZpZXcoKS5nZXRCaW5kaW5nQ29udGV4dCgpLFxuXHRcdFx0b1VJTW9kZWwgPSB0aGlzLmJhc2UuZ2V0VmlldygpLmdldE1vZGVsKFwidWlcIiksXG5cdFx0XHRiSXNFZGl0YWJsZSA9IG9VSU1vZGVsLmdldFByb3BlcnR5KFwiL2lzRWRpdGFibGVcIik7XG5cdFx0cmV0dXJuIGZldGNoQWN0aXZlQ29udGV4dFBhdGhzKG9Db250ZXh0LCB0aGlzLmJhc2UuZ2V0VmlldygpLmdldENvbnRyb2xsZXIoKSkudGhlbigoYUFjdGl2ZUNvbnRleHRQYXRocykgPT4ge1xuXHRcdFx0Y29uc3Qgb1BhZ2VUaXRsZUluZm8gPSAodGhpcy5iYXNlLmdldFZpZXcoKS5nZXRDb250cm9sbGVyKCkgYXMgT2JqZWN0UGFnZUNvbnRyb2xsZXIpLl9nZXRQYWdlVGl0bGVJbmZvcm1hdGlvbigpO1xuXG5cdFx0XHRyZXR1cm4gUHJvbWlzZS5hbGwoW1xuXHRcdFx0XHRnZXRKYW1VcmwoYklzRWRpdGFibGUsIGJHbG9iYWxJc1N0aWNreVN1cHBvcnRlZCwgYUFjdGl2ZUNvbnRleHRQYXRocyksXG5cdFx0XHRcdGdldFNoYXJlVXJsKGJJc0VkaXRhYmxlLCBiR2xvYmFsSXNTdGlja3lTdXBwb3J0ZWQsIGFBY3RpdmVDb250ZXh0UGF0aHMpLFxuXHRcdFx0XHRnZXRTaGFyZUVtYWlsVXJsKClcblx0XHRcdF0pXG5cdFx0XHRcdC50aGVuKGZ1bmN0aW9uIChvRGF0YSkge1xuXHRcdFx0XHRcdGxldCBzVGl0bGUgPSBvUGFnZVRpdGxlSW5mby50aXRsZTtcblx0XHRcdFx0XHRjb25zdCBzT2JqZWN0U3VidGl0bGUgPSBvUGFnZVRpdGxlSW5mby5zdWJ0aXRsZSA/IG9QYWdlVGl0bGVJbmZvLnN1YnRpdGxlLnRvU3RyaW5nKCkgOiBcIlwiO1xuXHRcdFx0XHRcdGlmIChzT2JqZWN0U3VidGl0bGUpIHtcblx0XHRcdFx0XHRcdHNUaXRsZSA9IGAke3NUaXRsZX0gLSAke3NPYmplY3RTdWJ0aXRsZX1gO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRvU2hhcmVNZXRhZGF0YS50aWxlID0ge1xuXHRcdFx0XHRcdFx0dGl0bGU6IG9QYWdlVGl0bGVJbmZvLnRpdGxlLFxuXHRcdFx0XHRcdFx0c3VidGl0bGU6IHNPYmplY3RTdWJ0aXRsZVxuXHRcdFx0XHRcdH07XG5cdFx0XHRcdFx0b1NoYXJlTWV0YWRhdGEuZW1haWwudGl0bGUgPSBzVGl0bGU7XG5cdFx0XHRcdFx0b1NoYXJlTWV0YWRhdGEudGl0bGUgPSBzVGl0bGU7XG5cdFx0XHRcdFx0b1NoYXJlTWV0YWRhdGEuamFtLnVybCA9IG9EYXRhWzBdO1xuXHRcdFx0XHRcdG9TaGFyZU1ldGFkYXRhLnVybCA9IG9EYXRhWzFdO1xuXHRcdFx0XHRcdG9TaGFyZU1ldGFkYXRhLmVtYWlsLnVybCA9IG9EYXRhWzJdO1xuXG5cdFx0XHRcdFx0cmV0dXJuIG9TaGFyZU1ldGFkYXRhO1xuXHRcdFx0XHR9KVxuXHRcdFx0XHQuY2F0Y2goZnVuY3Rpb24gKGVycm9yOiBhbnkpIHtcblx0XHRcdFx0XHRMb2cuZXJyb3IoZXJyb3IpO1xuXHRcdFx0XHR9KTtcblx0XHR9KTtcblx0fVxufTtcblxuZXhwb3J0IGRlZmF1bHQgU2hhcmVFeHRlbnNpb25PdmVycmlkZTtcbiJdfQ==
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
import Log from "sap/base/Log";
|
|
2
|
-
import Share from "sap/fe/core/controllerextensions/Share";
|
|
2
|
+
import type Share from "sap/fe/core/controllerextensions/Share";
|
|
3
3
|
import ModelHelper from "sap/fe/core/helpers/ModelHelper";
|
|
4
4
|
import SemanticKeyHelper from "sap/fe/core/helpers/SemanticKeyHelper";
|
|
5
|
-
import ObjectPageController from "sap/fe/templates/ObjectPage/ObjectPageController.controller";
|
|
5
|
+
import type ObjectPageController from "sap/fe/templates/ObjectPage/ObjectPageController.controller";
|
|
6
6
|
import HashChanger from "sap/ui/core/routing/HashChanger";
|
|
7
7
|
import Filter from "sap/ui/model/Filter";
|
|
8
8
|
import FilterOperator from "sap/ui/model/FilterOperator";
|
|
9
9
|
|
|
10
|
-
let
|
|
10
|
+
let bGlobalIsStickySupported: boolean;
|
|
11
11
|
|
|
12
12
|
function createFilterToFetchActiveContext(mKeyValues: any, bIsActiveEntityDefined: any) {
|
|
13
13
|
const aKeys = Object.keys(mKeyValues);
|
|
@@ -28,15 +28,14 @@ function createFilterToFetchActiveContext(mKeyValues: any, bIsActiveEntityDefine
|
|
|
28
28
|
aFilters.push(oActiveFilter);
|
|
29
29
|
}
|
|
30
30
|
|
|
31
|
-
|
|
32
|
-
return oCombinedFilter;
|
|
31
|
+
return new Filter(aFilters as any, true);
|
|
33
32
|
}
|
|
34
33
|
function getActiveContextPath(oController: any, sPageEntityName: any, oFilter: any) {
|
|
35
34
|
const oListBinding = oController
|
|
36
35
|
.getView()
|
|
37
36
|
.getBindingContext()
|
|
38
37
|
.getModel()
|
|
39
|
-
.bindList(
|
|
38
|
+
.bindList(`/${sPageEntityName}`, undefined, undefined, oFilter, { "$$groupId": "$auto.Heroes" });
|
|
40
39
|
return oListBinding.requestContexts(0, 2).then(function (oContexts: any) {
|
|
41
40
|
if (oContexts && oContexts.length) {
|
|
42
41
|
return oContexts[0].getPath();
|
|
@@ -77,7 +76,7 @@ function getActiveContextInstances(oContext: any, oController: any, oEntitySet:
|
|
|
77
76
|
// Hence in such cases we get technical key and use them to fetch active context
|
|
78
77
|
if (sKeyAssignment.indexOf("=") === -1) {
|
|
79
78
|
const oMetaModel = oContext.getModel().getMetaModel();
|
|
80
|
-
const aTechnicalKeys = oMetaModel.getObject(
|
|
79
|
+
const aTechnicalKeys = oMetaModel.getObject(`/${aPageHashArray.join("/")}/$Type/$Key`);
|
|
81
80
|
sKeyValue = aParts[0];
|
|
82
81
|
sKey = aTechnicalKeys[0];
|
|
83
82
|
oPageMap[sPageHash.split("(")[0]]["bIsActiveEntityDefined"] = false;
|
|
@@ -100,11 +99,7 @@ function getActiveContextInstances(oContext: any, oController: any, oEntitySet:
|
|
|
100
99
|
const sPageEntitySetName = oPageEntitySet.$NavigationPropertyBinding && oPageEntitySet.$NavigationPropertyBinding[sNavigationPath];
|
|
101
100
|
if (sPageEntitySetName) {
|
|
102
101
|
oPageInfo.pageEntityName = oPageEntitySet.$NavigationPropertyBinding[sNavigationPath];
|
|
103
|
-
oPageEntitySet =
|
|
104
|
-
oContext
|
|
105
|
-
.getModel()
|
|
106
|
-
.getMetaModel()
|
|
107
|
-
.getObject("/" + sPageEntitySetName) || oEntitySet;
|
|
102
|
+
oPageEntitySet = oContext.getModel().getMetaModel().getObject(`/${sPageEntitySetName}`) || oEntitySet;
|
|
108
103
|
} else {
|
|
109
104
|
oPageInfo.pageEntityName = sNavigationPath;
|
|
110
105
|
}
|
|
@@ -123,9 +118,10 @@ function getActiveContextInstances(oContext: any, oController: any, oEntitySet:
|
|
|
123
118
|
|
|
124
119
|
/**
|
|
125
120
|
* Method to fetch active context path's.
|
|
126
|
-
*
|
|
121
|
+
*
|
|
122
|
+
* @param oContext The Page Context
|
|
127
123
|
* @param oController
|
|
128
|
-
* @returns
|
|
124
|
+
* @returns Promise which is resolved once the active context's are fetched
|
|
129
125
|
*/
|
|
130
126
|
function getActiveContextPaths(oContext: any, oController: any) {
|
|
131
127
|
const sCurrentHashNoParams = HashChanger.getInstance().getHash().split("?")[0];
|
|
@@ -133,10 +129,7 @@ function getActiveContextPaths(oContext: any, oController: any) {
|
|
|
133
129
|
if (sRootEntityName.indexOf("/") === 0) {
|
|
134
130
|
sRootEntityName = sRootEntityName.substring(1);
|
|
135
131
|
}
|
|
136
|
-
const oEntitySet = oContext
|
|
137
|
-
.getModel()
|
|
138
|
-
.getMetaModel()
|
|
139
|
-
.getObject("/" + sRootEntityName);
|
|
132
|
+
const oEntitySet = oContext.getModel().getMetaModel().getObject(`/${sRootEntityName}`);
|
|
140
133
|
const oPageContext = oContext;
|
|
141
134
|
const aActiveContextpromises = getActiveContextInstances(oContext, oController, oEntitySet);
|
|
142
135
|
if (aActiveContextpromises.length > 0) {
|
|
@@ -167,11 +160,7 @@ function getActiveContextPaths(oContext: any, oController: any) {
|
|
|
167
160
|
];
|
|
168
161
|
if (sNavigatioProperty) {
|
|
169
162
|
aActiveContextPaths.push(sActiveContextPath.replace(sEntitySetName, sNavigatioProperty));
|
|
170
|
-
oPageEntitySet =
|
|
171
|
-
oPageContext
|
|
172
|
-
.getModel()
|
|
173
|
-
.getMetaModel()
|
|
174
|
-
.getObject("/" + sEntitySetName) || oEntitySet;
|
|
163
|
+
oPageEntitySet = oPageContext.getModel().getMetaModel().getObject(`/${sEntitySetName}`) || oEntitySet;
|
|
175
164
|
} else {
|
|
176
165
|
aActiveContextPaths.push(sActiveContextPath);
|
|
177
166
|
}
|
|
@@ -191,7 +180,7 @@ function fetchActiveContextPaths(oContext: any, oController: any) {
|
|
|
191
180
|
if (oContext) {
|
|
192
181
|
const oModel = oContext.getModel();
|
|
193
182
|
const oMetaModel = oModel.getMetaModel();
|
|
194
|
-
|
|
183
|
+
bGlobalIsStickySupported = ModelHelper.isStickySessionSupported(oMetaModel);
|
|
195
184
|
let sRootEntityName = sCurrentHashNoParams && sCurrentHashNoParams.substr(0, sCurrentHashNoParams.indexOf("("));
|
|
196
185
|
if (sRootEntityName.indexOf("/") === 0) {
|
|
197
186
|
sRootEntityName = sRootEntityName.substring(1);
|
|
@@ -202,7 +191,7 @@ function fetchActiveContextPaths(oContext: any, oController: any) {
|
|
|
202
191
|
// 1. In case of draft enabled Object page where semantic key based URL is not possible(like semantic keys are not modeled in the entity set)
|
|
203
192
|
// 2. In case of draft enabled Sub Object Pages (where semantic bookmarking is not supported)
|
|
204
193
|
const oViewData = oController.getView().getViewData();
|
|
205
|
-
if (oContext && !
|
|
194
|
+
if (oContext && !bGlobalIsStickySupported && ((oViewData.viewLevel === 1 && !aSemanticKeys) || oViewData.viewLevel >= 2)) {
|
|
206
195
|
oPromise = getActiveContextPaths(oContext, oController);
|
|
207
196
|
return oPromise;
|
|
208
197
|
} else {
|
|
@@ -284,19 +273,19 @@ const ShareExtensionOverride = {
|
|
|
284
273
|
const oPageTitleInfo = (this.base.getView().getController() as ObjectPageController)._getPageTitleInformation();
|
|
285
274
|
|
|
286
275
|
return Promise.all([
|
|
287
|
-
getJamUrl(bIsEditable,
|
|
288
|
-
getShareUrl(bIsEditable,
|
|
276
|
+
getJamUrl(bIsEditable, bGlobalIsStickySupported, aActiveContextPaths),
|
|
277
|
+
getShareUrl(bIsEditable, bGlobalIsStickySupported, aActiveContextPaths),
|
|
289
278
|
getShareEmailUrl()
|
|
290
279
|
])
|
|
291
280
|
.then(function (oData) {
|
|
292
281
|
let sTitle = oPageTitleInfo.title;
|
|
293
|
-
const sObjectSubtitle = oPageTitleInfo.subtitle.toString();
|
|
282
|
+
const sObjectSubtitle = oPageTitleInfo.subtitle ? oPageTitleInfo.subtitle.toString() : "";
|
|
294
283
|
if (sObjectSubtitle) {
|
|
295
|
-
sTitle = sTitle
|
|
284
|
+
sTitle = `${sTitle} - ${sObjectSubtitle}`;
|
|
296
285
|
}
|
|
297
286
|
oShareMetadata.tile = {
|
|
298
287
|
title: oPageTitleInfo.title,
|
|
299
|
-
subtitle:
|
|
288
|
+
subtitle: sObjectSubtitle
|
|
300
289
|
};
|
|
301
290
|
oShareMetadata.email.title = sTitle;
|
|
302
291
|
oShareMetadata.title = sTitle;
|
|
@@ -26,7 +26,7 @@ sap.ui.define(["sap/fe/core/helpers/KeepAliveHelper", "sap/fe/core/library"], fu
|
|
|
26
26
|
break;
|
|
27
27
|
|
|
28
28
|
default:
|
|
29
|
-
throw new Error("unhandled variant setting: "
|
|
29
|
+
throw new Error("unhandled variant setting: ".concat(oViewData.getVariantManagement()));
|
|
30
30
|
}
|
|
31
31
|
|
|
32
32
|
oController._findTables().forEach(function (oTable) {
|
|
@@ -72,4 +72,4 @@ sap.ui.define(["sap/fe/core/helpers/KeepAliveHelper", "sap/fe/core/library"], fu
|
|
|
72
72
|
};
|
|
73
73
|
return ViewStateExtensionOverride;
|
|
74
74
|
}, false);
|
|
75
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,
|
|
75
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIlZpZXdTdGF0ZS50cyJdLCJuYW1lcyI6WyJWYXJpYW50TWFuYWdlbWVudCIsIkNvcmVMaWJyYXJ5IiwiVmlld1N0YXRlRXh0ZW5zaW9uT3ZlcnJpZGUiLCJhcHBseUluaXRpYWxTdGF0ZU9ubHkiLCJhZGFwdFN0YXRlQ29udHJvbHMiLCJhU3RhdGVDb250cm9scyIsIm9WaWV3IiwiZ2V0VmlldyIsIm9Db250cm9sbGVyIiwiZ2V0Q29udHJvbGxlciIsIm9WaWV3RGF0YSIsImdldFZpZXdEYXRhIiwiYkNvbnRyb2xWTSIsInZhcmlhbnRNYW5hZ2VtZW50IiwiQ29udHJvbCIsIlBhZ2UiLCJOb25lIiwiRXJyb3IiLCJnZXRWYXJpYW50TWFuYWdlbWVudCIsIl9maW5kVGFibGVzIiwiZm9yRWFjaCIsIm9UYWJsZSIsIm9RdWlja0ZpbHRlciIsImdldFF1aWNrRmlsdGVyIiwicHVzaCIsImdldFZhcmlhbnQiLCJieUlkIiwiYWRhcHRCaW5kaW5nUmVmcmVzaENvbnRyb2xzIiwiYUNvbnRyb2xzIiwic1JlZnJlc2hTdHJhdGVneSIsIktlZXBBbGl2ZUhlbHBlciIsImdldFZpZXdSZWZyZXNoSW5mbyIsImFDb250cm9sc1RvUmVmcmVzaCIsIm9PYmplY3RQYWdlQ29udHJvbCIsIl9nZXRPYmplY3RQYWdlTGF5b3V0Q29udHJvbCIsImFWaWV3Q29udHJvbHMiLCJjb25jYXQiLCJnZXRDb250cm9sc0ZvclJlZnJlc2giLCJyZWR1Y2UiLCJhUHJldkNvbnRyb2xzIiwib0NvbnRyb2wiLCJpbmRleE9mIl0sIm1hcHBpbmdzIjoiO0FBQUE7QUFDQTtBQUNBOzs7O0FBSUEsTUFBTUEsaUJBQWlCLEdBQUdDLFdBQVcsQ0FBQ0QsaUJBQXRDO0FBRUEsTUFBTUUsMEJBQTBCLEdBQUc7QUFDbENDLElBQUFBLHFCQUFxQixFQUFFLFlBQVk7QUFDbEMsYUFBTyxLQUFQO0FBQ0EsS0FIaUM7QUFJbENDLElBQUFBLGtCQUFrQixFQUFFLFVBQTJCQyxjQUEzQixFQUFnRDtBQUNuRSxVQUFNQyxLQUFLLEdBQUcsS0FBS0MsT0FBTCxFQUFkO0FBQUEsVUFDQ0MsV0FBVyxHQUFHRixLQUFLLENBQUNHLGFBQU4sRUFEZjtBQUFBLFVBRUNDLFNBQVMsR0FBR0osS0FBSyxDQUFDSyxXQUFOLEVBRmI7QUFHQSxVQUFJQyxVQUFVLEdBQUcsS0FBakI7O0FBRUEsY0FBUUYsU0FBUyxDQUFDRyxpQkFBbEI7QUFDQyxhQUFLYixpQkFBaUIsQ0FBQ2MsT0FBdkI7QUFDQ0YsVUFBQUEsVUFBVSxHQUFHLElBQWI7QUFDQTs7QUFDRCxhQUFLWixpQkFBaUIsQ0FBQ2UsSUFBdkI7QUFDQSxhQUFLZixpQkFBaUIsQ0FBQ2dCLElBQXZCO0FBQ0M7O0FBQ0Q7QUFDQyxnQkFBTSxJQUFJQyxLQUFKLHNDQUF3Q1AsU0FBUyxDQUFDUSxvQkFBVixFQUF4QyxFQUFOO0FBUkY7O0FBV0NWLE1BQUFBLFdBQUQsQ0FBc0NXLFdBQXRDLEdBQW9EQyxPQUFwRCxDQUE0RCxVQUFVQyxNQUFWLEVBQXVCO0FBQ2xGLFlBQU1DLFlBQVksR0FBR0QsTUFBTSxDQUFDRSxjQUFQLEVBQXJCOztBQUNBLFlBQUlELFlBQUosRUFBa0I7QUFDakJqQixVQUFBQSxjQUFjLENBQUNtQixJQUFmLENBQW9CRixZQUFwQjtBQUNBOztBQUNELFlBQUlWLFVBQUosRUFBZ0I7QUFDZlAsVUFBQUEsY0FBYyxDQUFDbUIsSUFBZixDQUFvQkgsTUFBTSxDQUFDSSxVQUFQLEVBQXBCO0FBQ0E7QUFDRCxPQVJEOztBQVVBcEIsTUFBQUEsY0FBYyxDQUFDbUIsSUFBZixDQUFvQmxCLEtBQUssQ0FBQ29CLElBQU4sQ0FBVyxnQkFBWCxDQUFwQjtBQUNBLEtBaENpQztBQWlDbENDLElBQUFBLDJCQUEyQixFQUFFLFVBQTJCQyxTQUEzQixFQUEyQztBQUN2RSxVQUFNdEIsS0FBSyxHQUFHLEtBQUtDLE9BQUwsRUFBZDtBQUFBLFVBQ0NzQixnQkFBZ0IsR0FBR0MsZUFBZSxDQUFDQyxrQkFBaEIsQ0FBbUN6QixLQUFuQyxDQURwQjtBQUFBLFVBRUNFLFdBQVcsR0FBR0YsS0FBSyxDQUFDRyxhQUFOLEVBRmY7QUFHQSxVQUFJdUIsa0JBQTZCLEdBQUcsRUFBcEM7O0FBRUEsVUFBSUgsZ0JBQUosRUFBc0I7QUFDckIsWUFBTUksa0JBQWtCLEdBQUl6QixXQUFELENBQXNDMEIsMkJBQXRDLEVBQTNCOztBQUNBRixRQUFBQSxrQkFBa0IsQ0FBQ1IsSUFBbkIsQ0FBd0JTLGtCQUF4QjtBQUNBOztBQUNELFVBQUlKLGdCQUFnQixLQUFLLHFCQUF6QixFQUFnRDtBQUMvQyxZQUFNTSxhQUFhLEdBQUkzQixXQUFELENBQXNDVyxXQUF0QyxFQUF0Qjs7QUFDQWEsUUFBQUEsa0JBQWtCLEdBQUdBLGtCQUFrQixDQUFDSSxNQUFuQixDQUEwQk4sZUFBZSxDQUFDTyxxQkFBaEIsQ0FBc0MvQixLQUF0QyxFQUE2QzZCLGFBQTdDLEtBQStELEVBQXpGLENBQXJCO0FBQ0E7O0FBQ0QsYUFBT0gsa0JBQWtCLENBQUNNLE1BQW5CLENBQTBCLFVBQVVDLGFBQVYsRUFBOEJDLFFBQTlCLEVBQTZDO0FBQzdFLFlBQUlELGFBQWEsQ0FBQ0UsT0FBZCxDQUFzQkQsUUFBdEIsTUFBb0MsQ0FBQyxDQUF6QyxFQUE0QztBQUMzQ0QsVUFBQUEsYUFBYSxDQUFDZixJQUFkLENBQW1CZ0IsUUFBbkI7QUFDQTs7QUFDRCxlQUFPRCxhQUFQO0FBQ0EsT0FMTSxFQUtKWCxTQUxJLENBQVA7QUFNQTtBQXJEaUMsR0FBbkM7U0F3RGUxQiwwQiIsInNvdXJjZVJvb3QiOiIuIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgVmlld1N0YXRlIGZyb20gXCJzYXAvZmUvY29yZS9jb250cm9sbGVyZXh0ZW5zaW9ucy9WaWV3U3RhdGVcIjtcbmltcG9ydCBLZWVwQWxpdmVIZWxwZXIgZnJvbSBcInNhcC9mZS9jb3JlL2hlbHBlcnMvS2VlcEFsaXZlSGVscGVyXCI7XG5pbXBvcnQgQ29yZUxpYnJhcnkgZnJvbSBcInNhcC9mZS9jb3JlL2xpYnJhcnlcIjtcbmltcG9ydCB0eXBlIE9iamVjdFBhZ2VDb250cm9sbGVyIGZyb20gXCJzYXAvZmUvdGVtcGxhdGVzL09iamVjdFBhZ2UvT2JqZWN0UGFnZUNvbnRyb2xsZXIuY29udHJvbGxlclwiO1xuaW1wb3J0IHR5cGUgQ29udHJvbCBmcm9tIFwic2FwL3VpL2NvcmUvQ29udHJvbFwiO1xuXG5jb25zdCBWYXJpYW50TWFuYWdlbWVudCA9IENvcmVMaWJyYXJ5LlZhcmlhbnRNYW5hZ2VtZW50O1xuXG5jb25zdCBWaWV3U3RhdGVFeHRlbnNpb25PdmVycmlkZSA9IHtcblx0YXBwbHlJbml0aWFsU3RhdGVPbmx5OiBmdW5jdGlvbiAoKSB7XG5cdFx0cmV0dXJuIGZhbHNlO1xuXHR9LFxuXHRhZGFwdFN0YXRlQ29udHJvbHM6IGZ1bmN0aW9uICh0aGlzOiBWaWV3U3RhdGUsIGFTdGF0ZUNvbnRyb2xzOiBhbnkpIHtcblx0XHRjb25zdCBvVmlldyA9IHRoaXMuZ2V0VmlldygpLFxuXHRcdFx0b0NvbnRyb2xsZXIgPSBvVmlldy5nZXRDb250cm9sbGVyKCksXG5cdFx0XHRvVmlld0RhdGEgPSBvVmlldy5nZXRWaWV3RGF0YSgpIGFzIGFueTtcblx0XHRsZXQgYkNvbnRyb2xWTSA9IGZhbHNlO1xuXG5cdFx0c3dpdGNoIChvVmlld0RhdGEudmFyaWFudE1hbmFnZW1lbnQpIHtcblx0XHRcdGNhc2UgVmFyaWFudE1hbmFnZW1lbnQuQ29udHJvbDpcblx0XHRcdFx0YkNvbnRyb2xWTSA9IHRydWU7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0Y2FzZSBWYXJpYW50TWFuYWdlbWVudC5QYWdlOlxuXHRcdFx0Y2FzZSBWYXJpYW50TWFuYWdlbWVudC5Ob25lOlxuXHRcdFx0XHRicmVhaztcblx0XHRcdGRlZmF1bHQ6XG5cdFx0XHRcdHRocm93IG5ldyBFcnJvcihgdW5oYW5kbGVkIHZhcmlhbnQgc2V0dGluZzogJHtvVmlld0RhdGEuZ2V0VmFyaWFudE1hbmFnZW1lbnQoKX1gKTtcblx0XHR9XG5cblx0XHQob0NvbnRyb2xsZXIgYXMgT2JqZWN0UGFnZUNvbnRyb2xsZXIpLl9maW5kVGFibGVzKCkuZm9yRWFjaChmdW5jdGlvbiAob1RhYmxlOiBhbnkpIHtcblx0XHRcdGNvbnN0IG9RdWlja0ZpbHRlciA9IG9UYWJsZS5nZXRRdWlja0ZpbHRlcigpO1xuXHRcdFx0aWYgKG9RdWlja0ZpbHRlcikge1xuXHRcdFx0XHRhU3RhdGVDb250cm9scy5wdXNoKG9RdWlja0ZpbHRlcik7XG5cdFx0XHR9XG5cdFx0XHRpZiAoYkNvbnRyb2xWTSkge1xuXHRcdFx0XHRhU3RhdGVDb250cm9scy5wdXNoKG9UYWJsZS5nZXRWYXJpYW50KCkpO1xuXHRcdFx0fVxuXHRcdH0pO1xuXG5cdFx0YVN0YXRlQ29udHJvbHMucHVzaChvVmlldy5ieUlkKFwiZmU6Ok9iamVjdFBhZ2VcIikpO1xuXHR9LFxuXHRhZGFwdEJpbmRpbmdSZWZyZXNoQ29udHJvbHM6IGZ1bmN0aW9uICh0aGlzOiBWaWV3U3RhdGUsIGFDb250cm9sczogYW55KSB7XG5cdFx0Y29uc3Qgb1ZpZXcgPSB0aGlzLmdldFZpZXcoKSxcblx0XHRcdHNSZWZyZXNoU3RyYXRlZ3kgPSBLZWVwQWxpdmVIZWxwZXIuZ2V0Vmlld1JlZnJlc2hJbmZvKG9WaWV3KSxcblx0XHRcdG9Db250cm9sbGVyID0gb1ZpZXcuZ2V0Q29udHJvbGxlcigpO1xuXHRcdGxldCBhQ29udHJvbHNUb1JlZnJlc2g6IENvbnRyb2xbXSA9IFtdO1xuXG5cdFx0aWYgKHNSZWZyZXNoU3RyYXRlZ3kpIHtcblx0XHRcdGNvbnN0IG9PYmplY3RQYWdlQ29udHJvbCA9IChvQ29udHJvbGxlciBhcyBPYmplY3RQYWdlQ29udHJvbGxlcikuX2dldE9iamVjdFBhZ2VMYXlvdXRDb250cm9sKCk7XG5cdFx0XHRhQ29udHJvbHNUb1JlZnJlc2gucHVzaChvT2JqZWN0UGFnZUNvbnRyb2wpO1xuXHRcdH1cblx0XHRpZiAoc1JlZnJlc2hTdHJhdGVneSAhPT0gXCJpbmNsdWRpbmdEZXBlbmRlbnRzXCIpIHtcblx0XHRcdGNvbnN0IGFWaWV3Q29udHJvbHMgPSAob0NvbnRyb2xsZXIgYXMgT2JqZWN0UGFnZUNvbnRyb2xsZXIpLl9maW5kVGFibGVzKCk7XG5cdFx0XHRhQ29udHJvbHNUb1JlZnJlc2ggPSBhQ29udHJvbHNUb1JlZnJlc2guY29uY2F0KEtlZXBBbGl2ZUhlbHBlci5nZXRDb250cm9sc0ZvclJlZnJlc2gob1ZpZXcsIGFWaWV3Q29udHJvbHMpIHx8IFtdKTtcblx0XHR9XG5cdFx0cmV0dXJuIGFDb250cm9sc1RvUmVmcmVzaC5yZWR1Y2UoZnVuY3Rpb24gKGFQcmV2Q29udHJvbHM6IGFueSwgb0NvbnRyb2w6IGFueSkge1xuXHRcdFx0aWYgKGFQcmV2Q29udHJvbHMuaW5kZXhPZihvQ29udHJvbCkgPT09IC0xKSB7XG5cdFx0XHRcdGFQcmV2Q29udHJvbHMucHVzaChvQ29udHJvbCk7XG5cdFx0XHR9XG5cdFx0XHRyZXR1cm4gYVByZXZDb250cm9scztcblx0XHR9LCBhQ29udHJvbHMpO1xuXHR9XG59O1xuXG5leHBvcnQgZGVmYXVsdCBWaWV3U3RhdGVFeHRlbnNpb25PdmVycmlkZTtcbiJdfQ==
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import ViewState from "sap/fe/core/controllerextensions/ViewState";
|
|
1
|
+
import type ViewState from "sap/fe/core/controllerextensions/ViewState";
|
|
2
2
|
import KeepAliveHelper from "sap/fe/core/helpers/KeepAliveHelper";
|
|
3
3
|
import CoreLibrary from "sap/fe/core/library";
|
|
4
|
-
import ObjectPageController from "sap/fe/templates/ObjectPage/ObjectPageController.controller";
|
|
5
|
-
import Control from "sap/ui/core/Control";
|
|
4
|
+
import type ObjectPageController from "sap/fe/templates/ObjectPage/ObjectPageController.controller";
|
|
5
|
+
import type Control from "sap/ui/core/Control";
|
|
6
6
|
|
|
7
7
|
const VariantManagement = CoreLibrary.VariantManagement;
|
|
8
8
|
|
|
@@ -24,7 +24,7 @@ const ViewStateExtensionOverride = {
|
|
|
24
24
|
case VariantManagement.None:
|
|
25
25
|
break;
|
|
26
26
|
default:
|
|
27
|
-
throw new Error(
|
|
27
|
+
throw new Error(`unhandled variant setting: ${oViewData.getVariantManagement()}`);
|
|
28
28
|
}
|
|
29
29
|
|
|
30
30
|
(oController as ObjectPageController)._findTables().forEach(function (oTable: any) {
|
|
@@ -7,9 +7,8 @@
|
|
|
7
7
|
xmlns:macro="sap.fe.macros.internal"
|
|
8
8
|
template:require="{
|
|
9
9
|
ID: 'sap/fe/core/helpers/StableIdHelper',
|
|
10
|
-
OP: 'sap/fe/templates/ObjectPage/
|
|
10
|
+
OP: 'sap/fe/templates/ObjectPage/ObjectPageTemplating',
|
|
11
11
|
MODEL: 'sap/ui/model/odata/v4/AnnotationHelper',
|
|
12
|
-
CORE: 'sap/fe/core/AnnotationHelper',
|
|
13
12
|
UI: 'sap/fe/core/templating/UIFormatters',
|
|
14
13
|
CRIT: 'sap/fe/core/templating/CriticalityFormatters',
|
|
15
14
|
COMMON: 'sap/fe/macros/CommonHelper',
|
|
@@ -20,6 +19,10 @@
|
|
|
20
19
|
<template:repeat list="{converterContext>header/actions}" var="headerAction">
|
|
21
20
|
<template:if test="{= ${headerAction>type} === 'DraftActions' && OP.checkDraftState(${entitySet>@}) }">
|
|
22
21
|
<template:then>
|
|
22
|
+
<core:InvisibleText
|
|
23
|
+
text="{sap.fe.i18n>T_HEADER_DATAPOINT_TITLE_DRAFT_SWITCHER_ARIA_BUTTON}"
|
|
24
|
+
id="fe::StandardAction::SwitchDraftAndActiveObject::AriaTextDraftSwitcher"
|
|
25
|
+
/>
|
|
23
26
|
<Button
|
|
24
27
|
id="fe::StandardAction::SwitchDraftAndActiveObject"
|
|
25
28
|
text="{= ( !(${ui>/editMode} === 'Editable') && !${ui>createMode} && ${HasDraftEntity} ) ? ${sap.fe.i18n>C_COMMON_OBJECT_PAGE_SAVED_VERSION_BUT} : ${sap.fe.i18n>C_COMMON_OBJECT_PAGE_DRAFT_BUT} }"
|
|
@@ -28,11 +31,12 @@
|
|
|
28
31
|
iconFirst="false"
|
|
29
32
|
type="Transparent"
|
|
30
33
|
press="._showSwitchDraftAndActivePopover($event)"
|
|
34
|
+
ariaDescribedBy="fe::StandardAction::SwitchDraftAndActiveObject::AriaTextDraftSwitcher"
|
|
31
35
|
/>
|
|
32
36
|
<core:Fragment fragmentName="sap.fe.templates.ObjectPage.view.fragments.CollaborationDraft" type="XML" />
|
|
33
37
|
<ToolbarSpacer />
|
|
34
38
|
</template:then>
|
|
35
|
-
<template:elseif test="{=
|
|
39
|
+
<template:elseif test="{= OP.isManifestAction(${headerAction>}) }">
|
|
36
40
|
<template:if test="{= ${headerAction>type} === 'Menu'}">
|
|
37
41
|
<template:then>
|
|
38
42
|
<MenuButton
|
|
@@ -51,7 +55,7 @@
|
|
|
51
55
|
<MenuItem
|
|
52
56
|
id="{= ID.generate(['fe', ${dataField>}]) }"
|
|
53
57
|
text="{dataField>Label}"
|
|
54
|
-
press="{= OP.getPressExpressionForEdit(${dataField>}, ${entitySet>@sapui.name}, ${headerAction>}) }"
|
|
58
|
+
press="{= ${menuItemAction>command} ? ('cmd:' + ${menuItemAction>command}) : OP.getPressExpressionForEdit(${dataField>}, ${entitySet>@sapui.name}, ${headerAction>}) }"
|
|
55
59
|
visible="{menuItemAction>visible}"
|
|
56
60
|
enabled="{menuItemAction>enabled}"
|
|
57
61
|
/>
|
|
@@ -60,7 +64,7 @@
|
|
|
60
64
|
<MenuItem
|
|
61
65
|
id="{= ID.generate(['fe', ${dataField>}]) }"
|
|
62
66
|
text="{dataField>Label}"
|
|
63
|
-
press="{menuItemAction>press}"
|
|
67
|
+
press="{= ${menuItemAction>command} ? ('cmd:' + ${menuItemAction>command}) : ${menuItemAction>press}}"
|
|
64
68
|
enabled="{menuItemAction>enabled}"
|
|
65
69
|
visible="{menuItemAction>visible}"
|
|
66
70
|
macrodata:IBNData="{menuItemAction>customData}"
|
|
@@ -71,7 +75,7 @@
|
|
|
71
75
|
core:require="{FPM: 'sap/fe/core/helpers/FPMHelper'}"
|
|
72
76
|
id="{= ID.generate(['fe',${menuItemAction>id}])}"
|
|
73
77
|
text="{menuItemAction>text}"
|
|
74
|
-
press="{=
|
|
78
|
+
press="{= ${menuItemAction>command} ? ('cmd:' + ${menuItemAction>command}) : COMMON.buildActionWrapper(${menuItemAction>}, ${headerAction>})}"
|
|
75
79
|
visible="{menuItemAction>visible}"
|
|
76
80
|
enabled="{menuItemAction>enabled}"
|
|
77
81
|
/>
|
|
@@ -89,7 +93,7 @@
|
|
|
89
93
|
core:require="{FPM: 'sap/fe/core/helpers/FPMHelper'}"
|
|
90
94
|
id="{= ID.generate(['fe',${headerAction>id}])}"
|
|
91
95
|
text="{headerAction>text}"
|
|
92
|
-
press="{=
|
|
96
|
+
press="{= ${headerAction>command} ? ('cmd:' + ${headerAction>command}) : COMMON.buildActionWrapper(${headerAction>})}"
|
|
93
97
|
type="Default"
|
|
94
98
|
visible="{headerAction>visible}"
|
|
95
99
|
enabled="{headerAction>enabled}"
|
|
@@ -104,7 +108,7 @@
|
|
|
104
108
|
<Button
|
|
105
109
|
unittest:id="EditActionTest"
|
|
106
110
|
id="fe::StandardAction::Edit"
|
|
107
|
-
type="{path: 'entitySet>./@com.sap.vocabularies.UI.v1.Identification', formatter: '
|
|
111
|
+
type="{path: 'entitySet>./@com.sap.vocabularies.UI.v1.Identification', formatter: 'OP.buildEmphasizedButtonExpression'}"
|
|
108
112
|
text="{sap.fe.i18n>C_COMMON_OBJECT_PAGE_EDIT}"
|
|
109
113
|
enabled="{headerAction>enabled}"
|
|
110
114
|
visible="{headerAction>visible}"
|
|
@@ -123,7 +127,7 @@
|
|
|
123
127
|
unittest:id="DeleteActionTest"
|
|
124
128
|
id="fe::StandardAction::Delete"
|
|
125
129
|
type="Default"
|
|
126
|
-
text="{sap.fe.i18n>
|
|
130
|
+
text="{sap.fe.i18n>C_COMMON_DELETE}"
|
|
127
131
|
visible="{headerAction>visible}"
|
|
128
132
|
enabled="{headerAction>enabled}"
|
|
129
133
|
press="cmd:DeleteObject"
|
|
@@ -144,7 +148,7 @@
|
|
|
144
148
|
id="{= ID.generate(['fe', ${dataField>}]) }"
|
|
145
149
|
unittest:id="AnnotationActionTest"
|
|
146
150
|
text="{dataField>Label}"
|
|
147
|
-
press="{= OP.getPressExpressionForEdit(${dataField>}, ${entitySet>@sapui.name}, ${headerAction>}) }"
|
|
151
|
+
press="{= ${headerAction>command} ? ('cmd:' + ${headerAction>command}) : OP.getPressExpressionForEdit(${dataField>}, ${entitySet>@sapui.name}, ${headerAction>}) }"
|
|
148
152
|
visible="{headerAction>visible}"
|
|
149
153
|
enabled="{headerAction>enabled}"
|
|
150
154
|
type="{= CRIT.buildExpressionForCriticalityButtonType(${dataField>@@UI.getDataModelObjectPath}) }"
|
|
@@ -161,7 +165,7 @@
|
|
|
161
165
|
<Button
|
|
162
166
|
id="{= ID.generate(['fe', ${dataField>}]) }"
|
|
163
167
|
text="{headerAction>text}"
|
|
164
|
-
press="{headerAction>press}"
|
|
168
|
+
press="{= ${headerAction>command} ? ('cmd:' + ${headerAction>command}) : ${headerAction>press}}"
|
|
165
169
|
enabled="{headerAction>enabled}"
|
|
166
170
|
type="{headerAction>buttonType}"
|
|
167
171
|
visible="{headerAction>visible}"
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
<core:FragmentDefinition
|
|
2
|
-
xmlns:f="sap.f"
|
|
3
2
|
xmlns="sap.m"
|
|
4
3
|
xmlns:core="sap.ui.core"
|
|
5
4
|
xmlns:template="http://schemas.sap.com/sapui5/extension/sap.ui.core.template/1"
|
|
@@ -20,7 +19,7 @@
|
|
|
20
19
|
alignItems="Center"
|
|
21
20
|
justifyContent="Start"
|
|
22
21
|
>
|
|
23
|
-
<
|
|
22
|
+
<Avatar
|
|
24
23
|
initials="{internal>initials}"
|
|
25
24
|
backgroundColor="Accent{internal>color}"
|
|
26
25
|
displaySize="XS"
|