@sapui5/sap.fe.core 1.127.2 → 1.129.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +1 -1
- package/src/sap/fe/core/.library +1 -1
- package/src/sap/fe/core/ActionRuntime.js +3 -9
- package/src/sap/fe/core/ActionRuntime.ts +3 -7
- package/src/sap/fe/core/AppComponent.js +9 -19
- package/src/sap/fe/core/AppComponent.ts +2 -12
- package/src/sap/fe/core/AppStateHandler.js +3 -11
- package/src/sap/fe/core/AppStateHandler.ts +0 -7
- package/src/sap/fe/core/BaseController.js +4 -8
- package/src/sap/fe/core/BaseController.ts +0 -5
- package/src/sap/fe/core/CommonUtils.js +1 -9
- package/src/sap/fe/core/CommonUtils.ts +4 -8
- package/src/sap/fe/core/ExtensionAPI.js +10 -25
- package/src/sap/fe/core/ExtensionAPI.ts +4 -19
- package/src/sap/fe/core/InsightsFormattersExtension.js +5 -3
- package/src/sap/fe/core/PageController.js +7 -10
- package/src/sap/fe/core/PageController.ts +0 -3
- package/src/sap/fe/core/ResourceModel.js +3 -5
- package/src/sap/fe/core/ResourceModel.ts +0 -2
- package/src/sap/fe/core/ReuseComponent.js +8 -14
- package/src/sap/fe/core/ReuseComponent.ts +0 -6
- package/src/sap/fe/core/TemplateComponent.js +37 -9
- package/src/sap/fe/core/TemplateComponent.ts +3 -2
- package/src/sap/fe/core/TemplateModel.js +5 -5
- package/src/sap/fe/core/TemplateModel.ts +0 -1
- package/src/sap/fe/core/UIProvider.js +1 -1
- package/src/sap/fe/core/UIProvider.ts +44 -1
- package/src/sap/fe/core/buildingBlocks/BuildingBlockBase.js +7 -12
- package/src/sap/fe/core/buildingBlocks/BuildingBlockBase.ts +0 -5
- package/src/sap/fe/core/buildingBlocks/TraceInfo.js +61 -65
- package/src/sap/fe/core/buildingBlocks/TraceInfo.ts +60 -63
- package/src/sap/fe/core/buildingBlocks/templating/AttributeModel.js +3 -3
- package/src/sap/fe/core/buildingBlocks/templating/BuildingBlockFormatter.js +1 -1
- package/src/sap/fe/core/buildingBlocks/templating/BuildingBlockSupport.js +21 -5
- package/src/sap/fe/core/buildingBlocks/templating/BuildingBlockSupport.ts +0 -4
- package/src/sap/fe/core/buildingBlocks/templating/BuildingBlockTemplateProcessor.js +6 -18
- package/src/sap/fe/core/buildingBlocks/templating/BuildingBlockTemplateProcessor.ts +3 -20
- package/src/sap/fe/core/buildingBlocks/templating/BuildingBlockTemplatingBase.js +5 -11
- package/src/sap/fe/core/buildingBlocks/templating/BuildingBlockTemplatingBase.ts +0 -6
- package/src/sap/fe/core/buildingBlocks/templating/RuntimeBuildingBlock.js +3 -3
- package/src/sap/fe/core/buildingBlocks/templating/RuntimeBuildingBlockFragment.js +11 -10
- package/src/sap/fe/core/buildingBlocks/templating/RuntimeBuildingBlockFragment.ts +0 -1
- package/src/sap/fe/core/controllerextensions/BaseControllerExtension.js +5 -7
- package/src/sap/fe/core/controllerextensions/BaseControllerExtension.ts +0 -1
- package/src/sap/fe/core/controllerextensions/BusyLocker.js +1 -1
- package/src/sap/fe/core/controllerextensions/CollaborativeDraft.js +3 -10
- package/src/sap/fe/core/controllerextensions/CollaborativeDraft.ts +0 -7
- package/src/sap/fe/core/controllerextensions/ContextSharing.js +5 -8
- package/src/sap/fe/core/controllerextensions/ContextSharing.ts +0 -2
- package/src/sap/fe/core/controllerextensions/EditFlow.js +225 -155
- package/src/sap/fe/core/controllerextensions/EditFlow.ts +248 -164
- package/src/sap/fe/core/controllerextensions/Feedback.js +1 -3
- package/src/sap/fe/core/controllerextensions/Feedback.ts +0 -2
- package/src/sap/fe/core/controllerextensions/IntentBasedNavigation.js +4 -7
- package/src/sap/fe/core/controllerextensions/IntentBasedNavigation.ts +0 -3
- package/src/sap/fe/core/controllerextensions/InternalIntentBasedNavigation.js +8 -25
- package/src/sap/fe/core/controllerextensions/InternalIntentBasedNavigation.ts +2 -21
- package/src/sap/fe/core/controllerextensions/InternalRouting.js +22 -34
- package/src/sap/fe/core/controllerextensions/InternalRouting.ts +25 -31
- package/src/sap/fe/core/controllerextensions/KPIManagement.js +8 -21
- package/src/sap/fe/core/controllerextensions/KPIManagement.ts +4 -15
- package/src/sap/fe/core/controllerextensions/MessageHandler.js +68 -31
- package/src/sap/fe/core/controllerextensions/MessageHandler.ts +78 -32
- package/src/sap/fe/core/controllerextensions/PageReady.js +4 -4
- package/src/sap/fe/core/controllerextensions/Paginator.js +4 -8
- package/src/sap/fe/core/controllerextensions/Paginator.ts +0 -4
- package/src/sap/fe/core/controllerextensions/Placeholder.js +4 -4
- package/src/sap/fe/core/controllerextensions/Recommendations.js +15 -24
- package/src/sap/fe/core/controllerextensions/Recommendations.ts +13 -20
- package/src/sap/fe/core/controllerextensions/Routing.js +4 -10
- package/src/sap/fe/core/controllerextensions/Routing.ts +0 -6
- package/src/sap/fe/core/controllerextensions/RoutingListener.js +1 -1
- package/src/sap/fe/core/controllerextensions/Share.js +17 -11
- package/src/sap/fe/core/controllerextensions/Share.ts +10 -5
- package/src/sap/fe/core/controllerextensions/SideEffects.js +49 -45
- package/src/sap/fe/core/controllerextensions/SideEffects.ts +54 -41
- package/src/sap/fe/core/controllerextensions/Telemetry.js +4 -4
- package/src/sap/fe/core/controllerextensions/ViewState.js +10 -34
- package/src/sap/fe/core/controllerextensions/ViewState.ts +3 -49
- package/src/sap/fe/core/controllerextensions/cards/CollaborationManager.js +6 -8
- package/src/sap/fe/core/controllerextensions/cards/CollaborationManager.ts +0 -1
- package/src/sap/fe/core/controllerextensions/collaboration/ActivityBase.js +1 -2
- package/src/sap/fe/core/controllerextensions/collaboration/ActivityBase.ts +0 -1
- package/src/sap/fe/core/controllerextensions/collaboration/CollaborationCommon.js +4 -3
- package/src/sap/fe/core/controllerextensions/collaboration/CollaborationCommon.ts +1 -1
- package/src/sap/fe/core/controllerextensions/dialog/OperationsDialog.block.js +16 -12
- package/src/sap/fe/core/controllerextensions/dialog/OperationsDialog.block.tsx +4 -1
- package/src/sap/fe/core/controllerextensions/editFlow/NotApplicableContextDialog.js +1 -1
- package/src/sap/fe/core/controllerextensions/editFlow/TransactionHelper.js +126 -74
- package/src/sap/fe/core/controllerextensions/editFlow/TransactionHelper.ts +158 -91
- package/src/sap/fe/core/controllerextensions/editFlow/draft.js +1 -22
- package/src/sap/fe/core/controllerextensions/editFlow/draft.ts +0 -20
- package/src/sap/fe/core/controllerextensions/editFlow/draftDataLossPopup.js +10 -20
- package/src/sap/fe/core/controllerextensions/editFlow/draftDataLossPopup.ts +11 -17
- package/src/sap/fe/core/controllerextensions/editFlow/editFlowConstants.js +1 -1
- package/src/sap/fe/core/controllerextensions/editFlow/operations/facade.js +191 -767
- package/src/sap/fe/core/controllerextensions/editFlow/operations/facade.ts +277 -1024
- package/src/sap/fe/core/controllerextensions/editFlow/operations.js +1 -1
- package/src/sap/fe/core/controllerextensions/editFlow/sticky.js +1 -6
- package/src/sap/fe/core/controllerextensions/editFlow/sticky.ts +0 -5
- package/src/sap/fe/core/controllerextensions/messageHandler/messageHandling.js +381 -250
- package/src/sap/fe/core/controllerextensions/messageHandler/messageHandling.ts +467 -301
- package/src/sap/fe/core/controllerextensions/pageReady/DataQueryWatcher.js +2 -6
- package/src/sap/fe/core/controllerextensions/pageReady/DataQueryWatcher.ts +0 -5
- package/src/sap/fe/core/controllerextensions/recommendations/Telemetry.js +2 -6
- package/src/sap/fe/core/controllerextensions/recommendations/Telemetry.ts +4 -6
- package/src/sap/fe/core/controllerextensions/routing/ContextPathHelper.js +1 -6
- package/src/sap/fe/core/controllerextensions/routing/ContextPathHelper.ts +0 -4
- package/src/sap/fe/core/controllerextensions/routing/NavigationReason.js +1 -1
- package/src/sap/fe/core/controllerextensions/routing/RouterProxy.js +4 -41
- package/src/sap/fe/core/controllerextensions/routing/RouterProxy.ts +1 -37
- package/src/sap/fe/core/controllerextensions/viewState/IViewStateContributor.js +1 -1
- package/src/sap/fe/core/controllerextensions/viewState/IViewStateContributor.ts +0 -1
- package/src/sap/fe/core/controls/Any.js +1 -2
- package/src/sap/fe/core/controls/Any.ts +0 -1
- package/src/sap/fe/core/controls/AnyElement.js +1 -2
- package/src/sap/fe/core/controls/AnyElement.ts +0 -1
- package/src/sap/fe/core/controls/CommandExecution.js +3 -3
- package/src/sap/fe/core/controls/ComponentLoader.js +23 -10
- package/src/sap/fe/core/controls/ComponentLoader.ts +0 -1
- package/src/sap/fe/core/controls/DataLossOrDraftDiscard/DraftDataLossDialog.block.js +10 -13
- package/src/sap/fe/core/controls/DataLossOrDraftDiscard/DraftDataLossDialog.block.tsx +0 -6
- package/src/sap/fe/core/controls/EventDelegateHook.js +8 -9
- package/src/sap/fe/core/controls/FormElementWrapper.js +7 -7
- package/src/sap/fe/core/controls/MultiValueParameterDelegate.js +3 -1
- package/src/sap/fe/core/controls/Recommendations/ConfirmRecommendationDialog.block.js +140 -24
- package/src/sap/fe/core/controls/Recommendations/ConfirmRecommendationDialog.block.tsx +141 -10
- package/src/sap/fe/core/converters/ConverterContext.js +8 -30
- package/src/sap/fe/core/converters/ConverterContext.ts +7 -29
- package/src/sap/fe/core/converters/ManifestSettings.js +37 -1
- package/src/sap/fe/core/converters/ManifestSettings.ts +12 -3
- package/src/sap/fe/core/converters/ManifestWrapper.js +12 -40
- package/src/sap/fe/core/converters/ManifestWrapper.ts +13 -46
- package/src/sap/fe/core/converters/MetaModelConverter.js +44 -48
- package/src/sap/fe/core/converters/MetaModelConverter.ts +50 -48
- package/src/sap/fe/core/converters/TemplateConverter.js +3 -2
- package/src/sap/fe/core/converters/TemplateConverter.ts +0 -1
- package/src/sap/fe/core/converters/annotations/DataField.js +1 -28
- package/src/sap/fe/core/converters/annotations/DataField.ts +0 -26
- package/src/sap/fe/core/converters/common/AnnotationConverter.js +24 -19
- package/src/sap/fe/core/converters/controls/Common/Action.js +13 -26
- package/src/sap/fe/core/converters/controls/Common/Action.ts +13 -31
- package/src/sap/fe/core/converters/controls/Common/Chart.js +5 -6
- package/src/sap/fe/core/converters/controls/Common/Chart.ts +0 -5
- package/src/sap/fe/core/converters/controls/Common/Criticality.js +2 -4
- package/src/sap/fe/core/converters/controls/Common/Criticality.ts +1 -2
- package/src/sap/fe/core/converters/controls/Common/DataVisualization.js +1 -5
- package/src/sap/fe/core/converters/controls/Common/DataVisualization.ts +0 -4
- package/src/sap/fe/core/converters/controls/Common/Form.js +3 -2
- package/src/sap/fe/core/converters/controls/Common/Form.ts +2 -1
- package/src/sap/fe/core/converters/controls/Common/KPI.js +11 -7
- package/src/sap/fe/core/converters/controls/Common/KPI.ts +11 -6
- package/src/sap/fe/core/converters/controls/Common/Table.js +159 -141
- package/src/sap/fe/core/converters/controls/Common/Table.ts +166 -122
- package/src/sap/fe/core/converters/controls/Common/table/StandardActions.js +5 -30
- package/src/sap/fe/core/converters/controls/Common/table/StandardActions.ts +3 -29
- package/src/sap/fe/core/converters/controls/ListReport/FilterBar.js +43 -55
- package/src/sap/fe/core/converters/controls/ListReport/FilterBar.ts +43 -47
- package/src/sap/fe/core/converters/controls/ListReport/VisualFilters.js +1 -4
- package/src/sap/fe/core/converters/controls/ListReport/VisualFilters.ts +0 -3
- package/src/sap/fe/core/converters/controls/ObjectPage/Avatar.js +1 -1
- package/src/sap/fe/core/converters/controls/ObjectPage/HeaderFacet.js +3 -8
- package/src/sap/fe/core/converters/controls/ObjectPage/HeaderFacet.ts +2 -7
- package/src/sap/fe/core/converters/controls/ObjectPage/SubSection.js +1 -11
- package/src/sap/fe/core/converters/controls/ObjectPage/SubSection.ts +0 -9
- package/src/sap/fe/core/converters/helpers/Aggregation.js +1 -10
- package/src/sap/fe/core/converters/helpers/Aggregation.ts +0 -9
- package/src/sap/fe/core/converters/helpers/ConfigurableObject.js +1 -7
- package/src/sap/fe/core/converters/helpers/ConfigurableObject.ts +0 -6
- package/src/sap/fe/core/converters/helpers/DataFieldHelper.js +1 -9
- package/src/sap/fe/core/converters/helpers/DataFieldHelper.ts +0 -8
- package/src/sap/fe/core/converters/helpers/ID.js +1 -2
- package/src/sap/fe/core/converters/helpers/ID.ts +0 -1
- package/src/sap/fe/core/converters/helpers/InsightsHelpers.js +1 -2
- package/src/sap/fe/core/converters/helpers/InsightsHelpers.ts +0 -1
- package/src/sap/fe/core/converters/helpers/IssueManager.js +1 -1
- package/src/sap/fe/core/converters/helpers/Key.js +1 -5
- package/src/sap/fe/core/converters/helpers/Key.ts +0 -4
- package/src/sap/fe/core/converters/helpers/SelectionVariantHelper.js +1 -2
- package/src/sap/fe/core/converters/helpers/SelectionVariantHelper.ts +0 -1
- package/src/sap/fe/core/converters/objectPage/FormMenuActions.js +1 -1
- package/src/sap/fe/core/converters/objectPage/HeaderAndFooterAction.js +1 -7
- package/src/sap/fe/core/converters/objectPage/HeaderAndFooterAction.ts +0 -6
- package/src/sap/fe/core/converters/templates/ListReportConverter.js +6 -27
- package/src/sap/fe/core/converters/templates/ListReportConverter.ts +9 -26
- package/src/sap/fe/core/converters/templates/ObjectPageConverter.js +1 -16
- package/src/sap/fe/core/converters/templates/ObjectPageConverter.ts +0 -15
- package/src/sap/fe/core/definition/FEDefinition.js +2550 -0
- package/src/sap/fe/core/designtime/AppComponent.designtime.js +11 -12
- package/src/sap/fe/core/designtime/AppComponent.designtime.ts +9 -10
- package/src/sap/fe/core/formatters/CollaborationFormatter.js +8 -2
- package/src/sap/fe/core/formatters/CollaborationFormatter.ts +0 -2
- package/src/sap/fe/core/formatters/CriticalityFormatter.js +1 -1
- package/src/sap/fe/core/formatters/FPMFormatter.js +1 -2
- package/src/sap/fe/core/formatters/FPMFormatter.ts +0 -1
- package/src/sap/fe/core/formatters/FiscalFormat.js +9 -14
- package/src/sap/fe/core/formatters/FiscalFormat.ts +0 -11
- package/src/sap/fe/core/formatters/KPIFormatter.js +1 -4
- package/src/sap/fe/core/formatters/KPIFormatter.ts +0 -3
- package/src/sap/fe/core/formatters/StandardFormatter.js +6 -3
- package/src/sap/fe/core/formatters/StandardFormatter.ts +6 -2
- package/src/sap/fe/core/formatters/ValueFormatter.js +1 -4
- package/src/sap/fe/core/formatters/ValueFormatter.ts +0 -3
- package/src/sap/fe/core/fpm/Component.js +14 -17
- package/src/sap/fe/core/fpm/Component.ts +7 -10
- package/src/sap/fe/core/fpm/manifest.json +1 -1
- package/src/sap/fe/core/helpers/AdaptiveCardExpressionCompiler.js +3 -10
- package/src/sap/fe/core/helpers/AdaptiveCardExpressionCompiler.ts +0 -9
- package/src/sap/fe/core/helpers/AppStartupHelper.js +1 -13
- package/src/sap/fe/core/helpers/AppStartupHelper.ts +0 -11
- package/src/sap/fe/core/helpers/BindingHelper.js +1 -4
- package/src/sap/fe/core/helpers/BindingHelper.ts +0 -3
- package/src/sap/fe/core/helpers/BindingToolkitEvaluator.js +1 -2
- package/src/sap/fe/core/helpers/BindingToolkitEvaluator.ts +0 -1
- package/src/sap/fe/core/helpers/DeleteHelper.js +61 -32
- package/src/sap/fe/core/helpers/DeleteHelper.ts +79 -33
- package/src/sap/fe/core/helpers/DynamicAnnotationPathHelper.js +1 -2
- package/src/sap/fe/core/helpers/DynamicAnnotationPathHelper.ts +0 -1
- package/src/sap/fe/core/helpers/EditState.js +1 -1
- package/src/sap/fe/core/helpers/ExcelFormatHelper.js +1 -2
- package/src/sap/fe/core/helpers/ExcelFormatHelper.ts +0 -1
- package/src/sap/fe/core/helpers/FPMHelper.js +1 -2
- package/src/sap/fe/core/helpers/FPMHelper.ts +0 -1
- package/src/sap/fe/core/helpers/KeepAliveHelper.js +1 -8
- package/src/sap/fe/core/helpers/KeepAliveHelper.ts +0 -7
- package/src/sap/fe/core/helpers/KeepAliveRefreshTypes.js +7 -1
- package/src/sap/fe/core/helpers/LoaderUtils.js +1 -1
- package/src/sap/fe/core/helpers/ManifestHelper.js +1 -3
- package/src/sap/fe/core/helpers/ManifestHelper.ts +0 -2
- package/src/sap/fe/core/helpers/MessageStrip.js +1 -1
- package/src/sap/fe/core/helpers/MetaModelFunction.js +3 -8
- package/src/sap/fe/core/helpers/MetaModelFunction.ts +0 -5
- package/src/sap/fe/core/helpers/MetaPath.js +1 -7
- package/src/sap/fe/core/helpers/MetaPath.ts +0 -6
- package/src/sap/fe/core/helpers/ModelHelper.js +55 -35
- package/src/sap/fe/core/helpers/ModelHelper.ts +64 -38
- package/src/sap/fe/core/helpers/PasteHelper.js +77 -24
- package/src/sap/fe/core/helpers/PasteHelper.ts +105 -23
- package/src/sap/fe/core/helpers/PromiseKeeper.js +1 -3
- package/src/sap/fe/core/helpers/PromiseKeeper.ts +0 -2
- package/src/sap/fe/core/helpers/RecommendationHelper.js +1 -4
- package/src/sap/fe/core/helpers/RecommendationHelper.ts +0 -3
- package/src/sap/fe/core/helpers/ResourceModelHelper.js +1 -3
- package/src/sap/fe/core/helpers/ResourceModelHelper.ts +3 -4
- package/src/sap/fe/core/helpers/SemanticKeyHelper.js +1 -2
- package/src/sap/fe/core/helpers/SemanticKeyHelper.ts +0 -1
- package/src/sap/fe/core/helpers/SizeHelper.js +1 -2
- package/src/sap/fe/core/helpers/SizeHelper.ts +0 -1
- package/src/sap/fe/core/helpers/StableIdHelper.js +7 -17
- package/src/sap/fe/core/helpers/StableIdHelper.ts +7 -17
- package/src/sap/fe/core/helpers/StandardRecommendationHelper.js +1 -12
- package/src/sap/fe/core/helpers/StandardRecommendationHelper.ts +0 -11
- package/src/sap/fe/core/helpers/Synchronization.js +1 -1
- package/src/sap/fe/core/helpers/TitleHelper.js +1 -10
- package/src/sap/fe/core/helpers/TitleHelper.ts +0 -9
- package/src/sap/fe/core/helpers/ToES6Promise.js +1 -2
- package/src/sap/fe/core/helpers/ToES6Promise.ts +0 -1
- package/src/sap/fe/core/helpers/TypeGuards.js +1 -15
- package/src/sap/fe/core/helpers/TypeGuards.ts +0 -14
- package/src/sap/fe/core/helpers/WebSocket.js +1 -1
- package/src/sap/fe/core/library.js +10 -44
- package/src/sap/fe/core/library.support.js +1 -1
- package/src/sap/fe/core/library.ts +8 -45
- package/src/sap/fe/core/manifestMerger/ChangePageConfiguration.js +1 -6
- package/src/sap/fe/core/manifestMerger/ChangePageConfiguration.ts +0 -5
- package/src/sap/fe/core/messagebundle.properties +12 -1
- package/src/sap/fe/core/messagebundle_ar.properties +8 -0
- package/src/sap/fe/core/messagebundle_bg.properties +8 -0
- package/src/sap/fe/core/messagebundle_ca.properties +8 -0
- package/src/sap/fe/core/messagebundle_cnr.properties +8 -0
- package/src/sap/fe/core/messagebundle_cs.properties +9 -1
- package/src/sap/fe/core/messagebundle_cy.properties +8 -0
- package/src/sap/fe/core/messagebundle_da.properties +8 -0
- package/src/sap/fe/core/messagebundle_de.properties +8 -0
- package/src/sap/fe/core/messagebundle_el.properties +8 -0
- package/src/sap/fe/core/messagebundle_en.properties +8 -0
- package/src/sap/fe/core/messagebundle_en_GB.properties +8 -0
- package/src/sap/fe/core/messagebundle_en_US_sappsd.properties +144 -65
- package/src/sap/fe/core/messagebundle_en_US_saprigi.properties +8 -0
- package/src/sap/fe/core/messagebundle_en_US_saptrc.properties +273 -194
- package/src/sap/fe/core/messagebundle_es.properties +9 -1
- package/src/sap/fe/core/messagebundle_es_MX.properties +8 -0
- package/src/sap/fe/core/messagebundle_et.properties +8 -0
- package/src/sap/fe/core/messagebundle_fi.properties +8 -0
- package/src/sap/fe/core/messagebundle_fr.properties +8 -0
- package/src/sap/fe/core/messagebundle_fr_CA.properties +8 -0
- package/src/sap/fe/core/messagebundle_hi.properties +9 -1
- package/src/sap/fe/core/messagebundle_hr.properties +8 -0
- package/src/sap/fe/core/messagebundle_hu.properties +8 -0
- package/src/sap/fe/core/messagebundle_id.properties +12 -4
- package/src/sap/fe/core/messagebundle_it.properties +8 -0
- package/src/sap/fe/core/messagebundle_iw.properties +8 -0
- package/src/sap/fe/core/messagebundle_ja.properties +8 -0
- package/src/sap/fe/core/messagebundle_kk.properties +8 -0
- package/src/sap/fe/core/messagebundle_ko.properties +8 -0
- package/src/sap/fe/core/messagebundle_lt.properties +8 -0
- package/src/sap/fe/core/messagebundle_lv.properties +8 -0
- package/src/sap/fe/core/messagebundle_mk.properties +8 -0
- package/src/sap/fe/core/messagebundle_ms.properties +8 -0
- package/src/sap/fe/core/messagebundle_nl.properties +16 -8
- package/src/sap/fe/core/messagebundle_no.properties +8 -0
- package/src/sap/fe/core/messagebundle_pl.properties +8 -0
- package/src/sap/fe/core/messagebundle_pt.properties +8 -0
- package/src/sap/fe/core/messagebundle_pt_PT.properties +8 -0
- package/src/sap/fe/core/messagebundle_ro.properties +8 -0
- package/src/sap/fe/core/messagebundle_ru.properties +8 -0
- package/src/sap/fe/core/messagebundle_sh.properties +8 -0
- package/src/sap/fe/core/messagebundle_sk.properties +8 -0
- package/src/sap/fe/core/messagebundle_sl.properties +8 -0
- package/src/sap/fe/core/messagebundle_sr.properties +8 -0
- package/src/sap/fe/core/messagebundle_sv.properties +8 -0
- package/src/sap/fe/core/messagebundle_th.properties +12 -4
- package/src/sap/fe/core/messagebundle_tr.properties +8 -0
- package/src/sap/fe/core/messagebundle_uk.properties +10 -2
- package/src/sap/fe/core/messagebundle_vi.properties +8 -0
- package/src/sap/fe/core/messagebundle_zh_CN.properties +8 -0
- package/src/sap/fe/core/messagebundle_zh_TW.properties +8 -0
- package/src/sap/fe/core/operationsHelper.js +22 -7
- package/src/sap/fe/core/operationsHelper.ts +24 -5
- package/src/sap/fe/core/rootView/Fcl.controller.js +7 -27
- package/src/sap/fe/core/rootView/Fcl.controller.ts +0 -18
- package/src/sap/fe/core/rootView/NavContainer.controller.js +7 -12
- package/src/sap/fe/core/rootView/NavContainer.controller.ts +0 -5
- package/src/sap/fe/core/rootView/RootViewBaseController.js +10 -24
- package/src/sap/fe/core/rootView/RootViewBaseController.ts +3 -16
- package/src/sap/fe/core/services/AsyncComponentServiceFactory.js +3 -3
- package/src/sap/fe/core/services/CacheHandlerServiceFactory.js +3 -3
- package/src/sap/fe/core/services/CollaborationManagerServiceFactory.js +4 -4
- package/src/sap/fe/core/services/CollaborativeToolsServiceFactory.js +3 -3
- package/src/sap/fe/core/services/ContextSharingServiceFactory.js +3 -4
- package/src/sap/fe/core/services/ContextSharingServiceFactory.ts +0 -1
- package/src/sap/fe/core/services/EnvironmentServiceFactory.js +13 -20
- package/src/sap/fe/core/services/EnvironmentServiceFactory.ts +11 -17
- package/src/sap/fe/core/services/NavigationServiceFactory.js +11 -21
- package/src/sap/fe/core/services/NavigationServiceFactory.ts +4 -17
- package/src/sap/fe/core/services/ResourceModelServiceFactory.js +3 -3
- package/src/sap/fe/core/services/RoutingServiceFactory.js +7 -19
- package/src/sap/fe/core/services/RoutingServiceFactory.ts +0 -12
- package/src/sap/fe/core/services/ShellServicesFactory.js +8 -44
- package/src/sap/fe/core/services/ShellServicesFactory.ts +1 -41
- package/src/sap/fe/core/services/SideEffectsServiceFactory.js +19 -60
- package/src/sap/fe/core/services/SideEffectsServiceFactory.ts +14 -57
- package/src/sap/fe/core/services/TelemetryServiceFactory.js +6 -14
- package/src/sap/fe/core/services/TelemetryServiceFactory.ts +2 -10
- package/src/sap/fe/core/services/TemplatedViewServiceFactory.js +17 -7
- package/src/sap/fe/core/services/TemplatedViewServiceFactory.ts +17 -3
- package/src/sap/fe/core/services/ValueHelpHistoryServiceFactory.js +11 -24
- package/src/sap/fe/core/services/ValueHelpHistoryServiceFactory.ts +0 -19
- package/src/sap/fe/core/services/collaborativeDraftServiceFactory.js +3 -31
- package/src/sap/fe/core/services/collaborativeDraftServiceFactory.ts +0 -27
- package/src/sap/fe/core/services/valueHelpService/HistoryOptOutProvider.js +1 -4
- package/src/sap/fe/core/services/valueHelpService/HistoryOptOutProvider.ts +0 -3
- package/src/sap/fe/core/services/view/TemplatingErrorPage.controller.js +7 -7
- package/src/sap/fe/core/support/AnnotationIssue.support.js +1 -1
- package/src/sap/fe/core/support/CollectionFacetMissingID.support.js +1 -1
- package/src/sap/fe/core/support/CollectionFacetUnsupportedLevel.support.js +1 -1
- package/src/sap/fe/core/support/CommonHelper.js +4 -1
- package/src/sap/fe/core/support/Diagnostics.js +1 -1
- package/src/sap/fe/core/support/InvalidAnnotationColumnKey.support.js +1 -1
- package/src/sap/fe/core/templating/ActionHelper.js +1 -2
- package/src/sap/fe/core/templating/ActionHelper.ts +0 -1
- package/src/sap/fe/core/templating/CommonFormatters.js +1 -2
- package/src/sap/fe/core/templating/CommonFormatters.ts +0 -1
- package/src/sap/fe/core/templating/CriticalityFormatters.js +1 -6
- package/src/sap/fe/core/templating/CriticalityFormatters.ts +0 -5
- package/src/sap/fe/core/templating/DataFieldFormatters.js +1 -2
- package/src/sap/fe/core/templating/DataFieldFormatters.ts +0 -1
- package/src/sap/fe/core/templating/DataModelPathHelper.js +1 -18
- package/src/sap/fe/core/templating/DataModelPathHelper.ts +0 -17
- package/src/sap/fe/core/templating/DisplayModeFormatter.js +6 -1
- package/src/sap/fe/core/templating/EntitySetHelper.js +1 -4
- package/src/sap/fe/core/templating/EntitySetHelper.ts +0 -3
- package/src/sap/fe/core/templating/EntityTypeHelper.js +4 -5
- package/src/sap/fe/core/templating/EntityTypeHelper.ts +3 -4
- package/src/sap/fe/core/templating/FieldControlHelper.js +4 -9
- package/src/sap/fe/core/templating/FieldControlHelper.ts +3 -9
- package/src/sap/fe/core/templating/FilterTemplating.js +1 -1
- package/src/sap/fe/core/templating/PropertyFormatters.js +1 -1
- package/src/sap/fe/core/templating/PropertyHelper.js +1 -31
- package/src/sap/fe/core/templating/PropertyHelper.ts +0 -30
- package/src/sap/fe/core/templating/SemanticObjectHelper.js +1 -7
- package/src/sap/fe/core/templating/SemanticObjectHelper.ts +0 -6
- package/src/sap/fe/core/templating/UIFormatters.js +18 -14
- package/src/sap/fe/core/templating/UIFormatters.ts +30 -18
- package/src/sap/fe/core/type/Date.js +3 -6
- package/src/sap/fe/core/type/Date.ts +0 -3
- package/src/sap/fe/core/type/DateTimeWithTimezone.js +3 -3
- package/src/sap/fe/core/type/EDM.js +1 -1
- package/src/sap/fe/core/type/Email.js +3 -3
- package/src/sap/fe/core/type/FiscalDate.js +3 -9
- package/src/sap/fe/core/type/FiscalDate.ts +0 -6
- package/src/sap/fe/core/type/InputMask.js +3 -7
- package/src/sap/fe/core/type/InputMask.ts +0 -4
|
@@ -7,7 +7,8 @@ import type PageController from "sap/fe/core/PageController";
|
|
|
7
7
|
import type {
|
|
8
8
|
MessageTechnicalDetails,
|
|
9
9
|
MessageUIDecisions,
|
|
10
|
-
ShowMessageParameters
|
|
10
|
+
ShowMessageParameters,
|
|
11
|
+
SupportedUIElement
|
|
11
12
|
} from "sap/fe/core/controllerextensions/messageHandler/messageHandling";
|
|
12
13
|
import messageHandling from "sap/fe/core/controllerextensions/messageHandler/messageHandling";
|
|
13
14
|
import type { InternalModelContext } from "sap/fe/core/helpers/ModelHelper";
|
|
@@ -15,8 +16,8 @@ import type Dialog from "sap/m/Dialog";
|
|
|
15
16
|
import type Control from "sap/ui/core/Control";
|
|
16
17
|
import Library from "sap/ui/core/Lib";
|
|
17
18
|
import Messaging from "sap/ui/core/Messaging";
|
|
18
|
-
import type CoreLib from "sap/ui/core/library";
|
|
19
19
|
import type Message from "sap/ui/core/message/Message";
|
|
20
|
+
import MessageType from "sap/ui/core/message/MessageType";
|
|
20
21
|
import ControllerExtension from "sap/ui/core/mvc/ControllerExtension";
|
|
21
22
|
import OverrideExecution from "sap/ui/core/mvc/OverrideExecution";
|
|
22
23
|
import type Context from "sap/ui/model/Context";
|
|
@@ -44,7 +45,7 @@ export type CustomMessage = {
|
|
|
44
45
|
code: string;
|
|
45
46
|
text: string;
|
|
46
47
|
persistent: boolean;
|
|
47
|
-
type:
|
|
48
|
+
type: MessageType;
|
|
48
49
|
};
|
|
49
50
|
type ShowMessageDialogParameter = {
|
|
50
51
|
customMessages?: CustomMessage[];
|
|
@@ -57,6 +58,8 @@ type ShowMessageDialogParameter = {
|
|
|
57
58
|
onBeforeShowMessage?: (messages: Message[], showMessageParameters: ShowMessageParameters) => ShowMessageParameters;
|
|
58
59
|
unHoldKey?: string;
|
|
59
60
|
forceShowUIElement?: boolean;
|
|
61
|
+
overrideUIDecision?: boolean;
|
|
62
|
+
showBoundStateMessages?: boolean;
|
|
60
63
|
};
|
|
61
64
|
|
|
62
65
|
export type ShowMessagesParameters = ShowMessageDialogParameter & {
|
|
@@ -69,7 +72,6 @@ export type ShowMessagesParameters = ShowMessageDialogParameter & {
|
|
|
69
72
|
};
|
|
70
73
|
/**
|
|
71
74
|
* A controller extension offering message handling.
|
|
72
|
-
*
|
|
73
75
|
* @hideconstructor
|
|
74
76
|
* @public
|
|
75
77
|
* @experimental As of version 1.90.0
|
|
@@ -85,13 +87,14 @@ class MessageHandler extends ControllerExtension {
|
|
|
85
87
|
|
|
86
88
|
protected uiDecisions: MessageUIDecisions | undefined;
|
|
87
89
|
|
|
90
|
+
private holdMsgsToShow = false;
|
|
91
|
+
|
|
88
92
|
constructor() {
|
|
89
93
|
super();
|
|
90
94
|
}
|
|
91
95
|
|
|
92
96
|
/**
|
|
93
97
|
* Adds warning messages to the message handler.
|
|
94
|
-
*
|
|
95
98
|
* @param aMessages The strict warning messages to be added
|
|
96
99
|
*/
|
|
97
100
|
addWarningMessagesToMessageHandler(aMessages: Message[]): void {
|
|
@@ -100,7 +103,6 @@ class MessageHandler extends ControllerExtension {
|
|
|
100
103
|
|
|
101
104
|
/**
|
|
102
105
|
* Determines whether or not a message is a strict warning message that was received previously.
|
|
103
|
-
*
|
|
104
106
|
* @param oMessage The message to be checked
|
|
105
107
|
* @returns Whether or not the message is a strict warning message
|
|
106
108
|
*/
|
|
@@ -126,6 +128,12 @@ class MessageHandler extends ControllerExtension {
|
|
|
126
128
|
this.strictWarningMessages = [];
|
|
127
129
|
}
|
|
128
130
|
|
|
131
|
+
filterWarningMessages(messages: Message[]): Message[] {
|
|
132
|
+
return messages.filter((message) => {
|
|
133
|
+
return message.getType() === MessageType.Warning;
|
|
134
|
+
});
|
|
135
|
+
}
|
|
136
|
+
|
|
129
137
|
/**
|
|
130
138
|
* Determines whether or not bound messages are shown in the message dialog.
|
|
131
139
|
*
|
|
@@ -134,7 +142,6 @@ class MessageHandler extends ControllerExtension {
|
|
|
134
142
|
*
|
|
135
143
|
* If the bound messages are shown to the user with a different control like the (TODO:Link) MessageButton
|
|
136
144
|
* this method has to be overridden.
|
|
137
|
-
*
|
|
138
145
|
* @returns Determines whether or not bound messages are shown in the message dialog.
|
|
139
146
|
*/
|
|
140
147
|
@privateExtension()
|
|
@@ -152,12 +159,14 @@ class MessageHandler extends ControllerExtension {
|
|
|
152
159
|
* The caller needs to use 'showMessageDialog(<key>)' at the end of all his processes to show the messages in the UI.
|
|
153
160
|
*
|
|
154
161
|
* If multiple owners register simultaneously, then messages are shown in the UI only after 'showMessageDialog(<respective_key>)' is called by all the processes' owners.
|
|
155
|
-
*
|
|
162
|
+
* @param key Unique identifier to use, If not provided, a UID would be created and used to register.
|
|
156
163
|
* @returns Unique Key to be used by the caller to show messages at a later point of time.
|
|
157
164
|
*/
|
|
158
|
-
registerToHoldMessages(): string {
|
|
159
|
-
const uniqueKey = uid();
|
|
160
|
-
this.holdKeys.
|
|
165
|
+
registerToHoldMessages(key?: string): string {
|
|
166
|
+
const uniqueKey = key ?? uid();
|
|
167
|
+
if (!this.holdKeys.includes(uniqueKey)) {
|
|
168
|
+
this.holdKeys.push(uniqueKey);
|
|
169
|
+
}
|
|
161
170
|
return uniqueKey;
|
|
162
171
|
}
|
|
163
172
|
|
|
@@ -175,7 +184,6 @@ class MessageHandler extends ControllerExtension {
|
|
|
175
184
|
* can filter on message types and can display details as well as the long text. If there is one message,
|
|
176
185
|
* the dialog immediately shows the details of the message. If there is just one success message, a message
|
|
177
186
|
* toast is shown instead.
|
|
178
|
-
*
|
|
179
187
|
* @param mParameters PRIVATE
|
|
180
188
|
* @returns A promise that is resolved once the user closes the dialog. If there are no messages
|
|
181
189
|
* to be shown, the promise is resolved immediately
|
|
@@ -236,10 +244,9 @@ class MessageHandler extends ControllerExtension {
|
|
|
236
244
|
* Process the messages and show them when expected.
|
|
237
245
|
*
|
|
238
246
|
* We filter the messages to show and hold them until all registered processes call showMessageDialog with their respective held keys.
|
|
239
|
-
*
|
|
240
247
|
* @param parameters Parameters to show message dialog.
|
|
241
248
|
* @param bindingContext Bind context of the page.
|
|
242
|
-
* @param
|
|
249
|
+
* @param showBoundTransitionMessages Should bound messages be shown.
|
|
243
250
|
* @param customMessages Custom messages to add.
|
|
244
251
|
* @param success Success callback.
|
|
245
252
|
* @param failure Failure callback.
|
|
@@ -248,35 +255,58 @@ class MessageHandler extends ControllerExtension {
|
|
|
248
255
|
processAndShowMessages(
|
|
249
256
|
parameters: ShowMessageDialogParameter,
|
|
250
257
|
bindingContext: ODataV4Context,
|
|
251
|
-
|
|
258
|
+
showBoundTransitionMessages: boolean,
|
|
252
259
|
customMessages: CustomMessage[],
|
|
253
260
|
success: () => void,
|
|
254
261
|
failure: () => void,
|
|
255
262
|
viewType?: string
|
|
256
263
|
): void {
|
|
257
|
-
const {
|
|
264
|
+
const {
|
|
265
|
+
concurrentEditFlag,
|
|
266
|
+
control,
|
|
267
|
+
sActionName,
|
|
268
|
+
onBeforeShowMessage,
|
|
269
|
+
unHoldKey,
|
|
270
|
+
forceShowUIElement = false,
|
|
271
|
+
overrideUIDecision,
|
|
272
|
+
showBoundStateMessages
|
|
273
|
+
} = parameters;
|
|
274
|
+
this.holdMsgsToShow = true;
|
|
258
275
|
|
|
259
276
|
// Create a UI decision.
|
|
260
277
|
const newUIDecisions = messageHandling.getUIDecisions(
|
|
261
278
|
customMessages,
|
|
262
279
|
bindingContext,
|
|
263
|
-
|
|
280
|
+
showBoundTransitionMessages,
|
|
264
281
|
concurrentEditFlag,
|
|
265
282
|
control,
|
|
266
283
|
sActionName,
|
|
267
284
|
onBeforeShowMessage,
|
|
268
|
-
viewType
|
|
285
|
+
viewType,
|
|
286
|
+
showBoundStateMessages
|
|
269
287
|
);
|
|
270
|
-
this.updateUIDecisions(newUIDecisions);
|
|
271
|
-
this.removeHoldKey(unHoldKey);
|
|
288
|
+
this.updateUIDecisions(newUIDecisions, overrideUIDecision);
|
|
289
|
+
this.removeHoldKey(unHoldKey ?? control?.getId());
|
|
290
|
+
this.showMessagesWithCondtions(forceShowUIElement, success, failure);
|
|
291
|
+
}
|
|
292
|
+
|
|
293
|
+
/**
|
|
294
|
+
* Show Messages in the UI based on conditions.
|
|
295
|
+
* @param forceShowUIElement
|
|
296
|
+
* @param success
|
|
297
|
+
* @param failure
|
|
298
|
+
*/
|
|
299
|
+
showMessagesWithCondtions(forceShowUIElement = false, success?: () => void, failure?: () => void): void {
|
|
272
300
|
const showUIElement = forceShowUIElement || this.checkToShowUIElement();
|
|
273
301
|
if (showUIElement && this.uiDecisions) {
|
|
274
302
|
// Show UI element for the present decision and clear the decision.
|
|
275
303
|
messageHandling.showMessagesInUI(this.uiDecisions).then(success).catch(failure);
|
|
276
304
|
this.uiDecisions = undefined;
|
|
305
|
+
this.clearStrictWarningMessages();
|
|
306
|
+
this.holdMsgsToShow = false;
|
|
277
307
|
} else {
|
|
278
308
|
Log.info("FE : V4 : MessageHandler : Holding messages until a registered process ");
|
|
279
|
-
success();
|
|
309
|
+
success?.();
|
|
280
310
|
}
|
|
281
311
|
}
|
|
282
312
|
|
|
@@ -284,7 +314,6 @@ class MessageHandler extends ControllerExtension {
|
|
|
284
314
|
* You can remove the existing transition message from the message model with this method.
|
|
285
315
|
* With every user interaction that causes server communication (like clicking on an action, changing data),
|
|
286
316
|
* this method removes the existing transition messages from the message model.
|
|
287
|
-
*
|
|
288
317
|
* @param [keepBoundMessage] Checks if the bound transition messages are not to be removed
|
|
289
318
|
* @param keepUnboundMessage
|
|
290
319
|
* @param sPathToBeRemoved
|
|
@@ -301,7 +330,6 @@ class MessageHandler extends ControllerExtension {
|
|
|
301
330
|
|
|
302
331
|
/**
|
|
303
332
|
* Method that returns all the parameters needed to handle the navigation to the error page.
|
|
304
|
-
*
|
|
305
333
|
* @param mParameters
|
|
306
334
|
* @returns The parameters necessary for the navigation to the error page
|
|
307
335
|
*/
|
|
@@ -374,17 +402,19 @@ class MessageHandler extends ControllerExtension {
|
|
|
374
402
|
|
|
375
403
|
/**
|
|
376
404
|
* Update the existing UI decisions with the new ones.
|
|
377
|
-
*
|
|
378
405
|
* @param newUIDecisions In comming UI decisions.
|
|
406
|
+
* @param overrideUIDecision Override the existing UI decision to show messages with the new one.
|
|
407
|
+
*
|
|
408
|
+
* 'overrideUIDecision', This would be needed when there is a change in page context and the paramters to create the new UI decision are different.
|
|
379
409
|
*/
|
|
380
|
-
updateUIDecisions(newUIDecisions: MessageUIDecisions): void {
|
|
410
|
+
updateUIDecisions(newUIDecisions: MessageUIDecisions, overrideUIDecision = false): void {
|
|
381
411
|
const oldUIDecisions = this.uiDecisions;
|
|
382
412
|
let mergedUIDecision;
|
|
383
|
-
if (oldUIDecisions) {
|
|
413
|
+
if (oldUIDecisions && overrideUIDecision === false) {
|
|
384
414
|
const allMessagesToShow = Array.from(new Set([...oldUIDecisions.messagesToShow, ...newUIDecisions.messagesToShow]));
|
|
385
415
|
const elements = [oldUIDecisions.uiElementToUse, newUIDecisions.uiElementToUse];
|
|
386
416
|
// Default we show dialog
|
|
387
|
-
let uiElementToUse:
|
|
417
|
+
let uiElementToUse: SupportedUIElement = allMessagesToShow.length > 0 ? "Dialog" : "None";
|
|
388
418
|
|
|
389
419
|
if (allMessagesToShow.length === 1) {
|
|
390
420
|
// Single message, we check for specific UI Element to use.
|
|
@@ -399,8 +429,7 @@ class MessageHandler extends ControllerExtension {
|
|
|
399
429
|
messagesToShow: allMessagesToShow,
|
|
400
430
|
uiElementToUse,
|
|
401
431
|
contextNeedsEtagRefresh: oldUIDecisions.contextNeedsEtagRefresh || newUIDecisions.contextNeedsEtagRefresh,
|
|
402
|
-
containsBoundTransition: oldUIDecisions.containsBoundTransition || newUIDecisions.containsBoundTransition
|
|
403
|
-
showChangeSetErrorDialog: oldUIDecisions.showChangeSetErrorDialog || newUIDecisions.showChangeSetErrorDialog
|
|
432
|
+
containsBoundTransition: oldUIDecisions.containsBoundTransition || newUIDecisions.containsBoundTransition
|
|
404
433
|
};
|
|
405
434
|
} else {
|
|
406
435
|
mergedUIDecision = newUIDecisions;
|
|
@@ -411,7 +440,6 @@ class MessageHandler extends ControllerExtension {
|
|
|
411
440
|
|
|
412
441
|
/**
|
|
413
442
|
* Remove held key.
|
|
414
|
-
*
|
|
415
443
|
* @param inKey Key to remove.
|
|
416
444
|
*/
|
|
417
445
|
removeHoldKey(inKey?: string): void {
|
|
@@ -425,12 +453,30 @@ class MessageHandler extends ControllerExtension {
|
|
|
425
453
|
* @returns Boolean
|
|
426
454
|
*/
|
|
427
455
|
checkToShowUIElement(): boolean {
|
|
428
|
-
return this.holdKeys.length > 0 ? false : true;
|
|
456
|
+
return this.holdMsgsToShow && (this.holdKeys.length > 0 ? false : true);
|
|
457
|
+
}
|
|
458
|
+
|
|
459
|
+
/**
|
|
460
|
+
* Hold messages for the control.
|
|
461
|
+
* @param control
|
|
462
|
+
*/
|
|
463
|
+
holdMessagesForControl(control: Control): void {
|
|
464
|
+
const identifier = control.getId();
|
|
465
|
+
this.registerToHoldMessages(identifier);
|
|
466
|
+
}
|
|
467
|
+
|
|
468
|
+
/**
|
|
469
|
+
* Release message hold by a control.
|
|
470
|
+
* @param control
|
|
471
|
+
*/
|
|
472
|
+
releaseHoldByControl(control?: Control): void {
|
|
473
|
+
const identifier = control?.getId();
|
|
474
|
+
this.removeHoldKey(identifier);
|
|
475
|
+
this.showMessagesWithCondtions();
|
|
429
476
|
}
|
|
430
477
|
|
|
431
478
|
/**
|
|
432
479
|
* Shows a message page or a message dialog based on the messages in the message dialog.
|
|
433
|
-
*
|
|
434
480
|
* @param [parameters]
|
|
435
481
|
* @returns A promise that is resolved once the user closes the message dialog or when navigation to the message page is complete. If there are no messages
|
|
436
482
|
* to be shown, the promise is resolved immediately
|
|
@@ -12,9 +12,9 @@ sap.ui.define(["sap/base/Log", "sap/fe/base/ClassSupport", "sap/fe/core/controll
|
|
|
12
12
|
var finalExtension = ClassSupport.finalExtension;
|
|
13
13
|
var extensible = ClassSupport.extensible;
|
|
14
14
|
var defineUI5Class = ClassSupport.defineUI5Class;
|
|
15
|
-
function _inheritsLoose(
|
|
16
|
-
function _setPrototypeOf(
|
|
17
|
-
function _applyDecoratedDescriptor(
|
|
15
|
+
function _inheritsLoose(t, o) { t.prototype = Object.create(o.prototype), t.prototype.constructor = t, _setPrototypeOf(t, o); }
|
|
16
|
+
function _setPrototypeOf(t, e) { return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) { return t.__proto__ = e, t; }, _setPrototypeOf(t, e); }
|
|
17
|
+
function _applyDecoratedDescriptor(i, e, r, n, l) { var a = {}; return Object.keys(n).forEach(function (i) { a[i] = n[i]; }), a.enumerable = !!a.enumerable, a.configurable = !!a.configurable, ("value" in a || a.initializer) && (a.writable = !0), a = r.slice().reverse().reduce(function (r, n) { return n(i, e, r) || r; }, a), l && void 0 !== a.initializer && (a.value = a.initializer ? a.initializer.call(l) : void 0, a.initializer = void 0), void 0 === a.initializer ? (Object.defineProperty(i, e, a), null) : a; }
|
|
18
18
|
let PageReadyControllerExtension = (_dec = defineUI5Class("sap.fe.core.controllerextensions.PageReady"), _dec2 = methodOverride(), _dec3 = methodOverride(), _dec4 = publicExtension(), _dec5 = finalExtension(), _dec6 = methodOverride("_routing"), _dec7 = methodOverride("_routing"), _dec8 = methodOverride("_routing"), _dec9 = publicExtension(), _dec10 = finalExtension(), _dec11 = publicExtension(), _dec12 = finalExtension(), _dec13 = publicExtension(), _dec14 = finalExtension(), _dec15 = publicExtension(), _dec16 = finalExtension(), _dec17 = publicExtension(), _dec18 = finalExtension(), _dec19 = privateExtension(), _dec20 = extensible(OverrideExecution.Instead), _dec21 = publicExtension(), _dec(_class = (_class2 = /*#__PURE__*/function (_ControllerExtension) {
|
|
19
19
|
_inheritsLoose(PageReadyControllerExtension, _ControllerExtension);
|
|
20
20
|
function PageReadyControllerExtension() {
|
|
@@ -274,4 +274,4 @@ sap.ui.define(["sap/base/Log", "sap/fe/base/ClassSupport", "sap/fe/core/controll
|
|
|
274
274
|
}(ControllerExtension), (_applyDecoratedDescriptor(_class2.prototype, "onInit", [_dec2], Object.getOwnPropertyDescriptor(_class2.prototype, "onInit"), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, "onExit", [_dec3], Object.getOwnPropertyDescriptor(_class2.prototype, "onExit"), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, "waitFor", [_dec4, _dec5], Object.getOwnPropertyDescriptor(_class2.prototype, "waitFor"), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, "onRouteMatched", [_dec6], Object.getOwnPropertyDescriptor(_class2.prototype, "onRouteMatched"), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, "onRouteMatchedFinished", [_dec7], Object.getOwnPropertyDescriptor(_class2.prototype, "onRouteMatchedFinished"), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, "onAfterBinding", [_dec8], Object.getOwnPropertyDescriptor(_class2.prototype, "onAfterBinding"), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, "isPageReady", [_dec9, _dec10], Object.getOwnPropertyDescriptor(_class2.prototype, "isPageReady"), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, "waitPageReady", [_dec11, _dec12], Object.getOwnPropertyDescriptor(_class2.prototype, "waitPageReady"), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, "attachEventOnce", [_dec13, _dec14], Object.getOwnPropertyDescriptor(_class2.prototype, "attachEventOnce"), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, "attachEvent", [_dec15, _dec16], Object.getOwnPropertyDescriptor(_class2.prototype, "attachEvent"), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, "detachEvent", [_dec17, _dec18], Object.getOwnPropertyDescriptor(_class2.prototype, "detachEvent"), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, "isContextExpected", [_dec19, _dec20], Object.getOwnPropertyDescriptor(_class2.prototype, "isContextExpected"), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, "checkPageReadyDebounced", [_dec21], Object.getOwnPropertyDescriptor(_class2.prototype, "checkPageReadyDebounced"), _class2.prototype)), _class2)) || _class);
|
|
275
275
|
return PageReadyControllerExtension;
|
|
276
276
|
}, false);
|
|
277
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJQYWdlUmVhZHlDb250cm9sbGVyRXh0ZW5zaW9uIiwiZGVmaW5lVUk1Q2xhc3MiLCJtZXRob2RPdmVycmlkZSIsInB1YmxpY0V4dGVuc2lvbiIsImZpbmFsRXh0ZW5zaW9uIiwicHJpdmF0ZUV4dGVuc2lvbiIsImV4dGVuc2libGUiLCJPdmVycmlkZUV4ZWN1dGlvbiIsIkluc3RlYWQiLCJwYWdlUmVhZHlUaW1lb3V0RGVmYXVsdCIsIm9uSW5pdCIsIl9uYldhaXRzIiwiX29FdmVudFByb3ZpZGVyIiwiRXZlbnRQcm92aWRlciIsInZpZXciLCJnZXRWaWV3IiwiYXBwQ29tcG9uZW50IiwiQ29tbW9uVXRpbHMiLCJnZXRBcHBDb21wb25lbnQiLCJwYWdlQ29tcG9uZW50IiwiQ29tcG9uZW50IiwiZ2V0T3duZXJDb21wb25lbnRGb3IiLCJtYW5pZmVzdENvbnRlbnQiLCJnZXRNYW5pZmVzdCIsInBhZ2VSZWFkeVRpbWVvdXQiLCJhdHRhY2hDb250YWluZXJEZWZpbmVkIiwib0V2ZW50IiwicmVnaXN0ZXJDb250YWluZXIiLCJnZXRQYXJhbWV0ZXIiLCJyb290Q29udHJvbENvbnRyb2xsZXIiLCJnZXRSb290Q29udHJvbCIsImdldENvbnRyb2xsZXIiLCJwbGFjZWhvbGRlciIsImdldFBsYWNlaG9sZGVyIiwiaXNQbGFjZWhvbGRlckRlYnVnRW5hYmxlZCIsImF0dGFjaEV2ZW50IiwiZ2V0UGxhY2Vob2xkZXJEZWJ1Z1N0YXRzIiwiaVBhZ2VSZWFkeUV2ZW50VGltZXN0YW1wIiwiRGF0ZSIsIm5vdyIsImlIZXJvZXNCYXRjaFJlY2VpdmVkRXZlbnRUaW1lc3RhbXAiLCJxdWVyeVdhdGNoZXIiLCJEYXRhUXVlcnlXYXRjaGVyIiwiY2hlY2tQYWdlUmVhZHlEZWJvdW5jZWQiLCJiaW5kIiwib25FeGl0IiwiX29BcHBDb21wb25lbnQiLCJfb0NvbnRhaW5lciIsIl9mbkNvbnRhaW5lckRlbGVnYXRlIiwicmVtb3ZlRXZlbnREZWxlZ2F0ZSIsIndhaXRGb3IiLCJvUHJvbWlzZSIsImZpbmFsbHkiLCJzZXRUaW1lb3V0IiwiY2F0Y2giLCJvblJvdXRlTWF0Y2hlZCIsIl9iSXNQYWdlUmVhZHkiLCJvblJvdXRlTWF0Y2hlZEZpbmlzaGVkIiwib25BZnRlckJpbmRpbmdQcm9taXNlIiwicmVnaXN0ZXJBZ2dyZWdhdGVkQ29udHJvbHMiLCJtYWluQmluZGluZ0NvbnRleHQiLCJtYWluT2JqZWN0QmluZGluZyIsImdldEJpbmRpbmciLCJyZWdpc3RlckJpbmRpbmciLCJhUHJvbWlzZXMiLCJhQ29udHJvbHMiLCJmaW5kQWdncmVnYXRlZE9iamVjdHMiLCJmb3JFYWNoIiwib0VsZW1lbnQiLCJvT2JqZWN0QmluZGluZyIsImdldE9iamVjdEJpbmRpbmciLCJhQmluZGluZ0tleXMiLCJPYmplY3QiLCJrZXlzIiwibUJpbmRpbmdJbmZvcyIsInNQcm9wZXJ0eU5hbWUiLCJvTGlzdEJpbmRpbmciLCJiaW5kaW5nIiwiaXNBIiwiYlRhYmxlc0NoYXJ0c0xvYWRlZCIsInB1c2giLCJyZWdpc3RlclRhYmxlT3JDaGFydCIsInJlZ2lzdGVyRmlsdGVyQmFyIiwib25BZnRlckJpbmRpbmciLCJvQmluZGluZ0NvbnRleHQiLCJwYXJhbWV0ZXJzIiwicGFnZVJlYWR5VGltZW91dFRpbWVyIiwiY2xlYXJUaW1lb3V0IiwiZGVmZXJyZWRDcmVhdGlvbiIsImlzQ29udGV4dEV4cGVjdGVkIiwiTG9nIiwiZXJyb3IiLCJmaXJlRXZlbnQiLCJkaXNhYmxlQW5pbWF0aW9uIiwiYkhhc0NvbnRleHQiLCJfYkFmdGVyQmluZGluZ0FscmVhZHlBcHBsaWVkIiwiYXR0YWNoRXZlbnRPbmNlIiwidW5kZWZpbmVkIiwicmVzZXQiLCJQcm9taXNlIiwicmVzb2x2ZSIsImFUYWJsZUNoYXJ0SW5pdGlhbGl6ZWRQcm9taXNlcyIsImxlbmd0aCIsImFsbCIsImlzUGFnZVJlYWR5Iiwid2FpdFBhZ2VSZWFkeSIsInNFdmVudElkIiwib0RhdGEiLCJmbkZ1bmN0aW9uIiwib0xpc3RlbmVyIiwiZGV0YWNoRXZlbnQiLCJvQ29udGFpbmVyIiwib25CZWZvcmVTaG93IiwiYlNob3duIiwib25CZWZvcmVIaWRlIiwib25BZnRlclNob3ciLCJ0aGVuIiwiYWRkRXZlbnREZWxlZ2F0ZSIsImJGcm9tTmF2IiwicGFnZVJlYWR5VGltZXIiLCJtb2RlbCIsImdldE1vZGVsIiwidGltZU91dCIsImdldE9wdGltaXN0aWNCYXRjaEVuYWJsZXIiLCJfY2hlY2tQYWdlUmVhZHkiLCJmblVJVXBkYXRlZCIsIlJlbmRlcmluZyIsImlzUGVuZGluZyIsImRldGFjaFVJVXBkYXRlZCIsIl9iV2FpdGluZ0ZvclJlZnJlc2giLCJjaGVja1VJVXBkYXRlZCIsImlzRGF0YVJlY2VpdmVkIiwicmVzZXREYXRhUmVjZWl2ZWQiLCJhdHRhY2hVSVVwZGF0ZWQiLCJUZW1wbGF0ZWRWaWV3U2VydmljZUZhY3RvcnkiLCJnZXROdW1iZXJPZlZpZXdzSW5DcmVhdGlvblN0YXRlIiwiaXNTZWFyY2hQZW5kaW5nIiwiZm9yY2VQYWdlUmVhZHkiLCJDb250cm9sbGVyRXh0ZW5zaW9uIl0sInNvdXJjZVJvb3QiOiIuIiwic291cmNlcyI6WyJQYWdlUmVhZHkudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IExvZyBmcm9tIFwic2FwL2Jhc2UvTG9nXCI7XG5pbXBvcnQgeyBkZWZpbmVVSTVDbGFzcywgZXh0ZW5zaWJsZSwgZmluYWxFeHRlbnNpb24sIG1ldGhvZE92ZXJyaWRlLCBwcml2YXRlRXh0ZW5zaW9uLCBwdWJsaWNFeHRlbnNpb24gfSBmcm9tIFwic2FwL2ZlL2Jhc2UvQ2xhc3NTdXBwb3J0XCI7XG5pbXBvcnQgdHlwZSBBcHBDb21wb25lbnQgZnJvbSBcInNhcC9mZS9jb3JlL0FwcENvbXBvbmVudFwiO1xuaW1wb3J0IHR5cGUgUGFnZUNvbnRyb2xsZXIgZnJvbSBcInNhcC9mZS9jb3JlL1BhZ2VDb250cm9sbGVyXCI7XG5pbXBvcnQgRGF0YVF1ZXJ5V2F0Y2hlciBmcm9tIFwic2FwL2ZlL2NvcmUvY29udHJvbGxlcmV4dGVuc2lvbnMvcGFnZVJlYWR5L0RhdGFRdWVyeVdhdGNoZXJcIjtcbmltcG9ydCBUZW1wbGF0ZWRWaWV3U2VydmljZUZhY3RvcnkgZnJvbSBcInNhcC9mZS9jb3JlL3NlcnZpY2VzL1RlbXBsYXRlZFZpZXdTZXJ2aWNlRmFjdG9yeVwiO1xuaW1wb3J0IHR5cGUgRmlsdGVyQmFyIGZyb20gXCJzYXAvZmUvbWFjcm9zL2NvbnRyb2xzL0ZpbHRlckJhclwiO1xuaW1wb3J0IHR5cGUgRXZlbnQgZnJvbSBcInNhcC91aS9iYXNlL0V2ZW50XCI7XG5pbXBvcnQgRXZlbnRQcm92aWRlciBmcm9tIFwic2FwL3VpL2Jhc2UvRXZlbnRQcm92aWRlclwiO1xuaW1wb3J0IHR5cGUgTWFuYWdlZE9iamVjdCBmcm9tIFwic2FwL3VpL2Jhc2UvTWFuYWdlZE9iamVjdFwiO1xuaW1wb3J0IENvbXBvbmVudCBmcm9tIFwic2FwL3VpL2NvcmUvQ29tcG9uZW50XCI7XG5pbXBvcnQgdHlwZSBDb21wb25lbnRDb250YWluZXIgZnJvbSBcInNhcC91aS9jb3JlL0NvbXBvbmVudENvbnRhaW5lclwiO1xuaW1wb3J0IHR5cGUgQ29udHJvbCBmcm9tIFwic2FwL3VpL2NvcmUvQ29udHJvbFwiO1xuaW1wb3J0IFJlbmRlcmluZyBmcm9tIFwic2FwL3VpL2NvcmUvUmVuZGVyaW5nXCI7XG5pbXBvcnQgQ29udHJvbGxlckV4dGVuc2lvbiBmcm9tIFwic2FwL3VpL2NvcmUvbXZjL0NvbnRyb2xsZXJFeHRlbnNpb25cIjtcbmltcG9ydCBPdmVycmlkZUV4ZWN1dGlvbiBmcm9tIFwic2FwL3VpL2NvcmUvbXZjL092ZXJyaWRlRXhlY3V0aW9uXCI7XG5pbXBvcnQgdHlwZSBWaWV3IGZyb20gXCJzYXAvdWkvY29yZS9tdmMvVmlld1wiO1xuaW1wb3J0IHR5cGUgQ2hhcnQgZnJvbSBcInNhcC91aS9tZGMvQ2hhcnRcIjtcbmltcG9ydCB0eXBlIE1EQ1RhYmxlIGZyb20gXCJzYXAvdWkvbWRjL1RhYmxlXCI7XG5pbXBvcnQgdHlwZSBCaW5kaW5nIGZyb20gXCJzYXAvdWkvbW9kZWwvQmluZGluZ1wiO1xuaW1wb3J0IHR5cGUgQ29udGV4dCBmcm9tIFwic2FwL3VpL21vZGVsL29kYXRhL3Y0L0NvbnRleHRcIjtcbmltcG9ydCB0eXBlIE9EYXRhTGlzdEJpbmRpbmcgZnJvbSBcInNhcC91aS9tb2RlbC9vZGF0YS92NC9PRGF0YUxpc3RCaW5kaW5nXCI7XG5pbXBvcnQgdHlwZSBPRGF0YU1vZGVsIGZyb20gXCJzYXAvdWkvbW9kZWwvb2RhdGEvdjQvT0RhdGFNb2RlbFwiO1xuaW1wb3J0IENvbW1vblV0aWxzIGZyb20gXCIuLi9Db21tb25VdGlsc1wiO1xuXG50eXBlIFJlbmRlcmluZ0V4ID0gdHlwZW9mIFJlbmRlcmluZyAmIHtcblx0YXR0YWNoVUlVcGRhdGVkOiBGdW5jdGlvbjtcblx0ZGV0YWNoVUlVcGRhdGVkOiBGdW5jdGlvbjtcbn07XG5AZGVmaW5lVUk1Q2xhc3MoXCJzYXAuZmUuY29yZS5jb250cm9sbGVyZXh0ZW5zaW9ucy5QYWdlUmVhZHlcIilcbmNsYXNzIFBhZ2VSZWFkeUNvbnRyb2xsZXJFeHRlbnNpb24gZXh0ZW5kcyBDb250cm9sbGVyRXh0ZW5zaW9uIHtcblx0cHJvdGVjdGVkIGJhc2UhOiBQYWdlQ29udHJvbGxlcjtcblxuXHRwcml2YXRlIF9vRXZlbnRQcm92aWRlciE6IEV2ZW50UHJvdmlkZXI7XG5cblx0cHJpdmF0ZSB2aWV3ITogVmlldztcblxuXHRwcml2YXRlIGFwcENvbXBvbmVudCE6IEFwcENvbXBvbmVudDtcblxuXHRwcml2YXRlIHBhZ2VDb21wb25lbnQhOiBDb21wb25lbnQ7XG5cblx0cHJpdmF0ZSBfb0NvbnRhaW5lciE6IENvbnRyb2w7XG5cblx0cHJpdmF0ZSBfYkFmdGVyQmluZGluZ0FscmVhZHlBcHBsaWVkITogYm9vbGVhbjtcblxuXHRwcml2YXRlIF9mbkNvbnRhaW5lckRlbGVnYXRlPzogb2JqZWN0O1xuXG5cdHByaXZhdGUgX25iV2FpdHMhOiBudW1iZXI7XG5cblx0cHJpdmF0ZSBfYklzUGFnZVJlYWR5ITogYm9vbGVhbjtcblxuXHRwcml2YXRlIF9iV2FpdGluZ0ZvclJlZnJlc2ghOiBib29sZWFuO1xuXG5cdHByaXZhdGUgYlNob3duITogYm9vbGVhbjtcblxuXHRwcml2YXRlIGJIYXNDb250ZXh0ITogYm9vbGVhbjtcblxuXHRwcml2YXRlIGJUYWJsZXNDaGFydHNMb2FkZWQ/OiBib29sZWFuO1xuXG5cdHByaXZhdGUgcGFnZVJlYWR5VGltZXI6IG51bWJlciB8IHVuZGVmaW5lZDtcblxuXHRwcml2YXRlIHF1ZXJ5V2F0Y2hlciE6IERhdGFRdWVyeVdhdGNoZXI7XG5cblx0cHJpdmF0ZSBvbkFmdGVyQmluZGluZ1Byb21pc2UhOiBQcm9taXNlPHZvaWQ+O1xuXG5cdHByaXZhdGUgcGFnZVJlYWR5VGltZW91dERlZmF1bHQgPSA3MDAwO1xuXG5cdHByaXZhdGUgcGFnZVJlYWR5VGltZW91dFRpbWVyPzogbnVtYmVyO1xuXG5cdHByaXZhdGUgcGFnZVJlYWR5VGltZW91dD86IG51bWJlcjtcblxuXHRjb25zdHJ1Y3RvcigpIHtcblx0XHRzdXBlcigpO1xuXHR9XG5cblx0QG1ldGhvZE92ZXJyaWRlKClcblx0cHVibGljIG9uSW5pdCgpOiB2b2lkIHtcblx0XHR0aGlzLl9uYldhaXRzID0gMDtcblx0XHR0aGlzLl9vRXZlbnRQcm92aWRlciA9IHRoaXMuX29FdmVudFByb3ZpZGVyID8gdGhpcy5fb0V2ZW50UHJvdmlkZXIgOiBuZXcgRXZlbnRQcm92aWRlcigpO1xuXHRcdHRoaXMudmlldyA9IHRoaXMuZ2V0VmlldygpO1xuXG5cdFx0dGhpcy5hcHBDb21wb25lbnQgPSBDb21tb25VdGlscy5nZXRBcHBDb21wb25lbnQodGhpcy52aWV3KTtcblx0XHR0aGlzLnBhZ2VDb21wb25lbnQgPSBDb21wb25lbnQuZ2V0T3duZXJDb21wb25lbnRGb3IodGhpcy52aWV3KSBhcyBDb21wb25lbnQ7XG5cdFx0Y29uc3QgbWFuaWZlc3RDb250ZW50ID0gdGhpcy5hcHBDb21wb25lbnQuZ2V0TWFuaWZlc3QoKTtcblx0XHR0aGlzLnBhZ2VSZWFkeVRpbWVvdXQgPSBtYW5pZmVzdENvbnRlbnRbXCJzYXAudWk1XCJdPy5wYWdlUmVhZHlUaW1lb3V0ID8/IHRoaXMucGFnZVJlYWR5VGltZW91dERlZmF1bHQ7XG5cblx0XHRpZiAodGhpcy5wYWdlQ29tcG9uZW50Py5hdHRhY2hDb250YWluZXJEZWZpbmVkKSB7XG5cdFx0XHR0aGlzLnBhZ2VDb21wb25lbnQuYXR0YWNoQ29udGFpbmVyRGVmaW5lZCgob0V2ZW50OiBFdmVudDx7IGNvbnRhaW5lcjogQ29tcG9uZW50Q29udGFpbmVyIH0+KSA9PlxuXHRcdFx0XHR0aGlzLnJlZ2lzdGVyQ29udGFpbmVyKG9FdmVudC5nZXRQYXJhbWV0ZXIoXCJjb250YWluZXJcIikpXG5cdFx0XHQpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHR0aGlzLnJlZ2lzdGVyQ29udGFpbmVyKHRoaXMudmlldyk7XG5cdFx0fVxuXG5cdFx0Y29uc3Qgcm9vdENvbnRyb2xDb250cm9sbGVyID0gdGhpcy5hcHBDb21wb25lbnQuZ2V0Um9vdENvbnRyb2woKS5nZXRDb250cm9sbGVyKCk7XG5cdFx0Y29uc3QgcGxhY2Vob2xkZXIgPSByb290Q29udHJvbENvbnRyb2xsZXI/LmdldFBsYWNlaG9sZGVyPy4oKTtcblx0XHRpZiAocGxhY2Vob2xkZXI/LmlzUGxhY2Vob2xkZXJEZWJ1Z0VuYWJsZWQoKSkge1xuXHRcdFx0dGhpcy5hdHRhY2hFdmVudChcblx0XHRcdFx0XCJwYWdlUmVhZHlcIixcblx0XHRcdFx0bnVsbCxcblx0XHRcdFx0KCkgPT4ge1xuXHRcdFx0XHRcdHBsYWNlaG9sZGVyLmdldFBsYWNlaG9sZGVyRGVidWdTdGF0cygpLmlQYWdlUmVhZHlFdmVudFRpbWVzdGFtcCA9IERhdGUubm93KCk7XG5cdFx0XHRcdH0sXG5cdFx0XHRcdHRoaXNcblx0XHRcdCk7XG5cdFx0XHR0aGlzLmF0dGFjaEV2ZW50KFxuXHRcdFx0XHRcImhlcm9lc0JhdGNoUmVjZWl2ZWRcIixcblx0XHRcdFx0bnVsbCxcblx0XHRcdFx0KCkgPT4ge1xuXHRcdFx0XHRcdHBsYWNlaG9sZGVyLmdldFBsYWNlaG9sZGVyRGVidWdTdGF0cygpLmlIZXJvZXNCYXRjaFJlY2VpdmVkRXZlbnRUaW1lc3RhbXAgPSBEYXRlLm5vdygpO1xuXHRcdFx0XHR9LFxuXHRcdFx0XHR0aGlzXG5cdFx0XHQpO1xuXHRcdH1cblxuXHRcdHRoaXMucXVlcnlXYXRjaGVyID0gbmV3IERhdGFRdWVyeVdhdGNoZXIodGhpcy5fb0V2ZW50UHJvdmlkZXIsIHRoaXMuY2hlY2tQYWdlUmVhZHlEZWJvdW5jZWQuYmluZCh0aGlzKSk7XG5cdH1cblxuXHRAbWV0aG9kT3ZlcnJpZGUoKVxuXHRwdWJsaWMgb25FeGl0KCk6IHZvaWQge1xuXHRcdC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvYmFuLXRzLWNvbW1lbnRcblx0XHQvLyBAdHMtaWdub3JlXG5cdFx0ZGVsZXRlIHRoaXMuX29BcHBDb21wb25lbnQ7XG5cdFx0aWYgKHRoaXMuX29Db250YWluZXIgJiYgdGhpcy5fZm5Db250YWluZXJEZWxlZ2F0ZSkge1xuXHRcdFx0dGhpcy5fb0NvbnRhaW5lci5yZW1vdmVFdmVudERlbGVnYXRlKHRoaXMuX2ZuQ29udGFpbmVyRGVsZWdhdGUpO1xuXHRcdH1cblx0fVxuXG5cdEBwdWJsaWNFeHRlbnNpb24oKVxuXHRAZmluYWxFeHRlbnNpb24oKVxuXHRwdWJsaWMgd2FpdEZvcihvUHJvbWlzZTogUHJvbWlzZTx1bmtub3duPik6IHZvaWQge1xuXHRcdHRoaXMuX25iV2FpdHMrKztcblx0XHRvUHJvbWlzZVxuXHRcdFx0LmZpbmFsbHkoKCkgPT4ge1xuXHRcdFx0XHRzZXRUaW1lb3V0KCgpID0+IHtcblx0XHRcdFx0XHR0aGlzLl9uYldhaXRzLS07XG5cdFx0XHRcdH0sIDApO1xuXHRcdFx0fSlcblx0XHRcdC5jYXRjaChudWxsKTtcblx0fVxuXG5cdEBtZXRob2RPdmVycmlkZShcIl9yb3V0aW5nXCIpXG5cdG9uUm91dGVNYXRjaGVkKCk6IHZvaWQge1xuXHRcdHRoaXMuX2JJc1BhZ2VSZWFkeSA9IGZhbHNlO1xuXHR9XG5cblx0QG1ldGhvZE92ZXJyaWRlKFwiX3JvdXRpbmdcIilcblx0YXN5bmMgb25Sb3V0ZU1hdGNoZWRGaW5pc2hlZCgpOiBQcm9taXNlPHZvaWQ+IHtcblx0XHRhd2FpdCB0aGlzLm9uQWZ0ZXJCaW5kaW5nUHJvbWlzZTtcblx0XHR0aGlzLmNoZWNrUGFnZVJlYWR5RGVib3VuY2VkKCk7XG5cdH1cblxuXHRwdWJsaWMgcmVnaXN0ZXJBZ2dyZWdhdGVkQ29udHJvbHMobWFpbkJpbmRpbmdDb250ZXh0PzogQ29udGV4dCk6IFByb21pc2U8dm9pZD5bXSB7XG5cdFx0aWYgKG1haW5CaW5kaW5nQ29udGV4dCkge1xuXHRcdFx0Y29uc3QgbWFpbk9iamVjdEJpbmRpbmcgPSBtYWluQmluZGluZ0NvbnRleHQuZ2V0QmluZGluZygpO1xuXHRcdFx0dGhpcy5xdWVyeVdhdGNoZXIucmVnaXN0ZXJCaW5kaW5nKG1haW5PYmplY3RCaW5kaW5nKTtcblx0XHR9XG5cblx0XHRjb25zdCBhUHJvbWlzZXM6IFByb21pc2U8dm9pZD5bXSA9IFtdO1xuXHRcdGNvbnN0IGFDb250cm9scyA9IHRoaXMuZ2V0VmlldygpLmZpbmRBZ2dyZWdhdGVkT2JqZWN0cyh0cnVlKTtcblxuXHRcdGFDb250cm9scy5mb3JFYWNoKChvRWxlbWVudDogTWFuYWdlZE9iamVjdCAmIHsgbUJpbmRpbmdJbmZvcz86IFJlY29yZDxzdHJpbmcsIHsgYmluZGluZz86IEJpbmRpbmcgfT4gfSk6IHZvaWQgPT4ge1xuXHRcdFx0Y29uc3Qgb09iamVjdEJpbmRpbmcgPSBvRWxlbWVudC5nZXRPYmplY3RCaW5kaW5nKCk7XG5cdFx0XHRpZiAob09iamVjdEJpbmRpbmcpIHtcblx0XHRcdFx0Ly8gUmVnaXN0ZXIgb24gYWxsIG9iamVjdCBiaW5kaW5nIChtb3N0bHkgdXNlZCBvbiBvYmplY3QgcGFnZXMpXG5cdFx0XHRcdHRoaXMucXVlcnlXYXRjaGVyLnJlZ2lzdGVyQmluZGluZyhvT2JqZWN0QmluZGluZyk7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRjb25zdCBhQmluZGluZ0tleXMgPSBPYmplY3Qua2V5cyhvRWxlbWVudD8ubUJpbmRpbmdJbmZvcyA/PyB7fSk7XG5cdFx0XHRcdGFCaW5kaW5nS2V5cy5mb3JFYWNoKChzUHJvcGVydHlOYW1lKSA9PiB7XG5cdFx0XHRcdFx0Y29uc3Qgb0xpc3RCaW5kaW5nID0gb0VsZW1lbnQ/Lm1CaW5kaW5nSW5mb3M/LltzUHJvcGVydHlOYW1lXS5iaW5kaW5nO1xuXG5cdFx0XHRcdFx0aWYgKG9MaXN0QmluZGluZyAmJiBvTGlzdEJpbmRpbmcuaXNBPE9EYXRhTGlzdEJpbmRpbmc+KFwic2FwLnVpLm1vZGVsLm9kYXRhLnY0Lk9EYXRhTGlzdEJpbmRpbmdcIikpIHtcblx0XHRcdFx0XHRcdHRoaXMucXVlcnlXYXRjaGVyLnJlZ2lzdGVyQmluZGluZyhvTGlzdEJpbmRpbmcpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSk7XG5cdFx0XHR9XG5cdFx0XHQvLyBUaGlzIGlzIGRpcnR5IGJ1dCBNRENUYWJsZXMgYW5kIE1EQ0NoYXJ0cyBoYXZlIGEgd2VpcmQgbG9hZGluZyBsaWZlY3ljbGVcblx0XHRcdGlmIChvRWxlbWVudC5pc0E8TURDVGFibGU+KFwic2FwLnVpLm1kYy5UYWJsZVwiKSB8fCBvRWxlbWVudC5pc0E8Q2hhcnQ+KFwic2FwLnVpLm1kYy5DaGFydFwiKSkge1xuXHRcdFx0XHR0aGlzLmJUYWJsZXNDaGFydHNMb2FkZWQgPSBmYWxzZTtcblx0XHRcdFx0YVByb21pc2VzLnB1c2godGhpcy5xdWVyeVdhdGNoZXIucmVnaXN0ZXJUYWJsZU9yQ2hhcnQob0VsZW1lbnQpKTtcblx0XHRcdH0gZWxzZSBpZiAob0VsZW1lbnQuaXNBPEZpbHRlckJhcj4oXCJzYXAuZmUubWFjcm9zLmNvbnRyb2xzLkZpbHRlckJhclwiKSkge1xuXHRcdFx0XHR0aGlzLnF1ZXJ5V2F0Y2hlci5yZWdpc3RlckZpbHRlckJhcihvRWxlbWVudCk7XG5cdFx0XHR9XG5cdFx0fSk7XG5cblx0XHRyZXR1cm4gYVByb21pc2VzO1xuXHR9XG5cblx0QG1ldGhvZE92ZXJyaWRlKFwiX3JvdXRpbmdcIilcblx0b25BZnRlckJpbmRpbmcob0JpbmRpbmdDb250ZXh0PzogQ29udGV4dCwgcGFyYW1ldGVycz86IHsgZGVmZXJyZWRDcmVhdGlvbj86IGJvb2xlYW4gfSk6IHZvaWQge1xuXHRcdC8vIEluIGNhc2UgdGhlIHBhZ2UgaXMgcmViaW5kIHdlIG5lZWQgdG8gY2xlYXIgdGhlIHRpbWVyIChlZzogaW4gRkNMLCB0aGUgdXNlciBjYW4gc2VsZWN0IDIgaXRlbXMgc3VjY2Vzc2l2ZWx5IGluIHRoZSBsaXN0IHJlcG9ydClcblx0XHRpZiAodGhpcy5wYWdlUmVhZHlUaW1lb3V0VGltZXIpIHtcblx0XHRcdGNsZWFyVGltZW91dCh0aGlzLnBhZ2VSZWFkeVRpbWVvdXRUaW1lcik7XG5cdFx0fVxuXG5cdFx0aWYgKCFwYXJhbWV0ZXJzPy5kZWZlcnJlZENyZWF0aW9uIHx8ICF0aGlzLmlzQ29udGV4dEV4cGVjdGVkKCkgfHwgb0JpbmRpbmdDb250ZXh0KSB7XG5cdFx0XHR0aGlzLnBhZ2VSZWFkeVRpbWVvdXRUaW1lciA9IHNldFRpbWVvdXQoKCkgPT4ge1xuXHRcdFx0XHRMb2cuZXJyb3IoXG5cdFx0XHRcdFx0YFRoZSBQYWdlUmVhZHkgRXZlbnQgd2FzIG5vdCBmaXJlZCB3aXRoaW4gdGhlICR7dGhpcy5wYWdlUmVhZHlUaW1lb3V0fSBtcyB0aW1lb3V0IC4gSXQgaGFzIGJlZW4gZm9yY2VkLiBQbGVhc2UgY29udGFjdCB5b3VyIGFwcGxpY2F0aW9uIGRldmVsb3BlciBmb3IgZnVydGhlciBhbmFseXNpc2Bcblx0XHRcdFx0KTtcblx0XHRcdFx0dGhpcy5fb0V2ZW50UHJvdmlkZXIuZmlyZUV2ZW50KFwicGFnZVJlYWR5XCIpO1xuXHRcdFx0fSwgdGhpcy5wYWdlUmVhZHlUaW1lb3V0KTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0Ly8gV2UgYXJlIGluIGRlZmVycmVkIGNyZWF0aW9uIHdpdGggbm8gY29udGV4dCwgd2UgbmVlZCB0byB3YWl0IGZvciB0aGUgY29udGV4dCB0byBiZSBzZXQgYnkgdGhlIGNyZWF0ZSBkaWFsb2dcblx0XHRcdC8vIFdlIGFsc28gbmVlZCB0byBkaXNhYmxlIHRoZSBwbGFjZWhvbGRlciBhbmltYXRpb25cblx0XHRcdGNvbnN0IHJvb3RDb250cm9sQ29udHJvbGxlciA9IHRoaXMuYXBwQ29tcG9uZW50LmdldFJvb3RDb250cm9sKCkuZ2V0Q29udHJvbGxlcigpO1xuXHRcdFx0Y29uc3QgcGxhY2Vob2xkZXIgPSByb290Q29udHJvbENvbnRyb2xsZXI/LmdldFBsYWNlaG9sZGVyPy4oKTtcblx0XHRcdHBsYWNlaG9sZGVyPy5kaXNhYmxlQW5pbWF0aW9uKCk7XG5cdFx0fVxuXG5cdFx0aWYgKHRoaXMuaXNDb250ZXh0RXhwZWN0ZWQoKSAmJiAhb0JpbmRpbmdDb250ZXh0KSB7XG5cdFx0XHQvLyBGb3JjZSB0byBtZW50aW9uIHdlIGFyZSBleHBlY3RpbmcgZGF0YVxuXHRcdFx0dGhpcy5iSGFzQ29udGV4dCA9IGZhbHNlO1xuXHRcdFx0cmV0dXJuO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHR0aGlzLmJIYXNDb250ZXh0ID0gdHJ1ZTtcblx0XHR9XG5cblx0XHRpZiAodGhpcy5fYkFmdGVyQmluZGluZ0FscmVhZHlBcHBsaWVkKSB7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXG5cdFx0dGhpcy5fYkFmdGVyQmluZGluZ0FscmVhZHlBcHBsaWVkID0gdHJ1ZTtcblxuXHRcdHRoaXMuYXR0YWNoRXZlbnRPbmNlKFwicGFnZVJlYWR5XCIsIG51bGwsICgpID0+IHtcblx0XHRcdGNsZWFyVGltZW91dCh0aGlzLnBhZ2VSZWFkeVRpbWVvdXRUaW1lcik7XG5cdFx0XHR0aGlzLnBhZ2VSZWFkeVRpbWVvdXRUaW1lciA9IHVuZGVmaW5lZDtcblx0XHRcdHRoaXMuX2JBZnRlckJpbmRpbmdBbHJlYWR5QXBwbGllZCA9IGZhbHNlO1xuXHRcdFx0dGhpcy5xdWVyeVdhdGNoZXIucmVzZXQoKTtcblx0XHR9KTtcblxuXHRcdHRoaXMub25BZnRlckJpbmRpbmdQcm9taXNlID0gbmV3IFByb21pc2U8dm9pZD4oYXN5bmMgKHJlc29sdmUpOiBQcm9taXNlPHZvaWQ+ID0+IHtcblx0XHRcdGNvbnN0IGFUYWJsZUNoYXJ0SW5pdGlhbGl6ZWRQcm9taXNlcyA9IHRoaXMucmVnaXN0ZXJBZ2dyZWdhdGVkQ29udHJvbHMob0JpbmRpbmdDb250ZXh0KTtcblxuXHRcdFx0aWYgKGFUYWJsZUNoYXJ0SW5pdGlhbGl6ZWRQcm9taXNlcy5sZW5ndGggPiAwKSB7XG5cdFx0XHRcdGF3YWl0IFByb21pc2UuYWxsKGFUYWJsZUNoYXJ0SW5pdGlhbGl6ZWRQcm9taXNlcyk7XG5cdFx0XHRcdHRoaXMuYlRhYmxlc0NoYXJ0c0xvYWRlZCA9IHRydWU7XG5cdFx0XHRcdHRoaXMuY2hlY2tQYWdlUmVhZHlEZWJvdW5jZWQoKTtcblx0XHRcdFx0cmVzb2x2ZSgpO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0dGhpcy5jaGVja1BhZ2VSZWFkeURlYm91bmNlZCgpO1xuXHRcdFx0XHRyZXNvbHZlKCk7XG5cdFx0XHR9XG5cdFx0fSk7XG5cdH1cblxuXHRAcHVibGljRXh0ZW5zaW9uKClcblx0QGZpbmFsRXh0ZW5zaW9uKClcblx0cHVibGljIGlzUGFnZVJlYWR5KCk6IGJvb2xlYW4ge1xuXHRcdHJldHVybiB0aGlzLl9iSXNQYWdlUmVhZHk7XG5cdH1cblxuXHRAcHVibGljRXh0ZW5zaW9uKClcblx0QGZpbmFsRXh0ZW5zaW9uKClcblx0cHVibGljIGFzeW5jIHdhaXRQYWdlUmVhZHkoKTogUHJvbWlzZTx2b2lkPiB7XG5cdFx0cmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiB7XG5cdFx0XHRpZiAodGhpcy5pc1BhZ2VSZWFkeSgpKSB7XG5cdFx0XHRcdHJlc29sdmUoKTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdHRoaXMuYXR0YWNoRXZlbnRPbmNlKFxuXHRcdFx0XHRcdFwicGFnZVJlYWR5XCIsXG5cdFx0XHRcdFx0bnVsbCxcblx0XHRcdFx0XHQoKSA9PiB7XG5cdFx0XHRcdFx0XHRyZXNvbHZlKCk7XG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0XHR0aGlzXG5cdFx0XHRcdCk7XG5cdFx0XHR9XG5cdFx0fSk7XG5cdH1cblxuXHRAcHVibGljRXh0ZW5zaW9uKClcblx0QGZpbmFsRXh0ZW5zaW9uKClcblx0cHVibGljIGF0dGFjaEV2ZW50T25jZShzRXZlbnRJZDogc3RyaW5nLCBvRGF0YTogb2JqZWN0IHwgbnVsbCwgZm5GdW5jdGlvbj86IEZ1bmN0aW9uLCBvTGlzdGVuZXI/OiBvYmplY3QpOiBFdmVudFByb3ZpZGVyIHtcblx0XHQvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcHJlZmVyLXJlc3QtcGFyYW1zXG5cdFx0cmV0dXJuIHRoaXMuX29FdmVudFByb3ZpZGVyLmF0dGFjaEV2ZW50T25jZShzRXZlbnRJZCwgb0RhdGEgYXMgb2JqZWN0LCBmbkZ1bmN0aW9uIGFzIEZ1bmN0aW9uLCBvTGlzdGVuZXIpO1xuXHR9XG5cblx0QHB1YmxpY0V4dGVuc2lvbigpXG5cdEBmaW5hbEV4dGVuc2lvbigpXG5cdHB1YmxpYyBhdHRhY2hFdmVudChzRXZlbnRJZDogc3RyaW5nLCBvRGF0YTogb2JqZWN0IHwgbnVsbCwgZm5GdW5jdGlvbjogRnVuY3Rpb24sIG9MaXN0ZW5lcjogb2JqZWN0KTogRXZlbnRQcm92aWRlciB7XG5cdFx0Ly8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHByZWZlci1yZXN0LXBhcmFtc1xuXHRcdHJldHVybiB0aGlzLl9vRXZlbnRQcm92aWRlci5hdHRhY2hFdmVudChzRXZlbnRJZCwgb0RhdGEgYXMgb2JqZWN0LCBmbkZ1bmN0aW9uLCBvTGlzdGVuZXIpO1xuXHR9XG5cblx0QHB1YmxpY0V4dGVuc2lvbigpXG5cdEBmaW5hbEV4dGVuc2lvbigpXG5cdHB1YmxpYyBkZXRhY2hFdmVudChzRXZlbnRJZDogc3RyaW5nLCBmbkZ1bmN0aW9uOiBGdW5jdGlvbik6IEV2ZW50UHJvdmlkZXIge1xuXHRcdC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBwcmVmZXItcmVzdC1wYXJhbXNcblx0XHRyZXR1cm4gdGhpcy5fb0V2ZW50UHJvdmlkZXIuZGV0YWNoRXZlbnQoc0V2ZW50SWQsIGZuRnVuY3Rpb24pO1xuXHR9XG5cblx0cHJpdmF0ZSByZWdpc3RlckNvbnRhaW5lcihvQ29udGFpbmVyOiBDb250cm9sKTogdm9pZCB7XG5cdFx0dGhpcy5fb0NvbnRhaW5lciA9IG9Db250YWluZXI7XG5cdFx0dGhpcy5fZm5Db250YWluZXJEZWxlZ2F0ZSA9IHtcblx0XHRcdG9uQmVmb3JlU2hvdzogKCk6IHZvaWQgPT4ge1xuXHRcdFx0XHR0aGlzLmJTaG93biA9IGZhbHNlO1xuXHRcdFx0XHR0aGlzLl9iSXNQYWdlUmVhZHkgPSBmYWxzZTtcblx0XHRcdH0sXG5cdFx0XHRvbkJlZm9yZUhpZGU6ICgpOiB2b2lkID0+IHtcblx0XHRcdFx0dGhpcy5iU2hvd24gPSBmYWxzZTtcblx0XHRcdFx0dGhpcy5fYklzUGFnZVJlYWR5ID0gZmFsc2U7XG5cdFx0XHR9LFxuXHRcdFx0b25BZnRlclNob3c6ICgpOiB2b2lkID0+IHtcblx0XHRcdFx0dGhpcy5iU2hvd24gPSB0cnVlO1xuXHRcdFx0XHR0aGlzLm9uQWZ0ZXJCaW5kaW5nUHJvbWlzZT8udGhlbigoKTogdm9pZCA9PiB7XG5cdFx0XHRcdFx0cmV0dXJuIHRoaXMuY2hlY2tQYWdlUmVhZHlEZWJvdW5jZWQodHJ1ZSk7XG5cdFx0XHRcdH0pO1xuXHRcdFx0fVxuXHRcdH07XG5cdFx0dGhpcy5fb0NvbnRhaW5lcj8uYWRkRXZlbnREZWxlZ2F0ZSh0aGlzLl9mbkNvbnRhaW5lckRlbGVnYXRlLCB0aGlzKTtcblx0fVxuXG5cdEBwcml2YXRlRXh0ZW5zaW9uKClcblx0QGV4dGVuc2libGUoT3ZlcnJpZGVFeGVjdXRpb24uSW5zdGVhZClcblx0cHVibGljIGlzQ29udGV4dEV4cGVjdGVkKCk6IGJvb2xlYW4ge1xuXHRcdHJldHVybiBmYWxzZTtcblx0fVxuXG5cdEBwdWJsaWNFeHRlbnNpb24oKVxuXHRwdWJsaWMgY2hlY2tQYWdlUmVhZHlEZWJvdW5jZWQoYkZyb21OYXYgPSBmYWxzZSk6IHZvaWQge1xuXHRcdGlmICh0aGlzLnBhZ2VSZWFkeVRpbWVyKSB7XG5cdFx0XHRjbGVhclRpbWVvdXQodGhpcy5wYWdlUmVhZHlUaW1lcik7XG5cdFx0fVxuXHRcdGNvbnN0IG1vZGVsID0gdGhpcy5nZXRWaWV3KCkuZ2V0TW9kZWwoKSBhcyBPRGF0YU1vZGVsO1xuXHRcdGxldCB0aW1lT3V0OiBudW1iZXI7XG5cdFx0Ly8gaXNDb250ZXh0RXhwZWN0ZWQgPSB0cnVlIHdoZW4gT2JqZWN0IFBhZ2UgaXMgZGlzcGxheWVkXG5cdFx0aWYgKChtb2RlbCAmJiBtb2RlbC5nZXRPcHRpbWlzdGljQmF0Y2hFbmFibGVyKCkgPT09IG51bGwpIHx8IHRoaXMuaXNDb250ZXh0RXhwZWN0ZWQoKSkge1xuXHRcdFx0dGltZU91dCA9IDIwMDtcblx0XHR9IGVsc2Uge1xuXHRcdFx0Ly8gV2UgYXJlIHdhaXRpbmcgbGVzcyB0aW1lIGJlY2F1c2UgZGF0YSBpcyBhbHJlYWR5IHRoZXJlIChvcHRpbWlzdGljQmF0Y2gpXG5cdFx0XHR0aW1lT3V0ID0gMjA7XG5cdFx0fVxuXHRcdHRoaXMucGFnZVJlYWR5VGltZXIgPSBzZXRUaW1lb3V0KCgpID0+IHtcblx0XHRcdHRoaXMuX2NoZWNrUGFnZVJlYWR5KGJGcm9tTmF2KTtcblx0XHR9LCB0aW1lT3V0KSBhcyB1bmtub3duIGFzIG51bWJlcjtcblx0fVxuXG5cdHB1YmxpYyBfY2hlY2tQYWdlUmVhZHkoYkZyb21OYXYgPSBmYWxzZSk6IHZvaWQge1xuXHRcdGNvbnN0IGZuVUlVcGRhdGVkID0gKCk6IHZvaWQgPT4ge1xuXHRcdFx0Ly8gV2FpdCB1bnRpbCB0aGUgVUkgaXMgbm8gbG9uZ2VyIGRpcnR5XG5cdFx0XHRpZiAoIVJlbmRlcmluZy5pc1BlbmRpbmcoKSkge1xuXHRcdFx0XHQoUmVuZGVyaW5nIGFzIFJlbmRlcmluZ0V4KS5kZXRhY2hVSVVwZGF0ZWQoZm5VSVVwZGF0ZWQpO1xuXHRcdFx0XHR0aGlzLl9iV2FpdGluZ0ZvclJlZnJlc2ggPSBmYWxzZTtcblx0XHRcdFx0dGhpcy5jaGVja1BhZ2VSZWFkeURlYm91bmNlZCgpO1xuXHRcdFx0fVxuXHRcdH07XG5cblx0XHQvLyBJbiBjYXNlIFVJVXBkYXRlIGRvZXMgbm90IGdldCBjYWxsZWQsIGNoZWNrIGlmIFVJIGlzIG5vdCBkaXJ0eSBhbmQgdGhlbiBjYWxsIF9jaGVja1BhZ2VSZWFkeVxuXHRcdGNvbnN0IGNoZWNrVUlVcGRhdGVkID0gKCk6IHZvaWQgPT4ge1xuXHRcdFx0aWYgKFJlbmRlcmluZy5pc1BlbmRpbmcoKSkge1xuXHRcdFx0XHRzZXRUaW1lb3V0KGNoZWNrVUlVcGRhdGVkLCA1MDApO1xuXHRcdFx0fSBlbHNlIGlmICh0aGlzLl9iV2FpdGluZ0ZvclJlZnJlc2gpIHtcblx0XHRcdFx0dGhpcy5fYldhaXRpbmdGb3JSZWZyZXNoID0gZmFsc2U7XG5cdFx0XHRcdChSZW5kZXJpbmcgYXMgUmVuZGVyaW5nRXgpLmRldGFjaFVJVXBkYXRlZChmblVJVXBkYXRlZCk7XG5cdFx0XHRcdHRoaXMuY2hlY2tQYWdlUmVhZHlEZWJvdW5jZWQoKTtcblx0XHRcdH1cblx0XHR9O1xuXG5cdFx0aWYgKFxuXHRcdFx0dGhpcy5iU2hvd24gJiZcblx0XHRcdHRoaXMucXVlcnlXYXRjaGVyLmlzRGF0YVJlY2VpdmVkKCkgIT09IGZhbHNlICYmXG5cdFx0XHR0aGlzLmJUYWJsZXNDaGFydHNMb2FkZWQgIT09IGZhbHNlICYmXG5cdFx0XHQoIXRoaXMuaXNDb250ZXh0RXhwZWN0ZWQoKSB8fCB0aGlzLmJIYXNDb250ZXh0KSAvLyBFaXRoZXIgbm8gY29udGV4dCBpcyBleHBlY3RlZCBvciB0aGVyZSBpcyBvbmVcblx0XHQpIHtcblx0XHRcdGlmICh0aGlzLnF1ZXJ5V2F0Y2hlci5pc0RhdGFSZWNlaXZlZCgpID09PSB0cnVlICYmICFiRnJvbU5hdiAmJiAhdGhpcy5fYldhaXRpbmdGb3JSZWZyZXNoICYmIFJlbmRlcmluZy5pc1BlbmRpbmcoKSkge1xuXHRcdFx0XHQvLyBJZiB3ZSByZXF1ZXN0ZWQgZGF0YSB3ZSBnZXQgbm90aWZpZWQgYXMgc29vbiBhcyB0aGUgZGF0YSBhcnJpdmVkLCBzbyBiZWZvcmUgdGhlIG5leHQgcmVuZGVyaW5nIHRpY2tcblx0XHRcdFx0dGhpcy5xdWVyeVdhdGNoZXIucmVzZXREYXRhUmVjZWl2ZWQoKTtcblx0XHRcdFx0dGhpcy5fYldhaXRpbmdGb3JSZWZyZXNoID0gdHJ1ZTtcblx0XHRcdFx0KFJlbmRlcmluZyBhcyBSZW5kZXJpbmdFeCkuYXR0YWNoVUlVcGRhdGVkKGZuVUlVcGRhdGVkKTtcblx0XHRcdFx0c2V0VGltZW91dChjaGVja1VJVXBkYXRlZCwgNTAwKTtcblx0XHRcdH0gZWxzZSBpZiAoXG5cdFx0XHRcdCghdGhpcy5fYldhaXRpbmdGb3JSZWZyZXNoICYmIFJlbmRlcmluZy5pc1BlbmRpbmcoKSkgfHxcblx0XHRcdFx0dGhpcy5fbmJXYWl0cyAhPT0gMCB8fFxuXHRcdFx0XHRUZW1wbGF0ZWRWaWV3U2VydmljZUZhY3RvcnkuZ2V0TnVtYmVyT2ZWaWV3c0luQ3JlYXRpb25TdGF0ZSgpID4gMCB8fFxuXHRcdFx0XHR0aGlzLnF1ZXJ5V2F0Y2hlci5pc1NlYXJjaFBlbmRpbmcoKVxuXHRcdFx0KSB7XG5cdFx0XHRcdHRoaXMuX2JXYWl0aW5nRm9yUmVmcmVzaCA9IHRydWU7XG5cdFx0XHRcdChSZW5kZXJpbmcgYXMgUmVuZGVyaW5nRXgpLmF0dGFjaFVJVXBkYXRlZChmblVJVXBkYXRlZCk7XG5cdFx0XHRcdHNldFRpbWVvdXQoY2hlY2tVSVVwZGF0ZWQsIDUwMCk7XG5cdFx0XHR9IGVsc2UgaWYgKCF0aGlzLl9iV2FpdGluZ0ZvclJlZnJlc2gpIHtcblx0XHRcdFx0Ly8gSW4gdGhlIGNhc2Ugd2UncmUgbm90IHdhaXRpbmcgZm9yIGFueSBkYXRhIChuYXZpZ2F0aW5nIGJhY2sgdG8gYSBwYWdlIHdlIGFscmVhZHkgaGF2ZSBsb2FkZWQpXG5cdFx0XHRcdC8vIGp1c3Qgd2FpdCBmb3IgYSBmcmFtZSB0byBmaXJlIHRoZSBldmVudC5cblx0XHRcdFx0dGhpcy5fYklzUGFnZVJlYWR5ID0gdHJ1ZTtcblx0XHRcdFx0dGhpcy5fb0V2ZW50UHJvdmlkZXIuZmlyZUV2ZW50KFwicGFnZVJlYWR5XCIpO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdC8qKlxuXHQgKiBGb3JjZXMgdGhlICdwYWdlUmVhZHknIGV2ZW50IHRvIGJlIHNlbnQuXG5cdCAqL1xuXHRmb3JjZVBhZ2VSZWFkeSgpOiB2b2lkIHtcblx0XHR0aGlzLl9vRXZlbnRQcm92aWRlci5maXJlRXZlbnQoXCJwYWdlUmVhZHlcIik7XG5cdH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgUGFnZVJlYWR5Q29udHJvbGxlckV4dGVuc2lvbjtcbiJdLCJtYXBwaW5ncyI6IjtBQUFBO0FBQUE7QUFBQTs7Ozs7Ozs7Ozs7Ozs7TUE4Qk1BLDRCQUE0QixXQURqQ0MsY0FBYyxDQUFDLDRDQUE0QyxDQUFDLFVBOEMzREMsY0FBYyxFQUFFLFVBMkNoQkEsY0FBYyxFQUFFLFVBVWhCQyxlQUFlLEVBQUUsVUFDakJDLGNBQWMsRUFBRSxVQVloQkYsY0FBYyxDQUFDLFVBQVUsQ0FBQyxVQUsxQkEsY0FBYyxDQUFDLFVBQVUsQ0FBQyxVQTBDMUJBLGNBQWMsQ0FBQyxVQUFVLENBQUMsVUEwRDFCQyxlQUFlLEVBQUUsV0FDakJDLGNBQWMsRUFBRSxXQUtoQkQsZUFBZSxFQUFFLFdBQ2pCQyxjQUFjLEVBQUUsV0FrQmhCRCxlQUFlLEVBQUUsV0FDakJDLGNBQWMsRUFBRSxXQU1oQkQsZUFBZSxFQUFFLFdBQ2pCQyxjQUFjLEVBQUUsV0FNaEJELGVBQWUsRUFBRSxXQUNqQkMsY0FBYyxFQUFFLFdBMkJoQkMsZ0JBQWdCLEVBQUUsV0FDbEJDLFVBQVUsQ0FBQ0MsaUJBQWlCLENBQUNDLE9BQU8sQ0FBQyxXQUtyQ0wsZUFBZSxFQUFFO0lBQUE7SUF4UGxCLHdDQUFjO01BQUE7TUFDYix1Q0FB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
|
|
277
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJQYWdlUmVhZHlDb250cm9sbGVyRXh0ZW5zaW9uIiwiX2RlYyIsImRlZmluZVVJNUNsYXNzIiwiX2RlYzIiLCJtZXRob2RPdmVycmlkZSIsIl9kZWMzIiwiX2RlYzQiLCJwdWJsaWNFeHRlbnNpb24iLCJfZGVjNSIsImZpbmFsRXh0ZW5zaW9uIiwiX2RlYzYiLCJfZGVjNyIsIl9kZWM4IiwiX2RlYzkiLCJfZGVjMTAiLCJfZGVjMTEiLCJfZGVjMTIiLCJfZGVjMTMiLCJfZGVjMTQiLCJfZGVjMTUiLCJfZGVjMTYiLCJfZGVjMTciLCJfZGVjMTgiLCJfZGVjMTkiLCJwcml2YXRlRXh0ZW5zaW9uIiwiX2RlYzIwIiwiZXh0ZW5zaWJsZSIsIk92ZXJyaWRlRXhlY3V0aW9uIiwiSW5zdGVhZCIsIl9kZWMyMSIsIl9jbGFzcyIsIl9jbGFzczIiLCJfQ29udHJvbGxlckV4dGVuc2lvbiIsIl9pbmhlcml0c0xvb3NlIiwiX3RoaXMiLCJjYWxsIiwicGFnZVJlYWR5VGltZW91dERlZmF1bHQiLCJfcHJvdG8iLCJwcm90b3R5cGUiLCJvbkluaXQiLCJfbWFuaWZlc3RDb250ZW50JHNhcCIsIl90aGlzJHBhZ2VDb21wb25lbnQiLCJfcm9vdENvbnRyb2xDb250cm9sbGUiLCJfbmJXYWl0cyIsIl9vRXZlbnRQcm92aWRlciIsIkV2ZW50UHJvdmlkZXIiLCJ2aWV3IiwiZ2V0VmlldyIsImFwcENvbXBvbmVudCIsIkNvbW1vblV0aWxzIiwiZ2V0QXBwQ29tcG9uZW50IiwicGFnZUNvbXBvbmVudCIsIkNvbXBvbmVudCIsImdldE93bmVyQ29tcG9uZW50Rm9yIiwibWFuaWZlc3RDb250ZW50IiwiZ2V0TWFuaWZlc3QiLCJwYWdlUmVhZHlUaW1lb3V0IiwiYXR0YWNoQ29udGFpbmVyRGVmaW5lZCIsIm9FdmVudCIsInJlZ2lzdGVyQ29udGFpbmVyIiwiZ2V0UGFyYW1ldGVyIiwicm9vdENvbnRyb2xDb250cm9sbGVyIiwiZ2V0Um9vdENvbnRyb2wiLCJnZXRDb250cm9sbGVyIiwicGxhY2Vob2xkZXIiLCJnZXRQbGFjZWhvbGRlciIsImlzUGxhY2Vob2xkZXJEZWJ1Z0VuYWJsZWQiLCJhdHRhY2hFdmVudCIsImdldFBsYWNlaG9sZGVyRGVidWdTdGF0cyIsImlQYWdlUmVhZHlFdmVudFRpbWVzdGFtcCIsIkRhdGUiLCJub3ciLCJpSGVyb2VzQmF0Y2hSZWNlaXZlZEV2ZW50VGltZXN0YW1wIiwicXVlcnlXYXRjaGVyIiwiRGF0YVF1ZXJ5V2F0Y2hlciIsImNoZWNrUGFnZVJlYWR5RGVib3VuY2VkIiwiYmluZCIsIm9uRXhpdCIsIl9vQXBwQ29tcG9uZW50IiwiX29Db250YWluZXIiLCJfZm5Db250YWluZXJEZWxlZ2F0ZSIsInJlbW92ZUV2ZW50RGVsZWdhdGUiLCJ3YWl0Rm9yIiwib1Byb21pc2UiLCJmaW5hbGx5Iiwic2V0VGltZW91dCIsImNhdGNoIiwib25Sb3V0ZU1hdGNoZWQiLCJfYklzUGFnZVJlYWR5Iiwib25Sb3V0ZU1hdGNoZWRGaW5pc2hlZCIsIm9uQWZ0ZXJCaW5kaW5nUHJvbWlzZSIsInJlZ2lzdGVyQWdncmVnYXRlZENvbnRyb2xzIiwibWFpbkJpbmRpbmdDb250ZXh0IiwibWFpbk9iamVjdEJpbmRpbmciLCJnZXRCaW5kaW5nIiwicmVnaXN0ZXJCaW5kaW5nIiwiYVByb21pc2VzIiwiYUNvbnRyb2xzIiwiZmluZEFnZ3JlZ2F0ZWRPYmplY3RzIiwiZm9yRWFjaCIsIm9FbGVtZW50Iiwib09iamVjdEJpbmRpbmciLCJnZXRPYmplY3RCaW5kaW5nIiwiYUJpbmRpbmdLZXlzIiwiT2JqZWN0Iiwia2V5cyIsIm1CaW5kaW5nSW5mb3MiLCJzUHJvcGVydHlOYW1lIiwiX29FbGVtZW50JG1CaW5kaW5nSW5mIiwib0xpc3RCaW5kaW5nIiwiYmluZGluZyIsImlzQSIsImJUYWJsZXNDaGFydHNMb2FkZWQiLCJwdXNoIiwicmVnaXN0ZXJUYWJsZU9yQ2hhcnQiLCJyZWdpc3RlckZpbHRlckJhciIsIm9uQWZ0ZXJCaW5kaW5nIiwib0JpbmRpbmdDb250ZXh0IiwicGFyYW1ldGVycyIsInBhZ2VSZWFkeVRpbWVvdXRUaW1lciIsImNsZWFyVGltZW91dCIsImRlZmVycmVkQ3JlYXRpb24iLCJpc0NvbnRleHRFeHBlY3RlZCIsIkxvZyIsImVycm9yIiwiZmlyZUV2ZW50IiwiX3Jvb3RDb250cm9sQ29udHJvbGxlMiIsImRpc2FibGVBbmltYXRpb24iLCJiSGFzQ29udGV4dCIsIl9iQWZ0ZXJCaW5kaW5nQWxyZWFkeUFwcGxpZWQiLCJhdHRhY2hFdmVudE9uY2UiLCJ1bmRlZmluZWQiLCJyZXNldCIsIlByb21pc2UiLCJyZXNvbHZlIiwiYVRhYmxlQ2hhcnRJbml0aWFsaXplZFByb21pc2VzIiwibGVuZ3RoIiwiYWxsIiwiaXNQYWdlUmVhZHkiLCJ3YWl0UGFnZVJlYWR5Iiwic0V2ZW50SWQiLCJvRGF0YSIsImZuRnVuY3Rpb24iLCJvTGlzdGVuZXIiLCJkZXRhY2hFdmVudCIsIm9Db250YWluZXIiLCJfdGhpcyRfb0NvbnRhaW5lciIsIm9uQmVmb3JlU2hvdyIsImJTaG93biIsIm9uQmVmb3JlSGlkZSIsIm9uQWZ0ZXJTaG93IiwiX3RoaXMkb25BZnRlckJpbmRpbmdQIiwidGhlbiIsImFkZEV2ZW50RGVsZWdhdGUiLCJiRnJvbU5hdiIsImFyZ3VtZW50cyIsInBhZ2VSZWFkeVRpbWVyIiwibW9kZWwiLCJnZXRNb2RlbCIsInRpbWVPdXQiLCJnZXRPcHRpbWlzdGljQmF0Y2hFbmFibGVyIiwiX2NoZWNrUGFnZVJlYWR5IiwiZm5VSVVwZGF0ZWQiLCJSZW5kZXJpbmciLCJpc1BlbmRpbmciLCJkZXRhY2hVSVVwZGF0ZWQiLCJfYldhaXRpbmdGb3JSZWZyZXNoIiwiY2hlY2tVSVVwZGF0ZWQiLCJpc0RhdGFSZWNlaXZlZCIsInJlc2V0RGF0YVJlY2VpdmVkIiwiYXR0YWNoVUlVcGRhdGVkIiwiVGVtcGxhdGVkVmlld1NlcnZpY2VGYWN0b3J5IiwiZ2V0TnVtYmVyT2ZWaWV3c0luQ3JlYXRpb25TdGF0ZSIsImlzU2VhcmNoUGVuZGluZyIsImZvcmNlUGFnZVJlYWR5IiwiQ29udHJvbGxlckV4dGVuc2lvbiIsIl9hcHBseURlY29yYXRlZERlc2NyaXB0b3IiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiXSwic291cmNlUm9vdCI6Ii4iLCJzb3VyY2VzIjpbIlBhZ2VSZWFkeS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgTG9nIGZyb20gXCJzYXAvYmFzZS9Mb2dcIjtcbmltcG9ydCB7IGRlZmluZVVJNUNsYXNzLCBleHRlbnNpYmxlLCBmaW5hbEV4dGVuc2lvbiwgbWV0aG9kT3ZlcnJpZGUsIHByaXZhdGVFeHRlbnNpb24sIHB1YmxpY0V4dGVuc2lvbiB9IGZyb20gXCJzYXAvZmUvYmFzZS9DbGFzc1N1cHBvcnRcIjtcbmltcG9ydCB0eXBlIEFwcENvbXBvbmVudCBmcm9tIFwic2FwL2ZlL2NvcmUvQXBwQ29tcG9uZW50XCI7XG5pbXBvcnQgdHlwZSBQYWdlQ29udHJvbGxlciBmcm9tIFwic2FwL2ZlL2NvcmUvUGFnZUNvbnRyb2xsZXJcIjtcbmltcG9ydCBEYXRhUXVlcnlXYXRjaGVyIGZyb20gXCJzYXAvZmUvY29yZS9jb250cm9sbGVyZXh0ZW5zaW9ucy9wYWdlUmVhZHkvRGF0YVF1ZXJ5V2F0Y2hlclwiO1xuaW1wb3J0IFRlbXBsYXRlZFZpZXdTZXJ2aWNlRmFjdG9yeSBmcm9tIFwic2FwL2ZlL2NvcmUvc2VydmljZXMvVGVtcGxhdGVkVmlld1NlcnZpY2VGYWN0b3J5XCI7XG5pbXBvcnQgdHlwZSBGaWx0ZXJCYXIgZnJvbSBcInNhcC9mZS9tYWNyb3MvY29udHJvbHMvRmlsdGVyQmFyXCI7XG5pbXBvcnQgdHlwZSBFdmVudCBmcm9tIFwic2FwL3VpL2Jhc2UvRXZlbnRcIjtcbmltcG9ydCBFdmVudFByb3ZpZGVyIGZyb20gXCJzYXAvdWkvYmFzZS9FdmVudFByb3ZpZGVyXCI7XG5pbXBvcnQgdHlwZSBNYW5hZ2VkT2JqZWN0IGZyb20gXCJzYXAvdWkvYmFzZS9NYW5hZ2VkT2JqZWN0XCI7XG5pbXBvcnQgQ29tcG9uZW50IGZyb20gXCJzYXAvdWkvY29yZS9Db21wb25lbnRcIjtcbmltcG9ydCB0eXBlIENvbXBvbmVudENvbnRhaW5lciBmcm9tIFwic2FwL3VpL2NvcmUvQ29tcG9uZW50Q29udGFpbmVyXCI7XG5pbXBvcnQgdHlwZSBDb250cm9sIGZyb20gXCJzYXAvdWkvY29yZS9Db250cm9sXCI7XG5pbXBvcnQgUmVuZGVyaW5nIGZyb20gXCJzYXAvdWkvY29yZS9SZW5kZXJpbmdcIjtcbmltcG9ydCBDb250cm9sbGVyRXh0ZW5zaW9uIGZyb20gXCJzYXAvdWkvY29yZS9tdmMvQ29udHJvbGxlckV4dGVuc2lvblwiO1xuaW1wb3J0IE92ZXJyaWRlRXhlY3V0aW9uIGZyb20gXCJzYXAvdWkvY29yZS9tdmMvT3ZlcnJpZGVFeGVjdXRpb25cIjtcbmltcG9ydCB0eXBlIFZpZXcgZnJvbSBcInNhcC91aS9jb3JlL212Yy9WaWV3XCI7XG5pbXBvcnQgdHlwZSBDaGFydCBmcm9tIFwic2FwL3VpL21kYy9DaGFydFwiO1xuaW1wb3J0IHR5cGUgTURDVGFibGUgZnJvbSBcInNhcC91aS9tZGMvVGFibGVcIjtcbmltcG9ydCB0eXBlIEJpbmRpbmcgZnJvbSBcInNhcC91aS9tb2RlbC9CaW5kaW5nXCI7XG5pbXBvcnQgdHlwZSBDb250ZXh0IGZyb20gXCJzYXAvdWkvbW9kZWwvb2RhdGEvdjQvQ29udGV4dFwiO1xuaW1wb3J0IHR5cGUgT0RhdGFMaXN0QmluZGluZyBmcm9tIFwic2FwL3VpL21vZGVsL29kYXRhL3Y0L09EYXRhTGlzdEJpbmRpbmdcIjtcbmltcG9ydCB0eXBlIE9EYXRhTW9kZWwgZnJvbSBcInNhcC91aS9tb2RlbC9vZGF0YS92NC9PRGF0YU1vZGVsXCI7XG5pbXBvcnQgQ29tbW9uVXRpbHMgZnJvbSBcIi4uL0NvbW1vblV0aWxzXCI7XG5cbnR5cGUgUmVuZGVyaW5nRXggPSB0eXBlb2YgUmVuZGVyaW5nICYge1xuXHRhdHRhY2hVSVVwZGF0ZWQ6IEZ1bmN0aW9uO1xuXHRkZXRhY2hVSVVwZGF0ZWQ6IEZ1bmN0aW9uO1xufTtcbkBkZWZpbmVVSTVDbGFzcyhcInNhcC5mZS5jb3JlLmNvbnRyb2xsZXJleHRlbnNpb25zLlBhZ2VSZWFkeVwiKVxuY2xhc3MgUGFnZVJlYWR5Q29udHJvbGxlckV4dGVuc2lvbiBleHRlbmRzIENvbnRyb2xsZXJFeHRlbnNpb24ge1xuXHRwcm90ZWN0ZWQgYmFzZSE6IFBhZ2VDb250cm9sbGVyO1xuXG5cdHByaXZhdGUgX29FdmVudFByb3ZpZGVyITogRXZlbnRQcm92aWRlcjtcblxuXHRwcml2YXRlIHZpZXchOiBWaWV3O1xuXG5cdHByaXZhdGUgYXBwQ29tcG9uZW50ITogQXBwQ29tcG9uZW50O1xuXG5cdHByaXZhdGUgcGFnZUNvbXBvbmVudCE6IENvbXBvbmVudDtcblxuXHRwcml2YXRlIF9vQ29udGFpbmVyITogQ29udHJvbDtcblxuXHRwcml2YXRlIF9iQWZ0ZXJCaW5kaW5nQWxyZWFkeUFwcGxpZWQhOiBib29sZWFuO1xuXG5cdHByaXZhdGUgX2ZuQ29udGFpbmVyRGVsZWdhdGU/OiBvYmplY3Q7XG5cblx0cHJpdmF0ZSBfbmJXYWl0cyE6IG51bWJlcjtcblxuXHRwcml2YXRlIF9iSXNQYWdlUmVhZHkhOiBib29sZWFuO1xuXG5cdHByaXZhdGUgX2JXYWl0aW5nRm9yUmVmcmVzaCE6IGJvb2xlYW47XG5cblx0cHJpdmF0ZSBiU2hvd24hOiBib29sZWFuO1xuXG5cdHByaXZhdGUgYkhhc0NvbnRleHQhOiBib29sZWFuO1xuXG5cdHByaXZhdGUgYlRhYmxlc0NoYXJ0c0xvYWRlZD86IGJvb2xlYW47XG5cblx0cHJpdmF0ZSBwYWdlUmVhZHlUaW1lcjogbnVtYmVyIHwgdW5kZWZpbmVkO1xuXG5cdHByaXZhdGUgcXVlcnlXYXRjaGVyITogRGF0YVF1ZXJ5V2F0Y2hlcjtcblxuXHRwcml2YXRlIG9uQWZ0ZXJCaW5kaW5nUHJvbWlzZSE6IFByb21pc2U8dm9pZD47XG5cblx0cHJpdmF0ZSBwYWdlUmVhZHlUaW1lb3V0RGVmYXVsdCA9IDcwMDA7XG5cblx0cHJpdmF0ZSBwYWdlUmVhZHlUaW1lb3V0VGltZXI/OiBudW1iZXI7XG5cblx0cHJpdmF0ZSBwYWdlUmVhZHlUaW1lb3V0PzogbnVtYmVyO1xuXG5cdGNvbnN0cnVjdG9yKCkge1xuXHRcdHN1cGVyKCk7XG5cdH1cblxuXHRAbWV0aG9kT3ZlcnJpZGUoKVxuXHRwdWJsaWMgb25Jbml0KCk6IHZvaWQge1xuXHRcdHRoaXMuX25iV2FpdHMgPSAwO1xuXHRcdHRoaXMuX29FdmVudFByb3ZpZGVyID0gdGhpcy5fb0V2ZW50UHJvdmlkZXIgPyB0aGlzLl9vRXZlbnRQcm92aWRlciA6IG5ldyBFdmVudFByb3ZpZGVyKCk7XG5cdFx0dGhpcy52aWV3ID0gdGhpcy5nZXRWaWV3KCk7XG5cblx0XHR0aGlzLmFwcENvbXBvbmVudCA9IENvbW1vblV0aWxzLmdldEFwcENvbXBvbmVudCh0aGlzLnZpZXcpO1xuXHRcdHRoaXMucGFnZUNvbXBvbmVudCA9IENvbXBvbmVudC5nZXRPd25lckNvbXBvbmVudEZvcih0aGlzLnZpZXcpIGFzIENvbXBvbmVudDtcblx0XHRjb25zdCBtYW5pZmVzdENvbnRlbnQgPSB0aGlzLmFwcENvbXBvbmVudC5nZXRNYW5pZmVzdCgpO1xuXHRcdHRoaXMucGFnZVJlYWR5VGltZW91dCA9IG1hbmlmZXN0Q29udGVudFtcInNhcC51aTVcIl0/LnBhZ2VSZWFkeVRpbWVvdXQgPz8gdGhpcy5wYWdlUmVhZHlUaW1lb3V0RGVmYXVsdDtcblxuXHRcdGlmICh0aGlzLnBhZ2VDb21wb25lbnQ/LmF0dGFjaENvbnRhaW5lckRlZmluZWQpIHtcblx0XHRcdHRoaXMucGFnZUNvbXBvbmVudC5hdHRhY2hDb250YWluZXJEZWZpbmVkKChvRXZlbnQ6IEV2ZW50PHsgY29udGFpbmVyOiBDb21wb25lbnRDb250YWluZXIgfT4pID0+XG5cdFx0XHRcdHRoaXMucmVnaXN0ZXJDb250YWluZXIob0V2ZW50LmdldFBhcmFtZXRlcihcImNvbnRhaW5lclwiKSlcblx0XHRcdCk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHRoaXMucmVnaXN0ZXJDb250YWluZXIodGhpcy52aWV3KTtcblx0XHR9XG5cblx0XHRjb25zdCByb290Q29udHJvbENvbnRyb2xsZXIgPSB0aGlzLmFwcENvbXBvbmVudC5nZXRSb290Q29udHJvbCgpLmdldENvbnRyb2xsZXIoKTtcblx0XHRjb25zdCBwbGFjZWhvbGRlciA9IHJvb3RDb250cm9sQ29udHJvbGxlcj8uZ2V0UGxhY2Vob2xkZXI/LigpO1xuXHRcdGlmIChwbGFjZWhvbGRlcj8uaXNQbGFjZWhvbGRlckRlYnVnRW5hYmxlZCgpKSB7XG5cdFx0XHR0aGlzLmF0dGFjaEV2ZW50KFxuXHRcdFx0XHRcInBhZ2VSZWFkeVwiLFxuXHRcdFx0XHRudWxsLFxuXHRcdFx0XHQoKSA9PiB7XG5cdFx0XHRcdFx0cGxhY2Vob2xkZXIuZ2V0UGxhY2Vob2xkZXJEZWJ1Z1N0YXRzKCkuaVBhZ2VSZWFkeUV2ZW50VGltZXN0YW1wID0gRGF0ZS5ub3coKTtcblx0XHRcdFx0fSxcblx0XHRcdFx0dGhpc1xuXHRcdFx0KTtcblx0XHRcdHRoaXMuYXR0YWNoRXZlbnQoXG5cdFx0XHRcdFwiaGVyb2VzQmF0Y2hSZWNlaXZlZFwiLFxuXHRcdFx0XHRudWxsLFxuXHRcdFx0XHQoKSA9PiB7XG5cdFx0XHRcdFx0cGxhY2Vob2xkZXIuZ2V0UGxhY2Vob2xkZXJEZWJ1Z1N0YXRzKCkuaUhlcm9lc0JhdGNoUmVjZWl2ZWRFdmVudFRpbWVzdGFtcCA9IERhdGUubm93KCk7XG5cdFx0XHRcdH0sXG5cdFx0XHRcdHRoaXNcblx0XHRcdCk7XG5cdFx0fVxuXG5cdFx0dGhpcy5xdWVyeVdhdGNoZXIgPSBuZXcgRGF0YVF1ZXJ5V2F0Y2hlcih0aGlzLl9vRXZlbnRQcm92aWRlciwgdGhpcy5jaGVja1BhZ2VSZWFkeURlYm91bmNlZC5iaW5kKHRoaXMpKTtcblx0fVxuXG5cdEBtZXRob2RPdmVycmlkZSgpXG5cdHB1YmxpYyBvbkV4aXQoKTogdm9pZCB7XG5cdFx0Ly8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9iYW4tdHMtY29tbWVudFxuXHRcdC8vIEB0cy1pZ25vcmVcblx0XHRkZWxldGUgdGhpcy5fb0FwcENvbXBvbmVudDtcblx0XHRpZiAodGhpcy5fb0NvbnRhaW5lciAmJiB0aGlzLl9mbkNvbnRhaW5lckRlbGVnYXRlKSB7XG5cdFx0XHR0aGlzLl9vQ29udGFpbmVyLnJlbW92ZUV2ZW50RGVsZWdhdGUodGhpcy5fZm5Db250YWluZXJEZWxlZ2F0ZSk7XG5cdFx0fVxuXHR9XG5cblx0QHB1YmxpY0V4dGVuc2lvbigpXG5cdEBmaW5hbEV4dGVuc2lvbigpXG5cdHB1YmxpYyB3YWl0Rm9yKG9Qcm9taXNlOiBQcm9taXNlPHVua25vd24+KTogdm9pZCB7XG5cdFx0dGhpcy5fbmJXYWl0cysrO1xuXHRcdG9Qcm9taXNlXG5cdFx0XHQuZmluYWxseSgoKSA9PiB7XG5cdFx0XHRcdHNldFRpbWVvdXQoKCkgPT4ge1xuXHRcdFx0XHRcdHRoaXMuX25iV2FpdHMtLTtcblx0XHRcdFx0fSwgMCk7XG5cdFx0XHR9KVxuXHRcdFx0LmNhdGNoKG51bGwpO1xuXHR9XG5cblx0QG1ldGhvZE92ZXJyaWRlKFwiX3JvdXRpbmdcIilcblx0b25Sb3V0ZU1hdGNoZWQoKTogdm9pZCB7XG5cdFx0dGhpcy5fYklzUGFnZVJlYWR5ID0gZmFsc2U7XG5cdH1cblxuXHRAbWV0aG9kT3ZlcnJpZGUoXCJfcm91dGluZ1wiKVxuXHRhc3luYyBvblJvdXRlTWF0Y2hlZEZpbmlzaGVkKCk6IFByb21pc2U8dm9pZD4ge1xuXHRcdGF3YWl0IHRoaXMub25BZnRlckJpbmRpbmdQcm9taXNlO1xuXHRcdHRoaXMuY2hlY2tQYWdlUmVhZHlEZWJvdW5jZWQoKTtcblx0fVxuXG5cdHB1YmxpYyByZWdpc3RlckFnZ3JlZ2F0ZWRDb250cm9scyhtYWluQmluZGluZ0NvbnRleHQ/OiBDb250ZXh0KTogUHJvbWlzZTx2b2lkPltdIHtcblx0XHRpZiAobWFpbkJpbmRpbmdDb250ZXh0KSB7XG5cdFx0XHRjb25zdCBtYWluT2JqZWN0QmluZGluZyA9IG1haW5CaW5kaW5nQ29udGV4dC5nZXRCaW5kaW5nKCk7XG5cdFx0XHR0aGlzLnF1ZXJ5V2F0Y2hlci5yZWdpc3RlckJpbmRpbmcobWFpbk9iamVjdEJpbmRpbmcpO1xuXHRcdH1cblxuXHRcdGNvbnN0IGFQcm9taXNlczogUHJvbWlzZTx2b2lkPltdID0gW107XG5cdFx0Y29uc3QgYUNvbnRyb2xzID0gdGhpcy5nZXRWaWV3KCkuZmluZEFnZ3JlZ2F0ZWRPYmplY3RzKHRydWUpO1xuXG5cdFx0YUNvbnRyb2xzLmZvckVhY2goKG9FbGVtZW50OiBNYW5hZ2VkT2JqZWN0ICYgeyBtQmluZGluZ0luZm9zPzogUmVjb3JkPHN0cmluZywgeyBiaW5kaW5nPzogQmluZGluZyB9PiB9KTogdm9pZCA9PiB7XG5cdFx0XHRjb25zdCBvT2JqZWN0QmluZGluZyA9IG9FbGVtZW50LmdldE9iamVjdEJpbmRpbmcoKTtcblx0XHRcdGlmIChvT2JqZWN0QmluZGluZykge1xuXHRcdFx0XHQvLyBSZWdpc3RlciBvbiBhbGwgb2JqZWN0IGJpbmRpbmcgKG1vc3RseSB1c2VkIG9uIG9iamVjdCBwYWdlcylcblx0XHRcdFx0dGhpcy5xdWVyeVdhdGNoZXIucmVnaXN0ZXJCaW5kaW5nKG9PYmplY3RCaW5kaW5nKTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdGNvbnN0IGFCaW5kaW5nS2V5cyA9IE9iamVjdC5rZXlzKG9FbGVtZW50Py5tQmluZGluZ0luZm9zID8/IHt9KTtcblx0XHRcdFx0YUJpbmRpbmdLZXlzLmZvckVhY2goKHNQcm9wZXJ0eU5hbWUpID0+IHtcblx0XHRcdFx0XHRjb25zdCBvTGlzdEJpbmRpbmcgPSBvRWxlbWVudD8ubUJpbmRpbmdJbmZvcz8uW3NQcm9wZXJ0eU5hbWVdLmJpbmRpbmc7XG5cblx0XHRcdFx0XHRpZiAob0xpc3RCaW5kaW5nICYmIG9MaXN0QmluZGluZy5pc0E8T0RhdGFMaXN0QmluZGluZz4oXCJzYXAudWkubW9kZWwub2RhdGEudjQuT0RhdGFMaXN0QmluZGluZ1wiKSkge1xuXHRcdFx0XHRcdFx0dGhpcy5xdWVyeVdhdGNoZXIucmVnaXN0ZXJCaW5kaW5nKG9MaXN0QmluZGluZyk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9KTtcblx0XHRcdH1cblx0XHRcdC8vIFRoaXMgaXMgZGlydHkgYnV0IE1EQ1RhYmxlcyBhbmQgTURDQ2hhcnRzIGhhdmUgYSB3ZWlyZCBsb2FkaW5nIGxpZmVjeWNsZVxuXHRcdFx0aWYgKG9FbGVtZW50LmlzQTxNRENUYWJsZT4oXCJzYXAudWkubWRjLlRhYmxlXCIpIHx8IG9FbGVtZW50LmlzQTxDaGFydD4oXCJzYXAudWkubWRjLkNoYXJ0XCIpKSB7XG5cdFx0XHRcdHRoaXMuYlRhYmxlc0NoYXJ0c0xvYWRlZCA9IGZhbHNlO1xuXHRcdFx0XHRhUHJvbWlzZXMucHVzaCh0aGlzLnF1ZXJ5V2F0Y2hlci5yZWdpc3RlclRhYmxlT3JDaGFydChvRWxlbWVudCkpO1xuXHRcdFx0fSBlbHNlIGlmIChvRWxlbWVudC5pc0E8RmlsdGVyQmFyPihcInNhcC5mZS5tYWNyb3MuY29udHJvbHMuRmlsdGVyQmFyXCIpKSB7XG5cdFx0XHRcdHRoaXMucXVlcnlXYXRjaGVyLnJlZ2lzdGVyRmlsdGVyQmFyKG9FbGVtZW50KTtcblx0XHRcdH1cblx0XHR9KTtcblxuXHRcdHJldHVybiBhUHJvbWlzZXM7XG5cdH1cblxuXHRAbWV0aG9kT3ZlcnJpZGUoXCJfcm91dGluZ1wiKVxuXHRvbkFmdGVyQmluZGluZyhvQmluZGluZ0NvbnRleHQ/OiBDb250ZXh0LCBwYXJhbWV0ZXJzPzogeyBkZWZlcnJlZENyZWF0aW9uPzogYm9vbGVhbiB9KTogdm9pZCB7XG5cdFx0Ly8gSW4gY2FzZSB0aGUgcGFnZSBpcyByZWJpbmQgd2UgbmVlZCB0byBjbGVhciB0aGUgdGltZXIgKGVnOiBpbiBGQ0wsIHRoZSB1c2VyIGNhbiBzZWxlY3QgMiBpdGVtcyBzdWNjZXNzaXZlbHkgaW4gdGhlIGxpc3QgcmVwb3J0KVxuXHRcdGlmICh0aGlzLnBhZ2VSZWFkeVRpbWVvdXRUaW1lcikge1xuXHRcdFx0Y2xlYXJUaW1lb3V0KHRoaXMucGFnZVJlYWR5VGltZW91dFRpbWVyKTtcblx0XHR9XG5cblx0XHRpZiAoIXBhcmFtZXRlcnM/LmRlZmVycmVkQ3JlYXRpb24gfHwgIXRoaXMuaXNDb250ZXh0RXhwZWN0ZWQoKSB8fCBvQmluZGluZ0NvbnRleHQpIHtcblx0XHRcdHRoaXMucGFnZVJlYWR5VGltZW91dFRpbWVyID0gc2V0VGltZW91dCgoKSA9PiB7XG5cdFx0XHRcdExvZy5lcnJvcihcblx0XHRcdFx0XHRgVGhlIFBhZ2VSZWFkeSBFdmVudCB3YXMgbm90IGZpcmVkIHdpdGhpbiB0aGUgJHt0aGlzLnBhZ2VSZWFkeVRpbWVvdXR9IG1zIHRpbWVvdXQgLiBJdCBoYXMgYmVlbiBmb3JjZWQuIFBsZWFzZSBjb250YWN0IHlvdXIgYXBwbGljYXRpb24gZGV2ZWxvcGVyIGZvciBmdXJ0aGVyIGFuYWx5c2lzYFxuXHRcdFx0XHQpO1xuXHRcdFx0XHR0aGlzLl9vRXZlbnRQcm92aWRlci5maXJlRXZlbnQoXCJwYWdlUmVhZHlcIik7XG5cdFx0XHR9LCB0aGlzLnBhZ2VSZWFkeVRpbWVvdXQpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHQvLyBXZSBhcmUgaW4gZGVmZXJyZWQgY3JlYXRpb24gd2l0aCBubyBjb250ZXh0LCB3ZSBuZWVkIHRvIHdhaXQgZm9yIHRoZSBjb250ZXh0IHRvIGJlIHNldCBieSB0aGUgY3JlYXRlIGRpYWxvZ1xuXHRcdFx0Ly8gV2UgYWxzbyBuZWVkIHRvIGRpc2FibGUgdGhlIHBsYWNlaG9sZGVyIGFuaW1hdGlvblxuXHRcdFx0Y29uc3Qgcm9vdENvbnRyb2xDb250cm9sbGVyID0gdGhpcy5hcHBDb21wb25lbnQuZ2V0Um9vdENvbnRyb2woKS5nZXRDb250cm9sbGVyKCk7XG5cdFx0XHRjb25zdCBwbGFjZWhvbGRlciA9IHJvb3RDb250cm9sQ29udHJvbGxlcj8uZ2V0UGxhY2Vob2xkZXI/LigpO1xuXHRcdFx0cGxhY2Vob2xkZXI/LmRpc2FibGVBbmltYXRpb24oKTtcblx0XHR9XG5cblx0XHRpZiAodGhpcy5pc0NvbnRleHRFeHBlY3RlZCgpICYmICFvQmluZGluZ0NvbnRleHQpIHtcblx0XHRcdC8vIEZvcmNlIHRvIG1lbnRpb24gd2UgYXJlIGV4cGVjdGluZyBkYXRhXG5cdFx0XHR0aGlzLmJIYXNDb250ZXh0ID0gZmFsc2U7XG5cdFx0XHRyZXR1cm47XG5cdFx0fSBlbHNlIHtcblx0XHRcdHRoaXMuYkhhc0NvbnRleHQgPSB0cnVlO1xuXHRcdH1cblxuXHRcdGlmICh0aGlzLl9iQWZ0ZXJCaW5kaW5nQWxyZWFkeUFwcGxpZWQpIHtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cblx0XHR0aGlzLl9iQWZ0ZXJCaW5kaW5nQWxyZWFkeUFwcGxpZWQgPSB0cnVlO1xuXG5cdFx0dGhpcy5hdHRhY2hFdmVudE9uY2UoXCJwYWdlUmVhZHlcIiwgbnVsbCwgKCkgPT4ge1xuXHRcdFx0Y2xlYXJUaW1lb3V0KHRoaXMucGFnZVJlYWR5VGltZW91dFRpbWVyKTtcblx0XHRcdHRoaXMucGFnZVJlYWR5VGltZW91dFRpbWVyID0gdW5kZWZpbmVkO1xuXHRcdFx0dGhpcy5fYkFmdGVyQmluZGluZ0FscmVhZHlBcHBsaWVkID0gZmFsc2U7XG5cdFx0XHR0aGlzLnF1ZXJ5V2F0Y2hlci5yZXNldCgpO1xuXHRcdH0pO1xuXG5cdFx0dGhpcy5vbkFmdGVyQmluZGluZ1Byb21pc2UgPSBuZXcgUHJvbWlzZTx2b2lkPihhc3luYyAocmVzb2x2ZSk6IFByb21pc2U8dm9pZD4gPT4ge1xuXHRcdFx0Y29uc3QgYVRhYmxlQ2hhcnRJbml0aWFsaXplZFByb21pc2VzID0gdGhpcy5yZWdpc3RlckFnZ3JlZ2F0ZWRDb250cm9scyhvQmluZGluZ0NvbnRleHQpO1xuXG5cdFx0XHRpZiAoYVRhYmxlQ2hhcnRJbml0aWFsaXplZFByb21pc2VzLmxlbmd0aCA+IDApIHtcblx0XHRcdFx0YXdhaXQgUHJvbWlzZS5hbGwoYVRhYmxlQ2hhcnRJbml0aWFsaXplZFByb21pc2VzKTtcblx0XHRcdFx0dGhpcy5iVGFibGVzQ2hhcnRzTG9hZGVkID0gdHJ1ZTtcblx0XHRcdFx0dGhpcy5jaGVja1BhZ2VSZWFkeURlYm91bmNlZCgpO1xuXHRcdFx0XHRyZXNvbHZlKCk7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHR0aGlzLmNoZWNrUGFnZVJlYWR5RGVib3VuY2VkKCk7XG5cdFx0XHRcdHJlc29sdmUoKTtcblx0XHRcdH1cblx0XHR9KTtcblx0fVxuXG5cdEBwdWJsaWNFeHRlbnNpb24oKVxuXHRAZmluYWxFeHRlbnNpb24oKVxuXHRwdWJsaWMgaXNQYWdlUmVhZHkoKTogYm9vbGVhbiB7XG5cdFx0cmV0dXJuIHRoaXMuX2JJc1BhZ2VSZWFkeTtcblx0fVxuXG5cdEBwdWJsaWNFeHRlbnNpb24oKVxuXHRAZmluYWxFeHRlbnNpb24oKVxuXHRwdWJsaWMgYXN5bmMgd2FpdFBhZ2VSZWFkeSgpOiBQcm9taXNlPHZvaWQ+IHtcblx0XHRyZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHtcblx0XHRcdGlmICh0aGlzLmlzUGFnZVJlYWR5KCkpIHtcblx0XHRcdFx0cmVzb2x2ZSgpO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0dGhpcy5hdHRhY2hFdmVudE9uY2UoXG5cdFx0XHRcdFx0XCJwYWdlUmVhZHlcIixcblx0XHRcdFx0XHRudWxsLFxuXHRcdFx0XHRcdCgpID0+IHtcblx0XHRcdFx0XHRcdHJlc29sdmUoKTtcblx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdHRoaXNcblx0XHRcdFx0KTtcblx0XHRcdH1cblx0XHR9KTtcblx0fVxuXG5cdEBwdWJsaWNFeHRlbnNpb24oKVxuXHRAZmluYWxFeHRlbnNpb24oKVxuXHRwdWJsaWMgYXR0YWNoRXZlbnRPbmNlKHNFdmVudElkOiBzdHJpbmcsIG9EYXRhOiBvYmplY3QgfCBudWxsLCBmbkZ1bmN0aW9uPzogRnVuY3Rpb24sIG9MaXN0ZW5lcj86IG9iamVjdCk6IEV2ZW50UHJvdmlkZXIge1xuXHRcdC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBwcmVmZXItcmVzdC1wYXJhbXNcblx0XHRyZXR1cm4gdGhpcy5fb0V2ZW50UHJvdmlkZXIuYXR0YWNoRXZlbnRPbmNlKHNFdmVudElkLCBvRGF0YSBhcyBvYmplY3QsIGZuRnVuY3Rpb24gYXMgRnVuY3Rpb24sIG9MaXN0ZW5lcik7XG5cdH1cblxuXHRAcHVibGljRXh0ZW5zaW9uKClcblx0QGZpbmFsRXh0ZW5zaW9uKClcblx0cHVibGljIGF0dGFjaEV2ZW50KHNFdmVudElkOiBzdHJpbmcsIG9EYXRhOiBvYmplY3QgfCBudWxsLCBmbkZ1bmN0aW9uOiBGdW5jdGlvbiwgb0xpc3RlbmVyOiBvYmplY3QpOiBFdmVudFByb3ZpZGVyIHtcblx0XHQvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcHJlZmVyLXJlc3QtcGFyYW1zXG5cdFx0cmV0dXJuIHRoaXMuX29FdmVudFByb3ZpZGVyLmF0dGFjaEV2ZW50KHNFdmVudElkLCBvRGF0YSBhcyBvYmplY3QsIGZuRnVuY3Rpb24sIG9MaXN0ZW5lcik7XG5cdH1cblxuXHRAcHVibGljRXh0ZW5zaW9uKClcblx0QGZpbmFsRXh0ZW5zaW9uKClcblx0cHVibGljIGRldGFjaEV2ZW50KHNFdmVudElkOiBzdHJpbmcsIGZuRnVuY3Rpb246IEZ1bmN0aW9uKTogRXZlbnRQcm92aWRlciB7XG5cdFx0Ly8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHByZWZlci1yZXN0LXBhcmFtc1xuXHRcdHJldHVybiB0aGlzLl9vRXZlbnRQcm92aWRlci5kZXRhY2hFdmVudChzRXZlbnRJZCwgZm5GdW5jdGlvbik7XG5cdH1cblxuXHRwcml2YXRlIHJlZ2lzdGVyQ29udGFpbmVyKG9Db250YWluZXI6IENvbnRyb2wpOiB2b2lkIHtcblx0XHR0aGlzLl9vQ29udGFpbmVyID0gb0NvbnRhaW5lcjtcblx0XHR0aGlzLl9mbkNvbnRhaW5lckRlbGVnYXRlID0ge1xuXHRcdFx0b25CZWZvcmVTaG93OiAoKTogdm9pZCA9PiB7XG5cdFx0XHRcdHRoaXMuYlNob3duID0gZmFsc2U7XG5cdFx0XHRcdHRoaXMuX2JJc1BhZ2VSZWFkeSA9IGZhbHNlO1xuXHRcdFx0fSxcblx0XHRcdG9uQmVmb3JlSGlkZTogKCk6IHZvaWQgPT4ge1xuXHRcdFx0XHR0aGlzLmJTaG93biA9IGZhbHNlO1xuXHRcdFx0XHR0aGlzLl9iSXNQYWdlUmVhZHkgPSBmYWxzZTtcblx0XHRcdH0sXG5cdFx0XHRvbkFmdGVyU2hvdzogKCk6IHZvaWQgPT4ge1xuXHRcdFx0XHR0aGlzLmJTaG93biA9IHRydWU7XG5cdFx0XHRcdHRoaXMub25BZnRlckJpbmRpbmdQcm9taXNlPy50aGVuKCgpOiB2b2lkID0+IHtcblx0XHRcdFx0XHRyZXR1cm4gdGhpcy5jaGVja1BhZ2VSZWFkeURlYm91bmNlZCh0cnVlKTtcblx0XHRcdFx0fSk7XG5cdFx0XHR9XG5cdFx0fTtcblx0XHR0aGlzLl9vQ29udGFpbmVyPy5hZGRFdmVudERlbGVnYXRlKHRoaXMuX2ZuQ29udGFpbmVyRGVsZWdhdGUsIHRoaXMpO1xuXHR9XG5cblx0QHByaXZhdGVFeHRlbnNpb24oKVxuXHRAZXh0ZW5zaWJsZShPdmVycmlkZUV4ZWN1dGlvbi5JbnN0ZWFkKVxuXHRwdWJsaWMgaXNDb250ZXh0RXhwZWN0ZWQoKTogYm9vbGVhbiB7XG5cdFx0cmV0dXJuIGZhbHNlO1xuXHR9XG5cblx0QHB1YmxpY0V4dGVuc2lvbigpXG5cdHB1YmxpYyBjaGVja1BhZ2VSZWFkeURlYm91bmNlZChiRnJvbU5hdiA9IGZhbHNlKTogdm9pZCB7XG5cdFx0aWYgKHRoaXMucGFnZVJlYWR5VGltZXIpIHtcblx0XHRcdGNsZWFyVGltZW91dCh0aGlzLnBhZ2VSZWFkeVRpbWVyKTtcblx0XHR9XG5cdFx0Y29uc3QgbW9kZWwgPSB0aGlzLmdldFZpZXcoKS5nZXRNb2RlbCgpIGFzIE9EYXRhTW9kZWw7XG5cdFx0bGV0IHRpbWVPdXQ6IG51bWJlcjtcblx0XHQvLyBpc0NvbnRleHRFeHBlY3RlZCA9IHRydWUgd2hlbiBPYmplY3QgUGFnZSBpcyBkaXNwbGF5ZWRcblx0XHRpZiAoKG1vZGVsICYmIG1vZGVsLmdldE9wdGltaXN0aWNCYXRjaEVuYWJsZXIoKSA9PT0gbnVsbCkgfHwgdGhpcy5pc0NvbnRleHRFeHBlY3RlZCgpKSB7XG5cdFx0XHR0aW1lT3V0ID0gMjAwO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHQvLyBXZSBhcmUgd2FpdGluZyBsZXNzIHRpbWUgYmVjYXVzZSBkYXRhIGlzIGFscmVhZHkgdGhlcmUgKG9wdGltaXN0aWNCYXRjaClcblx0XHRcdHRpbWVPdXQgPSAyMDtcblx0XHR9XG5cdFx0dGhpcy5wYWdlUmVhZHlUaW1lciA9IHNldFRpbWVvdXQoKCkgPT4ge1xuXHRcdFx0dGhpcy5fY2hlY2tQYWdlUmVhZHkoYkZyb21OYXYpO1xuXHRcdH0sIHRpbWVPdXQpIGFzIHVua25vd24gYXMgbnVtYmVyO1xuXHR9XG5cblx0cHVibGljIF9jaGVja1BhZ2VSZWFkeShiRnJvbU5hdiA9IGZhbHNlKTogdm9pZCB7XG5cdFx0Y29uc3QgZm5VSVVwZGF0ZWQgPSAoKTogdm9pZCA9PiB7XG5cdFx0XHQvLyBXYWl0IHVudGlsIHRoZSBVSSBpcyBubyBsb25nZXIgZGlydHlcblx0XHRcdGlmICghUmVuZGVyaW5nLmlzUGVuZGluZygpKSB7XG5cdFx0XHRcdChSZW5kZXJpbmcgYXMgUmVuZGVyaW5nRXgpLmRldGFjaFVJVXBkYXRlZChmblVJVXBkYXRlZCk7XG5cdFx0XHRcdHRoaXMuX2JXYWl0aW5nRm9yUmVmcmVzaCA9IGZhbHNlO1xuXHRcdFx0XHR0aGlzLmNoZWNrUGFnZVJlYWR5RGVib3VuY2VkKCk7XG5cdFx0XHR9XG5cdFx0fTtcblxuXHRcdC8vIEluIGNhc2UgVUlVcGRhdGUgZG9lcyBub3QgZ2V0IGNhbGxlZCwgY2hlY2sgaWYgVUkgaXMgbm90IGRpcnR5IGFuZCB0aGVuIGNhbGwgX2NoZWNrUGFnZVJlYWR5XG5cdFx0Y29uc3QgY2hlY2tVSVVwZGF0ZWQgPSAoKTogdm9pZCA9PiB7XG5cdFx0XHRpZiAoUmVuZGVyaW5nLmlzUGVuZGluZygpKSB7XG5cdFx0XHRcdHNldFRpbWVvdXQoY2hlY2tVSVVwZGF0ZWQsIDUwMCk7XG5cdFx0XHR9IGVsc2UgaWYgKHRoaXMuX2JXYWl0aW5nRm9yUmVmcmVzaCkge1xuXHRcdFx0XHR0aGlzLl9iV2FpdGluZ0ZvclJlZnJlc2ggPSBmYWxzZTtcblx0XHRcdFx0KFJlbmRlcmluZyBhcyBSZW5kZXJpbmdFeCkuZGV0YWNoVUlVcGRhdGVkKGZuVUlVcGRhdGVkKTtcblx0XHRcdFx0dGhpcy5jaGVja1BhZ2VSZWFkeURlYm91bmNlZCgpO1xuXHRcdFx0fVxuXHRcdH07XG5cblx0XHRpZiAoXG5cdFx0XHR0aGlzLmJTaG93biAmJlxuXHRcdFx0dGhpcy5xdWVyeVdhdGNoZXIuaXNEYXRhUmVjZWl2ZWQoKSAhPT0gZmFsc2UgJiZcblx0XHRcdHRoaXMuYlRhYmxlc0NoYXJ0c0xvYWRlZCAhPT0gZmFsc2UgJiZcblx0XHRcdCghdGhpcy5pc0NvbnRleHRFeHBlY3RlZCgpIHx8IHRoaXMuYkhhc0NvbnRleHQpIC8vIEVpdGhlciBubyBjb250ZXh0IGlzIGV4cGVjdGVkIG9yIHRoZXJlIGlzIG9uZVxuXHRcdCkge1xuXHRcdFx0aWYgKHRoaXMucXVlcnlXYXRjaGVyLmlzRGF0YVJlY2VpdmVkKCkgPT09IHRydWUgJiYgIWJGcm9tTmF2ICYmICF0aGlzLl9iV2FpdGluZ0ZvclJlZnJlc2ggJiYgUmVuZGVyaW5nLmlzUGVuZGluZygpKSB7XG5cdFx0XHRcdC8vIElmIHdlIHJlcXVlc3RlZCBkYXRhIHdlIGdldCBub3RpZmllZCBhcyBzb29uIGFzIHRoZSBkYXRhIGFycml2ZWQsIHNvIGJlZm9yZSB0aGUgbmV4dCByZW5kZXJpbmcgdGlja1xuXHRcdFx0XHR0aGlzLnF1ZXJ5V2F0Y2hlci5yZXNldERhdGFSZWNlaXZlZCgpO1xuXHRcdFx0XHR0aGlzLl9iV2FpdGluZ0ZvclJlZnJlc2ggPSB0cnVlO1xuXHRcdFx0XHQoUmVuZGVyaW5nIGFzIFJlbmRlcmluZ0V4KS5hdHRhY2hVSVVwZGF0ZWQoZm5VSVVwZGF0ZWQpO1xuXHRcdFx0XHRzZXRUaW1lb3V0KGNoZWNrVUlVcGRhdGVkLCA1MDApO1xuXHRcdFx0fSBlbHNlIGlmIChcblx0XHRcdFx0KCF0aGlzLl9iV2FpdGluZ0ZvclJlZnJlc2ggJiYgUmVuZGVyaW5nLmlzUGVuZGluZygpKSB8fFxuXHRcdFx0XHR0aGlzLl9uYldhaXRzICE9PSAwIHx8XG5cdFx0XHRcdFRlbXBsYXRlZFZpZXdTZXJ2aWNlRmFjdG9yeS5nZXROdW1iZXJPZlZpZXdzSW5DcmVhdGlvblN0YXRlKCkgPiAwIHx8XG5cdFx0XHRcdHRoaXMucXVlcnlXYXRjaGVyLmlzU2VhcmNoUGVuZGluZygpXG5cdFx0XHQpIHtcblx0XHRcdFx0dGhpcy5fYldhaXRpbmdGb3JSZWZyZXNoID0gdHJ1ZTtcblx0XHRcdFx0KFJlbmRlcmluZyBhcyBSZW5kZXJpbmdFeCkuYXR0YWNoVUlVcGRhdGVkKGZuVUlVcGRhdGVkKTtcblx0XHRcdFx0c2V0VGltZW91dChjaGVja1VJVXBkYXRlZCwgNTAwKTtcblx0XHRcdH0gZWxzZSBpZiAoIXRoaXMuX2JXYWl0aW5nRm9yUmVmcmVzaCkge1xuXHRcdFx0XHQvLyBJbiB0aGUgY2FzZSB3ZSdyZSBub3Qgd2FpdGluZyBmb3IgYW55IGRhdGEgKG5hdmlnYXRpbmcgYmFjayB0byBhIHBhZ2Ugd2UgYWxyZWFkeSBoYXZlIGxvYWRlZClcblx0XHRcdFx0Ly8ganVzdCB3YWl0IGZvciBhIGZyYW1lIHRvIGZpcmUgdGhlIGV2ZW50LlxuXHRcdFx0XHR0aGlzLl9iSXNQYWdlUmVhZHkgPSB0cnVlO1xuXHRcdFx0XHR0aGlzLl9vRXZlbnRQcm92aWRlci5maXJlRXZlbnQoXCJwYWdlUmVhZHlcIik7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0LyoqXG5cdCAqIEZvcmNlcyB0aGUgJ3BhZ2VSZWFkeScgZXZlbnQgdG8gYmUgc2VudC5cblx0ICovXG5cdGZvcmNlUGFnZVJlYWR5KCk6IHZvaWQge1xuXHRcdHRoaXMuX29FdmVudFByb3ZpZGVyLmZpcmVFdmVudChcInBhZ2VSZWFkeVwiKTtcblx0fVxufVxuXG5leHBvcnQgZGVmYXVsdCBQYWdlUmVhZHlDb250cm9sbGVyRXh0ZW5zaW9uO1xuIl0sIm1hcHBpbmdzIjoiOzs7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
|
|
@@ -10,12 +10,11 @@ sap.ui.define(["sap/fe/base/ClassSupport", "sap/fe/base/HookSupport", "sap/ui/co
|
|
|
10
10
|
var publicExtension = ClassSupport.publicExtension;
|
|
11
11
|
var extensible = ClassSupport.extensible;
|
|
12
12
|
var defineUI5Class = ClassSupport.defineUI5Class;
|
|
13
|
-
function _inheritsLoose(
|
|
14
|
-
function _setPrototypeOf(
|
|
15
|
-
function _applyDecoratedDescriptor(
|
|
13
|
+
function _inheritsLoose(t, o) { t.prototype = Object.create(o.prototype), t.prototype.constructor = t, _setPrototypeOf(t, o); }
|
|
14
|
+
function _setPrototypeOf(t, e) { return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) { return t.__proto__ = e, t; }, _setPrototypeOf(t, e); }
|
|
15
|
+
function _applyDecoratedDescriptor(i, e, r, n, l) { var a = {}; return Object.keys(n).forEach(function (i) { a[i] = n[i]; }), a.enumerable = !!a.enumerable, a.configurable = !!a.configurable, ("value" in a || a.initializer) && (a.writable = !0), a = r.slice().reverse().reduce(function (r, n) { return n(i, e, r) || r; }, a), l && void 0 !== a.initializer && (a.value = a.initializer ? a.initializer.call(l) : void 0, a.initializer = void 0), void 0 === a.initializer ? (Object.defineProperty(i, e, a), null) : a; }
|
|
16
16
|
/**
|
|
17
17
|
* Controller extension providing hooks for the navigation using paginators
|
|
18
|
-
*
|
|
19
18
|
* @hideconstructor
|
|
20
19
|
* @public
|
|
21
20
|
* @since 1.94.0
|
|
@@ -28,7 +27,6 @@ sap.ui.define(["sap/fe/base/ClassSupport", "sap/fe/base/HookSupport", "sap/ui/co
|
|
|
28
27
|
var _proto = Paginator.prototype;
|
|
29
28
|
/**
|
|
30
29
|
* Initiates the paginator control.
|
|
31
|
-
*
|
|
32
30
|
* @param oBinding ODataListBinding object
|
|
33
31
|
* @param oContext Current context where the navigation is initiated
|
|
34
32
|
* @public
|
|
@@ -40,7 +38,6 @@ sap.ui.define(["sap/fe/base/ClassSupport", "sap/fe/base/HookSupport", "sap/ui/co
|
|
|
40
38
|
|
|
41
39
|
/**
|
|
42
40
|
* Called before context update.
|
|
43
|
-
*
|
|
44
41
|
* @param oListBinding ODataListBinding object
|
|
45
42
|
* @param iCurrentIndex Current index of context in listBinding from where the navigation is initiated
|
|
46
43
|
* @param iIndexUpdate The delta index for update
|
|
@@ -54,7 +51,6 @@ sap.ui.define(["sap/fe/base/ClassSupport", "sap/fe/base/HookSupport", "sap/ui/co
|
|
|
54
51
|
|
|
55
52
|
/**
|
|
56
53
|
* Returns the updated context after the paginator operation.
|
|
57
|
-
*
|
|
58
54
|
* @param oContext Final context returned after the paginator action
|
|
59
55
|
* @public
|
|
60
56
|
* @since 1.94.0
|
|
@@ -68,4 +64,4 @@ sap.ui.define(["sap/fe/base/ClassSupport", "sap/fe/base/HookSupport", "sap/ui/co
|
|
|
68
64
|
}(ControllerExtension), (_applyDecoratedDescriptor(_class2.prototype, "initialize", [_dec2, _dec3], Object.getOwnPropertyDescriptor(_class2.prototype, "initialize"), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, "onBeforeContextUpdate", [_dec4, _dec5], Object.getOwnPropertyDescriptor(_class2.prototype, "onBeforeContextUpdate"), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, "onContextUpdate", [_dec6, _dec7], Object.getOwnPropertyDescriptor(_class2.prototype, "onContextUpdate"), _class2.prototype)), _class2)) || _class);
|
|
69
65
|
return Paginator;
|
|
70
66
|
}, false);
|
|
71
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,
|
|
67
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJQYWdpbmF0b3IiLCJfZGVjIiwiZGVmaW5lVUk1Q2xhc3MiLCJfZGVjMiIsInB1YmxpY0V4dGVuc2lvbiIsIl9kZWMzIiwiaG9va2FibGUiLCJfZGVjNCIsIl9kZWM1IiwiZXh0ZW5zaWJsZSIsIk92ZXJyaWRlRXhlY3V0aW9uIiwiQWZ0ZXIiLCJfZGVjNiIsIl9kZWM3IiwiX2NsYXNzIiwiX2NsYXNzMiIsIl9Db250cm9sbGVyRXh0ZW5zaW9uIiwiX2luaGVyaXRzTG9vc2UiLCJhcHBseSIsImFyZ3VtZW50cyIsIl9wcm90byIsInByb3RvdHlwZSIsImluaXRpYWxpemUiLCJvQmluZGluZyIsIm9Db250ZXh0Iiwib25CZWZvcmVDb250ZXh0VXBkYXRlIiwib0xpc3RCaW5kaW5nIiwiaUN1cnJlbnRJbmRleCIsImlJbmRleFVwZGF0ZSIsIm9uQ29udGV4dFVwZGF0ZSIsIkNvbnRyb2xsZXJFeHRlbnNpb24iLCJfYXBwbHlEZWNvcmF0ZWREZXNjcmlwdG9yIiwiT2JqZWN0IiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIl0sInNvdXJjZVJvb3QiOiIuIiwic291cmNlcyI6WyJQYWdpbmF0b3IudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZGVmaW5lVUk1Q2xhc3MsIGV4dGVuc2libGUsIHB1YmxpY0V4dGVuc2lvbiB9IGZyb20gXCJzYXAvZmUvYmFzZS9DbGFzc1N1cHBvcnRcIjtcbmltcG9ydCB7IGhvb2thYmxlIH0gZnJvbSBcInNhcC9mZS9iYXNlL0hvb2tTdXBwb3J0XCI7XG5pbXBvcnQgdHlwZSBQYWdlQ29udHJvbGxlciBmcm9tIFwic2FwL2ZlL2NvcmUvUGFnZUNvbnRyb2xsZXJcIjtcbmltcG9ydCBDb250cm9sbGVyRXh0ZW5zaW9uIGZyb20gXCJzYXAvdWkvY29yZS9tdmMvQ29udHJvbGxlckV4dGVuc2lvblwiO1xuaW1wb3J0IE92ZXJyaWRlRXhlY3V0aW9uIGZyb20gXCJzYXAvdWkvY29yZS9tdmMvT3ZlcnJpZGVFeGVjdXRpb25cIjtcbmltcG9ydCB0eXBlIHsgZGVmYXVsdCBhcyBDb250ZXh0IH0gZnJvbSBcInNhcC91aS9tb2RlbC9vZGF0YS92NC9Db250ZXh0XCI7XG5pbXBvcnQgdHlwZSBPRGF0YUxpc3RCaW5kaW5nIGZyb20gXCJzYXAvdWkvbW9kZWwvb2RhdGEvdjQvT0RhdGFMaXN0QmluZGluZ1wiO1xuXG4vKipcbiAqIENvbnRyb2xsZXIgZXh0ZW5zaW9uIHByb3ZpZGluZyBob29rcyBmb3IgdGhlIG5hdmlnYXRpb24gdXNpbmcgcGFnaW5hdG9yc1xuICogQGhpZGVjb25zdHJ1Y3RvclxuICogQHB1YmxpY1xuICogQHNpbmNlIDEuOTQuMFxuICovXG5AZGVmaW5lVUk1Q2xhc3MoXCJzYXAuZmUuY29yZS5jb250cm9sbGVyZXh0ZW5zaW9ucy5QYWdpbmF0b3JcIilcbmNsYXNzIFBhZ2luYXRvciBleHRlbmRzIENvbnRyb2xsZXJFeHRlbnNpb24ge1xuXHRwcm90ZWN0ZWQgYmFzZSE6IFBhZ2VDb250cm9sbGVyO1xuXG5cdC8qKlxuXHQgKiBJbml0aWF0ZXMgdGhlIHBhZ2luYXRvciBjb250cm9sLlxuXHQgKiBAcGFyYW0gb0JpbmRpbmcgT0RhdGFMaXN0QmluZGluZyBvYmplY3Rcblx0ICogQHBhcmFtIG9Db250ZXh0IEN1cnJlbnQgY29udGV4dCB3aGVyZSB0aGUgbmF2aWdhdGlvbiBpcyBpbml0aWF0ZWRcblx0ICogQHB1YmxpY1xuXHQgKiBAc2luY2UgMS45NC4wXG5cdCAqL1xuXHRAcHVibGljRXh0ZW5zaW9uKClcblx0QGhvb2thYmxlKFwiQmVmb3JlXCIpXG5cdC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW51c2VkLXZhcnNcblx0aW5pdGlhbGl6ZShvQmluZGluZz86IE9EYXRhTGlzdEJpbmRpbmcsIG9Db250ZXh0PzogQ29udGV4dCk6IHZvaWQge31cblxuXHQvKipcblx0ICogQ2FsbGVkIGJlZm9yZSBjb250ZXh0IHVwZGF0ZS5cblx0ICogQHBhcmFtIG9MaXN0QmluZGluZyBPRGF0YUxpc3RCaW5kaW5nIG9iamVjdFxuXHQgKiBAcGFyYW0gaUN1cnJlbnRJbmRleCBDdXJyZW50IGluZGV4IG9mIGNvbnRleHQgaW4gbGlzdEJpbmRpbmcgZnJvbSB3aGVyZSB0aGUgbmF2aWdhdGlvbiBpcyBpbml0aWF0ZWRcblx0ICogQHBhcmFtIGlJbmRleFVwZGF0ZSBUaGUgZGVsdGEgaW5kZXggZm9yIHVwZGF0ZVxuXHQgKiBAcmV0dXJucyBgdHJ1ZWAgdG8gcHJldmVudCB0aGUgdXBkYXRlIG9mIGN1cnJlbnQgY29udGV4dC5cblx0ICovXG5cdEBwdWJsaWNFeHRlbnNpb24oKVxuXHRAZXh0ZW5zaWJsZShPdmVycmlkZUV4ZWN1dGlvbi5BZnRlcilcblx0Ly8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnVzZWQtdmFyc1xuXHRvbkJlZm9yZUNvbnRleHRVcGRhdGUob0xpc3RCaW5kaW5nOiBPRGF0YUxpc3RCaW5kaW5nLCBpQ3VycmVudEluZGV4OiBudW1iZXIsIGlJbmRleFVwZGF0ZTogbnVtYmVyKTogYm9vbGVhbiB7XG5cdFx0cmV0dXJuIGZhbHNlO1xuXHR9XG5cblx0LyoqXG5cdCAqIFJldHVybnMgdGhlIHVwZGF0ZWQgY29udGV4dCBhZnRlciB0aGUgcGFnaW5hdG9yIG9wZXJhdGlvbi5cblx0ICogQHBhcmFtIG9Db250ZXh0IEZpbmFsIGNvbnRleHQgcmV0dXJuZWQgYWZ0ZXIgdGhlIHBhZ2luYXRvciBhY3Rpb25cblx0ICogQHB1YmxpY1xuXHQgKiBAc2luY2UgMS45NC4wXG5cdCAqL1xuXHRAcHVibGljRXh0ZW5zaW9uKClcblx0QGV4dGVuc2libGUoT3ZlcnJpZGVFeGVjdXRpb24uQWZ0ZXIpXG5cdC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW51c2VkLXZhcnNcblx0b25Db250ZXh0VXBkYXRlKG9Db250ZXh0OiBDb250ZXh0KTogdm9pZCB7XG5cdFx0Ly9UbyBiZSBvdmVycmlkZGVuIGJ5IHRoZSBhcHBsaWNhdGlvblxuXHR9XG59XG5leHBvcnQgZGVmYXVsdCBQYWdpbmF0b3I7XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7OztFQVFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtFQUxBLElBT01BLFNBQVMsSUFBQUMsSUFBQSxHQURkQyxjQUFjLENBQUMsNENBQTRDLENBQUMsRUFBQUMsS0FBQSxHQVczREMsZUFBZSxDQUFDLENBQUMsRUFBQUMsS0FBQSxHQUNqQkMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxFQUFBQyxLQUFBLEdBV2xCSCxlQUFlLENBQUMsQ0FBQyxFQUFBSSxLQUFBLEdBQ2pCQyxVQUFVLENBQUNDLGlCQUFpQixDQUFDQyxLQUFLLENBQUMsRUFBQUMsS0FBQSxHQVluQ1IsZUFBZSxDQUFDLENBQUMsRUFBQVMsS0FBQSxHQUNqQkosVUFBVSxDQUFDQyxpQkFBaUIsQ0FBQ0MsS0FBSyxDQUFDLEVBQUFWLElBQUEsQ0FBQWEsTUFBQSxJQUFBQyxPQUFBLDBCQUFBQyxvQkFBQTtJQUFBQyxjQUFBLENBQUFqQixTQUFBLEVBQUFnQixvQkFBQTtJQUFBLFNBQUFoQixVQUFBO01BQUEsT0FBQWdCLG9CQUFBLENBQUFFLEtBQUEsT0FBQUMsU0FBQTtJQUFBO0lBQUEsSUFBQUMsTUFBQSxHQUFBcEIsU0FBQSxDQUFBcUIsU0FBQTtJQWpDcEM7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7SUFOQ0QsTUFBQTtJQVNBO0lBQ0FFLFVBQVUsR0FIVixTQUFBQSxXQUdXQyxRQUEyQixFQUFFQyxRQUFrQixFQUFRLENBQUM7O0lBRW5FO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BTkM7SUFBQUosTUFBQTtJQVNBO0lBQ0FLLHFCQUFxQixHQUhyQixTQUFBQSxzQkFHc0JDLFlBQThCLEVBQUVDLGFBQXFCLEVBQUVDLFlBQW9CLEVBQVc7TUFDM0csT0FBTyxLQUFLO0lBQ2I7O0lBRUE7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BTEM7SUFBQVIsTUFBQTtJQVFBO0lBQ0FTLGVBQWUsR0FIZixTQUFBQSxnQkFHZ0JMLFFBQWlCLEVBQVE7TUFDeEM7SUFBQSxDQUNBO0lBQUEsT0FBQXhCLFNBQUE7RUFBQSxFQXhDc0I4QixtQkFBbUIsSUFBQUMseUJBQUEsQ0FBQWhCLE9BQUEsQ0FBQU0sU0FBQSxpQkFBQWxCLEtBQUEsRUFBQUUsS0FBQSxHQUFBMkIsTUFBQSxDQUFBQyx3QkFBQSxDQUFBbEIsT0FBQSxDQUFBTSxTQUFBLGlCQUFBTixPQUFBLENBQUFNLFNBQUEsR0FBQVUseUJBQUEsQ0FBQWhCLE9BQUEsQ0FBQU0sU0FBQSw0QkFBQWQsS0FBQSxFQUFBQyxLQUFBLEdBQUF3QixNQUFBLENBQUFDLHdCQUFBLENBQUFsQixPQUFBLENBQUFNLFNBQUEsNEJBQUFOLE9BQUEsQ0FBQU0sU0FBQSxHQUFBVSx5QkFBQSxDQUFBaEIsT0FBQSxDQUFBTSxTQUFBLHNCQUFBVCxLQUFBLEVBQUFDLEtBQUEsR0FBQW1CLE1BQUEsQ0FBQUMsd0JBQUEsQ0FBQWxCLE9BQUEsQ0FBQU0sU0FBQSxzQkFBQU4sT0FBQSxDQUFBTSxTQUFBLElBQUFOLE9BQUEsTUFBQUQsTUFBQTtFQUFBLE9BMEM1QmQsU0FBUztBQUFBIiwiaWdub3JlTGlzdCI6W119
|
|
@@ -8,7 +8,6 @@ import type ODataListBinding from "sap/ui/model/odata/v4/ODataListBinding";
|
|
|
8
8
|
|
|
9
9
|
/**
|
|
10
10
|
* Controller extension providing hooks for the navigation using paginators
|
|
11
|
-
*
|
|
12
11
|
* @hideconstructor
|
|
13
12
|
* @public
|
|
14
13
|
* @since 1.94.0
|
|
@@ -19,7 +18,6 @@ class Paginator extends ControllerExtension {
|
|
|
19
18
|
|
|
20
19
|
/**
|
|
21
20
|
* Initiates the paginator control.
|
|
22
|
-
*
|
|
23
21
|
* @param oBinding ODataListBinding object
|
|
24
22
|
* @param oContext Current context where the navigation is initiated
|
|
25
23
|
* @public
|
|
@@ -32,7 +30,6 @@ class Paginator extends ControllerExtension {
|
|
|
32
30
|
|
|
33
31
|
/**
|
|
34
32
|
* Called before context update.
|
|
35
|
-
*
|
|
36
33
|
* @param oListBinding ODataListBinding object
|
|
37
34
|
* @param iCurrentIndex Current index of context in listBinding from where the navigation is initiated
|
|
38
35
|
* @param iIndexUpdate The delta index for update
|
|
@@ -47,7 +44,6 @@ class Paginator extends ControllerExtension {
|
|
|
47
44
|
|
|
48
45
|
/**
|
|
49
46
|
* Returns the updated context after the paginator operation.
|
|
50
|
-
*
|
|
51
47
|
* @param oContext Final context returned after the paginator action
|
|
52
48
|
* @public
|
|
53
49
|
* @since 1.94.0
|