@sap/open.fe 1.96.0 → 1.97.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 +57 -42
- package/packages/sap.fe.common/src/sap/fe/common/MessageButton.js +1 -1
- package/packages/sap.fe.common/src/sap/fe/common/library-dbg.js +1 -1
- package/packages/sap.fe.common/src/sap/fe/common/library-h2-preload.js +2 -2
- package/packages/sap.fe.common/src/sap/fe/common/library-preload.js +4 -4
- package/packages/sap.fe.common/src/sap/fe/common/library-preload.js.map +3 -3
- package/packages/sap.fe.common/src/sap/fe/common/library.js +1 -1
- package/packages/sap.fe.common/src/sap/fe/common/manifest.json +3 -3
- package/packages/sap.fe.common/src/sap/fe/common/resources.json +4 -4
- 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.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 +2 -2
- package/packages/sap.fe.core/src/sap/fe/core/AnnotationHelper.js +1 -1
- package/packages/sap.fe.core/src/sap/fe/core/CommonUtils-dbg.js +59 -274
- package/packages/sap.fe.core/src/sap/fe/core/CommonUtils.js +1 -1
- package/packages/sap.fe.core/src/sap/fe/core/RouterProxy-dbg.js +52 -64
- package/packages/sap.fe.core/src/sap/fe/core/RouterProxy.js +1 -1
- package/packages/sap.fe.core/src/sap/fe/core/TemplateComponent-dbg.js +2 -2
- package/packages/sap.fe.core/src/sap/fe/core/TemplateComponent.js +1 -1
- package/packages/sap.fe.core/src/sap/fe/core/TransactionHelper-dbg.js +18 -22
- package/packages/sap.fe.core/src/sap/fe/core/TransactionHelper.js +1 -1
- package/packages/sap.fe.core/src/sap/fe/core/actions/messageHandling-dbg.js +80 -4
- package/packages/sap.fe.core/src/sap/fe/core/actions/messageHandling.js +1 -1
- package/packages/sap.fe.core/src/sap/fe/core/actions/operations-dbg.js +42 -23
- package/packages/sap.fe.core/src/sap/fe/core/actions/operations.js +1 -1
- package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/EditFlow-dbg.js +36 -21
- package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/EditFlow.js +1 -1
- package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/InternalIntentBasedNavigation-dbg.js +9 -3
- package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/InternalIntentBasedNavigation.js +1 -1
- package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/InternalRouting-dbg.js +20 -50
- package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/InternalRouting.js +1 -1
- package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/MessageHandler-dbg.js +222 -102
- package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/MessageHandler.js +1 -1
- package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/ViewState-dbg.js +33 -6
- package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/ViewState.js +1 -1
- package/packages/sap.fe.core/src/sap/fe/core/controls/CustomQuickViewPage-dbg.js +109 -111
- package/packages/sap.fe.core/src/sap/fe/core/controls/CustomQuickViewPage.js +1 -1
- package/packages/sap.fe.core/src/sap/fe/core/controls/filterbar.d-dbg.js +8 -0
- package/packages/sap.fe.core/src/sap/fe/core/controls/filterbar.d.js +5 -0
- package/packages/sap.fe.core/src/sap/fe/core/controls/filterbar.d.ts +0 -0
- package/packages/sap.fe.core/src/sap/fe/core/converters/ManifestSettings-dbg.js +2 -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 +4 -1
- package/packages/sap.fe.core/src/sap/fe/core/converters/MetaModelConverter-dbg.js +10 -1
- 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 +9 -1
- package/packages/sap.fe.core/src/sap/fe/core/converters/annotations/DataField-dbg.js +2 -2
- 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 +1 -1
- package/packages/sap.fe.core/src/sap/fe/core/converters/common/AnnotationConverter-dbg.js +67 -40
- package/packages/sap.fe.core/src/sap/fe/core/converters/common/AnnotationConverter.js +1 -1
- package/packages/sap.fe.core/src/sap/fe/core/converters/controls/Common/Action-dbg.js +6 -3
- package/packages/sap.fe.core/src/sap/fe/core/converters/controls/Common/Action.js +1 -1
- package/packages/sap.fe.core/src/sap/fe/core/converters/controls/Common/Action.ts +6 -3
- package/packages/sap.fe.core/src/sap/fe/core/converters/controls/Common/Form-dbg.js +57 -18
- 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 +51 -13
- package/packages/sap.fe.core/src/sap/fe/core/converters/controls/Common/Table-dbg.js +130 -19
- 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 +139 -18
- package/packages/sap.fe.core/src/sap/fe/core/converters/helpers/ID-dbg.js +9 -1
- package/packages/sap.fe.core/src/sap/fe/core/converters/helpers/ID.js +1 -1
- package/packages/sap.fe.core/src/sap/fe/core/converters/helpers/ID.ts +4 -0
- package/packages/sap.fe.core/src/sap/fe/core/converters/templates/ListReportConverter-dbg.js +18 -7
- 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 +17 -12
- package/packages/sap.fe.core/src/sap/fe/core/designtime/AppComponent-dbg.designtime.js +2 -1
- package/packages/sap.fe.core/src/sap/fe/core/designtime/AppComponent.designtime.js +1 -1
- package/packages/sap.fe.core/src/sap/fe/core/designtime/library-preload.designtime.js +1 -1
- package/packages/sap.fe.core/src/sap/fe/core/designtime/library-preload.designtime.js.map +2 -2
- package/packages/sap.fe.core/src/sap/fe/core/formatters/TableFormatter-dbg.js +27 -4
- 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 +20 -3
- package/packages/sap.fe.core/src/sap/fe/core/fpm/manifest.json +2 -2
- package/packages/sap.fe.core/src/sap/fe/core/helpers/KeepAliveHelper-dbg.js +211 -0
- package/packages/sap.fe.core/src/sap/fe/core/helpers/KeepAliveHelper.js +5 -0
- package/packages/sap.fe.core/src/sap/fe/core/helpers/KeepAliveHelper.ts +202 -0
- package/packages/sap.fe.core/src/sap/fe/core/helpers/KeepAliveRefreshTypes-dbg.js +32 -0
- package/packages/sap.fe.core/src/sap/fe/core/helpers/KeepAliveRefreshTypes.js +5 -0
- package/packages/sap.fe.core/src/sap/fe/core/helpers/KeepAliveRefreshTypes.ts +36 -0
- package/packages/sap.fe.core/src/sap/fe/core/helpers/ModelHelper-dbg.js +51 -0
- package/packages/sap.fe.core/src/sap/fe/core/helpers/ModelHelper.js +1 -1
- package/packages/sap.fe.core/src/sap/fe/core/library-dbg.js +1 -1
- package/packages/sap.fe.core/src/sap/fe/core/library-h2-preload.js +10 -9
- package/packages/sap.fe.core/src/sap/fe/core/library-h2-preload.js.map +1 -1
- package/packages/sap.fe.core/src/sap/fe/core/library-preload.js +232 -228
- 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.js +1 -1
- package/packages/sap.fe.core/src/sap/fe/core/manifest.json +10 -10
- package/packages/sap.fe.core/src/sap/fe/core/messagebundle.properties +15 -1
- package/packages/sap.fe.core/src/sap/fe/core/messagebundle_ar.properties +10 -0
- package/packages/sap.fe.core/src/sap/fe/core/messagebundle_bg.properties +10 -0
- package/packages/sap.fe.core/src/sap/fe/core/messagebundle_ca.properties +10 -0
- package/packages/sap.fe.core/src/sap/fe/core/messagebundle_cs.properties +10 -0
- package/packages/sap.fe.core/src/sap/fe/core/messagebundle_cy.properties +10 -0
- package/packages/sap.fe.core/src/sap/fe/core/messagebundle_da.properties +10 -0
- package/packages/sap.fe.core/src/sap/fe/core/messagebundle_de.properties +10 -0
- package/packages/sap.fe.core/src/sap/fe/core/messagebundle_el.properties +10 -0
- package/packages/sap.fe.core/src/sap/fe/core/messagebundle_en.properties +10 -0
- package/packages/sap.fe.core/src/sap/fe/core/messagebundle_en_GB.properties +10 -0
- package/packages/sap.fe.core/src/sap/fe/core/messagebundle_en_US_sappsd.properties +6 -0
- package/packages/sap.fe.core/src/sap/fe/core/messagebundle_en_US_saprigi.properties +11 -1
- package/packages/sap.fe.core/src/sap/fe/core/messagebundle_en_US_saptrc.properties +11 -1
- package/packages/sap.fe.core/src/sap/fe/core/messagebundle_es.properties +10 -0
- package/packages/sap.fe.core/src/sap/fe/core/messagebundle_es_MX.properties +10 -0
- package/packages/sap.fe.core/src/sap/fe/core/messagebundle_et.properties +10 -0
- package/packages/sap.fe.core/src/sap/fe/core/messagebundle_fi.properties +10 -0
- package/packages/sap.fe.core/src/sap/fe/core/messagebundle_fr.properties +10 -0
- package/packages/sap.fe.core/src/sap/fe/core/messagebundle_fr_CA.properties +10 -0
- package/packages/sap.fe.core/src/sap/fe/core/messagebundle_hi.properties +10 -0
- package/packages/sap.fe.core/src/sap/fe/core/messagebundle_hr.properties +10 -0
- package/packages/sap.fe.core/src/sap/fe/core/messagebundle_hu.properties +10 -0
- package/packages/sap.fe.core/src/sap/fe/core/messagebundle_id.properties +11 -1
- package/packages/sap.fe.core/src/sap/fe/core/messagebundle_it.properties +10 -0
- package/packages/sap.fe.core/src/sap/fe/core/messagebundle_iw.properties +10 -0
- package/packages/sap.fe.core/src/sap/fe/core/messagebundle_ja.properties +19 -9
- package/packages/sap.fe.core/src/sap/fe/core/messagebundle_kk.properties +10 -0
- package/packages/sap.fe.core/src/sap/fe/core/messagebundle_ko.properties +10 -0
- package/packages/sap.fe.core/src/sap/fe/core/messagebundle_lt.properties +10 -0
- package/packages/sap.fe.core/src/sap/fe/core/messagebundle_lv.properties +10 -0
- package/packages/sap.fe.core/src/sap/fe/core/messagebundle_ms.properties +10 -0
- package/packages/sap.fe.core/src/sap/fe/core/messagebundle_nl.properties +10 -0
- package/packages/sap.fe.core/src/sap/fe/core/messagebundle_no.properties +10 -0
- package/packages/sap.fe.core/src/sap/fe/core/messagebundle_pl.properties +10 -0
- package/packages/sap.fe.core/src/sap/fe/core/messagebundle_pt.properties +11 -1
- package/packages/sap.fe.core/src/sap/fe/core/messagebundle_pt_PT.properties +10 -0
- package/packages/sap.fe.core/src/sap/fe/core/messagebundle_ro.properties +10 -0
- package/packages/sap.fe.core/src/sap/fe/core/messagebundle_ru.properties +10 -0
- package/packages/sap.fe.core/src/sap/fe/core/messagebundle_sh.properties +10 -0
- package/packages/sap.fe.core/src/sap/fe/core/messagebundle_sk.properties +10 -0
- package/packages/sap.fe.core/src/sap/fe/core/messagebundle_sl.properties +10 -0
- package/packages/sap.fe.core/src/sap/fe/core/messagebundle_sv.properties +10 -0
- package/packages/sap.fe.core/src/sap/fe/core/messagebundle_th.properties +10 -0
- package/packages/sap.fe.core/src/sap/fe/core/messagebundle_tr.properties +10 -0
- package/packages/sap.fe.core/src/sap/fe/core/messagebundle_uk.properties +10 -0
- package/packages/sap.fe.core/src/sap/fe/core/messagebundle_vi.properties +10 -0
- package/packages/sap.fe.core/src/sap/fe/core/messagebundle_zh_CN.properties +10 -0
- package/packages/sap.fe.core/src/sap/fe/core/messagebundle_zh_TW.properties +10 -0
- package/packages/sap.fe.core/src/sap/fe/core/resources.json +200 -121
- package/packages/sap.fe.core/src/sap/fe/core/services/RoutingServiceFactory-dbg.js +30 -19
- package/packages/sap.fe.core/src/sap/fe/core/services/RoutingServiceFactory.js +1 -1
- package/packages/sap.fe.core/src/sap/fe/core/services/TemplatedViewServiceFactory-dbg.js +1 -1
- package/packages/sap.fe.core/src/sap/fe/core/services/TemplatedViewServiceFactory.js +1 -1
- package/packages/sap.fe.core/src/sap/fe/core/templating/EntitySetHelper-dbg.js +80 -7
- package/packages/sap.fe.core/src/sap/fe/core/templating/EntitySetHelper.js +1 -1
- package/packages/sap.fe.core/src/sap/fe/core/templating/EntitySetHelper.ts +42 -2
- package/packages/sap.fe.core/test/sap/fe/core/designtime/api.json +1 -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.xmlmeta.json +1 -1
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/buildingBlockOverview.md +4 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/chart/chartDefault/ChartDefault.view.xml +1 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/controllerExtensions/viewState/manifest.json +2 -2
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/customElements/customColumn/customColumnContent/CustomColumnAdaptation.fragment.xml +13 -10
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/customElements/customColumn/customColumnContent/CustomColumnButton.fragment.xml +7 -4
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/customElements/customColumn/customColumnContent/localService/service.cds +1 -2
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/customElements/customColumn/customColumnContent/manifest.json +1 -0
- package/packages/sap.fe.core/test/sap/fe/core/jest/CommonUtils.spec.js +119 -0
- package/packages/sap.fe.core/test/sap/fe/core/jest/__snapshots__/TemplateConverter.spec.ts.snap +285 -4
- package/packages/sap.fe.core/test/sap/fe/core/jest/controllerextensions/MessageHandler.spec.js +121 -0
- package/packages/sap.fe.core/test/sap/fe/core/jest/controllerextensions/MessageHandler.spec.ts +79 -0
- package/packages/sap.fe.core/test/sap/fe/core/jest/controllerextensions/ViewState.spec.js +147 -0
- package/packages/sap.fe.core/test/sap/fe/core/jest/controllerextensions/ViewState.spec.ts +96 -0
- package/packages/sap.fe.core/test/sap/fe/core/jest/converters/Table.spec.js +51 -18
- package/packages/sap.fe.core/test/sap/fe/core/jest/converters/Table.spec.ts +109 -17
- package/packages/sap.fe.core/test/sap/fe/core/jest/converters/__snapshots__/MetaModelConverter.spec.ts.snap +66 -0
- package/packages/sap.fe.core/test/sap/fe/core/jest/data/EntitySetHelper.cds +33 -0
- package/packages/sap.fe.core/test/sap/fe/core/jest/data/EntitySetHelperMainEntitySortableFalse.cds +12 -0
- package/packages/sap.fe.core/test/sap/fe/core/jest/data/TableGetSelectionMode.cds +8 -8
- package/packages/sap.fe.core/test/sap/fe/core/jest/formatters/TableFormatters.spec.js +68 -0
- package/packages/sap.fe.core/test/sap/fe/core/jest/formatters/TableFormatters.spec.ts +38 -0
- package/packages/sap.fe.core/test/sap/fe/core/jest/helpers/KeepAliveHelper.spec.js +483 -0
- package/packages/sap.fe.core/test/sap/fe/core/jest/helpers/KeepAliveHelper.spec.ts +376 -0
- package/packages/sap.fe.core/test/sap/fe/core/jest/helpers/KeepAliveHelperTestData/ControlRefreshStrategyTests.js +101 -0
- package/packages/sap.fe.core/test/sap/fe/core/jest/helpers/KeepAliveHelperTestData/ControlRefreshStrategyTests.ts +105 -0
- package/packages/sap.fe.core/test/sap/fe/core/jest/helpers/KeepAliveHelperTestData/ControlsForRefreshTests.js +103 -0
- package/packages/sap.fe.core/test/sap/fe/core/jest/helpers/KeepAliveHelperTestData/ControlsForRefreshTests.ts +106 -0
- package/packages/sap.fe.core/test/sap/fe/core/jest/helpers/KeepAliveHelperTestData/RefreshStrategyForIntentTests.js +118 -0
- package/packages/sap.fe.core/test/sap/fe/core/jest/helpers/KeepAliveHelperTestData/RefreshStrategyForIntentTests.ts +118 -0
- package/packages/sap.fe.core/test/sap/fe/core/jest/helpers/KeepAliveHelperTestData/StoreStrategyTests.js +101 -0
- package/packages/sap.fe.core/test/sap/fe/core/jest/helpers/KeepAliveHelperTestData/StoreStrategyTests.ts +102 -0
- package/packages/sap.fe.core/test/sap/fe/core/jest/helpers/ModelHelper.spec.js +118 -1
- package/packages/sap.fe.core/test/sap/fe/core/jest/services/RoutingServiceFactory.spec.js +70 -0
- package/packages/sap.fe.core/test/sap/fe/core/jest/templating/EntitySetHelper.spec.js +89 -0
- package/packages/sap.fe.core/test/sap/fe/core/jest/templating/EntitySetHelper.spec.ts +73 -0
- package/packages/sap.fe.core/test/sap/fe/core/qunit/TemplatingExpressions.qunit.js +4 -2
- package/packages/sap.fe.core/test/sap/fe/core/qunit/apps/generalTests.json +6 -0
- 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/ChartDelegate-dbg.js +15 -5
- 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 +9 -5
- package/packages/sap.fe.macros/src/sap/fe/macros/CommonHelper.js +1 -1
- package/packages/sap.fe.macros/src/sap/fe/macros/DelegateUtil-dbg.js +30 -11
- package/packages/sap.fe.macros/src/sap/fe/macros/DelegateUtil.js +1 -1
- package/packages/sap.fe.macros/src/sap/fe/macros/FieldAPI-dbg.js +3 -5
- package/packages/sap.fe.macros/src/sap/fe/macros/FieldAPI.js +1 -1
- package/packages/sap.fe.macros/src/sap/fe/macros/FieldAPI.ts +3 -5
- package/packages/sap.fe.macros/src/sap/fe/macros/FieldValueHelpDelegate-dbg.js +17 -3
- package/packages/sap.fe.macros/src/sap/fe/macros/FieldValueHelpDelegate.js +1 -1
- package/packages/sap.fe.macros/src/sap/fe/macros/FilterBarAPI-dbg.js +1 -1
- package/packages/sap.fe.macros/src/sap/fe/macros/FilterBarAPI.ts +1 -2
- package/packages/sap.fe.macros/src/sap/fe/macros/FilterBarDelegate-dbg.js +4 -4
- package/packages/sap.fe.macros/src/sap/fe/macros/FilterBarDelegate.js +1 -1
- package/packages/sap.fe.macros/src/sap/fe/macros/FlexibleColumnLayoutActions.fragment.xml +6 -15
- package/packages/sap.fe.macros/src/sap/fe/macros/FormContainer.fragment.xml +14 -12
- package/packages/sap.fe.macros/src/sap/fe/macros/PhantomUtil-dbg.js +1 -1
- 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 +2 -1
- package/packages/sap.fe.macros/src/sap/fe/macros/Table.metadata-dbg.js +12 -1
- 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 +15 -8
- package/packages/sap.fe.macros/src/sap/fe/macros/TableAPI.js +1 -1
- package/packages/sap.fe.macros/src/sap/fe/macros/TableAPI.ts +10 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/chart/ChartHelper-dbg.js +1 -1
- package/packages/sap.fe.macros/src/sap/fe/macros/chart/ChartHelper.js +1 -1
- package/packages/sap.fe.macros/src/sap/fe/macros/field/FieldHelper-dbg.js +81 -9
- 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 +13 -3
- 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 +5 -5
- 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 +4 -4
- package/packages/sap.fe.macros/src/sap/fe/macros/field/QuickViewLinkContactContent.fragment.xml +1 -7
- package/packages/sap.fe.macros/src/sap/fe/macros/field/QuickViewLinkDelegate-dbg.js +5 -3
- package/packages/sap.fe.macros/src/sap/fe/macros/field/QuickViewLinkDelegate.js +1 -1
- package/packages/sap.fe.macros/src/sap/fe/macros/field/QuickViewLinkForContact.fragment.xml +1 -1
- package/packages/sap.fe.macros/src/sap/fe/macros/formcontainer/FormContainerRuntime-dbg.js +46 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/formcontainer/FormContainerRuntime.js +6 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/internal/Field.fragment.xml +17 -8
- package/packages/sap.fe.macros/src/sap/fe/macros/internal/field/FieldStructure.fragment.xml +26 -16
- package/packages/sap.fe.macros/src/sap/fe/macros/internal/field/editStyle/File.fragment.xml +1 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/internal/helpers/DataPointTemplating-dbg.js +4 -13
- 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 +10 -10
- package/packages/sap.fe.macros/src/sap/fe/macros/internal/valuehelp/TableDelegate-dbg.js +5 -3
- package/packages/sap.fe.macros/src/sap/fe/macros/internal/valuehelp/TableDelegate.js +1 -1
- package/packages/sap.fe.macros/src/sap/fe/macros/internal/valuehelp/ValueListHelper-dbg.js +72 -8
- 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 +12 -11
- package/packages/sap.fe.macros/src/sap/fe/macros/library-h2-preload.js.map +1 -1
- package/packages/sap.fe.macros/src/sap/fe/macros/library-preload.js +93 -91
- 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/massedit/MassEditRuntime-dbg.js +1 -1
- package/packages/sap.fe.macros/src/sap/fe/macros/massedit/MassEditRuntime.js +1 -1
- package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle.properties +5 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_ar.properties +2 -2
- package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_bg.properties +2 -2
- package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_ca.properties +2 -2
- package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_cs.properties +2 -2
- package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_cy.properties +2 -2
- package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_da.properties +2 -2
- package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_de.properties +2 -2
- package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_el.properties +2 -2
- package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_en.properties +1 -1
- package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_en_GB.properties +1 -1
- package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_en_US_sappsd.properties +3 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_es.properties +2 -2
- package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_es_MX.properties +2 -2
- package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_et.properties +2 -2
- package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_fi.properties +2 -2
- package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_fr.properties +2 -2
- package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_fr_CA.properties +2 -2
- package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_hi.properties +2 -2
- package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_hr.properties +2 -2
- package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_hu.properties +2 -2
- package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_id.properties +2 -2
- package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_it.properties +2 -2
- package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_iw.properties +2 -2
- package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_ja.properties +3 -3
- package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_kk.properties +2 -2
- package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_ko.properties +2 -2
- package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_lt.properties +2 -2
- package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_lv.properties +2 -2
- package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_ms.properties +2 -2
- package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_nl.properties +2 -2
- package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_no.properties +2 -2
- package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_pl.properties +2 -2
- package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_pt.properties +2 -2
- package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_pt_PT.properties +2 -2
- package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_ro.properties +2 -2
- package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_ru.properties +2 -2
- package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_sh.properties +2 -2
- package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_sk.properties +2 -2
- package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_sl.properties +2 -2
- package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_sv.properties +2 -2
- package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_th.properties +2 -2
- package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_tr.properties +2 -2
- package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_uk.properties +2 -2
- package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_vi.properties +2 -2
- package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_zh_CN.properties +2 -2
- package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_zh_TW.properties +2 -2
- package/packages/sap.fe.macros/src/sap/fe/macros/microchart/fragments/MicroChartTitle.fragment.xml +21 -11
- package/packages/sap.fe.macros/src/sap/fe/macros/microchart/fragments/RadialMicroChart.fragment.xml +2 -1
- package/packages/sap.fe.macros/src/sap/fe/macros/resources.json +149 -110
- package/packages/sap.fe.macros/src/sap/fe/macros/table/Actions.fragment.xml +3 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/table/ColumnContent.fragment.xml +70 -29
- package/packages/sap.fe.macros/src/sap/fe/macros/table/TableHelper-dbg.js +53 -36
- package/packages/sap.fe.macros/src/sap/fe/macros/table/TableHelper.js +1 -1
- package/packages/sap.fe.macros/src/sap/fe/macros/table/Utils-dbg.js +1 -1
- package/packages/sap.fe.macros/src/sap/fe/macros/table/Utils.js +1 -1
- package/packages/sap.fe.macros/src/sap/fe/macros/table/delegates/TableDelegate-dbg.js +3 -4
- package/packages/sap.fe.macros/src/sap/fe/macros/table/delegates/TableDelegate.js +1 -1
- package/packages/sap.fe.macros/test/sap/fe/macros/designtime/api.json +2 -2
- 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.xmlmeta.json +1 -1
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/ChartDelegate.spec.js +844 -0
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/ChartDelegate.spec.ts +833 -0
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/ChartHelper.spec.js +495 -0
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/ChartHelper.spec.ts +440 -0
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/ChartUtils.spec.js +469 -0
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/ChartUtils.spec.ts +448 -0
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/CommonUtils.spec.js +94 -0
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/CommonUtils.spec.ts +70 -0
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/DatapointMacro.spec.js +12 -1
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/DatapointMacro.spec.ts +11 -0
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/DelegateUtil.spec.js +61 -0
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/FieldHelper.spec.js +46 -0
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/FieldHelper.spec.ts +30 -0
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/FieldMacroDataFieldTypes.spec.js +13 -1
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/FieldMacroDataFieldTypes.spec.ts +11 -0
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/FormElement.spec.js +66 -0
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/FormElement.spec.ts +35 -0
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/SimpleFieldMacro.spec.js +48 -1
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/SimpleFieldMacro.spec.ts +56 -0
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/TableFieldLabel.spec.js +68 -0
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/TableFieldLabel.spec.ts +65 -0
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/__snapshots__/ChartDelegate.spec.ts.snap +82 -0
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/__snapshots__/DatapointMacro.spec.ts.snap +23 -5
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/__snapshots__/FieldHelper.spec.ts.snap +47 -0
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/__snapshots__/FieldMacroDataFieldTypes.spec.ts.snap +52 -3
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/__snapshots__/FormElement.spec.ts.snap +25 -0
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/__snapshots__/QuickViewForm.spec.ts.snap +0 -3
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/__snapshots__/SimpleFieldMacro.spec.ts.snap +69 -0
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/__snapshots__/TableFieldLabel.spec.ts.snap +451 -0
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/data/FieldHelper.xml +68 -0
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/data/Table.cds +13 -1
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/data/TableFieldLabel.cds +152 -0
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/field/FieldRuntime.spec.js +116 -0
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/field/FieldRuntime.spec.ts +115 -0
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/form/FormElement.spec.js +86 -0
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/form/FormElement.spec.ts +54 -0
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/form/__snapshots__/FormElement.spec.ts.snap +33 -0
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/table/Actions.spec.js +154 -0
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/table/Actions.spec.ts +128 -0
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/table/delegates/TableDelegate.spec.js +7 -2
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/table/delegates/TableDelegate.spec.ts +23 -12
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/table/delegates/__snapshots__/TableDelegate.spec.ts.snap +1 -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/FieldHelperTemplate.qunit.js +1 -1
- 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/TableHelper.qunit.js +108 -1
- 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-preload.js +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/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-preload.js +4 -4
- package/packages/sap.fe.placeholder/src/sap/fe/placeholder/library-preload.js.map +1 -1
- 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 +3 -3
- package/packages/sap.fe.placeholder/src/sap/fe/placeholder/view/PlaceholderALP.fragment.html +1 -1
- package/packages/sap.fe.placeholder/src/sap/fe/placeholder/view/PlaceholderOVP.fragment.html +1 -1
- 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/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/ListReport.view.xml +2 -2
- package/packages/sap.fe.templates/src/sap/fe/templates/ListReport/ListReportController-dbg.controller.js +91 -60
- 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/overrides/ViewState-dbg.js +31 -5
- package/packages/sap.fe.templates/src/sap/fe/templates/ListReport/overrides/ViewState.js +1 -1
- package/packages/sap.fe.templates/src/sap/fe/templates/ListReport/resources.json +5 -5
- package/packages/sap.fe.templates/src/sap/fe/templates/ObjectPage/AnnotationHelper-dbg.js +2 -2
- 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 +18 -1
- package/packages/sap.fe.templates/src/sap/fe/templates/ObjectPage/Component.js +1 -1
- package/packages/sap.fe.templates/src/sap/fe/templates/ObjectPage/ObjectPageController-dbg.controller.js +114 -85
- 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 +8 -0
- 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/manifest.json +2 -2
- package/packages/sap.fe.templates/src/sap/fe/templates/ObjectPage/overrides/ViewState-dbg.js +23 -3
- package/packages/sap.fe.templates/src/sap/fe/templates/ObjectPage/overrides/ViewState.js +1 -1
- package/packages/sap.fe.templates/src/sap/fe/templates/ObjectPage/resources.json +15 -15
- package/packages/sap.fe.templates/src/sap/fe/templates/ObjectPage/templating/ObjectPageTemplating-dbg.js +6 -5
- package/packages/sap.fe.templates/src/sap/fe/templates/ObjectPage/templating/ObjectPageTemplating.js +1 -1
- package/packages/sap.fe.templates/src/sap/fe/templates/ObjectPage/templating/ObjectPageTemplating.ts +6 -4
- package/packages/sap.fe.templates/src/sap/fe/templates/ObjectPage/view/fragments/HeaderDataPointTitle.fragment.xml +26 -16
- package/packages/sap.fe.templates/src/sap/fe/templates/ObjectPage/view/fragments/ObjectPageHeaderForm.fragment.xml +5 -5
- package/packages/sap.fe.templates/src/sap/fe/templates/RootContainer/controller/Fcl-dbg.controller.js +63 -9
- 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 +54 -32
- 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/RootContainer/controller/RootContainerBaseController-dbg.js +24 -21
- package/packages/sap.fe.templates/src/sap/fe/templates/RootContainer/controller/RootContainerBaseController.js +1 -1
- package/packages/sap.fe.templates/src/sap/fe/templates/RootContainer/view/Fcl.view.xml +2 -1
- package/packages/sap.fe.templates/src/sap/fe/templates/RootContainer/view/NavContainer.view.xml +1 -1
- package/packages/sap.fe.templates/src/sap/fe/templates/controls/Table.fragment.xml +2 -0
- 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 +8 -9
- package/packages/sap.fe.templates/src/sap/fe/templates/library-h2-preload.js.map +1 -1
- package/packages/sap.fe.templates/src/sap/fe/templates/library-preload.js +23 -30
- 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 +13 -13
- package/packages/sap.fe.templates/src/sap/fe/templates/resources.json +51 -60
- 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 +1 -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.xmlmeta.json +1 -1
- package/packages/sap.fe.templates/test/sap/fe/templates/jest/ObjectPage/view/fragments/HeaderFacet.spec.js +95 -0
- package/packages/sap.fe.templates/test/sap/fe/templates/jest/ObjectPage/view/fragments/HeaderFacet.spec.ts +66 -0
- package/packages/sap.fe.templates/test/sap/fe/templates/jest/ObjectPage/view/fragments/ObjectPageHeaderForm.spec.js +134 -0
- package/packages/sap.fe.templates/test/sap/fe/templates/jest/ObjectPage/view/fragments/ObjectPageHeaderForm.spec.ts +94 -0
- package/packages/sap.fe.templates/test/sap/fe/templates/jest/ObjectPage/view/fragments/__snapshots__/HeaderFacet.spec.ts.snap +61 -0
- package/packages/sap.fe.templates/test/sap/fe/templates/jest/ObjectPage/view/fragments/__snapshots__/ObjectPageHeaderForm.spec.ts.snap +53 -0
- 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/FCLView-dbg.js +0 -6
- package/packages/sap.fe.test/src/sap/fe/test/FCLView.js +1 -1
- package/packages/sap.fe.test/src/sap/fe/test/Flexibility-dbg.js +14 -3
- package/packages/sap.fe.test/src/sap/fe/test/Flexibility.js +1 -1
- package/packages/sap.fe.test/src/sap/fe/test/JestTemplatingHelper-dbg.js +85 -8
- package/packages/sap.fe.test/src/sap/fe/test/JestTemplatingHelper.js +1 -1
- package/packages/sap.fe.test/src/sap/fe/test/JestTemplatingHelper.ts +54 -2
- package/packages/sap.fe.test/src/sap/fe/test/ListReport-dbg.js +0 -11
- package/packages/sap.fe.test/src/sap/fe/test/ListReport.js +1 -1
- package/packages/sap.fe.test/src/sap/fe/test/ObjectPage-dbg.js +0 -38
- package/packages/sap.fe.test/src/sap/fe/test/ObjectPage.js +1 -1
- package/packages/sap.fe.test/src/sap/fe/test/TemplatePage-dbg.js +0 -12
- package/packages/sap.fe.test/src/sap/fe/test/TemplatePage.js +1 -1
- package/packages/sap.fe.test/src/sap/fe/test/UI5MockHelper-dbg.js +22 -1
- package/packages/sap.fe.test/src/sap/fe/test/UI5MockHelper.js +1 -1
- package/packages/sap.fe.test/src/sap/fe/test/UI5MockHelper.ts +14 -0
- package/packages/sap.fe.test/src/sap/fe/test/api/BaseAPI-dbg.js +21 -0
- package/packages/sap.fe.test/src/sap/fe/test/api/DialogAPI-dbg.js +9 -5
- package/packages/sap.fe.test/src/sap/fe/test/api/DialogAPI.js +1 -1
- package/packages/sap.fe.test/src/sap/fe/test/api/DialogActions-dbg.js +18 -5
- package/packages/sap.fe.test/src/sap/fe/test/api/DialogActions.js +1 -1
- package/packages/sap.fe.test/src/sap/fe/test/api/DialogAssertions-dbg.js +25 -5
- package/packages/sap.fe.test/src/sap/fe/test/api/DialogAssertions.js +1 -1
- package/packages/sap.fe.test/src/sap/fe/test/api/EditState-dbg.js +9 -0
- package/packages/sap.fe.test/src/sap/fe/test/api/EditState.js +1 -1
- package/packages/sap.fe.test/src/sap/fe/test/api/FilterBarActions-dbg.js +38 -4
- package/packages/sap.fe.test/src/sap/fe/test/api/FilterBarActions.js +1 -1
- package/packages/sap.fe.test/src/sap/fe/test/api/FormAssertions-dbg.js +33 -4
- package/packages/sap.fe.test/src/sap/fe/test/api/FormAssertions.js +1 -1
- package/packages/sap.fe.test/src/sap/fe/test/api/TableActions-dbg.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 +3 -3
- package/packages/sap.fe.test/src/sap/fe/test/library-preload.js +23 -16
- 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 +36 -34
- 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.jsmeta.json +1 -1
- package/packages/sap.fe.test/test/sap/fe/test/designtime/codeassistance/Library.xmlmeta.json +1 -1
- package/packages/sap.fe.common/test/sap/fe/common/relnotes/changes-1.96.json +0 -49
- package/packages/sap.fe.core/test/sap/fe/core/relnotes/changes-1.96.json +0 -189
- package/packages/sap.fe.macros/test/sap/fe/macros/qunit/macros/FieldRuntime.qunit.js +0 -73
- package/packages/sap.fe.macros/test/sap/fe/macros/relnotes/changes-1.96.json +0 -160
- package/packages/sap.fe.placeholder/test/sap/fe/placeholder/relnote/changes-1.96.json +0 -17
- package/packages/sap.fe.templates/src/sap/fe/templates/controls/OverflowToolbarButtonHover-dbg.js +0 -26
- package/packages/sap.fe.templates/src/sap/fe/templates/controls/OverflowToolbarButtonHover.js +0 -6
- package/packages/sap.fe.templates/test/sap/fe/templates/relnotes/changes-1.96.json +0 -153
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
/*!
|
|
2
|
+
* SAP UI development toolkit for HTML5 (SAPUI5)
|
|
3
|
+
* (c) Copyright 2009-2021 SAP SE. All rights reserved
|
|
4
|
+
*/
|
|
5
|
+
sap.ui.define(["sap/fe/core/formatters/TableFormatter", "sap/fe/core/formatters/TableFormatterTypes"], function (TableFormatter, TableFormatterTypes) {
|
|
6
|
+
"use strict";
|
|
7
|
+
|
|
8
|
+
var MessageType = TableFormatterTypes.MessageType;
|
|
9
|
+
|
|
10
|
+
var oRow;
|
|
11
|
+
beforeAll(function () {
|
|
12
|
+
try {
|
|
13
|
+
oRow = {
|
|
14
|
+
getBindingContext: function () {
|
|
15
|
+
return {
|
|
16
|
+
getPath: function () {
|
|
17
|
+
return "/rowBindingPath";
|
|
18
|
+
}
|
|
19
|
+
};
|
|
20
|
+
}
|
|
21
|
+
};
|
|
22
|
+
return Promise.resolve();
|
|
23
|
+
} catch (e) {
|
|
24
|
+
return Promise.reject(e);
|
|
25
|
+
}
|
|
26
|
+
});
|
|
27
|
+
describe("Table Formatters", function () {
|
|
28
|
+
it("rowHighlighting : 1 Error Message", function () {
|
|
29
|
+
var aMessage = [{
|
|
30
|
+
message: "mesg1",
|
|
31
|
+
type: MessageType.Error,
|
|
32
|
+
aTargets: ["/rowBindingPath/prop1"]
|
|
33
|
+
}];
|
|
34
|
+
expect(TableFormatter.rowHighlighting.call(oRow, MessageType.None, aMessage)).toEqual("Error");
|
|
35
|
+
});
|
|
36
|
+
it("rowHighlighting : 1 Warning Message", function () {
|
|
37
|
+
var aMessage = [{
|
|
38
|
+
message: "mesg1",
|
|
39
|
+
type: MessageType.Warning,
|
|
40
|
+
aTargets: ["/rowBindingPath/prop1"]
|
|
41
|
+
}];
|
|
42
|
+
expect(TableFormatter.rowHighlighting.call(oRow, MessageType.None, aMessage)).toEqual("Warning");
|
|
43
|
+
});
|
|
44
|
+
it("rowHighlighting: 2 Error + Warning Message", function () {
|
|
45
|
+
var aMessage = [{
|
|
46
|
+
message: "mesg2",
|
|
47
|
+
type: MessageType.Warning,
|
|
48
|
+
aTargets: ["/rowBindingPath/prop2"]
|
|
49
|
+
}, {
|
|
50
|
+
message: "mesg1",
|
|
51
|
+
type: MessageType.Error,
|
|
52
|
+
aTargets: ["/rowBindingPath/prop1"]
|
|
53
|
+
}];
|
|
54
|
+
expect(TableFormatter.rowHighlighting.call(oRow, MessageType.None, aMessage)).toEqual("Error");
|
|
55
|
+
aMessage = [{
|
|
56
|
+
message: "mesg1",
|
|
57
|
+
type: MessageType.Error,
|
|
58
|
+
aTargets: ["/rowBindingPath/prop1"]
|
|
59
|
+
}, {
|
|
60
|
+
message: "mesg2",
|
|
61
|
+
type: MessageType.Warning,
|
|
62
|
+
aTargets: ["/rowBindingPath/prop2"]
|
|
63
|
+
}];
|
|
64
|
+
expect(TableFormatter.rowHighlighting.call(oRow, MessageType.None, aMessage)).toEqual("Error");
|
|
65
|
+
});
|
|
66
|
+
});
|
|
67
|
+
}, false);
|
|
68
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIlRhYmxlRm9ybWF0dGVycy5zcGVjLnRzIl0sIm5hbWVzIjpbIm9Sb3ciLCJiZWZvcmVBbGwiLCJnZXRCaW5kaW5nQ29udGV4dCIsImdldFBhdGgiLCJkZXNjcmliZSIsIml0IiwiYU1lc3NhZ2UiLCJtZXNzYWdlIiwidHlwZSIsIk1lc3NhZ2VUeXBlIiwiRXJyb3IiLCJhVGFyZ2V0cyIsImV4cGVjdCIsIlRhYmxlRm9ybWF0dGVyIiwicm93SGlnaGxpZ2h0aW5nIiwiY2FsbCIsIk5vbmUiLCJ0b0VxdWFsIiwiV2FybmluZyJdLCJtYXBwaW5ncyI6IjtBQUFBO0FBQ0E7QUFDQTs7Ozs7O0FBRUEsTUFBSUEsSUFBSjtBQUNBQyxFQUFBQSxTQUFTO0FBQUEsUUFBa0I7QUFDMUJELE1BQUFBLElBQUksR0FBRztBQUNORSxRQUFBQSxpQkFBaUIsRUFBRSxZQUFNO0FBQ3hCLGlCQUFPO0FBQ05DLFlBQUFBLE9BQU8sRUFBRTtBQUFBLHFCQUFNLGlCQUFOO0FBQUE7QUFESCxXQUFQO0FBR0E7QUFMSyxPQUFQO0FBRDBCO0FBUTFCLEtBUlE7QUFBQTtBQUFBO0FBQUEsSUFBVDtBQVNBQyxFQUFBQSxRQUFRLENBQUMsa0JBQUQsRUFBcUIsWUFBTTtBQUNsQ0MsSUFBQUEsRUFBRSxDQUFDLG1DQUFELEVBQXNDLFlBQU07QUFDN0MsVUFBSUMsUUFBUSxHQUFHLENBQUM7QUFBRUMsUUFBQUEsT0FBTyxFQUFFLE9BQVg7QUFBb0JDLFFBQUFBLElBQUksRUFBRUMsV0FBVyxDQUFDQyxLQUF0QztBQUE2Q0MsUUFBQUEsUUFBUSxFQUFFLENBQUMsdUJBQUQ7QUFBdkQsT0FBRCxDQUFmO0FBQ0FDLE1BQUFBLE1BQU0sQ0FBQ0MsY0FBYyxDQUFDQyxlQUFmLENBQStCQyxJQUEvQixDQUFvQ2YsSUFBcEMsRUFBMENTLFdBQVcsQ0FBQ08sSUFBdEQsRUFBNERWLFFBQTVELENBQUQsQ0FBTixDQUE4RVcsT0FBOUUsQ0FBc0YsT0FBdEY7QUFDQSxLQUhDLENBQUY7QUFLQVosSUFBQUEsRUFBRSxDQUFDLHFDQUFELEVBQXdDLFlBQU07QUFDL0MsVUFBSUMsUUFBUSxHQUFHLENBQUM7QUFBRUMsUUFBQUEsT0FBTyxFQUFFLE9BQVg7QUFBb0JDLFFBQUFBLElBQUksRUFBRUMsV0FBVyxDQUFDUyxPQUF0QztBQUErQ1AsUUFBQUEsUUFBUSxFQUFFLENBQUMsdUJBQUQ7QUFBekQsT0FBRCxDQUFmO0FBQ0FDLE1BQUFBLE1BQU0sQ0FBQ0MsY0FBYyxDQUFDQyxlQUFmLENBQStCQyxJQUEvQixDQUFvQ2YsSUFBcEMsRUFBMENTLFdBQVcsQ0FBQ08sSUFBdEQsRUFBNERWLFFBQTVELENBQUQsQ0FBTixDQUE4RVcsT0FBOUUsQ0FBc0YsU0FBdEY7QUFDQSxLQUhDLENBQUY7QUFLQVosSUFBQUEsRUFBRSxDQUFDLDRDQUFELEVBQStDLFlBQU07QUFDdEQsVUFBSUMsUUFBUSxHQUFHLENBQ2Q7QUFBRUMsUUFBQUEsT0FBTyxFQUFFLE9BQVg7QUFBb0JDLFFBQUFBLElBQUksRUFBRUMsV0FBVyxDQUFDUyxPQUF0QztBQUErQ1AsUUFBQUEsUUFBUSxFQUFFLENBQUMsdUJBQUQ7QUFBekQsT0FEYyxFQUVkO0FBQUVKLFFBQUFBLE9BQU8sRUFBRSxPQUFYO0FBQW9CQyxRQUFBQSxJQUFJLEVBQUVDLFdBQVcsQ0FBQ0MsS0FBdEM7QUFBNkNDLFFBQUFBLFFBQVEsRUFBRSxDQUFDLHVCQUFEO0FBQXZELE9BRmMsQ0FBZjtBQUlBQyxNQUFBQSxNQUFNLENBQUNDLGNBQWMsQ0FBQ0MsZUFBZixDQUErQkMsSUFBL0IsQ0FBb0NmLElBQXBDLEVBQTBDUyxXQUFXLENBQUNPLElBQXRELEVBQTREVixRQUE1RCxDQUFELENBQU4sQ0FBOEVXLE9BQTlFLENBQXNGLE9BQXRGO0FBQ0FYLE1BQUFBLFFBQVEsR0FBRyxDQUNWO0FBQUVDLFFBQUFBLE9BQU8sRUFBRSxPQUFYO0FBQW9CQyxRQUFBQSxJQUFJLEVBQUVDLFdBQVcsQ0FBQ0MsS0FBdEM7QUFBNkNDLFFBQUFBLFFBQVEsRUFBRSxDQUFDLHVCQUFEO0FBQXZELE9BRFUsRUFFVjtBQUFFSixRQUFBQSxPQUFPLEVBQUUsT0FBWDtBQUFvQkMsUUFBQUEsSUFBSSxFQUFFQyxXQUFXLENBQUNTLE9BQXRDO0FBQStDUCxRQUFBQSxRQUFRLEVBQUUsQ0FBQyx1QkFBRDtBQUF6RCxPQUZVLENBQVg7QUFJQUMsTUFBQUEsTUFBTSxDQUFDQyxjQUFjLENBQUNDLGVBQWYsQ0FBK0JDLElBQS9CLENBQW9DZixJQUFwQyxFQUEwQ1MsV0FBVyxDQUFDTyxJQUF0RCxFQUE0RFYsUUFBNUQsQ0FBRCxDQUFOLENBQThFVyxPQUE5RSxDQUFzRixPQUF0RjtBQUNBLEtBWEMsQ0FBRjtBQVlBLEdBdkJPLENBQVIiLCJzb3VyY2VSb290IjoiLiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBUYWJsZUZvcm1hdHRlciBmcm9tIFwic2FwL2ZlL2NvcmUvZm9ybWF0dGVycy9UYWJsZUZvcm1hdHRlclwiO1xuaW1wb3J0IHsgTWVzc2FnZVR5cGUgfSBmcm9tIFwic2FwL2ZlL2NvcmUvZm9ybWF0dGVycy9UYWJsZUZvcm1hdHRlclR5cGVzXCI7XG5pbXBvcnQgeyBNYW5hZ2VkT2JqZWN0IH0gZnJvbSBcInNhcC91aS9iYXNlXCI7XG5cbmxldCBvUm93OiBhbnk7XG5iZWZvcmVBbGwoYXN5bmMgZnVuY3Rpb24oKSB7XG5cdG9Sb3cgPSB7XG5cdFx0Z2V0QmluZGluZ0NvbnRleHQ6ICgpID0+IHtcblx0XHRcdHJldHVybiB7XG5cdFx0XHRcdGdldFBhdGg6ICgpID0+IFwiL3Jvd0JpbmRpbmdQYXRoXCJcblx0XHRcdH07XG5cdFx0fVxuXHR9O1xufSk7XG5kZXNjcmliZShcIlRhYmxlIEZvcm1hdHRlcnNcIiwgKCkgPT4ge1xuXHRpdChcInJvd0hpZ2hsaWdodGluZyA6IDEgRXJyb3IgTWVzc2FnZVwiLCAoKSA9PiB7XG5cdFx0bGV0IGFNZXNzYWdlID0gW3sgbWVzc2FnZTogXCJtZXNnMVwiLCB0eXBlOiBNZXNzYWdlVHlwZS5FcnJvciwgYVRhcmdldHM6IFtcIi9yb3dCaW5kaW5nUGF0aC9wcm9wMVwiXSB9XTtcblx0XHRleHBlY3QoVGFibGVGb3JtYXR0ZXIucm93SGlnaGxpZ2h0aW5nLmNhbGwob1JvdywgTWVzc2FnZVR5cGUuTm9uZSwgYU1lc3NhZ2UpKS50b0VxdWFsKFwiRXJyb3JcIik7XG5cdH0pO1xuXG5cdGl0KFwicm93SGlnaGxpZ2h0aW5nIDogMSBXYXJuaW5nIE1lc3NhZ2VcIiwgKCkgPT4ge1xuXHRcdGxldCBhTWVzc2FnZSA9IFt7IG1lc3NhZ2U6IFwibWVzZzFcIiwgdHlwZTogTWVzc2FnZVR5cGUuV2FybmluZywgYVRhcmdldHM6IFtcIi9yb3dCaW5kaW5nUGF0aC9wcm9wMVwiXSB9XTtcblx0XHRleHBlY3QoVGFibGVGb3JtYXR0ZXIucm93SGlnaGxpZ2h0aW5nLmNhbGwob1JvdywgTWVzc2FnZVR5cGUuTm9uZSwgYU1lc3NhZ2UpKS50b0VxdWFsKFwiV2FybmluZ1wiKTtcblx0fSk7XG5cblx0aXQoXCJyb3dIaWdobGlnaHRpbmc6IDIgRXJyb3IgKyBXYXJuaW5nIE1lc3NhZ2VcIiwgKCkgPT4ge1xuXHRcdGxldCBhTWVzc2FnZSA9IFtcblx0XHRcdHsgbWVzc2FnZTogXCJtZXNnMlwiLCB0eXBlOiBNZXNzYWdlVHlwZS5XYXJuaW5nLCBhVGFyZ2V0czogW1wiL3Jvd0JpbmRpbmdQYXRoL3Byb3AyXCJdIH0sXG5cdFx0XHR7IG1lc3NhZ2U6IFwibWVzZzFcIiwgdHlwZTogTWVzc2FnZVR5cGUuRXJyb3IsIGFUYXJnZXRzOiBbXCIvcm93QmluZGluZ1BhdGgvcHJvcDFcIl0gfVxuXHRcdF07XG5cdFx0ZXhwZWN0KFRhYmxlRm9ybWF0dGVyLnJvd0hpZ2hsaWdodGluZy5jYWxsKG9Sb3csIE1lc3NhZ2VUeXBlLk5vbmUsIGFNZXNzYWdlKSkudG9FcXVhbChcIkVycm9yXCIpO1xuXHRcdGFNZXNzYWdlID0gW1xuXHRcdFx0eyBtZXNzYWdlOiBcIm1lc2cxXCIsIHR5cGU6IE1lc3NhZ2VUeXBlLkVycm9yLCBhVGFyZ2V0czogW1wiL3Jvd0JpbmRpbmdQYXRoL3Byb3AxXCJdIH0sXG5cdFx0XHR7IG1lc3NhZ2U6IFwibWVzZzJcIiwgdHlwZTogTWVzc2FnZVR5cGUuV2FybmluZywgYVRhcmdldHM6IFtcIi9yb3dCaW5kaW5nUGF0aC9wcm9wMlwiXSB9XG5cdFx0XTtcblx0XHRleHBlY3QoVGFibGVGb3JtYXR0ZXIucm93SGlnaGxpZ2h0aW5nLmNhbGwob1JvdywgTWVzc2FnZVR5cGUuTm9uZSwgYU1lc3NhZ2UpKS50b0VxdWFsKFwiRXJyb3JcIik7XG5cdH0pO1xufSk7XG4iXX0=
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import TableFormatter from "sap/fe/core/formatters/TableFormatter";
|
|
2
|
+
import { MessageType } from "sap/fe/core/formatters/TableFormatterTypes";
|
|
3
|
+
import { ManagedObject } from "sap/ui/base";
|
|
4
|
+
|
|
5
|
+
let oRow: any;
|
|
6
|
+
beforeAll(async function() {
|
|
7
|
+
oRow = {
|
|
8
|
+
getBindingContext: () => {
|
|
9
|
+
return {
|
|
10
|
+
getPath: () => "/rowBindingPath"
|
|
11
|
+
};
|
|
12
|
+
}
|
|
13
|
+
};
|
|
14
|
+
});
|
|
15
|
+
describe("Table Formatters", () => {
|
|
16
|
+
it("rowHighlighting : 1 Error Message", () => {
|
|
17
|
+
let aMessage = [{ message: "mesg1", type: MessageType.Error, aTargets: ["/rowBindingPath/prop1"] }];
|
|
18
|
+
expect(TableFormatter.rowHighlighting.call(oRow, MessageType.None, aMessage)).toEqual("Error");
|
|
19
|
+
});
|
|
20
|
+
|
|
21
|
+
it("rowHighlighting : 1 Warning Message", () => {
|
|
22
|
+
let aMessage = [{ message: "mesg1", type: MessageType.Warning, aTargets: ["/rowBindingPath/prop1"] }];
|
|
23
|
+
expect(TableFormatter.rowHighlighting.call(oRow, MessageType.None, aMessage)).toEqual("Warning");
|
|
24
|
+
});
|
|
25
|
+
|
|
26
|
+
it("rowHighlighting: 2 Error + Warning Message", () => {
|
|
27
|
+
let aMessage = [
|
|
28
|
+
{ message: "mesg2", type: MessageType.Warning, aTargets: ["/rowBindingPath/prop2"] },
|
|
29
|
+
{ message: "mesg1", type: MessageType.Error, aTargets: ["/rowBindingPath/prop1"] }
|
|
30
|
+
];
|
|
31
|
+
expect(TableFormatter.rowHighlighting.call(oRow, MessageType.None, aMessage)).toEqual("Error");
|
|
32
|
+
aMessage = [
|
|
33
|
+
{ message: "mesg1", type: MessageType.Error, aTargets: ["/rowBindingPath/prop1"] },
|
|
34
|
+
{ message: "mesg2", type: MessageType.Warning, aTargets: ["/rowBindingPath/prop2"] }
|
|
35
|
+
];
|
|
36
|
+
expect(TableFormatter.rowHighlighting.call(oRow, MessageType.None, aMessage)).toEqual("Error");
|
|
37
|
+
});
|
|
38
|
+
});
|
|
@@ -0,0 +1,483 @@
|
|
|
1
|
+
/*!
|
|
2
|
+
* SAP UI development toolkit for HTML5 (SAPUI5)
|
|
3
|
+
* (c) Copyright 2009-2021 SAP SE. All rights reserved
|
|
4
|
+
*/
|
|
5
|
+
sap.ui.define(["sap/fe/core/helpers/KeepAliveHelper", "sap/fe/core/helpers/KeepAliveRefreshTypes", "sap/ui/core/mvc/View", "sap/base/Log", "./KeepAliveHelperTestData/StoreStrategyTests", "./KeepAliveHelperTestData/RefreshStrategyForIntentTests", "./KeepAliveHelperTestData/ControlRefreshStrategyTests", "./KeepAliveHelperTestData/ControlsForRefreshTests", "sap/fe/test/UI5MockHelper"], function (KeepAliveHelper, KeepAliveRefreshTypes, View, Log, StoreStrategyTests, RefreshStrategyForIntentTests, ControlRefreshStrategyTests, ControlsForRefreshTests, UI5MockHelper) {
|
|
6
|
+
"use strict";
|
|
7
|
+
|
|
8
|
+
var MockContext = UI5MockHelper.MockContext;
|
|
9
|
+
var MockControl = UI5MockHelper.MockControl;
|
|
10
|
+
var MockMetaModel = UI5MockHelper.MockMetaModel;
|
|
11
|
+
var MockModel = UI5MockHelper.MockModel;
|
|
12
|
+
var PATH_TO_STORE = KeepAliveRefreshTypes.PATH_TO_STORE;
|
|
13
|
+
|
|
14
|
+
describe("Keep Alive Helper Testing - #storeControlRefreshStrategyForHash", function () {
|
|
15
|
+
var internal;
|
|
16
|
+
var viewData;
|
|
17
|
+
var control;
|
|
18
|
+
var oMockGetModel;
|
|
19
|
+
var oMockInternalSetProperty;
|
|
20
|
+
var oMockViewDataGetProperty;
|
|
21
|
+
var refreshStrategyToTest;
|
|
22
|
+
beforeAll(function () {
|
|
23
|
+
try {
|
|
24
|
+
internal = new MockModel();
|
|
25
|
+
viewData = new MockModel();
|
|
26
|
+
control = new MockControl(); // mock model
|
|
27
|
+
|
|
28
|
+
oMockGetModel = jest.spyOn(control, "getModel");
|
|
29
|
+
oMockGetModel.mockImplementation(function (name) {
|
|
30
|
+
if (name === "internal") {
|
|
31
|
+
return internal;
|
|
32
|
+
} else if (name === "viewData") {
|
|
33
|
+
return viewData;
|
|
34
|
+
}
|
|
35
|
+
});
|
|
36
|
+
oMockInternalSetProperty = jest.spyOn(internal, "setProperty");
|
|
37
|
+
oMockViewDataGetProperty = jest.spyOn(viewData, "getProperty");
|
|
38
|
+
oMockViewDataGetProperty.mockImplementation(function (sPath) {
|
|
39
|
+
return sPath === PATH_TO_STORE ? refreshStrategyToTest : undefined;
|
|
40
|
+
});
|
|
41
|
+
return Promise.resolve();
|
|
42
|
+
} catch (e) {
|
|
43
|
+
return Promise.reject(e);
|
|
44
|
+
}
|
|
45
|
+
});
|
|
46
|
+
beforeEach(function () {
|
|
47
|
+
// Clean JSON
|
|
48
|
+
refreshStrategyToTest = {};
|
|
49
|
+
return Promise.resolve();
|
|
50
|
+
});
|
|
51
|
+
afterAll(function () {
|
|
52
|
+
try {
|
|
53
|
+
jest.restoreAllMocks();
|
|
54
|
+
return Promise.resolve();
|
|
55
|
+
} catch (e) {
|
|
56
|
+
return Promise.reject(e);
|
|
57
|
+
}
|
|
58
|
+
});
|
|
59
|
+
StoreStrategyTests.forEach(function (oTestData) {
|
|
60
|
+
it(oTestData.title, function () {
|
|
61
|
+
try {
|
|
62
|
+
// Cases to consider
|
|
63
|
+
refreshStrategyToTest = oTestData.refreshStrategies;
|
|
64
|
+
KeepAliveHelper.storeControlRefreshStrategyForHash(control, oTestData.hash);
|
|
65
|
+
expect(oMockInternalSetProperty).toHaveBeenLastCalledWith(PATH_TO_STORE, oTestData.result);
|
|
66
|
+
return Promise.resolve();
|
|
67
|
+
} catch (e) {
|
|
68
|
+
return Promise.reject(e);
|
|
69
|
+
}
|
|
70
|
+
});
|
|
71
|
+
});
|
|
72
|
+
});
|
|
73
|
+
describe("Keep Alive Helper Testing - #getRefreshStrategyForIntent", function () {
|
|
74
|
+
var refreshStrategies;
|
|
75
|
+
var semanticObject;
|
|
76
|
+
var action;
|
|
77
|
+
beforeEach(function () {
|
|
78
|
+
// Clean JSON
|
|
79
|
+
refreshStrategies = {};
|
|
80
|
+
semanticObject = undefined;
|
|
81
|
+
action = undefined;
|
|
82
|
+
return Promise.resolve();
|
|
83
|
+
});
|
|
84
|
+
afterAll(function () {
|
|
85
|
+
try {
|
|
86
|
+
jest.restoreAllMocks();
|
|
87
|
+
return Promise.resolve();
|
|
88
|
+
} catch (e) {
|
|
89
|
+
return Promise.reject(e);
|
|
90
|
+
}
|
|
91
|
+
});
|
|
92
|
+
RefreshStrategyForIntentTests.forEach(function (oTestData) {
|
|
93
|
+
it(oTestData.title, function () {
|
|
94
|
+
try {
|
|
95
|
+
// Cases to consider
|
|
96
|
+
expect(KeepAliveHelper.getRefreshStrategyForIntent(oTestData.refreshStrategies, oTestData.semanticObject, oTestData.action)).toEqual(oTestData.result);
|
|
97
|
+
return Promise.resolve();
|
|
98
|
+
} catch (e) {
|
|
99
|
+
return Promise.reject(e);
|
|
100
|
+
}
|
|
101
|
+
});
|
|
102
|
+
});
|
|
103
|
+
});
|
|
104
|
+
describe("Keep Alive Helper Testing - #getViewRefreshInfo", function () {
|
|
105
|
+
var viewData;
|
|
106
|
+
var view;
|
|
107
|
+
var oMockGetStrategy;
|
|
108
|
+
beforeAll(function () {
|
|
109
|
+
try {
|
|
110
|
+
viewData = {};
|
|
111
|
+
oMockGetStrategy = jest.spyOn(KeepAliveHelper, "getControlRefreshStrategyForContextPath");
|
|
112
|
+
oMockGetStrategy.mockReturnValue(jest.fn());
|
|
113
|
+
view = {
|
|
114
|
+
getViewData: function () {
|
|
115
|
+
return viewData;
|
|
116
|
+
}
|
|
117
|
+
};
|
|
118
|
+
return Promise.resolve();
|
|
119
|
+
} catch (e) {
|
|
120
|
+
return Promise.reject(e);
|
|
121
|
+
}
|
|
122
|
+
});
|
|
123
|
+
afterAll(function () {
|
|
124
|
+
try {
|
|
125
|
+
viewData = {};
|
|
126
|
+
jest.restoreAllMocks();
|
|
127
|
+
return Promise.resolve();
|
|
128
|
+
} catch (e) {
|
|
129
|
+
return Promise.reject(e);
|
|
130
|
+
}
|
|
131
|
+
});
|
|
132
|
+
it("With context Path", function () {
|
|
133
|
+
try {
|
|
134
|
+
var _viewData;
|
|
135
|
+
|
|
136
|
+
// Cases to consider
|
|
137
|
+
viewData.contextPath = "/SO";
|
|
138
|
+
KeepAliveHelper.getViewRefreshInfo(view);
|
|
139
|
+
expect(oMockGetStrategy).toHaveBeenCalledTimes(1);
|
|
140
|
+
expect(oMockGetStrategy).toHaveBeenLastCalledWith(view, (_viewData = viewData) === null || _viewData === void 0 ? void 0 : _viewData.contextPath);
|
|
141
|
+
return Promise.resolve();
|
|
142
|
+
} catch (e) {
|
|
143
|
+
return Promise.reject(e);
|
|
144
|
+
}
|
|
145
|
+
});
|
|
146
|
+
it("With entitySet", function () {
|
|
147
|
+
try {
|
|
148
|
+
var _viewData2;
|
|
149
|
+
|
|
150
|
+
// Cases to consider
|
|
151
|
+
viewData.entitySet = "SO";
|
|
152
|
+
KeepAliveHelper.getViewRefreshInfo(view);
|
|
153
|
+
expect(oMockGetStrategy).toHaveBeenCalledTimes(2);
|
|
154
|
+
expect(oMockGetStrategy).toHaveBeenLastCalledWith(view, "/" + ((_viewData2 = viewData) === null || _viewData2 === void 0 ? void 0 : _viewData2.entitySet));
|
|
155
|
+
return Promise.resolve();
|
|
156
|
+
} catch (e) {
|
|
157
|
+
return Promise.reject(e);
|
|
158
|
+
}
|
|
159
|
+
});
|
|
160
|
+
});
|
|
161
|
+
describe("Keep Alive Helper Testing - #getControlRefreshStrategyForContextPath", function () {
|
|
162
|
+
var internal;
|
|
163
|
+
var control;
|
|
164
|
+
var defaultModel;
|
|
165
|
+
var metaModel;
|
|
166
|
+
var oMockInternalGetProperty;
|
|
167
|
+
var oMockGetModel;
|
|
168
|
+
var oMockGetMetaModel;
|
|
169
|
+
var oMockGetObject;
|
|
170
|
+
var entitySet;
|
|
171
|
+
var refreshStrategyToTest;
|
|
172
|
+
beforeAll(function () {
|
|
173
|
+
try {
|
|
174
|
+
internal = new MockModel();
|
|
175
|
+
control = new MockControl();
|
|
176
|
+
defaultModel = new MockModel();
|
|
177
|
+
metaModel = new MockMetaModel(); // mock model
|
|
178
|
+
|
|
179
|
+
oMockGetModel = jest.spyOn(control, "getModel");
|
|
180
|
+
oMockGetModel.mockImplementation(function (name) {
|
|
181
|
+
if (name === "internal") {
|
|
182
|
+
return internal;
|
|
183
|
+
}
|
|
184
|
+
|
|
185
|
+
return defaultModel;
|
|
186
|
+
}); // mock internal model and refresh strategy
|
|
187
|
+
|
|
188
|
+
oMockInternalGetProperty = jest.spyOn(internal, "getProperty");
|
|
189
|
+
oMockInternalGetProperty.mockImplementation(function (sPath) {
|
|
190
|
+
return sPath === PATH_TO_STORE ? refreshStrategyToTest : undefined;
|
|
191
|
+
}); // mock metaModel and getObject
|
|
192
|
+
|
|
193
|
+
defaultModel.setMetaModel(metaModel);
|
|
194
|
+
oMockGetObject = jest.spyOn(metaModel, "getObject");
|
|
195
|
+
oMockGetObject.mockImplementation(function () {
|
|
196
|
+
return entitySet;
|
|
197
|
+
});
|
|
198
|
+
return Promise.resolve();
|
|
199
|
+
} catch (e) {
|
|
200
|
+
return Promise.reject(e);
|
|
201
|
+
}
|
|
202
|
+
});
|
|
203
|
+
beforeEach(function () {
|
|
204
|
+
// Clean JSON
|
|
205
|
+
refreshStrategyToTest = undefined;
|
|
206
|
+
entitySet = "";
|
|
207
|
+
return Promise.resolve();
|
|
208
|
+
});
|
|
209
|
+
afterAll(function () {
|
|
210
|
+
try {
|
|
211
|
+
jest.restoreAllMocks();
|
|
212
|
+
return Promise.resolve();
|
|
213
|
+
} catch (e) {
|
|
214
|
+
return Promise.reject(e);
|
|
215
|
+
}
|
|
216
|
+
});
|
|
217
|
+
ControlRefreshStrategyTests.forEach(function (oTestData) {
|
|
218
|
+
it(oTestData.title, function () {
|
|
219
|
+
try {
|
|
220
|
+
// Cases to consider
|
|
221
|
+
refreshStrategyToTest = oTestData.refreshStrategy;
|
|
222
|
+
entitySet = oTestData.entitySet;
|
|
223
|
+
expect(KeepAliveHelper.getControlRefreshStrategyForContextPath(control, oTestData.contextPath)).toEqual(oTestData.result);
|
|
224
|
+
return Promise.resolve();
|
|
225
|
+
} catch (e) {
|
|
226
|
+
return Promise.reject(e);
|
|
227
|
+
}
|
|
228
|
+
});
|
|
229
|
+
});
|
|
230
|
+
});
|
|
231
|
+
describe("Keep Alive Helper Testing - #getControlsForRefresh", function () {
|
|
232
|
+
var internal;
|
|
233
|
+
var aControls;
|
|
234
|
+
var view;
|
|
235
|
+
var defaultModel;
|
|
236
|
+
var metaModel;
|
|
237
|
+
var oMockInternalGetProperty;
|
|
238
|
+
var oMockGetModel;
|
|
239
|
+
var oMockGetMetaModel;
|
|
240
|
+
var oMockGetObject;
|
|
241
|
+
var entitySet;
|
|
242
|
+
var refreshStrategyToTest;
|
|
243
|
+
beforeAll(function () {
|
|
244
|
+
try {
|
|
245
|
+
internal = new MockModel();
|
|
246
|
+
view = new View();
|
|
247
|
+
defaultModel = new MockModel();
|
|
248
|
+
metaModel = new MockMetaModel(); // control mocks
|
|
249
|
+
|
|
250
|
+
var control1 = new MockControl();
|
|
251
|
+
var control2 = new MockControl();
|
|
252
|
+
var oMockControl1Data = jest.spyOn(control1, "data");
|
|
253
|
+
oMockControl1Data.mockImplementation(function (sKey) {
|
|
254
|
+
return sKey === "targetCollectionPath" ? "/SO" : undefined;
|
|
255
|
+
});
|
|
256
|
+
var oMockControl2Data = jest.spyOn(control2, "data");
|
|
257
|
+
oMockControl2Data.mockImplementation(function (sKey) {
|
|
258
|
+
return sKey === "targetCollectionPath" ? "/SO/_Item" : undefined;
|
|
259
|
+
});
|
|
260
|
+
aControls = [control1, control2]; // mock model
|
|
261
|
+
|
|
262
|
+
oMockGetModel = jest.spyOn(view, "getModel");
|
|
263
|
+
oMockGetModel.mockImplementation(function (name) {
|
|
264
|
+
if (name === "internal") {
|
|
265
|
+
return internal;
|
|
266
|
+
}
|
|
267
|
+
|
|
268
|
+
return defaultModel;
|
|
269
|
+
}); // mock internal model and refresh strategy
|
|
270
|
+
|
|
271
|
+
oMockInternalGetProperty = jest.spyOn(internal, "getProperty");
|
|
272
|
+
oMockInternalGetProperty.mockImplementation(function (sPath) {
|
|
273
|
+
return sPath === PATH_TO_STORE ? refreshStrategyToTest : undefined;
|
|
274
|
+
}); // mock metaModel and getObject
|
|
275
|
+
|
|
276
|
+
defaultModel.setMetaModel(metaModel);
|
|
277
|
+
oMockGetObject = jest.spyOn(metaModel, "getObject");
|
|
278
|
+
oMockGetObject.mockImplementation(function () {
|
|
279
|
+
return entitySet;
|
|
280
|
+
});
|
|
281
|
+
return Promise.resolve();
|
|
282
|
+
} catch (e) {
|
|
283
|
+
return Promise.reject(e);
|
|
284
|
+
}
|
|
285
|
+
});
|
|
286
|
+
beforeEach(function () {
|
|
287
|
+
// Clean JSON
|
|
288
|
+
refreshStrategyToTest = undefined;
|
|
289
|
+
entitySet = "";
|
|
290
|
+
return Promise.resolve();
|
|
291
|
+
});
|
|
292
|
+
afterAll(function () {
|
|
293
|
+
try {
|
|
294
|
+
jest.restoreAllMocks();
|
|
295
|
+
return Promise.resolve();
|
|
296
|
+
} catch (e) {
|
|
297
|
+
return Promise.reject(e);
|
|
298
|
+
}
|
|
299
|
+
});
|
|
300
|
+
ControlsForRefreshTests.forEach(function (oTestData) {
|
|
301
|
+
it(oTestData.title, function () {
|
|
302
|
+
try {
|
|
303
|
+
// Cases to consider
|
|
304
|
+
var result = oTestData.resultControlIndices.map(function (idx) {
|
|
305
|
+
return aControls[idx];
|
|
306
|
+
});
|
|
307
|
+
entitySet = oTestData.entitySet;
|
|
308
|
+
refreshStrategyToTest = oTestData.refreshStrategy;
|
|
309
|
+
expect(KeepAliveHelper.getControlsForRefresh(view, aControls)).toEqual(result);
|
|
310
|
+
return Promise.resolve();
|
|
311
|
+
} catch (e) {
|
|
312
|
+
return Promise.reject(e);
|
|
313
|
+
}
|
|
314
|
+
});
|
|
315
|
+
});
|
|
316
|
+
});
|
|
317
|
+
describe("Keep Alive Helper Testing - #restoreView", function () {
|
|
318
|
+
var internal;
|
|
319
|
+
var view;
|
|
320
|
+
var oMockInternalGetProperty;
|
|
321
|
+
var oMockInternalSetProperty;
|
|
322
|
+
var oMockBindingContext;
|
|
323
|
+
var oMockController;
|
|
324
|
+
var oMockGetId;
|
|
325
|
+
var oMockInfoLog;
|
|
326
|
+
var restoreStatus;
|
|
327
|
+
var spyRefreshResolve = jest.fn();
|
|
328
|
+
var spyRefreshReject = jest.fn();
|
|
329
|
+
var spyRestore = jest.fn();
|
|
330
|
+
var viewState = {};
|
|
331
|
+
beforeAll(function () {
|
|
332
|
+
try {
|
|
333
|
+
internal = new MockContext({});
|
|
334
|
+
view = new View();
|
|
335
|
+
spyRefreshResolve.mockResolvedValue({});
|
|
336
|
+
spyRefreshReject.mockRejectedValue({}); // mock view
|
|
337
|
+
|
|
338
|
+
oMockBindingContext = jest.spyOn(view, "getBindingContext");
|
|
339
|
+
oMockGetId = jest.spyOn(view, "getId");
|
|
340
|
+
oMockGetId.mockReturnValue("");
|
|
341
|
+
oMockBindingContext.mockReturnValue(internal);
|
|
342
|
+
oMockController = jest.spyOn(view, "getController");
|
|
343
|
+
viewState = {
|
|
344
|
+
onRestore: spyRestore
|
|
345
|
+
};
|
|
346
|
+
oMockController.mockImplementation(function () {
|
|
347
|
+
return {
|
|
348
|
+
viewState: viewState
|
|
349
|
+
};
|
|
350
|
+
});
|
|
351
|
+
oMockInternalGetProperty = jest.spyOn(internal, "getProperty");
|
|
352
|
+
oMockInternalSetProperty = jest.spyOn(internal, "setProperty");
|
|
353
|
+
oMockInternalGetProperty.mockImplementation(function (prop) {
|
|
354
|
+
return prop === "restoreStatus" ? restoreStatus : undefined;
|
|
355
|
+
}); // mock logs
|
|
356
|
+
|
|
357
|
+
oMockInfoLog = jest.spyOn(Log, "info");
|
|
358
|
+
oMockInfoLog.mockImplementation(function (msg) {
|
|
359
|
+
return msg;
|
|
360
|
+
});
|
|
361
|
+
return Promise.resolve();
|
|
362
|
+
} catch (e) {
|
|
363
|
+
return Promise.reject(e);
|
|
364
|
+
}
|
|
365
|
+
});
|
|
366
|
+
beforeEach(function () {
|
|
367
|
+
try {
|
|
368
|
+
// Clean JSON
|
|
369
|
+
restoreStatus = "";
|
|
370
|
+
viewState["refreshViewBindings"] = undefined;
|
|
371
|
+
return Promise.resolve();
|
|
372
|
+
} catch (e) {
|
|
373
|
+
return Promise.reject(e);
|
|
374
|
+
}
|
|
375
|
+
});
|
|
376
|
+
afterAll(function () {
|
|
377
|
+
try {
|
|
378
|
+
jest.restoreAllMocks();
|
|
379
|
+
return Promise.resolve();
|
|
380
|
+
} catch (e) {
|
|
381
|
+
return Promise.reject(e);
|
|
382
|
+
}
|
|
383
|
+
});
|
|
384
|
+
it("Refresh not pending", function () {
|
|
385
|
+
try {
|
|
386
|
+
restoreStatus = "done";
|
|
387
|
+
viewState["refreshViewBindings"] = spyRefreshResolve;
|
|
388
|
+
return Promise.resolve(KeepAliveHelper.restoreView(view)).then(function () {
|
|
389
|
+
expect(spyRefreshResolve).toHaveBeenCalledTimes(0);
|
|
390
|
+
expect(spyRestore).toHaveBeenCalledTimes(0);
|
|
391
|
+
expect(oMockInternalSetProperty).toHaveBeenCalledTimes(0);
|
|
392
|
+
});
|
|
393
|
+
} catch (e) {
|
|
394
|
+
return Promise.reject(e);
|
|
395
|
+
}
|
|
396
|
+
});
|
|
397
|
+
it("Refresh pending(no handler) and refresh, restore successfull", function () {
|
|
398
|
+
try {
|
|
399
|
+
restoreStatus = "pending";
|
|
400
|
+
viewState["refreshViewBindings"] = undefined;
|
|
401
|
+
return Promise.resolve(KeepAliveHelper.restoreView(view)).then(function () {
|
|
402
|
+
expect(spyRefreshResolve).toHaveBeenCalledTimes(0);
|
|
403
|
+
expect(spyRefreshReject).toHaveBeenCalledTimes(0);
|
|
404
|
+
expect(oMockInfoLog).toHaveBeenCalledTimes(0);
|
|
405
|
+
expect(spyRestore).toHaveBeenCalledTimes(1);
|
|
406
|
+
expect(oMockInternalSetProperty).toHaveBeenCalledTimes(1);
|
|
407
|
+
expect(oMockInternalSetProperty).toHaveBeenLastCalledWith("restoreStatus", "done");
|
|
408
|
+
});
|
|
409
|
+
} catch (e) {
|
|
410
|
+
return Promise.reject(e);
|
|
411
|
+
}
|
|
412
|
+
});
|
|
413
|
+
it("Refresh pending and refresh, restore successfull", function () {
|
|
414
|
+
try {
|
|
415
|
+
restoreStatus = "pending";
|
|
416
|
+
viewState["refreshViewBindings"] = spyRefreshResolve;
|
|
417
|
+
return Promise.resolve(KeepAliveHelper.restoreView(view)).then(function () {
|
|
418
|
+
expect(spyRefreshResolve).toHaveBeenCalledTimes(1);
|
|
419
|
+
expect(spyRefreshReject).toHaveBeenCalledTimes(0);
|
|
420
|
+
expect(oMockInfoLog).toHaveBeenCalledTimes(1);
|
|
421
|
+
expect(spyRestore).toHaveBeenCalledTimes(2);
|
|
422
|
+
expect(oMockInternalSetProperty).toHaveBeenCalledTimes(2);
|
|
423
|
+
expect(oMockInternalSetProperty).toHaveBeenLastCalledWith("restoreStatus", "done");
|
|
424
|
+
});
|
|
425
|
+
} catch (e) {
|
|
426
|
+
return Promise.reject(e);
|
|
427
|
+
}
|
|
428
|
+
});
|
|
429
|
+
it("Refresh pending and refresh unsuccessfull, restore successfull", function () {
|
|
430
|
+
try {
|
|
431
|
+
restoreStatus = "pending";
|
|
432
|
+
viewState["refreshViewBindings"] = spyRefreshReject;
|
|
433
|
+
return Promise.resolve(KeepAliveHelper.restoreView(view)).then(function () {
|
|
434
|
+
expect(spyRefreshResolve).toHaveBeenCalledTimes(1);
|
|
435
|
+
expect(spyRefreshReject).toHaveBeenCalledTimes(1);
|
|
436
|
+
expect(oMockInfoLog).toHaveBeenCalledTimes(1);
|
|
437
|
+
expect(oMockInternalSetProperty).toHaveBeenLastCalledWith("restoreStatus", "done");
|
|
438
|
+
});
|
|
439
|
+
} catch (e) {
|
|
440
|
+
return Promise.reject(e);
|
|
441
|
+
}
|
|
442
|
+
});
|
|
443
|
+
it("Refresh pending and refresh successfull, restore unsuccessfull", function () {
|
|
444
|
+
try {
|
|
445
|
+
restoreStatus = "pending";
|
|
446
|
+
viewState["refreshViewBindings"] = spyRefreshResolve;
|
|
447
|
+
spyRestore.mockImplementation(function () {
|
|
448
|
+
var error = new Error("restore error");
|
|
449
|
+
throw error;
|
|
450
|
+
});
|
|
451
|
+
return Promise.resolve(KeepAliveHelper.restoreView(view)).then(function () {
|
|
452
|
+
expect(spyRefreshResolve).toHaveBeenCalledTimes(2);
|
|
453
|
+
expect(spyRefreshReject).toHaveBeenCalledTimes(1);
|
|
454
|
+
expect(oMockInfoLog).toHaveBeenCalledTimes(2);
|
|
455
|
+
expect(spyRestore).toHaveBeenCalledTimes(3);
|
|
456
|
+
expect(oMockInternalSetProperty).toHaveBeenCalledTimes(2);
|
|
457
|
+
});
|
|
458
|
+
} catch (e) {
|
|
459
|
+
return Promise.reject(e);
|
|
460
|
+
}
|
|
461
|
+
});
|
|
462
|
+
it("Refresh pending and refresh and restore unsuccessfull", function () {
|
|
463
|
+
try {
|
|
464
|
+
restoreStatus = "pending";
|
|
465
|
+
viewState["refreshViewBindings"] = spyRefreshReject;
|
|
466
|
+
spyRestore.mockImplementation(function () {
|
|
467
|
+
var error = new Error("restore error");
|
|
468
|
+
throw error;
|
|
469
|
+
});
|
|
470
|
+
return Promise.resolve(KeepAliveHelper.restoreView(view)).then(function () {
|
|
471
|
+
expect(spyRefreshResolve).toHaveBeenCalledTimes(2);
|
|
472
|
+
expect(spyRefreshReject).toHaveBeenCalledTimes(2);
|
|
473
|
+
expect(oMockInfoLog).toHaveBeenCalledTimes(2);
|
|
474
|
+
expect(spyRestore).toHaveBeenCalledTimes(3);
|
|
475
|
+
expect(oMockInternalSetProperty).toHaveBeenCalledTimes(2);
|
|
476
|
+
});
|
|
477
|
+
} catch (e) {
|
|
478
|
+
return Promise.reject(e);
|
|
479
|
+
}
|
|
480
|
+
});
|
|
481
|
+
});
|
|
482
|
+
}, false);
|
|
483
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIktlZXBBbGl2ZUhlbHBlci5zcGVjLnRzIl0sIm5hbWVzIjpbImRlc2NyaWJlIiwiaW50ZXJuYWwiLCJ2aWV3RGF0YSIsImNvbnRyb2wiLCJvTW9ja0dldE1vZGVsIiwib01vY2tJbnRlcm5hbFNldFByb3BlcnR5Iiwib01vY2tWaWV3RGF0YUdldFByb3BlcnR5IiwicmVmcmVzaFN0cmF0ZWd5VG9UZXN0IiwiYmVmb3JlQWxsIiwiTW9ja01vZGVsIiwiTW9ja0NvbnRyb2wiLCJqZXN0Iiwic3B5T24iLCJtb2NrSW1wbGVtZW50YXRpb24iLCJuYW1lIiwic1BhdGgiLCJQQVRIX1RPX1NUT1JFIiwidW5kZWZpbmVkIiwiYmVmb3JlRWFjaCIsImFmdGVyQWxsIiwicmVzdG9yZUFsbE1vY2tzIiwiU3RvcmVTdHJhdGVneVRlc3RzIiwiZm9yRWFjaCIsIm9UZXN0RGF0YSIsIml0IiwidGl0bGUiLCJyZWZyZXNoU3RyYXRlZ2llcyIsIktlZXBBbGl2ZUhlbHBlciIsInN0b3JlQ29udHJvbFJlZnJlc2hTdHJhdGVneUZvckhhc2giLCJoYXNoIiwiZXhwZWN0IiwidG9IYXZlQmVlbkxhc3RDYWxsZWRXaXRoIiwicmVzdWx0Iiwic2VtYW50aWNPYmplY3QiLCJhY3Rpb24iLCJSZWZyZXNoU3RyYXRlZ3lGb3JJbnRlbnRUZXN0cyIsImdldFJlZnJlc2hTdHJhdGVneUZvckludGVudCIsInRvRXF1YWwiLCJ2aWV3Iiwib01vY2tHZXRTdHJhdGVneSIsIm1vY2tSZXR1cm5WYWx1ZSIsImZuIiwiZ2V0Vmlld0RhdGEiLCJjb250ZXh0UGF0aCIsImdldFZpZXdSZWZyZXNoSW5mbyIsInRvSGF2ZUJlZW5DYWxsZWRUaW1lcyIsImVudGl0eVNldCIsImRlZmF1bHRNb2RlbCIsIm1ldGFNb2RlbCIsIm9Nb2NrSW50ZXJuYWxHZXRQcm9wZXJ0eSIsIm9Nb2NrR2V0TWV0YU1vZGVsIiwib01vY2tHZXRPYmplY3QiLCJNb2NrTWV0YU1vZGVsIiwic2V0TWV0YU1vZGVsIiwiQ29udHJvbFJlZnJlc2hTdHJhdGVneVRlc3RzIiwicmVmcmVzaFN0cmF0ZWd5IiwiZ2V0Q29udHJvbFJlZnJlc2hTdHJhdGVneUZvckNvbnRleHRQYXRoIiwiYUNvbnRyb2xzIiwiVmlldyIsImNvbnRyb2wxIiwiY29udHJvbDIiLCJvTW9ja0NvbnRyb2wxRGF0YSIsInNLZXkiLCJvTW9ja0NvbnRyb2wyRGF0YSIsIkNvbnRyb2xzRm9yUmVmcmVzaFRlc3RzIiwicmVzdWx0Q29udHJvbEluZGljZXMiLCJtYXAiLCJpZHgiLCJnZXRDb250cm9sc0ZvclJlZnJlc2giLCJvTW9ja0JpbmRpbmdDb250ZXh0Iiwib01vY2tDb250cm9sbGVyIiwib01vY2tHZXRJZCIsIm9Nb2NrSW5mb0xvZyIsInJlc3RvcmVTdGF0dXMiLCJzcHlSZWZyZXNoUmVzb2x2ZSIsInNweVJlZnJlc2hSZWplY3QiLCJzcHlSZXN0b3JlIiwidmlld1N0YXRlIiwiTW9ja0NvbnRleHQiLCJtb2NrUmVzb2x2ZWRWYWx1ZSIsIm1vY2tSZWplY3RlZFZhbHVlIiwib25SZXN0b3JlIiwicHJvcCIsIkxvZyIsIm1zZyIsInJlc3RvcmVWaWV3IiwiZXJyb3IiLCJFcnJvciJdLCJtYXBwaW5ncyI6IjtBQUFBO0FBQ0E7QUFDQTs7Ozs7Ozs7OztBQVVBQSxFQUFBQSxRQUFRLENBQUMsaUVBQUQsRUFBb0UsWUFBTTtBQUNqRixRQUFJQyxRQUFKO0FBQ0EsUUFBSUMsUUFBSjtBQUNBLFFBQUlDLE9BQUo7QUFDQSxRQUFJQyxhQUFKO0FBQ0EsUUFBSUMsd0JBQUo7QUFDQSxRQUFJQyx3QkFBSjtBQUNBLFFBQUlDLHFCQUFKO0FBRUFDLElBQUFBLFNBQVM7QUFBQSxVQUFrQjtBQUMxQlAsUUFBQUEsUUFBUSxHQUFHLElBQUlRLFNBQUosRUFBWDtBQUNBUCxRQUFBQSxRQUFRLEdBQUcsSUFBSU8sU0FBSixFQUFYO0FBRUFOLFFBQUFBLE9BQU8sR0FBRyxJQUFJTyxXQUFKLEVBQVYsQ0FKMEIsQ0FNMUI7O0FBQ0FOLFFBQUFBLGFBQWEsR0FBR08sSUFBSSxDQUFDQyxLQUFMLENBQVdULE9BQVgsRUFBb0IsVUFBcEIsQ0FBaEI7QUFDQUMsUUFBQUEsYUFBYSxDQUFDUyxrQkFBZCxDQUFpQyxVQUFBQyxJQUFJLEVBQUk7QUFDeEMsY0FBSUEsSUFBSSxLQUFLLFVBQWIsRUFBeUI7QUFDeEIsbUJBQU9iLFFBQVA7QUFDQSxXQUZELE1BRU8sSUFBSWEsSUFBSSxLQUFLLFVBQWIsRUFBeUI7QUFDL0IsbUJBQU9aLFFBQVA7QUFDQTtBQUNELFNBTkQ7QUFRQUcsUUFBQUEsd0JBQXdCLEdBQUdNLElBQUksQ0FBQ0MsS0FBTCxDQUFXWCxRQUFYLEVBQXFCLGFBQXJCLENBQTNCO0FBQ0FLLFFBQUFBLHdCQUF3QixHQUFHSyxJQUFJLENBQUNDLEtBQUwsQ0FBV1YsUUFBWCxFQUFxQixhQUFyQixDQUEzQjtBQUNBSSxRQUFBQSx3QkFBd0IsQ0FBQ08sa0JBQXpCLENBQTRDLFVBQUFFLEtBQUs7QUFBQSxpQkFBS0EsS0FBSyxLQUFLQyxhQUFWLEdBQTBCVCxxQkFBMUIsR0FBa0RVLFNBQXZEO0FBQUEsU0FBakQ7QUFsQjBCO0FBbUIxQixPQW5CUTtBQUFBO0FBQUE7QUFBQSxNQUFUO0FBb0JBQyxJQUFBQSxVQUFVLGFBQWtCO0FBQzNCO0FBQ0FYLE1BQUFBLHFCQUFxQixHQUFHLEVBQXhCO0FBRjJCO0FBRzNCLEtBSFMsQ0FBVjtBQUtBWSxJQUFBQSxRQUFRO0FBQUEsVUFBa0I7QUFDekJSLFFBQUFBLElBQUksQ0FBQ1MsZUFBTDtBQUR5QjtBQUV6QixPQUZPO0FBQUE7QUFBQTtBQUFBLE1BQVI7QUFJQUMsSUFBQUEsa0JBQWtCLENBQUNDLE9BQW5CLENBQTJCLFVBQUFDLFNBQVMsRUFBSTtBQUN2Q0MsTUFBQUEsRUFBRSxDQUFDRCxTQUFTLENBQUNFLEtBQVg7QUFBQSxZQUE4QjtBQUMvQjtBQUNBbEIsVUFBQUEscUJBQXFCLEdBQUdnQixTQUFTLENBQUNHLGlCQUFsQztBQUNBQyxVQUFBQSxlQUFlLENBQUNDLGtDQUFoQixDQUFvRHpCLE9BQXBELEVBQW9Gb0IsU0FBUyxDQUFDTSxJQUE5RjtBQUNBQyxVQUFBQSxNQUFNLENBQUN6Qix3QkFBRCxDQUFOLENBQWlDMEIsd0JBQWpDLENBQTBEZixhQUExRCxFQUF5RU8sU0FBUyxDQUFDUyxNQUFuRjtBQUorQjtBQUsvQixTQUxDO0FBQUE7QUFBQTtBQUFBLFFBQUY7QUFNQSxLQVBEO0FBUUEsR0E5Q08sQ0FBUjtBQWdEQWhDLEVBQUFBLFFBQVEsQ0FBQywwREFBRCxFQUE2RCxZQUFNO0FBQzFFLFFBQUkwQixpQkFBSjtBQUNBLFFBQUlPLGNBQUo7QUFDQSxRQUFJQyxNQUFKO0FBQ0FoQixJQUFBQSxVQUFVLGFBQWtCO0FBQzNCO0FBQ0FRLE1BQUFBLGlCQUFpQixHQUFHLEVBQXBCO0FBQ0FPLE1BQUFBLGNBQWMsR0FBR2hCLFNBQWpCO0FBQ0FpQixNQUFBQSxNQUFNLEdBQUdqQixTQUFUO0FBSjJCO0FBSzNCLEtBTFMsQ0FBVjtBQU9BRSxJQUFBQSxRQUFRO0FBQUEsVUFBa0I7QUFDekJSLFFBQUFBLElBQUksQ0FBQ1MsZUFBTDtBQUR5QjtBQUV6QixPQUZPO0FBQUE7QUFBQTtBQUFBLE1BQVI7QUFJQWUsSUFBQUEsNkJBQTZCLENBQUNiLE9BQTlCLENBQXNDLFVBQUFDLFNBQVMsRUFBSTtBQUNsREMsTUFBQUEsRUFBRSxDQUFDRCxTQUFTLENBQUNFLEtBQVg7QUFBQSxZQUE4QjtBQUMvQjtBQUNBSyxVQUFBQSxNQUFNLENBQ0xILGVBQWUsQ0FBQ1MsMkJBQWhCLENBQTRDYixTQUFTLENBQUNHLGlCQUF0RCxFQUF5RUgsU0FBUyxDQUFDVSxjQUFuRixFQUFtR1YsU0FBUyxDQUFDVyxNQUE3RyxDQURLLENBQU4sQ0FFRUcsT0FGRixDQUVVZCxTQUFTLENBQUNTLE1BRnBCO0FBRitCO0FBSy9CLFNBTEM7QUFBQTtBQUFBO0FBQUEsUUFBRjtBQU1BLEtBUEQ7QUFRQSxHQXZCTyxDQUFSO0FBeUJBaEMsRUFBQUEsUUFBUSxDQUFDLGlEQUFELEVBQW9ELFlBQU07QUFDakUsUUFBSUUsUUFBSjtBQUNBLFFBQUlvQyxJQUFKO0FBQ0EsUUFBSUMsZ0JBQUo7QUFDQS9CLElBQUFBLFNBQVM7QUFBQSxVQUFrQjtBQUMxQk4sUUFBQUEsUUFBUSxHQUFHLEVBQVg7QUFDQXFDLFFBQUFBLGdCQUFnQixHQUFHNUIsSUFBSSxDQUFDQyxLQUFMLENBQVdlLGVBQVgsRUFBNEIseUNBQTVCLENBQW5CO0FBQ0FZLFFBQUFBLGdCQUFnQixDQUFDQyxlQUFqQixDQUFpQzdCLElBQUksQ0FBQzhCLEVBQUwsRUFBakM7QUFFQUgsUUFBQUEsSUFBSSxHQUFHO0FBQ05JLFVBQUFBLFdBQVcsRUFBRTtBQUFBLG1CQUFNeEMsUUFBTjtBQUFBO0FBRFAsU0FBUDtBQUwwQjtBQVExQixPQVJRO0FBQUE7QUFBQTtBQUFBLE1BQVQ7QUFVQWlCLElBQUFBLFFBQVE7QUFBQSxVQUFrQjtBQUN6QmpCLFFBQUFBLFFBQVEsR0FBRyxFQUFYO0FBQ0FTLFFBQUFBLElBQUksQ0FBQ1MsZUFBTDtBQUZ5QjtBQUd6QixPQUhPO0FBQUE7QUFBQTtBQUFBLE1BQVI7QUFLQUksSUFBQUEsRUFBRSxDQUFDLG1CQUFEO0FBQUEsVUFBa0M7QUFBQTs7QUFDbkM7QUFDQXRCLFFBQUFBLFFBQVEsQ0FBQ3lDLFdBQVQsR0FBdUIsS0FBdkI7QUFDQWhCLFFBQUFBLGVBQWUsQ0FBQ2lCLGtCQUFoQixDQUFtQ04sSUFBbkM7QUFDQVIsUUFBQUEsTUFBTSxDQUFDUyxnQkFBRCxDQUFOLENBQXlCTSxxQkFBekIsQ0FBK0MsQ0FBL0M7QUFDQWYsUUFBQUEsTUFBTSxDQUFDUyxnQkFBRCxDQUFOLENBQXlCUix3QkFBekIsQ0FBa0RPLElBQWxELGVBQXdEcEMsUUFBeEQsOENBQXdELFVBQVV5QyxXQUFsRTtBQUxtQztBQU1uQyxPQU5DO0FBQUE7QUFBQTtBQUFBLE1BQUY7QUFRQW5CLElBQUFBLEVBQUUsQ0FBQyxnQkFBRDtBQUFBLFVBQStCO0FBQUE7O0FBQ2hDO0FBQ0F0QixRQUFBQSxRQUFRLENBQUM0QyxTQUFULEdBQXFCLElBQXJCO0FBQ0FuQixRQUFBQSxlQUFlLENBQUNpQixrQkFBaEIsQ0FBbUNOLElBQW5DO0FBQ0FSLFFBQUFBLE1BQU0sQ0FBQ1MsZ0JBQUQsQ0FBTixDQUF5Qk0scUJBQXpCLENBQStDLENBQS9DO0FBQ0FmLFFBQUFBLE1BQU0sQ0FBQ1MsZ0JBQUQsQ0FBTixDQUF5QlIsd0JBQXpCLENBQWtETyxJQUFsRCxFQUF3RCxxQkFBTXBDLFFBQU4sK0NBQU0sV0FBVTRDLFNBQWhCLENBQXhEO0FBTGdDO0FBTWhDLE9BTkM7QUFBQTtBQUFBO0FBQUEsTUFBRjtBQU9BLEdBbENPLENBQVI7QUFvQ0E5QyxFQUFBQSxRQUFRLENBQUMsc0VBQUQsRUFBeUUsWUFBTTtBQUN0RixRQUFJQyxRQUFKO0FBQ0EsUUFBSUUsT0FBSjtBQUNBLFFBQUk0QyxZQUFKO0FBQ0EsUUFBSUMsU0FBSjtBQUNBLFFBQUlDLHdCQUFKO0FBQ0EsUUFBSTdDLGFBQUo7QUFDQSxRQUFJOEMsaUJBQUo7QUFDQSxRQUFJQyxjQUFKO0FBQ0EsUUFBSUwsU0FBSjtBQUVBLFFBQUl2QyxxQkFBSjtBQUVBQyxJQUFBQSxTQUFTO0FBQUEsVUFBa0I7QUFDMUJQLFFBQUFBLFFBQVEsR0FBRyxJQUFJUSxTQUFKLEVBQVg7QUFDQU4sUUFBQUEsT0FBTyxHQUFHLElBQUlPLFdBQUosRUFBVjtBQUVBcUMsUUFBQUEsWUFBWSxHQUFHLElBQUl0QyxTQUFKLEVBQWY7QUFDQXVDLFFBQUFBLFNBQVMsR0FBRyxJQUFJSSxhQUFKLEVBQVosQ0FMMEIsQ0FPMUI7O0FBQ0FoRCxRQUFBQSxhQUFhLEdBQUdPLElBQUksQ0FBQ0MsS0FBTCxDQUFXVCxPQUFYLEVBQW9CLFVBQXBCLENBQWhCO0FBQ0FDLFFBQUFBLGFBQWEsQ0FBQ1Msa0JBQWQsQ0FBaUMsVUFBQUMsSUFBSSxFQUFJO0FBQ3hDLGNBQUlBLElBQUksS0FBSyxVQUFiLEVBQXlCO0FBQ3hCLG1CQUFPYixRQUFQO0FBQ0E7O0FBQ0QsaUJBQU84QyxZQUFQO0FBQ0EsU0FMRCxFQVQwQixDQWdCMUI7O0FBQ0FFLFFBQUFBLHdCQUF3QixHQUFHdEMsSUFBSSxDQUFDQyxLQUFMLENBQVdYLFFBQVgsRUFBcUIsYUFBckIsQ0FBM0I7QUFDQWdELFFBQUFBLHdCQUF3QixDQUFDcEMsa0JBQXpCLENBQTRDLFVBQUFFLEtBQUs7QUFBQSxpQkFBS0EsS0FBSyxLQUFLQyxhQUFWLEdBQTBCVCxxQkFBMUIsR0FBa0RVLFNBQXZEO0FBQUEsU0FBakQsRUFsQjBCLENBb0IxQjs7QUFDQThCLFFBQUFBLFlBQVksQ0FBQ00sWUFBYixDQUEwQkwsU0FBMUI7QUFDQUcsUUFBQUEsY0FBYyxHQUFHeEMsSUFBSSxDQUFDQyxLQUFMLENBQVdvQyxTQUFYLEVBQXNCLFdBQXRCLENBQWpCO0FBQ0FHLFFBQUFBLGNBQWMsQ0FBQ3RDLGtCQUFmLENBQWtDO0FBQUEsaUJBQU1pQyxTQUFOO0FBQUEsU0FBbEM7QUF2QjBCO0FBd0IxQixPQXhCUTtBQUFBO0FBQUE7QUFBQSxNQUFUO0FBeUJBNUIsSUFBQUEsVUFBVSxhQUFrQjtBQUMzQjtBQUNBWCxNQUFBQSxxQkFBcUIsR0FBR1UsU0FBeEI7QUFDQTZCLE1BQUFBLFNBQVMsR0FBRyxFQUFaO0FBSDJCO0FBSTNCLEtBSlMsQ0FBVjtBQU1BM0IsSUFBQUEsUUFBUTtBQUFBLFVBQWtCO0FBQ3pCUixRQUFBQSxJQUFJLENBQUNTLGVBQUw7QUFEeUI7QUFFekIsT0FGTztBQUFBO0FBQUE7QUFBQSxNQUFSO0FBSUFrQyxJQUFBQSwyQkFBMkIsQ0FBQ2hDLE9BQTVCLENBQW9DLFVBQUFDLFNBQVMsRUFBSTtBQUNoREMsTUFBQUEsRUFBRSxDQUFDRCxTQUFTLENBQUNFLEtBQVg7QUFBQSxZQUE4QjtBQUMvQjtBQUNBbEIsVUFBQUEscUJBQXFCLEdBQUdnQixTQUFTLENBQUNnQyxlQUFsQztBQUNBVCxVQUFBQSxTQUFTLEdBQUd2QixTQUFTLENBQUN1QixTQUF0QjtBQUNBaEIsVUFBQUEsTUFBTSxDQUFDSCxlQUFlLENBQUM2Qix1Q0FBaEIsQ0FBeURyRCxPQUF6RCxFQUF5Rm9CLFNBQVMsQ0FBQ29CLFdBQW5HLENBQUQsQ0FBTixDQUF3SE4sT0FBeEgsQ0FDQ2QsU0FBUyxDQUFDUyxNQURYO0FBSitCO0FBTy9CLFNBUEM7QUFBQTtBQUFBO0FBQUEsUUFBRjtBQVFBLEtBVEQ7QUFVQSxHQTFETyxDQUFSO0FBNERBaEMsRUFBQUEsUUFBUSxDQUFDLG9EQUFELEVBQXVELFlBQU07QUFDcEUsUUFBSUMsUUFBSjtBQUNBLFFBQUl3RCxTQUFKO0FBQ0EsUUFBSW5CLElBQUo7QUFDQSxRQUFJUyxZQUFKO0FBQ0EsUUFBSUMsU0FBSjtBQUNBLFFBQUlDLHdCQUFKO0FBQ0EsUUFBSTdDLGFBQUo7QUFDQSxRQUFJOEMsaUJBQUo7QUFDQSxRQUFJQyxjQUFKO0FBQ0EsUUFBSUwsU0FBSjtBQUNBLFFBQUl2QyxxQkFBSjtBQUVBQyxJQUFBQSxTQUFTO0FBQUEsVUFBa0I7QUFDMUJQLFFBQUFBLFFBQVEsR0FBRyxJQUFJUSxTQUFKLEVBQVg7QUFDQTZCLFFBQUFBLElBQUksR0FBRyxJQUFJb0IsSUFBSixFQUFQO0FBQ0FYLFFBQUFBLFlBQVksR0FBRyxJQUFJdEMsU0FBSixFQUFmO0FBQ0F1QyxRQUFBQSxTQUFTLEdBQUcsSUFBSUksYUFBSixFQUFaLENBSjBCLENBTTFCOztBQUNBLFlBQU1PLFFBQVEsR0FBRyxJQUFJakQsV0FBSixFQUFqQjtBQUNBLFlBQU1rRCxRQUFRLEdBQUcsSUFBSWxELFdBQUosRUFBakI7QUFDQSxZQUFNbUQsaUJBQWlCLEdBQUdsRCxJQUFJLENBQUNDLEtBQUwsQ0FBVytDLFFBQVgsRUFBcUIsTUFBckIsQ0FBMUI7QUFDQUUsUUFBQUEsaUJBQWlCLENBQUNoRCxrQkFBbEIsQ0FBcUMsVUFBQWlELElBQUk7QUFBQSxpQkFBS0EsSUFBSSxLQUFLLHNCQUFULEdBQWtDLEtBQWxDLEdBQTBDN0MsU0FBL0M7QUFBQSxTQUF6QztBQUNBLFlBQU04QyxpQkFBaUIsR0FBR3BELElBQUksQ0FBQ0MsS0FBTCxDQUFXZ0QsUUFBWCxFQUFxQixNQUFyQixDQUExQjtBQUNBRyxRQUFBQSxpQkFBaUIsQ0FBQ2xELGtCQUFsQixDQUFxQyxVQUFBaUQsSUFBSTtBQUFBLGlCQUFLQSxJQUFJLEtBQUssc0JBQVQsR0FBa0MsV0FBbEMsR0FBZ0Q3QyxTQUFyRDtBQUFBLFNBQXpDO0FBQ0F3QyxRQUFBQSxTQUFTLEdBQUcsQ0FBQ0UsUUFBRCxFQUFXQyxRQUFYLENBQVosQ0FiMEIsQ0FlMUI7O0FBQ0F4RCxRQUFBQSxhQUFhLEdBQUdPLElBQUksQ0FBQ0MsS0FBTCxDQUFXMEIsSUFBWCxFQUFpQixVQUFqQixDQUFoQjtBQUNBbEMsUUFBQUEsYUFBYSxDQUFDUyxrQkFBZCxDQUFpQyxVQUFBQyxJQUFJLEVBQUk7QUFDeEMsY0FBSUEsSUFBSSxLQUFLLFVBQWIsRUFBeUI7QUFDeEIsbUJBQU9iLFFBQVA7QUFDQTs7QUFDRCxpQkFBTzhDLFlBQVA7QUFDQSxTQUxELEVBakIwQixDQXdCMUI7O0FBQ0FFLFFBQUFBLHdCQUF3QixHQUFHdEMsSUFBSSxDQUFDQyxLQUFMLENBQVdYLFFBQVgsRUFBcUIsYUFBckIsQ0FBM0I7QUFDQWdELFFBQUFBLHdCQUF3QixDQUFDcEMsa0JBQXpCLENBQTRDLFVBQUFFLEtBQUs7QUFBQSxpQkFBS0EsS0FBSyxLQUFLQyxhQUFWLEdBQTBCVCxxQkFBMUIsR0FBa0RVLFNBQXZEO0FBQUEsU0FBakQsRUExQjBCLENBNEIxQjs7QUFDQThCLFFBQUFBLFlBQVksQ0FBQ00sWUFBYixDQUEwQkwsU0FBMUI7QUFDQUcsUUFBQUEsY0FBYyxHQUFHeEMsSUFBSSxDQUFDQyxLQUFMLENBQVdvQyxTQUFYLEVBQXNCLFdBQXRCLENBQWpCO0FBQ0FHLFFBQUFBLGNBQWMsQ0FBQ3RDLGtCQUFmLENBQWtDO0FBQUEsaUJBQU1pQyxTQUFOO0FBQUEsU0FBbEM7QUEvQjBCO0FBZ0MxQixPQWhDUTtBQUFBO0FBQUE7QUFBQSxNQUFUO0FBaUNBNUIsSUFBQUEsVUFBVSxhQUFrQjtBQUMzQjtBQUNBWCxNQUFBQSxxQkFBcUIsR0FBR1UsU0FBeEI7QUFDQTZCLE1BQUFBLFNBQVMsR0FBRyxFQUFaO0FBSDJCO0FBSTNCLEtBSlMsQ0FBVjtBQU1BM0IsSUFBQUEsUUFBUTtBQUFBLFVBQWtCO0FBQ3pCUixRQUFBQSxJQUFJLENBQUNTLGVBQUw7QUFEeUI7QUFFekIsT0FGTztBQUFBO0FBQUE7QUFBQSxNQUFSO0FBSUE0QyxJQUFBQSx1QkFBdUIsQ0FBQzFDLE9BQXhCLENBQWdDLFVBQUFDLFNBQVMsRUFBSTtBQUM1Q0MsTUFBQUEsRUFBRSxDQUFDRCxTQUFTLENBQUNFLEtBQVg7QUFBQSxZQUE4QjtBQUMvQjtBQUNBLGNBQU1PLE1BQXFCLEdBQUdULFNBQVMsQ0FBQzBDLG9CQUFWLENBQStCQyxHQUEvQixDQUFtQyxVQUFBQyxHQUFHO0FBQUEsbUJBQUlWLFNBQVMsQ0FBQ1UsR0FBRCxDQUFiO0FBQUEsV0FBdEMsQ0FBOUI7QUFFQXJCLFVBQUFBLFNBQVMsR0FBR3ZCLFNBQVMsQ0FBQ3VCLFNBQXRCO0FBQ0F2QyxVQUFBQSxxQkFBcUIsR0FBR2dCLFNBQVMsQ0FBQ2dDLGVBQWxDO0FBQ0F6QixVQUFBQSxNQUFNLENBQUNILGVBQWUsQ0FBQ3lDLHFCQUFoQixDQUFzQzlCLElBQXRDLEVBQTZDbUIsU0FBN0MsQ0FBRCxDQUFOLENBQXlGcEIsT0FBekYsQ0FBaUdMLE1BQWpHO0FBTitCO0FBTy9CLFNBUEM7QUFBQTtBQUFBO0FBQUEsUUFBRjtBQVFBLEtBVEQ7QUFVQSxHQWxFTyxDQUFSO0FBb0VBaEMsRUFBQUEsUUFBUSxDQUFDLDBDQUFELEVBQTZDLFlBQU07QUFDMUQsUUFBSUMsUUFBSjtBQUNBLFFBQUlxQyxJQUFKO0FBQ0EsUUFBSVcsd0JBQUo7QUFDQSxRQUFJNUMsd0JBQUo7QUFDQSxRQUFJZ0UsbUJBQUo7QUFDQSxRQUFJQyxlQUFKO0FBQ0EsUUFBSUMsVUFBSjtBQUNBLFFBQUlDLFlBQUo7QUFDQSxRQUFJQyxhQUFKO0FBQ0EsUUFBTUMsaUJBQTRCLEdBQUcvRCxJQUFJLENBQUM4QixFQUFMLEVBQXJDO0FBQ0EsUUFBTWtDLGdCQUEyQixHQUFHaEUsSUFBSSxDQUFDOEIsRUFBTCxFQUFwQztBQUNBLFFBQU1tQyxVQUFxQixHQUFHakUsSUFBSSxDQUFDOEIsRUFBTCxFQUE5QjtBQUNBLFFBQUlvQyxTQUFjLEdBQUcsRUFBckI7QUFDQXJFLElBQUFBLFNBQVM7QUFBQSxVQUFrQjtBQUMxQlAsUUFBQUEsUUFBUSxHQUFHLElBQUk2RSxXQUFKLENBQWdCLEVBQWhCLENBQVg7QUFDQXhDLFFBQUFBLElBQUksR0FBRyxJQUFJb0IsSUFBSixFQUFQO0FBQ0FnQixRQUFBQSxpQkFBaUIsQ0FBQ0ssaUJBQWxCLENBQW9DLEVBQXBDO0FBQ0FKLFFBQUFBLGdCQUFnQixDQUFDSyxpQkFBakIsQ0FBbUMsRUFBbkMsRUFKMEIsQ0FNMUI7O0FBQ0FYLFFBQUFBLG1CQUFtQixHQUFHMUQsSUFBSSxDQUFDQyxLQUFMLENBQVcwQixJQUFYLEVBQWlCLG1CQUFqQixDQUF0QjtBQUNBaUMsUUFBQUEsVUFBVSxHQUFHNUQsSUFBSSxDQUFDQyxLQUFMLENBQVcwQixJQUFYLEVBQWlCLE9BQWpCLENBQWI7QUFDQWlDLFFBQUFBLFVBQVUsQ0FBQy9CLGVBQVgsQ0FBMkIsRUFBM0I7QUFDQTZCLFFBQUFBLG1CQUFtQixDQUFDN0IsZUFBcEIsQ0FBb0N2QyxRQUFwQztBQUNBcUUsUUFBQUEsZUFBZSxHQUFHM0QsSUFBSSxDQUFDQyxLQUFMLENBQVcwQixJQUFYLEVBQWlCLGVBQWpCLENBQWxCO0FBQ0F1QyxRQUFBQSxTQUFTLEdBQUc7QUFDWEksVUFBQUEsU0FBUyxFQUFFTDtBQURBLFNBQVo7QUFHQU4sUUFBQUEsZUFBZSxDQUFDekQsa0JBQWhCLENBQW1DO0FBQUEsaUJBQU87QUFDekNnRSxZQUFBQSxTQUFTLEVBQUVBO0FBRDhCLFdBQVA7QUFBQSxTQUFuQztBQUlBNUIsUUFBQUEsd0JBQXdCLEdBQUd0QyxJQUFJLENBQUNDLEtBQUwsQ0FBV1gsUUFBWCxFQUFxQixhQUFyQixDQUEzQjtBQUNBSSxRQUFBQSx3QkFBd0IsR0FBR00sSUFBSSxDQUFDQyxLQUFMLENBQVdYLFFBQVgsRUFBcUIsYUFBckIsQ0FBM0I7QUFDQWdELFFBQUFBLHdCQUF3QixDQUFDcEMsa0JBQXpCLENBQTRDLFVBQUFxRSxJQUFJO0FBQUEsaUJBQUtBLElBQUksS0FBSyxlQUFULEdBQTJCVCxhQUEzQixHQUEyQ3hELFNBQWhEO0FBQUEsU0FBaEQsRUFyQjBCLENBdUIxQjs7QUFDQXVELFFBQUFBLFlBQVksR0FBRzdELElBQUksQ0FBQ0MsS0FBTCxDQUFXdUUsR0FBWCxFQUFnQixNQUFoQixDQUFmO0FBQ0FYLFFBQUFBLFlBQVksQ0FBQzNELGtCQUFiLENBQWdDLFVBQUF1RSxHQUFHO0FBQUEsaUJBQUlBLEdBQUo7QUFBQSxTQUFuQztBQXpCMEI7QUEwQjFCLE9BMUJRO0FBQUE7QUFBQTtBQUFBLE1BQVQ7QUEyQkFsRSxJQUFBQSxVQUFVO0FBQUEsVUFBa0I7QUFDM0I7QUFDQXVELFFBQUFBLGFBQWEsR0FBRyxFQUFoQjtBQUNBSSxRQUFBQSxTQUFTLENBQUMscUJBQUQsQ0FBVCxHQUFtQzVELFNBQW5DO0FBSDJCO0FBSTNCLE9BSlM7QUFBQTtBQUFBO0FBQUEsTUFBVjtBQU1BRSxJQUFBQSxRQUFRO0FBQUEsVUFBa0I7QUFDekJSLFFBQUFBLElBQUksQ0FBQ1MsZUFBTDtBQUR5QjtBQUV6QixPQUZPO0FBQUE7QUFBQTtBQUFBLE1BQVI7QUFHQUksSUFBQUEsRUFBRSxDQUFDLHFCQUFEO0FBQUEsVUFBb0M7QUFDckNpRCxRQUFBQSxhQUFhLEdBQUcsTUFBaEI7QUFDQUksUUFBQUEsU0FBUyxDQUFDLHFCQUFELENBQVQsR0FBbUNILGlCQUFuQztBQUZxQywrQkFJL0IvQyxlQUFlLENBQUMwRCxXQUFoQixDQUE0Qi9DLElBQTVCLENBSitCO0FBS3JDUixVQUFBQSxNQUFNLENBQUM0QyxpQkFBRCxDQUFOLENBQTBCN0IscUJBQTFCLENBQWdELENBQWhEO0FBQ0FmLFVBQUFBLE1BQU0sQ0FBQzhDLFVBQUQsQ0FBTixDQUFtQi9CLHFCQUFuQixDQUF5QyxDQUF6QztBQUNBZixVQUFBQSxNQUFNLENBQUN6Qix3QkFBRCxDQUFOLENBQWlDd0MscUJBQWpDLENBQXVELENBQXZEO0FBUHFDO0FBUXJDLE9BUkM7QUFBQTtBQUFBO0FBQUEsTUFBRjtBQVNBckIsSUFBQUEsRUFBRSxDQUFDLDhEQUFEO0FBQUEsVUFBNkU7QUFDOUVpRCxRQUFBQSxhQUFhLEdBQUcsU0FBaEI7QUFDQUksUUFBQUEsU0FBUyxDQUFDLHFCQUFELENBQVQsR0FBbUM1RCxTQUFuQztBQUY4RSwrQkFHeEVVLGVBQWUsQ0FBQzBELFdBQWhCLENBQTRCL0MsSUFBNUIsQ0FId0U7QUFLOUVSLFVBQUFBLE1BQU0sQ0FBQzRDLGlCQUFELENBQU4sQ0FBMEI3QixxQkFBMUIsQ0FBZ0QsQ0FBaEQ7QUFDQWYsVUFBQUEsTUFBTSxDQUFDNkMsZ0JBQUQsQ0FBTixDQUF5QjlCLHFCQUF6QixDQUErQyxDQUEvQztBQUNBZixVQUFBQSxNQUFNLENBQUMwQyxZQUFELENBQU4sQ0FBcUIzQixxQkFBckIsQ0FBMkMsQ0FBM0M7QUFDQWYsVUFBQUEsTUFBTSxDQUFDOEMsVUFBRCxDQUFOLENBQW1CL0IscUJBQW5CLENBQXlDLENBQXpDO0FBQ0FmLFVBQUFBLE1BQU0sQ0FBQ3pCLHdCQUFELENBQU4sQ0FBaUN3QyxxQkFBakMsQ0FBdUQsQ0FBdkQ7QUFDQWYsVUFBQUEsTUFBTSxDQUFDekIsd0JBQUQsQ0FBTixDQUFpQzBCLHdCQUFqQyxDQUEwRCxlQUExRCxFQUEyRSxNQUEzRTtBQVY4RTtBQVc5RSxPQVhDO0FBQUE7QUFBQTtBQUFBLE1BQUY7QUFZQVAsSUFBQUEsRUFBRSxDQUFDLGtEQUFEO0FBQUEsVUFBaUU7QUFDbEVpRCxRQUFBQSxhQUFhLEdBQUcsU0FBaEI7QUFDQUksUUFBQUEsU0FBUyxDQUFDLHFCQUFELENBQVQsR0FBbUNILGlCQUFuQztBQUZrRSwrQkFHNUQvQyxlQUFlLENBQUMwRCxXQUFoQixDQUE0Qi9DLElBQTVCLENBSDREO0FBS2xFUixVQUFBQSxNQUFNLENBQUM0QyxpQkFBRCxDQUFOLENBQTBCN0IscUJBQTFCLENBQWdELENBQWhEO0FBQ0FmLFVBQUFBLE1BQU0sQ0FBQzZDLGdCQUFELENBQU4sQ0FBeUI5QixxQkFBekIsQ0FBK0MsQ0FBL0M7QUFDQWYsVUFBQUEsTUFBTSxDQUFDMEMsWUFBRCxDQUFOLENBQXFCM0IscUJBQXJCLENBQTJDLENBQTNDO0FBQ0FmLFVBQUFBLE1BQU0sQ0FBQzhDLFVBQUQsQ0FBTixDQUFtQi9CLHFCQUFuQixDQUF5QyxDQUF6QztBQUNBZixVQUFBQSxNQUFNLENBQUN6Qix3QkFBRCxDQUFOLENBQWlDd0MscUJBQWpDLENBQXVELENBQXZEO0FBQ0FmLFVBQUFBLE1BQU0sQ0FBQ3pCLHdCQUFELENBQU4sQ0FBaUMwQix3QkFBakMsQ0FBMEQsZUFBMUQsRUFBMkUsTUFBM0U7QUFWa0U7QUFXbEUsT0FYQztBQUFBO0FBQUE7QUFBQSxNQUFGO0FBYUFQLElBQUFBLEVBQUUsQ0FBQyxnRUFBRDtBQUFBLFVBQStFO0FBQ2hGaUQsUUFBQUEsYUFBYSxHQUFHLFNBQWhCO0FBQ0FJLFFBQUFBLFNBQVMsQ0FBQyxxQkFBRCxDQUFULEdBQW1DRixnQkFBbkM7QUFGZ0YsK0JBRzFFaEQsZUFBZSxDQUFDMEQsV0FBaEIsQ0FBNEIvQyxJQUE1QixDQUgwRTtBQUtoRlIsVUFBQUEsTUFBTSxDQUFDNEMsaUJBQUQsQ0FBTixDQUEwQjdCLHFCQUExQixDQUFnRCxDQUFoRDtBQUNBZixVQUFBQSxNQUFNLENBQUM2QyxnQkFBRCxDQUFOLENBQXlCOUIscUJBQXpCLENBQStDLENBQS9DO0FBQ0FmLFVBQUFBLE1BQU0sQ0FBQzBDLFlBQUQsQ0FBTixDQUFxQjNCLHFCQUFyQixDQUEyQyxDQUEzQztBQUNBZixVQUFBQSxNQUFNLENBQUN6Qix3QkFBRCxDQUFOLENBQWlDMEIsd0JBQWpDLENBQTBELGVBQTFELEVBQTJFLE1BQTNFO0FBUmdGO0FBU2hGLE9BVEM7QUFBQTtBQUFBO0FBQUEsTUFBRjtBQVdBUCxJQUFBQSxFQUFFLENBQUMsZ0VBQUQ7QUFBQSxVQUErRTtBQUNoRmlELFFBQUFBLGFBQWEsR0FBRyxTQUFoQjtBQUNBSSxRQUFBQSxTQUFTLENBQUMscUJBQUQsQ0FBVCxHQUFtQ0gsaUJBQW5DO0FBQ0FFLFFBQUFBLFVBQVUsQ0FBQy9ELGtCQUFYLENBQThCLFlBQU07QUFDbkMsY0FBTXlFLEtBQUssR0FBRyxJQUFJQyxLQUFKLENBQVUsZUFBVixDQUFkO0FBQ0EsZ0JBQU1ELEtBQU47QUFDQSxTQUhEO0FBSGdGLCtCQU8xRTNELGVBQWUsQ0FBQzBELFdBQWhCLENBQTRCL0MsSUFBNUIsQ0FQMEU7QUFTaEZSLFVBQUFBLE1BQU0sQ0FBQzRDLGlCQUFELENBQU4sQ0FBMEI3QixxQkFBMUIsQ0FBZ0QsQ0FBaEQ7QUFDQWYsVUFBQUEsTUFBTSxDQUFDNkMsZ0JBQUQsQ0FBTixDQUF5QjlCLHFCQUF6QixDQUErQyxDQUEvQztBQUNBZixVQUFBQSxNQUFNLENBQUMwQyxZQUFELENBQU4sQ0FBcUIzQixxQkFBckIsQ0FBMkMsQ0FBM0M7QUFDQWYsVUFBQUEsTUFBTSxDQUFDOEMsVUFBRCxDQUFOLENBQW1CL0IscUJBQW5CLENBQXlDLENBQXpDO0FBQ0FmLFVBQUFBLE1BQU0sQ0FBQ3pCLHdCQUFELENBQU4sQ0FBaUN3QyxxQkFBakMsQ0FBdUQsQ0FBdkQ7QUFiZ0Y7QUFjaEYsT0FkQztBQUFBO0FBQUE7QUFBQSxNQUFGO0FBZ0JBckIsSUFBQUEsRUFBRSxDQUFDLHVEQUFEO0FBQUEsVUFBc0U7QUFDdkVpRCxRQUFBQSxhQUFhLEdBQUcsU0FBaEI7QUFDQUksUUFBQUEsU0FBUyxDQUFDLHFCQUFELENBQVQsR0FBbUNGLGdCQUFuQztBQUNBQyxRQUFBQSxVQUFVLENBQUMvRCxrQkFBWCxDQUE4QixZQUFNO0FBQ25DLGNBQU15RSxLQUFLLEdBQUcsSUFBSUMsS0FBSixDQUFVLGVBQVYsQ0FBZDtBQUNBLGdCQUFNRCxLQUFOO0FBQ0EsU0FIRDtBQUh1RSwrQkFPakUzRCxlQUFlLENBQUMwRCxXQUFoQixDQUE0Qi9DLElBQTVCLENBUGlFO0FBU3ZFUixVQUFBQSxNQUFNLENBQUM0QyxpQkFBRCxDQUFOLENBQTBCN0IscUJBQTFCLENBQWdELENBQWhEO0FBQ0FmLFVBQUFBLE1BQU0sQ0FBQzZDLGdCQUFELENBQU4sQ0FBeUI5QixxQkFBekIsQ0FBK0MsQ0FBL0M7QUFDQWYsVUFBQUEsTUFBTSxDQUFDMEMsWUFBRCxDQUFOLENBQXFCM0IscUJBQXJCLENBQTJDLENBQTNDO0FBQ0FmLFVBQUFBLE1BQU0sQ0FBQzhDLFVBQUQsQ0FBTixDQUFtQi9CLHFCQUFuQixDQUF5QyxDQUF6QztBQUNBZixVQUFBQSxNQUFNLENBQUN6Qix3QkFBRCxDQUFOLENBQWlDd0MscUJBQWpDLENBQXVELENBQXZEO0FBYnVFO0FBY3ZFLE9BZEM7QUFBQTtBQUFBO0FBQUEsTUFBRjtBQWVBLEdBOUhPLENBQVIiLCJzb3VyY2VSb290IjoiLiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBLZWVwQWxpdmVIZWxwZXIgZnJvbSBcInNhcC9mZS9jb3JlL2hlbHBlcnMvS2VlcEFsaXZlSGVscGVyXCI7XG5pbXBvcnQgeyBTT1JlZnJlc2hTdHJhdGVneSwgUmVmcmVzaFN0cmF0ZWdpZXMsIFBBVEhfVE9fU1RPUkUgfSBmcm9tIFwic2FwL2ZlL2NvcmUvaGVscGVycy9LZWVwQWxpdmVSZWZyZXNoVHlwZXNcIjtcbmltcG9ydCB7IENvbnRyb2wgfSBmcm9tIFwic2FwL3VpL2NvcmVcIjtcbmltcG9ydCB7IFZpZXcgfSBmcm9tIFwic2FwL3VpL2NvcmUvbXZjXCI7XG5pbXBvcnQgeyBMb2cgfSBmcm9tIFwic2FwL2Jhc2VcIjtcbmltcG9ydCB7IEJhc2VNYW5pZmVzdFNldHRpbmdzIH0gZnJvbSBcInNhcC9mZS9jb3JlL2NvbnZlcnRlcnMvTWFuaWZlc3RTZXR0aW5nc1wiO1xuaW1wb3J0IFN0b3JlU3RyYXRlZ3lUZXN0cyBmcm9tIFwiLi9LZWVwQWxpdmVIZWxwZXJUZXN0RGF0YS9TdG9yZVN0cmF0ZWd5VGVzdHNcIjtcbmltcG9ydCBSZWZyZXNoU3RyYXRlZ3lGb3JJbnRlbnRUZXN0cyBmcm9tIFwiLi9LZWVwQWxpdmVIZWxwZXJUZXN0RGF0YS9SZWZyZXNoU3RyYXRlZ3lGb3JJbnRlbnRUZXN0c1wiO1xuaW1wb3J0IENvbnRyb2xSZWZyZXNoU3RyYXRlZ3lUZXN0cyBmcm9tIFwiLi9LZWVwQWxpdmVIZWxwZXJUZXN0RGF0YS9Db250cm9sUmVmcmVzaFN0cmF0ZWd5VGVzdHNcIjtcbmltcG9ydCBDb250cm9sc0ZvclJlZnJlc2hUZXN0cyBmcm9tIFwiLi9LZWVwQWxpdmVIZWxwZXJUZXN0RGF0YS9Db250cm9sc0ZvclJlZnJlc2hUZXN0c1wiO1xuaW1wb3J0IHsgTW9ja01vZGVsLCBNb2NrTWV0YU1vZGVsLCBNb2NrQ29udHJvbCwgTW9ja0NvbnRleHQgfSBmcm9tIFwic2FwL2ZlL3Rlc3QvVUk1TW9ja0hlbHBlclwiO1xuXG5kZXNjcmliZShcIktlZXAgQWxpdmUgSGVscGVyIFRlc3RpbmcgLSAjc3RvcmVDb250cm9sUmVmcmVzaFN0cmF0ZWd5Rm9ySGFzaFwiLCAoKSA9PiB7XG5cdGxldCBpbnRlcm5hbCE6IE1vY2tNb2RlbDtcblx0bGV0IHZpZXdEYXRhITogTW9ja01vZGVsO1xuXHRsZXQgY29udHJvbCE6IE1vY2tDb250cm9sO1xuXHRsZXQgb01vY2tHZXRNb2RlbCE6IGplc3QuU3B5SW5zdGFuY2U7XG5cdGxldCBvTW9ja0ludGVybmFsU2V0UHJvcGVydHkhOiBqZXN0LlNweUluc3RhbmNlO1xuXHRsZXQgb01vY2tWaWV3RGF0YUdldFByb3BlcnR5ITogamVzdC5TcHlJbnN0YW5jZTtcblx0bGV0IHJlZnJlc2hTdHJhdGVneVRvVGVzdCE6IFJlZnJlc2hTdHJhdGVnaWVzIHwgdW5kZWZpbmVkO1xuXG5cdGJlZm9yZUFsbChhc3luYyBmdW5jdGlvbigpIHtcblx0XHRpbnRlcm5hbCA9IG5ldyBNb2NrTW9kZWwoKTtcblx0XHR2aWV3RGF0YSA9IG5ldyBNb2NrTW9kZWwoKTtcblxuXHRcdGNvbnRyb2wgPSBuZXcgTW9ja0NvbnRyb2woKTtcblxuXHRcdC8vIG1vY2sgbW9kZWxcblx0XHRvTW9ja0dldE1vZGVsID0gamVzdC5zcHlPbihjb250cm9sLCBcImdldE1vZGVsXCIpO1xuXHRcdG9Nb2NrR2V0TW9kZWwubW9ja0ltcGxlbWVudGF0aW9uKG5hbWUgPT4ge1xuXHRcdFx0aWYgKG5hbWUgPT09IFwiaW50ZXJuYWxcIikge1xuXHRcdFx0XHRyZXR1cm4gaW50ZXJuYWw7XG5cdFx0XHR9IGVsc2UgaWYgKG5hbWUgPT09IFwidmlld0RhdGFcIikge1xuXHRcdFx0XHRyZXR1cm4gdmlld0RhdGE7XG5cdFx0XHR9XG5cdFx0fSk7XG5cblx0XHRvTW9ja0ludGVybmFsU2V0UHJvcGVydHkgPSBqZXN0LnNweU9uKGludGVybmFsLCBcInNldFByb3BlcnR5XCIpO1xuXHRcdG9Nb2NrVmlld0RhdGFHZXRQcm9wZXJ0eSA9IGplc3Quc3B5T24odmlld0RhdGEsIFwiZ2V0UHJvcGVydHlcIik7XG5cdFx0b01vY2tWaWV3RGF0YUdldFByb3BlcnR5Lm1vY2tJbXBsZW1lbnRhdGlvbihzUGF0aCA9PiAoc1BhdGggPT09IFBBVEhfVE9fU1RPUkUgPyByZWZyZXNoU3RyYXRlZ3lUb1Rlc3QgOiB1bmRlZmluZWQpKTtcblx0fSk7XG5cdGJlZm9yZUVhY2goYXN5bmMgZnVuY3Rpb24oKSB7XG5cdFx0Ly8gQ2xlYW4gSlNPTlxuXHRcdHJlZnJlc2hTdHJhdGVneVRvVGVzdCA9IHt9O1xuXHR9KTtcblxuXHRhZnRlckFsbChhc3luYyBmdW5jdGlvbigpIHtcblx0XHRqZXN0LnJlc3RvcmVBbGxNb2NrcygpO1xuXHR9KTtcblxuXHRTdG9yZVN0cmF0ZWd5VGVzdHMuZm9yRWFjaChvVGVzdERhdGEgPT4ge1xuXHRcdGl0KG9UZXN0RGF0YS50aXRsZSwgYXN5bmMgKCkgPT4ge1xuXHRcdFx0Ly8gQ2FzZXMgdG8gY29uc2lkZXJcblx0XHRcdHJlZnJlc2hTdHJhdGVneVRvVGVzdCA9IG9UZXN0RGF0YS5yZWZyZXNoU3RyYXRlZ2llcztcblx0XHRcdEtlZXBBbGl2ZUhlbHBlci5zdG9yZUNvbnRyb2xSZWZyZXNoU3RyYXRlZ3lGb3JIYXNoKChjb250cm9sIGFzIHVua25vd24pIGFzIENvbnRyb2wsIG9UZXN0RGF0YS5oYXNoKTtcblx0XHRcdGV4cGVjdChvTW9ja0ludGVybmFsU2V0UHJvcGVydHkpLnRvSGF2ZUJlZW5MYXN0Q2FsbGVkV2l0aChQQVRIX1RPX1NUT1JFLCBvVGVzdERhdGEucmVzdWx0KTtcblx0XHR9KTtcblx0fSk7XG59KTtcblxuZGVzY3JpYmUoXCJLZWVwIEFsaXZlIEhlbHBlciBUZXN0aW5nIC0gI2dldFJlZnJlc2hTdHJhdGVneUZvckludGVudFwiLCAoKSA9PiB7XG5cdGxldCByZWZyZXNoU3RyYXRlZ2llcyE6IFJlZnJlc2hTdHJhdGVnaWVzO1xuXHRsZXQgc2VtYW50aWNPYmplY3QhOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cdGxldCBhY3Rpb24hOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cdGJlZm9yZUVhY2goYXN5bmMgZnVuY3Rpb24oKSB7XG5cdFx0Ly8gQ2xlYW4gSlNPTlxuXHRcdHJlZnJlc2hTdHJhdGVnaWVzID0ge307XG5cdFx0c2VtYW50aWNPYmplY3QgPSB1bmRlZmluZWQ7XG5cdFx0YWN0aW9uID0gdW5kZWZpbmVkO1xuXHR9KTtcblxuXHRhZnRlckFsbChhc3luYyBmdW5jdGlvbigpIHtcblx0XHRqZXN0LnJlc3RvcmVBbGxNb2NrcygpO1xuXHR9KTtcblxuXHRSZWZyZXNoU3RyYXRlZ3lGb3JJbnRlbnRUZXN0cy5mb3JFYWNoKG9UZXN0RGF0YSA9PiB7XG5cdFx0aXQob1Rlc3REYXRhLnRpdGxlLCBhc3luYyAoKSA9PiB7XG5cdFx0XHQvLyBDYXNlcyB0byBjb25zaWRlclxuXHRcdFx0ZXhwZWN0KFxuXHRcdFx0XHRLZWVwQWxpdmVIZWxwZXIuZ2V0UmVmcmVzaFN0cmF0ZWd5Rm9ySW50ZW50KG9UZXN0RGF0YS5yZWZyZXNoU3RyYXRlZ2llcywgb1Rlc3REYXRhLnNlbWFudGljT2JqZWN0LCBvVGVzdERhdGEuYWN0aW9uKVxuXHRcdFx0KS50b0VxdWFsKG9UZXN0RGF0YS5yZXN1bHQpO1xuXHRcdH0pO1xuXHR9KTtcbn0pO1xuXG5kZXNjcmliZShcIktlZXAgQWxpdmUgSGVscGVyIFRlc3RpbmcgLSAjZ2V0Vmlld1JlZnJlc2hJbmZvXCIsICgpID0+IHtcblx0bGV0IHZpZXdEYXRhITogQmFzZU1hbmlmZXN0U2V0dGluZ3M7XG5cdGxldCB2aWV3ITogb2JqZWN0O1xuXHRsZXQgb01vY2tHZXRTdHJhdGVneSE6IGplc3QuU3B5SW5zdGFuY2U7XG5cdGJlZm9yZUFsbChhc3luYyBmdW5jdGlvbigpIHtcblx0XHR2aWV3RGF0YSA9IHt9IGFzIEJhc2VNYW5pZmVzdFNldHRpbmdzO1xuXHRcdG9Nb2NrR2V0U3RyYXRlZ3kgPSBqZXN0LnNweU9uKEtlZXBBbGl2ZUhlbHBlciwgXCJnZXRDb250cm9sUmVmcmVzaFN0cmF0ZWd5Rm9yQ29udGV4dFBhdGhcIik7XG5cdFx0b01vY2tHZXRTdHJhdGVneS5tb2NrUmV0dXJuVmFsdWUoamVzdC5mbigpKTtcblxuXHRcdHZpZXcgPSB7XG5cdFx0XHRnZXRWaWV3RGF0YTogKCkgPT4gdmlld0RhdGFcblx0XHR9O1xuXHR9KTtcblxuXHRhZnRlckFsbChhc3luYyBmdW5jdGlvbigpIHtcblx0XHR2aWV3RGF0YSA9IHt9IGFzIEJhc2VNYW5pZmVzdFNldHRpbmdzO1xuXHRcdGplc3QucmVzdG9yZUFsbE1vY2tzKCk7XG5cdH0pO1xuXG5cdGl0KFwiV2l0aCBjb250ZXh0IFBhdGhcIiwgYXN5bmMgKCkgPT4ge1xuXHRcdC8vIENhc2VzIHRvIGNvbnNpZGVyXG5cdFx0dmlld0RhdGEuY29udGV4dFBhdGggPSBcIi9TT1wiO1xuXHRcdEtlZXBBbGl2ZUhlbHBlci5nZXRWaWV3UmVmcmVzaEluZm8odmlldyBhcyBWaWV3KTtcblx0XHRleHBlY3Qob01vY2tHZXRTdHJhdGVneSkudG9IYXZlQmVlbkNhbGxlZFRpbWVzKDEpO1xuXHRcdGV4cGVjdChvTW9ja0dldFN0cmF0ZWd5KS50b0hhdmVCZWVuTGFzdENhbGxlZFdpdGgodmlldywgdmlld0RhdGE/LmNvbnRleHRQYXRoKTtcblx0fSk7XG5cblx0aXQoXCJXaXRoIGVudGl0eVNldFwiLCBhc3luYyAoKSA9PiB7XG5cdFx0Ly8gQ2FzZXMgdG8gY29uc2lkZXJcblx0XHR2aWV3RGF0YS5lbnRpdHlTZXQgPSBcIlNPXCI7XG5cdFx0S2VlcEFsaXZlSGVscGVyLmdldFZpZXdSZWZyZXNoSW5mbyh2aWV3IGFzIFZpZXcpO1xuXHRcdGV4cGVjdChvTW9ja0dldFN0cmF0ZWd5KS50b0hhdmVCZWVuQ2FsbGVkVGltZXMoMik7XG5cdFx0ZXhwZWN0KG9Nb2NrR2V0U3RyYXRlZ3kpLnRvSGF2ZUJlZW5MYXN0Q2FsbGVkV2l0aCh2aWV3LCBcIi9cIiArIHZpZXdEYXRhPy5lbnRpdHlTZXQpO1xuXHR9KTtcbn0pO1xuXG5kZXNjcmliZShcIktlZXAgQWxpdmUgSGVscGVyIFRlc3RpbmcgLSAjZ2V0Q29udHJvbFJlZnJlc2hTdHJhdGVneUZvckNvbnRleHRQYXRoXCIsICgpID0+IHtcblx0bGV0IGludGVybmFsITogTW9ja01vZGVsO1xuXHRsZXQgY29udHJvbCE6IE1vY2tDb250cm9sO1xuXHRsZXQgZGVmYXVsdE1vZGVsITogTW9ja01vZGVsO1xuXHRsZXQgbWV0YU1vZGVsITogTW9ja01ldGFNb2RlbDtcblx0bGV0IG9Nb2NrSW50ZXJuYWxHZXRQcm9wZXJ0eSE6IGplc3QuU3B5SW5zdGFuY2U7XG5cdGxldCBvTW9ja0dldE1vZGVsITogamVzdC5TcHlJbnN0YW5jZTtcblx0bGV0IG9Nb2NrR2V0TWV0YU1vZGVsITogamVzdC5TcHlJbnN0YW5jZTtcblx0bGV0IG9Nb2NrR2V0T2JqZWN0ITogamVzdC5TcHlJbnN0YW5jZTtcblx0bGV0IGVudGl0eVNldCE6IHN0cmluZyB8IHVuZGVmaW5lZDtcblxuXHRsZXQgcmVmcmVzaFN0cmF0ZWd5VG9UZXN0ITogU09SZWZyZXNoU3RyYXRlZ3kgfCB1bmRlZmluZWQ7XG5cblx0YmVmb3JlQWxsKGFzeW5jIGZ1bmN0aW9uKCkge1xuXHRcdGludGVybmFsID0gbmV3IE1vY2tNb2RlbCgpO1xuXHRcdGNvbnRyb2wgPSBuZXcgTW9ja0NvbnRyb2woKTtcblxuXHRcdGRlZmF1bHRNb2RlbCA9IG5ldyBNb2NrTW9kZWwoKTtcblx0XHRtZXRhTW9kZWwgPSBuZXcgTW9ja01ldGFNb2RlbCgpO1xuXG5cdFx0Ly8gbW9jayBtb2RlbFxuXHRcdG9Nb2NrR2V0TW9kZWwgPSBqZXN0LnNweU9uKGNvbnRyb2wsIFwiZ2V0TW9kZWxcIik7XG5cdFx0b01vY2tHZXRNb2RlbC5tb2NrSW1wbGVtZW50YXRpb24obmFtZSA9PiB7XG5cdFx0XHRpZiAobmFtZSA9PT0gXCJpbnRlcm5hbFwiKSB7XG5cdFx0XHRcdHJldHVybiBpbnRlcm5hbDtcblx0XHRcdH1cblx0XHRcdHJldHVybiBkZWZhdWx0TW9kZWw7XG5cdFx0fSk7XG5cblx0XHQvLyBtb2NrIGludGVybmFsIG1vZGVsIGFuZCByZWZyZXNoIHN0cmF0ZWd5XG5cdFx0b01vY2tJbnRlcm5hbEdldFByb3BlcnR5ID0gamVzdC5zcHlPbihpbnRlcm5hbCwgXCJnZXRQcm9wZXJ0eVwiKTtcblx0XHRvTW9ja0ludGVybmFsR2V0UHJvcGVydHkubW9ja0ltcGxlbWVudGF0aW9uKHNQYXRoID0+IChzUGF0aCA9PT0gUEFUSF9UT19TVE9SRSA/IHJlZnJlc2hTdHJhdGVneVRvVGVzdCA6IHVuZGVmaW5lZCkpO1xuXG5cdFx0Ly8gbW9jayBtZXRhTW9kZWwgYW5kIGdldE9iamVjdFxuXHRcdGRlZmF1bHRNb2RlbC5zZXRNZXRhTW9kZWwobWV0YU1vZGVsKTtcblx0XHRvTW9ja0dldE9iamVjdCA9IGplc3Quc3B5T24obWV0YU1vZGVsLCBcImdldE9iamVjdFwiKTtcblx0XHRvTW9ja0dldE9iamVjdC5tb2NrSW1wbGVtZW50YXRpb24oKCkgPT4gZW50aXR5U2V0KTtcblx0fSk7XG5cdGJlZm9yZUVhY2goYXN5bmMgZnVuY3Rpb24oKSB7XG5cdFx0Ly8gQ2xlYW4gSlNPTlxuXHRcdHJlZnJlc2hTdHJhdGVneVRvVGVzdCA9IHVuZGVmaW5lZDtcblx0XHRlbnRpdHlTZXQgPSBcIlwiO1xuXHR9KTtcblxuXHRhZnRlckFsbChhc3luYyBmdW5jdGlvbigpIHtcblx0XHRqZXN0LnJlc3RvcmVBbGxNb2NrcygpO1xuXHR9KTtcblxuXHRDb250cm9sUmVmcmVzaFN0cmF0ZWd5VGVzdHMuZm9yRWFjaChvVGVzdERhdGEgPT4ge1xuXHRcdGl0KG9UZXN0RGF0YS50aXRsZSwgYXN5bmMgKCkgPT4ge1xuXHRcdFx0Ly8gQ2FzZXMgdG8gY29uc2lkZXJcblx0XHRcdHJlZnJlc2hTdHJhdGVneVRvVGVzdCA9IG9UZXN0RGF0YS5yZWZyZXNoU3RyYXRlZ3k7XG5cdFx0XHRlbnRpdHlTZXQgPSBvVGVzdERhdGEuZW50aXR5U2V0O1xuXHRcdFx0ZXhwZWN0KEtlZXBBbGl2ZUhlbHBlci5nZXRDb250cm9sUmVmcmVzaFN0cmF0ZWd5Rm9yQ29udGV4dFBhdGgoKGNvbnRyb2wgYXMgdW5rbm93bikgYXMgQ29udHJvbCwgb1Rlc3REYXRhLmNvbnRleHRQYXRoKSkudG9FcXVhbChcblx0XHRcdFx0b1Rlc3REYXRhLnJlc3VsdFxuXHRcdFx0KTtcblx0XHR9KTtcblx0fSk7XG59KTtcblxuZGVzY3JpYmUoXCJLZWVwIEFsaXZlIEhlbHBlciBUZXN0aW5nIC0gI2dldENvbnRyb2xzRm9yUmVmcmVzaFwiLCAoKSA9PiB7XG5cdGxldCBpbnRlcm5hbCE6IE1vY2tNb2RlbDtcblx0bGV0IGFDb250cm9scyE6IE1vY2tDb250cm9sW107XG5cdGxldCB2aWV3ITogVmlldztcblx0bGV0IGRlZmF1bHRNb2RlbCE6IE1vY2tNb2RlbDtcblx0bGV0IG1ldGFNb2RlbCE6IE1vY2tNZXRhTW9kZWw7XG5cdGxldCBvTW9ja0ludGVybmFsR2V0UHJvcGVydHkhOiBqZXN0LlNweUluc3RhbmNlO1xuXHRsZXQgb01vY2tHZXRNb2RlbCE6IGplc3QuU3B5SW5zdGFuY2U7XG5cdGxldCBvTW9ja0dldE1ldGFNb2RlbCE6IGplc3QuU3B5SW5zdGFuY2U7XG5cdGxldCBvTW9ja0dldE9iamVjdCE6IGplc3QuU3B5SW5zdGFuY2U7XG5cdGxldCBlbnRpdHlTZXQhOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cdGxldCByZWZyZXNoU3RyYXRlZ3lUb1Rlc3QhOiBTT1JlZnJlc2hTdHJhdGVneSB8IHVuZGVmaW5lZDtcblxuXHRiZWZvcmVBbGwoYXN5bmMgZnVuY3Rpb24oKSB7XG5cdFx0aW50ZXJuYWwgPSBuZXcgTW9ja01vZGVsKCk7XG5cdFx0dmlldyA9IG5ldyBWaWV3KCk7XG5cdFx0ZGVmYXVsdE1vZGVsID0gbmV3IE1vY2tNb2RlbCgpO1xuXHRcdG1ldGFNb2RlbCA9IG5ldyBNb2NrTWV0YU1vZGVsKCk7XG5cblx0XHQvLyBjb250cm9sIG1vY2tzXG5cdFx0Y29uc3QgY29udHJvbDEgPSBuZXcgTW9ja0NvbnRyb2woKTtcblx0XHRjb25zdCBjb250cm9sMiA9IG5ldyBNb2NrQ29udHJvbCgpO1xuXHRcdGNvbnN0IG9Nb2NrQ29udHJvbDFEYXRhID0gamVzdC5zcHlPbihjb250cm9sMSwgXCJkYXRhXCIpO1xuXHRcdG9Nb2NrQ29udHJvbDFEYXRhLm1vY2tJbXBsZW1lbnRhdGlvbihzS2V5ID0+IChzS2V5ID09PSBcInRhcmdldENvbGxlY3Rpb25QYXRoXCIgPyBcIi9TT1wiIDogdW5kZWZpbmVkKSk7XG5cdFx0Y29uc3Qgb01vY2tDb250cm9sMkRhdGEgPSBqZXN0LnNweU9uKGNvbnRyb2wyLCBcImRhdGFcIik7XG5cdFx0b01vY2tDb250cm9sMkRhdGEubW9ja0ltcGxlbWVudGF0aW9uKHNLZXkgPT4gKHNLZXkgPT09IFwidGFyZ2V0Q29sbGVjdGlvblBhdGhcIiA/IFwiL1NPL19JdGVtXCIgOiB1bmRlZmluZWQpKTtcblx0XHRhQ29udHJvbHMgPSBbY29udHJvbDEsIGNvbnRyb2wyXTtcblxuXHRcdC8vIG1vY2sgbW9kZWxcblx0XHRvTW9ja0dldE1vZGVsID0gamVzdC5zcHlPbih2aWV3LCBcImdldE1vZGVsXCIpO1xuXHRcdG9Nb2NrR2V0TW9kZWwubW9ja0ltcGxlbWVudGF0aW9uKG5hbWUgPT4ge1xuXHRcdFx0aWYgKG5hbWUgPT09IFwiaW50ZXJuYWxcIikge1xuXHRcdFx0XHRyZXR1cm4gaW50ZXJuYWw7XG5cdFx0XHR9XG5cdFx0XHRyZXR1cm4gZGVmYXVsdE1vZGVsO1xuXHRcdH0pO1xuXG5cdFx0Ly8gbW9jayBpbnRlcm5hbCBtb2RlbCBhbmQgcmVmcmVzaCBzdHJhdGVneVxuXHRcdG9Nb2NrSW50ZXJuYWxHZXRQcm9wZXJ0eSA9IGplc3Quc3B5T24oaW50ZXJuYWwsIFwiZ2V0UHJvcGVydHlcIik7XG5cdFx0b01vY2tJbnRlcm5hbEdldFByb3BlcnR5Lm1vY2tJbXBsZW1lbnRhdGlvbihzUGF0aCA9PiAoc1BhdGggPT09IFBBVEhfVE9fU1RPUkUgPyByZWZyZXNoU3RyYXRlZ3lUb1Rlc3QgOiB1bmRlZmluZWQpKTtcblxuXHRcdC8vIG1vY2sgbWV0YU1vZGVsIGFuZCBnZXRPYmplY3Rcblx0XHRkZWZhdWx0TW9kZWwuc2V0TWV0YU1vZGVsKG1ldGFNb2RlbCk7XG5cdFx0b01vY2tHZXRPYmplY3QgPSBqZXN0LnNweU9uKG1ldGFNb2RlbCwgXCJnZXRPYmplY3RcIik7XG5cdFx0b01vY2tHZXRPYmplY3QubW9ja0ltcGxlbWVudGF0aW9uKCgpID0+IGVudGl0eVNldCk7XG5cdH0pO1xuXHRiZWZvcmVFYWNoKGFzeW5jIGZ1bmN0aW9uKCkge1xuXHRcdC8vIENsZWFuIEpTT05cblx0XHRyZWZyZXNoU3RyYXRlZ3lUb1Rlc3QgPSB1bmRlZmluZWQ7XG5cdFx0ZW50aXR5U2V0ID0gXCJcIjtcblx0fSk7XG5cblx0YWZ0ZXJBbGwoYXN5bmMgZnVuY3Rpb24oKSB7XG5cdFx0amVzdC5yZXN0b3JlQWxsTW9ja3MoKTtcblx0fSk7XG5cblx0Q29udHJvbHNGb3JSZWZyZXNoVGVzdHMuZm9yRWFjaChvVGVzdERhdGEgPT4ge1xuXHRcdGl0KG9UZXN0RGF0YS50aXRsZSwgYXN5bmMgKCkgPT4ge1xuXHRcdFx0Ly8gQ2FzZXMgdG8gY29uc2lkZXJcblx0XHRcdGNvbnN0IHJlc3VsdDogTW9ja0NvbnRyb2xbXSA9IG9UZXN0RGF0YS5yZXN1bHRDb250cm9sSW5kaWNlcy5tYXAoaWR4ID0+IGFDb250cm9sc1tpZHhdKTtcblxuXHRcdFx0ZW50aXR5U2V0ID0gb1Rlc3REYXRhLmVudGl0eVNldDtcblx0XHRcdHJlZnJlc2hTdHJhdGVneVRvVGVzdCA9IG9UZXN0RGF0YS5yZWZyZXNoU3RyYXRlZ3k7XG5cdFx0XHRleHBlY3QoS2VlcEFsaXZlSGVscGVyLmdldENvbnRyb2xzRm9yUmVmcmVzaCh2aWV3LCAoYUNvbnRyb2xzIGFzIHVua25vd24pIGFzIENvbnRyb2xbXSkpLnRvRXF1YWwocmVzdWx0KTtcblx0XHR9KTtcblx0fSk7XG59KTtcblxuZGVzY3JpYmUoXCJLZWVwIEFsaXZlIEhlbHBlciBUZXN0aW5nIC0gI3Jlc3RvcmVWaWV3XCIsICgpID0+IHtcblx0bGV0IGludGVybmFsITogTW9ja0NvbnRleHQ7XG5cdGxldCB2aWV3ITogVmlldztcblx0bGV0IG9Nb2NrSW50ZXJuYWxHZXRQcm9wZXJ0eSE6IGplc3QuU3B5SW5zdGFuY2U7XG5cdGxldCBvTW9ja0ludGVybmFsU2V0UHJvcGVydHkhOiBqZXN0LlNweUluc3RhbmNlO1xuXHRsZXQgb01vY2tCaW5kaW5nQ29udGV4dCE6IGplc3QuU3B5SW5zdGFuY2U7XG5cdGxldCBvTW9ja0NvbnRyb2xsZXIhOiBqZXN0LlNweUluc3RhbmNlO1xuXHRsZXQgb01vY2tHZXRJZCE6IGplc3QuU3B5SW5zdGFuY2U7XG5cdGxldCBvTW9ja0luZm9Mb2chOiBqZXN0LlNweUluc3RhbmNlO1xuXHRsZXQgcmVzdG9yZVN0YXR1cyE6IHN0cmluZztcblx0Y29uc3Qgc3B5UmVmcmVzaFJlc29sdmU6IGplc3QuTW9jayA9IGplc3QuZm4oKTtcblx0Y29uc3Qgc3B5UmVmcmVzaFJlamVjdDogamVzdC5Nb2NrID0gamVzdC5mbigpO1xuXHRjb25zdCBzcHlSZXN0b3JlOiBqZXN0Lk1vY2sgPSBqZXN0LmZuKCk7XG5cdGxldCB2aWV3U3RhdGU6IGFueSA9IHt9O1xuXHRiZWZvcmVBbGwoYXN5bmMgZnVuY3Rpb24oKSB7XG5cdFx0aW50ZXJuYWwgPSBuZXcgTW9ja0NvbnRleHQoe30pO1xuXHRcdHZpZXcgPSBuZXcgVmlldygpO1xuXHRcdHNweVJlZnJlc2hSZXNvbHZlLm1vY2tSZXNvbHZlZFZhbHVlKHt9KTtcblx0XHRzcHlSZWZyZXNoUmVqZWN0Lm1vY2tSZWplY3RlZFZhbHVlKHt9KTtcblxuXHRcdC8vIG1vY2sgdmlld1xuXHRcdG9Nb2NrQmluZGluZ0NvbnRleHQgPSBqZXN0LnNweU9uKHZpZXcsIFwiZ2V0QmluZGluZ0NvbnRleHRcIik7XG5cdFx0b01vY2tHZXRJZCA9IGplc3Quc3B5T24odmlldywgXCJnZXRJZFwiKTtcblx0XHRvTW9ja0dldElkLm1vY2tSZXR1cm5WYWx1ZShcIlwiKTtcblx0XHRvTW9ja0JpbmRpbmdDb250ZXh0Lm1vY2tSZXR1cm5WYWx1ZShpbnRlcm5hbCk7XG5cdFx0b01vY2tDb250cm9sbGVyID0gamVzdC5zcHlPbih2aWV3LCBcImdldENvbnRyb2xsZXJcIik7XG5cdFx0dmlld1N0YXRlID0ge1xuXHRcdFx0b25SZXN0b3JlOiBzcHlSZXN0b3JlXG5cdFx0fTtcblx0XHRvTW9ja0NvbnRyb2xsZXIubW9ja0ltcGxlbWVudGF0aW9uKCgpID0+ICh7XG5cdFx0XHR2aWV3U3RhdGU6IHZpZXdTdGF0ZVxuXHRcdH0pKTtcblxuXHRcdG9Nb2NrSW50ZXJuYWxHZXRQcm9wZXJ0eSA9IGplc3Quc3B5T24oaW50ZXJuYWwsIFwiZ2V0UHJvcGVydHlcIik7XG5cdFx0b01vY2tJbnRlcm5hbFNldFByb3BlcnR5ID0gamVzdC5zcHlPbihpbnRlcm5hbCwgXCJzZXRQcm9wZXJ0eVwiKTtcblx0XHRvTW9ja0ludGVybmFsR2V0UHJvcGVydHkubW9ja0ltcGxlbWVudGF0aW9uKHByb3AgPT4gKHByb3AgPT09IFwicmVzdG9yZVN0YXR1c1wiID8gcmVzdG9yZVN0YXR1cyA6IHVuZGVmaW5lZCkpO1xuXG5cdFx0Ly8gbW9jayBsb2dzXG5cdFx0b01vY2tJbmZvTG9nID0gamVzdC5zcHlPbihMb2csIFwiaW5mb1wiKTtcblx0XHRvTW9ja0luZm9Mb2cubW9ja0ltcGxlbWVudGF0aW9uKG1zZyA9PiBtc2cpO1xuXHR9KTtcblx0YmVmb3JlRWFjaChhc3luYyBmdW5jdGlvbigpIHtcblx0XHQvLyBDbGVhbiBKU09OXG5cdFx0cmVzdG9yZVN0YXR1cyA9IFwiXCI7XG5cdFx0dmlld1N0YXRlW1wicmVmcmVzaFZpZXdCaW5kaW5nc1wiXSA9IHVuZGVmaW5lZDtcblx0fSk7XG5cblx0YWZ0ZXJBbGwoYXN5bmMgZnVuY3Rpb24oKSB7XG5cdFx0amVzdC5yZXN0b3JlQWxsTW9ja3MoKTtcblx0fSk7XG5cdGl0KFwiUmVmcmVzaCBub3QgcGVuZGluZ1wiLCBhc3luYyAoKSA9PiB7XG5cdFx0cmVzdG9yZVN0YXR1cyA9IFwiZG9uZVwiO1xuXHRcdHZpZXdTdGF0ZVtcInJlZnJlc2hWaWV3QmluZGluZ3NcIl0gPSBzcHlSZWZyZXNoUmVzb2x2ZTtcblxuXHRcdGF3YWl0IEtlZXBBbGl2ZUhlbHBlci5yZXN0b3JlVmlldyh2aWV3KTtcblx0XHRleHBlY3Qoc3B5UmVmcmVzaFJlc29sdmUpLnRvSGF2ZUJlZW5DYWxsZWRUaW1lcygwKTtcblx0XHRleHBlY3Qoc3B5UmVzdG9yZSkudG9IYXZlQmVlbkNhbGxlZFRpbWVzKDApO1xuXHRcdGV4cGVjdChvTW9ja0ludGVybmFsU2V0UHJvcGVydHkpLnRvSGF2ZUJlZW5DYWxsZWRUaW1lcygwKTtcblx0fSk7XG5cdGl0KFwiUmVmcmVzaCBwZW5kaW5nKG5vIGhhbmRsZXIpIGFuZCByZWZyZXNoLCByZXN0b3JlIHN1Y2Nlc3NmdWxsXCIsIGFzeW5jICgpID0+IHtcblx0XHRyZXN0b3JlU3RhdHVzID0gXCJwZW5kaW5nXCI7XG5cdFx0dmlld1N0YXRlW1wicmVmcmVzaFZpZXdCaW5kaW5nc1wiXSA9IHVuZGVmaW5lZDtcblx0XHRhd2FpdCBLZWVwQWxpdmVIZWxwZXIucmVzdG9yZVZpZXcodmlldyk7XG5cblx0XHRleHBlY3Qoc3B5UmVmcmVzaFJlc29sdmUpLnRvSGF2ZUJlZW5DYWxsZWRUaW1lcygwKTtcblx0XHRleHBlY3Qoc3B5UmVmcmVzaFJlamVjdCkudG9IYXZlQmVlbkNhbGxlZFRpbWVzKDApO1xuXHRcdGV4cGVjdChvTW9ja0luZm9Mb2cpLnRvSGF2ZUJlZW5DYWxsZWRUaW1lcygwKTtcblx0XHRleHBlY3Qoc3B5UmVzdG9yZSkudG9IYXZlQmVlbkNhbGxlZFRpbWVzKDEpO1xuXHRcdGV4cGVjdChvTW9ja0ludGVybmFsU2V0UHJvcGVydHkpLnRvSGF2ZUJlZW5DYWxsZWRUaW1lcygxKTtcblx0XHRleHBlY3Qob01vY2tJbnRlcm5hbFNldFByb3BlcnR5KS50b0hhdmVCZWVuTGFzdENhbGxlZFdpdGgoXCJyZXN0b3JlU3RhdHVzXCIsIFwiZG9uZVwiKTtcblx0fSk7XG5cdGl0KFwiUmVmcmVzaCBwZW5kaW5nIGFuZCByZWZyZXNoLCByZXN0b3JlIHN1Y2Nlc3NmdWxsXCIsIGFzeW5jICgpID0+IHtcblx0XHRyZXN0b3JlU3RhdHVzID0gXCJwZW5kaW5nXCI7XG5cdFx0dmlld1N0YXRlW1wicmVmcmVzaFZpZXdCaW5kaW5nc1wiXSA9IHNweVJlZnJlc2hSZXNvbHZlO1xuXHRcdGF3YWl0IEtlZXBBbGl2ZUhlbHBlci5yZXN0b3JlVmlldyh2aWV3KTtcblxuXHRcdGV4cGVjdChzcHlSZWZyZXNoUmVzb2x2ZSkudG9IYXZlQmVlbkNhbGxlZFRpbWVzKDEpO1xuXHRcdGV4cGVjdChzcHlSZWZyZXNoUmVqZWN0KS50b0hhdmVCZWVuQ2FsbGVkVGltZXMoMCk7XG5cdFx0ZXhwZWN0KG9Nb2NrSW5mb0xvZykudG9IYXZlQmVlbkNhbGxlZFRpbWVzKDEpO1xuXHRcdGV4cGVjdChzcHlSZXN0b3JlKS50b0hhdmVCZWVuQ2FsbGVkVGltZXMoMik7XG5cdFx0ZXhwZWN0KG9Nb2NrSW50ZXJuYWxTZXRQcm9wZXJ0eSkudG9IYXZlQmVlbkNhbGxlZFRpbWVzKDIpO1xuXHRcdGV4cGVjdChvTW9ja0ludGVybmFsU2V0UHJvcGVydHkpLnRvSGF2ZUJlZW5MYXN0Q2FsbGVkV2l0aChcInJlc3RvcmVTdGF0dXNcIiwgXCJkb25lXCIpO1xuXHR9KTtcblxuXHRpdChcIlJlZnJlc2ggcGVuZGluZyBhbmQgcmVmcmVzaCB1bnN1Y2Nlc3NmdWxsLCByZXN0b3JlIHN1Y2Nlc3NmdWxsXCIsIGFzeW5jICgpID0+IHtcblx0XHRyZXN0b3JlU3RhdHVzID0gXCJwZW5kaW5nXCI7XG5cdFx0dmlld1N0YXRlW1wicmVmcmVzaFZpZXdCaW5kaW5nc1wiXSA9IHNweVJlZnJlc2hSZWplY3Q7XG5cdFx0YXdhaXQgS2VlcEFsaXZlSGVscGVyLnJlc3RvcmVWaWV3KHZpZXcpO1xuXG5cdFx0ZXhwZWN0KHNweVJlZnJlc2hSZXNvbHZlKS50b0hhdmVCZWVuQ2FsbGVkVGltZXMoMSk7XG5cdFx0ZXhwZWN0KHNweVJlZnJlc2hSZWplY3QpLnRvSGF2ZUJlZW5DYWxsZWRUaW1lcygxKTtcblx0XHRleHBlY3Qob01vY2tJbmZvTG9nKS50b0hhdmVCZWVuQ2FsbGVkVGltZXMoMSk7XG5cdFx0ZXhwZWN0KG9Nb2NrSW50ZXJuYWxTZXRQcm9wZXJ0eSkudG9IYXZlQmVlbkxhc3RDYWxsZWRXaXRoKFwicmVzdG9yZVN0YXR1c1wiLCBcImRvbmVcIik7XG5cdH0pO1xuXG5cdGl0KFwiUmVmcmVzaCBwZW5kaW5nIGFuZCByZWZyZXNoIHN1Y2Nlc3NmdWxsLCByZXN0b3JlIHVuc3VjY2Vzc2Z1bGxcIiwgYXN5bmMgKCkgPT4ge1xuXHRcdHJlc3RvcmVTdGF0dXMgPSBcInBlbmRpbmdcIjtcblx0XHR2aWV3U3RhdGVbXCJyZWZyZXNoVmlld0JpbmRpbmdzXCJdID0gc3B5UmVmcmVzaFJlc29sdmU7XG5cdFx0c3B5UmVzdG9yZS5tb2NrSW1wbGVtZW50YXRpb24oKCkgPT4ge1xuXHRcdFx0Y29uc3QgZXJyb3IgPSBuZXcgRXJyb3IoXCJyZXN0b3JlIGVycm9yXCIpO1xuXHRcdFx0dGhyb3cgZXJyb3I7XG5cdFx0fSk7XG5cdFx0YXdhaXQgS2VlcEFsaXZlSGVscGVyLnJlc3RvcmVWaWV3KHZpZXcpO1xuXG5cdFx0ZXhwZWN0KHNweVJlZnJlc2hSZXNvbHZlKS50b0hhdmVCZWVuQ2FsbGVkVGltZXMoMik7XG5cdFx0ZXhwZWN0KHNweVJlZnJlc2hSZWplY3QpLnRvSGF2ZUJlZW5DYWxsZWRUaW1lcygxKTtcblx0XHRleHBlY3Qob01vY2tJbmZvTG9nKS50b0hhdmVCZWVuQ2FsbGVkVGltZXMoMik7XG5cdFx0ZXhwZWN0KHNweVJlc3RvcmUpLnRvSGF2ZUJlZW5DYWxsZWRUaW1lcygzKTtcblx0XHRleHBlY3Qob01vY2tJbnRlcm5hbFNldFByb3BlcnR5KS50b0hhdmVCZWVuQ2FsbGVkVGltZXMoMik7XG5cdH0pO1xuXG5cdGl0KFwiUmVmcmVzaCBwZW5kaW5nIGFuZCByZWZyZXNoIGFuZCByZXN0b3JlIHVuc3VjY2Vzc2Z1bGxcIiwgYXN5bmMgKCkgPT4ge1xuXHRcdHJlc3RvcmVTdGF0dXMgPSBcInBlbmRpbmdcIjtcblx0XHR2aWV3U3RhdGVbXCJyZWZyZXNoVmlld0JpbmRpbmdzXCJdID0gc3B5UmVmcmVzaFJlamVjdDtcblx0XHRzcHlSZXN0b3JlLm1vY2tJbXBsZW1lbnRhdGlvbigoKSA9PiB7XG5cdFx0XHRjb25zdCBlcnJvciA9IG5ldyBFcnJvcihcInJlc3RvcmUgZXJyb3JcIik7XG5cdFx0XHR0aHJvdyBlcnJvcjtcblx0XHR9KTtcblx0XHRhd2FpdCBLZWVwQWxpdmVIZWxwZXIucmVzdG9yZVZpZXcodmlldyk7XG5cblx0XHRleHBlY3Qoc3B5UmVmcmVzaFJlc29sdmUpLnRvSGF2ZUJlZW5DYWxsZWRUaW1lcygyKTtcblx0XHRleHBlY3Qoc3B5UmVmcmVzaFJlamVjdCkudG9IYXZlQmVlbkNhbGxlZFRpbWVzKDIpO1xuXHRcdGV4cGVjdChvTW9ja0luZm9Mb2cpLnRvSGF2ZUJlZW5DYWxsZWRUaW1lcygyKTtcblx0XHRleHBlY3Qoc3B5UmVzdG9yZSkudG9IYXZlQmVlbkNhbGxlZFRpbWVzKDMpO1xuXHRcdGV4cGVjdChvTW9ja0ludGVybmFsU2V0UHJvcGVydHkpLnRvSGF2ZUJlZW5DYWxsZWRUaW1lcygyKTtcblx0fSk7XG59KTtcbiJdfQ==
|