@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
|
@@ -205,7 +205,6 @@ function _getRelatedIntents(
|
|
|
205
205
|
|
|
206
206
|
/**
|
|
207
207
|
* This function fetches the related intents when semantic object and action are passed from feEnvironment.getIntent() only in case of My Inbox integration.
|
|
208
|
-
*
|
|
209
208
|
* @param semanticObjectAndAction This specifies the semantic object and action for fetching the intents
|
|
210
209
|
* @param oBindingContext This sepcifies the binding context for updating related apps
|
|
211
210
|
* @param appComponentSOItems This is a list of semantic items used for updating the related apps button
|
|
@@ -802,7 +801,6 @@ function getSpecificAllowedExpression(aExpressions: string[]): string {
|
|
|
802
801
|
|
|
803
802
|
/**
|
|
804
803
|
* Method to return allowed operators for type Guid.
|
|
805
|
-
*
|
|
806
804
|
* @returns Allowed operators for type Guid
|
|
807
805
|
*/
|
|
808
806
|
function getOperatorsForGuidProperty(): string {
|
|
@@ -820,7 +818,10 @@ function getParameterInfo(metaModelContext: ODataMetaModel, sContextPath: string
|
|
|
820
818
|
const oParameterInfo: ParameterInfo = {};
|
|
821
819
|
if (bResultContext && sParameterContextPath !== sContextPath) {
|
|
822
820
|
oParameterInfo.contextPath = sParameterContextPath;
|
|
823
|
-
oParameterInfo.parameterProperties = CommonUtils.getContextPathProperties(metaModelContext, sParameterContextPath)
|
|
821
|
+
oParameterInfo.parameterProperties = CommonUtils.getContextPathProperties(metaModelContext, sParameterContextPath) as Record<
|
|
822
|
+
string,
|
|
823
|
+
MetaModelProperty
|
|
824
|
+
>;
|
|
824
825
|
}
|
|
825
826
|
return oParameterInfo;
|
|
826
827
|
}
|
|
@@ -845,7 +846,6 @@ export type UserDefaultParameter = EdmActionParameter | Context;
|
|
|
845
846
|
|
|
846
847
|
/**
|
|
847
848
|
* Retrieves the user defaults from the startup app state (if available) or the startup parameter and sets them to a model.
|
|
848
|
-
*
|
|
849
849
|
* @param appComponent
|
|
850
850
|
* @param parameters
|
|
851
851
|
* @param model
|
|
@@ -1354,7 +1354,6 @@ function getParameterPath(sPath: string, sParameter: string): string {
|
|
|
1354
1354
|
|
|
1355
1355
|
/**
|
|
1356
1356
|
* Get resolved expression binding used for texts at runtime.
|
|
1357
|
-
*
|
|
1358
1357
|
* @param expBinding
|
|
1359
1358
|
* @param control
|
|
1360
1359
|
* @returns A string after resolution.
|
|
@@ -1374,7 +1373,6 @@ function _fntranslatedTextFromExpBindingString(expBinding: string, control: Cont
|
|
|
1374
1373
|
}
|
|
1375
1374
|
/**
|
|
1376
1375
|
* Check if the current device has a small screen.
|
|
1377
|
-
*
|
|
1378
1376
|
* @returns A Boolean.
|
|
1379
1377
|
*/
|
|
1380
1378
|
function isSmallDevice(): boolean {
|
|
@@ -1383,7 +1381,6 @@ function isSmallDevice(): boolean {
|
|
|
1383
1381
|
|
|
1384
1382
|
/**
|
|
1385
1383
|
* Parses a SelectionVariant or SelectionPresentationVariant annotation and creates the corresponding filters.
|
|
1386
|
-
*
|
|
1387
1384
|
* @param control MDC Chart, MDC Table or MultiView control on which the filters are applied
|
|
1388
1385
|
* @param annotationPath SelectionVariant or SelectionPresentationVariant annotation
|
|
1389
1386
|
* @returns Returns an array of filters.
|
|
@@ -1442,7 +1439,6 @@ function getConverterContextForPath(
|
|
|
1442
1439
|
* If a view has been created with the draft Root Path, this method returns its bindingContext.
|
|
1443
1440
|
* Where no view is found a new created context is returned.
|
|
1444
1441
|
* The new created context request the key of the entity in order to get the Etag of this entity.
|
|
1445
|
-
*
|
|
1446
1442
|
* @param programmingModel
|
|
1447
1443
|
* @param view
|
|
1448
1444
|
* @param appComponent
|
|
@@ -8,17 +8,16 @@ sap.ui.define(["sap/base/Log", "sap/fe/base/ClassSupport", "sap/fe/core/CommonUt
|
|
|
8
8
|
var _dec, _dec2, _dec3, _dec4, _class, _class2, _descriptor, _descriptor2, _descriptor3;
|
|
9
9
|
var property = ClassSupport.property;
|
|
10
10
|
var defineUI5Class = ClassSupport.defineUI5Class;
|
|
11
|
-
function _initializerDefineProperty(
|
|
12
|
-
function _assertThisInitialized(
|
|
13
|
-
function _inheritsLoose(
|
|
14
|
-
function _setPrototypeOf(
|
|
15
|
-
function _applyDecoratedDescriptor(
|
|
16
|
-
function _initializerWarningHelper(
|
|
11
|
+
function _initializerDefineProperty(e, i, r, l) { r && Object.defineProperty(e, i, { enumerable: r.enumerable, configurable: r.configurable, writable: r.writable, value: r.initializer ? r.initializer.call(l) : void 0 }); }
|
|
12
|
+
function _assertThisInitialized(e) { if (void 0 === e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); return e; }
|
|
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
|
+
function _initializerWarningHelper(r, e) { throw Error("Decorating class property failed. Please ensure that transform-class-properties is enabled and runs after the decorators transform."); }
|
|
17
17
|
/**
|
|
18
18
|
* Common Extension API for all pages of SAP Fiori elements for OData V4.
|
|
19
19
|
*
|
|
20
20
|
* To correctly integrate your app extension coding with SAP Fiori elements, use only the extensionAPI of SAP Fiori elements. Don't access or manipulate controls, properties, models, or other internal objects created by the SAP Fiori elements framework.
|
|
21
|
-
*
|
|
22
21
|
* @public
|
|
23
22
|
* @hideconstructor
|
|
24
23
|
* @since 1.79.0
|
|
@@ -33,19 +32,16 @@ sap.ui.define(["sap/base/Log", "sap/fe/base/ClassSupport", "sap/fe/core/CommonUt
|
|
|
33
32
|
_inheritsLoose(ExtensionAPI, _BaseObject);
|
|
34
33
|
/**
|
|
35
34
|
* A controller extension offering hooks into the edit flow of the application.
|
|
36
|
-
*
|
|
37
35
|
* @public
|
|
38
36
|
*/
|
|
39
37
|
|
|
40
38
|
/**
|
|
41
39
|
* A controller extension offering hooks into the routing flow of the application.
|
|
42
|
-
*
|
|
43
40
|
* @public
|
|
44
41
|
*/
|
|
45
42
|
|
|
46
43
|
/**
|
|
47
44
|
* ExtensionAPI for intent-based navigation
|
|
48
|
-
*
|
|
49
45
|
* @public
|
|
50
46
|
*/
|
|
51
47
|
|
|
@@ -68,7 +64,6 @@ sap.ui.define(["sap/base/Log", "sap/fe/base/ClassSupport", "sap/fe/core/CommonUt
|
|
|
68
64
|
|
|
69
65
|
/**
|
|
70
66
|
* Retrieves the editFlow controller extension for this page.
|
|
71
|
-
*
|
|
72
67
|
* @public
|
|
73
68
|
* @returns The editFlow controller extension
|
|
74
69
|
*/
|
|
@@ -79,7 +74,6 @@ sap.ui.define(["sap/base/Log", "sap/fe/base/ClassSupport", "sap/fe/core/CommonUt
|
|
|
79
74
|
|
|
80
75
|
/**
|
|
81
76
|
* Retrieves the routing controller extension for this page.
|
|
82
|
-
*
|
|
83
77
|
* @public
|
|
84
78
|
* @returns The routing controller extension
|
|
85
79
|
*/;
|
|
@@ -89,7 +83,6 @@ sap.ui.define(["sap/base/Log", "sap/fe/base/ClassSupport", "sap/fe/core/CommonUt
|
|
|
89
83
|
|
|
90
84
|
/**
|
|
91
85
|
* Retrieves the intentBasedNavigation controller extension for this page.
|
|
92
|
-
*
|
|
93
86
|
* @public
|
|
94
87
|
* @returns The intentBasedNavigation controller extension
|
|
95
88
|
*/;
|
|
@@ -99,7 +92,6 @@ sap.ui.define(["sap/base/Log", "sap/fe/base/ClassSupport", "sap/fe/core/CommonUt
|
|
|
99
92
|
|
|
100
93
|
/**
|
|
101
94
|
* Access a control by its ID. If you attempt to access an internal control instead of the stable API, the method will raise an error.
|
|
102
|
-
*
|
|
103
95
|
* @param id ID of the control without view and section prefix.
|
|
104
96
|
* @returns The requested control, if found in the view / section.
|
|
105
97
|
* @public
|
|
@@ -138,13 +130,12 @@ sap.ui.define(["sap/base/Log", "sap/fe/base/ClassSupport", "sap/fe/core/CommonUt
|
|
|
138
130
|
* <li>i18n / further data models defined in the manifest</li>
|
|
139
131
|
* <li>ui: returns a SAPUI5 JSON model containing UI information.
|
|
140
132
|
* Only the following properties are public and supported:
|
|
141
|
-
*
|
|
142
|
-
*
|
|
143
|
-
*
|
|
133
|
+
* <ul>
|
|
134
|
+
* <li>isEditable: set to true if the application is in edit mode</li>
|
|
135
|
+
* </ul>
|
|
144
136
|
* </li>
|
|
145
137
|
* </ul>.
|
|
146
138
|
* editMode is deprecated and should not be used anymore. Use isEditable instead.
|
|
147
|
-
*
|
|
148
139
|
* @param sModelName Name of the model
|
|
149
140
|
* @returns The required model
|
|
150
141
|
* @public
|
|
@@ -163,7 +154,6 @@ sap.ui.define(["sap/base/Log", "sap/fe/base/ClassSupport", "sap/fe/core/CommonUt
|
|
|
163
154
|
|
|
164
155
|
/**
|
|
165
156
|
* Add any control as a dependent control to this SAP Fiori elements page.
|
|
166
|
-
*
|
|
167
157
|
* @param oControl Control to be added as a dependent control
|
|
168
158
|
* @public
|
|
169
159
|
*/;
|
|
@@ -173,7 +163,6 @@ sap.ui.define(["sap/base/Log", "sap/fe/base/ClassSupport", "sap/fe/core/CommonUt
|
|
|
173
163
|
|
|
174
164
|
/**
|
|
175
165
|
* Remove a dependent control from this SAP Fiori elements page.
|
|
176
|
-
*
|
|
177
166
|
* @param oControl Control to be added as a dependent control
|
|
178
167
|
* @public
|
|
179
168
|
*/;
|
|
@@ -183,7 +172,6 @@ sap.ui.define(["sap/base/Log", "sap/fe/base/ClassSupport", "sap/fe/core/CommonUt
|
|
|
183
172
|
|
|
184
173
|
/**
|
|
185
174
|
* Navigate to another target.
|
|
186
|
-
*
|
|
187
175
|
* @param sTarget Name of the target route
|
|
188
176
|
* @param [oContext] OData v4 context instance
|
|
189
177
|
* @public
|
|
@@ -194,7 +182,6 @@ sap.ui.define(["sap/base/Log", "sap/fe/base/ClassSupport", "sap/fe/core/CommonUt
|
|
|
194
182
|
|
|
195
183
|
/**
|
|
196
184
|
* Load a fragment and go through the template preprocessor with the current page context.
|
|
197
|
-
*
|
|
198
185
|
* @param mSettings The settings object
|
|
199
186
|
* @param mSettings.id The ID of the fragment itself
|
|
200
187
|
* @param mSettings.name The name of the fragment to be loaded
|
|
@@ -299,7 +286,6 @@ sap.ui.define(["sap/base/Log", "sap/fe/base/ClassSupport", "sap/fe/core/CommonUt
|
|
|
299
286
|
/**
|
|
300
287
|
* Triggers an update of the app state.
|
|
301
288
|
* Should be called if the state of a control, or any other state-relevant information, was changed.
|
|
302
|
-
*
|
|
303
289
|
* @returns A promise that resolves with the new app state object.
|
|
304
290
|
* @public
|
|
305
291
|
*/;
|
|
@@ -315,7 +301,6 @@ sap.ui.define(["sap/base/Log", "sap/fe/base/ClassSupport", "sap/fe/core/CommonUt
|
|
|
315
301
|
/**
|
|
316
302
|
* Run the given function with the FPM context of the current page.
|
|
317
303
|
* This allows to initialize all the elements required by building blocks to render correctly.
|
|
318
|
-
*
|
|
319
304
|
* @param fn The Function to be executed
|
|
320
305
|
* @returns The result of the function
|
|
321
306
|
* @public
|
|
@@ -343,4 +328,4 @@ sap.ui.define(["sap/base/Log", "sap/fe/base/ClassSupport", "sap/fe/core/CommonUt
|
|
|
343
328
|
})), _class2)) || _class);
|
|
344
329
|
return ExtensionAPI;
|
|
345
330
|
}, false);
|
|
346
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJFeHRlbnNpb25BUEkiLCJkZWZpbmVVSTVDbGFzcyIsInByb3BlcnR5IiwidHlwZSIsIm9Db250cm9sbGVyIiwic0lkIiwiX2NvbnRyb2xsZXIiLCJfdmlldyIsImdldFZpZXciLCJleHRlbnNpb24iLCJlZGl0RmxvdyIsInJvdXRpbmciLCJfcm91dGluZyIsImludGVudEJhc2VkTmF2aWdhdGlvbiIsIl9wcmVmaXgiLCJnZXRFZGl0RmxvdyIsImdldFJvdXRpbmciLCJnZXRJbnRlbnRCYXNlZE5hdmlnYXRpb24iLCJieUlkIiwiaWQiLCJjb250cm9sIiwidW5kZWZpbmVkIiwiaXNBIiwicGFyZW50IiwiZ2V0UGFyZW50IiwiRXJyb3IiLCJnZXRJZCIsImdldE1vZGVsIiwic01vZGVsTmFtZSIsIm9BcHBDb21wb25lbnQiLCJDb21tb25VdGlscyIsImdldEFwcENvbXBvbmVudCIsImdldE1hbmlmZXN0RW50cnkiLCJtb2RlbHMiLCJhZGREZXBlbmRlbnQiLCJvQ29udHJvbCIsInJlbW92ZURlcGVuZGVudCIsIm5hdmlnYXRlVG9UYXJnZXQiLCJzVGFyZ2V0Iiwib0NvbnRleHQiLCJsb2FkRnJhZ21lbnQiLCJtU2V0dGluZ3MiLCJvVGVtcGxhdGVDb21wb25lbnQiLCJDb21wb25lbnQiLCJnZXRPd25lckNvbXBvbmVudEZvciIsIm9QYWdlTW9kZWwiLCJpMThuTW9kZWwiLCJvTWV0YU1vZGVsIiwiZ2V0TWV0YU1vZGVsIiwibVZpZXdEYXRhIiwiZ2V0Vmlld0RhdGEiLCJ0YXJnZXRDb250ZXh0UGF0aCIsImdldEVudGl0eVNldCIsImdldENvbnRleHRQYXRoIiwib1ZpZXdEYXRhTW9kZWwiLCJKU09OTW9kZWwiLCJvUHJlcHJvY2Vzc29yU2V0dGluZ3MiLCJiaW5kaW5nQ29udGV4dHMiLCJjb250ZXh0UGF0aCIsImNyZWF0ZUJpbmRpbmdDb250ZXh0IiwiY29udmVydGVyQ29udGV4dCIsIm5vUmVzb2x2ZSIsInZpZXdEYXRhIiwibWV0YU1vZGVsIiwiYXBwQ29tcG9uZW50IiwiY29udHJvbGxlckluc3RhbmNlIiwiY29udHJvbGxlciIsInN1YkNsYXNzIiwiZ2V0TWV0YWRhdGEiLCJnZXRDbGFzcyIsImV4dGVuZCIsImNvbnRyb2xsZXJFbGVtZW50S2V5IiwiY29udHJvbGxlckVsZW1lbnQiLCJiaW5kIiwiYm91bmRGdW5jdGlvbiIsInByb3RvdHlwZSIsImFyZ3MiLCJydW5Bc093bmVyIiwiYXBwbHkiLCJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsImdldCIsInNldCIsInYiLCJuZXdJc0EiLCJjbGFzc05hbWUiLCJvVGVtcGxhdGVQcm9taXNlIiwidGVtcGxhdGVDb250cm9sRnJhZ21lbnQiLCJuYW1lIiwiaXNYTUwiLCJjb250YWluaW5nVmlldyIsIm9GcmFnbWVudCIsImluaXRpYWxCaW5kaW5nQ29udGV4dCIsInNldEJpbmRpbmdDb250ZXh0Iiwib0Vycm9yIiwiTG9nIiwiZXJyb3IiLCJ1cGRhdGVBcHBTdGF0ZSIsInZpZXciLCJhcHBTdGF0ZUluZm8iLCJnZXRBcHBTdGF0ZUhhbmRsZXIiLCJjcmVhdGVBcHBTdGF0ZSIsInZpZXdJZCIsImFwcFN0YXRlRGF0YSIsInJ1bldpdGhGUE1Db250ZXh0IiwiZm4iLCJ0ZW1wbGF0ZUNvbXBvbmVudCIsIkJhc2VPYmplY3QiXSwic291cmNlUm9vdCI6Ii4iLCJzb3VyY2VzIjpbIkV4dGVuc2lvbkFQSS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgTG9nIGZyb20gXCJzYXAvYmFzZS9Mb2dcIjtcbmltcG9ydCB0eXBlIHsgRW5oYW5jZVdpdGhVSTUgfSBmcm9tIFwic2FwL2ZlL2Jhc2UvQ2xhc3NTdXBwb3J0XCI7XG5pbXBvcnQgeyBkZWZpbmVVSTVDbGFzcywgcHJvcGVydHkgfSBmcm9tIFwic2FwL2ZlL2Jhc2UvQ2xhc3NTdXBwb3J0XCI7XG5pbXBvcnQgdHlwZSB7IEZFVmlldyB9IGZyb20gXCJzYXAvZmUvY29yZS9CYXNlQ29udHJvbGxlclwiO1xuaW1wb3J0IENvbW1vblV0aWxzIGZyb20gXCJzYXAvZmUvY29yZS9Db21tb25VdGlsc1wiO1xuaW1wb3J0IHR5cGUgUGFnZUNvbnRyb2xsZXIgZnJvbSBcInNhcC9mZS9jb3JlL1BhZ2VDb250cm9sbGVyXCI7XG5pbXBvcnQgdHlwZSBUZW1wbGF0ZUNvbXBvbmVudCBmcm9tIFwic2FwL2ZlL2NvcmUvVGVtcGxhdGVDb21wb25lbnRcIjtcbmltcG9ydCB0eXBlIEVkaXRGbG93IGZyb20gXCJzYXAvZmUvY29yZS9jb250cm9sbGVyZXh0ZW5zaW9ucy9FZGl0Rmxvd1wiO1xuaW1wb3J0IHR5cGUgSW50ZW50QmFzZWROYXZpZ2F0aW9uIGZyb20gXCJzYXAvZmUvY29yZS9jb250cm9sbGVyZXh0ZW5zaW9ucy9JbnRlbnRCYXNlZE5hdmlnYXRpb25cIjtcbmltcG9ydCB0eXBlIEludGVybmFsUm91dGluZyBmcm9tIFwic2FwL2ZlL2NvcmUvY29udHJvbGxlcmV4dGVuc2lvbnMvSW50ZXJuYWxSb3V0aW5nXCI7XG5pbXBvcnQgdHlwZSBSb3V0aW5nIGZyb20gXCJzYXAvZmUvY29yZS9jb250cm9sbGVyZXh0ZW5zaW9ucy9Sb3V0aW5nXCI7XG5pbXBvcnQgdHlwZSBNYWNyb0FQSSBmcm9tIFwic2FwL2ZlL21hY3Jvcy9NYWNyb0FQSVwiO1xuaW1wb3J0IHR5cGUgRm9ybUFQSSBmcm9tIFwic2FwL2ZlL21hY3Jvcy9mb3JtL0Zvcm1BUElcIjtcbmltcG9ydCBCYXNlT2JqZWN0IGZyb20gXCJzYXAvdWkvYmFzZS9PYmplY3RcIjtcbmltcG9ydCBDb21wb25lbnQgZnJvbSBcInNhcC91aS9jb3JlL0NvbXBvbmVudFwiO1xuaW1wb3J0IHR5cGUgQ29udHJvbCBmcm9tIFwic2FwL3VpL2NvcmUvQ29udHJvbFwiO1xuaW1wb3J0IHR5cGUgVUk1RWxlbWVudCBmcm9tIFwic2FwL3VpL2NvcmUvRWxlbWVudFwiO1xuaW1wb3J0IHR5cGUgQ29udGV4dCBmcm9tIFwic2FwL3VpL21vZGVsL0NvbnRleHRcIjtcbmltcG9ydCB0eXBlIE1vZGVsIGZyb20gXCJzYXAvdWkvbW9kZWwvTW9kZWxcIjtcbmltcG9ydCBKU09OTW9kZWwgZnJvbSBcInNhcC91aS9tb2RlbC9qc29uL0pTT05Nb2RlbFwiO1xuaW1wb3J0IHR5cGUgT0RhdGFWNENvbnRleHQgZnJvbSBcInNhcC91aS9tb2RlbC9vZGF0YS92NC9Db250ZXh0XCI7XG5pbXBvcnQgdHlwZSB7IFRTRnVuY3Rpb24gfSBmcm9tIFwiLi4vLi4vLi4vLi4vLi4vLi4vdHlwZXMvZXh0ZW5zaW9uX3R5cGVzXCI7XG5cbi8qKlxuICogQ29tbW9uIEV4dGVuc2lvbiBBUEkgZm9yIGFsbCBwYWdlcyBvZiBTQVAgRmlvcmkgZWxlbWVudHMgZm9yIE9EYXRhIFY0LlxuICpcbiAqIFRvIGNvcnJlY3RseSBpbnRlZ3JhdGUgeW91ciBhcHAgZXh0ZW5zaW9uIGNvZGluZyB3aXRoIFNBUCBGaW9yaSBlbGVtZW50cywgdXNlIG9ubHkgdGhlIGV4dGVuc2lvbkFQSSBvZiBTQVAgRmlvcmkgZWxlbWVudHMuIERvbid0IGFjY2VzcyBvciBtYW5pcHVsYXRlIGNvbnRyb2xzLCBwcm9wZXJ0aWVzLCBtb2RlbHMsIG9yIG90aGVyIGludGVybmFsIG9iamVjdHMgY3JlYXRlZCBieSB0aGUgU0FQIEZpb3JpIGVsZW1lbnRzIGZyYW1ld29yay5cbiAqXG4gKiBAcHVibGljXG4gKiBAaGlkZWNvbnN0cnVjdG9yXG4gKiBAc2luY2UgMS43OS4wXG4gKi9cbkBkZWZpbmVVSTVDbGFzcyhcInNhcC5mZS5jb3JlLkV4dGVuc2lvbkFQSVwiKVxuY2xhc3MgRXh0ZW5zaW9uQVBJIGV4dGVuZHMgQmFzZU9iamVjdCB7XG5cdC8qKlxuXHQgKiBBIGNvbnRyb2xsZXIgZXh0ZW5zaW9uIG9mZmVyaW5nIGhvb2tzIGludG8gdGhlIGVkaXQgZmxvdyBvZiB0aGUgYXBwbGljYXRpb24uXG5cdCAqXG5cdCAqIEBwdWJsaWNcblx0ICovXG5cdEBwcm9wZXJ0eSh7IHR5cGU6IFwic2FwLmZlLmNvcmUuY29udHJvbGxlcmV4dGVuc2lvbnMuRWRpdEZsb3dcIiB9KVxuXHRlZGl0RmxvdzogRWRpdEZsb3c7XG5cblx0LyoqXG5cdCAqIEEgY29udHJvbGxlciBleHRlbnNpb24gb2ZmZXJpbmcgaG9va3MgaW50byB0aGUgcm91dGluZyBmbG93IG9mIHRoZSBhcHBsaWNhdGlvbi5cblx0ICpcblx0ICogQHB1YmxpY1xuXHQgKi9cblx0QHByb3BlcnR5KHsgdHlwZTogXCJzYXAuZmUuY29yZS5jb250cm9sbGVyZXh0ZW5zaW9ucy5Sb3V0aW5nXCIgfSlcblx0cm91dGluZzogUm91dGluZztcblxuXHQvKipcblx0ICogRXh0ZW5zaW9uQVBJIGZvciBpbnRlbnQtYmFzZWQgbmF2aWdhdGlvblxuXHQgKlxuXHQgKiBAcHVibGljXG5cdCAqL1xuXHRAcHJvcGVydHkoeyB0eXBlOiBcInNhcC5mZS5jb3JlLmNvbnRyb2xsZXJleHRlbnNpb25zLkludGVudEJhc2VkTmF2aWdhdGlvblwiIH0pXG5cdGludGVudEJhc2VkTmF2aWdhdGlvbjogSW50ZW50QmFzZWROYXZpZ2F0aW9uO1xuXG5cdHByb3RlY3RlZCBfY29udHJvbGxlcjogUGFnZUNvbnRyb2xsZXI7XG5cblx0cHJvdGVjdGVkIF92aWV3OiBGRVZpZXc7XG5cblx0cHJpdmF0ZSBfcm91dGluZzogSW50ZXJuYWxSb3V0aW5nO1xuXG5cdHByaXZhdGUgX3ByZWZpeD86IHN0cmluZztcblxuXHRwcml2YXRlIGV4dGVuc2lvbjogUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG5cblx0Y29uc3RydWN0b3Iob0NvbnRyb2xsZXI6IFBhZ2VDb250cm9sbGVyLCBzSWQ/OiBzdHJpbmcpIHtcblx0XHRzdXBlcigpO1xuXHRcdHRoaXMuX2NvbnRyb2xsZXIgPSBvQ29udHJvbGxlcjtcblx0XHR0aGlzLl92aWV3ID0gb0NvbnRyb2xsZXIuZ2V0VmlldygpO1xuXHRcdHRoaXMuZXh0ZW5zaW9uID0gdGhpcy5fY29udHJvbGxlci5leHRlbnNpb247XG5cdFx0dGhpcy5lZGl0RmxvdyA9IHRoaXMuX2NvbnRyb2xsZXIuZWRpdEZsb3c7XG5cdFx0dGhpcy5yb3V0aW5nID0gdGhpcy5fY29udHJvbGxlci5yb3V0aW5nO1xuXHRcdHRoaXMuX3JvdXRpbmcgPSB0aGlzLl9jb250cm9sbGVyLl9yb3V0aW5nO1xuXHRcdHRoaXMuaW50ZW50QmFzZWROYXZpZ2F0aW9uID0gdGhpcy5fY29udHJvbGxlci5pbnRlbnRCYXNlZE5hdmlnYXRpb247XG5cdFx0dGhpcy5fcHJlZml4ID0gc0lkO1xuXHR9XG5cblx0LyoqXG5cdCAqIFJldHJpZXZlcyB0aGUgZWRpdEZsb3cgY29udHJvbGxlciBleHRlbnNpb24gZm9yIHRoaXMgcGFnZS5cblx0ICpcblx0ICogQHB1YmxpY1xuXHQgKiBAcmV0dXJucyBUaGUgZWRpdEZsb3cgY29udHJvbGxlciBleHRlbnNpb25cblx0ICovXG5cdGdldEVkaXRGbG93KCk6IEVkaXRGbG93IHtcblx0XHRyZXR1cm4gdGhpcy5lZGl0Rmxvdztcblx0fVxuXG5cdC8qKlxuXHQgKiBSZXRyaWV2ZXMgdGhlIHJvdXRpbmcgY29udHJvbGxlciBleHRlbnNpb24gZm9yIHRoaXMgcGFnZS5cblx0ICpcblx0ICogQHB1YmxpY1xuXHQgKiBAcmV0dXJucyBUaGUgcm91dGluZyBjb250cm9sbGVyIGV4dGVuc2lvblxuXHQgKi9cblx0Z2V0Um91dGluZygpOiBSb3V0aW5nIHtcblx0XHRyZXR1cm4gdGhpcy5yb3V0aW5nO1xuXHR9XG5cblx0LyoqXG5cdCAqIFJldHJpZXZlcyB0aGUgaW50ZW50QmFzZWROYXZpZ2F0aW9uIGNvbnRyb2xsZXIgZXh0ZW5zaW9uIGZvciB0aGlzIHBhZ2UuXG5cdCAqXG5cdCAqIEBwdWJsaWNcblx0ICogQHJldHVybnMgVGhlIGludGVudEJhc2VkTmF2aWdhdGlvbiBjb250cm9sbGVyIGV4dGVuc2lvblxuXHQgKi9cblx0Z2V0SW50ZW50QmFzZWROYXZpZ2F0aW9uKCk6IEludGVudEJhc2VkTmF2aWdhdGlvbiB7XG5cdFx0cmV0dXJuIHRoaXMuaW50ZW50QmFzZWROYXZpZ2F0aW9uO1xuXHR9XG5cblx0LyoqXG5cdCAqIEFjY2VzcyBhIGNvbnRyb2wgYnkgaXRzIElELiBJZiB5b3UgYXR0ZW1wdCB0byBhY2Nlc3MgYW4gaW50ZXJuYWwgY29udHJvbCBpbnN0ZWFkIG9mIHRoZSBzdGFibGUgQVBJLCB0aGUgbWV0aG9kIHdpbGwgcmFpc2UgYW4gZXJyb3IuXG5cdCAqXG5cdCAqIEBwYXJhbSBpZCBJRCBvZiB0aGUgY29udHJvbCB3aXRob3V0IHZpZXcgYW5kIHNlY3Rpb24gcHJlZml4LlxuXHQgKiBAcmV0dXJucyBUaGUgcmVxdWVzdGVkIGNvbnRyb2wsIGlmIGZvdW5kIGluIHRoZSB2aWV3IC8gc2VjdGlvbi5cblx0ICogQHB1YmxpY1xuXHQgKi9cblx0YnlJZChpZDogc3RyaW5nKTogVUk1RWxlbWVudCB8IHVuZGVmaW5lZCB7XG5cdFx0bGV0IGNvbnRyb2wgPSB0aGlzLl92aWV3LmJ5SWQoaWQpO1xuXG5cdFx0aWYgKCFjb250cm9sICYmIHRoaXMuX3ByZWZpeCkge1xuXHRcdFx0Ly8gZ2l2ZSBpdCBhIHRyeSB3aXRoIHRoZSBwcmVmaXhcblx0XHRcdGNvbnRyb2wgPSB0aGlzLl92aWV3LmJ5SWQoYCR7dGhpcy5fcHJlZml4fS0tJHtpZH1gKTtcblx0XHR9XG5cblx0XHRpZiAoIWNvbnRyb2wpIHtcblx0XHRcdHJldHVybiB1bmRlZmluZWQ7XG5cdFx0fVxuXG5cdFx0aWYgKCFjb250cm9sLmlzQTxNYWNyb0FQST4oXCJzYXAuZmUubWFjcm9zLk1hY3JvQVBJXCIpKSB7XG5cdFx0XHQvLyBjaGVjayBpZiBhcHAgdHJpZWQgdG8gYWNjZXNzIGFuIGludGVybmFsIGNvbnRyb2wgd3JhcHBlZCBieSBhIG1hY3JvIEFQSVxuXHRcdFx0bGV0IHBhcmVudCA9IGNvbnRyb2wuZ2V0UGFyZW50KCk7XG5cblx0XHRcdHdoaWxlIChwYXJlbnQpIHtcblx0XHRcdFx0aWYgKHBhcmVudC5pc0E8Rm9ybUFQST4oXCJzYXAuZmUubWFjcm9zLmZvcm0uRm9ybUFQSVwiKSkge1xuXHRcdFx0XHRcdC8vIHdlIHJlYWNoZWQgdGhlIGZvcm1BUEkgYnV0IG5vIGZpZWxkQVBJIC0gdGhlIGFwcCB0cmllcyB0byBhY2Nlc3MgYW55IGN1c3RvbSBjb250cm9sIHdoaWNoIGlzIGZpbmVcblx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0fVxuXG5cdFx0XHRcdGlmIChwYXJlbnQuaXNBPE1hY3JvQVBJPihcInNhcC5mZS5tYWNyb3MuTWFjcm9BUElcIikpIHtcblx0XHRcdFx0XHR0aHJvdyBuZXcgRXJyb3IoXG5cdFx0XHRcdFx0XHRgWW91IGF0dGVtcHRlZCB0byBhY2Nlc3MgYW4gaW50ZXJuYWwgY29udHJvbC4gVGhpcyBpcyByaXNreSBhbmQgbWlnaHQgY2hhbmdlIGxhdGVyLiBJbnN0ZWFkIGFjY2VzcyBpdHMgc3RhYmxlIEFQSSBieSB1c2luZyBJRCAke3BhcmVudC5nZXRJZCgpfWBcblx0XHRcdFx0XHQpO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0cGFyZW50ID0gcGFyZW50LmdldFBhcmVudCgpO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdHJldHVybiBjb250cm9sO1xuXHR9XG5cblx0LyoqXG5cdCAqIEdldCBhY2Nlc3MgdG8gbW9kZWxzIG1hbmFnZWQgYnkgU0FQIEZpb3JpIGVsZW1lbnRzLjxicj5cblx0ICogVGhlIGZvbGxvd2luZyBtb2RlbHMgY2FuIGJlIGFjY2Vzc2VkOlxuXHQgKiA8dWw+XG5cdCAqIDxsaT51bmRlZmluZWQ6IHRoZSB1bmRlZmluZWQgbW9kZWwgcmV0dXJucyB0aGUgU0FQVUk1IE9EYXRhIFY0IG1vZGVsIGJvdW5kIHRvIHRoaXMgcGFnZTwvbGk+XG5cdCAqIDxsaT5pMThuIC8gZnVydGhlciBkYXRhIG1vZGVscyBkZWZpbmVkIGluIHRoZSBtYW5pZmVzdDwvbGk+XG5cdCAqIDxsaT51aTogcmV0dXJucyBhIFNBUFVJNSBKU09OIG1vZGVsIGNvbnRhaW5pbmcgVUkgaW5mb3JtYXRpb24uXG5cdCAqIE9ubHkgdGhlIGZvbGxvd2luZyBwcm9wZXJ0aWVzIGFyZSBwdWJsaWMgYW5kIHN1cHBvcnRlZDpcblx0ICogXHQ8dWw+XG5cdCAqICAgICA8bGk+aXNFZGl0YWJsZTogc2V0IHRvIHRydWUgaWYgdGhlIGFwcGxpY2F0aW9uIGlzIGluIGVkaXQgbW9kZTwvbGk+XG5cdCAqICA8L3VsPlxuXHQgKiA8L2xpPlxuXHQgKiA8L3VsPi5cblx0ICogZWRpdE1vZGUgaXMgZGVwcmVjYXRlZCBhbmQgc2hvdWxkIG5vdCBiZSB1c2VkIGFueW1vcmUuIFVzZSBpc0VkaXRhYmxlIGluc3RlYWQuXG5cdCAqXG5cdCAqIEBwYXJhbSBzTW9kZWxOYW1lIE5hbWUgb2YgdGhlIG1vZGVsXG5cdCAqIEByZXR1cm5zIFRoZSByZXF1aXJlZCBtb2RlbFxuXHQgKiBAcHVibGljXG5cdCAqL1xuXHRnZXRNb2RlbChzTW9kZWxOYW1lPzogc3RyaW5nKTogTW9kZWwgfCB1bmRlZmluZWQge1xuXHRcdGxldCBvQXBwQ29tcG9uZW50O1xuXG5cdFx0aWYgKHNNb2RlbE5hbWUgJiYgc01vZGVsTmFtZSAhPT0gXCJ1aVwiKSB7XG5cdFx0XHRvQXBwQ29tcG9uZW50ID0gQ29tbW9uVXRpbHMuZ2V0QXBwQ29tcG9uZW50KHRoaXMuX3ZpZXcpO1xuXHRcdFx0aWYgKCFvQXBwQ29tcG9uZW50LmdldE1hbmlmZXN0RW50cnkoXCJzYXAudWk1XCIpLm1vZGVsc1tzTW9kZWxOYW1lXSkge1xuXHRcdFx0XHQvLyBkb24ndCBhbGxvdyBhY2Nlc3MgdG8gb3VyIGludGVybmFsIG1vZGVsc1xuXHRcdFx0XHRyZXR1cm4gdW5kZWZpbmVkO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdHJldHVybiB0aGlzLl92aWV3LmdldE1vZGVsKHNNb2RlbE5hbWUpO1xuXHR9XG5cblx0LyoqXG5cdCAqIEFkZCBhbnkgY29udHJvbCBhcyBhIGRlcGVuZGVudCBjb250cm9sIHRvIHRoaXMgU0FQIEZpb3JpIGVsZW1lbnRzIHBhZ2UuXG5cdCAqXG5cdCAqIEBwYXJhbSBvQ29udHJvbCBDb250cm9sIHRvIGJlIGFkZGVkIGFzIGEgZGVwZW5kZW50IGNvbnRyb2xcblx0ICogQHB1YmxpY1xuXHQgKi9cblx0YWRkRGVwZW5kZW50KG9Db250cm9sOiBDb250cm9sKTogdm9pZCB7XG5cdFx0dGhpcy5fdmlldy5hZGREZXBlbmRlbnQob0NvbnRyb2wpO1xuXHR9XG5cblx0LyoqXG5cdCAqIFJlbW92ZSBhIGRlcGVuZGVudCBjb250cm9sIGZyb20gdGhpcyBTQVAgRmlvcmkgZWxlbWVudHMgcGFnZS5cblx0ICpcblx0ICogQHBhcmFtIG9Db250cm9sIENvbnRyb2wgdG8gYmUgYWRkZWQgYXMgYSBkZXBlbmRlbnQgY29udHJvbFxuXHQgKiBAcHVibGljXG5cdCAqL1xuXHRyZW1vdmVEZXBlbmRlbnQob0NvbnRyb2w6IENvbnRyb2wpOiB2b2lkIHtcblx0XHR0aGlzLl92aWV3LnJlbW92ZURlcGVuZGVudChvQ29udHJvbCk7XG5cdH1cblxuXHQvKipcblx0ICogTmF2aWdhdGUgdG8gYW5vdGhlciB0YXJnZXQuXG5cdCAqXG5cdCAqIEBwYXJhbSBzVGFyZ2V0IE5hbWUgb2YgdGhlIHRhcmdldCByb3V0ZVxuXHQgKiBAcGFyYW0gW29Db250ZXh0XSBPRGF0YSB2NCBjb250ZXh0IGluc3RhbmNlXG5cdCAqIEBwdWJsaWNcblx0ICovXG5cdG5hdmlnYXRlVG9UYXJnZXQoc1RhcmdldDogc3RyaW5nLCBvQ29udGV4dDogT0RhdGFWNENvbnRleHQpOiB2b2lkIHtcblx0XHR0aGlzLl9jb250cm9sbGVyLl9yb3V0aW5nLm5hdmlnYXRlVG9UYXJnZXQob0NvbnRleHQsIHNUYXJnZXQpO1xuXHR9XG5cblx0LyoqXG5cdCAqIExvYWQgYSBmcmFnbWVudCBhbmQgZ28gdGhyb3VnaCB0aGUgdGVtcGxhdGUgcHJlcHJvY2Vzc29yIHdpdGggdGhlIGN1cnJlbnQgcGFnZSBjb250ZXh0LlxuXHQgKlxuXHQgKiBAcGFyYW0gbVNldHRpbmdzIFRoZSBzZXR0aW5ncyBvYmplY3Rcblx0ICogQHBhcmFtIG1TZXR0aW5ncy5pZCBUaGUgSUQgb2YgdGhlIGZyYWdtZW50IGl0c2VsZlxuXHQgKiBAcGFyYW0gbVNldHRpbmdzLm5hbWUgVGhlIG5hbWUgb2YgdGhlIGZyYWdtZW50IHRvIGJlIGxvYWRlZFxuXHQgKiBAcGFyYW0gbVNldHRpbmdzLmNvbnRyb2xsZXIgVGhlIGNvbnRyb2xsZXIgdG8gYmUgYXR0YWNoZWQgdG8gdGhlIGZyYWdtZW50XG5cdCAqIEBwYXJhbSBtU2V0dGluZ3MuY29udGV4dFBhdGggVGhlIGNvbnRleHRQYXRoIHRvIGJlIHVzZWQgZm9yIHRoZSB0ZW1wbGF0aW5nIHByb2Nlc3Ncblx0ICogQHBhcmFtIG1TZXR0aW5ncy5pbml0aWFsQmluZGluZ0NvbnRleHQgVGhlIGluaXRpYWwgYmluZGluZyBjb250ZXh0XG5cdCAqIEByZXR1cm5zIFRoZSBmcmFnbWVudCBkZWZpbml0aW9uXG5cdCAqIEBwdWJsaWNcblx0ICovXG5cdGFzeW5jIGxvYWRGcmFnbWVudChtU2V0dGluZ3M6IHtcblx0XHRpZDogc3RyaW5nO1xuXHRcdG5hbWU6IHN0cmluZztcblx0XHRjb250cm9sbGVyPzogb2JqZWN0O1xuXHRcdGNvbnRleHRQYXRoPzogc3RyaW5nO1xuXHRcdGluaXRpYWxCaW5kaW5nQ29udGV4dD86IENvbnRleHQ7XG5cdH0pOiBQcm9taXNlPFVJNUVsZW1lbnQgfCBVSTVFbGVtZW50W10+IHtcblx0XHRjb25zdCBvVGVtcGxhdGVDb21wb25lbnQgPSBDb21wb25lbnQuZ2V0T3duZXJDb21wb25lbnRGb3IodGhpcy5fdmlldykgYXMgRW5oYW5jZVdpdGhVSTU8VGVtcGxhdGVDb21wb25lbnQ+O1xuXHRcdGNvbnN0IG9QYWdlTW9kZWwgPSB0aGlzLl92aWV3LmdldE1vZGVsKFwiX3BhZ2VNb2RlbFwiKTtcblx0XHRjb25zdCBpMThuTW9kZWwgPSB0aGlzLl92aWV3LmdldE1vZGVsKFwic2FwLmZlLmkxOG5cIik7XG5cdFx0Y29uc3Qgb01ldGFNb2RlbCA9IHRoaXMuZ2V0TW9kZWwoKT8uZ2V0TWV0YU1vZGVsKCk7XG5cdFx0Y29uc3QgbVZpZXdEYXRhID0gb1RlbXBsYXRlQ29tcG9uZW50LmdldFZpZXdEYXRhKCk7XG5cdFx0Y29uc3QgdGFyZ2V0Q29udGV4dFBhdGggPSBvVGVtcGxhdGVDb21wb25lbnQuZ2V0RW50aXR5U2V0KClcblx0XHRcdD8gYC8ke29UZW1wbGF0ZUNvbXBvbmVudC5nZXRFbnRpdHlTZXQoKSF9YFxuXHRcdFx0OiBvVGVtcGxhdGVDb21wb25lbnQuZ2V0Q29udGV4dFBhdGgoKSE7XG5cdFx0Y29uc3Qgb1ZpZXdEYXRhTW9kZWwgPSBuZXcgSlNPTk1vZGVsKG1WaWV3RGF0YSksXG5cdFx0XHRvUHJlcHJvY2Vzc29yU2V0dGluZ3MgPSB7XG5cdFx0XHRcdGJpbmRpbmdDb250ZXh0czoge1xuXHRcdFx0XHRcdGNvbnRleHRQYXRoOiBvTWV0YU1vZGVsPy5jcmVhdGVCaW5kaW5nQ29udGV4dChtU2V0dGluZ3MuY29udGV4dFBhdGggfHwgdGFyZ2V0Q29udGV4dFBhdGgpLFxuXHRcdFx0XHRcdGNvbnZlcnRlckNvbnRleHQ6IG9QYWdlTW9kZWwuY3JlYXRlQmluZGluZ0NvbnRleHQoXCIvXCIsIHVuZGVmaW5lZCwgeyBub1Jlc29sdmU6IHRydWUgfSksXG5cdFx0XHRcdFx0dmlld0RhdGE6IG1WaWV3RGF0YSA/IG9WaWV3RGF0YU1vZGVsLmNyZWF0ZUJpbmRpbmdDb250ZXh0KFwiL1wiKSA6IG51bGxcblx0XHRcdFx0fSxcblx0XHRcdFx0bW9kZWxzOiB7XG5cdFx0XHRcdFx0Y29udGV4dFBhdGg6IG9NZXRhTW9kZWwsXG5cdFx0XHRcdFx0Y29udmVydGVyQ29udGV4dDogb1BhZ2VNb2RlbCxcblx0XHRcdFx0XHRtZXRhTW9kZWw6IG9NZXRhTW9kZWwsXG5cdFx0XHRcdFx0dmlld0RhdGE6IG9WaWV3RGF0YU1vZGVsLFxuXHRcdFx0XHRcdFwic2FwLmZlLmkxOG5cIjogaTE4bk1vZGVsXG5cdFx0XHRcdH0sXG5cdFx0XHRcdGFwcENvbXBvbmVudDogQ29tbW9uVXRpbHMuZ2V0QXBwQ29tcG9uZW50KHRoaXMuX3ZpZXcpXG5cdFx0XHR9O1xuXG5cdFx0Ly8gV2Ugc2NvcGUgdGhlIGZyYWdtZW50IHdpdGggb3VyIEV4dGVuc2lvbkFQSS4gSWYgYSBjb250cm9sbGVyIG9iamVjdCBpcyBwYXNzZWQgd2UgbWVyZ2UgaXQgd2l0aCB0aGUgZXh0ZW5zaW9uQVBJXG5cdFx0bGV0IGNvbnRyb2xsZXJJbnN0YW5jZTogRXh0ZW5zaW9uQVBJO1xuXHRcdGlmIChtU2V0dGluZ3MuY29udHJvbGxlciAmJiAhKG1TZXR0aW5ncy5jb250cm9sbGVyIGFzIEV4dGVuc2lvbkFQSSk/LmlzQT8uKFwic2FwLmZlLmNvcmUuRXh0ZW5zaW9uQVBJXCIpKSB7XG5cdFx0XHRjb25zdCBzdWJDbGFzcyA9IChcblx0XHRcdFx0dGhpcy5nZXRNZXRhZGF0YSgpLmdldENsYXNzKCkgYXMgdW5rbm93biBhcyB7XG5cdFx0XHRcdFx0ZXh0ZW5kOiAoaWQ6IHN0cmluZywgY29udGVudDogb2JqZWN0KSA9PiB7IG5ldyAocGFnZUNvbnRyb2xsZXI6IFBhZ2VDb250cm9sbGVyKTogRXh0ZW5zaW9uQVBJIH07XG5cdFx0XHRcdH1cblx0XHRcdCkuZXh0ZW5kKG1TZXR0aW5ncy5pZCArIFwiLWNvbnRyb2xsZXJcIiwge30pO1xuXHRcdFx0Zm9yIChjb25zdCBjb250cm9sbGVyRWxlbWVudEtleSBpbiBtU2V0dGluZ3MuY29udHJvbGxlcikge1xuXHRcdFx0XHRjb25zdCBjb250cm9sbGVyRWxlbWVudCA9IG1TZXR0aW5ncy5jb250cm9sbGVyW2NvbnRyb2xsZXJFbGVtZW50S2V5IGFzIGtleW9mIHR5cGVvZiBtU2V0dGluZ3MuY29udHJvbGxlcl07XG5cdFx0XHRcdGlmICgoY29udHJvbGxlckVsZW1lbnQgYXMgRnVuY3Rpb24pPy5iaW5kKSB7XG5cdFx0XHRcdFx0Y29uc3QgYm91bmRGdW5jdGlvbiA9IChjb250cm9sbGVyRWxlbWVudCBhcyBGdW5jdGlvbikuYmluZChtU2V0dGluZ3MuY29udHJvbGxlcik7XG5cdFx0XHRcdFx0aWYgKG9UZW1wbGF0ZUNvbXBvbmVudCkge1xuXHRcdFx0XHRcdFx0c3ViQ2xhc3MucHJvdG90eXBlW2NvbnRyb2xsZXJFbGVtZW50S2V5XSA9ICguLi5hcmdzOiB1bmtub3duW10pOiB1bmtub3duID0+IHtcblx0XHRcdFx0XHRcdFx0cmV0dXJuIG9UZW1wbGF0ZUNvbXBvbmVudC5ydW5Bc093bmVyKCgpID0+IGJvdW5kRnVuY3Rpb24uYXBwbHkodGhpcywgYXJncykpO1xuXHRcdFx0XHRcdFx0fTtcblx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0c3ViQ2xhc3MucHJvdG90eXBlW2NvbnRyb2xsZXJFbGVtZW50S2V5XSA9IGJvdW5kRnVuY3Rpb247XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShzdWJDbGFzcy5wcm90b3R5cGUsIGNvbnRyb2xsZXJFbGVtZW50S2V5LCB7XG5cdFx0XHRcdFx0XHRnZXQoKSB7XG5cdFx0XHRcdFx0XHRcdHJldHVybiBtU2V0dGluZ3MuY29udHJvbGxlcj8uW2NvbnRyb2xsZXJFbGVtZW50S2V5IGFzIGtleW9mIHR5cGVvZiBtU2V0dGluZ3MuY29udHJvbGxlcl07XG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0c2V0KHY6IHVua25vd24pIHtcblx0XHRcdFx0XHRcdFx0aWYgKG1TZXR0aW5ncy5jb250cm9sbGVyKSB7XG5cdFx0XHRcdFx0XHRcdFx0KG1TZXR0aW5ncy5jb250cm9sbGVyW2NvbnRyb2xsZXJFbGVtZW50S2V5IGFzIGtleW9mIHR5cGVvZiBtU2V0dGluZ3MuY29udHJvbGxlcl0gYXMgdW5rbm93bikgPSB2O1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fSk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHRcdGNvbnRyb2xsZXJJbnN0YW5jZSA9IG5ldyBzdWJDbGFzcyh0aGlzLl9jb250cm9sbGVyKTtcblx0XHRcdGNvbnN0IG5ld0lzQSA9IGNvbnRyb2xsZXJJbnN0YW5jZS5pc0E7XG5cdFx0XHRjb250cm9sbGVySW5zdGFuY2UuaXNBID0gKGNsYXNzTmFtZTogc3RyaW5nKTogYm9vbGVhbiA9PiB7XG5cdFx0XHRcdC8vIFdlIGtlZXAgdGhlIFx0c2FwLmZlLmNvcmUuRXh0ZW5zaW9uQVBJIGFzIGEgdmFsaWQgdHlwZSBmb3IgdGhpcyBuZXcgY2xhc3Ncblx0XHRcdFx0Ly8gdGhpcyB0eXBlIGlzIGxvc3QgYXMgc29vbiBhcyB0aGUgbWVyZ2VkIGNvbnRyb2xsZXIgb2JqZWN0IGdldHMgYSBtZXRob2QgaXNBXG5cdFx0XHRcdHJldHVybiBuZXdJc0EuYmluZChjb250cm9sbGVySW5zdGFuY2UpKGNsYXNzTmFtZSkgfHwgdGhpcy5pc0EoY2xhc3NOYW1lKTtcblx0XHRcdH07XG5cdFx0fSBlbHNlIHtcblx0XHRcdGNvbnRyb2xsZXJJbnN0YW5jZSA9IChtU2V0dGluZ3MuY29udHJvbGxlciBhcyBFeHRlbnNpb25BUEkpID8/IHRoaXM7XG5cdFx0fVxuXHRcdHJldHVybiBvVGVtcGxhdGVDb21wb25lbnQucnVuQXNPd25lcihhc3luYyAoKSA9PiB7XG5cdFx0XHRjb25zdCBvVGVtcGxhdGVQcm9taXNlID0gQ29tbW9uVXRpbHMudGVtcGxhdGVDb250cm9sRnJhZ21lbnQobVNldHRpbmdzLm5hbWUsIG9QcmVwcm9jZXNzb3JTZXR0aW5ncywge1xuXHRcdFx0XHRjb250cm9sbGVyOiBjb250cm9sbGVySW5zdGFuY2UsXG5cdFx0XHRcdGlzWE1MOiBmYWxzZSxcblx0XHRcdFx0aWQ6IG1TZXR0aW5ncy5pZCxcblx0XHRcdFx0Y29udGFpbmluZ1ZpZXc6IHRoaXMuX3ZpZXdcblx0XHRcdH0pIGFzIFByb21pc2U8Q29udHJvbD47XG5cdFx0XHR0cnkge1xuXHRcdFx0XHRjb25zdCBvRnJhZ21lbnQ6IENvbnRyb2wgPSBhd2FpdCBvVGVtcGxhdGVQcm9taXNlO1xuXHRcdFx0XHRpZiAobVNldHRpbmdzLmluaXRpYWxCaW5kaW5nQ29udGV4dCAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0XHRcdFx0b0ZyYWdtZW50LnNldEJpbmRpbmdDb250ZXh0KG1TZXR0aW5ncy5pbml0aWFsQmluZGluZ0NvbnRleHQpO1xuXHRcdFx0XHR9XG5cdFx0XHRcdHRoaXMuYWRkRGVwZW5kZW50KG9GcmFnbWVudCk7XG5cdFx0XHRcdHJldHVybiBvRnJhZ21lbnQ7XG5cdFx0XHR9IGNhdGNoIChvRXJyb3IpIHtcblx0XHRcdFx0TG9nLmVycm9yKG9FcnJvciBhcyBzdHJpbmcpO1xuXHRcdFx0fVxuXHRcdH0pIGFzIFByb21pc2U8VUk1RWxlbWVudCB8IFVJNUVsZW1lbnRbXT47XG5cdH1cblxuXHQvKipcblx0ICogVHJpZ2dlcnMgYW4gdXBkYXRlIG9mIHRoZSBhcHAgc3RhdGUuXG5cdCAqIFNob3VsZCBiZSBjYWxsZWQgaWYgdGhlIHN0YXRlIG9mIGEgY29udHJvbCwgb3IgYW55IG90aGVyIHN0YXRlLXJlbGV2YW50IGluZm9ybWF0aW9uLCB3YXMgY2hhbmdlZC5cblx0ICpcblx0ICogQHJldHVybnMgQSBwcm9taXNlIHRoYXQgcmVzb2x2ZXMgd2l0aCB0aGUgbmV3IGFwcCBzdGF0ZSBvYmplY3QuXG5cdCAqIEBwdWJsaWNcblx0ICovXG5cdGFzeW5jIHVwZGF0ZUFwcFN0YXRlKCk6IFByb21pc2U8dm9pZCB8IHsgYXBwU3RhdGU6IG9iamVjdCB8IHVuZGVmaW5lZCB9PiB7XG5cdFx0Y29uc3QgdmlldyA9IHRoaXMuX2NvbnRyb2xsZXIuZ2V0VmlldygpO1xuXHRcdGNvbnN0IGFwcENvbXBvbmVudCA9IHRoaXMuX2NvbnRyb2xsZXIuZ2V0QXBwQ29tcG9uZW50KCk7XG5cdFx0Y29uc3QgYXBwU3RhdGVJbmZvID0gYXdhaXQgYXBwQ29tcG9uZW50LmdldEFwcFN0YXRlSGFuZGxlcigpLmNyZWF0ZUFwcFN0YXRlKHtcblx0XHRcdHZpZXdJZDogdmlldy5nZXRJZCgpXG5cdFx0fSk7XG5cdFx0cmV0dXJuIGFwcFN0YXRlSW5mbz8uYXBwU3RhdGVEYXRhO1xuXHR9XG5cblx0LyoqXG5cdCAqIFJ1biB0aGUgZ2l2ZW4gZnVuY3Rpb24gd2l0aCB0aGUgRlBNIGNvbnRleHQgb2YgdGhlIGN1cnJlbnQgcGFnZS5cblx0ICogVGhpcyBhbGxvd3MgdG8gaW5pdGlhbGl6ZSBhbGwgdGhlIGVsZW1lbnRzIHJlcXVpcmVkIGJ5IGJ1aWxkaW5nIGJsb2NrcyB0byByZW5kZXIgY29ycmVjdGx5LlxuXHQgKlxuXHQgKiBAcGFyYW0gZm4gVGhlIEZ1bmN0aW9uIHRvIGJlIGV4ZWN1dGVkXG5cdCAqIEByZXR1cm5zIFRoZSByZXN1bHQgb2YgdGhlIGZ1bmN0aW9uXG5cdCAqIEBwdWJsaWNcblx0ICovXG5cdHJ1bldpdGhGUE1Db250ZXh0KGZuOiBGdW5jdGlvbik6IHVua25vd24ge1xuXHRcdGNvbnN0IHRlbXBsYXRlQ29tcG9uZW50ID0gQ29tcG9uZW50LmdldE93bmVyQ29tcG9uZW50Rm9yKHRoaXMuX3ZpZXcpIGFzIEVuaGFuY2VXaXRoVUk1PFRlbXBsYXRlQ29tcG9uZW50Pjtcblx0XHRyZXR1cm4gdGVtcGxhdGVDb21wb25lbnQucnVuQXNPd25lcihmbiBhcyBUU0Z1bmN0aW9uKTtcblx0fVxufVxuXG5leHBvcnQgZGVmYXVsdCBFeHRlbnNpb25BUEk7XG4iXSwibWFwcGluZ3MiOiI7QUFBQTtBQUFBO0FBQUE7Ozs7Ozs7Ozs7Ozs7RUF1QkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0VBUkEsSUFVTUEsWUFBWSxXQURqQkMsY0FBYyxDQUFDLDBCQUEwQixDQUFDLFVBT3pDQyxRQUFRLENBQUM7SUFBRUMsSUFBSSxFQUFFO0VBQTRDLENBQUMsQ0FBQyxVQVEvREQsUUFBUSxDQUFDO0lBQUVDLElBQUksRUFBRTtFQUEyQyxDQUFDLENBQUMsVUFROURELFFBQVEsQ0FBQztJQUFFQyxJQUFJLEVBQUU7RUFBeUQsQ0FBQyxDQUFDO0lBQUE7SUFyQjdFO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7O0lBSUM7QUFDRDtBQUNBO0FBQ0E7QUFDQTs7SUFJQztBQUNEO0FBQ0E7QUFDQTtBQUNBOztJQWNDLHNCQUFZQyxXQUEyQixFQUFFQyxHQUFZLEVBQUU7TUFBQTtNQUN0RCw4QkFBTztNQUFDO01BQUE7TUFB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
|
|
331
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJFeHRlbnNpb25BUEkiLCJfZGVjIiwiZGVmaW5lVUk1Q2xhc3MiLCJfZGVjMiIsInByb3BlcnR5IiwidHlwZSIsIl9kZWMzIiwiX2RlYzQiLCJfY2xhc3MiLCJfY2xhc3MyIiwiX0Jhc2VPYmplY3QiLCJfaW5oZXJpdHNMb29zZSIsIm9Db250cm9sbGVyIiwic0lkIiwiX3RoaXMiLCJjYWxsIiwiX2luaXRpYWxpemVyRGVmaW5lUHJvcGVydHkiLCJfZGVzY3JpcHRvciIsIl9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQiLCJfZGVzY3JpcHRvcjIiLCJfZGVzY3JpcHRvcjMiLCJfY29udHJvbGxlciIsIl92aWV3IiwiZ2V0VmlldyIsImV4dGVuc2lvbiIsImVkaXRGbG93Iiwicm91dGluZyIsIl9yb3V0aW5nIiwiaW50ZW50QmFzZWROYXZpZ2F0aW9uIiwiX3ByZWZpeCIsIl9wcm90byIsInByb3RvdHlwZSIsImdldEVkaXRGbG93IiwiZ2V0Um91dGluZyIsImdldEludGVudEJhc2VkTmF2aWdhdGlvbiIsImJ5SWQiLCJpZCIsImNvbnRyb2wiLCJ1bmRlZmluZWQiLCJpc0EiLCJwYXJlbnQiLCJnZXRQYXJlbnQiLCJFcnJvciIsImdldElkIiwiZ2V0TW9kZWwiLCJzTW9kZWxOYW1lIiwib0FwcENvbXBvbmVudCIsIkNvbW1vblV0aWxzIiwiZ2V0QXBwQ29tcG9uZW50IiwiZ2V0TWFuaWZlc3RFbnRyeSIsIm1vZGVscyIsImFkZERlcGVuZGVudCIsIm9Db250cm9sIiwicmVtb3ZlRGVwZW5kZW50IiwibmF2aWdhdGVUb1RhcmdldCIsInNUYXJnZXQiLCJvQ29udGV4dCIsImxvYWRGcmFnbWVudCIsIm1TZXR0aW5ncyIsIl90aGlzJGdldE1vZGVsIiwiX21TZXR0aW5ncyRjb250cm9sbGVyIiwiX21TZXR0aW5ncyRjb250cm9sbGVyMiIsIl90aGlzMiIsIm9UZW1wbGF0ZUNvbXBvbmVudCIsIkNvbXBvbmVudCIsImdldE93bmVyQ29tcG9uZW50Rm9yIiwib1BhZ2VNb2RlbCIsImkxOG5Nb2RlbCIsIm9NZXRhTW9kZWwiLCJnZXRNZXRhTW9kZWwiLCJtVmlld0RhdGEiLCJnZXRWaWV3RGF0YSIsInRhcmdldENvbnRleHRQYXRoIiwiZ2V0RW50aXR5U2V0IiwiZ2V0Q29udGV4dFBhdGgiLCJvVmlld0RhdGFNb2RlbCIsIkpTT05Nb2RlbCIsIm9QcmVwcm9jZXNzb3JTZXR0aW5ncyIsImJpbmRpbmdDb250ZXh0cyIsImNvbnRleHRQYXRoIiwiY3JlYXRlQmluZGluZ0NvbnRleHQiLCJjb252ZXJ0ZXJDb250ZXh0Iiwibm9SZXNvbHZlIiwidmlld0RhdGEiLCJtZXRhTW9kZWwiLCJhcHBDb21wb25lbnQiLCJjb250cm9sbGVySW5zdGFuY2UiLCJjb250cm9sbGVyIiwic3ViQ2xhc3MiLCJnZXRNZXRhZGF0YSIsImdldENsYXNzIiwiZXh0ZW5kIiwiY29udHJvbGxlckVsZW1lbnRLZXkiLCJjb250cm9sbGVyRWxlbWVudCIsImJpbmQiLCJib3VuZEZ1bmN0aW9uIiwiX2xlbiIsImFyZ3VtZW50cyIsImxlbmd0aCIsImFyZ3MiLCJBcnJheSIsIl9rZXkiLCJydW5Bc093bmVyIiwiYXBwbHkiLCJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsImdldCIsIl9tU2V0dGluZ3MkY29udHJvbGxlcjMiLCJzZXQiLCJ2IiwibmV3SXNBIiwiY2xhc3NOYW1lIiwib1RlbXBsYXRlUHJvbWlzZSIsInRlbXBsYXRlQ29udHJvbEZyYWdtZW50IiwibmFtZSIsImlzWE1MIiwiY29udGFpbmluZ1ZpZXciLCJvRnJhZ21lbnQiLCJpbml0aWFsQmluZGluZ0NvbnRleHQiLCJzZXRCaW5kaW5nQ29udGV4dCIsIm9FcnJvciIsIkxvZyIsImVycm9yIiwidXBkYXRlQXBwU3RhdGUiLCJ2aWV3IiwiYXBwU3RhdGVJbmZvIiwiZ2V0QXBwU3RhdGVIYW5kbGVyIiwiY3JlYXRlQXBwU3RhdGUiLCJ2aWV3SWQiLCJhcHBTdGF0ZURhdGEiLCJydW5XaXRoRlBNQ29udGV4dCIsImZuIiwidGVtcGxhdGVDb21wb25lbnQiLCJCYXNlT2JqZWN0IiwiX2FwcGx5RGVjb3JhdGVkRGVzY3JpcHRvciIsImNvbmZpZ3VyYWJsZSIsImVudW1lcmFibGUiLCJ3cml0YWJsZSIsImluaXRpYWxpemVyIl0sInNvdXJjZVJvb3QiOiIuIiwic291cmNlcyI6WyJFeHRlbnNpb25BUEkudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IExvZyBmcm9tIFwic2FwL2Jhc2UvTG9nXCI7XG5pbXBvcnQgdHlwZSB7IEVuaGFuY2VXaXRoVUk1IH0gZnJvbSBcInNhcC9mZS9iYXNlL0NsYXNzU3VwcG9ydFwiO1xuaW1wb3J0IHsgZGVmaW5lVUk1Q2xhc3MsIHByb3BlcnR5IH0gZnJvbSBcInNhcC9mZS9iYXNlL0NsYXNzU3VwcG9ydFwiO1xuaW1wb3J0IHR5cGUgeyBGRVZpZXcgfSBmcm9tIFwic2FwL2ZlL2NvcmUvQmFzZUNvbnRyb2xsZXJcIjtcbmltcG9ydCBDb21tb25VdGlscyBmcm9tIFwic2FwL2ZlL2NvcmUvQ29tbW9uVXRpbHNcIjtcbmltcG9ydCB0eXBlIFBhZ2VDb250cm9sbGVyIGZyb20gXCJzYXAvZmUvY29yZS9QYWdlQ29udHJvbGxlclwiO1xuaW1wb3J0IHR5cGUgVGVtcGxhdGVDb21wb25lbnQgZnJvbSBcInNhcC9mZS9jb3JlL1RlbXBsYXRlQ29tcG9uZW50XCI7XG5pbXBvcnQgdHlwZSBFZGl0RmxvdyBmcm9tIFwic2FwL2ZlL2NvcmUvY29udHJvbGxlcmV4dGVuc2lvbnMvRWRpdEZsb3dcIjtcbmltcG9ydCB0eXBlIEludGVudEJhc2VkTmF2aWdhdGlvbiBmcm9tIFwic2FwL2ZlL2NvcmUvY29udHJvbGxlcmV4dGVuc2lvbnMvSW50ZW50QmFzZWROYXZpZ2F0aW9uXCI7XG5pbXBvcnQgdHlwZSBJbnRlcm5hbFJvdXRpbmcgZnJvbSBcInNhcC9mZS9jb3JlL2NvbnRyb2xsZXJleHRlbnNpb25zL0ludGVybmFsUm91dGluZ1wiO1xuaW1wb3J0IHR5cGUgUm91dGluZyBmcm9tIFwic2FwL2ZlL2NvcmUvY29udHJvbGxlcmV4dGVuc2lvbnMvUm91dGluZ1wiO1xuaW1wb3J0IHR5cGUgTWFjcm9BUEkgZnJvbSBcInNhcC9mZS9tYWNyb3MvTWFjcm9BUElcIjtcbmltcG9ydCB0eXBlIEZvcm1BUEkgZnJvbSBcInNhcC9mZS9tYWNyb3MvZm9ybS9Gb3JtQVBJXCI7XG5pbXBvcnQgQmFzZU9iamVjdCBmcm9tIFwic2FwL3VpL2Jhc2UvT2JqZWN0XCI7XG5pbXBvcnQgQ29tcG9uZW50IGZyb20gXCJzYXAvdWkvY29yZS9Db21wb25lbnRcIjtcbmltcG9ydCB0eXBlIENvbnRyb2wgZnJvbSBcInNhcC91aS9jb3JlL0NvbnRyb2xcIjtcbmltcG9ydCB0eXBlIFVJNUVsZW1lbnQgZnJvbSBcInNhcC91aS9jb3JlL0VsZW1lbnRcIjtcbmltcG9ydCB0eXBlIENvbnRleHQgZnJvbSBcInNhcC91aS9tb2RlbC9Db250ZXh0XCI7XG5pbXBvcnQgdHlwZSBNb2RlbCBmcm9tIFwic2FwL3VpL21vZGVsL01vZGVsXCI7XG5pbXBvcnQgSlNPTk1vZGVsIGZyb20gXCJzYXAvdWkvbW9kZWwvanNvbi9KU09OTW9kZWxcIjtcbmltcG9ydCB0eXBlIE9EYXRhVjRDb250ZXh0IGZyb20gXCJzYXAvdWkvbW9kZWwvb2RhdGEvdjQvQ29udGV4dFwiO1xuaW1wb3J0IHR5cGUgeyBUU0Z1bmN0aW9uIH0gZnJvbSBcIi4uLy4uLy4uLy4uLy4uLy4uL3R5cGVzL2V4dGVuc2lvbl90eXBlc1wiO1xuXG4vKipcbiAqIENvbW1vbiBFeHRlbnNpb24gQVBJIGZvciBhbGwgcGFnZXMgb2YgU0FQIEZpb3JpIGVsZW1lbnRzIGZvciBPRGF0YSBWNC5cbiAqXG4gKiBUbyBjb3JyZWN0bHkgaW50ZWdyYXRlIHlvdXIgYXBwIGV4dGVuc2lvbiBjb2Rpbmcgd2l0aCBTQVAgRmlvcmkgZWxlbWVudHMsIHVzZSBvbmx5IHRoZSBleHRlbnNpb25BUEkgb2YgU0FQIEZpb3JpIGVsZW1lbnRzLiBEb24ndCBhY2Nlc3Mgb3IgbWFuaXB1bGF0ZSBjb250cm9scywgcHJvcGVydGllcywgbW9kZWxzLCBvciBvdGhlciBpbnRlcm5hbCBvYmplY3RzIGNyZWF0ZWQgYnkgdGhlIFNBUCBGaW9yaSBlbGVtZW50cyBmcmFtZXdvcmsuXG4gKiBAcHVibGljXG4gKiBAaGlkZWNvbnN0cnVjdG9yXG4gKiBAc2luY2UgMS43OS4wXG4gKi9cbkBkZWZpbmVVSTVDbGFzcyhcInNhcC5mZS5jb3JlLkV4dGVuc2lvbkFQSVwiKVxuY2xhc3MgRXh0ZW5zaW9uQVBJIGV4dGVuZHMgQmFzZU9iamVjdCB7XG5cdC8qKlxuXHQgKiBBIGNvbnRyb2xsZXIgZXh0ZW5zaW9uIG9mZmVyaW5nIGhvb2tzIGludG8gdGhlIGVkaXQgZmxvdyBvZiB0aGUgYXBwbGljYXRpb24uXG5cdCAqIEBwdWJsaWNcblx0ICovXG5cdEBwcm9wZXJ0eSh7IHR5cGU6IFwic2FwLmZlLmNvcmUuY29udHJvbGxlcmV4dGVuc2lvbnMuRWRpdEZsb3dcIiB9KVxuXHRlZGl0RmxvdzogRWRpdEZsb3c7XG5cblx0LyoqXG5cdCAqIEEgY29udHJvbGxlciBleHRlbnNpb24gb2ZmZXJpbmcgaG9va3MgaW50byB0aGUgcm91dGluZyBmbG93IG9mIHRoZSBhcHBsaWNhdGlvbi5cblx0ICogQHB1YmxpY1xuXHQgKi9cblx0QHByb3BlcnR5KHsgdHlwZTogXCJzYXAuZmUuY29yZS5jb250cm9sbGVyZXh0ZW5zaW9ucy5Sb3V0aW5nXCIgfSlcblx0cm91dGluZzogUm91dGluZztcblxuXHQvKipcblx0ICogRXh0ZW5zaW9uQVBJIGZvciBpbnRlbnQtYmFzZWQgbmF2aWdhdGlvblxuXHQgKiBAcHVibGljXG5cdCAqL1xuXHRAcHJvcGVydHkoeyB0eXBlOiBcInNhcC5mZS5jb3JlLmNvbnRyb2xsZXJleHRlbnNpb25zLkludGVudEJhc2VkTmF2aWdhdGlvblwiIH0pXG5cdGludGVudEJhc2VkTmF2aWdhdGlvbjogSW50ZW50QmFzZWROYXZpZ2F0aW9uO1xuXG5cdHB1YmxpYyBfY29udHJvbGxlcjogUGFnZUNvbnRyb2xsZXI7XG5cblx0cHJvdGVjdGVkIF92aWV3OiBGRVZpZXc7XG5cblx0cHJpdmF0ZSBfcm91dGluZzogSW50ZXJuYWxSb3V0aW5nO1xuXG5cdHByaXZhdGUgX3ByZWZpeD86IHN0cmluZztcblxuXHRwcml2YXRlIGV4dGVuc2lvbjogUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG5cblx0Y29uc3RydWN0b3Iob0NvbnRyb2xsZXI6IFBhZ2VDb250cm9sbGVyLCBzSWQ/OiBzdHJpbmcpIHtcblx0XHRzdXBlcigpO1xuXHRcdHRoaXMuX2NvbnRyb2xsZXIgPSBvQ29udHJvbGxlcjtcblx0XHR0aGlzLl92aWV3ID0gb0NvbnRyb2xsZXIuZ2V0VmlldygpO1xuXHRcdHRoaXMuZXh0ZW5zaW9uID0gdGhpcy5fY29udHJvbGxlci5leHRlbnNpb247XG5cdFx0dGhpcy5lZGl0RmxvdyA9IHRoaXMuX2NvbnRyb2xsZXIuZWRpdEZsb3c7XG5cdFx0dGhpcy5yb3V0aW5nID0gdGhpcy5fY29udHJvbGxlci5yb3V0aW5nO1xuXHRcdHRoaXMuX3JvdXRpbmcgPSB0aGlzLl9jb250cm9sbGVyLl9yb3V0aW5nO1xuXHRcdHRoaXMuaW50ZW50QmFzZWROYXZpZ2F0aW9uID0gdGhpcy5fY29udHJvbGxlci5pbnRlbnRCYXNlZE5hdmlnYXRpb247XG5cdFx0dGhpcy5fcHJlZml4ID0gc0lkO1xuXHR9XG5cblx0LyoqXG5cdCAqIFJldHJpZXZlcyB0aGUgZWRpdEZsb3cgY29udHJvbGxlciBleHRlbnNpb24gZm9yIHRoaXMgcGFnZS5cblx0ICogQHB1YmxpY1xuXHQgKiBAcmV0dXJucyBUaGUgZWRpdEZsb3cgY29udHJvbGxlciBleHRlbnNpb25cblx0ICovXG5cdGdldEVkaXRGbG93KCk6IEVkaXRGbG93IHtcblx0XHRyZXR1cm4gdGhpcy5lZGl0Rmxvdztcblx0fVxuXG5cdC8qKlxuXHQgKiBSZXRyaWV2ZXMgdGhlIHJvdXRpbmcgY29udHJvbGxlciBleHRlbnNpb24gZm9yIHRoaXMgcGFnZS5cblx0ICogQHB1YmxpY1xuXHQgKiBAcmV0dXJucyBUaGUgcm91dGluZyBjb250cm9sbGVyIGV4dGVuc2lvblxuXHQgKi9cblx0Z2V0Um91dGluZygpOiBSb3V0aW5nIHtcblx0XHRyZXR1cm4gdGhpcy5yb3V0aW5nO1xuXHR9XG5cblx0LyoqXG5cdCAqIFJldHJpZXZlcyB0aGUgaW50ZW50QmFzZWROYXZpZ2F0aW9uIGNvbnRyb2xsZXIgZXh0ZW5zaW9uIGZvciB0aGlzIHBhZ2UuXG5cdCAqIEBwdWJsaWNcblx0ICogQHJldHVybnMgVGhlIGludGVudEJhc2VkTmF2aWdhdGlvbiBjb250cm9sbGVyIGV4dGVuc2lvblxuXHQgKi9cblx0Z2V0SW50ZW50QmFzZWROYXZpZ2F0aW9uKCk6IEludGVudEJhc2VkTmF2aWdhdGlvbiB7XG5cdFx0cmV0dXJuIHRoaXMuaW50ZW50QmFzZWROYXZpZ2F0aW9uO1xuXHR9XG5cblx0LyoqXG5cdCAqIEFjY2VzcyBhIGNvbnRyb2wgYnkgaXRzIElELiBJZiB5b3UgYXR0ZW1wdCB0byBhY2Nlc3MgYW4gaW50ZXJuYWwgY29udHJvbCBpbnN0ZWFkIG9mIHRoZSBzdGFibGUgQVBJLCB0aGUgbWV0aG9kIHdpbGwgcmFpc2UgYW4gZXJyb3IuXG5cdCAqIEBwYXJhbSBpZCBJRCBvZiB0aGUgY29udHJvbCB3aXRob3V0IHZpZXcgYW5kIHNlY3Rpb24gcHJlZml4LlxuXHQgKiBAcmV0dXJucyBUaGUgcmVxdWVzdGVkIGNvbnRyb2wsIGlmIGZvdW5kIGluIHRoZSB2aWV3IC8gc2VjdGlvbi5cblx0ICogQHB1YmxpY1xuXHQgKi9cblx0YnlJZChpZDogc3RyaW5nKTogVUk1RWxlbWVudCB8IHVuZGVmaW5lZCB7XG5cdFx0bGV0IGNvbnRyb2wgPSB0aGlzLl92aWV3LmJ5SWQoaWQpO1xuXG5cdFx0aWYgKCFjb250cm9sICYmIHRoaXMuX3ByZWZpeCkge1xuXHRcdFx0Ly8gZ2l2ZSBpdCBhIHRyeSB3aXRoIHRoZSBwcmVmaXhcblx0XHRcdGNvbnRyb2wgPSB0aGlzLl92aWV3LmJ5SWQoYCR7dGhpcy5fcHJlZml4fS0tJHtpZH1gKTtcblx0XHR9XG5cblx0XHRpZiAoIWNvbnRyb2wpIHtcblx0XHRcdHJldHVybiB1bmRlZmluZWQ7XG5cdFx0fVxuXG5cdFx0aWYgKCFjb250cm9sLmlzQTxNYWNyb0FQST4oXCJzYXAuZmUubWFjcm9zLk1hY3JvQVBJXCIpKSB7XG5cdFx0XHQvLyBjaGVjayBpZiBhcHAgdHJpZWQgdG8gYWNjZXNzIGFuIGludGVybmFsIGNvbnRyb2wgd3JhcHBlZCBieSBhIG1hY3JvIEFQSVxuXHRcdFx0bGV0IHBhcmVudCA9IGNvbnRyb2wuZ2V0UGFyZW50KCk7XG5cblx0XHRcdHdoaWxlIChwYXJlbnQpIHtcblx0XHRcdFx0aWYgKHBhcmVudC5pc0E8Rm9ybUFQST4oXCJzYXAuZmUubWFjcm9zLmZvcm0uRm9ybUFQSVwiKSkge1xuXHRcdFx0XHRcdC8vIHdlIHJlYWNoZWQgdGhlIGZvcm1BUEkgYnV0IG5vIGZpZWxkQVBJIC0gdGhlIGFwcCB0cmllcyB0byBhY2Nlc3MgYW55IGN1c3RvbSBjb250cm9sIHdoaWNoIGlzIGZpbmVcblx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0fVxuXG5cdFx0XHRcdGlmIChwYXJlbnQuaXNBPE1hY3JvQVBJPihcInNhcC5mZS5tYWNyb3MuTWFjcm9BUElcIikpIHtcblx0XHRcdFx0XHR0aHJvdyBuZXcgRXJyb3IoXG5cdFx0XHRcdFx0XHRgWW91IGF0dGVtcHRlZCB0byBhY2Nlc3MgYW4gaW50ZXJuYWwgY29udHJvbC4gVGhpcyBpcyByaXNreSBhbmQgbWlnaHQgY2hhbmdlIGxhdGVyLiBJbnN0ZWFkIGFjY2VzcyBpdHMgc3RhYmxlIEFQSSBieSB1c2luZyBJRCAke3BhcmVudC5nZXRJZCgpfWBcblx0XHRcdFx0XHQpO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0cGFyZW50ID0gcGFyZW50LmdldFBhcmVudCgpO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdHJldHVybiBjb250cm9sO1xuXHR9XG5cblx0LyoqXG5cdCAqIEdldCBhY2Nlc3MgdG8gbW9kZWxzIG1hbmFnZWQgYnkgU0FQIEZpb3JpIGVsZW1lbnRzLjxicj5cblx0ICogVGhlIGZvbGxvd2luZyBtb2RlbHMgY2FuIGJlIGFjY2Vzc2VkOlxuXHQgKiA8dWw+XG5cdCAqIDxsaT51bmRlZmluZWQ6IHRoZSB1bmRlZmluZWQgbW9kZWwgcmV0dXJucyB0aGUgU0FQVUk1IE9EYXRhIFY0IG1vZGVsIGJvdW5kIHRvIHRoaXMgcGFnZTwvbGk+XG5cdCAqIDxsaT5pMThuIC8gZnVydGhlciBkYXRhIG1vZGVscyBkZWZpbmVkIGluIHRoZSBtYW5pZmVzdDwvbGk+XG5cdCAqIDxsaT51aTogcmV0dXJucyBhIFNBUFVJNSBKU09OIG1vZGVsIGNvbnRhaW5pbmcgVUkgaW5mb3JtYXRpb24uXG5cdCAqIE9ubHkgdGhlIGZvbGxvd2luZyBwcm9wZXJ0aWVzIGFyZSBwdWJsaWMgYW5kIHN1cHBvcnRlZDpcblx0ICogPHVsPlxuXHQgKiA8bGk+aXNFZGl0YWJsZTogc2V0IHRvIHRydWUgaWYgdGhlIGFwcGxpY2F0aW9uIGlzIGluIGVkaXQgbW9kZTwvbGk+XG5cdCAqIDwvdWw+XG5cdCAqIDwvbGk+XG5cdCAqIDwvdWw+LlxuXHQgKiBlZGl0TW9kZSBpcyBkZXByZWNhdGVkIGFuZCBzaG91bGQgbm90IGJlIHVzZWQgYW55bW9yZS4gVXNlIGlzRWRpdGFibGUgaW5zdGVhZC5cblx0ICogQHBhcmFtIHNNb2RlbE5hbWUgTmFtZSBvZiB0aGUgbW9kZWxcblx0ICogQHJldHVybnMgVGhlIHJlcXVpcmVkIG1vZGVsXG5cdCAqIEBwdWJsaWNcblx0ICovXG5cdGdldE1vZGVsKHNNb2RlbE5hbWU/OiBzdHJpbmcpOiBNb2RlbCB8IHVuZGVmaW5lZCB7XG5cdFx0bGV0IG9BcHBDb21wb25lbnQ7XG5cblx0XHRpZiAoc01vZGVsTmFtZSAmJiBzTW9kZWxOYW1lICE9PSBcInVpXCIpIHtcblx0XHRcdG9BcHBDb21wb25lbnQgPSBDb21tb25VdGlscy5nZXRBcHBDb21wb25lbnQodGhpcy5fdmlldyk7XG5cdFx0XHRpZiAoIW9BcHBDb21wb25lbnQuZ2V0TWFuaWZlc3RFbnRyeShcInNhcC51aTVcIikubW9kZWxzW3NNb2RlbE5hbWVdKSB7XG5cdFx0XHRcdC8vIGRvbid0IGFsbG93IGFjY2VzcyB0byBvdXIgaW50ZXJuYWwgbW9kZWxzXG5cdFx0XHRcdHJldHVybiB1bmRlZmluZWQ7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0cmV0dXJuIHRoaXMuX3ZpZXcuZ2V0TW9kZWwoc01vZGVsTmFtZSk7XG5cdH1cblxuXHQvKipcblx0ICogQWRkIGFueSBjb250cm9sIGFzIGEgZGVwZW5kZW50IGNvbnRyb2wgdG8gdGhpcyBTQVAgRmlvcmkgZWxlbWVudHMgcGFnZS5cblx0ICogQHBhcmFtIG9Db250cm9sIENvbnRyb2wgdG8gYmUgYWRkZWQgYXMgYSBkZXBlbmRlbnQgY29udHJvbFxuXHQgKiBAcHVibGljXG5cdCAqL1xuXHRhZGREZXBlbmRlbnQob0NvbnRyb2w6IENvbnRyb2wpOiB2b2lkIHtcblx0XHR0aGlzLl92aWV3LmFkZERlcGVuZGVudChvQ29udHJvbCk7XG5cdH1cblxuXHQvKipcblx0ICogUmVtb3ZlIGEgZGVwZW5kZW50IGNvbnRyb2wgZnJvbSB0aGlzIFNBUCBGaW9yaSBlbGVtZW50cyBwYWdlLlxuXHQgKiBAcGFyYW0gb0NvbnRyb2wgQ29udHJvbCB0byBiZSBhZGRlZCBhcyBhIGRlcGVuZGVudCBjb250cm9sXG5cdCAqIEBwdWJsaWNcblx0ICovXG5cdHJlbW92ZURlcGVuZGVudChvQ29udHJvbDogQ29udHJvbCk6IHZvaWQge1xuXHRcdHRoaXMuX3ZpZXcucmVtb3ZlRGVwZW5kZW50KG9Db250cm9sKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBOYXZpZ2F0ZSB0byBhbm90aGVyIHRhcmdldC5cblx0ICogQHBhcmFtIHNUYXJnZXQgTmFtZSBvZiB0aGUgdGFyZ2V0IHJvdXRlXG5cdCAqIEBwYXJhbSBbb0NvbnRleHRdIE9EYXRhIHY0IGNvbnRleHQgaW5zdGFuY2Vcblx0ICogQHB1YmxpY1xuXHQgKi9cblx0bmF2aWdhdGVUb1RhcmdldChzVGFyZ2V0OiBzdHJpbmcsIG9Db250ZXh0OiBPRGF0YVY0Q29udGV4dCk6IHZvaWQge1xuXHRcdHRoaXMuX2NvbnRyb2xsZXIuX3JvdXRpbmcubmF2aWdhdGVUb1RhcmdldChvQ29udGV4dCwgc1RhcmdldCk7XG5cdH1cblxuXHQvKipcblx0ICogTG9hZCBhIGZyYWdtZW50IGFuZCBnbyB0aHJvdWdoIHRoZSB0ZW1wbGF0ZSBwcmVwcm9jZXNzb3Igd2l0aCB0aGUgY3VycmVudCBwYWdlIGNvbnRleHQuXG5cdCAqIEBwYXJhbSBtU2V0dGluZ3MgVGhlIHNldHRpbmdzIG9iamVjdFxuXHQgKiBAcGFyYW0gbVNldHRpbmdzLmlkIFRoZSBJRCBvZiB0aGUgZnJhZ21lbnQgaXRzZWxmXG5cdCAqIEBwYXJhbSBtU2V0dGluZ3MubmFtZSBUaGUgbmFtZSBvZiB0aGUgZnJhZ21lbnQgdG8gYmUgbG9hZGVkXG5cdCAqIEBwYXJhbSBtU2V0dGluZ3MuY29udHJvbGxlciBUaGUgY29udHJvbGxlciB0byBiZSBhdHRhY2hlZCB0byB0aGUgZnJhZ21lbnRcblx0ICogQHBhcmFtIG1TZXR0aW5ncy5jb250ZXh0UGF0aCBUaGUgY29udGV4dFBhdGggdG8gYmUgdXNlZCBmb3IgdGhlIHRlbXBsYXRpbmcgcHJvY2Vzc1xuXHQgKiBAcGFyYW0gbVNldHRpbmdzLmluaXRpYWxCaW5kaW5nQ29udGV4dCBUaGUgaW5pdGlhbCBiaW5kaW5nIGNvbnRleHRcblx0ICogQHJldHVybnMgVGhlIGZyYWdtZW50IGRlZmluaXRpb25cblx0ICogQHB1YmxpY1xuXHQgKi9cblx0YXN5bmMgbG9hZEZyYWdtZW50KG1TZXR0aW5nczoge1xuXHRcdGlkOiBzdHJpbmc7XG5cdFx0bmFtZTogc3RyaW5nO1xuXHRcdGNvbnRyb2xsZXI/OiBvYmplY3Q7XG5cdFx0Y29udGV4dFBhdGg/OiBzdHJpbmc7XG5cdFx0aW5pdGlhbEJpbmRpbmdDb250ZXh0PzogQ29udGV4dDtcblx0fSk6IFByb21pc2U8VUk1RWxlbWVudCB8IFVJNUVsZW1lbnRbXT4ge1xuXHRcdGNvbnN0IG9UZW1wbGF0ZUNvbXBvbmVudCA9IENvbXBvbmVudC5nZXRPd25lckNvbXBvbmVudEZvcih0aGlzLl92aWV3KSBhcyBFbmhhbmNlV2l0aFVJNTxUZW1wbGF0ZUNvbXBvbmVudD47XG5cdFx0Y29uc3Qgb1BhZ2VNb2RlbCA9IHRoaXMuX3ZpZXcuZ2V0TW9kZWwoXCJfcGFnZU1vZGVsXCIpO1xuXHRcdGNvbnN0IGkxOG5Nb2RlbCA9IHRoaXMuX3ZpZXcuZ2V0TW9kZWwoXCJzYXAuZmUuaTE4blwiKTtcblx0XHRjb25zdCBvTWV0YU1vZGVsID0gdGhpcy5nZXRNb2RlbCgpPy5nZXRNZXRhTW9kZWwoKTtcblx0XHRjb25zdCBtVmlld0RhdGEgPSBvVGVtcGxhdGVDb21wb25lbnQuZ2V0Vmlld0RhdGEoKTtcblx0XHRjb25zdCB0YXJnZXRDb250ZXh0UGF0aCA9IG9UZW1wbGF0ZUNvbXBvbmVudC5nZXRFbnRpdHlTZXQoKVxuXHRcdFx0PyBgLyR7b1RlbXBsYXRlQ29tcG9uZW50LmdldEVudGl0eVNldCgpIX1gXG5cdFx0XHQ6IG9UZW1wbGF0ZUNvbXBvbmVudC5nZXRDb250ZXh0UGF0aCgpITtcblx0XHRjb25zdCBvVmlld0RhdGFNb2RlbCA9IG5ldyBKU09OTW9kZWwobVZpZXdEYXRhKSxcblx0XHRcdG9QcmVwcm9jZXNzb3JTZXR0aW5ncyA9IHtcblx0XHRcdFx0YmluZGluZ0NvbnRleHRzOiB7XG5cdFx0XHRcdFx0Y29udGV4dFBhdGg6IG9NZXRhTW9kZWw/LmNyZWF0ZUJpbmRpbmdDb250ZXh0KG1TZXR0aW5ncy5jb250ZXh0UGF0aCB8fCB0YXJnZXRDb250ZXh0UGF0aCksXG5cdFx0XHRcdFx0Y29udmVydGVyQ29udGV4dDogb1BhZ2VNb2RlbC5jcmVhdGVCaW5kaW5nQ29udGV4dChcIi9cIiwgdW5kZWZpbmVkLCB7IG5vUmVzb2x2ZTogdHJ1ZSB9KSxcblx0XHRcdFx0XHR2aWV3RGF0YTogbVZpZXdEYXRhID8gb1ZpZXdEYXRhTW9kZWwuY3JlYXRlQmluZGluZ0NvbnRleHQoXCIvXCIpIDogbnVsbFxuXHRcdFx0XHR9LFxuXHRcdFx0XHRtb2RlbHM6IHtcblx0XHRcdFx0XHRjb250ZXh0UGF0aDogb01ldGFNb2RlbCxcblx0XHRcdFx0XHRjb252ZXJ0ZXJDb250ZXh0OiBvUGFnZU1vZGVsLFxuXHRcdFx0XHRcdG1ldGFNb2RlbDogb01ldGFNb2RlbCxcblx0XHRcdFx0XHR2aWV3RGF0YTogb1ZpZXdEYXRhTW9kZWwsXG5cdFx0XHRcdFx0XCJzYXAuZmUuaTE4blwiOiBpMThuTW9kZWxcblx0XHRcdFx0fSxcblx0XHRcdFx0YXBwQ29tcG9uZW50OiBDb21tb25VdGlscy5nZXRBcHBDb21wb25lbnQodGhpcy5fdmlldylcblx0XHRcdH07XG5cblx0XHQvLyBXZSBzY29wZSB0aGUgZnJhZ21lbnQgd2l0aCBvdXIgRXh0ZW5zaW9uQVBJLiBJZiBhIGNvbnRyb2xsZXIgb2JqZWN0IGlzIHBhc3NlZCB3ZSBtZXJnZSBpdCB3aXRoIHRoZSBleHRlbnNpb25BUElcblx0XHRsZXQgY29udHJvbGxlckluc3RhbmNlOiBFeHRlbnNpb25BUEk7XG5cdFx0aWYgKG1TZXR0aW5ncy5jb250cm9sbGVyICYmICEobVNldHRpbmdzLmNvbnRyb2xsZXIgYXMgRXh0ZW5zaW9uQVBJKT8uaXNBPy4oXCJzYXAuZmUuY29yZS5FeHRlbnNpb25BUElcIikpIHtcblx0XHRcdGNvbnN0IHN1YkNsYXNzID0gKFxuXHRcdFx0XHR0aGlzLmdldE1ldGFkYXRhKCkuZ2V0Q2xhc3MoKSBhcyB1bmtub3duIGFzIHtcblx0XHRcdFx0XHRleHRlbmQ6IChpZDogc3RyaW5nLCBjb250ZW50OiBvYmplY3QpID0+IHsgbmV3IChwYWdlQ29udHJvbGxlcjogUGFnZUNvbnRyb2xsZXIpOiBFeHRlbnNpb25BUEkgfTtcblx0XHRcdFx0fVxuXHRcdFx0KS5leHRlbmQobVNldHRpbmdzLmlkICsgXCItY29udHJvbGxlclwiLCB7fSk7XG5cdFx0XHRmb3IgKGNvbnN0IGNvbnRyb2xsZXJFbGVtZW50S2V5IGluIG1TZXR0aW5ncy5jb250cm9sbGVyKSB7XG5cdFx0XHRcdGNvbnN0IGNvbnRyb2xsZXJFbGVtZW50ID0gbVNldHRpbmdzLmNvbnRyb2xsZXJbY29udHJvbGxlckVsZW1lbnRLZXkgYXMga2V5b2YgdHlwZW9mIG1TZXR0aW5ncy5jb250cm9sbGVyXTtcblx0XHRcdFx0aWYgKChjb250cm9sbGVyRWxlbWVudCBhcyBGdW5jdGlvbik/LmJpbmQpIHtcblx0XHRcdFx0XHRjb25zdCBib3VuZEZ1bmN0aW9uID0gKGNvbnRyb2xsZXJFbGVtZW50IGFzIEZ1bmN0aW9uKS5iaW5kKG1TZXR0aW5ncy5jb250cm9sbGVyKTtcblx0XHRcdFx0XHRpZiAob1RlbXBsYXRlQ29tcG9uZW50KSB7XG5cdFx0XHRcdFx0XHRzdWJDbGFzcy5wcm90b3R5cGVbY29udHJvbGxlckVsZW1lbnRLZXldID0gKC4uLmFyZ3M6IHVua25vd25bXSk6IHVua25vd24gPT4ge1xuXHRcdFx0XHRcdFx0XHRyZXR1cm4gb1RlbXBsYXRlQ29tcG9uZW50LnJ1bkFzT3duZXIoKCkgPT4gYm91bmRGdW5jdGlvbi5hcHBseSh0aGlzLCBhcmdzKSk7XG5cdFx0XHRcdFx0XHR9O1xuXHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRzdWJDbGFzcy5wcm90b3R5cGVbY29udHJvbGxlckVsZW1lbnRLZXldID0gYm91bmRGdW5jdGlvbjtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KHN1YkNsYXNzLnByb3RvdHlwZSwgY29udHJvbGxlckVsZW1lbnRLZXksIHtcblx0XHRcdFx0XHRcdGdldCgpIHtcblx0XHRcdFx0XHRcdFx0cmV0dXJuIG1TZXR0aW5ncy5jb250cm9sbGVyPy5bY29udHJvbGxlckVsZW1lbnRLZXkgYXMga2V5b2YgdHlwZW9mIG1TZXR0aW5ncy5jb250cm9sbGVyXTtcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRzZXQodjogdW5rbm93bikge1xuXHRcdFx0XHRcdFx0XHRpZiAobVNldHRpbmdzLmNvbnRyb2xsZXIpIHtcblx0XHRcdFx0XHRcdFx0XHQobVNldHRpbmdzLmNvbnRyb2xsZXJbY29udHJvbGxlckVsZW1lbnRLZXkgYXMga2V5b2YgdHlwZW9mIG1TZXR0aW5ncy5jb250cm9sbGVyXSBhcyB1bmtub3duKSA9IHY7XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9KTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdFx0Y29udHJvbGxlckluc3RhbmNlID0gbmV3IHN1YkNsYXNzKHRoaXMuX2NvbnRyb2xsZXIpO1xuXHRcdFx0Y29uc3QgbmV3SXNBID0gY29udHJvbGxlckluc3RhbmNlLmlzQTtcblx0XHRcdGNvbnRyb2xsZXJJbnN0YW5jZS5pc0EgPSAoY2xhc3NOYW1lOiBzdHJpbmcpOiBib29sZWFuID0+IHtcblx0XHRcdFx0Ly8gV2Uga2VlcCB0aGUgXHRzYXAuZmUuY29yZS5FeHRlbnNpb25BUEkgYXMgYSB2YWxpZCB0eXBlIGZvciB0aGlzIG5ldyBjbGFzc1xuXHRcdFx0XHQvLyB0aGlzIHR5cGUgaXMgbG9zdCBhcyBzb29uIGFzIHRoZSBtZXJnZWQgY29udHJvbGxlciBvYmplY3QgZ2V0cyBhIG1ldGhvZCBpc0Fcblx0XHRcdFx0cmV0dXJuIG5ld0lzQS5iaW5kKGNvbnRyb2xsZXJJbnN0YW5jZSkoY2xhc3NOYW1lKSB8fCB0aGlzLmlzQShjbGFzc05hbWUpO1xuXHRcdFx0fTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0Y29udHJvbGxlckluc3RhbmNlID0gKG1TZXR0aW5ncy5jb250cm9sbGVyIGFzIEV4dGVuc2lvbkFQSSkgPz8gdGhpcztcblx0XHR9XG5cdFx0cmV0dXJuIG9UZW1wbGF0ZUNvbXBvbmVudC5ydW5Bc093bmVyKGFzeW5jICgpID0+IHtcblx0XHRcdGNvbnN0IG9UZW1wbGF0ZVByb21pc2UgPSBDb21tb25VdGlscy50ZW1wbGF0ZUNvbnRyb2xGcmFnbWVudChtU2V0dGluZ3MubmFtZSwgb1ByZXByb2Nlc3NvclNldHRpbmdzLCB7XG5cdFx0XHRcdGNvbnRyb2xsZXI6IGNvbnRyb2xsZXJJbnN0YW5jZSxcblx0XHRcdFx0aXNYTUw6IGZhbHNlLFxuXHRcdFx0XHRpZDogbVNldHRpbmdzLmlkLFxuXHRcdFx0XHRjb250YWluaW5nVmlldzogdGhpcy5fdmlld1xuXHRcdFx0fSkgYXMgUHJvbWlzZTxDb250cm9sPjtcblx0XHRcdHRyeSB7XG5cdFx0XHRcdGNvbnN0IG9GcmFnbWVudDogQ29udHJvbCA9IGF3YWl0IG9UZW1wbGF0ZVByb21pc2U7XG5cdFx0XHRcdGlmIChtU2V0dGluZ3MuaW5pdGlhbEJpbmRpbmdDb250ZXh0ICE9PSB1bmRlZmluZWQpIHtcblx0XHRcdFx0XHRvRnJhZ21lbnQuc2V0QmluZGluZ0NvbnRleHQobVNldHRpbmdzLmluaXRpYWxCaW5kaW5nQ29udGV4dCk7XG5cdFx0XHRcdH1cblx0XHRcdFx0dGhpcy5hZGREZXBlbmRlbnQob0ZyYWdtZW50KTtcblx0XHRcdFx0cmV0dXJuIG9GcmFnbWVudDtcblx0XHRcdH0gY2F0Y2ggKG9FcnJvcikge1xuXHRcdFx0XHRMb2cuZXJyb3Iob0Vycm9yIGFzIHN0cmluZyk7XG5cdFx0XHR9XG5cdFx0fSkgYXMgUHJvbWlzZTxVSTVFbGVtZW50IHwgVUk1RWxlbWVudFtdPjtcblx0fVxuXG5cdC8qKlxuXHQgKiBUcmlnZ2VycyBhbiB1cGRhdGUgb2YgdGhlIGFwcCBzdGF0ZS5cblx0ICogU2hvdWxkIGJlIGNhbGxlZCBpZiB0aGUgc3RhdGUgb2YgYSBjb250cm9sLCBvciBhbnkgb3RoZXIgc3RhdGUtcmVsZXZhbnQgaW5mb3JtYXRpb24sIHdhcyBjaGFuZ2VkLlxuXHQgKiBAcmV0dXJucyBBIHByb21pc2UgdGhhdCByZXNvbHZlcyB3aXRoIHRoZSBuZXcgYXBwIHN0YXRlIG9iamVjdC5cblx0ICogQHB1YmxpY1xuXHQgKi9cblx0YXN5bmMgdXBkYXRlQXBwU3RhdGUoKTogUHJvbWlzZTx2b2lkIHwgeyBhcHBTdGF0ZTogb2JqZWN0IHwgdW5kZWZpbmVkIH0+IHtcblx0XHRjb25zdCB2aWV3ID0gdGhpcy5fY29udHJvbGxlci5nZXRWaWV3KCk7XG5cdFx0Y29uc3QgYXBwQ29tcG9uZW50ID0gdGhpcy5fY29udHJvbGxlci5nZXRBcHBDb21wb25lbnQoKTtcblx0XHRjb25zdCBhcHBTdGF0ZUluZm8gPSBhd2FpdCBhcHBDb21wb25lbnQuZ2V0QXBwU3RhdGVIYW5kbGVyKCkuY3JlYXRlQXBwU3RhdGUoe1xuXHRcdFx0dmlld0lkOiB2aWV3LmdldElkKClcblx0XHR9KTtcblx0XHRyZXR1cm4gYXBwU3RhdGVJbmZvPy5hcHBTdGF0ZURhdGE7XG5cdH1cblxuXHQvKipcblx0ICogUnVuIHRoZSBnaXZlbiBmdW5jdGlvbiB3aXRoIHRoZSBGUE0gY29udGV4dCBvZiB0aGUgY3VycmVudCBwYWdlLlxuXHQgKiBUaGlzIGFsbG93cyB0byBpbml0aWFsaXplIGFsbCB0aGUgZWxlbWVudHMgcmVxdWlyZWQgYnkgYnVpbGRpbmcgYmxvY2tzIHRvIHJlbmRlciBjb3JyZWN0bHkuXG5cdCAqIEBwYXJhbSBmbiBUaGUgRnVuY3Rpb24gdG8gYmUgZXhlY3V0ZWRcblx0ICogQHJldHVybnMgVGhlIHJlc3VsdCBvZiB0aGUgZnVuY3Rpb25cblx0ICogQHB1YmxpY1xuXHQgKi9cblx0cnVuV2l0aEZQTUNvbnRleHQoZm46IEZ1bmN0aW9uKTogdW5rbm93biB7XG5cdFx0Y29uc3QgdGVtcGxhdGVDb21wb25lbnQgPSBDb21wb25lbnQuZ2V0T3duZXJDb21wb25lbnRGb3IodGhpcy5fdmlldykgYXMgRW5oYW5jZVdpdGhVSTU8VGVtcGxhdGVDb21wb25lbnQ+O1xuXHRcdHJldHVybiB0ZW1wbGF0ZUNvbXBvbmVudC5ydW5Bc093bmVyKGZuIGFzIFRTRnVuY3Rpb24pO1xuXHR9XG59XG5cbmV4cG9ydCBkZWZhdWx0IEV4dGVuc2lvbkFQSTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7OztFQXVCQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0VBUEEsSUFTTUEsWUFBWSxJQUFBQyxJQUFBLEdB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
|
|
@@ -25,7 +25,6 @@ import type { TSFunction } from "../../../../../../types/extension_types";
|
|
|
25
25
|
* Common Extension API for all pages of SAP Fiori elements for OData V4.
|
|
26
26
|
*
|
|
27
27
|
* To correctly integrate your app extension coding with SAP Fiori elements, use only the extensionAPI of SAP Fiori elements. Don't access or manipulate controls, properties, models, or other internal objects created by the SAP Fiori elements framework.
|
|
28
|
-
*
|
|
29
28
|
* @public
|
|
30
29
|
* @hideconstructor
|
|
31
30
|
* @since 1.79.0
|
|
@@ -34,7 +33,6 @@ import type { TSFunction } from "../../../../../../types/extension_types";
|
|
|
34
33
|
class ExtensionAPI extends BaseObject {
|
|
35
34
|
/**
|
|
36
35
|
* A controller extension offering hooks into the edit flow of the application.
|
|
37
|
-
*
|
|
38
36
|
* @public
|
|
39
37
|
*/
|
|
40
38
|
@property({ type: "sap.fe.core.controllerextensions.EditFlow" })
|
|
@@ -42,7 +40,6 @@ class ExtensionAPI extends BaseObject {
|
|
|
42
40
|
|
|
43
41
|
/**
|
|
44
42
|
* A controller extension offering hooks into the routing flow of the application.
|
|
45
|
-
*
|
|
46
43
|
* @public
|
|
47
44
|
*/
|
|
48
45
|
@property({ type: "sap.fe.core.controllerextensions.Routing" })
|
|
@@ -50,13 +47,12 @@ class ExtensionAPI extends BaseObject {
|
|
|
50
47
|
|
|
51
48
|
/**
|
|
52
49
|
* ExtensionAPI for intent-based navigation
|
|
53
|
-
*
|
|
54
50
|
* @public
|
|
55
51
|
*/
|
|
56
52
|
@property({ type: "sap.fe.core.controllerextensions.IntentBasedNavigation" })
|
|
57
53
|
intentBasedNavigation: IntentBasedNavigation;
|
|
58
54
|
|
|
59
|
-
|
|
55
|
+
public _controller: PageController;
|
|
60
56
|
|
|
61
57
|
protected _view: FEView;
|
|
62
58
|
|
|
@@ -80,7 +76,6 @@ class ExtensionAPI extends BaseObject {
|
|
|
80
76
|
|
|
81
77
|
/**
|
|
82
78
|
* Retrieves the editFlow controller extension for this page.
|
|
83
|
-
*
|
|
84
79
|
* @public
|
|
85
80
|
* @returns The editFlow controller extension
|
|
86
81
|
*/
|
|
@@ -90,7 +85,6 @@ class ExtensionAPI extends BaseObject {
|
|
|
90
85
|
|
|
91
86
|
/**
|
|
92
87
|
* Retrieves the routing controller extension for this page.
|
|
93
|
-
*
|
|
94
88
|
* @public
|
|
95
89
|
* @returns The routing controller extension
|
|
96
90
|
*/
|
|
@@ -100,7 +94,6 @@ class ExtensionAPI extends BaseObject {
|
|
|
100
94
|
|
|
101
95
|
/**
|
|
102
96
|
* Retrieves the intentBasedNavigation controller extension for this page.
|
|
103
|
-
*
|
|
104
97
|
* @public
|
|
105
98
|
* @returns The intentBasedNavigation controller extension
|
|
106
99
|
*/
|
|
@@ -110,7 +103,6 @@ class ExtensionAPI extends BaseObject {
|
|
|
110
103
|
|
|
111
104
|
/**
|
|
112
105
|
* Access a control by its ID. If you attempt to access an internal control instead of the stable API, the method will raise an error.
|
|
113
|
-
*
|
|
114
106
|
* @param id ID of the control without view and section prefix.
|
|
115
107
|
* @returns The requested control, if found in the view / section.
|
|
116
108
|
* @public
|
|
@@ -158,13 +150,12 @@ class ExtensionAPI extends BaseObject {
|
|
|
158
150
|
* <li>i18n / further data models defined in the manifest</li>
|
|
159
151
|
* <li>ui: returns a SAPUI5 JSON model containing UI information.
|
|
160
152
|
* Only the following properties are public and supported:
|
|
161
|
-
*
|
|
162
|
-
*
|
|
163
|
-
*
|
|
153
|
+
* <ul>
|
|
154
|
+
* <li>isEditable: set to true if the application is in edit mode</li>
|
|
155
|
+
* </ul>
|
|
164
156
|
* </li>
|
|
165
157
|
* </ul>.
|
|
166
158
|
* editMode is deprecated and should not be used anymore. Use isEditable instead.
|
|
167
|
-
*
|
|
168
159
|
* @param sModelName Name of the model
|
|
169
160
|
* @returns The required model
|
|
170
161
|
* @public
|
|
@@ -185,7 +176,6 @@ class ExtensionAPI extends BaseObject {
|
|
|
185
176
|
|
|
186
177
|
/**
|
|
187
178
|
* Add any control as a dependent control to this SAP Fiori elements page.
|
|
188
|
-
*
|
|
189
179
|
* @param oControl Control to be added as a dependent control
|
|
190
180
|
* @public
|
|
191
181
|
*/
|
|
@@ -195,7 +185,6 @@ class ExtensionAPI extends BaseObject {
|
|
|
195
185
|
|
|
196
186
|
/**
|
|
197
187
|
* Remove a dependent control from this SAP Fiori elements page.
|
|
198
|
-
*
|
|
199
188
|
* @param oControl Control to be added as a dependent control
|
|
200
189
|
* @public
|
|
201
190
|
*/
|
|
@@ -205,7 +194,6 @@ class ExtensionAPI extends BaseObject {
|
|
|
205
194
|
|
|
206
195
|
/**
|
|
207
196
|
* Navigate to another target.
|
|
208
|
-
*
|
|
209
197
|
* @param sTarget Name of the target route
|
|
210
198
|
* @param [oContext] OData v4 context instance
|
|
211
199
|
* @public
|
|
@@ -216,7 +204,6 @@ class ExtensionAPI extends BaseObject {
|
|
|
216
204
|
|
|
217
205
|
/**
|
|
218
206
|
* Load a fragment and go through the template preprocessor with the current page context.
|
|
219
|
-
*
|
|
220
207
|
* @param mSettings The settings object
|
|
221
208
|
* @param mSettings.id The ID of the fragment itself
|
|
222
209
|
* @param mSettings.name The name of the fragment to be loaded
|
|
@@ -323,7 +310,6 @@ class ExtensionAPI extends BaseObject {
|
|
|
323
310
|
/**
|
|
324
311
|
* Triggers an update of the app state.
|
|
325
312
|
* Should be called if the state of a control, or any other state-relevant information, was changed.
|
|
326
|
-
*
|
|
327
313
|
* @returns A promise that resolves with the new app state object.
|
|
328
314
|
* @public
|
|
329
315
|
*/
|
|
@@ -339,7 +325,6 @@ class ExtensionAPI extends BaseObject {
|
|
|
339
325
|
/**
|
|
340
326
|
* Run the given function with the FPM context of the current page.
|
|
341
327
|
* This allows to initialize all the elements required by building blocks to render correctly.
|
|
342
|
-
*
|
|
343
328
|
* @param fn The Function to be executed
|
|
344
329
|
* @returns The result of the function
|
|
345
330
|
* @public
|
|
@@ -5,8 +5,10 @@
|
|
|
5
5
|
sap.ui.define(["sap/insights/CardExtension", "./formatters/ValueFormatter"], function (CardExtension, valueFormatters) {
|
|
6
6
|
"use strict";
|
|
7
7
|
|
|
8
|
-
function _inheritsLoose(
|
|
9
|
-
function _setPrototypeOf(
|
|
8
|
+
function _inheritsLoose(t, o) { t.prototype = Object.create(o.prototype), t.prototype.constructor = t, _setPrototypeOf(t, o); }
|
|
9
|
+
function _setPrototypeOf(t, e) { return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) { return t.__proto__ = e, t; }, _setPrototypeOf(t, e); }
|
|
10
|
+
// This import is fine as this file will only be loaded in insights context
|
|
11
|
+
// eslint-disable-next-line @typescript-eslint/no-restricted-imports
|
|
10
12
|
let InsightsFormatters = /*#__PURE__*/function (_CardExtension) {
|
|
11
13
|
_inheritsLoose(InsightsFormatters, _CardExtension);
|
|
12
14
|
function InsightsFormatters() {
|
|
@@ -24,4 +26,4 @@ sap.ui.define(["sap/insights/CardExtension", "./formatters/ValueFormatter"], fun
|
|
|
24
26
|
}(CardExtension);
|
|
25
27
|
return InsightsFormatters;
|
|
26
28
|
}, false);
|
|
27
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,
|
|
29
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJJbnNpZ2h0c0Zvcm1hdHRlcnMiLCJfQ2FyZEV4dGVuc2lvbiIsIl9pbmhlcml0c0xvb3NlIiwiYXBwbHkiLCJhcmd1bWVudHMiLCJfcHJvdG8iLCJwcm90b3R5cGUiLCJpbml0IiwiYWRkRm9ybWF0dGVycyIsImZvcm1hdFdpdGhCcmFja2V0cyIsInZhbHVlRm9ybWF0dGVycyIsImZvcm1hdFRpdGxlIiwiQ2FyZEV4dGVuc2lvbiJdLCJzb3VyY2VSb290IjoiLiIsInNvdXJjZXMiOlsiSW5zaWdodHNGb3JtYXR0ZXJzRXh0ZW5zaW9uLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIFRoaXMgaW1wb3J0IGlzIGZpbmUgYXMgdGhpcyBmaWxlIHdpbGwgb25seSBiZSBsb2FkZWQgaW4gaW5zaWdodHMgY29udGV4dFxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1yZXN0cmljdGVkLWltcG9ydHNcbmltcG9ydCBDYXJkRXh0ZW5zaW9uIGZyb20gXCJzYXAvaW5zaWdodHMvQ2FyZEV4dGVuc2lvblwiO1xuaW1wb3J0IHZhbHVlRm9ybWF0dGVycyBmcm9tIFwiLi9mb3JtYXR0ZXJzL1ZhbHVlRm9ybWF0dGVyXCI7XG5cbmNsYXNzIEluc2lnaHRzRm9ybWF0dGVycyBleHRlbmRzIENhcmRFeHRlbnNpb24ge1xuXHRwdWJsaWMgaW5pdCgpOiB2b2lkIHtcblx0XHRzdXBlci5pbml0LmFwcGx5KHRoaXMpO1xuXG5cdFx0dGhpcy5hZGRGb3JtYXR0ZXJzKFwic2FwZmVcIiwge1xuXHRcdFx0Zm9ybWF0V2l0aEJyYWNrZXRzOiB2YWx1ZUZvcm1hdHRlcnMuZm9ybWF0V2l0aEJyYWNrZXRzLFxuXHRcdFx0Zm9ybWF0VGl0bGU6IHZhbHVlRm9ybWF0dGVycy5mb3JtYXRUaXRsZVxuXHRcdH0pO1xuXHR9XG59XG5cbmV4cG9ydCBkZWZhdWx0IEluc2lnaHRzRm9ybWF0dGVycztcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0VBQUE7RUFDQTtFQUFBLElBSU1BLGtCQUFrQiwwQkFBQUMsY0FBQTtJQUFBQyxjQUFBLENBQUFGLGtCQUFBLEVBQUFDLGNBQUE7SUFBQSxTQUFBRCxtQkFBQTtNQUFBLE9BQUFDLGNBQUEsQ0FBQUUsS0FBQSxPQUFBQyxTQUFBO0lBQUE7SUFBQSxJQUFBQyxNQUFBLEdBQUFMLGtCQUFBLENBQUFNLFNBQUE7SUFBQUQsTUFBQSxDQUNoQkUsSUFBSSxHQUFYLFNBQUFBLEtBQUEsRUFBb0I7TUFDbkJOLGNBQUEsQ0FBQUssU0FBQSxDQUFNQyxJQUFJLENBQUNKLEtBQUssQ0FBQyxJQUFJLENBQUM7TUFFdEIsSUFBSSxDQUFDSyxhQUFhLENBQUMsT0FBTyxFQUFFO1FBQzNCQyxrQkFBa0IsRUFBRUMsZUFBZSxDQUFDRCxrQkFBa0I7UUFDdERFLFdBQVcsRUFBRUQsZUFBZSxDQUFDQztNQUM5QixDQUFDLENBQUM7SUFDSCxDQUFDO0lBQUEsT0FBQVgsa0JBQUE7RUFBQSxFQVIrQlksYUFBYTtFQUFBLE9BVy9CWixrQkFBa0I7QUFBQSIsImlnbm9yZUxpc3QiOltdfQ==
|