@grafana/scenes 6.7.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.
Files changed (331) hide show
  1. package/CHANGELOG.md +13 -0
  2. package/dist/esm/components/layout/CSSGrid/SceneCSSGridItem.js +33 -0
  3. package/dist/esm/dist/esm/behaviors/CursorSync.js +76 -0
  4. package/dist/esm/dist/esm/behaviors/LiveNowTimer.js +44 -0
  5. package/dist/esm/dist/esm/behaviors/SceneQueryController.js +14 -0
  6. package/dist/esm/dist/esm/components/EmbeddedScene.js +59 -0
  7. package/dist/esm/dist/esm/components/NestedScene.js +95 -0
  8. package/dist/esm/dist/esm/components/SceneApp/SceneApp.js +27 -0
  9. package/dist/esm/dist/esm/components/SceneApp/SceneAppPage.js +176 -0
  10. package/dist/esm/dist/esm/components/SceneApp/SceneAppPageView.js +104 -0
  11. package/dist/esm/dist/esm/components/SceneApp/utils.js +42 -0
  12. package/dist/esm/dist/esm/components/SceneByFrameRepeater.js +41 -0
  13. package/dist/esm/dist/esm/components/SceneByVariableRepeater.js +55 -0
  14. package/dist/esm/dist/esm/components/SceneCanvasText.js +32 -0
  15. package/dist/esm/dist/esm/components/SceneControlsSpacer.js +17 -0
  16. package/dist/esm/dist/esm/components/SceneDebugger/DebugDetails.js +82 -0
  17. package/dist/esm/dist/esm/components/SceneDebugger/DebugTreeNode.js +72 -0
  18. package/dist/esm/dist/esm/components/SceneDebugger/SceneDebugger.js +77 -0
  19. package/dist/esm/dist/esm/components/SceneReactObject.js +34 -0
  20. package/dist/esm/dist/esm/components/SceneRefreshPicker.js +205 -0
  21. package/dist/esm/dist/esm/components/SceneTimePicker.js +139 -0
  22. package/dist/esm/dist/esm/components/SceneTimeRangeCompare.js +240 -0
  23. package/dist/esm/dist/esm/components/SceneToolbarButton.js +33 -0
  24. package/dist/esm/dist/esm/components/VizPanel/VizPanel.js +406 -0
  25. package/dist/esm/dist/esm/components/VizPanel/VizPanelExploreButton.js +44 -0
  26. package/dist/esm/dist/esm/components/VizPanel/VizPanelMenu.js +59 -0
  27. package/dist/esm/dist/esm/components/VizPanel/VizPanelRenderer.js +285 -0
  28. package/dist/esm/dist/esm/components/VizPanel/VizPanelSeriesLimit.js +45 -0
  29. package/dist/esm/dist/esm/components/VizPanel/colorSeriesConfigFactory.js +72 -0
  30. package/dist/esm/dist/esm/components/VizPanel/registerRuntimePanelPlugin.js +11 -0
  31. package/dist/esm/dist/esm/components/VizPanel/seriesVisibilityConfigFactory.js +164 -0
  32. package/dist/esm/dist/esm/components/layout/CSSGrid/SceneCSSGridLayout.js +124 -0
  33. package/dist/esm/dist/esm/components/layout/LazyLoader.js +103 -0
  34. package/dist/esm/dist/esm/components/layout/SceneFlexLayout.js +135 -0
  35. package/dist/esm/dist/esm/components/layout/grid/SceneGridItem.js +30 -0
  36. package/dist/esm/dist/esm/components/layout/grid/SceneGridLayout.js +283 -0
  37. package/dist/esm/dist/esm/components/layout/grid/SceneGridLayoutRenderer.js +178 -0
  38. package/dist/esm/dist/esm/components/layout/grid/SceneGridRow.js +190 -0
  39. package/dist/esm/dist/esm/components/layout/grid/constants.js +7 -0
  40. package/dist/esm/dist/esm/components/layout/grid/utils.js +36 -0
  41. package/dist/esm/dist/esm/components/layout/split/SplitLayout.js +17 -0
  42. package/dist/esm/dist/esm/components/layout/split/SplitLayoutRenderer.js +29 -0
  43. package/dist/esm/dist/esm/components/layout/split/Splitter.js +386 -0
  44. package/dist/esm/dist/esm/core/SceneComponentWrapper.js +57 -0
  45. package/dist/esm/dist/esm/core/SceneDataNode.js +43 -0
  46. package/dist/esm/dist/esm/core/SceneObjectBase.js +286 -0
  47. package/dist/esm/dist/esm/core/SceneObjectRef.js +32 -0
  48. package/dist/esm/dist/esm/core/SceneTimeRange.js +231 -0
  49. package/dist/esm/dist/esm/core/events.js +11 -0
  50. package/dist/esm/dist/esm/core/sceneGraph/getTimeRange.js +10 -0
  51. package/dist/esm/dist/esm/core/sceneGraph/index.js +25 -0
  52. package/dist/esm/dist/esm/core/sceneGraph/sceneGraph.js +178 -0
  53. package/dist/esm/dist/esm/core/sceneGraph/utils.js +64 -0
  54. package/dist/esm/dist/esm/core/types.js +15 -0
  55. package/dist/esm/dist/esm/querying/DataLayersMerger.js +46 -0
  56. package/dist/esm/dist/esm/querying/ExtraQueryProvider.js +6 -0
  57. package/dist/esm/dist/esm/querying/RuntimeDataSource.js +6 -0
  58. package/dist/esm/dist/esm/querying/SceneDataLayerSet.js +100 -0
  59. package/dist/esm/dist/esm/querying/SceneQueryRunner.js +468 -0
  60. package/dist/esm/dist/esm/querying/extraQueryProcessingOperator.js +46 -0
  61. package/dist/esm/dist/esm/querying/getEnrichedDataRequest.js +12 -0
  62. package/dist/esm/dist/esm/querying/layers/SceneDataLayerBase.js +112 -0
  63. package/dist/esm/dist/esm/querying/layers/SceneDataLayerControls.js +51 -0
  64. package/dist/esm/dist/esm/querying/layers/annotations/AnnotationsDataLayer.js +130 -0
  65. package/dist/esm/dist/esm/querying/layers/annotations/filterAnnotations.js +85 -0
  66. package/dist/esm/dist/esm/querying/layers/annotations/standardAnnotationQuery.js +121 -0
  67. package/dist/esm/dist/esm/querying/layers/annotations/standardAnnotationsSupport.js +211 -0
  68. package/dist/esm/dist/esm/querying/layers/annotations/utils.js +77 -0
  69. package/dist/esm/dist/esm/querying/registerQueryWithController.js +41 -0
  70. package/dist/esm/dist/esm/services/SceneObjectUrlSyncConfig.js +30 -0
  71. package/dist/esm/dist/esm/services/UniqueUrlKeyMapper.js +45 -0
  72. package/dist/esm/dist/esm/services/UrlSyncManager.js +167 -0
  73. package/dist/esm/dist/esm/services/useUrlSync.js +29 -0
  74. package/dist/esm/dist/esm/services/utils.js +71 -0
  75. package/dist/esm/dist/esm/utils/ControlsLabel.js +107 -0
  76. package/dist/esm/dist/esm/utils/LoadingIndicator.js +19 -0
  77. package/dist/esm/dist/esm/utils/SafeSerializableSceneObject.js +39 -0
  78. package/dist/esm/dist/esm/utils/compatibility/setWindowGrafanaSceneContext.js +16 -0
  79. package/dist/esm/dist/esm/utils/date.js +15 -0
  80. package/dist/esm/dist/esm/utils/evaluateTimeRange.js +16 -0
  81. package/dist/esm/dist/esm/utils/explore.js +47 -0
  82. package/dist/esm/dist/esm/utils/getCompareSeriesRefId.js +4 -0
  83. package/dist/esm/dist/esm/utils/getDataSource.js +18 -0
  84. package/dist/esm/dist/esm/utils/getMessageFromError.js +24 -0
  85. package/dist/esm/dist/esm/utils/metricTree.js +53 -0
  86. package/dist/esm/dist/esm/utils/parseUrlParam.js +41 -0
  87. package/dist/esm/dist/esm/utils/utils.js +11 -0
  88. package/dist/esm/dist/esm/utils/wrapInSafeSerializableSceneObject.js +30 -0
  89. package/dist/esm/dist/esm/utils/writeSceneLog.js +12 -0
  90. package/dist/esm/dist/esm/variables/VariableDependencyConfig.js +150 -0
  91. package/dist/esm/dist/esm/variables/VariableValueRecorder.js +71 -0
  92. package/dist/esm/dist/esm/variables/adhoc/AdHocFilterBuilder.js +24 -0
  93. package/dist/esm/dist/esm/variables/adhoc/AdHocFilterRenderer.js +303 -0
  94. package/dist/esm/dist/esm/variables/adhoc/AdHocFiltersCombobox/AdHocFilterPill.js +162 -0
  95. package/dist/esm/dist/esm/variables/adhoc/AdHocFiltersCombobox/AdHocFiltersAlwaysWipCombobox.js +20 -0
  96. package/dist/esm/dist/esm/variables/adhoc/AdHocFiltersCombobox/AdHocFiltersCombobox.js +640 -0
  97. package/dist/esm/dist/esm/variables/adhoc/AdHocFiltersCombobox/AdHocFiltersComboboxRenderer.js +65 -0
  98. package/dist/esm/dist/esm/variables/adhoc/AdHocFiltersCombobox/DropdownItem.js +146 -0
  99. package/dist/esm/dist/esm/variables/adhoc/AdHocFiltersCombobox/MultiValuePill.js +114 -0
  100. package/dist/esm/dist/esm/variables/adhoc/AdHocFiltersCombobox/useFloatingInteractions.js +68 -0
  101. package/dist/esm/dist/esm/variables/adhoc/AdHocFiltersCombobox/utils.js +146 -0
  102. package/dist/esm/dist/esm/variables/adhoc/AdHocFiltersVariable.js +289 -0
  103. package/dist/esm/dist/esm/variables/adhoc/AdHocFiltersVariableUrlSyncHandler.js +76 -0
  104. package/dist/esm/dist/esm/variables/adhoc/getAdhocOptionSearcher.js +13 -0
  105. package/dist/esm/dist/esm/variables/adhoc/patchGetAdhocFilters.js +47 -0
  106. package/dist/esm/dist/esm/variables/components/VariableValueControl.js +23 -0
  107. package/dist/esm/dist/esm/variables/components/VariableValueInput.js +33 -0
  108. package/dist/esm/dist/esm/variables/components/VariableValueSelect.js +228 -0
  109. package/dist/esm/dist/esm/variables/components/VariableValueSelectors.js +72 -0
  110. package/dist/esm/dist/esm/variables/components/getOptionSearcher.js +15 -0
  111. package/dist/esm/dist/esm/variables/constants.js +9 -0
  112. package/dist/esm/dist/esm/variables/getEnrichedFiltersRequest.js +12 -0
  113. package/dist/esm/dist/esm/variables/groupby/GroupByVariable.js +259 -0
  114. package/dist/esm/dist/esm/variables/groupby/GroupByVariableUrlSyncHandler.js +63 -0
  115. package/dist/esm/dist/esm/variables/groupby/findActiveGroupByVariablesByUid.js +13 -0
  116. package/dist/esm/dist/esm/variables/interpolation/ScopedVarsVariable.js +40 -0
  117. package/dist/esm/dist/esm/variables/interpolation/defaults.js +21 -0
  118. package/dist/esm/dist/esm/variables/interpolation/fieldAccessorCache.js +13 -0
  119. package/dist/esm/dist/esm/variables/interpolation/formatRegistry.js +296 -0
  120. package/dist/esm/dist/esm/variables/interpolation/sceneInterpolator.js +87 -0
  121. package/dist/esm/dist/esm/variables/lookupVariable.js +20 -0
  122. package/dist/esm/dist/esm/variables/macros/AllVariablesMacro.js +57 -0
  123. package/dist/esm/dist/esm/variables/macros/contextMacros.js +43 -0
  124. package/dist/esm/dist/esm/variables/macros/dataMacros.js +134 -0
  125. package/dist/esm/dist/esm/variables/macros/index.js +26 -0
  126. package/dist/esm/dist/esm/variables/macros/templateProxies.js +51 -0
  127. package/dist/esm/dist/esm/variables/macros/timeMacros.js +86 -0
  128. package/dist/esm/dist/esm/variables/macros/types.js +11 -0
  129. package/dist/esm/dist/esm/variables/macros/urlMacros.js +56 -0
  130. package/dist/esm/dist/esm/variables/sets/SceneVariableSet.js +254 -0
  131. package/dist/esm/dist/esm/variables/types.js +11 -0
  132. package/dist/esm/dist/esm/variables/utils.js +172 -0
  133. package/dist/esm/dist/esm/variables/variants/ConstantVariable.js +38 -0
  134. package/dist/esm/dist/esm/variables/variants/CustomVariable.js +60 -0
  135. package/dist/esm/dist/esm/variables/variants/DataSourceVariable.js +88 -0
  136. package/dist/esm/dist/esm/variables/variants/IntervalVariable.js +117 -0
  137. package/dist/esm/dist/esm/variables/variants/MultiValueVariable.js +295 -0
  138. package/dist/esm/dist/esm/variables/variants/TestVariable.js +117 -0
  139. package/dist/esm/dist/esm/variables/variants/TextBoxVariable.js +61 -0
  140. package/dist/esm/dist/esm/variables/variants/query/QueryVariable.js +139 -0
  141. package/dist/esm/dist/esm/variables/variants/query/createQueryVariableRunner.js +129 -0
  142. package/dist/esm/dist/esm/variables/variants/query/guards.js +28 -0
  143. package/dist/esm/dist/esm/variables/variants/query/toMetricFindValues.js +96 -0
  144. package/dist/esm/dist/esm/variables/variants/query/utils.js +124 -0
  145. package/dist/esm/index.js +1 -1
  146. package/dist/esm/index.js.map +1 -1
  147. package/dist/esm/querying/DataProviderSharer.js +39 -0
  148. package/dist/esm/src/behaviors/ActWhenVariableChanged.js +27 -0
  149. package/dist/esm/src/behaviors/CursorSync.js +76 -0
  150. package/dist/esm/src/behaviors/LiveNowTimer.js +44 -0
  151. package/dist/esm/src/behaviors/SceneQueryController.js +60 -0
  152. package/dist/esm/src/behaviors/index.js +5 -0
  153. package/dist/esm/src/components/EmbeddedScene.js +59 -0
  154. package/dist/esm/src/components/NestedScene.js +95 -0
  155. package/dist/esm/src/components/SceneApp/SceneApp.js +37 -0
  156. package/dist/esm/src/components/SceneApp/SceneAppPage.js +176 -0
  157. package/dist/esm/src/components/SceneApp/SceneAppPageView.js +104 -0
  158. package/dist/esm/src/components/SceneApp/utils.js +42 -0
  159. package/dist/esm/src/components/SceneByFrameRepeater.js +41 -0
  160. package/dist/esm/src/components/SceneByVariableRepeater.js +55 -0
  161. package/dist/esm/src/components/SceneCanvasText.js +32 -0
  162. package/dist/esm/src/components/SceneControlsSpacer.js +17 -0
  163. package/dist/esm/src/components/SceneDebugger/DebugDetails.js +82 -0
  164. package/dist/esm/src/components/SceneDebugger/DebugTreeNode.js +72 -0
  165. package/dist/esm/src/components/SceneDebugger/SceneDebugger.js +77 -0
  166. package/dist/esm/src/components/SceneReactObject.js +34 -0
  167. package/dist/esm/src/components/SceneRefreshPicker.js +205 -0
  168. package/dist/esm/src/components/SceneTimePicker.js +139 -0
  169. package/dist/esm/src/components/SceneTimeRangeCompare.js +240 -0
  170. package/dist/esm/src/components/SceneToolbarButton.js +33 -0
  171. package/dist/esm/src/components/VizPanel/VizPanel.js +406 -0
  172. package/dist/esm/src/components/VizPanel/VizPanelExploreButton.js +44 -0
  173. package/dist/esm/src/components/VizPanel/VizPanelMenu.js +59 -0
  174. package/dist/esm/src/components/VizPanel/VizPanelRenderer.js +285 -0
  175. package/dist/esm/src/components/VizPanel/VizPanelSeriesLimit.js +45 -0
  176. package/dist/esm/src/components/VizPanel/colorSeriesConfigFactory.js +72 -0
  177. package/dist/esm/src/components/VizPanel/registerRuntimePanelPlugin.js +56 -0
  178. package/dist/esm/src/components/VizPanel/seriesVisibilityConfigFactory.js +164 -0
  179. package/dist/esm/src/components/layout/CSSGrid/SceneCSSGridLayout.js +124 -0
  180. package/dist/esm/src/components/layout/LazyLoader.js +103 -0
  181. package/dist/esm/src/components/layout/SceneFlexLayout.js +135 -0
  182. package/dist/esm/src/components/layout/grid/SceneGridItem.js +30 -0
  183. package/dist/esm/src/components/layout/grid/SceneGridLayout.js +283 -0
  184. package/dist/esm/src/components/layout/grid/SceneGridLayoutRenderer.js +178 -0
  185. package/dist/esm/src/components/layout/grid/SceneGridRow.js +190 -0
  186. package/dist/esm/src/components/layout/grid/constants.js +7 -0
  187. package/dist/esm/src/components/layout/grid/utils.js +36 -0
  188. package/dist/esm/src/components/layout/split/SplitLayout.js +17 -0
  189. package/dist/esm/src/components/layout/split/SplitLayoutRenderer.js +29 -0
  190. package/dist/esm/src/components/layout/split/Splitter.js +386 -0
  191. package/dist/esm/src/core/PanelBuilders/FieldConfigBuilder.js +100 -0
  192. package/dist/esm/src/core/PanelBuilders/FieldConfigBuilders.js +75 -0
  193. package/dist/esm/src/core/PanelBuilders/FieldConfigOverridesBuilder.js +75 -0
  194. package/dist/esm/src/core/PanelBuilders/PanelOptionsBuilder.js +22 -0
  195. package/dist/esm/src/core/PanelBuilders/PanelOptionsBuilders.js +85 -0
  196. package/dist/esm/src/core/PanelBuilders/StandardFieldConfigBuilders.js +52 -0
  197. package/dist/esm/src/core/PanelBuilders/VizConfigBuilder.js +78 -0
  198. package/dist/esm/src/core/PanelBuilders/VizConfigBuilders.js +114 -0
  199. package/dist/esm/src/core/PanelBuilders/VizPanelBuilder.js +162 -0
  200. package/dist/esm/src/core/PanelBuilders/index.js +116 -0
  201. package/dist/esm/src/core/SceneComponentWrapper.js +57 -0
  202. package/dist/esm/src/core/SceneDataNode.js +43 -0
  203. package/dist/esm/src/core/SceneObjectBase.js +286 -0
  204. package/dist/esm/src/core/SceneObjectRef.js +32 -0
  205. package/dist/esm/src/core/SceneTimeRange.js +231 -0
  206. package/dist/esm/src/core/SceneTimeRangeTransformerBase.js +35 -0
  207. package/dist/esm/src/core/SceneTimeZoneOverride.js +63 -0
  208. package/dist/esm/src/core/events.js +11 -0
  209. package/dist/esm/src/core/sceneGraph/getTimeRange.js +10 -0
  210. package/dist/esm/src/core/sceneGraph/index.js +25 -0
  211. package/dist/esm/src/core/sceneGraph/sceneGraph.js +178 -0
  212. package/dist/esm/src/core/sceneGraph/utils.js +64 -0
  213. package/dist/esm/src/core/types.js +15 -0
  214. package/dist/esm/src/index.js +108 -0
  215. package/dist/esm/src/querying/DataLayersMerger.js +46 -0
  216. package/dist/esm/src/querying/DataProviderProxy.js +37 -0
  217. package/dist/esm/src/querying/DataProviderSharer.js +108 -0
  218. package/dist/esm/src/querying/ExtraQueryProvider.js +6 -0
  219. package/dist/esm/src/querying/RuntimeDataSource.js +49 -0
  220. package/dist/esm/src/querying/SceneDataLayerSet.js +100 -0
  221. package/dist/esm/src/querying/SceneDataTransformer.js +178 -0
  222. package/dist/esm/src/querying/SceneQueryRunner.js +468 -0
  223. package/dist/esm/src/querying/extraQueryProcessingOperator.js +46 -0
  224. package/dist/esm/src/querying/getEnrichedDataRequest.js +12 -0
  225. package/dist/esm/src/querying/layers/SceneDataLayerBase.js +112 -0
  226. package/dist/esm/src/querying/layers/SceneDataLayerControls.js +51 -0
  227. package/dist/esm/src/querying/layers/annotations/AnnotationsDataLayer.js +130 -0
  228. package/dist/esm/src/querying/layers/annotations/filterAnnotations.js +85 -0
  229. package/dist/esm/src/querying/layers/annotations/standardAnnotationQuery.js +121 -0
  230. package/dist/esm/src/querying/layers/annotations/standardAnnotationsSupport.js +211 -0
  231. package/dist/esm/src/querying/layers/annotations/utils.js +77 -0
  232. package/dist/esm/src/querying/layers/index.js +2 -0
  233. package/dist/esm/src/querying/registerQueryWithController.js +41 -0
  234. package/dist/esm/src/services/SceneObjectUrlSyncConfig.js +30 -0
  235. package/dist/esm/src/services/UniqueUrlKeyMapper.js +45 -0
  236. package/dist/esm/src/services/UrlSyncContextProvider.js +17 -0
  237. package/dist/esm/src/services/UrlSyncManager.js +167 -0
  238. package/dist/esm/src/services/useUrlSync.js +29 -0
  239. package/dist/esm/src/services/utils.js +75 -0
  240. package/dist/esm/src/utils/ControlsLabel.js +107 -0
  241. package/dist/esm/src/utils/LoadingIndicator.js +19 -0
  242. package/dist/esm/src/utils/SafeSerializableSceneObject.js +39 -0
  243. package/dist/esm/src/utils/compatibility/setWindowGrafanaSceneContext.js +16 -0
  244. package/dist/esm/src/utils/date.js +15 -0
  245. package/dist/esm/src/utils/evaluateTimeRange.js +16 -0
  246. package/dist/esm/src/utils/explore.js +47 -0
  247. package/dist/esm/src/utils/getCompareSeriesRefId.js +4 -0
  248. package/dist/esm/src/utils/getDataSource.js +18 -0
  249. package/dist/esm/src/utils/getMessageFromError.js +24 -0
  250. package/dist/esm/src/utils/metricTree.js +53 -0
  251. package/dist/esm/src/utils/parseUrlParam.js +41 -0
  252. package/dist/esm/src/utils/utils.js +11 -0
  253. package/dist/esm/src/utils/wrapInSafeSerializableSceneObject.js +30 -0
  254. package/dist/esm/src/utils/writeSceneLog.js +12 -0
  255. package/dist/esm/src/variables/VariableDependencyConfig.js +150 -0
  256. package/dist/esm/src/variables/VariableValueRecorder.js +71 -0
  257. package/dist/esm/src/variables/adhoc/AdHocFilterBuilder.js +24 -0
  258. package/dist/esm/src/variables/adhoc/AdHocFilterRenderer.js +303 -0
  259. package/dist/esm/src/variables/adhoc/AdHocFiltersCombobox/AdHocFilterPill.js +162 -0
  260. package/dist/esm/src/variables/adhoc/AdHocFiltersCombobox/AdHocFiltersAlwaysWipCombobox.js +20 -0
  261. package/dist/esm/src/variables/adhoc/AdHocFiltersCombobox/AdHocFiltersCombobox.js +640 -0
  262. package/dist/esm/src/variables/adhoc/AdHocFiltersCombobox/AdHocFiltersComboboxRenderer.js +65 -0
  263. package/dist/esm/src/variables/adhoc/AdHocFiltersCombobox/DropdownItem.js +146 -0
  264. package/dist/esm/src/variables/adhoc/AdHocFiltersCombobox/MultiValuePill.js +114 -0
  265. package/dist/esm/src/variables/adhoc/AdHocFiltersCombobox/useFloatingInteractions.js +68 -0
  266. package/dist/esm/src/variables/adhoc/AdHocFiltersCombobox/utils.js +146 -0
  267. package/dist/esm/src/variables/adhoc/AdHocFiltersVariable.js +289 -0
  268. package/dist/esm/src/variables/adhoc/AdHocFiltersVariableUrlSyncHandler.js +76 -0
  269. package/dist/esm/src/variables/adhoc/getAdhocOptionSearcher.js +13 -0
  270. package/dist/esm/src/variables/adhoc/patchGetAdhocFilters.js +47 -0
  271. package/dist/esm/src/variables/components/VariableValueControl.js +23 -0
  272. package/dist/esm/src/variables/components/VariableValueInput.js +33 -0
  273. package/dist/esm/src/variables/components/VariableValueSelect.js +228 -0
  274. package/dist/esm/src/variables/components/VariableValueSelectors.js +72 -0
  275. package/dist/esm/src/variables/components/getOptionSearcher.js +15 -0
  276. package/dist/esm/src/variables/constants.js +9 -0
  277. package/dist/esm/src/variables/getEnrichedFiltersRequest.js +12 -0
  278. package/dist/esm/src/variables/groupby/GroupByVariable.js +259 -0
  279. package/dist/esm/src/variables/groupby/GroupByVariableUrlSyncHandler.js +63 -0
  280. package/dist/esm/src/variables/groupby/findActiveGroupByVariablesByUid.js +13 -0
  281. package/dist/esm/src/variables/interpolation/ScopedVarsVariable.js +40 -0
  282. package/dist/esm/src/variables/interpolation/defaults.js +21 -0
  283. package/dist/esm/src/variables/interpolation/fieldAccessorCache.js +13 -0
  284. package/dist/esm/src/variables/interpolation/formatRegistry.js +296 -0
  285. package/dist/esm/src/variables/interpolation/sceneInterpolator.js +87 -0
  286. package/dist/esm/src/variables/lookupVariable.js +20 -0
  287. package/dist/esm/src/variables/macros/AllVariablesMacro.js +57 -0
  288. package/dist/esm/src/variables/macros/contextMacros.js +43 -0
  289. package/dist/esm/src/variables/macros/dataMacros.js +134 -0
  290. package/dist/esm/src/variables/macros/index.js +35 -0
  291. package/dist/esm/src/variables/macros/templateProxies.js +51 -0
  292. package/dist/esm/src/variables/macros/timeMacros.js +86 -0
  293. package/dist/esm/src/variables/macros/types.js +11 -0
  294. package/dist/esm/src/variables/macros/urlMacros.js +56 -0
  295. package/dist/esm/src/variables/sets/SceneVariableSet.js +254 -0
  296. package/dist/esm/src/variables/types.js +11 -0
  297. package/dist/esm/src/variables/utils.js +172 -0
  298. package/dist/esm/src/variables/variants/ConstantVariable.js +38 -0
  299. package/dist/esm/src/variables/variants/CustomVariable.js +60 -0
  300. package/dist/esm/src/variables/variants/DataSourceVariable.js +88 -0
  301. package/dist/esm/src/variables/variants/IntervalVariable.js +117 -0
  302. package/dist/esm/src/variables/variants/JsonVariable.js +193 -0
  303. package/dist/esm/src/variables/variants/LocalValueVariable.js +56 -0
  304. package/dist/esm/src/variables/variants/MultiValueVariable.js +295 -0
  305. package/dist/esm/src/variables/variants/TestVariable.js +117 -0
  306. package/dist/esm/src/variables/variants/TextBoxVariable.js +61 -0
  307. package/dist/esm/src/variables/variants/guards.js +27 -0
  308. package/dist/esm/src/variables/variants/query/QueryVariable.js +139 -0
  309. package/dist/esm/src/variables/variants/query/createQueryVariableRunner.js +129 -0
  310. package/dist/esm/src/variables/variants/query/guards.js +28 -0
  311. package/dist/esm/src/variables/variants/query/toMetricFindValues.js +96 -0
  312. package/dist/esm/src/variables/variants/query/utils.js +124 -0
  313. package/dist/esm/variables/components/VariableValueSelect.js +13 -9
  314. package/dist/esm/variables/components/VariableValueSelect.js.map +1 -1
  315. package/dist/esm/variables/variants/ConstantVariable.js +22 -0
  316. package/dist/esm/variables/variants/ConstantVariable.js.map +1 -1
  317. package/dist/esm/variables/variants/CustomVariable.js +3 -2
  318. package/dist/esm/variables/variants/CustomVariable.js.map +1 -1
  319. package/dist/esm/variables/variants/DataSourceVariable.js +3 -2
  320. package/dist/esm/variables/variants/DataSourceVariable.js.map +1 -1
  321. package/dist/esm/variables/variants/JsonVariable.js +96 -0
  322. package/dist/esm/variables/variants/TestVariable.js +3 -2
  323. package/dist/esm/variables/variants/TestVariable.js.map +1 -1
  324. package/dist/esm/variables/variants/json/JsonVariable.js +95 -0
  325. package/dist/esm/variables/variants/json/JsonVariableOptionProviders.js +70 -0
  326. package/dist/esm/variables/variants/query/QueryVariable.js +3 -2
  327. package/dist/esm/variables/variants/query/QueryVariable.js.map +1 -1
  328. package/dist/index.d.ts +14 -6
  329. package/dist/index.js +35 -13
  330. package/dist/index.js.map +1 -1
  331. package/package.json +2 -2
