@sapui5/sap.fe.core 1.101.1 → 1.102.2
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/core/.library +1 -1
- package/src/sap/fe/core/AppComponent.js +5 -5
- package/src/sap/fe/core/AppComponent.ts +19 -18
- package/src/sap/fe/core/AppStateHandler.js +4 -4
- package/src/sap/fe/core/AppStateHandler.ts +9 -9
- package/src/sap/fe/core/CommonUtils.js +59 -93
- package/src/sap/fe/core/CommonUtils.ts +80 -99
- package/src/sap/fe/core/ExtensionAPI.js +2 -4
- package/src/sap/fe/core/ExtensionAPI.ts +1 -3
- package/src/sap/fe/core/PageController.js +14 -9
- package/src/sap/fe/core/PageController.ts +8 -2
- package/src/sap/fe/core/TemplateComponent.js +6 -6
- package/src/sap/fe/core/TemplateComponent.ts +5 -5
- package/src/sap/fe/core/TemplateModel.js +2 -2
- package/src/sap/fe/core/TemplateModel.ts +2 -2
- package/src/sap/fe/core/buildingBlocks/BuildingBlockRuntime.js +303 -75
- package/src/sap/fe/core/buildingBlocks/BuildingBlockRuntime.ts +273 -64
- package/src/sap/fe/core/{BusyLocker.js → controllerextensions/BusyLocker.js} +1 -1
- package/src/sap/fe/core/{BusyLocker.ts → controllerextensions/BusyLocker.ts} +7 -7
- package/src/sap/fe/core/controllerextensions/EditFlow.js +234 -123
- package/src/sap/fe/core/controllerextensions/EditFlow.ts +176 -114
- package/src/sap/fe/core/controllerextensions/InternalEditFlow.js +34 -10
- package/src/sap/fe/core/controllerextensions/InternalEditFlow.ts +44 -12
- package/src/sap/fe/core/controllerextensions/InternalIntentBasedNavigation.js +30 -28
- package/src/sap/fe/core/controllerextensions/InternalIntentBasedNavigation.ts +38 -31
- package/src/sap/fe/core/controllerextensions/InternalRouting.js +157 -102
- package/src/sap/fe/core/controllerextensions/InternalRouting.ts +155 -103
- package/src/sap/fe/core/controllerextensions/MassEdit.js +4 -3
- package/src/sap/fe/core/controllerextensions/MassEdit.ts +15 -14
- package/src/sap/fe/core/controllerextensions/MessageHandler.js +3 -3
- package/src/sap/fe/core/controllerextensions/MessageHandler.ts +10 -2
- package/src/sap/fe/core/controllerextensions/Paginator.js +12 -3
- package/src/sap/fe/core/controllerextensions/Paginator.ts +11 -2
- package/src/sap/fe/core/controllerextensions/Share.js +19 -1
- package/src/sap/fe/core/controllerextensions/Share.ts +18 -0
- package/src/sap/fe/core/controllerextensions/SideEffects.js +2 -2
- package/src/sap/fe/core/controllerextensions/SideEffects.ts +2 -2
- package/src/sap/fe/core/controllerextensions/ViewState.js +11 -1
- package/src/sap/fe/core/controllerextensions/ViewState.ts +10 -0
- package/src/sap/fe/core/controllerextensions/collaboration/ActivityBase.js +105 -0
- package/src/sap/fe/core/controllerextensions/collaboration/ActivityBase.ts +98 -0
- package/src/sap/fe/core/controllerextensions/collaboration/ActivitySync.js +360 -0
- package/src/sap/fe/core/{actions → controllerextensions}/collaboration/ActivitySync.ts +57 -106
- package/src/sap/fe/core/controllerextensions/collaboration/CollaborationCommon.js +146 -0
- package/src/sap/fe/core/{actions → controllerextensions}/collaboration/CollaborationCommon.ts +6 -6
- package/src/sap/fe/core/{actions → controllerextensions}/collaboration/Manage.js +4 -4
- package/src/sap/fe/core/{actions → controllerextensions}/collaboration/Manage.ts +3 -3
- package/src/sap/fe/core/{actions → controllerextensions}/collaboration/ManageDialog.fragment.xml +0 -0
- package/src/sap/fe/core/{actions → controllerextensions}/collaboration/UserDetails.fragment.xml +5 -7
- package/src/sap/fe/core/controllerextensions/editFlow/TransactionHelper.js +1587 -0
- package/src/sap/fe/core/{TransactionHelper.ts → controllerextensions/editFlow/TransactionHelper.ts} +26 -13
- package/src/sap/fe/core/controllerextensions/editFlow/draft.js +785 -0
- package/src/sap/fe/core/{actions → controllerextensions/editFlow}/draft.ts +179 -22
- package/src/sap/fe/core/controllerextensions/editFlow/operations.js +1175 -0
- package/src/sap/fe/core/{actions → controllerextensions/editFlow}/operations.ts +203 -98
- package/src/sap/fe/core/controllerextensions/editFlow/sticky.js +190 -0
- package/src/sap/fe/core/{actions → controllerextensions/editFlow}/sticky.ts +76 -12
- package/src/sap/fe/core/controllerextensions/messageHandler/messageHandling.js +597 -0
- package/src/sap/fe/core/{actions → controllerextensions/messageHandler}/messageHandling.ts +46 -27
- package/src/sap/fe/core/controllerextensions/routing/RouterProxy.js +940 -0
- package/src/sap/fe/core/{RouterProxy.ts → controllerextensions/routing/RouterProxy.ts} +20 -18
- package/src/sap/fe/core/controls/ActionParameterDialog.fragment.xml +21 -18
- package/src/sap/fe/core/controls/CommandExecution.js +14 -3
- package/src/sap/fe/core/controls/CommandExecution.ts +11 -2
- package/src/sap/fe/core/controls/CustomFilterFieldContentWrapper.js +34 -29
- package/src/sap/fe/core/controls/CustomFilterFieldContentWrapper.ts +33 -29
- package/src/sap/fe/core/controls/CustomQuickViewPage.js +2 -1
- package/src/sap/fe/core/controls/CustomQuickViewPage.ts +1 -0
- package/src/sap/fe/core/controls/DataLossOrDraftDiscard/DataLossDraft.fragment.xml +11 -3
- package/src/sap/fe/core/controls/DataLossOrDraftDiscard/DataLossOrDraftDiscardHandler.js +17 -7
- package/src/sap/fe/core/controls/DataLossOrDraftDiscard/DataLossOrDraftDiscardHandler.ts +9 -3
- package/src/sap/fe/core/controls/FileWrapper.js +49 -2
- package/src/sap/fe/core/controls/FileWrapper.ts +34 -1
- package/src/sap/fe/core/controls/FormElementWrapper.js +12 -2
- package/src/sap/fe/core/controls/FormElementWrapper.ts +12 -1
- package/src/sap/fe/core/controls/MassEditSelect.js +33 -0
- package/src/sap/fe/core/controls/MassEditSelect.ts +45 -0
- package/src/sap/fe/core/controls/filterbar/utils/VisualFilterUtils.js +2 -2
- package/src/sap/fe/core/controls/filterbar/utils/VisualFilterUtils.ts +23 -28
- package/src/sap/fe/core/controls/massEdit/MassEditDialog.fragment.xml +28 -63
- package/src/sap/fe/core/controls/massEdit/MassEditField.fragment.xml +107 -0
- package/src/sap/fe/core/controls/massEdit/MassEditHandlers.js +550 -36
- package/src/sap/fe/core/controls/massEdit/MassEditHandlers.ts +604 -36
- package/src/sap/fe/core/converters/ManifestSettings.js +2 -1
- package/src/sap/fe/core/converters/ManifestSettings.ts +4 -1
- package/src/sap/fe/core/converters/MetaModelConverter.js +11 -40
- package/src/sap/fe/core/converters/MetaModelConverter.ts +56 -84
- package/src/sap/fe/core/converters/annotations/DataField.js +20 -4
- package/src/sap/fe/core/converters/annotations/DataField.ts +24 -2
- package/src/sap/fe/core/converters/controls/Common/Action.js +5 -12
- package/src/sap/fe/core/converters/controls/Common/Action.ts +3 -9
- package/src/sap/fe/core/converters/controls/Common/Chart.js +10 -3
- package/src/sap/fe/core/converters/controls/Common/Chart.ts +8 -3
- package/src/sap/fe/core/converters/controls/Common/Form.js +12 -14
- package/src/sap/fe/core/converters/controls/Common/Form.ts +17 -19
- package/src/sap/fe/core/converters/controls/Common/Table.js +149 -66
- package/src/sap/fe/core/converters/controls/Common/Table.ts +136 -52
- package/src/sap/fe/core/converters/controls/Common/table/StandardActions.js +22 -12
- package/src/sap/fe/core/converters/controls/Common/table/StandardActions.ts +23 -12
- package/src/sap/fe/core/converters/controls/ListReport/FilterBar.js +7 -5
- package/src/sap/fe/core/converters/controls/ListReport/FilterBar.ts +15 -10
- package/src/sap/fe/core/converters/controls/ObjectPage/SubSection.js +26 -24
- package/src/sap/fe/core/converters/controls/ObjectPage/SubSection.ts +35 -33
- package/src/sap/fe/core/converters/helpers/Aggregation.js +10 -2
- package/src/sap/fe/core/converters/helpers/Aggregation.ts +18 -13
- package/src/sap/fe/core/converters/helpers/BindingHelper.js +3 -2
- package/src/sap/fe/core/converters/helpers/BindingHelper.ts +6 -5
- package/src/sap/fe/core/converters/templates/ObjectPageConverter.js +25 -25
- package/src/sap/fe/core/converters/templates/ObjectPageConverter.ts +35 -38
- package/src/sap/fe/core/designtime/AppComponent.designtime.js +3 -3
- package/src/sap/fe/core/designtime/AppComponent.designtime.ts +8 -6
- package/src/sap/fe/core/formatters/TableFormatter.js +73 -12
- package/src/sap/fe/core/formatters/TableFormatter.ts +70 -15
- package/src/sap/fe/core/fpm/Component.js +2 -2
- package/src/sap/fe/core/fpm/Component.ts +1 -1
- package/src/sap/fe/core/helpers/BindingExpression.js +10 -7
- package/src/sap/fe/core/helpers/BindingExpression.ts +37 -35
- package/src/sap/fe/core/helpers/ClassSupport.js +1 -1
- package/src/sap/fe/core/helpers/ClassSupport.ts +1 -0
- package/src/sap/fe/core/helpers/FPMHelper.js +3 -2
- package/src/sap/fe/core/helpers/FPMHelper.ts +9 -8
- package/src/sap/fe/core/helpers/MassEditHelper.js +399 -152
- package/src/sap/fe/core/helpers/MassEditHelper.ts +385 -163
- package/src/sap/fe/core/helpers/ModelHelper.js +1 -1
- package/src/sap/fe/core/helpers/ModelHelper.ts +20 -30
- package/src/sap/fe/core/helpers/StableIdHelper.js +5 -1
- package/src/sap/fe/core/helpers/StableIdHelper.ts +8 -4
- package/src/sap/fe/core/{Synchronization.js → helpers/Synchronization.js} +1 -1
- package/src/sap/fe/core/{Synchronization.ts → helpers/Synchronization.ts} +1 -1
- package/src/sap/fe/core/library.js +12 -3
- package/src/sap/fe/core/library.ts +9 -0
- package/src/sap/fe/core/messagebundle.properties +125 -180
- package/src/sap/fe/core/messagebundle_ar.properties +30 -63
- package/src/sap/fe/core/messagebundle_bg.properties +30 -63
- package/src/sap/fe/core/messagebundle_ca.properties +30 -63
- package/src/sap/fe/core/messagebundle_cs.properties +30 -63
- package/src/sap/fe/core/messagebundle_cy.properties +30 -63
- package/src/sap/fe/core/messagebundle_da.properties +31 -64
- package/src/sap/fe/core/messagebundle_de.properties +30 -63
- package/src/sap/fe/core/messagebundle_el.properties +31 -64
- package/src/sap/fe/core/messagebundle_en.properties +31 -64
- package/src/sap/fe/core/messagebundle_en_GB.properties +31 -64
- package/src/sap/fe/core/messagebundle_en_US_sappsd.properties +40 -73
- package/src/sap/fe/core/messagebundle_en_US_saprigi.properties +31 -64
- package/src/sap/fe/core/messagebundle_en_US_saptrc.properties +49 -82
- package/src/sap/fe/core/messagebundle_es.properties +30 -63
- package/src/sap/fe/core/messagebundle_es_MX.properties +30 -63
- package/src/sap/fe/core/messagebundle_et.properties +30 -63
- package/src/sap/fe/core/messagebundle_fi.properties +30 -63
- package/src/sap/fe/core/messagebundle_fr.properties +33 -66
- package/src/sap/fe/core/messagebundle_fr_CA.properties +30 -63
- package/src/sap/fe/core/messagebundle_hi.properties +30 -63
- package/src/sap/fe/core/messagebundle_hr.properties +30 -63
- package/src/sap/fe/core/messagebundle_hu.properties +29 -62
- package/src/sap/fe/core/messagebundle_id.properties +31 -64
- package/src/sap/fe/core/messagebundle_it.properties +30 -63
- package/src/sap/fe/core/messagebundle_iw.properties +30 -63
- package/src/sap/fe/core/messagebundle_ja.properties +30 -63
- package/src/sap/fe/core/messagebundle_kk.properties +30 -63
- package/src/sap/fe/core/messagebundle_ko.properties +30 -63
- package/src/sap/fe/core/messagebundle_lt.properties +30 -63
- package/src/sap/fe/core/messagebundle_lv.properties +30 -63
- package/src/sap/fe/core/messagebundle_ms.properties +31 -64
- package/src/sap/fe/core/messagebundle_nl.properties +31 -64
- package/src/sap/fe/core/messagebundle_no.properties +30 -63
- package/src/sap/fe/core/messagebundle_pl.properties +31 -64
- package/src/sap/fe/core/messagebundle_pt.properties +31 -64
- package/src/sap/fe/core/messagebundle_pt_PT.properties +30 -63
- package/src/sap/fe/core/messagebundle_ro.properties +30 -63
- package/src/sap/fe/core/messagebundle_ru.properties +30 -63
- package/src/sap/fe/core/messagebundle_sh.properties +30 -63
- package/src/sap/fe/core/messagebundle_sk.properties +30 -63
- package/src/sap/fe/core/messagebundle_sl.properties +32 -65
- package/src/sap/fe/core/messagebundle_sv.properties +30 -63
- package/src/sap/fe/core/messagebundle_th.properties +30 -63
- package/src/sap/fe/core/messagebundle_tr.properties +30 -63
- package/src/sap/fe/core/messagebundle_uk.properties +31 -64
- package/src/sap/fe/core/messagebundle_vi.properties +31 -64
- package/src/sap/fe/core/messagebundle_zh_CN.properties +30 -63
- package/src/sap/fe/core/messagebundle_zh_TW.properties +31 -64
- package/src/sap/fe/core/services/EnvironmentServiceFactory.js +6 -3
- package/src/sap/fe/core/services/EnvironmentServiceFactory.ts +10 -9
- package/src/sap/fe/core/services/NavigationServiceFactory.js +2 -2
- package/src/sap/fe/core/services/NavigationServiceFactory.ts +8 -4
- package/src/sap/fe/core/services/RoutingServiceFactory.js +9 -6
- package/src/sap/fe/core/services/RoutingServiceFactory.ts +10 -9
- package/src/sap/fe/core/services/ShellServicesFactory.js +36 -1
- package/src/sap/fe/core/services/ShellServicesFactory.ts +38 -1
- package/src/sap/fe/core/services/TemplatedViewServiceFactory.js +5 -4
- package/src/sap/fe/core/services/TemplatedViewServiceFactory.ts +34 -36
- package/src/sap/fe/core/templating/DisplayModeFormatter.js +1 -1
- package/src/sap/fe/core/templating/DisplayModeFormatter.ts +1 -1
- package/src/sap/fe/core/templating/EntitySetHelper.js +1 -9
- package/src/sap/fe/core/templating/EntitySetHelper.ts +11 -13
- package/src/sap/fe/core/templating/FilterHelper.js +4 -4
- package/src/sap/fe/core/templating/FilterHelper.ts +6 -5
- package/src/sap/fe/core/templating/PropertyHelper.js +58 -35
- package/src/sap/fe/core/templating/PropertyHelper.ts +19 -4
- package/src/sap/fe/core/templating/UIFormatters.js +16 -5
- package/src/sap/fe/core/templating/UIFormatters.ts +14 -5
- package/src/sap/fe/core/type/DateTimeWithTimezone.js +47 -0
- package/src/sap/fe/core/type/DateTimeWithTimezone.ts +23 -0
- package/src/sap/fe/core/AnnotationHelper.js +0 -331
- package/src/sap/fe/core/AnnotationHelper.ts +0 -321
- package/src/sap/fe/core/RouterProxy.js +0 -938
- package/src/sap/fe/core/TransactionHelper.js +0 -1577
- package/src/sap/fe/core/actions/collaboration/ActivitySync.js +0 -406
- package/src/sap/fe/core/actions/collaboration/CollaborationCommon.js +0 -146
- package/src/sap/fe/core/actions/draft.js +0 -665
- package/src/sap/fe/core/actions/messageHandling.js +0 -579
- package/src/sap/fe/core/actions/nonDraft.js +0 -20
- package/src/sap/fe/core/actions/nonDraft.ts +0 -12
- package/src/sap/fe/core/actions/operations.js +0 -1096
- package/src/sap/fe/core/actions/sticky.js +0 -130
- package/src/sap/fe/core/formatters/CriticalityFormatter.js +0 -77
- package/src/sap/fe/core/formatters/CriticalityFormatter.ts +0 -58
|
@@ -1,13 +1,13 @@
|
|
|
1
|
+
import ResourceBundle from "sap/base/i18n/ResourceBundle";
|
|
1
2
|
import Log from "sap/base/Log";
|
|
2
|
-
import
|
|
3
|
-
import Synchronization from "sap/fe/core/Synchronization";
|
|
4
|
-
import URI from "sap/ui/thirdparty/URI";
|
|
3
|
+
import { defineUI5Class } from "sap/fe/core/helpers/ClassSupport";
|
|
4
|
+
import Synchronization from "sap/fe/core/helpers/Synchronization";
|
|
5
5
|
import { IShellServices } from "sap/fe/core/services/ShellServicesFactory";
|
|
6
|
+
import BaseObject from "sap/ui/base/Object";
|
|
7
|
+
import Core from "sap/ui/core/Core";
|
|
6
8
|
import Router from "sap/ui/core/routing/Router";
|
|
7
|
-
import
|
|
8
|
-
import ResourceBundle from "sap/base/i18n/ResourceBundle";
|
|
9
|
+
import URI from "sap/ui/thirdparty/URI";
|
|
9
10
|
import { CoreEx } from "types/extension_types";
|
|
10
|
-
import Core from "sap/ui/core/Core";
|
|
11
11
|
|
|
12
12
|
const enumState = {
|
|
13
13
|
EQUAL: 0,
|
|
@@ -29,7 +29,7 @@ const enumURLParams = {
|
|
|
29
29
|
function createGuardFromHash(sGuardHash: string) {
|
|
30
30
|
return {
|
|
31
31
|
_guardHash: sGuardHash.replace(/\?[^\?]*$/, ""), // Remove query part
|
|
32
|
-
check: function(sHash: any) {
|
|
32
|
+
check: function (sHash: any) {
|
|
33
33
|
return sHash.indexOf(this._guardHash) === 0;
|
|
34
34
|
}
|
|
35
35
|
};
|
|
@@ -129,7 +129,7 @@ class RouterProxy extends BaseObject {
|
|
|
129
129
|
this._fnBlockingNavFilter = this._blockingNavigationFilter.bind(this);
|
|
130
130
|
this._oShellServices.registerNavigationFilter(this._fnBlockingNavFilter);
|
|
131
131
|
})
|
|
132
|
-
.catch(function(oError: any) {
|
|
132
|
+
.catch(function (oError: any) {
|
|
133
133
|
Log.error("Cannot retrieve the shell services", oError);
|
|
134
134
|
});
|
|
135
135
|
this._fnHashGuard = this.hashGuard.bind(this);
|
|
@@ -208,7 +208,7 @@ class RouterProxy extends BaseObject {
|
|
|
208
208
|
bDisablePreservationCache?: boolean,
|
|
209
209
|
bForceFocus?: boolean,
|
|
210
210
|
bPreserveShellBackNavigationHandler?: boolean
|
|
211
|
-
) {
|
|
211
|
+
): Promise<boolean> {
|
|
212
212
|
if (bPreserveShellBackNavigationHandler !== false) {
|
|
213
213
|
this._oShellServices.setBackNavigation();
|
|
214
214
|
}
|
|
@@ -225,7 +225,7 @@ class RouterProxy extends BaseObject {
|
|
|
225
225
|
}
|
|
226
226
|
}
|
|
227
227
|
|
|
228
|
-
_internalNavToHash(sHash: any, bPreserveHistory: any, bDisablePreservationCache: any, bForceFocus?: boolean) {
|
|
228
|
+
_internalNavToHash(sHash: any, bPreserveHistory: any, bDisablePreservationCache: any, bForceFocus?: boolean): Promise<boolean> {
|
|
229
229
|
// Add the app state in the hash if needed
|
|
230
230
|
if (this.fclEnabled && this.sIAppStateKey && !findAppStateInHash(sHash)) {
|
|
231
231
|
sHash = setAppStateInHash(sHash, this.sIAppStateKey);
|
|
@@ -255,7 +255,7 @@ class RouterProxy extends BaseObject {
|
|
|
255
255
|
this._bForceFocus =
|
|
256
256
|
bForceFocus ||
|
|
257
257
|
(aCurrentHashKeys.length < oNewState.keys.length &&
|
|
258
|
-
aCurrentHashKeys.every(function(key: any, index: any) {
|
|
258
|
+
aCurrentHashKeys.every(function (key: any, index: any) {
|
|
259
259
|
return key === oNewState.keys[index];
|
|
260
260
|
}));
|
|
261
261
|
}
|
|
@@ -441,7 +441,7 @@ class RouterProxy extends BaseObject {
|
|
|
441
441
|
const aTokens = sHashNoParams.split("/");
|
|
442
442
|
const aKeys: any[] = [];
|
|
443
443
|
|
|
444
|
-
aTokens.forEach(function(sToken: any) {
|
|
444
|
+
aTokens.forEach(function (sToken: any) {
|
|
445
445
|
const regexKey = /[^\(\)]+\([^\(\)]+\)/; // abc(def)
|
|
446
446
|
if (regexKey.test(sToken)) {
|
|
447
447
|
aKeys.push(sToken.split("(")[0]);
|
|
@@ -633,10 +633,10 @@ class RouterProxy extends BaseObject {
|
|
|
633
633
|
* @ui5-restricted
|
|
634
634
|
* @final
|
|
635
635
|
*/
|
|
636
|
-
_rebuildBrowserHistory(oHistoryAction: any, bRebuildOnly: boolean) {
|
|
636
|
+
_rebuildBrowserHistory(oHistoryAction: any, bRebuildOnly: boolean): Promise<boolean> {
|
|
637
637
|
// eslint-disable-next-line @typescript-eslint/no-this-alias
|
|
638
638
|
const that = this;
|
|
639
|
-
return new Promise(resolve => {
|
|
639
|
+
return new Promise((resolve) => {
|
|
640
640
|
this.bIsRebuildHistoryRunning = true;
|
|
641
641
|
const oTargetState = this._oManagedHistory[this._oManagedHistory.length - 1],
|
|
642
642
|
newLevel = this._oManagedHistory.length - 1;
|
|
@@ -650,7 +650,7 @@ class RouterProxy extends BaseObject {
|
|
|
650
650
|
history.replaceState(Object.assign({ feLevel: newLevel }, history.state), "");
|
|
651
651
|
|
|
652
652
|
if (bRebuildOnly) {
|
|
653
|
-
setTimeout(function() {
|
|
653
|
+
setTimeout(function () {
|
|
654
654
|
// Timeout to let 'hashchange' event be processed before by the HashChanger, so that
|
|
655
655
|
// onRouteMatched notification isn't raised
|
|
656
656
|
that._enableEventOnHashChange(true);
|
|
@@ -664,7 +664,7 @@ class RouterProxy extends BaseObject {
|
|
|
664
664
|
// Async callbacks when navigating back, in order to let all notifications and events get processed
|
|
665
665
|
function backReplaceAsync() {
|
|
666
666
|
window.removeEventListener("popstate", backReplaceAsync);
|
|
667
|
-
setTimeout(function() {
|
|
667
|
+
setTimeout(function () {
|
|
668
668
|
// Timeout to let 'hashchange' event be processed before by the HashChanger
|
|
669
669
|
replaceAsync();
|
|
670
670
|
}, 0);
|
|
@@ -717,7 +717,9 @@ class RouterProxy extends BaseObject {
|
|
|
717
717
|
}
|
|
718
718
|
|
|
719
719
|
setPathMapping(mappings: { oldPath: string; newPath: string }[]) {
|
|
720
|
-
this._pathMappings = mappings
|
|
720
|
+
this._pathMappings = mappings.filter((mapping) => {
|
|
721
|
+
return mapping.oldPath !== mapping.newPath;
|
|
722
|
+
});
|
|
721
723
|
}
|
|
722
724
|
|
|
723
725
|
hashGuard() {
|
|
@@ -727,7 +729,7 @@ class RouterProxy extends BaseObject {
|
|
|
727
729
|
this._bApplyRestore = true;
|
|
728
730
|
} else if (!this.bIsRebuildHistoryRunning) {
|
|
729
731
|
// Check if the hash needs to be changed (this happens in FCL when switching b/w edit and read-only with 3 columns open)
|
|
730
|
-
const mapping = this._pathMappings.find(m => {
|
|
732
|
+
const mapping = this._pathMappings.find((m) => {
|
|
731
733
|
return sHash.indexOf(m.oldPath) >= 0;
|
|
732
734
|
});
|
|
733
735
|
if (mapping) {
|
|
@@ -18,27 +18,27 @@
|
|
|
18
18
|
Property: 'sap/fe/core/templating/PropertyFormatters'
|
|
19
19
|
}"
|
|
20
20
|
>
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
21
|
+
<form:SimpleForm binding="{$Parameter}">
|
|
22
|
+
<template:repeat list="{action>$Parameter}" var="parameter">
|
|
23
|
+
<template:with path="parameter>" helper="COMMON.gotoActionParameter" var="actionParameter">
|
|
24
|
+
<!-- In case of bound actions the first parameter shall be ignored -->
|
|
25
|
+
<template:if test="{= !${action>$IsBound} || ${parameter>$Name} !== ${action>$Parameter/0/$Name} }">
|
|
26
|
+
<Label
|
|
27
27
|
unittest:id="ActionParameterDialogLabelExpressionTest"
|
|
28
28
|
text="{= ${actionParameter>@com.sap.vocabularies.Common.v1.Label} ? ${actionParameter>@com.sap.vocabularies.Common.v1.Label} : ${parameter>$Name}}"
|
|
29
29
|
/>
|
|
30
|
-
|
|
30
|
+
<!-- TODOs:
|
|
31
31
|
edit mode, can there be also field control?
|
|
32
32
|
value help
|
|
33
33
|
additional value? (= text annotation)
|
|
34
34
|
text arrangement?
|
|
35
35
|
multipleLines?
|
|
36
36
|
-->
|
|
37
|
-
|
|
37
|
+
<!-- TODO: use new value helper -->
|
|
38
38
|
|
|
39
|
-
|
|
39
|
+
<template:if test="{= !${parameter>$isCollection} }">
|
|
40
40
|
<template:then>
|
|
41
|
-
|
|
41
|
+
<!--The payload of FieldBaseDelegate is used to control the fallback feature 'retrieveTextFromValueList' -->
|
|
42
42
|
<mdc:Field
|
|
43
43
|
delegate="{name:'sap/fe/macros/FieldBaseDelegate', payload:{retrieveTextFromValueList:true}}"
|
|
44
44
|
unittest:id="ActionParameterDialogFieldExpressionTest"
|
|
@@ -51,9 +51,9 @@
|
|
|
51
51
|
required="{= FIELD.isRequired(${actionParameter>@@FIELD.fieldControl}, 'Editable')}"
|
|
52
52
|
change="{= '.handleChange($event, \'' + ${parameter>$Name} + '\')' }"
|
|
53
53
|
fieldHelp="{= FIELD.getActionParameterDialogFieldHelp(${actionParameter>@}, ${actionName>@sapui.name}, ${parameter>$Name}) }"
|
|
54
|
-
visible="{actionParameter>@com.sap.vocabularies.UI.v1.Hidden@@FIELD.getActionParameterVisibility}"
|
|
54
|
+
visible="{= (${actionParameter>$Name} === 'ResultIsActiveEntity') ? false : ${actionParameter>@com.sap.vocabularies.UI.v1.Hidden@@FIELD.getActionParameterVisibility} }"
|
|
55
55
|
>
|
|
56
|
-
|
|
56
|
+
<core:Fragment fragmentName="sap.fe.core.controls.ActionParameterDialogValueHelp" type="XML" />
|
|
57
57
|
</mdc:Field>
|
|
58
58
|
</template:then>
|
|
59
59
|
<template:else>
|
|
@@ -70,13 +70,16 @@
|
|
|
70
70
|
fieldHelp="{= FIELD.getActionParameterDialogFieldHelp(${actionParameter>@}, ${actionName>@sapui.name}, ${parameter>$Name}) }"
|
|
71
71
|
visible="{actionParameter>@com.sap.vocabularies.UI.v1.Hidden@@FIELD.getActionParameterVisibility}"
|
|
72
72
|
>
|
|
73
|
-
|
|
74
|
-
|
|
73
|
+
<mdcField:MultiValueFieldItem
|
|
74
|
+
key="{path: 'mvfview>Key', type:'sap.ui.model.type.String'}"
|
|
75
|
+
description="{mvfview>Desc}"
|
|
76
|
+
/>
|
|
77
|
+
<core:Fragment fragmentName="sap.fe.core.controls.ActionParameterDialogValueHelp" type="XML" />
|
|
75
78
|
</mdc:MultiValueField>
|
|
76
79
|
</template:else>
|
|
77
|
-
</template:if>
|
|
78
80
|
</template:if>
|
|
79
|
-
</template:
|
|
80
|
-
</template:
|
|
81
|
-
</
|
|
81
|
+
</template:if>
|
|
82
|
+
</template:with>
|
|
83
|
+
</template:repeat>
|
|
84
|
+
</form:SimpleForm>
|
|
82
85
|
</core:FragmentDefinition>
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* SAP UI development toolkit for HTML5 (SAPUI5)
|
|
3
3
|
* (c) Copyright 2009-2021 SAP SE. All rights reserved
|
|
4
4
|
*/
|
|
5
|
-
sap.ui.define(["sap/base/Log", "sap/fe/core/helpers/ClassSupport", "sap/ui/core/CommandExecution", "sap/ui/core/Element", "sap/ui/core/Shortcut"], function (Log, ClassSupport, CommandExecution, Element, Shortcut) {
|
|
5
|
+
sap.ui.define(["sap/base/Log", "sap/fe/core/helpers/ClassSupport", "sap/ui/core/CommandExecution", "sap/ui/core/Component", "sap/ui/core/Element", "sap/ui/core/Shortcut"], function (Log, ClassSupport, CommandExecution, Component, Element, Shortcut) {
|
|
6
6
|
"use strict";
|
|
7
7
|
|
|
8
8
|
var _dec, _class;
|
|
@@ -77,7 +77,18 @@ sap.ui.define(["sap/base/Log", "sap/fe/core/helpers/ClassSupport", "sap/ui/core/
|
|
|
77
77
|
};
|
|
78
78
|
|
|
79
79
|
_proto.setVisible = function setVisible(bValue) {
|
|
80
|
-
var oCommand
|
|
80
|
+
var oCommand,
|
|
81
|
+
oParentControl = this.getParent(),
|
|
82
|
+
oComponent = Component.getOwnerComponentFor(this.getParent());
|
|
83
|
+
|
|
84
|
+
while (!oComponent && oParentControl && oParentControl.getParent()) {
|
|
85
|
+
oComponent = Component.getOwnerComponentFor(oParentControl);
|
|
86
|
+
oParentControl = oParentControl.getParent();
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
if (oComponent) {
|
|
90
|
+
oCommand = oComponent.getCommand(this.getCommand());
|
|
91
|
+
}
|
|
81
92
|
|
|
82
93
|
if (oCommand) {
|
|
83
94
|
_CommandExecution.prototype.setVisible.call(this, bValue);
|
|
@@ -92,4 +103,4 @@ sap.ui.define(["sap/base/Log", "sap/fe/core/helpers/ClassSupport", "sap/ui/core/
|
|
|
92
103
|
}(CommandExecution)) || _class);
|
|
93
104
|
return CustomCommandExecution;
|
|
94
105
|
}, false);
|
|
95
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,
|
|
106
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIkNvbW1hbmRFeGVjdXRpb24udHMiXSwibmFtZXMiOlsiQ3VzdG9tQ29tbWFuZEV4ZWN1dGlvbiIsImRlZmluZVVJNUNsYXNzIiwic2V0UGFyZW50Iiwib1BhcmVudCIsImFFeGNsdWRlZFNpbmdsZUtleSIsImFDb21tYW5kcyIsImRhdGEiLCJBcnJheSIsImlzQXJyYXkiLCJsZW5ndGgiLCJvQ29tbWFuZCIsIm9TaG9ydGN1dCIsInNob3J0Y3V0U3BlYyIsImluZGV4T2YiLCJrZXkiLCJhZGREZWxlZ2F0ZSIsIm9FdmVudCIsInRvTG93ZXJDYXNlIiwic0VsZW1lbnQiLCJ0YXJnZXQiLCJ0YWdOYW1lIiwidW5kZWZpbmVkIiwic2V0TWFya2VkIiwiZGVzdHJveSIsImJTdXBwcmVzc0ludmFsaWRhdGUiLCJnZXRQYXJlbnQiLCJfZ2V0Q29tbWFuZEluZm8iLCJTaG9ydGN1dCIsInVucmVnaXN0ZXIiLCJzaG9ydGN1dCIsIl9jbGVhbnVwQ29udGV4dCIsIkVsZW1lbnQiLCJwcm90b3R5cGUiLCJhcHBseSIsInNldFZpc2libGUiLCJiVmFsdWUiLCJvUGFyZW50Q29udHJvbCIsIm9Db21wb25lbnQiLCJDb21wb25lbnQiLCJnZXRPd25lckNvbXBvbmVudEZvciIsImdldENvbW1hbmQiLCJMb2ciLCJpbmZvIiwiQ29tbWFuZEV4ZWN1dGlvbiJdLCJtYXBwaW5ncyI6IjtBQUFBO0FBQ0E7QUFDQTs7Ozs7Ozs7Ozs7O01BTU1BLHNCLFdBRExDLGNBQWMsQ0FBQyx1Q0FBRCxDOzs7Ozs7Ozs7V0FFZEMsUyxHQUFBLG1CQUFVQyxPQUFWLEVBQXdCO0FBQ3ZCLFVBQU1DLGtCQUFrQixHQUFHLENBQUMsUUFBRCxDQUEzQixDQUR1QixDQUV2QjtBQUNBOztBQUNBLGtDQUFNRixTQUFOLFlBQWdCQyxPQUFoQjs7QUFDQSxVQUFNRSxTQUFTLEdBQUdGLE9BQU8sQ0FBQ0csSUFBUixDQUFhLHNCQUFiLENBQWxCOztBQUNBLFVBQUlDLEtBQUssQ0FBQ0MsT0FBTixDQUFjSCxT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LGdCO1NBd0V0QjNDLHNCIiwic291cmNlUm9vdCI6Ii4iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgTG9nIGZyb20gXCJzYXAvYmFzZS9Mb2dcIjtcbmltcG9ydCB7IGRlZmluZVVJNUNsYXNzIH0gZnJvbSBcInNhcC9mZS9jb3JlL2hlbHBlcnMvQ2xhc3NTdXBwb3J0XCI7XG5pbXBvcnQgQ29tbWFuZEV4ZWN1dGlvbiBmcm9tIFwic2FwL3VpL2NvcmUvQ29tbWFuZEV4ZWN1dGlvblwiO1xuaW1wb3J0IENvbXBvbmVudCBmcm9tIFwic2FwL3VpL2NvcmUvQ29tcG9uZW50XCI7XG5pbXBvcnQgRWxlbWVudCBmcm9tIFwic2FwL3VpL2NvcmUvRWxlbWVudFwiO1xuaW1wb3J0IFNob3J0Y3V0IGZyb20gXCJzYXAvdWkvY29yZS9TaG9ydGN1dFwiO1xuXG5AZGVmaW5lVUk1Q2xhc3MoXCJzYXAuZmUuY29yZS5jb250cm9scy5Db21tYW5kRXhlY3V0aW9uXCIpXG5jbGFzcyBDdXN0b21Db21tYW5kRXhlY3V0aW9uIGV4dGVuZHMgQ29tbWFuZEV4ZWN1dGlvbiB7XG5cdHNldFBhcmVudChvUGFyZW50OiBhbnkpIHtcblx0XHRjb25zdCBhRXhjbHVkZWRTaW5nbGVLZXkgPSBbXCJlc2NhcGVcIl07XG5cdFx0Ly8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9iYW4tdHMtY29tbWVudFxuXHRcdC8vIEB0cy1pZ25vcmVcblx0XHRzdXBlci5zZXRQYXJlbnQob1BhcmVudCk7XG5cdFx0Y29uc3QgYUNvbW1hbmRzID0gb1BhcmVudC5kYXRhKFwic2FwLnVpLmNvcmUuU2hvcnRjdXRcIik7XG5cdFx0aWYgKEFycmF5LmlzQXJyYXkoYUNvbW1hbmRzKSAmJiBhQ29tbWFuZHMubGVuZ3RoID4gMCkge1xuXHRcdFx0Y29uc3Qgb0NvbW1hbmQgPSBvUGFyZW50LmRhdGEoXCJzYXAudWkuY29yZS5TaG9ydGN1dFwiKVthQ29tbWFuZHMubGVuZ3RoIC0gMV0sXG5cdFx0XHRcdG9TaG9ydGN1dCA9IG9Db21tYW5kLnNob3J0Y3V0U3BlYztcblx0XHRcdGlmIChvU2hvcnRjdXQgJiYgYUV4Y2x1ZGVkU2luZ2xlS2V5LmluZGV4T2Yob1Nob3J0Y3V0LmtleSkgPiAtMSkge1xuXHRcdFx0XHQvLyBDaGVjayBpZiBzaW5nbGUga2V5IHNob3J0Y3V0XG5cdFx0XHRcdGZvciAoY29uc3Qga2V5IGluIG9TaG9ydGN1dCkge1xuXHRcdFx0XHRcdGlmIChvU2hvcnRjdXRba2V5XSAmJiBrZXkgIT09IFwia2V5XCIpIHtcblx0XHRcdFx0XHRcdHJldHVybiB0aGlzO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0XHQvLyBOZWVkIHRvIGRpc2FibGUgU2hvcnRDdXQgd2hlbiB1c2VyIHByZXNzIHNpbmdsZSBzaG9ydGN1dCBrZXkgaW50byBhbiBpbnB1dFxuXHRcdFx0XHRvUGFyZW50LmFkZERlbGVnYXRlKFxuXHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdFwib25rZXlkb3duXCI6IGZ1bmN0aW9uIChvRXZlbnQ6IGFueSkge1xuXHRcdFx0XHRcdFx0XHRpZiAoYUV4Y2x1ZGVkU2luZ2xlS2V5LmluZGV4T2Yob0V2ZW50LmtleS50b0xvd2VyQ2FzZSgpKSA+IC0xKSB7XG5cdFx0XHRcdFx0XHRcdFx0Y29uc3Qgc0VsZW1lbnQgPSBvRXZlbnQudGFyZ2V0ID8gb0V2ZW50LnRhcmdldC50YWdOYW1lLnRvTG93ZXJDYXNlKCkgOiB1bmRlZmluZWQ7XG5cdFx0XHRcdFx0XHRcdFx0aWYgKHNFbGVtZW50ID09PSBcImlucHV0XCIpIHtcblx0XHRcdFx0XHRcdFx0XHRcdG9FdmVudC5zZXRNYXJrZWQoKTtcblx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdHRydWUsXG5cdFx0XHRcdFx0dW5kZWZpbmVkLFxuXHRcdFx0XHRcdHRydWVcblx0XHRcdFx0KTtcblx0XHRcdH1cblx0XHRcdHJldHVybiB0aGlzO1xuXHRcdH1cblx0fVxuXG5cdGRlc3Ryb3koYlN1cHByZXNzSW52YWxpZGF0ZTogYm9vbGVhbikge1xuXHRcdGNvbnN0IG9QYXJlbnQgPSB0aGlzLmdldFBhcmVudCgpO1xuXHRcdGlmIChvUGFyZW50KSB7XG5cdFx0XHRjb25zdCBvQ29tbWFuZCA9IHRoaXMuX2dldENvbW1hbmRJbmZvKCk7XG5cdFx0XHRpZiAob0NvbW1hbmQpIHtcblx0XHRcdFx0U2hvcnRjdXQudW5yZWdpc3Rlcih0aGlzLmdldFBhcmVudCgpLCBvQ29tbWFuZC5zaG9ydGN1dCk7XG5cdFx0XHR9XG5cdFx0XHR0aGlzLl9jbGVhbnVwQ29udGV4dChvUGFyZW50KTtcblx0XHR9XG5cdFx0RWxlbWVudC5wcm90b3R5cGUuZGVzdHJveS5hcHBseSh0aGlzLCBbYlN1cHByZXNzSW52YWxpZGF0ZV0pO1xuXHR9XG5cdHNldFZpc2libGUoYlZhbHVlOiBib29sZWFuKSB7XG5cdFx0bGV0IG9Db21tYW5kLFxuXHRcdFx0b1BhcmVudENvbnRyb2wgPSB0aGlzLmdldFBhcmVudCgpLFxuXHRcdFx0b0NvbXBvbmVudDogYW55ID0gQ29tcG9uZW50LmdldE93bmVyQ29tcG9uZW50Rm9yKHRoaXMuZ2V0UGFyZW50KCkpO1xuXHRcdHdoaWxlICghb0NvbXBvbmVudCAmJiBvUGFyZW50Q29udHJvbCAmJiBvUGFyZW50Q29udHJvbC5nZXRQYXJlbnQoKSkge1xuXHRcdFx0b0NvbXBvbmVudCA9IENvbXBvbmVudC5nZXRPd25lckNvbXBvbmVudEZvcihvUGFyZW50Q29udHJvbCk7XG5cdFx0XHRvUGFyZW50Q29udHJvbCA9IG9QYXJlbnRDb250cm9sLmdldFBhcmVudCgpO1xuXHRcdH1cblx0XHRpZiAob0NvbXBvbmVudCkge1xuXHRcdFx0b0NvbW1hbmQgPSBvQ29tcG9uZW50LmdldENvbW1hbmQodGhpcy5nZXRDb21tYW5kKCkpO1xuXHRcdH1cblx0XHRpZiAob0NvbW1hbmQpIHtcblx0XHRcdHN1cGVyLnNldFZpc2libGUoYlZhbHVlKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0TG9nLmluZm8oXCJUaGVyZSBpcyBubyBzaG9ydGN1dCBkZWZpbml0aW9uIHJlZ2lzdGVyZWQgaW4gdGhlIG1hbmlmZXN0IGZvciB0aGUgY29tbWFuZCA6IFwiICsgdGhpcy5nZXRDb21tYW5kKCkpO1xuXHRcdH1cblx0XHRyZXR1cm4gdGhpcztcblx0fVxufVxuaW50ZXJmYWNlIEN1c3RvbUNvbW1hbmRFeGVjdXRpb24ge1xuXHRfZ2V0Q29tbWFuZEluZm8oKTogYW55O1xuXHRfY2xlYW51cENvbnRleHQob1BhcmVudDogYW55KTogdm9pZDtcbn1cbmV4cG9ydCBkZWZhdWx0IEN1c3RvbUNvbW1hbmRFeGVjdXRpb247XG4iXX0=
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import Log from "sap/base/Log";
|
|
2
2
|
import { defineUI5Class } from "sap/fe/core/helpers/ClassSupport";
|
|
3
3
|
import CommandExecution from "sap/ui/core/CommandExecution";
|
|
4
|
+
import Component from "sap/ui/core/Component";
|
|
4
5
|
import Element from "sap/ui/core/Element";
|
|
5
6
|
import Shortcut from "sap/ui/core/Shortcut";
|
|
6
7
|
|
|
@@ -54,9 +55,17 @@ class CustomCommandExecution extends CommandExecution {
|
|
|
54
55
|
}
|
|
55
56
|
Element.prototype.destroy.apply(this, [bSuppressInvalidate]);
|
|
56
57
|
}
|
|
57
|
-
|
|
58
58
|
setVisible(bValue: boolean) {
|
|
59
|
-
|
|
59
|
+
let oCommand,
|
|
60
|
+
oParentControl = this.getParent(),
|
|
61
|
+
oComponent: any = Component.getOwnerComponentFor(this.getParent());
|
|
62
|
+
while (!oComponent && oParentControl && oParentControl.getParent()) {
|
|
63
|
+
oComponent = Component.getOwnerComponentFor(oParentControl);
|
|
64
|
+
oParentControl = oParentControl.getParent();
|
|
65
|
+
}
|
|
66
|
+
if (oComponent) {
|
|
67
|
+
oCommand = oComponent.getCommand(this.getCommand());
|
|
68
|
+
}
|
|
60
69
|
if (oCommand) {
|
|
61
70
|
super.setVisible(bValue);
|
|
62
71
|
} else {
|
|
@@ -193,34 +193,46 @@ sap.ui.define(["sap/fe/core/helpers/ClassSupport", "sap/fe/core/helpers/Semantic
|
|
|
193
193
|
this._conditionsObserver.observe(this, {
|
|
194
194
|
properties: ["conditions"]
|
|
195
195
|
});
|
|
196
|
+
|
|
197
|
+
this._filterModel = new JSONModel();
|
|
198
|
+
|
|
199
|
+
this._filterModel.attachPropertyChange(this._handleFilterModelChange, this);
|
|
200
|
+
|
|
201
|
+
this.setModel(this._filterModel, CustomFilterFieldContentWrapper.FILTER_MODEL_ALIAS);
|
|
196
202
|
}
|
|
197
203
|
/**
|
|
198
|
-
*
|
|
204
|
+
* Overrides {@link sap.ui.core.Control#clone Control.clone} to clone additional
|
|
205
|
+
* internal states.
|
|
199
206
|
*
|
|
200
|
-
* @param {
|
|
201
|
-
* @
|
|
207
|
+
* @param {string} [sIdSuffix] A suffix to be appended to the cloned control id
|
|
208
|
+
* @param {string[]} [aLocalIds] An array of local IDs within the cloned hierarchy (internally used)
|
|
209
|
+
* @returns {CustomFilterFieldContentWrapper} Reference to the newly created clone
|
|
210
|
+
* @protected
|
|
202
211
|
*/
|
|
203
212
|
;
|
|
204
213
|
|
|
205
|
-
_proto.
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
214
|
+
_proto.clone = function clone(sIdSuffix, aLocalIds) {
|
|
215
|
+
var clone = _Control.prototype.clone.call(this, sIdSuffix, aLocalIds); // During cloning, the old model will be copied and overwrites any new model (same alias) that
|
|
216
|
+
// you introduce during init(); hence you need to overwrite it again by the new one that you've
|
|
217
|
+
// created during init() (i.e. clone._filterModel); that standard behaviour of super.clone()
|
|
218
|
+
// can't even be suppressed in an own constructor; for a detailed investigation of the cloning,
|
|
219
|
+
// please overwrite the setModel() method and check the list of callers and steps induced by them.
|
|
220
|
+
|
|
221
|
+
|
|
222
|
+
clone.setModel(clone._filterModel, CustomFilterFieldContentWrapper.FILTER_MODEL_ALIAS);
|
|
223
|
+
return clone;
|
|
209
224
|
}
|
|
210
225
|
/**
|
|
211
|
-
*
|
|
226
|
+
* Listens to property changes.
|
|
212
227
|
*
|
|
228
|
+
* @param {any} changes Property changes
|
|
213
229
|
* @private
|
|
214
230
|
*/
|
|
215
231
|
;
|
|
216
232
|
|
|
217
|
-
_proto.
|
|
218
|
-
if (
|
|
219
|
-
this.
|
|
220
|
-
|
|
221
|
-
this._filterModel.attachPropertyChange(this._handleFilterModelChange, this);
|
|
222
|
-
|
|
223
|
-
this.setModel(this._filterModel, CustomFilterFieldContentWrapper.FILTER_MODEL_ALIAS);
|
|
233
|
+
_proto._observeChanges = function _observeChanges(changes) {
|
|
234
|
+
if (changes.name === "conditions") {
|
|
235
|
+
this._handleConditionsChange(changes.current);
|
|
224
236
|
}
|
|
225
237
|
}
|
|
226
238
|
/**
|
|
@@ -232,8 +244,6 @@ sap.ui.define(["sap/fe/core/helpers/ClassSupport", "sap/fe/core/helpers/Semantic
|
|
|
232
244
|
;
|
|
233
245
|
|
|
234
246
|
_proto.getContent = function getContent() {
|
|
235
|
-
this._registerFilterModel();
|
|
236
|
-
|
|
237
247
|
return this.getAggregation("content");
|
|
238
248
|
}
|
|
239
249
|
/**
|
|
@@ -250,13 +260,15 @@ sap.ui.define(["sap/fe/core/helpers/ClassSupport", "sap/fe/core/helpers/Semantic
|
|
|
250
260
|
/**
|
|
251
261
|
* Sets the value for control property 'conditions'.
|
|
252
262
|
*
|
|
253
|
-
* @param {
|
|
263
|
+
* @param {object[]} [conditions] Array of filter conditions
|
|
264
|
+
* @returns {CustomFilterFieldContentWrapper} Reference to this wrapper
|
|
254
265
|
* @private
|
|
255
266
|
*/
|
|
256
267
|
;
|
|
257
268
|
|
|
258
269
|
_proto.setConditions = function setConditions(conditions) {
|
|
259
|
-
this.setProperty("conditions", conditions);
|
|
270
|
+
this.setProperty("conditions", conditions || []);
|
|
271
|
+
return this;
|
|
260
272
|
}
|
|
261
273
|
/**
|
|
262
274
|
* Gets the filter model alias 'filterValues'.
|
|
@@ -274,7 +286,7 @@ sap.ui.define(["sap/fe/core/helpers/ClassSupport", "sap/fe/core/helpers/Semantic
|
|
|
274
286
|
* sent by ExtensionAPI#setFilterValues().
|
|
275
287
|
*
|
|
276
288
|
* @param {any} values The filter values
|
|
277
|
-
* @param {string} operator The operator name
|
|
289
|
+
* @param {string} [operator] The operator name
|
|
278
290
|
* @private
|
|
279
291
|
*/
|
|
280
292
|
;
|
|
@@ -296,12 +308,6 @@ sap.ui.define(["sap/fe/core/helpers/ClassSupport", "sap/fe/core/helpers/Semantic
|
|
|
296
308
|
_proto.updateFilterModelByConditions = function updateFilterModelByConditions(conditions) {
|
|
297
309
|
var _conditions$;
|
|
298
310
|
|
|
299
|
-
// When the filter field is created via "Adapt Filter"
|
|
300
|
-
// this handler is fired before the filter model is created
|
|
301
|
-
// -> in general, create it, if needed!
|
|
302
|
-
// TODO: Consider using method Control#clone() to register filter model
|
|
303
|
-
this._registerFilterModel();
|
|
304
|
-
|
|
305
311
|
var operator = ((_conditions$ = conditions[0]) === null || _conditions$ === void 0 ? void 0 : _conditions$.operator) || "";
|
|
306
312
|
var formatOptions = operator !== "" ? {
|
|
307
313
|
operators: [operator]
|
|
@@ -316,8 +322,7 @@ sap.ui.define(["sap/fe/core/helpers/ClassSupport", "sap/fe/core/helpers/Semantic
|
|
|
316
322
|
|
|
317
323
|
this._filterModel.setProperty((_this$getBindingConte = this.getBindingContext(CustomFilterFieldContentWrapper.FILTER_MODEL_ALIAS)) === null || _this$getBindingConte === void 0 ? void 0 : _this$getBindingConte.getPath(), stringValue);
|
|
318
324
|
}
|
|
319
|
-
}
|
|
320
|
-
;
|
|
325
|
+
};
|
|
321
326
|
|
|
322
327
|
_proto.getAccessibilityInfo = function getAccessibilityInfo() {
|
|
323
328
|
var _content$getAccessibi;
|
|
@@ -363,4 +368,4 @@ sap.ui.define(["sap/fe/core/helpers/ClassSupport", "sap/fe/core/helpers/Semantic
|
|
|
363
368
|
_exports = CustomFilterFieldContentWrapper;
|
|
364
369
|
return _exports;
|
|
365
370
|
}, false);
|
|
366
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIkN1c3RvbUZpbHRlckZpZWxkQ29udGVudFdyYXBwZXIudHMiXSwibmFtZXMiOlsiQ3VzdG9tRmlsdGVyRmllbGRDb250ZW50V3JhcHBlciIsImRlZmluZVVJNUNsYXNzIiwiaW1wbGVtZW50SW50ZXJmYWNlIiwicHJvcGVydHkiLCJ0eXBlIiwiZGVmYXVsdFZhbHVlIiwiYWdncmVnYXRpb24iLCJtdWx0aXBsZSIsImlzRGVmYXVsdCIsImV2ZW50IiwicmVuZGVyIiwicmVuZGVyTWFuYWdlciIsImNvbnRyb2wiLCJvcGVuU3RhcnQiLCJzdHlsZSIsIndpZHRoIiwib3BlbkVuZCIsInJlbmRlckNvbnRyb2wiLCJnZXRDb250ZW50IiwiY2xvc2UiLCJfZmlsdGVyVmFsdWVzVG9Db25kaXRpb25zIiwiZmlsdGVyVmFsdWVzIiwib3BlcmF0b3IiLCJmb3JtYXRPcHRpb25zIiwib3BlcmF0b3JzIiwiY29uZGl0aW9ucyIsImhhc093blByb3BlcnR5IiwidmFsdWVzIiwidW5kZWZpbmVkIiwiRXJyb3IiLCJjb25kaXRpb25zVHlwZSIsIkNvbmRpdGlvbnNUeXBlIiwiY29uZGl0aW9uVmFsdWVzIiwiQXJyYXkiLCJpc0FycmF5IiwibGVuZ3RoIiwiU2VtYW50aWNEYXRlT3BlcmF0b3JzIiwiZ2V0U2VtYW50aWNEYXRlT3BlcmF0aW9ucyIsImluY2x1ZGVzIiwiQ29uZGl0aW9uIiwiY3JlYXRlQ29uZGl0aW9uIiwiQ29uZGl0aW9uVmFsaWRhdGVkIiwiTm90VmFsaWRhdGVkIiwibWFwIiwiY29uZGl0aW9uVmFsdWUiLCJzdHJpbmdWYWx1ZSIsInRvU3RyaW5nIiwicGFyc2VkQ29uZGl0aW9ucyIsInBhcnNlVmFsdWUiLCJmaWx0ZXIiLCJfY29uZGl0aW9uc1RvRmlsdGVyTW9kZWxTdHJpbmciLCJjb25kaXRpb24iLCJmb3JtYXRWYWx1ZSIsImpvaW4iLCJfaGFuZGxlRmlsdGVyTW9kZWxDaGFuZ2UiLCJjaGFuZ2VFdmVudCIsInByb3BlcnR5UGF0aCIsImdldE9iamVjdEJpbmRpbmciLCJnZXRQYXRoIiwiZ2V0U291cmNlIiwiZ2V0UHJvcGVydHkiLCJ1cGRhdGVDb25kaXRpb25zQnlGaWx0ZXJWYWx1ZXMiLCJfaGFuZGxlQ29uZGl0aW9uc0NoYW5nZSIsInVwZGF0ZUZpbHRlck1vZGVsQnlDb25kaXRpb25zIiwiaW5pdCIsIl9jb25kaXRpb25zT2JzZXJ2ZXIiLCJNYW5hZ2VkT2JqZWN0T2JzZXJ2ZXIiLCJfb2JzZXJ2ZUNoYW5nZXMiLCJiaW5kIiwib2JzZXJ2ZSIsInByb3BlcnRpZXMiLCJjaGFuZ2VzIiwibmFtZSIsImN1cnJlbnQiLCJfcmVnaXN0ZXJGaWx0ZXJNb2RlbCIsIl9maWx0ZXJNb2RlbCIsIkpTT05Nb2RlbCIsImF0dGFjaFByb3BlcnR5Q2hhbmdlIiwic2V0TW9kZWwiLCJGSUxURVJfTU9ERUxfQUxJQVMiLCJnZXRBZ2dyZWdhdGlvbiIsImdldENvbmRpdGlvbnMiLCJzZXRDb25kaXRpb25zIiwic2V0UHJvcGVydHkiLCJnZXRGaWx0ZXJNb2RlbEFsaWFzIiwiZ2V0QmluZGluZ0NvbnRleHQiLCJnZXRBY2Nlc3NpYmlsaXR5SW5mbyIsImNvbnRlbnQiLCJDb250cm9sIl0sIm1hcHBpbmdzIjoiO0FBQUE7QUFDQTtBQUNBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O01BOEJxQkEsK0I7QUFUckI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtTQUNDQyxjQUFjLENBQUMsc0RBQUQsQyxVQUViQyxrQkFBa0IsQ0FBQywwQkFBRCxDLFVBSWxCQyxRQUFRLENBQUM7QUFBRUMsSUFBQUEsSUFBSSxFQUFFLHFCQUFSO0FBQStCQyxJQUFBQSxZQUFZLEVBQUU7QUFBN0MsR0FBRCxDLFVBR1JGLFFBQVEsQ0FBQztBQUFFQyxJQUFBQSxJQUFJLEVBQUUsU0FBUjtBQUFtQkMsSUFBQUEsWUFBWSxFQUFFO0FBQWpDLEdBQUQsQyxVQUdSRixRQUFRLENBQUM7QUFBRUMsSUFBQUEsSUFBSSxFQUFFLFVBQVI7QUFBb0JDLElBQUFBLFlBQVksRUFBRTtB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Qy9FLFlBQU1sQyxXQUFXLEdBQUc3QywrQkFBK0IsQ0FBQ2tELDhCQUFoQyxDQUErRHpCLFVBQS9ELEVBQTJFRixhQUEzRSxDQUFwQjs7QUFDQSxhQUFLb0QsWUFBTCxDQUFrQlEsV0FBbEIsMEJBQ0MsS0FBS0UsaUJBQUwsQ0FBdUJyRiwrQkFBK0IsQ0FBQytFLGtCQUF2RCxDQURELDBEQUNDLHNCQUE0RXJCLE9BQTVFLEVBREQsRUFFQ2IsV0FGRDtBQUlBO0FBQ0QsSyxDQUVEOzs7V0FFQXlDLG9CLEdBQUEsZ0NBQTRCO0FBQUE7O0FBQzNCLFVBQU1DLE9BQU8sR0FBRyxLQUFLckUsVUFBTCxFQUFoQjtBQUNBLGFBQU8sQ0FBQXFFLE9BQU8sU0FBUCxJQUFBQSxPQUFPLFdBQVAscUNBQUFBLE9BQU8sQ0FBRUQsb0JBQVQscUZBQUFDLE9BQU8sTUFBOEIsRUFBNUM7QUFDQSxLOzs7SUFwUDJEQyxPLFdBeUJwQ1Qsa0IsR0FBcUIsYzs7Ozs7YUF0QkosSSIsInNvdXJjZVJvb3QiOiIuIiwic291cmNlc0NvbnRlbnQiOlsiLyohXG4gKiAke2NvcHlyaWdodH1cbiAqL1xuaW1wb3J0IHsgYWdncmVnYXRpb24sIGRlZmluZVVJNUNsYXNzLCBldmVudCwgaW1wbGVtZW50SW50ZXJmYWNlLCBwcm9wZXJ0eSB9IGZyb20gXCJzYXAvZmUvY29yZS9oZWxwZXJzL0NsYXNzU3VwcG9ydFwiO1xuaW1wb3J0IFNlbWFudGljRGF0ZU9wZXJhdG9ycyBmcm9tIFwic2FwL2ZlL2NvcmUvaGVscGVycy9TZW1hbnRpY0RhdGVPcGVyYXRvcnNcIjtcbmltcG9ydCBNYW5hZ2VkT2JqZWN0T2JzZXJ2ZXIgZnJvbSBcInNhcC91aS9iYXNlL01hbmFnZWRPYmplY3RPYnNlcnZlclwiO1xuaW1wb3J0IENvbnRyb2wgZnJvbSBcInNhcC91aS9jb3JlL0NvbnRyb2xcIjtcbmltcG9ydCB7IElGb3JtQ29udGVudCB9IGZyb20gXCJzYXAvdWkvY29yZS9saWJyYXJ5XCI7XG5pbXBvcnQgUmVuZGVyTWFuYWdlciBmcm9tIFwic2FwL3VpL2NvcmUvUmVuZGVyTWFuYWdlclwiO1xuaW1wb3J0IENvbmRpdGlvbiwgeyBDb25kaXRpb25PYmplY3QgfSBmcm9tIFwic2FwL3VpL21kYy9jb25kaXRpb24vQ29uZGl0aW9uXCI7XG5pbXBvcnQgQ29uZGl0aW9uVmFsaWRhdGVkIGZyb20gXCJzYXAvdWkvbWRjL2VudW0vQ29uZGl0aW9uVmFsaWRhdGVkXCI7XG5pbXBvcnQgQ29uZGl0aW9uc1R5cGUgZnJvbSBcInNhcC91aS9tZGMvZmllbGQvQ29uZGl0aW9uc1R5cGVcIjtcbmltcG9ydCBKU09OTW9kZWwgZnJvbSBcInNhcC91aS9tb2RlbC9qc29uL0pTT05Nb2RlbFwiO1xuXG4vKipcbiAqIFR5cGUgdXNlZCBmb3IgZm9ybWF0IG9wdGlvbnNcbiAqXG4gKiBAdHlwZWRlZiBGb3JtYXRPcHRpb25zVHlwZVxuICovXG50eXBlIEZvcm1hdE9wdGlvbnNUeXBlID0ge1xuXHRvcGVyYXRvcnM6IHN0cmluZ1tdO1xufTtcblxuLyoqXG4gKiBAY2xhc3NcbiAqIENyZWF0ZXMgYW4gPGNvZGU+c2FwLmZlLmNvcmUuY29udHJvbHMuQ3VzdG9tRmlsdGVyRmllbGRDb250ZW50V3JhcHBlcjwvY29kZT4gb2JqZWN0LlxuICogVGhpcyBpcyB1c2VkIGluIHRoZSB7QGxpbmsgc2FwLnVpLm1kYy5GaWx0ZXJGaWVsZCBGaWx0ZXJGaWVsZH0gYXMgYSBmaWx0ZXIgY29udGVudC5cbiAqIEBleHRlbmRzIHNhcC51aS5jb3JlLkNvbnRyb2xcbiAqIEBwcml2YXRlXG4gKiBAYWxpYXMgc2FwLmZlLmNvcmUuY29udHJvbHMuQ3VzdG9tRmlsdGVyRmllbGRDb250ZW50V3JhcHBlclxuICovXG5AZGVmaW5lVUk1Q2xhc3MoXCJzYXAuZmUuY29yZS5jb250cm9scy5DdXN0b21GaWx0ZXJGaWVsZENvbnRlbnRXcmFwcGVyXCIpXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBDdXN0b21GaWx0ZXJGaWVsZENvbnRlbnRXcmFwcGVyIGV4dGVuZHMgQ29udHJvbCBpbXBsZW1lbnRzIElGb3JtQ29udGVudCB7XG5cdEBpbXBsZW1lbnRJbnRlcmZhY2UoXCJzYXAudWkuY29yZS5JRm9ybUNvbnRlbnRcIilcblx0Ly8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGNhbWVsY2FzZVxuXHRfX2ltcGxlbWVudHNfX3NhcF91aV9jb3JlX0lGb3JtQ29udGVudCA9IHRydWU7XG5cblx0QHByb3BlcnR5KHsgdHlwZTogXCJzYXAudWkuY29yZS5DU1NTaXplXCIsIGRlZmF1bHRWYWx1ZTogbnVsbCB9KVxuXHR3aWR0aCE6IHN0cmluZztcblxuXHRAcHJvcGVydHkoeyB0eXBlOiBcImJvb2xlYW5cIiwgZGVmYXVsdFZhbHVlOiBmYWxzZSB9KVxuXHRmb3JtRG9Ob3RBZGp1c3RXaWR0aCE6IGJvb2xlYW47XG5cblx0QHByb3BlcnR5KHsgdHlwZTogXCJvYmplY3RbXVwiLCBkZWZhdWx0VmFsdWU6IFtdIH0pXG5cdGNvbmRpdGlvbnMhOiBDb25kaXRpb25PYmplY3RbXTtcblxuXHRAYWdncmVnYXRpb24oeyB0eXBlOiBcInNhcC51aS5jb3JlLkNvbnRyb2xcIiwgbXVsdGlwbGU6IGZhbHNlLCBpc0RlZmF1bHQ6IHRydWUgfSlcblx0Y29udGVudCE6IENvbnRyb2w7XG5cblx0QGV2ZW50KClcblx0Y29uZGl0aW9uc0NoYW5nZSE6IEZ1bmN0aW9uO1xuXG5cdC8vIFRPRE86IENvbnNpZGVyIHVzaW5nIEZpZWxkQmFzZSBhcyBiYXNlIGNvbnRyb2wgKGluc3RlYWQgb2YgQ29udHJvbClcblx0Ly8gVE9ETzogSWYgRmllbGRCYXNlIGlzIHVzZWQsIGFkZCAnY2hhbmdlJyBldmVudCAmIGNvcnJlc3BvbmRpbmcgaGFuZGxlciB0byBidWJibGUgaXRcblxuXHRwcml2YXRlIF9maWx0ZXJNb2RlbDogYW55O1xuXHRwcml2YXRlIF9jb25kaXRpb25zT2JzZXJ2ZXI6IGFueTtcblx0cHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgRklMVEVSX01PREVMX0FMSUFTID0gXCJmaWx0ZXJWYWx1ZXNcIjtcblxuXHRzdGF0aWMgcmVuZGVyKHJlbmRlck1hbmFnZXI6IFJlbmRlck1hbmFnZXIsIGNvbnRyb2w6IEN1c3RvbUZpbHRlckZpZWxkQ29udGVudFdyYXBwZXIpOiB2b2lkIHtcblx0XHRyZW5kZXJNYW5hZ2VyLm9wZW5TdGFydChcImRpdlwiLCBjb250cm9sKTtcblx0XHRyZW5kZXJNYW5hZ2VyLnN0eWxlKFwibWluLWhlaWdodFwiLCBcIjFyZW1cIik7XG5cdFx0cmVuZGVyTWFuYWdlci5zdHlsZShcIndpZHRoXCIsIGNvbnRyb2wud2lkdGgpO1xuXHRcdHJlbmRlck1hbmFnZXIub3BlbkVuZCgpO1xuXHRcdHJlbmRlck1hbmFnZXIucmVuZGVyQ29udHJvbChjb250cm9sLmdldENvbnRlbnQoKSk7IC8vIHJlbmRlciB0aGUgY2hpbGQgQ29udHJvbFxuXHRcdHJlbmRlck1hbmFnZXIuY2xvc2UoXCJkaXZcIik7IC8vIGVuZCBvZiB0aGUgY29tcGxldGUgQ29udHJvbFxuXHR9XG5cblx0LyoqXG5cdCAqIE1hcHMgYW4gYXJyYXkgb2YgZmlsdGVyIHZhbHVlcyB0byBhbiBhcnJheSBvZiBjb25kaXRpb25zLlxuXHQgKlxuXHQgKiBAcGFyYW0ge0FycmF5IHwgc3RyaW5nfSBmaWx0ZXJWYWx1ZXMgQXJyYXkgb2YgZmlsdGVyIHZhbHVlIGJpbmRpbmdzIG9yIGEgZmlsdGVyIHZhbHVlIHN0cmluZ1xuXHQgKiBAcGFyYW0ge3N0cmluZ30gW29wZXJhdG9yXSBUaGUgb3BlcmF0b3IgdG8gYmUgdXNlZCAob3B0aW9uYWwpIC0gaWYgbm90IHNldCwgdGhlIGRlZmF1bHQgb3BlcmF0b3IgKEVRKSB3aWxsIGJlIHVzZWRcblx0ICogQHByaXZhdGVcblx0ICogQHJldHVybnMge0FycmF5fSBBcnJheSBvZiBmaWx0ZXIgY29uZGl0aW9uc1xuXHQgKi9cblx0c3RhdGljIF9maWx0ZXJWYWx1ZXNUb0NvbmRpdGlvbnMoZmlsdGVyVmFsdWVzOiBhbnkgfCBhbnlbXSwgb3BlcmF0b3I/OiBzdHJpbmcpOiBDb25kaXRpb25PYmplY3RbXSB7XG5cdFx0bGV0IGZvcm1hdE9wdGlvbnM6IEZvcm1hdE9wdGlvbnNUeXBlID0geyBvcGVyYXRvcnM6IFtdIH0sXG5cdFx0XHRjb25kaXRpb25zID0gW107XG5cblx0XHRpZiAob3BlcmF0b3IpIHtcblx0XHRcdGZvcm1hdE9wdGlvbnMgPSB7IG9wZXJhdG9yczogW29wZXJhdG9yXSB9O1xuXHRcdH1cblx0XHRpZiAoZmlsdGVyVmFsdWVzID09PSBcIlwiKSB7XG5cdFx0XHRmaWx0ZXJWYWx1ZXMgPSBbXTtcblx0XHR9IGVsc2UgaWYgKHR5cGVvZiBmaWx0ZXJWYWx1ZXMgPT09IFwib2JqZWN0XCIgJiYgZmlsdGVyVmFsdWVzLmhhc093blByb3BlcnR5KFwib3BlcmF0b3JcIikgJiYgZmlsdGVyVmFsdWVzLmhhc093blByb3BlcnR5KFwidmFsdWVzXCIpKSB7XG5cdFx0XHRmb3JtYXRPcHRpb25zID0geyBvcGVyYXRvcnM6IFtmaWx0ZXJWYWx1ZXMub3BlcmF0b3JdIH07XG5cdFx0XHRmaWx0ZXJWYWx1ZXMgPSBmaWx0ZXJWYWx1ZXMudmFsdWVzO1xuXHRcdH0gZWxzZSBpZiAoZmlsdGVyVmFsdWVzICE9PSB1bmRlZmluZWQgJiYgdHlwZW9mIGZpbHRlclZhbHVlcyAhPT0gXCJvYmplY3RcIiAmJiB0eXBlb2YgZmlsdGVyVmFsdWVzICE9PSBcInN0cmluZ1wiKSB7XG5cdFx0XHR0aHJvdyBuZXcgRXJyb3IoXCJGaWx0ZXJVdGlscy5qcyNfZmlsdGVyVmFsdWVzVG9Db25kaXRpb25zOiBVbmV4cGVjdGVkIHR5cGUgb2YgaW5wdXQgcGFyYW1ldGVyIHZWYWx1ZXM6IFwiICsgdHlwZW9mIGZpbHRlclZhbHVlcyk7XG5cdFx0fVxuXG5cdFx0Y29uc3QgY29uZGl0aW9uc1R5cGU6IGFueSA9IG5ldyBDb25kaXRpb25zVHlwZShmb3JtYXRPcHRpb25zKTtcblx0XHRjb25zdCBjb25kaXRpb25WYWx1ZXMgPSBBcnJheS5pc0FycmF5KGZpbHRlclZhbHVlcykgPyBmaWx0ZXJWYWx1ZXMgOiBbZmlsdGVyVmFsdWVzXTtcblxuXHRcdC8vIFNob3J0Y3V0IGZvciBvcGVyYXRvciB3aXRob3V0IHZhbHVlcyBhbmQgc2VtYW50aWMgZGF0ZSBvcGVyYXRpb25zXG5cdFx0aWYgKFxuXHRcdFx0dHlwZW9mIG9wZXJhdG9yID09PSBcInN0cmluZ1wiICYmXG5cdFx0XHQoY29uZGl0aW9uVmFsdWVzLmxlbmd0aCA9PT0gMCB8fCBTZW1hbnRpY0RhdGVPcGVyYXRvcnMuZ2V0U2VtYW50aWNEYXRlT3BlcmF0aW9ucygpLmluY2x1ZGVzKG9wZXJhdG9yKSlcblx0XHQpIHtcblx0XHRcdGNvbmRpdGlvbnMgPSBbQ29uZGl0aW9uLmNyZWF0ZUNvbmRpdGlvbihvcGVyYXRvciwgY29uZGl0aW9uVmFsdWVzLCBudWxsLCBudWxsLCBDb25kaXRpb25WYWxpZGF0ZWQuTm90VmFsaWRhdGVkKV07XG5cdFx0fSBlbHNlIHtcblx0XHRcdGNvbmRpdGlvbnMgPSBjb25kaXRpb25WYWx1ZXNcblx0XHRcdFx0Lm1hcCgoY29uZGl0aW9uVmFsdWUpID0+IHtcblx0XHRcdFx0XHRjb25zdCBzdHJpbmdWYWx1ZSA9IGNvbmRpdGlvblZhbHVlPy50b1N0cmluZygpLFxuXHRcdFx0XHRcdFx0cGFyc2VkQ29uZGl0aW9ucyA9IGNvbmRpdGlvbnNUeXBlLnBhcnNlVmFsdWUoc3RyaW5nVmFsdWUsIFwiYW55XCIpO1xuXHRcdFx0XHRcdHJldHVybiBwYXJzZWRDb25kaXRpb25zPy5bMF07XG5cdFx0XHRcdH0pXG5cdFx0XHRcdC5maWx0ZXIoKGNvbmRpdGlvblZhbHVlKSA9PiBjb25kaXRpb25WYWx1ZSAhPT0gdW5kZWZpbmVkKTtcblx0XHR9XG5cblx0XHRyZXR1cm4gY29uZGl0aW9ucztcblx0fVxuXG5cdC8qKlxuXHQgKiBNYXBzIGFuIGFycmF5IG9mIGNvbmRpdGlvbnMgdG8gYSBjb21tYSBzZXBhcmF0ZWQgbGlzdCBvZiBmaWx0ZXIgdmFsdWVzLlxuXHQgKlxuXHQgKiBAcGFyYW0ge29iamVjdFtdfSBjb25kaXRpb25zIEFycmF5IG9mIGZpbHRlciBjb25kaXRpb25zXG5cdCAqIEBwYXJhbSB7b2JqZWN0fSBmb3JtYXRPcHRpb25zIEZvcm1hdCBvcHRpb25zIHRoYXQgc3BlY2lmaWVzIGEgY29uZGl0aW9uIHR5cGVcblx0ICogQHByaXZhdGVcblx0ICogQHJldHVybnMge3N0cmluZ30gQ29uY2F0ZW5hdGVkIHN0cmluZyBvZiBmaWx0ZXIgdmFsdWVzXG5cdCAqL1xuXHRzdGF0aWMgX2NvbmRpdGlvbnNUb0ZpbHRlck1vZGVsU3RyaW5nKGNvbmRpdGlvbnM6IG9iamVjdFtdLCBmb3JtYXRPcHRpb25zOiBGb3JtYXRPcHRpb25zVHlwZSk6IHN0cmluZyB7XG5cdFx0Y29uc3QgY29uZGl0aW9uc1R5cGUgPSBuZXcgQ29uZGl0aW9uc1R5cGUoZm9ybWF0T3B0aW9ucyk7XG5cblx0XHRyZXR1cm4gY29uZGl0aW9uc1xuXHRcdFx0Lm1hcCgoY29uZGl0aW9uKSA9PiB7XG5cdFx0XHRcdHJldHVybiBjb25kaXRpb25zVHlwZS5mb3JtYXRWYWx1ZShbY29uZGl0aW9uXSwgXCJhbnlcIikgfHwgXCJcIjtcblx0XHRcdH0pXG5cdFx0XHQuZmlsdGVyKChzdHJpbmdWYWx1ZSkgPT4ge1xuXHRcdFx0XHRyZXR1cm4gc3RyaW5nVmFsdWUgIT09IFwiXCI7XG5cdFx0XHR9KVxuXHRcdFx0LmpvaW4oXCIsXCIpO1xuXHR9XG5cblx0LyoqXG5cdCAqIExpc3RlbnMgdG8gZmlsdGVyIG1vZGVsIGNoYW5nZXMgYW5kIHVwZGF0ZXMgd3JhcHBlciBwcm9wZXJ0eSBcImNvbmRpdGlvbnNcIi5cblx0ICpcblx0ICogQHBhcmFtIHtvYmplY3R9IGNoYW5nZUV2ZW50IEV2ZW50IHRyaWdnZXJlZCBieSBhIGZpbHRlciBtb2RlbCBjaGFuZ2Vcblx0ICogQHByaXZhdGVcblx0ICovXG5cdF9oYW5kbGVGaWx0ZXJNb2RlbENoYW5nZShjaGFuZ2VFdmVudDogYW55KTogdm9pZCB7XG5cdFx0Y29uc3QgcHJvcGVydHlQYXRoID0gdGhpcy5nZXRPYmplY3RCaW5kaW5nKFwiZmlsdGVyVmFsdWVzXCIpLmdldFBhdGgoKSxcblx0XHRcdHZhbHVlcyA9IGNoYW5nZUV2ZW50LmdldFNvdXJjZSgpLmdldFByb3BlcnR5KHByb3BlcnR5UGF0aCk7XG5cdFx0dGhpcy51cGRhdGVDb25kaXRpb25zQnlGaWx0ZXJWYWx1ZXModmFsdWVzLCBcIlwiKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBMaXN0ZW5zIHRvIFwiY29uZGl0aW9uc1wiIGNoYW5nZXMgYW5kIHVwZGF0ZXMgdGhlIGZpbHRlciBtb2RlbC5cblx0ICpcblx0ICogQHBhcmFtIHtvYmplY3R9IGNvbmRpdGlvbnMgRXZlbnQgdHJpZ2dlcmVkIGJ5IGEgXCJjb25kaXRpb25zXCIgY2hhbmdlXG5cdCAqIEBwcml2YXRlXG5cdCAqL1xuXHRfaGFuZGxlQ29uZGl0aW9uc0NoYW5nZShjb25kaXRpb25zOiBhbnkpOiB2b2lkIHtcblx0XHR0aGlzLnVwZGF0ZUZpbHRlck1vZGVsQnlDb25kaXRpb25zKGNvbmRpdGlvbnMpO1xuXHR9XG5cblx0LyoqXG5cdCAqIEluaXRpYWxpemUgQ3VzdG9tRmlsdGVyRmllbGRDb250ZW50V3JhcHBlciBjb250cm9sIGFuZCByZWdpc3RlciBvYnNlcnZlci5cblx0ICovXG5cdGluaXQoKTogdm9pZCB7XG5cdFx0c3VwZXIuaW5pdCgpO1xuXHRcdHRoaXMuX2NvbmRpdGlvbnNPYnNlcnZlciA9IG5ldyBNYW5hZ2VkT2JqZWN0T2JzZXJ2ZXIodGhpcy5fb2JzZXJ2ZUNoYW5nZXMuYmluZCh0aGlzKSk7XG5cdFx0dGhpcy5fY29uZGl0aW9uc09ic2VydmVyLm9ic2VydmUodGhpcywge1xuXHRcdFx0cHJvcGVydGllczogW1wiY29uZGl0aW9uc1wiXVxuXHRcdH0pO1xuXHR9XG5cblx0LyoqXG5cdCAqIExpc3RlbnMgdG8gcHJvcGVydHkgY2hhbmdlcy5cblx0ICpcblx0ICogQHBhcmFtIHthbnl9IGNoYW5nZXMgUHJvcGVydHkgY2hhbmdlc1xuXHQgKiBAcHJpdmF0ZVxuXHQgKi9cblx0X29ic2VydmVDaGFuZ2VzKGNoYW5nZXM6IGFueSk6IHZvaWQge1xuXHRcdGlmIChjaGFuZ2VzLm5hbWUgPT09IFwiY29uZGl0aW9uc1wiKSB7XG5cdFx0XHR0aGlzLl9oYW5kbGVDb25kaXRpb25zQ2hhbmdlKGNoYW5nZXMuY3VycmVudCk7XG5cdFx0fVxuXHR9XG5cblx0LyoqXG5cdCAqIFJlZ2lzdGVycyB0aGUgaW50ZXJuYWwgZmlsdGVyIG1vZGVsIChhbGlhcyAnZmlsdGVyVmFsdWVzJykuXG5cdCAqXG5cdCAqIEBwcml2YXRlXG5cdCAqL1xuXHRfcmVnaXN0ZXJGaWx0ZXJNb2RlbCgpOiB2b2lkIHtcblx0XHRpZiAoIXRoaXMuX2ZpbHRlck1vZGVsKSB7XG5cdFx0XHR0aGlzLl9maWx0ZXJNb2RlbCA9IG5ldyBKU09OTW9kZWwoKTtcblx0XHRcdHRoaXMuX2ZpbHRlck1vZGVsLmF0dGFjaFByb3BlcnR5Q2hhbmdlKHRoaXMuX2hhbmRsZUZpbHRlck1vZGVsQ2hhbmdlLCB0aGlzKTtcblx0XHRcdHRoaXMuc2V0TW9kZWwodGhpcy5fZmlsdGVyTW9kZWwsIEN1c3RvbUZpbHRlckZpZWxkQ29udGVudFdyYXBwZXIuRklMVEVSX01PREVMX0FMSUFTKTtcblx0XHR9XG5cdH1cblxuXHQvKipcblx0ICogR2V0cyB0aGUgY29udGVudCBvZiB0aGlzIHdyYXBwZXIgY29udHJvbC5cblx0ICpcblx0ICogQHJldHVybnMge3NhcC51aS5jb3JlLkNvbnRyb2x9IFRoZSB3cmFwcGVyIGNvbnRlbnRcblx0ICogQHByaXZhdGVcblx0ICovXG5cdGdldENvbnRlbnQoKTogQ29udHJvbCB7XG5cdFx0dGhpcy5fcmVnaXN0ZXJGaWx0ZXJNb2RlbCgpO1xuXHRcdHJldHVybiB0aGlzLmdldEFnZ3JlZ2F0aW9uKFwiY29udGVudFwiKSBhcyBDb250cm9sO1xuXHR9XG5cblx0LyoqXG5cdCAqIEdldHMgdGhlIHZhbHVlIGZvciBjb250cm9sIHByb3BlcnR5ICdjb25kaXRpb25zJy5cblx0ICpcblx0ICogQHJldHVybnMge29iamVjdFtdfSBBcnJheSBvZiBmaWx0ZXIgY29uZGl0aW9uc1xuXHQgKiBAcHJpdmF0ZVxuXHQgKi9cblx0Z2V0Q29uZGl0aW9ucygpOiBvYmplY3RbXSB7XG5cdFx0cmV0dXJuIHRoaXMuZ2V0UHJvcGVydHkoXCJjb25kaXRpb25zXCIpO1xuXHR9XG5cblx0LyoqXG5cdCAqIFNldHMgdGhlIHZhbHVlIGZvciBjb250cm9sIHByb3BlcnR5ICdjb25kaXRpb25zJy5cblx0ICpcblx0ICogQHBhcmFtIHtBcnJheX0gY29uZGl0aW9ucyBBcnJheSBvZiBmaWx0ZXIgY29uZGl0aW9uc1xuXHQgKiBAcHJpdmF0ZVxuXHQgKi9cblx0c2V0Q29uZGl0aW9ucyhjb25kaXRpb25zOiBvYmplY3RbXSk6IHZvaWQge1xuXHRcdHRoaXMuc2V0UHJvcGVydHkoXCJjb25kaXRpb25zXCIsIGNvbmRpdGlvbnMpO1xuXHR9XG5cblx0LyoqXG5cdCAqIEdldHMgdGhlIGZpbHRlciBtb2RlbCBhbGlhcyAnZmlsdGVyVmFsdWVzJy5cblx0ICpcblx0ICogQHJldHVybnMge3N0cmluZ30gVGhlIGZpbHRlciBtb2RlbFxuXHQgKiBAcHJpdmF0ZVxuXHQgKi9cblx0Z2V0RmlsdGVyTW9kZWxBbGlhcygpOiBzdHJpbmcge1xuXHRcdHJldHVybiBDdXN0b21GaWx0ZXJGaWVsZENvbnRlbnRXcmFwcGVyLkZJTFRFUl9NT0RFTF9BTElBUztcblx0fVxuXG5cdC8qKlxuXHQgKiBVcGRhdGVzIHRoZSBwcm9wZXJ0eSBcImNvbmRpdGlvbnNcIiB3aXRoIGZpbHRlciB2YWx1ZXNcblx0ICogc2VudCBieSBFeHRlbnNpb25BUEkjc2V0RmlsdGVyVmFsdWVzKCkuXG5cdCAqXG5cdCAqIEBwYXJhbSB7YW55fSB2YWx1ZXMgVGhlIGZpbHRlciB2YWx1ZXNcblx0ICogQHBhcmFtIHtzdHJpbmd9IG9wZXJhdG9yIFRoZSBvcGVyYXRvciBuYW1lXG5cdCAqIEBwcml2YXRlXG5cdCAqL1xuXHR1cGRhdGVDb25kaXRpb25zQnlGaWx0ZXJWYWx1ZXModmFsdWVzOiBhbnksIG9wZXJhdG9yOiBzdHJpbmcpOiB2b2lkIHtcblx0XHRjb25zdCBjb25kaXRpb25zID0gQ3VzdG9tRmlsdGVyRmllbGRDb250ZW50V3JhcHBlci5fZmlsdGVyVmFsdWVzVG9Db25kaXRpb25zKHZhbHVlcywgb3BlcmF0b3IpO1xuXHRcdHRoaXMuc2V0Q29uZGl0aW9ucyhjb25kaXRpb25zKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBVcGRhdGVzIGZpbHRlciBtb2RlbCB3aXRoIGNvbmRpdGlvbnNcblx0ICogc2VudCBieSB0aGUge0BsaW5rIHNhcC51aS5tZGMuRmlsdGVyRmllbGQgRmlsdGVyRmllbGR9LlxuXHQgKlxuXHQgKiBAcGFyYW0ge0FycmF5fSBjb25kaXRpb25zIEFycmF5IG9mIGZpbHRlciBjb25kaXRpb25zXG5cdCAqIEBwcml2YXRlXG5cdCAqL1xuXHR1cGRhdGVGaWx0ZXJNb2RlbEJ5Q29uZGl0aW9ucyhjb25kaXRpb25zOiBhbnlbXSk6IHZvaWQge1xuXHRcdC8vIFdoZW4gdGhlIGZpbHRlciBmaWVsZCBpcyBjcmVhdGVkIHZpYSBcIkFkYXB0IEZpbHRlclwiXG5cdFx0Ly8gdGhpcyBoYW5kbGVyIGlzIGZpcmVkIGJlZm9yZSB0aGUgZmlsdGVyIG1vZGVsIGlzIGNyZWF0ZWRcblx0XHQvLyAtPiBpbiBnZW5lcmFsLCBjcmVhdGUgaXQsIGlmIG5lZWRlZCFcblx0XHQvLyBUT0RPOiBDb25zaWRlciB1c2luZyBtZXRob2QgQ29udHJvbCNjbG9uZSgpIHRvIHJlZ2lzdGVyIGZpbHRlciBtb2RlbFxuXHRcdHRoaXMuX3JlZ2lzdGVyRmlsdGVyTW9kZWwoKTtcblx0XHRjb25zdCBvcGVyYXRvciA9IGNvbmRpdGlvbnNbMF0/Lm9wZXJhdG9yIHx8IFwiXCI7XG5cdFx0Y29uc3QgZm9ybWF0T3B0aW9uczogRm9ybWF0T3B0aW9uc1R5cGUgPSBvcGVyYXRvciAhPT0gXCJcIiA/IHsgb3BlcmF0b3JzOiBbb3BlcmF0b3JdIH0gOiB7IG9wZXJhdG9yczogW10gfTtcblx0XHRpZiAodGhpcy5nZXRCaW5kaW5nQ29udGV4dChDdXN0b21GaWx0ZXJGaWVsZENvbnRlbnRXcmFwcGVyLkZJTFRFUl9NT0RFTF9BTElBUykpIHtcblx0XHRcdGNvbnN0IHN0cmluZ1ZhbHVlID0gQ3VzdG9tRmlsdGVyRmllbGRDb250ZW50V3JhcHBlci5fY29uZGl0aW9uc1RvRmlsdGVyTW9kZWxTdHJpbmcoY29uZGl0aW9ucywgZm9ybWF0T3B0aW9ucyk7XG5cdFx0XHR0aGlzLl9maWx0ZXJNb2RlbC5zZXRQcm9wZXJ0eShcblx0XHRcdFx0dGhpcy5nZXRCaW5kaW5nQ29udGV4dChDdXN0b21GaWx0ZXJGaWVsZENvbnRlbnRXcmFwcGVyLkZJTFRFUl9NT0RFTF9BTElBUyk/LmdldFBhdGgoKSxcblx0XHRcdFx0c3RyaW5nVmFsdWVcblx0XHRcdCk7XG5cdFx0fVxuXHR9XG5cblx0Ly8gVE9ETzogQ2hlY2ssIGlmIGltcGxlbWVudGF0aW9uIG9mIF9zZXRBcmlhTGFiZWxsZWRCeSgpIGlzIG5lZWRlZCA/XG5cblx0Z2V0QWNjZXNzaWJpbGl0eUluZm8oKTogYW55IHtcblx0XHRjb25zdCBjb250ZW50ID0gdGhpcy5nZXRDb250ZW50KCk7XG5cdFx0cmV0dXJuIGNvbnRlbnQ/LmdldEFjY2Vzc2liaWxpdHlJbmZvPy4oKSB8fCB7fTtcblx0fVxufVxuIl19
|
|
371
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIkN1c3RvbUZpbHRlckZpZWxkQ29udGVudFdyYXBwZXIudHMiXSwibmFtZXMiOlsiQ3VzdG9tRmlsdGVyRmllbGRDb250ZW50V3JhcHBlciIsImRlZmluZVVJNUNsYXNzIiwiaW1wbGVtZW50SW50ZXJmYWNlIiwicHJvcGVydHkiLCJ0eXBlIiwiZGVmYXVsdFZhbHVlIiwiYWdncmVnYXRpb24iLCJtdWx0aXBsZSIsImlzRGVmYXVsdCIsImV2ZW50IiwicmVuZGVyIiwicmVuZGVyTWFuYWdlciIsImNvbnRyb2wiLCJvcGVuU3RhcnQiLCJzdHlsZSIsIndpZHRoIiwib3BlbkVuZCIsInJlbmRlckNvbnRyb2wiLCJnZXRDb250ZW50IiwiY2xvc2UiLCJfZmlsdGVyVmFsdWVzVG9Db25kaXRpb25zIiwiZmlsdGVyVmFsdWVzIiwib3BlcmF0b3IiLCJmb3JtYXRPcHRpb25zIiwib3BlcmF0b3JzIiwiY29uZGl0aW9ucyIsImhhc093blByb3BlcnR5IiwidmFsdWVzIiwidW5kZWZpbmVkIiwiRXJyb3IiLCJjb25kaXRpb25zVHlwZSIsIkNvbmRpdGlvbnNUeXBlIiwiY29uZGl0aW9uVmFsdWVzIiwiQXJyYXkiLCJpc0FycmF5IiwibGVuZ3RoIiwiU2VtYW50aWNEYXRlT3BlcmF0b3JzIiwiZ2V0U2VtYW50aWNEYXRlT3BlcmF0aW9ucyIsImluY2x1ZGVzIiwiQ29uZGl0aW9uIiwiY3JlYXRlQ29uZGl0aW9uIiwiQ29uZGl0aW9uVmFsaWRhdGVkIiwiTm90VmFsaWRhdGVkIiwibWFwIiwiY29uZGl0aW9uVmFsdWUiLCJzdHJpbmdWYWx1ZSIsInRvU3RyaW5nIiwicGFyc2VkQ29uZGl0aW9ucyIsInBhcnNlVmFsdWUiLCJmaWx0ZXIiLCJfY29uZGl0aW9uc1RvRmlsdGVyTW9kZWxTdHJpbmciLCJjb25kaXRpb24iLCJmb3JtYXRWYWx1ZSIsImpvaW4iLCJfaGFuZGxlRmlsdGVyTW9kZWxDaGFuZ2UiLCJjaGFuZ2VFdmVudCIsInByb3BlcnR5UGF0aCIsImdldE9iamVjdEJpbmRpbmciLCJnZXRQYXRoIiwiZ2V0U291cmNlIiwiZ2V0UHJvcGVydHkiLCJ1cGRhdGVDb25kaXRpb25zQnlGaWx0ZXJWYWx1ZXMiLCJfaGFuZGxlQ29uZGl0aW9uc0NoYW5nZSIsInVwZGF0ZUZpbHRlck1vZGVsQnlDb25kaXRpb25zIiwiaW5pdCIsIl9jb25kaXRpb25zT2JzZXJ2ZXIiLCJNYW5hZ2VkT2JqZWN0T2JzZXJ2ZXIiLCJfb2JzZXJ2ZUNoYW5nZXMiLCJiaW5kIiwib2JzZXJ2ZSIsInByb3BlcnRpZXMiLCJfZmlsdGVyTW9kZWwiLCJKU09OTW9kZWwiLCJhdHRhY2hQcm9wZXJ0eUNoYW5nZSIsInNldE1vZGVsIiwiRklMVEVSX01PREVMX0FMSUFTIiwiY2xvbmUiLCJzSWRTdWZmaXgiLCJhTG9jYWxJZHMiLCJjaGFuZ2VzIiwibmFtZSIsImN1cnJlbnQiLCJnZXRBZ2dyZWdhdGlvbiIsImdldENvbmRpdGlvbnMiLCJzZXRDb25kaXRpb25zIiwic2V0UHJvcGVydHkiLCJnZXRGaWx0ZXJNb2RlbEFsaWFzIiwiZ2V0QmluZGluZ0NvbnRleHQiLCJnZXRBY2Nlc3NpYmlsaXR5SW5mbyIsImNvbnRlbnQiLCJDb250cm9sIl0sIm1hcHBpbmdzIjoiO0FBQUE7QUFDQTtBQUNBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O01BOEJxQkEsK0I7QUFUckI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtTQUNDQyxjQUFjLENBQUMsc0RBQUQsQyxVQUViQyxrQkFBa0IsQ0FBQywwQkFBRCxDLFVBSWxCQyxRQUFRLENBQUM7QUFBRUMsSUFBQUEsSUFBSSxFQUFFLHFCQUFSO0FBQStCQyxJQUFBQSxZQUFZLEVBQUU7QUFBN0MsR0FBRCxDLFVBR1JGLFFBQVEsQ0FBQztBQUFFQyxJQUFBQSxJQUFJLEVBQUUsU0FBUjtBQUFtQkMsSUFBQUEsWUFBWSxFQUFFO0FBQWpDLEdBQUQsQyxVQUdSRixRQUFRLENBQUM7QUFBRUMsSUFBQUEsSUFBSSxFQUFFLFVBQVI7QUFBb0JDLElBQUFBLFlB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QVEsS0FBSyxFQUFiLEdBQWtCO0FBQUVFLFFBQUFBLFNBQVMsRUFBRSxDQUFDRixRQUFEO0FBQWIsT0FBbEIsR0FBOEM7QUFBRUUsUUFBQUEsU0FBUyxFQUFFO0FBQWIsT0FBdkY7O0FBQ0EsVUFBSSxLQUFLK0QsaUJBQUwsQ0FBdUJ2RiwrQkFBK0IsQ0FBQzJFLGtCQUF2RCxDQUFKLEVBQWdGO0FBQUE7O0FBQy9FLFlBQU05QixXQUFXLEdBQUc3QywrQkFBK0IsQ0FBQ2tELDhCQUFoQyxDQUErRHpCLFVBQS9ELEVBQTJFRixhQUEzRSxDQUFwQjs7QUFDQSxhQUFLZ0QsWUFBTCxDQUFrQmMsV0FBbEIsMEJBQ0MsS0FBS0UsaUJBQUwsQ0FBdUJ2RiwrQkFBK0IsQ0FBQzJFLGtCQUF2RCxDQURELDBEQUNDLHNCQUE0RWpCLE9BQTVFLEVBREQsRUFFQ2IsV0FGRDtBQUlBO0FBQ0QsSzs7V0FFRDJDLG9CLEdBQUEsZ0NBQTRCO0FBQUE7O0FBQzNCLFVBQU1DLE9BQU8sR0FBRyxLQUFLdkUsVUFBTCxFQUFoQjtBQUNBLGFBQU8sQ0FBQXVFLE9BQU8sU0FBUCxJQUFBQSxPQUFPLFdBQVAscUNBQUFBLE9BQU8sQ0FBRUQsb0JBQVQscUZBQUFDLE9BQU8sTUFBOEIsRUFBNUM7QUFDQSxLOzs7SUF4UDJEQyxPLFdBeUJwQ2Ysa0IsR0FBcUIsYzs7Ozs7YUF0QkosSSIsInNvdXJjZVJvb3QiOiIuIiwic291cmNlc0NvbnRlbnQiOlsiLyohXG4gKiAke2NvcHlyaWdodH1cbiAqL1xuaW1wb3J0IHsgYWdncmVnYXRpb24sIGRlZmluZVVJNUNsYXNzLCBldmVudCwgaW1wbGVtZW50SW50ZXJmYWNlLCBwcm9wZXJ0eSB9IGZyb20gXCJzYXAvZmUvY29yZS9oZWxwZXJzL0NsYXNzU3VwcG9ydFwiO1xuaW1wb3J0IFNlbWFudGljRGF0ZU9wZXJhdG9ycyBmcm9tIFwic2FwL2ZlL2NvcmUvaGVscGVycy9TZW1hbnRpY0RhdGVPcGVyYXRvcnNcIjtcbmltcG9ydCBNYW5hZ2VkT2JqZWN0T2JzZXJ2ZXIgZnJvbSBcInNhcC91aS9iYXNlL01hbmFnZWRPYmplY3RPYnNlcnZlclwiO1xuaW1wb3J0IENvbnRyb2wgZnJvbSBcInNhcC91aS9jb3JlL0NvbnRyb2xcIjsgLy9pbXBvcnQgQ29udHJvbCBmcm9tIFwic2FwL3VpL21kYy9maWVsZC9GaWVsZEJhc2VcIjtcbmltcG9ydCB7IElGb3JtQ29udGVudCB9IGZyb20gXCJzYXAvdWkvY29yZS9saWJyYXJ5XCI7XG5pbXBvcnQgUmVuZGVyTWFuYWdlciBmcm9tIFwic2FwL3VpL2NvcmUvUmVuZGVyTWFuYWdlclwiO1xuaW1wb3J0IENvbmRpdGlvbiwgeyBDb25kaXRpb25PYmplY3QgfSBmcm9tIFwic2FwL3VpL21kYy9jb25kaXRpb24vQ29uZGl0aW9uXCI7XG5pbXBvcnQgQ29uZGl0aW9uVmFsaWRhdGVkIGZyb20gXCJzYXAvdWkvbWRjL2VudW0vQ29uZGl0aW9uVmFsaWRhdGVkXCI7XG5pbXBvcnQgQ29uZGl0aW9uc1R5cGUgZnJvbSBcInNhcC91aS9tZGMvZmllbGQvQ29uZGl0aW9uc1R5cGVcIjtcbmltcG9ydCBKU09OTW9kZWwgZnJvbSBcInNhcC91aS9tb2RlbC9qc29uL0pTT05Nb2RlbFwiO1xuXG4vKipcbiAqIFR5cGUgdXNlZCBmb3IgZm9ybWF0IG9wdGlvbnNcbiAqXG4gKiBAdHlwZWRlZiBGb3JtYXRPcHRpb25zVHlwZVxuICovXG50eXBlIEZvcm1hdE9wdGlvbnNUeXBlID0ge1xuXHRvcGVyYXRvcnM6IHN0cmluZ1tdO1xufTtcblxuLyoqXG4gKiBAY2xhc3NcbiAqIENyZWF0ZXMgYW4gPGNvZGU+c2FwLmZlLmNvcmUuY29udHJvbHMuQ3VzdG9tRmlsdGVyRmllbGRDb250ZW50V3JhcHBlcjwvY29kZT4gb2JqZWN0LlxuICogVGhpcyBpcyB1c2VkIGluIHRoZSB7QGxpbmsgc2FwLnVpLm1kYy5GaWx0ZXJGaWVsZCBGaWx0ZXJGaWVsZH0gYXMgYSBmaWx0ZXIgY29udGVudC5cbiAqIEBleHRlbmRzIHNhcC51aS5jb3JlLkNvbnRyb2xcbiAqIEBwcml2YXRlXG4gKiBAYWxpYXMgc2FwLmZlLmNvcmUuY29udHJvbHMuQ3VzdG9tRmlsdGVyRmllbGRDb250ZW50V3JhcHBlclxuICovXG5AZGVmaW5lVUk1Q2xhc3MoXCJzYXAuZmUuY29yZS5jb250cm9scy5DdXN0b21GaWx0ZXJGaWVsZENvbnRlbnRXcmFwcGVyXCIpXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBDdXN0b21GaWx0ZXJGaWVsZENvbnRlbnRXcmFwcGVyIGV4dGVuZHMgQ29udHJvbCBpbXBsZW1lbnRzIElGb3JtQ29udGVudCB7XG5cdEBpbXBsZW1lbnRJbnRlcmZhY2UoXCJzYXAudWkuY29yZS5JRm9ybUNvbnRlbnRcIilcblx0Ly8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGNhbWVsY2FzZVxuXHRfX2ltcGxlbWVudHNfX3NhcF91aV9jb3JlX0lGb3JtQ29udGVudCA9IHRydWU7XG5cblx0QHByb3BlcnR5KHsgdHlwZTogXCJzYXAudWkuY29yZS5DU1NTaXplXCIsIGRlZmF1bHRWYWx1ZTogbnVsbCB9KVxuXHR3aWR0aCE6IHN0cmluZztcblxuXHRAcHJvcGVydHkoeyB0eXBlOiBcImJvb2xlYW5cIiwgZGVmYXVsdFZhbHVlOiBmYWxzZSB9KVxuXHRmb3JtRG9Ob3RBZGp1c3RXaWR0aCE6IGJvb2xlYW47XG5cblx0QHByb3BlcnR5KHsgdHlwZTogXCJvYmplY3RbXVwiLCBkZWZhdWx0VmFsdWU6IFtdIH0pXG5cdGNvbmRpdGlvbnMhOiBDb25kaXRpb25PYmplY3RbXTtcblxuXHRAYWdncmVnYXRpb24oeyB0eXBlOiBcInNhcC51aS5jb3JlLkNvbnRyb2xcIiwgbXVsdGlwbGU6IGZhbHNlLCBpc0RlZmF1bHQ6IHRydWUgfSlcblx0Y29udGVudCE6IENvbnRyb2w7XG5cblx0QGV2ZW50KClcblx0Y29uZGl0aW9uc0NoYW5nZSE6IEZ1bmN0aW9uO1xuXG5cdC8vIE5vdGU6IEZpZWxkQmFzZSBtaWdodCBiZSB1c2VkIGFzIGJhc2UgY29udHJvbCAoaW5zdGVhZCBvZiBDb250cm9sKSBpbiBhIGxhdGVyIHZlcnNpb247XG5cdC8vIGluIHRoYXQgY2FzZSwgeW91IHNob3VsZCBhZGQgYSAnY2hhbmdlJyBldmVudCBhbmQgYnViYmxlIGl0IHRvIHRoZSBjb3JyZXNwb25kaW5nIGhhbmRsZXJzXG5cblx0cHJpdmF0ZSBfZmlsdGVyTW9kZWw6IGFueTtcblx0cHJpdmF0ZSBfY29uZGl0aW9uc09ic2VydmVyOiBhbnk7XG5cdHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IEZJTFRFUl9NT0RFTF9BTElBUyA9IFwiZmlsdGVyVmFsdWVzXCI7XG5cblx0c3RhdGljIHJlbmRlcihyZW5kZXJNYW5hZ2VyOiBSZW5kZXJNYW5hZ2VyLCBjb250cm9sOiBDdXN0b21GaWx0ZXJGaWVsZENvbnRlbnRXcmFwcGVyKTogdm9pZCB7XG5cdFx0cmVuZGVyTWFuYWdlci5vcGVuU3RhcnQoXCJkaXZcIiwgY29udHJvbCk7XG5cdFx0cmVuZGVyTWFuYWdlci5zdHlsZShcIm1pbi1oZWlnaHRcIiwgXCIxcmVtXCIpO1xuXHRcdHJlbmRlck1hbmFnZXIuc3R5bGUoXCJ3aWR0aFwiLCBjb250cm9sLndpZHRoKTtcblx0XHRyZW5kZXJNYW5hZ2VyLm9wZW5FbmQoKTtcblx0XHRyZW5kZXJNYW5hZ2VyLnJlbmRlckNvbnRyb2woY29udHJvbC5nZXRDb250ZW50KCkpOyAvLyByZW5kZXIgdGhlIGNoaWxkIENvbnRyb2xcblx0XHRyZW5kZXJNYW5hZ2VyLmNsb3NlKFwiZGl2XCIpOyAvLyBlbmQgb2YgdGhlIGNvbXBsZXRlIENvbnRyb2xcblx0fVxuXG5cdC8qKlxuXHQgKiBNYXBzIGFuIGFycmF5IG9mIGZpbHRlciB2YWx1ZXMgdG8gYW4gYXJyYXkgb2YgY29uZGl0aW9ucy5cblx0ICpcblx0ICogQHBhcmFtIHtBcnJheSB8IHN0cmluZ30gZmlsdGVyVmFsdWVzIEFycmF5IG9mIGZpbHRlciB2YWx1ZSBiaW5kaW5ncyBvciBhIGZpbHRlciB2YWx1ZSBzdHJpbmdcblx0ICogQHBhcmFtIHtzdHJpbmd9IFtvcGVyYXRvcl0gVGhlIG9wZXJhdG9yIHRvIGJlIHVzZWQgKG9wdGlvbmFsKSAtIGlmIG5vdCBzZXQsIHRoZSBkZWZhdWx0IG9wZXJhdG9yIChFUSkgd2lsbCBiZSB1c2VkXG5cdCAqIEBwcml2YXRlXG5cdCAqIEByZXR1cm5zIHtBcnJheX0gQXJyYXkgb2YgZmlsdGVyIGNvbmRpdGlvbnNcblx0ICovXG5cdHN0YXRpYyBfZmlsdGVyVmFsdWVzVG9Db25kaXRpb25zKGZpbHRlclZhbHVlczogYW55IHwgYW55W10sIG9wZXJhdG9yPzogc3RyaW5nKTogQ29uZGl0aW9uT2JqZWN0W10ge1xuXHRcdGxldCBmb3JtYXRPcHRpb25zOiBGb3JtYXRPcHRpb25zVHlwZSA9IHsgb3BlcmF0b3JzOiBbXSB9LFxuXHRcdFx0Y29uZGl0aW9ucyA9IFtdO1xuXG5cdFx0aWYgKG9wZXJhdG9yKSB7XG5cdFx0XHRmb3JtYXRPcHRpb25zID0geyBvcGVyYXRvcnM6IFtvcGVyYXRvcl0gfTtcblx0XHR9XG5cdFx0aWYgKGZpbHRlclZhbHVlcyA9PT0gXCJcIikge1xuXHRcdFx0ZmlsdGVyVmFsdWVzID0gW107XG5cdFx0fSBlbHNlIGlmICh0eXBlb2YgZmlsdGVyVmFsdWVzID09PSBcIm9iamVjdFwiICYmIGZpbHRlclZhbHVlcy5oYXNPd25Qcm9wZXJ0eShcIm9wZXJhdG9yXCIpICYmIGZpbHRlclZhbHVlcy5oYXNPd25Qcm9wZXJ0eShcInZhbHVlc1wiKSkge1xuXHRcdFx0Zm9ybWF0T3B0aW9ucyA9IHsgb3BlcmF0b3JzOiBbZmlsdGVyVmFsdWVzLm9wZXJhdG9yXSB9O1xuXHRcdFx0ZmlsdGVyVmFsdWVzID0gZmlsdGVyVmFsdWVzLnZhbHVlcztcblx0XHR9IGVsc2UgaWYgKGZpbHRlclZhbHVlcyAhPT0gdW5kZWZpbmVkICYmIHR5cGVvZiBmaWx0ZXJWYWx1ZXMgIT09IFwib2JqZWN0XCIgJiYgdHlwZW9mIGZpbHRlclZhbHVlcyAhPT0gXCJzdHJpbmdcIikge1xuXHRcdFx0dGhyb3cgbmV3IEVycm9yKFwiRmlsdGVyVXRpbHMuanMjX2ZpbHRlclZhbHVlc1RvQ29uZGl0aW9uczogVW5leHBlY3RlZCB0eXBlIG9mIGlucHV0IHBhcmFtZXRlciB2VmFsdWVzOiBcIiArIHR5cGVvZiBmaWx0ZXJWYWx1ZXMpO1xuXHRcdH1cblxuXHRcdGNvbnN0IGNvbmRpdGlvbnNUeXBlOiBhbnkgPSBuZXcgQ29uZGl0aW9uc1R5cGUoZm9ybWF0T3B0aW9ucyk7XG5cdFx0Y29uc3QgY29uZGl0aW9uVmFsdWVzID0gQXJyYXkuaXNBcnJheShmaWx0ZXJWYWx1ZXMpID8gZmlsdGVyVmFsdWVzIDogW2ZpbHRlclZhbHVlc107XG5cblx0XHQvLyBTaG9ydGN1dCBmb3Igb3BlcmF0b3Igd2l0aG91dCB2YWx1ZXMgYW5kIHNlbWFudGljIGRhdGUgb3BlcmF0aW9uc1xuXHRcdGlmIChcblx0XHRcdHR5cGVvZiBvcGVyYXRvciA9PT0gXCJzdHJpbmdcIiAmJlxuXHRcdFx0KGNvbmRpdGlvblZhbHVlcy5sZW5ndGggPT09IDAgfHwgU2VtYW50aWNEYXRlT3BlcmF0b3JzLmdldFNlbWFudGljRGF0ZU9wZXJhdGlvbnMoKS5pbmNsdWRlcyhvcGVyYXRvcikpXG5cdFx0KSB7XG5cdFx0XHRjb25kaXRpb25zID0gW0NvbmRpdGlvbi5jcmVhdGVDb25kaXRpb24ob3BlcmF0b3IsIGNvbmRpdGlvblZhbHVlcywgbnVsbCwgbnVsbCwgQ29uZGl0aW9uVmFsaWRhdGVkLk5vdFZhbGlkYXRlZCldO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRjb25kaXRpb25zID0gY29uZGl0aW9uVmFsdWVzXG5cdFx0XHRcdC5tYXAoKGNvbmRpdGlvblZhbHVlKSA9PiB7XG5cdFx0XHRcdFx0Y29uc3Qgc3RyaW5nVmFsdWUgPSBjb25kaXRpb25WYWx1ZT8udG9TdHJpbmcoKSxcblx0XHRcdFx0XHRcdHBhcnNlZENvbmRpdGlvbnMgPSBjb25kaXRpb25zVHlwZS5wYXJzZVZhbHVlKHN0cmluZ1ZhbHVlLCBcImFueVwiKTtcblx0XHRcdFx0XHRyZXR1cm4gcGFyc2VkQ29uZGl0aW9ucz8uWzBdO1xuXHRcdFx0XHR9KVxuXHRcdFx0XHQuZmlsdGVyKChjb25kaXRpb25WYWx1ZSkgPT4gY29uZGl0aW9uVmFsdWUgIT09IHVuZGVmaW5lZCk7XG5cdFx0fVxuXG5cdFx0cmV0dXJuIGNvbmRpdGlvbnM7XG5cdH1cblxuXHQvKipcblx0ICogTWFwcyBhbiBhcnJheSBvZiBjb25kaXRpb25zIHRvIGEgY29tbWEgc2VwYXJhdGVkIGxpc3Qgb2YgZmlsdGVyIHZhbHVlcy5cblx0ICpcblx0ICogQHBhcmFtIHtvYmplY3RbXX0gY29uZGl0aW9ucyBBcnJheSBvZiBmaWx0ZXIgY29uZGl0aW9uc1xuXHQgKiBAcGFyYW0ge29iamVjdH0gZm9ybWF0T3B0aW9ucyBGb3JtYXQgb3B0aW9ucyB0aGF0IHNwZWNpZmllcyBhIGNvbmRpdGlvbiB0eXBlXG5cdCAqIEBwcml2YXRlXG5cdCAqIEByZXR1cm5zIHtzdHJpbmd9IENvbmNhdGVuYXRlZCBzdHJpbmcgb2YgZmlsdGVyIHZhbHVlc1xuXHQgKi9cblx0c3RhdGljIF9jb25kaXRpb25zVG9GaWx0ZXJNb2RlbFN0cmluZyhjb25kaXRpb25zOiBvYmplY3RbXSwgZm9ybWF0T3B0aW9uczogRm9ybWF0T3B0aW9uc1R5cGUpOiBzdHJpbmcge1xuXHRcdGNvbnN0IGNvbmRpdGlvbnNUeXBlID0gbmV3IENvbmRpdGlvbnNUeXBlKGZvcm1hdE9wdGlvbnMpO1xuXG5cdFx0cmV0dXJuIGNvbmRpdGlvbnNcblx0XHRcdC5tYXAoKGNvbmRpdGlvbikgPT4ge1xuXHRcdFx0XHRyZXR1cm4gY29uZGl0aW9uc1R5cGUuZm9ybWF0VmFsdWUoW2NvbmRpdGlvbl0sIFwiYW55XCIpIHx8IFwiXCI7XG5cdFx0XHR9KVxuXHRcdFx0LmZpbHRlcigoc3RyaW5nVmFsdWUpID0+IHtcblx0XHRcdFx0cmV0dXJuIHN0cmluZ1ZhbHVlICE9PSBcIlwiO1xuXHRcdFx0fSlcblx0XHRcdC5qb2luKFwiLFwiKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBMaXN0ZW5zIHRvIGZpbHRlciBtb2RlbCBjaGFuZ2VzIGFuZCB1cGRhdGVzIHdyYXBwZXIgcHJvcGVydHkgXCJjb25kaXRpb25zXCIuXG5cdCAqXG5cdCAqIEBwYXJhbSB7b2JqZWN0fSBjaGFuZ2VFdmVudCBFdmVudCB0cmlnZ2VyZWQgYnkgYSBmaWx0ZXIgbW9kZWwgY2hhbmdlXG5cdCAqIEBwcml2YXRlXG5cdCAqL1xuXHRfaGFuZGxlRmlsdGVyTW9kZWxDaGFuZ2UoY2hhbmdlRXZlbnQ6IGFueSk6IHZvaWQge1xuXHRcdGNvbnN0IHByb3BlcnR5UGF0aCA9IHRoaXMuZ2V0T2JqZWN0QmluZGluZyhcImZpbHRlclZhbHVlc1wiKS5nZXRQYXRoKCksXG5cdFx0XHR2YWx1ZXMgPSBjaGFuZ2VFdmVudC5nZXRTb3VyY2UoKS5nZXRQcm9wZXJ0eShwcm9wZXJ0eVBhdGgpO1xuXHRcdHRoaXMudXBkYXRlQ29uZGl0aW9uc0J5RmlsdGVyVmFsdWVzKHZhbHVlcywgXCJcIik7XG5cdH1cblxuXHQvKipcblx0ICogTGlzdGVucyB0byBcImNvbmRpdGlvbnNcIiBjaGFuZ2VzIGFuZCB1cGRhdGVzIHRoZSBmaWx0ZXIgbW9kZWwuXG5cdCAqXG5cdCAqIEBwYXJhbSB7b2JqZWN0fSBjb25kaXRpb25zIEV2ZW50IHRyaWdnZXJlZCBieSBhIFwiY29uZGl0aW9uc1wiIGNoYW5nZVxuXHQgKiBAcHJpdmF0ZVxuXHQgKi9cblx0X2hhbmRsZUNvbmRpdGlvbnNDaGFuZ2UoY29uZGl0aW9uczogYW55KTogdm9pZCB7XG5cdFx0dGhpcy51cGRhdGVGaWx0ZXJNb2RlbEJ5Q29uZGl0aW9ucyhjb25kaXRpb25zKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBJbml0aWFsaXplIEN1c3RvbUZpbHRlckZpZWxkQ29udGVudFdyYXBwZXIgY29udHJvbCBhbmQgcmVnaXN0ZXIgb2JzZXJ2ZXIuXG5cdCAqL1xuXHRpbml0KCk6IHZvaWQge1xuXHRcdHN1cGVyLmluaXQoKTtcblx0XHR0aGlzLl9jb25kaXRpb25zT2JzZXJ2ZXIgPSBuZXcgTWFuYWdlZE9iamVjdE9ic2VydmVyKHRoaXMuX29ic2VydmVDaGFuZ2VzLmJpbmQodGhpcykpO1xuXHRcdHRoaXMuX2NvbmRpdGlvbnNPYnNlcnZlci5vYnNlcnZlKHRoaXMsIHtcblx0XHRcdHByb3BlcnRpZXM6IFtcImNvbmRpdGlvbnNcIl1cblx0XHR9KTtcblx0XHR0aGlzLl9maWx0ZXJNb2RlbCA9IG5ldyBKU09OTW9kZWwoKTtcblx0XHR0aGlzLl9maWx0ZXJNb2RlbC5hdHRhY2hQcm9wZXJ0eUNoYW5nZSh0aGlzLl9oYW5kbGVGaWx0ZXJNb2RlbENoYW5nZSwgdGhpcyk7XG5cdFx0dGhpcy5zZXRNb2RlbCh0aGlzLl9maWx0ZXJNb2RlbCwgQ3VzdG9tRmlsdGVyRmllbGRDb250ZW50V3JhcHBlci5GSUxURVJfTU9ERUxfQUxJQVMpO1xuXHR9XG5cblx0LyoqXG5cdCAqIE92ZXJyaWRlcyB7QGxpbmsgc2FwLnVpLmNvcmUuQ29udHJvbCNjbG9uZSBDb250cm9sLmNsb25lfSB0byBjbG9uZSBhZGRpdGlvbmFsXG5cdCAqIGludGVybmFsIHN0YXRlcy5cblx0ICpcblx0ICogQHBhcmFtIHtzdHJpbmd9IFtzSWRTdWZmaXhdIEEgc3VmZml4IHRvIGJlIGFwcGVuZGVkIHRvIHRoZSBjbG9uZWQgY29udHJvbCBpZFxuXHQgKiBAcGFyYW0ge3N0cmluZ1tdfSBbYUxvY2FsSWRzXSBBbiBhcnJheSBvZiBsb2NhbCBJRHMgd2l0aGluIHRoZSBjbG9uZWQgaGllcmFyY2h5IChpbnRlcm5hbGx5IHVzZWQpXG5cdCAqIEByZXR1cm5zIHtDdXN0b21GaWx0ZXJGaWVsZENvbnRlbnRXcmFwcGVyfSBSZWZlcmVuY2UgdG8gdGhlIG5ld2x5IGNyZWF0ZWQgY2xvbmVcblx0ICogQHByb3RlY3RlZFxuXHQgKi9cblx0Y2xvbmUoc0lkU3VmZml4OiBzdHJpbmcgfCB1bmRlZmluZWQsIGFMb2NhbElkczogc3RyaW5nW10gfCB1bmRlZmluZWQpOiB0aGlzIHtcblx0XHRjb25zdCBjbG9uZSA9IHN1cGVyLmNsb25lKHNJZFN1ZmZpeCwgYUxvY2FsSWRzKTtcblx0XHQvLyBEdXJpbmcgY2xvbmluZywgdGhlIG9sZCBtb2RlbCB3aWxsIGJlIGNvcGllZCBhbmQgb3ZlcndyaXRlcyBhbnkgbmV3IG1vZGVsIChzYW1lIGFsaWFzKSB0aGF0XG5cdFx0Ly8geW91IGludHJvZHVjZSBkdXJpbmcgaW5pdCgpOyBoZW5jZSB5b3UgbmVlZCB0byBvdmVyd3JpdGUgaXQgYWdhaW4gYnkgdGhlIG5ldyBvbmUgdGhhdCB5b3UndmVcblx0XHQvLyBjcmVhdGVkIGR1cmluZyBpbml0KCkgKGkuZS4gY2xvbmUuX2ZpbHRlck1vZGVsKTsgdGhhdCBzdGFuZGFyZCBiZWhhdmlvdXIgb2Ygc3VwZXIuY2xvbmUoKVxuXHRcdC8vIGNhbid0IGV2ZW4gYmUgc3VwcHJlc3NlZCBpbiBhbiBvd24gY29uc3RydWN0b3I7IGZvciBhIGRldGFpbGVkIGludmVzdGlnYXRpb24gb2YgdGhlIGNsb25pbmcsXG5cdFx0Ly8gcGxlYXNlIG92ZXJ3cml0ZSB0aGUgc2V0TW9kZWwoKSBtZXRob2QgYW5kIGNoZWNrIHRoZSBsaXN0IG9mIGNhbGxlcnMgYW5kIHN0ZXBzIGluZHVjZWQgYnkgdGhlbS5cblx0XHRjbG9uZS5zZXRNb2RlbChjbG9uZS5fZmlsdGVyTW9kZWwsIEN1c3RvbUZpbHRlckZpZWxkQ29udGVudFdyYXBwZXIuRklMVEVSX01PREVMX0FMSUFTKTtcblx0XHRyZXR1cm4gY2xvbmU7XG5cdH1cblxuXHQvKipcblx0ICogTGlzdGVucyB0byBwcm9wZXJ0eSBjaGFuZ2VzLlxuXHQgKlxuXHQgKiBAcGFyYW0ge2FueX0gY2hhbmdlcyBQcm9wZXJ0eSBjaGFuZ2VzXG5cdCAqIEBwcml2YXRlXG5cdCAqL1xuXHRfb2JzZXJ2ZUNoYW5nZXMoY2hhbmdlczogYW55KTogdm9pZCB7XG5cdFx0aWYgKGNoYW5nZXMubmFtZSA9PT0gXCJjb25kaXRpb25zXCIpIHtcblx0XHRcdHRoaXMuX2hhbmRsZUNvbmRpdGlvbnNDaGFuZ2UoY2hhbmdlcy5jdXJyZW50KTtcblx0XHR9XG5cdH1cblxuXHQvKipcblx0ICogR2V0cyB0aGUgY29udGVudCBvZiB0aGlzIHdyYXBwZXIgY29udHJvbC5cblx0ICpcblx0ICogQHJldHVybnMge3NhcC51aS5jb3JlLkNvbnRyb2x9IFRoZSB3cmFwcGVyIGNvbnRlbnRcblx0ICogQHByaXZhdGVcblx0ICovXG5cdGdldENvbnRlbnQoKTogQ29udHJvbCB7XG5cdFx0cmV0dXJuIHRoaXMuZ2V0QWdncmVnYXRpb24oXCJjb250ZW50XCIpIGFzIENvbnRyb2w7XG5cdH1cblxuXHQvKipcblx0ICogR2V0cyB0aGUgdmFsdWUgZm9yIGNvbnRyb2wgcHJvcGVydHkgJ2NvbmRpdGlvbnMnLlxuXHQgKlxuXHQgKiBAcmV0dXJucyB7b2JqZWN0W119IEFycmF5IG9mIGZpbHRlciBjb25kaXRpb25zXG5cdCAqIEBwcml2YXRlXG5cdCAqL1xuXHRnZXRDb25kaXRpb25zKCk6IG9iamVjdFtdIHtcblx0XHRyZXR1cm4gdGhpcy5nZXRQcm9wZXJ0eShcImNvbmRpdGlvbnNcIik7XG5cdH1cblxuXHQvKipcblx0ICogU2V0cyB0aGUgdmFsdWUgZm9yIGNvbnRyb2wgcHJvcGVydHkgJ2NvbmRpdGlvbnMnLlxuXHQgKlxuXHQgKiBAcGFyYW0ge29iamVjdFtdfSBbY29uZGl0aW9uc10gQXJyYXkgb2YgZmlsdGVyIGNvbmRpdGlvbnNcblx0ICogQHJldHVybnMge0N1c3RvbUZpbHRlckZpZWxkQ29udGVudFdyYXBwZXJ9IFJlZmVyZW5jZSB0byB0aGlzIHdyYXBwZXJcblx0ICogQHByaXZhdGVcblx0ICovXG5cdHNldENvbmRpdGlvbnMoY29uZGl0aW9uczogb2JqZWN0W10pOiB0aGlzIHtcblx0XHR0aGlzLnNldFByb3BlcnR5KFwiY29uZGl0aW9uc1wiLCBjb25kaXRpb25zIHx8IFtdKTtcblx0XHRyZXR1cm4gdGhpcztcblx0fVxuXG5cdC8qKlxuXHQgKiBHZXRzIHRoZSBmaWx0ZXIgbW9kZWwgYWxpYXMgJ2ZpbHRlclZhbHVlcycuXG5cdCAqXG5cdCAqIEByZXR1cm5zIHtzdHJpbmd9IFRoZSBmaWx0ZXIgbW9kZWxcblx0ICogQHByaXZhdGVcblx0ICovXG5cdGdldEZpbHRlck1vZGVsQWxpYXMoKTogc3RyaW5nIHtcblx0XHRyZXR1cm4gQ3VzdG9tRmlsdGVyRmllbGRDb250ZW50V3JhcHBlci5GSUxURVJfTU9ERUxfQUxJQVM7XG5cdH1cblxuXHQvKipcblx0ICogVXBkYXRlcyB0aGUgcHJvcGVydHkgXCJjb25kaXRpb25zXCIgd2l0aCBmaWx0ZXIgdmFsdWVzXG5cdCAqIHNlbnQgYnkgRXh0ZW5zaW9uQVBJI3NldEZpbHRlclZhbHVlcygpLlxuXHQgKlxuXHQgKiBAcGFyYW0ge2FueX0gdmFsdWVzIFRoZSBmaWx0ZXIgdmFsdWVzXG5cdCAqIEBwYXJhbSB7c3RyaW5nfSBbb3BlcmF0b3JdIFRoZSBvcGVyYXRvciBuYW1lXG5cdCAqIEBwcml2YXRlXG5cdCAqL1xuXHR1cGRhdGVDb25kaXRpb25zQnlGaWx0ZXJWYWx1ZXModmFsdWVzOiBhbnksIG9wZXJhdG9yPzogc3RyaW5nKTogdm9pZCB7XG5cdFx0Y29uc3QgY29uZGl0aW9ucyA9IEN1c3RvbUZpbHRlckZpZWxkQ29udGVudFdyYXBwZXIuX2ZpbHRlclZhbHVlc1RvQ29uZGl0aW9ucyh2YWx1ZXMsIG9wZXJhdG9yKTtcblx0XHR0aGlzLnNldENvbmRpdGlvbnMoY29uZGl0aW9ucyk7XG5cdH1cblxuXHQvKipcblx0ICogVXBkYXRlcyBmaWx0ZXIgbW9kZWwgd2l0aCBjb25kaXRpb25zXG5cdCAqIHNlbnQgYnkgdGhlIHtAbGluayBzYXAudWkubWRjLkZpbHRlckZpZWxkIEZpbHRlckZpZWxkfS5cblx0ICpcblx0ICogQHBhcmFtIHtBcnJheX0gY29uZGl0aW9ucyBBcnJheSBvZiBmaWx0ZXIgY29uZGl0aW9uc1xuXHQgKiBAcHJpdmF0ZVxuXHQgKi9cblx0dXBkYXRlRmlsdGVyTW9kZWxCeUNvbmRpdGlvbnMoY29uZGl0aW9uczogYW55W10pOiB2b2lkIHtcblx0XHRjb25zdCBvcGVyYXRvciA9IGNvbmRpdGlvbnNbMF0/Lm9wZXJhdG9yIHx8IFwiXCI7XG5cdFx0Y29uc3QgZm9ybWF0T3B0aW9uczogRm9ybWF0T3B0aW9uc1R5cGUgPSBvcGVyYXRvciAhPT0gXCJcIiA/IHsgb3BlcmF0b3JzOiBbb3BlcmF0b3JdIH0gOiB7IG9wZXJhdG9yczogW10gfTtcblx0XHRpZiAodGhpcy5nZXRCaW5kaW5nQ29udGV4dChDdXN0b21GaWx0ZXJGaWVsZENvbnRlbnRXcmFwcGVyLkZJTFRFUl9NT0RFTF9BTElBUykpIHtcblx0XHRcdGNvbnN0IHN0cmluZ1ZhbHVlID0gQ3VzdG9tRmlsdGVyRmllbGRDb250ZW50V3JhcHBlci5fY29uZGl0aW9uc1RvRmlsdGVyTW9kZWxTdHJpbmcoY29uZGl0aW9ucywgZm9ybWF0T3B0aW9ucyk7XG5cdFx0XHR0aGlzLl9maWx0ZXJNb2RlbC5zZXRQcm9wZXJ0eShcblx0XHRcdFx0dGhpcy5nZXRCaW5kaW5nQ29udGV4dChDdXN0b21GaWx0ZXJGaWVsZENvbnRlbnRXcmFwcGVyLkZJTFRFUl9NT0RFTF9BTElBUyk/LmdldFBhdGgoKSxcblx0XHRcdFx0c3RyaW5nVmFsdWVcblx0XHRcdCk7XG5cdFx0fVxuXHR9XG5cblx0Z2V0QWNjZXNzaWJpbGl0eUluZm8oKTogYW55IHtcblx0XHRjb25zdCBjb250ZW50ID0gdGhpcy5nZXRDb250ZW50KCk7XG5cdFx0cmV0dXJuIGNvbnRlbnQ/LmdldEFjY2Vzc2liaWxpdHlJbmZvPy4oKSB8fCB7fTtcblx0fVxufVxuIl19
|