@sapui5/sap.fe.core 1.103.0 → 1.106.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 +5 -5
- package/src/sap/fe/core/.library +1 -1
- package/src/sap/fe/core/ActionRuntime.js +121 -0
- package/src/sap/fe/core/ActionRuntime.ts +122 -0
- package/src/sap/fe/core/AppComponent.js +24 -11
- package/src/sap/fe/core/AppComponent.ts +17 -5
- package/src/sap/fe/core/AppStateHandler.js +74 -62
- package/src/sap/fe/core/AppStateHandler.ts +24 -29
- package/src/sap/fe/core/BaseController.js +2 -2
- package/src/sap/fe/core/CommonUtils.js +147 -180
- package/src/sap/fe/core/CommonUtils.ts +166 -193
- package/src/sap/fe/core/ExtensionAPI.js +2 -2
- package/src/sap/fe/core/PageController.js +2 -2
- package/src/sap/fe/core/TemplateComponent.js +21 -10
- package/src/sap/fe/core/TemplateComponent.ts +3 -0
- package/src/sap/fe/core/TemplateModel.js +2 -2
- package/src/sap/fe/core/buildingBlocks/AttributeModel.js +11 -3
- package/src/sap/fe/core/buildingBlocks/AttributeModel.ts +7 -1
- package/src/sap/fe/core/buildingBlocks/BuildingBlock.js +194 -43
- package/src/sap/fe/core/buildingBlocks/BuildingBlock.ts +162 -24
- package/src/sap/fe/core/buildingBlocks/BuildingBlockFormatter.js +14 -0
- package/src/sap/fe/core/buildingBlocks/BuildingBlockFormatter.ts +5 -0
- package/src/sap/fe/core/buildingBlocks/BuildingBlockRuntime.js +609 -227
- package/src/sap/fe/core/buildingBlocks/BuildingBlockRuntime.ts +268 -119
- package/src/sap/fe/core/buildingBlocks/TraceInfo.js +111 -76
- package/src/sap/fe/core/buildingBlocks/TraceInfo.ts +96 -76
- package/src/sap/fe/core/controllerextensions/BusyLocker.js +1 -1
- package/src/sap/fe/core/controllerextensions/EditFlow.js +723 -637
- package/src/sap/fe/core/controllerextensions/EditFlow.ts +361 -398
- package/src/sap/fe/core/controllerextensions/IntentBasedNavigation.js +2 -2
- package/src/sap/fe/core/controllerextensions/InternalEditFlow.js +83 -55
- package/src/sap/fe/core/controllerextensions/InternalEditFlow.ts +42 -44
- package/src/sap/fe/core/controllerextensions/InternalIntentBasedNavigation.js +29 -27
- package/src/sap/fe/core/controllerextensions/InternalIntentBasedNavigation.ts +35 -30
- package/src/sap/fe/core/controllerextensions/InternalRouting.js +171 -74
- package/src/sap/fe/core/controllerextensions/InternalRouting.ts +167 -76
- package/src/sap/fe/core/controllerextensions/KPIManagement.js +5 -21
- package/src/sap/fe/core/controllerextensions/KPIManagement.ts +2 -17
- package/src/sap/fe/core/controllerextensions/MassEdit.js +3 -3
- package/src/sap/fe/core/controllerextensions/MassEdit.ts +1 -1
- package/src/sap/fe/core/controllerextensions/MessageHandler.js +2 -2
- package/src/sap/fe/core/controllerextensions/PageReady.js +3 -3
- package/src/sap/fe/core/controllerextensions/PageReady.ts +5 -1
- package/src/sap/fe/core/controllerextensions/Paginator.js +13 -13
- package/src/sap/fe/core/controllerextensions/Paginator.ts +11 -11
- package/src/sap/fe/core/controllerextensions/Placeholder.js +2 -2
- package/src/sap/fe/core/controllerextensions/Routing.js +2 -2
- package/src/sap/fe/core/controllerextensions/RoutingListener.js +1 -1
- package/src/sap/fe/core/controllerextensions/Share.js +154 -123
- package/src/sap/fe/core/controllerextensions/Share.ts +93 -95
- package/src/sap/fe/core/controllerextensions/SideEffects.js +157 -97
- package/src/sap/fe/core/controllerextensions/SideEffects.ts +151 -95
- package/src/sap/fe/core/controllerextensions/ViewState.js +151 -80
- package/src/sap/fe/core/controllerextensions/ViewState.ts +95 -93
- package/src/sap/fe/core/controllerextensions/collaboration/ActivityBase.js +1 -1
- package/src/sap/fe/core/controllerextensions/collaboration/ActivitySync.js +9 -9
- package/src/sap/fe/core/controllerextensions/collaboration/ActivitySync.ts +6 -7
- package/src/sap/fe/core/controllerextensions/collaboration/CollaborationCommon.js +26 -11
- package/src/sap/fe/core/controllerextensions/collaboration/CollaborationCommon.ts +30 -11
- package/src/sap/fe/core/controllerextensions/collaboration/Manage.js +57 -40
- package/src/sap/fe/core/controllerextensions/collaboration/Manage.ts +55 -47
- package/src/sap/fe/core/controllerextensions/collaboration/ManageDialog.fragment.xml +31 -32
- package/src/sap/fe/core/controllerextensions/editFlow/TransactionHelper.js +1376 -914
- package/src/sap/fe/core/controllerextensions/editFlow/TransactionHelper.ts +654 -714
- package/src/sap/fe/core/controllerextensions/editFlow/draft.js +372 -326
- package/src/sap/fe/core/controllerextensions/editFlow/draft.ts +210 -276
- package/src/sap/fe/core/controllerextensions/editFlow/draftDataLossPopup.js +309 -0
- package/src/sap/fe/core/controllerextensions/editFlow/draftDataLossPopup.ts +320 -0
- package/src/sap/fe/core/controllerextensions/editFlow/operations.js +670 -521
- package/src/sap/fe/core/controllerextensions/editFlow/operations.ts +537 -535
- package/src/sap/fe/core/controllerextensions/editFlow/sticky.js +85 -65
- package/src/sap/fe/core/controllerextensions/editFlow/sticky.ts +16 -21
- package/src/sap/fe/core/controllerextensions/messageHandler/messageHandling.js +25 -13
- package/src/sap/fe/core/controllerextensions/messageHandler/messageHandling.ts +53 -43
- package/src/sap/fe/core/controllerextensions/routing/RouterProxy.js +18 -27
- package/src/sap/fe/core/controllerextensions/routing/RouterProxy.ts +9 -15
- package/src/sap/fe/core/controls/ActionParameterDialog.fragment.xml +19 -3
- package/src/sap/fe/core/controls/ActionParameterDialogFieldValueHelp.fragment.xml +35 -0
- package/src/sap/fe/core/controls/ActionParameterDialogValueHelp.fragment.xml +26 -16
- package/src/sap/fe/core/controls/Any.js +1 -1
- package/src/sap/fe/core/controls/CommandExecution.js +2 -2
- package/src/sap/fe/core/controls/ConditionalWrapper.js +2 -2
- package/src/sap/fe/core/controls/CustomFilterFieldContentWrapper.js +5 -5
- package/src/sap/fe/core/controls/CustomFilterFieldContentWrapper.ts +0 -3
- package/src/sap/fe/core/controls/CustomQuickViewPage.js +2 -2
- package/src/sap/fe/core/controls/DataLossOrDraftDiscard/DataLossOrDraftDiscardHandler.js +1 -1
- package/src/sap/fe/core/controls/FieldWrapper.js +2 -2
- package/src/sap/fe/core/controls/FileWrapper.js +8 -3
- package/src/sap/fe/core/controls/FileWrapper.ts +5 -1
- package/src/sap/fe/core/controls/FilterBar.js +2 -2
- package/src/sap/fe/core/controls/FormElementWrapper.js +2 -2
- package/src/sap/fe/core/controls/MassEditSelect.js +1 -1
- package/src/sap/fe/core/controls/MultiValueParameterDelegate.js +1 -1
- package/src/sap/fe/core/controls/NonComputedVisibleKeyFieldsDialog.fragment.xml +48 -17
- package/src/sap/fe/core/controls/filterbar/FilterContainer.js +2 -2
- package/src/sap/fe/core/controls/filterbar/VisualFilter.js +2 -2
- package/src/sap/fe/core/controls/filterbar/VisualFilterContainer.js +2 -2
- package/src/sap/fe/core/controls/filterbar/utils/VisualFilterUtils.js +3 -3
- package/src/sap/fe/core/controls/filterbar/utils/VisualFilterUtils.ts +2 -2
- package/src/sap/fe/core/controls/massEdit/MassEditField.fragment.xml +22 -35
- package/src/sap/fe/core/controls/massEdit/MassEditHandlers.js +2 -2
- package/src/sap/fe/core/controls/massEdit/MassEditHandlers.ts +1 -1
- package/src/sap/fe/core/converters/ConverterContext.js +23 -2
- package/src/sap/fe/core/converters/ConverterContext.ts +34 -9
- package/src/sap/fe/core/converters/ManifestSettings.js +19 -18
- package/src/sap/fe/core/converters/ManifestSettings.ts +53 -47
- package/src/sap/fe/core/converters/ManifestWrapper.js +1 -1
- package/src/sap/fe/core/converters/MetaModelConverter.js +32 -10
- package/src/sap/fe/core/converters/MetaModelConverter.ts +42 -19
- package/src/sap/fe/core/converters/TemplateConverter.js +1 -1
- package/src/sap/fe/core/converters/annotations/DataField.js +5 -2
- package/src/sap/fe/core/converters/annotations/DataField.ts +5 -1
- package/src/sap/fe/core/converters/common/AnnotationConverter.js +69 -23
- package/src/sap/fe/core/converters/controls/Common/Action.js +98 -51
- package/src/sap/fe/core/converters/controls/Common/Action.ts +121 -44
- package/src/sap/fe/core/converters/controls/Common/Chart.js +31 -34
- package/src/sap/fe/core/converters/controls/Common/Chart.ts +26 -34
- package/src/sap/fe/core/converters/controls/Common/Criticality.js +1 -1
- package/src/sap/fe/core/converters/controls/Common/DataVisualization.js +43 -7
- package/src/sap/fe/core/converters/controls/Common/DataVisualization.ts +60 -33
- package/src/sap/fe/core/converters/controls/Common/Form.js +8 -6
- package/src/sap/fe/core/converters/controls/Common/Form.ts +11 -14
- package/src/sap/fe/core/converters/controls/Common/KPI.js +1 -1
- package/src/sap/fe/core/converters/controls/Common/KPI.ts +16 -15
- package/src/sap/fe/core/converters/controls/Common/Table.js +188 -157
- package/src/sap/fe/core/converters/controls/Common/Table.ts +279 -230
- package/src/sap/fe/core/converters/controls/Common/table/StandardActions.js +1 -1
- package/src/sap/fe/core/converters/controls/Common/table/StandardActions.ts +4 -4
- package/src/sap/fe/core/converters/controls/ListReport/FilterBar.js +57 -21
- package/src/sap/fe/core/converters/controls/ListReport/FilterBar.ts +71 -18
- package/src/sap/fe/core/converters/controls/ListReport/VisualFilters.js +30 -8
- package/src/sap/fe/core/converters/controls/ListReport/VisualFilters.ts +24 -7
- package/src/sap/fe/core/converters/controls/ObjectPage/Avatar.js +1 -1
- package/src/sap/fe/core/converters/controls/ObjectPage/HeaderFacet.js +43 -34
- package/src/sap/fe/core/converters/controls/ObjectPage/HeaderFacet.ts +37 -25
- package/src/sap/fe/core/converters/controls/ObjectPage/SubSection.js +85 -49
- package/src/sap/fe/core/converters/controls/ObjectPage/SubSection.ts +74 -50
- package/src/sap/fe/core/converters/helpers/Aggregation.js +54 -4
- package/src/sap/fe/core/converters/helpers/Aggregation.ts +56 -8
- package/src/sap/fe/core/converters/helpers/BindingHelper.js +1 -1
- package/src/sap/fe/core/converters/helpers/ConfigurableObject.js +6 -4
- package/src/sap/fe/core/converters/helpers/ConfigurableObject.ts +10 -2
- package/src/sap/fe/core/converters/helpers/DataFieldHelper.js +182 -0
- package/src/sap/fe/core/converters/helpers/DataFieldHelper.ts +167 -0
- package/src/sap/fe/core/converters/helpers/ID.js +3 -1
- package/src/sap/fe/core/converters/helpers/ID.ts +1 -0
- package/src/sap/fe/core/converters/helpers/IssueManager.js +1 -1
- package/src/sap/fe/core/converters/helpers/Key.js +1 -1
- package/src/sap/fe/core/converters/helpers/SelectionVariantHelper.js +1 -1
- package/src/sap/fe/core/converters/helpers/SelectionVariantHelper.ts +2 -3
- package/src/sap/fe/core/converters/objectPage/FormMenuActions.js +1 -1
- package/src/sap/fe/core/converters/objectPage/HeaderAndFooterAction.js +8 -14
- package/src/sap/fe/core/converters/objectPage/HeaderAndFooterAction.ts +6 -9
- package/src/sap/fe/core/converters/templates/ListReportConverter.js +31 -31
- package/src/sap/fe/core/converters/templates/ListReportConverter.ts +54 -47
- package/src/sap/fe/core/converters/templates/ObjectPageConverter.js +44 -15
- package/src/sap/fe/core/converters/templates/ObjectPageConverter.ts +64 -30
- package/src/sap/fe/core/designtime/AppComponent.designtime.js +1 -1
- package/src/sap/fe/core/formatters/CollaborationFormatter.js +1 -1
- package/src/sap/fe/core/formatters/FPMFormatter.js +1 -1
- package/src/sap/fe/core/formatters/KPIFormatter.js +1 -1
- package/src/sap/fe/core/formatters/StandardFormatter.js +13 -6
- package/src/sap/fe/core/formatters/StandardFormatter.ts +20 -14
- package/src/sap/fe/core/formatters/TableFormatter.js +1 -1
- package/src/sap/fe/core/formatters/TableFormatterTypes.js +1 -1
- package/src/sap/fe/core/formatters/ValueFormatter.js +1 -1
- package/src/sap/fe/core/fpm/Component.js +33 -7
- package/src/sap/fe/core/fpm/Component.ts +14 -0
- package/src/sap/fe/core/helpers/AnnotationEnum.js +1 -1
- package/src/sap/fe/core/helpers/AppStartupHelper.js +5 -4
- package/src/sap/fe/core/helpers/AppStartupHelper.ts +4 -3
- package/src/sap/fe/core/helpers/BindingToolkit.js +56 -24
- package/src/sap/fe/core/helpers/BindingToolkit.ts +67 -21
- package/src/sap/fe/core/helpers/ClassSupport.js +31 -3
- package/src/sap/fe/core/helpers/ClassSupport.ts +24 -1
- package/src/sap/fe/core/helpers/DynamicAnnotationPathHelper.js +1 -1
- package/src/sap/fe/core/helpers/EditState.js +1 -1
- package/src/sap/fe/core/helpers/ExcelFormatHelper.js +1 -1
- package/src/sap/fe/core/helpers/FPMHelper.js +1 -1
- package/src/sap/fe/core/helpers/KeepAliveHelper.js +1 -1
- package/src/sap/fe/core/helpers/KeepAliveRefreshTypes.js +1 -1
- package/src/sap/fe/core/helpers/LoaderUtils.js +39 -0
- package/src/sap/fe/core/helpers/LoaderUtils.ts +14 -0
- package/src/sap/fe/core/helpers/MassEditHelper.js +475 -99
- package/src/sap/fe/core/helpers/MassEditHelper.ts +468 -155
- package/src/sap/fe/core/helpers/MessageStrip.js +81 -0
- package/src/sap/fe/core/helpers/MessageStrip.ts +79 -0
- package/src/sap/fe/core/helpers/ModelHelper.js +1 -1
- package/src/sap/fe/core/helpers/PasteHelper.js +1 -1
- package/src/sap/fe/core/helpers/SemanticDateOperators.js +82 -36
- package/src/sap/fe/core/helpers/SemanticDateOperators.ts +52 -36
- package/src/sap/fe/core/helpers/SemanticKeyHelper.js +1 -1
- package/src/sap/fe/core/helpers/SideEffectsHelper.js +146 -0
- package/src/sap/fe/core/helpers/SideEffectsHelper.ts +128 -0
- package/src/sap/fe/core/helpers/StableIdHelper.js +1 -1
- package/src/sap/fe/core/helpers/Synchronization.js +1 -1
- package/src/sap/fe/core/helpers/ToES6Promise.js +32 -0
- package/src/sap/fe/core/helpers/ToES6Promise.ts +19 -0
- package/src/sap/fe/core/jsx-runtime/Fragment.js +16 -0
- package/src/sap/fe/core/jsx-runtime/Fragment.ts +3 -0
- package/src/sap/fe/core/jsx-runtime/ViewLoader.js +109 -0
- package/src/sap/fe/core/jsx-runtime/ViewLoader.tsx +47 -0
- package/src/sap/fe/core/jsx-runtime/jsx-control.js +119 -0
- package/src/sap/fe/core/jsx-runtime/jsx-control.ts +98 -0
- package/src/sap/fe/core/jsx-runtime/jsx-xml.js +105 -0
- package/src/sap/fe/core/jsx-runtime/jsx-xml.ts +89 -0
- package/src/sap/fe/core/jsx-runtime/jsx.js +12 -90
- package/src/sap/fe/core/jsx-runtime/jsx.ts +24 -85
- package/src/sap/fe/core/jsx-runtime/jsxs.js +1 -1
- package/src/sap/fe/core/jsx-runtime/useMDXComponents.js +179 -0
- package/src/sap/fe/core/jsx-runtime/useMDXComponents.tsx +150 -0
- package/src/sap/fe/core/library.js +2 -2
- package/src/sap/fe/core/library.support.js +1 -1
- package/src/sap/fe/core/manifestMerger/ChangePageConfiguration.js +1 -1
- package/src/sap/fe/core/messagebundle.properties +4 -41
- package/src/sap/fe/core/messagebundle_ar.properties +22 -45
- package/src/sap/fe/core/messagebundle_bg.properties +22 -45
- package/src/sap/fe/core/messagebundle_ca.properties +22 -45
- package/src/sap/fe/core/messagebundle_cs.properties +22 -45
- package/src/sap/fe/core/messagebundle_cy.properties +21 -44
- package/src/sap/fe/core/messagebundle_da.properties +22 -45
- package/src/sap/fe/core/messagebundle_de.properties +22 -45
- package/src/sap/fe/core/messagebundle_el.properties +22 -45
- package/src/sap/fe/core/messagebundle_en.properties +21 -44
- package/src/sap/fe/core/messagebundle_en_GB.properties +21 -44
- package/src/sap/fe/core/messagebundle_en_US_sappsd.properties +21 -42
- package/src/sap/fe/core/messagebundle_en_US_saprigi.properties +20 -40
- package/src/sap/fe/core/messagebundle_en_US_saptrc.properties +21 -42
- package/src/sap/fe/core/messagebundle_es.properties +22 -45
- package/src/sap/fe/core/messagebundle_es_MX.properties +22 -45
- package/src/sap/fe/core/messagebundle_et.properties +22 -45
- package/src/sap/fe/core/messagebundle_fi.properties +22 -45
- package/src/sap/fe/core/messagebundle_fr.properties +21 -44
- package/src/sap/fe/core/messagebundle_fr_CA.properties +20 -43
- package/src/sap/fe/core/messagebundle_hi.properties +22 -45
- package/src/sap/fe/core/messagebundle_hr.properties +22 -45
- package/src/sap/fe/core/messagebundle_hu.properties +22 -45
- package/src/sap/fe/core/messagebundle_id.properties +22 -45
- package/src/sap/fe/core/messagebundle_it.properties +22 -45
- package/src/sap/fe/core/messagebundle_iw.properties +22 -45
- package/src/sap/fe/core/messagebundle_ja.properties +22 -45
- package/src/sap/fe/core/messagebundle_kk.properties +22 -45
- package/src/sap/fe/core/messagebundle_ko.properties +27 -50
- package/src/sap/fe/core/messagebundle_lt.properties +22 -45
- package/src/sap/fe/core/messagebundle_lv.properties +22 -45
- package/src/sap/fe/core/messagebundle_ms.properties +22 -45
- package/src/sap/fe/core/messagebundle_nl.properties +24 -47
- package/src/sap/fe/core/messagebundle_no.properties +22 -45
- package/src/sap/fe/core/messagebundle_pl.properties +23 -46
- package/src/sap/fe/core/messagebundle_pt.properties +23 -46
- package/src/sap/fe/core/messagebundle_pt_PT.properties +22 -45
- package/src/sap/fe/core/messagebundle_ro.properties +22 -45
- package/src/sap/fe/core/messagebundle_ru.properties +22 -45
- package/src/sap/fe/core/messagebundle_sh.properties +22 -45
- package/src/sap/fe/core/messagebundle_sk.properties +22 -45
- package/src/sap/fe/core/messagebundle_sl.properties +22 -45
- package/src/sap/fe/core/messagebundle_sv.properties +22 -45
- package/src/sap/fe/core/messagebundle_th.properties +20 -43
- package/src/sap/fe/core/messagebundle_tr.properties +22 -45
- package/src/sap/fe/core/messagebundle_uk.properties +22 -45
- package/src/sap/fe/core/messagebundle_vi.properties +22 -45
- package/src/sap/fe/core/messagebundle_zh_CN.properties +22 -45
- package/src/sap/fe/core/messagebundle_zh_TW.properties +22 -45
- package/src/sap/fe/core/services/AsyncComponentServiceFactory.js +2 -2
- package/src/sap/fe/core/services/CacheHandlerServiceFactory.js +102 -74
- package/src/sap/fe/core/services/CacheHandlerServiceFactory.ts +62 -63
- package/src/sap/fe/core/services/EnvironmentServiceFactory.js +2 -2
- package/src/sap/fe/core/services/NavigationServiceFactory.js +11 -8
- package/src/sap/fe/core/services/NavigationServiceFactory.ts +10 -7
- package/src/sap/fe/core/services/ResourceModelServiceFactory.js +2 -2
- package/src/sap/fe/core/services/RoutingServiceFactory.js +2 -2
- package/src/sap/fe/core/services/ShellServicesFactory.js +22 -2
- package/src/sap/fe/core/services/ShellServicesFactory.ts +19 -0
- package/src/sap/fe/core/services/SideEffectsServiceFactory.js +4 -4
- package/src/sap/fe/core/services/SideEffectsServiceFactory.ts +2 -2
- package/src/sap/fe/core/services/TemplatedViewServiceFactory.js +251 -200
- package/src/sap/fe/core/services/TemplatedViewServiceFactory.ts +160 -144
- package/src/sap/fe/core/services/view/TemplatingErrorPage.controller.js +2 -2
- package/src/sap/fe/core/support/AnnotationIssue.support.js +1 -1
- package/src/sap/fe/core/support/CollectionFacetMissingID.support.js +1 -1
- package/src/sap/fe/core/support/CollectionFacetUnsupportedLevel.support.js +1 -1
- package/src/sap/fe/core/support/CommonHelper.js +1 -1
- package/src/sap/fe/core/support/Diagnostics.js +1 -1
- package/src/sap/fe/core/support/InvalidAnnotationColumnKey.support.js +1 -1
- package/src/sap/fe/core/templating/CommonFormatters.js +4 -3
- package/src/sap/fe/core/templating/CommonFormatters.ts +5 -1
- package/src/sap/fe/core/templating/CriticalityFormatters.js +1 -1
- package/src/sap/fe/core/templating/DataFieldFormatters.js +1 -1
- package/src/sap/fe/core/templating/DataModelPathHelper.js +8 -1
- package/src/sap/fe/core/templating/DataModelPathHelper.ts +5 -2
- package/src/sap/fe/core/templating/DisplayModeFormatter.js +1 -1
- package/src/sap/fe/core/templating/EntitySetHelper.js +4 -5
- package/src/sap/fe/core/templating/EntitySetHelper.ts +4 -3
- package/src/sap/fe/core/templating/FieldControlHelper.js +1 -1
- package/src/sap/fe/core/templating/FilterHelper.js +34 -15
- package/src/sap/fe/core/templating/FilterHelper.ts +28 -12
- package/src/sap/fe/core/templating/FilterTemplating.js +1 -1
- package/src/sap/fe/core/templating/PropertyFormatters.js +1 -1
- package/src/sap/fe/core/templating/PropertyHelper.js +1 -1
- package/src/sap/fe/core/templating/UIFormatters.js +5 -3
- package/src/sap/fe/core/templating/UIFormatters.ts +7 -5
- package/src/sap/fe/core/type/DateTimeWithTimezone.js +2 -2
- package/src/sap/fe/core/type/Email.js +2 -2
|
@@ -12,9 +12,23 @@ sap.ui.define(["sap/base/Log", "sap/base/util/extend", "sap/base/util/ObjectPath
|
|
|
12
12
|
var extensible = ClassSupport.extensible;
|
|
13
13
|
var defineUI5Class = ClassSupport.defineUI5Class;
|
|
14
14
|
|
|
15
|
+
function _catch(body, recover) {
|
|
16
|
+
try {
|
|
17
|
+
var result = body();
|
|
18
|
+
} catch (e) {
|
|
19
|
+
return recover(e);
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
if (result && result.then) {
|
|
23
|
+
return result.then(void 0, recover);
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
return result;
|
|
27
|
+
}
|
|
28
|
+
|
|
15
29
|
function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _setPrototypeOf(subClass, superClass); }
|
|
16
30
|
|
|
17
|
-
function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf
|
|
31
|
+
function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }
|
|
18
32
|
|
|
19
33
|
function _applyDecoratedDescriptor(target, property, decorators, descriptor, context) { var desc = {}; Object.keys(descriptor).forEach(function (key) { desc[key] = descriptor[key]; }); desc.enumerable = !!desc.enumerable; desc.configurable = !!desc.configurable; if ('value' in desc || desc.initializer) { desc.writable = true; } desc = decorators.slice().reverse().reduce(function (desc, decorator) { return decorator(target, property, desc) || desc; }, desc); if (context && desc.initializer !== void 0) { desc.value = desc.initializer ? desc.initializer.call(context) : void 0; desc.initializer = undefined; } if (desc.initializer === void 0) { Object.defineProperty(target, property, desc); desc = null; } return desc; }
|
|
20
34
|
|
|
@@ -79,137 +93,154 @@ sap.ui.define(["sap/base/Log", "sap/base/util/extend", "sap/base/util/ObjectPath
|
|
|
79
93
|
};
|
|
80
94
|
|
|
81
95
|
_proto._openShareSheetImpl = function _openShareSheetImpl(by) {
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
jam: {
|
|
95
|
-
url: "",
|
|
96
|
-
title: ""
|
|
97
|
-
},
|
|
98
|
-
tile: {
|
|
99
|
-
url: "",
|
|
100
|
-
title: "",
|
|
101
|
-
subtitle: "",
|
|
102
|
-
icon: "",
|
|
103
|
-
queryUrl: ""
|
|
104
|
-
}
|
|
105
|
-
};
|
|
106
|
-
oLastFocusedControl = by;
|
|
107
|
-
|
|
108
|
-
var setShareEmailData = function (shareActionSheet, oModelData) {
|
|
109
|
-
var oShareMailModel = shareActionSheet.getModel("shareData");
|
|
110
|
-
var oNewMailData = extend(oShareMailModel.getData(), oModelData);
|
|
111
|
-
oShareMailModel.setData(oNewMailData);
|
|
112
|
-
};
|
|
113
|
-
|
|
114
|
-
return Promise.resolve(this.adaptShareMetadata(oShareMetadata)).then(function (oModelData) {
|
|
115
|
-
fragmentController = {
|
|
116
|
-
shareEmailPressed: function () {
|
|
117
|
-
var oMailModel = oShareActionSheet.getModel("shareData");
|
|
118
|
-
var oMailData = oMailModel.getData();
|
|
119
|
-
var oResource = Core.getLibraryResourceBundle("sap.fe.core");
|
|
120
|
-
var sEmailSubject = oMailData.email.title ? oMailData.email.title : oResource.getText("T_SHARE_UTIL_HELPER_SAPFE_EMAIL_SUBJECT", [oMailData.title]);
|
|
121
|
-
library.URLHelper.triggerEmail(undefined, sEmailSubject, oMailData.email.url ? oMailData.email.url : oMailData.url);
|
|
122
|
-
},
|
|
123
|
-
shareMSTeamsPressed: function () {
|
|
124
|
-
var msTeamsModel = oShareActionSheet.getModel("shareData");
|
|
125
|
-
var msTeamsData = msTeamsModel.getData();
|
|
126
|
-
var message = msTeamsData.email.title ? msTeamsData.email.title : msTeamsData.title;
|
|
127
|
-
var url = msTeamsData.email.url ? msTeamsData.email.url : msTeamsData.url;
|
|
128
|
-
var newWindowOpen = window.open("", "ms-teams-share-popup", "width=700,height=600");
|
|
129
|
-
newWindowOpen.opener = null;
|
|
130
|
-
newWindowOpen.location = "https://teams.microsoft.com/share?msgText=".concat(encodeURIComponent(message), "&href=").concat(encodeURIComponent(url));
|
|
96
|
+
try {
|
|
97
|
+
var _this2 = this;
|
|
98
|
+
|
|
99
|
+
var oShareActionSheet;
|
|
100
|
+
var sHash = HashChanger.getInstance().getHash(),
|
|
101
|
+
sBasePath = HashChanger.getInstance().hrefForAppSpecificHash ? HashChanger.getInstance().hrefForAppSpecificHash("") : "",
|
|
102
|
+
oShareMetadata = {
|
|
103
|
+
url: sHash ? sBasePath + sHash : window.location.hash,
|
|
104
|
+
title: document.title,
|
|
105
|
+
email: {
|
|
106
|
+
url: "",
|
|
107
|
+
title: ""
|
|
131
108
|
},
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
var _byId;
|
|
136
|
-
|
|
137
|
-
(_byId = Core.byId("bookmarkDialog")) === null || _byId === void 0 ? void 0 : _byId.attachAfterClose(function () {
|
|
138
|
-
oLastFocusedControl.focus();
|
|
139
|
-
});
|
|
140
|
-
}, 0);
|
|
109
|
+
jam: {
|
|
110
|
+
url: "",
|
|
111
|
+
title: ""
|
|
141
112
|
},
|
|
142
|
-
|
|
143
|
-
|
|
113
|
+
tile: {
|
|
114
|
+
url: "",
|
|
115
|
+
title: "",
|
|
116
|
+
subtitle: "",
|
|
117
|
+
icon: "",
|
|
118
|
+
queryUrl: ""
|
|
144
119
|
}
|
|
145
120
|
};
|
|
121
|
+
oLastFocusedControl = by;
|
|
146
122
|
|
|
147
|
-
|
|
148
|
-
|
|
123
|
+
var setShareEmailData = function (shareActionSheet, oModelData) {
|
|
124
|
+
var oShareMailModel = shareActionSheet.getModel("shareData");
|
|
125
|
+
var oNewMailData = extend(oShareMailModel.getData(), oModelData);
|
|
126
|
+
oShareMailModel.setData(oNewMailData);
|
|
149
127
|
};
|
|
150
128
|
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
129
|
+
var _temp4 = _catch(function () {
|
|
130
|
+
return Promise.resolve(Promise.resolve(_this2.adaptShareMetadata(oShareMetadata))).then(function (oModelData) {
|
|
131
|
+
var fragmentController = {
|
|
132
|
+
shareEmailPressed: function () {
|
|
133
|
+
var oMailModel = oShareActionSheet.getModel("shareData");
|
|
134
|
+
var oMailData = oMailModel.getData();
|
|
135
|
+
var oResource = Core.getLibraryResourceBundle("sap.fe.core");
|
|
136
|
+
var sEmailSubject = oMailData.email.title ? oMailData.email.title : oResource.getText("T_SHARE_UTIL_HELPER_SAPFE_EMAIL_SUBJECT", [oMailData.title]);
|
|
137
|
+
library.URLHelper.triggerEmail(undefined, sEmailSubject, oMailData.email.url ? oMailData.email.url : oMailData.url);
|
|
138
|
+
},
|
|
139
|
+
shareMSTeamsPressed: function () {
|
|
140
|
+
var msTeamsModel = oShareActionSheet.getModel("shareData");
|
|
141
|
+
var msTeamsData = msTeamsModel.getData();
|
|
142
|
+
var message = msTeamsData.email.title ? msTeamsData.email.title : msTeamsData.title;
|
|
143
|
+
var url = msTeamsData.email.url ? msTeamsData.email.url : msTeamsData.url;
|
|
144
|
+
var newWindowOpen = window.open("", "ms-teams-share-popup", "width=700,height=600");
|
|
145
|
+
newWindowOpen.opener = null;
|
|
146
|
+
newWindowOpen.location = "https://teams.microsoft.com/share?msgText=".concat(encodeURIComponent(message), "&href=").concat(encodeURIComponent(url));
|
|
147
|
+
},
|
|
148
|
+
onSaveTilePress: function () {
|
|
149
|
+
// TODO it seems that the press event is executed before the dialog is available - adding a timeout is a cheap workaround
|
|
150
|
+
setTimeout(function () {
|
|
151
|
+
var _byId;
|
|
154
152
|
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
url: oModelData.tile.url ? oModelData.tile.url : oModelData.url,
|
|
169
|
-
queryUrl: oModelData.tile.queryUrl
|
|
170
|
-
};
|
|
153
|
+
(_byId = Core.byId("bookmarkDialog")) === null || _byId === void 0 ? void 0 : _byId.attachAfterClose(function () {
|
|
154
|
+
oLastFocusedControl.focus();
|
|
155
|
+
});
|
|
156
|
+
}, 0);
|
|
157
|
+
},
|
|
158
|
+
shareJamPressed: function () {
|
|
159
|
+
_this2._doOpenJamShareDialog(oModelData.jam.title ? oModelData.jam.title : oModelData.title, oModelData.jam.url ? oModelData.jam.url : window.location.origin + window.location.pathname + oModelData.url);
|
|
160
|
+
}
|
|
161
|
+
};
|
|
162
|
+
|
|
163
|
+
fragmentController.onCancelPressed = function () {
|
|
164
|
+
oShareActionSheet.close();
|
|
165
|
+
};
|
|
171
166
|
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
}
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
167
|
+
fragmentController.setShareSheet = function (oShareSheet) {
|
|
168
|
+
by.shareSheet = oShareSheet;
|
|
169
|
+
};
|
|
170
|
+
|
|
171
|
+
var oThis = new JSONModel({});
|
|
172
|
+
var oPreprocessorSettings = {
|
|
173
|
+
bindingContexts: {
|
|
174
|
+
"this": oThis.createBindingContext("/")
|
|
175
|
+
},
|
|
176
|
+
models: {
|
|
177
|
+
"this": oThis
|
|
178
|
+
}
|
|
179
|
+
};
|
|
180
|
+
var oTileData = {
|
|
181
|
+
title: oModelData.tile.title ? oModelData.tile.title : oModelData.title,
|
|
182
|
+
subtitle: oModelData.tile.subtitle,
|
|
183
|
+
icon: oModelData.tile.icon,
|
|
184
|
+
url: oModelData.tile.url ? oModelData.tile.url : oModelData.url,
|
|
185
|
+
queryUrl: oModelData.tile.queryUrl
|
|
186
|
+
};
|
|
187
|
+
|
|
188
|
+
var _temp2 = function () {
|
|
189
|
+
if (by.shareSheet) {
|
|
190
|
+
oShareActionSheet = by.shareSheet;
|
|
191
|
+
var oShareModel = oShareActionSheet.getModel("share");
|
|
192
|
+
|
|
193
|
+
_this2._setStaticShareData(oShareModel);
|
|
194
|
+
|
|
195
|
+
var oNewData = extend(oShareModel.getData(), oTileData);
|
|
196
|
+
oShareModel.setData(oNewData);
|
|
197
|
+
setShareEmailData(oShareActionSheet, oModelData);
|
|
198
|
+
oShareActionSheet.openBy(by);
|
|
199
|
+
} else {
|
|
200
|
+
var sFragmentName = "sap.fe.macros.share.ShareSheet";
|
|
201
|
+
var oPopoverFragment = XMLTemplateProcessor.loadTemplate(sFragmentName, "fragment");
|
|
202
|
+
|
|
203
|
+
var _temp5 = _catch(function () {
|
|
204
|
+
return Promise.resolve(Promise.resolve(XMLPreprocessor.process(oPopoverFragment, {
|
|
205
|
+
name: sFragmentName
|
|
206
|
+
}, oPreprocessorSettings))).then(function (oFragment) {
|
|
207
|
+
return Promise.resolve(Fragment.load({
|
|
208
|
+
definition: oFragment,
|
|
209
|
+
controller: fragmentController
|
|
210
|
+
})).then(function (_Fragment$load) {
|
|
211
|
+
oShareActionSheet = _Fragment$load;
|
|
212
|
+
oShareActionSheet.setModel(new JSONModel(oTileData || {}), "share");
|
|
213
|
+
var oShareModel = oShareActionSheet.getModel("share");
|
|
214
|
+
|
|
215
|
+
_this2._setStaticShareData(oShareModel);
|
|
216
|
+
|
|
217
|
+
var oNewData = extend(oShareModel.getData(), oTileData);
|
|
218
|
+
oShareModel.setData(oNewData);
|
|
219
|
+
oShareActionSheet.setModel(new JSONModel(oModelData || {}), "shareData");
|
|
220
|
+
setShareEmailData(oShareActionSheet, oModelData);
|
|
221
|
+
by.addDependent(oShareActionSheet);
|
|
222
|
+
oShareActionSheet.openBy(by);
|
|
223
|
+
fragmentController.setShareSheet(oShareActionSheet);
|
|
224
|
+
});
|
|
225
|
+
});
|
|
226
|
+
}, function (oError) {
|
|
227
|
+
Log.error("Error while opening the share fragment", oError);
|
|
228
|
+
});
|
|
229
|
+
|
|
230
|
+
if (_temp5 && _temp5.then) return _temp5.then(function () {});
|
|
231
|
+
}
|
|
232
|
+
}();
|
|
233
|
+
|
|
234
|
+
if (_temp2 && _temp2.then) return _temp2.then(function () {});
|
|
208
235
|
});
|
|
209
|
-
}
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
236
|
+
}, function (oError) {
|
|
237
|
+
Log.error("Error while fetching the share model data", oError);
|
|
238
|
+
});
|
|
239
|
+
|
|
240
|
+
return Promise.resolve(_temp4 && _temp4.then ? _temp4.then(function () {}) : void 0);
|
|
241
|
+
} catch (e) {
|
|
242
|
+
return Promise.reject(e);
|
|
243
|
+
}
|
|
213
244
|
};
|
|
214
245
|
|
|
215
246
|
_proto._setStaticShareData = function _setStaticShareData(shareModel) {
|
|
@@ -248,4 +279,4 @@ sap.ui.define(["sap/base/Log", "sap/base/util/extend", "sap/base/util/ObjectPath
|
|
|
248
279
|
}(ControllerExtension), (_applyDecoratedDescriptor(_class2.prototype, "openShareSheet", [_dec2, _dec3], Object.getOwnPropertyDescriptor(_class2.prototype, "openShareSheet"), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, "adaptShareMetadata", [_dec4, _dec5], Object.getOwnPropertyDescriptor(_class2.prototype, "adaptShareMetadata"), _class2.prototype)), _class2)) || _class);
|
|
249
280
|
return ShareUtils;
|
|
250
281
|
}, false);
|
|
251
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIlNoYXJlLnRzIl0sIm5hbWVzIjpbIm9MYXN0Rm9jdXNlZENvbnRyb2wiLCJTaGFyZVV0aWxzIiwiZGVmaW5lVUk1Q2xhc3MiLCJwdWJsaWNFeHRlbnNpb24iLCJmaW5hbEV4dGVuc2lvbiIsImV4dGVuc2libGUiLCJPdmVycmlkZUV4ZWN1dGlvbiIsIkFmdGVyIiwib3BlblNoYXJlU2hlZXQiLCJvQ29udHJvbCIsIl9vcGVuU2hhcmVTaGVldEltcGwiLCJhZGFwdFNoYXJlTWV0YWRhdGEiLCJvU2hhcmVNZXRhZGF0YSIsImJ5Iiwib1NoYXJlQWN0aW9uU2hlZXQiLCJmcmFnbWVudENvbnRyb2xsZXIiLCJzSGFzaCIsIkhhc2hDaGFuZ2VyIiwiZ2V0SW5zdGFuY2UiLCJnZXRIYXNoIiwic0Jhc2VQYXRoIiwiaHJlZkZvckFwcFNwZWNpZmljSGFzaCIsInVybCIsIndpbmRvdyIsImxvY2F0aW9uIiwiaGFzaCIsInRpdGxlIiwiZG9jdW1lbnQiLCJlbWFpbCIsImphbSIsInRpbGUiLCJzdWJ0aXRsZSIsImljb24iLCJxdWVyeVVybCIsInNldFNoYXJlRW1haWxEYXRhIiwic2hhcmVBY3Rpb25TaGVldCIsIm9Nb2RlbERhdGEiLCJvU2hhcmVNYWlsTW9kZWwiLCJnZXRNb2RlbCIsIm9OZXdNYWlsRGF0YSIsImV4dGVuZCIsImdldERhdGEiLCJzZXREYXRhIiwiUHJvbWlzZSIsInJlc29sdmUiLCJ0aGVuIiwic2hhcmVFbWFpbFByZXNzZWQiLCJvTWFpbE1vZGVsIiwib01haWxEYXRhIiwib1Jlc291cmNlIiwiQ29yZSIsImdldExpYnJhcnlSZXNvdXJjZUJ1bmRsZSIsInNFbWFpbFN1YmplY3QiLCJnZXRUZXh0IiwibGlicmFyeSIsIlVSTEhlbHBlciIsInRyaWdnZXJFbWFpbCIsInVuZGVmaW5lZCIsInNoYXJlTVNUZWFtc1ByZXNzZWQiLCJtc1RlYW1zTW9kZWwiLCJtc1RlYW1zRGF0YSIsIm1lc3NhZ2UiLCJuZXdXaW5kb3dPcGVuIiwib3BlbiIsIm9wZW5lciIsImVuY29kZVVSSUNvbXBvbmVudCIsIm9uU2F2ZVRpbGVQcmVzcyIsInNldFRpbWVvdXQiLCJieUlkIiwiYXR0YWNoQWZ0ZXJDbG9zZSIsImZvY3VzIiwic2hhcmVKYW1QcmVzc2VkIiwiX2RvT3BlbkphbVNoYXJlRGlhbG9nIiwib3JpZ2luIiwicGF0aG5hbWUiLCJvbkNhbmNlbFByZXNzZWQiLCJjbG9zZSIsInNldFNoYXJlU2hlZXQiLCJvU2hhcmVTaGVldCIsInNoYXJlU2hlZXQiLCJvVGhpcyIsIkpTT05Nb2RlbCIsIm9QcmVwcm9jZXNzb3JTZXR0aW5ncyIsImJpbmRpbmdDb250ZXh0cyIsImNyZWF0ZUJpbmRpbmdDb250ZXh0IiwibW9kZWxzIiwib1RpbGVEYXRhIiwib1NoYXJlTW9kZWwiLCJfc2V0U3RhdGljU2hhcmVEYXRhIiwib05ld0RhdGEiLCJvcGVuQnkiLCJzRnJhZ21lbnROYW1lIiwib1BvcG92ZXJGcmFnbWVudCIsIlhNTFRlbXBsYXRlUHJvY2Vzc29yIiwibG9hZFRlbXBsYXRlIiwiWE1MUHJlcHJvY2Vzc29yIiwicHJvY2VzcyIsIm5hbWUiLCJvRnJhZ21lbnQiLCJGcmFnbWVudCIsImxvYWQiLCJkZWZpbml0aW9uIiwiY29udHJvbGxlciIsIm9BY3Rpb25TaGVldCIsInNldE1vZGVsIiwiYWRkRGVwZW5kZW50IiwiY2F0Y2giLCJvRXJyb3IiLCJMb2ciLCJlcnJvciIsInNoYXJlTW9kZWwiLCJzZXRQcm9wZXJ0eSIsIk9iamVjdFBhdGgiLCJnZXQiLCJmbkdldFVzZXIiLCJpc0phbUFjdGl2ZSIsInNhcCIsInVzaGVsbCIsIkNvbnRhaW5lciIsInRleHQiLCJzVXJsIiwib1NoYXJlRGlhbG9nIiwiY3JlYXRlQ29tcG9uZW50Iiwic2V0dGluZ3MiLCJvYmplY3QiLCJpZCIsInNoYXJlIiwiQ29udHJvbGxlckV4dGVuc2lvbiJdLCJtYXBwaW5ncyI6IjtBQUFBO0FBQ0E7QUFDQTs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFpQkEsTUFBSUEsbUJBQUo7QUFFQTtBQUNBO0FBQ0E7QUFD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TkQsUUFBQUEsVUFBVSxDQUFDQyxXQUFYLENBQXVCLGlCQUF2QixFQUEwQyxLQUExQztBQUNBOztBQUNELFVBQU1HLFNBQVMsR0FBR0YsVUFBVSxDQUFDQyxHQUFYLENBQWUsOEJBQWYsQ0FBbEI7QUFDQUgsTUFBQUEsVUFBVSxDQUFDQyxXQUFYLENBQXVCLGFBQXZCLEVBQXNDLENBQUMsQ0FBQ0csU0FBRixJQUFlQSxTQUFTLEdBQUdDLFdBQVosRUFBckQ7QUFDQUwsTUFBQUEsVUFBVSxDQUFDQyxXQUFYLENBQXVCLG9CQUF2QixFQUE2QyxDQUFDLEVBQUVLLEdBQUcsSUFBSUEsR0FBRyxDQUFDQyxNQUFYLElBQXFCRCxHQUFHLENBQUNDLE1BQUosQ0FBV0MsU0FBbEMsQ0FBOUM7QUFDQSxLLENBQ0Q7OztXQUNBOUMscUIsR0FBQSwrQkFBc0IrQyxJQUF0QixFQUFpQ0MsSUFBakMsRUFBNkM7QUFDNUMsVUFBTUMsWUFBWSxHQUFHdkUsSUFBSSxDQUFDd0UsZUFBTCxDQUFxQjtBQUN6Q3pCLFFBQUFBLElBQUksRUFBRSxtREFEbUM7QUFFekMwQixRQUFBQSxRQUFRLEVBQUU7QUFDVEMsVUFBQUEsTUFBTSxFQUFFO0FBQ1BDLFlBQUFBLEVBQUUsRUFBRUwsSUFERztBQUVQTSxZQUFBQSxLQUFLLEVBQUVQO0FBRkE7QUFEQztBQUYrQixPQUFyQixDQUFyQjtBQVNDRSxNQUFBQSxZQUFELENBQXNCMUQsSUFBdEI7QUFDQSxLOzs7SUF6TnVCZ0UsbUI7U0E0TlY5SCxVIiwic291cmNlUm9vdCI6Ii4iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgTG9nIGZyb20gXCJzYXAvYmFzZS9Mb2dcIjtcbmltcG9ydCBleHRlbmQgZnJvbSBcInNhcC9iYXNlL3V0aWwvZXh0ZW5kXCI7XG5pbXBvcnQgT2JqZWN0UGF0aCBmcm9tIFwic2FwL2Jhc2UvdXRpbC9PYmplY3RQYXRoXCI7XG5pbXBvcnQgeyBkZWZpbmVVSTVDbGFzcywgZXh0ZW5zaWJsZSwgZmluYWxFeHRlbnNpb24sIHB1YmxpY0V4dGVuc2lvbiB9IGZyb20gXCJzYXAvZmUvY29yZS9oZWxwZXJzL0NsYXNzU3VwcG9ydFwiO1xuaW1wb3J0IHR5cGUgQWN0aW9uU2hlZXQgZnJvbSBcInNhcC9tL0FjdGlvblNoZWV0XCI7XG5pbXBvcnQgdHlwZSBEaWFsb2cgZnJvbSBcInNhcC9tL0RpYWxvZ1wiO1xuaW1wb3J0IGxpYnJhcnkgZnJvbSBcInNhcC9tL2xpYnJhcnlcIjtcbmltcG9ydCB0eXBlIENvbnRyb2wgZnJvbSBcInNhcC91aS9jb3JlL0NvbnRyb2xcIjtcbmltcG9ydCBDb3JlIGZyb20gXCJzYXAvdWkvY29yZS9Db3JlXCI7XG5pbXBvcnQgRnJhZ21lbnQgZnJvbSBcInNhcC91aS9jb3JlL0ZyYWdtZW50XCI7XG5pbXBvcnQgQ29udHJvbGxlckV4dGVuc2lvbiBmcm9tIFwic2FwL3VpL2NvcmUvbXZjL0NvbnRyb2xsZXJFeHRlbnNpb25cIjtcbmltcG9ydCBPdmVycmlkZUV4ZWN1dGlvbiBmcm9tIFwic2FwL3VpL2NvcmUvbXZjL092ZXJyaWRlRXhlY3V0aW9uXCI7XG5pbXBvcnQgSGFzaENoYW5nZXIgZnJvbSBcInNhcC91aS9jb3JlL3JvdXRpbmcvSGFzaENoYW5nZXJcIjtcbmltcG9ydCBYTUxQcmVwcm9jZXNzb3IgZnJvbSBcInNhcC91aS9jb3JlL3V0aWwvWE1MUHJlcHJvY2Vzc29yXCI7XG5pbXBvcnQgWE1MVGVtcGxhdGVQcm9jZXNzb3IgZnJvbSBcInNhcC91aS9jb3JlL1hNTFRlbXBsYXRlUHJvY2Vzc29yXCI7XG5pbXBvcnQgSlNPTk1vZGVsIGZyb20gXCJzYXAvdWkvbW9kZWwvanNvbi9KU09OTW9kZWxcIjtcbmltcG9ydCB0eXBlIHsgQ29yZUV4IH0gZnJvbSBcInR5cGVzL2V4dGVuc2lvbl90eXBlc1wiO1xuaW1wb3J0IHR5cGUgUGFnZUNvbnRyb2xsZXIgZnJvbSBcIi4uL1BhZ2VDb250cm9sbGVyXCI7XG5cbmxldCBvTGFzdEZvY3VzZWRDb250cm9sOiBDb250cm9sO1xuXG4vKipcbiAqIEEgY29udHJvbGxlciBleHRlbnNpb24gb2ZmZXJpbmcgaG9va3MgaW50byB0aGUgcm91dGluZyBmbG93IG9mIHRoZSBhcHBsaWNhdGlvblxuICpcbiAqIEBoaWRlY29uc3RydWN0b3JcbiAqIEBwdWJsaWNcbiAqIEBzaW5jZSAxLjg2LjBcbiAqL1xuQGRlZmluZVVJNUNsYXNzKFwic2FwLmZlLmNvcmUuY29udHJvbGxlcmV4dGVuc2lvbnMuU2hhcmVcIilcbmNsYXNzIFNoYXJlVXRpbHMgZXh0ZW5kcyBDb250cm9sbGVyRXh0ZW5zaW9uIHtcblx0cHJvdGVjdGVkIGJhc2UhOiBQYWdlQ29udHJvbGxlcjtcblxuXHQvKipcblx0ICogT3BlbnMgdGhlIHNoYXJlIHNoZWV0LlxuXHQgKlxuXHQgKiBAZnVuY3Rpb25cblx0ICogQHBhcmFtIG9Db250cm9sIFRoZSBjb250cm9sIHRvIHdoaWNoIHRoZSBBY3Rpb25TaGVldCBpcyBvcGVuZWQuXG5cdCAqIEBhbGlhcyBzYXAuZmUuY29yZS5jb250cm9sbGVyZXh0ZW5zaW9ucy5TaGFyZSNvcGVuU2hhcmVTaGVldFxuXHQgKiBAcHVibGljXG5cdCAqIEBzaW5jZSAxLjkzLjBcblx0ICovXG5cdEBwdWJsaWNFeHRlbnNpb24oKVxuXHRAZmluYWxFeHRlbnNpb24oKVxuXHRvcGVuU2hhcmVTaGVldChvQ29udHJvbDogb2JqZWN0KSB7XG5cdFx0dGhpcy5fb3BlblNoYXJlU2hlZXRJbXBsKG9Db250cm9sKTtcblx0fVxuXHQvKipcblx0ICogQWRhcHRzIHRoZSBtZXRhZGF0YSB1c2VkIHdoaWxlIHNoYXJpbmcgdGhlIHBhZ2UgVVJMIHZpYSAnU2VuZCBFbWFpbCcsICdTaGFyZSBpbiBTQVAgSmFtJywgYW5kICdTYXZlIGFzIFRpbGUnLlxuXHQgKlxuXHQgKiBAZnVuY3Rpb25cblx0ICogQHBhcmFtIG9TaGFyZU1ldGFkYXRhIE9iamVjdCBjb250YWluaW5nIHRoZSBzaGFyZSBtZXRhZGF0YS5cblx0ICogQHBhcmFtIG9TaGFyZU1ldGFkYXRhLnVybCBEZWZhdWx0IFVSTCB0aGF0IHdpbGwgYmUgdXNlZCB2aWEgJ1NlbmQgRW1haWwnLCAnU2hhcmUgaW4gU0FQIEphbScsIGFuZCAnU2F2ZSBhcyBUaWxlJ1xuXHQgKiBAcGFyYW0gb1NoYXJlTWV0YWRhdGEudGl0bGUgRGVmYXVsdCB0aXRsZSB0aGF0IHdpbGwgYmUgdXNlZCBhcyAnZW1haWwgc3ViamVjdCcgaW4gJ1NlbmQgRW1haWwnLCAnc2hhcmUgdGV4dCcgaW4gJ1NoYXJlIGluIFNBUCBKYW0nIGFuZCAndGl0bGUnIGluICdTYXZlIGFzIFRpbGUnXG5cdCAqIEBwYXJhbSBvU2hhcmVNZXRhZGF0YS5lbWFpbCBFbWFpbC1zcGVjaWZpYyBtZXRhZGF0YS5cblx0ICogQHBhcmFtIG9TaGFyZU1ldGFkYXRhLmVtYWlsLnVybCBVUkwgdGhhdCB3aWxsIGJlIHVzZWQgc3BlY2lmaWNhbGx5IGZvciAnU2VuZCBFbWFpbCcuIFRoaXMgdGFrZXMgcHJlY2VkZW5jZSBvdmVyIG9TaGFyZU1ldGFkYXRhLnVybC5cblx0ICogQHBhcmFtIG9TaGFyZU1ldGFkYXRhLmVtYWlsLnRpdGxlIFRpdGxlIHRoYXQgd2lsbCBiZSB1c2VkIGFzIFwiZW1haWwgc3ViamVjdFwiIGluICdTZW5kIEVtYWlsJy4gVGhpcyB0YWtlcyBwcmVjZWRlbmNlIG92ZXIgb1NoYXJlTWV0YWRhdGEudGl0bGUuXG5cdCAqIEBwYXJhbSBvU2hhcmVNZXRhZGF0YS5qYW0gU0FQIEphbS1zcGVjaWZpYyBtZXRhZGF0YS5cblx0ICogQHBhcmFtIG9TaGFyZU1ldGFkYXRhLmphbS51cmwgVVJMIHRoYXQgd2lsbCBiZSB1c2VkIHNwZWNpZmljYWxseSBmb3IgJ1NoYXJlIGluIFNBUCBKYW0nLiBUaGlzIHRha2VzIHByZWNlZGVuY2Ugb3ZlciBvU2hhcmVNZXRhZGF0YS51cmwuXG5cdCAqIEBwYXJhbSBvU2hhcmVNZXRhZGF0YS5qYW0udGl0bGUgVGl0bGUgdGhhdCB3aWxsIGJlIHVzZWQgYXMgJ3NoYXJlIHRleHQnIGluICdTaGFyZSBpbiBTQVAgSmFtJy4gVGhpcyB0YWtlcyBwcmVjZWRlbmNlIG92ZXIgb1NoYXJlTWV0YWRhdGEudGl0bGUuXG5cdCAqIEBwYXJhbSBvU2hhcmVNZXRhZGF0YS50aWxlIFNhdmUgYXMgVGlsZS1zcGVjaWZpYyBtZXRhZGF0YS5cblx0ICogQHBhcmFtIG9TaGFyZU1ldGFkYXRhLnRpbGUudXJsIFVSTCB0aGF0IHdpbGwgYmUgdXNlZCBzcGVjaWZpY2FsbHkgZm9yICdTYXZlIGFzIFRpbGUnLiBUaGlzIHRha2VzIHByZWNlZGVuY2Ugb3ZlciBvU2hhcmVNZXRhZGF0YS51cmwuXG5cdCAqIEBwYXJhbSBvU2hhcmVNZXRhZGF0YS50aWxlLnRpdGxlIFRpdGxlIHRvIGJlIHVzZWQgZm9yIHRoZSB0aWxlLiBUaGlzIHRha2VzIHByZWNlZGVuY2Ugb3ZlciBvU2hhcmVNZXRhZGF0YS50aXRsZS5cblx0ICogQHBhcmFtIG9TaGFyZU1ldGFkYXRhLnRpbGUuc3VidGl0bGUgU3VidGl0bGUgdG8gYmUgdXNlZCBmb3IgdGhlIHRpbGUuXG5cdCAqIEBwYXJhbSBvU2hhcmVNZXRhZGF0YS50aWxlLmljb24gSWNvbiB0byBiZSB1c2VkIGZvciB0aGUgdGlsZS5cblx0ICogQHBhcmFtIG9TaGFyZU1ldGFkYXRhLnRpbGUucXVlcnlVcmwgUXVlcnkgVVJMIG9mIGFuIE9EYXRhIHNlcnZpY2UgZnJvbSB3aGljaCBkYXRhIGZvciBhIGR5bmFtaWMgdGlsZSBpcyByZWFkLlxuXHQgKiBAcmV0dXJucyBTaGFyZSBNZXRhZGF0YSBvciBhIFByb21pc2UgcmVzb2x2aW5nIHRoZSBTaGFyZSBNZXRhZGF0YVxuXHQgKiBAYWxpYXMgc2FwLmZlLmNvcmUuY29udHJvbGxlcmV4dGVuc2lvbnMuU2hhcmUjYWRhcHRTaGFyZU1ldGFkYXRhXG5cdCAqIEBwdWJsaWNcblx0ICogQHNpbmNlIDEuOTMuMFxuXHQgKi9cblx0QHB1YmxpY0V4dGVuc2lvbigpXG5cdEBleHRlbnNpYmxlKE92ZXJyaWRlRXhlY3V0aW9uLkFmdGVyKVxuXHRhZGFwdFNoYXJlTWV0YWRhdGEob1NoYXJlTWV0YWRhdGE6IHtcblx0XHR1cmw6IHN0cmluZztcblx0XHR0aXRsZTogc3RyaW5nO1xuXHRcdGVtYWlsPzogeyB1cmw6IHN0cmluZzsgdGl0bGU6IHN0cmluZyB9O1xuXHRcdGphbT86IHsgdXJsOiBzdHJpbmc7IHRpdGxlOiBzdHJpbmcgfTtcblx0XHR0aWxlPzogeyB1cmw6IHN0cmluZzsgdGl0bGU6IHN0cmluZzsgc3VidGl0bGU6IHN0cmluZzsgaWNvbjogc3RyaW5nOyBxdWVyeVVybDogc3RyaW5nIH07XG5cdH0pOiBvYmplY3QgfCBQcm9taXNlPG9iamVjdD4ge1xuXHRcdHJldHVybiBvU2hhcmVNZXRhZGF0YTtcblx0fVxuXHRfb3BlblNoYXJlU2hlZXRJbXBsKGJ5OiBhbnkpIHtcblx0XHRsZXQgb1NoYXJlQWN0aW9uU2hlZXQ6IEFjdGlvblNoZWV0LCBmcmFnbWVudENvbnRyb2xsZXI6IGFueTtcblx0XHRjb25zdCBzSGFzaCA9IEhhc2hDaGFuZ2VyLmdldEluc3RhbmNlKCkuZ2V0SGFzaCgpLFxuXHRcdFx0c0Jhc2VQYXRoID0gKEhhc2hDaGFuZ2VyLmdldEluc3RhbmNlKCkgYXMgYW55KS5ocmVmRm9yQXBwU3BlY2lmaWNIYXNoXG5cdFx0XHRcdD8gKEhhc2hDaGFuZ2VyLmdldEluc3RhbmNlKCkgYXMgYW55KS5ocmVmRm9yQXBwU3BlY2lmaWNIYXNoKFwiXCIpXG5cdFx0XHRcdDogXCJcIixcblx0XHRcdG9TaGFyZU1ldGFkYXRhID0ge1xuXHRcdFx0XHR1cmw6IHNIYXNoID8gc0Jhc2VQYXRoICsgc0hhc2ggOiB3aW5kb3cubG9jYXRpb24uaGFzaCxcblx0XHRcdFx0dGl0bGU6IGRvY3VtZW50LnRpdGxlLFxuXHRcdFx0XHRlbWFpbDoge1xuXHRcdFx0XHRcdHVybDogXCJcIixcblx0XHRcdFx0XHR0aXRsZTogXCJcIlxuXHRcdFx0XHR9LFxuXHRcdFx0XHRqYW06IHtcblx0XHRcdFx0XHR1cmw6IFwiXCIsXG5cdFx0XHRcdFx0dGl0bGU6IFwiXCJcblx0XHRcdFx0fSxcblx0XHRcdFx0dGlsZToge1xuXHRcdFx0XHRcdHVybDogXCJcIixcblx0XHRcdFx0XHR0aXRsZTogXCJcIixcblx0XHRcdFx0XHRzdWJ0aXRsZTogXCJcIixcblx0XHRcdFx0XHRpY29uOiBcIlwiLFxuXHRcdFx0XHRcdHF1ZXJ5VXJsOiBcIlwiXG5cdFx0XHRcdH1cblx0XHRcdH07XG5cdFx0b0xhc3RGb2N1c2VkQ29udHJvbCA9IGJ5O1xuXG5cdFx0Y29uc3Qgc2V0U2hhcmVFbWFpbERhdGEgPSBmdW5jdGlvbiAoc2hhcmVBY3Rpb25TaGVldDogYW55LCBvTW9kZWxEYXRhOiBhbnkpIHtcblx0XHRcdGNvbnN0IG9TaGFyZU1haWxNb2RlbCA9IHNoYXJlQWN0aW9uU2hlZXQuZ2V0TW9kZWwoXCJzaGFyZURhdGFcIik7XG5cdFx0XHRjb25zdCBvTmV3TWFpbERhdGEgPSBleHRlbmQob1NoYXJlTWFpbE1vZGVsLmdldERhdGEoKSwgb01vZGVsRGF0YSk7XG5cdFx0XHRvU2hhcmVNYWlsTW9kZWwuc2V0RGF0YShvTmV3TWFpbERhdGEpO1xuXHRcdH07XG5cdFx0cmV0dXJuIFByb21pc2UucmVzb2x2ZSh0aGlzLmFkYXB0U2hhcmVNZXRhZGF0YShvU2hhcmVNZXRhZGF0YSkpXG5cdFx0XHQudGhlbigob01vZGVsRGF0YTogYW55KSA9PiB7XG5cdFx0XHRcdGZyYWdtZW50Q29udHJvbGxlciA9IHtcblx0XHRcdFx0XHRzaGFyZUVtYWlsUHJlc3NlZDogZnVuY3Rpb24gKCkge1xuXHRcdFx0XHRcdFx0Y29uc3Qgb01haWxNb2RlbCA9IG9TaGFyZUFjdGlvblNoZWV0LmdldE1vZGVsKFwic2hhcmVEYXRhXCIpIGFzIEpTT05Nb2RlbDtcblx0XHRcdFx0XHRcdGNvbnN0IG9NYWlsRGF0YSA9IG9NYWlsTW9kZWwuZ2V0RGF0YSgpO1xuXHRcdFx0XHRcdFx0Y29uc3Qgb1Jlc291cmNlID0gKENvcmUgYXMgQ29yZUV4KS5nZXRMaWJyYXJ5UmVzb3VyY2VCdW5kbGUoXCJzYXAuZmUuY29yZVwiKTtcblx0XHRcdFx0XHRcdGNvbnN0IHNFbWFpbFN1YmplY3QgPSBvTWFpbERhdGEuZW1haWwudGl0bGVcblx0XHRcdFx0XHRcdFx0PyBvTWFpbERhdGEuZW1haWwudGl0bGVcblx0XHRcdFx0XHRcdFx0OiBvUmVzb3VyY2UuZ2V0VGV4dChcIlRfU0hBUkVfVVRJTF9IRUxQRVJfU0FQRkVfRU1BSUxfU1VCSkVDVFwiLCBbb01haWxEYXRhLnRpdGxlXSk7XG5cdFx0XHRcdFx0XHRsaWJyYXJ5LlVSTEhlbHBlci50cmlnZ2VyRW1haWwodW5kZWZpbmVkLCBzRW1haWxTdWJqZWN0LCBvTWFpbERhdGEuZW1haWwudXJsID8gb01haWxEYXRhLmVtYWlsLnVybCA6IG9NYWlsRGF0YS51cmwpO1xuXHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0c2hhcmVNU1RlYW1zUHJlc3NlZDogZnVuY3Rpb24gKCkge1xuXHRcdFx0XHRcdFx0Y29uc3QgbXNUZWFtc01vZGVsID0gb1NoYXJlQWN0aW9uU2hlZXQuZ2V0TW9kZWwoXCJzaGFyZURhdGFcIikgYXMgSlNPTk1vZGVsO1xuXHRcdFx0XHRcdFx0Y29uc3QgbXNUZWFtc0RhdGEgPSBtc1RlYW1zTW9kZWwuZ2V0RGF0YSgpO1xuXHRcdFx0XHRcdFx0Y29uc3QgbWVzc2FnZSA9IG1zVGVhbXNEYXRhLmVtYWlsLnRpdGxlID8gbXNUZWFtc0RhdGEuZW1haWwudGl0bGUgOiBtc1RlYW1zRGF0YS50aXRsZTtcblx0XHRcdFx0XHRcdGNvbnN0IHVybCA9IG1zVGVhbXNEYXRhLmVtYWlsLnVybCA/IG1zVGVhbXNEYXRhLmVtYWlsLnVybCA6IG1zVGVhbXNEYXRhLnVybDtcblx0XHRcdFx0XHRcdGNvbnN0IG5ld1dpbmRvd09wZW4gPSB3aW5kb3cub3BlbihcIlwiLCBcIm1zLXRlYW1zLXNoYXJlLXBvcHVwXCIsIFwid2lkdGg9NzAwLGhlaWdodD02MDBcIik7XG5cdFx0XHRcdFx0XHRuZXdXaW5kb3dPcGVuIS5vcGVuZXIgPSBudWxsO1xuXHRcdFx0XHRcdFx0bmV3V2luZG93T3BlbiEubG9jYXRpb24gPSBgaHR0cHM6Ly90ZWFtcy5taWNyb3NvZnQuY29tL3NoYXJlP21zZ1RleHQ9JHtlbmNvZGVVUklDb21wb25lbnQoXG5cdFx0XHRcdFx0XHRcdG1lc3NhZ2Vcblx0XHRcdFx0XHRcdCl9JmhyZWY9JHtlbmNvZGVVUklDb21wb25lbnQodXJsKX1gO1xuXHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0b25TYXZlVGlsZVByZXNzOiBmdW5jdGlvbiAoKSB7XG5cdFx0XHRcdFx0XHQvLyBUT0RPIGl0IHNlZW1zIHRoYXQgdGhlIHByZXNzIGV2ZW50IGlzIGV4ZWN1dGVkIGJlZm9yZSB0aGUgZGlhbG9nIGlzIGF2YWlsYWJsZSAtIGFkZGluZyBhIHRpbWVvdXQgaXMgYSBjaGVhcCB3b3JrYXJvdW5kXG5cdFx0XHRcdFx0XHRzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcblx0XHRcdFx0XHRcdFx0KChDb3JlIGFzIENvcmVFeCkuYnlJZChcImJvb2ttYXJrRGlhbG9nXCIpIGFzIERpYWxvZyk/LmF0dGFjaEFmdGVyQ2xvc2UoZnVuY3Rpb24gKCkge1xuXHRcdFx0XHRcdFx0XHRcdG9MYXN0Rm9jdXNlZENvbnRyb2wuZm9jdXMoKTtcblx0XHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0XHR9LCAwKTtcblx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdHNoYXJlSmFtUHJlc3NlZDogKCkgPT4ge1xuXHRcdFx0XHRcdFx0dGhpcy5fZG9PcGVuSmFtU2hhcmVEaWFsb2coXG5cdFx0XHRcdFx0XHRcdG9Nb2RlbERhdGEuamFtLnRpdGxlID8gb01vZGVsRGF0YS5qYW0udGl0bGUgOiBvTW9kZWxEYXRhLnRpdGxlLFxuXHRcdFx0XHRcdFx0XHRvTW9kZWxEYXRhLmphbS51cmwgPyBvTW9kZWxEYXRhLmphbS51cmwgOiB3aW5kb3cubG9jYXRpb24ub3JpZ2luICsgd2luZG93LmxvY2F0aW9uLnBhdGhuYW1lICsgb01vZGVsRGF0YS51cmxcblx0XHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9O1xuXG5cdFx0XHRcdGZyYWdtZW50Q29udHJvbGxlci5vbkNhbmNlbFByZXNzZWQgPSBmdW5jdGlvbiAoKSB7XG5cdFx0XHRcdFx0b1NoYXJlQWN0aW9uU2hlZXQuY2xvc2UoKTtcblx0XHRcdFx0fTtcblxuXHRcdFx0XHRmcmFnbWVudENvbnRyb2xsZXIuc2V0U2hhcmVTaGVldCA9IGZ1bmN0aW9uIChvU2hhcmVTaGVldDogYW55KSB7XG5cdFx0XHRcdFx0Ynkuc2hhcmVTaGVldCA9IG9TaGFyZVNoZWV0O1xuXHRcdFx0XHR9O1xuXG5cdFx0XHRcdGNvbnN0IG9UaGlzID0gbmV3IEpTT05Nb2RlbCh7fSksXG5cdFx0XHRcdFx0b1ByZXByb2Nlc3NvclNldHRpbmdzID0ge1xuXHRcdFx0XHRcdFx0YmluZGluZ0NvbnRleHRzOiB7XG5cdFx0XHRcdFx0XHRcdFwidGhpc1wiOiBvVGhpcy5jcmVhdGVCaW5kaW5nQ29udGV4dChcIi9cIilcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRtb2RlbHM6IHtcblx0XHRcdFx0XHRcdFx0XCJ0aGlzXCI6IG9UaGlzXG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fTtcblx0XHRcdFx0Y29uc3Qgb1RpbGVEYXRhID0ge1xuXHRcdFx0XHRcdHRpdGxlOiBvTW9kZWxEYXRhLnRpbGUudGl0bGUgPyBvTW9kZWxEYXRhLnRpbGUudGl0bGUgOiBvTW9kZWxEYXRhLnRpdGxlLFxuXHRcdFx0XHRcdHN1YnRpdGxlOiBvTW9kZWxEYXRhLnRpbGUuc3VidGl0bGUsXG5cdFx0XHRcdFx0aWNvbjogb01vZGVsRGF0YS50aWxlLmljb24sXG5cdFx0XHRcdFx0dXJsOiBvTW9kZWxEYXRhLnRpbGUudXJsID8gb01vZGVsRGF0YS50aWxlLnVybCA6IG9Nb2RlbERhdGEudXJsLFxuXHRcdFx0XHRcdHF1ZXJ5VXJsOiBvTW9kZWxEYXRhLnRpbGUucXVlcnlVcmxcblx0XHRcdFx0fTtcblx0XHRcdFx0aWYgKGJ5LnNoYXJlU2hlZXQpIHtcblx0XHRcdFx0XHRvU2hhcmVBY3Rpb25TaGVldCA9IGJ5LnNoYXJlU2hlZXQ7XG5cblx0XHRcdFx0XHRjb25zdCBvU2hhcmVNb2RlbCA9IG9TaGFyZUFjdGlvblNoZWV0LmdldE1vZGVsKFwic2hhcmVcIikgYXMgSlNPTk1vZGVsO1xuXHRcdFx0XHRcdHRoaXMuX3NldFN0YXRpY1NoYXJlRGF0YShvU2hhcmVNb2RlbCk7XG5cdFx0XHRcdFx0Y29uc3Qgb05ld0RhdGEgPSBleHRlbmQob1NoYXJlTW9kZWwuZ2V0RGF0YSgpLCBvVGlsZURhdGEpO1xuXHRcdFx0XHRcdG9TaGFyZU1vZGVsLnNldERhdGEob05ld0RhdGEpO1xuXHRcdFx0XHRcdHNldFNoYXJlRW1haWxEYXRhKG9TaGFyZUFjdGlvblNoZWV0LCBvTW9kZWxEYXRhKTtcblx0XHRcdFx0XHRvU2hhcmVBY3Rpb25TaGVldC5vcGVuQnkoYnkpO1xuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdGNvbnN0IHNGcmFnbWVudE5hbWUgPSBcInNhcC5mZS5tYWNyb3Muc2hhcmUuU2hhcmVTaGVldFwiLFxuXHRcdFx0XHRcdFx0b1BvcG92ZXJGcmFnbWVudCA9IFhNTFRlbXBsYXRlUHJvY2Vzc29yLmxvYWRUZW1wbGF0ZShzRnJhZ21lbnROYW1lLCBcImZyYWdtZW50XCIpO1xuXG5cdFx0XHRcdFx0UHJvbWlzZS5yZXNvbHZlKFhNTFByZXByb2Nlc3Nvci5wcm9jZXNzKG9Qb3BvdmVyRnJhZ21lbnQsIHsgbmFtZTogc0ZyYWdtZW50TmFtZSB9LCBvUHJlcHJvY2Vzc29yU2V0dGluZ3MpKVxuXHRcdFx0XHRcdFx0LnRoZW4oZnVuY3Rpb24gKG9GcmFnbWVudDogYW55KSB7XG5cdFx0XHRcdFx0XHRcdHJldHVybiBGcmFnbWVudC5sb2FkKHsgZGVmaW5pdGlvbjogb0ZyYWdtZW50LCBjb250cm9sbGVyOiBmcmFnbWVudENvbnRyb2xsZXIgfSk7XG5cdFx0XHRcdFx0XHR9KVxuXHRcdFx0XHRcdFx0LnRoZW4oKG9BY3Rpb25TaGVldDogYW55KSA9PiB7XG5cdFx0XHRcdFx0XHRcdG9TaGFyZUFjdGlvblNoZWV0ID0gb0FjdGlvblNoZWV0O1xuXG5cdFx0XHRcdFx0XHRcdG9TaGFyZUFjdGlvblNoZWV0LnNldE1vZGVsKG5ldyBKU09OTW9kZWwob1RpbGVEYXRhIHx8IHt9KSwgXCJzaGFyZVwiKTtcblx0XHRcdFx0XHRcdFx0Y29uc3Qgb1NoYXJlTW9kZWwgPSBvU2hhcmVBY3Rpb25TaGVldC5nZXRNb2RlbChcInNoYXJlXCIpIGFzIEpTT05Nb2RlbDtcblx0XHRcdFx0XHRcdFx0dGhpcy5fc2V0U3RhdGljU2hhcmVEYXRhKG9TaGFyZU1vZGVsKTtcblx0XHRcdFx0XHRcdFx0Y29uc3Qgb05ld0RhdGEgPSBleHRlbmQob1NoYXJlTW9kZWwuZ2V0RGF0YSgpLCBvVGlsZURhdGEpO1xuXHRcdFx0XHRcdFx0XHRvU2hhcmVNb2RlbC5zZXREYXRhKG9OZXdEYXRhKTtcblxuXHRcdFx0XHRcdFx0XHRvU2hhcmVBY3Rpb25TaGVldC5zZXRNb2RlbChuZXcgSlNPTk1vZGVsKG9Nb2RlbERhdGEgfHwge30pLCBcInNoYXJlRGF0YVwiKTtcblx0XHRcdFx0XHRcdFx0c2V0U2hhcmVFbWFpbERhdGEob1NoYXJlQWN0aW9uU2hlZXQsIG9Nb2RlbERhdGEpO1xuXG5cdFx0XHRcdFx0XHRcdGJ5LmFkZERlcGVuZGVudChvU2hhcmVBY3Rpb25TaGVldCk7XG5cdFx0XHRcdFx0XHRcdG9TaGFyZUFjdGlvblNoZWV0Lm9wZW5CeShieSk7XG5cdFx0XHRcdFx0XHRcdGZyYWdtZW50Q29udHJvbGxlci5zZXRTaGFyZVNoZWV0KG9TaGFyZUFjdGlvblNoZWV0KTtcblx0XHRcdFx0XHRcdH0pXG5cdFx0XHRcdFx0XHQuY2F0Y2goZnVuY3Rpb24gKG9FcnJvcjogYW55KSB7XG5cdFx0XHRcdFx0XHRcdExvZy5lcnJvcihcIkVycm9yIHdoaWxlIG9wZW5pbmcgdGhlIHNoYXJlIGZyYWdtZW50XCIsIG9FcnJvcik7XG5cdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0fVxuXHRcdFx0fSlcblx0XHRcdC5jYXRjaChmdW5jdGlvbiAob0Vycm9yOiBhbnkpIHtcblx0XHRcdFx0TG9nLmVycm9yKFwiRXJyb3Igd2hpbGUgZmV0Y2hpbmcgdGhlIHNoYXJlIG1vZGVsIGRhdGFcIiwgb0Vycm9yKTtcblx0XHRcdH0pO1xuXHR9XG5cdF9zZXRTdGF0aWNTaGFyZURhdGEoc2hhcmVNb2RlbDogYW55KSB7XG5cdFx0Y29uc3Qgb1Jlc291cmNlID0gKENvcmUgYXMgQ29yZUV4KS5nZXRMaWJyYXJ5UmVzb3VyY2VCdW5kbGUoXCJzYXAuZmUuY29yZVwiKTtcblx0XHRzaGFyZU1vZGVsLnNldFByb3BlcnR5KFwiL2phbUJ1dHRvblRleHRcIiwgb1Jlc291cmNlLmdldFRleHQoXCJUX0NPTU1PTl9TQVBGRV9TSEFSRV9KQU1cIikpO1xuXHRcdHNoYXJlTW9kZWwuc2V0UHJvcGVydHkoXCIvZW1haWxCdXR0b25UZXh0XCIsIG9SZXNvdXJjZS5nZXRUZXh0KFwiVF9TRU1BTlRJQ19DT05UUk9MX1NFTkRfRU1BSUxcIikpO1xuXHRcdHNoYXJlTW9kZWwuc2V0UHJvcGVydHkoXCIvbXNUZWFtc1NoYXJlQnV0dG9uVGV4dFwiLCBvUmVzb3VyY2UuZ2V0VGV4dChcIlRfQ09NTU9OX1NBUEZFX1NIQVJFX01TVEVBTVNcIikpO1xuXHRcdC8vIFNoYXJlIHRvIE1pY3Jvc29mdCBUZWFtcyBpcyBmZWF0dXJlIHdoaWNoIGZvciBub3cgb25seSBnZXRzIGVuYWJsZWQgZm9yIHNlbGVjdGVkIGN1c3RvbWVycy5cblx0XHQvLyBUaGUgc3dpdGNoIFwic2FwSG9yaXpvbkVuYWJsZWRcIiBhbmQgY2hlY2sgZm9yIGl0IHdhcyBhbGlnbmVkIHdpdGggdGhlIEZpb3JpIGxhdW5jaHBhZCB0ZWFtLlxuXHRcdGlmIChPYmplY3RQYXRoLmdldChcInNhcC11c2hlbGwtY29uZmlnLnJlbmRlcmVycy5maW9yaTIuY29tcG9uZW50RGF0YS5jb25maWcuc2FwSG9yaXpvbkVuYWJsZWRcIikgPT09IHRydWUpIHtcblx0XHRcdHNoYXJlTW9kZWwuc2V0UHJvcGVydHkoXCIvbXNUZWFtc1Zpc2libGVcIiwgdHJ1ZSk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHNoYXJlTW9kZWwuc2V0UHJvcGVydHkoXCIvbXNUZWFtc1Zpc2libGVcIiwgZmFsc2UpO1xuXHRcdH1cblx0XHRjb25zdCBmbkdldFVzZXIgPSBPYmplY3RQYXRoLmdldChcInNhcC51c2hlbGwuQ29udGFpbmVyLmdldFVzZXJcIik7XG5cdFx0c2hhcmVNb2RlbC5zZXRQcm9wZXJ0eShcIi9qYW1WaXNpYmxlXCIsICEhZm5HZXRVc2VyICYmIGZuR2V0VXNlcigpLmlzSmFtQWN0aXZlKCkpO1xuXHRcdHNoYXJlTW9kZWwuc2V0UHJvcGVydHkoXCIvc2F2ZUFzVGlsZVZpc2libGVcIiwgISEoc2FwICYmIHNhcC51c2hlbGwgJiYgc2FwLnVzaGVsbC5Db250YWluZXIpKTtcblx0fVxuXHQvL3RoZSBhY3R1YWwgb3BlbmluZyBvZiB0aGUgSkFNIHNoYXJlIGRpYWxvZ1xuXHRfZG9PcGVuSmFtU2hhcmVEaWFsb2codGV4dDogYW55LCBzVXJsPzogYW55KSB7XG5cdFx0Y29uc3Qgb1NoYXJlRGlhbG9nID0gQ29yZS5jcmVhdGVDb21wb25lbnQoe1xuXHRcdFx0bmFtZTogXCJzYXAuY29sbGFib3JhdGlvbi5jb21wb25lbnRzLmZpb3JpLnNoYXJpbmcuZGlhbG9nXCIsXG5cdFx0XHRzZXR0aW5nczoge1xuXHRcdFx0XHRvYmplY3Q6IHtcblx0XHRcdFx0XHRpZDogc1VybCxcblx0XHRcdFx0XHRzaGFyZTogdGV4dFxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fSk7XG5cdFx0KG9TaGFyZURpYWxvZyBhcyBhbnkpLm9wZW4oKTtcblx0fVxufVxuXG5leHBvcnQgZGVmYXVsdCBTaGFyZVV0aWxzO1xuIl19
|
|
282
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJib2R5IiwicmVjb3ZlciIsInJlc3VsdCIsImUiLCJ0aGVuIiwib0xhc3RGb2N1c2VkQ29udHJvbCIsIlNoYXJlVXRpbHMiLCJkZWZpbmVVSTVDbGFzcyIsInB1YmxpY0V4dGVuc2lvbiIsImZpbmFsRXh0ZW5zaW9uIiwiZXh0ZW5zaWJsZSIsIk92ZXJyaWRlRXhlY3V0aW9uIiwiQWZ0ZXIiLCJvcGVuU2hhcmVTaGVldCIsIm9Db250cm9sIiwiX29wZW5TaGFyZVNoZWV0SW1wbCIsImFkYXB0U2hhcmVNZXRhZGF0YSIsIm9TaGFyZU1ldGFkYXRhIiwiYnkiLCJvU2hhcmVBY3Rpb25TaGVldCIsInNIYXNoIiwiSGFzaENoYW5nZXIiLCJnZXRJbnN0YW5jZSIsImdldEhhc2giLCJzQmFzZVBhdGgiLCJocmVmRm9yQXBwU3BlY2lmaWNIYXNoIiwidXJsIiwid2luZG93IiwibG9jYXRpb24iLCJoYXNoIiwidGl0bGUiLCJkb2N1bWVudCIsImVtYWlsIiwiamFtIiwidGlsZSIsInN1YnRpdGxlIiwiaWNvbiIsInF1ZXJ5VXJsIiwic2V0U2hhcmVFbWFpbERhdGEiLCJzaGFyZUFjdGlvblNoZWV0Iiwib01vZGVsRGF0YSIsIm9TaGFyZU1haWxNb2RlbCIsImdldE1vZGVsIiwib05ld01haWxEYXRhIiwiZXh0ZW5kIiwiZ2V0RGF0YSIsInNldERhdGEiLCJQcm9taXNlIiwicmVzb2x2ZSIsImZyYWdtZW50Q29udHJvbGxlciIsInNoYXJlRW1haWxQcmVzc2VkIiwib01haWxNb2RlbCIsIm9NYWlsRGF0YSIsIm9SZXNvdXJjZSIsIkNvcmUiLCJnZXRMaWJyYXJ5UmVzb3VyY2VCdW5kbGUiLCJzRW1haWxTdWJqZWN0IiwiZ2V0VGV4dCIsImxpYnJhcnkiLCJVUkxIZWxwZXIiLCJ0cmlnZ2VyRW1haWwiLCJ1bmRlZmluZWQiLCJzaGFyZU1TVGVhbXNQcmVzc2VkIiwibXNUZWFtc01vZGVsIiwibXNUZWFtc0RhdGEiLCJtZXNzYWdlIiwibmV3V2luZG93T3BlbiIsIm9wZW4iLCJvcGVuZXIiLCJlbmNvZGVVUklDb21wb25lbnQiLCJvblNhdmVUaWxlUHJlc3MiLCJzZXRUaW1lb3V0IiwiYnlJZCIsImF0dGFjaEFmdGVyQ2xvc2UiLCJmb2N1cyIsInNoYXJlSmFtUHJlc3NlZCIsIl9kb09wZW5KYW1TaGFyZURpYWxvZyIsIm9yaWdpbiIsInBhdGhuYW1lIiwib25DYW5jZWxQcmVzc2VkIiwiY2xvc2UiLCJzZXRTaGFyZVNoZWV0Iiwib1NoYXJlU2hlZXQiLCJzaGFyZVNoZWV0Iiwib1RoaXMiLCJKU09OTW9kZWwiLCJvUHJlcHJvY2Vzc29yU2V0dGluZ3MiLCJiaW5kaW5nQ29udGV4dHMiLCJjcmVhdGVCaW5kaW5nQ29udGV4dCIsIm1vZGVscyIsIm9UaWxlRGF0YSIsIm9TaGFyZU1vZGVsIiwiX3NldFN0YXRpY1NoYXJlRGF0YSIsIm9OZXdEYXRhIiwib3BlbkJ5Iiwic0ZyYWdtZW50TmFtZSIsIm9Qb3BvdmVyRnJhZ21lbnQiLCJYTUxUZW1wbGF0ZVByb2Nlc3NvciIsImxvYWRUZW1wbGF0ZSIsIlhNTFByZXByb2Nlc3NvciIsInByb2Nlc3MiLCJuYW1lIiwib0ZyYWdtZW50IiwiRnJhZ21lbnQiLCJsb2FkIiwiZGVmaW5pdGlvbiIsImNvbnRyb2xsZXIiLCJzZXRNb2RlbCIsImFkZERlcGVuZGVudCIsIm9FcnJvciIsIkxvZyIsImVycm9yIiwic2hhcmVNb2RlbCIsInNldFByb3BlcnR5IiwiT2JqZWN0UGF0aCIsImdldCIsImZuR2V0VXNlciIsImlzSmFtQWN0aXZlIiwic2FwIiwidXNoZWxsIiwiQ29udGFpbmVyIiwidGV4dCIsInNVcmwiLCJvU2hhcmVEaWFsb2ciLCJjcmVhdGVDb21wb25lbnQiLCJzZXR0aW5ncyIsIm9iamVjdCIsImlkIiwic2hhcmUiLCJDb250cm9sbGVyRXh0ZW5zaW9uIl0sInNvdXJjZVJvb3QiOiIuIiwic291cmNlcyI6WyJTaGFyZS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgTG9nIGZyb20gXCJzYXAvYmFzZS9Mb2dcIjtcbmltcG9ydCBleHRlbmQgZnJvbSBcInNhcC9iYXNlL3V0aWwvZXh0ZW5kXCI7XG5pbXBvcnQgT2JqZWN0UGF0aCBmcm9tIFwic2FwL2Jhc2UvdXRpbC9PYmplY3RQYXRoXCI7XG5pbXBvcnQgeyBkZWZpbmVVSTVDbGFzcywgZXh0ZW5zaWJsZSwgZmluYWxFeHRlbnNpb24sIHB1YmxpY0V4dGVuc2lvbiB9IGZyb20gXCJzYXAvZmUvY29yZS9oZWxwZXJzL0NsYXNzU3VwcG9ydFwiO1xuaW1wb3J0IHR5cGUgQWN0aW9uU2hlZXQgZnJvbSBcInNhcC9tL0FjdGlvblNoZWV0XCI7XG5pbXBvcnQgdHlwZSBEaWFsb2cgZnJvbSBcInNhcC9tL0RpYWxvZ1wiO1xuaW1wb3J0IGxpYnJhcnkgZnJvbSBcInNhcC9tL2xpYnJhcnlcIjtcbmltcG9ydCB0eXBlIENvbnRyb2wgZnJvbSBcInNhcC91aS9jb3JlL0NvbnRyb2xcIjtcbmltcG9ydCBDb3JlIGZyb20gXCJzYXAvdWkvY29yZS9Db3JlXCI7XG5pbXBvcnQgRnJhZ21lbnQgZnJvbSBcInNhcC91aS9jb3JlL0ZyYWdtZW50XCI7XG5pbXBvcnQgQ29udHJvbGxlckV4dGVuc2lvbiBmcm9tIFwic2FwL3VpL2NvcmUvbXZjL0NvbnRyb2xsZXJFeHRlbnNpb25cIjtcbmltcG9ydCBPdmVycmlkZUV4ZWN1dGlvbiBmcm9tIFwic2FwL3VpL2NvcmUvbXZjL092ZXJyaWRlRXhlY3V0aW9uXCI7XG5pbXBvcnQgSGFzaENoYW5nZXIgZnJvbSBcInNhcC91aS9jb3JlL3JvdXRpbmcvSGFzaENoYW5nZXJcIjtcbmltcG9ydCBYTUxQcmVwcm9jZXNzb3IgZnJvbSBcInNhcC91aS9jb3JlL3V0aWwvWE1MUHJlcHJvY2Vzc29yXCI7XG5pbXBvcnQgWE1MVGVtcGxhdGVQcm9jZXNzb3IgZnJvbSBcInNhcC91aS9jb3JlL1hNTFRlbXBsYXRlUHJvY2Vzc29yXCI7XG5pbXBvcnQgSlNPTk1vZGVsIGZyb20gXCJzYXAvdWkvbW9kZWwvanNvbi9KU09OTW9kZWxcIjtcbmltcG9ydCB0eXBlIHsgQ29yZUV4IH0gZnJvbSBcInR5cGVzL2V4dGVuc2lvbl90eXBlc1wiO1xuaW1wb3J0IHR5cGUgUGFnZUNvbnRyb2xsZXIgZnJvbSBcIi4uL1BhZ2VDb250cm9sbGVyXCI7XG5cbmxldCBvTGFzdEZvY3VzZWRDb250cm9sOiBDb250cm9sO1xuXG4vKipcbiAqIEEgY29udHJvbGxlciBleHRlbnNpb24gb2ZmZXJpbmcgaG9va3MgaW50byB0aGUgcm91dGluZyBmbG93IG9mIHRoZSBhcHBsaWNhdGlvblxuICpcbiAqIEBoaWRlY29uc3RydWN0b3JcbiAqIEBwdWJsaWNcbiAqIEBzaW5jZSAxLjg2LjBcbiAqL1xuQGRlZmluZVVJNUNsYXNzKFwic2FwLmZlLmNvcmUuY29udHJvbGxlcmV4dGVuc2lvbnMuU2hhcmVcIilcbmNsYXNzIFNoYXJlVXRpbHMgZXh0ZW5kcyBDb250cm9sbGVyRXh0ZW5zaW9uIHtcblx0cHJvdGVjdGVkIGJhc2UhOiBQYWdlQ29udHJvbGxlcjtcblxuXHQvKipcblx0ICogT3BlbnMgdGhlIHNoYXJlIHNoZWV0LlxuXHQgKlxuXHQgKiBAZnVuY3Rpb25cblx0ICogQHBhcmFtIG9Db250cm9sIFRoZSBjb250cm9sIHRvIHdoaWNoIHRoZSBBY3Rpb25TaGVldCBpcyBvcGVuZWQuXG5cdCAqIEBhbGlhcyBzYXAuZmUuY29yZS5jb250cm9sbGVyZXh0ZW5zaW9ucy5TaGFyZSNvcGVuU2hhcmVTaGVldFxuXHQgKiBAcHVibGljXG5cdCAqIEBzaW5jZSAxLjkzLjBcblx0ICovXG5cdEBwdWJsaWNFeHRlbnNpb24oKVxuXHRAZmluYWxFeHRlbnNpb24oKVxuXHRvcGVuU2hhcmVTaGVldChvQ29udHJvbDogb2JqZWN0KSB7XG5cdFx0dGhpcy5fb3BlblNoYXJlU2hlZXRJbXBsKG9Db250cm9sKTtcblx0fVxuXHQvKipcblx0ICogQWRhcHRzIHRoZSBtZXRhZGF0YSB1c2VkIHdoaWxlIHNoYXJpbmcgdGhlIHBhZ2UgVVJMIHZpYSAnU2VuZCBFbWFpbCcsICdTaGFyZSBpbiBTQVAgSmFtJywgYW5kICdTYXZlIGFzIFRpbGUnLlxuXHQgKlxuXHQgKiBAZnVuY3Rpb25cblx0ICogQHBhcmFtIG9TaGFyZU1ldGFkYXRhIE9iamVjdCBjb250YWluaW5nIHRoZSBzaGFyZSBtZXRhZGF0YS5cblx0ICogQHBhcmFtIG9TaGFyZU1ldGFkYXRhLnVybCBEZWZhdWx0IFVSTCB0aGF0IHdpbGwgYmUgdXNlZCB2aWEgJ1NlbmQgRW1haWwnLCAnU2hhcmUgaW4gU0FQIEphbScsIGFuZCAnU2F2ZSBhcyBUaWxlJ1xuXHQgKiBAcGFyYW0gb1NoYXJlTWV0YWRhdGEudGl0bGUgRGVmYXVsdCB0aXRsZSB0aGF0IHdpbGwgYmUgdXNlZCBhcyAnZW1haWwgc3ViamVjdCcgaW4gJ1NlbmQgRW1haWwnLCAnc2hhcmUgdGV4dCcgaW4gJ1NoYXJlIGluIFNBUCBKYW0nIGFuZCAndGl0bGUnIGluICdTYXZlIGFzIFRpbGUnXG5cdCAqIEBwYXJhbSBvU2hhcmVNZXRhZGF0YS5lbWFpbCBFbWFpbC1zcGVjaWZpYyBtZXRhZGF0YS5cblx0ICogQHBhcmFtIG9TaGFyZU1ldGFkYXRhLmVtYWlsLnVybCBVUkwgdGhhdCB3aWxsIGJlIHVzZWQgc3BlY2lmaWNhbGx5IGZvciAnU2VuZCBFbWFpbCcuIFRoaXMgdGFrZXMgcHJlY2VkZW5jZSBvdmVyIG9TaGFyZU1ldGFkYXRhLnVybC5cblx0ICogQHBhcmFtIG9TaGFyZU1ldGFkYXRhLmVtYWlsLnRpdGxlIFRpdGxlIHRoYXQgd2lsbCBiZSB1c2VkIGFzIFwiZW1haWwgc3ViamVjdFwiIGluICdTZW5kIEVtYWlsJy4gVGhpcyB0YWtlcyBwcmVjZWRlbmNlIG92ZXIgb1NoYXJlTWV0YWRhdGEudGl0bGUuXG5cdCAqIEBwYXJhbSBvU2hhcmVNZXRhZGF0YS5qYW0gU0FQIEphbS1zcGVjaWZpYyBtZXRhZGF0YS5cblx0ICogQHBhcmFtIG9TaGFyZU1ldGFkYXRhLmphbS51cmwgVVJMIHRoYXQgd2lsbCBiZSB1c2VkIHNwZWNpZmljYWxseSBmb3IgJ1NoYXJlIGluIFNBUCBKYW0nLiBUaGlzIHRha2VzIHByZWNlZGVuY2Ugb3ZlciBvU2hhcmVNZXRhZGF0YS51cmwuXG5cdCAqIEBwYXJhbSBvU2hhcmVNZXRhZGF0YS5qYW0udGl0bGUgVGl0bGUgdGhhdCB3aWxsIGJlIHVzZWQgYXMgJ3NoYXJlIHRleHQnIGluICdTaGFyZSBpbiBTQVAgSmFtJy4gVGhpcyB0YWtlcyBwcmVjZWRlbmNlIG92ZXIgb1NoYXJlTWV0YWRhdGEudGl0bGUuXG5cdCAqIEBwYXJhbSBvU2hhcmVNZXRhZGF0YS50aWxlIFNhdmUgYXMgVGlsZS1zcGVjaWZpYyBtZXRhZGF0YS5cblx0ICogQHBhcmFtIG9TaGFyZU1ldGFkYXRhLnRpbGUudXJsIFVSTCB0aGF0IHdpbGwgYmUgdXNlZCBzcGVjaWZpY2FsbHkgZm9yICdTYXZlIGFzIFRpbGUnLiBUaGlzIHRha2VzIHByZWNlZGVuY2Ugb3ZlciBvU2hhcmVNZXRhZGF0YS51cmwuXG5cdCAqIEBwYXJhbSBvU2hhcmVNZXRhZGF0YS50aWxlLnRpdGxlIFRpdGxlIHRvIGJlIHVzZWQgZm9yIHRoZSB0aWxlLiBUaGlzIHRha2VzIHByZWNlZGVuY2Ugb3ZlciBvU2hhcmVNZXRhZGF0YS50aXRsZS5cblx0ICogQHBhcmFtIG9TaGFyZU1ldGFkYXRhLnRpbGUuc3VidGl0bGUgU3VidGl0bGUgdG8gYmUgdXNlZCBmb3IgdGhlIHRpbGUuXG5cdCAqIEBwYXJhbSBvU2hhcmVNZXRhZGF0YS50aWxlLmljb24gSWNvbiB0byBiZSB1c2VkIGZvciB0aGUgdGlsZS5cblx0ICogQHBhcmFtIG9TaGFyZU1ldGFkYXRhLnRpbGUucXVlcnlVcmwgUXVlcnkgVVJMIG9mIGFuIE9EYXRhIHNlcnZpY2UgZnJvbSB3aGljaCBkYXRhIGZvciBhIGR5bmFtaWMgdGlsZSBpcyByZWFkLlxuXHQgKiBAcmV0dXJucyBTaGFyZSBNZXRhZGF0YSBvciBhIFByb21pc2UgcmVzb2x2aW5nIHRoZSBTaGFyZSBNZXRhZGF0YVxuXHQgKiBAYWxpYXMgc2FwLmZlLmNvcmUuY29udHJvbGxlcmV4dGVuc2lvbnMuU2hhcmUjYWRhcHRTaGFyZU1ldGFkYXRhXG5cdCAqIEBwdWJsaWNcblx0ICogQHNpbmNlIDEuOTMuMFxuXHQgKi9cblx0QHB1YmxpY0V4dGVuc2lvbigpXG5cdEBleHRlbnNpYmxlKE92ZXJyaWRlRXhlY3V0aW9uLkFmdGVyKVxuXHRhZGFwdFNoYXJlTWV0YWRhdGEob1NoYXJlTWV0YWRhdGE6IHtcblx0XHR1cmw6IHN0cmluZztcblx0XHR0aXRsZTogc3RyaW5nO1xuXHRcdGVtYWlsPzogeyB1cmw6IHN0cmluZzsgdGl0bGU6IHN0cmluZyB9O1xuXHRcdGphbT86IHsgdXJsOiBzdHJpbmc7IHRpdGxlOiBzdHJpbmcgfTtcblx0XHR0aWxlPzogeyB1cmw6IHN0cmluZzsgdGl0bGU6IHN0cmluZzsgc3VidGl0bGU6IHN0cmluZzsgaWNvbjogc3RyaW5nOyBxdWVyeVVybDogc3RyaW5nIH07XG5cdH0pOiBvYmplY3QgfCBQcm9taXNlPG9iamVjdD4ge1xuXHRcdHJldHVybiBvU2hhcmVNZXRhZGF0YTtcblx0fVxuXHRhc3luYyBfb3BlblNoYXJlU2hlZXRJbXBsKGJ5OiBhbnkpOiBQcm9taXNlPHZvaWQ+IHtcblx0XHRsZXQgb1NoYXJlQWN0aW9uU2hlZXQ6IEFjdGlvblNoZWV0O1xuXHRcdGNvbnN0IHNIYXNoID0gSGFzaENoYW5nZXIuZ2V0SW5zdGFuY2UoKS5nZXRIYXNoKCksXG5cdFx0XHRzQmFzZVBhdGggPSAoSGFzaENoYW5nZXIuZ2V0SW5zdGFuY2UoKSBhcyBhbnkpLmhyZWZGb3JBcHBTcGVjaWZpY0hhc2hcblx0XHRcdFx0PyAoSGFzaENoYW5nZXIuZ2V0SW5zdGFuY2UoKSBhcyBhbnkpLmhyZWZGb3JBcHBTcGVjaWZpY0hhc2goXCJcIilcblx0XHRcdFx0OiBcIlwiLFxuXHRcdFx0b1NoYXJlTWV0YWRhdGEgPSB7XG5cdFx0XHRcdHVybDogc0hhc2ggPyBzQmFzZVBhdGggKyBzSGFzaCA6IHdpbmRvdy5sb2NhdGlvbi5oYXNoLFxuXHRcdFx0XHR0aXRsZTogZG9jdW1lbnQudGl0bGUsXG5cdFx0XHRcdGVtYWlsOiB7XG5cdFx0XHRcdFx0dXJsOiBcIlwiLFxuXHRcdFx0XHRcdHRpdGxlOiBcIlwiXG5cdFx0XHRcdH0sXG5cdFx0XHRcdGphbToge1xuXHRcdFx0XHRcdHVybDogXCJcIixcblx0XHRcdFx0XHR0aXRsZTogXCJcIlxuXHRcdFx0XHR9LFxuXHRcdFx0XHR0aWxlOiB7XG5cdFx0XHRcdFx0dXJsOiBcIlwiLFxuXHRcdFx0XHRcdHRpdGxlOiBcIlwiLFxuXHRcdFx0XHRcdHN1YnRpdGxlOiBcIlwiLFxuXHRcdFx0XHRcdGljb246IFwiXCIsXG5cdFx0XHRcdFx0cXVlcnlVcmw6IFwiXCJcblx0XHRcdFx0fVxuXHRcdFx0fTtcblx0XHRvTGFzdEZvY3VzZWRDb250cm9sID0gYnk7XG5cblx0XHRjb25zdCBzZXRTaGFyZUVtYWlsRGF0YSA9IGZ1bmN0aW9uIChzaGFyZUFjdGlvblNoZWV0OiBhbnksIG9Nb2RlbERhdGE6IGFueSkge1xuXHRcdFx0Y29uc3Qgb1NoYXJlTWFpbE1vZGVsID0gc2hhcmVBY3Rpb25TaGVldC5nZXRNb2RlbChcInNoYXJlRGF0YVwiKTtcblx0XHRcdGNvbnN0IG9OZXdNYWlsRGF0YSA9IGV4dGVuZChvU2hhcmVNYWlsTW9kZWwuZ2V0RGF0YSgpLCBvTW9kZWxEYXRhKTtcblx0XHRcdG9TaGFyZU1haWxNb2RlbC5zZXREYXRhKG9OZXdNYWlsRGF0YSk7XG5cdFx0fTtcblxuXHRcdHRyeSB7XG5cdFx0XHRjb25zdCBvTW9kZWxEYXRhOiBhbnkgPSBhd2FpdCBQcm9taXNlLnJlc29sdmUodGhpcy5hZGFwdFNoYXJlTWV0YWRhdGEob1NoYXJlTWV0YWRhdGEpKTtcblx0XHRcdGNvbnN0IGZyYWdtZW50Q29udHJvbGxlcjogYW55ID0ge1xuXHRcdFx0XHRzaGFyZUVtYWlsUHJlc3NlZDogZnVuY3Rpb24gKCkge1xuXHRcdFx0XHRcdGNvbnN0IG9NYWlsTW9kZWwgPSBvU2hhcmVBY3Rpb25TaGVldC5nZXRNb2RlbChcInNoYXJlRGF0YVwiKSBhcyBKU09OTW9kZWw7XG5cdFx0XHRcdFx0Y29uc3Qgb01haWxEYXRhID0gb01haWxNb2RlbC5nZXREYXRhKCk7XG5cdFx0XHRcdFx0Y29uc3Qgb1Jlc291cmNlID0gKENvcmUgYXMgQ29yZUV4KS5nZXRMaWJyYXJ5UmVzb3VyY2VCdW5kbGUoXCJzYXAuZmUuY29yZVwiKTtcblx0XHRcdFx0XHRjb25zdCBzRW1haWxTdWJqZWN0ID0gb01haWxEYXRhLmVtYWlsLnRpdGxlXG5cdFx0XHRcdFx0XHQ/IG9NYWlsRGF0YS5lbWFpbC50aXRsZVxuXHRcdFx0XHRcdFx0OiBvUmVzb3VyY2UuZ2V0VGV4dChcIlRfU0hBUkVfVVRJTF9IRUxQRVJfU0FQRkVfRU1BSUxfU1VCSkVDVFwiLCBbb01haWxEYXRhLnRpdGxlXSk7XG5cdFx0XHRcdFx0bGlicmFyeS5VUkxIZWxwZXIudHJpZ2dlckVtYWlsKHVuZGVmaW5lZCwgc0VtYWlsU3ViamVjdCwgb01haWxEYXRhLmVtYWlsLnVybCA/IG9NYWlsRGF0YS5lbWFpbC51cmwgOiBvTWFpbERhdGEudXJsKTtcblx0XHRcdFx0fSxcblx0XHRcdFx0c2hhcmVNU1RlYW1zUHJlc3NlZDogZnVuY3Rpb24gKCkge1xuXHRcdFx0XHRcdGNvbnN0IG1zVGVhbXNNb2RlbCA9IG9TaGFyZUFjdGlvblNoZWV0LmdldE1vZGVsKFwic2hhcmVEYXRhXCIpIGFzIEpTT05Nb2RlbDtcblx0XHRcdFx0XHRjb25zdCBtc1RlYW1zRGF0YSA9IG1zVGVhbXNNb2RlbC5nZXREYXRhKCk7XG5cdFx0XHRcdFx0Y29uc3QgbWVzc2FnZSA9IG1zVGVhbXNEYXRhLmVtYWlsLnRpdGxlID8gbXNUZWFtc0RhdGEuZW1haWwudGl0bGUgOiBtc1RlYW1zRGF0YS50aXRsZTtcblx0XHRcdFx0XHRjb25zdCB1cmwgPSBtc1RlYW1zRGF0YS5lbWFpbC51cmwgPyBtc1RlYW1zRGF0YS5lbWFpbC51cmwgOiBtc1RlYW1zRGF0YS51cmw7XG5cdFx0XHRcdFx0Y29uc3QgbmV3V2luZG93T3BlbiA9IHdpbmRvdy5vcGVuKFwiXCIsIFwibXMtdGVhbXMtc2hhcmUtcG9wdXBcIiwgXCJ3aWR0aD03MDAsaGVpZ2h0PTYwMFwiKTtcblx0XHRcdFx0XHRuZXdXaW5kb3dPcGVuIS5vcGVuZXIgPSBudWxsO1xuXHRcdFx0XHRcdG5ld1dpbmRvd09wZW4hLmxvY2F0aW9uID0gYGh0dHBzOi8vdGVhbXMubWljcm9zb2Z0LmNvbS9zaGFyZT9tc2dUZXh0PSR7ZW5jb2RlVVJJQ29tcG9uZW50KFxuXHRcdFx0XHRcdFx0bWVzc2FnZVxuXHRcdFx0XHRcdCl9JmhyZWY9JHtlbmNvZGVVUklDb21wb25lbnQodXJsKX1gO1xuXHRcdFx0XHR9LFxuXHRcdFx0XHRvblNhdmVUaWxlUHJlc3M6IGZ1bmN0aW9uICgpIHtcblx0XHRcdFx0XHQvLyBUT0RPIGl0IHNlZW1zIHRoYXQgdGhlIHByZXNzIGV2ZW50IGlzIGV4ZWN1dGVkIGJlZm9yZSB0aGUgZGlhbG9nIGlzIGF2YWlsYWJsZSAtIGFkZGluZyBhIHRpbWVvdXQgaXMgYSBjaGVhcCB3b3JrYXJvdW5kXG5cdFx0XHRcdFx0c2V0VGltZW91dChmdW5jdGlvbiAoKSB7XG5cdFx0XHRcdFx0XHQoKENvcmUgYXMgQ29yZUV4KS5ieUlkKFwiYm9va21hcmtEaWFsb2dcIikgYXMgRGlhbG9nKT8uYXR0YWNoQWZ0ZXJDbG9zZShmdW5jdGlvbiAoKSB7XG5cdFx0XHRcdFx0XHRcdG9MYXN0Rm9jdXNlZENvbnRyb2wuZm9jdXMoKTtcblx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdH0sIDApO1xuXHRcdFx0XHR9LFxuXHRcdFx0XHRzaGFyZUphbVByZXNzZWQ6ICgpID0+IHtcblx0XHRcdFx0XHR0aGlzLl9kb09wZW5KYW1TaGFyZURpYWxvZyhcblx0XHRcdFx0XHRcdG9Nb2RlbERhdGEuamFtLnRpdGxlID8gb01vZGVsRGF0YS5qYW0udGl0bGUgOiBvTW9kZWxEYXRhLnRpdGxlLFxuXHRcdFx0XHRcdFx0b01vZGVsRGF0YS5qYW0udXJsID8gb01vZGVsRGF0YS5qYW0udXJsIDogd2luZG93LmxvY2F0aW9uLm9yaWdpbiArIHdpbmRvdy5sb2NhdGlvbi5wYXRobmFtZSArIG9Nb2RlbERhdGEudXJsXG5cdFx0XHRcdFx0KTtcblx0XHRcdFx0fVxuXHRcdFx0fTtcblxuXHRcdFx0ZnJhZ21lbnRDb250cm9sbGVyLm9uQ2FuY2VsUHJlc3NlZCA9IGZ1bmN0aW9uICgpIHtcblx0XHRcdFx0b1NoYXJlQWN0aW9uU2hlZXQuY2xvc2UoKTtcblx0XHRcdH07XG5cblx0XHRcdGZyYWdtZW50Q29udHJvbGxlci5zZXRTaGFyZVNoZWV0ID0gZnVuY3Rpb24gKG9TaGFyZVNoZWV0OiBhbnkpIHtcblx0XHRcdFx0Ynkuc2hhcmVTaGVldCA9IG9TaGFyZVNoZWV0O1xuXHRcdFx0fTtcblxuXHRcdFx0Y29uc3Qgb1RoaXMgPSBuZXcgSlNPTk1vZGVsKHt9KTtcblx0XHRcdGNvbnN0IG9QcmVwcm9jZXNzb3JTZXR0aW5ncyA9IHtcblx0XHRcdFx0YmluZGluZ0NvbnRleHRzOiB7XG5cdFx0XHRcdFx0XCJ0aGlzXCI6IG9UaGlzLmNyZWF0ZUJpbmRpbmdDb250ZXh0KFwiL1wiKVxuXHRcdFx0XHR9LFxuXHRcdFx0XHRtb2RlbHM6IHtcblx0XHRcdFx0XHRcInRoaXNcIjogb1RoaXNcblx0XHRcdFx0fVxuXHRcdFx0fTtcblx0XHRcdGNvbnN0IG9UaWxlRGF0YSA9IHtcblx0XHRcdFx0dGl0bGU6IG9Nb2RlbERhdGEudGlsZS50aXRsZSA/IG9Nb2RlbERhdGEudGlsZS50aXRsZSA6IG9Nb2RlbERhdGEudGl0bGUsXG5cdFx0XHRcdHN1YnRpdGxlOiBvTW9kZWxEYXRhLnRpbGUuc3VidGl0bGUsXG5cdFx0XHRcdGljb246IG9Nb2RlbERhdGEudGlsZS5pY29uLFxuXHRcdFx0XHR1cmw6IG9Nb2RlbERhdGEudGlsZS51cmwgPyBvTW9kZWxEYXRhLnRpbGUudXJsIDogb01vZGVsRGF0YS51cmwsXG5cdFx0XHRcdHF1ZXJ5VXJsOiBvTW9kZWxEYXRhLnRpbGUucXVlcnlVcmxcblx0XHRcdH07XG5cdFx0XHRpZiAoYnkuc2hhcmVTaGVldCkge1xuXHRcdFx0XHRvU2hhcmVBY3Rpb25TaGVldCA9IGJ5LnNoYXJlU2hlZXQ7XG5cblx0XHRcdFx0Y29uc3Qgb1NoYXJlTW9kZWwgPSBvU2hhcmVBY3Rpb25TaGVldC5nZXRNb2RlbChcInNoYXJlXCIpIGFzIEpTT05Nb2RlbDtcblx0XHRcdFx0dGhpcy5fc2V0U3RhdGljU2hhcmVEYXRhKG9TaGFyZU1vZGVsKTtcblx0XHRcdFx0Y29uc3Qgb05ld0RhdGEgPSBleHRlbmQob1NoYXJlTW9kZWwuZ2V0RGF0YSgpLCBvVGlsZURhdGEpO1xuXHRcdFx0XHRvU2hhcmVNb2RlbC5zZXREYXRhKG9OZXdEYXRhKTtcblx0XHRcdFx0c2V0U2hhcmVFbWFpbERhdGEob1NoYXJlQWN0aW9uU2hlZXQsIG9Nb2RlbERhdGEpO1xuXHRcdFx0XHRvU2hhcmVBY3Rpb25TaGVldC5vcGVuQnkoYnkpO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0Y29uc3Qgc0ZyYWdtZW50TmFtZSA9IFwic2FwLmZlLm1hY3Jvcy5zaGFyZS5TaGFyZVNoZWV0XCI7XG5cdFx0XHRcdGNvbnN0IG9Qb3BvdmVyRnJhZ21lbnQgPSBYTUxUZW1wbGF0ZVByb2Nlc3Nvci5sb2FkVGVtcGxhdGUoc0ZyYWdtZW50TmFtZSwgXCJmcmFnbWVudFwiKTtcblxuXHRcdFx0XHR0cnkge1xuXHRcdFx0XHRcdGNvbnN0IG9GcmFnbWVudCA9IGF3YWl0IFByb21pc2UucmVzb2x2ZShcblx0XHRcdFx0XHRcdFhNTFByZXByb2Nlc3Nvci5wcm9jZXNzKG9Qb3BvdmVyRnJhZ21lbnQsIHsgbmFtZTogc0ZyYWdtZW50TmFtZSB9LCBvUHJlcHJvY2Vzc29yU2V0dGluZ3MpXG5cdFx0XHRcdFx0KTtcblx0XHRcdFx0XHRvU2hhcmVBY3Rpb25TaGVldCA9IChhd2FpdCBGcmFnbWVudC5sb2FkKHsgZGVmaW5pdGlvbjogb0ZyYWdtZW50LCBjb250cm9sbGVyOiBmcmFnbWVudENvbnRyb2xsZXIgfSkpIGFzIGFueTtcblxuXHRcdFx0XHRcdG9TaGFyZUFjdGlvblNoZWV0LnNldE1vZGVsKG5ldyBKU09OTW9kZWwob1RpbGVEYXRhIHx8IHt9KSwgXCJzaGFyZVwiKTtcblx0XHRcdFx0XHRjb25zdCBvU2hhcmVNb2RlbCA9IG9TaGFyZUFjdGlvblNoZWV0LmdldE1vZGVsKFwic2hhcmVcIikgYXMgSlNPTk1vZGVsO1xuXHRcdFx0XHRcdHRoaXMuX3NldFN0YXRpY1NoYXJlRGF0YShvU2hhcmVNb2RlbCk7XG5cdFx0XHRcdFx0Y29uc3Qgb05ld0RhdGEgPSBleHRlbmQob1NoYXJlTW9kZWwuZ2V0RGF0YSgpLCBvVGlsZURhdGEpO1xuXHRcdFx0XHRcdG9TaGFyZU1vZGVsLnNldERhdGEob05ld0RhdGEpO1xuXG5cdFx0XHRcdFx0b1NoYXJlQWN0aW9uU2hlZXQuc2V0TW9kZWwobmV3IEpTT05Nb2RlbChvTW9kZWxEYXRhIHx8IHt9KSwgXCJzaGFyZURhdGFcIik7XG5cdFx0XHRcdFx0c2V0U2hhcmVFbWFpbERhdGEob1NoYXJlQWN0aW9uU2hlZXQsIG9Nb2RlbERhdGEpO1xuXG5cdFx0XHRcdFx0YnkuYWRkRGVwZW5kZW50KG9TaGFyZUFjdGlvblNoZWV0KTtcblx0XHRcdFx0XHRvU2hhcmVBY3Rpb25TaGVldC5vcGVuQnkoYnkpO1xuXHRcdFx0XHRcdGZyYWdtZW50Q29udHJvbGxlci5zZXRTaGFyZVNoZWV0KG9TaGFyZUFjdGlvblNoZWV0KTtcblx0XHRcdFx0fSBjYXRjaCAob0Vycm9yOiBhbnkpIHtcblx0XHRcdFx0XHRMb2cuZXJyb3IoXCJFcnJvciB3aGlsZSBvcGVuaW5nIHRoZSBzaGFyZSBmcmFnbWVudFwiLCBvRXJyb3IpO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fSBjYXRjaCAob0Vycm9yOiBhbnkpIHtcblx0XHRcdExvZy5lcnJvcihcIkVycm9yIHdoaWxlIGZldGNoaW5nIHRoZSBzaGFyZSBtb2RlbCBkYXRhXCIsIG9FcnJvcik7XG5cdFx0fVxuXHR9XG5cdF9zZXRTdGF0aWNTaGFyZURhdGEoc2hhcmVNb2RlbDogYW55KSB7XG5cdFx0Y29uc3Qgb1Jlc291cmNlID0gKENvcmUgYXMgQ29yZUV4KS5nZXRMaWJyYXJ5UmVzb3VyY2VCdW5kbGUoXCJzYXAuZmUuY29yZVwiKTtcblx0XHRzaGFyZU1vZGVsLnNldFByb3BlcnR5KFwiL2phbUJ1dHRvblRleHRcIiwgb1Jlc291cmNlLmdldFRleHQoXCJUX0NPTU1PTl9TQVBGRV9TSEFSRV9KQU1cIikpO1xuXHRcdHNoYXJlTW9kZWwuc2V0UHJvcGVydHkoXCIvZW1haWxCdXR0b25UZXh0XCIsIG9SZXNvdXJjZS5nZXRUZXh0KFwiVF9TRU1BTlRJQ19DT05UUk9MX1NFTkRfRU1BSUxcIikpO1xuXHRcdHNoYXJlTW9kZWwuc2V0UHJvcGVydHkoXCIvbXNUZWFtc1NoYXJlQnV0dG9uVGV4dFwiLCBvUmVzb3VyY2UuZ2V0VGV4dChcIlRfQ09NTU9OX1NBUEZFX1NIQVJFX01TVEVBTVNcIikpO1xuXHRcdC8vIFNoYXJlIHRvIE1pY3Jvc29mdCBUZWFtcyBpcyBmZWF0dXJlIHdoaWNoIGZvciBub3cgb25seSBnZXRzIGVuYWJsZWQgZm9yIHNlbGVjdGVkIGN1c3RvbWVycy5cblx0XHQvLyBUaGUgc3dpdGNoIFwic2FwSG9yaXpvbkVuYWJsZWRcIiBhbmQgY2hlY2sgZm9yIGl0IHdhcyBhbGlnbmVkIHdpdGggdGhlIEZpb3JpIGxhdW5jaHBhZCB0ZWFtLlxuXHRcdGlmIChPYmplY3RQYXRoLmdldChcInNhcC11c2hlbGwtY29uZmlnLnJlbmRlcmVycy5maW9yaTIuY29tcG9uZW50RGF0YS5jb25maWcuc2FwSG9yaXpvbkVuYWJsZWRcIikgPT09IHRydWUpIHtcblx0XHRcdHNoYXJlTW9kZWwuc2V0UHJvcGVydHkoXCIvbXNUZWFtc1Zpc2libGVcIiwgdHJ1ZSk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHNoYXJlTW9kZWwuc2V0UHJvcGVydHkoXCIvbXNUZWFtc1Zpc2libGVcIiwgZmFsc2UpO1xuXHRcdH1cblx0XHRjb25zdCBmbkdldFVzZXIgPSBPYmplY3RQYXRoLmdldChcInNhcC51c2hlbGwuQ29udGFpbmVyLmdldFVzZXJcIik7XG5cdFx0c2hhcmVNb2RlbC5zZXRQcm9wZXJ0eShcIi9qYW1WaXNpYmxlXCIsICEhZm5HZXRVc2VyICYmIGZuR2V0VXNlcigpLmlzSmFtQWN0aXZlKCkpO1xuXHRcdHNoYXJlTW9kZWwuc2V0UHJvcGVydHkoXCIvc2F2ZUFzVGlsZVZpc2libGVcIiwgISEoc2FwICYmIHNhcC51c2hlbGwgJiYgc2FwLnVzaGVsbC5Db250YWluZXIpKTtcblx0fVxuXHQvL3RoZSBhY3R1YWwgb3BlbmluZyBvZiB0aGUgSkFNIHNoYXJlIGRpYWxvZ1xuXHRfZG9PcGVuSmFtU2hhcmVEaWFsb2codGV4dDogYW55LCBzVXJsPzogYW55KSB7XG5cdFx0Y29uc3Qgb1NoYXJlRGlhbG9nID0gQ29yZS5jcmVhdGVDb21wb25lbnQoe1xuXHRcdFx0bmFtZTogXCJzYXAuY29sbGFib3JhdGlvbi5jb21wb25lbnRzLmZpb3JpLnNoYXJpbmcuZGlhbG9nXCIsXG5cdFx0XHRzZXR0aW5nczoge1xuXHRcdFx0XHRvYmplY3Q6IHtcblx0XHRcdFx0XHRpZDogc1VybCxcblx0XHRcdFx0XHRzaGFyZTogdGV4dFxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fSk7XG5cdFx0KG9TaGFyZURpYWxvZyBhcyBhbnkpLm9wZW4oKTtcblx0fVxufVxuXG5leHBvcnQgZGVmYXVsdCBTaGFyZVV0aWxzO1xuIl0sIm1hcHBpbmdzIjoiO0FBQUE7QUFBQTtBQUFBOzs7Ozs7Ozs7OztFQWtqQk8sZ0JBQWdCQSxJQUFoQixFQUFzQkMsT0FBdEIsRUFBK0I7SUFDckMsSUFBSTtNQUNILElBQUlDLE1BQU0sR0FBR0YsSUFBSSxFQUFqQjtJQUNBLENBRkQsQ0FFRSxPQUFNRyxDQUFOLEVBQVM7TUFDVixPQUFPRixPQUFPLENBQUNFLENBQUQsQ0FBZDtJQUNBOztJQUNELElBQUlELE1BQU0sSUFBSUEsTUFBTSxDQUFDRSxJQUFyQixFQUEyQjtNQUMxQixPQUFPRixNQUFNLENBQUNFLElBQVAsQ0FBWSxLQUFLLENBQWpCLEVBQW9CSCxPQUFwQixDQUFQO0lBQ0E7O0lBQ0QsT0FBT0MsTUFBUDtFQUNBOzs7Ozs7OztFQXppQkQsSUFBSUcsbUJBQUo7RUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7TUFFTUMsVSxXQURMQyxjQUFjLENBQUMsd0NBQUQsQyxVQWFiQyxlQUFlLEUsVUFDZkMsY0FBYyxFLFVBNEJkRCxlQUFlLEUsVUFDZkUsVUFBVSxDQUFDQyxpQkFBaUIsQ0FBQ0MsS0FBbkIsQzs7Ozs7Ozs7O0lBdkNYO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtXQUdDQyxjLEdBRkEsd0JBRWVDLFFBRmYsRUFFaUM7TUFDaEMsS0FBS0MsbUJBQUwsQ0FBeUJELFFBQXpCO0lBQ0E7SUFDRDtBQUNEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztXQUdDRSxrQixHQUZBLDRCQUVtQkMsY0FGbkIsRUFRNkI7TUFDNUIsT0FBT0EsY0FBUDtJQUNBLEM7O1dBQ0tGLG1CLGdDQUFvQkcsRTtVQUF3QjtRQUFBLGFBa0NGLElBbENFOztRQUNqRCxJQUFJQyxpQkFBSjtRQUNBLElBQU1DLEtBQUssR0FBR0MsV0FBVyxDQUFDQyxXQUFaLEdBQTBCQyxPQUExQixFQUFkO1FBQUEsSUFDQ0MsU0FBUyxHQUFJSCxXQUFXLENBQUNDLFdBQVosRUFBRCxDQUFtQ0csc0JBQW5DLEdBQ1JKLFdBQVcsQ0FBQ0MsV0FBWixFQUFELENBQW1DRyxzQkFBbkMsQ0FBMEQsRUFBMUQsQ0FEUyxHQUVULEVBSEo7UUFBQSxJQUlDUixjQUFjLEdBQUc7VUFDaEJTLEdBQUcsRUFBRU4sS0FBSyxHQUFHSSxTQUFTLEdBQUdKLEtBQWYsR0FBdUJPLE1BQU0sQ0FBQ0MsUUFBUCxDQUFnQkMsSUFEakM7VUFFaEJDLEtBQUssRUFBRUMsUUFBUSxDQUFDRCxLQUZBO1VBR2hCRSxLQUFLLEVBQUU7WUFDTk4sR0FBRyxFQUFFLEVBREM7WUFFTkksS0FBSyxFQUFFO1VBRkQsQ0FIUztVQU9oQkcsR0FBRyxFQUFFO1lBQ0pQLEdBQUcsRUFBRSxFQUREO1lBRUpJLEtBQUssRUFBRTtVQUZILENBUFc7VUFXaEJJLElBQUksRUFBRTtZQUNMUixHQUFHLEVBQUUsRUFEQTtZQUVMSSxLQUFLLEVBQUUsRUFGRjtZQUdMSyxRQUFRLEVBQUUsRUFITDtZQUlMQyxJQUFJLEVBQUUsRUFKRDtZQUtMQyxRQUFRLEVBQUU7VUFMTDtRQVhVLENBSmxCO1FBdUJBaEMsbUJBQW1CLEdBQUdhLEVBQXRCOztRQUVBLElBQU1vQixpQkFBaUIsR0FBRyxVQUFVQyxnQkFBVixFQUFpQ0MsVUFBakMsRUFBa0Q7VUFDM0UsSUFBTUMsZUFBZSxHQUFHRixnQkFBZ0IsQ0FBQ0csUUFBakIsQ0FBMEIsV0FBMUIsQ0FBeEI7VUFDQSxJQUFNQyxZQUFZLEdBQUdDLE1BQU0sQ0FBQ0gsZUFBZSxDQUFDSSxPQUFoQixFQUFELEVBQTRCTCxVQUE1QixDQUEzQjtVQUNBQyxlQUFlLENBQUNLLE9BQWhCLENBQXdCSCxZQUF4QjtRQUNBLENBSkQ7O1FBM0JpRCxnQ0FpQzdDO1VBQUEsdUJBQzJCSSxPQUFPLENBQUNDLE9BQVIsQ0FBZ0IsT0FBS2hDLGtCQUFMLENBQXdCQyxjQUF4QixDQUFoQixDQUQzQixpQkFDR3VCLFVBREg7WUFFSCxJQUFNUyxrQkFBdUIsR0FBRztjQUMvQkMsaUJBQWlCLEVBQUUsWUFBWTtnQkFDOUIsSUFBTUMsVUFBVSxHQUFHaEMsaUJBQWlCLENBQUN1QixRQUFsQixDQUEyQixXQUEzQixDQUFuQjtnQkFDQSxJQUFNVSxTQUFTLEdBQUdELFVBQVUsQ0FBQ04sT0FBWCxFQUFsQjtnQkFDQSxJQUFNUSxTQUFTLEdBQUlDLElBQUQsQ0FBaUJDLHdCQUFqQixDQUEwQyxhQUExQyxDQUFsQjtnQkFDQSxJQUFNQyxhQUFhLEdBQUdKLFNBQVMsQ0FBQ3BCLEtBQVYsQ0FBZ0JGLEtBQWhCLEdBQ25Cc0IsU0FBUyxDQUFDcEIsS0FBVixDQUFnQkYsS0FERyxHQUVuQnVCLFNBQVMsQ0FBQ0ksT0FBVixDQUFrQix5Q0FBbEIsRUFBNkQsQ0FBQ0wsU0FBUyxDQUFDdEIsS0FBWCxDQUE3RCxDQUZIO2dCQUdBNEIsT0FBTyxDQUFDQyxTQUFSLENBQWtCQyxZQUFsQixDQUErQkMsU0FBL0IsRUFBMENMLGFBQTFDLEVBQXlESixTQUFTLENBQUNwQixLQUFWLENBQWdCTixHQUFoQixHQUFzQjBCLFNBQVMsQ0FBQ3BCLEtBQVYsQ0FBZ0JOLEdBQXRDLEdBQTRDMEIsU0FBUyxDQUFDMUIsR0FBL0c7Y0FDQSxDQVQ4QjtjQVUvQm9DLG1CQUFtQixFQUFFLFlBQVk7Z0JBQ2hDLElBQU1DLFlBQVksR0FBRzVDLGlCQUFpQixDQUFDdUIsUUFBbEIsQ0FBMkIsV0FBM0IsQ0FBckI7Z0JBQ0EsSUFBTXNCLFdBQVcsR0FBR0QsWUFBWSxDQUFDbEIsT0FBYixFQUFwQjtnQkFDQSxJQUFNb0IsT0FBTyxHQUFHRCxXQUFXLENBQUNoQyxLQUFaLENBQWtCRixLQUFsQixHQUEwQmtDLFdBQVcsQ0FBQ2hDLEtBQVosQ0FBa0JGLEtBQTVDLEdBQW9Ea0MsV0FBVyxDQUFDbEMsS0FBaEY7Z0JBQ0EsSUFBTUosR0FBRyxHQUFHc0MsV0FBVyxDQUFDaEMsS0FBWixDQUFrQk4sR0FBbEIsR0FBd0JzQyxXQUFXLENBQUNoQyxLQUFaLENBQWtCTixHQUExQyxHQUFnRHNDLFdBQVcsQ0FBQ3RDLEdBQXhFO2dCQUNBLElBQU13QyxhQUFhLEdBQUd2QyxNQUFNLENBQUN3QyxJQUFQLENBQVksRUFBWixFQUFnQixzQkFBaEIsRUFBd0Msc0JBQXhDLENBQXRCO2dCQUNBRCxhQUFhLENBQUVFLE1BQWYsR0FBd0IsSUFBeEI7Z0JBQ0FGLGFBQWEsQ0FBRXRDLFFBQWYsdURBQXVFeUMsa0JBQWtCLENBQ3hGSixPQUR3RixDQUF6RixtQkFFVUksa0JBQWtCLENBQUMzQyxHQUFELENBRjVCO2NBR0EsQ0FwQjhCO2NBcUIvQjRDLGVBQWUsRUFBRSxZQUFZO2dCQUM1QjtnQkFDQUMsVUFBVSxDQUFDLFlBQVk7a0JBQUE7O2tCQUN0QixTQUFFakIsSUFBRCxDQUFpQmtCLElBQWpCLENBQXNCLGdCQUF0QixDQUFELGdEQUFxREMsZ0JBQXJELENBQXNFLFlBQVk7b0JBQ2pGcEUsbUJBQW1CLENBQUNxRSxLQUFwQjtrQkFDQSxDQUZEO2dCQUdBLENBSlMsRUFJUCxDQUpPLENBQVY7Y0FLQSxDQTVCOEI7Y0E2Qi9CQyxlQUFlLEVBQUUsWUFBTTtnQkFDdEIsT0FBS0MscUJBQUwsQ0FDQ3BDLFVBQVUsQ0FBQ1AsR0FBWCxDQUFlSCxLQUFmLEdBQXVCVSxVQUFVLENBQUNQLEdBQVgsQ0FBZUgsS0FBdEMsR0FBOENVLFVBQVUsQ0FBQ1YsS0FEMUQsRUFFQ1UsVUFBVSxDQUFDUCxHQUFYLENBQWVQLEdBQWYsR0FBcUJjLFVBQVUsQ0FBQ1AsR0FBWCxDQUFlUCxHQUFwQyxHQUEwQ0MsTUFBTSxDQUFDQyxRQUFQLENBQWdCaUQsTUFBaEIsR0FBeUJsRCxNQUFNLENBQUNDLFFBQVAsQ0FBZ0JrRCxRQUF6QyxHQUFvRHRDLFVBQVUsQ0FBQ2QsR0FGMUc7Y0FJQTtZQWxDOEIsQ0FBaEM7O1lBcUNBdUIsa0JBQWtCLENBQUM4QixlQUFuQixHQUFxQyxZQUFZO2NBQ2hENUQsaUJBQWlCLENBQUM2RCxLQUFsQjtZQUNBLENBRkQ7O1lBSUEvQixrQkFBa0IsQ0FBQ2dDLGFBQW5CLEdBQW1DLFVBQVVDLFdBQVYsRUFBNEI7Y0FDOURoRSxFQUFFLENBQUNpRSxVQUFILEdBQWdCRCxXQUFoQjtZQUNBLENBRkQ7O1lBSUEsSUFBTUUsS0FBSyxHQUFHLElBQUlDLFNBQUosQ0FBYyxFQUFkLENBQWQ7WUFDQSxJQUFNQyxxQkFBcUIsR0FBRztjQUM3QkMsZUFBZSxFQUFFO2dCQUNoQixRQUFRSCxLQUFLLENBQUNJLG9CQUFOLENBQTJCLEdBQTNCO2NBRFEsQ0FEWTtjQUk3QkMsTUFBTSxFQUFFO2dCQUNQLFFBQVFMO2NBREQ7WUFKcUIsQ0FBOUI7WUFRQSxJQUFNTSxTQUFTLEdBQUc7Y0FDakI1RCxLQUFLLEVBQUVVLFVBQVUsQ0FBQ04sSUFBWCxDQUFnQkosS0FBaEIsR0FBd0JVLFVBQVUsQ0FBQ04sSUFBWCxDQUFnQkosS0FBeEMsR0FBZ0RVLFVBQVUsQ0FBQ1YsS0FEakQ7Y0FFakJLLFFBQVEsRUFBRUssVUFBVSxDQUFDTixJQUFYLENBQWdCQyxRQUZUO2NBR2pCQyxJQUFJLEVBQUVJLFVBQVUsQ0FBQ04sSUFBWCxDQUFnQkUsSUFITDtjQUlqQlYsR0FBRyxFQUFFYyxVQUFVLENBQUNOLElBQVgsQ0FBZ0JSLEdBQWhCLEdBQXNCYyxVQUFVLENBQUNOLElBQVgsQ0FBZ0JSLEdBQXRDLEdBQTRDYyxVQUFVLENBQUNkLEdBSjNDO2NBS2pCVyxRQUFRLEVBQUVHLFVBQVUsQ0FBQ04sSUFBWCxDQUFnQkc7WUFMVCxDQUFsQjs7WUF4REc7Y0FBQSxJQStEQ25CLEVBQUUsQ0FBQ2lFLFVBL0RKO2dCQWdFRmhFLGlCQUFpQixHQUFHRCxFQUFFLENBQUNpRSxVQUF2QjtnQkFFQSxJQUFNUSxXQUFXLEdBQUd4RSxpQkFBaUIsQ0FBQ3VCLFFBQWxCLENBQTJCLE9BQTNCLENBQXBCOztnQkFDQSxPQUFLa0QsbUJBQUwsQ0FBeUJELFdBQXpCOztnQkFDQSxJQUFNRSxRQUFRLEdBQUdqRCxNQUFNLENBQUMrQyxXQUFXLENBQUM5QyxPQUFaLEVBQUQsRUFBd0I2QyxTQUF4QixDQUF2QjtnQkFDQUMsV0FBVyxDQUFDN0MsT0FBWixDQUFvQitDLFFBQXBCO2dCQUNBdkQsaUJBQWlCLENBQUNuQixpQkFBRCxFQUFvQnFCLFVBQXBCLENBQWpCO2dCQUNBckIsaUJBQWlCLENBQUMyRSxNQUFsQixDQUF5QjVFLEVBQXpCO2NBdkVFO2dCQXlFRixJQUFNNkUsYUFBYSxHQUFHLGdDQUF0QjtnQkFDQSxJQUFNQyxnQkFBZ0IsR0FBR0Msb0JBQW9CLENBQUNDLFlBQXJCLENBQWtDSCxhQUFsQyxFQUFpRCxVQUFqRCxDQUF6Qjs7Z0JBMUVFLGdDQTRFRTtrQkFBQSx1QkFDcUJoRCxPQUFPLENBQUNDLE9BQVIsQ0FDdkJtRCxlQUFlLENBQUNDLE9BQWhCLENBQXdCSixnQkFBeEIsRUFBMEM7b0JBQUVLLElBQUksRUFBRU47a0JBQVIsQ0FBMUMsRUFBbUVULHFCQUFuRSxDQUR1QixDQURyQixpQkFDR2dCLFNBREg7b0JBQUEsdUJBSXdCQyxRQUFRLENBQUNDLElBQVQsQ0FBYztzQkFBRUMsVUFBVSxFQUFFSCxTQUFkO3NCQUF5QkksVUFBVSxFQUFFekQ7b0JBQXJDLENBQWQsQ0FKeEI7c0JBSUg5QixpQkFBaUIsaUJBQWpCO3NCQUVBQSxpQkFBaUIsQ0FBQ3dGLFFBQWxCLENBQTJCLElBQUl0QixTQUFKLENBQWNLLFNBQVMsSUFBSSxFQUEzQixDQUEzQixFQUEyRCxPQUEzRDtzQkFDQSxJQUFNQyxXQUFXLEdBQUd4RSxpQkFBaUIsQ0FBQ3VCLFFBQWxCLENBQTJCLE9BQTNCLENBQXBCOztzQkFDQSxPQUFLa0QsbUJBQUwsQ0FBeUJELFdBQXpCOztzQkFDQSxJQUFNRSxRQUFRLEdBQUdqRCxNQUFNLENBQUMrQyxXQUFXLENBQUM5QyxPQUFaLEVBQUQsRUFBd0I2QyxTQUF4QixDQUF2QjtzQkFDQUMsV0FBVyxDQUFDN0MsT0FBWixDQUFvQitDLFFBQXBCO3NCQUVBMUUsaUJBQWlCLENBQUN3RixRQUFsQixDQUEyQixJQUFJdEIsU0FBSixDQUFjN0MsVUFBVSxJQUFJLEVBQTVCLENBQTNCLEVBQTRELFdBQTVEO3NCQUNBRixpQkFBaUIsQ0FBQ25CLGlCQUFELEVBQW9CcUIsVUFBcEIsQ0FBakI7c0JBRUF0QixFQUFFLENBQUMwRixZQUFILENBQWdCekYsaUJBQWhCO3NCQUNBQSxpQkFBaUIsQ0FBQzJFLE1BQWxCLENBQXlCNUUsRUFBekI7c0JBQ0ErQixrQkFBa0IsQ0FBQ2dDLGFBQW5CLENBQWlDOUQsaUJBQWpDO29CQWpCRztrQkFBQTtnQkFrQkgsQ0E5RkMsWUE4Rk8wRixNQTlGUCxFQThGb0I7a0JBQ3JCQyxHQUFHLENBQUNDLEtBQUosQ0FBVSx3Q0FBVixFQUFvREYsTUFBcEQ7Z0JBQ0EsQ0FoR0M7O2dCQUFBO2NBQUE7WUFBQTs7WUFBQTtVQUFBO1FBa0dILENBbklnRCxZQW1JeENBLE1Bbkl3QyxFQW1JM0I7VUFDckJDLEdBQUcsQ0FBQ0MsS0FBSixDQUFVLDJDQUFWLEVBQXVERixNQUF2RDtRQUNBLENBcklnRDs7UUFBQTtNQXNJakQsQzs7Ozs7V0FDRGpCLG1CLEdBQUEsNkJBQW9Cb0IsVUFBcEIsRUFBcUM7TUFDcEMsSUFBTTNELFNBQVMsR0FBSUMsSUFBRCxDQUFpQkMsd0JBQWpCLENBQTBDLGFBQTFDLENBQWxCO01BQ0F5RCxVQUFVLENBQUNDLFdBQVgsQ0FBdUIsZ0JBQXZCLEVBQXlDNUQsU0FBUyxDQUFDSSxPQUFWLENBQWtCLDBCQUFsQixDQUF6QztNQUNBdUQsVUFBVSxDQUFDQyxXQUFYLENBQXVCLGtCQUF2QixFQUEyQzVELFNBQVMsQ0FBQ0ksT0FBVixDQUFrQiwrQkFBbEIsQ0FBM0M7TUFDQXVELFVBQVUsQ0FBQ0MsV0FBWCxDQUF1Qix5QkFBdkIsRUFBa0Q1RCxTQUFTLENBQUNJLE9BQVYsQ0FBa0IsOEJBQWxCLENBQWxELEVBSm9DLENBS3BDO01BQ0E7O01BQ0EsSUFBSXlELFVBQVUsQ0FBQ0MsR0FBWCxDQUFlLDJFQUFmLE1BQWdHLElBQXBHLEVBQTBHO1FBQ3pHSCxVQUFVLENBQUNDLFdBQVgsQ0FBdUIsaUJBQXZCLEVBQTBDLElBQTFDO01BQ0EsQ0FGRCxNQUVPO1FBQ05ELFVBQVUsQ0FBQ0MsV0FBWCxDQUF1QixpQkFBdkIsRUFBMEMsS0FBMUM7TUFDQTs7TUFDRCxJQUFNRyxTQUFTLEdBQUdGLFVBQVUsQ0FBQ0MsR0FBWCxDQUFlLDhCQUFmLENBQWxCO01BQ0FILFVBQVUsQ0FBQ0MsV0FBWCxDQUF1QixhQUF2QixFQUFzQyxDQUFDLENBQUNHLFNBQUYsSUFBZUEsU0FBUyxHQUFHQyxXQUFaLEVBQXJEO01BQ0FMLFVBQVUsQ0FBQ0MsV0FBWCxDQUF1QixvQkFBdkIsRUFBNkMsQ0FBQyxFQUFFSyxHQUFHLElBQUlBLEdBQUcsQ0FBQ0MsTUFBWCxJQUFxQkQsR0FBRyxDQUFDQyxNQUFKLENBQVdDLFNBQWxDLENBQTlDO0lBQ0EsQyxDQUNEOzs7V0FDQTVDLHFCLEdBQUEsK0JBQXNCNkMsSUFBdEIsRUFBaUNDLElBQWpDLEVBQTZDO01BQzVDLElBQU1DLFlBQVksR0FBR3JFLElBQUksQ0FBQ3NFLGVBQUwsQ0FBcUI7UUFDekN2QixJQUFJLEVBQUUsbURBRG1DO1FBRXpDd0IsUUFBUSxFQUFFO1VBQ1RDLE1BQU0sRUFBRTtZQUNQQyxFQUFFLEVBQUVMLElBREc7WUFFUE0sS0FBSyxFQUFFUDtVQUZBO1FBREM7TUFGK0IsQ0FBckIsQ0FBckI7TUFTQ0UsWUFBRCxDQUFzQnhELElBQXRCO0lBQ0EsQzs7O0lBdk51QjhELG1CO1NBME5WM0gsVSJ9
|
|
@@ -79,8 +79,8 @@ class ShareUtils extends ControllerExtension {
|
|
|
79
79
|
}): object | Promise<object> {
|
|
80
80
|
return oShareMetadata;
|
|
81
81
|
}
|
|
82
|
-
_openShareSheetImpl(by: any) {
|
|
83
|
-
let oShareActionSheet: ActionSheet
|
|
82
|
+
async _openShareSheetImpl(by: any): Promise<void> {
|
|
83
|
+
let oShareActionSheet: ActionSheet;
|
|
84
84
|
const sHash = HashChanger.getInstance().getHash(),
|
|
85
85
|
sBasePath = (HashChanger.getInstance() as any).hrefForAppSpecificHash
|
|
86
86
|
? (HashChanger.getInstance() as any).hrefForAppSpecificHash("")
|
|
@@ -111,110 +111,108 @@ class ShareUtils extends ControllerExtension {
|
|
|
111
111
|
const oNewMailData = extend(oShareMailModel.getData(), oModelData);
|
|
112
112
|
oShareMailModel.setData(oNewMailData);
|
|
113
113
|
};
|
|
114
|
-
return Promise.resolve(this.adaptShareMetadata(oShareMetadata))
|
|
115
|
-
.then((oModelData: any) => {
|
|
116
|
-
fragmentController = {
|
|
117
|
-
shareEmailPressed: function () {
|
|
118
|
-
const oMailModel = oShareActionSheet.getModel("shareData") as JSONModel;
|
|
119
|
-
const oMailData = oMailModel.getData();
|
|
120
|
-
const oResource = (Core as CoreEx).getLibraryResourceBundle("sap.fe.core");
|
|
121
|
-
const sEmailSubject = oMailData.email.title
|
|
122
|
-
? oMailData.email.title
|
|
123
|
-
: oResource.getText("T_SHARE_UTIL_HELPER_SAPFE_EMAIL_SUBJECT", [oMailData.title]);
|
|
124
|
-
library.URLHelper.triggerEmail(undefined, sEmailSubject, oMailData.email.url ? oMailData.email.url : oMailData.url);
|
|
125
|
-
},
|
|
126
|
-
shareMSTeamsPressed: function () {
|
|
127
|
-
const msTeamsModel = oShareActionSheet.getModel("shareData") as JSONModel;
|
|
128
|
-
const msTeamsData = msTeamsModel.getData();
|
|
129
|
-
const message = msTeamsData.email.title ? msTeamsData.email.title : msTeamsData.title;
|
|
130
|
-
const url = msTeamsData.email.url ? msTeamsData.email.url : msTeamsData.url;
|
|
131
|
-
const newWindowOpen = window.open("", "ms-teams-share-popup", "width=700,height=600");
|
|
132
|
-
newWindowOpen!.opener = null;
|
|
133
|
-
newWindowOpen!.location = `https://teams.microsoft.com/share?msgText=${encodeURIComponent(
|
|
134
|
-
message
|
|
135
|
-
)}&href=${encodeURIComponent(url)}`;
|
|
136
|
-
},
|
|
137
|
-
onSaveTilePress: function () {
|
|
138
|
-
// TODO it seems that the press event is executed before the dialog is available - adding a timeout is a cheap workaround
|
|
139
|
-
setTimeout(function () {
|
|
140
|
-
((Core as CoreEx).byId("bookmarkDialog") as Dialog)?.attachAfterClose(function () {
|
|
141
|
-
oLastFocusedControl.focus();
|
|
142
|
-
});
|
|
143
|
-
}, 0);
|
|
144
|
-
},
|
|
145
|
-
shareJamPressed: () => {
|
|
146
|
-
this._doOpenJamShareDialog(
|
|
147
|
-
oModelData.jam.title ? oModelData.jam.title : oModelData.title,
|
|
148
|
-
oModelData.jam.url ? oModelData.jam.url : window.location.origin + window.location.pathname + oModelData.url
|
|
149
|
-
);
|
|
150
|
-
}
|
|
151
|
-
};
|
|
152
114
|
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
115
|
+
try {
|
|
116
|
+
const oModelData: any = await Promise.resolve(this.adaptShareMetadata(oShareMetadata));
|
|
117
|
+
const fragmentController: any = {
|
|
118
|
+
shareEmailPressed: function () {
|
|
119
|
+
const oMailModel = oShareActionSheet.getModel("shareData") as JSONModel;
|
|
120
|
+
const oMailData = oMailModel.getData();
|
|
121
|
+
const oResource = (Core as CoreEx).getLibraryResourceBundle("sap.fe.core");
|
|
122
|
+
const sEmailSubject = oMailData.email.title
|
|
123
|
+
? oMailData.email.title
|
|
124
|
+
: oResource.getText("T_SHARE_UTIL_HELPER_SAPFE_EMAIL_SUBJECT", [oMailData.title]);
|
|
125
|
+
library.URLHelper.triggerEmail(undefined, sEmailSubject, oMailData.email.url ? oMailData.email.url : oMailData.url);
|
|
126
|
+
},
|
|
127
|
+
shareMSTeamsPressed: function () {
|
|
128
|
+
const msTeamsModel = oShareActionSheet.getModel("shareData") as JSONModel;
|
|
129
|
+
const msTeamsData = msTeamsModel.getData();
|
|
130
|
+
const message = msTeamsData.email.title ? msTeamsData.email.title : msTeamsData.title;
|
|
131
|
+
const url = msTeamsData.email.url ? msTeamsData.email.url : msTeamsData.url;
|
|
132
|
+
const newWindowOpen = window.open("", "ms-teams-share-popup", "width=700,height=600");
|
|
133
|
+
newWindowOpen!.opener = null;
|
|
134
|
+
newWindowOpen!.location = `https://teams.microsoft.com/share?msgText=${encodeURIComponent(
|
|
135
|
+
message
|
|
136
|
+
)}&href=${encodeURIComponent(url)}`;
|
|
137
|
+
},
|
|
138
|
+
onSaveTilePress: function () {
|
|
139
|
+
// TODO it seems that the press event is executed before the dialog is available - adding a timeout is a cheap workaround
|
|
140
|
+
setTimeout(function () {
|
|
141
|
+
((Core as CoreEx).byId("bookmarkDialog") as Dialog)?.attachAfterClose(function () {
|
|
142
|
+
oLastFocusedControl.focus();
|
|
143
|
+
});
|
|
144
|
+
}, 0);
|
|
145
|
+
},
|
|
146
|
+
shareJamPressed: () => {
|
|
147
|
+
this._doOpenJamShareDialog(
|
|
148
|
+
oModelData.jam.title ? oModelData.jam.title : oModelData.title,
|
|
149
|
+
oModelData.jam.url ? oModelData.jam.url : window.location.origin + window.location.pathname + oModelData.url
|
|
150
|
+
);
|
|
151
|
+
}
|
|
152
|
+
};
|
|
153
|
+
|
|
154
|
+
fragmentController.onCancelPressed = function () {
|
|
155
|
+
oShareActionSheet.close();
|
|
156
|
+
};
|
|
157
|
+
|
|
158
|
+
fragmentController.setShareSheet = function (oShareSheet: any) {
|
|
159
|
+
by.shareSheet = oShareSheet;
|
|
160
|
+
};
|
|
161
|
+
|
|
162
|
+
const oThis = new JSONModel({});
|
|
163
|
+
const oPreprocessorSettings = {
|
|
164
|
+
bindingContexts: {
|
|
165
|
+
"this": oThis.createBindingContext("/")
|
|
166
|
+
},
|
|
167
|
+
models: {
|
|
168
|
+
"this": oThis
|
|
169
|
+
}
|
|
170
|
+
};
|
|
171
|
+
const oTileData = {
|
|
172
|
+
title: oModelData.tile.title ? oModelData.tile.title : oModelData.title,
|
|
173
|
+
subtitle: oModelData.tile.subtitle,
|
|
174
|
+
icon: oModelData.tile.icon,
|
|
175
|
+
url: oModelData.tile.url ? oModelData.tile.url : oModelData.url,
|
|
176
|
+
queryUrl: oModelData.tile.queryUrl
|
|
177
|
+
};
|
|
178
|
+
if (by.shareSheet) {
|
|
179
|
+
oShareActionSheet = by.shareSheet;
|
|
156
180
|
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
181
|
+
const oShareModel = oShareActionSheet.getModel("share") as JSONModel;
|
|
182
|
+
this._setStaticShareData(oShareModel);
|
|
183
|
+
const oNewData = extend(oShareModel.getData(), oTileData);
|
|
184
|
+
oShareModel.setData(oNewData);
|
|
185
|
+
setShareEmailData(oShareActionSheet, oModelData);
|
|
186
|
+
oShareActionSheet.openBy(by);
|
|
187
|
+
} else {
|
|
188
|
+
const sFragmentName = "sap.fe.macros.share.ShareSheet";
|
|
189
|
+
const oPopoverFragment = XMLTemplateProcessor.loadTemplate(sFragmentName, "fragment");
|
|
160
190
|
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
models: {
|
|
167
|
-
"this": oThis
|
|
168
|
-
}
|
|
169
|
-
};
|
|
170
|
-
const oTileData = {
|
|
171
|
-
title: oModelData.tile.title ? oModelData.tile.title : oModelData.title,
|
|
172
|
-
subtitle: oModelData.tile.subtitle,
|
|
173
|
-
icon: oModelData.tile.icon,
|
|
174
|
-
url: oModelData.tile.url ? oModelData.tile.url : oModelData.url,
|
|
175
|
-
queryUrl: oModelData.tile.queryUrl
|
|
176
|
-
};
|
|
177
|
-
if (by.shareSheet) {
|
|
178
|
-
oShareActionSheet = by.shareSheet;
|
|
191
|
+
try {
|
|
192
|
+
const oFragment = await Promise.resolve(
|
|
193
|
+
XMLPreprocessor.process(oPopoverFragment, { name: sFragmentName }, oPreprocessorSettings)
|
|
194
|
+
);
|
|
195
|
+
oShareActionSheet = (await Fragment.load({ definition: oFragment, controller: fragmentController })) as any;
|
|
179
196
|
|
|
197
|
+
oShareActionSheet.setModel(new JSONModel(oTileData || {}), "share");
|
|
180
198
|
const oShareModel = oShareActionSheet.getModel("share") as JSONModel;
|
|
181
199
|
this._setStaticShareData(oShareModel);
|
|
182
200
|
const oNewData = extend(oShareModel.getData(), oTileData);
|
|
183
201
|
oShareModel.setData(oNewData);
|
|
184
|
-
setShareEmailData(oShareActionSheet, oModelData);
|
|
185
|
-
oShareActionSheet.openBy(by);
|
|
186
|
-
} else {
|
|
187
|
-
const sFragmentName = "sap.fe.macros.share.ShareSheet",
|
|
188
|
-
oPopoverFragment = XMLTemplateProcessor.loadTemplate(sFragmentName, "fragment");
|
|
189
|
-
|
|
190
|
-
Promise.resolve(XMLPreprocessor.process(oPopoverFragment, { name: sFragmentName }, oPreprocessorSettings))
|
|
191
|
-
.then(function (oFragment: any) {
|
|
192
|
-
return Fragment.load({ definition: oFragment, controller: fragmentController });
|
|
193
|
-
})
|
|
194
|
-
.then((oActionSheet: any) => {
|
|
195
|
-
oShareActionSheet = oActionSheet;
|
|
196
202
|
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
this._setStaticShareData(oShareModel);
|
|
200
|
-
const oNewData = extend(oShareModel.getData(), oTileData);
|
|
201
|
-
oShareModel.setData(oNewData);
|
|
202
|
-
|
|
203
|
-
oShareActionSheet.setModel(new JSONModel(oModelData || {}), "shareData");
|
|
204
|
-
setShareEmailData(oShareActionSheet, oModelData);
|
|
203
|
+
oShareActionSheet.setModel(new JSONModel(oModelData || {}), "shareData");
|
|
204
|
+
setShareEmailData(oShareActionSheet, oModelData);
|
|
205
205
|
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
Log.error("Error while opening the share fragment", oError);
|
|
212
|
-
});
|
|
206
|
+
by.addDependent(oShareActionSheet);
|
|
207
|
+
oShareActionSheet.openBy(by);
|
|
208
|
+
fragmentController.setShareSheet(oShareActionSheet);
|
|
209
|
+
} catch (oError: any) {
|
|
210
|
+
Log.error("Error while opening the share fragment", oError);
|
|
213
211
|
}
|
|
214
|
-
}
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
212
|
+
}
|
|
213
|
+
} catch (oError: any) {
|
|
214
|
+
Log.error("Error while fetching the share model data", oError);
|
|
215
|
+
}
|
|
218
216
|
}
|
|
219
217
|
_setStaticShareData(shareModel: any) {
|
|
220
218
|
const oResource = (Core as CoreEx).getLibraryResourceBundle("sap.fe.core");
|