UNPKG

dev-services-dashboard

Version:

A lightweight development UI dashboard for managing and monitoring multiple services during local development

354 lines (350 loc) 311 kB
// src/backend/index.ts import { WebSocketServer, WebSocket } from "ws"; // src/backend/logger.ts var createConsoleLogger = (enabled = true) => { return (type, message, data) => { if (!enabled) return; const timestamp = (/* @__PURE__ */ new Date()).toISOString(); console[type]( `[${timestamp}] [DevUI ${type.toUpperCase()}] ${message}`, data || "" ); }; }; var Logger = class { loggerFn; constructor(logger) { this.loggerFn = logger; } info(message, data) { if (this.loggerFn) { this.loggerFn("info", message, data); } } error(message, data) { if (this.loggerFn) { this.loggerFn("error", message, data); } } warn(message, data) { if (this.loggerFn) { this.loggerFn("warn", message, data); } } }; // src/backend/service-manager.ts import { spawn } from "child_process"; var ServiceManager = class { services = []; maxLogLines; broadcastFn; logger; constructor(logger, userServices, maxLogLines, broadcastFn, defaultCwd) { this.maxLogLines = maxLogLines; this.broadcastFn = broadcastFn; this.logger = logger; this.services = userServices.map((userService) => ({ id: userService.id, name: userService.name, command: userService.command, cwd: userService.cwd || defaultCwd || process.cwd(), env: userService.env, webLinks: userService.webLinks, process: null, status: "stopped", logs: [], errorDetails: null })); } getServices() { return this.services; } getService(serviceID) { return this.services.find((s) => s.id === serviceID); } addLog(serviceID, originalLine, logType = "stdout") { const service = this.getService(serviceID); if (!service) return; const line = originalLine.replace(/\[[0-9;]*m/g, ""); const logEntry = { timestamp: Date.now(), line, logType }; service.logs.push(logEntry); if (service.logs.length > this.maxLogLines) { service.logs.shift(); } this.broadcastLog(serviceID, line, logType, logEntry.timestamp); } broadcastLog(serviceID, line, logType, timestamp) { this.broadcastFn({ type: "log", serviceID, line, logType, timestamp }); } broadcastStatus(serviceID, status, errorDetails = null) { const service = this.getService(serviceID); if (service) service.errorDetails = errorDetails; this.broadcastFn({ type: "status_update", serviceID, status, errorDetails }); } async startService(serviceID) { const service = this.getService(serviceID); if (!service || service.status !== "stopped" && service.status !== "error") { this.logger.warn( `Service ${service?.name} is ${service?.status}, cannot start.` ); return; } this.logger.info(`Starting service: ${service.name}...`); service.status = "starting"; service.errorDetails = null; this.broadcastStatus(serviceID, service.status); this.addLog(serviceID, `Attempting to start ${service.name}...`, "system"); try { service.process = spawn(service.command[0], service.command.slice(1), { cwd: service.cwd, env: { ...process.env, ...service.env }, stdio: ["ignore", "pipe", "pipe"] }); service.process.on("spawn", () => { service.status = "running"; this.logger.info( `Service ${service.name} started (PID: ${service.process?.pid}).` ); this.addLog( serviceID, `${service.name} started successfully.`, "system" ); this.broadcastStatus(serviceID, service.status); }); service.process.stdout?.on( "data", (data) => this.addLog(serviceID, data.toString(), "stdout") ); service.process.stderr?.on( "data", (data) => this.addLog(serviceID, data.toString(), "stderr") ); service.process.on("error", (err) => { service.status = "error"; this.logger.error(`Failed to start service ${service.name}:`, err); this.addLog( serviceID, `Error starting ${service.name}: ${err.message}`, "system" ); this.broadcastStatus(serviceID, service.status, err.message); service.process = null; }); service.process.on("exit", (code, signal) => { const wasStopping = service.status === "stopping"; let newStatus; let exitType; let errorDetails = null; if (wasStopping) { newStatus = "stopped"; exitType = "clean shutdown"; } else if (code === 0) { newStatus = "stopped"; exitType = "clean exit"; } else if (signal === "SIGTERM" || signal === "SIGINT") { newStatus = "stopped"; exitType = "terminated by signal"; errorDetails = `Terminated by ${signal}`; } else if (signal === "SIGKILL") { newStatus = "crashed"; exitType = "force killed"; errorDetails = `Process was force killed (SIGKILL)`; } else if (signal) { newStatus = "crashed"; exitType = "crashed"; errorDetails = `Process crashed with signal ${signal}`; } else if (code && code > 0) { if (code === 1) { newStatus = "error"; exitType = "error"; errorDetails = `Exited with error code ${code} (general error)`; } else if (code >= 128) { newStatus = "crashed"; exitType = "crashed"; errorDetails = `Process crashed with exit code ${code}`; } else { newStatus = "error"; exitType = "error"; errorDetails = `Exited with error code ${code}`; } } else { newStatus = "error"; exitType = "unexpected exit"; errorDetails = `Unexpected exit (code: ${code}, signal: ${signal})`; } service.status = newStatus; service.errorDetails = errorDetails; const exitMessage = `Service ${service.name} ${exitType} (code ${code}, signal ${signal}).`; const logLevel = newStatus === "stopped" ? "info" : "error"; if (logLevel === "info") { this.logger.info(exitMessage); } else { this.logger.error(exitMessage); } this.addLog(serviceID, exitMessage, "system"); this.broadcastStatus(serviceID, service.status, service.errorDetails); service.process = null; }); } catch (err) { service.status = "error"; this.logger.error(`Exception starting service ${service.name}:`, err); this.addLog( serviceID, `Exception starting ${service.name}: ${err.message}`, "system" ); this.broadcastStatus(serviceID, service.status, err.message); service.process = null; } } async stopService(serviceID) { const service = this.getService(serviceID); if (!service || !service.process || service.status === "stopped" || service.status === "stopping") { if (service && (service.status === "stopped" || service.status === "stopping")) { this.broadcastStatus(serviceID, service.status, service.errorDetails); } return; } this.logger.info(`Stopping service: ${service.name}...`); service.status = "stopping"; this.broadcastStatus(serviceID, service.status); this.addLog(serviceID, `Attempting to stop ${service.name}...`, "system"); return new Promise((resolve) => { if (!service.process) { service.status = "stopped"; this.broadcastStatus(serviceID, service.status); resolve(); return; } service.process.removeAllListeners("exit"); service.process.on("exit", (code, signal) => { this.logger.info(`Service ${service.name} confirmed stopped.`); this.addLog(serviceID, `${service.name} confirmed stopped.`, "system"); if (service.status !== "error") service.status = "stopped"; this.broadcastStatus(serviceID, service.status, service.errorDetails); service.process = null; clearTimeout(timeout); resolve(); }); service.process.kill("SIGTERM"); const timeout = setTimeout(() => { if (service.process) { this.logger.warn( `Service ${service.name} did not stop gracefully with SIGTERM, sending SIGKILL.` ); this.addLog( serviceID, `${service.name} did not stop gracefully, forcing SIGKILL.`, "system" ); service.process.kill("SIGKILL"); } }, 5e3); }); } async restartService(serviceID) { const service = this.getService(serviceID); if (!service) return; this.logger.info(`Restarting service: ${service.name}...`); this.addLog( serviceID, `Attempting to restart ${service.name}...`, "system" ); if (service.process && service.status !== "stopped" && service.status !== "error") { await this.stopService(serviceID); await new Promise((resolve) => setTimeout(resolve, 500)); } await this.startService(serviceID); } clearServiceLogs(serviceID) { const service = this.getService(serviceID); if (service) { service.logs = []; this.logger.info(`Server-side logs cleared for service: ${service.name}`); this.addLog(serviceID, "Log buffer cleared by user.", "system"); this.broadcastFn({ type: "logs_cleared", serviceID }); } } async stopAllServices() { const stopPromises = this.services.filter( (s) => s.process && (s.status === "running" || s.status === "starting") ).map((s) => this.stopService(s.id)); await Promise.all(stopPromises).then(() => this.logger.info("All services stopped.")).catch( (err) => this.logger.error("Error stopping services during shutdown:", err) ); } }; // src/backend/vfs-middleware.ts import { createHash } from "crypto"; import * as mime from "mime-types"; function normalizePath(path) { return path.replace(/^\/+/, "").replace(/\/+$/, ""); } function generateETag(content) { const hash = createHash("sha256").update(content).digest("hex"); return `"${hash.slice(0, 16)}"`; } function getMimeType(path) { const mimeType = mime.lookup(path); if (mimeType === "text/html") { return "text/html; charset=utf-8"; } return mimeType || "application/octet-stream"; } function createVFSMiddleware(vfs, options = {}) { const normalizedExcludedPaths = options.excludedPaths?.map(normalizePath) || []; return (req, res) => { const url = new URL(req.url, `http://${req.headers.host}`); let path = normalizePath(url.pathname); if (req.method !== "GET" && req.method !== "HEAD") { return false; } if (normalizedExcludedPaths.includes(path)) { return false; } if (path === "" || path === "/") { path = "index.html"; } const content = vfs[path]; if (!content) { return false; } const contentType = getMimeType(path); const etag = generateETag(content); const ifNoneMatch = req.headers["if-none-match"]; if (ifNoneMatch === etag) { res.writeHead(304, { ETag: etag, "Cache-Control": "public, max-age=0, must-revalidate" }); res.end(); return true; } const headers = { "Content-Type": contentType, "Content-Length": content.length.toString(), ETag: etag, "Cache-Control": "public, max-age=0, must-revalidate" }; res.writeHead(200, headers); if (req.method === "HEAD") { res.end(); } else { res.end(content); } return true; }; } // src/backend/frontend-vfs.ts var frontend_vfs_default = { "favicon.ico": Buffer.from("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LP9QPiz/UD4s/1A+LP9QPiz/UD4s/1A+LP9QPiz/UD4s/1A+LP9QPiz/UD4s/1A+LP8/MCT/IxkX/yMZF/8/MCT/UD4s/1A+LP9QPiz/UD4s/1JAL//AubP////////////t6+r/YlJC/1A+LP9QPiz/UD4s/1A+LP9QPiz/UD4s/1A+LP9QPiz/UD4s/1A+LP9QPiz/UD4s/1A+LP9QPiz/UD4s/1A+LP9QPiz/UD4s/z8wJP8jGRf/IxkX/z8wJP9QPiz/UD4s/1A+LP9QPiz/UD4s/1JBL//s6+n///////////+KfnL/UD4s/1A+LP9QPiz/UD4s/1A+LP9QPiz/UD4s/1A+LP9QPiz/UD4s/1A+LP9QPiz/UD4s/1A+LP9QPiz/UD4s/1A+LP9QPiz/PzAk/yMZF/8jGRf/PzAk/1A+LP9QPiz/UD4s/1A+LP9SQC7/t6+o////////////1dHM/1ZFNP9QPiz/UD4s/1A+LP9QPiz/UD4s/1A+LP9QPiz/UD4s/1A+LP9QPiz/UD4s/1A+LP9QPiz/UD4s/1A+LP9QPiz/UD4s/1A+LP8/MCT/IxkX/yMZF/8/MCT/UD4s/1A+LP9QPiz/U0Iw/8G6tP///////////9nV0f9ZSDf/UD4s/1A+LP9QPiz/UD4s/1A+LP9QPiz/UD4s/1A+LP9QPiz/UD4s/1A+LP9QPiz/UD4s/1A+LP9QPiz/UD4s/1A+LP9QPiz/UD4s/z8wJP8jGRf/IxkX/z8wJP9QPiz/UD4s/1ZEM//KxL/////////////c2dX/W0o6/1A+LP9QPiz/UD4s/1A+LP9QPiz/UD4s/1A+LP9QPiz/UD4s/1A+LP9QPiz/UD4s/1A+LP9QPiz/UD4s/1A+LP9QPiz/UD4s/1A+LP9QPiz/PzAk/yMZF/8jGRf/PzAk/1A+LP9QPiz/qaCX////////////4N3Z/11NPP9QPiz/UD4s/1A+LP9QPiz/UD4s/1A+LP9QPiz/UD4s/1A+LP9QPiz/UD4s/1A+LP9QPiz/UD4s/1A+LP9QPiz/UD4s/1A+LP9QPiz/UD4s/1A+LP8/MCT/IxkX/yMZF/8/MCT/UD4s/1A+LP+Og3f//v7+/+Lf3f9fTz//UD4s/1A+LP9QPiz/UD4s/1A+LP9QPiz/UD4s/1A+LP9QPiz/UD4s/1A+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LP9QPiz/UD4s/1A+LP9QPiz/UD4s/1A+LP9QPiz/UD4s/1A+LP9QPiz/UD4s/1A+LP9QPiz/UD4s/1A+LP9QPiz/RjYn/yYbGP8jGRf/IhkXcCQaGM4jGRf/PC0j/1A+LP9QPiz/UD4s/1A+LP9QPiz/UD4s/1A+LP9QPiz/UD4s/1A+LP9QPiz/UD4s/1A+LP9QPiz/UD4s/1A+LP9QPiz/UD4s/1A+LP9QPiz/UD4s/1A+LP9QPiz/UD4s/1A+LP9QPiz/UD4s/1A+LP9QPiz/UD4s/1A+LP9QPiz/UD4s/1A+LP9QPiz/UD4s/1A+LP9QPiz/UD4s/1A+LP9QPiz/UD4s/zwtI/8jGRf/JBoYziQaF/omGxj/STgp/1A+LP9QPiz/UD4s/1A+LP9QPiz/UD4s/1A+LP9QPiz/UD4s/1A+LP9QPiz/UD4s/1A+LP9QPiz/UD4s/1A+LP9QPiz/UD4s/1A+LP9QPiz/UD4s/1A+LP9QPiz/UD4s/1A+LP9QPiz/UD4s/1A+LP9QPiz/UD4s/1A+LP9QPiz/UD4s/1A+LP9QPiz/UD4s/1A+LP9QPiz/UD4s/1A+LP9QPiz/UD4s/0k4Kf8mGxj/JBoX+iMZF/8oHRr/Sjkp/1A+LP9QPiz/UD4s/1A+LP9QPiz/UD4s/1A+LP9QPiz/UD4s/1A+LP9QPiz/UD4s/1A+LP9QPiz/UD4s/1A+LP9QPiz/UD4s/1A+LP9QPiz/UD4s/1A+LP9QPiz/UD4s/1A+LP9QPiz/UD4s/1A+LP9QPiz/UD4s/1A+LP9QPiz/UD4s/1A+LP9QPiz/UD4s/1A+LP9QPiz/UD4s/1A+LP9QPiz/UD4s/0o5Kf8oHRr/IxkX/yMZF/8oHRr/Sjkp/1A+LP9QPiz/UD4s/1A+LP9QPiz/UD4s/1A+LP9QPiz/UD4s/1A+LP9QPiz/UD4s/1A+LP9QPiz/UD4s/1A+LP9QPiz/UD4s/1A+LP9QPiz/UD4s/1A+LP9QPiz/UD4s/1A+LP9QPiz/UD4s/1A+LP9QPiz/UD4s/1A+LP9QPiz/UD4s/1A+LP9QPiz/UD4s/1A+LP9QPiz/UD4s/1A+LP9QPiz/UD4s/0o5Kf8oHRr/IxkX/yMZF/8oHRr/Sjkp/1A+LP9QPiz/UD4s/1A+LP9QPiz/UD4s/1A+LP9QPiz/UD4s/1A+LP9QPiz/UD4s/1A+LP9QPiz/UD4s/1A+LP9QPiz/UD4s/1A+LP9QPiz/UD4s/1A+LP9QPiz/UD4s/1A+LP9QPiz/UD4s/1A+LP9QPiz/UD4s/1A+LP9QPiz/UD4s/1A+LP9QPiz/UD4s/1A+LP9QPiz/UD4s/1A+LP9QPiz/UD4s/0o5Kf8oHRr/IxkX/yMZF/8oHRr/Sjkp/1A+LP9QPiz/UD4s/1A+LP9QPiz/UD4s/1A+LP9QPiz/UD4s/1A+LP9QPiz/UD4s/1A+LP9QPiz/WUg3/3ptX/+NgXX/jYF2/42Bdv+NgXb/jYF2/42Bdv+NgXb/jYF2/42Bdv+NgXX/em1f/1lIN/9QPiz/UD4s/1A+LP9QPiz/UD4s/1A+LP9QPiz/UD4s/1A+LP9QPiz/UD4s/1A+LP9QPiz/UD4s/0o5Kf8oHRr/IxkX/yMZF/8oHRr/Sjkp/1A+LP9QPiz/UD4s/1A+LP9QPiz/UD4s/1A+LP9QPiz/UD4s/1A+LP9QPiz/UD4s/1A+LP9TQjD/tKyk//38/P///////////////////////////////////////////////////////fz8/7SspP9TQjD/UD4s/1A+LP9QPiz/UD4s/1A+LP9QPiz/UD4s/1A+LP9QPiz/UD4s/1A+LP9QPiz/UD4s/0o5Kf8oHRr/IxkX/yMZF/8oHRr/Sjkp/1A+LP9QPiz/UD4s/1E/Lf90Zlf/pZyT/3xvYf9QPiz/UD4s/1A+LP9QPiz/UD4s/1A+LP9hUED/5uTh/////////////////////////////////////////////////////////////////+bk4f9hUED/UD4s/1A+LP9QPiz/UD4s/1A+LP9QPiz/UD4s/1A+LP9QPiz/UD4s/1A+LP9QPiz/UD4s/0o5Kf8oHRr/IxkX/yMZF/8oHRr/Sjkp/1A+LP9QPiz/UD4s/2tcTP/s6uj///////X08/+UiH3/U0Iw/1A+LP9QPiz/UD4s/1A+LP9TQTD/x8K7//v7+///////////////////////////////////////////////////////+/v7/8fCu/9TQTD/UD4s/1A+LP9QPiz/UD4s/1A+LP9QPiz/UD4s/1A+LP9QPiz/UD4s/1A+LP9QPiz/UD4s/0o5Kf8oHRr/IxkX/yMZF/8oHRr/Sjkp/1A+LP9QPiz/UD4s/4N3av/////////////////t6+r/lIh9/1A+LP9QPiz/UD4s/1A+LP9QPiz/YlJB/52Tif+poJf/qaCX/6mgl/+poJf/qaCX/6mgl/+poJf/qaCX/6mgl/+poJf/nZOJ/2JSQf9QPiz/UD4s/1A+LP9QPiz/UD4s/1A+LP9QPiz/UD4s/1A+LP9QPiz/UD4s/1A+LP9QPiz/UD4s/0o5Kf8oHRr/IxkX/yMZF/8oHRr/Sjkp/1A+LP9QPiz/UD4s/2pbS//q6Ob/////////////////9fTz/5mOg/9QPiz/UD4s/1A+LP9QPiz/UD4s/1A+LP9RPy3/UT8t/1E/Lf9RPy3/UT8t/1E/Lf9RPy3/UT8t/1E/Lf9RPy3/UD4s/1A+LP9QPiz/UD4s/1A+LP9QPiz/UD4s/1A+LP9QPiz/UD4s/1A+LP9QPiz/UD4s/1A+LP9QPiz/UD4s/0o5Kf8oHRr/IxkX/yMZF/8oHRr/Sjkp/1A+LP9QPiz/UD4s/1E/Lf+Lf3T/7+3r//////////////////X08/+UiH3/U0Iw/1A+LP9QPiz/UD4s/1A+LP9QPiz/UD4s/1A+LP9QPiz/UD4s/1A+LP9QPiz/UD4s/1A+LP9QPiz/UD4s/1A+LP9QPiz/UD4s/1A+LP9QPiz/UD4s/1A+LP9QPiz/UD4s/1A+LP9QPiz/UD4s/1A+LP9QPiz/UD4s/0o5Kf8oHRr/IxkX/yMZF/8oHRr/Sjkp/1A+LP9QPiz/UD4s/1A+LP9SQC//i390/+3r6v/////////////////t6+r/lIh9/1A+LP9QPiz/UD4s/1A+LP9QPiz/UD4s/1A+LP9QPiz/UD4s/1A+LP9QPiz/UD4s/1A+LP9QPiz/UD4s/1A+LP9QPiz/UD4s/1A+LP9QPiz/UD4s/1A+LP9QPiz/UD4s/1A+LP9QPiz/UD4s/1A+LP9QPiz/UD4s/0o5Kf8oHRr/IxkX/yMZF/8oHRr/Sjkp/1A+LP9QPiz/UD4s/1A+LP9QPiz/UT8t/4BzZv/t6+r/////////////////9fTz/5mOg/9QPiz/UD4s/1A+LP9QPiz/UD4s/1A+LP9QPiz/UD4s/1A+LP9QPiz/UD4s/1A+LP9QPiz/UD4s/1A+LP9QPiz/UD4s/1A+LP9QPiz/UD4s/1A+LP9QPiz/UD4s/1A+LP9QPiz/UD4s/1A+LP9QPiz/UD4s/0o5Kf8oHRr/IxkX/yMZF/8oHRr/Sjkp/1A+LP9QPiz/UD4s/1A+LP9QPiz/UD4s/1E/Lf+Lf3T/7+3r//////////////////X08/+RhXr/UkAv/1A+LP9QPiz/UD4s/1A+LP9QPiz/UD4s/1A+LP9QPiz/UD4s/1A+LP9QPiz/UD4s/1A+LP9QPiz/UD4s/1A+LP9QPiz/UD4s/1A+LP9QPiz/UD4s/1A+LP9QPiz/UD4s/1A+LP9QPiz/UD4s/0o5Kf8oHRr/IxkX/yMZF/8oHRr/Sjkp/1A+LP9QPiz/UD4s/1A+LP9QPiz/UD4s/1A+LP9SQC//i390//Lx8P/////////////////Z1dH/YVBA/1A+LP9QPiz/UD4s/1A+LP9QPiz/UD4s/1A+LP9QPiz/UD4s/1A+LP9QPiz/UD4s/1A+LP9QPiz/UD4s/1A+LP9QPiz/UD4s/1A+LP9QPiz/UD4s/1A+LP9QPiz/UD4s/1A+LP9QPiz/UD4s/0o5Kf8oHRr/IxkX/yMZF/8oHRr/Sjkp/1A+LP9QPiz/UD4s/1A+LP9QPiz/UD4s/1A+LP9QPiz/UkEv/9zZ1v/////////////////f3Nj/Y1NC/1A+LP9QPiz/UD4s/1A+LP9QPiz/UD4s/1A+LP9QPiz/UD4s/1A+LP9QPiz/UD4s/1A+LP9QPiz/UD4s/1A+LP9QPiz/UD4s/1A+LP9QPiz/UD4s/1A+LP9QPiz/UD4s/1A+LP9QPiz/UD4s/0o5Kf8oHRr/IxkX/yMZF/8oHRr/Sjkp/1A+LP9QPiz/UD4s/1A+LP9QPiz/UD4s/1A+LP9cSzv/urOs//////////////////f39v+glo3/VEIw/1A+LP9QPiz/UD4s/1A+LP9QPiz/UD4s/1A+LP9QPiz/UD4s/1A+LP9QPiz/UD4s/1A+LP9QPiz/UD4s/1A+LP9QPiz/UD4s/1A+LP9QPiz/UD4s/1A+LP9QPiz/UD4s/1A+LP9QPiz/UD4s/0o5Kf8oHRr/IxkX/yMZF/8oHRr/Sjkp/1A+LP9QPiz/UD4s/1A+LP9QPiz/UD4s/19PPv+8ta7/+vr6////////////+/r6/6adlP9YRzb/UD4s/1A+LP9QPiz/UD4s/1A+LP9QPiz/UD4s/1A+LP9QPiz/UD4s/1A+LP9QPiz/UD4s/1A+LP9QPiz/UD4s/1A+LP9QPiz/UD4s/1A+LP9QPiz/UD4s/1A+LP9QPiz/UD4s/1A+LP9QPiz/UD4s/0o5Kf8oHRr/IxkX/yMZF/8oHRr/Sjkp/1A+LP9QPiz/UD4s/1A+LP9QPiz/WUg2/8zIwv/7+/r////////////8+/v/n5aM/1VEMv9QPiz/UD4s/1A+LP9QPiz/UD4s/1A+LP9QPiz/UD4s/1A+LP9QPiz/UD4s/1A+LP9QPiz/UD4s/1A+LP9QPiz/UD4s/1A+LP9QPiz/UD4s/1A+LP9QPiz/UD4s/1A+LP9QPiz/UD4s/1A+LP9QPiz/UD4s/0o5Kf8oHRr/IxkX/yMZF/8oHRr/Sjkp/1A+LP9QPiz/UD4s/1E/Lf9mVkb/08/L//////////////////r5+f+spJz/VkU0/1A+LP9QPiz/UD4s/1A+LP9QPiz/UD4s/1A+LP9QPiz/UD4s/1A+LP9QPiz/UD4s/1A+LP9QPiz/UD4s/1A+LP9QPiz/UD4s/1A+LP9QPiz/UD4s/1A+LP9QPiz/UD4s/1A+LP9QPiz/UD4s/1A+LP9QPiz/UD4s/0o5Kf8oHRr/IxkX/yMZF/8oHRr/Sjkp/1A+LP9QPiz/UD4s/2BPP//Mx8L//f39/////////////f39/7Goof9cSzv/UD4s/1A+LP9QPiz/UD4s/1A+LP9QPiz/UD4s/1A+LP9QPiz/UD4s/1A+LP9QPiz/UD4s/1A+LP9QPiz/UD4s/1A+LP9QPiz/UD4s/1A+LP9QPiz/UD4s/1A+LP9QPiz/UD4s/1A+LP9QPiz/UD4s/1A+LP9QPiz/UD4s/0o5Kf8oHRr/IxkX/yMZF/8oHRr/Sjkp/1A+LP9QPiz/UD4s/4F0Z//9/Pz////////////+/v7/rKSc/1dGNf9QPiz/UD4s/1A+LP9QPiz/UD4s/1A+LP9QPiz/UD4s/1A+LP9QPiz/UD4s/1A+LP9QPiz/UD4s/1A+LP9QPiz/UD4s/1A+LP9QPiz/UD4s/1A+LP9QPiz/UD4s/1A+LP9QPiz/UD4s/1A+LP9QPiz/UD4s/1A+LP9QPiz/UD4s/0o5Kf8oHRr/IxkX/yMZF/8oHRr/Sjkp/1A+LP9QPiz/UD4s/3BiU//z8vH///////v7+/+3sKj/WUg2/1A+LP9QPiz/UD4s/1A+LP9QPiz/UD4s/1A+LP9QPiz/UD4s/1A+LP9QPiz/UD4s/1A+LP9QPiz/UD4s/1A+LP9QPiz/UD4s/1A+LP9QPiz/UD4s/1A+LP9QPiz/UD4s/1A+LP9QPiz/UD4s/1A+LP9QPiz/UD4s/1A+LP9QPiz/UD4s/0o5Kf8oHRr/IxkX/yMZF/8oHRr/Sjkp/1A+LP9QPiz/UD4s/1ZFM/+UiX7/xL64/6iflv9hUED/UD4s/1A+LP9QPiz/UD4s/1A+LP9QPiz/UD4s/1A+LP9QPiz/UD4s/1A+LP9QPiz/UD4s/1A+LP9QPiz/UD4s/1A+LP9QPiz/UD4s/1A+LP9QPiz/UD4s/1A+LP9QPiz/UD4s/1A+LP9QPiz/UD4s/1A+LP9QPiz/UD4s/1A+LP9QPiz/UD4s/0o5Kf8oHRr/IxkX/yMZF/8oHRr/Sjkp/1A+LP9QPiz/UD4s/1A+LP9SQS//Wkk4/1RCMP9QPiz/UD4s/1A+LP9QPiz/UD4s/1A+LP9QPiz/UD4s/1A+LP9QPiz/UD4s/1A+LP9QPiz/UD4s/1A+LP9QPiz/UD4s/1A+LP9QPiz/UD4s/1A+LP9QPiz/UD4s/1A+LP9QPiz/UD4s/1A+LP9QPiz/UD4s/1A+LP9QPiz/UD4s/1A+LP9QPiz/UD4s/0o5Kf8oHRr/IxkX/yMZF/8oHRr/Sjkp/1A+LP9QPiz/UD4s/1A+LP9QPiz/UD4s/1A+LP9QPiz/UD4s/1A+LP9QPiz/UD4s/1A+LP9QPiz/UD4s/1A+LP9QPiz/UD4s/1A+LP9QPiz/UD4s/1A+LP9QPiz/UD4s/1A+LP9QPiz/UD4s/1A+LP9QPiz/UD4s/1A+LP9QPiz/UD4s/1A+LP9QPiz/UD4s/1A+LP9QPiz/UD4s/1A+LP9QPiz/UD4s/0o5Kf8oHRr/IxkX/yMZF/8oHRr/Sjkp/1A+LP9QPiz/UD4s/1A+LP9QPiz/UD4s/1A+LP9QPiz/UD4s/1A+LP9QPiz/UD4s/1A+LP9QPiz/UD4s/1A+LP9QPiz/UD4s/1A+LP9QPiz/UD4s/1A+LP9QPiz/UD4s/1A+LP9QPiz/UD4s/1A+LP9QPiz/UD4s/1A+LP9QPiz/UD4s/1A+LP9QPiz/UD4s/1A+LP9QPiz/UD4s/1A+LP9QPiz/UD4s/0o5Kf8oHRr/IxkX/yMZF/8oHRr/Sjkp/1A+LP9QPiz/UD4s/1A+LP9QPiz/UD4s/1A+LP9QPiz/UD4s/1A+LP9QPiz/UD4s/1A+LP9QPiz/UD4s/1A+LP9QPiz/UD4s/1A+LP9QPiz/UD4s/1A+LP9QPiz/UD4s/1A+LP9QPiz/UD4s/1A+LP9QPiz/UD4s/1A+LP9QPiz/UD4s/1A+LP9QPiz/UD4s/1A+LP9QPiz/UD4s/1A+LP9QPiz/UD4s/0o5Kf8oHRr/IxkX/yMZF/8oHRr/Sjkp/1A+LP9QPiz/UD4s/1A+LP9QPiz/UD4s/1A+LP9QPiz/UD4s/1A+LP9QPiz/UD4s/1A+LP9QPiz/UD4s/1A+LP9QPiz/UD4s/1A+LP9QPiz/UD4s/1A+LP9QPiz/UD4s/1A+LP9QPiz/UD4s/1A+LP9QPiz/UD4s/1A+LP9QPiz/UD4s/1A+LP9QPiz/UD4s/1A+LP9QPiz/UD4s/1A+LP9QPiz/UD4s/0o5Kf8oHRr/IxkX/yMZF/8oHRr/Sjkp/1A+LP9QPiz/UD4s/1A+LP9QPiz/UD4s/1A+LP9QPiz/UD4s/1A+LP9QPiz/UD4s/1A+LP9QPiz/UD4s/1A+LP9QPiz/UD4s/1A+LP9QPiz/UD4s/1A+LP9QPiz/UD4s/1A+LP9QPiz/UD4s/1A+LP9QPiz/UD4s/1A+LP9QPiz/UD4s/1A+LP9QPiz/UD4s/1A+LP9QPiz/UD4s/1A+LP9QPiz/UD4s/0o5Kf8oHRr/IxkX/yMZF/8qHhr/WUIu/2JJMf9iSTH/Ykkx/2JJMf9iSTH/Ykkx/2JJMf9iSTH/Ykkx/2JJMf9iSTH/Ykkx/2JJMf9iSTH/Ykkx/2JJMf9iSTH/Ykkx/2JJMf9iSTH/Ykkx/2JJMf9iSTH/Ykkx/2JJMf9iSTH/Ykkx/2JJMf9iSTH/Ykkx/2JJMf9iSTH/Ykkx/2JJMf9iSTH/Ykkx/2JJMf9iSTH/Ykkx/2JJMf9iSTH/Ykkx/1lCLv8qHhr/IxkX/yMZF/8tIBv/c1E0/39aOf9/Wjn/f1o5/39aOf9/Wjn/f1o5/39aOf9/Wjn/f1o5/39aOf9/Wjn/f1o5/39aOf9/Wjn/f1o5/39aOf9/Wjn/f1o5/39aOf9/Wjn/f1o5/39aOf9/Wjn/f1o5/39aOf9/Wjn/f1o5/39aOf9/Wjn/f1o5/39aOf9/Wjn/f1o5/39aOf9/Wjn/f1o5/39aOf9/Wjn/f1o5/39aOf9/Wjn/f1o5/3NRNP8tIBv/IxkX/yMZF/8tIBv/c1E0/39aOf9/Wjn/f1o5/39aOf9/Wjn/f1o5/39aOf9/Wjn/f1o5/39aOf9/Wjn/f1o5/39aOf9/Wjn/f1o5/39aOf9/Wjn/f1o5/39aOf9/Wjn/f1o5/39aOf9/Wjn/f1o5/39aOf9/Wjn/f1o5/39aOf9/Wjn/f1o5/39aOf9/Wjn/f1o5/39aOf9/Wjn/f1o5/39aOf9/Wjn/f1o5/39aOf9/Wjn/f1o5/3NRNP8tIBv/IxkX/yMZF/8tIBv/c1E0/39aOf9/Wjn/f1o5/35aPf9wVWf/a1J2/31ZQf9/Wjn/f1o5/3xcPv9fcmj/WHdz/3xdP/9/Wjn/f1o5/35dOP92eDP/dXwy/35dOP9/Wjn/f1o5/39aOf9/Wjn/f1o5/39aOf9/Wjn/f1o5/39aOf9/Wjn/f1o5/39aOf9/Wjn/f1o5/39aOf9/Wjn/f1o5/39aOf9/Wjn/f1o5/39aOf9/Wjn/f1o5/3NRNP8tIBv/IxkX/yMZF/8tIBv/c1E0/39aOf9/Wjn/f1o5/2JPlP9ERO3/RETv/1JJxv96WEj/f1o5/z6Lmf8Is+n/CLPq/yacvf93YEX/f1s5/2uZLP9exSL/XsUi/2imKf99YDj/f1o5/39aOf9/Wjn/f1o5/39aOf9/Wjn/f1o5/39aOf9/Wjn/f1o5/39aOf9/Wjn/f1o5/39aOf9/Wjn/f1o5/39aOf9/Wjn/f1o5/39aOf9/Wjn/f1o5/3NRNP8tIBv/IxkX/yMZF/8tIBv/c1E0/39aOf9/Wjn/f1o5/0hF5P9ERO//RETv/0hF4/9tU3H/fF0+/wyw5P8Is+r/CLPq/xGs3f9fc2r/fWE3/1/DIv9exSL/XsUi/2G8JP93dDP/f1o5/39aOf9/Wjn/f1o5/39aOf9/Wjn/f1o5/39aOf9/Wjn/f1o5/39aOf9/Wjn/f1o5/39aOf9/Wjn/f1o5/39aOf9/Wjn/f1o5/39aOf9/Wjn/f1o5/3NRNP8tIBv/IxkX/yMZF/8tIBv/c1E0/39aOf9/Wjn/f1o5/05I0P9ERO//RETv/0lG3/9xVWX/fls6/xeo1P8Is+r/CLPq/xSq2f9mbV7/fl05/2G7JP9exSL/XsUi/2K5Jf95bTX/f1o5/39aOf9/Wjn/f1o5/39aOf9/Wjn/f1o5/39aOf9/Wjn/f1o5/39aOf9/Wjn/f1o5/39aOf9/Wjn/f1o5/39aOf9/Wjn/f1o5/39aOf9/Wjn/f1o5/3NRNP8tIBv/IxkX/yQaF/opHRn/cE8z/39aOf9/Wjn/f1o5/3JVYf9RScj/TUfV/2RQjf9/Wjv/f1o5/2FwZv8gocb/GqbP/0yAhP9/Wjr/f1o5/3Z4M/9lsCb/Y7Qm/3KEMP9/Wjn/f1o5/39aOf9/Wjn/f1o5/39aOf9/Wjn/f1o5/39aOf9/Wjn/f1o5/39aOf9/Wjn/f1o5/39aOf9/Wjn/f1o5/39aOf9/Wjn/f1o5/39aOf9/Wjn/f1o5/3BPM/8pHRn/JBoX+iQaGM4jGRf/VT0q/39aOf9/Wjn/f1o5/39aOf98WUL/e1hF/39aOf9/Wjn/f1o5/39aOf95X0L/eGBE/39aOf9/Wjn/f1o5/39aOf99YDj/fWA4/39aOf9/Wjn/f1o5/39aOf9/Wjn/f1o5/39aOf9/Wjn/f1o5/39aOf9/Wjn/f1o5/39aOf9/Wjn/f1o5/39aOf9/Wjn/f1o5/39aOf9/Wjn/f1o5/39aOf9/Wjn/f1o5/1U9Kv8jGRf/JBoYziIZF3AjGRf/KR4Z/2lKMf9/Wjn/f1o5/39aOf9/Wjn/f1o5/39aOf9/Wjn/f1o5/39aOf9/Wjn/f1o5/39aOf9/Wjn/f1o5/39aOf9/Wjn/f1o5/39aOf9/Wjn/f1o5/39aOf9/Wjn/f1o5/39aOf9/Wjn/f1o5/39aOf9/Wjn/f1o5/39aOf9/Wjn/f1o5/39aOf9/Wjn/f1o5/39aOf9/Wjn/f1o5/39aOf9/Wjn/aUox/ykeGf8jGRf/IhkXcCkfFBkkGRfIIxkX/ikeGf9VPSr/cE8z/3NRNP9zUTT/c1E0/3NRNP9zUTT/c1E0/3NRNP9zUTT/c1E0/3NRNP9zUTT/c1E0/3NRNP9zUTT/c1E0/3NRNP9zUTT/c1E0/3NRNP9zUTT/c1E0/3NRNP9zUTT/c1E0/3NRNP9zUTT/c1E0/3NRNP9zUTT/c1E0/3NRNP9zUTT/c1E0/3NRNP9zUTT/c1E0/3BPM/9VPSr/KR4Z/yMZF/4kGRfIKR8UGQAAAAIkGBg/JBkXyCMZF/8jGRf/KR0Z/y0gG/8tIBv/LSAb/y0gG/8tIBv/LSAb/y0gG/8tIBv/LSAb/y0gG/8tIBv/LSAb/y0gG/8tIBv/LSAb/y0gG/8tIBv/LSAb/y0gG/8tIBv/LSAb/y0gG/8tIBv/LSAb/y0gG/8tIBv/LSAb/y0gG/8tIBv/LSAb/y0gG/8tIBv/LSAb/y0gG/8tIBv/LSAb/ykdGf8jGRf/IxkX/yQZF8gkGBg/AAAAAgAAAAAAAAACKR8UGSIZF3AkGhjOJBoX+iMZF/8jGRf/IxkX/yMZF/8jGRf/IxkX/yMZF/8jGRf/IxkX/yMZF/8jGRf/IxkX/yMZF/8jGRf/IxkX/yMZF/8jGRf/IxkX/yMZF/8jGRf/IxkX/yMZF/8jGRf/IxkX/yMZF/8jGRf/IxkX/yMZF/8jGRf/IxkX/yMZF/8jGRf/IxkX/yMZF/8jGRf/IxkX/yQaF/okGhjOIhkXcCkfFBkAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==", "base64"), "index.html": Buffer.from("PCFkb2N0eXBlIGh0bWw+CjxodG1sIGxhbmc9ImVuIj4KICA8aGVhZD4KICAgIDxtZXRhIGNoYXJzZXQ9IlVURi04IiAvPgogICAgPG1ldGEgbmFtZT0idmlld3BvcnQiIGNvbnRlbnQ9IndpZHRoPWRldmljZS13aWR0aCwgaW5pdGlhbC1zY2FsZT0xLjAiIC8+CiAgICA8dGl0bGU+RGV2IFNlcnZpY2VzIERhc2hib2FyZDwvdGl0bGU+CiAgICA8bGluayByZWw9Imljb24iIGhyZWY9Ii9mYXZpY29uLmljbyIgdHlwZT0iaW1hZ2UveC1pY29uIiAvPgogICAgPHNjcmlwdD4KICAgICAgLy8gUHJldmVudCB0aGVtZSBmbGlja2VyIGJ5IHNldHRpbmcgdGhlbWUgY2xhc3MgYmVmb3JlIFJlYWN0IGxvYWRzCiAgICAgIChmdW5jdGlvbiAoKSB7CiAgICAgICAgZnVuY3Rpb24gZ2V0U3lzdGVtVGhlbWUoKSB7CiAgICAgICAgICByZXR1cm4gd2luZG93Lm1hdGNoTWVkaWEoIihwcmVmZXJzLWNvbG9yLXNjaGVtZTogZGFyaykiKS5tYXRjaGVzCiAgICAgICAgICAgID8gImRhcmsiCiAgICAgICAgICAgIDogImxpZ2h0IjsKICAgICAgICB9CgogICAgICAgIGNvbnN0IHRoZW1lTW9kZSA9CiAgICAgICAgICBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgiZGV2LXNlcnZpY2VzLWRhc2hib2FyZC10aGVtZS1tb2RlIikgfHwgImF1dG8iOwogICAgICAgIGNvbnN0IHRoZW1lID0gdGhlbWVNb2RlID09PSAiYXV0byIgPyBnZXRTeXN0ZW1UaGVtZSgpIDogdGhlbWVNb2RlOwoKICAgICAgICBpZiAodGhlbWUgPT09ICJkYXJrIikgewogICAgICAgICAgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmNsYXNzTGlzdC5hZGQoImRhcmsiKTsKICAgICAgICAgIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zdHlsZS5iYWNrZ3JvdW5kQ29sb3IgPSAiIzExMTgyNyI7IC8vIE1hdGNoIGRhcms6YmctZ3JheS05MDAKICAgICAgICB9IGVsc2UgewogICAgICAgICAgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoImRhcmsiKTsKICAgICAgICAgIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zdHlsZS5iYWNrZ3JvdW5kQ29sb3IgPSAiI2YzZjRmNiI7IC8vIE1hdGNoIGJnLWdyYXktMTAwCiAgICAgICAgfQogICAgICB9KSgpOwogICAgPC9zY3JpcHQ+CiAgICA8c2NyaXB0IHR5cGU9Im1vZHVsZSIgY3Jvc3NvcmlnaW4gc3JjPSIvYXNzZXRzL21haW4tQjdMcGdhLUEuanMiPjwvc2NyaXB0PgogICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBjcm9zc29yaWdpbiBocmVmPSIvYXNzZXRzL21haW4tQ1pIdzYtUGkuY3NzIj4KICA8L2hlYWQ+CiAgPGJvZHk+CiAgICA8ZGl2IGlkPSJyb290Ij48L2Rpdj4KICA8L2JvZHk+CjwvaHRtbD4K", "base64"), ".DS_Store": Buffer.from("AAAAAUJ1ZDEAABAAAAAIAAAAEAAAAACGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAEAAAABAAAQAABjAG8AbgAuAGkAYwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAALAGYAYQB2AGkAYwBvAG4ALgBpAGMAb0lsb2NibG9iAAAAEAAAAEEAAAAu////////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAgLAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAACAAAAABAAAAQAAAAAEAAACAAAAAAQAAAQAAAAABAAACAAAAAAEAAAQAAAAAAAAAAAEAABAAAAAAAQAAIAAAAAABAABAAAAAAAEAAIAAAAAAAQABAAAAAAABAAIAAAAAAAEABAAAAAAAAQAIAAAAAAABABAAAAAAAAEAIAAAAAAAAQBAAAAAAAABAIAAAAAAAAEBAAAAAAAAAQIAAAAAAAABBAAAAAAAAAEIAAAAAAAAARAAAAAAAAABIAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAAAAAAEAsAAABFAAAAhgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBERTREIAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAIAAAAGAAAAABAAAAwAAAAAAAAAABAAABAAAAAAEAAAIAAAAAAQAABAAAAAACAAAIAAAAGAAAAAAAAAAAAQAAIAAAAAABAABAAAAAAAEAAIAAAAAAAQABAAAAAAABAAIAAAAAAAEABAAAAAAAAQAIAAAAAAABABAAAAAAAAEAIAAAAAAAAQBAAAAAAAABAIAAAAAAAAEBAAAAAAAAAQIAAAAAAAABBAAAAAAAAAEIAAAAAAAAARAAAAAAAAABIAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==", "base64"), "assets/main-CZHw6-Pi.css": Buffer.from("Kiw6YmVmb3JlLDphZnRlcnstLXR3LWJvcmRlci1zcGFjaW5nLXg6IDA7LS10dy1ib3JkZXItc3BhY2luZy15OiAwOy0tdHctdHJhbnNsYXRlLXg6IDA7LS10dy10cmFuc2xhdGUteTogMDstLXR3LXJvdGF0ZTogMDstLXR3LXNrZXcteDogMDstLXR3LXNrZXcteTogMDstLXR3LXNjYWxlLXg6IDE7LS10dy1zY2FsZS15OiAxOy0tdHctcGFuLXg6IDstLXR3LXBhbi15OiA7LS10dy1waW5jaC16b29tOiA7LS10dy1zY3JvbGwtc25hcC1zdHJpY3RuZXNzOiBwcm94aW1pdHk7LS10dy1ncmFkaWVudC1mcm9tLXBvc2l0aW9uOiA7LS10dy1ncmFkaWVudC12aWEtcG9zaXRpb246IDstLXR3LWdyYWRpZW50LXRvLXBvc2l0aW9uOiA7LS10dy1vcmRpbmFsOiA7LS10dy1zbGFzaGVkLXplcm86IDstLXR3LW51bWVyaWMtZmlndXJlOiA7LS10dy1udW1lcmljLXNwYWNpbmc6IDstLXR3LW51bWVyaWMtZnJhY3Rpb246IDstLXR3LXJpbmctaW5zZXQ6IDstLXR3LXJpbmctb2Zmc2V0LXdpZHRoOiAwcHg7LS10dy1yaW5nLW9mZnNldC1jb2xvcjogI2ZmZjstLXR3LXJpbmctY29sb3I6IHJnYig1OSAxMzAgMjQ2IC8gLjUpOy0tdHctcmluZy1vZmZzZXQtc2hhZG93OiAwIDAgIzAwMDA7LS10dy1yaW5nLXNoYWRvdzogMCAwICMwMDAwOy0tdHctc2hhZG93OiAwIDAgIzAwMDA7LS10dy1zaGFkb3ctY29sb3JlZDogMCAwICMwMDAwOy0tdHctYmx1cjogOy0tdHctYnJpZ2h0bmVzczogOy0tdHctY29udHJhc3Q6IDstLXR3LWdyYXlzY2FsZTogOy0tdHctaHVlLXJvdGF0ZTogOy0tdHctaW52ZXJ0OiA7LS10dy1zYXR1cmF0ZTogOy0tdHctc2VwaWE6IDstLXR3LWRyb3Atc2hhZG93OiA7LS10dy1iYWNrZHJvcC1ibHVyOiA7LS10dy1iYWNrZHJvcC1icmlnaHRuZXNzOiA7LS10dy1iYWNrZHJvcC1jb250cmFzdDogOy0tdHctYmFja2Ryb3AtZ3JheXNjYWxlOiA7LS10dy1iYWNrZHJvcC1odWUtcm90YXRlOiA7LS10dy1iYWNrZHJvcC1pbnZlcnQ6IDstLXR3LWJhY2tkcm9wLW9wYWNpdHk6IDstLXR3LWJhY2tkcm9wLXNhdHVyYXRlOiA7LS10dy1iYWNrZHJvcC1zZXBpYTogOy0tdHctY29udGFpbi1zaXplOiA7LS10dy1jb250YWluLWxheW91dDogOy0tdHctY29udGFpbi1wYWludDogOy0tdHctY29udGFpbi1zdHlsZTogfTo6YmFja2Ryb3B7LS10dy1ib3JkZXItc3BhY2luZy14OiAwOy0tdHctYm9yZGVyLXNwYWNpbmcteTogMDstLXR3LXRyYW5zbGF0ZS14OiAwOy0tdHctdHJhbnNsYXRlLXk6IDA7LS10dy1yb3RhdGU6IDA7LS10dy1za2V3LXg6IDA7LS10dy1za2V3LXk6IDA7LS10dy1zY2FsZS14OiAxOy0tdHctc2NhbGUteTogMTstLXR3LXBhbi14OiA7LS10dy1wYW4teTogOy0tdHctcGluY2gtem9vbTogOy0tdHctc2Nyb2xsLXNuYXAtc3RyaWN0bmVzczogcHJveGltaXR5Oy0tdHctZ3JhZGllbnQtZnJvbS1wb3NpdGlvbjogOy0tdHctZ3JhZGllbnQtdmlhLXBvc2l0aW9uOiA7LS10dy1ncmFkaWVudC10by1wb3NpdGlvbjogOy0tdHctb3JkaW5hbDogOy0tdHctc2xhc2hlZC16ZXJvOiA7LS10dy1udW1lcmljLWZpZ3VyZTogOy0tdHctbnVtZXJpYy1zcGFjaW5nOiA7LS10dy1udW1lcmljLWZyYWN0aW9uOiA7LS10dy1yaW5nLWluc2V0OiA7LS10dy1yaW5nLW9mZnNldC13aWR0aDogMHB4Oy0tdHctcmluZy1vZmZzZXQtY29sb3I6ICNmZmY7LS10dy1yaW5nLWNvbG9yOiByZ2IoNTkgMTMwIDI0NiAvIC41KTstLXR3LXJpbmctb2Zmc2V0LXNoYWRvdzogMCAwICMwMDAwOy0tdHctcmluZy1zaGFkb3c6IDAgMCAjMDAwMDstLXR3LXNoYWRvdzogMCAwICMwMDAwOy0tdHctc2hhZG93LWNvbG9yZWQ6IDAgMCAjMDAwMDstLXR3LWJsdXI6IDstLXR3LWJyaWdodG5lc3M6IDstLXR3LWNvbnRyYXN0OiA7LS10dy1ncmF5c2NhbGU6IDstLXR3LWh1ZS1yb3RhdGU6IDstLXR3LWludmVydDogOy0tdHctc2F0dXJhdGU6IDstLXR3LXNlcGlhOiA7LS10dy1kcm9wLXNoYWRvdzogOy0tdHctYmFja2Ryb3AtYmx1cjogOy0tdHctYmFja2Ryb3AtYnJpZ2h0bmVzczogOy0tdHctYmFja2Ryb3AtY29udHJhc3Q6IDstLXR3LWJhY2tkcm9wLWdyYXlzY2FsZTogOy0tdHctYmFja2Ryb3AtaHVlLXJvdGF0ZTogOy0tdHctYmFja2Ryb3AtaW52ZXJ0OiA7LS10dy1iYWNrZHJvcC1vcGFjaXR5OiA7LS10dy1iYWNrZHJvcC1zYXR1cmF0ZTogOy0tdHctYmFja2Ryb3Atc2VwaWE6IDstLXR3LWNvbnRhaW4tc2l6ZTogOy0tdHctY29udGFpbi1sYXlvdXQ6IDstLXR3LWNvbnRhaW4tcGFpbnQ6IDstLXR3LWNvbnRhaW4tc3R5bGU6IH0qLDpiZWZvcmUsOmFmdGVye2JveC1zaXppbmc6Ym9yZGVyLWJveDtib3JkZXItd2lkdGg6MDtib3JkZXItc3R5bGU6c29saWQ7Ym9yZGVyLWNvbG9yOiNlMmU4ZjB9OmJlZm9yZSw6YWZ0ZXJ7LS10dy1jb250ZW50OiAiIn1odG1sLDpob3N0e2xpbmUtaGVpZ2h0OjEuNTstd2Via2l0LXRleHQtc2l6ZS1hZGp1c3Q6MTAwJTstbW96LXRhYi1zaXplOjQ7LW8tdGFiLXNpemU6NDt0YWItc2l6ZTo0O2ZvbnQtZmFtaWx5Oi1hcHBsZS1zeXN0ZW0sQmxpbmtNYWNTeXN0ZW1Gb250LFNlZ29lIFVJLFJvYm90byxIZWx2ZXRpY2EsQXJpYWwsc2Fucy1zZXJpZjtmb250LWZlYXR1cmUtc2V0dGluZ3M6bm9ybWFsO2ZvbnQtdmFyaWF0aW9uLXNldHRpbmdzOm5vcm1hbDstd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3I6dHJhbnNwYXJlbnR9Ym9keXttYXJnaW46MDtsaW5lLWhlaWdodDppbmhlcml0fWhye2hlaWdodDowO2NvbG9yOmluaGVyaXQ7Ym9yZGVyLXRvcC13aWR0aDoxcHh9YWJicjp3aGVyZShbdGl0bGVdKXstd2Via2l0LXRleHQtZGVjb3JhdGlvbjp1bmRlcmxpbmUgZG90dGVkO3RleHQtZGVjb3JhdGlvbjp1bmRlcmxpbmUgZG90dGVkfWgxLGgyLGgzLGg0LGg1LGg2e2ZvbnQtc2l6ZTppbmhlcml0O2ZvbnQtd2VpZ2h0OmluaGVyaXR9YXtjb2xvcjppbmhlcml0O3RleHQtZGVjb3JhdGlvbjppbmhlcml0fWIsc3Ryb25ne2ZvbnQtd2VpZ2h0OmJvbGRlcn1jb2RlLGtiZCxzYW1wLHByZXtmb250LWZhbWlseTpNZW5sbyxDb25zb2xhcyxtb25vc3BhY2U7Zm9udC1mZWF0dXJlLXNldHRpbmdzOm5vcm1hbDtmb250LXZhcmlhdGlvbi1zZXR0aW5nczpub3JtYWw7Zm9udC1zaXplOjFlbX1zbWFsbHtmb250LXNpemU6ODAlfXN1YixzdXB7Zm9udC1zaXplOjc1JTtsaW5lLWhlaWdodDowO3Bvc2l0aW9uOnJlbGF0aXZlO3ZlcnRpY2FsLWFsaWduOmJhc2VsaW5lfXN1Yntib3R0b206LS4yNWVtfXN1cHt0b3A6LS41ZW19dGFibGV7dGV4dC1pbmRlbnQ6MDtib3JkZXItY29sb3I6aW5oZXJpdDtib3JkZXItY29sbGFwc2U6Y29sbGFwc2V9YnV0dG9uLGlucHV0LG9wdGdyb3VwLHNlbGVjdCx0ZXh0YXJlYXtmb250LWZhbWlseTppbmhlcml0O2ZvbnQtZmVhdHVyZS1zZXR0aW5nczppbmhlcml0O2ZvbnQtdmFyaWF0aW9uLXNldHRpbmdzOmluaGVyaXQ7Zm9udC1zaXplOjEwMCU7Zm9udC13ZWlnaHQ6aW5oZXJpdDtsaW5lLWhlaWdodDppbmhlcml0O2xldHRlci1zcGFjaW5nOmluaGVyaXQ7Y29sb3I6aW5oZXJpdDttYXJnaW46MDtwYWRkaW5nOjB9YnV0dG9uLHNlbGVjdHt0ZXh0LXRyYW5zZm9ybTpub25lfWJ1dHRvbixpbnB1dDp3aGVyZShbdHlwZT1idXR0b25dKSxpbnB1dDp3aGVyZShbdHlwZT1yZXNldF0pLGlucHV0OndoZXJlKFt0eXBlPXN1Ym1pdF0pey13ZWJraXQtYXBwZWFyYW5jZTpidXR0b247YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudDtiYWNrZ3JvdW5kLWltYWdlOm5vbmV9Oi1tb3otZm9jdXNyaW5ne291dGxpbmU6YXV0b306LW1vei11aS1pbnZhbGlke2JveC1zaGFkb3c6bm9uZX1wcm9ncmVzc3t2ZXJ0aWNhbC1hbGlnbjpiYXNlbGluZX06Oi13ZWJraXQtaW5uZXItc3Bpbi1idXR0b24sOjotd2Via2l0LW91dGVyLXNwaW4tYnV0dG9ue2hlaWdodDphdXRvfVt0eXBlPXNlYXJjaF17LXdlYmtpdC1hcHBlYXJhbmNlOnRleHRmaWVsZDtvdXRsaW5lLW9mZnNldDotMnB4fTo6LXdlYmtpdC1zZWFyY2gtZGVjb3JhdGlvbnstd2Via2l0LWFwcGVhcmFuY2U6bm9uZX06Oi13ZWJraXQtZmlsZS11cGxvYWQtYnV0dG9uey13ZWJraXQtYXBwZWFyYW5jZTpidXR0b247Zm9udDppbmhlcml0fXN1bW1hcnl7ZGlzcGxheTpsaXN0LWl0ZW19YmxvY2txdW90ZSxkbCxkZCxoMSxoMixoMyxoNCxoNSxoNixocixmaWd1cmUscCxwcmV7bWFyZ2luOjB9ZmllbGRzZXR7bWFyZ2luOjA7cGFkZGluZzowfWxlZ2VuZHtwYWRkaW5nOjB9b2wsdWwsbWVudXtsaXN0LXN0eWxlOm5vbmU7bWFyZ2luOjA7cGFkZGluZzowfWRpYWxvZ3twYWRkaW5nOjB9dGV4dGFyZWF7cmVzaXplOnZlcnRpY2FsfWlucHV0OjotbW96LXBsYWNlaG9sZGVyLHRleHRhcmVhOjotbW96LXBsYWNlaG9sZGVye29wYWNpdHk6MTtjb2xvcjojYTBhZWMwfWlucHV0OjpwbGFjZWhvbGRlcix0ZXh0YXJlYTo6cGxhY2Vob2xkZXJ7b3BhY2l0eToxO2NvbG9yOiNhMGFlYzB9YnV0dG9uLFtyb2xlPWJ1dHRvbl17Y3Vyc29yOnBvaW50ZXJ9OmRpc2FibGVke2N1cnNvcjpkZWZhdWx0fWltZyxzdmcsdmlkZW8sY2FudmFzLGF1ZGlvLGlmcmFtZSxlbWJlZCxvYmplY3R7ZGlzcGxheTpibG9jazt2ZXJ0aWNhbC1hbGlnbjptaWRkbGV9aW1nLHZpZGVve21heC13aWR0aDoxMDAlO2hlaWdodDphdXRvfVtoaWRkZW5dOndoZXJlKDpub3QoW2hpZGRlbj11bnRpbC1mb3VuZF0pKXtkaXNwbGF5Om5vbmV9LmNvbnRhaW5lcnt3aWR0aDoxMDAlfUBtZWRpYSAobWluLXdpZHRoOiA2NDBweCl7LmNvbnRhaW5lcnttYXgtd2lkdGg6NjQwcHh9fUBtZWRpYSAobWluLXdpZHRoOiA3NjhweCl7LmNvbnRhaW5lcnttYXgtd2lkdGg6NzY4cHh9fUBtZWRpYSAobWluLXdpZHRoOiAxMDI0cHgpey5jb250YWluZXJ7bWF4LXdpZHRoOjEwMjRweH19QG1lZGlhIChtaW4td2lkdGg6IDEyODBweCl7LmNvbnRhaW5lcnttYXgtd2lkdGg6MTI4MHB4fX1AbWVkaWEgKG1pbi13aWR0aDogMTUzNnB4KXsuY29udGFpbmVye21heC13aWR0aDoxNTM2cHh9fS52aXNpYmxle3Zpc2liaWxpdHk6dmlzaWJsZX0uYmxvY2t7ZGlzcGxheTpibG9ja30uZmxleHtkaXNwbGF5OmZsZXh9LmhpZGRlbntkaXNwbGF5Om5vbmV9LnJlc2l6ZXtyZXNpemU6Ym90aH0uYmctZ3JheS0xMDB7LS10dy1iZy1vcGFjaXR5OiAxO2JhY2tncm91bmQtY29sb3I6cmdiKDIzNyAyNDIgMjQ3IC8gdmFyKC0tdHctYmctb3BhY2l0eSwgMSkpfS5maWx0ZXJ7ZmlsdGVyOnZhcigtLXR3LWJsdXIpIHZhcigtLXR3LWJyaWdodG5lc3MpIHZhcigtLXR3LWNvbnRyYXN0KSB2YXIoLS10dy1ncmF5c2NhbGUpIHZhcigtLXR3LWh1ZS1yb3RhdGUpIHZhcigtLXR3LWludmVydCkgdmFyKC0tdHctc2F0dXJhdGUpIHZhcigtLXR3LXNlcGlhKSB2YXIoLS10dy1kcm9wLXNoYWRvdyl9KiwqOmJlZm9yZSwqOmFmdGVye2JveC1zaXppbmc6Ym9yZGVyLWJveH1ib2R5e21hcmdpbjowO2Rpc3BsYXk6ZmxleDttaW4taGVpZ2h0OjEwMHZoO3dpZHRoOjEwMCU7ZmxleC1kaXJlY3Rpb246Y29sdW1uO292ZXJmbG93LXg6aGlkZGVuOy0tdHctYmctb3BhY2l0eTogMTtiYWNrZ3JvdW5kLWNvbG9yOnJnYigyMzcgMjQyIDI0NyAvIHZhcigtLXR3LWJnLW9wYWNpdHksIDEpKTtwYWRkaW5nOjA7Zm9udC1mYW1pbHk6LWFwcGxlLXN5c3RlbSxCbGlua01hY1N5c3RlbUZvbnQsU2Vnb2UgVUksUm9ib3RvLEhlbHZldGljYSxBcmlhbCxzYW5zLXNlcmlmO2xpbmUtaGVpZ2h0OjEuNjI1Oy0tdHctdGV4