@sap/open.fe 1.99.0 → 1.100.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +1 -1
- package/packages/sap.fe.common/src/sap/fe/common/.library +1 -1
- package/packages/sap.fe.common/src/sap/fe/common/.theming +1 -1
- package/packages/sap.fe.common/src/sap/fe/common/MessageButton-dbg.js +1748 -1813
- package/packages/sap.fe.common/src/sap/fe/common/MessageButton.js +2 -3
- package/packages/sap.fe.common/src/sap/fe/common/MessageButton.ts +1801 -0
- package/packages/sap.fe.common/src/sap/fe/common/MessageFilter-dbg.js +77 -32
- package/packages/sap.fe.common/src/sap/fe/common/MessageFilter.js +2 -3
- package/packages/sap.fe.common/src/sap/fe/common/MessageFilter.ts +26 -0
- package/packages/sap.fe.common/src/sap/fe/common/MessagePopover-dbg.js +43 -53
- package/packages/sap.fe.common/src/sap/fe/common/MessagePopover.js +2 -3
- package/packages/sap.fe.common/src/sap/fe/common/MessagePopover.ts +39 -0
- package/packages/sap.fe.common/src/sap/fe/common/library-dbg.js +31 -38
- package/packages/sap.fe.common/src/sap/fe/common/library-h2-preload.js +8 -9
- package/packages/sap.fe.common/src/sap/fe/common/library-h2-preload.js.map +3 -3
- package/packages/sap.fe.common/src/sap/fe/common/library-preload.js +23 -71
- package/packages/sap.fe.common/src/sap/fe/common/library-preload.js.map +4 -4
- package/packages/sap.fe.common/src/sap/fe/common/library.js +4 -5
- package/packages/sap.fe.common/src/sap/fe/common/library.ts +35 -0
- package/packages/sap.fe.common/src/sap/fe/common/manifest.json +3 -3
- package/packages/sap.fe.common/src/sap/fe/common/resources.json +54 -32
- package/packages/sap.fe.common/test/sap/fe/common/designtime/api.json +1 -1
- package/packages/sap.fe.common/test/sap/fe/common/designtime/apiref/api.json +1 -1
- package/packages/sap.fe.common/test/sap/fe/common/designtime/codeassistance/Library.jsmeta.json +1 -1
- package/packages/sap.fe.common/test/sap/fe/common/designtime/codeassistance/Library.xmlmeta.json +1 -1
- package/packages/sap.fe.core/src/sap/fe/core/.library +1 -1
- package/packages/sap.fe.core/src/sap/fe/core/.theming +1 -1
- package/packages/sap.fe.core/src/sap/fe/core/AnnotationHelper-dbg.js +1 -69
- package/packages/sap.fe.core/src/sap/fe/core/AnnotationHelper.js +1 -1
- package/packages/sap.fe.core/src/sap/fe/core/AnnotationHelper.ts +0 -70
- package/packages/sap.fe.core/src/sap/fe/core/AppComponent-dbg.js +388 -399
- package/packages/sap.fe.core/src/sap/fe/core/AppComponent.js +2 -3
- package/packages/sap.fe.core/src/sap/fe/core/AppComponent.ts +403 -0
- package/packages/sap.fe.core/src/sap/fe/core/AppStateHandler-dbg.js +127 -158
- package/packages/sap.fe.core/src/sap/fe/core/AppStateHandler.js +1 -1
- package/packages/sap.fe.core/src/sap/fe/core/BaseController-dbg.js +82 -58
- package/packages/sap.fe.core/src/sap/fe/core/BaseController.js +2 -3
- package/packages/sap.fe.core/src/sap/fe/core/BaseController.ts +68 -0
- package/packages/sap.fe.core/src/sap/fe/core/CommonUtils-dbg.js +111 -20
- package/packages/sap.fe.core/src/sap/fe/core/CommonUtils.js +1 -1
- package/packages/sap.fe.core/src/sap/fe/core/CommonUtils.ts +131 -32
- package/packages/sap.fe.core/src/sap/fe/core/ExtensionAPI-dbg.js +278 -274
- package/packages/sap.fe.core/src/sap/fe/core/ExtensionAPI.js +2 -3
- package/packages/sap.fe.core/src/sap/fe/core/ExtensionAPI.ts +250 -0
- package/packages/sap.fe.core/src/sap/fe/core/PageController-dbg.js +157 -29
- package/packages/sap.fe.core/src/sap/fe/core/PageController.js +1 -1
- package/packages/sap.fe.core/src/sap/fe/core/PageController.ts +60 -32
- package/packages/sap.fe.core/src/sap/fe/core/RouterProxy-dbg.js +694 -756
- package/packages/sap.fe.core/src/sap/fe/core/RouterProxy.js +1 -1
- package/packages/sap.fe.core/src/sap/fe/core/RouterProxy.ts +11 -9
- package/packages/sap.fe.core/src/sap/fe/core/Synchronization-dbg.js +21 -31
- package/packages/sap.fe.core/src/sap/fe/core/Synchronization.js +1 -1
- package/packages/sap.fe.core/src/sap/fe/core/TemplateComponent-dbg.js +1 -1
- package/packages/sap.fe.core/src/sap/fe/core/TemplateComponent.ts +10 -3
- package/packages/sap.fe.core/src/sap/fe/core/TemplateModel-dbg.js +20 -38
- package/packages/sap.fe.core/src/sap/fe/core/TemplateModel.js +1 -1
- package/packages/sap.fe.core/src/sap/fe/core/TemplateModel.ts +1 -1
- package/packages/sap.fe.core/src/sap/fe/core/TransactionHelper-dbg.js +1354 -1370
- package/packages/sap.fe.core/src/sap/fe/core/TransactionHelper.js +1 -1
- package/packages/sap.fe.core/src/sap/fe/core/TransactionHelper.ts +33 -22
- package/packages/sap.fe.core/src/sap/fe/core/actions/collaboration/ActivitySync-dbg.js +392 -0
- package/packages/sap.fe.core/src/sap/fe/core/actions/collaboration/ActivitySync.js +5 -0
- package/packages/sap.fe.core/src/sap/fe/core/actions/collaboration/ActivitySync.ts +355 -0
- package/packages/sap.fe.core/src/sap/fe/core/actions/collaboration/CollaborationCommon-dbg.js +136 -0
- package/packages/sap.fe.core/src/sap/fe/core/actions/collaboration/CollaborationCommon.js +5 -0
- package/packages/sap.fe.core/src/sap/fe/core/actions/collaboration/CollaborationCommon.ts +119 -0
- package/packages/sap.fe.core/src/sap/fe/core/actions/collaboration/Manage-dbg.js +262 -0
- package/packages/sap.fe.core/src/sap/fe/core/actions/collaboration/Manage.js +5 -0
- package/packages/sap.fe.core/src/sap/fe/core/actions/collaboration/Manage.ts +244 -0
- package/packages/sap.fe.core/src/sap/fe/core/actions/collaboration/ManageDialog.fragment.xml +103 -0
- package/packages/sap.fe.core/src/sap/fe/core/actions/collaboration/UserDetails.fragment.xml +13 -0
- package/packages/sap.fe.core/src/sap/fe/core/actions/draft-dbg.js +30 -68
- package/packages/sap.fe.core/src/sap/fe/core/actions/draft.js +1 -1
- package/packages/sap.fe.core/src/sap/fe/core/actions/draft.ts +44 -71
- package/packages/sap.fe.core/src/sap/fe/core/actions/messageHandling-dbg.js +55 -36
- package/packages/sap.fe.core/src/sap/fe/core/actions/messageHandling.js +1 -1
- package/packages/sap.fe.core/src/sap/fe/core/actions/messageHandling.ts +66 -46
- package/packages/sap.fe.core/src/sap/fe/core/actions/operations-dbg.js +34 -15
- package/packages/sap.fe.core/src/sap/fe/core/actions/operations.js +1 -1
- package/packages/sap.fe.core/src/sap/fe/core/actions/operations.ts +48 -18
- package/packages/sap.fe.core/src/sap/fe/core/actions/sticky-dbg.js +17 -4
- package/packages/sap.fe.core/src/sap/fe/core/actions/sticky.js +1 -1
- package/packages/sap.fe.core/src/sap/fe/core/actions/sticky.ts +21 -4
- package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/ControllerExtensionMetadata-dbg.js +69 -66
- package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/ControllerExtensionMetadata.js +2 -3
- package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/ControllerExtensionMetadata.ts +65 -0
- package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/EditFlow-dbg.js +1593 -1669
- package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/EditFlow.js +2 -3
- package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/EditFlow.ts +1672 -0
- package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/IntentBasedNavigation-dbg.js +79 -54
- package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/IntentBasedNavigation.js +2 -3
- package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/IntentBasedNavigation.ts +61 -0
- package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/InternalEditFlow-dbg.js +718 -779
- package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/InternalEditFlow.js +2 -3
- package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/InternalEditFlow.ts +783 -0
- package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/InternalIntentBasedNavigation-dbg.js +796 -816
- package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/InternalIntentBasedNavigation.js +2 -3
- package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/InternalIntentBasedNavigation.ts +803 -0
- package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/InternalRouting-dbg.js +1004 -1005
- package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/InternalRouting.js +2 -3
- package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/InternalRouting.ts +978 -0
- package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/KPIManagement-dbg.js +487 -521
- package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/KPIManagement.js +1 -1
- package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/KPIManagement.ts +2 -2
- package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/MassEdit-dbg.js +141 -169
- package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/MassEdit.js +2 -3
- package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/MassEdit.ts +156 -0
- package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/MessageHandler-dbg.js +233 -244
- package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/MessageHandler.js +2 -3
- package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/MessageHandler.ts +225 -0
- package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/PageReady-dbg.js +301 -336
- package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/PageReady.js +1 -1
- package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/PageReady.ts +12 -10
- package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/Paginator-dbg.js +188 -175
- package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/Paginator.js +2 -3
- package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/Paginator.ts +163 -0
- package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/Placeholder-dbg.js +157 -149
- package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/Placeholder.js +2 -3
- package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/Placeholder.ts +151 -0
- package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/Routing-dbg.js +144 -125
- package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/Routing.js +2 -3
- package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/Routing.ts +132 -0
- package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/RoutingListener-dbg.js +7 -6
- package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/RoutingListener.js +2 -3
- package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/RoutingListener.ts +3 -0
- package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/Share-dbg.js +230 -268
- package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/Share.js +2 -3
- package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/Share.ts +231 -0
- package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/SideEffects-dbg.js +592 -633
- package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/SideEffects.js +1 -1
- package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/SideEffects.ts +8 -7
- package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/ViewState-dbg.js +788 -806
- package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/ViewState.js +2 -3
- package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/ViewState.ts +805 -0
- package/packages/sap.fe.core/src/sap/fe/core/controls/ActionParameterDialog.fragment.xml +2 -2
- package/packages/sap.fe.core/src/sap/fe/core/controls/ActionPartial.fragment.xml +2 -2
- package/packages/sap.fe.core/src/sap/fe/core/controls/CommandExecution-dbg.js +67 -66
- package/packages/sap.fe.core/src/sap/fe/core/controls/CommandExecution.js +2 -3
- package/packages/sap.fe.core/src/sap/fe/core/controls/CommandExecution.ts +72 -0
- package/packages/sap.fe.core/src/sap/fe/core/controls/ConditionalWrapper-dbg.js +90 -75
- package/packages/sap.fe.core/src/sap/fe/core/controls/ConditionalWrapper.js +2 -3
- package/packages/sap.fe.core/src/sap/fe/core/controls/ConditionalWrapper.ts +83 -0
- package/packages/sap.fe.core/src/sap/fe/core/controls/CustomQuickViewPage-dbg.js +130 -125
- package/packages/sap.fe.core/src/sap/fe/core/controls/CustomQuickViewPage.js +2 -3
- package/packages/sap.fe.core/src/sap/fe/core/controls/CustomQuickViewPage.ts +126 -0
- package/packages/sap.fe.core/src/sap/fe/core/controls/DataLossOrDraftDiscard/DataLossOrDraftDiscardHandler-dbg.js +103 -112
- package/packages/sap.fe.core/src/sap/fe/core/controls/DataLossOrDraftDiscard/DataLossOrDraftDiscardHandler.js +2 -3
- package/packages/sap.fe.core/src/sap/fe/core/controls/DataLossOrDraftDiscard/DataLossOrDraftDiscardHandler.ts +101 -0
- package/packages/sap.fe.core/src/sap/fe/core/controls/FieldWrapper-dbg.js +122 -135
- package/packages/sap.fe.core/src/sap/fe/core/controls/FieldWrapper.js +2 -3
- package/packages/sap.fe.core/src/sap/fe/core/controls/FieldWrapper.ts +115 -0
- package/packages/sap.fe.core/src/sap/fe/core/controls/FilterBar-dbg.js +162 -159
- package/packages/sap.fe.core/src/sap/fe/core/controls/FilterBar.js +2 -3
- package/packages/sap.fe.core/src/sap/fe/core/controls/FilterBar.ts +143 -0
- package/packages/sap.fe.core/src/sap/fe/core/controls/FormElementWrapper-dbg.js +45 -39
- package/packages/sap.fe.core/src/sap/fe/core/controls/FormElementWrapper.js +2 -3
- package/packages/sap.fe.core/src/sap/fe/core/controls/FormElementWrapper.ts +40 -0
- package/packages/sap.fe.core/src/sap/fe/core/controls/MultiValueParameterDelegate-dbg.js +37 -42
- package/packages/sap.fe.core/src/sap/fe/core/controls/MultiValueParameterDelegate.js +1 -2
- package/packages/sap.fe.core/src/sap/fe/core/controls/MultiValueParameterDelegate.ts +31 -0
- package/packages/sap.fe.core/src/sap/fe/core/controls/filterbar/FilterContainer-dbg.js +126 -116
- package/packages/sap.fe.core/src/sap/fe/core/controls/filterbar/FilterContainer.js +2 -3
- package/packages/sap.fe.core/src/sap/fe/core/controls/filterbar/FilterContainer.ts +98 -0
- package/packages/sap.fe.core/src/sap/fe/core/controls/filterbar/VisualFilter-dbg.js +241 -255
- package/packages/sap.fe.core/src/sap/fe/core/controls/filterbar/VisualFilter.js +2 -3
- package/packages/sap.fe.core/src/sap/fe/core/controls/filterbar/VisualFilter.ts +245 -0
- package/packages/sap.fe.core/src/sap/fe/core/controls/filterbar/VisualFilterContainer-dbg.js +150 -141
- package/packages/sap.fe.core/src/sap/fe/core/controls/filterbar/VisualFilterContainer.js +2 -3
- package/packages/sap.fe.core/src/sap/fe/core/controls/filterbar/VisualFilterContainer.ts +125 -0
- package/packages/sap.fe.core/src/sap/fe/core/controls/filterbar/utils/VisualFilterUtils-dbg.js +335 -322
- package/packages/sap.fe.core/src/sap/fe/core/controls/filterbar/utils/VisualFilterUtils.js +2 -3
- package/packages/sap.fe.core/src/sap/fe/core/controls/filterbar/utils/VisualFilterUtils.ts +337 -0
- package/packages/sap.fe.core/src/sap/fe/core/controls/massEdit/MassEditHandlers-dbg.js +74 -74
- package/packages/sap.fe.core/src/sap/fe/core/controls/massEdit/MassEditHandlers.js +2 -3
- package/packages/sap.fe.core/src/sap/fe/core/controls/massEdit/MassEditHandlers.ts +70 -0
- package/packages/sap.fe.core/src/sap/fe/core/converters/ConverterContext-dbg.js +348 -379
- package/packages/sap.fe.core/src/sap/fe/core/converters/ConverterContext.js +1 -1
- package/packages/sap.fe.core/src/sap/fe/core/converters/ConverterContext.ts +19 -16
- package/packages/sap.fe.core/src/sap/fe/core/converters/ManifestSettings-dbg.js +12 -1
- package/packages/sap.fe.core/src/sap/fe/core/converters/ManifestSettings.js +1 -1
- package/packages/sap.fe.core/src/sap/fe/core/converters/ManifestSettings.ts +12 -1
- package/packages/sap.fe.core/src/sap/fe/core/converters/ManifestWrapper-dbg.js +354 -378
- package/packages/sap.fe.core/src/sap/fe/core/converters/ManifestWrapper.js +1 -1
- package/packages/sap.fe.core/src/sap/fe/core/converters/ManifestWrapper.ts +10 -0
- package/packages/sap.fe.core/src/sap/fe/core/converters/MetaModelConverter-dbg.js +6 -4
- package/packages/sap.fe.core/src/sap/fe/core/converters/MetaModelConverter.js +1 -1
- package/packages/sap.fe.core/src/sap/fe/core/converters/MetaModelConverter.ts +5 -2
- package/packages/sap.fe.core/src/sap/fe/core/converters/TemplateConverter-dbg.js +1 -1
- package/packages/sap.fe.core/src/sap/fe/core/converters/TemplateConverter.ts +2 -1
- package/packages/sap.fe.core/src/sap/fe/core/converters/annotations/DataField-dbg.js +26 -12
- package/packages/sap.fe.core/src/sap/fe/core/converters/annotations/DataField.js +1 -1
- package/packages/sap.fe.core/src/sap/fe/core/converters/annotations/DataField.ts +37 -13
- package/packages/sap.fe.core/src/sap/fe/core/converters/controls/Common/Form-dbg.js +2 -2
- package/packages/sap.fe.core/src/sap/fe/core/converters/controls/Common/Form.js +1 -1
- package/packages/sap.fe.core/src/sap/fe/core/converters/controls/Common/Form.ts +4 -2
- package/packages/sap.fe.core/src/sap/fe/core/converters/controls/Common/KPI-dbg.js +1 -1
- package/packages/sap.fe.core/src/sap/fe/core/converters/controls/Common/KPI.ts +3 -2
- package/packages/sap.fe.core/src/sap/fe/core/converters/controls/Common/Table-dbg.js +130 -23
- package/packages/sap.fe.core/src/sap/fe/core/converters/controls/Common/Table.js +1 -1
- package/packages/sap.fe.core/src/sap/fe/core/converters/controls/Common/Table.ts +134 -29
- package/packages/sap.fe.core/src/sap/fe/core/converters/controls/Common/table/StandardActions-dbg.js +118 -53
- package/packages/sap.fe.core/src/sap/fe/core/converters/controls/Common/table/StandardActions.js +1 -1
- package/packages/sap.fe.core/src/sap/fe/core/converters/controls/Common/table/StandardActions.ts +156 -93
- package/packages/sap.fe.core/src/sap/fe/core/converters/controls/ListReport/FilterBar-dbg.js +161 -207
- package/packages/sap.fe.core/src/sap/fe/core/converters/controls/ListReport/FilterBar.js +1 -1
- package/packages/sap.fe.core/src/sap/fe/core/converters/controls/ListReport/FilterBar.ts +148 -206
- package/packages/sap.fe.core/src/sap/fe/core/converters/helpers/Aggregation-dbg.js +115 -133
- package/packages/sap.fe.core/src/sap/fe/core/converters/helpers/Aggregation.js +1 -1
- package/packages/sap.fe.core/src/sap/fe/core/converters/helpers/BindingHelper-dbg.js +20 -6
- package/packages/sap.fe.core/src/sap/fe/core/converters/helpers/BindingHelper.js +1 -1
- package/packages/sap.fe.core/src/sap/fe/core/converters/helpers/BindingHelper.ts +16 -4
- package/packages/sap.fe.core/src/sap/fe/core/converters/helpers/ConfigurableObject-dbg.js +12 -1
- package/packages/sap.fe.core/src/sap/fe/core/converters/helpers/ConfigurableObject.ts +11 -0
- package/packages/sap.fe.core/src/sap/fe/core/converters/helpers/Key-dbg.js +42 -57
- package/packages/sap.fe.core/src/sap/fe/core/converters/helpers/Key.js +1 -1
- package/packages/sap.fe.core/src/sap/fe/core/converters/helpers/Key.ts +1 -1
- package/packages/sap.fe.core/src/sap/fe/core/converters/objectPage/HeaderAndFooterAction-dbg.js +25 -4
- package/packages/sap.fe.core/src/sap/fe/core/converters/objectPage/HeaderAndFooterAction.js +1 -1
- package/packages/sap.fe.core/src/sap/fe/core/converters/objectPage/HeaderAndFooterAction.ts +20 -3
- package/packages/sap.fe.core/src/sap/fe/core/converters/templates/ListReportConverter-dbg.js +10 -4
- package/packages/sap.fe.core/src/sap/fe/core/converters/templates/ListReportConverter.js +1 -1
- package/packages/sap.fe.core/src/sap/fe/core/converters/templates/ListReportConverter.ts +15 -4
- package/packages/sap.fe.core/src/sap/fe/core/converters/templates/ObjectPageConverter-dbg.js +7 -5
- package/packages/sap.fe.core/src/sap/fe/core/converters/templates/ObjectPageConverter.js +1 -1
- package/packages/sap.fe.core/src/sap/fe/core/converters/templates/ObjectPageConverter.ts +5 -1
- package/packages/sap.fe.core/src/sap/fe/core/designtime/AppComponent-dbg.designtime.js +92 -98
- package/packages/sap.fe.core/src/sap/fe/core/designtime/AppComponent.designtime.js +2 -3
- package/packages/sap.fe.core/src/sap/fe/core/designtime/AppComponent.designtime.ts +91 -0
- package/packages/sap.fe.core/src/sap/fe/core/designtime/library-preload.designtime.js +2 -3
- package/packages/sap.fe.core/src/sap/fe/core/designtime/library-preload.designtime.js.map +3 -3
- package/packages/sap.fe.core/src/sap/fe/core/formatters/CollaborationFormatter-dbg.js +104 -0
- package/packages/sap.fe.core/src/sap/fe/core/formatters/CollaborationFormatter.js +5 -0
- package/packages/sap.fe.core/src/sap/fe/core/formatters/CollaborationFormatter.ts +60 -0
- package/packages/sap.fe.core/src/sap/fe/core/formatters/TableFormatter-dbg.js +53 -2
- package/packages/sap.fe.core/src/sap/fe/core/formatters/TableFormatter.js +1 -1
- package/packages/sap.fe.core/src/sap/fe/core/formatters/TableFormatter.ts +51 -0
- package/packages/sap.fe.core/src/sap/fe/core/fpm/Component-dbg.js +50 -54
- package/packages/sap.fe.core/src/sap/fe/core/fpm/Component.js +2 -3
- package/packages/sap.fe.core/src/sap/fe/core/fpm/Component.ts +48 -0
- package/packages/sap.fe.core/src/sap/fe/core/fpm/manifest.json +2 -2
- package/packages/sap.fe.core/src/sap/fe/core/fpm/resources.json +7 -3
- package/packages/sap.fe.core/src/sap/fe/core/helpers/AppStartupHelper-dbg.js +323 -309
- package/packages/sap.fe.core/src/sap/fe/core/helpers/AppStartupHelper.js +1 -1
- package/packages/sap.fe.core/src/sap/fe/core/helpers/AppStartupHelper.ts +363 -337
- package/packages/sap.fe.core/src/sap/fe/core/helpers/BindingExpression-dbg.js +7 -7
- package/packages/sap.fe.core/src/sap/fe/core/helpers/BindingExpression.js +1 -1
- package/packages/sap.fe.core/src/sap/fe/core/helpers/BindingExpression.ts +7 -7
- package/packages/sap.fe.core/src/sap/fe/core/helpers/ClassSupport-dbg.js +186 -62
- package/packages/sap.fe.core/src/sap/fe/core/helpers/ClassSupport.js +1 -1
- package/packages/sap.fe.core/src/sap/fe/core/helpers/ClassSupport.ts +168 -52
- package/packages/sap.fe.core/src/sap/fe/core/helpers/DynamicAnnotationPathHelper-dbg.js +5 -4
- package/packages/sap.fe.core/src/sap/fe/core/helpers/DynamicAnnotationPathHelper.js +1 -1
- package/packages/sap.fe.core/src/sap/fe/core/helpers/DynamicAnnotationPathHelper.ts +1 -5
- package/packages/sap.fe.core/src/sap/fe/core/helpers/FPMHelper-dbg.js +1 -1
- package/packages/sap.fe.core/src/sap/fe/core/helpers/FPMHelper.ts +1 -1
- package/packages/sap.fe.core/src/sap/fe/core/helpers/MassEditHelper-dbg.js +601 -684
- package/packages/sap.fe.core/src/sap/fe/core/helpers/MassEditHelper.js +2 -3
- package/packages/sap.fe.core/src/sap/fe/core/helpers/MassEditHelper.ts +699 -0
- package/packages/sap.fe.core/src/sap/fe/core/helpers/ModelHelper-dbg.js +25 -1
- package/packages/sap.fe.core/src/sap/fe/core/helpers/ModelHelper.js +1 -1
- package/packages/sap.fe.core/src/sap/fe/core/helpers/ModelHelper.ts +23 -0
- package/packages/sap.fe.core/src/sap/fe/core/helpers/SemanticDateOperators-dbg.js +5 -1
- package/packages/sap.fe.core/src/sap/fe/core/helpers/SemanticDateOperators.js +1 -1
- package/packages/sap.fe.core/src/sap/fe/core/helpers/SemanticDateOperators.ts +4 -0
- package/packages/sap.fe.core/src/sap/fe/core/library-dbg.js +426 -451
- package/packages/sap.fe.core/src/sap/fe/core/library-h2-preload.js +36 -32
- package/packages/sap.fe.core/src/sap/fe/core/library-h2-preload.js.map +3 -3
- package/packages/sap.fe.core/src/sap/fe/core/library-preload.js +644 -738
- package/packages/sap.fe.core/src/sap/fe/core/library-preload.js.map +4 -4
- package/packages/sap.fe.core/src/sap/fe/core/library-preload.support.js +24 -35
- package/packages/sap.fe.core/src/sap/fe/core/library-preload.support.js.map +2 -2
- package/packages/sap.fe.core/src/sap/fe/core/library.js +2 -3
- package/packages/sap.fe.core/src/sap/fe/core/library.support.js +22 -33
- package/packages/sap.fe.core/src/sap/fe/core/library.support.ts +23 -0
- package/packages/sap.fe.core/src/sap/fe/core/library.ts +420 -0
- package/packages/sap.fe.core/src/sap/fe/core/manifest.json +10 -10
- package/packages/sap.fe.core/src/sap/fe/core/manifestMerger/ChangePageConfiguration-dbg.js +5 -3
- package/packages/sap.fe.core/src/sap/fe/core/manifestMerger/ChangePageConfiguration.js +1 -1
- package/packages/sap.fe.core/src/sap/fe/core/manifestMerger/ChangePageConfiguration.ts +4 -1
- package/packages/sap.fe.core/src/sap/fe/core/messagebundle.properties +22 -5
- package/packages/sap.fe.core/src/sap/fe/core/messagebundle_ar.properties +27 -7
- package/packages/sap.fe.core/src/sap/fe/core/messagebundle_bg.properties +27 -7
- package/packages/sap.fe.core/src/sap/fe/core/messagebundle_ca.properties +27 -7
- package/packages/sap.fe.core/src/sap/fe/core/messagebundle_cs.properties +27 -7
- package/packages/sap.fe.core/src/sap/fe/core/messagebundle_cy.properties +27 -7
- package/packages/sap.fe.core/src/sap/fe/core/messagebundle_da.properties +27 -7
- package/packages/sap.fe.core/src/sap/fe/core/messagebundle_de.properties +27 -7
- package/packages/sap.fe.core/src/sap/fe/core/messagebundle_el.properties +27 -7
- package/packages/sap.fe.core/src/sap/fe/core/messagebundle_en.properties +27 -7
- package/packages/sap.fe.core/src/sap/fe/core/messagebundle_en_GB.properties +27 -7
- package/packages/sap.fe.core/src/sap/fe/core/messagebundle_en_US_sappsd.properties +27 -7
- package/packages/sap.fe.core/src/sap/fe/core/messagebundle_en_US_saprigi.properties +27 -7
- package/packages/sap.fe.core/src/sap/fe/core/messagebundle_en_US_saptrc.properties +27 -7
- package/packages/sap.fe.core/src/sap/fe/core/messagebundle_es.properties +27 -7
- package/packages/sap.fe.core/src/sap/fe/core/messagebundle_es_MX.properties +27 -7
- package/packages/sap.fe.core/src/sap/fe/core/messagebundle_et.properties +27 -7
- package/packages/sap.fe.core/src/sap/fe/core/messagebundle_fi.properties +28 -8
- package/packages/sap.fe.core/src/sap/fe/core/messagebundle_fr.properties +28 -8
- package/packages/sap.fe.core/src/sap/fe/core/messagebundle_fr_CA.properties +29 -9
- package/packages/sap.fe.core/src/sap/fe/core/messagebundle_hi.properties +27 -7
- package/packages/sap.fe.core/src/sap/fe/core/messagebundle_hr.properties +27 -7
- package/packages/sap.fe.core/src/sap/fe/core/messagebundle_hu.properties +27 -7
- package/packages/sap.fe.core/src/sap/fe/core/messagebundle_id.properties +27 -7
- package/packages/sap.fe.core/src/sap/fe/core/messagebundle_it.properties +27 -7
- package/packages/sap.fe.core/src/sap/fe/core/messagebundle_iw.properties +27 -7
- package/packages/sap.fe.core/src/sap/fe/core/messagebundle_ja.properties +26 -6
- package/packages/sap.fe.core/src/sap/fe/core/messagebundle_kk.properties +27 -7
- package/packages/sap.fe.core/src/sap/fe/core/messagebundle_ko.properties +27 -7
- package/packages/sap.fe.core/src/sap/fe/core/messagebundle_lt.properties +27 -7
- package/packages/sap.fe.core/src/sap/fe/core/messagebundle_lv.properties +28 -8
- package/packages/sap.fe.core/src/sap/fe/core/messagebundle_ms.properties +27 -7
- package/packages/sap.fe.core/src/sap/fe/core/messagebundle_nl.properties +27 -7
- package/packages/sap.fe.core/src/sap/fe/core/messagebundle_no.properties +27 -7
- package/packages/sap.fe.core/src/sap/fe/core/messagebundle_pl.properties +27 -7
- package/packages/sap.fe.core/src/sap/fe/core/messagebundle_pt.properties +28 -8
- package/packages/sap.fe.core/src/sap/fe/core/messagebundle_pt_PT.properties +27 -7
- package/packages/sap.fe.core/src/sap/fe/core/messagebundle_ro.properties +27 -7
- package/packages/sap.fe.core/src/sap/fe/core/messagebundle_ru.properties +27 -7
- package/packages/sap.fe.core/src/sap/fe/core/messagebundle_sh.properties +27 -7
- package/packages/sap.fe.core/src/sap/fe/core/messagebundle_sk.properties +27 -7
- package/packages/sap.fe.core/src/sap/fe/core/messagebundle_sl.properties +27 -7
- package/packages/sap.fe.core/src/sap/fe/core/messagebundle_sv.properties +27 -7
- package/packages/sap.fe.core/src/sap/fe/core/messagebundle_th.properties +26 -6
- package/packages/sap.fe.core/src/sap/fe/core/messagebundle_tr.properties +30 -10
- package/packages/sap.fe.core/src/sap/fe/core/messagebundle_uk.properties +27 -7
- package/packages/sap.fe.core/src/sap/fe/core/messagebundle_vi.properties +27 -7
- package/packages/sap.fe.core/src/sap/fe/core/messagebundle_zh_CN.properties +27 -7
- package/packages/sap.fe.core/src/sap/fe/core/messagebundle_zh_TW.properties +27 -7
- package/packages/sap.fe.core/src/sap/fe/core/resources.json +745 -384
- package/packages/sap.fe.core/src/sap/fe/core/services/AsyncComponentServiceFactory-dbg.js +45 -71
- package/packages/sap.fe.core/src/sap/fe/core/services/AsyncComponentServiceFactory.js +1 -1
- package/packages/sap.fe.core/src/sap/fe/core/services/CacheHandlerServiceFactory-dbg.js +154 -192
- package/packages/sap.fe.core/src/sap/fe/core/services/CacheHandlerServiceFactory.js +1 -1
- package/packages/sap.fe.core/src/sap/fe/core/services/CacheHandlerServiceFactory.ts +4 -4
- package/packages/sap.fe.core/src/sap/fe/core/services/EnvironmentServiceFactory-dbg.js +66 -92
- package/packages/sap.fe.core/src/sap/fe/core/services/EnvironmentServiceFactory.js +1 -1
- package/packages/sap.fe.core/src/sap/fe/core/services/EnvironmentServiceFactory.ts +1 -1
- package/packages/sap.fe.core/src/sap/fe/core/services/NavigationServiceFactory-dbg.js +284 -339
- package/packages/sap.fe.core/src/sap/fe/core/services/NavigationServiceFactory.js +1 -1
- package/packages/sap.fe.core/src/sap/fe/core/services/NavigationServiceFactory.ts +10 -13
- package/packages/sap.fe.core/src/sap/fe/core/services/ResourceModelServiceFactory-dbg.js +67 -102
- package/packages/sap.fe.core/src/sap/fe/core/services/ResourceModelServiceFactory.js +1 -1
- package/packages/sap.fe.core/src/sap/fe/core/services/ResourceModelServiceFactory.ts +5 -2
- package/packages/sap.fe.core/src/sap/fe/core/services/RoutingServiceFactory-dbg.js +754 -814
- package/packages/sap.fe.core/src/sap/fe/core/services/RoutingServiceFactory.js +1 -1
- package/packages/sap.fe.core/src/sap/fe/core/services/RoutingServiceFactory.ts +13 -13
- package/packages/sap.fe.core/src/sap/fe/core/services/ShellServicesFactory-dbg.js +649 -736
- package/packages/sap.fe.core/src/sap/fe/core/services/ShellServicesFactory.js +1 -1
- package/packages/sap.fe.core/src/sap/fe/core/services/ShellServicesFactory.ts +7 -4
- package/packages/sap.fe.core/src/sap/fe/core/services/SideEffectsServiceFactory-dbg.js +567 -592
- package/packages/sap.fe.core/src/sap/fe/core/services/SideEffectsServiceFactory.js +1 -1
- package/packages/sap.fe.core/src/sap/fe/core/services/SideEffectsServiceFactory.ts +22 -3
- package/packages/sap.fe.core/src/sap/fe/core/services/TemplatedViewServiceFactory-dbg.js +354 -386
- package/packages/sap.fe.core/src/sap/fe/core/services/TemplatedViewServiceFactory.js +1 -1
- package/packages/sap.fe.core/src/sap/fe/core/services/TemplatedViewServiceFactory.ts +21 -14
- package/packages/sap.fe.core/src/sap/fe/core/services/view/TemplatingErrorPage-dbg.controller.js +1 -1
- package/packages/sap.fe.core/src/sap/fe/core/services/view/TemplatingErrorPage.controller.ts +1 -1
- package/packages/sap.fe.core/src/sap/fe/core/support/CommonHelper-dbg.js +1 -1
- package/packages/sap.fe.core/src/sap/fe/core/support/CommonHelper.ts +1 -1
- package/packages/sap.fe.core/src/sap/fe/core/support/Diagnostics-dbg.js +36 -48
- package/packages/sap.fe.core/src/sap/fe/core/support/Diagnostics.js +1 -1
- package/packages/sap.fe.core/src/sap/fe/core/templating/DataModelPathHelper-dbg.js +93 -85
- package/packages/sap.fe.core/src/sap/fe/core/templating/DataModelPathHelper.js +1 -1
- package/packages/sap.fe.core/src/sap/fe/core/templating/DataModelPathHelper.ts +104 -95
- package/packages/sap.fe.core/src/sap/fe/core/templating/FilterHelper-dbg.js +25 -32
- package/packages/sap.fe.core/src/sap/fe/core/templating/FilterHelper.js +1 -1
- package/packages/sap.fe.core/src/sap/fe/core/templating/FilterHelper.ts +36 -35
- package/packages/sap.fe.core/src/sap/fe/core/templating/PropertyHelper-dbg.js +2 -2
- package/packages/sap.fe.core/src/sap/fe/core/templating/PropertyHelper.js +1 -1
- package/packages/sap.fe.core/src/sap/fe/core/templating/PropertyHelper.ts +1 -1
- package/packages/sap.fe.core/src/sap/fe/core/templating/UIFormatters-dbg.js +32 -26
- package/packages/sap.fe.core/src/sap/fe/core/templating/UIFormatters.js +1 -1
- package/packages/sap.fe.core/src/sap/fe/core/templating/UIFormatters.ts +37 -24
- package/packages/sap.fe.core/test/sap/fe/core/designtime/api.json +1664 -1
- package/packages/sap.fe.core/test/sap/fe/core/designtime/apiref/api.json +1 -1
- package/packages/sap.fe.core/test/sap/fe/core/designtime/codeassistance/Library.jsmeta.json +1 -1
- package/packages/sap.fe.core/test/sap/fe/core/designtime/codeassistance/Library.jstemplates.json +1 -1
- package/packages/sap.fe.core/test/sap/fe/core/designtime/codeassistance/Library.xmlmeta.json +1 -1
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/model/MacroNavigationModel.js +59 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/field/fieldDisplay/localService/RootEntity.json +1 -1
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/field/fieldMessages/Component.js +33 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/field/fieldMessages/FieldMessages.controller.js +34 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/field/fieldMessages/FieldMessages.view.xml +18 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/field/fieldMessages/localService/Entities.json +6 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/field/fieldMessages/localService/service.cds +6 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/field/fieldMessages/manifest.json +68 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/fieldMessages.html +37 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/filterBar/filterBarSVandAnnotationDefaults/FilterBarSVandAnnotationDefaults.controller.js +1 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/table/tableCustoms/Page.controller.js +7 -2
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/table/tableCustoms/Page.view.xml +9 -3
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/table/tableCustoms/localService/RootEntity.js +23 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/table/tableCustoms/localService/RootEntity.ts +11 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/table/tableCustoms/localService/service.cds +11 -23
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/table/tableMessages/Component.js +40 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/table/tableMessages/TableMessages.controller.js +35 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/table/tableMessages/TableMessages.view.xml +21 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/table/tableMessages/localService/RootEntity.json +82 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/table/tableMessages/localService/service.cds +82 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/table/tableMessages/manifest.json +78 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/tableMessages.html +37 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/controllerExtensions/basicExtensibility/localService/ChildEntity.json +5 -4
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/customElements/customColumn/customColumnContent/manifest.json +3 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/view/App.view.xml +1 -1
- package/packages/sap.fe.core/test/sap/fe/core/jest/AnnotationHelper.spec.js +1 -169
- package/packages/sap.fe.core/test/sap/fe/core/jest/AnnotationHelper.spec.ts +0 -212
- package/packages/sap.fe.core/test/sap/fe/core/jest/CommonUtils.spec.js +2305 -119
- package/packages/sap.fe.core/test/sap/fe/core/jest/CommonUtils.spec.ts +2206 -67
- package/packages/sap.fe.core/test/sap/fe/core/jest/FilterUtils.spec.js +40 -0
- package/packages/sap.fe.core/test/sap/fe/core/jest/FilterUtils.spec.ts +34 -0
- package/packages/sap.fe.core/test/sap/fe/core/jest/FlexibleColumnLayout.spec.js +114 -0
- package/packages/sap.fe.core/test/sap/fe/core/jest/FlexibleColumnLayout.spec.ts +114 -0
- package/packages/sap.fe.core/test/sap/fe/core/jest/Paginators.spec.js +113 -0
- package/packages/sap.fe.core/test/sap/fe/core/jest/Paginators.spec.ts +78 -0
- package/packages/sap.fe.core/test/sap/fe/core/jest/RouterProxy.spec.js +599 -1
- package/packages/sap.fe.core/test/sap/fe/core/jest/RouterProxy.spec.ts +614 -0
- package/packages/sap.fe.core/test/sap/fe/core/jest/TemplateConverter.spec.js +23 -5
- package/packages/sap.fe.core/test/sap/fe/core/jest/TemplateConverter.spec.ts +26 -14
- package/packages/sap.fe.core/test/sap/fe/core/jest/TransactionHelper.spec.js +87 -1
- package/packages/sap.fe.core/test/sap/fe/core/jest/TransactionHelper.spec.ts +82 -1
- package/packages/sap.fe.core/test/sap/fe/core/jest/VisualFilterUtils.spec.js +124 -0
- package/packages/sap.fe.core/test/sap/fe/core/jest/VisualFilterUtils.spec.ts +141 -0
- package/packages/sap.fe.core/test/sap/fe/core/jest/__snapshots__/TemplateConverter.spec.ts.snap +34768 -67
- package/packages/sap.fe.core/test/sap/fe/core/jest/actions/collaboration/ActivitySync.spec.js +170 -0
- package/packages/sap.fe.core/test/sap/fe/core/jest/actions/collaboration/ActivitySync.spec.ts +155 -0
- package/packages/sap.fe.core/test/sap/fe/core/jest/actions/collaboration/CollaborationCommon.spec.js +101 -0
- package/packages/sap.fe.core/test/sap/fe/core/jest/actions/collaboration/CollaborationCommon.spec.ts +94 -0
- package/packages/sap.fe.core/test/sap/fe/core/jest/actions/collaboration/Manage.spec.js +82 -0
- package/packages/sap.fe.core/test/sap/fe/core/jest/actions/collaboration/Manage.spec.ts +77 -0
- package/packages/sap.fe.core/test/sap/fe/core/jest/actions/draft.spec.js +2 -2
- package/packages/sap.fe.core/test/sap/fe/core/jest/actions/draft.spec.ts +1 -1
- package/packages/sap.fe.core/test/sap/fe/core/jest/actions/messageHandling.spec.js +7 -2
- package/packages/sap.fe.core/test/sap/fe/core/jest/actions/messageHandling.spec.ts +7 -0
- package/packages/sap.fe.core/test/sap/fe/core/jest/actions/operations.spec.js +104 -2
- package/packages/sap.fe.core/test/sap/fe/core/jest/actions/operations.spec.ts +96 -1
- package/packages/sap.fe.core/test/sap/fe/core/jest/actions/sticky.spec.js +83 -0
- package/packages/sap.fe.core/test/sap/fe/core/jest/actions/sticky.spec.ts +79 -0
- package/packages/sap.fe.core/test/sap/fe/core/jest/appcomponent.spec.js +72 -0
- package/packages/sap.fe.core/test/sap/fe/core/jest/appcomponent.spec.ts +64 -0
- package/packages/sap.fe.core/test/sap/fe/core/jest/controllerextensions/EditFlow.spec.js +619 -3
- package/packages/sap.fe.core/test/sap/fe/core/jest/controllerextensions/EditFlow.spec.ts +668 -5
- package/packages/sap.fe.core/test/sap/fe/core/jest/controllerextensions/InternalEditFlow.spec.js +297 -1
- package/packages/sap.fe.core/test/sap/fe/core/jest/controllerextensions/InternalEditFlow.spec.ts +276 -6
- package/packages/sap.fe.core/test/sap/fe/core/jest/controllerextensions/InternalIntentBasedNavigation.spec.js +149 -0
- package/packages/sap.fe.core/test/sap/fe/core/jest/controllerextensions/InternalIntentBasedNavigation.spec.ts +142 -0
- package/packages/sap.fe.core/test/sap/fe/core/jest/controllerextensions/InternalRouting.spec.js +776 -182
- package/packages/sap.fe.core/test/sap/fe/core/jest/controllerextensions/InternalRouting.spec.ts +181 -3
- package/packages/sap.fe.core/test/sap/fe/core/jest/controllerextensions/KPIManagement.spec.js +19 -43
- package/packages/sap.fe.core/test/sap/fe/core/jest/controllerextensions/MassEdit.spec.js +2 -18
- package/packages/sap.fe.core/test/sap/fe/core/jest/controllerextensions/MassEdit.spec.ts +8 -6
- package/packages/sap.fe.core/test/sap/fe/core/jest/controllerextensions/MessageHandler.spec.js +5 -27
- package/packages/sap.fe.core/test/sap/fe/core/jest/controllerextensions/MessageHandler.spec.ts +1 -1
- package/packages/sap.fe.core/test/sap/fe/core/jest/controllerextensions/Routing.spec.js +1 -1
- package/packages/sap.fe.core/test/sap/fe/core/jest/controllerextensions/Routing.spec.ts +1 -1
- package/packages/sap.fe.core/test/sap/fe/core/jest/controllerextensions/Share.spec.js +86 -0
- package/packages/sap.fe.core/test/sap/fe/core/jest/controllerextensions/Share.spec.ts +80 -0
- package/packages/sap.fe.core/test/sap/fe/core/jest/controllerextensions/SideEffects.spec.js +1 -1
- package/packages/sap.fe.core/test/sap/fe/core/jest/controllerextensions/SideEffects.spec.ts +1 -1
- package/packages/sap.fe.core/test/sap/fe/core/jest/controllerextensions/ViewState.spec.js +2 -18
- package/packages/sap.fe.core/test/sap/fe/core/jest/controllerextensions/ViewState.spec.ts +1 -1
- package/packages/sap.fe.core/test/sap/fe/core/jest/controls/DataLossOrDraftDiscardHandler.spec.js +45 -0
- package/packages/sap.fe.core/test/sap/fe/core/jest/controls/DataLossOrDraftDiscardHandler.spec.ts +29 -0
- package/packages/sap.fe.core/test/sap/fe/core/jest/controls/FilterBar.spec.js +51 -1
- package/packages/sap.fe.core/test/sap/fe/core/jest/controls/FilterBar.spec.ts +47 -1
- package/packages/sap.fe.core/test/sap/fe/core/jest/controls/__snapshots__/FilterBar.spec.ts.snap +3 -0
- package/packages/sap.fe.core/test/sap/fe/core/jest/converters/ConverterContext.spec.js +2 -2
- package/packages/sap.fe.core/test/sap/fe/core/jest/converters/ConverterContext.spec.ts +1 -1
- package/packages/sap.fe.core/test/sap/fe/core/jest/converters/Filter.spec.js +25 -36
- package/packages/sap.fe.core/test/sap/fe/core/jest/converters/Filter.spec.ts +26 -36
- package/packages/sap.fe.core/test/sap/fe/core/jest/converters/ListReportConverter.spec.js +3 -3
- package/packages/sap.fe.core/test/sap/fe/core/jest/converters/ListReportConverter.spec.ts +2 -2
- package/packages/sap.fe.core/test/sap/fe/core/jest/converters/MetaModelConverter.spec.js +1 -1
- package/packages/sap.fe.core/test/sap/fe/core/jest/converters/MetaModelConverter.spec.ts +6 -5
- package/packages/sap.fe.core/test/sap/fe/core/jest/converters/Table.spec.js +133 -9
- package/packages/sap.fe.core/test/sap/fe/core/jest/converters/Table.spec.ts +171 -8
- package/packages/sap.fe.core/test/sap/fe/core/jest/converters/TableStandardActions.spec.js +174 -210
- package/packages/sap.fe.core/test/sap/fe/core/jest/converters/TableStandardActions.spec.ts +294 -230
- package/packages/sap.fe.core/test/sap/fe/core/jest/converters/__snapshots__/Filter.spec.ts.snap +3 -1
- package/packages/sap.fe.core/test/sap/fe/core/jest/converters/controls/Chart.spec.js +237 -0
- package/packages/sap.fe.core/test/sap/fe/core/jest/converters/controls/Chart.spec.ts +246 -0
- package/packages/sap.fe.core/test/sap/fe/core/jest/converters/controls/DataVisualization.spec.js +9993 -0
- package/packages/sap.fe.core/test/sap/fe/core/jest/converters/controls/DataVisualization.spec.ts +11352 -0
- package/packages/sap.fe.core/test/sap/fe/core/jest/converters/controls/Table.spec.js +460 -0
- package/packages/sap.fe.core/test/sap/fe/core/jest/converters/controls/Table.spec.ts +543 -0
- package/packages/sap.fe.core/test/sap/fe/core/jest/converters/controls/TableAnalytics.spec.js +616 -0
- package/packages/sap.fe.core/test/sap/fe/core/jest/converters/controls/TableAnalytics.spec.ts +711 -0
- package/packages/sap.fe.core/test/sap/fe/core/jest/converters/controls/manifest.json +887 -0
- package/packages/sap.fe.core/test/sap/fe/core/jest/converters/objectPage/HeaderAndFooterAction.spec.js +393 -0
- package/packages/sap.fe.core/test/sap/fe/core/jest/converters/objectPage/HeaderAndFooterAction.spec.ts +434 -0
- package/packages/sap.fe.core/test/sap/fe/core/jest/data/DataConverter.js +31 -0
- package/packages/sap.fe.core/test/sap/fe/core/jest/data/DataConverter.ts +12 -0
- package/packages/sap.fe.core/test/sap/fe/core/jest/data/Filter.cds +27 -0
- package/packages/sap.fe.core/test/sap/fe/core/jest/data/MassEditHelper.cds +12 -0
- package/packages/sap.fe.core/test/sap/fe/core/jest/data/OKRA/manifest.json +150 -0
- package/packages/sap.fe.core/test/sap/fe/core/jest/data/OKRA/metadata.xml +365 -0
- package/packages/sap.fe.core/test/sap/fe/core/jest/data/OKRA/metadata_groupable_options.xml +96 -0
- package/packages/sap.fe.core/test/sap/fe/core/jest/data/OKRA/metadata_textArrangement.xml +102 -0
- package/packages/sap.fe.core/test/sap/fe/core/jest/data/OKRA/metadata_withPV.xml +359 -0
- package/packages/sap.fe.core/test/sap/fe/core/jest/data/Table.cds +89 -27
- package/packages/sap.fe.core/test/sap/fe/core/jest/data/TemplatingTestData.js +421 -0
- package/packages/sap.fe.core/test/sap/fe/core/jest/data/TemplatingTestData.ts +413 -0
- package/packages/sap.fe.core/test/sap/fe/core/jest/data/aggregatedSD/metadata.xml +3767 -0
- package/packages/sap.fe.core/test/sap/fe/core/jest/data/dsr/manifest.json +185 -0
- package/packages/sap.fe.core/test/sap/fe/core/jest/data/dsr/metadata.xml +1534 -0
- package/packages/sap.fe.core/test/sap/fe/core/jest/data/manifest.json +887 -0
- package/packages/sap.fe.core/test/sap/fe/core/jest/data/salesOrderMetadata_qunit.xml +4995 -0
- package/packages/sap.fe.core/test/sap/fe/core/jest/formatters/CollaborationFormatters.spec.js +48 -0
- package/packages/sap.fe.core/test/sap/fe/core/jest/formatters/CollaborationFormatters.spec.ts +48 -0
- package/packages/sap.fe.core/test/sap/fe/core/jest/formatters/TableFormatters.spec.js +131 -51
- package/packages/sap.fe.core/test/sap/fe/core/jest/formatters/TableFormatters.spec.ts +81 -31
- package/packages/sap.fe.core/test/sap/fe/core/jest/helpers/AppStartupHelper.spec.js +13 -7
- package/packages/sap.fe.core/test/sap/fe/core/jest/helpers/AppStartupHelper.spec.ts +12 -6
- package/packages/sap.fe.core/test/sap/fe/core/jest/helpers/MassEditHelper.spec.js +17 -3
- package/packages/sap.fe.core/test/sap/fe/core/jest/helpers/MassEditHelper.spec.ts +24 -7
- package/packages/sap.fe.core/test/sap/fe/core/jest/helpers/ModelHelper.spec.js +61 -1
- package/packages/sap.fe.core/test/sap/fe/core/jest/helpers/ModelHelper.spec.ts +59 -0
- package/packages/sap.fe.core/test/sap/fe/core/jest/helpers/PasteHelper.spec.js +3 -3
- package/packages/sap.fe.core/test/sap/fe/core/jest/helpers/PasteHelper.spec.ts +1 -2
- package/packages/sap.fe.core/test/sap/fe/core/jest/helpers/SemanticDateOperators.spec.js +4 -4
- package/packages/sap.fe.core/test/sap/fe/core/jest/helpers/SemanticDateOperators.spec.ts +6 -3
- package/packages/sap.fe.core/test/sap/fe/core/jest/helpers/StableIdHelper.spec.js +1 -1
- package/packages/sap.fe.core/test/sap/fe/core/jest/helpers/StableIdHelper.spec.ts +1 -1
- package/packages/sap.fe.core/test/sap/fe/core/jest/helpers/__snapshots__/AppStartupHelper.spec.ts.snap +19 -0
- package/packages/sap.fe.core/test/sap/fe/core/jest/helpers/__snapshots__/MassEditHelper.spec.ts.snap +0 -73
- package/packages/sap.fe.core/test/sap/fe/core/jest/manifestmerger/ChangePageConfiguration.spec.js +11 -1
- package/packages/sap.fe.core/test/sap/fe/core/jest/manifestmerger/ChangePageConfiguration.spec.ts +15 -0
- package/packages/sap.fe.core/test/sap/fe/core/jest/manifestmerger/__snapshots__/ChangePageConfiguration.spec.ts.snap +30 -0
- package/packages/sap.fe.core/test/sap/fe/core/jest/services/SideEffectsService.spec.js +49 -5
- package/packages/sap.fe.core/test/sap/fe/core/jest/services/SideEffectsService.spec.ts +60 -5
- package/packages/sap.fe.core/test/sap/fe/core/jest/templating/DataModelPathHelper.spec.js +384 -0
- package/packages/sap.fe.core/test/sap/fe/core/jest/templating/DataModelPathHelper.spec.ts +427 -0
- package/packages/sap.fe.core/test/sap/fe/core/jest/templating/PropertyHelper.spec.js +132 -2
- package/packages/sap.fe.core/test/sap/fe/core/jest/templating/PropertyHelper.spec.ts +156 -2
- package/packages/sap.fe.core/test/sap/fe/core/jest/templating/UIFormatters.spec.js +273 -0
- package/packages/sap.fe.core/test/sap/fe/core/jest/templating/UIFormatters.spec.ts +402 -0
- package/packages/sap.fe.core/test/sap/fe/core/jest/templating/ValueHelpTemplating.spec.js +45 -0
- package/packages/sap.fe.core/test/sap/fe/core/jest/templating/ValueHelpTemplating.spec.ts +40 -0
- package/packages/sap.fe.core/test/sap/fe/core/qunit/TemplatingExpressions.qunit.js +2 -1
- package/packages/sap.fe.core/test/sap/fe/core/qunit/apps/generalTests.json +0 -102
- package/packages/sap.fe.core/test/sap/fe/core/relnotes/changes-1.100.json +326 -0
- package/packages/sap.fe.core/test/sap/fe/core/relnotes/changes-1.99.json +0 -22
- package/packages/sap.fe.macros/src/sap/fe/macros/.library +1 -1
- package/packages/sap.fe.macros/src/sap/fe/macros/.theming +1 -1
- package/packages/sap.fe.macros/src/sap/fe/macros/Chart.metadata-dbg.js +2 -2
- package/packages/sap.fe.macros/src/sap/fe/macros/Chart.metadata.js +1 -1
- package/packages/sap.fe.macros/src/sap/fe/macros/ChartAPI-dbg.js +22 -43
- package/packages/sap.fe.macros/src/sap/fe/macros/ChartAPI.js +1 -1
- package/packages/sap.fe.macros/src/sap/fe/macros/ChartAPI.ts +3 -3
- package/packages/sap.fe.macros/src/sap/fe/macros/ChartDelegate-dbg.js +14 -24
- package/packages/sap.fe.macros/src/sap/fe/macros/ChartDelegate.js +1 -1
- package/packages/sap.fe.macros/src/sap/fe/macros/CommonHelper-dbg.js +1 -1
- package/packages/sap.fe.macros/src/sap/fe/macros/DraftIndicator.fragment.xml +3 -2
- package/packages/sap.fe.macros/src/sap/fe/macros/Field.fragment.xml +16 -18
- package/packages/sap.fe.macros/src/sap/fe/macros/FieldAPI-dbg.js +162 -100
- package/packages/sap.fe.macros/src/sap/fe/macros/FieldAPI.js +1 -1
- package/packages/sap.fe.macros/src/sap/fe/macros/FieldAPI.ts +93 -16
- package/packages/sap.fe.macros/src/sap/fe/macros/FilterBar.fragment.xml +2 -1
- package/packages/sap.fe.macros/src/sap/fe/macros/FilterBar.metadata-dbg.js +16 -8
- package/packages/sap.fe.macros/src/sap/fe/macros/FilterBar.metadata.js +1 -1
- package/packages/sap.fe.macros/src/sap/fe/macros/FilterBarAPI-dbg.js +58 -83
- package/packages/sap.fe.macros/src/sap/fe/macros/FilterBarAPI.js +1 -1
- package/packages/sap.fe.macros/src/sap/fe/macros/FilterBarAPI.ts +16 -2
- package/packages/sap.fe.macros/src/sap/fe/macros/FilterBarDelegate-dbg.js +112 -192
- package/packages/sap.fe.macros/src/sap/fe/macros/FilterBarDelegate.js +1 -1
- package/packages/sap.fe.macros/src/sap/fe/macros/Form.metadata-dbg.js +1 -1
- package/packages/sap.fe.macros/src/sap/fe/macros/Form.metadata.js +1 -1
- package/packages/sap.fe.macros/src/sap/fe/macros/FormAPI-dbg.js +4 -20
- package/packages/sap.fe.macros/src/sap/fe/macros/FormAPI.js +1 -1
- package/packages/sap.fe.macros/src/sap/fe/macros/FormContainer.fragment.xml +1 -1
- package/packages/sap.fe.macros/src/sap/fe/macros/FormContainerAPI-dbg.js +10 -31
- package/packages/sap.fe.macros/src/sap/fe/macros/FormContainerAPI.js +1 -1
- package/packages/sap.fe.macros/src/sap/fe/macros/MacroAPI-dbg.js +147 -162
- package/packages/sap.fe.macros/src/sap/fe/macros/MacroAPI.js +1 -1
- package/packages/sap.fe.macros/src/sap/fe/macros/MacroAPI.ts +32 -8
- package/packages/sap.fe.macros/src/sap/fe/macros/MacroMetadata-dbg.js +5 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/MacroMetadata.js +1 -1
- package/packages/sap.fe.macros/src/sap/fe/macros/PhantomUtil-dbg.js +56 -74
- package/packages/sap.fe.macros/src/sap/fe/macros/PhantomUtil.js +1 -1
- package/packages/sap.fe.macros/src/sap/fe/macros/Table.fragment.xml +1 -1
- package/packages/sap.fe.macros/src/sap/fe/macros/Table.metadata-dbg.js +90 -39
- package/packages/sap.fe.macros/src/sap/fe/macros/Table.metadata.js +1 -1
- package/packages/sap.fe.macros/src/sap/fe/macros/TableAPI-dbg.js +284 -251
- package/packages/sap.fe.macros/src/sap/fe/macros/TableAPI.js +1 -1
- package/packages/sap.fe.macros/src/sap/fe/macros/TableAPI.ts +126 -14
- package/packages/sap.fe.macros/src/sap/fe/macros/field/FieldHelper-dbg.js +38 -101
- package/packages/sap.fe.macros/src/sap/fe/macros/field/FieldHelper.js +1 -1
- package/packages/sap.fe.macros/src/sap/fe/macros/field/FieldRuntime-dbg.js +68 -6
- package/packages/sap.fe.macros/src/sap/fe/macros/field/FieldRuntime.js +1 -1
- package/packages/sap.fe.macros/src/sap/fe/macros/field/FieldTemplating-dbg.js +72 -12
- package/packages/sap.fe.macros/src/sap/fe/macros/field/FieldTemplating.js +1 -1
- package/packages/sap.fe.macros/src/sap/fe/macros/field/FieldTemplating.ts +67 -10
- package/packages/sap.fe.macros/src/sap/fe/macros/field/QuickViewLinkDelegate-dbg.js +5 -12
- package/packages/sap.fe.macros/src/sap/fe/macros/field/QuickViewLinkDelegate.js +1 -1
- package/packages/sap.fe.macros/src/sap/fe/macros/filter/DraftEditState.fragment.xml +1 -1
- package/packages/sap.fe.macros/src/sap/fe/macros/filter/FilterFieldHelper-dbg.js +1 -3
- package/packages/sap.fe.macros/src/sap/fe/macros/filter/FilterFieldHelper.js +1 -1
- package/packages/sap.fe.macros/src/sap/fe/macros/filter/FilterUtils-dbg.js +62 -39
- package/packages/sap.fe.macros/src/sap/fe/macros/filter/FilterUtils.js +1 -1
- package/packages/sap.fe.macros/src/sap/fe/macros/filter/type/MultiValue-dbg.js +104 -50
- package/packages/sap.fe.macros/src/sap/fe/macros/filter/type/MultiValue.js +2 -3
- package/packages/sap.fe.macros/src/sap/fe/macros/filter/type/MultiValue.ts +68 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/filter/type/Range-dbg.js +83 -35
- package/packages/sap.fe.macros/src/sap/fe/macros/filter/type/Range.js +2 -3
- package/packages/sap.fe.macros/src/sap/fe/macros/filter/type/Range.ts +66 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/filter/type/Value-dbg.js +327 -216
- package/packages/sap.fe.macros/src/sap/fe/macros/filter/type/Value.js +2 -3
- package/packages/sap.fe.macros/src/sap/fe/macros/filter/type/Value.ts +303 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/internal/CollaborationAvatar.fragment.xml +15 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/internal/CollectionField.metadata-dbg.js +14 -2
- package/packages/sap.fe.macros/src/sap/fe/macros/internal/CollectionField.metadata.js +1 -1
- package/packages/sap.fe.macros/src/sap/fe/macros/internal/CollectionField.metadata.ts +18 -2
- package/packages/sap.fe.macros/src/sap/fe/macros/internal/DataPoint.fragment.xml +12 -29
- package/packages/sap.fe.macros/src/sap/fe/macros/internal/DataPoint.metadata-dbg.js +9 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/internal/DataPoint.metadata.js +1 -1
- package/packages/sap.fe.macros/src/sap/fe/macros/internal/Field.fragment.xml +1 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/internal/Field.metadata-dbg.js +529 -533
- package/packages/sap.fe.macros/src/sap/fe/macros/internal/Field.metadata.js +2 -3
- package/packages/sap.fe.macros/src/sap/fe/macros/internal/Field.metadata.ts +568 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/internal/FilterField.fragment.xml +0 -1
- package/packages/sap.fe.macros/src/sap/fe/macros/internal/SituationsIndicator-dbg.js +3 -3
- package/packages/sap.fe.macros/src/sap/fe/macros/internal/SituationsIndicator.js +1 -1
- package/packages/sap.fe.macros/src/sap/fe/macros/internal/SituationsIndicator.ts +3 -2
- package/packages/sap.fe.macros/src/sap/fe/macros/internal/field/FieldContent.fragment.xml +3 -1
- package/packages/sap.fe.macros/src/sap/fe/macros/internal/field/FieldStructure.fragment.xml +13 -3
- package/packages/sap.fe.macros/src/sap/fe/macros/internal/field/displayStyle/DataPoint.fragment.xml +4 -1
- package/packages/sap.fe.macros/src/sap/fe/macros/internal/field/displayStyle/ExpandableText.fragment.xml +1 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/internal/field/displayStyle/LabelSemanticKey.fragment.xml +1 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/internal/field/displayStyle/Link.fragment.xml +38 -4
- package/packages/sap.fe.macros/src/sap/fe/macros/internal/field/displayStyle/LinkWithQuickViewForm.fragment.xml +2 -2
- package/packages/sap.fe.macros/src/sap/fe/macros/internal/field/displayStyle/LinkWrapper.fragment.xml +3 -3
- package/packages/sap.fe.macros/src/sap/fe/macros/internal/field/displayStyle/MdcFieldWithValueHelp.fragment.xml +1 -2
- package/packages/sap.fe.macros/src/sap/fe/macros/internal/field/displayStyle/ObjectIdentifier.fragment.xml +55 -11
- package/packages/sap.fe.macros/src/sap/fe/macros/internal/field/displayStyle/SemanticKeyWithDraftIndicator.fragment.xml +1 -1
- package/packages/sap.fe.macros/src/sap/fe/macros/internal/field/displayStyle/Text.fragment.xml +3 -3
- package/packages/sap.fe.macros/src/sap/fe/macros/internal/field/editStyle/DatePicker.fragment.xml +9 -2
- package/packages/sap.fe.macros/src/sap/fe/macros/internal/field/editStyle/DateTimePicker.fragment.xml +9 -2
- package/packages/sap.fe.macros/src/sap/fe/macros/internal/field/editStyle/Input.fragment.xml +12 -3
- package/packages/sap.fe.macros/src/sap/fe/macros/internal/field/editStyle/InputWithUnit.fragment.xml +26 -5
- package/packages/sap.fe.macros/src/sap/fe/macros/internal/field/editStyle/InputWithValueHelp.fragment.xml +10 -2
- package/packages/sap.fe.macros/src/sap/fe/macros/internal/field/editStyle/RatingIndicator.fragment.xml +9 -2
- package/packages/sap.fe.macros/src/sap/fe/macros/internal/field/editStyle/TimePicker.fragment.xml +9 -2
- package/packages/sap.fe.macros/src/sap/fe/macros/internal/field/fragments/ObjectIdentifierContent.fragment.xml +4 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/internal/helpers/DataPointTemplating-dbg.js +31 -2
- package/packages/sap.fe.macros/src/sap/fe/macros/internal/helpers/DataPointTemplating.js +1 -1
- package/packages/sap.fe.macros/src/sap/fe/macros/internal/helpers/DataPointTemplating.ts +20 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/internal/situations/Runtime-dbg.js +2 -2
- package/packages/sap.fe.macros/src/sap/fe/macros/internal/situations/Runtime.js +1 -1
- package/packages/sap.fe.macros/src/sap/fe/macros/internal/situations/Runtime.ts +7 -9
- package/packages/sap.fe.macros/src/sap/fe/macros/internal/valuehelp/ValueListHelper-dbg.js +90 -118
- package/packages/sap.fe.macros/src/sap/fe/macros/internal/valuehelp/ValueListHelper.js +1 -1
- package/packages/sap.fe.macros/src/sap/fe/macros/library-dbg.js +1 -1
- package/packages/sap.fe.macros/src/sap/fe/macros/library-h2-preload.js +13 -12
- package/packages/sap.fe.macros/src/sap/fe/macros/library-h2-preload.js.map +2 -2
- package/packages/sap.fe.macros/src/sap/fe/macros/library-preload.js +185 -214
- package/packages/sap.fe.macros/src/sap/fe/macros/library-preload.js.map +4 -4
- package/packages/sap.fe.macros/src/sap/fe/macros/library.js +1 -1
- package/packages/sap.fe.macros/src/sap/fe/macros/manifest.json +9 -9
- package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle.properties +4 -1
- package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_ar.properties +3 -1
- package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_bg.properties +3 -1
- package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_ca.properties +3 -1
- package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_cs.properties +3 -1
- package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_cy.properties +3 -1
- package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_da.properties +3 -1
- package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_de.properties +4 -2
- package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_el.properties +3 -1
- package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_en.properties +3 -1
- package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_en_GB.properties +3 -1
- package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_en_US_sappsd.properties +3 -1
- package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_en_US_saprigi.properties +3 -1
- package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_en_US_saptrc.properties +3 -1
- package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_es.properties +3 -1
- package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_es_MX.properties +3 -1
- package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_et.properties +3 -1
- package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_fi.properties +3 -1
- package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_fr.properties +3 -1
- package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_fr_CA.properties +3 -1
- package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_hi.properties +3 -1
- package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_hr.properties +3 -1
- package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_hu.properties +4 -2
- package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_id.properties +4 -2
- package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_it.properties +3 -1
- package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_iw.properties +3 -1
- package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_ja.properties +3 -1
- package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_kk.properties +3 -1
- package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_ko.properties +3 -1
- package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_lt.properties +3 -1
- package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_lv.properties +3 -1
- package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_ms.properties +3 -1
- package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_nl.properties +3 -1
- package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_no.properties +3 -1
- package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_pl.properties +3 -1
- package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_pt.properties +3 -1
- package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_pt_PT.properties +3 -1
- package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_ro.properties +3 -1
- package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_ru.properties +3 -1
- package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_sh.properties +3 -1
- package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_sk.properties +3 -1
- package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_sl.properties +3 -1
- package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_sv.properties +3 -1
- package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_th.properties +3 -1
- package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_tr.properties +3 -1
- package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_uk.properties +3 -1
- package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_vi.properties +3 -1
- package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_zh_CN.properties +3 -1
- package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_zh_TW.properties +3 -1
- package/packages/sap.fe.macros/src/sap/fe/macros/resources.json +273 -199
- package/packages/sap.fe.macros/src/sap/fe/macros/table/Actions.fragment.xml +1 -1
- package/packages/sap.fe.macros/src/sap/fe/macros/table/Column.fragment.xml +1 -1
- package/packages/sap.fe.macros/src/sap/fe/macros/table/ColumnContent.fragment.xml +2 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/table/CreationRow.fragment.xml +13 -20
- package/packages/sap.fe.macros/src/sap/fe/macros/table/CustomColumn.fragment.xml +1 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/table/TableHelper-dbg.js +5 -110
- package/packages/sap.fe.macros/src/sap/fe/macros/table/TableHelper.js +1 -1
- package/packages/sap.fe.macros/src/sap/fe/macros/table/delegates/TableDelegate-dbg.js +98 -78
- package/packages/sap.fe.macros/src/sap/fe/macros/table/delegates/TableDelegate.js +1 -1
- package/packages/sap.fe.macros/src/sap/fe/macros/valuehelp/ValueHelpFilterBar.metadata-dbg.js +1 -1
- package/packages/sap.fe.macros/src/sap/fe/macros/valuehelp/ValueHelpFilterBar.metadata.js +1 -1
- package/packages/sap.fe.macros/test/sap/fe/macros/designtime/api.json +211 -10
- package/packages/sap.fe.macros/test/sap/fe/macros/designtime/apiref/api.json +1 -1
- package/packages/sap.fe.macros/test/sap/fe/macros/designtime/codeassistance/Library.jsmeta.json +1 -1
- package/packages/sap.fe.macros/test/sap/fe/macros/designtime/codeassistance/Library.xmlmeta.json +1 -1
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/ChartDelegate.spec.js +1 -45
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/ChartDelegate.spec.ts +0 -60
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/FieldAPI.spec.js +78 -0
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/FieldAPI.spec.ts +71 -0
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/FieldMacroDataFieldTypes.spec.js +35 -1
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/FieldMacroDataFieldTypes.spec.ts +44 -0
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/FilterBarDelegate.spec.js +0 -76
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/FilterBarMacro.spec.js +27 -1
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/FilterBarMacro.spec.ts +28 -0
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/FilterFieldHelper.spec.js +10 -12
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/FilterFieldHelper.spec.ts +10 -10
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/FilterUtils.spec.js +129 -15
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/MacroAPI.spec.js +13 -39
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/MacroAPI.spec.ts +2 -2
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/RetrieveTextFromValueList.spec.js +119 -0
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/RetrieveTextFromValueList.spec.ts +113 -0
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/Table.spec.js +166 -2
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/Table.spec.ts +190 -3
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/TableAPI.spec.js +457 -389
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/TableAPI.spec.ts +504 -425
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/TableMacro.spec.js +104 -2
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/TableMacro.spec.ts +158 -1
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/__snapshots__/ChartDelegate.spec.ts.snap +0 -6
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/__snapshots__/DatapointMacro.spec.ts.snap +5 -5
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/__snapshots__/FieldMacroDataFieldTypes.spec.ts.snap +114 -25
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/__snapshots__/FieldMacroWithSemanticKey.spec.ts.snap +40 -40
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/__snapshots__/FieldMacroWithValueHelp.spec.ts.snap +4 -8
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/__snapshots__/FilterBarMacro.spec.ts.snap +19 -19
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/__snapshots__/FilterField.spec.ts.snap +3 -5
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/__snapshots__/QuickViewForm.spec.ts.snap +12 -0
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/__snapshots__/SimpleFieldMacro.spec.ts.snap +89 -90
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/__snapshots__/Table.spec.ts.snap +1314 -58
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/__snapshots__/TableMacro.spec.ts.snap +459 -0
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/data/FieldMacroDataFieldTypes.cds +18 -2
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/data/QuickViewForm.cds +6 -1
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/data/Table.cds +107 -106
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/data/TableAPI.cds +197 -0
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/field/FieldRuntime.spec.js +33 -4
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/field/FieldRuntime.spec.ts +30 -4
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/field/FieldTemplating.spec.js +72 -29
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/field/FieldTemplating.spec.ts +86 -18
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/table/__snapshots__/columnWidth.spec.ts.snap +51 -27
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/table/columnWidth.spec.js +55 -9
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/table/columnWidth.spec.ts +46 -6
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/table/data/columnWidth.cds +28 -1
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/table/delegates/TableDelegate.spec.js +170 -43
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/table/delegates/TableDelegate.spec.ts +131 -15
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/table/delegates/__snapshots__/TableDelegate.spec.ts.snap +90 -53
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/tsx/TestTSX.spec.tsx +2 -1
- package/packages/sap.fe.macros/test/sap/fe/macros/qunit/index.json +0 -5
- package/packages/sap.fe.macros/test/sap/fe/macros/qunit/macros/FieldHelper.qunit.js +1 -99
- package/packages/sap.fe.macros/test/sap/fe/macros/qunit/macros/FormElementTemplating.qunit.js +1 -1
- package/packages/sap.fe.macros/test/sap/fe/macros/qunit/macros/MacroMetadata.qunit.js +4 -4
- package/packages/sap.fe.macros/test/sap/fe/macros/qunit/macros/TableHelper.qunit.js +4 -4
- package/packages/sap.fe.macros/test/sap/fe/macros/qunit/macros/ValueHelpTemplating.qunit.js +15 -0
- package/packages/sap.fe.macros/test/sap/fe/macros/qunit/macros/ValueListHelper.qunit.js +265 -106
- package/packages/sap.fe.macros/test/sap/fe/macros/qunit/macros/metadata/simpleMetadata.js +38 -0
- package/packages/sap.fe.macros/test/sap/fe/macros/relnotes/changes-1.100.json +372 -0
- package/packages/sap.fe.macros/test/sap/fe/macros/relnotes/changes-1.99.json +0 -11
- package/packages/sap.fe.navigation/src/sap/fe/navigation/.library +1 -1
- package/packages/sap.fe.navigation/src/sap/fe/navigation/.theming +1 -1
- package/packages/sap.fe.navigation/src/sap/fe/navigation/library-dbg.js +1 -1
- package/packages/sap.fe.navigation/src/sap/fe/navigation/library-h2-preload.js +2 -2
- package/packages/sap.fe.navigation/src/sap/fe/navigation/library-h2-preload.js.map +2 -2
- package/packages/sap.fe.navigation/src/sap/fe/navigation/library-preload.js +2 -2
- package/packages/sap.fe.navigation/src/sap/fe/navigation/library-preload.js.map +2 -2
- package/packages/sap.fe.navigation/src/sap/fe/navigation/library.js +1 -1
- package/packages/sap.fe.navigation/src/sap/fe/navigation/manifest.json +3 -3
- package/packages/sap.fe.navigation/src/sap/fe/navigation/resources.json +8 -8
- package/packages/sap.fe.navigation/test/sap/fe/navigation/designtime/api.json +1 -1
- package/packages/sap.fe.navigation/test/sap/fe/navigation/designtime/apiref/api.json +1 -1
- package/packages/sap.fe.navigation/test/sap/fe/navigation/designtime/codeassistance/Library.xmlmeta.json +1 -1
- package/packages/sap.fe.placeholder/src/sap/fe/placeholder/.library +1 -1
- package/packages/sap.fe.placeholder/src/sap/fe/placeholder/.theming +1 -1
- package/packages/sap.fe.placeholder/src/sap/fe/placeholder/library-dbg.js +1 -1
- package/packages/sap.fe.placeholder/src/sap/fe/placeholder/library-h2-preload.js +2 -2
- package/packages/sap.fe.placeholder/src/sap/fe/placeholder/library-h2-preload.js.map +2 -2
- package/packages/sap.fe.placeholder/src/sap/fe/placeholder/library-preload.js +2 -2
- package/packages/sap.fe.placeholder/src/sap/fe/placeholder/library-preload.js.map +2 -2
- package/packages/sap.fe.placeholder/src/sap/fe/placeholder/library.js +1 -1
- package/packages/sap.fe.placeholder/src/sap/fe/placeholder/manifest.json +3 -3
- package/packages/sap.fe.placeholder/src/sap/fe/placeholder/resources.json +27 -27
- package/packages/sap.fe.placeholder/src/sap/fe/placeholder/themes/base/css_variables.source.less +316 -15
- package/packages/sap.fe.placeholder/src/sap/fe/placeholder/themes/base/resources.json +1 -1
- package/packages/sap.fe.placeholder/src/sap/fe/placeholder/themes/sap_belize/css_variables.less +315 -14
- package/packages/sap.fe.placeholder/src/sap/fe/placeholder/themes/sap_belize/css_variables.source.less +315 -14
- package/packages/sap.fe.placeholder/src/sap/fe/placeholder/themes/sap_belize/resources.json +2 -2
- package/packages/sap.fe.placeholder/src/sap/fe/placeholder/themes/sap_belize_hcb/css_variables.less +316 -15
- package/packages/sap.fe.placeholder/src/sap/fe/placeholder/themes/sap_belize_hcb/css_variables.source.less +316 -15
- package/packages/sap.fe.placeholder/src/sap/fe/placeholder/themes/sap_belize_hcb/resources.json +2 -2
- package/packages/sap.fe.placeholder/src/sap/fe/placeholder/themes/sap_belize_hcw/css_variables.less +316 -15
- package/packages/sap.fe.placeholder/src/sap/fe/placeholder/themes/sap_belize_hcw/css_variables.source.less +316 -15
- package/packages/sap.fe.placeholder/src/sap/fe/placeholder/themes/sap_belize_hcw/resources.json +2 -2
- package/packages/sap.fe.placeholder/src/sap/fe/placeholder/themes/sap_belize_plus/css_variables.less +315 -14
- package/packages/sap.fe.placeholder/src/sap/fe/placeholder/themes/sap_belize_plus/css_variables.source.less +315 -14
- package/packages/sap.fe.placeholder/src/sap/fe/placeholder/themes/sap_belize_plus/resources.json +2 -2
- package/packages/sap.fe.placeholder/src/sap/fe/placeholder/themes/sap_fiori_3/css_variables.less +317 -16
- package/packages/sap.fe.placeholder/src/sap/fe/placeholder/themes/sap_fiori_3/css_variables.source.less +317 -16
- package/packages/sap.fe.placeholder/src/sap/fe/placeholder/themes/sap_fiori_3/resources.json +2 -2
- package/packages/sap.fe.placeholder/src/sap/fe/placeholder/themes/sap_fiori_3_dark/css_variables.less +317 -16
- package/packages/sap.fe.placeholder/src/sap/fe/placeholder/themes/sap_fiori_3_dark/css_variables.source.less +317 -16
- package/packages/sap.fe.placeholder/src/sap/fe/placeholder/themes/sap_fiori_3_dark/resources.json +2 -2
- package/packages/sap.fe.placeholder/src/sap/fe/placeholder/themes/sap_fiori_3_hcb/css_variables.less +316 -15
- package/packages/sap.fe.placeholder/src/sap/fe/placeholder/themes/sap_fiori_3_hcb/css_variables.source.less +316 -15
- package/packages/sap.fe.placeholder/src/sap/fe/placeholder/themes/sap_fiori_3_hcb/resources.json +2 -2
- package/packages/sap.fe.placeholder/src/sap/fe/placeholder/themes/sap_fiori_3_hcw/css_variables.less +316 -15
- package/packages/sap.fe.placeholder/src/sap/fe/placeholder/themes/sap_fiori_3_hcw/css_variables.source.less +316 -15
- package/packages/sap.fe.placeholder/src/sap/fe/placeholder/themes/sap_fiori_3_hcw/resources.json +2 -2
- package/packages/sap.fe.placeholder/src/sap/fe/placeholder/themes/sap_horizon/css_variables.less +400 -99
- package/packages/sap.fe.placeholder/src/sap/fe/placeholder/themes/sap_horizon/css_variables.source.less +400 -99
- package/packages/sap.fe.placeholder/src/sap/fe/placeholder/themes/sap_horizon/resources.json +2 -2
- package/packages/sap.fe.placeholder/test/sap/fe/placeholder/designtime/api.json +1 -1
- package/packages/sap.fe.placeholder/test/sap/fe/placeholder/designtime/apiref/api.json +1 -1
- package/packages/sap.fe.templates/src/sap/fe/templates/.library +1 -1
- package/packages/sap.fe.templates/src/sap/fe/templates/.theming +1 -1
- package/packages/sap.fe.templates/src/sap/fe/templates/AnalyticalListPage/manifest.json +2 -2
- package/packages/sap.fe.templates/src/sap/fe/templates/AnalyticalListPage/resources.json +1 -1
- package/packages/sap.fe.templates/src/sap/fe/templates/ListComponent-dbg.js +1 -1
- package/packages/sap.fe.templates/src/sap/fe/templates/ListComponent.js +1 -1
- package/packages/sap.fe.templates/src/sap/fe/templates/ListReport/Component-dbg.js +7 -1
- package/packages/sap.fe.templates/src/sap/fe/templates/ListReport/Component.js +1 -1
- package/packages/sap.fe.templates/src/sap/fe/templates/ListReport/ListReport.view.xml +22 -21
- package/packages/sap.fe.templates/src/sap/fe/templates/ListReport/ListReportController-dbg.controller.js +13 -18
- package/packages/sap.fe.templates/src/sap/fe/templates/ListReport/ListReportController.controller.js +1 -1
- package/packages/sap.fe.templates/src/sap/fe/templates/ListReport/manifest.json +2 -2
- package/packages/sap.fe.templates/src/sap/fe/templates/ListReport/resources.json +7 -7
- package/packages/sap.fe.templates/src/sap/fe/templates/ListReport/view/fragments/MultipleMode.fragment.xml +3 -3
- package/packages/sap.fe.templates/src/sap/fe/templates/ObjectPage/AnnotationHelper-dbg.js +50 -9
- package/packages/sap.fe.templates/src/sap/fe/templates/ObjectPage/AnnotationHelper.js +1 -1
- package/packages/sap.fe.templates/src/sap/fe/templates/ObjectPage/Component-dbg.js +1 -12
- package/packages/sap.fe.templates/src/sap/fe/templates/ObjectPage/Component.js +1 -1
- package/packages/sap.fe.templates/src/sap/fe/templates/ObjectPage/ObjectPage.view.xml +5 -1
- package/packages/sap.fe.templates/src/sap/fe/templates/ObjectPage/ObjectPageController-dbg.controller.js +50 -17
- package/packages/sap.fe.templates/src/sap/fe/templates/ObjectPage/ObjectPageController.controller.js +1 -1
- package/packages/sap.fe.templates/src/sap/fe/templates/ObjectPage/controls/StashableHBox-dbg.js +7 -1
- package/packages/sap.fe.templates/src/sap/fe/templates/ObjectPage/controls/StashableHBox.js +1 -1
- package/packages/sap.fe.templates/src/sap/fe/templates/ObjectPage/designtime/FlexBox-dbg.designtime.js +3 -0
- package/packages/sap.fe.templates/src/sap/fe/templates/ObjectPage/designtime/FlexBox.designtime.js +1 -1
- package/packages/sap.fe.templates/src/sap/fe/templates/ObjectPage/manifest.json +2 -2
- package/packages/sap.fe.templates/src/sap/fe/templates/ObjectPage/resources.json +19 -15
- package/packages/sap.fe.templates/src/sap/fe/templates/ObjectPage/view/fragments/CollaborationDraft.fragment.xml +36 -0
- package/packages/sap.fe.templates/src/sap/fe/templates/ObjectPage/view/fragments/EditableHeaderFacet.fragment.xml +1 -1
- package/packages/sap.fe.templates/src/sap/fe/templates/ObjectPage/view/fragments/HeaderFacet.fragment.xml +1 -0
- package/packages/sap.fe.templates/src/sap/fe/templates/ObjectPage/view/fragments/HeaderFacetCustomContainer.fragment.xml +1 -0
- package/packages/sap.fe.templates/src/sap/fe/templates/RootContainer/controller/Fcl-dbg.controller.js +3 -1
- package/packages/sap.fe.templates/src/sap/fe/templates/RootContainer/controller/Fcl.controller.js +1 -1
- package/packages/sap.fe.templates/src/sap/fe/templates/RootContainer/controller/NavContainer-dbg.controller.js +3 -1
- package/packages/sap.fe.templates/src/sap/fe/templates/RootContainer/controller/NavContainer.controller.js +1 -1
- package/packages/sap.fe.templates/src/sap/fe/templates/designtime/library-preload.designtime.js +1 -1
- package/packages/sap.fe.templates/src/sap/fe/templates/designtime/library-preload.designtime.js.map +2 -2
- package/packages/sap.fe.templates/src/sap/fe/templates/library-dbg.js +1 -1
- package/packages/sap.fe.templates/src/sap/fe/templates/library-h2-preload.js +4 -3
- package/packages/sap.fe.templates/src/sap/fe/templates/library-h2-preload.js.map +2 -2
- package/packages/sap.fe.templates/src/sap/fe/templates/library-preload.js +22 -21
- package/packages/sap.fe.templates/src/sap/fe/templates/library-preload.js.map +4 -4
- package/packages/sap.fe.templates/src/sap/fe/templates/library.js +1 -1
- package/packages/sap.fe.templates/src/sap/fe/templates/manifest.json +14 -14
- package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_ar.properties +0 -15
- package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_bg.properties +0 -15
- package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_ca.properties +0 -15
- package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_cs.properties +0 -15
- package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_cy.properties +0 -15
- package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_da.properties +0 -15
- package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_de.properties +0 -15
- package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_el.properties +0 -15
- package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_en.properties +0 -15
- package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_en_GB.properties +0 -15
- package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_en_US_sappsd.properties +0 -15
- package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_en_US_saprigi.properties +0 -15
- package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_en_US_saptrc.properties +0 -15
- package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_es.properties +0 -15
- package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_es_MX.properties +0 -15
- package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_et.properties +0 -15
- package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_fi.properties +0 -15
- package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_fr.properties +0 -15
- package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_fr_CA.properties +0 -15
- package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_hi.properties +0 -15
- package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_hr.properties +0 -15
- package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_hu.properties +0 -15
- package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_id.properties +0 -15
- package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_it.properties +0 -15
- package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_iw.properties +0 -15
- package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_ja.properties +0 -15
- package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_kk.properties +0 -15
- package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_ko.properties +0 -15
- package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_lt.properties +0 -15
- package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_lv.properties +0 -15
- package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_ms.properties +0 -15
- package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_nl.properties +0 -15
- package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_no.properties +0 -15
- package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_pl.properties +0 -15
- package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_pt.properties +0 -15
- package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_pt_PT.properties +0 -15
- package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_ro.properties +0 -15
- package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_ru.properties +0 -15
- package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_sh.properties +0 -15
- package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_sk.properties +0 -15
- package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_sl.properties +0 -15
- package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_sv.properties +0 -15
- package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_th.properties +0 -15
- package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_tr.properties +0 -15
- package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_uk.properties +0 -15
- package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_vi.properties +0 -15
- package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_zh_CN.properties +0 -15
- package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_zh_TW.properties +0 -15
- package/packages/sap.fe.templates/src/sap/fe/templates/resources.json +115 -89
- package/packages/sap.fe.templates/test/sap/fe/templates/demokit/apps/itelo/webapp/manifest.json +1 -1
- package/packages/sap.fe.templates/test/sap/fe/templates/designtime/api.json +353 -1
- package/packages/sap.fe.templates/test/sap/fe/templates/designtime/apiref/api.json +1 -1
- package/packages/sap.fe.templates/test/sap/fe/templates/designtime/codeassistance/Library.jsmeta.json +1 -1
- package/packages/sap.fe.templates/test/sap/fe/templates/designtime/codeassistance/Library.xmlmeta.json +1 -1
- package/packages/sap.fe.templates/test/sap/fe/templates/jest/ListReport/overrides/IntentBasedNavigation.spec.js +1 -1
- package/packages/sap.fe.templates/test/sap/fe/templates/jest/ListReport/overrides/IntentBasedNavigation.spec.ts +3 -3
- package/packages/sap.fe.templates/test/sap/fe/templates/jest/ListReport/overrides/Share.spec.js +1 -1
- package/packages/sap.fe.templates/test/sap/fe/templates/jest/ListReport/overrides/Share.spec.ts +4 -4
- package/packages/sap.fe.templates/test/sap/fe/templates/jest/ListReport/overrides/ViewState.spec.js +1 -1
- package/packages/sap.fe.templates/test/sap/fe/templates/jest/ListReport/overrides/ViewState.spec.ts +2 -2
- package/packages/sap.fe.templates/test/sap/fe/templates/jest/ObjectPage/view/fragments/ObjectPageHeaderForm.spec.js +2 -1
- package/packages/sap.fe.templates/test/sap/fe/templates/jest/ObjectPage/view/fragments/ObjectPageHeaderForm.spec.ts +2 -1
- package/packages/sap.fe.templates/test/sap/fe/templates/jest/ObjectPage/view/fragments/__snapshots__/HeaderFacet.spec.ts.snap +7 -7
- package/packages/sap.fe.templates/test/sap/fe/templates/jest/RootContainer/RootContainerBaseController.spec.js +30 -61
- package/packages/sap.fe.templates/test/sap/fe/templates/jest/RootContainer/RootContainerBaseController.spec.ts +1 -1
- package/packages/sap.fe.templates/test/sap/fe/templates/relnotes/changes-1.100.json +192 -0
- package/packages/sap.fe.templates/test/sap/fe/templates/relnotes/changes-1.99.json +0 -11
- package/packages/sap.fe.test/src/sap/fe/test/.library +1 -1
- package/packages/sap.fe.test/src/sap/fe/test/.theming +1 -1
- package/packages/sap.fe.test/src/sap/fe/test/FeMocks-dbg.js +1 -1
- package/packages/sap.fe.test/src/sap/fe/test/FeMocks.ts +8 -8
- package/packages/sap.fe.test/src/sap/fe/test/JestTemplatingHelper-dbg.js +6 -4
- package/packages/sap.fe.test/src/sap/fe/test/JestTemplatingHelper.js +1 -1
- package/packages/sap.fe.test/src/sap/fe/test/JestTemplatingHelper.ts +10 -6
- package/packages/sap.fe.test/src/sap/fe/test/UI5MockHelper-dbg.js +126 -203
- package/packages/sap.fe.test/src/sap/fe/test/UI5MockHelper.js +1 -1
- package/packages/sap.fe.test/src/sap/fe/test/UI5MockHelper.ts +17 -2
- package/packages/sap.fe.test/src/sap/fe/test/api/FilterBarAPI-dbg.js +9 -1
- package/packages/sap.fe.test/src/sap/fe/test/api/FilterBarAPI.js +1 -1
- package/packages/sap.fe.test/src/sap/fe/test/library-dbg.js +1 -1
- package/packages/sap.fe.test/src/sap/fe/test/library-h2-preload.js +2 -2
- package/packages/sap.fe.test/src/sap/fe/test/library-h2-preload.js.map +2 -2
- package/packages/sap.fe.test/src/sap/fe/test/library-preload.js +9 -18
- package/packages/sap.fe.test/src/sap/fe/test/library-preload.js.map +3 -3
- package/packages/sap.fe.test/src/sap/fe/test/library.js +1 -1
- package/packages/sap.fe.test/src/sap/fe/test/manifest.json +3 -3
- package/packages/sap.fe.test/src/sap/fe/test/resources.json +18 -18
- package/packages/sap.fe.test/test/sap/fe/test/designtime/api.json +1 -1
- package/packages/sap.fe.test/test/sap/fe/test/designtime/apiref/api.json +1 -1
- package/packages/sap.fe.test/test/sap/fe/test/designtime/codeassistance/Library.xmlmeta.json +1 -1
- package/packages/sap.fe.macros/test/sap/fe/macros/qunit/macros/FormTemplatingTs.qunit.js +0 -271
|
@@ -20,7 +20,9 @@ sap.ui.define(
|
|
|
20
20
|
"sap/ui/fl/Utils",
|
|
21
21
|
"sap/fe/macros/DelegateUtil",
|
|
22
22
|
"sap/base/util/merge",
|
|
23
|
-
"sap/fe/core/controls/FieldWrapper"
|
|
23
|
+
"sap/fe/core/controls/FieldWrapper",
|
|
24
|
+
"sap/fe/core/actions/collaboration/ActivitySync",
|
|
25
|
+
"sap/fe/core/actions/collaboration/CollaborationCommon"
|
|
24
26
|
],
|
|
25
27
|
function(
|
|
26
28
|
ResourceModel,
|
|
@@ -38,7 +40,9 @@ sap.ui.define(
|
|
|
38
40
|
Utils,
|
|
39
41
|
DelegateUtil,
|
|
40
42
|
mergeObjects,
|
|
41
|
-
FieldWrapper
|
|
43
|
+
FieldWrapper,
|
|
44
|
+
CollaborationActivitySync,
|
|
45
|
+
CollaborationCommon
|
|
42
46
|
) {
|
|
43
47
|
"use strict";
|
|
44
48
|
|
|
@@ -110,6 +114,13 @@ sap.ui.define(
|
|
|
110
114
|
);
|
|
111
115
|
}
|
|
112
116
|
},
|
|
117
|
+
isDraftIndicatorVisible: function(sPropertyPath, sSemanticKeyHasDraftIndicator, HasDraftEntity, IsActiveEntity, hideDraftInfo) {
|
|
118
|
+
if (IsActiveEntity !== undefined && HasDraftEntity !== undefined && (!IsActiveEntity || HasDraftEntity) && !hideDraftInfo) {
|
|
119
|
+
return sPropertyPath === sSemanticKeyHasDraftIndicator;
|
|
120
|
+
} else {
|
|
121
|
+
return false;
|
|
122
|
+
}
|
|
123
|
+
},
|
|
113
124
|
hasTargets: function(bSemanticObjectHasTargets, sSemanticObjectPathValue) {
|
|
114
125
|
return bSemanticObjectHasTargets ? bSemanticObjectHasTargets : false;
|
|
115
126
|
},
|
|
@@ -181,7 +192,52 @@ sap.ui.define(
|
|
|
181
192
|
|
|
182
193
|
// SIDE EFFECTS
|
|
183
194
|
oFEController._sideEffects.handleFieldChange(oEvent, pValueResolved);
|
|
195
|
+
|
|
196
|
+
// Collaboration Draft Activity Sync
|
|
197
|
+
var oField = oEvent.getSource(),
|
|
198
|
+
bCollaborationEnabled = CollaborationActivitySync.isConnected(oField),
|
|
199
|
+
oBinding,
|
|
200
|
+
sFullPath;
|
|
201
|
+
|
|
202
|
+
if (bCollaborationEnabled) {
|
|
203
|
+
sFullPath = oField.getBindingContext().getPath() + "/" + oField.getBinding("value").getPath();
|
|
204
|
+
oBinding = oField.getBindingContext().getBinding();
|
|
205
|
+
if (!oBinding.isA("sap.ui.model.odata.v4.ODataListBinding")) {
|
|
206
|
+
oBinding = oBinding.getRootBinding();
|
|
207
|
+
}
|
|
208
|
+
|
|
209
|
+
oBinding.attachEventOnce("patchCompleted", function() {
|
|
210
|
+
CollaborationActivitySync.send(oField, CollaborationCommon.Activity.Change, sFullPath);
|
|
211
|
+
});
|
|
212
|
+
}
|
|
184
213
|
},
|
|
214
|
+
|
|
215
|
+
handleLiveChange: function(oEvent) {
|
|
216
|
+
// Collaboration Draft Activity Sync
|
|
217
|
+
var oField = oEvent.getSource(),
|
|
218
|
+
bCollaborationEnabled = CollaborationActivitySync.isConnected(oField),
|
|
219
|
+
sFullPath;
|
|
220
|
+
|
|
221
|
+
if (bCollaborationEnabled) {
|
|
222
|
+
sFullPath = oField.getBindingContext().getPath() + "/" + oField.getBinding("value").getPath();
|
|
223
|
+
CollaborationActivitySync.send(oField, CollaborationCommon.Activity.LiveChange, sFullPath);
|
|
224
|
+
|
|
225
|
+
// If the user reverted the change no change event is sent therefore we have to handle it here
|
|
226
|
+
if (!this.resetChangesHandler) {
|
|
227
|
+
var that = this;
|
|
228
|
+
this.resetChangesHandler = function() {
|
|
229
|
+
if (oField.getValue() === oField.getBinding("value").getValue()) {
|
|
230
|
+
// the user did a change but reverted it. to be checked if there is a better way to determine
|
|
231
|
+
CollaborationActivitySync.send(oField, CollaborationCommon.Activity.Undo, sFullPath);
|
|
232
|
+
}
|
|
233
|
+
oField.detachBrowserEvent("focusout", that.resetChangesHandler);
|
|
234
|
+
delete that.resetChangesHandler;
|
|
235
|
+
};
|
|
236
|
+
oField.attachBrowserEvent("focusout", this.resetChangesHandler);
|
|
237
|
+
}
|
|
238
|
+
}
|
|
239
|
+
},
|
|
240
|
+
|
|
185
241
|
/**
|
|
186
242
|
* Gets the field value and validity on a change event.
|
|
187
243
|
*
|
|
@@ -524,10 +580,16 @@ sap.ui.define(
|
|
|
524
580
|
return IconPool.getIconForMimeType(sMimeType);
|
|
525
581
|
},
|
|
526
582
|
|
|
527
|
-
|
|
528
|
-
|
|
529
|
-
|
|
530
|
-
|
|
583
|
+
/**
|
|
584
|
+
* Method to retrieve text from value list for DataField.
|
|
585
|
+
*
|
|
586
|
+
* @function
|
|
587
|
+
* @name retrieveTextFromValueList
|
|
588
|
+
* @param {string} sPropertyValue The property value of the datafield
|
|
589
|
+
* @param {string} sPropertyFullPath The property full path's
|
|
590
|
+
* @param {string} sDisplayFormat The display format for the datafield
|
|
591
|
+
* @returns {string} The formatted value in corresponding display format.
|
|
592
|
+
*/
|
|
531
593
|
retrieveTextFromValueList: function(sPropertyValue, sPropertyFullPath, sDisplayFormat) {
|
|
532
594
|
var sTextProperty;
|
|
533
595
|
var oMetaModel;
|
|
@@ -3,4 +3,4 @@
|
|
|
3
3
|
(c) Copyright 2009-2021 SAP SE. All rights reserved
|
|
4
4
|
|
|
5
5
|
*/
|
|
6
|
-
sap.ui.define(["sap/fe/macros/ResourceModel","sap/base/Log","sap/fe/core/CommonUtils","sap/fe/macros/CommonHelper","sap/ui/util/openWindow","sap/ui/mdc/enum/ConditionValidated","sap/fe/macros/FieldAPI","sap/ui/unified/FileUploaderParameter","sap/fe/core/helpers/ModelHelper","sap/m/MessageBox","sap/ui/core/IconPool","sap/fe/core/BusyLocker","sap/ui/fl/Utils","sap/fe/macros/DelegateUtil","sap/base/util/merge","sap/fe/core/controls/FieldWrapper"],function(R,L,C,a,o,b,F,c,M,d,I,B,U,D,m,f){"use strict";var g={formatDraftOwnerTextInPopover:function(h,s,e,i,j){if(h){var u=i||s||j||e;if(!u){return R.getText("M_FIELD_RUNTIME_DRAFT_POPOVER_UNSAVED_CHANGES_BY_UNKNOWN");}else{return s?R.getText("M_FIELD_RUNTIME_DRAFT_POPOVER_LOCKED_BY_KNOWN",u):R.getText("M_FIELD_RUNTIME_DRAFT_POPOVER_UNSAVED_CHANGES_BY_KNOWN",u);}}else{return R.getText("M_FIELD_RUNTIME_DRAFT_POPOVER_NO_DATA_TEXT");}},onDataFieldWithNavigationPath:function(s,e,S){if(e._routing){var h=s.getBindingContext(),v=C.getTargetView(s),i=h.getModel().getMetaModel(),n=function(j){if(j){h=j;}e._routing.navigateToTarget(h,S,undefined,true);};if(v.getViewData().converterType==="ObjectPage"&&!M.isStickySessionSupported(i)){C.fnProcessDataLossOrDraftDiscardConfirmation(n,Function.prototype,h,v.getController());}else{n();}}else{L.error("FieldRuntime: No routing listener controller extension found. Internal navigation aborted.","sap.fe.macros.field.FieldRuntime","onDataFieldWithNavigationPath");}},hasTargets:function(s,S){return s?s:false;},onValidateFieldGroup:function(e,E){var h=g._getExtensionController(e);h._sideEffects.handleFieldGroupChange(E);},handleChange:function(e,E){var s=E.getSource(),i=s&&s.getBindingContext().isTransient(),p=E.getParameter("promise")||Promise.resolve(),S=E.getSource(),v=E.getParameter("valid"),h;p.then(function(){E.oSource=S;E.mParameters={valid:v};F.handleChange(E,e);}).catch(function(j){E.oSource=S;E.mParameters={valid:false};F.handleChange(E,e);});h=g._getExtensionController(e);h._editFlow.syncTask(p);if(i){return;}h._sideEffects.handleFieldChange(E,p);},getFieldStateOnChange:function(e){var s=e.getSource(),h={},_=function(j){return j&&j.getDataState()?j.getDataState().getInvalidValue()===undefined:true;};if(s.isA("sap.fe.macros.FieldAPI")){s=s.getContent();}if(s.isA(f.getMetadata().getName())&&s.getEditMode()==="Editable"){s=s.getContentEdit()[0];}if(s.isA("sap.ui.mdc.Field")){var i=e.getParameter("valid")||e.getParameter("isValid");if(i===undefined){if(s.getMaxConditions()===1){var v=s.getBindingInfo("value");i=_(v&&v.binding);}if(s.getValue()===""&&!s.getProperty("required")){i=true;}}h={fieldValue:s.getValue(),validity:!!i};}else{var j=s.getBinding("uploadUrl")||s.getBinding("value")||s.getBinding("selected");h={fieldValue:j&&j.getValue(),validity:_(j)};}return{field:s,state:h};},LinkModelContextChange:function(e,p){var l=e.getSource();if(!l.getModel()||!l.getBindingContext()){return;}var s,v,h;var S,j,k,n,q,r,t,V,u,A,w,x;var _=function(e,z){S=e&&e.getSource();j=l&&l.getModel();k=j&&j.getMetaModel();n=k&&k.getMetaPath(l.getBindingContext());q=n+"/"+p;r=z||(S&&S.getValue());V=l&&sap.ui.fl.Utils.getViewForControl(l);u=V&&V.getBindingContext("internal");A=V&&C.getAppComponent(V);w=A&&A.getShellServices();h=w&&w.getLinksWithCache([[{semanticObject:r}]]);t=k&&k.getObject(q+"@com.sap.vocabularies.Common.v1.SemanticObjectUnavailableActions");x=C.getHash();if(x&&x.indexOf("?")!==-1){x=x.split("?")[0];}C.updateSemanticTargets([h],[{semanticObject:r,path:q}],u,x).then(function(E){if(E){var G=l.getParent();if(G&&G.isA("sap.fe.core.controls.ConditionalWrapper")){if(E[r]){var H=false,T,J,K=Object.keys(E[r]);for(var P=0;P<K.length;P++){T=K[P];J=E[r]&&E[r][T];if(J&&J.path&&J.path===q){H=J[!t?"HasTargetsNotFiltered":"HasTargets"];G.setCondition(!!H);if(l.isA("sap.m.ObjectIdentifier")===true){l.setProperty("titleActive",!!H);}break;}}}}}}).catch(function(E){L.error("LinkModelContextChange: Cannot update Semantic Targets model",E);});};var y=l.getCustomData();if(y&&y.length>0){for(var i=0;i<y.length;i++){s=y[i].getValue();if(!s){v=y[i].getBinding("value");if(v){v.attachEventOnce("change",_);}}else{_(null,s);}}}},pressLink:function(e){var l=e.getSource();if(l.getDependents()&&l.getDependents().length>0){var h=l.getDependents()[0];if(h&&h.isA("sap.ui.mdc.Link")){h.getTriggerHref().then(function(H){if(!H){h.open(l).catch(function(E){L.error("Cannot retrieve the QuickView Popover dialog",E);});}else{var v=sap.ui.fl.Utils.getViewForControl(l);var A=C.getAppComponent(v);var s=A.getShellServices();var S=s.parseShellHash(H);var n={target:{semanticObject:S.semanticObject,action:S.action},params:S.params};if(C.isStickyEditMode(l)!==true){s.toExternal(n,A);}else{var N=s.hrefForExternal(n,A,false);o(N);}}}).catch(function(E){L.error("Error triggering link Href",E);});}}},uploadStream:function(e,E){var h=E.getSource(),s=D.getCustomData(h,"fieldWrapperId"),i,j=g._getExtensionController(e);if(s){i=g.getControlById(h,s);g.lockControl(i,true);}else{i=g.getParentControlByType(h,f.getMetadata().getName());g.setBusyIndicatorVisibleForFileUploadInTable(i,true);}var k=h.getBindingContext(),u=h.getUploadUrl(),l=u.replace(k.getPath(),k.getCanonicalPath());h.setUploadUrl(l);h.removeAllHeaderParameters();var t=h.getModel().getHttpHeaders()["X-CSRF-Token"];if(t){var n=new c();n.setName("x-csrf-token");n.setValue(t);h.addHeaderParameter(n);}var p=h.getBindingContext().getProperty("@odata.etag");if(p){var q=new c();q.setName("If-Match");q.setValue(p);h.addHeaderParameter(q);}var r=new c();r.setName("Accept");r.setValue("application/json");h.addHeaderParameter(r);var v=new Promise(function(w,x){this.uploadPromises=this.uploadPromises||{};this.uploadPromises[h.getId()]={resolve:w,reject:x};h.upload();}.bind(this));j._editFlow.syncTask(v);},handleUploadComplete:function(E,p,h){var s=E.getParameter("status"),i=E.getSource(),j=D.getCustomData(i,"fieldWrapperId"),k,S=m({},E),l=g._getExtensionController(h);if(j){k=g.getControlById(i,j);g.lockControl(k,false);}else{k=g.getParentControlByType(i,f.getMetadata().getName());g.setBusyIndicatorVisibleForFileUploadInTable(k,false);}if(s===0||s>=400){var n=E.getParameter("responseRaw")||E.getParameter("response"),q,r;try{r=n&&JSON.parse(n);q=r.error&&r.error.message;}catch(e){q=n||R.getText("M_FIELD_FILEUPLOADER_ABORTED_TEXT");}d.error(q);this.uploadPromises[i.getId()].reject();}else{var t=i.getBindingContext(),N=E.getParameter("headers").etag;if(N){t.setProperty("@odata.etag",N,null);}if(p&&p!==""){t.setProperty(p,i.getValue());}if(k){k.invalidate();}var u=S.getSource();var v=u&&u.getBindingContext().isTransient();if(!v){l._sideEffects.handleFieldChange(S);}this.uploadPromises[i.getId()].resolve();}delete this.uploadPromises[i.getId()];},removeStream:function(e,p,h){var s=m({},e),j=g._getExtensionController(h),S=e.getSource(),k=S.getBindingContext(),l=S.getParent().getItems(),n;for(var i=0;i<l.length;i++){if(l[i].isA("sap.ui.unified.FileUploader")){n=l[i];break;}}k.setProperty(p,null);s.oSource=n;var q=k.isTransient();if(q){return;}if(!s.oSource){return;}j._sideEffects.handleFieldChange(s);},getIconForMimeType:function(s){return I.getIconForMimeType(s);},setMetaModel:function(e){this.oMetaModel=e;},retrieveTextFromValueList:function(p,P,s){var t;var e;var h;if(p){e=a.getMetaModel();h=e.getObject(P+"@sapui.name");return e.requestValueListInfo(P,true).then(function(v){var V=v[v[""]?"":Object.keys(v)[0]];var i=V.$model;var j=i.getMetaModel();var k=V.Parameters.find(function(q){return q.LocalDataProperty&&q.LocalDataProperty.$PropertyPath===h;});if(k&&!k.ValueListProperty){return Promise.reject("Inconsistent value help annotation for "+h);}var T=j.getObject("/"+V.CollectionPath+"/"+k.ValueListProperty+"@com.sap.vocabularies.Common.v1.Text");if(T&&T.$Path){t=T.$Path;var l=new sap.ui.model.Filter({path:k.ValueListProperty,operator:"EQ",value1:p});var n=i.bindList("/"+V.CollectionPath,undefined,undefined,l,{"$select":t});return n.requestContexts(0,2);}else{return Promise.reject("Text Annotation for "+k.ValueListProperty+"is not defined");}}).then(function(i){var j=i&&i[0]?i[0].getObject()[t]:"";switch(s){case"Description":return j;case"DescriptionValue":return sap.ui.getCore().getLibraryResourceBundle("sap.fe.core").getText("C_FORMAT_FOR_TEXT_ARRANGEMENT",[j,p]);case"ValueDescription":return sap.ui.getCore().getLibraryResourceBundle("sap.fe.core").getText("C_FORMAT_FOR_TEXT_ARRANGEMENT",[p,j]);default:return p;}}).catch(function(E){var i=E.status&&E.status===404?"Metadata not found ("+E.status+") for value help of property "+P:E.message;L.error(i);});}return p;},handleTypeMissmatch:function(e){d.error(R.getText("M_FIELD_FILEUPLOADER_WRONG_MIMETYPE"),{details:"<p><strong>"+R.getText("M_FIELD_FILEUPLOADER_WRONG_MIMETYPE_DETAILS_SELECTED")+"</strong></p>"+e.getParameters().mimeType+"<br><br>"+"<p><strong>"+R.getText("M_FIELD_FILEUPLOADER_WRONG_MIMETYPE_DETAILS_ALLOWED")+"</strong></p>"+e.getSource().getMimeType().toString().replaceAll(",",", "),contentWidth:"150px"});},handleFileSizeExceed:function(e,i){d.error(R.getText("M_FIELD_FILEUPLOADER_FILE_TOO_BIG",e.getSource().getMaximumFileSize().toFixed(3)),{contentWidth:"150px"});},getControlById:function(e,s){var v=U.getViewForControl(e);return v?v.byId(s):undefined;},getParentControlByType:function(i,t){var e=i.getParent();while(!e.isA(t)){e=e.getParent();}return e;},lockControl:function(e,l){if(e&&l&&!B.isLocked(e)){B.lock(e);}else if(e&&!l&&B.isLocked(e)){B.unlock(e);}},setBusyIndicatorVisibleForFileUploadInTable:function(e,h){var H=e.getContentEdit()[0],i=e.getContentEdit()[1];i.setVisible(!h);H.setVisible(h);},_getExtensionController:function(e){return e.isA("sap.fe.core.ExtensionAPI")?e._controller:e;}};return g;},true);
|
|
6
|
+
sap.ui.define(["sap/fe/macros/ResourceModel","sap/base/Log","sap/fe/core/CommonUtils","sap/fe/macros/CommonHelper","sap/ui/util/openWindow","sap/ui/mdc/enum/ConditionValidated","sap/fe/macros/FieldAPI","sap/ui/unified/FileUploaderParameter","sap/fe/core/helpers/ModelHelper","sap/m/MessageBox","sap/ui/core/IconPool","sap/fe/core/BusyLocker","sap/ui/fl/Utils","sap/fe/macros/DelegateUtil","sap/base/util/merge","sap/fe/core/controls/FieldWrapper","sap/fe/core/actions/collaboration/ActivitySync","sap/fe/core/actions/collaboration/CollaborationCommon"],function(R,L,C,a,o,b,F,c,M,d,I,B,U,D,m,f,g,h){"use strict";var j={formatDraftOwnerTextInPopover:function(H,s,e,i,k){if(H){var u=i||s||k||e;if(!u){return R.getText("M_FIELD_RUNTIME_DRAFT_POPOVER_UNSAVED_CHANGES_BY_UNKNOWN");}else{return s?R.getText("M_FIELD_RUNTIME_DRAFT_POPOVER_LOCKED_BY_KNOWN",u):R.getText("M_FIELD_RUNTIME_DRAFT_POPOVER_UNSAVED_CHANGES_BY_KNOWN",u);}}else{return R.getText("M_FIELD_RUNTIME_DRAFT_POPOVER_NO_DATA_TEXT");}},onDataFieldWithNavigationPath:function(s,e,S){if(e._routing){var i=s.getBindingContext(),v=C.getTargetView(s),k=i.getModel().getMetaModel(),n=function(l){if(l){i=l;}e._routing.navigateToTarget(i,S,undefined,true);};if(v.getViewData().converterType==="ObjectPage"&&!M.isStickySessionSupported(k)){C.fnProcessDataLossOrDraftDiscardConfirmation(n,Function.prototype,i,v.getController());}else{n();}}else{L.error("FieldRuntime: No routing listener controller extension found. Internal navigation aborted.","sap.fe.macros.field.FieldRuntime","onDataFieldWithNavigationPath");}},isDraftIndicatorVisible:function(p,s,H,e,i){if(e!==undefined&&H!==undefined&&(!e||H)&&!i){return p===s;}else{return false;}},hasTargets:function(s,S){return s?s:false;},onValidateFieldGroup:function(e,E){var i=j._getExtensionController(e);i._sideEffects.handleFieldGroupChange(E);},handleChange:function(e,E){var s=E.getSource(),i=s&&s.getBindingContext().isTransient(),p=E.getParameter("promise")||Promise.resolve(),S=E.getSource(),v=E.getParameter("valid"),k;p.then(function(){E.oSource=S;E.mParameters={valid:v};F.handleChange(E,e);}).catch(function(t){E.oSource=S;E.mParameters={valid:false};F.handleChange(E,e);});k=j._getExtensionController(e);k._editFlow.syncTask(p);if(i){return;}k._sideEffects.handleFieldChange(E,p);var l=E.getSource(),n=g.isConnected(l),q,r;if(n){r=l.getBindingContext().getPath()+"/"+l.getBinding("value").getPath();q=l.getBindingContext().getBinding();if(!q.isA("sap.ui.model.odata.v4.ODataListBinding")){q=q.getRootBinding();}q.attachEventOnce("patchCompleted",function(){g.send(l,h.Activity.Change,r);});}},handleLiveChange:function(e){var i=e.getSource(),k=g.isConnected(i),s;if(k){s=i.getBindingContext().getPath()+"/"+i.getBinding("value").getPath();g.send(i,h.Activity.LiveChange,s);if(!this.resetChangesHandler){var t=this;this.resetChangesHandler=function(){if(i.getValue()===i.getBinding("value").getValue()){g.send(i,h.Activity.Undo,s);}i.detachBrowserEvent("focusout",t.resetChangesHandler);delete t.resetChangesHandler;};i.attachBrowserEvent("focusout",this.resetChangesHandler);}}},getFieldStateOnChange:function(e){var s=e.getSource(),i={},_=function(l){return l&&l.getDataState()?l.getDataState().getInvalidValue()===undefined:true;};if(s.isA("sap.fe.macros.FieldAPI")){s=s.getContent();}if(s.isA(f.getMetadata().getName())&&s.getEditMode()==="Editable"){s=s.getContentEdit()[0];}if(s.isA("sap.ui.mdc.Field")){var k=e.getParameter("valid")||e.getParameter("isValid");if(k===undefined){if(s.getMaxConditions()===1){var v=s.getBindingInfo("value");k=_(v&&v.binding);}if(s.getValue()===""&&!s.getProperty("required")){k=true;}}i={fieldValue:s.getValue(),validity:!!k};}else{var l=s.getBinding("uploadUrl")||s.getBinding("value")||s.getBinding("selected");i={fieldValue:l&&l.getValue(),validity:_(l)};}return{field:s,state:i};},LinkModelContextChange:function(e,p){var l=e.getSource();if(!l.getModel()||!l.getBindingContext()){return;}var s,v,k;var S,n,q,r,t,u,w,V,x,A,y,z;var _=function(e,G){S=e&&e.getSource();n=l&&l.getModel();q=n&&n.getMetaModel();r=q&&q.getMetaPath(l.getBindingContext());t=r+"/"+p;u=G||(S&&S.getValue());V=l&&sap.ui.fl.Utils.getViewForControl(l);x=V&&V.getBindingContext("internal");A=V&&C.getAppComponent(V);y=A&&A.getShellServices();k=y&&y.getLinksWithCache([[{semanticObject:u}]]);w=q&&q.getObject(t+"@com.sap.vocabularies.Common.v1.SemanticObjectUnavailableActions");z=C.getHash();if(z&&z.indexOf("?")!==-1){z=z.split("?")[0];}C.updateSemanticTargets([k],[{semanticObject:u,path:t}],x,z).then(function(H){if(H){var J=l.getParent();if(J&&J.isA("sap.fe.core.controls.ConditionalWrapper")){if(H[u]){var K=false,T,N,O=Object.keys(H[u]);for(var P=0;P<O.length;P++){T=O[P];N=H[u]&&H[u][T];if(N&&N.path&&N.path===t){K=N[!w?"HasTargetsNotFiltered":"HasTargets"];J.setCondition(!!K);if(l.isA("sap.m.ObjectIdentifier")===true){l.setProperty("titleActive",!!K);}break;}}}}}}).catch(function(H){L.error("LinkModelContextChange: Cannot update Semantic Targets model",H);});};var E=l.getCustomData();if(E&&E.length>0){for(var i=0;i<E.length;i++){s=E[i].getValue();if(!s){v=E[i].getBinding("value");if(v){v.attachEventOnce("change",_);}}else{_(null,s);}}}},pressLink:function(e){var l=e.getSource();if(l.getDependents()&&l.getDependents().length>0){var i=l.getDependents()[0];if(i&&i.isA("sap.ui.mdc.Link")){i.getTriggerHref().then(function(H){if(!H){i.open(l).catch(function(E){L.error("Cannot retrieve the QuickView Popover dialog",E);});}else{var v=sap.ui.fl.Utils.getViewForControl(l);var A=C.getAppComponent(v);var s=A.getShellServices();var S=s.parseShellHash(H);var n={target:{semanticObject:S.semanticObject,action:S.action},params:S.params};if(C.isStickyEditMode(l)!==true){s.toExternal(n,A);}else{var N=s.hrefForExternal(n,A,false);o(N);}}}).catch(function(E){L.error("Error triggering link Href",E);});}}},uploadStream:function(e,E){var i=E.getSource(),s=D.getCustomData(i,"fieldWrapperId"),k,l=j._getExtensionController(e);if(s){k=j.getControlById(i,s);j.lockControl(k,true);}else{k=j.getParentControlByType(i,f.getMetadata().getName());j.setBusyIndicatorVisibleForFileUploadInTable(k,true);}var n=i.getBindingContext(),u=i.getUploadUrl(),p=u.replace(n.getPath(),n.getCanonicalPath());i.setUploadUrl(p);i.removeAllHeaderParameters();var t=i.getModel().getHttpHeaders()["X-CSRF-Token"];if(t){var q=new c();q.setName("x-csrf-token");q.setValue(t);i.addHeaderParameter(q);}var r=i.getBindingContext().getProperty("@odata.etag");if(r){var v=new c();v.setName("If-Match");v.setValue(r);i.addHeaderParameter(v);}var w=new c();w.setName("Accept");w.setValue("application/json");i.addHeaderParameter(w);var x=new Promise(function(y,z){this.uploadPromises=this.uploadPromises||{};this.uploadPromises[i.getId()]={resolve:y,reject:z};i.upload();}.bind(this));l._editFlow.syncTask(x);},handleUploadComplete:function(E,p,i){var s=E.getParameter("status"),k=E.getSource(),l=D.getCustomData(k,"fieldWrapperId"),n,S=m({},E),q=j._getExtensionController(i);if(l){n=j.getControlById(k,l);j.lockControl(n,false);}else{n=j.getParentControlByType(k,f.getMetadata().getName());j.setBusyIndicatorVisibleForFileUploadInTable(n,false);}if(s===0||s>=400){var r=E.getParameter("responseRaw")||E.getParameter("response"),t,u;try{u=r&&JSON.parse(r);t=u.error&&u.error.message;}catch(e){t=r||R.getText("M_FIELD_FILEUPLOADER_ABORTED_TEXT");}d.error(t);this.uploadPromises[k.getId()].reject();}else{var v=k.getBindingContext(),N=E.getParameter("headers").etag;if(N){v.setProperty("@odata.etag",N,null);}if(p&&p!==""){v.setProperty(p,k.getValue());}if(n){n.invalidate();}var w=S.getSource();var x=w&&w.getBindingContext().isTransient();if(!x){q._sideEffects.handleFieldChange(S);}this.uploadPromises[k.getId()].resolve();}delete this.uploadPromises[k.getId()];},removeStream:function(e,p,k){var s=m({},e),l=j._getExtensionController(k),S=e.getSource(),n=S.getBindingContext(),q=S.getParent().getItems(),r;for(var i=0;i<q.length;i++){if(q[i].isA("sap.ui.unified.FileUploader")){r=q[i];break;}}n.setProperty(p,null);s.oSource=r;var t=n.isTransient();if(t){return;}if(!s.oSource){return;}l._sideEffects.handleFieldChange(s);},getIconForMimeType:function(s){return I.getIconForMimeType(s);},retrieveTextFromValueList:function(p,P,s){var t;var e;var i;if(p){e=a.getMetaModel();i=e.getObject(P+"@sapui.name");return e.requestValueListInfo(P,true).then(function(v){var V=v[v[""]?"":Object.keys(v)[0]];var k=V.$model;var l=k.getMetaModel();var n=V.Parameters.find(function(u){return u.LocalDataProperty&&u.LocalDataProperty.$PropertyPath===i;});if(n&&!n.ValueListProperty){return Promise.reject("Inconsistent value help annotation for "+i);}var T=l.getObject("/"+V.CollectionPath+"/"+n.ValueListProperty+"@com.sap.vocabularies.Common.v1.Text");if(T&&T.$Path){t=T.$Path;var q=new sap.ui.model.Filter({path:n.ValueListProperty,operator:"EQ",value1:p});var r=k.bindList("/"+V.CollectionPath,undefined,undefined,q,{"$select":t});return r.requestContexts(0,2);}else{return Promise.reject("Text Annotation for "+n.ValueListProperty+"is not defined");}}).then(function(k){var l=k&&k[0]?k[0].getObject()[t]:"";switch(s){case"Description":return l;case"DescriptionValue":return sap.ui.getCore().getLibraryResourceBundle("sap.fe.core").getText("C_FORMAT_FOR_TEXT_ARRANGEMENT",[l,p]);case"ValueDescription":return sap.ui.getCore().getLibraryResourceBundle("sap.fe.core").getText("C_FORMAT_FOR_TEXT_ARRANGEMENT",[p,l]);default:return p;}}).catch(function(E){var k=E.status&&E.status===404?"Metadata not found ("+E.status+") for value help of property "+P:E.message;L.error(k);});}return p;},handleTypeMissmatch:function(e){d.error(R.getText("M_FIELD_FILEUPLOADER_WRONG_MIMETYPE"),{details:"<p><strong>"+R.getText("M_FIELD_FILEUPLOADER_WRONG_MIMETYPE_DETAILS_SELECTED")+"</strong></p>"+e.getParameters().mimeType+"<br><br>"+"<p><strong>"+R.getText("M_FIELD_FILEUPLOADER_WRONG_MIMETYPE_DETAILS_ALLOWED")+"</strong></p>"+e.getSource().getMimeType().toString().replaceAll(",",", "),contentWidth:"150px"});},handleFileSizeExceed:function(e,i){d.error(R.getText("M_FIELD_FILEUPLOADER_FILE_TOO_BIG",e.getSource().getMaximumFileSize().toFixed(3)),{contentWidth:"150px"});},getControlById:function(e,s){var v=U.getViewForControl(e);return v?v.byId(s):undefined;},getParentControlByType:function(i,t){var e=i.getParent();while(!e.isA(t)){e=e.getParent();}return e;},lockControl:function(e,l){if(e&&l&&!B.isLocked(e)){B.lock(e);}else if(e&&!l&&B.isLocked(e)){B.unlock(e);}},setBusyIndicatorVisibleForFileUploadInTable:function(e,i){var H=e.getContentEdit()[0],k=e.getContentEdit()[1];k.setVisible(!i);H.setVisible(i);},_getExtensionController:function(e){return e.isA("sap.fe.core.ExtensionAPI")?e._controller:e;}};return j;},true);
|
|
@@ -14,6 +14,7 @@ sap.ui.define(["sap/fe/core/templating/UIFormatters", "sap/fe/core/templating/Da
|
|
|
14
14
|
var getAssociatedCurrencyProperty = PropertyHelper.getAssociatedCurrencyProperty;
|
|
15
15
|
var getAssociatedUnitProperty = PropertyHelper.getAssociatedUnitProperty;
|
|
16
16
|
var isPathExpression = PropertyHelper.isPathExpression;
|
|
17
|
+
var resolveBindingString = BindingExpression.resolveBindingString;
|
|
17
18
|
var or = BindingExpression.or;
|
|
18
19
|
var equal = BindingExpression.equal;
|
|
19
20
|
var not = BindingExpression.not;
|
|
@@ -112,30 +113,24 @@ sap.ui.define(["sap/fe/core/templating/UIFormatters", "sap/fe/core/templating/Da
|
|
|
112
113
|
_exports.formatValueRecursively = formatValueRecursively;
|
|
113
114
|
|
|
114
115
|
var getTextBinding = function (oPropertyDataModelObjectPath, fieldFormatOptions) {
|
|
115
|
-
var _oPropertyDataModelOb, _oPropertyDataModelOb2, _oPropertyDataModelOb3, _oPropertyDataModelOb4, _oPropertyDataModelOb5, _oPropertyDataModelOb6, _oPropertyDataModelOb7, _oPropertyDataModelOb8, _oPropertyDataModelOb9, _oPropertyDataModelOb10;
|
|
116
|
+
var _oPropertyDataModelOb, _oPropertyDataModelOb2, _oPropertyDataModelOb3, _oPropertyDataModelOb4, _oPropertyDataModelOb5, _oPropertyDataModelOb6, _oPropertyDataModelOb7, _oPropertyDataModelOb8, _oPropertyDataModelOb9, _oPropertyDataModelOb10, _oPropertyDataModelOb11, _oPropertyDataModelOb12;
|
|
116
117
|
|
|
117
118
|
var asObject = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
|
|
118
119
|
|
|
119
|
-
if (((_oPropertyDataModelOb = oPropertyDataModelObjectPath.targetObject) === null || _oPropertyDataModelOb === void 0 ? void 0 : _oPropertyDataModelOb.$Type) === "com.sap.vocabularies.UI.v1.DataField" || ((_oPropertyDataModelOb2 = oPropertyDataModelObjectPath.targetObject) === null || _oPropertyDataModelOb2 === void 0 ? void 0 : _oPropertyDataModelOb2.$Type) === "com.sap.vocabularies.UI.v1.DataPointType" || ((_oPropertyDataModelOb3 = oPropertyDataModelObjectPath.targetObject) === null || _oPropertyDataModelOb3 === void 0 ? void 0 : _oPropertyDataModelOb3.$Type) === "com.sap.vocabularies.UI.v1.DataFieldWithNavigationPath" || ((_oPropertyDataModelOb4 = oPropertyDataModelObjectPath.targetObject) === null || _oPropertyDataModelOb4 === void 0 ? void 0 : _oPropertyDataModelOb4.$Type) === "com.sap.vocabularies.UI.v1.DataFieldWithUrl") {
|
|
120
|
+
if (((_oPropertyDataModelOb = oPropertyDataModelObjectPath.targetObject) === null || _oPropertyDataModelOb === void 0 ? void 0 : _oPropertyDataModelOb.$Type) === "com.sap.vocabularies.UI.v1.DataField" || ((_oPropertyDataModelOb2 = oPropertyDataModelObjectPath.targetObject) === null || _oPropertyDataModelOb2 === void 0 ? void 0 : _oPropertyDataModelOb2.$Type) === "com.sap.vocabularies.UI.v1.DataPointType" || ((_oPropertyDataModelOb3 = oPropertyDataModelObjectPath.targetObject) === null || _oPropertyDataModelOb3 === void 0 ? void 0 : _oPropertyDataModelOb3.$Type) === "com.sap.vocabularies.UI.v1.DataFieldWithNavigationPath" || ((_oPropertyDataModelOb4 = oPropertyDataModelObjectPath.targetObject) === null || _oPropertyDataModelOb4 === void 0 ? void 0 : _oPropertyDataModelOb4.$Type) === "com.sap.vocabularies.UI.v1.DataFieldWithUrl" || ((_oPropertyDataModelOb5 = oPropertyDataModelObjectPath.targetObject) === null || _oPropertyDataModelOb5 === void 0 ? void 0 : _oPropertyDataModelOb5.$Type) === "com.sap.vocabularies.UI.v1.DataFieldWithIntentBasedNavigation" || ((_oPropertyDataModelOb6 = oPropertyDataModelObjectPath.targetObject) === null || _oPropertyDataModelOb6 === void 0 ? void 0 : _oPropertyDataModelOb6.$Type) === "com.sap.vocabularies.UI.v1.DataFieldWithAction") {
|
|
120
121
|
// If there is no resolved property, the value is returned as a constant
|
|
121
122
|
var fieldValue = oPropertyDataModelObjectPath.targetObject.Value || "";
|
|
122
123
|
return compileBinding(constant(fieldValue));
|
|
123
124
|
}
|
|
124
125
|
|
|
125
126
|
if (isPathExpression(oPropertyDataModelObjectPath.targetObject) && oPropertyDataModelObjectPath.targetObject.$target) {
|
|
126
|
-
|
|
127
|
-
oPropertyDataModelObjectPath.targetObject = oNavPath.target;
|
|
128
|
-
oNavPath.visitedObjects.forEach(function (oNavObj) {
|
|
129
|
-
if ((oNavObj === null || oNavObj === void 0 ? void 0 : oNavObj._type) === "NavigationProperty") {
|
|
130
|
-
oPropertyDataModelObjectPath.navigationProperties.push(oNavObj);
|
|
131
|
-
}
|
|
132
|
-
});
|
|
127
|
+
oPropertyDataModelObjectPath = enhanceDataModelPath(oPropertyDataModelObjectPath, oPropertyDataModelObjectPath.targetObject.path);
|
|
133
128
|
}
|
|
134
129
|
|
|
135
130
|
var oBindingExpression = bindingExpression(getContextRelativeTargetObjectPath(oPropertyDataModelObjectPath));
|
|
136
131
|
var oTargetBinding;
|
|
137
132
|
|
|
138
|
-
if ((
|
|
133
|
+
if ((_oPropertyDataModelOb7 = oPropertyDataModelObjectPath.targetObject) !== null && _oPropertyDataModelOb7 !== void 0 && (_oPropertyDataModelOb8 = _oPropertyDataModelOb7.annotations) !== null && _oPropertyDataModelOb8 !== void 0 && (_oPropertyDataModelOb9 = _oPropertyDataModelOb8.Measures) !== null && _oPropertyDataModelOb9 !== void 0 && _oPropertyDataModelOb9.Unit || (_oPropertyDataModelOb10 = oPropertyDataModelObjectPath.targetObject) !== null && _oPropertyDataModelOb10 !== void 0 && (_oPropertyDataModelOb11 = _oPropertyDataModelOb10.annotations) !== null && _oPropertyDataModelOb11 !== void 0 && (_oPropertyDataModelOb12 = _oPropertyDataModelOb11.Measures) !== null && _oPropertyDataModelOb12 !== void 0 && _oPropertyDataModelOb12.ISOCurrency) {
|
|
139
134
|
oTargetBinding = getBindingWithUnitOrCurrency(oPropertyDataModelObjectPath, oBindingExpression);
|
|
140
135
|
|
|
141
136
|
if ((fieldFormatOptions === null || fieldFormatOptions === void 0 ? void 0 : fieldFormatOptions.measureDisplayMode) === "Hidden") {
|
|
@@ -189,7 +184,7 @@ sap.ui.define(["sap/fe/core/templating/UIFormatters", "sap/fe/core/templating/Da
|
|
|
189
184
|
var oPropertyCurrency = getAssociatedCurrencyProperty(oPropertyDataModelObjectPath.targetObject);
|
|
190
185
|
|
|
191
186
|
if (!ignoreUnit && (oPropertyUnit || oPropertyCurrency)) {
|
|
192
|
-
oBindingExpression = getBindingWithUnitOrCurrency(oPropertyDataModelObjectPath, oBindingExpression);
|
|
187
|
+
oBindingExpression = getBindingWithUnitOrCurrency(oPropertyDataModelObjectPath, oBindingExpression, !showMeasureOnly);
|
|
193
188
|
|
|
194
189
|
if (oPropertyUnit && !hasValueHelp(oPropertyUnit) || oPropertyCurrency && !hasValueHelp(oPropertyCurrency) || (fieldFormatOptions === null || fieldFormatOptions === void 0 ? void 0 : fieldFormatOptions.measureDisplayMode) === "Hidden") {
|
|
195
190
|
// If there is a unit or currency without a value help, or in case the currency should be explicitly hidden,
|
|
@@ -348,6 +343,8 @@ sap.ui.define(["sap/fe/core/templating/UIFormatters", "sap/fe/core/templating/Da
|
|
|
348
343
|
return "Button";
|
|
349
344
|
|
|
350
345
|
case "com.sap.vocabularies.UI.v1.DataFieldWithNavigationPath":
|
|
346
|
+
case "com.sap.vocabularies.UI.v1.DataFieldWithIntentBasedNavigation":
|
|
347
|
+
case "com.sap.vocabularies.UI.v1.DataFieldWithAction":
|
|
351
348
|
return "Link";
|
|
352
349
|
}
|
|
353
350
|
|
|
@@ -636,8 +633,71 @@ sap.ui.define(["sap/fe/core/templating/UIFormatters", "sap/fe/core/templating/Da
|
|
|
636
633
|
return new JSONModel([]).createBindingContext("/");
|
|
637
634
|
}
|
|
638
635
|
};
|
|
636
|
+
/**
|
|
637
|
+
* Method to get MultipleLines for a DataField.
|
|
638
|
+
*
|
|
639
|
+
* @name getMultipleLinesForDataField
|
|
640
|
+
* @param {any} oThis The current object
|
|
641
|
+
* @param {string} sPropertyType The property type
|
|
642
|
+
* @param {boolean} isMultiLineText The property isMultiLineText
|
|
643
|
+
* @returns {BindingExpression<string>} The binding expression to determine if a data field should be a MultiLineText or not
|
|
644
|
+
*
|
|
645
|
+
* @public
|
|
646
|
+
*/
|
|
647
|
+
|
|
639
648
|
|
|
640
649
|
_exports.getSemanticObjects = getSemanticObjects;
|
|
650
|
+
|
|
651
|
+
var getMultipleLinesForDataField = function (oThis, sPropertyType, isMultiLineText) {
|
|
652
|
+
if (oThis.wrap === "false") {
|
|
653
|
+
return false;
|
|
654
|
+
}
|
|
655
|
+
|
|
656
|
+
if (sPropertyType !== "Edm.String") {
|
|
657
|
+
return isMultiLineText;
|
|
658
|
+
}
|
|
659
|
+
|
|
660
|
+
if (oThis.editMode === "Display") {
|
|
661
|
+
return true;
|
|
662
|
+
}
|
|
663
|
+
|
|
664
|
+
if (oThis.editMode.indexOf("{") > -1) {
|
|
665
|
+
// If the editMode is computed then we just care about the page editMode to determine if the multiline property should be taken into account
|
|
666
|
+
return compileBinding(or(equal(bindingExpression("/editMode", "ui"), constant("Display")), isMultiLineText));
|
|
667
|
+
}
|
|
668
|
+
|
|
669
|
+
return isMultiLineText;
|
|
670
|
+
};
|
|
671
|
+
|
|
672
|
+
_exports.getMultipleLinesForDataField = getMultipleLinesForDataField;
|
|
673
|
+
|
|
674
|
+
var _getDraftAdministrativeDataType = function (oMetaModel, sEntityType) {
|
|
675
|
+
return oMetaModel.requestObject("/" + sEntityType + "/DraftAdministrativeData/");
|
|
676
|
+
};
|
|
677
|
+
|
|
678
|
+
_exports._getDraftAdministrativeDataType = _getDraftAdministrativeDataType;
|
|
679
|
+
|
|
680
|
+
var getBindingForDraftAdminBlockInline = function (iContext, sEntityType) {
|
|
681
|
+
return _getDraftAdministrativeDataType(iContext.getModel(), sEntityType).then(function (oDADEntityType) {
|
|
682
|
+
var aBindings = [];
|
|
683
|
+
|
|
684
|
+
if (oDADEntityType.InProcessByUserDescription) {
|
|
685
|
+
aBindings.push(bindingExpression("DraftAdministrativeData/InProcessByUserDescription"));
|
|
686
|
+
}
|
|
687
|
+
|
|
688
|
+
aBindings.push(bindingExpression("DraftAdministrativeData/InProcessByUser"));
|
|
689
|
+
|
|
690
|
+
if (oDADEntityType.LastChangedByUserDescription) {
|
|
691
|
+
aBindings.push(bindingExpression("DraftAdministrativeData/LastChangedByUserDescription"));
|
|
692
|
+
}
|
|
693
|
+
|
|
694
|
+
aBindings.push(bindingExpression("DraftAdministrativeData/LastChangedByUser"));
|
|
695
|
+
return compileBinding(ifElse(bindingExpression("HasDraftEntity"), or.apply(void 0, aBindings), resolveBindingString("")));
|
|
696
|
+
});
|
|
697
|
+
};
|
|
698
|
+
|
|
699
|
+
getBindingForDraftAdminBlockInline.requiresIContext = true;
|
|
700
|
+
_exports.getBindingForDraftAdminBlockInline = getBindingForDraftAdminBlockInline;
|
|
641
701
|
return _exports;
|
|
642
702
|
}, false);
|
|
643
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIkZpZWxkVGVtcGxhdGluZy50cyJdLCJuYW1lcyI6WyJhZGRUZXh0QXJyYW5nZW1lbnRUb0JpbmRpbmdFeHByZXNzaW9uIiwiYmluZGluZ0V4cHJlc3Npb24iLCJmdWxsQ29udGV4dFBhdGgiLCJ0cmFuc2Zvcm1SZWN1cnNpdmVseSIsImV4cHJlc3Npb24iLCJvdXRFeHByZXNzaW9uIiwibW9kZWxOYW1lIiwidW5kZWZpbmVkIiwib1Byb3BlcnR5RGF0YU1vZGVsUGF0aCIsImVuaGFuY2VEYXRhTW9kZWxQYXRoIiwicGF0aCIsImdldEJpbmRpbmdXaXRoVGV4dEFycmFuZ2VtZW50IiwicHJvcGVydHlCaW5kaW5nRXhwcmVzc2lvbiIsImZpZWxkRm9ybWF0T3B0aW9ucyIsInRhcmdldERpc3BsYXlNb2RlT3ZlcnJpZGUiLCJkaXNwbGF5TW9kZSIsIm9Qcm9wZXJ0eURlZmluaXRpb24iLCJ0YXJnZXRPYmplY3QiLCJ0eXBlIiwiJHRhcmdldCIsInRhcmdldERpc3BsYXlNb2RlIiwiZ2V0RGlzcGxheU1vZGUiLCJjb21tb25UZXh0IiwiYW5ub3RhdGlvbnMiLCJDb21tb24iLCJUZXh0IiwicmVsYXRpdmVMb2NhdGlvbiIsImdldFBhdGhSZWxhdGl2ZUxvY2F0aW9uIiwiY29udGV4dExvY2F0aW9uIiwibmF2aWdhdGlvblByb3BlcnRpZXMiLCJtYXAiLCJucCIsIm5hbWUiLCJmb3JtYXRXaXRoVHlwZUluZm9ybWF0aW9uIiwiYW5ub3RhdGlvbkV4cHJlc3Npb24iLCJmb3JtYXRSZXN1bHQiLCJ2YWx1ZUZvcm1hdHRlcnMiLCJmb3JtYXRXaXRoQnJhY2tldHMiLCJmb3JtYXRWYWx1ZVJlY3Vyc2l2ZWx5IiwiZ2V0VGV4dEJpbmRpbmciLCJvUHJvcGVydHlEYXRhTW9kZWxPYmplY3RQYXRoIiwiYXNPYmplY3QiLCIkVHlwZSIsImZpZWxkVmFsdWUiLCJWYWx1ZSIsImNvbXBpbGVCaW5kaW5nIiwiY29uc3RhbnQiLCJpc1BhdGhFeHByZXNzaW9uIiwib05hdlBhdGgiLCJ0YXJnZXRFbnRpdHlUeXBlIiwicmVzb2x2ZVBhdGgiLCJ0YXJnZXQiLCJ2aXNpdGVkT2JqZWN0cyIsImZvckVhY2giLCJvTmF2T2JqIiwiX3R5cGUiLCJwdXNoIiwib0JpbmRpbmdFeHByZXNzaW9uIiwiZ2V0Q29udGV4dFJlbGF0aXZlVGFyZ2V0T2JqZWN0UGF0aCIsIm9UYXJnZXRCaW5kaW5nIiwiTWVhc3VyZXMiLCJVbml0IiwiSVNPQ3VycmVuY3kiLCJnZXRCaW5kaW5nV2l0aFVuaXRPckN1cnJlbmN5IiwibWVhc3VyZURpc3BsYXlNb2RlIiwiZm9ybWF0T3B0aW9ucyIsInNob3dNZWFzdXJlIiwiZ2V0VmFsdWVCaW5kaW5nIiwiaWdub3JlVW5pdCIsImlnbm9yZUZvcm1hdHRpbmciLCJiaW5kaW5nUGFyYW1ldGVycyIsInRhcmdldFR5cGVBbnkiLCJzaG93TWVhc3VyZU9ubHkiLCJpc1Byb3BlcnR5IiwiQ29tbXVuaWNhdGlvbiIsIklzRW1haWxBZGRyZXNzIiwib1Byb3BlcnR5VW5pdCIsImdldEFzc29jaWF0ZWRVbml0UHJvcGVydHkiLCJvUHJvcGVydHlDdXJyZW5jeSIsImdldEFzc29jaWF0ZWRDdXJyZW5jeVByb3BlcnR5IiwiaGFzVmFsdWVIZWxwIiwic2hvd051bWJlciIsInBhcnNlS2VlcHNFbXB0eVN0cmluZyIsImNvbnN0cmFpbnRzIiwicGFyYW1ldGVycyIsInRhcmdldFR5cGUiLCJnZXRVbml0QmluZGluZyIsInVuaXQiLCJnZXRBc3NvY2lhdGVkVGV4dEJpbmRpbmciLCJ0ZXh0UHJvcGVydHlQYXRoIiwiZ2V0QXNzb2NpYXRlZFRleHRQcm9wZXJ0eVBhdGgiLCJvVGV4dFByb3BlcnR5UGF0aCIsIm9WYWx1ZUJpbmRpbmciLCIkJG5vUGF0Y2giLCJpc1VzZWRJbk5hdmlnYXRpb25XaXRoUXVpY2tWaWV3RmFjZXRzIiwib0RhdGFNb2RlbFBhdGgiLCJvUHJvcGVydHkiLCJhTmF2aWdhdGlvblByb3BlcnRpZXMiLCJiSXNVc2VkSW5OYXZpZ2F0aW9uV2l0aFF1aWNrVmlld0ZhY2V0cyIsIm9OYXZQcm9wIiwicmVmZXJlbnRpYWxDb25zdHJhaW50IiwibGVuZ3RoIiwib1JlZkNvbnN0cmFpbnQiLCJzb3VyY2VQcm9wZXJ0eSIsIlVJIiwiUXVpY2tWaWV3RmFjZXRzIiwiaXNSZXRyaWV2ZVRleHRGcm9tVmFsdWVMaXN0RW5hYmxlZCIsIm9Qcm9wZXJ0eVBhdGgiLCJQcm9wZXJ0eUhlbHBlciIsInRleHRBbGlnbk1vZGUiLCJnZXREaXNwbGF5U3R5bGUiLCJvRGF0YUZpZWxkIiwic2VtYW50aWNPYmplY3QiLCJJc0ltYWdlVVJMIiwiSXNQaG9uZU51bWJlciIsIlRhcmdldCIsIlNlbWFudGljS2V5IiwiYVNlbWFudGljS2V5cyIsImJJc1NlbWFudGljS2V5IiwiZXZlcnkiLCJvS2V5Iiwic2VtYW50aWNLZXlTdHlsZSIsInRhcmdldEVudGl0eVNldCIsIkRyYWZ0Um9vdCIsIkNyaXRpY2FsaXR5IiwiU3RyaW5nIiwiaXNDdXJyZW5jeUFsaWduZWQiLCJNdWx0aUxpbmVUZXh0IiwiU2VtYW50aWNPYmplY3QiLCJyZXRyaWV2ZVRleHRGcm9tVmFsdWVMaXN0IiwiZ2V0RWRpdFN0eWxlIiwib0ZpZWxkRm9ybWF0T3B0aW9ucyIsIlZpc3VhbGl6YXRpb24iLCJ2YWx1ZU9mIiwiZ2V0VmlzaWJsZUV4cHJlc3Npb24iLCJkYXRhRmllbGRNb2RlbFBhdGgiLCJwcm9wZXJ0eVZhbHVlIiwiaXNBbmFseXRpY2FsR3JvdXBIZWFkZXJFeHBhbmRlZCIsImlzQW5hbHl0aWNzIiwiSXNFeHBhbmRlZCIsImlzQW5hbHl0aWNhbExlYWYiLCJlcXVhbCIsIk5vZGVMZXZlbCIsImFuZCIsIm5vdCIsIkhpZGRlbiIsImlmRWxzZSIsIm9yIiwiZ2V0SW5wdXREZXNjcmlwdGlvbiIsImRlc2NyaXB0aW9uQmluZGluZ0V4cHJlc3Npb24iLCJ1bml0UHJvcGVydHkiLCJlZGl0YWJsZUV4cHJlc3Npb24iLCJpc1JlYWRPbmx5RXhwcmVzc2lvbiIsImlzQ29tcHV0ZWQiLCJRVlRleHRCaW5kaW5nIiwib1Byb3BlcnR5VmFsdWVEYXRhTW9kZWxPYmplY3RQYXRoIiwicmV0dXJuVmFsdWUiLCJnZXRRdWlja1ZpZXdUeXBlIiwiZ2V0U2VtYW50aWNPYmplY3RFeHByZXNzaW9uVG9SZXNvbHZlIiwib0Fubm90YXRpb25zIiwiYVNlbU9iakV4cHJUb1Jlc29sdmUiLCJhU2VtT2Jqa2V5cyIsIk9iamVjdCIsImtleXMiLCJmaWx0ZXIiLCJlbGVtZW50Iiwic3RhcnRzV2l0aCIsImlTZW1PYmpDb3VudCIsInNTZW1PYmpFeHByZXNzaW9uIiwia2V5IiwiaW5kZXhPZiIsInNwbGl0IiwidmFsdWUiLCJnZXRTZW1hbnRpY09iamVjdHMiLCJzQ3VzdG9tRGF0YUtleSIsInNDdXN0b21EYXRhVmFsdWUiLCJhU2VtT2JqQ3VzdG9tRGF0YSIsIm9TZW1hbnRpY09iamVjdHNNb2RlbCIsIkpTT05Nb2RlbCIsIiQkdmFsdWVBc1Byb21pc2UiLCJvU2VtT2JqQmluZGluZ0NvbnRleHQiLCJjcmVhdGVCaW5kaW5nQ29udGV4dCJdLCJtYXBwaW5ncyI6IjtBQUFBO0FBQ0E7QUFDQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQTJGQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNPLE1BQU1BLHFDQUFxQyxHQUFHLFVBQ3BEQyxpQkFEb0QsRUFFcERDLGVBRm9ELEVBR2xDO0FBQ2xCLFdBQU9DLG9CQUFvQixDQUFDRixpQkFBRCxFQUFvQixTQUFwQixFQUErQixVQUFDRyxVQUFELEVBQWtEO0FBQzNHLFVBQUlDLGFBQThCLEdBQUdELFVBQXJDOztBQUNBLFVBQUlBLFVBQVUsQ0FBQ0UsU0FBWCxLQUF5QkMsU0FBN0IsRUFBd0M7QUFDdkM7QUFDQSxZQUFNQyxzQkFBc0IsR0FBR0Msb0JBQW9CLENBQUNQLGVBQUQsRUFBa0JFLFVBQVUsQ0FBQ00sSUFBN0IsQ0FBbkQ7QUFDQUwsUUFBQUEsYUFBYSxHQUFHTSw2QkFBNkIsQ0FBQ0gsc0JBQUQsRUFBeUJKLFVBQXpCLENBQTdDO0FBQ0E7O0FBQ0QsYUFBT0MsYUFBUDtBQUNBLEtBUjBCLENBQTNCO0FBU0EsR0FiTTs7OztBQWVBLE1BQU1NLDZCQUE2QixHQUFHLFVBQzVDSCxzQkFENEMsRUFFNUNJLHlCQUY0QyxFQUc1Q0Msa0JBSDRDLEVBSXZCO0FBQUE7O0FBQ3JCLFFBQU1DLHlCQUF5QixHQUFHRCxrQkFBSCxhQUFHQSxrQkFBSCx1QkFBR0Esa0JBQWtCLENBQUVFLFdBQXREO0FBQ0EsUUFBSVYsYUFBYSxHQUFHTyx5QkFBcEI7QUFDQSxRQUFNSSxtQkFBbUIsR0FDeEJSLHNCQUFzQixDQUFDUyxZQUF2QixDQUFvQ0MsSUFBcEMsS0FBNkMsY0FBN0MsR0FDSVYsc0JBQXNCLENBQUNTLFlBQXZCLENBQW9DRSxPQUR4QyxHQUVJWCxzQkFBc0IsQ0FBQ1MsWUFINUI7QUFJQSxRQUFNRyxpQkFBaUIsR0FBR04seUJBQXlCLElBQUlPLGNBQWMsQ0FBQ0wsbUJBQUQsRUFBc0JSLHNCQUF0QixDQUFyRTtBQUNBLFFBQU1jLFVBQVUsNEJBQUdOLG1CQUFtQixDQUFDTyxXQUF2QixvRkFBRyxzQkFBaUNDLE1BQXBDLDJEQUFHLHVCQUF5Q0MsSUFBNUQ7QUFDQSxRQUFNQyxnQkFBZ0IsR0FBR0MsdUJBQXVCLENBQy9DbkIsc0JBQXNCLENBQUNvQixlQUR3QixFQUUvQ3BCLHNCQUFzQixDQUFDcUIsb0JBRndCLENBQXZCLENBR3ZCQyxHQUh1QixDQUduQixVQUFBQyxFQUFFO0FBQUEsYUFBSUEsRUFBRSxDQUFDQyxJQUFQO0FBQUEsS0FIaUIsQ0FBekI7QUFJQXBCLElBQUFBLHlCQUF5QixHQUFHcUIseUJBQXlCLENBQUNqQixtQkFBRCxFQUFzQkoseUJBQXRCLENBQXJEOztBQUNBLFFBQUlRLGlCQUFpQixLQUFLLE9BQXRCLElBQWlDRSxVQUFyQyxFQUFpRDtBQUNoRCxjQUFRRixpQkFBUjtBQUNDLGFBQUssYUFBTDtBQUNDZixVQUFBQSxhQUFhLEdBQUc2QixvQkFBb0IsQ0FBQ1osVUFBRCxFQUFhSSxnQkFBYixDQUFwQztBQUNBOztBQUNELGFBQUssa0JBQUw7QUFDQ3JCLFVBQUFBLGFBQWEsR0FBRzhCLFlBQVksQ0FDM0IsQ0FBQ0Qsb0JBQW9CLENBQUNaLFVBQUQsRUFBYUksZ0JBQWIsQ0FBckIsRUFBMkVkLHlCQUEzRSxDQUQyQixFQUUzQndCLGVBQWUsQ0FBQ0Msa0JBRlcsQ0FBNUI7QUFJQTs7QUFDRCxhQUFLLGtCQUFMO0FBQ0NoQyxVQUFBQSxhQUFhLEdBQUc4QixZQUFZLENBQzNCLENBQUN2Qix5QkFBRCxFQUE0QnNCLG9CQUFvQixDQUFDWixVQUFELEVBQWFJLGdCQUFiLENBQWhELENBRDJCLEVBRTNCVSxlQUFlLENBQUNDLGtCQUZXLENBQTVCO0FBSUE7QUFmRjtBQWlCQTs7QUFDRCxXQUFPaEMsYUFBUDtBQUNBLEdBdENNOzs7O0FBd0NBLE1BQU1pQyxzQkFBc0IsR0FBRyxVQUFTckMsaUJBQVQsRUFBNkNDLGVBQTdDLEVBQW9HO0FBQ3pJLFdBQU9DLG9CQUFvQixDQUFDRixpQkFBRCxFQUFvQixTQUFwQixFQUErQixVQUFDRyxVQUFELEVBQWtEO0FBQzNHLFVBQUlDLGFBQThCLEdBQUdELFVBQXJDOztBQUNBLFVBQUlBLFVBQVUsQ0FBQ0UsU0FBWCxLQUF5QkMsU0FBN0IsRUFBd0M7QUFDdkM7QUFDQSxZQUFNQyxzQkFBc0IsR0FBR0Msb0JBQW9CLENBQUNQLGVBQUQsRUFBa0JFLFVBQVUsQ0FBQ00sSUFBN0IsQ0FBbkQ7QUFDQUwsUUFBQUEsYUFBYSxHQUFHNEIseUJBQXlCLENBQUN6QixzQkFBc0IsQ0FBQ1MsWUFBeEIsRUFBc0NiLFVBQXRDLENBQXpDO0FBQ0E7O0FBQ0QsYUFBT0MsYUFBUDtBQUNBLEtBUjBCLENBQTNCO0FBU0EsR0FWTTs7OztBQVlBLE1BQU1rQyxjQUFjLEdBQUcsVUFDN0JDLDRCQUQ2QixFQUU3QjNCLGtCQUY2QixFQUlvQjtBQUFBOztBQUFBLFFBRGpENEIsUUFDaUQsdUVBRDdCLEtBQzZCOztBQUNqRCxRQUNDLDBCQUFBRCw0QkFBNEIsQ0FBQ3ZCLFlBQTdCLGdGQUEyQ3lCLEtBQTNDLE1BQXFELHNDQUFyRCxJQUNBLDJCQUFBRiw0QkFBNEIsQ0FBQ3ZCLFlBQTdCLGtGQUEyQ3lCLEtBQTNDLE1BQXFELDBDQURyRCxJQUVBLDJCQUFBRiw0QkFBNEIsQ0FBQ3ZCLFlBQTdCLGtGQUEyQ3lCLEtBQTNDLE1BQXFELHdEQUZyRCxJQUdBLDJCQUFBRiw0QkFBNEIsQ0FBQ3ZCLFlBQTdCLGtGQUEyQ3lCLEtBQTNDLE1BQXFELDZDQUp0RCxFQUtFO0FBQ0Q7QUFDQSxVQUFNQyxVQUFVLEdBQUdILDRCQUE0QixDQUFDdkIsWUFBN0IsQ0FBMEMyQixLQUExQyxJQUFtRCxFQUF0RTtBQUNBLGFBQU9DLGNBQWMsQ0FBQ0MsUUFBUSxDQUFDSCxVQUFELENBQVQsQ0FBckI7QUFDQTs7QUFDRCxRQUFJSSxnQkFBZ0IsQ0FBQ1AsNEJBQTRCLENBQUN2QixZQUE5QixDQUFoQixJQUErRHVCLDRCQUE0QixDQUFDdkIsWUFBN0IsQ0FBMENFLE9BQTdHLEVBQXNIO0FBQ3JILFVBQU02QixRQUFRLEdBQUdSLDRCQUE0QixDQUFDUyxnQkFBN0IsQ0FBOENDLFdBQTlDLENBQTBEViw0QkFBNEIsQ0FBQ3ZCLFlBQTdCLENBQTBDUCxJQUFwRyxFQUEwRyxJQUExRyxDQUFqQjtBQUNBOEIsTUFBQUEsNEJBQTRCLENBQUN2QixZQUE3QixHQUE0QytCLFFBQVEsQ0FBQ0csTUFBckQ7QUFDQUgsTUFBQUEsUUFBUSxDQUFDSSxjQUFULENBQXdCQyxPQUF4QixDQUFnQyxVQUFDQyxPQUFELEVBQWtCO0FBQ2pELFlBQUksQ0FBQUEsT0FBTyxTQUFQLElBQUFBLE9BQU8sV0FBUCxZQUFBQSxPQUFPLENBQUVDLEtBQVQsTUFBbUIsb0JBQXZCLEVBQTZDO0FBQzVDZixVQUFBQSw0QkFBNEIsQ0FBQ1gsb0JBQTdCLENBQWtEMkIsSUFBbEQsQ0FBdURGLE9BQXZEO0FBQ0E7QUFDRCxPQUpEO0FBS0E7O0FBQ0QsUUFBTUcsa0JBQWtCLEdBQUd4RCxpQkFBaUIsQ0FBQ3lELGtDQUFrQyxDQUFDbEIsNEJBQUQsQ0FBbkMsQ0FBNUM7QUFDQSxRQUFJbUIsY0FBSjs7QUFDQSxRQUNDLDBCQUFBbkIsNEJBQTRCLENBQUN2QixZQUE3QixvR0FBMkNNLFdBQTNDLG9HQUF3RHFDLFFBQXhELDBFQUFrRUMsSUFBbEUsOEJBQ0FyQiw0QkFBNEIsQ0FBQ3ZCLFlBRDdCLDZFQUNBLHVCQUEyQ00sV0FEM0MsOEVBQ0EsdUJBQXdEcUMsUUFEeEQsb0RBQ0Esd0JBQWtFRSxXQUZuRSxFQUdFO0FBQ0RILE1BQUFBLGNBQWMsR0FBR0ksNEJBQTRCLENBQUN2Qiw0QkFBRCxFQUErQmlCLGtCQUEvQixDQUE3Qzs7QUFDQSxVQUFJLENBQUE1QyxrQkFBa0IsU0FBbEIsSUFBQUEsa0JBQWtCLFdBQWxCLFlBQUFBLGtCQUFrQixDQUFFbUQsa0JBQXBCLE1BQTJDLFFBQS9DLEVBQXlEO0FBQ3hEO0FBQ0NMLFFBQUFBLGNBQUQsQ0FBa0RNLGFBQWxELG1DQUNLTixjQUFELENBQWtETSxhQUR0RDtBQUVDQyxVQUFBQSxXQUFXLEVBQUU7QUFGZDtBQUlBO0FBQ0QsS0FaRCxNQVlPO0FBQ05QLE1BQUFBLGNBQWMsR0FBR2hELDZCQUE2QixDQUFDNkIsNEJBQUQsRUFBK0JpQixrQkFBL0IsRUFBbUQ1QyxrQkFBbkQsQ0FBOUM7QUFDQTs7QUFDRCxRQUFJNEIsUUFBSixFQUFjO0FBQ2IsYUFBT2tCLGNBQVA7QUFDQSxLQXZDZ0QsQ0F3Q2pEOzs7QUFDQSxXQUFPZCxjQUFjLENBQUNjLGNBQUQsQ0FBckI7QUFDQSxHQTlDTTs7OztBQWdEQSxNQUFNUSxlQUFlLEdBQUcsVUFDOUIzQiw0QkFEOEIsRUFFOUIzQixrQkFGOEIsRUFRRjtBQUFBLFFBTDVCdUQsVUFLNEIsdUVBTE4sS0FLTTtBQUFBLFFBSjVCQyxnQkFJNEIsdUVBSkEsS0FJQTtBQUFBLFFBSDVCQyxpQkFHNEI7QUFBQSxRQUY1QkMsYUFFNEI7QUFBQSxRQUQ1QkMsZUFDNEIsdUVBREQsS0FDQzs7QUFDNUIsUUFBSXpCLGdCQUFnQixDQUFDUCw0QkFBNEIsQ0FBQ3ZCLFlBQTlCLENBQWhCLElBQStEdUIsNEJBQTRCLENBQUN2QixZQUE3QixDQUEwQ0UsT0FBN0csRUFBc0g7QUFDckgsVUFBTTZCLFFBQVEsR0FBR1IsNEJBQTRCLENBQUNTLGdCQUE3QixDQUE4Q0MsV0FBOUMsQ0FBMERWLDRCQUE0QixDQUFDdkIsWUFBN0IsQ0FBMENQLElBQXBHLEVBQTBHLElBQTFHLENBQWpCO0FBQ0E4QixNQUFBQSw0QkFBNEIsQ0FBQ3ZCLFlBQTdCLEdBQTRDK0IsUUFBUSxDQUFDRyxNQUFyRDtBQUNBSCxNQUFBQSxRQUFRLENBQUNJLGNBQVQsQ0FBd0JDLE9BQXhCLENBQWdDLFVBQUNDLE9BQUQsRUFBa0I7QUFDakQsWUFBSUEsT0FBTyxJQUFJQSxPQUFPLENBQUNDLEtBQVIsS0FBa0Isb0JBQWpDLEVBQXVEO0FBQ3REZixVQUFBQSw0QkFBNEIsQ0FBQ1gsb0JBQTdCLENBQWtEMkIsSUFBbEQsQ0FBdURGLE9BQXZEO0FBQ0E7QUFDRCxPQUpEO0FBS0E7O0FBRUQsUUFBTXJDLFlBQVksR0FBR3VCLDRCQUE0QixDQUFDdkIsWUFBbEQ7O0FBQ0EsUUFBSXdELFVBQVUsQ0FBQ3hELFlBQUQsQ0FBZCxFQUE4QjtBQUFBOztBQUM3QixVQUFJd0Msa0JBQXVELEdBQUd4RCxpQkFBaUIsQ0FDOUV5RCxrQ0FBa0MsQ0FBQ2xCLDRCQUFELENBRDRDLENBQS9FOztBQUdBLG1DQUFJdkIsWUFBWSxDQUFDTSxXQUFqQiw0RUFBSSxzQkFBMEJtRCxhQUE5QixtREFBSSx1QkFBeUNDLGNBQTdDLEVBQTZEO0FBQzVEbEIsUUFBQUEsa0JBQWtCLENBQUN2QyxJQUFuQixHQUEwQix3QkFBMUI7QUFDQSxPQUZELE1BRU87QUFDTixZQUFNMEQsYUFBYSxHQUFHQyx5QkFBeUIsQ0FBQ3JDLDRCQUE0QixDQUFDdkIsWUFBOUIsQ0FBL0M7QUFDQSxZQUFNNkQsaUJBQWlCLEdBQUdDLDZCQUE2QixDQUFDdkMsNEJBQTRCLENBQUN2QixZQUE5QixDQUF2RDs7QUFDQSxZQUFJLENBQUNtRCxVQUFELEtBQWdCUSxhQUFhLElBQUlFLGlCQUFqQyxDQUFKLEVBQXlEO0FBQ3hEckIsVUFBQUEsa0JBQWtCLEdBQUdNLDRCQUE0QixDQUFDdkIsNEJBQUQsRUFBK0JpQixrQkFBL0IsQ0FBakQ7O0FBQ0EsY0FDRW1CLGFBQWEsSUFBSSxDQUFDSSxZQUFZLENBQUNKLGFBQUQsQ0FBL0IsSUFDQ0UsaUJBQWlCLElBQUksQ0FBQ0UsWUFBWSxDQUFDRixpQkFBRCxDQURuQyxJQUVBLENBQUFqRSxrQkFBa0IsU0FBbEIsSUFBQUEsa0JBQWtCLFdBQWxCLFlBQUFBLGtCQUFrQixDQUFFbUQsa0JBQXBCLE1BQTJDLFFBSDVDLEVBSUU7QUFDRDtBQUNBO0FBQ0EsZ0JBQUksQ0FBQ1Asa0JBQWtCLENBQUNRLGFBQXhCLEVBQXVDO0FBQ3RDUixjQUFBQSxrQkFBa0IsQ0FBQ1EsYUFBbkIsR0FBbUMsRUFBbkM7QUFDQTs7QUFDRCxnQkFBSU8sZUFBSixFQUFxQjtBQUNwQmYsY0FBQUEsa0JBQWtCLENBQUNRLGFBQW5CLENBQWlDZ0IsVUFBakMsR0FBOEMsS0FBOUM7QUFDQSxhQUZELE1BRU87QUFDTnhCLGNBQUFBLGtCQUFrQixDQUFDUSxhQUFuQixDQUFpQ0MsV0FBakMsR0FBK0MsS0FBL0M7QUFDQTtBQUNEO0FBQ0QsU0FsQkQsTUFrQk87QUFDTlQsVUFBQUEsa0JBQWtCLEdBQUd4Qix5QkFBeUIsQ0FBQ2hCLFlBQUQsRUFBZXdDLGtCQUFmLENBQTlDOztBQUNBLGNBQUlBLGtCQUFrQixDQUFDdkMsSUFBbkIsS0FBNEIsZ0NBQWhDLEVBQWtFO0FBQ2pFdUMsWUFBQUEsa0JBQWtCLENBQUNRLGFBQW5CLEdBQW1DO0FBQ2xDaUIsY0FBQUEscUJBQXFCLEVBQUU7QUFEVyxhQUFuQztBQUdBO0FBQ0Q7QUFDRDs7QUFDRCxVQUFJYixnQkFBSixFQUFzQjtBQUNyQixlQUFPWixrQkFBa0IsQ0FBQ1EsYUFBMUI7QUFDQSxlQUFPUixrQkFBa0IsQ0FBQzBCLFdBQTFCO0FBQ0EsZUFBTzFCLGtCQUFrQixDQUFDdkMsSUFBMUI7QUFDQTs7QUFDRCxVQUFJb0QsaUJBQUosRUFBdUI7QUFDdEJiLFFBQUFBLGtCQUFrQixDQUFDMkIsVUFBbkIsR0FBZ0NkLGlCQUFoQztBQUNBOztBQUNELFVBQUlDLGFBQUosRUFBbUI7QUFDbEJkLFFBQUFBLGtCQUFrQixDQUFDNEIsVUFBbkIsR0FBZ0MsS0FBaEM7QUFDQTs7QUFDRCxhQUFPeEMsY0FBYyxDQUFDWSxrQkFBRCxDQUFyQjtBQUNBLEtBaERELE1BZ0RPO0FBQ04sVUFDQyxDQUFBeEMsWUFBWSxTQUFaLElBQUFBLFlBQVksV0FBWixZQUFBQSxZQUFZLENBQUV5QixLQUFkLHVEQUNBLENBQUF6QixZQUFZLFNBQVosSUFBQUEsWUFBWSxXQUFaLFlBQUFBLFlBQVksQ0FBRXlCLEtBQWQsOERBRkQsRUFHRTtBQUNELGVBQU9HLGNBQWMsQ0FBQ1gsb0JBQW9CLENBQUVqQixZQUFELENBQW1DMkIsS0FBcEMsQ0FBckIsQ0FBckI7QUFDQSxPQUxELE1BS087QUFDTixlQUFPLEVBQVA7QUFDQTtBQUNEO0FBQ0QsR0E5RU07Ozs7QUFnRkEsTUFBTTBDLGNBQWMsR0FBRyxVQUFTOUMsNEJBQVQsRUFBdUY7QUFBQTs7QUFDcEgsUUFBTXhCLG1CQUFtQixHQUFHd0IsNEJBQTRCLENBQUN2QixZQUF6RDtBQUNBLFFBQUlzRSxJQUFJLDZCQUFHdkUsbUJBQW1CLENBQUNPLFdBQXZCLHFGQUFHLHVCQUFpQ3FDLFFBQXBDLDJEQUFHLHVCQUEyQ0MsSUFBdEQ7QUFDQSxRQUFNbkMsZ0JBQWdCLEdBQUdDLHVCQUF1QixDQUMvQ2EsNEJBQTRCLENBQUNaLGVBRGtCLEVBRS9DWSw0QkFBNEIsQ0FBQ1gsb0JBRmtCLENBQXZCLENBR3ZCQyxHQUh1QixDQUduQixVQUFBQyxFQUFFO0FBQUEsYUFBSUEsRUFBRSxDQUFDQyxJQUFQO0FBQUEsS0FIaUIsQ0FBekI7QUFJQXVELElBQUFBLElBQUksR0FBR0EsSUFBSSxHQUFHQSxJQUFILDZCQUFVdkUsbUJBQW1CLENBQUNPLFdBQTlCLHFGQUFVLHVCQUFpQ3FDLFFBQTNDLDJEQUFVLHVCQUEyQ0UsV0FBaEU7QUFDQSxXQUFPeUIsSUFBSSxHQUFHMUMsY0FBYyxDQUFDWCxvQkFBb0IsQ0FBQ3FELElBQUQsRUFBTzdELGdCQUFQLENBQXJCLENBQWpCLEdBQWtFbkIsU0FBN0U7QUFDQSxHQVRNOzs7O0FBV0EsTUFBTWlGLHdCQUF3QixHQUFHLFVBQ3ZDaEQsNEJBRHVDLEVBRXZDM0Isa0JBRnVDLEVBR1g7QUFDNUIsUUFBTTRFLGdCQUFnQixHQUFHQyw2QkFBNkIsQ0FBQ2xELDRCQUE0QixDQUFDdkIsWUFBOUIsQ0FBdEQ7O0FBQ0EsUUFBSXdFLGdCQUFKLEVBQXNCO0FBQ3JCLFVBQU1FLGlCQUFpQixHQUFHbEYsb0JBQW9CLENBQUMrQiw0QkFBRCxFQUErQmlELGdCQUEvQixDQUE5QztBQUNBLFVBQU1HLGFBQWEsR0FBR3pCLGVBQWUsQ0FBQ3dCLGlCQUFELEVBQW9COUUsa0JBQXBCLEVBQXdDLElBQXhDLEVBQThDLElBQTlDLEVBQW9EO0FBQUVnRixRQUFBQSxTQUFTLEVBQUU7QUFBYixPQUFwRCxDQUFyQztBQUNBLGFBQU9ELGFBQVA7QUFDQTs7QUFDRCxXQUFPckYsU0FBUDtBQUNBLEdBWE07Ozs7QUFhQSxNQUFNdUYscUNBQXFDLEdBQUcsVUFBU0MsY0FBVCxFQUE4Q0MsU0FBOUMsRUFBNEU7QUFBQTs7QUFDaEksUUFBTUMscUJBQXFCLEdBQUcsQ0FBQUYsY0FBYyxTQUFkLElBQUFBLGNBQWMsV0FBZCxxQ0FBQUEsY0FBYyxDQUFFOUMsZ0JBQWhCLGdGQUFrQ3BCLG9CQUFsQyxLQUEwRCxFQUF4RjtBQUNBLFFBQUlxRSxzQ0FBc0MsR0FBRyxLQUE3QztBQUNBRCxJQUFBQSxxQkFBcUIsQ0FBQzVDLE9BQXRCLENBQThCLFVBQUE4QyxRQUFRLEVBQUk7QUFDekMsVUFBSUEsUUFBUSxDQUFDQyxxQkFBVCxJQUFrQ0QsUUFBUSxDQUFDQyxxQkFBVCxDQUErQkMsTUFBckUsRUFBNkU7QUFDNUVGLFFBQUFBLFFBQVEsQ0FBQ0MscUJBQVQsQ0FBK0IvQyxPQUEvQixDQUF1QyxVQUFBaUQsY0FBYyxFQUFJO0FBQ3hELGNBQUksQ0FBQUEsY0FBYyxTQUFkLElBQUFBLGNBQWMsV0FBZCxZQUFBQSxjQUFjLENBQUVDLGNBQWhCLE1BQW1DUCxTQUFTLENBQUNoRSxJQUFqRCxFQUF1RDtBQUFBOztBQUN0RCxnQkFBSW1FLFFBQUosYUFBSUEsUUFBSix1Q0FBSUEsUUFBUSxDQUFFZCxVQUFkLDBFQUFJLHFCQUFzQjlELFdBQTFCLDRFQUFJLHNCQUFtQ2lGLEVBQXZDLG1EQUFJLHVCQUF1Q0MsZUFBM0MsRUFBNEQ7QUFDM0RQLGNBQUFBLHNDQUFzQyxHQUFHLElBQXpDO0FBQ0E7QUFDRDtBQUNELFNBTkQ7QUFPQTtBQUNELEtBVkQ7QUFXQSxXQUFPQSxzQ0FBUDtBQUNBLEdBZk07Ozs7QUFpQkEsTUFBTVEsa0NBQWtDLEdBQUcsVUFDakRDLGFBRGlELEVBRWpEOUYsa0JBRmlELEVBR3ZDO0FBQUE7O0FBQ1YsUUFBTW1GLFNBQW1CLEdBQUlqRCxnQkFBZ0IsQ0FBQzRELGFBQUQsQ0FBaEIsSUFBbUNBLGFBQWEsQ0FBQ3hGLE9BQWxELElBQStEd0YsYUFBM0Y7O0FBQ0EsUUFDQyxFQUFFOUYsa0JBQWtCLENBQUNFLFdBQW5CLEtBQW1DLE9BQXJDLEtBQ0EsMkJBQUNpRixTQUFTLENBQUN6RSxXQUFYLDRFQUFDLHNCQUF1QkMsTUFBeEIsbURBQUMsdUJBQStCQyxJQUFoQyxDQURBLElBRUEsNEJBQUN1RSxTQUFTLENBQUN6RSxXQUFYLG1EQUFDLHVCQUF1QnFDLFFBQXhCLENBRkEsSUFHQWdELGNBQWMsQ0FBQzVCLFlBQWYsQ0FBNEJnQixTQUE1QixDQUhBLElBSUFuRixrQkFBa0IsQ0FBQ2dHLGFBQW5CLEtBQXFDLE1BTHRDLEVBTUU7QUFDRCxhQUFPLElBQVA7QUFDQTs7QUFDRCxXQUFPLEtBQVA7QUFDQSxHQWZNOzs7O0FBaUJBLE1BQU1DLGVBQWUsR0FBRyxVQUM5QkgsYUFEOEIsRUFFOUJJLFVBRjhCLEVBRzlCaEIsY0FIOEIsRUFJOUJsRixrQkFKOEIsRUFLOUJtRyxjQUw4QixFQU1mO0FBQUE7O0FBQ2Y7QUFDQSxRQUFNaEIsU0FBbUIsR0FBSWpELGdCQUFnQixDQUFDNEQsYUFBRCxDQUFoQixJQUFtQ0EsYUFBYSxDQUFDeEYsT0FBbEQsSUFBK0R3RixhQUEzRjs7QUFDQSxRQUNDSyxjQUFjLElBQ2QsNEJBQUNoQixTQUFTLENBQUN6RSxXQUFYLDZFQUFDLHVCQUF1QmlGLEVBQXhCLG1EQUFDLHVCQUEyQlMsVUFBNUIsQ0FEQSxJQUVBLEVBQUVqQixTQUFTLENBQUM5RSxJQUFWLEtBQW1CLFlBQXJCLENBRkEsSUFHQSxFQUFFLDBCQUFBOEUsU0FBUyxDQUFDekUsV0FBVixvR0FBdUJtRCxhQUF2QiwwRUFBc0NDLGNBQXRDLDhCQUF3RHFCLFNBQVMsQ0FBQ3pFLFdBQWxFLDZFQUF3RCx1QkFBdUJtRCxhQUEvRSxtREFBd0QsdUJBQXNDd0MsYUFBaEcsQ0FKRCxFQUtFO0FBQ0QsYUFBTyx1QkFBUDtBQUNBOztBQUNELFFBQUksQ0FBQ1AsYUFBRCxJQUFrQixPQUFPQSxhQUFQLEtBQXlCLFFBQS9DLEVBQXlEO0FBQ3hELGFBQU8sTUFBUDtBQUNBOztBQUNELFFBQUlYLFNBQVMsQ0FBQzlFLElBQVYsS0FBbUIsWUFBdkIsRUFBcUM7QUFDcEMsYUFBTyxNQUFQO0FBQ0E7O0FBQ0QsbUNBQUk4RSxTQUFTLENBQUN6RSxXQUFkLCtFQUFJLHdCQUF1QmlGLEVBQTNCLG9EQUFJLHdCQUEyQlMsVUFBL0IsRUFBMkM7QUFDMUMsYUFBTyxRQUFQO0FBQ0E7O0FBQ0QsWUFBUUYsVUFBVSxDQUFDckUsS0FBbkI7QUFDQyxXQUFLLDBDQUFMO0FBQ0MsZUFBTyxXQUFQOztBQUNELFdBQUssbURBQUw7QUFDQyxZQUFJLHVCQUFBcUUsVUFBVSxDQUFDSSxNQUFYLG1HQUFtQmhHLE9BQW5CLGdGQUE0QnVCLEtBQTVCLE1BQXNDLDBDQUExQyxFQUFzRjtBQUNyRixpQkFBTyxXQUFQO0FBQ0EsU0FGRCxNQUVPLElBQUksd0JBQUFxRSxVQUFVLENBQUNJLE1BQVgscUdBQW1CaEcsT0FBbkIsZ0ZBQTRCdUIsS0FBNUIsTUFBc0MsbURBQTFDLEVBQStGO0FBQ3JHLGlCQUFPLFNBQVA7QUFDQTs7QUFDRDs7QUFDRCxXQUFLLCtDQUFMO0FBQ0EsV0FBSyw4REFBTDtBQUNDLGVBQU8sUUFBUDs7QUFDRCxXQUFLLHdEQUFMO0FBQ0MsZUFBTyxNQUFQO0FBZEY7O0FBZ0JBLFFBQUlxRCxjQUFKLGFBQUlBLGNBQUoseUNBQUlBLGNBQWMsQ0FBRTlDLGdCQUFwQiw2RUFBSSx1QkFBa0MxQixXQUF0Qyw2RUFBSSx1QkFBK0NDLE1BQW5ELG1EQUFJLHVCQUF1RDRGLFdBQTNELEVBQXdFO0FBQ3ZFLFVBQU1DLGFBQWEsR0FBR3RCLGNBQWMsQ0FBQzlDLGdCQUFmLENBQWdDMUIsV0FBaEMsQ0FBNENDLE1BQTVDLENBQW1ENEYsV0FBekU7QUFDQSxVQUFNRSxjQUFjLEdBQUcsQ0FBQ0QsYUFBYSxDQUFDRSxLQUFkLENBQW9CLFVBQVNDLElBQVQsRUFBZTtBQUFBOztBQUMxRCxlQUFPLENBQUFBLElBQUksU0FBSixJQUFBQSxJQUFJLFdBQUosNkJBQUFBLElBQUksQ0FBRXJHLE9BQU4sZ0VBQWVhLElBQWYsTUFBd0JnRSxTQUFTLENBQUNoRSxJQUF6QztBQUNBLE9BRnVCLENBQXhCOztBQUdBLFVBQUlzRixjQUFjLElBQUl6RyxrQkFBa0IsQ0FBQzRHLGdCQUF6QyxFQUEyRDtBQUFBOztBQUMxRCxzQ0FBSTFCLGNBQWMsQ0FBQzJCLGVBQW5CLDZFQUFJLHVCQUFnQ25HLFdBQXBDLDZFQUFJLHVCQUE2Q0MsTUFBakQsbURBQUksdUJBQXFEbUcsU0FBekQsRUFBb0U7QUFDbkU7QUFDQTtBQUNBLGlCQUFPLCtCQUFQO0FBQ0E7O0FBQ0QsZUFBTzlHLGtCQUFrQixDQUFDNEcsZ0JBQW5CLEtBQXdDLGtCQUF4QyxHQUE2RCxrQkFBN0QsR0FBa0Ysa0JBQXpGO0FBQ0E7QUFDRDs7QUFDRCxRQUFJVixVQUFVLENBQUNhLFdBQWYsRUFBNEI7QUFDM0IsYUFBTyxjQUFQO0FBQ0E7O0FBQ0QsUUFBSSwyQkFBQTVCLFNBQVMsQ0FBQ3pFLFdBQVYsdUdBQXVCcUMsUUFBdkIsNEVBQWlDRSxXQUFqQyxJQUFnRCtELE1BQU0sQ0FBQ2hILGtCQUFrQixDQUFDaUgsaUJBQXBCLENBQU4sS0FBaUQsTUFBckcsRUFBNkc7QUFDNUcsVUFBSWpILGtCQUFrQixDQUFDbUQsa0JBQW5CLEtBQTBDLFFBQTlDLEVBQXdEO0FBQ3ZELGVBQU8sTUFBUDtBQUNBOztBQUNELGFBQU8sb0JBQVA7QUFDQTs7QUFDRCxRQUFJLDJCQUFBZ0MsU0FBUyxDQUFDekUsV0FBVix1R0FBdUJtRCxhQUF2Qiw0RUFBc0NDLGNBQXRDLCtCQUF3RHFCLFNBQVMsQ0FBQ3pFLFdBQWxFLCtFQUF3RCx3QkFBdUJtRCxhQUEvRSxvREFBd0Qsd0JBQXNDd0MsYUFBbEcsRUFBaUg7QUFDaEgsYUFBTyxNQUFQO0FBQ0E7O0FBQ0QsbUNBQUlsQixTQUFTLENBQUN6RSxXQUFkLCtFQUFJLHdCQUF1QmlGLEVBQTNCLG9EQUFJLHdCQUEyQnVCLGFBQS9CLEVBQThDO0FBQzdDLGFBQU8sZ0JBQVA7QUFDQTs7QUFFRCxRQUFJakMscUNBQXFDLENBQUNDLGNBQUQsRUFBaUJDLFNBQWpCLENBQXpDLEVBQXNFO0FBQ3JFLGFBQU8sdUJBQVA7QUFDQTs7QUFDRCxtQ0FBSUEsU0FBUyxDQUFDekUsV0FBZCwrRUFBSSx3QkFBdUJDLE1BQTNCLG9EQUFJLHdCQUErQndHLGNBQW5DLEVBQW1EO0FBQ2xELGFBQU8sYUFBUDtBQUNBOztBQUNELFFBQUlqQixVQUFVLENBQUNyRSxLQUFYLEtBQXFCLDZDQUF6QixFQUF3RTtBQUN2RSxhQUFPLE1BQVA7QUFDQTs7QUFDRCxRQUFJN0Isa0JBQWtCLENBQUNvSCx5QkFBbkIsS0FBaUQsSUFBckQsRUFBMkQ7QUFDMUQsYUFBTyx1QkFBUDtBQUNBOztBQUNELFdBQU8sTUFBUDtBQUNBLEdBckZNOzs7O0FBdUZBLE1BQU1DLFlBQVksR0FBRyxVQUMzQnZCLGFBRDJCLEVBRTNCSSxVQUYyQixFQUczQm9CLG1CQUgyQixFQUlSO0FBQUE7O0FBQ25CO0FBQ0EsUUFBSSxDQUFDeEIsYUFBRCxJQUFrQixPQUFPQSxhQUFQLEtBQXlCLFFBQS9DLEVBQXlEO0FBQ3hELGFBQU8sSUFBUDtBQUNBOztBQUNELFFBQU1YLFNBQW1CLEdBQUlqRCxnQkFBZ0IsQ0FBQzRELGFBQUQsQ0FBaEIsSUFBbUNBLGFBQWEsQ0FBQ3hGLE9BQWxELElBQStEd0YsYUFBM0Y7O0FBQ0EsUUFBSVgsU0FBUyxDQUFDOUUsSUFBVixLQUFtQixZQUF2QixFQUFxQztBQUNwQyxhQUFPLE1BQVA7QUFDQTs7QUFDRCxZQUFRNkYsVUFBVSxDQUFDckUsS0FBbkI7QUFDQyxXQUFLLG1EQUFMO0FBQ0MsWUFBSSx3QkFBQXFFLFVBQVUsQ0FBQ0ksTUFBWCxxR0FBbUJoRyxPQUFuQixnRkFBNEJ1QixLQUE1QixNQUFzQyxtREFBMUMsRUFBK0Y7QUFDOUYsaUJBQU8sSUFBUDtBQUNBLFNBRkQsTUFFTyxJQUFJLHdCQUFBcUUsVUFBVSxDQUFDSSxNQUFYLHFHQUFtQmhHLE9BQW5CLGdGQUE0QmlILGFBQTVCLE1BQThDLDZCQUFsRCxFQUFpRjtBQUN2RixpQkFBTyxpQkFBUDtBQUNBOztBQUNEOztBQUNELFdBQUssMENBQUw7QUFDQyxZQUFJLENBQUFyQixVQUFVLFNBQVYsSUFBQUEsVUFBVSxXQUFWLFlBQUFBLFVBQVUsQ0FBRXFCLGFBQVosTUFBOEIsNkJBQWxDLEVBQWlFO0FBQ2hFLGlCQUFPLGlCQUFQO0FBQ0E7O0FBQ0Q7O0FBQ0QsV0FBSywrQ0FBTDtBQUNBLFdBQUssd0RBQUw7QUFDQSxXQUFLLDhEQUFMO0FBQ0MsZUFBTyxJQUFQO0FBaEJGOztBQWtCQSxRQUFNeEQsYUFBYSxHQUFHQyx5QkFBeUIsQ0FBQ21CLFNBQUQsQ0FBL0M7QUFDQSxRQUFNbEIsaUJBQWlCLEdBQUdDLDZCQUE2QixDQUFDaUIsU0FBRCxDQUF2RDs7QUFDQSxRQUNFWSxjQUFjLENBQUM1QixZQUFmLENBQTRCZ0IsU0FBNUIsS0FBMENBLFNBQVMsQ0FBQzlFLElBQVYsS0FBbUIsYUFBOUQsSUFDQzBELGFBQWEsSUFBSWdDLGNBQWMsQ0FBQzVCLFlBQWYsQ0FBNEJKLGFBQTVCLENBRGxCLElBRUNFLGlCQUFpQixJQUFJOEIsY0FBYyxDQUFDNUIsWUFBZixDQUE0QkYsaUJBQTVCLENBSHZCLEVBSUU7QUFDRCxVQUFJLENBQUFxRCxtQkFBbUIsU0FBbkIsSUFBQUEsbUJBQW1CLFdBQW5CLFlBQUFBLG1CQUFtQixDQUFFbkUsa0JBQXJCLE1BQTRDLFFBQWhELEVBQTBEO0FBQ3pELGVBQU8sT0FBUDtBQUNBOztBQUNELGFBQU8sb0JBQVA7QUFDQTs7QUFDRCxRQUFJLDJCQUFBZ0MsU0FBUyxDQUFDekUsV0FBVix1R0FBdUJpRixFQUF2Qix1R0FBMkJ1QixhQUEzQiw0RUFBMENNLE9BQTFDLE1BQXVEckMsU0FBUyxDQUFDOUUsSUFBVixLQUFtQixZQUE5RSxFQUE0RjtBQUMzRixhQUFPLFVBQVA7QUFDQTs7QUFDRCxZQUFROEUsU0FBUyxDQUFDOUUsSUFBbEI7QUFDQyxXQUFLLFVBQUw7QUFDQyxlQUFPLFlBQVA7O0FBQ0QsV0FBSyxVQUFMO0FBQ0EsV0FBSyxlQUFMO0FBQ0MsZUFBTyxZQUFQOztBQUNELFdBQUssY0FBTDtBQUNBLFdBQUssb0JBQUw7QUFDQyxlQUFPLGdCQUFQOztBQUNELFdBQUssYUFBTDtBQUNDLGVBQU8sVUFBUDtBQVZGOztBQVlBLFFBQUksMkJBQUE4RSxTQUFTLENBQUN6RSxXQUFWLHVHQUF1QnFDLFFBQXZCLDRFQUFpQ0UsV0FBakMsK0JBQWdEa0MsU0FBUyxDQUFDekUsV0FBMUQsK0VBQWdELHdCQUF1QnFDLFFBQXZFLG9EQUFnRCx3QkFBaUNDLElBQXJGLEVBQTJGO0FBQzFGLGFBQU8sZUFBUDtBQUNBOztBQUNELFdBQU8sT0FBUDtBQUNBLEdBOURNO0FBZ0VQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7QUFDTyxNQUFNeUUsb0JBQW9CLEdBQUcsVUFDbkNDLGtCQURtQyxFQUVuQ3RFLGFBRm1DLEVBR1A7QUFBQTs7QUFDNUIsUUFBTWhELFlBQXlELEdBQUdzSCxrQkFBa0IsQ0FBQ3RILFlBQXJGO0FBQ0EsUUFBSXVILGFBQUo7O0FBQ0EsUUFBSXZILFlBQUosRUFBa0I7QUFDakIsY0FBUUEsWUFBWSxDQUFDeUIsS0FBckI7QUFDQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQzhGLFVBQUFBLGFBQWEsR0FBR3ZILFlBQVksQ0FBQzJCLEtBQWIsQ0FBbUJ6QixPQUFuQztBQUNBOztBQUNEO0FBQ0M7QUFDQSxjQUFJLENBQUFGLFlBQVksU0FBWixJQUFBQSxZQUFZLFdBQVosb0NBQUFBLFlBQVksQ0FBRWtHLE1BQWQsdUdBQXNCaEcsT0FBdEIsZ0ZBQStCdUIsS0FBL0IsZ0RBQUosRUFBOEU7QUFBQTs7QUFDN0U4RixZQUFBQSxhQUFhLDZCQUFHdkgsWUFBWSxDQUFDa0csTUFBYixDQUFvQmhHLE9BQXZCLDJEQUFHLHVCQUE2QnlCLEtBQTdCLENBQW1DekIsT0FBbkQ7QUFDQTtBQUNBOztBQUNGOztBQUNBO0FBQ0E7QUFDQTtBQUNDcUgsVUFBQUEsYUFBYSxHQUFHakksU0FBaEI7QUFuQkY7QUFxQkE7O0FBQ0QsUUFBTWtJLCtCQUErQixHQUFHeEUsYUFBYSxTQUFiLElBQUFBLGFBQWEsV0FBYixJQUFBQSxhQUFhLENBQUV5RSxXQUFmLEdBQTZCbEMsRUFBRSxDQUFDbUMsVUFBaEMsR0FBNkM3RixRQUFRLENBQUMsS0FBRCxDQUE3RjtBQUNBLFFBQU04RixnQkFBZ0IsR0FBRzNFLGFBQWEsU0FBYixJQUFBQSxhQUFhLFdBQWIsSUFBQUEsYUFBYSxDQUFFeUUsV0FBZixHQUE2QkcsS0FBSyxDQUFDckMsRUFBRSxDQUFDc0MsU0FBSixFQUFlLENBQWYsQ0FBbEMsR0FBc0RoRyxRQUFRLENBQUMsS0FBRCxDQUF2RixDQTNCNEIsQ0E2QjVCO0FBQ0E7QUFDQTtBQUNBOztBQUNBLFdBQU9ELGNBQWMsQ0FDcEJrRyxHQUFHLE1BQUgsU0FDSSxDQUNGQyxHQUFHLENBQUNILEtBQUssQ0FBQzNHLG9CQUFvQixDQUFDakIsWUFBRCxhQUFDQSxZQUFELGlEQUFDQSxZQUFZLENBQUVNLFdBQWYscUZBQUMsdUJBQTJCaUYsRUFBNUIsMkRBQUMsdUJBQStCeUMsTUFBaEMsQ0FBckIsRUFBOEQsSUFBOUQsQ0FBTixDQURELEVBRUZDLE1BQU0sQ0FDTCxDQUFDLENBQUNWLGFBREcsRUFFTEEsYUFBYSxJQUFJUSxHQUFHLENBQUNILEtBQUssQ0FBQzNHLG9CQUFvQiwwQkFBQ3NHLGFBQWEsQ0FBQ2pILFdBQWYsb0ZBQUMsc0JBQTJCaUYsRUFBNUIsMkRBQUMsdUJBQStCeUMsTUFBaEMsQ0FBckIsRUFBOEQsSUFBOUQsQ0FBTixDQUZmLEVBR0wsSUFISyxDQUZKLEVBT0ZFLEVBQUUsQ0FBQ0gsR0FBRyxDQUFDUCwrQkFBRCxDQUFKLEVBQXVDRyxnQkFBdkMsQ0FQQSxDQURKLENBRG9CLENBQXJCO0FBYUEsR0FqRE07Ozs7QUFtREEsTUFBTVEsbUJBQW1CLEdBQUcsVUFDbEN6QyxhQURrQyxFQUVsQzBDLDRCQUZrQyxFQUdOO0FBQzVCLFFBQU1yRCxTQUFTLEdBQUlqRCxnQkFBZ0IsQ0FBQzRELGFBQUQsQ0FBaEIsSUFBbUNBLGFBQWEsQ0FBQ3hGLE9BQWxELElBQStEd0YsYUFBakY7QUFDQSxRQUFNMkMsWUFBWSxHQUFHdkUsNkJBQTZCLENBQUNpQixTQUFELENBQTdCLElBQTRDbkIseUJBQXlCLENBQUNtQixTQUFELENBQTFGOztBQUNBLFFBQUksQ0FBQ3NELFlBQUwsRUFBbUI7QUFDbEIsYUFBT3pHLGNBQWMsQ0FBQyxFQUFELENBQXJCO0FBQ0E7O0FBQ0QsUUFBTTBHLGtCQUFrQixHQUFHUixHQUFHLENBQUNDLEdBQUcsQ0FBQ1Esb0JBQW9CLENBQUNGLFlBQUQsQ0FBckIsQ0FBSixFQUEwQ04sR0FBRyxDQUFDcEMsY0FBYyxDQUFDNkMsVUFBZixDQUEwQkgsWUFBMUIsQ0FBRCxDQUE3QyxDQUE5QjtBQUNBLFdBQU96RyxjQUFjLENBQUNxRyxNQUFNLENBQUNLLGtCQUFELEVBQXFCLEVBQXJCLEVBQXlCRiw0QkFBekIsQ0FBUCxDQUFyQjtBQUNBLEdBWE07Ozs7QUFhQSxNQUFNSyxhQUFhLEdBQUcsVUFDNUJsSCw0QkFENEIsRUFFNUJtSCxpQ0FGNEIsRUFHNUI5SSxrQkFINEIsRUFLM0I7QUFBQSxRQURENEIsUUFDQyx1RUFEbUIsS0FDbkI7QUFDRCxRQUFJbUgsV0FBZ0IsR0FBR3pGLGVBQWUsQ0FBQzNCLDRCQUFELEVBQStCM0Isa0JBQS9CLEVBQW1ENEIsUUFBbkQsQ0FBdEM7O0FBQ0EsUUFBSW1ILFdBQVcsS0FBSyxFQUFwQixFQUF3QjtBQUN2QkEsTUFBQUEsV0FBVyxHQUFHckgsY0FBYyxDQUFDb0gsaUNBQUQsRUFBb0M5SSxrQkFBcEMsRUFBd0Q0QixRQUF4RCxDQUE1QjtBQUNBOztBQUNELFdBQU9tSCxXQUFQO0FBQ0EsR0FYTTs7OztBQWFBLE1BQU1DLGdCQUFnQixHQUFHLFVBQVNySCw0QkFBVCxFQUFvRTtBQUFBOztBQUNuRyxRQUFNdkIsWUFBWSxHQUFHdUIsNEJBQTRCLENBQUN2QixZQUFsRDs7QUFDQSxRQUFJQSxZQUFKLGFBQUlBLFlBQUosd0NBQUlBLFlBQVksQ0FBRUUsT0FBbEIsNEVBQUksc0JBQXVCSSxXQUEzQiw2RUFBSSx1QkFBb0NtRCxhQUF4QyxtREFBSSx1QkFBbURDLGNBQXZELEVBQXVFO0FBQ3RFLGFBQU8sT0FBUDtBQUNBOztBQUNELFFBQUkxRCxZQUFKLGFBQUlBLFlBQUoseUNBQUlBLFlBQVksQ0FBRUUsT0FBbEIsNkVBQUksdUJBQXVCSSxXQUEzQiw2RUFBSSx1QkFBb0NtRCxhQUF4QyxtREFBSSx1QkFBbUR3QyxhQUF2RCxFQUFzRTtBQUNyRSxhQUFPLE9BQVA7QUFDQTs7QUFDRCxXQUFPLE1BQVA7QUFDQSxHQVRNOzs7O0FBV0EsTUFBTTRDLG9DQUFvQyxHQUFHLFVBQVNDLFlBQVQsRUFBbUM7QUFDdEYsUUFBTUMsb0JBQTJCLEdBQUcsRUFBcEM7O0FBQ0EsUUFBSUQsWUFBSixFQUFrQjtBQUNqQixVQUFNRSxXQUFXLEdBQUdDLE1BQU0sQ0FBQ0MsSUFBUCxDQUFZSixZQUFaLEVBQTBCSyxNQUExQixDQUFpQyxVQUFTQyxPQUFULEVBQWtCO0FBQ3RFLGVBQU9BLE9BQU8sS0FBSyxnQkFBWixJQUFnQ0EsT0FBTyxDQUFDQyxVQUFSLENBQW1CLGlCQUFuQixDQUF2QztBQUNBLE9BRm1CLENBQXBCOztBQUdBLFdBQUssSUFBSUMsWUFBWSxHQUFHLENBQXhCLEVBQTJCQSxZQUFZLEdBQUdOLFdBQVcsQ0FBQzVELE1BQXRELEVBQThEa0UsWUFBWSxFQUExRSxFQUE4RTtBQUM3RSxZQUFNQyxpQkFBaUIsR0FBRzNILGNBQWMsQ0FBQ1gsb0JBQW9CLENBQUM2SCxZQUFZLENBQUNFLFdBQVcsQ0FBQ00sWUFBRCxDQUFaLENBQWIsQ0FBckIsQ0FBeEM7QUFDQVAsUUFBQUEsb0JBQW9CLENBQUN4RyxJQUFyQixDQUEwQjtBQUN6QmlILFVBQUFBLEdBQUcsRUFBRSxDQUFBRCxpQkFBaUIsU0FBakIsSUFBQUEsaUJBQWlCLFdBQWpCLFlBQUFBLGlCQUFpQixDQUFFRSxPQUFuQixDQUEyQixHQUEzQixPQUFvQyxDQUFDLENBQXJDLEdBQXlDRixpQkFBekMsR0FBNkRBLGlCQUE3RCxhQUE2REEsaUJBQTdELHVCQUE2REEsaUJBQWlCLENBQUVHLEtBQW5CLENBQXlCLEdBQXpCLEVBQThCLENBQTlCLEVBQWlDQSxLQUFqQyxDQUF1QyxHQUF2QyxFQUE0QyxDQUE1QyxDQUR6QztBQUV6QkMsVUFBQUEsS0FBSyxFQUFFSjtBQUZrQixTQUExQjtBQUlBO0FBQ0Q7O0FBQ0QsV0FBT1Isb0JBQVA7QUFDQSxHQWZNOzs7O0FBaUJBLE1BQU1hLGtCQUFrQixHQUFHLFVBQVNiLG9CQUFULEVBQTJDO0FBQzVFLFFBQUlBLG9CQUFvQixDQUFDM0QsTUFBckIsR0FBOEIsQ0FBbEMsRUFBcUM7QUFDcEMsVUFBSXlFLGNBQXNCLEdBQUcsRUFBN0I7QUFDQSxVQUFJQyxnQkFBcUIsR0FBRyxFQUE1QjtBQUNBLFVBQU1DLGlCQUF3QixHQUFHLEVBQWpDOztBQUNBLFdBQUssSUFBSVQsWUFBWSxHQUFHLENBQXhCLEVBQTJCQSxZQUFZLEdBQUdQLG9CQUFvQixDQUFDM0QsTUFBL0QsRUFBdUVrRSxZQUFZLEVBQW5GLEVBQXVGO0FBQ3RGTyxRQUFBQSxjQUFjLEdBQUdkLG9CQUFvQixDQUFDTyxZQUFELENBQXBCLENBQW1DRSxHQUFwRDtBQUNBTSxRQUFBQSxnQkFBZ0IsR0FBR2xJLGNBQWMsQ0FBQ1gsb0JBQW9CLENBQUM4SCxvQkFBb0IsQ0FBQ08sWUFBRCxDQUFwQixDQUFtQ0ssS0FBcEMsQ0FBckIsQ0FBakM7QUFDQUksUUFBQUEsaUJBQWlCLENBQUN4SCxJQUFsQixDQUF1QjtBQUN0QmlILFVBQUFBLEdBQUcsRUFBRUssY0FEaUI7QUFFdEJGLFVBQUFBLEtBQUssRUFBRUc7QUFGZSxTQUF2QjtBQUlBOztBQUNELFVBQU1FLHFCQUEwQixHQUFHLElBQUlDLFNBQUosQ0FBY0YsaUJBQWQsQ0FBbkM7QUFDQUMsTUFBQUEscUJBQXFCLENBQUNFLGdCQUF0QixHQUF5QyxJQUF6QztBQUNBLFVBQU1DLHFCQUEwQixHQUFHSCxxQkFBcUIsQ0FBQ0ksb0JBQXRCLENBQTJDLEdBQTNDLENBQW5DO0FBQ0EsYUFBT0QscUJBQVA7QUFDQSxLQWhCRCxNQWdCTztBQUNOLGFBQU8sSUFBSUYsU0FBSixDQUFjLEVBQWQsRUFBa0JHLG9CQUFsQixDQUF1QyxHQUF2QyxDQUFQO0FBQ0E7QUFDRCxHQXBCTSIsInNvdXJjZVJvb3QiOiIuIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcblx0Z2V0RGlzcGxheU1vZGUsXG5cdFByb3BlcnR5T3JQYXRoLFxuXHREaXNwbGF5TW9kZSxcblx0Z2V0QmluZGluZ1dpdGhVbml0T3JDdXJyZW5jeSxcblx0Zm9ybWF0V2l0aFR5cGVJbmZvcm1hdGlvblxufSBmcm9tIFwic2FwL2ZlL2NvcmUvdGVtcGxhdGluZy9VSUZvcm1hdHRlcnNcIjtcbmltcG9ydCB7XG5cdERhdGFNb2RlbE9iamVjdFBhdGgsXG5cdGVuaGFuY2VEYXRhTW9kZWxQYXRoLFxuXHRnZXRQYXRoUmVsYXRpdmVMb2NhdGlvbixcblx0Z2V0Q29udGV4dFJlbGF0aXZlVGFyZ2V0T2JqZWN0UGF0aFxufSBmcm9tIFwic2FwL2ZlL2NvcmUvdGVtcGxhdGluZy9EYXRhTW9kZWxQYXRoSGVscGVyXCI7XG5pbXBvcnQgeyBQcm9wZXJ0eSB9IGZyb20gXCJAc2FwLXV4L2Fubm90YXRpb24tY29udmVydGVyXCI7XG5pbXBvcnQge1xuXHRFeHByZXNzaW9uLFxuXHRhbm5vdGF0aW9uRXhwcmVzc2lvbixcblx0Zm9ybWF0UmVzdWx0LFxuXHR0cmFuc2Zvcm1SZWN1cnNpdmVseSxcblx0QmluZGluZ0V4cHJlc3Npb25FeHByZXNzaW9uLFxuXHRCaW5kaW5nRXhwcmVzc2lvbixcblx0Y29tcGlsZUJpbmRpbmcsXG5cdGNvbnN0YW50LFxuXHRiaW5kaW5nRXhwcmVzc2lvbixcblx0YW5kLFxuXHRpZkVsc2UsXG5cdG5vdCxcblx0Q29tcGxleFR5cGVFeHByZXNzaW9uLFxuXHRlcXVhbCxcblx0b3Jcbn0gZnJvbSBcInNhcC9mZS9jb3JlL2hlbHBlcnMvQmluZGluZ0V4cHJlc3Npb25cIjtcbmltcG9ydCB7XG5cdGlzUGF0aEV4cHJlc3Npb24sXG5cdGdldEFzc29jaWF0ZWRVbml0UHJvcGVydHksXG5cdGdldEFzc29jaWF0ZWRDdXJyZW5jeVByb3BlcnR5LFxuXHRpc1Byb3BlcnR5LFxuXHRoYXNWYWx1ZUhlbHAsXG5cdGdldEFzc29jaWF0ZWRUZXh0UHJvcGVydHlQYXRoXG59IGZyb20gXCJzYXAvZmUvY29yZS90ZW1wbGF0aW5nL1Byb3BlcnR5SGVscGVyXCI7XG5pbXBvcnQgdmFsdWVGb3JtYXR0ZXJzIGZyb20gXCJzYXAvZmUvY29yZS9mb3JtYXR0ZXJzL1ZhbHVlRm9ybWF0dGVyXCI7XG5pbXBvcnQgKiBhcyBQcm9wZXJ0eUhlbHBlciBmcm9tIFwic2FwL2ZlL2NvcmUvdGVtcGxhdGluZy9Qcm9wZXJ0eUhlbHBlclwiO1xuaW1wb3J0IHsgaXNSZWFkT25seUV4cHJlc3Npb24gfSBmcm9tIFwic2FwL2ZlL2NvcmUvdGVtcGxhdGluZy9GaWVsZENvbnRyb2xIZWxwZXJcIjtcbmltcG9ydCB7IERhdGFGaWVsZEFic3RyYWN0VHlwZXMsIERhdGFGaWVsZFdpdGhVcmwsIERhdGFQb2ludFR5cGVUeXBlcywgVUlBbm5vdGF0aW9uVHlwZXMgfSBmcm9tIFwiQHNhcC11eC92b2NhYnVsYXJpZXMtdHlwZXNcIjtcbmltcG9ydCB7IFVJIH0gZnJvbSBcInNhcC9mZS9jb3JlL2NvbnZlcnRlcnMvaGVscGVycy9CaW5kaW5nSGVscGVyXCI7XG5pbXBvcnQgSlNPTk1vZGVsIGZyb20gXCJzYXAvdWkvbW9kZWwvanNvbi9KU09OTW9kZWxcIjtcblxuZXhwb3J0IHR5cGUgRmllbGRGb3JtYXRPcHRpb25zID0gUGFydGlhbDx7XG5cdHZhbHVlRm9ybWF0OiBTdHJpbmc7XG5cdHRleHRBbGlnbk1vZGU6IFN0cmluZztcblx0ZGlzcGxheU1vZGU6IERpc3BsYXlNb2RlO1xuXHRtZWFzdXJlRGlzcGxheU1vZGU6IFN0cmluZztcblx0dGV4dExpbmVzRWRpdDogU3RyaW5nO1xuXHR0ZXh0TWF4TGluZXM6IFN0cmluZztcblx0c2hvd0VtcHR5SW5kaWNhdG9yOiBib29sZWFuO1xuXHRzZW1hbnRpY0tleVN0eWxlOiBTdHJpbmc7XG5cdHNob3dJY29uVXJsOiBib29sZWFuO1xuXHRpc0FuYWx5dGljczogYm9vbGVhbjtcblx0aGFzRHJhZnRJbmRpY2F0b3I6IGJvb2xlYW47XG5cdHNlbWFudGlja2V5czogc3RyaW5nW107XG5cdHJldHJpZXZlVGV4dEZyb21WYWx1ZUxpc3Q6IGJvb2xlYW47XG5cdGlzQ3VycmVuY3lBbGlnbmVkOiBib29sZWFuO1xufT47XG5cbmV4cG9ydCB0eXBlIEVkaXRTdHlsZSA9XG5cdHwgXCJJbnB1dFdpdGhWYWx1ZUhlbHBcIlxuXHR8IFwiVGV4dEFyZWFcIlxuXHR8IFwiRmlsZVwiXG5cdHwgXCJEYXRlUGlja2VyXCJcblx0fCBcIlRpbWVQaWNrZXJcIlxuXHR8IFwiRGF0ZVRpbWVQaWNrZXJcIlxuXHR8IFwiQ2hlY2tCb3hcIlxuXHR8IFwiSW5wdXRXaXRoVW5pdFwiXG5cdHwgXCJJbnB1dFwiXG5cdHwgXCJSYXRpbmdJbmRpY2F0b3JcIjtcblxuZXhwb3J0IHR5cGUgRGlzcGxheVN0eWxlID1cblx0fCBcIlRleHRcIlxuXHR8IFwiTWRjRmllbGRXaXRoVmFsdWVIZWxwXCJcblx0fCBcIkF2YXRhclwiXG5cdHwgXCJGaWxlXCJcblx0fCBcIkRhdGFQb2ludFwiXG5cdHwgXCJDb250YWN0XCJcblx0fCBcIkJ1dHRvblwiXG5cdHwgXCJMaW5rXCJcblx0fCBcIk9iamVjdFN0YXR1c1wiXG5cdHwgXCJBbW91bnRXaXRoQ3VycmVuY3lcIlxuXHR8IFwiU2VtYW50aWNLZXlXaXRoRHJhZnRJbmRpY2F0b3JcIlxuXHR8IFwiT2JqZWN0SWRlbnRpZmllclwiXG5cdHwgXCJMYWJlbFNlbWFudGljS2V5XCJcblx0fCBcIkxpbmtXaXRoUXVpY2tWaWV3Rm9ybVwiXG5cdHwgXCJMaW5rV3JhcHBlclwiXG5cdHwgXCJFeHBhbmRhYmxlVGV4dFwiO1xuXG4vKipcbiAqIFJlY3Vyc2l2ZWx5IGFkZCB0aGUgdGV4dCBhcnJhbmdlbWVudCB0byBhIGJpbmRpbmcgZXhwcmVzc2lvbi5cbiAqXG4gKiBAcGFyYW0gYmluZGluZ0V4cHJlc3Npb24gVGhlIGJpbmRpbmcgZXhwcmVzc2lvbiB0byBiZSBlbmhhbmNlZFxuICogQHBhcmFtIGZ1bGxDb250ZXh0UGF0aCBUaGUgY3VycmVudCBjb250ZXh0IHBhdGggd2UncmUgb24gKHRvIHByb3Blcmx5IHJlc29sdmUgdGhlIHRleHQgYXJyYW5nZW1lbnQgcHJvcGVydGllcylcbiAqIEByZXR1cm5zIEFuIHVwZGF0ZWQgZXhwcmVzc2lvbiBjb250YWluaW5nIHRoZSB0ZXh0IGFycmFuZ2VtZW50IGJpbmRpbmcuXG4gKi9cbmV4cG9ydCBjb25zdCBhZGRUZXh0QXJyYW5nZW1lbnRUb0JpbmRpbmdFeHByZXNzaW9uID0gZnVuY3Rpb24oXG5cdGJpbmRpbmdFeHByZXNzaW9uOiBFeHByZXNzaW9uPGFueT4sXG5cdGZ1bGxDb250ZXh0UGF0aDogRGF0YU1vZGVsT2JqZWN0UGF0aFxuKTogRXhwcmVzc2lvbjxhbnk+IHtcblx0cmV0dXJuIHRyYW5zZm9ybVJlY3Vyc2l2ZWx5KGJpbmRpbmdFeHByZXNzaW9uLCBcIkJpbmRpbmdcIiwgKGV4cHJlc3Npb246IEJpbmRpbmdFeHByZXNzaW9uRXhwcmVzc2lvbjxhbnk+KSA9PiB7XG5cdFx0bGV0IG91dEV4cHJlc3Npb246IEV4cHJlc3Npb248YW55PiA9IGV4cHJlc3Npb247XG5cdFx0aWYgKGV4cHJlc3Npb24ubW9kZWxOYW1lID09PSB1bmRlZmluZWQpIHtcblx0XHRcdC8vIEluIGNhc2Ugb2YgZGVmYXVsdCBtb2RlbCB3ZSB0aGVuIG5lZWQgdG8gcmVzb2x2ZSB0aGUgdGV4dCBhcnJhbmdlbWVudCBwcm9wZXJ0eVxuXHRcdFx0Y29uc3Qgb1Byb3BlcnR5RGF0YU1vZGVsUGF0aCA9IGVuaGFuY2VEYXRhTW9kZWxQYXRoKGZ1bGxDb250ZXh0UGF0aCwgZXhwcmVzc2lvbi5wYXRoKTtcblx0XHRcdG91dEV4cHJlc3Npb24gPSBnZXRCaW5kaW5nV2l0aFRleHRBcnJhbmdlbWVudChvUHJvcGVydHlEYXRhTW9kZWxQYXRoLCBleHByZXNzaW9uKTtcblx0XHR9XG5cdFx0cmV0dXJuIG91dEV4cHJlc3Npb247XG5cdH0pO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldEJpbmRpbmdXaXRoVGV4dEFycmFuZ2VtZW50ID0gZnVuY3Rpb24oXG5cdG9Qcm9wZXJ0eURhdGFNb2RlbFBhdGg6IERhdGFNb2RlbE9iamVjdFBhdGgsXG5cdHByb3BlcnR5QmluZGluZ0V4cHJlc3Npb246IEV4cHJlc3Npb248c3RyaW5nPixcblx0ZmllbGRGb3JtYXRPcHRpb25zPzogRmllbGRGb3JtYXRPcHRpb25zXG4pOiBFeHByZXNzaW9uPHN0cmluZz4ge1xuXHRjb25zdCB0YXJnZXREaXNwbGF5TW9kZU92ZXJyaWRlID0gZmllbGRGb3JtYXRPcHRpb25zPy5kaXNwbGF5TW9kZTtcblx0bGV0IG91dEV4cHJlc3Npb24gPSBwcm9wZXJ0eUJpbmRpbmdFeHByZXNzaW9uO1xuXHRjb25zdCBvUHJvcGVydHlEZWZpbml0aW9uID1cblx0XHRvUHJvcGVydHlEYXRhTW9kZWxQYXRoLnRhcmdldE9iamVjdC50eXBlID09PSBcIlByb3BlcnR5UGF0aFwiXG5cdFx0XHQ/IChvUHJvcGVydHlEYXRhTW9kZWxQYXRoLnRhcmdldE9iamVjdC4kdGFyZ2V0IGFzIFByb3BlcnR5KVxuXHRcdFx0OiAob1Byb3BlcnR5RGF0YU1vZGVsUGF0aC50YXJnZXRPYmplY3QgYXMgUHJvcGVydHkpO1xuXHRjb25zdCB0YXJnZXREaXNwbGF5TW9kZSA9IHRhcmdldERpc3BsYXlNb2RlT3ZlcnJpZGUgfHwgZ2V0RGlzcGxheU1vZGUob1Byb3BlcnR5RGVmaW5pdGlvbiwgb1Byb3BlcnR5RGF0YU1vZGVsUGF0aCk7XG5cdGNvbnN0IGNvbW1vblRleHQgPSBvUHJvcGVydHlEZWZpbml0aW9uLmFubm90YXRpb25zPy5Db21tb24/LlRleHQ7XG5cdGNvbnN0IHJlbGF0aXZlTG9jYXRpb24gPSBnZXRQYXRoUmVsYXRpdmVMb2NhdGlvbihcblx0XHRvUHJvcGVydHlEYXRhTW9kZWxQYXRoLmNvbnRleHRMb2NhdGlvbixcblx0XHRvUHJvcGVydHlEYXRhTW9kZWxQYXRoLm5hdmlnYXRpb25Qcm9wZXJ0aWVzXG5cdCkubWFwKG5wID0+IG5wLm5hbWUpO1xuXHRwcm9wZXJ0eUJpbmRpbmdFeHByZXNzaW9uID0gZm9ybWF0V2l0aFR5cGVJbmZvcm1hdGlvbihvUHJvcGVydHlEZWZpbml0aW9uLCBwcm9wZXJ0eUJpbmRpbmdFeHByZXNzaW9uKTtcblx0aWYgKHRhcmdldERpc3BsYXlNb2RlICE9PSBcIlZhbHVlXCIgJiYgY29tbW9uVGV4dCkge1xuXHRcdHN3aXRjaCAodGFyZ2V0RGlzcGxheU1vZGUpIHtcblx0XHRcdGNhc2UgXCJEZXNjcmlwdGlvblwiOlxuXHRcdFx0XHRvdXRFeHByZXNzaW9uID0gYW5ub3RhdGlvbkV4cHJlc3Npb24oY29tbW9uVGV4dCwgcmVsYXRpdmVMb2NhdGlvbikgYXMgRXhwcmVzc2lvbjxzdHJpbmc+O1xuXHRcdFx0XHRicmVhaztcblx0XHRcdGNhc2UgXCJEZXNjcmlwdGlvblZhbHVlXCI6XG5cdFx0XHRcdG91dEV4cHJlc3Npb24gPSBmb3JtYXRSZXN1bHQoXG5cdFx0XHRcdFx0W2Fubm90YXRpb25FeHByZXNzaW9uKGNvbW1vblRleHQsIHJlbGF0aXZlTG9jYXRpb24pIGFzIEV4cHJlc3Npb248c3RyaW5nPiwgcHJvcGVydHlCaW5kaW5nRXhwcmVzc2lvbl0sXG5cdFx0XHRcdFx0dmFsdWVGb3JtYXR0ZXJzLmZvcm1hdFdpdGhCcmFja2V0c1xuXHRcdFx0XHQpO1xuXHRcdFx0XHRicmVhaztcblx0XHRcdGNhc2UgXCJWYWx1ZURlc2NyaXB0aW9uXCI6XG5cdFx0XHRcdG91dEV4cHJlc3Npb24gPSBmb3JtYXRSZXN1bHQoXG5cdFx0XHRcdFx0W3Byb3BlcnR5QmluZGluZ0V4cHJlc3Npb24sIGFubm90YXRpb25FeHByZXNzaW9uKGNvbW1vblRleHQsIHJlbGF0aXZlTG9jYXRpb24pIGFzIEV4cHJlc3Npb248c3RyaW5nPl0sXG5cdFx0XHRcdFx0dmFsdWVGb3JtYXR0ZXJzLmZvcm1hdFdpdGhCcmFja2V0c1xuXHRcdFx0XHQpO1xuXHRcdFx0XHRicmVhaztcblx0XHR9XG5cdH1cblx0cmV0dXJuIG91dEV4cHJlc3Npb247XG59O1xuXG5leHBvcnQgY29uc3QgZm9ybWF0VmFsdWVSZWN1cnNpdmVseSA9IGZ1bmN0aW9uKGJpbmRpbmdFeHByZXNzaW9uOiBFeHByZXNzaW9uPGFueT4sIGZ1bGxDb250ZXh0UGF0aDogRGF0YU1vZGVsT2JqZWN0UGF0aCk6IEV4cHJlc3Npb248YW55PiB7XG5cdHJldHVybiB0cmFuc2Zvcm1SZWN1cnNpdmVseShiaW5kaW5nRXhwcmVzc2lvbiwgXCJCaW5kaW5nXCIsIChleHByZXNzaW9uOiBCaW5kaW5nRXhwcmVzc2lvbkV4cHJlc3Npb248YW55PikgPT4ge1xuXHRcdGxldCBvdXRFeHByZXNzaW9uOiBFeHByZXNzaW9uPGFueT4gPSBleHByZXNzaW9uO1xuXHRcdGlmIChleHByZXNzaW9uLm1vZGVsTmFtZSA9PT0gdW5kZWZpbmVkKSB7XG5cdFx0XHQvLyBJbiBjYXNlIG9mIGRlZmF1bHQgbW9kZWwgd2UgdGhlbiBuZWVkIHRvIHJlc29sdmUgdGhlIHRleHQgYXJyYW5nZW1lbnQgcHJvcGVydHlcblx0XHRcdGNvbnN0IG9Qcm9wZXJ0eURhdGFNb2RlbFBhdGggPSBlbmhhbmNlRGF0YU1vZGVsUGF0aChmdWxsQ29udGV4dFBhdGgsIGV4cHJlc3Npb24ucGF0aCk7XG5cdFx0XHRvdXRFeHByZXNzaW9uID0gZm9ybWF0V2l0aFR5cGVJbmZvcm1hdGlvbihvUHJvcGVydHlEYXRhTW9kZWxQYXRoLnRhcmdldE9iamVjdCwgZXhwcmVzc2lvbik7XG5cdFx0fVxuXHRcdHJldHVybiBvdXRFeHByZXNzaW9uO1xuXHR9KTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRUZXh0QmluZGluZyA9IGZ1bmN0aW9uKFxuXHRvUHJvcGVydHlEYXRhTW9kZWxPYmplY3RQYXRoOiBEYXRhTW9kZWxPYmplY3RQYXRoLFxuXHRmaWVsZEZvcm1hdE9wdGlvbnM6IEZpZWxkRm9ybWF0T3B0aW9ucyxcblx0YXNPYmplY3Q6IGJvb2xlYW4gPSBmYWxzZVxuKTogRXhwcmVzc2lvbjxzdHJpbmc+IHwgQmluZGluZ0V4cHJlc3Npb248c3RyaW5nPiB7XG5cdGlmIChcblx0XHRvUHJvcGVydHlEYXRhTW9kZWxPYmplY3RQYXRoLnRhcmdldE9iamVjdD8uJFR5cGUgPT09IFwiY29tLnNhcC52b2NhYnVsYXJpZXMuVUkudjEuRGF0YUZpZWxkXCIgfHxcblx0XHRvUHJvcGVydHlEYXRhTW9kZWxPYmplY3RQYXRoLnRhcmdldE9iamVjdD8uJFR5cGUgPT09IFwiY29tLnNhcC52b2NhYnVsYXJpZXMuVUkudjEuRGF0YVBvaW50VHlwZVwiIHx8XG5cdFx0b1Byb3BlcnR5RGF0YU1vZGVsT2JqZWN0UGF0aC50YXJnZXRPYmplY3Q/LiRUeXBlID09PSBcImNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLkRhdGFGaWVsZFdpdGhOYXZpZ2F0aW9uUGF0aFwiIHx8XG5cdFx0b1Byb3BlcnR5RGF0YU1vZGVsT2JqZWN0UGF0aC50YXJnZXRPYmplY3Q/LiRUeXBlID09PSBcImNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLkRhdGFGaWVsZFdpdGhVcmxcIlxuXHQpIHtcblx0XHQvLyBJZiB0aGVyZSBpcyBubyByZXNvbHZlZCBwcm9wZXJ0eSwgdGhlIHZhbHVlIGlzIHJldHVybmVkIGFzIGEgY29uc3RhbnRcblx0XHRjb25zdCBmaWVsZFZhbHVlID0gb1Byb3BlcnR5RGF0YU1vZGVsT2JqZWN0UGF0aC50YXJnZXRPYmplY3QuVmFsdWUgfHwgXCJcIjtcblx0XHRyZXR1cm4gY29tcGlsZUJpbmRpbmcoY29uc3RhbnQoZmllbGRWYWx1ZSkpO1xuXHR9XG5cdGlmIChpc1BhdGhFeHByZXNzaW9uKG9Qcm9wZXJ0eURhdGFNb2RlbE9iamVjdFBhdGgudGFyZ2V0T2JqZWN0KSAmJiBvUHJvcGVydHlEYXRhTW9kZWxPYmplY3RQYXRoLnRhcmdldE9iamVjdC4kdGFyZ2V0KSB7XG5cdFx0Y29uc3Qgb05hdlBhdGggPSBvUHJvcGVydHlEYXRhTW9kZWxPYmplY3RQYXRoLnRhcmdldEVudGl0eVR5cGUucmVzb2x2ZVBhdGgob1Byb3BlcnR5RGF0YU1vZGVsT2JqZWN0UGF0aC50YXJnZXRPYmplY3QucGF0aCwgdHJ1ZSk7XG5cdFx0b1Byb3BlcnR5RGF0YU1vZGVsT2JqZWN0UGF0aC50YXJnZXRPYmplY3QgPSBvTmF2UGF0aC50YXJnZXQ7XG5cdFx0b05hdlBhdGgudmlzaXRlZE9iamVjdHMuZm9yRWFjaCgob05hdk9iajogYW55KSA9PiB7XG5cdFx0XHRpZiAob05hdk9iaj8uX3R5cGUgPT09IFwiTmF2aWdhdGlvblByb3BlcnR5XCIpIHtcblx0XHRcdFx0b1Byb3BlcnR5RGF0YU1vZGVsT2JqZWN0UGF0aC5uYXZpZ2F0aW9uUHJvcGVydGllcy5wdXNoKG9OYXZPYmopO1xuXHRcdFx0fVxuXHRcdH0pO1xuXHR9XG5cdGNvbnN0IG9CaW5kaW5nRXhwcmVzc2lvbiA9IGJpbmRpbmdFeHByZXNzaW9uKGdldENvbnRleHRSZWxhdGl2ZVRhcmdldE9iamVjdFBhdGgob1Byb3BlcnR5RGF0YU1vZGVsT2JqZWN0UGF0aCkpO1xuXHRsZXQgb1RhcmdldEJpbmRpbmc7XG5cdGlmIChcblx0XHRvUHJvcGVydHlEYXRhTW9kZWxPYmplY3RQYXRoLnRhcmdldE9iamVjdD8uYW5ub3RhdGlvbnM/Lk1lYXN1cmVzPy5Vbml0IHx8XG5cdFx0b1Byb3BlcnR5RGF0YU1vZGVsT2JqZWN0UGF0aC50YXJnZXRPYmplY3Q/LmFubm90YXRpb25zPy5NZWFzdXJlcz8uSVNPQ3VycmVuY3lcblx0KSB7XG5cdFx0b1RhcmdldEJpbmRpbmcgPSBnZXRCaW5kaW5nV2l0aFVuaXRPckN1cnJlbmN5KG9Qcm9wZXJ0eURhdGFNb2RlbE9iamVjdFBhdGgsIG9CaW5kaW5nRXhwcmVzc2lvbik7XG5cdFx0aWYgKGZpZWxkRm9ybWF0T3B0aW9ucz8ubWVhc3VyZURpc3BsYXlNb2RlID09PSBcIkhpZGRlblwiKSB7XG5cdFx0XHQvLyBUT0RPOiBSZWZhY3RvciBvbmNlIHR5cGVzIGFyZSBsZXNzIGdlbmVyaWMgaGVyZVxuXHRcdFx0KG9UYXJnZXRCaW5kaW5nIGFzIENvbXBsZXhUeXBlRXhwcmVzc2lvbjxTdHJpbmc+KS5mb3JtYXRPcHRpb25zID0ge1xuXHRcdFx0XHQuLi4ob1RhcmdldEJpbmRpbmcgYXMgQ29tcGxleFR5cGVFeHByZXNzaW9uPFN0cmluZz4pLmZvcm1hdE9wdGlvbnMsXG5cdFx0XHRcdHNob3dNZWFzdXJlOiBmYWxzZVxuXHRcdFx0fTtcblx0XHR9XG5cdH0gZWxzZSB7XG5cdFx0b1RhcmdldEJpbmRpbmcgPSBnZXRCaW5kaW5nV2l0aFRleHRBcnJhbmdlbWVudChvUHJvcGVydHlEYXRhTW9kZWxPYmplY3RQYXRoLCBvQmluZGluZ0V4cHJlc3Npb24sIGZpZWxkRm9ybWF0T3B0aW9ucyk7XG5cdH1cblx0aWYgKGFzT2JqZWN0KSB7XG5cdFx0cmV0dXJuIG9UYXJnZXRCaW5kaW5nO1xuXHR9XG5cdC8vIFdlIGRvbid0IGluY2x1ZGUgJCRub3BhdGNoIGFuZCBwYXJzZUtlZXBFbXB0eVN0cmluZyBhcyB0aGV5IG1ha2Ugbm8gc2Vuc2UgaW4gdGhlIHRleHQgYmluZGluZyBjYXNlXG5cdHJldHVybiBjb21waWxlQmluZGluZyhvVGFyZ2V0QmluZGluZyk7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0VmFsdWVCaW5kaW5nID0gZnVuY3Rpb24oXG5cdG9Qcm9wZXJ0eURhdGFNb2RlbE9iamVjdFBhdGg6IERhdGFNb2RlbE9iamVjdFBhdGgsXG5cdGZpZWxkRm9ybWF0T3B0aW9uczogRmllbGRGb3JtYXRPcHRpb25zLFxuXHRpZ25vcmVVbml0OiBib29sZWFuID0gZmFsc2UsXG5cdGlnbm9yZUZvcm1hdHRpbmc6IGJvb2xlYW4gPSBmYWxzZSxcblx0YmluZGluZ1BhcmFtZXRlcnM/OiBvYmplY3QsXG5cdHRhcmdldFR5cGVBbnk/OiBib29sZWFuLFxuXHRzaG93TWVhc3VyZU9ubHk6IGJvb2xlYW4gPSBmYWxzZVxuKTogQmluZGluZ0V4cHJlc3Npb248c3RyaW5nPiB7XG5cdGlmIChpc1BhdGhFeHByZXNzaW9uKG9Qcm9wZXJ0eURhdGFNb2RlbE9iamVjdFBhdGgudGFyZ2V0T2JqZWN0KSAmJiBvUHJvcGVydHlEYXRhTW9kZWxPYmplY3RQYXRoLnRhcmdldE9iamVjdC4kdGFyZ2V0KSB7XG5cdFx0Y29uc3Qgb05hdlBhdGggPSBvUHJvcGVydHlEYXRhTW9kZWxPYmplY3RQYXRoLnRhcmdldEVudGl0eVR5cGUucmVzb2x2ZVBhdGgob1Byb3BlcnR5RGF0YU1vZGVsT2JqZWN0UGF0aC50YXJnZXRPYmplY3QucGF0aCwgdHJ1ZSk7XG5cdFx0b1Byb3BlcnR5RGF0YU1vZGVsT2JqZWN0UGF0aC50YXJnZXRPYmplY3QgPSBvTmF2UGF0aC50YXJnZXQ7XG5cdFx0b05hdlBhdGgudmlzaXRlZE9iamVjdHMuZm9yRWFjaCgob05hdk9iajogYW55KSA9PiB7XG5cdFx0XHRpZiAob05hdk9iaiAmJiBvTmF2T2JqLl90eXBlID09PSBcIk5hdmlnYXRpb25Qcm9wZXJ0eVwiKSB7XG5cdFx0XHRcdG9Qcm9wZXJ0eURhdGFNb2RlbE9iamVjdFBhdGgubmF2aWdhdGlvblByb3BlcnRpZXMucHVzaChvTmF2T2JqKTtcblx0XHRcdH1cblx0XHR9KTtcblx0fVxuXG5cdGNvbnN0IHRhcmdldE9iamVjdCA9IG9Qcm9wZXJ0eURhdGFNb2RlbE9iamVjdFBhdGgudGFyZ2V0T2JqZWN0O1xuXHRpZiAoaXNQcm9wZXJ0eSh0YXJnZXRPYmplY3QpKSB7XG5cdFx0bGV0IG9CaW5kaW5nRXhwcmVzc2lvbjogQmluZGluZ0V4cHJlc3Npb25FeHByZXNzaW9uPHN0cmluZz4gPSBiaW5kaW5nRXhwcmVzc2lvbihcblx0XHRcdGdldENvbnRleHRSZWxhdGl2ZVRhcmdldE9iamVjdFBhdGgob1Byb3BlcnR5RGF0YU1vZGVsT2JqZWN0UGF0aClcblx0XHQpIGFzIEJpbmRpbmdFeHByZXNzaW9uRXhwcmVzc2lvbjxzdHJpbmc+O1xuXHRcdGlmICh0YXJnZXRPYmplY3QuYW5ub3RhdGlvbnM/LkNvbW11bmljYXRpb24/LklzRW1haWxBZGRyZXNzKSB7XG5cdFx0XHRvQmluZGluZ0V4cHJlc3Npb24udHlwZSA9IFwic2FwLmZlLmNvcmUudHlwZS5FbWFpbFwiO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRjb25zdCBvUHJvcGVydHlVbml0ID0gZ2V0QXNzb2NpYXRlZFVuaXRQcm9wZXJ0eShvUHJvcGVydHlEYXRhTW9kZWxPYmplY3RQYXRoLnRhcmdldE9iamVjdCk7XG5cdFx0XHRjb25zdCBvUHJvcGVydHlDdXJyZW5jeSA9IGdldEFzc29jaWF0ZWRDdXJyZW5jeVByb3BlcnR5KG9Qcm9wZXJ0eURhdGFNb2RlbE9iamVjdFBhdGgudGFyZ2V0T2JqZWN0KTtcblx0XHRcdGlmICghaWdub3JlVW5pdCAmJiAob1Byb3BlcnR5VW5pdCB8fCBvUHJvcGVydHlDdXJyZW5jeSkpIHtcblx0XHRcdFx0b0JpbmRpbmdFeHByZXNzaW9uID0gZ2V0QmluZGluZ1dpdGhVbml0T3JDdXJyZW5jeShvUHJvcGVydHlEYXRhTW9kZWxPYmplY3RQYXRoLCBvQmluZGluZ0V4cHJlc3Npb24pIGFzIGFueTtcblx0XHRcdFx0aWYgKFxuXHRcdFx0XHRcdChvUHJvcGVydHlVbml0ICYmICFoYXNWYWx1ZUhlbHAob1Byb3BlcnR5VW5pdCkpIHx8XG5cdFx0XHRcdFx0KG9Qcm9wZXJ0eUN1cnJlbmN5ICYmICFoYXNWYWx1ZUhlbHAob1Byb3BlcnR5Q3VycmVuY3kpKSB8fFxuXHRcdFx0XHRcdGZpZWxkRm9ybWF0T3B0aW9ucz8ubWVhc3VyZURpc3BsYXlNb2RlID09PSBcIkhpZGRlblwiXG5cdFx0XHRcdCkge1xuXHRcdFx0XHRcdC8vIElmIHRoZXJlIGlzIGEgdW5pdCBvciBjdXJyZW5jeSB3aXRob3V0IGEgdmFsdWUgaGVscCwgb3IgaW4gY2FzZSB0aGUgY3VycmVuY3kgc2hvdWxkIGJlIGV4cGxpY2l0bHkgaGlkZGVuLFxuXHRcdFx0XHRcdC8vIHdlIG5lZWQgdG8gY29uZmlndXJlIHRoZSBiaW5kaW5nIHRvIG5vdCBzaG93IHRoZSBtZWFzdXJlLCBvdGhlcndpc2UgaXQncyBuZWVkZWQgZm9yIHRoZSBtZGMgZmllbGRcblx0XHRcdFx0XHRpZiAoIW9CaW5kaW5nRXhwcmVzc2lvbi5mb3JtYXRPcHRpb25zKSB7XG5cdFx0XHRcdFx0XHRvQmluZGluZ0V4cHJlc3Npb24uZm9ybWF0T3B0aW9ucyA9IHt9O1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRpZiAoc2hvd01lYXN1cmVPbmx5KSB7XG5cdFx0XHRcdFx0XHRvQmluZGluZ0V4cHJlc3Npb24uZm9ybWF0T3B0aW9ucy5zaG93TnVtYmVyID0gZmFsc2U7XG5cdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdG9CaW5kaW5nRXhwcmVzc2lvbi5mb3JtYXRPcHRpb25zLnNob3dNZWFzdXJlID0gZmFsc2U7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRvQmluZGluZ0V4cHJlc3Npb24gPSBmb3JtYXRXaXRoVHlwZUluZm9ybWF0aW9uKHRhcmdldE9iamVjdCwgb0JpbmRpbmdFeHByZXNzaW9uKSBhcyBCaW5kaW5nRXhwcmVzc2lvbkV4cHJlc3Npb248c3RyaW5nPjtcblx0XHRcdFx0aWYgKG9CaW5kaW5nRXhwcmVzc2lvbi50eXBlID09PSBcInNhcC51aS5tb2RlbC5vZGF0YS50eXBlLlN0cmluZ1wiKSB7XG5cdFx0XHRcdFx0b0JpbmRpbmdFeHByZXNzaW9uLmZvcm1hdE9wdGlvbnMgPSB7XG5cdFx0XHRcdFx0XHRwYXJzZUtlZXBzRW1wdHlTdHJpbmc6IHRydWVcblx0XHRcdFx0XHR9O1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXHRcdGlmIChpZ25vcmVGb3JtYXR0aW5nKSB7XG5cdFx0XHRkZWxldGUgb0JpbmRpbmdFeHByZXNzaW9uLmZvcm1hdE9wdGlvbnM7XG5cdFx0XHRkZWxldGUgb0JpbmRpbmdFeHByZXNzaW9uLmNvbnN0cmFpbnRzO1xuXHRcdFx0ZGVsZXRlIG9CaW5kaW5nRXhwcmVzc2lvbi50eXBlO1xuXHRcdH1cblx0XHRpZiAoYmluZGluZ1BhcmFtZXRlcnMpIHtcblx0XHRcdG9CaW5kaW5nRXhwcmVzc2lvbi5wYXJhbWV0ZXJzID0gYmluZGluZ1BhcmFtZXRlcnM7XG5cdFx0fVxuXHRcdGlmICh0YXJnZXRUeXBlQW55KSB7XG5cdFx0XHRvQmluZGluZ0V4cHJlc3Npb24udGFyZ2V0VHlwZSA9IFwiYW55XCI7XG5cdFx0fVxuXHRcdHJldHVybiBjb21waWxlQmluZGluZyhvQmluZGluZ0V4cHJlc3Npb24pO1xuXHR9IGVsc2Uge1xuXHRcdGlmIChcblx0XHRcdHRhcmdldE9iamVjdD8uJFR5cGUgPT09IFVJQW5ub3RhdGlvblR5cGVzLkRhdGFGaWVsZFdpdGhVcmwgfHxcblx0XHRcdHRhcmdldE9iamVjdD8uJFR5cGUgPT09IFVJQW5ub3RhdGlvblR5cGVzLkRhdGFGaWVsZFdpdGhOYXZpZ2F0aW9uUGF0aFxuXHRcdCkge1xuXHRcdFx0cmV0dXJuIGNvbXBpbGVCaW5kaW5nKGFubm90YXRpb25FeHByZXNzaW9uKCh0YXJnZXRPYmplY3QgYXMgRGF0YUZpZWxkV2l0aFVybCkuVmFsdWUpKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0cmV0dXJuIFwiXCI7XG5cdFx0fVxuXHR9XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0VW5pdEJpbmRpbmcgPSBmdW5jdGlvbihvUHJvcGVydHlEYXRhTW9kZWxPYmplY3RQYXRoOiBEYXRhTW9kZWxPYmplY3RQYXRoKTogQmluZGluZ0V4cHJlc3Npb248c3RyaW5nPiB7XG5cdGNvbnN0IG9Qcm9wZXJ0eURlZmluaXRpb24gPSBvUHJvcGVydHlEYXRhTW9kZWxPYmplY3RQYXRoLnRhcmdldE9iamVjdCBhcyBQcm9wZXJ0eTtcblx0bGV0IHVuaXQgPSBvUHJvcGVydHlEZWZpbml0aW9uLmFubm90YXRpb25zPy5NZWFzdXJlcz8uVW5pdDtcblx0Y29uc3QgcmVsYXRpdmVMb2NhdGlvbiA9IGdldFBhdGhSZWxhdGl2ZUxvY2F0aW9uKFxuXHRcdG9Qcm9wZXJ0eURhdGFNb2RlbE9iamVjdFBhdGguY29udGV4dExvY2F0aW9uLFxuXHRcdG9Qcm9wZXJ0eURhdGFNb2RlbE9iamVjdFBhdGgubmF2aWdhdGlvblByb3BlcnRpZXNcblx0KS5tYXAobnAgPT4gbnAubmFtZSk7XG5cdHVuaXQgPSB1bml0ID8gdW5pdCA6IG9Qcm9wZXJ0eURlZmluaXRpb24uYW5ub3RhdGlvbnM/Lk1lYXN1cmVzPy5JU09DdXJyZW5jeTtcblx0cmV0dXJuIHVuaXQgPyBjb21waWxlQmluZGluZyhhbm5vdGF0aW9uRXhwcmVzc2lvbih1bml0LCByZWxhdGl2ZUxvY2F0aW9uKSkgOiB1bmRlZmluZWQ7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0QXNzb2NpYXRlZFRleHRCaW5kaW5nID0gZnVuY3Rpb24oXG5cdG9Qcm9wZXJ0eURhdGFNb2RlbE9iamVjdFBhdGg6IERhdGFNb2RlbE9iamVjdFBhdGgsXG5cdGZpZWxkRm9ybWF0T3B0aW9uczogRmllbGRGb3JtYXRPcHRpb25zXG4pOiBCaW5kaW5nRXhwcmVzc2lvbjxzdHJpbmc+IHtcblx0Y29uc3QgdGV4dFByb3BlcnR5UGF0aCA9IGdldEFzc29jaWF0ZWRUZXh0UHJvcGVydHlQYXRoKG9Qcm9wZXJ0eURhdGFNb2RlbE9iamVjdFBhdGgudGFyZ2V0T2JqZWN0KTtcblx0aWYgKHRleHRQcm9wZXJ0eVBhdGgpIHtcblx0XHRjb25zdCBvVGV4dFByb3BlcnR5UGF0aCA9IGVuaGFuY2VEYXRhTW9kZWxQYXRoKG9Qcm9wZXJ0eURhdGFNb2RlbE9iamVjdFBhdGgsIHRleHRQcm9wZXJ0eVBhdGgpO1xuXHRcdGNvbnN0IG9WYWx1ZUJpbmRpbmcgPSBnZXRWYWx1ZUJpbmRpbmcob1RleHRQcm9wZXJ0eVBhdGgsIGZpZWxkRm9ybWF0T3B0aW9ucywgdHJ1ZSwgdHJ1ZSwgeyAkJG5vUGF0Y2g6IHRydWUgfSk7XG5cdFx0cmV0dXJuIG9WYWx1ZUJpbmRpbmc7XG5cdH1cblx0cmV0dXJuIHVuZGVmaW5lZDtcbn07XG5cbmV4cG9ydCBjb25zdCBpc1VzZWRJbk5hdmlnYXRpb25XaXRoUXVpY2tWaWV3RmFjZXRzID0gZnVuY3Rpb24ob0RhdGFNb2RlbFBhdGg6IERhdGFNb2RlbE9iamVjdFBhdGgsIG9Qcm9wZXJ0eTogUHJvcGVydHkpOiBib29sZWFuIHtcblx0Y29uc3QgYU5hdmlnYXRpb25Qcm9wZXJ0aWVzID0gb0RhdGFNb2RlbFBhdGg/LnRhcmdldEVudGl0eVR5cGU/Lm5hdmlnYXRpb25Qcm9wZXJ0aWVzIHx8IFtdO1xuXHRsZXQgYklzVXNlZEluTmF2aWdhdGlvbldpdGhRdWlja1ZpZXdGYWNldHMgPSBmYWxzZTtcblx0YU5hdmlnYXRpb25Qcm9wZXJ0aWVzLmZvckVhY2gob05hdlByb3AgPT4ge1xuXHRcdGlmIChvTmF2UHJvcC5yZWZlcmVudGlhbENvbnN0cmFpbnQgJiYgb05hdlByb3AucmVmZXJlbnRpYWxDb25zdHJhaW50Lmxlbmd0aCkge1xuXHRcdFx0b05hdlByb3AucmVmZXJlbnRpYWxDb25zdHJhaW50LmZvckVhY2gob1JlZkNvbnN0cmFpbnQgPT4ge1xuXHRcdFx0XHRpZiAob1JlZkNvbnN0cmFpbnQ/LnNvdXJjZVByb3BlcnR5ID09PSBvUHJvcGVydHkubmFtZSkge1xuXHRcdFx0XHRcdGlmIChvTmF2UHJvcD8udGFyZ2V0VHlwZT8uYW5ub3RhdGlvbnM/LlVJPy5RdWlja1ZpZXdGYWNldHMpIHtcblx0XHRcdFx0XHRcdGJJc1VzZWRJbk5hdmlnYXRpb25XaXRoUXVpY2tWaWV3RmFjZXRzID0gdHJ1ZTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH0pO1xuXHRcdH1cblx0fSk7XG5cdHJldHVybiBiSXNVc2VkSW5OYXZpZ2F0aW9uV2l0aFF1aWNrVmlld0ZhY2V0cztcbn07XG5cbmV4cG9ydCBjb25zdCBpc1JldHJpZXZlVGV4dEZyb21WYWx1ZUxpc3RFbmFibGVkID0gZnVuY3Rpb24oXG5cdG9Qcm9wZXJ0eVBhdGg6IFByb3BlcnR5T3JQYXRoPFByb3BlcnR5Pixcblx0ZmllbGRGb3JtYXRPcHRpb25zOiBGaWVsZEZvcm1hdE9wdGlvbnNcbik6IGJvb2xlYW4ge1xuXHRjb25zdCBvUHJvcGVydHk6IFByb3BlcnR5ID0gKGlzUGF0aEV4cHJlc3Npb24ob1Byb3BlcnR5UGF0aCkgJiYgb1Byb3BlcnR5UGF0aC4kdGFyZ2V0KSB8fCAob1Byb3BlcnR5UGF0aCBhcyBQcm9wZXJ0eSk7XG5cdGlmIChcblx0XHQhKGZpZWxkRm9ybWF0T3B0aW9ucy5kaXNwbGF5TW9kZSA9PT0gXCJWYWx1ZVwiKSAmJlxuXHRcdCFvUHJvcGVydHkuYW5ub3RhdGlvbnM/LkNvbW1vbj8uVGV4dCAmJlxuXHRcdCFvUHJvcGVydHkuYW5ub3RhdGlvbnM/Lk1lYXN1cmVzICYmXG5cdFx0UHJvcGVydHlIZWxwZXIuaGFzVmFsdWVIZWxwKG9Qcm9wZXJ0eSkgJiZcblx0XHRmaWVsZEZvcm1hdE9wdGlvbnMudGV4dEFsaWduTW9kZSA9PT0gXCJGb3JtXCJcblx0KSB7XG5cdFx0cmV0dXJuIHRydWU7XG5cdH1cblx0cmV0dXJuIGZhbHNlO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldERpc3BsYXlTdHlsZSA9IGZ1bmN0aW9uKFxuXHRvUHJvcGVydHlQYXRoOiBQcm9wZXJ0eU9yUGF0aDxQcm9wZXJ0eT4sXG5cdG9EYXRhRmllbGQ6IGFueSxcblx0b0RhdGFNb2RlbFBhdGg6IERhdGFNb2RlbE9iamVjdFBhdGgsXG5cdGZpZWxkRm9ybWF0T3B0aW9uczogRmllbGRGb3JtYXRPcHRpb25zLFxuXHRzZW1hbnRpY09iamVjdDogc3RyaW5nXG4pOiBEaXNwbGF5U3R5bGUge1xuXHQvLyBhbGdvcml0aG0gdG8gZGV0ZXJtaW5lIHRoZSBmaWVsZCBmcmFnbWVudCB0byB1c2Vcblx0Y29uc3Qgb1Byb3BlcnR5OiBQcm9wZXJ0eSA9IChpc1BhdGhFeHByZXNzaW9uKG9Qcm9wZXJ0eVBhdGgpICYmIG9Qcm9wZXJ0eVBhdGguJHRhcmdldCkgfHwgKG9Qcm9wZXJ0eVBhdGggYXMgUHJvcGVydHkpO1xuXHRpZiAoXG5cdFx0c2VtYW50aWNPYmplY3QgJiZcblx0XHQhb1Byb3BlcnR5LmFubm90YXRpb25zPy5VST8uSXNJbWFnZVVSTCAmJlxuXHRcdCEob1Byb3BlcnR5LnR5cGUgPT09IFwiRWRtLlN0cmVhbVwiKSAmJlxuXHRcdCEob1Byb3BlcnR5LmFubm90YXRpb25zPy5Db21tdW5pY2F0aW9uPy5Jc0VtYWlsQWRkcmVzcyB8fCBvUHJvcGVydHkuYW5ub3RhdGlvbnM/LkNvbW11bmljYXRpb24/LklzUGhvbmVOdW1iZXIpXG5cdCkge1xuXHRcdHJldHVybiBcIkxpbmtXaXRoUXVpY2tWaWV3Rm9ybVwiO1xuXHR9XG5cdGlmICghb1Byb3BlcnR5UGF0aCB8fCB0eXBlb2Ygb1Byb3BlcnR5UGF0aCA9PT0gXCJzdHJpbmdcIikge1xuXHRcdHJldHVybiBcIlRleHRcIjtcblx0fVxuXHRpZiAob1Byb3BlcnR5LnR5cGUgPT09IFwiRWRtLlN0cmVhbVwiKSB7XG5cdFx0cmV0dXJuIFwiRmlsZVwiO1xuXHR9XG5cdGlmIChvUHJvcGVydHkuYW5ub3RhdGlvbnM/LlVJPy5Jc0ltYWdlVVJMKSB7XG5cdFx0cmV0dXJuIFwiQXZhdGFyXCI7XG5cdH1cblx0c3dpdGNoIChvRGF0YUZpZWxkLiRUeXBlKSB7XG5cdFx0Y2FzZSBcImNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLkRhdGFQb2ludFR5cGVcIjpcblx0XHRcdHJldHVybiBcIkRhdGFQb2ludFwiO1xuXHRcdGNhc2UgXCJjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5EYXRhRmllbGRGb3JBbm5vdGF0aW9uXCI6XG5cdFx0XHRpZiAob0RhdGFGaWVsZC5UYXJnZXQ/LiR0YXJnZXQ/LiRUeXBlID09PSBcImNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLkRhdGFQb2ludFR5cGVcIikge1xuXHRcdFx0XHRyZXR1cm4gXCJEYXRhUG9pbnRcIjtcblx0XHRcdH0gZWxzZSBpZiAob0RhdGFGaWVsZC5UYXJnZXQ/LiR0YXJnZXQ/LiRUeXBlID09PSBcImNvbS5zYXAudm9jYWJ1bGFyaWVzLkNvbW11bmljYXRpb24udjEuQ29udGFjdFR5cGVcIikge1xuXHRcdFx0XHRyZXR1cm4gXCJDb250YWN0XCI7XG5cdFx0XHR9XG5cdFx0XHRicmVhaztcblx0XHRjYXNlIFwiY29tLnNhcC52b2NhYnVsYXJpZXMuVUkudjEuRGF0YUZpZWxkRm9yQWN0aW9uXCI6XG5cdFx0Y2FzZSBcImNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLkRhdGFGaWVsZEZvckludGVudEJhc2VkTmF2aWdhdGlvblwiOlxuXHRcdFx0cmV0dXJuIFwiQnV0dG9uXCI7XG5cdFx0Y2FzZSBcImNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLkRhdGFGaWVsZFdpdGhOYXZpZ2F0aW9uUGF0aFwiOlxuXHRcdFx0cmV0dXJuIFwiTGlua1wiO1xuXHR9XG5cdGlmIChvRGF0YU1vZGVsUGF0aD8udGFyZ2V0RW50aXR5VHlwZT8uYW5ub3RhdGlvbnM/LkNvbW1vbj8uU2VtYW50aWNLZXkpIHtcblx0XHRjb25zdCBhU2VtYW50aWNLZXlzID0gb0RhdGFNb2RlbFBhdGgudGFyZ2V0RW50aXR5VHlwZS5hbm5vdGF0aW9ucy5Db21tb24uU2VtYW50aWNLZXk7XG5cdFx0Y29uc3QgYklzU2VtYW50aWNLZXkgPSAhYVNlbWFudGljS2V5cy5ldmVyeShmdW5jdGlvbihvS2V5KSB7XG5cdFx0XHRyZXR1cm4gb0tleT8uJHRhcmdldD8ubmFtZSAhPT0gb1Byb3BlcnR5Lm5hbWU7XG5cdFx0fSk7XG5cdFx0aWYgKGJJc1NlbWFudGljS2V5ICYmIGZpZWxkRm9ybWF0T3B0aW9ucy5zZW1hbnRpY0tleVN0eWxlKSB7XG5cdFx0XHRpZiAob0RhdGFNb2RlbFBhdGgudGFyZ2V0RW50aXR5U2V0Py5hbm5vdGF0aW9ucz8uQ29tbW9uPy5EcmFmdFJvb3QpIHtcblx0XHRcdFx0Ly8gJiYgZmllbGRGb3JtYXRPcHRpb25zLmhhc0RyYWZ0SW5kaWNhdG9yKSB7XG5cdFx0XHRcdC8vIHdlIHRoZW4gc3RpbGwgY2hlY2sgd2hldGhlciB0aGlzIGlzIGF2YWlsYWJsZSBhdCBkZXNpZ250aW1lIG9uIHRoZSBlbnRpdHlzZXRcblx0XHRcdFx0cmV0dXJuIFwiU2VtYW50aWNLZXlXaXRoRHJhZnRJbmRpY2F0b3JcIjtcblx0XHRcdH1cblx0XHRcdHJldHVybiBmaWVsZEZvcm1hdE9wdGlvbnMuc2VtYW50aWNLZXlTdHlsZSA9PT0gXCJPYmplY3RJZGVudGlmaWVyXCIgPyBcIk9iamVjdElkZW50aWZpZXJcIiA6IFwiTGFiZWxTZW1hbnRpY0tleVwiO1xuXHRcdH1cblx0fVxuXHRpZiAob0RhdGFGaWVsZC5Dcml0aWNhbGl0eSkge1xuXHRcdHJldHVybiBcIk9iamVjdFN0YXR1c1wiO1xuXHR9XG5cdGlmIChvUHJvcGVydHkuYW5ub3RhdGlvbnM/Lk1lYXN1cmVzPy5JU09DdXJyZW5jeSAmJiBTdHJpbmcoZmllbGRGb3JtYXRPcHRpb25zLmlzQ3VycmVuY3lBbGlnbmVkKSA9PT0gXCJ0cnVlXCIpIHtcblx0XHRpZiAoZmllbGRGb3JtYXRPcHRpb25zLm1lYXN1cmVEaXNwbGF5TW9kZSA9PT0gXCJIaWRkZW5cIikge1xuXHRcdFx0cmV0dXJuIFwiVGV4dFwiO1xuXHRcdH1cblx0XHRyZXR1cm4gXCJBbW91bnRXaXRoQ3VycmVuY3lcIjtcblx0fVxuXHRpZiAob1Byb3BlcnR5LmFubm90YXRpb25zPy5Db21tdW5pY2F0aW9uPy5Jc0VtYWlsQWRkcmVzcyB8fCBvUHJvcGVydHkuYW5ub3RhdGlvbnM/LkNvbW11bmljYXRpb24/LklzUGhvbmVOdW1iZXIpIHtcblx0XHRyZXR1cm4gXCJMaW5rXCI7XG5cdH1cblx0aWYgKG9Qcm9wZXJ0eS5hbm5vdGF0aW9ucz8uVUk/Lk11bHRpTGluZVRleHQpIHtcblx0XHRyZXR1cm4gXCJFeHBhbmRhYmxlVGV4dFwiO1xuXHR9XG5cblx0aWYgKGlzVXNlZEluTmF2aWdhdGlvbldpdGhRdWlja1ZpZXdGYWNldHMob0RhdGFNb2RlbFBhdGgsIG9Qcm9wZXJ0eSkpIHtcblx0XHRyZXR1cm4gXCJMaW5rV2l0aFF1aWNrVmlld0Zvcm1cIjtcblx0fVxuXHRpZiAob1Byb3BlcnR5LmFubm90YXRpb25zPy5Db21tb24/LlNlbWFudGljT2JqZWN0KSB7XG5cdFx0cmV0dXJuIFwiTGlua1dyYXBwZXJcIjtcblx0fVxuXHRpZiAob0RhdGFGaWVsZC4kVHlwZSA9PT0gXCJjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5EYXRhRmllbGRXaXRoVXJsXCIpIHtcblx0XHRyZXR1cm4gXCJMaW5rXCI7XG5cdH1cblx0aWYgKGZpZWxkRm9ybWF0T3B0aW9ucy5yZXRyaWV2ZVRleHRGcm9tVmFsdWVMaXN0ID09PSB0cnVlKSB7XG5cdFx0cmV0dXJuIFwiTWRjRmllbGRXaXRoVmFsdWVIZWxwXCI7XG5cdH1cblx0cmV0dXJuIFwiVGV4dFwiO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldEVkaXRTdHlsZSA9IGZ1bmN0aW9uKFxuXHRvUHJvcGVydHlQYXRoOiBQcm9wZXJ0eU9yUGF0aDxQcm9wZXJ0eT4sXG5cdG9EYXRhRmllbGQ6IGFueSxcblx0b0ZpZWxkRm9ybWF0T3B0aW9uczogRmllbGRGb3JtYXRPcHRpb25zXG4pOiBFZGl0U3R5bGUgfCBudWxsIHtcblx0Ly8gYWxnb3JpdGhtIHRvIGRldGVybWluZSB0aGUgZmllbGQgZnJhZ21lbnQgdG8gdXNlXG5cdGlmICghb1Byb3BlcnR5UGF0aCB8fCB0eXBlb2Ygb1Byb3BlcnR5UGF0aCA9PT0gXCJzdHJpbmdcIikge1xuXHRcdHJldHVybiBudWxsO1xuXHR9XG5cdGNvbnN0IG9Qcm9wZXJ0eTogUHJvcGVydHkgPSAoaXNQYXRoRXhwcmVzc2lvbihvUHJvcGVydHlQYXRoKSAmJiBvUHJvcGVydHlQYXRoLiR0YXJnZXQpIHx8IChvUHJvcGVydHlQYXRoIGFzIFByb3BlcnR5KTtcblx0aWYgKG9Qcm9wZXJ0eS50eXBlID09PSBcIkVkbS5TdHJlYW1cIikge1xuXHRcdHJldHVybiBcIkZpbGVcIjtcblx0fVxuXHRzd2l0Y2ggKG9EYXRhRmllbGQuJFR5cGUpIHtcblx0XHRjYXNlIFwiY29tLnNhcC52b2NhYnVsYXJpZXMuVUkudjEuRGF0YUZpZWxkRm9yQW5ub3RhdGlvblwiOlxuXHRcdFx0aWYgKG9EYXRhRmllbGQuVGFyZ2V0Py4kdGFyZ2V0Py4kVHlwZSA9PT0gXCJjb20uc2FwLnZvY2FidWxhcmllcy5Db21tdW5pY2F0aW9uLnYxLkNvbnRhY3RUeXBlXCIpIHtcblx0XHRcdFx0cmV0dXJuIG51bGw7XG5cdFx0XHR9IGVsc2UgaWYgKG9EYXRhRmllbGQuVGFyZ2V0Py4kdGFyZ2V0Py5WaXN1YWxpemF0aW9uID09PSBcIlVJLlZpc3VhbGl6YXRpb25UeXBlL1JhdGluZ1wiKSB7XG5cdFx0XHRcdHJldHVybiBcIlJhdGluZ0luZGljYXRvclwiO1xuXHRcdFx0fVxuXHRcdFx0YnJlYWs7XG5cdFx0Y2FzZSBcImNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLkRhdGFQb2ludFR5cGVcIjpcblx0XHRcdGlmIChvRGF0YUZpZWxkPy5WaXN1YWxpemF0aW9uID09PSBcIlVJLlZpc3VhbGl6YXRpb25UeXBlL1JhdGluZ1wiKSB7XG5cdFx0XHRcdHJldHVybiBcIlJhdGluZ0luZGljYXRvclwiO1xuXHRcdFx0fVxuXHRcdFx0YnJlYWs7XG5cdFx0Y2FzZSBcImNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLkRhdGFGaWVsZEZvckFjdGlvblwiOlxuXHRcdGNhc2UgXCJjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5EYXRhRmllbGRXaXRoTmF2aWdhdGlvblBhdGhcIjpcblx0XHRjYXNlIFwiY29tLnNhcC52b2NhYnVsYXJpZXMuVUkudjEuRGF0YUZpZWxkRm9ySW50ZW50QmFzZWROYXZpZ2F0aW9uXCI6XG5cdFx0XHRyZXR1cm4gbnVsbDtcblx0fVxuXHRjb25zdCBvUHJvcGVydHlVbml0ID0gZ2V0QXNzb2NpYXRlZFVuaXRQcm9wZXJ0eShvUHJvcGVydHkpO1xuXHRjb25zdCBvUHJvcGVydHlDdXJyZW5jeSA9IGdldEFzc29jaWF0ZWRDdXJyZW5jeVByb3BlcnR5KG9Qcm9wZXJ0eSk7XG5cdGlmIChcblx0XHQoUHJvcGVydHlIZWxwZXIuaGFzVmFsdWVIZWxwKG9Qcm9wZXJ0eSkgJiYgb1Byb3BlcnR5LnR5cGUgIT09IFwiRWRtLkJvb2xlYW5cIikgfHxcblx0XHQob1Byb3BlcnR5VW5pdCAmJiBQcm9wZXJ0eUhlbHBlci5oYXNWYWx1ZUhlbHAob1Byb3BlcnR5VW5pdCkpIHx8XG5cdFx0KG9Qcm9wZXJ0eUN1cnJlbmN5ICYmIFByb3BlcnR5SGVscGVyLmhhc1ZhbHVlSGVscChvUHJvcGVydHlDdXJyZW5jeSkpXG5cdCkge1xuXHRcdGlmIChvRmllbGRGb3JtYXRPcHRpb25zPy5tZWFzdXJlRGlzcGxheU1vZGUgPT09IFwiSGlkZGVuXCIpIHtcblx0XHRcdHJldHVybiBcIklucHV0XCI7XG5cdFx0fVxuXHRcdHJldHVybiBcIklucHV0V2l0aFZhbHVlSGVscFwiO1xuXHR9XG5cdGlmIChvUHJvcGVydHkuYW5ub3RhdGlvbnM/LlVJPy5NdWx0aUxpbmVUZXh0Py52YWx1ZU9mKCkgJiYgb1Byb3BlcnR5LnR5cGUgPT09IFwiRWRtLlN0cmluZ1wiKSB7XG5cdFx0cmV0dXJuIFwiVGV4dEFyZWFcIjtcblx0fVxuXHRzd2l0Y2ggKG9Qcm9wZXJ0eS50eXBlKSB7XG5cdFx0Y2FzZSBcIkVkbS5EYXRlXCI6XG5cdFx0XHRyZXR1cm4gXCJEYXRlUGlja2VyXCI7XG5cdFx0Y2FzZSBcIkVkbS5UaW1lXCI6XG5cdFx0Y2FzZSBcIkVkbS5UaW1lT2ZEYXlcIjpcblx0XHRcdHJldHVybiBcIlRpbWVQaWNrZXJcIjtcblx0XHRjYXNlIFwiRWRtLkRhdGVUaW1lXCI6XG5cdFx0Y2FzZSBcIkVkbS5EYXRlVGltZU9mZnNldFwiOlxuXHRcdFx0cmV0dXJuIFwiRGF0ZVRpbWVQaWNrZXJcIjtcblx0XHRjYXNlIFwiRWRtLkJvb2xlYW5cIjpcblx0XHRcdHJldHVybiBcIkNoZWNrQm94XCI7XG5cdH1cblx0aWYgKG9Qcm9wZXJ0eS5hbm5vdGF0aW9ucz8uTWVhc3VyZXM/LklTT0N1cnJlbmN5IHx8IG9Qcm9wZXJ0eS5hbm5vdGF0aW9ucz8uTWVhc3VyZXM/LlVuaXQpIHtcblx0XHRyZXR1cm4gXCJJbnB1dFdpdGhVbml0XCI7XG5cdH1cblx0cmV0dXJuIFwiSW5wdXRcIjtcbn07XG5cbi8qKlxuICogUmV0dXJucyB0aGUgYmluZGluZyBleHByZXNzaW9uIHRvIGV2YWx1YXRlIHRoZSB2aXNpYmlsaXR5IG9mIGEgRGF0YUZpZWxkIG9yIERhdGFQb2ludCBhbm5vdGF0aW9uLlxuICpcbiAqIFNBUCBGaW9yaSBlbGVtZW50cyB3aWxsIGV2YWx1YXRlIGVpdGhlciB0aGUgVUkuSGlkZGVuIGFubm90YXRpb24gZGVmaW5lZCBvbiB0aGUgYW5ub3RhdGlvbiBpdHNlbGYgb3Igb24gdGhlIHRhcmdldCBwcm9wZXJ0eS5cbiAqXG4gKiBAcGFyYW0ge0RhdGFNb2RlbE9iamVjdFBhdGh9IGRhdGFGaWVsZE1vZGVsUGF0aCBUaGUgbWV0YXBhdGggcmVmZXJyaW5nIHRvIHRoZSBhbm5vdGF0aW9uIHdlIGFyZSBldmFsdWF0aW5nLlxuICogQHBhcmFtIHtGaWVsZEZvcm1hdE9wdGlvbnN9IFtmb3JtYXRPcHRpb25zXSBGb3JtYXRPcHRpb25zIG9wdGlvbmFsLlxuICogQHJldHVybnMge0JpbmRpbmdFeHByZXNzaW9uPHN0cmluZz59IEFuIGV4cHJlc3Npb24gdGhhdCB5b3UgY2FuIGJpbmQgdG8gdGhlIFVJLlxuICovXG5leHBvcnQgY29uc3QgZ2V0VmlzaWJsZUV4cHJlc3Npb24gPSBmdW5jdGlvbihcblx0ZGF0YUZpZWxkTW9kZWxQYXRoOiBEYXRhTW9kZWxPYmplY3RQYXRoLFxuXHRmb3JtYXRPcHRpb25zPzogRmllbGRGb3JtYXRPcHRpb25zXG4pOiBCaW5kaW5nRXhwcmVzc2lvbjxzdHJpbmc+IHtcblx0Y29uc3QgdGFyZ2V0T2JqZWN0OiBEYXRhRmllbGRBYnN0cmFjdFR5cGVzIHwgRGF0YVBvaW50VHlwZVR5cGVzID0gZGF0YUZpZWxkTW9kZWxQYXRoLnRhcmdldE9iamVjdDtcblx0bGV0IHByb3BlcnR5VmFsdWU7XG5cdGlmICh0YXJnZXRPYmplY3QpIHtcblx0XHRzd2l0Y2ggKHRhcmdldE9iamVjdC4kVHlwZSkge1xuXHRcdFx0Y2FzZSBVSUFubm90YXRpb25UeXBlcy5EYXRhRmllbGQ6XG5cdFx0XHRjYXNlIFVJQW5ub3RhdGlvblR5cGVzLkRhdGFGaWVsZFdpdGhVcmw6XG5cdFx0XHRjYXNlIFVJQW5ub3RhdGlvblR5cGVzLkRhdGFGaWVsZFdpdGhOYXZpZ2F0aW9uUGF0aDpcblx0XHRcdGNhc2UgVUlBbm5vdGF0aW9uVHlwZXMuRGF0YUZpZWxkV2l0aEludGVudEJhc2VkTmF2aWdhdGlvbjpcblx0XHRcdGNhc2UgVUlBbm5vdGF0aW9uVHlwZXMuRGF0YUZpZWxkV2l0aEFjdGlvbjpcblx0XHRcdGNhc2UgVUlBbm5vdGF0aW9uVHlwZXMuRGF0YVBvaW50VHlwZTpcblx0XHRcdFx0cHJvcGVydHlWYWx1ZSA9IHRhcmdldE9iamVjdC5WYWx1ZS4kdGFyZ2V0O1xuXHRcdFx0XHRicmVhaztcblx0XHRcdGNhc2UgVUlBbm5vdGF0aW9uVHlwZXMuRGF0YUZpZWxkRm9yQW5ub3RhdGlvbjpcblx0XHRcdFx0Ly8gaWYgaXQgaXMgYSBEYXRhRmllbGRGb3JBbm5vdGF0aW9uIHBvaW50aW5nIHRvIGEgRGF0YVBvaW50IHdlIGxvb2sgYXQgdGhlIGRhdGFQb2ludCdzIHZhbHVlXG5cdFx0XHRcdGlmICh0YXJnZXRPYmplY3Q/LlRhcmdldD8uJHRhcmdldD8uJFR5cGUgPT09IFVJQW5ub3RhdGlvblR5cGVzLkRhdGFQb2ludFR5cGUpIHtcblx0XHRcdFx0XHRwcm9wZXJ0eVZhbHVlID0gdGFyZ2V0T2JqZWN0LlRhcmdldC4kdGFyZ2V0Py5WYWx1ZS4kdGFyZ2V0O1xuXHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHR9XG5cdFx0XHQvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tZmFsbHRocm91Z2hcblx0XHRcdGNhc2UgVUlBbm5vdGF0aW9uVHlwZXMuRGF0YUZpZWxkRm9ySW50ZW50QmFzZWROYXZpZ2F0aW9uOlxuXHRcdFx0Y2FzZSBVSUFubm90YXRpb25UeXBlcy5EYXRhRmllbGRGb3JBY3Rpb246XG5cdFx0XHRkZWZhdWx0OlxuXHRcdFx0XHRwcm9wZXJ0eVZhbHVlID0gdW5kZWZpbmVkO1xuXHRcdH1cblx0fVxuXHRjb25zdCBpc0FuYWx5dGljYWxHcm91cEhlYWRlckV4cGFuZGVkID0gZm9ybWF0T3B0aW9ucz8uaXNBbmFseXRpY3MgPyBVSS5Jc0V4cGFuZGVkIDogY29uc3RhbnQoZmFsc2UpO1xuXHRjb25zdCBpc0FuYWx5dGljYWxMZWFmID0gZm9ybWF0T3B0aW9ucz8uaXNBbmFseXRpY3MgPyBlcXVhbChVSS5Ob2RlTGV2ZWwsIDApIDogY29uc3RhbnQoZmFsc2UpO1xuXG5cdC8vIEEgZGF0YSBmaWVsZCBpcyB2aXNpYmxlIGlmOlxuXHQvLyAtIHRoZSBVSS5IaWRkZW4gZXhwcmVzc2lvbiBpbiB0aGUgb3JpZ2luYWwgYW5ub3RhdGlvbiBkb2VzIG5vdCBldmFsdWF0ZSB0byAndHJ1ZSdcblx0Ly8gLSB0aGUgVUkuSGlkZGVuIGV4cHJlc3Npb24gaW4gdGhlIHRhcmdldCBwcm9wZXJ0eSBkb2VzIG5vdCBldmFsdWF0ZSB0byAndHJ1ZSdcblx0Ly8gLSBpbiBjYXNlIG9mIEFuYWx5dGljcyBpdCdzIG5vdCB2aXNpYmxlIGZvciBhbiBleHBhbmRlZCBHcm91cEhlYWRlclxuXHRyZXR1cm4gY29tcGlsZUJpbmRpbmcoXG5cdFx0YW5kKFxuXHRcdFx0Li4uW1xuXHRcdFx0XHRub3QoZXF1YWwoYW5ub3RhdGlvbkV4cHJlc3Npb24odGFyZ2V0T2JqZWN0Py5hbm5vdGF0aW9ucz8uVUk/LkhpZGRlbiksIHRydWUpKSxcblx0XHRcdFx0aWZFbHNlKFxuXHRcdFx0XHRcdCEhcHJvcGVydHlWYWx1ZSxcblx0XHRcdFx0XHRwcm9wZXJ0eVZhbHVlICYmIG5vdChlcXVhbChhbm5vdGF0aW9uRXhwcmVzc2lvbihwcm9wZXJ0eVZhbHVlLmFubm90YXRpb25zPy5VST8uSGlkZGVuKSwgdHJ1ZSkpLFxuXHRcdFx0XHRcdHRydWVcblx0XHRcdFx0KSxcblx0XHRcdFx0b3Iobm90KGlzQW5hbHl0aWNhbEdyb3VwSGVhZGVyRXhwYW5kZWQpLCBpc0FuYWx5dGljYWxMZWFmKVxuXHRcdFx0XVxuXHRcdClcblx0KTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRJbnB1dERlc2NyaXB0aW9uID0gZnVuY3Rpb24oXG5cdG9Qcm9wZXJ0eVBhdGg6IFByb3BlcnR5T3JQYXRoPFByb3BlcnR5Pixcblx0ZGVzY3JpcHRpb25CaW5kaW5nRXhwcmVzc2lvbjogQmluZGluZ0V4cHJlc3Npb248c3RyaW5nPlxuKTogQmluZGluZ0V4cHJlc3Npb248c3RyaW5nPiB7XG5cdGNvbnN0IG9Qcm9wZXJ0eSA9IChpc1BhdGhFeHByZXNzaW9uKG9Qcm9wZXJ0eVBhdGgpICYmIG9Qcm9wZXJ0eVBhdGguJHRhcmdldCkgfHwgKG9Qcm9wZXJ0eVBhdGggYXMgUHJvcGVydHkpO1xuXHRjb25zdCB1bml0UHJvcGVydHkgPSBnZXRBc3NvY2lhdGVkQ3VycmVuY3lQcm9wZXJ0eShvUHJvcGVydHkpIHx8IGdldEFzc29jaWF0ZWRVbml0UHJvcGVydHkob1Byb3BlcnR5KTtcblx0aWYgKCF1bml0UHJvcGVydHkpIHtcblx0XHRyZXR1cm4gY29tcGlsZUJpbmRpbmcoXCJcIik7XG5cdH1cblx0Y29uc3QgZWRpdGFibGVFeHByZXNzaW9uID0gYW5kKG5vdChpc1JlYWRPbmx5RXhwcmVzc2lvbih1bml0UHJvcGVydHkpKSwgbm90KFByb3BlcnR5SGVscGVyLmlzQ29tcHV0ZWQodW5pdFByb3BlcnR5KSkpO1xuXHRyZXR1cm4gY29tcGlsZUJpbmRpbmcoaWZFbHNlKGVkaXRhYmxlRXhwcmVzc2lvbiwgXCJcIiwgZGVzY3JpcHRpb25CaW5kaW5nRXhwcmVzc2lvbikpO1xufTtcblxuZXhwb3J0IGNvbnN0IFFWVGV4dEJpbmRpbmcgPSBmdW5jdGlvbihcblx0b1Byb3BlcnR5RGF0YU1vZGVsT2JqZWN0UGF0aDogRGF0YU1vZGVsT2JqZWN0UGF0aCxcblx0b1Byb3BlcnR5VmFsdWVEYXRhTW9kZWxPYmplY3RQYXRoOiBEYXRhTW9kZWxPYmplY3RQYXRoLFxuXHRmaWVsZEZvcm1hdE9wdGlvbnM6IEZpZWxkRm9ybWF0T3B0aW9ucyxcblx0YXNPYmplY3Q6IGJvb2xlYW4gPSBmYWxzZVxuKSB7XG5cdGxldCByZXR1cm5WYWx1ZTogYW55ID0gZ2V0VmFsdWVCaW5kaW5nKG9Qcm9wZXJ0eURhdGFNb2RlbE9iamVjdFBhdGgsIGZpZWxkRm9ybWF0T3B0aW9ucywgYXNPYmplY3QpO1xuXHRpZiAocmV0dXJuVmFsdWUgPT09IFwiXCIpIHtcblx0XHRyZXR1cm5WYWx1ZSA9IGdldFRleHRCaW5kaW5nKG9Qcm9wZXJ0eVZhbHVlRGF0YU1vZGVsT2JqZWN0UGF0aCwgZmllbGRGb3JtYXRPcHRpb25zLCBhc09iamVjdCk7XG5cdH1cblx0cmV0dXJuIHJldHVyblZhbHVlO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldFF1aWNrVmlld1R5cGUgPSBmdW5jdGlvbihvUHJvcGVydHlEYXRhTW9kZWxPYmplY3RQYXRoOiBEYXRhTW9kZWxPYmplY3RQYXRoKTogc3RyaW5nIHtcblx0Y29uc3QgdGFyZ2V0T2JqZWN0ID0gb1Byb3BlcnR5RGF0YU1vZGVsT2JqZWN0UGF0aC50YXJnZXRPYmplY3Q7XG5cdGlmICh0YXJnZXRPYmplY3Q/LiR0YXJnZXQ/LmFubm90YXRpb25zPy5Db21tdW5pY2F0aW9uPy5Jc0VtYWlsQWRkcmVzcykge1xuXHRcdHJldHVybiBcImVtYWlsXCI7XG5cdH1cblx0aWYgKHRhcmdldE9iamVjdD8uJHRhcmdldD8uYW5ub3RhdGlvbnM/LkNvbW11bmljYXRpb24/LklzUGhvbmVOdW1iZXIpIHtcblx0XHRyZXR1cm4gXCJwaG9uZVwiO1xuXHR9XG5cdHJldHVybiBcInRleHRcIjtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRTZW1hbnRpY09iamVjdEV4cHJlc3Npb25Ub1Jlc29sdmUgPSBmdW5jdGlvbihvQW5ub3RhdGlvbnM6IGFueSk6IGFueVtdIHtcblx0Y29uc3QgYVNlbU9iakV4cHJUb1Jlc29sdmU6IGFueVtdID0gW107XG5cdGlmIChvQW5ub3RhdGlvbnMpIHtcblx0XHRjb25zdCBhU2VtT2Jqa2V5cyA9IE9iamVjdC5rZXlzKG9Bbm5vdGF0aW9ucykuZmlsdGVyKGZ1bmN0aW9uKGVsZW1lbnQpIHtcblx0XHRcdHJldHVybiBlbGVtZW50ID09PSBcIlNlbWFudGljT2JqZWN0XCIgfHwgZWxlbWVudC5zdGFydHNXaXRoKFwiU2VtYW50aWNPYmplY3QjXCIpO1xuXHRcdH0pO1xuXHRcdGZvciAobGV0IGlTZW1PYmpDb3VudCA9IDA7IGlTZW1PYmpDb3VudCA8IGFTZW1PYmprZXlzLmxlbmd0aDsgaVNlbU9iakNvdW50KyspIHtcblx0XHRcdGNvbnN0IHNTZW1PYmpFeHByZXNzaW9uID0gY29tcGlsZUJpbmRpbmcoYW5ub3RhdGlvbkV4cHJlc3Npb24ob0Fubm90YXRpb25zW2FTZW1PYmprZXlzW2lTZW1PYmpDb3VudF1dKSk7XG5cdFx0XHRhU2VtT2JqRXhwclRvUmVzb2x2ZS5wdXNoKHtcblx0XHRcdFx0a2V5OiBzU2VtT2JqRXhwcmVzc2lvbj8uaW5kZXhPZihcIntcIikgPT09IC0xID8gc1NlbU9iakV4cHJlc3Npb24gOiBzU2VtT2JqRXhwcmVzc2lvbj8uc3BsaXQoXCJ7XCIpWzFdLnNwbGl0KFwifVwiKVswXSxcblx0XHRcdFx0dmFsdWU6IHNTZW1PYmpFeHByZXNzaW9uXG5cdFx0XHR9KTtcblx0XHR9XG5cdH1cblx0cmV0dXJuIGFTZW1PYmpFeHByVG9SZXNvbHZlO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldFNlbWFudGljT2JqZWN0cyA9IGZ1bmN0aW9uKGFTZW1PYmpFeHByVG9SZXNvbHZlOiBhbnlbXSk6IGFueSB7XG5cdGlmIChhU2VtT2JqRXhwclRvUmVzb2x2ZS5sZW5ndGggPiAwKSB7XG5cdFx0bGV0IHNDdXN0b21EYXRhS2V5OiBzdHJpbmcgPSBcIlwiO1xuXHRcdGxldCBzQ3VzdG9tRGF0YVZhbHVlOiBhbnkgPSBcIlwiO1xuXHRcdGNvbnN0IGFTZW1PYmpDdXN0b21EYXRhOiBhbnlbXSA9IFtdO1xuXHRcdGZvciAobGV0IGlTZW1PYmpDb3VudCA9IDA7IGlTZW1PYmpDb3VudCA8IGFTZW1PYmpFeHByVG9SZXNvbHZlLmxlbmd0aDsgaVNlbU9iakNvdW50KyspIHtcblx0XHRcdHNDdXN0b21EYXRhS2V5ID0gYVNlbU9iakV4cHJUb1Jlc29sdmVbaVNlbU9iakNvdW50XS5rZXk7XG5cdFx0XHRzQ3VzdG9tRGF0YVZhbHVlID0gY29tcGlsZUJpbmRpbmcoYW5ub3RhdGlvbkV4cHJlc3Npb24oYVNlbU9iakV4cHJUb1Jlc29sdmVbaVNlbU9iakNvdW50XS52YWx1ZSkpO1xuXHRcdFx0YVNlbU9iakN1c3RvbURhdGEucHVzaCh7XG5cdFx0XHRcdGtleTogc0N1c3RvbURhdGFLZXksXG5cdFx0XHRcdHZhbHVlOiBzQ3VzdG9tRGF0YVZhbHVlXG5cdFx0XHR9KTtcblx0XHR9XG5cdFx0Y29uc3Qgb1NlbWFudGljT2JqZWN0c01vZGVsOiBhbnkgPSBuZXcgSlNPTk1vZGVsKGFTZW1PYmpDdXN0b21EYXRhKTtcblx0XHRvU2VtYW50aWNPYmplY3RzTW9kZWwuJCR2YWx1ZUFzUHJvbWlzZSA9IHRydWU7XG5cdFx0Y29uc3Qgb1NlbU9iakJpbmRpbmdDb250ZXh0OiBhbnkgPSBvU2VtYW50aWNPYmplY3RzTW9kZWwuY3JlYXRlQmluZGluZ0NvbnRleHQoXCIvXCIpO1xuXHRcdHJldHVybiBvU2VtT2JqQmluZGluZ0NvbnRleHQ7XG5cdH0gZWxzZSB7XG5cdFx0cmV0dXJuIG5ldyBKU09OTW9kZWwoW10pLmNyZWF0ZUJpbmRpbmdDb250ZXh0KFwiL1wiKTtcblx0fVxufTtcbiJdfQ==
|
|
703
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIkZpZWxkVGVtcGxhdGluZy50cyJdLCJuYW1lcyI6WyJhZGRUZXh0QXJyYW5nZW1lbnRUb0JpbmRpbmdFeHByZXNzaW9uIiwiYmluZGluZ0V4cHJlc3Npb24iLCJmdWxsQ29udGV4dFBhdGgiLCJ0cmFuc2Zvcm1SZWN1cnNpdmVseSIsImV4cHJlc3Npb24iLCJvdXRFeHByZXNzaW9uIiwibW9kZWxOYW1lIiwidW5kZWZpbmVkIiwib1Byb3BlcnR5RGF0YU1vZGVsUGF0aCIsImVuaGFuY2VEYXRhTW9kZWxQYXRoIiwicGF0aCIsImdldEJpbmRpbmdXaXRoVGV4dEFycmFuZ2VtZW50IiwicHJvcGVydHlCaW5kaW5nRXhwcmVzc2lvbiIsImZpZWxkRm9ybWF0T3B0aW9ucyIsInRhcmdldERpc3BsYXlNb2RlT3ZlcnJpZGUiLCJkaXNwbGF5TW9kZSIsIm9Qcm9wZXJ0eURlZmluaXRpb24iLCJ0YXJnZXRPYmplY3QiLCJ0eXBlIiwiJHRhcmdldCIsInRhcmdldERpc3BsYXlNb2RlIiwiZ2V0RGlzcGxheU1vZGUiLCJjb21tb25UZXh0IiwiYW5ub3RhdGlvbnMiLCJDb21tb24iLCJUZXh0IiwicmVsYXRpdmVMb2NhdGlvbiIsImdldFBhdGhSZWxhdGl2ZUxvY2F0aW9uIiwiY29udGV4dExvY2F0aW9uIiwibmF2aWdhdGlvblByb3BlcnRpZXMiLCJtYXAiLCJucCIsIm5hbWUiLCJmb3JtYXRXaXRoVHlwZUluZm9ybWF0aW9uIiwiYW5ub3RhdGlvbkV4cHJlc3Npb24iLCJmb3JtYXRSZXN1bHQiLCJ2YWx1ZUZvcm1hdHRlcnMiLCJmb3JtYXRXaXRoQnJhY2tldHMiLCJmb3JtYXRWYWx1ZVJlY3Vyc2l2ZWx5IiwiZ2V0VGV4dEJpbmRpbmciLCJvUHJvcGVydHlEYXRhTW9kZWxPYmplY3RQYXRoIiwiYXNPYmplY3QiLCIkVHlwZSIsImZpZWxkVmFsdWUiLCJWYWx1ZSIsImNvbXBpbGVCaW5kaW5nIiwiY29uc3RhbnQiLCJpc1BhdGhFeHByZXNzaW9uIiwib0JpbmRpbmdFeHByZXNzaW9uIiwiZ2V0Q29udGV4dFJlbGF0aXZlVGFyZ2V0T2JqZWN0UGF0aCIsIm9UYXJnZXRCaW5kaW5nIiwiTWVhc3VyZXMiLCJVbml0IiwiSVNPQ3VycmVuY3kiLCJnZXRCaW5kaW5nV2l0aFVuaXRPckN1cnJlbmN5IiwibWVhc3VyZURpc3BsYXlNb2RlIiwiZm9ybWF0T3B0aW9ucyIsInNob3dNZWFzdXJlIiwiZ2V0VmFsdWVCaW5kaW5nIiwiaWdub3JlVW5pdCIsImlnbm9yZUZvcm1hdHRpbmciLCJiaW5kaW5nUGFyYW1ldGVycyIsInRhcmdldFR5cGVBbnkiLCJzaG93TWVhc3VyZU9ubHkiLCJvTmF2UGF0aCIsInRhcmdldEVudGl0eVR5cGUiLCJyZXNvbHZlUGF0aCIsInRhcmdldCIsInZpc2l0ZWRPYmplY3RzIiwiZm9yRWFjaCIsIm9OYXZPYmoiLCJfdHlwZSIsInB1c2giLCJpc1Byb3BlcnR5IiwiQ29tbXVuaWNhdGlvbiIsIklzRW1haWxBZGRyZXNzIiwib1Byb3BlcnR5VW5pdCIsImdldEFzc29jaWF0ZWRVbml0UHJvcGVydHkiLCJvUHJvcGVydHlDdXJyZW5jeSIsImdldEFzc29jaWF0ZWRDdXJyZW5jeVByb3BlcnR5IiwiaGFzVmFsdWVIZWxwIiwic2hvd051bWJlciIsInBhcnNlS2VlcHNFbXB0eVN0cmluZyIsImNvbnN0cmFpbnRzIiwicGFyYW1ldGVycyIsInRhcmdldFR5cGUiLCJnZXRVbml0QmluZGluZyIsInVuaXQiLCJnZXRBc3NvY2lhdGVkVGV4dEJpbmRpbmciLCJ0ZXh0UHJvcGVydHlQYXRoIiwiZ2V0QXNzb2NpYXRlZFRleHRQcm9wZXJ0eVBhdGgiLCJvVGV4dFByb3BlcnR5UGF0aCIsIm9WYWx1ZUJpbmRpbmciLCIkJG5vUGF0Y2giLCJpc1VzZWRJbk5hdmlnYXRpb25XaXRoUXVpY2tWaWV3RmFjZXRzIiwib0RhdGFNb2RlbFBhdGgiLCJvUHJvcGVydHkiLCJhTmF2aWdhdGlvblByb3BlcnRpZXMiLCJiSXNVc2VkSW5OYXZpZ2F0aW9uV2l0aFF1aWNrVmlld0ZhY2V0cyIsIm9OYXZQcm9wIiwicmVmZXJlbnRpYWxDb25zdHJhaW50IiwibGVuZ3RoIiwib1JlZkNvbnN0cmFpbnQiLCJzb3VyY2VQcm9wZXJ0eSIsIlVJIiwiUXVpY2tWaWV3RmFjZXRzIiwiaXNSZXRyaWV2ZVRleHRGcm9tVmFsdWVMaXN0RW5hYmxlZCIsIm9Qcm9wZXJ0eVBhdGgiLCJQcm9wZXJ0eUhlbHBlciIsInRleHRBbGlnbk1vZGUiLCJnZXREaXNwbGF5U3R5bGUiLCJvRGF0YUZpZWxkIiwic2VtYW50aWNPYmplY3QiLCJJc0ltYWdlVVJMIiwiSXNQaG9uZU51bWJlciIsIlRhcmdldCIsIlNlbWFudGljS2V5IiwiYVNlbWFudGljS2V5cyIsImJJc1NlbWFudGljS2V5IiwiZXZlcnkiLCJvS2V5Iiwic2VtYW50aWNLZXlTdHlsZSIsInRhcmdldEVudGl0eVNldCIsIkRyYWZ0Um9vdCIsIkNyaXRpY2FsaXR5IiwiU3RyaW5nIiwiaXNDdXJyZW5jeUFsaWduZWQiLCJNdWx0aUxpbmVUZXh0IiwiU2VtYW50aWNPYmplY3QiLCJyZXRyaWV2ZVRleHRGcm9tVmFsdWVMaXN0IiwiZ2V0RWRpdFN0eWxlIiwib0ZpZWxkRm9ybWF0T3B0aW9ucyIsIlZpc3VhbGl6YXRpb24iLCJ2YWx1ZU9mIiwiZ2V0VmlzaWJsZUV4cHJlc3Npb24iLCJkYXRhRmllbGRNb2RlbFBhdGgiLCJwcm9wZXJ0eVZhbHVlIiwiaXNBbmFseXRpY2FsR3JvdXBIZWFkZXJFeHBhbmRlZCIsImlzQW5hbHl0aWNzIiwiSXNFeHBhbmRlZCIsImlzQW5hbHl0aWNhbExlYWYiLCJlcXVhbCIsIk5vZGVMZXZlbCIsImFuZCIsIm5vdCIsIkhpZGRlbiIsImlmRWxzZSIsIm9yIiwiZ2V0SW5wdXREZXNjcmlwdGlvbiIsImRlc2NyaXB0aW9uQmluZGluZ0V4cHJlc3Npb24iLCJ1bml0UHJvcGVydHkiLCJlZGl0YWJsZUV4cHJlc3Npb24iLCJpc1JlYWRPbmx5RXhwcmVzc2lvbiIsImlzQ29tcHV0ZWQiLCJRVlRleHRCaW5kaW5nIiwib1Byb3BlcnR5VmFsdWVEYXRhTW9kZWxPYmplY3RQYXRoIiwicmV0dXJuVmFsdWUiLCJnZXRRdWlja1ZpZXdUeXBlIiwiZ2V0U2VtYW50aWNPYmplY3RFeHByZXNzaW9uVG9SZXNvbHZlIiwib0Fubm90YXRpb25zIiwiYVNlbU9iakV4cHJUb1Jlc29sdmUiLCJhU2VtT2Jqa2V5cyIsIk9iamVjdCIsImtleXMiLCJmaWx0ZXIiLCJlbGVtZW50Iiwic3RhcnRzV2l0aCIsImlTZW1PYmpDb3VudCIsInNTZW1PYmpFeHByZXNzaW9uIiwia2V5IiwiaW5kZXhPZiIsInNwbGl0IiwidmFsdWUiLCJnZXRTZW1hbnRpY09iamVjdHMiLCJzQ3VzdG9tRGF0YUtleSIsInNDdXN0b21EYXRhVmFsdWUiLCJhU2VtT2JqQ3VzdG9tRGF0YSIsIm9TZW1hbnRpY09iamVjdHNNb2RlbCIsIkpTT05Nb2RlbCIsIiQkdmFsdWVBc1Byb21pc2UiLCJvU2VtT2JqQmluZGluZ0NvbnRleHQiLCJjcmVhdGVCaW5kaW5nQ29udGV4dCIsImdldE11bHRpcGxlTGluZXNGb3JEYXRhRmllbGQiLCJvVGhpcyIsInNQcm9wZXJ0eVR5cGUiLCJpc011bHRpTGluZVRleHQiLCJ3cmFwIiwiZWRpdE1vZGUiLCJfZ2V0RHJhZnRBZG1pbmlzdHJhdGl2ZURhdGFUeXBlIiwib01ldGFNb2RlbCIsInNFbnRpdHlUeXBlIiwicmVxdWVzdE9iamVjdCIsImdldEJpbmRpbmdGb3JEcmFmdEFkbWluQmxvY2tJbmxpbmUiLCJpQ29udGV4dCIsImdldE1vZGVsIiwidGhlbiIsIm9EQURFbnRpdHlUeXBlIiwiYUJpbmRpbmdzIiwiSW5Qcm9jZXNzQnlVc2VyRGVzY3JpcHRpb24iLCJMYXN0Q2hhbmdlZEJ5VXNlckRlc2NyaXB0aW9uIiwicmVzb2x2ZUJpbmRpbmdTdHJpbmciLCJyZXF1aXJlc0lDb250ZXh0Il0sIm1hcHBpbmdzIjoiO0FBQUE7QUFDQTtBQUNBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQTRGQTtBQUNBO0FBQ0E7QUFDQTtB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QkFBbkIsRUFBaUQ7QUFDaERGLFFBQUFBLFNBQVMsQ0FBQzdILElBQVYsQ0FBZXZFLGlCQUFpQixDQUFDLHNEQUFELENBQWhDO0FBQ0E7O0FBRURvTSxNQUFBQSxTQUFTLENBQUM3SCxJQUFWLENBQWV2RSxpQkFBaUIsQ0FBQywyQ0FBRCxDQUFoQztBQUVBLGFBQU80QyxjQUFjLENBQUNxRyxNQUFNLENBQUNqSixpQkFBaUIsQ0FBQyxnQkFBRCxDQUFsQixFQUFzQ2tKLEVBQUUsTUFBRixTQUFNa0QsU0FBTixDQUF0QyxFQUF3REcsb0JBQW9CLENBQUMsRUFBRCxDQUE1RSxDQUFQLENBQXJCO0FBQ0EsS0FoQk0sQ0FBUDtBQWlCQSxHQWxCTTs7QUFtQlBSLEVBQUFBLGtDQUFrQyxDQUFDUyxnQkFBbkMsR0FBc0QsSUFBdEQiLCJzb3VyY2VSb290IjoiLiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG5cdGdldERpc3BsYXlNb2RlLFxuXHRQcm9wZXJ0eU9yUGF0aCxcblx0RGlzcGxheU1vZGUsXG5cdGdldEJpbmRpbmdXaXRoVW5pdE9yQ3VycmVuY3ksXG5cdGZvcm1hdFdpdGhUeXBlSW5mb3JtYXRpb25cbn0gZnJvbSBcInNhcC9mZS9jb3JlL3RlbXBsYXRpbmcvVUlGb3JtYXR0ZXJzXCI7XG5pbXBvcnQge1xuXHREYXRhTW9kZWxPYmplY3RQYXRoLFxuXHRlbmhhbmNlRGF0YU1vZGVsUGF0aCxcblx0Z2V0UGF0aFJlbGF0aXZlTG9jYXRpb24sXG5cdGdldENvbnRleHRSZWxhdGl2ZVRhcmdldE9iamVjdFBhdGhcbn0gZnJvbSBcInNhcC9mZS9jb3JlL3RlbXBsYXRpbmcvRGF0YU1vZGVsUGF0aEhlbHBlclwiO1xuaW1wb3J0IHsgUHJvcGVydHkgfSBmcm9tIFwiQHNhcC11eC9hbm5vdGF0aW9uLWNvbnZlcnRlclwiO1xuaW1wb3J0IHtcblx0RXhwcmVzc2lvbixcblx0YW5ub3RhdGlvbkV4cHJlc3Npb24sXG5cdGZvcm1hdFJlc3VsdCxcblx0dHJhbnNmb3JtUmVjdXJzaXZlbHksXG5cdEJpbmRpbmdFeHByZXNzaW9uRXhwcmVzc2lvbixcblx0QmluZGluZ0V4cHJlc3Npb24sXG5cdGNvbXBpbGVCaW5kaW5nLFxuXHRjb25zdGFudCxcblx0YmluZGluZ0V4cHJlc3Npb24sXG5cdGFuZCxcblx0aWZFbHNlLFxuXHRub3QsXG5cdENvbXBsZXhUeXBlRXhwcmVzc2lvbixcblx0ZXF1YWwsXG5cdG9yLFxuXHRyZXNvbHZlQmluZGluZ1N0cmluZ1xufSBmcm9tIFwic2FwL2ZlL2NvcmUvaGVscGVycy9CaW5kaW5nRXhwcmVzc2lvblwiO1xuaW1wb3J0IHtcblx0aXNQYXRoRXhwcmVzc2lvbixcblx0Z2V0QXNzb2NpYXRlZFVuaXRQcm9wZXJ0eSxcblx0Z2V0QXNzb2NpYXRlZEN1cnJlbmN5UHJvcGVydHksXG5cdGlzUHJvcGVydHksXG5cdGhhc1ZhbHVlSGVscCxcblx0Z2V0QXNzb2NpYXRlZFRleHRQcm9wZXJ0eVBhdGhcbn0gZnJvbSBcInNhcC9mZS9jb3JlL3RlbXBsYXRpbmcvUHJvcGVydHlIZWxwZXJcIjtcbmltcG9ydCB2YWx1ZUZvcm1hdHRlcnMgZnJvbSBcInNhcC9mZS9jb3JlL2Zvcm1hdHRlcnMvVmFsdWVGb3JtYXR0ZXJcIjtcbmltcG9ydCAqIGFzIFByb3BlcnR5SGVscGVyIGZyb20gXCJzYXAvZmUvY29yZS90ZW1wbGF0aW5nL1Byb3BlcnR5SGVscGVyXCI7XG5pbXBvcnQgeyBpc1JlYWRPbmx5RXhwcmVzc2lvbiB9IGZyb20gXCJzYXAvZmUvY29yZS90ZW1wbGF0aW5nL0ZpZWxkQ29udHJvbEhlbHBlclwiO1xuaW1wb3J0IHsgRGF0YUZpZWxkQWJzdHJhY3RUeXBlcywgRGF0YUZpZWxkV2l0aFVybCwgRGF0YVBvaW50VHlwZVR5cGVzLCBVSUFubm90YXRpb25UeXBlcyB9IGZyb20gXCJAc2FwLXV4L3ZvY2FidWxhcmllcy10eXBlc1wiO1xuaW1wb3J0IHsgVUkgfSBmcm9tIFwic2FwL2ZlL2NvcmUvY29udmVydGVycy9oZWxwZXJzL0JpbmRpbmdIZWxwZXJcIjtcbmltcG9ydCBKU09OTW9kZWwgZnJvbSBcInNhcC91aS9tb2RlbC9qc29uL0pTT05Nb2RlbFwiO1xuXG5leHBvcnQgdHlwZSBGaWVsZEZvcm1hdE9wdGlvbnMgPSBQYXJ0aWFsPHtcblx0dmFsdWVGb3JtYXQ6IFN0cmluZztcblx0dGV4dEFsaWduTW9kZTogU3RyaW5nO1xuXHRkaXNwbGF5TW9kZTogRGlzcGxheU1vZGU7XG5cdG1lYXN1cmVEaXNwbGF5TW9kZTogU3RyaW5nO1xuXHR0ZXh0TGluZXNFZGl0OiBTdHJpbmc7XG5cdHRleHRNYXhMaW5lczogU3RyaW5nO1xuXHRzaG93RW1wdHlJbmRpY2F0b3I6IGJvb2xlYW47XG5cdHNlbWFudGljS2V5U3R5bGU6IFN0cmluZztcblx0c2hvd0ljb25Vcmw6IGJvb2xlYW47XG5cdGlzQW5hbHl0aWNzOiBib29sZWFuO1xuXHRoYXNEcmFmdEluZGljYXRvcjogYm9vbGVhbjtcblx0c2VtYW50aWNrZXlzOiBzdHJpbmdbXTtcblx0cmV0cmlldmVUZXh0RnJvbVZhbHVlTGlzdDogYm9vbGVhbjtcblx0aXNDdXJyZW5jeUFsaWduZWQ6IGJvb2xlYW47XG59PjtcblxuZXhwb3J0IHR5cGUgRWRpdFN0eWxlID1cblx0fCBcIklucHV0V2l0aFZhbHVlSGVscFwiXG5cdHwgXCJUZXh0QXJlYVwiXG5cdHwgXCJGaWxlXCJcblx0fCBcIkRhdGVQaWNrZXJcIlxuXHR8IFwiVGltZVBpY2tlclwiXG5cdHwgXCJEYXRlVGltZVBpY2tlclwiXG5cdHwgXCJDaGVja0JveFwiXG5cdHwgXCJJbnB1dFdpdGhVbml0XCJcblx0fCBcIklucHV0XCJcblx0fCBcIlJhdGluZ0luZGljYXRvclwiO1xuXG5leHBvcnQgdHlwZSBEaXNwbGF5U3R5bGUgPVxuXHR8IFwiVGV4dFwiXG5cdHwgXCJNZGNGaWVsZFdpdGhWYWx1ZUhlbHBcIlxuXHR8IFwiQXZhdGFyXCJcblx0fCBcIkZpbGVcIlxuXHR8IFwiRGF0YVBvaW50XCJcblx0fCBcIkNvbnRhY3RcIlxuXHR8IFwiQnV0dG9uXCJcblx0fCBcIkxpbmtcIlxuXHR8IFwiT2JqZWN0U3RhdHVzXCJcblx0fCBcIkFtb3VudFdpdGhDdXJyZW5jeVwiXG5cdHwgXCJTZW1hbnRpY0tleVdpdGhEcmFmdEluZGljYXRvclwiXG5cdHwgXCJPYmplY3RJZGVudGlmaWVyXCJcblx0fCBcIkxhYmVsU2VtYW50aWNLZXlcIlxuXHR8IFwiTGlua1dpdGhRdWlja1ZpZXdGb3JtXCJcblx0fCBcIkxpbmtXcmFwcGVyXCJcblx0fCBcIkV4cGFuZGFibGVUZXh0XCI7XG5cbi8qKlxuICogUmVjdXJzaXZlbHkgYWRkIHRoZSB0ZXh0IGFycmFuZ2VtZW50IHRvIGEgYmluZGluZyBleHByZXNzaW9uLlxuICpcbiAqIEBwYXJhbSBiaW5kaW5nRXhwcmVzc2lvbiBUaGUgYmluZGluZyBleHByZXNzaW9uIHRvIGJlIGVuaGFuY2VkXG4gKiBAcGFyYW0gZnVsbENvbnRleHRQYXRoIFRoZSBjdXJyZW50IGNvbnRleHQgcGF0aCB3ZSdyZSBvbiAodG8gcHJvcGVybHkgcmVzb2x2ZSB0aGUgdGV4dCBhcnJhbmdlbWVudCBwcm9wZXJ0aWVzKVxuICogQHJldHVybnMgQW4gdXBkYXRlZCBleHByZXNzaW9uIGNvbnRhaW5pbmcgdGhlIHRleHQgYXJyYW5nZW1lbnQgYmluZGluZy5cbiAqL1xuZXhwb3J0IGNvbnN0IGFkZFRleHRBcnJhbmdlbWVudFRvQmluZGluZ0V4cHJlc3Npb24gPSBmdW5jdGlvbihcblx0YmluZGluZ0V4cHJlc3Npb246IEV4cHJlc3Npb248YW55Pixcblx0ZnVsbENvbnRleHRQYXRoOiBEYXRhTW9kZWxPYmplY3RQYXRoXG4pOiBFeHByZXNzaW9uPGFueT4ge1xuXHRyZXR1cm4gdHJhbnNmb3JtUmVjdXJzaXZlbHkoYmluZGluZ0V4cHJlc3Npb24sIFwiQmluZGluZ1wiLCAoZXhwcmVzc2lvbjogQmluZGluZ0V4cHJlc3Npb25FeHByZXNzaW9uPGFueT4pID0+IHtcblx0XHRsZXQgb3V0RXhwcmVzc2lvbjogRXhwcmVzc2lvbjxhbnk+ID0gZXhwcmVzc2lvbjtcblx0XHRpZiAoZXhwcmVzc2lvbi5tb2RlbE5hbWUgPT09IHVuZGVmaW5lZCkge1xuXHRcdFx0Ly8gSW4gY2FzZSBvZiBkZWZhdWx0IG1vZGVsIHdlIHRoZW4gbmVlZCB0byByZXNvbHZlIHRoZSB0ZXh0IGFycmFuZ2VtZW50IHByb3BlcnR5XG5cdFx0XHRjb25zdCBvUHJvcGVydHlEYXRhTW9kZWxQYXRoID0gZW5oYW5jZURhdGFNb2RlbFBhdGgoZnVsbENvbnRleHRQYXRoLCBleHByZXNzaW9uLnBhdGgpO1xuXHRcdFx0b3V0RXhwcmVzc2lvbiA9IGdldEJpbmRpbmdXaXRoVGV4dEFycmFuZ2VtZW50KG9Qcm9wZXJ0eURhdGFNb2RlbFBhdGgsIGV4cHJlc3Npb24pO1xuXHRcdH1cblx0XHRyZXR1cm4gb3V0RXhwcmVzc2lvbjtcblx0fSk7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0QmluZGluZ1dpdGhUZXh0QXJyYW5nZW1lbnQgPSBmdW5jdGlvbihcblx0b1Byb3BlcnR5RGF0YU1vZGVsUGF0aDogRGF0YU1vZGVsT2JqZWN0UGF0aCxcblx0cHJvcGVydHlCaW5kaW5nRXhwcmVzc2lvbjogRXhwcmVzc2lvbjxzdHJpbmc+LFxuXHRmaWVsZEZvcm1hdE9wdGlvbnM/OiBGaWVsZEZvcm1hdE9wdGlvbnNcbik6IEV4cHJlc3Npb248c3RyaW5nPiB7XG5cdGNvbnN0IHRhcmdldERpc3BsYXlNb2RlT3ZlcnJpZGUgPSBmaWVsZEZvcm1hdE9wdGlvbnM/LmRpc3BsYXlNb2RlO1xuXHRsZXQgb3V0RXhwcmVzc2lvbiA9IHByb3BlcnR5QmluZGluZ0V4cHJlc3Npb247XG5cdGNvbnN0IG9Qcm9wZXJ0eURlZmluaXRpb24gPVxuXHRcdG9Qcm9wZXJ0eURhdGFNb2RlbFBhdGgudGFyZ2V0T2JqZWN0LnR5cGUgPT09IFwiUHJvcGVydHlQYXRoXCJcblx0XHRcdD8gKG9Qcm9wZXJ0eURhdGFNb2RlbFBhdGgudGFyZ2V0T2JqZWN0LiR0YXJnZXQgYXMgUHJvcGVydHkpXG5cdFx0XHQ6IChvUHJvcGVydHlEYXRhTW9kZWxQYXRoLnRhcmdldE9iamVjdCBhcyBQcm9wZXJ0eSk7XG5cdGNvbnN0IHRhcmdldERpc3BsYXlNb2RlID0gdGFyZ2V0RGlzcGxheU1vZGVPdmVycmlkZSB8fCBnZXREaXNwbGF5TW9kZShvUHJvcGVydHlEZWZpbml0aW9uLCBvUHJvcGVydHlEYXRhTW9kZWxQYXRoKTtcblx0Y29uc3QgY29tbW9uVGV4dCA9IG9Qcm9wZXJ0eURlZmluaXRpb24uYW5ub3RhdGlvbnM/LkNvbW1vbj8uVGV4dDtcblx0Y29uc3QgcmVsYXRpdmVMb2NhdGlvbiA9IGdldFBhdGhSZWxhdGl2ZUxvY2F0aW9uKFxuXHRcdG9Qcm9wZXJ0eURhdGFNb2RlbFBhdGguY29udGV4dExvY2F0aW9uLFxuXHRcdG9Qcm9wZXJ0eURhdGFNb2RlbFBhdGgubmF2aWdhdGlvblByb3BlcnRpZXNcblx0KS5tYXAobnAgPT4gbnAubmFtZSk7XG5cdHByb3BlcnR5QmluZGluZ0V4cHJlc3Npb24gPSBmb3JtYXRXaXRoVHlwZUluZm9ybWF0aW9uKG9Qcm9wZXJ0eURlZmluaXRpb24sIHByb3BlcnR5QmluZGluZ0V4cHJlc3Npb24pO1xuXHRpZiAodGFyZ2V0RGlzcGxheU1vZGUgIT09IFwiVmFsdWVcIiAmJiBjb21tb25UZXh0KSB7XG5cdFx0c3dpdGNoICh0YXJnZXREaXNwbGF5TW9kZSkge1xuXHRcdFx0Y2FzZSBcIkRlc2NyaXB0aW9uXCI6XG5cdFx0XHRcdG91dEV4cHJlc3Npb24gPSBhbm5vdGF0aW9uRXhwcmVzc2lvbihjb21tb25UZXh0LCByZWxhdGl2ZUxvY2F0aW9uKSBhcyBFeHByZXNzaW9uPHN0cmluZz47XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0Y2FzZSBcIkRlc2NyaXB0aW9uVmFsdWVcIjpcblx0XHRcdFx0b3V0RXhwcmVzc2lvbiA9IGZvcm1hdFJlc3VsdChcblx0XHRcdFx0XHRbYW5ub3RhdGlvbkV4cHJlc3Npb24oY29tbW9uVGV4dCwgcmVsYXRpdmVMb2NhdGlvbikgYXMgRXhwcmVzc2lvbjxzdHJpbmc+LCBwcm9wZXJ0eUJpbmRpbmdFeHByZXNzaW9uXSxcblx0XHRcdFx0XHR2YWx1ZUZvcm1hdHRlcnMuZm9ybWF0V2l0aEJyYWNrZXRzXG5cdFx0XHRcdCk7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0Y2FzZSBcIlZhbHVlRGVzY3JpcHRpb25cIjpcblx0XHRcdFx0b3V0RXhwcmVzc2lvbiA9IGZvcm1hdFJlc3VsdChcblx0XHRcdFx0XHRbcHJvcGVydHlCaW5kaW5nRXhwcmVzc2lvbiwgYW5ub3RhdGlvbkV4cHJlc3Npb24oY29tbW9uVGV4dCwgcmVsYXRpdmVMb2NhdGlvbikgYXMgRXhwcmVzc2lvbjxzdHJpbmc+XSxcblx0XHRcdFx0XHR2YWx1ZUZvcm1hdHRlcnMuZm9ybWF0V2l0aEJyYWNrZXRzXG5cdFx0XHRcdCk7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdH1cblx0fVxuXHRyZXR1cm4gb3V0RXhwcmVzc2lvbjtcbn07XG5cbmV4cG9ydCBjb25zdCBmb3JtYXRWYWx1ZVJlY3Vyc2l2ZWx5ID0gZnVuY3Rpb24oYmluZGluZ0V4cHJlc3Npb246IEV4cHJlc3Npb248YW55PiwgZnVsbENvbnRleHRQYXRoOiBEYXRhTW9kZWxPYmplY3RQYXRoKTogRXhwcmVzc2lvbjxhbnk+IHtcblx0cmV0dXJuIHRyYW5zZm9ybVJlY3Vyc2l2ZWx5KGJpbmRpbmdFeHByZXNzaW9uLCBcIkJpbmRpbmdcIiwgKGV4cHJlc3Npb246IEJpbmRpbmdFeHByZXNzaW9uRXhwcmVzc2lvbjxhbnk+KSA9PiB7XG5cdFx0bGV0IG91dEV4cHJlc3Npb246IEV4cHJlc3Npb248YW55PiA9IGV4cHJlc3Npb247XG5cdFx0aWYgKGV4cHJlc3Npb24ubW9kZWxOYW1lID09PSB1bmRlZmluZWQpIHtcblx0XHRcdC8vIEluIGNhc2Ugb2YgZGVmYXVsdCBtb2RlbCB3ZSB0aGVuIG5lZWQgdG8gcmVzb2x2ZSB0aGUgdGV4dCBhcnJhbmdlbWVudCBwcm9wZXJ0eVxuXHRcdFx0Y29uc3Qgb1Byb3BlcnR5RGF0YU1vZGVsUGF0aCA9IGVuaGFuY2VEYXRhTW9kZWxQYXRoKGZ1bGxDb250ZXh0UGF0aCwgZXhwcmVzc2lvbi5wYXRoKTtcblx0XHRcdG91dEV4cHJlc3Npb24gPSBmb3JtYXRXaXRoVHlwZUluZm9ybWF0aW9uKG9Qcm9wZXJ0eURhdGFNb2RlbFBhdGgudGFyZ2V0T2JqZWN0LCBleHByZXNzaW9uKTtcblx0XHR9XG5cdFx0cmV0dXJuIG91dEV4cHJlc3Npb247XG5cdH0pO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldFRleHRCaW5kaW5nID0gZnVuY3Rpb24oXG5cdG9Qcm9wZXJ0eURhdGFNb2RlbE9iamVjdFBhdGg6IERhdGFNb2RlbE9iamVjdFBhdGgsXG5cdGZpZWxkRm9ybWF0T3B0aW9uczogRmllbGRGb3JtYXRPcHRpb25zLFxuXHRhc09iamVjdDogYm9vbGVhbiA9IGZhbHNlXG4pOiBFeHByZXNzaW9uPHN0cmluZz4gfCBCaW5kaW5nRXhwcmVzc2lvbjxzdHJpbmc+IHtcblx0aWYgKFxuXHRcdG9Qcm9wZXJ0eURhdGFNb2RlbE9iamVjdFBhdGgudGFyZ2V0T2JqZWN0Py4kVHlwZSA9PT0gXCJjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5EYXRhRmllbGRcIiB8fFxuXHRcdG9Qcm9wZXJ0eURhdGFNb2RlbE9iamVjdFBhdGgudGFyZ2V0T2JqZWN0Py4kVHlwZSA9PT0gXCJjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5EYXRhUG9pbnRUeXBlXCIgfHxcblx0XHRvUHJvcGVydHlEYXRhTW9kZWxPYmplY3RQYXRoLnRhcmdldE9iamVjdD8uJFR5cGUgPT09IFwiY29tLnNhcC52b2NhYnVsYXJpZXMuVUkudjEuRGF0YUZpZWxkV2l0aE5hdmlnYXRpb25QYXRoXCIgfHxcblx0XHRvUHJvcGVydHlEYXRhTW9kZWxPYmplY3RQYXRoLnRhcmdldE9iamVjdD8uJFR5cGUgPT09IFwiY29tLnNhcC52b2NhYnVsYXJpZXMuVUkudjEuRGF0YUZpZWxkV2l0aFVybFwiIHx8XG5cdFx0b1Byb3BlcnR5RGF0YU1vZGVsT2JqZWN0UGF0aC50YXJnZXRPYmplY3Q/LiRUeXBlID09PSBcImNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLkRhdGFGaWVsZFdpdGhJbnRlbnRCYXNlZE5hdmlnYXRpb25cIiB8fFxuXHRcdG9Qcm9wZXJ0eURhdGFNb2RlbE9iamVjdFBhdGgudGFyZ2V0T2JqZWN0Py4kVHlwZSA9PT0gXCJjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5EYXRhRmllbGRXaXRoQWN0aW9uXCJcblx0KSB7XG5cdFx0Ly8gSWYgdGhlcmUgaXMgbm8gcmVzb2x2ZWQgcHJvcGVydHksIHRoZSB2YWx1ZSBpcyByZXR1cm5lZCBhcyBhIGNvbnN0YW50XG5cdFx0Y29uc3QgZmllbGRWYWx1ZSA9IG9Qcm9wZXJ0eURhdGFNb2RlbE9iamVjdFBhdGgudGFyZ2V0T2JqZWN0LlZhbHVlIHx8IFwiXCI7XG5cdFx0cmV0dXJuIGNvbXBpbGVCaW5kaW5nKGNvbnN0YW50KGZpZWxkVmFsdWUpKTtcblx0fVxuXHRpZiAoaXNQYXRoRXhwcmVzc2lvbihvUHJvcGVydHlEYXRhTW9kZWxPYmplY3RQYXRoLnRhcmdldE9iamVjdCkgJiYgb1Byb3BlcnR5RGF0YU1vZGVsT2JqZWN0UGF0aC50YXJnZXRPYmplY3QuJHRhcmdldCkge1xuXHRcdG9Qcm9wZXJ0eURhdGFNb2RlbE9iamVjdFBhdGggPSBlbmhhbmNlRGF0YU1vZGVsUGF0aChvUHJvcGVydHlEYXRhTW9kZWxPYmplY3RQYXRoLCBvUHJvcGVydHlEYXRhTW9kZWxPYmplY3RQYXRoLnRhcmdldE9iamVjdC5wYXRoKTtcblx0fVxuXHRjb25zdCBvQmluZGluZ0V4cHJlc3Npb24gPSBiaW5kaW5nRXhwcmVzc2lvbihnZXRDb250ZXh0UmVsYXRpdmVUYXJnZXRPYmplY3RQYXRoKG9Qcm9wZXJ0eURhdGFNb2RlbE9iamVjdFBhdGgpKTtcblx0bGV0IG9UYXJnZXRCaW5kaW5nO1xuXHRpZiAoXG5cdFx0b1Byb3BlcnR5RGF0YU1vZGVsT2JqZWN0UGF0aC50YXJnZXRPYmplY3Q/LmFubm90YXRpb25zPy5NZWFzdXJlcz8uVW5pdCB8fFxuXHRcdG9Qcm9wZXJ0eURhdGFNb2RlbE9iamVjdFBhdGgudGFyZ2V0T2JqZWN0Py5hbm5vdGF0aW9ucz8uTWVhc3VyZXM/LklTT0N1cnJlbmN5XG5cdCkge1xuXHRcdG9UYXJnZXRCaW5kaW5nID0gZ2V0QmluZGluZ1dpdGhVbml0T3JDdXJyZW5jeShvUHJvcGVydHlEYXRhTW9kZWxPYmplY3RQYXRoLCBvQmluZGluZ0V4cHJlc3Npb24pO1xuXHRcdGlmIChmaWVsZEZvcm1hdE9wdGlvbnM/Lm1lYXN1cmVEaXNwbGF5TW9kZSA9PT0gXCJIaWRkZW5cIikge1xuXHRcdFx0Ly8gVE9ETzogUmVmYWN0b3Igb25jZSB0eXBlcyBhcmUgbGVzcyBnZW5lcmljIGhlcmVcblx0XHRcdChvVGFyZ2V0QmluZGluZyBhcyBDb21wbGV4VHlwZUV4cHJlc3Npb248U3RyaW5nPikuZm9ybWF0T3B0aW9ucyA9IHtcblx0XHRcdFx0Li4uKG9UYXJnZXRCaW5kaW5nIGFzIENvbXBsZXhUeXBlRXhwcmVzc2lvbjxTdHJpbmc+KS5mb3JtYXRPcHRpb25zLFxuXHRcdFx0XHRzaG93TWVhc3VyZTogZmFsc2Vcblx0XHRcdH07XG5cdFx0fVxuXHR9IGVsc2Uge1xuXHRcdG9UYXJnZXRCaW5kaW5nID0gZ2V0QmluZGluZ1dpdGhUZXh0QXJyYW5nZW1lbnQob1Byb3BlcnR5RGF0YU1vZGVsT2JqZWN0UGF0aCwgb0JpbmRpbmdFeHByZXNzaW9uLCBmaWVsZEZvcm1hdE9wdGlvbnMpO1xuXHR9XG5cdGlmIChhc09iamVjdCkge1xuXHRcdHJldHVybiBvVGFyZ2V0QmluZGluZztcblx0fVxuXHQvLyBXZSBkb24ndCBpbmNsdWRlICQkbm9wYXRjaCBhbmQgcGFyc2VLZWVwRW1wdHlTdHJpbmcgYXMgdGhleSBtYWtlIG5vIHNlbnNlIGluIHRoZSB0ZXh0IGJpbmRpbmcgY2FzZVxuXHRyZXR1cm4gY29tcGlsZUJpbmRpbmcob1RhcmdldEJpbmRpbmcpO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldFZhbHVlQmluZGluZyA9IGZ1bmN0aW9uKFxuXHRvUHJvcGVydHlEYXRhTW9kZWxPYmplY3RQYXRoOiBEYXRhTW9kZWxPYmplY3RQYXRoLFxuXHRmaWVsZEZvcm1hdE9wdGlvbnM6IEZpZWxkRm9ybWF0T3B0aW9ucyxcblx0aWdub3JlVW5pdDogYm9vbGVhbiA9IGZhbHNlLFxuXHRpZ25vcmVGb3JtYXR0aW5nOiBib29sZWFuID0gZmFsc2UsXG5cdGJpbmRpbmdQYXJhbWV0ZXJzPzogb2JqZWN0LFxuXHR0YXJnZXRUeXBlQW55PzogYm9vbGVhbixcblx0c2hvd01lYXN1cmVPbmx5OiBib29sZWFuID0gZmFsc2Vcbik6IEJpbmRpbmdFeHByZXNzaW9uPHN0cmluZz4ge1xuXHRpZiAoaXNQYXRoRXhwcmVzc2lvbihvUHJvcGVydHlEYXRhTW9kZWxPYmplY3RQYXRoLnRhcmdldE9iamVjdCkgJiYgb1Byb3BlcnR5RGF0YU1vZGVsT2JqZWN0UGF0aC50YXJnZXRPYmplY3QuJHRhcmdldCkge1xuXHRcdGNvbnN0IG9OYXZQYXRoID0gb1Byb3BlcnR5RGF0YU1vZGVsT2JqZWN0UGF0aC50YXJnZXRFbnRpdHlUeXBlLnJlc29sdmVQYXRoKG9Qcm9wZXJ0eURhdGFNb2RlbE9iamVjdFBhdGgudGFyZ2V0T2JqZWN0LnBhdGgsIHRydWUpO1xuXHRcdG9Qcm9wZXJ0eURhdGFNb2RlbE9iamVjdFBhdGgudGFyZ2V0T2JqZWN0ID0gb05hdlBhdGgudGFyZ2V0O1xuXHRcdG9OYXZQYXRoLnZpc2l0ZWRPYmplY3RzLmZvckVhY2goKG9OYXZPYmo6IGFueSkgPT4ge1xuXHRcdFx0aWYgKG9OYXZPYmogJiYgb05hdk9iai5fdHlwZSA9PT0gXCJOYXZpZ2F0aW9uUHJvcGVydHlcIikge1xuXHRcdFx0XHRvUHJvcGVydHlEYXRhTW9kZWxPYmplY3RQYXRoLm5hdmlnYXRpb25Qcm9wZXJ0aWVzLnB1c2gob05hdk9iaik7XG5cdFx0XHR9XG5cdFx0fSk7XG5cdH1cblxuXHRjb25zdCB0YXJnZXRPYmplY3QgPSBvUHJvcGVydHlEYXRhTW9kZWxPYmplY3RQYXRoLnRhcmdldE9iamVjdDtcblx0aWYgKGlzUHJvcGVydHkodGFyZ2V0T2JqZWN0KSkge1xuXHRcdGxldCBvQmluZGluZ0V4cHJlc3Npb246IEJpbmRpbmdFeHByZXNzaW9uRXhwcmVzc2lvbjxzdHJpbmc+ID0gYmluZGluZ0V4cHJlc3Npb24oXG5cdFx0XHRnZXRDb250ZXh0UmVsYXRpdmVUYXJnZXRPYmplY3RQYXRoKG9Qcm9wZXJ0eURhdGFNb2RlbE9iamVjdFBhdGgpXG5cdFx0KSBhcyBCaW5kaW5nRXhwcmVzc2lvbkV4cHJlc3Npb248c3RyaW5nPjtcblx0XHRpZiAodGFyZ2V0T2JqZWN0LmFubm90YXRpb25zPy5Db21tdW5pY2F0aW9uPy5Jc0VtYWlsQWRkcmVzcykge1xuXHRcdFx0b0JpbmRpbmdFeHByZXNzaW9uLnR5cGUgPSBcInNhcC5mZS5jb3JlLnR5cGUuRW1haWxcIjtcblx0XHR9IGVsc2Uge1xuXHRcdFx0Y29uc3Qgb1Byb3BlcnR5VW5pdCA9IGdldEFzc29jaWF0ZWRVbml0UHJvcGVydHkob1Byb3BlcnR5RGF0YU1vZGVsT2JqZWN0UGF0aC50YXJnZXRPYmplY3QpO1xuXHRcdFx0Y29uc3Qgb1Byb3BlcnR5Q3VycmVuY3kgPSBnZXRBc3NvY2lhdGVkQ3VycmVuY3lQcm9wZXJ0eShvUHJvcGVydHlEYXRhTW9kZWxPYmplY3RQYXRoLnRhcmdldE9iamVjdCk7XG5cdFx0XHRpZiAoIWlnbm9yZVVuaXQgJiYgKG9Qcm9wZXJ0eVVuaXQgfHwgb1Byb3BlcnR5Q3VycmVuY3kpKSB7XG5cdFx0XHRcdG9CaW5kaW5nRXhwcmVzc2lvbiA9IGdldEJpbmRpbmdXaXRoVW5pdE9yQ3VycmVuY3koXG5cdFx0XHRcdFx0b1Byb3BlcnR5RGF0YU1vZGVsT2JqZWN0UGF0aCxcblx0XHRcdFx0XHRvQmluZGluZ0V4cHJlc3Npb24sXG5cdFx0XHRcdFx0IXNob3dNZWFzdXJlT25seVxuXHRcdFx0XHQpIGFzIGFueTtcblx0XHRcdFx0aWYgKFxuXHRcdFx0XHRcdChvUHJvcGVydHlVbml0ICYmICFoYXNWYWx1ZUhlbHAob1Byb3BlcnR5VW5pdCkpIHx8XG5cdFx0XHRcdFx0KG9Qcm9wZXJ0eUN1cnJlbmN5ICYmICFoYXNWYWx1ZUhlbHAob1Byb3BlcnR5Q3VycmVuY3kpKSB8fFxuXHRcdFx0XHRcdGZpZWxkRm9ybWF0T3B0aW9ucz8ubWVhc3VyZURpc3BsYXlNb2RlID09PSBcIkhpZGRlblwiXG5cdFx0XHRcdCkge1xuXHRcdFx0XHRcdC8vIElmIHRoZXJlIGlzIGEgdW5pdCBvciBjdXJyZW5jeSB3aXRob3V0IGEgdmFsdWUgaGVscCwgb3IgaW4gY2FzZSB0aGUgY3VycmVuY3kgc2hvdWxkIGJlIGV4cGxpY2l0bHkgaGlkZGVuLFxuXHRcdFx0XHRcdC8vIHdlIG5lZWQgdG8gY29uZmlndXJlIHRoZSBiaW5kaW5nIHRvIG5vdCBzaG93IHRoZSBtZWFzdXJlLCBvdGhlcndpc2UgaXQncyBuZWVkZWQgZm9yIHRoZSBtZGMgZmllbGRcblx0XHRcdFx0XHRpZiAoIW9CaW5kaW5nRXhwcmVzc2lvbi5mb3JtYXRPcHRpb25zKSB7XG5cdFx0XHRcdFx0XHRvQmluZGluZ0V4cHJlc3Npb24uZm9ybWF0T3B0aW9ucyA9IHt9O1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRpZiAoc2hvd01lYXN1cmVPbmx5KSB7XG5cdFx0XHRcdFx0XHRvQmluZGluZ0V4cHJlc3Npb24uZm9ybWF0T3B0aW9ucy5zaG93TnVtYmVyID0gZmFsc2U7XG5cdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdG9CaW5kaW5nRXhwcmVzc2lvbi5mb3JtYXRPcHRpb25zLnNob3dNZWFzdXJlID0gZmFsc2U7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRvQmluZGluZ0V4cHJlc3Npb24gPSBmb3JtYXRXaXRoVHlwZUluZm9ybWF0aW9uKHRhcmdldE9iamVjdCwgb0JpbmRpbmdFeHByZXNzaW9uKSBhcyBCaW5kaW5nRXhwcmVzc2lvbkV4cHJlc3Npb248c3RyaW5nPjtcblx0XHRcdFx0aWYgKG9CaW5kaW5nRXhwcmVzc2lvbi50eXBlID09PSBcInNhcC51aS5tb2RlbC5vZGF0YS50eXBlLlN0cmluZ1wiKSB7XG5cdFx0XHRcdFx0b0JpbmRpbmdFeHByZXNzaW9uLmZvcm1hdE9wdGlvbnMgPSB7XG5cdFx0XHRcdFx0XHRwYXJzZUtlZXBzRW1wdHlTdHJpbmc6IHRydWVcblx0XHRcdFx0XHR9O1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXHRcdGlmIChpZ25vcmVGb3JtYXR0aW5nKSB7XG5cdFx0XHRkZWxldGUgb0JpbmRpbmdFeHByZXNzaW9uLmZvcm1hdE9wdGlvbnM7XG5cdFx0XHRkZWxldGUgb0JpbmRpbmdFeHByZXNzaW9uLmNvbnN0cmFpbnRzO1xuXHRcdFx0ZGVsZXRlIG9CaW5kaW5nRXhwcmVzc2lvbi50eXBlO1xuXHRcdH1cblx0XHRpZiAoYmluZGluZ1BhcmFtZXRlcnMpIHtcblx0XHRcdG9CaW5kaW5nRXhwcmVzc2lvbi5wYXJhbWV0ZXJzID0gYmluZGluZ1BhcmFtZXRlcnM7XG5cdFx0fVxuXHRcdGlmICh0YXJnZXRUeXBlQW55KSB7XG5cdFx0XHRvQmluZGluZ0V4cHJlc3Npb24udGFyZ2V0VHlwZSA9IFwiYW55XCI7XG5cdFx0fVxuXHRcdHJldHVybiBjb21waWxlQmluZGluZyhvQmluZGluZ0V4cHJlc3Npb24pO1xuXHR9IGVsc2Uge1xuXHRcdGlmIChcblx0XHRcdHRhcmdldE9iamVjdD8uJFR5cGUgPT09IFVJQW5ub3RhdGlvblR5cGVzLkRhdGFGaWVsZFdpdGhVcmwgfHxcblx0XHRcdHRhcmdldE9iamVjdD8uJFR5cGUgPT09IFVJQW5ub3RhdGlvblR5cGVzLkRhdGFGaWVsZFdpdGhOYXZpZ2F0aW9uUGF0aFxuXHRcdCkge1xuXHRcdFx0cmV0dXJuIGNvbXBpbGVCaW5kaW5nKGFubm90YXRpb25FeHByZXNzaW9uKCh0YXJnZXRPYmplY3QgYXMgRGF0YUZpZWxkV2l0aFVybCkuVmFsdWUpKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0cmV0dXJuIFwiXCI7XG5cdFx0fVxuXHR9XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0VW5pdEJpbmRpbmcgPSBmdW5jdGlvbihvUHJvcGVydHlEYXRhTW9kZWxPYmplY3RQYXRoOiBEYXRhTW9kZWxPYmplY3RQYXRoKTogQmluZGluZ0V4cHJlc3Npb248c3RyaW5nPiB7XG5cdGNvbnN0IG9Qcm9wZXJ0eURlZmluaXRpb24gPSBvUHJvcGVydHlEYXRhTW9kZWxPYmplY3RQYXRoLnRhcmdldE9iamVjdCBhcyBQcm9wZXJ0eTtcblx0bGV0IHVuaXQgPSBvUHJvcGVydHlEZWZpbml0aW9uLmFubm90YXRpb25zPy5NZWFzdXJlcz8uVW5pdDtcblx0Y29uc3QgcmVsYXRpdmVMb2NhdGlvbiA9IGdldFBhdGhSZWxhdGl2ZUxvY2F0aW9uKFxuXHRcdG9Qcm9wZXJ0eURhdGFNb2RlbE9iamVjdFBhdGguY29udGV4dExvY2F0aW9uLFxuXHRcdG9Qcm9wZXJ0eURhdGFNb2RlbE9iamVjdFBhdGgubmF2aWdhdGlvblByb3BlcnRpZXNcblx0KS5tYXAobnAgPT4gbnAubmFtZSk7XG5cdHVuaXQgPSB1bml0ID8gdW5pdCA6IG9Qcm9wZXJ0eURlZmluaXRpb24uYW5ub3RhdGlvbnM/Lk1lYXN1cmVzPy5JU09DdXJyZW5jeTtcblx0cmV0dXJuIHVuaXQgPyBjb21waWxlQmluZGluZyhhbm5vdGF0aW9uRXhwcmVzc2lvbih1bml0LCByZWxhdGl2ZUxvY2F0aW9uKSkgOiB1bmRlZmluZWQ7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0QXNzb2NpYXRlZFRleHRCaW5kaW5nID0gZnVuY3Rpb24oXG5cdG9Qcm9wZXJ0eURhdGFNb2RlbE9iamVjdFBhdGg6IERhdGFNb2RlbE9iamVjdFBhdGgsXG5cdGZpZWxkRm9ybWF0T3B0aW9uczogRmllbGRGb3JtYXRPcHRpb25zXG4pOiBCaW5kaW5nRXhwcmVzc2lvbjxzdHJpbmc+IHtcblx0Y29uc3QgdGV4dFByb3BlcnR5UGF0aCA9IGdldEFzc29jaWF0ZWRUZXh0UHJvcGVydHlQYXRoKG9Qcm9wZXJ0eURhdGFNb2RlbE9iamVjdFBhdGgudGFyZ2V0T2JqZWN0KTtcblx0aWYgKHRleHRQcm9wZXJ0eVBhdGgpIHtcblx0XHRjb25zdCBvVGV4dFByb3BlcnR5UGF0aCA9IGVuaGFuY2VEYXRhTW9kZWxQYXRoKG9Qcm9wZXJ0eURhdGFNb2RlbE9iamVjdFBhdGgsIHRleHRQcm9wZXJ0eVBhdGgpO1xuXHRcdGNvbnN0IG9WYWx1ZUJpbmRpbmcgPSBnZXRWYWx1ZUJpbmRpbmcob1RleHRQcm9wZXJ0eVBhdGgsIGZpZWxkRm9ybWF0T3B0aW9ucywgdHJ1ZSwgdHJ1ZSwgeyAkJG5vUGF0Y2g6IHRydWUgfSk7XG5cdFx0cmV0dXJuIG9WYWx1ZUJpbmRpbmc7XG5cdH1cblx0cmV0dXJuIHVuZGVmaW5lZDtcbn07XG5cbmV4cG9ydCBjb25zdCBpc1VzZWRJbk5hdmlnYXRpb25XaXRoUXVpY2tWaWV3RmFjZXRzID0gZnVuY3Rpb24ob0RhdGFNb2RlbFBhdGg6IERhdGFNb2RlbE9iamVjdFBhdGgsIG9Qcm9wZXJ0eTogUHJvcGVydHkpOiBib29sZWFuIHtcblx0Y29uc3QgYU5hdmlnYXRpb25Qcm9wZXJ0aWVzID0gb0RhdGFNb2RlbFBhdGg/LnRhcmdldEVudGl0eVR5cGU/Lm5hdmlnYXRpb25Qcm9wZXJ0aWVzIHx8IFtdO1xuXHRsZXQgYklzVXNlZEluTmF2aWdhdGlvbldpdGhRdWlja1ZpZXdGYWNldHMgPSBmYWxzZTtcblx0YU5hdmlnYXRpb25Qcm9wZXJ0aWVzLmZvckVhY2gob05hdlByb3AgPT4ge1xuXHRcdGlmIChvTmF2UHJvcC5yZWZlcmVudGlhbENvbnN0cmFpbnQgJiYgb05hdlByb3AucmVmZXJlbnRpYWxDb25zdHJhaW50Lmxlbmd0aCkge1xuXHRcdFx0b05hdlByb3AucmVmZXJlbnRpYWxDb25zdHJhaW50LmZvckVhY2gob1JlZkNvbnN0cmFpbnQgPT4ge1xuXHRcdFx0XHRpZiAob1JlZkNvbnN0cmFpbnQ/LnNvdXJjZVByb3BlcnR5ID09PSBvUHJvcGVydHkubmFtZSkge1xuXHRcdFx0XHRcdGlmIChvTmF2UHJvcD8udGFyZ2V0VHlwZT8uYW5ub3RhdGlvbnM/LlVJPy5RdWlja1ZpZXdGYWNldHMpIHtcblx0XHRcdFx0XHRcdGJJc1VzZWRJbk5hdmlnYXRpb25XaXRoUXVpY2tWaWV3RmFjZXRzID0gdHJ1ZTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH0pO1xuXHRcdH1cblx0fSk7XG5cdHJldHVybiBiSXNVc2VkSW5OYXZpZ2F0aW9uV2l0aFF1aWNrVmlld0ZhY2V0cztcbn07XG5cbmV4cG9ydCBjb25zdCBpc1JldHJpZXZlVGV4dEZyb21WYWx1ZUxpc3RFbmFibGVkID0gZnVuY3Rpb24oXG5cdG9Qcm9wZXJ0eVBhdGg6IFByb3BlcnR5T3JQYXRoPFByb3BlcnR5Pixcblx0ZmllbGRGb3JtYXRPcHRpb25zOiBGaWVsZEZvcm1hdE9wdGlvbnNcbik6IGJvb2xlYW4ge1xuXHRjb25zdCBvUHJvcGVydHk6IFByb3BlcnR5ID0gKGlzUGF0aEV4cHJlc3Npb24ob1Byb3BlcnR5UGF0aCkgJiYgb1Byb3BlcnR5UGF0aC4kdGFyZ2V0KSB8fCAob1Byb3BlcnR5UGF0aCBhcyBQcm9wZXJ0eSk7XG5cdGlmIChcblx0XHQhKGZpZWxkRm9ybWF0T3B0aW9ucy5kaXNwbGF5TW9kZSA9PT0gXCJWYWx1ZVwiKSAmJlxuXHRcdCFvUHJvcGVydHkuYW5ub3RhdGlvbnM/LkNvbW1vbj8uVGV4dCAmJlxuXHRcdCFvUHJvcGVydHkuYW5ub3RhdGlvbnM/Lk1lYXN1cmVzICYmXG5cdFx0UHJvcGVydHlIZWxwZXIuaGFzVmFsdWVIZWxwKG9Qcm9wZXJ0eSkgJiZcblx0XHRmaWVsZEZvcm1hdE9wdGlvbnMudGV4dEFsaWduTW9kZSA9PT0gXCJGb3JtXCJcblx0KSB7XG5cdFx0cmV0dXJuIHRydWU7XG5cdH1cblx0cmV0dXJuIGZhbHNlO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldERpc3BsYXlTdHlsZSA9IGZ1bmN0aW9uKFxuXHRvUHJvcGVydHlQYXRoOiBQcm9wZXJ0eU9yUGF0aDxQcm9wZXJ0eT4sXG5cdG9EYXRhRmllbGQ6IGFueSxcblx0b0RhdGFNb2RlbFBhdGg6IERhdGFNb2RlbE9iamVjdFBhdGgsXG5cdGZpZWxkRm9ybWF0T3B0aW9uczogRmllbGRGb3JtYXRPcHRpb25zLFxuXHRzZW1hbnRpY09iamVjdDogc3RyaW5nXG4pOiBEaXNwbGF5U3R5bGUge1xuXHQvLyBhbGdvcml0aG0gdG8gZGV0ZXJtaW5lIHRoZSBmaWVsZCBmcmFnbWVudCB0byB1c2Vcblx0Y29uc3Qgb1Byb3BlcnR5OiBQcm9wZXJ0eSA9IChpc1BhdGhFeHByZXNzaW9uKG9Qcm9wZXJ0eVBhdGgpICYmIG9Qcm9wZXJ0eVBhdGguJHRhcmdldCkgfHwgKG9Qcm9wZXJ0eVBhdGggYXMgUHJvcGVydHkpO1xuXHRpZiAoXG5cdFx0c2VtYW50aWNPYmplY3QgJiZcblx0XHQhb1Byb3BlcnR5LmFubm90YXRpb25zPy5VST8uSXNJbWFnZVVSTCAmJlxuXHRcdCEob1Byb3BlcnR5LnR5cGUgPT09IFwiRWRtLlN0cmVhbVwiKSAmJlxuXHRcdCEob1Byb3BlcnR5LmFubm90YXRpb25zPy5Db21tdW5pY2F0aW9uPy5Jc0VtYWlsQWRkcmVzcyB8fCBvUHJvcGVydHkuYW5ub3RhdGlvbnM/LkNvbW11bmljYXRpb24/LklzUGhvbmVOdW1iZXIpXG5cdCkge1xuXHRcdHJldHVybiBcIkxpbmtXaXRoUXVpY2tWaWV3Rm9ybVwiO1xuXHR9XG5cdGlmICghb1Byb3BlcnR5UGF0aCB8fCB0eXBlb2Ygb1Byb3BlcnR5UGF0aCA9PT0gXCJzdHJpbmdcIikge1xuXHRcdHJldHVybiBcIlRleHRcIjtcblx0fVxuXHRpZiAob1Byb3BlcnR5LnR5cGUgPT09IFwiRWRtLlN0cmVhbVwiKSB7XG5cdFx0cmV0dXJuIFwiRmlsZVwiO1xuXHR9XG5cdGlmIChvUHJvcGVydHkuYW5ub3RhdGlvbnM/LlVJPy5Jc0ltYWdlVVJMKSB7XG5cdFx0cmV0dXJuIFwiQXZhdGFyXCI7XG5cdH1cblx0c3dpdGNoIChvRGF0YUZpZWxkLiRUeXBlKSB7XG5cdFx0Y2FzZSBcImNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLkRhdGFQb2ludFR5cGVcIjpcblx0XHRcdHJldHVybiBcIkRhdGFQb2ludFwiO1xuXHRcdGNhc2UgXCJjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5EYXRhRmllbGRGb3JBbm5vdGF0aW9uXCI6XG5cdFx0XHRpZiAob0RhdGFGaWVsZC5UYXJnZXQ/LiR0YXJnZXQ/LiRUeXBlID09PSBcImNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLkRhdGFQb2ludFR5cGVcIikge1xuXHRcdFx0XHRyZXR1cm4gXCJEYXRhUG9pbnRcIjtcblx0XHRcdH0gZWxzZSBpZiAob0RhdGFGaWVsZC5UYXJnZXQ/LiR0YXJnZXQ/LiRUeXBlID09PSBcImNvbS5zYXAudm9jYWJ1bGFyaWVzLkNvbW11bmljYXRpb24udjEuQ29udGFjdFR5cGVcIikge1xuXHRcdFx0XHRyZXR1cm4gXCJDb250YWN0XCI7XG5cdFx0XHR9XG5cdFx0XHRicmVhaztcblx0XHRjYXNlIFwiY29tLnNhcC52b2NhYnVsYXJpZXMuVUkudjEuRGF0YUZpZWxkRm9yQWN0aW9uXCI6XG5cdFx0Y2FzZSBcImNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLkRhdGFGaWVsZEZvckludGVudEJhc2VkTmF2aWdhdGlvblwiOlxuXHRcdFx0cmV0dXJuIFwiQnV0dG9uXCI7XG5cdFx0Y2FzZSBcImNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLkRhdGFGaWVsZFdpdGhOYXZpZ2F0aW9uUGF0aFwiOlxuXHRcdGNhc2UgXCJjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5EYXRhRmllbGRXaXRoSW50ZW50QmFzZWROYXZpZ2F0aW9uXCI6XG5cdFx0Y2FzZSBcImNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLkRhdGFGaWVsZFdpdGhBY3Rpb25cIjpcblx0XHRcdHJldHVybiBcIkxpbmtcIjtcblx0fVxuXHRpZiAob0RhdGFNb2RlbFBhdGg/LnRhcmdldEVudGl0eVR5cGU/LmFubm90YXRpb25zPy5Db21tb24/LlNlbWFudGljS2V5KSB7XG5cdFx0Y29uc3QgYVNlbWFudGljS2V5cyA9IG9EYXRhTW9kZWxQYXRoLnRhcmdldEVudGl0eVR5cGUuYW5ub3RhdGlvbnMuQ29tbW9uLlNlbWFudGljS2V5O1xuXHRcdGNvbnN0IGJJc1NlbWFudGljS2V5ID0gIWFTZW1hbnRpY0tleXMuZXZlcnkoZnVuY3Rpb24ob0tleSkge1xuXHRcdFx0cmV0dXJuIG9LZXk/LiR0YXJnZXQ/Lm5hbWUgIT09IG9Qcm9wZXJ0eS5uYW1lO1xuXHRcdH0pO1xuXHRcdGlmIChiSXNTZW1hbnRpY0tleSAmJiBmaWVsZEZvcm1hdE9wdGlvbnMuc2VtYW50aWNLZXlTdHlsZSkge1xuXHRcdFx0aWYgKG9EYXRhTW9kZWxQYXRoLnRhcmdldEVudGl0eVNldD8uYW5ub3RhdGlvbnM/LkNvbW1vbj8uRHJhZnRSb290KSB7XG5cdFx0XHRcdC8vICYmIGZpZWxkRm9ybWF0T3B0aW9ucy5oYXNEcmFmdEluZGljYXRvcikge1xuXHRcdFx0XHQvLyB3ZSB0aGVuIHN0aWxsIGNoZWNrIHdoZXRoZXIgdGhpcyBpcyBhdmFpbGFibGUgYXQgZGVzaWdudGltZSBvbiB0aGUgZW50aXR5c2V0XG5cdFx0XHRcdHJldHVybiBcIlNlbWFudGljS2V5V2l0aERyYWZ0SW5kaWNhdG9yXCI7XG5cdFx0XHR9XG5cdFx0XHRyZXR1cm4gZmllbGRGb3JtYXRPcHRpb25zLnNlbWFudGljS2V5U3R5bGUgPT09IFwiT2JqZWN0SWRlbnRpZmllclwiID8gXCJPYmplY3RJZGVudGlmaWVyXCIgOiBcIkxhYmVsU2VtYW50aWNLZXlcIjtcblx0XHR9XG5cdH1cblx0aWYgKG9EYXRhRmllbGQuQ3JpdGljYWxpdHkpIHtcblx0XHRyZXR1cm4gXCJPYmplY3RTdGF0dXNcIjtcblx0fVxuXHRpZiAob1Byb3BlcnR5LmFubm90YXRpb25zPy5NZWFzdXJlcz8uSVNPQ3VycmVuY3kgJiYgU3RyaW5nKGZpZWxkRm9ybWF0T3B0aW9ucy5pc0N1cnJlbmN5QWxpZ25lZCkgPT09IFwidHJ1ZVwiKSB7XG5cdFx0aWYgKGZpZWxkRm9ybWF0T3B0aW9ucy5tZWFzdXJlRGlzcGxheU1vZGUgPT09IFwiSGlkZGVuXCIpIHtcblx0XHRcdHJldHVybiBcIlRleHRcIjtcblx0XHR9XG5cdFx0cmV0dXJuIFwiQW1vdW50V2l0aEN1cnJlbmN5XCI7XG5cdH1cblx0aWYgKG9Qcm9wZXJ0eS5hbm5vdGF0aW9ucz8uQ29tbXVuaWNhdGlvbj8uSXNFbWFpbEFkZHJlc3MgfHwgb1Byb3BlcnR5LmFubm90YXRpb25zPy5Db21tdW5pY2F0aW9uPy5Jc1Bob25lTnVtYmVyKSB7XG5cdFx0cmV0dXJuIFwiTGlua1wiO1xuXHR9XG5cdGlmIChvUHJvcGVydHkuYW5ub3RhdGlvbnM/LlVJPy5NdWx0aUxpbmVUZXh0KSB7XG5cdFx0cmV0dXJuIFwiRXhwYW5kYWJsZVRleHRcIjtcblx0fVxuXG5cdGlmIChpc1VzZWRJbk5hdmlnYXRpb25XaXRoUXVpY2tWaWV3RmFjZXRzKG9EYXRhTW9kZWxQYXRoLCBvUHJvcGVydHkpKSB7XG5cdFx0cmV0dXJuIFwiTGlua1dpdGhRdWlja1ZpZXdGb3JtXCI7XG5cdH1cblx0aWYgKG9Qcm9wZXJ0eS5hbm5vdGF0aW9ucz8uQ29tbW9uPy5TZW1hbnRpY09iamVjdCkge1xuXHRcdHJldHVybiBcIkxpbmtXcmFwcGVyXCI7XG5cdH1cblx0aWYgKG9EYXRhRmllbGQuJFR5cGUgPT09IFwiY29tLnNhcC52b2NhYnVsYXJpZXMuVUkudjEuRGF0YUZpZWxkV2l0aFVybFwiKSB7XG5cdFx0cmV0dXJuIFwiTGlua1wiO1xuXHR9XG5cdGlmIChmaWVsZEZvcm1hdE9wdGlvbnMucmV0cmlldmVUZXh0RnJvbVZhbHVlTGlzdCA9PT0gdHJ1ZSkge1xuXHRcdHJldHVybiBcIk1kY0ZpZWxkV2l0aFZhbHVlSGVscFwiO1xuXHR9XG5cdHJldHVybiBcIlRleHRcIjtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRFZGl0U3R5bGUgPSBmdW5jdGlvbihcblx0b1Byb3BlcnR5UGF0aDogUHJvcGVydHlPclBhdGg8UHJvcGVydHk+LFxuXHRvRGF0YUZpZWxkOiBhbnksXG5cdG9GaWVsZEZvcm1hdE9wdGlvbnM6IEZpZWxkRm9ybWF0T3B0aW9uc1xuKTogRWRpdFN0eWxlIHwgbnVsbCB7XG5cdC8vIGFsZ29yaXRobSB0byBkZXRlcm1pbmUgdGhlIGZpZWxkIGZyYWdtZW50IHRvIHVzZVxuXHRpZiAoIW9Qcm9wZXJ0eVBhdGggfHwgdHlwZW9mIG9Qcm9wZXJ0eVBhdGggPT09IFwic3RyaW5nXCIpIHtcblx0XHRyZXR1cm4gbnVsbDtcblx0fVxuXHRjb25zdCBvUHJvcGVydHk6IFByb3BlcnR5ID0gKGlzUGF0aEV4cHJlc3Npb24ob1Byb3BlcnR5UGF0aCkgJiYgb1Byb3BlcnR5UGF0aC4kdGFyZ2V0KSB8fCAob1Byb3BlcnR5UGF0aCBhcyBQcm9wZXJ0eSk7XG5cdGlmIChvUHJvcGVydHkudHlwZSA9PT0gXCJFZG0uU3RyZWFtXCIpIHtcblx0XHRyZXR1cm4gXCJGaWxlXCI7XG5cdH1cblx0c3dpdGNoIChvRGF0YUZpZWxkLiRUeXBlKSB7XG5cdFx0Y2FzZSBcImNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLkRhdGFGaWVsZEZvckFubm90YXRpb25cIjpcblx0XHRcdGlmIChvRGF0YUZpZWxkLlRhcmdldD8uJHRhcmdldD8uJFR5cGUgPT09IFwiY29tLnNhcC52b2NhYnVsYXJpZXMuQ29tbXVuaWNhdGlvbi52MS5Db250YWN0VHlwZVwiKSB7XG5cdFx0XHRcdHJldHVybiBudWxsO1xuXHRcdFx0fSBlbHNlIGlmIChvRGF0YUZpZWxkLlRhcmdldD8uJHRhcmdldD8uVmlzdWFsaXphdGlvbiA9PT0gXCJVSS5WaXN1YWxpemF0aW9uVHlwZS9SYXRpbmdcIikge1xuXHRcdFx0XHRyZXR1cm4gXCJSYXRpbmdJbmRpY2F0b3JcIjtcblx0XHRcdH1cblx0XHRcdGJyZWFrO1xuXHRcdGNhc2UgXCJjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5EYXRhUG9pbnRUeXBlXCI6XG5cdFx0XHRpZiAob0RhdGFGaWVsZD8uVmlzdWFsaXphdGlvbiA9PT0gXCJVSS5WaXN1YWxpemF0aW9uVHlwZS9SYXRpbmdcIikge1xuXHRcdFx0XHRyZXR1cm4gXCJSYXRpbmdJbmRpY2F0b3JcIjtcblx0XHRcdH1cblx0XHRcdGJyZWFrO1xuXHRcdGNhc2UgXCJjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5EYXRhRmllbGRGb3JBY3Rpb25cIjpcblx0XHRjYXNlIFwiY29tLnNhcC52b2NhYnVsYXJpZXMuVUkudjEuRGF0YUZpZWxkV2l0aE5hdmlnYXRpb25QYXRoXCI6XG5cdFx0Y2FzZSBcImNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLkRhdGFGaWVsZEZvckludGVudEJhc2VkTmF2aWdhdGlvblwiOlxuXHRcdFx0cmV0dXJuIG51bGw7XG5cdH1cblx0Y29uc3Qgb1Byb3BlcnR5VW5pdCA9IGdldEFzc29jaWF0ZWRVbml0UHJvcGVydHkob1Byb3BlcnR5KTtcblx0Y29uc3Qgb1Byb3BlcnR5Q3VycmVuY3kgPSBnZXRBc3NvY2lhdGVkQ3VycmVuY3lQcm9wZXJ0eShvUHJvcGVydHkpO1xuXHRpZiAoXG5cdFx0KFByb3BlcnR5SGVscGVyLmhhc1ZhbHVlSGVscChvUHJvcGVydHkpICYmIG9Qcm9wZXJ0eS50eXBlICE9PSBcIkVkbS5Cb29sZWFuXCIpIHx8XG5cdFx0KG9Qcm9wZXJ0eVVuaXQgJiYgUHJvcGVydHlIZWxwZXIuaGFzVmFsdWVIZWxwKG9Qcm9wZXJ0eVVuaXQpKSB8fFxuXHRcdChvUHJvcGVydHlDdXJyZW5jeSAmJiBQcm9wZXJ0eUhlbHBlci5oYXNWYWx1ZUhlbHAob1Byb3BlcnR5Q3VycmVuY3kpKVxuXHQpIHtcblx0XHRpZiAob0ZpZWxkRm9ybWF0T3B0aW9ucz8ubWVhc3VyZURpc3BsYXlNb2RlID09PSBcIkhpZGRlblwiKSB7XG5cdFx0XHRyZXR1cm4gXCJJbnB1dFwiO1xuXHRcdH1cblx0XHRyZXR1cm4gXCJJbnB1dFdpdGhWYWx1ZUhlbHBcIjtcblx0fVxuXHRpZiAob1Byb3BlcnR5LmFubm90YXRpb25zPy5VST8uTXVsdGlMaW5lVGV4dD8udmFsdWVPZigpICYmIG9Qcm9wZXJ0eS50eXBlID09PSBcIkVkbS5TdHJpbmdcIikge1xuXHRcdHJldHVybiBcIlRleHRBcmVhXCI7XG5cdH1cblx0c3dpdGNoIChvUHJvcGVydHkudHlwZSkge1xuXHRcdGNhc2UgXCJFZG0uRGF0ZVwiOlxuXHRcdFx0cmV0dXJuIFwiRGF0ZVBpY2tlclwiO1xuXHRcdGNhc2UgXCJFZG0uVGltZVwiOlxuXHRcdGNhc2UgXCJFZG0uVGltZU9mRGF5XCI6XG5cdFx0XHRyZXR1cm4gXCJUaW1lUGlja2VyXCI7XG5cdFx0Y2FzZSBcIkVkbS5EYXRlVGltZVwiOlxuXHRcdGNhc2UgXCJFZG0uRGF0ZVRpbWVPZmZzZXRcIjpcblx0XHRcdHJldHVybiBcIkRhdGVUaW1lUGlja2VyXCI7XG5cdFx0Y2FzZSBcIkVkbS5Cb29sZWFuXCI6XG5cdFx0XHRyZXR1cm4gXCJDaGVja0JveFwiO1xuXHR9XG5cdGlmIChvUHJvcGVydHkuYW5ub3RhdGlvbnM/Lk1lYXN1cmVzPy5JU09DdXJyZW5jeSB8fCBvUHJvcGVydHkuYW5ub3RhdGlvbnM/Lk1lYXN1cmVzPy5Vbml0KSB7XG5cdFx0cmV0dXJuIFwiSW5wdXRXaXRoVW5pdFwiO1xuXHR9XG5cdHJldHVybiBcIklucHV0XCI7XG59O1xuXG4vKipcbiAqIFJldHVybnMgdGhlIGJpbmRpbmcgZXhwcmVzc2lvbiB0byBldmFsdWF0ZSB0aGUgdmlzaWJpbGl0eSBvZiBhIERhdGFGaWVsZCBvciBEYXRhUG9pbnQgYW5ub3RhdGlvbi5cbiAqXG4gKiBTQVAgRmlvcmkgZWxlbWVudHMgd2lsbCBldmFsdWF0ZSBlaXRoZXIgdGhlIFVJLkhpZGRlbiBhbm5vdGF0aW9uIGRlZmluZWQgb24gdGhlIGFubm90YXRpb24gaXRzZWxmIG9yIG9uIHRoZSB0YXJnZXQgcHJvcGVydHkuXG4gKlxuICogQHBhcmFtIHtEYXRhTW9kZWxPYmplY3RQYXRofSBkYXRhRmllbGRNb2RlbFBhdGggVGhlIG1ldGFwYXRoIHJlZmVycmluZyB0byB0aGUgYW5ub3RhdGlvbiB3ZSBhcmUgZXZhbHVhdGluZy5cbiAqIEBwYXJhbSB7RmllbGRGb3JtYXRPcHRpb25zfSBbZm9ybWF0T3B0aW9uc10gRm9ybWF0T3B0aW9ucyBvcHRpb25hbC5cbiAqIEByZXR1cm5zIHtCaW5kaW5nRXhwcmVzc2lvbjxzdHJpbmc+fSBBbiBleHByZXNzaW9uIHRoYXQgeW91IGNhbiBiaW5kIHRvIHRoZSBVSS5cbiAqL1xuZXhwb3J0IGNvbnN0IGdldFZpc2libGVFeHByZXNzaW9uID0gZnVuY3Rpb24oXG5cdGRhdGFGaWVsZE1vZGVsUGF0aDogRGF0YU1vZGVsT2JqZWN0UGF0aCxcblx0Zm9ybWF0T3B0aW9ucz86IEZpZWxkRm9ybWF0T3B0aW9uc1xuKTogQmluZGluZ0V4cHJlc3Npb248c3RyaW5nPiB7XG5cdGNvbnN0IHRhcmdldE9iamVjdDogRGF0YUZpZWxkQWJzdHJhY3RUeXBlcyB8IERhdGFQb2ludFR5cGVUeXBlcyA9IGRhdGFGaWVsZE1vZGVsUGF0aC50YXJnZXRPYmplY3Q7XG5cdGxldCBwcm9wZXJ0eVZhbHVlO1xuXHRpZiAodGFyZ2V0T2JqZWN0KSB7XG5cdFx0c3dpdGNoICh0YXJnZXRPYmplY3QuJFR5cGUpIHtcblx0XHRcdGNhc2UgVUlBbm5vdGF0aW9uVHlwZXMuRGF0YUZpZWxkOlxuXHRcdFx0Y2FzZSBVSUFubm90YXRpb25UeXBlcy5EYXRhRmllbGRXaXRoVXJsOlxuXHRcdFx0Y2FzZSBVSUFubm90YXRpb25UeXBlcy5EYXRhRmllbGRXaXRoTmF2aWdhdGlvblBhdGg6XG5cdFx0XHRjYXNlIFVJQW5ub3RhdGlvblR5cGVzLkRhdGFGaWVsZFdpdGhJbnRlbnRCYXNlZE5hdmlnYXRpb246XG5cdFx0XHRjYXNlIFVJQW5ub3RhdGlvblR5cGVzLkRhdGFGaWVsZFdpdGhBY3Rpb246XG5cdFx0XHRjYXNlIFVJQW5ub3RhdGlvblR5cGVzLkRhdGFQb2ludFR5cGU6XG5cdFx0XHRcdHByb3BlcnR5VmFsdWUgPSB0YXJnZXRPYmplY3QuVmFsdWUuJHRhcmdldDtcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHRjYXNlIFVJQW5ub3RhdGlvblR5cGVzLkRhdGFGaWVsZEZvckFubm90YXRpb246XG5cdFx0XHRcdC8vIGlmIGl0IGlzIGEgRGF0YUZpZWxkRm9yQW5ub3RhdGlvbiBwb2ludGluZyB0byBhIERhdGFQb2ludCB3ZSBsb29rIGF0IHRoZSBkYXRhUG9pbnQncyB2YWx1ZVxuXHRcdFx0XHRpZiAodGFyZ2V0T2JqZWN0Py5UYXJnZXQ/LiR0YXJnZXQ/LiRUeXBlID09PSBVSUFubm90YXRpb25UeXBlcy5EYXRhUG9pbnRUeXBlKSB7XG5cdFx0XHRcdFx0cHJvcGVydHlWYWx1ZSA9IHRhcmdldE9iamVjdC5UYXJnZXQuJHRhcmdldD8uVmFsdWUuJHRhcmdldDtcblx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0fVxuXHRcdFx0Ly8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWZhbGx0aHJvdWdoXG5cdFx0XHRjYXNlIFVJQW5ub3RhdGlvblR5cGVzLkRhdGFGaWVsZEZvckludGVudEJhc2VkTmF2aWdhdGlvbjpcblx0XHRcdGNhc2UgVUlBbm5vdGF0aW9uVHlwZXMuRGF0YUZpZWxkRm9yQWN0aW9uOlxuXHRcdFx0ZGVmYXVsdDpcblx0XHRcdFx0cHJvcGVydHlWYWx1ZSA9IHVuZGVmaW5lZDtcblx0XHR9XG5cdH1cblx0Y29uc3QgaXNBbmFseXRpY2FsR3JvdXBIZWFkZXJFeHBhbmRlZCA9IGZvcm1hdE9wdGlvbnM/LmlzQW5hbHl0aWNzID8gVUkuSXNFeHBhbmRlZCA6IGNvbnN0YW50KGZhbHNlKTtcblx0Y29uc3QgaXNBbmFseXRpY2FsTGVhZiA9IGZvcm1hdE9wdGlvbnM/LmlzQW5hbHl0aWNzID8gZXF1YWwoVUkuTm9kZUxldmVsLCAwKSA6IGNvbnN0YW50KGZhbHNlKTtcblxuXHQvLyBBIGRhdGEgZmllbGQgaXMgdmlzaWJsZSBpZjpcblx0Ly8gLSB0aGUgVUkuSGlkZGVuIGV4cHJlc3Npb24gaW4gdGhlIG9yaWdpbmFsIGFubm90YXRpb24gZG9lcyBub3QgZXZhbHVhdGUgdG8gJ3RydWUnXG5cdC8vIC0gdGhlIFVJLkhpZGRlbiBleHByZXNzaW9uIGluIHRoZSB0YXJnZXQgcHJvcGVydHkgZG9lcyBub3QgZXZhbHVhdGUgdG8gJ3RydWUnXG5cdC8vIC0gaW4gY2FzZSBvZiBBbmFseXRpY3MgaXQncyBub3QgdmlzaWJsZSBmb3IgYW4gZXhwYW5kZWQgR3JvdXBIZWFkZXJcblx0cmV0dXJuIGNvbXBpbGVCaW5kaW5nKFxuXHRcdGFuZChcblx0XHRcdC4uLltcblx0XHRcdFx0bm90KGVxdWFsKGFubm90YXRpb25FeHByZXNzaW9uKHRhcmdldE9iamVjdD8uYW5ub3RhdGlvbnM/LlVJPy5IaWRkZW4pLCB0cnVlKSksXG5cdFx0XHRcdGlmRWxzZShcblx0XHRcdFx0XHQhIXByb3BlcnR5VmFsdWUsXG5cdFx0XHRcdFx0cHJvcGVydHlWYWx1ZSAmJiBub3QoZXF1YWwoYW5ub3RhdGlvbkV4cHJlc3Npb24ocHJvcGVydHlWYWx1ZS5hbm5vdGF0aW9ucz8uVUk/LkhpZGRlbiksIHRydWUpKSxcblx0XHRcdFx0XHR0cnVlXG5cdFx0XHRcdCksXG5cdFx0XHRcdG9yKG5vdChpc0FuYWx5dGljYWxHcm91cEhlYWRlckV4cGFuZGVkKSwgaXNBbmFseXRpY2FsTGVhZilcblx0XHRcdF1cblx0XHQpXG5cdCk7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0SW5wdXREZXNjcmlwdGlvbiA9IGZ1bmN0aW9uKFxuXHRvUHJvcGVydHlQYXRoOiBQcm9wZXJ0eU9yUGF0aDxQcm9wZXJ0eT4sXG5cdGRlc2NyaXB0aW9uQmluZGluZ0V4cHJlc3Npb246IEJpbmRpbmdFeHByZXNzaW9uPHN0cmluZz5cbik6IEJpbmRpbmdFeHByZXNzaW9uPHN0cmluZz4ge1xuXHRjb25zdCBvUHJvcGVydHkgPSAoaXNQYXRoRXhwcmVzc2lvbihvUHJvcGVydHlQYXRoKSAmJiBvUHJvcGVydHlQYXRoLiR0YXJnZXQpIHx8IChvUHJvcGVydHlQYXRoIGFzIFByb3BlcnR5KTtcblx0Y29uc3QgdW5pdFByb3BlcnR5ID0gZ2V0QXNzb2NpYXRlZEN1cnJlbmN5UHJvcGVydHkob1Byb3BlcnR5KSB8fCBnZXRBc3NvY2lhdGVkVW5pdFByb3BlcnR5KG9Qcm9wZXJ0eSk7XG5cdGlmICghdW5pdFByb3BlcnR5KSB7XG5cdFx0cmV0dXJuIGNvbXBpbGVCaW5kaW5nKFwiXCIpO1xuXHR9XG5cdGNvbnN0IGVkaXRhYmxlRXhwcmVzc2lvbiA9IGFuZChub3QoaXNSZWFkT25seUV4cHJlc3Npb24odW5pdFByb3BlcnR5KSksIG5vdChQcm9wZXJ0eUhlbHBlci5pc0NvbXB1dGVkKHVuaXRQcm9wZXJ0eSkpKTtcblx0cmV0dXJuIGNvbXBpbGVCaW5kaW5nKGlmRWxzZShlZGl0YWJsZUV4cHJlc3Npb24sIFwiXCIsIGRlc2NyaXB0aW9uQmluZGluZ0V4cHJlc3Npb24pKTtcbn07XG5cbmV4cG9ydCBjb25zdCBRVlRleHRCaW5kaW5nID0gZnVuY3Rpb24oXG5cdG9Qcm9wZXJ0eURhdGFNb2RlbE9iamVjdFBhdGg6IERhdGFNb2RlbE9iamVjdFBhdGgsXG5cdG9Qcm9wZXJ0eVZhbHVlRGF0YU1vZGVsT2JqZWN0UGF0aDogRGF0YU1vZGVsT2JqZWN0UGF0aCxcblx0ZmllbGRGb3JtYXRPcHRpb25zOiBGaWVsZEZvcm1hdE9wdGlvbnMsXG5cdGFzT2JqZWN0OiBib29sZWFuID0gZmFsc2Vcbikge1xuXHRsZXQgcmV0dXJuVmFsdWU6IGFueSA9IGdldFZhbHVlQmluZGluZyhvUHJvcGVydHlEYXRhTW9kZWxPYmplY3RQYXRoLCBmaWVsZEZvcm1hdE9wdGlvbnMsIGFzT2JqZWN0KTtcblx0aWYgKHJldHVyblZhbHVlID09PSBcIlwiKSB7XG5cdFx0cmV0dXJuVmFsdWUgPSBnZXRUZXh0QmluZGluZyhvUHJvcGVydHlWYWx1ZURhdGFNb2RlbE9iamVjdFBhdGgsIGZpZWxkRm9ybWF0T3B0aW9ucywgYXNPYmplY3QpO1xuXHR9XG5cdHJldHVybiByZXR1cm5WYWx1ZTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRRdWlja1ZpZXdUeXBlID0gZnVuY3Rpb24ob1Byb3BlcnR5RGF0YU1vZGVsT2JqZWN0UGF0aDogRGF0YU1vZGVsT2JqZWN0UGF0aCk6IHN0cmluZyB7XG5cdGNvbnN0IHRhcmdldE9iamVjdCA9IG9Qcm9wZXJ0eURhdGFNb2RlbE9iamVjdFBhdGgudGFyZ2V0T2JqZWN0O1xuXHRpZiAodGFyZ2V0T2JqZWN0Py4kdGFyZ2V0Py5hbm5vdGF0aW9ucz8uQ29tbXVuaWNhdGlvbj8uSXNFbWFpbEFkZHJlc3MpIHtcblx0XHRyZXR1cm4gXCJlbWFpbFwiO1xuXHR9XG5cdGlmICh0YXJnZXRPYmplY3Q/LiR0YXJnZXQ/LmFubm90YXRpb25zPy5Db21tdW5pY2F0aW9uPy5Jc1Bob25lTnVtYmVyKSB7XG5cdFx0cmV0dXJuIFwicGhvbmVcIjtcblx0fVxuXHRyZXR1cm4gXCJ0ZXh0XCI7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0U2VtYW50aWNPYmplY3RFeHByZXNzaW9uVG9SZXNvbHZlID0gZnVuY3Rpb24ob0Fubm90YXRpb25zOiBhbnkpOiBhbnlbXSB7XG5cdGNvbnN0IGFTZW1PYmpFeHByVG9SZXNvbHZlOiBhbnlbXSA9IFtdO1xuXHRpZiAob0Fubm90YXRpb25zKSB7XG5cdFx0Y29uc3QgYVNlbU9iamtleXMgPSBPYmplY3Qua2V5cyhvQW5ub3RhdGlvbnMpLmZpbHRlcihmdW5jdGlvbihlbGVtZW50KSB7XG5cdFx0XHRyZXR1cm4gZWxlbWVudCA9PT0gXCJTZW1hbnRpY09iamVjdFwiIHx8IGVsZW1lbnQuc3RhcnRzV2l0aChcIlNlbWFudGljT2JqZWN0I1wiKTtcblx0XHR9KTtcblx0XHRmb3IgKGxldCBpU2VtT2JqQ291bnQgPSAwOyBpU2VtT2JqQ291bnQgPCBhU2VtT2Jqa2V5cy5sZW5ndGg7IGlTZW1PYmpDb3VudCsrKSB7XG5cdFx0XHRjb25zdCBzU2VtT2JqRXhwcmVzc2lvbiA9IGNvbXBpbGVCaW5kaW5nKGFubm90YXRpb25FeHByZXNzaW9uKG9Bbm5vdGF0aW9uc1thU2VtT2Jqa2V5c1tpU2VtT2JqQ291bnRdXSkpO1xuXHRcdFx0YVNlbU9iakV4cHJUb1Jlc29sdmUucHVzaCh7XG5cdFx0XHRcdGtleTogc1NlbU9iakV4cHJlc3Npb24/LmluZGV4T2YoXCJ7XCIpID09PSAtMSA/IHNTZW1PYmpFeHByZXNzaW9uIDogc1NlbU9iakV4cHJlc3Npb24/LnNwbGl0KFwie1wiKVsxXS5zcGxpdChcIn1cIilbMF0sXG5cdFx0XHRcdHZhbHVlOiBzU2VtT2JqRXhwcmVzc2lvblxuXHRcdFx0fSk7XG5cdFx0fVxuXHR9XG5cdHJldHVybiBhU2VtT2JqRXhwclRvUmVzb2x2ZTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRTZW1hbnRpY09iamVjdHMgPSBmdW5jdGlvbihhU2VtT2JqRXhwclRvUmVzb2x2ZTogYW55W10pOiBhbnkge1xuXHRpZiAoYVNlbU9iakV4cHJUb1Jlc29sdmUubGVuZ3RoID4gMCkge1xuXHRcdGxldCBzQ3VzdG9tRGF0YUtleTogc3RyaW5nID0gXCJcIjtcblx0XHRsZXQgc0N1c3RvbURhdGFWYWx1ZTogYW55ID0gXCJcIjtcblx0XHRjb25zdCBhU2VtT2JqQ3VzdG9tRGF0YTogYW55W10gPSBbXTtcblx0XHRmb3IgKGxldCBpU2VtT2JqQ291bnQgPSAwOyBpU2VtT2JqQ291bnQgPCBhU2VtT2JqRXhwclRvUmVzb2x2ZS5sZW5ndGg7IGlTZW1PYmpDb3VudCsrKSB7XG5cdFx0XHRzQ3VzdG9tRGF0YUtleSA9IGFTZW1PYmpFeHByVG9SZXNvbHZlW2lTZW1PYmpDb3VudF0ua2V5O1xuXHRcdFx0c0N1c3RvbURhdGFWYWx1ZSA9IGNvbXBpbGVCaW5kaW5nKGFubm90YXRpb25FeHByZXNzaW9uKGFTZW1PYmpFeHByVG9SZXNvbHZlW2lTZW1PYmpDb3VudF0udmFsdWUpKTtcblx0XHRcdGFTZW1PYmpDdXN0b21EYXRhLnB1c2goe1xuXHRcdFx0XHRrZXk6IHNDdXN0b21EYXRhS2V5LFxuXHRcdFx0XHR2YWx1ZTogc0N1c3RvbURhdGFWYWx1ZVxuXHRcdFx0fSk7XG5cdFx0fVxuXHRcdGNvbnN0IG9TZW1hbnRpY09iamVjdHNNb2RlbDogYW55ID0gbmV3IEpTT05Nb2RlbChhU2VtT2JqQ3VzdG9tRGF0YSk7XG5cdFx0b1NlbWFudGljT2JqZWN0c01vZGVsLiQkdmFsdWVBc1Byb21pc2UgPSB0cnVlO1xuXHRcdGNvbnN0IG9TZW1PYmpCaW5kaW5nQ29udGV4dDogYW55ID0gb1NlbWFudGljT2JqZWN0c01vZGVsLmNyZWF0ZUJpbmRpbmdDb250ZXh0KFwiL1wiKTtcblx0XHRyZXR1cm4gb1NlbU9iakJpbmRpbmdDb250ZXh0O1xuXHR9IGVsc2Uge1xuXHRcdHJldHVybiBuZXcgSlNPTk1vZGVsKFtdKS5jcmVhdGVCaW5kaW5nQ29udGV4dChcIi9cIik7XG5cdH1cbn07XG5cbi8qKlxuICogTWV0aG9kIHRvIGdldCBNdWx0aXBsZUxpbmVzIGZvciBhIERhdGFGaWVsZC5cbiAqXG4gKiBAbmFtZSBnZXRNdWx0aXBsZUxpbmVzRm9yRGF0YUZpZWxkXG4gKiBAcGFyYW0ge2FueX0gb1RoaXMgVGhlIGN1cnJlbnQgb2JqZWN0XG4gKiBAcGFyYW0ge3N0cmluZ30gc1Byb3BlcnR5VHlwZSBUaGUgcHJvcGVydHkgdHlwZVxuICogQHBhcmFtIHtib29sZWFufSBpc011bHRpTGluZVRleHQgVGhlIHByb3BlcnR5IGlzTXVsdGlMaW5lVGV4dFxuICogQHJldHVybnMge0JpbmRpbmdFeHByZXNzaW9uPHN0cmluZz59IFRoZSBiaW5kaW5nIGV4cHJlc3Npb24gdG8gZGV0ZXJtaW5lIGlmIGEgZGF0YSBmaWVsZCBzaG91bGQgYmUgYSBNdWx0aUxpbmVUZXh0IG9yIG5vdFxuICpcbiAqIEBwdWJsaWNcbiAqL1xuXG5leHBvcnQgY29uc3QgZ2V0TXVsdGlwbGVMaW5lc0ZvckRhdGFGaWVsZCA9IGZ1bmN0aW9uKG9UaGlzOiBhbnksIHNQcm9wZXJ0eVR5cGU6IHN0cmluZywgaXNNdWx0aUxpbmVUZXh0OiBib29sZWFuKTogYW55IHtcblx0aWYgKG9UaGlzLndyYXAgPT09IFwiZmFsc2VcIikge1xuXHRcdHJldHVybiBmYWxzZTtcblx0fVxuXHRpZiAoc1Byb3BlcnR5VHlwZSAhPT0gXCJFZG0uU3RyaW5nXCIpIHtcblx0XHRyZXR1cm4gaXNNdWx0aUxpbmVUZXh0O1xuXHR9XG5cdGlmIChvVGhpcy5lZGl0TW9kZSA9PT0gXCJEaXNwbGF5XCIpIHtcblx0XHRyZXR1cm4gdHJ1ZTtcblx0fVxuXHRpZiAob1RoaXMuZWRpdE1vZGUuaW5kZXhPZihcIntcIikgPiAtMSkge1xuXHRcdC8vIElmIHRoZSBlZGl0TW9kZSBpcyBjb21wdXRlZCB0aGVuIHdlIGp1c3QgY2FyZSBhYm91dCB0aGUgcGFnZSBlZGl0TW9kZSB0byBkZXRlcm1pbmUgaWYgdGhlIG11bHRpbGluZSBwcm9wZXJ0eSBzaG91bGQgYmUgdGFrZW4gaW50byBhY2NvdW50XG5cdFx0cmV0dXJuIGNvbXBpbGVCaW5kaW5nKG9yKGVxdWFsKGJpbmRpbmdFeHByZXNzaW9uKFwiL2VkaXRNb2RlXCIsIFwidWlcIiksIGNvbnN0YW50KFwiRGlzcGxheVwiKSksIGlzTXVsdGlMaW5lVGV4dCkpO1xuXHR9XG5cdHJldHVybiBpc011bHRpTGluZVRleHQ7XG59O1xuXG5leHBvcnQgY29uc3QgX2dldERyYWZ0QWRtaW5pc3RyYXRpdmVEYXRhVHlwZSA9IGZ1bmN0aW9uKG9NZXRhTW9kZWw6IGFueSwgc0VudGl0eVR5cGU6IHN0cmluZykge1xuXHRyZXR1cm4gb01ldGFNb2RlbC5yZXF1ZXN0T2JqZWN0KFwiL1wiICsgc0VudGl0eVR5cGUgKyBcIi9EcmFmdEFkbWluaXN0cmF0aXZlRGF0YS9cIik7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0QmluZGluZ0ZvckRyYWZ0QWRtaW5CbG9ja0lubGluZSA9IGZ1bmN0aW9uKGlDb250ZXh0OiBhbnksIHNFbnRpdHlUeXBlOiBzdHJpbmcpOiBCaW5kaW5nRXhwcmVzc2lvbjxzdHJpbmc+IHtcblx0cmV0dXJuIF9nZXREcmFmdEFkbWluaXN0cmF0aXZlRGF0YVR5cGUoaUNvbnRleHQuZ2V0TW9kZWwoKSwgc0VudGl0eVR5cGUpLnRoZW4oZnVuY3Rpb24ob0RBREVudGl0eVR5cGU6IGFueSkge1xuXHRcdGNvbnN0IGFCaW5kaW5ncyA9IFtdO1xuXG5cdFx0aWYgKG9EQURFbnRpdHlUeXBlLkluUHJvY2Vzc0J5VXNlckRlc2NyaXB0aW9uKSB7XG5cdFx0XHRhQmluZGluZ3MucHVzaChiaW5kaW5nRXhwcmVzc2lvbihcIkRyYWZ0QWRtaW5pc3RyYXRpdmVEYXRhL0luUHJvY2Vzc0J5VXNlckRlc2NyaXB0aW9uXCIpKTtcblx0XHR9XG5cblx0XHRhQmluZGluZ3MucHVzaChiaW5kaW5nRXhwcmVzc2lvbihcIkRyYWZ0QWRtaW5pc3RyYXRpdmVEYXRhL0luUHJvY2Vzc0J5VXNlclwiKSk7XG5cblx0XHRpZiAob0RBREVudGl0eVR5cGUuTGFzdENoYW5nZWRCeVVzZXJEZXNjcmlwdGlvbikge1xuXHRcdFx0YUJpbmRpbmdzLnB1c2goYmluZGluZ0V4cHJlc3Npb24oXCJEcmFmdEFkbWluaXN0cmF0aXZlRGF0YS9MYXN0Q2hhbmdlZEJ5VXNlckRlc2NyaXB0aW9uXCIpKTtcblx0XHR9XG5cblx0XHRhQmluZGluZ3MucHVzaChiaW5kaW5nRXhwcmVzc2lvbihcIkRyYWZ0QWRtaW5pc3RyYXRpdmVEYXRhL0xhc3RDaGFuZ2VkQnlVc2VyXCIpKTtcblxuXHRcdHJldHVybiBjb21waWxlQmluZGluZyhpZkVsc2UoYmluZGluZ0V4cHJlc3Npb24oXCJIYXNEcmFmdEVudGl0eVwiKSwgb3IoLi4uYUJpbmRpbmdzKSwgcmVzb2x2ZUJpbmRpbmdTdHJpbmcoXCJcIikpKTtcblx0fSk7XG59O1xuZ2V0QmluZGluZ0ZvckRyYWZ0QWRtaW5CbG9ja0lubGluZS5yZXF1aXJlc0lDb250ZXh0ID0gdHJ1ZTtcbiJdfQ==
|