@@ -0,0 +1,406 @@
1
+ import { toUtc, getPanelOptionsWithDefaults, renderMarkdown, applyFieldOverrides, compareArrayValues, compareDataFrameStructures, CoreApp, DashboardCursorSync, PanelPlugin, PluginType } from '@grafana/data';
2
+ import { getPluginImportUtils, config, getAppEvents } from '@grafana/runtime';
3
+ import { SceneObjectBase } from '../../core/SceneObjectBase.js';
4
+ import { sceneGraph } from '../../core/sceneGraph/index.js';
5
+ import { VizPanelRenderer } from './VizPanelRenderer.js';
6
+ import { VariableDependencyConfig } from '../../variables/VariableDependencyConfig.js';
7
+ import { seriesVisibilityConfigFactory } from './seriesVisibilityConfigFactory.js';
8
+ import { emptyPanelData } from '../../core/SceneDataNode.js';
9
+ import { changeSeriesColorConfigFactory } from './colorSeriesConfigFactory.js';
10
+ import { loadPanelPluginSync } from './registerRuntimePanelPlugin.js';
11
+ import { getCursorSyncScope } from '../../behaviors/CursorSync.js';
12
+ import { mergeWith, cloneDeep, isArray, merge, isEmpty } from 'lodash';
13
+ import { UserActionEvent } from '../../core/events.js';
14
+ import { evaluateTimeRange } from '../../utils/evaluateTimeRange.js';
15
+ import { LiveNowTimer } from '../../behaviors/LiveNowTimer.js';
16
+
17
+ var __defProp = Object.defineProperty;
18
+ var __defProps = Object.defineProperties;
19
+ var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
20
+ var __getOwnPropSymbols = Object.getOwnPropertySymbols;
21
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
22
+ var __propIsEnum = Object.prototype.propertyIsEnumerable;
23
+ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
24
+ var __spreadValues = (a, b) => {
25
+ for (var prop in b || (b = {}))
26
+ if (__hasOwnProp.call(b, prop))
27
+ __defNormalProp(a, prop, b[prop]);
28
+ if (__getOwnPropSymbols)
29
+ for (var prop of __getOwnPropSymbols(b)) {
30
+ if (__propIsEnum.call(b, prop))
31
+ __defNormalProp(a, prop, b[prop]);
32
+ }
33
+ return a;
34
+ };
35
+ var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
36
+ class VizPanel extends SceneObjectBase {
37
+ constructor(state) {
38
+ var _a;
39
+ super(__spreadValues({
40
+ options: {},
41
+ fieldConfig: { defaults: {}, overrides: [] },
42
+ title: "Title",
43
+ pluginId: "timeseries",
44
+ _renderCounter: 0
45
+ }, state));
46
+ this._variableDependency = new VariableDependencyConfig(this, {
47
+ statePaths: ["title", "options", "fieldConfig"]
48
+ });
49
+ this._structureRev = 0;
50
+ this.onTimeRangeChange = (timeRange) => {
51
+ const sceneTimeRange = sceneGraph.getTimeRange(this);
52
+ sceneTimeRange.onTimeRangeChange({
53
+ raw: {
54
+ from: toUtc(timeRange.from),
55
+ to: toUtc(timeRange.to)
56
+ },
57
+ from: toUtc(timeRange.from),
58
+ to: toUtc(timeRange.to)
59
+ });
60
+ };
61
+ this.getTimeRange = (data) => {
62
+ const liveNowTimer = sceneGraph.findObject(this, (o) => o instanceof LiveNowTimer);
63
+ const sceneTimeRange = sceneGraph.getTimeRange(this);
64
+ if (liveNowTimer instanceof LiveNowTimer && liveNowTimer.isEnabled) {
65
+ return evaluateTimeRange(
66
+ sceneTimeRange.state.from,
67
+ sceneTimeRange.state.to,
68
+ sceneTimeRange.getTimeZone(),
69
+ sceneTimeRange.state.fiscalYearStartMonth,
70
+ sceneTimeRange.state.UNSAFE_nowDelay
71
+ );
72
+ }
73
+ const plugin = this.getPlugin();
74
+ if (plugin && !plugin.meta.skipDataQuery && data && data.timeRange) {
75
+ return data.timeRange;
76
+ }
77
+ return sceneTimeRange.state.value;
78
+ };
79
+ this.onTitleChange = (title) => {
80
+ this.setState({ title });
81
+ };
82
+ this.onDescriptionChange = (description) => {
83
+ this.setState({ description });
84
+ };
85
+ this.onDisplayModeChange = (displayMode) => {
86
+ this.setState({ displayMode });
87
+ };
88
+ this.onToggleCollapse = (collapsed) => {
89
+ this.setState({
90
+ collapsed
91
+ });
92
+ };
93
+ this.onOptionsChange = (optionsUpdate, replace = false, isAfterPluginChange = false) => {
94
+ var _a2;
95
+ const { fieldConfig, options } = this.state;
96
+ const nextOptions = replace ? optionsUpdate : mergeWith(cloneDeep(options), optionsUpdate, (objValue, srcValue, key, obj) => {
97
+ if (isArray(srcValue)) {
98
+ return srcValue;
99
+ }
100
+ if (objValue !== srcValue && typeof srcValue === "undefined") {
101
+ obj[key] = srcValue;
102
+ return;
103
+ }
104
+ return;
105
+ });
106
+ const withDefaults = getPanelOptionsWithDefaults({
107
+ plugin: this._plugin,
108
+ currentOptions: nextOptions,
109
+ currentFieldConfig: fieldConfig,
110
+ isAfterPluginChange
111
+ });
112
+ this.setState({
113
+ options: withDefaults.options,
114
+ _renderCounter: ((_a2 = this.state._renderCounter) != null ? _a2 : 0) + 1
115
+ });
116
+ };
117
+ this.onFieldConfigChange = (fieldConfigUpdate, replace) => {
118
+ const { fieldConfig, options } = this.state;
119
+ const nextFieldConfig = replace ? fieldConfigUpdate : merge(cloneDeep(fieldConfig), fieldConfigUpdate);
120
+ const withDefaults = getPanelOptionsWithDefaults({
121
+ plugin: this._plugin,
122
+ currentOptions: options,
123
+ currentFieldConfig: nextFieldConfig,
124
+ isAfterPluginChange: false
125
+ });
126
+ this._dataWithFieldConfig = void 0;
127
+ this.setState({ fieldConfig: withDefaults.fieldConfig });
128
+ };
129
+ this.interpolate = (value, scoped, format) => {
130
+ return sceneGraph.interpolate(this, value, scoped, format);
131
+ };
132
+ this.getDescription = () => {
133
+ this.publishEvent(new UserActionEvent({ origin: this, interaction: "panel-description-shown" }), true);
134
+ const { description } = this.state;
135
+ if (description) {
136
+ const markdown = this.interpolate(description);
137
+ return renderMarkdown(markdown);
138
+ }
139
+ return "";
140
+ };
141
+ this.onCancelQuery = () => {
142
+ var _a2;
143
+ this.publishEvent(new UserActionEvent({ origin: this, interaction: "panel-cancel-query-clicked" }), true);
144
+ const data = sceneGraph.getData(this);
145
+ (_a2 = data.cancelQuery) == null ? void 0 : _a2.call(data);
146
+ };
147
+ this.onStatusMessageClick = () => {
148
+ this.publishEvent(new UserActionEvent({ origin: this, interaction: "panel-status-message-clicked" }), true);
149
+ };
150
+ this._onSeriesColorChange = (label, color) => {
151
+ this.onFieldConfigChange(changeSeriesColorConfigFactory(label, color, this.state.fieldConfig));
152
+ };
153
+ this._onSeriesVisibilityChange = (label, mode) => {
154
+ if (!this._dataWithFieldConfig) {
155
+ return;
156
+ }
157
+ this.onFieldConfigChange(
158
+ seriesVisibilityConfigFactory(label, mode, this.state.fieldConfig, this._dataWithFieldConfig.series),
159
+ true
160
+ );
161
+ };
162
+ this._onInstanceStateChange = (state2) => {
163
+ if (this._panelContext) {
164
+ this._panelContext = __spreadProps(__spreadValues({}, this._panelContext), {
165
+ instanceState: state2
166
+ });
167
+ }
168
+ this.setState({ _pluginInstanceState: state2 });
169
+ };
170
+ this._onToggleLegendSort = (sortKey) => {
171
+ const legendOptions = this.state.options.legend;
172
+ if (!legendOptions) {
173
+ return;
174
+ }
175
+ let sortDesc = legendOptions.sortDesc;
176
+ let sortBy = legendOptions.sortBy;
177
+ if (sortKey !== sortBy) {
178
+ sortDesc = void 0;
179
+ }
180
+ if (sortDesc === false) {
181
+ sortBy = void 0;
182
+ sortDesc = void 0;
183
+ } else {
184
+ sortDesc = !sortDesc;
185
+ sortBy = sortKey;
186
+ }
187
+ this.onOptionsChange(
188
+ __spreadProps(__spreadValues({}, this.state.options), {
189
+ legend: __spreadProps(__spreadValues({}, legendOptions), { sortBy, sortDesc })
190
+ }),
191
+ true
192
+ );
193
+ };
194
+ this.addActivationHandler(() => {
195
+ this._onActivate();
196
+ });
197
+ (_a = state.menu) == null ? void 0 : _a.addActivationHandler(() => {
198
+ this.publishEvent(new UserActionEvent({ origin: this, interaction: "panel-menu-shown" }), true);
199
+ });
200
+ }
201
+ _onActivate() {
202
+ if (!this._plugin) {
203
+ this._loadPlugin(this.state.pluginId);
204
+ }
205
+ }
206
+ forceRender() {
207
+ var _a;
208
+ this.setState({ _renderCounter: ((_a = this.state._renderCounter) != null ? _a : 0) + 1 });
209
+ }
210
+ async _loadPlugin(pluginId, overwriteOptions, overwriteFieldConfig, isAfterPluginChange) {
211
+ const plugin = loadPanelPluginSync(pluginId);
212
+ if (plugin) {
213
+ this._pluginLoaded(plugin, overwriteOptions, overwriteFieldConfig, isAfterPluginChange);
214
+ } else {
215
+ const { importPanelPlugin } = getPluginImportUtils();
216
+ try {
217
+ const result = await importPanelPlugin(pluginId);
218
+ this._pluginLoaded(result, overwriteOptions, overwriteFieldConfig, isAfterPluginChange);
219
+ } catch (err) {
220
+ this._pluginLoaded(getPanelPluginNotFound(pluginId));
221
+ if (err instanceof Error) {
222
+ this.setState({ _pluginLoadError: err.message });
223
+ }
224
+ }
225
+ }
226
+ }
227
+ getLegacyPanelId() {
228
+ const panelId = parseInt(this.state.key.replace("panel-", ""), 10);
229
+ if (isNaN(panelId)) {
230
+ return 0;
231
+ }
232
+ return panelId;
233
+ }
234
+ async _pluginLoaded(plugin, overwriteOptions, overwriteFieldConfig, isAfterPluginChange) {
235
+ const { options, fieldConfig, title, pluginVersion, _UNSAFE_customMigrationHandler } = this.state;
236
+ const panel = {
237
+ title,
238
+ options,
239
+ fieldConfig,
240
+ id: this.getLegacyPanelId(),
241
+ type: plugin.meta.id,
242
+ pluginVersion
243
+ };
244
+ if (overwriteOptions) {
245
+ panel.options = overwriteOptions;
246
+ }
247
+ if (overwriteFieldConfig) {
248
+ panel.fieldConfig = overwriteFieldConfig;
249
+ }
250
+ const currentVersion = this._getPluginVersion(plugin);
251
+ _UNSAFE_customMigrationHandler == null ? void 0 : _UNSAFE_customMigrationHandler(panel, plugin);
252
+ if (plugin.onPanelMigration && currentVersion !== pluginVersion && !isAfterPluginChange) {
253
+ panel.options = await plugin.onPanelMigration(panel);
254
+ }
255
+ const withDefaults = getPanelOptionsWithDefaults({
256
+ plugin,
257
+ currentOptions: panel.options,
258
+ currentFieldConfig: panel.fieldConfig,
259
+ isAfterPluginChange: isAfterPluginChange != null ? isAfterPluginChange : false
260
+ });
261
+ this._plugin = plugin;
262
+ this.setState({
263
+ options: withDefaults.options,
264
+ fieldConfig: withDefaults.fieldConfig,
265
+ pluginVersion: currentVersion,
266
+ pluginId: plugin.meta.id
267
+ });
268
+ if (plugin.meta.skipDataQuery) {
269
+ const sceneTimeRange = sceneGraph.getTimeRange(this);
270
+ this._subs.add(sceneTimeRange.subscribeToState(() => this.forceRender()));
271
+ }
272
+ }
273
+ _getPluginVersion(plugin) {
274
+ return plugin && plugin.meta.info.version ? plugin.meta.info.version : config.buildInfo.version;
275
+ }
276
+ getPlugin() {
277
+ return this._plugin;
278
+ }
279
+ getPanelContext() {
280
+ var _a;
281
+ (_a = this._panelContext) != null ? _a : this._panelContext = this.buildPanelContext();
282
+ return this._panelContext;
283
+ }
284
+ async changePluginType(pluginId, newOptions, newFieldConfig) {
285
+ var _a, _b;
286
+ const { options: prevOptions, fieldConfig: prevFieldConfig, pluginId: prevPluginId } = this.state;
287
+ this._dataWithFieldConfig = void 0;
288
+ const isAfterPluginChange = this.state.pluginId !== pluginId;
289
+ await this._loadPlugin(pluginId, newOptions != null ? newOptions : {}, newFieldConfig, isAfterPluginChange);
290
+ const panel = {
291
+ title: this.state.title,
292
+ options: this.state.options,
293
+ fieldConfig: this.state.fieldConfig,
294
+ id: 1,
295
+ type: pluginId
296
+ };
297
+ const updatedOptions = (_b = (_a = this._plugin) == null ? void 0 : _a.onPanelTypeChanged) == null ? void 0 : _b.call(_a, panel, prevPluginId, prevOptions, prevFieldConfig);
298
+ if (updatedOptions && !isEmpty(updatedOptions)) {
299
+ this.onOptionsChange(updatedOptions, true, true);
300
+ }
301
+ }
302
+ clearFieldConfigCache() {
303
+ this._dataWithFieldConfig = void 0;
304
+ }
305
+ applyFieldConfig(rawData) {
306
+ var _a, _b, _c, _d;
307
+ const plugin = this._plugin;
308
+ if (!plugin || plugin.meta.skipDataQuery || !rawData) {
309
+ return emptyPanelData;
310
+ }
311
+ if (this._prevData === rawData && this._dataWithFieldConfig) {
312
+ return this._dataWithFieldConfig;
313
+ }
314
+ const pluginDataSupport = plugin.dataSupport || { alertStates: false, annotations: false };
315
+ const fieldConfigRegistry = plugin.fieldConfigRegistry;
316
+ const prevFrames = (_b = (_a = this._dataWithFieldConfig) == null ? void 0 : _a.series) != null ? _b : [];
317
+ const newFrames = applyFieldOverrides({
318
+ data: rawData.series,
319
+ fieldConfig: this.state.fieldConfig,
320
+ fieldConfigRegistry,
321
+ replaceVariables: this.interpolate,
322
+ theme: config.theme2,
323
+ timeZone: (_c = rawData.request) == null ? void 0 : _c.timezone
324
+ });
325
+ if (!compareArrayValues(newFrames, prevFrames, compareDataFrameStructures)) {
326
+ this._structureRev++;
327
+ }
328
+ this._dataWithFieldConfig = __spreadProps(__spreadValues({}, rawData), {
329
+ structureRev: this._structureRev,
330
+ series: newFrames
331
+ });
332
+ if (this._dataWithFieldConfig.annotations) {
333
+ this._dataWithFieldConfig.annotations = applyFieldOverrides({
334
+ data: this._dataWithFieldConfig.annotations,
335
+ fieldConfig: {
336
+ defaults: {},
337
+ overrides: []
338
+ },
339
+ fieldConfigRegistry,
340
+ replaceVariables: this.interpolate,
341
+ theme: config.theme2,
342
+ timeZone: (_d = rawData.request) == null ? void 0 : _d.timezone
343
+ });
344
+ }
345
+ if (!pluginDataSupport.alertStates) {
346
+ this._dataWithFieldConfig.alertState = void 0;
347
+ }
348
+ if (!pluginDataSupport.annotations) {
349
+ this._dataWithFieldConfig.annotations = void 0;
350
+ }
351
+ this._prevData = rawData;
352
+ return this._dataWithFieldConfig;
353
+ }
354
+ buildPanelContext() {
355
+ const sync = getCursorSyncScope(this);
356
+ const context = {
357
+ eventsScope: sync ? sync.getEventsScope() : "__global_",
358
+ eventBus: sync ? sync.getEventsBus(this) : getAppEvents(),
359
+ app: CoreApp.Unknown,
360
+ sync: () => {
361
+ if (sync) {
362
+ return sync.state.sync;
363
+ }
364
+ return DashboardCursorSync.Off;
365
+ },
366
+ onSeriesColorChange: this._onSeriesColorChange,
367
+ onToggleSeriesVisibility: this._onSeriesVisibilityChange,
368
+ onToggleLegendSort: this._onToggleLegendSort,
369
+ onInstanceStateChange: this._onInstanceStateChange
370
+ };
371
+ if (this.state.extendPanelContext) {
372
+ this.state.extendPanelContext(this, context);
373
+ }
374
+ return context;
375
+ }
376
+ }
377
+ VizPanel.Component = VizPanelRenderer;
378
+ function getPanelPluginNotFound(id) {
379
+ const plugin = new PanelPlugin(() => null);
380
+ plugin.meta = {
381
+ id,
382
+ name: id,
383
+ sort: 100,
384
+ type: PluginType.panel,
385
+ module: "",
386
+ baseUrl: "",
387
+ info: {
388
+ author: {
389
+ name: ""
390
+ },
391
+ description: "",
392
+ links: [],
393
+ logos: {
394
+ large: "",
395
+ small: "public/img/grafana_icon.svg"
396
+ },
397
+ screenshots: [],
398
+ updated: "",
399
+ version: ""
400
+ }
401
+ };
402
+ return plugin;
403
+ }
404
+
405
+ export { VizPanel };
406
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVml6UGFuZWwuanMiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2NvbXBvbmVudHMvVml6UGFuZWwvVml6UGFuZWwuanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgdG9VdGMsIGdldFBhbmVsT3B0aW9uc1dpdGhEZWZhdWx0cywgcmVuZGVyTWFya2Rvd24sIGFwcGx5RmllbGRPdmVycmlkZXMsIGNvbXBhcmVBcnJheVZhbHVlcywgY29tcGFyZURhdGFGcmFtZVN0cnVjdHVyZXMsIENvcmVBcHAsIERhc2hib2FyZEN1cnNvclN5bmMsIFBhbmVsUGx1Z2luLCBQbHVnaW5UeXBlIH0gZnJvbSAnQGdyYWZhbmEvZGF0YSc7XG5pbXBvcnQgeyBnZXRQbHVnaW5JbXBvcnRVdGlscywgY29uZmlnLCBnZXRBcHBFdmVudHMgfSBmcm9tICdAZ3JhZmFuYS9ydW50aW1lJztcbmltcG9ydCB7IFNjZW5lT2JqZWN0QmFzZSB9IGZyb20gJy4uLy4uL2NvcmUvU2NlbmVPYmplY3RCYXNlLmpzJztcbmltcG9ydCB7IHNjZW5lR3JhcGggfSBmcm9tICcuLi8uLi9jb3JlL3NjZW5lR3JhcGgvaW5kZXguanMnO1xuaW1wb3J0IHsgVml6UGFuZWxSZW5kZXJlciB9IGZyb20gJy4vVml6UGFuZWxSZW5kZXJlci5qcyc7XG5pbXBvcnQgeyBWYXJpYWJsZURlcGVuZGVuY3lDb25maWcgfSBmcm9tICcuLi8uLi92YXJpYWJsZXMvVmFyaWFibGVEZXBlbmRlbmN5Q29uZmlnLmpzJztcbmltcG9ydCB7IHNlcmllc1Zpc2liaWxpdHlDb25maWdGYWN0b3J5IH0gZnJvbSAnLi9zZXJpZXNWaXNpYmlsaXR5Q29uZmlnRmFjdG9yeS5qcyc7XG5pbXBvcnQgeyBlbXB0eVBhbmVsRGF0YSB9IGZyb20gJy4uLy4uL2NvcmUvU2NlbmVEYXRhTm9kZS5qcyc7XG5pbXBvcnQgeyBjaGFuZ2VTZXJpZXNDb2xvckNvbmZpZ0ZhY3RvcnkgfSBmcm9tICcuL2NvbG9yU2VyaWVzQ29uZmlnRmFjdG9yeS5qcyc7XG5pbXBvcnQgeyBsb2FkUGFuZWxQbHVnaW5TeW5jIH0gZnJvbSAnLi9yZWdpc3RlclJ1bnRpbWVQYW5lbFBsdWdpbi5qcyc7XG5pbXBvcnQgeyBnZXRDdXJzb3JTeW5jU2NvcGUgfSBmcm9tICcuLi8uLi9iZWhhdmlvcnMvQ3Vyc29yU3luYy5qcyc7XG5pbXBvcnQgeyBtZXJnZVdpdGgsIGNsb25lRGVlcCwgaXNBcnJheSwgbWVyZ2UsIGlzRW1wdHkgfSBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHsgVXNlckFjdGlvbkV2ZW50IH0gZnJvbSAnLi4vLi4vY29yZS9ldmVudHMuanMnO1xuaW1wb3J0IHsgZXZhbHVhdGVUaW1lUmFuZ2UgfSBmcm9tICcuLi8uLi91dGlscy9ldmFsdWF0ZVRpbWVSYW5nZS5qcyc7XG5pbXBvcnQgeyBMaXZlTm93VGltZXIgfSBmcm9tICcuLi8uLi9iZWhhdmlvcnMvTGl2ZU5vd1RpbWVyLmpzJztcblxudmFyIF9fZGVmUHJvcCA9IE9iamVjdC5kZWZpbmVQcm9wZXJ0eTtcbnZhciBfX2RlZlByb3BzID0gT2JqZWN0LmRlZmluZVByb3BlcnRpZXM7XG52YXIgX19nZXRPd25Qcm9wRGVzY3MgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycztcbnZhciBfX2dldE93blByb3BTeW1ib2xzID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scztcbnZhciBfX2hhc093blByb3AgPSBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5O1xudmFyIF9fcHJvcElzRW51bSA9IE9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGU7XG52YXIgX19kZWZOb3JtYWxQcm9wID0gKG9iaiwga2V5LCB2YWx1ZSkgPT4ga2V5IGluIG9iaiA/IF9fZGVmUHJvcChvYmosIGtleSwgeyBlbnVtZXJhYmxlOiB0cnVlLCBjb25maWd1cmFibGU6IHRydWUsIHdyaXRhYmxlOiB0cnVlLCB2YWx1ZSB9KSA6IG9ialtrZXldID0gdmFsdWU7XG52YXIgX19zcHJlYWRWYWx1ZXMgPSAoYSwgYikgPT4ge1xuICBmb3IgKHZhciBwcm9wIGluIGIgfHwgKGIgPSB7fSkpXG4gICAgaWYgKF9faGFzT3duUHJvcC5jYWxsKGIsIHByb3ApKVxuICAgICAgX19kZWZOb3JtYWxQcm9wKGEsIHByb3AsIGJbcHJvcF0pO1xuICBpZiAoX19nZXRPd25Qcm9wU3ltYm9scylcbiAgICBmb3IgKHZhciBwcm9wIG9mIF9fZ2V0T3duUHJvcFN5bWJvbHMoYikpIHtcbiAgICAgIGlmIChfX3Byb3BJc0VudW0uY2FsbChiLCBwcm9wKSlcbiAgICAgICAgX19kZWZOb3JtYWxQcm9wKGEsIHByb3AsIGJbcHJvcF0pO1xuICAgIH1cbiAgcmV0dXJuIGE7XG59O1xudmFyIF9fc3ByZWFkUHJvcHMgPSAoYSwgYikgPT4gX19kZWZQcm9wcyhhLCBfX2dldE93blByb3BEZXNjcyhiKSk7XG5jbGFzcyBWaXpQYW5lbCBleHRlbmRzIFNjZW5lT2JqZWN0QmFzZSB7XG4gIGNvbnN0cnVjdG9yKHN0YXRlKSB7XG4gICAgdmFyIF9hO1xuICAgIHN1cGVyKF9fc3ByZWFkVmFsdWVzKHtcbiAgICAgIG9wdGlvbnM6IHt9LFxuICAgICAgZmllbGRDb25maWc6IHsgZGVmYXVsdHM6IHt9LCBvdmVycmlkZXM6IFtdIH0sXG4gICAgICB0aXRsZTogXCJUaXRsZVwiLFxuICAgICAgcGx1Z2luSWQ6IFwidGltZXNlcmllc1wiLFxuICAgICAgX3JlbmRlckNvdW50ZXI6IDBcbiAgICB9LCBzdGF0ZSkpO1xuICAgIHRoaXMuX3ZhcmlhYmxlRGVwZW5kZW5jeSA9IG5ldyBWYXJpYWJsZURlcGVuZGVuY3lDb25maWcodGhpcywge1xuICAgICAgc3RhdGVQYXRoczogW1widGl0bGVcIiwgXCJvcHRpb25zXCIsIFwiZmllbGRDb25maWdcIl1cbiAgICB9KTtcbiAgICB0aGlzLl9zdHJ1Y3R1cmVSZXYgPSAwO1xuICAgIHRoaXMub25UaW1lUmFuZ2VDaGFuZ2UgPSAodGltZVJhbmdlKSA9PiB7XG4gICAgICBjb25zdCBzY2VuZVRpbWVSYW5nZSA9IHNjZW5lR3JhcGguZ2V0VGltZVJhbmdlKHRoaXMpO1xuICAgICAgc2NlbmVUaW1lUmFuZ2Uub25UaW1lUmFuZ2VDaGFuZ2Uoe1xuICAgICAgICByYXc6IHtcbiAgICAgICAgICBmcm9tOiB0b1V0Yyh0aW1lUmFuZ2UuZnJvbSksXG4gICAgICAgICAgdG86IHRvVXRjKHRpbWVSYW5nZS50bylcbiAgICAgICAgfSxcbiAgICAgICAgZnJvbTogdG9VdGModGltZVJhbmdlLmZyb20pLFxuICAgICAgICB0bzogdG9VdGModGltZVJhbmdlLnRvKVxuICAgICAgfSk7XG4gICAgfTtcbiAgICB0aGlzLmdldFRpbWVSYW5nZSA9IChkYXRhKSA9PiB7XG4gICAgICBjb25zdCBsaXZlTm93VGltZXIgPSBzY2VuZUdyYXBoLmZpbmRPYmplY3QodGhpcywgKG8pID0+IG8gaW5zdGFuY2VvZiBMaXZlTm93VGltZXIpO1xuICAgICAgY29uc3Qgc2NlbmVUaW1lUmFuZ2UgPSBzY2VuZUdyYXBoLmdldFRpbWVSYW5nZSh0aGlzKTtcbiAgICAgIGlmIChsaXZlTm93VGltZXIgaW5zdGFuY2VvZiBMaXZlTm93VGltZXIgJiYgbGl2ZU5vd1RpbWVyLmlzRW5hYmxlZCkge1xuICAgICAgICByZXR1cm4gZXZhbHVhdGVUaW1lUmFuZ2UoXG4gICAgICAgICAgc2NlbmVUaW1lUmFuZ2Uuc3RhdGUuZnJvbSxcbiAgICAgICAgICBzY2VuZVRpbWVSYW5nZS5zdGF0ZS50byxcbiAgICAgICAgICBzY2VuZVRpbWVSYW5nZS5nZXRUaW1lWm9uZSgpLFxuICAgICAgICAgIHNjZW5lVGltZVJhbmdlLnN0YXRlLmZpc2NhbFllYXJTdGFydE1vbnRoLFxuICAgICAgICAgIHNjZW5lVGltZVJhbmdlLnN0YXRlLlVOU0FGRV9ub3dEZWxheVxuICAgICAgICApO1xuICAgICAgfVxuICAgICAgY29uc3QgcGx1Z2luID0gdGhpcy5nZXRQbHVnaW4oKTtcbiAgICAgIGlmIChwbHVnaW4gJiYgIXBsdWdpbi5tZXRhLnNraXBEYXRhUXVlcnkgJiYgZGF0YSAmJiBkYXRhLnRpbWVSYW5nZSkge1xuICAgICAgICByZXR1cm4gZGF0YS50aW1lUmFuZ2U7XG4gICAgICB9XG4gICAgICByZXR1cm4gc2NlbmVUaW1lUmFuZ2Uuc3RhdGUudmFsdWU7XG4gICAgfTtcbiAgICB0aGlzLm9uVGl0bGVDaGFuZ2UgPSAodGl0bGUpID0+IHtcbiAgICAgIHRoaXMuc2V0U3RhdGUoeyB0aXRsZSB9KTtcbiAgICB9O1xuICAgIHRoaXMub25EZXNjcmlwdGlvbkNoYW5nZSA9IChkZXNjcmlwdGlvbikgPT4ge1xuICAgICAgdGhpcy5zZXRTdGF0ZSh7IGRlc2NyaXB0aW9uIH0pO1xuICAgIH07XG4gICAgdGhpcy5vbkRpc3BsYXlNb2RlQ2hhbmdlID0gKGRpc3BsYXlNb2RlKSA9PiB7XG4gICAgICB0aGlzLnNldFN0YXRlKHsgZGlzcGxheU1vZGUgfSk7XG4gICAgfTtcbiAgICB0aGlzLm9uVG9nZ2xlQ29sbGFwc2UgPSAoY29sbGFwc2VkKSA9PiB7XG4gICAgICB0aGlzLnNldFN0YXRlKHtcbiAgICAgICAgY29sbGFwc2VkXG4gICAgICB9KTtcbiAgICB9O1xuICAgIHRoaXMub25PcHRpb25zQ2hhbmdlID0gKG9wdGlvbnNVcGRhdGUsIHJlcGxhY2UgPSBmYWxzZSwgaXNBZnRlclBsdWdpbkNoYW5nZSA9IGZhbHNlKSA9PiB7XG4gICAgICB2YXIgX2E7XG4gICAgICBjb25zdCB7IGZpZWxkQ29uZmlnLCBvcHRpb25zIH0gPSB0aGlzLnN0YXRlO1xuICAgICAgY29uc3QgbmV4dE9wdGlvbnMgPSByZXBsYWNlID8gb3B0aW9uc1VwZGF0ZSA6IG1lcmdlV2l0aChjbG9uZURlZXAob3B0aW9ucyksIG9wdGlvbnNVcGRhdGUsIChvYmpWYWx1ZSwgc3JjVmFsdWUsIGtleSwgb2JqKSA9PiB7XG4gICAgICAgIGlmIChpc0FycmF5KHNyY1ZhbHVlKSkge1xuICAgICAgICAgIHJldHVybiBzcmNWYWx1ZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAob2JqVmFsdWUgIT09IHNyY1ZhbHVlICYmIHR5cGVvZiBzcmNWYWx1ZSA9PT0gXCJ1bmRlZmluZWRcIikge1xuICAgICAgICAgIG9ialtrZXldID0gc3JjVmFsdWU7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybjtcbiAgICAgIH0pO1xuICAgICAgY29uc3Qgd2l0aERlZmF1bHRzID0gZ2V0UGFuZWxPcHRpb25zV2l0aERlZmF1bHRzKHtcbiAgICAgICAgcGx1Z2luOiB0aGlzLl9wbHVnaW4sXG4gICAgICAgIGN1cnJlbnRPcHRpb25zOiBuZXh0T3B0aW9ucyxcbiAgICAgICAgY3VycmVudEZpZWxkQ29uZmlnOiBmaWVsZENvbmZpZyxcbiAgICAgICAgaXNBZnRlclBsdWdpbkNoYW5nZVxuICAgICAgfSk7XG4gICAgICB0aGlzLnNldFN0YXRlKHtcbiAgICAgICAgb3B0aW9uczogd2l0aERlZmF1bHRzLm9wdGlvbnMsXG4gICAgICAgIF9yZW5kZXJDb3VudGVyOiAoKF9hID0gdGhpcy5zdGF0ZS5fcmVuZGVyQ291bnRlcikgIT0gbnVsbCA/IF9hIDogMCkgKyAxXG4gICAgICB9KTtcbiAgICB9O1xuICAgIHRoaXMub25GaWVsZENvbmZpZ0NoYW5nZSA9IChmaWVsZENvbmZpZ1VwZGF0ZSwgcmVwbGFjZSkgPT4ge1xuICAgICAgY29uc3QgeyBmaWVsZENvbmZpZywgb3B0aW9ucyB9ID0gdGhpcy5zdGF0ZTtcbiAgICAgIGNvbnN0IG5leHRGaWVsZENvbmZpZyA9IHJlcGxhY2UgPyBmaWVsZENvbmZpZ1VwZGF0ZSA6IG1lcmdlKGNsb25lRGVlcChmaWVsZENvbmZpZyksIGZpZWxkQ29uZmlnVXBkYXRlKTtcbiAgICAgIGNvbnN0IHdpdGhEZWZhdWx0cyA9IGdldFBhbmVsT3B0aW9uc1dpdGhEZWZhdWx0cyh7XG4gICAgICAgIHBsdWdpbjogdGhpcy5fcGx1Z2luLFxuICAgICAgICBjdXJyZW50T3B0aW9uczogb3B0aW9ucyxcbiAgICAgICAgY3VycmVudEZpZWxkQ29uZmlnOiBuZXh0RmllbGRDb25maWcsXG4gICAgICAgIGlzQWZ0ZXJQbHVnaW5DaGFuZ2U6IGZhbHNlXG4gICAgICB9KTtcbiAgICAgIHRoaXMuX2RhdGFXaXRoRmllbGRDb25maWcgPSB2b2lkIDA7XG4gICAgICB0aGlzLnNldFN0YXRlKHsgZmllbGRDb25maWc6IHdpdGhEZWZhdWx0cy5maWVsZENvbmZpZyB9KTtcbiAgICB9O1xuICAgIHRoaXMuaW50ZXJwb2xhdGUgPSAodmFsdWUsIHNjb3BlZCwgZm9ybWF0KSA9PiB7XG4gICAgICByZXR1cm4gc2NlbmVHcmFwaC5pbnRlcnBvbGF0ZSh0aGlzLCB2YWx1ZSwgc2NvcGVkLCBmb3JtYXQpO1xuICAgIH07XG4gICAgdGhpcy5nZXREZXNjcmlwdGlvbiA9ICgpID0+IHtcbiAgICAgIHRoaXMucHVibGlzaEV2ZW50KG5ldyBVc2VyQWN0aW9uRXZlbnQoeyBvcmlnaW46IHRoaXMsIGludGVyYWN0aW9uOiBcInBhbmVsLWRlc2NyaXB0aW9uLXNob3duXCIgfSksIHRydWUpO1xuICAgICAgY29uc3QgeyBkZXNjcmlwdGlvbiB9ID0gdGhpcy5zdGF0ZTtcbiAgICAgIGlmIChkZXNjcmlwdGlvbikge1xuICAgICAgICBjb25zdCBtYXJrZG93biA9IHRoaXMuaW50ZXJwb2xhdGUoZGVzY3JpcHRpb24pO1xuICAgICAgICByZXR1cm4gcmVuZGVyTWFya2Rvd24obWFya2Rvd24pO1xuICAgICAgfVxuICAgICAgcmV0dXJuIFwiXCI7XG4gICAgfTtcbiAgICB0aGlzLm9uQ2FuY2VsUXVlcnkgPSAoKSA9PiB7XG4gICAgICB2YXIgX2E7XG4gICAgICB0aGlzLnB1Ymxpc2hFdmVudChuZXcgVXNlckFjdGlvbkV2ZW50KHsgb3JpZ2luOiB0aGlzLCBpbnRlcmFjdGlvbjogXCJwYW5lbC1jYW5jZWwtcXVlcnktY2xpY2tlZFwiIH0pLCB0cnVlKTtcbiAgICAgIGNvbnN0IGRhdGEgPSBzY2VuZUdyYXBoLmdldERhdGEodGhpcyk7XG4gICAgICAoX2EgPSBkYXRhLmNhbmNlbFF1ZXJ5KSA9PSBudWxsID8gdm9pZCAwIDogX2EuY2FsbChkYXRhKTtcbiAgICB9O1xuICAgIHRoaXMub25TdGF0dXNNZXNzYWdlQ2xpY2sgPSAoKSA9PiB7XG4gICAgICB0aGlzLnB1Ymxpc2hFdmVudChuZXcgVXNlckFjdGlvbkV2ZW50KHsgb3JpZ2luOiB0aGlzLCBpbnRlcmFjdGlvbjogXCJwYW5lbC1zdGF0dXMtbWVzc2FnZS1jbGlja2VkXCIgfSksIHRydWUpO1xuICAgIH07XG4gICAgdGhpcy5fb25TZXJpZXNDb2xvckNoYW5nZSA9IChsYWJlbCwgY29sb3IpID0+IHtcbiAgICAgIHRoaXMub25GaWVsZENvbmZpZ0NoYW5nZShjaGFuZ2VTZXJpZXNDb2xvckNvbmZpZ0ZhY3RvcnkobGFiZWwsIGNvbG9yLCB0aGlzLnN0YXRlLmZpZWxkQ29uZmlnKSk7XG4gICAgfTtcbiAgICB0aGlzLl9vblNlcmllc1Zpc2liaWxpdHlDaGFuZ2UgPSAobGFiZWwsIG1vZGUpID0+IHtcbiAgICAgIGlmICghdGhpcy5fZGF0YVdpdGhGaWVsZENvbmZpZykge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICB0aGlzLm9uRmllbGRDb25maWdDaGFuZ2UoXG4gICAgICAgIHNlcmllc1Zpc2liaWxpdHlDb25maWdGYWN0b3J5KGxhYmVsLCBtb2RlLCB0aGlzLnN0YXRlLmZpZWxkQ29uZmlnLCB0aGlzLl9kYXRhV2l0aEZpZWxkQ29uZmlnLnNlcmllcyksXG4gICAgICAgIHRydWVcbiAgICAgICk7XG4gICAgfTtcbiAgICB0aGlzLl9vbkluc3RhbmNlU3RhdGVDaGFuZ2UgPSAoc3RhdGUpID0+IHtcbiAgICAgIGlmICh0aGlzLl9wYW5lbENvbnRleHQpIHtcbiAgICAgICAgdGhpcy5fcGFuZWxDb250ZXh0ID0gX19zcHJlYWRQcm9wcyhfX3NwcmVhZFZhbHVlcyh7fSwgdGhpcy5fcGFuZWxDb250ZXh0KSwge1xuICAgICAgICAgIGluc3RhbmNlU3RhdGU6IHN0YXRlXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgICAgdGhpcy5zZXRTdGF0ZSh7IF9wbHVnaW5JbnN0YW5jZVN0YXRlOiBzdGF0ZSB9KTtcbiAgICB9O1xuICAgIHRoaXMuX29uVG9nZ2xlTGVnZW5kU29ydCA9IChzb3J0S2V5KSA9PiB7XG4gICAgICBjb25zdCBsZWdlbmRPcHRpb25zID0gdGhpcy5zdGF0ZS5vcHRpb25zLmxlZ2VuZDtcbiAgICAgIGlmICghbGVnZW5kT3B0aW9ucykge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBsZXQgc29ydERlc2MgPSBsZWdlbmRPcHRpb25zLnNvcnREZXNjO1xuICAgICAgbGV0IHNvcnRCeSA9IGxlZ2VuZE9wdGlvbnMuc29ydEJ5O1xuICAgICAgaWYgKHNvcnRLZXkgIT09IHNvcnRCeSkge1xuICAgICAgICBzb3J0RGVzYyA9IHZvaWQgMDtcbiAgICAgIH1cbiAgICAgIGlmIChzb3J0RGVzYyA9PT0gZmFsc2UpIHtcbiAgICAgICAgc29ydEJ5ID0gdm9pZCAwO1xuICAgICAgICBzb3J0RGVzYyA9IHZvaWQgMDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHNvcnREZXNjID0gIXNvcnREZXNjO1xuICAgICAgICBzb3J0QnkgPSBzb3J0S2V5O1xuICAgICAgfVxuICAgICAgdGhpcy5vbk9wdGlvbnNDaGFuZ2UoXG4gICAgICAgIF9fc3ByZWFkUHJvcHMoX19zcHJlYWRWYWx1ZXMoe30sIHRoaXMuc3RhdGUub3B0aW9ucyksIHtcbiAgICAgICAgICBsZWdlbmQ6IF9fc3ByZWFkUHJvcHMoX19zcHJlYWRWYWx1ZXMoe30sIGxlZ2VuZE9wdGlvbnMpLCB7IHNvcnRCeSwgc29ydERlc2MgfSlcbiAgICAgICAgfSksXG4gICAgICAgIHRydWVcbiAgICAgICk7XG4gICAgfTtcbiAgICB0aGlzLmFkZEFjdGl2YXRpb25IYW5kbGVyKCgpID0+IHtcbiAgICAgIHRoaXMuX29uQWN0aXZhdGUoKTtcbiAgICB9KTtcbiAgICAoX2EgPSBzdGF0ZS5tZW51KSA9PSBudWxsID8gdm9pZCAwIDogX2EuYWRkQWN0aXZhdGlvbkhhbmRsZXIoKCkgPT4ge1xuICAgICAgdGhpcy5wdWJsaXNoRXZlbnQobmV3IFVzZXJBY3Rpb25FdmVudCh7IG9yaWdpbjogdGhpcywgaW50ZXJhY3Rpb246IFwicGFuZWwtbWVudS1zaG93blwiIH0pLCB0cnVlKTtcbiAgICB9KTtcbiAgfVxuICBfb25BY3RpdmF0ZSgpIHtcbiAgICBpZiAoIXRoaXMuX3BsdWdpbikge1xuICAgICAgdGhpcy5fbG9hZFBsdWdpbih0aGlzLnN0YXRlLnBsdWdpbklkKTtcbiAgICB9XG4gIH1cbiAgZm9yY2VSZW5kZXIoKSB7XG4gICAgdmFyIF9hO1xuICAgIHRoaXMuc2V0U3RhdGUoeyBfcmVuZGVyQ291bnRlcjogKChfYSA9IHRoaXMuc3RhdGUuX3JlbmRlckNvdW50ZXIpICE9IG51bGwgPyBfYSA6IDApICsgMSB9KTtcbiAgfVxuICBhc3luYyBfbG9hZFBsdWdpbihwbHVnaW5JZCwgb3ZlcndyaXRlT3B0aW9ucywgb3ZlcndyaXRlRmllbGRDb25maWcsIGlzQWZ0ZXJQbHVnaW5DaGFuZ2UpIHtcbiAgICBjb25zdCBwbHVnaW4gPSBsb2FkUGFuZWxQbHVnaW5TeW5jKHBsdWdpbklkKTtcbiAgICBpZiAocGx1Z2luKSB7XG4gICAgICB0aGlzLl9wbHVnaW5Mb2FkZWQocGx1Z2luLCBvdmVyd3JpdGVPcHRpb25zLCBvdmVyd3JpdGVGaWVsZENvbmZpZywgaXNBZnRlclBsdWdpbkNoYW5nZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IHsgaW1wb3J0UGFuZWxQbHVnaW4gfSA9IGdldFBsdWdpbkltcG9ydFV0aWxzKCk7XG4gICAgICB0cnkge1xuICAgICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBpbXBvcnRQYW5lbFBsdWdpbihwbHVnaW5JZCk7XG4gICAgICAgIHRoaXMuX3BsdWdpbkxvYWRlZChyZXN1bHQsIG92ZXJ3cml0ZU9wdGlvbnMsIG92ZXJ3cml0ZUZpZWxkQ29uZmlnLCBpc0FmdGVyUGx1Z2luQ2hhbmdlKTtcbiAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICB0aGlzLl9wbHVnaW5Mb2FkZWQoZ2V0UGFuZWxQbHVnaW5Ob3RGb3VuZChwbHVnaW5JZCkpO1xuICAgICAgICBpZiAoZXJyIGluc3RhbmNlb2YgRXJyb3IpIHtcbiAgICAgICAgICB0aGlzLnNldFN0YXRlKHsgX3BsdWdpbkxvYWRFcnJvcjogZXJyLm1lc3NhZ2UgfSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgZ2V0TGVnYWN5UGFuZWxJZCgpIHtcbiAgICBjb25zdCBwYW5lbElkID0gcGFyc2VJbnQodGhpcy5zdGF0ZS5rZXkucmVwbGFjZShcInBhbmVsLVwiLCBcIlwiKSwgMTApO1xuICAgIGlmIChpc05hTihwYW5lbElkKSkge1xuICAgICAgcmV0dXJuIDA7XG4gICAgfVxuICAgIHJldHVybiBwYW5lbElkO1xuICB9XG4gIGFzeW5jIF9wbHVnaW5Mb2FkZWQocGx1Z2luLCBvdmVyd3JpdGVPcHRpb25zLCBvdmVyd3JpdGVGaWVsZENvbmZpZywgaXNBZnRlclBsdWdpbkNoYW5nZSkge1xuICAgIGNvbnN0IHsgb3B0aW9ucywgZmllbGRDb25maWcsIHRpdGxlLCBwbHVnaW5WZXJzaW9uLCBfVU5TQUZFX2N1c3RvbU1pZ3JhdGlvbkhhbmRsZXIgfSA9IHRoaXMuc3RhdGU7XG4gICAgY29uc3QgcGFuZWwgPSB7XG4gICAgICB0aXRsZSxcbiAgICAgIG9wdGlvbnMsXG4gICAgICBmaWVsZENvbmZpZyxcbiAgICAgIGlkOiB0aGlzLmdldExlZ2FjeVBhbmVsSWQoKSxcbiAgICAgIHR5cGU6IHBsdWdpbi5tZXRhLmlkLFxuICAgICAgcGx1Z2luVmVyc2lvblxuICAgIH07XG4gICAgaWYgKG92ZXJ3cml0ZU9wdGlvbnMpIHtcbiAgICAgIHBhbmVsLm9wdGlvbnMgPSBvdmVyd3JpdGVPcHRpb25zO1xuICAgIH1cbiAgICBpZiAob3ZlcndyaXRlRmllbGRDb25maWcpIHtcbiAgICAgIHBhbmVsLmZpZWxkQ29uZmlnID0gb3ZlcndyaXRlRmllbGRDb25maWc7XG4gICAgfVxuICAgIGNvbnN0IGN1cnJlbnRWZXJzaW9uID0gdGhpcy5fZ2V0UGx1Z2luVmVyc2lvbihwbHVnaW4pO1xuICAgIF9VTlNBRkVfY3VzdG9tTWlncmF0aW9uSGFuZGxlciA9PSBudWxsID8gdm9pZCAwIDogX1VOU0FGRV9jdXN0b21NaWdyYXRpb25IYW5kbGVyKHBhbmVsLCBwbHVnaW4pO1xuICAgIGlmIChwbHVnaW4ub25QYW5lbE1pZ3JhdGlvbiAmJiBjdXJyZW50VmVyc2lvbiAhPT0gcGx1Z2luVmVyc2lvbiAmJiAhaXNBZnRlclBsdWdpbkNoYW5nZSkge1xuICAgICAgcGFuZWwub3B0aW9ucyA9IGF3YWl0IHBsdWdpbi5vblBhbmVsTWlncmF0aW9uKHBhbmVsKTtcbiAgICB9XG4gICAgY29uc3Qgd2l0aERlZmF1bHRzID0gZ2V0UGFuZWxPcHRpb25zV2l0aERlZmF1bHRzKHtcbiAgICAgIHBsdWdpbixcbiAgICAgIGN1cnJlbnRPcHRpb25zOiBwYW5lbC5vcHRpb25zLFxuICAgICAgY3VycmVudEZpZWxkQ29uZmlnOiBwYW5lbC5maWVsZENvbmZpZyxcbiAgICAgIGlzQWZ0ZXJQbHVnaW5DaGFuZ2U6IGlzQWZ0ZXJQbHVnaW5DaGFuZ2UgIT0gbnVsbCA/IGlzQWZ0ZXJQbHVnaW5DaGFuZ2UgOiBmYWxzZVxuICAgIH0pO1xuICAgIHRoaXMuX3BsdWdpbiA9IHBsdWdpbjtcbiAgICB0aGlzLnNldFN0YXRlKHtcbiAgICAgIG9wdGlvbnM6IHdpdGhEZWZhdWx0cy5vcHRpb25zLFxuICAgICAgZmllbGRDb25maWc6IHdpdGhEZWZhdWx0cy5maWVsZENvbmZpZyxcbiAgICAgIHBsdWdpblZlcnNpb246IGN1cnJlbnRWZXJzaW9uLFxuICAgICAgcGx1Z2luSWQ6IHBsdWdpbi5tZXRhLmlkXG4gICAgfSk7XG4gICAgaWYgKHBsdWdpbi5tZXRhLnNraXBEYXRhUXVlcnkpIHtcbiAgICAgIGNvbnN0IHNjZW5lVGltZVJhbmdlID0gc2NlbmVHcmFwaC5nZXRUaW1lUmFuZ2UodGhpcyk7XG4gICAgICB0aGlzLl9zdWJzLmFkZChzY2VuZVRpbWVSYW5nZS5zdWJzY3JpYmVUb1N0YXRlKCgpID0+IHRoaXMuZm9yY2VSZW5kZXIoKSkpO1xuICAgIH1cbiAgfVxuICBfZ2V0UGx1Z2luVmVyc2lvbihwbHVnaW4pIHtcbiAgICByZXR1cm4gcGx1Z2luICYmIHBsdWdpbi5tZXRhLmluZm8udmVyc2lvbiA/IHBsdWdpbi5tZXRhLmluZm8udmVyc2lvbiA6IGNvbmZpZy5idWlsZEluZm8udmVyc2lvbjtcbiAgfVxuICBnZXRQbHVnaW4oKSB7XG4gICAgcmV0dXJuIHRoaXMuX3BsdWdpbjtcbiAgfVxuICBnZXRQYW5lbENvbnRleHQoKSB7XG4gICAgdmFyIF9hO1xuICAgIChfYSA9IHRoaXMuX3BhbmVsQ29udGV4dCkgIT0gbnVsbCA/IF9hIDogdGhpcy5fcGFuZWxDb250ZXh0ID0gdGhpcy5idWlsZFBhbmVsQ29udGV4dCgpO1xuICAgIHJldHVybiB0aGlzLl9wYW5lbENvbnRleHQ7XG4gIH1cbiAgYXN5bmMgY2hhbmdlUGx1Z2luVHlwZShwbHVnaW5JZCwgbmV3T3B0aW9ucywgbmV3RmllbGRDb25maWcpIHtcbiAgICB2YXIgX2EsIF9iO1xuICAgIGNvbnN0IHsgb3B0aW9uczogcHJldk9wdGlvbnMsIGZpZWxkQ29uZmlnOiBwcmV2RmllbGRDb25maWcsIHBsdWdpbklkOiBwcmV2UGx1Z2luSWQgfSA9IHRoaXMuc3RhdGU7XG4gICAgdGhpcy5fZGF0YVdpdGhGaWVsZENvbmZpZyA9IHZvaWQgMDtcbiAgICBjb25zdCBpc0FmdGVyUGx1Z2luQ2hhbmdlID0gdGhpcy5zdGF0ZS5wbHVnaW5JZCAhPT0gcGx1Z2luSWQ7XG4gICAgYXdhaXQgdGhpcy5fbG9hZFBsdWdpbihwbHVnaW5JZCwgbmV3T3B0aW9ucyAhPSBudWxsID8gbmV3T3B0aW9ucyA6IHt9LCBuZXdGaWVsZENvbmZpZywgaXNBZnRlclBsdWdpbkNoYW5nZSk7XG4gICAgY29uc3QgcGFuZWwgPSB7XG4gICAgICB0aXRsZTogdGhpcy5zdGF0ZS50aXRsZSxcbiAgICAgIG9wdGlvbnM6IHRoaXMuc3RhdGUub3B0aW9ucyxcbiAgICAgIGZpZWxkQ29uZmlnOiB0aGlzLnN0YXRlLmZpZWxkQ29uZmlnLFxuICAgICAgaWQ6IDEsXG4gICAgICB0eXBlOiBwbHVnaW5JZFxuICAgIH07XG4gICAgY29uc3QgdXBkYXRlZE9wdGlvbnMgPSAoX2IgPSAoX2EgPSB0aGlzLl9wbHVnaW4pID09IG51bGwgPyB2b2lkIDAgOiBfYS5vblBhbmVsVHlwZUNoYW5nZWQpID09IG51bGwgPyB2b2lkIDAgOiBfYi5jYWxsKF9hLCBwYW5lbCwgcHJldlBsdWdpbklkLCBwcmV2T3B0aW9ucywgcHJldkZpZWxkQ29uZmlnKTtcbiAgICBpZiAodXBkYXRlZE9wdGlvbnMgJiYgIWlzRW1wdHkodXBkYXRlZE9wdGlvbnMpKSB7XG4gICAgICB0aGlzLm9uT3B0aW9uc0NoYW5nZSh1cGRhdGVkT3B0aW9ucywgdHJ1ZSwgdHJ1ZSk7XG4gICAgfVxuICB9XG4gIGNsZWFyRmllbGRDb25maWdDYWNoZSgpIHtcbiAgICB0aGlzLl9kYXRhV2l0aEZpZWxkQ29uZmlnID0gdm9pZCAwO1xuICB9XG4gIGFwcGx5RmllbGRDb25maWcocmF3RGF0YSkge1xuICAgIHZhciBfYSwgX2IsIF9jLCBfZDtcbiAgICBjb25zdCBwbHVnaW4gPSB0aGlzLl9wbHVnaW47XG4gICAgaWYgKCFwbHVnaW4gfHwgcGx1Z2luLm1ldGEuc2tpcERhdGFRdWVyeSB8fCAhcmF3RGF0YSkge1xuICAgICAgcmV0dXJuIGVtcHR5UGFuZWxEYXRhO1xuICAgIH1cbiAgICBpZiAodGhpcy5fcHJldkRhdGEgPT09IHJhd0RhdGEgJiYgdGhpcy5fZGF0YVdpdGhGaWVsZENvbmZpZykge1xuICAgICAgcmV0dXJuIHRoaXMuX2RhdGFXaXRoRmllbGRDb25maWc7XG4gICAgfVxuICAgIGNvbnN0IHBsdWdpbkRhdGFTdXBwb3J0ID0gcGx1Z2luLmRhdGFTdXBwb3J0IHx8IHsgYWxlcnRTdGF0ZXM6IGZhbHNlLCBhbm5vdGF0aW9uczogZmFsc2UgfTtcbiAgICBjb25zdCBmaWVsZENvbmZpZ1JlZ2lzdHJ5ID0gcGx1Z2luLmZpZWxkQ29uZmlnUmVnaXN0cnk7XG4gICAgY29uc3QgcHJldkZyYW1lcyA9IChfYiA9IChfYSA9IHRoaXMuX2RhdGFXaXRoRmllbGRDb25maWcpID09IG51bGwgPyB2b2lkIDAgOiBfYS5zZXJpZXMpICE9IG51bGwgPyBfYiA6IFtdO1xuICAgIGNvbnN0IG5ld0ZyYW1lcyA9IGFwcGx5RmllbGRPdmVycmlkZXMoe1xuICAgICAgZGF0YTogcmF3RGF0YS5zZXJpZXMsXG4gICAgICBmaWVsZENvbmZpZzogdGhpcy5zdGF0ZS5maWVsZENvbmZpZyxcbiAgICAgIGZpZWxkQ29uZmlnUmVnaXN0cnksXG4gICAgICByZXBsYWNlVmFyaWFibGVzOiB0aGlzLmludGVycG9sYXRlLFxuICAgICAgdGhlbWU6IGNvbmZpZy50aGVtZTIsXG4gICAgICB0aW1lWm9uZTogKF9jID0gcmF3RGF0YS5yZXF1ZXN0KSA9PSBudWxsID8gdm9pZCAwIDogX2MudGltZXpvbmVcbiAgICB9KTtcbiAgICBpZiAoIWNvbXBhcmVBcnJheVZhbHVlcyhuZXdGcmFtZXMsIHByZXZGcmFtZXMsIGNvbXBhcmVEYXRhRnJhbWVTdHJ1Y3R1cmVzKSkge1xuICAgICAgdGhpcy5fc3RydWN0dXJlUmV2Kys7XG4gICAgfVxuICAgIHRoaXMuX2RhdGFXaXRoRmllbGRDb25maWcgPSBfX3NwcmVhZFByb3BzKF9fc3ByZWFkVmFsdWVzKHt9LCByYXdEYXRhKSwge1xuICAgICAgc3RydWN0dXJlUmV2OiB0aGlzLl9zdHJ1Y3R1cmVSZXYsXG4gICAgICBzZXJpZXM6IG5ld0ZyYW1lc1xuICAgIH0pO1xuICAgIGlmICh0aGlzLl9kYXRhV2l0aEZpZWxkQ29uZmlnLmFubm90YXRpb25zKSB7XG4gICAgICB0aGlzLl9kYXRhV2l0aEZpZWxkQ29uZmlnLmFubm90YXRpb25zID0gYXBwbHlGaWVsZE92ZXJyaWRlcyh7XG4gICAgICAgIGRhdGE6IHRoaXMuX2RhdGFXaXRoRmllbGRDb25maWcuYW5ub3RhdGlvbnMsXG4gICAgICAgIGZpZWxkQ29uZmlnOiB7XG4gICAgICAgICAgZGVmYXVsdHM6IHt9LFxuICAgICAgICAgIG92ZXJyaWRlczogW11cbiAgICAgICAgfSxcbiAgICAgICAgZmllbGRDb25maWdSZWdpc3RyeSxcbiAgICAgICAgcmVwbGFjZVZhcmlhYmxlczogdGhpcy5pbnRlcnBvbGF0ZSxcbiAgICAgICAgdGhlbWU6IGNvbmZpZy50aGVtZTIsXG4gICAgICAgIHRpbWVab25lOiAoX2QgPSByYXdEYXRhLnJlcXVlc3QpID09IG51bGwgPyB2b2lkIDAgOiBfZC50aW1lem9uZVxuICAgICAgfSk7XG4gICAgfVxuICAgIGlmICghcGx1Z2luRGF0YVN1cHBvcnQuYWxlcnRTdGF0ZXMpIHtcbiAgICAgIHRoaXMuX2RhdGFXaXRoRmllbGRDb25maWcuYWxlcnRTdGF0ZSA9IHZvaWQgMDtcbiAgICB9XG4gICAgaWYgKCFwbHVnaW5EYXRhU3VwcG9ydC5hbm5vdGF0aW9ucykge1xuICAgICAgdGhpcy5fZGF0YVdpdGhGaWVsZENvbmZpZy5hbm5vdGF0aW9ucyA9IHZvaWQgMDtcbiAgICB9XG4gICAgdGhpcy5fcHJldkRhdGEgPSByYXdEYXRhO1xuICAgIHJldHVybiB0aGlzLl9kYXRhV2l0aEZpZWxkQ29uZmlnO1xuICB9XG4gIGJ1aWxkUGFuZWxDb250ZXh0KCkge1xuICAgIGNvbnN0IHN5bmMgPSBnZXRDdXJzb3JTeW5jU2NvcGUodGhpcyk7XG4gICAgY29uc3QgY29udGV4dCA9IHtcbiAgICAgIGV2ZW50c1Njb3BlOiBzeW5jID8gc3luYy5nZXRFdmVudHNTY29wZSgpIDogXCJfX2dsb2JhbF9cIixcbiAgICAgIGV2ZW50QnVzOiBzeW5jID8gc3luYy5nZXRFdmVudHNCdXModGhpcykgOiBnZXRBcHBFdmVudHMoKSxcbiAgICAgIGFwcDogQ29yZUFwcC5Vbmtub3duLFxuICAgICAgc3luYzogKCkgPT4ge1xuICAgICAgICBpZiAoc3luYykge1xuICAgICAgICAgIHJldHVybiBzeW5jLnN0YXRlLnN5bmM7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIERhc2hib2FyZEN1cnNvclN5bmMuT2ZmO1xuICAgICAgfSxcbiAgICAgIG9uU2VyaWVzQ29sb3JDaGFuZ2U6IHRoaXMuX29uU2VyaWVzQ29sb3JDaGFuZ2UsXG4gICAgICBvblRvZ2dsZVNlcmllc1Zpc2liaWxpdHk6IHRoaXMuX29uU2VyaWVzVmlzaWJpbGl0eUNoYW5nZSxcbiAgICAgIG9uVG9nZ2xlTGVnZW5kU29ydDogdGhpcy5fb25Ub2dnbGVMZWdlbmRTb3J0LFxuICAgICAgb25JbnN0YW5jZVN0YXRlQ2hhbmdlOiB0aGlzLl9vbkluc3RhbmNlU3RhdGVDaGFuZ2VcbiAgICB9O1xuICAgIGlmICh0aGlzLnN0YXRlLmV4dGVuZFBhbmVsQ29udGV4dCkge1xuICAgICAgdGhpcy5zdGF0ZS5leHRlbmRQYW5lbENvbnRleHQodGhpcywgY29udGV4dCk7XG4gICAgfVxuICAgIHJldHVybiBjb250ZXh0O1xuICB9XG59XG5WaXpQYW5lbC5Db21wb25lbnQgPSBWaXpQYW5lbFJlbmRlcmVyO1xuZnVuY3Rpb24gZ2V0UGFuZWxQbHVnaW5Ob3RGb3VuZChpZCkge1xuICBjb25zdCBwbHVnaW4gPSBuZXcgUGFuZWxQbHVnaW4oKCkgPT4gbnVsbCk7XG4gIHBsdWdpbi5tZXRhID0ge1xuICAgIGlkLFxuICAgIG5hbWU6IGlkLFxuICAgIHNvcnQ6IDEwMCxcbiAgICB0eXBlOiBQbHVnaW5UeXBlLnBhbmVsLFxuICAgIG1vZHVsZTogXCJcIixcbiAgICBiYXNlVXJsOiBcIlwiLFxuICAgIGluZm86IHtcbiAgICAgIGF1dGhvcjoge1xuICAgICAgICBuYW1lOiBcIlwiXG4gICAgICB9LFxuICAgICAgZGVzY3JpcHRpb246IFwiXCIsXG4gICAgICBsaW5rczogW10sXG4gICAgICBsb2dvczoge1xuICAgICAgICBsYXJnZTogXCJcIixcbiAgICAgICAgc21hbGw6IFwicHVibGljL2ltZy9ncmFmYW5hX2ljb24uc3ZnXCJcbiAgICAgIH0sXG4gICAgICBzY3JlZW5zaG90czogW10sXG4gICAgICB1cGRhdGVkOiBcIlwiLFxuICAgICAgdmVyc2lvbjogXCJcIlxuICAgIH1cbiAgfTtcbiAgcmV0dXJuIHBsdWdpbjtcbn1cblxuZXhwb3J0IHsgVml6UGFuZWwgfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtjaGFyc2V0PXV0Zi04O2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENKbWFXeGxJam9pVm1sNlVHRnVaV3d1YW5NaUxDSnpiM1Z5WTJWeklqcGJJaTR1THk0dUx5NHVMeTR1TDNOeVl5OWpiMjF3YjI1bGJuUnpMMVpwZWxCaGJtVnNMMVpwZWxCaGJtVnNMblJ6ZUNKZExDSnpiM1Z5WTJWelEyOXVkR1Z1ZENJNld5SnBiWEJ2Y25RZ2UxeHVJQ0JCWW5OdmJIVjBaVlJwYldWU1lXNW5aU3hjYmlBZ1JtbGxiR1JEYjI1bWFXZFRiM1Z5WTJVc1hHNGdJRkJoYm1Wc1RXOWtaV3dzWEc0Z0lGQmhibVZzVUd4MVoybHVMRnh1SUNCMGIxVjBZeXhjYmlBZ1oyVjBVR0Z1Wld4UGNIUnBiMjV6VjJsMGFFUmxabUYxYkhSekxGeHVJQ0JUWTI5d1pXUldZWEp6TEZ4dUlDQkpiblJsY25CdmJHRjBaVVoxYm1OMGFXOXVMRnh1SUNCRGIzSmxRWEJ3TEZ4dUlDQkVZWE5vWW05aGNtUkRkWEp6YjNKVGVXNWpMRnh1SUNCUVlXNWxiRVJoZEdFc1hHNGdJR052YlhCaGNtVkJjbkpoZVZaaGJIVmxjeXhjYmlBZ1kyOXRjR0Z5WlVSaGRHRkdjbUZ0WlZOMGNuVmpkSFZ5WlhNc1hHNGdJR0Z3Y0d4NVJtbGxiR1JQZG1WeWNtbGtaWE1zWEc0Z0lGQnNkV2RwYmxSNWNHVXNYRzRnSUhKbGJtUmxjazFoY210a2IzZHVMRnh1SUNCUVlXNWxiRkJzZFdkcGJrUmhkR0ZUZFhCd2IzSjBMRnh1ZlNCbWNtOXRJQ2RBWjNKaFptRnVZUzlrWVhSaEp6dGNibWx0Y0c5eWRDQjdJRkJoYm1Wc1EyOXVkR1Y0ZEN3Z1UyVnlhV1Z6Vm1semFXSnBiR2wwZVVOb1lXNW5aVTF2WkdVc0lGWnBla3hsWjJWdVpFOXdkR2x2Ym5NZ2ZTQm1jbTl0SUNkQVozSmhabUZ1WVM5MWFTYzdYRzVwYlhCdmNuUWdleUJqYjI1bWFXY3NJR2RsZEVGd2NFVjJaVzUwY3l3Z1oyVjBVR3gxWjJsdVNXMXdiM0owVlhScGJITWdmU0JtY205dElDZEFaM0poWm1GdVlTOXlkVzUwYVcxbEp6dGNibWx0Y0c5eWRDQjdJRk5qWlc1bFQySnFaV04wUW1GelpTQjlJR1p5YjIwZ0p5NHVMeTR1TDJOdmNtVXZVMk5sYm1WUFltcGxZM1JDWVhObEp6dGNibWx0Y0c5eWRDQjdJSE5qWlc1bFIzSmhjR2dnZlNCbWNtOXRJQ2N1TGk4dUxpOWpiM0psTDNOalpXNWxSM0poY0dnbk8xeHVhVzF3YjNKMElIc2dSR1ZsY0ZCaGNuUnBZV3dzSUZOalpXNWxUMkpxWldOMExDQlRZMlZ1WlU5aWFtVmpkRk4wWVhSbElIMGdabkp2YlNBbkxpNHZMaTR2WTI5eVpTOTBlWEJsY3ljN1hHNWNibWx0Y0c5eWRDQjdJRlpwZWxCaGJtVnNVbVZ1WkdWeVpYSWdmU0JtY205dElDY3VMMVpwZWxCaGJtVnNVbVZ1WkdWeVpYSW5PMXh1YVcxd2IzSjBJSHNnVm1sNlVHRnVaV3hOWlc1MUlIMGdabkp2YlNBbkxpOVdhWHBRWVc1bGJFMWxiblVuTzF4dWFXMXdiM0owSUhzZ1ZtRnlhV0ZpYkdWRVpYQmxibVJsYm1ONVEyOXVabWxuSUgwZ1puSnZiU0FuTGk0dkxpNHZkbUZ5YVdGaWJHVnpMMVpoY21saFlteGxSR1Z3Wlc1a1pXNWplVU52Ym1acFp5YzdYRzVwYlhCdmNuUWdleUJXWVhKcFlXSnNaVU4xYzNSdmJVWnZjbTFoZEhSbGNrWnVJSDBnWm5KdmJTQW5MaTR2TGk0dmRtRnlhV0ZpYkdWekwzUjVjR1Z6Snp0Y2JtbHRjRzl5ZENCN0lITmxjbWxsYzFacGMybGlhV3hwZEhsRGIyNW1hV2RHWVdOMGIzSjVJSDBnWm5KdmJTQW5MaTl6WlhKcFpYTldhWE5wWW1sc2FYUjVRMjl1Wm1sblJtRmpkRzl5ZVNjN1hHNXBiWEJ2Y25RZ2V5QmxiWEIwZVZCaGJtVnNSR0YwWVNCOUlHWnliMjBnSnk0dUx5NHVMMk52Y21VdlUyTmxibVZFWVhSaFRtOWtaU2M3WEc1cGJYQnZjblFnZXlCamFHRnVaMlZUWlhKcFpYTkRiMnh2Y2tOdmJtWnBaMFpoWTNSdmNua2dmU0JtY205dElDY3VMMk52Ykc5eVUyVnlhV1Z6UTI5dVptbG5SbUZqZEc5eWVTYzdYRzVwYlhCdmNuUWdleUJzYjJGa1VHRnVaV3hRYkhWbmFXNVRlVzVqSUgwZ1puSnZiU0FuTGk5eVpXZHBjM1JsY2xKMWJuUnBiV1ZRWVc1bGJGQnNkV2RwYmljN1hHNXBiWEJ2Y25RZ2V5Qm5aWFJEZFhKemIzSlRlVzVqVTJOdmNHVWdmU0JtY205dElDY3VMaTh1TGk5aVpXaGhkbWx2Y25NdlEzVnljMjl5VTNsdVl5YzdYRzVwYlhCdmNuUWdleUJqYkc5dVpVUmxaWEFzSUdselFYSnlZWGtzSUdselJXMXdkSGtzSUcxbGNtZGxMQ0J0WlhKblpWZHBkR2dnZlNCbWNtOXRJQ2RzYjJSaGMyZ25PMXh1YVcxd2IzSjBJSHNnVlhObGNrRmpkR2x2YmtWMlpXNTBJSDBnWm5KdmJTQW5MaTR2TGk0dlkyOXlaUzlsZG1WdWRITW5PMXh1YVcxd2IzSjBJSHNnWlhaaGJIVmhkR1ZVYVcxbFVtRnVaMlVnZlNCbWNtOXRJQ2N1TGk4dUxpOTFkR2xzY3k5bGRtRnNkV0YwWlZScGJXVlNZVzVuWlNjN1hHNXBiWEJ2Y25RZ2V5Qk1hWFpsVG05M1ZHbHRaWElnZlNCbWNtOXRJQ2N1TGk4dUxpOWlaV2hoZG1sdmNuTXZUR2wyWlU1dmQxUnBiV1Z5Snp0Y2JseHVaWGh3YjNKMElHbHVkR1Z5Wm1GalpTQldhWHBRWVc1bGJGTjBZWFJsUEZSUGNIUnBiMjV6SUQwZ2UzMHNJRlJHYVdWc1pFTnZibVpwWnlBOUlIdDlQaUJsZUhSbGJtUnpJRk5qWlc1bFQySnFaV04wVTNSaGRHVWdlMXh1SUNBdktpcGNiaUFnSUNvZ1ZHaHBjeUJwY3lCMWMzVmhiR3g1SUdFZ2NHeDFaMmx1SUdsa0lIUm9ZWFFnY21WbVpYSmxibU5sY3lCaElHTnZjbVVnY0d4MVoybHVJRzl5SUdGdUlHVjRkR1Z5Ym1Gc0lIQnNkV2RwYmk0Z1FuVjBJSFJvYVhNZ1kyRnVJR0ZzYzI4Z2NtVm1aWEpsYm1ObElHRmNiaUFnSUNvZ2NuVnVkR2x0WlNCeVpXZHBjM1JsY21Wa0lGQmhibVZzVUd4MVoybHVJSEpsWjJsemRHVnlaV1FnZG1saElHWjFibU4wYVc5dUlISmxaMmx6ZEdWeVUyTmxibVZRWVc1bGJGQnNkV2RwYmk1Y2JpQWdJQ292WEc0Z0lIQnNkV2RwYmtsa09pQnpkSEpwYm1jN1hHNGdJSFJwZEd4bE9pQnpkSEpwYm1jN1hHNGdJR1JsYzJOeWFYQjBhVzl1UHpvZ2MzUnlhVzVuTzF4dUlDQnZjSFJwYjI1ek9pQkVaV1Z3VUdGeWRHbGhiRHhVVDNCMGFXOXVjejQ3WEc0Z0lHWnBaV3hrUTI5dVptbG5PaUJHYVdWc1pFTnZibVpwWjFOdmRYSmpaVHhFWldWd1VHRnlkR2xoYkR4VVJtbGxiR1JEYjI1bWFXYytQanRjYmlBZ2NHeDFaMmx1Vm1WeWMybHZiajg2SUhOMGNtbHVaenRjYmlBZ1pHbHpjR3hoZVUxdlpHVS9PaUFuWkdWbVlYVnNkQ2NnZkNBbmRISmhibk53WVhKbGJuUW5PMXh1SUNBdktpcGNiaUFnSUNvZ1QyNXNlU0J6YUc5M2N5Qm9aV0ZrWlhJZ2IyNGdhRzkyWlhJc0lHRmljMjlzZFhSc2VTQndiM05wZEdsdmJtVmtJR0ZpYjNabElIUm9aU0J3WVc1bGJDNWNiaUFnSUNvdlhHNGdJR2h2ZG1WeVNHVmhaR1Z5UHpvZ1ltOXZiR1ZoYmp0Y2JpQWdMeW9xWEc0Z0lDQXFJRTltWm5ObGRDQm9iM1psY2tobFlXUmxjaUJ3YjNOcGRHbHZiaUJ2YmlCMGFHVWdlU0JoZUdselhHNGdJQ0FxTDF4dUlDQm9iM1psY2tobFlXUmxjazltWm5ObGREODZJRzUxYldKbGNqdGNiaUFnTHlvcVhHNGdJQ0FxSUU5dWJIa2djMmh2ZDNNZ2RtbDZVR0Z1Wld4TlpXNTFJRzl1SUdodmRtVnlJR2xtSUdaaGJITmxMQ0J2ZEdobGNuZHBjMlVnZEdobElHMWxiblVnYVhNZ1lXeDNZWGx6SUhacGMybGliR1VnYVc0Z2RHaGxJR2hsWVdSbGNseHVJQ0FnS2k5Y2JpQWdjMmh2ZDAxbGJuVkJiSGRoZVhNL09pQmliMjlzWldGdU8xeHVJQ0F2S2lwY2JpQWdJQ29nUkdWbWFXNWxjeUJoSUcxbGJuVWdhVzRnZEdobElIUnZjQ0J5YVdkb2RDQnZaaUIwYUdVZ2NHRnVaV3d1SUZSb1pTQnRaVzUxSUc5aWFtVmpkQ0JwY3lCdmJteDVJR0ZqZEdsMllYUmxaQ0IzYUdWdUlIUm9aU0JrY205d1pHOTNiaUJ0Wlc1MUlHbDBjMlZzWmlCcGN5QnphRzkzYmk1Y2JpQWdJQ29nVTI4Z2RHaGxJR0psYzNRZ2QyRjVJSFJ2SUdGa1pDQmtlVzVoYldsaklHMWxiblVnWVdOMGFXOXVjeUJoYm1RZ2JHbHVhM01nYVhNZ1lua2dZV1JrYVc1bklIUm9aVzBnYVc0Z1lTQmlaV2hoZG1sdmNpQmhkSFJoWTJobFpDQjBieUIwYUdVZ2JXVnVkUzVjYmlBZ0lDb3ZYRzRnSUcxbGJuVS9PaUJXYVhwUVlXNWxiRTFsYm5VN1hHNGdJQzhxS2x4dUlDQWdLaUJFWldacGJtVnpJR0VnYldWdWRTQjBhR0YwSUhKbGJtUmxjbk1nY0dGdVpXd2diR2x1YXk1Y2JpQWdJQ29xTDF4dUlDQjBhWFJzWlVsMFpXMXpQem9nVW1WaFkzUXVVbVZoWTNST2IyUmxJSHdnVTJObGJtVlBZbXBsWTNRZ2ZDQlRZMlZ1WlU5aWFtVmpkRnRkTzF4dUlDQnpaWEpwWlhOTWFXMXBkRDg2SUc1MWJXSmxjanRjYmlBZ2MyVnlhV1Z6VEdsdGFYUlRhRzkzUVd4c1B6b2dZbTl2YkdWaGJqdGNiaUFnTHlvcVhHNGdJQ0FxSUVGa1pDQmhZM1JwYjI0Z2RHOGdkR2hsSUhSdmNDQnlhV2RvZENCd1lXNWxiQ0JvWldGa1pYSmNiaUFnSUNvdlhHNGdJR2hsWVdSbGNrRmpkR2x2Ym5NL09pQlNaV0ZqZEM1U1pXRmpkRTV2WkdVZ2ZDQlRZMlZ1WlU5aWFtVmpkQ0I4SUZOalpXNWxUMkpxWldOMFcxMDdYRzRnSUM4cUtseHVJQ0FnS2lCTllXbHViSGtnWm05eUlHRmtkbUZ1WTJWa0lIVnpaU0JqWVhObGN5QjBhR0YwSUc1bFpXUWdZM1Z6ZEc5dElHaGhibVJzYVc1bklHOW1JRkJoYm1Wc1EyOXVkR1Y0ZENCallXeHNZbUZqYTNNdVhHNGdJQ0FxTDF4dUlDQmxlSFJsYm1SUVlXNWxiRU52Ym5SbGVIUS9PaUFvZG1sNlVHRnVaV3c2SUZacGVsQmhibVZzTENCamIyNTBaWGgwT2lCUVlXNWxiRU52Ym5SbGVIUXBJRDArSUhadmFXUTdYRzVjYmlBZ0x5b3FYRzRnSUNBcUlGTmxkSE1nY0dGdVpXd2dZMmh5YjIxbElHTnZiR3hoY0hObFpDQnpkR0YwWlZ4dUlDQWdLaTljYmlBZ1kyOXNiR0Z3YzJsaWJHVS9PaUJpYjI5c1pXRnVPMXh1SUNCamIyeHNZWEJ6WldRL09pQmliMjlzWldGdU8xeHVJQ0F2S2lwY2JpQWdJQ29nUUdsdWRHVnlibUZzWEc0Z0lDQXFJRTl1YkhrZ1ptOXlJSFZ6WlNCbWNtOXRJR052Y21VZ2RHOGdhR0Z1Wkd4bElHMXBaM0poZEdsdmJpQm1jbTl0SUc5c1pDQmhibWQxYkdGeUlIQmhibVZzYzF4dUlDQWdLaW92WEc0Z0lGOVZUbE5CUmtWZlkzVnpkRzl0VFdsbmNtRjBhVzl1U0dGdVpHeGxjajg2SUNod1lXNWxiRG9nVUdGdVpXeE5iMlJsYkN3Z2NHeDFaMmx1T2lCUVlXNWxiRkJzZFdkcGJpa2dQVDRnZG05cFpEdGNiaUFnTHlvcUlFbHVkR1Z5Ym1Gc0lDb3ZYRzRnSUY5d2JIVm5hVzVNYjJGa1JYSnliM0kvT2lCemRISnBibWM3WEc0Z0lDOHFLaUJKYm5SbGNtNWhiQ0FxTDF4dUlDQmZjR3gxWjJsdVNXNXpkR0Z1WTJWVGRHRjBaVDg2SUdGdWVUdGNiaUFnWDNKbGJtUmxja052ZFc1MFpYSS9PaUJ1ZFcxaVpYSTdYRzU5WEc1Y2JtVjRjRzl5ZENCamJHRnpjeUJXYVhwUVlXNWxiRHhVVDNCMGFXOXVjeUE5SUh0OUxDQlVSbWxsYkdSRGIyNW1hV2NnWlhoMFpXNWtjeUI3ZlNBOUlIdDlQaUJsZUhSbGJtUnpJRk5qWlc1bFQySnFaV04wUW1GelpUeGNiaUFnVm1sNlVHRnVaV3hUZEdGMFpUeFVUM0IwYVc5dWN5d2dWRVpwWld4a1EyOXVabWxuUGx4dVBpQjdYRzRnSUhCMVlteHBZeUJ6ZEdGMGFXTWdRMjl0Y0c5dVpXNTBJRDBnVm1sNlVHRnVaV3hTWlc1a1pYSmxjanRjYmx4dUlDQndjbTkwWldOMFpXUWdYM1poY21saFlteGxSR1Z3Wlc1a1pXNWplU0E5SUc1bGR5QldZWEpwWVdKc1pVUmxjR1Z1WkdWdVkzbERiMjVtYVdjb2RHaHBjeXdnZTF4dUlDQWdJSE4wWVhSbFVHRjBhSE02SUZzbmRHbDBiR1VuTENBbmIzQjBhVzl1Y3ljc0lDZG1hV1ZzWkVOdmJtWnBaeWRkTEZ4dUlDQjlLVHRjYmx4dUlDQXZMeUJPYjNRZ2NHRnlkQ0J2WmlCemRHRjBaU0JoY3lCMGFHbHpJR2x6SUc1dmRDQnpaWEpwWVd4cGVtRmliR1ZjYmlBZ2NISnZkR1ZqZEdWa0lGOXdZVzVsYkVOdmJuUmxlSFEvT2lCUVlXNWxiRU52Ym5SbGVIUTdYRzRnSUhCeWFYWmhkR1VnWDNCc2RXZHBiajg2SUZCaGJtVnNVR3gxWjJsdU8xeHVJQ0J3Y21sMllYUmxJRjl3Y21WMlJHRjBZVDg2SUZCaGJtVnNSR0YwWVR0Y2JpQWdjSEpwZG1GMFpTQmZaR0YwWVZkcGRHaEdhV1ZzWkVOdmJtWnBaejg2SUZCaGJtVnNSR0YwWVR0Y2JpQWdjSEpwZG1GMFpTQmZjM1J5ZFdOMGRYSmxVbVYyT2lCdWRXMWlaWElnUFNBd08xeHVYRzRnSUhCMVlteHBZeUJqYjI1emRISjFZM1J2Y2loemRHRjBaVG9nVUdGeWRHbGhiRHhXYVhwUVlXNWxiRk4wWVhSbFBGUlBjSFJwYjI1ekxDQlVSbWxsYkdSRGIyNW1hV2MrUGlrZ2UxeHVJQ0FnSUhOMWNHVnlLSHRjYmlBZ0lDQWdJRzl3ZEdsdmJuTTZJSHQ5SUdGeklGUlBjSFJwYjI1ekxGeHVJQ0FnSUNBZ1ptbGxiR1JEYjI1bWFXYzZJSHNnWkdWbVlYVnNkSE02SUh0OUxDQnZkbVZ5Y21sa1pYTTZJRnRkSUgwc1hHNGdJQ0FnSUNCMGFYUnNaVG9nSjFScGRHeGxKeXhjYmlBZ0lDQWdJSEJzZFdkcGJrbGtPaUFuZEdsdFpYTmxjbWxsY3ljc1hHNGdJQ0FnSUNCZmNtVnVaR1Z5UTI5MWJuUmxjam9nTUN4Y2JpQWdJQ0FnSUM0dUxuTjBZWFJsTEZ4dUlDQWdJSDBwTzF4dVhHNGdJQ0FnZEdocGN5NWhaR1JCWTNScGRtRjBhVzl1U0dGdVpHeGxjaWdvS1NBOVBpQjdYRzRnSUNBZ0lDQjBhR2x6TGw5dmJrRmpkR2wyWVhSbEtDazdYRzRnSUNBZ2ZTazdYRzVjYmlBZ0lDQnpkR0YwWlM1dFpXNTFQeTVoWkdSQlkzUnBkbUYwYVc5dVNHRnVaR3hsY2lnb0tTQTlQaUI3WEc0Z0lDQWdJQ0IwYUdsekxuQjFZbXhwYzJoRmRtVnVkQ2h1WlhjZ1ZYTmxja0ZqZEdsdmJrVjJaVzUwS0hzZ2IzSnBaMmx1T2lCMGFHbHpMQ0JwYm5SbGNtRmpkR2x2YmpvZ0ozQmhibVZzTFcxbGJuVXRjMmh2ZDI0bklIMHBMQ0IwY25WbEtUdGNiaUFnSUNCOUtUdGNiaUFnZlZ4dVhHNGdJSEJ5YVhaaGRHVWdYMjl1UVdOMGFYWmhkR1VvS1NCN1hHNGdJQ0FnYVdZZ0tDRjBhR2x6TGw5d2JIVm5hVzRwSUh0Y2JpQWdJQ0FnSUhSb2FYTXVYMnh2WVdSUWJIVm5hVzRvZEdocGN5NXpkR0YwWlM1d2JIVm5hVzVKWkNrN1hHNGdJQ0FnZlZ4dUlDQjlYRzVjYmlBZ2NIVmliR2xqSUdadmNtTmxVbVZ1WkdWeUtDazZJSFp2YVdRZ2UxeHVJQ0FnSUM4dklFbHVZM0psYldWdWRHbHVaeUIwYUdVZ2NtVnVaR1Z5SUdOdmRXNTBaWElnYldWaGJuTWdWbWw2VW1Wd1pXRjBaWElnWVc1a0lHbDBjeUJqYUdsc1pISmxiaUIzYVd4c0lHRnNjMjhnY21VdGNtVnVaR1Z5WEc0Z0lDQWdkR2hwY3k1elpYUlRkR0YwWlNoN0lGOXlaVzVrWlhKRGIzVnVkR1Z5T2lBb2RHaHBjeTV6ZEdGMFpTNWZjbVZ1WkdWeVEyOTFiblJsY2lBL1B5QXdLU0FySURFZ2ZTazdYRzRnSUgxY2JseHVJQ0J3Y21sMllYUmxJR0Z6ZVc1aklGOXNiMkZrVUd4MVoybHVLRnh1SUNBZ0lIQnNkV2RwYmtsa09pQnpkSEpwYm1jc1hHNGdJQ0FnYjNabGNuZHlhWFJsVDNCMGFXOXVjejg2SUVSbFpYQlFZWEowYVdGc1BIdDlQaXhjYmlBZ0lDQnZkbVZ5ZDNKcGRHVkdhV1ZzWkVOdmJtWnBaejg2SUVacFpXeGtRMjl1Wm1sblUyOTFjbU5sTEZ4dUlDQWdJR2x6UVdaMFpYSlFiSFZuYVc1RGFHRnVaMlUvT2lCaWIyOXNaV0Z1WEc0Z0lDa2dlMXh1SUNBZ0lHTnZibk4wSUhCc2RXZHBiaUE5SUd4dllXUlFZVzVsYkZCc2RXZHBibE41Ym1Nb2NHeDFaMmx1U1dRcE8xeHVYRzRnSUNBZ2FXWWdLSEJzZFdkcGJpa2dlMXh1SUNBZ0lDQWdkR2hwY3k1ZmNHeDFaMmx1VEc5aFpHVmtLSEJzZFdkcGJpd2diM1psY25keWFYUmxUM0IwYVc5dWN5d2diM1psY25keWFYUmxSbWxsYkdSRGIyNW1hV2NzSUdselFXWjBaWEpRYkhWbmFXNURhR0Z1WjJVcE8xeHVJQ0FnSUgwZ1pXeHpaU0I3WEc0Z0lDQWdJQ0JqYjI1emRDQjdJR2x0Y0c5eWRGQmhibVZzVUd4MVoybHVJSDBnUFNCblpYUlFiSFZuYVc1SmJYQnZjblJWZEdsc2N5Z3BPMXh1WEc0Z0lDQWdJQ0IwY25rZ2UxeHVJQ0FnSUNBZ0lDQmpiMjV6ZENCeVpYTjFiSFFnUFNCaGQyRnBkQ0JwYlhCdmNuUlFZVzVsYkZCc2RXZHBiaWh3YkhWbmFXNUpaQ2s3WEc0Z0lDQWdJQ0FnSUhSb2FYTXVYM0JzZFdkcGJreHZZV1JsWkNoeVpYTjFiSFFzSUc5MlpYSjNjbWwwWlU5d2RHbHZibk1zSUc5MlpYSjNjbWwwWlVacFpXeGtRMjl1Wm1sbkxDQnBjMEZtZEdWeVVHeDFaMmx1UTJoaGJtZGxLVHRjYmlBZ0lDQWdJSDBnWTJGMFkyZ2dLR1Z5Y2pvZ2RXNXJibTkzYmlrZ2UxeHVJQ0FnSUNBZ0lDQjBhR2x6TGw5d2JIVm5hVzVNYjJGa1pXUW9aMlYwVUdGdVpXeFFiSFZuYVc1T2IzUkdiM1Z1WkNod2JIVm5hVzVKWkNrcE8xeHVYRzRnSUNBZ0lDQWdJR2xtSUNobGNuSWdhVzV6ZEdGdVkyVnZaaUJGY25KdmNpa2dlMXh1SUNBZ0lDQWdJQ0FnSUhSb2FYTXVjMlYwVTNSaGRHVW9leUJmY0d4MVoybHVURzloWkVWeWNtOXlPaUJsY25JdWJXVnpjMkZuWlNCOUtUdGNiaUFnSUNBZ0lDQWdmVnh1SUNBZ0lDQWdmVnh1SUNBZ0lIMWNiaUFnZlZ4dVhHNGdJSEIxWW14cFl5Qm5aWFJNWldkaFkzbFFZVzVsYkVsa0tDa2dlMXh1SUNBZ0lHTnZibk4wSUhCaGJtVnNTV1FnUFNCd1lYSnpaVWx1ZENoMGFHbHpMbk4wWVhSbExtdGxlU0V1Y21Wd2JHRmpaU2duY0dGdVpXd3RKeXdnSnljcExDQXhNQ2s3WEc0Z0lDQWdhV1lnS0dselRtRk9LSEJoYm1Wc1NXUXBLU0I3WEc0Z0lDQWdJQ0J5WlhSMWNtNGdNRHRjYmlBZ0lDQjlYRzVjYmlBZ0lDQnlaWFIxY200Z2NHRnVaV3hKWkR0Y2JpQWdmVnh1WEc0Z0lIQnlhWFpoZEdVZ1lYTjVibU1nWDNCc2RXZHBia3h2WVdSbFpDaGNiaUFnSUNCd2JIVm5hVzQ2SUZCaGJtVnNVR3gxWjJsdUxGeHVJQ0FnSUc5MlpYSjNjbWwwWlU5d2RHbHZibk0vT2lCRVpXVndVR0Z5ZEdsaGJEeDdmVDRzWEc0Z0lDQWdiM1psY25keWFYUmxSbWxsYkdSRGIyNW1hV2MvT2lCR2FXVnNaRU52Ym1acFoxTnZkWEpqWlN4Y2JpQWdJQ0JwYzBGbWRHVnlVR3gxWjJsdVEyaGhibWRsUHpvZ1ltOXZiR1ZoYmx4dUlDQXBJSHRjYmlBZ0lDQmpiMjV6ZENCN0lHOXdkR2x2Ym5Nc0lHWnBaV3hrUTI5dVptbG5MQ0IwYVhSc1pTd2djR3gxWjJsdVZtVnljMmx2Yml3Z1gxVk9VMEZHUlY5amRYTjBiMjFOYVdkeVlYUnBiMjVJWVc1a2JHVnlJSDBnUFNCMGFHbHpMbk4wWVhSbE8xeHVYRzRnSUNBZ1kyOXVjM1FnY0dGdVpXdzZJRkJoYm1Wc1RXOWtaV3dnUFNCN1hHNGdJQ0FnSUNCMGFYUnNaU3hjYmlBZ0lDQWdJRzl3ZEdsdmJuTXNYRzRnSUNBZ0lDQm1hV1ZzWkVOdmJtWnBaeXhjYmlBZ0lDQWdJR2xrT2lCMGFHbHpMbWRsZEV4bFoyRmplVkJoYm1Wc1NXUW9LU3hjYmlBZ0lDQWdJSFI1Y0dVNklIQnNkV2RwYmk1dFpYUmhMbWxrTEZ4dUlDQWdJQ0FnY0d4MVoybHVWbVZ5YzJsdmJqb2djR3gxWjJsdVZtVnljMmx2Yml4Y2JpQWdJQ0I5TzF4dVhHNGdJQ0FnYVdZZ0tHOTJaWEozY21sMFpVOXdkR2x2Ym5NcElIdGNiaUFnSUNBZ0lIQmhibVZzTG05d2RHbHZibk1nUFNCdmRtVnlkM0pwZEdWUGNIUnBiMjV6TzF4dUlDQWdJSDFjYmx4dUlDQWdJR2xtSUNodmRtVnlkM0pwZEdWR2FXVnNaRU52Ym1acFp5a2dlMXh1SUNBZ0lDQWdjR0Z1Wld3dVptbGxiR1JEYjI1bWFXY2dQU0J2ZG1WeWQzSnBkR1ZHYVdWc1pFTnZibVpwWnp0Y2JpQWdJQ0I5WEc1Y2JpQWdJQ0JqYjI1emRDQmpkWEp5Wlc1MFZtVnljMmx2YmlBOUlIUm9hWE11WDJkbGRGQnNkV2RwYmxabGNuTnBiMjRvY0d4MVoybHVLVHRjYmx4dUlDQWdJRjlWVGxOQlJrVmZZM1Z6ZEc5dFRXbG5jbUYwYVc5dVNHRnVaR3hsY2o4dUtIQmhibVZzTENCd2JIVm5hVzRwTzF4dVhHNGdJQ0FnYVdZZ0tIQnNkV2RwYmk1dmJsQmhibVZzVFdsbmNtRjBhVzl1SUNZbUlHTjFjbkpsYm5SV1pYSnphVzl1SUNFOVBTQndiSFZuYVc1V1pYSnphVzl1SUNZbUlDRnBjMEZtZEdWeVVHeDFaMmx1UTJoaGJtZGxLU0I3WEc0Z0lDQWdJQ0F2THlCVWFHVnpaU0J0YVdkeVlYUnBiMjRnYUdGdVpHeGxjbk1nWVd4emJ5QnRkWFJoZEdVZ2NHRnVaV3d1Wm1sbGJHUkRiMjVtYVdjZ2RHOGdiV2xuY21GMFpTQm1hV1ZzWkVOdmJtWnBaMXh1SUNBZ0lDQWdjR0Z1Wld3dWIzQjBhVzl1Y3lBOUlHRjNZV2wwSUhCc2RXZHBiaTV2YmxCaGJtVnNUV2xuY21GMGFXOXVLSEJoYm1Wc0tUdGNiaUFnSUNCOVhHNWNiaUFnSUNCamIyNXpkQ0IzYVhSb1JHVm1ZWFZzZEhNZ1BTQm5aWFJRWVc1bGJFOXdkR2x2Ym5OWGFYUm9SR1ZtWVhWc2RITW9lMXh1SUNBZ0lDQWdjR3gxWjJsdUxGeHVJQ0FnSUNBZ1kzVnljbVZ1ZEU5d2RHbHZibk02SUhCaGJtVnNMbTl3ZEdsdmJuTXNYRzRnSUNBZ0lDQmpkWEp5Wlc1MFJtbGxiR1JEYjI1bWFXYzZJSEJoYm1Wc0xtWnBaV3hrUTI5dVptbG5MRnh1SUNBZ0lDQWdhWE5CWm5SbGNsQnNkV2RwYmtOb1lXNW5aVG9nYVhOQlpuUmxjbEJzZFdkcGJrTm9ZVzVuWlNBL1B5Qm1ZV3h6WlN4Y2JpQWdJQ0I5S1R0Y2JseHVJQ0FnSUhSb2FYTXVYM0JzZFdkcGJpQTlJSEJzZFdkcGJqdGNibHh1SUNBZ0lIUm9hWE11YzJWMFUzUmhkR1VvZTF4dUlDQWdJQ0FnYjNCMGFXOXVjem9nZDJsMGFFUmxabUYxYkhSekxtOXdkR2x2Ym5NZ1lYTWdSR1ZsY0ZCaGNuUnBZV3c4VkU5d2RHbHZibk0rTEZ4dUlDQWdJQ0FnWm1sbGJHUkRiMjVtYVdjNklIZHBkR2hFWldaaGRXeDBjeTVtYVdWc1pFTnZibVpwWnl4Y2JpQWdJQ0FnSUhCc2RXZHBibFpsY25OcGIyNDZJR04xY25KbGJuUldaWEp6YVc5dUxGeHVJQ0FnSUNBZ2NHeDFaMmx1U1dRNklIQnNkV2RwYmk1dFpYUmhMbWxrTEZ4dUlDQWdJSDBwTzF4dVhHNGdJQ0FnTHk4Z1RtOXVJR1JoZEdFZ2NHRnVaV3h6SUc1bFpXUnpJSFJ2SUdKbElISmxMWEpsYm1SbGNtVmtJSGRvWlc0Z2RHbHRaU0J5WVc1blpTQmphR0Z1WjJWY2JpQWdJQ0JwWmlBb2NHeDFaMmx1TG0xbGRHRXVjMnRwY0VSaGRHRlJkV1Z5ZVNrZ2UxeHVJQ0FnSUNBZ1kyOXVjM1FnYzJObGJtVlVhVzFsVW1GdVoyVWdQU0J6WTJWdVpVZHlZWEJvTG1kbGRGUnBiV1ZTWVc1blpTaDBhR2x6S1R0Y2JpQWdJQ0FnSUhSb2FYTXVYM04xWW5NdVlXUmtLSE5qWlc1bFZHbHRaVkpoYm1kbExuTjFZbk5qY21saVpWUnZVM1JoZEdVb0tDa2dQVDRnZEdocGN5NW1iM0pqWlZKbGJtUmxjaWdwS1NrN1hHNGdJQ0FnZlZ4dUlDQjlYRzVjYmlBZ2NISnBkbUYwWlNCZloyVjBVR3gxWjJsdVZtVnljMmx2Ymlod2JIVm5hVzQ2SUZCaGJtVnNVR3gxWjJsdUtUb2djM1J5YVc1bklIdGNiaUFnSUNCeVpYUjFjbTRnY0d4MVoybHVJQ1ltSUhCc2RXZHBiaTV0WlhSaExtbHVabTh1ZG1WeWMybHZiaUEvSUhCc2RXZHBiaTV0WlhSaExtbHVabTh1ZG1WeWMybHZiaUE2SUdOdmJtWnBaeTVpZFdsc1pFbHVabTh1ZG1WeWMybHZianRjYmlBZ2ZWeHVYRzRnSUhCMVlteHBZeUJuWlhSUWJIVm5hVzRvS1RvZ1VHRnVaV3hRYkhWbmFXNGdmQ0IxYm1SbFptbHVaV1FnZTF4dUlDQWdJSEpsZEhWeWJpQjBhR2x6TGw5d2JIVm5hVzQ3WEc0Z0lIMWNibHh1SUNCd2RXSnNhV01nWjJWMFVHRnVaV3hEYjI1MFpYaDBLQ2s2SUZCaGJtVnNRMjl1ZEdWNGRDQjdYRzRnSUNBZ2RHaHBjeTVmY0dGdVpXeERiMjUwWlhoMElEOC9QU0IwYUdsekxtSjFhV3hrVUdGdVpXeERiMjUwWlhoMEtDazdYRzVjYmlBZ0lDQnlaWFIxY200Z2RHaHBjeTVmY0dGdVpXeERiMjUwWlhoMElUdGNiaUFnZlZ4dVhHNGdJSEIxWW14cFl5QnZibFJwYldWU1lXNW5aVU5vWVc1blpTQTlJQ2gwYVcxbFVtRnVaMlU2SUVGaWMyOXNkWFJsVkdsdFpWSmhibWRsS1NBOVBpQjdYRzRnSUNBZ1kyOXVjM1FnYzJObGJtVlVhVzFsVW1GdVoyVWdQU0J6WTJWdVpVZHlZWEJvTG1kbGRGUnBiV1ZTWVc1blpTaDBhR2x6S1R0Y2JpQWdJQ0J6WTJWdVpWUnBiV1ZTWVc1blpTNXZibFJwYldWU1lXNW5aVU5vWVc1blpTaDdYRzRnSUNBZ0lDQnlZWGM2SUh0Y2JpQWdJQ0FnSUNBZ1puSnZiVG9nZEc5VmRHTW9kR2x0WlZKaGJtZGxMbVp5YjIwcExGeHVJQ0FnSUNBZ0lDQjBiem9nZEc5VmRHTW9kR2x0WlZKaGJtZGxMblJ2S1N4Y2JpQWdJQ0FnSUgwc1hHNGdJQ0FnSUNCbWNtOXRPaUIwYjFWMFl5aDBhVzFsVW1GdVoyVXVabkp2YlNrc1hHNGdJQ0FnSUNCMGJ6b2dkRzlWZEdNb2RHbHRaVkpoYm1kbExuUnZLU3hjYmlBZ0lDQjlLVHRjYmlBZ2ZUdGNibHh1SUNCd2RXSnNhV01nWjJWMFZHbHRaVkpoYm1kbElEMGdLR1JoZEdFL09pQlFZVzVsYkVSaGRHRXBJRDArSUh0Y2JpQWdJQ0JqYjI1emRDQnNhWFpsVG05M1ZHbHRaWElnUFNCelkyVnVaVWR5WVhCb0xtWnBibVJQWW1wbFkzUW9kR2hwY3l3Z0tHOHBJRDArSUc4Z2FXNXpkR0Z1WTJWdlppQk1hWFpsVG05M1ZHbHRaWElwTzF4dUlDQWdJR052Ym5OMElITmpaVzVsVkdsdFpWSmhibWRsSUQwZ2MyTmxibVZIY21Gd2FDNW5aWFJVYVcxbFVtRnVaMlVvZEdocGN5azdYRzRnSUNBZ2FXWWdLR3hwZG1WT2IzZFVhVzFsY2lCcGJuTjBZVzVqWlc5bUlFeHBkbVZPYjNkVWFXMWxjaUFtSmlCc2FYWmxUbTkzVkdsdFpYSXVhWE5GYm1GaWJHVmtLU0I3WEc0Z0lDQWdJQ0J5WlhSMWNtNGdaWFpoYkhWaGRHVlVhVzFsVW1GdVoyVW9YRzRnSUNBZ0lDQWdJSE5qWlc1bFZHbHRaVkpoYm1kbExuTjBZWFJsTG1aeWIyMHNYRzRnSUNBZ0lDQWdJSE5qWlc1bFZHbHRaVkpoYm1kbExuTjBZWFJsTG5SdkxGeHVJQ0FnSUNBZ0lDQnpZMlZ1WlZScGJXVlNZVzVuWlM1blpYUlVhVzFsV205dVpTZ3BMRnh1SUNBZ0lDQWdJQ0J6WTJWdVpWUnBiV1ZTWVc1blpTNXpkR0YwWlM1bWFYTmpZV3haWldGeVUzUmhjblJOYjI1MGFDeGNiaUFnSUNBZ0lDQWdjMk5sYm1WVWFXMWxVbUZ1WjJVdWMzUmhkR1V1VlU1VFFVWkZYMjV2ZDBSbGJHRjVYRzRnSUNBZ0lDQXBPMXh1SUNBZ0lIMWNibHh1SUNBZ0lHTnZibk4wSUhCc2RXZHBiaUE5SUhSb2FYTXVaMlYwVUd4MVoybHVLQ2s3WEc0Z0lDQWdhV1lnS0hCc2RXZHBiaUFtSmlBaGNHeDFaMmx1TG0xbGRHRXVjMnRwY0VSaGRHRlJkV1Z5ZVNBbUppQmtZWFJoSUNZbUlHUmhkR0V1ZEdsdFpWSmhibWRsS1NCN1hHNGdJQ0FnSUNCeVpYUjFjbTRnWkdGMFlTNTBhVzFsVW1GdVoyVTdYRzRnSUNBZ2ZWeHVYRzRnSUNBZ2NtVjBkWEp1SUhOalpXNWxWR2x0WlZKaGJtZGxMbk4wWVhSbExuWmhiSFZsTzF4dUlDQjlPMXh1WEc0Z0lIQjFZbXhwWXlCaGMzbHVZeUJqYUdGdVoyVlFiSFZuYVc1VWVYQmxLSEJzZFdkcGJrbGtPaUJ6ZEhKcGJtY3NJRzVsZDA5d2RHbHZibk0vT2lCRVpXVndVR0Z5ZEdsaGJEeDdmVDRzSUc1bGQwWnBaV3hrUTI5dVptbG5Qem9nUm1sbGJHUkRiMjVtYVdkVGIzVnlZMlVwSUh0Y2JpQWdJQ0JqYjI1emRDQjdJRzl3ZEdsdmJuTTZJSEJ5WlhaUGNIUnBiMjV6TENCbWFXVnNaRU52Ym1acFp6b2djSEpsZGtacFpXeGtRMjl1Wm1sbkxDQndiSFZuYVc1SlpEb2djSEpsZGxCc2RXZHBia2xrSUgwZ1BTQjBhR2x6TG5OMFlYUmxPMXh1WEc0Z0lDQWdMeTlqYkdWaGNpQm1hV1ZzWkNCamIyNW1hV2NnWTJGamFHVWdkRzhnZFhCa1lYUmxJR2wwSUd4aGRHVnlYRzRnSUNBZ2RHaHBjeTVmWkdGMFlWZHBkR2hHYVdWc1pFTnZibVpwWnlBOUlIVnVaR1ZtYVc1bFpEdGNibHh1SUNBZ0lDOHZJRWxtSUhOMFlYUmxMbkJzZFdkcGJrbGtJR2x6SUdGc2NtVmhaSGtnZEdobElHTnZjbkpsWTNRZ2NHeDFaMmx1SUhkbElHUnZiaWQwSUhSeVpXRjBJSFJvYVhNZ1lYTWdjR3hoYVc0Z2RYTmxjaUJ3WVc1bGJDQjBlWEJsSUdOb1lXNW5aVnh1SUNBZ0lHTnZibk4wSUdselFXWjBaWEpRYkhWbmFXNURhR0Z1WjJVZ1BTQjBhR2x6TG5OMFlYUmxMbkJzZFdkcGJrbGtJQ0U5UFNCd2JIVm5hVzVKWkR0Y2JpQWdJQ0JoZDJGcGRDQjBhR2x6TGw5c2IyRmtVR3gxWjJsdUtIQnNkV2RwYmtsa0xDQnVaWGRQY0hScGIyNXpJRDgvSUh0OUxDQnVaWGRHYVdWc1pFTnZibVpwWnl3Z2FYTkJablJsY2xCc2RXZHBia05vWVc1blpTazdYRzVjYmlBZ0lDQmpiMjV6ZENCd1lXNWxiRG9nVUdGdVpXeE5iMlJsYkNBOUlIdGNiaUFnSUNBZ0lIUnBkR3hsT2lCMGFHbHpMbk4wWVhSbExuUnBkR3hsTEZ4dUlDQWdJQ0FnYjNCMGFXOXVjem9nZEdocGN5NXpkR0YwWlM1dmNIUnBiMjV6TEZ4dUlDQWdJQ0FnWm1sbGJHUkRiMjVtYVdjNklIUm9hWE11YzNSaGRHVXVabWxsYkdSRGIyNW1hV2NzWEc0Z0lDQWdJQ0JwWkRvZ01TeGNiaUFnSUNBZ0lIUjVjR1U2SUhCc2RXZHBia2xrTEZ4dUlDQWdJSDA3WEc1Y2JpQWdJQ0F2THlCdmJsQmhibVZzVkhsd1pVTm9ZVzVuWldRZ2FYTWdiV0ZwYm14NUlIVnpaV1FnWW5rZ2NHeDFaMmx1Y3lCMGJ5QnRhV2R5WVhSbElHWnliMjBnUVc1bmRXeGhjaUIwYnlCU1pXRmpkQzVjYmlBZ0lDQXZMeUJHYjNJZ1pYaGhiWEJzWlN3Z2RHaHBjeUIzYVd4c0lHMXBaM0poZEdVZ2IzQjBhVzl1Y3lCbWNtOXRJQ2RuY21Gd2FDY2dkRzhnSjNScGJXVnpaWEpwWlhNbklHbG1JSFJvWlNCd2NtVjJhVzkxY3lCaGJtUWdibVYzSUhCc2RXZHBiaUJKUkNCdFlYUmphR1Z6TGx4dUlDQWdJR052Ym5OMElIVndaR0YwWldSUGNIUnBiMjV6SUQwZ2RHaHBjeTVmY0d4MVoybHVQeTV2YmxCaGJtVnNWSGx3WlVOb1lXNW5aV1EvTGlod1lXNWxiQ3dnY0hKbGRsQnNkV2RwYmtsa0xDQndjbVYyVDNCMGFXOXVjeXdnY0hKbGRrWnBaV3hrUTI5dVptbG5LVHRjYmx4dUlDQWdJR2xtSUNoMWNHUmhkR1ZrVDNCMGFXOXVjeUFtSmlBaGFYTkZiWEIwZVNoMWNHUmhkR1ZrVDNCMGFXOXVjeWtwSUh0Y2JpQWdJQ0FnSUhSb2FYTXViMjVQY0hScGIyNXpRMmhoYm1kbEtIVndaR0YwWldSUGNIUnBiMjV6TENCMGNuVmxMQ0IwY25WbEtUdGNiaUFnSUNCOVhHNGdJSDFjYmx4dUlDQndkV0pzYVdNZ2IyNVVhWFJzWlVOb1lXNW5aU0E5SUNoMGFYUnNaVG9nYzNSeWFXNW5LU0E5UGlCN1hHNGdJQ0FnZEdocGN5NXpaWFJUZEdGMFpTaDdJSFJwZEd4bElIMHBPMXh1SUNCOU8xeHVYRzRnSUhCMVlteHBZeUJ2YmtSbGMyTnlhWEIwYVc5dVEyaGhibWRsSUQwZ0tHUmxjMk55YVhCMGFXOXVPaUJ6ZEhKcGJtY3BJRDArSUh0Y2JpQWdJQ0IwYUdsekxuTmxkRk4wWVhSbEtIc2daR1Z6WTNKcGNIUnBiMjRnZlNrN1hHNGdJSDA3WEc1Y2JpQWdjSFZpYkdsaklHOXVSR2x6Y0d4aGVVMXZaR1ZEYUdGdVoyVWdQU0FvWkdsemNHeGhlVTF2WkdVNklDZGtaV1poZFd4MEp5QjhJQ2QwY21GdWMzQmhjbVZ1ZENjcElEMCtJSHRjYmlBZ0lDQjBhR2x6TG5ObGRGTjBZWFJsS0hzZ1pHbHpjR3hoZVUxdlpHVWdmU2s3WEc0Z0lIMDdYRzVjYmlBZ2NIVmliR2xqSUc5dVZHOW5aMnhsUTI5c2JHRndjMlVnUFNBb1kyOXNiR0Z3YzJWa09pQmliMjlzWldGdUtTQTlQaUI3WEc0Z0lDQWdkR2hwY3k1elpYUlRkR0YwWlNoN1hHNGdJQ0FnSUNCamIyeHNZWEJ6WldRc1hHNGdJQ0FnZlNrN1hHNGdJSDA3WEc1Y2JpQWdjSFZpYkdsaklHOXVUM0IwYVc5dWMwTm9ZVzVuWlNBOUlDaHZjSFJwYjI1elZYQmtZWFJsT2lCRVpXVndVR0Z5ZEdsaGJEeFVUM0IwYVc5dWN6NHNJSEpsY0d4aFkyVWdQU0JtWVd4elpTd2dhWE5CWm5SbGNsQnNkV2RwYmtOb1lXNW5aU0E5SUdaaGJITmxLU0E5UGlCN1hHNGdJQ0FnWTI5dWMzUWdleUJtYVdWc1pFTnZibVpwWnl3Z2IzQjBhVzl1Y3lCOUlEMGdkR2hwY3k1emRHRjBaVHRjYmx4dUlDQWdJQzh2SUZkb1pXNGdjbVZ3YkdGalpTQnBjeUIwY25WbExDQjNaU0IzWVc1MElIUnZJSEpsY0d4aFkyVWdkR2hsSUdWdWRHbHlaU0J2Y0hScGIyNXpJRzlpYW1WamRDNGdSR1ZtWVhWc2RDQjNhV3hzSUdKbElHRndjR3hwWldRdVhHNGdJQ0FnWTI5dWMzUWdibVY0ZEU5d2RHbHZibk1nUFNCeVpYQnNZV05sWEc0Z0lDQWdJQ0EvSUc5d2RHbHZibk5WY0dSaGRHVmNiaUFnSUNBZ0lEb2diV1Z5WjJWWGFYUm9LR05zYjI1bFJHVmxjQ2h2Y0hScGIyNXpLU3dnYjNCMGFXOXVjMVZ3WkdGMFpTd2dLRzlpYWxaaGJIVmxMQ0J6Y21OV1lXeDFaU3dnYTJWNUxDQnZZbW9wSUQwK0lIdGNiaUFnSUNBZ0lDQWdJQ0JwWmlBb2FYTkJjbkpoZVNoemNtTldZV3gxWlNrcElIdGNiaUFnSUNBZ0lDQWdJQ0FnSUhKbGRIVnliaUJ6Y21OV1lXeDFaVHRjYmlBZ0lDQWdJQ0FnSUNCOVhHNGdJQ0FnSUNBZ0lDQWdMeThnU1dZZ1kzVnpkRzl0YVhwbGNpQnlaWFIxY201eklIVnVaR1ZtYVc1bFpDd2diV1Z5WjJsdVp5QnBjeUJvWVc1a2JHVmtJR0o1SUhSb1pTQnRaWFJvYjJRZ2FXNXpkR1ZoWkZ4dUlDQWdJQ0FnSUNBZ0lDOHZJSE52SUhkbElHNWxaV1FnZEc4Z2IzWmxjbkpwWkdVZ2RHaGxJSFpoYkhWbElHbHVJSFJvWlNCdlltcGxZM1FnYVc1emRHVmhaRnh1SUNBZ0lDQWdJQ0FnSUdsbUlDaHZZbXBXWVd4MVpTQWhQVDBnYzNKalZtRnNkV1VnSmlZZ2RIbHdaVzltSUhOeVkxWmhiSFZsSUQwOVBTQW5kVzVrWldacGJtVmtKeWtnZTF4dUlDQWdJQ0FnSUNBZ0lDQWdiMkpxVzJ0bGVWMGdQU0J6Y21OV1lXeDFaVHRjYmlBZ0lDQWdJQ0FnSUNBZ0lISmxkSFZ5Ymp0Y2JpQWdJQ0FnSUNBZ0lDQjlYRzRnSUNBZ0lDQWdJQ0FnY21WMGRYSnVPMXh1SUNBZ0lDQWdJQ0I5S1R0Y2JseHVJQ0FnSUdOdmJuTjBJSGRwZEdoRVpXWmhkV3gwY3lBOUlHZGxkRkJoYm1Wc1QzQjBhVzl1YzFkcGRHaEVaV1poZFd4MGN5aDdYRzRnSUNBZ0lDQndiSFZuYVc0NklIUm9hWE11WDNCc2RXZHBiaUVzWEc0Z0lDQWdJQ0JqZFhKeVpXNTBUM0IwYVc5dWN6b2dibVY0ZEU5d2RHbHZibk1zWEc0Z0lDQWdJQ0JqZFhKeVpXNTBSbWxsYkdSRGIyNW1hV2M2SUdacFpXeGtRMjl1Wm1sbkxGeHVJQ0FnSUNBZ2FYTkJablJsY2xCc2RXZHBia05vWVc1blpUb2dhWE5CWm5SbGNsQnNkV2RwYmtOb1lXNW5aU3hjYmlBZ0lDQjlLVHRjYmx4dUlDQWdJSFJvYVhNdWMyVjBVM1JoZEdVb2UxeHVJQ0FnSUNBZ2IzQjBhVzl1Y3pvZ2QybDBhRVJsWm1GMWJIUnpMbTl3ZEdsdmJuTWdZWE1nUkdWbGNGQmhjblJwWVd3OFZFOXdkR2x2Ym5NK0xGeHVJQ0FnSUNBZ1gzSmxibVJsY2tOdmRXNTBaWEk2SUNoMGFHbHpMbk4wWVhSbExsOXlaVzVrWlhKRGIzVnVkR1Z5SUQ4L0lEQXBJQ3NnTVN4Y2JpQWdJQ0I5S1R0Y2JpQWdmVHRjYmx4dUlDQndkV0pzYVdNZ2IyNUdhV1ZzWkVOdmJtWnBaME5vWVc1blpTQTlJQ2htYVdWc1pFTnZibVpwWjFWd1pHRjBaVG9nUm1sbGJHUkRiMjVtYVdkVGIzVnlZMlU4UkdWbGNGQmhjblJwWVd3OFZFWnBaV3hrUTI5dVptbG5QajRzSUhKbGNHeGhZMlUvT2lCaWIyOXNaV0Z1S1NBOVBpQjdYRzRnSUNBZ1kyOXVjM1FnZXlCbWFXVnNaRU52Ym1acFp5d2diM0IwYVc5dWN5QjlJRDBnZEdocGN5NXpkR0YwWlR0Y2JseHVJQ0FnSUM4dklGZG9aVzRnY21Wd2JHRmpaU0JwY3lCMGNuVmxMQ0IzWlNCM1lXNTBJSFJ2SUhKbGNHeGhZMlVnZEdobElHVnVkR2x5WlNCbWFXVnNaQ0JqYjI1bWFXY3VJRVJsWm1GMWJIUWdkMmxzYkNCaVpTQmhjSEJzYVdWa0xseHVJQ0FnSUdOdmJuTjBJRzVsZUhSR2FXVnNaRU52Ym1acFp5QTlJSEpsY0d4aFkyVWdQeUJtYVdWc1pFTnZibVpwWjFWd1pHRjBaU0E2SUcxbGNtZGxLR05zYjI1bFJHVmxjQ2htYVdWc1pFTnZibVpwWnlrc0lHWnBaV3hrUTI5dVptbG5WWEJrWVhSbEtUdGNibHh1SUNBZ0lHTnZibk4wSUhkcGRHaEVaV1poZFd4MGN5QTlJR2RsZEZCaGJtVnNUM0IwYVc5dWMxZHBkR2hFWldaaGRXeDBjeWg3WEc0Z0lDQWdJQ0J3YkhWbmFXNDZJSFJvYVhNdVgzQnNkV2RwYmlFc1hHNGdJQ0FnSUNCamRYSnlaVzUwVDNCMGFXOXVjem9nYjNCMGFXOXVjeXhjYmlBZ0lDQWdJR04xY25KbGJuUkdhV1ZzWkVOdmJtWnBaem9nYm1WNGRFWnBaV3hrUTI5dVptbG5MRnh1SUNBZ0lDQWdhWE5CWm5SbGNsQnNkV2RwYmtOb1lXNW5aVG9nWm1Gc2MyVXNYRzRnSUNBZ2ZTazdYRzVjYmlBZ0lDQjBhR2x6TGw5a1lYUmhWMmwwYUVacFpXeGtRMjl1Wm1sbklEMGdkVzVrWldacGJtVmtPMXh1SUNBZ0lIUm9hWE11YzJWMFUzUmhkR1VvZXlCbWFXVnNaRU52Ym1acFp6b2dkMmwwYUVSbFptRjFiSFJ6TG1acFpXeGtRMjl1Wm1sbklIMHBPMXh1SUNCOU8xeHVYRzRnSUhCMVlteHBZeUJwYm5SbGNuQnZiR0YwWlNBOUlDZ29kbUZzZFdVNklITjBjbWx1Wnl3Z2MyTnZjR1ZrUHpvZ1UyTnZjR1ZrVm1GeWN5d2dabTl5YldGMFB6b2djM1J5YVc1bklId2dWbUZ5YVdGaWJHVkRkWE4wYjIxR2IzSnRZWFIwWlhKR2Jpa2dQVDRnZTF4dUlDQWdJSEpsZEhWeWJpQnpZMlZ1WlVkeVlYQm9MbWx1ZEdWeWNHOXNZWFJsS0hSb2FYTXNJSFpoYkhWbExDQnpZMjl3WldRc0lHWnZjbTFoZENrN1hHNGdJSDBwSUdGeklFbHVkR1Z5Y0c5c1lYUmxSblZ1WTNScGIyNDdYRzVjYmlBZ2NIVmliR2xqSUdkbGRFUmxjMk55YVhCMGFXOXVJRDBnS0NrZ1BUNGdlMXh1SUNBZ0lIUm9hWE11Y0hWaWJHbHphRVYyWlc1MEtHNWxkeUJWYzJWeVFXTjBhVzl1UlhabGJuUW9leUJ2Y21sbmFXNDZJSFJvYVhNc0lHbHVkR1Z5WVdOMGFXOXVPaUFuY0dGdVpXd3RaR1Z6WTNKcGNIUnBiMjR0YzJodmQyNG5JSDBwTENCMGNuVmxLVHRjYmx4dUlDQWdJR052Ym5OMElIc2daR1Z6WTNKcGNIUnBiMjRnZlNBOUlIUm9hWE11YzNSaGRHVTdYRzRnSUNBZ2FXWWdLR1JsYzJOeWFYQjBhVzl1S1NCN1hHNGdJQ0FnSUNCamIyNXpkQ0J0WVhKclpHOTNiaUE5SUhSb2FYTXVhVzUwWlhKd2IyeGhkR1VvWkdWelkzSnBjSFJwYjI0cE8xeHVJQ0FnSUNBZ2NtVjBkWEp1SUhKbGJtUmxjazFoY210a2IzZHVLRzFoY210a2IzZHVLVHRjYmlBZ0lDQjlYRzRnSUNBZ2NtVjBkWEp1SUNjbk8xeHVJQ0I5TzF4dVhHNGdJSEIxWW14cFl5QmpiR1ZoY2tacFpXeGtRMjl1Wm1sblEyRmphR1VvS1NCN1hHNGdJQ0FnZEdocGN5NWZaR0YwWVZkcGRHaEdhV1ZzWkVOdmJtWnBaeUE5SUhWdVpHVm1hVzVsWkR0Y2JpQWdmVnh1WEc0Z0lDOHFLbHh1SUNBZ0tpQkRZV3hzWldRZ1puSnZiU0IwYUdVZ2NtVmhZM1FnY21WdVpHVnlJSEJoZEdnZ2RHOGdZWEJ3YkhrZ2RHaGxJR1pwWld4a0lHTnZibVpwWnlCMGJ5QjBhR1VnWkdGMFlTQndjbTkyYVdSbFpDQmllU0IwYUdVZ1pHRjBZU0J3Y205MmFXUmxjbHh1SUNBZ0tpOWNiaUFnY0hWaWJHbGpJR0Z3Y0d4NVJtbGxiR1JEYjI1bWFXY29jbUYzUkdGMFlUODZJRkJoYm1Wc1JHRjBZU2s2SUZCaGJtVnNSR0YwWVNCN1hHNGdJQ0FnWTI5dWMzUWdjR3gxWjJsdUlEMGdkR2hwY3k1ZmNHeDFaMmx1TzF4dVhHNGdJQ0FnYVdZZ0tDRndiSFZuYVc0Z2ZId2djR3gxWjJsdUxtMWxkR0V1YzJ0cGNFUmhkR0ZSZFdWeWVTQjhmQ0FoY21GM1JHRjBZU2tnZTF4dUlDQWdJQ0FnTHk4Z1ZFOUVUeUJ6WlhSMWNDQjBhVzFsSUhKaGJtZGxJSE4xWW5OamNtbHdkR2x2YmlCcGJuTjBaV0ZrWEc0Z0lDQWdJQ0J5WlhSMWNtNGdaVzF3ZEhsUVlXNWxiRVJoZEdFN1hHNGdJQ0FnZlZ4dVhHNGdJQ0FnTHk4Z1NXWWdkR2hsSUdSaGRHRWdhWE1nZEdobElITmhiV1VnWVhNZ2JHRnpkQ0IwYVcxbExDQjNaU0JqWVc0Z2MydHBjQ0IwYUdVZ1ptbGxiR1FnWTI5dVptbG5JR0Z3Y0d4NUlITjBaWEFnWVc1a0lHcDFjM1FnY21WMGRYSnVJSE5oYldVZ2NtVnpkV3gwSUdGeklHeGhjM1FnZEdsdFpWeHVJQ0FnSUdsbUlDaDBhR2x6TGw5d2NtVjJSR0YwWVNBOVBUMGdjbUYzUkdGMFlTQW1KaUIwYUdsekxsOWtZWFJoVjJsMGFFWnBaV3hrUTI5dVptbG5LU0I3WEc0Z0lDQWdJQ0J5WlhSMWNtNGdkR2hwY3k1ZlpHRjBZVmRwZEdoR2FXVnNaRU52Ym1acFp6dGNiaUFnSUNCOVhHNWNiaUFnSUNCamIyNXpkQ0J3YkhWbmFXNUVZWFJoVTNWd2NHOXlkRG9nVUdGdVpXeFFiSFZuYVc1RVlYUmhVM1Z3Y0c5eWRDQTlJSEJzZFdkcGJpNWtZWFJoVTNWd2NHOXlkQ0I4ZkNCN0lHRnNaWEowVTNSaGRHVnpPaUJtWVd4elpTd2dZVzV1YjNSaGRHbHZibk02SUdaaGJITmxJSDA3WEc1Y2JpQWdJQ0JqYjI1emRDQm1hV1ZzWkVOdmJtWnBaMUpsWjJsemRISjVJRDBnY0d4MVoybHVMbVpwWld4a1EyOXVabWxuVW1WbmFYTjBjbms3WEc0Z0lDQWdZMjl1YzNRZ2NISmxka1p5WVcxbGN5QTlJSFJvYVhNdVgyUmhkR0ZYYVhSb1JtbGxiR1JEYjI1bWFXYy9Mbk5sY21sbGN5QS9QeUJiWFR0Y2JpQWdJQ0JqYjI1emRDQnVaWGRHY21GdFpYTWdQU0JoY0hCc2VVWnBaV3hrVDNabGNuSnBaR1Z6S0h0Y2JpQWdJQ0FnSUdSaGRHRTZJSEpoZDBSaGRHRXVjMlZ5YVdWekxGeHVJQ0FnSUNBZ1ptbGxiR1JEYjI1bWFXYzZJSFJvYVhNdWMzUmhkR1V1Wm1sbGJHUkRiMjVtYVdjc1hHNGdJQ0FnSUNCbWFXVnNaRU52Ym1acFoxSmxaMmx6ZEhKNUxGeHVJQ0FnSUNBZ2NtVndiR0ZqWlZaaGNtbGhZbXhsY3pvZ2RHaHBjeTVwYm5SbGNuQnZiR0YwWlN4Y2JpQWdJQ0FnSUhSb1pXMWxPaUJqYjI1bWFXY3VkR2hsYldVeUxGeHVJQ0FnSUNBZ2RHbHRaVnB2Ym1VNklISmhkMFJoZEdFdWNtVnhkV1Z6ZEQ4dWRHbHRaWHB2Ym1Vc1hHNGdJQ0FnZlNrN1hHNWNiaUFnSUNCcFppQW9JV052YlhCaGNtVkJjbkpoZVZaaGJIVmxjeWh1WlhkR2NtRnRaWE1zSUhCeVpYWkdjbUZ0WlhNc0lHTnZiWEJoY21WRVlYUmhSbkpoYldWVGRISjFZM1IxY21WektTa2dlMXh1SUNBZ0lDQWdkR2hwY3k1ZmMzUnlkV04wZFhKbFVtVjJLeXM3WEc0Z0lDQWdmVnh1WEc0Z0lDQWdkR2hwY3k1ZlpHRjBZVmRwZEdoR2FXVnNaRU52Ym1acFp5QTlJSHRjYmlBZ0lDQWdJQzR1TG5KaGQwUmhkR0VzWEc0Z0lDQWdJQ0J6ZEhKMVkzUjFjbVZTWlhZNklIUm9hWE11WDNOMGNuVmpkSFZ5WlZKbGRpeGNiaUFnSUNBZ0lITmxjbWxsY3pvZ2JtVjNSbkpoYldWekxGeHVJQ0FnSUgwN1hHNWNiaUFnSUNCcFppQW9kR2hwY3k1ZlpHRjBZVmRwZEdoR2FXVnNaRU52Ym1acFp5NWhibTV2ZEdGMGFXOXVjeWtnZTF4dUlDQWdJQ0FnZEdocGN5NWZaR0YwWVZkcGRHaEdhV1ZzWkVOdmJtWnBaeTVoYm01dmRHRjBhVzl1Y3lBOUlHRndjR3g1Um1sbGJHUlBkbVZ5Y21sa1pYTW9lMXh1SUNBZ0lDQWdJQ0JrWVhSaE9pQjBhR2x6TGw5a1lYUmhWMmwwYUVacFpXeGtRMjl1Wm1sbkxtRnVibTkwWVhScGIyNXpMRnh1SUNBZ0lDQWdJQ0JtYVdWc1pFTnZibVpwWnpvZ2UxeHVJQ0FnSUNBZ0lDQWdJR1JsWm1GMWJIUnpPaUI3ZlN4Y2JpQWdJQ0FnSUNBZ0lDQnZkbVZ5Y21sa1pYTTZJRnRkTEZ4dUlDQWdJQ0FnSUNCOUxGeHVJQ0FnSUNBZ0lDQm1hV1ZzWkVOdmJtWnBaMUpsWjJsemRISjVMRnh1SUNBZ0lDQWdJQ0J5WlhCc1lXTmxWbUZ5YVdGaWJHVnpPaUIwYUdsekxtbHVkR1Z5Y0c5c1lYUmxMRnh1SUNBZ0lDQWdJQ0IwYUdWdFpUb2dZMjl1Wm1sbkxuUm9aVzFsTWl4Y2JpQWdJQ0FnSUNBZ2RHbHRaVnB2Ym1VNklISmhkMFJoZEdFdWNtVnhkV1Z6ZEQ4dWRHbHRaWHB2Ym1Vc1hHNGdJQ0FnSUNCOUtUdGNiaUFnSUNCOVhHNWNiaUFnSUNCcFppQW9JWEJzZFdkcGJrUmhkR0ZUZFhCd2IzSjBMbUZzWlhKMFUzUmhkR1Z6S1NCN1hHNGdJQ0FnSUNCMGFHbHpMbDlrWVhSaFYybDBhRVpwWld4a1EyOXVabWxuTG1Gc1pYSjBVM1JoZEdVZ1BTQjFibVJsWm1sdVpXUTdYRzRnSUNBZ2ZWeHVYRzRnSUNBZ2FXWWdLQ0Z3YkhWbmFXNUVZWFJoVTNWd2NHOXlkQzVoYm01dmRHRjBhVzl1Y3lrZ2UxeHVJQ0FnSUNBZ2RHaHBjeTVmWkdGMFlWZHBkR2hHYVdWc1pFTnZibVpwWnk1aGJtNXZkR0YwYVc5dWN5QTlJSFZ1WkdWbWFXNWxaRHRjYmlBZ0lDQjlYRzVjYmlBZ0lDQjBhR2x6TGw5d2NtVjJSR0YwWVNBOUlISmhkMFJoZEdFN1hHNGdJQ0FnY21WMGRYSnVJSFJvYVhNdVgyUmhkR0ZYYVhSb1JtbGxiR1JEYjI1bWFXYzdYRzRnSUgxY2JseHVJQ0J3ZFdKc2FXTWdiMjVEWVc1alpXeFJkV1Z5ZVNBOUlDZ3BJRDArSUh0Y2JpQWdJQ0IwYUdsekxuQjFZbXhwYzJoRmRtVnVkQ2h1WlhjZ1ZYTmxja0ZqZEdsdmJrVjJaVzUwS0hzZ2IzSnBaMmx1T2lCMGFHbHpMQ0JwYm5SbGNtRmpkR2x2YmpvZ0ozQmhibVZzTFdOaGJtTmxiQzF4ZFdWeWVTMWpiR2xqYTJWa0p5QjlLU3dnZEhKMVpTazdYRzRnSUNBZ1kyOXVjM1FnWkdGMFlTQTlJSE5qWlc1bFIzSmhjR2d1WjJWMFJHRjBZU2gwYUdsektUdGNiaUFnSUNCa1lYUmhMbU5oYm1ObGJGRjFaWEo1UHk0b0tUdGNiaUFnZlR0Y2JseHVJQ0J3ZFdKc2FXTWdiMjVUZEdGMGRYTk5aWE56WVdkbFEyeHBZMnNnUFNBb0tTQTlQaUI3WEc0Z0lDQWdkR2hwY3k1d2RXSnNhWE5vUlhabGJuUW9ibVYzSUZWelpYSkJZM1JwYjI1RmRtVnVkQ2g3SUc5eWFXZHBiam9nZEdocGN5d2dhVzUwWlhKaFkzUnBiMjQ2SUNkd1lXNWxiQzF6ZEdGMGRYTXRiV1Z6YzJGblpTMWpiR2xqYTJWa0p5QjlLU3dnZEhKMVpTazdYRzRnSUgwN1hHNWNiaUFnTHlvcVhHNGdJQ0FxSUZCaGJtVnNJR052Ym5SbGVIUWdablZ1WTNScGIyNXpYRzRnSUNBcUwxeHVJQ0J3Y21sMllYUmxJRjl2YmxObGNtbGxjME52Ykc5eVEyaGhibWRsSUQwZ0tHeGhZbVZzT2lCemRISnBibWNzSUdOdmJHOXlPaUJ6ZEhKcGJtY3BJRDArSUh0Y2JpQWdJQ0IwYUdsekxtOXVSbWxsYkdSRGIyNW1hV2REYUdGdVoyVW9ZMmhoYm1kbFUyVnlhV1Z6UTI5c2IzSkRiMjVtYVdkR1lXTjBiM0o1S0d4aFltVnNMQ0JqYjJ4dmNpd2dkR2hwY3k1emRHRjBaUzVtYVdWc1pFTnZibVpwWnlrcE8xeHVJQ0I5TzF4dVhHNGdJSEJ5YVhaaGRHVWdYMjl1VTJWeWFXVnpWbWx6YVdKcGJHbDBlVU5vWVc1blpTQTlJQ2hzWVdKbGJEb2djM1J5YVc1bkxDQnRiMlJsT2lCVFpYSnBaWE5XYVhOcFltbHNhWFI1UTJoaGJtZGxUVzlrWlNrZ1BUNGdlMXh1SUNBZ0lHbG1JQ2doZEdocGN5NWZaR0YwWVZkcGRHaEdhV1ZzWkVOdmJtWnBaeWtnZTF4dUlDQWdJQ0FnY21WMGRYSnVPMXh1SUNBZ0lIMWNibHh1SUNBZ0lIUm9hWE11YjI1R2FXVnNaRU52Ym1acFowTm9ZVzVuWlNoY2JpQWdJQ0FnSUhObGNtbGxjMVpwYzJsaWFXeHBkSGxEYjI1bWFXZEdZV04wYjNKNUtHeGhZbVZzTENCdGIyUmxMQ0IwYUdsekxuTjBZWFJsTG1acFpXeGtRMjl1Wm1sbkxDQjBhR2x6TGw5a1lYUmhWMmwwYUVacFpXeGtRMjl1Wm1sbkxuTmxjbWxsY3lrc1hHNGdJQ0FnSUNCMGNuVmxYRzRnSUNBZ0tUdGNiaUFnZlR0Y2JseHVJQ0J3Y21sMllYUmxJRjl2YmtsdWMzUmhibU5sVTNSaGRHVkRhR0Z1WjJVZ1BTQW9jM1JoZEdVNklHRnVlU2tnUFQ0Z2UxeHVJQ0FnSUdsbUlDaDBhR2x6TGw5d1lXNWxiRU52Ym5SbGVIUXBJSHRjYmlBZ0lDQWdJSFJvYVhNdVgzQmhibVZzUTI5dWRHVjRkQ0E5SUh0Y2JpQWdJQ0FnSUNBZ0xpNHVkR2hwY3k1ZmNHRnVaV3hEYjI1MFpYaDBMRnh1SUNBZ0lDQWdJQ0JwYm5OMFlXNWpaVk4wWVhSbE9pQnpkR0YwWlN4Y2JpQWdJQ0FnSUgwN1hHNGdJQ0FnZlZ4dVhHNGdJQ0FnZEdocGN5NXpaWFJUZEdGMFpTaDdJRjl3YkhWbmFXNUpibk4wWVc1alpWTjBZWFJsT2lCemRHRjBaU0I5S1R0Y2JpQWdmVHRjYmx4dUlDQndjbWwyWVhSbElGOXZibFJ2WjJkc1pVeGxaMlZ1WkZOdmNuUWdQU0FvYzI5eWRFdGxlVG9nYzNSeWFXNW5LU0E5UGlCN1hHNGdJQ0FnWTI5dWMzUWdiR1ZuWlc1a1QzQjBhVzl1Y3pvZ1ZtbDZUR1ZuWlc1a1QzQjBhVzl1Y3lBOUlDaDBhR2x6TG5OMFlYUmxMbTl3ZEdsdmJuTWdZWE1nWVc1NUtTNXNaV2RsYm1RN1hHNWNiaUFnSUNBdkx5QlhaU0JrYjI0bmRDQjNZVzUwSUhSdklHUnZJR0Z1ZVhSb2FXNW5JSGRvWlc0Z2JHVm5aVzVrSUc5d2RHbHZibk1nWVhKbElHNXZkQ0JoZG1GcGJHRmliR1ZjYmlBZ0lDQnBaaUFvSVd4bFoyVnVaRTl3ZEdsdmJuTXBJSHRjYmlBZ0lDQWdJSEpsZEhWeWJqdGNiaUFnSUNCOVhHNWNiaUFnSUNCc1pYUWdjMjl5ZEVSbGMyTWdQU0JzWldkbGJtUlBjSFJwYjI1ekxuTnZjblJFWlhOak8xeHVJQ0FnSUd4bGRDQnpiM0owUW5rZ1BTQnNaV2RsYm1SUGNIUnBiMjV6TG5OdmNuUkNlVHRjYmlBZ0lDQnBaaUFvYzI5eWRFdGxlU0FoUFQwZ2MyOXlkRUo1S1NCN1hHNGdJQ0FnSUNCemIzSjBSR1Z6WXlBOUlIVnVaR1ZtYVc1bFpEdGNiaUFnSUNCOVhHNWNiaUFnSUNBdkx5QnBaaUJoYkhKbFlXUjVJSE52Y25RZ1lYTmpaVzVrYVc1bkxDQmthWE5oWW14bElITnZjblJwYm1kY2JpQWdJQ0JwWmlBb2MyOXlkRVJsYzJNZ1BUMDlJR1poYkhObEtTQjdYRzRnSUNBZ0lDQnpiM0owUW5rZ1BTQjFibVJsWm1sdVpXUTdYRzRnSUNBZ0lDQnpiM0owUkdWell5QTlJSFZ1WkdWbWFXNWxaRHRjYmlBZ0lDQjlJR1ZzYzJVZ2UxeHVJQ0FnSUNBZ2MyOXlkRVJsYzJNZ1BTQWhjMjl5ZEVSbGMyTTdYRzRnSUNBZ0lDQnpiM0owUW5rZ1BTQnpiM0owUzJWNU8xeHVJQ0FnSUgxY2JseHVJQ0FnSUhSb2FYTXViMjVQY0hScGIyNXpRMmhoYm1kbEtGeHVJQ0FnSUNBZ2UxeHVJQ0FnSUNBZ0lDQXVMaTUwYUdsekxuTjBZWFJsTG05d2RHbHZibk1zWEc0Z0lDQWdJQ0FnSUd4bFoyVnVaRG9nZXlBdUxpNXNaV2RsYm1SUGNIUnBiMjV6TENCemIzSjBRbmtzSUhOdmNuUkVaWE5qSUgwc1hHNGdJQ0FnSUNCOUlHRnpJRlJQY0hScGIyNXpMRnh1SUNBZ0lDQWdkSEoxWlZ4dUlDQWdJQ2s3WEc0Z0lIMDdYRzVjYmlBZ2NISnBkbUYwWlNCaWRXbHNaRkJoYm1Wc1EyOXVkR1Y0ZENncE9pQlFZVzVsYkVOdmJuUmxlSFFnZTF4dUlDQWdJR052Ym5OMElITjVibU1nUFNCblpYUkRkWEp6YjNKVGVXNWpVMk52Y0dVb2RHaHBjeWs3WEc1Y2JpQWdJQ0JqYjI1emRDQmpiMjUwWlhoMElEMGdlMXh1SUNBZ0lDQWdaWFpsYm5SelUyTnZjR1U2SUhONWJtTWdQeUJ6ZVc1akxtZGxkRVYyWlc1MGMxTmpiM0JsS0NrZ09pQW5YMTluYkc5aVlXeGZKeXhjYmlBZ0lDQWdJR1YyWlc1MFFuVnpPaUJ6ZVc1aklEOGdjM2x1WXk1blpYUkZkbVZ1ZEhOQ2RYTW9kR2hwY3lrZ09pQm5aWFJCY0hCRmRtVnVkSE1vS1N4Y2JpQWdJQ0FnSUdGd2NEb2dRMjl5WlVGd2NDNVZibXR1YjNkdUxGeHVJQ0FnSUNBZ2MzbHVZem9nS0NrZ1BUNGdlMXh1SUNBZ0lDQWdJQ0JwWmlBb2MzbHVZeWtnZTF4dUlDQWdJQ0FnSUNBZ0lISmxkSFZ5YmlCemVXNWpMbk4wWVhSbExuTjVibU03WEc0Z0lDQWdJQ0FnSUgxY2JpQWdJQ0FnSUNBZ2NtVjBkWEp1SUVSaGMyaGliMkZ5WkVOMWNuTnZjbE41Ym1NdVQyWm1PMXh1SUNBZ0lDQWdmU3hjYmlBZ0lDQWdJRzl1VTJWeWFXVnpRMjlzYjNKRGFHRnVaMlU2SUhSb2FYTXVYMjl1VTJWeWFXVnpRMjlzYjNKRGFHRnVaMlVzWEc0Z0lDQWdJQ0J2YmxSdloyZHNaVk5sY21sbGMxWnBjMmxpYVd4cGRIazZJSFJvYVhNdVgyOXVVMlZ5YVdWelZtbHphV0pwYkdsMGVVTm9ZVzVuWlN4Y2JpQWdJQ0FnSUc5dVZHOW5aMnhsVEdWblpXNWtVMjl5ZERvZ2RHaHBjeTVmYjI1VWIyZG5iR1ZNWldkbGJtUlRiM0owTEZ4dUlDQWdJQ0FnYjI1SmJuTjBZVzVqWlZOMFlYUmxRMmhoYm1kbE9pQjBhR2x6TGw5dmJrbHVjM1JoYm1ObFUzUmhkR1ZEYUdGdVoyVXNYRzRnSUNBZ2ZUdGNibHh1SUNBZ0lHbG1JQ2gwYUdsekxuTjBZWFJsTG1WNGRHVnVaRkJoYm1Wc1EyOXVkR1Y0ZENrZ2UxeHVJQ0FnSUNBZ2RHaHBjeTV6ZEdGMFpTNWxlSFJsYm1SUVlXNWxiRU52Ym5SbGVIUW9kR2hwY3l3Z1kyOXVkR1Y0ZENrN1hHNGdJQ0FnZlZ4dVhHNGdJQ0FnY21WMGRYSnVJR052Ym5SbGVIUTdYRzRnSUgxY2JuMWNibHh1Wm5WdVkzUnBiMjRnWjJWMFVHRnVaV3hRYkhWbmFXNU9iM1JHYjNWdVpDaHBaRG9nYzNSeWFXNW5LVG9nVUdGdVpXeFFiSFZuYVc0Z2UxeHVJQ0JqYjI1emRDQndiSFZuYVc0Z1BTQnVaWGNnVUdGdVpXeFFiSFZuYVc0b0tDa2dQVDRnYm5Wc2JDazdYRzVjYmlBZ2NHeDFaMmx1TG0xbGRHRWdQU0I3WEc0Z0lDQWdhV1E2SUdsa0xGeHVJQ0FnSUc1aGJXVTZJR2xrTEZ4dUlDQWdJSE52Y25RNklERXdNQ3hjYmlBZ0lDQjBlWEJsT2lCUWJIVm5hVzVVZVhCbExuQmhibVZzTEZ4dUlDQWdJRzF2WkhWc1pUb2dKeWNzWEc0Z0lDQWdZbUZ6WlZWeWJEb2dKeWNzWEc0Z0lDQWdhVzVtYnpvZ2UxeHVJQ0FnSUNBZ1lYVjBhRzl5T2lCN1hHNGdJQ0FnSUNBZ0lHNWhiV1U2SUNjbkxGeHVJQ0FnSUNBZ2ZTeGNiaUFnSUNBZ0lHUmxjMk55YVhCMGFXOXVPaUFuSnl4Y2JpQWdJQ0FnSUd4cGJtdHpPaUJiWFN4Y2JpQWdJQ0FnSUd4dloyOXpPaUI3WEc0Z0lDQWdJQ0FnSUd4aGNtZGxPaUFuSnl4Y2JpQWdJQ0FnSUNBZ2MyMWhiR3c2SUNkd2RXSnNhV012YVcxbkwyZHlZV1poYm1GZmFXTnZiaTV6ZG1jbkxGeHVJQ0FnSUNBZ2ZTeGNiaUFnSUNBZ0lITmpjbVZsYm5Ob2IzUnpPaUJiWFN4Y2JpQWdJQ0FnSUhWd1pHRjBaV1E2SUNjbkxGeHVJQ0FnSUNBZ2RtVnljMmx2YmpvZ0p5Y3NYRzRnSUNBZ2ZTeGNiaUFnZlR0Y2JseHVJQ0J5WlhSMWNtNGdjR3gxWjJsdU8xeHVmVnh1SWwwc0ltNWhiV1Z6SWpwYlhTd2liV0Z3Y0dsdVozTWlPaUk3T3pzN096czdPenM3T3pzN096czdPenM3T3pzN096czdPenM3T3pzN096czdPMEZCYjBkUExFMUJRVTBzYVVKQlFUaEVMR1ZCUlhwRkxFTkJRVUU3UVVGQlFTeEZRV05QTEZsQlFWa3NTMEZCZFVRc1JVRkJRVHRCUVhCSU5VVXNTVUZCUVN4SlFVRkJMRVZCUVVFc1EwRkJRVHRCUVhGSVNTeEpRVUZOTEV0QlFVRXNRMEZCUVN4alFVRkJMRU5CUVVFN1FVRkJRU3hOUVVOS0xGTkJRVk1zUlVGQlF6dEJRVUZCTEUxQlExWXNZVUZCWVN4RlFVRkZMRkZCUVVFc1JVRkJWU3hGUVVGSkxFVkJRVUVzVTBGQlFTeEZRVUZYTEVWQlFVY3NSVUZCUVR0QlFVRkJMRTFCUXpORExFdEJRVThzUlVGQlFTeFBRVUZCTzBGQlFVRXNUVUZEVUN4UlFVRlZMRVZCUVVFc1dVRkJRVHRCUVVGQkxFMUJRMVlzWTBGQlowSXNSVUZCUVN4RFFVRkJPMEZCUVVFc1MwRkJRU3hGUVVOaUxFdEJRMG9zUTBGQlFTeERRVUZCTEVOQlFVRTdRVUZ1UWtnc1NVRkJWU3hKUVVGQkxFTkJRVUVzYlVKQlFVRXNSMEZCYzBJc1NVRkJTU3gzUWtGQlFTeERRVUY1UWl4SlFVRk5MRVZCUVVFN1FVRkJRU3hOUVVOcVJTeFZRVUZaTEVWQlFVRXNRMEZCUXl4UFFVRlRMRVZCUVVFc1UwRkJRU3hGUVVGWExHRkJRV0VzUTBGQlFUdEJRVUZCTEV0QlF5OURMRU5CUVVFc1EwRkJRVHRCUVU5RUxFbEJRVUVzU1VGQlFTeERRVUZSTEdGQlFYZENMRWRCUVVFc1EwRkJRU3hEUVVGQk8wRkJNRWxvUXl4SlFVRlBMRWxCUVVFc1EwRkJRU3hwUWtGQlFTeEhRVUZ2UWl4RFFVRkRMRk5CUVdsRExFdEJRVUU3UVVGRE0wUXNUVUZCVFN4TlFVRkJMR05CUVVFc1IwRkJhVUlzVlVGQlZ5eERRVUZCTEZsQlFVRXNRMEZCWVN4SlFVRkpMRU5CUVVFc1EwRkJRVHRCUVVOdVJDeE5RVUZCTEdOQlFVRXNRMEZCWlN4cFFrRkJhMElzUTBGQlFUdEJRVUZCTEZGQlF5OUNMRWRCUVVzc1JVRkJRVHRCUVVGQkxGVkJRMGdzU1VGQlFTeEZRVUZOTEV0QlFVMHNRMEZCUVN4VFFVRkJMRU5CUVZVc1NVRkJTU3hEUVVGQk8wRkJRVUVzVlVGRE1VSXNSVUZCUVN4RlFVRkpMRXRCUVUwc1EwRkJRU3hUUVVGQkxFTkJRVlVzUlVGQlJTeERRVUZCTzBGQlFVRXNVMEZEZUVJN1FVRkJRU3hSUVVOQkxFbEJRVUVzUlVGQlRTeExRVUZOTEVOQlFVRXNVMEZCUVN4RFFVRlZMRWxCUVVrc1EwRkJRVHRCUVVGQkxGRkJRekZDTEVWQlFVRXNSVUZCU1N4TFFVRk5MRU5CUVVFc1UwRkJRU3hEUVVGVkxFVkJRVVVzUTBGQlFUdEJRVUZCTEU5QlEzWkNMRU5CUVVFc1EwRkJRVHRCUVVGQkxFdEJRMGdzUTBGQlFUdEJRVVZCTEVsQlFVOHNTVUZCUVN4RFFVRkJMRmxCUVVFc1IwRkJaU3hEUVVGRExFbEJRWEZDTEV0QlFVRTdRVUZETVVNc1RVRkJRU3hOUVVGTkxHVkJRV1VzVlVGQlZ5eERRVUZCTEZWQlFVRXNRMEZCVnl4TlFVRk5MRU5CUVVNc1EwRkJRU3hMUVVGTkxHRkJRV0VzV1VGQldTeERRVUZCTEVOQlFVRTdRVUZEYWtZc1RVRkJUU3hOUVVGQkxHTkJRVUVzUjBGQmFVSXNWVUZCVnl4RFFVRkJMRmxCUVVFc1EwRkJZU3hKUVVGSkxFTkJRVUVzUTBGQlFUdEJRVU51UkN4TlFVRkpMRWxCUVVFc1dVRkJRU3haUVVGM1FpeFpRVUZuUWl4SlFVRkJMRmxCUVVFc1EwRkJZU3hUUVVGWExFVkJRVUU3UVVGRGJFVXNVVUZCVHl4UFFVRkJMR2xDUVVGQk8wRkJRVUVzVlVGRFRDeGxRVUZsTEV0QlFVMHNRMEZCUVN4SlFVRkJPMEZCUVVFc1ZVRkRja0lzWlVGQlpTeExRVUZOTEVOQlFVRXNSVUZCUVR0QlFVRkJMRlZCUTNKQ0xHVkJRV1VzVjBGQldTeEZRVUZCTzBGQlFVRXNWVUZETTBJc1pVRkJaU3hMUVVGTkxFTkJRVUVzYjBKQlFVRTdRVUZCUVN4VlFVTnlRaXhsUVVGbExFdEJRVTBzUTBGQlFTeGxRVUZCTzBGQlFVRXNVMEZEZGtJc1EwRkJRVHRCUVVGQkxFOUJRMFk3UVVGRlFTeE5RVUZOTEUxQlFVRXNUVUZCUVN4SFFVRlRMRXRCUVVzc1UwRkJWU3hGUVVGQkxFTkJRVUU3UVVGRE9VSXNUVUZCUVN4SlFVRkpMRlZCUVZVc1EwRkJReXhOUVVGQkxFTkJRVThzUzBGQlN5eGhRVUZwUWl4SlFVRkJMRWxCUVVFc1NVRkJVU3hMUVVGTExGTkJRVmNzUlVGQlFUdEJRVU5zUlN4UlFVRkJMRTlCUVU4c1NVRkJTeXhEUVVGQkxGTkJRVUVzUTBGQlFUdEJRVUZCTEU5QlEyUTdRVUZGUVN4TlFVRkJMRTlCUVU4c1pVRkJaU3hMUVVGTkxFTkJRVUVzUzBGQlFTeERRVUZCTzBGQlFVRXNTMEZET1VJc1EwRkJRVHRCUVRaQ1FTeEpRVUZQTEVsQlFVRXNRMEZCUVN4aFFVRkJMRWRCUVdkQ0xFTkJRVU1zUzBGQmEwSXNTMEZCUVR0QlFVTjRReXhOUVVGTExFbEJRVUVzUTBGQlFTeFJRVUZCTEVOQlFWTXNSVUZCUlN4TFFVRkJMRVZCUVU4c1EwRkJRU3hEUVVGQk8wRkJRVUVzUzBGRGVrSXNRMEZCUVR0QlFVVkJMRWxCUVU4c1NVRkJRU3hEUVVGQkxHMUNRVUZCTEVkQlFYTkNMRU5CUVVNc1YwRkJkMElzUzBGQlFUdEJRVU53UkN4TlFVRkxMRWxCUVVFc1EwRkJRU3hSUVVGQkxFTkJRVk1zUlVGQlJTeFhRVUZCTEVWQlFXRXNRMEZCUVN4RFFVRkJPMEZCUVVFc1MwRkRMMElzUTBGQlFUdEJRVVZCTEVsQlFVOHNTVUZCUVN4RFFVRkJMRzFDUVVGQkxFZEJRWE5DTEVOQlFVTXNWMEZCTWtNc1MwRkJRVHRCUVVOMlJTeE5RVUZMTEVsQlFVRXNRMEZCUVN4UlFVRkJMRU5CUVZNc1JVRkJSU3hYUVVGQkxFVkJRV0VzUTBGQlFTeERRVUZCTzBGQlFVRXNTMEZETDBJc1EwRkJRVHRCUVVWQkxFbEJRVThzU1VGQlFTeERRVUZCTEdkQ1FVRkJMRWRCUVcxQ0xFTkJRVU1zVTBGQmRVSXNTMEZCUVR0QlFVTm9SQ3hOUVVGQkxFbEJRVUVzUTBGQlN5eFJRVUZUTEVOQlFVRTdRVUZCUVN4UlFVTmFMRk5CUVVFN1FVRkJRU3hQUVVORUxFTkJRVUVzUTBGQlFUdEJRVUZCTEV0QlEwZ3NRMEZCUVR0QlFVVkJMRWxCUVVFc1NVRkJRU3hEUVVGUExHdENRVUZyUWl4RFFVRkRMR0ZCUVVFc1JVRkJjME1zVDBGQlZTeEhRVUZCTEV0QlFVRXNSVUZCVHl4elFrRkJjMElzUzBGQlZTeExRVUZCTzBGQk1WVnVTQ3hOUVVGQkxFbEJRVUVzUlVGQlFTeERRVUZCTzBGQk1sVkpMRTFCUVVFc1RVRkJUU3hGUVVGRkxGZEJRVUVzUlVGQllTeFBRVUZSTEVWQlFVRXNSMEZCU1N4SlFVRkxMRU5CUVVFc1MwRkJRU3hEUVVGQk8wRkJSM1JETEUxQlFVRXNUVUZCVFN4WFFVRmpMRWRCUVVFc1QwRkJRU3hIUVVOb1FpeGhRVU5CTEVkQlFVRXNVMEZCUVN4RFFVRlZMRk5CUVZVc1EwRkJRU3hQUVVGUExFTkJRVWNzUlVGQlFTeGhRVUZCTEVWQlFXVXNRMEZCUXl4UlFVRkJMRVZCUVZVc1VVRkJWU3hGUVVGQkxFZEJRVUVzUlVGQlN5eEhRVUZSTEV0QlFVRTdRVUZETjBVc1VVRkJTU3hKUVVGQkxFOUJRVUVzUTBGQlVTeFJRVUZSTEVOQlFVY3NSVUZCUVR0QlFVTnlRaXhWUVVGUExFOUJRVUVzVVVGQlFTeERRVUZCTzBGQlFVRXNVMEZEVkR0QlFVZEJMRkZCUVVFc1NVRkJTU3hSUVVGaExFdEJRVUVzVVVGQlFTeEpRVUZaTEU5QlFVOHNVVUZCUVN4TFFVRmhMRmRCUVdFc1JVRkJRVHRCUVVNMVJDeFZRVUZCTEVkQlFVRXNRMEZCU1N4SFFVRlBMRU5CUVVFc1IwRkJRU3hSUVVGQkxFTkJRVUU3UVVGRFdDeFZRVUZCTEU5QlFVRTdRVUZCUVN4VFFVTkdPMEZCUTBFc1VVRkJRU3hQUVVGQk8wRkJRVUVzVDBGRFJDeERRVUZCTEVOQlFVRTdRVUZGVEN4TlFVRkJMRTFCUVUwc1pVRkJaU3d5UWtGQk5FSXNRMEZCUVR0QlFVRkJMRkZCUXk5RExGRkJRVkVzU1VGQlN5eERRVUZCTEU5QlFVRTdRVUZCUVN4UlFVTmlMR05CUVdkQ0xFVkJRVUVzVjBGQlFUdEJRVUZCTEZGQlEyaENMR3RDUVVGdlFpeEZRVUZCTEZkQlFVRTdRVUZCUVN4UlFVTndRaXh0UWtGQlFUdEJRVUZCTEU5QlEwUXNRMEZCUVN4RFFVRkJPMEZCUlVRc1RVRkJRU3hKUVVGQkxFTkJRVXNzVVVGQlV5eERRVUZCTzBGQlFVRXNVVUZEV2l4VFFVRlRMRmxCUVdFc1EwRkJRU3hQUVVGQk8wRkJRVUVzVVVGRGRFSXNZMEZCYVVJc1JVRkJRU3hEUVVGQkxFTkJRVUVzUlVGQlFTeEhRVUZCTEVsQlFVRXNRMEZCU3l4TFFVRk5MRU5CUVVFc1kwRkJRU3hMUVVGWUxGbEJRVFpDTEVOQlFVc3NTVUZCUVN4RFFVRkJPMEZCUVVFc1QwRkRjRVFzUTBGQlFTeERRVUZCTzBGQlFVRXNTMEZEU0N4RFFVRkJPMEZCUlVFc1NVRkJUeXhKUVVGQkxFTkJRVUVzYlVKQlFVRXNSMEZCYzBJc1EwRkJReXhwUWtGQlFTeEZRVUZwUlN4UFFVRnpRaXhMUVVGQk8wRkJRMjVJTEUxQlFVRXNUVUZCVFN4RlFVRkZMRmRCUVVFc1JVRkJZU3hQUVVGUkxFVkJRVUVzUjBGQlNTeEpRVUZMTEVOQlFVRXNTMEZCUVN4RFFVRkJPMEZCUjNSRExFMUJRVUVzVFVGQlRTeHJRa0ZCYTBJc1QwRkJWU3hIUVVGQkxHbENRVUZCTEVkQlFXOUNMRTFCUVUwc1UwRkJWU3hEUVVGQkxGZEJRVmNzUjBGQlJ5eHBRa0ZCYVVJc1EwRkJRU3hEUVVGQk8wRkJSWEpITEUxQlFVRXNUVUZCVFN4bFFVRmxMREpDUVVFMFFpeERRVUZCTzBGQlFVRXNVVUZETDBNc1VVRkJVU3hKUVVGTExFTkJRVUVzVDBGQlFUdEJRVUZCTEZGQlEySXNZMEZCWjBJc1JVRkJRU3hQUVVGQk8wRkJRVUVzVVVGRGFFSXNhMEpCUVc5Q0xFVkJRVUVzWlVGQlFUdEJRVUZCTEZGQlEzQkNMRzFDUVVGeFFpeEZRVUZCTEV0QlFVRTdRVUZCUVN4UFFVTjBRaXhEUVVGQkxFTkJRVUU3UVVGRlJDeE5RVUZCTEVsQlFVRXNRMEZCU3l4dlFrRkJkVUlzUjBGQlFTeExRVUZCTEVOQlFVRXNRMEZCUVR0QlFVTTFRaXhOUVVGQkxFbEJRVUVzUTBGQlN5eFJRVUZUTEVOQlFVRXNSVUZCUlN4WFFVRmhMRVZCUVVFc1dVRkJRU3hEUVVGaExHRkJRV0VzUTBGQlFTeERRVUZCTzBGQlFVRXNTMEZEZWtRc1EwRkJRVHRCUVVWQkxFbEJRVUVzU1VGQlFTeERRVUZQTEZkQlFXVXNSMEZCUVN4RFFVRkRMRXRCUVdVc1JVRkJRU3hOUVVGQkxFVkJRWEZDTEUxQlFXZEVMRXRCUVVFN1FVRkRla2NzVFVGQlFTeFBRVUZQTEZWQlFWY3NRMEZCUVN4WFFVRkJMRU5CUVZrc1NVRkJUU3hGUVVGQkxFdEJRVUVzUlVGQlR5eFJRVUZSTEUxQlFVMHNRMEZCUVN4RFFVRkJPMEZCUVVFc1MwRkRNMFFzUTBGQlFUdEJRVVZCTEVsQlFVRXNTVUZCUVN4RFFVRlBMR2xDUVVGcFFpeE5RVUZOTzBGQlF6VkNMRTFCUVVzc1NVRkJRU3hEUVVGQkxGbEJRVUVzUTBGQllTeEpRVUZKTEdWQlFVRXNRMEZCWjBJc1JVRkJSU3hOUVVGQkxFVkJRVkVzVFVGQlRTeFhRVUZoTEVWQlFVRXNlVUpCUVVFc1JVRkJNa0lzUTBGQlFTeEZRVUZITEVsQlFVa3NRMEZCUVN4RFFVRkJPMEZCUlhKSExFMUJRVTBzVFVGQlFTeEZRVUZGTEZkQlFWa3NSVUZCUVN4SFFVRkpMRWxCUVVzc1EwRkJRU3hMUVVGQkxFTkJRVUU3UVVGRE4wSXNUVUZCUVN4SlFVRkpMRmRCUVdFc1JVRkJRVHRCUVVObUxGRkJRVTBzVFVGQlFTeFJRVUZCTEVkQlFWY3NTVUZCU3l4RFFVRkJMRmRCUVVFc1EwRkJXU3hYUVVGWExFTkJRVUVzUTBGQlFUdEJRVU0zUXl4UlFVRkJMRTlCUVU4c1pVRkJaU3hSUVVGUkxFTkJRVUVzUTBGQlFUdEJRVUZCTEU5QlEyaERPMEZCUTBFc1RVRkJUeXhQUVVGQkxFVkJRVUVzUTBGQlFUdEJRVUZCTEV0QlExUXNRMEZCUVR0QlFYVkZRU3hKUVVGQkxFbEJRVUVzUTBGQlR5eG5Ra0ZCWjBJc1RVRkJUVHRCUVM5akwwSXNUVUZCUVN4SlFVRkJMRVZCUVVFc1EwRkJRVHRCUVdka1NTeE5RVUZMTEVsQlFVRXNRMEZCUVN4WlFVRkJMRU5CUVdFc1NVRkJTU3hsUVVGQkxFTkJRV2RDTEVWQlFVVXNUVUZCUVN4RlFVRlJMRTFCUVUwc1YwRkJZU3hGUVVGQkxEUkNRVUZCTEVWQlFUaENMRU5CUVVFc1JVRkJSeXhKUVVGSkxFTkJRVUVzUTBGQlFUdEJRVU40Unl4TlFVRk5MRTFCUVVFc1NVRkJRU3hIUVVGUExGVkJRVmNzUTBGQlFTeFBRVUZCTEVOQlFWRXNTVUZCU1N4RFFVRkJMRU5CUVVFN1FVRkRjRU1zVFVGQlFTeERRVUZCTEVWQlFVRXNSMEZCUVN4SlFVRkJMRU5CUVVzc1YwRkJUQ3hMUVVGQkxFbEJRVUVzUjBGQlFTeExRVUZCTEVOQlFVRXNSMEZCUVN4RlFVRkJMRU5CUVVFc1NVRkJRU3hEUVVGQkxFbEJRVUVzUTBGQlFTeERRVUZCTzBGQlFVRXNTMEZEUml4RFFVRkJPMEZCUlVFc1NVRkJRU3hKUVVGQkxFTkJRVThzZFVKQlFYVkNMRTFCUVUwN1FVRkRiRU1zVFVGQlN5eEpRVUZCTEVOQlFVRXNXVUZCUVN4RFFVRmhMRWxCUVVrc1pVRkJRU3hEUVVGblFpeEZRVUZGTEUxQlFVRXNSVUZCVVN4TlFVRk5MRmRCUVdFc1JVRkJRU3c0UWtGQlFTeEZRVUZuUXl4RFFVRkJMRVZCUVVjc1NVRkJTU3hEUVVGQkxFTkJRVUU3UVVGQlFTeExRVU0xUnl4RFFVRkJPMEZCUzBFc1NVRkJVU3hKUVVGQkxFTkJRVUVzYjBKQlFVRXNSMEZCZFVJc1EwRkJReXhMUVVGQkxFVkJRV1VzUzBGQmEwSXNTMEZCUVR0QlFVTXZSQ3hOUVVGQkxFbEJRVUVzUTBGQlN5eHZRa0ZCYjBJc09FSkJRU3RDTEVOQlFVRXNTMEZCUVN4RlFVRlBMRTlCUVU4c1NVRkJTeXhEUVVGQkxFdEJRVUVzUTBGQlRTeFhRVUZYTEVOQlFVTXNRMEZCUVN4RFFVRkJPMEZCUVVFc1MwRkRMMFlzUTBGQlFUdEJRVVZCTEVsQlFWRXNTVUZCUVN4RFFVRkJMSGxDUVVGQkxFZEJRVFJDTEVOQlFVTXNTMEZCUVN4RlFVRmxMRWxCUVhGRExFdEJRVUU3UVVGRGRrWXNUVUZCU1N4SlFVRkJMRU5CUVVNc1MwRkJTeXh2UWtGQmMwSXNSVUZCUVR0QlFVTTVRaXhSUVVGQkxFOUJRVUU3UVVGQlFTeFBRVU5HTzBGQlJVRXNUVUZCU3l4SlFVRkJMRU5CUVVFc2JVSkJRVUU3UVVGQlFTeFJRVU5JTERaQ1FVRkJMRU5CUVRoQ0xFOUJRVThzU1VGQlRTeEZRVUZCTEVsQlFVRXNRMEZCU3l4TlFVRk5MRmRCUVdFc1JVRkJRU3hKUVVGQkxFTkJRVXNzY1VKQlFYRkNMRTFCUVUwc1EwRkJRVHRCUVVGQkxGRkJRMjVITEVsQlFVRTdRVUZCUVN4UFFVTkdMRU5CUVVFN1FVRkJRU3hMUVVOR0xFTkJRVUU3UVVGRlFTeEpRVUZSTEVsQlFVRXNRMEZCUVN4elFrRkJRU3hIUVVGNVFpeERRVUZETEV0QlFXVXNTMEZCUVR0QlFVTXZReXhOUVVGQkxFbEJRVWtzUzBGQlN5eGhRVUZsTEVWQlFVRTdRVUZEZEVJc1VVRkJTeXhKUVVGQkxFTkJRVUVzWVVGQlFTeEhRVUZuUWl4aFFVTm9RaXhEUVVGQkxHTkJRVUVzUTBGQlFTeEZRVUZCTEVWQlFVRXNTVUZCUVN4RFFVRkxMR0ZCUkZjc1EwRkJRU3hGUVVGQk8wRkJRVUVzVlVGRmJrSXNZVUZCWlN4RlFVRkJMRXRCUVVFN1FVRkJRU3hUUVVOcVFpeERRVUZCTEVOQlFVRTdRVUZCUVN4UFFVTkdPMEZCUlVFc1RVRkJRU3hKUVVGQkxFTkJRVXNzVVVGQlV5eERRVUZCTEVWQlFVVXNiMEpCUVhOQ0xFVkJRVUVzUzBGQlFTeEZRVUZQTEVOQlFVRXNRMEZCUVR0QlFVRkJMRXRCUXk5RExFTkJRVUU3UVVGRlFTeEpRVUZSTEVsQlFVRXNRMEZCUVN4dFFrRkJRU3hIUVVGelFpeERRVUZETEU5QlFXOUNMRXRCUVVFN1FVRkRha1FzVFVGQlRTeE5RVUZCTEdGQlFVRXNSMEZCYlVNc1NVRkJTeXhEUVVGQkxFdEJRVUVzUTBGQlRTeFBRVUZuUWl4RFFVRkJMRTFCUVVFc1EwRkJRVHRCUVVkd1JTeE5RVUZCTEVsQlFVa3NRMEZCUXl4aFFVRmxMRVZCUVVFN1FVRkRiRUlzVVVGQlFTeFBRVUZCTzBGQlFVRXNUMEZEUmp0QlFVVkJMRTFCUVVFc1NVRkJTU3hYUVVGWExHRkJRV01zUTBGQlFTeFJRVUZCTEVOQlFVRTdRVUZETjBJc1RVRkJRU3hKUVVGSkxGTkJRVk1zWVVGQll5eERRVUZCTEUxQlFVRXNRMEZCUVR0QlFVTXpRaXhOUVVGQkxFbEJRVWtzV1VGQldTeE5RVUZSTEVWQlFVRTdRVUZEZEVJc1VVRkJWeXhSUVVGQkxFZEJRVUVzUzBGQlFTeERRVUZCTEVOQlFVRTdRVUZCUVN4UFFVTmlPMEZCUjBFc1RVRkJRU3hKUVVGSkxHRkJRV0VzUzBGQlR5eEZRVUZCTzBGQlEzUkNMRkZCUVZNc1RVRkJRU3hIUVVGQkxFdEJRVUVzUTBGQlFTeERRVUZCTzBGQlExUXNVVUZCVnl4UlFVRkJMRWRCUVVFc1MwRkJRU3hEUVVGQkxFTkJRVUU3UVVGQlFTeFBRVU5PTEUxQlFVRTdRVUZEVEN4UlFVRkJMRkZCUVVFc1IwRkJWeXhEUVVGRExGRkJRVUVzUTBGQlFUdEJRVU5hTEZGQlFWTXNUVUZCUVN4SFFVRkJMRTlCUVVFc1EwRkJRVHRCUVVGQkxFOUJRMWc3UVVGRlFTeE5RVUZMTEVsQlFVRXNRMEZCUVN4bFFVRkJPMEZCUVVFc1VVRkRTQ3hoUVVGQkxFTkJRVUVzWTBGQlFTeERRVUZCTEVWQlFVRXNSVUZEU3l4SlFVRkxMRU5CUVVFc1MwRkJRU3hEUVVGTkxFOUJSR2hDTEVOQlFVRXNSVUZCUVR0QlFVRkJMRlZCUlVVc1RVRkJVU3hGUVVGQkxHRkJRVUVzUTBGQlFTeGpRVUZCTEVOQlFVRXNSVUZCUVN4RlFVRkxMR0ZCUVV3c1EwRkJRU3hGUVVGQkxFVkJRVzlDTEZGQlFWRXNVVUZCVXl4RlFVRkJMRU5CUVVFN1FVRkJRU3hUUVVNdlF5eERRVUZCTzBGQlFVRXNVVUZEUVN4SlFVRkJPMEZCUVVFc1QwRkRSaXhEUVVGQk8wRkJRVUVzUzBGRFJpeERRVUZCTzBGQmRGcEZMRWxCUVVFc1NVRkJRU3hEUVVGTExIRkNRVUZ4UWl4TlFVRk5PMEZCUXpsQ0xFMUJRVUVzU1VGQlFTeERRVUZMTEZkQlFWa3NSVUZCUVN4RFFVRkJPMEZCUVVFc1MwRkRiRUlzUTBGQlFTeERRVUZCTzBGQlJVUXNTVUZCVFN4RFFVRkJMRVZCUVVFc1IwRkJRU3hMUVVGQkxFTkJRVUVzU1VGQlFTeExRVUZPTEVsQlFWa3NSMEZCUVN4TFFVRkJMRU5CUVVFc1IwRkJRU3hGUVVGQkxFTkJRVUVzYjBKQlFVRXNRMEZCY1VJc1RVRkJUVHRCUVVOeVF5eE5RVUZMTEVsQlFVRXNRMEZCUVN4WlFVRkJMRU5CUVdFc1NVRkJTU3hsUVVGQkxFTkJRV2RDTEVWQlFVVXNUVUZCUVN4RlFVRlJMRTFCUVUwc1YwRkJZU3hGUVVGQkxHdENRVUZCTEVWQlFXOUNMRU5CUVVFc1JVRkJSeXhKUVVGSkxFTkJRVUVzUTBGQlFUdEJRVUZCTEV0QlEyaEhMRU5CUVVFc1EwRkJRVHRCUVVGQkxFZEJRMFk3UVVGQlFTeEZRVVZSTEZkQlFXTXNSMEZCUVR0QlFVTndRaXhKUVVGSkxFbEJRVUVzUTBGQlF5eExRVUZMTEU5QlFWTXNSVUZCUVR0QlFVTnFRaXhOUVVGTExFbEJRVUVzUTBGQlFTeFhRVUZCTEVOQlFWa3NTVUZCU3l4RFFVRkJMRXRCUVVFc1EwRkJUU3hSUVVGUkxFTkJRVUVzUTBGQlFUdEJRVUZCTEV0QlEzUkRPMEZCUVVFc1IwRkRSanRCUVVGQkxFVkJSVThzVjBGQmIwSXNSMEZCUVR0QlFUZEpOMElzU1VGQlFTeEpRVUZCTEVWQlFVRXNRMEZCUVR0QlFTdEpTU3hKUVVGTExFbEJRVUVzUTBGQlFTeFJRVUZCTEVOQlFWTXNSVUZCUlN4alFVRnBRaXhGUVVGQkxFTkJRVUVzUTBGQlFTeEZRVUZCTEVkQlFVRXNTVUZCUVN4RFFVRkxMRTFCUVUwc1kwRkJXQ3hMUVVGQkxFbEJRVUVzUjBGQlFTeEZRVUZCTEVkQlFUWkNMRU5CUVVzc1NVRkJRU3hEUVVGQkxFVkJRVWNzUTBGQlFTeERRVUZCTzBGQlFVRXNSMEZEZUVVN1FVRkJRU3hGUVVWQkxFMUJRV01zVjBGQlFTeERRVU5hTEZGQlEwRXNSVUZCUVN4blFrRkJRU3hGUVVOQkxITkNRVU5CTEcxQ1FVTkJMRVZCUVVFN1FVRkRRU3hKUVVGTkxFMUJRVUVzVFVGQlFTeEhRVUZUTEc5Q1FVRnZRaXhSUVVGUkxFTkJRVUVzUTBGQlFUdEJRVVV6UXl4SlFVRkJMRWxCUVVrc1RVRkJVU3hGUVVGQk8wRkJRMVlzVFVGQlFTeEpRVUZCTEVOQlFVc3NZVUZCWXl4RFFVRkJMRTFCUVVFc1JVRkJVU3huUWtGQmEwSXNSVUZCUVN4dlFrRkJRU3hGUVVGelFpeHRRa0ZCYlVJc1EwRkJRU3hEUVVGQk8wRkJRVUVzUzBGRGFrWXNUVUZCUVR0QlFVTk1MRTFCUVUwc1RVRkJRU3hGUVVGRkxHbENRVUZyUWl4RlFVRkJMRWRCUVVrc2IwSkJRWEZDTEVWQlFVRXNRMEZCUVR0QlFVVnVSQ3hOUVVGSkxFbEJRVUU3UVVGRFJpeFJRVUZOTEUxQlFVRXNUVUZCUVN4SFFVRlRMRTFCUVUwc2FVSkJRVUVzUTBGQmEwSXNVVUZCVVN4RFFVRkJMRU5CUVVFN1FVRkRMME1zVVVGQlFTeEpRVUZCTEVOQlFVc3NZVUZCWXl4RFFVRkJMRTFCUVVFc1JVRkJVU3huUWtGQmEwSXNSVUZCUVN4dlFrRkJRU3hGUVVGelFpeHRRa0ZCYlVJc1EwRkJRU3hEUVVGQk8wRkJRVUVzWlVGREwwVXNSMEZCVUN4RlFVRkJPMEZCUTBFc1VVRkJTeXhKUVVGQkxFTkJRVUVzWVVGQlFTeERRVUZqTEhOQ1FVRjFRaXhEUVVGQkxGRkJRVkVzUTBGQlF5eERRVUZCTEVOQlFVRTdRVUZGYmtRc1VVRkJRU3hKUVVGSkxHVkJRV1VzUzBGQlR5eEZRVUZCTzBGQlEzaENMRlZCUVVFc1NVRkJRU3hEUVVGTExGRkJRVk1zUTBGQlFTeEZRVUZGTEdkQ1FVRnJRaXhGUVVGQkxFZEJRVUVzUTBGQlNTeFRRVUZUTEVOQlFVRXNRMEZCUVR0QlFVRkJMRk5CUTJwRU8wRkJRVUVzVDBGRFJqdEJRVUZCTEV0QlEwWTdRVUZCUVN4SFFVTkdPMEZCUVVFc1JVRkZUeXhuUWtGQmJVSXNSMEZCUVR0QlFVTjRRaXhKUVVGTkxFMUJRVUVzVDBGQlFTeEhRVUZWTEZOQlFWTXNTVUZCU3l4RFFVRkJMRXRCUVVFc1EwRkJUU3hKUVVGTExFOUJRVkVzUTBGQlFTeFJRVUZCTEVWQlFWVXNSVUZCUlN4RFFVRkJMRVZCUVVjc1JVRkJSU3hEUVVGQkxFTkJRVUU3UVVGRGJFVXNTVUZCU1N4SlFVRkJMRXRCUVVFc1EwRkJUU3hQUVVGUExFTkJRVWNzUlVGQlFUdEJRVU5zUWl4TlFVRlBMRTlCUVVFc1EwRkJRU3hEUVVGQk8wRkJRVUVzUzBGRFZEdEJRVVZCTEVsQlFVOHNUMEZCUVN4UFFVRkJMRU5CUVVFN1FVRkJRU3hIUVVOVU8wRkJRVUVzUlVGRlFTeE5RVUZqTEdGQlFVRXNRMEZEV2l4TlFVTkJMRVZCUVVFc1owSkJRVUVzUlVGRFFTeHpRa0ZEUVN4dFFrRkRRU3hGUVVGQk8wRkJRMEVzU1VGQlFTeE5RVUZOTEVWQlFVVXNUMEZCVXl4RlFVRkJMRmRCUVVFc1JVRkJZU3hQUVVGUExHRkJRV1VzUlVGQlFTdzRRa0ZCUVN4TFFVRnRReXhKUVVGTExFTkJRVUVzUzBGQlFTeERRVUZCTzBGQlJUVkdMRWxCUVVFc1RVRkJUU3hMUVVGdlFpeEhRVUZCTzBGQlFVRXNUVUZEZUVJc1MwRkJRVHRCUVVGQkxFMUJRMEVzVDBGQlFUdEJRVUZCTEUxQlEwRXNWMEZCUVR0QlFVRkJMRTFCUTBFc1JVRkJRU3hGUVVGSkxFdEJRVXNzWjBKQlFXbENMRVZCUVVFN1FVRkJRU3hOUVVNeFFpeEpRVUZCTEVWQlFVMHNUMEZCVHl4SlFVRkxMRU5CUVVFc1JVRkJRVHRCUVVGQkxFMUJRMnhDTEdGQlFVRTdRVUZCUVN4TFFVTkdMRU5CUVVFN1FVRkZRU3hKUVVGQkxFbEJRVWtzWjBKQlFXdENMRVZCUVVFN1FVRkRjRUlzVFVGQlFTeExRVUZCTEVOQlFVMHNUMEZCVlN4SFFVRkJMR2RDUVVGQkxFTkJRVUU3UVVGQlFTeExRVU5zUWp0QlFVVkJMRWxCUVVFc1NVRkJTU3h2UWtGQmMwSXNSVUZCUVR0QlFVTjRRaXhOUVVGQkxFdEJRVUVzUTBGQlRTeFhRVUZqTEVkQlFVRXNiMEpCUVVFc1EwRkJRVHRCUVVGQkxFdEJRM1JDTzBGQlJVRXNTVUZCVFN4TlFVRkJMR05CUVVFc1IwRkJhVUlzU1VGQlN5eERRVUZCTEdsQ1FVRkJMRU5CUVd0Q0xFMUJRVTBzUTBGQlFTeERRVUZCTzBGQlJYQkVMRWxCUVVFc09FSkJRVUVzU1VGQlFTeEpRVUZCTEVkQlFVRXNTMEZCUVN4RFFVRkJMRWRCUVVFc09FSkJRVUVzUTBGQmFVTXNTMEZCVHl4RlFVRkJMRTFCUVVFc1EwRkJRU3hEUVVGQk8wRkJSWGhETEVsQlFVRXNTVUZCU1N4TlFVRlBMRU5CUVVFc1owSkJRVUVzU1VGQmIwSXNZMEZCYlVJc1MwRkJRU3hoUVVGQkxFbEJRV2xDTEVOQlFVTXNiVUpCUVhGQ0xFVkJRVUU3UVVGRmRrWXNUVUZCUVN4TFFVRkJMRU5CUVUwc1QwRkJWU3hIUVVGQkxFMUJRVTBzVFVGQlR5eERRVUZCTEdkQ1FVRkJMRU5CUVdsQ0xFdEJRVXNzUTBGQlFTeERRVUZCTzBGQlFVRXNTMEZEY2tRN1FVRkZRU3hKUVVGQkxFMUJRVTBzWlVGQlpTd3lRa0ZCTkVJc1EwRkJRVHRCUVVGQkxFMUJReTlETEUxQlFVRTdRVUZCUVN4TlFVTkJMR2RDUVVGblFpeExRVUZOTEVOQlFVRXNUMEZCUVR0QlFVRkJMRTFCUTNSQ0xHOUNRVUZ2UWl4TFFVRk5MRU5CUVVFc1YwRkJRVHRCUVVGQkxFMUJRekZDTEhGQ1FVRnhRaXh0UWtGQmRVSXNTVUZCUVN4SlFVRkJMRWRCUVVFc2JVSkJRVUVzUjBGQlFTeExRVUZCTzBGQlFVRXNTMEZETjBNc1EwRkJRU3hEUVVGQk8wRkJSVVFzU1VGQlFTeEpRVUZCTEVOQlFVc3NUMEZCVlN4SFFVRkJMRTFCUVVFc1EwRkJRVHRCUVVWbUxFbEJRVUVzU1VGQlFTeERRVUZMTEZGQlFWTXNRMEZCUVR0QlFVRkJMRTFCUTFvc1UwRkJVeXhaUVVGaExFTkJRVUVzVDBGQlFUdEJRVUZCTEUxQlEzUkNMR0ZCUVdFc1dVRkJZU3hEUVVGQkxGZEJRVUU3UVVGQlFTeE5RVU14UWl4aFFVRmxMRVZCUVVFc1kwRkJRVHRCUVVGQkxFMUJRMllzVVVGQlFTeEZRVUZWTEU5QlFVOHNTVUZCU3l4RFFVRkJMRVZCUVVFN1FVRkJRU3hMUVVOMlFpeERRVUZCTEVOQlFVRTdRVUZIUkN4SlFVRkpMRWxCUVVFc1RVRkJRU3hEUVVGUExFdEJRVXNzWVVGQlpTeEZRVUZCTzBGQlF6ZENMRTFCUVUwc1RVRkJRU3hqUVVGQkxFZEJRV2xDTEZWQlFWY3NRMEZCUVN4WlFVRkJMRU5CUVdFc1NVRkJTU3hEUVVGQkxFTkJRVUU3UVVGRGJrUXNUVUZCU3l4SlFVRkJMRU5CUVVFc1MwRkJRU3hEUVVGTkxFbEJRVWtzWTBGQlpTeERRVUZCTEdkQ1FVRkJMRU5CUVdsQ0xFMUJRVTBzU1VGQlN5eERRVUZCTEZkQlFVRXNSVUZCWVN4RFFVRkRMRU5CUVVFc1EwRkJRVHRCUVVGQkxFdEJRekZGTzBGQlFVRXNSMEZEUmp0QlFVRkJMRVZCUlZFc2EwSkJRV3RDTEUxQlFUWkNMRVZCUVVFN1FVRkRja1FzU1VGQlR5eFBRVUZCTEUxQlFVRXNTVUZCVlN4TlFVRlBMRU5CUVVFc1NVRkJRU3hEUVVGTExFbEJRVXNzUTBGQlFTeFBRVUZCTEVkQlFWVXNUMEZCVHl4SlFVRkxMRU5CUVVFc1NVRkJRU3hEUVVGTExFOUJRVlVzUjBGQlFTeE5RVUZCTEVOQlFVOHNVMEZCVlN4RFFVRkJMRTlCUVVFc1EwRkJRVHRCUVVGQkxFZEJRekZHTzBGQlFVRXNSVUZGVHl4VFFVRnhReXhIUVVGQk8wRkJRekZETEVsQlFVRXNUMEZCVHl4SlFVRkxMRU5CUVVFc1QwRkJRU3hEUVVGQk8wRkJRVUVzUjBGRFpEdEJRVUZCTEVWQlJVOHNaVUZCWjBNc1IwRkJRVHRCUVhSUWVrTXNTVUZCUVN4SlFVRkJMRVZCUVVFc1EwRkJRVHRCUVhWUVNTeEpRVUZCTEVOQlFVRXNSVUZCUVN4SFFVRkJMRWxCUVVFc1EwRkJTeXhoUVVGTUxFdEJRVUVzU1VGQlFTeEhRVUZCTEVWQlFVRXNSMEZCUVN4SlFVRkJMRU5CUVVzc1lVRkJhMElzUjBGQlFTeEpRVUZCTEVOQlFVc3NhVUpCUVd0Q0xFVkJRVUVzUTBGQlFUdEJRVVU1UXl4SlFVRkJMRTlCUVU4c1NVRkJTeXhEUVVGQkxHRkJRVUVzUTBGQlFUdEJRVUZCTEVkQlEyUTdRVUZCUVN4RlFXMURRU3hOUVVGaExHZENRVUZCTEVOQlFXbENMRkZCUVd0Q0xFVkJRVUVzVlVGQlFTeEZRVUU0UWl4alFVRnZReXhGUVVGQk8wRkJOMUp3U0N4SlFVRkJMRWxCUVVFc1JVRkJRU3hGUVVGQkxFVkJRVUVzUTBGQlFUdEJRVGhTU1N4SlFVRk5MRTFCUVVFc1JVRkJSU3hUUVVGVExGZEJRV0VzUlVGQlFTeFhRVUZCTEVWQlFXRXNhVUpCUVdsQ0xGRkJRVlVzUlVGQlFTeFpRVUZCTEV0QlFXbENMRWxCUVVzc1EwRkJRU3hMUVVGQkxFTkJRVUU3UVVGSE5VWXNTVUZCUVN4SlFVRkJMRU5CUVVzc2IwSkJRWFZDTEVkQlFVRXNTMEZCUVN4RFFVRkJMRU5CUVVFN1FVRkhOVUlzU1VGQlRTeE5RVUZCTEcxQ1FVRkJMRWRCUVhOQ0xFbEJRVXNzUTBGQlFTeExRVUZCTEVOQlFVMHNVVUZCWVN4TFFVRkJMRkZCUVVFc1EwRkJRVHRCUVVOd1JDeEpRVUZCTEUxQlFVMHNTMEZCU3l4WFFVRlpMRU5CUVVFc1VVRkJRU3hGUVVGVkxHdERRVUZqTEVWQlFVTXNSVUZCUnl4blFrRkJaMElzYlVKQlFXMUNMRU5CUVVFc1EwRkJRVHRCUVVWMFJpeEpRVUZCTEUxQlFVMHNTMEZCYjBJc1IwRkJRVHRCUVVGQkxFMUJRM2hDTEV0QlFVRXNSVUZCVHl4TFFVRkxMRXRCUVUwc1EwRkJRU3hMUVVGQk8wRkJRVUVzVFVGRGJFSXNUMEZCUVN4RlFVRlRMRXRCUVVzc1MwRkJUU3hEUVVGQkxFOUJRVUU3UVVGQlFTeE5RVU53UWl4WFFVRkJMRVZCUVdFc1MwRkJTeXhMUVVGTkxFTkJRVUVzVjBGQlFUdEJRVUZCTEUxQlEzaENMRVZCUVVrc1JVRkJRU3hEUVVGQk8wRkJRVUVzVFVGRFNpeEpRVUZOTEVWQlFVRXNVVUZCUVR0QlFVRkJMRXRCUTFJc1EwRkJRVHRCUVVsQkxFbEJRVTBzVFVGQlFTeGpRVUZCTEVkQlFVRXNRMEZCYVVJc1owSkJRVXNzVDBGQlRDeExRVUZCTEVsQlFVRXNSMEZCUVN4TFFVRkJMRU5CUVVFc1IwRkJRU3hGUVVGQkxFTkJRV01zZFVKQlFXUXNTVUZCYlVNc1IwRkJRU3hMUVVGQkxFTkJRVUVzUjBGQlFTeEZRVUZCTEVOQlFVRXNTVUZCUVN4RFFVRkJMRVZCUVVFc1JVRkJRU3hMUVVGQkxFVkJRVThzWTBGQll5eFhRVUZoTEVWQlFVRXNaVUZCUVN4RFFVRkJMRU5CUVVFN1FVRkZOVVlzU1VGQlFTeEpRVUZKTEdOQlFXdENMRWxCUVVFc1EwRkJReXhQUVVGUkxFTkJRVUVzWTBGQll5eERRVUZITEVWQlFVRTdRVUZET1VNc1RVRkJTeXhKUVVGQkxFTkJRVUVzWlVGQlFTeERRVUZuUWl4alFVRm5RaXhGUVVGQkxFbEJRVUVzUlVGQlRTeEpRVUZKTEVOQlFVRXNRMEZCUVR0QlFVRkJMRXRCUTJwRU8wRkJRVUVzUjBGRFJqdEJRVUZCTEVWQmIwWlBMSEZDUVVGM1FpeEhRVUZCTzBGQlF6ZENMRWxCUVVFc1NVRkJRU3hEUVVGTExHOUNRVUYxUWl4SFFVRkJMRXRCUVVFc1EwRkJRU3hEUVVGQk8wRkJRVUVzUjBGRE9VSTdRVUZCUVN4RlFVdFBMR2xDUVVGcFFpeFBRVUZuUXl4RlFVRkJPMEZCYWxveFJDeEpRVUZCTEVsQlFVRXNSVUZCUVN4RlFVRkJMRVZCUVVFc1JVRkJRU3hGUVVGQkxFVkJRVUVzUlVGQlFTeERRVUZCTzBGQmExcEpMRWxCUVVFc1RVRkJUU3hUUVVGVExFbEJRVXNzUTBGQlFTeFBRVUZCTEVOQlFVRTdRVUZGY0VJc1NVRkJRU3hKUVVGSkxFTkJRVU1zVFVGQlZTeEpRVUZCTEUxQlFVRXNRMEZCVHl4SlFVRkxMRU5CUVVFc1lVRkJRU3hKUVVGcFFpeERRVUZETEU5QlFWTXNSVUZCUVR0QlFVVndSQ3hOUVVGUExFOUJRVUVzWTBGQlFTeERRVUZCTzBGQlFVRXNTMEZEVkR0QlFVZEJMRWxCUVVFc1NVRkJTU3hKUVVGTExFTkJRVUVzVTBGQlFTeExRVUZqTEU5QlFWY3NTVUZCUVN4SlFVRkJMRU5CUVVzc2IwSkJRWE5DTEVWQlFVRTdRVUZETTBRc1RVRkJRU3hQUVVGUExFbEJRVXNzUTBGQlFTeHZRa0ZCUVN4RFFVRkJPMEZCUVVFc1MwRkRaRHRCUVVWQkxFbEJRVUVzVFVGQlRTeHZRa0ZCTkVNc1RVRkJUeXhEUVVGQkxGZEJRVUVzU1VGQlpTeEZRVUZGTEZkQlFXRXNSVUZCUVN4TFFVRkJMRVZCUVU4c1lVRkJZU3hMUVVGTkxFVkJRVUVzUTBGQlFUdEJRVVZxU0N4SlFVRkJMRTFCUVUwc2MwSkJRWE5DTEUxQlFVOHNRMEZCUVN4dFFrRkJRU3hEUVVGQk8wRkJRMjVETEVsQlFVRXNUVUZCVFN4alFVRmhMRVZCUVVzc1IwRkJRU3hEUVVGQkxFVkJRVUVzUjBGQlFTeEpRVUZCTEVOQlFVRXNiMEpCUVVFc1MwRkJUQ3hKUVVFeVFpeEhRVUZCTEV0QlFVRXNRMEZCUVN4SFFVRkJMRVZCUVVFc1EwRkJRU3hOUVVGQkxFdEJRVE5DTEZsQlFYRkRMRVZCUVVNc1EwRkJRVHRCUVVONlJDeEpRVUZCTEUxQlFVMHNXVUZCV1N4dFFrRkJiMElzUTBGQlFUdEJRVUZCTEUxQlEzQkRMRTFCUVUwc1QwRkJVU3hEUVVGQkxFMUJRVUU3UVVGQlFTeE5RVU5rTEZkQlFVRXNSVUZCWVN4TFFVRkxMRXRCUVUwc1EwRkJRU3hYUVVGQk8wRkJRVUVzVFVGRGVFSXNiVUpCUVVFN1FVRkJRU3hOUVVOQkxHdENRVUZyUWl4SlFVRkxMRU5CUVVFc1YwRkJRVHRCUVVGQkxFMUJRM1pDTEU5QlFVOHNUVUZCVHl4RFFVRkJMRTFCUVVFN1FVRkJRU3hOUVVOa0xGRkJRVUVzUlVGQlFTeERRVUZWTEVWQlFWRXNSMEZCUVN4UFFVRkJMRU5CUVVFc1QwRkJRU3hMUVVGU0xFbEJRV2xDTEVkQlFVRXNTMEZCUVN4RFFVRkJMRWRCUVVFc1JVRkJRU3hEUVVGQkxGRkJRVUU3UVVGQlFTeExRVU0xUWl4RFFVRkJMRU5CUVVFN1FVRkZSQ3hKUVVGQkxFbEJRVWtzUTBGQlF5eHJRa0ZCUVN4RFFVRnRRaXhUUVVGWExFVkJRVUVzVlVGQlFTeEZRVUZaTERCQ1FVRXdRaXhEUVVGSExFVkJRVUU3UVVGRE1VVXNUVUZCU3l4SlFVRkJMRU5CUVVFc1lVRkJRU3hGUVVGQkxFTkJRVUU3UVVGQlFTeExRVU5RTzBGQlJVRXNTVUZCU3l4SlFVRkJMRU5CUVVFc2IwSkJRVUVzUjBGQmRVSXNhVU5CUTNaQ0xFOUJSSFZDTEVOQlFVRXNSVUZCUVR0QlFVRkJMRTFCUlRGQ0xHTkJRV01zU1VGQlN5eERRVUZCTEdGQlFVRTdRVUZCUVN4TlFVTnVRaXhOUVVGUkxFVkJRVUVzVTBGQlFUdEJRVUZCTEV0QlExWXNRMEZCUVN4RFFVRkJPMEZCUlVFc1NVRkJTU3hKUVVGQkxFbEJRVUVzUTBGQlN5eHhRa0ZCY1VJc1YwRkJZU3hGUVVGQk8wRkJRM3BETEUxQlFVc3NTVUZCUVN4RFFVRkJMRzlDUVVGQkxFTkJRWEZDTEdOQlFXTXNiVUpCUVc5Q0xFTkJRVUU3UVVGQlFTeFJRVU14UkN4SlFVRkJMRVZCUVUwc1MwRkJTeXh2UWtGQmNVSXNRMEZCUVN4WFFVRkJPMEZCUVVFc1VVRkRhRU1zVjBGQllTeEZRVUZCTzBGQlFVRXNWVUZEV0N4VlFVRlZMRVZCUVVNN1FVRkJRU3hWUVVOWUxGZEJRVmNzUlVGQlF6dEJRVUZCTEZOQlEyUTdRVUZCUVN4UlFVTkJMRzFDUVVGQk8wRkJRVUVzVVVGRFFTeHJRa0ZCYTBJc1NVRkJTeXhEUVVGQkxGZEJRVUU3UVVGQlFTeFJRVU4yUWl4UFFVRlBMRTFCUVU4c1EwRkJRU3hOUVVGQk8wRkJRVUVzVVVGRFpDeFJRVUZCTEVWQlFVRXNRMEZCVlN4RlFVRlJMRWRCUVVFc1QwRkJRU3hEUVVGQkxFOUJRVUVzUzBGQlVpeEpRVUZwUWl4SFFVRkJMRXRCUVVFc1EwRkJRU3hIUVVGQkxFVkJRVUVzUTBGQlFTeFJRVUZCTzBGQlFVRXNUMEZETlVJc1EwRkJRU3hEUVVGQk8wRkJRVUVzUzBGRFNEdEJRVVZCTEVsQlFVa3NTVUZCUVN4RFFVRkRMR3RDUVVGclFpeFhRVUZoTEVWQlFVRTdRVUZEYkVNc1RVRkJRU3hKUVVGQkxFTkJRVXNzY1VKQlFYRkNMRlZCUVdFc1IwRkJRU3hMUVVGQkxFTkJRVUVzUTBGQlFUdEJRVUZCTEV0QlEzcERPMEZCUlVFc1NVRkJTU3hKUVVGQkxFTkJRVU1zYTBKQlFXdENMRmRCUVdFc1JVRkJRVHRCUVVOc1F5eE5RVUZCTEVsQlFVRXNRMEZCU3l4eFFrRkJjVUlzVjBGQll5eEhRVUZCTEV0QlFVRXNRMEZCUVN4RFFVRkJPMEZCUVVFc1MwRkRNVU03UVVGRlFTeEpRVUZCTEVsQlFVRXNRMEZCU3l4VFFVRlpMRWRCUVVFc1QwRkJRU3hEUVVGQk8wRkJRMnBDTEVsQlFVRXNUMEZCVHl4SlFVRkxMRU5CUVVFc2IwSkJRVUVzUTBGQlFUdEJRVUZCTEVkQlEyUTdRVUZCUVN4RlFYbEZVU3hwUWtGQmEwTXNSMEZCUVR0QlFVTjRReXhKUVVGTkxFMUJRVUVzU1VGQlFTeEhRVUZQTEcxQ1FVRnRRaXhKUVVGSkxFTkJRVUVzUTBGQlFUdEJRVVZ3UXl4SlFVRkJMRTFCUVUwc1QwRkJWU3hIUVVGQk8wRkJRVUVzVFVGRFpDeFhRVUZoTEVWQlFVRXNTVUZCUVN4SFFVRlBMRWxCUVVzc1EwRkJRU3hqUVVGQkxFVkJRVzFDTEVkQlFVRXNWMEZCUVR0QlFVRkJMRTFCUXpWRExGVkJRVlVzU1VGQlR5eEhRVUZCTEVsQlFVRXNRMEZCU3l4WlFVRmhMRU5CUVVFc1NVRkJTU3hKUVVGSkxGbEJRV0VzUlVGQlFUdEJRVUZCTEUxQlEzaEVMRXRCUVVzc1QwRkJVU3hEUVVGQkxFOUJRVUU3UVVGQlFTeE5RVU5pTEUxQlFVMHNUVUZCVFR0QlFVTldMRkZCUVVFc1NVRkJTU3hKUVVGTkxFVkJRVUU3UVVGRFVpeFZRVUZCTEU5QlFVOHNTMEZCU3l4TFFVRk5MRU5CUVVFc1NVRkJRU3hEUVVGQk8wRkJRVUVzVTBGRGNFSTdRVUZEUVN4UlFVRkJMRTlCUVU4c2JVSkJRVzlDTEVOQlFVRXNSMEZCUVN4RFFVRkJPMEZCUVVFc1QwRkROMEk3UVVGQlFTeE5RVU5CTEhGQ1FVRnhRaXhKUVVGTExFTkJRVUVzYjBKQlFVRTdRVUZCUVN4TlFVTXhRaXd3UWtGQk1FSXNTVUZCU3l4RFFVRkJMSGxDUVVGQk8wRkJRVUVzVFVGREwwSXNiMEpCUVc5Q0xFbEJRVXNzUTBGQlFTeHRRa0ZCUVR0QlFVRkJMRTFCUTNwQ0xIVkNRVUYxUWl4SlFVRkxMRU5CUVVFc2MwSkJRVUU3UVVGQlFTeExRVU01UWl4RFFVRkJPMEZCUlVFc1NVRkJTU3hKUVVGQkxFbEJRVUVzUTBGQlN5eE5RVUZOTEd0Q1FVRnZRaXhGUVVGQk8wRkJRMnBETEUxQlFVc3NTVUZCUVN4RFFVRkJMRXRCUVVFc1EwRkJUU3hyUWtGQmJVSXNRMEZCUVN4SlFVRkJMRVZCUVUwc1QwRkJUeXhEUVVGQkxFTkJRVUU3UVVGQlFTeExRVU0zUXp0QlFVVkJMRWxCUVU4c1QwRkJRU3hQUVVGQkxFTkJRVUU3UVVGQlFTeEhRVU5VTzBGQlEwWXNRMEZCUVR0QlFUTmpZU3hSUVVGQkxFTkJSMGNzVTBGQldTeEhRVUZCTEdkQ1FVRkJMRU5CUVVFN1FVRXdZelZDTEZOQlFWTXNkVUpCUVhWQ0xFVkJRWGxDTEVWQlFVRTdRVUZEZGtRc1JVRkJRU3hOUVVGTkxFMUJRVk1zUjBGQlFTeEpRVUZKTEZkQlFWa3NRMEZCUVN4TlFVRk5MRWxCUVVrc1EwRkJRU3hEUVVGQk8wRkJSWHBETEVWQlFVRXNUVUZCUVN4RFFVRlBMRWxCUVU4c1IwRkJRVHRCUVVGQkxFbEJRMW9zUlVGQlFUdEJRVUZCTEVsQlEwRXNTVUZCVFN4RlFVRkJMRVZCUVVFN1FVRkJRU3hKUVVOT0xFbEJRVTBzUlVGQlFTeEhRVUZCTzBGQlFVRXNTVUZEVGl4TlFVRk5MRlZCUVZjc1EwRkJRU3hMUVVGQk8wRkJRVUVzU1VGRGFrSXNUVUZCVVN4RlFVRkJMRVZCUVVFN1FVRkJRU3hKUVVOU0xFOUJRVk1zUlVGQlFTeEZRVUZCTzBGQlFVRXNTVUZEVkN4SlFVRk5MRVZCUVVFN1FVRkJRU3hOUVVOS0xFMUJRVkVzUlVGQlFUdEJRVUZCTEZGQlEwNHNTVUZCVFN4RlFVRkJMRVZCUVVFN1FVRkJRU3hQUVVOU08wRkJRVUVzVFVGRFFTeFhRVUZoTEVWQlFVRXNSVUZCUVR0QlFVRkJMRTFCUTJJc1QwRkJUeXhGUVVGRE8wRkJRVUVzVFVGRFVpeExRVUZQTEVWQlFVRTdRVUZCUVN4UlFVTk1MRXRCUVU4c1JVRkJRU3hGUVVGQk8wRkJRVUVzVVVGRFVDeExRVUZQTEVWQlFVRXNOa0pCUVVFN1FVRkJRU3hQUVVOVU8wRkJRVUVzVFVGRFFTeGhRVUZoTEVWQlFVTTdRVUZCUVN4TlFVTmtMRTlCUVZNc1JVRkJRU3hGUVVGQk8wRkJRVUVzVFVGRFZDeFBRVUZUTEVWQlFVRXNSVUZCUVR0QlFVRkJMRXRCUTFnN1FVRkJRU3hIUVVOR0xFTkJRVUU3UVVGRlFTeEZRVUZQTEU5QlFVRXNUVUZC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