@grafana/scenes 6.7.0--canary.1091.14350229100.0 → 6.8.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/CHANGELOG.md +25 -0
- package/dist/esm/components/layout/CSSGrid/SceneCSSGridItem.js +33 -0
- package/dist/esm/dist/esm/behaviors/CursorSync.js +76 -0
- package/dist/esm/dist/esm/behaviors/LiveNowTimer.js +44 -0
- package/dist/esm/dist/esm/behaviors/SceneQueryController.js +14 -0
- package/dist/esm/dist/esm/components/EmbeddedScene.js +59 -0
- package/dist/esm/dist/esm/components/NestedScene.js +95 -0
- package/dist/esm/dist/esm/components/SceneApp/SceneApp.js +27 -0
- package/dist/esm/dist/esm/components/SceneApp/SceneAppPage.js +176 -0
- package/dist/esm/dist/esm/components/SceneApp/SceneAppPageView.js +104 -0
- package/dist/esm/dist/esm/components/SceneApp/utils.js +42 -0
- package/dist/esm/dist/esm/components/SceneByFrameRepeater.js +41 -0
- package/dist/esm/dist/esm/components/SceneByVariableRepeater.js +55 -0
- package/dist/esm/dist/esm/components/SceneCanvasText.js +32 -0
- package/dist/esm/dist/esm/components/SceneControlsSpacer.js +17 -0
- package/dist/esm/dist/esm/components/SceneDebugger/DebugDetails.js +82 -0
- package/dist/esm/dist/esm/components/SceneDebugger/DebugTreeNode.js +72 -0
- package/dist/esm/dist/esm/components/SceneDebugger/SceneDebugger.js +77 -0
- package/dist/esm/dist/esm/components/SceneReactObject.js +34 -0
- package/dist/esm/dist/esm/components/SceneRefreshPicker.js +205 -0
- package/dist/esm/dist/esm/components/SceneTimePicker.js +139 -0
- package/dist/esm/dist/esm/components/SceneTimeRangeCompare.js +240 -0
- package/dist/esm/dist/esm/components/SceneToolbarButton.js +33 -0
- package/dist/esm/dist/esm/components/VizPanel/VizPanel.js +406 -0
- package/dist/esm/dist/esm/components/VizPanel/VizPanelExploreButton.js +44 -0
- package/dist/esm/dist/esm/components/VizPanel/VizPanelMenu.js +59 -0
- package/dist/esm/dist/esm/components/VizPanel/VizPanelRenderer.js +285 -0
- package/dist/esm/dist/esm/components/VizPanel/VizPanelSeriesLimit.js +45 -0
- package/dist/esm/dist/esm/components/VizPanel/colorSeriesConfigFactory.js +72 -0
- package/dist/esm/dist/esm/components/VizPanel/registerRuntimePanelPlugin.js +11 -0
- package/dist/esm/dist/esm/components/VizPanel/seriesVisibilityConfigFactory.js +164 -0
- package/dist/esm/dist/esm/components/layout/CSSGrid/SceneCSSGridLayout.js +124 -0
- package/dist/esm/dist/esm/components/layout/LazyLoader.js +103 -0
- package/dist/esm/dist/esm/components/layout/SceneFlexLayout.js +135 -0
- package/dist/esm/dist/esm/components/layout/grid/SceneGridItem.js +30 -0
- package/dist/esm/dist/esm/components/layout/grid/SceneGridLayout.js +283 -0
- package/dist/esm/dist/esm/components/layout/grid/SceneGridLayoutRenderer.js +178 -0
- package/dist/esm/dist/esm/components/layout/grid/SceneGridRow.js +190 -0
- package/dist/esm/dist/esm/components/layout/grid/constants.js +7 -0
- package/dist/esm/dist/esm/components/layout/grid/utils.js +36 -0
- package/dist/esm/dist/esm/components/layout/split/SplitLayout.js +17 -0
- package/dist/esm/dist/esm/components/layout/split/SplitLayoutRenderer.js +29 -0
- package/dist/esm/dist/esm/components/layout/split/Splitter.js +386 -0
- package/dist/esm/dist/esm/core/SceneComponentWrapper.js +57 -0
- package/dist/esm/dist/esm/core/SceneDataNode.js +43 -0
- package/dist/esm/dist/esm/core/SceneObjectBase.js +286 -0
- package/dist/esm/dist/esm/core/SceneObjectRef.js +32 -0
- package/dist/esm/dist/esm/core/SceneTimeRange.js +231 -0
- package/dist/esm/dist/esm/core/events.js +11 -0
- package/dist/esm/dist/esm/core/sceneGraph/getTimeRange.js +10 -0
- package/dist/esm/dist/esm/core/sceneGraph/index.js +25 -0
- package/dist/esm/dist/esm/core/sceneGraph/sceneGraph.js +178 -0
- package/dist/esm/dist/esm/core/sceneGraph/utils.js +64 -0
- package/dist/esm/dist/esm/core/types.js +15 -0
- package/dist/esm/dist/esm/querying/DataLayersMerger.js +46 -0
- package/dist/esm/dist/esm/querying/ExtraQueryProvider.js +6 -0
- package/dist/esm/dist/esm/querying/RuntimeDataSource.js +6 -0
- package/dist/esm/dist/esm/querying/SceneDataLayerSet.js +100 -0
- package/dist/esm/dist/esm/querying/SceneQueryRunner.js +468 -0
- package/dist/esm/dist/esm/querying/extraQueryProcessingOperator.js +46 -0
- package/dist/esm/dist/esm/querying/getEnrichedDataRequest.js +12 -0
- package/dist/esm/dist/esm/querying/layers/SceneDataLayerBase.js +112 -0
- package/dist/esm/dist/esm/querying/layers/SceneDataLayerControls.js +51 -0
- package/dist/esm/dist/esm/querying/layers/annotations/AnnotationsDataLayer.js +130 -0
- package/dist/esm/dist/esm/querying/layers/annotations/filterAnnotations.js +85 -0
- package/dist/esm/dist/esm/querying/layers/annotations/standardAnnotationQuery.js +121 -0
- package/dist/esm/dist/esm/querying/layers/annotations/standardAnnotationsSupport.js +211 -0
- package/dist/esm/dist/esm/querying/layers/annotations/utils.js +77 -0
- package/dist/esm/dist/esm/querying/registerQueryWithController.js +41 -0
- package/dist/esm/dist/esm/services/SceneObjectUrlSyncConfig.js +30 -0
- package/dist/esm/dist/esm/services/UniqueUrlKeyMapper.js +45 -0
- package/dist/esm/dist/esm/services/UrlSyncManager.js +167 -0
- package/dist/esm/dist/esm/services/useUrlSync.js +29 -0
- package/dist/esm/dist/esm/services/utils.js +71 -0
- package/dist/esm/dist/esm/utils/ControlsLabel.js +107 -0
- package/dist/esm/dist/esm/utils/LoadingIndicator.js +19 -0
- package/dist/esm/dist/esm/utils/SafeSerializableSceneObject.js +39 -0
- package/dist/esm/dist/esm/utils/compatibility/setWindowGrafanaSceneContext.js +16 -0
- package/dist/esm/dist/esm/utils/date.js +15 -0
- package/dist/esm/dist/esm/utils/evaluateTimeRange.js +16 -0
- package/dist/esm/dist/esm/utils/explore.js +47 -0
- package/dist/esm/dist/esm/utils/getCompareSeriesRefId.js +4 -0
- package/dist/esm/dist/esm/utils/getDataSource.js +18 -0
- package/dist/esm/dist/esm/utils/getMessageFromError.js +24 -0
- package/dist/esm/dist/esm/utils/metricTree.js +53 -0
- package/dist/esm/dist/esm/utils/parseUrlParam.js +41 -0
- package/dist/esm/dist/esm/utils/utils.js +11 -0
- package/dist/esm/dist/esm/utils/wrapInSafeSerializableSceneObject.js +30 -0
- package/dist/esm/dist/esm/utils/writeSceneLog.js +12 -0
- package/dist/esm/dist/esm/variables/VariableDependencyConfig.js +150 -0
- package/dist/esm/dist/esm/variables/VariableValueRecorder.js +71 -0
- package/dist/esm/dist/esm/variables/adhoc/AdHocFilterBuilder.js +24 -0
- package/dist/esm/dist/esm/variables/adhoc/AdHocFilterRenderer.js +303 -0
- package/dist/esm/dist/esm/variables/adhoc/AdHocFiltersCombobox/AdHocFilterPill.js +162 -0
- package/dist/esm/dist/esm/variables/adhoc/AdHocFiltersCombobox/AdHocFiltersAlwaysWipCombobox.js +20 -0
- package/dist/esm/dist/esm/variables/adhoc/AdHocFiltersCombobox/AdHocFiltersCombobox.js +640 -0
- package/dist/esm/dist/esm/variables/adhoc/AdHocFiltersCombobox/AdHocFiltersComboboxRenderer.js +65 -0
- package/dist/esm/dist/esm/variables/adhoc/AdHocFiltersCombobox/DropdownItem.js +146 -0
- package/dist/esm/dist/esm/variables/adhoc/AdHocFiltersCombobox/MultiValuePill.js +114 -0
- package/dist/esm/dist/esm/variables/adhoc/AdHocFiltersCombobox/useFloatingInteractions.js +68 -0
- package/dist/esm/dist/esm/variables/adhoc/AdHocFiltersCombobox/utils.js +146 -0
- package/dist/esm/dist/esm/variables/adhoc/AdHocFiltersVariable.js +289 -0
- package/dist/esm/dist/esm/variables/adhoc/AdHocFiltersVariableUrlSyncHandler.js +76 -0
- package/dist/esm/dist/esm/variables/adhoc/getAdhocOptionSearcher.js +13 -0
- package/dist/esm/dist/esm/variables/adhoc/patchGetAdhocFilters.js +47 -0
- package/dist/esm/dist/esm/variables/components/VariableValueControl.js +23 -0
- package/dist/esm/dist/esm/variables/components/VariableValueInput.js +33 -0
- package/dist/esm/dist/esm/variables/components/VariableValueSelect.js +228 -0
- package/dist/esm/dist/esm/variables/components/VariableValueSelectors.js +72 -0
- package/dist/esm/dist/esm/variables/components/getOptionSearcher.js +15 -0
- package/dist/esm/dist/esm/variables/constants.js +9 -0
- package/dist/esm/dist/esm/variables/getEnrichedFiltersRequest.js +12 -0
- package/dist/esm/dist/esm/variables/groupby/GroupByVariable.js +259 -0
- package/dist/esm/dist/esm/variables/groupby/GroupByVariableUrlSyncHandler.js +63 -0
- package/dist/esm/dist/esm/variables/groupby/findActiveGroupByVariablesByUid.js +13 -0
- package/dist/esm/dist/esm/variables/interpolation/ScopedVarsVariable.js +40 -0
- package/dist/esm/dist/esm/variables/interpolation/defaults.js +21 -0
- package/dist/esm/dist/esm/variables/interpolation/fieldAccessorCache.js +13 -0
- package/dist/esm/dist/esm/variables/interpolation/formatRegistry.js +296 -0
- package/dist/esm/dist/esm/variables/interpolation/sceneInterpolator.js +87 -0
- package/dist/esm/dist/esm/variables/lookupVariable.js +20 -0
- package/dist/esm/dist/esm/variables/macros/AllVariablesMacro.js +57 -0
- package/dist/esm/dist/esm/variables/macros/contextMacros.js +43 -0
- package/dist/esm/dist/esm/variables/macros/dataMacros.js +134 -0
- package/dist/esm/dist/esm/variables/macros/index.js +26 -0
- package/dist/esm/dist/esm/variables/macros/templateProxies.js +51 -0
- package/dist/esm/dist/esm/variables/macros/timeMacros.js +86 -0
- package/dist/esm/dist/esm/variables/macros/types.js +11 -0
- package/dist/esm/dist/esm/variables/macros/urlMacros.js +56 -0
- package/dist/esm/dist/esm/variables/sets/SceneVariableSet.js +254 -0
- package/dist/esm/dist/esm/variables/types.js +11 -0
- package/dist/esm/dist/esm/variables/utils.js +172 -0
- package/dist/esm/dist/esm/variables/variants/ConstantVariable.js +38 -0
- package/dist/esm/dist/esm/variables/variants/CustomVariable.js +60 -0
- package/dist/esm/dist/esm/variables/variants/DataSourceVariable.js +88 -0
- package/dist/esm/dist/esm/variables/variants/IntervalVariable.js +117 -0
- package/dist/esm/dist/esm/variables/variants/MultiValueVariable.js +295 -0
- package/dist/esm/dist/esm/variables/variants/TestVariable.js +117 -0
- package/dist/esm/dist/esm/variables/variants/TextBoxVariable.js +61 -0
- package/dist/esm/dist/esm/variables/variants/query/QueryVariable.js +139 -0
- package/dist/esm/dist/esm/variables/variants/query/createQueryVariableRunner.js +129 -0
- package/dist/esm/dist/esm/variables/variants/query/guards.js +28 -0
- package/dist/esm/dist/esm/variables/variants/query/toMetricFindValues.js +96 -0
- package/dist/esm/dist/esm/variables/variants/query/utils.js +124 -0
- package/dist/esm/index.js +1 -1
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/querying/DataProviderSharer.js +39 -0
- package/dist/esm/src/behaviors/ActWhenVariableChanged.js +27 -0
- package/dist/esm/src/behaviors/CursorSync.js +76 -0
- package/dist/esm/src/behaviors/LiveNowTimer.js +44 -0
- package/dist/esm/src/behaviors/SceneQueryController.js +60 -0
- package/dist/esm/src/behaviors/index.js +5 -0
- package/dist/esm/src/components/EmbeddedScene.js +59 -0
- package/dist/esm/src/components/NestedScene.js +95 -0
- package/dist/esm/src/components/SceneApp/SceneApp.js +37 -0
- package/dist/esm/src/components/SceneApp/SceneAppPage.js +176 -0
- package/dist/esm/src/components/SceneApp/SceneAppPageView.js +104 -0
- package/dist/esm/src/components/SceneApp/utils.js +42 -0
- package/dist/esm/src/components/SceneByFrameRepeater.js +41 -0
- package/dist/esm/src/components/SceneByVariableRepeater.js +55 -0
- package/dist/esm/src/components/SceneCanvasText.js +32 -0
- package/dist/esm/src/components/SceneControlsSpacer.js +17 -0
- package/dist/esm/src/components/SceneDebugger/DebugDetails.js +82 -0
- package/dist/esm/src/components/SceneDebugger/DebugTreeNode.js +72 -0
- package/dist/esm/src/components/SceneDebugger/SceneDebugger.js +77 -0
- package/dist/esm/src/components/SceneReactObject.js +34 -0
- package/dist/esm/src/components/SceneRefreshPicker.js +205 -0
- package/dist/esm/src/components/SceneTimePicker.js +139 -0
- package/dist/esm/src/components/SceneTimeRangeCompare.js +240 -0
- package/dist/esm/src/components/SceneToolbarButton.js +33 -0
- package/dist/esm/src/components/VizPanel/VizPanel.js +406 -0
- package/dist/esm/src/components/VizPanel/VizPanelExploreButton.js +44 -0
- package/dist/esm/src/components/VizPanel/VizPanelMenu.js +59 -0
- package/dist/esm/src/components/VizPanel/VizPanelRenderer.js +285 -0
- package/dist/esm/src/components/VizPanel/VizPanelSeriesLimit.js +45 -0
- package/dist/esm/src/components/VizPanel/colorSeriesConfigFactory.js +72 -0
- package/dist/esm/src/components/VizPanel/registerRuntimePanelPlugin.js +56 -0
- package/dist/esm/src/components/VizPanel/seriesVisibilityConfigFactory.js +164 -0
- package/dist/esm/src/components/layout/CSSGrid/SceneCSSGridLayout.js +124 -0
- package/dist/esm/src/components/layout/LazyLoader.js +103 -0
- package/dist/esm/src/components/layout/SceneFlexLayout.js +135 -0
- package/dist/esm/src/components/layout/grid/SceneGridItem.js +30 -0
- package/dist/esm/src/components/layout/grid/SceneGridLayout.js +283 -0
- package/dist/esm/src/components/layout/grid/SceneGridLayoutRenderer.js +178 -0
- package/dist/esm/src/components/layout/grid/SceneGridRow.js +190 -0
- package/dist/esm/src/components/layout/grid/constants.js +7 -0
- package/dist/esm/src/components/layout/grid/utils.js +36 -0
- package/dist/esm/src/components/layout/split/SplitLayout.js +17 -0
- package/dist/esm/src/components/layout/split/SplitLayoutRenderer.js +29 -0
- package/dist/esm/src/components/layout/split/Splitter.js +386 -0
- package/dist/esm/src/core/PanelBuilders/FieldConfigBuilder.js +100 -0
- package/dist/esm/src/core/PanelBuilders/FieldConfigBuilders.js +75 -0
- package/dist/esm/src/core/PanelBuilders/FieldConfigOverridesBuilder.js +75 -0
- package/dist/esm/src/core/PanelBuilders/PanelOptionsBuilder.js +22 -0
- package/dist/esm/src/core/PanelBuilders/PanelOptionsBuilders.js +85 -0
- package/dist/esm/src/core/PanelBuilders/StandardFieldConfigBuilders.js +52 -0
- package/dist/esm/src/core/PanelBuilders/VizConfigBuilder.js +78 -0
- package/dist/esm/src/core/PanelBuilders/VizConfigBuilders.js +114 -0
- package/dist/esm/src/core/PanelBuilders/VizPanelBuilder.js +162 -0
- package/dist/esm/src/core/PanelBuilders/index.js +116 -0
- package/dist/esm/src/core/SceneComponentWrapper.js +57 -0
- package/dist/esm/src/core/SceneDataNode.js +43 -0
- package/dist/esm/src/core/SceneObjectBase.js +286 -0
- package/dist/esm/src/core/SceneObjectRef.js +32 -0
- package/dist/esm/src/core/SceneTimeRange.js +231 -0
- package/dist/esm/src/core/SceneTimeRangeTransformerBase.js +35 -0
- package/dist/esm/src/core/SceneTimeZoneOverride.js +63 -0
- package/dist/esm/src/core/events.js +11 -0
- package/dist/esm/src/core/sceneGraph/getTimeRange.js +10 -0
- package/dist/esm/src/core/sceneGraph/index.js +25 -0
- package/dist/esm/src/core/sceneGraph/sceneGraph.js +178 -0
- package/dist/esm/src/core/sceneGraph/utils.js +64 -0
- package/dist/esm/src/core/types.js +15 -0
- package/dist/esm/src/index.js +108 -0
- package/dist/esm/src/querying/DataLayersMerger.js +46 -0
- package/dist/esm/src/querying/DataProviderProxy.js +37 -0
- package/dist/esm/src/querying/DataProviderSharer.js +108 -0
- package/dist/esm/src/querying/ExtraQueryProvider.js +6 -0
- package/dist/esm/src/querying/RuntimeDataSource.js +49 -0
- package/dist/esm/src/querying/SceneDataLayerSet.js +100 -0
- package/dist/esm/src/querying/SceneDataTransformer.js +178 -0
- package/dist/esm/src/querying/SceneQueryRunner.js +468 -0
- package/dist/esm/src/querying/extraQueryProcessingOperator.js +46 -0
- package/dist/esm/src/querying/getEnrichedDataRequest.js +12 -0
- package/dist/esm/src/querying/layers/SceneDataLayerBase.js +112 -0
- package/dist/esm/src/querying/layers/SceneDataLayerControls.js +51 -0
- package/dist/esm/src/querying/layers/annotations/AnnotationsDataLayer.js +130 -0
- package/dist/esm/src/querying/layers/annotations/filterAnnotations.js +85 -0
- package/dist/esm/src/querying/layers/annotations/standardAnnotationQuery.js +121 -0
- package/dist/esm/src/querying/layers/annotations/standardAnnotationsSupport.js +211 -0
- package/dist/esm/src/querying/layers/annotations/utils.js +77 -0
- package/dist/esm/src/querying/layers/index.js +2 -0
- package/dist/esm/src/querying/registerQueryWithController.js +41 -0
- package/dist/esm/src/services/SceneObjectUrlSyncConfig.js +30 -0
- package/dist/esm/src/services/UniqueUrlKeyMapper.js +45 -0
- package/dist/esm/src/services/UrlSyncContextProvider.js +17 -0
- package/dist/esm/src/services/UrlSyncManager.js +167 -0
- package/dist/esm/src/services/useUrlSync.js +29 -0
- package/dist/esm/src/services/utils.js +75 -0
- package/dist/esm/src/utils/ControlsLabel.js +107 -0
- package/dist/esm/src/utils/LoadingIndicator.js +19 -0
- package/dist/esm/src/utils/SafeSerializableSceneObject.js +39 -0
- package/dist/esm/src/utils/compatibility/setWindowGrafanaSceneContext.js +16 -0
- package/dist/esm/src/utils/date.js +15 -0
- package/dist/esm/src/utils/evaluateTimeRange.js +16 -0
- package/dist/esm/src/utils/explore.js +47 -0
- package/dist/esm/src/utils/getCompareSeriesRefId.js +4 -0
- package/dist/esm/src/utils/getDataSource.js +18 -0
- package/dist/esm/src/utils/getMessageFromError.js +24 -0
- package/dist/esm/src/utils/metricTree.js +53 -0
- package/dist/esm/src/utils/parseUrlParam.js +41 -0
- package/dist/esm/src/utils/utils.js +11 -0
- package/dist/esm/src/utils/wrapInSafeSerializableSceneObject.js +30 -0
- package/dist/esm/src/utils/writeSceneLog.js +12 -0
- package/dist/esm/src/variables/VariableDependencyConfig.js +150 -0
- package/dist/esm/src/variables/VariableValueRecorder.js +71 -0
- package/dist/esm/src/variables/adhoc/AdHocFilterBuilder.js +24 -0
- package/dist/esm/src/variables/adhoc/AdHocFilterRenderer.js +303 -0
- package/dist/esm/src/variables/adhoc/AdHocFiltersCombobox/AdHocFilterPill.js +162 -0
- package/dist/esm/src/variables/adhoc/AdHocFiltersCombobox/AdHocFiltersAlwaysWipCombobox.js +20 -0
- package/dist/esm/src/variables/adhoc/AdHocFiltersCombobox/AdHocFiltersCombobox.js +640 -0
- package/dist/esm/src/variables/adhoc/AdHocFiltersCombobox/AdHocFiltersComboboxRenderer.js +65 -0
- package/dist/esm/src/variables/adhoc/AdHocFiltersCombobox/DropdownItem.js +146 -0
- package/dist/esm/src/variables/adhoc/AdHocFiltersCombobox/MultiValuePill.js +114 -0
- package/dist/esm/src/variables/adhoc/AdHocFiltersCombobox/useFloatingInteractions.js +68 -0
- package/dist/esm/src/variables/adhoc/AdHocFiltersCombobox/utils.js +146 -0
- package/dist/esm/src/variables/adhoc/AdHocFiltersVariable.js +289 -0
- package/dist/esm/src/variables/adhoc/AdHocFiltersVariableUrlSyncHandler.js +76 -0
- package/dist/esm/src/variables/adhoc/getAdhocOptionSearcher.js +13 -0
- package/dist/esm/src/variables/adhoc/patchGetAdhocFilters.js +47 -0
- package/dist/esm/src/variables/components/VariableValueControl.js +23 -0
- package/dist/esm/src/variables/components/VariableValueInput.js +33 -0
- package/dist/esm/src/variables/components/VariableValueSelect.js +228 -0
- package/dist/esm/src/variables/components/VariableValueSelectors.js +72 -0
- package/dist/esm/src/variables/components/getOptionSearcher.js +15 -0
- package/dist/esm/src/variables/constants.js +9 -0
- package/dist/esm/src/variables/getEnrichedFiltersRequest.js +12 -0
- package/dist/esm/src/variables/groupby/GroupByVariable.js +259 -0
- package/dist/esm/src/variables/groupby/GroupByVariableUrlSyncHandler.js +63 -0
- package/dist/esm/src/variables/groupby/findActiveGroupByVariablesByUid.js +13 -0
- package/dist/esm/src/variables/interpolation/ScopedVarsVariable.js +40 -0
- package/dist/esm/src/variables/interpolation/defaults.js +21 -0
- package/dist/esm/src/variables/interpolation/fieldAccessorCache.js +13 -0
- package/dist/esm/src/variables/interpolation/formatRegistry.js +296 -0
- package/dist/esm/src/variables/interpolation/sceneInterpolator.js +87 -0
- package/dist/esm/src/variables/lookupVariable.js +20 -0
- package/dist/esm/src/variables/macros/AllVariablesMacro.js +57 -0
- package/dist/esm/src/variables/macros/contextMacros.js +43 -0
- package/dist/esm/src/variables/macros/dataMacros.js +134 -0
- package/dist/esm/src/variables/macros/index.js +35 -0
- package/dist/esm/src/variables/macros/templateProxies.js +51 -0
- package/dist/esm/src/variables/macros/timeMacros.js +86 -0
- package/dist/esm/src/variables/macros/types.js +11 -0
- package/dist/esm/src/variables/macros/urlMacros.js +56 -0
- package/dist/esm/src/variables/sets/SceneVariableSet.js +254 -0
- package/dist/esm/src/variables/types.js +11 -0
- package/dist/esm/src/variables/utils.js +172 -0
- package/dist/esm/src/variables/variants/ConstantVariable.js +38 -0
- package/dist/esm/src/variables/variants/CustomVariable.js +60 -0
- package/dist/esm/src/variables/variants/DataSourceVariable.js +88 -0
- package/dist/esm/src/variables/variants/IntervalVariable.js +117 -0
- package/dist/esm/src/variables/variants/JsonVariable.js +193 -0
- package/dist/esm/src/variables/variants/LocalValueVariable.js +56 -0
- package/dist/esm/src/variables/variants/MultiValueVariable.js +295 -0
- package/dist/esm/src/variables/variants/TestVariable.js +117 -0
- package/dist/esm/src/variables/variants/TextBoxVariable.js +61 -0
- package/dist/esm/src/variables/variants/guards.js +27 -0
- package/dist/esm/src/variables/variants/query/QueryVariable.js +139 -0
- package/dist/esm/src/variables/variants/query/createQueryVariableRunner.js +129 -0
- package/dist/esm/src/variables/variants/query/guards.js +28 -0
- package/dist/esm/src/variables/variants/query/toMetricFindValues.js +96 -0
- package/dist/esm/src/variables/variants/query/utils.js +124 -0
- package/dist/esm/variables/components/VariableValueSelect.js +13 -9
- package/dist/esm/variables/components/VariableValueSelect.js.map +1 -1
- package/dist/esm/variables/variants/ConstantVariable.js +22 -0
- package/dist/esm/variables/variants/ConstantVariable.js.map +1 -1
- package/dist/esm/variables/variants/CustomVariable.js +3 -2
- package/dist/esm/variables/variants/CustomVariable.js.map +1 -1
- package/dist/esm/variables/variants/DataSourceVariable.js +3 -2
- package/dist/esm/variables/variants/DataSourceVariable.js.map +1 -1
- package/dist/esm/variables/variants/JsonVariable.js +96 -0
- package/dist/esm/variables/variants/TestVariable.js +3 -2
- package/dist/esm/variables/variants/TestVariable.js.map +1 -1
- package/dist/esm/variables/variants/json/JsonVariable.js +95 -0
- package/dist/esm/variables/variants/json/JsonVariableOptionProviders.js +70 -0
- package/dist/esm/variables/variants/query/QueryVariable.js +3 -2
- package/dist/esm/variables/variants/query/QueryVariable.js.map +1 -1
- package/dist/index.d.ts +14 -6
- package/dist/index.js +35 -13
- package/dist/index.js.map +1 -1
- package/package.json +2 -2
|
@@ -0,0 +1,205 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { rangeUtil } from '@grafana/data';
|
|
3
|
+
import { config } from '@grafana/runtime';
|
|
4
|
+
import { RefreshPicker } from '@grafana/ui';
|
|
5
|
+
import { SceneObjectBase } from '../core/SceneObjectBase.js';
|
|
6
|
+
import { sceneGraph } from '../core/sceneGraph/index.js';
|
|
7
|
+
import { SceneObjectUrlSyncConfig } from '../services/SceneObjectUrlSyncConfig.js';
|
|
8
|
+
|
|
9
|
+
var __defProp = Object.defineProperty;
|
|
10
|
+
var __defProps = Object.defineProperties;
|
|
11
|
+
var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
|
|
12
|
+
var __getOwnPropSymbols = Object.getOwnPropertySymbols;
|
|
13
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
14
|
+
var __propIsEnum = Object.prototype.propertyIsEnumerable;
|
|
15
|
+
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
16
|
+
var __spreadValues = (a, b) => {
|
|
17
|
+
for (var prop in b || (b = {}))
|
|
18
|
+
if (__hasOwnProp.call(b, prop))
|
|
19
|
+
__defNormalProp(a, prop, b[prop]);
|
|
20
|
+
if (__getOwnPropSymbols)
|
|
21
|
+
for (var prop of __getOwnPropSymbols(b)) {
|
|
22
|
+
if (__propIsEnum.call(b, prop))
|
|
23
|
+
__defNormalProp(a, prop, b[prop]);
|
|
24
|
+
}
|
|
25
|
+
return a;
|
|
26
|
+
};
|
|
27
|
+
var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
|
|
28
|
+
const DEFAULT_INTERVALS = ["5s", "10s", "30s", "1m", "5m", "15m", "30m", "1h", "2h", "1d"];
|
|
29
|
+
class SceneRefreshPicker extends SceneObjectBase {
|
|
30
|
+
constructor(state) {
|
|
31
|
+
var _a, _b, _c;
|
|
32
|
+
const filterDissalowedIntervals = (i) => {
|
|
33
|
+
var _a2;
|
|
34
|
+
const minInterval = (_a2 = state.minRefreshInterval) != null ? _a2 : config.minRefreshInterval;
|
|
35
|
+
try {
|
|
36
|
+
return minInterval ? rangeUtil.intervalToMs(i) >= rangeUtil.intervalToMs(minInterval) : true;
|
|
37
|
+
} catch (e) {
|
|
38
|
+
return false;
|
|
39
|
+
}
|
|
40
|
+
};
|
|
41
|
+
super(__spreadProps(__spreadValues({
|
|
42
|
+
refresh: ""
|
|
43
|
+
}, state), {
|
|
44
|
+
autoValue: void 0,
|
|
45
|
+
autoEnabled: (_a = state.autoEnabled) != null ? _a : true,
|
|
46
|
+
autoMinInterval: (_b = state.autoMinInterval) != null ? _b : config.minRefreshInterval,
|
|
47
|
+
intervals: ((_c = state.intervals) != null ? _c : DEFAULT_INTERVALS).filter(filterDissalowedIntervals)
|
|
48
|
+
}));
|
|
49
|
+
this._urlSync = new SceneObjectUrlSyncConfig(this, { keys: ["refresh"] });
|
|
50
|
+
this._autoRefreshBlocked = false;
|
|
51
|
+
this.onRefresh = () => {
|
|
52
|
+
const queryController = sceneGraph.getQueryController(this);
|
|
53
|
+
if (queryController == null ? void 0 : queryController.state.isRunning) {
|
|
54
|
+
queryController.cancelAll();
|
|
55
|
+
return;
|
|
56
|
+
}
|
|
57
|
+
const timeRange = sceneGraph.getTimeRange(this);
|
|
58
|
+
if (this._intervalTimer) {
|
|
59
|
+
clearInterval(this._intervalTimer);
|
|
60
|
+
}
|
|
61
|
+
timeRange.onRefresh();
|
|
62
|
+
this.setupIntervalTimer();
|
|
63
|
+
};
|
|
64
|
+
this.onIntervalChanged = (interval) => {
|
|
65
|
+
this.setState({ refresh: interval });
|
|
66
|
+
this.setupIntervalTimer();
|
|
67
|
+
};
|
|
68
|
+
this.setupAutoTimeRangeListener = () => {
|
|
69
|
+
return sceneGraph.getTimeRange(this).subscribeToState((newState, prevState) => {
|
|
70
|
+
if (newState.from !== prevState.from || newState.to !== prevState.to) {
|
|
71
|
+
this.setupIntervalTimer();
|
|
72
|
+
}
|
|
73
|
+
});
|
|
74
|
+
};
|
|
75
|
+
this.calculateAutoRefreshInterval = () => {
|
|
76
|
+
var _a2;
|
|
77
|
+
const timeRange = sceneGraph.getTimeRange(this);
|
|
78
|
+
const resolution = (_a2 = window == null ? void 0 : window.innerWidth) != null ? _a2 : 2e3;
|
|
79
|
+
return rangeUtil.calculateInterval(timeRange.state.value, resolution, this.state.autoMinInterval);
|
|
80
|
+
};
|
|
81
|
+
this.setupIntervalTimer = () => {
|
|
82
|
+
var _a2;
|
|
83
|
+
const timeRange = sceneGraph.getTimeRange(this);
|
|
84
|
+
const { refresh, intervals } = this.state;
|
|
85
|
+
if (this._intervalTimer || refresh === "") {
|
|
86
|
+
clearInterval(this._intervalTimer);
|
|
87
|
+
}
|
|
88
|
+
if (refresh === "") {
|
|
89
|
+
return;
|
|
90
|
+
}
|
|
91
|
+
if (refresh !== RefreshPicker.autoOption.value && intervals && !intervals.includes(refresh)) {
|
|
92
|
+
return;
|
|
93
|
+
}
|
|
94
|
+
let intervalMs;
|
|
95
|
+
(_a2 = this._autoTimeRangeListener) == null ? void 0 : _a2.unsubscribe();
|
|
96
|
+
if (refresh === RefreshPicker.autoOption.value) {
|
|
97
|
+
const autoRefreshInterval = this.calculateAutoRefreshInterval();
|
|
98
|
+
intervalMs = autoRefreshInterval.intervalMs;
|
|
99
|
+
this._autoTimeRangeListener = this.setupAutoTimeRangeListener();
|
|
100
|
+
if (autoRefreshInterval.interval !== this.state.autoValue) {
|
|
101
|
+
this.setState({ autoValue: autoRefreshInterval.interval });
|
|
102
|
+
}
|
|
103
|
+
} else {
|
|
104
|
+
intervalMs = rangeUtil.intervalToMs(refresh);
|
|
105
|
+
}
|
|
106
|
+
this._intervalTimer = setInterval(() => {
|
|
107
|
+
if (this.isTabVisible()) {
|
|
108
|
+
timeRange.onRefresh();
|
|
109
|
+
} else {
|
|
110
|
+
this._autoRefreshBlocked = true;
|
|
111
|
+
}
|
|
112
|
+
}, intervalMs);
|
|
113
|
+
};
|
|
114
|
+
this.addActivationHandler(() => {
|
|
115
|
+
this.setupIntervalTimer();
|
|
116
|
+
const onVisibilityChange = () => {
|
|
117
|
+
if (this._autoRefreshBlocked && document.visibilityState === "visible") {
|
|
118
|
+
this._autoRefreshBlocked = false;
|
|
119
|
+
this.onRefresh();
|
|
120
|
+
}
|
|
121
|
+
};
|
|
122
|
+
document.addEventListener("visibilitychange", onVisibilityChange);
|
|
123
|
+
return () => {
|
|
124
|
+
var _a2;
|
|
125
|
+
if (this._intervalTimer) {
|
|
126
|
+
clearInterval(this._intervalTimer);
|
|
127
|
+
}
|
|
128
|
+
document.removeEventListener("visibilitychange", onVisibilityChange);
|
|
129
|
+
(_a2 = this._autoTimeRangeListener) == null ? void 0 : _a2.unsubscribe();
|
|
130
|
+
};
|
|
131
|
+
});
|
|
132
|
+
}
|
|
133
|
+
getUrlState() {
|
|
134
|
+
let refresh = this.state.refresh;
|
|
135
|
+
if (typeof refresh !== "string" || refresh.length === 0) {
|
|
136
|
+
refresh = void 0;
|
|
137
|
+
}
|
|
138
|
+
return { refresh };
|
|
139
|
+
}
|
|
140
|
+
updateFromUrl(values) {
|
|
141
|
+
const { intervals } = this.state;
|
|
142
|
+
let refresh = values.refresh;
|
|
143
|
+
if (typeof refresh === "string" && isIntervalString(refresh)) {
|
|
144
|
+
if (intervals == null ? void 0 : intervals.includes(refresh)) {
|
|
145
|
+
this.setState({ refresh });
|
|
146
|
+
} else {
|
|
147
|
+
this.setState({
|
|
148
|
+
refresh: intervals ? intervals[0] : void 0
|
|
149
|
+
});
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
isTabVisible() {
|
|
154
|
+
return document.visibilityState === void 0 || document.visibilityState === "visible";
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
SceneRefreshPicker.Component = SceneRefreshPickerRenderer;
|
|
158
|
+
function SceneRefreshPickerRenderer({ model }) {
|
|
159
|
+
var _a;
|
|
160
|
+
const { refresh, intervals, autoEnabled, autoValue, isOnCanvas, primary, withText } = model.useState();
|
|
161
|
+
const isRunning = useQueryControllerState(model);
|
|
162
|
+
let text = refresh === ((_a = RefreshPicker.autoOption) == null ? void 0 : _a.value) ? autoValue : withText ? "Refresh" : void 0;
|
|
163
|
+
let tooltip;
|
|
164
|
+
let width;
|
|
165
|
+
if (isRunning) {
|
|
166
|
+
tooltip = "Cancel all queries";
|
|
167
|
+
if (withText) {
|
|
168
|
+
text = "Cancel";
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
if (withText) {
|
|
172
|
+
width = "96px";
|
|
173
|
+
}
|
|
174
|
+
return /* @__PURE__ */ React.createElement(RefreshPicker, {
|
|
175
|
+
showAutoInterval: autoEnabled,
|
|
176
|
+
value: refresh,
|
|
177
|
+
intervals,
|
|
178
|
+
tooltip,
|
|
179
|
+
width,
|
|
180
|
+
text,
|
|
181
|
+
onRefresh: model.onRefresh,
|
|
182
|
+
primary,
|
|
183
|
+
onIntervalChanged: model.onIntervalChanged,
|
|
184
|
+
isLoading: isRunning,
|
|
185
|
+
isOnCanvas: isOnCanvas != null ? isOnCanvas : true
|
|
186
|
+
});
|
|
187
|
+
}
|
|
188
|
+
function useQueryControllerState(model) {
|
|
189
|
+
const queryController = sceneGraph.getQueryController(model);
|
|
190
|
+
if (!queryController) {
|
|
191
|
+
return false;
|
|
192
|
+
}
|
|
193
|
+
return queryController.useState().isRunning;
|
|
194
|
+
}
|
|
195
|
+
function isIntervalString(str) {
|
|
196
|
+
try {
|
|
197
|
+
const res = rangeUtil.describeInterval(str);
|
|
198
|
+
return res.count > 0;
|
|
199
|
+
} catch (e) {
|
|
200
|
+
return false;
|
|
201
|
+
}
|
|
202
|
+
}
|
|
203
|
+
|
|
204
|
+
export { DEFAULT_INTERVALS, SceneRefreshPicker, SceneRefreshPickerRenderer };
|
|
205
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU2NlbmVSZWZyZXNoUGlja2VyLmpzIiwic291cmNlcyI6WyIuLi8uLi8uLi9jb21wb25lbnRzL1NjZW5lUmVmcmVzaFBpY2tlci5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgcmFuZ2VVdGlsIH0gZnJvbSAnQGdyYWZhbmEvZGF0YSc7XG5pbXBvcnQgeyBjb25maWcgfSBmcm9tICdAZ3JhZmFuYS9ydW50aW1lJztcbmltcG9ydCB7IFJlZnJlc2hQaWNrZXIgfSBmcm9tICdAZ3JhZmFuYS91aSc7XG5pbXBvcnQgeyBTY2VuZU9iamVjdEJhc2UgfSBmcm9tICcuLi9jb3JlL1NjZW5lT2JqZWN0QmFzZS5qcyc7XG5pbXBvcnQgeyBzY2VuZUdyYXBoIH0gZnJvbSAnLi4vY29yZS9zY2VuZUdyYXBoL2luZGV4LmpzJztcbmltcG9ydCB7IFNjZW5lT2JqZWN0VXJsU3luY0NvbmZpZyB9IGZyb20gJy4uL3NlcnZpY2VzL1NjZW5lT2JqZWN0VXJsU3luY0NvbmZpZy5qcyc7XG5cbnZhciBfX2RlZlByb3AgPSBPYmplY3QuZGVmaW5lUHJvcGVydHk7XG52YXIgX19kZWZQcm9wcyA9IE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzO1xudmFyIF9fZ2V0T3duUHJvcERlc2NzID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnM7XG52YXIgX19nZXRPd25Qcm9wU3ltYm9scyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHM7XG52YXIgX19oYXNPd25Qcm9wID0gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eTtcbnZhciBfX3Byb3BJc0VudW0gPSBPYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlO1xudmFyIF9fZGVmTm9ybWFsUHJvcCA9IChvYmosIGtleSwgdmFsdWUpID0+IGtleSBpbiBvYmogPyBfX2RlZlByb3Aob2JqLCBrZXksIHsgZW51bWVyYWJsZTogdHJ1ZSwgY29uZmlndXJhYmxlOiB0cnVlLCB3cml0YWJsZTogdHJ1ZSwgdmFsdWUgfSkgOiBvYmpba2V5XSA9IHZhbHVlO1xudmFyIF9fc3ByZWFkVmFsdWVzID0gKGEsIGIpID0+IHtcbiAgZm9yICh2YXIgcHJvcCBpbiBiIHx8IChiID0ge30pKVxuICAgIGlmIChfX2hhc093blByb3AuY2FsbChiLCBwcm9wKSlcbiAgICAgIF9fZGVmTm9ybWFsUHJvcChhLCBwcm9wLCBiW3Byb3BdKTtcbiAgaWYgKF9fZ2V0T3duUHJvcFN5bWJvbHMpXG4gICAgZm9yICh2YXIgcHJvcCBvZiBfX2dldE93blByb3BTeW1ib2xzKGIpKSB7XG4gICAgICBpZiAoX19wcm9wSXNFbnVtLmNhbGwoYiwgcHJvcCkpXG4gICAgICAgIF9fZGVmTm9ybWFsUHJvcChhLCBwcm9wLCBiW3Byb3BdKTtcbiAgICB9XG4gIHJldHVybiBhO1xufTtcbnZhciBfX3NwcmVhZFByb3BzID0gKGEsIGIpID0+IF9fZGVmUHJvcHMoYSwgX19nZXRPd25Qcm9wRGVzY3MoYikpO1xuY29uc3QgREVGQVVMVF9JTlRFUlZBTFMgPSBbXCI1c1wiLCBcIjEwc1wiLCBcIjMwc1wiLCBcIjFtXCIsIFwiNW1cIiwgXCIxNW1cIiwgXCIzMG1cIiwgXCIxaFwiLCBcIjJoXCIsIFwiMWRcIl07XG5jbGFzcyBTY2VuZVJlZnJlc2hQaWNrZXIgZXh0ZW5kcyBTY2VuZU9iamVjdEJhc2Uge1xuICBjb25zdHJ1Y3RvcihzdGF0ZSkge1xuICAgIHZhciBfYSwgX2IsIF9jO1xuICAgIGNvbnN0IGZpbHRlckRpc3NhbG93ZWRJbnRlcnZhbHMgPSAoaSkgPT4ge1xuICAgICAgdmFyIF9hMjtcbiAgICAgIGNvbnN0IG1pbkludGVydmFsID0gKF9hMiA9IHN0YXRlLm1pblJlZnJlc2hJbnRlcnZhbCkgIT0gbnVsbCA/IF9hMiA6IGNvbmZpZy5taW5SZWZyZXNoSW50ZXJ2YWw7XG4gICAgICB0cnkge1xuICAgICAgICByZXR1cm4gbWluSW50ZXJ2YWwgPyByYW5nZVV0aWwuaW50ZXJ2YWxUb01zKGkpID49IHJhbmdlVXRpbC5pbnRlcnZhbFRvTXMobWluSW50ZXJ2YWwpIDogdHJ1ZTtcbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgIH07XG4gICAgc3VwZXIoX19zcHJlYWRQcm9wcyhfX3NwcmVhZFZhbHVlcyh7XG4gICAgICByZWZyZXNoOiBcIlwiXG4gICAgfSwgc3RhdGUpLCB7XG4gICAgICBhdXRvVmFsdWU6IHZvaWQgMCxcbiAgICAgIGF1dG9FbmFibGVkOiAoX2EgPSBzdGF0ZS5hdXRvRW5hYmxlZCkgIT0gbnVsbCA/IF9hIDogdHJ1ZSxcbiAgICAgIGF1dG9NaW5JbnRlcnZhbDogKF9iID0gc3RhdGUuYXV0b01pbkludGVydmFsKSAhPSBudWxsID8gX2IgOiBjb25maWcubWluUmVmcmVzaEludGVydmFsLFxuICAgICAgaW50ZXJ2YWxzOiAoKF9jID0gc3RhdGUuaW50ZXJ2YWxzKSAhPSBudWxsID8gX2MgOiBERUZBVUxUX0lOVEVSVkFMUykuZmlsdGVyKGZpbHRlckRpc3NhbG93ZWRJbnRlcnZhbHMpXG4gICAgfSkpO1xuICAgIHRoaXMuX3VybFN5bmMgPSBuZXcgU2NlbmVPYmplY3RVcmxTeW5jQ29uZmlnKHRoaXMsIHsga2V5czogW1wicmVmcmVzaFwiXSB9KTtcbiAgICB0aGlzLl9hdXRvUmVmcmVzaEJsb2NrZWQgPSBmYWxzZTtcbiAgICB0aGlzLm9uUmVmcmVzaCA9ICgpID0+IHtcbiAgICAgIGNvbnN0IHF1ZXJ5Q29udHJvbGxlciA9IHNjZW5lR3JhcGguZ2V0UXVlcnlDb250cm9sbGVyKHRoaXMpO1xuICAgICAgaWYgKHF1ZXJ5Q29udHJvbGxlciA9PSBudWxsID8gdm9pZCAwIDogcXVlcnlDb250cm9sbGVyLnN0YXRlLmlzUnVubmluZykge1xuICAgICAgICBxdWVyeUNvbnRyb2xsZXIuY2FuY2VsQWxsKCk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHRpbWVSYW5nZSA9IHNjZW5lR3JhcGguZ2V0VGltZVJhbmdlKHRoaXMpO1xuICAgICAgaWYgKHRoaXMuX2ludGVydmFsVGltZXIpIHtcbiAgICAgICAgY2xlYXJJbnRlcnZhbCh0aGlzLl9pbnRlcnZhbFRpbWVyKTtcbiAgICAgIH1cbiAgICAgIHRpbWVSYW5nZS5vblJlZnJlc2goKTtcbiAgICAgIHRoaXMuc2V0dXBJbnRlcnZhbFRpbWVyKCk7XG4gICAgfTtcbiAgICB0aGlzLm9uSW50ZXJ2YWxDaGFuZ2VkID0gKGludGVydmFsKSA9PiB7XG4gICAgICB0aGlzLnNldFN0YXRlKHsgcmVmcmVzaDogaW50ZXJ2YWwgfSk7XG4gICAgICB0aGlzLnNldHVwSW50ZXJ2YWxUaW1lcigpO1xuICAgIH07XG4gICAgdGhpcy5zZXR1cEF1dG9UaW1lUmFuZ2VMaXN0ZW5lciA9ICgpID0+IHtcbiAgICAgIHJldHVybiBzY2VuZUdyYXBoLmdldFRpbWVSYW5nZSh0aGlzKS5zdWJzY3JpYmVUb1N0YXRlKChuZXdTdGF0ZSwgcHJldlN0YXRlKSA9PiB7XG4gICAgICAgIGlmIChuZXdTdGF0ZS5mcm9tICE9PSBwcmV2U3RhdGUuZnJvbSB8fCBuZXdTdGF0ZS50byAhPT0gcHJldlN0YXRlLnRvKSB7XG4gICAgICAgICAgdGhpcy5zZXR1cEludGVydmFsVGltZXIoKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfTtcbiAgICB0aGlzLmNhbGN1bGF0ZUF1dG9SZWZyZXNoSW50ZXJ2YWwgPSAoKSA9PiB7XG4gICAgICB2YXIgX2E7XG4gICAgICBjb25zdCB0aW1lUmFuZ2UgPSBzY2VuZUdyYXBoLmdldFRpbWVSYW5nZSh0aGlzKTtcbiAgICAgIGNvbnN0IHJlc29sdXRpb24gPSAoX2EgPSB3aW5kb3cgPT0gbnVsbCA/IHZvaWQgMCA6IHdpbmRvdy5pbm5lcldpZHRoKSAhPSBudWxsID8gX2EgOiAyZTM7XG4gICAgICByZXR1cm4gcmFuZ2VVdGlsLmNhbGN1bGF0ZUludGVydmFsKHRpbWVSYW5nZS5zdGF0ZS52YWx1ZSwgcmVzb2x1dGlvbiwgdGhpcy5zdGF0ZS5hdXRvTWluSW50ZXJ2YWwpO1xuICAgIH07XG4gICAgdGhpcy5zZXR1cEludGVydmFsVGltZXIgPSAoKSA9PiB7XG4gICAgICB2YXIgX2E7XG4gICAgICBjb25zdCB0aW1lUmFuZ2UgPSBzY2VuZUdyYXBoLmdldFRpbWVSYW5nZSh0aGlzKTtcbiAgICAgIGNvbnN0IHsgcmVmcmVzaCwgaW50ZXJ2YWxzIH0gPSB0aGlzLnN0YXRlO1xuICAgICAgaWYgKHRoaXMuX2ludGVydmFsVGltZXIgfHwgcmVmcmVzaCA9PT0gXCJcIikge1xuICAgICAgICBjbGVhckludGVydmFsKHRoaXMuX2ludGVydmFsVGltZXIpO1xuICAgICAgfVxuICAgICAgaWYgKHJlZnJlc2ggPT09IFwiXCIpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgaWYgKHJlZnJlc2ggIT09IFJlZnJlc2hQaWNrZXIuYXV0b09wdGlvbi52YWx1ZSAmJiBpbnRlcnZhbHMgJiYgIWludGVydmFscy5pbmNsdWRlcyhyZWZyZXNoKSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBsZXQgaW50ZXJ2YWxNcztcbiAgICAgIChfYSA9IHRoaXMuX2F1dG9UaW1lUmFuZ2VMaXN0ZW5lcikgPT0gbnVsbCA/IHZvaWQgMCA6IF9hLnVuc3Vic2NyaWJlKCk7XG4gICAgICBpZiAocmVmcmVzaCA9PT0gUmVmcmVzaFBpY2tlci5hdXRvT3B0aW9uLnZhbHVlKSB7XG4gICAgICAgIGNvbnN0IGF1dG9SZWZyZXNoSW50ZXJ2YWwgPSB0aGlzLmNhbGN1bGF0ZUF1dG9SZWZyZXNoSW50ZXJ2YWwoKTtcbiAgICAgICAgaW50ZXJ2YWxNcyA9IGF1dG9SZWZyZXNoSW50ZXJ2YWwuaW50ZXJ2YWxNcztcbiAgICAgICAgdGhpcy5fYXV0b1RpbWVSYW5nZUxpc3RlbmVyID0gdGhpcy5zZXR1cEF1dG9UaW1lUmFuZ2VMaXN0ZW5lcigpO1xuICAgICAgICBpZiAoYXV0b1JlZnJlc2hJbnRlcnZhbC5pbnRlcnZhbCAhPT0gdGhpcy5zdGF0ZS5hdXRvVmFsdWUpIHtcbiAgICAgICAgICB0aGlzLnNldFN0YXRlKHsgYXV0b1ZhbHVlOiBhdXRvUmVmcmVzaEludGVydmFsLmludGVydmFsIH0pO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpbnRlcnZhbE1zID0gcmFuZ2VVdGlsLmludGVydmFsVG9NcyhyZWZyZXNoKTtcbiAgICAgIH1cbiAgICAgIHRoaXMuX2ludGVydmFsVGltZXIgPSBzZXRJbnRlcnZhbCgoKSA9PiB7XG4gICAgICAgIGlmICh0aGlzLmlzVGFiVmlzaWJsZSgpKSB7XG4gICAgICAgICAgdGltZVJhbmdlLm9uUmVmcmVzaCgpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMuX2F1dG9SZWZyZXNoQmxvY2tlZCA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgIH0sIGludGVydmFsTXMpO1xuICAgIH07XG4gICAgdGhpcy5hZGRBY3RpdmF0aW9uSGFuZGxlcigoKSA9PiB7XG4gICAgICB0aGlzLnNldHVwSW50ZXJ2YWxUaW1lcigpO1xuICAgICAgY29uc3Qgb25WaXNpYmlsaXR5Q2hhbmdlID0gKCkgPT4ge1xuICAgICAgICBpZiAodGhpcy5fYXV0b1JlZnJlc2hCbG9ja2VkICYmIGRvY3VtZW50LnZpc2liaWxpdHlTdGF0ZSA9PT0gXCJ2aXNpYmxlXCIpIHtcbiAgICAgICAgICB0aGlzLl9hdXRvUmVmcmVzaEJsb2NrZWQgPSBmYWxzZTtcbiAgICAgICAgICB0aGlzLm9uUmVmcmVzaCgpO1xuICAgICAgICB9XG4gICAgICB9O1xuICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihcInZpc2liaWxpdHljaGFuZ2VcIiwgb25WaXNpYmlsaXR5Q2hhbmdlKTtcbiAgICAgIHJldHVybiAoKSA9PiB7XG4gICAgICAgIHZhciBfYTI7XG4gICAgICAgIGlmICh0aGlzLl9pbnRlcnZhbFRpbWVyKSB7XG4gICAgICAgICAgY2xlYXJJbnRlcnZhbCh0aGlzLl9pbnRlcnZhbFRpbWVyKTtcbiAgICAgICAgfVxuICAgICAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKFwidmlzaWJpbGl0eWNoYW5nZVwiLCBvblZpc2liaWxpdHlDaGFuZ2UpO1xuICAgICAgICAoX2EyID0gdGhpcy5fYXV0b1RpbWVSYW5nZUxpc3RlbmVyKSA9PSBudWxsID8gdm9pZCAwIDogX2EyLnVuc3Vic2NyaWJlKCk7XG4gICAgICB9O1xuICAgIH0pO1xuICB9XG4gIGdldFVybFN0YXRlKCkge1xuICAgIGxldCByZWZyZXNoID0gdGhpcy5zdGF0ZS5yZWZyZXNoO1xuICAgIGlmICh0eXBlb2YgcmVmcmVzaCAhPT0gXCJzdHJpbmdcIiB8fCByZWZyZXNoLmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmVmcmVzaCA9IHZvaWQgMDtcbiAgICB9XG4gICAgcmV0dXJuIHsgcmVmcmVzaCB9O1xuICB9XG4gIHVwZGF0ZUZyb21VcmwodmFsdWVzKSB7XG4gICAgY29uc3QgeyBpbnRlcnZhbHMgfSA9IHRoaXMuc3RhdGU7XG4gICAgbGV0IHJlZnJlc2ggPSB2YWx1ZXMucmVmcmVzaDtcbiAgICBpZiAodHlwZW9mIHJlZnJlc2ggPT09IFwic3RyaW5nXCIgJiYgaXNJbnRlcnZhbFN0cmluZyhyZWZyZXNoKSkge1xuICAgICAgaWYgKGludGVydmFscyA9PSBudWxsID8gdm9pZCAwIDogaW50ZXJ2YWxzLmluY2x1ZGVzKHJlZnJlc2gpKSB7XG4gICAgICAgIHRoaXMuc2V0U3RhdGUoeyByZWZyZXNoIH0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5zZXRTdGF0ZSh7XG4gICAgICAgICAgcmVmcmVzaDogaW50ZXJ2YWxzID8gaW50ZXJ2YWxzWzBdIDogdm9pZCAwXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICBpc1RhYlZpc2libGUoKSB7XG4gICAgcmV0dXJuIGRvY3VtZW50LnZpc2liaWxpdHlTdGF0ZSA9PT0gdm9pZCAwIHx8IGRvY3VtZW50LnZpc2liaWxpdHlTdGF0ZSA9PT0gXCJ2aXNpYmxlXCI7XG4gIH1cbn1cblNjZW5lUmVmcmVzaFBpY2tlci5Db21wb25lbnQgPSBTY2VuZVJlZnJlc2hQaWNrZXJSZW5kZXJlcjtcbmZ1bmN0aW9uIFNjZW5lUmVmcmVzaFBpY2tlclJlbmRlcmVyKHsgbW9kZWwgfSkge1xuICB2YXIgX2E7XG4gIGNvbnN0IHsgcmVmcmVzaCwgaW50ZXJ2YWxzLCBhdXRvRW5hYmxlZCwgYXV0b1ZhbHVlLCBpc09uQ2FudmFzLCBwcmltYXJ5LCB3aXRoVGV4dCB9ID0gbW9kZWwudXNlU3RhdGUoKTtcbiAgY29uc3QgaXNSdW5uaW5nID0gdXNlUXVlcnlDb250cm9sbGVyU3RhdGUobW9kZWwpO1xuICBsZXQgdGV4dCA9IHJlZnJlc2ggPT09ICgoX2EgPSBSZWZyZXNoUGlja2VyLmF1dG9PcHRpb24pID09IG51bGwgPyB2b2lkIDAgOiBfYS52YWx1ZSkgPyBhdXRvVmFsdWUgOiB3aXRoVGV4dCA/IFwiUmVmcmVzaFwiIDogdm9pZCAwO1xuICBsZXQgdG9vbHRpcDtcbiAgbGV0IHdpZHRoO1xuICBpZiAoaXNSdW5uaW5nKSB7XG4gICAgdG9vbHRpcCA9IFwiQ2FuY2VsIGFsbCBxdWVyaWVzXCI7XG4gICAgaWYgKHdpdGhUZXh0KSB7XG4gICAgICB0ZXh0ID0gXCJDYW5jZWxcIjtcbiAgICB9XG4gIH1cbiAgaWYgKHdpdGhUZXh0KSB7XG4gICAgd2lkdGggPSBcIjk2cHhcIjtcbiAgfVxuICByZXR1cm4gLyogQF9fUFVSRV9fICovIFJlYWN0LmNyZWF0ZUVsZW1lbnQoUmVmcmVzaFBpY2tlciwge1xuICAgIHNob3dBdXRvSW50ZXJ2YWw6IGF1dG9FbmFibGVkLFxuICAgIHZhbHVlOiByZWZyZXNoLFxuICAgIGludGVydmFscyxcbiAgICB0b29sdGlwLFxuICAgIHdpZHRoLFxuICAgIHRleHQsXG4gICAgb25SZWZyZXNoOiBtb2RlbC5vblJlZnJlc2gsXG4gICAgcHJpbWFyeSxcbiAgICBvbkludGVydmFsQ2hhbmdlZDogbW9kZWwub25JbnRlcnZhbENoYW5nZWQsXG4gICAgaXNMb2FkaW5nOiBpc1J1bm5pbmcsXG4gICAgaXNPbkNhbnZhczogaXNPbkNhbnZhcyAhPSBudWxsID8gaXNPbkNhbnZhcyA6IHRydWVcbiAgfSk7XG59XG5mdW5jdGlvbiB1c2VRdWVyeUNvbnRyb2xsZXJTdGF0ZShtb2RlbCkge1xuICBjb25zdCBxdWVyeUNvbnRyb2xsZXIgPSBzY2VuZUdyYXBoLmdldFF1ZXJ5Q29udHJvbGxlcihtb2RlbCk7XG4gIGlmICghcXVlcnlDb250cm9sbGVyKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIHJldHVybiBxdWVyeUNvbnRyb2xsZXIudXNlU3RhdGUoKS5pc1J1bm5pbmc7XG59XG5mdW5jdGlvbiBpc0ludGVydmFsU3RyaW5nKHN0cikge1xuICB0cnkge1xuICAgIGNvbnN0IHJlcyA9IHJhbmdlVXRpbC5kZXNjcmliZUludGVydmFsKHN0cik7XG4gICAgcmV0dXJuIHJlcy5jb3VudCA+IDA7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbn1cblxuZXhwb3J0IHsgREVGQVVMVF9JTlRFUlZBTFMsIFNjZW5lUmVmcmVzaFBpY2tlciwgU2NlbmVSZWZyZXNoUGlja2VyUmVuZGVyZXIgfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtjaGFyc2V0PXV0Zi04O2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENKbWFXeGxJam9pVTJObGJtVlNaV1p5WlhOb1VHbGphMlZ5TG1weklpd2ljMjkxY21ObGN5STZXeUl1TGk4dUxpOHVMaTl6Y21NdlkyOXRjRzl1Wlc1MGN5OVRZMlZ1WlZKbFpuSmxjMmhRYVdOclpYSXVkSE40SWwwc0luTnZkWEpqWlhORGIyNTBaVzUwSWpwYkltbHRjRzl5ZENCU1pXRmpkQ0JtY205dElDZHlaV0ZqZENjN1hHNXBiWEJ2Y25RZ2V5QlZibk4xWW5OamNtbGlZV0pzWlNCOUlHWnliMjBnSjNKNGFuTW5PMXh1YVcxd2IzSjBJSHNnY21GdVoyVlZkR2xzSUgwZ1puSnZiU0FuUUdkeVlXWmhibUV2WkdGMFlTYzdYRzVwYlhCdmNuUWdleUJqYjI1bWFXY2dmU0JtY205dElDZEFaM0poWm1GdVlTOXlkVzUwYVcxbEp6dGNibWx0Y0c5eWRDQjdJRkpsWm5KbGMyaFFhV05yWlhJZ2ZTQm1jbTl0SUNkQVozSmhabUZ1WVM5MWFTYzdYRzVjYm1sdGNHOXlkQ0I3SUZOalpXNWxUMkpxWldOMFFtRnpaU0I5SUdaeWIyMGdKeTR1TDJOdmNtVXZVMk5sYm1WUFltcGxZM1JDWVhObEp6dGNibWx0Y0c5eWRDQjdJSE5qWlc1bFIzSmhjR2dnZlNCbWNtOXRJQ2N1TGk5amIzSmxMM05qWlc1bFIzSmhjR2duTzF4dWFXMXdiM0owSUhzZ1UyTmxibVZEYjIxd2IyNWxiblJRY205d2N5d2dVMk5sYm1WUFltcGxZM1FzSUZOalpXNWxUMkpxWldOMFUzUmhkR1VzSUZOalpXNWxUMkpxWldOMFZYSnNWbUZzZFdWeklIMGdabkp2YlNBbkxpNHZZMjl5WlM5MGVYQmxjeWM3WEc1cGJYQnZjblFnZXlCVFkyVnVaVTlpYW1WamRGVnliRk41Ym1ORGIyNW1hV2NnZlNCbWNtOXRJQ2N1TGk5elpYSjJhV05sY3k5VFkyVnVaVTlpYW1WamRGVnliRk41Ym1ORGIyNW1hV2NuTzF4dVhHNWxlSEJ2Y25RZ1kyOXVjM1FnUkVWR1FWVk1WRjlKVGxSRlVsWkJURk1nUFNCYkp6VnpKeXdnSnpFd2N5Y3NJQ2N6TUhNbkxDQW5NVzBuTENBbk5XMG5MQ0FuTVRWdEp5d2dKek13YlNjc0lDY3hhQ2NzSUNjeWFDY3NJQ2N4WkNkZE8xeHVYRzVsZUhCdmNuUWdhVzUwWlhKbVlXTmxJRk5qWlc1bFVtVm1jbVZ6YUZCcFkydGxjbE4wWVhSbElHVjRkR1Z1WkhNZ1UyTmxibVZQWW1wbFkzUlRkR0YwWlNCN1hHNGdJQzhxS2x4dUlDQWdLaUJTWldaeVpYTm9JR2x1ZEdWeWRtRnNMQ0JsTG1jdUlEVnpMQ0F4YlN3Z01taGNiaUFnSUNvdlhHNGdJSEpsWm5KbGMyZzZJSE4wY21sdVp6dGNiaUFnWVhWMGIwVnVZV0pzWldRL09pQmliMjlzWldGdU8xeHVJQ0JoZFhSdlRXbHVTVzUwWlhKMllXdy9PaUJ6ZEhKcGJtYzdYRzRnSUdGMWRHOVdZV3gxWlQ4NklITjBjbWx1Wnp0Y2JpQWdMeW9xWEc0Z0lDQXFJRXhwYzNRZ2IyWWdZV3hzYjNkbFpDQnlaV1p5WlhOb0lHbHVkR1Z5ZG1Gc2N5d2daUzVuTGlCYkp6VnpKeXdnSnpGdEoxMWNiaUFnSUNvdlhHNGdJR2x1ZEdWeWRtRnNjejg2SUhOMGNtbHVaMXRkTzF4dUlDQnBjMDl1UTJGdWRtRnpQem9nWW05dmJHVmhianRjYmlBZ2NISnBiV0Z5ZVQ4NklHSnZiMnhsWVc0N1hHNGdJSGRwZEdoVVpYaDBQem9nWW05dmJHVmhianRjYmlBZ0x5b3FYRzRnSUNBcUlFOTJaWEp5YVdSbGN5QjBhR1VnWkdWbVlYVnNkQ0J0YVc1U1pXWnlaWE5vU1c1MFpYSjJZV3dnWm5KdmJTQjBhR1VnWjNKaFptRnVZU0JqYjI1bWFXY3VJRU5oYmlCaVpTQnpaWFFnZEc4Z1hDSXdjMXdpSUhSdklISmxiVzkyWlNCMGFHVWdiV2x1YVcxMWJTQnlaV1p5WlhOb0lHbHVkR1Z5ZG1Gc0xseHVJQ0FnS2k5Y2JpQWdiV2x1VW1WbWNtVnphRWx1ZEdWeWRtRnNQem9nYzNSeWFXNW5PMXh1ZlZ4dVhHNWxlSEJ2Y25RZ1kyeGhjM01nVTJObGJtVlNaV1p5WlhOb1VHbGphMlZ5SUdWNGRHVnVaSE1nVTJObGJtVlBZbXBsWTNSQ1lYTmxQRk5qWlc1bFVtVm1jbVZ6YUZCcFkydGxjbE4wWVhSbFBpQjdYRzRnSUhCMVlteHBZeUJ6ZEdGMGFXTWdRMjl0Y0c5dVpXNTBJRDBnVTJObGJtVlNaV1p5WlhOb1VHbGphMlZ5VW1WdVpHVnlaWEk3WEc0Z0lIQnliM1JsWTNSbFpDQmZkWEpzVTNsdVl5QTlJRzVsZHlCVFkyVnVaVTlpYW1WamRGVnliRk41Ym1ORGIyNW1hV2NvZEdocGN5d2dleUJyWlhsek9pQmJKM0psWm5KbGMyZ25YU0I5S1R0Y2JpQWdjSEpwZG1GMFpTQmZhVzUwWlhKMllXeFVhVzFsY2pvZ1VtVjBkWEp1Vkhsd1pUeDBlWEJsYjJZZ2MyVjBTVzUwWlhKMllXdytJSHdnZFc1a1pXWnBibVZrTzF4dUlDQndjbWwyWVhSbElGOWhkWFJ2VkdsdFpWSmhibWRsVEdsemRHVnVaWEk2SUZWdWMzVmljMk55YVdKaFlteGxJSHdnZFc1a1pXWnBibVZrTzF4dUlDQndjbWwyWVhSbElGOWhkWFJ2VW1WbWNtVnphRUpzYjJOclpXUTZJR0p2YjJ4bFlXNGdQU0JtWVd4elpUdGNibHh1SUNCd2RXSnNhV01nWTI5dWMzUnlkV04wYjNJb2MzUmhkR1U2SUZCaGNuUnBZV3c4VTJObGJtVlNaV1p5WlhOb1VHbGphMlZ5VTNSaGRHVStLU0I3WEc0Z0lDQWdZMjl1YzNRZ1ptbHNkR1Z5UkdsemMyRnNiM2RsWkVsdWRHVnlkbUZzY3lBOUlDaHBPaUJ6ZEhKcGJtY3BJRDArSUh0Y2JpQWdJQ0FnSUdOdmJuTjBJRzFwYmtsdWRHVnlkbUZzSUQwZ2MzUmhkR1V1YldsdVVtVm1jbVZ6YUVsdWRHVnlkbUZzSUQ4L0lHTnZibVpwWnk1dGFXNVNaV1p5WlhOb1NXNTBaWEoyWVd3N1hHNGdJQ0FnSUNCMGNua2dlMXh1SUNBZ0lDQWdJQ0J5WlhSMWNtNGdiV2x1U1c1MFpYSjJZV3dnUHlCeVlXNW5aVlYwYVd3dWFXNTBaWEoyWVd4VWIwMXpLR2twSUQ0OUlISmhibWRsVlhScGJDNXBiblJsY25aaGJGUnZUWE1vYldsdVNXNTBaWEoyWVd3cElEb2dkSEoxWlR0Y2JpQWdJQ0FnSUgwZ1kyRjBZMmdnS0dVcElIdGNiaUFnSUNBZ0lDQWdMeThnVlc1aFlteGxJSFJ2SUhCaGNuTmxJR2x1ZEdWeWRtRnNYRzRnSUNBZ0lDQWdJSEpsZEhWeWJpQm1ZV3h6WlR0Y2JpQWdJQ0FnSUgxY2JpQWdJQ0I5TzF4dVhHNGdJQ0FnYzNWd1pYSW9lMXh1SUNBZ0lDQWdjbVZtY21WemFEb2dKeWNzWEc0Z0lDQWdJQ0F1TGk1emRHRjBaU3hjYmlBZ0lDQWdJR0YxZEc5V1lXeDFaVG9nZFc1a1pXWnBibVZrTEZ4dUlDQWdJQ0FnWVhWMGIwVnVZV0pzWldRNklITjBZWFJsTG1GMWRHOUZibUZpYkdWa0lEOC9JSFJ5ZFdVc1hHNGdJQ0FnSUNCaGRYUnZUV2x1U1c1MFpYSjJZV3c2SUhOMFlYUmxMbUYxZEc5TmFXNUpiblJsY25aaGJDQS9QeUJqYjI1bWFXY3ViV2x1VW1WbWNtVnphRWx1ZEdWeWRtRnNMRnh1SUNBZ0lDQWdhVzUwWlhKMllXeHpPaUFvYzNSaGRHVXVhVzUwWlhKMllXeHpJRDgvSUVSRlJrRlZURlJmU1U1VVJWSldRVXhUS1M1bWFXeDBaWElvWm1sc2RHVnlSR2x6YzJGc2IzZGxaRWx1ZEdWeWRtRnNjeWtzWEc0Z0lDQWdmU2s3WEc1Y2JpQWdJQ0IwYUdsekxtRmtaRUZqZEdsMllYUnBiMjVJWVc1a2JHVnlLQ2dwSUQwK0lIdGNiaUFnSUNBZ0lIUm9hWE11YzJWMGRYQkpiblJsY25aaGJGUnBiV1Z5S0NrN1hHNWNiaUFnSUNBZ0lHTnZibk4wSUc5dVZtbHphV0pwYkdsMGVVTm9ZVzVuWlNBOUlDZ3BJRDArSUh0Y2JpQWdJQ0FnSUNBZ2FXWWdLSFJvYVhNdVgyRjFkRzlTWldaeVpYTm9RbXh2WTJ0bFpDQW1KaUJrYjJOMWJXVnVkQzUyYVhOcFltbHNhWFI1VTNSaGRHVWdQVDA5SUNkMmFYTnBZbXhsSnlrZ2UxeHVJQ0FnSUNBZ0lDQWdJSFJvYVhNdVgyRjFkRzlTWldaeVpYTm9RbXh2WTJ0bFpDQTlJR1poYkhObE8xeHVJQ0FnSUNBZ0lDQWdJSFJvYVhNdWIyNVNaV1p5WlhOb0tDazdYRzRnSUNBZ0lDQWdJSDFjYmlBZ0lDQWdJSDA3WEc1Y2JpQWdJQ0FnSUdSdlkzVnRaVzUwTG1Ga1pFVjJaVzUwVEdsemRHVnVaWElvSjNacGMybGlhV3hwZEhsamFHRnVaMlVuTENCdmJsWnBjMmxpYVd4cGRIbERhR0Z1WjJVcE8xeHVYRzRnSUNBZ0lDQnlaWFIxY200Z0tDa2dQVDRnZTF4dUlDQWdJQ0FnSUNCcFppQW9kR2hwY3k1ZmFXNTBaWEoyWVd4VWFXMWxjaWtnZTF4dUlDQWdJQ0FnSUNBZ0lHTnNaV0Z5U1c1MFpYSjJZV3dvZEdocGN5NWZhVzUwWlhKMllXeFVhVzFsY2lrN1hHNGdJQ0FnSUNBZ0lIMWNibHh1SUNBZ0lDQWdJQ0JrYjJOMWJXVnVkQzV5WlcxdmRtVkZkbVZ1ZEV4cGMzUmxibVZ5S0NkMmFYTnBZbWxzYVhSNVkyaGhibWRsSnl3Z2IyNVdhWE5wWW1sc2FYUjVRMmhoYm1kbEtUdGNiaUFnSUNBZ0lDQWdkR2hwY3k1ZllYVjBiMVJwYldWU1lXNW5aVXhwYzNSbGJtVnlQeTUxYm5OMVluTmpjbWxpWlNncE8xeHVJQ0FnSUNBZ2ZUdGNiaUFnSUNCOUtUdGNiaUFnZlZ4dVhHNGdJSEIxWW14cFl5QnZibEpsWm5KbGMyZ2dQU0FvS1NBOVBpQjdYRzRnSUNBZ1kyOXVjM1FnY1hWbGNubERiMjUwY205c2JHVnlJRDBnYzJObGJtVkhjbUZ3YUM1blpYUlJkV1Z5ZVVOdmJuUnliMnhzWlhJb2RHaHBjeWs3WEc0Z0lDQWdhV1lnS0hGMVpYSjVRMjl1ZEhKdmJHeGxjajh1YzNSaGRHVXVhWE5TZFc1dWFXNW5LU0I3WEc0Z0lDQWdJQ0J4ZFdWeWVVTnZiblJ5YjJ4c1pYSXVZMkZ1WTJWc1FXeHNLQ2s3WEc0Z0lDQWdJQ0J5WlhSMWNtNDdYRzRnSUNBZ2ZWeHVYRzRnSUNBZ1kyOXVjM1FnZEdsdFpWSmhibWRsSUQwZ2MyTmxibVZIY21Gd2FDNW5aWFJVYVcxbFVtRnVaMlVvZEdocGN5azdYRzVjYmlBZ0lDQnBaaUFvZEdocGN5NWZhVzUwWlhKMllXeFVhVzFsY2lrZ2UxeHVJQ0FnSUNBZ1kyeGxZWEpKYm5SbGNuWmhiQ2gwYUdsekxsOXBiblJsY25aaGJGUnBiV1Z5S1R0Y2JpQWdJQ0I5WEc1Y2JpQWdJQ0IwYVcxbFVtRnVaMlV1YjI1U1pXWnlaWE5vS0NrN1hHNGdJQ0FnZEdocGN5NXpaWFIxY0VsdWRHVnlkbUZzVkdsdFpYSW9LVHRjYmlBZ2ZUdGNibHh1SUNCd2RXSnNhV01nYjI1SmJuUmxjblpoYkVOb1lXNW5aV1FnUFNBb2FXNTBaWEoyWVd3NklITjBjbWx1WnlrZ1BUNGdlMXh1SUNBZ0lIUm9hWE11YzJWMFUzUmhkR1VvZXlCeVpXWnlaWE5vT2lCcGJuUmxjblpoYkNCOUtUdGNiaUFnSUNCMGFHbHpMbk5sZEhWd1NXNTBaWEoyWVd4VWFXMWxjaWdwTzF4dUlDQjlPMXh1WEc0Z0lIQjFZbXhwWXlCblpYUlZjbXhUZEdGMFpTZ3BJSHRjYmlBZ0lDQnNaWFFnY21WbWNtVnphRG9nYzNSeWFXNW5JSHdnZFc1a1pXWnBibVZrSUQwZ2RHaHBjeTV6ZEdGMFpTNXlaV1p5WlhOb08xeHVYRzRnSUNBZ2FXWWdLSFI1Y0dWdlppQnlaV1p5WlhOb0lDRTlQU0FuYzNSeWFXNW5KeUI4ZkNCeVpXWnlaWE5vTG14bGJtZDBhQ0E5UFQwZ01Da2dlMXh1SUNBZ0lDQWdjbVZtY21WemFDQTlJSFZ1WkdWbWFXNWxaRHRjYmlBZ0lDQjlYRzVjYmlBZ0lDQnlaWFIxY200Z2V5QnlaV1p5WlhOb0lIMDdYRzRnSUgxY2JseHVJQ0J3ZFdKc2FXTWdkWEJrWVhSbFJuSnZiVlZ5YkNoMllXeDFaWE02SUZOalpXNWxUMkpxWldOMFZYSnNWbUZzZFdWektTQjdYRzRnSUNBZ1kyOXVjM1FnZXlCcGJuUmxjblpoYkhNZ2ZTQTlJSFJvYVhNdWMzUmhkR1U3WEc0Z0lDQWdiR1YwSUhKbFpuSmxjMmdnUFNCMllXeDFaWE11Y21WbWNtVnphRHRjYmx4dUlDQWdJR2xtSUNoMGVYQmxiMllnY21WbWNtVnphQ0E5UFQwZ0ozTjBjbWx1WnljZ0ppWWdhWE5KYm5SbGNuWmhiRk4wY21sdVp5aHlaV1p5WlhOb0tTa2dlMXh1SUNBZ0lDQWdhV1lnS0dsdWRHVnlkbUZzY3o4dWFXNWpiSFZrWlhNb2NtVm1jbVZ6YUNrcElIdGNiaUFnSUNBZ0lDQWdkR2hwY3k1elpYUlRkR0YwWlNoN0lISmxabkpsYzJnZ2ZTazdYRzRnSUNBZ0lDQjlJR1ZzYzJVZ2UxeHVJQ0FnSUNBZ0lDQjBhR2x6TG5ObGRGTjBZWFJsS0h0Y2JpQWdJQ0FnSUNBZ0lDQXZMeUJFWldaaGRXeDBJSFJ2SUhSb1pTQm1hWEp6ZENCeVpXWnlaWE5vSUdsdWRHVnlkbUZzSUdsbUlIUm9aU0JwYm5SbGNuWmhiQ0JtY205dElIUm9aU0JWVWt3Z2FYTWdibTkwSUdGc2JHOTNaV1FzSUdwMWMzUWdiR2xyWlNCcGJpQjBhR1VnYjJ4a0lHRnlZMmhwZEdWamRIVnlaUzVjYmlBZ0lDQWdJQ0FnSUNCeVpXWnlaWE5vT2lCcGJuUmxjblpoYkhNZ1B5QnBiblJsY25aaGJITmJNRjBnT2lCMWJtUmxabWx1WldRc1hHNGdJQ0FnSUNBZ0lIMHBPMXh1SUNBZ0lDQWdmVnh1SUNBZ0lIMWNiaUFnZlZ4dVhHNGdJSEJ5YVhaaGRHVWdjMlYwZFhCQmRYUnZWR2x0WlZKaGJtZGxUR2x6ZEdWdVpYSWdQU0FvS1NBOVBpQjdYRzRnSUNBZ0x5OGdTV1lnZEdobElIUnBiV1VnY21GdVoyVWdhR0Z6SUdOb1lXNW5aV1FzSUhkbElHNWxaV1FnZEc4Z2NtVmpZV3hqZFd4aGRHVWdkR2hsSUdGMWRHOGdhVzUwWlhKMllXd2dZblYwSUhCeVpYWmxiblFnZFc1dVpXTmxjM05oY25rZ2NISnZZMlZ6YzJsdVoxeHVJQ0FnSUhKbGRIVnliaUJ6WTJWdVpVZHlZWEJvTG1kbGRGUnBiV1ZTWVc1blpTaDBhR2x6S1M1emRXSnpZM0pwWW1WVWIxTjBZWFJsS0NodVpYZFRkR0YwWlN3Z2NISmxkbE4wWVhSbEtTQTlQaUI3WEc0Z0lDQWdJQ0JwWmlBb2JtVjNVM1JoZEdVdVpuSnZiU0FoUFQwZ2NISmxkbE4wWVhSbExtWnliMjBnZkh3Z2JtVjNVM1JoZEdVdWRHOGdJVDA5SUhCeVpYWlRkR0YwWlM1MGJ5a2dlMXh1SUNBZ0lDQWdJQ0IwYUdsekxuTmxkSFZ3U1c1MFpYSjJZV3hVYVcxbGNpZ3BPMXh1SUNBZ0lDQWdmVnh1SUNBZ0lIMHBPMXh1SUNCOU8xeHVYRzRnSUhCeWFYWmhkR1VnWTJGc1kzVnNZWFJsUVhWMGIxSmxabkpsYzJoSmJuUmxjblpoYkNBOUlDZ3BJRDArSUh0Y2JpQWdJQ0JqYjI1emRDQjBhVzFsVW1GdVoyVWdQU0J6WTJWdVpVZHlZWEJvTG1kbGRGUnBiV1ZTWVc1blpTaDBhR2x6S1R0Y2JpQWdJQ0JqYjI1emRDQnlaWE52YkhWMGFXOXVJRDBnZDJsdVpHOTNQeTVwYm01bGNsZHBaSFJvSUQ4L0lESXdNREE3WEc0Z0lDQWdjbVYwZFhKdUlISmhibWRsVlhScGJDNWpZV3hqZFd4aGRHVkpiblJsY25aaGJDaDBhVzFsVW1GdVoyVXVjM1JoZEdVdWRtRnNkV1VzSUhKbGMyOXNkWFJwYjI0c0lIUm9hWE11YzNSaGRHVXVZWFYwYjAxcGJrbHVkR1Z5ZG1Gc0tUdGNiaUFnZlR0Y2JseHVJQ0J3Y21sMllYUmxJR2x6VkdGaVZtbHphV0pzWlNncElIdGNiaUFnSUNCeVpYUjFjbTRnWkc5amRXMWxiblF1ZG1semFXSnBiR2wwZVZOMFlYUmxJRDA5UFNCMWJtUmxabWx1WldRZ2ZId2daRzlqZFcxbGJuUXVkbWx6YVdKcGJHbDBlVk4wWVhSbElEMDlQU0FuZG1semFXSnNaU2M3WEc0Z0lIMWNibHh1SUNCd2NtbDJZWFJsSUhObGRIVndTVzUwWlhKMllXeFVhVzFsY2lBOUlDZ3BJRDArSUh0Y2JpQWdJQ0JqYjI1emRDQjBhVzFsVW1GdVoyVWdQU0J6WTJWdVpVZHlZWEJvTG1kbGRGUnBiV1ZTWVc1blpTaDBhR2x6S1R0Y2JpQWdJQ0JqYjI1emRDQjdJSEpsWm5KbGMyZ3NJR2x1ZEdWeWRtRnNjeUI5SUQwZ2RHaHBjeTV6ZEdGMFpUdGNibHh1SUNBZ0lHbG1JQ2gwYUdsekxsOXBiblJsY25aaGJGUnBiV1Z5SUh4OElISmxabkpsYzJnZ1BUMDlJQ2NuS1NCN1hHNGdJQ0FnSUNCamJHVmhja2x1ZEdWeWRtRnNLSFJvYVhNdVgybHVkR1Z5ZG1Gc1ZHbHRaWElwTzF4dUlDQWdJSDFjYmx4dUlDQWdJR2xtSUNoeVpXWnlaWE5vSUQwOVBTQW5KeWtnZTF4dUlDQWdJQ0FnY21WMGRYSnVPMXh1SUNBZ0lIMWNibHh1SUNBZ0lDOHZJRWxtSUhSb1pTQndjbTkyYVdSbFpDQnBiblJsY25aaGJDQnBjeUJ1YjNRZ1lXeHNiM2RsWkZ4dUlDQWdJR2xtSUNoeVpXWnlaWE5vSUNFOVBTQlNaV1p5WlhOb1VHbGphMlZ5TG1GMWRHOVBjSFJwYjI0dWRtRnNkV1VnSmlZZ2FXNTBaWEoyWVd4eklDWW1JQ0ZwYm5SbGNuWmhiSE11YVc1amJIVmtaWE1vY21WbWNtVnphQ2twSUh0Y2JpQWdJQ0FnSUhKbGRIVnlianRjYmlBZ0lDQjlYRzVjYmlBZ0lDQnNaWFFnYVc1MFpYSjJZV3hOY3pvZ2JuVnRZbVZ5TzF4dVhHNGdJQ0FnTHk4Z1ZXNXpkV0p6WTNKcFltVWdabkp2YlNCd2NtVjJhVzkxY3lCc2FYTjBaVzVsY2lCdWJ5QnRZWFIwWlhJZ2QyaGhkRnh1SUNBZ0lIUm9hWE11WDJGMWRHOVVhVzFsVW1GdVoyVk1hWE4wWlc1bGNqOHVkVzV6ZFdKelkzSnBZbVVvS1R0Y2JseHVJQ0FnSUdsbUlDaHlaV1p5WlhOb0lEMDlQU0JTWldaeVpYTm9VR2xqYTJWeUxtRjFkRzlQY0hScGIyNHVkbUZzZFdVcElIdGNiaUFnSUNBZ0lHTnZibk4wSUdGMWRHOVNaV1p5WlhOb1NXNTBaWEoyWVd3Z1BTQjBhR2x6TG1OaGJHTjFiR0YwWlVGMWRHOVNaV1p5WlhOb1NXNTBaWEoyWVd3b0tUdGNibHh1SUNBZ0lDQWdhVzUwWlhKMllXeE5jeUE5SUdGMWRHOVNaV1p5WlhOb1NXNTBaWEoyWVd3dWFXNTBaWEoyWVd4TmN6dGNibHh1SUNBZ0lDQWdkR2hwY3k1ZllYVjBiMVJwYldWU1lXNW5aVXhwYzNSbGJtVnlJRDBnZEdocGN5NXpaWFIxY0VGMWRHOVVhVzFsVW1GdVoyVk1hWE4wWlc1bGNpZ3BPMXh1WEc0Z0lDQWdJQ0JwWmlBb1lYVjBiMUpsWm5KbGMyaEpiblJsY25aaGJDNXBiblJsY25aaGJDQWhQVDBnZEdocGN5NXpkR0YwWlM1aGRYUnZWbUZzZFdVcElIdGNiaUFnSUNBZ0lDQWdkR2hwY3k1elpYUlRkR0YwWlNoN0lHRjFkRzlXWVd4MVpUb2dZWFYwYjFKbFpuSmxjMmhKYm5SbGNuWmhiQzVwYm5SbGNuWmhiQ0I5S1R0Y2JpQWdJQ0FnSUgxY2JpQWdJQ0I5SUdWc2MyVWdlMXh1SUNBZ0lDQWdhVzUwWlhKMllXeE5jeUE5SUhKaGJtZGxWWFJwYkM1cGJuUmxjblpoYkZSdlRYTW9jbVZtY21WemFDazdYRzRnSUNBZ2ZWeHVYRzRnSUNBZ2RHaHBjeTVmYVc1MFpYSjJZV3hVYVcxbGNpQTlJSE5sZEVsdWRHVnlkbUZzS0NncElEMCtJSHRjYmlBZ0lDQWdJR2xtSUNoMGFHbHpMbWx6VkdGaVZtbHphV0pzWlNncEtTQjdYRzRnSUNBZ0lDQWdJSFJwYldWU1lXNW5aUzV2YmxKbFpuSmxjMmdvS1R0Y2JpQWdJQ0FnSUgwZ1pXeHpaU0I3WEc0Z0lDQWdJQ0FnSUhSb2FYTXVYMkYxZEc5U1pXWnlaWE5vUW14dlkydGxaQ0E5SUhSeWRXVTdYRzRnSUNBZ0lDQjlYRzRnSUNBZ2ZTd2dhVzUwWlhKMllXeE5jeWs3WEc0Z0lIMDdYRzU5WEc1Y2JtVjRjRzl5ZENCbWRXNWpkR2x2YmlCVFkyVnVaVkpsWm5KbGMyaFFhV05yWlhKU1pXNWtaWEpsY2loN0lHMXZaR1ZzSUgwNklGTmpaVzVsUTI5dGNHOXVaVzUwVUhKdmNITThVMk5sYm1WU1pXWnlaWE5vVUdsamEyVnlQaWtnZTF4dUlDQmpiMjV6ZENCN0lISmxabkpsYzJnc0lHbHVkR1Z5ZG1Gc2N5d2dZWFYwYjBWdVlXSnNaV1FzSUdGMWRHOVdZV3gxWlN3Z2FYTlBia05oYm5aaGN5d2djSEpwYldGeWVTd2dkMmwwYUZSbGVIUWdmU0E5SUcxdlpHVnNMblZ6WlZOMFlYUmxLQ2s3WEc0Z0lHTnZibk4wSUdselVuVnVibWx1WnlBOUlIVnpaVkYxWlhKNVEyOXVkSEp2Ykd4bGNsTjBZWFJsS0cxdlpHVnNLVHRjYmx4dUlDQnNaWFFnZEdWNGRDQTlJSEpsWm5KbGMyZ2dQVDA5SUZKbFpuSmxjMmhRYVdOclpYSXVZWFYwYjA5d2RHbHZiajh1ZG1Gc2RXVWdQeUJoZFhSdlZtRnNkV1VnT2lCM2FYUm9WR1Y0ZENBL0lDZFNaV1p5WlhOb0p5QTZJSFZ1WkdWbWFXNWxaRHRjYmlBZ2JHVjBJSFJ2YjJ4MGFYQTZJSE4wY21sdVp5QjhJSFZ1WkdWbWFXNWxaRHRjYmlBZ2JHVjBJSGRwWkhSb09pQnpkSEpwYm1jZ2ZDQjFibVJsWm1sdVpXUTdYRzVjYmlBZ2FXWWdLR2x6VW5WdWJtbHVaeWtnZTF4dUlDQWdJSFJ2YjJ4MGFYQWdQU0FuUTJGdVkyVnNJR0ZzYkNCeGRXVnlhV1Z6Snp0Y2JseHVJQ0FnSUdsbUlDaDNhWFJvVkdWNGRDa2dlMXh1SUNBZ0lDQWdkR1Y0ZENBOUlDZERZVzVqWld3bk8xeHVJQ0FnSUgxY2JpQWdmVnh1WEc0Z0lHbG1JQ2gzYVhSb1ZHVjRkQ2tnZTF4dUlDQWdJSGRwWkhSb0lEMGdKemsyY0hnbk8xeHVJQ0I5WEc1Y2JpQWdjbVYwZFhKdUlDaGNiaUFnSUNBOFVtVm1jbVZ6YUZCcFkydGxjbHh1SUNBZ0lDQWdjMmh2ZDBGMWRHOUpiblJsY25aaGJEMTdZWFYwYjBWdVlXSnNaV1I5WEc0Z0lDQWdJQ0IyWVd4MVpUMTdjbVZtY21WemFIMWNiaUFnSUNBZ0lHbHVkR1Z5ZG1Gc2N6MTdhVzUwWlhKMllXeHpmVnh1SUNBZ0lDQWdkRzl2YkhScGNEMTdkRzl2YkhScGNIMWNiaUFnSUNBZ0lIZHBaSFJvUFh0M2FXUjBhSDFjYmlBZ0lDQWdJSFJsZUhROWUzUmxlSFI5WEc0Z0lDQWdJQ0J2YmxKbFpuSmxjMmc5ZTIxdlpHVnNMbTl1VW1WbWNtVnphSDFjYmlBZ0lDQWdJSEJ5YVcxaGNuazllM0J5YVcxaGNubDlYRzRnSUNBZ0lDQnZia2x1ZEdWeWRtRnNRMmhoYm1kbFpEMTdiVzlrWld3dWIyNUpiblJsY25aaGJFTm9ZVzVuWldSOVhHNGdJQ0FnSUNCcGMweHZZV1JwYm1jOWUybHpVblZ1Ym1sdVozMWNiaUFnSUNBZ0lHbHpUMjVEWVc1MllYTTllMmx6VDI1RFlXNTJZWE1nUHo4Z2RISjFaWDFjYmlBZ0lDQXZQbHh1SUNBcE8xeHVmVnh1WEc1bWRXNWpkR2x2YmlCMWMyVlJkV1Z5ZVVOdmJuUnliMnhzWlhKVGRHRjBaU2h0YjJSbGJEb2dVMk5sYm1WUFltcGxZM1FwT2lCaWIyOXNaV0Z1SUh0Y2JpQWdZMjl1YzNRZ2NYVmxjbmxEYjI1MGNtOXNiR1Z5SUQwZ2MyTmxibVZIY21Gd2FDNW5aWFJSZFdWeWVVTnZiblJ5YjJ4c1pYSW9iVzlrWld3cE8xeHVJQ0JwWmlBb0lYRjFaWEo1UTI5dWRISnZiR3hsY2lrZ2UxeHVJQ0FnSUhKbGRIVnliaUJtWVd4elpUdGNiaUFnZlZ4dVhHNGdJSEpsZEhWeWJpQnhkV1Z5ZVVOdmJuUnliMnhzWlhJdWRYTmxVM1JoZEdVb0tTNXBjMUoxYm01cGJtYzdYRzU5WEc1Y2JtWjFibU4wYVc5dUlHbHpTVzUwWlhKMllXeFRkSEpwYm1jb2MzUnlPaUJ6ZEhKcGJtY3BPaUJpYjI5c1pXRnVJSHRjYmlBZ2RISjVJSHRjYmlBZ0lDQmpiMjV6ZENCeVpYTWdQU0J5WVc1blpWVjBhV3d1WkdWelkzSnBZbVZKYm5SbGNuWmhiQ2h6ZEhJcE8xeHVJQ0FnSUhKbGRIVnliaUJ5WlhNdVkyOTFiblFnUGlBd08xeHVJQ0I5SUdOaGRHTm9JSHRjYmlBZ0lDQnlaWFIxY200Z1ptRnNjMlU3WEc0Z0lIMWNibjFjYmlKZExDSnVZVzFsY3lJNld5SmZZU0pkTENKdFlYQndhVzVuY3lJNklqczdPenM3T3pzN096czdPenM3T3pzN096czdPenM3T3pzN08wRkJWMkVzVFVGQlFTeHBRa0ZCUVN4SFFVRnZRaXhEUVVGRExFbEJRVUVzUlVGQlRTeExRVUZQTEVWQlFVRXNTMEZCUVN4RlFVRlBMRWxCUVUwc1JVRkJRU3hKUVVGQkxFVkJRVTBzUzBGQlR5eEZRVUZCTEV0QlFVRXNSVUZCVHl4SlFVRk5MRVZCUVVFc1NVRkJRU3hGUVVGTkxFbEJRVWtzUlVGQlFUdEJRWFZDZWtZc1RVRkJUU3d5UWtGQk1rSXNaVUZCZVVNc1EwRkJRVHRCUVVGQkxFVkJUM2hGTEZsQlFWa3NTMEZCZVVNc1JVRkJRVHRCUVhwRE9VUXNTVUZCUVN4SlFVRkJMRVZCUVVFc1JVRkJRU3hGUVVGQkxFVkJRVUVzUlVGQlFTeERRVUZCTzBGQk1FTkpMRWxCUVUwc1RVRkJRU3g1UWtGQlFTeEhRVUUwUWl4RFFVRkRMRU5CUVdNc1MwRkJRVHRCUVRGRGNrUXNUVUZCUVVFc1NVRkJRVUVzUjBGQlFVRXNRMEZCUVVFN1FVRXlRMDBzVFVGQlFTeE5RVUZOTEdWQlFXTkJMRWRCUVVFc1IwRkJRU3hMUVVGQkxFTkJRVTBzYTBKQlFVNHNTMEZCUVN4SlFVRkJMRWRCUVVGQkxFMUJRVFJDTEUxQlFVOHNRMEZCUVN4clFrRkJRU3hEUVVGQk8wRkJRM1pFTEUxQlFVa3NTVUZCUVR0QlFVTkdMRkZCUVU4c1QwRkJRU3hYUVVGQkxFZEJRV01zVlVGQlZTeFpRVUZoTEVOQlFVRXNRMEZCUXl4TFFVRkxMRk5CUVZVc1EwRkJRU3haUVVGQkxFTkJRV0VzVjBGQlZ5eERRVUZKTEVkQlFVRXNTVUZCUVN4RFFVRkJPMEZCUVVFc1pVRkRha1lzUTBGQlVDeEZRVUZCTzBGQlJVRXNVVUZCVHl4UFFVRkJMRXRCUVVFc1EwRkJRVHRCUVVGQkxFOUJRMVE3UVVGQlFTeExRVU5HTEVOQlFVRTdRVUZGUVN4SlFVRk5MRXRCUVVFc1EwRkJRU3hoUVVGQkxFTkJRVUVzWTBGQlFTeERRVUZCTzBGQlFVRXNUVUZEU2l4UFFVRlRMRVZCUVVFc1JVRkJRVHRCUVVGQkxFdEJRVUVzUlVGRFRpeExRVVpETEVOQlFVRXNSVUZCUVR0QlFVRkJMRTFCUjBvc1UwRkJWeXhGUVVGQkxFdEJRVUVzUTBGQlFUdEJRVUZCTEUxQlExZ3NWMEZCUVN4RlFVRkJMRU5CUVdFc1JVRkJUU3hIUVVGQkxFdEJRVUVzUTBGQlFTeFhRVUZCTEV0QlFVNHNTVUZCY1VJc1IwRkJRU3hGUVVGQkxFZEJRVUVzU1VGQlFUdEJRVUZCTEUxQlEyeERMR1ZCUVdsQ0xFVkJRVUVzUTBGQlFTeEZRVUZCTEVkQlFVRXNTMEZCUVN4RFFVRk5MR1ZCUVU0c1MwRkJRU3hKUVVGQkxFZEJRVUVzUlVGQlFTeEhRVUY1UWl4TlFVRlBMRU5CUVVFc2EwSkJRVUU3UVVGQlFTeE5RVU5xUkN4aFFVRlpMRVZCUVUwc1IwRkJRU3hMUVVGQkxFTkJRVUVzVTBGQlFTeExRVUZPTEVsQlFXMUNMRWRCUVVFc1JVRkJRU3hIUVVGQkxHbENRVUZCTEVWQlFXMUNMRTlCUVU4c2VVSkJRWGxDTEVOQlFVRTdRVUZCUVN4TFFVTnVSaXhEUVVGQkxFTkJRVUVzUTBGQlFUdEJRWFpDU0N4SlFVRlZMRWxCUVVFc1EwRkJRU3hSUVVGQkxFZEJRVmNzU1VGQlNTeDNRa0ZCZVVJc1EwRkJRU3hKUVVGQkxFVkJRVTBzUlVGQlJTeEpRVUZOTEVWQlFVRXNRMEZCUXl4VFFVRlRMRU5CUVVFc1JVRkJSeXhEUVVGQkxFTkJRVUU3UVVGSE4wVXNTVUZCUVN4SlFVRkJMRU5CUVZFc2JVSkJRU3RDTEVkQlFVRXNTMEZCUVN4RFFVRkJPMEZCTmtOMlF5eEpRVUZCTEVsQlFVRXNRMEZCVHl4WlFVRlpMRTFCUVUwN1FVRkRka0lzVFVGQlRTeE5RVUZCTEdWQlFVRXNSMEZCYTBJc1ZVRkJWeXhEUVVGQkxHdENRVUZCTEVOQlFXMUNMRWxCUVVrc1EwRkJRU3hEUVVGQk8wRkJRekZFTEUxQlFVa3NTVUZCUVN4bFFVRkJMRWxCUVVFc1NVRkJRU3hIUVVGQkxFdEJRVUVzUTBGQlFTeEhRVUZCTEdWQlFVRXNRMEZCYVVJc1RVRkJUU3hUUVVGWExFVkJRVUU3UVVGRGNFTXNVVUZCUVN4bFFVRkJMRU5CUVdkQ0xGTkJRVlVzUlVGQlFTeERRVUZCTzBGQlF6RkNMRkZCUVVFc1QwRkJRVHRCUVVGQkxFOUJRMFk3UVVGRlFTeE5RVUZOTEUxQlFVRXNVMEZCUVN4SFFVRlpMRlZCUVZjc1EwRkJRU3haUVVGQkxFTkJRV0VzU1VGQlNTeERRVUZCTEVOQlFVRTdRVUZGT1VNc1RVRkJRU3hKUVVGSkxFdEJRVXNzWTBGQlowSXNSVUZCUVR0QlFVTjJRaXhSUVVGQkxHRkJRVUVzUTBGQll5eExRVUZMTEdOQlFXTXNRMEZCUVN4RFFVRkJPMEZCUVVFc1QwRkRia003UVVGRlFTeE5RVUZCTEZOQlFVRXNRMEZCVlN4VFFVRlZMRVZCUVVFc1EwRkJRVHRCUVVOd1FpeE5RVUZCTEVsQlFVRXNRMEZCU3l4clFrRkJiVUlzUlVGQlFTeERRVUZCTzBGQlFVRXNTMEZETVVJc1EwRkJRVHRCUVVWQkxFbEJRVThzU1VGQlFTeERRVUZCTEdsQ1FVRkJMRWRCUVc5Q0xFTkJRVU1zVVVGQmNVSXNTMEZCUVR0QlFVTXZReXhOUVVGQkxFbEJRVUVzUTBGQlN5eFJRVUZUTEVOQlFVRXNSVUZCUlN4UFFVRlRMRVZCUVVFc1VVRkJRU3hGUVVGVkxFTkJRVUVzUTBGQlFUdEJRVU51UXl4TlFVRkJMRWxCUVVFc1EwRkJTeXhyUWtGQmJVSXNSVUZCUVN4RFFVRkJPMEZCUVVFc1MwRkRNVUlzUTBGQlFUdEJRVFJDUVN4SlFVRkJMRWxCUVVFc1EwRkJVU3cyUWtGQk5rSXNUVUZCVFR0QlFVVjZReXhOUVVGQkxFOUJRVThzVjBGQlZ5eFpRVUZoTEVOQlFVRXNTVUZCU1N4RlFVRkZMR2RDUVVGcFFpeERRVUZCTEVOQlFVTXNWVUZCVlN4VFFVRmpMRXRCUVVFN1FVRkROMFVzVVVGQlFTeEpRVUZKTEZOQlFWTXNTVUZCVXl4TFFVRkJMRk5CUVVFc1EwRkJWU3hSUVVGUkxGRkJRVk1zUTBGQlFTeEZRVUZCTEV0QlFVOHNWVUZCVlN4RlFVRkpMRVZCUVVFN1FVRkRjRVVzVlVGQlFTeEpRVUZCTEVOQlFVc3NhMEpCUVcxQ0xFVkJRVUVzUTBGQlFUdEJRVUZCTEZOQlF6RkNPMEZCUVVFc1QwRkRSQ3hEUVVGQkxFTkJRVUU3UVVGQlFTeExRVU5JTEVOQlFVRTdRVUZGUVN4SlFVRkJMRWxCUVVFc1EwRkJVU3dyUWtGQkswSXNUVUZCVFR0QlFUZEpMME1zVFVGQlFTeEpRVUZCTEVWQlFVRXNRMEZCUVR0QlFUaEpTU3hOUVVGTkxFMUJRVUVzVTBGQlFTeEhRVUZaTEZWQlFWY3NRMEZCUVN4WlFVRkJMRU5CUVdFc1NVRkJTU3hEUVVGQkxFTkJRVUU3UVVGRE9VTXNUVUZCVFN4TlFVRkJMRlZCUVVFc1IwRkJRU3hEUVVGaExFVkJRVkVzUjBGQlFTeE5RVUZCTEVsQlFVRXNTVUZCUVN4SFFVRkJMRXRCUVVFc1EwRkJRU3hIUVVGQkxFMUJRVUVzUTBGQlFTeFZRVUZCTEV0QlFWSXNTVUZCYzBJc1IwRkJRU3hGUVVGQkxFZEJRVUVzUjBGQlFTeERRVUZCTzBGQlEzcERMRTFCUVU4c1QwRkJRU3hUUVVGQkxFTkJRVlVzYTBKQlFXdENMRk5CUVZVc1EwRkJRU3hMUVVGQkxFTkJRVTBzVDBGQlR5eFZRVUZaTEVWQlFVRXNTVUZCUVN4RFFVRkxMRTFCUVUwc1pVRkJaU3hEUVVGQkxFTkJRVUU3UVVGQlFTeExRVU5zUnl4RFFVRkJPMEZCVFVFc1NVRkJRU3hKUVVGQkxFTkJRVkVzY1VKQlFYRkNMRTFCUVUwN1FVRjJTbkpETEUxQlFVRXNTVUZCUVN4RlFVRkJMRU5CUVVFN1FVRjNTa2tzVFVGQlRTeE5RVUZCTEZOQlFVRXNSMEZCV1N4VlFVRlhMRU5CUVVFc1dVRkJRU3hEUVVGaExFbEJRVWtzUTBGQlFTeERRVUZCTzBGQlF6bERMRTFCUVVFc1RVRkJUU3hGUVVGRkxFOUJRVUVzUlVGQlV5eFRRVUZWTEVWQlFVRXNSMEZCU1N4SlFVRkxMRU5CUVVFc1MwRkJRU3hEUVVGQk8wRkJSWEJETEUxQlFVa3NTVUZCUVN4SlFVRkJMRU5CUVVzc1kwRkJhMElzU1VGQlFTeFBRVUZCTEV0QlFWa3NSVUZCU1N4RlFVRkJPMEZCUTNwRExGRkJRVUVzWVVGQlFTeERRVUZqTEV0QlFVc3NZMEZCWXl4RFFVRkJMRU5CUVVFN1FVRkJRU3hQUVVOdVF6dEJRVVZCTEUxQlFVRXNTVUZCU1N4WlFVRlpMRVZCUVVrc1JVRkJRVHRCUVVOc1FpeFJRVUZCTEU5QlFVRTdRVUZCUVN4UFFVTkdPMEZCUjBFc1RVRkJTU3hKUVVGQkxFOUJRVUVzUzBGQldTeGpRVUZqTEZWQlFWY3NRMEZCUVN4TFFVRkJMRWxCUVZNc1lVRkJZU3hEUVVGRExGTkJRVUVzUTBGQlZTeFJRVUZUTEVOQlFVRXNUMEZCVHl4RFFVRkhMRVZCUVVFN1FVRkRNMFlzVVVGQlFTeFBRVUZCTzBGQlFVRXNUMEZEUmp0QlFVVkJMRTFCUVVrc1NVRkJRU3hWUVVGQkxFTkJRVUU3UVVGSFNpeE5RVUZCTEVOQlFVRXNSVUZCUVN4SFFVRkJMRWxCUVVFc1EwRkJTeXd5UWtGQlRDeEpRVUUyUWl4SFFVRkJMRXRCUVVFc1EwRkJRU3hIUVVGQkxFVkJRVUVzUTBGQlFTeFhRVUZCTEVWQlFVRXNRMEZCUVR0QlFVVTNRaXhOUVVGSkxFbEJRVUVzVDBGQlFTeExRVUZaTEdGQlFXTXNRMEZCUVN4VlFVRkJMRU5CUVZjc1MwRkJUeXhGUVVGQk8wRkJRemxETEZGQlFVMHNUVUZCUVN4dFFrRkJRU3hIUVVGelFpeExRVUZMTERSQ1FVRTJRaXhGUVVGQkxFTkJRVUU3UVVGRk9VUXNVVUZCUVN4VlFVRkJMRWRCUVdFc2JVSkJRVzlDTEVOQlFVRXNWVUZCUVN4RFFVRkJPMEZCUldwRExGRkJRVXNzU1VGQlFTeERRVUZCTEhOQ1FVRkJMRWRCUVhsQ0xFdEJRVXNzTUVKQlFUSkNMRVZCUVVFc1EwRkJRVHRCUVVVNVJDeFJRVUZCTEVsQlFVa3NiVUpCUVc5Q0xFTkJRVUVzVVVGQlFTeExRVUZoTEVsQlFVc3NRMEZCUVN4TFFVRkJMRU5CUVUwc1UwRkJWeXhGUVVGQk8wRkJRM3BFTEZWQlFVRXNTVUZCUVN4RFFVRkxMRkZCUVZNc1EwRkJRU3hGUVVGRkxGTkJRVmNzUlVGQlFTeHRRa0ZCUVN4RFFVRnZRaXhWUVVGVkxFTkJRVUVzUTBGQlFUdEJRVUZCTEZOQlF6TkVPMEZCUVVFc1QwRkRTeXhOUVVGQk8wRkJRMHdzVVVGQllTeFZRVUZCTEVkQlFVRXNVMEZCUVN4RFFVRlZMR0ZCUVdFc1QwRkJUeXhEUVVGQkxFTkJRVUU3UVVGQlFTeFBRVU0zUXp0QlFVVkJMRTFCUVVzc1NVRkJRU3hEUVVGQkxHTkJRVUVzUjBGQmFVSXNXVUZCV1N4TlFVRk5PMEZCUTNSRExGRkJRVWtzU1VGQlFTeEpRVUZCTEVOQlFVc3NZMEZCWjBJc1JVRkJRVHRCUVVOMlFpeFZRVUZCTEZOQlFVRXNRMEZCVlN4VFFVRlZMRVZCUVVFc1EwRkJRVHRCUVVGQkxGTkJRMllzVFVGQlFUdEJRVU5NTEZWQlFVRXNTVUZCUVN4RFFVRkxMRzFDUVVGelFpeEhRVUZCTEVsQlFVRXNRMEZCUVR0QlFVRkJMRk5CUXpkQ08wRkJRVUVzVTBGRFF5eFZRVUZWTEVOQlFVRXNRMEZCUVR0QlFVRkJMRXRCUTJZc1EwRkJRVHRCUVhKSlJTeEpRVUZCTEVsQlFVRXNRMEZCU3l4eFFrRkJjVUlzVFVGQlRUdEJRVU01UWl4TlFVRkJMRWxCUVVFc1EwRkJTeXhyUWtGQmJVSXNSVUZCUVN4RFFVRkJPMEZCUlhoQ0xFMUJRVUVzVFVGQlRTeHhRa0ZCY1VJc1RVRkJUVHRCUVVNdlFpeFJRVUZCTEVsQlFVa3NTVUZCU3l4RFFVRkJMRzFDUVVGQkxFbEJRWFZDTEZGQlFWTXNRMEZCUVN4bFFVRkJMRXRCUVc5Q0xGTkJRVmNzUlVGQlFUdEJRVU4wUlN4VlFVRkJMRWxCUVVFc1EwRkJTeXh0UWtGQmMwSXNSMEZCUVN4TFFVRkJMRU5CUVVFN1FVRkRNMElzVlVGQlFTeEpRVUZCTEVOQlFVc3NVMEZCVlN4RlFVRkJMRU5CUVVFN1FVRkJRU3hUUVVOcVFqdEJRVUZCTEU5QlEwWXNRMEZCUVR0QlFVVkJMRTFCUVZNc1VVRkJRU3hEUVVGQkxHZENRVUZCTEVOQlFXbENMRzlDUVVGdlFpeHJRa0ZCYTBJc1EwRkJRU3hEUVVGQk8wRkJSV2hGTEUxQlFVRXNUMEZCVHl4TlFVRk5PMEZCZWtWdVFpeFJRVUZCUVN4SlFVRkJRU3hIUVVGQlFTeERRVUZCUVR0QlFUQkZVU3hSUVVGQkxFbEJRVWtzUzBGQlN5eGpRVUZuUWl4RlFVRkJPMEZCUTNaQ0xGVkJRVUVzWVVGQlFTeERRVUZqTEV0QlFVc3NZMEZCWXl4RFFVRkJMRU5CUVVFN1FVRkJRU3hUUVVOdVF6dEJRVVZCTEZGQlFWTXNVVUZCUVN4RFFVRkJMRzFDUVVGQkxFTkJRVzlDTEc5Q1FVRnZRaXhyUWtGQmEwSXNRMEZCUVN4RFFVRkJPMEZCUTI1RkxGRkJRVUVzUTBGQlFVRXNSMEZCUVN4SFFVRkJMRWxCUVVFc1EwRkJTeXh6UWtGQlRDeExRVUZCTEVsQlFVRXNSMEZCUVN4TFFVRkJMRU5CUVVFc1IwRkJRVUVzUjBGQk5rSXNRMEZCUVN4WFFVRkJMRVZCUVVFc1EwRkJRVHRCUVVGQkxFOUJReTlDTEVOQlFVRTdRVUZCUVN4TFFVTkVMRU5CUVVFc1EwRkJRVHRCUVVGQkxFZEJRMGc3UVVGQlFTeEZRWGRDVHl4WFFVRmpMRWRCUVVFN1FVRkRia0lzU1VGQlNTeEpRVUZCTEU5QlFVRXNSMEZCT0VJc1MwRkJTeXhMUVVGTkxFTkJRVUVzVDBGQlFTeERRVUZCTzBGQlJUZERMRWxCUVVFc1NVRkJTU3hQUVVGUExFOUJRVUVzUzBGQldTeFJRVUZaTEVsQlFVRXNUMEZCUVN4RFFVRlJMRmRCUVZjc1EwRkJSeXhGUVVGQk8wRkJRM1pFTEUxQlFWVXNUMEZCUVN4SFFVRkJMRXRCUVVFc1EwRkJRU3hEUVVGQk8wRkJRVUVzUzBGRFdqdEJRVVZCTEVsQlFVRXNUMEZCVHl4RlFVRkZMRTlCUVZFc1JVRkJRU3hEUVVGQk8wRkJRVUVzUjBGRGJrSTdRVUZCUVN4RlFVVlBMR05CUVdNc1RVRkJPRUlzUlVGQlFUdEJRVU5xUkN4SlFVRk5MRTFCUVVFc1JVRkJSU3hUUVVGVkxFVkJRVUVzUjBGQlNTeEpRVUZMTEVOQlFVRXNTMEZCUVN4RFFVRkJPMEZCUXpOQ0xFbEJRVUVzU1VGQlNTeFZRVUZWTEUxQlFVOHNRMEZCUVN4UFFVRkJMRU5CUVVFN1FVRkZja0lzU1VGQlFTeEpRVUZKTEU5QlFVOHNUMEZCUVN4TFFVRlpMRkZCUVZrc1NVRkJRU3huUWtGQlFTeERRVUZwUWl4UFFVRlBMRU5CUVVjc1JVRkJRVHRCUVVNMVJDeE5RVUZKTEVsQlFVRXNVMEZCUVN4SlFVRkJMRWxCUVVFc1IwRkJRU3hMUVVGQkxFTkJRVUVzUjBGQlFTeFRRVUZCTEVOQlFWY3NVMEZCVXl4UFFVRlZMRU5CUVVFc1JVRkJRVHRCUVVOb1F5eFJRVUZMTEVsQlFVRXNRMEZCUVN4UlFVRkJMRU5CUVZNc1JVRkJSU3hQUVVGQkxFVkJRVk1zUTBGQlFTeERRVUZCTzBGQlFVRXNUMEZEY0VJc1RVRkJRVHRCUVVOTUxGRkJRVUVzU1VGQlFTeERRVUZMTEZGQlFWTXNRMEZCUVR0QlFVRkJMRlZCUlZvc1QwRkJRU3hGUVVGVExGTkJRVmtzUjBGQlFTeFRRVUZCTEVOQlFWVXNRMEZCU3l4RFFVRkJMRWRCUVVFc1MwRkJRU3hEUVVGQk8wRkJRVUVzVTBGRGNrTXNRMEZCUVN4RFFVRkJPMEZCUVVFc1QwRkRTRHRCUVVGQkxFdEJRMFk3UVVGQlFTeEhRVU5HTzBGQlFVRXNSVUZwUWxFc1dVRkJaU3hIUVVGQk8wRkJRM0pDTEVsQlFVRXNUMEZCVHl4UlFVRlRMRU5CUVVFc1pVRkJRU3hMUVVGdlFpeExRVUZoTEVOQlFVRXNTVUZCUVN4UlFVRkJMRU5CUVZNc1pVRkJiMElzUzBGQlFTeFRRVUZCTEVOQlFVRTdRVUZCUVN4SFFVTm9SanRCUVRoRFJpeERRVUZCTzBGQmFrdGhMR3RDUVVGQkxFTkJRMGNzVTBGQldTeEhRVUZCTERCQ1FVRkJMRU5CUVVFN1FVRnJTMW9zVTBGQlFTd3dRa0ZCUVN4RFFVRXlRaXhGUVVGRkxFdEJRVUVzUlVGQmEwUXNSVUZCUVR0QlFYSk5MMFlzUlVGQlFTeEpRVUZCTEVWQlFVRXNRMEZCUVR0QlFYTk5SU3hGUVVGTkxFMUJRVUVzUlVGQlJTeFBRVUZUTEVWQlFVRXNVMEZCUVN4RlFVRlhMRmRCUVdFc1JVRkJRU3hUUVVGQkxFVkJRVmNzV1VGQldTeFBRVUZUTEVWQlFVRXNVVUZCUVN4RlFVRmhMRWRCUVVFc1MwRkJRU3hEUVVGTkxGRkJRVk1zUlVGQlFTeERRVUZCTzBGQlEzSkhMRVZCUVUwc1RVRkJRU3hUUVVGQkxFZEJRVmtzZDBKQlFYZENMRXRCUVVzc1EwRkJRU3hEUVVGQk8wRkJSUzlETEVWQlFVa3NTVUZCUVN4SlFVRkJMRWRCUVU4c1kwRkJXU3hGUVVGakxFZEJRVUVzWVVGQlFTeERRVUZCTEZWQlFVRXNTMEZCWkN4dFFrRkJNRUlzUzBGQlVTeERRVUZCTEVkQlFVRXNVMEZCUVN4SFFVRlpMRmRCUVZjc1UwRkJXU3hIUVVGQkxFdEJRVUVzUTBGQlFTeERRVUZCTzBGQlF6VkdMRVZCUVVrc1NVRkJRU3hQUVVGQkxFTkJRVUU3UVVGRFNpeEZRVUZKTEVsQlFVRXNTMEZCUVN4RFFVRkJPMEZCUlVvc1JVRkJRU3hKUVVGSkxGTkJRVmNzUlVGQlFUdEJRVU5pTEVsQlFWVXNUMEZCUVN4SFFVRkJMRzlDUVVGQkxFTkJRVUU3UVVGRlZpeEpRVUZCTEVsQlFVa3NVVUZCVlN4RlFVRkJPMEZCUTFvc1RVRkJUeXhKUVVGQkxFZEJRVUVzVVVGQlFTeERRVUZCTzBGQlFVRXNTMEZEVkR0QlFVRkJMRWRCUTBZN1FVRkZRU3hGUVVGQkxFbEJRVWtzVVVGQlZTeEZRVUZCTzBGQlExb3NTVUZCVVN4TFFVRkJMRWRCUVVFc1RVRkJRU3hEUVVGQk8wRkJRVUVzUjBGRFZqdEJRVVZCTEVWQlFVRXNkVUpCUTBjc1MwRkJRU3hEUVVGQkxHRkJRVUVzUTBGQlFTeGhRVUZCTEVWQlFVRTdRVUZCUVN4SlFVTkRMR2RDUVVGclFpeEZRVUZCTEZkQlFVRTdRVUZCUVN4SlFVTnNRaXhMUVVGUExFVkJRVUVzVDBGQlFUdEJRVUZCTEVsQlExQXNVMEZCUVR0QlFVRkJMRWxCUTBFc1QwRkJRVHRCUVVGQkxFbEJRMEVzUzBGQlFUdEJRVUZCTEVsQlEwRXNTVUZCUVR0QlFVRkJMRWxCUTBFc1YwRkJWeXhMUVVGTkxFTkJRVUVzVTBGQlFUdEJRVUZCTEVsQlEycENMRTlCUVVFN1FVRkJRU3hKUVVOQkxHMUNRVUZ0UWl4TFFVRk5MRU5CUVVFc2FVSkJRVUU3UVVGQlFTeEpRVU42UWl4VFFVRlhMRVZCUVVFc1UwRkJRVHRCUVVGQkxFbEJRMWdzV1VGQldTeFZRVUZqTEVsQlFVRXNTVUZCUVN4SFFVRkJMRlZCUVVFc1IwRkJRU3hKUVVGQk8wRkJRVUVzUjBGRE5VSXNRMEZCUVN4RFFVRkJPMEZCUlVvc1EwRkJRVHRCUVVWQkxGTkJRVk1zZDBKQlFYZENMRXRCUVRaQ0xFVkJRVUU3UVVGRE5VUXNSVUZCVFN4TlFVRkJMR1ZCUVVFc1IwRkJhMElzVlVGQlZ5eERRVUZCTEd0Q1FVRkJMRU5CUVcxQ0xFdEJRVXNzUTBGQlFTeERRVUZCTzBGQlF6TkVMRVZCUVVFc1NVRkJTU3hEUVVGRExHVkJRV2xDTEVWQlFVRTdRVUZEY0VJc1NVRkJUeXhQUVVGQkxFdEJRVUVzUTBGQlFUdEJRVUZCTEVkQlExUTdRVUZGUVN4RlFVRlBMRTlCUVVFc1pVRkJRU3hEUVVGblFpeFZRVUZYTEVOQlFVRXNVMEZCUVN4RFFVRkJPMEZCUTNCRExFTkJRVUU3UVVGRlFTeFRRVUZUTEdsQ1FVRnBRaXhIUVVGelFpeEZRVUZCTzBGQlF6bERMRVZCUVVrc1NVRkJRVHRCUVVOR0xFbEJRVTBzVFVGQlFTeEhRVUZCTEVkQlFVMHNVMEZCVlN4RFFVRkJMR2RDUVVGQkxFTkJRV2xDTEVkQlFVY3NRMEZCUVN4RFFVRkJPMEZCUXpGRExFbEJRVUVzVDBGQlR5eEpRVUZKTEV0QlFWRXNSMEZCUVN4RFFVRkJMRU5CUVVFN1FVRkJRU3hYUVVOaUxFTkJRVTRzUlVGQlFUdEJRVU5CTEVsQlFVOHNUMEZCUVN4TFFVRkJMRU5CUVVFN1FVRkJRU3hIUVVOVU8wRkJRMFk3T3pzN0luMD1cbiJdLCJuYW1lcyI6WyJfYSJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBV2EsTUFBQSxpQkFBQSxHQUFvQixDQUFDLElBQUEsRUFBTSxLQUFPLEVBQUEsS0FBQSxFQUFPLElBQU0sRUFBQSxJQUFBLEVBQU0sS0FBTyxFQUFBLEtBQUEsRUFBTyxJQUFNLEVBQUEsSUFBQSxFQUFNLElBQUksRUFBQTtBQXVCekYsTUFBTSwyQkFBMkIsZUFBeUMsQ0FBQTtBQU94RSxFQUFBLFdBQUEsQ0FBWSxLQUF5QyxFQUFBO0FBekM5RCxJQUFBLElBQUEsSUFBQSxFQUFBLEVBQUEsRUFBQSxDQUFBO0FBMENVLElBQUEsTUFBQSx5QkFBQSxHQUE0QixDQUFDLENBQWMsS0FBQTtBQTFDckRBLE1BQUFBLElBQUFBLEdBQUFBLENBQUFBO0FBMkNNLE1BQUEsTUFBTSxlQUFjQSxHQUFBLEdBQUEsS0FBQSxDQUFNLGtCQUFOLEtBQUEsSUFBQSxHQUFBQSxNQUE0QixNQUFPLENBQUEsa0JBQUEsQ0FBQTtBQUNuRCxNQUFBLElBQUE7QUFDSyxRQUFBLE9BQUEsV0FBQSxHQUFjLFVBQVUsWUFBYSxDQUFBLENBQUMsS0FBSyxTQUFVLENBQUEsWUFBQSxDQUFhLFdBQVcsQ0FBSSxHQUFBLElBQUEsQ0FBQTtBQUFBLE9BQUEsQ0FBQSxPQUNqRixDQURpRixFQUFBO0FBR2pGLFFBQUEsT0FBQSxLQUFBLENBQUE7QUFBQSxPQUFBO0FBQ1QsS0FBQSxDQUFBO0FBR0ksSUFBQSxLQUFBLENBQUEsY0FBQSxjQUFBLENBQUE7TUFDSixPQUFTLEVBQUEsRUFBQTtBQUFBLEtBQUEsRUFD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
|
|
@@ -0,0 +1,139 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { useLocalStorage } from 'react-use';
|
|
3
|
+
import { uniqBy } from 'lodash';
|
|
4
|
+
import { rangeUtil, isDateTime, toUtc } from '@grafana/data';
|
|
5
|
+
import { TimeRangePicker } from '@grafana/ui';
|
|
6
|
+
import { SceneObjectBase } from '../core/SceneObjectBase.js';
|
|
7
|
+
import { sceneGraph } from '../core/sceneGraph/index.js';
|
|
8
|
+
|
|
9
|
+
class SceneTimePicker extends SceneObjectBase {
|
|
10
|
+
constructor() {
|
|
11
|
+
super(...arguments);
|
|
12
|
+
this.onZoom = () => {
|
|
13
|
+
const timeRange = sceneGraph.getTimeRange(this);
|
|
14
|
+
const zoomedTimeRange = getZoomedTimeRange(timeRange.state.value, 2);
|
|
15
|
+
timeRange.onTimeRangeChange(zoomedTimeRange);
|
|
16
|
+
};
|
|
17
|
+
this.onChangeFiscalYearStartMonth = (month) => {
|
|
18
|
+
const timeRange = sceneGraph.getTimeRange(this);
|
|
19
|
+
timeRange.setState({ fiscalYearStartMonth: month });
|
|
20
|
+
};
|
|
21
|
+
this.toAbsolute = () => {
|
|
22
|
+
const timeRange = sceneGraph.getTimeRange(this);
|
|
23
|
+
const timeRangeVal = timeRange.state.value;
|
|
24
|
+
const from = toUtc(timeRangeVal.from);
|
|
25
|
+
const to = toUtc(timeRangeVal.to);
|
|
26
|
+
timeRange.onTimeRangeChange({ from, to, raw: { from, to } });
|
|
27
|
+
};
|
|
28
|
+
this.onMoveBackward = () => {
|
|
29
|
+
const timeRange = sceneGraph.getTimeRange(this);
|
|
30
|
+
const {
|
|
31
|
+
state: { value: range }
|
|
32
|
+
} = timeRange;
|
|
33
|
+
timeRange.onTimeRangeChange(getShiftedTimeRange(TimeRangeDirection.Backward, range, Date.now()));
|
|
34
|
+
};
|
|
35
|
+
this.onMoveForward = () => {
|
|
36
|
+
const timeRange = sceneGraph.getTimeRange(this);
|
|
37
|
+
const {
|
|
38
|
+
state: { value: range }
|
|
39
|
+
} = timeRange;
|
|
40
|
+
timeRange.onTimeRangeChange(getShiftedTimeRange(TimeRangeDirection.Forward, range, Date.now()));
|
|
41
|
+
};
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
SceneTimePicker.Component = SceneTimePickerRenderer;
|
|
45
|
+
function SceneTimePickerRenderer({ model }) {
|
|
46
|
+
const { hidePicker, isOnCanvas } = model.useState();
|
|
47
|
+
const timeRange = sceneGraph.getTimeRange(model);
|
|
48
|
+
const timeZone = timeRange.getTimeZone();
|
|
49
|
+
const timeRangeState = timeRange.useState();
|
|
50
|
+
const [timeRangeHistory, setTimeRangeHistory] = useLocalStorage(HISTORY_LOCAL_STORAGE_KEY, [], {
|
|
51
|
+
raw: false,
|
|
52
|
+
serializer: serializeHistory,
|
|
53
|
+
deserializer: deserializeHistory
|
|
54
|
+
});
|
|
55
|
+
if (hidePicker) {
|
|
56
|
+
return null;
|
|
57
|
+
}
|
|
58
|
+
return /* @__PURE__ */ React.createElement(TimeRangePicker, {
|
|
59
|
+
isOnCanvas: isOnCanvas != null ? isOnCanvas : true,
|
|
60
|
+
value: timeRangeState.value,
|
|
61
|
+
onChange: (range) => {
|
|
62
|
+
if (isAbsolute(range)) {
|
|
63
|
+
setTimeRangeHistory([range, ...timeRangeHistory != null ? timeRangeHistory : []]);
|
|
64
|
+
}
|
|
65
|
+
timeRange.onTimeRangeChange(range);
|
|
66
|
+
},
|
|
67
|
+
timeZone,
|
|
68
|
+
fiscalYearStartMonth: timeRangeState.fiscalYearStartMonth,
|
|
69
|
+
onMoveBackward: model.onMoveBackward,
|
|
70
|
+
onMoveForward: model.onMoveForward,
|
|
71
|
+
onZoom: model.onZoom,
|
|
72
|
+
onChangeTimeZone: timeRange.onTimeZoneChange,
|
|
73
|
+
onChangeFiscalYearStartMonth: model.onChangeFiscalYearStartMonth,
|
|
74
|
+
weekStart: timeRangeState.weekStart,
|
|
75
|
+
history: timeRangeHistory
|
|
76
|
+
});
|
|
77
|
+
}
|
|
78
|
+
function getZoomedTimeRange(timeRange, factor) {
|
|
79
|
+
const timespan = timeRange.to.valueOf() - timeRange.from.valueOf();
|
|
80
|
+
const center = timeRange.to.valueOf() - timespan / 2;
|
|
81
|
+
const newTimespan = timespan === 0 ? 3e4 : timespan * factor;
|
|
82
|
+
const to = center + newTimespan / 2;
|
|
83
|
+
const from = center - newTimespan / 2;
|
|
84
|
+
return { from: toUtc(from), to: toUtc(to), raw: { from: toUtc(from), to: toUtc(to) } };
|
|
85
|
+
}
|
|
86
|
+
var TimeRangeDirection = /* @__PURE__ */ ((TimeRangeDirection2) => {
|
|
87
|
+
TimeRangeDirection2[TimeRangeDirection2["Backward"] = 0] = "Backward";
|
|
88
|
+
TimeRangeDirection2[TimeRangeDirection2["Forward"] = 1] = "Forward";
|
|
89
|
+
return TimeRangeDirection2;
|
|
90
|
+
})(TimeRangeDirection || {});
|
|
91
|
+
function getShiftedTimeRange(dir, timeRange, upperLimit) {
|
|
92
|
+
const oldTo = timeRange.to.valueOf();
|
|
93
|
+
const oldFrom = timeRange.from.valueOf();
|
|
94
|
+
const halfSpan = (oldTo - oldFrom) / 2;
|
|
95
|
+
let fromRaw;
|
|
96
|
+
let toRaw;
|
|
97
|
+
if (dir === 0) {
|
|
98
|
+
fromRaw = oldFrom - halfSpan;
|
|
99
|
+
toRaw = oldTo - halfSpan;
|
|
100
|
+
} else {
|
|
101
|
+
fromRaw = oldFrom + halfSpan;
|
|
102
|
+
toRaw = oldTo + halfSpan;
|
|
103
|
+
if (toRaw > upperLimit && oldTo < upperLimit) {
|
|
104
|
+
toRaw = upperLimit;
|
|
105
|
+
fromRaw = oldFrom;
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
const from = toUtc(fromRaw);
|
|
109
|
+
const to = toUtc(toRaw);
|
|
110
|
+
return {
|
|
111
|
+
from,
|
|
112
|
+
to,
|
|
113
|
+
raw: { from, to }
|
|
114
|
+
};
|
|
115
|
+
}
|
|
116
|
+
const HISTORY_LOCAL_STORAGE_KEY = "grafana.dashboard.timepicker.history";
|
|
117
|
+
function deserializeHistory(value) {
|
|
118
|
+
const values = JSON.parse(value);
|
|
119
|
+
return values.map((item) => rangeUtil.convertRawToRange(item, "utc", void 0, "YYYY-MM-DD HH:mm:ss"));
|
|
120
|
+
}
|
|
121
|
+
function serializeHistory(values) {
|
|
122
|
+
return JSON.stringify(
|
|
123
|
+
limit(
|
|
124
|
+
values.map((v) => ({
|
|
125
|
+
from: typeof v.raw.from === "string" ? v.raw.from : v.raw.from.toISOString(),
|
|
126
|
+
to: typeof v.raw.to === "string" ? v.raw.to : v.raw.to.toISOString()
|
|
127
|
+
}))
|
|
128
|
+
)
|
|
129
|
+
);
|
|
130
|
+
}
|
|
131
|
+
function limit(value) {
|
|
132
|
+
return uniqBy(value, (v) => v.from + v.to).slice(0, 4);
|
|
133
|
+
}
|
|
134
|
+
function isAbsolute(value) {
|
|
135
|
+
return isDateTime(value.raw.from) || isDateTime(value.raw.to);
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
export { SceneTimePicker, TimeRangeDirection, getShiftedTimeRange, getZoomedTimeRange };
|
|
139
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU2NlbmVUaW1lUGlja2VyLmpzIiwic291cmNlcyI6WyIuLi8uLi8uLi9jb21wb25lbnRzL1NjZW5lVGltZVBpY2tlci5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgdXNlTG9jYWxTdG9yYWdlIH0gZnJvbSAncmVhY3QtdXNlJztcbmltcG9ydCB7IHVuaXFCeSB9IGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgeyB0b1V0YywgcmFuZ2VVdGlsLCBpc0RhdGVUaW1lIH0gZnJvbSAnQGdyYWZhbmEvZGF0YSc7XG5pbXBvcnQgeyBUaW1lUmFuZ2VQaWNrZXIgfSBmcm9tICdAZ3JhZmFuYS91aSc7XG5pbXBvcnQgeyBTY2VuZU9iamVjdEJhc2UgfSBmcm9tICcuLi9jb3JlL1NjZW5lT2JqZWN0QmFzZS5qcyc7XG5pbXBvcnQgeyBzY2VuZUdyYXBoIH0gZnJvbSAnLi4vY29yZS9zY2VuZUdyYXBoL2luZGV4LmpzJztcblxuY2xhc3MgU2NlbmVUaW1lUGlja2VyIGV4dGVuZHMgU2NlbmVPYmplY3RCYXNlIHtcbiAgY29uc3RydWN0b3IoKSB7XG4gICAgc3VwZXIoLi4uYXJndW1lbnRzKTtcbiAgICB0aGlzLm9uWm9vbSA9ICgpID0+IHtcbiAgICAgIGNvbnN0IHRpbWVSYW5nZSA9IHNjZW5lR3JhcGguZ2V0VGltZVJhbmdlKHRoaXMpO1xuICAgICAgY29uc3Qgem9vbWVkVGltZVJhbmdlID0gZ2V0Wm9vbWVkVGltZVJhbmdlKHRpbWVSYW5nZS5zdGF0ZS52YWx1ZSwgMik7XG4gICAgICB0aW1lUmFuZ2Uub25UaW1lUmFuZ2VDaGFuZ2Uoem9vbWVkVGltZVJhbmdlKTtcbiAgICB9O1xuICAgIHRoaXMub25DaGFuZ2VGaXNjYWxZZWFyU3RhcnRNb250aCA9IChtb250aCkgPT4ge1xuICAgICAgY29uc3QgdGltZVJhbmdlID0gc2NlbmVHcmFwaC5nZXRUaW1lUmFuZ2UodGhpcyk7XG4gICAgICB0aW1lUmFuZ2Uuc2V0U3RhdGUoeyBmaXNjYWxZZWFyU3RhcnRNb250aDogbW9udGggfSk7XG4gICAgfTtcbiAgICB0aGlzLnRvQWJzb2x1dGUgPSAoKSA9PiB7XG4gICAgICBjb25zdCB0aW1lUmFuZ2UgPSBzY2VuZUdyYXBoLmdldFRpbWVSYW5nZSh0aGlzKTtcbiAgICAgIGNvbnN0IHRpbWVSYW5nZVZhbCA9IHRpbWVSYW5nZS5zdGF0ZS52YWx1ZTtcbiAgICAgIGNvbnN0IGZyb20gPSB0b1V0Yyh0aW1lUmFuZ2VWYWwuZnJvbSk7XG4gICAgICBjb25zdCB0byA9IHRvVXRjKHRpbWVSYW5nZVZhbC50byk7XG4gICAgICB0aW1lUmFuZ2Uub25UaW1lUmFuZ2VDaGFuZ2UoeyBmcm9tLCB0bywgcmF3OiB7IGZyb20sIHRvIH0gfSk7XG4gICAgfTtcbiAgICB0aGlzLm9uTW92ZUJhY2t3YXJkID0gKCkgPT4ge1xuICAgICAgY29uc3QgdGltZVJhbmdlID0gc2NlbmVHcmFwaC5nZXRUaW1lUmFuZ2UodGhpcyk7XG4gICAgICBjb25zdCB7XG4gICAgICAgIHN0YXRlOiB7IHZhbHVlOiByYW5nZSB9XG4gICAgICB9ID0gdGltZVJhbmdlO1xuICAgICAgdGltZVJhbmdlLm9uVGltZVJhbmdlQ2hhbmdlKGdldFNoaWZ0ZWRUaW1lUmFuZ2UoVGltZVJhbmdlRGlyZWN0aW9uLkJhY2t3YXJkLCByYW5nZSwgRGF0ZS5ub3coKSkpO1xuICAgIH07XG4gICAgdGhpcy5vbk1vdmVGb3J3YXJkID0gKCkgPT4ge1xuICAgICAgY29uc3QgdGltZVJhbmdlID0gc2NlbmVHcmFwaC5nZXRUaW1lUmFuZ2UodGhpcyk7XG4gICAgICBjb25zdCB7XG4gICAgICAgIHN0YXRlOiB7IHZhbHVlOiByYW5nZSB9XG4gICAgICB9ID0gdGltZVJhbmdlO1xuICAgICAgdGltZVJhbmdlLm9uVGltZVJhbmdlQ2hhbmdlKGdldFNoaWZ0ZWRUaW1lUmFuZ2UoVGltZVJhbmdlRGlyZWN0aW9uLkZvcndhcmQsIHJhbmdlLCBEYXRlLm5vdygpKSk7XG4gICAgfTtcbiAgfVxufVxuU2NlbmVUaW1lUGlja2VyLkNvbXBvbmVudCA9IFNjZW5lVGltZVBpY2tlclJlbmRlcmVyO1xuZnVuY3Rpb24gU2NlbmVUaW1lUGlja2VyUmVuZGVyZXIoeyBtb2RlbCB9KSB7XG4gIGNvbnN0IHsgaGlkZVBpY2tlciwgaXNPbkNhbnZhcyB9ID0gbW9kZWwudXNlU3RhdGUoKTtcbiAgY29uc3QgdGltZVJhbmdlID0gc2NlbmVHcmFwaC5nZXRUaW1lUmFuZ2UobW9kZWwpO1xuICBjb25zdCB0aW1lWm9uZSA9IHRpbWVSYW5nZS5nZXRUaW1lWm9uZSgpO1xuICBjb25zdCB0aW1lUmFuZ2VTdGF0ZSA9IHRpbWVSYW5nZS51c2VTdGF0ZSgpO1xuICBjb25zdCBbdGltZVJhbmdlSGlzdG9yeSwgc2V0VGltZVJhbmdlSGlzdG9yeV0gPSB1c2VMb2NhbFN0b3JhZ2UoSElTVE9SWV9MT0NBTF9TVE9SQUdFX0tFWSwgW10sIHtcbiAgICByYXc6IGZhbHNlLFxuICAgIHNlcmlhbGl6ZXI6IHNlcmlhbGl6ZUhpc3RvcnksXG4gICAgZGVzZXJpYWxpemVyOiBkZXNlcmlhbGl6ZUhpc3RvcnlcbiAgfSk7XG4gIGlmIChoaWRlUGlja2VyKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbiAgcmV0dXJuIC8qIEBfX1BVUkVfXyAqLyBSZWFjdC5jcmVhdGVFbGVtZW50KFRpbWVSYW5nZVBpY2tlciwge1xuICAgIGlzT25DYW52YXM6IGlzT25DYW52YXMgIT0gbnVsbCA/IGlzT25DYW52YXMgOiB0cnVlLFxuICAgIHZhbHVlOiB0aW1lUmFuZ2VTdGF0ZS52YWx1ZSxcbiAgICBvbkNoYW5nZTogKHJhbmdlKSA9PiB7XG4gICAgICBpZiAoaXNBYnNvbHV0ZShyYW5nZSkpIHtcbiAgICAgICAgc2V0VGltZVJhbmdlSGlzdG9yeShbcmFuZ2UsIC4uLnRpbWVSYW5nZUhpc3RvcnkgIT0gbnVsbCA/IHRpbWVSYW5nZUhpc3RvcnkgOiBbXV0pO1xuICAgICAgfVxuICAgICAgdGltZVJhbmdlLm9uVGltZVJhbmdlQ2hhbmdlKHJhbmdlKTtcbiAgICB9LFxuICAgIHRpbWVab25lLFxuICAgIGZpc2NhbFllYXJTdGFydE1vbnRoOiB0aW1lUmFuZ2VTdGF0ZS5maXNjYWxZZWFyU3RhcnRNb250aCxcbiAgICBvbk1vdmVCYWNrd2FyZDogbW9kZWwub25Nb3ZlQmFja3dhcmQsXG4gICAgb25Nb3ZlRm9yd2FyZDogbW9kZWwub25Nb3ZlRm9yd2FyZCxcbiAgICBvblpvb206IG1vZGVsLm9uWm9vbSxcbiAgICBvbkNoYW5nZVRpbWVab25lOiB0aW1lUmFuZ2Uub25UaW1lWm9uZUNoYW5nZSxcbiAgICBvbkNoYW5nZUZpc2NhbFllYXJTdGFydE1vbnRoOiBtb2RlbC5vbkNoYW5nZUZpc2NhbFllYXJTdGFydE1vbnRoLFxuICAgIHdlZWtTdGFydDogdGltZVJhbmdlU3RhdGUud2Vla1N0YXJ0LFxuICAgIGhpc3Rvcnk6IHRpbWVSYW5nZUhpc3RvcnlcbiAgfSk7XG59XG5mdW5jdGlvbiBnZXRab29tZWRUaW1lUmFuZ2UodGltZVJhbmdlLCBmYWN0b3IpIHtcbiAgY29uc3QgdGltZXNwYW4gPSB0aW1lUmFuZ2UudG8udmFsdWVPZigpIC0gdGltZVJhbmdlLmZyb20udmFsdWVPZigpO1xuICBjb25zdCBjZW50ZXIgPSB0aW1lUmFuZ2UudG8udmFsdWVPZigpIC0gdGltZXNwYW4gLyAyO1xuICBjb25zdCBuZXdUaW1lc3BhbiA9IHRpbWVzcGFuID09PSAwID8gM2U0IDogdGltZXNwYW4gKiBmYWN0b3I7XG4gIGNvbnN0IHRvID0gY2VudGVyICsgbmV3VGltZXNwYW4gLyAyO1xuICBjb25zdCBmcm9tID0gY2VudGVyIC0gbmV3VGltZXNwYW4gLyAyO1xuICByZXR1cm4geyBmcm9tOiB0b1V0Yyhmcm9tKSwgdG86IHRvVXRjKHRvKSwgcmF3OiB7IGZyb206IHRvVXRjKGZyb20pLCB0bzogdG9VdGModG8pIH0gfTtcbn1cbnZhciBUaW1lUmFuZ2VEaXJlY3Rpb24gPSAvKiBAX19QVVJFX18gKi8gKChUaW1lUmFuZ2VEaXJlY3Rpb24yKSA9PiB7XG4gIFRpbWVSYW5nZURpcmVjdGlvbjJbVGltZVJhbmdlRGlyZWN0aW9uMltcIkJhY2t3YXJkXCJdID0gMF0gPSBcIkJhY2t3YXJkXCI7XG4gIFRpbWVSYW5nZURpcmVjdGlvbjJbVGltZVJhbmdlRGlyZWN0aW9uMltcIkZvcndhcmRcIl0gPSAxXSA9IFwiRm9yd2FyZFwiO1xuICByZXR1cm4gVGltZVJhbmdlRGlyZWN0aW9uMjtcbn0pKFRpbWVSYW5nZURpcmVjdGlvbiB8fCB7fSk7XG5mdW5jdGlvbiBnZXRTaGlmdGVkVGltZVJhbmdlKGRpciwgdGltZVJhbmdlLCB1cHBlckxpbWl0KSB7XG4gIGNvbnN0IG9sZFRvID0gdGltZVJhbmdlLnRvLnZhbHVlT2YoKTtcbiAgY29uc3Qgb2xkRnJvbSA9IHRpbWVSYW5nZS5mcm9tLnZhbHVlT2YoKTtcbiAgY29uc3QgaGFsZlNwYW4gPSAob2xkVG8gLSBvbGRGcm9tKSAvIDI7XG4gIGxldCBmcm9tUmF3O1xuICBsZXQgdG9SYXc7XG4gIGlmIChkaXIgPT09IDAgLyogQmFja3dhcmQgKi8pIHtcbiAgICBmcm9tUmF3ID0gb2xkRnJvbSAtIGhhbGZTcGFuO1xuICAgIHRvUmF3ID0gb2xkVG8gLSBoYWxmU3BhbjtcbiAgfSBlbHNlIHtcbiAgICBmcm9tUmF3ID0gb2xkRnJvbSArIGhhbGZTcGFuO1xuICAgIHRvUmF3ID0gb2xkVG8gKyBoYWxmU3BhbjtcbiAgICBpZiAodG9SYXcgPiB1cHBlckxpbWl0ICYmIG9sZFRvIDwgdXBwZXJMaW1pdCkge1xuICAgICAgdG9SYXcgPSB1cHBlckxpbWl0O1xuICAgICAgZnJvbVJhdyA9IG9sZEZyb207XG4gICAgfVxuICB9XG4gIGNvbnN0IGZyb20gPSB0b1V0Yyhmcm9tUmF3KTtcbiAgY29uc3QgdG8gPSB0b1V0Yyh0b1Jhdyk7XG4gIHJldHVybiB7XG4gICAgZnJvbSxcbiAgICB0byxcbiAgICByYXc6IHsgZnJvbSwgdG8gfVxuICB9O1xufVxuY29uc3QgSElTVE9SWV9MT0NBTF9TVE9SQUdFX0tFWSA9IFwiZ3JhZmFuYS5kYXNoYm9hcmQudGltZXBpY2tlci5oaXN0b3J5XCI7XG5mdW5jdGlvbiBkZXNlcmlhbGl6ZUhpc3RvcnkodmFsdWUpIHtcbiAgY29uc3QgdmFsdWVzID0gSlNPTi5wYXJzZSh2YWx1ZSk7XG4gIHJldHVybiB2YWx1ZXMubWFwKChpdGVtKSA9PiByYW5nZVV0aWwuY29udmVydFJhd1RvUmFuZ2UoaXRlbSwgXCJ1dGNcIiwgdm9pZCAwLCBcIllZWVktTU0tREQgSEg6bW06c3NcIikpO1xufVxuZnVuY3Rpb24gc2VyaWFsaXplSGlzdG9yeSh2YWx1ZXMpIHtcbiAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KFxuICAgIGxpbWl0KFxuICAgICAgdmFsdWVzLm1hcCgodikgPT4gKHtcbiAgICAgICAgZnJvbTogdHlwZW9mIHYucmF3LmZyb20gPT09IFwic3RyaW5nXCIgPyB2LnJhdy5mcm9tIDogdi5yYXcuZnJvbS50b0lTT1N0cmluZygpLFxuICAgICAgICB0bzogdHlwZW9mIHYucmF3LnRvID09PSBcInN0cmluZ1wiID8gdi5yYXcudG8gOiB2LnJhdy50by50b0lTT1N0cmluZygpXG4gICAgICB9KSlcbiAgICApXG4gICk7XG59XG5mdW5jdGlvbiBsaW1pdCh2YWx1ZSkge1xuICByZXR1cm4gdW5pcUJ5KHZhbHVlLCAodikgPT4gdi5mcm9tICsgdi50bykuc2xpY2UoMCwgNCk7XG59XG5mdW5jdGlvbiBpc0Fic29sdXRlKHZhbHVlKSB7XG4gIHJldHVybiBpc0RhdGVUaW1lKHZhbHVlLnJhdy5mcm9tKSB8fCBpc0RhdGVUaW1lKHZhbHVlLnJhdy50byk7XG59XG5cbmV4cG9ydCB7IFNjZW5lVGltZVBpY2tlciwgVGltZVJhbmdlRGlyZWN0aW9uLCBnZXRTaGlmdGVkVGltZVJhbmdlLCBnZXRab29tZWRUaW1lUmFuZ2UgfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtjaGFyc2V0PXV0Zi04O2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENKbWFXeGxJam9pVTJObGJtVlVhVzFsVUdsamEyVnlMbXB6SWl3aWMyOTFjbU5sY3lJNld5SXVMaTh1TGk4dUxpOXpjbU12WTI5dGNHOXVaVzUwY3k5VFkyVnVaVlJwYldWUWFXTnJaWEl1ZEhONElsMHNJbk52ZFhKalpYTkRiMjUwWlc1MElqcGJJbWx0Y0c5eWRDQlNaV0ZqZENCbWNtOXRJQ2R5WldGamRDYzdYRzVwYlhCdmNuUWdleUIxYzJWTWIyTmhiRk4wYjNKaFoyVWdmU0JtY205dElDZHlaV0ZqZEMxMWMyVW5PMXh1YVcxd2IzSjBJSHNnZFc1cGNVSjVJSDBnWm5KdmJTQW5iRzlrWVhOb0p6dGNibHh1YVcxd2IzSjBJSHNnVkdsdFpWSmhibWRsTENCcGMwUmhkR1ZVYVcxbExDQnlZVzVuWlZWMGFXd3NJSFJ2VlhSaklIMGdabkp2YlNBblFHZHlZV1poYm1FdlpHRjBZU2M3WEc1cGJYQnZjblFnZXlCVWFXMWxVbUZ1WjJWUWFXTnJaWElnZlNCbWNtOXRJQ2RBWjNKaFptRnVZUzkxYVNjN1hHNWNibWx0Y0c5eWRDQjdJRk5qWlc1bFQySnFaV04wUW1GelpTQjlJR1p5YjIwZ0p5NHVMMk52Y21VdlUyTmxibVZQWW1wbFkzUkNZWE5sSnp0Y2JtbHRjRzl5ZENCN0lITmpaVzVsUjNKaGNHZ2dmU0JtY205dElDY3VMaTlqYjNKbEwzTmpaVzVsUjNKaGNHZ25PMXh1YVcxd2IzSjBJSHNnVTJObGJtVkRiMjF3YjI1bGJuUlFjbTl3Y3l3Z1UyTmxibVZQWW1wbFkzUlRkR0YwWlNCOUlHWnliMjBnSnk0dUwyTnZjbVV2ZEhsd1pYTW5PMXh1WEc1bGVIQnZjblFnYVc1MFpYSm1ZV05sSUZOalpXNWxWR2x0WlZCcFkydGxjbE4wWVhSbElHVjRkR1Z1WkhNZ1UyTmxibVZQWW1wbFkzUlRkR0YwWlNCN1hHNGdJR2hwWkdWUWFXTnJaWEkvT2lCaWIyOXNaV0Z1TzF4dUlDQnBjMDl1UTJGdWRtRnpQem9nWW05dmJHVmhianRjYm4xY2JseHVaWGh3YjNKMElHTnNZWE56SUZOalpXNWxWR2x0WlZCcFkydGxjaUJsZUhSbGJtUnpJRk5qWlc1bFQySnFaV04wUW1GelpUeFRZMlZ1WlZScGJXVlFhV05yWlhKVGRHRjBaVDRnZTF4dUlDQndkV0pzYVdNZ2MzUmhkR2xqSUVOdmJYQnZibVZ1ZENBOUlGTmpaVzVsVkdsdFpWQnBZMnRsY2xKbGJtUmxjbVZ5TzF4dVhHNGdJSEIxWW14cFl5QnZibHB2YjIwZ1BTQW9LU0E5UGlCN1hHNGdJQ0FnWTI5dWMzUWdkR2x0WlZKaGJtZGxJRDBnYzJObGJtVkhjbUZ3YUM1blpYUlVhVzFsVW1GdVoyVW9kR2hwY3lrN1hHNGdJQ0FnWTI5dWMzUWdlbTl2YldWa1ZHbHRaVkpoYm1kbElEMGdaMlYwV205dmJXVmtWR2x0WlZKaGJtZGxLSFJwYldWU1lXNW5aUzV6ZEdGMFpTNTJZV3gxWlN3Z01pazdYRzRnSUNBZ2RHbHRaVkpoYm1kbExtOXVWR2x0WlZKaGJtZGxRMmhoYm1kbEtIcHZiMjFsWkZScGJXVlNZVzVuWlNrN1hHNGdJSDA3WEc1Y2JpQWdjSFZpYkdsaklHOXVRMmhoYm1kbFJtbHpZMkZzV1dWaGNsTjBZWEowVFc5dWRHZ2dQU0FvYlc5dWRHZzZJRzUxYldKbGNpa2dQVDRnZTF4dUlDQWdJR052Ym5OMElIUnBiV1ZTWVc1blpTQTlJSE5qWlc1bFIzSmhjR2d1WjJWMFZHbHRaVkpoYm1kbEtIUm9hWE1wTzF4dUlDQWdJSFJwYldWU1lXNW5aUzV6WlhSVGRHRjBaU2g3SUdacGMyTmhiRmxsWVhKVGRHRnlkRTF2Ym5Sb09pQnRiMjUwYUNCOUtUdGNiaUFnZlR0Y2JseHVJQ0J3ZFdKc2FXTWdkRzlCWW5OdmJIVjBaU0E5SUNncElEMCtJSHRjYmlBZ0lDQmpiMjV6ZENCMGFXMWxVbUZ1WjJVZ1BTQnpZMlZ1WlVkeVlYQm9MbWRsZEZScGJXVlNZVzVuWlNoMGFHbHpLVHRjYmlBZ0lDQmpiMjV6ZENCMGFXMWxVbUZ1WjJWV1lXd2dQU0IwYVcxbFVtRnVaMlV1YzNSaGRHVXVkbUZzZFdVN1hHNGdJQ0FnWTI5dWMzUWdabkp2YlNBOUlIUnZWWFJqS0hScGJXVlNZVzVuWlZaaGJDNW1jbTl0S1R0Y2JpQWdJQ0JqYjI1emRDQjBieUE5SUhSdlZYUmpLSFJwYldWU1lXNW5aVlpoYkM1MGJ5azdYRzRnSUNBZ2RHbHRaVkpoYm1kbExtOXVWR2x0WlZKaGJtZGxRMmhoYm1kbEtIc2dabkp2YlN3Z2RHOHNJSEpoZHpvZ2V5Qm1jbTl0TENCMGJ5QjlJSDBwTzF4dUlDQjlPMXh1WEc0Z0lIQjFZbXhwWXlCdmJrMXZkbVZDWVdOcmQyRnlaQ0E5SUNncElEMCtJSHRjYmlBZ0lDQmpiMjV6ZENCMGFXMWxVbUZ1WjJVZ1BTQnpZMlZ1WlVkeVlYQm9MbWRsZEZScGJXVlNZVzVuWlNoMGFHbHpLVHRjYmlBZ0lDQmpiMjV6ZENCN1hHNGdJQ0FnSUNCemRHRjBaVG9nZXlCMllXeDFaVG9nY21GdVoyVWdmU3hjYmlBZ0lDQjlJRDBnZEdsdFpWSmhibWRsTzF4dVhHNGdJQ0FnZEdsdFpWSmhibWRsTG05dVZHbHRaVkpoYm1kbFEyaGhibWRsS0dkbGRGTm9hV1owWldSVWFXMWxVbUZ1WjJVb1ZHbHRaVkpoYm1kbFJHbHlaV04wYVc5dUxrSmhZMnQzWVhKa0xDQnlZVzVuWlN3Z1JHRjBaUzV1YjNjb0tTa3BPMXh1SUNCOU8xeHVYRzRnSUhCMVlteHBZeUJ2YmsxdmRtVkdiM0ozWVhKa0lEMGdLQ2tnUFQ0Z2UxeHVJQ0FnSUdOdmJuTjBJSFJwYldWU1lXNW5aU0E5SUhOalpXNWxSM0poY0dndVoyVjBWR2x0WlZKaGJtZGxLSFJvYVhNcE8xeHVJQ0FnSUdOdmJuTjBJSHRjYmlBZ0lDQWdJSE4wWVhSbE9pQjdJSFpoYkhWbE9pQnlZVzVuWlNCOUxGeHVJQ0FnSUgwZ1BTQjBhVzFsVW1GdVoyVTdYRzVjYmlBZ0lDQjBhVzFsVW1GdVoyVXViMjVVYVcxbFVtRnVaMlZEYUdGdVoyVW9aMlYwVTJocFpuUmxaRlJwYldWU1lXNW5aU2hVYVcxbFVtRnVaMlZFYVhKbFkzUnBiMjR1Um05eWQyRnlaQ3dnY21GdVoyVXNJRVJoZEdVdWJtOTNLQ2twS1R0Y2JpQWdmVHRjYm4xY2JseHVablZ1WTNScGIyNGdVMk5sYm1WVWFXMWxVR2xqYTJWeVVtVnVaR1Z5WlhJb2V5QnRiMlJsYkNCOU9pQlRZMlZ1WlVOdmJYQnZibVZ1ZEZCeWIzQnpQRk5qWlc1bFZHbHRaVkJwWTJ0bGNqNHBJSHRjYmlBZ1kyOXVjM1FnZXlCb2FXUmxVR2xqYTJWeUxDQnBjMDl1UTJGdWRtRnpJSDBnUFNCdGIyUmxiQzUxYzJWVGRHRjBaU2dwTzF4dUlDQmpiMjV6ZENCMGFXMWxVbUZ1WjJVZ1BTQnpZMlZ1WlVkeVlYQm9MbWRsZEZScGJXVlNZVzVuWlNodGIyUmxiQ2s3WEc0Z0lHTnZibk4wSUhScGJXVmFiMjVsSUQwZ2RHbHRaVkpoYm1kbExtZGxkRlJwYldWYWIyNWxLQ2s3WEc0Z0lHTnZibk4wSUhScGJXVlNZVzVuWlZOMFlYUmxJRDBnZEdsdFpWSmhibWRsTG5WelpWTjBZWFJsS0NrN1hHNGdJR052Ym5OMElGdDBhVzFsVW1GdVoyVklhWE4wYjNKNUxDQnpaWFJVYVcxbFVtRnVaMlZJYVhOMGIzSjVYU0E5SUhWelpVeHZZMkZzVTNSdmNtRm5aVHhVYVcxbFVtRnVaMlZiWFQ0b1NFbFRWRTlTV1Y5TVQwTkJURjlUVkU5U1FVZEZYMHRGV1N3Z1cxMHNJSHRjYmlBZ0lDQnlZWGM2SUdaaGJITmxMRnh1SUNBZ0lITmxjbWxoYkdsNlpYSTZJSE5sY21saGJHbDZaVWhwYzNSdmNua3NYRzRnSUNBZ1pHVnpaWEpwWVd4cGVtVnlPaUJrWlhObGNtbGhiR2w2WlVocGMzUnZjbmtzWEc0Z0lIMHBPMXh1WEc0Z0lHbG1JQ2hvYVdSbFVHbGphMlZ5S1NCN1hHNGdJQ0FnY21WMGRYSnVJRzUxYkd3N1hHNGdJSDFjYmx4dUlDQnlaWFIxY200Z0tGeHVJQ0FnSUR4VWFXMWxVbUZ1WjJWUWFXTnJaWEpjYmlBZ0lDQWdJR2x6VDI1RFlXNTJZWE05ZTJselQyNURZVzUyWVhNZ1B6OGdkSEoxWlgxY2JpQWdJQ0FnSUhaaGJIVmxQWHQwYVcxbFVtRnVaMlZUZEdGMFpTNTJZV3gxWlgxY2JpQWdJQ0FnSUc5dVEyaGhibWRsUFhzb2NtRnVaMlVwSUQwK0lIdGNiaUFnSUNBZ0lDQWdhV1lnS0dselFXSnpiMngxZEdVb2NtRnVaMlVwS1NCN1hHNGdJQ0FnSUNBZ0lDQWdjMlYwVkdsdFpWSmhibWRsU0dsemRHOXllU2hiY21GdVoyVXNJQzR1TGloMGFXMWxVbUZ1WjJWSWFYTjBiM0o1SUQ4L0lGdGRLVjBwTzF4dUlDQWdJQ0FnSUNCOVhHNWNiaUFnSUNBZ0lDQWdkR2x0WlZKaGJtZGxMbTl1VkdsdFpWSmhibWRsUTJoaGJtZGxLSEpoYm1kbEtUdGNiaUFnSUNBZ0lIMTlYRzRnSUNBZ0lDQjBhVzFsV205dVpUMTdkR2x0WlZwdmJtVjlYRzRnSUNBZ0lDQm1hWE5qWVd4WlpXRnlVM1JoY25STmIyNTBhRDE3ZEdsdFpWSmhibWRsVTNSaGRHVXVabWx6WTJGc1dXVmhjbE4wWVhKMFRXOXVkR2g5WEc0Z0lDQWdJQ0J2YmsxdmRtVkNZV05yZDJGeVpEMTdiVzlrWld3dWIyNU5iM1psUW1GamEzZGhjbVI5WEc0Z0lDQWdJQ0J2YmsxdmRtVkdiM0ozWVhKa1BYdHRiMlJsYkM1dmJrMXZkbVZHYjNKM1lYSmtmVnh1SUNBZ0lDQWdiMjVhYjI5dFBYdHRiMlJsYkM1dmJscHZiMjE5WEc0Z0lDQWdJQ0J2YmtOb1lXNW5aVlJwYldWYWIyNWxQWHQwYVcxbFVtRnVaMlV1YjI1VWFXMWxXbTl1WlVOb1lXNW5aWDFjYmlBZ0lDQWdJRzl1UTJoaGJtZGxSbWx6WTJGc1dXVmhjbE4wWVhKMFRXOXVkR2c5ZTIxdlpHVnNMbTl1UTJoaGJtZGxSbWx6WTJGc1dXVmhjbE4wWVhKMFRXOXVkR2g5WEc0Z0lDQWdJQ0F2THlCQWRITXRhV2R1YjNKbElGUlBSRThnY21WdGIzWmxJR0ZtZEdWeUlHZHlZV1poYm1FdmRXa2dkWEJrWVhSbElIUnZJREV4TGpJdU1GeHVJQ0FnSUNBZ2QyVmxhMU4wWVhKMFBYdDBhVzFsVW1GdVoyVlRkR0YwWlM1M1pXVnJVM1JoY25SOVhHNGdJQ0FnSUNCb2FYTjBiM0o1UFh0MGFXMWxVbUZ1WjJWSWFYTjBiM0o1ZlZ4dUlDQWdJQzgrWEc0Z0lDazdYRzU5WEc1Y2JtVjRjRzl5ZENCbWRXNWpkR2x2YmlCblpYUmFiMjl0WldSVWFXMWxVbUZ1WjJVb2RHbHRaVkpoYm1kbE9pQlVhVzFsVW1GdVoyVXNJR1poWTNSdmNqb2diblZ0WW1WeUtUb2dWR2x0WlZKaGJtZGxJSHRjYmlBZ1kyOXVjM1FnZEdsdFpYTndZVzRnUFNCMGFXMWxVbUZ1WjJVdWRHOHVkbUZzZFdWUFppZ3BJQzBnZEdsdFpWSmhibWRsTG1aeWIyMHVkbUZzZFdWUFppZ3BPMXh1SUNCamIyNXpkQ0JqWlc1MFpYSWdQU0IwYVcxbFVtRnVaMlV1ZEc4dWRtRnNkV1ZQWmlncElDMGdkR2x0WlhOd1lXNGdMeUF5TzF4dUlDQXZMeUJKWmlCMGFHVWdkR2x0WlhCellXNGdhWE1nTUN3Z2VtOXZiV2x1WnlCdmRYUWdkMjkxYkdRZ1pHOGdibTkwYUdsdVp5d2djMjhnZDJVZ1ptOXlZMlVnWVNCNmIyOXRJRzkxZENCMGJ5QXpNSE5jYmlBZ1kyOXVjM1FnYm1WM1ZHbHRaWE53WVc0Z1BTQjBhVzFsYzNCaGJpQTlQVDBnTUNBL0lETXdNREF3SURvZ2RHbHRaWE53WVc0Z0tpQm1ZV04wYjNJN1hHNWNiaUFnWTI5dWMzUWdkRzhnUFNCalpXNTBaWElnS3lCdVpYZFVhVzFsYzNCaGJpQXZJREk3WEc0Z0lHTnZibk4wSUdaeWIyMGdQU0JqWlc1MFpYSWdMU0J1WlhkVWFXMWxjM0JoYmlBdklESTdYRzVjYmlBZ2NtVjBkWEp1SUhzZ1puSnZiVG9nZEc5VmRHTW9abkp2YlNrc0lIUnZPaUIwYjFWMFl5aDBieWtzSUhKaGR6b2dleUJtY205dE9pQjBiMVYwWXlobWNtOXRLU3dnZEc4NklIUnZWWFJqS0hSdktTQjlJSDA3WEc1OVhHNWNibVY0Y0c5eWRDQmxiblZ0SUZScGJXVlNZVzVuWlVScGNtVmpkR2x2YmlCN1hHNGdJRUpoWTJ0M1lYSmtMRnh1SUNCR2IzSjNZWEprTEZ4dWZWeHVYRzVsZUhCdmNuUWdablZ1WTNScGIyNGdaMlYwVTJocFpuUmxaRlJwYldWU1lXNW5aU2hrYVhJNklGUnBiV1ZTWVc1blpVUnBjbVZqZEdsdmJpd2dkR2x0WlZKaGJtZGxPaUJVYVcxbFVtRnVaMlVzSUhWd2NHVnlUR2x0YVhRNklHNTFiV0psY2lrNklGUnBiV1ZTWVc1blpTQjdYRzRnSUdOdmJuTjBJRzlzWkZSdklEMGdkR2x0WlZKaGJtZGxMblJ2TG5aaGJIVmxUMllvS1R0Y2JpQWdZMjl1YzNRZ2IyeGtSbkp2YlNBOUlIUnBiV1ZTWVc1blpTNW1jbTl0TG5aaGJIVmxUMllvS1R0Y2JpQWdZMjl1YzNRZ2FHRnNabE53WVc0Z1BTQW9iMnhrVkc4Z0xTQnZiR1JHY205dEtTQXZJREk3WEc1Y2JpQWdiR1YwSUdaeWIyMVNZWGM2SUc1MWJXSmxjanRjYmlBZ2JHVjBJSFJ2VW1GM09pQnVkVzFpWlhJN1hHNGdJR2xtSUNoa2FYSWdQVDA5SUZScGJXVlNZVzVuWlVScGNtVmpkR2x2Ymk1Q1lXTnJkMkZ5WkNrZ2UxeHVJQ0FnSUdaeWIyMVNZWGNnUFNCdmJHUkdjbTl0SUMwZ2FHRnNabE53WVc0N1hHNGdJQ0FnZEc5U1lYY2dQU0J2YkdSVWJ5QXRJR2hoYkdaVGNHRnVPMXh1SUNCOUlHVnNjMlVnZTF4dUlDQWdJR1p5YjIxU1lYY2dQU0J2YkdSR2NtOXRJQ3NnYUdGc1psTndZVzQ3WEc0Z0lDQWdkRzlTWVhjZ1BTQnZiR1JVYnlBcklHaGhiR1pUY0dGdU8xeHVYRzRnSUNBZ2FXWWdLSFJ2VW1GM0lENGdkWEJ3WlhKTWFXMXBkQ0FtSmlCdmJHUlVieUE4SUhWd2NHVnlUR2x0YVhRcElIdGNiaUFnSUNBZ0lIUnZVbUYzSUQwZ2RYQndaWEpNYVcxcGREdGNiaUFnSUNBZ0lHWnliMjFTWVhjZ1BTQnZiR1JHY205dE8xeHVJQ0FnSUgxY2JpQWdmVnh1WEc0Z0lHTnZibk4wSUdaeWIyMGdQU0IwYjFWMFl5aG1jbTl0VW1GM0tUdGNiaUFnWTI5dWMzUWdkRzhnUFNCMGIxVjBZeWgwYjFKaGR5azdYRzRnSUhKbGRIVnliaUI3WEc0Z0lDQWdabkp2YlN4Y2JpQWdJQ0IwYnl4Y2JpQWdJQ0J5WVhjNklIc2dabkp2YlN3Z2RHOGdmU3hjYmlBZ2ZUdGNibjFjYmx4dVkyOXVjM1FnU0VsVFZFOVNXVjlNVDBOQlRGOVRWRTlTUVVkRlgwdEZXU0E5SUNkbmNtRm1ZVzVoTG1SaGMyaGliMkZ5WkM1MGFXMWxjR2xqYTJWeUxtaHBjM1J2Y25rbk8xeHVYRzR2THlCVGFXMXdiR2xtYVdWa0lHOWlhbVZqZENCMGJ5QnpkRzl5WlNCcGJpQnNiMk5oYkNCemRHOXlZV2RsWEc1cGJuUmxjbVpoWTJVZ1ZHbHRaVkJwWTJ0bGNraHBjM1J2Y25sSmRHVnRJSHRjYmlBZ1puSnZiVG9nYzNSeWFXNW5PMXh1SUNCMGJ6b2djM1J5YVc1bk8xeHVmVnh1WEc1bWRXNWpkR2x2YmlCa1pYTmxjbWxoYkdsNlpVaHBjM1J2Y25rb2RtRnNkV1U2SUhOMGNtbHVaeWs2SUZScGJXVlNZVzVuWlZ0ZElIdGNiaUFnWTI5dWMzUWdkbUZzZFdWek9pQlVhVzFsVUdsamEyVnlTR2x6ZEc5eWVVbDBaVzFiWFNBOUlFcFRUMDR1Y0dGeWMyVW9kbUZzZFdVcE8xeHVJQ0F2THlCVWFHVWdhR2x6ZEc5eWVTQnBjeUJ6WVhabFpDQnBiaUJWVkVNZ1lXNWtJSGRwZEdnZ2RHaGxJR1JsWm1GMWJIUWdaR0YwWlNCbWIzSnRZWFFzSUhOdklIZGxJRzVsWldRZ2RHOGdjR0Z6Y3lCMGFHOXpaU0IyWVd4MVpYTWdkRzhnZEdobElHTnZiblpsY25SU1lYZFViMUpoYm1kbFhHNGdJSEpsZEhWeWJpQjJZV3gxWlhNdWJXRndLQ2hwZEdWdEtTQTlQaUJ5WVc1blpWVjBhV3d1WTI5dWRtVnlkRkpoZDFSdlVtRnVaMlVvYVhSbGJTd2dKM1YwWXljc0lIVnVaR1ZtYVc1bFpDd2dKMWxaV1ZrdFRVMHRSRVFnU0VnNmJXMDZjM01uS1NrN1hHNTlYRzVjYm1aMWJtTjBhVzl1SUhObGNtbGhiR2w2WlVocGMzUnZjbmtvZG1Gc2RXVnpPaUJVYVcxbFVtRnVaMlZiWFNrZ2UxeHVJQ0J5WlhSMWNtNGdTbE5QVGk1emRISnBibWRwWm5rb1hHNGdJQ0FnYkdsdGFYUW9YRzRnSUNBZ0lDQjJZV3gxWlhNdWJXRndLQ2gyS1NBOVBpQW9lMXh1SUNBZ0lDQWdJQ0JtY205dE9pQjBlWEJsYjJZZ2RpNXlZWGN1Wm5KdmJTQTlQVDBnSjNOMGNtbHVaeWNnUHlCMkxuSmhkeTVtY205dElEb2dkaTV5WVhjdVpuSnZiUzUwYjBsVFQxTjBjbWx1WnlncExGeHVJQ0FnSUNBZ0lDQjBiem9nZEhsd1pXOW1JSFl1Y21GM0xuUnZJRDA5UFNBbmMzUnlhVzVuSnlBL0lIWXVjbUYzTG5SdklEb2dkaTV5WVhjdWRHOHVkRzlKVTA5VGRISnBibWNvS1N4Y2JpQWdJQ0FnSUgwcEtWeHVJQ0FnSUNsY2JpQWdLVHRjYm4xY2JseHVablZ1WTNScGIyNGdiR2x0YVhRb2RtRnNkV1U2SUZScGJXVlFhV05yWlhKSWFYTjBiM0o1U1hSbGJWdGRLVG9nVkdsdFpWQnBZMnRsY2tocGMzUnZjbmxKZEdWdFcxMGdlMXh1SUNCeVpYUjFjbTRnZFc1cGNVSjVLSFpoYkhWbExDQW9kaWtnUFQ0Z2RpNW1jbTl0SUNzZ2RpNTBieWt1YzJ4cFkyVW9NQ3dnTkNrN1hHNTlYRzVjYm1aMWJtTjBhVzl1SUdselFXSnpiMngxZEdVb2RtRnNkV1U2SUZScGJXVlNZVzVuWlNrNklHSnZiMnhsWVc0Z2UxeHVJQ0J5WlhSMWNtNGdhWE5FWVhSbFZHbHRaU2gyWVd4MVpTNXlZWGN1Wm5KdmJTa2dmSHdnYVhORVlYUmxWR2x0WlNoMllXeDFaUzV5WVhjdWRHOHBPMXh1ZlZ4dUlsMHNJbTVoYldWeklqcGJJbFJwYldWU1lXNW5aVVJwY21WamRHbHZiaUpkTENKdFlYQndhVzVuY3lJNklqczdPenM3T3pzN1FVRm5RazhzVFVGQlRTeDNRa0ZCZDBJc1pVRkJjME1zUTBGQlFUdEJRVUZCTEVWQlFYQkZMRmRCUVVFc1IwRkJRVHRCUVVGQkxFbEJRVUVzUzBGQlFTeERRVUZCTEVkQlFVRXNVMEZCUVN4RFFVRkJMRU5CUVVFN1FVRkhUQ3hKUVVGQkxFbEJRVUVzUTBGQlR5eFRRVUZUTEUxQlFVMDdRVUZEY0VJc1RVRkJUU3hOUVVGQkxGTkJRVUVzUjBGQldTeFZRVUZYTEVOQlFVRXNXVUZCUVN4RFFVRmhMRWxCUVVrc1EwRkJRU3hEUVVGQk8wRkJRemxETEUxQlFVRXNUVUZCVFN4bFFVRnJRaXhIUVVGQkxHdENRVUZCTEVOQlFXMUNMRk5CUVZVc1EwRkJRU3hMUVVGQkxFTkJRVTBzVDBGQlR5eERRVUZETEVOQlFVRXNRMEZCUVR0QlFVTnVSU3hOUVVGQkxGTkJRVUVzUTBGQlZTeHJRa0ZCYTBJc1pVRkJaU3hEUVVGQkxFTkJRVUU3UVVGQlFTeExRVU0zUXl4RFFVRkJPMEZCUlVFc1NVRkJUeXhKUVVGQkxFTkJRVUVzTkVKQlFVRXNSMEZCSzBJc1EwRkJReXhMUVVGclFpeExRVUZCTzBGQlEzWkVMRTFCUVUwc1RVRkJRU3hUUVVGQkxFZEJRVmtzVlVGQlZ5eERRVUZCTEZsQlFVRXNRMEZCWVN4SlFVRkpMRU5CUVVFc1EwRkJRVHRCUVVNNVF5eE5RVUZCTEZOQlFVRXNRMEZCVlN4UlFVRlRMRU5CUVVFc1JVRkJSU3h2UWtGQmMwSXNSVUZCUVN4TFFVRkJMRVZCUVU4c1EwRkJRU3hEUVVGQk8wRkJRVUVzUzBGRGNFUXNRMEZCUVR0QlFVVkJMRWxCUVVFc1NVRkJRU3hEUVVGUExHRkJRV0VzVFVGQlRUdEJRVU40UWl4TlFVRk5MRTFCUVVFc1UwRkJRU3hIUVVGWkxGVkJRVmNzUTBGQlFTeFpRVUZCTEVOQlFXRXNTVUZCU1N4RFFVRkJMRU5CUVVFN1FVRkRPVU1zVFVGQlRTeE5RVUZCTEZsQlFVRXNSMEZCWlN4VlFVRlZMRXRCUVUwc1EwRkJRU3hMUVVGQkxFTkJRVUU3UVVGRGNrTXNUVUZCVFN4TlFVRkJMRWxCUVVFc1IwRkJUeXhMUVVGTkxFTkJRVUVzV1VGQlFTeERRVUZoTEVsQlFVa3NRMEZCUVN4RFFVRkJPMEZCUTNCRExFMUJRVTBzVFVGQlFTeEZRVUZCTEVkQlFVc3NTMEZCVFN4RFFVRkJMRmxCUVVFc1EwRkJZU3hGUVVGRkxFTkJRVUVzUTBGQlFUdEJRVU5vUXl4TlFVRlZMRk5CUVVFc1EwRkJRU3hwUWtGQlFTeERRVUZyUWl4RlFVRkZMRWxCUVUwc1JVRkJRU3hGUVVGQkxFVkJRVWtzUzBGQlN5eEZRVUZGTEVsQlFVRXNSVUZCVFN4RlFVRkhMRVZCUVVFc1JVRkJSeXhEUVVGQkxFTkJRVUU3UVVGQlFTeExRVU0zUkN4RFFVRkJPMEZCUlVFc1NVRkJRU3hKUVVGQkxFTkJRVThzYVVKQlFXbENMRTFCUVUwN1FVRkROVUlzVFVGQlRTeE5RVUZCTEZOQlFVRXNSMEZCV1N4VlFVRlhMRU5CUVVFc1dVRkJRU3hEUVVGaExFbEJRVWtzUTBGQlFTeERRVUZCTzBGQlF6bERMRTFCUVUwc1RVRkJRVHRCUVVGQkxGRkJRMG9zUzBGQlFTeEZRVUZQTEVWQlFVVXNTMEZCUVN4RlFVRlBMRXRCUVUwc1JVRkJRVHRCUVVGQkxFOUJRM0JDTEVkQlFVRXNVMEZCUVN4RFFVRkJPMEZCUlVvc1RVRkJWU3hUUVVGQkxFTkJRVUVzYVVKQlFVRXNRMEZCYTBJc2IwSkJRVzlDTEd0Q1FVRnRRaXhEUVVGQkxGRkJRVUVzUlVGQlZTeFBRVUZQTEVsQlFVc3NRMEZCUVN4SFFVRkJMRVZCUVVzc1EwRkJReXhEUVVGQkxFTkJRVUU3UVVGQlFTeExRVU5xUnl4RFFVRkJPMEZCUlVFc1NVRkJRU3hKUVVGQkxFTkJRVThzWjBKQlFXZENMRTFCUVUwN1FVRkRNMElzVFVGQlRTeE5RVUZCTEZOQlFVRXNSMEZCV1N4VlFVRlhMRU5CUVVFc1dVRkJRU3hEUVVGaExFbEJRVWtzUTBGQlFTeERRVUZCTzBGQlF6bERMRTFCUVUwc1RVRkJRVHRCUVVGQkxGRkJRMG9zUzBGQlFTeEZRVUZQTEVWQlFVVXNTMEZCUVN4RlFVRlBMRXRCUVUwc1JVRkJRVHRCUVVGQkxFOUJRM0JDTEVkQlFVRXNVMEZCUVN4RFFVRkJPMEZCUlVvc1RVRkJWU3hUUVVGQkxFTkJRVUVzYVVKQlFVRXNRMEZCYTBJc2IwSkJRVzlDTEd0Q1FVRnRRaXhEUVVGQkxFOUJRVUVzUlVGQlV5eFBRVUZQTEVsQlFVc3NRMEZCUVN4SFFVRkJMRVZCUVVzc1EwRkJReXhEUVVGQkxFTkJRVUU3UVVGQlFTeExRVU5vUnl4RFFVRkJPMEZCUVVFc1IwRkJRVHRCUVVOR0xFTkJRVUU3UVVGMlEyRXNaVUZCUVN4RFFVTkhMRk5CUVZrc1IwRkJRU3gxUWtGQlFTeERRVUZCTzBGQmQwTTFRaXhUUVVGVExIVkNRVUZCTEVOQlFYZENMRVZCUVVVc1MwRkJRU3hGUVVFclF5eEZRVUZCTzBGQlEyaEdMRVZCUVVFc1RVRkJUU3hGUVVGRkxGVkJRVUVzUlVGQldTeFZRVUZYTEVWQlFVRXNSMEZCU1N4TlFVRk5MRkZCUVZNc1JVRkJRU3hEUVVGQk8wRkJRMnhFTEVWQlFVMHNUVUZCUVN4VFFVRkJMRWRCUVZrc1ZVRkJWeXhEUVVGQkxGbEJRVUVzUTBGQllTeExRVUZMTEVOQlFVRXNRMEZCUVR0QlFVTXZReXhGUVVGTkxFMUJRVUVzVVVGQlFTeEhRVUZYTEZWQlFWVXNWMEZCV1N4RlFVRkJMRU5CUVVFN1FVRkRka01zUlVGQlRTeE5RVUZCTEdOQlFVRXNSMEZCYVVJc1ZVRkJWU3hSUVVGVExFVkJRVUVzUTBGQlFUdEJRVU14UXl4RlFVRkJMRTFCUVUwc1EwRkJReXhuUWtGQmEwSXNSVUZCUVN4dFFrRkJiVUlzU1VGQlNTeGxRVUUyUWl4RFFVRkJMSGxDUVVGQkxFVkJRVEpDTEVWQlFVa3NSVUZCUVR0QlFVRkJMRWxCUXpGSExFZEJRVXNzUlVGQlFTeExRVUZCTzBGQlFVRXNTVUZEVEN4VlFVRlpMRVZCUVVFc1owSkJRVUU3UVVGQlFTeEpRVU5hTEZsQlFXTXNSVUZCUVN4clFrRkJRVHRCUVVGQkxFZEJRMllzUTBGQlFTeERRVUZCTzBGQlJVUXNSVUZCUVN4SlFVRkpMRlZCUVZrc1JVRkJRVHRCUVVOa0xFbEJRVThzVDBGQlFTeEpRVUZCTEVOQlFVRTdRVUZCUVN4SFFVTlVPMEZCUlVFc1JVRkJRU3gxUWtGRFJ5eExRVUZCTEVOQlFVRXNZVUZCUVN4RFFVRkJMR1ZCUVVFc1JVRkJRVHRCUVVGQkxFbEJRME1zV1VGQldTeFZRVUZqTEVsQlFVRXNTVUZCUVN4SFFVRkJMRlZCUVVFc1IwRkJRU3hKUVVGQk8wRkJRVUVzU1VGRE1VSXNUMEZCVHl4alFVRmxMRU5CUVVFc1MwRkJRVHRCUVVGQkxFbEJRM1JDTEZGQlFVRXNSVUZCVlN4RFFVRkRMRXRCUVZVc1MwRkJRVHRCUVVOdVFpeE5RVUZKTEVsQlFVRXNWVUZCUVN4RFFVRlhMRXRCUVVzc1EwRkJSeXhGUVVGQk8wRkJRM0pDTEZGQlFVRXNiVUpCUVVFc1EwRkJiMElzUTBGQlF5eExRVUZQTEVWQlFVRXNSMEZCU1N4blFrRkJiMElzU1VGQlFTeEpRVUZCTEVkQlFVRXNaMEpCUVVFc1IwRkJRU3hGUVVGSExFTkJRVU1zUTBGQlFTeERRVUZCTzBGQlFVRXNUMEZETVVRN1FVRkZRU3hOUVVGQkxGTkJRVUVzUTBGQlZTeHJRa0ZCYTBJc1MwRkJTeXhEUVVGQkxFTkJRVUU3UVVGQlFTeExRVU51UXp0QlFVRkJMRWxCUTBFc1VVRkJRVHRCUVVGQkxFbEJRMEVzYzBKQlFYTkNMR05CUVdVc1EwRkJRU3h2UWtGQlFUdEJRVUZCTEVsQlEzSkRMR2RDUVVGblFpeExRVUZOTEVOQlFVRXNZMEZCUVR0QlFVRkJMRWxCUTNSQ0xHVkJRV1VzUzBGQlRTeERRVUZCTEdGQlFVRTdRVUZCUVN4SlFVTnlRaXhSUVVGUkxFdEJRVTBzUTBGQlFTeE5RVUZCTzBGQlFVRXNTVUZEWkN4clFrRkJhMElzVTBGQlZTeERRVUZCTEdkQ1FVRkJPMEZCUVVFc1NVRkROVUlzT0VKQlFUaENMRXRCUVUwc1EwRkJRU3cwUWtGQlFUdEJRVUZCTEVsQlJYQkRMRmRCUVZjc1kwRkJaU3hEUVVGQkxGTkJRVUU3UVVGQlFTeEpRVU14UWl4UFFVRlRMRVZCUVVFc1owSkJRVUU3UVVGQlFTeEhRVU5ZTEVOQlFVRXNRMEZCUVR0QlFVVktMRU5CUVVFN1FVRkZaMElzVTBGQlFTeHJRa0ZCUVN4RFFVRnRRaXhYUVVGelFpeE5RVUV5UWl4RlFVRkJPMEZCUTJ4R0xFVkJRVUVzVFVGQlRTeFhRVUZYTEZOQlFWVXNRMEZCUVN4RlFVRkJMRU5CUVVjc1UwRkJXU3hIUVVGQkxGTkJRVUVzUTBGQlZTeExRVUZMTEU5QlFWRXNSVUZCUVN4RFFVRkJPMEZCUTJwRkxFVkJRVUVzVFVGQlRTeE5RVUZUTEVkQlFVRXNVMEZCUVN4RFFVRlZMRVZCUVVjc1EwRkJRU3hQUVVGQkxFdEJRVmtzVVVGQlZ5eEhRVUZCTEVOQlFVRXNRMEZCUVR0QlFVVnVSQ3hGUVVGQkxFMUJRVTBzVjBGQll5eEhRVUZCTEZGQlFVRXNTMEZCWVN4RFFVRkpMRWRCUVVFc1IwRkJRU3hIUVVGUkxGRkJRVmNzUjBGQlFTeE5RVUZCTEVOQlFVRTdRVUZGZUVRc1JVRkJUU3hOUVVGQkxFVkJRVUVzUjBGQlN5eFRRVUZUTEZkQlFXTXNSMEZCUVN4RFFVRkJMRU5CUVVFN1FVRkRiRU1zUlVGQlRTeE5RVUZCTEVsQlFVRXNSMEZCVHl4VFFVRlRMRmRCUVdNc1IwRkJRU3hEUVVGQkxFTkJRVUU3UVVGRmNFTXNSVUZCUVN4UFFVRlBMRVZCUVVVc1NVRkJUU3hGUVVGQkxFdEJRVUVzUTBGQlRTeEpRVUZKTEVOQlFVY3NSVUZCUVN4RlFVRkJMRVZCUVVrc1RVRkJUU3hGUVVGRkxFTkJRVUVzUlVGQlJ5eExRVUZMTEVWQlFVVXNTVUZCUVN4RlFVRk5MRTFCUVUwc1NVRkJTU3hEUVVGQkxFVkJRVWNzU1VGQlNTeExRVUZOTEVOQlFVRXNSVUZCUlN4SFFVRkpMRVZCUVVFc1EwRkJRVHRCUVVOMlJpeERRVUZCTzBGQlJWa3NTVUZCUVN4clFrRkJRU3h4UWtGQlFVRXNiVUpCUVV3c1MwRkJRVHRCUVVOTUxFVkJRVUZCTEcxQ1FVRkJMRU5CUVVFc2JVSkJRVUVzUTBGQlFTeFZRVUZCTEVOQlFVRXNSMEZCUVN4RFFVRkJMRU5CUVVFc1IwRkJRU3hWUVVGQkxFTkJRVUU3UVVGRFFTeEZRVUZCUVN4dFFrRkJRU3hEUVVGQkxHMUNRVUZCTEVOQlFVRXNVMEZCUVN4RFFVRkJMRWRCUVVFc1EwRkJRU3hEUVVGQkxFZEJRVUVzVTBGQlFTeERRVUZCTzBGQlJsVXNSVUZCUVVFc1QwRkJRVUVzYlVKQlFVRkJMRU5CUVVGQk8wRkJRVUVzUTBGQlFTeEZRVUZCTEd0Q1FVRkJMRWxCUVVFc1JVRkJRU3hGUVVGQk8wRkJTMGtzVTBGQlFTeHRRa0ZCUVN4RFFVRnZRaXhIUVVGNVFpeEZRVUZCTEZOQlFVRXNSVUZCYzBJc1ZVRkJLMElzUlVGQlFUdEJRVU5vU0N4RlFVRk5MRTFCUVVFc1MwRkJRU3hIUVVGUkxGTkJRVlVzUTBGQlFTeEZRVUZCTEVOQlFVY3NUMEZCVVN4RlFVRkJMRU5CUVVFN1FVRkRia01zUlVGQlRTeE5RVUZCTEU5QlFVRXNSMEZCVlN4VFFVRlZMRU5CUVVFc1NVRkJRU3hEUVVGTExFOUJRVkVzUlVGQlFTeERRVUZCTzBGQlEzWkRMRVZCUVUwc1RVRkJRU3hSUVVGQkxFZEJRVUVzUTBGQldTeFJRVUZSTEU5QlFWY3NTVUZCUVN4RFFVRkJMRU5CUVVFN1FVRkZja01zUlVGQlNTeEpRVUZCTEU5QlFVRXNRMEZCUVR0QlFVTktMRVZCUVVrc1NVRkJRU3hMUVVGQkxFTkJRVUU3UVVGRFNpeEZRVUZCTEVsQlFVa3NVVUZCVVN4RFFVRTJRaXhwUWtGQlFUdEJRVU4yUXl4SlFVRkJMRTlCUVVFc1IwRkJWU3hQUVVGVkxFZEJRVUVzVVVGQlFTeERRVUZCTzBGQlEzQkNMRWxCUVVFc1MwRkJRU3hIUVVGUkxFdEJRVkVzUjBGQlFTeFJRVUZCTEVOQlFVRTdRVUZCUVN4SFFVTllMRTFCUVVFN1FVRkRUQ3hKUVVGQkxFOUJRVUVzUjBGQlZTeFBRVUZWTEVkQlFVRXNVVUZCUVN4RFFVRkJPMEZCUTNCQ0xFbEJRVUVzUzBGQlFTeEhRVUZSTEV0QlFWRXNSMEZCUVN4UlFVRkJMRU5CUVVFN1FVRkZhRUlzU1VGQlNTeEpRVUZCTEV0QlFVRXNSMEZCVVN4VlFVRmpMRWxCUVVFc1MwRkJRU3hIUVVGUkxGVkJRVmtzUlVGQlFUdEJRVU0xUXl4TlFVRlJMRXRCUVVFc1IwRkJRU3hWUVVGQkxFTkJRVUU3UVVGRFVpeE5RVUZWTEU5QlFVRXNSMEZCUVN4UFFVRkJMRU5CUVVFN1FVRkJRU3hMUVVOYU8wRkJRVUVzUjBGRFJqdEJRVVZCTEVWQlFVMHNUVUZCUVN4SlFVRkJMRWRCUVU4c1RVRkJUU3hQUVVGUExFTkJRVUVzUTBGQlFUdEJRVU14UWl4RlFVRk5MRTFCUVVFc1JVRkJRU3hIUVVGTExFMUJRVTBzUzBGQlN5eERRVUZCTEVOQlFVRTdRVUZEZEVJc1JVRkJUeXhQUVVGQk8wRkJRVUVzU1VGRFRDeEpRVUZCTzBGQlFVRXNTVUZEUVN4RlFVRkJPMEZCUVVFc1NVRkRRU3hIUVVGQkxFVkJRVXNzUlVGQlJTeEpRVUZCTEVWQlFVMHNSVUZCUnl4RlFVRkJPMEZCUVVFc1IwRkRiRUlzUTBGQlFUdEJRVU5HTEVOQlFVRTdRVUZGUVN4TlFVRk5MSGxDUVVFMFFpeEhRVUZCTEhORFFVRkJMRU5CUVVFN1FVRlJiRU1zVTBGQlV5eHRRa0ZCYlVJc1MwRkJORUlzUlVGQlFUdEJRVU4wUkN4RlFVRk5MRTFCUVVFc1RVRkJRU3hIUVVGclF5eEpRVUZMTEVOQlFVRXNTMEZCUVN4RFFVRk5MRXRCUVVzc1EwRkJRU3hEUVVGQk8wRkJSWGhFTEVWQlFVOHNUMEZCUVN4TlFVRkJMRU5CUVU4c1IwRkJTU3hEUVVGQkxFTkJRVU1zU1VGQlV5eExRVUZCTEZOQlFVRXNRMEZCVlN4clFrRkJhMElzU1VGQlRTeEZRVUZCTEV0QlFVRXNSVUZCVHl4TFFVRlhMRU5CUVVFc1JVRkJRU3h4UWtGQmNVSXNRMEZCUXl4RFFVRkJMRU5CUVVFN1FVRkRlRWNzUTBGQlFUdEJRVVZCTEZOQlFWTXNhVUpCUVdsQ0xFMUJRWEZDTEVWQlFVRTdRVUZETjBNc1JVRkJRU3hQUVVGUExFbEJRVXNzUTBGQlFTeFRRVUZCTzBGQlFVRXNTVUZEVml4TFFVRkJPMEZCUVVFc1RVRkRSU3hOUVVGQkxFTkJRVThzUjBGQlNTeERRVUZCTEVOQlFVTXNRMEZCVHl4TlFVRkJPMEZCUVVFc1VVRkRha0lzU1VGQlRTeEZRVUZCTEU5QlFVOHNRMEZCUlN4RFFVRkJMRWRCUVVFc1EwRkJTU3hKUVVGVExFdEJRVUVzVVVGQlFTeEhRVUZYTEVOQlFVVXNRMEZCUVN4SFFVRkJMRU5CUVVrc1NVRkJUeXhIUVVGQkxFTkJRVUVzUTBGQlJTeEhRVUZKTEVOQlFVRXNTVUZCUVN4RFFVRkxMRmRCUVZrc1JVRkJRVHRCUVVGQkxGRkJRek5GTEVWQlFVa3NSVUZCUVN4UFFVRlBMRU5CUVVVc1EwRkJRU3hIUVVGQkxFTkJRVWtzUlVGQlR5eExRVUZCTEZGQlFVRXNSMEZCVnl4RFFVRkZMRU5CUVVFc1IwRkJRU3hEUVVGSkxFVkJRVXNzUjBGQlFTeERRVUZCTEVOQlFVVXNSMEZCU1N4RFFVRkJMRVZCUVVFc1EwRkJSeXhYUVVGWkxFVkJRVUU3UVVGQlFTeFBRVU51UlN4RFFVRkJMRU5CUVVFN1FVRkJRU3hMUVVOS08wRkJRVUVzUjBGRFJpeERRVUZCTzBGQlEwWXNRMEZCUVR0QlFVVkJMRk5CUVZNc1RVRkJUU3hMUVVGNVJDeEZRVUZCTzBGQlEzUkZMRVZCUVU4c1QwRkJRU3hOUVVGQkxFTkJRVThzUzBGQlR5eEZRVUZCTEVOQlFVTXNRMEZCVFN4TFFVRkJMRU5CUVVFc1EwRkJSU3hKUVVGUExFZEJRVUVzUTBGQlFTeERRVUZGTEVWQlFVVXNRMEZCUVN4RFFVRkZMRXRCUVUwc1EwRkJRU3hEUVVGQkxFVkJRVWNzUTBGQlF5eERRVUZCTEVOQlFVRTdRVUZEZGtRc1EwRkJRVHRCUVVWQkxGTkJRVk1zVjBGQlZ5eExRVUV5UWl4RlFVRkJPMEZCUXpkRExFVkJRVThzVDBGQlFTeFZRVUZCTEVOQlFWY3NUVUZCVFN4SFFVRkpMRU5CUVVFc1NVRkJTU3hMUVVGTExGVkJRVmNzUTBGQlFTeExRVUZCTEVOQlFVMHNTVUZCU1N4RlFVRkZMRU5CUVVFc1EwRkJRVHRCUVVNNVJEczdPenNpZlE9PVxuIl0sIm5hbWVzIjpbIlRpbWVSYW5nZURpcmVjdGlvbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFnQk8sTUFBTSx3QkFBd0IsZUFBc0MsQ0FBQTtFQUFwRSxXQUFBLEdBQUE7QUFBQSxJQUFBLEtBQUEsQ0FBQSxHQUFBLFNBQUEsQ0FBQSxDQUFBO0FBR0wsSUFBQSxJQUFBLENBQU8sU0FBUyxNQUFNO0FBQ2QsTUFBQSxNQUFBLFNBQUEsR0FBWSxVQUFXLENBQUEsWUFBQSxDQUFhLElBQUksQ0FBQSxDQUFBO0FBQzlDLE1BQUEsTUFBTSxlQUFrQixHQUFBLGtCQUFBLENBQW1CLFNBQVUsQ0FBQSxLQUFBLENBQU0sT0FBTyxDQUFDLENBQUEsQ0FBQTtBQUNuRSxNQUFBLFNBQUEsQ0FBVSxrQkFBa0IsZUFB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RSxDQUFBLEdBQUEsQ0FBSSxFQUFPLEtBQUEsUUFBQSxHQUFXLENBQUUsQ0FBQSxHQUFBLENBQUksRUFBSyxHQUFBLENBQUEsQ0FBRSxHQUFJLENBQUEsRUFBQSxDQUFHLFdBQVksRUFBQTtPQUNuRSxDQUFBLENBQUE7QUFBQSxLQUFBO0FBQ0osR0FBQSxDQUFBO0FBRUosQ0FBQTtBQUVBLFNBQVMsTUFBTSxLQUF5RCxFQUFBO0FBQy9ELEVBQUEsT0FBQSxNQUFBLENBQU8sS0FBTyxFQUFBLENBQUMsQ0FBTSxLQUFBLENBQUEsQ0FBRSxJQUFPLEdBQUEsQ0FBQSxDQUFFLEVBQUUsQ0FBQSxDQUFFLEtBQU0sQ0FBQSxDQUFBLEVBQUcsQ0FBQyxDQUFBLENBQUE7QUFDdkQsQ0FBQTtBQUVBLFNBQVMsV0FBVyxLQUEyQixFQUFBO0FBQ3RDLEVBQUEsT0FBQSxVQUFBLENBQVcsTUFBTSxHQUFJLENBQUEsSUFBSSxLQUFLLFVBQVcsQ0FBQSxLQUFBLENBQU0sSUFBSSxFQUFFLENBQUEsQ0FBQTtBQUM5RDs7OzsifQ==
|