From 610ee7c94145de0f2286dcca93c071156c401e2d Mon Sep 17 00:00:00 2001 From: Jayanth Kumar Date: Mon, 6 Jan 2025 21:18:38 +0530 Subject: [PATCH] favicon wip --- .gitignore | 10 +- frontend/index.html | 4 +- frontend/src/App.jsx | 202 ++++++--------- frontend/src/components/Layout.jsx | 79 ++---- frontend/src/state/AppStateContext.jsx | 51 ++++ preswald/cli.py | 21 ++ preswald/server.py | 230 ++++++++++++------ .../assets/defaults/default-favicon.ico | Bin 0 -> 10274 bytes .../static/assets/defaults/default-logo.png | Bin 0 -> 42176 bytes preswald/static/assets/favicon.ico | Bin 0 -> 10274 bytes preswald/static/assets/logo.png | Bin 0 -> 16543 bytes preswald/static/favicon.ico | Bin 0 -> 10274 bytes preswald_project/.gitignore | 1 + preswald_project/README.md | 6 + preswald_project/config.toml | 47 ++++ preswald_project/hello.py | 19 ++ preswald_project/images/favicon.ico | Bin 0 -> 10274 bytes preswald_project/images/logo.png | Bin 0 -> 42176 bytes 18 files changed, 404 insertions(+), 266 deletions(-) create mode 100644 frontend/src/state/AppStateContext.jsx create mode 100644 preswald/static/assets/defaults/default-favicon.ico create mode 100644 preswald/static/assets/defaults/default-logo.png create mode 100644 preswald/static/assets/favicon.ico create mode 100644 preswald/static/assets/logo.png create mode 100644 preswald/static/favicon.ico create mode 100644 preswald_project/.gitignore create mode 100644 preswald_project/README.md create mode 100644 preswald_project/config.toml create mode 100644 preswald_project/hello.py create mode 100644 preswald_project/images/favicon.ico create mode 100644 preswald_project/images/logo.png diff --git a/.gitignore b/.gitignore index b838ace..e085334 100644 --- a/.gitignore +++ b/.gitignore @@ -162,9 +162,13 @@ cython_debug/ #.idea/ # frontend build assets in preswald server -preswald/static/assets/ +preswald/static/assets/**.js +preswald/static/assets/**.css preswald/static/index.html -temp -preswald_project/ +# Keep default assets +!preswald/static/assets/defaults/ +!preswald/static/assets/defaults/* + +temp notes.md \ No newline at end of file diff --git a/frontend/index.html b/frontend/index.html index 86a016b..99724ea 100644 --- a/frontend/index.html +++ b/frontend/index.html @@ -2,9 +2,9 @@ - + - Vite + React + Preswald
diff --git a/frontend/src/App.jsx b/frontend/src/App.jsx index 7213538..49b07bd 100644 --- a/frontend/src/App.jsx +++ b/frontend/src/App.jsx @@ -1,16 +1,18 @@ +import { Route, BrowserRouter as Router, Routes } from "react-router-dom"; import { useEffect, useState } from "react"; -import { BrowserRouter as Router, Routes, Route } from "react-router-dom"; -import { websocket } from "./utils/websocket"; -import Layout from "./components/Layout"; -import Dashboard from "./components/pages/Dashboard"; + +import { AppStateProvider } from "./state/AppStateContext"; import Connections from "./components/pages/Connections"; -import Metrics from "./components/pages/Metrics"; +import Dashboard from "./components/pages/Dashboard"; +import Definitions from "./components/pages/Definitions"; import Entities from "./components/pages/Entities"; -import Schedules from "./components/pages/Schedules"; +import Layout from "./components/Layout"; +import Metrics from "./components/pages/Metrics"; import Queries from "./components/pages/Queries"; -import Definitions from "./components/pages/Definitions"; +import Schedules from "./components/pages/Schedules"; +import { websocket } from "./utils/websocket"; -const App = () => { +const AppContent = () => { const [components, setComponents] = useState([]); const [error, setError] = useState(null); const [config, setConfig] = useState(null); @@ -19,145 +21,87 @@ const App = () => { useEffect(() => { websocket.connect(); - const unsubscribe = websocket.subscribe(handleWebSocketMessage); - - return () => { - unsubscribe(); - websocket.disconnect(); - }; - }, []); - - // TODO: where is this used, if at all? - useEffect(() => { - // Update document title based on config - const updateTitle = () => { - const title = config?.project?.title; - if (title) { - document.title = title; - } - }; - - updateTitle(); - - document.addEventListener("visibilitychange", updateTitle); - return () => document.removeEventListener("visibilitychange", updateTitle); - }, [config]); - - const handleWebSocketMessage = (message) => { - console.log("[App] Received WebSocket message:", message); - - switch (message.type) { - case "components": - refreshComponentsList(message.components); - break; - - case "error": - handleError(message.content); - break; + const handleWebSocketMessage = (message) => { + console.log("[App] Received WebSocket message:", message); - case "connection_status": - updateConnectionStatus(message); - break; + switch (message.type) { + case "components": + setComponents(message.components || []); + setError(null); + break; - case "config": // TODO: not used anywhere - setConfig(message.config); - break; + case "error": + console.error("[App] Received error:", message.content); + setError(message.content.message); + break; - // state_update and initial_state are handled by websocket.js - } - }; + case "connection_status": + setIsConnected(message.connected); + setError(message.connected ? null : "Lost connection to server. Attempting to reconnect..."); + break; - const refreshComponentsList = (components) => { - const updatedComponents = components.map((component) => { - if (component.id) { - const currentState = websocket.getComponentState(component.id); - return { - ...component, - value: currentState !== undefined ? currentState : component.value, - error: null, - }; + case "config": + setConfig(message.config); + break; } - return component; - }); - setComponents(updatedComponents); - setError(null); - }; - - const handleError = (errorContent) => { - console.error("[App] Received error:", errorContent); - setError(errorContent.message); + }; - if (errorContent.componentId) { - setComponents((prevComponents) => - prevComponents.map((component) => - component.id === errorContent.componentId - ? { ...component, error: errorContent.message } - : component - ) - ); - } - }; + const unsubscribe = websocket.subscribe(handleWebSocketMessage); + return () => { + unsubscribe(); + websocket.disconnect(); + }; + }, []); const handleComponentUpdate = (componentId, value) => { try { websocket.updateComponentState(componentId, value); } catch (error) { console.error("[App] Error updating component state:", error); - setComponents((prevComponents) => - prevComponents.map((component) => - component.id === componentId - ? { ...component, error: error.message } - : component - ) - ); + setError(error.message); } }; - const updateConnectionStatus = (message) => { - setIsConnected(message.connected); - setError( - message.connected - ? null - : "Lost connection to server. Attempting to reconnect..." - ); - }; - - const renderLoadingState = () => ( -
-
-
-

Connecting to server...

-
-
+ return ( + + {!isConnected ? ( +
+
+
+

Connecting to server...

+
+
+ ) : ( + + + } + /> + } /> + } /> + } /> + } /> + } /> + } /> + + )} +
); +}; +const App = () => { return ( - - - {!isConnected ? ( - renderLoadingState - ) : ( - - - } - /> - } /> - } /> - } /> - } /> - } /> - } /> - - )} - - + + + + + ); }; diff --git a/frontend/src/components/Layout.jsx b/frontend/src/components/Layout.jsx index 10300cf..bb97874 100644 --- a/frontend/src/components/Layout.jsx +++ b/frontend/src/components/Layout.jsx @@ -1,64 +1,39 @@ 'use client' -import { ChartBarIcon, ClockIcon, DocumentTextIcon, GlobeAltIcon, HomeIcon, MagnifyingGlassIcon, ServerIcon } from "@heroicons/react/24/solid"; -import { useEffect, useState } from 'react' +import React, { useEffect } from 'react'; -import Content from "./Content"; -import Sidebar from "./Sidebar"; -import Topbar from "./TopBar"; - -const navigation = [ - { name: 'Dashboard', href: '/', icon: HomeIcon, current: true }, - { name: 'Queries', href: '/queries', icon: MagnifyingGlassIcon, current: false }, - { name: 'Metrics', href: '/metrics', icon: ChartBarIcon, current: false }, - { name: 'Schedules', href: '/schedules', icon: ClockIcon, current: false }, - { name: 'Connections', href: '/connections', icon: ServerIcon, current: false }, - { name: 'Entities', href: '/entities', icon: GlobeAltIcon, current: false }, - { name: 'Definitions', href: '/definitions', icon: DocumentTextIcon, current: false }, -]; - -export default function Example({ children }) { - const [sidebarOpen, setSidebarOpen] = useState(false); - const [sidebarCollapsed, setSidebarCollapsed] = useState(false); - const [branding, setBranding] = useState({ - name: 'Preswald', - logo: '/assets/default-logo.png', - favicon: '/assets/favicon.ico' - }); +import Content from './Content'; +import Sidebar from './Sidebar'; +import TopBar from './TopBar'; +import { useAppState } from '../state/AppStateContext'; +// Favicon component to handle dynamic favicon updates +const Favicon = ({ href }) => { useEffect(() => { - // Get branding from window object (set by server) - if (window.PRESWALD_BRANDING) { - setBranding(window.PRESWALD_BRANDING); - // Update document title - document.title = window.PRESWALD_BRANDING.name; + const favicon = document.querySelector('link[rel="icon"]'); + if (favicon && href) { + favicon.href = href; } - }, []); + }, [href]); - const toggleSidebar = () => { - setSidebarCollapsed(!sidebarCollapsed); - }; + return null; +}; + +const Layout = ({ children }) => { + const { branding } = useAppState(); return ( - <> - -
- -
- {children} +
+ + +
+ +
+ {children}
- +
); -} \ No newline at end of file +}; + +export default Layout; \ No newline at end of file diff --git a/frontend/src/state/AppStateContext.jsx b/frontend/src/state/AppStateContext.jsx new file mode 100644 index 0000000..30c39be --- /dev/null +++ b/frontend/src/state/AppStateContext.jsx @@ -0,0 +1,51 @@ +import React, { createContext, useContext, useEffect, useState } from 'react'; + +import { websocket } from '../utils/websocket'; + +const AppStateContext = createContext(); + +export const AppStateProvider = ({ children }) => { + const [branding, setBranding] = useState({ + name: 'Preswald', + logo: '/assets/defaults/default-logo.png', + favicon: '/assets/defaults/default-favicon.ico' + }); + + useEffect(() => { + // Get initial branding from window object (set by server) + if (window.PRESWALD_BRANDING) { + setBranding(window.PRESWALD_BRANDING); + document.title = window.PRESWALD_BRANDING.name; + } + + // Subscribe to websocket messages for branding updates + const handleWebSocketMessage = (message) => { + if (message.type === 'branding_update') { + setBranding(message.branding); + document.title = message.branding.name; + } + }; + + const unsubscribe = websocket.subscribe(handleWebSocketMessage); + return () => unsubscribe(); + }, []); + + const value = { + branding, + setBranding, + }; + + return ( + + {children} + + ); +}; + +export const useAppState = () => { + const context = useContext(AppStateContext); + if (context === undefined) { + throw new Error('useAppState must be used within an AppStateProvider'); + } + return context; +}; \ No newline at end of file diff --git a/preswald/cli.py b/preswald/cli.py index 8ac32ab..8724a4c 100644 --- a/preswald/cli.py +++ b/preswald/cli.py @@ -1,8 +1,13 @@ import os import click +import shutil +from pathlib import Path from preswald.server import start_server from preswald.logging import configure_logging +# Get the package directory for accessing static files +PACKAGE_DIR = Path(__file__).parent + @click.group() def cli(): @@ -19,9 +24,20 @@ def init(name): Initialize a new Preswald project. This creates a directory with boilerplate files like `hello.py` and `config.toml`. + Also includes default images like favicon.ico and logo.png. """ try: os.makedirs(name, exist_ok=True) + + # Create images directory and copy default assets + images_dir = os.path.join(name, "images") + os.makedirs(images_dir, exist_ok=True) + + # Copy default logo and favicon + static_dir = os.path.join(PACKAGE_DIR, "static") + shutil.copy2(os.path.join(static_dir, "logo.png"), os.path.join(images_dir, "logo.png")) + if os.path.exists(os.path.join(static_dir, "favicon.ico")): + shutil.copy2(os.path.join(static_dir, "favicon.ico"), os.path.join(images_dir, "favicon.ico")) # Create boilerplate files with open(os.path.join(name, "hello.py"), "w") as f: @@ -55,6 +71,11 @@ def init(name): version = "0.1.0" port = 8501 +[branding] +logo = "images/logo.png" +favicon = "images/favicon.ico" +name = "Preswald Project" + [theme.color] primary = "#4CAF50" secondary = "#FFC107" diff --git a/preswald/server.py b/preswald/server.py index ae5a954..1198809 100644 --- a/preswald/server.py +++ b/preswald/server.py @@ -20,6 +20,7 @@ import json import signal import sys +import shutil logger = logging.getLogger(__name__) @@ -48,6 +49,44 @@ # Global flag to track server shutdown state is_shutting_down = False +# Get the package's static directory using pkg_resources +BASE_DIR = pkg_resources.resource_filename('preswald', '') +STATIC_DIR = os.path.join(BASE_DIR, "static") +ASSETS_DIR = os.path.join(STATIC_DIR, "assets") +DEFAULTS_DIR = os.path.join(ASSETS_DIR, "defaults") + +def ensure_default_assets(): + """Ensure default assets are present in the assets directory""" + try: + # Create necessary directories + os.makedirs(STATIC_DIR, exist_ok=True) + os.makedirs(ASSETS_DIR, exist_ok=True) + os.makedirs(DEFAULTS_DIR, exist_ok=True) + + # Copy default logo if it doesn't exist + default_logo_path = os.path.join(DEFAULTS_DIR, "default-logo.png") + if not os.path.exists(default_logo_path): + pkg_logo_path = pkg_resources.resource_filename('preswald', 'static/logo.png') + if os.path.exists(pkg_logo_path): + shutil.copy2(pkg_logo_path, default_logo_path) + else: + logger.warning("Default logo not found in package resources") + + # Copy default favicon if it doesn't exist + default_favicon_path = os.path.join(DEFAULTS_DIR, "default-favicon.ico") + if not os.path.exists(default_favicon_path): + pkg_favicon_path = pkg_resources.resource_filename('preswald', 'static/favicon.ico') + if os.path.exists(pkg_favicon_path): + shutil.copy2(pkg_favicon_path, default_favicon_path) + else: + logger.warning("Default favicon not found in package resources") + + except Exception as e: + logger.error(f"Error ensuring default assets: {e}") + +# Ensure default assets are present +ensure_default_assets() + def handle_shutdown(signum, frame): """Handle shutdown signals gracefully""" global is_shutting_down @@ -86,15 +125,6 @@ async def cleanup(): signal.signal(signal.SIGTERM, handle_shutdown) try: - # Get the package's static directory using pkg_resources - BASE_DIR = pkg_resources.resource_filename('preswald', '') - STATIC_DIR = os.path.join(BASE_DIR, "static") - ASSETS_DIR = os.path.join(STATIC_DIR, "assets") - - # Ensure directories exist - os.makedirs(STATIC_DIR, exist_ok=True) - os.makedirs(ASSETS_DIR, exist_ok=True) - # Mount static files only if directories exist and contain files if os.path.exists(ASSETS_DIR) and os.listdir(ASSETS_DIR): app.mount("/assets", StaticFiles(directory=ASSETS_DIR), name="assets") @@ -112,78 +142,13 @@ async def serve_index(): try: index_path = os.path.join(STATIC_DIR, "index.html") if os.path.exists(index_path): - # Load config if script path is set - title = "Preswald" # Default title - branding = { - "name": "Preswald", - "logo": "/assets/default-logo.png", - "favicon": "/assets/favicon.ico" - } + branding = await get_branding_config() - if SCRIPT_PATH: - try: - config_path = os.path.join(os.path.dirname(SCRIPT_PATH), "config.toml") - print(f"Loading config from {config_path}") - import toml - config = toml.load(config_path) - print(f"Loaded config in server.py: {config}") - - # Get branding configuration - if "branding" in config: - branding_config = config["branding"] - branding["name"] = branding_config.get("name", branding["name"]) - # Use branding name as the title - title = branding["name"] - - # Handle logo - logo = branding_config.get("logo") - if logo: - if logo.startswith(("http://", "https://")): - branding["logo"] = logo - else: - # Copy local logo to assets directory - logo_path = os.path.join(os.path.dirname(config_path), logo) - if os.path.exists(logo_path): - from PIL import Image - import shutil - - # Process logo image (crop to square if needed) - img = Image.open(logo_path) - min_side = min(img.size) - # Calculate cropping box - left = (img.width - min_side) // 2 - top = (img.height - min_side) // 2 - right = left + min_side - bottom = top + min_side - # Crop to square - img = img.crop((left, top, right, bottom)) - # Save to assets directory - processed_logo_path = os.path.join(ASSETS_DIR, "logo" + os.path.splitext(logo_path)[1]) - img.save(processed_logo_path) - branding["logo"] = f"/assets/logo{os.path.splitext(logo_path)[1]}" - - # Handle favicon - favicon = branding_config.get("favicon") - if favicon: - if favicon.startswith(("http://", "https://")): - branding["favicon"] = favicon - else: - # Copy local favicon to assets directory - favicon_path = os.path.join(os.path.dirname(config_path), favicon) - if os.path.exists(favicon_path): - import shutil - dest_favicon_path = os.path.join(ASSETS_DIR, "favicon" + os.path.splitext(favicon_path)[1]) - shutil.copy2(favicon_path, dest_favicon_path) - branding["favicon"] = f"/assets/favicon{os.path.splitext(favicon_path)[1]}" - - except Exception as e: - logger.error(f"Error loading config for index: {e}") - # Read and modify the index.html content with open(index_path, 'r') as f: content = f.read() # Replace the title tag content - content = content.replace('Vite + React', f'{title}') + content = content.replace('Vite + React', f'{branding["name"]}') # Add favicon link favicon_link = f'' content = content.replace('', f'{favicon_link}\n') @@ -199,6 +164,75 @@ async def serve_index(): logger.error(f"Error serving index: {str(e)}") raise HTTPException(status_code=500, detail="Internal server error") +async def get_branding_config(): + """Get branding configuration""" + branding = { + "name": "Preswald", + "logo": "/assets/defaults/default-logo.png", + "favicon": "/assets/defaults/default-favicon.ico" + } + + if SCRIPT_PATH: + try: + config_path = os.path.join(os.path.dirname(SCRIPT_PATH), "config.toml") + if os.path.exists(config_path): + import toml + config = toml.load(config_path) + + if "branding" in config: + branding_config = config["branding"] + branding["name"] = branding_config.get("name", branding["name"]) + + # Handle logo + logo = branding_config.get("logo") + if logo: + if logo.startswith(("http://", "https://")): + branding["logo"] = logo + else: + # Copy local logo to assets directory + logo_path = os.path.join(os.path.dirname(config_path), logo) + if os.path.exists(logo_path): + from PIL import Image + import shutil + + # Process logo image (crop to square if needed) + img = Image.open(logo_path) + min_side = min(img.size) + # Calculate cropping box + left = (img.width - min_side) // 2 + top = (img.height - min_side) // 2 + right = left + min_side + bottom = top + min_side + # Crop to square + img = img.crop((left, top, right, bottom)) + # Save to assets directory + processed_logo_path = os.path.join(ASSETS_DIR, "logo" + os.path.splitext(logo_path)[1]) + img.save(processed_logo_path) + branding["logo"] = f"/assets/logo{os.path.splitext(logo_path)[1]}" + else: + logger.warning(f"Logo file not found: {logo_path}") + + # Handle favicon + favicon = branding_config.get("favicon") + if favicon: + if favicon.startswith(("http://", "https://")): + branding["favicon"] = favicon + else: + # Copy local favicon to assets directory + favicon_path = os.path.join(os.path.dirname(config_path), favicon) + if os.path.exists(favicon_path): + import shutil + # Save to assets directory + processed_favicon_path = os.path.join(ASSETS_DIR, "favicon" + os.path.splitext(favicon_path)[1]) + shutil.copy2(favicon_path, processed_favicon_path) + branding["favicon"] = f"/assets/favicon{os.path.splitext(favicon_path)[1]}" + else: + logger.warning(f"Favicon file not found: {favicon_path}") + except Exception as e: + logger.error(f"Error loading branding config: {e}") + + return branding + @app.get("/{path:path}") async def serve_static(path: str): """Serve static files with proper error handling""" @@ -240,16 +274,39 @@ async def websocket_endpoint(websocket: WebSocket, client_id: str): script_runners[websocket] = script_runner try: - # Send initial states + # Send initial states and branding initial_states = get_all_component_states() + branding = await get_branding_config() + + # Send connection status + await websocket.send_json({ + "type": "connection_status", + "connected": True + }) + + # Send initial states await websocket.send_json({ "type": "initial_state", "states": initial_states }) + # Send branding + await websocket.send_json({ + "type": "branding_update", + "branding": branding + }) + # Run the script initially if SCRIPT_PATH: await script_runner.start(SCRIPT_PATH) + + # Send rendered components + components = get_rendered_components() + if components: + await websocket.send_json({ + "type": "components", + "components": components + }) # Handle incoming messages while not is_shutting_down: @@ -313,9 +370,22 @@ async def handle_websocket_message(websocket: WebSocket, message: str): await send_error(websocket, f"Failed to update component {component_id}") continue - # Trigger script rerun with all states - logger.info(f"[Script Rerun] Triggering with states: {states}") - await rerun_script(websocket, states) + # Get the script runner for this websocket + runner = script_runners.get(websocket) + if runner: + # Rerun the script with updated states + await runner.rerun(states) + + # Send updated components + components = get_rendered_components() + if components: + await websocket.send_json({ + "type": "components", + "components": components + }) + else: + logger.error("[WebSocket] No script runner found for websocket") + await send_error(websocket, "Script runner not found") except json.JSONDecodeError as e: logger.error(f"[WebSocket] Error decoding message: {e}") diff --git a/preswald/static/assets/defaults/default-favicon.ico b/preswald/static/assets/defaults/default-favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..5d1d01bedc0a0662d080a3720253ceb4ecba67b4 GIT binary patch literal 10274 zcmd6NX*|?z-}j7dlnhcM*|W8beIM(jXc8jXcP9HfV@cL2ODWFCPRJT%iIRPaI7MS@ zQPxfxlY|5pY3fl#396_n{2z272Wrzz=< z$NQsXWI{qhq(c;>{Q})&aJEbJHFvvCHCa|!hD z$9wqs3e#;mIr|0SH6qKjqE*f?V9`acar`5&PG(Jy{JIdg;79er3G3`JM6~jbHWnCHQYO|G)2ptIMAr z_y+}g@AcQ!MF#7Q^}+h$=^c>!-2qn@6y5{xjr~{s(cbv~tUmx2%G=4;O;a*d$`yOX zDaacysdd?RPt8@>6^rw5^A(m728I0J68mjSL+0Py{6D1S|8K~pV{31K=%@k*ASZ?2 zIe{Gt9fWuH3)DjU1cHT=uzrxIr&FK?UGTq-0H*f>{vQ<>4Bej!|3@UDPX7OfZy<)+ z!=+!KnV+Axmada;u#@m{Q>?EmHV_+lLfF;MMe__=-@;nfLiY^DO*jaL4b;4h*7H}i z4zu<##AwL;cN71|uzzI&MjQ;g%pXbsn?IxiJZee?(kWxhYz+btJ&!qqHVe&N9Iy4| zALWhvU>pOfm33sjbmXC{h4hzWI*ux8(g(^hANW?7Iop^R_x+__6Z6=v`CQTKJE;?x zK4^&8`3d~*||H{ zKVp-aT)>ET6{7KAw9XBBj><}+Vbsn$ncDAm%SRqN`4ZsdnDtH#%>6sfA7-=9_8F3) z=1b|B4qmjX!dnH5kH$3RjF}=7m;@Y4;0afcQFBD7kW-3FaejeOecU0dZ#ePMY45tX z=O=_{USGn!Ecc^fmUsE&qQX11z2>btQdm*M^BS_0n+1LZV2!v>&Uj)#1xRq6aCy>HVPJIR-p) z^6d;?;0emvpjmPPmwzdAX>hGpHI_k;omnpT#bi3B`@W^&f9)5oN# z6KGiGyE~Z{9m~SV0;^~Q1#DiNAAHDC9EO;i?!!sh98CSrV z>s}(){KDR_>iS_zEPi zQzJls87T8VECL-FVN}fn>%xvqNx~E}aLX8Ul-4QG%4Sc6z^JP91bM=J*k|CgzM=Q# z;#c`-UQ#{Ui7NgKXxQ^tS`=;Z&1a#n`K{L=MzeA76+ym45Pw@3DDbY^b$atHjLA^n zF?Y~{1*k@D0pp^N21ubL48k!V2j`TVzLw|u{CP{5mFA7vtA&g?Dob(QT(r42qRYl3 zqM=97Fl8ShTD~Y{6nGHSBgedH;-dLgG$7Aa3KBb>0|hZkL!iFH2^qX2u5;UHiF!($ zN-Ry-L<9LGNh-8w0C6#@&ggf!C@wi|b6_%n zNr3wHPG*!{D>jy{26Dn<`iv<_ZSwY1osiD(gFr=;s$seR)_;W}pJ*uZ@P8yG*bf zi&74Q7?>pOmGpitOHy@C$THxW>(XaY@Q&;yqieatXq)E?G%WJ0cutWS1l$6 zc+Qby>bPmr07NZ@V0n<{OJBZW7f|JsTh3PBdKp^C=q5s$#OXT#&`3y9azL^xd|;`x z6bCA0v$s{jJIbp#@0hG1u6#&p6Sk)k#X7@Nf%!A!nADq_rF5GjR3fG`oCYd8<*y49 zywKN^qrSB)BVBEOnd2Q8!WndDZfhB)tz0msfRRIXDXw3XvR!(aL-?w#Cd4u$qA%)A zP6n?Sp^ep-N_^3oYtwT6TcLWG6etS(7-ixEW@4as9}3*Y^N`13#J6B6DL1b}UjhU* z9KWWxMLx!rvXL}%DDlI#xe;Aef`1<=dVK#ec ziMv;aZt}N_ojT*Jt!ZV1mxTqU7xxo%8i(t*nWNm@uVduoxV&3dl56!+%y;f`i}^eV z5IWj4o~|?Qs_FHl>vFoQ6RyGAQl%khvTi59_nKSWyS#T<>g(48r>cv06^9!0UFB(? z)TWo!wAt(yGR3ix0eHmIx56kL9yQ$zRHytXA(wfp^~1(Zs<7QZhnt4E(i;)(eEvT8 zgsNI{3B0E7up_5Hffo}0@FNn(%zFk#J?cg^O*GW|$rpXCrtfJeX@IBi6#ijJDRze) ziF@Ur)aHn28a{3CdiwztxloVBM@s`k>9u{AMXysKcK;l(^W^HaRhs1ofIOXH{Zih7 zT}|IXn9a@;3LYybz{!V!zJGe7r!R1PD!0&pU72^yk6{PiYrFQ5KLQQ3j(S>CLR_*c zr*eyA5@My5$SLyc(mB~g+5is`oOa1uFj`UB9D%BHR%M}d-tDc7v+?fgzz1uuExQWv z5e$4l(i^Sm$$bIIQ6!3Xq%0|(Z6Mxfb>xzxIq92rV6Qb#wdp&Z;pvIVGVqZDidPU# zX1YMp6DYm`idT@hr(>X;IaXBDJ3v7VDEti+KwkO>9x&FY#Y&G5U59rSkhq`@AZG*Q zYI@3})K^|n`3DKVMVPbGH+df5&aut$M*DQniRfd_T10wG`PiH(!z)C;%0ErnQ@g8iz zLK8i_n+kXj5)$VznOoF<*Md68Z$%ko4oK3{=Q#`e>%F7=f*<1!ORsIyMaG!{DyPrP z;ih`bkbFB|ukHH;dNuvyq`4QAH)ExJqOsC%MnGlw zEUAOcPx?w4`Od)H8Qs99rmsZm1Ahb@bo{M{{DQ*`th5jFJQW8T`&m|s=I5AYVDpML zpwa`*Yl{2)5=h6MX2!N*NaPY4(2c!%aBP4tDgQQn(9FKjU>=CG1wdnAElp(bPGF-H`&4?}6kcE9ydv zICke56`6uuy%QK$Wdw>m9uxIKK4amf+7`>z*s7`@21wjPBWaeZTkwH1h$hry75*qh zC}Kr#raGFt_NEwg^eoK%m|vs8sSA2Pd7yqQTF@3v)uiFG&DT1<3Zu>pfr?zckZ%wr zz9Kk-m=UkNS!@L63yNsMLjhiC(JBxj7A+>*LpkR>AAb((_*zBfG;}UB;8WyXYkTyn_YHlPx&;XJ>#~PzrxDI*csCz&0)Tz$>4SfBFr%D z?Dt%;H@h;Zcx7Mtg?7$R?iER*`t{j!hByRuJ#JR=!F9#hSo=%ZyOaCE500@f=I+#K zV`z1SFX}}A>UfF0G1JhUL(dhJ?+&x7tj5jy>BYP6XKO8eeT?s7+J>oqjNMRFy8?#B z$d**17SL#9oly;>#vkbZHtPe6Jg}(RpCRBByw(Qft|$Iox*6DLgevO>`K1krWWPLJ zUHjzkC1x#u=x&cwI?s0DJT_Uu`ahDH*%BaL8I_AC07)rhCU(xVTr=N46`#@gescfS;& zR9#Q;JDRUFrzmPSoy{+jlILB^H&DXua;}&-UUL`r*!d$o2@iLI3I!p?`X9}NNP0wi zL-Q-uvZP1t7+PXIzqei96+JGMf?ExGLiVacKB z$p7eubRA*WD1{>FBI?m9Q54D0av+pvByjR0fDH{G7>)>IymvNO)ZZANq?F4bc*T5$ z!)oQthrm2flG+x^l1euQuW0B}`jou*nlPPHyeX!f^46uvcKzTCs^Z-bB>-8X+EzAl zHSTz#HxIZYk_6yK5PYtH>gLa5 z5_C0RNe20%fON-46d;i{mMAX12goO+VKD*+q}f{0uaBvp39(fpL0%% z_F~FE+z+47^n}b;jC@iJ&A&zBnmbaH^G<5(Cnh`p&YfZ!z@N>G5Wtmwk?wF>?36I} zt{uk&PhOEkl6eD|3PF6!zAi6WLwKs=#c8BH8)8gay|zqMUxSI{FO@~H~H&@H%${tkoE1uNHe#^nUk03;qj zF5Y>T8eZBPlmQ*R)Y`aoi>y;or@h499iks!F3Q&G^!ivc?}jHni3LSRFF&9DyaIq9 zdkg$I*M{oKqp>p;T=Ud<$3higHshke+kg6faquVG1-xu+rNC@E>w)N;7?pSyQ$@Pi z3B`+6uE`A5cSr;B25gaTDHMGIjmi%MEiSeWQxG$+YHuC_?LCQHWjUF+Xh58QfUBQ? zUSV!Og`pL_xQd5^0pBEEHj_NK1O2O0Vvs>q-yt@3N(U5;c@bC@af|ucw?8r@h0^UT z>Y*e(8We|Hy$oPwhIpquv(Hf>7)@QU-4IFaRNt)0??Z<+mR3m}&0Y zzoQP?dizds8ZdiS=T>i!A$VJ0W@{~ceQX>ZG(MT{^fPY{_197r^MTFtsU}e{z{L_3 z^V9iUIp@3pwGyyoNBZDzF&1CRg8axlysZn2-nvshy1AxeZUg}d>Dg9TMHY~Kt>Ij?-9WE!}Qu=X~}3)*{cobpRM4^{Z5j|e=F21PiPxaeh;JX5Zo1Z~cme6Y*G)~01!Wm7I09qFg4 z#V1e<|0UE))YhNBSf0k*u8qO%5=V&m#wCk#-`*&e=km%Xr&_C2__dD;JfKVGXtjNJ zalD2{jC7e?p{?g(vV{`v6qSKHN^qoWdl{O~a-S!s{IJ$IUs5~&o(kf4;$q~Cz<`>W zjlN}M%EXHqjqJciU+HgC{@YVj&LGFa1|2Kc256K(p6;E1%#X}b$CZa^HfXfV-v(X=uFyx+VK88#wO74 z_j`l90+W(rr;Y-e;eD=zinsm*sUu9M6>kpAXynZYPWJo%KHi&b-Nzw+7#gXZ0+7NM zqhca8YA3`mNxCT7_({##>=((n!Nc83#LH2Zy4(t5~oEHiJMT!$`%I&>rU1MjAKks=i+`FYY^K`AF zXNiKPezlB(27@gJ42RK5HdW0{D*VfA+uO2;Ft)T`mlFI0QO;4N&Sv#Ts^aq8h;=b| zPk~iIwOEi_hz$Yo5#>8`)DQczZu~ z%JlbL6>o<7&CmE=FeVw%)1}r`%~y=3x0TfB^>E9H=@>41Lr7bK8Gl=^<7b`rcD zG%%hRnTTL*albxYk&45!wZ5X?R|@tlA|oT{bRk8T7cyjt^v@_Y{RXlPAcwtsN#yC@ zgM{g<;?27NvvT0p;}4Yt7k6(z?PFeUkquP}@XQ)90z{8cCxX`ta6c-l8oPmX-54zx zR2cFhVW--PalhS-!?zC!Iiw;!AZzliUMw38Zd-a6`>J*aPUeF*xOP_dXO4)lUQl%H zl_V;^DJ+dR3uxOI(6)~u@;|91tzdr zUX?(>snDQyiNW^{yzu)Ia`UXi!zovBkFRa;iR|LW_UrHE5n=jb9y_`-ALz+M@ICL5 zA2qKdH@_NR8g!1}3r)sWovi^|@R`Yt<8oHU0D71m5!Rr=v@MIeF$}#H-C#+v7GrDG zEp7O@BZZ0|4oo&p+x$coUO=$5UTgUx?USb;Q;EdUjm&G!nBiF;#_l9m^ns5R4}71H z)g=Hu5T}6e-fh;HghJs}$-*g+7znU{`O5wM&Zdb9SR4A~uj<+#~ zJ}RnzR+*|8C5F0z*FuEFi_=T?6==P&%P8J#qjC;fBk>?^R0Dul+bPtIdO<`}c(|eU zq#-7Inn&QYwG5jb$A?+3!SgCWHyOBLb1Dq6O`*7beb!t*ES27v{r72}&~dx4*FKo+ zT^~HFhbR&corq7a#)N7L#f_(2 zk?9eab6aA{+a=deCW^^ah7fNpiZ_ncPySdCkyS*`t7?@fz+j(TcAkZ?KDu6j<43zK zz*BO0aLP9eaJliADYNA0OJR9hlpTR9MXac(!TL$3luC^b}3;!?o9olLvFca{WFZT7Qq<8L-=aLbn_DQt%0trda{X-s)C z0gI$Vww4;&Q043bnz*(ZM|Aaud0(Lk&5ed>x{l=Vw6} zjDOa1DA>4CpP0#ta+uvMQc#{&@oBiE$_a)!hyL@n ze?(n4qHpZip-oQmt)1=S)CG$1b%>8ILtE5S*vSy4gsL2T~eEOPfRdubP4aOHK=*@)0kgd)S z1;=9qFE2ZOe>Uh~%#BkOLC=eU>J)!TP|M9Oz#VKm(tYt+sx3Ha^#gzKmlE3f+Q5S$ zSu8u6gFoO^c{Fo?*1ZltJzvbtZ`!0-M)osxP&%A2HFtPAwdJAU zi@7f)$(!^}@(@TjkyX{3_efTty~imv)&!CVE2=E$FD;5+Wjt{LtiN75IGU*X@VeOi zEB-hUYOdu_@DI#=;M>%`EV*&nfvCfjHv}?%G9?Z=D~m+W*E8i|TMTx4=$(}f0Twk4 z0B#8;>gR=M79dh?VD(8T<@@yof!l9EYn|brMX9;5E+Ja;r-y=ND)fmGTzHbRWRKGt ztKR&R%#N*nsIq4pZ@+*CneA8Op_f z16OuU>um*oi2_6b=sL+S(f_5G5Uds7UmD!=X4^{ci zB_(-8^vLj}mp@M!)i)()B}OYd;xJ=hTuv|Ac~bN`U})@KiAxTpm6QA%0Y zoBrTVehD<$s>CfI!pG>oSfd0*mYqO)joj&29*YnJ55UaCFNhEWner~<7PTUpKedyb63~kMp&7MzG({%sF4wwm*BGg>77BKNuN^_ zQ=Z6%^F%#=aq{Lku=r^oN_Ru42NWdz8>;83T>K{xw{Jkim&i4E+d@zZE^%2C!YxTX z@T&I5^Hu{P+H_?+q*8=>;G;=O2lx-hXS*$zV7Yi+E<8)EYFC6=>ve6lU#*QEIf##& z8;h__O0ng{WlEym&Jnbvc|d$7nhZzc3KTNWYS^1E3u6MU`kbbi@(MTa*)KPjez|X+ z42ct`9xx<(*@3wUSYvezC6LI15?^Ohj{Y80OAfT#MZ<9ciL17)E{vd~q@gXx>#V5H zGh-30zREr!)nQCE_5>1YJ9ExuErC6t&ZAjr zv3aYa-SYUGt4YCI%@k+27#IGn7aghzykkazhJ7){`%qp(^^-Yb+7`>1&m{pz7KX9P zN)t#;YQfsAlJw#92Xr|ZSuQAR^1G==%D`OLT-Dm1_1nGhEn`7|`$^86=}_=8DE#b4 zZq#A^W*I*jXE+i~ehAW4gJGm^snr}nm%Z!&bgl%$kO1QWDyAdo{T^sd){?lc0si%? zh=&Y`P|X4sBU?r>q?>B~rUawI4!3{Qg@DMet#LYrG36aJ9RI1%)4L!b`c3+$TyrL4 z*)ghF;NsNpfsOuj5PwoFc-f8!OId#YZY)KY{P6oF`kcI71SFhXsSlwYqu%p;@2lNITM+QVw|X=KCM9mO zqFicDbT9oLPC9xHD2q@5=N?HZP+;j#S+qz#LVi>FWyvfVLNO$t0A1}CsF(o_8I0zOjn z8D#`KacNqvq+M9 z+v;QOk6*Xw$q7h}BHFDl*fb>K%gcYdogsjRcptyYAm8U{S!-~HU$|4C5d2vyxP792 zQpPLNI9dU?@Xd3$-Tc0Oa!9F7i1-?WumqY-EjQNqYn`f77^<0_y26Y{~0q) z0oSN*JB(Psly~CDx3Qn}Ta_g|BKj#OzH|mK2-JSPG?Nhr6sCYe(c$(*dQTs1C_#bU zOSP|E*2kUUeISU#mHW3QOTYL&rapz}>5{W?&T^|Z9Y|(-Bgpc0XvNg-zYbt=uA5X8sbWCNNU9S>Af*E6sBHy^8_75 ze>IBZXOu+{NWb(Zg;MK@7>6qLq`qm7Kj)n3nF(y|C(#bWXv%l zXI1PPegoY!-m2k^e#eC`U5HBAzT5{5n>OQsKuF;GDUK}QD=AmNw^074iyh{T{FM*N U!nZ`|-{QlZH9Avu+L7?T0O{4?UjP6A literal 0 HcmV?d00001 diff --git a/preswald/static/assets/defaults/default-logo.png b/preswald/static/assets/defaults/default-logo.png new file mode 100644 index 0000000000000000000000000000000000000000..d0e473ad58aa32886f45ddff4c0e99f437e2c939 GIT binary patch literal 42176 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 z zdM)1AOOx*3C}gN9B-FIM&WG3Ypg@*jKl{Nd+eo#kWJItH!Owd(%~G}ouTNgAm(VK} zB>?||7I;%>c`wF-_88X@Ng8$$v1>rYN&`nHs#_l`l7k<2+#V1^i=cOS)YmLLl}^9_ zslqTVgbTA%&VZ_cbUq9}!BbabJuUGI+(-|H#ue`=m92|^PHt-bsnD5tmnW1a7~B*; z$ujLErX=U8BaSB>(rz%Nl?9cFAf8A&HpWkn?Ae%rhE#(}D2=>nH#%{aPlBGGO|o!R zg~(Az;>p#cQmM`d*HAm-mio4R+dxf~TJmo0Z^76`a=WW$m5% zE76U|nY%wCrn@I+L3hXW!#Qzak-y@6(XS|kx#E7q0ay(nw?Lp2dl@3Zz)Of1m2QI} z-vN7yNgHTt!@D31H$Dq5_5qMEsPM3S>q2|vG~aJ+3cEKA6iJsa>`6dix3k5W9+p`v1_ow+Znkn)3^dTwY+h0r zR!Fq!HItT40%tK{m)G#)Ak&ca)fDwRg(K34hzO6Ey6UDRiXsrq`^0>CHf2uG6qK>tApw9Tm>@y-68*0tVelS6)l zav9c{cuSH+6Wk^+Mi?V5BM##w#;DjmuC%2y*F0AY@Y^^u?x_fNBqJ)GgN@Dl4Ne_y z|IlFbb4RMYOcd2owy zRN{*&!+^3fBLMFe-kW&ab;$^-hrMNQMLdS^U;RnK-KcU>M_U`rD{fyjX8hxh9%4aao#M8A1>H zwNdeiYKbByb7TA5?7j9{?|RqTan3#|NLDOEj3}EiFi_l&7vy$x_6%E# zw+Rhn+J|je zZZB!Dh*f57nL}>X)W1-j#^qND-F^CN5T&nAD;a7f1o%R`rg*Xpv&280cKyB zN+&}j%as!;J|hR6xv+K7!|YhR!$(t7^P@U^i2s?k9#Lyvp+~E(FkHdgJijmHo12oH z5uW;&%mfFTEiQfaxzIqCmhSG9(7-Ne_k94%n=MV{H2{Rlz3}Ki1|?I5w9&CAZrA%} zDYBA%1|1;#kp&>H((tXI>&rp7Rzr7UY!a#H^htEj>#Cdo|3Q1a`OB`Q-^hq&fRiKk+rJEW-Y<3x?n<2ks@)y|+ zfEnXju^Y93C3E7xz;meXkXCFP2s{{DfvEug*#{fgR;HOv;)sb(H6dz$UViYgXj;{Fs6I?Wb0O&*;X_)Qns=#1 z3iVv6&z)*kW-i?I$l861J`Q4AC@9@D4Pq;(eiXc;rJHqKH^3JICz{oPAi#8K3BYm?iMwi*YKT4 z8>8JM0bVBlsRN;ba0dP+etU16hkJz zUo~9mAaVb0n|U0`ORaQjpF+~;W0mv zh9*Sz+jI{kyFy$3;N@_ZmLtVx?`TRvZ*Gm^&ZD*WDqNyG0c?Y^>sl8*G%mUmn7j>B zfd63BRnLdK;jUl6P2PK{Z%DfSo{GSjTL;u}JDF-}(IG7mRMr-S+;j4Ua1D≥I9- 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 literal 0 HcmV?d00001 diff --git a/preswald/static/assets/favicon.ico b/preswald/static/assets/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..5d1d01bedc0a0662d080a3720253ceb4ecba67b4 GIT binary patch literal 10274 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 U!nZ`|-{QlZH9Avu+L7?T0O{4?UjP6A literal 0 HcmV?d00001 diff --git a/preswald/static/assets/logo.png b/preswald/static/assets/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..f639b3cfccc687bbddee74dbac83a3190c1c3d22 GIT binary patch literal 16543 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 literal 0 HcmV?d00001 diff --git a/preswald/static/favicon.ico b/preswald/static/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..5d1d01bedc0a0662d080a3720253ceb4ecba67b4 GIT binary patch literal 10274 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 U!nZ`|-{QlZH9Avu+L7?T0O{4?UjP6A literal 0 HcmV?d00001 diff --git a/preswald_project/.gitignore b/preswald_project/.gitignore new file mode 100644 index 0000000..d3661ee --- /dev/null +++ b/preswald_project/.gitignore @@ -0,0 +1 @@ +secrets.toml diff --git a/preswald_project/README.md b/preswald_project/README.md new file mode 100644 index 0000000..7350682 --- /dev/null +++ b/preswald_project/README.md @@ -0,0 +1,6 @@ +# Preswald Project + +## Setup +1. Configure your data connections in `config.toml` +2. Add sensitive information (passwords, API keys) to `secrets.toml` +3. Run your app with `preswald run hello.py` diff --git a/preswald_project/config.toml b/preswald_project/config.toml new file mode 100644 index 0000000..28e6ec8 --- /dev/null +++ b/preswald_project/config.toml @@ -0,0 +1,47 @@ +[project] +title = "Preswald Project" +version = "0.1.0" +port = 8501 + +[branding] +logo = "images/logo.png" +favicon = "images/favicon.ico" +name = "Preswald Project" + +[theme.color] +primary = "#4CAF50" +secondary = "#FFC107" +background = "#FFFFFF" +text = "#000000" + +[theme.font] +family = "Arial, sans-serif" +size = "16px" + +[data] +default_source = "postgres" # Default data source. Options: "csv", "postgres", "mysql", "json", "parquet" +cache = true # Enable caching of data + +[data.postgres] +host = "localhost" # PostgreSQL host +port = 5432 # PostgreSQL port +dbname = "mydb" # Database name +user = "user" # Username +# password is stored in secrets.toml + +[data.mysql] +host = "localhost" # MySQL host +port = 3306 # MySQL port +dbname = "mydb" # Database name +user = "user" # Username +# password is stored in secrets.toml + +[data.csv] +path = "data/sales.csv" # Path to CSV file + +[data.json] +url = "https://api.example.com/data" # URL for JSON data +# api_key is stored in secrets.toml + +[data.parquet] +path = "data/sales.parquet" # Path to Parquet file diff --git a/preswald_project/hello.py b/preswald_project/hello.py new file mode 100644 index 0000000..10393a9 --- /dev/null +++ b/preswald_project/hello.py @@ -0,0 +1,19 @@ +from preswald import text, connect, view + +# Connect to data sources +# You can use the config.toml file to configure your connections +# or connect directly using the source parameter: + +# Example connections: +# db = connect(source="postgresql://user:pass@localhost:5432/dbname") +# csv_data = connect(source="data/file.csv") +# json_data = connect(source="https://api.example.com/data.json") + +# Or use the configuration from config.toml: +# db = connect() # Uses the default_source from config.toml + +text("# Welcome to Preswald!") +text("This is your first app. 🎉") + +# Example: View data from a connection +# view("connection_name", limit=50) diff --git a/preswald_project/images/favicon.ico b/preswald_project/images/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..5d1d01bedc0a0662d080a3720253ceb4ecba67b4 GIT binary patch literal 10274 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 U!nZ`|-{QlZH9Avu+L7?T0O{4?UjP6A literal 0 HcmV?d00001 diff --git a/preswald_project/images/logo.png b/preswald_project/images/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..d0e473ad58aa32886f45ddff4c0e99f437e2c939 GIT binary patch literal 42176 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 z zdM)1AOOx*3C}gN9B-FIM&WG3Ypg@*jKl{Nd+eo#kWJItH!Owd(%~G}ouTNgAm(VK} zB>?||7I;%>c`wF-_88X@Ng8$$v1>rYN&`nHs#_l`l7k<2+#V1^i=cOS)YmLLl}^9_ zslqTVgbTA%&VZ_cbUq9}!BbabJuUGI+(-|H#ue`=m92|^PHt-bsnD5tmnW1a7~B*; z$ujLErX=U8BaSB>(rz%Nl?9cFAf8A&HpWkn?Ae%rhE#(}D2=>nH#%{aPlBGGO|o!R zg~(Az;>p#cQmM`d*HAm-mio4R+dxf~TJmo0Z^76`a=WW$m5% zE76U|nY%wCrn@I+L3hXW!#Qzak-y@6(XS|kx#E7q0ay(nw?Lp2dl@3Zz)Of1m2QI} z-vN7yNgHTt!@D31H$Dq5_5qMEsPM3S>q2|vG~aJ+3cEKA6iJsa>`6dix3k5W9+p`v1_ow+Znkn)3^dTwY+h0r zR!Fq!HItT40%tK{m)G#)Ak&ca)fDwRg(K34hzO6Ey6UDRiXsrq`^0>CHf2uG6qK>tApw9Tm>@y-68*0tVelS6)l zav9c{cuSH+6Wk^+Mi?V5BM##w#;DjmuC%2y*F0AY@Y^^u?x_fNBqJ)GgN@Dl4Ne_y z|IlFbb4RMYOcd2owy zRN{*&!+^3fBLMFe-kW&ab;$^-hrMNQMLdS^U;RnK-KcU>M_U`rD{fyjX8hxh9%4aao#M8A1>H zwNdeiYKbByb7TA5?7j9{?|RqTan3#|NLDOEj3}EiFi_l&7vy$x_6%E# zw+Rhn+J|je zZZB!Dh*f57nL}>X)W1-j#^qND-F^CN5T&nAD;a7f1o%R`rg*Xpv&280cKyB zN+&}j%as!;J|hR6xv+K7!|YhR!$(t7^P@U^i2s?k9#Lyvp+~E(FkHdgJijmHo12oH z5uW;&%mfFTEiQfaxzIqCmhSG9(7-Ne_k94%n=MV{H2{Rlz3}Ki1|?I5w9&CAZrA%} zDYBA%1|1;#kp&>H((tXI>&rp7Rzr7UY!a#H^htEj>#Cdo|3Q1a`OB`Q-^hq&fRiKk+rJEW-Y<3x?n<2ks@)y|+ zfEnXju^Y93C3E7xz;meXkXCFP2s{{DfvEug*#{fgR;HOv;)sb(H6dz$UViYgXj;{Fs6I?Wb0O&*;X_)Qns=#1 z3iVv6&z)*kW-i?I$l861J`Q4AC@9@D4Pq;(eiXc;rJHqKH^3JICz{oPAi#8K3BYm?iMwi*YKT4 z8>8JM0bVBlsRN;ba0dP+etU16hkJz zUo~9mAaVb0n|U0`ORaQjpF+~;W0mv zh9*Sz+jI{kyFy$3;N@_ZmLtVx?`TRvZ*Gm^&ZD*WDqNyG0c?Y^>sl8*G%mUmn7j>B zfd63BRnLdK;jUl6P2PK{Z%DfSo{GSjTL;u}JDF-}(IG7mRMr-S+;j4Ua1D≥I9- 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 literal 0 HcmV?d00001