@sapui5/sap.fe.core 1.108.2 → 1.110.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/README.md +5 -1
- package/package.json +11 -9
- package/src/.eslintrc +7 -0
- package/src/sap/fe/core/.library +39 -37
- package/src/sap/fe/core/.supportrc +3 -3
- package/src/sap/fe/core/ActionRuntime.js +72 -27
- package/src/sap/fe/core/ActionRuntime.ts +104 -21
- package/src/sap/fe/core/AppComponent.js +102 -120
- package/src/sap/fe/core/AppComponent.ts +148 -45
- package/src/sap/fe/core/AppStateHandler.js +105 -91
- package/src/sap/fe/core/AppStateHandler.ts +85 -23
- package/src/sap/fe/core/BaseController.js +5 -20
- package/src/sap/fe/core/BaseController.ts +11 -2
- package/src/sap/fe/core/CommonUtils.js +770 -1079
- package/src/sap/fe/core/CommonUtils.ts +750 -491
- package/src/sap/fe/core/ExtensionAPI.js +69 -96
- package/src/sap/fe/core/ExtensionAPI.ts +15 -17
- package/src/sap/fe/core/PageController.js +21 -46
- package/src/sap/fe/core/PageController.ts +11 -2
- package/src/sap/fe/core/TemplateComponent.js +6 -51
- package/src/sap/fe/core/TemplateComponent.ts +27 -16
- package/src/sap/fe/core/TemplateModel.js +18 -24
- package/src/sap/fe/core/TemplateModel.ts +25 -6
- package/src/sap/fe/core/buildingBlocks/AttributeModel.js +8 -23
- package/src/sap/fe/core/buildingBlocks/AttributeModel.ts +5 -4
- package/src/sap/fe/core/buildingBlocks/BuildingBlock.js +146 -180
- package/src/sap/fe/core/buildingBlocks/BuildingBlock.ts +144 -57
- package/src/sap/fe/core/buildingBlocks/BuildingBlockFormatter.js +1 -1
- package/src/sap/fe/core/buildingBlocks/BuildingBlockFragment.js +43 -0
- package/src/sap/fe/core/buildingBlocks/BuildingBlockFragment.ts +11 -0
- package/src/sap/fe/core/buildingBlocks/BuildingBlockRuntime.js +436 -556
- package/src/sap/fe/core/buildingBlocks/BuildingBlockRuntime.ts +288 -157
- package/src/sap/fe/core/buildingBlocks/TraceInfo.js +215 -202
- package/src/sap/fe/core/buildingBlocks/TraceInfo.ts +93 -51
- package/src/sap/fe/core/controllerextensions/BusyLocker.js +11 -26
- package/src/sap/fe/core/controllerextensions/EditFlow.js +407 -596
- package/src/sap/fe/core/controllerextensions/EditFlow.ts +163 -56
- package/src/sap/fe/core/controllerextensions/Feedback.js +70 -0
- package/src/sap/fe/core/controllerextensions/Feedback.ts +64 -0
- package/src/sap/fe/core/controllerextensions/IntentBasedNavigation.js +12 -23
- package/src/sap/fe/core/controllerextensions/IntentBasedNavigation.ts +1 -1
- package/src/sap/fe/core/controllerextensions/InternalEditFlow.js +127 -182
- package/src/sap/fe/core/controllerextensions/InternalEditFlow.ts +65 -32
- package/src/sap/fe/core/controllerextensions/InternalIntentBasedNavigation.js +96 -198
- package/src/sap/fe/core/controllerextensions/InternalIntentBasedNavigation.ts +4 -5
- package/src/sap/fe/core/controllerextensions/InternalRouting.js +134 -291
- package/src/sap/fe/core/controllerextensions/InternalRouting.ts +21 -12
- package/src/sap/fe/core/controllerextensions/KPIManagement.js +111 -214
- package/src/sap/fe/core/controllerextensions/KPIManagement.ts +44 -44
- package/src/sap/fe/core/controllerextensions/MassEdit.js +24 -44
- package/src/sap/fe/core/controllerextensions/MassEdit.ts +3 -2
- package/src/sap/fe/core/controllerextensions/MessageHandler.js +39 -52
- package/src/sap/fe/core/controllerextensions/MessageHandler.ts +26 -7
- package/src/sap/fe/core/controllerextensions/PageReady.js +81 -119
- package/src/sap/fe/core/controllerextensions/PageReady.ts +36 -15
- package/src/sap/fe/core/controllerextensions/Paginator.js +16 -51
- package/src/sap/fe/core/controllerextensions/Paginator.ts +1 -3
- package/src/sap/fe/core/controllerextensions/Placeholder.js +7 -33
- package/src/sap/fe/core/controllerextensions/Routing.js +24 -32
- package/src/sap/fe/core/controllerextensions/Routing.ts +6 -1
- package/src/sap/fe/core/controllerextensions/RoutingListener.js +1 -1
- package/src/sap/fe/core/controllerextensions/Share.js +53 -98
- package/src/sap/fe/core/controllerextensions/Share.ts +6 -3
- package/src/sap/fe/core/controllerextensions/SideEffects.js +103 -174
- package/src/sap/fe/core/controllerextensions/SideEffects.ts +37 -22
- package/src/sap/fe/core/controllerextensions/ViewState.js +341 -276
- package/src/sap/fe/core/controllerextensions/ViewState.ts +236 -84
- package/src/sap/fe/core/controllerextensions/collaboration/ActivityBase.js +6 -22
- package/src/sap/fe/core/controllerextensions/collaboration/ActivityBase.ts +8 -2
- package/src/sap/fe/core/controllerextensions/collaboration/ActivitySync.js +66 -88
- package/src/sap/fe/core/controllerextensions/collaboration/ActivitySync.ts +64 -17
- package/src/sap/fe/core/controllerextensions/collaboration/CollaborationCommon.js +28 -34
- package/src/sap/fe/core/controllerextensions/collaboration/CollaborationCommon.ts +22 -1
- package/src/sap/fe/core/controllerextensions/collaboration/Manage.js +69 -65
- package/src/sap/fe/core/controllerextensions/collaboration/Manage.ts +31 -12
- package/src/sap/fe/core/controllerextensions/collaboration/ManageDialog.fragment.xml +15 -13
- package/src/sap/fe/core/controllerextensions/editFlow/TransactionHelper.js +273 -906
- package/src/sap/fe/core/controllerextensions/editFlow/TransactionHelper.ts +142 -420
- package/src/sap/fe/core/controllerextensions/editFlow/draft.js +49 -115
- package/src/sap/fe/core/controllerextensions/editFlow/draft.ts +12 -7
- package/src/sap/fe/core/controllerextensions/editFlow/draftDataLossPopup.js +70 -89
- package/src/sap/fe/core/controllerextensions/editFlow/draftDataLossPopup.ts +313 -320
- package/src/sap/fe/core/controllerextensions/editFlow/operations.js +582 -683
- package/src/sap/fe/core/controllerextensions/editFlow/operations.ts +507 -386
- package/src/sap/fe/core/controllerextensions/editFlow/sticky.js +111 -102
- package/src/sap/fe/core/controllerextensions/editFlow/sticky.ts +102 -79
- package/src/sap/fe/core/controllerextensions/messageHandler/messageHandling.js +689 -154
- package/src/sap/fe/core/controllerextensions/messageHandler/messageHandling.ts +866 -31
- package/src/sap/fe/core/controllerextensions/pageReady/DataQueryWatcher.js +24 -101
- package/src/sap/fe/core/controllerextensions/pageReady/DataQueryWatcher.ts +5 -5
- package/src/sap/fe/core/controllerextensions/routing/RouterProxy.js +91 -217
- package/src/sap/fe/core/controls/ActionParameterDialog.fragment.xml +3 -20
- package/src/sap/fe/core/controls/ActionParameterDialogValueHelp.fragment.xml +1 -0
- package/src/sap/fe/core/controls/ActionPartial.fragment.xml +46 -46
- package/src/sap/fe/core/controls/Any.js +1 -1
- package/src/sap/fe/core/controls/AnyElement.js +1 -1
- package/src/sap/fe/core/controls/CommandExecution.js +4 -26
- package/src/sap/fe/core/controls/ConditionalWrapper.js +16 -33
- package/src/sap/fe/core/controls/ConditionalWrapper.ts +16 -2
- package/src/sap/fe/core/controls/CustomFilterFieldContentWrapper.js +41 -94
- package/src/sap/fe/core/controls/CustomFilterFieldContentWrapper.ts +1 -1
- package/src/sap/fe/core/controls/CustomQuickViewPage.js +5 -34
- package/src/sap/fe/core/controls/CustomQuickViewPage.ts +5 -7
- package/src/sap/fe/core/controls/DataLossOrDraftDiscard/DataLossDraft.fragment.xml +7 -7
- package/src/sap/fe/core/controls/DataLossOrDraftDiscard/DataLossOrDraftDiscardHandler.js +56 -58
- package/src/sap/fe/core/controls/DataLossOrDraftDiscard/DataLossOrDraftDiscardHandler.ts +53 -33
- package/src/sap/fe/core/controls/FieldWrapper.js +6 -49
- package/src/sap/fe/core/controls/FileWrapper.js +51 -136
- package/src/sap/fe/core/controls/FileWrapper.ts +25 -29
- package/src/sap/fe/core/controls/FilterBar.js +19 -54
- package/src/sap/fe/core/controls/FormElementWrapper.js +1 -22
- package/src/sap/fe/core/controls/MassEditSelect.js +1 -1
- package/src/sap/fe/core/controls/MultiValueParameterDelegate.js +1 -5
- package/src/sap/fe/core/controls/MultiValueParameterDelegate.ts +2 -2
- package/src/sap/fe/core/controls/NonComputedVisibleKeyFieldsDialog.fragment.xml +24 -46
- package/src/sap/fe/core/controls/filterbar/FilterContainer.js +14 -41
- package/src/sap/fe/core/controls/filterbar/FilterContainer.ts +4 -4
- package/src/sap/fe/core/controls/filterbar/VisualFilter.js +26 -67
- package/src/sap/fe/core/controls/filterbar/VisualFilter.ts +20 -20
- package/src/sap/fe/core/controls/filterbar/VisualFilterContainer.js +12 -48
- package/src/sap/fe/core/controls/filterbar/utils/VisualFilterUtils.js +17 -46
- package/src/sap/fe/core/controls/filterbar/utils/VisualFilterUtils.ts +3 -3
- package/src/sap/fe/core/controls/massEdit/MassEditField.fragment.xml +1 -0
- package/src/sap/fe/core/controls/massEdit/MassEditHandlers.js +6 -78
- package/src/sap/fe/core/controls/massEdit/MassEditHandlers.ts +4 -4
- package/src/sap/fe/core/converters/ConverterContext.js +44 -98
- package/src/sap/fe/core/converters/ConverterContext.ts +1 -1
- package/src/sap/fe/core/converters/ManifestSettings.js +1 -20
- package/src/sap/fe/core/converters/ManifestSettings.ts +16 -9
- package/src/sap/fe/core/converters/ManifestWrapper.js +97 -158
- package/src/sap/fe/core/converters/ManifestWrapper.ts +4 -0
- package/src/sap/fe/core/converters/MetaModelConverter.js +28 -167
- package/src/sap/fe/core/converters/MetaModelConverter.ts +9 -3
- package/src/sap/fe/core/converters/TemplateConverter.js +10 -22
- package/src/sap/fe/core/converters/TemplateConverter.ts +10 -7
- package/src/sap/fe/core/converters/annotations/DataField.js +88 -132
- package/src/sap/fe/core/converters/annotations/DataField.ts +90 -38
- package/src/sap/fe/core/converters/common/AnnotationConverter.js +57 -379
- package/src/sap/fe/core/converters/controls/Common/Action.js +45 -115
- package/src/sap/fe/core/converters/controls/Common/Action.ts +17 -5
- package/src/sap/fe/core/converters/controls/Common/Chart.js +20 -73
- package/src/sap/fe/core/converters/controls/Common/Chart.ts +21 -14
- package/src/sap/fe/core/converters/controls/Common/Criticality.js +1 -9
- package/src/sap/fe/core/converters/controls/Common/DataVisualization.js +40 -94
- package/src/sap/fe/core/converters/controls/Common/DataVisualization.ts +44 -31
- package/src/sap/fe/core/converters/controls/Common/Form.js +26 -63
- package/src/sap/fe/core/converters/controls/Common/Form.ts +24 -10
- package/src/sap/fe/core/converters/controls/Common/KPI.js +13 -63
- package/src/sap/fe/core/converters/controls/Common/Table.js +368 -707
- package/src/sap/fe/core/converters/controls/Common/Table.ts +308 -197
- package/src/sap/fe/core/converters/controls/Common/table/StandardActions.js +54 -109
- package/src/sap/fe/core/converters/controls/Common/table/StandardActions.ts +15 -9
- package/src/sap/fe/core/converters/controls/ListReport/FilterBar.js +69 -210
- package/src/sap/fe/core/converters/controls/ListReport/FilterBar.ts +23 -16
- package/src/sap/fe/core/converters/controls/ListReport/VisualFilters.js +12 -80
- package/src/sap/fe/core/converters/controls/ListReport/VisualFilters.ts +3 -1
- package/src/sap/fe/core/converters/controls/ObjectPage/Avatar.js +1 -19
- package/src/sap/fe/core/converters/controls/ObjectPage/HeaderFacet.js +45 -136
- package/src/sap/fe/core/converters/controls/ObjectPage/HeaderFacet.ts +10 -10
- package/src/sap/fe/core/converters/controls/ObjectPage/SubSection.js +82 -173
- package/src/sap/fe/core/converters/controls/ObjectPage/SubSection.ts +48 -22
- package/src/sap/fe/core/converters/helpers/Aggregation.js +24 -66
- package/src/sap/fe/core/converters/helpers/Aggregation.ts +3 -7
- package/src/sap/fe/core/converters/helpers/BindingHelper.js +9 -19
- package/src/sap/fe/core/converters/helpers/BindingHelper.ts +0 -1
- package/src/sap/fe/core/converters/helpers/ConfigurableObject.js +20 -48
- package/src/sap/fe/core/converters/helpers/ConfigurableObject.ts +5 -1
- package/src/sap/fe/core/converters/helpers/DataFieldHelper.js +12 -51
- package/src/sap/fe/core/converters/helpers/DataFieldHelper.ts +13 -11
- package/src/sap/fe/core/converters/helpers/ID.js +3 -17
- package/src/sap/fe/core/converters/helpers/ID.ts +2 -3
- package/src/sap/fe/core/converters/helpers/IssueManager.js +1 -6
- package/src/sap/fe/core/converters/helpers/Key.js +10 -19
- package/src/sap/fe/core/converters/helpers/Key.ts +3 -3
- package/src/sap/fe/core/converters/helpers/SelectionVariantHelper.js +2 -20
- package/src/sap/fe/core/converters/objectPage/FormMenuActions.js +2 -37
- package/src/sap/fe/core/converters/objectPage/HeaderAndFooterAction.js +126 -131
- package/src/sap/fe/core/converters/objectPage/HeaderAndFooterAction.ts +112 -31
- package/src/sap/fe/core/converters/templates/ListReportConverter.js +67 -131
- package/src/sap/fe/core/converters/templates/ListReportConverter.ts +58 -27
- package/src/sap/fe/core/converters/templates/ObjectPageConverter.js +106 -183
- package/src/sap/fe/core/converters/templates/ObjectPageConverter.ts +73 -104
- package/src/sap/fe/core/designtime/AppComponent.designtime.js +74 -67
- package/src/sap/fe/core/designtime/AppComponent.designtime.ts +77 -69
- package/src/sap/fe/core/formatters/CollaborationFormatter.js +20 -29
- package/src/sap/fe/core/formatters/CollaborationFormatter.ts +21 -0
- package/src/sap/fe/core/formatters/FPMFormatter.js +3 -7
- package/src/sap/fe/core/formatters/KPIFormatter.js +5 -13
- package/src/sap/fe/core/formatters/StandardFormatter.js +3 -18
- package/src/sap/fe/core/formatters/StandardFormatter.ts +3 -2
- package/src/sap/fe/core/formatters/TableFormatter.js +87 -53
- package/src/sap/fe/core/formatters/TableFormatter.ts +96 -9
- package/src/sap/fe/core/formatters/TableFormatterTypes.js +1 -4
- package/src/sap/fe/core/formatters/ValueFormatter.js +1 -37
- package/src/sap/fe/core/fpm/Component.js +2 -17
- package/src/sap/fe/core/helpers/AnnotationEnum.js +10 -20
- package/src/sap/fe/core/helpers/AnnotationEnum.ts +6 -6
- package/src/sap/fe/core/helpers/AppStartupHelper.js +16 -52
- package/src/sap/fe/core/helpers/AppStartupHelper.ts +1 -1
- package/src/sap/fe/core/helpers/BindingToolkit.js +106 -364
- package/src/sap/fe/core/helpers/BindingToolkit.ts +30 -7
- package/src/sap/fe/core/helpers/ClassSupport.js +16 -97
- package/src/sap/fe/core/helpers/ClassSupport.ts +7 -4
- package/src/sap/fe/core/helpers/DeleteHelper.js +621 -0
- package/src/sap/fe/core/helpers/DeleteHelper.ts +796 -0
- package/src/sap/fe/core/helpers/DynamicAnnotationPathHelper.js +1 -12
- package/src/sap/fe/core/helpers/EditState.js +2 -5
- package/src/sap/fe/core/helpers/ExcelFormatHelper.js +1 -10
- package/src/sap/fe/core/helpers/FPMHelper.js +3 -8
- package/src/sap/fe/core/helpers/FPMHelper.ts +2 -1
- package/src/sap/fe/core/helpers/KeepAliveHelper.js +8 -38
- package/src/sap/fe/core/helpers/KeepAliveRefreshTypes.js +1 -5
- package/src/sap/fe/core/helpers/LoaderUtils.js +1 -7
- package/src/sap/fe/core/helpers/MassEditHelper.js +177 -289
- package/src/sap/fe/core/helpers/MassEditHelper.ts +124 -91
- package/src/sap/fe/core/helpers/MessageStrip.js +12 -28
- package/src/sap/fe/core/helpers/MessageStrip.ts +7 -7
- package/src/sap/fe/core/helpers/ModelHelper.js +62 -103
- package/src/sap/fe/core/helpers/ModelHelper.ts +58 -20
- package/src/sap/fe/core/helpers/PasteHelper.js +28 -51
- package/src/sap/fe/core/helpers/PasteHelper.ts +10 -9
- package/src/sap/fe/core/helpers/SemanticDateOperators.js +112 -136
- package/src/sap/fe/core/helpers/SemanticDateOperators.ts +111 -111
- package/src/sap/fe/core/helpers/SemanticKeyHelper.js +5 -11
- package/src/sap/fe/core/helpers/SideEffectsHelper.js +26 -32
- package/src/sap/fe/core/helpers/StableIdHelper.js +166 -218
- package/src/sap/fe/core/helpers/StableIdHelper.ts +175 -191
- package/src/sap/fe/core/helpers/Synchronization.js +1 -8
- package/src/sap/fe/core/helpers/ToES6Promise.js +1 -4
- package/src/sap/fe/core/helpers/TypeGuards.js +22 -0
- package/src/sap/fe/core/helpers/TypeGuards.ts +9 -0
- package/src/sap/fe/core/jsx-runtime/Fragment.js +1 -3
- package/src/sap/fe/core/jsx-runtime/ViewLoader.js +3 -23
- package/src/sap/fe/core/jsx-runtime/jsx-control.js +3 -23
- package/src/sap/fe/core/jsx-runtime/jsx-control.ts +2 -1
- package/src/sap/fe/core/jsx-runtime/jsx-xml.js +4 -16
- package/src/sap/fe/core/jsx-runtime/jsx-xml.ts +1 -1
- package/src/sap/fe/core/jsx-runtime/jsx.js +2 -5
- package/src/sap/fe/core/jsx-runtime/jsxs.js +1 -1
- package/src/sap/fe/core/jsx-runtime/useMDXComponents.js +4 -27
- package/src/sap/fe/core/jsx-runtime/useMDXComponents.tsx +1 -1
- package/src/sap/fe/core/library.js +9 -48
- package/src/sap/fe/core/library.support.js +3 -2
- package/src/sap/fe/core/library.support.ts +3 -1
- package/src/sap/fe/core/library.ts +3 -8
- package/src/sap/fe/core/manifestMerger/ChangePageConfiguration.js +74 -39
- package/src/sap/fe/core/manifestMerger/ChangePageConfiguration.ts +71 -26
- package/src/sap/fe/core/messagebundle.properties +113 -67
- package/src/sap/fe/core/messagebundle_ar.properties +20 -3
- package/src/sap/fe/core/messagebundle_bg.properties +22 -5
- package/src/sap/fe/core/messagebundle_ca.properties +21 -4
- package/src/sap/fe/core/messagebundle_cs.properties +21 -4
- package/src/sap/fe/core/messagebundle_cy.properties +22 -5
- package/src/sap/fe/core/messagebundle_da.properties +20 -3
- package/src/sap/fe/core/messagebundle_de.properties +38 -21
- package/src/sap/fe/core/messagebundle_el.properties +20 -3
- package/src/sap/fe/core/messagebundle_en.properties +38 -21
- package/src/sap/fe/core/messagebundle_en_GB.properties +20 -3
- package/src/sap/fe/core/messagebundle_en_US_sappsd.properties +41 -28
- package/src/sap/fe/core/messagebundle_en_US_saprigi.properties +41 -24
- package/src/sap/fe/core/messagebundle_en_US_saptrc.properties +42 -29
- package/src/sap/fe/core/messagebundle_es.properties +40 -23
- package/src/sap/fe/core/messagebundle_es_MX.properties +20 -3
- package/src/sap/fe/core/messagebundle_et.properties +20 -3
- package/src/sap/fe/core/messagebundle_fi.properties +20 -3
- package/src/sap/fe/core/messagebundle_fr.properties +21 -4
- package/src/sap/fe/core/messagebundle_fr_CA.properties +22 -5
- package/src/sap/fe/core/messagebundle_hi.properties +20 -3
- package/src/sap/fe/core/messagebundle_hr.properties +22 -5
- package/src/sap/fe/core/messagebundle_hu.properties +20 -3
- package/src/sap/fe/core/messagebundle_id.properties +20 -3
- package/src/sap/fe/core/messagebundle_it.properties +23 -6
- package/src/sap/fe/core/messagebundle_iw.properties +20 -3
- package/src/sap/fe/core/messagebundle_ja.properties +22 -5
- package/src/sap/fe/core/messagebundle_kk.properties +21 -4
- package/src/sap/fe/core/messagebundle_ko.properties +20 -3
- package/src/sap/fe/core/messagebundle_lt.properties +20 -3
- package/src/sap/fe/core/messagebundle_lv.properties +20 -3
- package/src/sap/fe/core/messagebundle_ms.properties +20 -3
- package/src/sap/fe/core/messagebundle_nl.properties +20 -3
- package/src/sap/fe/core/messagebundle_no.properties +20 -3
- package/src/sap/fe/core/messagebundle_pl.properties +21 -4
- package/src/sap/fe/core/messagebundle_pt.properties +20 -3
- package/src/sap/fe/core/messagebundle_pt_PT.properties +20 -3
- package/src/sap/fe/core/messagebundle_ro.properties +20 -3
- package/src/sap/fe/core/messagebundle_ru.properties +20 -3
- package/src/sap/fe/core/messagebundle_sh.properties +20 -3
- package/src/sap/fe/core/messagebundle_sk.properties +20 -3
- package/src/sap/fe/core/messagebundle_sl.properties +26 -9
- package/src/sap/fe/core/messagebundle_sv.properties +20 -3
- package/src/sap/fe/core/messagebundle_th.properties +21 -4
- package/src/sap/fe/core/messagebundle_tr.properties +20 -3
- package/src/sap/fe/core/messagebundle_uk.properties +23 -6
- package/src/sap/fe/core/messagebundle_vi.properties +20 -3
- package/src/sap/fe/core/messagebundle_zh_CN.properties +20 -3
- package/src/sap/fe/core/messagebundle_zh_TW.properties +20 -3
- package/src/sap/fe/core/operationsHelper.js +74 -101
- package/src/sap/fe/core/operationsHelper.ts +113 -44
- package/src/sap/fe/core/rootView/Fcl.controller.js +151 -228
- package/src/sap/fe/core/rootView/Fcl.controller.ts +90 -15
- package/src/sap/fe/core/rootView/Fcl.view.xml +1 -8
- package/src/sap/fe/core/rootView/NavContainer.controller.js +41 -78
- package/src/sap/fe/core/rootView/NavContainer.controller.ts +32 -38
- package/src/sap/fe/core/rootView/RootViewBaseController.js +110 -181
- package/src/sap/fe/core/rootView/RootViewBaseController.ts +37 -17
- package/src/sap/fe/core/services/AsyncComponentServiceFactory.js +1 -18
- package/src/sap/fe/core/services/CacheHandlerServiceFactory.js +13 -52
- package/src/sap/fe/core/services/EnvironmentServiceFactory.js +1 -22
- package/src/sap/fe/core/services/NavigationServiceFactory.js +45 -87
- package/src/sap/fe/core/services/NavigationServiceFactory.ts +17 -10
- package/src/sap/fe/core/services/ResourceModelServiceFactory.js +4 -28
- package/src/sap/fe/core/services/RoutingServiceFactory.js +92 -250
- package/src/sap/fe/core/services/RoutingServiceFactory.ts +8 -12
- package/src/sap/fe/core/services/ShellServicesFactory.js +122 -251
- package/src/sap/fe/core/services/ShellServicesFactory.ts +19 -4
- package/src/sap/fe/core/services/SideEffectsServiceFactory.js +188 -273
- package/src/sap/fe/core/services/SideEffectsServiceFactory.ts +143 -154
- package/src/sap/fe/core/services/TemplatedViewServiceFactory.js +37 -135
- package/src/sap/fe/core/services/TemplatedViewServiceFactory.ts +59 -94
- package/src/sap/fe/core/services/view/TemplatingErrorPage.controller.js +2 -16
- package/src/sap/fe/core/services/view/TemplatingErrorPage.controller.ts +1 -1
- package/src/sap/fe/core/support/AnnotationIssue.support.js +6 -9
- package/src/sap/fe/core/support/AnnotationIssue.support.ts +4 -4
- package/src/sap/fe/core/support/CollectionFacetMissingID.support.js +6 -9
- package/src/sap/fe/core/support/CollectionFacetMissingID.support.ts +3 -3
- package/src/sap/fe/core/support/CollectionFacetUnsupportedLevel.support.js +6 -9
- package/src/sap/fe/core/support/CollectionFacetUnsupportedLevel.support.ts +3 -3
- package/src/sap/fe/core/support/CommonHelper.js +7 -16
- package/src/sap/fe/core/support/Diagnostics.js +1 -10
- package/src/sap/fe/core/support/InvalidAnnotationColumnKey.support.js +6 -9
- package/src/sap/fe/core/support/InvalidAnnotationColumnKey.support.ts +3 -3
- package/src/sap/fe/core/templating/CommonFormatters.js +1 -15
- package/src/sap/fe/core/templating/CriticalityFormatters.js +4 -20
- package/src/sap/fe/core/templating/DataFieldFormatters.js +1 -20
- package/src/sap/fe/core/templating/DataModelPathHelper.js +49 -121
- package/src/sap/fe/core/templating/DataModelPathHelper.ts +41 -31
- package/src/sap/fe/core/templating/DisplayModeFormatter.js +8 -15
- package/src/sap/fe/core/templating/DisplayModeFormatter.ts +7 -7
- package/src/sap/fe/core/templating/EntitySetHelper.js +6 -31
- package/src/sap/fe/core/templating/FieldControlHelper.js +4 -21
- package/src/sap/fe/core/templating/FieldControlHelper.ts +1 -1
- package/src/sap/fe/core/templating/FilterHelper.js +40 -111
- package/src/sap/fe/core/templating/FilterHelper.ts +20 -16
- package/src/sap/fe/core/templating/FilterTemplating.js +1 -19
- package/src/sap/fe/core/templating/FilterTemplating.ts +1 -1
- package/src/sap/fe/core/templating/PropertyFormatters.js +1 -34
- package/src/sap/fe/core/templating/PropertyHelper.js +120 -163
- package/src/sap/fe/core/templating/PropertyHelper.ts +69 -33
- package/src/sap/fe/core/templating/SemanticObjectHelper.js +46 -0
- package/src/sap/fe/core/templating/SemanticObjectHelper.ts +34 -0
- package/src/sap/fe/core/templating/UIFormatters.js +40 -180
- package/src/sap/fe/core/templating/UIFormatters.ts +37 -43
- package/src/sap/fe/core/type/DateTimeWithTimezone.js +3 -14
- package/src/sap/fe/core/type/Email.js +1 -10
- package/src/sap/fe/core/type/TypeUtil.js +1 -11
- package/ui5.yaml +0 -1
- package/src/sap/fe/core/controls/ActionParameterDialogFieldValueHelp.fragment.xml +0 -35
- package/src/sap/fe/core/helpers/LRMessageStrip.js +0 -234
- package/src/sap/fe/core/helpers/LRMessageStrip.ts +0 -216
|
@@ -6,23 +6,15 @@ sap.ui.define(["sap/fe/core/helpers/ClassSupport", "sap/m/FlexBox", "sap/m/Heade
|
|
|
6
6
|
"use strict";
|
|
7
7
|
|
|
8
8
|
var _dec, _dec2, _class, _class2, _descriptor;
|
|
9
|
-
|
|
10
9
|
var system = Device.system;
|
|
11
10
|
var defineUI5Class = ClassSupport.defineUI5Class;
|
|
12
11
|
var aggregation = ClassSupport.aggregation;
|
|
13
|
-
|
|
14
12
|
function _initializerDefineProperty(target, property, descriptor, context) { if (!descriptor) return; Object.defineProperty(target, property, { enumerable: descriptor.enumerable, configurable: descriptor.configurable, writable: descriptor.writable, value: descriptor.initializer ? descriptor.initializer.call(context) : void 0 }); }
|
|
15
|
-
|
|
16
13
|
function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; }
|
|
17
|
-
|
|
18
14
|
function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _setPrototypeOf(subClass, superClass); }
|
|
19
|
-
|
|
20
15
|
function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }
|
|
21
|
-
|
|
22
16
|
function _applyDecoratedDescriptor(target, property, decorators, descriptor, context) { var desc = {}; Object.keys(descriptor).forEach(function (key) { desc[key] = descriptor[key]; }); desc.enumerable = !!desc.enumerable; desc.configurable = !!desc.configurable; if ('value' in desc || desc.initializer) { desc.writable = true; } desc = decorators.slice().reverse().reduce(function (desc, decorator) { return decorator(target, property, desc) || desc; }, desc); if (context && desc.initializer !== void 0) { desc.value = desc.initializer ? desc.initializer.call(context) : void 0; desc.initializer = undefined; } if (desc.initializer === void 0) { Object.defineProperty(target, property, desc); desc = null; } return desc; }
|
|
23
|
-
|
|
24
17
|
function _initializerWarningHelper(descriptor, context) { throw new Error('Decorating class property failed. Please ensure that ' + 'proposal-class-properties is enabled and runs after the decorators transform.'); }
|
|
25
|
-
|
|
26
18
|
/**
|
|
27
19
|
* Constructor for a new Visual Filter Container.
|
|
28
20
|
* Used for visual filters.
|
|
@@ -38,37 +30,27 @@ sap.ui.define(["sap/fe/core/helpers/ClassSupport", "sap/m/FlexBox", "sap/m/Heade
|
|
|
38
30
|
visibility: "hidden"
|
|
39
31
|
}), _dec(_class = (_class2 = /*#__PURE__*/function (_IFilterContainer) {
|
|
40
32
|
_inheritsLoose(VisualFilterContainer, _IFilterContainer);
|
|
41
|
-
|
|
42
33
|
function VisualFilterContainer() {
|
|
43
34
|
var _this;
|
|
44
|
-
|
|
45
35
|
for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
|
|
46
36
|
args[_key] = arguments[_key];
|
|
47
37
|
}
|
|
48
|
-
|
|
49
38
|
_this = _IFilterContainer.call.apply(_IFilterContainer, [this].concat(args)) || this;
|
|
50
|
-
|
|
51
39
|
_initializerDefineProperty(_this, "_layout", _descriptor, _assertThisInitialized(_this));
|
|
52
|
-
|
|
53
40
|
return _this;
|
|
54
41
|
}
|
|
55
|
-
|
|
56
42
|
var _proto = VisualFilterContainer.prototype;
|
|
57
|
-
|
|
58
43
|
_proto.init = function init() {
|
|
59
44
|
var _IFilterContainer$pro;
|
|
60
|
-
|
|
61
45
|
for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
|
|
62
46
|
args[_key2] = arguments[_key2];
|
|
63
47
|
}
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
48
|
+
(_IFilterContainer$pro = _IFilterContainer.prototype.init).call.apply(_IFilterContainer$pro, [this].concat(args));
|
|
49
|
+
//var oRB = sap.ui.getCore().getLibraryResourceBundle("sap.ui.mdc");
|
|
68
50
|
var sDeviceSystem = system,
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
51
|
+
Orientation = coreLibrabry.Orientation,
|
|
52
|
+
sOrientation = sDeviceSystem.phone ? Orientation.Vertical : undefined,
|
|
53
|
+
sDirection = sDeviceSystem.phone ? "ColumnReverse" : "Column";
|
|
72
54
|
this.oHeaderContainer = new HeaderContainer({
|
|
73
55
|
orientation: sOrientation
|
|
74
56
|
});
|
|
@@ -84,18 +66,14 @@ sap.ui.define(["sap/fe/core/helpers/ClassSupport", "sap/m/FlexBox", "sap/m/Heade
|
|
|
84
66
|
this.aAllFilterFields = [];
|
|
85
67
|
this.aVisualFilterFields = {};
|
|
86
68
|
};
|
|
87
|
-
|
|
88
69
|
_proto.exit = function exit() {
|
|
89
70
|
var _IFilterContainer$pro2;
|
|
90
|
-
|
|
91
71
|
for (var _len3 = arguments.length, args = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {
|
|
92
72
|
args[_key3] = arguments[_key3];
|
|
93
73
|
}
|
|
94
|
-
|
|
95
74
|
// destroy layout
|
|
96
|
-
(_IFilterContainer$pro2 = _IFilterContainer.prototype.exit).call.apply(_IFilterContainer$pro2, [this].concat(args));
|
|
97
|
-
|
|
98
|
-
|
|
75
|
+
(_IFilterContainer$pro2 = _IFilterContainer.prototype.exit).call.apply(_IFilterContainer$pro2, [this].concat(args));
|
|
76
|
+
// destroy all filter fields which are not in the layout
|
|
99
77
|
var aAllFilterFields = this.getAllFilterFields();
|
|
100
78
|
aAllFilterFields.forEach(function (oFilterField) {
|
|
101
79
|
oFilterField.destroy();
|
|
@@ -104,10 +82,8 @@ sap.ui.define(["sap/fe/core/helpers/ClassSupport", "sap/m/FlexBox", "sap/m/Heade
|
|
|
104
82
|
this.oButtonFlexBox = null;
|
|
105
83
|
this.aAllFilterFields = [];
|
|
106
84
|
};
|
|
107
|
-
|
|
108
85
|
_proto.insertFilterField = function insertFilterField(oControl, iIndex) {
|
|
109
86
|
var _this2 = this;
|
|
110
|
-
|
|
111
87
|
var oFilterItemLayoutEventDelegate = {
|
|
112
88
|
onBeforeRendering: function () {
|
|
113
89
|
// visual filter does not need to render a label
|
|
@@ -115,68 +91,56 @@ sap.ui.define(["sap/fe/core/helpers/ClassSupport", "sap/m/FlexBox", "sap/m/Heade
|
|
|
115
91
|
// and store the original getContent for later usage in the compact filters
|
|
116
92
|
if (!oControl._fnGetContentCopy) {
|
|
117
93
|
oControl._fnGetContentCopy = oControl.getContent;
|
|
118
|
-
}
|
|
94
|
+
}
|
|
95
|
+
// override getContent of FilterItemLayout
|
|
119
96
|
// to add only filterField and not label
|
|
120
|
-
|
|
121
|
-
|
|
122
97
|
oControl.getContent = function () {
|
|
123
98
|
var aContent = [];
|
|
124
99
|
aContent.push(oControl._oFilterField);
|
|
125
100
|
return aContent;
|
|
126
101
|
};
|
|
127
|
-
|
|
128
102
|
oControl.removeEventDelegate(oFilterItemLayoutEventDelegate);
|
|
129
103
|
}
|
|
130
104
|
};
|
|
131
|
-
oControl.addEventDelegate(oFilterItemLayoutEventDelegate);
|
|
105
|
+
oControl.addEventDelegate(oFilterItemLayoutEventDelegate);
|
|
132
106
|
|
|
107
|
+
// Setting VF control for the Filterfield.
|
|
133
108
|
var oVisualFilters = this.aVisualFilterFields;
|
|
134
109
|
oControl.getContent().some(function (oInnerControl) {
|
|
135
110
|
var sFFId = oInnerControl.getId();
|
|
136
|
-
|
|
137
111
|
if (oVisualFilters[sFFId] && oInnerControl.isA("sap.ui.mdc.FilterField")) {
|
|
138
112
|
oInnerControl.setContent(oVisualFilters[sFFId]);
|
|
139
|
-
|
|
140
113
|
_this2.oHeaderContainer.insertContent(oControl, iIndex);
|
|
141
114
|
}
|
|
142
115
|
});
|
|
143
116
|
};
|
|
144
|
-
|
|
145
117
|
_proto.removeFilterField = function removeFilterField(oControl) {
|
|
146
118
|
this.oHeaderContainer.removeContent(oControl);
|
|
147
119
|
};
|
|
148
|
-
|
|
149
120
|
_proto.removeAllFilterFields = function removeAllFilterFields() {
|
|
150
121
|
this.aAllFilterFields = [];
|
|
151
122
|
this.aVisualFilterFields = {};
|
|
152
123
|
this.oHeaderContainer.removeAllContent();
|
|
153
124
|
};
|
|
154
|
-
|
|
155
125
|
_proto.getFilterFields = function getFilterFields() {
|
|
156
126
|
return this.oHeaderContainer.getContent();
|
|
157
127
|
};
|
|
158
|
-
|
|
159
128
|
_proto.addButton = function addButton(oControl) {
|
|
160
129
|
this.oButtonFlexBox.insertItem(oControl);
|
|
161
130
|
};
|
|
162
|
-
|
|
163
131
|
_proto.getAllButtons = function getAllButtons() {
|
|
164
132
|
return this.oButtonFlexBox.getItems().reverse();
|
|
165
133
|
};
|
|
166
|
-
|
|
167
134
|
_proto.removeButton = function removeButton(oControl) {
|
|
168
135
|
this.oButtonFlexBox.removeItem(oControl);
|
|
169
136
|
};
|
|
170
|
-
|
|
171
137
|
_proto.getAllFilterFields = function getAllFilterFields() {
|
|
172
138
|
return this.aAllFilterFields.slice();
|
|
173
139
|
};
|
|
174
|
-
|
|
175
140
|
_proto.setAllFilterFields = function setAllFilterFields(aFilterFields, aVisualFilterFields) {
|
|
176
141
|
this.aAllFilterFields = aFilterFields;
|
|
177
142
|
this.aVisualFilterFields = aVisualFilterFields;
|
|
178
143
|
};
|
|
179
|
-
|
|
180
144
|
return VisualFilterContainer;
|
|
181
145
|
}(IFilterContainer), (_descriptor = _applyDecoratedDescriptor(_class2.prototype, "_layout", [_dec2], {
|
|
182
146
|
configurable: true,
|
|
@@ -186,4 +150,4 @@ sap.ui.define(["sap/fe/core/helpers/ClassSupport", "sap/m/FlexBox", "sap/m/Heade
|
|
|
186
150
|
})), _class2)) || _class);
|
|
187
151
|
return VisualFilterContainer;
|
|
188
152
|
}, false);
|
|
189
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJWaXN1YWxGaWx0ZXJDb250YWluZXIiLCJkZWZpbmVVSTVDbGFzcyIsImFnZ3JlZ2F0aW9uIiwidHlwZSIsIm11bHRpcGxlIiwidmlzaWJpbGl0eSIsImluaXQiLCJhcmdzIiwic0RldmljZVN5c3RlbSIsInN5c3RlbSIsIk9yaWVudGF0aW9uIiwiY29yZUxpYnJhYnJ5Iiwic09yaWVudGF0aW9uIiwicGhvbmUiLCJWZXJ0aWNhbCIsInVuZGVmaW5lZCIsInNEaXJlY3Rpb24iLCJvSGVhZGVyQ29udGFpbmVyIiwiSGVhZGVyQ29udGFpbmVyIiwib3JpZW50YXRpb24iLCJvQnV0dG9uRmxleEJveCIsIkZsZXhCb3giLCJhbGlnbkl0ZW1zIiwianVzdGlmeUNvbnRlbnQiLCJvTGF5b3V0IiwiZGlyZWN0aW9uIiwiaXRlbXMiLCJhQWxsRmlsdGVyRmllbGRzIiwiYVZpc3VhbEZpbHRlckZpZWxkcyIsImV4aXQiLCJnZXRBbGxGaWx0ZXJGaWVsZHMiLCJmb3JFYWNoIiwib0ZpbHRlckZpZWxkIiwiZGVzdHJveSIsImluc2VydEZpbHRlckZpZWxkIiwib0NvbnRyb2wiLCJpSW5kZXgiLCJvRmlsdGVySXRlbUxheW91dEV2ZW50RGVsZWdhdGUiLCJvbkJlZm9yZVJlbmRlcmluZyIsIl9mbkdldENvbnRlbnRDb3B5IiwiZ2V0Q29udGVudCIsImFDb250ZW50IiwicHVzaCIsIl9vRmlsdGVyRmllbGQiLCJyZW1vdmVFdmVudERlbGVnYXRlIiwiYWRkRXZlbnREZWxlZ2F0ZSIsIm9WaXN1YWxGaWx0ZXJzIiwic29tZSIsIm9Jbm5lckNvbnRyb2wiLCJzRkZJZCIsImdldElkIiwiaXNBIiwic2V0Q29udGVudCIsImluc2VydENvbnRlbnQiLCJyZW1vdmVGaWx0ZXJGaWVsZCIsInJlbW92ZUNvbnRlbnQiLCJyZW1vdmVBbGxGaWx0ZXJGaWVsZHMiLCJyZW1vdmVBbGxDb250ZW50IiwiZ2V0RmlsdGVyRmllbGRzIiwiYWRkQnV0dG9uIiwiaW5zZXJ0SXRlbSIsImdldEFsbEJ1dHRvbnMiLCJnZXRJdGVtcyIsInJldmVyc2UiLCJyZW1vdmVCdXR0b24iLCJyZW1vdmVJdGVtIiwic2xpY2UiLCJzZXRBbGxGaWx0ZXJGaWVsZHMiLCJhRmlsdGVyRmllbGRzIiwiSUZpbHRlckNvbnRhaW5lciJdLCJzb3VyY2VSb290IjoiLiIsInNvdXJjZXMiOlsiVmlzdWFsRmlsdGVyQ29udGFpbmVyLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGFnZ3JlZ2F0aW9uLCBkZWZpbmVVSTVDbGFzcyB9IGZyb20gXCJzYXAvZmUvY29yZS9oZWxwZXJzL0NsYXNzU3VwcG9ydFwiO1xuaW1wb3J0IEZsZXhCb3ggZnJvbSBcInNhcC9tL0ZsZXhCb3hcIjtcbmltcG9ydCBIZWFkZXJDb250YWluZXIgZnJvbSBcInNhcC9tL0hlYWRlckNvbnRhaW5lclwiO1xuaW1wb3J0IHR5cGUgQ29udHJvbCBmcm9tIFwic2FwL3VpL2NvcmUvQ29udHJvbFwiO1xuaW1wb3J0IGNvcmVMaWJyYWJyeSBmcm9tIFwic2FwL3VpL2NvcmUvbGlicmFyeVwiO1xuaW1wb3J0IHsgc3lzdGVtIH0gZnJvbSBcInNhcC91aS9EZXZpY2VcIjtcbmltcG9ydCBJRmlsdGVyQ29udGFpbmVyIGZyb20gXCJzYXAvdWkvbWRjL2ZpbHRlcmJhci9JRmlsdGVyQ29udGFpbmVyXCI7XG4vKipcbiAqIENvbnN0cnVjdG9yIGZvciBhIG5ldyBWaXN1YWwgRmlsdGVyIENvbnRhaW5lci5cbiAqIFVzZWQgZm9yIHZpc3VhbCBmaWx0ZXJzLlxuICpcbiAqIEBleHRlbmRzIHNhcC51aS5tZGMuZmlsdGVyYmFyLklGaWx0ZXJDb250YWluZXJcbiAqIEBjbGFzc1xuICogQHByaXZhdGVcbiAqIEBhbGlhcyBzYXAuZmUuY29yZS5jb250cm9scy5maWx0ZXJiYXIuVmlzdWFsRmlsdGVyQ29udGFpbmVyXG4gKi9cbkBkZWZpbmVVSTVDbGFzcyhcInNhcC5mZS5jb3JlLmNvbnRyb2xzLmZpbHRlcmJhci5WaXN1YWxGaWx0ZXJDb250YWluZXJcIilcbmNsYXNzIFZpc3VhbEZpbHRlckNvbnRhaW5lciBleHRlbmRzIElGaWx0ZXJDb250YWluZXIge1xuXHRAYWdncmVnYXRpb24oe1xuXHRcdHR5cGU6IFwic2FwLnVpLmNvcmUuQ29udHJvbFwiLFxuXHRcdG11bHRpcGxlOiBmYWxzZSxcblx0XHR2aXNpYmlsaXR5OiBcImhpZGRlblwiXG5cdH0pXG5cdC8qKlxuXHQgKiBJbnRlcm5hbCBoaWRkZW4gYWdncmVnYXRpb24gdG8gaG9sZCB0aGUgaW5uZXIgbGF5b3V0LlxuXHQgKi9cblx0X2xheW91dCE6IENvbnRyb2w7XG5cblx0aW5pdCguLi5hcmdzOiBhbnlbXSkge1xuXHRcdHN1cGVyLmluaXQoLi4uYXJncyk7XG5cdFx0Ly92YXIgb1JCID0gc2FwLnVpLmdldENvcmUoKS5nZXRMaWJyYXJ5UmVzb3VyY2VCdW5kbGUoXCJzYXAudWkubWRjXCIpO1xuXHRcdGNvbnN0IHNEZXZpY2VTeXN0ZW0gPSBzeXN0ZW0sXG5cdFx0XHRPcmllbnRhdGlvbiA9IGNvcmVMaWJyYWJyeS5PcmllbnRhdGlvbixcblx0XHRcdHNPcmllbnRhdGlvbiA9IHNEZXZpY2VTeXN0ZW0ucGhvbmUgPyBPcmllbnRhdGlvbi5WZXJ0aWNhbCA6IHVuZGVmaW5lZCxcblx0XHRcdHNEaXJlY3Rpb24gPSBzRGV2aWNlU3lzdGVtLnBob25lID8gXCJDb2x1bW5SZXZlcnNlXCIgOiBcIkNvbHVtblwiO1xuXG5cdFx0dGhpcy5vSGVhZGVyQ29udGFpbmVyID0gbmV3IEhlYWRlckNvbnRhaW5lcih7XG5cdFx0XHRvcmllbnRhdGlvbjogc09yaWVudGF0aW9uXG5cdFx0fSk7XG5cdFx0dGhpcy5vQnV0dG9uRmxleEJveCA9IG5ldyBGbGV4Qm94KHtcblx0XHRcdGFsaWduSXRlbXM6IFwiRW5kXCIsXG5cdFx0XHRqdXN0aWZ5Q29udGVudDogXCJFbmRcIlxuXHRcdH0pO1xuXG5cdFx0dGhpcy5vTGF5b3V0ID0gbmV3IEZsZXhCb3goe1xuXHRcdFx0ZGlyZWN0aW9uOiBzRGlyZWN0aW9uLCAvLyBEaXJlY3Rpb24gaXMgQ29sdW1uIFJldmVyc2UgZm9yIFBob25lXG5cdFx0XHRpdGVtczogW3RoaXMub0hlYWRlckNvbnRhaW5lciwgdGhpcy5vQnV0dG9uRmxleEJveF1cblx0XHR9KTtcblxuXHRcdHRoaXMuYUFsbEZpbHRlckZpZWxkcyA9IFtdO1xuXHRcdHRoaXMuYVZpc3VhbEZpbHRlckZpZWxkcyA9IHt9O1xuXHR9XG5cdGV4aXQoLi4uYXJnczogYW55W10pIHtcblx0XHQvLyBkZXN0cm95IGxheW91dFxuXHRcdHN1cGVyLmV4aXQoLi4uYXJncyk7XG5cdFx0Ly8gZGVzdHJveSBhbGwgZmlsdGVyIGZpZWxkcyB3aGljaCBhcmUgbm90IGluIHRoZSBsYXlvdXRcblx0XHRjb25zdCBhQWxsRmlsdGVyRmllbGRzID0gdGhpcy5nZXRBbGxGaWx0ZXJGaWVsZHMoKTtcblx0XHRhQWxsRmlsdGVyRmllbGRzLmZvckVhY2goZnVuY3Rpb24gKG9GaWx0ZXJGaWVsZDogYW55KSB7XG5cdFx0XHRvRmlsdGVyRmllbGQuZGVzdHJveSgpO1xuXHRcdH0pO1xuXHRcdHRoaXMub0hlYWRlckNvbnRhaW5lciA9IG51bGw7XG5cdFx0dGhpcy5vQnV0dG9uRmxleEJveCA9IG51bGw7XG5cdFx0dGhpcy5hQWxsRmlsdGVyRmllbGRzID0gW107XG5cdH1cblx0aW5zZXJ0RmlsdGVyRmllbGQob0NvbnRyb2w6IGFueSwgaUluZGV4OiBhbnkpIHtcblx0XHRjb25zdCBvRmlsdGVySXRlbUxheW91dEV2ZW50RGVsZWdhdGUgPSB7XG5cdFx0XHRvbkJlZm9yZVJlbmRlcmluZzogZnVuY3Rpb24gKCkge1xuXHRcdFx0XHQvLyB2aXN1YWwgZmlsdGVyIGRvZXMgbm90IG5lZWQgdG8gcmVuZGVyIGEgbGFiZWxcblx0XHRcdFx0Ly8gaGVuY2Ugb3ZlcnJpZGUgdGhlIGdldENvbnRlbnQgb2YgdGhlIEZpbHRlckl0ZW1MYXlvdXRcblx0XHRcdFx0Ly8gYW5kIHN0b3JlIHRoZSBvcmlnaW5hbCBnZXRDb250ZW50IGZvciBsYXRlciB1c2FnZSBpbiB0aGUgY29tcGFjdCBmaWx0ZXJzXG5cdFx0XHRcdGlmICghb0NvbnRyb2wuX2ZuR2V0Q29udGVudENvcHkpIHtcblx0XHRcdFx0XHRvQ29udHJvbC5fZm5HZXRDb250ZW50Q29weSA9IG9Db250cm9sLmdldENvbnRlbnQ7XG5cdFx0XHRcdH1cblx0XHRcdFx0Ly8gb3ZlcnJpZGUgZ2V0Q29udGVudCBvZiBGaWx0ZXJJdGVtTGF5b3V0XG5cdFx0XHRcdC8vIHRvIGFkZCBvbmx5IGZpbHRlckZpZWxkIGFuZCBub3QgbGFiZWxcblx0XHRcdFx0b0NvbnRyb2wuZ2V0Q29udGVudCA9IGZ1bmN0aW9uICgpIHtcblx0XHRcdFx0XHRjb25zdCBhQ29udGVudCA9IFtdO1xuXHRcdFx0XHRcdGFDb250ZW50LnB1c2gob0NvbnRyb2wuX29GaWx0ZXJGaWVsZCk7XG5cdFx0XHRcdFx0cmV0dXJuIGFDb250ZW50O1xuXHRcdFx0XHR9O1xuXHRcdFx0XHRvQ29udHJvbC5yZW1vdmVFdmVudERlbGVnYXRlKG9GaWx0ZXJJdGVtTGF5b3V0RXZlbnREZWxlZ2F0ZSk7XG5cdFx0XHR9XG5cdFx0fTtcblx0XHRvQ29udHJvbC5hZGRFdmVudERlbGVnYXRlKG9GaWx0ZXJJdGVtTGF5b3V0RXZlbnREZWxlZ2F0ZSk7XG5cblx0XHQvLyBTZXR0aW5nIFZGIGNvbnRyb2wgZm9yIHRoZSBGaWx0ZXJmaWVsZC5cblx0XHRjb25zdCBvVmlzdWFsRmlsdGVycyA9IHRoaXMuYVZpc3VhbEZpbHRlckZpZWxkcztcblx0XHRvQ29udHJvbC5nZXRDb250ZW50KCkuc29tZSgob0lubmVyQ29udHJvbDogYW55KSA9PiB7XG5cdFx0XHRjb25zdCBzRkZJZCA9IG9Jbm5lckNvbnRyb2wuZ2V0SWQoKTtcblx0XHRcdGlmIChvVmlzdWFsRmlsdGVyc1tzRkZJZF0gJiYgb0lubmVyQ29udHJvbC5pc0EoXCJzYXAudWkubWRjLkZpbHRlckZpZWxkXCIpKSB7XG5cdFx0XHRcdG9Jbm5lckNvbnRyb2wuc2V0Q29udGVudChvVmlzdWFsRmlsdGVyc1tzRkZJZF0pO1xuXHRcdFx0XHR0aGlzLm9IZWFkZXJDb250YWluZXIuaW5zZXJ0Q29udGVudChvQ29udHJvbCwgaUluZGV4KTtcblx0XHRcdH1cblx0XHR9KTtcblx0fVxuXHRyZW1vdmVGaWx0ZXJGaWVsZChvQ29udHJvbDogYW55KSB7XG5cdFx0dGhpcy5vSGVhZGVyQ29udGFpbmVyLnJlbW92ZUNvbnRlbnQob0NvbnRyb2wpO1xuXHR9XG5cdHJlbW92ZUFsbEZpbHRlckZpZWxkcygpIHtcblx0XHR0aGlzLmFBbGxGaWx0ZXJGaWVsZHMgPSBbXTtcblx0XHR0aGlzLmFWaXN1YWxGaWx0ZXJGaWVsZHMgPSB7fTtcblx0XHR0aGlzLm9IZWFkZXJDb250YWluZXIucmVtb3ZlQWxsQ29udGVudCgpO1xuXHR9XG5cdGdldEZpbHRlckZpZWxkcygpIHtcblx0XHRyZXR1cm4gdGhpcy5vSGVhZGVyQ29udGFpbmVyLmdldENvbnRlbnQoKTtcblx0fVxuXHRhZGRCdXR0b24ob0NvbnRyb2w6IGFueSkge1xuXHRcdHRoaXMub0J1dHRvbkZsZXhCb3guaW5zZXJ0SXRlbShvQ29udHJvbCk7XG5cdH1cblx0Z2V0QWxsQnV0dG9ucygpIHtcblx0XHRyZXR1cm4gdGhpcy5vQnV0dG9uRmxleEJveC5nZXRJdGVtcygpLnJldmVyc2UoKTtcblx0fVxuXHRyZW1vdmVCdXR0b24ob0NvbnRyb2w6IGFueSkge1xuXHRcdHRoaXMub0J1dHRvbkZsZXhCb3gucmVtb3ZlSXRlbShvQ29udHJvbCk7XG5cdH1cblx0Z2V0QWxsRmlsdGVyRmllbGRzKCkge1xuXHRcdHJldHVybiB0aGlzLmFBbGxGaWx0ZXJGaWVsZHMuc2xpY2UoKTtcblx0fVxuXHRzZXRBbGxGaWx0ZXJGaWVsZHMoYUZpbHRlckZpZWxkczogYW55LCBhVmlzdWFsRmlsdGVyRmllbGRzOiBhbnkpIHtcblx0XHR0aGlzLmFBbGxGaWx0ZXJGaWVsZHMgPSBhRmlsdGVyRmllbGRzO1xuXHRcdHRoaXMuYVZpc3VhbEZpbHRlckZpZWxkcyA9IGFWaXN1YWxGaWx0ZXJGaWVsZHM7XG5cdH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgVmlzdWFsRmlsdGVyQ29udGFpbmVyO1xuIl0sIm1hcHBpbmdzIjoiO0FBQUE7QUFBQTtBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0VBT0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO01BRU1BLHFCLFdBRExDLGNBQWMsQ0FBQyxzREFBRCxDLFVBRWJDLFdBQVcsQ0FBQztJQUNaQyxJQUFJLEVBQUUscUJBRE07SUFFWkMsUUFBUSxFQUFFLEtBRkU7SUFHWkMsVUFBVSxFQUFFO0VBSEEsQ0FBRCxDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O1dBVVpDLEksR0FBQSxnQkFBcUI7TUFBQTs7TUFBQSxtQ0FBYkMsSUFBYTtRQUFiQSxJQUFhO01BQUE7O01BQ3BCLHFEQUFNRCxJQUFOLGtEQUFjQyxJQUFkLEdBRG9CLENBRXBCOzs7TUFDQSxJQUFNQyxhQUFhLEdBQUdDLE1BQXRCO01BQUEsSUFDQ0MsV0FBVyxHQUFHQyxZQUFZLENBQUNELFdBRDVCO01BQUEsSUFFQ0UsWUFBWSxHQUFHSixhQUFhLENBQUNLLEtBQWQsR0FBc0JILFdBQVcsQ0FBQ0ksUUFBbEMsR0FBNkNDLFNBRjdEO01BQUEsSUFHQ0MsVUFBVSxHQUFHUixhQUFhLENBQUNLLEtBQWQsR0FBc0IsZUFBdEIsR0FBd0MsUUFIdEQ7TUFLQSxLQUFLSSxnQkFBTCxHQUF3QixJQUFJQyxlQUFKLENBQW9CO1FBQzNDQyxXQUFXLEVBQUVQO01BRDhCLENBQXBCLENBQXhCO01BR0EsS0FBS1EsY0FBTCxHQUFzQixJQUFJQyxPQUFKLENBQVk7UUFDakNDLFVBQVUsRUFBRSxLQURxQjtRQUVqQ0MsY0FBYyxFQUFFO01BRmlCLENBQVosQ0FBdEI7TUFLQSxLQUFLQyxPQUFMLEdBQWUsSUFBSUgsT0FBSixDQUFZO1FBQzFCSSxTQUFTLEVBQUVULFVBRGU7UUFDSDtRQUN2QlUsS0FBSyxFQUFFLENBQUMsS0FBS1QsZ0JBQU4sRUFBd0IsS0FBS0csY0FBN0I7TUFGbUIsQ0FB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
|
|
153
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJWaXN1YWxGaWx0ZXJDb250YWluZXIiLCJkZWZpbmVVSTVDbGFzcyIsImFnZ3JlZ2F0aW9uIiwidHlwZSIsIm11bHRpcGxlIiwidmlzaWJpbGl0eSIsImluaXQiLCJhcmdzIiwic0RldmljZVN5c3RlbSIsInN5c3RlbSIsIk9yaWVudGF0aW9uIiwiY29yZUxpYnJhYnJ5Iiwic09yaWVudGF0aW9uIiwicGhvbmUiLCJWZXJ0aWNhbCIsInVuZGVmaW5lZCIsInNEaXJlY3Rpb24iLCJvSGVhZGVyQ29udGFpbmVyIiwiSGVhZGVyQ29udGFpbmVyIiwib3JpZW50YXRpb24iLCJvQnV0dG9uRmxleEJveCIsIkZsZXhCb3giLCJhbGlnbkl0ZW1zIiwianVzdGlmeUNvbnRlbnQiLCJvTGF5b3V0IiwiZGlyZWN0aW9uIiwiaXRlbXMiLCJhQWxsRmlsdGVyRmllbGRzIiwiYVZpc3VhbEZpbHRlckZpZWxkcyIsImV4aXQiLCJnZXRBbGxGaWx0ZXJGaWVsZHMiLCJmb3JFYWNoIiwib0ZpbHRlckZpZWxkIiwiZGVzdHJveSIsImluc2VydEZpbHRlckZpZWxkIiwib0NvbnRyb2wiLCJpSW5kZXgiLCJvRmlsdGVySXRlbUxheW91dEV2ZW50RGVsZWdhdGUiLCJvbkJlZm9yZVJlbmRlcmluZyIsIl9mbkdldENvbnRlbnRDb3B5IiwiZ2V0Q29udGVudCIsImFDb250ZW50IiwicHVzaCIsIl9vRmlsdGVyRmllbGQiLCJyZW1vdmVFdmVudERlbGVnYXRlIiwiYWRkRXZlbnREZWxlZ2F0ZSIsIm9WaXN1YWxGaWx0ZXJzIiwic29tZSIsIm9Jbm5lckNvbnRyb2wiLCJzRkZJZCIsImdldElkIiwiaXNBIiwic2V0Q29udGVudCIsImluc2VydENvbnRlbnQiLCJyZW1vdmVGaWx0ZXJGaWVsZCIsInJlbW92ZUNvbnRlbnQiLCJyZW1vdmVBbGxGaWx0ZXJGaWVsZHMiLCJyZW1vdmVBbGxDb250ZW50IiwiZ2V0RmlsdGVyRmllbGRzIiwiYWRkQnV0dG9uIiwiaW5zZXJ0SXRlbSIsImdldEFsbEJ1dHRvbnMiLCJnZXRJdGVtcyIsInJldmVyc2UiLCJyZW1vdmVCdXR0b24iLCJyZW1vdmVJdGVtIiwic2xpY2UiLCJzZXRBbGxGaWx0ZXJGaWVsZHMiLCJhRmlsdGVyRmllbGRzIiwiSUZpbHRlckNvbnRhaW5lciJdLCJzb3VyY2VSb290IjoiLiIsInNvdXJjZXMiOlsiVmlzdWFsRmlsdGVyQ29udGFpbmVyLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGFnZ3JlZ2F0aW9uLCBkZWZpbmVVSTVDbGFzcyB9IGZyb20gXCJzYXAvZmUvY29yZS9oZWxwZXJzL0NsYXNzU3VwcG9ydFwiO1xuaW1wb3J0IEZsZXhCb3ggZnJvbSBcInNhcC9tL0ZsZXhCb3hcIjtcbmltcG9ydCBIZWFkZXJDb250YWluZXIgZnJvbSBcInNhcC9tL0hlYWRlckNvbnRhaW5lclwiO1xuaW1wb3J0IHR5cGUgQ29udHJvbCBmcm9tIFwic2FwL3VpL2NvcmUvQ29udHJvbFwiO1xuaW1wb3J0IGNvcmVMaWJyYWJyeSBmcm9tIFwic2FwL3VpL2NvcmUvbGlicmFyeVwiO1xuaW1wb3J0IHsgc3lzdGVtIH0gZnJvbSBcInNhcC91aS9EZXZpY2VcIjtcbmltcG9ydCBJRmlsdGVyQ29udGFpbmVyIGZyb20gXCJzYXAvdWkvbWRjL2ZpbHRlcmJhci9JRmlsdGVyQ29udGFpbmVyXCI7XG4vKipcbiAqIENvbnN0cnVjdG9yIGZvciBhIG5ldyBWaXN1YWwgRmlsdGVyIENvbnRhaW5lci5cbiAqIFVzZWQgZm9yIHZpc3VhbCBmaWx0ZXJzLlxuICpcbiAqIEBleHRlbmRzIHNhcC51aS5tZGMuZmlsdGVyYmFyLklGaWx0ZXJDb250YWluZXJcbiAqIEBjbGFzc1xuICogQHByaXZhdGVcbiAqIEBhbGlhcyBzYXAuZmUuY29yZS5jb250cm9scy5maWx0ZXJiYXIuVmlzdWFsRmlsdGVyQ29udGFpbmVyXG4gKi9cbkBkZWZpbmVVSTVDbGFzcyhcInNhcC5mZS5jb3JlLmNvbnRyb2xzLmZpbHRlcmJhci5WaXN1YWxGaWx0ZXJDb250YWluZXJcIilcbmNsYXNzIFZpc3VhbEZpbHRlckNvbnRhaW5lciBleHRlbmRzIElGaWx0ZXJDb250YWluZXIge1xuXHRAYWdncmVnYXRpb24oe1xuXHRcdHR5cGU6IFwic2FwLnVpLmNvcmUuQ29udHJvbFwiLFxuXHRcdG11bHRpcGxlOiBmYWxzZSxcblx0XHR2aXNpYmlsaXR5OiBcImhpZGRlblwiXG5cdH0pXG5cdC8qKlxuXHQgKiBJbnRlcm5hbCBoaWRkZW4gYWdncmVnYXRpb24gdG8gaG9sZCB0aGUgaW5uZXIgbGF5b3V0LlxuXHQgKi9cblx0X2xheW91dCE6IENvbnRyb2w7XG5cblx0aW5pdCguLi5hcmdzOiBhbnlbXSkge1xuXHRcdHN1cGVyLmluaXQoLi4uYXJncyk7XG5cdFx0Ly92YXIgb1JCID0gc2FwLnVpLmdldENvcmUoKS5nZXRMaWJyYXJ5UmVzb3VyY2VCdW5kbGUoXCJzYXAudWkubWRjXCIpO1xuXHRcdGNvbnN0IHNEZXZpY2VTeXN0ZW0gPSBzeXN0ZW0sXG5cdFx0XHRPcmllbnRhdGlvbiA9IGNvcmVMaWJyYWJyeS5PcmllbnRhdGlvbixcblx0XHRcdHNPcmllbnRhdGlvbiA9IHNEZXZpY2VTeXN0ZW0ucGhvbmUgPyBPcmllbnRhdGlvbi5WZXJ0aWNhbCA6IHVuZGVmaW5lZCxcblx0XHRcdHNEaXJlY3Rpb24gPSBzRGV2aWNlU3lzdGVtLnBob25lID8gXCJDb2x1bW5SZXZlcnNlXCIgOiBcIkNvbHVtblwiO1xuXG5cdFx0dGhpcy5vSGVhZGVyQ29udGFpbmVyID0gbmV3IEhlYWRlckNvbnRhaW5lcih7XG5cdFx0XHRvcmllbnRhdGlvbjogc09yaWVudGF0aW9uXG5cdFx0fSk7XG5cdFx0dGhpcy5vQnV0dG9uRmxleEJveCA9IG5ldyBGbGV4Qm94KHtcblx0XHRcdGFsaWduSXRlbXM6IFwiRW5kXCIsXG5cdFx0XHRqdXN0aWZ5Q29udGVudDogXCJFbmRcIlxuXHRcdH0pO1xuXG5cdFx0dGhpcy5vTGF5b3V0ID0gbmV3IEZsZXhCb3goe1xuXHRcdFx0ZGlyZWN0aW9uOiBzRGlyZWN0aW9uLCAvLyBEaXJlY3Rpb24gaXMgQ29sdW1uIFJldmVyc2UgZm9yIFBob25lXG5cdFx0XHRpdGVtczogW3RoaXMub0hlYWRlckNvbnRhaW5lciwgdGhpcy5vQnV0dG9uRmxleEJveF1cblx0XHR9KTtcblxuXHRcdHRoaXMuYUFsbEZpbHRlckZpZWxkcyA9IFtdO1xuXHRcdHRoaXMuYVZpc3VhbEZpbHRlckZpZWxkcyA9IHt9O1xuXHR9XG5cdGV4aXQoLi4uYXJnczogYW55W10pIHtcblx0XHQvLyBkZXN0cm95IGxheW91dFxuXHRcdHN1cGVyLmV4aXQoLi4uYXJncyk7XG5cdFx0Ly8gZGVzdHJveSBhbGwgZmlsdGVyIGZpZWxkcyB3aGljaCBhcmUgbm90IGluIHRoZSBsYXlvdXRcblx0XHRjb25zdCBhQWxsRmlsdGVyRmllbGRzID0gdGhpcy5nZXRBbGxGaWx0ZXJGaWVsZHMoKTtcblx0XHRhQWxsRmlsdGVyRmllbGRzLmZvckVhY2goZnVuY3Rpb24gKG9GaWx0ZXJGaWVsZDogYW55KSB7XG5cdFx0XHRvRmlsdGVyRmllbGQuZGVzdHJveSgpO1xuXHRcdH0pO1xuXHRcdHRoaXMub0hlYWRlckNvbnRhaW5lciA9IG51bGw7XG5cdFx0dGhpcy5vQnV0dG9uRmxleEJveCA9IG51bGw7XG5cdFx0dGhpcy5hQWxsRmlsdGVyRmllbGRzID0gW107XG5cdH1cblx0aW5zZXJ0RmlsdGVyRmllbGQob0NvbnRyb2w6IGFueSwgaUluZGV4OiBhbnkpIHtcblx0XHRjb25zdCBvRmlsdGVySXRlbUxheW91dEV2ZW50RGVsZWdhdGUgPSB7XG5cdFx0XHRvbkJlZm9yZVJlbmRlcmluZzogZnVuY3Rpb24gKCkge1xuXHRcdFx0XHQvLyB2aXN1YWwgZmlsdGVyIGRvZXMgbm90IG5lZWQgdG8gcmVuZGVyIGEgbGFiZWxcblx0XHRcdFx0Ly8gaGVuY2Ugb3ZlcnJpZGUgdGhlIGdldENvbnRlbnQgb2YgdGhlIEZpbHRlckl0ZW1MYXlvdXRcblx0XHRcdFx0Ly8gYW5kIHN0b3JlIHRoZSBvcmlnaW5hbCBnZXRDb250ZW50IGZvciBsYXRlciB1c2FnZSBpbiB0aGUgY29tcGFjdCBmaWx0ZXJzXG5cdFx0XHRcdGlmICghb0NvbnRyb2wuX2ZuR2V0Q29udGVudENvcHkpIHtcblx0XHRcdFx0XHRvQ29udHJvbC5fZm5HZXRDb250ZW50Q29weSA9IG9Db250cm9sLmdldENvbnRlbnQ7XG5cdFx0XHRcdH1cblx0XHRcdFx0Ly8gb3ZlcnJpZGUgZ2V0Q29udGVudCBvZiBGaWx0ZXJJdGVtTGF5b3V0XG5cdFx0XHRcdC8vIHRvIGFkZCBvbmx5IGZpbHRlckZpZWxkIGFuZCBub3QgbGFiZWxcblx0XHRcdFx0b0NvbnRyb2wuZ2V0Q29udGVudCA9IGZ1bmN0aW9uICgpIHtcblx0XHRcdFx0XHRjb25zdCBhQ29udGVudCA9IFtdO1xuXHRcdFx0XHRcdGFDb250ZW50LnB1c2gob0NvbnRyb2wuX29GaWx0ZXJGaWVsZCk7XG5cdFx0XHRcdFx0cmV0dXJuIGFDb250ZW50O1xuXHRcdFx0XHR9O1xuXHRcdFx0XHRvQ29udHJvbC5yZW1vdmVFdmVudERlbGVnYXRlKG9GaWx0ZXJJdGVtTGF5b3V0RXZlbnREZWxlZ2F0ZSk7XG5cdFx0XHR9XG5cdFx0fTtcblx0XHRvQ29udHJvbC5hZGRFdmVudERlbGVnYXRlKG9GaWx0ZXJJdGVtTGF5b3V0RXZlbnREZWxlZ2F0ZSk7XG5cblx0XHQvLyBTZXR0aW5nIFZGIGNvbnRyb2wgZm9yIHRoZSBGaWx0ZXJmaWVsZC5cblx0XHRjb25zdCBvVmlzdWFsRmlsdGVycyA9IHRoaXMuYVZpc3VhbEZpbHRlckZpZWxkcztcblx0XHRvQ29udHJvbC5nZXRDb250ZW50KCkuc29tZSgob0lubmVyQ29udHJvbDogYW55KSA9PiB7XG5cdFx0XHRjb25zdCBzRkZJZCA9IG9Jbm5lckNvbnRyb2wuZ2V0SWQoKTtcblx0XHRcdGlmIChvVmlzdWFsRmlsdGVyc1tzRkZJZF0gJiYgb0lubmVyQ29udHJvbC5pc0EoXCJzYXAudWkubWRjLkZpbHRlckZpZWxkXCIpKSB7XG5cdFx0XHRcdG9Jbm5lckNvbnRyb2wuc2V0Q29udGVudChvVmlzdWFsRmlsdGVyc1tzRkZJZF0pO1xuXHRcdFx0XHR0aGlzLm9IZWFkZXJDb250YWluZXIuaW5zZXJ0Q29udGVudChvQ29udHJvbCwgaUluZGV4KTtcblx0XHRcdH1cblx0XHR9KTtcblx0fVxuXHRyZW1vdmVGaWx0ZXJGaWVsZChvQ29udHJvbDogYW55KSB7XG5cdFx0dGhpcy5vSGVhZGVyQ29udGFpbmVyLnJlbW92ZUNvbnRlbnQob0NvbnRyb2wpO1xuXHR9XG5cdHJlbW92ZUFsbEZpbHRlckZpZWxkcygpIHtcblx0XHR0aGlzLmFBbGxGaWx0ZXJGaWVsZHMgPSBbXTtcblx0XHR0aGlzLmFWaXN1YWxGaWx0ZXJGaWVsZHMgPSB7fTtcblx0XHR0aGlzLm9IZWFkZXJDb250YWluZXIucmVtb3ZlQWxsQ29udGVudCgpO1xuXHR9XG5cdGdldEZpbHRlckZpZWxkcygpIHtcblx0XHRyZXR1cm4gdGhpcy5vSGVhZGVyQ29udGFpbmVyLmdldENvbnRlbnQoKTtcblx0fVxuXHRhZGRCdXR0b24ob0NvbnRyb2w6IGFueSkge1xuXHRcdHRoaXMub0J1dHRvbkZsZXhCb3guaW5zZXJ0SXRlbShvQ29udHJvbCk7XG5cdH1cblx0Z2V0QWxsQnV0dG9ucygpIHtcblx0XHRyZXR1cm4gdGhpcy5vQnV0dG9uRmxleEJveC5nZXRJdGVtcygpLnJldmVyc2UoKTtcblx0fVxuXHRyZW1vdmVCdXR0b24ob0NvbnRyb2w6IGFueSkge1xuXHRcdHRoaXMub0J1dHRvbkZsZXhCb3gucmVtb3ZlSXRlbShvQ29udHJvbCk7XG5cdH1cblx0Z2V0QWxsRmlsdGVyRmllbGRzKCkge1xuXHRcdHJldHVybiB0aGlzLmFBbGxGaWx0ZXJGaWVsZHMuc2xpY2UoKTtcblx0fVxuXHRzZXRBbGxGaWx0ZXJGaWVsZHMoYUZpbHRlckZpZWxkczogYW55LCBhVmlzdWFsRmlsdGVyRmllbGRzOiBhbnkpIHtcblx0XHR0aGlzLmFBbGxGaWx0ZXJGaWVsZHMgPSBhRmlsdGVyRmllbGRzO1xuXHRcdHRoaXMuYVZpc3VhbEZpbHRlckZpZWxkcyA9IGFWaXN1YWxGaWx0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
|
|
@@ -7,7 +7,6 @@ sap.ui.define(["sap/base/Log", "sap/fe/core/templating/FilterHelper", "sap/ui/co
|
|
|
7
7
|
|
|
8
8
|
var getTypeCompliantValue = FilterHelper.getTypeCompliantValue;
|
|
9
9
|
var getRangeProperty = FilterHelper.getRangeProperty;
|
|
10
|
-
|
|
11
10
|
var VisualFilterUtils = {
|
|
12
11
|
/**
|
|
13
12
|
* Applies the median scale to the chart data.
|
|
@@ -22,13 +21,10 @@ sap.ui.define(["sap/base/Log", "sap/fe/core/templating/FilterHelper", "sap/ui/co
|
|
|
22
21
|
var sMeasure = oInteractiveChart.data("measure");
|
|
23
22
|
var oInternalModelContext = oView.getBindingContext("internal");
|
|
24
23
|
var aAggregation = oInteractiveChart.getPoints && oInteractiveChart.getPoints() || oInteractiveChart.getBars && oInteractiveChart.getBars() || oInteractiveChart.getSegments && oInteractiveChart.getSegments();
|
|
25
|
-
|
|
26
24
|
for (var i = 0; i < aAggregation.length; i++) {
|
|
27
25
|
oData.push(aAggregation[i].getBindingContext().getObject());
|
|
28
26
|
}
|
|
29
|
-
|
|
30
27
|
var scaleFactor = this._getMedianScaleFactor(oData, sMeasure);
|
|
31
|
-
|
|
32
28
|
if (scaleFactor && scaleFactor.iShortRefNumber && scaleFactor.scale) {
|
|
33
29
|
oInternalModelContext.setProperty("scalefactor/".concat(sInfoPath), scaleFactor.scale);
|
|
34
30
|
oInternalModelContext.setProperty("scalefactorNumber/".concat(sInfoPath), scaleFactor.iShortRefNumber);
|
|
@@ -38,14 +34,12 @@ sap.ui.define(["sap/base/Log", "sap/fe/core/templating/FilterHelper", "sap/ui/co
|
|
|
38
34
|
var oScaleTitle = oView.byId("".concat(sVFId, "::ScaleUoMTitle"));
|
|
39
35
|
var oMeasureDimensionTitle = oView.byId("".concat(sVFId, "::MeasureDimensionTitle"));
|
|
40
36
|
var sText = oScaleTitle.getText();
|
|
41
|
-
|
|
42
37
|
if (sText === " | ") {
|
|
43
38
|
oScaleTitle.setVisible(false);
|
|
44
39
|
oMeasureDimensionTitle.setTooltip(oMeasureDimensionTitle.getText());
|
|
45
40
|
}
|
|
46
41
|
}
|
|
47
42
|
},
|
|
48
|
-
|
|
49
43
|
/**
|
|
50
44
|
* Returns the median scale factor.
|
|
51
45
|
*
|
|
@@ -60,58 +54,51 @@ sap.ui.define(["sap/base/Log", "sap/fe/core/templating/FilterHelper", "sap/ui/co
|
|
|
60
54
|
if (Number(a[sMeasureField]) < Number(b[sMeasureField])) {
|
|
61
55
|
return -1;
|
|
62
56
|
}
|
|
63
|
-
|
|
64
57
|
if (Number(a[sMeasureField]) > Number(b[sMeasureField])) {
|
|
65
58
|
return 1;
|
|
66
59
|
}
|
|
67
|
-
|
|
68
60
|
return 0;
|
|
69
61
|
});
|
|
70
|
-
|
|
71
62
|
if (oData.length > 0) {
|
|
72
63
|
// get median index
|
|
73
64
|
var iMid = oData.length / 2,
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
65
|
+
// get mid of array
|
|
66
|
+
// if iMid is whole number, array length is even, calculate median
|
|
67
|
+
// if iMid is not whole number, array length is odd, take median as iMid - 1
|
|
68
|
+
iMedian = iMid % 1 === 0 ? (parseFloat(oData[iMid - 1][sMeasureField]) + parseFloat(oData[iMid][sMeasureField])) / 2 : parseFloat(oData[Math.floor(iMid)][sMeasureField]),
|
|
69
|
+
// get scale factor on median
|
|
70
|
+
val = iMedian;
|
|
81
71
|
for (i = 0; i < 14; i++) {
|
|
82
72
|
scaleFactor = Math.pow(10, i);
|
|
83
|
-
|
|
84
73
|
if (Math.round(Math.abs(val) / scaleFactor) < 10) {
|
|
85
74
|
break;
|
|
86
75
|
}
|
|
87
76
|
}
|
|
88
77
|
}
|
|
89
|
-
|
|
90
78
|
var fixedInteger = NumberFormat.getIntegerInstance({
|
|
91
79
|
style: "short",
|
|
92
80
|
showScale: false,
|
|
93
81
|
shortRefNumber: scaleFactor
|
|
94
|
-
});
|
|
82
|
+
});
|
|
95
83
|
|
|
84
|
+
// apply scale factor to other values and check
|
|
96
85
|
for (i = 0; i < oData.length; i++) {
|
|
97
86
|
var aData = oData[i],
|
|
98
|
-
|
|
99
|
-
|
|
87
|
+
sScaledValue = fixedInteger.format(aData[sMeasureField]),
|
|
88
|
+
aScaledValueParts = sScaledValue.split(".");
|
|
89
|
+
// if scaled value has only 0 before decimal or 0 after decimal (example: 0.02)
|
|
100
90
|
// then ignore this scale factor else proceed with this scale factor
|
|
101
91
|
// if scaled value divided by 1000 is >= 1000 then also ignore scale factor
|
|
102
|
-
|
|
103
92
|
if (!aScaledValueParts[1] && parseInt(aScaledValueParts[0], 10) === 0 || aScaledValueParts[1] && parseInt(aScaledValueParts[0], 10) === 0 && aScaledValueParts[1].indexOf("0") === 0 || sScaledValue / 1000 >= 1000) {
|
|
104
93
|
scaleFactor = undefined;
|
|
105
94
|
break;
|
|
106
95
|
}
|
|
107
96
|
}
|
|
108
|
-
|
|
109
97
|
return {
|
|
110
98
|
iShortRefNumber: scaleFactor,
|
|
111
99
|
scale: scaleFactor ? fixedInteger.getScale() : ""
|
|
112
100
|
};
|
|
113
101
|
},
|
|
114
|
-
|
|
115
102
|
/**
|
|
116
103
|
* Returns the formatted number according to the rules of VisualChartFilters.
|
|
117
104
|
*
|
|
@@ -124,12 +111,12 @@ sap.ui.define(["sap/base/Log", "sap/fe/core/templating/FilterHelper", "sap/ui/co
|
|
|
124
111
|
getFormattedNumber: function (value, scaleFactor, numberOfFractionalDigits, currency) {
|
|
125
112
|
var fixedInteger;
|
|
126
113
|
value = typeof value === "string" ? Number(value.replace(/,/g, "")) : value;
|
|
127
|
-
|
|
128
114
|
if (currency) {
|
|
129
115
|
var currencyFormat = NumberFormat.getCurrencyInstance({
|
|
130
116
|
showMeasure: false
|
|
131
117
|
});
|
|
132
|
-
return currencyFormat.format(parseFloat(value), currency);
|
|
118
|
+
return currencyFormat.format(parseFloat(value), currency);
|
|
119
|
+
// parseFloat(value) is required otherwise -ve value are wrongly rounded off
|
|
133
120
|
// Example: "-1.9" rounds off to -1 instead of -2. however -1.9 rounds off to -2
|
|
134
121
|
} else if (scaleFactor) {
|
|
135
122
|
fixedInteger = NumberFormat.getFloatInstance({
|
|
@@ -146,7 +133,6 @@ sap.ui.define(["sap/base/Log", "sap/fe/core/templating/FilterHelper", "sap/ui/co
|
|
|
146
133
|
return fixedInteger.format(parseFloat(value));
|
|
147
134
|
}
|
|
148
135
|
},
|
|
149
|
-
|
|
150
136
|
/**
|
|
151
137
|
* Applies the UOM to the title of the visual filter control.
|
|
152
138
|
*
|
|
@@ -159,25 +145,21 @@ sap.ui.define(["sap/base/Log", "sap/fe/core/templating/FilterHelper", "sap/ui/co
|
|
|
159
145
|
var vUOM = oInteractiveChart.data("uom");
|
|
160
146
|
var sUOM;
|
|
161
147
|
var sCurrency;
|
|
162
|
-
|
|
163
148
|
if (vUOM && vUOM["ISOCurrency"]) {
|
|
164
149
|
sUOM = vUOM["ISOCurrency"];
|
|
165
150
|
sCurrency = sUOM.$Path ? oContextData[sUOM.$Path] : sUOM;
|
|
166
151
|
} else if (vUOM && vUOM["Unit"]) {
|
|
167
152
|
sUOM = vUOM["Unit"];
|
|
168
153
|
}
|
|
169
|
-
|
|
170
154
|
if (sUOM) {
|
|
171
155
|
var sUOMValue = sUOM.$Path ? oContextData[sUOM.$Path] : sUOM;
|
|
172
156
|
var oInternalModelContext = oView.getBindingContext("internal");
|
|
173
157
|
oInternalModelContext.setProperty("uom/".concat(sInfoPath), sUOMValue);
|
|
174
|
-
|
|
175
158
|
if (sCurrency) {
|
|
176
159
|
oInternalModelContext.setProperty("currency/".concat(sInfoPath), sUOMValue);
|
|
177
160
|
}
|
|
178
161
|
}
|
|
179
162
|
},
|
|
180
|
-
|
|
181
163
|
/**
|
|
182
164
|
* Updates the scale factor in the title of the visual filter.
|
|
183
165
|
*
|
|
@@ -199,7 +181,6 @@ sap.ui.define(["sap/base/Log", "sap/fe/core/templating/FilterHelper", "sap/ui/co
|
|
|
199
181
|
oInternalModelContext.setProperty("scalefactor/".concat(sInfoPath), fixedInteger.getScale());
|
|
200
182
|
}
|
|
201
183
|
},
|
|
202
|
-
|
|
203
184
|
/**
|
|
204
185
|
*
|
|
205
186
|
* @param s18nMessageTitle Text of the error message title.
|
|
@@ -211,12 +192,11 @@ sap.ui.define(["sap/base/Log", "sap/fe/core/templating/FilterHelper", "sap/ui/co
|
|
|
211
192
|
var oInternalModelContext = oView.getBindingContext("internal");
|
|
212
193
|
oInternalModelContext.setProperty(sInfoPath, {});
|
|
213
194
|
oInternalModelContext.setProperty(sInfoPath, {
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
195
|
+
errorMessageTitle: s18nMessageTitle,
|
|
196
|
+
errorMessage: s18nMessage,
|
|
197
|
+
showError: true
|
|
217
198
|
});
|
|
218
199
|
},
|
|
219
|
-
|
|
220
200
|
/**
|
|
221
201
|
* Checks if multiple units are present.
|
|
222
202
|
*
|
|
@@ -226,19 +206,16 @@ sap.ui.define(["sap/base/Log", "sap/fe/core/templating/FilterHelper", "sap/ui/co
|
|
|
226
206
|
*/
|
|
227
207
|
checkMulitUnit: function (oContexts, sUnitfield) {
|
|
228
208
|
var aData = [];
|
|
229
|
-
|
|
230
209
|
if (oContexts && sUnitfield) {
|
|
231
210
|
for (var i = 0; i < oContexts.length; i++) {
|
|
232
211
|
var aContextData = oContexts[i] && oContexts[i].getObject();
|
|
233
212
|
aData.push(aContextData[sUnitfield]);
|
|
234
213
|
}
|
|
235
214
|
}
|
|
236
|
-
|
|
237
215
|
return !!aData.reduce(function (data, key) {
|
|
238
216
|
return data === key ? data : NaN;
|
|
239
217
|
});
|
|
240
218
|
},
|
|
241
|
-
|
|
242
219
|
/**
|
|
243
220
|
* Sets an error message if multiple UOM are present.
|
|
244
221
|
*
|
|
@@ -254,7 +231,6 @@ sap.ui.define(["sap/base/Log", "sap/fe/core/templating/FilterHelper", "sap/ui/co
|
|
|
254
231
|
var sIsUnit = vUOM && vUOM["Unit"] && vUOM["Unit"].$Path;
|
|
255
232
|
var sUnitfield = sIsCurrency || sIsUnit;
|
|
256
233
|
var s18nMessageTitle, s18nMessage;
|
|
257
|
-
|
|
258
234
|
if (sUnitfield) {
|
|
259
235
|
if (!this.checkMulitUnit(oData, sUnitfield)) {
|
|
260
236
|
if (sIsCurrency) {
|
|
@@ -271,7 +247,6 @@ sap.ui.define(["sap/base/Log", "sap/fe/core/templating/FilterHelper", "sap/ui/co
|
|
|
271
247
|
}
|
|
272
248
|
}
|
|
273
249
|
},
|
|
274
|
-
|
|
275
250
|
/**
|
|
276
251
|
* Sets an error message if response data is empty.
|
|
277
252
|
*
|
|
@@ -289,12 +264,10 @@ sap.ui.define(["sap/base/Log", "sap/fe/core/templating/FilterHelper", "sap/ui/co
|
|
|
289
264
|
Object.keys(oFilterConditions).forEach(function (sKey) {
|
|
290
265
|
var aConvertedConditions = [];
|
|
291
266
|
var aConditions = oFilterConditions[sKey];
|
|
292
|
-
|
|
293
267
|
for (var i = 0; i < aConditions.length; i++) {
|
|
294
268
|
var values = aConditions[i].value2 ? [aConditions[i].value1, aConditions[i].value2] : [aConditions[i].value1];
|
|
295
269
|
aConvertedConditions.push(Condition.createCondition(aConditions[i].operator, values, null, null, "Validated"));
|
|
296
270
|
}
|
|
297
|
-
|
|
298
271
|
if (aConvertedConditions.length) {
|
|
299
272
|
oConvertedConditions[sKey] = aConvertedConditions;
|
|
300
273
|
}
|
|
@@ -303,7 +276,6 @@ sap.ui.define(["sap/base/Log", "sap/fe/core/templating/FilterHelper", "sap/ui/co
|
|
|
303
276
|
},
|
|
304
277
|
getCustomConditions: function (Range, oValidProperty, sPropertyName) {
|
|
305
278
|
var value1, value2;
|
|
306
|
-
|
|
307
279
|
if (oValidProperty.$Type === "Edm.DateTimeOffset") {
|
|
308
280
|
value1 = this._parseDateTime(getTypeCompliantValue(this._formatDateTime(Range.Low), oValidProperty.$Type));
|
|
309
281
|
value2 = Range.High ? this._parseDateTime(getTypeCompliantValue(this._formatDateTime(Range.High), oValidProperty.$Type)) : null;
|
|
@@ -311,7 +283,6 @@ sap.ui.define(["sap/base/Log", "sap/fe/core/templating/FilterHelper", "sap/ui/co
|
|
|
311
283
|
value1 = Range.Low;
|
|
312
284
|
value2 = Range.High ? Range.High : null;
|
|
313
285
|
}
|
|
314
|
-
|
|
315
286
|
return {
|
|
316
287
|
operator: Range.Option ? getRangeProperty(Range.Option.$EnumMember || Range.Option) : null,
|
|
317
288
|
value1: value1,
|
|
@@ -336,4 +307,4 @@ sap.ui.define(["sap/base/Log", "sap/fe/core/templating/FilterHelper", "sap/ui/co
|
|
|
336
307
|
};
|
|
337
308
|
return VisualFilterUtils;
|
|
338
309
|
}, false);
|
|
339
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJWaXN1YWxGaWx0ZXJVdGlscyIsImFwcGx5TWVkaWFuU2NhbGVUb0NoYXJ0RGF0YSIsIm9JbnRlcmFjdGl2ZUNoYXJ0Iiwib1ZpZXciLCJzVkZJZCIsInNJbmZvUGF0aCIsIm9EYXRhIiwic01lYXN1cmUiLCJkYXRhIiwib0ludGVybmFsTW9kZWxDb250ZXh0IiwiZ2V0QmluZGluZ0NvbnRleHQiLCJhQWdncmVnYXRpb24iLCJnZXRQb2ludHMiLCJnZXRCYXJzIiwiZ2V0U2VnbWVudHMiLCJpIiwibGVuZ3RoIiwicHVzaCIsImdldE9iamVjdCIsInNjYWxlRmFjdG9yIiwiX2dldE1lZGlhblNjYWxlRmFjdG9yIiwiaVNob3J0UmVmTnVtYmVyIiwic2NhbGUiLCJzZXRQcm9wZXJ0eSIsIm9TY2FsZVRpdGxlIiwiYnlJZCIsIm9NZWFzdXJlRGltZW5zaW9uVGl0bGUiLCJzVGV4dCIsImdldFRleHQiLCJzZXRWaXNpYmxlIiwic2V0VG9vbHRpcCIsInNNZWFzdXJlRmllbGQiLCJzb3J0IiwiYSIsImIiLCJOdW1iZXIiLCJpTWlkIiwiaU1lZGlhbiIsInBhcnNlRmxvYXQiLCJNYXRoIiwiZmxvb3IiLCJ2YWwiLCJwb3ciLCJyb3VuZCIsImFicyIsImZpeGVkSW50ZWdlciIsIk51bWJlckZvcm1hdCIsImdldEludGVnZXJJbnN0YW5jZSIsInN0eWxlIiwic2hvd1NjYWxlIiwic2hvcnRSZWZOdW1iZXIiLCJhRGF0YSIsInNTY2FsZWRWYWx1ZSIsImZvcm1hdCIsImFTY2FsZWRWYWx1ZVBhcnRzIiwic3BsaXQiLCJwYXJzZUludCIsImluZGV4T2YiLCJ1bmRlZmluZWQiLCJnZXRTY2FsZSIsImdldEZvcm1hdHRlZE51bWJlciIsInZhbHVlIiwibnVtYmVyT2ZGcmFjdGlvbmFsRGlnaXRzIiwiY3VycmVuY3kiLCJyZXBsYWNlIiwiY3VycmVuY3lGb3JtYXQiLCJnZXRDdXJyZW5jeUluc3RhbmNlIiwic2hvd01lYXN1cmUiLCJnZXRGbG9hdEluc3RhbmNlIiwic2hvcnREZWNpbWFscyIsImRlY2ltYWxzIiwiYXBwbHlVT01Ub1RpdGxlIiwib0NvbnRleHREYXRhIiwidlVPTSIsInNVT00iLCJzQ3VycmVuY3kiLCIkUGF0aCIsInNVT01WYWx1ZSIsInVwZGF0ZUNoYXJ0U2NhbGVGYWN0b3JUaXRsZSIsImFwcGx5RXJyb3JNZXNzYWdlQW5kVGl0bGUiLCJzMThuTWVzc2FnZVRpdGxlIiwiczE4bk1lc3NhZ2UiLCJjaGVja011bGl0VW5pdCIsIm9Db250ZXh0cyIsInNVbml0ZmllbGQiLCJhQ29udGV4dERhdGEiLCJyZWR1Y2UiLCJrZXkiLCJOYU4iLCJzZXRNdWx0aVVPTU1lc3NhZ2UiLCJvUmVzb3VyY2VCdW5kbGUiLCJzSXNDdXJyZW5jeSIsInNJc1VuaXQiLCJMb2ciLCJ3YXJuaW5nIiwic2V0Tm9EYXRhTWVzc2FnZSIsImNvbnZlcnRGaWx0ZXJDb25kaW9ucyIsIm9GaWx0ZXJDb25kaXRpb25zIiwib0NvbnZlcnRlZENvbmRpdGlvbnMiLCJPYmplY3QiLCJrZXlzIiwiZm9yRWFjaCIsInNLZXkiLCJhQ29udmVydGVkQ29uZGl0aW9ucyIsImFDb25kaXRpb25zIiwidmFsdWVzIiwidmFsdWUyIiwidmFsdWUxIiwiQ29uZGl0aW9uIiwiY3JlYXRlQ29uZGl0aW9uIiwib3BlcmF0b3IiLCJnZXRDdXN0b21Db25kaXRpb25zIiwiUmFuZ2UiLCJvVmFsaWRQcm9wZXJ0eSIsInNQcm9wZXJ0eU5hbWUiLCIkVHlwZSIsIl9wYXJzZURhdGVUaW1lIiwiZ2V0VHlwZUNvbXBsaWFudFZhbHVlIiwiX2Zvcm1hdERhdGVUaW1lIiwiTG93IiwiSGlnaCIsIk9wdGlvbiIsImdldFJhbmdlUHJvcGVydHkiLCIkRW51bU1lbWJlciIsInBhdGgiLCJzVmFsdWUiLCJfZ2V0RGF0ZVRpbWVUeXBlSW5zdGFuY2UiLCJwYXJzZVZhbHVlIiwiZm9ybWF0VmFsdWUiLCJEYXRlVGltZU9mZnNldCIsInBhdHRlcm4iLCJjYWxlbmRhclR5cGUiLCJWNCJdLCJzb3VyY2VSb290IjoiLiIsInNvdXJjZXMiOlsiVmlzdWFsRmlsdGVyVXRpbHMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgUmVzb3VyY2VCdW5kbGUgZnJvbSBcInNhcC9iYXNlL2kxOG4vUmVzb3VyY2VCdW5kbGVcIjtcbmltcG9ydCBMb2cgZnJvbSBcInNhcC9iYXNlL0xvZ1wiO1xuaW1wb3J0IHR5cGUgeyBJbnRlcm5hbE1vZGVsQ29udGV4dCB9IGZyb20gXCJzYXAvZmUvY29yZS9oZWxwZXJzL01vZGVsSGVscGVyXCI7XG5pbXBvcnQgeyBnZXRSYW5nZVByb3BlcnR5LCBnZXRUeXBlQ29tcGxpYW50VmFsdWUgfSBmcm9tIFwic2FwL2ZlL2NvcmUvdGVtcGxhdGluZy9GaWx0ZXJIZWxwZXJcIjtcbmltcG9ydCB0eXBlIFRpdGxlIGZyb20gXCJzYXAvbS9UaXRsZVwiO1xuaW1wb3J0IE51bWJlckZvcm1hdCBmcm9tIFwic2FwL3VpL2NvcmUvZm9ybWF0L051bWJlckZvcm1hdFwiO1xuaW1wb3J0IHR5cGUgVmlldyBmcm9tIFwic2FwL3VpL2NvcmUvbXZjL1ZpZXdcIjtcbmltcG9ydCBDb25kaXRpb24gZnJvbSBcInNhcC91aS9tZGMvY29uZGl0aW9uL0NvbmRpdGlvblwiO1xuaW1wb3J0IHR5cGUgQ29uZGl0aW9uVmFsaWRhdGVkIGZyb20gXCJzYXAvdWkvbWRjL2VudW0vQ29uZGl0aW9uVmFsaWRhdGVkXCI7XG5pbXBvcnQgdHlwZSBDb250ZXh0IGZyb20gXCJzYXAvdWkvbW9kZWwvQ29udGV4dFwiO1xuaW1wb3J0IERhdGVUaW1lT2Zmc2V0IGZyb20gXCJzYXAvdWkvbW9kZWwvb2RhdGEvdHlwZS9EYXRlVGltZU9mZnNldFwiO1xuXG5jb25zdCBWaXN1YWxGaWx0ZXJVdGlscyA9IHtcblx0LyoqXG5cdCAqIEFwcGxpZXMgdGhlIG1lZGlhbiBzY2FsZSB0byB0aGUgY2hhcnQgZGF0YS5cblx0ICpcblx0ICogQHBhcmFtIG9JbnRlcmFjdGl2ZUNoYXJ0IEludGVyYWN0aXZlQ2hhcnQgaW4gdGhlIFZpc3VhbEZpbHRlciBjb250cm9sXG5cdCAqIEBwYXJhbSBvVmlldyBJbnN0YW5jZSBvZiB0aGUgdmlld1xuXHQgKiBAcGFyYW0gc1ZGSWQgVmlzdWFsRmlsdGVyIGNvbnRyb2wgSURcblx0ICogQHBhcmFtIHNJbmZvUGF0aCBJbnRlcm5hbCBtb2RlbCBjb250ZXh0IHBhdGggdG8gc3RvcmUgaW5mby5cblx0ICovXG5cdGFwcGx5TWVkaWFuU2NhbGVUb0NoYXJ0RGF0YTogZnVuY3Rpb24gKG9JbnRlcmFjdGl2ZUNoYXJ0OiBhbnksIG9WaWV3OiBWaWV3LCBzVkZJZDogc3RyaW5nLCBzSW5mb1BhdGg6IHN0cmluZykge1xuXHRcdGNvbnN0IG9EYXRhID0gW107XG5cdFx0Y29uc3Qgc01lYXN1cmUgPSBvSW50ZXJhY3RpdmVDaGFydC5kYXRhKFwibWVhc3VyZVwiKTtcblx0XHRjb25zdCBvSW50ZXJuYWxNb2RlbENvbnRleHQgPSBvVmlldy5nZXRCaW5kaW5nQ29udGV4dChcImludGVybmFsXCIpIGFzIEludGVybmFsTW9kZWxDb250ZXh0O1xuXHRcdGNvbnN0IGFBZ2dyZWdhdGlvbiA9XG5cdFx0XHQob0ludGVyYWN0aXZlQ2hhcnQuZ2V0UG9pbnRzICYmIG9JbnRlcmFjdGl2ZUNoYXJ0LmdldFBvaW50cygpKSB8fFxuXHRcdFx0KG9JbnRlcmFjdGl2ZUNoYXJ0LmdldEJhcnMgJiYgb0ludGVyYWN0aXZlQ2hhcnQuZ2V0QmFycygpKSB8fFxuXHRcdFx0KG9JbnRlcmFjdGl2ZUNoYXJ0LmdldFNlZ21lbnRzICYmIG9JbnRlcmFjdGl2ZUNoYXJ0LmdldFNlZ21lbnRzKCkpO1xuXHRcdGZvciAobGV0IGkgPSAwOyBpIDwgYUFnZ3JlZ2F0aW9uLmxlbmd0aDsgaSsrKSB7XG5cdFx0XHRvRGF0YS5wdXNoKGFBZ2dyZWdhdGlvbltpXS5nZXRCaW5kaW5nQ29udGV4dCgpLmdldE9iamVjdCgpKTtcblx0XHR9XG5cdFx0Y29uc3Qgc2NhbGVGYWN0b3IgPSB0aGlzLl9nZXRNZWRpYW5TY2FsZUZhY3RvcihvRGF0YSwgc01lYXN1cmUpO1xuXHRcdGlmIChzY2FsZUZhY3RvciAmJiBzY2FsZUZhY3Rvci5pU2hvcnRSZWZOdW1iZXIgJiYgc2NhbGVGYWN0b3Iuc2NhbGUpIHtcblx0XHRcdG9JbnRlcm5hbE1vZGVsQ29udGV4dC5zZXRQcm9wZXJ0eShgc2NhbGVmYWN0b3IvJHtzSW5mb1BhdGh9YCwgc2NhbGVGYWN0b3Iuc2NhbGUpO1xuXHRcdFx0b0ludGVybmFsTW9kZWxDb250ZXh0LnNldFByb3BlcnR5KGBzY2FsZWZhY3Rvck51bWJlci8ke3NJbmZvUGF0aH1gLCBzY2FsZUZhY3Rvci5pU2hvcnRSZWZOdW1iZXIpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRvSW50ZXJuYWxNb2RlbENvbnRleHQuc2V0UHJvcGVydHkoYHNjYWxlZmFjdG9yLyR7c0luZm9QYXRofWAsIFwiXCIpO1xuXHRcdFx0b0ludGVybmFsTW9kZWxDb250ZXh0LnNldFByb3BlcnR5KGBzY2FsZWZhY3Rvck51bWJlci8ke3NJbmZvUGF0aH1gLCBcIlwiKTtcblx0XHRcdGNvbnN0IG9TY2FsZVRpdGxlID0gb1ZpZXcuYnlJZChgJHtzVkZJZH06OlNjYWxlVW9NVGl0bGVgKSBhcyBUaXRsZTtcblx0XHRcdGNvbnN0IG9NZWFzdXJlRGltZW5zaW9uVGl0bGUgPSBvVmlldy5ieUlkKGAke3NWRklkfTo6TWVhc3VyZURpbWVuc2lvblRpdGxlYCkgYXMgVGl0bGU7XG5cdFx0XHRjb25zdCBzVGV4dCA9IG9TY2FsZVRpdGxlLmdldFRleHQoKTtcblx0XHRcdGlmIChzVGV4dCA9PT0gXCIgfCBcIikge1xuXHRcdFx0XHRvU2NhbGVUaXRsZS5zZXRWaXNpYmxlKGZhbHNlKTtcblx0XHRcdFx0b01lYXN1cmVEaW1lbnNpb25UaXRsZS5zZXRUb29sdGlwKG9NZWFzdXJlRGltZW5zaW9uVGl0bGUuZ2V0VGV4dCgpKTtcblx0XHRcdH1cblx0XHR9XG5cdH0sXG5cblx0LyoqXG5cdCAqIFJldHVybnMgdGhlIG1lZGlhbiBzY2FsZSBmYWN0b3IuXG5cdCAqXG5cdCAqIEBwYXJhbSBvRGF0YSBWaXN1YWxGaWx0ZXIgZGF0YVxuXHQgKiBAcGFyYW0gc01lYXN1cmVGaWVsZCBQYXRoIG9mIHRoZSBtZWFzdXJlXG5cdCAqIEByZXR1cm5zIE9iamVjdCBjb250YWluaW5nIHNjYWxlIGFuZCBpU2hvcnRSZWZOdW1iZXJcblx0ICovXG5cdF9nZXRNZWRpYW5TY2FsZUZhY3RvcjogZnVuY3Rpb24gKG9EYXRhOiBhbnlbXSwgc01lYXN1cmVGaWVsZDogc3RyaW5nKSB7XG5cdFx0bGV0IGk7XG5cdFx0bGV0IHNjYWxlRmFjdG9yO1xuXHRcdG9EYXRhLnNvcnQoZnVuY3Rpb24gKGE6IGFueSwgYjogYW55KSB7XG5cdFx0XHRpZiAoTnVtYmVyKGFbc01lYXN1cmVGaWVsZF0pIDwgTnVtYmVyKGJbc01lYXN1cmVGaWVsZF0pKSB7XG5cdFx0XHRcdHJldHVybiAtMTtcblx0XHRcdH1cblx0XHRcdGlmIChOdW1iZXIoYVtzTWVhc3VyZUZpZWxkXSkgPiBOdW1iZXIoYltzTWVhc3VyZUZpZWxkXSkpIHtcblx0XHRcdFx0cmV0dXJuIDE7XG5cdFx0XHR9XG5cdFx0XHRyZXR1cm4gMDtcblx0XHR9KTtcblx0XHRpZiAob0RhdGEubGVuZ3RoID4gMCkge1xuXHRcdFx0Ly8gZ2V0IG1lZGlhbiBpbmRleFxuXHRcdFx0Y29uc3QgaU1pZCA9IG9EYXRhLmxlbmd0aCAvIDIsIC8vIGdldCBtaWQgb2YgYXJyYXlcblx0XHRcdFx0Ly8gaWYgaU1pZCBpcyB3aG9sZSBudW1iZXIsIGFycmF5IGxlbmd0aCBpcyBldmVuLCBjYWxjdWxhdGUgbWVkaWFuXG5cdFx0XHRcdC8vIGlmIGlNaWQgaXMgbm90IHdob2xlIG51bWJlciwgYXJyYXkgbGVuZ3RoIGlzIG9kZCwgdGFrZSBtZWRpYW4gYXMgaU1pZCAtIDFcblx0XHRcdFx0aU1lZGlhbiA9XG5cdFx0XHRcdFx0aU1pZCAlIDEgPT09IDBcblx0XHRcdFx0XHRcdD8gKHBhcnNlRmxvYXQob0RhdGFbaU1pZCAtIDFdW3NNZWFzdXJlRmllbGRdKSArIHBhcnNlRmxvYXQob0RhdGFbaU1pZF1bc01lYXN1cmVGaWVsZF0pKSAvIDJcblx0XHRcdFx0XHRcdDogcGFyc2VGbG9hdChvRGF0YVtNYXRoLmZsb29yKGlNaWQpXVtzTWVhc3VyZUZpZWxkXSksXG5cdFx0XHRcdC8vIGdldCBzY2FsZSBmYWN0b3Igb24gbWVkaWFuXG5cdFx0XHRcdHZhbCA9IGlNZWRpYW47XG5cdFx0XHRmb3IgKGkgPSAwOyBpIDwgMTQ7IGkrKykge1xuXHRcdFx0XHRzY2FsZUZhY3RvciA9IE1hdGgucG93KDEwLCBpKTtcblx0XHRcdFx0aWYgKE1hdGgucm91bmQoTWF0aC5hYnModmFsKSAvIHNjYWxlRmFjdG9yKSA8IDEwKSB7XG5cdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cblx0XHRjb25zdCBmaXhlZEludGVnZXIgPSBOdW1iZXJGb3JtYXQuZ2V0SW50ZWdlckluc3RhbmNlKHtcblx0XHRcdHN0eWxlOiBcInNob3J0XCIsXG5cdFx0XHRzaG93U2NhbGU6IGZhbHNlLFxuXHRcdFx0c2hvcnRSZWZOdW1iZXI6IHNjYWxlRmFjdG9yXG5cdFx0fSk7XG5cblx0XHQvLyBhcHBseSBzY2FsZSBmYWN0b3IgdG8gb3RoZXIgdmFsdWVzIGFuZCBjaGVja1xuXHRcdGZvciAoaSA9IDA7IGkgPCBvRGF0YS5sZW5ndGg7IGkrKykge1xuXHRcdFx0Y29uc3QgYURhdGEgPSBvRGF0YVtpXSxcblx0XHRcdFx0c1NjYWxlZFZhbHVlID0gZml4ZWRJbnRlZ2VyLmZvcm1hdChhRGF0YVtzTWVhc3VyZUZpZWxkXSkgYXMgYW55LFxuXHRcdFx0XHRhU2NhbGVkVmFsdWVQYXJ0cyA9IHNTY2FsZWRWYWx1ZS5zcGxpdChcIi5cIik7XG5cdFx0XHQvLyBpZiBzY2FsZWQgdmFsdWUgaGFzIG9ubHkgMCBiZWZvcmUgZGVjaW1hbCBvciAwIGFmdGVyIGRlY2ltYWwgKGV4YW1wbGU6IDAuMDIpXG5cdFx0XHQvLyB0aGVuIGlnbm9yZSB0aGlzIHNjYWxlIGZhY3RvciBlbHNlIHByb2NlZWQgd2l0aCB0aGlzIHNjYWxlIGZhY3RvclxuXHRcdFx0Ly8gaWYgc2NhbGVkIHZhbHVlIGRpdmlkZWQgYnkgMTAwMCBpcyA+PSAxMDAwIHRoZW4gYWxzbyBpZ25vcmUgc2NhbGUgZmFjdG9yXG5cdFx0XHRpZiAoXG5cdFx0XHRcdCghYVNjYWxlZFZhbHVlUGFydHNbMV0gJiYgcGFyc2VJbnQoYVNjYWxlZFZhbHVlUGFydHNbMF0sIDEwKSA9PT0gMCkgfHxcblx0XHRcdFx0KGFTY2FsZWRWYWx1ZVBhcnRzWzFdICYmIHBhcnNlSW50KGFTY2FsZWRWYWx1ZVBhcnRzWzBdLCAxMCkgPT09IDAgJiYgYVNjYWxlZFZhbHVlUGFydHNbMV0uaW5kZXhPZihcIjBcIikgPT09IDApIHx8XG5cdFx0XHRcdHNTY2FsZWRWYWx1ZSAvIDEwMDAgPj0gMTAwMFxuXHRcdFx0KSB7XG5cdFx0XHRcdHNjYWxlRmFjdG9yID0gdW5kZWZpbmVkO1xuXHRcdFx0XHRicmVhaztcblx0XHRcdH1cblx0XHR9XG5cdFx0cmV0dXJuIHtcblx0XHRcdGlTaG9ydFJlZk51bWJlcjogc2NhbGVGYWN0b3IsXG5cdFx0XHRzY2FsZTogc2NhbGVGYWN0b3IgPyAoZml4ZWRJbnRlZ2VyIGFzIGFueSkuZ2V0U2NhbGUoKSA6IFwiXCJcblx0XHR9O1xuXHR9LFxuXG5cdC8qKlxuXHQgKiBSZXR1cm5zIHRoZSBmb3JtYXR0ZWQgbnVtYmVyIGFjY29yZGluZyB0byB0aGUgcnVsZXMgb2YgVmlzdWFsQ2hhcnRGaWx0ZXJzLlxuXHQgKlxuXHQgKiBAcGFyYW0gdmFsdWUgVmFsdWUgd2hpY2ggbmVlZHMgdG8gYmUgZm9ybWF0dGVkXG5cdCAqIEBwYXJhbSBzY2FsZUZhY3RvciBTY2FsZUZhY3RvciB0byB3aGljaCB0aGUgdmFsdWUgbmVlZHMgdG8gYmUgc2NhbGVkXG5cdCAqIEBwYXJhbSBudW1iZXJPZkZyYWN0aW9uYWxEaWdpdHMgTnVtYmVyT2ZGcmFjdGlvbmFsRGlnaXRzIGRpZ2l0cyBpbiB0aGUgZGVjaW1hbHMgYWNjb3JkaW5nIHRvIHNjYWxlXG5cdCAqIEBwYXJhbSBjdXJyZW5jeSBDdXJyZW5jeSBjb2RlXG5cdCAqIEByZXR1cm5zIFRoZSBmb3JtYXR0ZWQgbnVtYmVyXG5cdCAqL1xuXHRnZXRGb3JtYXR0ZWROdW1iZXI6IGZ1bmN0aW9uICh2YWx1ZTogc3RyaW5nIHwgbnVtYmVyLCBzY2FsZUZhY3Rvcj86IG51bWJlciwgbnVtYmVyT2ZGcmFjdGlvbmFsRGlnaXRzPzogbnVtYmVyLCBjdXJyZW5jeT86IHN0cmluZykge1xuXHRcdGxldCBmaXhlZEludGVnZXI7XG5cdFx0dmFsdWUgPSB0eXBlb2YgdmFsdWUgPT09IFwic3RyaW5nXCIgPyBOdW1iZXIodmFsdWUucmVwbGFjZSgvLC9nLCBcIlwiKSkgOiB2YWx1ZTtcblxuXHRcdGlmIChjdXJyZW5jeSkge1xuXHRcdFx0Y29uc3QgY3VycmVuY3lGb3JtYXQgPSBOdW1iZXJGb3JtYXQuZ2V0Q3VycmVuY3lJbnN0YW5jZSh7XG5cdFx0XHRcdHNob3dNZWFzdXJlOiBmYWxzZVxuXHRcdFx0fSk7XG5cdFx0XHRyZXR1cm4gY3VycmVuY3lGb3JtYXQuZm9ybWF0KHBhcnNlRmxvYXQodmFsdWUgYXMgYW55KSwgY3VycmVuY3kpO1xuXHRcdFx0Ly8gcGFyc2VGbG9hdCh2YWx1ZSkgaXMgcmVxdWlyZWQgb3RoZXJ3aXNlIC12ZSB2YWx1ZSBhcmUgd3JvbmdseSByb3VuZGVkIG9mZlxuXHRcdFx0Ly8gRXhhbXBsZTogXCItMS45XCIgcm91bmRzIG9mZiB0byAtMSBpbnN0ZWFkIG9mIC0yLiBob3dldmVyIC0xLjkgcm91bmRzIG9mZiB0byAtMlxuXHRcdH0gZWxzZSBpZiAoc2NhbGVGYWN0b3IpIHtcblx0XHRcdGZpeGVkSW50ZWdlciA9IE51bWJlckZvcm1hdC5nZXRGbG9hdEluc3RhbmNlKHtcblx0XHRcdFx0c3R5bGU6IFwic2hvcnRcIixcblx0XHRcdFx0c2hvd1NjYWxlOiBmYWxzZSxcblx0XHRcdFx0c2hvcnRSZWZOdW1iZXI6IHNjYWxlRmFjdG9yLFxuXHRcdFx0XHRzaG9ydERlY2ltYWxzOiBudW1iZXJPZkZyYWN0aW9uYWxEaWdpdHNcblx0XHRcdH0pO1xuXHRcdFx0cmV0dXJuIGZpeGVkSW50ZWdlci5mb3JtYXQocGFyc2VGbG9hdCh2YWx1ZSBhcyBhbnkpKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0Zml4ZWRJbnRlZ2VyID0gTnVtYmVyRm9ybWF0LmdldEZsb2F0SW5zdGFuY2Uoe1xuXHRcdFx0XHRkZWNpbWFsczogbnVtYmVyT2ZGcmFjdGlvbmFsRGlnaXRzXG5cdFx0XHR9KTtcblx0XHRcdHJldHVybiBmaXhlZEludGVnZXIuZm9ybWF0KHBhcnNlRmxvYXQodmFsdWUgYXMgYW55KSk7XG5cdFx0fVxuXHR9LFxuXG5cdC8qKlxuXHQgKiBBcHBsaWVzIHRoZSBVT00gdG8gdGhlIHRpdGxlIG9mIHRoZSB2aXN1YWwgZmlsdGVyIGNvbnRyb2wuXG5cdCAqXG5cdCAqIEBwYXJhbSBvSW50ZXJhY3RpdmVDaGFydCBJbnRlcmFjdGl2ZUNoYXJ0IGluIHRoZSBWaXN1YWxGaWx0ZXIgY29udHJvbFxuXHQgKiBAcGFyYW0gb0NvbnRleHREYXRhIERhdGEgb2YgdGhlIFZpc3VhbEZpbHRlclxuXHQgKiBAcGFyYW0gb1ZpZXcgSW5zdGFuY2Ugb2YgdGhlIHZpZXdcblx0ICogQHBhcmFtIHNJbmZvUGF0aCBJbnRlcm5hbCBtb2RlbCBjb250ZXh0IHBhdGggdG8gc3RvcmUgaW5mby5cblx0ICovXG5cdGFwcGx5VU9NVG9UaXRsZTogZnVuY3Rpb24gKG9JbnRlcmFjdGl2ZUNoYXJ0OiBhbnksIG9Db250ZXh0RGF0YTogYW55LCBvVmlldzogVmlldywgc0luZm9QYXRoOiBzdHJpbmcpIHtcblx0XHRjb25zdCB2VU9NID0gb0ludGVyYWN0aXZlQ2hhcnQuZGF0YShcInVvbVwiKTtcblx0XHRsZXQgc1VPTTtcblx0XHRsZXQgc0N1cnJlbmN5O1xuXHRcdGlmICh2VU9NICYmIHZVT01bXCJJU09DdXJyZW5jeVwiXSkge1xuXHRcdFx0c1VPTSA9IHZVT01bXCJJU09DdXJyZW5jeVwiXTtcblx0XHRcdHNDdXJyZW5jeSA9IHNVT00uJFBhdGggPyBvQ29udGV4dERhdGFbc1VPTS4kUGF0aF0gOiBzVU9NO1xuXHRcdH0gZWxzZSBpZiAodlVPTSAmJiB2VU9NW1wiVW5pdFwiXSkge1xuXHRcdFx0c1VPTSA9IHZVT01bXCJVbml0XCJdO1xuXHRcdH1cblx0XHRpZiAoc1VPTSkge1xuXHRcdFx0Y29uc3Qgc1VPTVZhbHVlID0gc1VPTS4kUGF0aCA/IG9Db250ZXh0RGF0YVtzVU9NLiRQYXRoXSA6IHNVT007XG5cdFx0XHRjb25zdCBvSW50ZXJuYWxNb2RlbENvbnRleHQgPSBvVmlldy5nZXRCaW5kaW5nQ29udGV4dChcImludGVybmFsXCIpIGFzIEludGVybmFsTW9kZWxDb250ZXh0O1xuXHRcdFx0b0ludGVybmFsTW9kZWxDb250ZXh0LnNldFByb3BlcnR5KGB1b20vJHtzSW5mb1BhdGh9YCwgc1VPTVZhbHVlKTtcblx0XHRcdGlmIChzQ3VycmVuY3kpIHtcblx0XHRcdFx0b0ludGVybmFsTW9kZWxDb250ZXh0LnNldFByb3BlcnR5KGBjdXJyZW5jeS8ke3NJbmZvUGF0aH1gLCBzVU9NVmFsdWUpO1xuXHRcdFx0fVxuXHRcdH1cblx0fSxcblx0LyoqXG5cdCAqIFVwZGF0ZXMgdGhlIHNjYWxlIGZhY3RvciBpbiB0aGUgdGl0bGUgb2YgdGhlIHZpc3VhbCBmaWx0ZXIuXG5cdCAqXG5cdCAqIEBwYXJhbSBvSW50ZXJhY3RpdmVDaGFydCBJbnRlcmFjdGl2ZUNoYXJ0IGluIHRoZSBWaXN1YWxGaWx0ZXIgY29udHJvbFxuXHQgKiBAcGFyYW0gb1ZpZXcgSW5zdGFuY2Ugb2YgdGhlIHZpZXdcblx0ICogQHBhcmFtIHNWRklkIFZpc3VhbEZpbHRlciBjb250cm9sIElEXG5cdCAqIEBwYXJhbSBzSW5mb1BhdGggSW50ZXJuYWwgbW9kZWwgY29udGV4dCBwYXRoIHRvIHN0b3JlIGluZm8uXG5cdCAqL1xuXHR1cGRhdGVDaGFydFNjYWxlRmFjdG9yVGl0bGU6IGZ1bmN0aW9uIChvSW50ZXJhY3RpdmVDaGFydDogYW55LCBvVmlldzogVmlldywgc1ZGSWQ6IHN0cmluZywgc0luZm9QYXRoOiBzdHJpbmcpIHtcblx0XHRpZiAoIW9JbnRlcmFjdGl2ZUNoYXJ0LmRhdGEoXCJzY2FsZWZhY3RvclwiKSkge1xuXHRcdFx0dGhpcy5hcHBseU1lZGlhblNjYWxlVG9DaGFydERhdGEob0ludGVyYWN0aXZlQ2hhcnQsIG9WaWV3LCBzVkZJZCwgc0luZm9QYXRoKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0Y29uc3QgZml4ZWRJbnRlZ2VyID0gTnVtYmVyRm9ybWF0LmdldEludGVnZXJJbnN0YW5jZSh7XG5cdFx0XHRcdHN0eWxlOiBcInNob3J0XCIsXG5cdFx0XHRcdHNob3dTY2FsZTogZmFsc2UsXG5cdFx0XHRcdHNob3J0UmVmTnVtYmVyOiBvSW50ZXJhY3RpdmVDaGFydC5kYXRhKFwic2NhbGVmYWN0b3JcIilcblx0XHRcdH0pO1xuXHRcdFx0Y29uc3Qgb0ludGVybmFsTW9kZWxDb250ZXh0ID0gb1ZpZXcuZ2V0QmluZGluZ0NvbnRleHQoXCJpbnRlcm5hbFwiKSBhcyBJbnRlcm5hbE1vZGVsQ29udGV4dDtcblx0XHRcdG9JbnRlcm5hbE1vZGVsQ29udGV4dC5zZXRQcm9wZXJ0eShgc2NhbGVmYWN0b3IvJHtzSW5mb1BhdGh9YCwgKGZpeGVkSW50ZWdlciBhcyBhbnkpLmdldFNjYWxlKCkpO1xuXHRcdH1cblx0fSxcblxuXHQvKipcblx0ICpcblx0ICogQHBhcmFtIHMxOG5NZXNzYWdlVGl0bGUgVGV4dCBvZiB0aGUgZXJyb3IgbWVzc2FnZSB0aXRsZS5cblx0ICogQHBhcmFtIHMxOG5NZXNzYWdlIFRleHQgb2YgdGhlIGVycm9yIG1lc3NhZ2UgZGVzY3JpcHRpb24uXG5cdCAqIEBwYXJhbSBzSW5mb1BhdGggSW50ZXJuYWwgbW9kZWwgY29udGV4dCBwYXRoIHRvIHN0b3JlIGluZm8uXG5cdCAqIEBwYXJhbSBvVmlldyBJbnN0YW5jZSBvZiB0aGUgdmlldy5cblx0ICovXG5cdGFwcGx5RXJyb3JNZXNzYWdlQW5kVGl0bGU6IGZ1bmN0aW9uIChzMThuTWVzc2FnZVRpdGxlOiBzdHJpbmcsIHMxOG5NZXNzYWdlOiBzdHJpbmcsIHNJbmZvUGF0aDogc3RyaW5nLCBvVmlldzogVmlldykge1xuXHRcdGNvbnN0IG9JbnRlcm5hbE1vZGVsQ29udGV4dCA9IG9WaWV3LmdldEJpbmRpbmdDb250ZXh0KFwiaW50ZXJuYWxcIikgYXMgSW50ZXJuYWxNb2RlbENvbnRleHQ7XG5cdFx0b0ludGVybmFsTW9kZWxDb250ZXh0LnNldFByb3BlcnR5KHNJbmZvUGF0aCwge30pO1xuXHRcdG9JbnRlcm5hbE1vZGVsQ29udGV4dC5zZXRQcm9wZXJ0eShzSW5mb1BhdGgsIHtcblx0XHRcdFwiZXJyb3JNZXNzYWdlVGl0bGVcIjogczE4bk1lc3NhZ2VUaXRsZSxcblx0XHRcdFwiZXJyb3JNZXNzYWdlXCI6IHMxOG5NZXNzYWdlLFxuXHRcdFx0XCJzaG93RXJyb3JcIjogdHJ1ZVxuXHRcdH0pO1xuXHR9LFxuXHQvKipcblx0ICogQ2hlY2tzIGlmIG11bHRpcGxlIHVuaXRzIGFyZSBwcmVzZW50LlxuXHQgKlxuXHQgKiBAcGFyYW0gb0NvbnRleHRzIENvbnRleHRzIG9mIHRoZSBWaXN1YWxGaWx0ZXJcblx0ICogQHBhcmFtIHNVbml0ZmllbGQgVGhlIHBhdGggb2YgdGhlIHVuaXQgZmllbGRcblx0ICogQHJldHVybnMgUmV0dXJucyBpZiBtdWx0aXBsZSB1bml0cyBhcmUgY29uZmlndXJlZCBvciBub3Rcblx0ICovXG5cdGNoZWNrTXVsaXRVbml0OiBmdW5jdGlvbiAob0NvbnRleHRzOiBDb250ZXh0W10sIHNVbml0ZmllbGQ6IHN0cmluZykge1xuXHRcdGNvbnN0IGFEYXRhID0gW107XG5cdFx0aWYgKG9Db250ZXh0cyAmJiBzVW5pdGZpZWxkKSB7XG5cdFx0XHRmb3IgKGxldCBpID0gMDsgaSA8IG9Db250ZXh0cy5sZW5ndGg7IGkrKykge1xuXHRcdFx0XHRjb25zdCBhQ29udGV4dERhdGEgPSBvQ29udGV4dHNbaV0gJiYgKG9Db250ZXh0c1tpXS5nZXRPYmplY3QoKSBhcyBhbnkpO1xuXHRcdFx0XHRhRGF0YS5wdXNoKGFDb250ZXh0RGF0YVtzVW5pdGZpZWxkXSk7XG5cdFx0XHR9XG5cdFx0fVxuXHRcdHJldHVybiAhIWFEYXRhLnJlZHVjZShmdW5jdGlvbiAoZGF0YTogYW55LCBrZXk6IGFueSkge1xuXHRcdFx0cmV0dXJuIGRhdGEgPT09IGtleSA/IGRhdGEgOiBOYU47XG5cdFx0fSk7XG5cdH0sXG5cblx0LyoqXG5cdCAqIFNldHMgYW4gZXJyb3IgbWVzc2FnZSBpZiBtdWx0aXBsZSBVT00gYXJlIHByZXNlbnQuXG5cdCAqXG5cdCAqIEBwYXJhbSBvRGF0YSBEYXRhIG9mIHRoZSBWaXN1YWxGaWx0ZXIgY29udHJvbFxuXHQgKiBAcGFyYW0gb0ludGVyYWN0aXZlQ2hhcnQgSW50ZXJhY3RpdmVDaGFydCBpbiB0aGUgVmlzdWFsRmlsdGVyIGNvbnRyb2xcblx0ICogQHBhcmFtIHNJbmZvUGF0aCBJbnRlcm5hbCBtb2RlbCBjb250ZXh0IHBhdGggdG8gc3RvcmUgaW5mby5cblx0ICogQHBhcmFtIG9SZXNvdXJjZUJ1bmRsZSBUaGUgcmVzb3VyY2UgYnVuZGxlXG5cdCAqIEBwYXJhbSBvVmlldyBJbnN0YW5jZSBvZiB0aGUgdmlld1xuXHQgKi9cblx0c2V0TXVsdGlVT01NZXNzYWdlOiBmdW5jdGlvbiAoXG5cdFx0b0RhdGE6IENvbnRleHRbXSxcblx0XHRvSW50ZXJhY3RpdmVDaGFydDogYW55LFxuXHRcdHNJbmZvUGF0aDogc3RyaW5nLFxuXHRcdG9SZXNvdXJjZUJ1bmRsZTogUmVzb3VyY2VCdW5kbGUsXG5cdFx0b1ZpZXc6IFZpZXdcblx0KSB7XG5cdFx0Y29uc3QgdlVPTSA9IG9JbnRlcmFjdGl2ZUNoYXJ0LmRhdGEoXCJ1b21cIik7XG5cdFx0Y29uc3Qgc0lzQ3VycmVuY3kgPSB2VU9NICYmIHZVT01bXCJJU09DdXJyZW5jeVwiXSAmJiB2VU9NW1wiSVNPQ3VycmVuY3lcIl0uJFBhdGg7XG5cdFx0Y29uc3Qgc0lzVW5pdCA9IHZVT00gJiYgdlVPTVtcIlVuaXRcIl0gJiYgdlVPTVtcIlVuaXRcIl0uJFBhdGg7XG5cdFx0Y29uc3Qgc1VuaXRmaWVsZCA9IHNJc0N1cnJlbmN5IHx8IHNJc1VuaXQ7XG5cdFx0bGV0IHMxOG5NZXNzYWdlVGl0bGUsIHMxOG5NZXNzYWdlO1xuXHRcdGlmIChzVW5pdGZpZWxkKSB7XG5cdFx0XHRpZiAoIXRoaXMuY2hlY2tNdWxpdFVuaXQob0RhdGEsIHNVbml0ZmllbGQpKSB7XG5cdFx0XHRcdGlmIChzSXNDdXJyZW5jeSkge1xuXHRcdFx0XHRcdHMxOG5NZXNzYWdlVGl0bGUgPSBvUmVzb3VyY2VCdW5kbGUuZ2V0VGV4dChcIk1fVklTVUFMX0ZJTFRFUlNfRVJST1JfTUVTU0FHRV9USVRMRVwiKTtcblx0XHRcdFx0XHRzMThuTWVzc2FnZSA9IG9SZXNvdXJjZUJ1bmRsZS5nZXRUZXh0KFwiTV9WSVNVQUxfRklMVEVSU19NVUxUSVBMRV9DVVJSRU5DWVwiLCBzVW5pdGZpZWxkKTtcblx0XHRcdFx0XHR0aGlzLmFwcGx5RXJyb3JNZXNzYWdlQW5kVGl0bGUoczE4bk1lc3NhZ2VUaXRsZSwgczE4bk1lc3NhZ2UsIHNJbmZvUGF0aCwgb1ZpZXcpO1xuXHRcdFx0XHRcdExvZy53YXJuaW5nKGBGaWx0ZXIgaXMgc2V0IGZvciBtdWx0aXBsZSBDdXJyZW5jeSBmb3Ike3NVbml0ZmllbGR9YCk7XG5cdFx0XHRcdH0gZWxzZSBpZiAoc0lzVW5pdCkge1xuXHRcdFx0XHRcdHMxOG5NZXNzYWdlVGl0bGUgPSBvUmVzb3VyY2VCdW5kbGUuZ2V0VGV4dChcIk1fVklTVUFMX0ZJTFRFUlNfRVJST1JfTUVTU0FHRV9USVRMRVwiKTtcblx0XHRcdFx0XHRzMThuTWVzc2FnZSA9IG9SZXNvdXJjZUJ1bmRsZS5nZXRUZXh0KFwiTV9WSVNVQUxfRklMVEVSU19NVUxUSVBMRV9VTklUXCIsIHNVbml0ZmllbGQpO1xuXHRcdFx0XHRcdHRoaXMuYXBwbHlFcnJvck1lc3NhZ2VBbmRUaXRsZShzMThuTWVzc2FnZVRpdGxlLCBzMThuTWVzc2FnZSwgc0luZm9QYXRoLCBvVmlldyk7XG5cdFx0XHRcdFx0TG9nLndhcm5pbmcoYEZpbHRlciBpcyBzZXQgZm9yIG11bHRpcGxlIFVPTXMgZm9yJHtzVW5pdGZpZWxkfWApO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXHR9LFxuXG5cdC8qKlxuXHQgKiBTZXRzIGFuIGVycm9yIG1lc3NhZ2UgaWYgcmVzcG9uc2UgZGF0YSBpcyBlbXB0eS5cblx0ICpcblx0ICogQHBhcmFtIHNJbmZvUGF0aCBJbnRlcm5hbCBtb2RlbCBjb250ZXh0IHBhdGggdG8gc3RvcmUgaW5mby5cblx0ICogQHBhcmFtIG9SZXNvdXJjZUJ1bmRsZSBUaGUgcmVzb3VyY2UgYnVuZGxlXG5cdCAqIEBwYXJhbSBvVmlldyBJbnN0YW5jZSBvZiB0aGUgdmlld1xuXHQgKi9cblx0c2V0Tm9EYXRhTWVzc2FnZTogZnVuY3Rpb24gKHNJbmZvUGF0aDogc3RyaW5nLCBvUmVzb3VyY2VCdW5kbGU6IFJlc291cmNlQnVuZGxlLCBvVmlldzogVmlldykge1xuXHRcdGNvbnN0IHMxOG5NZXNzYWdlVGl0bGUgPSBvUmVzb3VyY2VCdW5kbGUuZ2V0VGV4dChcIk1fVklTVUFMX0ZJTFRFUlNfRVJST1JfTUVTU0FHRV9USVRMRVwiKTtcblx0XHRjb25zdCBzMThuTWVzc2FnZSA9IG9SZXNvdXJjZUJ1bmRsZS5nZXRUZXh0KFwiTV9WSVNVQUxfRklMVEVSX05PX0RBVEFfVEVYVFwiKTtcblx0XHR0aGlzLmFwcGx5RXJyb3JNZXNzYWdlQW5kVGl0bGUoczE4bk1lc3NhZ2VUaXRsZSwgczE4bk1lc3NhZ2UsIHNJbmZvUGF0aCwgb1ZpZXcpO1xuXHR9LFxuXHRjb252ZXJ0RmlsdGVyQ29uZGlvbnM6IGZ1bmN0aW9uIChvRmlsdGVyQ29uZGl0aW9uczogYW55KSB7XG5cdFx0Y29uc3Qgb0NvbnZlcnRlZENvbmRpdGlvbnM6IGFueSA9IHt9O1xuXHRcdE9iamVjdC5rZXlzKG9GaWx0ZXJDb25kaXRpb25zKS5mb3JFYWNoKGZ1bmN0aW9uIChzS2V5OiBzdHJpbmcpIHtcblx0XHRcdGNvbnN0IGFDb252ZXJ0ZWRDb25kaXRpb25zID0gW107XG5cdFx0XHRjb25zdCBhQ29uZGl0aW9ucyA9IG9GaWx0ZXJDb25kaXRpb25zW3NLZXldO1xuXHRcdFx0Zm9yIChsZXQgaSA9IDA7IGkgPCBhQ29uZGl0aW9ucy5sZW5ndGg7IGkrKykge1xuXHRcdFx0XHRjb25zdCB2YWx1ZXMgPSBhQ29uZGl0aW9uc1tpXS52YWx1ZTIgPyBbYUNvbmRpdGlvbnNbaV0udmFsdWUxLCBhQ29uZGl0aW9uc1tpXS52YWx1ZTJdIDogW2FDb25kaXRpb25zW2ldLnZhbHVlMV07XG5cdFx0XHRcdGFDb252ZXJ0ZWRDb25kaXRpb25zLnB1c2goXG5cdFx0XHRcdFx0Q29uZGl0aW9uLmNyZWF0ZUNvbmRpdGlvbihhQ29uZGl0aW9uc1tpXS5vcGVyYXRvciwgdmFsdWVzLCBudWxsLCBudWxsLCBcIlZhbGlkYXRlZFwiIGFzIENvbmRpdGlvblZhbGlkYXRlZClcblx0XHRcdFx0KTtcblx0XHRcdH1cblx0XHRcdGlmIChhQ29udmVydGVkQ29uZGl0aW9ucy5sZW5ndGgpIHtcblx0XHRcdFx0b0NvbnZlcnRlZENvbmRpdGlvbnNbc0tleV0gPSBhQ29udmVydGVkQ29uZGl0aW9ucztcblx0XHRcdH1cblx0XHR9KTtcblx0XHRyZXR1cm4gb0NvbnZlcnRlZENvbmRpdGlvbnM7XG5cdH0sXG5cdGdldEN1c3RvbUNvbmRpdGlvbnM6IGZ1bmN0aW9uIChSYW5nZTogYW55LCBvVmFsaWRQcm9wZXJ0eTogYW55LCBzUHJvcGVydHlOYW1lOiBhbnkpIHtcblx0XHRsZXQgdmFsdWUxLCB2YWx1ZTI7XG5cdFx0aWYgKG9WYWxpZFByb3BlcnR5LiRUeXBlID09PSBcIkVkbS5EYXRlVGltZU9mZnNldFwiKSB7XG5cdFx0XHR2YWx1ZTEgPSB0aGlzLl9wYXJzZURhdGVUaW1lKGdldFR5cGVDb21wbGlhbnRWYWx1ZSh0aGlzLl9mb3JtYXREYXRlVGltZShSYW5nZS5Mb3cpLCBvVmFsaWRQcm9wZXJ0eS4kVHlwZSkpO1xuXHRcdFx0dmFsdWUyID0gUmFuZ2UuSGlnaCA/IHRoaXMuX3BhcnNlRGF0ZVRpbWUoZ2V0VHlwZUNvbXBsaWFudFZhbHVlKHRoaXMuX2Zvcm1hdERhdGVUaW1lKFJhbmdlLkhpZ2gpLCBvVmFsaWRQcm9wZXJ0eS4kVHlwZSkpIDogbnVsbDtcblx0XHR9IGVsc2Uge1xuXHRcdFx0dmFsdWUxID0gUmFuZ2UuTG93O1xuXHRcdFx0dmFsdWUyID0gUmFuZ2UuSGlnaCA/IFJhbmdlLkhpZ2ggOiBudWxsO1xuXHRcdH1cblx0XHRyZXR1cm4ge1xuXHRcdFx0b3BlcmF0b3I6IFJhbmdlLk9wdGlvbiA/IGdldFJhbmdlUHJvcGVydHkoUmFuZ2UuT3B0aW9uLiRFbnVtTWVtYmVyIHx8IFJhbmdlLk9wdGlvbikgOiBudWxsLFxuXHRcdFx0dmFsdWUxOiB2YWx1ZTEsXG5cdFx0XHR2YWx1ZTI6IHZhbHVlMixcblx0XHRcdHBhdGg6IHNQcm9wZXJ0eU5hbWVcblx0XHR9O1xuXHR9LFxuXHRfcGFyc2VEYXRlVGltZTogZnVuY3Rpb24gKHNWYWx1ZTogYW55KSB7XG5cdFx0cmV0dXJuIHRoaXMuX2dldERhdGVUaW1lVHlwZUluc3RhbmNlKCkucGFyc2VWYWx1ZShzVmFsdWUsIFwic3RyaW5nXCIpO1xuXHR9LFxuXHRfZm9ybWF0RGF0ZVRpbWU6IGZ1bmN0aW9uIChzVmFsdWU6IGFueSkge1xuXHRcdHJldHVybiB0aGlzLl9nZXREYXRlVGltZVR5cGVJbnN0YW5jZSgpLmZvcm1hdFZhbHVlKHNWYWx1ZSwgXCJzdHJpbmdcIik7XG5cdH0sXG5cdF9nZXREYXRlVGltZVR5cGVJbnN0YW5jZTogZnVuY3Rpb24gKCkge1xuXHRcdHJldHVybiBuZXcgRGF0ZVRpbWVPZmZzZXQoeyBwYXR0ZXJuOiBcInl5eXktTU0tZGRUSEg6bW06c3NaXCIsIGNhbGVuZGFyVHlwZTogXCJHcmVnb3JpYW5cIiB9LCB7IFY0OiB0cnVlIH0pO1xuXHR9XG59O1xuXG5leHBvcnQgZGVmYXVsdCBWaXN1YWxGaWx0ZXJVdGlscztcbiJdLCJtYXBwaW5ncyI6IjtBQUFBO0FBQUE7QUFBQTs7Ozs7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
|
|
310
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJWaXN1YWxGaWx0ZXJVdGlscyIsImFwcGx5TWVkaWFuU2NhbGVUb0NoYXJ0RGF0YSIsIm9JbnRlcmFjdGl2ZUNoYXJ0Iiwib1ZpZXciLCJzVkZJZCIsInNJbmZvUGF0aCIsIm9EYXRhIiwic01lYXN1cmUiLCJkYXRhIiwib0ludGVybmFsTW9kZWxDb250ZXh0IiwiZ2V0QmluZGluZ0NvbnRleHQiLCJhQWdncmVnYXRpb24iLCJnZXRQb2ludHMiLCJnZXRCYXJzIiwiZ2V0U2VnbWVudHMiLCJpIiwibGVuZ3RoIiwicHVzaCIsImdldE9iamVjdCIsInNjYWxlRmFjdG9yIiwiX2dldE1lZGlhblNjYWxlRmFjdG9yIiwiaVNob3J0UmVmTnVtYmVyIiwic2NhbGUiLCJzZXRQcm9wZXJ0eSIsIm9TY2FsZVRpdGxlIiwiYnlJZCIsIm9NZWFzdXJlRGltZW5zaW9uVGl0bGUiLCJzVGV4dCIsImdldFRleHQiLCJzZXRWaXNpYmxlIiwic2V0VG9vbHRpcCIsInNNZWFzdXJlRmllbGQiLCJzb3J0IiwiYSIsImIiLCJOdW1iZXIiLCJpTWlkIiwiaU1lZGlhbiIsInBhcnNlRmxvYXQiLCJNYXRoIiwiZmxvb3IiLCJ2YWwiLCJwb3ciLCJyb3VuZCIsImFicyIsImZpeGVkSW50ZWdlciIsIk51bWJlckZvcm1hdCIsImdldEludGVnZXJJbnN0YW5jZSIsInN0eWxlIiwic2hvd1NjYWxlIiwic2hvcnRSZWZOdW1iZXIiLCJhRGF0YSIsInNTY2FsZWRWYWx1ZSIsImZvcm1hdCIsImFTY2FsZWRWYWx1ZVBhcnRzIiwic3BsaXQiLCJwYXJzZUludCIsImluZGV4T2YiLCJ1bmRlZmluZWQiLCJnZXRTY2FsZSIsImdldEZvcm1hdHRlZE51bWJlciIsInZhbHVlIiwibnVtYmVyT2ZGcmFjdGlvbmFsRGlnaXRzIiwiY3VycmVuY3kiLCJyZXBsYWNlIiwiY3VycmVuY3lGb3JtYXQiLCJnZXRDdXJyZW5jeUluc3RhbmNlIiwic2hvd01lYXN1cmUiLCJnZXRGbG9hdEluc3RhbmNlIiwic2hvcnREZWNpbWFscyIsImRlY2ltYWxzIiwiYXBwbHlVT01Ub1RpdGxlIiwib0NvbnRleHREYXRhIiwidlVPTSIsInNVT00iLCJzQ3VycmVuY3kiLCIkUGF0aCIsInNVT01WYWx1ZSIsInVwZGF0ZUNoYXJ0U2NhbGVGYWN0b3JUaXRsZSIsImFwcGx5RXJyb3JNZXNzYWdlQW5kVGl0bGUiLCJzMThuTWVzc2FnZVRpdGxlIiwiczE4bk1lc3NhZ2UiLCJlcnJvck1lc3NhZ2VUaXRsZSIsImVycm9yTWVzc2FnZSIsInNob3dFcnJvciIsImNoZWNrTXVsaXRVbml0Iiwib0NvbnRleHRzIiwic1VuaXRmaWVsZCIsImFDb250ZXh0RGF0YSIsInJlZHVjZSIsImtleSIsIk5hTiIsInNldE11bHRpVU9NTWVzc2FnZSIsIm9SZXNvdXJjZUJ1bmRsZSIsInNJc0N1cnJlbmN5Iiwic0lzVW5pdCIsIkxvZyIsIndhcm5pbmciLCJzZXROb0RhdGFNZXNzYWdlIiwiY29udmVydEZpbHRlckNvbmRpb25zIiwib0ZpbHRlckNvbmRpdGlvbnMiLCJvQ29udmVydGVkQ29uZGl0aW9ucyIsIk9iamVjdCIsImtleXMiLCJmb3JFYWNoIiwic0tleSIsImFDb252ZXJ0ZWRDb25kaXRpb25zIiwiYUNvbmRpdGlvbnMiLCJ2YWx1ZXMiLCJ2YWx1ZTIiLCJ2YWx1ZTEiLCJDb25kaXRpb24iLCJjcmVhdGVDb25kaXRpb24iLCJvcGVyYXRvciIsImdldEN1c3RvbUNvbmRpdGlvbnMiLCJSYW5nZSIsIm9WYWxpZFByb3BlcnR5Iiwic1Byb3BlcnR5TmFtZSIsIiRUeXBlIiwiX3BhcnNlRGF0ZVRpbWUiLCJnZXRUeXBlQ29tcGxpYW50VmFsdWUiLCJfZm9ybWF0RGF0ZVRpbWUiLCJMb3ciLCJIaWdoIiwiT3B0aW9uIiwiZ2V0UmFuZ2VQcm9wZXJ0eSIsIiRFbnVtTWVtYmVyIiwicGF0aCIsInNWYWx1ZSIsIl9nZXREYXRlVGltZVR5cGVJbnN0YW5jZSIsInBhcnNlVmFsdWUiLCJmb3JtYXRWYWx1ZSIsIkRhdGVUaW1lT2Zmc2V0IiwicGF0dGVybiIsImNhbGVuZGFyVHlwZSIsIlY0Il0sInNvdXJjZVJvb3QiOiIuIiwic291cmNlcyI6WyJWaXN1YWxGaWx0ZXJVdGlscy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSBSZXNvdXJjZUJ1bmRsZSBmcm9tIFwic2FwL2Jhc2UvaTE4bi9SZXNvdXJjZUJ1bmRsZVwiO1xuaW1wb3J0IExvZyBmcm9tIFwic2FwL2Jhc2UvTG9nXCI7XG5pbXBvcnQgdHlwZSB7IEludGVybmFsTW9kZWxDb250ZXh0IH0gZnJvbSBcInNhcC9mZS9jb3JlL2hlbHBlcnMvTW9kZWxIZWxwZXJcIjtcbmltcG9ydCB7IGdldFJhbmdlUHJvcGVydHksIGdldFR5cGVDb21wbGlhbnRWYWx1ZSB9IGZyb20gXCJzYXAvZmUvY29yZS90ZW1wbGF0aW5nL0ZpbHRlckhlbHBlclwiO1xuaW1wb3J0IHR5cGUgVGl0bGUgZnJvbSBcInNhcC9tL1RpdGxlXCI7XG5pbXBvcnQgTnVtYmVyRm9ybWF0IGZyb20gXCJzYXAvdWkvY29yZS9mb3JtYXQvTnVtYmVyRm9ybWF0XCI7XG5pbXBvcnQgdHlwZSBWaWV3IGZyb20gXCJzYXAvdWkvY29yZS9tdmMvVmlld1wiO1xuaW1wb3J0IENvbmRpdGlvbiBmcm9tIFwic2FwL3VpL21kYy9jb25kaXRpb24vQ29uZGl0aW9uXCI7XG5pbXBvcnQgdHlwZSBDb25kaXRpb25WYWxpZGF0ZWQgZnJvbSBcInNhcC91aS9tZGMvZW51bS9Db25kaXRpb25WYWxpZGF0ZWRcIjtcbmltcG9ydCB0eXBlIENvbnRleHQgZnJvbSBcInNhcC91aS9tb2RlbC9Db250ZXh0XCI7XG5pbXBvcnQgRGF0ZVRpbWVPZmZzZXQgZnJvbSBcInNhcC91aS9tb2RlbC9vZGF0YS90eXBlL0RhdGVUaW1lT2Zmc2V0XCI7XG5cbmNvbnN0IFZpc3VhbEZpbHRlclV0aWxzID0ge1xuXHQvKipcblx0ICogQXBwbGllcyB0aGUgbWVkaWFuIHNjYWxlIHRvIHRoZSBjaGFydCBkYXRhLlxuXHQgKlxuXHQgKiBAcGFyYW0gb0ludGVyYWN0aXZlQ2hhcnQgSW50ZXJhY3RpdmVDaGFydCBpbiB0aGUgVmlzdWFsRmlsdGVyIGNvbnRyb2xcblx0ICogQHBhcmFtIG9WaWV3IEluc3RhbmNlIG9mIHRoZSB2aWV3XG5cdCAqIEBwYXJhbSBzVkZJZCBWaXN1YWxGaWx0ZXIgY29udHJvbCBJRFxuXHQgKiBAcGFyYW0gc0luZm9QYXRoIEludGVybmFsIG1vZGVsIGNvbnRleHQgcGF0aCB0byBzdG9yZSBpbmZvLlxuXHQgKi9cblx0YXBwbHlNZWRpYW5TY2FsZVRvQ2hhcnREYXRhOiBmdW5jdGlvbiAob0ludGVyYWN0aXZlQ2hhcnQ6IGFueSwgb1ZpZXc6IFZpZXcsIHNWRklkOiBzdHJpbmcsIHNJbmZvUGF0aDogc3RyaW5nKSB7XG5cdFx0Y29uc3Qgb0RhdGEgPSBbXTtcblx0XHRjb25zdCBzTWVhc3VyZSA9IG9JbnRlcmFjdGl2ZUNoYXJ0LmRhdGEoXCJtZWFzdXJlXCIpO1xuXHRcdGNvbnN0IG9JbnRlcm5hbE1vZGVsQ29udGV4dCA9IG9WaWV3LmdldEJpbmRpbmdDb250ZXh0KFwiaW50ZXJuYWxcIikgYXMgSW50ZXJuYWxNb2RlbENvbnRleHQ7XG5cdFx0Y29uc3QgYUFnZ3JlZ2F0aW9uID1cblx0XHRcdChvSW50ZXJhY3RpdmVDaGFydC5nZXRQb2ludHMgJiYgb0ludGVyYWN0aXZlQ2hhcnQuZ2V0UG9pbnRzKCkpIHx8XG5cdFx0XHQob0ludGVyYWN0aXZlQ2hhcnQuZ2V0QmFycyAmJiBvSW50ZXJhY3RpdmVDaGFydC5nZXRCYXJzKCkpIHx8XG5cdFx0XHQob0ludGVyYWN0aXZlQ2hhcnQuZ2V0U2VnbWVudHMgJiYgb0ludGVyYWN0aXZlQ2hhcnQuZ2V0U2VnbWVudHMoKSk7XG5cdFx0Zm9yIChsZXQgaSA9IDA7IGkgPCBhQWdncmVnYXRpb24ubGVuZ3RoOyBpKyspIHtcblx0XHRcdG9EYXRhLnB1c2goYUFnZ3JlZ2F0aW9uW2ldLmdldEJpbmRpbmdDb250ZXh0KCkuZ2V0T2JqZWN0KCkpO1xuXHRcdH1cblx0XHRjb25zdCBzY2FsZUZhY3RvciA9IHRoaXMuX2dldE1lZGlhblNjYWxlRmFjdG9yKG9EYXRhLCBzTWVhc3VyZSk7XG5cdFx0aWYgKHNjYWxlRmFjdG9yICYmIHNjYWxlRmFjdG9yLmlTaG9ydFJlZk51bWJlciAmJiBzY2FsZUZhY3Rvci5zY2FsZSkge1xuXHRcdFx0b0ludGVybmFsTW9kZWxDb250ZXh0LnNldFByb3BlcnR5KGBzY2FsZWZhY3Rvci8ke3NJbmZvUGF0aH1gLCBzY2FsZUZhY3Rvci5zY2FsZSk7XG5cdFx0XHRvSW50ZXJuYWxNb2RlbENvbnRleHQuc2V0UHJvcGVydHkoYHNjYWxlZmFjdG9yTnVtYmVyLyR7c0luZm9QYXRofWAsIHNjYWxlRmFjdG9yLmlTaG9ydFJlZk51bWJlcik7XG5cdFx0fSBlbHNlIHtcblx0XHRcdG9JbnRlcm5hbE1vZGVsQ29udGV4dC5zZXRQcm9wZXJ0eShgc2NhbGVmYWN0b3IvJHtzSW5mb1BhdGh9YCwgXCJcIik7XG5cdFx0XHRvSW50ZXJuYWxNb2RlbENvbnRleHQuc2V0UHJvcGVydHkoYHNjYWxlZmFjdG9yTnVtYmVyLyR7c0luZm9QYXRofWAsIFwiXCIpO1xuXHRcdFx0Y29uc3Qgb1NjYWxlVGl0bGUgPSBvVmlldy5ieUlkKGAke3NWRklkfTo6U2NhbGVVb01UaXRsZWApIGFzIFRpdGxlO1xuXHRcdFx0Y29uc3Qgb01lYXN1cmVEaW1lbnNpb25UaXRsZSA9IG9WaWV3LmJ5SWQoYCR7c1ZGSWR9OjpNZWFzdXJlRGltZW5zaW9uVGl0bGVgKSBhcyBUaXRsZTtcblx0XHRcdGNvbnN0IHNUZXh0ID0gb1NjYWxlVGl0bGUuZ2V0VGV4dCgpO1xuXHRcdFx0aWYgKHNUZXh0ID09PSBcIiB8IFwiKSB7XG5cdFx0XHRcdG9TY2FsZVRpdGxlLnNldFZpc2libGUoZmFsc2UpO1xuXHRcdFx0XHRvTWVhc3VyZURpbWVuc2lvblRpdGxlLnNldFRvb2x0aXAob01lYXN1cmVEaW1lbnNpb25UaXRsZS5nZXRUZXh0KCkpO1xuXHRcdFx0fVxuXHRcdH1cblx0fSxcblxuXHQvKipcblx0ICogUmV0dXJucyB0aGUgbWVkaWFuIHNjYWxlIGZhY3Rvci5cblx0ICpcblx0ICogQHBhcmFtIG9EYXRhIFZpc3VhbEZpbHRlciBkYXRhXG5cdCAqIEBwYXJhbSBzTWVhc3VyZUZpZWxkIFBhdGggb2YgdGhlIG1lYXN1cmVcblx0ICogQHJldHVybnMgT2JqZWN0IGNvbnRhaW5pbmcgc2NhbGUgYW5kIGlTaG9ydFJlZk51bWJlclxuXHQgKi9cblx0X2dldE1lZGlhblNjYWxlRmFjdG9yOiBmdW5jdGlvbiAob0RhdGE6IGFueVtdLCBzTWVhc3VyZUZpZWxkOiBzdHJpbmcpIHtcblx0XHRsZXQgaTtcblx0XHRsZXQgc2NhbGVGYWN0b3I7XG5cdFx0b0RhdGEuc29ydChmdW5jdGlvbiAoYTogYW55LCBiOiBhbnkpIHtcblx0XHRcdGlmIChOdW1iZXIoYVtzTWVhc3VyZUZpZWxkXSkgPCBOdW1iZXIoYltzTWVhc3VyZUZpZWxkXSkpIHtcblx0XHRcdFx0cmV0dXJuIC0xO1xuXHRcdFx0fVxuXHRcdFx0aWYgKE51bWJlcihhW3NNZWFzdXJlRmllbGRdKSA+IE51bWJlcihiW3NNZWFzdXJlRmllbGRdKSkge1xuXHRcdFx0XHRyZXR1cm4gMTtcblx0XHRcdH1cblx0XHRcdHJldHVybiAwO1xuXHRcdH0pO1xuXHRcdGlmIChvRGF0YS5sZW5ndGggPiAwKSB7XG5cdFx0XHQvLyBnZXQgbWVkaWFuIGluZGV4XG5cdFx0XHRjb25zdCBpTWlkID0gb0RhdGEubGVuZ3RoIC8gMiwgLy8gZ2V0IG1pZCBvZiBhcnJheVxuXHRcdFx0XHQvLyBpZiBpTWlkIGlzIHdob2xlIG51bWJlciwgYXJyYXkgbGVuZ3RoIGlzIGV2ZW4sIGNhbGN1bGF0ZSBtZWRpYW5cblx0XHRcdFx0Ly8gaWYgaU1pZCBpcyBub3Qgd2hvbGUgbnVtYmVyLCBhcnJheSBsZW5ndGggaXMgb2RkLCB0YWtlIG1lZGlhbiBhcyBpTWlkIC0gMVxuXHRcdFx0XHRpTWVkaWFuID1cblx0XHRcdFx0XHRpTWlkICUgMSA9PT0gMFxuXHRcdFx0XHRcdFx0PyAocGFyc2VGbG9hdChvRGF0YVtpTWlkIC0gMV1bc01lYXN1cmVGaWVsZF0pICsgcGFyc2VGbG9hdChvRGF0YVtpTWlkXVtzTWVhc3VyZUZpZWxkXSkpIC8gMlxuXHRcdFx0XHRcdFx0OiBwYXJzZUZsb2F0KG9EYXRhW01hdGguZmxvb3IoaU1pZCldW3NNZWFzdXJlRmllbGRdKSxcblx0XHRcdFx0Ly8gZ2V0IHNjYWxlIGZhY3RvciBvbiBtZWRpYW5cblx0XHRcdFx0dmFsID0gaU1lZGlhbjtcblx0XHRcdGZvciAoaSA9IDA7IGkgPCAxNDsgaSsrKSB7XG5cdFx0XHRcdHNjYWxlRmFjdG9yID0gTWF0aC5wb3coMTAsIGkpO1xuXHRcdFx0XHRpZiAoTWF0aC5yb3VuZChNYXRoLmFicyh2YWwpIC8gc2NhbGVGYWN0b3IpIDwgMTApIHtcblx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblxuXHRcdGNvbnN0IGZpeGVkSW50ZWdlciA9IE51bWJlckZvcm1hdC5nZXRJbnRlZ2VySW5zdGFuY2Uoe1xuXHRcdFx0c3R5bGU6IFwic2hvcnRcIixcblx0XHRcdHNob3dTY2FsZTogZmFsc2UsXG5cdFx0XHRzaG9ydFJlZk51bWJlcjogc2NhbGVGYWN0b3Jcblx0XHR9KTtcblxuXHRcdC8vIGFwcGx5IHNjYWxlIGZhY3RvciB0byBvdGhlciB2YWx1ZXMgYW5kIGNoZWNrXG5cdFx0Zm9yIChpID0gMDsgaSA8IG9EYXRhLmxlbmd0aDsgaSsrKSB7XG5cdFx0XHRjb25zdCBhRGF0YSA9IG9EYXRhW2ldLFxuXHRcdFx0XHRzU2NhbGVkVmFsdWUgPSBmaXhlZEludGVnZXIuZm9ybWF0KGFEYXRhW3NNZWFzdXJlRmllbGRdKSBhcyBhbnksXG5cdFx0XHRcdGFTY2FsZWRWYWx1ZVBhcnRzID0gc1NjYWxlZFZhbHVlLnNwbGl0KFwiLlwiKTtcblx0XHRcdC8vIGlmIHNjYWxlZCB2YWx1ZSBoYXMgb25seSAwIGJlZm9yZSBkZWNpbWFsIG9yIDAgYWZ0ZXIgZGVjaW1hbCAoZXhhbXBsZTogMC4wMilcblx0XHRcdC8vIHRoZW4gaWdub3JlIHRoaXMgc2NhbGUgZmFjdG9yIGVsc2UgcHJvY2VlZCB3aXRoIHRoaXMgc2NhbGUgZmFjdG9yXG5cdFx0XHQvLyBpZiBzY2FsZWQgdmFsdWUgZGl2aWRlZCBieSAxMDAwIGlzID49IDEwMDAgdGhlbiBhbHNvIGlnbm9yZSBzY2FsZSBmYWN0b3Jcblx0XHRcdGlmIChcblx0XHRcdFx0KCFhU2NhbGVkVmFsdWVQYXJ0c1sxXSAmJiBwYXJzZUludChhU2NhbGVkVmFsdWVQYXJ0c1swXSwgMTApID09PSAwKSB8fFxuXHRcdFx0XHQoYVNjYWxlZFZhbHVlUGFydHNbMV0gJiYgcGFyc2VJbnQoYVNjYWxlZFZhbHVlUGFydHNbMF0sIDEwKSA9PT0gMCAmJiBhU2NhbGVkVmFsdWVQYXJ0c1sxXS5pbmRleE9mKFwiMFwiKSA9PT0gMCkgfHxcblx0XHRcdFx0c1NjYWxlZFZhbHVlIC8gMTAwMCA+PSAxMDAwXG5cdFx0XHQpIHtcblx0XHRcdFx0c2NhbGVGYWN0b3IgPSB1bmRlZmluZWQ7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0fVxuXHRcdH1cblx0XHRyZXR1cm4ge1xuXHRcdFx0aVNob3J0UmVmTnVtYmVyOiBzY2FsZUZhY3Rvcixcblx0XHRcdHNjYWxlOiBzY2FsZUZhY3RvciA/IChmaXhlZEludGVnZXIgYXMgYW55KS5nZXRTY2FsZSgpIDogXCJcIlxuXHRcdH07XG5cdH0sXG5cblx0LyoqXG5cdCAqIFJldHVybnMgdGhlIGZvcm1hdHRlZCBudW1iZXIgYWNjb3JkaW5nIHRvIHRoZSBydWxlcyBvZiBWaXN1YWxDaGFydEZpbHRlcnMuXG5cdCAqXG5cdCAqIEBwYXJhbSB2YWx1ZSBWYWx1ZSB3aGljaCBuZWVkcyB0byBiZSBmb3JtYXR0ZWRcblx0ICogQHBhcmFtIHNjYWxlRmFjdG9yIFNjYWxlRmFjdG9yIHRvIHdoaWNoIHRoZSB2YWx1ZSBuZWVkcyB0byBiZSBzY2FsZWRcblx0ICogQHBhcmFtIG51bWJlck9mRnJhY3Rpb25hbERpZ2l0cyBOdW1iZXJPZkZyYWN0aW9uYWxEaWdpdHMgZGlnaXRzIGluIHRoZSBkZWNpbWFscyBhY2NvcmRpbmcgdG8gc2NhbGVcblx0ICogQHBhcmFtIGN1cnJlbmN5IEN1cnJlbmN5IGNvZGVcblx0ICogQHJldHVybnMgVGhlIGZvcm1hdHRlZCBudW1iZXJcblx0ICovXG5cdGdldEZvcm1hdHRlZE51bWJlcjogZnVuY3Rpb24gKHZhbHVlOiBzdHJpbmcgfCBudW1iZXIsIHNjYWxlRmFjdG9yPzogbnVtYmVyLCBudW1iZXJPZkZyYWN0aW9uYWxEaWdpdHM/OiBudW1iZXIsIGN1cnJlbmN5Pzogc3RyaW5nKSB7XG5cdFx0bGV0IGZpeGVkSW50ZWdlcjtcblx0XHR2YWx1ZSA9IHR5cGVvZiB2YWx1ZSA9PT0gXCJzdHJpbmdcIiA/IE51bWJlcih2YWx1ZS5yZXBsYWNlKC8sL2csIFwiXCIpKSA6IHZhbHVlO1xuXG5cdFx0aWYgKGN1cnJlbmN5KSB7XG5cdFx0XHRjb25zdCBjdXJyZW5jeUZvcm1hdCA9IE51bWJlckZvcm1hdC5nZXRDdXJyZW5jeUluc3RhbmNlKHtcblx0XHRcdFx0c2hvd01lYXN1cmU6IGZhbHNlXG5cdFx0XHR9KTtcblx0XHRcdHJldHVybiBjdXJyZW5jeUZvcm1hdC5mb3JtYXQocGFyc2VGbG9hdCh2YWx1ZSBhcyBhbnkpLCBjdXJyZW5jeSk7XG5cdFx0XHQvLyBwYXJzZUZsb2F0KHZhbHVlKSBpcyByZXF1aXJlZCBvdGhlcndpc2UgLXZlIHZhbHVlIGFyZSB3cm9uZ2x5IHJvdW5kZWQgb2ZmXG5cdFx0XHQvLyBFeGFtcGxlOiBcIi0xLjlcIiByb3VuZHMgb2ZmIHRvIC0xIGluc3RlYWQgb2YgLTIuIGhvd2V2ZXIgLTEuOSByb3VuZHMgb2ZmIHRvIC0yXG5cdFx0fSBlbHNlIGlmIChzY2FsZUZhY3Rvcikge1xuXHRcdFx0Zml4ZWRJbnRlZ2VyID0gTnVtYmVyRm9ybWF0LmdldEZsb2F0SW5zdGFuY2Uoe1xuXHRcdFx0XHRzdHlsZTogXCJzaG9ydFwiLFxuXHRcdFx0XHRzaG93U2NhbGU6IGZhbHNlLFxuXHRcdFx0XHRzaG9ydFJlZk51bWJlcjogc2NhbGVGYWN0b3IsXG5cdFx0XHRcdHNob3J0RGVjaW1hbHM6IG51bWJlck9mRnJhY3Rpb25hbERpZ2l0c1xuXHRcdFx0fSk7XG5cdFx0XHRyZXR1cm4gZml4ZWRJbnRlZ2VyLmZvcm1hdChwYXJzZUZsb2F0KHZhbHVlIGFzIGFueSkpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRmaXhlZEludGVnZXIgPSBOdW1iZXJGb3JtYXQuZ2V0RmxvYXRJbnN0YW5jZSh7XG5cdFx0XHRcdGRlY2ltYWxzOiBudW1iZXJPZkZyYWN0aW9uYWxEaWdpdHNcblx0XHRcdH0pO1xuXHRcdFx0cmV0dXJuIGZpeGVkSW50ZWdlci5mb3JtYXQocGFyc2VGbG9hdCh2YWx1ZSBhcyBhbnkpKTtcblx0XHR9XG5cdH0sXG5cblx0LyoqXG5cdCAqIEFwcGxpZXMgdGhlIFVPTSB0byB0aGUgdGl0bGUgb2YgdGhlIHZpc3VhbCBmaWx0ZXIgY29udHJvbC5cblx0ICpcblx0ICogQHBhcmFtIG9JbnRlcmFjdGl2ZUNoYXJ0IEludGVyYWN0aXZlQ2hhcnQgaW4gdGhlIFZpc3VhbEZpbHRlciBjb250cm9sXG5cdCAqIEBwYXJhbSBvQ29udGV4dERhdGEgRGF0YSBvZiB0aGUgVmlzdWFsRmlsdGVyXG5cdCAqIEBwYXJhbSBvVmlldyBJbnN0YW5jZSBvZiB0aGUgdmlld1xuXHQgKiBAcGFyYW0gc0luZm9QYXRoIEludGVybmFsIG1vZGVsIGNvbnRleHQgcGF0aCB0byBzdG9yZSBpbmZvLlxuXHQgKi9cblx0YXBwbHlVT01Ub1RpdGxlOiBmdW5jdGlvbiAob0ludGVyYWN0aXZlQ2hhcnQ6IGFueSwgb0NvbnRleHREYXRhOiBhbnksIG9WaWV3OiBWaWV3LCBzSW5mb1BhdGg6IHN0cmluZykge1xuXHRcdGNvbnN0IHZVT00gPSBvSW50ZXJhY3RpdmVDaGFydC5kYXRhKFwidW9tXCIpO1xuXHRcdGxldCBzVU9NO1xuXHRcdGxldCBzQ3VycmVuY3k7XG5cdFx0aWYgKHZVT00gJiYgdlVPTVtcIklTT0N1cnJlbmN5XCJdKSB7XG5cdFx0XHRzVU9NID0gdlVPTVtcIklTT0N1cnJlbmN5XCJdO1xuXHRcdFx0c0N1cnJlbmN5ID0gc1VPTS4kUGF0aCA/IG9Db250ZXh0RGF0YVtzVU9NLiRQYXRoXSA6IHNVT007XG5cdFx0fSBlbHNlIGlmICh2VU9NICYmIHZVT01bXCJVbml0XCJdKSB7XG5cdFx0XHRzVU9NID0gdlVPTVtcIlVuaXRcIl07XG5cdFx0fVxuXHRcdGlmIChzVU9NKSB7XG5cdFx0XHRjb25zdCBzVU9NVmFsdWUgPSBzVU9NLiRQYXRoID8gb0NvbnRleHREYXRhW3NVT00uJFBhdGhdIDogc1VPTTtcblx0XHRcdGNvbnN0IG9JbnRlcm5hbE1vZGVsQ29udGV4dCA9IG9WaWV3LmdldEJpbmRpbmdDb250ZXh0KFwiaW50ZXJuYWxcIikgYXMgSW50ZXJuYWxNb2RlbENvbnRleHQ7XG5cdFx0XHRvSW50ZXJuYWxNb2RlbENvbnRleHQuc2V0UHJvcGVydHkoYHVvbS8ke3NJbmZvUGF0aH1gLCBzVU9NVmFsdWUpO1xuXHRcdFx0aWYgKHNDdXJyZW5jeSkge1xuXHRcdFx0XHRvSW50ZXJuYWxNb2RlbENvbnRleHQuc2V0UHJvcGVydHkoYGN1cnJlbmN5LyR7c0luZm9QYXRofWAsIHNVT01WYWx1ZSk7XG5cdFx0XHR9XG5cdFx0fVxuXHR9LFxuXHQvKipcblx0ICogVXBkYXRlcyB0aGUgc2NhbGUgZmFjdG9yIGluIHRoZSB0aXRsZSBvZiB0aGUgdmlzdWFsIGZpbHRlci5cblx0ICpcblx0ICogQHBhcmFtIG9JbnRlcmFjdGl2ZUNoYXJ0IEludGVyYWN0aXZlQ2hhcnQgaW4gdGhlIFZpc3VhbEZpbHRlciBjb250cm9sXG5cdCAqIEBwYXJhbSBvVmlldyBJbnN0YW5jZSBvZiB0aGUgdmlld1xuXHQgKiBAcGFyYW0gc1ZGSWQgVmlzdWFsRmlsdGVyIGNvbnRyb2wgSURcblx0ICogQHBhcmFtIHNJbmZvUGF0aCBJbnRlcm5hbCBtb2RlbCBjb250ZXh0IHBhdGggdG8gc3RvcmUgaW5mby5cblx0ICovXG5cdHVwZGF0ZUNoYXJ0U2NhbGVGYWN0b3JUaXRsZTogZnVuY3Rpb24gKG9JbnRlcmFjdGl2ZUNoYXJ0OiBhbnksIG9WaWV3OiBWaWV3LCBzVkZJZDogc3RyaW5nLCBzSW5mb1BhdGg6IHN0cmluZykge1xuXHRcdGlmICghb0ludGVyYWN0aXZlQ2hhcnQuZGF0YShcInNjYWxlZmFjdG9yXCIpKSB7XG5cdFx0XHR0aGlzLmFwcGx5TWVkaWFuU2NhbGVUb0NoYXJ0RGF0YShvSW50ZXJhY3RpdmVDaGFydCwgb1ZpZXcsIHNWRklkLCBzSW5mb1BhdGgpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRjb25zdCBmaXhlZEludGVnZXIgPSBOdW1iZXJGb3JtYXQuZ2V0SW50ZWdlckluc3RhbmNlKHtcblx0XHRcdFx0c3R5bGU6IFwic2hvcnRcIixcblx0XHRcdFx0c2hvd1NjYWxlOiBmYWxzZSxcblx0XHRcdFx0c2hvcnRSZWZOdW1iZXI6IG9JbnRlcmFjdGl2ZUNoYXJ0LmRhdGEoXCJzY2FsZWZhY3RvclwiKVxuXHRcdFx0fSk7XG5cdFx0XHRjb25zdCBvSW50ZXJuYWxNb2RlbENvbnRleHQgPSBvVmlldy5nZXRCaW5kaW5nQ29udGV4dChcImludGVybmFsXCIpIGFzIEludGVybmFsTW9kZWxDb250ZXh0O1xuXHRcdFx0b0ludGVybmFsTW9kZWxDb250ZXh0LnNldFByb3BlcnR5KGBzY2FsZWZhY3Rvci8ke3NJbmZvUGF0aH1gLCAoZml4ZWRJbnRlZ2VyIGFzIGFueSkuZ2V0U2NhbGUoKSk7XG5cdFx0fVxuXHR9LFxuXG5cdC8qKlxuXHQgKlxuXHQgKiBAcGFyYW0gczE4bk1lc3NhZ2VUaXRsZSBUZXh0IG9mIHRoZSBlcnJvciBtZXNzYWdlIHRpdGxlLlxuXHQgKiBAcGFyYW0gczE4bk1lc3NhZ2UgVGV4dCBvZiB0aGUgZXJyb3IgbWVzc2FnZSBkZXNjcmlwdGlvbi5cblx0ICogQHBhcmFtIHNJbmZvUGF0aCBJbnRlcm5hbCBtb2RlbCBjb250ZXh0IHBhdGggdG8gc3RvcmUgaW5mby5cblx0ICogQHBhcmFtIG9WaWV3IEluc3RhbmNlIG9mIHRoZSB2aWV3LlxuXHQgKi9cblx0YXBwbHlFcnJvck1lc3NhZ2VBbmRUaXRsZTogZnVuY3Rpb24gKHMxOG5NZXNzYWdlVGl0bGU6IHN0cmluZywgczE4bk1lc3NhZ2U6IHN0cmluZywgc0luZm9QYXRoOiBzdHJpbmcsIG9WaWV3OiBWaWV3KSB7XG5cdFx0Y29uc3Qgb0ludGVybmFsTW9kZWxDb250ZXh0ID0gb1ZpZXcuZ2V0QmluZGluZ0NvbnRleHQoXCJpbnRlcm5hbFwiKSBhcyBJbnRlcm5hbE1vZGVsQ29udGV4dDtcblx0XHRvSW50ZXJuYWxNb2RlbENvbnRleHQuc2V0UHJvcGVydHkoc0luZm9QYXRoLCB7fSk7XG5cdFx0b0ludGVybmFsTW9kZWxDb250ZXh0LnNldFByb3BlcnR5KHNJbmZvUGF0aCwge1xuXHRcdFx0ZXJyb3JNZXNzYWdlVGl0bGU6IHMxOG5NZXNzYWdlVGl0bGUsXG5cdFx0XHRlcnJvck1lc3NhZ2U6IHMxOG5NZXNzYWdlLFxuXHRcdFx0c2hvd0Vycm9yOiB0cnVlXG5cdFx0fSk7XG5cdH0sXG5cdC8qKlxuXHQgKiBDaGVja3MgaWYgbXVsdGlwbGUgdW5pdHMgYXJlIHByZXNlbnQuXG5cdCAqXG5cdCAqIEBwYXJhbSBvQ29udGV4dHMgQ29udGV4dHMgb2YgdGhlIFZpc3VhbEZpbHRlclxuXHQgKiBAcGFyYW0gc1VuaXRmaWVsZCBUaGUgcGF0aCBvZiB0aGUgdW5pdCBmaWVsZFxuXHQgKiBAcmV0dXJucyBSZXR1cm5zIGlmIG11bHRpcGxlIHVuaXRzIGFyZSBjb25maWd1cmVkIG9yIG5vdFxuXHQgKi9cblx0Y2hlY2tNdWxpdFVuaXQ6IGZ1bmN0aW9uIChvQ29udGV4dHM6IENvbnRleHRbXSwgc1VuaXRmaWVsZDogc3RyaW5nKSB7XG5cdFx0Y29uc3QgYURhdGEgPSBbXTtcblx0XHRpZiAob0NvbnRleHRzICYmIHNVbml0ZmllbGQpIHtcblx0XHRcdGZvciAobGV0IGkgPSAwOyBpIDwgb0NvbnRleHRzLmxlbmd0aDsgaSsrKSB7XG5cdFx0XHRcdGNvbnN0IGFDb250ZXh0RGF0YSA9IG9Db250ZXh0c1tpXSAmJiAob0NvbnRleHRzW2ldLmdldE9iamVjdCgpIGFzIGFueSk7XG5cdFx0XHRcdGFEYXRhLnB1c2goYUNvbnRleHREYXRhW3NVbml0ZmllbGRdKTtcblx0XHRcdH1cblx0XHR9XG5cdFx0cmV0dXJuICEhYURhdGEucmVkdWNlKGZ1bmN0aW9uIChkYXRhOiBhbnksIGtleTogYW55KSB7XG5cdFx0XHRyZXR1cm4gZGF0YSA9PT0ga2V5ID8gZGF0YSA6IE5hTjtcblx0XHR9KTtcblx0fSxcblxuXHQvKipcblx0ICogU2V0cyBhbiBlcnJvciBtZXNzYWdlIGlmIG11bHRpcGxlIFVPTSBhcmUgcHJlc2VudC5cblx0ICpcblx0ICogQHBhcmFtIG9EYXRhIERhdGEgb2YgdGhlIFZpc3VhbEZpbHRlciBjb250cm9sXG5cdCAqIEBwYXJhbSBvSW50ZXJhY3RpdmVDaGFydCBJbnRlcmFjdGl2ZUNoYXJ0IGluIHRoZSBWaXN1YWxGaWx0ZXIgY29udHJvbFxuXHQgKiBAcGFyYW0gc0luZm9QYXRoIEludGVybmFsIG1vZGVsIGNvbnRleHQgcGF0aCB0byBzdG9yZSBpbmZvLlxuXHQgKiBAcGFyYW0gb1Jlc291cmNlQnVuZGxlIFRoZSByZXNvdXJjZSBidW5kbGVcblx0ICogQHBhcmFtIG9WaWV3IEluc3RhbmNlIG9mIHRoZSB2aWV3XG5cdCAqL1xuXHRzZXRNdWx0aVVPTU1lc3NhZ2U6IGZ1bmN0aW9uIChcblx0XHRvRGF0YTogQ29udGV4dFtdLFxuXHRcdG9JbnRlcmFjdGl2ZUNoYXJ0OiBhbnksXG5cdFx0c0luZm9QYXRoOiBzdHJpbmcsXG5cdFx0b1Jlc291cmNlQnVuZGxlOiBSZXNvdXJjZUJ1bmRsZSxcblx0XHRvVmlldzogVmlld1xuXHQpIHtcblx0XHRjb25zdCB2VU9NID0gb0ludGVyYWN0aXZlQ2hhcnQuZGF0YShcInVvbVwiKTtcblx0XHRjb25zdCBzSXNDdXJyZW5jeSA9IHZVT00gJiYgdlVPTVtcIklTT0N1cnJlbmN5XCJdICYmIHZVT01bXCJJU09DdXJyZW5jeVwiXS4kUGF0aDtcblx0XHRjb25zdCBzSXNVbml0ID0gdlVPTSAmJiB2VU9NW1wiVW5pdFwiXSAmJiB2VU9NW1wiVW5pdFwiXS4kUGF0aDtcblx0XHRjb25zdCBzVW5pdGZpZWxkID0gc0lzQ3VycmVuY3kgfHwgc0lzVW5pdDtcblx0XHRsZXQgczE4bk1lc3NhZ2VUaXRsZSwgczE4bk1lc3NhZ2U7XG5cdFx0aWYgKHNVbml0ZmllbGQpIHtcblx0XHRcdGlmICghdGhpcy5jaGVja011bGl0VW5pdChvRGF0YSwgc1VuaXRmaWVsZCkpIHtcblx0XHRcdFx0aWYgKHNJc0N1cnJlbmN5KSB7XG5cdFx0XHRcdFx0czE4bk1lc3NhZ2VUaXRsZSA9IG9SZXNvdXJjZUJ1bmRsZS5nZXRUZXh0KFwiTV9WSVNVQUxfRklMVEVSU19FUlJPUl9NRVNTQUdFX1RJVExFXCIpO1xuXHRcdFx0XHRcdHMxOG5NZXNzYWdlID0gb1Jlc291cmNlQnVuZGxlLmdldFRleHQoXCJNX1ZJU1VBTF9GSUxURVJTX01VTFRJUExFX0NVUlJFTkNZXCIsIHNVbml0ZmllbGQpO1xuXHRcdFx0XHRcdHRoaXMuYXBwbHlFcnJvck1lc3NhZ2VBbmRUaXRsZShzMThuTWVzc2FnZVRpdGxlLCBzMThuTWVzc2FnZSwgc0luZm9QYXRoLCBvVmlldyk7XG5cdFx0XHRcdFx0TG9nLndhcm5pbmcoYEZpbHRlciBpcyBzZXQgZm9yIG11bHRpcGxlIEN1cnJlbmN5IGZvciR7c1VuaXRmaWVsZH1gKTtcblx0XHRcdFx0fSBlbHNlIGlmIChzSXNVbml0KSB7XG5cdFx0XHRcdFx0czE4bk1lc3NhZ2VUaXRsZSA9IG9SZXNvdXJjZUJ1bmRsZS5nZXRUZXh0KFwiTV9WSVNVQUxfRklMVEVSU19FUlJPUl9NRVNTQUdFX1RJVExFXCIpO1xuXHRcdFx0XHRcdHMxOG5NZXNzYWdlID0gb1Jlc291cmNlQnVuZGxlLmdldFRleHQoXCJNX1ZJU1VBTF9GSUxURVJTX01VTFRJUExFX1VOSVRcIiwgc1VuaXRmaWVsZCk7XG5cdFx0XHRcdFx0dGhpcy5hcHBseUVycm9yTWVzc2FnZUFuZFRpdGxlKHMxOG5NZXNzYWdlVGl0bGUsIHMxOG5NZXNzYWdlLCBzSW5mb1BhdGgsIG9WaWV3KTtcblx0XHRcdFx0XHRMb2cud2FybmluZyhgRmlsdGVyIGlzIHNldCBmb3IgbXVsdGlwbGUgVU9NcyBmb3Ike3NVbml0ZmllbGR9YCk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cdH0sXG5cblx0LyoqXG5cdCAqIFNldHMgYW4gZXJyb3IgbWVzc2FnZSBpZiByZXNwb25zZSBkYXRhIGlzIGVtcHR5LlxuXHQgKlxuXHQgKiBAcGFyYW0gc0luZm9QYXRoIEludGVybmFsIG1vZGVsIGNvbnRleHQgcGF0aCB0byBzdG9yZSBpbmZvLlxuXHQgKiBAcGFyYW0gb1Jlc291cmNlQnVuZGxlIFRoZSByZXNvdXJjZSBidW5kbGVcblx0ICogQHBhcmFtIG9WaWV3IEluc3RhbmNlIG9mIHRoZSB2aWV3XG5cdCAqL1xuXHRzZXROb0RhdGFNZXNzYWdlOiBmdW5jdGlvbiAoc0luZm9QYXRoOiBzdHJpbmcsIG9SZXNvdXJjZUJ1bmRsZTogUmVzb3VyY2VCdW5kbGUsIG9WaWV3OiBWaWV3KSB7XG5cdFx0Y29uc3QgczE4bk1lc3NhZ2VUaXRsZSA9IG9SZXNvdXJjZUJ1bmRsZS5nZXRUZXh0KFwiTV9WSVNVQUxfRklMVEVSU19FUlJPUl9NRVNTQUdFX1RJVExFXCIpO1xuXHRcdGNvbnN0IHMxOG5NZXNzYWdlID0gb1Jlc291cmNlQnVuZGxlLmdldFRleHQoXCJNX1ZJU1VBTF9GSUxURVJfTk9fREFUQV9URVhUXCIpO1xuXHRcdHRoaXMuYXBwbHlFcnJvck1lc3NhZ2VBbmRUaXRsZShzMThuTWVzc2FnZVRpdGxlLCBzMThuTWVzc2FnZSwgc0luZm9QYXRoLCBvVmlldyk7XG5cdH0sXG5cdGNvbnZlcnRGaWx0ZXJDb25kaW9uczogZnVuY3Rpb24gKG9GaWx0ZXJDb25kaXRpb25zOiBhbnkpIHtcblx0XHRjb25zdCBvQ29udmVydGVkQ29uZGl0aW9uczogYW55ID0ge307XG5cdFx0T2JqZWN0LmtleXMob0ZpbHRlckNvbmRpdGlvbnMpLmZvckVhY2goZnVuY3Rpb24gKHNLZXk6IHN0cmluZykge1xuXHRcdFx0Y29uc3QgYUNvbnZlcnRlZENvbmRpdGlvbnMgPSBbXTtcblx0XHRcdGNvbnN0IGFDb25kaXRpb25zID0gb0ZpbHRlckNvbmRpdGlvbnNbc0tleV07XG5cdFx0XHRmb3IgKGxldCBpID0gMDsgaSA8IGFDb25kaXRpb25zLmxlbmd0aDsgaSsrKSB7XG5cdFx0XHRcdGNvbnN0IHZhbHVlcyA9IGFDb25kaXRpb25zW2ldLnZhbHVlMiA/IFthQ29uZGl0aW9uc1tpXS52YWx1ZTEsIGFDb25kaXRpb25zW2ldLnZhbHVlMl0gOiBbYUNvbmRpdGlvbnNbaV0udmFsdWUxXTtcblx0XHRcdFx0YUNvbnZlcnRlZENvbmRpdGlvbnMucHVzaChcblx0XHRcdFx0XHRDb25kaXRpb24uY3JlYXRlQ29uZGl0aW9uKGFDb25kaXRpb25zW2ldLm9wZXJhdG9yLCB2YWx1ZXMsIG51bGwsIG51bGwsIFwiVmFsaWRhdGVkXCIgYXMgQ29uZGl0aW9uVmFsaWRhdGVkKVxuXHRcdFx0XHQpO1xuXHRcdFx0fVxuXHRcdFx0aWYgKGFDb252ZXJ0ZWRDb25kaXRpb25zLmxlbmd0aCkge1xuXHRcdFx0XHRvQ29udmVydGVkQ29uZGl0aW9uc1tzS2V5XSA9IGFDb252ZXJ0ZWRDb25kaXRpb25zO1xuXHRcdFx0fVxuXHRcdH0pO1xuXHRcdHJldHVybiBvQ29udmVydGVkQ29uZGl0aW9ucztcblx0fSxcblx0Z2V0Q3VzdG9tQ29uZGl0aW9uczogZnVuY3Rpb24gKFJhbmdlOiBhbnksIG9WYWxpZFByb3BlcnR5OiBhbnksIHNQcm9wZXJ0eU5hbWU6IGFueSkge1xuXHRcdGxldCB2YWx1ZTEsIHZhbHVlMjtcblx0XHRpZiAob1ZhbGlkUHJvcGVydHkuJFR5cGUgPT09IFwiRWRtLkRhdGVUaW1lT2Zmc2V0XCIpIHtcblx0XHRcdHZhbHVlMSA9IHRoaXMuX3BhcnNlRGF0ZVRpbWUoZ2V0VHlwZUNvbXBsaWFudFZhbHVlKHRoaXMuX2Zvcm1hdERhdGVUaW1lKFJhbmdlLkxvdyksIG9WYWxpZFByb3BlcnR5LiRUeXBlKSk7XG5cdFx0XHR2YWx1ZTIgPSBSYW5nZS5IaWdoID8gdGhpcy5fcGFyc2VEYXRlVGltZShnZXRUeXBlQ29tcGxpYW50VmFsdWUodGhpcy5fZm9ybWF0RGF0ZVRpbWUoUmFuZ2UuSGlnaCksIG9WYWxpZFByb3BlcnR5LiRUeXBlKSkgOiBudWxsO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHR2YWx1ZTEgPSBSYW5nZS5Mb3c7XG5cdFx0XHR2YWx1ZTIgPSBSYW5nZS5IaWdoID8gUmFuZ2UuSGlnaCA6IG51bGw7XG5cdFx0fVxuXHRcdHJldHVybiB7XG5cdFx0XHRvcGVyYXRvcjogUmFuZ2UuT3B0aW9uID8gZ2V0UmFuZ2VQcm9wZXJ0eShSYW5nZS5PcHRpb24uJEVudW1NZW1iZXIgfHwgUmFuZ2UuT3B0aW9uKSA6IG51bGwsXG5cdFx0XHR2YWx1ZTE6IHZhbHVlMSxcblx0XHRcdHZhbHVlMjogdmFsdWUyLFxuXHRcdFx0cGF0aDogc1Byb3BlcnR5TmFtZVxuXHRcdH07XG5cdH0sXG5cdF9wYXJzZURhdGVUaW1lOiBmdW5jdGlvbiAoc1ZhbHVlOiBhbnkpIHtcblx0XHRyZXR1cm4gdGhpcy5fZ2V0RGF0ZVRpbWVUeXBlSW5zdGFuY2UoKS5wYXJzZVZhbHVlKHNWYWx1ZSwgXCJzdHJpbmdcIik7XG5cdH0sXG5cdF9mb3JtYXREYXRlVGltZTogZnVuY3Rpb24gKHNWYWx1ZTogYW55KSB7XG5cdFx0cmV0dXJuIHRoaXMuX2dldERhdGVUaW1lVHlwZUluc3RhbmNlKCkuZm9ybWF0VmFsdWUoc1ZhbHVlLCBcInN0cmluZ1wiKTtcblx0fSxcblx0X2dldERhdGVUaW1lVHlwZUluc3RhbmNlOiBmdW5jdGlvbiAoKSB7XG5cdFx0cmV0dXJuIG5ldyBEYXRlVGltZU9mZnNldCh7IHBhdHRlcm46IFwieXl5eS1NTS1kZFRISDptbTpzc1pcIiwgY2FsZW5kYXJUeXBlOiBcIkdyZWdvcmlhblwiIH0sIHsgVjQ6IHRydWUgfSk7XG5cdH1cbn07XG5cbmV4cG9ydCBkZWZhdWx0IFZpc3VhbEZpbHRlclV0aWxzO1xu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
|
|
@@ -210,9 +210,9 @@ const VisualFilterUtils = {
|
|
|
210
210
|
const oInternalModelContext = oView.getBindingContext("internal") as InternalModelContext;
|
|
211
211
|
oInternalModelContext.setProperty(sInfoPath, {});
|
|
212
212
|
oInternalModelContext.setProperty(sInfoPath, {
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
213
|
+
errorMessageTitle: s18nMessageTitle,
|
|
214
|
+
errorMessage: s18nMessage,
|
|
215
|
+
showError: true
|
|
216
216
|
});
|
|
217
217
|
},
|
|
218
218
|
/**
|