@sapui5/sap.fe.core 1.102.2 → 1.104.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +6 -6
- package/src/sap/fe/core/.library +1 -1
- package/src/sap/fe/core/AppComponent.js +73 -30
- package/src/sap/fe/core/AppComponent.ts +65 -43
- package/src/sap/fe/core/AppStateHandler.js +82 -70
- package/src/sap/fe/core/AppStateHandler.ts +32 -37
- package/src/sap/fe/core/BaseController.js +11 -9
- package/src/sap/fe/core/BaseController.ts +15 -13
- package/src/sap/fe/core/CommonUtils.js +227 -126
- package/src/sap/fe/core/CommonUtils.ts +240 -163
- package/src/sap/fe/core/ExtensionAPI.js +24 -27
- package/src/sap/fe/core/ExtensionAPI.ts +36 -38
- package/src/sap/fe/core/PageController.js +4 -4
- package/src/sap/fe/core/PageController.ts +4 -5
- package/src/sap/fe/core/TemplateComponent.js +1 -1
- package/src/sap/fe/core/TemplateComponent.ts +6 -6
- package/src/sap/fe/core/TemplateModel.js +1 -1
- package/src/sap/fe/core/TemplateModel.ts +1 -1
- package/src/sap/fe/core/buildingBlocks/AttributeModel.js +1 -1
- package/src/sap/fe/core/buildingBlocks/AttributeModel.ts +1 -1
- package/src/sap/fe/core/buildingBlocks/BuildingBlock.js +181 -43
- package/src/sap/fe/core/buildingBlocks/BuildingBlock.ts +150 -24
- package/src/sap/fe/core/buildingBlocks/BuildingBlockRuntime.js +585 -210
- package/src/sap/fe/core/buildingBlocks/BuildingBlockRuntime.ts +246 -96
- package/src/sap/fe/core/buildingBlocks/TraceInfo.js +30 -30
- package/src/sap/fe/core/buildingBlocks/TraceInfo.ts +32 -29
- package/src/sap/fe/core/controllerextensions/EditFlow.js +379 -330
- package/src/sap/fe/core/controllerextensions/EditFlow.ts +253 -245
- package/src/sap/fe/core/controllerextensions/IntentBasedNavigation.js +9 -9
- package/src/sap/fe/core/controllerextensions/IntentBasedNavigation.ts +10 -10
- package/src/sap/fe/core/controllerextensions/InternalEditFlow.js +101 -74
- package/src/sap/fe/core/controllerextensions/InternalEditFlow.ts +69 -79
- package/src/sap/fe/core/controllerextensions/InternalIntentBasedNavigation.js +67 -67
- package/src/sap/fe/core/controllerextensions/InternalIntentBasedNavigation.ts +76 -76
- package/src/sap/fe/core/controllerextensions/InternalRouting.js +85 -77
- package/src/sap/fe/core/controllerextensions/InternalRouting.ts +103 -99
- package/src/sap/fe/core/controllerextensions/KPIManagement.js +66 -68
- package/src/sap/fe/core/controllerextensions/KPIManagement.ts +106 -123
- package/src/sap/fe/core/controllerextensions/MassEdit.js +9 -9
- package/src/sap/fe/core/controllerextensions/MassEdit.ts +20 -27
- package/src/sap/fe/core/controllerextensions/MessageHandler.js +20 -12
- package/src/sap/fe/core/controllerextensions/MessageHandler.ts +21 -14
- package/src/sap/fe/core/controllerextensions/PageReady.js +97 -25
- package/src/sap/fe/core/controllerextensions/PageReady.ts +98 -34
- package/src/sap/fe/core/controllerextensions/Paginator.js +21 -22
- package/src/sap/fe/core/controllerextensions/Paginator.ts +24 -25
- package/src/sap/fe/core/controllerextensions/Placeholder.js +4 -6
- package/src/sap/fe/core/controllerextensions/Placeholder.ts +12 -14
- package/src/sap/fe/core/controllerextensions/Routing.js +10 -11
- package/src/sap/fe/core/controllerextensions/Routing.ts +12 -13
- package/src/sap/fe/core/controllerextensions/Share.js +170 -139
- package/src/sap/fe/core/controllerextensions/Share.ts +117 -118
- package/src/sap/fe/core/controllerextensions/SideEffects.js +46 -50
- package/src/sap/fe/core/controllerextensions/SideEffects.ts +56 -60
- package/src/sap/fe/core/controllerextensions/ViewState.js +200 -131
- package/src/sap/fe/core/controllerextensions/ViewState.ts +141 -148
- package/src/sap/fe/core/controllerextensions/collaboration/ActivityBase.js +5 -5
- package/src/sap/fe/core/controllerextensions/collaboration/ActivityBase.ts +8 -7
- package/src/sap/fe/core/controllerextensions/collaboration/ActivitySync.js +11 -10
- package/src/sap/fe/core/controllerextensions/collaboration/ActivitySync.ts +17 -20
- package/src/sap/fe/core/controllerextensions/collaboration/CollaborationCommon.js +2 -2
- package/src/sap/fe/core/controllerextensions/collaboration/CollaborationCommon.ts +4 -4
- package/src/sap/fe/core/controllerextensions/collaboration/Manage.js +7 -9
- package/src/sap/fe/core/controllerextensions/collaboration/Manage.ts +18 -19
- package/src/sap/fe/core/controllerextensions/editFlow/TransactionHelper.js +190 -141
- package/src/sap/fe/core/controllerextensions/editFlow/TransactionHelper.ts +258 -210
- package/src/sap/fe/core/controllerextensions/editFlow/draft.js +183 -125
- package/src/sap/fe/core/controllerextensions/editFlow/draft.ts +213 -156
- package/src/sap/fe/core/controllerextensions/editFlow/operations.js +164 -140
- package/src/sap/fe/core/controllerextensions/editFlow/operations.ts +180 -150
- package/src/sap/fe/core/controllerextensions/editFlow/sticky.js +24 -26
- package/src/sap/fe/core/controllerextensions/editFlow/sticky.ts +35 -33
- package/src/sap/fe/core/controllerextensions/messageHandler/messageHandling.js +71 -41
- package/src/sap/fe/core/controllerextensions/messageHandler/messageHandling.ts +102 -82
- package/src/sap/fe/core/controllerextensions/routing/RouterProxy.js +61 -71
- package/src/sap/fe/core/controllerextensions/routing/RouterProxy.ts +56 -64
- package/src/sap/fe/core/controls/Any.js +9 -5
- package/src/sap/fe/core/controls/Any.ts +10 -4
- package/src/sap/fe/core/controls/CommandExecution.js +11 -25
- package/src/sap/fe/core/controls/CommandExecution.ts +11 -25
- package/src/sap/fe/core/controls/ConditionalWrapper.js +2 -2
- package/src/sap/fe/core/controls/ConditionalWrapper.ts +3 -3
- package/src/sap/fe/core/controls/CustomFilterFieldContentWrapper.js +22 -22
- package/src/sap/fe/core/controls/CustomFilterFieldContentWrapper.ts +25 -24
- package/src/sap/fe/core/controls/CustomQuickViewPage.js +2 -2
- package/src/sap/fe/core/controls/CustomQuickViewPage.ts +2 -2
- package/src/sap/fe/core/controls/DataLossOrDraftDiscard/DataLossOrDraftDiscardHandler.js +3 -3
- package/src/sap/fe/core/controls/DataLossOrDraftDiscard/DataLossOrDraftDiscardHandler.ts +5 -5
- package/src/sap/fe/core/controls/FieldWrapper.js +2 -2
- package/src/sap/fe/core/controls/FieldWrapper.ts +3 -3
- package/src/sap/fe/core/controls/FileWrapper.js +7 -2
- package/src/sap/fe/core/controls/FileWrapper.ts +15 -11
- package/src/sap/fe/core/controls/FilterBar.js +6 -2
- package/src/sap/fe/core/controls/FilterBar.ts +13 -9
- package/src/sap/fe/core/controls/FormElementWrapper.js +1 -1
- package/src/sap/fe/core/controls/FormElementWrapper.ts +2 -2
- package/src/sap/fe/core/controls/MassEditSelect.js +1 -1
- package/src/sap/fe/core/controls/MassEditSelect.ts +0 -4
- package/src/sap/fe/core/controls/NonComputedVisibleKeyFieldsDialog.fragment.xml +3 -3
- package/src/sap/fe/core/controls/filterbar/VisualFilter.js +16 -12
- package/src/sap/fe/core/controls/filterbar/VisualFilter.ts +20 -22
- package/src/sap/fe/core/controls/filterbar/VisualFilterContainer.js +3 -3
- package/src/sap/fe/core/controls/filterbar/VisualFilterContainer.ts +8 -8
- package/src/sap/fe/core/controls/filterbar/utils/VisualFilterUtils.js +49 -49
- package/src/sap/fe/core/controls/filterbar/utils/VisualFilterUtils.ts +54 -54
- package/src/sap/fe/core/controls/massEdit/MassEditDialog.fragment.xml +8 -2
- package/src/sap/fe/core/controls/massEdit/MassEditField.fragment.xml +22 -35
- package/src/sap/fe/core/controls/massEdit/MassEditHandlers.js +89 -88
- package/src/sap/fe/core/controls/massEdit/MassEditHandlers.ts +107 -106
- package/src/sap/fe/core/converters/ConverterContext.js +26 -33
- package/src/sap/fe/core/converters/ConverterContext.ts +52 -61
- package/src/sap/fe/core/converters/ManifestSettings.js +1 -1
- package/src/sap/fe/core/converters/ManifestSettings.ts +17 -15
- package/src/sap/fe/core/converters/ManifestWrapper.js +59 -45
- package/src/sap/fe/core/converters/ManifestWrapper.ts +55 -45
- package/src/sap/fe/core/converters/MetaModelConverter.js +64 -35
- package/src/sap/fe/core/converters/MetaModelConverter.ts +154 -129
- package/src/sap/fe/core/converters/TemplateConverter.js +21 -20
- package/src/sap/fe/core/converters/TemplateConverter.ts +27 -24
- package/src/sap/fe/core/converters/annotations/DataField.js +58 -35
- package/src/sap/fe/core/converters/annotations/DataField.ts +102 -76
- package/src/sap/fe/core/converters/common/AnnotationConverter.js +1911 -1495
- package/src/sap/fe/core/converters/controls/Common/Action.js +50 -41
- package/src/sap/fe/core/converters/controls/Common/Action.ts +56 -46
- package/src/sap/fe/core/converters/controls/Common/Chart.js +14 -14
- package/src/sap/fe/core/converters/controls/Common/Chart.ts +26 -33
- package/src/sap/fe/core/converters/controls/Common/Criticality.js +3 -3
- package/src/sap/fe/core/converters/controls/Common/Criticality.ts +4 -4
- package/src/sap/fe/core/converters/controls/Common/DataVisualization.js +30 -28
- package/src/sap/fe/core/converters/controls/Common/DataVisualization.ts +60 -61
- package/src/sap/fe/core/converters/controls/Common/Form.js +27 -28
- package/src/sap/fe/core/converters/controls/Common/Form.ts +44 -57
- package/src/sap/fe/core/converters/controls/Common/KPI.js +11 -11
- package/src/sap/fe/core/converters/controls/Common/KPI.ts +49 -52
- package/src/sap/fe/core/converters/controls/Common/Table.js +181 -197
- package/src/sap/fe/core/converters/controls/Common/Table.ts +251 -280
- package/src/sap/fe/core/converters/controls/Common/table/StandardActions.js +119 -119
- package/src/sap/fe/core/converters/controls/Common/table/StandardActions.ts +144 -141
- package/src/sap/fe/core/converters/controls/ListReport/FilterBar.js +45 -41
- package/src/sap/fe/core/converters/controls/ListReport/FilterBar.ts +65 -59
- package/src/sap/fe/core/converters/controls/ListReport/VisualFilters.js +28 -26
- package/src/sap/fe/core/converters/controls/ListReport/VisualFilters.ts +46 -43
- package/src/sap/fe/core/converters/controls/ObjectPage/Avatar.js +9 -9
- package/src/sap/fe/core/converters/controls/ObjectPage/Avatar.ts +14 -13
- package/src/sap/fe/core/converters/controls/ObjectPage/HeaderFacet.js +67 -64
- package/src/sap/fe/core/converters/controls/ObjectPage/HeaderFacet.ts +69 -66
- package/src/sap/fe/core/converters/controls/ObjectPage/SubSection.js +77 -73
- package/src/sap/fe/core/converters/controls/ObjectPage/SubSection.ts +101 -97
- package/src/sap/fe/core/converters/helpers/Aggregation.js +2 -4
- package/src/sap/fe/core/converters/helpers/Aggregation.ts +12 -15
- package/src/sap/fe/core/converters/helpers/BindingHelper.js +31 -31
- package/src/sap/fe/core/converters/helpers/BindingHelper.ts +30 -29
- package/src/sap/fe/core/converters/helpers/ConfigurableObject.js +4 -4
- package/src/sap/fe/core/converters/helpers/ConfigurableObject.ts +9 -9
- package/src/sap/fe/core/converters/helpers/ID.js +48 -46
- package/src/sap/fe/core/converters/helpers/ID.ts +26 -25
- package/src/sap/fe/core/converters/helpers/Key.js +7 -7
- package/src/sap/fe/core/converters/helpers/Key.ts +7 -7
- package/src/sap/fe/core/converters/helpers/SelectionVariantHelper.js +1 -1
- package/src/sap/fe/core/converters/helpers/SelectionVariantHelper.ts +4 -5
- package/src/sap/fe/core/converters/objectPage/FormMenuActions.js +6 -6
- package/src/sap/fe/core/converters/objectPage/FormMenuActions.ts +10 -10
- package/src/sap/fe/core/converters/objectPage/HeaderAndFooterAction.js +46 -62
- package/src/sap/fe/core/converters/objectPage/HeaderAndFooterAction.ts +54 -82
- package/src/sap/fe/core/converters/templates/ListReportConverter.js +55 -42
- package/src/sap/fe/core/converters/templates/ListReportConverter.ts +81 -66
- package/src/sap/fe/core/converters/templates/ObjectPageConverter.js +39 -38
- package/src/sap/fe/core/converters/templates/ObjectPageConverter.ts +52 -61
- package/src/sap/fe/core/designtime/AppComponent.designtime.js +4 -4
- package/src/sap/fe/core/designtime/AppComponent.designtime.ts +4 -4
- package/src/sap/fe/core/formatters/CollaborationFormatter.js +2 -2
- package/src/sap/fe/core/formatters/CollaborationFormatter.ts +3 -3
- package/src/sap/fe/core/formatters/FPMFormatter.js +5 -5
- package/src/sap/fe/core/formatters/FPMFormatter.ts +10 -10
- package/src/sap/fe/core/formatters/KPIFormatter.js +7 -7
- package/src/sap/fe/core/formatters/KPIFormatter.ts +10 -10
- package/src/sap/fe/core/formatters/StandardFormatter.js +96 -0
- package/src/sap/fe/core/formatters/StandardFormatter.ts +70 -0
- package/src/sap/fe/core/formatters/TableFormatter.js +11 -11
- package/src/sap/fe/core/formatters/TableFormatter.ts +12 -12
- package/src/sap/fe/core/formatters/ValueFormatter.js +8 -8
- package/src/sap/fe/core/formatters/ValueFormatter.ts +9 -9
- package/src/sap/fe/core/helpers/AppStartupHelper.js +15 -15
- package/src/sap/fe/core/helpers/AppStartupHelper.ts +37 -40
- package/src/sap/fe/core/helpers/BindingToolkit.js +1832 -0
- package/src/sap/fe/core/helpers/{BindingExpression.ts → BindingToolkit.ts} +396 -269
- package/src/sap/fe/core/helpers/ClassSupport.js +49 -12
- package/src/sap/fe/core/helpers/ClassSupport.ts +37 -10
- package/src/sap/fe/core/helpers/DynamicAnnotationPathHelper.js +2 -2
- package/src/sap/fe/core/helpers/DynamicAnnotationPathHelper.ts +1 -1
- package/src/sap/fe/core/helpers/EditState.js +1 -6
- package/src/sap/fe/core/helpers/EditState.ts +5 -10
- package/src/sap/fe/core/helpers/ExcelFormatHelper.js +2 -2
- package/src/sap/fe/core/helpers/ExcelFormatHelper.ts +4 -4
- package/src/sap/fe/core/helpers/FPMHelper.js +1 -1
- package/src/sap/fe/core/helpers/FPMHelper.ts +2 -2
- package/src/sap/fe/core/helpers/KeepAliveHelper.js +31 -31
- package/src/sap/fe/core/helpers/KeepAliveHelper.ts +52 -56
- package/src/sap/fe/core/helpers/MassEditHelper.js +306 -280
- package/src/sap/fe/core/helpers/MassEditHelper.ts +380 -360
- package/src/sap/fe/core/helpers/MessageStrip.js +81 -0
- package/src/sap/fe/core/helpers/MessageStrip.ts +79 -0
- package/src/sap/fe/core/helpers/ModelHelper.js +25 -25
- package/src/sap/fe/core/helpers/ModelHelper.ts +34 -32
- package/src/sap/fe/core/helpers/PasteHelper.js +3 -10
- package/src/sap/fe/core/helpers/PasteHelper.ts +20 -25
- package/src/sap/fe/core/helpers/SemanticDateOperators.js +1 -1
- package/src/sap/fe/core/helpers/SemanticDateOperators.ts +11 -11
- package/src/sap/fe/core/helpers/SemanticKeyHelper.js +3 -3
- package/src/sap/fe/core/helpers/SemanticKeyHelper.ts +8 -8
- package/src/sap/fe/core/helpers/StableIdHelper.js +12 -12
- package/src/sap/fe/core/helpers/StableIdHelper.ts +12 -12
- package/src/sap/fe/core/helpers/ToES6Promise.js +32 -0
- package/src/sap/fe/core/helpers/ToES6Promise.ts +19 -0
- package/src/sap/fe/core/jsx-runtime/Fragment.js +16 -0
- package/src/sap/fe/core/jsx-runtime/Fragment.ts +3 -0
- package/src/sap/fe/core/jsx-runtime/jsx-control.js +99 -0
- package/src/sap/fe/core/jsx-runtime/jsx-control.ts +82 -0
- package/src/sap/fe/core/jsx-runtime/jsx-xml.js +105 -0
- package/src/sap/fe/core/jsx-runtime/jsx-xml.ts +89 -0
- package/src/sap/fe/core/jsx-runtime/jsx.js +12 -90
- package/src/sap/fe/core/jsx-runtime/jsx.ts +24 -85
- package/src/sap/fe/core/library.js +42 -3
- package/src/sap/fe/core/library.ts +38 -0
- package/src/sap/fe/core/manifestMerger/ChangePageConfiguration.js +3 -3
- package/src/sap/fe/core/manifestMerger/ChangePageConfiguration.ts +2 -2
- package/src/sap/fe/core/messagebundle.properties +39 -63
- package/src/sap/fe/core/messagebundle_ar.properties +25 -39
- package/src/sap/fe/core/messagebundle_bg.properties +25 -39
- package/src/sap/fe/core/messagebundle_ca.properties +25 -39
- package/src/sap/fe/core/messagebundle_cs.properties +25 -39
- package/src/sap/fe/core/messagebundle_cy.properties +25 -39
- package/src/sap/fe/core/messagebundle_da.properties +25 -39
- package/src/sap/fe/core/messagebundle_de.properties +25 -39
- package/src/sap/fe/core/messagebundle_el.properties +26 -40
- package/src/sap/fe/core/messagebundle_en.properties +25 -39
- package/src/sap/fe/core/messagebundle_en_GB.properties +25 -39
- package/src/sap/fe/core/messagebundle_en_US_sappsd.properties +25 -39
- package/src/sap/fe/core/messagebundle_en_US_saprigi.properties +25 -39
- package/src/sap/fe/core/messagebundle_en_US_saptrc.properties +26 -18
- package/src/sap/fe/core/messagebundle_es.properties +27 -41
- package/src/sap/fe/core/messagebundle_es_MX.properties +25 -39
- package/src/sap/fe/core/messagebundle_et.properties +25 -39
- package/src/sap/fe/core/messagebundle_fi.properties +25 -39
- package/src/sap/fe/core/messagebundle_fr.properties +26 -40
- package/src/sap/fe/core/messagebundle_fr_CA.properties +25 -39
- package/src/sap/fe/core/messagebundle_hi.properties +25 -39
- package/src/sap/fe/core/messagebundle_hr.properties +25 -39
- package/src/sap/fe/core/messagebundle_hu.properties +25 -39
- package/src/sap/fe/core/messagebundle_id.properties +25 -39
- package/src/sap/fe/core/messagebundle_it.properties +41 -55
- package/src/sap/fe/core/messagebundle_iw.properties +25 -39
- package/src/sap/fe/core/messagebundle_ja.properties +25 -39
- package/src/sap/fe/core/messagebundle_kk.properties +25 -39
- package/src/sap/fe/core/messagebundle_ko.properties +30 -44
- package/src/sap/fe/core/messagebundle_lt.properties +25 -39
- package/src/sap/fe/core/messagebundle_lv.properties +25 -39
- package/src/sap/fe/core/messagebundle_ms.properties +25 -39
- package/src/sap/fe/core/messagebundle_nl.properties +27 -41
- package/src/sap/fe/core/messagebundle_no.properties +25 -39
- package/src/sap/fe/core/messagebundle_pl.properties +26 -40
- package/src/sap/fe/core/messagebundle_pt.properties +26 -40
- package/src/sap/fe/core/messagebundle_pt_PT.properties +25 -39
- package/src/sap/fe/core/messagebundle_ro.properties +25 -39
- package/src/sap/fe/core/messagebundle_ru.properties +25 -39
- package/src/sap/fe/core/messagebundle_sh.properties +25 -39
- package/src/sap/fe/core/messagebundle_sk.properties +25 -39
- package/src/sap/fe/core/messagebundle_sl.properties +25 -39
- package/src/sap/fe/core/messagebundle_sv.properties +25 -39
- package/src/sap/fe/core/messagebundle_th.properties +25 -39
- package/src/sap/fe/core/messagebundle_tr.properties +25 -39
- package/src/sap/fe/core/messagebundle_uk.properties +25 -39
- package/src/sap/fe/core/messagebundle_vi.properties +25 -39
- package/src/sap/fe/core/messagebundle_zh_CN.properties +25 -39
- package/src/sap/fe/core/messagebundle_zh_TW.properties +25 -39
- package/src/sap/fe/core/services/AsyncComponentServiceFactory.js +2 -2
- package/src/sap/fe/core/services/AsyncComponentServiceFactory.ts +5 -5
- package/src/sap/fe/core/services/CacheHandlerServiceFactory.js +97 -69
- package/src/sap/fe/core/services/CacheHandlerServiceFactory.ts +68 -69
- package/src/sap/fe/core/services/EnvironmentServiceFactory.js +1 -1
- package/src/sap/fe/core/services/EnvironmentServiceFactory.ts +3 -2
- package/src/sap/fe/core/services/NavigationServiceFactory.js +61 -49
- package/src/sap/fe/core/services/NavigationServiceFactory.ts +63 -52
- package/src/sap/fe/core/services/ResourceModelServiceFactory.js +2 -2
- package/src/sap/fe/core/services/ResourceModelServiceFactory.ts +4 -4
- package/src/sap/fe/core/services/RoutingServiceFactory.js +55 -55
- package/src/sap/fe/core/services/RoutingServiceFactory.ts +67 -65
- package/src/sap/fe/core/services/ShellServicesFactory.js +92 -76
- package/src/sap/fe/core/services/ShellServicesFactory.ts +95 -82
- package/src/sap/fe/core/services/SideEffectsServiceFactory.js +61 -61
- package/src/sap/fe/core/services/SideEffectsServiceFactory.ts +102 -92
- package/src/sap/fe/core/services/TemplatedViewServiceFactory.js +224 -198
- package/src/sap/fe/core/services/TemplatedViewServiceFactory.ts +138 -139
- package/src/sap/fe/core/support/CommonHelper.js +3 -2
- package/src/sap/fe/core/support/CommonHelper.ts +9 -13
- package/src/sap/fe/core/support/Diagnostics.js +1 -1
- package/src/sap/fe/core/support/Diagnostics.ts +5 -5
- package/src/sap/fe/core/templating/CommonFormatters.js +84 -0
- package/src/sap/fe/core/templating/CommonFormatters.ts +86 -0
- package/src/sap/fe/core/templating/CriticalityFormatters.js +31 -31
- package/src/sap/fe/core/templating/CriticalityFormatters.ts +42 -40
- package/src/sap/fe/core/templating/DataFieldFormatters.js +8 -8
- package/src/sap/fe/core/templating/DataFieldFormatters.ts +13 -10
- package/src/sap/fe/core/templating/DataModelPathHelper.js +16 -15
- package/src/sap/fe/core/templating/DataModelPathHelper.ts +42 -32
- package/src/sap/fe/core/templating/DisplayModeFormatter.js +1 -1
- package/src/sap/fe/core/templating/DisplayModeFormatter.ts +2 -3
- package/src/sap/fe/core/templating/EntitySetHelper.js +7 -7
- package/src/sap/fe/core/templating/EntitySetHelper.ts +6 -8
- package/src/sap/fe/core/templating/FieldControlHelper.js +35 -34
- package/src/sap/fe/core/templating/FieldControlHelper.ts +29 -46
- package/src/sap/fe/core/templating/FilterHelper.js +16 -15
- package/src/sap/fe/core/templating/FilterHelper.ts +18 -18
- package/src/sap/fe/core/templating/FilterTemplating.js +1 -1
- package/src/sap/fe/core/templating/FilterTemplating.ts +3 -3
- package/src/sap/fe/core/templating/PropertyFormatters.js +7 -7
- package/src/sap/fe/core/templating/PropertyFormatters.ts +21 -19
- package/src/sap/fe/core/templating/PropertyHelper.js +25 -25
- package/src/sap/fe/core/templating/PropertyHelper.ts +25 -26
- package/src/sap/fe/core/templating/UIFormatters.js +152 -95
- package/src/sap/fe/core/templating/UIFormatters.ts +202 -128
- package/src/sap/fe/core/type/Email.js +2 -2
- package/src/sap/fe/core/type/Email.ts +2 -2
- package/src/sap/fe/core/helpers/BindingExpression.js +0 -1732
|
@@ -2,25 +2,25 @@
|
|
|
2
2
|
* SAP UI development toolkit for HTML5 (SAPUI5)
|
|
3
3
|
* (c) Copyright 2009-2021 SAP SE. All rights reserved
|
|
4
4
|
*/
|
|
5
|
-
sap.ui.define(["sap/fe/core/converters/annotations/DataField", "sap/fe/core/helpers/
|
|
5
|
+
sap.ui.define(["sap/fe/core/converters/annotations/DataField", "sap/fe/core/helpers/BindingToolkit", "sap/fe/core/templating/DataModelPathHelper", "../../../helpers/StableIdHelper", "../../helpers/ConfigurableObject", "../../helpers/ID", "../../helpers/Key", "../../ManifestSettings"], function (DataField, BindingToolkit, DataModelPathHelper, StableIdHelper, ConfigurableObject, ID, Key, ManifestSettings) {
|
|
6
6
|
"use strict";
|
|
7
7
|
|
|
8
8
|
var _exports = {};
|
|
9
9
|
var ActionType = ManifestSettings.ActionType;
|
|
10
10
|
var KeyHelper = Key.KeyHelper;
|
|
11
|
-
var
|
|
12
|
-
var
|
|
11
|
+
var getFormStandardActionButtonID = ID.getFormStandardActionButtonID;
|
|
12
|
+
var getFormID = ID.getFormID;
|
|
13
13
|
var Placement = ConfigurableObject.Placement;
|
|
14
14
|
var insertCustomElements = ConfigurableObject.insertCustomElements;
|
|
15
15
|
var generate = StableIdHelper.generate;
|
|
16
16
|
var getTargetObjectPath = DataModelPathHelper.getTargetObjectPath;
|
|
17
17
|
var getTargetEntitySetPath = DataModelPathHelper.getTargetEntitySetPath;
|
|
18
|
-
var
|
|
19
|
-
var
|
|
20
|
-
var
|
|
21
|
-
var
|
|
22
|
-
var
|
|
23
|
-
var
|
|
18
|
+
var pathInModel = BindingToolkit.pathInModel;
|
|
19
|
+
var not = BindingToolkit.not;
|
|
20
|
+
var ifElse = BindingToolkit.ifElse;
|
|
21
|
+
var getExpressionFromAnnotation = BindingToolkit.getExpressionFromAnnotation;
|
|
22
|
+
var equal = BindingToolkit.equal;
|
|
23
|
+
var compileExpression = BindingToolkit.compileExpression;
|
|
24
24
|
var getSemanticObjectPath = DataField.getSemanticObjectPath;
|
|
25
25
|
|
|
26
26
|
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
|
|
@@ -33,6 +33,7 @@ sap.ui.define(["sap/fe/core/converters/annotations/DataField", "sap/fe/core/help
|
|
|
33
33
|
|
|
34
34
|
(function (FormElementType) {
|
|
35
35
|
FormElementType["Default"] = "Default";
|
|
36
|
+
FormElementType["Slot"] = "Slot";
|
|
36
37
|
FormElementType["Annotation"] = "Annotation";
|
|
37
38
|
})(FormElementType || (FormElementType = {}));
|
|
38
39
|
|
|
@@ -41,7 +42,7 @@ sap.ui.define(["sap/fe/core/converters/annotations/DataField", "sap/fe/core/help
|
|
|
41
42
|
/**
|
|
42
43
|
* Returns default format options for text fields on a form.
|
|
43
44
|
*
|
|
44
|
-
* @returns
|
|
45
|
+
* @returns Collection of format options with default values
|
|
45
46
|
*/
|
|
46
47
|
function getDefaultFormatOptionsForForm() {
|
|
47
48
|
return {
|
|
@@ -71,7 +72,7 @@ sap.ui.define(["sap/fe/core/converters/annotations/DataField", "sap/fe/core/help
|
|
|
71
72
|
formElements.push({
|
|
72
73
|
key: KeyHelper.generateKeyFromDataField(field),
|
|
73
74
|
type: FormElementType.Annotation,
|
|
74
|
-
annotationPath: converterContext.getEntitySetBasedAnnotationPath(field.fullyQualifiedName)
|
|
75
|
+
annotationPath: "".concat(converterContext.getEntitySetBasedAnnotationPath(field.fullyQualifiedName), "/"),
|
|
75
76
|
semanticObjectPath: semanticObjectAnnotationPath,
|
|
76
77
|
formatOptions: getDefaultFormatOptionsForForm(),
|
|
77
78
|
isPartOfPreview: isFieldPartOfPreview(field, formPartOfPreview)
|
|
@@ -99,18 +100,18 @@ sap.ui.define(["sap/fe/core/converters/annotations/DataField", "sap/fe/core/help
|
|
|
99
100
|
case "com.sap.vocabularies.UI.v1.DataPoint":
|
|
100
101
|
formElements.push({
|
|
101
102
|
// key: KeyHelper.generateKeyFromDataField(formAnnotation),
|
|
102
|
-
key: "DataPoint::"
|
|
103
|
+
key: "DataPoint::".concat(formAnnotation.qualifier ? formAnnotation.qualifier : ""),
|
|
103
104
|
type: FormElementType.Annotation,
|
|
104
|
-
annotationPath: converterContext.getEntitySetBasedAnnotationPath(formAnnotation.fullyQualifiedName)
|
|
105
|
+
annotationPath: "".concat(converterContext.getEntitySetBasedAnnotationPath(formAnnotation.fullyQualifiedName), "/")
|
|
105
106
|
});
|
|
106
107
|
break;
|
|
107
108
|
|
|
108
109
|
case "com.sap.vocabularies.Communication.v1.Contact":
|
|
109
110
|
formElements.push({
|
|
110
111
|
// key: KeyHelper.generateKeyFromDataField(formAnnotation),
|
|
111
|
-
key: "Contact::"
|
|
112
|
+
key: "Contact::".concat(formAnnotation.qualifier ? formAnnotation.qualifier : ""),
|
|
112
113
|
type: FormElementType.Annotation,
|
|
113
|
-
annotationPath: converterContext.getEntitySetBasedAnnotationPath(formAnnotation.fullyQualifiedName)
|
|
114
|
+
annotationPath: "".concat(converterContext.getEntitySetBasedAnnotationPath(formAnnotation.fullyQualifiedName), "/")
|
|
114
115
|
});
|
|
115
116
|
break;
|
|
116
117
|
|
|
@@ -130,8 +131,8 @@ sap.ui.define(["sap/fe/core/converters/annotations/DataField", "sap/fe/core/help
|
|
|
130
131
|
Object.keys(manifestFormContainer === null || manifestFormContainer === void 0 ? void 0 : manifestFormContainer.fields).forEach(function (fieldId) {
|
|
131
132
|
formElements[fieldId] = {
|
|
132
133
|
key: fieldId,
|
|
133
|
-
id: "CustomFormElement::"
|
|
134
|
-
type: FormElementType.Default,
|
|
134
|
+
id: "CustomFormElement::".concat(fieldId),
|
|
135
|
+
type: manifestFormContainer.fields[fieldId].type || FormElementType.Default,
|
|
135
136
|
template: manifestFormContainer.fields[fieldId].template,
|
|
136
137
|
label: manifestFormContainer.fields[fieldId].label,
|
|
137
138
|
position: manifestFormContainer.fields[fieldId].position || {
|
|
@@ -153,9 +154,9 @@ sap.ui.define(["sap/fe/core/converters/annotations/DataField", "sap/fe/core/help
|
|
|
153
154
|
var sFormContainerId = generate([{
|
|
154
155
|
Facet: facetDefinition
|
|
155
156
|
}]);
|
|
156
|
-
var sAnnotationPath = "/"
|
|
157
|
+
var sAnnotationPath = "/".concat(facetDefinition.fullyQualifiedName);
|
|
157
158
|
var resolvedTarget = converterContext.getEntityTypeAnnotation(facetDefinition.Target.value);
|
|
158
|
-
var isVisible =
|
|
159
|
+
var isVisible = compileExpression(not(equal(true, getExpressionFromAnnotation((_facetDefinition$anno5 = facetDefinition.annotations) === null || _facetDefinition$anno5 === void 0 ? void 0 : (_facetDefinition$anno6 = _facetDefinition$anno5.UI) === null || _facetDefinition$anno6 === void 0 ? void 0 : _facetDefinition$anno6.Hidden))));
|
|
159
160
|
var sEntitySetPath; // resolvedTarget doesn't have a entitySet in case Containments and Paramterized services.
|
|
160
161
|
|
|
161
162
|
if (resolvedTarget.converterContext.getEntitySet() && resolvedTarget.converterContext.getEntitySet() !== converterContext.getEntitySet()) {
|
|
@@ -176,9 +177,9 @@ sap.ui.define(["sap/fe/core/converters/annotations/DataField", "sap/fe/core/help
|
|
|
176
177
|
}
|
|
177
178
|
|
|
178
179
|
var oActionShowDetails = {
|
|
179
|
-
id:
|
|
180
|
+
id: getFormStandardActionButtonID(sFormContainerId, "ShowHideDetails"),
|
|
180
181
|
key: "StandardAction::ShowHideDetails",
|
|
181
|
-
text:
|
|
182
|
+
text: compileExpression(ifElse(equal(pathInModel("showDetails", "internal"), true), pathInModel("T_COMMON_OBJECT_PAGE_HIDE_FORM_CONTAINER_DETAILS", "sap.fe.i18n"), pathInModel("T_COMMON_OBJECT_PAGE_SHOW_FORM_CONTAINER_DETAILS", "sap.fe.i18n"))),
|
|
182
183
|
type: ActionType.ShowFormDetails,
|
|
183
184
|
press: "FormContainerRuntime.toggleDetails"
|
|
184
185
|
};
|
|
@@ -232,8 +233,8 @@ sap.ui.define(["sap/fe/core/converters/annotations/DataField", "sap/fe/core/help
|
|
|
232
233
|
switch (facetDefinition.$Type) {
|
|
233
234
|
case "com.sap.vocabularies.UI.v1.CollectionFacet":
|
|
234
235
|
// Keep only valid children
|
|
235
|
-
|
|
236
|
-
id:
|
|
236
|
+
return {
|
|
237
|
+
id: getFormID({
|
|
237
238
|
Facet: facetDefinition
|
|
238
239
|
}),
|
|
239
240
|
useFormContainerLabels: true,
|
|
@@ -245,11 +246,10 @@ sap.ui.define(["sap/fe/core/converters/annotations/DataField", "sap/fe/core/help
|
|
|
245
246
|
formContainers: getFormContainersForCollection(facetDefinition, converterContext, actions),
|
|
246
247
|
isVisible: isVisible
|
|
247
248
|
};
|
|
248
|
-
return formCollectionDefinition;
|
|
249
249
|
|
|
250
250
|
case "com.sap.vocabularies.UI.v1.ReferenceFacet":
|
|
251
|
-
|
|
252
|
-
id:
|
|
251
|
+
return {
|
|
252
|
+
id: getFormID({
|
|
253
253
|
Facet: facetDefinition
|
|
254
254
|
}),
|
|
255
255
|
useFormContainerLabels: false,
|
|
@@ -257,7 +257,6 @@ sap.ui.define(["sap/fe/core/converters/annotations/DataField", "sap/fe/core/help
|
|
|
257
257
|
formContainers: [getFormContainer(facetDefinition, converterContext, actions)],
|
|
258
258
|
isVisible: isVisible
|
|
259
259
|
};
|
|
260
|
-
return formDefinition;
|
|
261
260
|
|
|
262
261
|
default:
|
|
263
262
|
throw new Error("Cannot create form based on ReferenceURLFacet");
|
|
@@ -267,4 +266,4 @@ sap.ui.define(["sap/fe/core/converters/annotations/DataField", "sap/fe/core/help
|
|
|
267
266
|
_exports.createFormDefinition = createFormDefinition;
|
|
268
267
|
return _exports;
|
|
269
268
|
}, false);
|
|
270
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIkZvcm0udHMiXSwibmFtZXMiOlsiRm9ybUVsZW1lbnRUeXBlIiwiZ2V0RGVmYXVsdEZvcm1hdE9wdGlvbnNGb3JGb3JtIiwidGV4dExpbmVzRWRpdCIsImlzRmllbGRQYXJ0T2ZQcmV2aWV3IiwiZmllbGQiLCJmb3JtUGFydE9mUHJldmlldyIsInZhbHVlT2YiLCJhbm5vdGF0aW9ucyIsIlVJIiwiUGFydE9mUHJldmlldyIsInVuZGVmaW5lZCIsImdldEZvcm1FbGVtZW50c0Zyb21Bbm5vdGF0aW9ucyIsImZhY2V0RGVmaW5pdGlvbiIsImNvbnZlcnRlckNvbnRleHQiLCJmb3JtRWxlbWVudHMiLCJyZXNvbHZlZFRhcmdldCIsImdldEVudGl0eVR5cGVBbm5vdGF0aW9uIiwiVGFyZ2V0IiwidmFsdWUiLCJmb3JtQW5ub3RhdGlvbiIsImFubm90YXRpb24iLCJnZXREYXRhRmllbGRzRnJvbUFubm90YXRpb25zIiwic2VtYW50aWNPYmplY3RBbm5vdGF0aW9uUGF0aCIsImdldFNlbWFudGljT2JqZWN0UGF0aCIsIiRUeXBlIiwiSGlkZGVuIiwicHVzaCIsImtleSIsIktleUhlbHBlciIsImdlbmVyYXRlS2V5RnJvbURhdGFGaWVsZCIsInR5cGUiLCJBbm5vdGF0aW9uIiwiYW5ub3RhdGlvblBhdGgiLCJnZXRFbnRpdHlTZXRCYXNlZEFubm90YXRpb25QYXRoIiwiZnVsbHlRdWFsaWZpZWROYW1lIiwic2VtYW50aWNPYmplY3RQYXRoIiwiZm9ybWF0T3B0aW9ucyIsImlzUGFydE9mUHJldmlldyIsInRlcm0iLCJEYXRhIiwiZm9yRWFjaCIsInF1YWxpZmllciIsImdldEZvcm1FbGVtZW50c0Zyb21NYW5pZmVzdCIsIm1hbmlmZXN0V3JhcHBlciIsImdldE1hbmlmZXN0V3JhcHBlciIsIm1hbmlmZXN0Rm9ybUNvbnRhaW5lciIsImdldEZvcm1Db250YWluZXIiLCJmaWVsZHMiLCJPYmplY3QiLCJrZXlzIiwiZmllbGRJZCIsImlkIiwiRGVmYXVsdCIsInRlbXBsYXRlIiwibGFiZWwiLCJwb3NpdGlvbiIsInBsYWNlbWVudCIsIlBsYWNlbWVudCIsIkFmdGVyIiwiYWN0aW9ucyIsInNGb3JtQ29udGFpbmVySWQiLCJnZW5lcmF0ZSIsIkZhY2V0Iiwic0Fubm90YXRpb25QYXRoIiwiaXNWaXNpYmxlIiwiY29tcGlsZUJpbmRpbmciLCJub3QiLCJlcXVhbCIsImFubm90YXRpb25FeHByZXNzaW9uIiwic0VudGl0eVNldFBhdGgiLCJnZXRFbnRpdHlTZXQiLCJnZXRUYXJnZXRFbnRpdHlTZXRQYXRoIiwiZ2V0RGF0YU1vZGVsT2JqZWN0UGF0aCIsInRhcmdldE9iamVjdCIsImNvbnRhaW5zVGFyZ2V0IiwiZ2V0VGFyZ2V0T2JqZWN0UGF0aCIsImFGb3JtRWxlbWVudHMiLCJpbnNlcnRDdXN0b21FbGVtZW50cyIsImZpbHRlciIsImFjdGlvbiIsImZhY2V0TmFtZSIsImxlbmd0aCIsIm9BY3Rpb25TaG93RGV0YWlscyIsIkZvcm1TdGFuZGFyZEFjdGlvbkJ1dHRvbklEIiwidGV4dCIsImlmRWxzZSIsImJpbmRpbmdFeHByZXNzaW9uIiwiQWN0aW9uVHlwZSIsIlNob3dGb3JtRGV0YWlscyIsInByZXNzIiwic29tZSIsIm9Gb3JtRWxlbWVudCIsImVudGl0eVNldCIsImdldEZvcm1Db250YWluZXJzRm9yQ29sbGVjdGlvbiIsImZvcm1Db250YWluZXJzIiwiRmFjZXRzIiwiZmFjZXQiLCJpc1JlZmVyZW5jZUZhY2V0IiwiY3JlYXRlRm9ybURlZmluaXRpb24iLCJmb3JtQ29sbGVjdGlvbkRlZmluaXRpb24iLCJGb3JtSUQiLCJ1c2VGb3JtQ29udGFpbmVyTGFiZWxzIiwiaGFzRmFjZXRzTm90UGFydE9mUHJldmlldyIsImNoaWxkRmFjZXQiLCJmb3JtRGVmaW5pdGlvbiIsIkVycm9yIl0sIm1hcHBpbmdzIjoiO0FBQUE7QUFDQTtBQUNBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O01Bc0NZQSxlOzthQUFBQSxlO0FBQUFBLElBQUFBLGU7QUFBQUEsSUFBQUEsZTtL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MEdBQXdCQyxFQUF4Qiw0R0FBNEJDLGFBQTVCLGtGQUEyQ0gsT0FBM0MsUUFBeUQsS0FBekU7QUFBQSxXQUQwQixDQUhLO0FBTWhDd0YsVUFBQUEsY0FBYyxFQUFFRCw4QkFBOEIsQ0FBQ2pGLGVBQUQsRUFBa0JDLGdCQUFsQixFQUFvQzhDLE9BQXBDLENBTmQ7QUFPaENLLFVBQUFBLFNBQVMsRUFBRUE7QUFQcUIsU0FBakM7QUFTQSxlQUFPbUMsd0JBQVA7O0FBQ0Q7QUFDQyxZQUFNSyxjQUFjLEdBQUc7QUFDdEJyRCxVQUFBQSxFQUFFLEVBQUVpRCxNQUFNLENBQUM7QUFBRXRDLFlBQUFBLEtBQUssRUFBRWxEO0FBQVQsV0FBRCxDQURZO0FBRXRCeUYsVUFBQUEsc0JBQXNCLEVBQUUsS0FGRjtBQUd0QkMsVUFBQUEseUJBQXlCLEVBQUUsNEJBQUExRixlQUFlLENBQUNMLFdBQWhCLCtHQUE2QkMsRUFBN0IsK0dBQWlDQyxhQUFqQyxvRkFBZ0RILE9BQWhELFFBQThELEtBSG5FO0FBSXRCd0YsVUFBQUEsY0FBYyxFQUFFLENBQUNoRCxnQkFBZ0IsQ0FBQ2xDLGVBQUQsRUFBa0JDLGdCQUFsQixFQUFvQzhDLE9BQXBDLENBQWpCLENBSk07QUFLdEJLLFVBQUFBLFNBQVMsRUFBRUE7QUFMVyxTQUF2QjtBQU9BLGVBQU93QyxjQUFQOztBQUNEO0FBQ0MsY0FBTSxJQUFJQyxLQUFKLENBQVUsK0NBQVYsQ0FBTjtBQXZCRjtBQXlCQSIsInNvdXJjZVJvb3QiOiIuIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcblx0QW5ub3RhdGlvblRlcm0sXG5cdENvbGxlY3Rpb25GYWNldFR5cGVzLFxuXHRDb21tdW5pY2F0aW9uQW5ub3RhdGlvblRlcm1zLFxuXHREYXRhRmllbGRBYnN0cmFjdFR5cGVzLFxuXHRGYWNldFR5cGVzLFxuXHRGaWVsZEdyb3VwLFxuXHRJZGVudGlmaWNhdGlvbixcblx0UGFydE9mUHJldmlldyxcblx0UmVmZXJlbmNlRmFjZXRUeXBlcyxcblx0VUlBbm5vdGF0aW9uVGVybXMsXG5cdFVJQW5ub3RhdGlvblR5cGVzXG59IGZyb20gXCJAc2FwLXV4L3ZvY2FidWxhcmllcy10eXBlc1wiO1xuaW1wb3J0IHsgZ2V0U2VtYW50aWNPYmplY3RQYXRoIH0gZnJvbSBcInNhcC9mZS9jb3JlL2NvbnZlcnRlcnMvYW5ub3RhdGlvbnMvRGF0YUZpZWxkXCI7XG5pbXBvcnQgeyBCYXNlQWN0aW9uLCBDb252ZXJ0ZXJBY3Rpb24gfSBmcm9tIFwic2FwL2ZlL2NvcmUvY29udmVydGVycy9jb250cm9scy9Db21tb24vQWN0aW9uXCI7XG5pbXBvcnQge1xuXHRhbm5vdGF0aW9uRXhwcmVzc2lvbixcblx0YmluZGluZ0V4cHJlc3Npb24sXG5cdEJpbmRpbmdFeHByZXNzaW9uLFxuXHRjb21waWxlQmluZGluZyxcblx0ZXF1YWwsXG5cdGlmRWxzZSxcblx0bm90XG59IGZyb20gXCJzYXAvZmUvY29yZS9oZWxwZXJzL0JpbmRpbmdFeHByZXNzaW9uXCI7XG5pbXBvcnQgeyBnZXRUYXJnZXRFbnRpdHlTZXRQYXRoLCBnZXRUYXJnZXRPYmplY3RQYXRoIH0gZnJvbSBcInNhcC9mZS9jb3JlL3RlbXBsYXRpbmcvRGF0YU1vZGVsUGF0aEhlbHBlclwiO1xuaW1wb3J0IHsgZ2VuZXJhdGUgfSBmcm9tIFwiLi4vLi4vLi4vaGVscGVycy9TdGFibGVJZEhlbHBlclwiO1xuaW1wb3J0IENvbnZlcnRlckNvbnRleHQgZnJvbSBcIi4uLy4uL0NvbnZlcnRlckNvbnRleHRcIjtcbmltcG9ydCB7IENvbmZpZ3VyYWJsZU9iamVjdCwgQ3VzdG9tRWxlbWVudCwgaW5zZXJ0Q3VzdG9tRWxlbWVudHMsIFBsYWNlbWVudCB9IGZyb20gXCIuLi8uLi9oZWxwZXJzL0NvbmZpZ3VyYWJsZU9iamVjdFwiO1xuaW1wb3J0IHsgRm9ybUlELCBGb3JtU3RhbmRhcmRBY3Rpb25CdXR0b25JRCB9IGZyb20gXCIuLi8uLi9oZWxwZXJzL0lEXCI7XG5pbXBvcnQgeyBLZXlIZWxwZXIgfSBmcm9tIFwiLi4vLi4vaGVscGVycy9LZXlcIjtcbmltcG9ydCB7IEFjdGlvblR5cGUsIEZvcm1hdE9wdGlvbnNUeXBlLCBGb3JtTWFuaWZlc3RDb25maWd1cmF0aW9uIH0gZnJvbSBcIi4uLy4uL01hbmlmZXN0U2V0dGluZ3NcIjtcblxuZXhwb3J0IHR5cGUgRm9ybURlZmluaXRpb24gPSB7XG5cdGlkOiBzdHJpbmc7XG5cdHVzZUZvcm1Db250YWluZXJMYWJlbHM6IGJvb2xlYW47XG5cdGhhc0ZhY2V0c05vdFBhcnRPZlByZXZpZXc6IGJvb2xlYW47XG5cdGZvcm1Db250YWluZXJzOiBGb3JtQ29udGFpbmVyW107XG5cdGlzVmlzaWJsZTogQmluZGluZ0V4cHJlc3Npb248Ym9vbGVhbj47XG59O1xuXG5leHBvcnQgZW51bSBGb3JtRWxlbWVudFR5cGUge1xuXHREZWZhdWx0ID0gXCJEZWZhdWx0XCIsXG5cdEFubm90YXRpb24gPSBcIkFubm90YXRpb25cIlxufVxuXG5leHBvcnQgdHlwZSBCYXNlRm9ybUVsZW1lbnQgPSBDb25maWd1cmFibGVPYmplY3QgJiB7XG5cdGlkPzogc3RyaW5nO1xuXHR0eXBlOiBGb3JtRWxlbWVudFR5cGU7XG5cdGxhYmVsPzogc3RyaW5nO1xuXHR2aXNpYmxlPzogQmluZGluZ0V4cHJlc3Npb248Ym9vbGVhbj47XG5cdGZvcm1hdE9wdGlvbnM/OiBGb3JtYXRPcHRpb25zVHlwZTtcbn07XG5cbmV4cG9ydCB0eXBlIEFubm90YXRpb25Gb3JtRWxlbWVudCA9IEJhc2VGb3JtRWxlbWVudCAmIHtcblx0aWRQcmVmaXg/OiBzdHJpbmc7XG5cdGFubm90YXRpb25QYXRoPzogc3RyaW5nO1xuXHRpc1ZhbHVlTXVsdGlsaW5lVGV4dD86IGJvb2xlYW47XG5cdHNlbWFudGljT2JqZWN0UGF0aD86IHN0cmluZztcblx0aXNQYXJ0T2ZQcmV2aWV3PzogYm9vbGVhbjtcbn07XG5cbmV4cG9ydCB0eXBlIEN1c3RvbUZvcm1FbGVtZW50ID0gQ3VzdG9tRWxlbWVudDxcblx0QmFzZUZvcm1FbGVtZW50ICYge1xuXHRcdHR5cGU6IEZvcm1FbGVtZW50VHlwZS5EZWZhdWx0O1xuXHRcdHRlbXBsYXRlOiBzdHJpbmc7XG5cdH1cbj47XG5cbmV4cG9ydCB0eXBlIEZvcm1FbGVtZW50ID0gQ3VzdG9tRm9ybUVsZW1lbnQgfCBBbm5vdGF0aW9uRm9ybUVsZW1lbnQ7XG5cbnR5cGUgRm9ybUNvbnRhaW5lciA9IHtcblx0aWQ/OiBzdHJpbmc7XG5cdGZvcm1FbGVtZW50czogRm9ybUVsZW1lbnRbXTtcblx0YW5ub3RhdGlvblBhdGg6IHN0cmluZztcblx0aXNWaXNpYmxlOiBCaW5kaW5nRXhwcmVzc2lvbjxib29sZWFuPjtcblx0ZW50aXR5U2V0Pzogc3RyaW5nO1xuXHRhY3Rpb25zPzogQ29udmVydGVyQWN0aW9uW10gfCBCYXNlQWN0aW9uW107XG59O1xuXG4vKipcbiAqIFJldHVybnMgZGVmYXVsdCBmb3JtYXQgb3B0aW9ucyBmb3IgdGV4dCBmaWVsZHMgb24gYSBmb3JtLlxuICpcbiAqIEByZXR1cm5zIHtGb3JtYXRPcHRpb25zVHlwZX0gQ29sbGVjdGlvbiBvZiBmb3JtYXQgb3B0aW9ucyB3aXRoIGRlZmF1bHQgdmFsdWVzXG4gKi9cbmZ1bmN0aW9uIGdldERlZmF1bHRGb3JtYXRPcHRpb25zRm9yRm9ybSgpOiBGb3JtYXRPcHRpb25zVHlwZSB7XG5cdHJldHVybiB7XG5cdFx0dGV4dExpbmVzRWRpdDogNFxuXHR9O1xufVxuXG5mdW5jdGlvbiBpc0ZpZWxkUGFydE9mUHJldmlldyhmaWVsZDogRGF0YUZpZWxkQWJzdHJhY3RUeXBlcywgZm9ybVBhcnRPZlByZXZpZXc/OiBQYXJ0T2ZQcmV2aWV3KTogYm9vbGVhbiB7XG5cdC8vIEJvdGggZWFjaCBmb3JtIGFuZCBmaWVsZCBjYW4gaGF2ZSB0aGUgUGFydE9mUHJldmlldyBhbm5vdGF0aW9uLiBPbmx5IGlmIHRoZSBmb3JtIGlzIG5vdCBoaWRkZW4gKG5vdCBwYXJ0T2ZQcmV2aWV3KSB3ZSBhbGxvdyB0b2dnbGluZyBvbiBmaWVsZCBsZXZlbFxuXHRyZXR1cm4gKFxuXHRcdGZvcm1QYXJ0T2ZQcmV2aWV3Py52YWx1ZU9mKCkgPT09IGZhbHNlIHx8XG5cdFx0ZmllbGQuYW5ub3RhdGlvbnM/LlVJPy5QYXJ0T2ZQcmV2aWV3ID09PSB1bmRlZmluZWQgfHxcblx0XHRmaWVsZC5hbm5vdGF0aW9ucz8uVUk/LlBhcnRPZlByZXZpZXcudmFsdWVPZigpID09PSB0cnVlXG5cdCk7XG59XG5cbmZ1bmN0aW9uIGdldEZvcm1FbGVtZW50c0Zyb21Bbm5vdGF0aW9ucyhmYWNldERlZmluaXRpb246IFJlZmVyZW5jZUZhY2V0VHlwZXMsIGNvbnZlcnRlckNvbnRleHQ6IENvbnZlcnRlckNvbnRleHQpOiBBbm5vdGF0aW9uRm9ybUVsZW1lbnRbXSB7XG5cdGNvbnN0IGZvcm1FbGVtZW50czogQW5ub3RhdGlvbkZvcm1FbGVtZW50W10gPSBbXTtcblx0Y29uc3QgcmVzb2x2ZWRUYXJnZXQgPSBjb252ZXJ0ZXJDb250ZXh0LmdldEVudGl0eVR5cGVBbm5vdGF0aW9uKGZhY2V0RGVmaW5pdGlvbi5UYXJnZXQudmFsdWUpO1xuXHRjb25zdCBmb3JtQW5ub3RhdGlvbjogQW5ub3RhdGlvblRlcm08SWRlbnRpZmljYXRpb24+IHwgQW5ub3RhdGlvblRlcm08RmllbGRHcm91cD4gPSByZXNvbHZlZFRhcmdldC5hbm5vdGF0aW9uIGFzXG5cdFx0fCBBbm5vdGF0aW9uVGVybTxJZGVudGlmaWNhdGlvbj5cblx0XHR8IEFubm90YXRpb25UZXJtPEZpZWxkR3JvdXA+O1xuXHRjb252ZXJ0ZXJDb250ZXh0ID0gcmVzb2x2ZWRUYXJnZXQuY29udmVydGVyQ29udGV4dDtcblxuXHRmdW5jdGlvbiBnZXREYXRhRmllbGRzRnJvbUFubm90YXRpb25zKGZpZWxkOiBEYXRhRmllbGRBYnN0cmFjdFR5cGVzLCBmb3JtUGFydE9mUHJldmlldzogUGFydE9mUHJldmlldyB8IHVuZGVmaW5lZCkge1xuXHRcdGNvbnN0IHNlbWFudGljT2JqZWN0QW5ub3RhdGlvblBhdGggPSBnZXRTZW1hbnRpY09iamVjdFBhdGgoY29udmVydGVyQ29udGV4dCwgZmllbGQpO1xuXHRcdGlmIChcblx0XHRcdGZpZWxkLiRUeXBlICE9PSBVSUFubm90YXRpb25UeXBlcy5EYXRhRmllbGRGb3JBY3Rpb24gJiZcblx0XHRcdGZpZWxkLiRUeXBlICE9PSBVSUFubm90YXRpb25UeXBlcy5EYXRhRmllbGRGb3JJbnRlbnRCYXNlZE5hdmlnYXRpb24gJiZcblx0XHRcdGZpZWxkLmFubm90YXRpb25zPy5VST8uSGlkZGVuPy52YWx1ZU9mKCkgIT09IHRydWVcblx0XHQpIHtcblx0XHRcdGZvcm1FbGVtZW50cy5wdXNoKHtcblx0XHRcdFx0a2V5OiBLZXlIZWxwZXIuZ2VuZXJhdGVLZXlGcm9tRGF0YUZpZWxkKGZpZWxkKSxcblx0XHRcdFx0dHlwZTogRm9ybUVsZW1lbnRUeXBlLkFubm90YXRpb24sXG5cdFx0XHRcdGFubm90YXRpb25QYXRoOiBjb252ZXJ0ZXJDb250ZXh0LmdldEVudGl0eVNldEJhc2VkQW5ub3RhdGlvblBhdGgoZmllbGQuZnVsbHlRdWFsaWZpZWROYW1lKSArIFwiL1wiLFxuXHRcdFx0XHRzZW1hbnRpY09iamVjdFBhdGg6IHNlbWFudGljT2JqZWN0QW5ub3RhdGlvblBhdGgsXG5cdFx0XHRcdGZvcm1hdE9wdGlvbnM6IGdldERlZmF1bHRGb3JtYXRPcHRpb25zRm9yRm9ybSgpLFxuXHRcdFx0XHRpc1BhcnRPZlByZXZpZXc6IGlzRmllbGRQYXJ0T2ZQcmV2aWV3KGZpZWxkLCBmb3JtUGFydE9mUHJldmlldylcblx0XHRcdH0pO1xuXHRcdH1cblx0fVxuXG5cdHN3aXRjaCAoZm9ybUFubm90YXRpb24/LnRlcm0pIHtcblx0XHRjYXNlIFVJQW5ub3RhdGlvblRlcm1zLkZpZWxkR3JvdXA6XG5cdFx0XHQoZm9ybUFubm90YXRpb24gYXMgQW5ub3RhdGlvblRlcm08RmllbGRHcm91cD4pLkRhdGEuZm9yRWFjaCgoZmllbGQpID0+XG5cdFx0XHRcdGdldERhdGFGaWVsZHNGcm9tQW5ub3RhdGlvbnMoZmllbGQsIGZhY2V0RGVmaW5pdGlvbi5hbm5vdGF0aW9ucz8uVUk/LlBhcnRPZlByZXZpZXcpXG5cdFx0XHQpO1xuXHRcdFx0YnJlYWs7XG5cdFx0Y2FzZSBVSUFubm90YXRpb25UZXJtcy5JZGVudGlmaWNhdGlvbjpcblx0XHRcdChmb3JtQW5ub3RhdGlvbiBhcyBBbm5vdGF0aW9uVGVybTxJZGVudGlmaWNhdGlvbj4pLmZvckVhY2goKGZpZWxkKSA9PlxuXHRcdFx0XHRnZXREYXRhRmllbGRzRnJvbUFubm90YXRpb25zKGZpZWxkLCBmYWNldERlZmluaXRpb24uYW5ub3RhdGlvbnM/LlVJPy5QYXJ0T2ZQcmV2aWV3KVxuXHRcdFx0KTtcblx0XHRcdGJyZWFrO1xuXHRcdGNhc2UgVUlBbm5vdGF0aW9uVGVybXMuRGF0YVBvaW50OlxuXHRcdFx0Zm9ybUVsZW1lbnRzLnB1c2goe1xuXHRcdFx0XHQvLyBrZXk6IEtleUhlbHBlci5nZW5lcmF0ZUtleUZyb21EYXRhRmllbGQoZm9ybUFubm90YXRpb24pLFxuXHRcdFx0XHRrZXk6IFwiRGF0YVBvaW50OjpcIiArIChmb3JtQW5ub3RhdGlvbi5xdWFsaWZpZXIgPyBmb3JtQW5ub3RhdGlvbi5xdWFsaWZpZXIgOiBcIlwiKSxcblx0XHRcdFx0dHlwZTogRm9ybUVsZW1lbnRUeXBlLkFubm90YXRpb24sXG5cdFx0XHRcdGFubm90YXRpb25QYXRoOiBjb252ZXJ0ZXJDb250ZXh0LmdldEVudGl0eVNldEJhc2VkQW5ub3RhdGlvblBhdGgoZm9ybUFubm90YXRpb24uZnVsbHlRdWFsaWZpZWROYW1lKSArIFwiL1wiXG5cdFx0XHR9KTtcblx0XHRcdGJyZWFrO1xuXHRcdGNhc2UgQ29tbXVuaWNhdGlvbkFubm90YXRpb25UZXJtcy5Db250YWN0OlxuXHRcdFx0Zm9ybUVsZW1lbnRzLnB1c2goe1xuXHRcdFx0XHQvLyBrZXk6IEtleUhlbHBlci5nZW5lcmF0ZUtleUZyb21EYXRhRmllbGQoZm9ybUFubm90YXRpb24pLFxuXHRcdFx0XHRrZXk6IFwiQ29udGFjdDo6XCIgKyAoZm9ybUFubm90YXRpb24ucXVhbGlmaWVyID8gZm9ybUFubm90YXRpb24ucXVhbGlmaWVyIDogXCJcIiksXG5cdFx0XHRcdHR5cGU6IEZvcm1FbGVtZW50VHlwZS5Bbm5vdGF0aW9uLFxuXHRcdFx0XHRhbm5vdGF0aW9uUGF0aDogY29udmVydGVyQ29udGV4dC5nZXRFbnRpdHlTZXRCYXNlZEFubm90YXRpb25QYXRoKGZvcm1Bbm5vdGF0aW9uLmZ1bGx5UXVhbGlmaWVkTmFtZSkgKyBcIi9cIlxuXHRcdFx0fSk7XG5cdFx0XHRicmVhaztcblx0XHRkZWZhdWx0OlxuXHRcdFx0YnJlYWs7XG5cdH1cblx0cmV0dXJuIGZvcm1FbGVtZW50cztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldEZvcm1FbGVtZW50c0Zyb21NYW5pZmVzdChcblx0ZmFjZXREZWZpbml0aW9uOiBSZWZlcmVuY2VGYWNldFR5cGVzLFxuXHRjb252ZXJ0ZXJDb250ZXh0OiBDb252ZXJ0ZXJDb250ZXh0XG4pOiBSZWNvcmQ8c3RyaW5nLCBDdXN0b21Gb3JtRWxlbWVudD4ge1xuXHRjb25zdCBtYW5pZmVzdFdyYXBwZXIgPSBjb252ZXJ0ZXJDb250ZXh0LmdldE1hbmlmZXN0V3JhcHBlcigpO1xuXHRjb25zdCBtYW5pZmVzdEZvcm1Db250YWluZXI6IEZvcm1NYW5pZmVzdENvbmZpZ3VyYXRpb24gPSBtYW5pZmVzdFdyYXBwZXIuZ2V0Rm9ybUNvbnRhaW5lcihmYWNldERlZmluaXRpb24uVGFyZ2V0LnZhbHVlKTtcblx0Y29uc3QgZm9ybUVsZW1lbnRzOiBSZWNvcmQ8c3RyaW5nLCBDdXN0b21Gb3JtRWxlbWVudD4gPSB7fTtcblx0aWYgKG1hbmlmZXN0Rm9ybUNvbnRhaW5lcj8uZmllbGRzKSB7XG5cdFx0T2JqZWN0LmtleXMobWFuaWZlc3RGb3JtQ29udGFpbmVyPy5maWVsZHMpLmZvckVhY2goKGZpZWxkSWQpID0+IHtcblx0XHRcdGZvcm1FbGVtZW50c1tmaWVsZElkXSA9IHtcblx0XHRcdFx0a2V5OiBmaWVsZElkLFxuXHRcdFx0XHRpZDogXCJDdXN0b21Gb3JtRWxlbWVudDo6XCIgKyBmaWVsZElkLFxuXHRcdFx0XHR0eXBlOiBGb3JtRWxlbWVudFR5cGUuRGVmYXVsdCxcblx0XHRcdFx0dGVtcGxhdGU6IG1hbmlmZXN0Rm9ybUNvbnRhaW5lci5maWVsZHNbZmllbGRJZF0udGVtcGxhdGUsXG5cdFx0XHRcdGxhYmVsOiBtYW5pZmVzdEZvcm1Db250YWluZXIuZmllbGRzW2ZpZWxkSWRdLmxhYmVsLFxuXHRcdFx0XHRwb3NpdGlvbjogbWFuaWZlc3RGb3JtQ29udGFpbmVyLmZpZWxkc1tmaWVsZElkXS5wb3NpdGlvbiB8fCB7XG5cdFx0XHRcdFx0cGxhY2VtZW50OiBQbGFjZW1lbnQuQWZ0ZXJcblx0XHRcdFx0fSxcblx0XHRcdFx0Zm9ybWF0T3B0aW9uczoge1xuXHRcdFx0XHRcdC4uLmdldERlZmF1bHRGb3JtYXRPcHRpb25zRm9yRm9ybSgpLFxuXHRcdFx0XHRcdC4uLm1hbmlmZXN0Rm9ybUNvbnRhaW5lci5maWVsZHNbZmllbGRJZF0uZm9ybWF0T3B0aW9uc1xuXHRcdFx0XHR9XG5cdFx0XHR9O1xuXHRcdH0pO1xuXHR9XG5cdHJldHVybiBmb3JtRWxlbWVudHM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRGb3JtQ29udGFpbmVyKFxuXHRmYWNldERlZmluaXRpb246IFJlZmVyZW5jZUZhY2V0VHlwZXMsXG5cdGNvbnZlcnRlckNvbnRleHQ6IENvbnZlcnRlckNvbnRleHQsXG5cdGFjdGlvbnM/OiBCYXNlQWN0aW9uW10gfCBDb252ZXJ0ZXJBY3Rpb25bXVxuKTogRm9ybUNvbnRhaW5lciB7XG5cdGNvbnN0IHNGb3JtQ29udGFpbmVySWQgPSBnZW5lcmF0ZShbeyBGYWNldDogZmFjZXREZWZpbml0aW9uIH1dKTtcblx0Y29uc3Qgc0Fubm90YXRpb25QYXRoID0gXCIvXCIgKyBmYWNldERlZmluaXRpb24uZnVsbHlRdWFsaWZpZWROYW1lO1xuXHRjb25zdCByZXNvbHZlZFRhcmdldCA9IGNvbnZlcnRlckNvbnRleHQuZ2V0RW50aXR5VHlwZUFubm90YXRpb24oZmFjZXREZWZpbml0aW9uLlRhcmdldC52YWx1ZSk7XG5cdGNvbnN0IGlzVmlzaWJsZSA9IGNvbXBpbGVCaW5kaW5nKG5vdChlcXVhbCh0cnVlLCBhbm5vdGF0aW9uRXhwcmVzc2lvbihmYWNldERlZmluaXRpb24uYW5ub3RhdGlvbnM/LlVJPy5IaWRkZW4pKSkpO1xuXHRsZXQgc0VudGl0eVNldFBhdGghOiBzdHJpbmc7XG5cdC8vIHJlc29sdmVkVGFyZ2V0IGRvZXNuJ3QgaGF2ZSBhIGVudGl0eVNldCBpbiBjYXNlIENvbnRhaW5tZW50cyBhbmQgUGFyYW10ZXJpemVkIHNlcnZpY2VzLlxuXHRpZiAoXG5cdFx0cmVzb2x2ZWRUYXJnZXQuY29udmVydGVyQ29udGV4dC5nZXRFbnRpdHlTZXQoKSAmJlxuXHRcdHJlc29sdmVkVGFyZ2V0LmNvbnZlcnRlckNvbnRleHQuZ2V0RW50aXR5U2V0KCkgIT09IGNvbnZlcnRlckNvbnRleHQuZ2V0RW50aXR5U2V0KClcblx0KSB7XG5cdFx0c0VudGl0eVNldFBhdGggPSBnZXRUYXJnZXRFbnRpdHlTZXRQYXRoKHJlc29sdmVkVGFyZ2V0LmNvbnZlcnRlckNvbnRleHQuZ2V0RGF0YU1vZGVsT2JqZWN0UGF0aCgpKTtcblx0fSBlbHNlIGlmIChyZXNvbHZlZFRhcmdldC5jb252ZXJ0ZXJDb250ZXh0LmdldERhdGFNb2RlbE9iamVjdFBhdGgoKS50YXJnZXRPYmplY3Q/LmNvbnRhaW5zVGFyZ2V0ID09PSB0cnVlKSB7XG5cdFx0c0VudGl0eVNldFBhdGggPSBnZXRUYXJnZXRPYmplY3RQYXRoKHJlc29sdmVkVGFyZ2V0LmNvbnZlcnRlckNvbnRleHQuZ2V0RGF0YU1vZGVsT2JqZWN0UGF0aCgpLCBmYWxzZSk7XG5cdH1cblx0Y29uc3QgYUZvcm1FbGVtZW50cyA9IGluc2VydEN1c3RvbUVsZW1lbnRzKFxuXHRcdGdldEZvcm1FbGVtZW50c0Zyb21Bbm5vdGF0aW9ucyhmYWNldERlZmluaXRpb24sIGNvbnZlcnRlckNvbnRleHQpLFxuXHRcdGdldEZvcm1FbGVtZW50c0Zyb21NYW5pZmVzdChmYWNldERlZmluaXRpb24sIGNvbnZlcnRlckNvbnRleHQpLFxuXHRcdHsgZm9ybWF0T3B0aW9uczogXCJvdmVyd3JpdGVcIiB9XG5cdCk7XG5cblx0YWN0aW9ucyA9IGFjdGlvbnMgIT09IHVuZGVmaW5lZCA/IGFjdGlvbnMuZmlsdGVyKChhY3Rpb24pID0+IGFjdGlvbi5mYWNldE5hbWUgPT0gZmFjZXREZWZpbml0aW9uLmZ1bGx5UXVhbGlmaWVkTmFtZSkgOiBbXTtcblx0aWYgKGFjdGlvbnMubGVuZ3RoID09PSAwKSB7XG5cdFx0YWN0aW9ucyA9IHVuZGVmaW5lZDtcblx0fVxuXG5cdGNvbnN0IG9BY3Rpb25TaG93RGV0YWlsczogQmFzZUFjdGlvbiA9IHtcblx0XHRpZDogRm9ybVN0YW5kYXJkQWN0aW9uQnV0dG9uSUQoc0Zvcm1Db250YWluZXJJZCwgXCJTaG93SGlkZURldGFpbHNcIiksXG5cdFx0a2V5OiBcIlN0YW5kYXJkQWN0aW9uOjpTaG93SGlkZURldGFpbHNcIixcblx0XHR0ZXh0OiBjb21waWxlQmluZGluZyhcblx0XHRcdGlmRWxzZShcblx0XHRcdFx0ZXF1YWwoYmluZGluZ0V4cHJlc3Npb24oXCJzaG93RGV0YWlsc1wiLCBcImludGVybmFsXCIpLCB0cnVlKSxcblx0XHRcdFx0YmluZGluZ0V4cHJlc3Npb24oXCJUX0NPTU1PTl9PQkpFQ1RfUEFHRV9ISURFX0ZPUk1fQ09OVEFJTkVSX0RFVEFJTFNcIiwgXCJzYXAuZmUuaTE4blwiKSxcblx0XHRcdFx0YmluZGluZ0V4cHJlc3Npb24oXCJUX0NPTU1PTl9PQkpFQ1RfUEFHRV9TSE9XX0ZPUk1fQ09OVEFJTkVSX0RFVEFJTFNcIiwgXCJzYXAuZmUuaTE4blwiKVxuXHRcdFx0KVxuXHRcdCksXG5cdFx0dHlwZTogQWN0aW9uVHlwZS5TaG93Rm9ybURldGFpbHMsXG5cdFx0cHJlc3M6IFwiRm9ybUNvbnRhaW5lclJ1bnRpbWUudG9nZ2xlRGV0YWlsc1wiXG5cdH07XG5cblx0aWYgKFxuXHRcdGZhY2V0RGVmaW5pdGlvbi5hbm5vdGF0aW9ucz8uVUk/LlBhcnRPZlByZXZpZXc/LnZhbHVlT2YoKSAhPT0gZmFsc2UgJiZcblx0XHRhRm9ybUVsZW1lbnRzLnNvbWUoKG9Gb3JtRWxlbWVudCkgPT4gb0Zvcm1FbGVtZW50LmlzUGFydE9mUHJldmlldyA9PT0gZmFsc2UpXG5cdCkge1xuXHRcdGlmIChhY3Rpb25zICE9PSB1bmRlZmluZWQpIHtcblx0XHRcdGFjdGlvbnMucHVzaChvQWN0aW9uU2hvd0RldGFpbHMpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRhY3Rpb25zID0gW29BY3Rpb25TaG93RGV0YWlsc107XG5cdFx0fVxuXHR9XG5cblx0cmV0dXJuIHtcblx0XHRpZDogc0Zvcm1Db250YWluZXJJZCxcblx0XHRmb3JtRWxlbWVudHM6IGFGb3JtRWxlbWVudHMsXG5cdFx0YW5ub3RhdGlvblBhdGg6IHNBbm5vdGF0aW9uUGF0aCxcblx0XHRpc1Zpc2libGU6IGlzVmlzaWJsZSxcblx0XHRlbnRpdHlTZXQ6IHNFbnRpdHlTZXRQYXRoLFxuXHRcdGFjdGlvbnM6IGFjdGlvbnNcblx0fTtcbn1cblxuZnVuY3Rpb24gZ2V0Rm9ybUNvbnRhaW5lcnNGb3JDb2xsZWN0aW9uKFxuXHRmYWNldERlZmluaXRpb246IENvbGxlY3Rpb25GYWNldFR5cGVzLFxuXHRjb252ZXJ0ZXJDb250ZXh0OiBDb252ZXJ0ZXJDb250ZXh0LFxuXHRhY3Rpb25zPzogQmFzZUFjdGlvbltdIHwgQ29udmVydGVyQWN0aW9uW11cbik6IEZvcm1Db250YWluZXJbXSB7XG5cdGNvbnN0IGZvcm1Db250YWluZXJzOiBGb3JtQ29udGFpbmVyW10gPSBbXTtcblx0ZmFjZXREZWZpbml0aW9uLkZhY2V0cz8uZm9yRWFjaCgoZmFjZXQpID0+IHtcblx0XHQvLyBJZ25vcmUgbGV2ZWwgMyBjb2xsZWN0aW9uIGZhY2V0XG5cdFx0aWYgKGZhY2V0LiRUeXBlID09PSBVSUFubm90YXRpb25UeXBlcy5Db2xsZWN0aW9uRmFjZXQpIHtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cdFx0Zm9ybUNvbnRhaW5lcnMucHVzaChnZXRGb3JtQ29udGFpbmVyKGZhY2V0IGFzIFJlZmVyZW5jZUZhY2V0VHlwZXMsIGNvbnZlcnRlckNvbnRleHQsIGFjdGlvbnMpKTtcblx0fSk7XG5cdHJldHVybiBmb3JtQ29udGFpbmVycztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzUmVmZXJlbmNlRmFjZXQoZmFjZXREZWZpbml0aW9uOiBGYWNldFR5cGVzKTogZmFjZXREZWZpbml0aW9uIGlzIFJlZmVyZW5jZUZhY2V0VHlwZXMge1xuXHRyZXR1cm4gZmFjZXREZWZpbml0aW9uLiRUeXBlID09PSBVSUFubm90YXRpb25UeXBlcy5SZWZlcmVuY2VGYWNldDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUZvcm1EZWZpbml0aW9uKFxuXHRmYWNldERlZmluaXRpb246IEZhY2V0VHlwZXMsXG5cdGlzVmlzaWJsZTogQmluZGluZ0V4cHJlc3Npb248Ym9vbGVhbj4sXG5cdGNvbnZlcnRlckNvbnRleHQ6IENvbnZlcnRlckNvbnRleHQsXG5cdGFjdGlvbnM/OiBCYXNlQWN0aW9uW10gfCBDb252ZXJ0ZXJBY3Rpb25bXVxuKTogRm9ybURlZmluaXRpb24ge1xuXHRzd2l0Y2ggKGZhY2V0RGVmaW5pdGlvbi4kVHlwZSkge1xuXHRcdGNhc2UgVUlBbm5vdGF0aW9uVHlwZXMuQ29sbGVjdGlvbkZhY2V0OlxuXHRcdFx0Ly8gS2VlcCBvbmx5IHZhbGlkIGNoaWxkcmVuXG5cdFx0XHRjb25zdCBmb3JtQ29sbGVjdGlvbkRlZmluaXRpb24gPSB7XG5cdFx0XHRcdGlkOiBGb3JtSUQoeyBGYWNldDogZmFjZXREZWZpbml0aW9uIH0pLFxuXHRcdFx0XHR1c2VGb3JtQ29udGFpbmVyTGFiZWxzOiB0cnVlLFxuXHRcdFx0XHRoYXNGYWNldHNOb3RQYXJ0T2ZQcmV2aWV3OiBmYWNldERlZmluaXRpb24uRmFjZXRzLnNvbWUoXG5cdFx0XHRcdFx0KGNoaWxkRmFjZXQpID0+IGNoaWxkRmFjZXQuYW5ub3RhdGlvbnM/LlVJPy5QYXJ0T2ZQcmV2aWV3Py52YWx1ZU9mKCkgPT09IGZhbHNlXG5cdFx0XHRcdCksXG5cdFx0XHRcdGZvcm1Db250YWluZXJzOiBnZXRGb3JtQ29udGFpbmVyc0ZvckNvbGxlY3Rpb24oZmFjZXREZWZpbml0aW9uLCBjb252ZXJ0ZXJDb250ZXh0LCBhY3Rpb25zKSxcblx0XHRcdFx0aXNWaXNpYmxlOiBpc1Zpc2libGVcblx0XHRcdH07XG5cdFx0XHRyZXR1cm4gZm9ybUNvbGxlY3Rpb25EZWZpbml0aW9uO1xuXHRcdGNhc2UgVUlBbm5vdGF0aW9uVHlwZXMuUmVmZXJlbmNlRmFjZXQ6XG5cdFx0XHRjb25zdCBmb3JtRGVmaW5pdGlvbiA9IHtcblx0XHRcdFx0aWQ6IEZvcm1JRCh7IEZhY2V0OiBmYWNldERlZmluaXRpb24gfSksXG5cdFx0XHRcdHVzZUZvcm1Db250YWluZXJMYWJlbHM6IGZhbHNlLFxuXHRcdFx0XHRoYXNGYWNldHNOb3RQYXJ0T2ZQcmV2aWV3OiBmYWNldERlZmluaXRpb24uYW5ub3RhdGlvbnM/LlVJPy5QYXJ0T2ZQcmV2aWV3Py52YWx1ZU9mKCkgPT09IGZhbHNlLFxuXHRcdFx0XHRmb3JtQ29udGFpbmVyczogW2dldEZvcm1Db250YWluZXIoZmFjZXREZWZpbml0aW9uLCBjb252ZXJ0ZXJDb250ZXh0LCBhY3Rpb25zKV0sXG5cdFx0XHRcdGlzVmlzaWJsZTogaXNWaXNpYmxlXG5cdFx0XHR9O1xuXHRcdFx0cmV0dXJuIGZvcm1EZWZpbml0aW9uO1xuXHRcdGRlZmF1bHQ6XG5cdFx0XHR0aHJvdyBuZXcgRXJyb3IoXCJDYW5ub3QgY3JlYXRlIGZvcm0gYmFzZWQgb24gUmVmZXJlbmNlVVJMRmFjZXRcIik7XG5cdH1cbn1cbiJdfQ==
|
|
269
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIkZvcm0udHMiXSwibmFtZXMiOlsiRm9ybUVsZW1lbnRUeXBlIiwiZ2V0RGVmYXVsdEZvcm1hdE9wdGlvbnNGb3JGb3JtIiwidGV4dExpbmVzRWRpdCIsImlzRmllbGRQYXJ0T2ZQcmV2aWV3IiwiZmllbGQiLCJmb3JtUGFydE9mUHJldmlldyIsInZhbHVlT2YiLCJhbm5vdGF0aW9ucyIsIlVJIiwiUGFydE9mUHJldmlldyIsInVuZGVmaW5lZCIsImdldEZvcm1FbGVtZW50c0Zyb21Bbm5vdGF0aW9ucyIsImZhY2V0RGVmaW5pdGlvbiIsImNvbnZlcnRlckNvbnRleHQiLCJmb3JtRWxlbWVudHMiLCJyZXNvbHZlZFRhcmdldCIsImdldEVudGl0eVR5cGVBbm5vdGF0aW9uIiwiVGFyZ2V0IiwidmFsdWUiLCJmb3JtQW5ub3RhdGlvbiIsImFubm90YXRpb24iLCJnZXREYXRhRmllbGRzRnJvbUFubm90YXRpb25zIiwic2VtYW50aWNPYmplY3RBbm5vdGF0aW9uUGF0aCIsImdldFNlbWFudGljT2JqZWN0UGF0aCIsIiRUeXBlIiwiSGlkZGVuIiwicHVzaCIsImtleSIsIktleUhlbHBlciIsImdlbmVyYXRlS2V5RnJvbURhdGFGaWVsZCIsInR5cGUiLCJBbm5vdGF0aW9uIiwiYW5ub3RhdGlvblBhdGgiLCJnZXRFbnRpdHlTZXRCYXNlZEFubm90YXRpb25QYXRoIiwiZnVsbHlRdWFsaWZpZWROYW1lIiwic2VtYW50aWNPYmplY3RQYXRoIiwiZm9ybWF0T3B0aW9ucyIsImlzUGFydE9mUHJldmlldyIsInRlcm0iLCJEYXRhIiwiZm9yRWFjaCIsInF1YWxpZmllciIsImdldEZvcm1FbGVtZW50c0Zyb21NYW5pZmVzdCIsIm1hbmlmZXN0V3JhcHBlciIsImdldE1hbmlmZXN0V3JhcHBlciIsIm1hbmlmZXN0Rm9ybUNvbnRhaW5lciIsImdldEZvcm1Db250YWluZXIiLCJmaWVsZHMiLCJPYmplY3QiLCJrZXlzIiwiZmllbGRJZCIsImlkIiwiRGVmYXVsdCIsInRlbXBsYXRlIiwibGFiZWwiLCJwb3NpdGlvbiIsInBsYWNlbWVudCIsIlBsYWNlbWVudCIsIkFmdGVyIiwiYWN0aW9ucyIsInNGb3JtQ29udGFpbmVySWQiLCJnZW5lcmF0ZSIsIkZhY2V0Iiwic0Fubm90YXRpb25QYXRoIiwiaXNWaXNpYmxlIiwiY29tcGlsZUV4cHJlc3Npb24iLCJub3QiLCJlcXVhbCIsImdldEV4cHJlc3Npb25Gcm9tQW5ub3RhdGlvbiIsInNFbnRpdHlTZXRQYXRoIiwiZ2V0RW50aXR5U2V0IiwiZ2V0VGFyZ2V0RW50aXR5U2V0UGF0aCIsImdldERhdGFNb2RlbE9iamVjdFBhdGgiLCJ0YXJnZXRPYmplY3QiLCJjb250YWluc1RhcmdldCIsImdldFRhcmdldE9iamVjdFBhdGgiLCJhRm9ybUVsZW1lbnRzIiwiaW5zZXJ0Q3VzdG9tRWxlbWVudHMiLCJmaWx0ZXIiLCJhY3Rpb24iLCJmYWNldE5hbWUiLCJsZW5ndGgiLCJvQWN0aW9uU2hvd0RldGFpbHMiLCJnZXRGb3JtU3RhbmRhcmRBY3Rpb25CdXR0b25JRCIsInRleHQiLCJpZkVsc2UiLCJwYXRoSW5Nb2RlbCIsIkFjdGlvblR5cGUiLCJTaG93Rm9ybURldGFpbHMiLCJwcmVzcyIsInNvbWUiLCJvRm9ybUVsZW1lbnQiLCJlbnRpdHlTZXQiLCJnZXRGb3JtQ29udGFpbmVyc0ZvckNvbGxlY3Rpb24iLCJmb3JtQ29udGFpbmVycyIsIkZhY2V0cyIsImZhY2V0IiwiaXNSZWZlcmVuY2VGYWNldCIsImNyZWF0ZUZvcm1EZWZpbml0aW9uIiwiZ2V0Rm9ybUlEIiwidXNlRm9ybUNvbnRhaW5lckxhYmVscyIsImhhc0ZhY2V0c05vdFBhcnRPZlByZXZpZXciLCJjaGlsZEZhY2V0IiwiRXJyb3IiXSwibWFwcGluZ3MiOiI7QUFBQTtBQUNBO0FBQ0E7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7TUFnQ1lBLGU7O2FBQUFBLGU7QUFBQUEsSUFBQUEsZTtBQUFBQSxJQUFBQSxlO0FBQUFBLElBQUFBLGU7S0FBQUEsZSxLQUFBQSxlOzs7O0FB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d0JDLEVBQXhCLDRHQUE0QkMsYUFBNUIsa0ZBQTJDSCxPQUEzQyxRQUF5RCxLQUF6RTtBQUFBLFdBRDBCLENBSHJCO0FBTU53RixVQUFBQSxjQUFjLEVBQUVELDhCQUE4QixDQUFDakYsZUFBRCxFQUFrQkMsZ0JBQWxCLEVBQW9DOEMsT0FBcEMsQ0FOeEM7QUFPTkssVUFBQUEsU0FBUyxFQUFFQTtBQVBMLFNBQVA7O0FBU0Q7QUFDQyxlQUFPO0FBQ05iLFVBQUFBLEVBQUUsRUFBRWdELFNBQVMsQ0FBQztBQUFFckMsWUFBQUEsS0FBSyxFQUFFbEQ7QUFBVCxXQUFELENBRFA7QUFFTndGLFVBQUFBLHNCQUFzQixFQUFFLEtBRmxCO0FBR05DLFVBQUFBLHlCQUF5QixFQUFFLDRCQUFBekYsZUFBZSxDQUFDTCxXQUFoQiwrR0FBNkJDLEVBQTdCLCtHQUFpQ0MsYUFBakMsb0ZBQWdESCxPQUFoRCxRQUE4RCxLQUhuRjtBQUlOd0YsVUFBQUEsY0FBYyxFQUFFLENBQUNoRCxnQkFBZ0IsQ0FBQ2xDLGVBQUQsRUFBa0JDLGdCQUFsQixFQUFvQzhDLE9BQXBDLENBQWpCLENBSlY7QUFLTkssVUFBQUEsU0FBUyxFQUFFQTtBQUxMLFNBQVA7O0FBT0Q7QUFDQyxjQUFNLElBQUl1QyxLQUFKLENBQVUsK0NBQVYsQ0FBTjtBQXJCRjtBQXVCQSIsInNvdXJjZVJvb3QiOiIuIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbXVuaWNhdGlvbkFubm90YXRpb25UZXJtcywgQ29udGFjdCB9IGZyb20gXCJAc2FwLXV4L3ZvY2FidWxhcmllcy10eXBlcy92b2NhYnVsYXJpZXMvQ29tbXVuaWNhdGlvblwiO1xuaW1wb3J0IHR5cGUge1xuXHRDb2xsZWN0aW9uRmFjZXRUeXBlcyxcblx0RGF0YUZpZWxkQWJzdHJhY3RUeXBlcyxcblx0RGF0YVBvaW50LFxuXHRGYWNldFR5cGVzLFxuXHRGaWVsZEdyb3VwLFxuXHRJZGVudGlmaWNhdGlvbixcblx0UGFydE9mUHJldmlldyxcblx0UmVmZXJlbmNlRmFjZXRUeXBlc1xufSBmcm9tIFwiQHNhcC11eC92b2NhYnVsYXJpZXMtdHlwZXMvdm9jYWJ1bGFyaWVzL1VJXCI7XG5pbXBvcnQgeyBVSUFubm90YXRpb25UZXJtcywgVUlBbm5vdGF0aW9uVHlwZXMgfSBmcm9tIFwiQHNhcC11eC92b2NhYnVsYXJpZXMtdHlwZXMvdm9jYWJ1bGFyaWVzL1VJXCI7XG5pbXBvcnQgeyBnZXRTZW1hbnRpY09iamVjdFBhdGggfSBmcm9tIFwic2FwL2ZlL2NvcmUvY29udmVydGVycy9hbm5vdGF0aW9ucy9EYXRhRmllbGRcIjtcbmltcG9ydCB0eXBlIHsgQmFzZUFjdGlvbiwgQ29udmVydGVyQWN0aW9uIH0gZnJvbSBcInNhcC9mZS9jb3JlL2NvbnZlcnRlcnMvY29udHJvbHMvQ29tbW9uL0FjdGlvblwiO1xuaW1wb3J0IHR5cGUgeyBDb21waWxlZEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbiB9IGZyb20gXCJzYXAvZmUvY29yZS9oZWxwZXJzL0JpbmRpbmdUb29sa2l0XCI7XG5pbXBvcnQgeyBjb21waWxlRXhwcmVzc2lvbiwgZXF1YWwsIGdldEV4cHJlc3Npb25Gcm9tQW5ub3RhdGlvbiwgaWZFbHNlLCBub3QsIHBhdGhJbk1vZGVsIH0gZnJvbSBcInNhcC9mZS9jb3JlL2hlbHBlcnMvQmluZGluZ1Rvb2xraXRcIjtcbmltcG9ydCB7IGdldFRhcmdldEVudGl0eVNldFBhdGgsIGdldFRhcmdldE9iamVjdFBhdGggfSBmcm9tIFwic2FwL2ZlL2NvcmUvdGVtcGxhdGluZy9EYXRhTW9kZWxQYXRoSGVscGVyXCI7XG5pbXBvcnQgeyBnZW5lcmF0ZSB9IGZyb20gXCIuLi8uLi8uLi9oZWxwZXJzL1N0YWJsZUlkSGVscGVyXCI7XG5pbXBvcnQgdHlwZSBDb252ZXJ0ZXJDb250ZXh0IGZyb20gXCIuLi8uLi9Db252ZXJ0ZXJDb250ZXh0XCI7XG5pbXBvcnQgdHlwZSB7IENvbmZpZ3VyYWJsZU9iamVjdCwgQ3VzdG9tRWxlbWVudCB9IGZyb20gXCIuLi8uLi9oZWxwZXJzL0NvbmZpZ3VyYWJsZU9iamVjdFwiO1xuaW1wb3J0IHsgaW5zZXJ0Q3VzdG9tRWxlbWVudHMsIFBsYWNlbWVudCB9IGZyb20gXCIuLi8uLi9oZWxwZXJzL0NvbmZpZ3VyYWJsZU9iamVjdFwiO1xuaW1wb3J0IHsgZ2V0Rm9ybUlELCBnZXRGb3JtU3RhbmRhcmRBY3Rpb25CdXR0b25JRCB9IGZyb20gXCIuLi8uLi9oZWxwZXJzL0lEXCI7XG5pbXBvcnQgeyBLZXlIZWxwZXIgfSBmcm9tIFwiLi4vLi4vaGVscGVycy9LZXlcIjtcbmltcG9ydCB0eXBlIHsgRm9ybWF0T3B0aW9uc1R5cGUsIEZvcm1NYW5pZmVzdENvbmZpZ3VyYXRpb24gfSBmcm9tIFwiLi4vLi4vTWFuaWZlc3RTZXR0aW5nc1wiO1xuaW1wb3J0IHsgQWN0aW9uVHlwZSB9IGZyb20gXCIuLi8uLi9NYW5pZmVzdFNldHRpbmdzXCI7XG5cbmV4cG9ydCB0eXBlIEZvcm1EZWZpbml0aW9uID0ge1xuXHRpZDogc3RyaW5nO1xuXHR1c2VGb3JtQ29udGFpbmVyTGFiZWxzOiBib29sZWFuO1xuXHRoYXNGYWNldHNOb3RQYXJ0T2ZQcmV2aWV3OiBib29sZWFuO1xuXHRmb3JtQ29udGFpbmVyczogRm9ybUNvbnRhaW5lcltdO1xuXHRpc1Zpc2libGU6IENvbXBpbGVkQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uO1xufTtcblxuZXhwb3J0IGVudW0gRm9ybUVsZW1lbnRUeXBlIHtcblx0RGVmYXVsdCA9IFwiRGVmYXVsdFwiLFxuXHRTbG90ID0gXCJTbG90XCIsXG5cdEFubm90YXRpb24gPSBcIkFubm90YXRpb25cIlxufVxuXG5leHBvcnQgdHlwZSBCYXNlRm9ybUVsZW1lbnQgPSBDb25maWd1cmFibGVPYmplY3QgJiB7XG5cdGlkPzogc3RyaW5nO1xuXHR0eXBlOiBGb3JtRWxlbWVudFR5cGU7XG5cdGxhYmVsPzogc3RyaW5nO1xuXHR2aXNpYmxlPzogQ29tcGlsZWRCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb247XG5cdGZvcm1hdE9wdGlvbnM/OiBGb3JtYXRPcHRpb25zVHlwZTtcbn07XG5cbmV4cG9ydCB0eXBlIEFubm90YXRpb25Gb3JtRWxlbWVudCA9IEJhc2VGb3JtRWxlbWVudCAmIHtcblx0aWRQcmVmaXg/OiBzdHJpbmc7XG5cdGFubm90YXRpb25QYXRoPzogc3RyaW5nO1xuXHRpc1ZhbHVlTXVsdGlsaW5lVGV4dD86IGJvb2xlYW47XG5cdHNlbWFudGljT2JqZWN0UGF0aD86IHN0cmluZztcblx0aXNQYXJ0T2ZQcmV2aWV3PzogYm9vbGVhbjtcbn07XG5cbmV4cG9ydCB0eXBlIEN1c3RvbUZvcm1FbGVtZW50ID0gQ3VzdG9tRWxlbWVudDxcblx0QmFzZUZvcm1FbGVtZW50ICYge1xuXHRcdHR5cGU6IEZvcm1FbGVtZW50VHlwZTtcblx0XHR0ZW1wbGF0ZTogc3RyaW5nO1xuXHR9XG4+O1xuXG5leHBvcnQgdHlwZSBGb3JtRWxlbWVudCA9IEN1c3RvbUZvcm1FbGVtZW50IHwgQW5ub3RhdGlvbkZvcm1FbGVtZW50O1xuXG5leHBvcnQgdHlwZSBGb3JtQ29udGFpbmVyID0ge1xuXHRpZD86IHN0cmluZztcblx0Zm9ybUVsZW1lbnRzOiBGb3JtRWxlbWVudFtdO1xuXHRhbm5vdGF0aW9uUGF0aDogc3RyaW5nO1xuXHRpc1Zpc2libGU6IENvbXBpbGVkQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uO1xuXHRlbnRpdHlTZXQ/OiBzdHJpbmc7XG5cdGFjdGlvbnM/OiBDb252ZXJ0ZXJBY3Rpb25bXSB8IEJhc2VBY3Rpb25bXTtcbn07XG5cbi8qKlxuICogUmV0dXJucyBkZWZhdWx0IGZvcm1hdCBvcHRpb25zIGZvciB0ZXh0IGZpZWxkcyBvbiBhIGZvcm0uXG4gKlxuICogQHJldHVybnMgQ29sbGVjdGlvbiBvZiBmb3JtYXQgb3B0aW9ucyB3aXRoIGRlZmF1bHQgdmFsdWVzXG4gKi9cbmZ1bmN0aW9uIGdldERlZmF1bHRGb3JtYXRPcHRpb25zRm9yRm9ybSgpOiBGb3JtYXRPcHRpb25zVHlwZSB7XG5cdHJldHVybiB7XG5cdFx0dGV4dExpbmVzRWRpdDogNFxuXHR9O1xufVxuXG5mdW5jdGlvbiBpc0ZpZWxkUGFydE9mUHJldmlldyhmaWVsZDogRGF0YUZpZWxkQWJzdHJhY3RUeXBlcywgZm9ybVBhcnRPZlByZXZpZXc/OiBQYXJ0T2ZQcmV2aWV3KTogYm9vbGVhbiB7XG5cdC8vIEJvdGggZWFjaCBmb3JtIGFuZCBmaWVsZCBjYW4gaGF2ZSB0aGUgUGFydE9mUHJldmlldyBhbm5vdGF0aW9uLiBPbmx5IGlmIHRoZSBmb3JtIGlzIG5vdCBoaWRkZW4gKG5vdCBwYXJ0T2ZQcmV2aWV3KSB3ZSBhbGxvdyB0b2dnbGluZyBvbiBmaWVsZCBsZXZlbFxuXHRyZXR1cm4gKFxuXHRcdGZvcm1QYXJ0T2ZQcmV2aWV3Py52YWx1ZU9mKCkgPT09IGZhbHNlIHx8XG5cdFx0ZmllbGQuYW5ub3RhdGlvbnM/LlVJPy5QYXJ0T2ZQcmV2aWV3ID09PSB1bmRlZmluZWQgfHxcblx0XHRmaWVsZC5hbm5vdGF0aW9ucz8uVUk/LlBhcnRPZlByZXZpZXcudmFsdWVPZigpID09PSB0cnVlXG5cdCk7XG59XG5cbmZ1bmN0aW9uIGdldEZvcm1FbGVtZW50c0Zyb21Bbm5vdGF0aW9ucyhmYWNldERlZmluaXRpb246IFJlZmVyZW5jZUZhY2V0VHlwZXMsIGNvbnZlcnRlckNvbnRleHQ6IENvbnZlcnRlckNvbnRleHQpOiBBbm5vdGF0aW9uRm9ybUVsZW1lbnRbXSB7XG5cdGNvbnN0IGZvcm1FbGVtZW50czogQW5ub3RhdGlvbkZvcm1FbGVtZW50W10gPSBbXTtcblx0Y29uc3QgcmVzb2x2ZWRUYXJnZXQgPSBjb252ZXJ0ZXJDb250ZXh0LmdldEVudGl0eVR5cGVBbm5vdGF0aW9uKGZhY2V0RGVmaW5pdGlvbi5UYXJnZXQudmFsdWUpO1xuXHRjb25zdCBmb3JtQW5ub3RhdGlvbjogSWRlbnRpZmljYXRpb24gfCBGaWVsZEdyb3VwIHwgQ29udGFjdCB8IERhdGFQb2ludCA9IHJlc29sdmVkVGFyZ2V0LmFubm90YXRpb247XG5cdGNvbnZlcnRlckNvbnRleHQgPSByZXNvbHZlZFRhcmdldC5jb252ZXJ0ZXJDb250ZXh0O1xuXG5cdGZ1bmN0aW9uIGdldERhdGFGaWVsZHNGcm9tQW5ub3RhdGlvbnMoZmllbGQ6IERhdGFGaWVsZEFic3RyYWN0VHlwZXMsIGZvcm1QYXJ0T2ZQcmV2aWV3OiBQYXJ0T2ZQcmV2aWV3IHwgdW5kZWZpbmVkKSB7XG5cdFx0Y29uc3Qgc2VtYW50aWNPYmplY3RBbm5vdGF0aW9uUGF0aCA9IGdldFNlbWFudGljT2JqZWN0UGF0aChjb252ZXJ0ZXJDb250ZXh0LCBmaWVsZCk7XG5cdFx0aWYgKFxuXHRcdFx0ZmllbGQuJFR5cGUgIT09IFVJQW5ub3RhdGlvblR5cGVzLkRhdGFGaWVsZEZvckFjdGlvbiAmJlxuXHRcdFx0ZmllbGQuJFR5cGUgIT09IFVJQW5ub3RhdGlvblR5cGVzLkRhdGFGaWVsZEZvckludGVudEJhc2VkTmF2aWdhdGlvbiAmJlxuXHRcdFx0ZmllbGQuYW5ub3RhdGlvbnM/LlVJPy5IaWRkZW4/LnZhbHVlT2YoKSAhPT0gdHJ1ZVxuXHRcdCkge1xuXHRcdFx0Zm9ybUVsZW1lbnRzLnB1c2goe1xuXHRcdFx0XHRrZXk6IEtleUhlbHBlci5nZW5lcmF0ZUtleUZyb21EYXRhRmllbGQoZmllbGQpLFxuXHRcdFx0XHR0eXBlOiBGb3JtRWxlbWVudFR5cGUuQW5ub3RhdGlvbixcblx0XHRcdFx0YW5ub3RhdGlvblBhdGg6IGAke2NvbnZlcnRlckNvbnRleHQuZ2V0RW50aXR5U2V0QmFzZWRBbm5vdGF0aW9uUGF0aChmaWVsZC5mdWxseVF1YWxpZmllZE5hbWUpfS9gLFxuXHRcdFx0XHRzZW1hbnRpY09iamVjdFBhdGg6IHNlbWFudGljT2JqZWN0QW5ub3RhdGlvblBhdGgsXG5cdFx0XHRcdGZvcm1hdE9wdGlvbnM6IGdldERlZmF1bHRGb3JtYXRPcHRpb25zRm9yRm9ybSgpLFxuXHRcdFx0XHRpc1BhcnRPZlByZXZpZXc6IGlzRmllbGRQYXJ0T2ZQcmV2aWV3KGZpZWxkLCBmb3JtUGFydE9mUHJldmlldylcblx0XHRcdH0pO1xuXHRcdH1cblx0fVxuXG5cdHN3aXRjaCAoZm9ybUFubm90YXRpb24/LnRlcm0pIHtcblx0XHRjYXNlIFVJQW5ub3RhdGlvblRlcm1zLkZpZWxkR3JvdXA6XG5cdFx0XHRmb3JtQW5ub3RhdGlvbi5EYXRhLmZvckVhY2goKGZpZWxkKSA9PiBnZXREYXRhRmllbGRzRnJvbUFubm90YXRpb25zKGZpZWxkLCBmYWNldERlZmluaXRpb24uYW5ub3RhdGlvbnM/LlVJPy5QYXJ0T2ZQcmV2aWV3KSk7XG5cdFx0XHRicmVhaztcblx0XHRjYXNlIFVJQW5ub3RhdGlvblRlcm1zLklkZW50aWZpY2F0aW9uOlxuXHRcdFx0Zm9ybUFubm90YXRpb24uZm9yRWFjaCgoZmllbGQpID0+IGdldERhdGFGaWVsZHNGcm9tQW5ub3RhdGlvbnMoZmllbGQsIGZhY2V0RGVmaW5pdGlvbi5hbm5vdGF0aW9ucz8uVUk/LlBhcnRPZlByZXZpZXcpKTtcblx0XHRcdGJyZWFrO1xuXHRcdGNhc2UgVUlBbm5vdGF0aW9uVGVybXMuRGF0YVBvaW50OlxuXHRcdFx0Zm9ybUVsZW1lbnRzLnB1c2goe1xuXHRcdFx0XHQvLyBrZXk6IEtleUhlbHBlci5nZW5lcmF0ZUtleUZyb21EYXRhRmllbGQoZm9ybUFubm90YXRpb24pLFxuXHRcdFx0XHRrZXk6IGBEYXRhUG9pbnQ6OiR7Zm9ybUFubm90YXRpb24ucXVhbGlmaWVyID8gZm9ybUFubm90YXRpb24ucXVhbGlmaWVyIDogXCJcIn1gLFxuXHRcdFx0XHR0eXBlOiBGb3JtRWxlbWVudFR5cGUuQW5ub3RhdGlvbixcblx0XHRcdFx0YW5ub3RhdGlvblBhdGg6IGAke2NvbnZlcnRlckNvbnRleHQuZ2V0RW50aXR5U2V0QmFzZWRBbm5vdGF0aW9uUGF0aChmb3JtQW5ub3RhdGlvbi5mdWxseVF1YWxpZmllZE5hbWUpfS9gXG5cdFx0XHR9KTtcblx0XHRcdGJyZWFrO1xuXHRcdGNhc2UgQ29tbXVuaWNhdGlvbkFubm90YXRpb25UZXJtcy5Db250YWN0OlxuXHRcdFx0Zm9ybUVsZW1lbnRzLnB1c2goe1xuXHRcdFx0XHQvLyBrZXk6IEtleUhlbHBlci5nZW5lcmF0ZUtleUZyb21EYXRhRmllbGQoZm9ybUFubm90YXRpb24pLFxuXHRcdFx0XHRrZXk6IGBDb250YWN0Ojoke2Zvcm1Bbm5vdGF0aW9uLnF1YWxpZmllciA/IGZvcm1Bbm5vdGF0aW9uLnF1YWxpZmllciA6IFwiXCJ9YCxcblx0XHRcdFx0dHlwZTogRm9ybUVsZW1lbnRUeXBlLkFubm90YXRpb24sXG5cdFx0XHRcdGFubm90YXRpb25QYXRoOiBgJHtjb252ZXJ0ZXJDb250ZXh0LmdldEVudGl0eVNldEJhc2VkQW5ub3RhdGlvblBhdGgoZm9ybUFubm90YXRpb24uZnVsbHlRdWFsaWZpZWROYW1lKX0vYFxuXHRcdFx0fSk7XG5cdFx0XHRicmVhaztcblx0XHRkZWZhdWx0OlxuXHRcdFx0YnJlYWs7XG5cdH1cblx0cmV0dXJuIGZvcm1FbGVtZW50cztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldEZvcm1FbGVtZW50c0Zyb21NYW5pZmVzdChcblx0ZmFjZXREZWZpbml0aW9uOiBSZWZlcmVuY2VGYWNldFR5cGVzLFxuXHRjb252ZXJ0ZXJDb250ZXh0OiBDb252ZXJ0ZXJDb250ZXh0XG4pOiBSZWNvcmQ8c3RyaW5nLCBDdXN0b21Gb3JtRWxlbWVudD4ge1xuXHRjb25zdCBtYW5pZmVzdFdyYXBwZXIgPSBjb252ZXJ0ZXJDb250ZXh0LmdldE1hbmlmZXN0V3JhcHBlcigpO1xuXHRjb25zdCBtYW5pZmVzdEZvcm1Db250YWluZXI6IEZvcm1NYW5pZmVzdENvbmZpZ3VyYXRpb24gPSBtYW5pZmVzdFdyYXBwZXIuZ2V0Rm9ybUNvbnRhaW5lcihmYWNldERlZmluaXRpb24uVGFyZ2V0LnZhbHVlKTtcblx0Y29uc3QgZm9ybUVsZW1lbnRzOiBSZWNvcmQ8c3RyaW5nLCBDdXN0b21Gb3JtRWxlbWVudD4gPSB7fTtcblx0aWYgKG1hbmlmZXN0Rm9ybUNvbnRhaW5lcj8uZmllbGRzKSB7XG5cdFx0T2JqZWN0LmtleXMobWFuaWZlc3RGb3JtQ29udGFpbmVyPy5maWVsZHMpLmZvckVhY2goKGZpZWxkSWQpID0+IHtcblx0XHRcdGZvcm1FbGVtZW50c1tmaWVsZElkXSA9IHtcblx0XHRcdFx0a2V5OiBmaWVsZElkLFxuXHRcdFx0XHRpZDogYEN1c3RvbUZvcm1FbGVtZW50Ojoke2ZpZWxkSWR9YCxcblx0XHRcdFx0dHlwZTogbWFuaWZlc3RGb3JtQ29udGFpbmVyLmZpZWxkc1tmaWVsZElkXS50eXBlIHx8IEZvcm1FbGVtZW50VHlwZS5EZWZhdWx0LFxuXHRcdFx0XHR0ZW1wbGF0ZTogbWFuaWZlc3RGb3JtQ29udGFpbmVyLmZpZWxkc1tmaWVsZElkXS50ZW1wbGF0ZSxcblx0XHRcdFx0bGFiZWw6IG1hbmlmZXN0Rm9ybUNvbnRhaW5lci5maWVsZHNbZmllbGRJZF0ubGFiZWwsXG5cdFx0XHRcdHBvc2l0aW9uOiBtYW5pZmVzdEZvcm1Db250YWluZXIuZmllbGRzW2ZpZWxkSWRdLnBvc2l0aW9uIHx8IHtcblx0XHRcdFx0XHRwbGFjZW1lbnQ6IFBsYWNlbWVudC5BZnRlclxuXHRcdFx0XHR9LFxuXHRcdFx0XHRmb3JtYXRPcHRpb25zOiB7XG5cdFx0XHRcdFx0Li4uZ2V0RGVmYXVsdEZvcm1hdE9wdGlvbnNGb3JGb3JtKCksXG5cdFx0XHRcdFx0Li4ubWFuaWZlc3RGb3JtQ29udGFpbmVyLmZpZWxkc1tmaWVsZElkXS5mb3JtYXRPcHRpb25zXG5cdFx0XHRcdH1cblx0XHRcdH07XG5cdFx0fSk7XG5cdH1cblx0cmV0dXJuIGZvcm1FbGVtZW50cztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldEZvcm1Db250YWluZXIoXG5cdGZhY2V0RGVmaW5pdGlvbjogUmVmZXJlbmNlRmFjZXRUeXBlcyxcblx0Y29udmVydGVyQ29udGV4dDogQ29udmVydGVyQ29udGV4dCxcblx0YWN0aW9ucz86IEJhc2VBY3Rpb25bXSB8IENvbnZlcnRlckFjdGlvbltdXG4pOiBGb3JtQ29udGFpbmVyIHtcblx0Y29uc3Qgc0Zvcm1Db250YWluZXJJZCA9IGdlbmVyYXRlKFt7IEZhY2V0OiBmYWNldERlZmluaXRpb24gfV0pO1xuXHRjb25zdCBzQW5ub3RhdGlvblBhdGggPSBgLyR7ZmFjZXREZWZpbml0aW9uLmZ1bGx5UXVhbGlmaWVkTmFtZX1gO1xuXHRjb25zdCByZXNvbHZlZFRhcmdldCA9IGNvbnZlcnRlckNvbnRleHQuZ2V0RW50aXR5VHlwZUFubm90YXRpb24oZmFjZXREZWZpbml0aW9uLlRhcmdldC52YWx1ZSk7XG5cdGNvbnN0IGlzVmlzaWJsZSA9IGNvbXBpbGVFeHByZXNzaW9uKG5vdChlcXVhbCh0cnVlLCBnZXRFeHByZXNzaW9uRnJvbUFubm90YXRpb24oZmFjZXREZWZpbml0aW9uLmFubm90YXRpb25zPy5VST8uSGlkZGVuKSkpKTtcblx0bGV0IHNFbnRpdHlTZXRQYXRoITogc3RyaW5nO1xuXHQvLyByZXNvbHZlZFRhcmdldCBkb2Vzbid0IGhhdmUgYSBlbnRpdHlTZXQgaW4gY2FzZSBDb250YWlubWVudHMgYW5kIFBhcmFtdGVyaXplZCBzZXJ2aWNlcy5cblx0aWYgKFxuXHRcdHJlc29sdmVkVGFyZ2V0LmNvbnZlcnRlckNvbnRleHQuZ2V0RW50aXR5U2V0KCkgJiZcblx0XHRyZXNvbHZlZFRhcmdldC5jb252ZXJ0ZXJDb250ZXh0LmdldEVudGl0eVNldCgpICE9PSBjb252ZXJ0ZXJDb250ZXh0LmdldEVudGl0eVNldCgpXG5cdCkge1xuXHRcdHNFbnRpdHlTZXRQYXRoID0gZ2V0VGFyZ2V0RW50aXR5U2V0UGF0aChyZXNvbHZlZFRhcmdldC5jb252ZXJ0ZXJDb250ZXh0LmdldERhdGFNb2RlbE9iamVjdFBhdGgoKSk7XG5cdH0gZWxzZSBpZiAocmVzb2x2ZWRUYXJnZXQuY29udmVydGVyQ29udGV4dC5nZXREYXRhTW9kZWxPYmplY3RQYXRoKCkudGFyZ2V0T2JqZWN0Py5jb250YWluc1RhcmdldCA9PT0gdHJ1ZSkge1xuXHRcdHNFbnRpdHlTZXRQYXRoID0gZ2V0VGFyZ2V0T2JqZWN0UGF0aChyZXNvbHZlZFRhcmdldC5jb252ZXJ0ZXJDb250ZXh0LmdldERhdGFNb2RlbE9iamVjdFBhdGgoKSwgZmFsc2UpO1xuXHR9XG5cdGNvbnN0IGFGb3JtRWxlbWVudHMgPSBpbnNlcnRDdXN0b21FbGVtZW50cyhcblx0XHRnZXRGb3JtRWxlbWVudHNGcm9tQW5ub3RhdGlvbnMoZmFjZXREZWZpbml0aW9uLCBjb252ZXJ0ZXJDb250ZXh0KSxcblx0XHRnZXRGb3JtRWxlbWVudHNGcm9tTWFuaWZlc3QoZmFjZXREZWZpbml0aW9uLCBjb252ZXJ0ZXJDb250ZXh0KSxcblx0XHR7IGZvcm1hdE9wdGlvbnM6IFwib3ZlcndyaXRlXCIgfVxuXHQpO1xuXG5cdGFjdGlvbnMgPSBhY3Rpb25zICE9PSB1bmRlZmluZWQgPyBhY3Rpb25zLmZpbHRlcigoYWN0aW9uKSA9PiBhY3Rpb24uZmFjZXROYW1lID09IGZhY2V0RGVmaW5pdGlvbi5mdWxseVF1YWxpZmllZE5hbWUpIDogW107XG5cdGlmIChhY3Rpb25zLmxlbmd0aCA9PT0gMCkge1xuXHRcdGFjdGlvbnMgPSB1bmRlZmluZWQ7XG5cdH1cblxuXHRjb25zdCBvQWN0aW9uU2hvd0RldGFpbHM6IEJhc2VBY3Rpb24gPSB7XG5cdFx0aWQ6IGdldEZvcm1TdGFuZGFyZEFjdGlvbkJ1dHRvbklEKHNGb3JtQ29udGFpbmVySWQsIFwiU2hvd0hpZGVEZXRhaWxzXCIpLFxuXHRcdGtleTogXCJTdGFuZGFyZEFjdGlvbjo6U2hvd0hpZGVEZXRhaWxzXCIsXG5cdFx0dGV4dDogY29tcGlsZUV4cHJlc3Npb24oXG5cdFx0XHRpZkVsc2UoXG5cdFx0XHRcdGVxdWFsKHBhdGhJbk1vZGVsKFwic2hvd0RldGFpbHNcIiwgXCJpbnRlcm5hbFwiKSwgdHJ1ZSksXG5cdFx0XHRcdHBhdGhJbk1vZGVsKFwiVF9DT01NT05fT0JKRUNUX1BBR0VfSElERV9GT1JNX0NPTlRBSU5FUl9ERVRBSUxTXCIsIFwic2FwLmZlLmkxOG5cIiksXG5cdFx0XHRcdHBhdGhJbk1vZGVsKFwiVF9DT01NT05fT0JKRUNUX1BBR0VfU0hPV19GT1JNX0NPTlRBSU5FUl9ERVRBSUxTXCIsIFwic2FwLmZlLmkxOG5cIilcblx0XHRcdClcblx0XHQpLFxuXHRcdHR5cGU6IEFjdGlvblR5cGUuU2hvd0Zvcm1EZXRhaWxzLFxuXHRcdHByZXNzOiBcIkZvcm1Db250YWluZXJSdW50aW1lLnRvZ2dsZURldGFpbHNcIlxuXHR9O1xuXG5cdGlmIChcblx0XHRmYWNldERlZmluaXRpb24uYW5ub3RhdGlvbnM/LlVJPy5QYXJ0T2ZQcmV2aWV3Py52YWx1ZU9mKCkgIT09IGZhbHNlICYmXG5cdFx0YUZvcm1FbGVtZW50cy5zb21lKChvRm9ybUVsZW1lbnQpID0+IG9Gb3JtRWxlbWVudC5pc1BhcnRPZlByZXZpZXcgPT09IGZhbHNlKVxuXHQpIHtcblx0XHRpZiAoYWN0aW9ucyAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0XHRhY3Rpb25zLnB1c2gob0FjdGlvblNob3dEZXRhaWxzKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0YWN0aW9ucyA9IFtvQWN0aW9uU2hvd0RldGFpbHNdO1xuXHRcdH1cblx0fVxuXG5cdHJldHVybiB7XG5cdFx0aWQ6IHNGb3JtQ29udGFpbmVySWQsXG5cdFx0Zm9ybUVsZW1lbnRzOiBhRm9ybUVsZW1lbnRzLFxuXHRcdGFubm90YXRpb25QYXRoOiBzQW5ub3RhdGlvblBhdGgsXG5cdFx0aXNWaXNpYmxlOiBpc1Zpc2libGUsXG5cdFx0ZW50aXR5U2V0OiBzRW50aXR5U2V0UGF0aCxcblx0XHRhY3Rpb25zOiBhY3Rpb25zXG5cdH07XG59XG5cbmZ1bmN0aW9uIGdldEZvcm1Db250YWluZXJzRm9yQ29sbGVjdGlvbihcblx0ZmFjZXREZWZpbml0aW9uOiBDb2xsZWN0aW9uRmFjZXRUeXBlcyxcblx0Y29udmVydGVyQ29udGV4dDogQ29udmVydGVyQ29udGV4dCxcblx0YWN0aW9ucz86IEJhc2VBY3Rpb25bXSB8IENvbnZlcnRlckFjdGlvbltdXG4pOiBGb3JtQ29udGFpbmVyW10ge1xuXHRjb25zdCBmb3JtQ29udGFpbmVyczogRm9ybUNvbnRhaW5lcltdID0gW107XG5cdGZhY2V0RGVmaW5pdGlvbi5GYWNldHM/LmZvckVhY2goKGZhY2V0KSA9PiB7XG5cdFx0Ly8gSWdub3JlIGxldmVsIDMgY29sbGVjdGlvbiBmYWNldFxuXHRcdGlmIChmYWNldC4kVHlwZSA9PT0gVUlBbm5vdGF0aW9uVHlwZXMuQ29sbGVjdGlvbkZhY2V0KSB7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXHRcdGZvcm1Db250YWluZXJzLnB1c2goZ2V0Rm9ybUNvbnRhaW5lcihmYWNldCBhcyBSZWZlcmVuY2VGYWNldFR5cGVzLCBjb252ZXJ0ZXJDb250ZXh0LCBhY3Rpb25zKSk7XG5cdH0pO1xuXHRyZXR1cm4gZm9ybUNvbnRhaW5lcnM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc1JlZmVyZW5jZUZhY2V0KGZhY2V0RGVmaW5pdGlvbjogRmFjZXRUeXBlcyk6IGZhY2V0RGVmaW5pdGlvbiBpcyBSZWZlcmVuY2VGYWNldFR5cGVzIHtcblx0cmV0dXJuIGZhY2V0RGVmaW5pdGlvbi4kVHlwZSA9PT0gVUlBbm5vdGF0aW9uVHlwZXMuUmVmZXJlbmNlRmFjZXQ7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVGb3JtRGVmaW5pdGlvbihcblx0ZmFjZXREZWZpbml0aW9uOiBGYWNldFR5cGVzLFxuXHRpc1Zpc2libGU6IENvbXBpbGVkQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uLFxuXHRjb252ZXJ0ZXJDb250ZXh0OiBDb252ZXJ0ZXJDb250ZXh0LFxuXHRhY3Rpb25zPzogQmFzZUFjdGlvbltdIHwgQ29udmVydGVyQWN0aW9uW11cbik6IEZvcm1EZWZpbml0aW9uIHtcblx0c3dpdGNoIChmYWNldERlZmluaXRpb24uJFR5cGUpIHtcblx0XHRjYXNlIFVJQW5ub3RhdGlvblR5cGVzLkNvbGxlY3Rpb25GYWNldDpcblx0XHRcdC8vIEtlZXAgb25seSB2YWxpZCBjaGlsZHJlblxuXHRcdFx0cmV0dXJuIHtcblx0XHRcdFx0aWQ6IGdldEZvcm1JRCh7IEZhY2V0OiBmYWNldERlZmluaXRpb24gfSksXG5cdFx0XHRcdHVzZUZvcm1Db250YWluZXJMYWJlbHM6IHRydWUsXG5cdFx0XHRcdGhhc0ZhY2V0c05vdFBhcnRPZlByZXZpZXc6IGZhY2V0RGVmaW5pdGlvbi5GYWNldHMuc29tZShcblx0XHRcdFx0XHQoY2hpbGRGYWNldCkgPT4gY2hpbGRGYWNldC5hbm5vdGF0aW9ucz8uVUk/LlBhcnRPZlByZXZpZXc/LnZhbHVlT2YoKSA9PT0gZmFsc2Vcblx0XHRcdFx0KSxcblx0XHRcdFx0Zm9ybUNvbnRhaW5lcnM6IGdldEZvcm1Db250YWluZXJzRm9yQ29sbGVjdGlvbihmYWNldERlZmluaXRpb24sIGNvbnZlcnRlckNvbnRleHQsIGFjdGlvbnMpLFxuXHRcdFx0XHRpc1Zpc2libGU6IGlzVmlzaWJsZVxuXHRcdFx0fTtcblx0XHRjYXNlIFVJQW5ub3RhdGlvblR5cGVzLlJlZmVyZW5jZUZhY2V0OlxuXHRcdFx0cmV0dXJuIHtcblx0XHRcdFx0aWQ6IGdldEZvcm1JRCh7IEZhY2V0OiBmYWNldERlZmluaXRpb24gfSksXG5cdFx0XHRcdHVzZUZvcm1Db250YWluZXJMYWJlbHM6IGZhbHNlLFxuXHRcdFx0XHRoYXNGYWNldHNOb3RQYXJ0T2ZQcmV2aWV3OiBmYWNldERlZmluaXRpb24uYW5ub3RhdGlvbnM/LlVJPy5QYXJ0T2ZQcmV2aWV3Py52YWx1ZU9mKCkgPT09IGZhbHNlLFxuXHRcdFx0XHRmb3JtQ29udGFpbmVyczogW2dldEZvcm1Db250YWluZXIoZmFjZXREZWZpbml0aW9uLCBjb252ZXJ0ZXJDb250ZXh0LCBhY3Rpb25zKV0sXG5cdFx0XHRcdGlzVmlzaWJsZTogaXNWaXNpYmxlXG5cdFx0XHR9O1xuXHRcdGRlZmF1bHQ6XG5cdFx0XHR0aHJvdyBuZXcgRXJyb3IoXCJDYW5ub3QgY3JlYXRlIGZvcm0gYmFzZWQgb24gUmVmZXJlbmNlVVJMRmFjZXRcIik7XG5cdH1cbn1cbiJdfQ==
|
|
@@ -1,45 +1,40 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
1
|
+
import { CommunicationAnnotationTerms, Contact } from "@sap-ux/vocabularies-types/vocabularies/Communication";
|
|
2
|
+
import type {
|
|
3
3
|
CollectionFacetTypes,
|
|
4
|
-
CommunicationAnnotationTerms,
|
|
5
4
|
DataFieldAbstractTypes,
|
|
5
|
+
DataPoint,
|
|
6
6
|
FacetTypes,
|
|
7
7
|
FieldGroup,
|
|
8
8
|
Identification,
|
|
9
9
|
PartOfPreview,
|
|
10
|
-
ReferenceFacetTypes
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
} from "@sap-ux/vocabularies-types";
|
|
10
|
+
ReferenceFacetTypes
|
|
11
|
+
} from "@sap-ux/vocabularies-types/vocabularies/UI";
|
|
12
|
+
import { UIAnnotationTerms, UIAnnotationTypes } from "@sap-ux/vocabularies-types/vocabularies/UI";
|
|
14
13
|
import { getSemanticObjectPath } from "sap/fe/core/converters/annotations/DataField";
|
|
15
|
-
import { BaseAction, ConverterAction } from "sap/fe/core/converters/controls/Common/Action";
|
|
16
|
-
import {
|
|
17
|
-
|
|
18
|
-
bindingExpression,
|
|
19
|
-
BindingExpression,
|
|
20
|
-
compileBinding,
|
|
21
|
-
equal,
|
|
22
|
-
ifElse,
|
|
23
|
-
not
|
|
24
|
-
} from "sap/fe/core/helpers/BindingExpression";
|
|
14
|
+
import type { BaseAction, ConverterAction } from "sap/fe/core/converters/controls/Common/Action";
|
|
15
|
+
import type { CompiledBindingToolkitExpression } from "sap/fe/core/helpers/BindingToolkit";
|
|
16
|
+
import { compileExpression, equal, getExpressionFromAnnotation, ifElse, not, pathInModel } from "sap/fe/core/helpers/BindingToolkit";
|
|
25
17
|
import { getTargetEntitySetPath, getTargetObjectPath } from "sap/fe/core/templating/DataModelPathHelper";
|
|
26
18
|
import { generate } from "../../../helpers/StableIdHelper";
|
|
27
|
-
import ConverterContext from "../../ConverterContext";
|
|
28
|
-
import { ConfigurableObject, CustomElement
|
|
29
|
-
import {
|
|
19
|
+
import type ConverterContext from "../../ConverterContext";
|
|
20
|
+
import type { ConfigurableObject, CustomElement } from "../../helpers/ConfigurableObject";
|
|
21
|
+
import { insertCustomElements, Placement } from "../../helpers/ConfigurableObject";
|
|
22
|
+
import { getFormID, getFormStandardActionButtonID } from "../../helpers/ID";
|
|
30
23
|
import { KeyHelper } from "../../helpers/Key";
|
|
31
|
-
import {
|
|
24
|
+
import type { FormatOptionsType, FormManifestConfiguration } from "../../ManifestSettings";
|
|
25
|
+
import { ActionType } from "../../ManifestSettings";
|
|
32
26
|
|
|
33
27
|
export type FormDefinition = {
|
|
34
28
|
id: string;
|
|
35
29
|
useFormContainerLabels: boolean;
|
|
36
30
|
hasFacetsNotPartOfPreview: boolean;
|
|
37
31
|
formContainers: FormContainer[];
|
|
38
|
-
isVisible:
|
|
32
|
+
isVisible: CompiledBindingToolkitExpression;
|
|
39
33
|
};
|
|
40
34
|
|
|
41
35
|
export enum FormElementType {
|
|
42
36
|
Default = "Default",
|
|
37
|
+
Slot = "Slot",
|
|
43
38
|
Annotation = "Annotation"
|
|
44
39
|
}
|
|
45
40
|
|
|
@@ -47,7 +42,7 @@ export type BaseFormElement = ConfigurableObject & {
|
|
|
47
42
|
id?: string;
|
|
48
43
|
type: FormElementType;
|
|
49
44
|
label?: string;
|
|
50
|
-
visible?:
|
|
45
|
+
visible?: CompiledBindingToolkitExpression;
|
|
51
46
|
formatOptions?: FormatOptionsType;
|
|
52
47
|
};
|
|
53
48
|
|
|
@@ -61,18 +56,18 @@ export type AnnotationFormElement = BaseFormElement & {
|
|
|
61
56
|
|
|
62
57
|
export type CustomFormElement = CustomElement<
|
|
63
58
|
BaseFormElement & {
|
|
64
|
-
type: FormElementType
|
|
59
|
+
type: FormElementType;
|
|
65
60
|
template: string;
|
|
66
61
|
}
|
|
67
62
|
>;
|
|
68
63
|
|
|
69
64
|
export type FormElement = CustomFormElement | AnnotationFormElement;
|
|
70
65
|
|
|
71
|
-
type FormContainer = {
|
|
66
|
+
export type FormContainer = {
|
|
72
67
|
id?: string;
|
|
73
68
|
formElements: FormElement[];
|
|
74
69
|
annotationPath: string;
|
|
75
|
-
isVisible:
|
|
70
|
+
isVisible: CompiledBindingToolkitExpression;
|
|
76
71
|
entitySet?: string;
|
|
77
72
|
actions?: ConverterAction[] | BaseAction[];
|
|
78
73
|
};
|
|
@@ -80,7 +75,7 @@ type FormContainer = {
|
|
|
80
75
|
/**
|
|
81
76
|
* Returns default format options for text fields on a form.
|
|
82
77
|
*
|
|
83
|
-
* @returns
|
|
78
|
+
* @returns Collection of format options with default values
|
|
84
79
|
*/
|
|
85
80
|
function getDefaultFormatOptionsForForm(): FormatOptionsType {
|
|
86
81
|
return {
|
|
@@ -100,9 +95,7 @@ function isFieldPartOfPreview(field: DataFieldAbstractTypes, formPartOfPreview?:
|
|
|
100
95
|
function getFormElementsFromAnnotations(facetDefinition: ReferenceFacetTypes, converterContext: ConverterContext): AnnotationFormElement[] {
|
|
101
96
|
const formElements: AnnotationFormElement[] = [];
|
|
102
97
|
const resolvedTarget = converterContext.getEntityTypeAnnotation(facetDefinition.Target.value);
|
|
103
|
-
const formAnnotation:
|
|
104
|
-
| AnnotationTerm<Identification>
|
|
105
|
-
| AnnotationTerm<FieldGroup>;
|
|
98
|
+
const formAnnotation: Identification | FieldGroup | Contact | DataPoint = resolvedTarget.annotation;
|
|
106
99
|
converterContext = resolvedTarget.converterContext;
|
|
107
100
|
|
|
108
101
|
function getDataFieldsFromAnnotations(field: DataFieldAbstractTypes, formPartOfPreview: PartOfPreview | undefined) {
|
|
@@ -115,7 +108,7 @@ function getFormElementsFromAnnotations(facetDefinition: ReferenceFacetTypes, co
|
|
|
115
108
|
formElements.push({
|
|
116
109
|
key: KeyHelper.generateKeyFromDataField(field),
|
|
117
110
|
type: FormElementType.Annotation,
|
|
118
|
-
annotationPath: converterContext.getEntitySetBasedAnnotationPath(field.fullyQualifiedName)
|
|
111
|
+
annotationPath: `${converterContext.getEntitySetBasedAnnotationPath(field.fullyQualifiedName)}/`,
|
|
119
112
|
semanticObjectPath: semanticObjectAnnotationPath,
|
|
120
113
|
formatOptions: getDefaultFormatOptionsForForm(),
|
|
121
114
|
isPartOfPreview: isFieldPartOfPreview(field, formPartOfPreview)
|
|
@@ -125,29 +118,25 @@ function getFormElementsFromAnnotations(facetDefinition: ReferenceFacetTypes, co
|
|
|
125
118
|
|
|
126
119
|
switch (formAnnotation?.term) {
|
|
127
120
|
case UIAnnotationTerms.FieldGroup:
|
|
128
|
-
|
|
129
|
-
getDataFieldsFromAnnotations(field, facetDefinition.annotations?.UI?.PartOfPreview)
|
|
130
|
-
);
|
|
121
|
+
formAnnotation.Data.forEach((field) => getDataFieldsFromAnnotations(field, facetDefinition.annotations?.UI?.PartOfPreview));
|
|
131
122
|
break;
|
|
132
123
|
case UIAnnotationTerms.Identification:
|
|
133
|
-
|
|
134
|
-
getDataFieldsFromAnnotations(field, facetDefinition.annotations?.UI?.PartOfPreview)
|
|
135
|
-
);
|
|
124
|
+
formAnnotation.forEach((field) => getDataFieldsFromAnnotations(field, facetDefinition.annotations?.UI?.PartOfPreview));
|
|
136
125
|
break;
|
|
137
126
|
case UIAnnotationTerms.DataPoint:
|
|
138
127
|
formElements.push({
|
|
139
128
|
// key: KeyHelper.generateKeyFromDataField(formAnnotation),
|
|
140
|
-
key:
|
|
129
|
+
key: `DataPoint::${formAnnotation.qualifier ? formAnnotation.qualifier : ""}`,
|
|
141
130
|
type: FormElementType.Annotation,
|
|
142
|
-
annotationPath: converterContext.getEntitySetBasedAnnotationPath(formAnnotation.fullyQualifiedName)
|
|
131
|
+
annotationPath: `${converterContext.getEntitySetBasedAnnotationPath(formAnnotation.fullyQualifiedName)}/`
|
|
143
132
|
});
|
|
144
133
|
break;
|
|
145
134
|
case CommunicationAnnotationTerms.Contact:
|
|
146
135
|
formElements.push({
|
|
147
136
|
// key: KeyHelper.generateKeyFromDataField(formAnnotation),
|
|
148
|
-
key:
|
|
137
|
+
key: `Contact::${formAnnotation.qualifier ? formAnnotation.qualifier : ""}`,
|
|
149
138
|
type: FormElementType.Annotation,
|
|
150
|
-
annotationPath: converterContext.getEntitySetBasedAnnotationPath(formAnnotation.fullyQualifiedName)
|
|
139
|
+
annotationPath: `${converterContext.getEntitySetBasedAnnotationPath(formAnnotation.fullyQualifiedName)}/`
|
|
151
140
|
});
|
|
152
141
|
break;
|
|
153
142
|
default:
|
|
@@ -167,8 +156,8 @@ export function getFormElementsFromManifest(
|
|
|
167
156
|
Object.keys(manifestFormContainer?.fields).forEach((fieldId) => {
|
|
168
157
|
formElements[fieldId] = {
|
|
169
158
|
key: fieldId,
|
|
170
|
-
id:
|
|
171
|
-
type: FormElementType.Default,
|
|
159
|
+
id: `CustomFormElement::${fieldId}`,
|
|
160
|
+
type: manifestFormContainer.fields[fieldId].type || FormElementType.Default,
|
|
172
161
|
template: manifestFormContainer.fields[fieldId].template,
|
|
173
162
|
label: manifestFormContainer.fields[fieldId].label,
|
|
174
163
|
position: manifestFormContainer.fields[fieldId].position || {
|
|
@@ -190,9 +179,9 @@ export function getFormContainer(
|
|
|
190
179
|
actions?: BaseAction[] | ConverterAction[]
|
|
191
180
|
): FormContainer {
|
|
192
181
|
const sFormContainerId = generate([{ Facet: facetDefinition }]);
|
|
193
|
-
const sAnnotationPath =
|
|
182
|
+
const sAnnotationPath = `/${facetDefinition.fullyQualifiedName}`;
|
|
194
183
|
const resolvedTarget = converterContext.getEntityTypeAnnotation(facetDefinition.Target.value);
|
|
195
|
-
const isVisible =
|
|
184
|
+
const isVisible = compileExpression(not(equal(true, getExpressionFromAnnotation(facetDefinition.annotations?.UI?.Hidden))));
|
|
196
185
|
let sEntitySetPath!: string;
|
|
197
186
|
// resolvedTarget doesn't have a entitySet in case Containments and Paramterized services.
|
|
198
187
|
if (
|
|
@@ -215,13 +204,13 @@ export function getFormContainer(
|
|
|
215
204
|
}
|
|
216
205
|
|
|
217
206
|
const oActionShowDetails: BaseAction = {
|
|
218
|
-
id:
|
|
207
|
+
id: getFormStandardActionButtonID(sFormContainerId, "ShowHideDetails"),
|
|
219
208
|
key: "StandardAction::ShowHideDetails",
|
|
220
|
-
text:
|
|
209
|
+
text: compileExpression(
|
|
221
210
|
ifElse(
|
|
222
|
-
equal(
|
|
223
|
-
|
|
224
|
-
|
|
211
|
+
equal(pathInModel("showDetails", "internal"), true),
|
|
212
|
+
pathInModel("T_COMMON_OBJECT_PAGE_HIDE_FORM_CONTAINER_DETAILS", "sap.fe.i18n"),
|
|
213
|
+
pathInModel("T_COMMON_OBJECT_PAGE_SHOW_FORM_CONTAINER_DETAILS", "sap.fe.i18n")
|
|
225
214
|
)
|
|
226
215
|
),
|
|
227
216
|
type: ActionType.ShowFormDetails,
|
|
@@ -271,15 +260,15 @@ export function isReferenceFacet(facetDefinition: FacetTypes): facetDefinition i
|
|
|
271
260
|
|
|
272
261
|
export function createFormDefinition(
|
|
273
262
|
facetDefinition: FacetTypes,
|
|
274
|
-
isVisible:
|
|
263
|
+
isVisible: CompiledBindingToolkitExpression,
|
|
275
264
|
converterContext: ConverterContext,
|
|
276
265
|
actions?: BaseAction[] | ConverterAction[]
|
|
277
266
|
): FormDefinition {
|
|
278
267
|
switch (facetDefinition.$Type) {
|
|
279
268
|
case UIAnnotationTypes.CollectionFacet:
|
|
280
269
|
// Keep only valid children
|
|
281
|
-
|
|
282
|
-
id:
|
|
270
|
+
return {
|
|
271
|
+
id: getFormID({ Facet: facetDefinition }),
|
|
283
272
|
useFormContainerLabels: true,
|
|
284
273
|
hasFacetsNotPartOfPreview: facetDefinition.Facets.some(
|
|
285
274
|
(childFacet) => childFacet.annotations?.UI?.PartOfPreview?.valueOf() === false
|
|
@@ -287,16 +276,14 @@ export function createFormDefinition(
|
|
|
287
276
|
formContainers: getFormContainersForCollection(facetDefinition, converterContext, actions),
|
|
288
277
|
isVisible: isVisible
|
|
289
278
|
};
|
|
290
|
-
return formCollectionDefinition;
|
|
291
279
|
case UIAnnotationTypes.ReferenceFacet:
|
|
292
|
-
|
|
293
|
-
id:
|
|
280
|
+
return {
|
|
281
|
+
id: getFormID({ Facet: facetDefinition }),
|
|
294
282
|
useFormContainerLabels: false,
|
|
295
283
|
hasFacetsNotPartOfPreview: facetDefinition.annotations?.UI?.PartOfPreview?.valueOf() === false,
|
|
296
284
|
formContainers: [getFormContainer(facetDefinition, converterContext, actions)],
|
|
297
285
|
isVisible: isVisible
|
|
298
286
|
};
|
|
299
|
-
return formDefinition;
|
|
300
287
|
default:
|
|
301
288
|
throw new Error("Cannot create form based on ReferenceURLFacet");
|
|
302
289
|
}
|