@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
|
@@ -2,28 +2,28 @@
|
|
|
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/fe/core/
|
|
5
|
+
sap.ui.define(["sap/fe/core/formatters/TableFormatter", "sap/fe/core/helpers/BindingExpression", "sap/fe/core/templating/DataModelPathHelper", "../../../helpers/BindingHelper", "../../../ManifestSettings"], function (tableFormatters, BindingExpression, DataModelPathHelper, BindingHelper, ManifestSettings) {
|
|
6
6
|
"use strict";
|
|
7
7
|
|
|
8
8
|
var _exports = {};
|
|
9
|
+
var TemplateType = ManifestSettings.TemplateType;
|
|
10
|
+
var CreationMode = ManifestSettings.CreationMode;
|
|
11
|
+
var UI = BindingHelper.UI;
|
|
12
|
+
var singletonPathVisitor = BindingHelper.singletonPathVisitor;
|
|
9
13
|
var isPathUpdatable = DataModelPathHelper.isPathUpdatable;
|
|
10
14
|
var isPathInsertable = DataModelPathHelper.isPathInsertable;
|
|
11
15
|
var isPathDeletable = DataModelPathHelper.isPathDeletable;
|
|
12
16
|
var getTargetObjectPath = DataModelPathHelper.getTargetObjectPath;
|
|
13
|
-
var UI = BindingHelper.UI;
|
|
14
|
-
var singletonPathVisitor = BindingHelper.singletonPathVisitor;
|
|
15
|
-
var TemplateType = ManifestSettings.TemplateType;
|
|
16
|
-
var CreationMode = ManifestSettings.CreationMode;
|
|
17
|
-
var formatResult = BindingExpression.formatResult;
|
|
18
|
-
var greaterThan = BindingExpression.greaterThan;
|
|
19
17
|
var or = BindingExpression.or;
|
|
20
18
|
var notEqual = BindingExpression.notEqual;
|
|
21
19
|
var not = BindingExpression.not;
|
|
20
|
+
var length = BindingExpression.length;
|
|
22
21
|
var isConstant = BindingExpression.isConstant;
|
|
23
22
|
var isBinding = BindingExpression.isBinding;
|
|
24
23
|
var ifElse = BindingExpression.ifElse;
|
|
24
|
+
var greaterThan = BindingExpression.greaterThan;
|
|
25
25
|
var greaterOrEqual = BindingExpression.greaterOrEqual;
|
|
26
|
-
var
|
|
26
|
+
var formatResult = BindingExpression.formatResult;
|
|
27
27
|
var equal = BindingExpression.equal;
|
|
28
28
|
var constant = BindingExpression.constant;
|
|
29
29
|
var compileBinding = BindingExpression.compileBinding;
|
|
@@ -353,6 +353,8 @@ sap.ui.define(["sap/fe/core/helpers/BindingExpression", "../../../ManifestSettin
|
|
|
353
353
|
_exports.getDefaultTemplating = getDefaultTemplating;
|
|
354
354
|
|
|
355
355
|
function getCreateVisibility(converterContext, standardActionsContext) {
|
|
356
|
+
var _standardActionsConte;
|
|
357
|
+
|
|
356
358
|
var isForCreationRow = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
|
|
357
359
|
var isInsertable = standardActionsContext.restrictions.isInsertable.expression;
|
|
358
360
|
var isCreateHidden = isForCreationRow ? isActionAnnotatedHidden(converterContext, AnnotationHiddenProperty.CreateHidden, false) : standardActionsContext.hiddenAnnotation.create;
|
|
@@ -360,6 +362,14 @@ sap.ui.define(["sap/fe/core/helpers/BindingExpression", "../../../ManifestSettin
|
|
|
360
362
|
// - If the creation mode is external
|
|
361
363
|
// - If we're on the list report and create is not hidden
|
|
362
364
|
// - Otherwise this depends on the value of the the UI.IsEditable
|
|
365
|
+
// - Otherwise
|
|
366
|
+
// - If any of the following conditions is valid then create button isn't visible
|
|
367
|
+
// - no newAction availables
|
|
368
|
+
// - It's not insertable and there is not a new action
|
|
369
|
+
// - create is hidden
|
|
370
|
+
// - There are multiple visializations
|
|
371
|
+
// - It's an Analytical List Page
|
|
372
|
+
// - Uses InlineCreationRows mode and a Resposive table type
|
|
363
373
|
// - Otherwise
|
|
364
374
|
// - If we're on the list report ->
|
|
365
375
|
// - If UI.CreateHidden points to a property path -> provide a negated binding to this path
|
|
@@ -367,7 +377,7 @@ sap.ui.define(["sap/fe/core/helpers/BindingExpression", "../../../ManifestSettin
|
|
|
367
377
|
// - Otherwise
|
|
368
378
|
// - This depends on the value of the the UI.IsEditable
|
|
369
379
|
|
|
370
|
-
return ifElse(standardActionsContext.creationMode === CreationMode.External, and(not(isCreateHidden), or(converterContext.getTemplateType() === TemplateType.ListReport, UI.IsEditable)), ifElse(or(and(isConstant(newAction === null || newAction === void 0 ? void 0 : newAction.available), equal(newAction === null || newAction === void 0 ? void 0 : newAction.available, false)), and(isConstant(isInsertable), equal(isInsertable, false), !newAction), and(isConstant(isCreateHidden), equal(isCreateHidden, true)), standardActionsContext.isViewWithMultipleVisualizations, converterContext.getTemplateType() === TemplateType.AnalyticalListPage), false, ifElse(converterContext.getTemplateType() === TemplateType.ListReport, or(not(isBinding(isCreateHidden)), not(isCreateHidden)), and(not(isCreateHidden), UI.IsEditable))));
|
|
380
|
+
return ifElse(standardActionsContext.creationMode === CreationMode.External, and(not(isCreateHidden), or(converterContext.getTemplateType() === TemplateType.ListReport, UI.IsEditable)), ifElse(or(and(isConstant(newAction === null || newAction === void 0 ? void 0 : newAction.available), equal(newAction === null || newAction === void 0 ? void 0 : newAction.available, false)), and(isConstant(isInsertable), equal(isInsertable, false), !newAction), and(isConstant(isCreateHidden), equal(isCreateHidden, true)), standardActionsContext.isViewWithMultipleVisualizations, converterContext.getTemplateType() === TemplateType.AnalyticalListPage, and(standardActionsContext.creationMode === CreationMode.InlineCreationRows, ((_standardActionsConte = standardActionsContext.tableManifestConfiguration) === null || _standardActionsConte === void 0 ? void 0 : _standardActionsConte.type) === "ResponsiveTable")), false, ifElse(converterContext.getTemplateType() === TemplateType.ListReport, or(not(isBinding(isCreateHidden)), not(isCreateHidden)), and(not(isCreateHidden), UI.IsEditable))));
|
|
371
381
|
}
|
|
372
382
|
/**
|
|
373
383
|
* Gets the binding expression for the property visible of the action Delete.
|
|
@@ -428,11 +438,11 @@ sap.ui.define(["sap/fe/core/helpers/BindingExpression", "../../../ManifestSettin
|
|
|
428
438
|
_exports.getPasteVisibility = getPasteVisibility;
|
|
429
439
|
|
|
430
440
|
function getMassEditVisibility(converterContext, standardActionsContext) {
|
|
431
|
-
var
|
|
441
|
+
var _standardActionsConte2;
|
|
432
442
|
|
|
433
443
|
var isUpdateHidden = standardActionsContext.hiddenAnnotation.update,
|
|
434
444
|
pathUpdatableExpression = standardActionsContext.restrictions.isUpdatable.expression,
|
|
435
|
-
bMassEditEnabledInManifest = ((
|
|
445
|
+
bMassEditEnabledInManifest = ((_standardActionsConte2 = standardActionsContext.tableManifestConfiguration) === null || _standardActionsConte2 === void 0 ? void 0 : _standardActionsConte2.enableMassEdit) || false;
|
|
436
446
|
var templateBindingExpression = converterContext.getTemplateType() === TemplateType.ObjectPage ? UI.IsEditable : converterContext.getTemplateType() === TemplateType.ListReport; //MassEdit is visible
|
|
437
447
|
// If
|
|
438
448
|
// - there is no static restrictions set to false
|
|
@@ -589,4 +599,4 @@ sap.ui.define(["sap/fe/core/helpers/BindingExpression", "../../../ManifestSettin
|
|
|
589
599
|
_exports.isInDisplayMode = isInDisplayMode;
|
|
590
600
|
return _exports;
|
|
591
601
|
}, false);
|
|
592
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIlN0YW5kYXJkQWN0aW9ucy50cyJdLCJuYW1lcyI6WyJBbm5vdGF0aW9uSGlkZGVuUHJvcGVydHkiLCJnZW5lcmF0ZVN0YW5kYXJkQWN0aW9uc0NvbnRleHQiLCJjb252ZXJ0ZXJDb250ZXh0IiwiY3JlYXRpb25Nb2RlIiwidGFibGVNYW5pZmVzdENvbmZpZ3VyYXRpb24iLCJ2aWV3Q29uZmlndXJhdGlvbiIsImNvbGxlY3Rpb25QYXRoIiwiZ2V0VGFyZ2V0T2JqZWN0UGF0aCIsImdldERhdGFNb2RlbE9iamVjdFBhdGgiLCJoaWRkZW5Bbm5vdGF0aW9uIiwiY3JlYXRlIiwiaXNBY3Rpb25Bbm5vdGF0ZWRIaWRkZW4iLCJDcmVhdGVIaWRkZW4iLCJEZWxldGVIaWRkZW4iLCJ1cGRhdGUiLCJVcGRhdGVIaWRkZW4iLCJpc0RyYWZ0T3JTdGlja3lTdXBwb3J0ZWQiLCJpc1ZpZXdXaXRoTXVsdGlwbGVWaXN1YWxpemF0aW9ucyIsImdldE1hbmlmZXN0V3JhcHBlciIsImhhc011bHRpcGxlVmlzdWFsaXphdGlvbnMiLCJuZXdBY3Rpb24iLCJnZXROZXdBY3Rpb24iLCJyZXN0cmljdGlvbnMiLCJnZXRSZXN0cmljdGlvbnMiLCJpc0RyYWZ0U3VwcG9ydGVkIiwiY3VycmVudEVudGl0eVNldCIsImdldEVudGl0eVNldCIsImJJc0RyYWZ0Um9vdCIsImFubm90YXRpb25zIiwiQ29tbW9uIiwiRHJhZnRSb290IiwiYklzRHJhZnROb2RlIiwiRHJhZnROb2RlIiwiYklzRHJhZnRQYXJlbnRFbnRpdHlGb3JDb250YWlubWVudCIsInRhcmdldE9iamVjdCIsImNvbnRhaW5zVGFyZ2V0Iiwic3RhcnRpbmdFbnRpdHlTZXQiLCJiSXNEcmFmdFN1cHBvcnRlZCIsImJJc1N0aWNreVNlc3Npb25TdXBwb3J0ZWQiLCJTZXNzaW9uIiwiU3RpY2t5U2Vzc2lvblN1cHBvcnRlZCIsIm5ld0FjdGlvbk5hbWUiLCJOZXdBY3Rpb24iLCJ0b1N0cmluZyIsImF2YWlsYWJsZVByb3BlcnR5IiwiZ2V0RW50aXR5VHlwZSIsImFjdGlvbnMiLCJDb3JlIiwiT3BlcmF0aW9uQXZhaWxhYmxlIiwidW5kZWZpbmVkIiwibmFtZSIsImF2YWlsYWJsZSIsImFubm90YXRpb25FeHByZXNzaW9uIiwic0Fubm90YXRpb25UZXJtIiwiYldpdGhOYXZpZ2F0aW9uUGF0aCIsImRhdGFNb2RlbE9iamVjdFBhdGgiLCJ2aXNpdGVkTmF2aWdhdGlvblBhdGhzIiwibmF2aWdhdGlvblByb3BlcnRpZXMiLCJsZW5ndGgiLCJhY3Rpb25Bbm5vdGF0aW9uVmFsdWUiLCJVSSIsInBhdGgiLCJzaW5nbGV0b25QYXRoVmlzaXRvciIsImdldENvbnZlcnRlZFR5cGVzIiwiY29uc3RhbnQiLCJyZXN0cmljdGlvbnNEZWYiLCJrZXkiLCJpc1BhdGhJbnNlcnRhYmxlIiwiaXNQYXRoVXBkYXRhYmxlIiwiaXNQYXRoRGVsZXRhYmxlIiwicmVzdWx0IiwiZm9yRWFjaCIsImRlZiIsImRlZkZ1bmN0aW9uIiwiZXhwcmVzc2lvbiIsImFwcGx5IiwicGF0aFZpc2l0b3IiLCJuYXZpZ2F0aW9uUGF0aHMiLCJuYXZpZ2F0aW9uRXhwcmVzc2lvbiIsImlnbm9yZVRhcmdldENvbGxlY3Rpb24iLCJhdXRob3JpemVVbnJlc29sdmFibGUiLCJnZXRJbnNlcnRVcGRhdGVBY3Rpb25zVGVtcGxhdGluZyIsInN0YW5kYXJkQWN0aW9uc0NvbnRleHQiLCJpc0RyYWZ0T3JTdGlja3kiLCJpc0NyZWF0ZUFsd2F5c0hpZGRlbiIsIkNyZWF0aW9uTW9kZSIsIkV4dGVybmFsIiwiZ2V0U3RhbmRhcmRBY3Rpb25DcmVhdGUiLCJjcmVhdGVWaXNpYmlsaXR5IiwiZ2V0Q3JlYXRlVmlzaWJpbGl0eSIsImlzVGVtcGxhdGVkIiwiY29tcGlsZUJpbmRpbmciLCJnZXRDcmVhdGVUZW1wbGF0aW5nIiwidmlzaWJsZSIsImVuYWJsZWQiLCJnZXRDcmVhdGVFbmFibGVtZW50IiwiZ2V0U3RhbmRhcmRBY3Rpb25EZWxldGUiLCJkZWxldGVWaXNpYmlsaXR5IiwiZ2V0RGVsZXRlVmlzaWJpbGl0eSIsImdldERlZmF1bHRUZW1wbGF0aW5nIiwiZ2V0RGVsZXRlRW5hYmxlbWVudCIsImdldENyZWF0aW9uUm93IiwiY3JlYXRpb25Sb3dWaXNpYmlsaXR5IiwiZ2V0Q3JlYXRpb25Sb3dFbmFibGVtZW50IiwiZ2V0U3RhbmRhcmRBY3Rpb25QYXN0ZSIsImlzSW5zZXJ0VXBkYXRlQWN0aW9uc1RlbXBsYXRlZCIsImNyZWF0ZUVuYWJsZW1lbnQiLCJwYXN0ZVZpc2liaWxpdHkiLCJnZXRQYXN0ZVZpc2liaWxpdHkiLCJnZXRQYXN0ZUVuYWJsZW1lbnQiLCJnZXRTdGFuZGFyZEFjdGlvbk1hc3NFZGl0IiwibWFzc0VkaXRWaXNpYmlsaXR5IiwiZ2V0TWFzc0VkaXRWaXNpYmlsaXR5IiwiZ2V0TWFzc0VkaXRFbmFibGVtZW50IiwiaXNGb3JDcmVhdGlvblJvdyIsImFuZCIsIm9yIiwiQ3JlYXRpb25Sb3ciLCJub3QiLCJpc0NvbnN0YW50IiwiYWN0aW9uVmlzaWJpbGl0eSIsImlzSW5zZXJ0YWJsZSIsImlzQ3JlYXRlSGlkZGVuIiwiaWZFbHNlIiwiZ2V0VGVtcGxhdGVUeXBlIiwiVGVtcGxhdGVUeXBlIiwiTGlzdFJlcG9ydCIsIklzRWRpdGFibGUiLCJlcXVhbCIsIkFuYWx5dGljYWxMaXN0UGFnZSIsImlzQmluZGluZyIsImlzRGVsZXRlSGlkZGVuIiwiZGVsZXRlIiwicGF0aERlbGV0YWJsZUV4cHJlc3Npb24iLCJpc0RlbGV0YWJsZSIsIm5vdEVxdWFsIiwiZW5hYmxlUGFzdGUiLCJpbmRleE9mIiwiaXNVcGRhdGVIaWRkZW4iLCJwYXRoVXBkYXRhYmxlRXhwcmVzc2lvbiIsImlzVXBkYXRhYmxlIiwiYk1hc3NFZGl0RW5hYmxlZEluTWFuaWZlc3QiLCJlbmFibGVNYXNzRWRpdCIsInRlbXBsYXRlQmluZGluZ0V4cHJlc3Npb24iLCJPYmplY3RQYWdlIiwicmVzdHJpY3Rpb25zSW5zZXJ0YWJsZSIsInBhcnRuZXIiLCJfdHlwZSIsImRpc2FibGVBZGRSb3dCdXR0b25Gb3JFbXB0eURhdGEiLCJmb3JtYXRSZXN1bHQiLCJiaW5kaW5nRXhwcmVzc2lvbiIsInRhYmxlRm9ybWF0dGVycyIsInZhbGlkYXRlQ3JlYXRpb25Sb3dGaWVsZHMiLCJDb2xsZWN0aW9uVHlwZSIsInJlc29sdmVBYnNvbHV0ZVBhdGgiLCJ0YXJnZXQiLCJpc09ubHlEeW5hbWljT25DdXJyZW50RW50aXR5IiwibnVtYmVyT2ZTZWxlY3RlZENvbnRleHRzIiwibnVtYmVyT2ZEZWxldGFibGVDb250ZXh0cyIsIm51bWJlck9mVW5TYXZlZENvbnRleHRzIiwiZ3JlYXRlclRoYW4iLCJncmVhdGVyT3JFcXVhbCIsIm51bWJlck9mVXBkYXRhYmxlQ29udGV4dHMiLCJiRGlzcGxheU1vZGUiLCJpc0luRGlzcGxheU1vZGUiLCJydW50aW1lQmluZGluZyIsInRlbXBsYXRlVHlwZSJdLCJtYXBwaW5ncyI6IjtBQUFBO0FBQ0E7QUFDQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O01BMEJLQSx3Qjs7YUFBQUEsd0I7QUFBQUEsSUFBQUEsd0I7QUFBQUEsSUFBQUEsd0I7QUFBQUEsSUFBQUEsd0I7S0FBQUEsd0IsS0FBQUEsd0I7O0FBb0NMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNPLFdBQVNDLDhCQUFULENBQ05DLGdCQURNLEVBRU5DLFlBRk0sRUFHTkMsMEJBSE0sRUFJTkMsaUJBSk0sRUFLbUI7QUFDekIsV0FBTztBQUNOQyxNQUFBQSxjQUFjLEVBQUVDLG1CQUFtQixDQUFDTCxnQkFBZ0IsQ0FBQ00sc0JBQWpCLEVBQUQsQ0FEN0I7QUFFTkMsTUFBQUEsZ0JBQWdCLEVBQUU7QUFDakJDLFFBQUFBLE1BQU0sRUFBRUMsdUJBQXVCLENBQUNULGdCQUFELEVBQW1CRix3QkFBd0IsQ0FBQ1ksWUFBNUMsQ0FEZDtBQUVqQixrQkFBVUQsdUJBQXVCLENBQUNULGdCQUFELEVBQW1CRix3QkFBd0IsQ0FBQ2EsWUFBNUMsQ0FGaEI7QUFHakJDLFFBQUFBLE1BQU0sRUFBRUgsdUJB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QUNELGFBQU8sSUFBUDtBQUNBLEtBUnNILENBU3ZIOzs7QUFDQSxXQUFPLEtBQVA7QUFDQSIsInNvdXJjZVJvb3QiOiIuIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IENvbnZlcnRlckNvbnRleHQgZnJvbSBcIi4uLy4uLy4uL0NvbnZlcnRlckNvbnRleHRcIjtcbmltcG9ydCB7XG5cdGFuZCxcblx0YW5ub3RhdGlvbkV4cHJlc3Npb24sXG5cdGJpbmRpbmdFeHByZXNzaW9uLFxuXHRCaW5kaW5nRXhwcmVzc2lvbixcblx0Y29tcGlsZUJpbmRpbmcsXG5cdGNvbnN0YW50LFxuXHRlcXVhbCxcblx0bGVuZ3RoLFxuXHRFeHByZXNzaW9uLFxuXHRncmVhdGVyT3JFcXVhbCxcblx0aWZFbHNlLFxuXHRpc0JpbmRpbmcsXG5cdGlzQ29uc3RhbnQsXG5cdG5vdCxcblx0bm90RXF1YWwsXG5cdG9yLFxuXHRncmVhdGVyVGhhbixcblx0Zm9ybWF0UmVzdWx0XG59IGZyb20gXCJzYXAvZmUvY29yZS9oZWxwZXJzL0JpbmRpbmdFeHByZXNzaW9uXCI7XG5pbXBvcnQgeyBDcmVhdGlvbk1vZGUsIFRlbXBsYXRlVHlwZSwgVmlld1BhdGhDb25maWd1cmF0aW9uIH0gZnJvbSBcIi4uLy4uLy4uL01hbmlmZXN0U2V0dGluZ3NcIjtcbmltcG9ydCB7IHNpbmdsZXRvblBhdGhWaXNpdG9yLCBVSSB9IGZyb20gXCIuLi8uLi8uLi9oZWxwZXJzL0JpbmRpbmdIZWxwZXJcIjtcbmltcG9ydCB7IFByb3BlcnR5QW5ub3RhdGlvblZhbHVlIH0gZnJvbSBcIkBzYXAtdXgvdm9jYWJ1bGFyaWVzLXR5cGVzXCI7XG5pbXBvcnQgeyBnZXRUYXJnZXRPYmplY3RQYXRoLCBpc1BhdGhEZWxldGFibGUsIGlzUGF0aEluc2VydGFibGUsIGlzUGF0aFVwZGF0YWJsZSB9IGZyb20gXCJzYXAvZmUvY29yZS90ZW1wbGF0aW5nL0RhdGFNb2RlbFBhdGhIZWxwZXJcIjtcbmltcG9ydCB7IFRhYmxlQ29udHJvbENvbmZpZ3VyYXRpb24gfSBmcm9tIFwiLi4vVGFibGVcIjtcbmltcG9ydCB0YWJsZUZvcm1hdHRlcnMgZnJvbSBcInNhcC9mZS9jb3JlL2Zvcm1hdHRlcnMvVGFibGVGb3JtYXR0ZXJcIjtcblxuZW51bSBBbm5vdGF0aW9uSGlkZGVuUHJvcGVydHkge1xuXHRDcmVhdGVIaWRkZW4gPSBcIkNyZWF0ZUhpZGRlblwiLFxuXHREZWxldGVIaWRkZW4gPSBcIkRlbGV0ZUhpZGRlblwiLFxuXHRVcGRhdGVIaWRkZW4gPSBcIlVwZGF0ZUhpZGRlblwiXG59XG5cbmV4cG9ydCB0eXBlIFN0YW5kYXJkQWN0aW9uQ29uZmlnVHlwZSA9IHtcblx0aXNUZW1wbGF0ZWQ/OiBCaW5kaW5nRXhwcmVzc2lvbjxib29sZWFuPjtcblx0dmlzaWJsZTogQmluZGluZ0V4cHJlc3Npb248Ym9vbGVhbj47XG5cdGVuYWJsZWQ6IEJpbmRpbmdFeHByZXNzaW9uPGJvb2xlYW4+O1xufTtcblxudHlwZSBFeHByZXNzaW9uUmVzdHJpY3Rpb25zVHlwZSA9IHtcblx0ZXhwcmVzc2lvbjogRXhwcmVzc2lvbjxib29sZWFuPjtcblx0bmF2aWdhdGlvbkV4cHJlc3Npb246IEV4cHJlc3Npb248Ym9vbGVhbj47XG59O1xudHlwZSBTdGFuZGFyZEFjdGlvbnNSZXN0cmljdGlvbnNUeXBlID0gUmVjb3JkPHN0cmluZywgRXhwcmVzc2lvblJlc3RyaWN0aW9uc1R5cGU+O1xuXG5leHBvcnQgdHlwZSBTdGFuZGFyZEFjdGlvbnNDb250ZXh0ID0ge1xuXHRjb2xsZWN0aW9uUGF0aDogc3RyaW5nO1xuXHRoaWRkZW5Bbm5vdGF0aW9uOiB7XG5cdFx0Y3JlYXRlOiBFeHByZXNzaW9uPGJvb2xlYW4+O1xuXHRcdFwiZGVsZXRlXCI6IEV4cHJlc3Npb248Ym9vbGVhbj47XG5cdFx0dXBkYXRlOiBFeHByZXNzaW9uPGJvb2xlYW4+O1xuXHR9O1xuXHRjcmVhdGlvbk1vZGU6IENyZWF0aW9uTW9kZTtcblx0aXNEcmFmdE9yU3RpY2t5U3VwcG9ydGVkOiBib29sZWFuO1xuXHRpc1ZpZXdXaXRoTXVsdGlwbGVWaXN1YWxpemF0aW9uczogYm9vbGVhbjtcblx0bmV3QWN0aW9uPzoge1xuXHRcdG5hbWU/OiBzdHJpbmc7XG5cdFx0YXZhaWxhYmxlPzogRXhwcmVzc2lvbjxib29sZWFuPjtcblx0fTtcblx0dGFibGVNYW5pZmVzdENvbmZpZ3VyYXRpb246IFRhYmxlQ29udHJvbENvbmZpZ3VyYXRpb247XG5cdHJlc3RyaWN0aW9uczogU3RhbmRhcmRBY3Rpb25zUmVzdHJpY3Rpb25zVHlwZTtcbn07XG5cbi8qKlxuICogR2VuZXJhdGVzIHRoZSBjb250ZXh0IGZvciB0aGUgc3RhbmRhcmQgYWN0aW9ucy5cbiAqXG4gKiBAcGFyYW0ge0NvbnZlcnRlckNvbnRleHR9IGNvbnZlcnRlckNvbnRleHRcbiAqIEBwYXJhbSB7TmF2aWdhdGlvblNldHRpbmdzQ29uZmlndXJhdGlvbn0gY3JlYXRpb25Nb2RlXG4gKiBAcGFyYW0ge1RhYmxlQ29udHJvbENvbmZpZ3VyYXRpb259IHRhYmxlTWFuaWZlc3RDb25maWd1cmF0aW9uXG4gKiBAcGFyYW0ge1ZpZXdQYXRoQ29uZmlndXJhdGlvbn0gdmlld0NvbmZpZ3VyYXRpb25cbiAqIEByZXR1cm5zICBUaGUgY29udGV4dCBmb3IgdGFibGUgYWN0aW9uc1xuICovXG5leHBvcnQgZnVuY3Rpb24gZ2VuZXJhdGVTdGFuZGFyZEFjdGlvbnNDb250ZXh0KFxuXHRjb252ZXJ0ZXJDb250ZXh0OiBDb252ZXJ0ZXJDb250ZXh0LFxuXHRjcmVhdGlvbk1vZGU6IENyZWF0aW9uTW9kZSxcblx0dGFibGVNYW5pZmVzdENvbmZpZ3VyYXRpb246IFRhYmxlQ29udHJvbENvbmZpZ3VyYXRpb24sXG5cdHZpZXdDb25maWd1cmF0aW9uPzogVmlld1BhdGhDb25maWd1cmF0aW9uXG4pOiBTdGFuZGFyZEFjdGlvbnNDb250ZXh0IHtcblx0cmV0dXJuIHtcblx0XHRjb2xsZWN0aW9uUGF0aDogZ2V0VGFyZ2V0T2JqZWN0UGF0aChjb252ZXJ0ZXJDb250ZXh0LmdldERhdGFNb2RlbE9iamVjdFBhdGgoKSksXG5cdFx0aGlkZGVuQW5ub3RhdGlvbjoge1xuXHRcdFx0Y3JlYXRlOiBpc0FjdGlvbkFubm90YXRlZEhpZGRlbihjb252ZXJ0ZXJDb250ZXh0LCBBbm5vdGF0aW9uSGlkZGVuUHJvcGVydHkuQ3JlYXRlSGlkZGVuKSxcblx0XHRcdFwiZGVsZXRlXCI6IGlzQWN0aW9uQW5ub3RhdGVkSGlkZGVuKGNvbnZlcnRlckNvbnRleHQsIEFubm90YXRpb25IaWRkZW5Qcm9wZXJ0eS5EZWxldGVIaWRkZW4pLFxuXHRcdFx0dXBkYXRlOiBpc0FjdGlvbkFubm90YXRlZEhpZGRlbihjb252ZXJ0ZXJDb250ZXh0LCBBbm5vdGF0aW9uSGlkZGVuUHJvcGVydHkuVXBkYXRlSGlkZGVuKVxuXHRcdH0sXG5cdFx0Y3JlYXRpb25Nb2RlOiBjcmVhdGlvbk1vZGUsXG5cdFx0aXNEcmFmdE9yU3RpY2t5U3VwcG9ydGVkOiBpc0RyYWZ0T3JTdGlja3lTdXBwb3J0ZWQoY29udmVydGVyQ29udGV4dCksXG5cdFx0aXNWaWV3V2l0aE11bHRpcGxlVmlzdWFsaXphdGlvbnM6IHZpZXdDb25maWd1cmF0aW9uXG5cdFx0XHQ/IGNvbnZlcnRlckNvbnRleHQuZ2V0TWFuaWZlc3RXcmFwcGVyKCkuaGFzTXVsdGlwbGVWaXN1YWxpemF0aW9ucyh2aWV3Q29uZmlndXJhdGlvbilcblx0XHRcdDogZmFsc2UsXG5cdFx0bmV3QWN0aW9uOiBnZXROZXdBY3Rpb24oY29udmVydGVyQ29udGV4dCksXG5cdFx0dGFibGVNYW5pZmVzdENvbmZpZ3VyYXRpb246IHRhYmxlTWFuaWZlc3RDb25maWd1cmF0aW9uLFxuXHRcdHJlc3RyaWN0aW9uczogZ2V0UmVzdHJpY3Rpb25zKGNvbnZlcnRlckNvbnRleHQpXG5cdH07XG59XG5cbi8qKlxuICogQ2hlY2tzIGlmIGRyYWZ0IGlzIHN1cHBvcnRlZC5cbiAqXG4gKiBAcGFyYW0ge0NvbnZlcnRlckNvbnRleHR9IGNvbnZlcnRlckNvbnRleHRcbiAqIEByZXR1cm5zIHtib29sZWFufVxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNEcmFmdFN1cHBvcnRlZChjb252ZXJ0ZXJDb250ZXh0OiBDb252ZXJ0ZXJDb250ZXh0KTogYm9vbGVhbiB7XG5cdGNvbnN0IGN1cnJlbnRFbnRpdHlTZXQgPSBjb252ZXJ0ZXJDb250ZXh0LmdldEVudGl0eVNldCgpO1xuXHRjb25zdCBiSXNEcmFmdFJvb3QgPSBjdXJyZW50RW50aXR5U2V0ICYmIGN1cnJlbnRFbnRpdHlTZXQuYW5ub3RhdGlvbnM/LkNvbW1vbj8uRHJhZnRSb290ID8gdHJ1ZSA6IGZhbHNlO1xuXHRjb25zdCBiSXNEcmFmdE5vZGUgPSBjdXJyZW50RW50aXR5U2V0ICYmIGN1cnJlbnRFbnRpdHlTZXQuYW5ub3RhdGlvbnM/LkNvbW1vbj8uRHJhZnROb2RlID8gdHJ1ZSA6IGZhbHNlO1xuXHRjb25zdCBiSXNEcmFmdFBhcmVudEVudGl0eUZvckNvbnRhaW5tZW50ID1cblx0XHRjb252ZXJ0ZXJDb250ZXh0LmdldERhdGFNb2RlbE9iamVjdFBhdGgoKS50YXJnZXRPYmplY3Q/LmNvbnRhaW5zVGFyZ2V0ICYmXG5cdFx0KGNvbnZlcnRlckNvbnRleHQuZ2V0RGF0YU1vZGVsT2JqZWN0UGF0aCgpLnN0YXJ0aW5nRW50aXR5U2V0Py5hbm5vdGF0aW9ucz8uQ29tbW9uPy5EcmFmdFJvb3QgfHxcblx0XHRcdGNvbnZlcnRlckNvbnRleHQuZ2V0RGF0YU1vZGVsT2JqZWN0UGF0aCgpLnN0YXJ0aW5nRW50aXR5U2V0Py5hbm5vdGF0aW9ucz8uQ29tbW9uPy5EcmFmdE5vZGUpXG5cdFx0XHQ/IHRydWVcblx0XHRcdDogZmFsc2U7XG5cblx0cmV0dXJuIGJJc0RyYWZ0Um9vdCB8fCBiSXNEcmFmdE5vZGUgfHwgKCFjb252ZXJ0ZXJDb250ZXh0LmdldEVudGl0eVNldCgpICYmIGJJc0RyYWZ0UGFyZW50RW50aXR5Rm9yQ29udGFpbm1lbnQpO1xufVxuXG4vKipcbiAqIENoZWNrcyBpZiBzdGlja3kgb3IgZHJhZnQgaXMgc3VwcG9ydGVkLlxuICpcbiAqIEBwYXJhbSB7Q29udmVydGVyQ29udGV4dH0gY29udmVydGVyQ29udGV4dFxuICogQHJldHVybnMge2Jvb2xlYW59XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc0RyYWZ0T3JTdGlja3lTdXBwb3J0ZWQoY29udmVydGVyQ29udGV4dDogQ29udmVydGVyQ29udGV4dCk6IGJvb2xlYW4ge1xuXHRjb25zdCBiSXNEcmFmdFN1cHBvcnRlZCA9IGlzRHJhZnRTdXBwb3J0ZWQoY29udmVydGVyQ29udGV4dCk7XG5cdGNvbnN0IGJJc1N0aWNreVNlc3Npb25TdXBwb3J0ZWQgPSBjb252ZXJ0ZXJDb250ZXh0LmdldERhdGFNb2RlbE9iamVjdFBhdGgoKS5zdGFydGluZ0VudGl0eVNldD8uYW5ub3RhdGlvbnM/LlNlc3Npb25cblx0XHQ/LlN0aWNreVNlc3Npb25TdXBwb3J0ZWRcblx0XHQ/IHRydWVcblx0XHQ6IGZhbHNlO1xuXG5cdHJldHVybiBiSXNEcmFmdFN1cHBvcnRlZCB8fCBiSXNTdGlja3lTZXNzaW9uU3VwcG9ydGVkO1xufVxuXG4vKipcbiAqIEdldHMgdGhlIGNvbmZpZ3VyZWQgbmV3QWN0aW9uIGludG8gYW5ub3RhdGlvbi5cbiAqXG4gKiBAcGFyYW0ge0NvbnZlcnRlckNvbnRleHR9IGNvbnZlcnRlckNvbnRleHRcbiAqIEByZXR1cm5zIHthbnl9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXROZXdBY3Rpb24oY29udmVydGVyQ29udGV4dDogQ29udmVydGVyQ29udGV4dCk6IGFueSB7XG5cdGNvbnN0IGN1cnJlbnRFbnRpdHlTZXQgPSBjb252ZXJ0ZXJDb250ZXh0LmdldEVudGl0eVNldCgpO1xuXHRjb25zdCBuZXdBY3Rpb25OYW1lOiBCaW5kaW5nRXhwcmVzc2lvbjxzdHJpbmc+ID0gKFxuXHRcdGN1cnJlbnRFbnRpdHlTZXQ/LmFubm90YXRpb25zPy5Db21tb24/LkRyYWZ0Um9vdD8uTmV3QWN0aW9uIHx8XG5cdFx0Y3VycmVudEVudGl0eVNldD8uYW5ub3RhdGlvbnM/LlNlc3Npb24/LlN0aWNreVNlc3Npb25TdXBwb3J0ZWQ/Lk5ld0FjdGlvblxuXHQpPy50b1N0cmluZygpO1xuXHRpZiAobmV3QWN0aW9uTmFtZSkge1xuXHRcdGxldCBhdmFpbGFibGVQcm9wZXJ0eTogYW55ID0gY29udmVydGVyQ29udGV4dD8uZ2V0RW50aXR5VHlwZSgpLmFjdGlvbnNbbmV3QWN0aW9uTmFtZV0/LmFubm90YXRpb25zPy5Db3JlPy5PcGVyYXRpb25BdmFpbGFibGU7XG5cdFx0YXZhaWxhYmxlUHJvcGVydHkgPSBhdmFpbGFibGVQcm9wZXJ0eSAhPT0gdW5kZWZpbmVkID8gYXZhaWxhYmxlUHJvcGVydHkgOiB0cnVlO1xuXHRcdHJldHVybiB7XG5cdFx0XHRuYW1lOiBuZXdBY3Rpb25OYW1lLFxuXHRcdFx0YXZhaWxhYmxlOiBhbm5vdGF0aW9uRXhwcmVzc2lvbihhdmFpbGFibGVQcm9wZXJ0eSlcblx0XHR9O1xuXHR9XG5cdHJldHVybiB1bmRlZmluZWQ7XG59XG5cbi8qKlxuICogR2V0cyB0aGUgYmluZGluZyBleHByZXNzaW9uIGZvciB0aGUgYWN0aW9uIHZpc2liaWxpdHkgY29uZmlndXJlZCBpbnRvIGFubm90YXRpb24uXG4gKlxuICogQHBhcmFtIHtDb252ZXJ0ZXJDb250ZXh0fSBjb252ZXJ0ZXJDb250ZXh0XG4gKiBAcGFyYW0ge3N0cmluZ30gc0Fubm90YXRpb25UZXJtXG4gKiBAcGFyYW0ge2Jvb2xlYW59IGJXaXRoTmF2aWdhdGlvblBhdGhcbiAqIEByZXR1cm5zIHtFeHByZXNzaW9uPGJvb2xlYW4+fVxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNBY3Rpb25Bbm5vdGF0ZWRIaWRkZW4oXG5cdGNvbnZlcnRlckNvbnRleHQ6IENvbnZlcnRlckNvbnRleHQsXG5cdHNBbm5vdGF0aW9uVGVybTogc3RyaW5nLFxuXHRiV2l0aE5hdmlnYXRpb25QYXRoID0gdHJ1ZVxuKTogRXhwcmVzc2lvbjxib29sZWFuPiB7XG5cdGNvbnN0IGN1cnJlbnRFbnRpdHlTZXQgPSBjb252ZXJ0ZXJDb250ZXh0LmdldEVudGl0eVNldCgpO1xuXHRjb25zdCBkYXRhTW9kZWxPYmplY3RQYXRoID0gY29udmVydGVyQ29udGV4dC5nZXREYXRhTW9kZWxPYmplY3RQYXRoKCk7XG5cdC8vIENvbnNpZGVyIG9ubHkgdGhlIGxhc3QgbGV2ZWwgb2YgbmF2aWdhdGlvbi4gVGhlIG90aGVycyBhcmUgYWxyZWFkeSBjb25zaWRlcmVkIGluIHRoZSBlbGVtZW50IGJpbmRpbmcgb2YgdGhlIHBhZ2UuXG5cdGNvbnN0IHZpc2l0ZWROYXZpZ2F0aW9uUGF0aHMgPVxuXHRcdGRhdGFNb2RlbE9iamVjdFBhdGgubmF2aWdhdGlvblByb3BlcnRpZXMubGVuZ3RoID4gMCAmJiBiV2l0aE5hdmlnYXRpb25QYXRoXG5cdFx0XHQ/IFtkYXRhTW9kZWxPYmplY3RQYXRoLm5hdmlnYXRpb25Qcm9wZXJ0aWVzW2RhdGFNb2RlbE9iamVjdFBhdGgubmF2aWdhdGlvblByb3BlcnRpZXMubGVuZ3RoIC0gMV0ubmFtZV1cblx0XHRcdDogW107XG5cdGNvbnN0IGFjdGlvbkFubm90YXRpb25WYWx1ZSA9XG5cdFx0KChjdXJyZW50RW50aXR5U2V0Py5hbm5vdGF0aW9ucy5VSSBhcyBhbnkpPy5bc0Fubm90YXRpb25UZXJtXSBhcyBQcm9wZXJ0eUFubm90YXRpb25WYWx1ZTxib29sZWFuPikgfHwgZmFsc2U7XG5cblx0cmV0dXJuIGN1cnJlbnRFbnRpdHlTZXRcblx0XHQ/IGFubm90YXRpb25FeHByZXNzaW9uKGFjdGlvbkFubm90YXRpb25WYWx1ZSwgdmlzaXRlZE5hdmlnYXRpb25QYXRocywgdW5kZWZpbmVkLCAocGF0aDogc3RyaW5nKSA9PlxuXHRcdFx0XHRzaW5nbGV0b25QYXRoVmlzaXRvcihwYXRoLCBjb252ZXJ0ZXJDb250ZXh0LmdldENvbnZlcnRlZFR5cGVzKCksIHZpc2l0ZWROYXZpZ2F0aW9uUGF0aHMpXG5cdFx0ICApXG5cdFx0OiBjb25zdGFudChmYWxzZSk7XG59XG5cbi8qKlxuICogR2V0cyB0aGUgYW5ub3RhdGVkIHJlc3RyaWN0aW9ucyBmb3IgdGhlIGFjdGlvbnMuXG4gKlxuICogQHBhcmFtIHtDb252ZXJ0ZXJDb250ZXh0fSBjb252ZXJ0ZXJDb250ZXh0XG4gKiBAcmV0dXJucyB7U3RhbmRhcmRBY3Rpb25zUmVzdHJpY3Rpb25zVHlwZX1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFJlc3RyaWN0aW9ucyhjb252ZXJ0ZXJDb250ZXh0OiBDb252ZXJ0ZXJDb250ZXh0KTogU3RhbmRhcmRBY3Rpb25zUmVzdHJpY3Rpb25zVHlwZSB7XG5cdGNvbnN0IGRhdGFNb2RlbE9iamVjdFBhdGggPSBjb252ZXJ0ZXJDb250ZXh0LmdldERhdGFNb2RlbE9iamVjdFBhdGgoKTtcblx0Y29uc3QgcmVzdHJpY3Rpb25zRGVmID0gW1xuXHRcdHtcblx0XHRcdGtleTogXCJpc0luc2VydGFibGVcIixcblx0XHRcdFwiZnVuY3Rpb25cIjogaXNQYXRoSW5zZXJ0YWJsZVxuXHRcdH0sXG5cdFx0e1xuXHRcdFx0a2V5OiBcImlzVXBkYXRhYmxlXCIsXG5cdFx0XHRcImZ1bmN0aW9uXCI6IGlzUGF0aFVwZGF0YWJsZVxuXHRcdH0sXG5cdFx0e1xuXHRcdFx0a2V5OiBcImlzRGVsZXRhYmxlXCIsXG5cdFx0XHRcImZ1bmN0aW9uXCI6IGlzUGF0aERlbGV0YWJsZVxuXHRcdH1cblx0XTtcblx0Y29uc3QgcmVzdWx0OiBSZWNvcmQ8c3RyaW5nLCBFeHByZXNzaW9uUmVzdHJpY3Rpb25zVHlwZT4gPSB7fTtcblx0cmVzdHJpY3Rpb25zRGVmLmZvckVhY2goZnVuY3Rpb24oZGVmKSB7XG5cdFx0Y29uc3QgZGVmRnVuY3Rpb24gPSBkZWZbXCJmdW5jdGlvblwiXTtcblx0XHRyZXN1bHRbZGVmLmtleV0gPSB7XG5cdFx0XHRleHByZXNzaW9uOiBkZWZGdW5jdGlvbi5hcHBseShudWxsLCBbXG5cdFx0XHRcdGRhdGFNb2RlbE9iamVjdFBhdGgsXG5cdFx0XHRcdHtcblx0XHRcdFx0XHRwYXRoVmlzaXRvcjogKHBhdGg6IHN0cmluZywgbmF2aWdhdGlvblBhdGhzOiBzdHJpbmdbXSkgPT5cblx0XHRcdFx0XHRcdHNpbmdsZXRvblBhdGhWaXNpdG9yKHBhdGgsIGNvbnZlcnRlckNvbnRleHQuZ2V0Q29udmVydGVkVHlwZXMoKSwgbmF2aWdhdGlvblBhdGhzKVxuXHRcdFx0XHR9XG5cdFx0XHRdKSxcblx0XHRcdG5hdmlnYXRpb25FeHByZXNzaW9uOiBkZWZGdW5jdGlvbi5hcHBseShudWxsLCBbXG5cdFx0XHRcdGRhdGFNb2RlbE9iamVjdFBhdGgsXG5cdFx0XHRcdHtcblx0XHRcdFx0XHRpZ25vcmVUYXJnZXRDb2xsZWN0aW9uOiB0cnVlLFxuXHRcdFx0XHRcdGF1dGhvcml6ZVVucmVzb2x2YWJsZTogdHJ1ZSxcblx0XHRcdFx0XHRwYXRoVmlzaXRvcjogKHBhdGg6IHN0cmluZywgbmF2aWdhdGlvblBhdGhzOiBzdHJpbmdbXSkgPT5cblx0XHRcdFx0XHRcdHNpbmdsZXRvblBhdGhWaXNpdG9yKHBhdGgsIGNvbnZlcnRlckNvbnRleHQuZ2V0Q29udmVydGVkVHlwZXMoKSwgbmF2aWdhdGlvblBhdGhzKVxuXHRcdFx0XHR9XG5cdFx0XHRdKVxuXHRcdH07XG5cdH0pO1xuXHRyZXR1cm4gcmVzdWx0O1xufVxuXG4vKipcbiAqIENoZWNrcyBpZiB0ZW1wbGF0aW5nIGZvciBpbnNlcnQvdXBkYXRlIGFjdGlvbnMgaXMgbWFuZGF0b3J5LlxuICpcbiAqIEBwYXJhbSB7U3RhbmRhcmRBY3Rpb25zQ29udGV4dH0gc3RhbmRhcmRBY3Rpb25zQ29udGV4dFxuICogQHBhcmFtIHtib29sZWFufSBpc0RyYWZ0T3JTdGlja3lcbiAqIEBwYXJhbSB7Ym9vbGVhbn0gaXNDcmVhdGVBbHdheXNIaWRkZW5cbiAqIEByZXR1cm5zIHtib29sZWFufVxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0SW5zZXJ0VXBkYXRlQWN0aW9uc1RlbXBsYXRpbmcoXG5cdHN0YW5kYXJkQWN0aW9uc0NvbnRleHQ6IFN0YW5kYXJkQWN0aW9uc0NvbnRleHQsXG5cdGlzRHJhZnRPclN0aWNreTogYm9vbGVhbixcblx0aXNDcmVhdGVBbHdheXNIaWRkZW46IGJvb2xlYW5cbik6IGJvb2xlYW4ge1xuXHRyZXR1cm4gKGlzRHJhZnRPclN0aWNreSB8fCBzdGFuZGFyZEFjdGlvbnNDb250ZXh0LmNyZWF0aW9uTW9kZSA9PT0gQ3JlYXRpb25Nb2RlLkV4dGVybmFsKSAmJiAhaXNDcmVhdGVBbHdheXNIaWRkZW47XG59XG5cbi8qKlxuICogR2V0cyB0aGUgYmluZGluZyBleHByZXNzaW9ucyBmb3IgdGhlIHByb3BlcnRpZXMgb2YgdGhlIGFjdGlvbiBDcmVhdGUuXG4gKlxuICogQHBhcmFtIHtDb252ZXJ0ZXJDb250ZXh0fSBjb252ZXJ0ZXJDb250ZXh0XG4gKiBAcGFyYW0ge1N0YW5kYXJkQWN0aW9uc0NvbnRleHR9IHN0YW5kYXJkQWN0aW9uc0NvbnRleHRcbiAqIEByZXR1cm5zIHtTdGFuZGFyZEFjdGlvbkNvbmZpZ1R5cGV9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRTdGFuZGFyZEFjdGlvbkNyZWF0ZShcblx0Y29udmVydGVyQ29udGV4dDogQ29udmVydGVyQ29udGV4dCxcblx0c3RhbmRhcmRBY3Rpb25zQ29udGV4dDogU3RhbmRhcmRBY3Rpb25zQ29udGV4dFxuKTogU3RhbmRhcmRBY3Rpb25Db25maWdUeXBlIHtcblx0Y29uc3QgY3JlYXRlVmlzaWJpbGl0eSA9IGdldENyZWF0ZVZpc2liaWxpdHkoY29udmVydGVyQ29udGV4dCwgc3RhbmRhcmRBY3Rpb25zQ29udGV4dCk7XG5cdHJldHVybiB7XG5cdFx0aXNUZW1wbGF0ZWQ6IGNvbXBpbGVCaW5kaW5nKGdldENyZWF0ZVRlbXBsYXRpbmcoc3RhbmRhcmRBY3Rpb25zQ29udGV4dCwgY3JlYXRlVmlzaWJpbGl0eSkpLFxuXHRcdHZpc2libGU6IGNvbXBpbGVCaW5kaW5nKGNyZWF0ZVZpc2liaWxpdHkpLFxuXHRcdGVuYWJsZWQ6IGNvbXBpbGVCaW5kaW5nKGdldENyZWF0ZUVuYWJsZW1lbnQoY29udmVydGVyQ29udGV4dCwgc3RhbmRhcmRBY3Rpb25zQ29udGV4dCwgY3JlYXRlVmlzaWJpbGl0eSkpXG5cdH07XG59XG5cbi8qKlxuICogR2V0cyB0aGUgYmluZGluZyBleHByZXNzaW9ucyBmb3IgdGhlIHByb3BlcnRpZXMgb2YgdGhlIGFjdGlvbiBEZWxldGUuXG4gKlxuICogQHBhcmFtIHtDb252ZXJ0ZXJDb250ZXh0fSBjb252ZXJ0ZXJDb250ZXh0XG4gKiBAcGFyYW0ge1N0YW5kYXJkQWN0aW9uc0NvbnRleHR9IHN0YW5kYXJkQWN0aW9uc0NvbnRleHRcbiAqIEByZXR1cm5zIHtTdGFuZGFyZEFjdGlvbkNvbmZpZ1R5cGV9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRTdGFuZGFyZEFjdGlvbkRlbGV0ZShcblx0Y29udmVydGVyQ29udGV4dDogQ29udmVydGVyQ29udGV4dCxcblx0c3RhbmRhcmRBY3Rpb25zQ29udGV4dDogU3RhbmRhcmRBY3Rpb25zQ29udGV4dFxuKTogU3RhbmRhcmRBY3Rpb25Db25maWdUeXBlIHtcblx0Y29uc3QgZGVsZXRlVmlzaWJpbGl0eSA9IGdldERlbGV0ZVZpc2liaWxpdHkoY29udmVydGVyQ29udGV4dCwgc3RhbmRhcmRBY3Rpb25zQ29udGV4dCk7XG5cblx0cmV0dXJuIHtcblx0XHRpc1RlbXBsYXRlZDogY29tcGlsZUJpbmRpbmcoZ2V0RGVmYXVsdFRlbXBsYXRpbmcoZGVsZXRlVmlzaWJpbGl0eSkpLFxuXHRcdHZpc2libGU6IGNvbXBpbGVCaW5kaW5nKGRlbGV0ZVZpc2liaWxpdHkpLFxuXHRcdGVuYWJsZWQ6IGNvbXBpbGVCaW5kaW5nKGdldERlbGV0ZUVuYWJsZW1lbnQoY29udmVydGVyQ29udGV4dCwgc3RhbmRhcmRBY3Rpb25zQ29udGV4dCwgZGVsZXRlVmlzaWJpbGl0eSkpXG5cdH07XG59XG5cbi8qKlxuICogQHBhcmFtIGNvbnZlcnRlckNvbnRleHRcbiAqIEBwYXJhbSBzdGFuZGFyZEFjdGlvbnNDb250ZXh0XG4gKiBAcmV0dXJucyBTdGFuZGFyZEFjdGlvbkNvbmZpZ1R5cGVcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldENyZWF0aW9uUm93KFxuXHRjb252ZXJ0ZXJDb250ZXh0OiBDb252ZXJ0ZXJDb250ZXh0LFxuXHRzdGFuZGFyZEFjdGlvbnNDb250ZXh0OiBTdGFuZGFyZEFjdGlvbnNDb250ZXh0XG4pOiBTdGFuZGFyZEFjdGlvbkNvbmZpZ1R5cGUge1xuXHRjb25zdCBjcmVhdGlvblJvd1Zpc2liaWxpdHkgPSBnZXRDcmVhdGVWaXNpYmlsaXR5KGNvbnZlcnRlckNvbnRleHQsIHN0YW5kYXJkQWN0aW9uc0NvbnRleHQsIHRydWUpO1xuXG5cdHJldHVybiB7XG5cdFx0aXNUZW1wbGF0ZWQ6IGNvbXBpbGVCaW5kaW5nKGdldENyZWF0ZVRlbXBsYXRpbmcoc3RhbmRhcmRBY3Rpb25zQ29udGV4dCwgY3JlYXRpb25Sb3dWaXNpYmlsaXR5LCB0cnVlKSksXG5cdFx0dmlzaWJsZTogY29tcGlsZUJpbmRpbmcoY3JlYXRpb25Sb3dWaXNpYmlsaXR5KSxcblx0XHRlbmFibGVkOiBjb21waWxlQmluZGluZyhnZXRDcmVhdGlvblJvd0VuYWJsZW1lbnQoY29udmVydGVyQ29udGV4dCwgc3RhbmRhcmRBY3Rpb25zQ29udGV4dCwgY3JlYXRpb25Sb3dWaXNpYmlsaXR5KSlcblx0fTtcbn1cblxuLyoqXG4gKiBHZXRzIHRoZSBiaW5kaW5nIGV4cHJlc3Npb25zIGZvciB0aGUgcHJvcGVydGllcyBvZiB0aGUgYWN0aW9uIFBhc3RlLlxuICpcbiAqIEBwYXJhbSB7Q29udmVydGVyQ29udGV4dH0gY29udmVydGVyQ29udGV4dFxuICogQHBhcmFtIHtTdGFuZGFyZEFjdGlvbnNDb250ZXh0fSBzdGFuZGFyZEFjdGlvbnNDb250ZXh0XG4gKiBAcGFyYW0ge2Jvb2xlYW59IGlzSW5zZXJ0VXBkYXRlQWN0aW9uc1RlbXBsYXRlZFxuICogQHJldHVybnMge1N0YW5kYXJkQWN0aW9uQ29uZmlnVHlwZX1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFN0YW5kYXJkQWN0aW9uUGFzdGUoXG5cdGNvbnZlcnRlckNvbnRleHQ6IENvbnZlcnRlckNvbnRleHQsXG5cdHN0YW5kYXJkQWN0aW9uc0NvbnRleHQ6IFN0YW5kYXJkQWN0aW9uc0NvbnRleHQsXG5cdGlzSW5zZXJ0VXBkYXRlQWN0aW9uc1RlbXBsYXRlZDogYm9vbGVhblxuKTogU3RhbmRhcmRBY3Rpb25Db25maWdUeXBlIHtcblx0Y29uc3QgY3JlYXRlVmlzaWJpbGl0eSA9IGdldENyZWF0ZVZpc2liaWxpdHkoY29udmVydGVyQ29udGV4dCwgc3RhbmRhcmRBY3Rpb25zQ29udGV4dCk7XG5cdGNvbnN0IGNyZWF0ZUVuYWJsZW1lbnQgPSBnZXRDcmVhdGVFbmFibGVtZW50KGNvbnZlcnRlckNvbnRleHQsIHN0YW5kYXJkQWN0aW9uc0NvbnRleHQsIGNyZWF0ZVZpc2liaWxpdHkpO1xuXHRjb25zdCBwYXN0ZVZpc2liaWxpdHkgPSBnZXRQYXN0ZVZpc2liaWxpdHkoY29udmVydGVyQ29udGV4dCwgc3RhbmRhcmRBY3Rpb25zQ29udGV4dCwgY3JlYXRlVmlzaWJpbGl0eSwgaXNJbnNlcnRVcGRhdGVBY3Rpb25zVGVtcGxhdGVkKTtcblx0cmV0dXJuIHtcblx0XHR2aXNpYmxlOiBjb21waWxlQmluZGluZyhwYXN0ZVZpc2liaWxpdHkpLFxuXHRcdGVuYWJsZWQ6IGNvbXBpbGVCaW5kaW5nKGdldFBhc3RlRW5hYmxlbWVudChwYXN0ZVZpc2liaWxpdHksIGNyZWF0ZUVuYWJsZW1lbnQpKVxuXHR9O1xufVxuXG4vKipcbiAqIEdldHMgdGhlIGJpbmRpbmcgZXhwcmVzc2lvbnMgZm9yIHRoZSBwcm9wZXJ0aWVzIG9mIHRoZSBhY3Rpb24gTWFzc0VkaXQuXG4gKlxuICogQHBhcmFtIHtDb252ZXJ0ZXJDb250ZXh0fSBjb252ZXJ0ZXJDb250ZXh0XG4gKiBAcGFyYW0ge1N0YW5kYXJkQWN0aW9uc0NvbnRleHR9IHN0YW5kYXJkQWN0aW9uc0NvbnRleHRcbiAqIEByZXR1cm5zIHtTdGFuZGFyZEFjdGlvbkNvbmZpZ1R5cGV9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRTdGFuZGFyZEFjdGlvbk1hc3NFZGl0KFxuXHRjb252ZXJ0ZXJDb250ZXh0OiBDb252ZXJ0ZXJDb250ZXh0LFxuXHRzdGFuZGFyZEFjdGlvbnNDb250ZXh0OiBTdGFuZGFyZEFjdGlvbnNDb250ZXh0XG4pOiBTdGFuZGFyZEFjdGlvbkNvbmZpZ1R5cGUge1xuXHRjb25zdCBtYXNzRWRpdFZpc2liaWxpdHkgPSBnZXRNYXNzRWRpdFZpc2liaWxpdHkoY29udmVydGVyQ29udGV4dCwgc3RhbmRhcmRBY3Rpb25zQ29udGV4dCk7XG5cblx0cmV0dXJuIHtcblx0XHRpc1RlbXBsYXRlZDogY29tcGlsZUJpbmRpbmcoZ2V0RGVmYXVsdFRlbXBsYXRpbmcobWFzc0VkaXRWaXNpYmlsaXR5KSksXG5cdFx0dmlzaWJsZTogY29tcGlsZUJpbmRpbmcobWFzc0VkaXRWaXNpYmlsaXR5KSxcblx0XHRlbmFibGVkOiBjb21waWxlQmluZGluZyhnZXRNYXNzRWRpdEVuYWJsZW1lbnQoY29udmVydGVyQ29udGV4dCwgc3RhbmRhcmRBY3Rpb25zQ29udGV4dCwgbWFzc0VkaXRWaXNpYmlsaXR5KSlcblx0fTtcbn1cblxuLyoqXG4gKiBHZXRzIHRoZSBiaW5kaW5nIGV4cHJlc3Npb24gZm9yIHRoZSB0ZW1wbGF0aW5nIG9mIHRoZSBhY3Rpb24gQ3JlYXRlLlxuICpcbiAqIEBwYXJhbSB7U3RhbmRhcmRBY3Rpb25zQ29udGV4dH0gc3RhbmRhcmRBY3Rpb25zQ29udGV4dFxuICogQHBhcmFtIHtFeHByZXNzaW9uPGJvb2xlYW4+fSBjcmVhdGVWaXNpYmlsaXR5XG4gKiBAcGFyYW0ge2Jvb2xlYW59IGlzRm9yQ3JlYXRpb25Sb3dcbiAqIEByZXR1cm5zIHtFeHByZXNzaW9uPGJvb2xlYW4+IH1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldENyZWF0ZVRlbXBsYXRpbmcoXG5cdHN0YW5kYXJkQWN0aW9uc0NvbnRleHQ6IFN0YW5kYXJkQWN0aW9uc0NvbnRleHQsXG5cdGNyZWF0ZVZpc2liaWxpdHk6IEV4cHJlc3Npb248Ym9vbGVhbj4sXG5cdGlzRm9yQ3JlYXRpb25Sb3cgPSBmYWxzZVxuKTogRXhwcmVzc2lvbjxib29sZWFuPiB7XG5cdC8vVGVtcGxhdGluZyBvZiBDcmVhdGUgQnV0dG9uIGlzIG5vdCBkb25lOlxuXHQvLyBcdCAtIElmIEJ1dHRvbiBpcyBuZXZlciB2aXNpYmxlKGNvdmVyZWQgdGhlIEV4dGVybmFsIGNyZWF0ZSBidXR0b24sIG5ldyBBY3Rpb24pXG5cdC8vXHQgLSBvciBDcmVhdGlvbk1vZGUgaXMgb24gQ3JlYXRpb25Sb3cgZm9yIENyZWF0ZSBCdXR0b25cblx0Ly9cdCAtIG9yIENyZWF0aW9uTW9kZSBpcyBub3Qgb24gQ3JlYXRpb25Sb3cgZm9yIENyZWF0aW9uUm93IEJ1dHRvblxuXG5cdHJldHVybiBhbmQoXG5cdFx0Ly9YTk9SIGdhdGVcblx0XHRvcihcblx0XHRcdGFuZChpc0ZvckNyZWF0aW9uUm93LCBzdGFuZGFyZEFjdGlvbnNDb250ZXh0LmNyZWF0aW9uTW9kZSA9PT0gQ3JlYXRpb25Nb2RlLkNyZWF0aW9uUm93KSxcblx0XHRcdGFuZCghaXNGb3JDcmVhdGlvblJvdywgc3RhbmRhcmRBY3Rpb25zQ29udGV4dC5jcmVhdGlvbk1vZGUgIT09IENyZWF0aW9uTW9kZS5DcmVhdGlvblJvdylcblx0XHQpLFxuXHRcdG9yKG5vdChpc0NvbnN0YW50KGNyZWF0ZVZpc2liaWxpdHkpKSwgY3JlYXRlVmlzaWJpbGl0eSlcblx0KTtcbn1cblxuLyoqXG4gKiBHZXRzIHRoZSBiaW5kaW5nIGV4cHJlc3Npb24gZm9yIHRoZSB0ZW1wbGF0aW5nIG9mIHRoZSBub24tQ3JlYXRlIGFjdGlvbnMuXG4gKlxuICogQHBhcmFtIHtFeHByZXNzaW9uPGJvb2xlYW4+fSBhY3Rpb25WaXNpYmlsaXR5XG4gKiBAcmV0dXJucyB7RXhwcmVzc2lvbjxib29sZWFuPiB9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXREZWZhdWx0VGVtcGxhdGluZyhhY3Rpb25WaXNpYmlsaXR5OiBFeHByZXNzaW9uPGJvb2xlYW4+KTogRXhwcmVzc2lvbjxib29sZWFuPiB7XG5cdHJldHVybiBvcihub3QoaXNDb25zdGFudChhY3Rpb25WaXNpYmlsaXR5KSksIGFjdGlvblZpc2liaWxpdHkpO1xufVxuXG4vKipcbiAqIEdldHMgdGhlIGJpbmRpbmcgZXhwcmVzc2lvbiBmb3IgdGhlIHByb3BlcnR5IHZpc2libGUgb2YgdGhlIGFjdGlvbiBDcmVhdGUuXG4gKlxuICogQHBhcmFtIHtDb252ZXJ0ZXJDb250ZXh0fSBjb252ZXJ0ZXJDb250ZXh0XG4gKiBAcGFyYW0ge1N0YW5kYXJkQWN0aW9uc0NvbnRleHR9IHN0YW5kYXJkQWN0aW9uc0NvbnRleHRcbiAqIEBwYXJhbSB7Ym9vbGVhbn0gaXNGb3JDcmVhdGlvblJvd1xuICogQHJldHVybnMge0V4cHJlc3Npb248Ym9vbGVhbj4gfVxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0Q3JlYXRlVmlzaWJpbGl0eShcblx0Y29udmVydGVyQ29udGV4dDogQ29udmVydGVyQ29udGV4dCxcblx0c3RhbmRhcmRBY3Rpb25zQ29udGV4dDogU3RhbmRhcmRBY3Rpb25zQ29udGV4dCxcblx0aXNGb3JDcmVhdGlvblJvdyA9IGZhbHNlXG4pOiBFeHByZXNzaW9uPGJvb2xlYW4+IHtcblx0Y29uc3QgaXNJbnNlcnRhYmxlID0gc3RhbmRhcmRBY3Rpb25zQ29udGV4dC5yZXN0cmljdGlvbnMuaXNJbnNlcnRhYmxlLmV4cHJlc3Npb247XG5cdGNvbnN0IGlzQ3JlYXRlSGlkZGVuID0gaXNGb3JDcmVhdGlvblJvd1xuXHRcdD8gaXNBY3Rpb25Bbm5vdGF0ZWRIaWRkZW4oY29udmVydGVyQ29udGV4dCwgQW5ub3RhdGlvbkhpZGRlblByb3BlcnR5LkNyZWF0ZUhpZGRlbiwgZmFsc2UpXG5cdFx0OiBzdGFuZGFyZEFjdGlvbnNDb250ZXh0LmhpZGRlbkFubm90YXRpb24uY3JlYXRlO1xuXHRjb25zdCBuZXdBY3Rpb24gPSBzdGFuZGFyZEFjdGlvbnNDb250ZXh0Lm5ld0FjdGlvbjtcblxuXHQvL0NyZWF0ZSBCdXR0b24gaXMgdmlzaWJsZTpcblx0Ly8gXHQgLSBJZiB0aGUgY3JlYXRpb24gbW9kZSBpcyBleHRlcm5hbFxuXHQvLyAgICAgIC0gSWYgd2UncmUgb24gdGhlIGxpc3QgcmVwb3J0IGFuZCBjcmVhdGUgaXMgbm90IGhpZGRlblxuXHQvL1x0XHQtIE90aGVyd2lzZSB0aGlzIGRlcGVuZHMgb24gdGhlIHZhbHVlIG9mIHRoZSB0aGUgVUkuSXNFZGl0YWJsZVxuXHQvLyAgIC0gT3RoZXJ3aXNlXG5cdC8vIFx0IFx0LSBJZiB3ZSdyZSBvbiB0aGUgbGlzdCByZXBvcnQgLT5cblx0Ly8gXHQgXHRcdC0gSWYgVUkuQ3JlYXRlSGlkZGVuIHBvaW50cyB0byBhIHByb3BlcnR5IHBhdGggLT4gcHJvdmlkZSBhIG5lZ2F0ZWQgYmluZGluZyB0byB0aGlzIHBhdGhcblx0Ly8gXHQgXHRcdC0gT3RoZXJ3aXNlLCBjcmVhdGUgaXMgdmlzaWJsZVxuXHQvLyBcdCBcdC0gT3RoZXJ3aXNlXG5cdC8vIFx0ICBcdCAtIFRoaXMgZGVwZW5kcyBvbiB0aGUgdmFsdWUgb2YgdGhlIHRoZSBVSS5Jc0VkaXRhYmxlXG5cdHJldHVybiBpZkVsc2UoXG5cdFx0c3RhbmRhcmRBY3Rpb25zQ29udGV4dC5jcmVhdGlvbk1vZGUgPT09IENyZWF0aW9uTW9kZS5FeHRlcm5hbCxcblx0XHRhbmQobm90KGlzQ3JlYXRlSGlkZGVuKSwgb3IoY29udmVydGVyQ29udGV4dC5nZXRUZW1wbGF0ZVR5cGUoKSA9PT0gVGVtcGxhdGVUeXBlLkxpc3RSZXBvcnQsIFVJLklzRWRpdGFibGUpKSxcblx0XHRpZkVsc2UoXG5cdFx0XHRvcihcblx0XHRcdFx0YW5kKGlzQ29uc3RhbnQobmV3QWN0aW9uPy5hdmFpbGFibGUpLCBlcXVhbChuZXdBY3Rpb24/LmF2YWlsYWJsZSwgZmFsc2UpKSxcblx0XHRcdFx0YW5kKGlzQ29uc3RhbnQoaXNJbnNlcnRhYmxlKSwgZXF1YWwoaXNJbnNlcnRhYmxlLCBmYWxzZSksICFuZXdBY3Rpb24pLFxuXHRcdFx0XHRhbmQoaXNDb25zdGFudChpc0NyZWF0ZUhpZGRlbiksIGVxdWFsKGlzQ3JlYXRlSGlkZGVuLCB0cnVlKSksXG5cdFx0XHRcdHN0YW5kYXJkQWN0aW9uc0NvbnRleHQuaXNWaWV3V2l0aE11bHRpcGxlVmlzdWFsaXphdGlvbnMsXG5cdFx0XHRcdGNvbnZlcnRlckNvbnRleHQuZ2V0VGVtcGxhdGVUeXBlKCkgPT09IFRlbXBsYXRlVHlwZS5BbmFseXRpY2FsTGlzdFBhZ2Vcblx0XHRcdCksXG5cdFx0XHRmYWxzZSxcblx0XHRcdGlmRWxzZShcblx0XHRcdFx0Y29udmVydGVyQ29udGV4dC5nZXRUZW1wbGF0ZVR5cGUoKSA9PT0gVGVtcGxhdGVUeXBlLkxpc3RSZXBvcnQsXG5cdFx0XHRcdG9yKG5vdChpc0JpbmRpbmcoaXNDcmVhdGVIaWRkZW4pKSwgbm90KGlzQ3JlYXRlSGlkZGVuKSksXG5cdFx0XHRcdGFuZChub3QoaXNDcmVhdGVIaWRkZW4pLCBVSS5Jc0VkaXRhYmxlKVxuXHRcdFx0KVxuXHRcdClcblx0KTtcbn1cblxuLyoqXG4gKiBHZXRzIHRoZSBiaW5kaW5nIGV4cHJlc3Npb24gZm9yIHRoZSBwcm9wZXJ0eSB2aXNpYmxlIG9mIHRoZSBhY3Rpb24gRGVsZXRlLlxuICpcbiAqIEBwYXJhbSB7Q29udmVydGVyQ29udGV4dH0gY29udmVydGVyQ29udGV4dFxuICogQHBhcmFtIHtTdGFuZGFyZEFjdGlvbnNDb250ZXh0fSBzdGFuZGFyZEFjdGlvbnNDb250ZXh0XG4gKiBAcmV0dXJucyB7RXhwcmVzc2lvbjxib29sZWFuPiB9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXREZWxldGVWaXNpYmlsaXR5KFxuXHRjb252ZXJ0ZXJDb250ZXh0OiBDb252ZXJ0ZXJDb250ZXh0LFxuXHRzdGFuZGFyZEFjdGlvbnNDb250ZXh0OiBTdGFuZGFyZEFjdGlvbnNDb250ZXh0XG4pOiBFeHByZXNzaW9uPGJvb2xlYW4+IHtcblx0Y29uc3QgaXNEZWxldGVIaWRkZW4gPSBzdGFuZGFyZEFjdGlvbnNDb250ZXh0LmhpZGRlbkFubm90YXRpb24uZGVsZXRlO1xuXHRjb25zdCBwYXRoRGVsZXRhYmxlRXhwcmVzc2lvbiA9IHN0YW5kYXJkQWN0aW9uc0NvbnRleHQucmVzdHJpY3Rpb25zLmlzRGVsZXRhYmxlLmV4cHJlc3Npb247XG5cblx0Ly9EZWxldGUgQnV0dG9uIGlzIHZpc2libGU6XG5cdC8vIFx0IFByZXJlcXVpc2l0ZXM6XG5cdC8vXHQgLSBJZiB3ZSdyZSBub3Qgb24gbXVsdGlwbGUgdmlzdWFsaXphdGlvbnMgY29uZmlndXJhdGlvbiBvciBBTFBcblx0Ly9cblx0Ly8gICAtIElmIHJlc3RyaWN0aW9ucyBvbiBkZWxldGFibGUgc2V0IHRvIGZhbHNlIC0+IG5vdCB2aXNpYmxlXG5cdC8vICAgLSBPdGhlcndpc2Vcblx0Ly9cdFx0XHQtIElmIFVJLkRlbGV0ZUhpZGRlbiBpcyB0cnVlIC0+IG5vdCB2aXNpYmxlXG5cdC8vXHRcdFx0LSBPdGhlcndpc2Vcblx0Ly8gXHQgXHRcdFx0LSBJZiB3ZSdyZSBvbiBPUCAtPiBkZXBlbmRpbmcgaWYgVUkgaXMgZWRpdGFibGUgYW5kIHJlc3RyaWN0aW9ucyBvbiBkZWxldGFibGVcblx0Ly9cdFx0XHRcdC0gT3RoZXJ3aXNlXG5cdC8vXHRcdFx0XHQgXHQtIElmIFVJLkRlbGV0ZUhpZGRlbiBwb2ludHMgdG8gYSBwcm9wZXJ0eSBwYXRoIC0+IHByb3ZpZGUgYSBuZWdhdGVkIGJpbmRpbmcgdG8gdGhpcyBwYXRoXG5cdC8vXHQgXHQgXHRcdCBcdC0gT3RoZXJ3aXNlLCBkZWxldGUgaXMgdmlzaWJsZVxuXG5cdHJldHVybiBpZkVsc2UoXG5cdFx0b3Ioc3RhbmRhcmRBY3Rpb25zQ29udGV4dC5pc1ZpZXdXaXRoTXVsdGlwbGVWaXN1YWxpemF0aW9ucywgY29udmVydGVyQ29udGV4dC5nZXRUZW1wbGF0ZVR5cGUoKSA9PT0gVGVtcGxhdGVUeXBlLkFuYWx5dGljYWxMaXN0UGFnZSksXG5cdFx0ZmFsc2UsXG5cdFx0aWZFbHNlKFxuXHRcdFx0YW5kKGlzQ29uc3RhbnQocGF0aERlbGV0YWJsZUV4cHJlc3Npb24pLCBlcXVhbChwYXRoRGVsZXRhYmxlRXhwcmVzc2lvbiwgZmFsc2UpKSxcblx0XHRcdGZhbHNlLFxuXHRcdFx0aWZFbHNlKFxuXHRcdFx0XHRhbmQoaXNDb25zdGFudChpc0RlbGV0ZUhpZGRlbiksIGVxdWFsKGlzRGVsZXRlSGlkZGVuLCBjb25zdGFudCh0cnVlKSkpLFxuXHRcdFx0XHRmYWxzZSxcblx0XHRcdFx0aWZFbHNlKFxuXHRcdFx0XHRcdGNvbnZlcnRlckNvbnRleHQuZ2V0VGVtcGxhdGVUeXBlKCkgIT09IFRlbXBsYXRlVHlwZS5MaXN0UmVwb3J0LFxuXHRcdFx0XHRcdGFuZChub3QoaXNEZWxldGVIaWRkZW4pLCBVSS5Jc0VkaXRhYmxlKSxcblx0XHRcdFx0XHRub3QoYW5kKGlzQmluZGluZyhpc0RlbGV0ZUhpZGRlbiksIGlzRGVsZXRlSGlkZGVuKSlcblx0XHRcdFx0KVxuXHRcdFx0KVxuXHRcdClcblx0KTtcbn1cblxuLyoqXG4gKiBHZXRzIHRoZSBiaW5kaW5nIGV4cHJlc3Npb24gZm9yIHRoZSBwcm9wZXJ0eSB2aXNpYmxlIG9mIHRoZSBhY3Rpb24gUGFzdGUuXG4gKlxuICogQHBhcmFtIHtDb252ZXJ0ZXJDb250ZXh0fSBjb252ZXJ0ZXJDb250ZXh0XG4gKiBAcGFyYW0ge1N0YW5kYXJkQWN0aW9uc0NvbnRleHR9IHN0YW5kYXJkQWN0aW9uc0NvbnRleHRcbiAqIEBwYXJhbSB7RXhwcmVzc2lvbjxib29sZWFuPn0gY3JlYXRlVmlzaWJpbGl0eVxuICogQHBhcmFtIHtib29sZWFufSBpc0luc2VydFVwZGF0ZUFjdGlvbnNUZW1wbGF0ZWRcbiAqIEByZXR1cm5zIHtFeHByZXNzaW9uPGJvb2xlYW4+IH1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFBhc3RlVmlzaWJpbGl0eShcblx0Y29udmVydGVyQ29udGV4dDogQ29udmVydGVyQ29udGV4dCxcblx0c3RhbmRhcmRBY3Rpb25zQ29udGV4dDogU3RhbmRhcmRBY3Rpb25zQ29udGV4dCxcblx0Y3JlYXRlVmlzaWJpbGl0eTogRXhwcmVzc2lvbjxib29sZWFuPixcblx0aXNJbnNlcnRVcGRhdGVBY3Rpb25zVGVtcGxhdGVkOiBib29sZWFuXG4pOiBFeHByZXNzaW9uPGJvb2xlYW4+IHtcblx0Ly8gSWYgQ3JlYXRlIGlzIHZpc2libGUsIGVuYWJsZVBhc3RlIGlzIG5vdCBkaXNhYmxlZCBpbnRvIG1hbmlmZXN0IGFuZCB3ZSBhcmUgb24gT1AvYmxvY2tzIG91dHNpZGUgRmlvcmkgZWxlbWVudHMgdGVtcGxhdGVzXG5cdC8vIFRoZW4gYnV0dG9uIHdpbGwgYmUgdmlzaWJsZSBhY2NvcmRpbmcgdG8gaW5zZXJ0YWJsZSByZXN0cmljdGlvbnMgYW5kIGNyZWF0ZSB2aXNpYmlsaXR5XG5cdC8vIE90aGVyd2lzZSBpdCdzIG5vdCB2aXNpYmxlXG5cdHJldHVybiBhbmQoXG5cdFx0bm90RXF1YWwoc3RhbmRhcmRBY3Rpb25zQ29udGV4dC50YWJsZU1hbmlmZXN0Q29uZmlndXJhdGlvbi5lbmFibGVQYXN0ZSwgZmFsc2UpLFxuXHRcdGNyZWF0ZVZpc2liaWxpdHksXG5cdFx0aXNJbnNlcnRVcGRhdGVBY3Rpb25zVGVtcGxhdGVkLFxuXHRcdFtUZW1wbGF0ZVR5cGUuTGlzdFJlcG9ydCwgVGVtcGxhdGVUeXBlLkFuYWx5dGljYWxMaXN0UGFnZV0uaW5kZXhPZihjb252ZXJ0ZXJDb250ZXh0LmdldFRlbXBsYXRlVHlwZSgpKSA9PT0gLTEsXG5cdFx0c3RhbmRhcmRBY3Rpb25zQ29udGV4dC5yZXN0cmljdGlvbnMuaXNJbnNlcnRhYmxlLmV4cHJlc3Npb25cblx0KTtcbn1cblxuLyoqXG4gKiBHZXRzIHRoZSBiaW5kaW5nIGV4cHJlc3Npb24gZm9yIHRoZSBwcm9wZXJ0eSB2aXNpYmxlIG9mIHRoZSBhY3Rpb24gTWFzc0VkaXQuXG4gKlxuICogQHBhcmFtIHtDb252ZXJ0ZXJDb250ZXh0fSBjb252ZXJ0ZXJDb250ZXh0XG4gKiBAcGFyYW0ge1N0YW5kYXJkQWN0aW9uc0NvbnRleHR9IHN0YW5kYXJkQWN0aW9uc0NvbnRleHRcbiAqIEByZXR1cm5zIHtFeHByZXNzaW9uPGJvb2xlYW4+IH1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldE1hc3NFZGl0VmlzaWJpbGl0eShcblx0Y29udmVydGVyQ29udGV4dDogQ29udmVydGVyQ29udGV4dCxcblx0c3RhbmRhcmRBY3Rpb25zQ29udGV4dDogU3RhbmRhcmRBY3Rpb25zQ29udGV4dFxuKTogRXhwcmVzc2lvbjxib29sZWFuPiB7XG5cdGNvbnN0IGlzVXBkYXRlSGlkZGVuID0gc3RhbmRhcmRBY3Rpb25zQ29udGV4dC5oaWRkZW5Bbm5vdGF0aW9uLnVwZGF0ZSxcblx0XHRwYXRoVXBkYXRhYmxlRXhwcmVzc2lvbiA9IHN0YW5kYXJkQWN0aW9uc0NvbnRleHQucmVzdHJpY3Rpb25zLmlzVXBkYXRhYmxlLmV4cHJlc3Npb24sXG5cdFx0Yk1hc3NFZGl0RW5hYmxlZEluTWFuaWZlc3Q6IGJvb2xlYW4gPSBzdGFuZGFyZEFjdGlvbnNDb250ZXh0LnRhYmxlTWFuaWZlc3RDb25maWd1cmF0aW9uPy5lbmFibGVNYXNzRWRpdCB8fCBmYWxzZTtcblx0Y29uc3QgdGVtcGxhdGVCaW5kaW5nRXhwcmVzc2lvbiA9XG5cdFx0Y29udmVydGVyQ29udGV4dC5nZXRUZW1wbGF0ZVR5cGUoKSA9PT0gVGVtcGxhdGVUeXBlLk9iamVjdFBhZ2Vcblx0XHRcdD8gVUkuSXNFZGl0YWJsZVxuXHRcdFx0OiBjb252ZXJ0ZXJDb250ZXh0LmdldFRlbXBsYXRlVHlwZSgpID09PSBUZW1wbGF0ZVR5cGUuTGlzdFJlcG9ydDtcblx0Ly9NYXNzRWRpdCBpcyB2aXNpYmxlXG5cdC8vIElmXG5cdC8vXHRcdC0gdGhlcmUgaXMgbm8gc3RhdGljIHJlc3RyaWN0aW9ucyBzZXQgdG8gZmFsc2Vcblx0Ly9cdFx0LSBhbmQgZW5hYmxlTWFzc0VkaXQgaXMgbm90IHNldCB0byBmYWxzZSBpbnRvIHRoZSBtYW5pZmVzdFxuXHQvL1x0XHQtIGFuZCB0aGUgc2VsZWN0aW9uTW9kZSBpcyByZWxldmFudFxuXHQvL1x0VGhlbiBNYXNzRWRpdCBpcyBhbHdheXMgdmlzaWJsZSBpbiBMUiBvciBkeW5hbWljYWxseSB2aXNpYmxlIGluIE9QIGFjY29yZGluZyB0byB1aT5FZGl0YWJsZSBhbmQgaGlkZGVuQW5ub3RhdGlvblxuXHQvLyAgQnV0dG9uIGlzIGhpZGRlbiBmb3IgYWxsIG90aGVyIGNhc2VzXG5cdHJldHVybiBhbmQoXG5cdFx0bm90KGFuZChpc0NvbnN0YW50KHBhdGhVcGRhdGFibGVFeHByZXNzaW9uKSwgZXF1YWwocGF0aFVwZGF0YWJsZUV4cHJlc3Npb24sIGZhbHNlKSkpLFxuXHRcdGJNYXNzRWRpdEVuYWJsZWRJbk1hbmlmZXN0LFxuXHRcdHRlbXBsYXRlQmluZGluZ0V4cHJlc3Npb24sXG5cdFx0bm90KGlzVXBkYXRlSGlkZGVuKVxuXHQpO1xufVxuXG4vKipcbiAqIEdldHMgdGhlIGJpbmRpbmcgZXhwcmVzc2lvbiBmb3IgdGhlIHByb3BlcnR5IGVuYWJsZWQgb2YgdGhlIGNyZWF0aW9uUm93LlxuICpcbiAqIEBwYXJhbSB7Q29udmVydGVyQ29udGV4dH0gY29udmVydGVyQ29udGV4dFxuICogQHBhcmFtIHtTdGFuZGFyZEFjdGlvbnNDb250ZXh0fSBzdGFuZGFyZEFjdGlvbnNDb250ZXh0XG4gKiBAcGFyYW0ge0V4cHJlc3Npb248Ym9vbGVhbj59IGNyZWF0aW9uUm93VmlzaWJpbGl0eVxuICogQHJldHVybnMge0V4cHJlc3Npb248Ym9vbGVhbj4gfVxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0Q3JlYXRpb25Sb3dFbmFibGVtZW50KFxuXHRjb252ZXJ0ZXJDb250ZXh0OiBDb252ZXJ0ZXJDb250ZXh0LFxuXHRzdGFuZGFyZEFjdGlvbnNDb250ZXh0OiBTdGFuZGFyZEFjdGlvbnNDb250ZXh0LFxuXHRjcmVhdGlvblJvd1Zpc2liaWxpdHk6IEV4cHJlc3Npb248Ym9vbGVhbj5cbik6IEV4cHJlc3Npb248Ym9vbGVhbj4ge1xuXHRjb25zdCByZXN0cmljdGlvbnNJbnNlcnRhYmxlID0gaXNQYXRoSW5zZXJ0YWJsZShjb252ZXJ0ZXJDb250ZXh0LmdldERhdGFNb2RlbE9iamVjdFBhdGgoKSwge1xuXHRcdGlnbm9yZVRhcmdldENvbGxlY3Rpb246IHRydWUsXG5cdFx0YXV0aG9yaXplVW5yZXNvbHZhYmxlOiB0cnVlLFxuXHRcdHBhdGhWaXNpdG9yOiAocGF0aDogc3RyaW5nLCBuYXZpZ2F0aW9uUGF0aHM6IHN0cmluZ1tdKSA9PiB7XG5cdFx0XHRpZiAocGF0aC5pbmRleE9mKFwiL1wiKSA9PT0gMCkge1xuXHRcdFx0XHRwYXRoID0gc2luZ2xldG9uUGF0aFZpc2l0b3IocGF0aCwgY29udmVydGVyQ29udGV4dC5nZXRDb252ZXJ0ZWRUeXBlcygpLCBuYXZpZ2F0aW9uUGF0aHMpO1xuXHRcdFx0XHRyZXR1cm4gcGF0aDtcblx0XHRcdH1cblx0XHRcdGNvbnN0IG5hdmlnYXRpb25Qcm9wZXJ0aWVzID0gY29udmVydGVyQ29udGV4dC5nZXREYXRhTW9kZWxPYmplY3RQYXRoKCkubmF2aWdhdGlvblByb3BlcnRpZXM7XG5cdFx0XHRpZiAobmF2aWdhdGlvblByb3BlcnRpZXMpIHtcblx0XHRcdFx0Y29uc3QgcGFydG5lciA9IG5hdmlnYXRpb25Qcm9wZXJ0aWVzW25hdmlnYXRpb25Qcm9wZXJ0aWVzLmxlbmd0aCAtIDFdLnBhcnRuZXI7XG5cdFx0XHRcdGlmIChwYXJ0bmVyKSB7XG5cdFx0XHRcdFx0cGF0aCA9IGAke3BhcnRuZXJ9LyR7cGF0aH1gO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0XHRyZXR1cm4gcGF0aDtcblx0XHR9XG5cdH0pO1xuXHRjb25zdCBpc0luc2VydGFibGUgPVxuXHRcdHJlc3RyaWN0aW9uc0luc2VydGFibGUuX3R5cGUgPT09IFwiVW5yZXNvbHZhYmxlXCJcblx0XHRcdD8gaXNQYXRoSW5zZXJ0YWJsZShjb252ZXJ0ZXJDb250ZXh0LmdldERhdGFNb2RlbE9iamVjdFBhdGgoKSwge1xuXHRcdFx0XHRcdHBhdGhWaXNpdG9yOiAocGF0aDogc3RyaW5nKSA9PiBzaW5nbGV0b25QYXRoVmlzaXRvcihwYXRoLCBjb252ZXJ0ZXJDb250ZXh0LmdldENvbnZlcnRlZFR5cGVzKCksIFtdKVxuXHRcdFx0ICB9KVxuXHRcdFx0OiByZXN0cmljdGlvbnNJbnNlcnRhYmxlO1xuXG5cdHJldHVybiBhbmQoXG5cdFx0Y3JlYXRpb25Sb3dWaXNpYmlsaXR5LFxuXHRcdGlzSW5zZXJ0YWJsZSxcblx0XHRvcihcblx0XHRcdCFzdGFuZGFyZEFjdGlvbnNDb250ZXh0LnRhYmxlTWFuaWZlc3RDb25maWd1cmF0aW9uLmRpc2FibGVBZGRSb3dCdXR0b25Gb3JFbXB0eURhdGEsXG5cdFx0XHRmb3JtYXRSZXN1bHQoW2JpbmRpbmdFeHByZXNzaW9uKFwiY3JlYXRpb25Sb3dGaWVsZFZhbGlkaXR5XCIsIFwiaW50ZXJuYWxcIildLCB0YWJsZUZvcm1hdHRlcnMudmFsaWRhdGVDcmVhdGlvblJvd0ZpZWxkcylcblx0XHQpXG5cdCk7XG59XG5cbi8qKlxuICogR2V0cyB0aGUgYmluZGluZyBleHByZXNzaW9uIGZvciB0aGUgcHJvcGVydHkgZW5hYmxlZCBvZiB0aGUgYWN0aW9uIENyZWF0ZS5cbiAqXG4gKiBAcGFyYW0ge0NvbnZlcnRlckNvbnRleHR9IGNvbnZlcnRlckNvbnRleHRcbiAqIEBwYXJhbSB7U3RhbmRhcmRBY3Rpb25zQ29udGV4dH0gc3RhbmRhcmRBY3Rpb25zQ29udGV4dFxuICogQHBhcmFtIHtFeHByZXNzaW9uPGJvb2xlYW4+fSBjcmVhdGVWaXNpYmlsaXR5XG4gKiBAcmV0dXJucyB7RXhwcmVzc2lvbjxib29sZWFuPiB9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRDcmVhdGVFbmFibGVtZW50KFxuXHRjb252ZXJ0ZXJDb250ZXh0OiBDb252ZXJ0ZXJDb250ZXh0LFxuXHRzdGFuZGFyZEFjdGlvbnNDb250ZXh0OiBTdGFuZGFyZEFjdGlvbnNDb250ZXh0LFxuXHRjcmVhdGVWaXNpYmlsaXR5OiBFeHByZXNzaW9uPGJvb2xlYW4+XG4pOiBFeHByZXNzaW9uPGJvb2xlYW4+IHtcblx0Y29uc3QgaXNJbnNlcnRhYmxlID0gc3RhbmRhcmRBY3Rpb25zQ29udGV4dC5yZXN0cmljdGlvbnMuaXNJbnNlcnRhYmxlLmV4cHJlc3Npb247XG5cdGNvbnN0IENvbGxlY3Rpb25UeXBlID0gY29udmVydGVyQ29udGV4dC5yZXNvbHZlQWJzb2x1dGVQYXRoPGFueT4oc3RhbmRhcmRBY3Rpb25zQ29udGV4dC5jb2xsZWN0aW9uUGF0aCkudGFyZ2V0Py5fdHlwZTtcblx0cmV0dXJuIGFuZChcblx0XHRjcmVhdGVWaXNpYmlsaXR5LFxuXHRcdG9yKFxuXHRcdFx0Q29sbGVjdGlvblR5cGUgPT09IFwiRW50aXR5U2V0XCIsXG5cdFx0XHRhbmQoaXNJbnNlcnRhYmxlLCBvcihjb252ZXJ0ZXJDb250ZXh0LmdldFRlbXBsYXRlVHlwZSgpICE9PSBUZW1wbGF0ZVR5cGUuT2JqZWN0UGFnZSwgVUkuSXNFZGl0YWJsZSkpXG5cdFx0KVxuXHQpO1xufVxuXG4vKipcbiAqIEdldHMgdGhlIGJpbmRpbmcgZXhwcmVzc2lvbiBmb3IgdGhlIHByb3BlcnR5IGVuYWJsZWQgb2YgdGhlIGFjdGlvbiBEZWxldGUuXG4gKlxuICogQHBhcmFtIHtDb252ZXJ0ZXJDb250ZXh0fSBjb252ZXJ0ZXJDb250ZXh0XG4gKiBAcGFyYW0ge1N0YW5kYXJkQWN0aW9uc0NvbnRleHR9IHN0YW5kYXJkQWN0aW9uc0NvbnRleHRcbiAqIEBwYXJhbSB7RXhwcmVzc2lvbjxib29sZWFuPn0gZGVsZXRlVmlzaWJpbGl0eVxuICogQHJldHVybnMge0V4cHJlc3Npb248Ym9vbGVhbj4gfVxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0RGVsZXRlRW5hYmxlbWVudChcblx0Y29udmVydGVyQ29udGV4dDogQ29udmVydGVyQ29udGV4dCxcblx0c3RhbmRhcmRBY3Rpb25zQ29udGV4dDogU3RhbmRhcmRBY3Rpb25zQ29udGV4dCxcblx0ZGVsZXRlVmlzaWJpbGl0eTogRXhwcmVzc2lvbjxib29sZWFuPlxuKTogRXhwcmVzc2lvbjxib29sZWFuPiB7XG5cdGNvbnN0IGlzRGVsZXRhYmxlID0gc3RhbmRhcmRBY3Rpb25zQ29udGV4dC5yZXN0cmljdGlvbnMuaXNEZWxldGFibGUuZXhwcmVzc2lvbjtcblx0Y29uc3QgaXNPbmx5RHluYW1pY09uQ3VycmVudEVudGl0eSA9XG5cdFx0IWlzQ29uc3RhbnQoaXNEZWxldGFibGUpICYmIHN0YW5kYXJkQWN0aW9uc0NvbnRleHQucmVzdHJpY3Rpb25zLmlzRGVsZXRhYmxlLm5hdmlnYXRpb25FeHByZXNzaW9uLl90eXBlID09PSBcIlVucmVzb2x2YWJsZVwiO1xuXHRjb25zdCBudW1iZXJPZlNlbGVjdGVkQ29udGV4dHMgPSBiaW5kaW5nRXhwcmVzc2lvbihcIm51bWJlck9mU2VsZWN0ZWRDb250ZXh0c1wiLCBcImludGVybmFsXCIpO1xuXHRjb25zdCBudW1iZXJPZkRlbGV0YWJsZUNvbnRleHRzID0gYmluZGluZ0V4cHJlc3Npb24oXCJkZWxldGFibGVDb250ZXh0c1wiLCBcImludGVybmFsXCIpO1xuXHRjb25zdCBudW1iZXJPZlVuU2F2ZWRDb250ZXh0cyA9IGJpbmRpbmdFeHByZXNzaW9uKFwidW5TYXZlZENvbnRleHRzXCIsIFwiaW50ZXJuYWxcIik7XG5cblx0cmV0dXJuIGFuZChcblx0XHRkZWxldGVWaXNpYmlsaXR5LFxuXHRcdGlmRWxzZShcblx0XHRcdG9yKGNvbnZlcnRlckNvbnRleHQuZ2V0VGVtcGxhdGVUeXBlKCkgIT09IFRlbXBsYXRlVHlwZS5PYmplY3RQYWdlLCBpc09ubHlEeW5hbWljT25DdXJyZW50RW50aXR5KSxcblx0XHRcdGFuZChcblx0XHRcdFx0b3IoXG5cdFx0XHRcdFx0YW5kKG5vdEVxdWFsKG51bWJlck9mRGVsZXRhYmxlQ29udGV4dHMsIHVuZGVmaW5lZCksIGdyZWF0ZXJUaGFuKGxlbmd0aChudW1iZXJPZkRlbGV0YWJsZUNvbnRleHRzKSwgMCkpLFxuXHRcdFx0XHRcdGFuZChub3RFcXVhbChudW1iZXJPZlVuU2F2ZWRDb250ZXh0cywgdW5kZWZpbmVkKSwgZ3JlYXRlclRoYW4obGVuZ3RoKG51bWJlck9mVW5TYXZlZENvbnRleHRzKSwgMCkpXG5cdFx0XHRcdCksXG5cdFx0XHRcdGJpbmRpbmdFeHByZXNzaW9uKFwiZGVsZXRlRW5hYmxlZFwiLCBcImludGVybmFsXCIpXG5cdFx0XHQpLFxuXHRcdFx0YW5kKG5vdEVxdWFsKG51bWJlck9mU2VsZWN0ZWRDb250ZXh0cywgMCksIGlzRGVsZXRhYmxlKVxuXHRcdClcblx0KTtcbn1cblxuLyoqXG4gKiBHZXRzIHRoZSBiaW5kaW5nIGV4cHJlc3Npb24gZm9yIHRoZSBwcm9wZXJ0eSBlbmFibGVkIG9mIHRoZSBhY3Rpb24gUGFzdGUuXG4gKlxuICogQHBhcmFtIHtFeHByZXNzaW9uPGJvb2xlYW4+fSBwYXN0ZVZpc2liaWxpdHlcbiAqIEBwYXJhbSB7RXhwcmVzc2lvbjxib29sZWFuPn0gY3JlYXRlRW5hYmxlbWVudFxuICogQHJldHVybnMge0V4cHJlc3Npb248Ym9vbGVhbj4gfVxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0UGFzdGVFbmFibGVtZW50KHBhc3RlVmlzaWJpbGl0eTogRXhwcmVzc2lvbjxib29sZWFuPiwgY3JlYXRlRW5hYmxlbWVudDogRXhwcmVzc2lvbjxib29sZWFuPik6IEV4cHJlc3Npb248Ym9vbGVhbj4ge1xuXHRyZXR1cm4gYW5kKHBhc3RlVmlzaWJpbGl0eSwgY3JlYXRlRW5hYmxlbWVudCk7XG59XG5cbi8qKlxuICogR2V0cyB0aGUgYmluZGluZyBleHByZXNzaW9uIGZvciB0aGUgcHJvcGVydHkgZW5hYmxlZCBvZiB0aGUgYWN0aW9uIE1hc3NFZGl0LlxuICpcbiAqIEBwYXJhbSB7Q29udmVydGVyQ29udGV4dH0gY29udmVydGVyQ29udGV4dFxuICogQHBhcmFtIHtTdGFuZGFyZEFjdGlvbnNDb250ZXh0fSBzdGFuZGFyZEFjdGlvbnNDb250ZXh0XG4gKiBAcGFyYW0ge0V4cHJlc3Npb248Ym9vbGVhbj59IG1hc3NFZGl0VmlzaWJpbGl0eVxuICogQHJldHVybnMge0V4cHJlc3Npb248Ym9vbGVhbj4gfVxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0TWFzc0VkaXRFbmFibGVtZW50KFxuXHRjb252ZXJ0ZXJDb250ZXh0OiBDb252ZXJ0ZXJDb250ZXh0LFxuXHRzdGFuZGFyZEFjdGlvbnNDb250ZXh0OiBTdGFuZGFyZEFjdGlvbnNDb250ZXh0LFxuXHRtYXNzRWRpdFZpc2liaWxpdHk6IEV4cHJlc3Npb248Ym9vbGVhbj5cbik6IEV4cHJlc3Npb248Ym9vbGVhbj4ge1xuXHRjb25zdCBwYXRoVXBkYXRhYmxlRXhwcmVzc2lvbiA9IHN0YW5kYXJkQWN0aW9uc0NvbnRleHQucmVzdHJpY3Rpb25zLmlzVXBkYXRhYmxlLmV4cHJlc3Npb247XG5cdGNvbnN0IGlzT25seUR5bmFtaWNPbkN1cnJlbnRFbnRpdHk6IGFueSA9XG5cdFx0IWlzQ29uc3RhbnQocGF0aFVwZGF0YWJsZUV4cHJlc3Npb24pICYmXG5cdFx0c3RhbmRhcmRBY3Rpb25zQ29udGV4dC5yZXN0cmljdGlvbnMuaXNVcGRhdGFibGUubmF2aWdhdGlvbkV4cHJlc3Npb24uX3R5cGUgPT09IFwiVW5yZXNvbHZhYmxlXCI7XG5cdGNvbnN0IG51bWJlck9mU2VsZWN0ZWRDb250ZXh0cyA9IGdyZWF0ZXJPckVxdWFsKGJpbmRpbmdFeHByZXNzaW9uKFwibnVtYmVyT2ZTZWxlY3RlZENvbnRleHRzXCIsIFwiaW50ZXJuYWxcIiksIDEpO1xuXHRjb25zdCBudW1iZXJPZlVwZGF0YWJsZUNvbnRleHRzID0gZ3JlYXRlck9yRXF1YWwobGVuZ3RoKGJpbmRpbmdFeHByZXNzaW9uKFwidXBkYXRhYmxlQ29udGV4dHNcIiwgXCJpbnRlcm5hbFwiKSksIDEpO1xuXHRjb25zdCBiSXNEcmFmdFN1cHBvcnRlZCA9IGlzRHJhZnRTdXBwb3J0ZWQoY29udmVydGVyQ29udGV4dCk7XG5cdGNvbnN0IGJEaXNwbGF5TW9kZSA9IGlzSW5EaXNwbGF5TW9kZShjb252ZXJ0ZXJDb250ZXh0KTtcblxuXHQvLyBudW1iZXJPZlVwZGF0YWJsZUNvbnRleHRzIG5lZWRzIHRvIGJlIGFkZGVkIHRvIHRoZSBiaW5kaW5nIGluIGNhc2Vcblx0Ly8gMS4gVXBkYXRlIGlzIGRlcGVuZGVudCBvbiBjdXJyZW50IGVudGl0eSBwcm9wZXJ0eSAoaXNPbmx5RHluYW1pY09uQ3VycmVudEVudGl0eSBpcyB0cnVlKS5cblx0Ly8gMi4gVGhlIHRhYmxlIGlzIHJlYWQgb25seSBhbmQgZHJhZnQgZW5hYmxlZChsaWtlIExSKSwgaW4gdGhpcyBjYXNlIG9ubHkgYWN0aXZlIGNvbnRleHRzIGNhbiBiZSBtYXNzIGVkaXRlZC5cblx0Ly8gICAgU28sIHVwZGF0ZSBkZXBlbmRzIG9uICdJc0FjdGl2ZUVudGl0eScgdmFsdWUgd2hpY2ggbmVlZHMgdG8gYmUgY2hlY2tlZCBydW50aW1lLlxuXHRjb25zdCBydW50aW1lQmluZGluZyA9IGlmRWxzZShcblx0XHRvcihhbmQoYkRpc3BsYXlNb2RlLCBiSXNEcmFmdFN1cHBvcnRlZCksIGlzT25seUR5bmFtaWNPbkN1cnJlbnRFbnRpdHkpLFxuXHRcdGFuZChudW1iZXJPZlNlbGVjdGVkQ29udGV4dHMsIG51bWJlck9mVXBkYXRhYmxlQ29udGV4dHMpLFxuXHRcdGFuZChudW1iZXJPZlNlbGVjdGVkQ29udGV4dHMpXG5cdCk7XG5cblx0cmV0dXJuIGFuZChtYXNzRWRpdFZpc2liaWxpdHksIGlmRWxzZShpc09ubHlEeW5hbWljT25DdXJyZW50RW50aXR5LCBydW50aW1lQmluZGluZywgYW5kKHJ1bnRpbWVCaW5kaW5nLCBwYXRoVXBkYXRhYmxlRXhwcmVzc2lvbikpKTtcbn1cblxuLyoqXG4gKiBUZWxscyBpZiB0aGUgdGFibGUgaW4gdGVtcGxhdGUgaXMgaW4gZGlzcGxheSBtb2RlLlxuICpcbiAqIEBwYXJhbSB7Q29udmVydGVyQ29udGV4dH0gY29udmVydGVyQ29udGV4dFxuICogQHBhcmFtIHtWaWV3UGF0aENvbmZpZ3VyYXRpb259IHZpZXdDb25maWd1cmF0aW9uXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzSW5EaXNwbGF5TW9kZShjb252ZXJ0ZXJDb250ZXh0OiBDb252ZXJ0ZXJDb250ZXh0LCB2aWV3Q29uZmlndXJhdGlvbj86IFZpZXdQYXRoQ29uZmlndXJhdGlvbik6IGJvb2xlYW4ge1xuXHRjb25zdCB0ZW1wbGF0ZVR5cGUgPSBjb252ZXJ0ZXJDb250ZXh0LmdldFRlbXBsYXRlVHlwZSgpO1xuXHRpZiAoXG5cdFx0dGVtcGxhdGVUeXBlID09PSBUZW1wbGF0ZVR5cGUuTGlzdFJlcG9ydCB8fFxuXHRcdHRlbXBsYXRlVHlwZSA9PT0gVGVtcGxhdGVUeXBlLkFuYWx5dGljYWxMaXN0UGFnZSB8fFxuXHRcdCh2aWV3Q29uZmlndXJhdGlvbiAmJiBjb252ZXJ0ZXJDb250ZXh0LmdldE1hbmlmZXN0V3JhcHBlcigpLmhhc011bHRpcGxlVmlzdWFsaXphdGlvbnModmlld0NvbmZpZ3VyYXRpb24pKVxuXHQpIHtcblx0XHRyZXR1cm4gdHJ1ZTtcblx0fVxuXHQvLyB1cGRhdGFibGUgd2lsbCBiZSBoYW5kbGVkIGF0IHRoZSBwcm9wZXJ0eSBsZXZlbFxuXHRyZXR1cm4gZmFsc2U7XG59XG4iXX0=
|
|
602
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIlN0YW5kYXJkQWN0aW9ucy50cyJdLCJuYW1lcyI6WyJBbm5vdGF0aW9uSGlkZGVuUHJvcGVydHkiLCJnZW5lcmF0ZVN0YW5kYXJkQWN0aW9uc0NvbnRleHQiLCJjb252ZXJ0ZXJDb250ZXh0IiwiY3JlYXRpb25Nb2RlIiwidGFibGVNYW5pZmVzdENvbmZpZ3VyYXRpb24iLCJ2aWV3Q29uZmlndXJhdGlvbiIsImNvbGxlY3Rpb25QYXRoIiwiZ2V0VGFyZ2V0T2JqZWN0UGF0aCIsImdldERhdGFNb2RlbE9iamVjdFBhdGgiLCJoaWRkZW5Bbm5vdGF0aW9uIiwiY3JlYXRlIiwiaXNBY3Rpb25Bbm5vdGF0ZWRIaWRkZW4iLCJDcmVhdGVIaWRkZW4iLCJEZWxldGVIaWRkZW4iLCJ1cGRhdGUiLCJVcGRhdGVIaWRkZW4iLCJpc0RyYWZ0T3JTdGlja3lTdXBwb3J0ZWQiLCJpc1ZpZXdXaXRoTXVsdGlwbGVWaXN1YWxpemF0aW9ucyIsImdldE1hbmlmZXN0V3JhcHBlciIsImhhc011bHRpcGxlVmlzdWFsaXphdGlvbnMiLCJuZXdBY3Rpb24iLCJnZXROZXdBY3Rpb24iLCJyZXN0cmljdGlvbnMiLCJnZXRSZXN0cmljdGlvbnMiLCJpc0RyYWZ0U3VwcG9ydGVkIiwiY3VycmVudEVudGl0eVNldCIsImdldEVudGl0eVNldCIsImJJc0RyYWZ0Um9vdCIsImFubm90YXRpb25zIiwiQ29tbW9uIiwiRHJhZnRSb290IiwiYklzRHJhZnROb2RlIiwiRHJhZnROb2RlIiwiYklzRHJhZnRQYXJlbnRFbnRpdHlGb3JDb250YWlubWVudCIsInRhcmdldE9iamVjdCIsImNvbnRhaW5zVGFyZ2V0Iiwic3RhcnRpbmdFbnRpdHlTZXQiLCJiSXNEcmFmdFN1cHBvcnRlZCIsImJJc1N0aWNreVNlc3Npb25TdXBwb3J0ZWQiLCJTZXNzaW9uIiwiU3RpY2t5U2Vzc2lvblN1cHBvcnRlZCIsIm5ld0FjdGlvbk5hbWUiLCJOZXdBY3Rpb24iLCJ0b1N0cmluZyIsImF2YWlsYWJsZVByb3BlcnR5IiwiZ2V0RW50aXR5VHlwZSIsImFjdGlvbnMiLCJDb3JlIiwiT3BlcmF0aW9uQXZhaWxhYmxlIiwidW5kZWZpbmVkIiwibmFtZSIsImF2YWlsYWJsZSIsImFubm90YXRpb25FeHByZXNzaW9uIiwic0Fubm90YXRpb25UZXJtIiwiYldpdGhOYXZpZ2F0aW9uUGF0aCIsImRhdGFNb2RlbE9iamVjdFBhdGgiLCJ2aXNpdGVkTmF2aWdhdGlvblBhdGhzIiwibmF2aWdhdGlvblByb3BlcnRpZXMiLCJsZW5ndGgiLCJhY3Rpb25Bbm5vdGF0aW9uVmFsdWUiLCJVSSIsInBhdGgiLCJzaW5nbGV0b25QYXRoVmlzaXRvciIsImdldENvbnZlcnRlZFR5cGVzIiwiY29uc3RhbnQiLCJyZXN0cmljdGlvbnNEZWYiLCJrZXkiLCJpc1BhdGhJbnNlcnRhYmxlIiwiaXNQYXRoVXBkYXRhYmxlIiwiaXNQYXRoRGVsZXRhYmxlIiwicmVzdWx0IiwiZm9yRWFjaCIsImRlZiIsImRlZkZ1bmN0aW9uIiwiZXhwcmVzc2lvbiIsImFwcGx5IiwicGF0aFZpc2l0b3IiLCJuYXZpZ2F0aW9uUGF0aHMiLCJuYXZpZ2F0aW9uRXhwcmVzc2lvbiIsImlnbm9yZVRhcmdldENvbGxlY3Rpb24iLCJhdXRob3JpemVVbnJlc29sdmFibGUiLCJnZXRJbnNlcnRVcGRhdGVBY3Rpb25zVGVtcGxhdGluZyIsInN0YW5kYXJkQWN0aW9uc0NvbnRleHQiLCJpc0RyYWZ0T3JTdGlja3kiLCJpc0NyZWF0ZUFsd2F5c0hpZGRlbiIsIkNyZWF0aW9uTW9kZSIsIkV4dGVybmFsIiwiZ2V0U3RhbmRhcmRBY3Rpb25DcmVhdGUiLCJjcmVhdGVWaXNpYmlsaXR5IiwiZ2V0Q3JlYXRlVmlzaWJpbGl0eSIsImlzVGVtcGxhdGVkIiwiY29tcGlsZUJpbmRpbmciLCJnZXRDcmVhdGVUZW1wbGF0aW5nIiwidmlzaWJsZSIsImVuYWJsZWQiLCJnZXRDcmVhdGVFbmFibGVtZW50IiwiZ2V0U3RhbmRhcmRBY3Rpb25EZWxldGUiLCJkZWxldGVWaXNpYmlsaXR5IiwiZ2V0RGVsZXRlVmlzaWJpbGl0eSIsImdldERlZmF1bHRUZW1wbGF0aW5nIiwiZ2V0RGVsZXRlRW5hYmxlbWVudCIsImdldENyZWF0aW9uUm93IiwiY3JlYXRpb25Sb3dWaXNpYmlsaXR5IiwiZ2V0Q3JlYXRpb25Sb3dFbmFibGVtZW50IiwiZ2V0U3RhbmRhcmRBY3Rpb25QYXN0ZSIsImlzSW5zZXJ0VXBkYXRlQWN0aW9uc1RlbXBsYXRlZCIsImNyZWF0ZUVuYWJsZW1lbnQiLCJwYXN0ZVZpc2liaWxpdHkiLCJnZXRQYXN0ZVZpc2liaWxpdHkiLCJnZXRQYXN0ZUVuYWJsZW1lbnQiLCJnZXRTdGFuZGFyZEFjdGlvbk1hc3NFZGl0IiwibWFzc0VkaXRWaXNpYmlsaXR5IiwiZ2V0TWFzc0VkaXRWaXNpYmlsaXR5IiwiZ2V0TWFzc0VkaXRFbmFibGVtZW50IiwiaXNGb3JDcmVhdGlvblJvdyIsImFuZCIsIm9yIiwiQ3JlYXRpb25Sb3ciLCJub3QiLCJpc0NvbnN0YW50IiwiYWN0aW9uVmlzaWJpbGl0eSIsImlzSW5zZXJ0YWJsZSIsImlzQ3JlYXRlSGlkZGVuIiwiaWZFbHNlIiwiZ2V0VGVtcGxhdGVUeXBlIiwiVGVtcGxhdGVUeXBlIiwiTGlzdFJlcG9ydCIsIklzRWRpdGFibGUiLCJlcXVhbCIsIkFuYWx5dGljYWxMaXN0UGFnZSIsIklubGluZUNyZWF0aW9uUm93cyIsInR5cGUiLCJpc0JpbmRpbmciLCJpc0RlbGV0ZUhpZGRlbiIsImRlbGV0ZSIsInBhdGhEZWxldGFibGVFeHByZXNzaW9uIiwiaXNEZWxldGFibGUiLCJub3RFcXVhbCIsImVuYWJsZVBhc3RlIiwiaW5kZXhPZiIsImlzVXBkYXRlSGlkZGVuIiwicGF0aFVwZGF0YWJsZUV4cHJlc3Npb24iLCJpc1VwZGF0YWJsZSIsImJNYXNzRWRpdEVuYWJsZWRJbk1hbmlmZXN0IiwiZW5hYmxlTWFzc0VkaXQiLCJ0ZW1wbGF0ZUJpbmRpbmdFeHByZXNzaW9uIiwiT2JqZWN0UGFnZSIsInJlc3RyaWN0aW9uc0luc2VydGFibGUiLCJwYXJ0bmVyIiwiX3R5cGUiLCJkaXNhYmxlQWRkUm93QnV0dG9uRm9yRW1wdHlEYXRhIiwiZm9ybWF0UmVzdWx0IiwiYmluZGluZ0V4cHJlc3Npb24iLCJ0YWJsZUZvcm1hdHRlcnMiLCJ2YWxpZGF0ZUNyZWF0aW9uUm93RmllbGRzIiwiQ29sbGVjdGlvblR5cGUiLCJyZXNvbHZlQWJzb2x1dGVQYXRoIiwidGFyZ2V0IiwiaXNPbmx5RHluYW1pY09uQ3VycmVudEVudGl0eSIsIm51bWJlck9mU2VsZWN0ZWRDb250ZXh0cyIsIm51bWJlck9mRGVsZXRhYmxlQ29udGV4dHMiLCJudW1iZXJPZlVuU2F2ZWRDb250ZXh0cyIsImdyZWF0ZXJUaGFuIiwiZ3JlYXRlck9yRXF1YWwiLCJudW1iZXJPZlVwZGF0YWJsZUNvbnRleHRzIiwiYkRpc3BsYXlNb2RlIiwiaXNJbkRpc3BsYXlNb2RlIiwicnVudGltZUJpbmRpbmciLCJ0ZW1wbGF0ZVR5cGUiXSwibWFwcGluZ3MiOiI7QUFBQTtBQUNBO0FBQ0E7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztNQTBCS0Esd0I7O2FBQUFBLHdCO0FBQUFBLElBQUFBLHdCO0FBQUFBLElBQUFBLHdCO0FBQUFBLElBQUFBLHdCO0tBQUFBLHdCLEtBQUFBLHdCOztBQW9DTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDTyxXQUFTQyw4QkFBVCxDQUNOQyxnQkFETSxFQUVOQyxZQUZNLEVBR05DLDBCQUhNLEVBSU5DLGlCQUpNLEVBS21CO0FBQ3pCLFdBQU87QUFDTkMsTUFBQUEsY0FBYyxFQUFFQyxtQkFBbUIsQ0FBQ0wsZ0JBQWdCLENBQUNNLHNCQUFqQixFQUFELENBRDdCO0FBRU5DLE1BQUFBLGdCQUFnQixFQUFFO0FBQ2pCQyxRQUFBQSxNQUFNLEVBQUVDLHVCQUF1QixDQUFDVCxnQkFBRCxFQUFtQkYsd0JBQXdCLENBQUNZLFlBQTVDLENBRGQ7QUFFakIsa0JBQVVELHVCQUF1QixDQUFDVCxnQkFBRCxFQUFtQkYsd0JBQXdCLENBQUNhLFlBQTVDLENBRmhC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Q3ZILFFBQU1tSyxZQUFZLEdBQUd0SyxnQkFBZ0IsQ0FBQzBILGVBQWpCLEVBQXJCOztBQUNBLFFBQ0M0QyxZQUFZLEtBQUszQyxZQUFZLENBQUNDLFVBQTlCLElBQ0EwQyxZQUFZLEtBQUszQyxZQUFZLENBQUNJLGtCQUQ5QixJQUVDNUgsaUJBQWlCLElBQUlILGdCQUFnQixDQUFDZ0Isa0JBQWpCLEdBQXNDQyx5QkFBdEMsQ0FBZ0VkLGlCQUFoRSxDQUh2QixFQUlFO0FBQ0QsYUFBTyxJQUFQO0FBQ0EsS0FSc0gsQ0FTdkg7OztBQUNBLFdBQU8sS0FBUDtBQUNBIiwic291cmNlUm9vdCI6Ii4iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQcm9wZXJ0eUFubm90YXRpb25WYWx1ZSB9IGZyb20gXCJAc2FwLXV4L3ZvY2FidWxhcmllcy10eXBlc1wiO1xuaW1wb3J0IHRhYmxlRm9ybWF0dGVycyBmcm9tIFwic2FwL2ZlL2NvcmUvZm9ybWF0dGVycy9UYWJsZUZvcm1hdHRlclwiO1xuaW1wb3J0IHtcblx0YW5kLFxuXHRhbm5vdGF0aW9uRXhwcmVzc2lvbixcblx0YmluZGluZ0V4cHJlc3Npb24sXG5cdEJpbmRpbmdFeHByZXNzaW9uLFxuXHRjb21waWxlQmluZGluZyxcblx0Y29uc3RhbnQsXG5cdGVxdWFsLFxuXHRFeHByZXNzaW9uLFxuXHRmb3JtYXRSZXN1bHQsXG5cdGdyZWF0ZXJPckVxdWFsLFxuXHRncmVhdGVyVGhhbixcblx0aWZFbHNlLFxuXHRpc0JpbmRpbmcsXG5cdGlzQ29uc3RhbnQsXG5cdGxlbmd0aCxcblx0bm90LFxuXHRub3RFcXVhbCxcblx0b3Jcbn0gZnJvbSBcInNhcC9mZS9jb3JlL2hlbHBlcnMvQmluZGluZ0V4cHJlc3Npb25cIjtcbmltcG9ydCB7IGdldFRhcmdldE9iamVjdFBhdGgsIGlzUGF0aERlbGV0YWJsZSwgaXNQYXRoSW5zZXJ0YWJsZSwgaXNQYXRoVXBkYXRhYmxlIH0gZnJvbSBcInNhcC9mZS9jb3JlL3RlbXBsYXRpbmcvRGF0YU1vZGVsUGF0aEhlbHBlclwiO1xuaW1wb3J0IENvbnZlcnRlckNvbnRleHQgZnJvbSBcIi4uLy4uLy4uL0NvbnZlcnRlckNvbnRleHRcIjtcbmltcG9ydCB7IHNpbmdsZXRvblBhdGhWaXNpdG9yLCBVSSB9IGZyb20gXCIuLi8uLi8uLi9oZWxwZXJzL0JpbmRpbmdIZWxwZXJcIjtcbmltcG9ydCB7IENyZWF0aW9uTW9kZSwgVGVtcGxhdGVUeXBlLCBWaWV3UGF0aENvbmZpZ3VyYXRpb24gfSBmcm9tIFwiLi4vLi4vLi4vTWFuaWZlc3RTZXR0aW5nc1wiO1xuaW1wb3J0IHsgVGFibGVDb250cm9sQ29uZmlndXJhdGlvbiB9IGZyb20gXCIuLi9UYWJsZVwiO1xuXG5lbnVtIEFubm90YXRpb25IaWRkZW5Qcm9wZXJ0eSB7XG5cdENyZWF0ZUhpZGRlbiA9IFwiQ3JlYXRlSGlkZGVuXCIsXG5cdERlbGV0ZUhpZGRlbiA9IFwiRGVsZXRlSGlkZGVuXCIsXG5cdFVwZGF0ZUhpZGRlbiA9IFwiVXBkYXRlSGlkZGVuXCJcbn1cblxuZXhwb3J0IHR5cGUgU3RhbmRhcmRBY3Rpb25Db25maWdUeXBlID0ge1xuXHRpc1RlbXBsYXRlZD86IEJpbmRpbmdFeHByZXNzaW9uPGJvb2xlYW4+O1xuXHR2aXNpYmxlOiBCaW5kaW5nRXhwcmVzc2lvbjxib29sZWFuPjtcblx0ZW5hYmxlZDogQmluZGluZ0V4cHJlc3Npb248Ym9vbGVhbj47XG59O1xuXG50eXBlIEV4cHJlc3Npb25SZXN0cmljdGlvbnNUeXBlID0ge1xuXHRleHByZXNzaW9uOiBFeHByZXNzaW9uPGJvb2xlYW4+O1xuXHRuYXZpZ2F0aW9uRXhwcmVzc2lvbjogRXhwcmVzc2lvbjxib29sZWFuPjtcbn07XG50eXBlIFN0YW5kYXJkQWN0aW9uc1Jlc3RyaWN0aW9uc1R5cGUgPSBSZWNvcmQ8c3RyaW5nLCBFeHByZXNzaW9uUmVzdHJpY3Rpb25zVHlwZT47XG5cbmV4cG9ydCB0eXBlIFN0YW5kYXJkQWN0aW9uc0NvbnRleHQgPSB7XG5cdGNvbGxlY3Rpb25QYXRoOiBzdHJpbmc7XG5cdGhpZGRlbkFubm90YXRpb246IHtcblx0XHRjcmVhdGU6IEV4cHJlc3Npb248Ym9vbGVhbj47XG5cdFx0XCJkZWxldGVcIjogRXhwcmVzc2lvbjxib29sZWFuPjtcblx0XHR1cGRhdGU6IEV4cHJlc3Npb248Ym9vbGVhbj47XG5cdH07XG5cdGNyZWF0aW9uTW9kZTogQ3JlYXRpb25Nb2RlO1xuXHRpc0RyYWZ0T3JTdGlja3lTdXBwb3J0ZWQ6IGJvb2xlYW47XG5cdGlzVmlld1dpdGhNdWx0aXBsZVZpc3VhbGl6YXRpb25zOiBib29sZWFuO1xuXHRuZXdBY3Rpb24/OiB7XG5cdFx0bmFtZT86IHN0cmluZztcblx0XHRhdmFpbGFibGU/OiBFeHByZXNzaW9uPGJvb2xlYW4+O1xuXHR9O1xuXHR0YWJsZU1hbmlmZXN0Q29uZmlndXJhdGlvbjogVGFibGVDb250cm9sQ29uZmlndXJhdGlvbjtcblx0cmVzdHJpY3Rpb25zOiBTdGFuZGFyZEFjdGlvbnNSZXN0cmljdGlvbnNUeXBlO1xufTtcblxuLyoqXG4gKiBHZW5lcmF0ZXMgdGhlIGNvbnRleHQgZm9yIHRoZSBzdGFuZGFyZCBhY3Rpb25zLlxuICpcbiAqIEBwYXJhbSB7Q29udmVydGVyQ29udGV4dH0gY29udmVydGVyQ29udGV4dFxuICogQHBhcmFtIHtOYXZpZ2F0aW9uU2V0dGluZ3NDb25maWd1cmF0aW9ufSBjcmVhdGlvbk1vZGVcbiAqIEBwYXJhbSB7VGFibGVDb250cm9sQ29uZmlndXJhdGlvbn0gdGFibGVNYW5pZmVzdENvbmZpZ3VyYXRpb25cbiAqIEBwYXJhbSB7Vmlld1BhdGhDb25maWd1cmF0aW9ufSB2aWV3Q29uZmlndXJhdGlvblxuICogQHJldHVybnMgIFRoZSBjb250ZXh0IGZvciB0YWJsZSBhY3Rpb25zXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZW5lcmF0ZVN0YW5kYXJkQWN0aW9uc0NvbnRleHQoXG5cdGNvbnZlcnRlckNvbnRleHQ6IENvbnZlcnRlckNvbnRleHQsXG5cdGNyZWF0aW9uTW9kZTogQ3JlYXRpb25Nb2RlLFxuXHR0YWJsZU1hbmlmZXN0Q29uZmlndXJhdGlvbjogVGFibGVDb250cm9sQ29uZmlndXJhdGlvbixcblx0dmlld0NvbmZpZ3VyYXRpb24/OiBWaWV3UGF0aENvbmZpZ3VyYXRpb25cbik6IFN0YW5kYXJkQWN0aW9uc0NvbnRleHQge1xuXHRyZXR1cm4ge1xuXHRcdGNvbGxlY3Rpb25QYXRoOiBnZXRUYXJnZXRPYmplY3RQYXRoKGNvbnZlcnRlckNvbnRleHQuZ2V0RGF0YU1vZGVsT2JqZWN0UGF0aCgpKSxcblx0XHRoaWRkZW5Bbm5vdGF0aW9uOiB7XG5cdFx0XHRjcmVhdGU6IGlzQWN0aW9uQW5ub3RhdGVkSGlkZGVuKGNvbnZlcnRlckNvbnRleHQsIEFubm90YXRpb25IaWRkZW5Qcm9wZXJ0eS5DcmVhdGVIaWRkZW4pLFxuXHRcdFx0XCJkZWxldGVcIjogaXNBY3Rpb25Bbm5vdGF0ZWRIaWRkZW4oY29udmVydGVyQ29udGV4dCwgQW5ub3RhdGlvbkhpZGRlblByb3BlcnR5LkRlbGV0ZUhpZGRlbiksXG5cdFx0XHR1cGRhdGU6IGlzQWN0aW9uQW5ub3RhdGVkSGlkZGVuKGNvbnZlcnRlckNvbnRleHQsIEFubm90YXRpb25IaWRkZW5Qcm9wZXJ0eS5VcGRhdGVIaWRkZW4pXG5cdFx0fSxcblx0XHRjcmVhdGlvbk1vZGU6IGNyZWF0aW9uTW9kZSxcblx0XHRpc0RyYWZ0T3JTdGlja3lTdXBwb3J0ZWQ6IGlzRHJhZnRPclN0aWNreVN1cHBvcnRlZChjb252ZXJ0ZXJDb250ZXh0KSxcblx0XHRpc1ZpZXdXaXRoTXVsdGlwbGVWaXN1YWxpemF0aW9uczogdmlld0NvbmZpZ3VyYXRpb25cblx0XHRcdD8gY29udmVydGVyQ29udGV4dC5nZXRNYW5pZmVzdFdyYXBwZXIoKS5oYXNNdWx0aXBsZVZpc3VhbGl6YXRpb25zKHZpZXdDb25maWd1cmF0aW9uKVxuXHRcdFx0OiBmYWxzZSxcblx0XHRuZXdBY3Rpb246IGdldE5ld0FjdGlvbihjb252ZXJ0ZXJDb250ZXh0KSxcblx0XHR0YWJsZU1hbmlmZXN0Q29uZmlndXJhdGlvbjogdGFibGVNYW5pZmVzdENvbmZpZ3VyYXRpb24sXG5cdFx0cmVzdHJpY3Rpb25zOiBnZXRSZXN0cmljdGlvbnMoY29udmVydGVyQ29udGV4dClcblx0fTtcbn1cblxuLyoqXG4gKiBDaGVja3MgaWYgZHJhZnQgaXMgc3VwcG9ydGVkLlxuICpcbiAqIEBwYXJhbSB7Q29udmVydGVyQ29udGV4dH0gY29udmVydGVyQ29udGV4dFxuICogQHJldHVybnMge2Jvb2xlYW59XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc0RyYWZ0U3VwcG9ydGVkKGNvbnZlcnRlckNvbnRleHQ6IENvbnZlcnRlckNvbnRleHQpOiBib29sZWFuIHtcblx0Y29uc3QgY3VycmVudEVudGl0eVNldCA9IGNvbnZlcnRlckNvbnRleHQuZ2V0RW50aXR5U2V0KCk7XG5cdGNvbnN0IGJJc0RyYWZ0Um9vdCA9IGN1cnJlbnRFbnRpdHlTZXQgJiYgY3VycmVudEVudGl0eVNldC5hbm5vdGF0aW9ucz8uQ29tbW9uPy5EcmFmdFJvb3QgPyB0cnVlIDogZmFsc2U7XG5cdGNvbnN0IGJJc0RyYWZ0Tm9kZSA9IGN1cnJlbnRFbnRpdHlTZXQgJiYgY3VycmVudEVudGl0eVNldC5hbm5vdGF0aW9ucz8uQ29tbW9uPy5EcmFmdE5vZGUgPyB0cnVlIDogZmFsc2U7XG5cdGNvbnN0IGJJc0RyYWZ0UGFyZW50RW50aXR5Rm9yQ29udGFpbm1lbnQgPVxuXHRcdGNvbnZlcnRlckNvbnRleHQuZ2V0RGF0YU1vZGVsT2JqZWN0UGF0aCgpLnRhcmdldE9iamVjdD8uY29udGFpbnNUYXJnZXQgJiZcblx0XHQoY29udmVydGVyQ29udGV4dC5nZXREYXRhTW9kZWxPYmplY3RQYXRoKCkuc3RhcnRpbmdFbnRpdHlTZXQ/LmFubm90YXRpb25zPy5Db21tb24/LkRyYWZ0Um9vdCB8fFxuXHRcdFx0Y29udmVydGVyQ29udGV4dC5nZXREYXRhTW9kZWxPYmplY3RQYXRoKCkuc3RhcnRpbmdFbnRpdHlTZXQ/LmFubm90YXRpb25zPy5Db21tb24/LkRyYWZ0Tm9kZSlcblx0XHRcdD8gdHJ1ZVxuXHRcdFx0OiBmYWxzZTtcblxuXHRyZXR1cm4gYklzRHJhZnRSb290IHx8IGJJc0RyYWZ0Tm9kZSB8fCAoIWNvbnZlcnRlckNvbnRleHQuZ2V0RW50aXR5U2V0KCkgJiYgYklzRHJhZnRQYXJlbnRFbnRpdHlGb3JDb250YWlubWVudCk7XG59XG5cbi8qKlxuICogQ2hlY2tzIGlmIHN0aWNreSBvciBkcmFmdCBpcyBzdXBwb3J0ZWQuXG4gKlxuICogQHBhcmFtIHtDb252ZXJ0ZXJDb250ZXh0fSBjb252ZXJ0ZXJDb250ZXh0XG4gKiBAcmV0dXJucyB7Ym9vbGVhbn1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzRHJhZnRPclN0aWNreVN1cHBvcnRlZChjb252ZXJ0ZXJDb250ZXh0OiBDb252ZXJ0ZXJDb250ZXh0KTogYm9vbGVhbiB7XG5cdGNvbnN0IGJJc0RyYWZ0U3VwcG9ydGVkID0gaXNEcmFmdFN1cHBvcnRlZChjb252ZXJ0ZXJDb250ZXh0KTtcblx0Y29uc3QgYklzU3RpY2t5U2Vzc2lvblN1cHBvcnRlZCA9IGNvbnZlcnRlckNvbnRleHQuZ2V0RGF0YU1vZGVsT2JqZWN0UGF0aCgpLnN0YXJ0aW5nRW50aXR5U2V0Py5hbm5vdGF0aW9ucz8uU2Vzc2lvblxuXHRcdD8uU3RpY2t5U2Vzc2lvblN1cHBvcnRlZFxuXHRcdD8gdHJ1ZVxuXHRcdDogZmFsc2U7XG5cblx0cmV0dXJuIGJJc0RyYWZ0U3VwcG9ydGVkIHx8IGJJc1N0aWNreVNlc3Npb25TdXBwb3J0ZWQ7XG59XG5cbi8qKlxuICogR2V0cyB0aGUgY29uZmlndXJlZCBuZXdBY3Rpb24gaW50byBhbm5vdGF0aW9uLlxuICpcbiAqIEBwYXJhbSB7Q29udmVydGVyQ29udGV4dH0gY29udmVydGVyQ29udGV4dFxuICogQHJldHVybnMge2FueX1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldE5ld0FjdGlvbihjb252ZXJ0ZXJDb250ZXh0OiBDb252ZXJ0ZXJDb250ZXh0KTogYW55IHtcblx0Y29uc3QgY3VycmVudEVudGl0eVNldCA9IGNvbnZlcnRlckNvbnRleHQuZ2V0RW50aXR5U2V0KCk7XG5cdGNvbnN0IG5ld0FjdGlvbk5hbWU6IEJpbmRpbmdFeHByZXNzaW9uPHN0cmluZz4gPSAoXG5cdFx0Y3VycmVudEVudGl0eVNldD8uYW5ub3RhdGlvbnM/LkNvbW1vbj8uRHJhZnRSb290Py5OZXdBY3Rpb24gfHxcblx0XHRjdXJyZW50RW50aXR5U2V0Py5hbm5vdGF0aW9ucz8uU2Vzc2lvbj8uU3RpY2t5U2Vzc2lvblN1cHBvcnRlZD8uTmV3QWN0aW9uXG5cdCk/LnRvU3RyaW5nKCk7XG5cdGlmIChuZXdBY3Rpb25OYW1lKSB7XG5cdFx0bGV0IGF2YWlsYWJsZVByb3BlcnR5OiBhbnkgPSBjb252ZXJ0ZXJDb250ZXh0Py5nZXRFbnRpdHlUeXBlKCkuYWN0aW9uc1tuZXdBY3Rpb25OYW1lXT8uYW5ub3RhdGlvbnM/LkNvcmU/Lk9wZXJhdGlvbkF2YWlsYWJsZTtcblx0XHRhdmFpbGFibGVQcm9wZXJ0eSA9IGF2YWlsYWJsZVByb3BlcnR5ICE9PSB1bmRlZmluZWQgPyBhdmFpbGFibGVQcm9wZXJ0eSA6IHRydWU7XG5cdFx0cmV0dXJuIHtcblx0XHRcdG5hbWU6IG5ld0FjdGlvbk5hbWUsXG5cdFx0XHRhdmFpbGFibGU6IGFubm90YXRpb25FeHByZXNzaW9uKGF2YWlsYWJsZVByb3BlcnR5KVxuXHRcdH07XG5cdH1cblx0cmV0dXJuIHVuZGVmaW5lZDtcbn1cblxuLyoqXG4gKiBHZXRzIHRoZSBiaW5kaW5nIGV4cHJlc3Npb24gZm9yIHRoZSBhY3Rpb24gdmlzaWJpbGl0eSBjb25maWd1cmVkIGludG8gYW5ub3RhdGlvbi5cbiAqXG4gKiBAcGFyYW0ge0NvbnZlcnRlckNvbnRleHR9IGNvbnZlcnRlckNvbnRleHRcbiAqIEBwYXJhbSB7c3RyaW5nfSBzQW5ub3RhdGlvblRlcm1cbiAqIEBwYXJhbSB7Ym9vbGVhbn0gYldpdGhOYXZpZ2F0aW9uUGF0aFxuICogQHJldHVybnMge0V4cHJlc3Npb248Ym9vbGVhbj59XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc0FjdGlvbkFubm90YXRlZEhpZGRlbihcblx0Y29udmVydGVyQ29udGV4dDogQ29udmVydGVyQ29udGV4dCxcblx0c0Fubm90YXRpb25UZXJtOiBzdHJpbmcsXG5cdGJXaXRoTmF2aWdhdGlvblBhdGggPSB0cnVlXG4pOiBFeHByZXNzaW9uPGJvb2xlYW4+IHtcblx0Y29uc3QgY3VycmVudEVudGl0eVNldCA9IGNvbnZlcnRlckNvbnRleHQuZ2V0RW50aXR5U2V0KCk7XG5cdGNvbnN0IGRhdGFNb2RlbE9iamVjdFBhdGggPSBjb252ZXJ0ZXJDb250ZXh0LmdldERhdGFNb2RlbE9iamVjdFBhdGgoKTtcblx0Ly8gQ29uc2lkZXIgb25seSB0aGUgbGFzdCBsZXZlbCBvZiBuYXZpZ2F0aW9uLiBUaGUgb3RoZXJzIGFyZSBhbHJlYWR5IGNvbnNpZGVyZWQgaW4gdGhlIGVsZW1lbnQgYmluZGluZyBvZiB0aGUgcGFnZS5cblx0Y29uc3QgdmlzaXRlZE5hdmlnYXRpb25QYXRocyA9XG5cdFx0ZGF0YU1vZGVsT2JqZWN0UGF0aC5uYXZpZ2F0aW9uUHJvcGVydGllcy5sZW5ndGggPiAwICYmIGJXaXRoTmF2aWdhdGlvblBhdGhcblx0XHRcdD8gW2RhdGFNb2RlbE9iamVjdFBhdGgubmF2aWdhdGlvblByb3BlcnRpZXNbZGF0YU1vZGVsT2JqZWN0UGF0aC5uYXZpZ2F0aW9uUHJvcGVydGllcy5sZW5ndGggLSAxXS5uYW1lXVxuXHRcdFx0OiBbXTtcblx0Y29uc3QgYWN0aW9uQW5ub3RhdGlvblZhbHVlID1cblx0XHQoKGN1cnJlbnRFbnRpdHlTZXQ/LmFubm90YXRpb25zLlVJIGFzIGFueSk/LltzQW5ub3RhdGlvblRlcm1dIGFzIFByb3BlcnR5QW5ub3RhdGlvblZhbHVlPGJvb2xlYW4+KSB8fCBmYWxzZTtcblxuXHRyZXR1cm4gY3VycmVudEVudGl0eVNldFxuXHRcdD8gYW5ub3RhdGlvbkV4cHJlc3Npb24oYWN0aW9uQW5ub3RhdGlvblZhbHVlLCB2aXNpdGVkTmF2aWdhdGlvblBhdGhzLCB1bmRlZmluZWQsIChwYXRoOiBzdHJpbmcpID0+XG5cdFx0XHRcdHNpbmdsZXRvblBhdGhWaXNpdG9yKHBhdGgsIGNvbnZlcnRlckNvbnRleHQuZ2V0Q29udmVydGVkVHlwZXMoKSwgdmlzaXRlZE5hdmlnYXRpb25QYXRocylcblx0XHQgIClcblx0XHQ6IGNvbnN0YW50KGZhbHNlKTtcbn1cblxuLyoqXG4gKiBHZXRzIHRoZSBhbm5vdGF0ZWQgcmVzdHJpY3Rpb25zIGZvciB0aGUgYWN0aW9ucy5cbiAqXG4gKiBAcGFyYW0ge0NvbnZlcnRlckNvbnRleHR9IGNvbnZlcnRlckNvbnRleHRcbiAqIEByZXR1cm5zIHtTdGFuZGFyZEFjdGlvbnNSZXN0cmljdGlvbnNUeXBlfVxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0UmVzdHJpY3Rpb25zKGNvbnZlcnRlckNvbnRleHQ6IENvbnZlcnRlckNvbnRleHQpOiBTdGFuZGFyZEFjdGlvbnNSZXN0cmljdGlvbnNUeXBlIHtcblx0Y29uc3QgZGF0YU1vZGVsT2JqZWN0UGF0aCA9IGNvbnZlcnRlckNvbnRleHQuZ2V0RGF0YU1vZGVsT2JqZWN0UGF0aCgpO1xuXHRjb25zdCByZXN0cmljdGlvbnNEZWYgPSBbXG5cdFx0e1xuXHRcdFx0a2V5OiBcImlzSW5zZXJ0YWJsZVwiLFxuXHRcdFx0XCJmdW5jdGlvblwiOiBpc1BhdGhJbnNlcnRhYmxlXG5cdFx0fSxcblx0XHR7XG5cdFx0XHRrZXk6IFwiaXNVcGRhdGFibGVcIixcblx0XHRcdFwiZnVuY3Rpb25cIjogaXNQYXRoVXBkYXRhYmxlXG5cdFx0fSxcblx0XHR7XG5cdFx0XHRrZXk6IFwiaXNEZWxldGFibGVcIixcblx0XHRcdFwiZnVuY3Rpb25cIjogaXNQYXRoRGVsZXRhYmxlXG5cdFx0fVxuXHRdO1xuXHRjb25zdCByZXN1bHQ6IFJlY29yZDxzdHJpbmcsIEV4cHJlc3Npb25SZXN0cmljdGlvbnNUeXBlPiA9IHt9O1xuXHRyZXN0cmljdGlvbnNEZWYuZm9yRWFjaChmdW5jdGlvbiAoZGVmKSB7XG5cdFx0Y29uc3QgZGVmRnVuY3Rpb24gPSBkZWZbXCJmdW5jdGlvblwiXTtcblx0XHRyZXN1bHRbZGVmLmtleV0gPSB7XG5cdFx0XHRleHByZXNzaW9uOiBkZWZGdW5jdGlvbi5hcHBseShudWxsLCBbXG5cdFx0XHRcdGRhdGFNb2RlbE9iamVjdFBhdGgsXG5cdFx0XHRcdHtcblx0XHRcdFx0XHRwYXRoVmlzaXRvcjogKHBhdGg6IHN0cmluZywgbmF2aWdhdGlvblBhdGhzOiBzdHJpbmdbXSkgPT5cblx0XHRcdFx0XHRcdHNpbmdsZXRvblBhdGhWaXNpdG9yKHBhdGgsIGNvbnZlcnRlckNvbnRleHQuZ2V0Q29udmVydGVkVHlwZXMoKSwgbmF2aWdhdGlvblBhdGhzKVxuXHRcdFx0XHR9XG5cdFx0XHRdKSxcblx0XHRcdG5hdmlnYXRpb25FeHByZXNzaW9uOiBkZWZGdW5jdGlvbi5hcHBseShudWxsLCBbXG5cdFx0XHRcdGRhdGFNb2RlbE9iamVjdFBhdGgsXG5cdFx0XHRcdHtcblx0XHRcdFx0XHRpZ25vcmVUYXJnZXRDb2xsZWN0aW9uOiB0cnVlLFxuXHRcdFx0XHRcdGF1dGhvcml6ZVVucmVzb2x2YWJsZTogdHJ1ZSxcblx0XHRcdFx0XHRwYXRoVmlzaXRvcjogKHBhdGg6IHN0cmluZywgbmF2aWdhdGlvblBhdGhzOiBzdHJpbmdbXSkgPT5cblx0XHRcdFx0XHRcdHNpbmdsZXRvblBhdGhWaXNpdG9yKHBhdGgsIGNvbnZlcnRlckNvbnRleHQuZ2V0Q29udmVydGVkVHlwZXMoKSwgbmF2aWdhdGlvblBhdGhzKVxuXHRcdFx0XHR9XG5cdFx0XHRdKVxuXHRcdH07XG5cdH0pO1xuXHRyZXR1cm4gcmVzdWx0O1xufVxuXG4vKipcbiAqIENoZWNrcyBpZiB0ZW1wbGF0aW5nIGZvciBpbnNlcnQvdXBkYXRlIGFjdGlvbnMgaXMgbWFuZGF0b3J5LlxuICpcbiAqIEBwYXJhbSB7U3RhbmRhcmRBY3Rpb25zQ29udGV4dH0gc3RhbmRhcmRBY3Rpb25zQ29udGV4dFxuICogQHBhcmFtIHtib29sZWFufSBpc0RyYWZ0T3JTdGlja3lcbiAqIEBwYXJhbSB7Ym9vbGVhbn0gaXNDcmVhdGVBbHdheXNIaWRkZW5cbiAqIEByZXR1cm5zIHtib29sZWFufVxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0SW5zZXJ0VXBkYXRlQWN0aW9uc1RlbXBsYXRpbmcoXG5cdHN0YW5kYXJkQWN0aW9uc0NvbnRleHQ6IFN0YW5kYXJkQWN0aW9uc0NvbnRleHQsXG5cdGlzRHJhZnRPclN0aWNreTogYm9vbGVhbixcblx0aXNDcmVhdGVBbHdheXNIaWRkZW46IGJvb2xlYW5cbik6IGJvb2xlYW4ge1xuXHRyZXR1cm4gKGlzRHJhZnRPclN0aWNreSB8fCBzdGFuZGFyZEFjdGlvbnNDb250ZXh0LmNyZWF0aW9uTW9kZSA9PT0gQ3JlYXRpb25Nb2RlLkV4dGVybmFsKSAmJiAhaXNDcmVhdGVBbHdheXNIaWRkZW47XG59XG5cbi8qKlxuICogR2V0cyB0aGUgYmluZGluZyBleHByZXNzaW9ucyBmb3IgdGhlIHByb3BlcnRpZXMgb2YgdGhlIGFjdGlvbiBDcmVhdGUuXG4gKlxuICogQHBhcmFtIHtDb252ZXJ0ZXJDb250ZXh0fSBjb252ZXJ0ZXJDb250ZXh0XG4gKiBAcGFyYW0ge1N0YW5kYXJkQWN0aW9uc0NvbnRleHR9IHN0YW5kYXJkQWN0aW9uc0NvbnRleHRcbiAqIEByZXR1cm5zIHtTdGFuZGFyZEFjdGlvbkNvbmZpZ1R5cGV9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRTdGFuZGFyZEFjdGlvbkNyZWF0ZShcblx0Y29udmVydGVyQ29udGV4dDogQ29udmVydGVyQ29udGV4dCxcblx0c3RhbmRhcmRBY3Rpb25zQ29udGV4dDogU3RhbmRhcmRBY3Rpb25zQ29udGV4dFxuKTogU3RhbmRhcmRBY3Rpb25Db25maWdUeXBlIHtcblx0Y29uc3QgY3JlYXRlVmlzaWJpbGl0eSA9IGdldENyZWF0ZVZpc2liaWxpdHkoY29udmVydGVyQ29udGV4dCwgc3RhbmRhcmRBY3Rpb25zQ29udGV4dCk7XG5cdHJldHVybiB7XG5cdFx0aXNUZW1wbGF0ZWQ6IGNvbXBpbGVCaW5kaW5nKGdldENyZWF0ZVRlbXBsYXRpbmcoc3RhbmRhcmRBY3Rpb25zQ29udGV4dCwgY3JlYXRlVmlzaWJpbGl0eSkpLFxuXHRcdHZpc2libGU6IGNvbXBpbGVCaW5kaW5nKGNyZWF0ZVZpc2liaWxpdHkpLFxuXHRcdGVuYWJsZWQ6IGNvbXBpbGVCaW5kaW5nKGdldENyZWF0ZUVuYWJsZW1lbnQoY29udmVydGVyQ29udGV4dCwgc3RhbmRhcmRBY3Rpb25zQ29udGV4dCwgY3JlYXRlVmlzaWJpbGl0eSkpXG5cdH07XG59XG5cbi8qKlxuICogR2V0cyB0aGUgYmluZGluZyBleHByZXNzaW9ucyBmb3IgdGhlIHByb3BlcnRpZXMgb2YgdGhlIGFjdGlvbiBEZWxldGUuXG4gKlxuICogQHBhcmFtIHtDb252ZXJ0ZXJDb250ZXh0fSBjb252ZXJ0ZXJDb250ZXh0XG4gKiBAcGFyYW0ge1N0YW5kYXJkQWN0aW9uc0NvbnRleHR9IHN0YW5kYXJkQWN0aW9uc0NvbnRleHRcbiAqIEByZXR1cm5zIHtTdGFuZGFyZEFjdGlvbkNvbmZpZ1R5cGV9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRTdGFuZGFyZEFjdGlvbkRlbGV0ZShcblx0Y29udmVydGVyQ29udGV4dDogQ29udmVydGVyQ29udGV4dCxcblx0c3RhbmRhcmRBY3Rpb25zQ29udGV4dDogU3RhbmRhcmRBY3Rpb25zQ29udGV4dFxuKTogU3RhbmRhcmRBY3Rpb25Db25maWdUeXBlIHtcblx0Y29uc3QgZGVsZXRlVmlzaWJpbGl0eSA9IGdldERlbGV0ZVZpc2liaWxpdHkoY29udmVydGVyQ29udGV4dCwgc3RhbmRhcmRBY3Rpb25zQ29udGV4dCk7XG5cblx0cmV0dXJuIHtcblx0XHRpc1RlbXBsYXRlZDogY29tcGlsZUJpbmRpbmcoZ2V0RGVmYXVsdFRlbXBsYXRpbmcoZGVsZXRlVmlzaWJpbGl0eSkpLFxuXHRcdHZpc2libGU6IGNvbXBpbGVCaW5kaW5nKGRlbGV0ZVZpc2liaWxpdHkpLFxuXHRcdGVuYWJsZWQ6IGNvbXBpbGVCaW5kaW5nKGdldERlbGV0ZUVuYWJsZW1lbnQoY29udmVydGVyQ29udGV4dCwgc3RhbmRhcmRBY3Rpb25zQ29udGV4dCwgZGVsZXRlVmlzaWJpbGl0eSkpXG5cdH07XG59XG5cbi8qKlxuICogQHBhcmFtIGNvbnZlcnRlckNvbnRleHRcbiAqIEBwYXJhbSBzdGFuZGFyZEFjdGlvbnNDb250ZXh0XG4gKiBAcmV0dXJucyBTdGFuZGFyZEFjdGlvbkNvbmZpZ1R5cGVcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldENyZWF0aW9uUm93KFxuXHRjb252ZXJ0ZXJDb250ZXh0OiBDb252ZXJ0ZXJDb250ZXh0LFxuXHRzdGFuZGFyZEFjdGlvbnNDb250ZXh0OiBTdGFuZGFyZEFjdGlvbnNDb250ZXh0XG4pOiBTdGFuZGFyZEFjdGlvbkNvbmZpZ1R5cGUge1xuXHRjb25zdCBjcmVhdGlvblJvd1Zpc2liaWxpdHkgPSBnZXRDcmVhdGVWaXNpYmlsaXR5KGNvbnZlcnRlckNvbnRleHQsIHN0YW5kYXJkQWN0aW9uc0NvbnRleHQsIHRydWUpO1xuXG5cdHJldHVybiB7XG5cdFx0aXNUZW1wbGF0ZWQ6IGNvbXBpbGVCaW5kaW5nKGdldENyZWF0ZVRlbXBsYXRpbmcoc3RhbmRhcmRBY3Rpb25zQ29udGV4dCwgY3JlYXRpb25Sb3dWaXNpYmlsaXR5LCB0cnVlKSksXG5cdFx0dmlzaWJsZTogY29tcGlsZUJpbmRpbmcoY3JlYXRpb25Sb3dWaXNpYmlsaXR5KSxcblx0XHRlbmFibGVkOiBjb21waWxlQmluZGluZyhnZXRDcmVhdGlvblJvd0VuYWJsZW1lbnQoY29udmVydGVyQ29udGV4dCwgc3RhbmRhcmRBY3Rpb25zQ29udGV4dCwgY3JlYXRpb25Sb3dWaXNpYmlsaXR5KSlcblx0fTtcbn1cblxuLyoqXG4gKiBHZXRzIHRoZSBiaW5kaW5nIGV4cHJlc3Npb25zIGZvciB0aGUgcHJvcGVydGllcyBvZiB0aGUgYWN0aW9uIFBhc3RlLlxuICpcbiAqIEBwYXJhbSB7Q29udmVydGVyQ29udGV4dH0gY29udmVydGVyQ29udGV4dFxuICogQHBhcmFtIHtTdGFuZGFyZEFjdGlvbnNDb250ZXh0fSBzdGFuZGFyZEFjdGlvbnNDb250ZXh0XG4gKiBAcGFyYW0ge2Jvb2xlYW59IGlzSW5zZXJ0VXBkYXRlQWN0aW9uc1RlbXBsYXRlZFxuICogQHJldHVybnMge1N0YW5kYXJkQWN0aW9uQ29uZmlnVHlwZX1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFN0YW5kYXJkQWN0aW9uUGFzdGUoXG5cdGNvbnZlcnRlckNvbnRleHQ6IENvbnZlcnRlckNvbnRleHQsXG5cdHN0YW5kYXJkQWN0aW9uc0NvbnRleHQ6IFN0YW5kYXJkQWN0aW9uc0NvbnRleHQsXG5cdGlzSW5zZXJ0VXBkYXRlQWN0aW9uc1RlbXBsYXRlZDogYm9vbGVhblxuKTogU3RhbmRhcmRBY3Rpb25Db25maWdUeXBlIHtcblx0Y29uc3QgY3JlYXRlVmlzaWJpbGl0eSA9IGdldENyZWF0ZVZpc2liaWxpdHkoY29udmVydGVyQ29udGV4dCwgc3RhbmRhcmRBY3Rpb25zQ29udGV4dCk7XG5cdGNvbnN0IGNyZWF0ZUVuYWJsZW1lbnQgPSBnZXRDcmVhdGVFbmFibGVtZW50KGNvbnZlcnRlckNvbnRleHQsIHN0YW5kYXJkQWN0aW9uc0NvbnRleHQsIGNyZWF0ZVZpc2liaWxpdHkpO1xuXHRjb25zdCBwYXN0ZVZpc2liaWxpdHkgPSBnZXRQYXN0ZVZpc2liaWxpdHkoY29udmVydGVyQ29udGV4dCwgc3RhbmRhcmRBY3Rpb25zQ29udGV4dCwgY3JlYXRlVmlzaWJpbGl0eSwgaXNJbnNlcnRVcGRhdGVBY3Rpb25zVGVtcGxhdGVkKTtcblx0cmV0dXJuIHtcblx0XHR2aXNpYmxlOiBjb21waWxlQmluZGluZyhwYXN0ZVZpc2liaWxpdHkpLFxuXHRcdGVuYWJsZWQ6IGNvbXBpbGVCaW5kaW5nKGdldFBhc3RlRW5hYmxlbWVudChwYXN0ZVZpc2liaWxpdHksIGNyZWF0ZUVuYWJsZW1lbnQpKVxuXHR9O1xufVxuXG4vKipcbiAqIEdldHMgdGhlIGJpbmRpbmcgZXhwcmVzc2lvbnMgZm9yIHRoZSBwcm9wZXJ0aWVzIG9mIHRoZSBhY3Rpb24gTWFzc0VkaXQuXG4gKlxuICogQHBhcmFtIHtDb252ZXJ0ZXJDb250ZXh0fSBjb252ZXJ0ZXJDb250ZXh0XG4gKiBAcGFyYW0ge1N0YW5kYXJkQWN0aW9uc0NvbnRleHR9IHN0YW5kYXJkQWN0aW9uc0NvbnRleHRcbiAqIEByZXR1cm5zIHtTdGFuZGFyZEFjdGlvbkNvbmZpZ1R5cGV9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRTdGFuZGFyZEFjdGlvbk1hc3NFZGl0KFxuXHRjb252ZXJ0ZXJDb250ZXh0OiBDb252ZXJ0ZXJDb250ZXh0LFxuXHRzdGFuZGFyZEFjdGlvbnNDb250ZXh0OiBTdGFuZGFyZEFjdGlvbnNDb250ZXh0XG4pOiBTdGFuZGFyZEFjdGlvbkNvbmZpZ1R5cGUge1xuXHRjb25zdCBtYXNzRWRpdFZpc2liaWxpdHkgPSBnZXRNYXNzRWRpdFZpc2liaWxpdHkoY29udmVydGVyQ29udGV4dCwgc3RhbmRhcmRBY3Rpb25zQ29udGV4dCk7XG5cblx0cmV0dXJuIHtcblx0XHRpc1RlbXBsYXRlZDogY29tcGlsZUJpbmRpbmcoZ2V0RGVmYXVsdFRlbXBsYXRpbmcobWFzc0VkaXRWaXNpYmlsaXR5KSksXG5cdFx0dmlzaWJsZTogY29tcGlsZUJpbmRpbmcobWFzc0VkaXRWaXNpYmlsaXR5KSxcblx0XHRlbmFibGVkOiBjb21waWxlQmluZGluZyhnZXRNYXNzRWRpdEVuYWJsZW1lbnQoY29udmVydGVyQ29udGV4dCwgc3RhbmRhcmRBY3Rpb25zQ29udGV4dCwgbWFzc0VkaXRWaXNpYmlsaXR5KSlcblx0fTtcbn1cblxuLyoqXG4gKiBHZXRzIHRoZSBiaW5kaW5nIGV4cHJlc3Npb24gZm9yIHRoZSB0ZW1wbGF0aW5nIG9mIHRoZSBhY3Rpb24gQ3JlYXRlLlxuICpcbiAqIEBwYXJhbSB7U3RhbmRhcmRBY3Rpb25zQ29udGV4dH0gc3RhbmRhcmRBY3Rpb25zQ29udGV4dFxuICogQHBhcmFtIHtFeHByZXNzaW9uPGJvb2xlYW4+fSBjcmVhdGVWaXNpYmlsaXR5XG4gKiBAcGFyYW0ge2Jvb2xlYW59IGlzRm9yQ3JlYXRpb25Sb3dcbiAqIEByZXR1cm5zIHtFeHByZXNzaW9uPGJvb2xlYW4+IH1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldENyZWF0ZVRlbXBsYXRpbmcoXG5cdHN0YW5kYXJkQWN0aW9uc0NvbnRleHQ6IFN0YW5kYXJkQWN0aW9uc0NvbnRleHQsXG5cdGNyZWF0ZVZpc2liaWxpdHk6IEV4cHJlc3Npb248Ym9vbGVhbj4sXG5cdGlzRm9yQ3JlYXRpb25Sb3cgPSBmYWxzZVxuKTogRXhwcmVzc2lvbjxib29sZWFuPiB7XG5cdC8vVGVtcGxhdGluZyBvZiBDcmVhdGUgQnV0dG9uIGlzIG5vdCBkb25lOlxuXHQvLyBcdCAtIElmIEJ1dHRvbiBpcyBuZXZlciB2aXNpYmxlKGNvdmVyZWQgdGhlIEV4dGVybmFsIGNyZWF0ZSBidXR0b24sIG5ldyBBY3Rpb24pXG5cdC8vXHQgLSBvciBDcmVhdGlvbk1vZGUgaXMgb24gQ3JlYXRpb25Sb3cgZm9yIENyZWF0ZSBCdXR0b25cblx0Ly9cdCAtIG9yIENyZWF0aW9uTW9kZSBpcyBub3Qgb24gQ3JlYXRpb25Sb3cgZm9yIENyZWF0aW9uUm93IEJ1dHRvblxuXG5cdHJldHVybiBhbmQoXG5cdFx0Ly9YTk9SIGdhdGVcblx0XHRvcihcblx0XHRcdGFuZChpc0ZvckNyZWF0aW9uUm93LCBzdGFuZGFyZEFjdGlvbnNDb250ZXh0LmNyZWF0aW9uTW9kZSA9PT0gQ3JlYXRpb25Nb2RlLkNyZWF0aW9uUm93KSxcblx0XHRcdGFuZCghaXNGb3JDcmVhdGlvblJvdywgc3RhbmRhcmRBY3Rpb25zQ29udGV4dC5jcmVhdGlvbk1vZGUgIT09IENyZWF0aW9uTW9kZS5DcmVhdGlvblJvdylcblx0XHQpLFxuXHRcdG9yKG5vdChpc0NvbnN0YW50KGNyZWF0ZVZpc2liaWxpdHkpKSwgY3JlYXRlVmlzaWJpbGl0eSlcblx0KTtcbn1cblxuLyoqXG4gKiBHZXRzIHRoZSBiaW5kaW5nIGV4cHJlc3Npb24gZm9yIHRoZSB0ZW1wbGF0aW5nIG9mIHRoZSBub24tQ3JlYXRlIGFjdGlvbnMuXG4gKlxuICogQHBhcmFtIHtFeHByZXNzaW9uPGJvb2xlYW4+fSBhY3Rpb25WaXNpYmlsaXR5XG4gKiBAcmV0dXJucyB7RXhwcmVzc2lvbjxib29sZWFuPiB9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXREZWZhdWx0VGVtcGxhdGluZyhhY3Rpb25WaXNpYmlsaXR5OiBFeHByZXNzaW9uPGJvb2xlYW4+KTogRXhwcmVzc2lvbjxib29sZWFuPiB7XG5cdHJldHVybiBvcihub3QoaXNDb25zdGFudChhY3Rpb25WaXNpYmlsaXR5KSksIGFjdGlvblZpc2liaWxpdHkpO1xufVxuXG4vKipcbiAqIEdldHMgdGhlIGJpbmRpbmcgZXhwcmVzc2lvbiBmb3IgdGhlIHByb3BlcnR5IHZpc2libGUgb2YgdGhlIGFjdGlvbiBDcmVhdGUuXG4gKlxuICogQHBhcmFtIHtDb252ZXJ0ZXJDb250ZXh0fSBjb252ZXJ0ZXJDb250ZXh0XG4gKiBAcGFyYW0ge1N0YW5kYXJkQWN0aW9uc0NvbnRleHR9IHN0YW5kYXJkQWN0aW9uc0NvbnRleHRcbiAqIEBwYXJhbSB7Ym9vbGVhbn0gaXNGb3JDcmVhdGlvblJvd1xuICogQHJldHVybnMge0V4cHJlc3Npb248Ym9vbGVhbj4gfVxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0Q3JlYXRlVmlzaWJpbGl0eShcblx0Y29udmVydGVyQ29udGV4dDogQ29udmVydGVyQ29udGV4dCxcblx0c3RhbmRhcmRBY3Rpb25zQ29udGV4dDogU3RhbmRhcmRBY3Rpb25zQ29udGV4dCxcblx0aXNGb3JDcmVhdGlvblJvdyA9IGZhbHNlXG4pOiBFeHByZXNzaW9uPGJvb2xlYW4+IHtcblx0Y29uc3QgaXNJbnNlcnRhYmxlID0gc3RhbmRhcmRBY3Rpb25zQ29udGV4dC5yZXN0cmljdGlvbnMuaXNJbnNlcnRhYmxlLmV4cHJlc3Npb247XG5cdGNvbnN0IGlzQ3JlYXRlSGlkZGVuID0gaXNGb3JDcmVhdGlvblJvd1xuXHRcdD8gaXNBY3Rpb25Bbm5vdGF0ZWRIaWRkZW4oY29udmVydGVyQ29udGV4dCwgQW5ub3RhdGlvbkhpZGRlblByb3BlcnR5LkNyZWF0ZUhpZGRlbiwgZmFsc2UpXG5cdFx0OiBzdGFuZGFyZEFjdGlvbnNDb250ZXh0LmhpZGRlbkFubm90YXRpb24uY3JlYXRlO1xuXHRjb25zdCBuZXdBY3Rpb24gPSBzdGFuZGFyZEFjdGlvbnNDb250ZXh0Lm5ld0FjdGlvbjtcblx0Ly9DcmVhdGUgQnV0dG9uIGlzIHZpc2libGU6XG5cdC8vIFx0IC0gSWYgdGhlIGNyZWF0aW9uIG1vZGUgaXMgZXh0ZXJuYWxcblx0Ly8gICAgICAtIElmIHdlJ3JlIG9uIHRoZSBsaXN0IHJlcG9ydCBhbmQgY3JlYXRlIGlzIG5vdCBoaWRkZW5cblx0Ly9cdFx0LSBPdGhlcndpc2UgdGhpcyBkZXBlbmRzIG9uIHRoZSB2YWx1ZSBvZiB0aGUgdGhlIFVJLklzRWRpdGFibGVcblx0Ly9cdCAtIE90aGVyd2lzZVxuXHQvL1x0XHQtIElmIGFueSBvZiB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgaXMgdmFsaWQgdGhlbiBjcmVhdGUgYnV0dG9uIGlzbid0IHZpc2libGVcblx0Ly9cdFx0XHQtIG5vIG5ld0FjdGlvbiBhdmFpbGFibGVzXG5cdC8vXHRcdFx0LSBJdCdzIG5vdCBpbnNlcnRhYmxlIGFuZCB0aGVyZSBpcyBub3QgYSBuZXcgYWN0aW9uXG5cdC8vXHRcdFx0LSBjcmVhdGUgaXMgaGlkZGVuXG5cdC8vXHRcdFx0LSBUaGVyZSBhcmUgbXVsdGlwbGUgdmlzaWFsaXphdGlvbnNcblx0Ly9cdFx0XHQtIEl0J3MgYW4gQW5hbHl0aWNhbCBMaXN0IFBhZ2Vcblx0Ly9cdFx0XHQtIFVzZXMgSW5saW5lQ3JlYXRpb25Sb3dzIG1vZGUgYW5kIGEgUmVzcG9zaXZlIHRhYmxlIHR5cGVcblx0Ly8gICAtIE90aGVyd2lzZVxuXHQvLyBcdCBcdC0gSWYgd2UncmUgb24gdGhlIGxpc3QgcmVwb3J0IC0+XG5cdC8vIFx0IFx0XHQtIElmIFVJLkNyZWF0ZUhpZGRlbiBwb2ludHMgdG8gYSBwcm9wZXJ0eSBwYXRoIC0+IHByb3ZpZGUgYSBuZWdhdGVkIGJpbmRpbmcgdG8gdGhpcyBwYXRoXG5cdC8vIFx0IFx0XHQtIE90aGVyd2lzZSwgY3JlYXRlIGlzIHZpc2libGVcblx0Ly8gXHQgXHQtIE90aGVyd2lzZVxuXHQvLyBcdCAgXHQgLSBUaGlzIGRlcGVuZHMgb24gdGhlIHZhbHVlIG9mIHRoZSB0aGUgVUkuSXNFZGl0YWJsZVxuXHRyZXR1cm4gaWZFbHNlKFxuXHRcdHN0YW5kYXJkQWN0aW9uc0NvbnRleHQuY3JlYXRpb25Nb2RlID09PSBDcmVhdGlvbk1vZGUuRXh0ZXJuYWwsXG5cdFx0YW5kKG5vdChpc0NyZWF0ZUhpZGRlbiksIG9yKGNvbnZlcnRlckNvbnRleHQuZ2V0VGVtcGxhdGVUeXBlKCkgPT09IFRlbXBsYXRlVHlwZS5MaXN0UmVwb3J0LCBVSS5Jc0VkaXRhYmxlKSksXG5cdFx0aWZFbHNlKFxuXHRcdFx0b3IoXG5cdFx0XHRcdGFuZChpc0NvbnN0YW50KG5ld0FjdGlvbj8uYXZhaWxhYmxlKSwgZXF1YWwobmV3QWN0aW9uPy5hdmFpbGFibGUsIGZhbHNlKSksXG5cdFx0XHRcdGFuZChpc0NvbnN0YW50KGlzSW5zZXJ0YWJsZSksIGVxdWFsKGlzSW5zZXJ0YWJsZSwgZmFsc2UpLCAhbmV3QWN0aW9uKSxcblx0XHRcdFx0YW5kKGlzQ29uc3RhbnQoaXNDcmVhdGVIaWRkZW4pLCBlcXVhbChpc0NyZWF0ZUhpZGRlbiwgdHJ1ZSkpLFxuXHRcdFx0XHRzdGFuZGFyZEFjdGlvbnNDb250ZXh0LmlzVmlld1dpdGhNdWx0aXBsZVZpc3VhbGl6YXRpb25zLFxuXHRcdFx0XHRjb252ZXJ0ZXJDb250ZXh0LmdldFRlbXBsYXRlVHlwZSgpID09PSBUZW1wbGF0ZVR5cGUuQW5hbHl0aWNhbExpc3RQYWdlLFxuXHRcdFx0XHRhbmQoXG5cdFx0XHRcdFx0c3RhbmRhcmRBY3Rpb25zQ29udGV4dC5jcmVhdGlvbk1vZGUgPT09IENyZWF0aW9uTW9kZS5JbmxpbmVDcmVhdGlvblJvd3MsXG5cdFx0XHRcdFx0c3RhbmRhcmRBY3Rpb25zQ29udGV4dC50YWJsZU1hbmlmZXN0Q29uZmlndXJhdGlvbj8udHlwZSA9PT0gXCJSZXNwb25zaXZlVGFibGVcIlxuXHRcdFx0XHQpXG5cdFx0XHQpLFxuXHRcdFx0ZmFsc2UsXG5cdFx0XHRpZkVsc2UoXG5cdFx0XHRcdGNvbnZlcnRlckNvbnRleHQuZ2V0VGVtcGxhdGVUeXBlKCkgPT09IFRlbXBsYXRlVHlwZS5MaXN0UmVwb3J0LFxuXHRcdFx0XHRvcihub3QoaXNCaW5kaW5nKGlzQ3JlYXRlSGlkZGVuKSksIG5vdChpc0NyZWF0ZUhpZGRlbikpLFxuXHRcdFx0XHRhbmQobm90KGlzQ3JlYXRlSGlkZGVuKSwgVUkuSXNFZGl0YWJsZSlcblx0XHRcdClcblx0XHQpXG5cdCk7XG59XG5cbi8qKlxuICogR2V0cyB0aGUgYmluZGluZyBleHByZXNzaW9uIGZvciB0aGUgcHJvcGVydHkgdmlzaWJsZSBvZiB0aGUgYWN0aW9uIERlbGV0ZS5cbiAqXG4gKiBAcGFyYW0ge0NvbnZlcnRlckNvbnRleHR9IGNvbnZlcnRlckNvbnRleHRcbiAqIEBwYXJhbSB7U3RhbmRhcmRBY3Rpb25zQ29udGV4dH0gc3RhbmRhcmRBY3Rpb25zQ29udGV4dFxuICogQHJldHVybnMge0V4cHJlc3Npb248Ym9vbGVhbj4gfVxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0RGVsZXRlVmlzaWJpbGl0eShcblx0Y29udmVydGVyQ29udGV4dDogQ29udmVydGVyQ29udGV4dCxcblx0c3RhbmRhcmRBY3Rpb25zQ29udGV4dDogU3RhbmRhcmRBY3Rpb25zQ29udGV4dFxuKTogRXhwcmVzc2lvbjxib29sZWFuPiB7XG5cdGNvbnN0IGlzRGVsZXRlSGlkZGVuID0gc3RhbmRhcmRBY3Rpb25zQ29udGV4dC5oaWRkZW5Bbm5vdGF0aW9uLmRlbGV0ZTtcblx0Y29uc3QgcGF0aERlbGV0YWJsZUV4cHJlc3Npb24gPSBzdGFuZGFyZEFjdGlvbnNDb250ZXh0LnJlc3RyaWN0aW9ucy5pc0RlbGV0YWJsZS5leHByZXNzaW9uO1xuXG5cdC8vRGVsZXRlIEJ1dHRvbiBpcyB2aXNpYmxlOlxuXHQvLyBcdCBQcmVyZXF1aXNpdGVzOlxuXHQvL1x0IC0gSWYgd2UncmUgbm90IG9uIG11bHRpcGxlIHZpc3VhbGl6YXRpb25zIGNvbmZpZ3VyYXRpb24gb3IgQUxQXG5cdC8vXG5cdC8vICAgLSBJZiByZXN0cmljdGlvbnMgb24gZGVsZXRhYmxlIHNldCB0byBmYWxzZSAtPiBub3QgdmlzaWJsZVxuXHQvLyAgIC0gT3RoZXJ3aXNlXG5cdC8vXHRcdFx0LSBJZiBVSS5EZWxldGVIaWRkZW4gaXMgdHJ1ZSAtPiBub3QgdmlzaWJsZVxuXHQvL1x0XHRcdC0gT3RoZXJ3aXNlXG5cdC8vIFx0IFx0XHRcdC0gSWYgd2UncmUgb24gT1AgLT4gZGVwZW5kaW5nIGlmIFVJIGlzIGVkaXRhYmxlIGFuZCByZXN0cmljdGlvbnMgb24gZGVsZXRhYmxlXG5cdC8vXHRcdFx0XHQtIE90aGVyd2lzZVxuXHQvL1x0XHRcdFx0IFx0LSBJZiBVSS5EZWxldGVIaWRkZW4gcG9pbnRzIHRvIGEgcHJvcGVydHkgcGF0aCAtPiBwcm92aWRlIGEgbmVnYXRlZCBiaW5kaW5nIHRvIHRoaXMgcGF0aFxuXHQvL1x0IFx0IFx0XHQgXHQtIE90aGVyd2lzZSwgZGVsZXRlIGlzIHZpc2libGVcblxuXHRyZXR1cm4gaWZFbHNlKFxuXHRcdG9yKHN0YW5kYXJkQWN0aW9uc0NvbnRleHQuaXNWaWV3V2l0aE11bHRpcGxlVmlzdWFsaXphdGlvbnMsIGNvbnZlcnRlckNvbnRleHQuZ2V0VGVtcGxhdGVUeXBlKCkgPT09IFRlbXBsYXRlVHlwZS5BbmFseXRpY2FsTGlzdFBhZ2UpLFxuXHRcdGZhbHNlLFxuXHRcdGlmRWxzZShcblx0XHRcdGFuZChpc0NvbnN0YW50KHBhdGhEZWxldGFibGVFeHByZXNzaW9uKSwgZXF1YWwocGF0aERlbGV0YWJsZUV4cHJlc3Npb24sIGZhbHNlKSksXG5cdFx0XHRmYWxzZSxcblx0XHRcdGlmRWxzZShcblx0XHRcdFx0YW5kKGlzQ29uc3RhbnQoaXNEZWxldGVIaWRkZW4pLCBlcXVhbChpc0RlbGV0ZUhpZGRlbiwgY29uc3RhbnQodHJ1ZSkpKSxcblx0XHRcdFx0ZmFsc2UsXG5cdFx0XHRcdGlmRWxzZShcblx0XHRcdFx0XHRjb252ZXJ0ZXJDb250ZXh0LmdldFRlbXBsYXRlVHlwZSgpICE9PSBUZW1wbGF0ZVR5cGUuTGlzdFJlcG9ydCxcblx0XHRcdFx0XHRhbmQobm90KGlzRGVsZXRlSGlkZGVuKSwgVUkuSXNFZGl0YWJsZSksXG5cdFx0XHRcdFx0bm90KGFuZChpc0JpbmRpbmcoaXNEZWxldGVIaWRkZW4pLCBpc0RlbGV0ZUhpZGRlbikpXG5cdFx0XHRcdClcblx0XHRcdClcblx0XHQpXG5cdCk7XG59XG5cbi8qKlxuICogR2V0cyB0aGUgYmluZGluZyBleHByZXNzaW9uIGZvciB0aGUgcHJvcGVydHkgdmlzaWJsZSBvZiB0aGUgYWN0aW9uIFBhc3RlLlxuICpcbiAqIEBwYXJhbSB7Q29udmVydGVyQ29udGV4dH0gY29udmVydGVyQ29udGV4dFxuICogQHBhcmFtIHtTdGFuZGFyZEFjdGlvbnNDb250ZXh0fSBzdGFuZGFyZEFjdGlvbnNDb250ZXh0XG4gKiBAcGFyYW0ge0V4cHJlc3Npb248Ym9vbGVhbj59IGNyZWF0ZVZpc2liaWxpdHlcbiAqIEBwYXJhbSB7Ym9vbGVhbn0gaXNJbnNlcnRVcGRhdGVBY3Rpb25zVGVtcGxhdGVkXG4gKiBAcmV0dXJucyB7RXhwcmVzc2lvbjxib29sZWFuPiB9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRQYXN0ZVZpc2liaWxpdHkoXG5cdGNvbnZlcnRlckNvbnRleHQ6IENvbnZlcnRlckNvbnRleHQsXG5cdHN0YW5kYXJkQWN0aW9uc0NvbnRleHQ6IFN0YW5kYXJkQWN0aW9uc0NvbnRleHQsXG5cdGNyZWF0ZVZpc2liaWxpdHk6IEV4cHJlc3Npb248Ym9vbGVhbj4sXG5cdGlzSW5zZXJ0VXBkYXRlQWN0aW9uc1RlbXBsYXRlZDogYm9vbGVhblxuKTogRXhwcmVzc2lvbjxib29sZWFuPiB7XG5cdC8vIElmIENyZWF0ZSBpcyB2aXNpYmxlLCBlbmFibGVQYXN0ZSBpcyBub3QgZGlzYWJsZWQgaW50byBtYW5pZmVzdCBhbmQgd2UgYXJlIG9uIE9QL2Jsb2NrcyBvdXRzaWRlIEZpb3JpIGVsZW1lbnRzIHRlbXBsYXRlc1xuXHQvLyBUaGVuIGJ1dHRvbiB3aWxsIGJlIHZpc2libGUgYWNjb3JkaW5nIHRvIGluc2VydGFibGUgcmVzdHJpY3Rpb25zIGFuZCBjcmVhdGUgdmlzaWJpbGl0eVxuXHQvLyBPdGhlcndpc2UgaXQncyBub3QgdmlzaWJsZVxuXHRyZXR1cm4gYW5kKFxuXHRcdG5vdEVxdWFsKHN0YW5kYXJkQWN0aW9uc0NvbnRleHQudGFibGVNYW5pZmVzdENvbmZpZ3VyYXRpb24uZW5hYmxlUGFzdGUsIGZhbHNlKSxcblx0XHRjcmVhdGVWaXNpYmlsaXR5LFxuXHRcdGlzSW5zZXJ0VXBkYXRlQWN0aW9uc1RlbXBsYXRlZCxcblx0XHRbVGVtcGxhdGVUeXBlLkxpc3RSZXBvcnQsIFRlbXBsYXRlVHlwZS5BbmFseXRpY2FsTGlzdFBhZ2VdLmluZGV4T2YoY29udmVydGVyQ29udGV4dC5nZXRUZW1wbGF0ZVR5cGUoKSkgPT09IC0xLFxuXHRcdHN0YW5kYXJkQWN0aW9uc0NvbnRleHQucmVzdHJpY3Rpb25zLmlzSW5zZXJ0YWJsZS5leHByZXNzaW9uXG5cdCk7XG59XG5cbi8qKlxuICogR2V0cyB0aGUgYmluZGluZyBleHByZXNzaW9uIGZvciB0aGUgcHJvcGVydHkgdmlzaWJsZSBvZiB0aGUgYWN0aW9uIE1hc3NFZGl0LlxuICpcbiAqIEBwYXJhbSB7Q29udmVydGVyQ29udGV4dH0gY29udmVydGVyQ29udGV4dFxuICogQHBhcmFtIHtTdGFuZGFyZEFjdGlvbnNDb250ZXh0fSBzdGFuZGFyZEFjdGlvbnNDb250ZXh0XG4gKiBAcmV0dXJucyB7RXhwcmVzc2lvbjxib29sZWFuPiB9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRNYXNzRWRpdFZpc2liaWxpdHkoXG5cdGNvbnZlcnRlckNvbnRleHQ6IENvbnZlcnRlckNvbnRleHQsXG5cdHN0YW5kYXJkQWN0aW9uc0NvbnRleHQ6IFN0YW5kYXJkQWN0aW9uc0NvbnRleHRcbik6IEV4cHJlc3Npb248Ym9vbGVhbj4ge1xuXHRjb25zdCBpc1VwZGF0ZUhpZGRlbiA9IHN0YW5kYXJkQWN0aW9uc0NvbnRleHQuaGlkZGVuQW5ub3RhdGlvbi51cGRhdGUsXG5cdFx0cGF0aFVwZGF0YWJsZUV4cHJlc3Npb24gPSBzdGFuZGFyZEFjdGlvbnNDb250ZXh0LnJlc3RyaWN0aW9ucy5pc1VwZGF0YWJsZS5leHByZXNzaW9uLFxuXHRcdGJNYXNzRWRpdEVuYWJsZWRJbk1hbmlmZXN0OiBib29sZWFuID0gc3RhbmRhcmRBY3Rpb25zQ29udGV4dC50YWJsZU1hbmlmZXN0Q29uZmlndXJhdGlvbj8uZW5hYmxlTWFzc0VkaXQgfHwgZmFsc2U7XG5cdGNvbnN0IHRlbXBsYXRlQmluZGluZ0V4cHJlc3Npb24gPVxuXHRcdGNvbnZlcnRlckNvbnRleHQuZ2V0VGVtcGxhdGVUeXBlKCkgPT09IFRlbXBsYXRlVHlwZS5PYmplY3RQYWdlXG5cdFx0XHQ/IFVJLklzRWRpdGFibGVcblx0XHRcdDogY29udmVydGVyQ29udGV4dC5nZXRUZW1wbGF0ZVR5cGUoKSA9PT0gVGVtcGxhdGVUeXBlLkxpc3RSZXBvcnQ7XG5cdC8vTWFzc0VkaXQgaXMgdmlzaWJsZVxuXHQvLyBJZlxuXHQvL1x0XHQtIHRoZXJlIGlzIG5vIHN0YXRpYyByZXN0cmljdGlvbnMgc2V0IHRvIGZhbHNlXG5cdC8vXHRcdC0gYW5kIGVuYWJsZU1hc3NFZGl0IGlzIG5vdCBzZXQgdG8gZmFsc2UgaW50byB0aGUgbWFuaWZlc3Rcblx0Ly9cdFx0LSBhbmQgdGhlIHNlbGVjdGlvbk1vZGUgaXMgcmVsZXZhbnRcblx0Ly9cdFRoZW4gTWFzc0VkaXQgaXMgYWx3YXlzIHZpc2libGUgaW4gTFIgb3IgZHluYW1pY2FsbHkgdmlzaWJsZSBpbiBPUCBhY2NvcmRpbmcgdG8gdWk+RWRpdGFibGUgYW5kIGhpZGRlbkFubm90YXRpb25cblx0Ly8gIEJ1dHRvbiBpcyBoaWRkZW4gZm9yIGFsbCBvdGhlciBjYXNlc1xuXHRyZXR1cm4gYW5kKFxuXHRcdG5vdChhbmQoaXNDb25zdGFudChwYXRoVXBkYXRhYmxlRXhwcmVzc2lvbiksIGVxdWFsKHBhdGhVcGRhdGFibGVFeHByZXNzaW9uLCBmYWxzZSkpKSxcblx0XHRiTWFzc0VkaXRFbmFibGVkSW5NYW5pZmVzdCxcblx0XHR0ZW1wbGF0ZUJpbmRpbmdFeHByZXNzaW9uLFxuXHRcdG5vdChpc1VwZGF0ZUhpZGRlbilcblx0KTtcbn1cblxuLyoqXG4gKiBHZXRzIHRoZSBiaW5kaW5nIGV4cHJlc3Npb24gZm9yIHRoZSBwcm9wZXJ0eSBlbmFibGVkIG9mIHRoZSBjcmVhdGlvblJvdy5cbiAqXG4gKiBAcGFyYW0ge0NvbnZlcnRlckNvbnRleHR9IGNvbnZlcnRlckNvbnRleHRcbiAqIEBwYXJhbSB7U3RhbmRhcmRBY3Rpb25zQ29udGV4dH0gc3RhbmRhcmRBY3Rpb25zQ29udGV4dFxuICogQHBhcmFtIHtFeHByZXNzaW9uPGJvb2xlYW4+fSBjcmVhdGlvblJvd1Zpc2liaWxpdHlcbiAqIEByZXR1cm5zIHtFeHByZXNzaW9uPGJvb2xlYW4+IH1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldENyZWF0aW9uUm93RW5hYmxlbWVudChcblx0Y29udmVydGVyQ29udGV4dDogQ29udmVydGVyQ29udGV4dCxcblx0c3RhbmRhcmRBY3Rpb25zQ29udGV4dDogU3RhbmRhcmRBY3Rpb25zQ29udGV4dCxcblx0Y3JlYXRpb25Sb3dWaXNpYmlsaXR5OiBFeHByZXNzaW9uPGJvb2xlYW4+XG4pOiBFeHByZXNzaW9uPGJvb2xlYW4+IHtcblx0Y29uc3QgcmVzdHJpY3Rpb25zSW5zZXJ0YWJsZSA9IGlzUGF0aEluc2VydGFibGUoY29udmVydGVyQ29udGV4dC5nZXREYXRhTW9kZWxPYmplY3RQYXRoKCksIHtcblx0XHRpZ25vcmVUYXJnZXRDb2xsZWN0aW9uOiB0cnVlLFxuXHRcdGF1dGhvcml6ZVVucmVzb2x2YWJsZTogdHJ1ZSxcblx0XHRwYXRoVmlzaXRvcjogKHBhdGg6IHN0cmluZywgbmF2aWdhdGlvblBhdGhzOiBzdHJpbmdbXSkgPT4ge1xuXHRcdFx0aWYgKHBhdGguaW5kZXhPZihcIi9cIikgPT09IDApIHtcblx0XHRcdFx0cGF0aCA9IHNpbmdsZXRvblBhdGhWaXNpdG9yKHBhdGgsIGNvbnZlcnRlckNvbnRleHQuZ2V0Q29udmVydGVkVHlwZXMoKSwgbmF2aWdhdGlvblBhdGhzKTtcblx0XHRcdFx0cmV0dXJuIHBhdGg7XG5cdFx0XHR9XG5cdFx0XHRjb25zdCBuYXZpZ2F0aW9uUHJvcGVydGllcyA9IGNvbnZlcnRlckNvbnRleHQuZ2V0RGF0YU1vZGVsT2JqZWN0UGF0aCgpLm5hdmlnYXRpb25Qcm9wZXJ0aWVzO1xuXHRcdFx0aWYgKG5hdmlnYXRpb25Qcm9wZXJ0aWVzKSB7XG5cdFx0XHRcdGNvbnN0IHBhcnRuZXIgPSBuYXZpZ2F0aW9uUHJvcGVydGllc1tuYXZpZ2F0aW9uUHJvcGVydGllcy5sZW5ndGggLSAxXS5wYXJ0bmVyO1xuXHRcdFx0XHRpZiAocGFydG5lcikge1xuXHRcdFx0XHRcdHBhdGggPSBgJHtwYXJ0bmVyfS8ke3BhdGh9YDtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdFx0cmV0dXJuIHBhdGg7XG5cdFx0fVxuXHR9KTtcblx0Y29uc3QgaXNJbnNlcnRhYmxlID1cblx0XHRyZXN0cmljdGlvbnNJbnNlcnRhYmxlLl90eXBlID09PSBcIlVucmVzb2x2YWJsZVwiXG5cdFx0XHQ/IGlzUGF0aEluc2VydGFibGUoY29udmVydGVyQ29udGV4dC5nZXREYXRhTW9kZWxPYmplY3RQYXRoKCksIHtcblx0XHRcdFx0XHRwYXRoVmlzaXRvcjogKHBhdGg6IHN0cmluZykgPT4gc2luZ2xldG9uUGF0aFZpc2l0b3IocGF0aCwgY29udmVydGVyQ29udGV4dC5nZXRDb252ZXJ0ZWRUeXBlcygpLCBbXSlcblx0XHRcdCAgfSlcblx0XHRcdDogcmVzdHJpY3Rpb25zSW5zZXJ0YWJsZTtcblxuXHRyZXR1cm4gYW5kKFxuXHRcdGNyZWF0aW9uUm93VmlzaWJpbGl0eSxcblx0XHRpc0luc2VydGFibGUsXG5cdFx0b3IoXG5cdFx0XHQhc3RhbmRhcmRBY3Rpb25zQ29udGV4dC50YWJsZU1hbmlmZXN0Q29uZmlndXJhdGlvbi5kaXNhYmxlQWRkUm93QnV0dG9uRm9yRW1wdHlEYXRhLFxuXHRcdFx0Zm9ybWF0UmVzdWx0KFtiaW5kaW5nRXhwcmVzc2lvbihcImNyZWF0aW9uUm93RmllbGRWYWxpZGl0eVwiLCBcImludGVybmFsXCIpXSwgdGFibGVGb3JtYXR0ZXJzLnZhbGlkYXRlQ3JlYXRpb25Sb3dGaWVsZHMpXG5cdFx0KVxuXHQpO1xufVxuXG4vKipcbiAqIEdldHMgdGhlIGJpbmRpbmcgZXhwcmVzc2lvbiBmb3IgdGhlIHByb3BlcnR5IGVuYWJsZWQgb2YgdGhlIGFjdGlvbiBDcmVhdGUuXG4gKlxuICogQHBhcmFtIHtDb252ZXJ0ZXJDb250ZXh0fSBjb252ZXJ0ZXJDb250ZXh0XG4gKiBAcGFyYW0ge1N0YW5kYXJkQWN0aW9uc0NvbnRleHR9IHN0YW5kYXJkQWN0aW9uc0NvbnRleHRcbiAqIEBwYXJhbSB7RXhwcmVzc2lvbjxib29sZWFuPn0gY3JlYXRlVmlzaWJpbGl0eVxuICogQHJldHVybnMge0V4cHJlc3Npb248Ym9vbGVhbj4gfVxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0Q3JlYXRlRW5hYmxlbWVudChcblx0Y29udmVydGVyQ29udGV4dDogQ29udmVydGVyQ29udGV4dCxcblx0c3RhbmRhcmRBY3Rpb25zQ29udGV4dDogU3RhbmRhcmRBY3Rpb25zQ29udGV4dCxcblx0Y3JlYXRlVmlzaWJpbGl0eTogRXhwcmVzc2lvbjxib29sZWFuPlxuKTogRXhwcmVzc2lvbjxib29sZWFuPiB7XG5cdGNvbnN0IGlzSW5zZXJ0YWJsZSA9IHN0YW5kYXJkQWN0aW9uc0NvbnRleHQucmVzdHJpY3Rpb25zLmlzSW5zZXJ0YWJsZS5leHByZXNzaW9uO1xuXHRjb25zdCBDb2xsZWN0aW9uVHlwZSA9IGNvbnZlcnRlckNvbnRleHQucmVzb2x2ZUFic29sdXRlUGF0aDxhbnk+KHN0YW5kYXJkQWN0aW9uc0NvbnRleHQuY29sbGVjdGlvblBhdGgpLnRhcmdldD8uX3R5cGU7XG5cdHJldHVybiBhbmQoXG5cdFx0Y3JlYXRlVmlzaWJpbGl0eSxcblx0XHRvcihcblx0XHRcdENvbGxlY3Rpb25UeXBlID09PSBcIkVudGl0eVNldFwiLFxuXHRcdFx0YW5kKGlzSW5zZXJ0YWJsZSwgb3IoY29udmVydGVyQ29udGV4dC5nZXRUZW1wbGF0ZVR5cGUoKSAhPT0gVGVtcGxhdGVUeXBlLk9iamVjdFBhZ2UsIFVJLklzRWRpdGFibGUpKVxuXHRcdClcblx0KTtcbn1cblxuLyoqXG4gKiBHZXRzIHRoZSBiaW5kaW5nIGV4cHJlc3Npb24gZm9yIHRoZSBwcm9wZXJ0eSBlbmFibGVkIG9mIHRoZSBhY3Rpb24gRGVsZXRlLlxuICpcbiAqIEBwYXJhbSB7Q29udmVydGVyQ29udGV4dH0gY29udmVydGVyQ29udGV4dFxuICogQHBhcmFtIHtTdGFuZGFyZEFjdGlvbnNDb250ZXh0fSBzdGFuZGFyZEFjdGlvbnNDb250ZXh0XG4gKiBAcGFyYW0ge0V4cHJlc3Npb248Ym9vbGVhbj59IGRlbGV0ZVZpc2liaWxpdHlcbiAqIEByZXR1cm5zIHtFeHByZXNzaW9uPGJvb2xlYW4+IH1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldERlbGV0ZUVuYWJsZW1lbnQoXG5cdGNvbnZlcnRlckNvbnRleHQ6IENvbnZlcnRlckNvbnRleHQsXG5cdHN0YW5kYXJkQWN0aW9uc0NvbnRleHQ6IFN0YW5kYXJkQWN0aW9uc0NvbnRleHQsXG5cdGRlbGV0ZVZpc2liaWxpdHk6IEV4cHJlc3Npb248Ym9vbGVhbj5cbik6IEV4cHJlc3Npb248Ym9vbGVhbj4ge1xuXHRjb25zdCBpc0RlbGV0YWJsZSA9IHN0YW5kYXJkQWN0aW9uc0NvbnRleHQucmVzdHJpY3Rpb25zLmlzRGVsZXRhYmxlLmV4cHJlc3Npb247XG5cdGNvbnN0IGlzT25seUR5bmFtaWNPbkN1cnJlbnRFbnRpdHkgPVxuXHRcdCFpc0NvbnN0YW50KGlzRGVsZXRhYmxlKSAmJiBzdGFuZGFyZEFjdGlvbnNDb250ZXh0LnJlc3RyaWN0aW9ucy5pc0RlbGV0YWJsZS5uYXZpZ2F0aW9uRXhwcmVzc2lvbi5fdHlwZSA9PT0gXCJVbnJlc29sdmFibGVcIjtcblx0Y29uc3QgbnVtYmVyT2ZTZWxlY3RlZENvbnRleHRzID0gYmluZGluZ0V4cHJlc3Npb24oXCJudW1iZXJPZlNlbGVjdGVkQ29udGV4dHNcIiwgXCJpbnRlcm5hbFwiKTtcblx0Y29uc3QgbnVtYmVyT2ZEZWxldGFibGVDb250ZXh0cyA9IGJpbmRpbmdFeHByZXNzaW9uKFwiZGVsZXRhYmxlQ29udGV4dHNcIiwgXCJpbnRlcm5hbFwiKTtcblx0Y29uc3QgbnVtYmVyT2ZVblNhdmVkQ29udGV4dHMgPSBiaW5kaW5nRXhwcmVzc2lvbihcInVuU2F2ZWRDb250ZXh0c1wiLCBcImludGVybmFsXCIpO1xuXG5cdHJldHVybiBhbmQoXG5cdFx0ZGVsZXRlVmlzaWJpbGl0eSxcblx0XHRpZkVsc2UoXG5cdFx0XHRvcihjb252ZXJ0ZXJDb250ZXh0LmdldFRlbXBsYXRlVHlwZSgpICE9PSBUZW1wbGF0ZVR5cGUuT2JqZWN0UGFnZSwgaXNPbmx5RHluYW1pY09uQ3VycmVudEVudGl0eSksXG5cdFx0XHRhbmQoXG5cdFx0XHRcdG9yKFxuXHRcdFx0XHRcdGFuZChub3RFcXVhbChudW1iZXJPZkRlbGV0YWJsZUNvbnRleHRzLCB1bmRlZmluZWQpLCBncmVhdGVyVGhhbihsZW5ndGgobnVtYmVyT2ZEZWxldGFibGVDb250ZXh0cyksIDApKSxcblx0XHRcdFx0XHRhbmQobm90RXF1YWwobnVtYmVyT2ZVblNhdmVkQ29udGV4dHMsIHVuZGVmaW5lZCksIGdyZWF0ZXJUaGFuKGxlbmd0aChudW1iZXJPZlVuU2F2ZWRDb250ZXh0cyksIDApKVxuXHRcdFx0XHQpLFxuXHRcdFx0XHRiaW5kaW5nRXhwcmVzc2lvbihcImRlbGV0ZUVuYWJsZWRcIiwgXCJpbnRlcm5hbFwiKVxuXHRcdFx0KSxcblx0XHRcdGFuZChub3RFcXVhbChudW1iZXJPZlNlbGVjdGVkQ29udGV4dHMsIDApLCBpc0RlbGV0YWJsZSlcblx0XHQpXG5cdCk7XG59XG5cbi8qKlxuICogR2V0cyB0aGUgYmluZGluZyBleHByZXNzaW9uIGZvciB0aGUgcHJvcGVydHkgZW5hYmxlZCBvZiB0aGUgYWN0aW9uIFBhc3RlLlxuICpcbiAqIEBwYXJhbSB7RXhwcmVzc2lvbjxib29sZWFuPn0gcGFzdGVWaXNpYmlsaXR5XG4gKiBAcGFyYW0ge0V4cHJlc3Npb248Ym9vbGVhbj59IGNyZWF0ZUVuYWJsZW1lbnRcbiAqIEByZXR1cm5zIHtFeHByZXNzaW9uPGJvb2xlYW4+IH1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFBhc3RlRW5hYmxlbWVudChwYXN0ZVZpc2liaWxpdHk6IEV4cHJlc3Npb248Ym9vbGVhbj4sIGNyZWF0ZUVuYWJsZW1lbnQ6IEV4cHJlc3Npb248Ym9vbGVhbj4pOiBFeHByZXNzaW9uPGJvb2xlYW4+IHtcblx0cmV0dXJuIGFuZChwYXN0ZVZpc2liaWxpdHksIGNyZWF0ZUVuYWJsZW1lbnQpO1xufVxuXG4vKipcbiAqIEdldHMgdGhlIGJpbmRpbmcgZXhwcmVzc2lvbiBmb3IgdGhlIHByb3BlcnR5IGVuYWJsZWQgb2YgdGhlIGFjdGlvbiBNYXNzRWRpdC5cbiAqXG4gKiBAcGFyYW0ge0NvbnZlcnRlckNvbnRleHR9IGNvbnZlcnRlckNvbnRleHRcbiAqIEBwYXJhbSB7U3RhbmRhcmRBY3Rpb25zQ29udGV4dH0gc3RhbmRhcmRBY3Rpb25zQ29udGV4dFxuICogQHBhcmFtIHtFeHByZXNzaW9uPGJvb2xlYW4+fSBtYXNzRWRpdFZpc2liaWxpdHlcbiAqIEByZXR1cm5zIHtFeHByZXNzaW9uPGJvb2xlYW4+IH1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldE1hc3NFZGl0RW5hYmxlbWVudChcblx0Y29udmVydGVyQ29udGV4dDogQ29udmVydGVyQ29udGV4dCxcblx0c3RhbmRhcmRBY3Rpb25zQ29udGV4dDogU3RhbmRhcmRBY3Rpb25zQ29udGV4dCxcblx0bWFzc0VkaXRWaXNpYmlsaXR5OiBFeHByZXNzaW9uPGJvb2xlYW4+XG4pOiBFeHByZXNzaW9uPGJvb2xlYW4+IHtcblx0Y29uc3QgcGF0aFVwZGF0YWJsZUV4cHJlc3Npb24gPSBzdGFuZGFyZEFjdGlvbnNDb250ZXh0LnJlc3RyaWN0aW9ucy5pc1VwZGF0YWJsZS5leHByZXNzaW9uO1xuXHRjb25zdCBpc09ubHlEeW5hbWljT25DdXJyZW50RW50aXR5OiBhbnkgPVxuXHRcdCFpc0NvbnN0YW50KHBhdGhVcGRhdGFibGVFeHByZXNzaW9uKSAmJlxuXHRcdHN0YW5kYXJkQWN0aW9uc0NvbnRleHQucmVzdHJpY3Rpb25zLmlzVXBkYXRhYmxlLm5hdmlnYXRpb25FeHByZXNzaW9uLl90eXBlID09PSBcIlVucmVzb2x2YWJsZVwiO1xuXHRjb25zdCBudW1iZXJPZlNlbGVjdGVkQ29udGV4dHMgPSBncmVhdGVyT3JFcXVhbChiaW5kaW5nRXhwcmVzc2lvbihcIm51bWJlck9mU2VsZWN0ZWRDb250ZXh0c1wiLCBcImludGVybmFsXCIpLCAxKTtcblx0Y29uc3QgbnVtYmVyT2ZVcGRhdGFibGVDb250ZXh0cyA9IGdyZWF0ZXJPckVxdWFsKGxlbmd0aChiaW5kaW5nRXhwcmVzc2lvbihcInVwZGF0YWJsZUNvbnRleHRzXCIsIFwiaW50ZXJuYWxcIikpLCAxKTtcblx0Y29uc3QgYklzRHJhZnRTdXBwb3J0ZWQgPSBpc0RyYWZ0U3VwcG9ydGVkKGNvbnZlcnRlckNvbnRleHQpO1xuXHRjb25zdCBiRGlzcGxheU1vZGUgPSBpc0luRGlzcGxheU1vZGUoY29udmVydGVyQ29udGV4dCk7XG5cblx0Ly8gbnVtYmVyT2ZVcGRhdGFibGVDb250ZXh0cyBuZWVkcyB0byBiZSBhZGRlZCB0byB0aGUgYmluZGluZyBpbiBjYXNlXG5cdC8vIDEuIFVwZGF0ZSBpcyBkZXBlbmRlbnQgb24gY3VycmVudCBlbnRpdHkgcHJvcGVydHkgKGlzT25seUR5bmFtaWNPbkN1cnJlbnRFbnRpdHkgaXMgdHJ1ZSkuXG5cdC8vIDIuIFRoZSB0YWJsZSBpcyByZWFkIG9ubHkgYW5kIGRyYWZ0IGVuYWJsZWQobGlrZSBMUiksIGluIHRoaXMgY2FzZSBvbmx5IGFjdGl2ZSBjb250ZXh0cyBjYW4gYmUgbWFzcyBlZGl0ZWQuXG5cdC8vICAgIFNvLCB1cGRhdGUgZGVwZW5kcyBvbiAnSXNBY3RpdmVFbnRpdHknIHZhbHVlIHdoaWNoIG5lZWRzIHRvIGJlIGNoZWNrZWQgcnVudGltZS5cblx0Y29uc3QgcnVudGltZUJpbmRpbmcgPSBpZkVsc2UoXG5cdFx0b3IoYW5kKGJEaXNwbGF5TW9kZSwgYklzRHJhZnRTdXBwb3J0ZWQpLCBpc09ubHlEeW5hbWljT25DdXJyZW50RW50aXR5KSxcblx0XHRhbmQobnVtYmVyT2ZTZWxlY3RlZENvbnRleHRzLCBudW1iZXJPZlVwZGF0YWJsZUNvbnRleHRzKSxcblx0XHRhbmQobnVtYmVyT2ZTZWxlY3RlZENvbnRleHRzKVxuXHQpO1xuXG5cdHJldHVybiBhbmQobWFzc0VkaXRWaXNpYmlsaXR5LCBpZkVsc2UoaXNPbmx5RHluYW1pY09uQ3VycmVudEVudGl0eSwgcnVudGltZUJpbmRpbmcsIGFuZChydW50aW1lQmluZGluZywgcGF0aFVwZGF0YWJsZUV4cHJlc3Npb24pKSk7XG59XG5cbi8qKlxuICogVGVsbHMgaWYgdGhlIHRhYmxlIGluIHRlbXBsYXRlIGlzIGluIGRpc3BsYXkgbW9kZS5cbiAqXG4gKiBAcGFyYW0ge0NvbnZlcnRlckNvbnRleHR9IGNvbnZlcnRlckNvbnRleHRcbiAqIEBwYXJhbSB7Vmlld1BhdGhDb25maWd1cmF0aW9ufSB2aWV3Q29uZmlndXJhdGlvblxuICogQHJldHVybnMge2Jvb2xlYW59XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc0luRGlzcGxheU1vZGUoY29udmVydGVyQ29udGV4dDogQ29udmVydGVyQ29udGV4dCwgdmlld0NvbmZpZ3VyYXRpb24/OiBWaWV3UGF0aENvbmZpZ3VyYXRpb24pOiBib29sZWFuIHtcblx0Y29uc3QgdGVtcGxhdGVUeXBlID0gY29udmVydGVyQ29udGV4dC5nZXRUZW1wbGF0ZVR5cGUoKTtcblx0aWYgKFxuXHRcdHRlbXBsYXRlVHlwZSA9PT0gVGVtcGxhdGVUeXBlLkxpc3RSZXBvcnQgfHxcblx0XHR0ZW1wbGF0ZVR5cGUgPT09IFRlbXBsYXRlVHlwZS5BbmFseXRpY2FsTGlzdFBhZ2UgfHxcblx0XHQodmlld0NvbmZpZ3VyYXRpb24gJiYgY29udmVydGVyQ29udGV4dC5nZXRNYW5pZmVzdFdyYXBwZXIoKS5oYXNNdWx0aXBsZVZpc3VhbGl6YXRpb25zKHZpZXdDb25maWd1cmF0aW9uKSlcblx0KSB7XG5cdFx0cmV0dXJuIHRydWU7XG5cdH1cblx0Ly8gdXBkYXRhYmxlIHdpbGwgYmUgaGFuZGxlZCBhdCB0aGUgcHJvcGVydHkgbGV2ZWxcblx0cmV0dXJuIGZhbHNlO1xufVxuIl19
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import
|
|
1
|
+
import { PropertyAnnotationValue } from "@sap-ux/vocabularies-types";
|
|
2
|
+
import tableFormatters from "sap/fe/core/formatters/TableFormatter";
|
|
2
3
|
import {
|
|
3
4
|
and,
|
|
4
5
|
annotationExpression,
|
|
@@ -7,24 +8,23 @@ import {
|
|
|
7
8
|
compileBinding,
|
|
8
9
|
constant,
|
|
9
10
|
equal,
|
|
10
|
-
length,
|
|
11
11
|
Expression,
|
|
12
|
+
formatResult,
|
|
12
13
|
greaterOrEqual,
|
|
14
|
+
greaterThan,
|
|
13
15
|
ifElse,
|
|
14
16
|
isBinding,
|
|
15
17
|
isConstant,
|
|
18
|
+
length,
|
|
16
19
|
not,
|
|
17
20
|
notEqual,
|
|
18
|
-
or
|
|
19
|
-
greaterThan,
|
|
20
|
-
formatResult
|
|
21
|
+
or
|
|
21
22
|
} from "sap/fe/core/helpers/BindingExpression";
|
|
22
|
-
import { CreationMode, TemplateType, ViewPathConfiguration } from "../../../ManifestSettings";
|
|
23
|
-
import { singletonPathVisitor, UI } from "../../../helpers/BindingHelper";
|
|
24
|
-
import { PropertyAnnotationValue } from "@sap-ux/vocabularies-types";
|
|
25
23
|
import { getTargetObjectPath, isPathDeletable, isPathInsertable, isPathUpdatable } from "sap/fe/core/templating/DataModelPathHelper";
|
|
24
|
+
import ConverterContext from "../../../ConverterContext";
|
|
25
|
+
import { singletonPathVisitor, UI } from "../../../helpers/BindingHelper";
|
|
26
|
+
import { CreationMode, TemplateType, ViewPathConfiguration } from "../../../ManifestSettings";
|
|
26
27
|
import { TableControlConfiguration } from "../Table";
|
|
27
|
-
import tableFormatters from "sap/fe/core/formatters/TableFormatter";
|
|
28
28
|
|
|
29
29
|
enum AnnotationHiddenProperty {
|
|
30
30
|
CreateHidden = "CreateHidden",
|
|
@@ -207,7 +207,7 @@ export function getRestrictions(converterContext: ConverterContext): StandardAct
|
|
|
207
207
|
}
|
|
208
208
|
];
|
|
209
209
|
const result: Record<string, ExpressionRestrictionsType> = {};
|
|
210
|
-
restrictionsDef.forEach(function(def) {
|
|
210
|
+
restrictionsDef.forEach(function (def) {
|
|
211
211
|
const defFunction = def["function"];
|
|
212
212
|
result[def.key] = {
|
|
213
213
|
expression: defFunction.apply(null, [
|
|
@@ -402,11 +402,18 @@ export function getCreateVisibility(
|
|
|
402
402
|
? isActionAnnotatedHidden(converterContext, AnnotationHiddenProperty.CreateHidden, false)
|
|
403
403
|
: standardActionsContext.hiddenAnnotation.create;
|
|
404
404
|
const newAction = standardActionsContext.newAction;
|
|
405
|
-
|
|
406
405
|
//Create Button is visible:
|
|
407
406
|
// - If the creation mode is external
|
|
408
407
|
// - If we're on the list report and create is not hidden
|
|
409
408
|
// - Otherwise this depends on the value of the the UI.IsEditable
|
|
409
|
+
// - Otherwise
|
|
410
|
+
// - If any of the following conditions is valid then create button isn't visible
|
|
411
|
+
// - no newAction availables
|
|
412
|
+
// - It's not insertable and there is not a new action
|
|
413
|
+
// - create is hidden
|
|
414
|
+
// - There are multiple visializations
|
|
415
|
+
// - It's an Analytical List Page
|
|
416
|
+
// - Uses InlineCreationRows mode and a Resposive table type
|
|
410
417
|
// - Otherwise
|
|
411
418
|
// - If we're on the list report ->
|
|
412
419
|
// - If UI.CreateHidden points to a property path -> provide a negated binding to this path
|
|
@@ -422,7 +429,11 @@ export function getCreateVisibility(
|
|
|
422
429
|
and(isConstant(isInsertable), equal(isInsertable, false), !newAction),
|
|
423
430
|
and(isConstant(isCreateHidden), equal(isCreateHidden, true)),
|
|
424
431
|
standardActionsContext.isViewWithMultipleVisualizations,
|
|
425
|
-
converterContext.getTemplateType() === TemplateType.AnalyticalListPage
|
|
432
|
+
converterContext.getTemplateType() === TemplateType.AnalyticalListPage,
|
|
433
|
+
and(
|
|
434
|
+
standardActionsContext.creationMode === CreationMode.InlineCreationRows,
|
|
435
|
+
standardActionsContext.tableManifestConfiguration?.type === "ResponsiveTable"
|
|
436
|
+
)
|
|
426
437
|
),
|
|
427
438
|
false,
|
|
428
439
|
ifElse(
|