From 88768619625310ce761a464dd038dd886197a8c9 Mon Sep 17 00:00:00 2001 From: Philip Zingmark Date: Fri, 24 Oct 2025 12:46:09 +0200 Subject: [PATCH 01/10] start on ui for gpu dra support --- .dockerignore | 3 +- .gitignore | 3 +- src/pages/edit/Specs.tsx | 67 ++++++++++++++++++++++++++++++---------- 3 files changed, 54 insertions(+), 19 deletions(-) diff --git a/.dockerignore b/.dockerignore index 814e90a9..3f83d039 100644 --- a/.dockerignore +++ b/.dockerignore @@ -12,4 +12,5 @@ helm-charts .editorconfig .idea coverage* -# adopted from https://bun.sh/guides/ecosystem/docker \ No newline at end of file +# adopted from https://bun.sh/guides/ecosystem/docker +.env.development diff --git a/.gitignore b/.gitignore index 86c7bf2e..32a8605f 100644 --- a/.gitignore +++ b/.gitignore @@ -25,9 +25,10 @@ yarn-error.log* # .env.dev +.env.development # ide .vscode # npm package-lock.json (we use Bun) -package-lock.json \ No newline at end of file +package-lock.json diff --git a/src/pages/edit/Specs.tsx b/src/pages/edit/Specs.tsx index d05bc280..da4d1636 100644 --- a/src/pages/edit/Specs.tsx +++ b/src/pages/edit/Specs.tsx @@ -337,23 +337,56 @@ export const Specs = ({ resource }: { resource: Resource }) => { } /> {resource.type === "deployment" && ( - } - label={ - - {t("replicas")} - - {replicas} - - - } - /> + <> + } + label={ + + {t("replicas")} + + {replicas} + + + } + /> + {/* @ts-ignore 'gpus' not yet defined in resource.specs type */} + {Array.isArray(resource.specs?.gpus) && + (resource.specs as any).gpus!.map( + (gpu: any, index: number) => ( + } + label={ + + GPU: + {gpu.name} + {gpu.claimName || + (gpu.templateName && ( + + ({gpu.claimName || gpu.templateName}) + + ))} + + } + /> + ) + )} + )} {resource.type === "vm" && resource.specs && From 796ae003b12dd0460667fc6d4d7ee4969bfe97a6 Mon Sep 17 00:00:00 2001 From: Philip Zingmark Date: Fri, 24 Oct 2025 15:36:40 +0200 Subject: [PATCH 02/10] update edit specs for dra gpus --- src/pages/edit/Specs.tsx | 307 ++++++++++++++++++++++++++++++++++----- src/types.ts | 12 ++ 2 files changed, 285 insertions(+), 34 deletions(-) diff --git a/src/pages/edit/Specs.tsx b/src/pages/edit/Specs.tsx index da4d1636..5639f6f9 100644 --- a/src/pages/edit/Specs.tsx +++ b/src/pages/edit/Specs.tsx @@ -5,6 +5,7 @@ import { CardContent, CardHeader, Chip, + IconButton, Slider, Stack, TextField, @@ -14,7 +15,7 @@ import { } from "@mui/material"; import Grid from "@mui/material/Unstable_Grid2"; import { useTranslation } from "react-i18next"; -import { Deployment, Resource, Vm } from "../../types"; +import { Deployment, DeploymentGPU, Resource, Vm } from "../../types"; import { CustomTheme } from "../../theme/types"; import useResource from "../../hooks/useResource"; import { useEffect, useState } from "react"; @@ -25,6 +26,7 @@ import { enqueueSnackbar } from "notistack"; import { errorHandler } from "../../utils/errorHandler"; import { updateVM } from "../../api/deploy/vms"; import { LoadingButton } from "@mui/lab"; +import { AddCircleOutline, Delete } from "@mui/icons-material"; export const Specs = ({ resource }: { resource: Resource }) => { const { t } = useTranslation(); @@ -65,9 +67,15 @@ export const Specs = ({ resource }: { resource: Resource }) => { return resource.specs.ram || 0; }; + const getInitialGPUs = () => + resource.type === "deployment" ? resource.specs.gpus : undefined; + const [cpu, setCpu] = useState(getInitialCpu()); const [ram, setRam] = useState(getInitialRam()); const [replicas, setReplicas] = useState(0); + const [gpus, setGpus] = useState( + getInitialGPUs() + ); const [loading, setLoading] = useState(false); const [editing, setEditing] = useState(false); @@ -105,6 +113,13 @@ export const Specs = ({ resource }: { resource: Resource }) => { return { totalCoresLeft, totalRamLeft }; }; + const validateGPU = (gpu: DeploymentGPU): boolean => + !!gpu.name && + Boolean( + (gpu.templateName && !gpu.claimName) || + (!gpu.templateName && gpu.claimName) + ); + useEffect(() => { if (user) { const currentUsage = { @@ -161,6 +176,7 @@ export const Specs = ({ resource }: { resource: Resource }) => { setCpu(d.specs.cpuCores); setRam(d.specs.ram); setReplicas(d.specs.replicas); + setGpus(d.specs.gpus); return; } if (resource.type === "vm" && resource.specs) { @@ -212,7 +228,8 @@ export const Specs = ({ resource }: { resource: Resource }) => { return ( d.specs.cpuCores === cpu && d.specs.ram === ram && - d.specs.replicas === replicas + d.specs.replicas === replicas && + gpusEqual(d.specs.gpus, gpus) ); } if (resource.type === "vm" && resource.specs) { @@ -230,6 +247,7 @@ export const Specs = ({ resource }: { resource: Resource }) => { setCpu(d.specs.cpuCores); setRam(d.specs.ram); setReplicas(d.specs.replicas); + setGpus(d.specs.gpus); setLoading(false); return; } @@ -248,9 +266,15 @@ export const Specs = ({ resource }: { resource: Resource }) => { if (resource.type === "deployment") { const d = resource as Deployment; try { + const sanitizedGpus = gpus?.map((gpu) => { + return Object.fromEntries( + Object.entries(gpu).filter(([_, v]) => v !== undefined && v !== "") + ); + }); + const res = await updateDeployment( d.id, - { replicas: replicas, cpuCores: cpu, ram: ram }, + { replicas: replicas, cpuCores: cpu, ram: ram, gpus: sanitizedGpus }, keycloak.token ); @@ -355,37 +379,34 @@ export const Specs = ({ resource }: { resource: Resource }) => { } /> - {/* @ts-ignore 'gpus' not yet defined in resource.specs type */} - {Array.isArray(resource.specs?.gpus) && - (resource.specs as any).gpus!.map( - (gpu: any, index: number) => ( - } - label={ - - GPU: - {gpu.name} - {gpu.claimName || - (gpu.templateName && ( - - ({gpu.claimName || gpu.templateName}) - - ))} - - } - /> - ) - )} + {Array.isArray(gpus) && + gpus!.map((gpu: DeploymentGPU, index: number) => ( + } + label={ + + GPU: + {gpu.name} + {gpu.claimName || + (gpu.templateName && ( + + ({gpu.claimName || gpu.templateName}) + + ))} + + } + /> + ))} )} {resource.type === "vm" && @@ -604,6 +625,207 @@ export const Specs = ({ resource }: { resource: Resource }) => { )} + + {/* GPUs */} + {resource.type === "deployment" && ( + <> + + + + + {t("deployment-gpu")} + + + + {t("deployment-gpu-subheader")} + +
+
+ + {t("deployment-gpu-quota")} + +
+
+ + {t("deployment-gpu-unstable")} + + + } + > + + + +
+
+
+ + + + + {t("deployment-gpu-configuration")} + + + + + + {(!gpus || gpus.length === 0) && ( + + theme.palette.action.hover, + textAlign: "center", + }} + > + + {t("deployment-gpu-none")} + + + + )} + + {gpus?.map((gpu, index) => { + const isValid = validateGPU(gpu); + + const handleChange = ( + index: number, + field: keyof DeploymentGPU, + value: string + ) => { + const unset = field === "name" ? "" : undefined; + const trimmed = value.trim(); + setGpus((prev) => { + const updated = [...(prev || [])]; + updated[index] = { + ...updated[index], + [field]: trimmed === "" ? unset : trimmed, + }; + return updated; + }); + }; + + return ( + + + + handleChange(index, "name", e.target.value) + } + required + size="small" + sx={{ flex: 1 }} + /> + + handleChange( + index, + "templateName", + e.target.value + ) + } + size="small" + sx={{ flex: 1 }} + /> + + handleChange(index, "claimName", e.target.value) + } + size="small" + sx={{ flex: 1 }} + /> + + + setGpus((prev) => + prev?.filter((_, i) => i !== index) + ) + } + > + + + + + + ); + })} + +
+ theme.palette.action.hover, + borderRadius: "1rem", + }} + > + + {gpus?.some((g) => !validateGPU(g)) && ( + + {t("deployment-gpu-invalid-config-warning")} + + )} + + + + )} )} @@ -635,3 +857,20 @@ export const Specs = ({ resource }: { resource: Resource }) => { ); }; + +const gpusEqual = (a?: DeploymentGPU[], b?: DeploymentGPU[]): boolean => { + if (!a && !b) return true; + if (!a || !b) return false; + if (a.length !== b.length) return false; + + return a.every((gpuA, index) => { + const gpuB = b[index]; + if (!gpuB) return false; + + const keys = new Set([...Object.keys(gpuA), ...Object.keys(gpuB)]); + for (const key of keys) { + if ((gpuA as any)[key] !== (gpuB as any)[key]) return false; + } + return true; + }); +}; diff --git a/src/types.ts b/src/types.ts index 3d952614..46327198 100644 --- a/src/types.ts +++ b/src/types.ts @@ -2,6 +2,7 @@ import { UserRead, DeploymentRead, JobRead, + DeploymentSpecs, } from "@kthcloud/go-deploy-types/types/v2/body/index"; import { VmRead as V2VmRead, @@ -17,9 +18,20 @@ export interface Vm extends V2VmRead { type: "vm"; } +export interface DeploymentGPU { + name: string; + templateName?: string; + claimName?: string; +} + +export interface DeploymentSpecsGPU extends DeploymentSpecs { + gpus?: DeploymentGPU[]; +} + export interface Deployment extends DeploymentRead { type: "deployment"; deploymentType?: string; + specs: DeploymentSpecsGPU; } export type Resource = Vm | Deployment; From 8f97c9b6eac5828bf8b3bef690987ee00ebbcb56 Mon Sep 17 00:00:00 2001 From: Philip Zingmark Date: Tue, 13 Jan 2026 12:32:58 +0100 Subject: [PATCH 03/10] Sync updates --- src/api/deploy/gpuClaims.ts | 73 +++++++++++ src/components/admin/TimeAgo.tsx | 10 +- src/contexts/AdminResourceContext.tsx | 38 +++++- src/pages/admin/AdminV2.tsx | 182 ++++++++++++++++++++++++++ src/temporaryTypesRemoveMe.ts | 104 +++++++++++++++ 5 files changed, 401 insertions(+), 6 deletions(-) create mode 100644 src/api/deploy/gpuClaims.ts create mode 100644 src/temporaryTypesRemoveMe.ts diff --git a/src/api/deploy/gpuClaims.ts b/src/api/deploy/gpuClaims.ts new file mode 100644 index 00000000..f18be09d --- /dev/null +++ b/src/api/deploy/gpuClaims.ts @@ -0,0 +1,73 @@ +import { GpuClaimCreate } from "../../temporaryTypesRemoveMe"; +import { Jwt } from "../../types"; + +export const listGpuClaims = async (token: Jwt, detailed?: boolean) => { + const detailedQuery = detailed + ? `?detailed=${encodeURIComponent(detailed)}` + : ""; + const url = `${import.meta.env.VITE_DEPLOY_API_URL}/gpuClaims${detailedQuery}`; + const response = await fetch(url, { + method: "GET", + headers: { + Authorization: `Bearer ${token}`, + }, + }); + + const result = await response.json(); + + if (!Array.isArray(result)) { + throw new Error("Error listing GPU claims, response was not an array"); + } + + result.sort((a: any, b: any) => { + return a.id < b.id ? -1 : 1; + }); + + return result; +}; + +export const getGpuClaim = async (token: Jwt, gpuClaimId: string) => { + const url = `${import.meta.env.VITE_DEPLOY_API_URL}/gpuClaims/${gpuClaimId}`; + const response = await fetch(url, { + method: "GET", + headers: { + Authorization: `Bearer ${token}`, + }, + }); + const result = await response.json(); + if (typeof result !== "object") { + throw new Error("Error getting GPU claim, response was not an object"); + } + return result; +}; + +export const deleteGpuClaim = async (token: Jwt, gpuClaimId: string) => { + const url = `${import.meta.env.VITE_DEPLOY_API_URL}/gpuClaims/${gpuClaimId}`; + const response = await fetch(url, { + method: "DELETE", + headers: { + Authorization: `Bearer ${token}`, + }, + }); + const result = await response.json(); + if (typeof result !== "object") { + throw new Error("Error deleting GPU claim, response was not an object"); + } + return result; +}; + +export const createGpuClaim = async (token: Jwt, gpuClaim: GpuClaimCreate) => { + const url = `${import.meta.env.VITE_DEPLOY_API_URL}/gpuClaims/`; + const response = await fetch(url, { + method: "POST", + headers: { + Authorization: `Bearer ${token}`, + }, + body: JSON.stringify(gpuClaim), + }); + const result = await response.json(); + if (typeof result !== "object") { + throw new Error("Error deleting GPU claim, response was not an object"); + } + return result; +}; diff --git a/src/components/admin/TimeAgo.tsx b/src/components/admin/TimeAgo.tsx index 789e47aa..272df47e 100644 --- a/src/components/admin/TimeAgo.tsx +++ b/src/components/admin/TimeAgo.tsx @@ -1,10 +1,12 @@ import React, { useState, useEffect } from "react"; import { Typography } from "@mui/material"; -const TimeAgo: React.FC<{ createdAt: string | undefined }> = ({ - createdAt, -}) => { +const TimeAgo: React.FC<{ + createdAt: string | undefined; + variant?: string | undefined; +}> = ({ createdAt, variant }) => { const [timeAgo, setTimeAgo] = useState(""); + variant = variant != undefined ? variant : "body2"; const calculateTimeAgo = (createdAt: string) => { const now = new Date().getTime(); @@ -44,7 +46,7 @@ const TimeAgo: React.FC<{ createdAt: string | undefined }> = ({ } }, [createdAt]); - return {timeAgo}; + return {timeAgo}; }; export default TimeAgo; diff --git a/src/contexts/AdminResourceContext.tsx b/src/contexts/AdminResourceContext.tsx index 9062d55c..636c1446 100644 --- a/src/contexts/AdminResourceContext.tsx +++ b/src/contexts/AdminResourceContext.tsx @@ -35,6 +35,8 @@ import useResource from "../hooks/useResource"; import { TFunction } from "i18next"; import { getHostsVerbose } from "../api/deploy/hosts"; import { getSystemCapacities } from "../api/deploy/systemCapacities"; +import { GpuClaimRead } from "../temporaryTypesRemoveMe"; +import { listGpuClaims } from "../api/deploy/gpuClaims"; type AdminResourceContextType = { fetchingEnabled: boolean; @@ -118,6 +120,9 @@ type AdminResourceContextType = { // SystemCapacities systemCapacities: SystemCapacities | undefined; + + // GpuClaims + gpuClaims: GpuClaimRead[] | undefined; }; const initialState: AdminResourceContextType = { @@ -202,6 +207,9 @@ const initialState: AdminResourceContextType = { // SystemCapacities systemCapacities: undefined, + + // GpuClaims + gpuClaims: undefined, }; export const AdminResourceContext = createContext(initialState); @@ -295,6 +303,10 @@ export const AdminResourceContextProvider = ({ SystemCapacities | undefined >(undefined); + const [gpuClaims, setGpuClaims] = useState( + undefined + ); + const [lastRefreshRtt, setLastRefreshRtt] = useState(0); const [lastRefresh, setLastRefresh] = useState(0); const [loading, setLoading] = useState(false); @@ -336,7 +348,8 @@ export const AdminResourceContextProvider = ({ jobsPageSize, setJobs, setHosts, - setSystemCapacities + setSystemCapacities, + setGpuClaims ).finally(() => setLoading(false)); } }; @@ -458,6 +471,9 @@ export const AdminResourceContextProvider = ({ // SystemCapacities systemCapacities, + + // GpuClaims + gpuClaims, }} > {children} @@ -511,7 +527,10 @@ async function fetchResources( setHosts: Dispatch>, // SystemCapacities - setSystemCapacities: Dispatch> + setSystemCapacities: Dispatch>, + + // GpuClaims + setGpuClaims: Dispatch> ) { if (!(initialized && keycloak.authenticated && keycloak.token)) return; const rtts: Record = {}; @@ -656,6 +675,21 @@ async function fetchResources( ); } }, + + async () => { + try { + const start = performance.now(); + const response = await listGpuClaims(keycloak.token!, true); + rtts[9] = { start, end: performance.now() }; + if (response) setGpuClaims(response); + } catch (error: any) { + errorHandler(error).forEach((e) => + enqueueSnackbar(t("error-could-not-fetch-gpu-claims") + ": " + e, { + variant: "error", + }) + ); + } + }, ]; await Promise.all(promises.map((p) => p())); diff --git a/src/pages/admin/AdminV2.tsx b/src/pages/admin/AdminV2.tsx index a4b85d88..f7523959 100644 --- a/src/pages/admin/AdminV2.tsx +++ b/src/pages/admin/AdminV2.tsx @@ -1,5 +1,7 @@ import { + Box, Card, + Chip, Container, LinearProgress, Link, @@ -43,6 +45,14 @@ import { deleteVM } from "../../api/deploy/vms"; import { deleteGpuLease } from "../../api/deploy/gpuLeases"; import { deleteTeam } from "../../api/deploy/teams"; import TimeLeft from "../../components/admin/TimeLeft"; +import { + GpuClaimConsumer, + GpuClaimRead, + GpuClaimStatus, +} from "../../temporaryTypesRemoveMe"; +import Iconify from "../../components/Iconify"; +import Label from "../../components/Label"; +import TimeAgo from "../../components/admin/TimeAgo"; export default function AdminV2() { const { tab: initialTab } = useParams(); @@ -113,6 +123,9 @@ export default function AdminV2() { setGpuGroupsPage, gpuGroupsPageSize, setGpuGroupsPageSize, + + // GpuClaims + gpuClaims, } = useAdmin(); const navigate = useNavigate(); @@ -310,6 +323,167 @@ export default function AdminV2() { }, ], }, + { + label: "GPU Claims", + columns: [ + { id: "id", label: "ID" }, + { id: "name", label: "Name" }, + { id: "zone", label: "Zone" }, + { + id: "*", + label: "Requested", + renderFunc: (claim: GpuClaimRead | undefined) => { + const requested = claim?.requested; + const allocated = claim?.allocated; + + if (!requested || Object.keys(requested).length === 0) { + return ( + + {t("gpuclaim-no-gpu-requested")} + + ); + } + + return ( + + {Object.entries(requested).map(([name, req]) => { + const allocs = allocated?.[name]; + const vendor = + (req.config as any)?.type || + (req.config as any)?.driver || + "unknown"; + const sharing = (req.config as any)?.parameters?.sharing + ?.strategy; + const sharingConfig = vendor?.toLowerCase().includes("nvidia") + ? sharing?.includes("MPS") + ? (req.config as any)?.parameters?.mpsConfig + : (req.config as any)?.parameters?.timeslicingConfig + : undefined; + const allocatedChip = allocs ? ( + + {allocs.map((alloc) => ( + + ))} + + ) : ( + + ); + + return ( + + + + {allocatedChip} + + + + {req.count} {vendor} {sharing && `• ${sharing}`}{" "} + {sharingConfig && `• ${sharingConfig}`} + + + ); + })} + + ); + }, + }, + { + id: "consumers", + label: "Consumers", + renderFunc: (consumers: GpuClaimConsumer[] | undefined) => { + if (consumers == undefined) return <>; + return ( + + {consumers.map((c) => ( + + ))} + + ); + }, + }, + { + id: "status", + label: "Status", + renderFunc: (status: GpuClaimStatus) => { + const phase = status?.phase?.toLowerCase(); + + let color = "default"; + if (phase === "bound") color = "success"; + else if (phase === "pending") color = "info"; + else if (phase === "failed") color = "error"; + + return ( + + + {status?.lastSynced != undefined && ( + + )} + + ); + }, + }, + ], + }, { label: "Users", columns: [ @@ -494,6 +668,14 @@ export default function AdminV2() { pageSize: gpuGroupsPageSize, setPageSize: setGpuGroupsPageSize, }, + { + data: gpuClaims, + setFilter: () => {}, + page: 0, + setPage: () => {}, + pageSize: gpuClaims?.length || 0, + setPageSize: () => {}, + }, { data: users, filter: usersFilter, diff --git a/src/temporaryTypesRemoveMe.ts b/src/temporaryTypesRemoveMe.ts new file mode 100644 index 00000000..3e193f34 --- /dev/null +++ b/src/temporaryTypesRemoveMe.ts @@ -0,0 +1,104 @@ +/** + * GpuClaimRead is a detailed DTO for administrators + * providing full visibility into requested, allocated, + * and consumed GPU resources. + */ +export interface GpuClaimRead { + id: string; + name: string; + zone: string; + /** + * Requested contains all requested GPU configurations by key (request.Name). + */ + requested?: { [key: string]: RequestedGpu }; + /** + * Allocated contains the GPUs that have been successfully bound/allocated. + */ + allocated?: { [key: string]: AllocatedGpu[] }; + /** + * Consumers are the workloads currently using this claim. + */ + consumers?: GpuClaimConsumer[]; + /** + * Status reflects the reconciliation and/or lifecycle state. + */ + status?: GpuClaimStatus; + /** + * LastError holds the last reconciliation or provisioning error message. + */ + lastError?: string; + createdAt: string; + updatedAt?: string; +} +export interface GpuClaimCreate { + name: string; + zone?: string; + /** + * Requested contains all requested GPU configurations by key (request.Name). + */ + requested?: RequestedGpuCreate[]; +} +export interface GpuClaimCreated { + id: string; + jobId: string; +} +export interface RequestedGpuCreate { + RequestedGpu: RequestedGpu; + name: string; +} +/** + * RequestedGpu describes the desired GPU configuration that was requested. + */ +export interface RequestedGpu { + allocationMode: string; + capacity?: { [key: string]: string }; + count?: number /* int64 */; + deviceClassName: string; + selectors?: string[]; + config?: GpuDeviceConfigurationWrapper; +} +export interface GpuDeviceConfigurationWrapper {} +/** + * GpuDeviceConfiguration represents a vendor-specific GPU configuration. + */ +export type GpuDeviceConfiguration = any /* json.Marshaler */; +/** + * GenericDeviceConfiguration is a catch-all configuration when no vendor-specific struct is used. + */ +export interface GenericDeviceConfiguration { + driver: string; +} +/** + * NvidiaDeviceConfiguration represents NVIDIA-specific configuration options. + */ +export interface NvidiaDeviceConfiguration { + driver: string; + sharing?: any /* nvidia.GpuSharing */; +} +/** + * AllocatedGpu represents a concrete allocated GPU or GPU share. + */ +export interface AllocatedGpu { + pool?: string; + device?: string; + shareID?: string; + adminAccess?: boolean; +} +/** + * GpuClaimConsumer describes a workload consuming this GPU claim. + */ +export interface GpuClaimConsumer { + apiGroup?: string; + resource?: string; + name?: string; + uid?: string; +} +/** + * GpuClaimStatus represents runtime state and metadata about allocation progress. + */ +export interface GpuClaimStatus { + phase?: string; + message?: string; + updatedAt?: string; + lastSynced?: string; +} From 6791c2a81367ab746b6fdb3ceead558575c6d13f Mon Sep 17 00:00:00 2001 From: Philip Zingmark Date: Thu, 15 Jan 2026 19:17:11 +0100 Subject: [PATCH 04/10] change dra gpu selection style --- bun.lockb | Bin 283270 -> 288902 bytes src/contexts/ResourceContext.tsx | 21 ++++++++ src/pages/edit/Specs.tsx | 83 ++++++++++++++++--------------- src/types.ts | 1 - 4 files changed, 65 insertions(+), 40 deletions(-) diff --git a/bun.lockb b/bun.lockb index 29e9ecf8c723813360228272eedac81b03ede8f0..26401166623d12b54472dcee9064e4c4481656ce 100755 GIT binary patch delta 9733 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 delta 9120 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 diff --git a/src/contexts/ResourceContext.tsx b/src/contexts/ResourceContext.tsx index 089494e0..893da67a 100644 --- a/src/contexts/ResourceContext.tsx +++ b/src/contexts/ResourceContext.tsx @@ -28,6 +28,8 @@ import { import { listGpuGroups } from "../api/deploy/gpuGroups"; import { listGpuLeases } from "../api/deploy/gpuLeases"; import { listMigrations } from "../api/deploy/resourceMigrations"; +import { GpuClaimRead } from "../temporaryTypesRemoveMe"; +import { listGpuClaims } from "../api/deploy/gpuClaims"; type ResourceContextType = { rows: Resource[]; @@ -52,6 +54,7 @@ type ResourceContextType = { setGpuGroups: (gpuGroups: GpuGroupRead[]) => void; gpuLeases: GpuLeaseRead[]; setGpuLeases: (gpuLeases: GpuLeaseRead[]) => void; + gpuClaims: GpuClaimRead[] | undefined; resourceMigrations: ResourceMigrationRead[]; setResourceMigrations: (resourceMigrations: ResourceMigrationRead[]) => void; queueJob: (job: Job) => void; @@ -87,6 +90,7 @@ const initialState: ResourceContextType = { setGpuGroups: () => {}, gpuLeases: new Array(), setGpuLeases: () => {}, + gpuClaims: new Array(), resourceMigrations: new Array(), setResourceMigrations: () => {}, queueJob: () => {}, @@ -124,6 +128,7 @@ export const ResourceContextProvider = ({ const [zones, setZones] = useState([]); const [gpuGroups, setGpuGroups] = useState([]); const [gpuLeases, setGpuLeases] = useState([]); + const [gpuClaims, setGpuClaims] = useState([]); const [resourceMigrations, setResourceMigrations] = useState< ResourceMigrationRead[] >([]); @@ -253,6 +258,20 @@ export const ResourceContextProvider = ({ } }; + const loadGpuClaims = async () => { + if (!(initialized && keycloak.authenticated && keycloak.token)) return; + try { + const gpuClaims = await listGpuClaims(keycloak.token); + setGpuLeases(gpuClaims); + } catch (error: any) { + errorHandler(error).forEach((e) => + enqueueSnackbar("Error fetching GPU claims: " + e, { + variant: "error", + }) + ); + } + }; + const loadResourceMigrations = async () => { if (!(initialized && keycloak.authenticated && keycloak.token)) return; try { @@ -391,6 +410,7 @@ export const ResourceContextProvider = ({ loadZones(); loadGpuGroups(); loadGpuLeases(); + loadGpuClaims(); loadResourceMigrations(); // eslint-disable-next-line @@ -440,6 +460,7 @@ export const ResourceContextProvider = ({ setGpuGroups, gpuLeases, setGpuLeases, + gpuClaims, resourceMigrations, setResourceMigrations, queueJob, diff --git a/src/pages/edit/Specs.tsx b/src/pages/edit/Specs.tsx index 5639f6f9..f0e453ae 100644 --- a/src/pages/edit/Specs.tsx +++ b/src/pages/edit/Specs.tsx @@ -1,4 +1,5 @@ import { + Autocomplete, Button, Card, CardActions, @@ -33,7 +34,7 @@ export const Specs = ({ resource }: { resource: Resource }) => { const theme: CustomTheme = useTheme(); const { initialized, keycloak } = useKeycloak(); - const { user, queueJob } = useResource(); + const { user, queueJob, zones, gpuClaims } = useResource(); const STEP_DEPLOYMENT = 0.2; const MIN_CPU_DEPLOYMENT = 0.2; @@ -67,8 +68,19 @@ export const Specs = ({ resource }: { resource: Resource }) => { return resource.specs.ram || 0; }; + const gpuEnabledZone = + resource.type === "deployment" && + resource.zone && + zones + .find( + (zone) => + zone.name === resource.zone && + zone.capabilities.includes(resource.type) + ) + ?.capabilities.includes("dra"); + const getInitialGPUs = () => - resource.type === "deployment" ? resource.specs.gpus : undefined; + gpuEnabledZone ? resource.specs.gpus : undefined; const [cpu, setCpu] = useState(getInitialCpu()); const [ram, setRam] = useState(getInitialRam()); @@ -114,11 +126,7 @@ export const Specs = ({ resource }: { resource: Resource }) => { }; const validateGPU = (gpu: DeploymentGPU): boolean => - !!gpu.name && - Boolean( - (gpu.templateName && !gpu.claimName) || - (!gpu.templateName && gpu.claimName) - ); + !!gpu.name && Boolean(gpu.claimName); useEffect(() => { if (user) { @@ -395,14 +403,7 @@ export const Specs = ({ resource }: { resource: Resource }) => { > GPU: {gpu.name} - {gpu.claimName || - (gpu.templateName && ( - - ({gpu.claimName || gpu.templateName}) - - ))} + {gpu.claimName} } /> @@ -627,7 +628,7 @@ export const Specs = ({ resource }: { resource: Resource }) => { )} {/* GPUs */} - {resource.type === "deployment" && ( + {gpuEnabledZone && ( <> { startIcon={} variant="outlined" size="small" + disabled={ + gpuClaims == undefined || gpuClaims.length < 1 + } onClick={() => setGpus((prev) => [ ...(prev || []), - { name: "", templateName: "", claimName: "" }, + { name: "", claimName: "" }, ]) } > @@ -751,7 +755,7 @@ export const Specs = ({ resource }: { resource: Resource }) => { p: 2, }} > - @@ -760,30 +764,31 @@ export const Specs = ({ resource }: { resource: Resource }) => { required size="small" sx={{ flex: 1 }} - /> - + />*/} + { handleChange( index, - "templateName", - e.target.value - ) - } - size="small" - sx={{ flex: 1 }} - /> - - handleChange(index, "claimName", e.target.value) + "claimName", + newValue ? newValue : "" + ); + }} + options={gpuClaims?.map((c) => c.name) || []} + getOptionLabel={(option) => option} + renderInput={(params) => ( + + )} + isOptionEqualToValue={(option, value) => + option === value } - size="small" - sx={{ flex: 1 }} + disableClearable /> Date: Wed, 21 Jan 2026 19:53:24 +0100 Subject: [PATCH 05/10] GPU Claim creation related --- bun.lockb | Bin 288902 -> 218345 bytes src/components/admin/ClusterOverviewTab.tsx | 82 ++++++ src/components/admin/DRAConfigPanel.tsx | 101 +++++++ src/components/admin/GPUClaimEditor.tsx | 277 ++++++++++++++++++++ src/components/admin/GPUClaimModal.tsx | 203 ++++++++++++++ src/pages/admin/AdminV2.tsx | 4 + src/temporaryTypesRemoveMe.ts | 2 + src/theme/overrides/Backdrop.ts | 1 + 8 files changed, 670 insertions(+) create mode 100644 src/components/admin/ClusterOverviewTab.tsx create mode 100644 src/components/admin/DRAConfigPanel.tsx create mode 100644 src/components/admin/GPUClaimEditor.tsx create mode 100644 src/components/admin/GPUClaimModal.tsx diff --git a/bun.lockb b/bun.lockb index 26401166623d12b54472dcee9064e4c4481656ce..27bbbefb585005d8af2601ae7ba7b2b33de131a1 100755 GIT binary patch literal 218345 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≷*}^W?s^I6xhufi6|kB3PIc$x|(U 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 literal 288902 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

FtgHaH)YVg3j`e^4fI9 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 B@2~&> diff --git a/src/components/admin/ClusterOverviewTab.tsx b/src/components/admin/ClusterOverviewTab.tsx new file mode 100644 index 00000000..ae94d7a9 --- /dev/null +++ b/src/components/admin/ClusterOverviewTab.tsx @@ -0,0 +1,82 @@ +import { + Paper, + Stack, + Typography, + Card, + CardContent, + Chip, + Divider, +} from "@mui/material"; +import useAdmin from "../../hooks/useAdmin"; +import useResource from "../../hooks/useResource"; +import { useTranslation } from "react-i18next"; +import DRAConfigPanel from "./DRAConfigPanel"; +import { useEffect, useState } from "react"; +import { discover } from "../../api/deploy/discover"; + +export default function ClusterOverviewTab() { + const { t } = useTranslation(); + const { systemCapacities } = useAdmin(); + const { zones } = useResource(); + const [roles, setRoles] = useState([]); + + useEffect(() => { + discover().then((resp) => { + setRoles([...new Set([...resp.roles.map((r) => r.name), "admin"])]); + }); + }, []); + + return ( + + + {t("cluster.overview")} + + {zones?.map((zone) => { + const hasDRA = zone.capabilities?.includes("dra") || true; + + return ( + + + + {/* Header */} + + + {zone.name} + + + {zone.description} + + + + {/* Capabilities */} + + {zone.capabilities.map((cap) => ( + + ))} + + + {/* Optional DRA section */} + {hasDRA && ( + <> + + + + )} + + + + ); + })} + + + ); +} diff --git a/src/components/admin/DRAConfigPanel.tsx b/src/components/admin/DRAConfigPanel.tsx new file mode 100644 index 00000000..26681137 --- /dev/null +++ b/src/components/admin/DRAConfigPanel.tsx @@ -0,0 +1,101 @@ +import { useState } from "react"; +import { Stack, Typography, Button, Alert, Box } from "@mui/material"; +import GpuClaimModal from "./GPUClaimModal"; +import { GpuClaimCreate } from "../../temporaryTypesRemoveMe"; + +interface DRAConfigPanelProps { + zone: { + name: string; + // extend later with draResources, policies, etc + }; + roles: string[]; +} + +export default function DRAConfigPanel({ zone, roles }: DRAConfigPanelProps) { + const [gpuModalOpen, setGpuModalOpen] = useState(false); + const [gpuClaims, setGpuClaims] = useState([]); + + const handleAddGpuClaim = (claim: GpuClaimCreate) => { + // TODO: actual post later + setGpuClaims((prev) => [...prev, claim]); + setGpuModalOpen(false); + }; + + return ( + + + Dynamic Resource Allocation (DRA) + + + + This zone supports Dynamic Resource Allocation. Configure DRA resources + and policies below. + + + + + {gpuClaims.length === 0 ? ( + + No DRA resources configured yet. + + ) : ( + + {gpuClaims.map((claim) => ( + + {claim.name} + + Zone: {claim.zone} + + + Allowed roles: {claim.allowedRoles?.join(", ") || "All"} + + + Requested GPUs:{" "} + {claim.requested?.map((r) => r.name).join(", ")} + + + ))} + + )} + + + + + + + + + {/* GPU Claim Modal */} + setGpuModalOpen(false)} + onSubmit={handleAddGpuClaim} + /> + + ); +} diff --git a/src/components/admin/GPUClaimEditor.tsx b/src/components/admin/GPUClaimEditor.tsx new file mode 100644 index 00000000..e95aa7ff --- /dev/null +++ b/src/components/admin/GPUClaimEditor.tsx @@ -0,0 +1,277 @@ +import { + Stack, + TextField, + Button, + MenuItem, + IconButton, + Paper, + Autocomplete, + Typography, + Chip, +} from "@mui/material"; +import DeleteIcon from "@mui/icons-material/Delete"; +import { + GenericDeviceConfiguration, + RequestedGpuCreate, +} from "../../temporaryTypesRemoveMe"; + +interface Props { + value: RequestedGpuCreate[]; + onChange: (value: RequestedGpuCreate[]) => void; +} + +export default function GpuClaimEditor({ value, onChange }: Props) { + const update = (idx: number, patch: Partial) => { + const next = [...value]; + next[idx] = { ...next[idx], ...patch }; + onChange(next); + }; + + const updateRequested = ( + idx: number, + patch: Partial + ) => { + const next = [...value]; + next[idx] = { + ...next[idx], + RequestedGpu: { + ...next[idx].RequestedGpu, + ...patch, + }, + }; + onChange(next); + }; + + return ( + + {value.map((req, idx) => { + const gpu = req.RequestedGpu; + + return ( + + + {/* Header */} + + update(idx, { name: e.target.value })} + required + fullWidth + /> + + onChange(value.filter((_, i) => i !== idx))} + > + + + + + + updateRequested(idx, { + allocationMode: e.target.value, + }) + } + > + All + Exact count + + + {gpu.allocationMode === "ExactCount" && ( + + updateRequested(idx, { + count: Number(e.target.value), + }) + } + /> + )} + + + updateRequested(idx, { + deviceClassName: e.target.value, + }) + } + placeholder="nvidia.com/gpu" + defaultValue={"nvidia.com/gpu"} + helperText="RFC1123 name" + required + /> + + {/* TODO: CEL expr for selectors*/} + {/* { + updateRequested(idx, { + selectors: sel, + }); + }} + /> */} + + + {"Driver configuration"} + + updateRequested(idx, { + config: { driver: e.target.value }, + }) + } + /> + {(gpu.config as GenericDeviceConfiguration)?.driver == + "gpu.nvidia.com" && ( + <> + + updateRequested(idx, { + config: { + driver: + (gpu.config as GenericDeviceConfiguration) + ?.driver || "gpu.nvidia.com", + parameters: { + ...(gpu.config as any)?.parameters, + sharing: { + ...(gpu.config as any)?.parameters?.sharing, + strategy: strat, + }, + }, + }, + }) + } + renderTags={(s, getTagProps) => + s.map((strategy, index) => ( + + )) + } + renderInput={(params) => ( + + )} + /> + + <> + {(gpu.config as any)?.parameters?.sharing?.strategy == + "MPS" ? ( + + + MPS Configuration + + + + updateRequested(idx, { + config: { + driver: "gpu.nvidia.com", + parameters: { + ...(gpu.config as any)?.parameters, + sharing: { + ...(gpu.config as any)?.parameters + ?.sharing, + mps: { + ...(gpu.config as any)?.parameters + ?.sharing?.mps, + defaultActiveThreadPercentage: Number( + e.target.value + ), + }, + }, + }, + }, + }) + } + /> + + + updateRequested(idx, { + config: { + driver: "gpu.nvidia.com", + parameters: { + ...(gpu.config as any)?.parameters, + sharing: { + ...(gpu.config as any)?.parameters + ?.sharing, + mps: { + ...(gpu.config as any)?.parameters + ?.sharing?.mps, + defaultPinnedDeviceMemoryLimit: + e.target.value, + }, + }, + }, + }, + }) + } + /> + + ) : ( + (gpu.config as any)?.parameters?.sharing?.strategy == + "TimeSlicing" && ( + timeslicing TBD + ) + )} + + + )} + + + + ); + })} + + + + ); +} diff --git a/src/components/admin/GPUClaimModal.tsx b/src/components/admin/GPUClaimModal.tsx new file mode 100644 index 00000000..0696c697 --- /dev/null +++ b/src/components/admin/GPUClaimModal.tsx @@ -0,0 +1,203 @@ +import { + Dialog, + DialogTitle, + DialogContent, + DialogActions, + Stack, + TextField, + Button, + Chip, + Autocomplete, + Tooltip, + Typography, + useTheme, +} from "@mui/material"; +import { useState } from "react"; +import GpuClaimEditor from "./GPUClaimEditor"; +import { GpuClaimCreate } from "../../temporaryTypesRemoveMe"; +import Iconify from "../Iconify"; +import { useTranslation } from "react-i18next"; + +interface Props { + open: boolean; + zone: string; + roles: string[]; + initialValue?: GpuClaimCreate; + onClose: () => void; + onSubmit: (value: GpuClaimCreate) => void; +} + +type Role = + | "default" + | "bronze" + | "silver" + | "gold" + | "platinum" + | "admin" + | string; + +function getChipColor(role: Role) { + const metalStyles: Record = { + bronze: { + background: + "linear-gradient(145deg, #cd7f32 0%, #b06a2f 50%, #d99c6c 100%)", + color: "#000", + boxShadow: "inset 0 1px 2px rgba(255,255,255,0.3)", + }, + silver: { + background: + "linear-gradient(145deg, #e6e8eb 0%, #c0c0c0 50%, #f5f5f5 100%)", + color: "#000", + boxShadow: "inset 0 1px 2px rgba(255,255,255,0.5)", + }, + gold: { + background: + "linear-gradient(145deg, #ffd700 0%, #e6c200 50%, #ffea70 100%)", + color: "#000", + boxShadow: "inset 0 1px 2px rgba(255,255,255,0.4)", + }, + platinum: { + background: + "linear-gradient(145deg, #e5e4e2 0%, #cfcfcf 50%, #ffffff 100%)", + color: "#000", + boxShadow: "inset 0 1px 2px rgba(255,255,255,0.5)", + }, + }; + + const muiColors: Record< + string, + | "default" + | "error" + | "primary" + | "secondary" + | "info" + | "success" + | "warning" + > = { + default: "default", + admin: "error", + }; + + if (metalStyles[role]) { + return { + sx: { + background: metalStyles[role].background, + color: metalStyles[role].color, + boxShadow: metalStyles[role].boxShadow, + }, + }; + } + + return { color: muiColors[role] ?? "default" }; +} + +export default function GpuClaimModal({ + open, + zone, + roles, + initialValue, + onClose, + onSubmit, +}: Props) { + const [value, setValue] = useState( + initialValue ?? { + name: "", + zone, + allowedRoles: [], + requested: [], + } + ); + const { t } = useTranslation(); + const theme = useTheme(); + + return ( +

+ + {initialValue ? "Edit GPU Claim" : "Create GPU Claim"} + + + + + setValue({ ...value, name: e.target.value })} + required + /> + + + + + setValue({ + ...value, + allowedRoles: Array.isArray(roles) ? roles : [roles], + }) + } + renderTags={(r, getTagProps) => + r.map((role, index) => ( + + )) + } + renderInput={(params) => ( + + + + {"These roles will be allowed to use the GPUClaim."} + +

+ + {"If left empty, anyone will be allowed to use it."} + +

+ + { + 'The admin "role" will make sure that only users that are admin can use it.' + } + + + } + > + + + +
+ +
+ )} + /> + + setValue({ ...value, requested })} + /> +
+
+ + + + + +
+ ); +} diff --git a/src/pages/admin/AdminV2.tsx b/src/pages/admin/AdminV2.tsx index f7523959..b1c4a04b 100644 --- a/src/pages/admin/AdminV2.tsx +++ b/src/pages/admin/AdminV2.tsx @@ -53,6 +53,7 @@ import { import Iconify from "../../components/Iconify"; import Label from "../../components/Label"; import TimeAgo from "../../components/admin/TimeAgo"; +import CluseterOverviewTab from "../../components/admin/ClusterOverviewTab"; export default function AdminV2() { const { tab: initialTab } = useParams(); @@ -617,6 +618,7 @@ export default function AdminV2() { {} ); tabLookup["hosts"] = resourceConfig.length; + tabLookup["overview"] = resourceConfig.length + 1; useEffect(() => { if ( initialTab && @@ -737,6 +739,7 @@ export default function AdminV2() { /> )), , + , ]; useEffect(() => { @@ -770,6 +773,7 @@ export default function AdminV2() { ))} + {tabs[activeTab]} diff --git a/src/temporaryTypesRemoveMe.ts b/src/temporaryTypesRemoveMe.ts index 3e193f34..799f8581 100644 --- a/src/temporaryTypesRemoveMe.ts +++ b/src/temporaryTypesRemoveMe.ts @@ -7,6 +7,7 @@ export interface GpuClaimRead { id: string; name: string; zone: string; + allowedRoles?: string[]; /** * Requested contains all requested GPU configurations by key (request.Name). */ @@ -33,6 +34,7 @@ export interface GpuClaimRead { export interface GpuClaimCreate { name: string; zone?: string; + allowedRoles?: string[]; /** * Requested contains all requested GPU configurations by key (request.Name). */ diff --git a/src/theme/overrides/Backdrop.ts b/src/theme/overrides/Backdrop.ts index 708dd141..61b69a1a 100644 --- a/src/theme/overrides/Backdrop.ts +++ b/src/theme/overrides/Backdrop.ts @@ -9,6 +9,7 @@ export default function Backdrop(theme: CustomTheme) { MuiBackdrop: { styleOverrides: { root: { + backgroundColor: "rgb(22,28,36", background: [ `rgb(22,28,36)`, `-moz-linear-gradient(75deg, ${varLow} 0%, ${varHigh} 100%)`, From 84b87244483237c93cfbe42bdda585021d904ee1 Mon Sep 17 00:00:00 2001 From: Philip Zingmark Date: Wed, 21 Jan 2026 23:28:15 +0100 Subject: [PATCH 06/10] hook up dra creation panel to api --- src/api/deploy/gpuClaims.ts | 4 +- src/components/admin/DRAConfigPanel.tsx | 32 ++++++++++------ src/components/admin/GPUClaimEditor.tsx | 18 +++------ src/contexts/ResourceContext.tsx | 2 +- src/pages/edit/Specs.tsx | 49 +++++++++++++++++++------ src/temporaryTypesRemoveMe.ts | 15 +++++--- src/types.ts | 2 +- 7 files changed, 76 insertions(+), 46 deletions(-) diff --git a/src/api/deploy/gpuClaims.ts b/src/api/deploy/gpuClaims.ts index f18be09d..e0c4c33d 100644 --- a/src/api/deploy/gpuClaims.ts +++ b/src/api/deploy/gpuClaims.ts @@ -57,7 +57,7 @@ export const deleteGpuClaim = async (token: Jwt, gpuClaimId: string) => { }; export const createGpuClaim = async (token: Jwt, gpuClaim: GpuClaimCreate) => { - const url = `${import.meta.env.VITE_DEPLOY_API_URL}/gpuClaims/`; + const url = `${import.meta.env.VITE_DEPLOY_API_URL}/gpuClaims`; const response = await fetch(url, { method: "POST", headers: { @@ -67,7 +67,7 @@ export const createGpuClaim = async (token: Jwt, gpuClaim: GpuClaimCreate) => { }); const result = await response.json(); if (typeof result !== "object") { - throw new Error("Error deleting GPU claim, response was not an object"); + throw new Error("Error creating GPU claim, response was not an object"); } return result; }; diff --git a/src/components/admin/DRAConfigPanel.tsx b/src/components/admin/DRAConfigPanel.tsx index 26681137..8c28ed0c 100644 --- a/src/components/admin/DRAConfigPanel.tsx +++ b/src/components/admin/DRAConfigPanel.tsx @@ -1,7 +1,11 @@ import { useState } from "react"; import { Stack, Typography, Button, Alert, Box } from "@mui/material"; import GpuClaimModal from "./GPUClaimModal"; -import { GpuClaimCreate } from "../../temporaryTypesRemoveMe"; +import { GpuClaimCreate, GpuClaimRead } from "../../temporaryTypesRemoveMe"; +import { createGpuClaim } from "../../api/deploy/gpuClaims"; +import { useKeycloak } from "@react-keycloak/web"; +import { enqueueSnackbar } from "notistack"; +import useAdmin from "../../hooks/useAdmin"; interface DRAConfigPanelProps { zone: { @@ -13,12 +17,19 @@ interface DRAConfigPanelProps { export default function DRAConfigPanel({ zone, roles }: DRAConfigPanelProps) { const [gpuModalOpen, setGpuModalOpen] = useState(false); - const [gpuClaims, setGpuClaims] = useState([]); + const { gpuClaims } = useAdmin(); + const { keycloak } = useKeycloak(); - const handleAddGpuClaim = (claim: GpuClaimCreate) => { - // TODO: actual post later - setGpuClaims((prev) => [...prev, claim]); - setGpuModalOpen(false); + const handleAddGpuClaim = async (claim: GpuClaimCreate) => { + try { + const response = await createGpuClaim(keycloak.token!, claim); + if (response["validationErrors"] != undefined) { + throw response["validationErrors"]; + } + setGpuModalOpen(false); + } catch (ex) { + enqueueSnackbar<"error">({ message: "Failed to create gpu claim" + ex }); + } }; return ( @@ -41,13 +52,13 @@ export default function DRAConfigPanel({ zone, roles }: DRAConfigPanelProps) { }} > - {gpuClaims.length === 0 ? ( + {gpuClaims?.length === 0 ? ( No DRA resources configured yet. ) : ( - {gpuClaims.map((claim) => ( + {gpuClaims?.map((claim) => ( Requested GPUs:{" "} - {claim.requested?.map((r) => r.name).join(", ")} + {Object.keys(claim.requested || {}).join(", ")} ))} @@ -81,9 +92,6 @@ export default function DRAConfigPanel({ zone, roles }: DRAConfigPanelProps) { > Add DRA Resource - diff --git a/src/components/admin/GPUClaimEditor.tsx b/src/components/admin/GPUClaimEditor.tsx index e95aa7ff..6ac5e409 100644 --- a/src/components/admin/GPUClaimEditor.tsx +++ b/src/components/admin/GPUClaimEditor.tsx @@ -27,17 +27,11 @@ export default function GpuClaimEditor({ value, onChange }: Props) { onChange(next); }; - const updateRequested = ( - idx: number, - patch: Partial - ) => { + const updateRequested = (idx: number, patch: Partial) => { const next = [...value]; next[idx] = { ...next[idx], - RequestedGpu: { - ...next[idx].RequestedGpu, - ...patch, - }, + ...patch, }; onChange(next); }; @@ -45,7 +39,7 @@ export default function GpuClaimEditor({ value, onChange }: Props) { return ( {value.map((req, idx) => { - const gpu = req.RequestedGpu; + const gpu = req; return ( @@ -262,10 +256,8 @@ export default function GpuClaimEditor({ value, onChange }: Props) { ...value, { name: "", - RequestedGpu: { - allocationMode: "All", - deviceClassName: "", - }, + allocationMode: "All", + deviceClassName: "nvidia.com/gpu", }, ]) } diff --git a/src/contexts/ResourceContext.tsx b/src/contexts/ResourceContext.tsx index 893da67a..73927f17 100644 --- a/src/contexts/ResourceContext.tsx +++ b/src/contexts/ResourceContext.tsx @@ -262,7 +262,7 @@ export const ResourceContextProvider = ({ if (!(initialized && keycloak.authenticated && keycloak.token)) return; try { const gpuClaims = await listGpuClaims(keycloak.token); - setGpuLeases(gpuClaims); + setGpuClaims(gpuClaims); } catch (error: any) { errorHandler(error).forEach((e) => enqueueSnackbar("Error fetching GPU claims: " + e, { diff --git a/src/pages/edit/Specs.tsx b/src/pages/edit/Specs.tsx index f0e453ae..534b554f 100644 --- a/src/pages/edit/Specs.tsx +++ b/src/pages/edit/Specs.tsx @@ -126,7 +126,7 @@ export const Specs = ({ resource }: { resource: Resource }) => { }; const validateGPU = (gpu: DeploymentGPU): boolean => - !!gpu.name && Boolean(gpu.claimName); + gpu.name != "" && gpu.claimName != ""; useEffect(() => { if (user) { @@ -755,16 +755,37 @@ export const Specs = ({ resource }: { resource: Resource }) => { p: 2, }} > - {/* - handleChange(index, "name", e.target.value) - } - required - size="small" - sx={{ flex: 1 }} - />*/} + {gpu.claimName != "" && ( + { + handleChange( + index, + "name", + newValue ? newValue : "" + ); + }} + options={Object.keys( + gpuClaims?.find( + (g) => g.name === gpu.claimName + )?.requested ?? {} + )} + getOptionLabel={(option) => option} + renderInput={(params) => ( + + )} + isOptionEqualToValue={(option, value) => + option === value + } + disableClearable + /> + )} { newValue ? newValue : "" ); }} - options={gpuClaims?.map((c) => c.name) || []} + options={ + gpuClaims + ?.filter((c) => c.zone == resource.zone) + .map((c) => c.name) || [] + } getOptionLabel={(option) => option} renderInput={(params) => ( ; /** * Allocated contains the GPUs that have been successfully bound/allocated. */ - allocated?: { [key: string]: AllocatedGpu[] }; + allocated?: Record; /** * Consumers are the workloads currently using this claim. */ @@ -44,8 +50,7 @@ export interface GpuClaimCreated { id: string; jobId: string; } -export interface RequestedGpuCreate { - RequestedGpu: RequestedGpu; +export interface RequestedGpuCreate extends RequestedGpu { name: string; } /** @@ -75,7 +80,7 @@ export interface GenericDeviceConfiguration { */ export interface NvidiaDeviceConfiguration { driver: string; - sharing?: any /* nvidia.GpuSharing */; + parameters?: any /* nvidia.GpuConfig */; } /** * AllocatedGpu represents a concrete allocated GPU or GPU share. diff --git a/src/types.ts b/src/types.ts index 2a3b11da..46236662 100644 --- a/src/types.ts +++ b/src/types.ts @@ -20,7 +20,7 @@ export interface Vm extends V2VmRead { export interface DeploymentGPU { name: string; - claimName?: string; + claimName: string; } export interface DeploymentSpecsGPU extends DeploymentSpecs { From 0581e60cb35f94f926817101f5672d9d59a1a742 Mon Sep 17 00:00:00 2001 From: Philip Zingmark Date: Thu, 22 Jan 2026 20:19:18 +0100 Subject: [PATCH 07/10] add delete button to dra tab in admin panel --- src/components/admin/GPUClaimEditor.tsx | 5 ++++- src/pages/admin/AdminV2.tsx | 10 ++++++++++ 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/src/components/admin/GPUClaimEditor.tsx b/src/components/admin/GPUClaimEditor.tsx index 6ac5e409..a1b400ac 100644 --- a/src/components/admin/GPUClaimEditor.tsx +++ b/src/components/admin/GPUClaimEditor.tsx @@ -257,7 +257,10 @@ export default function GpuClaimEditor({ value, onChange }: Props) { { name: "", allocationMode: "All", - deviceClassName: "nvidia.com/gpu", + deviceClassName: "gpu.nvidia.com", + config: { + driver: "gpu.nvidia.com", + }, }, ]) } diff --git a/src/pages/admin/AdminV2.tsx b/src/pages/admin/AdminV2.tsx index b1c4a04b..5fb151b8 100644 --- a/src/pages/admin/AdminV2.tsx +++ b/src/pages/admin/AdminV2.tsx @@ -54,6 +54,7 @@ import Iconify from "../../components/Iconify"; import Label from "../../components/Label"; import TimeAgo from "../../components/admin/TimeAgo"; import CluseterOverviewTab from "../../components/admin/ClusterOverviewTab"; +import { deleteGpuClaim } from "../../api/deploy/gpuClaims"; export default function AdminV2() { const { tab: initialTab } = useParams(); @@ -484,6 +485,15 @@ export default function AdminV2() { }, }, ], + actions: [ + { + label: t("button-delete"), + onClick: (claim: GpuClaimRead) => { + if (keycloak.token) deleteGpuClaim(keycloak.token, claim.id); + }, + withConfirm: true, + }, + ], }, { label: "Users", From 9635ea7b5ffdf474ffbbcaeda03ec523356d08c6 Mon Sep 17 00:00:00 2001 From: Philip Zingmark Date: Fri, 30 Jan 2026 02:44:32 +0100 Subject: [PATCH 08/10] add useVms perm support in ui + fix ts --- bun.lockb | Bin 218345 -> 218699 bytes package.json | 1 + src/components/admin/ClusterOverviewTab.tsx | 2 - src/components/admin/DRAConfigPanel.tsx | 3 +- src/components/admin/GPUClaimModal.tsx | 2 +- src/components/admin/TimeAgo.tsx | 3 +- src/components/chart/BaseOptionChart.tsx | 1 + src/locales/en.json | 3 +- src/locales/se.json | 3 +- src/pages/admin/AdminV2.tsx | 4 +- src/pages/create/Create.tsx | 7 +- src/pages/edit/Specs.tsx | 177 +++++++++++--------- src/pages/tiers/Tiers.tsx | 8 + tsconfig.json | 5 +- 14 files changed, 126 insertions(+), 93 deletions(-) diff --git a/bun.lockb b/bun.lockb index 27bbbefb585005d8af2601ae7ba7b2b33de131a1..f29cee4ed603bea4c4cbfb5b4fc3767acb206031 100755 GIT binary patch delta 37827 zcmeIbd3+6L|2}?Zqlnjeo@{_*sRea^3F5%=5JXPPHX0y=N;O+O=SJ+ngpvZ4M=tv++}_aDbmr z`>Lv8$S-%BEiWf2J&jg}!osGx-y>*ch#!MJz(>GUz#-tO;H>1N(UTFlad{bT4p@W! zwOxjDtsw2R%rQyXDK=XR#G`+0a5eBv9gchhJ!sPj)+6*{4J9~1@#AI7n_%mS#m=U|;iwTa-%$$&#Y_lCf zLe%?$nehfh_69!*t^v-TIxb**w#_yZHp69t8GjVHRT&}C^yp^t#3>m$qcg`OXG}>? z&PqzNy{spxO_gu;eAO>vO)Z&tf0T^1j|DT)D3h1KpOsnUWwSM49$+8vJpG~?n43^r zwp|n$0rP_D$Rh6nGgJ|nRjzHaKf-Y^)HT^1%-lAko+xbIIkX?Ee$!W`w+}k2IzBr& zdo-H09Ky3tzlQF|PS3Arvmx!gHzCvqZ@?F;k&~2`mYO};ro(3OccAPXl}IKjEon^h zdf3c(5txHxHkjcCfldrenvZB~8XC3r9HWEx>F_UoidMz-;O}icGI4PsBD)5V2&hLFgx&kn9Tk;*ew14FpIOxA=9~z^f-bx>PPLKxoe@a zj8PGikANBLc`(bm9?V<|!OS(l^v8t7@PQU7D}TSOjCTvEGyFc3lIhNml65){X6f2S zo3#MLzjoeyIGB;K`e6}imp&ymFfD1+e0@@RKjpMuSl%=D@pd*FIw@}uxEACUlh%b%d)7UFjzIXXtFTrLc`T0Ds2I zKtTwR#XLJ)yuolU)t}1>%-myt_NOf+L@-E0A{=Z za6@oqa0ASjylaUvp?6K*17^S#U>0bKsSh&km_&WB7LeNnz10}ru3!egGFoyTm<@Ou z%<>)rdw}nclH+9USlJ-YLT7{NCeIot8}cZ^ar}6s$fapInBy@G%zF^1iL}snJL*5c4gR=OrD9JW}&metjy1-R3-3blT)+($E9VC zs%?9Ik_`B{=@FbIGhCq8ujH5eAyg)F8dtRJ=$raxBDG5#1`Rj0^o zTuh$mpO!fq3q3eBJ$16p1+`=`lC!5wPEE_kY@0MCIV;CDIwdI$?PL2D{^nxgj~ya+ z+*LEeYmdo#x=oV>I)}jQ++r|0yUKJqi(UjXgPODD;TQAY0^DFgsucn1kSb_%oxfW18F3&YvYnSLlO1yx%yzs6W;0y0GJ?$l^gui|QvjI#;R~i-0nB#quS*+y zk^h9`+??z?W(I4)46qo?gmb|h3CUn4)Bwzustjhh_s{~=Ujws!bHOb5c#{W%nT`k8 z2Ye4L#0vhBBS)^WU*=-N{0stXSPW)Dhrn#Q=S}@^k*sn3HF89Snf{Bx9Qrla%6MZk zM^DbeNhTXQGa3pun%=bcV%SsnTqg^vfOFYY``61ZSZDI%U~lLdVAeDN>2g_op$zn!s^?v#deqEi%DCFf;Zx z`6m3?LKxvj!J0p7vo(T!Wvkpc-UqV)JD@YeKd<1~$>~#*vurl5c%#r7^R~-DI(>VJ z94t+qlO?t;J4R(CjZVf=_o=DZ+abFo3(OY7h0D0)V4KZaO+65feLZ%k?2_`P{Tgf* zD0Y{=rdpE(4dtr`a}4T1j@d06wh5T!_XRWge(+~Bd2}6-Dc~e7qp7f^BXypAicPeQ(IKtW^0T5U3B+EhxRX6onR??LL-Ob zuID#)D)D+TzUS#$6Q^=mk8R?#H*~exBK3ksk;*u|xQSES47;5X>vR)`{YzNw_4p={ zN<%%rsZ&{_7vuYVU2DeD#Ns<$&&T&}y||fEb7CctaSNL{v|Ly{kWxAQbU?VC-`uI$ z(YF1e*md|TOLeVUSV$j4HG2ELtwB4|}86`=W8tw{%NmtMlnmd&F zdVWi%@}*vk?*LtEmts z@Q+ar=vshNtAc6V6M=1dVN-`PRL_UD3>p(qnW6m*tPXm7vq+`39vkRnm_Vnt9@Dvl z5$1FQhxWw-i>==PGb`NiD{K<(3Il@!iMh9QXv<)+o6s-~9LjgP7UWdw=&|_jq37d! zmtKtTySf(4jAHS!G`NTTw{#Hw$+!dgaOyWp?wL9y-?0b+Dng(bZSQ%*lhib>{#=< zdU2#v>91>1PNhhX#rIV`AK%e>ag@`(s*%k$TrX%7Y5y6nE=CS*8{>?J_+I*H4EZNv zvGB$ORF3Ofj8iSwM30M!(W0B!Y$@uqTHaP=@;AHfx8 zxctzs-3-?_xUd#9h}2HO#R27M%m{Z~>*!Px^w^G0ZH2!aI5yoKgZH>z+|g;T5P*w$ zy`)*BTPM2M054cSE>6`qSU=GvMjME+$`Z>tyhe}h zY6R%&R4a$*C%VRHLqn|IPw;nW%VEj!?;hZ=zfC_qJ}6TA11@HYx!K5J?};Go^peO( zWr-de>(oYtN?(+{vqSknFOGHE12Lq~39*=GaZc?LEXKF%2|*6Ei9>!}Sy0W3*WiA`q_zXQ1{nEYu!V=eYeA7MCI;SFI<4b%dqp zSR|DaU5j_Bu5IZQ$=v^7Z0)r}Bob^>k_tB4u@5bc`^qKP+rX2**lp zfEB5iUUoXSsnF}~w; zt+!LzrpMy@lAhn&X>W|Ch~VbpJq|7o4D4DDeTM7x6PkLz3SSod&%XQgq=cs0@9^bh zG3u{&cIqb*V(hCB9%Hpdq;`QWcpHn6TDzUTs85XgYCFAR&lv4?JDcq>_+fZqW=+&% z`#QB>FcvvUZF)jOhZclE!?}m`1`~J!tlqGU32Z+E3$w)^OBPzZC)XY9%EkShY^g-2 z+OCrxml&hX>}0cbMkEZ>AcuAo7DtvbY&8`g9F|BPt7s=!s0RSJ33- z=eFUCslmdbuIQ)*utphaah1Ldi|v54nmg2xuKI}qG1}CwGD*}1nZF1NRpt_h2yPfP zwB&gp9+oUhLNkYbHLSL*k@h}Z98ee=4IK7b7#Q6-8ng*;aS)=gNb7T07>8`-CJxmj zPLCTLqx9AD2lF^lJlJV}8%4tw85F5{bl2mC#9$fCAL6t>70;EuWLT6795}EHiL^KA zX)HK!Wx&mZ~M{aie1FEeG0cNqWJ!C>J;q_4rYSV+b6P_9!fSgACV7xab*azXF%^?L64> zT@P1Z!}kVU!wgr?AvW6x!?g=8sZ|_mvyC>ibhwfX*Sin2pkbD_94;B-2e`%=;rb89 zjWok`2rij&?GctM2QC@oW4KUe)MupSxdg63dP%Y&4PY8P38XmfPb6_8atnyWS`eG+ zRO^k>7p2B1PwK^~PObYGn=K2Y31?Hxy2G#%ElaJQtS=fLqva;cLs>bVKe*0KaB3c7 z(dY<>%_rWWjMDQb7^fxp`~)BFF_;E{4zRkn$~0yn_J}OKINPZl)V0ZIbg1U~670}I zCQ8fI*j1i@g`-_ar1l0}ECW))S?3Q}TmsR89UWTRNzy8B90sPrVoM<;54Et^iYVvA za91;61>*$W9%F|^HI{sB1uQOX<&64&42vy=aWgO6HQPGa@~|=ZfyHAhM&e^m?IJYx z9Fl73us5G2*kX6_3Miw8pn^NOQ*rqdojo!3fkiIK_?J$9B;Z9H3FG%LoQ zJKN}K%!Ie#V)B@y)5BeJJCAvC znr(%PHNjCO%%Oa)Yk5w!&Kx~14=1@f);`4q*1+mvC7^u^%ghR6x7A$sRtd&f4qQED zC|s?525X>^O~^dCpBv3!p9ia-9-kPg-GGa8K<@hSkC#bR+Xt(U^uysRe7;px9>ua? zmF9l{7EW>C*+Wl?U4m5&MKPrDlFM@?Ehb3$tLDhY_ot{3W}$!((~s# z?RTXe6ls5EA-5Q|n=Rj(6bX3_E$V^A;XMsj8{}k+CT(X~%l-wdFdor0k44tVV1@d? zGAoPo$;+_V*m4Z1i{<6Itj9oD9Eq~Yo`S_%8I#k6UK~nl_>+2EevG#HNvqj$nzi4A z6=yV4RKbJ#ws6>|!|JTZcaF3lfeY8|d68PJC06_3{G;|-qE`%vv2TIcgIkIH23$kg zlTKE?njcgiDcQuyDzNl2uqK#~Ln0nmN??mB!@AhuBYMj!K<3gWy^K zQ>Ec5tM^#pOjxpK6Hwu!w3w{DhA_vHeF$8`+3NO#a1GSsmq#h9^@@6olBUP%xSO&X z1vdKaDqM10oDOlQjv~F{iWqH1k*p8)i!g_F8dh(kVBE&qtg+_f>E_|CFgS9sKCf_S zZ$I$j)nJpgGG$CqY#~{&*kH!iq&){~pphikF!d>`bCH34AgqCULDxuSk6ygWskU3E zR}?YIGCfu}?dR7U#}pB158Gh5mcoVO3AAtFN-$iGjm9Yk+A6r_E*|sOI<=u&WUJwfjWMwkR!`k6B2v2pS3FX}-2$h>-gPTZ=z76~NNo{Z%mLd$ zXKWwOq5~gT`(bftNWV(kdVFA{RtOgtAkDa8ancNh3BNqtb-P?YP#8?6 z&agreu#$0Mv;-DcD%msdz+xikQFM0e=j4ilYGV|p!J;2R;%u@NRvQ@-Tl&{#NaTRE zCt!yh7dV_?yv~5dc-Y}_9rO|`#>2?Yz?Bay=8pR~IKegDsV~|Tqvh;;aM=~?u%CeC zG!{5*mo?LQ2{jN_7b79w;90L1Z+2>@p@kV5CW^hn^TsNUrO^pjFm!p4m;|doEZLsN z9*BhX;c<^g z>i`#rzqfvRu|s)6kKO82j_LVZBXgr|#^p1@HiN^Dbrt|oT_^FyY8 z91VQH=ojfQB6Nq_1?UBo1F*^%dS5Ua?1oHzPWjTyuPK3pPS%&&BGvg@$+jpkvPiBU*Oq)!5 zw#m6*RiCv@R`YRK{FG%DZy~@~`2auU^1xDnrNNeCeEyD^4pw~Q^9as062ek$e9CfF zC|gbaQOtrpYx^V(V=fuZ^&);8GCFQQ1SWU@V0#_{_$kYF*soK> z=XHPyy#cU>Z=3dUFvFDqOz&NQA2Rh10H*&jz|Y56FO1Iv;lHp|eb{q;#`rvIhJF-R zg5TGs|Njr1Yt-kmnZf@TX8T<;)A>8D!7yl4wyUC`+0?6m`5|)x)iQNYup8_~V0UmR82@Zx{35gc%fk@`W(F~)2e~rrI52y>7uXd% z0E~aOf&BUt(|;s%hEF#A|Be|hcf1+!QOp)ehkrHjEO15e0x5jEFh68E3rw5L zny&#f-ZNl!(KgecjQF{>=S+dj8oU73z=y!}dKF(BgvV(72WG)eARM{G3}2Qhy^AmM zDZ{_3bg(HtG=ztlB|c;7Wtq}hQzxtXu3es74Q=O4l}zV(d{qbkVCrPH+YKSdYn5}=d&nEqv%VkkLDfu_f!m|la;a6`e&fX~|U zL#934^dD*JWa>$#P39aOZ`x#qo8Safcoeh58Ad>yOu(F5*=G1hF*BTO`jhFLYT9L) z(lmbQp?j;=2itOBG4^zmXV4cPaydPHuV*YR4i|>XGkwWiik~p;zheej$S?iyUU~Rg zY{n|fO#Mmd^jd;1+DpxFWZKJ2E;MyA_2po0Ra?OHdKO^bT*R<5@UROIpoiTT}?rw zfe)Dx_~!*&U#o-ZRm)^AF#YR*nO9wt>zUjD%nTZW`5`mo=3s6VL16AMF}ZLsp$=ds z)CtVb-!T*JjBqSioEe@>y*rrc#GC$oOn)*9FwnHgbmk5*1u_#D3T7XTHtjKBW|RuX zKUCcKW-s2|cgBiX6%nupib8SoEptf8JwiRGTECRE{8^DbC zG#LMETTOi@m<8TN(PTRJ;ETKuUo6l|rhUNVLtv(N#IVu-ZPMyen(D^?TCGn}m!9ISC|F#g%<;)?+q zff2{nl%mNjNE_4s-(X|@F(H;T)J&Mn7Kj3~1!7E{OuHSJ1?~)Hye=kpHT`43{E%6Z zUSPJs0Mmbv=@0H;Brq5P6B=UjP%{9T35+srGBX|rWjf`+HfQWKGgMioo^FQD zB3<=brkT;*db;PbVl{|Wzdl`q%ef3EWXxymR|7tcm-+-+I))e!zEV z$Yt%Fx6UU#^J3(D??FHP6!Lo=B&pc$RlNsZtmphTKyP--O+WuzccnmYerte!23EnX z?)Y<|v#=K4cGIJ8cUKDa{M!Tc@H=k$HCVbHac6*j3D&wh-IbO4Wmv0!chlp4@2&{F z==TA7w?EwUyRh&FFnbhmrml@0o! zdjoXW`)>MSSetb1{s8>|tn~Zcm8bQC_Xn&@QQTJgD&3VWD^ryL!b^c!0`pnnt-wAG zTg*}*Y!}58rl}D8RR}vojtZe!ISA(|>=Mn(K{!L9pd5tV;w*)QE)b$!AnXT!#hwzfPOks6-2=V11>=#AlA#|$%;Vy-PBDMmATNHLxfN)6Mrm)Qw z!Z23|hsAbR2m>_;ZW@FmVvq*GwIYPW6pjk5B7_4J(knuEQyip_QVD`@B?xbc)JhP% zDnlrta7=hthH#w1tjZ9IMKOhGZV>$4Ae1Q6k-icK zK_bNi-o762{zjyFK=AT}P(tB5;q8flm&7E}Wl>DJBJf8i1C*;GhxENTO}ZwUdxNfv zIiw%NS<;Ups5a<^$S2(t7fC;f2p`bTqLB29xC|1j>mbYcI>_=jQB()|EpdZ%Tg3W; z?ubpK-^FdxA0nYH=&smKx+fGr(0wroq}mkmf}he~QG`|xsw$F5<-|dfi*TQdgm(kzu3{2N6UC&8qJBeAC6Pm_EKZZ$MDs?VDq;?)syGW03mZd^Zj6N7 zMSf%G)x||p4H3}<-j|xddtDQF*AkZ@C?2AHQ;?@9B6*1$BySPh3{+ceBKe5hq&gy@ zImlOR2Z@0#kdRvoB;+RswSeH-62f5$^@Y|F!T}2DEg>`%2Pveqg5cWw+MJipvyM2SbPthTsrI!4SHIK)6dGLd1qZxJ6-C z2!u#+o5Hp>5QepZ5G}U1fiN%>f?FsArx+9p!8HuRVG8Yq76#z}h4e589mPQkDGms} z4hWq^ssn;oID`@kU4?fzgyR%ug+quH#T2GRK=6-%&|Tz2Kxoz$!g&huqIp{gXDAf3 zh0sf!rLZs(LUbgA1d$&JAv_AgH41%2L==Qe6xKySNEDYTtd52d9}QuED2m2cw-^X_ zDGU;^F%WK1*cAg|h`3E*n-c>5D5twJOl)^T7}ySiTRR9N#GrN%T-!r9Od&~V?I9eX zklr4`XmOB2N(TtO9Uvr&)D955IzlL+Fiv=Pgm9d~td0;;MKOhGognykf-phkbb`>V zGlcUL(na&m5YA92=nNrKoTad^3xwz{5GINIE)c@ILbygDTSRn)aEZdYt`Me(%M@03 zgAm^h!egSS8-#AL5bjdQ5wWolZc*433t@)1O<`LcgkfXDv ztZNSlhbhbvS`P>ZD5Up*Fi#w$kP;8UHy*-#ks1%dt0#mK3JZjHPYA~;%<2gtUldcA z)(e7vF9?f8PA>?}dP6u*p+Ge64dD!hg5D68inA0JCP0WzfKVv%6Ci~5fpCq2E+YCs zxI|%H9|$YOWeThNLWu7RL5QNh5W4k)aF;@ni0udA7KL5?AgmR)DQruGFf0+mIR1^w>V2-;ZO+CLm})H z`9mRu4})-x!afl(48kP}>xMyiNnEC|dN_pm;SlzVqTvv_jeu~M!a)%`0>Ui{yGB4b zByLmKHWI?Hkq{1x?IR%!Ou|B5B}s|n!66BP>nMacoP-cZg*FPp0Sf7(AiOCKQb-vM z!FM!-w?yh_2wr0#lu$S(yvIN|PGQy<2*sk9!n9-v{>czdikxH!&Bj7FPoYFK9}D3O zg@UmVPKmP=7LJ1uJr2TYkv|SXI1X>(8ifx;L<)pU6xO9c_()u)usRh&d@6)bL{TdC zj5Fc}>8ywy5BgMWB7G)qlg^2R383?0J4g&nLsYjkM7?K_kS~|QBq{BNs z9o}DwgA`ISAoylL_(r5=K=8_hP(tB5;hhQLIE7i65H5>i3ezS+@Sh0bs>qoLq1hw| z=P6th%_l)PL!n?2gdfCN3JbF!L}x*`A@Z{zgl9vzM&TzBkqzMzg>~5wei4@`tey-Z zelmpLMA2jj-KIdeOX0SNodV$&gFaS62*)YRnhrq|#T2H^ zfZ#s^LM4$i146Tz5YAI@6U}ErI76XeCWNZuEQN)$AVklC;4boKK?t7>;TnY+B4RfB ztLFZ~*-A%6X}tfVT*c{P@9TkQA4Jju<>c}PF5-(VimNhF+<086Vc&~ey%oj9CFt;t z+Y}dUeb?qI6YP8Z%m_0Op_cU@?~P7NHU85={;s-1+;~D6tqp1*|MQLD{lgY0*%kEn z>eplzLpLLfk^9dtQI;yoNRhrwdCc1tzhPFf$!A-v|0k?Fv`YIYtyC(hj8<7!TY@L~I?6Kn6!SgABn1(H~?A8qqYvZ%H| z396W9KAm={n&??YjmW)sUw+UgwsL40UTAvJz=t*)i}0s_kKGKzUvaHxWXqcxf8mW} zAbcvA8h^B&W&S+vYHIxPJYH(KHVq>F89(jE(Sc7TGa!GS-(YH$O^r`U@&CNzhyPI^ zoqW3Hps7_cHU4V;1HcdKOm9B_`4|O!su>!dG~mMveNh^g%H0fzjB_stW)g;k*cZ0elX8DcU1QF1v6iz$aOk0Ly`;z%qbOzXkxUfIy%L z;1Bo!Re|5oVmE;wfolM}{ukg^;0Ev$a2@y_xB^@SE(4c? zm=18vOasmXp8^+wbHD|Fk9dCpd=7jCdA;7=J9m$2ag-DzoWkOuIz*ZnRQllmw?L!cbsBDU02 z{hGMJc^zIq0AoHvN~J-`>J3)Bai08N2rKy!eTzBbShXau~9d|m^N@Ig(k7XJd?0^SD3 z0;7P9Kxd#6-~f0hZx$-UKe<>1EC-eWU4co!L|`m17~n&dOVJ2PzzBe=&v1aZCJ)2! zHQ)$voDVD(!*K#Q3G4>=5cQ`3pCsj@kxPKt0DtWp0SpHg0{ra@cN>hS6MqNa1^67^ zVBlG}w*lLMoxm>Od0-##BJeV>A2@=WEUKsbTW}r&jsquv67h?N8j^bsPG6+Phxb+k zn}9jMTwor+1(XlLXQNttmTEM>1#|~$u^o69I0d{1oCe+pN`TK0hYx#>1o8nsE_o1m z1xN-)0Ts)kZ7RcY3V}}pi-5&I1~Nzo#sME7u|-IrHNv?8Re-7hpI`q3_!!`0T3G-e z?rHT0z5JiCHkW0@o1dYv3cG zK9CNi0rdbspf2DGTtvLLfPVpR07rq>0S>Z_0RIwa1F#M#1fB#I1B>A0>8&;|7sX+` z6yS1K0IUVp0ILB3aL88xIPATF6@U(K3W%V3s+U+%N39veVBDxHmEj`OX61NZVRBCa zOlG|}TSxUv;%M0h)Hmgq!A}F50P~DoG%9hBgFT?%0Es$UCeKvxXK-q|lz{(#4STHNx zD`t4wuL6fmuwGn=%BEp8BI8@1jR<3*jc0nFk9pakGba|+q^;COpgfqO@ zRNujkWy3g+sEWv_r;e@I4K}0HQN-u<)KR&d%N+r3G`*p>2RngeU<@!ENC0?98U_pk z`U1UyUO+RT2hbge1(<#pG7t&y52}IzK9<@NXaTUznu42f$7=*fL!be`LN^ApP)wLl zzOqovoF_J(+*$*HKnTDvp+Fmxxidxp;Xqq}6|*YU4sKSAjUNqWno)d2IR=gn5IcZb zO1is(Sqp2+Z3~Shj{|xF@g~?ZeE|OTSAU=%kO&L}Sg@hM5P$__fd>O4fe}CwFe(>c zqX8zE3XB6%fbqZtfGzPZz&(V^_WQtTfcp^Ra9EuLvoPcm>D@RsuYnF9MzhR*OV11|wD0{ei4zze_*;5lGBunl+?*a|!Y zECuER6M?c7%7M+ovXGMi7Vt5Em15S1lXi>TeV|B zX|tw(W~R@)*dh$i=6@W>UB)lK8W>ENwPUGS<3fOmvG1AiI^Zc_El>oo5UT+Ju<*+P zcEc)QC9nd}0j9w;$;27}>E{}WTD77FGg%MN%>vM-ztvJK=th9GWmmDO*|Z!#W&7W% zDF-HN%Zjq^%eKN6_CGzD8Ea0r)f#MtvYD2(nW@!c)L8(==g23saJx+R9`IgZH}E`Q z<;B+6!wl&0kO-TJFd|D#H!~r#nXN)G0geevV}Tfkt;Rln8L$Q-Ta1Nd9JbUxfa&Bi zV@6~KOpKn?2nM!V#IhNdiPL6g48v}C3gAGsGC<> zd?)xGPyz1Wz`p`2+&198>30i!2e=LV&Sm8fIPL<>$c}&tP!3>37oa@A^Ou!5GvR$e z7N{Fg8SW-v-b1u1!b)5NSP_O}7^`wjrx744+(_2A83Gc#eZboYy!5Zu3Sao_*(|{?&! zd^sPHLs1x{ep5IRAe2}C)e+#C>K+@unKY-1QQFo4q4J`b70q3Dpj=4%jOXDKgqj8f z+iHsfrft0;Dd)F*zooryPeOn&6wHCclQ`NMHS8dM0fq9<+o~WTWze*ymv(=%lnDj2 zVHvDwpln zfk+NP4tUC=kLrnBhl@!a)mrutRM*Hg5Y8a!^u`ksM&Pl+y$_mtve*}*wp1313n8kv zR*2%W24jWN2A(5@52%jya;JVl`reN}Jzj*81*5GnC|oLu-fdJbJXVp~Ms2Azz?F?J zqBj=n5YNYY+0)4}x9b;n{)+KJ0$37TnmCQ{4X0K%u43}6*IKEcOv)4OgIkt1@;kyW z6vN1RT~u1s&gUn8U-PCBpmjhP?r4bgP?WT*I66S}a0zDJH-(}oGtp_RiS!UxLsbW! z?r~!qCsw>z*zaZPc&4ybb>uIqKM&{cODu>dsp)X>TS~{n_+E zR-=TQ1J$%%C3Vv&+J8`Y$q57qK~z+8rf81<%9COUX@i*JQ0L%>`QIGsE}s)MWn0}e zr_c_V$NPcJ!>lIXu-`d)@sn2*9#KnYk zptROYs=n<#ywQvJ$Io~|Ya6z~3J_*{Q_N|L{Js`zK|a=d zrn-Ka*15&e{Rd0Kxr@RgjLUFzTwQS^3Q_#Ug&2@gNpBzPO<3(}Rp0()#EPwm8H@pg z`J5mU@Sg?a(Fy$LQ;B#|=UOCU1&K_iQ6%b<_J~N3kM;Jf+wRE|?zJi5pbH8JWk;I9 z|6^@#io;Cr-wP{CDH=tqwH294*+A0Qs>)xt<{WVpt%)CkbK5%P|3+JB|? z{8uNS0+{3hLBX;Do?>u}T1PS4&&)Jm>_9X6{B@>gJI@otii{QF;dUQgU#_EX*Qs%D z-Q}uYr9C!9Bsoz^UCbbD5G$Q(e6K+b^7Pwh`YjEQNo1GwQHwP+QT{`d_X?do4-a?_Ut;i zdh1VJlpwSz)(_hy(F*}WtyhKleLa6=$>n;3N&{Fg6N`TC!0306b!%Jd6DZa(ZR_o0 z_g?;N&&MxbKUf-IoH)%gJT9)1HVbg~SeTMb5lU`c2|^f~hqqNs>jh+^ zYaf62(6!gnWpi`WG1|FiTbv%kZRgPU)zDpGTaV4}ysi@`E(+v8r&upGd;VT(3y(i$ z7r=)H3hc9Ygax405)&QHea2QdNG$85 zdZ{gf#B-h0u`*VOVwTm|WXIyj&;U?;%yPw1#K?NTEQ5jZQF?1U9e}F zJHxIn*cl$|oIAw*E~>XG_qAFgu&e6uxsC#`R4rDl-%|OjKlZB12T**Vm|KXEdM&Z1 ztLjq6ddbx^24&| zYDy#)yE;gE6%KfuHz_&Auibg+rw>dYF(*;2^|yP6(p#-BhIUtLi}$->o!TgZ;xYEF zi^A?8v%mvHWGpQ62=JW9gr%D0t7E-1ZsWo75z{t5%QGFuML7CWmb?WvDEEG9WQ|Ad zT(c69?g^0)hYd_NdihYU-{(a^90vVgZ}e&6XqgB z?ukk~FRqe~i1c2nx2W3-Jt%#AtheZO%U|pE<(pCG5Y;@0%D}2yq*&NX4gQ%ENHquP<7){FRVG}t$DbkZ{~tID(}Ir=uD>p1kM&YX30Rk*RTf53yYrlX|0| z4+hkh-o`XzV_74~9O*6WOORT1aV=JLc>epCk)9mZ*g7{Q;2`|pX8O?Z#S>MIM75=# zksM0=cNtZ*0=116&-YP-<@EQ)bBDk4NW4k}_O&R)=ieLWnHYJE^q;4eHO4Sq68~X4=xrmZi3iBdRO?51$`+l(7Gya4}8#g<%5E;z$J>VgCIREW(-2f_I8xh zX5OCUQ!OHT@dV8M7n|N8v76z35kE{tLUYAk2De@f`T5H`s*din1$zcAAdHLT4I*eT z!fhAb2dnX+){9=_Ub_Fq=R?0pL^y1*Ja<_yot*xeU$u8e`{x)L2Jw6|UX&mOAL}iY zzhvfb@E7$X`G`DfEQ5GW)xekexA!>@e zvhY^c?!P)jEvJN9Z+I#U99+=krRa#7%9dC;nBD^O95?&Gl4T3T<5JYJ!<=yECjjZ&X| z!fiO}YrS65>&~5^J}1JGO9Px2?GXS|eh8?J^?FJ-&rX-uKR@+YX*i!AV%c!jE7W?S zW$MAGZEeb@e_I;DdgbM3^Tu`wTJ`DCQlCU|o`ta9k-4Kw>aZ+l)2B)U%ogq=P>7YH zCCJBm$!6Nf&G$bpJlMW8+z~MX0Ya^}a(=gJ^36@oUk{ZAu-@C*YJz8lpWYnbrPSvR z9>B#Z(t6Qnu=}k37hmZ!sx*N0Do{Q0`-bBS*5EIQtk!kJi$6wSEF{Fs%Yvid6mF~G z+4Z;55TixlNR-QZ+o-F1Ov?kxig!u_SnneZ>+#OZo0h*gz0@a4%o>R+`j|v{ggR8y zqx!I=MRQ%0HUXib+zAJXlStdgdW~knn(NowZ9ILiG{6dRpP5_l-7G)({V{3p{)Ee8 zD+TM#ockKP3~PO9evML}Ya%`gQH^(bVpJ|(diSaQ4c)Jl2C&}td24vl>^4uGxL@j% zAl4$PkM(-cYD*hkPkFL^nOv8OQ%u`>pQxkhuJGXB-$RdB#j@Tw+IZ~a!{>eW1IC)= zb3^!!LR9M&r6(PIw|%>)V*k={v7jRU!gHjN{FRrcb@8aeK0A#^I6$ z>kmBftFtITRG-TTfV)R|>z_E(aogQ0yn+am7d1bNqX>X!f|V2$#(HDu+M-6U#p}=V zZVavvxCVNT7S)n5Y8#H0XP3bX>Q9e&>DRZ6tb)R@7#ep+JnUE%TaOmQ8Pj|qt*JIw_tQW<$ z4eH*n_M8h0$4vxzHW?%KjK#4fPn4|1De;f7IO>i`mh(wA6aEe%XdKp4*)RB`jNEbP z9_tmcgN|IcKlS;wW=4v}wV3s?*Z~P2#t*w$e9_DctvX$lFd;M9w?!{>f{*p;*zi^U zE9$>l9sNAp+<9dH+^9-TQRCGv6U2cObq#JG^i3@-%_*@d6&HRz#1E;ct!zN?VJhxT zSHoXvgpS7%u(jDQ-p32I^Yi!YKzZb)ukDPOG#;^V5j`F$8jb56YQ0wW{Yu}CnxXq2 zMQ}7!1lr1ap={C{_225c+WQyyw84cxDmGKNO+Z4DM7s$%X+JN9Oi<%}tar+`t94;@ z+as>HiDBIeTp-?@fLvuIMYS}}_LNZeE&W#96PH z?VoV6XHvBnkHLrI8wII4MLeIT_E24>ia*jYCarhjPKaKyaMB0o7}C7!eN_aeBd=dY zY&uHunwSMkb(iY0?!x1qcy=H!EJwVPj$}IJ$eT2xp|jPe8PV9`x%2W`Y^b=; zWU_^K29jAU;xmkP7zfM8dW&bj&!#tPStop~s;oyk)sU_^ln#kg2p(#^{c~U8Ue#^c zyEe0;;dtl);d$ZO(sQCdv~SLJGhYl_<66N-glDSN@Mn#&nK*|2A|_;_4ppX$Co5Zyv7kdy9)Xn0)XVEHWpe+}7((-wXR*>3OnNoEa69&w3&1r}K__dAxgr zy>3po6=DPvK@GNwO+2>k7B`R&w3`oYBLGXbiCn!ifOrFZUd^ zW(7kkH&eW~5CyC}Q!JSTZZK19o1_M-t!9dIv^&id87z3bP?ln9H_O5h8z_9>#$SmI z%K}XnC38TzqL9{Nu_FsZ)_NPP*Zku}uMOP(RcVXt6-$>R+$-YrT+nfGbhgp3sLcB! zDI3y75x4-i1l!nt5F7Gg-x0gB)sQ;Y3uqhWc4_|8_w|gc0o)%#OZv_d_p))1$$Dk& zg^aJ)wr+U7g_$Qtbo8uMGf;;fqWfgDkM(NY{###K7EyjBt}fBAJON@r`@85|pEkn)OqW2Uu{G&&X*f&M>Rb{6I<4-seW+F|a zZ)%n|etAh3vlc+wE%uV+`0$CyllSNAyWQA)yS%U5Rg9I}2oPe1v#tVUkN#CG3{5$J z#7k3EKQZw!j0l;JSuSg^Sjm~A)9hY3c>U1de^Dx=ACV`9PD6(oVa@UC?K5_+@#I_H zkNX!cD{}oN+-NiW?t`a&gfB;mIUCGt8KaOP)GLtld1_)=4YR4Z*U1KX6Q$2;zI1Ww1H)p|+vm89qG(UZ4+RN7tEYosfE8F{6X9^7+Yl^ou7|d#z zL*rpf){TqNkC@Y9{YN-fP=?z5jK$>sQvy#g1XEVa8(Utr+Vd zf76R7U51Q7XEeNr9T%78;^JeyL;HBABd7K+jpQ4r46|kzMBDg6X_MRL#X=E@za7XqT&o z`Fy`no(MOd7+3AuD=s6Dig~a4S5b)2)-aHjV2R8oG|0mb>&-KZ6b>X@Z-JAcC^ zn@J!;v%Y3mly;@jKW0^B$M{$;0$-`@D%beSL6?l$7>UUI9?T^f-c0M^eZ(7=_t=;C zYgGcqzj$E|MuVKZp~o;;YGT*>sLt!>`o8$DXUz05+*-|)`|#!}s}D{oIMl8*XSv{7 z?S;BOyax4nuo;+(cb>S4HN1}X&i5B~m)AcG>aw^rK{;an6pu^0*{0@%HInnhrf3dK zt6FjqD^q7-iVrRI;_C%!?LW6z=~y;*@v#fb1Tx!7ruJZK=`VV5kAHY&mE-I| zBbKHsN6z2uz}DJfcKkzqXsxy8es2ab+pRPYbCiTUSclAjr6FXhB4%;vqG+~JX&Cdg zVk|7)YT$fvZZX!Ge+wpOowdFiX?b0kzUI~Xg-NfyfkgO|K2{?$Pk9(C)APof^XHVq9=TMD zua@9v26M-gQ^Myjj$1g$$dM8H*Yo7BZ#F(H)^Si7_Z+?dqO7I!ntPPB6g=2$f~}cs zHJ(v_<3#;nQ1LJv8ir#(pOdNOwXT(iS`uTlm~jX4aFJXZ$ES3?_1G7YuNWO-JOyGL zHH|g?krxd{Y%AY~nzlTj38=qDyk3Z-vlZgsN@i5z!D-zXlQj_&8;5x)mPe$&OTb-6 z`i_-_Z=T=PnrlVt6*y^{=VxoKo9l_3GQ2k-cePsFQOz+Thk&@Z zLM|hZ?5GfPsHw79N-u%_s^N?fk4!4~;Zge_Mf_g|8&|1bH9gnKd%Jn}Uh{0dispe|yHG zWOzDG)zB2!V(C@_rFji%>k{kqvJQyRz02&HB0?dr4JV*yN}47V!l_$Olw-`GNsvq~lpGSUOD6NU^3EvIc)V z^u9Q<9zAqrt9*J$J@>@S)%hVA{8iidN!X@6EB36xsBZqO7`agm7JsZ!Q+$r%W*#5D z@>9PYo^bs-o^czFpTN0%?hv`SWo0Jo^ViABTU%zhRZn5yd!&duPoel}BJ?Rd12uiS z%p%D7OyimJ+-oBX{$_%U#(CoOQ#g8*e@=Xl@ID^T$@>>aTCM#wGSN$3@#Co?K0oTW zP7P6;JSY0C!|$g3J!OiCBfr0YXIav(NRba8;RuKS!C@UzthYnFx(+4C5+AL@HTT$^ z^7^Qxa{PybU;3drpTfW+6lm<%L^K<%yqWXjF)Q}I`f2e6`IrU+#O@MV>v03m_+7_p z4czxTyB_87-7TtYKsK_e>iqRB$|k$TPzE$^8`d&9G-kJ02I)WdmpHdU?P+GAnh9Bb zXtp}avuh)&{pTL8xk+skdVh~>tQp^rD_L0mY6CuCBA=)E^KU_=18};SwMq4^XnR^U z1|;tCY}}-FaUV4$!?0hU^ZE9Y&m%t^CvI=T$jcJmn^kA+m?SwZ9}f?GN10aT-X1gd zzQp}mo7FhAd|Kw1r0kUaFFm71wepZgpnsrr_{#?)LzmB>HHd_xHZv_x|zydfNM3>%P{#rhAQhpB?+v zJswxeJ=O%b3x6|8`}ysW`_?`4c<;VLUwtO`++)+XT>0U(X>awM(QzEb!1w8d{fGprO#CroLpf#Y(iU(!p9f!{R2Lf5} z{ZLr3=V4!0DMrmuT2m11(Mo!v0h&$2w7k6h!s+QsXT&q(_CO}=j4x)GmYX{*GhI=h zKt|+y16lC>NbCR>1MdRn&7KlGHBV7;q0=rE$n+zK9jg(2WkjsR>9cYQ({d-J=gi7Z zpP7=SlWD$C>_v4GrC``%9%FN4GmO^LsH=*tvmB=O~D`isp zTIeje2*|-P14z38K(w$V1L@e8BY_+on>0nicqy6H+N@v}(9TX@hX@up3y8XuOaihc zV5qdz@{gfF+8>bq zi0xuFQwOrb*MN*45N8$~3uHNF#q^w-wbfX?ux7L3WiB(rIAp|*2?4Tz&RrD+eOFQ+ z=mp%`&1~6vApN-**a&FN!5Ppw5N4+5L7xyw3hP;z03ke0GY6PZ?jA41KEP~nKN@|2BjAS^fA*Vz^*R%L(qwj0_nkC zea(EL5zln3^o6y&9YYe#TqjS;oXL)vo|~7C6;jF7_t)|+?wV+ND+tKOIDl+qEy-UU zpeR@~N-BWlUjWkE`+&562uNqG0J6Jh0cke@NW1=0?*!!FZ7TUXK%_4&`K7;^;1ZA- zyeajgKxVKD$bxhr3o4fJnKFKa)O!G#er9e~)~xA@a$=OZKI{at0rvno?{k2h_rnby z3yM=l_{sVA&uv0AfcW(IK+{z>W;Ko9V#xh9^0UKjcaiQ(vbPNH@|Ht$jJEPb=Y%)Fo}S-GiA zlu0v8!v|!ZakOfdDi3L1u{ln3+B$yeH%#r7?6IitD8D@oSK&w?5P4cEh-`hE<1 z;+c(RMGpas>8k8aW)}>T*cs>m-wMc<)&lwizbP~M_khgkIFJSGl)4UN*Q@~2Q$;{} z5Mc0Ew<$^>^xfOd@?PGC^J*Iq2NA)R|Msw%;UypoeqG`&#M46<;YP(S>`;_e(6<1& zV=M=X{`i>b?{h#l>+Q$%FB>%VJh;y+e0qYc{Q-yP1h)evUhC_s z-E>C_mpVgFYT?p;tf6mc5w8a76`;oJj+QP}*OTylN-xEC4ZQ;2!*oY0m%3I@!uKV; z6yL4%idHUrQB6hZj56KytwWvmL(qCcQ}vWqPSs5>ZS7LK>J|8&tvlMd)O~tV8<)MY zyQ0Lxs-d0|8m(7=SqG-8k?vv}r|n&6-Sp%(v1((zw5>~BtykdtCEXFo+9ct7qF##c zZF)tZ%N~y9!%Vw1(5cSUliIn|XZ6x{F8g)Fj6|+BJz!n5?r85)PwPqeuBn%{ciH=5 zg!Dsf4LzWZ6L~p0xa?noV_voNly*+FKrij!Qs31p@ExE#I=a-!dQwN1Z6ms7q@LWW zi#q~+E6w}pjv$wMx1NOWr}WYwm-a^k{ez%*b+_&acG*>o*nu!s^sQ~3>L9%o+#+zy zKtp-aZcw`G$$_z|hn^JTqDhF$z7|uqyJ2#%h12#nHN9+TtlbMUC)(h*wsP7Np+y;5 zKnJIN5j1v64IOFJ4|GSEORcXb;oGH`;(Lo;f$wX&Bb=oq;rnjA6yJyR3VdJD9T6`3 z49rxsV*`Sn_TA7bYoT7%DSx@TZQf+!^CzmZ5D?v0_`}8J?(h0Sw zsk4TULBkASQ#(4m)#%h962{VCB$hT1g)cC0SDRUK^wr9sxRxMQ7$!3ufX@S zy2I(RH}JQ*Zfl5B9ix{zUA9NSb!EA>Un@g{nkq^cgIkGEPoq{9v&6 z%a(#gp}X$isf!x|;d)tMtoBhey-8ra%@6ZyqMjVx#SMWmMpoY=G|9;7A)H$2A{(=^ zzYC3BP{YW$j-C|jvOn2EQHC3ZvC*D-MXXCr&>dY|>MA`6-yi9v_zu-8y0~mButJU3 z%R0r{zCftAQ9=;TsV=1V(Jux%?Zwbobz`onM|DTMOZ&OCJ|;fi9@<7xG7x19T>E-x z9NL;55aG0c0?q8ni?L4CPfv1j=9ju$wx5d*Q zwWprc!)0F!p1RgFY_p`Eb2S-*|h&2&sCqj&N5O5vSYmpco)YHN&PC}> z`p4V7oz{q>;T*lRzsvRlxM;nsf2{VKQ*SaL-X4KvAqFY$;!Lw=K?{YZ8H02qG%h$s zNp?4w^?;@tOW-0sDbb}p8>4SXjJI>daOA-YL9CKvpbP6^(meq7iS70*l}7rEA#EKq5zA`-IW|+@ zKcuaFKVmsAjMi(v#p_Lm#@hzK9>cPIth!Dw9qQ8FaOocmjn`&&)yE8sw?E!hQRW~C zh7~4H8@+Ux%f1_9kn>Q{Q(8LhUqIvZ!h(W18i1iQ7@9FhZ8M-@LIlOyjv+LVD~pPq zWQ5DU27aGxrW)$he(s@f7!hv|@2M!gKw_YVIqh?x(b2}RwI7DYVTod}R{jc&qoWoJ zRWtO8kuG~FlCmP^R{S9LhH`0f~YL= zdH@$WGd2UE;Rg2%LT0SnAoc^(4o1jK`yfL7^z+GFdKl9R-DX;6 zA!J$~uH-n52kObmUDP4^hGdr;R4mcsx-ej-3LI+HAPXUrdlDftCuNvbZf}J8>HaA$ z)wDSa-Lz>n+)9^)kXfta2u14tX~9E}vBSqG$}q!jCql_a$Zf2mOfW)e2$|e-2&EZZ%W+n@ixC2s(Z#Kj>YHpO zcm$y-MuNKI6(!vW%|OV^_zffEkE9cr;C!kPFspP4lxfv-qE*c@ghnwBECr5Cm#s?* zw;liBSS$ynnJ(?U6#awDc(uFkn2LkdBpi@2pm6BK1k8gr!qT*plk^X!#@i#)&9hex z9yC-ebkkh+)8Gcc5aT`3sru*@(_Ctr?#Oc4%P}#z%^)VkseL(F-;for^_`+`=pApr ze~LNDFfS1I;S_yLcD%iFM&*Kl2{9WQIuHBY(+FV|S66O%zt&WW|J zL5MR{F?NX4)Qp|OeJX|lcz5GSJq8-BkOx}#AT;xkVN9N>dXwq#wp!DS%>*;B7eeN& zMYMfAG!~Cm&yIG7!j#BoakP7uH3yk#Dl{%M*lI98AB2W2rKFxw{26H2ol0u6lJ+{; zX6p@0b%I_x(`A1K90mlJ7Bt=`hlc?+F9RX0Gh9L1;`j%RWuW*Rr|lEQ85>2Q?#Oqk zxq4DQ{GMyp-c1h(ciOK=&E0TMm+5qme?+Xk03mak6&rL*ooIIt|+&+-ol|&nZR+sb#vO$YrlF*SyHW zUNY3F&eBVZT-t|4`Ugevw#WrWFJmIiLx@F~d*l&lp=PGonyx@&f11-bq}Uuau!PHJ zK{Ml6wa1}xbQ_konkBpn<1`zG5SxRuN|aN5Ku;=hX>XP28%l7PTWD=n%wRCI0aga~ zjnFtijY`=*frcK#01LU>oHi(?ozu1!+GwMgD+moX?BNSr%pz_xWg}v3I}sYECokyY zzPMV3_DpC)&Fs;VZ=lIm&WUzkQq9no11;K^`8yCYjoA2)p>af^9!Rp(+Om1{oe51E zqLcPOtMsnzOK3QAjEGeS=oL#`wgbzkV>`8tS#Inv@Yqub$+=MCw0~cz@gN<%!a85i$n`tLlDFWm_@WvY^q;<`6mzZDge%>a8>fqB#u31tdxT`8+dFNct8sGD%X-DyW+60EFDr?)zlxCQ zB%FXW+r4^|;CS2Ed+81AB(|Lhjbn%7o`PeQ%Rcr#Y>j3;2V=d0CTk53yRET?5!N{S zP-x~j<@!u3(;Q8=5L_MeuEZxf8{WMmIF;%V!b>J zZMcyxV7k-puUmd%4^4r_@ovtT&Ct3-!({I5v|WUTVTtBPK2W(J;liW{8ZJQ4_s0x_BgT4xo<2I|mgg6jgznhI!UcQUT^gH~6kpz(94F_(+=`Hy^Ti0Kc6Gfz=7D&7SgF|_EV@xn z`!Z=J|CJH#~E@C8ned26%J27WO~flqwEu*jW*-3 zs2zr8_B2Yc)!S&)xlgP*S$7CrUvJdMhe%W1m_t%rVoTCBb64zmR8hP|Ek8avU0h84AJXdH=1(?8lB3P*-vXsfl0gDN>B z*4_sp4s5$|qhcX6TA5caFGK5Oq`8QR^&7NEXmyOsrJm*HEXK~YF4`RmGcoSS**}NI z6$V!m7=$ezHRH?+m~qgUB`mQNYw)1zMG_cS6Jdgv+Um2ywzU z)VJbZU(0}9Oi>iyx=nUp+J6!%m8E2 zu)_>C;&E-GDEgV5-o;Ffacg|4Bdaq3!dz1&rUUt@juqHCUsSuW$B{2ucPjzIv zT=p>yXD}9@>d1ogA@uJ&2tPzsk2~V+$>a+lOkDy|_3R_w#Rw>i_=OLVm01R%^>PS5 z#F~(MAxymn!q49!^LfCqx-&8#Eae!mW}p)5BZLLR_}mFqy{O!~n8`82jp|?`8lURO zc+4cj6$gNH%~KFI>yXr+2J%xKZP1S!tclF$1cc3b2}1p4{63}7@HB)Oo`LW~B>xtK z1-=X6=f8t2=zSygoe;UJ`szoU71x2ur_${I1+qDpW&U?SWBB}?f#JBXWd?tTcfsZs zg#P3g+phuXM;nlQO^LOr;8ROQ`82f4h}shC0LgnuLn0?dBgr=gdO&Xp^aOSS;(sNQ zUlKXsabLj5hff^wL#zu-0Mau9ixF@~U?dR#E2H@JCuIBt@JujC#{V7CE>qgw3F(n6 z#5VvI&qts(0!x96SOH|qR|5GVGPp|WM7F#X$aLF*9NRl(Jdx?krA}l6_5k;4o0h)8?e~^JuvHyO0v;5my z;)^WX(GC9_XsqG?8wK5=LG0Dy_K0YSK%z9Lj-&=jzB)1?pHw9dk@3}$V`jMIiL@I5 zBsEI%5{qvm7?&gs`A94ij*|(9)RSfW1j!T0Pn0^5lQdK6M8;2*`t6ARC&3zLOT!!> zC)Z4w;7-U4^JF}cK|a&VPjw_UNAg6bE08)-)q|d|)sF03$r4$cBE|w2NZvqw?|$zX zuE|Rz`*%o_WzvqQ>K;#+N1b~lOJo@AniV5q>1KyBSG$SY4C+KAhPja0!e+1FJ^F+ibMv##TOUu882XUjOpEg%(qqzluyE)nnWh33!MwCr!;IN(HqEkUm(lkpBWIFNeloozZO7#h%7h| z$Q>gT$ekt*$b7mLBft!L0QvblWX3&V$BHFLdm{OMK;|<*#t)J4L{?yw)QJp^k$N!$ z%wQ~#eUvKoG$0Gg0OEgTn#3F+Yd#Z5`$8ZKo+slM0GV!)#N|NRuLANzr2V}>{9mlB zm4pst!u3GbcoUEbw*m3L@`&Vj16kocBqcKVIKGJd%Mljvq|^^dd>Y97o|XCu1JVC4 zO5$Z8Tl5-`8N2~xU!9ln9|M`eXA&<<{958Qi9Z5a!JmNa^P4~(OFWR64Z91-_(nh* z$G-ys{IB@qiv}%$NTakNDUlV4kox~kMkI=s3(x=dP(dp z=}ljG8P=uq(~bg%bE;i*%^{2s`~k-yp2@T zBuiwDSwLFnNSrR?iK^~@D8$&vXF=mNLJ5#%ERlE*kRKwhs1CI?R;T+U%b5S=i}o=_ zW2#-Xvkt~pJR92&!n*x)(f-dxJB9&1|6H`2e)!ac+in7IqFNheo@=yBKkt1I;t z*GK8guY2fMp{>?qZj92SZ+PfsH~Oph=~tj#hL-qifBc12>93>o^}l-PH=*fz!f&JW zzQ1|sdw=VX=hJUMyACb+_x`HT%YPrG@A}h-^EEW8w&j!zBD`gE%fSYlFzB4dM)m6T(pkgijq1 zMRh>DAWo4uNg}8&h?hiRT@VFzL7XS?vS{Z4BG3cGY7Y>nLj~mraf8Hl z63Gogyf4Zdg4op%gvVVVDn!y;uwh!g}o67_eLPH8-X}4j*vJ^!ru$T1(E3m zBEt*B84?$Tqp>#L32p4)R9yB~j=NqQD!(c@kfUc0Mq?EEW>3hzi1& zA`Ame{YtDLd@U{#u8No@fN#WF!nfiI;hN~?3;0fy622GT5q=N}et;jvR>Du>20&c* zLy^h;DDoFk?hpRDP@4j7h$O;3fiE0BoWVAPQQrnJrLeEzzzecz3aoU>6mH+9IqKppIBUs4FfK zJVZ=uKs~XRP+wdDh|8_PC$>RGo}#o3_=e&;!d)VvEu#CjMfBdbi1rdUK&XwykU)U9 zC@1&`wH?4Ak_b)2euA&Cw+Hx%6oS7v0uYDWBP0I~$f%jf>;NL81Bf#u0)(R@2%nB1 ziaLU5DNd0%Ng^l+L~BtP1fn1a#CZ~JMY~`Sfx#eF2ZLxQDoC6q5f=iYgIEy)VtELN zt0aO%Oel!xP!MIIAVS0y5|>FNhJgqZrC}h}hk>|BB0?mDgXkL$VsAKzNO6P2brQ)D zAe^E+0>rKe5FVXC#E7I$AVzlrag0Q)ut$P$j|7n&2_jA$A#s?5e-sFp$czG!5e4E5 ziEhH-1mWWZQRD>CL!2UUl0;B6h+d*F8bm=fi1Q@+h;}g`0%Jg|jscM%DoC6q5!V?+ zf3c!7h~=F@TqThxVq!r=zL_!>hzHuP- z#(@|iZjiW6A~_z!C{Z4duU+vVJX|1>M3M`{XcvfMB*qGRR}k)9L1cFYkt~joI84I7 z8;A)avm1zvZXnK(ND+?iAbh%mDC!O(O`IZel0;As5b2_@2Z(|mAkLGRBHHx?5!e&N z>YgAnMFokoB;tC3m?l>A0Omk@hzb&CNyH5Xu~MuU3}X3U5LZd87BNFWL=OQ`HUz|d;tGk& zBoc>$SSw10f>=Kk#7z>qNEim9?=TR1hk;lpZjiW6B6&CnA1j|Aa95=8b$5M|;BiNhrPM}gQZGDm^P;DUCB#8%-L4Z>$Mh@#OTwu@6F zPLc>p0`Z6_Oaf7m1mZl2oub_s5P@SrtR4fRTvU)aOCoM8h}~kvSP;v{g1AazuZS53 zB6=K%vT-0D7gtDJCXtv7V!tR&2C+UF#7z493yd5*i%5br+~;#0dY(mA#peb3whI2wI2@-sUR{^VR0rE z7AJ%w4TMh`h@vzQFNjklPLc?k1mY!8I0;0-BoOCGye!(Kg9uCqu{s^ZDN#YD zRFF7JB5nqVuf&QOAePSnah1eX5i=7+^h^+CGeLYSu8_D)A~6rdccL^8#QHoCH%a^; z67oUx%?GhJAH+}M28rt=l4pVVMU>A1v1=9xkJ%t@h@{ydM$ZOujKpukJ_m&R91z)a zK-?5ZNE{~NU!eBaZmD8wfjUxT6o5GchG&XGnD`WeC@KU|L!2UUl0?v45H?Xb7ev8a z5a&tM67A-J2%HCE^*j)EQ9WCHdK`fsS;wlLb5mN*rx(K1NA`tb(6%v<8 zBrX8qDM}ZBSib%I zQyvz_mZ)FYIyc2X03zO8td7+iv~aUq|CHT!;kis*WMa4e)vA4mF6wHCrrs+& zA5`1gB2&@IO53hxffLuGz|W^4=gJr#BgW&!ndZOe@fxr}W#k*R{#@}IHp6|D7VoHH z%Tm?t(DZV3OM30)@;36d`l5e*Eylc6{KqZx18*rBe8zjB@R9MMj{gnmC^KhTPcRfUWUU%V4t=XUCo}Yv z93MQMAY0NFyAr?C{KjGu4T`OJ%^K3+C zLFOV{1epgZgwT1jA^fGj05S)X02u(`jS4=g5DkfeI3ZDxNC+RDpg(&;`aohJT_K$y z-635d{UE(GJklPAKzj)PO~WV%|K&{nJBU3XL68tgC?p=z4H5=%LZTtzkp7TZNCYGj zvQ|_y)LLRwzu8c0=Kl#i^bzD7#E(kQI=7AS)rO zAgdvZA-y0Okjan+Q4Tl;vg2tO!RG=k$c zBe(^!4YD1=2UL1Mx%#6w)5j0TKr32x$l56E#QbVv>a56AUURv|DCG9SVx^!SY5RLC?4A52^VSqdqH@QKF~$YKbm-`$Xf zke_OZ951b@XLD4b1w@0?fY?Ntm)5M!RV+5&K+@2@kAQp(=>p^f$cK<~kRMg?iI+CH zm=ETD5BUMo7+G`na`FX0I73@Oydj*3oSj~fCJ z!pA51$mDoPGGrNK1Y{(HPYeDE`5nUNEY%DMpS+4dTqGn45)0u^)_k@q6EXmL zF9@G)bV0g8rn-$r1~AHoEJ9%eAzdMSB#isdU`Qe=FbUiV76z;ZM3?gMFy$n|X~4ID zQ-E9KUUIIznCsA5WOH=ahXlf&8=eQm4*44PpF-Y&G>2qCra_uPnnL^`evprm?nTH8 zkQ0#SAjcsbU|eOMf^33pgseH_*+h$|(S?KdUI zAsp}`EI{)S>;1JxVKl1?;ht^bda1KHJfbkWhak+ROq}=Enx$}T?1ThJ`XF!{WD7(d zYi@C=WbK(XA4g%D_KpgYRzz2S=3bXO|(*0PsJ3wAv+*e ziA0uWkjEf_ymO6Giw&bY`GR3 zf>f`b)p*+d*)b?jOlzvyiubtuw2&XUyutBI_o6}9mBC&J>GJr6@Nf1Y_541TmEFy zS0S%JxI~_WybPf)Sp?_*X$TjX*C1SQtc8XfJ~#MxA@4xmhVTF|7Vo;FO6Y8D$#p)rLHVj}k9LWq^2 zl@Xmn8_SW*d=Z3>UJYU9OCYNtD|j294opR!p0V}ujp#Jmcylb|648PIAm+tQucjy zFIaKRm@TKBImWhfK8#9LytN=6MKqski8JAFnWV==46_U(y=+x#9{Znz!XoJ!8qsa+HAa>^>_`b}QrAxHQNDwdd{gmbLnGEvxHv zD>I|rdysb_A1flhy%wDCKEm8=KLHLv<-P)b0in(3kk23=gTDl1yoCt}kAZv%{tD!> z*xw!t^S20o198`Idj!}VG8kq*0)Jo_@*U(F#IkKA!+yZ;At8`jNFNWp38{(j&%mD` zD#Evbe?S=b3*-jmI^ z3ay5)5nn^t5ZckkY8>-v2{9Yo%4~5U3@N-n!21Newr|h@U-&$@Reae&<2!ehL-jjq zo;AGdVHm8>C|x}Ly)_SL>iF>B(BMd%a>S4j&7pP{(+IuAk`OH-k~dIrG%eYl`0c{; z&hooq9vR#zxD(D7h_NFkG;8&~R!?vE3Nf96krmEw__A*b`3cbH?i9DRaVa)wC;etWrC0WQkpV(hBmkpl` zgRtn}h~O~g8^kn3(uW&1-h64s!rq9H?NG#O=54(sDE6r(L7!fm?g@ja;BY4O7bjq# zwhDvQ=bFFre6?q z!nH#CS5kc+zpW!f9}(6`bKGUU%;@s2d+NXUUd`#6I!Po&XaU-9HO2f0&BxDr%Tak= zz`?|`BX1fdMg)greAN>BV1eH=PDLQYOX5}^)OU!O&|CAe(ZVRgD#&{-DIC7mTaa3xc3#LStP5AdOKiFFjTjUO zS6Z(_^7y66|Pim{wT_*SEHJtOgvD$iM04F+;f=b5N=Ug zLwhFr8W$)qJJBCe$3;vOns>j*jzS^UE06{+bFN%Je#1Hx;>5s2PMyV87@++}qfk~Z zdWp?4*v7)<)SPMq5$D9<>MT||D~rSkKJL^ae62SgT`b+AfBDod7xLvmLB4&3M>GmH z-j#$5yLU?adT$T6*NlGX6dZxmvFHW^{ER-9cGf$WX4Nih+im^90N91XPq4dR+!w7a zR8xg#jJDVJSR>OJe;&IH@WW?Cj258I7Qe+H+l6B72BSZtl+_}nGcu?U`#U2dM7#>{ zwO+gQeDT1GxfhO(mlcQC6U2=1T4UiAt9i8?>W%v!sJ-*J5ceLTW6hz^cYc8GXd9PB;CS{IMr15K=wGv@TjN{D!x`i#Ed7df(GSUWdMH zvgDa*$Tt)-84FJ<5y1RbiCBQI^`593p6S#6=yawOcASV|os{h&mv*N4e{7HMC5%Wf zcqVq%4&Qlh+kUbd5~|$ZfNC`t@$p)dzsXr9td`=ocAK77^Tmg7IDSn&J|6JzY5vL; zVd17LyhXlC^RxV0tuWvD&CU0)jIX#BJa9{s6;_j?WGBnc@STlzbJc$GM$-@0lx#ZO zpmHwVp|?hgl&+{}hL{KNT^e96$+_!aufJgV0D&T~taBl}Up(FwlWc&vNxK;>OuLBt z)8?Ki+fsz(4U7j0EfQhfkl$L-pRh@!cf%w%o$+tEH&ESMn$tN8Ps$)$>t$M3nob;B zuYU75qj+Psnu`^lo$&1rJL6qfD6G!d)3YAV?Y+TG#Z1Il#-*ni1cONHVW}hutcjij-q^g+OqKtW4@7r3{y`R^&8)Gh18N`b>VW5r?U(wEbU)K{s zJsv%px1mFo-8#{%2bLb*+2{85;+*Ss9`y*vlb-ESL4MYW>>kL$dLdW;yAO8i<%9d4 zl?MC8Rv2i{28(BUV6U*=xb^?#BtggUTxGo%o!Z5Sa0i!+VS#|US&OZ!1tkCLPC{o!lM_A4~UD{fkc;H zTD0GvSGPuLd|X&`^DbdAuY`&8B_5XVD@wI0~El$D!iIUa0FO z(V;iShFMp0-wd&_vyFYEgB>}tbj2ulirKVABDoLlWXgKSFxq-=SmvgUTeHQa{irv$ zC&Y9X`}<(Xnj5I!CL9?!D@x;!*ZyWv%fbez5Hi3%_DgNisjoJ`*Lq`E`v*2XQuou} zk<$uP*B5EbZOkmz%N7~zR2~zr_hk=t67`0{|L=4XZVB3eVCyAhmtRfm`u?|T;u@&m zAqzib!HXx(kBq`o&;EMwhqoCc79?msf4gJsPtZnS30*q?{(o2m^aIGcc!=Xeuzy6O zp@uiSo5m>CtI!-7Zc)z^{D#MhvDt-%p>t(D{rDIH8?@y}&6t91J9%u2491x%R6z^Q z_S4#9mvSX)v3LEsgSmYT;kJEDTo|Z%*J)5WR%KsAaxJ&s$+l|PsE5}-UV7Zf9@`{- zrZP8uqw-$jT7Ru6`lbE=^uL*2j2fWD+_|M@^Za8f-`MufX92ITI2MXCl~wsPaaW?& z!K{0t-P(e0cbJ)t_&8B(RMi&vw<#Vu)BLTXtM@cdQw>DvKqKd>#?uEk24W|_%@+Um z`)AQ&@E{C^@1w=kLE8Ardh`)*4ua=~i?0B_lVXg2i>YL0@b}?qw?^(mE8roH`&pvd zU^v9I!?RY|gOSQ09oh?>#kRp(_}`3CqkUe&ZHU$w6-2`VM3*7h&#c$beb?f^{IryZ zpVHLeF6K}iDP{~o35J`z#Fio0yQ>c_*)`s1S+!x#L1OEP92$y{5t{Q31Er_fI#hE= zoBbmU-~LrWm3{lyLsu6=Mrs{=jUq8}|9xPZ<<+(fu5}S7hiT#FwDcK z42-L)t>UgR)tnuUWwVY*0p*+2!@LIFK6Uo2!av6PBMnyXD6F1S#N%V&(i!5-HMp4i zWQ^7Xk9T^`MLE`+6hC-s+FtL%1>CgZ0aheIgpEa-5u!g~f;hezNf(UOI^FqzYow_! z&cN8WIey*Y^<3;d+s=gt+&E!W#OU<^p^igtj|yLaul0Jzudk<`pKzCZr>eqxi9xh8 zS2A(;I4uJYbmOW8CzC_AWUYo8X}v^gZOE9_Z4So8G*ZVVnB6%K$b-Xz!?W^EM!y^0 zh$AbUzFQ{Z#=~_orv$N*nt8O0%OY#(7>P)A>zH>h5NWp7p)JdYS$U6f<8y)`J z8@;PymJ0tg)NAKR^W~bQr#?EgVDs^QRR%91hPMD-bq?G0`8~BqR>gcaQe>r}UfL-0 z#*3@gkjXQbpPE!<;VU*H^GNFrqyBRTsh8%zTT*3UzJydMxx4@7XN0q@&5ikiS+T-Txnor~z zB;&G?b0g+@;?$wO#$tq9e)vHfF+6#XSr#xi=HSmSAqEGoDC8I-k|$$ge-4BCFmRk) zYd^napLv7JxV7_Bsu;J$xaYAOhQ5u`a9UPy_!Mf(#C=<^TdtX+ zx%q8DsZCL8-ZLY1Kc?0H&d8KUcIDYLv2O|voafTSD^qafi4r%b;2v3%bn}pJdI%R- z{WGvon*NWp-mcpJ+`^V|wQeLJH&hVYp<=yfHR<>_wv8WM<<$c(GZE853@SsVLd6%% zNM<`x=Ik9_@p|B5{5|cSVVo({SR(7BWo>@coOv!Mc90SUC*^ZxfG9!wuYII0<*&N`CyH zrPtQ-PkEm&)VzUfy@&O!I-jS`(}TF1q5EUt`F6r13ps>~Zj}&$+qAQ?P(SNst6jY= ztnYl>9XB|v`-XAid=|W5G&sW7dhP0S^}ZCwrMpm zkXDyyNw+kIjB(#4CEoNoruWAk)>Oq@hD7**T^%U zc5L|~Z&J!#H(V^Ff%Oi};UCTo?BEwYSyP82Ndpuvhokkf&0lt<4p>~#ti;G6EEv~F z*6TPAtlh79ta%NOpBRoq?beDJ_iK%68uQA$U=f3-YYlO;DQ&tI;Ag$ybK8ke3fsJW zZzK}(OoaPuFBXa|)3x^Y4^apFUQ&`I0#+g;W2#RTLj=Q4^xcyp$Yo>}F(S^xPh?f1TE-mT_7;GEY2LfLk%v8&m7MZTe(FxS!=?44Jd@#A6R= z;o2wj#KgI1%&+rAgFG~*h6tHwoiyu-`<9|)UlDd6puJd|2Z$8A3Ejj?d6+ELt6P1R zoGg8Ibor-MUYa8IBO`UX*t!@$PDCmTL`pvNhd^Nv)lgqN9xXiHLFMA>9vxh=ko^LP9M5BI~F9yuwwpV1H!E*w? zedOcoADM@AW3{d$if3W9ZUF-?41-bW)Y}?ASW}M{ ziNUks@>hV1w8pr|zVnC@XJ%{un(Rv9HU}$d8JGe?~G*IaBm-*UXkA!uG^$X?gJEf(<@P^vk| z#Iyq3vM~*<3d)fqFHde8!LrZIA#P>$S5-nc8itMC5HgBu+!VvX?{0Iwxprvzno{>m zT-&(bU}_Z!b&)ZZVRd`m&D5gXT)0t=b90^7d&Mz(&3+7=|TCb0; zF=Ea=pFimLv$Q~3bFOHY7K_s`G#3&@7Hy%)~Dd{%2#L_*TBlTisiu^(RT@;$|#RW?6rcS*7b` zjbsnt_qKbmW}m(rLqe|7#-wn_QSZg6WG=LF(ecs#wB(45i?mLan?U8FZS*)-D8*P< zD*OHp=9P|-!@$VHNPw~AgBw5CaOK8UnT;F^e;-+We&0UiBIP1iIk{!ga^I3O#kgtG zTb$=sCJl_;hbwi5WgxeUi-ZGW0zr0^v@}Pt8xD0cjWqrbR=1Z^wJ1yewzXOOv0Q6X zt!HtV;K;*f?k~dU;pg6x71iRU2h5DDVPb9$b;Yf9NLt-rvOIHuRJzH?+<`wW=GN=? z*W0Nz(QhAZvhs2Pl>4_dk#3O%n8U~|LitlhGTLm47`@6^$&6Vd>njc9SZ*LbT!ppx zl3ZZ7l-7=Fc4XDJa_UyC`ZAR{|E$%}@TSZbN0-$`4_7Zso@ZnOsw{cPF;0V3qxH|D z@Aldn$E3zw5M*BFxv5&u8pYn8Nz|QIO~-?4;1cOzb1=)3kq`bs45O3fcs6ej{>A-6 zo&?PshksEAvnLr@eTo|E`JHE~(K^`xBe8iz_5F*>39RLLBJO_l-M;zeg?Q9}xgCNx ze;bUx|X|v{KVJ63g?b zc^3JPS#^B?S;_vD2XJ{HGDev^X8-*m8h_=^^K;}Y8_bhnw_q(JYsxQva=XHs^4DkF z>XTSbICFT*DQ_(4a)cN|BI1tS=v^a14lqr6va;pXUFTip={sgqxp2x6BlF5Uw9!2C zEE#ul;=%#7zcgEhb9C4l#PEP!^2f8@p^q$WjAy67@LtU9%zWIWz*U%AW`jQVUke(j zpCG0YVv5Sl`#8NHy;bhFzk7Y;#;ahQtXGJD^_Y&jhz0oVgq;uUze^aH{AgX*BL4gy zhTk$nmE&b%`g+_EdQVzx+WS$~uMfknWz${IO@4x-Wfo=k-P!b{d1YtgCRko|IxsB4n;oB;w7HjfcsLfKWsXw?)|-ndoDiPr|R*AOAm{W zH{h)M8!Wt0y#LyMIcZz;IaL-$cJfg%^AQ*Pk{zy8r`<%#LpZ)I7b@>PZ4r+@gyYrm z9pWS0kkc;g5WjEL!bRha_-SE|DBcK@6wz%9;I;(jEip+(_}<|b7jMSk@NL}UT8LX* zZ?d!)@fE=DnR4@9#mY$!?0@EiQy0($G{-sdbh&802?v_ZB4!h=SkIMTba=nQuR4PRkdQLVu~f>ZxjvG@6dm z$Qhocph*9^7YEbl%rf&Ma^ERSQ1dVm{0>T@-E89IZn4oBpxqcKO$rLpI!%&M_=pzS@zAihwCjuh4~$Yui2wiq diff --git a/package.json b/package.json index b8ba10cd..6d30a9f6 100644 --- a/package.json +++ b/package.json @@ -25,6 +25,7 @@ "@react-three/fiber": "^8.16.8", "@sanity/eventsource": "^5.0.2", "@types/crypto-js": "^4.2.2", + "@types/lodash": "^4.17.23", "@types/numeral": "^2.0.5", "@types/punycode": "^2.1.4", "@types/three": "^0.164.1", diff --git a/src/components/admin/ClusterOverviewTab.tsx b/src/components/admin/ClusterOverviewTab.tsx index ae94d7a9..aef5032a 100644 --- a/src/components/admin/ClusterOverviewTab.tsx +++ b/src/components/admin/ClusterOverviewTab.tsx @@ -7,7 +7,6 @@ import { Chip, Divider, } from "@mui/material"; -import useAdmin from "../../hooks/useAdmin"; import useResource from "../../hooks/useResource"; import { useTranslation } from "react-i18next"; import DRAConfigPanel from "./DRAConfigPanel"; @@ -16,7 +15,6 @@ import { discover } from "../../api/deploy/discover"; export default function ClusterOverviewTab() { const { t } = useTranslation(); - const { systemCapacities } = useAdmin(); const { zones } = useResource(); const [roles, setRoles] = useState([]); diff --git a/src/components/admin/DRAConfigPanel.tsx b/src/components/admin/DRAConfigPanel.tsx index 8c28ed0c..acf707d4 100644 --- a/src/components/admin/DRAConfigPanel.tsx +++ b/src/components/admin/DRAConfigPanel.tsx @@ -1,7 +1,7 @@ import { useState } from "react"; import { Stack, Typography, Button, Alert, Box } from "@mui/material"; import GpuClaimModal from "./GPUClaimModal"; -import { GpuClaimCreate, GpuClaimRead } from "../../temporaryTypesRemoveMe"; +import { GpuClaimCreate } from "../../temporaryTypesRemoveMe"; import { createGpuClaim } from "../../api/deploy/gpuClaims"; import { useKeycloak } from "@react-keycloak/web"; import { enqueueSnackbar } from "notistack"; @@ -44,6 +44,7 @@ export default function DRAConfigPanel({ zone, roles }: DRAConfigPanelProps) { - {initialValue ? "Edit GPU Claim" : "Create GPU Claim"} + {initialValue ? t("edit-gpu-claim") : t("create-gpu-claim")} diff --git a/src/components/admin/TimeAgo.tsx b/src/components/admin/TimeAgo.tsx index 272df47e..23ab85f3 100644 --- a/src/components/admin/TimeAgo.tsx +++ b/src/components/admin/TimeAgo.tsx @@ -1,9 +1,10 @@ import React, { useState, useEffect } from "react"; import { Typography } from "@mui/material"; +import { Variant } from "@mui/material/styles/createTypography"; const TimeAgo: React.FC<{ createdAt: string | undefined; - variant?: string | undefined; + variant?: Variant | undefined; }> = ({ createdAt, variant }) => { const [timeAgo, setTimeAgo] = useState(""); variant = variant != undefined ? variant : "body2"; diff --git a/src/components/chart/BaseOptionChart.tsx b/src/components/chart/BaseOptionChart.tsx index 68e17d43..55c2ed69 100644 --- a/src/components/chart/BaseOptionChart.tsx +++ b/src/components/chart/BaseOptionChart.tsx @@ -172,6 +172,7 @@ export default function BaseOptionChart(): ApexOptions { position: "top", horizontalAlign: "right", markers: { + //@ts-ignore idk if this exists or not. radius: 12, }, fontWeight: 500, diff --git a/src/locales/en.json b/src/locales/en.json index f53eabd4..4160d7f0 100644 --- a/src/locales/en.json +++ b/src/locales/en.json @@ -559,6 +559,7 @@ "maia-intro-body": "Are you a researcher or student in biomedical engineering at KTH who needs state-of-the-art deep learning resources and compute? MAIA is the platform for developing, testing, and deploying medical AI, from early prototypes to real clinical workflows. You get straightforward access to compute via JupyterHub, SSH, or a virtual desktop. Our infrastructure, provided jointly with KTH Cloud, scales to different computational needs. Designed for collaboration and integration with hospital systems, MAIA lets you validate ideas and pilot your solutions in real-world clinical settings.", "maia-intro-footer": "Request a MAIA account today and register a project to start building your medical AI solution.", "maia-intro-header": "Discover ", - "button-get-started-maia": "Get started with MAIA" + "button-get-started-maia": "Get started with MAIA", + "use-vms": "Use VMs" } } diff --git a/src/locales/se.json b/src/locales/se.json index c6a7c2f1..f1e2e695 100644 --- a/src/locales/se.json +++ b/src/locales/se.json @@ -560,6 +560,7 @@ "maia-intro-body": "Är du forskare eller student inom medicinsk teknik på KTH och behöver tillgång till datorresurser för deep learning och simuleringar? MAIA är en plattform för att utveckla, testa och implementera medicinsk AI, från tidiga prototyper till kliniska arbetsflöden. Du får åtkomst till beräkningsresurser via JupyterHub, SSH eller en virtual desktop. Vår infrastruktur, som tillhandahålls tillsammans med KTH Cloud, kan möta olika typer av behov för beräkningsresurser. MAIA är utformad för samarbete och integration med sjukhussystem och gör det möjligt för dig att validera idéer och testa dina lösningar även i kliniska miljöer.", "maia-intro-footer": "Skapa ett MAIA-konto redan idag och registrera ett projekt", "maia-intro-header": "Testa ", - "button-get-started-maia": "Kom igång med MAIA" + "button-get-started-maia": "Kom igång med MAIA", + "use-vms": "Använda VMar" } } diff --git a/src/pages/admin/AdminV2.tsx b/src/pages/admin/AdminV2.tsx index 5fb151b8..f78de4bf 100644 --- a/src/pages/admin/AdminV2.tsx +++ b/src/pages/admin/AdminV2.tsx @@ -363,7 +363,7 @@ export default function AdminV2() { : undefined; const allocatedChip = allocs ? ( - {allocs.map((alloc) => ( + {(allocs as Array).map((alloc) => ( { const { initialized } = useKeycloak(); const { t } = useTranslation(); const { enqueueSnackbar } = useSnackbar(); - const { queueJob } = useResource(); + const { queueJob, user } = useResource(); const [alignment, _setAlignment] = useState(""); const setAlignment = (newAlignment: string) => { _setAlignment(newAlignment); @@ -118,7 +118,10 @@ export const Create = () => {