@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,117 @@
|
|
|
1
|
+
import { rangeUtil } from '@grafana/data';
|
|
2
|
+
import { VariableRefresh } from '@grafana/schema';
|
|
3
|
+
import { Select } from '@grafana/ui';
|
|
4
|
+
import React from 'react';
|
|
5
|
+
import { of } from 'rxjs';
|
|
6
|
+
import { sceneGraph } from '../../core/sceneGraph/index.js';
|
|
7
|
+
import { SceneObjectBase } from '../../core/SceneObjectBase.js';
|
|
8
|
+
import { SceneObjectUrlSyncConfig } from '../../services/SceneObjectUrlSyncConfig.js';
|
|
9
|
+
import { AUTO_VARIABLE_VALUE, AUTO_VARIABLE_TEXT } from '../constants.js';
|
|
10
|
+
import { SceneVariableValueChangedEvent } from '../types.js';
|
|
11
|
+
|
|
12
|
+
var __defProp = Object.defineProperty;
|
|
13
|
+
var __getOwnPropSymbols = Object.getOwnPropertySymbols;
|
|
14
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
15
|
+
var __propIsEnum = Object.prototype.propertyIsEnumerable;
|
|
16
|
+
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
17
|
+
var __spreadValues = (a, b) => {
|
|
18
|
+
for (var prop in b || (b = {}))
|
|
19
|
+
if (__hasOwnProp.call(b, prop))
|
|
20
|
+
__defNormalProp(a, prop, b[prop]);
|
|
21
|
+
if (__getOwnPropSymbols)
|
|
22
|
+
for (var prop of __getOwnPropSymbols(b)) {
|
|
23
|
+
if (__propIsEnum.call(b, prop))
|
|
24
|
+
__defNormalProp(a, prop, b[prop]);
|
|
25
|
+
}
|
|
26
|
+
return a;
|
|
27
|
+
};
|
|
28
|
+
class IntervalVariable extends SceneObjectBase {
|
|
29
|
+
constructor(initialState) {
|
|
30
|
+
super(__spreadValues({
|
|
31
|
+
type: "interval",
|
|
32
|
+
value: "",
|
|
33
|
+
intervals: ["1m", "10m", "30m", "1h", "6h", "12h", "1d", "7d", "14d", "30d"],
|
|
34
|
+
name: "",
|
|
35
|
+
autoStepCount: 30,
|
|
36
|
+
autoMinInterval: "10s",
|
|
37
|
+
autoEnabled: false,
|
|
38
|
+
refresh: VariableRefresh.onTimeRangeChanged
|
|
39
|
+
}, initialState));
|
|
40
|
+
this._onChange = (value) => {
|
|
41
|
+
this.setState({ value: value.value });
|
|
42
|
+
this.publishEvent(new SceneVariableValueChangedEvent(this), true);
|
|
43
|
+
};
|
|
44
|
+
this._urlSync = new SceneObjectUrlSyncConfig(this, { keys: () => [this.getKey()] });
|
|
45
|
+
}
|
|
46
|
+
getKey() {
|
|
47
|
+
return `var-${this.state.name}`;
|
|
48
|
+
}
|
|
49
|
+
getUrlState() {
|
|
50
|
+
return { [this.getKey()]: this.state.value };
|
|
51
|
+
}
|
|
52
|
+
updateFromUrl(values) {
|
|
53
|
+
const update = {};
|
|
54
|
+
const val = values[this.getKey()];
|
|
55
|
+
if (typeof val === "string") {
|
|
56
|
+
if (val.startsWith("$__auto_interval_")) {
|
|
57
|
+
update.value = AUTO_VARIABLE_VALUE;
|
|
58
|
+
} else {
|
|
59
|
+
update.value = val;
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
this.setState(update);
|
|
63
|
+
}
|
|
64
|
+
getOptionsForSelect() {
|
|
65
|
+
const { value: currentValue, intervals, autoEnabled } = this.state;
|
|
66
|
+
let options = intervals.map((interval) => ({ value: interval, label: interval }));
|
|
67
|
+
if (autoEnabled) {
|
|
68
|
+
options = [{ value: AUTO_VARIABLE_VALUE, label: AUTO_VARIABLE_TEXT }, ...options];
|
|
69
|
+
}
|
|
70
|
+
if (currentValue && !options.some((option) => option.value === currentValue)) {
|
|
71
|
+
options.push({ value: currentValue, label: currentValue });
|
|
72
|
+
}
|
|
73
|
+
return options;
|
|
74
|
+
}
|
|
75
|
+
getValue() {
|
|
76
|
+
const { value, autoStepCount, autoMinInterval } = this.state;
|
|
77
|
+
if (value === AUTO_VARIABLE_VALUE) {
|
|
78
|
+
return this.getAutoRefreshInteval(autoStepCount, autoMinInterval);
|
|
79
|
+
}
|
|
80
|
+
return value;
|
|
81
|
+
}
|
|
82
|
+
getAutoRefreshInteval(autoStepCount, minRefreshInterval) {
|
|
83
|
+
const timeRange = sceneGraph.getTimeRange(this).state.value;
|
|
84
|
+
const intervalObject = rangeUtil.calculateInterval(timeRange, autoStepCount, minRefreshInterval);
|
|
85
|
+
return intervalObject.interval;
|
|
86
|
+
}
|
|
87
|
+
validateAndUpdate() {
|
|
88
|
+
const { value, intervals } = this.state;
|
|
89
|
+
let shouldPublish = false;
|
|
90
|
+
if (value === AUTO_VARIABLE_VALUE) {
|
|
91
|
+
shouldPublish = true;
|
|
92
|
+
} else if (!value && intervals.length > 0) {
|
|
93
|
+
const firstOption = intervals[0];
|
|
94
|
+
this.setState({ value: firstOption });
|
|
95
|
+
shouldPublish = true;
|
|
96
|
+
}
|
|
97
|
+
if (shouldPublish) {
|
|
98
|
+
this.publishEvent(new SceneVariableValueChangedEvent(this), true);
|
|
99
|
+
}
|
|
100
|
+
return of({});
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
IntervalVariable.Component = ({ model }) => {
|
|
104
|
+
const { key, value } = model.useState();
|
|
105
|
+
return /* @__PURE__ */ React.createElement(Select, {
|
|
106
|
+
id: key,
|
|
107
|
+
placeholder: "Select value",
|
|
108
|
+
width: "auto",
|
|
109
|
+
value,
|
|
110
|
+
tabSelectsValue: false,
|
|
111
|
+
options: model.getOptionsForSelect(),
|
|
112
|
+
onChange: model._onChange
|
|
113
|
+
});
|
|
114
|
+
};
|
|
115
|
+
|
|
116
|
+
export { IntervalVariable };
|
|
117
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiSW50ZXJ2YWxWYXJpYWJsZS5qcyIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vdmFyaWFibGVzL3ZhcmlhbnRzL0ludGVydmFsVmFyaWFibGUuanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgcmFuZ2VVdGlsIH0gZnJvbSAnQGdyYWZhbmEvZGF0YSc7XG5pbXBvcnQgeyBWYXJpYWJsZVJlZnJlc2ggfSBmcm9tICdAZ3JhZmFuYS9zY2hlbWEnO1xuaW1wb3J0IHsgU2VsZWN0IH0gZnJvbSAnQGdyYWZhbmEvdWknO1xuaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IG9mIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBzY2VuZUdyYXBoIH0gZnJvbSAnLi4vLi4vY29yZS9zY2VuZUdyYXBoL2luZGV4LmpzJztcbmltcG9ydCB7IFNjZW5lT2JqZWN0QmFzZSB9IGZyb20gJy4uLy4uL2NvcmUvU2NlbmVPYmplY3RCYXNlLmpzJztcbmltcG9ydCB7IFNjZW5lT2JqZWN0VXJsU3luY0NvbmZpZyB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL1NjZW5lT2JqZWN0VXJsU3luY0NvbmZpZy5qcyc7XG5pbXBvcnQgeyBBVVRPX1ZBUklBQkxFX1ZBTFVFLCBBVVRPX1ZBUklBQkxFX1RFWFQgfSBmcm9tICcuLi9jb25zdGFudHMuanMnO1xuaW1wb3J0IHsgU2NlbmVWYXJpYWJsZVZhbHVlQ2hhbmdlZEV2ZW50IH0gZnJvbSAnLi4vdHlwZXMuanMnO1xuXG52YXIgX19kZWZQcm9wID0gT2JqZWN0LmRlZmluZVByb3BlcnR5O1xudmFyIF9fZ2V0T3duUHJvcFN5bWJvbHMgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzO1xudmFyIF9faGFzT3duUHJvcCA9IE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHk7XG52YXIgX19wcm9wSXNFbnVtID0gT2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZTtcbnZhciBfX2RlZk5vcm1hbFByb3AgPSAob2JqLCBrZXksIHZhbHVlKSA9PiBrZXkgaW4gb2JqID8gX19kZWZQcm9wKG9iaiwga2V5LCB7IGVudW1lcmFibGU6IHRydWUsIGNvbmZpZ3VyYWJsZTogdHJ1ZSwgd3JpdGFibGU6IHRydWUsIHZhbHVlIH0pIDogb2JqW2tleV0gPSB2YWx1ZTtcbnZhciBfX3NwcmVhZFZhbHVlcyA9IChhLCBiKSA9PiB7XG4gIGZvciAodmFyIHByb3AgaW4gYiB8fCAoYiA9IHt9KSlcbiAgICBpZiAoX19oYXNPd25Qcm9wLmNhbGwoYiwgcHJvcCkpXG4gICAgICBfX2RlZk5vcm1hbFByb3AoYSwgcHJvcCwgYltwcm9wXSk7XG4gIGlmIChfX2dldE93blByb3BTeW1ib2xzKVxuICAgIGZvciAodmFyIHByb3Agb2YgX19nZXRPd25Qcm9wU3ltYm9scyhiKSkge1xuICAgICAgaWYgKF9fcHJvcElzRW51bS5jYWxsKGIsIHByb3ApKVxuICAgICAgICBfX2RlZk5vcm1hbFByb3AoYSwgcHJvcCwgYltwcm9wXSk7XG4gICAgfVxuICByZXR1cm4gYTtcbn07XG5jbGFzcyBJbnRlcnZhbFZhcmlhYmxlIGV4dGVuZHMgU2NlbmVPYmplY3RCYXNlIHtcbiAgY29uc3RydWN0b3IoaW5pdGlhbFN0YXRlKSB7XG4gICAgc3VwZXIoX19zcHJlYWRWYWx1ZXMoe1xuICAgICAgdHlwZTogXCJpbnRlcnZhbFwiLFxuICAgICAgdmFsdWU6IFwiXCIsXG4gICAgICBpbnRlcnZhbHM6IFtcIjFtXCIsIFwiMTBtXCIsIFwiMzBtXCIsIFwiMWhcIiwgXCI2aFwiLCBcIjEyaFwiLCBcIjFkXCIsIFwiN2RcIiwgXCIxNGRcIiwgXCIzMGRcIl0sXG4gICAgICBuYW1lOiBcIlwiLFxuICAgICAgYXV0b1N0ZXBDb3VudDogMzAsXG4gICAgICBhdXRvTWluSW50ZXJ2YWw6IFwiMTBzXCIsXG4gICAgICBhdXRvRW5hYmxlZDogZmFsc2UsXG4gICAgICByZWZyZXNoOiBWYXJpYWJsZVJlZnJlc2gub25UaW1lUmFuZ2VDaGFuZ2VkXG4gICAgfSwgaW5pdGlhbFN0YXRlKSk7XG4gICAgdGhpcy5fb25DaGFuZ2UgPSAodmFsdWUpID0+IHtcbiAgICAgIHRoaXMuc2V0U3RhdGUoeyB2YWx1ZTogdmFsdWUudmFsdWUgfSk7XG4gICAgICB0aGlzLnB1Ymxpc2hFdmVudChuZXcgU2NlbmVWYXJpYWJsZVZhbHVlQ2hhbmdlZEV2ZW50KHRoaXMpLCB0cnVlKTtcbiAgICB9O1xuICAgIHRoaXMuX3VybFN5bmMgPSBuZXcgU2NlbmVPYmplY3RVcmxTeW5jQ29uZmlnKHRoaXMsIHsga2V5czogKCkgPT4gW3RoaXMuZ2V0S2V5KCldIH0pO1xuICB9XG4gIGdldEtleSgpIHtcbiAgICByZXR1cm4gYHZhci0ke3RoaXMuc3RhdGUubmFtZX1gO1xuICB9XG4gIGdldFVybFN0YXRlKCkge1xuICAgIHJldHVybiB7IFt0aGlzLmdldEtleSgpXTogdGhpcy5zdGF0ZS52YWx1ZSB9O1xuICB9XG4gIHVwZGF0ZUZyb21VcmwodmFsdWVzKSB7XG4gICAgY29uc3QgdXBkYXRlID0ge307XG4gICAgY29uc3QgdmFsID0gdmFsdWVzW3RoaXMuZ2V0S2V5KCldO1xuICAgIGlmICh0eXBlb2YgdmFsID09PSBcInN0cmluZ1wiKSB7XG4gICAgICBpZiAodmFsLnN0YXJ0c1dpdGgoXCIkX19hdXRvX2ludGVydmFsX1wiKSkge1xuICAgICAgICB1cGRhdGUudmFsdWUgPSBBVVRPX1ZBUklBQkxFX1ZBTFVFO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdXBkYXRlLnZhbHVlID0gdmFsO1xuICAgICAgfVxuICAgIH1cbiAgICB0aGlzLnNldFN0YXRlKHVwZGF0ZSk7XG4gIH1cbiAgZ2V0T3B0aW9uc0ZvclNlbGVjdCgpIHtcbiAgICBjb25zdCB7IHZhbHVlOiBjdXJyZW50VmFsdWUsIGludGVydmFscywgYXV0b0VuYWJsZWQgfSA9IHRoaXMuc3RhdGU7XG4gICAgbGV0IG9wdGlvbnMgPSBpbnRlcnZhbHMubWFwKChpbnRlcnZhbCkgPT4gKHsgdmFsdWU6IGludGVydmFsLCBsYWJlbDogaW50ZXJ2YWwgfSkpO1xuICAgIGlmIChhdXRvRW5hYmxlZCkge1xuICAgICAgb3B0aW9ucyA9IFt7IHZhbHVlOiBBVVRPX1ZBUklBQkxFX1ZBTFVFLCBsYWJlbDogQVVUT19WQVJJQUJMRV9URVhUIH0sIC4uLm9wdGlvbnNdO1xuICAgIH1cbiAgICBpZiAoY3VycmVudFZhbHVlICYmICFvcHRpb25zLnNvbWUoKG9wdGlvbikgPT4gb3B0aW9uLnZhbHVlID09PSBjdXJyZW50VmFsdWUpKSB7XG4gICAgICBvcHRpb25zLnB1c2goeyB2YWx1ZTogY3VycmVudFZhbHVlLCBsYWJlbDogY3VycmVudFZhbHVlIH0pO1xuICAgIH1cbiAgICByZXR1cm4gb3B0aW9ucztcbiAgfVxuICBnZXRWYWx1ZSgpIHtcbiAgICBjb25zdCB7IHZhbHVlLCBhdXRvU3RlcENvdW50LCBhdXRvTWluSW50ZXJ2YWwgfSA9IHRoaXMuc3RhdGU7XG4gICAgaWYgKHZhbHVlID09PSBBVVRPX1ZBUklBQkxFX1ZBTFVFKSB7XG4gICAgICByZXR1cm4gdGhpcy5nZXRBdXRvUmVmcmVzaEludGV2YWwoYXV0b1N0ZXBDb3VudCwgYXV0b01pbkludGVydmFsKTtcbiAgICB9XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9XG4gIGdldEF1dG9SZWZyZXNoSW50ZXZhbChhdXRvU3RlcENvdW50LCBtaW5SZWZyZXNoSW50ZXJ2YWwpIHtcbiAgICBjb25zdCB0aW1lUmFuZ2UgPSBzY2VuZUdyYXBoLmdldFRpbWVSYW5nZSh0aGlzKS5zdGF0ZS52YWx1ZTtcbiAgICBjb25zdCBpbnRlcnZhbE9iamVjdCA9IHJhbmdlVXRpbC5jYWxjdWxhdGVJbnRlcnZhbCh0aW1lUmFuZ2UsIGF1dG9TdGVwQ291bnQsIG1pblJlZnJlc2hJbnRlcnZhbCk7XG4gICAgcmV0dXJuIGludGVydmFsT2JqZWN0LmludGVydmFsO1xuICB9XG4gIHZhbGlkYXRlQW5kVXBkYXRlKCkge1xuICAgIGNvbnN0IHsgdmFsdWUsIGludGVydmFscyB9ID0gdGhpcy5zdGF0ZTtcbiAgICBsZXQgc2hvdWxkUHVibGlzaCA9IGZhbHNlO1xuICAgIGlmICh2YWx1ZSA9PT0gQVVUT19WQVJJQUJMRV9WQUxVRSkge1xuICAgICAgc2hvdWxkUHVibGlzaCA9IHRydWU7XG4gICAgfSBlbHNlIGlmICghdmFsdWUgJiYgaW50ZXJ2YWxzLmxlbmd0aCA+IDApIHtcbiAgICAgIGNvbnN0IGZpcnN0T3B0aW9uID0gaW50ZXJ2YWxzWzBdO1xuICAgICAgdGhpcy5zZXRTdGF0ZSh7IHZhbHVlOiBmaXJzdE9wdGlvbiB9KTtcbiAgICAgIHNob3VsZFB1Ymxpc2ggPSB0cnVlO1xuICAgIH1cbiAgICBpZiAoc2hvdWxkUHVibGlzaCkge1xuICAgICAgdGhpcy5wdWJsaXNoRXZlbnQobmV3IFNjZW5lVmFyaWFibGVWYWx1ZUNoYW5nZWRFdmVudCh0aGlzKSwgdHJ1ZSk7XG4gICAgfVxuICAgIHJldHVybiBvZih7fSk7XG4gIH1cbn1cbkludGVydmFsVmFyaWFibGUuQ29tcG9uZW50ID0gKHsgbW9kZWwgfSkgPT4ge1xuICBjb25zdCB7IGtleSwgdmFsdWUgfSA9IG1vZGVsLnVzZVN0YXRlKCk7XG4gIHJldHVybiAvKiBAX19QVVJFX18gKi8gUmVhY3QuY3JlYXRlRWxlbWVudChTZWxlY3QsIHtcbiAgICBpZDoga2V5LFxuICAgIHBsYWNlaG9sZGVyOiBcIlNlbGVjdCB2YWx1ZVwiLFxuICAgIHdpZHRoOiBcImF1dG9cIixcbiAgICB2YWx1ZSxcbiAgICB0YWJTZWxlY3RzVmFsdWU6IGZhbHNlLFxuICAgIG9wdGlvbnM6IG1vZGVsLmdldE9wdGlvbnNGb3JTZWxlY3QoKSxcbiAgICBvbkNoYW5nZTogbW9kZWwuX29uQ2hhbmdlXG4gIH0pO1xufTtcblxuZXhwb3J0IHsgSW50ZXJ2YWxWYXJpYWJsZSB9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2NoYXJzZXQ9dXRmLTg7YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0ptYVd4bElqb2lTVzUwWlhKMllXeFdZWEpwWVdKc1pTNXFjeUlzSW5OdmRYSmpaWE1pT2xzaUxpNHZMaTR2TGk0dkxpNHZjM0pqTDNaaGNtbGhZbXhsY3k5MllYSnBZVzUwY3k5SmJuUmxjblpoYkZaaGNtbGhZbXhsTG5SemVDSmRMQ0p6YjNWeVkyVnpRMjl1ZEdWdWRDSTZXeUpwYlhCdmNuUWdleUJ5WVc1blpWVjBhV3dzSUZObGJHVmpkR0ZpYkdWV1lXeDFaU0I5SUdaeWIyMGdKMEJuY21GbVlXNWhMMlJoZEdFbk8xeHVhVzF3YjNKMElIc2dWbUZ5YVdGaWJHVlNaV1p5WlhOb0lIMGdabkp2YlNBblFHZHlZV1poYm1FdmMyTm9aVzFoSnp0Y2JtbHRjRzl5ZENCN0lGTmxiR1ZqZENCOUlHWnliMjBnSjBCbmNtRm1ZVzVoTDNWcEp6dGNibWx0Y0c5eWRDQlNaV0ZqZENCbWNtOXRJQ2R5WldGamRDYzdYRzVwYlhCdmNuUWdleUJQWW5ObGNuWmhZbXhsTENCdlppQjlJR1p5YjIwZ0ozSjRhbk1uTzF4dWFXMXdiM0owSUhzZ2MyTmxibVZIY21Gd2FDQjlJR1p5YjIwZ0p5NHVMeTR1TDJOdmNtVXZjMk5sYm1WSGNtRndhQ2M3WEc1cGJYQnZjblFnZXlCVFkyVnVaVTlpYW1WamRFSmhjMlVnZlNCbWNtOXRJQ2N1TGk4dUxpOWpiM0psTDFOalpXNWxUMkpxWldOMFFtRnpaU2M3WEc1cGJYQnZjblFnZXlCVFkyVnVaVU52YlhCdmJtVnVkRkJ5YjNCekxDQlRZMlZ1WlU5aWFtVmpkRlZ5YkZaaGJIVmxjeUI5SUdaeWIyMGdKeTR1THk0dUwyTnZjbVV2ZEhsd1pYTW5PMXh1YVcxd2IzSjBJSHNnVTJObGJtVlBZbXBsWTNSVmNteFRlVzVqUTI5dVptbG5JSDBnWm5KdmJTQW5MaTR2TGk0dmMyVnlkbWxqWlhNdlUyTmxibVZQWW1wbFkzUlZjbXhUZVc1alEyOXVabWxuSnp0Y2JtbHRjRzl5ZENCN0lFRlZWRTlmVmtGU1NVRkNURVZmVkVWWVZDd2dRVlZVVDE5V1FWSkpRVUpNUlY5V1FVeFZSU0I5SUdaeWIyMGdKeTR1TDJOdmJuTjBZVzUwY3ljN1hHNXBiWEJ2Y25RZ2UxeHVJQ0JUWTJWdVpWWmhjbWxoWW14bExGeHVJQ0JUWTJWdVpWWmhjbWxoWW14bFUzUmhkR1VzWEc0Z0lGTmpaVzVsVm1GeWFXRmliR1ZXWVd4MVpVTm9ZVzVuWldSRmRtVnVkQ3hjYmlBZ1ZtRnNhV1JoZEdWQmJtUlZjR1JoZEdWU1pYTjFiSFFzWEc0Z0lGWmhjbWxoWW14bFZtRnNkV1VzWEc1OUlHWnliMjBnSnk0dUwzUjVjR1Z6Snp0Y2JseHVaWGh3YjNKMElHbHVkR1Z5Wm1GalpTQkpiblJsY25aaGJGWmhjbWxoWW14bFUzUmhkR1VnWlhoMFpXNWtjeUJUWTJWdVpWWmhjbWxoWW14bFUzUmhkR1VnZTF4dUlDQnBiblJsY25aaGJITTZJSE4wY21sdVoxdGRPMXh1SUNCMllXeDFaVG9nYzNSeWFXNW5PMXh1SUNCaGRYUnZSVzVoWW14bFpEb2dZbTl2YkdWaGJqdGNiaUFnWVhWMGIwMXBia2x1ZEdWeWRtRnNPaUJ6ZEhKcGJtYzdYRzRnSUdGMWRHOVRkR1Z3UTI5MWJuUTZJRzUxYldKbGNqdGNiaUFnY21WbWNtVnphRG9nVm1GeWFXRmliR1ZTWldaeVpYTm9PMXh1ZlZ4dVhHNWxlSEJ2Y25RZ1kyeGhjM01nU1c1MFpYSjJZV3hXWVhKcFlXSnNaVnh1SUNCbGVIUmxibVJ6SUZOalpXNWxUMkpxWldOMFFtRnpaVHhKYm5SbGNuWmhiRlpoY21saFlteGxVM1JoZEdVK1hHNGdJR2x0Y0d4bGJXVnVkSE1nVTJObGJtVldZWEpwWVdKc1pUeEpiblJsY25aaGJGWmhjbWxoWW14bFUzUmhkR1UrWEc1N1hHNGdJSEIxWW14cFl5QmpiMjV6ZEhKMVkzUnZjaWhwYm1sMGFXRnNVM1JoZEdVNklGQmhjblJwWVd3OFNXNTBaWEoyWVd4V1lYSnBZV0pzWlZOMFlYUmxQaWtnZTF4dUlDQWdJSE4xY0dWeUtIdGNiaUFnSUNBZ0lIUjVjR1U2SUNkcGJuUmxjblpoYkNjc1hHNGdJQ0FnSUNCMllXeDFaVG9nSnljc1hHNGdJQ0FnSUNCcGJuUmxjblpoYkhNNklGc25NVzBuTENBbk1UQnRKeXdnSnpNd2JTY3NJQ2N4YUNjc0lDYzJhQ2NzSUNjeE1tZ25MQ0FuTVdRbkxDQW5OMlFuTENBbk1UUmtKeXdnSnpNd1pDZGRMRnh1SUNBZ0lDQWdibUZ0WlRvZ0p5Y3NYRzRnSUNBZ0lDQmhkWFJ2VTNSbGNFTnZkVzUwT2lBek1DeGNiaUFnSUNBZ0lHRjFkRzlOYVc1SmJuUmxjblpoYkRvZ0p6RXdjeWNzWEc0Z0lDQWdJQ0JoZFhSdlJXNWhZbXhsWkRvZ1ptRnNjMlVzWEc0Z0lDQWdJQ0J5WldaeVpYTm9PaUJXWVhKcFlXSnNaVkpsWm5KbGMyZ3ViMjVVYVcxbFVtRnVaMlZEYUdGdVoyVmtMRnh1SUNBZ0lDQWdMaTR1YVc1cGRHbGhiRk4wWVhSbExGeHVJQ0FnSUgwcE8xeHVYRzRnSUNBZ2RHaHBjeTVmZFhKc1UzbHVZeUE5SUc1bGR5QlRZMlZ1WlU5aWFtVmpkRlZ5YkZONWJtTkRiMjVtYVdjb2RHaHBjeXdnZXlCclpYbHpPaUFvS1NBOVBpQmJkR2hwY3k1blpYUkxaWGtvS1YwZ2ZTazdYRzRnSUgxY2JseHVJQ0J3Y21sMllYUmxJR2RsZEV0bGVTZ3BPaUJ6ZEhKcGJtY2dlMXh1SUNBZ0lISmxkSFZ5YmlCZ2RtRnlMU1I3ZEdocGN5NXpkR0YwWlM1dVlXMWxmV0E3WEc0Z0lIMWNibHh1SUNCd2RXSnNhV01nWjJWMFZYSnNVM1JoZEdVb0tTQjdYRzRnSUNBZ2NtVjBkWEp1SUhzZ1czUm9hWE11WjJWMFMyVjVLQ2xkT2lCMGFHbHpMbk4wWVhSbExuWmhiSFZsSUgwN1hHNGdJSDFjYmx4dUlDQndkV0pzYVdNZ2RYQmtZWFJsUm5KdmJWVnliQ2gyWVd4MVpYTTZJRk5qWlc1bFQySnFaV04wVlhKc1ZtRnNkV1Z6S1NCN1hHNGdJQ0FnWTI5dWMzUWdkWEJrWVhSbE9pQlFZWEowYVdGc1BFbHVkR1Z5ZG1Gc1ZtRnlhV0ZpYkdWVGRHRjBaVDRnUFNCN2ZUdGNiaUFnSUNCamIyNXpkQ0IyWVd3Z1BTQjJZV3gxWlhOYmRHaHBjeTVuWlhSTFpYa29LVjA3WEc0Z0lDQWdhV1lnS0hSNWNHVnZaaUIyWVd3Z1BUMDlJQ2R6ZEhKcGJtY25LU0I3WEc0Z0lDQWdJQ0F2THlCemRYQndiM0owSUc5c1pDQmhkWFJ2SUdsdWRHVnlkbUZzSUhWeWJDQjJZV3gxWlZ4dUlDQWdJQ0FnYVdZZ0tIWmhiQzV6ZEdGeWRITlhhWFJvS0Nja1gxOWhkWFJ2WDJsdWRHVnlkbUZzWHljcEtTQjdYRzRnSUNBZ0lDQWdJSFZ3WkdGMFpTNTJZV3gxWlNBOUlFRlZWRTlmVmtGU1NVRkNURVZmVmtGTVZVVTdYRzRnSUNBZ0lDQjlJR1ZzYzJVZ2UxeHVJQ0FnSUNBZ0lDQjFjR1JoZEdVdWRtRnNkV1VnUFNCMllXdzdYRzRnSUNBZ0lDQjlYRzRnSUNBZ2ZWeHVJQ0FnSUhSb2FYTXVjMlYwVTNSaGRHVW9kWEJrWVhSbEtUdGNiaUFnZlZ4dVhHNGdJSEIxWW14cFl5Qm5aWFJQY0hScGIyNXpSbTl5VTJWc1pXTjBLQ2s2SUVGeWNtRjVQRk5sYkdWamRHRmliR1ZXWVd4MVpUeHpkSEpwYm1jK1BpQjdYRzRnSUNBZ1kyOXVjM1FnZXlCMllXeDFaVG9nWTNWeWNtVnVkRlpoYkhWbExDQnBiblJsY25aaGJITXNJR0YxZEc5RmJtRmliR1ZrSUgwZ1BTQjBhR2x6TG5OMFlYUmxPMXh1WEc0Z0lDQWdiR1YwSUc5d2RHbHZibk1nUFNCcGJuUmxjblpoYkhNdWJXRndLQ2hwYm5SbGNuWmhiQ2tnUFQ0Z0tIc2dkbUZzZFdVNklHbHVkR1Z5ZG1Gc0xDQnNZV0psYkRvZ2FXNTBaWEoyWVd3Z2ZTa3BPMXh1WEc0Z0lDQWdhV1lnS0dGMWRHOUZibUZpYkdWa0tTQjdYRzRnSUNBZ0lDQnZjSFJwYjI1eklEMGdXM3NnZG1Gc2RXVTZJRUZWVkU5ZlZrRlNTVUZDVEVWZlZrRk1WVVVzSUd4aFltVnNPaUJCVlZSUFgxWkJVa2xCUWt4RlgxUkZXRlFnZlN3Z0xpNHViM0IwYVc5dWMxMDdYRzRnSUNBZ2ZWeHVYRzRnSUNBZ0x5OGdTV1lnZEdobElHTjFjbkpsYm5RZ2RtRnNkV1VnYVhNZ2JtOTBJR2x1SUhSb1pTQnNhWE4wSUc5bUlHbHVkR1Z5ZG1Gc2N5d2dZV1JrSUdsMElIUnZJSFJvWlNCc2FYTjBYRzRnSUNBZ2FXWWdLR04xY25KbGJuUldZV3gxWlNBbUppQWhiM0IwYVc5dWN5NXpiMjFsS0NodmNIUnBiMjRwSUQwK0lHOXdkR2x2Ymk1MllXeDFaU0E5UFQwZ1kzVnljbVZ1ZEZaaGJIVmxLU2tnZTF4dUlDQWdJQ0FnYjNCMGFXOXVjeTV3ZFhOb0tIc2dkbUZzZFdVNklHTjFjbkpsYm5SV1lXeDFaU3dnYkdGaVpXdzZJR04xY25KbGJuUldZV3gxWlNCOUtUdGNiaUFnSUNCOVhHNWNiaUFnSUNCeVpYUjFjbTRnYjNCMGFXOXVjenRjYmlBZ2ZWeHVYRzRnSUhCMVlteHBZeUJuWlhSV1lXeDFaU2dwT2lCV1lYSnBZV0pzWlZaaGJIVmxJSHRjYmlBZ0lDQmpiMjV6ZENCN0lIWmhiSFZsTENCaGRYUnZVM1JsY0VOdmRXNTBMQ0JoZFhSdlRXbHVTVzUwWlhKMllXd2dmU0E5SUhSb2FYTXVjM1JoZEdVN1hHNGdJQ0FnYVdZZ0tIWmhiSFZsSUQwOVBTQkJWVlJQWDFaQlVrbEJRa3hGWDFaQlRGVkZLU0I3WEc0Z0lDQWdJQ0J5WlhSMWNtNGdkR2hwY3k1blpYUkJkWFJ2VW1WbWNtVnphRWx1ZEdWMllXd29ZWFYwYjFOMFpYQkRiM1Z1ZEN3Z1lYVjBiMDFwYmtsdWRHVnlkbUZzS1R0Y2JpQWdJQ0I5WEc1Y2JpQWdJQ0J5WlhSMWNtNGdkbUZzZFdVN1hHNGdJSDFjYmx4dUlDQndjbWwyWVhSbElHZGxkRUYxZEc5U1pXWnlaWE5vU1c1MFpYWmhiQ2hoZFhSdlUzUmxjRU52ZFc1ME9pQnVkVzFpWlhJc0lHMXBibEpsWm5KbGMyaEpiblJsY25aaGJEb2djM1J5YVc1bktTQjdYRzRnSUNBZ1kyOXVjM1FnZEdsdFpWSmhibWRsSUQwZ2MyTmxibVZIY21Gd2FDNW5aWFJVYVcxbFVtRnVaMlVvZEdocGN5a3VjM1JoZEdVdWRtRnNkV1U3WEc0Z0lDQWdZMjl1YzNRZ2FXNTBaWEoyWVd4UFltcGxZM1FnUFNCeVlXNW5aVlYwYVd3dVkyRnNZM1ZzWVhSbFNXNTBaWEoyWVd3b2RHbHRaVkpoYm1kbExDQmhkWFJ2VTNSbGNFTnZkVzUwTENCdGFXNVNaV1p5WlhOb1NXNTBaWEoyWVd3cE8xeHVJQ0FnSUhKbGRIVnliaUJwYm5SbGNuWmhiRTlpYW1WamRDNXBiblJsY25aaGJEdGNiaUFnZlZ4dVhHNGdJSEIxWW14cFl5QmZiMjVEYUdGdVoyVWdQU0FvZG1Gc2RXVTZJRk5sYkdWamRHRmliR1ZXWVd4MVpUeHpkSEpwYm1jK0tTQTlQaUI3WEc0Z0lDQWdkR2hwY3k1elpYUlRkR0YwWlNoN0lIWmhiSFZsT2lCMllXeDFaUzUyWVd4MVpTRWdmU2s3WEc0Z0lDQWdkR2hwY3k1d2RXSnNhWE5vUlhabGJuUW9ibVYzSUZOalpXNWxWbUZ5YVdGaWJHVldZV3gxWlVOb1lXNW5aV1JGZG1WdWRDaDBhR2x6S1N3Z2RISjFaU2s3WEc0Z0lIMDdYRzVjYmlBZ2NIVmliR2xqSUhaaGJHbGtZWFJsUVc1a1ZYQmtZWFJsS0NrNklFOWljMlZ5ZG1GaWJHVThWbUZzYVdSaGRHVkJibVJWY0dSaGRHVlNaWE4xYkhRK0lIdGNiaUFnSUNCamIyNXpkQ0I3SUhaaGJIVmxMQ0JwYm5SbGNuWmhiSE1nZlNBOUlIUm9hWE11YzNSaGRHVTdYRzRnSUNBZ2JHVjBJSE5vYjNWc1pGQjFZbXhwYzJnZ1BTQm1ZV3h6WlR0Y2JseHVJQ0FnSUdsbUlDaDJZV3gxWlNBOVBUMGdRVlZVVDE5V1FWSkpRVUpNUlY5V1FVeFZSU2tnZTF4dUlDQWdJQ0FnYzJodmRXeGtVSFZpYkdsemFDQTlJSFJ5ZFdVN1hHNGdJQ0FnZlNCbGJITmxJR2xtSUNnaGRtRnNkV1VnSmlZZ2FXNTBaWEoyWVd4ekxteGxibWQwYUNBK0lEQXBJSHRjYmlBZ0lDQWdJR052Ym5OMElHWnBjbk4wVDNCMGFXOXVJRDBnYVc1MFpYSjJZV3h6V3pCZE8xeHVJQ0FnSUNBZ2RHaHBjeTV6WlhSVGRHRjBaU2g3SUhaaGJIVmxPaUJtYVhKemRFOXdkR2x2YmlCOUtUdGNiaUFnSUNBZ0lITm9iM1ZzWkZCMVlteHBjMmdnUFNCMGNuVmxPMXh1SUNBZ0lIMWNibHh1SUNBZ0lHbG1JQ2h6YUc5MWJHUlFkV0pzYVhOb0tTQjdYRzRnSUNBZ0lDQjBhR2x6TG5CMVlteHBjMmhGZG1WdWRDaHVaWGNnVTJObGJtVldZWEpwWVdKc1pWWmhiSFZsUTJoaGJtZGxaRVYyWlc1MEtIUm9hWE1wTENCMGNuVmxLVHRjYmlBZ0lDQjlYRzVjYmlBZ0lDQnlaWFIxY200Z2IyWW9lMzBwTzF4dUlDQjlYRzVjYmlBZ2NIVmliR2xqSUhOMFlYUnBZeUJEYjIxd2IyNWxiblFnUFNBb2V5QnRiMlJsYkNCOU9pQlRZMlZ1WlVOdmJYQnZibVZ1ZEZCeWIzQnpQRWx1ZEdWeWRtRnNWbUZ5YVdGaWJHVStLU0E5UGlCN1hHNGdJQ0FnWTI5dWMzUWdleUJyWlhrc0lIWmhiSFZsSUgwZ1BTQnRiMlJsYkM1MWMyVlRkR0YwWlNncE8xeHVJQ0FnSUhKbGRIVnliaUFvWEc0Z0lDQWdJQ0E4VTJWc1pXTjBYRzRnSUNBZ0lDQWdJR2xrUFh0clpYbDlYRzRnSUNBZ0lDQWdJSEJzWVdObGFHOXNaR1Z5UFZ3aVUyVnNaV04wSUhaaGJIVmxYQ0pjYmlBZ0lDQWdJQ0FnZDJsa2RHZzlYQ0poZFhSdlhDSmNiaUFnSUNBZ0lDQWdkbUZzZFdVOWUzWmhiSFZsZlZ4dUlDQWdJQ0FnSUNCMFlXSlRaV3hsWTNSelZtRnNkV1U5ZTJaaGJITmxmVnh1SUNBZ0lDQWdJQ0J2Y0hScGIyNXpQWHR0YjJSbGJDNW5aWFJQY0hScGIyNXpSbTl5VTJWc1pXTjBLQ2w5WEc0Z0lDQWdJQ0FnSUc5dVEyaGhibWRsUFh0dGIyUmxiQzVmYjI1RGFHRnVaMlY5WEc0Z0lDQWdJQ0F2UGx4dUlDQWdJQ2s3WEc0Z0lIMDdYRzU5WEc0aVhTd2libUZ0WlhNaU9sdGRMQ0p0WVhCd2FXNW5jeUk2SWpzN096czdPenM3T3pzN096czdPenM3T3pzN096czdPenM3TzBGQk1rSlBMRTFCUVUwc2VVSkJRMGdzWlVGRlZpeERRVUZCTzBGQlFVRXNSVUZEVXl4WlFVRlpMRmxCUVRoRExFVkJRVUU3UVVGREwwUXNTVUZCVFN4TFFVRkJMRU5CUVVFc1kwRkJRU3hEUVVGQk8wRkJRVUVzVFVGRFNpeEpRVUZOTEVWQlFVRXNWVUZCUVR0QlFVRkJMRTFCUTA0c1MwRkJUeXhGUVVGQkxFVkJRVUU3UVVGQlFTeE5RVU5RTEZOQlFVRXNSVUZCVnl4RFFVRkRMRWxCUVVFc1JVRkJUU3hMUVVGUExFVkJRVUVzUzBGQlFTeEZRVUZQTEVsQlFVMHNSVUZCUVN4SlFVRkJMRVZCUVUwc1MwRkJUeXhGUVVGQkxFbEJRVUVzUlVGQlRTeEpRVUZOTEVWQlFVRXNTMEZCUVN4RlFVRlBMRXRCUVVzc1EwRkJRVHRCUVVGQkxFMUJRek5GTEVsQlFVMHNSVUZCUVN4RlFVRkJPMEZCUVVFc1RVRkRUaXhoUVVGbExFVkJRVUVzUlVGQlFUdEJRVUZCTEUxQlEyWXNaVUZCYVVJc1JVRkJRU3hMUVVGQk8wRkJRVUVzVFVGRGFrSXNWMEZCWVN4RlFVRkJMRXRCUVVFN1FVRkJRU3hOUVVOaUxGTkJRVk1zWlVGQlowSXNRMEZCUVN4clFrRkJRVHRCUVVGQkxFdEJRVUVzUlVGRGRFSXNXVUZEU2l4RFFVRkJMRU5CUVVFc1EwRkJRVHRCUVRKRVNDeEpRVUZQTEVsQlFVRXNRMEZCUVN4VFFVRkJMRWRCUVZrc1EwRkJReXhMUVVGdFF5eExRVUZCTzBGQlEzSkVMRTFCUVVFc1NVRkJRU3hEUVVGTExGRkJRVk1zUTBGQlFTeEZRVUZGTEV0QlFVOHNSVUZCUVN4TFFVRkJMRU5CUVUwc1QwRkJVU3hEUVVGQkxFTkJRVUU3UVVGRGNrTXNUVUZCUVN4SlFVRkJMRU5CUVVzc1dVRkJZU3hEUVVGQkxFbEJRVWtzT0VKQlFTdENMRU5CUVVFc1NVRkJTU3hIUVVGSExFbEJRVWtzUTBGQlFTeERRVUZCTzBGQlFVRXNTMEZEYkVVc1EwRkJRVHRCUVRWRVJTeEpRVUZCTEVsQlFVRXNRMEZCU3l4UlFVRlhMRWRCUVVFc1NVRkJTU3gzUWtGQmVVSXNRMEZCUVN4SlFVRkJMRVZCUVUwc1JVRkJSU3hKUVVGQkxFVkJRVTBzVFVGQlRTeERRVUZETEVsQlFVc3NRMEZCUVN4TlFVRkJMRVZCUVZFc1EwRkJRU3hGUVVGSExFTkJRVUVzUTBGQlFUdEJRVUZCTEVkQlEzQkdPMEZCUVVFc1JVRkZVU3hOUVVGcFFpeEhRVUZCTzBGQlEzWkNMRWxCUVU4c1QwRkJRU3hEUVVGQkxFbEJRVUVzUlVGQlR5eExRVUZMTEV0QlFVMHNRMEZCUVN4SlFVRkJMRU5CUVVFc1EwRkJRU3hEUVVGQk8wRkJRVUVzUjBGRE0wSTdRVUZCUVN4RlFVVlBMRmRCUVdNc1IwRkJRVHRCUVVOdVFpeEpRVUZCTEU5QlFVOHNSVUZCUlN4RFFVRkRMRWxCUVVFc1EwRkJTeXhSUVVGWExFZEJRVUVzU1VGQlFTeERRVUZMTEUxQlFVMHNTMEZCVFN4RlFVRkJMRU5CUVVFN1FVRkJRU3hIUVVNM1F6dEJRVUZCTEVWQlJVOHNZMEZCWXl4TlFVRTRRaXhGUVVGQk8wRkJRMnBFTEVsQlFVRXNUVUZCVFN4VFFVRjVReXhGUVVGRExFTkJRVUU3UVVGRGFFUXNTVUZCVFN4TlFVRkJMRWRCUVVFc1IwRkJUU3hOUVVGUExFTkJRVUVzU1VGQlFTeERRVUZMTEUxQlFVOHNSVUZCUVN4RFFVRkJMRU5CUVVFN1FVRkRMMElzU1VGQlNTeEpRVUZCTEU5QlFVOHNVVUZCVVN4UlFVRlZMRVZCUVVFN1FVRkZNMElzVFVGQlNTeEpRVUZCTEVkQlFVRXNRMEZCU1N4VlFVRlhMRU5CUVVFc2JVSkJRVzFDTEVOQlFVY3NSVUZCUVR0QlFVTjJReXhSUVVGQkxFMUJRVUVzUTBGQlR5eExRVUZSTEVkQlFVRXNiVUpCUVVFc1EwRkJRVHRCUVVGQkxFOUJRMVlzVFVGQlFUdEJRVU5NTEZGQlFVRXNUVUZCUVN4RFFVRlBMRXRCUVZFc1IwRkJRU3hIUVVGQkxFTkJRVUU3UVVGQlFTeFBRVU5xUWp0QlFVRkJMRXRCUTBZN1FVRkRRU3hKUVVGQkxFbEJRVUVzUTBGQlN5eFRRVUZUTEUxQlFVMHNRMEZCUVN4RFFVRkJPMEZCUVVFc1IwRkRkRUk3UVVGQlFTeEZRVVZQTEcxQ1FVRnpSQ3hIUVVGQk8wRkJRek5FTEVsQlFVRXNUVUZCVFN4RlFVRkZMRXRCUVU4c1JVRkJRU3haUVVGQkxFVkJRV01zVTBGQlZ5eEZRVUZCTEZkQlFVRXNTMEZCWjBJc1NVRkJTeXhEUVVGQkxFdEJRVUVzUTBGQlFUdEJRVVUzUkN4SlFVRkpMRWxCUVVFc1QwRkJRU3hIUVVGVkxGTkJRVlVzUTBGQlFTeEhRVUZCTEVOQlFVa3NRMEZCUXl4UlFVRkJMRTFCUVdNc1JVRkJSU3hMUVVGUExFVkJRVUVzVVVGQlFTeEZRVUZWTEV0QlFVOHNSVUZCUVN4UlFVRkJMRVZCUVZjc1EwRkJRU3hEUVVGQkxFTkJRVUU3UVVGRmFFWXNTVUZCUVN4SlFVRkpMRmRCUVdFc1JVRkJRVHRCUVVObUxFMUJRVlVzVDBGQlFTeEhRVUZCTEVOQlFVTXNSVUZCUlN4TFFVRlBMRVZCUVVFc2JVSkJRVUVzUlVGQmNVSXNUMEZCVHl4clFrRkJiVUlzUlVGQlFTeEZRVUZITEVkQlFVY3NUMEZCVHl4RFFVRkJMRU5CUVVFN1FVRkJRU3hMUVVOc1JqdEJRVWRCTEVsQlFVa3NTVUZCUVN4WlFVRkJMRWxCUVdkQ0xFTkJRVU1zVDBGQlVTeERRVUZCTEVsQlFVRXNRMEZCU3l4RFFVRkRMRTFCUVZjc1MwRkJRU3hOUVVGQkxFTkJRVThzUzBGQlZTeExRVUZCTEZsQlFWa3NRMEZCUnl4RlFVRkJPMEZCUXpWRkxFMUJRVUVzVDBGQlFTeERRVUZSTEV0QlFVc3NSVUZCUlN4TFFVRkJMRVZCUVU4c1dVRkJZeXhGUVVGQkxFdEJRVUVzUlVGQlR5eGpRVUZqTEVOQlFVRXNRMEZCUVR0QlFVRkJMRXRCUXpORU8wRkJSVUVzU1VGQlR5eFBRVUZCTEU5QlFVRXNRMEZCUVR0QlFVRkJMRWRCUTFRN1FVRkJRU3hGUVVWUExGRkJRVEJDTEVkQlFVRTdRVUZETDBJc1NVRkJRU3hOUVVGTkxFVkJRVVVzUzBGQlFTeEZRVUZQTEdGQlFXVXNSVUZCUVN4bFFVRkJMRXRCUVc5Q0xFbEJRVXNzUTBGQlFTeExRVUZCTEVOQlFVRTdRVUZEZGtRc1NVRkJRU3hKUVVGSkxGVkJRVlVzYlVKQlFYRkNMRVZCUVVFN1FVRkRha01zVFVGQlR5eFBRVUZCTEVsQlFVRXNRMEZCU3l4eFFrRkJjMElzUTBGQlFTeGhRVUZCTEVWQlFXVXNaVUZCWlN4RFFVRkJMRU5CUVVFN1FVRkJRU3hMUVVOc1JUdEJRVVZCTEVsQlFVOHNUMEZCUVN4TFFVRkJMRU5CUVVFN1FVRkJRU3hIUVVOVU8wRkJRVUVzUlVGRlVTeHhRa0ZCUVN4RFFVRnpRaXhsUVVGMVFpeHJRa0ZCTkVJc1JVRkJRVHRCUVVNdlJTeEpRVUZCTEUxQlFVMHNVMEZCV1N4SFFVRkJMRlZCUVVFc1EwRkJWeXhaUVVGaExFTkJRVUVzU1VGQlNTeEZRVUZGTEV0QlFVMHNRMEZCUVN4TFFVRkJMRU5CUVVFN1FVRkRkRVFzU1VGQlFTeE5RVUZOTEdOQlFXbENMRWRCUVVFc1UwRkJRU3hEUVVGVkxHbENRVUZyUWl4RFFVRkJMRk5CUVVFc1JVRkJWeXhsUVVGbExHdENRVUZyUWl4RFFVRkJMRU5CUVVFN1FVRkRMMFlzU1VGQlFTeFBRVUZQTEdOQlFXVXNRMEZCUVN4UlFVRkJMRU5CUVVFN1FVRkJRU3hIUVVONFFqdEJRVUZCTEVWQlQwOHNhVUpCUVhsRUxFZEJRVUU3UVVGRE9VUXNTVUZCUVN4TlFVRk5MRVZCUVVVc1MwRkJRU3hGUVVGUExGTkJRVlVzUlVGQlFTeEhRVUZKTEVsQlFVc3NRMEZCUVN4TFFVRkJMRU5CUVVFN1FVRkRiRU1zU1VGQlFTeEpRVUZKTEdGQlFXZENMRWRCUVVFc1MwRkJRU3hEUVVGQk8wRkJSWEJDTEVsQlFVRXNTVUZCU1N4VlFVRlZMRzFDUVVGeFFpeEZRVUZCTzBGQlEycERMRTFCUVdkQ0xHRkJRVUVzUjBGQlFTeEpRVUZCTEVOQlFVRTdRVUZCUVN4TFFVTlFMRTFCUVVFc1NVRkJRU3hEUVVGRExFdEJRVk1zU1VGQlFTeFRRVUZCTEVOQlFWVXNVMEZCVXl4RFFVRkhMRVZCUVVFN1FVRkRla01zVFVGQlFTeE5RVUZOTEdOQlFXTXNVMEZCVlN4RFFVRkJMRU5CUVVFc1EwRkJRU3hEUVVGQk8wRkJRemxDTEUxQlFVRXNTVUZCUVN4RFFVRkxMRkZCUVZNc1EwRkJRU3hGUVVGRkxFdEJRVThzUlVGQlFTeFhRVUZCTEVWQlFXRXNRMEZCUVN4RFFVRkJPMEZCUTNCRExFMUJRV2RDTEdGQlFVRXNSMEZCUVN4SlFVRkJMRU5CUVVFN1FVRkJRU3hMUVVOc1FqdEJRVVZCTEVsQlFVRXNTVUZCU1N4aFFVRmxMRVZCUVVFN1FVRkRha0lzVFVGQlFTeEpRVUZCTEVOQlFVc3NXVUZCWVN4RFFVRkJMRWxCUVVrc09FSkJRU3RDTEVOQlFVRXNTVUZCU1N4SFFVRkhMRWxCUVVrc1EwRkJRU3hEUVVGQk8wRkJRVUVzUzBGRGJFVTdRVUZGUVN4SlFVRlBMRTlCUVVFc1JVRkJRU3hEUVVGSExFVkJRVVVzUTBGQlFTeERRVUZCTzBGQlFVRXNSMEZEWkR0QlFXZENSaXhEUVVGQk8wRkJhRWhoTEdkQ1FVRkJMRU5CYTBkSExGTkJRVmtzUjBGQlFTeERRVUZETEVWQlFVVXNTMEZCUVN4RlFVRnRSQ3hMUVVGQk8wRkJRemxGTEVWQlFVRXNUVUZCVFN4RlFVRkZMRWRCUVVFc1JVRkJTeXhMUVVGTkxFVkJRVUVzUjBGQlNTeE5RVUZOTEZGQlFWTXNSVUZCUVN4RFFVRkJPMEZCUTNSRExFVkJRVUVzZFVKQlEwY3NTMEZCUVN4RFFVRkJMR0ZCUVVFc1EwRkJRU3hOUVVGQkxFVkJRVUU3UVVGQlFTeEpRVU5ETEVWQlFVa3NSVUZCUVN4SFFVRkJPMEZCUVVFc1NVRkRTaXhYUVVGWkxFVkJRVUVzWTBGQlFUdEJRVUZCTEVsQlExb3NTMEZCVFN4RlFVRkJMRTFCUVVFN1FVRkJRU3hKUVVOT0xFdEJRVUU3UVVGQlFTeEpRVU5CTEdWQlFXbENMRVZCUVVFc1MwRkJRVHRCUVVGQkxFbEJRMnBDTEU5QlFVRXNSVUZCVXl4TlFVRk5MRzFDUVVGdlFpeEZRVUZCTzBGQlFVRXNTVUZEYmtNc1ZVRkJWU3hMUVVGTkxFTkJRVUVzVTBGQlFUdEJRVUZCTEVkQlEyeENMRU5CUVVFc1EwRkJRVHRCUVVWS0xFTkJRVUU3T3pzN0luMD1cbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUEyQk8sTUFBTSx5QkFDSCxlQUVWLENBQUE7QUFDUyxFQUFBLFdBQUEsQ0FBWSxZQUE4QyxFQUFBO0FBQ3pELElBQUEsS0FBQSxDQUFBLGNBQUEsQ0FBQTtN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
|
|
@@ -0,0 +1,295 @@
|
|
|
1
|
+
import { isEqual, isArray } from 'lodash';
|
|
2
|
+
import { map } from 'rxjs';
|
|
3
|
+
import { ALL_VARIABLE_VALUE, ALL_VARIABLE_TEXT } from '../constants.js';
|
|
4
|
+
import { SceneObjectBase } from '../../core/SceneObjectBase.js';
|
|
5
|
+
import { SceneVariableValueChangedEvent } from '../types.js';
|
|
6
|
+
import { formatRegistry } from '../interpolation/formatRegistry.js';
|
|
7
|
+
import { VariableFormatID } from '@grafana/schema';
|
|
8
|
+
import { setBaseClassState } from '../../utils/utils.js';
|
|
9
|
+
|
|
10
|
+
class MultiValueVariable extends SceneObjectBase {
|
|
11
|
+
constructor() {
|
|
12
|
+
super(...arguments);
|
|
13
|
+
this._urlSync = new MultiValueUrlSyncHandler(this);
|
|
14
|
+
}
|
|
15
|
+
validateAndUpdate() {
|
|
16
|
+
return this.getValueOptions({}).pipe(
|
|
17
|
+
map((options) => {
|
|
18
|
+
this.updateValueGivenNewOptions(options);
|
|
19
|
+
return {};
|
|
20
|
+
})
|
|
21
|
+
);
|
|
22
|
+
}
|
|
23
|
+
onCancel() {
|
|
24
|
+
this.setStateHelper({ loading: false });
|
|
25
|
+
const sceneVarSet = this.parent;
|
|
26
|
+
sceneVarSet == null ? void 0 : sceneVarSet.cancel(this);
|
|
27
|
+
}
|
|
28
|
+
updateValueGivenNewOptions(options) {
|
|
29
|
+
const { value: currentValue, text: currentText, options: oldOptions } = this.state;
|
|
30
|
+
const stateUpdate = this.getStateUpdateGivenNewOptions(options, currentValue, currentText);
|
|
31
|
+
this.interceptStateUpdateAfterValidation(stateUpdate);
|
|
32
|
+
this.setStateHelper(stateUpdate);
|
|
33
|
+
if (stateUpdate.value !== currentValue || stateUpdate.text !== currentText || this.hasAllValue() && !isEqual(options, oldOptions)) {
|
|
34
|
+
this.publishEvent(new SceneVariableValueChangedEvent(this), true);
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
getStateUpdateGivenNewOptions(options, currentValue, currentText) {
|
|
38
|
+
const stateUpdate = {
|
|
39
|
+
options,
|
|
40
|
+
loading: false,
|
|
41
|
+
value: currentValue,
|
|
42
|
+
text: currentText
|
|
43
|
+
};
|
|
44
|
+
if (options.length === 0) {
|
|
45
|
+
if (this.state.defaultToAll || this.state.includeAll) {
|
|
46
|
+
stateUpdate.value = ALL_VARIABLE_VALUE;
|
|
47
|
+
stateUpdate.text = ALL_VARIABLE_TEXT;
|
|
48
|
+
} else if (this.state.isMulti) {
|
|
49
|
+
stateUpdate.value = [];
|
|
50
|
+
stateUpdate.text = [];
|
|
51
|
+
} else {
|
|
52
|
+
stateUpdate.value = "";
|
|
53
|
+
stateUpdate.text = "";
|
|
54
|
+
}
|
|
55
|
+
return stateUpdate;
|
|
56
|
+
}
|
|
57
|
+
if (this.hasAllValue()) {
|
|
58
|
+
if (this.state.includeAll) {
|
|
59
|
+
stateUpdate.text = ALL_VARIABLE_TEXT;
|
|
60
|
+
} else {
|
|
61
|
+
stateUpdate.value = options[0].value;
|
|
62
|
+
stateUpdate.text = options[0].label;
|
|
63
|
+
if (this.state.isMulti) {
|
|
64
|
+
stateUpdate.value = [stateUpdate.value];
|
|
65
|
+
stateUpdate.text = [stateUpdate.text];
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
return stateUpdate;
|
|
69
|
+
}
|
|
70
|
+
if (this.state.isMulti) {
|
|
71
|
+
const currentValues = Array.isArray(currentValue) ? currentValue : [currentValue];
|
|
72
|
+
const validValues = currentValues.filter((v) => options.find((o) => o.value === v));
|
|
73
|
+
const validTexts = validValues.map((v) => options.find((o) => o.value === v).label);
|
|
74
|
+
if (validValues.length === 0) {
|
|
75
|
+
const defaultState = this.getDefaultMultiState(options);
|
|
76
|
+
stateUpdate.value = defaultState.value;
|
|
77
|
+
stateUpdate.text = defaultState.text;
|
|
78
|
+
} else {
|
|
79
|
+
if (!isEqual(validValues, currentValue)) {
|
|
80
|
+
stateUpdate.value = validValues;
|
|
81
|
+
}
|
|
82
|
+
if (!isEqual(validTexts, currentText)) {
|
|
83
|
+
stateUpdate.text = validTexts;
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
return stateUpdate;
|
|
87
|
+
}
|
|
88
|
+
let matchingOption = findOptionMatchingCurrent(currentValue, currentText, options);
|
|
89
|
+
if (matchingOption) {
|
|
90
|
+
stateUpdate.text = matchingOption.label;
|
|
91
|
+
stateUpdate.value = matchingOption.value;
|
|
92
|
+
} else {
|
|
93
|
+
if (this.state.defaultToAll) {
|
|
94
|
+
stateUpdate.value = ALL_VARIABLE_VALUE;
|
|
95
|
+
stateUpdate.text = ALL_VARIABLE_TEXT;
|
|
96
|
+
} else {
|
|
97
|
+
stateUpdate.value = options[0].value;
|
|
98
|
+
stateUpdate.text = options[0].label;
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
return stateUpdate;
|
|
102
|
+
}
|
|
103
|
+
interceptStateUpdateAfterValidation(stateUpdate) {
|
|
104
|
+
const isAllValueFix = stateUpdate.value === ALL_VARIABLE_VALUE && this.state.text === ALL_VARIABLE_TEXT;
|
|
105
|
+
if (this.skipNextValidation && stateUpdate.value !== this.state.value && stateUpdate.text !== this.state.text && !isAllValueFix) {
|
|
106
|
+
stateUpdate.value = this.state.value;
|
|
107
|
+
stateUpdate.text = this.state.text;
|
|
108
|
+
}
|
|
109
|
+
this.skipNextValidation = false;
|
|
110
|
+
}
|
|
111
|
+
getValue() {
|
|
112
|
+
if (this.hasAllValue()) {
|
|
113
|
+
if (this.state.allValue) {
|
|
114
|
+
return new CustomAllValue(this.state.allValue, this);
|
|
115
|
+
}
|
|
116
|
+
return this.state.options.map((x) => x.value);
|
|
117
|
+
}
|
|
118
|
+
return this.state.value;
|
|
119
|
+
}
|
|
120
|
+
getValueText() {
|
|
121
|
+
if (this.hasAllValue()) {
|
|
122
|
+
return ALL_VARIABLE_TEXT;
|
|
123
|
+
}
|
|
124
|
+
if (Array.isArray(this.state.text)) {
|
|
125
|
+
return this.state.text.join(" + ");
|
|
126
|
+
}
|
|
127
|
+
return String(this.state.text);
|
|
128
|
+
}
|
|
129
|
+
hasAllValue() {
|
|
130
|
+
const value = this.state.value;
|
|
131
|
+
return value === ALL_VARIABLE_VALUE || Array.isArray(value) && value[0] === ALL_VARIABLE_VALUE;
|
|
132
|
+
}
|
|
133
|
+
getDefaultMultiState(options) {
|
|
134
|
+
if (this.state.defaultToAll) {
|
|
135
|
+
return { value: [ALL_VARIABLE_VALUE], text: [ALL_VARIABLE_TEXT] };
|
|
136
|
+
} else if (options.length > 0) {
|
|
137
|
+
return { value: [options[0].value], text: [options[0].label] };
|
|
138
|
+
} else {
|
|
139
|
+
return { value: [], text: [] };
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
changeValueTo(value, text) {
|
|
143
|
+
if (value === this.state.value && text === this.state.text) {
|
|
144
|
+
return;
|
|
145
|
+
}
|
|
146
|
+
if (!text) {
|
|
147
|
+
if (Array.isArray(value)) {
|
|
148
|
+
text = value.map((v) => this.findLabelTextForValue(v));
|
|
149
|
+
} else {
|
|
150
|
+
text = this.findLabelTextForValue(value);
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
if (Array.isArray(value)) {
|
|
154
|
+
if (value.length === 0) {
|
|
155
|
+
const state = this.getDefaultMultiState(this.state.options);
|
|
156
|
+
value = state.value;
|
|
157
|
+
text = state.text;
|
|
158
|
+
}
|
|
159
|
+
if (value[value.length - 1] === ALL_VARIABLE_VALUE) {
|
|
160
|
+
value = [ALL_VARIABLE_VALUE];
|
|
161
|
+
text = [ALL_VARIABLE_TEXT];
|
|
162
|
+
} else if (value[0] === ALL_VARIABLE_VALUE && value.length > 1) {
|
|
163
|
+
value.shift();
|
|
164
|
+
if (Array.isArray(text)) {
|
|
165
|
+
text.shift();
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
if (isEqual(value, this.state.value) && isEqual(text, this.state.text)) {
|
|
170
|
+
return;
|
|
171
|
+
}
|
|
172
|
+
this.setStateHelper({ value, text, loading: false });
|
|
173
|
+
this.publishEvent(new SceneVariableValueChangedEvent(this), true);
|
|
174
|
+
}
|
|
175
|
+
findLabelTextForValue(value) {
|
|
176
|
+
if (value === ALL_VARIABLE_VALUE) {
|
|
177
|
+
return ALL_VARIABLE_TEXT;
|
|
178
|
+
}
|
|
179
|
+
const option = this.state.options.find((x) => x.value === value);
|
|
180
|
+
if (option) {
|
|
181
|
+
return option.label;
|
|
182
|
+
}
|
|
183
|
+
const optionByLabel = this.state.options.find((x) => x.label === value);
|
|
184
|
+
if (optionByLabel) {
|
|
185
|
+
return optionByLabel.label;
|
|
186
|
+
}
|
|
187
|
+
return value;
|
|
188
|
+
}
|
|
189
|
+
setStateHelper(state) {
|
|
190
|
+
setBaseClassState(this, state);
|
|
191
|
+
}
|
|
192
|
+
getOptionsForSelect() {
|
|
193
|
+
let options = this.state.options;
|
|
194
|
+
if (this.state.includeAll) {
|
|
195
|
+
options = [{ value: ALL_VARIABLE_VALUE, label: ALL_VARIABLE_TEXT }, ...options];
|
|
196
|
+
}
|
|
197
|
+
if (!Array.isArray(this.state.value)) {
|
|
198
|
+
const current = options.find((x) => x.value === this.state.value);
|
|
199
|
+
if (!current) {
|
|
200
|
+
options = [{ value: this.state.value, label: String(this.state.text) }, ...options];
|
|
201
|
+
}
|
|
202
|
+
}
|
|
203
|
+
return options;
|
|
204
|
+
}
|
|
205
|
+
refreshOptions() {
|
|
206
|
+
this.getValueOptions({}).subscribe((options) => {
|
|
207
|
+
this.updateValueGivenNewOptions(options);
|
|
208
|
+
});
|
|
209
|
+
}
|
|
210
|
+
}
|
|
211
|
+
function findOptionMatchingCurrent(currentValue, currentText, options) {
|
|
212
|
+
let textMatch;
|
|
213
|
+
for (const item of options) {
|
|
214
|
+
if (item.value === currentValue) {
|
|
215
|
+
return item;
|
|
216
|
+
}
|
|
217
|
+
if (item.label === currentText) {
|
|
218
|
+
textMatch = item;
|
|
219
|
+
}
|
|
220
|
+
}
|
|
221
|
+
return textMatch;
|
|
222
|
+
}
|
|
223
|
+
class MultiValueUrlSyncHandler {
|
|
224
|
+
constructor(_sceneObject) {
|
|
225
|
+
this._sceneObject = _sceneObject;
|
|
226
|
+
}
|
|
227
|
+
getKey() {
|
|
228
|
+
return `var-${this._sceneObject.state.name}`;
|
|
229
|
+
}
|
|
230
|
+
getKeys() {
|
|
231
|
+
if (this._sceneObject.state.skipUrlSync) {
|
|
232
|
+
return [];
|
|
233
|
+
}
|
|
234
|
+
return [this.getKey()];
|
|
235
|
+
}
|
|
236
|
+
getUrlState() {
|
|
237
|
+
if (this._sceneObject.state.skipUrlSync) {
|
|
238
|
+
return {};
|
|
239
|
+
}
|
|
240
|
+
let urlValue = null;
|
|
241
|
+
let value = this._sceneObject.state.value;
|
|
242
|
+
if (Array.isArray(value)) {
|
|
243
|
+
urlValue = value.map(String);
|
|
244
|
+
} else if (this._sceneObject.state.isMulti) {
|
|
245
|
+
urlValue = [String(value)];
|
|
246
|
+
} else {
|
|
247
|
+
urlValue = String(value);
|
|
248
|
+
}
|
|
249
|
+
return { [this.getKey()]: urlValue };
|
|
250
|
+
}
|
|
251
|
+
updateFromUrl(values) {
|
|
252
|
+
let urlValue = values[this.getKey()];
|
|
253
|
+
if (urlValue != null) {
|
|
254
|
+
if (this._sceneObject.state.includeAll) {
|
|
255
|
+
urlValue = handleLegacyUrlAllValue(urlValue);
|
|
256
|
+
}
|
|
257
|
+
if (this._sceneObject.state.allValue && this._sceneObject.state.allValue === urlValue) {
|
|
258
|
+
urlValue = ALL_VARIABLE_VALUE;
|
|
259
|
+
}
|
|
260
|
+
if (!this._sceneObject.isActive) {
|
|
261
|
+
this._sceneObject.skipNextValidation = true;
|
|
262
|
+
}
|
|
263
|
+
this._sceneObject.changeValueTo(urlValue);
|
|
264
|
+
}
|
|
265
|
+
}
|
|
266
|
+
}
|
|
267
|
+
function handleLegacyUrlAllValue(value) {
|
|
268
|
+
if (isArray(value) && value[0] === ALL_VARIABLE_TEXT) {
|
|
269
|
+
return [ALL_VARIABLE_VALUE];
|
|
270
|
+
} else if (value === ALL_VARIABLE_TEXT) {
|
|
271
|
+
return ALL_VARIABLE_VALUE;
|
|
272
|
+
}
|
|
273
|
+
return value;
|
|
274
|
+
}
|
|
275
|
+
class CustomAllValue {
|
|
276
|
+
constructor(_value, _variable) {
|
|
277
|
+
this._value = _value;
|
|
278
|
+
this._variable = _variable;
|
|
279
|
+
}
|
|
280
|
+
formatter(formatNameOrFn) {
|
|
281
|
+
if (formatNameOrFn === VariableFormatID.Text) {
|
|
282
|
+
return ALL_VARIABLE_TEXT;
|
|
283
|
+
}
|
|
284
|
+
if (formatNameOrFn === VariableFormatID.PercentEncode) {
|
|
285
|
+
return formatRegistry.get(VariableFormatID.PercentEncode).formatter(this._value, [], this._variable);
|
|
286
|
+
}
|
|
287
|
+
if (formatNameOrFn === VariableFormatID.QueryParam) {
|
|
288
|
+
return formatRegistry.get(VariableFormatID.QueryParam).formatter(ALL_VARIABLE_TEXT, [], this._variable);
|
|
289
|
+
}
|
|
290
|
+
return this._value;
|
|
291
|
+
}
|
|
292
|
+
}
|
|
293
|
+
|
|
294
|
+
export { CustomAllValue, MultiValueUrlSyncHandler, MultiValueVariable };
|
|
295
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTXVsdGlWYWx1ZVZhcmlhYmxlLmpzIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi92YXJpYWJsZXMvdmFyaWFudHMvTXVsdGlWYWx1ZVZhcmlhYmxlLmpzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGlzRXF1YWwsIGlzQXJyYXkgfSBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHsgbWFwIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBBTExfVkFSSUFCTEVfVkFMVUUsIEFMTF9WQVJJQUJMRV9URVhUIH0gZnJvbSAnLi4vY29uc3RhbnRzLmpzJztcbmltcG9ydCB7IFNjZW5lT2JqZWN0QmFzZSB9IGZyb20gJy4uLy4uL2NvcmUvU2NlbmVPYmplY3RCYXNlLmpzJztcbmltcG9ydCB7IFNjZW5lVmFyaWFibGVWYWx1ZUNoYW5nZWRFdmVudCB9IGZyb20gJy4uL3R5cGVzLmpzJztcbmltcG9ydCB7IGZvcm1hdFJlZ2lzdHJ5IH0gZnJvbSAnLi4vaW50ZXJwb2xhdGlvbi9mb3JtYXRSZWdpc3RyeS5qcyc7XG5pbXBvcnQgeyBWYXJpYWJsZUZvcm1hdElEIH0gZnJvbSAnQGdyYWZhbmEvc2NoZW1hJztcbmltcG9ydCB7IHNldEJhc2VDbGFzc1N0YXRlIH0gZnJvbSAnLi4vLi4vdXRpbHMvdXRpbHMuanMnO1xuXG5jbGFzcyBNdWx0aVZhbHVlVmFyaWFibGUgZXh0ZW5kcyBTY2VuZU9iamVjdEJhc2Uge1xuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBzdXBlciguLi5hcmd1bWVudHMpO1xuICAgIHRoaXMuX3VybFN5bmMgPSBuZXcgTXVsdGlWYWx1ZVVybFN5bmNIYW5kbGVyKHRoaXMpO1xuICB9XG4gIHZhbGlkYXRlQW5kVXBkYXRlKCkge1xuICAgIHJldHVybiB0aGlzLmdldFZhbHVlT3B0aW9ucyh7fSkucGlwZShcbiAgICAgIG1hcCgob3B0aW9ucykgPT4ge1xuICAgICAgICB0aGlzLnVwZGF0ZVZhbHVlR2l2ZW5OZXdPcHRpb25zKG9wdGlvbnMpO1xuICAgICAgICByZXR1cm4ge307XG4gICAgICB9KVxuICAgICk7XG4gIH1cbiAgb25DYW5jZWwoKSB7XG4gICAgdGhpcy5zZXRTdGF0ZUhlbHBlcih7IGxvYWRpbmc6IGZhbHNlIH0pO1xuICAgIGNvbnN0IHNjZW5lVmFyU2V0ID0gdGhpcy5wYXJlbnQ7XG4gICAgc2NlbmVWYXJTZXQgPT0gbnVsbCA/IHZvaWQgMCA6IHNjZW5lVmFyU2V0LmNhbmNlbCh0aGlzKTtcbiAgfVxuICB1cGRhdGVWYWx1ZUdpdmVuTmV3T3B0aW9ucyhvcHRpb25zKSB7XG4gICAgY29uc3QgeyB2YWx1ZTogY3VycmVudFZhbHVlLCB0ZXh0OiBjdXJyZW50VGV4dCwgb3B0aW9uczogb2xkT3B0aW9ucyB9ID0gdGhpcy5zdGF0ZTtcbiAgICBjb25zdCBzdGF0ZVVwZGF0ZSA9IHRoaXMuZ2V0U3RhdGVVcGRhdGVHaXZlbk5ld09wdGlvbnMob3B0aW9ucywgY3VycmVudFZhbHVlLCBjdXJyZW50VGV4dCk7XG4gICAgdGhpcy5pbnRlcmNlcHRTdGF0ZVVwZGF0ZUFmdGVyVmFsaWRhdGlvbihzdGF0ZVVwZGF0ZSk7XG4gICAgdGhpcy5zZXRTdGF0ZUhlbHBlcihzdGF0ZVVwZGF0ZSk7XG4gICAgaWYgKHN0YXRlVXBkYXRlLnZhbHVlICE9PSBjdXJyZW50VmFsdWUgfHwgc3RhdGVVcGRhdGUudGV4dCAhPT0gY3VycmVudFRleHQgfHwgdGhpcy5oYXNBbGxWYWx1ZSgpICYmICFpc0VxdWFsKG9wdGlvbnMsIG9sZE9wdGlvbnMpKSB7XG4gICAgICB0aGlzLnB1Ymxpc2hFdmVudChuZXcgU2NlbmVWYXJpYWJsZVZhbHVlQ2hhbmdlZEV2ZW50KHRoaXMpLCB0cnVlKTtcbiAgICB9XG4gIH1cbiAgZ2V0U3RhdGVVcGRhdGVHaXZlbk5ld09wdGlvbnMob3B0aW9ucywgY3VycmVudFZhbHVlLCBjdXJyZW50VGV4dCkge1xuICAgIGNvbnN0IHN0YXRlVXBkYXRlID0ge1xuICAgICAgb3B0aW9ucyxcbiAgICAgIGxvYWRpbmc6IGZhbHNlLFxuICAgICAgdmFsdWU6IGN1cnJlbnRWYWx1ZSxcbiAgICAgIHRleHQ6IGN1cnJlbnRUZXh0XG4gICAgfTtcbiAgICBpZiAob3B0aW9ucy5sZW5ndGggPT09IDApIHtcbiAgICAgIGlmICh0aGlzLnN0YXRlLmRlZmF1bHRUb0FsbCB8fCB0aGlzLnN0YXRlLmluY2x1ZGVBbGwpIHtcbiAgICAgICAgc3RhdGVVcGRhdGUudmFsdWUgPSBBTExfVkFSSUFCTEVfVkFMVUU7XG4gICAgICAgIHN0YXRlVXBkYXRlLnRleHQgPSBBTExfVkFSSUFCTEVfVEVYVDtcbiAgICAgIH0gZWxzZSBpZiAodGhpcy5zdGF0ZS5pc011bHRpKSB7XG4gICAgICAgIHN0YXRlVXBkYXRlLnZhbHVlID0gW107XG4gICAgICAgIHN0YXRlVXBkYXRlLnRleHQgPSBbXTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHN0YXRlVXBkYXRlLnZhbHVlID0gXCJcIjtcbiAgICAgICAgc3RhdGVVcGRhdGUudGV4dCA9IFwiXCI7XG4gICAgICB9XG4gICAgICByZXR1cm4gc3RhdGVVcGRhdGU7XG4gICAgfVxuICAgIGlmICh0aGlzLmhhc0FsbFZhbHVlKCkpIHtcbiAgICAgIGlmICh0aGlzLnN0YXRlLmluY2x1ZGVBbGwpIHtcbiAgICAgICAgc3RhdGVVcGRhdGUudGV4dCA9IEFMTF9WQVJJQUJMRV9URVhUO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc3RhdGVVcGRhdGUudmFsdWUgPSBvcHRpb25zWzBdLnZhbHVlO1xuICAgICAgICBzdGF0ZVVwZGF0ZS50ZXh0ID0gb3B0aW9uc1swXS5sYWJlbDtcbiAgICAgICAgaWYgKHRoaXMuc3RhdGUuaXNNdWx0aSkge1xuICAgICAgICAgIHN0YXRlVXBkYXRlLnZhbHVlID0gW3N0YXRlVXBkYXRlLnZhbHVlXTtcbiAgICAgICAgICBzdGF0ZVVwZGF0ZS50ZXh0ID0gW3N0YXRlVXBkYXRlLnRleHRdO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gc3RhdGVVcGRhdGU7XG4gICAgfVxuICAgIGlmICh0aGlzLnN0YXRlLmlzTXVsdGkpIHtcbiAgICAgIGNvbnN0IGN1cnJlbnRWYWx1ZXMgPSBBcnJheS5pc0FycmF5KGN1cnJlbnRWYWx1ZSkgPyBjdXJyZW50VmFsdWUgOiBbY3VycmVudFZhbHVlXTtcbiAgICAgIGNvbnN0IHZhbGlkVmFsdWVzID0gY3VycmVudFZhbHVlcy5maWx0ZXIoKHYpID0+IG9wdGlvbnMuZmluZCgobykgPT4gby52YWx1ZSA9PT0gdikpO1xuICAgICAgY29uc3QgdmFsaWRUZXh0cyA9IHZhbGlkVmFsdWVzLm1hcCgodikgPT4gb3B0aW9ucy5maW5kKChvKSA9PiBvLnZhbHVlID09PSB2KS5sYWJlbCk7XG4gICAgICBpZiAodmFsaWRWYWx1ZXMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIGNvbnN0IGRlZmF1bHRTdGF0ZSA9IHRoaXMuZ2V0RGVmYXVsdE11bHRpU3RhdGUob3B0aW9ucyk7XG4gICAgICAgIHN0YXRlVXBkYXRlLnZhbHVlID0gZGVmYXVsdFN0YXRlLnZhbHVlO1xuICAgICAgICBzdGF0ZVVwZGF0ZS50ZXh0ID0gZGVmYXVsdFN0YXRlLnRleHQ7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZiAoIWlzRXF1YWwodmFsaWRWYWx1ZXMsIGN1cnJlbnRWYWx1ZSkpIHtcbiAgICAgICAgICBzdGF0ZVVwZGF0ZS52YWx1ZSA9IHZhbGlkVmFsdWVzO1xuICAgICAgICB9XG4gICAgICAgIGlmICghaXNFcXVhbCh2YWxpZFRleHRzLCBjdXJyZW50VGV4dCkpIHtcbiAgICAgICAgICBzdGF0ZVVwZGF0ZS50ZXh0ID0gdmFsaWRUZXh0cztcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIHN0YXRlVXBkYXRlO1xuICAgIH1cbiAgICBsZXQgbWF0Y2hpbmdPcHRpb24gPSBmaW5kT3B0aW9uTWF0Y2hpbmdDdXJyZW50KGN1cnJlbnRWYWx1ZSwgY3VycmVudFRleHQsIG9wdGlvbnMpO1xuICAgIGlmIChtYXRjaGluZ09wdGlvbikge1xuICAgICAgc3RhdGVVcGRhdGUudGV4dCA9IG1hdGNoaW5nT3B0aW9uLmxhYmVsO1xuICAgICAgc3RhdGVVcGRhdGUudmFsdWUgPSBtYXRjaGluZ09wdGlvbi52YWx1ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKHRoaXMuc3RhdGUuZGVmYXVsdFRvQWxsKSB7XG4gICAgICAgIHN0YXRlVXBkYXRlLnZhbHVlID0gQUxMX1ZBUklBQkxFX1ZBTFVFO1xuICAgICAgICBzdGF0ZVVwZGF0ZS50ZXh0ID0gQUxMX1ZBUklBQkxFX1RFWFQ7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzdGF0ZVVwZGF0ZS52YWx1ZSA9IG9wdGlvbnNbMF0udmFsdWU7XG4gICAgICAgIHN0YXRlVXBkYXRlLnRleHQgPSBvcHRpb25zWzBdLmxhYmVsO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gc3RhdGVVcGRhdGU7XG4gIH1cbiAgaW50ZXJjZXB0U3RhdGVVcGRhdGVBZnRlclZhbGlkYXRpb24oc3RhdGVVcGRhdGUpIHtcbiAgICBjb25zdCBpc0FsbFZhbHVlRml4ID0gc3RhdGVVcGRhdGUudmFsdWUgPT09IEFMTF9WQVJJQUJMRV9WQUxVRSAmJiB0aGlzLnN0YXRlLnRleHQgPT09IEFMTF9WQVJJQUJMRV9URVhUO1xuICAgIGlmICh0aGlzLnNraXBOZXh0VmFsaWRhdGlvbiAmJiBzdGF0ZVVwZGF0ZS52YWx1ZSAhPT0gdGhpcy5zdGF0ZS52YWx1ZSAmJiBzdGF0ZVVwZGF0ZS50ZXh0ICE9PSB0aGlzLnN0YXRlLnRleHQgJiYgIWlzQWxsVmFsdWVGaXgpIHtcbiAgICAgIHN0YXRlVXBkYXRlLnZhbHVlID0gdGhpcy5zdGF0ZS52YWx1ZTtcbiAgICAgIHN0YXRlVXBkYXRlLnRleHQgPSB0aGlzLnN0YXRlLnRleHQ7XG4gICAgfVxuICAgIHRoaXMuc2tpcE5leHRWYWxpZGF0aW9uID0gZmFsc2U7XG4gIH1cbiAgZ2V0VmFsdWUoKSB7XG4gICAgaWYgKHRoaXMuaGFzQWxsVmFsdWUoKSkge1xuICAgICAgaWYgKHRoaXMuc3RhdGUuYWxsVmFsdWUpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBDdXN0b21BbGxWYWx1ZSh0aGlzLnN0YXRlLmFsbFZhbHVlLCB0aGlzKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB0aGlzLnN0YXRlLm9wdGlvbnMubWFwKCh4KSA9PiB4LnZhbHVlKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuc3RhdGUudmFsdWU7XG4gIH1cbiAgZ2V0VmFsdWVUZXh0KCkge1xuICAgIGlmICh0aGlzLmhhc0FsbFZhbHVlKCkpIHtcbiAgICAgIHJldHVybiBBTExfVkFSSUFCTEVfVEVYVDtcbiAgICB9XG4gICAgaWYgKEFycmF5LmlzQXJyYXkodGhpcy5zdGF0ZS50ZXh0KSkge1xuICAgICAgcmV0dXJuIHRoaXMuc3RhdGUudGV4dC5qb2luKFwiICsgXCIpO1xuICAgIH1cbiAgICByZXR1cm4gU3RyaW5nKHRoaXMuc3RhdGUudGV4dCk7XG4gIH1cbiAgaGFzQWxsVmFsdWUoKSB7XG4gICAgY29uc3QgdmFsdWUgPSB0aGlzLnN0YXRlLnZhbHVlO1xuICAgIHJldHVybiB2YWx1ZSA9PT0gQUxMX1ZBUklBQkxFX1ZBTFVFIHx8IEFycmF5LmlzQXJyYXkodmFsdWUpICYmIHZhbHVlWzBdID09PSBBTExfVkFSSUFCTEVfVkFMVUU7XG4gIH1cbiAgZ2V0RGVmYXVsdE11bHRpU3RhdGUob3B0aW9ucykge1xuICAgIGlmICh0aGlzLnN0YXRlLmRlZmF1bHRUb0FsbCkge1xuICAgICAgcmV0dXJuIHsgdmFsdWU6IFtBTExfVkFSSUFCTEVfVkFMVUVdLCB0ZXh0OiBbQUxMX1ZBUklBQkxFX1RFWFRdIH07XG4gICAgfSBlbHNlIGlmIChvcHRpb25zLmxlbmd0aCA+IDApIHtcbiAgICAgIHJldHVybiB7IHZhbHVlOiBbb3B0aW9uc1swXS52YWx1ZV0sIHRleHQ6IFtvcHRpb25zWzBdLmxhYmVsXSB9O1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4geyB2YWx1ZTogW10sIHRleHQ6IFtdIH07XG4gICAgfVxuICB9XG4gIGNoYW5nZVZhbHVlVG8odmFsdWUsIHRleHQpIHtcbiAgICBpZiAodmFsdWUgPT09IHRoaXMuc3RhdGUudmFsdWUgJiYgdGV4dCA9PT0gdGhpcy5zdGF0ZS50ZXh0KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmICghdGV4dCkge1xuICAgICAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgICAgIHRleHQgPSB2YWx1ZS5tYXAoKHYpID0+IHRoaXMuZmluZExhYmVsVGV4dEZvclZhbHVlKHYpKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRleHQgPSB0aGlzLmZpbmRMYWJlbFRleHRGb3JWYWx1ZSh2YWx1ZSk7XG4gICAgICB9XG4gICAgfVxuICAgIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSkge1xuICAgICAgaWYgKHZhbHVlLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICBjb25zdCBzdGF0ZSA9IHRoaXMuZ2V0RGVmYXVsdE11bHRpU3RhdGUodGhpcy5zdGF0ZS5vcHRpb25zKTtcbiAgICAgICAgdmFsdWUgPSBzdGF0ZS52YWx1ZTtcbiAgICAgICAgdGV4dCA9IHN0YXRlLnRleHQ7XG4gICAgICB9XG4gICAgICBpZiAodmFsdWVbdmFsdWUubGVuZ3RoIC0gMV0gPT09IEFMTF9WQVJJQUJMRV9WQUxVRSkge1xuICAgICAgICB2YWx1ZSA9IFtBTExfVkFSSUFCTEVfVkFMVUVdO1xuICAgICAgICB0ZXh0ID0gW0FMTF9WQVJJQUJMRV9URVhUXTtcbiAgICAgIH0gZWxzZSBpZiAodmFsdWVbMF0gPT09IEFMTF9WQVJJQUJMRV9WQUxVRSAmJiB2YWx1ZS5sZW5ndGggPiAxKSB7XG4gICAgICAgIHZhbHVlLnNoaWZ0KCk7XG4gICAgICAgIGlmIChBcnJheS5pc0FycmF5KHRleHQpKSB7XG4gICAgICAgICAgdGV4dC5zaGlmdCgpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIGlmIChpc0VxdWFsKHZhbHVlLCB0aGlzLnN0YXRlLnZhbHVlKSAmJiBpc0VxdWFsKHRleHQsIHRoaXMuc3RhdGUudGV4dCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5zZXRTdGF0ZUhlbHBlcih7IHZhbHVlLCB0ZXh0LCBsb2FkaW5nOiBmYWxzZSB9KTtcbiAgICB0aGlzLnB1Ymxpc2hFdmVudChuZXcgU2NlbmVWYXJpYWJsZVZhbHVlQ2hhbmdlZEV2ZW50KHRoaXMpLCB0cnVlKTtcbiAgfVxuICBmaW5kTGFiZWxUZXh0Rm9yVmFsdWUodmFsdWUpIHtcbiAgICBpZiAodmFsdWUgPT09IEFMTF9WQVJJQUJMRV9WQUxVRSkge1xuICAgICAgcmV0dXJuIEFMTF9WQVJJQUJMRV9URVhUO1xuICAgIH1cbiAgICBjb25zdCBvcHRpb24gPSB0aGlzLnN0YXRlLm9wdGlvbnMuZmluZCgoeCkgPT4geC52YWx1ZSA9PT0gdmFsdWUpO1xuICAgIGlmIChvcHRpb24pIHtcbiAgICAgIHJldHVybiBvcHRpb24ubGFiZWw7XG4gICAgfVxuICAgIGNvbnN0IG9wdGlvbkJ5TGFiZWwgPSB0aGlzLnN0YXRlLm9wdGlvbnMuZmluZCgoeCkgPT4geC5sYWJlbCA9PT0gdmFsdWUpO1xuICAgIGlmIChvcHRpb25CeUxhYmVsKSB7XG4gICAgICByZXR1cm4gb3B0aW9uQnlMYWJlbC5sYWJlbDtcbiAgICB9XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9XG4gIHNldFN0YXRlSGVscGVyKHN0YXRlKSB7XG4gICAgc2V0QmFzZUNsYXNzU3RhdGUodGhpcywgc3RhdGUpO1xuICB9XG4gIGdldE9wdGlvbnNGb3JTZWxlY3QoKSB7XG4gICAgbGV0IG9wdGlvbnMgPSB0aGlzLnN0YXRlLm9wdGlvbnM7XG4gICAgaWYgKHRoaXMuc3RhdGUuaW5jbHVkZUFsbCkge1xuICAgICAgb3B0aW9ucyA9IFt7IHZhbHVlOiBBTExfVkFSSUFCTEVfVkFMVUUsIGxhYmVsOiBBTExfVkFSSUFCTEVfVEVYVCB9LCAuLi5vcHRpb25zXTtcbiAgICB9XG4gICAgaWYgKCFBcnJheS5pc0FycmF5KHRoaXMuc3RhdGUudmFsdWUpKSB7XG4gICAgICBjb25zdCBjdXJyZW50ID0gb3B0aW9ucy5maW5kKCh4KSA9PiB4LnZhbHVlID09PSB0aGlzLnN0YXRlLnZhbHVlKTtcbiAgICAgIGlmICghY3VycmVudCkge1xuICAgICAgICBvcHRpb25zID0gW3sgdmFsdWU6IHRoaXMuc3RhdGUudmFsdWUsIGxhYmVsOiBTdHJpbmcodGhpcy5zdGF0ZS50ZXh0KSB9LCAuLi5vcHRpb25zXTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG9wdGlvbnM7XG4gIH1cbiAgcmVmcmVzaE9wdGlvbnMoKSB7XG4gICAgdGhpcy5nZXRWYWx1ZU9wdGlvbnMoe30pLnN1YnNjcmliZSgob3B0aW9ucykgPT4ge1xuICAgICAgdGhpcy51cGRhdGVWYWx1ZUdpdmVuTmV3T3B0aW9ucyhvcHRpb25zKTtcbiAgICB9KTtcbiAgfVxufVxuZnVuY3Rpb24gZmluZE9wdGlvbk1hdGNoaW5nQ3VycmVudChjdXJyZW50VmFsdWUsIGN1cnJlbnRUZXh0LCBvcHRpb25zKSB7XG4gIGxldCB0ZXh0TWF0Y2g7XG4gIGZvciAoY29uc3QgaXRlbSBvZiBvcHRpb25zKSB7XG4gICAgaWYgKGl0ZW0udmFsdWUgPT09IGN1cnJlbnRWYWx1ZSkge1xuICAgICAgcmV0dXJuIGl0ZW07XG4gICAgfVxuICAgIGlmIChpdGVtLmxhYmVsID09PSBjdXJyZW50VGV4dCkge1xuICAgICAgdGV4dE1hdGNoID0gaXRlbTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHRleHRNYXRjaDtcbn1cbmNsYXNzIE11bHRpVmFsdWVVcmxTeW5jSGFuZGxlciB7XG4gIGNvbnN0cnVjdG9yKF9zY2VuZU9iamVjdCkge1xuICAgIHRoaXMuX3NjZW5lT2JqZWN0ID0gX3NjZW5lT2JqZWN0O1xuICB9XG4gIGdldEtleSgpIHtcbiAgICByZXR1cm4gYHZhci0ke3RoaXMuX3NjZW5lT2JqZWN0LnN0YXRlLm5hbWV9YDtcbiAgfVxuICBnZXRLZXlzKCkge1xuICAgIGlmICh0aGlzLl9zY2VuZU9iamVjdC5zdGF0ZS5za2lwVXJsU3luYykge1xuICAgICAgcmV0dXJuIFtdO1xuICAgIH1cbiAgICByZXR1cm4gW3RoaXMuZ2V0S2V5KCldO1xuICB9XG4gIGdldFVybFN0YXRlKCkge1xuICAgIGlmICh0aGlzLl9zY2VuZU9iamVjdC5zdGF0ZS5za2lwVXJsU3luYykge1xuICAgICAgcmV0dXJuIHt9O1xuICAgIH1cbiAgICBsZXQgdXJsVmFsdWUgPSBudWxsO1xuICAgIGxldCB2YWx1ZSA9IHRoaXMuX3NjZW5lT2JqZWN0LnN0YXRlLnZhbHVlO1xuICAgIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSkge1xuICAgICAgdXJsVmFsdWUgPSB2YWx1ZS5tYXAoU3RyaW5nKTtcbiAgICB9IGVsc2UgaWYgKHRoaXMuX3NjZW5lT2JqZWN0LnN0YXRlLmlzTXVsdGkpIHtcbiAgICAgIHVybFZhbHVlID0gW1N0cmluZyh2YWx1ZSldO1xuICAgIH0gZWxzZSB7XG4gICAgICB1cmxWYWx1ZSA9IFN0cmluZyh2YWx1ZSk7XG4gICAgfVxuICAgIHJldHVybiB7IFt0aGlzLmdldEtleSgpXTogdXJsVmFsdWUgfTtcbiAgfVxuICB1cGRhdGVGcm9tVXJsKHZhbHVlcykge1xuICAgIGxldCB1cmxWYWx1ZSA9IHZhbHVlc1t0aGlzLmdldEtleSgpXTtcbiAgICBpZiAodXJsVmFsdWUgIT0gbnVsbCkge1xuICAgICAgaWYgKHRoaXMuX3NjZW5lT2JqZWN0LnN0YXRlLmluY2x1ZGVBbGwpIHtcbiAgICAgICAgdXJsVmFsdWUgPSBoYW5kbGVMZWdhY3lVcmxBbGxWYWx1ZSh1cmxWYWx1ZSk7XG4gICAgICB9XG4gICAgICBpZiAodGhpcy5fc2NlbmVPYmplY3Quc3RhdGUuYWxsVmFsdWUgJiYgdGhpcy5fc2NlbmVPYmplY3Quc3RhdGUuYWxsVmFsdWUgPT09IHVybFZhbHVlKSB7XG4gICAgICAgIHVybFZhbHVlID0gQUxMX1ZBUklBQkxFX1ZBTFVFO1xuICAgICAgfVxuICAgICAgaWYgKCF0aGlzLl9zY2VuZU9iamVjdC5pc0FjdGl2ZSkge1xuICAgICAgICB0aGlzLl9zY2VuZU9iamVjdC5za2lwTmV4dFZhbGlkYXRpb24gPSB0cnVlO1xuICAgICAgfVxuICAgICAgdGhpcy5fc2NlbmVPYmplY3QuY2hhbmdlVmFsdWVUbyh1cmxWYWx1ZSk7XG4gICAgfVxuICB9XG59XG5mdW5jdGlvbiBoYW5kbGVMZWdhY3lVcmxBbGxWYWx1ZSh2YWx1ZSkge1xuICBpZiAoaXNBcnJheSh2YWx1ZSkgJiYgdmFsdWVbMF0gPT09IEFMTF9WQVJJQUJMRV9URVhUKSB7XG4gICAgcmV0dXJuIFtBTExfVkFSSUFCTEVfVkFMVUVdO1xuICB9IGVsc2UgaWYgKHZhbHVlID09PSBBTExfVkFSSUFCTEVfVEVYVCkge1xuICAgIHJldHVybiBBTExfVkFSSUFCTEVfVkFMVUU7XG4gIH1cbiAgcmV0dXJuIHZhbHVlO1xufVxuY2xhc3MgQ3VzdG9tQWxsVmFsdWUge1xuICBjb25zdHJ1Y3RvcihfdmFsdWUsIF92YXJpYWJsZSkge1xuICAgIHRoaXMuX3ZhbHVlID0gX3ZhbHVlO1xuICAgIHRoaXMuX3ZhcmlhYmxlID0gX3ZhcmlhYmxlO1xuICB9XG4gIGZvcm1hdHRlcihmb3JtYXROYW1lT3JGbikge1xuICAgIGlmIChmb3JtYXROYW1lT3JGbiA9PT0gVmFyaWFibGVGb3JtYXRJRC5UZXh0KSB7XG4gICAgICByZXR1cm4gQUxMX1ZBUklBQkxFX1RFWFQ7XG4gICAgfVxuICAgIGlmIChmb3JtYXROYW1lT3JGbiA9PT0gVmFyaWFibGVGb3JtYXRJRC5QZXJjZW50RW5jb2RlKSB7XG4gICAgICByZXR1cm4gZm9ybWF0UmVnaXN0cnkuZ2V0KFZhcmlhYmxlRm9ybWF0SUQuUGVyY2VudEVuY29kZSkuZm9ybWF0dGVyKHRoaXMuX3ZhbHVlLCBbXSwgdGhpcy5fdmFyaWFibGUpO1xuICAgIH1cbiAgICBpZiAoZm9ybWF0TmFtZU9yRm4gPT09IFZhcmlhYmxlRm9ybWF0SUQuUXVlcnlQYXJhbSkge1xuICAgICAgcmV0dXJuIGZvcm1hdFJlZ2lzdHJ5LmdldChWYXJpYWJsZUZvcm1hdElELlF1ZXJ5UGFyYW0pLmZvcm1hdHRlcihBTExfVkFSSUFCTEVfVEVYVCwgW10sIHRoaXMuX3ZhcmlhYmxlKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuX3ZhbHVlO1xuICB9XG59XG5cbmV4cG9ydCB7IEN1c3RvbUFsbFZhbHVlLCBNdWx0aVZhbHVlVXJsU3luY0hhbmRsZXIsIE11bHRpVmFsdWVWYXJpYWJsZSB9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2NoYXJzZXQ9dXRmLTg7YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0ptYVd4bElqb2lUWFZzZEdsV1lXeDFaVlpoY21saFlteGxMbXB6SWl3aWMyOTFjbU5sY3lJNld5SXVMaTh1TGk4dUxpOHVMaTl6Y21NdmRtRnlhV0ZpYkdWekwzWmhjbWxoYm5SekwwMTFiSFJwVm1Gc2RXVldZWEpwWVdKc1pTNTBjeUpkTENKemIzVnlZMlZ6UTI5dWRHVnVkQ0k2V3lKcGJYQnZjblFnZXlCcGMwRnljbUY1TENCcGMwVnhkV0ZzSUgwZ1puSnZiU0FuYkc5a1lYTm9KenRjYm1sdGNHOXlkQ0I3SUcxaGNDd2dUMkp6WlhKMllXSnNaU0I5SUdaeWIyMGdKM0o0YW5Nbk8xeHVYRzVwYlhCdmNuUWdleUJCVEV4ZlZrRlNTVUZDVEVWZlZFVllWQ3dnUVV4TVgxWkJVa2xCUWt4RlgxWkJURlZGSUgwZ1puSnZiU0FuTGk0dlkyOXVjM1JoYm5Sekp6dGNibHh1YVcxd2IzSjBJSHNnVTJObGJtVlBZbXBsWTNSQ1lYTmxJSDBnWm5KdmJTQW5MaTR2TGk0dlkyOXlaUzlUWTJWdVpVOWlhbVZqZEVKaGMyVW5PMXh1YVcxd2IzSjBJSHNnVTJObGJtVlBZbXBsWTNSVmNteFRlVzVqU0dGdVpHeGxjaXdnVTJObGJtVlBZbXBsWTNSVmNteFdZV3gxWlhNZ2ZTQm1jbTl0SUNjdUxpOHVMaTlqYjNKbEwzUjVjR1Z6Snp0Y2JtbHRjRzl5ZENCN1hHNGdJRk5qWlc1bFZtRnlhV0ZpYkdVc1hHNGdJRk5qWlc1bFZtRnlhV0ZpYkdWV1lXeDFaVU5vWVc1blpXUkZkbVZ1ZEN4Y2JpQWdVMk5sYm1WV1lYSnBZV0pzWlZOMFlYUmxMRnh1SUNCV1lXeHBaR0YwWlVGdVpGVndaR0YwWlZKbGMzVnNkQ3hjYmlBZ1ZtRnlhV0ZpYkdWV1lXeDFaU3hjYmlBZ1ZtRnlhV0ZpYkdWV1lXeDFaVTl3ZEdsdmJpeGNiaUFnVm1GeWFXRmliR1ZXWVd4MVpWTnBibWRzWlN4Y2JpQWdRM1Z6ZEc5dFZtRnlhV0ZpYkdWV1lXeDFaU3hjYmlBZ1ZtRnlhV0ZpYkdWRGRYTjBiMjFHYjNKdFlYUjBaWEpHYml4Y2JuMGdabkp2YlNBbkxpNHZkSGx3WlhNbk8xeHVhVzF3YjNKMElIc2dabTl5YldGMFVtVm5hWE4wY25rZ2ZTQm1jbTl0SUNjdUxpOXBiblJsY25CdmJHRjBhVzl1TDJadmNtMWhkRkpsWjJsemRISjVKenRjYm1sdGNHOXlkQ0I3SUZaaGNtbGhZbXhsUm05eWJXRjBTVVFnZlNCbWNtOXRJQ2RBWjNKaFptRnVZUzl6WTJobGJXRW5PMXh1YVcxd2IzSjBJSHNnVTJObGJtVldZWEpwWVdKc1pWTmxkQ0I5SUdaeWIyMGdKeTR1TDNObGRITXZVMk5sYm1WV1lYSnBZV0pzWlZObGRDYzdYRzVwYlhCdmNuUWdleUJ6WlhSQ1lYTmxRMnhoYzNOVGRHRjBaU0I5SUdaeWIyMGdKeTR1THk0dUwzVjBhV3h6TDNWMGFXeHpKenRjYmx4dVpYaHdiM0owSUdsdWRHVnlabUZqWlNCTmRXeDBhVlpoYkhWbFZtRnlhV0ZpYkdWVGRHRjBaU0JsZUhSbGJtUnpJRk5qWlc1bFZtRnlhV0ZpYkdWVGRHRjBaU0I3WEc0Z0lIWmhiSFZsT2lCV1lYSnBZV0pzWlZaaGJIVmxPeUF2THlCdmJHUWdZM1Z5Y21WdWRDNTBaWGgwWEc0Z0lIUmxlSFE2SUZaaGNtbGhZbXhsVm1Gc2RXVTdJQzh2SUc5c1pDQmpkWEp5Wlc1MExuWmhiSFZsWEc0Z0lHOXdkR2x2Ym5NNklGWmhjbWxoWW14bFZtRnNkV1ZQY0hScGIyNWJYVHRjYmlBZ1lXeHNiM2REZFhOMGIyMVdZV3gxWlQ4NklHSnZiMnhsWVc0N1hHNGdJR2x6VFhWc2RHay9PaUJpYjI5c1pXRnVPMXh1SUNCcGJtTnNkV1JsUVd4c1B6b2dZbTl2YkdWaGJqdGNiaUFnWkdWbVlYVnNkRlJ2UVd4c1B6b2dZbTl2YkdWaGJqdGNiaUFnWVd4c1ZtRnNkV1UvT2lCemRISnBibWM3WEc0Z0lIQnNZV05sYUc5c1pHVnlQem9nYzNSeWFXNW5PMXh1SUNBdktpcGNiaUFnSUNvZ1JtOXlJRzExYkhScElIWmhiSFZsSUhaaGNtbGhZbXhsY3l3Z2RHaHBjeUJ2Y0hScGIyNGdZMjl1ZEhKdmJITWdhRzkzSUcxaGJua2dkbUZzZFdWeklIUnZJSE5vYjNjZ1ltVm1iM0psSUhSb1pYa2dZWEpsSUdOdmJHeGhjSE5sWkNCcGJuUnZJQ3RPTGx4dUlDQWdLaUJFWldaaGRXeDBjeUIwYnlBMVhHNGdJQ0FxTDF4dUlDQnRZWGhXYVhOcFlteGxWbUZzZFdWelB6b2diblZ0WW1WeU8xeHVJQ0J1YjFaaGJIVmxUMjVEYkdWaGNqODZJR0p2YjJ4bFlXNDdYRzRnSUdselVtVmhaRTl1YkhrL09pQmliMjlzWldGdU8xeHVmVnh1WEc1bGVIQnZjblFnYVc1MFpYSm1ZV05sSUZaaGNtbGhZbXhsUjJWMFQzQjBhVzl1YzBGeVozTWdlMXh1SUNCelpXRnlZMmhHYVd4MFpYSS9PaUJ6ZEhKcGJtYzdYRzU5WEc1Y2JtVjRjRzl5ZENCaFluTjBjbUZqZENCamJHRnpjeUJOZFd4MGFWWmhiSFZsVm1GeWFXRmliR1U4VkZOMFlYUmxJR1Y0ZEdWdVpITWdUWFZzZEdsV1lXeDFaVlpoY21saFlteGxVM1JoZEdVZ1BTQk5kV3gwYVZaaGJIVmxWbUZ5YVdGaWJHVlRkR0YwWlQ1Y2JpQWdaWGgwWlc1a2N5QlRZMlZ1WlU5aWFtVmpkRUpoYzJVOFZGTjBZWFJsUGx4dUlDQnBiWEJzWlcxbGJuUnpJRk5qWlc1bFZtRnlhV0ZpYkdVOFZGTjBZWFJsUGx4dWUxeHVJQ0J3Y205MFpXTjBaV1FnWDNWeWJGTjVibU02SUZOalpXNWxUMkpxWldOMFZYSnNVM2x1WTBoaGJtUnNaWElnUFNCdVpYY2dUWFZzZEdsV1lXeDFaVlZ5YkZONWJtTklZVzVrYkdWeUtIUm9hWE1wTzF4dVhHNGdJQzhxS2x4dUlDQWdLaUJUWlhRZ2RHOGdkSEoxWlNCMGJ5QnphMmx3SUc1bGVIUWdkbUZzZFdVZ2RtRnNhV1JoZEdsdmJpQjBieUJ0WVdsdWRHRnBiaUIwYUdVZ1kzVnljbVZ1ZENCMllXeDFaU0JsZG1WdUlHbDBJR2wwSjNNZ2JtOTBJR0Z0YjI1bklIUm9aU0J2Y0hScGIyNXpJQ2hwWlNCMllXeHBaQ0IyWVd4MVpYTXBYRzRnSUNBcUwxeHVJQ0J3ZFdKc2FXTWdjMnRwY0U1bGVIUldZV3hwWkdGMGFXOXVQem9nWW05dmJHVmhianRjYmx4dUlDQXZLaXBjYmlBZ0lDb2dWR2hsSUhOdmRYSmpaU0J2WmlCMllXeDFaU0J2Y0hScGIyNXpMbHh1SUNBZ0tpOWNiaUFnY0hWaWJHbGpJR0ZpYzNSeVlXTjBJR2RsZEZaaGJIVmxUM0IwYVc5dWN5aGhjbWR6T2lCV1lYSnBZV0pzWlVkbGRFOXdkR2x2Ym5OQmNtZHpLVG9nVDJKelpYSjJZV0pzWlR4V1lYSnBZV0pzWlZaaGJIVmxUM0IwYVc5dVcxMCtPMXh1WEc0Z0lDOHFLbHh1SUNBZ0tpQlVhR2x6SUdaMWJtTjBhVzl1SUdseklHTmhiR3hsWkNCdmJpQjNhR1Z1SUZOalpXNWxWbUZ5YVdGaWJHVlRaWFFnYVhNZ1lXTjBhWFpoZEdWa0lHOXlJSGRvWlc0Z1lTQmtaWEJsYm1SbGJtTjVJR05vWVc1blpYTXVYRzRnSUNBcUwxeHVJQ0J3ZFdKc2FXTWdkbUZzYVdSaGRHVkJibVJWY0dSaGRHVW9LVG9nVDJKelpYSjJZV0pzWlR4V1lXeHBaR0YwWlVGdVpGVndaR0YwWlZKbGMzVnNkRDRnZTF4dUlDQWdJSEpsZEhWeWJpQjBhR2x6TG1kbGRGWmhiSFZsVDNCMGFXOXVjeWg3ZlNrdWNHbHdaU2hjYmlBZ0lDQWdJRzFoY0Nnb2IzQjBhVzl1Y3lrZ1BUNGdlMXh1SUNBZ0lDQWdJQ0IwYUdsekxuVndaR0YwWlZaaGJIVmxSMmwyWlc1T1pYZFBjSFJwYjI1ektHOXdkR2x2Ym5NcE8xeHVJQ0FnSUNBZ0lDQnlaWFIxY200Z2UzMDdYRzRnSUNBZ0lDQjlLVnh1SUNBZ0lDazdYRzRnSUgxY2JseHVJQ0J3ZFdKc2FXTWdiMjVEWVc1alpXd29LVG9nZG05cFpDQjdYRzRnSUNBZ2RHaHBjeTV6WlhSVGRHRjBaVWhsYkhCbGNpaDdJR3h2WVdScGJtYzZJR1poYkhObElIMHBPMXh1SUNBZ0lHTnZibk4wSUhOalpXNWxWbUZ5VTJWMElEMGdkR2hwY3k1d1lYSmxiblFnWVhNZ1UyTmxibVZXWVhKcFlXSnNaVk5sZER0Y2JpQWdJQ0J6WTJWdVpWWmhjbE5sZEQ4dVkyRnVZMlZzS0hSb2FYTXBPMXh1SUNCOVhHNWNiaUFnTHlvcVhHNGdJQ0FxSUVOb1pXTnJJR2xtSUdOMWNuSmxiblFnZG1Gc2RXVWdhWE1nZG1Gc2FXUWdaMmwyWlc0Z2JtVjNJRzl3ZEdsdmJuTXVJRWxtSUc1dmRDQjFjR1JoZEdVZ2RHaGxJSFpoYkhWbExseHVJQ0FnS2k5Y2JpQWdjSEpwZG1GMFpTQjFjR1JoZEdWV1lXeDFaVWRwZG1WdVRtVjNUM0IwYVc5dWN5aHZjSFJwYjI1ek9pQldZWEpwWVdKc1pWWmhiSFZsVDNCMGFXOXVXMTBwSUh0Y2JpQWdJQ0F2THlCU1pXMWxiV0psY2lCamRYSnlaVzUwSUhaaGJIVmxJR0Z1WkNCMFpYaDBYRzRnSUNBZ1kyOXVjM1FnZXlCMllXeDFaVG9nWTNWeWNtVnVkRlpoYkhWbExDQjBaWGgwT2lCamRYSnlaVzUwVkdWNGRDd2diM0IwYVc5dWN6b2diMnhrVDNCMGFXOXVjeUI5SUQwZ2RHaHBjeTV6ZEdGMFpUdGNibHh1SUNBZ0lHTnZibk4wSUhOMFlYUmxWWEJrWVhSbElEMGdkR2hwY3k1blpYUlRkR0YwWlZWd1pHRjBaVWRwZG1WdVRtVjNUM0IwYVc5dWN5aHZjSFJwYjI1ekxDQmpkWEp5Wlc1MFZtRnNkV1VzSUdOMWNuSmxiblJVWlhoMEtUdGNibHh1SUNBZ0lIUm9hWE11YVc1MFpYSmpaWEIwVTNSaGRHVlZjR1JoZEdWQlpuUmxjbFpoYkdsa1lYUnBiMjRvYzNSaGRHVlZjR1JoZEdVcE8xeHVYRzRnSUNBZ0x5OGdVR1Z5Wm05eWJTQnpkR0YwWlNCamFHRnVaMlZjYmlBZ0lDQjBhR2x6TG5ObGRGTjBZWFJsU0dWc2NHVnlLSE4wWVhSbFZYQmtZWFJsS1R0Y2JseHVJQ0FnSUM4dklGQjFZbXhwYzJnZ2RtRnNkV1VnWTJoaGJtZGxaQ0JsZG1WdWRDQnZibXg1SUdsbUlIWmhiSFZsSUdOb1lXNW5aV1JjYmlBZ0lDQnBaaUFvWEc0Z0lDQWdJQ0J6ZEdGMFpWVndaR0YwWlM1MllXeDFaU0FoUFQwZ1kzVnljbVZ1ZEZaaGJIVmxJSHg4WEc0Z0lDQWdJQ0J6ZEdGMFpWVndaR0YwWlM1MFpYaDBJQ0U5UFNCamRYSnlaVzUwVkdWNGRDQjhmRnh1SUNBZ0lDQWdLSFJvYVhNdWFHRnpRV3hzVm1Gc2RXVW9LU0FtSmlBaGFYTkZjWFZoYkNodmNIUnBiMjV6TENCdmJHUlBjSFJwYjI1ektTbGNiaUFnSUNBcElIdGNiaUFnSUNBZ0lIUm9hWE11Y0hWaWJHbHphRVYyWlc1MEtHNWxkeUJUWTJWdVpWWmhjbWxoWW14bFZtRnNkV1ZEYUdGdVoyVmtSWFpsYm5Rb2RHaHBjeWtzSUhSeWRXVXBPMXh1SUNBZ0lIMWNiaUFnZlZ4dVhHNGdJSEJ5YVhaaGRHVWdaMlYwVTNSaGRHVlZjR1JoZEdWSGFYWmxiazVsZDA5d2RHbHZibk1vWEc0Z0lDQWdiM0IwYVc5dWN6b2dWbUZ5YVdGaWJHVldZV3gxWlU5d2RHbHZibHRkTEZ4dUlDQWdJR04xY25KbGJuUldZV3gxWlRvZ1ZtRnlhV0ZpYkdWV1lXeDFaU3hjYmlBZ0lDQmpkWEp5Wlc1MFZHVjRkRG9nVm1GeWFXRmliR1ZXWVd4MVpWeHVJQ0FwT2lCUVlYSjBhV0ZzUEUxMWJIUnBWbUZzZFdWV1lYSnBZV0pzWlZOMFlYUmxQaUI3WEc0Z0lDQWdZMjl1YzNRZ2MzUmhkR1ZWY0dSaGRHVTZJRkJoY25ScFlXdzhUWFZzZEdsV1lXeDFaVlpoY21saFlteGxVM1JoZEdVK0lEMGdlMXh1SUNBZ0lDQWdiM0IwYVc5dWN5eGNiaUFnSUNBZ0lHeHZZV1JwYm1jNklHWmhiSE5sTEZ4dUlDQWdJQ0FnZG1Gc2RXVTZJR04xY25KbGJuUldZV3gxWlN4Y2JpQWdJQ0FnSUhSbGVIUTZJR04xY25KbGJuUlVaWGgwTEZ4dUlDQWdJSDA3WEc1Y2JpQWdJQ0JwWmlBb2IzQjBhVzl1Y3k1c1pXNW5kR2dnUFQwOUlEQXBJSHRjYmlBZ0lDQWdJR2xtSUNoMGFHbHpMbk4wWVhSbExtUmxabUYxYkhSVWIwRnNiQ0I4ZkNCMGFHbHpMbk4wWVhSbExtbHVZMngxWkdWQmJHd3BJSHRjYmlBZ0lDQWdJQ0FnYzNSaGRHVlZjR1JoZEdVdWRtRnNkV1VnUFNCQlRFeGZWa0ZTU1VGQ1RFVmZWa0ZNVlVVN1hHNGdJQ0FnSUNBZ0lITjBZWFJsVlhCa1lYUmxMblJsZUhRZ1BTQkJURXhmVmtGU1NVRkNURVZmVkVWWVZEdGNiaUFnSUNBZ0lIMGdaV3h6WlNCcFppQW9kR2hwY3k1emRHRjBaUzVwYzAxMWJIUnBLU0I3WEc0Z0lDQWdJQ0FnSUhOMFlYUmxWWEJrWVhSbExuWmhiSFZsSUQwZ1cxMDdYRzRnSUNBZ0lDQWdJSE4wWVhSbFZYQmtZWFJsTG5SbGVIUWdQU0JiWFR0Y2JpQWdJQ0FnSUgwZ1pXeHpaU0I3WEc0Z0lDQWdJQ0FnSUhOMFlYUmxWWEJrWVhSbExuWmhiSFZsSUQwZ0p5YzdYRzRnSUNBZ0lDQWdJSE4wWVhSbFZYQmtZWFJsTG5SbGVIUWdQU0FuSnp0Y2JpQWdJQ0FnSUgxY2JseHVJQ0FnSUNBZ2NtVjBkWEp1SUhOMFlYUmxWWEJrWVhSbE8xeHVJQ0FnSUgxY2JseHVJQ0FnSUdsbUlDaDBhR2x6TG1oaGMwRnNiRlpoYkhWbEtDa3BJSHRjYmlBZ0lDQWdJR2xtSUNoMGFHbHpMbk4wWVhSbExtbHVZMngxWkdWQmJHd3BJSHRjYmlBZ0lDQWdJQ0FnTHk4Z1UyOXRaWFJwYldWeklIUm9aU0IwWlhoMElISmxjSEpsYzJWdWRHRjBhVzl1SUdseklHRnNjMjhnYzJWMElIUm9aU0JCVEV4ZlZrRlNTVUZDVEVWZlZrRk1WVVVzSUhSb2FYTWdabWw0WlhNZ2RHaGhkRnh1SUNBZ0lDQWdJQ0J6ZEdGMFpWVndaR0YwWlM1MFpYaDBJRDBnUVV4TVgxWkJVa2xCUWt4RlgxUkZXRlE3WEc0Z0lDQWdJQ0I5SUdWc2MyVWdlMXh1SUNBZ0lDQWdJQ0J6ZEdGMFpWVndaR0YwWlM1MllXeDFaU0E5SUc5d2RHbHZibk5iTUYwdWRtRnNkV1U3WEc0Z0lDQWdJQ0FnSUhOMFlYUmxWWEJrWVhSbExuUmxlSFFnUFNCdmNIUnBiMjV6V3pCZExteGhZbVZzTzF4dUlDQWdJQ0FnSUNBdkx5QkpaaUJ0ZFd4MGFTQnpkMmwwWTJnZ2RHOGdZWEp5WVhselhHNGdJQ0FnSUNBZ0lHbG1JQ2gwYUdsekxuTjBZWFJsTG1selRYVnNkR2twSUh0Y2JpQWdJQ0FnSUNBZ0lDQnpkR0YwWlZWd1pHRjBaUzUyWVd4MVpTQTlJRnR6ZEdGMFpWVndaR0YwWlM1MllXeDFaVjA3WEc0Z0lDQWdJQ0FnSUNBZ2MzUmhkR1ZWY0dSaGRHVXVkR1Y0ZENBOUlGdHpkR0YwWlZWd1pHRjBaUzUwWlhoMFhUdGNiaUFnSUNBZ0lDQWdmVnh1SUNBZ0lDQWdmVnh1SUNBZ0lDQWdjbVYwZFhKdUlITjBZWFJsVlhCa1lYUmxPMXh1SUNBZ0lIMWNibHh1SUNBZ0lHbG1JQ2gwYUdsekxuTjBZWFJsTG1selRYVnNkR2twSUh0Y2JpQWdJQ0FnSUM4dklFbG1JSGRsSUdGeVpTQmhJRzExYkhScElIWmhiSFZsWkNCMllYSnBZV0pzWlNCMllXeHBaR0YwWlNCMGFHVWdZM1Z5Y21WdWRDQjJZV3gxWlhNZ1lYSmxJR0Z0YjI1bklIUm9aU0J2Y0hScGIyNXpYRzRnSUNBZ0lDQmpiMjV6ZENCamRYSnlaVzUwVm1Gc2RXVnpJRDBnUVhKeVlYa3VhWE5CY25KaGVTaGpkWEp5Wlc1MFZtRnNkV1VwSUQ4Z1kzVnljbVZ1ZEZaaGJIVmxJRG9nVzJOMWNuSmxiblJXWVd4MVpWMDdYRzRnSUNBZ0lDQmpiMjV6ZENCMllXeHBaRlpoYkhWbGN5QTlJR04xY25KbGJuUldZV3gxWlhNdVptbHNkR1Z5S0NoMktTQTlQaUJ2Y0hScGIyNXpMbVpwYm1Rb0tHOHBJRDArSUc4dWRtRnNkV1VnUFQwOUlIWXBLVHRjYmlBZ0lDQWdJR052Ym5OMElIWmhiR2xrVkdWNGRITWdQU0IyWVd4cFpGWmhiSFZsY3k1dFlYQW9LSFlwSUQwK0lHOXdkR2x2Ym5NdVptbHVaQ2dvYnlrZ1BUNGdieTUyWVd4MVpTQTlQVDBnZGlraExteGhZbVZzS1R0Y2JseHVJQ0FnSUNBZ0x5OGdTV1lnYm04Z2RtRnNhV1FnZG1Gc2RXVnpJSEJwWTJzZ2RHaGxJR1pwY25OMElHOXdkR2x2Ymx4dUlDQWdJQ0FnYVdZZ0tIWmhiR2xrVm1Gc2RXVnpMbXhsYm1kMGFDQTlQVDBnTUNrZ2UxeHVJQ0FnSUNBZ0lDQmpiMjV6ZENCa1pXWmhkV3gwVTNSaGRHVWdQU0IwYUdsekxtZGxkRVJsWm1GMWJIUk5kV3gwYVZOMFlYUmxLRzl3ZEdsdmJuTXBPMXh1SUNBZ0lDQWdJQ0J6ZEdGMFpWVndaR0YwWlM1MllXeDFaU0E5SUdSbFptRjFiSFJUZEdGMFpTNTJZV3gxWlR0Y2JpQWdJQ0FnSUNBZ2MzUmhkR1ZWY0dSaGRHVXVkR1Y0ZENBOUlHUmxabUYxYkhSVGRHRjBaUzUwWlhoME8xeHVJQ0FnSUNBZ2ZTQmxiSE5sSUh0Y2JpQWdJQ0FnSUNBZ0x5OGdWMlVnYUdGMlpTQjJZV3hwWkNCMllXeDFaWE1zSUdsbUlHbDBKM01nWkdsbVptVnlaVzUwSUdaeWIyMGdZM1Z5Y21WdWRDQjJZV3hwWkNCMllXeDFaWE1nZFhCa1lYUmxJR04xY25KbGJuUWdkbUZzZFdWelhHNGdJQ0FnSUNBZ0lHbG1JQ2doYVhORmNYVmhiQ2gyWVd4cFpGWmhiSFZsY3l3Z1kzVnljbVZ1ZEZaaGJIVmxLU2tnZTF4dUlDQWdJQ0FnSUNBZ0lITjBZWFJsVlhCa1lYUmxMblpoYkhWbElEMGdkbUZzYVdSV1lXeDFaWE03WEc0Z0lDQWdJQ0FnSUgxY2JpQWdJQ0FnSUNBZ2FXWWdLQ0ZwYzBWeGRXRnNLSFpoYkdsa1ZHVjRkSE1zSUdOMWNuSmxiblJVWlhoMEtTa2dlMXh1SUNBZ0lDQWdJQ0FnSUhOMFlYUmxWWEJrWVhSbExuUmxlSFFnUFNCMllXeHBaRlJsZUhSek8xeHVJQ0FnSUNBZ0lDQjlYRzRnSUNBZ0lDQjlYRzRnSUNBZ0lDQnlaWFIxY200Z2MzUmhkR1ZWY0dSaGRHVTdYRzRnSUNBZ2ZWeHVYRzRnSUNBZ0x5OGdVMmx1WjJ4bElIWmhiSFZsSUhaaGNtbGhZbXhsSUhaaGJHbGtZWFJwYjI1Y2JseHVJQ0FnSUM4dklGUnllU0JtYVc1a0lHSjVJSFpoYkhWbElIUm9aVzRnZEdWNGRGeHVJQ0FnSUd4bGRDQnRZWFJqYUdsdVowOXdkR2x2YmlBOUlHWnBibVJQY0hScGIyNU5ZWFJqYUdsdVowTjFjbkpsYm5Rb1kzVnljbVZ1ZEZaaGJIVmxMQ0JqZFhKeVpXNTBWR1Y0ZEN3Z2IzQjBhVzl1Y3lrN1hHNGdJQ0FnYVdZZ0tHMWhkR05vYVc1blQzQjBhVzl1S1NCN1hHNGdJQ0FnSUNBdkx5QlhhR1Z1SUhWd1pHRjBhVzVuSUhSb1pTQnBibWwwYVdGc0lITjBZWFJsSUdaeWIyMGdWVkpNSUhSb1pTQjBaWGgwSUhCeWIzQmxjblI1SUdseklITmxkQ0IwYUdVZ2MyRnRaU0JoY3lCMllXeDFaVnh1SUNBZ0lDQWdMeThnU0dWeVpTQjNaU0JqWVc0Z1kyOXljbVZqZENCMGFHVWdkR1Y0ZENCMllXeDFaU0J6ZEdGMFpWeHVJQ0FnSUNBZ2MzUmhkR1ZWY0dSaGRHVXVkR1Y0ZENBOUlHMWhkR05vYVc1blQzQjBhVzl1TG14aFltVnNPMXh1SUNBZ0lDQWdjM1JoZEdWVmNHUmhkR1V1ZG1Gc2RXVWdQU0J0WVhSamFHbHVaMDl3ZEdsdmJpNTJZV3gxWlR0Y2JpQWdJQ0I5SUdWc2MyVWdlMXh1SUNBZ0lDQWdMeThnUTNWeWNtVnVkQ0IyWVd4MVpTQnBjeUJtYjNWdVpDQnBiaUJ2Y0hScGIyNXpYRzRnSUNBZ0lDQnBaaUFvZEdocGN5NXpkR0YwWlM1a1pXWmhkV3gwVkc5QmJHd3BJSHRjYmlBZ0lDQWdJQ0FnYzNSaGRHVlZjR1JoZEdVdWRtRnNkV1VnUFNCQlRFeGZWa0ZTU1VGQ1RFVmZWa0ZNVlVVN1hHNGdJQ0FnSUNBZ0lITjBZWFJsVlhCa1lYUmxMblJsZUhRZ1BTQkJURXhmVmtGU1NVRkNURVZmVkVWWVZEdGNiaUFnSUNBZ0lIMGdaV3h6WlNCN1hHNGdJQ0FnSUNBZ0lDOHZJRU4xY25KbGJuUWdkbUZzZFdVZ2FYTWdibTkwSUhaaGJHbGtMaUJUWlhRZ2RHOGdabWx5YzNRZ2IyWWdkR2hsSUdGMllXbHNZV0pzWlNCdmNIUnBiMjV6WEc0Z0lDQWdJQ0FnSUhOMFlYUmxWWEJrWVhSbExuWmhiSFZsSUQwZ2IzQjBhVzl1YzFzd1hTNTJZV3gxWlR0Y2JpQWdJQ0FnSUNBZ2MzUmhkR1ZWY0dSaGRHVXVkR1Y0ZENBOUlHOXdkR2x2Ym5OYk1GMHViR0ZpWld3N1hHNGdJQ0FnSUNCOVhHNGdJQ0FnZlZ4dVhHNGdJQ0FnY21WMGRYSnVJSE4wWVhSbFZYQmtZWFJsTzF4dUlDQjlYRzVjYmlBZ0x5b3FYRzRnSUNBcUlGWmhiSFZsY3lCelpYUWdZbmtnYVc1cGRHbGhiQ0JWVWt3Z2MzbHVZeUJ1WldWa2N5QjBieUJ6ZFhKMmFYWmxJSFJvWlNCdVpYaDBJSFpoYkdsa1lYUnBiMjRnWVc1a0lIVndaR0YwWlM1Y2JpQWdJQ29nVkdocGN5Qm1kVzVqZEdsdmJpQmpZVzRnYVc1MFpYSmpaWEIwSUdGdVpDQnRZV3RsSUhOMWNtVWdkR2h2YzJVZ2RtRnNkV1Z6SUdGeVpTQndjbVZ6WlhKMlpXUXVYRzRnSUNBcUwxeHVJQ0J3Y205MFpXTjBaV1FnYVc1MFpYSmpaWEIwVTNSaGRHVlZjR1JoZEdWQlpuUmxjbFpoYkdsa1lYUnBiMjRvYzNSaGRHVlZjR1JoZEdVNklGQmhjblJwWVd3OFRYVnNkR2xXWVd4MVpWWmhjbWxoWW14bFUzUmhkR1UrS1RvZ2RtOXBaQ0I3WEc0Z0lDQWdMeThnU1dZZ2RHaGxJSFpoYkdsa1lYUnBiMjRnZDJGdWRITWdkRzhnWm1sNElIUm9aU0JoYkd3Z2RtRnNkV1VnS0VGc2JDQTlQVDRnSkY5ZllXeHNLU0IwYUdWdUlIZGxJSE5vYjNWc1pDQnNaWFFnZEdoaGRDQndZWE56WEc0Z0lDQWdZMjl1YzNRZ2FYTkJiR3hXWVd4MVpVWnBlQ0E5SUhOMFlYUmxWWEJrWVhSbExuWmhiSFZsSUQwOVBTQkJURXhmVmtGU1NVRkNURVZmVmtGTVZVVWdKaVlnZEdocGN5NXpkR0YwWlM1MFpYaDBJRDA5UFNCQlRFeGZWa0ZTU1VGQ1RFVmZWRVZZVkR0Y2JseHVJQ0FnSUdsbUlDaGNiaUFnSUNBZ0lIUm9hWE11YzJ0cGNFNWxlSFJXWVd4cFpHRjBhVzl1SUNZbVhHNGdJQ0FnSUNCemRHRjBaVlZ3WkdGMFpTNTJZV3gxWlNBaFBUMGdkR2hwY3k1emRHRjBaUzUyWVd4MVpTQW1KbHh1SUNBZ0lDQWdjM1JoZEdWVmNHUmhkR1V1ZEdWNGRDQWhQVDBnZEdocGN5NXpkR0YwWlM1MFpYaDBJQ1ltWEc0Z0lDQWdJQ0FoYVhOQmJHeFdZV3gxWlVacGVGeHVJQ0FnSUNrZ2UxeHVJQ0FnSUNBZ2MzUmhkR1ZWY0dSaGRHVXVkbUZzZFdVZ1BTQjBhR2x6TG5OMFlYUmxMblpoYkhWbE8xeHVJQ0FnSUNBZ2MzUmhkR1ZWY0dSaGRHVXVkR1Y0ZENBOUlIUm9hWE11YzNSaGRHVXVkR1Y0ZER0Y2JpQWdJQ0I5WEc1Y2JpQWdJQ0IwYUdsekxuTnJhWEJPWlhoMFZtRnNhV1JoZEdsdmJpQTlJR1poYkhObE8xeHVJQ0I5WEc1Y2JpQWdjSFZpYkdsaklHZGxkRlpoYkhWbEtDazZJRlpoY21saFlteGxWbUZzZFdVZ2UxeHVJQ0FnSUdsbUlDaDBhR2x6TG1oaGMwRnNiRlpoYkhWbEtDa3BJSHRjYmlBZ0lDQWdJR2xtSUNoMGFHbHpMbk4wWVhSbExtRnNiRlpoYkhWbEtTQjdYRzRnSUNBZ0lDQWdJSEpsZEhWeWJpQnVaWGNnUTNWemRHOXRRV3hzVm1Gc2RXVW9kR2hwY3k1emRHRjBaUzVoYkd4V1lXeDFaU3dnZEdocGN5azdYRzRnSUNBZ0lDQjlYRzVjYmlBZ0lDQWdJSEpsZEhWeWJpQjBhR2x6TG5OMFlYUmxMbTl3ZEdsdmJuTXViV0Z3S0NoNEtTQTlQaUI0TG5aaGJIVmxLVHRjYmlBZ0lDQjlYRzVjYmlBZ0lDQnlaWFIxY200Z2RHaHBjeTV6ZEdGMFpTNTJZV3gxWlR0Y2JpQWdmVnh1WEc0Z0lIQjFZbXhwWXlCblpYUldZV3gxWlZSbGVIUW9LVG9nYzNSeWFXNW5JSHRjYmlBZ0lDQnBaaUFvZEdocGN5NW9ZWE5CYkd4V1lXeDFaU2dwS1NCN1hHNGdJQ0FnSUNCeVpYUjFjbTRnUVV4TVgxWkJVa2xCUWt4RlgxUkZXRlE3WEc0Z0lDQWdmVnh1WEc0Z0lDQWdhV1lnS0VGeWNtRjVMbWx6UVhKeVlYa29kR2hwY3k1emRHRjBaUzUwWlhoMEtTa2dlMXh1SUNBZ0lDQWdjbVYwZFhKdUlIUm9hWE11YzNSaGRHVXVkR1Y0ZEM1cWIybHVLQ2NnS3lBbktUdGNiaUFnSUNCOVhHNWNiaUFnSUNCeVpYUjFjbTRnVTNSeWFXNW5LSFJvYVhNdWMzUmhkR1V1ZEdWNGRDazdYRzRnSUgxY2JseHVJQ0J3ZFdKc2FXTWdhR0Z6UVd4c1ZtRnNkV1VvS1NCN1hHNGdJQ0FnWTI5dWMzUWdkbUZzZFdVZ1BTQjBhR2x6TG5OMFlYUmxMblpoYkhWbE8xeHVJQ0FnSUhKbGRIVnliaUIyWVd4MVpTQTlQVDBnUVV4TVgxWkJVa2xCUWt4RlgxWkJURlZGSUh4OElDaEJjbkpoZVM1cGMwRnljbUY1S0haaGJIVmxLU0FtSmlCMllXeDFaVnN3WFNBOVBUMGdRVXhNWDFaQlVrbEJRa3hGWDFaQlRGVkZLVHRjYmlBZ2ZWeHVYRzRnSUhCMVlteHBZeUJuWlhSRVpXWmhkV3gwVFhWc2RHbFRkR0YwWlNodmNIUnBiMjV6T2lCV1lYSnBZV0pzWlZaaGJIVmxUM0IwYVc5dVcxMHBJSHRjYmlBZ0lDQnBaaUFvZEdocGN5NXpkR0YwWlM1a1pXWmhkV3gwVkc5QmJHd3BJSHRjYmlBZ0lDQWdJSEpsZEhWeWJpQjdJSFpoYkhWbE9pQmJRVXhNWDFaQlVrbEJRa3hGWDFaQlRGVkZYU3dnZEdWNGREb2dXMEZNVEY5V1FWSkpRVUpNUlY5VVJWaFVYU0I5TzF4dUlDQWdJSDBnWld4elpTQnBaaUFvYjNCMGFXOXVjeTVzWlc1bmRHZ2dQaUF3S1NCN1hHNGdJQ0FnSUNCeVpYUjFjbTRnZXlCMllXeDFaVG9nVzI5d2RHbHZibk5iTUYwdWRtRnNkV1ZkTENCMFpYaDBPaUJiYjNCMGFXOXVjMXN3WFM1c1lXSmxiRjBnZlR0Y2JpQWdJQ0I5SUdWc2MyVWdlMXh1SUNBZ0lDQWdjbVYwZFhKdUlIc2dkbUZzZFdVNklGdGRMQ0IwWlhoME9pQmJYU0I5TzF4dUlDQWdJSDFjYmlBZ2ZWeHVYRzRnSUM4cUtseHVJQ0FnS2lCRGFHRnVaMlVnZEdobElIWmhiSFZsSUdGdVpDQndkV0pzYVhOb0lGTmpaVzVsVm1GeWFXRmliR1ZXWVd4MVpVTm9ZVzVuWldSRmRtVnVkQ0JsZG1WdWRDNWNiaUFnSUNvdlhHNGdJSEIxWW14cFl5QmphR0Z1WjJWV1lXeDFaVlJ2S0haaGJIVmxPaUJXWVhKcFlXSnNaVlpoYkhWbExDQjBaWGgwUHpvZ1ZtRnlhV0ZpYkdWV1lXeDFaU2tnZTF4dUlDQWdJQzh2SUVsbmJtOXlaU0JwWmlCMGFHVnlaU0JwY3lCdWJ5QmphR0Z1WjJWY2JpQWdJQ0JwWmlBb2RtRnNkV1VnUFQwOUlIUm9hWE11YzNSaGRHVXVkbUZzZFdVZ0ppWWdkR1Y0ZENBOVBUMGdkR2hwY3k1emRHRjBaUzUwWlhoMEtTQjdYRzRnSUNBZ0lDQnlaWFIxY200N1hHNGdJQ0FnZlZ4dVhHNGdJQ0FnYVdZZ0tDRjBaWGgwS1NCN1hHNGdJQ0FnSUNCcFppQW9RWEp5WVhrdWFYTkJjbkpoZVNoMllXeDFaU2twSUh0Y2JpQWdJQ0FnSUNBZ2RHVjRkQ0E5SUhaaGJIVmxMbTFoY0Nnb2Rpa2dQVDRnZEdocGN5NW1hVzVrVEdGaVpXeFVaWGgwUm05eVZtRnNkV1VvZGlrcE8xeHVJQ0FnSUNBZ2ZTQmxiSE5sSUh0Y2JpQWdJQ0FnSUNBZ2RHVjRkQ0E5SUhSb2FYTXVabWx1WkV4aFltVnNWR1Y0ZEVadmNsWmhiSFZsS0haaGJIVmxLVHRjYmlBZ0lDQWdJSDFjYmlBZ0lDQjlYRzVjYmlBZ0lDQnBaaUFvUVhKeVlYa3VhWE5CY25KaGVTaDJZV3gxWlNrcElIdGNiaUFnSUNBZ0lDOHZJRWxtSUhkbElHRnlaU0JoSUcxMWJIUnBJSFpoYkhWbFpDQjJZWEpwWVdKc1pTQnBjeUJqYkdWaGNtVmtJQ2hsYlhCMGVTQmhjbkpoZVNrZ2QyVWdibVZsWkNCMGJ5QnpaWFFnZEdobElHUmxabUYxYkhRZ1pXMXdkSGtnYzNSaGRHVmNiaUFnSUNBZ0lHbG1JQ2gyWVd4MVpTNXNaVzVuZEdnZ1BUMDlJREFwSUh0Y2JpQWdJQ0FnSUNBZ1kyOXVjM1FnYzNSaGRHVWdQU0IwYUdsekxtZGxkRVJsWm1GMWJIUk5kV3gwYVZOMFlYUmxLSFJvYVhNdWMzUmhkR1V1YjNCMGFXOXVjeWs3WEc0Z0lDQWdJQ0FnSUhaaGJIVmxJRDBnYzNSaGRHVXVkbUZzZFdVN1hHNGdJQ0FnSUNBZ0lIUmxlSFFnUFNCemRHRjBaUzUwWlhoME8xeHVJQ0FnSUNBZ2ZWeHVYRzRnSUNBZ0lDQXZMeUJKWmlCc1lYTjBJSFpoYkhWbElHbHpJSFJvWlNCQmJHd2dkbUZzZFdVZ2RHaGxiaUJ5WlhCc1lXTmxJR0ZzYkNCM2FYUm9JR2wwWEc0Z0lDQWdJQ0JwWmlBb2RtRnNkV1ZiZG1Gc2RXVXViR1Z1WjNSb0lDMGdNVjBnUFQwOUlFRk1URjlXUVZKSlFVSk1SVjlXUVV4VlJTa2dlMXh1SUNBZ0lDQWdJQ0IyWVd4MVpTQTlJRnRCVEV4ZlZrRlNTVUZDVEVWZlZrRk1WVVZkTzF4dUlDQWdJQ0FnSUNCMFpYaDBJRDBnVzBGTVRGOVdRVkpKUVVKTVJWOVVSVmhVWFR0Y2JpQWdJQ0FnSUgxY2JpQWdJQ0FnSUM4dklFbG1JSFJvWlNCbWFYSnpkQ0IyWVd4MVpTQnBjeUIwYUdVZ1FVeE1JSFpoYkhWbElHRnVaQ0IzWlNCb1lYWmxJRzkwYUdWeUlIWmhiSFZsY3l3Z2RHaGxiaUJ5WlcxdmRtVWdkR2hsSUVGc2JDQjJZV3gxWlZ4dUlDQWdJQ0FnWld4elpTQnBaaUFvZG1Gc2RXVmJNRjBnUFQwOUlFRk1URjlXUVZKSlFVSk1SVjlXUVV4VlJTQW1KaUIyWVd4MVpTNXNaVzVuZEdnZ1BpQXhLU0I3WEc0Z0lDQWdJQ0FnSUhaaGJIVmxMbk5vYVdaMEtDazdYRzRnSUNBZ0lDQWdJR2xtSUNoQmNuSmhlUzVwYzBGeWNtRjVLSFJsZUhRcEtTQjdYRzRnSUNBZ0lDQWdJQ0FnZEdWNGRDNXphR2xtZENncE8xeHVJQ0FnSUNBZ0lDQjlYRzRnSUNBZ0lDQjlYRzRnSUNBZ2ZWeHVYRzRnSUNBZ0x5OGdSRzhnYm05MGFHbHVaeUJwWmlCMllXeDFaU0JoYm1RZ2RHVjRkQ0JoY21VZ2RHaGxJSE5oYldWY2JpQWdJQ0JwWmlBb2FYTkZjWFZoYkNoMllXeDFaU3dnZEdocGN5NXpkR0YwWlM1MllXeDFaU2tnSmlZZ2FYTkZjWFZoYkNoMFpYaDBMQ0IwYUdsekxuTjBZWFJsTG5SbGVIUXBLU0I3WEc0Z0lDQWdJQ0J5WlhSMWNtNDdYRzRnSUNBZ2ZWeHVYRzRnSUNBZ2RHaHBjeTV6WlhSVGRHRjBaVWhsYkhCbGNpaDdJSFpoYkhWbExDQjBaWGgwTENCc2IyRmthVzVuT2lCbVlXeHpaU0I5S1R0Y2JpQWdJQ0IwYUdsekxuQjFZbXhwYzJoRmRtVnVkQ2h1WlhjZ1UyTmxibVZXWVhKcFlXSnNaVlpoYkhWbFEyaGhibWRsWkVWMlpXNTBLSFJvYVhNcExDQjBjblZsS1R0Y2JpQWdmVnh1WEc0Z0lIQnlhWFpoZEdVZ1ptbHVaRXhoWW1Wc1ZHVjRkRVp2Y2xaaGJIVmxLSFpoYkhWbE9pQldZWEpwWVdKc1pWWmhiSFZsVTJsdVoyeGxLVG9nVm1GeWFXRmliR1ZXWVd4MVpWTnBibWRzWlNCN1hHNGdJQ0FnYVdZZ0tIWmhiSFZsSUQwOVBTQkJURXhmVmtGU1NVRkNURVZmVmtGTVZVVXBJSHRjYmlBZ0lDQWdJSEpsZEhWeWJpQkJURXhmVmtGU1NVRkNURVZmVkVWWVZEdGNiaUFnSUNCOVhHNWNiaUFnSUNCamIyNXpkQ0J2Y0hScGIyNGdQU0IwYUdsekxuTjBZWFJsTG05d2RHbHZibk11Wm1sdVpDZ29lQ2tnUFQ0Z2VDNTJZV3gxWlNBOVBUMGdkbUZzZFdVcE8xeHVJQ0FnSUdsbUlDaHZjSFJwYjI0cElIdGNiaUFnSUNBZ0lISmxkSFZ5YmlCdmNIUnBiMjR1YkdGaVpXdzdYRzRnSUNBZ2ZWeHVYRzRnSUNBZ1kyOXVjM1FnYjNCMGFXOXVRbmxNWVdKbGJDQTlJSFJvYVhNdWMzUmhkR1V1YjNCMGFXOXVjeTVtYVc1a0tDaDRLU0E5UGlCNExteGhZbVZzSUQwOVBTQjJZV3gxWlNrN1hHNGdJQ0FnYVdZZ0tHOXdkR2x2YmtKNVRHRmlaV3dwSUh0Y2JpQWdJQ0FnSUhKbGRIVnliaUJ2Y0hScGIyNUNlVXhoWW1Wc0xteGhZbVZzTzF4dUlDQWdJSDFjYmx4dUlDQWdJSEpsZEhWeWJpQjJZV3gxWlR0Y2JpQWdmVnh1WEc0Z0lDOHFLbHh1SUNBZ0tpQlVhR2x6SUdobGJIQmxjaUJtZFc1amRHbHZiaUJwY3lCMGJ5QmpiM1Z1ZEdWeUlIUm9aU0JqYjI1MGNtRjJZWEpwWVc1alpTQnZaaUJ6WlhSVGRHRjBaVnh1SUNBZ0tpOWNiaUFnY0hKcGRtRjBaU0J6WlhSVGRHRjBaVWhsYkhCbGNpaHpkR0YwWlRvZ1VHRnlkR2xoYkR4TmRXeDBhVlpoYkhWbFZtRnlhV0ZpYkdWVGRHRjBaVDRwSUh0Y2JpQWdJQ0J6WlhSQ1lYTmxRMnhoYzNOVGRHRjBaVHhOZFd4MGFWWmhiSFZsVm1GeWFXRmliR1ZUZEdGMFpUNG9kR2hwY3l3Z2MzUmhkR1VwTzF4dUlDQjlYRzVjYmlBZ2NIVmliR2xqSUdkbGRFOXdkR2x2Ym5OR2IzSlRaV3hsWTNRb0tUb2dWbUZ5YVdGaWJHVldZV3gxWlU5d2RHbHZibHRkSUh0Y2JpQWdJQ0JzWlhRZ2IzQjBhVzl1Y3lBOUlIUm9hWE11YzNSaGRHVXViM0IwYVc5dWN6dGNibHh1SUNBZ0lHbG1JQ2gwYUdsekxuTjBZWFJsTG1sdVkyeDFaR1ZCYkd3cElIdGNiaUFnSUNBZ0lHOXdkR2x2Ym5NZ1BTQmJleUIyWVd4MVpUb2dRVXhNWDFaQlVrbEJRa3hGWDFaQlRGVkZMQ0JzWVdKbGJEb2dRVXhNWDFaQlVrbEJRa3hGWDFSRldGUWdmU3dnTGk0dWIzQjBhVzl1YzEwN1hHNGdJQ0FnZlZ4dVhHNGdJQ0FnYVdZZ0tDRkJjbkpoZVM1cGMwRnljbUY1S0hSb2FYTXVjM1JoZEdVdWRtRnNkV1VwS1NCN1hHNGdJQ0FnSUNCamIyNXpkQ0JqZFhKeVpXNTBJRDBnYjNCMGFXOXVjeTVtYVc1a0tDaDRLU0E5UGlCNExuWmhiSFZsSUQwOVBTQjBhR2x6TG5OMFlYUmxMblpoYkhWbEtUdGNiaUFnSUNBZ0lHbG1JQ2doWTNWeWNtVnVkQ2tnZTF4dUlDQWdJQ0FnSUNCdmNIUnBiMjV6SUQwZ1czc2dkbUZzZFdVNklIUm9hWE11YzNSaGRHVXVkbUZzZFdVc0lHeGhZbVZzT2lCVGRISnBibWNvZEdocGN5NXpkR0YwWlM1MFpYaDBLU0I5TENBdUxpNXZjSFJwYjI1elhUdGNiaUFnSUNBZ0lIMWNiaUFnSUNCOVhHNWNiaUFnSUNCeVpYUjFjbTRnYjNCMGFXOXVjenRjYmlBZ2ZWeHVYRzRnSUhCMVlteHBZeUJ5WldaeVpYTm9UM0IwYVc5dWN5Z3BJSHRjYmlBZ0lDQjBhR2x6TG1kbGRGWmhiSFZsVDNCMGFXOXVjeWg3ZlNrdWMzVmljMk55YVdKbEtDaHZjSFJwYjI1ektTQTlQaUI3WEc0Z0lDQWdJQ0IwYUdsekxuVndaR0YwWlZaaGJIVmxSMmwyWlc1T1pYZFBjSFJwYjI1ektHOXdkR2x2Ym5NcE8xeHVJQ0FnSUgwcE8xeHVJQ0I5WEc1Y2JpQWdMeW9xWEc0Z0lDQXFJRU5oYmlCaVpTQjFjMlZrSUdKNUlITjFZbU5zWVhOelpYTWdkRzhnWkc4Z1kzVnpkRzl0SUdoaGJtUnNhVzVuSUc5bUlHOXdkR2x2YmlCelpXRnlZMmdnWW1GelpXUWdiMjRnYzJWaGNtTm9JR2x1Y0hWMFhHNGdJQ0FxTDF4dUlDQndkV0pzYVdNZ2IyNVRaV0Z5WTJoRGFHRnVaMlUvS0hObFlYSmphRVpwYkhSbGNqb2djM1J5YVc1bktUb2dkbTlwWkR0Y2JuMWNibHh1THlvcVhHNGdLaUJNYjI5cmN5Qm1iM0lnYldGMFkyaHBibWNnYjNCMGFXOXVMQ0JtYVhKemRDQmllU0IyWVd4MVpTQmlkWFFnWVhNZ1lTQm1ZV3hzWW1GamF5QmllU0IwWlhoMElDaHNZV0psYkNrdVhHNGdLaTljYm1aMWJtTjBhVzl1SUdacGJtUlBjSFJwYjI1TllYUmphR2x1WjBOMWNuSmxiblFvWEc0Z0lHTjFjbkpsYm5SV1lXeDFaVG9nVm1GeWFXRmliR1ZXWVd4MVpTeGNiaUFnWTNWeWNtVnVkRlJsZUhRNklGWmhjbWxoWW14bFZtRnNkV1VzWEc0Z0lHOXdkR2x2Ym5NNklGWmhjbWxoWW14bFZtRnNkV1ZQY0hScGIyNWJYVnh1S1NCN1hHNGdJR3hsZENCMFpYaDBUV0YwWTJnNklGWmhjbWxoWW14bFZtRnNkV1ZQY0hScGIyNGdmQ0IxYm1SbFptbHVaV1E3WEc1Y2JpQWdabTl5SUNoamIyNXpkQ0JwZEdWdElHOW1JRzl3ZEdsdmJuTXBJSHRjYmlBZ0lDQnBaaUFvYVhSbGJTNTJZV3gxWlNBOVBUMGdZM1Z5Y21WdWRGWmhiSFZsS1NCN1hHNGdJQ0FnSUNCeVpYUjFjbTRnYVhSbGJUdGNiaUFnSUNCOVhHNWNiaUFnSUNBdkx5Qk9ieUJsWVhKc2VTQnlaWFIxY200Z2FHVnlaU0JoY3lCM1lXNTBJSFJ2SUdOdmJuUnBiblZsSUhSdklHeHZiMnNnWVNCMllXeDFaU0J0WVhSamFGeHVJQ0FnSUdsbUlDaHBkR1Z0TG14aFltVnNJRDA5UFNCamRYSnlaVzUwVkdWNGRDa2dlMXh1SUNBZ0lDQWdkR1Y0ZEUxaGRHTm9JRDBnYVhSbGJUdGNiaUFnSUNCOVhHNGdJSDFjYmx4dUlDQnlaWFIxY200Z2RHVjRkRTFoZEdOb08xeHVmVnh1WEc1bGVIQnZjblFnWTJ4aGMzTWdUWFZzZEdsV1lXeDFaVlZ5YkZONWJtTklZVzVrYkdWeVBGUlRkR0YwWlNCbGVIUmxibVJ6SUUxMWJIUnBWbUZzZFdWV1lYSnBZV0pzWlZOMFlYUmxJRDBnVFhWc2RHbFdZV3gxWlZaaGNtbGhZbXhsVTNSaGRHVStYRzRnSUdsdGNHeGxiV1Z1ZEhNZ1UyTmxibVZQWW1wbFkzUlZjbXhUZVc1alNHRnVaR3hsY2x4dWUxeHVJQ0J3ZFdKc2FXTWdZMjl1YzNSeWRXTjBiM0lvY0hKcGRtRjBaU0JmYzJObGJtVlBZbXBsWTNRNklFMTFiSFJwVm1Gc2RXVldZWEpwWVdKc1pUeFVVM1JoZEdVK0tTQjdmVnh1WEc0Z0lIQnlhWFpoZEdVZ1oyVjBTMlY1S0NrNklITjBjbWx1WnlCN1hHNGdJQ0FnY21WMGRYSnVJR0IyWVhJdEpIdDBhR2x6TGw5elkyVnVaVTlpYW1WamRDNXpkR0YwWlM1dVlXMWxmV0E3WEc0Z0lIMWNibHh1SUNCd2RXSnNhV01nWjJWMFMyVjVjeWdwT2lCemRISnBibWRiWFNCN1hHNGdJQ0FnYVdZZ0tIUm9hWE11WDNOalpXNWxUMkpxWldOMExuTjBZWFJsTG5OcmFYQlZjbXhUZVc1aktTQjdYRzRnSUNBZ0lDQnlaWFIxY200Z1cxMDdYRzRnSUNBZ2ZWeHVYRzRnSUNBZ2NtVjBkWEp1SUZ0MGFHbHpMbWRsZEV0bGVTZ3BYVHRjYmlBZ2ZWeHVYRzRnSUhCMVlteHBZeUJuWlhSVmNteFRkR0YwWlNncE9pQlRZMlZ1WlU5aWFtVmpkRlZ5YkZaaGJIVmxjeUI3WEc0Z0lDQWdhV1lnS0hSb2FYTXVYM05qWlc1bFQySnFaV04wTG5OMFlYUmxMbk5yYVhCVmNteFRlVzVqS1NCN1hHNGdJQ0FnSUNCeVpYUjFjbTRnZTMwN1hHNGdJQ0FnZlZ4dVhHNGdJQ0FnYkdWMElIVnliRlpoYkhWbE9pQnpkSEpwYm1jZ2ZDQnpkSEpwYm1kYlhTQjhJRzUxYkd3Z1BTQnVkV3hzTzF4dUlDQWdJR3hsZENCMllXeDFaU0E5SUhSb2FYTXVYM05qWlc1bFQySnFaV04wTG5OMFlYUmxMblpoYkhWbE8xeHVYRzRnSUNBZ2FXWWdLRUZ5Y21GNUxtbHpRWEp5WVhrb2RtRnNkV1VwS1NCN1hHNGdJQ0FnSUNCMWNteFdZV3gxWlNBOUlIWmhiSFZsTG0xaGNDaFRkSEpwYm1jcE8xeHVJQ0FnSUgwZ1pXeHpaU0JwWmlBb0tIUm9hWE1zSUhSb2FYTXVYM05qWlc1bFQySnFaV04wTG5OMFlYUmxMbWx6VFhWc2RHa3BLU0I3WEc0Z0lDQWdJQ0F2THlCSlppQjNaU0JoY21VZ2FXNU5kV3gwYVNCdGIyUmxJSGRsSUcxMWMzUWdjbVYwZFhKdUlHRnVJR0Z5Y21GNUlHaGxjbVVnWVhNZ2IzUm9aWEozYVhObElGVnliRk41Ym1OTllXNWhaMlZ5SUhkcGJHd2dibTkwSUhCaGMzTWdZV3hzSUhaaGJIVmxjeUFvYVc0Z1lXNGdZWEp5WVhrcElHbHVJSFZ3WkdGMFpVWnliMjFWY214Y2JpQWdJQ0FnSUhWeWJGWmhiSFZsSUQwZ1cxTjBjbWx1WnloMllXeDFaU2xkTzF4dUlDQWdJSDBnWld4elpTQjdYRzRnSUNBZ0lDQjFjbXhXWVd4MVpTQTlJRk4wY21sdVp5aDJZV3gxWlNrN1hHNGdJQ0FnZlZ4dVhHNGdJQ0FnY21WMGRYSnVJSHNnVzNSb2FYTXVaMlYwUzJWNUtDbGRPaUIxY214V1lXeDFaU0I5TzF4dUlDQjlYRzVjYmlBZ2NIVmliR2xqSUhWd1pHRjBaVVp5YjIxVmNtd29kbUZzZFdWek9pQlRZMlZ1WlU5aWFtVmpkRlZ5YkZaaGJIVmxjeWs2SUhadmFXUWdlMXh1SUNBZ0lHeGxkQ0IxY214V1lXeDFaU0E5SUhaaGJIVmxjMXQwYUdsekxtZGxkRXRsZVNncFhUdGNibHh1SUNBZ0lHbG1JQ2gxY214V1lXeDFaU0FoUFNCdWRXeHNLU0I3WEc0Z0lDQWdJQ0F2THlCVWFHbHpJR2x6SUhSdklHSmxJR0poWTJ0M1lYSmtjeUJqYjIxd1lYUnBZbXhsSUhkcGRHZ2diMnhrSUhWeWJDQmhiR3dnZG1Gc2RXVmNiaUFnSUNBZ0lHbG1JQ2gwYUdsekxsOXpZMlZ1WlU5aWFtVmpkQzV6ZEdGMFpTNXBibU5zZFdSbFFXeHNLU0I3WEc0Z0lDQWdJQ0FnSUhWeWJGWmhiSFZsSUQwZ2FHRnVaR3hsVEdWbllXTjVWWEpzUVd4c1ZtRnNkV1VvZFhKc1ZtRnNkV1VwTzF4dUlDQWdJQ0FnZlZ4dVhHNGdJQ0FnSUNBdkx5QkdiM0lnWldSblpTQmpZWE5sY3lCM2FHVnlaU0JrWVhSaElHeHBibXR6SUdsdVkyeDFaR1VnZG1GeWFXRmliR1Z6SUhkcGRHZ2dZM1Z6ZEc5dElHRnNiQ0IyWVd4MVpTNWNiaUFnSUNBZ0lDOHZJRmRsSUhkaGJuUWdkR2hsSUhaaGNtbGhZbXhsSUhSdklHMWhhVzUwWVdsdUlIUm9aU0JjSWtGc2JGd2lJRzFsZEdFZ2RtRnNkV1VnYm05MElIUm9aU0JoWTNSMVlXd2dZM1Z6ZEc5dElIWmhiR3dnZG1Gc2RXVXVJQ2hHYVhobGN5Qm9kSFJ3Y3pvdkwyZHBkR2gxWWk1amIyMHZaM0poWm1GdVlTOW5jbUZtWVc1aEwybHpjM1ZsY3k4eU9EWXpOU2xjYmlBZ0lDQWdJR2xtSUNoMGFHbHpMbDl6WTJWdVpVOWlhbVZqZEM1emRHRjBaUzVoYkd4V1lXeDFaU0FtSmlCMGFHbHpMbDl6WTJWdVpVOWlhbVZqZEM1emRHRjBaUzVoYkd4V1lXeDFaU0E5UFQwZ2RYSnNWbUZzZFdVcElIdGNiaUFnSUNBZ0lDQWdkWEpzVm1Gc2RXVWdQU0JCVEV4ZlZrRlNTVUZDVEVWZlZrRk1WVVU3WEc0Z0lDQWdJQ0I5WEc1Y2JpQWdJQ0FnSUM4cUtseHVJQ0FnSUNBZ0lDb2dTVzVwZEdsaGJDQlZVa3dnVTNsdVl5Qm9ZWEJ3Wlc1eklHSmxabTl5WlNCelkyVnVaU0J2WW1wbFkzUnpJR0Z5WlNCaFkzUnBkbUYwWldRdVhHNGdJQ0FnSUNBZ0tpQlhaU0J1WldWa0lIUnZJSE5yYVhBZ2RtRnNhV1JoZEdsdmJpQnBiaUIwYUdseklHTmhjMlVnZEc4Z2JXRnJaU0J6ZFhKbElIWmhiSFZsY3lCelpYUWdkbWxoSUZWU1RDQmhjbVVnYldGcGJuUmhhVzVsWkM1Y2JpQWdJQ0FnSUNBcUwxeHVJQ0FnSUNBZ2FXWWdLQ0YwYUdsekxsOXpZMlZ1WlU5aWFtVmpkQzVwYzBGamRHbDJaU2tnZTF4dUlDQWdJQ0FnSUNCMGFHbHpMbDl6WTJWdVpVOWlhbVZqZEM1emEybHdUbVY0ZEZaaGJHbGtZWFJwYjI0Z1BTQjBjblZsTzF4dUlDQWdJQ0FnZlZ4dVhHNGdJQ0FnSUNCMGFHbHpMbDl6WTJWdVpVOWlhbVZqZEM1amFHRnVaMlZXWVd4MVpWUnZLSFZ5YkZaaGJIVmxLVHRjYmlBZ0lDQjlYRzRnSUgxY2JuMWNibHh1Wm5WdVkzUnBiMjRnYUdGdVpHeGxUR1ZuWVdONVZYSnNRV3hzVm1Gc2RXVW9kbUZzZFdVNklITjBjbWx1WnlCOElITjBjbWx1WjF0ZEtTQjdYRzRnSUdsbUlDaHBjMEZ5Y21GNUtIWmhiSFZsS1NBbUppQjJZV3gxWlZzd1hTQTlQVDBnUVV4TVgxWkJVa2xCUWt4RlgxUkZXRlFwSUh0Y2JpQWdJQ0J5WlhSMWNtNGdXMEZNVEY5V1FWSkpRVUpNUlY5V1FVeFZSVjA3WEc0Z0lIMGdaV3h6WlNCcFppQW9kbUZzZFdVZ1BUMDlJRUZNVEY5V1FWSkpRVUpNUlY5VVJWaFVLU0I3WEc0Z0lDQWdjbVYwZFhKdUlFRk1URjlXUVZKSlFVSk1SVjlXUVV4VlJUdGNiaUFnZlZ4dVhHNGdJSEpsZEhWeWJpQjJZV3gxWlR0Y2JuMWNibHh1THlvcVhHNGdLaUJXWVhKcFlXSnNaU0JuWlhSV1lXeDFaU0JqWVc0Z2NtVjBkWEp1SUhSb2FYTWdkRzhnYzJ0cGNDQmhibmtnYzNWaWMyVnhkV1Z1ZENCbWIzSnRZWFIwYVc1bkxseHVJQ29nVkdocGN5QnBjeUIxYzJWbWRXd2dabTl5SUdOMWMzUnZiU0JoYkd3Z2RtRnNkV1Z6SUhSb1lYUWdjMmh2ZFd4a0lHNXZkQ0JpWlNCbGMyTmhjR1ZrTDJadmNtMWhkSFJsWkM1Y2JpQXFMMXh1Wlhod2IzSjBJR05zWVhOeklFTjFjM1J2YlVGc2JGWmhiSFZsSUdsdGNHeGxiV1Z1ZEhNZ1EzVnpkRzl0Vm1GeWFXRmliR1ZXWVd4MVpTQjdYRzRnSUhCMVlteHBZeUJqYjI1emRISjFZM1J2Y2lod2NtbDJZWFJsSUY5MllXeDFaVG9nYzNSeWFXNW5MQ0J3Y21sMllYUmxJRjkyWVhKcFlXSnNaVG9nVTJObGJtVldZWEpwWVdKc1pTa2dlMzFjYmx4dUlDQndkV0pzYVdNZ1ptOXliV0YwZEdWeUtHWnZjbTFoZEU1aGJXVlBja1p1UHpvZ2MzUnlhVzVuSUh3Z1ZtRnlhV0ZpYkdWRGRYTjBiMjFHYjNKdFlYUjBaWEpHYmlrNklITjBjbWx1WnlCN1hHNGdJQ0FnYVdZZ0tHWnZjbTFoZEU1aGJXVlBja1p1SUQwOVBTQldZWEpwWVdKc1pVWnZjbTFoZEVsRUxsUmxlSFFwSUh0Y2JpQWdJQ0FnSUhKbGRIVnliaUJCVEV4ZlZrRlNTVUZDVEVWZlZFVllWRHRjYmlBZ0lDQjlYRzVjYmlBZ0lDQnBaaUFvWm05eWJXRjBUbUZ0WlU5eVJtNGdQVDA5SUZaaGNtbGhZbXhsUm05eWJXRjBTVVF1VUdWeVkyVnVkRVZ1WTI5a1pTa2dlMXh1SUNBZ0lDQWdjbVYwZFhKdUlHWnZjbTFoZEZKbFoybHpkSEo1TG1kbGRDaFdZWEpwWVdKc1pVWnZjbTFoZEVsRUxsQmxjbU5sYm5SRmJtTnZaR1VwTG1admNtMWhkSFJsY2loMGFHbHpMbDkyWVd4MVpTd2dXMTBzSUhSb2FYTXVYM1poY21saFlteGxLVHRjYmlBZ0lDQjlYRzVjYmlBZ0lDQnBaaUFvWm05eWJXRjBUbUZ0WlU5eVJtNGdQVDA5SUZaaGNtbGhZbXhsUm05eWJXRjBTVVF1VVhWbGNubFFZWEpoYlNrZ2UxeHVJQ0FnSUNBZ2NtVjBkWEp1SUdadmNtMWhkRkpsWjJsemRISjVMbWRsZENoV1lYSnBZV0pzWlVadmNtMWhkRWxFTGxGMVpYSjVVR0Z5WVcwcExtWnZjbTFoZEhSbGNpaEJURXhmVmtGU1NVRkNURVZmVkVWWVZDd2dXMTBzSUhSb2FYTXVYM1poY21saFlteGxLVHRjYmlBZ0lDQjlYRzVjYmlBZ0lDQnlaWFIxY200Z2RHaHBjeTVmZG1Gc2RXVTdYRzRnSUgxY2JuMWNiaUpkTENKdVlXMWxjeUk2VzEwc0ltMWhjSEJwYm1keklqb2lPenM3T3pzN096czdRVUU0UTA4c1RVRkJaU3d5UWtGRFdpeGxRVVZXTEVOQlFVRTdRVUZCUVN4RlFVaFBMRmRCUVVFc1IwRkJRVHRCUVVGQkxFbEJRVUVzUzBGQlFTeERRVUZCTEVkQlFVRXNVMEZCUVN4RFFVRkJMRU5CUVVFN1FVRkpUQ3hKUVVGVkxFbEJRVUVzUTBGQlFTeFJRVUZCTEVkQlFYTkRMRWxCUVVrc2QwSkJRVUVzUTBGQmVVSXNTVUZCU1N4RFFVRkJMRU5CUVVFN1FVRkJRU3hIUVVGQk8wRkJRVUVzUlVGbE1VVXNhVUpCUVhsRUxFZEJRVUU3UVVGRE9VUXNTVUZCUVN4UFFVRlBMRWxCUVVzc1EwRkJRU3hsUVVGQkxFTkJRV2RDTEVWQlFVVXNRMEZCUlN4RFFVRkJMRWxCUVVFN1FVRkJRU3hOUVVNNVFpeEhRVUZCTEVOQlFVa3NRMEZCUXl4UFFVRlpMRXRCUVVFN1FVRkRaaXhSUVVGQkxFbEJRVUVzUTBGQlN5d3lRa0ZCTWtJc1QwRkJUeXhEUVVGQkxFTkJRVUU3UVVGRGRrTXNVVUZCUVN4UFFVRlBMRVZCUVVNc1EwRkJRVHRCUVVGQkxFOUJRMVFzUTBGQlFUdEJRVUZCTEV0QlEwZ3NRMEZCUVR0QlFVRkJMRWRCUTBZN1FVRkJRU3hGUVVWUExGRkJRV2xDTEVkQlFVRTdRVUZEZEVJc1NVRkJRU3hKUVVGQkxFTkJRVXNzWTBGQlpTeERRVUZCTEVWQlFVVXNUMEZCVXl4RlFVRkJMRXRCUVVFc1JVRkJUeXhEUVVGQkxFTkJRVUU3UVVGRGRFTXNTVUZCUVN4TlFVRk5MR05CUVdNc1NVRkJTeXhEUVVGQkxFMUJRVUVzUTBGQlFUdEJRVU42UWl4SlFVRkJMRmRCUVVFc1NVRkJRU3hKUVVGQkxFZEJRVUVzUzBGQlFTeERRVUZCTEVkQlFVRXNWMEZCUVN4RFFVRmhMRTFCUVU4c1EwRkJRU3hKUVVGQkxFTkJRVUVzUTBGQlFUdEJRVUZCTEVkQlEzUkNPMEZCUVVFc1JVRkxVU3d5UWtGQk1rSXNUMEZCWjBNc1JVRkJRVHRCUVVWcVJTeEpRVUZOTEUxQlFVRXNSVUZCUlN4UFFVRlBMRmxCUVdNc1JVRkJRU3hKUVVGQkxFVkJRVTBzWVVGQllTeFBRVUZUTEVWQlFVRXNWVUZCUVN4TFFVRmxMRWxCUVVzc1EwRkJRU3hMUVVGQkxFTkJRVUU3UVVGRk4wVXNTVUZCUVN4TlFVRk5MRmRCUVdNc1IwRkJRU3hKUVVGQkxFTkJRVXNzTmtKQlFUaENMRU5CUVVFc1QwRkJRU3hGUVVGVExHTkJRV01zVjBGQlZ5eERRVUZCTEVOQlFVRTdRVUZGZWtZc1NVRkJRU3hKUVVGQkxFTkJRVXNzYjBOQlFXOURMRmRCUVZjc1EwRkJRU3hEUVVGQk8wRkJSM0JFTEVsQlFVRXNTVUZCUVN4RFFVRkxMR1ZCUVdVc1YwRkJWeXhEUVVGQkxFTkJRVUU3UVVGSEwwSXNTVUZCUVN4SlFVTkZMRmRCUVZrc1EwRkJRU3hMUVVGQkxFdEJRVlVzV1VGRGRFSXNTVUZCUVN4WFFVRkJMRU5CUVZrc1NVRkJVeXhMUVVGQkxGZEJRVUVzU1VGRGNFSXNTVUZCU3l4RFFVRkJMRmRCUVVFc1JVRkJhVUlzU1VGQlFTeERRVUZETEU5QlFWRXNRMEZCUVN4UFFVRkJMRVZCUVZNc1ZVRkJWU3hEUVVOdVJDeEZRVUZCTzBGQlEwRXNUVUZCUVN4SlFVRkJMRU5CUVVzc1dVRkJZU3hEUVVGQkxFbEJRVWtzT0VKQlFTdENMRU5CUVVFc1NVRkJTU3hIUVVGSExFbEJRVWtzUTBGQlFTeERRVUZCTzBGQlFVRXNTMEZEYkVVN1FVRkJRU3hIUVVOR08wRkJRVUVzUlVGRlVTdzJRa0ZCUVN4RFFVTk9MRTlCUTBFc1JVRkJRU3haUVVGQkxFVkJRMEVzVjBGRGEwTXNSVUZCUVR0QlFVTnNReXhKUVVGQkxFMUJRVTBzVjBGQlowUXNSMEZCUVR0QlFVRkJMRTFCUTNCRUxFOUJRVUU3UVVGQlFTeE5RVU5CTEU5QlFWTXNSVUZCUVN4TFFVRkJPMEZCUVVFc1RVRkRWQ3hMUVVGUExFVkJRVUVzV1VGQlFUdEJRVUZCTEUxQlExQXNTVUZCVFN4RlFVRkJMRmRCUVVFN1FVRkJRU3hMUVVOU0xFTkJRVUU3UVVGRlFTeEpRVUZKTEVsQlFVRXNUMEZCUVN4RFFVRlJMRmRCUVZjc1EwRkJSeXhGUVVGQk8wRkJRM2hDTEUxQlFVRXNTVUZCU1N4SlFVRkxMRU5CUVVFc1MwRkJRU3hEUVVGTkxGbEJRV2RDTEVsQlFVRXNTVUZCUVN4RFFVRkxMRTFCUVUwc1ZVRkJXU3hGUVVGQk8wRkJRM0JFTEZGQlFVRXNWMEZCUVN4RFFVRlpMRXRCUVZFc1IwRkJRU3hyUWtGQlFTeERRVUZCTzBGQlEzQkNMRkZCUVVFc1YwRkJRU3hEUVVGWkxFbEJRVThzUjBGQlFTeHBRa0ZCUVN4RFFVRkJPMEZCUVVFc1QwRkRja0lzVFVGQlFTeEpRVUZYTEVsQlFVc3NRMEZCUVN4TFFVRkJMRU5CUVUwc1QwRkJVeXhGUVVGQk8wRkJRemRDTEZGQlFVRXNWMEZCUVN4RFFVRlpMRkZCUVZFc1JVRkJReXhEUVVGQk8wRkJRM0pDTEZGQlFVRXNWMEZCUVN4RFFVRlpMRTlCUVU4c1JVRkJReXhEUVVGQk8wRkJRVUVzVDBGRFppeE5RVUZCTzBGQlEwd3NVVUZCUVN4WFFVRkJMRU5CUVZrc1MwRkJVU3hIUVVGQkxFVkJRVUVzUTBGQlFUdEJRVU53UWl4UlFVRkJMRmRCUVVFc1EwRkJXU3hKUVVGUExFZEJRVUVzUlVGQlFTeERRVUZCTzBGQlFVRXNUMEZEY2tJN1FVRkZRU3hOUVVGUExFOUJRVUVzVjBGQlFTeERRVUZCTzBGQlFVRXNTMEZEVkR0QlFVVkJMRWxCUVVrc1NVRkJRU3hKUVVGQkxFTkJRVXNzWVVGQlpTeEZRVUZCTzBGQlEzUkNMRTFCUVVrc1NVRkJRU3hKUVVGQkxFTkJRVXNzVFVGQlRTeFZRVUZaTEVWQlFVRTdRVUZGZWtJc1VVRkJRU3hYUVVGQkxFTkJRVmtzU1VGQlR5eEhRVUZCTEdsQ1FVRkJMRU5CUVVFN1FVRkJRU3hQUVVOa0xFMUJRVUU3UVVGRFRDeFJRVUZaTEZkQlFVRXNRMEZCUVN4TFFVRkJMRWRCUVZFc1VVRkJVU3hEUVVGSExFTkJRVUVzUTBGQlFTeExRVUZCTEVOQlFVRTdRVUZETDBJc1VVRkJXU3hYUVVGQkxFTkJRVUVzU1VGQlFTeEhRVUZQTEZGQlFWRXNRMEZCUnl4RFFVRkJMRU5CUVVFc1MwRkJRU3hEUVVGQk8wRkJSVGxDTEZGQlFVa3NTVUZCUVN4SlFVRkJMRU5CUVVzc1RVRkJUU3hQUVVGVExFVkJRVUU3UVVGRGRFSXNWVUZCV1N4WFFVRkJMRU5CUVVFc1MwRkJRU3hIUVVGUkxFTkJRVU1zVjBGQlFTeERRVUZaTEV0QlFVc3NRMEZCUVN4RFFVRkJPMEZCUTNSRExGVkJRVmtzVjBGQlFTeERRVUZCTEVsQlFVRXNSMEZCVHl4RFFVRkRMRmRCUVVFc1EwRkJXU3hKUVVGSkxFTkJRVUVzUTBGQlFUdEJRVUZCTEZOQlEzUkRPMEZCUVVFc1QwRkRSanRCUVVOQkxFMUJRVThzVDBGQlFTeFhRVUZCTEVOQlFVRTdRVUZCUVN4TFFVTlVPMEZCUlVFc1NVRkJTU3hKUVVGQkxFbEJRVUVzUTBGQlN5eE5RVUZOTEU5QlFWTXNSVUZCUVR0QlFVVjBRaXhOUVVGQkxFMUJRVTBzWjBKQlFXZENMRXRCUVUwc1EwRkJRU3hQUVVGQkxFTkJRVkVzV1VGQldTeERRVUZKTEVkQlFVRXNXVUZCUVN4SFFVRmxMRU5CUVVNc1dVRkJXU3hEUVVGQkxFTkJRVUU3UVVGRGFFWXNUVUZCUVN4TlFVRk5MRmRCUVdNc1IwRkJRU3hoUVVGQkxFTkJRV01zVFVGQlR5eERRVUZCTEVOQlFVTXNRMEZCVFN4TFFVRkJMRTlCUVVFc1EwRkJVU3hKUVVGTExFTkJRVUVzUTBGQlF5eERRVUZOTEV0QlFVRXNRMEZCUVN4RFFVRkZMRXRCUVZVc1MwRkJRU3hEUVVGRExFTkJRVU1zUTBGQlFTeERRVUZCTzBGQlEyeEdMRTFCUVVFc1RVRkJUU3hWUVVGaExFZEJRVUVzVjBGQlFTeERRVUZaTEVkQlFVa3NRMEZCUVN4RFFVRkRMRU5CUVUwc1MwRkJRU3hQUVVGQkxFTkJRVkVzU1VGQlN5eERRVUZCTEVOQlFVTXNRMEZCVFN4TFFVRkJMRU5CUVVFc1EwRkJSU3hMUVVGVkxFdEJRVUVzUTBGQlF5eEZRVUZITEV0QlFVc3NRMEZCUVN4RFFVRkJPMEZCUjI1R0xFMUJRVWtzU1VGQlFTeFhRVUZCTEVOQlFWa3NWMEZCVnl4RFFVRkhMRVZCUVVFN1FVRkROVUlzVVVGQlRTeE5RVUZCTEZsQlFVRXNSMEZCWlN4SlFVRkxMRU5CUVVFc2IwSkJRVUVzUTBGQmNVSXNUMEZCVHl4RFFVRkJMRU5CUVVFN1FVRkRkRVFzVVVGQlFTeFhRVUZCTEVOQlFWa3NVVUZCVVN4WlFVRmhMRU5CUVVFc1MwRkJRU3hEUVVGQk8wRkJRMnBETEZGQlFVRXNWMEZCUVN4RFFVRlpMRTlCUVU4c1dVRkJZU3hEUVVGQkxFbEJRVUVzUTBGQlFUdEJRVUZCTEU5QlF6TkNMRTFCUVVFN1FVRkZUQ3hSUVVGQkxFbEJRVWtzUTBGQlF5eFBRVUZCTEVOQlFWRXNWMEZCWVN4RlFVRkJMRmxCUVZrc1EwRkJSeXhGUVVGQk8wRkJRM1pETEZWQlFVRXNWMEZCUVN4RFFVRlpMRXRCUVZFc1IwRkJRU3hYUVVGQkxFTkJRVUU3UVVGQlFTeFRRVU4wUWp0QlFVTkJMRkZCUVVFc1NVRkJTU3hEUVVGRExFOUJRVUVzUTBGQlVTeFZRVUZaTEVWQlFVRXNWMEZCVnl4RFFVRkhMRVZCUVVFN1FVRkRja01zVlVGQlFTeFhRVUZCTEVOQlFWa3NTVUZCVHl4SFFVRkJMRlZCUVVFc1EwRkJRVHRCUVVGQkxGTkJRM0pDTzBGQlFVRXNUMEZEUmp0QlFVTkJMRTFCUVU4c1QwRkJRU3hYUVVGQkxFTkJRVUU3UVVGQlFTeExRVU5VTzBGQlMwRXNTVUZCUVN4SlFVRkpMR05CUVdsQ0xFZEJRVUVzZVVKQlFVRXNRMEZCTUVJc1dVRkJZeXhGUVVGQkxGZEJRVUVzUlVGQllTeFBRVUZQTEVOQlFVRXNRMEZCUVR0QlFVTnFSaXhKUVVGQkxFbEJRVWtzWTBGQlowSXNSVUZCUVR0QlFVZHNRaXhOUVVGQkxGZEJRVUVzUTBGQldTeFBRVUZQTEdOQlFXVXNRMEZCUVN4TFFVRkJMRU5CUVVFN1FVRkRiRU1zVFVGQlFTeFhRVUZCTEVOQlFWa3NVVUZCVVN4alFVRmxMRU5CUVVFc1MwRkJRU3hEUVVGQk8wRkJRVUVzUzBGRE9VSXNUVUZCUVR0QlFVVk1MRTFCUVVrc1NVRkJRU3hKUVVGQkxFTkJRVXNzVFVGQlRTeFpRVUZqTEVWQlFVRTdRVUZETTBJc1VVRkJRU3hYUVVGQkxFTkJRVmtzUzBGQlVTeEhRVUZCTEd0Q1FVRkJMRU5CUVVFN1FVRkRjRUlzVVVGQlFTeFhRVUZCTEVOQlFWa3NTVUZCVHl4SFFVRkJMR2xDUVVGQkxFTkJRVUU3UVVGQlFTeFBRVU5rTEUxQlFVRTdRVUZGVEN4UlFVRlpMRmRCUVVFc1EwRkJRU3hMUVVGQkxFZEJRVkVzVVVGQlVTeERRVUZITEVOQlFVRXNRMEZCUVN4TFFVRkJMRU5CUVVFN1FVRkRMMElzVVVGQldTeFhRVUZCTEVOQlFVRXNTVUZCUVN4SFFVRlBMRkZCUVZFc1EwRkJSeXhEUVVGQkxFTkJRVUVzUzBGQlFTeERRVUZCTzBGQlFVRXNUMEZEYUVNN1FVRkJRU3hMUVVOR08wRkJSVUVzU1VGQlR5eFBRVUZCTEZkQlFVRXNRMEZCUVR0QlFVRkJMRWRCUTFRN1FVRkJRU3hGUVUxVkxHOURRVUZ2UXl4WFFVRnhSQ3hGUVVGQk8wRkJSV3BITEVsQlFVRXNUVUZCVFN4blFrRkJaMElzVjBGQldTeERRVUZCTEV0QlFVRXNTMEZCVlN4clFrRkJjMElzU1VGQlFTeEpRVUZCTEVOQlFVc3NUVUZCVFN4SlFVRlRMRXRCUVVFc2FVSkJRVUVzUTBGQlFUdEJRVVYwUml4SlFVRkJMRWxCUTBVc1NVRkJTeXhEUVVGQkxHdENRVUZCTEVsQlEwd3NWMEZCV1N4RFFVRkJMRXRCUVVFc1MwRkJWU3hKUVVGTExFTkJRVUVzUzBGQlFTeERRVUZOTEV0QlEycERMRWxCUVVFc1YwRkJRU3hEUVVGWkxFbEJRVk1zUzBGQlFTeEpRVUZCTEVOQlFVc3NTMEZCVFN4RFFVRkJMRWxCUVVFc1NVRkRhRU1zUTBGQlF5eGhRVU5FTEVWQlFVRTdRVUZEUVN4TlFVRlpMRmRCUVVFc1EwRkJRU3hMUVVGQkxFZEJRVkVzUzBGQlN5eExRVUZOTEVOQlFVRXNTMEZCUVN4RFFVRkJPMEZCUXk5Q0xFMUJRVmtzVjBGQlFTeERRVUZCTEVsQlFVRXNSMEZCVHl4TFFVRkxMRXRCUVUwc1EwRkJRU3hKUVVGQkxFTkJRVUU3UVVGQlFTeExRVU5vUXp0QlFVVkJMRWxCUVVFc1NVRkJRU3hEUVVGTExHdENRVUZ4UWl4SFFVRkJMRXRCUVVFc1EwRkJRVHRCUVVGQkxFZEJRelZDTzBGQlFVRXNSVUZGVHl4UlFVRXdRaXhIUVVGQk8wRkJReTlDTEVsQlFVa3NTVUZCUVN4SlFVRkJMRU5CUVVzc1lVRkJaU3hGUVVGQk8wRkJRM1JDTEUxQlFVa3NTVUZCUVN4SlFVRkJMRU5CUVVzc1RVRkJUU3hSUVVGVkxFVkJRVUU3UVVGRGRrSXNVVUZCUVN4UFFVRlBMRWxCUVVrc1kwRkJRU3hEUVVGbExFbEJRVXNzUTBGQlFTeExRVUZCTEVOQlFVMHNWVUZCVlN4SlFVRkpMRU5CUVVFc1EwRkJRVHRCUVVGQkxFOUJRM0pFTzBGQlJVRXNUVUZCUVN4UFFVRlBMRXRCUVVzc1MwRkJUU3hEUVVGQkxFOUJRVUVzUTBGQlVTeEpRVUZKTEVOQlFVTXNRMEZCUVN4TFFVRk5MRVZCUVVVc1MwRkJTeXhEUVVGQkxFTkJRVUU3UVVGQlFTeExRVU01UXp0QlFVVkJMRWxCUVVFc1QwRkJUeXhMUVVGTExFdEJRVTBzUTBGQlFTeExRVUZCTEVOQlFVRTdRVUZCUVN4SFFVTndRanRCUVVGQkxFVkJSVThzV1VGQmRVSXNSMEZCUVR0QlFVTTFRaXhKUVVGSkxFbEJRVUVzU1VGQlFTeERRVUZMTEdGQlFXVXNSVUZCUVR0QlFVTjBRaXhOUVVGUExFOUJRVUVzYVVKQlFVRXNRMEZCUVR0QlFVRkJMRXRCUTFRN1FVRkZRU3hKUVVGQkxFbEJRVWtzUzBGQlRTeERRVUZCTEU5QlFVRXNRMEZCVVN4SlFVRkxMRU5CUVVFc1MwRkJRU3hEUVVGTkxFbEJRVWtzUTBGQlJ5eEZRVUZCTzBGQlEyeERMRTFCUVVFc1QwRkJUeXhKUVVGTExFTkJRVUVzUzBGQlFTeERRVUZOTEVsQlFVc3NRMEZCUVN4SlFVRkJMRU5CUVVzc1MwRkJTeXhEUVVGQkxFTkJRVUU3UVVGQlFTeExRVU51UXp0QlFVVkJMRWxCUVU4c1QwRkJRU3hOUVVGQkxFTkJRVThzU1VGQlN5eERRVUZCTEV0QlFVRXNRMEZCVFN4SlFVRkpMRU5CUVVFc1EwRkJRVHRCUVVGQkxFZEJReTlDTzBGQlFVRXNSVUZGVHl4WFFVRmpMRWRCUVVFN1FVRkRia0lzU1VGQlRTeE5RVUZCTEV0QlFVRXNSMEZCVVN4TFFVRkxMRXRCUVUwc1EwRkJRU3hMUVVGQkxFTkJRVUU3UVVGRGVrSXNTVUZCUVN4UFFVRlBMRlZCUVZVc2EwSkJRWFZDTEVsQlFVRXNTMEZCUVN4RFFVRk5MRkZCUVZFc1MwRkJTeXhEUVVGQkxFbEJRVXNzVFVGQlRTeERRVUZQTEVOQlFVRXNTMEZCUVN4clFrRkJRU3hEUVVGQk8wRkJRVUVzUjBGREwwVTdRVUZCUVN4RlFVVlBMSEZDUVVGeFFpeFBRVUZuUXl4RlFVRkJPMEZCUXpGRUxFbEJRVWtzU1VGQlFTeEpRVUZCTEVOQlFVc3NUVUZCVFN4WlFVRmpMRVZCUVVFN1FVRkRNMElzVFVGQlR5eFBRVUZCTEVWQlFVVXNUMEZCVHl4RFFVRkRMR3RDUVVGclFpeEhRVUZITEVsQlFVMHNSVUZCUVN4RFFVRkRMR2xDUVVGcFFpeERRVUZGTEVWQlFVRXNRMEZCUVR0QlFVRkJMRXRCUTJ4RkxFMUJRVUVzU1VGQlZ5eFBRVUZSTEVOQlFVRXNUVUZCUVN4SFFVRlRMRU5CUVVjc1JVRkJRVHRCUVVNM1FpeE5RVUZCTEU5QlFVOHNSVUZCUlN4TFFVRkJMRVZCUVU4c1EwRkJReXhQUVVGQkxFTkJRVkVzUTBGQlJ5eERRVUZCTEVOQlFVRXNTMEZCU3l4RFFVRkhMRVZCUVVFc1NVRkJRU3hGUVVGTkxFTkJRVU1zVDBGQlFTeERRVUZSTEVOQlFVY3NRMEZCUVN4RFFVRkJMRXRCUVVzc1EwRkJSU3hGUVVGQkxFTkJRVUU3UVVGQlFTeExRVU40UkN4TlFVRkJPMEZCUTB3c1RVRkJRU3hQUVVGUExFVkJRVVVzUzBGQlR5eEZRVUZCTEVWQlFVa3NSVUZCUVN4SlFVRkJMRVZCUVUwc1JVRkJSeXhGUVVGQkxFTkJRVUU3UVVGQlFTeExRVU12UWp0QlFVRkJMRWRCUTBZN1FVRkJRU3hGUVV0UExHRkJRVUVzUTBGQll5eFBRVUZ6UWl4SlFVRnpRaXhGUVVGQk8wRkJSUzlFTEVsQlFVRXNTVUZCU1N4VlFVRlZMRWxCUVVzc1EwRkJRU3hMUVVGQkxFTkJRVTBzVTBGQlV5eEpRVUZUTEV0QlFVRXNTVUZCUVN4RFFVRkxMRTFCUVUwc1NVRkJUU3hGUVVGQk8wRkJRekZFTEUxQlFVRXNUMEZCUVR0QlFVRkJMRXRCUTBZN1FVRkZRU3hKUVVGQkxFbEJRVWtzUTBGQlF5eEpRVUZOTEVWQlFVRTdRVUZEVkN4TlFVRkpMRWxCUVVFc1MwRkJRU3hEUVVGTkxFOUJRVkVzUTBGQlFTeExRVUZMTEVOQlFVY3NSVUZCUVR0QlFVTjRRaXhSUVVGQkxFbEJRVUVzUjBGQlR5eE5RVUZOTEVkQlFVa3NRMEZCUVN4RFFVRkRMRTFCUVUwc1NVRkJTeXhEUVVGQkxIRkNRVUZCTEVOQlFYTkNMRU5CUVVNc1EwRkJReXhEUVVGQkxFTkJRVUU3UVVGQlFTeFBRVU5vUkN4TlFVRkJPMEZCUTB3c1VVRkJUeXhKUVVGQkxFZEJRVUVzU1VGQlFTeERRVUZMTEhOQ1FVRnpRaXhMUVVGTExFTkJRVUVzUTBGQlFUdEJRVUZCTEU5QlEzcERPMEZCUVVFc1MwRkRSanRCUVVWQkxFbEJRVWtzU1VGQlFTeExRVUZCTEVOQlFVMHNUMEZCVVN4RFFVRkJMRXRCUVVzc1EwRkJSeXhGUVVGQk8wRkJSWGhDTEUxQlFVa3NTVUZCUVN4TFFVRkJMRU5CUVUwc1YwRkJWeXhEUVVGSExFVkJRVUU3UVVGRGRFSXNVVUZCUVN4TlFVRk5MRXRCUVZFc1IwRkJRU3hKUVVGQkxFTkJRVXNzYjBKQlFYRkNMRU5CUVVFc1NVRkJRU3hEUVVGTExFMUJRVTBzVDBGQlR5eERRVUZCTEVOQlFVRTdRVUZETVVRc1VVRkJRU3hMUVVGQkxFZEJRVkVzUzBGQlRTeERRVUZCTEV0QlFVRXNRMEZCUVR0QlFVTmtMRkZCUVVFc1NVRkJRU3hIUVVGUExFdEJRVTBzUTBGQlFTeEpRVUZCTEVOQlFVRTdRVUZCUVN4UFFVTm1PMEZCUjBFc1RVRkJRU3hKUVVGSkxFdEJRVTBzUTBGQlFTeExRVUZCTEVOQlFVMHNUVUZCVXl4SFFVRkJMRU5CUVVFc1EwRkJRU3hMUVVGUExHdENRVUZ2UWl4RlFVRkJPMEZCUTJ4RUxGRkJRVUVzUzBGQlFTeEhRVUZSTEVOQlFVTXNhMEpCUVd0Q0xFTkJRVUVzUTBGQlFUdEJRVU16UWl4UlFVRkJMRWxCUVVFc1IwRkJUeXhEUVVGRExHbENRVUZwUWl4RFFVRkJMRU5CUVVFN1FVRkJRU3hwUWtGSGJFSXNTMEZCVFN4RFFVRkJMRU5CUVVFc1EwRkJRU3hMUVVGUExHdENRVUZ6UWl4SlFVRkJMRXRCUVVFc1EwRkJUU3hUUVVGVExFTkJRVWNzUlVGQlFUdEJRVU0xUkN4UlFVRkJMRXRCUVVFc1EwRkJUU3hMUVVGTkxFVkJRVUVzUTBGQlFUdEJRVU5hTEZGQlFVa3NTVUZCUVN4TFFVRkJMRU5CUVUwc1QwRkJVU3hEUVVGQkxFbEJRVWtzUTBGQlJ5eEZRVUZCTzBGQlEzWkNMRlZCUVVFc1NVRkJRU3hEUVVGTExFdEJRVTBzUlVGQlFTeERRVUZCTzBGQlFVRXNVMEZEWWp0QlFVRkJMRTlCUTBZN1FVRkJRU3hMUVVOR08wRkJSMEVzU1VGQlNTeEpRVUZCTEU5QlFVRXNRMEZCVVN4TFFVRlBMRVZCUVVFc1NVRkJRU3hEUVVGTExFdEJRVTBzUTBGQlFTeExRVUZMTEVOQlFVc3NTVUZCUVN4UFFVRkJMRU5CUVZFc1NVRkJUU3hGUVVGQkxFbEJRVUVzUTBGQlN5eExRVUZOTEVOQlFVRXNTVUZCU1N4RFFVRkhMRVZCUVVFN1FVRkRkRVVzVFVGQlFTeFBRVUZCTzBGQlFVRXNTMEZEUmp0QlFVVkJMRWxCUVVFc1NVRkJRU3hEUVVGTExHVkJRV1VzUlVGQlJTeExRVUZCTEVWQlFVOHNTVUZCVFN4RlFVRkJMRTlCUVVFc1JVRkJVeXhQUVVGUExFTkJRVUVzUTBGQlFUdEJRVU51UkN4SlFVRkJMRWxCUVVFc1EwRkJTeXhaUVVGaExFTkJRVUVzU1VGQlNTdzRRa0ZCSzBJc1EwRkJRU3hKUVVGSkxFZEJRVWNzU1VGQlNTeERRVUZCTEVOQlFVRTdRVUZCUVN4SFFVTnNSVHRCUVVGQkxFVkJSVkVzYzBKQlFYTkNMRXRCUVdsRUxFVkJRVUU3UVVGRE4wVXNTVUZCUVN4SlFVRkpMRlZCUVZVc2EwSkJRVzlDTEVWQlFVRTdRVUZEYUVNc1RVRkJUeXhQUVVGQkxHbENRVUZCTEVOQlFVRTdRVUZCUVN4TFFVTlVPMEZCUlVFc1NVRkJUU3hOUVVGQkxFMUJRVUVzUjBGQlV5eExRVUZMTEV0QlFVMHNRMEZCUVN4UFFVRkJMRU5CUVZFc1MwRkJTeXhEUVVGRExFTkJRVUVzUzBGQlRTeERRVUZGTEVOQlFVRXNTMEZCUVN4TFFVRlZMRXRCUVVzc1EwRkJRU3hEUVVGQk8wRkJReTlFTEVsQlFVRXNTVUZCU1N4TlFVRlJMRVZCUVVFN1FVRkRWaXhOUVVGQkxFOUJRVThzVFVGQlR5eERRVUZCTEV0QlFVRXNRMEZCUVR0QlFVRkJMRXRCUTJoQ08wRkJSVUVzU1VGQlRTeE5RVUZCTEdGQlFVRXNSMEZCWjBJc1MwRkJTeXhMUVVGTkxFTkJRVUVzVDBGQlFTeERRVUZSTEV0QlFVc3NRMEZCUXl4RFFVRkJMRXRCUVUwc1EwRkJSU3hEUVVGQkxFdEJRVUVzUzBGQlZTeExRVUZMTEVOQlFVRXNRMEZCUVR0QlFVTjBSU3hKUVVGQkxFbEJRVWtzWVVGQlpTeEZRVUZCTzBGQlEycENMRTFCUVVFc1QwRkJUeXhoUVVGakxFTkJRVUVzUzBGQlFTeERRVUZCTzBGQlFVRXNTMEZEZGtJN1FVRkZRU3hKUVVGUExFOUJRVUVzUzBGQlFTeERRVUZCTzBGQlFVRXNSMEZEVkR0QlFVRkJMRVZCUzFFc1pVRkJaU3hMUVVGNVF5eEZRVUZCTzBGQlF6bEVMRWxCUVVFc2FVSkJRVUVzUTBGQk1rTXNUVUZCVFN4TFFVRkxMRU5CUVVFc1EwRkJRVHRCUVVGQkxFZEJRM2hFTzBGQlFVRXNSVUZGVHl4dFFrRkJOa01zUjBGQlFUdEJRVU5zUkN4SlFVRkpMRWxCUVVFc1QwRkJRU3hIUVVGVkxFdEJRVXNzUzBGQlRTeERRVUZCTEU5QlFVRXNRMEZCUVR0QlFVVjZRaXhKUVVGSkxFbEJRVUVzU1VGQlFTeERRVUZMTEUxQlFVMHNWVUZCV1N4RlFVRkJPMEZCUTNwQ0xFMUJRVlVzVDBGQlFTeEhRVUZCTEVOQlFVTXNSVUZCUlN4TFFVRlBMRVZCUVVFc2EwSkJRVUVzUlVGQmIwSXNUMEZCVHl4cFFrRkJhMElzUlVGQlFTeEZRVUZITEVkQlFVY3NUMEZCVHl4RFFVRkJMRU5CUVVFN1FVRkJRU3hMUVVOb1JqdEJRVVZCTEVsQlFVRXNTVUZCU1N4RFFVRkRMRXRCUVUwc1EwRkJRU3hQUVVGQkxFTkJRVkVzU1VGQlN5eERRVUZCTEV0QlFVRXNRMEZCVFN4TFFVRkxMRU5CUVVjc1JVRkJRVHRCUVVOd1F5eE5RVUZOTEUxQlFVRXNUMEZCUVN4SFFVRlZMRkZCUVZFc1NVRkJTeXhEUVVGQkxFTkJRVU1zVFVGQlRTeERRVUZGTEVOQlFVRXNTMEZCUVN4TFFVRlZMRWxCUVVzc1EwRkJRU3hMUVVGQkxFTkJRVTBzUzBGQlN5eERRVUZCTEVOQlFVRTdRVUZEYUVVc1RVRkJRU3hKUVVGSkxFTkJRVU1zVDBGQlV5eEZRVUZCTzBGQlExb3NVVUZCUVN4UFFVRkJMRWRCUVZVc1EwRkJReXhGUVVGRkxFdEJRVThzUlVGQlFTeEpRVUZCTEVOQlFVc3NUVUZCVFN4TFFVRlBMRVZCUVVFc1MwRkJRU3hGUVVGUExFMUJRVThzUTBGQlFTeEpRVUZCTEVOQlFVc3NTMEZCVFN4RFFVRkJMRWxCUVVrc1EwRkJSU3hGUVVGQkxFVkJRVWNzUjBGQlJ5eFBRVUZQTEVOQlFVRXNRMEZCUVR0QlFVRkJMRTlCUTNCR08wRkJRVUVzUzBGRFJqdEJRVVZCTEVsQlFVOHNUMEZCUVN4UFFVRkJMRU5CUVVFN1FVRkJRU3hIUVVOVU8wRkJRVUVzUlVGRlR5eGpRVUZwUWl4SFFVRkJPMEZCUTNSQ0xFbEJRVUVzU1VGQlFTeERRVUZMTEdkQ1FVRm5RaXhGUVVGRkxFTkJRVVVzUTBGQlFTeFRRVUZCTEVOQlFWVXNRMEZCUXl4UFFVRlpMRXRCUVVFN1FVRkRPVU1zVFVGQlFTeEpRVUZCTEVOQlFVc3NNa0pCUVRKQ0xFOUJRVThzUTBGQlFTeERRVUZCTzBGQlFVRXNTMEZEZUVNc1EwRkJRU3hEUVVGQk8wRkJRVUVzUjBGRFNEdEJRVTFHTEVOQlFVRTdRVUZMUVN4VFFVRlRMSGxDUVVGQkxFTkJRMUFzV1VGRFFTeEZRVUZCTEZkQlFVRXNSVUZEUVN4UFFVTkJMRVZCUVVFN1FVRkRRU3hGUVVGSkxFbEJRVUVzVTBGQlFTeERRVUZCTzBGQlJVb3NSVUZCUVN4TFFVRkJMRTFCUVZjc1VVRkJVU3hQUVVGVExFVkJRVUU3UVVGRE1VSXNTVUZCU1N4SlFVRkJMRWxCUVVFc1EwRkJTeXhWUVVGVkxGbEJRV01zUlVGQlFUdEJRVU12UWl4TlFVRlBMRTlCUVVFc1NVRkJRU3hEUVVGQk8wRkJRVUVzUzBGRFZEdEJRVWRCTEVsQlFVa3NTVUZCUVN4SlFVRkJMRU5CUVVzc1ZVRkJWU3hYUVVGaExFVkJRVUU3UVVGRE9VSXNUVUZCV1N4VFFVRkJMRWRCUVVFc1NVRkJRU3hEUVVGQk8wRkJRVUVzUzBGRFpEdEJRVUZCTEVkQlEwWTdRVUZGUVN4RlFVRlBMRTlCUVVFc1UwRkJRU3hEUVVGQk8wRkJRMVFzUTBGQlFUdEJRVVZQTEUxQlFVMHNkMEpCUldJc1EwRkJRVHRCUVVGQkxFVkJRMU1zV1VGQmIwSXNXVUZCTUVNc1JVRkJRVHRCUVVFeFF5eEpRVUZCTEVsQlFVRXNRMEZCUVN4WlFVRkJMRWRCUVVFc1dVRkJRU3hEUVVGQk8wRkJRVUVzUjBGQk1rTTdRVUZCUVN4RlFVVTVSQ3hOUVVGcFFpeEhRVUZCTzBGQlEzWkNMRWxCUVU4c1QwRkJRU3hEUVVGQkxFbEJRVUVzUlVGQlR5eEpRVUZMTEVOQlFVRXNXVUZCUVN4RFFVRmhMRXRCUVUwc1EwRkJRU3hKUVVGQkxFTkJRVUVzUTBGQlFTeERRVUZCTzBGQlFVRXNSMEZEZUVNN1FVRkJRU3hGUVVWUExFOUJRVzlDTEVkQlFVRTdRVUZEZWtJc1NVRkJTU3hKUVVGQkxFbEJRVUVzUTBGQlN5eFpRVUZoTEVOQlFVRXNTMEZCUVN4RFFVRk5MRmRCUVdFc1JVRkJRVHRCUVVOMlF5eE5RVUZCTEU5QlFVOHNSVUZCUXl4RFFVRkJPMEZCUVVFc1MwRkRWanRCUVVWQkxFbEJRVThzVDBGQlFTeERRVUZETEVsQlFVc3NRMEZCUVN4TlFVRkJMRVZCUVZFc1EwRkJRU3hEUVVGQk8wRkJRVUVzUjBGRGRrSTdRVUZCUVN4RlFVVlBMRmRCUVc5RExFZEJRVUU3UVVGRGVrTXNTVUZCU1N4SlFVRkJMRWxCUVVFc1EwRkJTeXhaUVVGaExFTkJRVUVzUzBGQlFTeERRVUZOTEZkQlFXRXNSVUZCUVR0QlFVTjJReXhOUVVGQkxFOUJRVThzUlVGQlF5eERRVUZCTzBGQlFVRXNTMEZEVmp0QlFVVkJMRWxCUVVFc1NVRkJTU3hSUVVGeFF5eEhRVUZCTEVsQlFVRXNRMEZCUVR0QlFVTjZReXhKUVVGSkxFbEJRVUVzUzBGQlFTeEhRVUZSTEVsQlFVc3NRMEZCUVN4WlFVRkJMRU5CUVdFc1MwRkJUU3hEUVVGQkxFdEJRVUVzUTBGQlFUdEJRVVZ3UXl4SlFVRkpMRWxCUVVFc1MwRkJRU3hEUVVGTkxFOUJRVkVzUTBGQlFTeExRVUZMTEVOQlFVY3NSVUZCUVR0QlFVTjRRaXhOUVVGWExGRkJRVUVzUjBGQlFTeExRVUZCTEVOQlFVMHNTVUZCU1N4TlFVRk5MRU5CUVVFc1EwRkJRVHRCUVVGQkxFdEJRMnBDTEUxQlFVRXNTVUZCVFN4SlFVRkxMRU5CUVVFc1dVRkJRU3hEUVVGaExFMUJRVTBzVDBGQlZTeEZRVUZCTzBGQlJXeEVMRTFCUVZjc1VVRkJRU3hIUVVGQkxFTkJRVU1zVFVGQlR5eERRVUZCTEV0QlFVc3NRMEZCUXl4RFFVRkJMRU5CUVVFN1FVRkJRU3hMUVVOd1FpeE5RVUZCTzBGQlEwd3NUVUZCUVN4UlFVRkJMRWRCUVZjc1QwRkJUeXhMUVVGTExFTkJRVUVzUTBGQlFUdEJRVUZCTEV0QlEzcENPMEZCUlVFc1NVRkJRU3hQUVVGUExFVkJRVVVzUTBGQlF5eEpRVUZMTEVOQlFVRXNUVUZCUVN4TFFVRlhMRkZCUVZNc1JVRkJRU3hEUVVGQk8wRkJRVUVzUjBGRGNrTTdRVUZCUVN4RlFVVlBMR05CUVdNc1RVRkJiME1zUlVGQlFUdEJRVU4yUkN4SlFVRkpMRWxCUVVFc1VVRkJRU3hIUVVGWExFMUJRVThzUTBGQlFTeEpRVUZCTEVOQlFVc3NUVUZCVHl4RlFVRkJMRU5CUVVFc1EwRkJRVHRCUVVWc1F5eEpRVUZCTEVsQlFVa3NXVUZCV1N4SlFVRk5MRVZCUVVFN1FVRkZjRUlzVFVGQlNTeEpRVUZCTEVsQlFVRXNRMEZCU3l4WlFVRmhMRU5CUVVFc1MwRkJRU3hEUVVGTkxGVkJRVmtzUlVGQlFUdEJRVU4wUXl4UlFVRkJMRkZCUVVFc1IwRkJWeXgzUWtGQmQwSXNVVUZCVVN4RFFVRkJMRU5CUVVFN1FVRkJRU3hQUVVNM1F6dEJRVWxCTEUxQlFVa3NTVUZCUVN4SlFVRkJMRU5CUVVzc1lVRkJZU3hMUVVGTkxFTkJRVUVzVVVGQlFTeEpRVUZaTEV0QlFVc3NXVUZCWVN4RFFVRkJMRXRCUVVFc1EwRkJUU3hoUVVGaExGRkJRVlVzUlVGQlFUdEJRVU55Uml4UlFVRlhMRkZCUVVFc1IwRkJRU3hyUWtGQlFTeERRVUZCTzBGQlFVRXNUMEZEWWp0QlFVMUJMRTFCUVVrc1NVRkJRU3hEUVVGRExFbEJRVXNzUTBGQlFTeFpRVUZCTEVOQlFXRXNVVUZCVlN4RlFVRkJPMEZCUXk5Q0xGRkJRVUVzU1VGQlFTeERRVUZMTEdGQlFXRXNhMEpCUVhGQ0xFZEJRVUVzU1VGQlFTeERRVUZCTzBGQlFVRXNUMEZEZWtNN1FVRkZRU3hOUVVGTExFbEJRVUVzUTBGQlFTeFpRVUZCTEVOQlFXRXNZMEZCWXl4UlFVRlJMRU5CUVVFc1EwRkJRVHRCUVVGQkxFdEJRekZETzBGQlFVRXNSMEZEUmp0QlFVTkdMRU5CUVVFN1FVRkZRU3hUUVVGVExIZENRVUYzUWl4TFFVRXdRaXhGUVVGQk8wRkJRM3BFTEVWQlFVRXNTVUZCU1N4UFFVRlJMRU5CUVVFc1MwRkJTeXhEUVVGTExFbEJRVUVzUzBGQlFTeERRVUZOTEU5QlFVOHNhVUpCUVcxQ0xFVkJRVUU3UVVGRGNFUXNTVUZCUVN4UFFVRlBMRU5CUVVNc2EwSkJRV3RDTEVOQlFVRXNRMEZCUVR0QlFVRkJMRWRCUXpWQ0xFMUJRVUVzU1VGQlZ5eFZRVUZWTEdsQ1FVRnRRaXhGUVVGQk8wRkJRM1JETEVsQlFVOHNUMEZCUVN4clFrRkJRU3hEUVVGQk8wRkJRVUVzUjBGRFZEdEJRVVZCTEVWQlFVOHNUMEZCUVN4TFFVRkJMRU5CUVVFN1FVRkRWQ3hEUVVGQk8wRkJUVThzVFVGQlRTeGpRVUU0UXl4RFFVRkJPMEZCUVVFc1JVRkRiRVFzVjBGQlFTeERRVUZ2UWl4UlFVRjNRaXhUUVVFd1FpeEZRVUZCTzBGQlFXeEVMRWxCUVVFc1NVRkJRU3hEUVVGQkxFMUJRVUVzUjBGQlFTeE5RVUZCTEVOQlFVRTdRVUZCZDBJc1NVRkJRU3hKUVVGQkxFTkJRVUVzVTBGQlFTeEhRVUZCTEZOQlFVRXNRMEZCUVR0QlFVRkJMRWRCUVRKQ08wRkJRVUVzUlVGRmRrVXNWVUZCVlN4alFVRTJSQ3hGUVVGQk8wRkJRelZGTEVsQlFVa3NTVUZCUVN4alFVRkJMRXRCUVcxQ0xHbENRVUZwUWl4SlFVRk5MRVZCUVVFN1FVRkROVU1zVFVGQlR5eFBRVUZCTEdsQ1FVRkJMRU5CUVVFN1FVRkJRU3hMUVVOVU8wRkJSVUVzU1VGQlNTeEpRVUZCTEdOQlFVRXNTMEZCYlVJc2FVSkJRV2xDTEdGQlFXVXNSVUZCUVR0QlFVTnlSQ3hOUVVGUExFOUJRVUVzWTBGQlFTeERRVUZsTEVkQlFVa3NRMEZCUVN4blFrRkJRU3hEUVVGcFFpeGhRVUZoTEVOQlFVRXNRMEZCUlN4VFFVRlZMRU5CUVVFc1NVRkJRU3hEUVVGTExFMUJRVkVzUlVGQlFTeEZRVUZKTEVWQlFVRXNTVUZCUVN4RFFVRkxMRk5CUVZNc1EwRkJRU3hEUVVGQk8wRkJRVUVzUzBGRGNrYzdRVUZGUVN4SlFVRkpMRWxCUVVFc1kwRkJRU3hMUVVGdFFpeHBRa0ZCYVVJc1ZVRkJXU3hGUVVGQk8wRkJRMnhFTEUxQlFVOHNUMEZCUVN4alFVRkJMRU5CUVdVc1IwRkJTU3hEUVVGQkxHZENRVUZCTEVOQlFXbENMRlZCUVZVc1EwRkJRU3hEUVVGRkxGVkJRVlVzYVVKQlFXMUNMRVZCUVVFc1JVRkJTU3hGUVVGQkxFbEJRVUVzUTBGQlN5eFRRVUZUTEVOQlFVRXNRMEZCUVR0QlFVRkJMRXRCUTNoSE8wRkJSVUVzU1VGQlFTeFBRVUZQTEVsQlFVc3NRMEZCUVN4TlFVRkJMRU5CUVVFN1FVRkJRU3hIUVVOa08wRkJRMFk3T3pzN0luMD1cbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUE4Q08sTUFBZSwyQkFDWixlQUVWLENBQUE7RUFITyxXQUFBLEdBQUE7QUFBQSxJQUFBLEtBQUEsQ0FBQSxHQUFBLFNBQUEsQ0FBQSxDQUFBO0FBSUssSUFBQSxJQUFBLENBQUEsUUFBQSxHQUFzQyxJQUFJLHdCQUFBLENBQXlCLElBQUksQ0FBQSxDQUFBO0FBQUEsR0FBQTtFQWUxRSxpQkFBeUQsR0FBQTtBQUM5RCxJQUFBLE9BQU8sSUFBSyxDQUFBLGVBQUEsQ0FBZ0IsRUFBRSxDQUFFLENBQUEsSUFBQTtBQUM5QixNQUFBLEdBQUEsQ0FBSSxDQUFDLE9BQVksS0FBQTtBQUNmLFFBQUEsSUFBQSxDQUFLLDJCQUEyQixPQUFPLENBQUEsQ0FBQTtBQUN2QyxRQUFBLE9BQU8sRUFBQSxDQUFBO09BQ1IsQ0FBQTtBQUFBLEtBQUEsQ0FBQTtBQUNILEdBQUE7RUFHSyxRQUFpQixHQUFBO0FBQ3RCLElBQUEsSUFBQSxDQUFLLGNBQWUsQ0FBQSxFQUFFLE9BQVMsRUFBQSxLQUFBLEVBQU8sQ0FBQSxDQUFBO0FBQ3RDLElBQUEsTUFBTSxjQUFjLElB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
|