From 12bd0b8879effb594365501f143209d89c31956e Mon Sep 17 00:00:00 2001 From: sangeethailango Date: Wed, 23 Apr 2025 15:11:07 +0530 Subject: [PATCH 01/45] chore: return workspace name and logo in profile settings api --- apiserver/plane/app/serializers/user.py | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/apiserver/plane/app/serializers/user.py b/apiserver/plane/app/serializers/user.py index ebc002c9c45..3fc1105230a 100644 --- a/apiserver/plane/app/serializers/user.py +++ b/apiserver/plane/app/serializers/user.py @@ -104,10 +104,22 @@ def get_workspace(self, obj): "last_workspace_slug": ( workspace.slug if workspace is not None else "" ), + "last_workspace_name": ( + workspace.name if workspace is not None else "" + ), + "last_workspace_logo": ( + workspace.logo_asset.asset_url if workspace is not None else "" + ), "fallback_workspace_id": profile.last_workspace_id, "fallback_workspace_slug": ( workspace.slug if workspace is not None else "" ), + "fallback_workspace_name": ( + workspace.name if workspace is not None else "" + ), + "fallback_workspace_logo": ( + workspace.logo_asset.asset_url if workspace is not None else "" + ), "invites": workspace_invites, } else: From 526d7da666c5e1fa803c7e2143fdf10d3fe5cee9 Mon Sep 17 00:00:00 2001 From: sangeethailango Date: Wed, 23 Apr 2025 15:24:56 +0530 Subject: [PATCH 02/45] chore: remove unwanted fields --- apiserver/plane/app/serializers/user.py | 6 ------ 1 file changed, 6 deletions(-) diff --git a/apiserver/plane/app/serializers/user.py b/apiserver/plane/app/serializers/user.py index 3fc1105230a..eaafbe17cc9 100644 --- a/apiserver/plane/app/serializers/user.py +++ b/apiserver/plane/app/serializers/user.py @@ -114,12 +114,6 @@ def get_workspace(self, obj): "fallback_workspace_slug": ( workspace.slug if workspace is not None else "" ), - "fallback_workspace_name": ( - workspace.name if workspace is not None else "" - ), - "fallback_workspace_logo": ( - workspace.logo_asset.asset_url if workspace is not None else "" - ), "invites": workspace_invites, } else: From 89a29f75ed1bf211c449df9626abf297a0a9bea0 Mon Sep 17 00:00:00 2001 From: gakshita Date: Wed, 23 Apr 2025 17:05:50 +0530 Subject: [PATCH 03/45] fix: backend --- apiserver/plane/app/serializers/user.py | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/apiserver/plane/app/serializers/user.py b/apiserver/plane/app/serializers/user.py index eaafbe17cc9..f7cf717c5eb 100644 --- a/apiserver/plane/app/serializers/user.py +++ b/apiserver/plane/app/serializers/user.py @@ -99,6 +99,7 @@ def get_workspace(self, obj): workspace_member__member=obj.id, workspace_member__is_active=True, ).first() + logo_asset_url = workspace.logo_asset.asset_url if workspace.logo_asset is not None else "" return { "last_workspace_id": profile.last_workspace_id, "last_workspace_slug": ( @@ -107,9 +108,7 @@ def get_workspace(self, obj): "last_workspace_name": ( workspace.name if workspace is not None else "" ), - "last_workspace_logo": ( - workspace.logo_asset.asset_url if workspace is not None else "" - ), + "last_workspace_logo": (logo_asset_url), "fallback_workspace_id": profile.last_workspace_id, "fallback_workspace_slug": ( workspace.slug if workspace is not None else "" From 767788bdeeb1bea92672b17d9c4380aad7e62224 Mon Sep 17 00:00:00 2001 From: gakshita Date: Wed, 23 Apr 2025 20:15:30 +0530 Subject: [PATCH 04/45] feat: workspace settings --- packages/types/src/users.d.ts | 11 +- .../settings/(with-sidebar)/layout.tsx | 63 ----------- .../settings/(with-sidebar)/sidebar.tsx | 48 --------- .../(projects)/settings/header.tsx | 37 ------- web/app/[workspaceSlug]/(settings)/layout.tsx | 18 ++++ .../settings/(workspace)}/api-tokens/page.tsx | 0 .../settings/(workspace)}/billing/page.tsx | 0 .../settings/(workspace)}/exports/page.tsx | 0 .../settings/(workspace)}/imports/page.tsx | 0 .../(workspace)}/integrations/page.tsx | 0 .../settings/(workspace)/layout.tsx | 82 ++++++++++++++ .../settings/(workspace)}/members/page.tsx | 0 .../(workspace)}/mobile-header-tabs.tsx | 0 .../settings/(workspace)}/page.tsx | 0 .../webhooks/[webhookId]/page.tsx | 0 .../settings/(workspace)}/webhooks/page.tsx | 0 .../(settings)/settings/account/page.tsx | 30 ++++++ .../(settings)/settings/project/page.tsx | 27 +++++ web/ce/components/workspace/edition-badge.tsx | 19 ++-- web/core/components/settings/header.tsx | 65 +++++++++++ web/core/components/settings/index.ts | 2 + web/core/components/settings/sidebar.tsx | 102 ++++++++++++++++++ web/core/components/settings/tabs.tsx | 58 ++++++++++ .../components/settings/workspace-logo.tsx | 40 +++++++ web/core/store/user/settings.store.ts | 2 + 25 files changed, 442 insertions(+), 162 deletions(-) delete mode 100644 web/app/[workspaceSlug]/(projects)/settings/(with-sidebar)/layout.tsx delete mode 100644 web/app/[workspaceSlug]/(projects)/settings/(with-sidebar)/sidebar.tsx delete mode 100644 web/app/[workspaceSlug]/(projects)/settings/header.tsx create mode 100644 web/app/[workspaceSlug]/(settings)/layout.tsx rename web/app/[workspaceSlug]/{(projects)/settings/(with-sidebar) => (settings)/settings/(workspace)}/api-tokens/page.tsx (100%) rename web/app/[workspaceSlug]/{(projects)/settings/(with-sidebar) => (settings)/settings/(workspace)}/billing/page.tsx (100%) rename web/app/[workspaceSlug]/{(projects)/settings/(with-sidebar) => (settings)/settings/(workspace)}/exports/page.tsx (100%) rename web/app/[workspaceSlug]/{(projects)/settings/(with-sidebar) => (settings)/settings/(workspace)}/imports/page.tsx (100%) rename web/app/[workspaceSlug]/{(projects)/settings/(with-sidebar) => (settings)/settings/(workspace)}/integrations/page.tsx (100%) create mode 100644 web/app/[workspaceSlug]/(settings)/settings/(workspace)/layout.tsx rename web/app/[workspaceSlug]/{(projects)/settings/(with-sidebar) => (settings)/settings/(workspace)}/members/page.tsx (100%) rename web/app/[workspaceSlug]/{(projects)/settings/(with-sidebar) => (settings)/settings/(workspace)}/mobile-header-tabs.tsx (100%) rename web/app/[workspaceSlug]/{(projects)/settings/(with-sidebar) => (settings)/settings/(workspace)}/page.tsx (100%) rename web/app/[workspaceSlug]/{(projects)/settings/(with-sidebar) => (settings)/settings/(workspace)}/webhooks/[webhookId]/page.tsx (100%) rename web/app/[workspaceSlug]/{(projects)/settings/(with-sidebar) => (settings)/settings/(workspace)}/webhooks/page.tsx (100%) create mode 100644 web/app/[workspaceSlug]/(settings)/settings/account/page.tsx create mode 100644 web/app/[workspaceSlug]/(settings)/settings/project/page.tsx create mode 100644 web/core/components/settings/header.tsx create mode 100644 web/core/components/settings/index.ts create mode 100644 web/core/components/settings/sidebar.tsx create mode 100644 web/core/components/settings/tabs.tsx create mode 100644 web/core/components/settings/workspace-logo.tsx diff --git a/packages/types/src/users.d.ts b/packages/types/src/users.d.ts index e5140fdef10..9391467ecf0 100644 --- a/packages/types/src/users.d.ts +++ b/packages/types/src/users.d.ts @@ -76,6 +76,8 @@ export interface IUserSettings { workspace: { last_workspace_id: string | undefined; last_workspace_slug: string | undefined; + last_workspace_name: string | undefined; + last_workspace_logo: string | undefined; fallback_workspace_id: string | undefined; fallback_workspace_slug: string | undefined; invites: number | undefined; @@ -155,14 +157,7 @@ export interface IUserProfileProjectSegregation { id: string; pending_issues: number; }[]; - user_data: Pick< - IUser, - | "avatar_url" - | "cover_image_url" - | "display_name" - | "first_name" - | "last_name" - > & { + user_data: Pick & { date_joined: Date; user_timezone: string; }; diff --git a/web/app/[workspaceSlug]/(projects)/settings/(with-sidebar)/layout.tsx b/web/app/[workspaceSlug]/(projects)/settings/(with-sidebar)/layout.tsx deleted file mode 100644 index e51106bfe5f..00000000000 --- a/web/app/[workspaceSlug]/(projects)/settings/(with-sidebar)/layout.tsx +++ /dev/null @@ -1,63 +0,0 @@ -"use client"; - -import { FC, ReactNode } from "react"; -import { observer } from "mobx-react"; -// components -import { useParams, usePathname } from "next/navigation"; -import { EUserWorkspaceRoles, WORKSPACE_SETTINGS_ACCESS } from "@plane/constants"; -import { NotAuthorizedView } from "@/components/auth-screens"; -import { AppHeader } from "@/components/core"; -// hooks -import { useUserPermissions } from "@/hooks/store"; -// plane web constants -// local components -import { WorkspaceSettingHeader } from "../header"; -import { MobileWorkspaceSettingsTabs } from "./mobile-header-tabs"; -import { WorkspaceSettingsSidebar } from "./sidebar"; - -export interface IWorkspaceSettingLayout { - children: ReactNode; -} - -const WorkspaceSettingLayout: FC = observer((props) => { - const { children } = props; - - const { workspaceUserInfo } = useUserPermissions(); - const pathname = usePathname(); - const [workspaceSlug, suffix, route] = pathname.replace(/^\/|\/$/g, "").split("/"); // Regex removes leading and trailing slashes - - // derived values - const userWorkspaceRole = workspaceUserInfo?.[workspaceSlug.toString()]?.role; - const isAuthorized = - pathname && - workspaceSlug && - userWorkspaceRole && - WORKSPACE_SETTINGS_ACCESS[route ? `/${suffix}/${route}` : `/${suffix}`]?.includes( - userWorkspaceRole as EUserWorkspaceRoles - ); - - return ( - <> - } /> - -
- {workspaceUserInfo && !isAuthorized ? ( - - ) : ( - <> -
- -
-
-
- {children} -
-
- - )} -
- - ); -}); - -export default WorkspaceSettingLayout; diff --git a/web/app/[workspaceSlug]/(projects)/settings/(with-sidebar)/sidebar.tsx b/web/app/[workspaceSlug]/(projects)/settings/(with-sidebar)/sidebar.tsx deleted file mode 100644 index 95cb20c6cd6..00000000000 --- a/web/app/[workspaceSlug]/(projects)/settings/(with-sidebar)/sidebar.tsx +++ /dev/null @@ -1,48 +0,0 @@ -"use client"; - -import React from "react"; -import { observer } from "mobx-react"; -import Link from "next/link"; -import { useParams, usePathname } from "next/navigation"; -import { WORKSPACE_SETTINGS_LINKS, EUserPermissionsLevel } from "@plane/constants"; -import { useTranslation } from "@plane/i18n"; -// components -import { SidebarNavItem } from "@/components/sidebar"; -// hooks -import { useUserPermissions } from "@/hooks/store"; -// plane web helpers -import { shouldRenderSettingLink } from "@/plane-web/helpers/workspace.helper"; - -export const WorkspaceSettingsSidebar = observer(() => { - // router - const { workspaceSlug } = useParams(); - const pathname = usePathname(); - // mobx store - const { t } = useTranslation(); - const { allowPermissions } = useUserPermissions(); - - return ( -
-
- {t("settings")} -
- {WORKSPACE_SETTINGS_LINKS.map( - (link) => - shouldRenderSettingLink(workspaceSlug.toString(), link.key) && - allowPermissions(link.access, EUserPermissionsLevel.WORKSPACE, workspaceSlug.toString()) && ( - - - {t(link.i18n_label)} - - - ) - )} -
-
-
- ); -}); diff --git a/web/app/[workspaceSlug]/(projects)/settings/header.tsx b/web/app/[workspaceSlug]/(projects)/settings/header.tsx deleted file mode 100644 index 003e7274319..00000000000 --- a/web/app/[workspaceSlug]/(projects)/settings/header.tsx +++ /dev/null @@ -1,37 +0,0 @@ -"use client"; - -import { FC } from "react"; -import { observer } from "mobx-react"; -import { Settings } from "lucide-react"; -// ui -import { useTranslation } from "@plane/i18n"; -import { Breadcrumbs, Header } from "@plane/ui"; -// components -import { BreadcrumbLink } from "@/components/common"; -// hooks -import { useWorkspace } from "@/hooks/store"; - -export const WorkspaceSettingHeader: FC = observer(() => { - const { currentWorkspace, loader } = useWorkspace(); - const { t } = useTranslation(); - - return ( -
- - - } - /> - } - /> - } /> - - -
- ); -}); diff --git a/web/app/[workspaceSlug]/(settings)/layout.tsx b/web/app/[workspaceSlug]/(settings)/layout.tsx new file mode 100644 index 00000000000..e04b3cc0661 --- /dev/null +++ b/web/app/[workspaceSlug]/(settings)/layout.tsx @@ -0,0 +1,18 @@ +"use client"; + +import { SettingsHeader } from "@/components/settings"; +import { AuthenticationWrapper } from "@/lib/wrappers"; +import { WorkspaceAuthWrapper } from "@/plane-web/layouts/workspace-wrapper"; + +export default function SettingsLayout({ children }: { children: React.ReactNode }) { + return ( + + + {/* Header */} + + {/* Content */} + {children} + + + ); +} diff --git a/web/app/[workspaceSlug]/(projects)/settings/(with-sidebar)/api-tokens/page.tsx b/web/app/[workspaceSlug]/(settings)/settings/(workspace)/api-tokens/page.tsx similarity index 100% rename from web/app/[workspaceSlug]/(projects)/settings/(with-sidebar)/api-tokens/page.tsx rename to web/app/[workspaceSlug]/(settings)/settings/(workspace)/api-tokens/page.tsx diff --git a/web/app/[workspaceSlug]/(projects)/settings/(with-sidebar)/billing/page.tsx b/web/app/[workspaceSlug]/(settings)/settings/(workspace)/billing/page.tsx similarity index 100% rename from web/app/[workspaceSlug]/(projects)/settings/(with-sidebar)/billing/page.tsx rename to web/app/[workspaceSlug]/(settings)/settings/(workspace)/billing/page.tsx diff --git a/web/app/[workspaceSlug]/(projects)/settings/(with-sidebar)/exports/page.tsx b/web/app/[workspaceSlug]/(settings)/settings/(workspace)/exports/page.tsx similarity index 100% rename from web/app/[workspaceSlug]/(projects)/settings/(with-sidebar)/exports/page.tsx rename to web/app/[workspaceSlug]/(settings)/settings/(workspace)/exports/page.tsx diff --git a/web/app/[workspaceSlug]/(projects)/settings/(with-sidebar)/imports/page.tsx b/web/app/[workspaceSlug]/(settings)/settings/(workspace)/imports/page.tsx similarity index 100% rename from web/app/[workspaceSlug]/(projects)/settings/(with-sidebar)/imports/page.tsx rename to web/app/[workspaceSlug]/(settings)/settings/(workspace)/imports/page.tsx diff --git a/web/app/[workspaceSlug]/(projects)/settings/(with-sidebar)/integrations/page.tsx b/web/app/[workspaceSlug]/(settings)/settings/(workspace)/integrations/page.tsx similarity index 100% rename from web/app/[workspaceSlug]/(projects)/settings/(with-sidebar)/integrations/page.tsx rename to web/app/[workspaceSlug]/(settings)/settings/(workspace)/integrations/page.tsx diff --git a/web/app/[workspaceSlug]/(settings)/settings/(workspace)/layout.tsx b/web/app/[workspaceSlug]/(settings)/settings/(workspace)/layout.tsx new file mode 100644 index 00000000000..564004f50f3 --- /dev/null +++ b/web/app/[workspaceSlug]/(settings)/settings/(workspace)/layout.tsx @@ -0,0 +1,82 @@ +"use client"; + +import { FC, ReactNode } from "react"; +import { observer } from "mobx-react"; +// components +import { usePathname } from "next/navigation"; +import { + EUserPermissionsLevel, + EUserWorkspaceRoles, + GROUPED_WORKSPACE_SETTINGS, + WORKSPACE_SETTINGS_ACCESS, + WORKSPACE_SETTINGS_CATEGORIES, +} from "@plane/constants"; +// hooks +import { NotAuthorizedView } from "@/components/auth-screens"; +import SettingsSidebar from "@/components/settings/sidebar"; +import { useUserPermissions } from "@/hooks/store"; +// plane web constants +// local components +import { shouldRenderSettingLink } from "@/plane-web/helpers/workspace.helper"; +import { MobileWorkspaceSettingsTabs } from "./mobile-header-tabs"; + +export interface IWorkspaceSettingLayout { + children: ReactNode; +} + +const pathnameToAccessKey = (pathname: string) => { + const pathArray = pathname.replace(/^\/|\/$/g, "").split("/"); // Regex removes leading and trailing slashes + const workspaceSlug = pathArray[0]; + const accessKey = pathArray.slice(1).join("/"); + return { workspaceSlug, accessKey: `/${accessKey}` || "" }; +}; + +const WorkspaceSettingLayout: FC = observer((props) => { + const { children } = props; + // store hooks + const { workspaceUserInfo } = useUserPermissions(); + const { allowPermissions } = useUserPermissions(); + // next hooks + const pathname = usePathname(); + // derived values + const { workspaceSlug, accessKey } = pathnameToAccessKey(pathname); + const userWorkspaceRole = workspaceUserInfo?.[workspaceSlug.toString()]?.role; + const isAuthorized = + pathname && + workspaceSlug && + userWorkspaceRole && + WORKSPACE_SETTINGS_ACCESS[accessKey]?.includes(userWorkspaceRole as EUserWorkspaceRoles); + + return ( + <> + +
+ {workspaceUserInfo && !isAuthorized ? ( + + ) : ( + <> +
+ pathname === `/${workspaceSlug}${data.href}/`} + shouldRender={(data: { key: string; access: EUserWorkspaceRoles[] }) => + shouldRenderSettingLink(workspaceSlug.toString(), data.key) && + allowPermissions(data.access, EUserPermissionsLevel.WORKSPACE, workspaceSlug.toString()) + } + /> +
+
+
+ {children} +
+
+ + )} +
+ + ); +}); + +export default WorkspaceSettingLayout; diff --git a/web/app/[workspaceSlug]/(projects)/settings/(with-sidebar)/members/page.tsx b/web/app/[workspaceSlug]/(settings)/settings/(workspace)/members/page.tsx similarity index 100% rename from web/app/[workspaceSlug]/(projects)/settings/(with-sidebar)/members/page.tsx rename to web/app/[workspaceSlug]/(settings)/settings/(workspace)/members/page.tsx diff --git a/web/app/[workspaceSlug]/(projects)/settings/(with-sidebar)/mobile-header-tabs.tsx b/web/app/[workspaceSlug]/(settings)/settings/(workspace)/mobile-header-tabs.tsx similarity index 100% rename from web/app/[workspaceSlug]/(projects)/settings/(with-sidebar)/mobile-header-tabs.tsx rename to web/app/[workspaceSlug]/(settings)/settings/(workspace)/mobile-header-tabs.tsx diff --git a/web/app/[workspaceSlug]/(projects)/settings/(with-sidebar)/page.tsx b/web/app/[workspaceSlug]/(settings)/settings/(workspace)/page.tsx similarity index 100% rename from web/app/[workspaceSlug]/(projects)/settings/(with-sidebar)/page.tsx rename to web/app/[workspaceSlug]/(settings)/settings/(workspace)/page.tsx diff --git a/web/app/[workspaceSlug]/(projects)/settings/(with-sidebar)/webhooks/[webhookId]/page.tsx b/web/app/[workspaceSlug]/(settings)/settings/(workspace)/webhooks/[webhookId]/page.tsx similarity index 100% rename from web/app/[workspaceSlug]/(projects)/settings/(with-sidebar)/webhooks/[webhookId]/page.tsx rename to web/app/[workspaceSlug]/(settings)/settings/(workspace)/webhooks/[webhookId]/page.tsx diff --git a/web/app/[workspaceSlug]/(projects)/settings/(with-sidebar)/webhooks/page.tsx b/web/app/[workspaceSlug]/(settings)/settings/(workspace)/webhooks/page.tsx similarity index 100% rename from web/app/[workspaceSlug]/(projects)/settings/(with-sidebar)/webhooks/page.tsx rename to web/app/[workspaceSlug]/(settings)/settings/(workspace)/webhooks/page.tsx diff --git a/web/app/[workspaceSlug]/(settings)/settings/account/page.tsx b/web/app/[workspaceSlug]/(settings)/settings/account/page.tsx new file mode 100644 index 00000000000..6379ea47c6f --- /dev/null +++ b/web/app/[workspaceSlug]/(settings)/settings/account/page.tsx @@ -0,0 +1,30 @@ +"use client"; + +import { observer } from "mobx-react"; +import { useTranslation } from "@plane/i18n"; +// components +import { LogoSpinner } from "@/components/common"; +import { PageHead } from "@/components/core"; +// hooks +import { useUser } from "@/hooks/store"; + +const ProfileSettingsPage = observer(() => { + const { t } = useTranslation(); + // store hooks + const { data: currentUser, userProfile } = useUser(); + + if (!currentUser) + return ( +
+ +
+ ); + + return ( + <> + + + ); +}); + +export default ProfileSettingsPage; diff --git a/web/app/[workspaceSlug]/(settings)/settings/project/page.tsx b/web/app/[workspaceSlug]/(settings)/settings/project/page.tsx new file mode 100644 index 00000000000..fc6674c77f2 --- /dev/null +++ b/web/app/[workspaceSlug]/(settings)/settings/project/page.tsx @@ -0,0 +1,27 @@ +"use client"; + +import { observer } from "mobx-react"; +// components +import { useParams } from "next/navigation"; +import { useTranslation } from "@plane/i18n"; +import { PageHead } from "@/components/core"; +import { useProject } from "@/hooks/store"; + +const ProjectSettingsPage = observer(() => { + // store hooks + // router + const { workspaceSlug, projectId } = useParams(); + // store hooks + const { currentProjectDetails, fetchProjectDetails } = useProject(); + const { t } = useTranslation(); + // derived values + const pageTitle = currentProjectDetails?.name ? `${currentProjectDetails?.name} - General Settings` : undefined; + + return ( + <> + + + ); +}); + +export default ProjectSettingsPage; diff --git a/web/ce/components/workspace/edition-badge.tsx b/web/ce/components/workspace/edition-badge.tsx index b32ce9e61ad..377378dac57 100644 --- a/web/ce/components/workspace/edition-badge.tsx +++ b/web/ce/components/workspace/edition-badge.tsx @@ -4,26 +4,33 @@ import packageJson from "package.json"; // ui import { Button, Tooltip } from "@plane/ui"; // hooks +import { cn } from "@plane/utils"; import { usePlatformOS } from "@/hooks/use-platform-os"; // local components import { PaidPlanUpgradeModal } from "../license"; -export const WorkspaceEditionBadge = observer(() => { +export const WorkspaceEditionBadge = observer((props: { className?: string; isEditable?: boolean }) => { + const { className, isEditable = true } = props; const { isMobile } = usePlatformOS(); // states const [isPaidPlanPurchaseModalOpen, setIsPaidPlanPurchaseModalOpen] = useState(false); return ( <> - setIsPaidPlanPurchaseModalOpen(false)} - /> + {isEditable && ( + setIsPaidPlanPurchaseModalOpen(false)} + /> + )} +
{t("back_to_workspace")}
+ {/* Last workspace */} +
+ +
+ {currentUserSettings?.workspace?.last_workspace_name} +
+
+ +
+ {/* Description */} +
{t("settings")}
+
{t("settings_description")}
+ {/* Actions */} + +
+ + ); +}); diff --git a/web/core/components/settings/index.ts b/web/core/components/settings/index.ts new file mode 100644 index 00000000000..b9c34ef0abf --- /dev/null +++ b/web/core/components/settings/index.ts @@ -0,0 +1,2 @@ +export * from "./header"; +export * from "./sidebar"; diff --git a/web/core/components/settings/sidebar.tsx b/web/core/components/settings/sidebar.tsx new file mode 100644 index 00000000000..77c9250765d --- /dev/null +++ b/web/core/components/settings/sidebar.tsx @@ -0,0 +1,102 @@ +import { WorkspaceEditionBadge } from "ee/components/workspace"; +import Link from "next/link"; +import { EUserWorkspaceRoles } from "@plane/constants"; +import { useTranslation } from "@plane/i18n"; +import { cn } from "@plane/utils"; +import { getUserRole } from "@/helpers/user.helper"; +import { useWorkspace } from "@/hooks/store"; +import WorkspaceLogo from "./workspace-logo"; + +type SettingsSidebarProps = { + categories: string[]; + workspaceSlug: string; + children?: React.ReactNode; + customHeader?: React.ReactNode; + groupedSettings: { + [key: string]: { + key: string; + i18n_label: string; + href: string; + access: EUserWorkspaceRoles[]; + }[]; + }; + isActive: (data: { href: string }) => boolean; + shouldRender: (data: { key: string; access: EUserWorkspaceRoles[] }) => boolean; +}; + +const SettingsSidebar = (props: SettingsSidebarProps) => { + const { categories, groupedSettings, workspaceSlug, children, customHeader, isActive, shouldRender } = props; + const { currentWorkspace } = useWorkspace(); + const { t } = useTranslation(); + + return ( +
+
+ {/* Header */} + {customHeader + ? customHeader + : currentWorkspace && ( +
+
+ + {/* TODO: Fix overflow */} +
+
+ {currentWorkspace.name} +
+
+ {getUserRole(currentWorkspace.role)?.toLowerCase() || "guest"} +
+
+
+ +
+ )} + {/* Navigation */} +
+ {categories.map((category) => ( +
+ {t(category)} +
+ {groupedSettings[category].map( + (setting) => + shouldRender(setting) && ( +
+ +
{t(setting.i18n_label)}
+ + {/* Nested Navigation */} + {children} +
+ ) + )} +
+
+ ))} +
+
+
+ ); +}; + +export default SettingsSidebar; diff --git a/web/core/components/settings/tabs.tsx b/web/core/components/settings/tabs.tsx new file mode 100644 index 00000000000..632d10b2357 --- /dev/null +++ b/web/core/components/settings/tabs.tsx @@ -0,0 +1,58 @@ +import Link from "next/link"; +import { useParams, usePathname } from "next/navigation"; +import { cn } from "@plane/utils"; + +const TABS = { + account: { + key: "account", + label: "Account", + href: `/settings/account/`, + }, + workspace: { + key: "workspace", + label: "Workspace", + href: `/settings/`, + }, + projects: { + key: "projects", + label: "Projects", + href: `/settings/project/`, + }, +}; + +const SettingsTabs = () => { + // router + const pathname = usePathname(); + const { workspaceSlug } = useParams(); + // derived + const currentTab = pathname.includes(TABS.projects.href) + ? TABS.projects + : pathname.includes(TABS.account.href) + ? TABS.account + : TABS.workspace; + + return ( +
+ {Object.values(TABS).map((tab) => { + const isActive = currentTab?.key === tab.key; + return ( + +
{tab.label}
+ + ); + })} +
+ ); +}; + +export default SettingsTabs; diff --git a/web/core/components/settings/workspace-logo.tsx b/web/core/components/settings/workspace-logo.tsx new file mode 100644 index 00000000000..e2bde559cf0 --- /dev/null +++ b/web/core/components/settings/workspace-logo.tsx @@ -0,0 +1,40 @@ +import { cn } from "@/helpers/common.helper"; +import { getFileURL } from "@/helpers/file.helper"; + +interface IWorkspaceLogoProps { + workspace: { + logo_url: string; + name: string; + }; + className?: string; + size?: "sm" | "md" | "lg"; +} + +const WorkspaceLogo = (props: IWorkspaceLogoProps) => { + const { workspace, className, size = "md" } = props; + const sizeClass = size === "sm" ? "h-4 w-4 text-[9px]" : size === "md" ? "h-8 w-8 text-sm" : "h-10 w-10 text-base"; + return ( +
+ {workspace.logo_url && workspace.logo_url !== "" ? ( +
+ Workspace Logo +
+ ) : ( +
+ {workspace?.name?.charAt(0) ?? "N"} +
+ )} +
+ ); +}; + +export default WorkspaceLogo; diff --git a/web/core/store/user/settings.store.ts b/web/core/store/user/settings.store.ts index e1b834f8c22..8d8419f3971 100644 --- a/web/core/store/user/settings.store.ts +++ b/web/core/store/user/settings.store.ts @@ -35,6 +35,8 @@ export class UserSettingsStore implements IUserSettingsStore { workspace: { last_workspace_id: undefined, last_workspace_slug: undefined, + last_workspace_name: undefined, + last_workspace_logo: undefined, fallback_workspace_id: undefined, fallback_workspace_slug: undefined, invites: undefined, From 71e1de2054b7bff33220da2ef4a2558306c65cf5 Mon Sep 17 00:00:00 2001 From: gakshita Date: Wed, 23 Apr 2025 20:15:51 +0530 Subject: [PATCH 05/45] feat: workspce settings + layouting --- packages/constants/src/index.ts | 1 + packages/constants/src/settings.ts | 46 +++++++++++++++++++ .../i18n/src/locales/en/translations.json | 2 + 3 files changed, 49 insertions(+) create mode 100644 packages/constants/src/settings.ts diff --git a/packages/constants/src/index.ts b/packages/constants/src/index.ts index f974dd64b97..9520330ecb7 100644 --- a/packages/constants/src/index.ts +++ b/packages/constants/src/index.ts @@ -32,3 +32,4 @@ export * from "./dashboard"; export * from "./page"; export * from "./emoji"; export * from "./subscription"; +export * from "./settings"; diff --git a/packages/constants/src/settings.ts b/packages/constants/src/settings.ts new file mode 100644 index 00000000000..54f052344e7 --- /dev/null +++ b/packages/constants/src/settings.ts @@ -0,0 +1,46 @@ +import { EUserWorkspaceRoles } from "./user"; +import { WORKSPACE_SETTINGS } from "./workspace"; + +export enum WORKSPACE_SETTINGS_CATEGORY { + ADMINISTRATION = "administration", + FEATURES = "features", + DEVELOPER = "developer", +} + +export enum ACCOUNT_SETTINGS_CATEGORY { + YOUR_ACCOUNT = "your account", + DEVELOPER = "developer", +} + +export enum PROJECT_SETTINGS_CATEGORY { + PROJECTS = "projects", +} + +export const WORKSPACE_SETTINGS_CATEGORIES = [ + WORKSPACE_SETTINGS_CATEGORY.ADMINISTRATION, + WORKSPACE_SETTINGS_CATEGORY.FEATURES, + WORKSPACE_SETTINGS_CATEGORY.DEVELOPER, +]; + +export const ACCOUNT_SETTINGS_CATEGORIES = [ + ACCOUNT_SETTINGS_CATEGORY.YOUR_ACCOUNT, + ACCOUNT_SETTINGS_CATEGORY.DEVELOPER, +]; + +export const PROJECT_SETTINGS_CATEGORIES = [PROJECT_SETTINGS_CATEGORY.PROJECTS]; + +export const GROUPED_WORKSPACE_SETTINGS = { + [WORKSPACE_SETTINGS_CATEGORY.ADMINISTRATION]: [ + WORKSPACE_SETTINGS["general"], + WORKSPACE_SETTINGS["members"], + WORKSPACE_SETTINGS["billing-and-plans"], + WORKSPACE_SETTINGS["export"], + ], + [WORKSPACE_SETTINGS_CATEGORY.FEATURES]: [], + [WORKSPACE_SETTINGS_CATEGORY.DEVELOPER]: [WORKSPACE_SETTINGS["webhooks"], WORKSPACE_SETTINGS["api-tokens"]], +}; + +export const GROUPED_ACCOUNT_SETTINGS = { + [ACCOUNT_SETTINGS_CATEGORY.YOUR_ACCOUNT]: [], + [ACCOUNT_SETTINGS_CATEGORY.DEVELOPER]: [], +}; diff --git a/packages/i18n/src/locales/en/translations.json b/packages/i18n/src/locales/en/translations.json index d8b3c5c9331..2244a930289 100644 --- a/packages/i18n/src/locales/en/translations.json +++ b/packages/i18n/src/locales/en/translations.json @@ -334,6 +334,8 @@ "new_password_must_be_different_from_old_password": "New password must be different from old password", "edited": "edited", "bot": "Bot", + "settings_description": "Manage your account, workspace, and project preferences all in one place. Switch between tabs to easily configure.", + "back_to_workspace": "Back to workspace", "project_view": { "sort_by": { From 3493939d9db6af3f48e5b97a68889bf253b1912d Mon Sep 17 00:00:00 2001 From: gakshita Date: Thu, 24 Apr 2025 15:20:26 +0530 Subject: [PATCH 06/45] feat: profile + workspace settings ui --- packages/constants/src/profile.ts | 56 ++-- packages/constants/src/settings.ts | 25 +- packages/constants/src/workspace.ts | 8 - .../i18n/src/locales/en/translations.json | 3 +- web/app/[workspaceSlug]/(settings)/layout.tsx | 11 +- .../settings/(workspace)/layout.tsx | 33 +-- .../settings/(workspace)/sidebar.tsx | 59 ++++ .../settings/profile/activity/page.tsx | 77 ++++++ .../api-tokens/page.tsx | 0 .../settings/profile/appearance/page.tsx | 88 ++++++ .../(settings)/settings/profile/layout.tsx | 29 ++ .../settings/profile/notifications/page.tsx | 36 +++ .../settings/{account => profile}/page.tsx | 2 + .../settings/profile/security/page.tsx | 251 ++++++++++++++++++ .../(settings)/settings/profile/sidebar.tsx | 64 +++++ web/core/components/profile/form.tsx | 2 +- .../profile-setting-content-header.tsx | 2 +- .../components/settings/content-wrapper.tsx | 5 + web/core/components/settings/index.ts | 1 + web/core/components/settings/sidebar.tsx | 30 ++- web/core/components/settings/tabs.tsx | 2 +- 21 files changed, 698 insertions(+), 86 deletions(-) create mode 100644 web/app/[workspaceSlug]/(settings)/settings/(workspace)/sidebar.tsx create mode 100644 web/app/[workspaceSlug]/(settings)/settings/profile/activity/page.tsx rename web/app/[workspaceSlug]/(settings)/settings/{(workspace) => profile}/api-tokens/page.tsx (100%) create mode 100644 web/app/[workspaceSlug]/(settings)/settings/profile/appearance/page.tsx create mode 100644 web/app/[workspaceSlug]/(settings)/settings/profile/layout.tsx create mode 100644 web/app/[workspaceSlug]/(settings)/settings/profile/notifications/page.tsx rename web/app/[workspaceSlug]/(settings)/settings/{account => profile}/page.tsx (85%) create mode 100644 web/app/[workspaceSlug]/(settings)/settings/profile/security/page.tsx create mode 100644 web/app/[workspaceSlug]/(settings)/settings/profile/sidebar.tsx create mode 100644 web/core/components/settings/content-wrapper.tsx diff --git a/packages/constants/src/profile.ts b/packages/constants/src/profile.ts index f7765a0cfc0..7f5d8f55f8e 100644 --- a/packages/constants/src/profile.ts +++ b/packages/constants/src/profile.ts @@ -1,39 +1,53 @@ -export const PROFILE_ACTION_LINKS: { - key: string; - i18n_label: string; - href: string; - highlight: (pathname: string) => boolean; -}[] = [ - { +export const PROFILE_SETTINGS = { + profile: { key: "profile", i18n_label: "profile.actions.profile", - href: `/profile`, - highlight: (pathname: string) => pathname === "/profile/", + href: `/settings/profile`, + highlight: (pathname: string) => pathname === "/settings/profile/", }, - { + security: { key: "security", i18n_label: "profile.actions.security", - href: `/profile/security`, - highlight: (pathname: string) => pathname === "/profile/security/", + href: `/settings/profile/security`, + highlight: (pathname: string) => pathname === "/settings/profile/security/", }, - { + activity: { key: "activity", i18n_label: "profile.actions.activity", - href: `/profile/activity`, - highlight: (pathname: string) => pathname === "/profile/activity/", + href: `/settings/profile/activity`, + highlight: (pathname: string) => pathname === "/settings/profile/activity/", }, - { + appearance: { key: "appearance", i18n_label: "profile.actions.appearance", - href: `/profile/appearance`, - highlight: (pathname: string) => pathname.includes("/profile/appearance"), + href: `/settings/profile/appearance`, + highlight: (pathname: string) => pathname.includes("/settings/profile/appearance"), }, - { + notifications: { key: "notifications", i18n_label: "profile.actions.notifications", - href: `/profile/notifications`, - highlight: (pathname: string) => pathname === "/profile/notifications/", + href: `/settings/profile/notifications`, + highlight: (pathname: string) => pathname === "/settings/profile/notifications/", + }, + "api-tokens": { + key: "api-tokens", + i18n_label: "profile.actions.api-tokens", + href: `/settings/profile/api-tokens`, + highlight: (pathname: string) => pathname === "/settings/profile/api-tokens/", }, +}; +export const PROFILE_ACTION_LINKS: { + key: string; + i18n_label: string; + href: string; + highlight: (pathname: string) => boolean; +}[] = [ + PROFILE_SETTINGS["profile"], + PROFILE_SETTINGS["security"], + PROFILE_SETTINGS["activity"], + PROFILE_SETTINGS["appearance"], + PROFILE_SETTINGS["notifications"], + PROFILE_SETTINGS["api-tokens"], ]; export const PROFILE_VIEWER_TAB = [ diff --git a/packages/constants/src/settings.ts b/packages/constants/src/settings.ts index 54f052344e7..7869103db18 100644 --- a/packages/constants/src/settings.ts +++ b/packages/constants/src/settings.ts @@ -1,3 +1,4 @@ +import { PROFILE_SETTINGS } from "."; import { EUserWorkspaceRoles } from "./user"; import { WORKSPACE_SETTINGS } from "./workspace"; @@ -7,8 +8,8 @@ export enum WORKSPACE_SETTINGS_CATEGORY { DEVELOPER = "developer", } -export enum ACCOUNT_SETTINGS_CATEGORY { - YOUR_ACCOUNT = "your account", +export enum PROFILE_SETTINGS_CATEGORY { + YOUR_PROFILE = "your profile", DEVELOPER = "developer", } @@ -22,9 +23,9 @@ export const WORKSPACE_SETTINGS_CATEGORIES = [ WORKSPACE_SETTINGS_CATEGORY.DEVELOPER, ]; -export const ACCOUNT_SETTINGS_CATEGORIES = [ - ACCOUNT_SETTINGS_CATEGORY.YOUR_ACCOUNT, - ACCOUNT_SETTINGS_CATEGORY.DEVELOPER, +export const PROFILE_SETTINGS_CATEGORIES = [ + PROFILE_SETTINGS_CATEGORY.YOUR_PROFILE, + PROFILE_SETTINGS_CATEGORY.DEVELOPER, ]; export const PROJECT_SETTINGS_CATEGORIES = [PROJECT_SETTINGS_CATEGORY.PROJECTS]; @@ -37,10 +38,16 @@ export const GROUPED_WORKSPACE_SETTINGS = { WORKSPACE_SETTINGS["export"], ], [WORKSPACE_SETTINGS_CATEGORY.FEATURES]: [], - [WORKSPACE_SETTINGS_CATEGORY.DEVELOPER]: [WORKSPACE_SETTINGS["webhooks"], WORKSPACE_SETTINGS["api-tokens"]], + [WORKSPACE_SETTINGS_CATEGORY.DEVELOPER]: [WORKSPACE_SETTINGS["webhooks"]], }; -export const GROUPED_ACCOUNT_SETTINGS = { - [ACCOUNT_SETTINGS_CATEGORY.YOUR_ACCOUNT]: [], - [ACCOUNT_SETTINGS_CATEGORY.DEVELOPER]: [], +export const GROUPED_PROFILE_SETTINGS = { + [PROFILE_SETTINGS_CATEGORY.YOUR_PROFILE]: [ + PROFILE_SETTINGS["profile"], + PROFILE_SETTINGS["security"], + PROFILE_SETTINGS["activity"], + PROFILE_SETTINGS["appearance"], + PROFILE_SETTINGS["notifications"], + ], + [PROFILE_SETTINGS_CATEGORY.DEVELOPER]: [PROFILE_SETTINGS["api-tokens"]], }; diff --git a/packages/constants/src/workspace.ts b/packages/constants/src/workspace.ts index c1c60f392a5..25c942dfc64 100644 --- a/packages/constants/src/workspace.ts +++ b/packages/constants/src/workspace.ts @@ -114,13 +114,6 @@ export const WORKSPACE_SETTINGS = { access: [EUserWorkspaceRoles.ADMIN], highlight: (pathname: string, baseUrl: string) => pathname === `${baseUrl}/settings/webhooks/`, }, - "api-tokens": { - key: "api-tokens", - i18n_label: "workspace_settings.settings.api_tokens.title", - href: `/settings/api-tokens`, - access: [EUserWorkspaceRoles.ADMIN], - highlight: (pathname: string, baseUrl: string) => pathname === `${baseUrl}/settings/api-tokens/`, - }, }; export const WORKSPACE_SETTINGS_ACCESS = Object.fromEntries( @@ -139,7 +132,6 @@ export const WORKSPACE_SETTINGS_LINKS: { WORKSPACE_SETTINGS["billing-and-plans"], WORKSPACE_SETTINGS["export"], WORKSPACE_SETTINGS["webhooks"], - WORKSPACE_SETTINGS["api-tokens"], ]; export const ROLE = { diff --git a/packages/i18n/src/locales/en/translations.json b/packages/i18n/src/locales/en/translations.json index 2244a930289..c812a8ce342 100644 --- a/packages/i18n/src/locales/en/translations.json +++ b/packages/i18n/src/locales/en/translations.json @@ -1494,7 +1494,8 @@ "security": "Security", "activity": "Activity", "appearance": "Appearance", - "notifications": "Notifications" + "notifications": "Notifications", + "api-tokens": "Personal Access Tokens" }, "tabs": { "summary": "Summary", diff --git a/web/app/[workspaceSlug]/(settings)/layout.tsx b/web/app/[workspaceSlug]/(settings)/layout.tsx index e04b3cc0661..48769fcaae0 100644 --- a/web/app/[workspaceSlug]/(settings)/layout.tsx +++ b/web/app/[workspaceSlug]/(settings)/layout.tsx @@ -1,5 +1,6 @@ "use client"; +import { ContentWrapper } from "@/components/core"; import { SettingsHeader } from "@/components/settings"; import { AuthenticationWrapper } from "@/lib/wrappers"; import { WorkspaceAuthWrapper } from "@/plane-web/layouts/workspace-wrapper"; @@ -8,10 +9,12 @@ export default function SettingsLayout({ children }: { children: React.ReactNode return ( - {/* Header */} - - {/* Content */} - {children} +
+ {/* Header */} + + {/* Content */} + {children} +
); diff --git a/web/app/[workspaceSlug]/(settings)/settings/(workspace)/layout.tsx b/web/app/[workspaceSlug]/(settings)/settings/(workspace)/layout.tsx index 564004f50f3..fce444f315e 100644 --- a/web/app/[workspaceSlug]/(settings)/settings/(workspace)/layout.tsx +++ b/web/app/[workspaceSlug]/(settings)/settings/(workspace)/layout.tsx @@ -4,21 +4,14 @@ import { FC, ReactNode } from "react"; import { observer } from "mobx-react"; // components import { usePathname } from "next/navigation"; -import { - EUserPermissionsLevel, - EUserWorkspaceRoles, - GROUPED_WORKSPACE_SETTINGS, - WORKSPACE_SETTINGS_ACCESS, - WORKSPACE_SETTINGS_CATEGORIES, -} from "@plane/constants"; +import { EUserWorkspaceRoles, WORKSPACE_SETTINGS_ACCESS } from "@plane/constants"; // hooks import { NotAuthorizedView } from "@/components/auth-screens"; -import SettingsSidebar from "@/components/settings/sidebar"; +import { SettingsContentWrapper } from "@/components/settings"; import { useUserPermissions } from "@/hooks/store"; -// plane web constants // local components -import { shouldRenderSettingLink } from "@/plane-web/helpers/workspace.helper"; import { MobileWorkspaceSettingsTabs } from "./mobile-header-tabs"; +import { WorkspaceSettingsSidebar } from "./sidebar"; export interface IWorkspaceSettingLayout { children: ReactNode; @@ -35,7 +28,6 @@ const WorkspaceSettingLayout: FC = observer((props) => const { children } = props; // store hooks const { workspaceUserInfo } = useUserPermissions(); - const { allowPermissions } = useUserPermissions(); // next hooks const pathname = usePathname(); // derived values @@ -55,23 +47,10 @@ const WorkspaceSettingLayout: FC = observer((props) => ) : ( <> -
- pathname === `/${workspaceSlug}${data.href}/`} - shouldRender={(data: { key: string; access: EUserWorkspaceRoles[] }) => - shouldRenderSettingLink(workspaceSlug.toString(), data.key) && - allowPermissions(data.access, EUserPermissionsLevel.WORKSPACE, workspaceSlug.toString()) - } - /> -
-
-
- {children} -
+
+
+ {children} )}
diff --git a/web/app/[workspaceSlug]/(settings)/settings/(workspace)/sidebar.tsx b/web/app/[workspaceSlug]/(settings)/settings/(workspace)/sidebar.tsx new file mode 100644 index 00000000000..ca1056439f9 --- /dev/null +++ b/web/app/[workspaceSlug]/(settings)/settings/(workspace)/sidebar.tsx @@ -0,0 +1,59 @@ +import { ArrowUpToLine, Building, CreditCard, Users, Webhook } from "lucide-react"; +import { + EUserPermissionsLevel, + GROUPED_WORKSPACE_SETTINGS, + WORKSPACE_SETTINGS_CATEGORIES, + EUserWorkspaceRoles, +} from "@plane/constants"; +import SettingsSidebar from "@/components/settings/sidebar"; +import { useUserPermissions } from "@/hooks/store/user"; +import { shouldRenderSettingLink } from "@/plane-web/helpers/workspace.helper"; + +type TWorkspaceSettingsSidebarProps = { + workspaceSlug: string; + pathname: string; +}; + +export const WorkspaceActionIcons = ({ + type, + size, + className, +}: { + type: string; + size?: number; + className?: string; +}) => { + const icons = { + general: Building, + members: Users, + export: ArrowUpToLine, + "billing-and-plans": CreditCard, + webhooks: Webhook, + }; + + if (type === undefined) return null; + const Icon = icons[type as keyof typeof icons]; + if (!Icon) return null; + return ; +}; + +export const WorkspaceSettingsSidebar = (props: TWorkspaceSettingsSidebarProps) => { + const { workspaceSlug, pathname } = props; + // store hooks + const { allowPermissions } = useUserPermissions(); + return ( + pathname === `/${workspaceSlug}${data.href}/`} + shouldRender={(data: { key: string; access?: EUserWorkspaceRoles[] | undefined }) => + data.access + ? shouldRenderSettingLink(workspaceSlug.toString(), data.key) && + allowPermissions(data.access, EUserPermissionsLevel.WORKSPACE, workspaceSlug.toString()) + : false + } + actionIcons={WorkspaceActionIcons} + /> + ); +}; diff --git a/web/app/[workspaceSlug]/(settings)/settings/profile/activity/page.tsx b/web/app/[workspaceSlug]/(settings)/settings/profile/activity/page.tsx new file mode 100644 index 00000000000..6eeb2cccd7e --- /dev/null +++ b/web/app/[workspaceSlug]/(settings)/settings/profile/activity/page.tsx @@ -0,0 +1,77 @@ +"use client"; + +import { useState } from "react"; +import { observer } from "mobx-react"; +import { useTranslation } from "@plane/i18n"; +// ui +import { Button } from "@plane/ui"; +// components +import { PageHead } from "@/components/core"; +import { DetailedEmptyState } from "@/components/empty-state"; +import { ProfileActivityListPage, ProfileSettingContentHeader } from "@/components/profile"; +// hooks +import { useResolvedAssetPath } from "@/hooks/use-resolved-asset-path"; + +const PER_PAGE = 100; + +const ProfileActivityPage = observer(() => { + // states + const [pageCount, setPageCount] = useState(1); + const [totalPages, setTotalPages] = useState(0); + const [resultsCount, setResultsCount] = useState(0); + const [isEmpty, setIsEmpty] = useState(false); + // plane hooks + const { t } = useTranslation(); + // derived values + const resolvedPath = useResolvedAssetPath({ basePath: "/empty-state/profile/activity" }); + + const updateTotalPages = (count: number) => setTotalPages(count); + + const updateResultsCount = (count: number) => setResultsCount(count); + + const updateEmptyState = (isEmpty: boolean) => setIsEmpty(isEmpty); + + const handleLoadMore = () => setPageCount((prev) => prev + 1); + + const activityPages: JSX.Element[] = []; + for (let i = 0; i < pageCount; i++) + activityPages.push( + + ); + + const isLoadMoreVisible = pageCount < totalPages && resultsCount !== 0; + + if (isEmpty) { + return ( + + ); + } + + return ( + <> + + + {activityPages} + {isLoadMoreVisible && ( +
+ +
+ )} + + ); +}); + +export default ProfileActivityPage; diff --git a/web/app/[workspaceSlug]/(settings)/settings/(workspace)/api-tokens/page.tsx b/web/app/[workspaceSlug]/(settings)/settings/profile/api-tokens/page.tsx similarity index 100% rename from web/app/[workspaceSlug]/(settings)/settings/(workspace)/api-tokens/page.tsx rename to web/app/[workspaceSlug]/(settings)/settings/profile/api-tokens/page.tsx diff --git a/web/app/[workspaceSlug]/(settings)/settings/profile/appearance/page.tsx b/web/app/[workspaceSlug]/(settings)/settings/profile/appearance/page.tsx new file mode 100644 index 00000000000..68b05b4e3c3 --- /dev/null +++ b/web/app/[workspaceSlug]/(settings)/settings/profile/appearance/page.tsx @@ -0,0 +1,88 @@ +"use client"; + +import { useEffect, useState } from "react"; +import { observer } from "mobx-react"; +import { useTheme } from "next-themes"; +// plane imports +import { I_THEME_OPTION, THEME_OPTIONS } from "@plane/constants"; +import { useTranslation } from "@plane/i18n"; +import { IUserTheme } from "@plane/types"; +import { setPromiseToast } from "@plane/ui"; +// components +import { LogoSpinner } from "@/components/common"; +import { CustomThemeSelector, ThemeSwitch, PageHead } from "@/components/core"; +import { ProfileSettingContentHeader } from "@/components/profile"; +// constants +// helpers +import { applyTheme, unsetCustomCssVariables } from "@/helpers/theme.helper"; +// hooks +import { useUserProfile } from "@/hooks/store"; +const ProfileAppearancePage = observer(() => { + const { t } = useTranslation(); + const { setTheme } = useTheme(); + // states + const [currentTheme, setCurrentTheme] = useState(null); + // hooks + const { data: userProfile, updateUserTheme } = useUserProfile(); + + useEffect(() => { + if (userProfile?.theme?.theme) { + const userThemeOption = THEME_OPTIONS.find((t) => t.value === userProfile?.theme?.theme); + if (userThemeOption) { + setCurrentTheme(userThemeOption); + } + } + }, [userProfile?.theme?.theme]); + + const handleThemeChange = (themeOption: I_THEME_OPTION) => { + applyThemeChange({ theme: themeOption.value }); + + const updateCurrentUserThemePromise = updateUserTheme({ theme: themeOption.value }); + setPromiseToast(updateCurrentUserThemePromise, { + loading: "Updating theme...", + success: { + title: "Success!", + message: () => "Theme updated successfully!", + }, + error: { + title: "Error!", + message: () => "Failed to Update the theme", + }, + }); + }; + + const applyThemeChange = (theme: Partial) => { + setTheme(theme?.theme || "system"); + + if (theme?.theme === "custom" && theme?.palette) { + applyTheme(theme?.palette !== ",,,," ? theme?.palette : "#0d101b,#c5c5c5,#3f76ff,#0d101b,#c5c5c5", false); + } else unsetCustomCssVariables(); + }; + + return ( + <> + + {userProfile ? ( + <> + +
+
+

{t("theme")}

+

{t("select_or_customize_your_interface_color_scheme")}

+
+
+ +
+
+ {userProfile?.theme?.theme === "custom" && } + + ) : ( +
+ +
+ )} + + ); +}); + +export default ProfileAppearancePage; diff --git a/web/app/[workspaceSlug]/(settings)/settings/profile/layout.tsx b/web/app/[workspaceSlug]/(settings)/settings/profile/layout.tsx new file mode 100644 index 00000000000..38fc1915b72 --- /dev/null +++ b/web/app/[workspaceSlug]/(settings)/settings/profile/layout.tsx @@ -0,0 +1,29 @@ +"use client"; + +import { ReactNode } from "react"; +import { useParams, usePathname } from "next/navigation"; +// components +import { CommandPalette } from "@/components/command-palette"; +import { SettingsContentWrapper } from "@/components/settings"; +import { ProfileSidebar } from "./sidebar"; + +type Props = { + children: ReactNode; +}; + +export default function ProfileSettingsLayout(props: Props) { + const { children } = props; + // router + const pathname = usePathname(); + const { workspaceSlug } = useParams(); + + return ( + <> + +
+ + {children} +
+ + ); +} diff --git a/web/app/[workspaceSlug]/(settings)/settings/profile/notifications/page.tsx b/web/app/[workspaceSlug]/(settings)/settings/profile/notifications/page.tsx new file mode 100644 index 00000000000..91904c54b81 --- /dev/null +++ b/web/app/[workspaceSlug]/(settings)/settings/profile/notifications/page.tsx @@ -0,0 +1,36 @@ +"use client"; + +import useSWR from "swr"; +// components +import { useTranslation } from "@plane/i18n"; +import { PageHead } from "@/components/core"; +import { ProfileSettingContentHeader } from "@/components/profile"; +import { EmailNotificationForm } from "@/components/profile/notification"; +import { EmailSettingsLoader } from "@/components/ui"; +// services +import { UserService } from "@/services/user.service"; + +const userService = new UserService(); + +export default function ProfileNotificationPage() { + const { t } = useTranslation(); + // fetching user email notification settings + const { data, isLoading } = useSWR("CURRENT_USER_EMAIL_NOTIFICATION_SETTINGS", () => + userService.currentUserEmailNotificationSettings() + ); + + if (!data || isLoading) { + return ; + } + + return ( + <> + + + + + ); +} diff --git a/web/app/[workspaceSlug]/(settings)/settings/account/page.tsx b/web/app/[workspaceSlug]/(settings)/settings/profile/page.tsx similarity index 85% rename from web/app/[workspaceSlug]/(settings)/settings/account/page.tsx rename to web/app/[workspaceSlug]/(settings)/settings/profile/page.tsx index 6379ea47c6f..f37178c2a09 100644 --- a/web/app/[workspaceSlug]/(settings)/settings/account/page.tsx +++ b/web/app/[workspaceSlug]/(settings)/settings/profile/page.tsx @@ -5,6 +5,7 @@ import { useTranslation } from "@plane/i18n"; // components import { LogoSpinner } from "@/components/common"; import { PageHead } from "@/components/core"; +import { ProfileForm } from "@/components/profile"; // hooks import { useUser } from "@/hooks/store"; @@ -23,6 +24,7 @@ const ProfileSettingsPage = observer(() => { return ( <> + ); }); diff --git a/web/app/[workspaceSlug]/(settings)/settings/profile/security/page.tsx b/web/app/[workspaceSlug]/(settings)/settings/profile/security/page.tsx new file mode 100644 index 00000000000..d3febe3fa00 --- /dev/null +++ b/web/app/[workspaceSlug]/(settings)/settings/profile/security/page.tsx @@ -0,0 +1,251 @@ +"use client"; + +import { useState } from "react"; +import { observer } from "mobx-react"; +import { Controller, useForm } from "react-hook-form"; +import { Eye, EyeOff } from "lucide-react"; +import { useTranslation } from "@plane/i18n"; +// ui +import { Button, Input, TOAST_TYPE, setToast } from "@plane/ui"; +// components +import { PasswordStrengthMeter } from "@/components/account"; +import { PageHead } from "@/components/core"; +import { ProfileSettingContentHeader, ProfileSettingContentWrapper } from "@/components/profile"; +// helpers +import { authErrorHandler } from "@/helpers/authentication.helper"; +import { E_PASSWORD_STRENGTH, getPasswordStrength } from "@/helpers/password.helper"; +// hooks +import { useUser } from "@/hooks/store"; +// services +import { AuthService } from "@/services/auth.service"; + +export interface FormValues { + old_password: string; + new_password: string; + confirm_password: string; +} + +const defaultValues: FormValues = { + old_password: "", + new_password: "", + confirm_password: "", +}; + +const authService = new AuthService(); + +const defaultShowPassword = { + oldPassword: false, + password: false, + confirmPassword: false, +}; + +const SecurityPage = observer(() => { + // store + const { data: currentUser, changePassword } = useUser(); + // states + const [showPassword, setShowPassword] = useState(defaultShowPassword); + const [isPasswordInputFocused, setIsPasswordInputFocused] = useState(false); + const [isRetryPasswordInputFocused, setIsRetryPasswordInputFocused] = useState(false); + + // use form + const { + control, + handleSubmit, + watch, + formState: { errors, isSubmitting }, + reset, + } = useForm({ defaultValues }); + // derived values + const oldPassword = watch("old_password"); + const password = watch("new_password"); + const confirmPassword = watch("confirm_password"); + const oldPasswordRequired = !currentUser?.is_password_autoset; + // i18n + const { t } = useTranslation(); + + const isNewPasswordSameAsOldPassword = oldPassword !== "" && password !== "" && password === oldPassword; + + const handleShowPassword = (key: keyof typeof showPassword) => + setShowPassword((prev) => ({ ...prev, [key]: !prev[key] })); + + const handleChangePassword = async (formData: FormValues) => { + const { old_password, new_password } = formData; + try { + const csrfToken = await authService.requestCSRFToken().then((data) => data?.csrf_token); + if (!csrfToken) throw new Error("csrf token not found"); + + await changePassword(csrfToken, { + ...(oldPasswordRequired && { old_password }), + new_password, + }); + + reset(defaultValues); + setShowPassword(defaultShowPassword); + setToast({ + type: TOAST_TYPE.SUCCESS, + title: t("auth.common.password.toast.change_password.success.title"), + message: t("auth.common.password.toast.change_password.success.message"), + }); + } catch (err: any) { + const errorInfo = authErrorHandler(err.error_code?.toString()); + setToast({ + type: TOAST_TYPE.ERROR, + title: errorInfo?.title ?? t("auth.common.password.toast.error.title"), + message: + typeof errorInfo?.message === "string" ? errorInfo.message : t("auth.common.password.toast.error.message"), + }); + } + }; + + const isButtonDisabled = + getPasswordStrength(password) != E_PASSWORD_STRENGTH.STRENGTH_VALID || + (oldPasswordRequired && oldPassword.trim() === "") || + password.trim() === "" || + confirmPassword.trim() === "" || + password !== confirmPassword || + password === oldPassword; + + const passwordSupport = password.length > 0 && + getPasswordStrength(password) != E_PASSWORD_STRENGTH.STRENGTH_VALID && ( + + ); + + const renderPasswordMatchError = !isRetryPasswordInputFocused || confirmPassword.length >= password.length; + + return ( + <> + + +
+
+ {oldPasswordRequired && ( +
+

{t("auth.common.password.current_password.label")}

+
+ ( + + )} + /> + {showPassword?.oldPassword ? ( + handleShowPassword("oldPassword")} + /> + ) : ( + handleShowPassword("oldPassword")} + /> + )} +
+ {errors.old_password && {errors.old_password.message}} +
+ )} +
+

{t("auth.common.password.new_password.label")}

+
+ ( + setIsPasswordInputFocused(true)} + onBlur={() => setIsPasswordInputFocused(false)} + /> + )} + /> + {showPassword?.password ? ( + handleShowPassword("password")} + /> + ) : ( + handleShowPassword("password")} + /> + )} +
+ {passwordSupport} + {isNewPasswordSameAsOldPassword && !isPasswordInputFocused && ( + {t("new_password_must_be_different_from_old_password")} + )} +
+
+

{t("auth.common.password.confirm_password.label")}

+
+ ( + setIsRetryPasswordInputFocused(true)} + onBlur={() => setIsRetryPasswordInputFocused(false)} + /> + )} + /> + {showPassword?.confirmPassword ? ( + handleShowPassword("confirmPassword")} + /> + ) : ( + handleShowPassword("confirmPassword")} + /> + )} +
+ {!!confirmPassword && password !== confirmPassword && renderPasswordMatchError && ( + {t("auth.common.password.errors.match")} + )} +
+
+ +
+ +
+
+ + ); +}); + +export default SecurityPage; diff --git a/web/app/[workspaceSlug]/(settings)/settings/profile/sidebar.tsx b/web/app/[workspaceSlug]/(settings)/settings/profile/sidebar.tsx new file mode 100644 index 00000000000..87fed5478e1 --- /dev/null +++ b/web/app/[workspaceSlug]/(settings)/settings/profile/sidebar.tsx @@ -0,0 +1,64 @@ +import { CircleUser, Activity, Bell, CircleUserRound, KeyRound, Settings2, Blocks } from "lucide-react"; +import { GROUPED_PROFILE_SETTINGS, PROFILE_SETTINGS_CATEGORIES } from "@plane/constants"; +import SettingsSidebar from "@/components/settings/sidebar"; +import { getFileURL } from "@/helpers/file.helper"; +import { useUser } from "@/hooks/store/user"; +type TProfileSidebarProps = { + workspaceSlug: string; + pathname: string; +}; + +export const ProjectActionIcons = ({ type, size, className }: { type: string; size?: number; className?: string }) => { + const icons = { + profile: CircleUser, + security: KeyRound, + activity: Activity, + appearance: Settings2, + notifications: Bell, + "api-tokens": Blocks, + }; + + if (type === undefined) return null; + const Icon = icons[type as keyof typeof icons]; + if (!Icon) return null; + return ; +}; + +export const ProfileSidebar = (props: TProfileSidebarProps) => { + const { workspaceSlug, pathname } = props; + // store hooks + const { data: currentUser } = useUser(); + return ( + pathname === `/${workspaceSlug}${data.href}/`} + customHeader={ +
+
+ {!currentUser?.avatar_url || currentUser?.avatar_url === "" ? ( +
+ +
+ ) : ( +
+ {currentUser?.display_name} +
+ )} +
+
+
{currentUser?.display_name}
+
{currentUser?.email}
+
+
+ } + actionIcons={ProjectActionIcons} + shouldRender + /> + ); +}; diff --git a/web/core/components/profile/form.tsx b/web/core/components/profile/form.tsx index 52a39955bf6..ef1076afb9d 100644 --- a/web/core/components/profile/form.tsx +++ b/web/core/components/profile/form.tsx @@ -163,7 +163,7 @@ export const ProfileForm = observer((props: TProfileFormProps) => { /> )} /> -
+
= (props) => { const { title, description } = props; return ( -
+
{title}
{description &&
{description}
}
diff --git a/web/core/components/settings/content-wrapper.tsx b/web/core/components/settings/content-wrapper.tsx new file mode 100644 index 00000000000..474a196476a --- /dev/null +++ b/web/core/components/settings/content-wrapper.tsx @@ -0,0 +1,5 @@ +import { ReactNode } from "react"; + +export const SettingsContentWrapper = ({ children }: { children: ReactNode }) => ( +
{children}
+); diff --git a/web/core/components/settings/index.ts b/web/core/components/settings/index.ts index b9c34ef0abf..40b99c3579c 100644 --- a/web/core/components/settings/index.ts +++ b/web/core/components/settings/index.ts @@ -1,2 +1,3 @@ export * from "./header"; export * from "./sidebar"; +export * from "./content-wrapper"; diff --git a/web/core/components/settings/sidebar.tsx b/web/core/components/settings/sidebar.tsx index 77c9250765d..17dacb5ef77 100644 --- a/web/core/components/settings/sidebar.tsx +++ b/web/core/components/settings/sidebar.tsx @@ -17,27 +17,29 @@ type SettingsSidebarProps = { key: string; i18n_label: string; href: string; - access: EUserWorkspaceRoles[]; + access?: EUserWorkspaceRoles[]; }[]; }; isActive: (data: { href: string }) => boolean; - shouldRender: (data: { key: string; access: EUserWorkspaceRoles[] }) => boolean; + shouldRender: boolean | ((data: { key: string; access?: EUserWorkspaceRoles[] | undefined }) => boolean); + actionIcons?: (props: { type: string; size?: number; className?: string }) => React.ReactNode; }; const SettingsSidebar = (props: SettingsSidebarProps) => { - const { categories, groupedSettings, workspaceSlug, children, customHeader, isActive, shouldRender } = props; + const { categories, groupedSettings, workspaceSlug, children, customHeader, isActive, shouldRender, actionIcons } = + props; const { currentWorkspace } = useWorkspace(); const { t } = useTranslation(); return ( -
+
{/* Header */} {customHeader ? customHeader : currentWorkspace && (
-
+
{ }} size="md" /> - {/* TODO: Fix overflow */} -
+
{currentWorkspace.name}
@@ -55,10 +56,12 @@ const SettingsSidebar = (props: SettingsSidebarProps) => {
- +
+ +
)} {/* Navigation */} @@ -69,12 +72,12 @@ const SettingsSidebar = (props: SettingsSidebarProps) => {
{groupedSettings[category].map( (setting) => - shouldRender(setting) && ( + (typeof shouldRender === "function" ? shouldRender(setting) : shouldRender) && (
{ } )} > + {actionIcons && actionIcons({ type: setting.key, size: 16 })}
{t(setting.i18n_label)}
{/* Nested Navigation */} diff --git a/web/core/components/settings/tabs.tsx b/web/core/components/settings/tabs.tsx index 632d10b2357..6ebeaeec603 100644 --- a/web/core/components/settings/tabs.tsx +++ b/web/core/components/settings/tabs.tsx @@ -6,7 +6,7 @@ const TABS = { account: { key: "account", label: "Account", - href: `/settings/account/`, + href: `/settings/profile/`, }, workspace: { key: "workspace", From b6ef8aa5411aa91431172476b6877ebedda4de3f Mon Sep 17 00:00:00 2001 From: gakshita Date: Thu, 24 Apr 2025 19:11:55 +0530 Subject: [PATCH 07/45] chore: project settings + refactoring --- .../settings/(workspace)/sidebar.tsx | 2 +- .../(settings)/settings/profile/sidebar.tsx | 3 +- .../project/[projectId]/automations/page.tsx | 63 +++++++++++ .../project/[projectId]/estimates/page.tsx | 45 ++++++++ .../project/[projectId]/features/page.tsx | 43 +++++++ .../project/[projectId]/labels/page.tsx | 57 ++++++++++ .../settings/project/[projectId]/layout.tsx | 32 ++++++ .../project/[projectId]/members/page.tsx | 40 +++++++ .../settings/project/[projectId]/page.tsx | 96 ++++++++++++++++ .../settings/project/[projectId]/sidebar.tsx | 73 ++++++++++++ .../project/[projectId]/states/page.tsx | 49 ++++++++ .../(settings)/settings/project/page.tsx | 27 ----- web/ce/constants/project/settings/tabs.ts | 28 ++--- .../settings/project/sidebar/index.ts | 1 + .../project/sidebar/nav-item-children.tsx | 73 ++++++++++++ .../settings/project/sidebar/root.tsx | 47 ++++++++ web/core/components/settings/sidebar.tsx | 106 ------------------ .../components/settings/sidebar/header.tsx | 38 +++++++ web/core/components/settings/sidebar/index.ts | 1 + .../components/settings/sidebar/nav-item.tsx | 88 +++++++++++++++ web/core/components/settings/sidebar/root.tsx | 64 +++++++++++ web/core/components/settings/tabs.tsx | 13 ++- 22 files changed, 836 insertions(+), 153 deletions(-) create mode 100644 web/app/[workspaceSlug]/(settings)/settings/project/[projectId]/automations/page.tsx create mode 100644 web/app/[workspaceSlug]/(settings)/settings/project/[projectId]/estimates/page.tsx create mode 100644 web/app/[workspaceSlug]/(settings)/settings/project/[projectId]/features/page.tsx create mode 100644 web/app/[workspaceSlug]/(settings)/settings/project/[projectId]/labels/page.tsx create mode 100644 web/app/[workspaceSlug]/(settings)/settings/project/[projectId]/layout.tsx create mode 100644 web/app/[workspaceSlug]/(settings)/settings/project/[projectId]/members/page.tsx create mode 100644 web/app/[workspaceSlug]/(settings)/settings/project/[projectId]/page.tsx create mode 100644 web/app/[workspaceSlug]/(settings)/settings/project/[projectId]/sidebar.tsx create mode 100644 web/app/[workspaceSlug]/(settings)/settings/project/[projectId]/states/page.tsx delete mode 100644 web/app/[workspaceSlug]/(settings)/settings/project/page.tsx create mode 100644 web/core/components/settings/project/sidebar/index.ts create mode 100644 web/core/components/settings/project/sidebar/nav-item-children.tsx create mode 100644 web/core/components/settings/project/sidebar/root.tsx delete mode 100644 web/core/components/settings/sidebar.tsx create mode 100644 web/core/components/settings/sidebar/header.tsx create mode 100644 web/core/components/settings/sidebar/index.ts create mode 100644 web/core/components/settings/sidebar/nav-item.tsx create mode 100644 web/core/components/settings/sidebar/root.tsx diff --git a/web/app/[workspaceSlug]/(settings)/settings/(workspace)/sidebar.tsx b/web/app/[workspaceSlug]/(settings)/settings/(workspace)/sidebar.tsx index ca1056439f9..65ffb926c6a 100644 --- a/web/app/[workspaceSlug]/(settings)/settings/(workspace)/sidebar.tsx +++ b/web/app/[workspaceSlug]/(settings)/settings/(workspace)/sidebar.tsx @@ -5,7 +5,7 @@ import { WORKSPACE_SETTINGS_CATEGORIES, EUserWorkspaceRoles, } from "@plane/constants"; -import SettingsSidebar from "@/components/settings/sidebar"; +import { SettingsSidebar } from "@/components/settings"; import { useUserPermissions } from "@/hooks/store/user"; import { shouldRenderSettingLink } from "@/plane-web/helpers/workspace.helper"; diff --git a/web/app/[workspaceSlug]/(settings)/settings/profile/sidebar.tsx b/web/app/[workspaceSlug]/(settings)/settings/profile/sidebar.tsx index 87fed5478e1..bf2eaab3b83 100644 --- a/web/app/[workspaceSlug]/(settings)/settings/profile/sidebar.tsx +++ b/web/app/[workspaceSlug]/(settings)/settings/profile/sidebar.tsx @@ -1,8 +1,9 @@ import { CircleUser, Activity, Bell, CircleUserRound, KeyRound, Settings2, Blocks } from "lucide-react"; import { GROUPED_PROFILE_SETTINGS, PROFILE_SETTINGS_CATEGORIES } from "@plane/constants"; -import SettingsSidebar from "@/components/settings/sidebar"; +import { SettingsSidebar } from "@/components/settings"; import { getFileURL } from "@/helpers/file.helper"; import { useUser } from "@/hooks/store/user"; + type TProfileSidebarProps = { workspaceSlug: string; pathname: string; diff --git a/web/app/[workspaceSlug]/(settings)/settings/project/[projectId]/automations/page.tsx b/web/app/[workspaceSlug]/(settings)/settings/project/[projectId]/automations/page.tsx new file mode 100644 index 00000000000..5fc536d91be --- /dev/null +++ b/web/app/[workspaceSlug]/(settings)/settings/project/[projectId]/automations/page.tsx @@ -0,0 +1,63 @@ +"use client"; + +import React from "react"; +import { observer } from "mobx-react"; +import { useParams } from "next/navigation"; +import { EUserPermissions, EUserPermissionsLevel } from "@plane/constants"; +import { useTranslation } from "@plane/i18n"; +import { IProject } from "@plane/types"; +// ui +import { TOAST_TYPE, setToast } from "@plane/ui"; +// components +import { NotAuthorizedView } from "@/components/auth-screens"; +import { AutoArchiveAutomation, AutoCloseAutomation } from "@/components/automation"; +import { PageHead } from "@/components/core"; +// hooks +import { useProject, useUserPermissions } from "@/hooks/store"; + +const AutomationSettingsPage = observer(() => { + // router + const { workspaceSlug, projectId } = useParams(); + // store hooks + const { workspaceUserInfo, allowPermissions } = useUserPermissions(); + const { currentProjectDetails: projectDetails, updateProject } = useProject(); + + const { t } = useTranslation(); + + // derived values + const canPerformProjectAdminActions = allowPermissions([EUserPermissions.ADMIN], EUserPermissionsLevel.PROJECT); + + const handleChange = async (formData: Partial) => { + if (!workspaceSlug || !projectId || !projectDetails) return; + + await updateProject(workspaceSlug.toString(), projectId.toString(), formData).catch(() => { + setToast({ + type: TOAST_TYPE.ERROR, + title: "Error!", + message: "Something went wrong. Please try again.", + }); + }); + }; + + // derived values + const pageTitle = projectDetails?.name ? `${projectDetails?.name} - Automations` : undefined; + + if (workspaceUserInfo && !canPerformProjectAdminActions) { + return ; + } + + return ( + <> + +
+
+

{t("project_settings.automations.label")}

+
+ + +
+ + ); +}); + +export default AutomationSettingsPage; diff --git a/web/app/[workspaceSlug]/(settings)/settings/project/[projectId]/estimates/page.tsx b/web/app/[workspaceSlug]/(settings)/settings/project/[projectId]/estimates/page.tsx new file mode 100644 index 00000000000..0a19713e880 --- /dev/null +++ b/web/app/[workspaceSlug]/(settings)/settings/project/[projectId]/estimates/page.tsx @@ -0,0 +1,45 @@ +"use client"; + +import { observer } from "mobx-react"; +import { useParams } from "next/navigation"; +// components +import { EUserPermissions, EUserPermissionsLevel } from "@plane/constants"; +import { NotAuthorizedView } from "@/components/auth-screens"; +import { PageHead } from "@/components/core"; +import { EstimateRoot } from "@/components/estimates"; +// hooks +import { useProject, useUserPermissions } from "@/hooks/store"; + +const EstimatesSettingsPage = observer(() => { + const { workspaceSlug, projectId } = useParams(); + // store + const { currentProjectDetails } = useProject(); + const { workspaceUserInfo, allowPermissions } = useUserPermissions(); + + // derived values + const pageTitle = currentProjectDetails?.name ? `${currentProjectDetails?.name} - Estimates` : undefined; + const canPerformProjectAdminActions = allowPermissions([EUserPermissions.ADMIN], EUserPermissionsLevel.PROJECT); + + if (!workspaceSlug || !projectId) return <>; + + if (workspaceUserInfo && !canPerformProjectAdminActions) { + return ; + } + + return ( + <> + +
+ +
+ + ); +}); + +export default EstimatesSettingsPage; diff --git a/web/app/[workspaceSlug]/(settings)/settings/project/[projectId]/features/page.tsx b/web/app/[workspaceSlug]/(settings)/settings/project/[projectId]/features/page.tsx new file mode 100644 index 00000000000..23aa8ad45cb --- /dev/null +++ b/web/app/[workspaceSlug]/(settings)/settings/project/[projectId]/features/page.tsx @@ -0,0 +1,43 @@ +"use client"; + +import { observer } from "mobx-react"; +import { useParams } from "next/navigation"; +// components +import { EUserPermissions, EUserPermissionsLevel } from "@plane/constants"; +import { NotAuthorizedView } from "@/components/auth-screens"; +import { PageHead } from "@/components/core"; +import { ProjectFeaturesList } from "@/components/project"; +// hooks +import { useProject, useUserPermissions } from "@/hooks/store"; + +const FeaturesSettingsPage = observer(() => { + const { workspaceSlug, projectId } = useParams(); + // store + const { workspaceUserInfo, allowPermissions } = useUserPermissions(); + + const { currentProjectDetails } = useProject(); + // derived values + const pageTitle = currentProjectDetails?.name ? `${currentProjectDetails?.name} - Features` : undefined; + const canPerformProjectAdminActions = allowPermissions([EUserPermissions.ADMIN], EUserPermissionsLevel.PROJECT); + + if (!workspaceSlug || !projectId) return null; + + if (workspaceUserInfo && !canPerformProjectAdminActions) { + return ; + } + + return ( + <> + +
+ +
+ + ); +}); + +export default FeaturesSettingsPage; diff --git a/web/app/[workspaceSlug]/(settings)/settings/project/[projectId]/labels/page.tsx b/web/app/[workspaceSlug]/(settings)/settings/project/[projectId]/labels/page.tsx new file mode 100644 index 00000000000..17a466a8010 --- /dev/null +++ b/web/app/[workspaceSlug]/(settings)/settings/project/[projectId]/labels/page.tsx @@ -0,0 +1,57 @@ +"use client"; + +import { useEffect, useRef } from "react"; +import { combine } from "@atlaskit/pragmatic-drag-and-drop/combine"; +import { autoScrollForElements } from "@atlaskit/pragmatic-drag-and-drop-auto-scroll/element"; +import { observer } from "mobx-react"; +// components +import { EUserPermissions, EUserPermissionsLevel } from "@plane/constants"; +import { NotAuthorizedView } from "@/components/auth-screens"; +import { PageHead } from "@/components/core"; +import { ProjectSettingsLabelList } from "@/components/labels"; +// hooks +import { useProject, useUserPermissions } from "@/hooks/store"; + +const LabelsSettingsPage = observer(() => { + // store hooks + const { currentProjectDetails } = useProject(); + const { workspaceUserInfo, allowPermissions } = useUserPermissions(); + + const pageTitle = currentProjectDetails?.name ? `${currentProjectDetails?.name} - Labels` : undefined; + + const scrollableContainerRef = useRef(null); + + // derived values + const canPerformProjectMemberActions = allowPermissions( + [EUserPermissions.ADMIN, EUserPermissions.MEMBER], + EUserPermissionsLevel.PROJECT + ); + + // Enable Auto Scroll for Labels list + useEffect(() => { + const element = scrollableContainerRef.current; + + if (!element) return; + + return combine( + autoScrollForElements({ + element, + }) + ); + }, [scrollableContainerRef?.current]); + + if (workspaceUserInfo && !canPerformProjectMemberActions) { + return ; + } + + return ( + <> + +
+ +
+ + ); +}); + +export default LabelsSettingsPage; diff --git a/web/app/[workspaceSlug]/(settings)/settings/project/[projectId]/layout.tsx b/web/app/[workspaceSlug]/(settings)/settings/project/[projectId]/layout.tsx new file mode 100644 index 00000000000..094ae0be391 --- /dev/null +++ b/web/app/[workspaceSlug]/(settings)/settings/project/[projectId]/layout.tsx @@ -0,0 +1,32 @@ +"use client"; + +import { ReactNode } from "react"; +import { useParams, usePathname } from "next/navigation"; +// components +import { CommandPalette } from "@/components/command-palette"; +import { SettingsContentWrapper } from "@/components/settings"; +import { ProjectSettingsSidebar } from "@/components/settings/project/sidebar"; +import { ProjectAuthWrapper } from "@/plane-web/layouts/project-wrapper"; + +type Props = { + children: ReactNode; +}; + +export default function ProjectSettingsLayout(props: Props) { + const { children } = props; + // router + const pathname = usePathname(); + const { workspaceSlug, projectId } = useParams(); + + return ( + <> + + +
+ + {children} +
+
+ + ); +} diff --git a/web/app/[workspaceSlug]/(settings)/settings/project/[projectId]/members/page.tsx b/web/app/[workspaceSlug]/(settings)/settings/project/[projectId]/members/page.tsx new file mode 100644 index 00000000000..9deaef126ad --- /dev/null +++ b/web/app/[workspaceSlug]/(settings)/settings/project/[projectId]/members/page.tsx @@ -0,0 +1,40 @@ +"use client"; + +import { observer } from "mobx-react"; +// components +import { EUserPermissions, EUserPermissionsLevel } from "@plane/constants"; +import { NotAuthorizedView } from "@/components/auth-screens"; +import { PageHead } from "@/components/core"; +import { ProjectMemberList, ProjectSettingsMemberDefaults } from "@/components/project"; +// hooks +import { useProject, useUserPermissions } from "@/hooks/store"; + +const MembersSettingsPage = observer(() => { + // store + const { currentProjectDetails } = useProject(); + const { workspaceUserInfo, allowPermissions } = useUserPermissions(); + // derived values + const pageTitle = currentProjectDetails?.name ? `${currentProjectDetails?.name} - Members` : undefined; + const isProjectMemberOrAdmin = allowPermissions( + [EUserPermissions.ADMIN, EUserPermissions.MEMBER], + EUserPermissionsLevel.PROJECT + ); + const isWorkspaceAdmin = allowPermissions([EUserPermissions.ADMIN], EUserPermissionsLevel.WORKSPACE); + const canPerformProjectMemberActions = isProjectMemberOrAdmin || isWorkspaceAdmin; + + if (workspaceUserInfo && !canPerformProjectMemberActions) { + return ; + } + + return ( + <> + +
+ + +
+ + ); +}); + +export default MembersSettingsPage; diff --git a/web/app/[workspaceSlug]/(settings)/settings/project/[projectId]/page.tsx b/web/app/[workspaceSlug]/(settings)/settings/project/[projectId]/page.tsx new file mode 100644 index 00000000000..a0ecfff70e4 --- /dev/null +++ b/web/app/[workspaceSlug]/(settings)/settings/project/[projectId]/page.tsx @@ -0,0 +1,96 @@ +"use client"; + +import { useState } from "react"; +import { observer } from "mobx-react"; +import { useParams } from "next/navigation"; +import useSWR from "swr"; +// components +import { EUserPermissions, EUserPermissionsLevel } from "@plane/constants"; +import { PageHead } from "@/components/core"; +import { + ArchiveRestoreProjectModal, + ArchiveProjectSelection, + DeleteProjectModal, + DeleteProjectSection, + ProjectDetailsForm, + ProjectDetailsFormLoader, +} from "@/components/project"; +// hooks +import { useProject, useUserPermissions } from "@/hooks/store"; + +const ProjectSettingsPage = observer(() => { + // states + const [selectProject, setSelectedProject] = useState(null); + const [archiveProject, setArchiveProject] = useState(false); + // router + const { workspaceSlug, projectId } = useParams(); + // store hooks + const { currentProjectDetails, fetchProjectDetails } = useProject(); + const { allowPermissions } = useUserPermissions(); + + // api call to fetch project details + // TODO: removed this API if not necessary + const { isLoading } = useSWR( + workspaceSlug && projectId ? `PROJECT_DETAILS_${projectId}` : null, + workspaceSlug && projectId ? () => fetchProjectDetails(workspaceSlug.toString(), projectId.toString()) : null + ); + // derived values + const isAdmin = allowPermissions( + [EUserPermissions.ADMIN], + EUserPermissionsLevel.PROJECT, + workspaceSlug.toString(), + projectId.toString() + ); + + const pageTitle = currentProjectDetails?.name ? `${currentProjectDetails?.name} - General Settings` : undefined; + + return ( + <> + + {currentProjectDetails && workspaceSlug && projectId && ( + <> + setArchiveProject(false)} + archive + /> + setSelectedProject(null)} + /> + + )} + +
+ {currentProjectDetails && workspaceSlug && projectId && !isLoading ? ( + + ) : ( + + )} + + {isAdmin && currentProjectDetails && ( + <> + setArchiveProject(true)} + /> + setSelectedProject(currentProjectDetails.id ?? null)} + /> + + )} +
+ + ); +}); + +export default ProjectSettingsPage; diff --git a/web/app/[workspaceSlug]/(settings)/settings/project/[projectId]/sidebar.tsx b/web/app/[workspaceSlug]/(settings)/settings/project/[projectId]/sidebar.tsx new file mode 100644 index 00000000000..7bb1984c89f --- /dev/null +++ b/web/app/[workspaceSlug]/(settings)/settings/project/[projectId]/sidebar.tsx @@ -0,0 +1,73 @@ +"use client"; + +import React from "react"; +import range from "lodash/range"; +import { observer } from "mobx-react"; +import Link from "next/link"; +import { useParams, usePathname } from "next/navigation"; +import { EUserPermissionsLevel } from "@plane/constants"; +import { useTranslation } from "@plane/i18n"; +// ui +import { Loader } from "@plane/ui"; +// components +import { SidebarNavItem } from "@/components/sidebar"; +// hooks +import { useUserPermissions } from "@/hooks/store"; +// plane web constants +import { PROJECT_SETTINGS_LINKS } from "@/plane-web/constants/project"; + +export const ProjectSettingsSidebar = observer(() => { + const { workspaceSlug, projectId } = useParams(); + const pathname = usePathname(); + // mobx store + const { allowPermissions, projectUserInfo } = useUserPermissions(); + + const { t } = useTranslation(); + + // derived values + const currentProjectRole = projectUserInfo?.[workspaceSlug?.toString()]?.[projectId?.toString()]?.role; + + if (!currentProjectRole) { + return ( +
+
+ SETTINGS + + {range(8).map((index) => ( + + ))} + +
+
+ ); + } + + return ( +
+
+ SETTINGS +
+ {PROJECT_SETTINGS_LINKS.map( + (link) => + allowPermissions( + link.access, + EUserPermissionsLevel.PROJECT, + workspaceSlug.toString(), + projectId.toString() + ) && ( + + + {t(link.i18n_label)} + + + ) + )} +
+
+
+ ); +}); diff --git a/web/app/[workspaceSlug]/(settings)/settings/project/[projectId]/states/page.tsx b/web/app/[workspaceSlug]/(settings)/settings/project/[projectId]/states/page.tsx new file mode 100644 index 00000000000..c8f1c58b7e9 --- /dev/null +++ b/web/app/[workspaceSlug]/(settings)/settings/project/[projectId]/states/page.tsx @@ -0,0 +1,49 @@ +"use client"; + +import { observer } from "mobx-react"; +import { useParams } from "next/navigation"; +import { EUserPermissions, EUserPermissionsLevel } from "@plane/constants"; +import { useTranslation } from "@plane/i18n"; +// components +import { NotAuthorizedView } from "@/components/auth-screens"; +import { PageHead } from "@/components/core"; +import { ProjectStateRoot } from "@/components/project-states"; +// hook +import { useProject, useUserPermissions } from "@/hooks/store"; + +const StatesSettingsPage = observer(() => { + const { workspaceSlug, projectId } = useParams(); + // store + const { currentProjectDetails } = useProject(); + const { workspaceUserInfo, allowPermissions } = useUserPermissions(); + + const { t } = useTranslation(); + + // derived values + const pageTitle = currentProjectDetails?.name ? `${currentProjectDetails?.name} - States` : undefined; + // derived values + const canPerformProjectMemberActions = allowPermissions( + [EUserPermissions.ADMIN, EUserPermissions.MEMBER], + EUserPermissionsLevel.PROJECT + ); + + if (workspaceUserInfo && !canPerformProjectMemberActions) { + return ; + } + + return ( + <> + +
+
+

{t("common.states")}

+
+ {workspaceSlug && projectId && ( + + )} +
+ + ); +}); + +export default StatesSettingsPage; diff --git a/web/app/[workspaceSlug]/(settings)/settings/project/page.tsx b/web/app/[workspaceSlug]/(settings)/settings/project/page.tsx deleted file mode 100644 index fc6674c77f2..00000000000 --- a/web/app/[workspaceSlug]/(settings)/settings/project/page.tsx +++ /dev/null @@ -1,27 +0,0 @@ -"use client"; - -import { observer } from "mobx-react"; -// components -import { useParams } from "next/navigation"; -import { useTranslation } from "@plane/i18n"; -import { PageHead } from "@/components/core"; -import { useProject } from "@/hooks/store"; - -const ProjectSettingsPage = observer(() => { - // store hooks - // router - const { workspaceSlug, projectId } = useParams(); - // store hooks - const { currentProjectDetails, fetchProjectDetails } = useProject(); - const { t } = useTranslation(); - // derived values - const pageTitle = currentProjectDetails?.name ? `${currentProjectDetails?.name} - General Settings` : undefined; - - return ( - <> - - - ); -}); - -export default ProjectSettingsPage; diff --git a/web/ce/constants/project/settings/tabs.ts b/web/ce/constants/project/settings/tabs.ts index 15869c186cd..9eaba26db10 100644 --- a/web/ce/constants/project/settings/tabs.ts +++ b/web/ce/constants/project/settings/tabs.ts @@ -9,57 +9,57 @@ export const PROJECT_SETTINGS = { general: { key: "general", i18n_label: "common.general", - href: `/settings`, + href: ``, access: [EUserPermissions.ADMIN, EUserPermissions.MEMBER, EUserPermissions.GUEST], - highlight: (pathname: string, baseUrl: string) => pathname === `${baseUrl}/settings/`, + highlight: (pathname: string, baseUrl: string) => pathname === `${baseUrl}/`, Icon: SettingIcon, }, members: { key: "members", i18n_label: "members", - href: `/settings/members`, + href: `/members`, access: [EUserPermissions.ADMIN, EUserPermissions.MEMBER, EUserPermissions.GUEST], - highlight: (pathname: string, baseUrl: string) => pathname === `${baseUrl}/settings/members/`, + highlight: (pathname: string, baseUrl: string) => pathname === `${baseUrl}/members/`, Icon: SettingIcon, }, features: { key: "features", i18n_label: "common.features", - href: `/settings/features`, + href: `/features`, access: [EUserPermissions.ADMIN], - highlight: (pathname: string, baseUrl: string) => pathname === `${baseUrl}/settings/features/`, + highlight: (pathname: string, baseUrl: string) => pathname === `${baseUrl}/features/`, Icon: SettingIcon, }, states: { key: "states", i18n_label: "common.states", - href: `/settings/states`, + href: `/states`, access: [EUserPermissions.ADMIN, EUserPermissions.MEMBER], - highlight: (pathname: string, baseUrl: string) => pathname === `${baseUrl}/settings/states/`, + highlight: (pathname: string, baseUrl: string) => pathname === `${baseUrl}/states/`, Icon: SettingIcon, }, labels: { key: "labels", i18n_label: "common.labels", - href: `/settings/labels`, + href: `/labels`, access: [EUserPermissions.ADMIN, EUserPermissions.MEMBER], - highlight: (pathname: string, baseUrl: string) => pathname === `${baseUrl}/settings/labels/`, + highlight: (pathname: string, baseUrl: string) => pathname === `${baseUrl}/labels/`, Icon: SettingIcon, }, estimates: { key: "estimates", i18n_label: "common.estimates", - href: `/settings/estimates`, + href: `/estimates`, access: [EUserPermissions.ADMIN], - highlight: (pathname: string, baseUrl: string) => pathname === `${baseUrl}/settings/estimates/`, + highlight: (pathname: string, baseUrl: string) => pathname === `${baseUrl}/estimates/`, Icon: SettingIcon, }, automations: { key: "automations", i18n_label: "project_settings.automations.label", - href: `/settings/automations`, + href: `/automations`, access: [EUserPermissions.ADMIN], - highlight: (pathname: string, baseUrl: string) => pathname === `${baseUrl}/settings/automations/`, + highlight: (pathname: string, baseUrl: string) => pathname === `${baseUrl}/automations/`, Icon: SettingIcon, }, }; diff --git a/web/core/components/settings/project/sidebar/index.ts b/web/core/components/settings/project/sidebar/index.ts new file mode 100644 index 00000000000..1efe34c51ec --- /dev/null +++ b/web/core/components/settings/project/sidebar/index.ts @@ -0,0 +1 @@ +export * from "./root"; diff --git a/web/core/components/settings/project/sidebar/nav-item-children.tsx b/web/core/components/settings/project/sidebar/nav-item-children.tsx new file mode 100644 index 00000000000..3ce7b7ab6bb --- /dev/null +++ b/web/core/components/settings/project/sidebar/nav-item-children.tsx @@ -0,0 +1,73 @@ +import { range } from "lodash"; +import { observer } from "mobx-react"; +import Link from "next/link"; +import { usePathname, useParams } from "next/navigation"; +import { EUserPermissionsLevel } from "@plane/constants"; +import { useTranslation } from "@plane/i18n"; +import { Loader } from "@plane/ui"; +import { cn } from "@/helpers/common.helper"; +import { useProject, useUserPermissions } from "@/hooks/store"; +import { PROJECT_SETTINGS_LINKS } from "@/plane-web/constants/project"; + +export const NavItemChildren = observer((props: { projectId: string }) => { + const { projectId } = props; + const { workspaceSlug } = useParams(); + const pathname = usePathname(); + // mobx store + const { getProjectById } = useProject(); + const { allowPermissions } = useUserPermissions(); + const { t } = useTranslation(); + + // derived values + const currentProject = getProjectById(projectId); + + if (!currentProject) { + return ( +
+
+ + {range(8).map((index) => ( + + ))} + +
+
+ ); + } + + return ( +
+
+
+ {PROJECT_SETTINGS_LINKS.map((link) => { + const isActive = link.highlight(pathname, `/${workspaceSlug}/settings/project/${projectId}`); + return ( + allowPermissions( + link.access, + EUserPermissionsLevel.PROJECT, + workspaceSlug.toString(), + projectId.toString() + ) && ( + +
+ {t(link.i18n_label)} +
+ + ) + ); + })} +
+
+
+ ); +}); diff --git a/web/core/components/settings/project/sidebar/root.tsx b/web/core/components/settings/project/sidebar/root.tsx new file mode 100644 index 00000000000..74f5abfac12 --- /dev/null +++ b/web/core/components/settings/project/sidebar/root.tsx @@ -0,0 +1,47 @@ +import { observer } from "mobx-react"; +import { PROJECT_SETTINGS_CATEGORIES, PROJECT_SETTINGS_CATEGORY } from "@plane/constants"; +import { Logo } from "@/components/common"; + +import { getUserRole } from "@/helpers/user.helper"; +import { useProject } from "@/hooks/store/use-project"; +import { SettingsSidebar } from "../.."; +import { NavItemChildren } from "./nav-item-children"; + +type TProjectSettingsSidebarProps = { + workspaceSlug: string; + pathname: string; +}; + +export const ProjectSettingsSidebar = observer((props: TProjectSettingsSidebarProps) => { + const { workspaceSlug } = props; + // store hooks + const { joinedProjectIds, projectMap } = useProject(); + + const groupedProject = joinedProjectIds.map((projectId) => ({ + key: projectId, + i18n_label: projectMap[projectId].name, + href: `/settings/project/${projectId}`, + icon: , + })); + + return ( + { + const role = projectMap[key].member_role; + return ( +
+ {role ? getUserRole(role)?.toLowerCase() : "Guest"} +
+ ); + }} + shouldRender + renderChildren={(key: string) => } + /> + ); +}); diff --git a/web/core/components/settings/sidebar.tsx b/web/core/components/settings/sidebar.tsx deleted file mode 100644 index 17dacb5ef77..00000000000 --- a/web/core/components/settings/sidebar.tsx +++ /dev/null @@ -1,106 +0,0 @@ -import { WorkspaceEditionBadge } from "ee/components/workspace"; -import Link from "next/link"; -import { EUserWorkspaceRoles } from "@plane/constants"; -import { useTranslation } from "@plane/i18n"; -import { cn } from "@plane/utils"; -import { getUserRole } from "@/helpers/user.helper"; -import { useWorkspace } from "@/hooks/store"; -import WorkspaceLogo from "./workspace-logo"; - -type SettingsSidebarProps = { - categories: string[]; - workspaceSlug: string; - children?: React.ReactNode; - customHeader?: React.ReactNode; - groupedSettings: { - [key: string]: { - key: string; - i18n_label: string; - href: string; - access?: EUserWorkspaceRoles[]; - }[]; - }; - isActive: (data: { href: string }) => boolean; - shouldRender: boolean | ((data: { key: string; access?: EUserWorkspaceRoles[] | undefined }) => boolean); - actionIcons?: (props: { type: string; size?: number; className?: string }) => React.ReactNode; -}; - -const SettingsSidebar = (props: SettingsSidebarProps) => { - const { categories, groupedSettings, workspaceSlug, children, customHeader, isActive, shouldRender, actionIcons } = - props; - const { currentWorkspace } = useWorkspace(); - const { t } = useTranslation(); - - return ( -
-
- {/* Header */} - {customHeader - ? customHeader - : currentWorkspace && ( -
-
- -
-
- {currentWorkspace.name} -
-
- {getUserRole(currentWorkspace.role)?.toLowerCase() || "guest"} -
-
-
-
- -
-
- )} - {/* Navigation */} -
- {categories.map((category) => ( -
- {t(category)} -
- {groupedSettings[category].map( - (setting) => - (typeof shouldRender === "function" ? shouldRender(setting) : shouldRender) && ( -
- - {actionIcons && actionIcons({ type: setting.key, size: 16 })} -
{t(setting.i18n_label)}
- - {/* Nested Navigation */} - {children} -
- ) - )} -
-
- ))} -
-
-
- ); -}; - -export default SettingsSidebar; diff --git a/web/core/components/settings/sidebar/header.tsx b/web/core/components/settings/sidebar/header.tsx new file mode 100644 index 00000000000..85fbe37d840 --- /dev/null +++ b/web/core/components/settings/sidebar/header.tsx @@ -0,0 +1,38 @@ +import { getUserRole } from "@/helpers/user.helper"; +import { useWorkspace } from "@/hooks/store/use-workspace"; +import { WorkspaceEditionBadge } from "@/plane-web/components/workspace/edition-badge"; +import WorkspaceLogo from "../workspace-logo"; + +export const SettingsSidebarHeader = (props: { customHeader?: React.ReactNode }) => { + const { customHeader } = props; + const { currentWorkspace } = useWorkspace(); + return customHeader + ? customHeader + : currentWorkspace && ( +
+
+ +
+
+ {currentWorkspace.name} +
+
+ {getUserRole(currentWorkspace.role)?.toLowerCase() || "guest"} +
+
+
+
+ +
+
+ ); +}; diff --git a/web/core/components/settings/sidebar/index.ts b/web/core/components/settings/sidebar/index.ts new file mode 100644 index 00000000000..1efe34c51ec --- /dev/null +++ b/web/core/components/settings/sidebar/index.ts @@ -0,0 +1 @@ +export * from "./root"; diff --git a/web/core/components/settings/sidebar/nav-item.tsx b/web/core/components/settings/sidebar/nav-item.tsx new file mode 100644 index 00000000000..ba9f7035d1f --- /dev/null +++ b/web/core/components/settings/sidebar/nav-item.tsx @@ -0,0 +1,88 @@ +import React, { useState } from "react"; +import Link from "next/link"; +import { useParams } from "next/navigation"; +import { Disclosure } from "@headlessui/react"; +import { EUserWorkspaceRoles } from "@plane/constants"; +import { useTranslation } from "@plane/i18n"; +import { cn } from "@/helpers/common.helper"; + +export type TSettingItem = { + key: string; + i18n_label: string; + href: string; + access?: EUserWorkspaceRoles[]; + icon?: React.ReactNode; +}; +export type TSettingsSidebarNavItemProps = { + workspaceSlug: string; + setting: TSettingItem; + isActive: boolean | ((data: { href: string }) => boolean); + actionIcons?: (props: { type: string; size?: number; className?: string }) => React.ReactNode; + appendItemsToTitle?: (key: string) => React.ReactNode; + renderChildren?: (key: string) => React.ReactNode; +}; + +const SettingsSidebarNavItem = (props: TSettingsSidebarNavItemProps) => { + const { workspaceSlug, setting, isActive, actionIcons, appendItemsToTitle, renderChildren } = props; + // router + const { projectId } = useParams(); + // i18n + const { t } = useTranslation(); + // state + const [isExpanded, setIsExpanded] = useState(projectId === setting.key); + // derived + const buttonClass = cn( + "flex w-full items-center px-2 py-1.5 rounded text-custom-text-200 justify-between", + "hover:bg-custom-primary-100/10", + { + "text-custom-primary-200 bg-custom-primary-100/10": typeof isActive === "function" ? isActive(setting) : isActive, + "hover:bg-custom-sidebar-background-90 active:bg-custom-sidebar-background-90": + typeof isActive === "function" ? !isActive(setting) : !isActive, + } + ); + + const titleElement = ( + <> +
+ {setting.icon ? setting.icon : actionIcons && actionIcons({ type: setting.key, size: 16 })} +
{t(setting.i18n_label)}
+
+ {appendItemsToTitle?.(setting.key)} + + ); + + return ( + + setIsExpanded(!isExpanded)} + > + {renderChildren ? ( +
{titleElement}
+ ) : ( + + {titleElement} + + )} +
+ {/* Nested Navigation */} + {isExpanded && ( + +
{renderChildren?.(setting.key)}
+
+ )} +
+ ); +}; + +export default SettingsSidebarNavItem; diff --git a/web/core/components/settings/sidebar/root.tsx b/web/core/components/settings/sidebar/root.tsx new file mode 100644 index 00000000000..5d3259dce35 --- /dev/null +++ b/web/core/components/settings/sidebar/root.tsx @@ -0,0 +1,64 @@ +import { useTranslation } from "@plane/i18n"; +import { SettingsSidebarHeader } from "./header"; +import SettingsSidebarNavItem, { TSettingItem } from "./nav-item"; + +interface SettingsSidebarProps { + customHeader?: React.ReactNode; + categories: string[]; + groupedSettings: { + [key: string]: TSettingItem[]; + }; + workspaceSlug: string; + isActive: boolean | ((data: { href: string }) => boolean); + shouldRender: (setting: TSettingItem) => boolean; + actionIcons?: (props: { type: string; size?: number; className?: string }) => React.ReactNode; + appendItemsToTitle?: (key: string) => React.ReactNode; + renderChildren?: (key: string) => React.ReactNode; +} + +export const SettingsSidebar = (props: SettingsSidebarProps) => { + const { + customHeader, + categories, + groupedSettings, + workspaceSlug, + isActive, + shouldRender, + actionIcons, + appendItemsToTitle, + renderChildren, + } = props; + const { t } = useTranslation(); + return ( +
+ {/* Header */} + + {/* Navigation */} +
+ {categories.map((category) => ( +
+ {t(category)} + {groupedSettings[category].length > 0 && ( +
+ {groupedSettings[category].map( + (setting) => + (typeof shouldRender === "function" ? shouldRender(setting) : shouldRender) && ( + + ) + )} +
+ )} +
+ ))} +
+
+ ); +}; diff --git a/web/core/components/settings/tabs.tsx b/web/core/components/settings/tabs.tsx index 6ebeaeec603..db4eae0df75 100644 --- a/web/core/components/settings/tabs.tsx +++ b/web/core/components/settings/tabs.tsx @@ -1,6 +1,8 @@ +import { observer } from "mobx-react"; import Link from "next/link"; import { useParams, usePathname } from "next/navigation"; import { cn } from "@plane/utils"; +import { useProject } from "@/hooks/store"; const TABS = { account: { @@ -20,11 +22,13 @@ const TABS = { }, }; -const SettingsTabs = () => { +const SettingsTabs = observer(() => { // router const pathname = usePathname(); const { workspaceSlug } = useParams(); - // derived + // store hooks + const { joinedProjectIds } = useProject(); + const currentTab = pathname.includes(TABS.projects.href) ? TABS.projects : pathname.includes(TABS.account.href) @@ -35,10 +39,11 @@ const SettingsTabs = () => {
{Object.values(TABS).map((tab) => { const isActive = currentTab?.key === tab.key; + const href = tab.key === TABS.projects.key ? `${tab.href}${joinedProjectIds[0] || ""}` : tab.href; return ( { })}
); -}; +}); export default SettingsTabs; From c82e35ff0c5fa7a82e1d16c853f2d92b8aa5a2a9 Mon Sep 17 00:00:00 2001 From: gakshita Date: Fri, 25 Apr 2025 14:43:54 +0530 Subject: [PATCH 08/45] routes --- packages/constants/src/profile.ts | 24 +++++++++---------- packages/constants/src/settings.ts | 1 - .../[projectId]/cycles/(list)/page.tsx | 2 +- .../(detail)/[projectId]/inbox/page.tsx | 2 +- .../[projectId]/modules/(list)/page.tsx | 2 +- .../[projectId]/pages/(list)/page.tsx | 2 +- .../[projectId]/views/(list)/page.tsx | 2 +- .../settings/(workspace)/layout.tsx | 3 ++- .../settings/(workspace)/sidebar.tsx | 6 ++++- .../{profile => account}/activity/page.tsx | 0 .../{profile => account}/api-tokens/page.tsx | 0 .../{profile => account}/appearance/page.tsx | 0 .../settings/{profile => account}/layout.tsx | 0 .../notifications/page.tsx | 0 .../settings/{profile => account}/page.tsx | 0 .../{profile => account}/security/page.tsx | 0 .../settings/{profile => account}/sidebar.tsx | 0 .../home/widgets/empty-states/no-projects.tsx | 2 +- .../empty-states/archived-issues.tsx | 2 +- web/core/components/profile/sidebar.tsx | 4 ++-- web/core/components/settings/tabs.tsx | 2 +- .../workspace/delete-workspace-form.tsx | 4 +++- .../workspace/settings/members-list-item.tsx | 2 +- .../components/workspace/sidebar/dropdown.tsx | 5 ++-- .../workspace/sidebar/projects-list-item.tsx | 2 +- .../layouts/auth-layout/workspace-wrapper.tsx | 2 +- 26 files changed, 38 insertions(+), 31 deletions(-) rename web/app/[workspaceSlug]/(settings)/settings/{profile => account}/activity/page.tsx (100%) rename web/app/[workspaceSlug]/(settings)/settings/{profile => account}/api-tokens/page.tsx (100%) rename web/app/[workspaceSlug]/(settings)/settings/{profile => account}/appearance/page.tsx (100%) rename web/app/[workspaceSlug]/(settings)/settings/{profile => account}/layout.tsx (100%) rename web/app/[workspaceSlug]/(settings)/settings/{profile => account}/notifications/page.tsx (100%) rename web/app/[workspaceSlug]/(settings)/settings/{profile => account}/page.tsx (100%) rename web/app/[workspaceSlug]/(settings)/settings/{profile => account}/security/page.tsx (100%) rename web/app/[workspaceSlug]/(settings)/settings/{profile => account}/sidebar.tsx (100%) diff --git a/packages/constants/src/profile.ts b/packages/constants/src/profile.ts index 7f5d8f55f8e..c43adcccf3a 100644 --- a/packages/constants/src/profile.ts +++ b/packages/constants/src/profile.ts @@ -2,38 +2,38 @@ export const PROFILE_SETTINGS = { profile: { key: "profile", i18n_label: "profile.actions.profile", - href: `/settings/profile`, - highlight: (pathname: string) => pathname === "/settings/profile/", + href: `/settings/account`, + highlight: (pathname: string) => pathname === "/settings/account/", }, security: { key: "security", i18n_label: "profile.actions.security", - href: `/settings/profile/security`, - highlight: (pathname: string) => pathname === "/settings/profile/security/", + href: `/settings/account/security`, + highlight: (pathname: string) => pathname === "/settings/account/security/", }, activity: { key: "activity", i18n_label: "profile.actions.activity", - href: `/settings/profile/activity`, - highlight: (pathname: string) => pathname === "/settings/profile/activity/", + href: `/settings/account/activity`, + highlight: (pathname: string) => pathname === "/settings/account/activity/", }, appearance: { key: "appearance", i18n_label: "profile.actions.appearance", - href: `/settings/profile/appearance`, - highlight: (pathname: string) => pathname.includes("/settings/profile/appearance"), + href: `/settings/account/appearance`, + highlight: (pathname: string) => pathname.includes("/settings/account/appearance"), }, notifications: { key: "notifications", i18n_label: "profile.actions.notifications", - href: `/settings/profile/notifications`, - highlight: (pathname: string) => pathname === "/settings/profile/notifications/", + href: `/settings/account/notifications`, + highlight: (pathname: string) => pathname === "/settings/account/notifications/", }, "api-tokens": { key: "api-tokens", i18n_label: "profile.actions.api-tokens", - href: `/settings/profile/api-tokens`, - highlight: (pathname: string) => pathname === "/settings/profile/api-tokens/", + href: `/settings/account/api-tokens`, + highlight: (pathname: string) => pathname === "/settings/account/api-tokens/", }, }; export const PROFILE_ACTION_LINKS: { diff --git a/packages/constants/src/settings.ts b/packages/constants/src/settings.ts index 7869103db18..bbb2ab8aa86 100644 --- a/packages/constants/src/settings.ts +++ b/packages/constants/src/settings.ts @@ -1,5 +1,4 @@ import { PROFILE_SETTINGS } from "."; -import { EUserWorkspaceRoles } from "./user"; import { WORKSPACE_SETTINGS } from "./workspace"; export enum WORKSPACE_SETTINGS_CATEGORY { diff --git a/web/app/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/cycles/(list)/page.tsx b/web/app/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/cycles/(list)/page.tsx index 5dfcd25f9de..70a7e4781fd 100644 --- a/web/app/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/cycles/(list)/page.tsx +++ b/web/app/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/cycles/(list)/page.tsx @@ -69,7 +69,7 @@ const ProjectCyclesPage = observer(() => { primaryButton={{ text: t("disabled_project.empty_state.cycle.primary_button.text"), onClick: () => { - router.push(`/${workspaceSlug}/projects/${projectId}/settings/features`); + router.push(`/${workspaceSlug}/settings/project/${projectId}/features`); }, disabled: !hasAdminLevelPermission, }} diff --git a/web/app/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/inbox/page.tsx b/web/app/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/inbox/page.tsx index 5cb8509e0a3..f71a685c36e 100644 --- a/web/app/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/inbox/page.tsx +++ b/web/app/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/inbox/page.tsx @@ -42,7 +42,7 @@ const ProjectInboxPage = observer(() => { primaryButton={{ text: t("disabled_project.empty_state.inbox.primary_button.text"), onClick: () => { - router.push(`/${workspaceSlug}/projects/${projectId}/settings/features`); + router.push(`/${workspaceSlug}/settings/project/${projectId}/features`); }, disabled: !canPerformEmptyStateActions, }} diff --git a/web/app/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/modules/(list)/page.tsx b/web/app/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/modules/(list)/page.tsx index 572cb3862f7..9f2371f41b2 100644 --- a/web/app/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/modules/(list)/page.tsx +++ b/web/app/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/modules/(list)/page.tsx @@ -61,7 +61,7 @@ const ProjectModulesPage = observer(() => { primaryButton={{ text: t("disabled_project.empty_state.module.primary_button.text"), onClick: () => { - router.push(`/${workspaceSlug}/projects/${projectId}/settings/features`); + router.push(`/${workspaceSlug}/settings/project/${projectId}/features`); }, disabled: !canPerformEmptyStateActions, }} diff --git a/web/app/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/pages/(list)/page.tsx b/web/app/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/pages/(list)/page.tsx index 56d89d7f452..733b124e770 100644 --- a/web/app/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/pages/(list)/page.tsx +++ b/web/app/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/pages/(list)/page.tsx @@ -54,7 +54,7 @@ const ProjectPagesPage = observer(() => { primaryButton={{ text: t("disabled_project.empty_state.page.primary_button.text"), onClick: () => { - router.push(`/${workspaceSlug}/projects/${projectId}/settings/features`); + router.push(`/${workspaceSlug}/settings/project/${projectId}/features`); }, disabled: !canPerformEmptyStateActions, }} diff --git a/web/app/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/views/(list)/page.tsx b/web/app/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/views/(list)/page.tsx index d4a3051ec94..7726e6f7212 100644 --- a/web/app/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/views/(list)/page.tsx +++ b/web/app/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/views/(list)/page.tsx @@ -68,7 +68,7 @@ const ProjectViewsPage = observer(() => { primaryButton={{ text: t("disabled_project.empty_state.view.primary_button.text"), onClick: () => { - router.push(`/${workspaceSlug}/projects/${projectId}/settings/features`); + router.push(`/${workspaceSlug}/settings/project/${projectId}/features`); }, disabled: !canPerformEmptyStateActions, }} diff --git a/web/app/[workspaceSlug]/(settings)/settings/(workspace)/layout.tsx b/web/app/[workspaceSlug]/(settings)/settings/(workspace)/layout.tsx index fce444f315e..c0d1d0beccb 100644 --- a/web/app/[workspaceSlug]/(settings)/settings/(workspace)/layout.tsx +++ b/web/app/[workspaceSlug]/(settings)/settings/(workspace)/layout.tsx @@ -20,7 +20,7 @@ export interface IWorkspaceSettingLayout { const pathnameToAccessKey = (pathname: string) => { const pathArray = pathname.replace(/^\/|\/$/g, "").split("/"); // Regex removes leading and trailing slashes const workspaceSlug = pathArray[0]; - const accessKey = pathArray.slice(1).join("/"); + const accessKey = pathArray.slice(1, 3).join("/"); return { workspaceSlug, accessKey: `/${accessKey}` || "" }; }; @@ -33,6 +33,7 @@ const WorkspaceSettingLayout: FC = observer((props) => // derived values const { workspaceSlug, accessKey } = pathnameToAccessKey(pathname); const userWorkspaceRole = workspaceUserInfo?.[workspaceSlug.toString()]?.role; + const isAuthorized = pathname && workspaceSlug && diff --git a/web/app/[workspaceSlug]/(settings)/settings/(workspace)/sidebar.tsx b/web/app/[workspaceSlug]/(settings)/settings/(workspace)/sidebar.tsx index 65ffb926c6a..1ff34655cee 100644 --- a/web/app/[workspaceSlug]/(settings)/settings/(workspace)/sidebar.tsx +++ b/web/app/[workspaceSlug]/(settings)/settings/(workspace)/sidebar.tsx @@ -46,7 +46,11 @@ export const WorkspaceSettingsSidebar = (props: TWorkspaceSettingsSidebarProps) categories={WORKSPACE_SETTINGS_CATEGORIES} groupedSettings={GROUPED_WORKSPACE_SETTINGS} workspaceSlug={workspaceSlug.toString()} - isActive={(data: { href: string }) => pathname === `/${workspaceSlug}${data.href}/`} + isActive={(data: { href: string }) => + data.href === "/settings" + ? pathname === `/${workspaceSlug}${data.href}/` + : new RegExp(`^/${workspaceSlug}${data.href}/`).test(pathname) + } shouldRender={(data: { key: string; access?: EUserWorkspaceRoles[] | undefined }) => data.access ? shouldRenderSettingLink(workspaceSlug.toString(), data.key) && diff --git a/web/app/[workspaceSlug]/(settings)/settings/profile/activity/page.tsx b/web/app/[workspaceSlug]/(settings)/settings/account/activity/page.tsx similarity index 100% rename from web/app/[workspaceSlug]/(settings)/settings/profile/activity/page.tsx rename to web/app/[workspaceSlug]/(settings)/settings/account/activity/page.tsx diff --git a/web/app/[workspaceSlug]/(settings)/settings/profile/api-tokens/page.tsx b/web/app/[workspaceSlug]/(settings)/settings/account/api-tokens/page.tsx similarity index 100% rename from web/app/[workspaceSlug]/(settings)/settings/profile/api-tokens/page.tsx rename to web/app/[workspaceSlug]/(settings)/settings/account/api-tokens/page.tsx diff --git a/web/app/[workspaceSlug]/(settings)/settings/profile/appearance/page.tsx b/web/app/[workspaceSlug]/(settings)/settings/account/appearance/page.tsx similarity index 100% rename from web/app/[workspaceSlug]/(settings)/settings/profile/appearance/page.tsx rename to web/app/[workspaceSlug]/(settings)/settings/account/appearance/page.tsx diff --git a/web/app/[workspaceSlug]/(settings)/settings/profile/layout.tsx b/web/app/[workspaceSlug]/(settings)/settings/account/layout.tsx similarity index 100% rename from web/app/[workspaceSlug]/(settings)/settings/profile/layout.tsx rename to web/app/[workspaceSlug]/(settings)/settings/account/layout.tsx diff --git a/web/app/[workspaceSlug]/(settings)/settings/profile/notifications/page.tsx b/web/app/[workspaceSlug]/(settings)/settings/account/notifications/page.tsx similarity index 100% rename from web/app/[workspaceSlug]/(settings)/settings/profile/notifications/page.tsx rename to web/app/[workspaceSlug]/(settings)/settings/account/notifications/page.tsx diff --git a/web/app/[workspaceSlug]/(settings)/settings/profile/page.tsx b/web/app/[workspaceSlug]/(settings)/settings/account/page.tsx similarity index 100% rename from web/app/[workspaceSlug]/(settings)/settings/profile/page.tsx rename to web/app/[workspaceSlug]/(settings)/settings/account/page.tsx diff --git a/web/app/[workspaceSlug]/(settings)/settings/profile/security/page.tsx b/web/app/[workspaceSlug]/(settings)/settings/account/security/page.tsx similarity index 100% rename from web/app/[workspaceSlug]/(settings)/settings/profile/security/page.tsx rename to web/app/[workspaceSlug]/(settings)/settings/account/security/page.tsx diff --git a/web/app/[workspaceSlug]/(settings)/settings/profile/sidebar.tsx b/web/app/[workspaceSlug]/(settings)/settings/account/sidebar.tsx similarity index 100% rename from web/app/[workspaceSlug]/(settings)/settings/profile/sidebar.tsx rename to web/app/[workspaceSlug]/(settings)/settings/account/sidebar.tsx diff --git a/web/core/components/home/widgets/empty-states/no-projects.tsx b/web/core/components/home/widgets/empty-states/no-projects.tsx index 44496aa81c4..f3f35d5a114 100644 --- a/web/core/components/home/widgets/empty-states/no-projects.tsx +++ b/web/core/components/home/widgets/empty-states/no-projects.tsx @@ -115,7 +115,7 @@ export const NoProjectsEmptyState = observer(() => { flag: "visited_profile", cta: { text: "home.empty.personalize_account.cta", - link: "/profile", + link: `/${workspaceSlug}/settings/account`, disabled: false, }, }, diff --git a/web/core/components/issues/issue-layouts/empty-states/archived-issues.tsx b/web/core/components/issues/issue-layouts/empty-states/archived-issues.tsx index b4c3f7ae55c..a20b2513688 100644 --- a/web/core/components/issues/issue-layouts/empty-states/archived-issues.tsx +++ b/web/core/components/issues/issue-layouts/empty-states/archived-issues.tsx @@ -72,7 +72,7 @@ export const ProjectArchivedEmptyState: React.FC = observer(() => { assetPath={archivedIssuesResolvedPath} primaryButton={{ text: t("project_issues.empty_state.no_archived_issues.primary_button.text"), - onClick: () => router.push(`/${workspaceSlug}/projects/${projectId}/settings/automations`), + onClick: () => router.push(`/${workspaceSlug}/settings/project/${projectId}/automations`), disabled: !canPerformEmptyStateActions, }} /> diff --git a/web/core/components/profile/sidebar.tsx b/web/core/components/profile/sidebar.tsx index d3e007ea370..0fd78782b24 100644 --- a/web/core/components/profile/sidebar.tsx +++ b/web/core/components/profile/sidebar.tsx @@ -37,7 +37,7 @@ export const ProfileSidebar: FC = observer((props) => { // refs const ref = useRef(null); // router - const { userId } = useParams(); + const { userId, workspaceSlug } = useParams(); // store hooks const { data: currentUser } = useUser(); const { profileSidebarCollapsed, toggleProfileSidebar } = useAppTheme(); @@ -94,7 +94,7 @@ export const ProfileSidebar: FC = observer((props) => {
{currentUser?.id === userId && (
- + diff --git a/web/core/components/settings/tabs.tsx b/web/core/components/settings/tabs.tsx index db4eae0df75..a97bc5b05d5 100644 --- a/web/core/components/settings/tabs.tsx +++ b/web/core/components/settings/tabs.tsx @@ -8,7 +8,7 @@ const TABS = { account: { key: "account", label: "Account", - href: `/settings/profile/`, + href: `/settings/account/`, }, workspace: { key: "workspace", diff --git a/web/core/components/workspace/delete-workspace-form.tsx b/web/core/components/workspace/delete-workspace-form.tsx index b83d07b3351..7dd918c0fdf 100644 --- a/web/core/components/workspace/delete-workspace-form.tsx +++ b/web/core/components/workspace/delete-workspace-form.tsx @@ -2,6 +2,7 @@ import React from "react"; import { observer } from "mobx-react"; +import { useParams } from "next/navigation"; import { Controller, useForm } from "react-hook-form"; import { AlertTriangle } from "lucide-react"; // types @@ -30,6 +31,7 @@ export const DeleteWorkspaceForm: React.FC = observer((props) => { const { data, onClose } = props; // router const router = useAppRouter(); + const { workspaceSlug } = useParams(); // store hooks const { captureWorkspaceEvent } = useEventTracker(); const { deleteWorkspace } = useWorkspace(); @@ -60,7 +62,7 @@ export const DeleteWorkspaceForm: React.FC = observer((props) => { await deleteWorkspace(data.slug) .then(() => { handleClose(); - router.push("/profile"); + router.push(`/${workspaceSlug}/settings/account`); captureWorkspaceEvent({ eventName: WORKSPACE_DELETED, payload: { diff --git a/web/core/components/workspace/settings/members-list-item.tsx b/web/core/components/workspace/settings/members-list-item.tsx index 3c2610a09a7..5b5ecd64069 100644 --- a/web/core/components/workspace/settings/members-list-item.tsx +++ b/web/core/components/workspace/settings/members-list-item.tsx @@ -45,7 +45,7 @@ export const WorkspaceMembersListItem: FC = observer((props) => { state: "SUCCESS", element: "Workspace settings members page", }); - router.push("/profile"); + router.push(`/${workspaceSlug}/settings/account`); }) .catch((err: any) => setToast({ diff --git a/web/core/components/workspace/sidebar/dropdown.tsx b/web/core/components/workspace/sidebar/dropdown.tsx index f9e2aca5989..a879f9e19f6 100644 --- a/web/core/components/workspace/sidebar/dropdown.tsx +++ b/web/core/components/workspace/sidebar/dropdown.tsx @@ -3,6 +3,7 @@ import { Fragment, Ref, useState } from "react"; import { observer } from "mobx-react"; import Link from "next/link"; +import { useParams } from "next/navigation"; import { usePopper } from "react-popper"; // icons import { ChevronDown, CirclePlus, LogOut, Mails, Settings } from "lucide-react"; @@ -26,7 +27,7 @@ import SidebarDropdownItem from "./dropdown-item"; export const SidebarDropdown = observer(() => { const { t } = useTranslation(); - + const { workspaceSlug } = useParams(); // store hooks const { sidebarCollapsed, toggleSidebar } = useAppTheme(); const { data: currentUser } = useUser(); @@ -217,7 +218,7 @@ export const SidebarDropdown = observer(() => { >
{currentUser?.email} - + diff --git a/web/core/components/workspace/sidebar/projects-list-item.tsx b/web/core/components/workspace/sidebar/projects-list-item.tsx index a776cada4e9..f0164da121d 100644 --- a/web/core/components/workspace/sidebar/projects-list-item.tsx +++ b/web/core/components/workspace/sidebar/projects-list-item.tsx @@ -353,7 +353,7 @@ export const SidebarProjectsListItem: React.FC = observer((props) => { )} - +
{t("settings")} diff --git a/web/core/layouts/auth-layout/workspace-wrapper.tsx b/web/core/layouts/auth-layout/workspace-wrapper.tsx index 85de7b8090f..80530b17ae7 100644 --- a/web/core/layouts/auth-layout/workspace-wrapper.tsx +++ b/web/core/layouts/auth-layout/workspace-wrapper.tsx @@ -178,7 +178,7 @@ export const WorkspaceAuthWrapper: FC = observer((props) )} - +
From 57560c214d7c1d3ffedc36c2ac97062efd4879a5 Mon Sep 17 00:00:00 2001 From: gakshita Date: Fri, 25 Apr 2025 15:55:24 +0530 Subject: [PATCH 09/45] fix: handled no project --- .../project/{[projectId] => }/layout.tsx | 22 ++++++++-- .../(settings)/settings/project/page.tsx | 38 ++++++++++++++++++ .../project-settings/no-projects-dark.png | Bin 0 -> 299445 bytes .../project-settings/no-projects-light.png | Bin 0 -> 261332 bytes 4 files changed, 56 insertions(+), 4 deletions(-) rename web/app/[workspaceSlug]/(settings)/settings/project/{[projectId] => }/layout.tsx (54%) create mode 100644 web/app/[workspaceSlug]/(settings)/settings/project/page.tsx create mode 100644 web/public/empty-state/project-settings/no-projects-dark.png create mode 100644 web/public/empty-state/project-settings/no-projects-light.png diff --git a/web/app/[workspaceSlug]/(settings)/settings/project/[projectId]/layout.tsx b/web/app/[workspaceSlug]/(settings)/settings/project/layout.tsx similarity index 54% rename from web/app/[workspaceSlug]/(settings)/settings/project/[projectId]/layout.tsx rename to web/app/[workspaceSlug]/(settings)/settings/project/layout.tsx index 094ae0be391..a62013a0558 100644 --- a/web/app/[workspaceSlug]/(settings)/settings/project/[projectId]/layout.tsx +++ b/web/app/[workspaceSlug]/(settings)/settings/project/layout.tsx @@ -1,32 +1,46 @@ "use client"; -import { ReactNode } from "react"; +import { ReactNode, useEffect } from "react"; +import { observer } from "mobx-react"; import { useParams, usePathname } from "next/navigation"; // components import { CommandPalette } from "@/components/command-palette"; import { SettingsContentWrapper } from "@/components/settings"; import { ProjectSettingsSidebar } from "@/components/settings/project/sidebar"; +import { useProject } from "@/hooks/store"; +import { useAppRouter } from "@/hooks/use-app-router"; import { ProjectAuthWrapper } from "@/plane-web/layouts/project-wrapper"; type Props = { children: ReactNode; }; -export default function ProjectSettingsLayout(props: Props) { +const ProjectSettingsLayout = observer((props: Props) => { const { children } = props; // router + const router = useAppRouter(); const pathname = usePathname(); const { workspaceSlug, projectId } = useParams(); + const { joinedProjectIds } = useProject(); + + useEffect(() => { + if (projectId) return; + if (joinedProjectIds.length > 0) { + router.push(`/${workspaceSlug}/settings/project/${joinedProjectIds[0]}`); + } + }, [joinedProjectIds, router, workspaceSlug, projectId]); return ( <>
- + {projectId && } {children}
); -} +}); + +export default ProjectSettingsLayout; diff --git a/web/app/[workspaceSlug]/(settings)/settings/project/page.tsx b/web/app/[workspaceSlug]/(settings)/settings/project/page.tsx new file mode 100644 index 00000000000..65ea6270152 --- /dev/null +++ b/web/app/[workspaceSlug]/(settings)/settings/project/page.tsx @@ -0,0 +1,38 @@ +"use client"; +import Image from "next/image"; +import Link from "next/link"; +import { useTheme } from "next-themes"; +import { Button, getButtonStyling } from "@plane/ui"; +import { cn } from "@plane/utils"; +import { useCommandPalette } from "@/hooks/store"; + +const ProjectSettingsPage = () => { + // store hooks + const { resolvedTheme } = useTheme(); + const { toggleCreateProjectModal } = useCommandPalette(); + // derived values + const resolvedPath = + resolvedTheme === "dark" + ? "/empty-state/project-settings/no-projects-dark.png" + : "/empty-state/project-settings/no-projects-light.png"; + return ( +
+ No projects yet +
No projects yet
+
+ Projects act as the foundation for goal-driven work. They let you manage your teams, tasks, and everything you + need to get things done. +
+
+ + Learn more about projects + + +
+
+ ); +}; + +export default ProjectSettingsPage; diff --git a/web/public/empty-state/project-settings/no-projects-dark.png b/web/public/empty-state/project-settings/no-projects-dark.png new file mode 100644 index 0000000000000000000000000000000000000000..deed3d0c05b0d422943fe16bee174d609f50a073 GIT binary patch literal 299445 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
(seWj<*R&j0T9KmcqX)Lser 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π4FkI zA()Rg18^;aH7=)9^(B<073nHR|D&CR z;rN7R`0C8MM{Kvw0ar27bkFyx=RU4S4urJxF8GI+nzD!iTL7a5@t8X)8e8f`$6LUx zsppvECA)^M9*D`=*ZNx%5J`A7ZIgykKoBa>hnOcUNB1zTA6?68DvLr@C;+tF2V8qo zs!s14d@lF`zs&tyGauTmBV^w<)ig9yzDsZF`1~Kjek-MrLO_O{d9Qq2*$}!T%{wkN z|Brcgd&=5ltnA!kP)FWUHsTHpQ^?%HJpLqo^xlyB#Zic)c)*^fMP39~JpPrCPCIt5 zTSO$3xM9;fjnIdPnpBAeQR)WM{h~#xK?Vn~52j4eg%p4?1gp8EC2g+JkP1Nn2Trl% zj6_CRx>-K?zOop12>F~Um9HKu{F!3nDJkP3`>%GVxjTvg>M3{OZ_EMu^vq4z@hxps z40PUY0ANetC}`SnYgw}{Nbx8k@qU$J+an8fr6qvDz8!-n3t{<$@z@)_K`N-TDq^S> z@3bU^BCBWC7KiIkNcGjC$*pz}`k&PjVYpG3qW_XDkH{Pj>b^-QrK?{(vmBO(4mswy zF2hYjh=QW*M5kQ%ivo59;h<2lNoy@p10oL7tQJznlgBV`%xZu z`tpzytr2DVNt_}cTAQx!SyIy3#;Q%jfADTJxi3ywf3jX4o=YcX%C}8L`;iST6_Y2Z z7a|WP1GHj|yFyCn;~a_KldDQo-at?Vwv(|~AeflO!5!e6w`6XbUCtrX0Q#7gmZL!7 zqPxbi{L4T5Htk{DwZNiAFr1-RallRIKmW{so;~a%Zwszi=TEc!$r-Mom$U>*Cu5=3 zWOPN_7hhbGTId5oe9}CJ3pIYW&oIF8-bu->7tuJU8NjID{x=Jij-I3uN3dh|@{Jt0OhY7f6XR!n%<~i>5Oa}sr>Y!)Dz(TX#-6)$< z$WN<>WsvOBzI?Iy&`~=ga!1Wq`?QgD9?~bD9=j%!o&d$idy6$KOqVz(5(@*Sxh`zU zNt?uPyyvHJ2|;y%5upuPnn54(RGL1BuW@;O;yLE$IM7PJ7#xXt&Mq2$*Lz-vy<$cR?Nt4| zR<}e*a6`=-$j&T$vX@=4Odu_N>Z&f(;u8suxKJo@m(D2*Y92FNB$l`|Y$xPk@!=m6 z#fw2n|8y5n#f0Zks4%#UbGa6{$)lGs%!ys*qIEJVC|dhs_F6pkEb+^0D}2fR-5G1w zjoadLEBISO;@achSI;#wQ2zf$kLcprntJ8&j|CrZ->L=PQBKrI_MX7w4t7~)?aKC6 z8MKT78OfSIX6l2Nn&%|tVy}7m_9v1C;|cZ8T3h%_cStO$Q3vGt$#&n8*zUM>bGgJ> z3RzoOvzbe7fv8UATNU!lHutM zjWTp^8^2SNaf9NbAk=LE!yeRxq}V>Qv~>*xO8XD`n7^(+bBYMRWdNtg4r4u*J%1b~ zFE-Q{&uFsGT$A{^>TO-p`yHa ze{R5Y_rR|2@lehy`{&dcL{;YeQ#zgp|aa%eB5HG^k$&H zODrcFfxzM;KyU{CoX-0>GNxCT-Cb`}_Qc)XwIYmBTxxMIJeKh@(_q!UG&lsXeD9M1 zu^EVnms=upd%W57p(M8B=fAqUlLHNcUzt5D%|oEKL|V%HjEXjBVqzF0vJ_N0Q z&J;&t%-fsa&ewPI>r^n*x&L;+c#&!BAhnYinE2|vAm+pADF8Oxr>-e1%14lrfA1pX zyXhSI7p-Fvm?H}ec>8Y%nLF3}FQY-qg154MeQG&d;pga3)UQIWE=q{|l{UV)1;gzu z{bye@f5V)6&6KnL3+r(Vs$X-lRoqXJ#8g_l_XZ8~lbzmu(9}&2WeXS8z-KX>;}~lV z$F@LHb%bLpkVK}v&xxfQOumXU(T&U{e>Emy(#~~`Hp^waz2_X0Yd*9hHqDpwe|YVM zOG!eOp~P~D+$IwXA+0dS;*1*hp$cPyU0{r0-nj|w%3!y1mQ8gINOC+=s*zo#p>`qJ z770*NGhBG_v}8xsf`Sdnz`4z0bxDEVbq!Nhz1toLEU{3Cg1GH_MSG_0Lhi*=E0K$q zWsaC3=pNrdfKJj6Inp}2;ClcM$xxL9aTD5DCK!;5TktG@!f!=M70AE5ET_R;X?k?O zFd#VGep5yseQ^N_P14gc;$Z}{W`ry!>Y3Vn-in)9p)U$TxyXLoxaKv@VLEZ+q9D$j z^WFp!#4atqbg%YFL!9vVcoaTN=#1+8g(&)>9h)l&;@k=SM8Zx!X!{t)N0krVEwp#w zAW}-gzydOlERliLX0s4a3+Ar6=9;6tNbLL9900PN?tWCd{NZ~TCq6S6wf74-{G=cb z#6XjsN(@2+k#3GX%ErMY%6lw81^1}Q@Ex;R>bg@QD%gB)2PN(ik^DT+a@~4=fZ){} zjwC-~JWAM6-%J!<6otGX?YK6_{w$mx)EpAgzvjEwd>p%4b9s-@z*`RyTpzrHa~H1M zvc!2kv-a{>gI%luFbfu)hFSNzeI1EvsMfq5lR@cTN5NI?dc2}XMx`qwk?!xjeNlc~ z#3^&q*|2sDfNT^Z`Xg*QU%64fc9GSJ`@lj$6Iv@zJeV+Q4bZGb%;Vwr^PM>4;3D_a z08@dM>Z8##ii4fP4{ilgGwTefrElpA$+^F*daXU?XBwcQZbpPTDY|y~MAC46R6`It z@#c2lW+G?YA*cR;yV$X^a&8|yZoe^-aLbEJnI(!+|G$B6o=EZbEv_@x>Ohhxy?Qn}jVjW41SX5MKt>WNQf(n(2_EPu-vx~sPnEAd zB#e}T0lSVtcg=c~I;u$dTdRv2fklFQvhVmx2KJ&kn`EiziSyx5#ichfrvSGbS%iY| zwshE1awXaly(v*jQ@E;nWy_7>d6UBylL@tJPj2F^H?T1f?1OsJnf3z=A>4|eRTP<;n=uZIIqHFN zqvQC6a2@YG$>)cbbhI|(c*P+uEm4;AxH55g|KhRr{3z| zz{7^U`$&R;;9f=l2`EtMr2&r37Xeb5A{kB8f%H@~OE{wz}d@p){lw3^U zhc92{NKh;6Z8n2I^h>SdnOtLL9Q_RAXC?>H3k{jmos>`K5+i{T7pLMkX0MENG@?Nm zHhJwk+}gSP$-<)Y{&RvhhqK8!?KuFdBVX|2h_Eu>1+KOtJnv;m!u)_Es3OiD2k1*Yu~VF`HB z%?x=ANeCcEbG&MLJz0m437XG|9c^wWRf-&qgGN0paiBbk@>O)fUz|jqaPEno&SI1op^LNU*L*;y&iPu$_59TZ zbp2XH(k&`kewh5&CH)TeNuDZ`^7$q_SmoWOjlgT_DH{CM*4o2C>U-MG*GIDsW@I{W z;NI$VjR7qHzkL@w!xgB)swfzg_W;8QOk|Ut zt1a$2S0kTUk|S{=+#w_=O)y1G-6Y#;cS5wy^fYKPP!%OxXo z!%y1OF$f`C0-q}(CwG%2pg{RLTDz(UanFZ+EiTCZ@0*6hCi`PZD{EhNY+EDs>5T9D zpmA8!hg}8N};PKHEq7Y zNHFZrUbE3#_6k8_|J8x$Ze}?@$)O@G^BnJ0-L)Fz;{O+6?Jg4b!9Yb?!Yj=#FloBd z>5U}JSHeJ{$y&drl@Cjb7+0yn;S%GKJwIL>^-&eTg0d(#qE9_d%>R2h8<`sdL8er# zl}aBAzD)NLYZHAGv9lWD?i!z9vPY&&T-?`Lqj~P#l9eKYLEsa!-kPz{#@3+9|0=2K z0JrRBB)Vy;<9nS?_;|$sc+;PgNFZIO5{+Xof`9My39J5tGlITEtapp7k%s#8dta>) z6pxJIP%mc7Kab+z(ujr#;6J0aEv9B`^WHNw;)LEhv>@I0{7%?VnzKbvOYZnOT6(XK zJg`heFe=*P_Soq6<&WVSXpVcq>#uBz$eSYzIb#B{x?>N2; zW@)%5T$eg7qjdM^J{mM7UR@>b^ktlddg~Am6k`V*E$BG51qau%p3CB>`g~-!i@+bM zW{=Pfc_Rk5Q}@ioZbw;o=py4W5_aK55M18h$YLr{QZwGNkH%{3@J9-Bs9!e3cj`A&^k^zqN`vrgbHdiKm096%#E zSD)c_6;l%OKLMb76oMaqmCmx+0FnplD8=CLX*U)5C|`GfG~(X8EYLLWWGd+j-%<}b zi%~y2DruB3tkuR3)Am|Pn6bw>sW?3kC;5`9JQ*eU#W4INs-dq?PHp!L%8~;J0{u5o z24V$R1E(QJZDCFS&kvwgj?y5*6URa^u8p;)`Q`0Jh;ETgkoiqvz>%D7uYYg2c83mY zVmkcL;6}7U%kgztZ7u(g{oLYxna@a`Qz;M`8Jk0l^((&pg==g1!2XMSi(#%bfYj^k zXF~?sc5s+QA{oG>Jo;}#E+XP2j7M+Y7e@(ss|8@Q`LFipL9oe#`^SLrUH9ZS)F>AD zd;wY0W9caiVc`{;_`DOMEJ=B;w7)ji-`$F=VVM5JGt@g*R8zM!4FFD_zl#XhuoLjt zb-jaz^`DIc6n}J}*Q)9U(m6}q@F9^Ki{{_Kl-6fu5Y_)Bn)ckll)uZ zzp=#23zXhi(p|Mb2ZKx}D$V9!mC$uT`?UsTf&DbtlRagMP6@gSuzv_2 z6vw{GzOi>yoFo4_eYj-ubLtG769tfyeQ%y#Icj8sAh8xkD?7 zkN)tPqw>)o#g9}&8)l_wk-7?mc%O%|;L0~n_n6QS32fFM@-8~m#gK=h>MK;r#kp++ zTC8z^Hx{puW1q5jX7;&IG8QCkn=%R??wm#PDf=0B>`e;!YQ0&TA0 z-@lI0U&N0;x)7B*?&T#=gIT{c_jsC7HZ-zt!jRYF(c}8(v2jQ0FDSh$@WuQA9fT7e zShbWbA{?lG$|_mJvP0&+XR{*M`@4CSwNg}}92ux<=rEH)>cu|f5)#%_V)ZkYLkx9DmHOuP}Rd_><9N86=|wYt}I|v`Mkp zo-kUkm(^~aG(A~t{gHnj@{xz}xSe@PpJ>m+D>Hb4+9wivu0Ny)wtxT;bq|1_HW+#g!TAHC=?MpX=jNWv@u!ZDM7&ftnzdLeRn17I z92ODLlse)iikb-Q@I&aMM^y}OUGFUdSY?sRSy}ehU7$4rh7wqTp4A}4{rLR>fU&p& zTK`TMcpbu8%>XQiq$eB8-XIy6piP4%F5k$}kM0;zEq**Yc+N&8!X+Gk2w%3X>NCzh zOH@OB&F*O>T}p4qRSNW7G_5wf-QWPG;y2g@OICk;HQ+o6G_U4~?_3l?=_luPTW$=ZdOO(q~5P)U;A6O~pn^A%k z?3-Hxn#cv+&4mF9&O~@PtuS-J z+}j5x3pLmt^1b*V`JWZR`eM2Bw(eMJ)pg90s7r)j?ANc}efO?W1L|e2KP}+}x*-vW z)bWn9hE$l+zN|AlZxx;EE=YQ?yJMAUb^VAGg=y&Pv3e7Pk5aLvVbn}voZxQJ4{R9< zXl;~$F1pAOF>y^oC}WwT%bNNp&$PYz73WlT+oH7$5hqgY#z`*Ax!~^H2b&`5!@tNZ zdnN+UMAyOxx)Ml#ZUG=%?#mu;aPyIqX~5E!GnJuc;cXdui>wI!_SvFn>QY>e6*-5@-rTHaB$> zek`RNKKQbZbYgfT^xyJqPq*NFf`|?Si0TP52S~qYnspk_;1EYwe?lZwZO=lalK4eR8 z5n3KL{|#gjqkExrESJK%=+K8AGXD&7?eUDUV0jFCEzPi;6SZ738LQ8n>BS>9O_Def{>4# zT^LUy{hjm#S1bh_*B%5^u~P9INK}@Yf9777=I+9IT-uHq_XC@c8^Pk)t1!h{k0EIOI(my^=2zx!PC;(T^*|-Lc(#&qOSLjXV?6M}mdr3_mFppqW zLjI(i*aUOGycWy?>>xlarfIQxkI%fTBR%zKbkYRws$vB!sJr2awITPaj1UtOMAy1z z;^clCS&GJ^;vK|v4@QIiR1Wq)sMqMlrCfG?#X#Wu)g0ltnHLQ>bO9H`yPo_BV$nOn z^8%ZKLgnsHif`d4?fmoYK+V1yM5$N-Mr&H zp{05`xb|V5DBDR~ex=^t4~Ai2AbZ3w%V;WDWx6Bl&5)+;4QZh$t)&!WnKFYJ4vN(9 z8cCBJ9A1%bp0p+3NHHJO1`kJjOmX{i5f~xPF`b1Yp{)3ncHK~lQJ9}l^UG)_X-W#D z7u@3Y|LC4l23)RzDL7B%s{zzZ*++kqQM-y;^HBZIcj&Kqk@w^dfU5-7o=XYBkV$EO z9uj3r_x$x;P>n^{FXAOGLBHW-2(4*fSmkcNozweUX2s640m|cr?Lfh5&Zi*-C0GT_ zU=c>wLPJy3n%3swlzxT8z<{A^Npv_U>m|WY&j@bC#j-D6-t4t29k+ooWiHJd@~!hB z>4=H<{~)OOAb-C{-}ELVA@@7Yr5&@^2eV5b?f;(r#t)kQpx%LmjA#l6Z7bl$UMTfQ z>`KYDwAoRBbo_K!&6=r6-k|pC_CzoavA)k^I zp9MG`DO*R1v~UYoB$#||3!h|U31WhTY!J)6%LZ;*0#RJP_-RT)dx){_f!u?+Mf2BX z{Oqqc8cYR4zb1G|m;LK<2alRlrf1o!+Y79zN67i{BNkTXxVhi?C4x?AM|4U|Kl#44 ztx9UYxqmA25&3hMcu7awzQwM-@YvUemDe;{@YE3mVE+}V?)o@E`5f?}?c$W7o!XLx z7_1oORTB3xJ4=O62TQBNjigk!OBT=NOArsdYd_up7EaSx{Qc{99;6@Y92it&+WF^)nTA zYt$FA(zwq6#Y&~+TD}Iqg$Nl1LrPQcx$wXJ1`hUl^J&ZR{&;}4YrZu&nPB~~{kMfb zT6QwEZC@x|gosZo`<&R$rds@>h^Vf$RyI&u7^x5-Y@l++;ZH=T684r;fjzon)Z0VT zRj$;$dU7RH%2Nm!5#Eadc=#a#`sb=#ZEs4!FMwBu_ERtV6qnLJ!1RF{TwlaDAfN{x zrv}xqfRSAQN?5yj#y|$k*^-nb9ZA$UKr8SvV)k>D=7Lj};L96YT;fdF9qmS!F1E|> z9nVn&6BhF{jMV7O$#xe9o2RF$+BYfPG&tz4SIkR_zp;mG+3o`q-xKiz!fI17 z#0i3@7lqT3vX_k|Pv$KE@oGAH+d>{@*?%$04=e5MR&Brz+&zQX%}(P`}-~;|~*FaHxBo-BMF? z0(mD1?;^yN_3J`VTf5A5ZOlb_(+p3bwqR!Mf5WO-(*iWX2&)J!%(Z=!4V8u=Po0=y9~c-q`lS;!u4=2~q+~|6Qa^G={>Y3h1;L$0TqVbJMt*V`v*yP4(g+muuOL;Cb#{c-l1T@6 zJ|jL%D2SWp3$#*exJN&~B$%1)A$8(+x23)EDEg9Zxdg3O$I0V{2O{n#xJ%eT`ug5~ z`0w^viJ4~4N5Tg%jmP^_bLEFbgJbOub&IS9hT_K;vg*391-QI%+gu&%-1g`Q{8YlQ zu3&$|8QN4vOPU9-zxj>|LvFb%>OIbwMRl4qnCgg+GW|_W(Dr)n8-DsD%)w91-o@lY zdsLRH&lkqskHke%G0P_1{>4gDCTpFl&A$J#eB`(S2PTky5c?)!*n}rWR1=SvtQomY zn`L7;(%D%ER1S9HlxJf5Kd3R#Rua$_x*7YrC!a4sjLAgskAkVdU3Z@$Mm(VFw3Gj?Y(fGN!xV_EoyW>lrv~%z6Kft zVFP#!V0uT@93CZ@%ZKUq_?ali{JL!U=j&s-lTZ?3;>^*G?3!UfOzS{4poB69JGQJ5Taz}}Sh?}AOZ?GcMwCSVC98^i3@7?e7;LX~S96w{*Sut6zGS{Aw zQAn6hQ&tpgzyt{^OGi6yD@r13baMUN;LU_AK(^x(C@f&B+W6osNJAn3y}WZV=kxdW zFYb&XP!AxD1t!#0jz>DF^iA}Zx!YunEw`c*2Q*zG2ZEMAHqy}aCI*8?=;i53V?|z| z>xo`;B{A>>UXvN=R|npOKR5gZ@#B5I*=hdae?+56u7z)g1bI{pUUgOImbx}x+gFU- zM*(iQ<(6s^gg4)HwKm+&KWDTxv=4!ls&K&Nn%h-zxZ2$aHhrLvA`~CJ+Kn2d`-7Ji zjy^poHytu>Pj7LzA@`of$)NaiwBZJse6{)vu4Zz$3^5gowe*2)zgCfTSM5y_KF}h# zPl`HzFEWw(5q=tCoEaq9(-sZ?TkLR|nFEM|(u#p+L?`k_#0&HGCb)*X-Wzx1)-@$W zY_j<=Md3?$u&ZqM!a9C5#$qS(TGOWMEvGIrKH{UW;|N?DY*xxPBjC_|E?@L)9Q9h$Q`Zwjndp*pwyc zqf2K&8GUZf`72Fqvg#T z+*0=ZYA~kwXB{;i=KIsawrQl}tAB_u9h&A`AgJvth{$^F>)>g#>e_oKzi@SUyg2f)+_{zt49SaBS$ znC)lKINU8aTyvjde_Z+0fbXQQv8e6<#GJBrec^DxxLoUR_VXVMHi9LgyGkN{-yPe7 zeh`@bt!@5_;?Pcm3hTi|jO+KMUkj!1H!m~(iPOv|$?&;-J#Ltly{Saw%ggxv%eBZ6 zo*?HX@lnVeGaI&N@kUeAp|(EZ5`V0_W~7^J{iH$Uj+)2{SGDt$UGt9Lg4}&};w-gJ z^_t|;C#BKIiZxD;Lo0ED%SnU%m+`ci;5mz~LV}v8l$QAk+bY(BZk`^0SU6OPuBiB- zi(jhcJ=Ie+A|J%w8l{@$e|JT1S&=ITglkUdJ5cQ%&#Y}8>|B2OcMcKINXiLa-MSoC%dQ4 z-5Uy>@?E#dK7a3GX4E8+a0%#GqgS$s5}-YL#Imf>`{0-FbG!d8S>fK|FP+yJdU;J8 zX;JQ4SjbNL#_a6e7=Hi#C4bL)YLCmijJITDUX?}`eD9?q% z87U@2^Qvh&xnvV!$@N!j=f*RKV7*aFhuX(V!_u^j=-J+q6um2-@!iTkYek`l zSN+O>phaO~W4KK*cs$c;h3kOtr^rz;CG~K2r1VO+MDFYCeT&v4cZ)&gmy1Ti4YK|A z6Y2ZPFw~Xx*4@W~qU7(*tM{PKR)v;bo_=e2E0O%)ytGVJGRM1Ic8OHXiAH?GMw!Nq z^h?t?%ane6yLfhp{1raD@F*^Fv9Josz_PQMv|FtKRb*#w414#w>Adq;+spc``(u9u za-p^C+~OpuJ7~*yySp2AFGrk>azpIl;qh@01hEb3dk3i*Bdf@rspK3{w@UNZr`X+S z;}%JB$+el<1#;e<52N?dr&2k8U#?Uw?QNZU+=v|JuJ3mbSsZ5wE$MAj^awCgh?>$- zkdZxAA6k=;Ze3#~CbVpIoXg8R-h6gQk3OJ~{Ua#6wfxNeQO(8 z4xj`ZydtKZ~B_7e-65oVnDKyn~1bZfK9_DBOw$l z$_+0HNoX1=*Z+xbs&{^n=rzE{+Qj`s6$GrN zG7Uokc=el1dExLUx2^-DqraGEcLmo3PqKV6bs9q+oFiV)+*y;0`&&$pAyQ~Q@kTvW zrDOuZ`&q7OFe$gk61S*;vn9}R2F0vAUrMy6%)jB*hPihLdF`?D_Odvn#x4|D%Ac%>U7%H=vD0xb7~>%HLZvB?`vHm@>jivyCKI zSw#t%${{D{r$yEMO8e7)!%qHwkSarEyUvN%{YjURw2_6n}5$MoC8Z>HR zT^iE{Z7+^Pvz9+pJN2EnyImKIrKUna9dd(EP1LAYWo{wJPUiO=cY{_cHxoB&%Zrx4 zS!Nef-680NsrzwEBxi-P_#^+fs0}L&C#iHWkk{4br_S-wvv!$Mrrrf@(AF7FIK^*h zvYcLefl@avsP;hDh+ASNT|O%b|x6k<~mxB77*N%tIm4aiSyy+4NoSmL7OVv?{ZCUR7TRy3`$(wD#XHXJBZG{ul`h1t-s7PBID zkDkBbPofnTY6E#6dg z_&SR}ou$kAnBQ51Am|8HjUp{!BmN9~rkhH|n&_Ydicb{Eio$|lCb zxK)?wl9hW&^l{IcC86=$6r>>hFpe$L;YItR@Wv%yKZ(?-Z4umGqm)Hmf$V02!d^6g zNot8J)I@noYr@~liNJPBW%B*&1b(~iI>hi?(-T+t`{o=S_KE!UDN66#i#m2-uGwR2 zy5BoaM5eD&pJeXQudl>z16#^a79_>DvLvo!zWi$9i@x;+|F>XLAwZ`1K-9eFh#E&k zQFrN<*7-c+j*3JHX>BH~WyRX|_=CEWM$nJNDLblM*)5q@vD`dfSs3;QzOo7P`m@PU z7|9%#^)%Ykm*Tr+H2&p>S|+)+>nz%`a`N9x=S0g-vT11$8|^H(S6o2!Rx2&o8%~S{ zqxPMGvtYw7@%dfth0rQPBrTYHsJ-Mm^2hGb`BK4knPpK2n<}c4OqcrI_5gHta;IJJ zbNL|N=px%34Yzoin^AmMQEx1ZGu-X91tlLs=zFC%+Yy$U;#+v~HI343Fmtv;;!<7ys@%q*Zv<+V2*|lr$j<+rILS0y9?*}`>Uo6MU#vcN&x)A>IH;1tC zge=w+`bp+#C{eJg0P-lh^Uq*wL!$^Q%?42JZ2R2y3`G(&x~Ff zZT+rWoZf^)yk@BsMa4Yc!?6M0Ud}5Fm1-b%^L9;tybejb6aufBx{H`sUl8O)jbwxF z+@!@3o6bHb4Um~`1`{F9`<@*zogICN{p3Z6meu{2wvk*l3bu#nU#qtm5x0%t<@eq5 zy3pMgs<;w3Asp@c*oTlir`|mMg(SP7xB-@32PUz$Gb`YsA}?ZP9Tvb-#`dUBj}=Zqni(^k=Ui#zjIvIq-NEJ& z;$%5d?Lhw?Y6*KHitH*Vgjd^TF_F~gp9U$t*sPB1YA`{!$Z4n~( z-|oHy{>=TW19=j#ntA_ZnlMfK^p{Z>CivXv)G|o@b!#=ZVI8HNT&MMEBz_u|``EO} z6X;UsWbj>h@4~)BIK{k zhOglU&_%Rm4cz ze%b%&U_UwH;JnZ1$ku6(ena6o$H;fDU`*)gKuFsiA91s|*#UtzPpfU>;Z}uUY&F+$ z>7VI2g2ZJJ;U6p^NMjuD<&$$3OwES9pY9sOhpeKw9H`hi<=|zlAu0*q=M%p*E;|uW zd-yEDHN`LTG!rACUM@;qb-b^;fFeX&zW+hMo%x)Ll7F_~Ul?#1U&Wom1`y5Q@isc~ zVEy707G~nQ<97PAl2y`{xSK|PB|5|{Q%>Hu47~I{`HP}J)brfw7!>A+IvG`4vV_>V z!^2-a6+et1sGC>#4F*oT!iEv^or-bz5gZm=hV~Gw)%ofD*QKmj$fO#cqnB6w%d3Mc zlHsv`e16n&O@1XoExU1#%Wyar-XCk3{n_p2O5(|Y(7(h6VJxh28)uox3km0zupCbU zR1vF;b1g4nft|61Z|4rLD_R*sZ1p)zdM)H{PoGB`(zA*s|IR0nAB?rr`{#%mW8cKD zxDrCzC=Dcq<^}zMWy+!-_*w^{Oy>Ymx7-Uv zMa5L=9Sux2S=q#Gf5X4xz3{lBmSNudT86Iv(OK61ns4uzGTv}yo)<*Yuyb`ycJNVY zx1I~C9)I-Dxy+8+KW_-yWurWnYgSG0H%P(#88%~4LD2Quv0e#Xt1vdL?PW(mZD*+>!N`S^`rjE zJ9JF)d}OY7TiWOf}spTu}ra_E@(7D_E{!w3Bw|O zY{}1&732pA+RN;(x&(8#GXp&`vfS^$*jmZ>cpm%+03UckKbmL-%j1r{+)uMGkk0K$ zEgZs4HJsGHK_a>rgl^sWa(YGy2i5l_f|k%e;hXnhi%|~a@6T{U_dmW^BobvNqxn3c z`mL{2LrYV=SW70XKBXs?qivx|+wqy?r(Pwbk>f)g<4waX*IogRO`(4gbALL~fcbRU4bMqL0YHxMl5uWAKJ)0*phHf%5SAk8 zjUVog6W@IgiCob~fY%bd5#MQ>-z_^GZw_m>=SL1~&vP`v@fyfk|ifk31XNG(;LDO zyupxePN0Zai1F3XMxwOB#iDVE7OR3rEB>x?}m5wxtVH*x`ok;={as%|7L4l(I zPShdLk92ZuXhsUQNAN>JS-fICw&QTAM;(k(wHrYQ99?Gotp7P z#tU*LO^-P9;hOIR zyE^t@9CL?^!Wd&WR-nAqy+~@~05BYv)HTIwt`4n$f)(cWw~nL}$TXHop-w!*gj zBB@a1UwctjRC^8zjH+xP;drDzXf`k5n)XUhH0$`eYJD?EBSrV~nM=q6KN3W(o_0jI zab7JtMoo4Qj9eQWg5!rj?44kvl!Kgb|8U{1ntsvRd3DtrNL~y7KvV$=L2I;hh%gX5 zO*@H`Z76CSOc-RTbh$h<^}QE5Yg}j78-bwF?%&tB-g_nx^sy})f6bv9s3KLiYD{$g!^1BR;Ze3>i;nWW(>y9$$G$`b~C|RqQX4Q@~^~A`V!KL9r zH{+=uT9Mfy(&v@gXC&8hK@Mq9?UqTnJ!w%d z$5E=lU}T^DqPKuKG;ffU?O+l(6e6`N`-crkz7o?olXaBv@1QIIfczDNH!#fmzQByN z&xQM`j&7!}#J51|maawJdT`F+rZ!VtY}9oKwO@xf zU*7BNP>YK>2Kt>STxRT3?3U`_0R58;mgOYv8wntzN{-b5C?DiN+p`IEN)w+ok?as4 zq@pAA%QYw@Mhols3nSn=&C{eOWi*lc^d*5{T_DuteP!{mW7|704=$|~4iO4^3iuiI zMs!yu!035sf~gEedVgf3pyP(J===ATb!FjPp3Ohtg~8t6jN)R=!9n@SwVT3XA(JL0 zY!Io{JKujZbnj!KbcA-4 zEFLGJlLUtEXY7@6TJB{NP`yNt$+!V}#rkCs7Wl8(S53<{e2%!zwk283Jc@#iIgQ$srU~Yk5T%gILMj zA~>nuzbi9Sf55p3Edo-H^*I>j?nMUUD(q!hblygnEICuS^B* zq)aD8p}`%Fel~%2&?(I=cHm(nKmAK)K)Vnk!6JHs_BGs?TH_j>>ze{^>UZr+s6DIV zVncV?8C~%Q6Jrl8O2%~!+#SMs$I?8iJUKU$p6Pl4CPt!fuJLXQPGnwhD5Q-}OFI$l zrrL#ImRHDB&oC$s7*>eMRo*p2mj}*rMGb36F5-T##>J}OGYObhuII>%Tw+hY|L0r} z0cw!7Q~ge}8XPl2yi9rrllqFRa$H#Hj=3$5L0-a2dPxuaDg~H*U!>CN5I9~3Io^F} zYhwaF)>qgE>defAlm;pkbj|3&_uPC(cx11D@cUg{YhU*>g%Wt6k+pWP}_ExA$>-A z>*kGjj{4fCobwAe9e3;}CTCWKBGa0P3JbGvobK4!@YMxHwRzu~$#Oq~@{03>LEJLP zs+w8Kf^ucKCGg=K!+VuZ6is&kTM>#p%&>6R;jfDkB%(4kKn#HHxZO9e$dqezma=z< z!9@TS9N6xL)C!aYP%%K5`Mh%>qWdm9dL^MV?XG$4#7Zg54LMqZ+62*5H#O- zgLo5lOl-#row_7M#wpEVNxXknhqp%V-$W$}O^CNF-540H-W^YhaB{a#eFlZf_J~aA zlmp~6N7|D*>2O#c_OtsYU%P?$n^3rRT^Ka>n=pu`fSttR2g~4EJNJ4Q7Iy=`G!1n0 zFX;}(Sy@&=%=n)dO+OlhQ8>w1LbOb=Y8qeQk0q!+O3t@@v#GQbt@=BD5d|S9N%wu? z6oT(bO>7w~P-0Q`HPt{Q1?Z_`dWuE%NhCA~yIHr_-AjLzEa(>Kt}ls!?sWt4HRimm zU3g?8OI}1f850wU1q75uo%?D0|MojcF*60D8^ZaFcfII`0sr+h8Lu?MZaQ_jG{Nm z3!=;w?{-vapxhFcWxM7}L;QpJ5)t>qmRNats#vqcMyCvIBcpX=4PAZ#kg$HxCmQz* zA~jp-b0JB-%uj^bFB1RS4cV3+P{AUEdIjH`_b|38D8DS2?dJKp&ZN5B6Q*>Q#_Mix zJ9?AlEJpXCrLS}>Vt~)j3G1%@WQrQn{d<;1N(Vx&sTuK9COxd}BMR}3)S+IOxu}#W za8Uit(on>D0|U1E0MLUy$Q$`6ww9JaWcVr}C}EGz%AsYZITPtYAJ+93%f-k3@yJB* zPEvQnUbOHNL&BW`-IxSPzW$rEwWd%7@2fJz&O&lK=H;*9r!XJLaU(4314am*q9~aP z>D~UV%Bt~}P7CRhrkI1|Xb4O>bka@yekl{~cq8*z(hP52z#llg^U}pk-gM71g80L( z)&*+XJZ>jSx2>?uHI=gc{)WkrP(svO-+r2;&CL}0PPYF}6-z%Q(`KLq=AD28IeMXk>`gMxPxQLqL5qAGYr@1uLndiw|Ay7(ohE2P7AdeQrMcwUd)8y z&%-jo)5!!|j=o;9)l~&Wu)=HbiLg^Uo+-kBUSUBLYJ_pvk31odt!MIqkS%H}Vu}gy zLGB@?!}P(y8557 zgTHnwY~NZt6DgA9#KeO>Md8uN`v*L?l6VFsg@o|GJQ|b)ni7b@A9=p#E?~=-C3AT zh6Q~Af3KSQPvNSL0aXb~PBVW_s`No;G4_Jq1lw9x(e9_A5eT!zz7erEAGml8gs>55 z7$2T1(QYyBm*3^qumb>&kn8^f*M~R(GeT6%fm>^7c~m|V_@(AZlR8#M`#xdtf|uaAndOpn?##&EG}@!A7ld}Qa@Kyzfw?RVy;@Ts9ov@pvDc8G)rrvS3q&(v z{#XBX67CRcDtV!79-t3&vad0Modm93|M^4n3-W&CG#OwDqi_hHpHHbU;_RF1XQ`w! zSG6eUB@e1{dR91P)OiC77E?@g&Dkc08{4ShcivH=A}J&h$JZovE`2C4nPJZ1BYU0l zqU%cjlZ3yeoSY7zAcDq~SHG`D_qdY5*|DBEz%Td=PlN@hT(*-q&j;s%@sa;5?PX~I z!I`paFin2YU?rm?#!#ua5_(SvOb|2y>;6Gx(Ju~nt?*N=6mNyF$w6p95#(+iwcNR zyRcx3Zi9+D7Ars;ny&z$jqT3qG&94oeRmcs3ms$IzP>|UF?w3q%l+$?v7=1d!9YWc zy(L!zHgV0-EUzLDt@O!xJevPwouIH6^9Ye((8z3&V%El;7!$dCg$2?c4(5buj|-i$ z@|ALK1dO|B0g9CPKdYbYD*;!h3n49+BZbEyhmxCo>lIEMU5WP}#+O}YeX>pgX|BjM zA2t$7I0WAQ`kXKv!nhYtZkDz}aRWstgK?o9(>)6IO=L0cs67T-Obuy4t$1V^-5twv z3ZZ1#nNh?g`YLW=!4exvu3HMp@ck2j3stG9-#OXzbm8Gz20kZ0zaEJD#8c0MZ@swQ zUd4i+kL^v9q;0kO@TPfmk0!^*D=r6K{>0r;EGIq(-#Wp&m9E0ZO=f{mTwPLW2}w0o)k2 zMZ;KKLjtOLbP3guKbwABRw|mDFr`2z#F8KEXUf%Xp z4{S0Y^z7;}oueB@Eu^V=%ICZ-Q_0DaQ;S-AM48g$m_@_pbSae)7PE}?7NSouY%87N ze5X59kiHm*3M}SeT7;D&wa1-Oie>NSQ3f#PmJaKnx4G&fybcILb)sI3g`Kn=7nc*; zFpe6fNJ%@+GgLmvc3X+xK(0N@H!&!GzL?dbh6Q2GHCMV0ZSIX;XxoW37FQ1B^IQ5> zN}L(6itI?1H6rbZCKE-}IbbMN;~$+1wv$ruG;&P^ zbThUn8kVP5@%ajyjGvgLrsukJc!x-#=78~;6`xsgERHYh{apOKEu)F#$dacOBZ|W@ z(~%Mlvc8ZO?pmk&9-%T2$?7jMnU7Mt?6wQY5z)wKl7zZGl(#jvc+w2(rGDpRe9H4& ztZ3hEF&P@~Sh#`VbYHTu)}!9_c56)dKB#yFk_R)gpc)JL%FW4@HA$y>2cLw~ZJg^jm4vWu#;0<+X{ES6bfY@#8seB1Afl9HXGmqpXHidry{!FBL~LeP7=b z1ipv1<)RtCzmFMASF2j&C{g5`IFRhy_)=jg^u!Se)%5tB$3F(7QHRkaxUZuPU|~`E zeRg@7gEV&A7621f7cf;!u=Hkq(;0ko^e9Yz^Z-LUdOzNoV|}|!AJ2LAG@S}1)L%WO z@(@}fKV2mYCv*rSjJ|=;uCV7uJrr!T#kN1w`oua7Bm1u8J#8q>YPuhov;>yR_}PH0 z#GoMZ_0))I0Wk@a;_D34Pq8UV_cD~3Q8DLbBD;c(}liKl6*wfV>^AXvU<#&ShDSRPRJm(A0 zS&W_8S#p1rs-kA%PeXVO!Ml2@;}#ypBYX$<>LP4o;_nVf`1b~%M<2w!hU*;68eAz6 z=Px=f{!MV=Lhpabs|aiVLLRCzY=KeKz)wd+S9fNbV=F~W)YVRgpZc!3__2Yg$2JuQ zF5Q0Hnh?z_kn7cBhkfe+$`d96Sm#8s!w#*pji8Y*%(ZANB8X5*zMLISr(_Fivu)3|b}Cg`lqtl6#G>%#m7K~jQ+J;7Xukd97kjXtOX;f*<^apT(v31;hndX&}sP0ujMUvzwO8o`J7SZ>kd z`A1Jh62jewkS}!`5xW?DyaTjJilF*ee)I_W{r-Hn(jzmFP1{ zs;P!9yMy20-$b$S?hOIZrpd!n;+Z0%aS|7wZUI`a$kVt;TkkT_a(qh*V^SPFcXAIQ z{Un&syVj%a5cGltXp5>lG_VH;oiySqw|CiH`a13Q4cth22Yyif4QCSNkHCCgA|RR2 zb*VSvRE1HHh73pOOa1bmCL~rpgn_m>6;(QB-_yamaMh!JUf&(2r*1hjYeD;0ZUItK zhA@3)6@UN=5dS6ll0Iz9Z)fR;N9Uo)hk>ru5)q!=Py-T>DIl8CmMaCz7Fk798vS#r zS}*g5Rm|2IiWklA3nhsYKZLdWu?cMGllw`WOq*zATN%C~Ixw@V3@2SkG653X>0GgU z@@ROdVm*$<-qSUK(3TFXDvl&^G5%R~xB0`eX2p!}L=(4%iB_dkVe2&4V)BSXtUl1F zZF0gb4Sv)7$S6|ouG{FmWl~X)2CqH+!$mYkoPc(LAdFy%Q!_<6;Dn1j-~s~I>=2$r zTG>dBkUWiaE5EEr(fal-xuoS^&R1#Cr~6wC19VZ#U0}9a;&+-rZTMIRkVp)%i zU))DeV25;1y^-oFu7CP8#{8rO%WZk$n;JCh7{1?LuDV@n&uNh0EvYx802K(D@?%kB z?>GsAo-XlkxH~$G8U*Ra4RbOHT&A@BPK=hhKs{AU5 z`j{!V&Kl~aI^97T-&D2j9Tl-VvAO{v$ATii$Ixynn4|G>(aDT=m)*}*k$Vyk9n7i2 z_4|__Iw{U5WF~tYb-E|COWvMRQXe}pC=L&PHyv5pI)YLznwXJBX#oQuZ{O~XD?rTi zxB(MCi+GXMZs?6W*jcR-PvpNrPC$OU(s_oR7RGg`XXL+u7>n+E8n7F9RMP$M3;f1U zK%R3IqV?*28hPd9e{&TmPuZW-ZuE+xNpC;LP5StJHucv(GzxfUrtM1PyMKkC+1&h# zHR4=kCSR=R0|~G%l%nNV-}=*f2Wc>9;o#HDXrRwtosB9#wan@!D38=TZ0^rQQNn^m z$IUH3-~q2Jllx*|1DQ`q0e*3~#FCCT7Tb}U?*%xG6BkIGJ7A%IJ7xGK3GH=kK9FS) z=ihL_Adk5jVSjt+QF`m8eg$<)`;6ffsNo~TSw&HEC)s=&$!eAM*;Ax=RYDVzw|w$s zb8G(*<0N_7LL-aru7Ym1AuTKPDR(^l{UGp2u zDK9v1pdEBD>JVX6f&qPkB{bm>fi{hJu>yG^l1c%ASNRBnGL*1OsiGb1sLxdqB==|> zqSC$@m5&emVrU>?%6_-At~>8nZ@$|p+_)J;m!T`8%a2NeLeFcXFj5+h^UBFO@5|NB4>hv%gar|D z=DtH(2$$Yq68_FT7Q=Agw|Z6H0D8!58P275<;vO#_)of+yr7bNLKo)F6;Cp_X6F9nJ|R9j_e_is|LvDPdFd&wVa7 z!9E$)2jw>)R~MeJI$%*1DxvQ?a3>+(!Vzl3Af$pZFy>Jp!5gVfl?0rZrQ%*mZ(vF? zQAdZ}t-TcfR241#96jvl(xtt7bH&WjQP9^H2>;+`FO(r*J_MN7;Xf+STkjfk@MBJ% zlxG6FQ05KpTz#c1W}b8lHNnilVKyt^%jh)UyYp(B++k1oc=JG!Pa*MNkqir3mh6kd zK^MB^X7HupTChZ%zuWlZxm!c*}XeA^R5h5i9NbQ)5`Mcz2Gseky&ymB>uJ_$;R$3Xx6gq-$w zDfH6T9TOVBiYW^#*hIHMr;IYRDIrP;}S%Rg4 zo-uo*fISZwI1W?iuiVTnRs5%je@L79vefdjAd~utMy50_IrfX|5hZN= zHQaIHENhX>6#uT?-Ua8RHX`m@FX88fjKZRZjQ3%vRoPspSynR-#~*F_v-YFz7R(ek zYSR(ZTmpRK<(F(09K*Wex6rCa!x$sKuzob_33gtDubv0AmfLQx(J%RYp4x{8Drra* ze5X$V?^Yjo`Stdw6mT}!TsvGwT5(W75o6Tp0yE@5Q^n=zmRH0laUYTVDf5-F)p6{r zAUcvrDNlb$-V4eV0MzL7&OX67k0wslZk~7fC_^Y=3fDI^$-%hSei7qzT3!B0^8Pv3 z;~#eolmxBVlvh~>f)TC{ev&AL z0esUPJ$>35*MD-Ds$^Q%#x&$RhgTU{_dpRjkFKNaC@HGp zhUGKAQ@(`^F0WLI*4VVn%0lOjwgvI3&oou-m$zJAwZ%xSCbc3!pjiaLG(V>9$-D7{ z2a^(_#fxEKXRz1xvZvqE3DJ08s8dqXs)F8!RSI7R+3z$4^mgCc&o*%2>* zg~3WcM@vCrs_|1#DVF;{SL-`sRaRKFrB%3QxwQ5#$79|M`dcblq#_t2?@`RzbkpLj zPJJD1XYC~Z)I?e_ydkfTE<(xR{mJ23%c~2vcirB&8Bs%#gV4K3N$9-@1g(fI=fATa zbsYW(3EbcR+HscW_`mPF5A!iS0}s+>LRI*~gCQ(>(;+=)S?~RgX1QH@B9{_^Z8)|p zjZ<${6)zWG|91Nk5urmuO(Qcg89rTtsSoRbU00&_f!1v*vikm861rv@kurWULu6xO zXbGDg#$OcT)CK9b{$p>=kya1iC>7glfp8H)H47f&Z~Y*h*tWBjL!^FbXkWD+?vLPe&!^nD8X z(=au8hnXi?tvGZqQu|tReB$LQNv5)(P!HyEM#7&11AZBDJ@27KCwE_SuJcCpnej3y zn7IEkvf#q~)XxwY%+-=%dvC6x41Vb*$IW8yi*cH$siO~LR{CK6>;6zqqVL@CsoMx; zz+6alowT@|84ISfFnw^D`U+caO{!JXh^k!Xky{<<2hkwW&oIR+sG{$v%J53d54k$D zXbs1<(kQ3`mc@lRHt8n%#o^)qy?s-wVhMFiTRKiEu1}&u^O=n7eP|P26K#wd zs$I9X;?fxhq3uiZ8qs(Je~JHe?=P36{aNn6v@DK@`*ce^!r@54`6+QOBO{M69CTj__43=@| zw!h;$62Dq~-bM&<jVw2F!c~whNi4hGfdO-puX>n$8t;R?M9q}wOJ%tYa|NLqEzD&rJ@$2I%PP**i+IfY|5evxJ#fx} zdl|vpp*lYBS5`H!wLp}p%tOLyv#fw@M!Wv$5niOesy34xl!w_(y61pO8240DPwpjb z<(A?F#}R2IFBUtq1>ZYD<7HUWp^3^t!4$P$#O9m!UzpxNQL@2hmbOh6UH)ir%Jhh; zT&8i*Z}rY3R+>x_9NEsqk@kgir%l`MOJu{yFTgsqsvUhiH%WimVI!IP>aF~Za3CwS zBA;QH*bJ&bb4*x6cy5(j(-N0zai*fxC}&@DWdF0Z21Hnonuf-VpV_o164qV3pI+tj zWvf$Q#!XWJhL};{*7c?HQ+Wa5S5IUU4V4+xgZdWacC=jJfCrWOz#k%X^9Z23WvG zV;+ntaIGS5!e;Q55{eUs4@-_YEs&0OZjhH`U!F(e$i7=q+n48M=gG7q#U$SND7vH~ zDrz6$|De%pk^DDv3`)aNltS5wZwii`V;JCg66WpMR^BlQtX@PbVgxj6(ji4Yk%8*~ zElJa9eVQm~u1C|E9_@#qWDxTnngHk<#{dN3s%U~e6R(S9pX2m`xWFt zR`l#TX&TOkzmTWhbF?VlA$R1O`Tmt;|Nfkt?JK3x0m>COjiMczsc881Y8A+){Oe6s z_2LxsoC~7oC)L`%DEJ&$ z)?YF=Bdyz{``cMrNuvIZ)cuJ3lvc?FM`^&3j;gYd(xr2F<$_72qU{w&MwyEgNGV~h zGjm%_+u1p*&D#yXog(h@p?4ZY^vP+Q=nvad)lE3`6HT)-OxP8hxErt8?(O?xEmw(7 z8iso0qH@Gd(?EHzLa?Pq>CYwrNOC=6IDrltf>yg9Dr7?PQS=fu^qj*Qp6{o~`8OGP;!awSpKY0fs^k=qOWfrJbs1}%1g=2`or~?e$b6@E#tr&g zJ<@&H(Jy2qmVGcN#r}$5O{9*8YnWI(kB-p+G=1zHQfN35dNutDLIx-k zs7}5yEbABqY3nmM1N$+CygQ;>s1}v|INB?Ch~{n^CC^##Mvf=u>HunRLqky~uDe4L z$48z&%!ve66a=V<5NgnL&_+avdyLG#&r2aIjmw+-?ScBhuwn-(?xO{g|&_WJo6D?=CPA(4vHfqhYj9QotHI zWSYO8u;7=X_AS&oPbs`P9|D9yG~S#P<%Z0&WVy-6pLuOKNv2*O2jGqRrP2TX#?V5b zRphqScjxtxYLcpPWoA5M3z!gT`jQU-=w_5lTbEJ+tqmj)&73j$X8fp4ilx0FNr~tnioBJB%{eLAD-hsjTk@nBeBg0Tvi%5`B7$grw5@U z?>o?Sza{`FSdmQr%UDRXdA!ndvEBf}IBzeZs~-&++u#QASz7l7MqigT$zg~OvZu>2 z?*$$ma8$D6urv1z(dSa+A?BisGR4{pN|9@^F^sIs*qA-;E z6&n|Jn=~t@T{Lc&_Nb`6RfwpG71aF3f}3M{wq!?J-!6-{xvR~kgO_Ns7I*tS?hZSe zY2RiNIu7e~eoz?KJfM@lZPV1q-KMf!&uq{kqLPAe#2I8O{4!qTOeHQjycdnQzcBd) zkM6IdgA3}uwCm5JBvN&Jdb0eB?``F$ayjF3sm}{GD!A%fPztXOZ-+4L!SZVZjc2yj zFS!CHvHti?L-2nZ!Ks}QBUa=&BOZ1j0&{|O1^3IMrj4LW9Z;UP-=j=GH8&gGNk=Z& zO{G*jA#BQ$J02R6ME+R-qF923o>&VAle(HYX%LTBqB;Mkn)r!}EV>mm`@a9sHiF{P zPXMqnUI!|Yj%ZU~+xaKLQd3m4C-SgW41zrmEJAgYKh&0v24xC)q^t2e10)p`37LX& z^wb@unuK!U1@*@CigSwq0@tmqlE}!Lcxgzzs06%5l;~}uDPudizYreMOYd(@_;Nax zuj;u7__(gZRnE`sj$2$ZX%NLFkjOWOSV7aHSEW-kdY_AY(44$OSRdvHcxs5U#LY18 zn$UF?eps=jX!A&%^Q6rKFZHu_F!jI?AX@{;8>Im2G5?jPFySEU=p47kfywNZaiDwr zh`FEfrT45Rq14)MJY^1|lRJn@>tlzU=sqJ)v;Zr>N?^~-ls4bsxC5xz#ClC{>I%e8 z{}8J|EnGHwDb_(rzm#5HTb1QPXn&oSD)X)9b*c#T9mA|^dM175n~ZHk9V$-U>Hjh| zv=ARze#LpfrIUM^sCjwYyGZ(=_5i!r2tp*pP{)t~tPoq+MU#5$ijXc@Wxsf05e?`- z0r}9d$v?CiSxqE<(xMAn`2rR#%bu$g)5fLj7=Ou^eWO7-)`48D{x_=-SZ7)4@*Fcz=HDXKB^1DHJi+#H!f(|x|aWxMd3t41S?o47K! z^lS?YRZzuk1Nncm55b$4)i#HI?ERX3>J8^^4k-=)Tbi)~;6S?0{bC{M_O3ne#-rQ4 z>3c7si{}L)zfi^JK9#n&8X<`xl1GXvguKK8KoniFcRh4ORDYN)o4Qkp%46$Ew`#M)rOev>B z6oq(q;guG(H<3xV2g?>_B=g)X`{-(JEOe$l|M^!LG$C|Yp6 ziW?^CkevPOU@ziwa$B2Z*Tfh2q?QrpeDzKP#49uEE6mUE0cj8W?C9L&3E!ozVMAN9 zGME>>DmE36EK6vBp~BE^X4{FJ9WnD;Oi#<4k)qXwUNy<8Ga7*2cH4cZUihP$7Rp4t zfB4@m1=78;^Rt~U4JMt{6(HAuV?5RvNtqpnDt4y0c7p?UX-TSIzz5unI#yU3eybwf zX`sxfsu&evx}@VJWn8_9Q5m^zMAbW^$&5Vb`mnPJ!x&U=UXvXLfqhsD_%n-0P7{Km zef(BFcPP2kb|;P}r_3qtr(Yx)aGw9AP!PrkM@#P(gA>yB$R24LA;gw)wN`jyEGwA|GV)!b` zCm8lW!8s~MDXd%skXk2z(ba$YnE41{PAeigxE7)&Pd(iwLm{0YS}!(_#hUs8OpPK( zCJy^)+J;FB%WX^43$eZJ6 zys9RAMR8l6Sbtd!_@-ksqBXrE!c9P*#cZ}c6i!*xW;=IcbrMQxpeE>yJob1pXX|ac zx9E!JS8HJ_`K!z@ZSTgS%Q`0GgTkz6l3f<4h1$Z-|7of$`LxZO?wIG96?^&8LRF*M zZb+ssaP8AKoUzeu`fguy1+QatkQyP=w z>DQ#o4vpIA&OszsoXeqppy#~Ix;H_V)Ztws)}1V8JOA#847q|z8N3%=>69b8t0QcPtv`X) zuG!Jn`#H@_xWn3fTVH#Gy*Dt~jBxFyT<&0P&+#A1z>hVr`6oex1P(I2>fbMZ#k;wV zLHa&7cI)yr0jqjx?(N+<+VMaG@&420T&eCsk4IY%81thiwCDHP_YqE0x(HplYcBio zkCRC2YDN!RRtK-(S5gk4K${Uh+V(v-=3?Bg>j-f;VrX0IIR~_lfy>PPL4Wp`rkS7T zzL@KCGIbndIgH1XEc3secEdN>$XAOz{~3N_G@RHMO}8W0GWcVE&`pzM!zk14;aD;< zIo}K}K>hw1F^y=;aHEHjsD4?*uQDT1u{hl<(ACWlE*9R*H)*T%G9U!EsOGjeGuY#4 z*vet7SQ!mvy1G)UfuW*Newi!OfnQr_PcSK6&tkVr<0}XR%yn?hauuk0in3{BeReJW zvVEo}HEOLE9X)#0XwgJ>t3!lYle{+|cxjq($XsHNpIXtiec2k?@7hNyDJBpsmpdHjavS$mv%!MIuVlu*LcCiB8vU|*-KA8?(?B?&N z61ScVwpn7id0aGoSZqjkeE2$U$3-Jw;jtpGsEA_`N5ot3pb%To7r_b!$D4ch&xS+5 zp2!~`&OM1<*#m0%zV2I40}FPCWb{lIUn6hthiVler?+idpnFoV0x)5AH@<-S^+ctU zsisFL=Z5e15SmkLFZauR@aZp~avXJs2NwzBp*o0Yxq_~nrnR8)&vhcK#*{s1Obs=3M0j`*f#hGSmsOkb&D^X^o;`r&;o60?i(Zt?N$U)kKR>C z;TI94*6#{SAM9v?;L!6JYX}~F_v)-@$iisu8oA!T;tgF0(;2#10#)pJ&JzJC`Oh`EWuD6R1&-;KUG{mlyqmOHT)MU(i`7ma5 z&+te+Z?e()sayOb@4M0vm0PX#+ZVgXhqXHxA^JlLH1s`Eh>x-1jRgKF|0Ho=Zs69- zb@g3f+deB46~~6m{y}DyL{wmS&S|=H+J!>4lAEme+U)pKk^&KJoj~#cSymIHBPR_= z2u)ff{|ko0^1dNq1^;xw6B)C&_b9oWqJO|(WJncEQ~flr6WT--~C~sL1}Xk}G1v3&F8k30Br-%tM<6>_@DW zSoAWI320kV{BCzxhxg(#BbuM{CM;)m!BqjfZqkA%7w<#7d(IdbBdyxAkgT~Gb0MZB zUDNc{QC@<{-KID;K9dXL0^%ivsI%R3N#JMOFH`Kko}QWlUds;OWUL@e3$ISf2cnBc z3JBj2V;-uQ7(tLj{3M2y=>%*1Uc?Nbi{lGeg2qe>gZ~=Y>?ZNLlx%}OjkkSLy{~*! z(9C&BvPwmha>7SJAoQp+q3aQ}U)63NA`z5q1q5D`u`)=Rc4O@zkQ95fD{DLzP9%#< zYjk8voRc3F3(^+_z1MR6qe(RWw2=o7F+BM)02}2HmY5PjhfvO>4v>rM#ng>MTedn~ z`IL`og$`TMnlQ4XG1Bv3j4j?$|Hl>B7<%{lcO2fQhS*qaOu3JCQl}_xN8*QEX&ighx(*2=?2&^Af&3VzBC&^w%yxQ$qE*0aet5hPyqerL5 z&CynIRHFFdRYZV_w4#C#K$_>x`h10K(4q@g8Y$ALJQ;oE)s{@Q=4UlO{G0chQ|97VBigUPwR#) zIKu9*gR+D!e7l<~w;p7FHr+pPcW6gib(q7jbpBj_2zz2rut%0o^M4*Ezn0j3}TXT(X_jFDoNl$7>b0fBN7xrVc^Ivsj1({2H zn#UTb_R#5bztlrbzgJNw?O|dc1BM7VrXtI%loSlQ&FoW_IXo>eqYYan^aNkxUp;8k zezg1K?S08B&+&EGYK_{-j$9{&&5XlRW0qWn7;*`D0F5wiJrw174dU%w?RI3Fv727?6@~hK`~8KECh${_f|VKlp=xX68KS*=O&y*Ip|W z(;nhGc4qO|jn$D;^*AF(cpm@|DOy%jq@sDd;;b$1?%6&-e2;L=A9-jWD%vi_;ZiM0 zUZZ5-z0V-X-5>)pV@+uLUH0)ES@ra);L1hm)2YM@I4Q9t0t*T0r5U4{Ly@Uyp8fKZVpkaDSv%L5wyY+(BD`YxFz+F zx~b?UUGdd5(7b>EkI04NlsV{VsnR!-4H_?TeiQ#2AfZsSAlO=#`Wo6UJD$=Mqu_0; zWKWu!ujub?DUR}q*T*PY)@>=nKR(VFJb4!&?tua`ebl=fa#G#?bk9r8c;x%|CVN`r zwX9_DStksdN4%aLa5RU6pc;ZFTipHz*aBtN06m$>>N%2&(;b(nVk3_&yNa|j2QEq_ z8Ic9(Ltar>AUlT*dHa@Lc{xt}E{k*?nfz2gfguSs4)I&7Up3j_%N=GYCK94?a&3$D zy1}@hZ;X#PkUxEs{^gcpxMy-Q8idQeZR2+^@4t~4i-?p%McU`@vkVKdT*pBD**v3S ze=7Z$C`8 zi_C6BOvt#Bh*c!Wf#%8)7Gq zu%OQ~B<9^K!jA#i{nSaYZ|(E)xeU1vS5$qziGBx;jy+eBQGCLQhkDouzXhSZWDD!x zxeD8mtYYuQu7Y#UUDCosV~^%fU$_e6wca%uR4}i{SO+d7I7egpiL6SE4=p?oAA%=Z zjqm#vR0Y9ov$KhhUY=C^c-vi?UTVLumjHf+HUKxSrCNALyifOU^NKJb#zUe6Wd=6P z#zuRyJd)$oyW_3!BkAivkdIYK%dG^rk|ezd1G|0biyRek(N%@K7s{UQQiKcupc;;+ zJMKvsEMo2qe~)%c@ltefvO!&&Z<591@fqoObM%jluitkQMLja?%QVhGX&>ATTl~Ij zm#g7{nV2ew8SrHhHxBah_Jvino!}L_#}M=D-v$&5X8Ryddl}2jo1-~{=lYt*iVzPQUxAdPlSb- z4-U7mBVE+C_g5`owQra|_4%B=o;|$sM0J^kmX`Pw-L3MO@$=dKa0;jNK^5)VS{r~6vTe2)T=}bu z48m%)ZVRY?*`~glE*0S@!TMZsY#H?tu8Yq8jFv_3h(lROL>21>%$@`z7RInrERKru zLb~BCKT+oh%KO4pus6EpBG>i zOk+tvC9vK8SuVZ%0OR9 zaYKtD*)1u$;@_z{2){scNkm?}+Ks1xqcwvPU?Im@Rn)7^lA!uo66{!0#vUm*3aqwf zo1dq??#xuIP@t?H+S1Ag+6atclu$;m+X7t9Q$4x_SVtK!MThYFB;0kv1Yt-K6O(n3j>yiKDsG9ZrC*>F-Sx<>4<^fb z=~#TYss9WFLhQo;J*m0N==e5AqkX(0dto%}{hWLAc$`0u=uwi3XBVzV4B8SmA~-D< zS?$9ss4MNw0yd8ZrgS?UG_q*9&d?7OIu3oP4x3AYGdF_)9;~*X~L|0|u6^erMiLURwO=)UY=G-AAjw8wj zEB+Qc9bjeJWKC09WEUW+>-yBqk;77q`;|qh97ab1xTfHLv_?=3zU%WfZ&v@& z+ROUcZ^m1DBUw$>Bi+qeKE~_%is>!uZ-B*?kB+q|W4ri@9ZsWw9lH@ZyIJqA8`L)>MzTGF+ZWfvOzE0_p7!5!D5v%EQ%-WRo@mL&8-YJh{==$z}l<2qR?x|hf zpn#P>=s5&Ek|*9~NxoN0jj~~+?2kE7!K<^n`*_8e5_Gy$aD}v!Stw#Ie_=nJeZa1R z6s7|3f*$-3jdNh}pIuBd5`WXDYJw1YorLiekX{1FciIzq65u=K9lh7TeW!~)!}L%2 zzz_^~vlcg}GAi6AnP@v>!DeK<%f`r|NFipOvu>} zb@2m6{(v|dd?!@^GL!U)qp6qR+fnu7{bzBruV?lc*mKmVI>N`@wB42a-tNGqU!is+ z*nzFC>-2G|1{ZfycXsE|@hxANoN3ioT57*7SM?q0b;+maqnXQ>ZKV;Q{o((2fi_m5fcp8Y4EZTa~uR=8p${ zD5y`O5`ED2Lm{G`l6a9PJGJgGR8;@R!Jwp`(xkh4sEjfxnH&|wV>cXguuKG-k#uj- zu=vxt&Wv1UQi-gSt!~8OPzedlps`ZmP~W{$THM+mAl`(;8D2$^(-IT!qYd2}za`V+ z7UPSh)njEuQ*qQK!$HM1RM{LXeJzYO9zH`8UT`i`!@jdAe5&Fx0r^p=vUHpp9ujmS z!wMBn4nr{}X@12@$9(Z3o=wx^ReR=$$}+*TaSHB)`L-|N_n9K&#iUuHZyXRt-dW3> z!mK$V`gQC&i2(dxii*=G+*S_K&p8smtmnD#5^JA05XrG>`R;J$@RLNOfuikT8XP2c z6R@vu{H=XJeny2ctJ@JHjQs$Ep7^a`2`ECwyZw$mS`12H%7gH8rFl`SA9~D0Sox=q zmvEtZ!@>99wG-T5X2BDLK~78KK+F461?Il^%ZX-UP$7;dKpzkmwd8A9d2bDK@=3Dn zdflHQ3x3_d@Mi>4*RYO+&81I!g{beoBs^0~`JkW$H9jKj;UgSYDEy%%b>_}oeWB_k z0@g@lNAz$0)}Qc0KYYg1R~!~XZY9B+K2$PCk)ltVkMvx5dT09G$!+*oZsi@+@H-~UR=f8D2Wx}Y zYVvo^U*Iszet;|7vC_?w^Vq|FO0FBIpWTY`$k|bDvA<2 zwbq0ZYWVtCktx^hV^xA7!8gK)m7Gfc0r7;7222;6ycca=TVL>+6D%dlFpt-|s2eE! zSWyR&OSPl|LU!a^jo+m5=QBYu8>(kk_dnQ|dP=kh&t{h=$nr=s3b9}_5^gZ$!4lHF zS^B&a=fz#hmrtm?T?u_&$iP|}MI9;F^01X;DI~|0lqv0BfD&qoXcETZ$ z#TG5C_lD7RoFHq8N-bnF?9+oBy?Q@=U1weMhz2jg&DsN?6JYSpXg3j*&z9SY@N;+P z``HP^f;@C3`JUHE0Dogo10o$-GH(&FRDfozJDz{#CTIB3L$P9SaSHLwPxLC`d1sj1 zM}<24gb93Nc6+t_1*Rz&C5Eu)88_d?hPPx=$Getd>((4V#lWn<=8>eBEgkGUb>q>u z;TOd2ptAC}$!#iy$Ewo}=LueGvmKVyITTr~{_OE9Bkvg;$7Pl9VRxlG^DM&R0M@?N z8`!-yAlRaeHTwj-GeEzI@#wokxlgk=o3Dps(zThI?wg;_qV=4s z-3xy6T<)Rg&0duMQJX%(+5a`35k4SFBR}Rb5`FCvlriGXngN$qK0aiFVhYEb2lH9> zq|Ozj?x!AhV&0ytF-afp%lrbV3=J`q!pVrbwG!ZDb0qqTl6OnCWOIQhXOWD%-b!se zMNk<@HnQRz8A^L;fo+c&Tzx`EGLy}uX9q4h z`r5Oak#QXLrOf3BzxL3%g$=pDEY;i#Dj_%I4^CI_Wbx`(q0boc%n_X172*n z5Xj`JO%Tp*=laM_Gr^Ihi&Q356-(M5&nqg}+p|E&c;B-AY~u>N>EVvA zQC5AlM{Ix@)gM?n&jTAUu8pT6Z+2b?=-v8Tbq;&nPr8Ur*-awB+=&_dwaz9Y+52kxyu#;tNwCNH)>|)^ZTQwk9eD^Hr^wg|*u_&S$jM!fB6?4!pvmcX zmZ<7`zs2ou?iBs$T9VLo#`(tN!4GjtKCmQnu#i!s05b@h*k_aakx4d+{qlJ(+8~y~ zYHqJe{%UF~;konyIB;z6);or-hQ5wQn_3V+uAO;Ha~{wyYGo($l~Ry4Jqk&1(UbWxWyO3);ve;&GhoC8i zb(A6x!4nElEF(9=(sZzx(>L~m_OcXauY724y9IYcpS#(%Y^>4`o!t)6U%TDT%`U45 zQ?IHMlu{zW&H^NF8?EN=z8$v(R!$j+@0;(&+46vQOL49IiS&$vObM>dOEbV2M^6Xy z)k||;ciHQ`6h~C%afgrDt+S&{=nKX=?~dv)Qo5db#L|i_|4i>5DjcZmAE@JY!y5t# zEOCk|fGQ-GxynV+mig|4#87r={iVO)NBT;8#Ej;;Y$v-MS9g7WMU{&gIkd-cyuZpG zz5AP~>a$JYyvd&4Z^Pm+Fh+^CRDiCGWB|wmH|21DAdwkp%e%=jILt8tS>A8X$&?$T zi-QG+5+tFy+>!zsN)$1brnhF~?^~%|91~!xNxdf4#e{XzVIPHK&(@z)B^$X@_MF8H z4s*2jTF1KunUWChk=iuN9x?dFBxd-jk`Up%Yn?cpLja;Wgr9`SjDN_>FNPqU60r_8 z>zm*a(LxE7Gq;-V^GB3ct}Z!JjY^SZF81hOHcy8aknr8$ELR5Kq{n|5T1X>)6E_SJ zi!p3Ik>A^jnz@ME0ZNJzs8Pn4xvPBxIS5T<>t ztI_>rbbpeArZPcRwm4fn$0xme7P9OZsnkAtRyY{bh(wQLAG6@ZHz|B^?D3t3U}Fr` z_|42I(!ML~5u4Ot1_3^kWJEP&$o*<>E&bB1rO+*LdwTryY*GFnOg zA)XeRJpnzjp&YF*WWr>LswZ3H!bCUTD-?IR;Mx(?%{HCAHo6kbbD1};Pz%&`l9aM! z!9~w}fb1@JxLUS}TCXMn*2JExW*)s#=YA8Ui(cS5y$AoQvQvk{1l$KjL2+H2pDVK&VTcbB;~kdK@z^w-O&nW_~mvhkBp za+YYF6g6>092G1((O*!@^&1VkoDj+0VdI7*2ao(*qvI8WN(B`&YJ!Ylfjo30`JVc9 ze>N;IBdHNxnobA4&iiu4a}Nw@K75p+ZG)!)6VUEz&IMAGU&0JsIOxJStU(Doa@ewJ zF}8%Ljo4LCmPnoxoZWpF`(Y&Df#xoyM%M7`EJzUHzCDb{7sWgNjuBIFkR=9&k} zHE@4z6)iA}CkseK%IIdlKrlLq zy?5IHeoB1_Fjo+e{ghutbf{-)|w%CUKl(pY#Ij%n!S@+G9a+A z?V0bXj%<_Hvl?HA?{<7K*Pp39`DY?0?JibcG7_uZbhHWsG2CT}REj)xN;lm4 zEx;J*RMlbR4@MlR@L8?M8wcEN7v|qDx5_;V0Et!9JAAw-DLY#1*k4m7J;*zQS2>xf zzL!yVRrI{>Oh#rzNEV6@c;~$(iV#7LhSe8QaQ1lx;~I`3>3l_nFxqAgBA8hTN;X)( zM9iO9FZ*QzjEs03mrtz9mK%#E>ccWt6Cf2z&-Gq;xhKwwq zRMDu_gn@a?@!dbpV<4_DhjDQU3PZ9NdLiyt&~L*j}D`6Q6E?fz~c zU`69t>YCO6DHLjS;ekxDLVDx4cW26^Oz`ZcPKeVu&XS-NK1Osg|Fy##RpQ`P9}?lt zhd3EaTsR|k?I18N@Cd7Q7Wd$xD$0of>sz67?ZHETiGaTS!_T;Ghm}rjQCZ@oL;Ti+ z2u60TZt$UAIWI^w0>_8mzqN#*K>>nSf{wkAy>zZJ=*mAK{_MVD;nfGi7P|gIIFByecLe0 zVQ;>|bO@afIc=s;0tn{rF{-6J6lm(SG>h;^?VFo zGq`#=<|;S;9!|}v_}{nKgk9kdO3az{QU93 zAij3E2f_gx&U-#l?hz>0+rI3;>!u&2cM#7my^dz0g5FjBM&stY>GxPCfUrjPS26{7 z(S0*H%s#VU%ajX8)o@PhDqyUMPfWLlvhB|310nf9lf=19r0Q(Qj^fqbJ0sw}9XT>9 zLoFp#DhnX<3=LTPGv^}x5OWGjhBf<`&=4eyQ~27uZM<{GO(#!=nf%1^Q;&U}JavMg zi3Ar=)3-!L*-`7O%38!35^%A9dg;N;0Q#|VJ4QI}XnwbCJM>kx8-IewZ}i>mc2@6s zEZ8C;q~f!`aE$usWW;dd#3QhUOi*On;2od>!E@r*NA;DAlz#}c+O78Xug%$~i)?$( zOmCjHp}0w~c18StL5MXM<{k)T4ZG-zGx>NB?X`+3;hpp~UY!LyS4U=L?E(5cC+HJ8 z=H|#wVm~M!=K-4ayuXHbuYQ0{ARkAs=AheO!(b0p!a@2bCb#5FHK2ZoEL?iKNG z5sc>WjF`9@poeX~XN5U32Y=92peUBnRgr~^8JGaeNdXmJNF z(F?1$P$l%Kl=_@c_|V>}<+W?q=U|BlAJOcaK&fl%KwD=t#2o78tF|u>r*en!X`cbM zj)h9zK>B37#l$C6c)KO|Gtk)kr|#~jMAFA;RBX&A1dpVKBetjwUBSqlhmBAysYEZx z^H3n2wLjsI;6og5w5Wa90|tc9_hD-7`s_!hG7lfGI&CH}-xiIPD1Jv=1FBn*

?O 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

  • xN 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 literal 0 HcmV?d00001 diff --git a/web/public/empty-state/project-settings/no-projects-light.png b/web/public/empty-state/project-settings/no-projects-light.png new file mode 100644 index 0000000000000000000000000000000000000000..e038de2896572585a00181b9e4ee50bd930c5896 GIT binary patch literal 261332 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 z zx}U8O5k-n94eGyo(jCtoHs3%0z_l>Ak4fUc=rshKIZw>pdi!ju{k+ouIWlnU_zAC- zZ+|Ny3)P2v5C8EkubvIAb1R(xC-sBI77RRk+m422JE^+*vT3tapO>%llsawSf9;Xk zUp4u$h+5j()~c0@PSs({BFfrLf52X4F4JY?R!omh;?Swk>ORo=XwW*S+UdMM&pQzc z*Iz*IuD)G#3W_uwd@H^}5ouypZb&k5Jz$g2QYUIQMdap0ysz)ysH=k)+*T(-dd+Ar z^kJZU=(N{th~M8Fm0RZ+9X$^t84Lx3MZ<-f8 zgFpGwKA1xVIo;qVk=l&EK%7DW7M63}@=7KVviGl!3{6wiq=we2A7ks4)+JGiHVUiV zvin|<0B>pxb@gg1&gC&&`_peLzR>+GqRLu%I`S>>`R73%a#>O?# zZ*{c75KPpe=T9{GND5n>%u~W(gP`{WJ=wxY^@B4;$c&4}s#-a~z62=Bhu_~%b~ymP zfH88yh`L(p{UZV(jK!UbA_lrm2C0`B}*~~anm%uPJVWB@Au~X^F{Bk|4MyC6+wjF4OMd?tMYU;e3!t~X4JN0@ApR8a?ZY1 z9Sy0@>*rO*ZKBy*7asO>#;kRl4iH8;D_5oDn|?+)bnI9hGLG-s@aF9$zypntTtTkA zeN6~~wsi*~-!1;>@lT~a!c=w4Lc>1<{&oC0Jew-qs=sD5K!}ttGH|-8<;Cmevfa@Z z-5dgqOf+-0T>HTHE>PJ!=mCcIdbz2+cYWQGNf1*Mvumw|4z#Z+6zP>=Z75Dm&l`E> z0fWDQk+mt3ps5a5nIKJmTxUK5g?39WrL3Gq=&X}bazXLuFq98E(i~K|@+SQUV_L-U z$npKL63D{IXd60BCAVx&XcZ%;TEkWb#oWHsk~exX{*0d+7yDW*>taSJG5ETl>EZ?K&(6CxRKg3?*E?F5jBYQ<>2lo{vmxbrZ#GK9(enqrT5D$Dbe64v6kt{((pbcZN% z@OFr5;ZNH^OjD7wjSiFC1G)Qa9nbh*z#DAT{L3I4sm@Q0K|^8O&pyQmPe5@e+Mk8D z>M%@~&m!3jP$+kUgi&Y2cKwRyKJYZ3@K4)3ZVzDT#kg-nRUCU1%3N3s=K2TpZFtFKPhYZrpOVPTi&1wkg zrxZA*iuIRiZ$6No%j28oHUnKF<@X@M?vg z|1X*x*Z(}cg0{Bi4`pk5Uj5gjqeYZdttC7IO?zVY#{C=+<{0u}tLso4DC%Dquw?hc zLBO&k)w@Mo+~19%p!pI3@XqYh_Y^%rj;w?NMS3@&wqVDgHV=CV5BfmXa3;az#Pge* zy~!S1=-~HRYL%j>lFXXRoc;-~@F6{KbyCgSSBZb9l9mjr#EQ4|YOLmAg}x?PML#=7 z=)47pEti*~Fq$dDGfQ2Y9{-ZN8(4}aJQB=~m`9_z$5$IVyKE>g0)LLQ6iyce&Ys-r z`fp6<&1RebVC<*_NQS_BMns1`2QBHoE16x_=i88bFY(_aG>*XO{FYK)L+Ezm^~;)M zGO{V_4(uIzPA`PN0?fO|b$co1bfp@pk^w^#$iA?Ej9g z!rOr;&>DK~*Y&P2Cdv%$MF#Y@eDMHc+I&GFe{v*beJPabhXLXC_xJVyz!b9>;Kawb zbc$ZCmYSOCijE;^>Y$;7A>H?9j`&v%Z&-gD)2&dq0D@fO>1c_}?#{JUz*~EtD--sE zr-lS`PtpZxG!nJWE-2zzY(hfR`(rEr%#E?HiHMvURd78G%bV{u_7KnzW(}w25Dnb- zs5RMDW^mT92%f5)T>hbll84-Z86gBo3g94q@4uFlgIr$h$I|ENTMrGq>6F(^l?sB~ z_*olm&VS~BmJQYc-REh1|J0b+Ty;RKuh|uOFEYgp3j?X#0Hf^gv)z9{A+405CSshZ zC<0XRU4^R~tl%mVV^fgGfJeeKmfCme-_`d1q>D#FYJwa&h3hIB*!cny4Sn30o9Qbn z0XmQbE__6G3A7#gdGRZ29jq*)z4UUik-@>i1Gux8@L*yN#CXI!f84j)w#K_;;*Rl> z>vzf*9~TZx*uJHickS;t5BJ^Faj?%Z&y+hkQaCpWwNM$jqqQ^^n;^+Y?;Smf z)(suqpbVlygfW$hNO1BmG*?~`oVEKL(vD^j$^!gC6?d2fHZMa{!F?+4?58L~VPV){ zCqXWqOBe+c|5B$5ru8+EYB8aFd+bUoUx+in1}Wqkc&koxIHX;f;-NiD*V- zlI)}AQrU>e7N@hVEiI*Kv$Pg4B*~xODW<4=@)Q27$7NJ=YPlLvsNc7`DCP}k8(673 z{SJ8{rv&d+z2Vf1uPx~+hK>siZdOX&s&?YmqveKcGhk~ks*&m`RtF1Y{ zZB5gsb$NipLxQV?B`13q_CFS@lh(UzK6-8&2RB2?M9dx;ddX)veR1L>K0gaO%w#%- z9IZexyE@r(@MEUy>;x_Jba!(b92_jp;6{DFfbvf&+-R*-Q$rp!ODE8d{${t;MH3dL zhB<0Zk9eDrh*H|x%g#YnM#Q(UCL<++6E<}BdIiKdleOh*rLo)sA}hRKtx69bLD3aB zL(NtyQ;+KCi7gnJeRGvNY$tC7IYEIQ@K&lGte^mRF>k>nnha@~TMk zT6WELIHuHNFl|jPDk}0i|2K*6WJH?X(cWG8%N$~VIXEBP|2PmJ+y5?8j6-YK&aYnW zekqlCr!~QON)1AtGu`O**N0-M%Z+bajmsHB=HBSsnluL6%TNv*u7G&JZT#b2P-eYL zH1h3+Da-Uw69i3*(}hqD^x_xK9yHFlI@PO@dL49(nt*Xg=m=bo%J<$b->JJ4Z_QtD z#u9Fn7k}UqX$;h0awP#z4RnwV!YuAAQYr9_!b}`v%)wX84iWjou3;O(=uu!G-EX(L z-M*kAZZ2FKYw;LD`M($4@gIGCeRETCvWUpYlH2y9GuSemP4Go`(_j73cWEPCX1QfQndSfu(cWE!+80cL4K1=<+3c*#Mg+JNt>c}=;wK9H#B za3{x$zEU|eR!w{ny#2M>mF=f)%EPOlf~c?-Xe)hm`XQ_$pqct7zPLY zeo4&s0lY8LnR@Cx4CIfZ*NmT9_r7Y7UY8?gIZR^kNIhye=n2zqghI!#t)ROzuAGoA z@qyzw-SD3r8^m9$dQdX@Fv4k&d2}$hrc?)((7&>mNOf}6T!`HhM`x7;;NRGX*d=#S zf9D-7^ap8*hmilEumnYE0*Yv7N)mV<0@hmxNJfuD>#1LhJn4k!@`uC(mZrnt1uW33|R;N6%*t<{j1N636W^O1)kF1x?n&9wy1^EC1im@tw^0tUD zBn#6D%lsSgsJtae3^ds@t?~UyP)kD&jp}$=93Ao&3i5HoBIpJc7kI+SW_fK_oPmbV zdgUUO%}|*sMMxD-I5pk=Kh=}KBB%>cTO-_fk~>qAptS&zgqgi? zv?woJ_H1b?X5b8I!(;G&dkk4wLo@R9T;1N)=Zv0Me z6j~{K5X5SL!tQv7FU19q6yCK1bNoGs%rTHGj|oG@wZd{(2x!mb(>1&m%!P=~_EVe7 zN5^dUM37iRqEH;$YsALF5-MrFe!u??heZIKCSv`z+nuTKs37n6M~F{$A67Mg+7J+q zJxmgYW`_VS(Y}^e2-ftk0)7|eB`a^4RbdGHq`}P^w_}2;qo{;2bNau#U^`Qb6e5A% z76-(f6i}fe331hDSLl;)Z@@b*k6-^rT%7K9EJ?Syr-z84;aw-<#7b3-Hh61TY%-7S zrtAXL)}HlSuC|r~4Ej?d@{dvT!HI=n6k!-n8)S>ceK3jn`ILQ()2N*tqM#NOvh6|h zlNAe*A~~S>ZU_3%CK1=XO_{2k>t6Yw|i%(Id|roAK(tG*6hgJieu0s8Sg z!s*`32-!DjazYX?m@`i$m(da5Hh3p#G{PZAI@ z_VHH4FG)$5$guTKPfuA^P>ytAfcsQ>qBGuK=GOMt49N>YW!}I?#7FKJIQP~_oV?Jb zIWnQbF3m(S_~|fNbcwE}$f2FPLKjsk@Ro!k0Npf((c`uu*YxMNE(Gs;{zgY$Kb4Z+ zui?PFL^5qW3Ma7=SFMbXzW$W~W-cXS0lj)1u%wG>S`MZOL%GuTy4mUe(3Yc^4FZou z?k@;nb;Adnso{JL+1%uvcI5;{hM_gR! zHrMwQq*V|SJfr-KFc_%Bnh>wv+ zo_)dyGo-BZl7Ta1s6uY+>0@Ph1a@uJmvjET-^HG)gt8m&zDYbjX8f8poBbQwtE#;292pWDxEy8Ynig8BuszzU9f*BaW&ZtDS$$*?Gd0WIHtAkp&Z~>( zQB`lMnb<%g#6QJzhipj@6j&$8P2+~j9vEykdkpuPFd256b7cytaPJ_lI?SwTPKxKT zJVNEAx!*6Gjj-hq5c2lwHt8}jlE#f2KDFxf&^KI{Vk^(ej=%WPb)68x)lLlD#L9U(LNtmpBeBVn$ji!9_vtbnRVJ96a ze!!7nULbE2QM`|ZkRWuQv$W4I0bgP132Co^kB!<1{PgP3kCP9DU_OOlTqd~!c zK$w&xziRVp$TZeR>HsRa`Hq#*`aWtD@hyC8-^sKY`O-T0F4NyK7r!kn{LaTtW4b&r zJ5TX-6<>$gL;l~#`4CTN?wx6J%03U|l?efU9Nm>Wg;7Aq316N&LcXLX`ub?LahBbl zv_9tE3nx)a55C)5NRx8!rTfjTvWKfj*{5S#Q>{tGbx;r;A*t&3*(bxR^@coB z54|%I>Q=g$Kcm6hL*5v@xvAH$U4GyOQbDra?>RiO%f>2Cx5+v(NG!nm=36XD|7Ilf zYx+klqtzQ&D+kPN#<1n=iG0f#@GC;kf#Qs$H8C zw~dcHvNNK82C)2>3R#UeCoZ(l#_oB~DA4VGNb=1$EG^3|0=cVF>*B>v@@3iF-s?d8 zb>$sMQ(w%q3a6~m{VHopNh2v|UdOt{s+HIQp}Qcg3hZ);r0EJ@CAEx5Yl&E2-jdR}m{@2ClcwFcDsm#g1bKb>v0F&m_8%y^k0D3aQ!0IjRgqGLG>M?2+;~x= zJQ_q!Ns`<(=lr~ZDbj5mL$PZ-_ngBb-C8rK{S!xC#f2~`TXE)yv0x{>3>7Lr!LE>I z3VDB(I=2{-42=uZDDhfw=uBD`UMgfb)2AhE84QlBNe}^k?t8;&-Cuid#GZ(?TCH;9 zh?>%2;SR*4bgClW@2pl-X1}IYsHDi(1(#kk4%sl%*7S_B*We{lXDjT{ymbjLwT%jY zppC?LL{-wYN1^hGu8(jP#KVTA%PqTRf?KX#73WKs<)&fGW^H($aZA&t8@tN+@V%q2 zE1c*S{glxiryXJusT)0t`A~j*Fp{mMdKAv>4zHDk7!S~y)EZuUYP=KQZRZAv8~!Rw z9qb&SBqmYzXe2K-7j?}{mU_W)WZlG*>j-7R_V|Q|zWMTd%e-fFu$(^;z#DXsNw}Nc zNt*dZ{Rj1N2ta+IG_Y0X;i0ifKjY%II8)MKnLZC%?aT8{qGco$j2%R0Z-3ah3YSFw zp?`3`b-y)BYLNWMUNfI4V$$-Rjg^D5n0*&uCs17ymR=R{4WgDoeCWr0!yqJ1o_GXr z%Yd+Z09NZXDcIZTKhvCX9{M2?F3pi~v!ow$56dEnc^j%!H-&6OY95BB+oe>FffZ*Z z6*ALC-z70~WQFFj#o-8iR!RGW=f~%Le#$}Tsp-DRdNWjE^ZUlKM>%@l!n3c}W-c`^ zSwFDKLa@LHU3^G)%UnEY@doTrxbEG zkskMqVW>1O1{WR+TL^OCSG%qvALcJs7jE6=gfN|OIq{ZbN-!V zq8=)9pAZ475SN<+EmCnzCu}6T-jAc9xw%X7P4e&Gzgv@vS5;ScOYSe%sPdz58M(Ud zZzGKq`&=|fZewy8nF3B`i}%yTQ~L-4ps?-pDnmT2%ggolDw3eSqvKJ14BN)6^p!(2 z4sdRL$ukc+%F3&MfhUlusj+WiQgXsiEr018MC`PECNMKadcmwXNekV@_P<;s>?Rg$YZx^=RFaNS`yPvkA{gmBq z1_toGB1A%n3H`+5U^gMrm`r0EVA|%8- zbjn-X))!OvZ^j!;-mdJONgSWvYA53$vaS656m)fQ`R4A%XR*=atIZ2^-uALXK|>cU zib!^6Y>^$?`vv1@Ucb(<08i#YNZAG8hU zr*#sUsR7P`L`}Vy(FCYXY1<_?`G{}Iq~cv3^)JNu4VsXy&&wilFl*!b!^}1Va-UtJ zs3gcJVcdN$uS~$trR!rEPEO)Q<2)X1%!5So zfIW4+zrfl7?wBaVwoeg-nrJNmU#aDVt-%=QHiPba0~DW9)P|sbNXkB~QE~4SWf(}1 zjmXN~9ely}RD?xBm?;`f_|YR|{&xkEBu)tn(mYrRfe1rS0|DK<9L#Td@!)%&u8{i8 zZz}Cwl|aU(JBx$P$=h2TP!7hg)v(%$IH_>UzBplI$DSd`yJHQ6P&0l7ednbQr_88* z0}INPCs3spWnp@&=~5P%GT_q`?Pe!+*fM|&H^WhtVK~1cenm$|pS`;I%kb0L*jrmx zF75=cLWT0<+fuUTfio6X$Vo=kmp!S_f`5vZ4qJKcklgD$0Kns4zGour-- zZT34y(Aw+S7d;_}&>PSp!s@#)$3(%leF+@JCM6;SQ=kn+JAY%&PtGyb8u3|N64)m(rBX$3_8CqB*j(0lQ`?5 z`mZP)HqdCN8J=CtoL1O^@38z%0Y!ajRY`1v#(TW7APMGwjX`5CmL_7z62@${-(fa)T_8$PZS zlYOYMYUI@!J`&h3w#pYB1!wwf1I8leKqP-)&iMR?{MfmAMK6FXe;QGs9;o(On#o5{RRrZw5 z&zjMNUwL$-= z2fA6Oq3z5LRXO!tVsh1$n%8o*^uO8yx7XKAo4Y&9Tdbo$Z+45bYt$&tIhgG&EhP{U z5orcXGy~GX{DCsL2r4hf1{)rFu^1UJq;CGy>Y9utw@$GkO$2BD&=Zk8Pi(4mMp>TK zpWqty%}SCEfl1EHriatcI7GDS(c1V50`TEA1E@3R0TZJK-m8HVMH1wr#X)MgVegP2 z+rkJw%taqzig0yMf}+8^;&mn9rqsC?H6aST%GkoBg#`g>jzNC{6!fB}GA_Q}55|%P zdnTqnQ9V7LmEvL|5;f2Y{T&o^aS0!!eetbcPgU!?*UMU33*>OId3XxoULTfg4_})i zBI*l&Qb07W$ulSUWt(y>4UvFvK6CCe4vd59jiozahYwUDI$!voDhunCu+pDBL;;2| z4C7WYllEHqm)J;yNX+huMssOE;gRh_x;&XTghaLg6G6v;VzDtJsK%TjB`-ilT5nfG z;YkVz?#i#;ZqQZC_z{^8VXqx}<~j`Nsi!DcTR4lN^DCx>bRl!}Bb()M*qmW}*Mt-7 z6@i(la>L$BiQm~nz}%E*5_wd0!t$x_DPY$NHw25o#}x)1DKGxU?5BAesE7F4r|Wa< zAnkot&_#QDy9e$*sBh|p@CyRukKy>=1+1@!Q*r7!*~!-dVN#+IRswuXv>pQ6ZH~IY zgK;YJ&r|PO@vU3pRHzap_Y=Ota0)17&oJ}nWJZ(R7_2}UQd+>mlUXjXVaYZ3yliL# z!8rMup=gGBLo3peZzV1+J~%ww!KZZ_;8%||rN4bVZ+P%<*0=_T0ZI zh-39%NZ+GRQ`|>;02&~fOA~pAhkGmP-q#}kHkXzbEHV&gi;FwJ=YZ}$9So^b3vKhf zE7j4d5=5-V$0(E#bmTBek`cwMf0&Y#s`JY>=z)Tl3}9X+%L)xK==eu59bR0MpFe{2 zlIzTmaYrwtCF;=4#Ko77_3|kth+8qSwI!`en}Vq_14v+2S0~C}Y>g8hC3}R#M1ReV zXp{t*7(QwWpBJEP4q(XZW&qjnF_HVDMK3%NCF~6)yn@nQirdZ?a%xcXPmKg)akyL2 zZcW);f0MOyt++YQIuA8`xN_eK=wyK(ltEwLp`|FbgP2w+w+cP2g-a6cp1PHsPRLhd z{f-2=oQS%RH`n00{haV@MzTD+;E>ZK4 zD5i)?10OFvaApD9^VDI-bKT63a2qTr>w7gg64*tehG?bDfZtSDa4Nt*swjVQN~nnq z;w#)kRu8%|hQZe9?R=ksF&dqnRaC6Jc=7f=E7Yp~3&>N?wX*NO=pU}idjdf*ClpkAUh+hT%c=Vel zfTbPb5r?dhgv9-FgeF{wWnrf7UfL?R2kKA^1O+MhJ+8=r-nZhky8z%9yq>i8lW`Bk zY3vIj&R3hBuhiIIn&|t{Nr;p_QGd3y^b7FBcO5px?j0B6l21Y+l>|q&T5DIpHz)4SegfzTbTV^8}6?PO@v4dyDIbbk_4hNL6TD z(5Y`Fv(tch+7|`7%5~l|95;d4=AVcih^En==D)IfdfoWidZ(U@+A&j-t^Q%^TB?0-o|w7XRbOnK=#hfw2Bi#E7d!=|)Nt80o-J}#~q0D8R@7uHs#0U*$ByWkqf6-Bc9`QhdN5Ox6WJ8@49%OZat~F zL6dV2ttm%^k6ozjh}qA^*!?oPQE?#`p#Q{2#gnL=n*b2#Kur)oHl!u4RB82VSoSJVP zvs?TQC@lLQlilT?ycE`uwHTV{pF>_#Xp+;)YT0|>ZH#oYoBl*%%V!Zyo`o)zacx!Z z@2mL(^ZW#Zpf9wNCrtHTNtu|RW;JSqVq@e-R#tM%z8Llici#d}=ua)mO!Z=A(w%az;cvVoZ|Zl3;%-`-KaA$5i{d>{PxZE@Tc@D_aSyK6V8PbTLIB9?;eKo zw)V~!_VhNK7H9E$T!|nd^S&8Ahu1S=B*ZxQCWvXme&B&;R5{TT{nXI62B(a3MU2Dm zG>e8$#5T_$Y>^vJ{rDtt#SZKIbyLi~E~S)DYnaI)7#_RTtvFa1NRDc%G;z@VkH!zz zp1?#B;eq@Tz&bin$$i4{&T~~4GZSHoi20*Mz%IWeyYxHRyi?oMOUHbv7n_ShewoX= z+4-#0X64$0hkQyi?PhMQ`d)(bJ-f{(x)&Rt+cujW59@qatJQgh`rO#g8eU<2e!Pmkx!YA6`RwaGOi3xeIL|*KlO@!agxH(9j zv?Z;gctkDGfc1-yKajjvw^e3qBk6HNJZGg}-fKX-Fv9PWj&ix|=y<*oaNm9Ddr9?E zWpQS16l6%Cqg19tSFTWR{wD1>JZ|yeXjn`n_*_89>Z)@`r7A(ewe>4578WY5{4&P0 znXW5#oR>Fl;^Y#$9SY*^VKR;sXL(g+>gr(p8*l4(a;WpStRkb#QNvZw9*8b>NJ6u6rMxxrcy0@x;ip||lWOoSa-S<`*c8_;y1 z{YKiPaquP42^&f-m9WS!OaOl8P-YKm@&j#%tI)U-%_!5}KQAHYg!P}$D+0p2FhBeI zd^0))qX7>F?LWclD2+&zqMvM9Mei!mj3K_`hhyIFoY{6#4ap6L+Prwnl6cr2&wMwM zC8ezx@<*ZGe^Y!UbKoWvHh%_4G&O14t*b*0MZWE~$n~LXGmL9W%zX9ys#!mfHIe)yn#<_|H{4DM35^a`zSY<3s$d9LRSQHB^)`;0f4HtDS&_CtUmWWa zgYIu{e=LE-pu2E%tHt*<251Rrl~vA;M-R+5B#(`7@hE^ae&%R}j_6Ya5oxJe&)Pyb;j;!f#?@bAX~8rH9=G$c?Mjyhe!Gf$zN*`cQ= z_M_|xY8SUKNE9MF!SD0wNf_QS^-Yq~JefQMNFaURZGjy*Uln0ws-_1p8H9tUv#MV; z>ib8(3BRn1E6c*k$ic*hXK3qI9UCKl#)>-CI+`XoG5W2d4^@jW=Bdl(-|&TAI!dJz zY@n$XREks#5vP1#i2l)ipv59OY+QKS9dQ_qi!ws36XTpbqLhkk!Hk#Dj6^Z4TwaC2 zE;9I)Q$5YdSG4Tum+t1-;x*Oi;TuF)4m5yC;uz$hs+4iIoo>L-^b&LjjTmT4mZQV5? zMDc6i+Li32K69PmAQEB10|@zZs3s)ih~rGnsXLd>j2 zq4B+Pk+T-z*h>lU|EQwKD8+DTkxLERb@#40k8k5xgfX_sgC6(VgOI#D9yIOj!@CV= zDls^##DEYSCmzvfoLm67JYqn-bNr+X!lqhW5Jh0Z`1e^pNsPdxSGXIFd<`RvtL33u zJ_M(06FPc1Sc4S17M>$>T>^ZFcj8JEhWDf0fbbS`>>ttgx-B>KN+9Z=oJ6IcD0XZ~YI>t(Ef+{_pmqGS3>pUkH=aIE z!N!!K*Mx>BQ-%rgeEhIFdI45`{wj&y*K<>urw;N8Z2PgEz^{npj9WioX$FmiKEH}KAv;^rRUO%-GwkN;DXgb+u_sKwUCoFH<fCKE0)Ro3MM=zL^d;p^Yx9WLAFN`t4A6deRohRhCrSzC2Ow737p1bo1# zHQriyFNF?^KTe#DjQR%?a6Mn25?b5at1FU{jBJW1(t5lZH@p10T>xzn(;vxEg=U!A zF(mtIr*b*fj>hUc&!3rUSzRLe0d5TL(LI3=84!f_=ORez2R z^%LuGF>(XO)3XDk3VPons78aElsQX|^LrcoglE7O{2d|eUBDEvWXp^thNZ-m)};x| z5};0gzjoYov7TiRA!Y(ZEqo>!J^WeVhiv9$2AZNM2;*YUZCz2m+z#qAfZPB9p<``% zS*fv+ePgy1tXepO;69>Dt64k!Sz zt$lI4&O7?nwAqF=nD9-l5>g%+$(rrq;C&xiAulUAn36V(MqbjvB04sPZIuq?2JFi;r|b}qa60t*aOv3WT=vkTjKdtGXv z)SUDO%58odd_J1`B`=~`N&L9i+Y0b00(ly-0tP%5M6$B75kPf66zpxYwMMscIS!I! zh>X}0GdFCrjTjb zCz0fdPNYZ#LI~!g5mS~R4=1&C^T$b24SK?jx3?xLbPF9QTVpFLB&jwv3SjYlf91Cy zKE$QVvjt7ai!JT)<2O$d^ocC6kz#xQ6`i`=wApuX;Hul2Mhw$U1ZyDu?}pcM_(hm4 z2Q_IP*?0e8mufyZe#GXUzC${6y$Hu#v0n+#`bYR_;p{01lnd`QncZ^8c^JZL-u1@t zau6~+w2L>WTmoZyRagMp_u>G z5+d$IxtmbshjKA&^p3Uq^uh~%Y?+OI!o+N*@OMZZ3bpe=pd&g%_lHeEc80h)wsqw_ zV4Rr0%%2{~abaaGAhPORsOXm)*v?zM4Hw#W(|YZ6zxz!ZXlu{+j)hUia&7vk)Kpg= zd)_O>(e%TtDN*#-aplSJCj|_|6|)46Hk6UK?8ym@qH)GM^nGk`hDAo}Lnv*!Kn3(C zn;)H;?Tp+ej(oHDH?a6!t?BWV2~VHr$WPfX`AO-7L}uHHgW|$CHsyzn+!bK9pioiJ z(5QWHOE&Hjd@$BY&CyCtY>fvpd%VVr0g|UCty=X&{i;STj~MndYFWRQ*=PD+0L z60-XlujaZVNz@HIfKl9x>=@Y~}W`KO#*f7)}` zX@MEEzrkestM)(ETDHiV$ACi?i`jr>B?H4wY-TWt4fpUch^cbELd(s-z?YAYuWHfo zr=rDtE+z65tU84hPW<#9e+{%B!}Jl{J0p*Rb{|=EO^aJw6GAXp5vRUWM4Sf`vIXbph{R4+{^2{U4uIV^fxU9qw3`w|H<+gr^^(_fBC5 zH#9oeCFds2Mm8A7KaV8z{?DT_{wRPk0fZ{7mc5xDzl@7!z_Cs+^R$fO&=4r z;QPrjiK!_=NOL%ZzqzVVk)==c^#z8&!UKIi@EnZXClKHEu9gzuu7SNJ1!fl(^0LzB z`<76J)NL(oY~TTdWSGU;U>tfn4@H%vzT4F?Q1cL2ptT`i_bV>N`@@EG?y+$7J0Dsi zqix#5>^bKK!Af|#E7{uJm!Gc`2>Po1$BNbXS?fXW!@K{5g(cz(nlp)7KW3; z;HjXK(ih1>r|TxR;NSYRp;Oy&vNp;NQKW5+euU+w}<1{Y^VYJJJ;s$`1- z>VucC9sD)sIP8-3`W%)qqM!g)_A@RFE`X7gLLj&L^@$H{>SW%c{rK3*C6!bVEj&Vr z{8xYjbT3^zqNIg%9iUe8mgXfQNRyA(F`X8?BJ7y6>-~KFPBUq(e96{4$>WXE7Kz0E8Z)^ZNd_oJT)udk%XmQaR;;U7PK>Fn#3^N25E%wd)*Xc$yKSj(jq9jMoC^ZLpx`VzfJp-uD-$lzetA)fzhXdOLRRpR&GFGFR$i zwL>jF)YBo4%xU1Y=La^NY=7*FY^t7}fS=_l}#^{G%?rTFzTQ}4@ z<~X_qdR3K?x)8z^t{+ru$6nRs4hfA412Sg{D4#oU%TF~mAr|&rnv)BH z>7Ksh`Wq{0gB>5}@^-CP|4jG77w(_?)|aB9eeXR#N62O7jb$*?en{fallXpSTYmIZ z==kL8;ZfF#JD2q4>v9{`;Y_2o*xwPxdu)1L(MOl35O|EHfUlep5hb+89>~0+4ir!$ z_qKO&BjzW|8CYQTCK*UI`leRfigA7K=nQ`SS~nr<`=|`{Sml2YF=feJE9tKJbEa%U z5^@Ytv+6AxjS)ZPbfnd0Oyi}&49wE5F>NI?MTPJdCwBXfJw+m=U>asK4t1<*`)pJ9 ztCrl4X}7BR9=lfa%7Ej$T7}{$FdDnsRCVJP_htZ9u6#ceOKTkOwD_do-u0|QUPa7$ zxIt;FNLE0q^N(sf+y4Bzlee%Y!+;PSmFYRG@^gC6g)9%w1IFW8Q}!+A-+w4$XFA>s z3EL7uv~}2+$3zQ(J>eoZ?d8^nJLx~5y-l$YspFVX-sA|LeuT*SzLwzo-(m9HqGNh0UTPYm*b@a>NZu6qrg26#M()@>d2T+cmQ&7Yn zvUqW%-gB3zl#TCWYnm;RP{Fn8bgKUMh_fxqjvNQc;|~-NVY1zqSpm4>Fm<6yj|}eP z4JEf_H-!(@dNT!Usf*N8?k})u5grD^lVCeFgnymc8>ub!@cD?h3 zL@Vlux9F^PmojfNzPvE4rdyyd?>WQen_ns%?{<4i0^jud4kN*H2T=G2yuy{7yC8rseRtBi9UQv;`FqF z#ku=d04D)#eitAg-O+$>UFF*ZRT`*15$FSlXp8;#&PfbZItR8S8SJJ9M-cHv;-dF` zTgKqodHlCd&&VB6sZrYld`ePS*eFUIf_|XN%+p$ChT(Q@&7}ZEPcE>o&Xj` zQ)~G_hQkkXviB~&7qP$J?4PTTz|KDZo-~Tdz;OC5@fp1)*53dimVCq^ZV)R7OC%8{ z(W1X;3WP@dKh{RD6yI5Kfz-}?UG=xEe@IkU-T+LK#PA?W==0 z6QJu+jg;_z8PyR1O-qVNu1a8upuFF0J`VXK*0b;I_dYYIY`&+|{yy~7Hz?Qgn_jpm z_D0HyBFlL<=O7vUcMsr2D|BoYr>~X(bab~^n@}w_9rl_yipipH^G5T13+IY({=Iq> z(}E?Os)_XKgNh)H)8Ng`utCv(bdrI1+}D>dq=}3t|0p7;jj-Wh>)m$-0EE)_O@c}5 zdwtd1izqH$mqH1aNcu!bxQd0Q7yMuFO~gI}7~_=IBZD&bYd%dccg(lOi3NR-ZrKGP zJT9MCL8R==E@E^iTYu~A^*JmeN9E@@m52W-@cs#U=Wk4Tmy4J*!?@ZD%I2Cv0LFs&8Y^y6FohG(Y-Bi z2zC%(O2k3{Yj5_HDWvjrDu6til_kQ5TByn}nqty}u=~+?P}(ZB#gly3dI~0l{PB;t zeR-3Uz+yiPJC&%2tfqscF&Ejdx<*Q(4iq5VgK?GR=q{QpH0sP4#6oNKDDRQM;4z9i0Em43nVd{Np9((>@Ru*=-SGJ*CpC^)mMaA% zN1GPjbYpVhAWb6Qos13j*rir^+%OD%!()N+(D!t6Fd0QeP%gP!de|d<%hvJR&tV1A zA+JtkSUsB+Ibf7Q>uW%grg_IFY*LzE;|vsSg7S4gANny*(awKk1Ebt^!=nfZGy8hg z$QKqv8SN{pSHk^vk0kHV(JBfHKWf#Ijw?bD*S;PpHK<&8Uv`)7{so|liZ&R9%G{r? zCVnI;2dtz)v9#(f{KXKjh1)ph!?>kWw5V-tn;}yqIFtQP?LWV9CE z5a^ZsP6wFV<)6>7P_Ruug7&p0f|$D$qmf#K@&kT!!|}ZyVLh=jth$Msf6liHMQE^G zetc9!td7kNcC~>xV>DS~ecn|}{!q91+riDvU}{Q!VhAV>;jb%6U0iTU8wIS_|J09j znoi(oBfDVr4Z`xi&%Vh^y@+vcCP+q~1(}6h2p=jQ-Pdgk|!0^tn z-tXYRDD*r(SQMR1RUVe-}D8;uW+%D z<$rNC7E^q`Jyz-7`1>~@BO4dEVKR9i@Eb+C)|L@dJL%C3(7XzGX@3kTF)z-W3-YN{ zEY^-@XLtOCwzxmJupBM<`7%NOxpe^bBE+p7UxFs8?=bCO#*gl|vwkEu7W_CAJgLM^ zMKJ9t$gS2dd{$@?!D})$Hn#lrmAt;4PVCzcLXa-D(E&tmo;xGqln^}sy?B8(4Ss8x z!OdN~$SG`yNNc3~`JxkPfe=H*#@6=O^deewh*9ng`7cjI(hQ$s8u}^k$-Mp0EWM_@ z%LnoK(mx{guRt=|4LTSMR3 zv$LycBV6CDYH*N3L4^X$Ob?jU@4=9_H?n2(xBr7-G)I9i>s}+VLgwbV{?uQa+6abKtcz>s%sFt*XvW@EZtE0Uu*Y`KFdUmzVk3ZZ7=q| zx%z`Ry0OKC;2rD3&F8f-x@MgamhywBzeufUu%K!>knwq9>_sadf6V4K^B4T1-P7I8 zG@a*AYZGplUp8(opIA@mx1L4B0Usqh>bTrEU1zZf$FP=$7)}BsK#Iu%bi81*%11c0 zS8=uqs{iNv%WMkRbvPNqr@1?&)UycvGm=>aluUCd;VQ2@(*qo+7N;E+rD;bQg z@-H=29ruks#ZQ3|(b30)c9DzomQ7T2(;x``cKEy3=2|#+_@}j07$TU8B7aQ+x$V&+ zO^;qH~l8%#jgw0hLlf0A7z!Sj0GjDg+}d z?|JvR8T~bVnQqxVfGQ-Z!I6XhE^OiD>Bg<@-Z1gk_BMl)<;rIyjm6rbCh6Z1v>Wwp7-G8>dwtx3C ztRthUo)7&WTeUZ9D&2CGO3#z|O|>V??S)gG(7Ms+!o%RYAg<@jRpa{^Ws4IHYm21| zTwL>K_mJ}40V&U7&Wgd9gt|Z-K$fve&o11q|Z&t;wW^5L}at z!a&IhAYpQ4;z*vaU3#DTr%t< z99;|m2WMe;eWgQaEDR@)?YxPPoA@+RCPXTFCzK2;6GES0IVhKi_+crRZPC54isrsT zxw@czjXmRWP5njvzAf1CYPeVgptlVD$mJrL> zxOMNyLj2+^WciOEq?}x#ynkIC&6cczwC-)Hz$Cf6mz{}92dr-U@=Z9sG?t*`Jp->b zRnT(xZs5yxsrLKwNJ?`9uc<+y;Ea|)7DSSf`r zWQ&V?{0*Y{MylYOuQeEBQ}0B>GL*X7q*_%V?pbQfE|AkqAam>ahT5XZboOcXjWX}p zaL(whGO7_Ne6`~KAAc!d8|M`2Gj!^hl-z`_sw1)8r7X-paa#ss*n1?mBdw5gxW{yG z*M47+v9%vz5nFN7I9!cawvixhe*SPb-iEcPjh z$DUg=@ubU|>jA@N!+a^J%#&b|)^Ra}Uq&c095b9F68=Lk8OMsu8v z6Rm8(Noo(SlhIe#Gi^vMoWfO?CpGjG465O;_597%ldGkSmXpBBs8t`F<^n{x6!qr1LZ{P?!Xiuz+Uy zL*1sP9-?H{IjFh4ozAMcAqaNl-yy@>-Cc`=!x7%p8nJ+Jw%c1q3%T>lsfbo$A>){b z?!s77Vl89b4Rf5>cr-&W_ z>DO1Q4(*hr=BWF#<;0x(&fd<7t@jv5EZLmdId#T`^^-vpRIY=Io4L zX3m(OD5Z^m{R}(fhobb!ExS_4i0`QafH z&gIpv%irfaqYne~7Bdv}&stDME1P)Xp+ZYAcKYFkL z{S^EHFGnbDv(`b4I6S=me;dntKJRjFLhoiJf4i}JU zXlg>8gW9(L?~C$%4M-Hksa%bKEx|`um`z}nsfS%Kv%fIiwtn~I&y&LvVZr4_mKKtn zm;{5#E1T>WcxF8*QxE}|odYh;pa^2SFk>o}bF&mDC0!-z}#U;xRZ7T=9a9%*zdt6`U+O@8EjeHR>``=v(cDJ?Jq8d7^23r%tb#7?F!5_8R8f0d-M zLUAP$d$~2Jx~Ne-qf$8phLgP9UU}QwE1<)}g}L6OIe99~o8J#*pV}u|!Nb4ZtzeS$%IrVJF%=06C{(F`hZaXRxm?pD%)&JFK-n=56eKnDCkJaJJp887{UTyT0=};c>Xqa5)vg%QP9qoha7k5hf<&MjA@Rm!{9Zqsi7Tby4B z4UG;*O=+Tn!aPLIqcK@+luMnp)_cm>3Fw)73JZqk_zrB&fVT2{^xNb(R>MB1zJZ(H z86806LEqHYcCwIaSqSfuh_SGh2Xd7!??VxTIqxuk24(# z?G^GQoBqVe_Uqgg@4(WDn`TYm4yg}F@O&tRce%nqj_OQ&mO}uvgO8`torEk zyRNP-j>_r)30A)>5LLXLuN0}uyZ*YDzq&Uy6(@o(z2&|6Op=JxNxQZ^4@D_@pv{7| z9%6F4?XcJpEXs=MmZSm{loTs#kz)eIGm~=U)Waf5qOMNLe)nV8TJJ}S6mX%aYtz$; zIND}f4j+!z!yjCQf4T82nOFMCw=4ZMVHG3t+BCv-E{)Gy8!+(mH^@DAjLFHD#fv}q z)m6}J*xp@@9Q_k>G5MVHKU8x|#+pXUc{TLz@k()RLS*<*Ty{xg(BuOS*;N(`k{{Ch z&jO|;deo?5CSZ86bTOc=LP-{ts7%9Qw@Y*IU9{W7G#j8c#9-T2yr~C5p$&F{!3zgCU zE?^Djndpbjo*9m{-)6NAFO*@oAMH;BZ-0Nm4$;fCc5FnN57K3^8@>^Sm&mib;0WfP zn-ov+y+(w?F&7096gf~zOD;^-iTQ>b8+}4N99z31%txeUWbFvMkfI?9tK+xLbyrN` z*8c*4&~_-yupC+rI2a`tQTMLV6UI@MnaQvh)~xql9P5+3yv#SX?2!oHmSc`NV9tIJ zeueVqAeF{MT0ululY$lC>m-GFd%g)q-$>ik_BVi_qtTZsf0mGN^8LqG(e+yIbz`Ct z8y_FNy=@q2!q&6-)%Q~<(5?m>n1s_Z!HCs{t%|oi9Fl~8KtIymKt$vbkc#gqG!XU? z>FE6YToL8^7JI!-sLIpDA*C8ZE-(Jel>5y8Mb z?{&ND{Xyb@fzo;JeL+{v%t^nInBlrRYr2Gto+;SgcV ztrra@Cru6=D4$+mB|xyiQKpxQpZNHh-lC^QTp90LI1HWx8*wtD3cXLH6lsG~Mp>7{ z{|n2lHS)QLEmOJ;=Jdkglw3EE?Y3a%h{c2SvpT!MB z>0{v7%y4dK_f^393n}I~Zk&BY-%xSLD*+7pFE5XQ6Fj?*ahjK$S*9qVbDo|irm+t4;!J~(BSN|0~fy!dN;gMInG z6sd#%Sl7y>CWK)0V#xI1p%_Hav2r@e0FXye_!wBN3+(^qd~@X>z0pHl0X$z`sKr1k zC^DQxWVwqmDOmwu|DfYee^?NWL1|`Rw)>zcoK&p0Qd5Ik=Z9v};PT^bP^)XBrdXNP zmbJe`|2ia?EH_kC;Wy^A0E|A{FWj|t?oVp#HtM)+XV4{|K9a?a1dkjDnoVJAyk_&& zQKrDbf@i`$k|n@B@&ko&XC{o6KxN>VuH-8U5lNUZ=+*D}94xV0w^>F?da^mH3*z-s zQKxrp@9wVdRKfczG19k_y~feN8`lSa+!V#iKwr z;%Vtu)+fHy)lLPM9?U)BzRjnn)F1@tQ{mSb!ErU{B~GX0MH8g4rkPVP0!wm+Mnvf4 zW^e7GXc53V6V8OS)U(g>A{rxqdJ3yB=|kut67AWusNwiLGXg#3W|J=zL|;Sls3;g8 z0~DdPZi`H^_cv_St-^Q#6;D_0{_heEy3D7JC^A>G2*CIyuCNcUsp=W}Cc8zoY?@!P z-q|wj(V3{}AFR$i`<``(Nu*hF)T4tHHOYS^HiXXnJydPCedOqErhG7)5Qx^=TiR7+5jy zJtkTm!K!5`($e50r9}1ZJR59BTxgAx@fdS0o_vz_?%jc$Ia6xur@3_}77!FQ5XAd2 z+)7Hxp@YS{Hm@j=NmfYWh`Tsan-6I2v`pr5UH|;$O@r&95mOO3b=|$mXi4v>DQaeV z&Pb%G%B*-6`?u<&d)0mG%8*EU(J*}M7keVG%PY;2OUuQ5u=Nyn?=u&xsC_tUBV~CR z`y-OWkLdTNb3)~qos8f|RGn(T+TYg=|L-4%fQdyvc>cfY9cPA#97f9m zu9vHFQC)GSq{Q$dTcBOz@6NtzTUFhm__m`(X+G0o5nHAVwv=|VAzg%;v`->QYsnW5 zyzvN!vXO16)vu1Uhi|)`d2zMGeS++|;_i>nO#JA1&AgLn zs<{*s7<@i2KA-_dN7P0R-dXfoW_u8@)K{t1G}lOG>!fh!551i8s@?YfvKatAEoe}Wt3 zNQ_scNT%;TlKbS{E>Fi_P~?hR_0+|)ys62v6tXR-i3~oG zc=3e8G`v!9&#=?4&{W0O<}7n3xx%I-K|(o=N%@~)-9NKUC_LM3yL)tpf+y!REcICK zkTLvB%rNI)pmgZ|B{og8)Yy`%Jm+{AQmIWxo+@cmoK@|zg|IH3h+y^+Pw2cEl?sLHyBa#`b5;Be1WTyZQ4cZYf4@4*A&!eKBC z;z*H4r6~KT>MsObwEb-Y3z{Jl6BfFkltSY?x=p5SXx^wP=Is0`O-M?sJhJatunr@r z9MfRu`D?JAe@v>ER%cS=vK#&cSInoz9(^ac;aQ(bEtyQQ>qV~Y#yyX>B&@)W8?ej# z<(sy^Ip9U*w0xl@Q}FqpdD0xknt%EM;@Mql-FVXh*Nk@gox*Gvb_PcilR-|CO*qog z(US7v>Wakt$!94$+EoHp>s$)7(H*VdBSmSJ^JcagaO6g_A~eoIOqazfE9WyHbKBeq zb8kX15KWp?BAA0^a()?M>@d^oZDxjWJVKtG=c5EDmpCrKj#LhRF`Mt2Ls>}lbuFSe zVmk^kkvrdPp@-vI;}gG!!8nJMZR{x|EG+0!H2C;&d$HozDDfYk<7HEGoA)L{$*_@% zmzaH1t7w{@wuS^Rg!0=S>Q=2Z^L4wnTsidHtJ$s%vllG6)GxDQyNIhJO#7vgOM}tB z-`M>7TdLUV1;E-G#dj>-=vvR>2IYlmUDV7nU%+TM$pTF!rFRoxkE?M!QXCk)S+?B= zF&`hfXTo#$;kM=&G|g`A^nCyE$1$ST7W>V@9{$icFT(1j-eZMdCFsg$`66W?-g#B^0^8APhcDA;rRko-sXPMC9 zfh!y%jDo^3I46w6m%_$8eWbL(NJe4Qq%9rRbPnve8oq~#p!IE;F!7frTsQoHlPg%R zn^c+lR-J&gU1_OIliP?i)zyb-Rkz;0hGTzsGc^_a_(4$QySG$`EfI_J<84pYhMlEV z;b*6s{SG$jf=pPWRI79lPFdSI{<2S5(<_|qEOm(r(otEg{4;q0G!_L7CO95kXaTx) z;bU8ItI(6TwKtS&oMl zTeXAi`0;V%`}e(wl$2)DZ-qDiUsDdg2%ADwdiq!|i__rA$x0gQV6>f?*@@u)N_AcZ zISopNZe1Y%RqmLY?ppuHq|7Nq5n*Q4`dfT=w0-HMkbrT05W=T&oK$#Ip^|#i&BK(JA*+t15jkK5Ny7&u#l>cj;QUoC*e03JVN3Z zAG1b>iV|WFj$W!ip2o+g54i6XQh)A76y{cz6+t3tFN9MshVjq z+c7$7HGPy^U|*jmzgoF!!8IU;XNO#o`dqWT_gqxtJA}+Gmh`-v`@89{)U*2JS`zQc z2EMZo&7D`^1be*omR#q_-CjljJvb_Fq(wP7>E%6?PB6{Aimbv~{#ttoO$?!!k1*%8 z@7bf6P={CS|3i6LB8Z?!ekY6y>(oB^WAgwV7Uv2fU2=5X2H2YzJQQu5Z}4K0@QcH} zz=yp;5m^NVe?})5kCyH2tE8cahldu2qtE|qi|iG-IkMjB{YZ$`7d+durvF{C?=L17 zoP?PPMXu-8gl2aZ-_hs27wu&?EoyFg|MV|d+V24U{Ga`4Fz)#n$`Yc7RZo=ISfzEE zK^3wymPF&_N3^wxX}FX2O(~Zrd2y)fi13plfX^>Q=^J@?Xu<^sej=`hM~z@`a{gD> z_z{pg{_paD%>zO;31qp~$k*o0+PD;Cxf8yfCl7T7`q?>n0Latt3e=o4wVEV>0jNau zta4YEj^84)P%Ol-Tq=b!;xHiMyYcs&JiiMmhbBnJ2irs1D8%7^YWTW}urgjiUF{HCV0J$yJ2s9{A)?MkADttySU&sl#Qe!b_YbYvVSF76571g_9o!e%c13nCGqp!xZ~|M+UJ{=Tu98%H6d z^NNy3LmGx&wc(5D65sbYx`^k<`mHeEYZ#rq=o@eB53Lond|OH9skE%=S);6}ZTzm3 z{&}RNhS1*I;t@+X60}F4mj$hz@-E&qP#V>lnL+yZ2vo{Bs#|^C3;0u9^!N=DFoxWx zbp=+-w&=AHtB6B&+6)cCV1u+`-JC%MVgCTjQJx3npSm)+?8DfDI6vS_f2x*`8Sm~c zeS3Q9SXy45L5--cW-|Fmjn4jmOXj~-L*4cE^lhp4_?iq&&08V&X?3-;W0BZvMF3F0 zz=Mh0yu1lAGL?X~gCX(bQK!{T+>zO6320WTqdS>0+AVx_9jSdef_zwr1IPC(uG3JaNhpXwC3eT{1mqDk&~)d% zVw-?AinZ0}+e^B~T1^d07$e|NANx+RrnLg(K>xGIz$gOMb#!jT#poSuZFL874GpuC zYTGL$z)nesB<}@)F1RidfoM*lys*1<&nmiT9cJI<}kl;@Gy?S{z{Q8L-7v0 zFF(-mYU))Ic=&2ozJiW4jwu<4$SDK9N#6{7n{=T6>FP@Ku!;bfxnjVi70)wFJRj`b z1Ra-&dtFEvK*D5gn9d;o9w{a8WU zXMeA(H2mnskU-`{Q2L*{f|7;fS|A?4I){vfhld;()c(322RDJbNNAWJI8%p*t z*om2FgW65lkuB0)1}xf{nhOP4?RhlSDx-zy4oX}+`xiG)Fh)527$M*By+eFI2VP{T z`Wy01`iO_E?hEFbut#+P+zXdf1BeCJc}J+$Yuw)ws9c_yk-|4M)zzetcaE&T!lkJ1 z{GdW4g=tCnJQ8U2^z^t$v#T~CVS4Nz#u{u(!=wu9JKBD6HZY3yrli119Dr#sGCf80 z#|Gy0;o1H74i^0QFm+YXX!S91*uu29Xm}5fg@uJ&!0WN*ZFx3<_U49em+%k+0>GQ! zC4;M-9i~)6$a52D$#V0>8R?-}kwyiYuTkkr8L5W(>~ATQFl_cvYHqse?+ z-PEmWm?UIQYW4j7@(<0>leY~EhpiJbB9A9O%=y3T`TXxb?vD-JOr!PtM^rF?BD(pR zBa$LxxqsCotAA-3pasjt^MEb6NN+_~L>G=^VhE%HAu_$N(`@iMnM(i44uXXW}n%4)s2{@fl@q$4pcmG70ca0Lt^MV$HtJY)pX zj(*>u#-L}!^c4|4COL2gnH7B>QVkKFg+f_;&ejk*G8K1mB>~0}k;NsnJY{-nkkYJl zng1O6!WFmjq&z>{&xx+XXe2YVeBWohh1CFg|KKqhtr7FPiE);RtKCMNC2jQ z0=imk?KZJbkfAcZT?gA$>xZU+6xG}G_A2vxk_v5J+eWCL!mlfS}i9q{o7V?8`Sgp+tYO77L7 z^8CBkMcB4ixE~p0H;*;Z*du^e5kRo1f5qnkma7;P8Y+iqZJauf%+k_{k)a&PB`f0&HTPTX2XYzP+39X z6u>WUE8GXopcuC-Gy#Lz|5g-xi`K8x(zrOZhd+xc40oqxif^vySMPY+^z=_$eEjf1 zQ}zBIUL5cT)W0D#`(7u0!UBHLDD_lyRB%=8wPQ2}%a!)c%`$Q7yhh9fh2*GUy&r{? z6D@?p_D+M{P_z(RlPd4jyP&QKSK?4eNS+;SGYb1RjU@Oq1VZEQ@TZKWoaLmNnpfnP zcubQmEl|cMs~7{&Z>G-xw#S=u>JEDu7bw4C8#)Qo>gz3kgM?Ue)GJz_X*!Yh0LU~v zyo?GALeC8z{QrAIwGk)%U)0`?>Ly9(*XplIRtCzSG1 z3ukRb26!m;R|$47^fZqPJ|N*J+z@DqP|ix=cgVh%1O?LxAQ~bK7|~EktJ~LusTNjm zeOMe+VjMx)P_qL60<;}lpA)H-D)U}q9+~cc0AjG+fe+2548#=Oz6=*Lsrqlzs2{D4 zC`pdOzBh;x2dl?Z@b&8LbFF^SKT+|q;HZcqS=}M}Ni_Xa#M&!{OwEL3xjG>XYlPtA z2{>-0^IHj}j50dQLU zZwbO~E7W(tHu#>pnESp>hJd$fXQ8gNMOc(yZrrJ=VZSKqW;ZJm+*Cob{C(U?($vwx z0IpT?^oLqH!qX^;|{~l!IqEJXc$XlI)0->&e{DfG>PNzLfSalPfROAxbvk z-o?*}dxz1z0nBdGFZ>f%4g$IvKd{HK935h!hslG2$+CdFppo(07790=5=gk$iE{B0 z$;m<%*aM27p`C&AJp#pp*HB~Xk60*W33G{wn+s{`x+n`3%9Y|Pflwj;-e>LXBt)KA z2LxP!mO{^`u(Gs`*^$2`9;De}RA5l-K4)ig-+-O0ImUbdcGqt)-uP5)&E*sDxce!d4GR-@*8=Of50w;fUvk@LA z$b8G4Hal-W5e66VRpcUN*Jw*GHF)B2D)Vc^BItHol7z2hAsSL=zV@aSI#+1dNY#ex zG*ci&QGwIf+bm5>!@n&#reG$HowQwTKkQIPz=tbpsII@Z_O-7m$}yr#lqwR)cMz@r z_nj31j}pUG{rh)*77$iNM@317;&aS%ioUpss?yLH`wFtkk*MrFo%tS!z_PH{m9UkU2zj=Zc9*iVDp$RfNHcRaDR}72s z;%F>o=p1E%VLnhEszL=uF%dy@VJXoR&QYX^lGQ!(IgKtG=Pmsq;Scop0#Cd}L)ZR> zrQaa6K>9b&IPwur^YF-uwgngGTQ8w*$bF<_Rt>OVYxw5vIvdG}QeE%uEAeQRl~uo% zK|f-;ZpO|^E^ix!w^IOBcMxL&Y4#MLLq+`e@*YABxoeJU2xGq!Ex4-AxS(9$~Nel}4Bj4ckv z!*81brbvr+exX@FM$5%k?t6E|QLmOqYFHQ?aK$adn!G3S5IlxtWR&>teU$jHb#Ppz z8$Xdr$hdmCl{O^d8 z3zrKu0H|+14={6ZkdN$H2R)Pjephe;hJ%NxE!TJ2N@@ip#2^GzpTtq1dstXVRY0-) z<@-1eweG&(2}6Kv*d;_ftZ)W$Vm))rSvY-K26tV-x+MUE`!4ze7r~!8rJDq!xVzHt z59F2eLF^B5U)dI?#ick0D``4eET;>^rL8z+SIDJ@+&(COnDYGy?t`NO2J@#mgSc&7H_Rk6n=H3z025~O<(t&mJ(Un zBjXWoZ+NBsf?XQB{gGAY_kwxtBi+s6(N>D$qJF z#q>{t0KPihz}tPYU?G=S5?lx5y!rs*h;c&Mp~L(#QNr*;)UWm6%9Fa!+c4V9j7c#)UYHw2f=J@2;9OnT3dc&B4s5%{wLvmF=4unj~Ate2Juh%Wd2^Z-9a+ z8Ukj-ug6QT?tm!Gh;RV)=sm#bW{pN}7m(%43mzZ756$udXJ=IeieH#wORe6JQapvcA30WQK|^XDcxTPCiC21#6V)Q-#=&ZqYB5_u|0DO*6tM=qM;M7gyH+ zXrN>Y35vZ{IZ0{}%M`Tr?^SOyvZI3!3hMggBywS4p_pUD_y(A!aRF~Cpp$reJh2j# zmV2DY`jq-v7$us3(}wb7dr)j#wk%3Ca2cNQ`o}FAIt6wxZ9u4L?*wj>Cx+&7yzDZV zw0)H+W@X2QQe8l8%5XeUL&rEA^g1}nW|I0BG zm`d`791`-Ur-!t^u!FIPn5b`O{<^o`&2wPNOZp4HY{J(kZ1026JF+zFQ{8-pyPqpD z$&$&LEHVRl%!ep6b29^pon}rJl+-ujNlRudxOvoiZQ!taOApnWf6-xH zOTMkCXZ*swvA*H9(%Deyy)If7*~=|C%C?q&-3+6PSa=enl*PxSKA(TtvqA6t>@(jv zlMR>@%nyZ`rRTLgHlB-)DV?89-hz_L3*Tbf&V~H@KLsNSsY&oswK3S{6GS5WPuDV~W< zm|qI?jCTgAfVND~QvoxdHj{D`WLKYUr-1kAMa0%r)l2<<$EaK1MPU`R=*9KOsQ^pU zCGRK&21kSp0(t~()vkGEsW$ynsG|Om-(E>m_AKAYHM~LsKIe^S!j)*hBs85`ldV|Z zA-Rx8aH&eScX+WDIYTc$K-0#q4T)FvFzL#fSzj5or{OLYev@76a9h3Sk zE$->J6D5btB6~Eeo|vZGXSWSuD5u|4_m3k#KgTo*aN#0Q$6xK_DyogTbUWimop%S6 z%wTH^gIUMSR8N_ecyv_y8oK?HCs2IYBdP4F$ip)4zKJ=x@8^7hwq^J>{~Jo1k!e{} zRrr+zUB6RmLwd`BLxw$r@k@;iL9;?g@Clt1)k4o0znOqr+As$S0S{wZrcVkDe9io~ zUztiH-%@X;3qlP0JzSPP{jlz*eo5sZoMJx)vnmRy9-IUsD}+N;ohv82StWy{NV@WV zlP9h%Qhy$^tpiJJ>A-vlw{}n6D>LbHe-yIlNZ^AX?G_$wudW!+aHkx5PdWq6LV<0C?Hkp6)@MPy_AraydfUrLar)} zvSl)io4{MCUb%4cX&3$Sse_L^qsRLypST{I&iZymuAwHq8QL=Gm93!A8&T(<=ABi{z@gl&u>*%AX$Ix(k83ZGRr+D9vzMX{4eF zbT+u;USi~MUX@LkMSIA|NLt2w%)`v-(mfFPrd@PmY{t!YJ#+QjTw{-NK2dR)(iZy) z7S+D!Zs670(VjH>tL5UUyXS!&GH|pJ%GZGNT%6}@{22**{VDA06t~me6t>TP-e=;( z{G?NLn$H+0Y0%0(3TB~!?Rgs5*I?xJBxvyDAv=yG?DO;R@s1AXUn2qay>f;BZ&UFV`n++3atYW_ZrF22vNo!SMJAwIQI zz5W>fJW@R_Duuv2QgS@A$qP>!z59#+_W;|4n_3)N(@8Wc>V>VLMfI0n`}Ih=}1eQ*`Z@ut`r@dy|dx zDW?`$TVV`O#lLDBMg0GF8zzfl#xEopwmAft+AU6~Y*rCg@!U}`EcL)ji=vfjV33tb{UY2)D zl*t(&4EjXNT4vj3^QqweAn;N{DN9W~0+_<>zKEzdmQHLAd}9_iwhN?p!gt}7H!g2xX6{Y+o$tNrG7y`a z`xWmi{!fxX_8b%x5IJ!4rn4J5H+Q3psc%Q>&-1Jc^rqC--dc9I|Mst4N8={v((RJj zQL9pY6Sppxf~=2*o)&Ri2JPF}*o^af{^`T%y5CMGZf$|;^4VL{edLS_jQz0D4p2-$ zs*(|w@AX04?IIi8Kp&u~#^emTKlri{mk)#!xjxb<9Bn87VFJ4VtNX4*+#Q$I0Nh3H z5~BBVZ-)ZUwt)`tX8&EEaeG}~QU$JXUSUrl&N=y!6=pl%GH*z4vksNs(*ih|a~>C9 zoQctQDL_0B5OO!?t9f1;7= z6cq%PdRu)AM%sSxl`>ix9i5H&=NGv6)qQ^mWgYTXI*10cf5{FaTkx-aRRdV=(_we~ z?5wP3flxyIhU9=Nl@}@?RKR5~8$*Fe_NDcoL?Bs)uc-~vBi$q>pdjaAtId~yR*!EpL<)d${K^~hFc6@w$dr!IsJH3 z#dJ@aEtwKWoo$U)a*{J-0_UB&j2zw;)ji*6ME~*Im=+}FMGAYuHaDXKv0WJKyNl%x zciM;JK|l7CtY5rr0HtOTAuU%lOYg^xzPWSaFp)MBF-R-q@UN|@u7Wwa#&%49P{SE% zt~qY}ls*+XtQ^!~>iuSbH{2dvfAKFBZnn=qAPmX414U{ZK!*IuIh6pa1+kRo&Ky24J=gx0BSR5*)`KaewjlV@||Gi2<4 zba&iCxaX)7w5WC@{QG*u`i>8A4Po#wF((hGs^-Uav2s((8t1BWU*1U3L<~aE%Zd$N zs%W!&I_-tY20%gWK|@Wl2j&G}3&s+mPu)>{58fq^5#qt5sBf<@fgau?1JXTd=jU&q zwE}EQfLaBQ$HzY=)vIYGF;THtvAD#wsg2r;K~B@Jdk>*faSkP7niI#JY(gLy7)Qc5 zP{o26JVozOQyxVYTWqhGlruu{@VBDEy7cn5pC3&&s@mRTk^Ef$fN*5gVZTU+4h}G! z0d2fd7&!m2E?l^z3B|Z9C){e-KnIVoH0;^XOfeW7QE##u^=ED_jbCngBrQLRCMlRw zF#8LP2tqD2E3o4x0eH~@U}D!%f{U7IwK&392j5a}LmU#IX12edlvpcCXd!-w7PnOs zdx{dh6p9n@XBFgPhs0@?P@Xl^&9*$}-i0Xk`zvI}tG&&t-k!6hG7n~|O54k%+?Xsh zHH@|jW>idUbe-9MTU|#2*SN6O?XN>|agm}-eo*TM{NO~R@!)Bg)Ze~!{Sp-Jfx(wL z;H=VR0@^Er;qY&ktG5I#?b+X>O|*^^ zRW(&e-ke;&{(5G#tuy*vn%upaj@u8h6ROb|r@o=*IAJYlIPrYnKThnAf0pk%p<^&m zP*PB7mmYw+T>7Y-o;rm;L(k?*$DfQkz2)>?ObkG@?SBq<>CO0Uk5P@YKCXlbF+r~$ z{nZh$r1$Q^g{mipd9VVv7Lk4XIUi$~sHf8n@d(%)q2N9N`AjD1O;BEUKk6 za?<(sos>60nL?@C%?=v3>P9jE>HR&K1+Vp3JU(Ok`UD8R{%;8~`x{pH01a1(PfsBh zj*d!^GSY)l&Q9g&2@L^q_=9}pSqLrdHNXiD>;80WjXLQ;0Gt^PcFb1k!lD;jAtYie zD1#c~VCW-d3aE&j34iiq zi?(XyI)iqZ&EzUDqT>Mfd1Qv)d`$4+c}wEzYc-4QKOZ_9FWYzh>3QY2!;Xg*?INu|f^SUt(D)olY z467o)(uCk}a-M-_^dLlQqRN^i>7@o8f8xjdPi#u*p%eZAI8-1Y+=GO~bOx!RLF5kb zj;P^6aTuDO!uObFO&pr{L67J3Cd9uv%Yh6-7J_S42t;`dC4PK%=B!Vcq?bWbLKnWA z5i!6as9yhI1N~+_+g%w;noEFT3w10L9v2r!D=%*Ne(`|jCu~#y?_v*vc8*O?O>Mjn zl2NFDzgV74TU=dN2}n$PI~9*n_I=9{1{c2W55VoZKKg2(1 z3Rww&@S$eC!^H50SnS>fQ2$#SIiVxGRa}w**#P{7LA({uRW9 zyVV1BNB>8CUaRgl3&Fqkg?&>PxwkV3+Le$JGEUV8J7&qwK^D3N(m~ca+RyUv6sbGa z0ZQ~|lhK1H6|@Hlxn$9&uZ-LC|&_`sqXJ77STac(`op=!vKpNITP1;w@qiml5vN; zAO5#Q(CO>7-i1P8uuYAl*M2{AY}k!ZzMoEUS93z+4Is7i06B}0Pu6b z&EBq2Gs7%{{~bj8zkBR4_7m+y)m`m;30C9Cnm}c>va$IURwFk8Bv-Wa@KxZfl?2Y) zZan{KntgqB5@ryBKOl9Hfy~e}LW`YbbqY|*GXK(kHSQf_un?;4UD5YnSV1d_kX``S?GK58MXc#w8@5*GuyF_&9ih2_f99M`4#KkYR!B zC!g!`%g5t<`LZXyZVw0}*K-9mPr)j4V+q6(V1pF#Zuq+`cRr^gYq0m7T1~U2>pZN- z0nS;dT3T9Zp~M6P5iWB7N)EWV)aAiGYtu_UZ1<&gy~maWAhYbI+mavZE!H9Xhjd1P zsl3tFZ~SJj-IRa`t3S>1n!Q3n5P6BT=d$zjYP`&o?-mNrbXLNlH!~cXGO?;`!+RtY z#T%5CJ%*L3@~pKhpgx*3)NkhHP^lFnThSA9?TgJGiks*Fe-C;pvHXAnSHXqVuzet5 z*InAmB+l*P9>miq&oZ^NgLT)n7B#7ED++JA0>L9j+uKF6y&E9-3vt^BR0EJD695!G zcjFu+23p4dR6_>jme1YaH>+0Vkb#-ywN+yX5yudL|n z#0Aj2TD-NQFZ8${gt<<0)Inn6Z~pYcq9TL*b4o%kwe3BgGp7`(Gc>$^r1nel1}I7! zfaL#`6Lb2ADlH$rknC>9{8k%kYRQfdym9~B+j5xLzSj5o1$}~9vd&7DW>Se+;TI0w z{yCYU$HUR3gyobV5hN&uT*4a~7@bJ0j~Q0D8AAg+$Gn|D{8D9v1{gxLqHmXuuV4PH!)ztVPvA0jH+ZHY`k(+9d*lJKhp9Ung~|8e#Yjj{EX|Pai}w5=`A(h=CV~g`eHIH45Rr)u(YA5@WOhWb~;!SsAoQTL-1N ze;%cTDY%l%TACvy+~ZH7>H!HRzymW}-EO&1nW@Q$-l5kF(31dtZo66WG0ZtQB%~b> zetf?N@Z&o`|6)s&@*mb{M=A)06u0$0YMlO$Xzuohkc5Q^&Vshz1&)Lz1-6CCu=i#z z0Rf+9uJCVQ>I3?rI$ndO{uclrap+#17T?N{+mX{F@1`TKZ8cCr`R8EOC*b$K?x-1P zDoU?2)c@0XE$&Knc%19zr-@u39tTKL-(^z^9*-?BZd;-<6jNyo!Bt)ZY3yA4{dqn* z)PdX&xX3&X4NT&Aklw)sGB+O9#>PI;dJ`Nk@ncS>PM|2p$95Z8SPTceKm-4+hBV!k z#q-$Ic6&&agU>&9S>&=#$}%%+6^gWz0h{YqPmSZ|fBTgXq>f((^&vDYvqiU%FU@cAV6*wSIYNadF5E<%=-c zifEs*fHRr+YsS|BF1rKOVQ6e0mK;ucs(XHBji=!d|) zKupx!-fjUZ&_8(VXTyFpt$xVGb)Sc^Rw?7A*=ee9<{I~&U-nJVgc%_4VeZ@l0 z>d|@qG1w^2AgR7H62jS;K_5dG7XfrhK?xz?D4&6ZKWJ$9%#DRQJ6#gUNB82o-f|`c zCWB3g39%x|UgW&a-AM4-mr-DHv0USy0fz_Qty@Z|{=3hbcCJ{MMN>Do63Mh{>b+|% z3%nS9dCQBGTxs~ZYloEf!kbYmk{MLL31+Ghxo587AiftH6!}&7*cUL;R*CMUG*wso z6$CCrXyRaN#{hSEde~{U5h6tJ*MI;BjNP-LftVi3z?)JLZ!pi?x4JCdDw1^luPDXE z#qDcr-^l{KjCIz?X9*1Pt z%l%ae_J`g+&MQ9mQVPv}+_Q5#s{?sonfAP#Kz7~8koo-O?DlxrCP8?8ZMHi=XS{6h zw5UF_UahLq?C7`yq-}Rme;!<3uD997KwGt>u%gbRTx@Ko6_u5oyjA6M6LPm%kGU|{ zG~4&*WuoJ8c=kwu_*OWyX}z@++(E-@hhXE}dczb@69)F9f+O@cBY>{EtPj3I79b!v zDrm!lFZT|2j~5EJe-EK#=cF4oz!@};qT6o7(V75)W5ErS>;&Vxy(pbhgL+8_F)gws z)#d3Ecel34w9@24=7E^0kMJI$EY!Tp0|P(5*-w16NOSPQ7RK11LWCOwOX3mzU{v`V zXsMC#qIMD!UP&V0P_#hCN5FpkN-yoX12-d6qxwtINw>FJMMFuc2gJwCFo{vi%5~s< zc_P>eiw}kYY6rM}doQo@U0W0a^PkOK?#LNrp>k5xL*#jXQ32D@S zKt<;HdbEKu*iq4_ismZtsdvFg^BU9VG&_ir>U?trOat%vo9p|qwCIbY-I7~%Fs51gcCSQctj`LMbW#5hRPO~O5v_c z+JI1*CP0e%+#k4FK8L^IdYq)Lqorg}Q{)ZA5vkD)gz<85p}PKEol0kI#E--G05nu< z3tuVSx!}WOtfa%*!>TcmD?lmdvFYcGMkvN0|NPA=IXlwkwJ2lb*MUEnlN}K6XQZ9s z<}qRjlDK>zi3jdgM=IVYF7>clKYWw>G_kBTD-uM?jfm(o9(GEnDu~zdEF!)1GttNV z56*0eEKEL^G+zt+#TI%$JH7y%$W$MiDq&rnt*3kzDcb0@kV@sr2`nTLP)v~6m*%(W zZe}LI$T&ZHZucD-MK@091#29_gNZbK;ZC^0amT+BsicVW;*M2WG9WOExFuuwU?jM{ z)sbrl;zPpNnKxnd+qtR8S8MEGn4JsDo$lNSiR^_`xT%@@CEb{TuJZx^i%m zwJLAV#J$)U6|EYpBznT{62N-vlO|KGH{_H_au$0&(bLhBE-vmjVW*_bF$M5FEt;Mj;&d;t;XoiaEXWv zqtE~q0uSx3A>r^|Eg<|^3$aAL!`15o2?>VmvY|95&YP$+r0vmyD3Nvf5Z%n+x#OZV2KGkUYeZTr@W6 z4wIg%EfkwLa|3A>4&IJzi}NZH`9aJ_ruTvi$HonHbrC3PUgH+r5WQDNHWIx1aIwpz zc^5D$?4f4qizifCFwbdm&DyaG2K=Ea!uNlb!Y7hFNMjke%%3B0EUYvgH3Y!cfAn~)DEdIU}! z-W1DCh8_Ngcv{)}C^6`b!N(d~50*n9^1`~~m&25@{zC(R*!-vPKb>hU{=$&u%aiylkSKMpy(jZfadS84)KFGbrIQH6(9q2j zhsEWvoCC9@-l07=JNqVJ?y>uR+~ObMHqP*c*3lL~B0qLigo<%qk678BV+i2BX5x?{ zeRq9c2PMB1*x3zYu~ilWRzYsEx%2aCAfD>b_qHzk;`TO4xuNx}3dXU~66W>fPGxp* zE1~2XC5eN&Nu_X_DT^1c65&Fk3aJM2L6Cq93KDAwJ=U0!^e5k;In?#@vwvRJ4{H0S zT0;|9o^tcdda!1=78^?bQH<5o%MZK{snT(XBs7>5H9myw3{Q)pn*GEJ$b8_8aylVw zA8rY79cXh}K&EL`H>nJiPNlPnkRBPvESYRswK?_J$&{gizTf9RVQAS3Uf2u3mQ3x* zN3fxPqcCe)K#(wdIGCaUa}MJpTK7CY);by|uyy-&d<<&Gs_A?nf?7^(6@;(BLS0}| z0c}Yh>Bhf=DkQ2f@HI*mqnZgfVa7RGW~H5dl!|Nkv9Shn}8V zUz{u{qKZdHcz6SfzaY1rKRK>m_ut`;Idi&v<$=^+esn_-u*`L0tKI1fhM%ZM{mEoM zd)EC}Ld~f4R>MmtW}r9ge{K33jDPBNvwFBHZg&qN$CLu5NhAQySX{WbZbyKbjNP=}3Wpvh2rL zLEvZorYIOPGu_3)dtKi?J<|_0)t;Z<>o6^4agcgwA~E1ec-nJeuO02oHUB!*ZpLl? zWx_zSLnnFOBg~_rDe)$~5$)U@#MKCaXCP9P(0u4UIrnX*JULoLmYhug$PN7|RZ~DA zScQpSxni2~=<39q^|&|&ZiE(XK}{_4@e#NC#@J#begLB?U4r-!ibMi^pRt|2Ubtzm zA=;Aro+Bq2sk5pedP6ReDgBnLAzS9gHq($t)_fs(kV~u$Ienr-`b4*kQ2$h9{_&4? zu4nq0#uI8H(QHsMSNR{y35McPUdo)_8`7H}lWuN=Je$e=q#5G@OVO+=l7Bz8uIjhw zwbBHj&_%VbXS;pZcG}8zZbz~PU1)7&`Mdy>evQsIepmF{m_YSa*p5_BBzYlUkFqC= z1CqC6d-BQ$ft6Hn{LZEXTI5D-feVqP5wcuD^dT^LytmP8tJ`}hy~GR4H{Sc4OUY(i z^*>{lxx!CRT8n{tOW99R_f6iJK8L?dQupm0gscLTV;1?XIBRb)8c`aNVCKayS=$Ju zdw9;1#qd6yo@pFiF&xjZe2_P7GCcM35PJE*#mOaJVo0eT*Z_5eyVr5^IMmtaLZp`bH*w4x8wxL34&Lr{okaq&ryzE%l3soT0xx# zuumu-ZXljw7_^Wwnq1$^d1c+MoGIOr2ELqr*V83%svOsJz3q^ZgjEozhBM!9r-}Yt z5)XqCbf0;*(<(%?!!L9e;L`YmY#bvR?dgZJy>+AG#Nz&Pr>Whi=lhM&l@v^Qq0iyDHXP6_RB15k#JLqq zm>Ong-P1;03b|_;k?KYr6*=6Z$GFaQwpAb5L1lSg{W(Iztr-*6lQ(s-lD`?@Iy{ML zC(2}$Ax=duMavXWIY8*Qg&F2s%j=}sd3&}EFVlFw8EElq3N+}F^V^U#W(}`nCxO`M zl|+gA6`4pT?oO@0uGB}zC9xSVKE=r&nVfiDa_tySIx|+ZOC3JS(?y_{A8TC&sRXC~ zExZ+2Cl)n|3a$*fZm}r)wyb)z`U?@No`fXd!v3Ui6D2Cnp&F&ER5mh}u_4RC9SL$Z z&O*VY{?n7&$yLB1wSZb)M#3X^Lv(m$(Ch1;mx!hxTYBs^3w(QI5idY1EvO%h4=I^; z452YsOe`Ul7=LKenPB`bkq^mze)A==D?gv}y8er+=%Z$o&&ark6juh?xPJhQ6WTX6 z8?+!Wx;)#!m}_vrCeM&bW?!7}^?W%{8{?rI0l`L@t}D5ry@SMb#r`v@)sDR8ar&s) zPgvHk{8~i}#ze&`ve|!X3wXs?g*(b*L}y&OPmcvfitc((Jht6fhh@r*WJc1M&cR_N z%|4N-%+D8^$u?nI_dp`yt>huRxC^|Bs1t%T37(@X=9Ro{!KsUd#eoxSeG!_9X+W)D35)FJUD zbl(FyDF=1@+CEXxOVy_sgLpmhv2QJg;EeZ1eGRurLDm-1@bySaL zr_7g*b)r$1qy2?sYF&)S5td$)5pHN}nTPK3P=b+L>*-&H`NIOk8{bTv1EZwgb_g-qaJdc_yKc_gRN)C2f{OVlQs6Zu6cGj z4gcypaMRpn_p>(@F zK*VY41`u;`fUJ`w(Ry!j2J+2#22JClieL%`-43=Rbk7&++n10ubu_!=zDki1bO=uC zYAZ1%MOxEfcFQo~=r4{MonrunJezk1L95Ep^D-UHDh?Zal219(lX;4ww%D~t@-Zty zVW_!zWEsdojs^JhxF!f{GH@fqY|jO z(1**=>q1%g9x=~D27XE{P9Ke*3jIEANggrma)~sNb?m?h0lhPkKC?eOeRFu8>@DnMmsH%fQfOSe7{3)fH5oeOQb4SsTsTIUPytDLvhpEpV_!%B>jZ-2Ov4;p9 z?km{;S-?Ixk8nO5D-`^XVJfK>Ms{O%mEg>sGy@WGqjuxoh3r1bK&m z!h=h>ZTtkDHRaV8CCH+E)6f(K5IQKiCYDk|T>rr*&pMt#z~U)oQ77eogR|FhHR)SJ zMc(0-eLo3Q$y##R2=zEw3(3+c8T(VWeMQoQI<>p3vSMP!4H&2l0iC=sIqbM#4kpxy zo9gRR3G0w!;q-zo?2@R@K(CWDfAKA!1rX_LdXg_?#rd7{mY;UcD|7lXIAVxFMAW~h zSvp+_9K~ok1@9O|^SJj(JVODR>F0gspGrag_(wcBbWIy82AzS%s)hk;1)8lXiWk#} z74)0^*@*`rd>D^(hf$bj8|8Hq1^U7nn*IQQDZS-(LvLE2}+%Y67<9u1FgXxs+Q&O37HAB4w7r5OR?M{DctSAF8hnHeQrz?pAs z{31|r0SGw&RmaE(!5dxF#Hh5l22i)r{Hmj^db5GSO-_5Djt2X|DH^ zN}jDQ5T;awGeVOf^S5>ts)n;bmC}86h4}dhv;B}Z`fOoE_ks1e+=cmVw<@S7`=vn- zsDmX8@xLK&U5&5B9+o4=o1x@B0-u=i5qO7Re zI(R>zqu-lL2Y_H z6nMe$fu)xNs5pvwU7Ohf{!c*ifWE7RW3r*G27kk*{ed&8Qus>Fnd`zrK_kZA0m zKNtGGb#FWrzG>pF^|k3f9d(IZZQV%kgytVM%_*s!<(WZHXDt+HOuF39kc+FIVmbq9 z7dWEPu*=oH@q;rtnU^Htgg;!U&~kx)y9^+;Qk~E9X!CHsJPUh&gkA+$@-6;X-~#(M zjs#l_&HHrO(li#@3AtzGz>;Eo$?Gg zXEa(59cS4C5y^O=T4d@u8xvW4S3>-@HfKkRbv)d3F*GQ9Kny4NMWi`kC&5ezJdZvk zK_P|H_jn3*EL0V?O#P)pQp2)sLdzh;yRut{=5%15YA`kfS~QUu?z{>%&QAHrfW?S0 zuvIfpLD3vtS`DukJJJ8Nlp6u0aT9~L=Zx%q#YWe>+d=uA>YYIMi{5z!^+Cj($uOFs zxoio6=Z+kz3V>Sd%|qZL?TFOG2Sme7kD3B21w{pYUygO}&_rpHQ6{inQ&IR2`Q6S1 zivaIb)Ycu`UiH4)vE z7PcVckLGYIaF5M2UUOZc(dnAv3M4BB>>Gz^7s31Q3Gn#F#%Q4$#-KA?O5Kn3%g7bq zBv#ZjRR3rs9+oIQ_4G+TK{#Mgve8|$Q2xBU`!wA!_ZeQ#o%ZGG_56o}&o!bXf;DR@ z`b7hHbQcyKLSB01%(aWtw8W*9K(37wo&fH~$f2cp_CAS4W)8b1BW=LrS;5_2-WgsS zKQKve+9A^(>w-aDRTGkQ{pDK;LF!MVy-8Ny_G2hb&!r1Lc@FD=F@CGKWDItvi0J5wD|d9o1~BmBuXs}XSztx*Y+4%F?ljrlXGF6 zhdXdlGDvP%L08AENnO};L>ku+DWy1`Dlof`@*j8d@1qd;OH1M(*7RxQraft zg`*#FJ3;cJXAc`1{5l9)ZfyU3{{?|OZRmJp^_R>S6sS;=@ItJ(2|u{`{Jk(QXlUrH zvL8R1R0M@RVPCs!Zc>w{|+XTU6H$};S54B;L+2%qf%VquLqD~yL6xGf4KYgzyjnceF1-yn?HoPhB z_x)kbIw~;y9%;6bDXo*7VYkK>v~2gkWK%Y|&$B9I$slJ3I{oZYeS*{T3{&u}_j%-QpO%g<@2 zsYq@+@TA^?JA1btIqoQBKPIeh2+R^!SXw@Hs{2xl4cNHb8S(MYhMi&=OaN(`d+$i# zsA+IL_#?r_eXsx*SIPh5>8!${di$?WcXzjhAT8aXgdiYDhk$ga#L!4fBP!k9-QB{_ z-8FRQz`(oxJ^$ECL^_>uib$(uL{pLQQxWlLWSJ9L=*z>o+0oH?^ zzWqWFj-mk734&KAxuRabtVC*$=C49|B3uK85{DVX%DXN5PCVusO0nh1$@H9(Z7$+} zgq$p_bgVdo9llKh9a=ZI4v`&(i`J|L2{y``cR~8ID&`&`b>FCsCghYDhdTUU{Ol|& zH79^mfsiiSz8-A`d|Q7!W=d1%0yp-3?`1ZfuCh0knrYM+)SbsUgnnDYjj#aabqSZHUr-#) ziEnRgIEi$<(9qCW``s_E8{M+7uzan5J>#)H{Y6i)%<;My(7WtxLO--Wjim}A>voQf zjSU0uR_ewe5YDrdgglQu9^l8=?;!1KvtF7Rk4>nliu!pR5>kM4D0V{Ral=U(sXRmS z8TQx1V20gz2a7f9Yz051OQGf-5dVpXRN2B&61m<*2KkxnmdM6l1r|2}^K0Ee;dp;9 zNU@|hsy>F5_?XiBqL&~k!%fvnv(suIQ0aBtg!PLhrP^;Xzo+=qTcNjaD+Doc_wm?G zp|6hxLfZyoX``~U=^fqb7>4~A^@CR_?>$w*-*@+5#2tbKkVUf)LTv8pI;YRgBqzj9 zm_*@IHC>hZEDXM;8`vgpR8pgPq}Bh0kh;Y#^jTCI_|v8NKRKdZhk_L3YY+MGB%&xpcOwA%w@I^Hwh%W=@ zS{FiLD3Ty8b;232ga$!I7HdDNfT``^A;RbCp;L!|_(Yf0IUl%xhz_Z>@A9!yGX6}z zx?DP4eHUw@i28lH$argXxHOr%x{^10!=q8{=0lU+a>s6ZK4&e_;fj73%T5NvPnH#O zac~r6J`HD*OcAnt>fJ$9i9kc7(Bo=tXvjZ8^aDxfO8Ljx0gkb&+rI1Tx{_I&?k8t; z&btGY?`w@TGg7^GXxDd3y+IFseUAX>R{rMhxq7DT+ z;g=%@?S)&ag)my5$K#`=*Izw*UsfFZI;Hu6La-_N_JiQy_0@|IU7`O!rHcVWNOg%C zT_&(OgaW;`9SXP_!2dKi&qI9j6PC(mLH=g4JqB|f9ZiZX`Pp-Ommd4dCK2I+$o1p5`)JN;0Qh1C&T zy4~7#qPWY=mboKtwq*$`o>1~C^TQVt#ivoEe;Yj-aSX-%Sh9NvXIzgR_aO7HF0!Qa zw&q@`z(NGJ`^^i~!U}s1j9^UqmJ`kpIT_g-<;9MA?65Fp2Io7eWz;_bUuc-F8O6Tx zI{A8#&`gv70;a-BKlwKfkpq;;ksTWYgV{!lBtPCWGBx}B9i{GbRR?A2!_P7FB0gzR zLEyugm9S7v$zLldJ%w^U=?YK@z&EWR?|u`6>-nK@H?6Q4Rc9#lMt9YxSSU~90|s7n z!}_J70?Uo4?Qa3$mTyh~jZX^>Ug;-2*k=RE_(%bFH?a;oxJ^DHMQ$}vidjJSn^oeE zw1i6#ZYULKJR@KDmR84Q=@s+E_wwoaSrrrLPH{{uOK^rPsS_O>&t6YpD^Yz=Zz*}o z4FGj`s9aa#mh76B2mN%~^n|*Ng#m~Yai*yX&DRmUBte~>Z^D}*myHL0a+-X$#1tM! zC59z(=>&^i`j5k!K$&AU@f$PXlst}f{28h9?)VAAP=Mz`zcGq+PmjZnvqvfZT5AU@ zN{7qz624zLgW~e{Z5_R9!A1b3Fa(XsPslfVg4{A zFwo?4@wHFYMgZ|(ZT_o36!>Gokfzr_lpMJs^C04_7eG97Jc8aVx>9}i3xGE7!wq+6 z5vHKfovqaq_`~{e!#buyGGRA%-wzClAbL0w2fGNqS`!0Ej1V>T;F{4&bhCc7wAk7q;)L*)=P-EDD%ku=V^vro>R&_t7Y$` zIe=q94dh5?u$&-eQ8#d+qQtL{UIhu&5VK#JTL^Pn0Ba!iFbGyd4ldk|ZXpXw)@iVs zw7wyF@dt*Q&?CBZ(3MU7A0x^1@bmL?{Y%)LB<*^Gr6|6W4OG-gHU){A3n7a=&ZMj(aftkBm@!3ZK*zGsgqL#;qD}>s1cs( zM&L@jz~%&N8)NNzUEr1{mW2n2o6}@@8$G_13aWESzECcXW`Fd*O5N%Sr~y<2=3rUa zQr_!gSy5?dS_6ZvdV&4oR7?*EQ-KPNrJ=ruu>W->I^dfO)xr~q|06-lGK*{Ib1(WM z`Xs4LoE<*X+}(9j3YIYMR{EF%chhD#SkAq&b+6XR;#*c#Sv);Ht$Rvtx83;sPHpe8 z2iTRTWfi=_pOBTEce4{F$D16@R2~9wP&a$!`rb>89XFLvFqrkjy>k;M$JQ6(Fz3E3 zH7P{A&t>K1!}ZO==*V^a-?LixV2|IJ?1a83hFQxAXsGHODk^kLoZQ9D9#ygNH_v7n z;=%9YunCuw2qz+9yc5T~OvZ;`c-z^@ot~be7%#CC02!j01o*d8VcXi$FlD%hzxhG$?>yoZEFWz31m7_| zmv<7y`ah`lZzrjZp(t>sDj<0!GiO)B03pr2paPG6x);epA89yejo*Ig8JEI9W|df! z^e=kp)QZel8B?rC=b8R@EEc^2(>v57ab4TKeL3nftDl z1lRa!`$8xNePpNZ2a2KSSL9%`dd0Qt=An|zGT*V9#O9xu;-`I6y;{(%3?)az!He3? z0ZY<^&x6)kAN_ATqmP8r+s^e4e@!W@uj>wZf2?bX0S8IGT$#worOhXzxdI1YqKWr; z@#LiX#pP~C%$rPcpVO4lWg9bbPi=p1ITrfkb#l#V`Om^{-yXl=fi)6kj12R{cF;l2ry`L)%vsQ+ zx%wH(1)4UD{yu&njN`6Gj;yu@NK@;*Qm%~6TD+~T4U^jU3QO^@N=5jNCYHtKjLDXz z4}S=`xp^}y`L?LzaVLUG(8#BLDdz=xRGETc&B6;=X{^u zuzcV8hJYdiiIp|tsYl>t1st|bSKl$$eLIf1kQji(B16Mu@COa?;i>W2^jFd;Lx3wH z1KDntpR>b8O6u)zlmkyA{h(`MWb_~Q4I+h-SA|PlgbbV_XY|kgnNNWXZ7VT;abJtw`X1ydGVtVL(Wy>!p@$fKphpVLc>?qR&M}W;g&ie!j38lLB0O_ zHwpCQsR|HJj|d*3o%^cjvhk+@HOhmUR8&C7Pi8V?@IAmHi;TY!VYblPYs`?Zc4J}U zAF`B<*R?m;Id0Hx*KLA;oN*Z~Nzf~sIGvZ7*jETg|8j+V!#8AEz;zD#%?8FV`?H~Q z#vTv$xOGU>dG`Y7BsY3Pa!$j62I+&2)55bClIQW*_{XD@AW$f(+szjPmhb3u!~iTb zXYv;vu5|<;wu4slE27Pat5aWTA18FBe66oaCx+N$PTn-@)i$@5=i=ycE%j9j)ZUhi!b=y^+c1{~r6 zw*HxO&(YPf1WAs;46*)0X77HovDDYGgrUFm(c2i}pL5d@WHqLgvw))>eIs4B^awxo zAgB_g`ZVC@LQt@fSv%*fH6=F_rP7tSiZaJ?Nxm$p0v~(g_r_f%ztYTb4mYDM-R&%* z>=7_6ZywVHk!r!uSK^LFL`2ZdVfm%RM>{F;$1v}t3$C5Zor6--$~@_^EiLbI@7t15 z`H@I~g8y*k6&v!Xy8CU_IM$ruA4g1GalsrP|@{@I<*8yzUO4wGv>^cjaO& zll@sUo`^PmdMF=>BN`<*Lxa}Ty9pwy*rLHKpeKvfoH*-vtiV9pZh`}-kj_vU7Jg_e(#9McGpsog5`F#%g zYkZ)6FckuNlzp(y$mLM~6Rl{lFXGUMk85@i;fM;A&!6b2wZT1yI&?)5oYu6&CvR2Y zm&-gyC9q$_dstv$;N@Df*&K}Kx~qKhC_+LG4BPIihcm68?Z~K)u}_1fH6YHc$39DW z8mXf^JN=0Nj2VNzv!}R=*R1#$>5bZqF-87}fef>LjP&XRG@6uhB#0+|a#dh_w&-eF zp`WyT5m#0IZW1-1S-sRN*+HaB z^1&$Y*o;?iDr8qk>6-l^Cj0Br_9nFZLg9T92YUUNYCRg2SgGgVoSdv^!%a*U1$cPa zGQ@p0Q%2wNc-YEFctL0Gl(d8Hoe6(B+5i+{!?R3cKE7ZVD=RJ=&n`p?0V=YvUqRm2 z<|!l{I>lyRv{a?9^cS7oTEmENJZD-n2B*<-GYUZ@R0gIcYA{d?P0>jfyqc&e( zC2DGPl8}L7Z7SiXf9XK&sQuXi0wLU_7lq@pL-mM7nGZF6p>wEz7d?bW5|p_dFhC0m zR)`gx?@Fd)Q3`@(lK8(1uq%s`BiH3rgiVPs$ARGxJmSFnR@8Fy8q7Kpw7m-PbX)z3?_dT*4DJ7dzGVc*3UfvVJ%-}Crtv_R7(o>^shwLuCRM| z!Pc$g%x_Pni1s32s!skKXxo5p^+{yeOLIJ`s*ssBd$=1t>^96GV>$!By_z)(_9;Ra zaSV=qGn>&y6g9Ozym#1%gsL5x;n#xZ@LyeDSN}hfPJ$~ESid#W_Txie#xTUG0qJKb~ zH+PA588qYLp^9jm2lMP_$J&#A!El#enTp99U8t;a(-AXM3OZ6)hFI{v(am{ff<=zMn%fExk3O;X(q?ns1! zFQX|CG(Ey@-TkIuCef)s0&ljEe ziIew_Q`)jY&^n~pcYU!hH*r~Eom`uPE)D1ZSs3==n3dloD@og}$0>XBRKxC4DPaLGz!BfrL!)y%EqKK1~3&m2aEyTKw9jcm@~% z(&*i(5N-CyM&{MrfoaYq<{`@>aS{@@wphnzsJ)1!AdCI?T5P~J^aJobBaA=*OS^Gd zxvpzN-&iVfdplqfdkjE+w@r*oZS?u&Cj~NmkBlh~Q^D2jf+F0gWm$ZXJe8{E9#c+CpD?-9tTH z$M*>a2OfosanZZCDeyOZp?G$5Zp=Nu#j=SXq^=vF>WT+Ei*IUz5{WF>Q6X%~WjakX zYXxF7y?Bai%qh_@Ol6fISbg`@)JaNd4rDoUsS0Hx5Jl z^~Yh1Sk2``63>~SXWHp%Pet5-Mn_}b(y|}ma+v~F_qh)+8@uD_ z8l%cl3oiGAQciy)=N(&x9$M!eUH31D3j4;e-)gIv35)N|xs{c}&7aSVaS~ZP5OlP^ zh~BqyAPK|}doa@Nciv9J!^0w3JO6R7IH^Bf95#8SlviSMk9oJvG-kh9XSO9igWl+h zpHw?<1Sps~IjQ~LS?oFOM^zRF6=emWAYxx2Q!$Z{Y_+k%p;?-luq3|=XRIJGaXA+- z)9F{rc)eS@6U5+5CXcK6Ize5of5t*iv5+1+Ds`k4*Wgj zVD2L9Lh$3*gSnZs=Q??I!SQ}*fWrkv0TfqHGioWgYFL?@z%lFU-NIZrITn{hqbBvz z!-YmXuq6ZVDlkLO{Tm1y7Xo^aq@RHh00lTk3!Fl?RoQr60bYhio6P$ohA+Mijk5sF zU3|d_?mS?xb0u{%d>-#d&SHV6Rm}~%zW`O(nez!9QzqBzgSC{Gq$an3rT>`Xn*?1p zdq1Kzzv4-jTwFx1EbHGIBXuA2EffO#7zVBR`PsT6C8i#rB4!N$@YB+urKy+S1MLat zy;hp9MbYU8h8J`~zSe4qrP3o;QP(@>^o0rc%n$sv190DLWL+u}wQ=_aLVF%w&%3(A zsN@x1oVLngMgV@gGY8G_o}EKboaXBjZpzcB+4y0pPz{5IZqPx$it(Cohr*TtKKdA< zs(T58s^v)o{3XEG4IQ;A(C1tG+8KZA-(a%rM0Y=kM?%#_3%XRy1!jzshAwt?%9WB5 zoZc8Q0XUmU8~rE>maN%aksy!%4uv5~E90ITdvEWN;2-+N#+fCk7dz#YFQM9}%by+B zD6S`t9Dvmupq=_e)HHXNCAmcJ$T>{H>y<=*Q9)6$~bTke)NgU zOvYEH?@^^ndrC6<3MOGZ6la&2?BOHl z3K!NW!Bv47-#A`hz>}O5v?V2jn&+lzA>tK9JtK?!qboDWUkQ!RRVDneujr|$VZZQ1 zFf^?43%T*@dEeoGC;xwcp)(C+Wcr4NS3sR&;5uq3#bV0AJ`v0_L2ShL| z0Lb8|aGY_{57H2(=HW)p><}CT;O(rw6D>taGvVprxrC`2ko3`Rzx{4)ni4Qg`-nW< z0^kSG6E;>KI3QT>T_@pM(aKEkKag=$)LU_X$Fo=NF9fS0wHg2YdceQ^w;>ms|G=5= z>*(S_&JUhDUN#45*_r4=UihB53jwh=JvF+WkQJu%N=eubVmivZW)b+b1QmSx{$XIS zbSX_Q;t`ajnK49bmseFS_4P6!=2-PtSLxcD#r(&jHQUy28;PpRZIo27&=MAmwV`tp8y4x%~L{HD#rCzrEfQ6H1(^e)?$+UxY69& zdw@=+cT{)>Z=OopzOHG!*>V8IFW#Mk3_Yvu%I}6g#w~Cyh4pnr?z!HqSKo1MINQy8 z(Y1KE3(_D_z+DKzc}hi!Fn}-UUrEZaH+!U!$E2rp>O?paWH5OUh;H{OB`J%=@cs6o zUIsk*799(h%Pt(t5!5Wzuhv!;;`cHZjLW!b-i`lo;}{;y0@38K;)T)S&>&6FT^v@3 zKd$>!9U?qR!sDb;Q9Obg`)Jw9Wa}Z+UU!u$+{fi)w}GkkJ$9-oeQ{Lid=%{MeQ((Nuw^bT zu6I^1j!3=0FK%%Z_*qpg1N!Jn%8tWXKVRS6aWuuq!FP7z(hIR_ibljrpBIyE!?--T-4JE+6l1-kaeo_#4bjAgL$GH1ZO#h(a znmge`BR#!cREg>E3tMoY>WhwXQ`vBmi@682V-r=NfrOKlSmlH5tMwSBwgW=-X|U`W zPi8Wt@O0Dt4||GuHf~BY614~x%@ou*9~;7f&Wq!6PF^QJyPWN@Ds=Q{Cv+Wp_e@n3 ziqO0<&~ABF3w;hc;KH zDv9z+IIk_}{7m?sby5H7CX{V&j4u=C4ggCaUyg>4{B$t+Q@au6Tmm#$8F{B->OO! zovBJ#YDgNh{GuKkfYB(~)|VMCx%uCC+Zp{14OY;YhYS-AcMnb3k*91*d|nI6Mc2-X zxIJ`)_$qtc8GmamUX$EHE@Xp*WN(BEvw6a$%(1j&24zY>FtO$%j&$_)Z zQnXVOz%xj~&x}VJ)vG3}w^fV5sO|H@V^>Ilo)ttiDG(bsiaGlazfF}TAhCDSz7out zcSexT`p9O6y~4vmxEnsBO@V)(nQ&b`{Qb>m?fJ3iYV)YmQ55Nd9_boBxYa}uma{P& z0}I+@!{yrHqV=b*?NRaLM?txdqV@azARnN(554sYBH2GMA<#L>Vs6(?#}z54iutlu z^5J*Lc=0Dn0ml_$Lf=-0tVLY6wRwR~T0@p>_tSgc4GXjJMqcUQ$`69g>elI^F*#6V3ln1hI{rNba7nS{2%?_CYHSjhg zaO>PD8rH}3r9CBzCceugw7}_^!-rr;6GC2&qu98D9IXV$5ee5MioitFLfFNf<0m{O z^|jYS9hiHOj#JFtiE`4XYyWN+JTx3MH*p7ugs%9{Z{l@zgmE_@+MdJSd-nN~N4?OV7-|7aC1W%Pr*I2|bI)qP7-ys-D)u)`H4J zyjB(j-EtMqQu^AfjWY<{-mYe$KeWj=7d%?GP|I2Eb%#3Cz$%_kPyNh&f0GWpJvzFw z(~(!$v4DNU8~T`+q78TtSE6zk*E|?!f?)z|%LXtz+#!(B*bEpOHOtF4bDWEkDz9LO zRyG5)w;Kv-xH5vZ*$OfV#jz%ANcFIhFNdWHYKM6}_eBK0vte8VU5)WQqx=$sT`#cD zy#G7)=Gmkn5dh9TQ2+bT^+2_jdT?iF;YHED@9C*W@KN`zgankU_y;%S{OrLpnV*LT zx($2}%;ifPkD2#Z_({Ts(P7=_i6=ww1o}Ah{#T11xu8v&yvDroGPprRjn?PPl1aPz z&QvUVlZhRUpz>)U7Is}}>p%ALgzCR%s37P0bbqlkt8H9AtiO@_ZFeO3`sv{cJ)wov1Cb*{{O3FrEWV#zG^=kgBg5voRadq+oRTIfWlr@G|k zqgTpGJqJeQe@6yz4`4~LcAob%K9m2AjlIhQ!ad&p)eZ~QoUHo#y@FF*di(nDc1#ag zeYo%ab@le}Fv=AF5ORN=W|B~0+*u*)(e8O++HeL8ReYaEh+&Ouo>%i19dSk1mj1Ve zFPY)rg?R*#SCUoNRL*?QeCiu3r%&-{jqt6Za-Ds7)d&7CY#YW2RrpDiPrjz6$Fypc zn~%mFhK%c~_DIm=4$f&~8kqHem+ziALlAPVUGxJEx9e(;>Y2G7e?xG{--zX7v~T26 z_`}0PwWW@%r^w}?af!@pl$@C4kGYcS_nX97sOaK-*Rbo*gTYV`yBMn{@*Lv`qDJT7@E z>XP8e1NGOK_Mf+BScG2Vy;;OZQP^ifh}fJ3kCo9ZX=Z-TXfUJ=_vVHcXhl7|{iME> z{2_0C?(m!?!kJzVL2}JqL9Tr5qkCLeqS!-Pxm?^2QX<+0WnTk&B09H&saLSW(#oZp zU6;j@EI~m-7d50awO@Aj>7N80IHcSwT3R2kJ-uf9;8K&3gD_f}Y6`5gwA)YY3%1qX zu%D?zXph8n59}QykWktU|L>jU^rZ{w3<@>GzVtH7&9TZa3X?}wK5w#^H}rwsTz{QU z`dvyE^f2q@;qkMjwH2lYb=@)3rL<#+d8h1ibNIP!cIRj9+wZXDXwdCokFT1yoF6;0 zvl0)q%8gb()MF+&b)cy9gq4WK>SYqgjYxe|3(O?+2@iV~9~t*s`1g-b&YN)X851*p z$CrjSw&wVm`=2!Xg#BAGoSU;WOM}kRP&X@3GAD0#Fj-KDfrdZAI+|dH5ZfW$Osf`AWvfhwu3;8_TlmI zm{4SSe}BiC7VkSh#ZS2ihwC?QL~8c&Z)*Qn0wW@sC*r(@4Nx{-^MQpZ7hm;?k`BmQ zdzrtJd@Ep)vYM7&?+iizlh@xb3PAh~#{Pn)5-P~5Nh6s9xHG;JqZWjIn&VFCa6`|9 z2Zs%h4Y52Fh@q=EgwWTATOnkTwI?miQ973^=g@nknl9GL)vu{NeJ7?O4@ZE82cd61 zKlATt%r)d@SSOp-eUN9eHj@mD-RHU4@%>IKcrIK|VRs=;RssQK{q5t!RcQlxEfE}! zbQt)0;qF^}$sg|N@fHEnqf=fd*EQ5`H@5zGdtI#R`?}qE`~4hB=E;L1X4V_1_r8Kz zRm%TAPP<+;-#2ElC%d;-^Q6SYlHN?f9SaT|GK8Hvtky5&N=q=}oSdZl7Yz~YToD_8 zmWl9+?{L`#1!Me?$A)fKe-GAad37uNDRb)XBH6|)n<{Rbru zl!zpcA|pkszA=hJ8B<^H`FfxKgrnvWJ&Q3o!Beo=^W;+LM!tkyL1O>zpa88(cvwdEDiaEa`p~}i6q>cZmYNokCtTStUFX`%)(b(O2QhA`Iux};oiG^;NuZO>@7vJ}O zu{mnWIOcvr3YF0-H%rsz#homgIaW)%T#GP%3qOc8E0)!BNVe^3i1?&mT41=54E{25 zW9=<2BBJ$SaHbBEAOEin&OiQIrLwmRwVeLwjByr@`-aI6bS~cBdXLJR*q#UZDHLm& z;zvm=T%Aug-UW}s*jy4EgXcq&_?G?EP2qVwgT0Xx*-vc9QEs*1l;o44xQ{e>ds_gFtn>^E!rOAqTwWm7 zbs>;pqT4aA+Gz58ZVP(P?CdvAaR|ABR4y!#IoJGNI>GyZs+f84^~>8`M*o5- zw60#pqgE!^7z=5htL*a$k)!S;pu#(Y zCUO}Wfe6R?69`e=>)hOXpTP=ar>>GdCvZnG^Z{J=;`rtRM8eMg^jC z7}3a~s_9C5kWiw_D9~xLwgHi~!oI3M)Ew3fUM&-U0Xa?&CG-=Ti21mCi)dJiRR1*} z!Q|`N38trC-P&KUg3(igSGcnU&0}mS+bT85qq@NNAUS zMtFTn={M>5+oia@e zH)kNCF`D2FC)ZJs$z&Dic{&QZGt5S4>rnLLhjTy8gh>Yh%GM%}V>=-GWq}T4y}u2x zAoxRw$9sv6u7A{$y&fk=I3lO?o9Kra_F+W+F;3x$oL%PuE3PcndX^>!GCvJg1nTu< zkehid>v`xJs{_s~?guiQLR_T3*UQ*Dp6 zSD%a@&Q^|0E^uGIA5e9e(3oNo!j63?=3yg_t@E|2gs}5<&-0GglyYa!0T0S!*O|Y4 z)5#qCqP?6sc4{MRZ~CK1i52#FYGWewrrT#yI8{ooAY5S=&cPCBXZU=z^@c~Q zYy6)i-woDa*zIe}1z2knq@Ks9tA@S)Rv+`Kj_?JNi>eO1c>1VLH%=ce{DvAD4eMw8 z`s}p-(ps)(2nB3%xxTiv3`~T5&MBY2rSp-;vGa67TlyPI@&hgz@?p2zX8h+`3toZmn(XlA_}S zJxMY6dgMZy(_X*1eoH_L9wZk(7=~CWZE9W3)&Xe=6?Ss8CsvF(+s-%_?>%$HbNnR! z9ctl0VWNHBheXp72sDb-1Y_!ATQd^HF=VWL%ptieYO8VWLb|_JZC@fyXgO@Ptk2J- zm9L(`Lr{C$4=Wa8a`=(>%0Ry90~Ucu+4fAa`_0o83npDQDe2iljccRBWa)fmVSRez za?N=FCrK1^09!D+#-TeKCk+G2nq_zh5tCXAeZBg)389hF3byLUd_-z~qBFQLKP~J+ z;ei$333fcg?tYyO8hh+;#!w&bc)%;|#e!V?ccl-5okC@(1|tvrq0)tZC~GfA?pucc z%{_b3PQCN3RoX8G-n7?+Na!jWcSV7v@gU;W!|)L&g6F2yD5}CSI4&hrC^_sSMQY$td7_+t`U@3*R(DvNXC8NdU<{9q zcqvED7%Niz7QAmA9nv*^eWLJ)J<-jY;Yw=A-7AO

    jU1{n`*W(K>ZscLU7&I))x_yrVX)zp$`XsMx*xaqsq zl`hMgB|kbdNk$uf1jFh-?cFd5w^=ZS!)377Rl$C`b1d|Q@8c^I{IU$sjzcxyo3Q`b z|0uCjkV4zzfq0+%GOE&fL`h9fiy-&d_@XHI694l4e>a?qRS=ZiH8|LuspDg&H^v!B z(Zo$;MyI{$_))4&g^%=loA3vquNZG(3W2ouJV;mZRBmtaqgkO4xQF%WS~X|uH?B_< z@w~5bJ7r-}B>1q8&r=XPjru|3l%@0+Y&ZPtH?|y+X4nbA<%5+B5cr2NE<)kRD!&rq z%fs6bbtN699saBs|5VUE)spLg##tN|lWYi$4?X@q{7J|Pr?W&&QWW{xTp!CO&SJ!Y zHA@$^!cmQh;IG{3?R{;LZ+eEhn^BynV=x&N6~!+s{9E(&QG>F-Kkb0%79dL!M+y{a zDwU!}ud`)H7Dy{s@C_X!Tqh>rH_= zBld|cJ#kJK3~%E$V(YsdyJ!4LB0;YEZ)7E^9R91Ka=qT!ta+u<+nX74Hk&d$XZt5IX*$ZwO@5VeoeT^y;GO2m4O<@{*rT=N}P{fMx~JBE#uE>c-Hs7+-!W@ ze3@KyI8L^zsyQeSQvKg8X7uGe<`3{80ubTJ}hHCE5qs(Ul~$R&4J>b-HxPA|;c*X`zT76r(@ zj4=krE~Jm$z&DuXRC+_7InIEprymIE3jFe85WW{+;jg_PiEbB60Ijyt>zp@a-v_W`Yq2Ku+8Pxt6q z+e>wu+xuiI*ooj-o6idSj7UJK$0{-pEL`8!4TLL{wH~rkB*fT~hBj;xv&EZ@lDttC ztGyJ)`Xh_%23z`&1(s^U(8nQuoplxP!Z$*D4rz&Ljm~I^Pgq}OEvdkPtWvZr>Sl+~GIx||2OuLirpG5S(LcT*E)RVhj zyp~k%K2bFy6m>6pZ&T8!XHy3eQUql^%R2sVtA)eEE%PxSkE05qMej|isk1?>YQ?@F zX*fyB&+GgBA_`jC&m19ec$ub=Od-?L)4FNnK^T1va2!HOwIx+tA^k%ULGIx|@~UoD zz+7OxA*PZQ@du>7Tz*mI1)}=1EH)S8S0to(wtY@myL`E7tZteP?A^WeH4REmM3c+5 znFR+zcL=NiiZw;#c)*PIx>N@q@7)IvG*ydKeue>V+PI1ALA~X3*7=Z8$^8Usvmv^( zs0iy&jrYbmw2wS(d`xv---v6qPmIqxwdcx$LQ${lZRcyY^>mx$gDeksJv*)JX25hE z#n2YGSol{eOZ5JGaR#IG#?pVx(;JHvBUuZ_uO z;!iK&*XsF>=|N=lONui0abRFzCAAEkRX1&(HqSAE_MIX;(N{U0I%mm}S!UY4YLIxa z{VXDSCR$tftMTSXnZK@<9YL>2{^g&|fPvMT-ha*2PYeoKVY>aiqJ;v5aD}<|i0rm( zC{Ml5IwL_knaS;(dh|K6IplsGfaChcg9_Um0EO0u%l!@j*?H@wqKQ+M4DIkCJWL=` zbWIFGGX29&*Y-7%$6kHrl>^d6&jV@lc_?U3^V8FTx%3(jyo@e=F_z~=FpXpnE=9+1 zreq$V;f83a{))yT9<5qNo9#>Ez_a-hS1?92HU?*li`T4ONQu5bF}~d+i?>AgXZ^0U zHN`nW7O(#d#@^bP+6ESG&pd=e{HE(KT01T-;`^!PukSU2+QQH&aU1D!qu_AX6sBLdUhVd_KzzK3Bmq1aAwA_p0ZS`*<71Xq+WiFwtS`P>mn-3DPs(ALR)M}%nS88gh^@GKoos`swL2+`E-5+Fr4Vt{l#zlC*3W$TT z`~Q8l8tmw*AZ12gWjvLnXpc8e7xmlD;^yi*A8sRU++W&Kk4s2^v(VCuND?zL(pyR?T;FSo&;_7pYle9@*5xqJa%9gJ0 zS4PKNL)yF3^q4;&jq|VcG!sFrPO8(aQ@AXLZ10*c)F24|VlOKV+ER?J z58mF}1K8~?dXtR~s~-WFU~LHwqLhrJ?a=ikFEvKj)dO7|80#Yy+AJ^2ZLlSezJY;N zckM65m6V{6yW_>Ds#_AeYH8-MO8+ZExt9afm8b1XzxSfQ?OrV3#LfF`u4aJzZjpdK z@c-Iw{B!sm36Cqt0IwJ&Zoqg&rQn~P@P+8FTC&5(vvS$Jr<0i2?>zM`O-cu+Suih_$ab z7q9-YRQ}zE({A@Vr7~1mX*qnqeFvZ z8?rq6s(LtGbT`7!y2+){3KP)`} zKpwV~@aUq_BX{IZ>b8YYMjk9`BM-!2r;J2_vT~DVjFB%cf~_%{aDKEELDk~=&NK7Q zx|hrL0%dm^tqwk^n%blX>D0+ikC*O9Cjyur2_SO6&RPvg`Av`P&uD*i)+_wd=pcV) zB4{V&W^0FDHS<1z`;jON3YMx~R?TbO6&G-fVxGKjT6)ghOL|~U?mr+wg=;8`{#2VC z3GK05c9?HPQ#LP3mlVxLxQ{8w$4yEkN9Uje&2;?nNSNc z+ePt$j0|%6LT@ck&<{rp&2H`j`xTtpoA6qU+?Sl5uOMhQsgQRK(b_Jl0{M}#;HP&X z>9e`+Z)|IEI|!4$3A`05I8N)DU;L^1wxG$WUedvS+2ru8`~2}!=S%x=qp|U!sPh6^ z-API9&O*gxptNzLhWIye6Fv^SZneF=#EU=!-#gS5mm>Fs_%WyBVi{Vi^0VI75TasVX&Swe*7`mn<~;qQH1rMXy+sR z>4_tC^W#A48h~ZQHzLIl;8ww}w1E(%Eb9DnD8!amA+J=PD~@W_IN7$Y9REC*(37nG zR&Fq>|C6VRt!T+4Gmkv+DJy^3D~-4&WvX0;;F%Lf#iK1#K?VYMJbG@;Y$qm7)G#F7 z)Arj(Cq@qOZ)Limo}LsaG}_?fDm0ItRAZwx^$njn1=)cVbvvYbHdY_?vHKC)fl#g9 zQRdK*aaSFMb|dF8rPk5Wew!(5J^f=SDyGiyrlRE!Yn|(0{E6tiL;A9RQ=3&qGn7ZY zx7p_06=$gd!rQRUEvCdXMveRZ1h+DGLZ5u}L;jQ3;Nz!W$S+BhHB>HCt{R_pyWB}? z(4I&wOK~O37&_|J&Hv-+tOBasx-JYzcXu~}gwmY?(jg%wz3J}ml14yk)7{vJW>8F1GP4-jJt&fJb3>k;08b9QQ*0jC~vo zTRU)#nuN+8#hnRc`Ft3zrzg~1)Qy`(cHlb8o12z%CYogOG_&iOGUp+zC(%WNOi$Fg z+fn|_b9Z?KmLaEafsw2<3;}+eKW_59Wcl`p-ugk!oeIi$|bAaEG^cLy$(`eiPIpzz(t-XQ02XYRF2(ith@zy?CB(O z{IAEy8YbsUP9UJ)@y(-Vi!#s(!+SvD>utLhKQ>CIvSKl$t4sa(SD#!^sv zfJMZdSD$^?wEb!&ImsUa!b#8a-bAw#ZN)yf>bPD)Vn1dXd7WbHUdsvRY*ASDOy;fm zk3RW+I`5EqGQ+&m{(H}qenS}_)tEBK(GaaO;!wn`%U~+|2 z9NPI~ZJ4Dwi9OGq=2g!fEA@Nbg9RS!HnDW##uki+@sqkYI~m;259KFAv(LQ5cf00} zyVq~{vC(#&`Yw5>dfejI+O~$x!#gaw=yOO`Ji46LrYqxi;qD}a!(6!d+&r%MY}ON= z5~o^rDtQWJeL@pwNJyfkf_&gsxz7?u%zeQO;8}Y5ec;l@iZN_{hQQ-ZFD~dt-yfLQ zhv}{2#6y7K-IL=Vy6nY!O7$#;=*OET_@kjZ@3QXw%UuMa2;NTZZIM;9$b$P%_^dIs zKQpb0+@T`gLJB7~fqEj%6Jv`)ITN#kxJsl!6vp3IE4RX0eXon9sRegKi(0skvtK4` zzo3m_*)@~oRaID!kW8ugwCEg%&kRnrzDl-k9ku*iPTU+c9#kNEK0WgZzOBj4ez@Jc zj~5`gM^kmJ*eQCE{i)1tVBXB?traiOgccdp9;Tx~uRCR$o!VVTxKYT0!ksb&Cx~`y zhIcr4y}D!znc`ZEbzKxH&5Z1WNO;}CBK&0Sb{oU`C|x2aT>N`w>6Ua)+0dw)j#2OxcGv)Os`?Eymhbe4Is6kh4H4Bv6FG+k zdD0|hLymW-=c5V|BnX`zJY$Br;xrc1ZhMFQ&)v^n!nAV)(WwueSUM|WlwV!Aa3b8Y ztC_s14a>{rGW2DKS|wU6QUAjpoMS+z-dc-earm>53jcqDH#dc7b$pGnE}6pDUw^r6Va zKB9LCeo1+}n|Lg3gW$h>K;JfelZ$X7V?-TiLeJ4L>k%*xnPJZDTv=(PZlxcGVRP5s&S0}xGR zt4wkUgxe|p))wOD_l#NzZ)quT+O@+@Or+^j`pXVoQE)*=eij$GoxAuWWz!E?MLFM& zb@KK;T`Y-CP1kwGca)@8P>gw{ZU86`wwI~YZ8HH5jysxvprrO#Yxc5nKGKK(=pqM^ zvcVzgKkL4Y1465@6|!AIQ}|NU;9YuFT#P=Dwe2Y{Ff)1SZkFU;u({50f|N@TnAKY=u!WutQ6lm z@Ov$K=|uLN{PtUtjMCig0jT z0w7XW>^6cj!Z5AMv?AhP-Xdw*d|X$3`SU8+$b-&0sTHbmD;uP2Q&naggoU;>yH9xA zPpzy|F_eV@c2*|&`Qr^}A_5T_y;*@0y(H|X!m-3AI`-q^?Fo1G!5%P<@$qbp!{^bN zB06boWTHY_sQt6+f!Vn3B8rt~O>6Pv)6@LrPH47XdFkz~f{6as^z{^xsATN-H7lPe z&;#qt+Qg8=$CStz=fSeBbaYO7w36paw^j@C@?TO{?SEb&6N|>HuRgTU&y{wZ`FD10 z4+tJ22eA$!xAi#p0_Iffw{Z}hfBw_iB?QKJNCb$lTDZA2=9rmdybEVMTL8h8NXQ{W z_~j_&b|g{F`Hp4#=i}p3{1nQ;6!W*GAWWP$(0usl5$63R;h8?z;*jfXlQ7vQYYqL0 z6+UG}nRV?YuG&VN?#4n~q?%*oxhb+oG91pJe?-@j>YT>KB6Y!6P7Qe7tI}PXtgHy8~2Bg|v2ct<~nVanitnmI@O&yi3iw;yDi>i8NTh?3#sDn>T+zeQJCG7iw zUeQd*OD}>1#Yzk(`kP{7VX|*hSs!Uz1K1zLS^AangO7oTxObqvuRnycIVjwhxlp+> zvO4qQw&4uQ`z2oit{}{E*>_6c=XO4{HHR^vH+Um9hFp{Mci$f(HTUa@4eoramJHDc zYkmYzmxkP@r>D8WLHvX`=k>20K2Wa{lqnA`OV1f_|7;G#6*yXYCz}0m_Q>amqS9}1pFet68CK5odvZt6SCn` zi8c4UrRx6~D=PW)TOb1e<>T?t;HlKHTFE}X&+u&+d|c{)0> z)NT5Q2SRw*JM6c5eNH}H+66Jv2*l_TVAgOB%|F>Do|)uw7p{fHIFqYr&U6{&ykzv< zaZ5>8ED$83V3JY+C$TeD^zW!6onZcPHSy=Ku5-~tf+Gd);Rnll7$5nWd!&V`XJaKL z-vF%|989CgtH+4)57DUO(5#y6GSVX3JS8DLQ z50Fe{C-IQSoN|;Ob6|^QpL;uVixn_CTH#>$*2o-lGCWfodd-rDQ+B%;+@a6xNWl$A z;bjUj?%aCGsd;*NR9R@!2B&9P&TO%mfHbobt|&evT3!_F048rErV$Q_g(J%tYFw1U znqP}uVMWh)D0>5kP-Q$YgqOOt40gz*^Mz*D=0u6t$XV-suKDgb!swF2QQaPB+khKK_ z(~yu`XIopbbmgQa>X>)H{6w23l+#`ItMkaJFzqiX!EuO4h%Kav6Yf;5`@dVbNMdOB z5!EBLG{Z_O$R0@Rx=8a_wd~wk=>mDn+0yLeg58A^Fk!w-yY@d*8QbOaillMa*$)6+ z^j5#*v*L6&T@pgra#^{>Fh}ivh#-J2r1O|q9Y57Q# zd4Q{;OoF?Rl$=z3QQuF94Cra3r!ym|PuJCTq~T3NZBHq~VkJxyOo267&m-_8K@9$` zxv2DMefA=>nLYT^df&(ls_CctjiSropCGfRXOKqrWnnkD7w zvz=X2hh~42)W0YbB5W8ccV)STn{~HV$@rlPaZbESZqC)w?)=H38ZFgsZ@9!%md!6Q z8Q}vCZlMaCKssQsm#6$F5@N?!8WO2+li=MS;$7Yb4j!4_G4w_e3k>3I36jz`57DL+ zTc^WJ=+q?%F6Ae^2~%R35cpU{Ol;t+K|IWhIutRHJejj)?;(s0)_5D^nc{4M&7W+L z5|jV7+C^oqsJwzs!1+g5=Jqn|lq_#jTo_^P0oghYuj2V^B?kxxVToz=&z#x7QoW6j58X;g7h zl-&5~8dQie8j%OK23|bo_hJQOAuqr80eW)Cpe!+Lycn+EweSz)BO0s*SsEFnd%i_j zeMDm7VaMjEUa&~f50%{%o(>-KlQdQy!1UdVi}W8YC7POxzc*=>|1F-Bn7i4WiBrIS ze0}vDwDr$qc}t7~fFqo;RfJeSaA5hbeO^gfYZ(=YttOQC@? z#buzn`D%y&A)o}$hLhpNGTvcz{vj@@q;=h(S{eQl8I+pm&IEuZr;FIq(?q~t1<@Q& zWLE~;GM`GcxoaEcEr0GOMen<9=wL;CxiYaCca@5urI6C=js*Pq!(-xmANJYwuKM1{ z7TC(mrwx|D{2;s)s>sU9ip|1HPfvg9ldD{f3?DE0FKUR1 zNWAIA$YPW|KOd>DPyZG_%5ynx67VFTmGPAOxjdOwXq_(ng&13_*^_}72(-(LkTl91 zHvRTu-XSC)n~OKg#b0sh%}RjrE_*1F(RppJ! zDqbmoftgvb=nH^Q(46)l_~*2SdVEPE*Os-B*0^81+%^ zLO~y5*_uVX*y%P`NLoXT@m6qz1j)8GE!9mH@k($w~24 zTXbyxG;>WBlEgy{RPqA79OSeOr??5&o0}Ut?>g0j&!Zv-npOG@$RPS0j&E3MHSZ3}^UxtJQvv(*Isw=IQ%WjIpt{{oG5G3ugnDl&HLcnI<@9nJ0D|?gh5r8@Elk zXGRQHs9^Ie4B!G;7s&igvmarL7o~e(Su)WbjqC75Qk6H&oChVctFZcT@u^(Bh(9TB<`*sC1aTpg^Hp zqsIJ6R8&JErxbu8jr{r*s_mDin0egr7NljL+T36W-gt#ZTcyrXF)Zke^_*iNj^mn$H2xs$ZgY&j*(4)MpY z|7)Y%4mTaZni&@^l@(c(wfVSfD4fX;`wecO2KVY+1In(GFE3R>X|OC}&8wr{T~3ac zW~W~DCe)dEpTk{w-6jBWG(O*+m^~p0bk)|v_iDG%21_2w$SVj{c$@xrAA%7>Os}re zC}S!H*FYgv0EaPaT53X~ZftB!DFmWG5+n{MB=B^}BJ0YS_Vo#^zwRPnP*5NSX1P0YHHeah>`5Cs$ONt3XOWvqA%rYkAGBo1|g?U>E=Isx*zbsw4|E1g+m&u@I7z7aBPzy!(k6o!mH) z%PQ2>TwD@$xVxKle0KI>jJvq0DFqYU%N-+o2*kAZ$4#M)pVJw{FWgp=m-EDBv@K(W z=ueNLar~70vu8?8Yzo!UAHDgnkDS7*`M&u#a&My%VY#HeZ{U zQo%Y3#kA2%W&qdm)8s&0ethM+oz*xt%55>!q0c*cotizq+LJ>@YURM4@t$yvU!!_J zt?u1DTMOBB0=H=gVcaOBHCW=ZusOdw0c>RSvxZQm^QCW7%8*~DPEOohT3Ocs&IOM94ULJwD( z78pp_Pm*&E{3s8#4e-8m5DYiO%Q>Hp-*uXddkJ!L`%~GC{pk?6 zn4GTs!QkE^Ct_LHOeH#B9*y||Gt8@{IOOD-&-l{8S)8ra%C3=Ko9VvH$3s-0=B%u0R;zrE269fg5QBcsPdPV*xVW z^-JZqd}UDy)S8BdPUdRhjx%oho}1h3fUU(-o;I?YXCBiSkY1efckl7u=H9Ors!Lz5 z(-|r46Talqu7EUSW2nI`{E@Ktd{S-b@A^@`OtT{X-L#^E1Fas{(VQCDm<-o8AIqgj z{kH^%6KKt9J9(E2W(p-XC6d>!`Qo@|LpP2op>v{pU%tmu>ejdn0g6sK9J+GCU+U`4 ze|^RA6A1Q|O;cYXCy>>}?c_s|7q&CHhK6vJo2x5s0tU>mi7*e3T_wWzkCQF`8dm_9 z^k#L0xV)(6`TED!+FEgdz5M*1tRUyu|BJr%OkUqqiRyg<8nq!b0vsm`ZyaH|^kE31 z%`WD~mEfu&Tl$;;J_^^@Ia*z)Xea%&l`x|B~Yde)+NZprAk7JaNID~v;TdedgOku8$ zjx5&XUr^~rTAU8vV}MZIGBPt45uX{F1~Z5YiWs!Db!M-da@>8>6-3<;b{NpuU5F;E z?l5Kl_gF)OGTK_I(H~jXOr2)WOq|`PSv31-eM4SEyHX}g~oDZX)t#L*M#Y8}3PL&4^Mj0Ql7p^nZD>0G>;Krm7ULa8d zo)W7$7Y<@E61C`YSwvY%5KjN9R5b(T_D$WEI^6lu3YV&$UR9Y<4alJV7c9l-uWE>w z{IZ&V3KPcj@LGosWALq!n&!T3qaH7sV8m&A#AkIowwb|DvSd6#^)3FBv80txy)T!- z>~$Rqy3)$}rVt>g}EcTYgzt!~wo3uN8TUD!tUq%CUKE(=P%1>!~~m-ycIM>>Mt zA^vBQlRG#(L*GR(dM-_#`dcpu>pa#q z6FvJ{BhoSwFH%pQRJ`Vv?OE?0QJ*`1nr-~h18XK)xIXV^#h#<@#ZC!Ep|4cpu*Rwt zmZS6EJ~^DDVyD2)WPZ?(mEtA8*l}(7^sYv?3_@%1PN5n_ip#1$*F~WvmX-_LF?i4Q zaGL^tr7_Sw^E#R84Ex`0R+{wu6>6qr=VY<#Qf}jS)uyk42)k6uRDTNnFHY#9w@dK> zZ%a_bkW0UM;T3MAJpNv`9-?K*RVKKjHn~kVfvtE?#oDWe@8!?tlpEWBit%8YgeTwZ zQnG>3yR8?9)~2+Muy}Bn4$9geUA4gJ+Op3#EjH7*2#$CV%FJk3@+=-RYr{1e&(Avc3jwwHmW-HhRe(J`PpN`V#7N*2yu3Q_w|W$ z1D+KpVeE@r(Zf_Rz*R6pcbu$@v7UYff4R44n(TO&(x9(LM@)z~1~MqLZR@!f5D)-d zF`n_*)&FK(xL1VP4Ajr7bO+`IP$R*5`TGez+u?_g)`IcGr_JQ zFX<%*^J|7Hak{;{OGIID0m!)*I&A(ulz?=aMgAJ$dhVg8m9-Ie{cx+NmoJ1gA(H0( zOJRR)f^$h&z{d86-bVGeV;&c>gv{H$+jO~N;R&+3Nl5HioE^_%k-!$2em4| z`RSt8(IH%|hUOA7v|#W1EBHk}ABCOH68wBI`N108oGU?zh{A7m zZ~s!g5H6cOPtrQRLYM`Mjy!9&|6Rc-L81xqmEjdwazO%$*7t$+v!ApY)o47p@g0qiDY<44eD)D?}VTn@>Z9w>)>&Dg?HeT@z8sc_mB< ziZ{$&UpaPA-#V?DSM-5k>I5f7VVPW9CK#80InJdmEbv0d?1`Eq9j`(SMUa5Y{u zr`)aE6a%EPi)zrP-mMNQ@HxsWl>~b?EvL%I7_PVh`{Qm5O`|-#XZQ6A&0Pvv1{aUw z7YFk|e39`byrgNZfiEV1f@jb3hMv1^x$Bv$OwbSw6p|QtU1Y9QUycr9yfhv6vV+mH zep?zSi4$>@`{=!;v|J;;&gZ7By6mG^kn3?U>1P1v#?cjW>mP=QPvWsEN`%Dve9wXeZ`skf!q}T+m>=9z5Ln*1d#>FQG31rg0S0E zD5yzJYO4k3QBZ>;P)u9ih7`Yk+A*owdkIy>f9w!qBP*J}_#GJWcsG=ohQKfTrD7q$ zsOBqq%p5MlX62fNE2|2DaIIvEjrPda=c&84(C+Dh9c4a-mH07`J`8eNy~lL)y1(Nh zexQ<{Pr+SX-+QNG*_|TR|D+V&WA=EaM=Htyu2$B~9}4XjjAlw#MwwLpdSC69hB#|3 z-x{fX>o@LQI+No{C@QxPz5STx@I&L$dPFzLTs8Uom~gTwtcgXhk6O$RA?-@>pM0wX zTyceM5y~r4-$KWTjmiq7VA!|Z7!{qO)I?sX+F zKdIvS$#BnUr}4o!?3}MT;!M|yc*OjIL|**7VajaR>9`9n=jun3RiQULCAGrHV4&znsi1?Ad+18| zYE#Na0F$l$&dv_F;BP~e=MQ1xWMZPRW=V9jkJr}J)${M)hgB*h96U|G-|ddo7DUqATmv%S0k!&1H&Y{*Py zku^qCTR100hDPh?>Ms;@cHYp+XO9eywQ8NtudRL1c88yb@C1g{`2DmkR4 z628b<((E4){NeY&iaI)ZdEbE5XQzoVZ8t)Dv1L=>nVzA+7( z(>ib6nok8bXBFh+MBwf^wG=V@=<-=D|B)?jA&Y?_VmG$ltTHncyHnz!jfRfCZ5TB@ z_1{}CP)~V5EYHkXhL*}%?qnD6P{KyX#;okEt@%8Xox8gd5I}G9(So7lrZR#tcRz%m zdCGrL5Jvz{ z3TOKcCgDxP^z4KJtzl5On5dIKCc27+v7UR{YJ|w-D|`_cFvXl%8a0&cS<$GQYvCO0 zcB5WB08uH#v&@>4R_0JPCti$x`)WmsB|m=nMvw21kc4JuaY^3poAKW!Hyy6rHS+8G z(l0MBtK{Y7adOS4tCzjpK_#c8EPs*u-whiCm2f2Va)U&|mOS=i2~02~dF2bj5$INO zRr~x_Ze)9#Y;A1~ER{^(XhUqO-|jx6$QIv_BZor2ZyJxVZHV|@RD9?A)YuzQB!zbk z2$NLlwB*QvD5xT?GwZAQq`x<1RdGb#Y6^%o`pUP~9W(cr>?Zk%SU`VL{iiQ5re zBcT8cz$%Me6uE}Pz7h!P_rxqeYtwrcCF?`vGcu;E2J!?V^`Njd?L)W)!caW>9`0NbmS6*ITiGY)+QhbU1IRj1ofPlcIMKHnD}=)t0P^lf~3cCgO6qS%5yvH3=zmlaSW zQ=lce5u$&#tLY2Oe8#CSU~hje_Rq2|Lc9a~FbWrItGe2<`}p`bfPTX%EOyhPso~;Q zkU-qqY8L2cw^tK$URCQ5tEfZK_ZR*AyPpqv8B;d-rM8{gMSP!mWlYxmj>q0@T?qVj)Cf>r-U^{Dy~~!tC%xniTRd9tm_7RO!8|w|za9=a zhxw7Mqp1(#_mhAl zvxNhM4lJWrz!K8tN(lcnaAqr{%E}<1qk{~X-1}B7t;#Y|6-5Ka<}5#dw$r4Bj`&aQ z$cEkwG3;>I?w1UNUFd!sH~(26)#U47F#=yFBOVSLEXhOMcrfGX0R(Z+)*M-|4{N|5 zUk_`wU-Y6NF&v{eNytZ=1kdria~hX-N-%u!amO{jWzM6<=OB#==I*bvy&{#NbhrMe zpH~gT9|~5EGo((Q2&_n^rlLn8V`GotSAT1!_YSVyTRS8YO+(;K4zi~wu`Hq*#QOq! zLV_R%zX!LEfbU^*f8WeCv)9fJNFb8%a7Z3A}RJ8)Ak>E7-glTz6fq`pNuL-KHPaXMG zU@AUYRhGq!;yobL$)=d3k2u~R^IAve1bMeEy{l~V4{EkCRBWeFO}^oM;AG#irBogb zG)WBS_pg%w9YfV5vbptRL@-$W-+(b@h2~+Qa~IRA^5cAFV_)aU3W1Vrwruf5>u{D7 zTnmDkP0{xpNtg;ZUk=$|fA+Qut7j5#wP zEf9{IsyP)tPNslVj?qz`9v=&0uQ(GGbTNQPf&m$sY<1O~Gt{Ynw3zr3fq!3_sj4vg z7>pNE94!dTQi$A2SAEP^zuhfsgaN{w(Hi`OaXl_&s)?xm6m2a~EDZ!l*{()0m8DH( z(E$;jaZ^B{SoqTdDF0TgL6$(n%Ujbe>7jFFaWlJagV(iuaf2-hmhOMWhE$jR3nQ*e zi}$D7`+Mf|PO+%5szcR#ReT9sJG;02IUOC>+TO&2RC}Ko0mnby$(hNH(5Dnd=~3@xh;CGCr*8Yl;fX`6*4~|9k#Q zgyxV^=9Wx^KRB}&Gml;rXd&HPB=NgeW6~&h$8q!2zblQ^83P<*+Cy(a?dCrpM!z%j zryiFw#nX=Znw9&*XOkNS1O7$-kAK&S`0C-2bAl%%>_DOl`l8KbNgJ!J_wE=Vf}HK` zp$^y`QUCu!in{4eEFv0RHcm+LOr6&ZBB z_%{2VI*n=*)Zj%}cK&@HKhs;0x-=p0E=2&{cG|_DyiwL%X_^~XmNFblNxW%|nU5Yi zx+rUPmH#I53{kyoQceIHX#!d{-zoe=LaG^^iK{{I>Wwha#>40o6Q>#e$Q})sI%F?B zuBn!?Ou|ii&a%`KI)Dl+1_Ot{QF zf%=H*p9qP+o0oj^MgCVB5JrzZd=MR7QLj~=n(CmXQj?$Kp9O@_0NTF_I3q2$KuP20 z$cWVKh?3%u*THXV2>sYO7@U2vXKI>5gEz5ni>XvUD<@H-3;Vs+3j1{`@;jc6U+Yg} z?L(IBNLNR>D=4oRC-QfOztkg4hH$LlY1ug^b;n3Puz)@Q!g+WAuK0MWuQ*3oU%x~~ zQELdyz$aX>vk@^Ba7xSida`YIPj=Vh>6WSLTD`G)Klr zY-HCm#D1$lzrk172(J984)b8Sm_+Gs7}-G<)Gk{%L3s-<6Kagbf5Q zm|f*b0a61%gH%4Bz0rq42krwUG1APsEl|%JVj9Ms-6xBN^XX3t0Qd1O7TKoc{n{7o z-wVf)E_yddUnYGcloWd8Xx>R3Q zn2VI1S5i^&Gwn+Wv$_qXAneR3-qa7cp#r%S-Xr9jUnLq5qp`_XvWWNP6n7-4ox)F% zpIuL_ZI~FdEezAM_~z569oeYd_!6+LeC-8u{r_=?0hNYR{D{_pV;j()-?933?(c`q zf2zs1`6i3^l5CzeLzx{=Q}enz7>)Mwd|ia=ooz@q^dL9hu27C9HjpXccC&YV@SS20 z5cn*(6mW3pNE{y=@lV7XdSIyfXT)H7@r^ZYDxQ8KavHDgu!g?-NJY;?I?=VHi4)}= zvqJHHF(*<|R9ejyC59e2yZXg(w=t9uP(s>jl3p4W;%hf7?Z~mBN}{=bv7iR7=*H4r zLRh4ro)c!JF;Sd!ar$|d-4KIsfF>IYmQ8#ifBkc_=WXfho!y^1+8cjiw=+_`HrI(W zRPt%bYvKTrP%&FO+qV*;tBxT>ZO#rA`3RwIbCZ(}tqyrcDH1aux- z3*#l?Fug!PSVN79`Y_dd{#LVvnCZWS4LDWV2?gb-ZZ9!J)1X6z8Q*I*ia@DM$@eOe zTljVa9?~9RjK@Gl8_tgU@U0ja_b&fk+&5{Hus6F!mej@t_joJO!f8EK=E0Z|{^2x- zW4l2kk1<@tk{3BQeobC*i24!`I%)a?B{1Kpfb$JgKhY+>%Hw^q`6%>cQ_ldd(Hbn~ zY0;8c_0BHUQ7ON!7Rx#?3`&JZ2DOdTQ8{zdH)QL{tZd^=6ID{-fc#5J9N_+#&tg^Y z0X|?rIJaC~Med^mW(sm9456ZH%y)}w)5-R{)xnK``N!!BoaWPr!MPnBYa_rUUmFo4 zP;qJL=UuFSy!&>uGA$YHtv+=c0RGmW3!t_NJD$)O!bbg_+GHw@7yVa$=#L{ak7Kwsene3Sm=qwfB2nDwK*Den zuT9Kl3MTqocw{Um=D}9sT>UUn=18OrU-aacb|G6-8d|$PXtjRtV%vOhhP)b*5 zX78&d1mbSY!N1L(SwB_UZ&N#VnZ;>MH0UJ>7*Z-in* zZm$TB+_O=@f(U=2`zas*IX^F8BB{HPeERjX{)LtkJL1eO-(R$v0%%QOqNw=xTXMO5 z@K?faAZosp^d>Gb7JgB`TsjCRH_`6xLzMZV=)VOy;Y1iu4Yc2ng@xuC25ETFMtn*% zN?4u^@D4T52jKA&AkFLtU?rd+5vZhR7@7lKKYD8`s>-5&L-1B6W7c9u4uFm~4(>Fe zA~2;5V({-B8z=+NqWa&*UXUZo2nfoMYj#KfNhR=f>iPad&>`^ccLkD0YKoC@`L2(S z*6rLpJb1x4TAHjWbXX!dS#}RUDypQ44hm2NnE&aX26|(vYyts^D}CQnX*s1- zk%ug?nS*C}sp9O^%jMpf+`p3S+dXq5-|0(~*Vw9GfDILre9SAR8;&7p!RYA>0N=*;v}32|Iiq zi!3V^%lz*KzR3=CDF}-aA|4+J^vUrT6D?gtHKVLrwTScfMy)+o5O8%kgk6Q*Zz2NdHZ(kh-B8k-_=V^Yv4!UIS&saR?>yEPWsk)eD% zCL2e#m0AgIncX^$6ltU7qbViWc#dwjE_)4Vo>L+}$7-+oO<(K?@)BNuL~xdt%?_iI z!e!HO$S>OFcXW*9J*Yn8T5H|rzo|kw*m@dg+oddDkq_G+X^v>{2&aDYqd&)YP>?wr zYctGrbgwdhtUL(D)5GO+9~fhKG%PF(>vwvsBJ_kTB28QB|2{uDuPCYnG#U`$TUX~) zLKV+-75OdZTPijRr!Ff4r;>A`+0pHyfy&=^YIJmp%~!q;A7&|&{jrH<8#pKin+T&d zje{mQx&9BFK8LWWmj=W^@F#mB2|}k z1529Zt-ZQxbroj;RzjH)gaXt#Nr`V%WWNnVk@-VqyV{T_l`XsO)h>YN-1ge8GiO7C zFzg+cbr*E-DB5_CduZ<)wiN5VNUza9m@yxezgIsJ(cUa+`Kgvz7jatgzxn>@@%Z-S z2q;Sx7`{HKm6g2+tp-4J1s5Nm?OUc#n>7C}@q*C74y7hFom>N$htjKph#x0nVqaYj zkh3LUGS&Jd1hfq-fcqUVm8CSrz;~XW3g~XmlY;jl+dwuZIlqfT6+HCBs5!n3=Sinv zE;j!czhY%dG7EJOC$zG%L6YmhSc(bjL-@<5G3O@)Hkcm6zfw@lo5X2cXcz3(m(N>D zwAlQkv$~a0)bMndp^Xjetct>fE4KbggI-Iv_8N9sEBvJ;q1eQB?y1zkb9r<`cQRAJ zJi>gOW;*Pi9LBF*8oPHU9!o&PZx!O~;qe1G4WJTSmwnJghM2V`!-!cRIv9w;V)9yA@(A; z(E!?!>(2#-6HIKY`B&_SSK}dQ7Fdh1MRE8y zlEI1;8uE^pIM5vNt(I<${i}B&zXEn9FdORmVNBzq$JHg3`vm@xcH;@nC@&_9)8{+m zr`Xia@lIhqmO)}E?MU_5^9-qD!iY!hX{Nsq_IP%YpIEk=$@KZW_B4@6k*Ws$B&4=0 zZx=A>(Jk|s7IaG9{^7g!lK99>p?mH4(u=~z=!9e$k{=eCa81wN<#}t_2m!ngT;ACM zfS=oR41lR?9MZD=vrhD<6FCc2PyV1jTsPjHlxgrJ%oZt?SvFY89Oj0m(KR4p&yt&eNj2Pp0o&vIAdb`#UAfAKrTfF5EDe&iN)8?LSeSkCOJ-@kg7z zqsFW!AuA}vB^8E6wdJ+ZGIRehKY!c$L&P||hQw9d&CSh>B9S(tcT9MJn-Le;m8=ZN zNTm&+8v@8J#=(}%`v`dww6 zYc63=RgSCklQCuK^Gg%=Qll2%AbEefU8U)^I>k8QZDe{M(@Ak`1GhYEJ=+_I7cPBC zCe_Z`i@kw4d#x_}@#1~07a6GyrI%WLE|!a23(Zw}E;y!ll1ps0o<(hw(uu}aydq`_ zz9g(&Lk_Lnya_yF)j6WD=@z*zE6P>O63u6j$BXNMIs)C*Umue~K9jp!<8(3pv4&s# zw#r(Qb>!Mi+azuLXC+yRuZ?u|N0sK46&v^&$FBTN=uh1_6(BLXpLWMN(_3@`kzggy zykjC3-8;8UzOjeKU5ol%i+wUbkzgtHH~ySpyxRI#`%Eq3C`A7ZK=1|o?hg!dZ@C?h zfjKs255i+y&e!2hYshdnmBqsRi68aO%e#g=mt4Mzi2T+}Kd)Nzw;7%da;x&$5wLxx zZ^e{Vl~M2;4^HI5`6=G)uSif(NK%NRh-Aei?!3k>KJ!3Mv#z1PmXYrp$-9{3q&6FS z4O?H=V*JE6zG%sG`P4tyXnT{VlibX2k>VoWC}`IdPXm5qXU33qxmWj|Uh?i-ZzIQH z1K>0xQq=?yTp-k3PW{fg*F*dF1lD;Z$5V?PUS!I{$v@^80xN*J|8y$Y`nmm^lV(5_;=Nj*6xkdcHNU#JosG@%?fkJt-Kh(| z)Bbqn$)q3oTiwc}@CaBXbl`z1sNz1E>W3@gV%a<%*I>>m19JM)8!f+ukRl6urBd{! z=59xzg4m$qz8_kM5XT{>tyHzQ-XARe6}`#I5dev0Ud@VqbMECCM=22!%yt=c_whZJ zTdqQ*D&mNa#(U;pH;qjn8muIIbVHAO#2Wup>yB*LiAi3+mc;*>2t-(mAX8*z=*6Cx@b-3N`wC%Sy?$Oz47)8{4dx%sXs(IKb(vGFzb;aPnD# zjpVq7=`H1>G4#!YyyoB?BfT|NnGqRBbYKEGCSuWBw_sB56=M|6`&Ul~p65ZEVX)lxJZ*1rBTF81vDY>2E0_tsGE-D8p<7jN+r^k5%X5gTZ>d!5oXAJ?GN z=Ak=9X#$-=k@S)!hw$|H+E2lI`~D61pviYFh$1OK^5g0y%<{Jlv`+f$VEEKv{hP4| zV$TGOE$>(qA2hinB5dL@RrGM5?yC6e>3bL!zHht>_BPg;(AX&%XFb@%yGE)~R1fm~ z3!X9A`%6nneJYscyWWDQBPYR6=xCBuLjLaPk;49)6OZT?JFl*AQ!S4qCrfRw`OBAF zG+Ar1C2TVa$95m(nsrg zY#Tlx)jl0Qcy5%Wia%`}iJww9sZ@I6#F=W(0GhLS?R#gQB=2}pIWl$5hs{x4h1@1t zyFE6YNGE|8iu*QDq%Qh)0wJTdgCD2=lBVPKWpA za>eMspo_G_ZRvYjF^$E1rScv2#qJ+V_Rv!evWy0KD z)2iFW!Z6-ljdlu_*LqOMHm7|Tk@+NB&qE7dHT~Wr`JL?U4@VIy0jd0E8l3FIGMiw= zF@cFS!`s#CU8lNp$f8dPLzWOxR4v6To21{t$&qMa#RtL*`_3Eb`#(C-PM2LTT+)Jm z{fSelL%#Nk=%~7jbRo?{QZbm4$`jGOvo3fDj|PPl%E|-sJ*Zd9=TbTl3F5)oFHgec ziBsX;-|J+ezri;|BtD^46EY*zj$G~J0*lohX^9wDJ4iqcStBL-Q5i$ z&8EA%yK^Jm-Q5jm`2PO)ea>}x@x(_nd*(CmSnIWF@(otyg7*z2_%DB765(*rfyo<6 zD$)PMjCWS<2}FKu*Ap^_S96WJhP$@AYdjV~IE;24n~lLA_FJ|=1IFaxg($XyiQm4k9>mYz$u;pHUSj_1!yEl-`$b- z<#7!L^#X&M$Rv`q2X@}J&1Ojqz zfQ@rfrrnqYNZx-8x4u3L-M8}|Bwaaq?!I1m=?CIst1{yE0{Nft=uu`&tAIEFFkMUo zn&T40)tkM%WIgSvGao@+=EXFXT}NfFR}&@Xgy|s^ML^s8FbICiJe|bpK!S@3f4ukM z?0!DN6SP~7CVd@b@Wc#Tz!xmTqy&=_sx#c@1m*?ZMYXGegIv$wP`%K9vdpT}+8wyb z73_J18$94KzDB{l zv?58HQ5*A1d1LG?pT3Nd&&|!ruvS@lJm>8XM=04=<)G>e(|V?6Y|GHRUnQ$O-#hqK zI|Hza<qk^eNar>28sPXvML}60jHBa{0&(~JxA0oa_bc(YqI-%Pr~je- z?R-fUq_1o#UT225*e zXSI}|8rlrlI=2L*%&=Mzk)IY}*VM&;nnUaTGZap;*Z8MiB*Z#;my3>1yo8j1H6ZD3 zV&7Y0^!omw3nt$6Br%>w4Wj?Euxq6T?&99ym-?qli!25bc%(6+9=0B$;3)KYi(v|b z%p@C_uJGuUb`<5)+!ISg%9#Mi^S!Be4vj>=gp%oV7L^tKc}2b5O{S}bZ4%#HJJ}su zcHH8*Ivo+FcGaD$jmy)Dr0Pw4;6LS-4jkv6R(i&Y){AwPR|NwxTRpH=OZqZJ#xsHa@r- z8)J7yYP85WouK7yZf3uW&S!|9lLR^A`M;EP_yq?;zGV`1KJ~ZP2)cWfe?~;kgoh7K zvK}pjF_4VL=8_kh8^7}0j&k7frPV7JKFfjH;Bkk#r0;NeeI|F@+7Y4BCr7{p$S$e^ z>is`HxK}25uZ(xMyz4kWGYv-+TDK-8OB87wsUt3hqGp$JnyMy;_h`=iZdzE;=BZ|F zVIcw$RS+6iLj+czNFU4H1*K8=Tn|24+YT+3u}&|yX1KYD2se8qs;dAygt1V%vzNDI zmGZU+M!Y;?Q54+QysP>Z%a2Tg%%l39uGuLP6%)d1-mOYcx2~T?k%vtmYoIbhoM1{jV{r; zOQZ@%OPbX9@)vs8NSS>|9C*MeF2+Z{zI3*gBe~EJdaSE21VE?B%?@Eh@z`2c=H{}1 z>E#F5LP`)81ZM5sYXc-i9_JU^flo9mj@`byV(SR{)nT)Cvq#N}XSI%l14dA~wwxLNu! zeo$~dU>v!IbX5|5FH?+DTln$zHpQqz#LAzw;O9DOpEy2^ERG~be*8>hO!_d3w_vwG8TLz0vp`c{m&7rko=jt7X8deh-vj!b-;9P z*FT#?7g=gH4sisKOwfmyqm(#Ce~R(B;Sc?Y@n;Qj)U_9(E$>mKu*7`sUQSMqHf*Ol z5Qg~hLkibF&E=EPP|#U&TH5HwP_#S7GnmLI&|gC33pFFVfg}9@(%_y6492f>>_8H1 zVn45MlsL5-ly_3Ww49+doJ zY1bluK$NqXoZ)JVR-yd%6v>FF>47P=iU_4>OU0PUl+}exB@8k2bFDcufI_;-%j3ku zg9y(WMy;$Y)x7uZ-8OD*Sjr_t9VX7H9oF^;dU$k;TUj~jAtOeH^L6xnP8B1i!Ffo$ zbzR16tOAZ#laZT6F+}2F5nmq9<1fNqHxfpTe(Y#M1c{J2X{Xi(9IYKg(J>i^}vv!wLZc+e2r%D%3CR0MK1AOb9?2+iLRo%5fP20Ps`(| zt*I#x7RN+KFNj$;ASQE7DYC>Y7FA1lb9(?N4^C`OY+cjiJ$?&J)JPkzinWeExLCTj zVGdbgKMf5ZZrc(*iy&+mg;R=$hZBAPcl-ON?mZf;BN-s6FO+-FU|(*)UH2ZSN%-7k zAO%Ycr9 zsRBu0)=`pcAquGne&Z zX^4nAn!A@)?dRZtPl_gdK8VuX>w$bBrk_FU#PLCPXb0b1X$RXzng_x@^{XV-G zNatjfa^HzbN!i8iMdW3L8!9YbSSBxqlFLrGX|4t!3KBppRUp0ZYEUJkI9?_^A`X`B z#i65ek?dOW>TTQb!PEVRBp6~5##ro!1Qa7xrbREDE@~OCf$kXB)|IzN(Tho9%*GGfFGHOSavtZ_ zgX~Q<+C6G|Jd^1Ps}%VOnPP=%ug(R=oLN}HmjG_R1^lL2S+Kr(=bMBNQAqmFWNOO+ zgz@|wg5%VMJ`Vg6nWRMJ9Gne=&+vLQS=>4usawNjM{)CT!TV+-Mt@d-u=2no@bMQMxgquKj!4Y0X^x*M-LQ=rzxQZ4 z{IK6aS%a`nUBJE5Z=7ZeVd9p}`DNH6E_Tlk5TWa>t#jW=t1*?$J2$9nRvQKl?U*#R zwiZfA3=M8=C5CAAD}|34;j?e3uFyqoH9MbY)vkKO5QqN2z0OniLu5BJNyCPq3H?&o zof<#+bQ=V)9R>l#O|Ygp?z{dXUv=^68&4YC@k%Cc!_WzUNGK8m=ZoRHJ2w)shE_|$ zYR%n{X=P1i7D_;`Ky6(SoMWRZS>jkIS@WcDPrZ_w@d>Re(|u+~gEF0#Qe=2;E>R^^ ze~uDq4lNY#VAg+!A(vDq@mUxxCz1IvsT{vh(u(Is`V=0I|evy48&Y zFg}W3TY6c{#|qx*tx z8Bcb@_wtEb3d|bKn_lVjqeK;PDwHn62UsCC@$ePPJId{+aGCA{=_14=T2iiV@;?c| zl#OmtwLW4`LxPYuLvlI5C|6{a2JxxTp2%Ti_-UKiB0z1kHBz{7MsB+^zNOC{|G5b& z5KWqM#Gf)4e4t!3dfC*wmQ~nT`$&zp3pPJ9BIv zKZx4zebZyou&mJ!`;6oIs^2TY9R-y#YZr~a%7+_ZjvMxU6fc0TMk4_v)nD-iw_{O} z*#)Pm*{u(2dKX7b)ExM?KnXA3HnDE--81C@5KkWT1=4^K5r+?e1;p9a*U(-V;C#J- z>VZT0uKKd^tV;$4zEi81_v8>vuc!4V&k0p$Sg|jj>IMdjltJe|K+|^oUSn$magOtxOJDa+9>!8A=qQF1R-|J=Ce4wAHZ{pzLU>#bH~7ztf6J`CV44 zkWDVDLDJe86quw$1*1CXeiTvL4WxB0Oi}Z_gJYx}HggEShjGYr8urg~7&iXwtr*kA z{d2o2-GkR*wY`4De#ma%YRAo39bg1by{vQ3)D*MJ2LQlgm+U=jKkm|9K zK#{~9>Z#}rwp7F}wkAt*Kbd-IUqccFL=4~jF@CEf-5|qJq2L5c0SD>^4sJ2+g#Qfj z!nW!kT%TWl9vS!_dc_XWM~vvRii`DiYXxri{qFN3>N!b`oTdrO_4*-F#P2=7VIEsB z0PLMyr9pd;)q!Sd2_)&0BqemT@LBL4`Vo$Bv@d{fNorLdABD(nqs89noG$4l(ZNTX z>s@1U5-A7kb?Y&cBWOHq7C<{VI)=6cWhuO@|KG?}OwG0n?_s2|d z5%D7a>WVvwTjIi&Qq))S8`bh_M5wW66>15ymTf(f_TRWeDj^U2Tg|lVA3+mF2ygM1WFLW>y1J7h0F85nu$<8t0N;!zM)lLchk#JW zdJOIb@Yj5h4thIyTP6H(L^vsfvenMi^02A%US2P z38rwBdwqQp1l8%6D3oN4gs#F=Z93duy7T&kl?CMU!Tw7tzRWc@)#vO|rr)IY5{~(h z4Pq6Df8yn;(R?rQq?w)HX(GMXX6&u(wXqYhEdP-8z~g__2^U26R_>$An$$frP^>x| zQj^et!U^8sF4K!pf7V!3j*NoNq+>76FsNS-F|&giZ3q3No}%O@U$Fk9 z>xM1}@c=>smo&^REa%_0(Rr1uS|+v=*A{tsu5q=sDEt}62GM`tI#lJS-12$LuycB9 zdnvQiTu-z?aJTrL2Q|oCw3ipkoQ9c5f2L%K)Z8O@P!Mo_y~(> zguwEsknv;+HfljUcWpmC+myARMX?E|;BmzpFonYGJKI=wq`xJqkYC@vvmo!cR=i6I zT5TeKDwcQt6BMYTg+B=Q)8o19%#AJp89rq)l8j!CC=}Qiw$ZBqKW#3R}F)?+k z?!ZCWg9O6*q7bNnCT;+=&t%W_xvcg<6Q%)-s6--HFPWy!Qe`=a6O>MM9kOvR{5_|Q zEZ9_DP?9=h5p$72emQIbQ&9+&_sze)Y-VO~3SG0sTfaG+e9b`6(KSyYN$@c^pI zHP4>!e{XW%hpOw8sA-Hq!w}`+FGH;?T#d+HER*_r8IF9n%khT}$Oa1)$jJ0&wl6)% zG)0)&+oOLk@MLU@shc@u+__mdhMWI-?t9r2Qk<|p#E`F zPpw|ZHxEB;SYvw}-D>~q>|MI|JNQ&{ch~d5Ucd8(e%+j9YuKSkv;p@l0dSEpnKlRHOF&=$RLPU|+&T?E$C41RqBW+H1 z02O1eSwiWDpX=CQ%-9s;v$|Q%mJ{cK_3h!wgT=PdGG%F-Q7U!GwU>WiS>|t%cDT5> zNN}(LECx{E(*2Z``xa4nF&Ovj=e8#AV=uPD0w#W|-EJgBru6v8(u9XctC<`l4loEi z&q(58+qpedLG#_r=83oYV2nYji>&PHLRn1och)J+TJKpq?TmL|h6?=LWtD5vm6bm0cxN@mbko!6#e*G{YAV6n}SIedX zXo3ZGrw;-d3EZx=Z++W%_`cTf?*2427mtv~T6W%y2n-L*|CXj)t0{-w>q<+3MT*W} zghMRe#{!?TJvDGbt$qI)mCm;x6YHnT#T9u#gplKOWfaQH4{Kct;piWZE+V%H|2Yp|(dochOe){H3ZWc)Gr1RwZ<8_(Oc8|EJwux7HLNcQ9EhcX%vL(#Gvh@RzfV@0yHWy$R= zzE~N2SB{;!8L*8sCkG|Z|0f1I9$6OzUWZ11HC4Cy(}FJf79~0pIQ`_V(&@X|7ZIwf zp#jkSp^K)KkZS;3Ubw3Co=MMVsR+b)5uG4-l1^X%ASUO;z}06} zsH~Un*W8yE;WSud+?#y>Z4vywKwWz_n2M+JdWnRCWY&r#_MTd9-uO*jR(;ed;!p{v zP^hddSa>scRZ~jE%AdXd_d6{ZIx?*G7W+ptI@ZKI_6e>9{+thTgC#i-2_tbq!2E^R zi&s-G>TwttWx+lEcmIIekjE;^?+E&LP96T_I|qu2uzewk^8u@i&_fSIM}v+L8I0%& z^)V54T!>m(gC$B};Ep)Ms4@f!rx^;MTB5+S=K(hnw$&)uEP8xEN%#GNqUkt>7HTAr ziy#W5X#Qcm^z;i;5CJ~s_dHw(3D%?=c2YkKdIY$L~Jo!6>5Apx}e{|0U}Wi$_vtmCWB1> zYS+}$o6Y`fp_i54*JtJop`onFKD8SA2Q;+{bMMqhQz%u9@qsWG10~A>a3e9=WN}_$ zZLS?BDF!KB&|vekt>U3&=qB_rki67rHn1yo?k?Rw^bt;&SRzKDc>2i33}8lMq64%O zUxH45o764Xx*`lW8J&JyQ0Ai6AQgh90{Q<$ot zOMVGH%DvrNKo;%ze!$coBlH7JYh7KQ4o(*z`zM96Q?;Mx>wp}|JBTJT3g@1b>{NG# z$m=F8f`H^K$>Tbr?=yu9d`hez653)=l-=FJ*K3dcD9*opOn(_A@$X0%k0&Bd@8VR2 za5->}*KaX~yHEF>UaKzo+gDGg3~0ba&LAwtw9FgHlo(l@9~XXPO*U3g;dpnD{^iCs z%aVM1apULij!PTW3hyL9Ak`N;{U1}rAO^0}*XXyoY$beuSJ(0%$=yse9PBPZ43s^a zS0lklIi~JCi)+EB^$!fV5Kxs2MpWF|N5^X3POR>yz#ZvUBDd=Y{kKCJL4FW z=K#xAOvaC!U7p^#M1L9$R!yxwb?J;@`>LymYJ6Pn=^=IHPdz6B8+mLHCsub5^wIfu z2W%kWi&?fu*CtHazTd_B-P3n%cFyYtSdaQ**dxcLh8#;}aRa7nh=SU$a)$mdqfle0 zQ|r#>E`AZny0=sXl_!X04dS_o+gzg&!gB1t1BIc{vAg^F0zlrjVjYI4BONOpRh|_jY@~YoQ{4#5y8;vpkSN zbD|pfr^w68Po+53WGaECFayIEyx(R7s^j)`3#@5n*vdGVDEWEvIegnJX+NVs55z%JwF)ax+$P36g#JbI(LeVVVD_wYOS}cAB z_vHiu&*=k^r%119yX$-T7A3Ic-trw&06VIFCiFvetvH8o{1Y!$y0_xU>|U1 zJIS0Nf_gy0f*;feaFPWAYpLdrMlH?s=GFU9ZYPE@@-HIhsy>h9G|ZJN%cYYiCpU{W z71x34Hb}sM3K&&@BSL2S9ank;x*ARI<_qPD>~T^K(kCCCm|wN;Le1%E$OLZAq3sHm zyq^PiN>)MHaXI?Totj-yxNogB*F~F)Bblcw(gAA=HVUq~jjY`D{`|a)0H?&@(@Yi_ zb3z<2>=xjCO3ey@PfkfGj);iB|A4Dvigf?(6cBJ#i zmkP$6e0SLvpnjwDpm|@Ow|W6?Xe?H*eRJZ3PE1~95;C|jUv+N!^dYI_8@&`%RG`$hQ5oo#w_kM3SP?tfmo_O&90pyj@feo6R&*B|Nl34`rEeDxRq znc)V}aZgoi3;6so@X)}h_}oeG`xmF?Q+c+napbXEJ338yt2=e5B2I>bH}6PQm7&o| zemb$j?CeYpV_Bl}CF#fVvW2XQwZv@rh!{um*Si)9bkizNM7r@Cl)b>0f$5QNW%>a; zpbQqB->j?&KA1J+UlMye-TnD9{@er*^U&D4DbkDM4o1_ZtF%09OifPWvI*g~=qr5$ zP+S#4fHMxO2B~gMq3F3g!A6XOG%GY$hBnmjyFqc7O2T)%o^WhUk}^U~YvFrRMy|P4 z44=A`c5$H#DosECGR2R4Q3~N8Ga&OrjFJv%M?}=m9RV2~hB&DoFzuECjq^XX@HVkl z`@`I$>b=ubIaSr7fyhz=SdVAdFHuo;PF_50&X{G`=((>WxBC35CxLh27^+5POmav1fT{{7c&ok(YJU65{N zwtU6%6V`Tno9I>cs)QujI&6%p!7! zl=%BArb=;WVBnrzc}r}hye#BtBP)VR{@b_tL_0Gxo$-+d58-DE!x;-O>G*|PvG0sD ziX=CX=827>*X9mS1!EaLa{l>{^9Y=pyWF<$<54Go{-w8aJ?=wap-ewbAVb$KAnO-~ z5K|}pS(BoSUScfr!mQe_HP873a|Gz=>xa>>XFq+6mr3%7K=#IqgCy4T>Er78)pF>n z>Fum!&n*WUuRA`aA3*<6t9I2W$;zF6MYbM($TkTE$rED-Qjhz8c8&@_u`&X?pKFSGk_hUu+R86CP!YQ@$r&!*` zs*CL-JhCy9$}T2V)#9JAe{k+>7H@YZ{Ic-eostuq^iK@xE=)GlJB5v19+o;E6wsbQOVo8S@Kg9h7w6-J(2 z05v#$0_S`STViyUw8nO~`l7knbms2;$d>y3!Yb?UPg|CKndRRBS+L7CwQ-fxtpwI_MqyCO`M-# zV#)pC^1Rg$Wax!CBG`t`>?PA5a$*}X6yL4Q1glo>|+*CDsJ+Fq> zGyZrPZ9xko2Bv!R$K^-6MMnpY=zr*N4v{6Cr%eveOIhtXBtzZ5VLgn3Ym=wrH()OF z)-XKg>o`+#S=5-#(S2Szggst61=)vp&G$gYi}^R29M1(7;KbDxL8Da?W(t17dzaG` zW-QW=fDg%rdi_*vY_bly(2#%joRstz2QrfKTC;FYR z8=!Dw(H1&Fv&RYkalbRSrCzP^WWd2bt4OD%6Sq`l6)#`6JG}5b1q(&E>P(qDe4cV- zomcAm?z+nK{6CY~xOrx2okyng zw3+(tb?Z9xn}Y(xL8KcT60Ud|_{$`}@Ne{H`RIX8BQ!yANq3lIpN5cfR0L$J`z=@$ zqsOiI>h)wR>kV0@MI_u7vG|I@VK!EJGzArk>M_%X{Z^m>|0E*jJ+(22D8+@%2#I%* z)7xH5iJ8_$SgG@nxCa#nzbf=@M>N|t_7GK|7EC?o>V1s7fR6Q7%Kera8ea%!!ed^` zsr-?#9ID?Gci|I%q$MV$I(8}|?yv&-=0k1B9t>)HoKe|`fv;TnT|~s72oE&*0*s2_ zqP%~IC{fVpC67GwYvgSkMmz-kBAT6xFxG45cK2`7-F>T_gV|`?O?_7~Wh(45tJmpW z^`%ZU9$cEz7ZNv7)EI?d({&*63Hhq;zJ{mxujcbtI>f)__MWeZ~P7x z_h|bYzJ5u)c5$ZJ4&H5L@25~)$yq_TYtzB~lUyrs3_l{sz>!(R0Xj^R{`3mQB!qhZ*p|slLsbqCzi|qqg z>>?@ObS!m!+;IF*G}yFL@y%>P6-J7@94_pSqA7;{-ilCg8?BRzUS2fl`i_Lqs>~Tj zk1lz#27K`4l+&U++{Wf|BzP*F%&8K*n+L&|(F*p)uo2<$<;vhy5LoVp$7Dq?4M)(KtCD zqTdkq1n=<7=n5n~*rY3ddLVS)+$!N$&h4=tVa7rbD!M;6cHEJ4g-9~rw^3;OJa0~) z#%pKC{zT`0{3_|{oIdiR@cbSu++TtlThz}jq>f_m`Rfv$XB%#qge>FfYjZqH^7vsK zB|oQNPDZ~dXr>&%<~IBWXUjx795Zby;lJ4$Yhb=+xf|EqU8&zgU&%2_z}%4 zYc{`r65o0VlX?5e@jWZF1ErMR+>fQxIdXW=P1{B(Gs9+_6`x>rc~cbc{qX8SI`B-c zEn?s#BR5Z6SpB}Qh~CG9eLUMGaf*_H8cg?6=;^qA`1mTeT(Gp^pTLKCtDgbm@FZab?xfaP-^r(NKjh$x?)jxH_RXR z$Nu9nBy^a%U|jRIH`(LgPephx<)7aR-BKRkGjDLIpZieTI2_MO;myH8kw|iAMxE|q z=^ABZr9Sq<4c9Q`h|PDYszRIXp8)?~{?2f~!J3(c@oTYm_2H%YdkMzjPYHf5vhUA{ zVlcc+n>~6pU(W&r{|%uW>311NNF#_1qhpOH1_IO^({3W0=HIg#9*h9?s{q(mcE(89 z;LhESuA%DP`R4j$`llx*Hhi`0NwIF@@nN8>0l2a}Z@3^$@ws0i6N7^>=2H?&ZLN2b zOR0hVXI{B)D$ITPI}Hv&!3z@LznW^V2=&u^Oz(F{U%YOrKiciz`N^)FdEZdC>jW7K zc7}@LbltYU=C}9u?6~&Bb-fM?-GN_vyShXrBGee;Ey&0q{NsW^0_7XQ*f-sMH*taU z(5bF&>dEr*s?D8?2%wPeG_fs`<^#RU$B!S2^zH({u1{`8#u?i-_}3%>_hjN})Y0zYe8MJ_@unHA*RV_A4>wl3;NF{F3^Y zqk(|}iKB+VSvM#}R`vg@#bGtbPxU^zB0)xVlYkR zC^AUisnM(+YkAV`YmXjRO{EH-yqw3H-oq6=L8>wOIq&PTOB6j~=e(H$exHo?5t(0;TwXv} z(GIk*AXvcd#yjU39|=Pcko*9hrCVVpIae2j_>{@kRF7p@SPO5{v**=){`oQ7pXo$b zuD{Qe-zC`Y(LUWDrNcgRQm z+|!eZ)qq(TBrYz}JsnVd{oR(IVmpMVt$`|_KiBG66eB|7C=4INLc$=xVi871$01ll}5xn&QWc-@_(>4}ijRsi<;hxU6z(MA-S+vzlC8 zl@^wA44vxpJ}Q0xPC`4zZy9WsK_@GQn9MSNHNqD)W*-PW! zgGemRP6;epnFy$yzT68@-b?i`wMh>RI(rR0-k|jQy5tXO94|XqTf?|))fm7|B}XFF~AufqT_E~{zH#@wk}q$#NPM~y6kuY zpa@KhX$s3A%q_OH>OfOV%|hHm?pD`oqD2mm?6?``jjw}JfQ(%`ZWA1U(l=kXH^SMLZ!ubFk?x%U7%F9^(*4EDlp5{AxjQ_nvu^F8Loe`kkDHcMMTrvS#pGjAB?Gb!g~{sE!MoBU~3d`Qird7}qD z$AebC@PZ*!lU~ge59|5JZeToViy(F8C|~sxoqnll?bfcG%@~|L8>qwUyq9p2&GcJg zKmZ@Go&hvmp?SfyT=I~-+M{>W#I5F(#Sf0Ku*TQ-<6fBvOhok-B#fRft#Bj?TzgieBk?mfq$V*e4wMm)X>B3WO{mf7eE8Ly}f0m z7Wbb(1V%!ni-~QGb50^S*eG!SA#zB86fytu+jFBuyP}L=1M~xftsmlvT5Ep9ohAu8 zNJd18pv$?wg}ZsVVy6!kX$HVcvMgF3g(fArk7WzpdSp)EaxrUWE9#DMo&Hu0xrw_V{5SN%nV~P{zsYITA!0qE{pf||Mxry+rXV4 zkXSuj32)yrz^|vwIajF`FF-l|=!qW7E*k;1#Jbv=RRE~~%*`r2Am$5vfPsjO%3nxZ zT*weCJ$ZS(A#q~e9~bW=e;*`L8_8e~?kY(y64nw)p}Z@`)GEHtWgRf>*d4$FqBG~{ z-i~2S$(l^AhD;^#o(qHz1n(8U+Dh+9i7jeUHEFc2PZO7T)}4y*8qvU5?m}C}!77bb zjMpO4v#Z0SgOJycj#^HR9R_u*#(<$Z^1IL9ery8(!aP2wXa+ZC9Sx1^$Fd}epV#bT?XH?@$#3@$`$Ych#gCcFM#$)g4=HcGX-Z2^{q5;qdu&s) z+XG(mGCjS?u(0crX}kL1K1oTH#-%u>k1GEd$h}0NBh={sLZO|ve7Gx}P936>#$g$< z83qUyCOg>viJ~3r0vVP`1WlY1u~-PtWp%SEjEXg$>0hqi)D#i=EjxZj z7&8W)=WoENF{e4z74_Lz77-x}2lC%8%Nq*)-J!KqC!1r(+ku9p_f!c*en(W*g(=Xw`BAGryh zX@@WDpk8z^RyRfE(YM^#vDG%qps$gU8>hC636J>v8DP%`|KH+V+T2pBPtSUf{w~y2 z2-p8-vG-ZqTcZL~56GFm47cB3l7D73FRJ}akyY0EaIkC6#>Qo--Pj`gMomf}NI2q* zA05TZLTr+T!`vg`vQn_NJ}rC45w3N~XeK7~_^uhE{}u5l-lF3AX_NRbWnQ_GS+fc} z?zk<|sZvi9so^w!h&#|^f6S5sJnM=RHze<^@(vFVSZSsjgc37U7_B^x5n!5uWs0pg zC;sTFChB6-$Z~{RwLd%m$DB-|+>0YTOA8d$AR`G`~M$Tu_M zY#xANSd<7Qr7XV1pYPvYX2VBA_?(6Z0V%Mi#vOlbCv{4SHE~u`EEyoPAjb^k%VU)O zUHe*HGcE;3^&mK<$&eQJNyP(5D9|afK|7#uw;5pWyG@|g^YhO4mzWu z15jCC{u&N!JjN)}XUv+J9)=ZJpEdsZhVzkmWgh<(h+)8PuZmBV7cF3xmp}B9k?M%> zm^HHK>0SA21<<#1$uT1FIOQzd^x!@4>{cj4k~bKfbaZ%$?@5dGLV}oqY1$3CA`l%= zD)yKn|A$1!%PW~!kTuzrOKuUI*ac5h8R$*HDwCRNscjqvt+u0rIL&4^aT}6vfu%7W z^4#(}sfz^af{4s*dHH!~Iv>b)(MkI)M!r5MX}>rUF#&-r;_+vwsi|F0P5t=2JNBLg zulvML$^1U^bY&3&_S#PnLc+h26k^Z?R$u?!2uWzw=aR`3ryaq2^2qC(B2lFZG12wm zrPWnL7)^5EcG6Om7=;rg$UK}J{Q3=4^KOgx0^=iBT9=+?OfE=RDREU-@mJg z3Bfb&fmFvNFfU->rYahQAJAFVm`48k80w^oGa)96w)u1AEu(c^T$U!Lv*tE9w(8CtH+ z0MXSgK>Bm!anAs#{zp$HxrV2R0n7k8Rg4D64pGVdJ?Tgpt=vcJIdSI0i77txT=R7A z)n4atI)*6%Pxb%5_%!tB@!&_!8LQW`E9>XAk)0XG&^gFe=+RXKm(|ZL3?FBoQufeX z4xQzBB_PY8$lB&pt913$^mH~I0P1;TbRH4YQfy(nqea?gy3KGxXI^?^Y#R1JoQXDg z&SxAPuR#4XkH^&__oU;9nv%D;kzY~zziuVw6$0l&Cv?EuUn&s7Jt^hPTYlN0I>0^b z7^^RQJ{Ij5Vp*VrLB&gHB_V^9tRV?x%%6TUH*YkJtJH3F#n*Ldz6rq)UO^-#gS569 zM|^`i;zH5UX_}f%5O6O5l)n!Tu1!svQ+wjdjE4)f6#nxyT{Yf4tPl0C+j7{*+E|bB#SeRwS7fg@0Z!FQ3PDy)7oJ{D=pU5>1@rZro9+orz=)i&_3m zctYv9L+$UWfy(MKC2lw2p5*uPgPkNYJ^kjkU6_B91_hAetO2l6pEWEfE+w%~d6hVO zwrP0KvZCJ+J8S4Y;CjWyu*eEHtBgGpGuzx7Pn=8#3P*$#N)_SAg0q(!$MmMgcb~$zp#(hKEQ7g9xdkrAXEq_nSEZ=G(1o?HcCJ*o! z;0N#V*@0g$)NS0?zEp0!oesdeu_xa0I=ggr^Wk-UoQ0Vs-=p7k`tI)gP()hE&xD$C zGsA({6~K20zXQFyO-DD$-mn%W*6h||DBjV8AfO8QGD=MW37Bb{LhO*+>@)b)(KP? zvXj3`)s-27cWY}yBQWLDczkj6^zQBs;rf9aZy<~Yl-Ch< znIa4=H)fUmt2UV&dvEA>_!4zc(~8l3Hz?1`_TZ6mLLvjFxA5zLsgH2S|J{uJpS6|i zQfA$f5>le?oRAXBS!J-KqvmLDDvg9kv2h?!%H(HV9~4CV{CD6!qG65i7(at~3WU5? zO2uHh0s@-%)xEr`ENA2*BN)&kTD}+Nh{0-U^bQY;1E#IjOsSf_SD2YUKkeKWi}dt+ z&kH|zo$s1YyS+l|Ldda!;{3m-B7@4i0pnb!wCSGQ^HlA1C<=?`qOrW4d=Q3#fjS4b z|CL61q6logocs-2tgPe@(0;IeaSySKz9N1ZPXwnOPrK1jzya6)p(eo(J}ANiHGmy0 zY#uhbnLq@sRI`3|Q9`U?jp@_7GyMgVWc*&)fL9O=2_NY|Q(b)^%aUF~zZH7x8N6N_ z1m_P68(5c4b8vC6ms9*zJ{?qKfsuzlsrU|Vuls6Q9(q74Vja2!Z~8^%Vue1`l78Tt1hz`vzf~5gWtab@O2k3VaIGqq=pJjD?bL z(96pT+zg306&zoEWhE=41Is>OMTk(uwi_G$xCf|u@v_hJ^2<4<5GUaBXako&=+@tm z(B7y3eCxCGN<(NwL$jW-PPb`abi|>4VgaJ~oG*07ZYhSsF2=tX1LOdxc?&o2ImMuU zYbP+E@1(6p=$c{zQ@(gCkh8>b2>hG$gd58AdQV5abxUdi2A%{)aHdQkJrNmX-4igp z^r2o>tm%_rI3H6$8#pbAvI!P$yh;M}n{4B$ssPB>E@4k| zjZX*i&Nbw|E&t)C(N6DBN_op2p@U}1b8ZweAYSZoh~d-f3TcXh)z>@6>LW;5h*hqp`-0fCyTIs%}+Q{s(oD_%_<|MSBJOI`b zI10Etz1QmqWF!rCA8hy0NMuLXf`0Kf$G4#aBPf#t@v+1k#XM`c;xCPvOo~`s&tj6slE~@Qd$#wlYbWdlA&RMLp}2)dq-carmHa> zKXh%MN^6mX4Gum-cuAVGdjlBb`NX)~!}$XY*NP4p0Cqf`SdtQl1!LgUwfk+bzw1#+ z7}4WTB+homYp=(rUu^bJzu4;P>XhDwFn<53r^I{{yF&~GeRe^?3*m`xbgZx4qr&_~ zbNV&~ocevATbwC2Ec0b(zg3t)Ul38V@5BU0C(M>|k74uQX85Kbr_JW?*Bs;NtN+-( z4wXNtDkUIHKtmSLuWxs;n<3hxIjJsEUP>Q&evZxpf+Le1yUjIMU#8?&wOx<16Egh! zD&(lku>be5!6LO-TKsKGvS>BpbwZV3@_HCGPRchU2`EIf+u8()NsfWTucxO$2IbcN z*QUaq5M7gMF{8Q-$Z6o|$eNO9O>R*4!Uo;sL);(cOuCj`zW)N`NcOQ%47-&chO zR7SogJ+oM*4eE(15K_9$?Jp!fw$&k}FK{*c?`i9;1Mn>PQE%2%u>@26p@&1qtaEZ^BuR_AY z#K(nRQ*}7C1rt&eQ*#2Y9ZWlYyz=EA(aSrP#{PCo3AE^w6UL6GZo;ALiBeShl<(vJ zyzzd6!3&UqE1D@@Fqn>S4qr#iG!&}ZWu&MW^uv3+w;t)!Og@U{$yWnmG=QqC6B^ia z{ddbIB3Mi4<)U)2rOimDdQp#3o4gmI`ag#Q8Nbe3nutS(hea9@6sD)s}KDs6FY1}+C6sws!~Lf z|9$VAlS#t7%MekTvJXV{2`{CEY6}`L{ER_Y9wwlB5aNRJbvL$O6M$>{0H({l~*in|o|;_mKlAz$8mzxyvMSve;w>&!eed-m)- zYmoTz^PkA?^=HtSVe^O;D?nsH?{a2#pL z*lnS`KtRN>p~kx8kKG(6J~9r`_BPklZBKaA0m7YI<(KaaCufI-SkBHCzTf ziF_P6px`9z2L|$Yo)3b76aVT3cS*40N8tLt7>FnZXJ<=M`w{oPEzKn#-Kw(KAXEy1 zJSCe~ocyPkBf@%3n#c-vKO&c1-I9-v=$95t<`)@~RhwSI5KyD< zh~pjE=yBTB04FIMiCegi3=Q|U1E4}@yknH^tZr2QNzhES68Z5qGe zcSm|N*Q$;2q0dT!XGOEc*L!~}>ZewY z{!)ESCsy#HCsIDVr|J%HPX`ol24hKW{Pzs~Pm31Xl{_hvu(6_{;OEm`x#6Y9u{Jme zm#A+;K(}wJrCtDVf2LEArx(+d%L>&A3&l;}-5-0sVqoQ1#2{R1A0nzAON$6SyOiG& z^83CFq!;tUX7h8_NI=`+N8HOUWE6a*d(e$1uh&bU(tl?9jYLQhR>oA|r64eI%zSHv zNV80LP%&F-1jmyE7>YDZPh)I#n;gQ=jeX`l{HGVw)p~u6YcuwpY=)do`HJY(wTdx`fV@#!YrXCo{E72Y^|6dJkji|D30N>Hs!%~1i!vpcQ9!so8 zV2>mHQZPthY}P%YVTBQ)UQv`5^A0q$0=2=9(VO5q80Y-k-@fT@bQvy2y^QG`Q*j}R zykAbUjcj6eKQamS{rvh?8#mt*F&lAFDmuGoIU_TvB_V}NM6Pz@>wB%q%9Ofop5?+@ z7pl+Lh)XeiJU-`0a$=fVXY~H}bYRMq$@u(JaDJWV$k8)zzSn!%%_kZ)jr-l9g~DY^ zQ5E}})c?2|=zc6Lt!o#R0wwp25_~6TmIe6|_!};gzT} zzu=E?U$#EDYzohRsIGgLJFVcKY(K^u!G{|=Hn@Q?0{)b`ko7l8VfLJ??~~<`zPow} zf9$63T_bcvIkt;bA7~stC zuGiIQrWksz3dhE+EYNeZTNbM)N)Jfp3r(lWvYl8>#)$t# zp?_$jH|7Q6$mCEp)F>?v`^sappU!2~)@QQRWPhT_MkRVMB6aYV(h{oY@GW&LN!4Z% z$^A@X13J>16Ev$+5O{>jac>`&&z?MjfS04R9l>rl*?xWj;}@4HY{DnTX}DX*ApBO5 z^^KZQxGM*TgQfzDIJq>o@5%FA)mtch^IBEiYo-rm}EQ4n3_Yq#`6YbSy0fKe}k z4G{>#`X4$T8h9uTA|{v%_b_g$$yFM*Rntj?>*Z6>D$6JR;W08fo)Z^0Ibs1_p>-0x zcU15MU5mrcl(l^A1D9QOR}Vi7&$z|7F%|=_$AEG=Jz%hF>RsqUN3^Am%SuG%ZiqpGWckL#5%$5g+DDm;FFq_FlJ3`_hlx zRVyL4f9v5pIrVkA8oY=eUQTMXb@~BWE%yt&@>KW7sk8M9cXs4zv~8aPOaZ)tiPV)ES9g|H6SFV*PArDPK^(KHC|q;e7mmV zX92klE1Z|{yju>2&)QVs+Cw=j9U~OH>@0N74sdbfn{5lPOHC0yFImul-%C4e5UBlv zbxp-z_Ym>Zx)TrUzrgmPP?O8t*98Tt*otVC5g ze*103fI)G5C>=!Mk^`U00d9AJPlc+`8bhyQXi``Dh1IfCz){+t%oJOOm!Meqt|pfS zB5H|?yxclWzc4p@--U*^Hl_i&@WP+i;s4QQ3K#aTl2op0-{Vt)fWe;l`+flk zTwe{|CoqXE zRZp(p+fPcU!m)E8X=*TkZ8jBd1kF`nU$43spwqJ->a`VHVa+>sf%`d?W5SL>#tMU$9Ab zf^t|X&_R>M)hnuChHGJ}#cjkNPAP;TOo>d3zR!HkCXgU~9w;DZ1 zb(5|uK0WV`=zzHvwC^w1Jyoy6k{NDrT{_>tUpM`|4*GfC8PA^yu6hQ+iV}+UA0FIR zRVzJO&+eg`%^z4&_3)md(!BZL?X=O=TmzcD=kv4MGvkIa(BL_&k1l&RucQ4FcxZq8 z?{*8!Iy*)f>`}*NR$ff`Su4sqbpzA+VddmpaSnYj%4{^xnSrFrG6$-n6TrbJx{=B=pnY^28SX(MtfZlrhWi2=hqC5tbH>T_B3+F119i1N^ z=bfI4x2U7Em^2k(ec{8w#hyH&baUtn8wAJ+{(?}%CnWsD_l$R4Y5Jb_p6MuHk9^fO zq4iI52HBP9e?)0txI}Mhpy}C_jA-JqDM@egXBE372X)39XFtVv#WICOMRj8EEfW>E@`%d<0bg8R z=Ks3NIYl8$6*V@@oeF6cO!gph-no1JI4;%6{bO3#mo(sOLpA#&KSyWQ;#Aird}wx7 zFWAWym-@}@JScA1uFRNQ+pR)5^*x)BvGLp=S?`xanyg>=N10$S&GOXY85gNgqp!E7 z-;hb}N8RGw#s+6tmy}8jl zuF}5^Y9oG*wspUjTkG2^THDRW&TO*^&zA~b5AlK~gl9)lEO@Yo{9Ye+L8;u3^~$oc z{Dww90nK|hQm$nIg=d-Oa<2A!5R|f7Q@AMnbxISK408SIUzeC~MO$)s!^C#^th`@c zWF;**_btBzdzZ(otSN!!2m0nGPty)v%wEoHvLKPp{9&e){_)nHi-Z9>s} z84sJx!lBf1GgWqfiaEsRi7wbJA{IU>?*{EJSD9;Y^jL_b*{a#PPubBNbPye~F6zOz zZD-&&kPY;S&P*?Q*54b8i%TTh--*ADC1Tl<5*HJ@YDalz0%2iTIS3Ad)mS_ibpFME zJ9|^q`7{p$&*@$H`KtKz)fv-(zdwb}?_a-vth7q`Qw7`NUVlb$-iwS$fxOH@pyD;y ze{c0OWHUTgziS3*JSMc{aO@&Xzy7TX*`)<=Gd4GZcFUw;jjj3R11v1K1aV2P&LW&d z#Z@cGVt?BRGfa7SVYgDlux!{FZLs3f=P}SLyY%&SCijl)k?`sVQ+bHyJ=0S4u*9U$ z7H|;m2DJ&jfWVg4VQ4>p0q!mgI-Z1KSxpw^sW?+07v-@k0l2QB1+2hgcAY0>R(<}& z?V$6h?utVX26~x?ZB{J+K0$Y@UT-04Q=mb=bmqr7{epAdTi5{XQu^f^>B~5bwDW2n zru6N#HK}nXutmdd8bj?z}7mCDwTB96(-= z*4xs5!?vi|YTtCmt{1{Oq3iJXrdnPNETAT!&Y`O78;EB?tuhVYqVsvy4Xm-_DHXEs zN34MlONSkFK7MQ1*LbRGDOrdA8etGL9mE{!|GFRYOxl_G8^#No>i7tS)mwDjr<2(* zbwd|nXKpY0-(JsYsXmN9LqS=uFlEsG{%hUu$=Z-hNS4<@-2*fl8#=xI{G~G|bgvzB zhxb}k_^NsTcykU*dMsLZ=PTbiczE~;TrCjFt$KoXJYQQtccl}x$QeJniV%0Wm?B<` z*8dKeI@gHmP+FhaxL$mngq&qhkvY|~1@ed_^H6yY-Kt@&`8k-XyhO<(ep0kH!N2>V z^u!&Mt2RI>QlEF~()h&ksvty#eUb-yb~{A_U1??(6{6<4t@oEo&}31Fs3GGowQWIz zU{Zv6*uogw$Nmy8Ethp62GO|uNP@i|M`O6!$^p_7bsBabLWR?(0;C&frfDrQlM}7g zIO}iPwZ2;Hj{QPqx(M%&tIt3h3bm1n_`&m#k<5aW2(;g`l8_Of&_%kprlUX#iPyfL zQl?#O^*h)9j1d>2W+KgpDJ5+d)csiyd*I*%TZw(B+p(dsaUZ@3^&occ{~@Zs&VHiV z<$R^>Gq+jCC=HKc!lP&P=~Z_Z9;$c;YXGh}|INCMJv+??KRKHX#{0OYOaBwg2g^hI z#{C7l$nTNWRPIjw;4g0+gsBgW{zdaDDWl+6j#gGw)@&vu)?4FM|K-#2?2i(gF6l1a zulH!`+Cb?UC82tqyl6Lf6I&3t>h;3h=<6@S_1xx58t@MqrBh3fhv8C2{*dy!+)1E- z_?t^(26W*^Pf_o4T8{mZ{dO}*86^^Dib7xWP1ZO49{Y7e3S1?VI*S`I;@DN@!5Pf& z;RD3{QNGj!KbL2da(_!KA=A)vuPCodMBrIhZ4h}u9!(ojZV8ZD4Z<`JG*PT4@%+>5 zWjF$3QZd>3e3UX5yvl?wCe*PlWfDHV`Du}xD3Hhju)a7ap2$ZbLTUp*v~Z{I$TmcM zi+hhSdqz0OzV{kO30R;wC+QC-1z4qPI=>JjwQGo`+|BqLppc`nhP7!oNR@5i9+hk) z-xUmV4)@#-<$D(s?I8PDm>OcgSl|TfT$c_xAt;QiV~47dTXRG0O0rMH4xDE!9O}aT z*ocNfW1VSUe>Nl2zd1=Jy}A9@@wZ>!FgxrO(Z3YvxPAoGg*DU2?%Pj+z+$OGN{~_* zn|!I)(9;C0$&5=6Ha~}m?<0|+3X^Q@m&XkgC_I!tlXp{G|91-Li% z+N3fY=zhyxJ_!ExKQY2R3_?Xm(p~n!jbp!IC=&jvojgbFgX^G_n01vsg4<=_Qx!1g zH9}gMgP~_$Tc9u*1MBssySLJ8^Ugk~qOk+FyX&f&FnR4~-@t;SK+5IRQ@}jo+~@|s zKiU9bn!`(s#}343CGohmFY#tX_ytKq@ir37aHW9{(xg0pAXl@DB|eUTU1s%fdII zt|bMaMu!h|Ti4`ClZG~Hl=7n`F6%_au08;2yfhN;xiG=5{Z>EPVY_HlEUsW6>@_$- zGZ{ZhUh=&R^2aO|P4EmV5jg^6(vJ+qj3S;M8?7>#z;h-;E&i8H#-?L5n)>uU&PQwW~}A)+dlws zk7dYdXRv&lYny-Z7UQE%Zr6lz_`iv&Ny}4W0~00wS#p^5T>=OoG85%BquO2sbyf5sn{73YZPnR}P?F_i?2hR+NQ zIst^JK%Ex5v_tt3JSQ7&>%V+!Y=7tG%d!CRs0y8*c0CP52nfhc^jKLH=OpPPys-O- zU;+3{tn!JcY9Q-*<8~x2<#@oM$RHHF2PQKVV+Il~8fXphHqnRXd?@7zs7M}c&X+uz zw=9iGd$YYHSCt0Z@$uwi)i!7^dLle7P69mhqBB98yMp_ZEc!7wXP$Msi-ZrQ0ZO0M zT3$_@r&6&Nvf)vii1;2JHL{I-;t{Xhd=N*xa{=f+hFikW_tuY4gZ6(IT_2$XeG1?a z7BiS)16z#B3{2hsNY8%y#=_Rqs-?W~KsqK8>41gk{pTlc^KN!4`F(Gwz4}jP?J2jC zC+=Y2)<s@4WFOzw5ayk)JmS*7!kifg!I5iT&&QHSq=jr1uD} zAF`DhNfMGsBYAa?t(41nNkong2tq~YG_w=MRwnNF@LYR{lC5q7#!r5cdxB+@zSO?gWUPZ5(MmtO0KfM|tIOJDJ6nCN z0Pz|h3$Jeqfu~Lu&zbC)9&e+Ed?2U?m%+C*-Jw!6GuAnH_!Rjxth8X_{ z#wYjFY`-;LgGy5?O$Q-*{L6@TlQ_ZWehJDpZR648>N>P zBP(*2Y=vqaNDm;z-o=Qk{Z94?kVi_&--#dB@I~<$7;|(Hw>^2tXG!+uLg5FY=@78a zBOxd{?0)>{N?-7O@K?%SfCyz_??#4@K(z(Q=ns1(o~J*w*^w+aAJXQ(-8T>}Aw-y0 zW?yE_ayZz140QdZRT$gC;2I6Lr01c zL-X4WgoODKYV<3}9`XR@I7l*|ta_0CuqmIAvu+F{M(nKw{+LI%#e6^jqmy}VxpQK5 z;TI*eO%g{Ez9LVEpwnB{lF?aeHfp0#d8`{FIJS{i322l-%awPdL-JQRMj3&_1JTEl z;7Py+R>qIraR$_TGU88~^)%@S8Aiqa%l7z)w*Xpzp)6yP(&K<&cXCKd}`f znZK)mrf%C|2xr8%vot{qWHOl~$p6$}cevf5Y zC^JodeW|jfsPmn-wqsIv!hN8Y^(j##rTrcB{7cKgRnl+ROJE#b`HAh%LYUE{_Ee2G z6puGUyIgG+bVwVyhTp6@3rczG@_rtK@~*oG9-QrwmkC!5>hmBIjU;%wcnLf?u5Nkv z#O+gZUT`EGx>U>9yg$?_038S(6!hnhef6^Nkg++}xupeW<1noo-K^IUiAHnzl|11! z_XY>k79L6S$dg~Ukl#oH?t61H6k&DcIUd|0SzdnM;qeb4KPGE^)jWj%HqcO_ZF*&8 zrB4|KbDWF+j}3QL&#=qMaI15-pn#Jxj#G;GffK0dbamk%zn}Nbw2QMyYt2+0ncJrD z&0}l`FzRw?O-sr?gZ2arybLnGj_6Kejz)b|o3C8@H0e?1VATDxuOej}zATH z?);v?jfnijz)Hkig$x(*_u+`{bsTo|*qDa7QVavRh>a;-%t&?b<5G2cD!XJX%Flv~ zpHNR)u>Rh|%}nsqP7L(EzPvrzknH~i(FL}n^z4Q*#6=D;cnM}!wYRNnk z03D#p10a(e!*Qx8LiFCxGr;)$;19uAd=~5w8?3MO8i4Q`>r!DYbpLF>)g+w9@nOsX z1?qpmbR3&)jJxVlDnu0KMY#+FhK&Tu3>v{!ywLv4Njw{g1cXsKS`=|~MpQcadu3&! z9!IM5n1J872Sk@`KF%%sbMAqY^V`lg&nfF9GwkX*bZr#{UJ~N(_&b+QJ+n2LGa~5@ z-jMru{=B4rI3mZ7^D-UVoKyT_Yh>833DtZwJYr9aPQGeVfb3iA^qhS?niE9i@RcwA z$&b3a^F{23Sp&8VKEN~37Vk>g=R~Yuh$=$7PjMG%#L8cFS`d}87~A};la;`g+@BJ~ zO=6FzZHq6{;Sd8|%DfK~F~x6ZYGBoe#TLjxQ@uhnco(Vjm}7S;A|8v^obllCu%%rj)|SapBcIi`DUQ*GkDIoYx4RLCS4 zG5nr=LY)qlmzQB40Na@Dcp(ITQ7vQ&A-%go#; zO|Qk-FzCTlm$DJ3+MeiTVN(_dWwU}GdCg!Y5W|C92eIZmA*gaz-*Lv7ZlKPsbR9>O z`;1K}ha&76L%$%0 z@+XuJmQhAimTjO#zPnu)bsR=8QD;P!JhANz1?a&0x0FK6>a(yZ0vr1<(4U+Ec=Xm#E8 zv)v-G6LnqNADc!$zY!k_2TAcoK9&j8zC5+43;W*7Tn*Q6;VfFv>-`DdI|1&4UrH%L z{?aC)lkF^94}c5uO<_bV??l42*2w;Fmib!Wa);&p3Ym=AA*@mNQ1>FdiWu zUl2UC`*7Y+J`ZfRzM#5#gC8y(G`4ReuoxqS5+GLc6!$N?YJT4S4z6oW zR(|()!~cRd(yNk5>YN`Uw5YPO(oyKv#2Ju0yN&rm;*9tLpPva1%&XJ2qNs0b-$umc zZR}d-Un#|TaEP9X$9!I}&cUoHi0;iLy-z|6vOQfa+;yZ`qX zuYX^JR{WO3cr+6MG3 z3xCzTNMI0cf-CYGo95$UaR68t7t3X!{>vm>g^y4JUS68q6Sh`l{>$8oJ;V9?9O1;-HU8egJYxeKZE{Kw6^2%=iXtVB!!8w7NduRCw({zVOgn1eCN6`+%( zgOs(Q$6qnN?d3vO5|x!t3cjgg3|H-hOvsIThq7dZTC!2H%uHZkXutZC+8}5}jQ?ep3KZ0rK>-$;I0se3p)#z_neR>%$yho8^DUrxOl5P)R5k=~4)|>_1 z2JH?Nlixt{FziomA?2`9>(q1dn{`y~AmYq&SZ+L9R>>2@sbR@3BTw> zSq{M2IK33MvCQ5H!+7E@`;6EW64nXh_=n#4x0C&9&A;L`(PoQbJaP9e#q&j<%2$nG z6{4%yuXVDt${YNhWiETA7oTpR7Y^zh*S2-iRLv*Oi+KJgOpzL>n~!aEb;lE)eW7Vu zjsgw>6ah%jK|!0@emn?U*V{e4UJ@fu9jpmcW=tAP?qZ=6aDMDrVwC)IXVaf_|F4q z+J20ESyljm_fe$El8IbQ zCrKPo1=~ezfSZz1J63eSL@B>sK1HV0Q55CS$s>dcHEQeg>X zdHCT-YVYKsmX_K;@x3|DhXgae=jUhUH}-h~(N zM#(ktVeXwl9ZH?{E#5|=Wko^AG5Us16H^`^UwNhRP;&X%!lu@4l5fQ;d1dYBo|K??N?M(dCesJ@`{bQ;oeg%isec`n2LFd6} z#^)pHZ9azY_G8j|F!GT8J+}`s3&c=b4|L2+{A@)S&_FV>jLi%VJTA6q96sS?M6=}g zt!w-P%_7{)b39EXqrCm2Qu@lzN@ZjB20BoR!4k;+{1K`wiBfHvsS2}oMC=@yD>#D5 zvBEfJB=ul5EJ$mYu0JYarkbHE%6uN*OJP)YVY_QBa1@1(`VrnVF@8ao+UHWgVmt&b z0Ej4Kmf&rXK4oyUMhN%8J?(rkC3^AS=gAh~Bbeb0?R;X+h&Odvw-%mxjGT2YL)=sj zjDcc3PJw2^-_th6T2dS$uD)kt(G=19-Gndp1bIW#A0IzYKnbtsh*@R z&clSPmHPe}kh~cCOJE+`9NWw{MRysqv!laNSopI}yNDbu1F8VR;o5qWN8XXO2>;2+ z`Slw8-+zBgcrWvm6Y1cU*lL*qHFKqT`;ia7i*qdww}Xf=ao;Ts)YqpKNOCT}Eq&ZX zZfzI2ei6Sgv97_|3;Y|JR{PR+LYxB)$j#uZuj6aU(NfGWk8{@VZ3N!@K|_x>*}hbfR9}Jb zGLO#9>Bsmd8~Kh|vjmRWE z^l&}18>F2azLSu~5TT)arIYDLbaE$;H8&2IRqS8k**-@yPv9JBC4D1w;^4fpXxXKf zH8IY|K%-@CJ+IF%PTYmu+JlF8ces$ubjP!W4M;J4(@2yifN8Eg$KffCi-+bs`7Jp1 zss**5&Isg;?gi!nztilqy^&X$_TdGWbG;w>4#W7NfW^erit5xCrd&giq z23Hrh5`qjlk4$?tLI(BRoWMK5tK)nAkosKi0JC&e!))*%*CF4Ph{Q?YDd==NS8`|f zqjUaQLoI-%lNoz#&6hF$afy9 zx&!IL%4#U(FIhAx4cMkxtW-5cE1fnh*l<&akE_G-#|`AB;oqU%%`#f(6ugW{MOc*S z6ax;lo576spQAtQa_Yg<)?lfI8M@MpN1!G~G3kicYi~{xk=*i~`}5PMi6=X`{B81^ z&Yds*Q6SxXGq-uz+LPR*UmGY|N)NV6qG$$D^-qs|f+|0f0W5XH;>>Tk6Z_93pcWPf zzb!`Ls{<>jsWsKreQ*1l@N$asYD^C7-|%L|Ec#k$9|iVL$a4XEpI-Yt4cFvlb9F&{6M$=T{Q1y==b|Qn$66K+px+>|R6;p0vUN&M(O=oSIJPsoQbI zyJ!q5-VipIeoMg6}iX>-xs|A0AS>3cOF+4@kjMzAH~A^Qz09N7AuCRG^cl$0e0m1{YB zxa(gL;ywFsfDac89mOLg=j)w`{vmqQ)qe>P<+`e&nNjie#$hlQdqRPXHw+&djNN87`l+iA#Oo!Ul|B~Q~Vwd}e_ zK1(}KCtre`2OHXc@jhVp-c^HixH!4JG8x2_)psHy814ch352Lr+Z=xNicncK2Fzrf zQwOyEIoag3Ax&Qp=|jU8aq~y#F2+}*SW~RcdZ8!(W$mXBML&J_P8!vZlpj@mVFQ)b zneo)!pY_GAOC8&Z6YaChcNEwgN^mmDhCI7k1-VF({j;^vS$jxuHbgn&2XlUb{bFm% zk{1tgRmqq5jrunHX`77iwoSF()H20@ydFx`)!NQo{d8^jxmf(R`>mUZQKRz69D`K!NsX@^F@E~)Uet)m zLXwn7?3FV0l>Uqp>qt`YswUw&$$D_HG+3Sjm8dHkfVvriF+mL$a3AfJ>MH6Y+DzZJ z2TzO|4^#UkmJWZq0~fAHA?+K zv)vXywmzUu&}?bjYQh;D8MaGsNN>oJT~i;H3nuZG6(2{;VPmK0|6L}3i+v(KC~^-$`w!2H~7^Z z20*?bw-Wxq`AL*Ei=_Lv>Uey!$2Mw}gGs0NP?o&4{;;26rO<(-m-kJ{z)@q7X5&hC zch~?Lcme>aE8njEgqwx?`bzr}HsC0R|4DlL;c}q%aU<}&-F_3HB7be-y_oM`5&bHJ zpeVFIaetLLjM$HDDw zO?yCnFRCgS^6>8;X{s`|uZFa!WI%n&~=yWENDjHn?NMMtC@v@z@ zd;}p$)CBs$);B{kpPz5Z(vXvD=)+k$my02pnNh++)TfJ2Ag0g>ksf~6;C81?lxVLq z8FWf7>uBmNl$-v_qnptmfE7R;ke>~;5$>1x9ztp>iaD}IK1xL`D#5aEh%4^PnuTy_ zsdaVD&}UHJ!HNmzsMle|ria(4DA{*%T#mktJHZA78sRE`pBkcj`gy%yF!mN316z~q zn!C|YZ450)rU{SilB(A$Tug0wLj(5$oSva;zOv?QB=h#te+v&BQ?&^Ua_^||7#f_m zFe)7N;9Lwd2t`dW%1|@gmdHTE#I)iUWDDG$j{1H#y@NQb@fdc8nTS4_bH~l4O3jEJ zcWVgdq;$pDi1i*O4f@l`ZDw5V@63-P7DZxl3%EGM{pf>ACTI8N=S~h3X+EO&`S?5jrE3Z!d}$G>bu( zuMPbal4QD*;nSnG**$XFKC~!Pt-XsdqSSFT`Q{Hv5MpSuZC;n#p|!fg=QYvWQ-BY5(v9iObG84&hso;X+PTN&JQ}fc-5kc#Z zuXap#BX;;vk~&{dBM zjzSiaF9h;$0fsHs+D4z&&(9}qBsEm132BQv(4M0O8p50{sT|cLltXJL^!YklTL*|> z%g9n$0I{rHlF)7Q-a@ODD2)Q6w8MZ#ac{D9f(7;SU))oSGen3BiDflwJ#s}U9=@OP zpUKCu$fWhxCTKMixgiq3p7~hu>RB6%Le+aus1gEfxIHdh=|=yZ0fXb%?4JBIXWFo_bq}bfe?S*aH&z*-@z|*DmleY4ib%3jh`*4-W#R zm+-KG8+2Z^=q(h5jb^gHCuW7_UMmJn*ivMUJg9+fs%c~)vE5E7?b7m8nq(bYU%W** zg1-a;+&5x{J6;?us*iC{AKg*0@Y537I7H4&p4%^Hx@x)Y6wxIanhs_ zKrF(=8m3A&W*;0pcH|X{Fk=}iej(RsO&>l&pJc`BywRujLauUX1T;Uw?BL;%-5~4Q zH2=C@2XY_0-JHO;TtM89e$}P%u&5!;zA)Hz^Su^F1aY zqoX8L%Pc;$t&llDq{FcvoXKr|mNIy}7w?n-`1U1PiYiKvVVV|8Hci`L*DTvYf9T6x zxA829a!GOH-6bvWcE&yq)S#IhH@37>`yM`owaE@+FSW0IjYtQ~q#BewCHkR;ys6cK z5JNk?A3Y1u>JB>XY2{v_m+*j=Igj$!oA?cjvhD3LS|~aKalk*8zD&F&$4o1Q=~z5U zWxX!H=hnT2ER)@M!vT(GjIrrg^(mO5xhlN`{9va}{W$y{C%F=qVPKZ22-|JlM;AVP z>g=lhA_Y-|*?Ou=kv=|i^X>PRN*f#-^ z?e72tezED?7OLX-5|8EbZh$|rUC8(TF5Ap#yM|~>azC3()AGWQv)8d6;ZS#c_RCbiPhe6HU)-LxaFb(38$ zDEwuoqpsA8IiRs%`_@B%Z?+cv@IAiU9$zA7JFLz1>^CvqYoMh6ABkMqEv;!dnz?sT z`qwUUkG%dHHui~Zs53D#u5Cp_ zW5WKGCG2WQCJF!(Bp~er*Dz>wkuXL)8t^7Ye`w`T6N-E%y%0OPum>`+$Y8E%iQod8 z8v$PsPRM8i$XuTTp9MA)SH_YF@1txOk^IAI`rk^B6=TdvZoSwQMh=ir0%Li&0)0)v z)$>35Amb0B=4%uZ4I<;e5t)pHP|_|u$YkE|VUv=QC@?40;LDSO)zXC{{MLVS)fe0) zX(wEfi3~;E{#e#(KxDwYU~LNZnn6Qt7$%4=yAUM%-Cu(v(M^Er0xe&WU)@ywQcIkK zV6pf-fyvzzoH3&;F{l>F!_{rS3wOmR4EcOQ+o3a*oGzupM>+7Ve$!t%*^R0z^>&7OZe$f>bVZ;!A}#~?n3p(FbSI|Z zUo66bd;m&I63bEiA8gk>YkRpDo%}^Zi?OB?rcEXpqCwJOLck=?dJ7&?*cq;#$h~6Z>{|17@Hg!o?+D3s0qZTTk zA;O0lO^1O+BYh-psuoMrA>jzlB*mUVEmS$?>bPmqQ2B$Xa4(YeUgS4NLb0zz*Z8QY zZQdnM(%8w?J!Rfd(hPj}U{t6un=(9@+h(T>HsE81Z5nX&C_L0D$YR?oh;A*~GD%BS zV?IJjHH~$VGBKVKowlb_i=W|`W|x>%Jvs9Z;Vtcbx5XGc92dLE;_a^c-O^^ZbOB%sl?m&7&6td!zOAa2*C82`jR;$k#n{QycgKq#QE~- zQtiISbDSo`n$Wwub8)~_Ygw@WkmchaN+esx2pIMK_uoigz zbnDEcz;Pf*cAcs$5W1h8ZPrMY7Puu&uJdw|%H3gao55x+;eDDS6Xy}Ny|$KNVHBqA z_uld=nJIFJ;q6N|;Y@FDx~ms|-yKh_4e8-bgi3pna-LK{#ARAK<}`g9+7($m^2~Vn z+vZxfesHMVryCFFqa^M)d9tvkh9R|22#km#J%!+}M&ANQE|j+1aYZAdqCeog58b6` zC79ne+F`#{d@N2*sTrNHXl^;#4LT8^!dR-VtsTAv6yq|`fHQr}`f~mfe0Da(jC*!y z4QJ$u^q_rAU}0gxw)b}pw{J@Dyqa_!9~kDl;9!4fy~2m&ZFfgnH&9$q%rpN&^XH?u z7ws38VGA_?$X-xSaB!Lnsl?VM(LQAITOvzoXJL+R^2=2px9Q5PvX=wBR(e&Q&Z2#Z; ze`4=YwRfpeYS)Ziqh?#RYHzJw)C!^$wUwf_qPCc=z4zXG6SKq~LGsJ%{rUd><{!74 z=i{7no%?m2H%4ZhF$aAA>PIB;B!I(@ z-I+VG`eo)z)#R2z{7JLMS~An$e-wUZ8Z0QSPRUCO6 z7@>`5aBeV7|H4w5xHg8|y41!Oz~I$oQdNuyIZWYaQH8Hz-UQnSRcFi+q{wz8AMJBJ znJ>5+h57hFi(zYMOv|xuwCTU`A{(Rd?FO4rwJIZdXM@Jqoz@%|9(~e8nnGRZcGrF2 zgWrwv7098!^j)X41Y_179R&rtgZ6P|4ST%NAdR5N>N7tR`nZkzhan(vz=xY1#kd{@qk0#R0aYlB6k3$WFM`lj0y+@wwI$eT$V`){>Jk+|{EUB_w zl41~mY$4{E7R_gk{wbjA`enk`4xd{Iyd}%S*4wM9KAtq;$z#)+_!^sYjCd6M_IPX3 zl78NUaVXH~uzb5-`@bc`|AzMho=#R^2(E}~8a{yxOd*q+%QjGlRTMGL^!d61Z#IW~ z&84I)qc_1V;y3!l?@G!LpDmeL7Rj{Axpvbl{sd7e5+&hpNKHtN>;lP&Vs6`90&-6` zUdAa|c8FNFt$E)Om%6~3patJ&>_TyzPRXv6*(@b-Ak^>8t>c8X|5mwwi*D32Ym}5= zkQ!25NOG&JADodms6YYP|BYW`fKweehhb4Bl{fwzD_hm8y&2 z0L&V|%HGZ4s?oj`dODM`RdzNw8Zam@8bWF(Hjd}S8b?<~FAPZ7Wj{@`ws_*R7#lm^ z-s=qv3o~o^N4ws?(Qvp?^>Mm}@IxFHH$a|gZR3a(#tr7Zjjbnv#0|aeV!G_4STzn; zeb*=dgdJOiAnOegxav(-Tq(GL3CLkYWI;Q6n$f!wn;nwSHrC9-<{9eqWip(^7zR!f z)@g8>c15h`Y*NOqcc2tb_-pN_ud?ba8!FF8$Aa6!RRwGps&Fe^I3vWFt`mE=%6$3d z9}Om*;pB(lxA>8(KO7p?4HECmeKRK!Bs(h_3sJ>t%)VV`v#%9U(9k$bkkVLr!PGqU zI;@OKX+x|R~p3(j*+entI(_oiT7qP5N6F>&!UE-<(-b^VjvJYw;ov}>>N9Efh?X^SXvn2->Xa6=`CP|Bav=BA z*!a=)?Wr|x_Qu0nl02%RR~n77MYE~dqEOD zSM}*J+6an9Fo#~9V}yd2I((==+wjAkG=?g`{}2#5~u~aJNxHQ z2S~V3PE!JQC`tk+1drfhUE!!@lgq8HcPBFQY)2X~{=tF521tz7ovHnj)98)h zdW-y_8R;j}-jZFLgavvF!;)nAu5*H3)-zcG3z9y)0`^uGK>}84Fp2s?d<;#d^mgfx zcMtE2?!RQtO2(DVdf9!#b8i3@B~Rx)V}+{$n4FBD2#E}0eJi3RqQ|`fGGRWo8L%B5 zyb36fkVWoVT`ce-ClLH%KH}{G$-2^J*%yNl2fE6gZy@Bi6mm>F1ddKcD(n%lSI6}y>IdSc6SopLANi* z>n=o_Q*`M6^rG)+DYzrNrL-ZVreyUAi`Si)*sMst5_1~fNhF#9B$_d3t9tI2Z0ls;JKDEq9#TfZxrzR7tA+49bE)?eUk(i++p)>A1KIgASdv7aBbF#Gr*Q5c}6NOP4Iw9YRet@6oHj z(M7x$x@!y=u^jqiWBw)Q8}yIDco;@hM|gK_$d+NAkRz^Ie@u~=HWTX_)haI#`rqM`C7#C`kLg0!Zn&ME z`7B{$I__xN>BC2=j8qU#R=*MxANej_Toy>1$FBYhAAHsg!b;)b@DzQ68s{2kvDvUc ze5#oJXO*}p0c-72*8C@7wyu0cl@J?A`lZ)}v{0j`! z38&dKo3=tH5+jjA=N9W#4$s1M{+60_YX~rrJhIEM@ zC`FcPW;Z2oDTz+Q-@&;GlLebR4|2L$A3XSz5mw;?$Mu!uP2V)>5uI~`F7uec^0qHT zyuhN!B_nJbx)AG=X(cmma|I57tzh(NGekeY$*`~e7yUm88Xe1@qU`}Ej$dVXK=oOJ zs^1(xC~X^VnCkm>GS#ORs)aZfh0HR{P3$g)5qT;-oDK5|hT7xYP?EE_yW>hMiVCg2 z3pT(}A$>A#mEFScD98Z-sBmeWl&z{7PslpcbVjYGCFeRPoqfW~625xOC=~y-_QtcZ zrJ4}sutZBP`B;#{r!PESq=ClBwAjXIDcpXw#cSvzb6!6K9XzZ)n=f7HCV$KTz|dC2 zr*pv?1TOvHV^Gs;gYWZ~w*5t>=LG3&Qc963^+DC;rm|6Gp<6G5O7f^gOkO!0KpRR{ zy1Lg5u-S0pW*xT!NMQ7z1s27F5dx!&0VLnMVAqhOu z0L(94>TZKg(YfY6EFZJ;_u8&fz6=*5br1@EgA*|HSuCMzpMQw_xPw2%`Yz4neYEI>SGrLLX4G0%pKqr#8;dxEe6o5bB`GWB zc-zQw6l3B-E{scgdw;zCfGfBk2Ri3UshT@aIq~bQ|2JO7r}OVw%!Hs#$n|;af<4S0 zI{F?@jPW?Tys3HVl8K&o6}d^Xf&Rw{4>hQ3L8I<=oN>nNqm@o4s`f+hLBADUm(d9< z8;9O<$o`U$9+}y=FMVecVfnJrakoZ{c_Yno#P;OZEz!I70wRG9!Rx2?Ya%^t;=fYI-x7e{ZQ#DG#J@ONildDPq=oL`_r5#5 zNNb7=@mvQ9IPk^1!y=D4VbICuuNDd}NUE~$ovpFQ>&2ISs1dQpIw6U)R_uZr8Jofz zw|ic}Ni%niQ8zad)4Tl_cYuPdl_6m8G7;}SeNl%KQ~h{{aZV{>K@TUK;Fohm`jL#vT#mAIUNq5 z8q@%g{4uzwuzEh2^7gugQoEB_>B7m=y*sEV^ zA554t9a%yU%cw{LtP)-2l9AGSSC0vr45e1lSl40uBX(TVcFJ;I*?0q)xp)a*yH30e z)9^dKsU$8a)rRrPSikvUBr?xg0-xaVA^u|jYKy{bC=Aee+E@j=FS}E^BZmivW7=fd z=?~Nos&qH3uLDX@8d3}QF4PYozkj%owWrYPVVCbQXT68?Hi;N8CgLZ=ldc$Pt54?d zy|H8>NRky+>FNy#Zd{E@{0JAumkGfz_}{gk?VYzC&tUi?>@I~LlTh)c?0uJE49v9Arha1%)mcBc55#sgHCDRsS6H1~X(2|)3uhJ%g%*SS5=hb#(=f&UucQc&(iQJfkn zfE@f5L)(66LtVoBL)Y6c3w6wW_zF0-2HnZ-CGsJn6^hQK}0*JBF72>w}CK7{vGFicz9qPzT;skS1Ep*Tl~N3A%|+_@L1 zNxfxM1?MHZlWL&`9*^}j);q+}ktC$w!9#G5nx;xv})MQ-T}rTrV@4Y z7zl#<$0>C*ml=u*9~C?$ezDG@l05~f%_4faDQT4xqAMN`F)=r*xM4pcgdgn0eMi_) z9m^wh&5={R?#5>%P#+ymKW}>61>S<$5-`wW6t3s(i<{(`){Yrorgm2t#CsleM;J9EtH-Pha zpdyRLihAkg3{sx@HMI?)Z4Oxx&E&^SZSB~Y!AR(%h(z#+5+t6?S2o~}UN6{I_PMF; z>SpU7y0tol6X2D@$NrZAxF2CucORLp=ZDd#7|b|1gk~{y z`L1rD>+ilC=ay$#LK%7nkyE_=^bMNs-JJc~3l@lqOb!EPr?rbtjUO^8LDe|nKr!7h zKCuvqyiXaX)P_TTBoYD-8`$jXl}q}d)!#&X>v_1NMo!>GH7sbT-wXhmD#R@gp{8{JkKV^aco$A?^Q>RY7S&FVC* zt~g8dD<(EG_wPBU|CD^>()UN|p1yp&(Mx-uwy%ZnjziAW8Z<`WIbPmSHjQ%v2A$C5 z9|7^4`BO^>r!gz2;-^#pr%B(6(vUBz+VH0e77?er3_o4{N%nr^T8%!E{cL+Z_>Z3= zI~lW>O~>ug()Gffk&H5d+8^)EPbyB^lfw){OzCVA@^bfGav5y;*?#5RZ;be83V34t zn$`FmgnbCf_dbIjyj#zU^<3!~E$jJ6l2doXA6nZyi$`6n=7y3nPF|mv-i=GggLPTP zrXd}wP!A(|jiWCh^61}i_)}@dV=O7bq2sik-cYW>LO@#x{%QoNoR6w8R!NG13oS!) z$ko-lE%%V#f;Bg7u0cg-#Fl7;zdArtpxEB}#Hn`oYJecTgFuNY{jw;$jyB5baW%f! z;4kn-Lid~!if#t`mbHbxv^vxzIkPLL`^EOiWthRt`%#rLKk9=pg_AGef@(4DirZXNpuA99VjZ<(IPE%JRes3>W3UCt7s@k9IM)%X^=hLj#|-23a zwWiIN8tL`%BT|;33Xl35`_;vrj&0RzwI*S@EQI7|t4%2)046WL;=DnELE4mnE0s|2 zI`iNTX?f>IoYK|Wf6sZ{%cHbMKP7+toCgA2{5z8I0u-&c6tM-n?fTa-mXh(7}5+qoM z_h;&|EwW7qQT*;<&fbXGZX828_a|0EG^fxtZ{~8>gm|Q*P#R!MI(3YT_&8Vgm+C$; zF8)d5PwNtt0rP1RhP*HQK#nr)rCom#gjS9fx#~uo^!8!HNjvfY<88)$<$Pg$k4#kRNhp@Z_~tRs~)@lrC(85J=kTTpE#1sGHI-UG;H zli+noo67GUin}&$ra3(ectCo6<{qD+mRMVoPSSII>83bdWs&UhFJP}RWD2Wd1#=@g z22dIH#h+;<1mANWaw6L~NJlrPzDG)0+UKADZp-fl*EFab5|=Ng{#V){eXsNAF<^`y zd!iO2T0I|0cn|o`{hRh=<*`~yusO&6@EsUW{(WzA@}Hk$sqyyBO@CdgH@jjNs)x^* zLGzOOt1`#0LlP=!f)1OE5hdA@3Ld)@6+rALb9tZjT3KWi60 z)e`|IJEMTERtN9Hd4sXxe($&fir2^gd(ixn%+ z{F1t0*c#YGK9>#;P`>EKc3@*p9@UV3DN8Fj#^!Bs)LY7SQFvaNKfLI_Er0vS%Q zRf5N_x zfxSP!JwYU6gLeh@f|?(&o$ zdwUtAsGE~{Y*yfbDf;7l+JQeY%VG_gTGz=-7Jrq^kQsi=OW>=taEEh@Sy3D5tNruv z^TM#`XuFB?@l&G<^I#W3uf*TzMNmCv;Z5Va0a(v#{%?$yvb(<%U|xL!YkdrJp9tEJ zJXq$+;%|ByC1s1ltduNx%Fo-wU8pPhC^g%ewXAo5X8`wVRsuIZ?gwkd9Iv|ZxKCsS ztelty2yXf`_ZG$Ygfw@u(i}en#|^!%mVuvy0AyATlBR1-y&m)QnOPFu=n)cn`d2mB z9xy@BF`-G^7mn%Q>mRd(Mt0dtLyncr#;!XPuEjUJA$=Q^{O2wmQY!j=q~~;s4GSmebYE_Ja43O5$Js`vFXzeI9}V1?!TxT_-IF){Y{UOIZL8f(EEj;RRrh!p zq>2(`6z>;afLqV!hecCC#}fzUE6Vt^A6Dbt?Zsgxr>2TYO)bpH1@E2SrtWevv#gdC zvQlQHWWeZr5ahH+AW+ZRE-VXMV^w@FlA;QKB2Os;QU? zHkkthp{&#&T+Y8Q$=udXzvelqSCSNj8W`YITC#>NW_sMuSmMg&kR_f;2<7*YEhn(*}eU}?>9-~cF#s*p-|O#wiDBb*KNKi!*g(#TQa~vj z6UsnJf=AoNH=jdpF)MIwMdj@*TL~JvS=p|J7uAGpVg^Y!eG%xUVQ|_(jrBen!g}`k zQ=0GTmhpyvJ(+x%ph7wbhfyi>O*mOdxjmJ{jssGCk=*R;Id=>yBTjo!uO;LeUF za_qFR2Hb6^GllN3P(?n~48?qluA+U3lz%XT_1^Vhq-G<=s^$P{*Dd>~HiORS*sxBX zGrDLay0nCQKUGHSbalsGVa9lN5|Tj$a4Lo}c~A~=y2CsVqI3-VXLyyxNZ6-5#Lc@0 z@#fsjjceCxRE@S;07i^cREPil%B_cXclO;+djTlI1bKzVw7b&!pKu8DveHJMb zbWhuU?m3^Pdg!#_7L`rCD%|QxTL?uTjz!?5vG!T}>Zk$Ce3uYPTGLULm74!{|TlZBE;YBLT{}b$WFOx1c_F3h1gjmd>2U1`E~R| zNBdC!MSr}HEEfC^9MxFkdZMHVjQ74;Mtev|UGcP0|_|YG0CTnha#MY#~R@vkIc1;e~(6^$ov$Gm_E!|T+iw#i! z=|^MB6>t@4Y;N|qr8=E79NS)d4~c2$t@}Jj22Q5md~O~fSB=QY6Dd$`?$N`BvJ_Bs zr)~(_rWxZYBLgf9eI;oxgaJEqBQN|HRh^>?i5*htvL1m}BA;&el}&bWN#pdEMH-~+ zXTNpV79E(9qDg8cL z?+MTtcvK(#BctnR9!OwooqT{t4<6_e@;+tQ=N@{qLLjER9Wl7?u<#B4@y(}z4=b$_ zM|TC^7e7l`puStiG#AI-9o^5Y+W-v*pU|(56>oU-Jt#qzbFSi}H|hP0lDowLdDALc$lZu+ zjjNNBc%;vdV3|p`zHe$TM~mXB=ynN%KM&dcIIybM&V2QESz1CcgJouE;swArB2l&< z_;!220+ACse7&DLqnq%x<5f7ovkOAaJXnguCNZvkLV9VH#j0JTFl>^Qp_p;=ao~0{ zbvwx>?ZArmUH-kur2BVUxp_`K$y}tFc{NEgZP%$G#urQ_# zbyY-c^wKLNYXISc_++8cY@y#9h7RLNG-XMmbk0>pBp=72T(e2Q{zT?@%;N_xp7UjG zpY30l1IW0@{vkBq8?-`~X()$8<}0)>rDFQ|BkmpNFDND0?658JIlV1LYJ9~q4w6?P zF)7@Wvw0$ITK%7TF;>+fIUdvfRcj&$ZvDCO_}V=GP%e3jRt@0)2eZew5avk^sfb-6?ku#c(;vZvNek2mUok;0_J*yzm>3yPf~UGL=YF40arnrr z;SvN~^Ru`gp#uKd|0=yZ7IH)WTM+9DI`)+Mmqf8uXU2IuVy|X){(?sH9H)sZaRA&& z@!uN%d5dE9KEr<_5wfEY5Za4~-MKzk-L!v!<{m2s6S%^E_@7j?zd1e?bLmi-ZN5q1ZeyEiQQhsb zGu^5lcEEW}FYTj~5~M9%=o73VI{({V+KcoCQSTRaj4fF?pZFCod12FP122SdrbX$i zx+FY*c+;q_I>TmCT;eZ8d+eh#ABk#%n5mB6Xs2CYKqo*&ud=-EE&dC2*2%2*NJOiMyTT}dJsF53ISEraN22bfW897l1N=ZaBDv)Rqy*ra5@7!;`kdZy;c8aLGc)L+XaSiDA<0s}qKN8eajT>=#u^6$ z>33Q!O*#BeayVB*+&rq-#*^L2-23x@^X6UK&})_(gJ}fUp`dJHqZ?x&bGX{wh4*_K{gO1v z2U2DFXsRMpg7UAYnn%GVZidh96=aj_@ex7y$u${gFV&J8e4K_5;Lz%EpTprD@Lr=g zE?$_O)ixNm$eKI-SK6bSSRMzkRIXI6X|pRqrgtra67$z7_ZJ1a zJf9aAC>bg|WN|k=@L^75#G69Qy(%-p$ycpY9klZ}V|&_+p!dGpYiF6o6dyzS7~NYA zl8AMMi<^rBs~D~~$AdPqV(m*Hzq5hQ{bQK8cEPPBlaIm>A5eqc>Gk60AHyW45q=yE zMOjZ9E^gK#qDW|*sJ&nhtk*r#`_GC^CFbE$&;P%ji`{R4V#w-e(Ku$HCl%{^po7ep z$I*D}WjP-8u?eklFrM}>c6kTiidMY!DC@e;*=XqAjigNPdPOmQh_3vJn?sEqGtuaQ z5$WUXmbWVP*OA`h$1P;hF4MgH=|fC0y;P~ywY8eqy;CG1?zgSmaj~&jlk*+W@ABcl zo^>t0!Z}_5@avRZX>ul(XacYV>20<;$O?fG9qpnIy#4*$8zLs!7B;rZqrsmV%Kz|{ zei}Srgj3zf>d89%>m|AG9Qrnxu4sJ<=6glUEEo&WTp(z+E9IS!I~8%4>vRYKhTA8^ zLGi5Wxr-v>r)+ulahG4HFr8a==Q<56?S41IzYqhEW5xGZoKrazTUg_|5E_zL>kU#f zOS1R+Qy&bj``~)2Fix|!3E4f^I2hHKco@b>L#xmKb9EJl7@mS?P zhHDCUe{dYH`1lvr@j~TgeN4m{5pxgV_aF1%$4ADv8B}hOhs>Nf!q9#pLzBM?Us1!f z`E+qZV5p=KiNrItXYK5V+MMln0Rp28YszxdmE}v%q4{1!pXTI$LZh_W&%D<1*bnG| zRF~I{OnR%FA5;EJs5X-#1%&Z$VZe{Cq)jVAH3VU~^~abS@#}?uiDr?4r#L^q4GIfi z=2Fsmtz~D!&Q{(vMuHt%el%|)U)?rfWyq!#txKKZ6l`4Er%Je;b}Mk}uF^a+f0l9< zNX|;mCjX>`7~$OaiMee~QEu<$ch^rMc=KCVb3B>^b(A3!`j_v{YrIyZ#q6U0QyxP$!nJKE>RCLVoe(vq%EzZis2`cG{$Z5?xdRiKFMd!_R20Pw!&= z&sx27F=$_8N(-Tt(Yh?j$g>gOd_PzsPf4B-+VU&H`cqh!uw*MvI1JaL*G-UOJYpuH|Meeb8pr#LV7L4Q#^kaD0e z`=R9+Q-DPJE3+%37js-rJMYmvi@74`2m#hPE2WdP>pxN9!my zosTnb7f?o!$oj9)*15!G=uDgDlqqZhe6UmX8^+F`MN`UHg%;A{R}SNmH*rE2XcJ4K zHw{C(PrHeGVe<&3Z0w?Fcm885l`UfH0$LV_yIdecMP`HG)T;64I zwz&lUUd)>K)H-Z+igbL87k&T93ebp`xz!AmZA%NJw~3t+54Mm0GPVmG%K^yxi#%vM zAM`i|_5Cje5)%OOKS4MksL_dX z64)wkk4iT?8>A+__}VnY;9~PhEa$e&(M%C@wO!=sD0bruG|y|P3Es5xTm^CY_pQ*5 zdMwS&2OxQ);}h5(!MkI(vMBu`@)2}8K--IQ8>%m_Yy zZ7e@$QHvL6_~QFH&x!uvJJ!dxTEZh-v5LBLRny>-E39t91V`F>JvU|WUy~CKD#718 zDMVjX@Icsxl333~+=K>jns=_|2{1g#yng3{K6B*czh4U|{DF#MHM zEOM~H*Zek1g9RTj`L+4km?vEKD7XJM{ll2WsoxL8fiD+xG)xwD1k9cxUMLc;PA-H% zddMlqizJ87RNVN1RJO6sL`lT}aTxm<-y z@8#=7IWoXsEQdPr+rwbh=TFPHD|a%S-#FFMxt^qgoNHyx5}?&jo$H7!2YHtqmT{-R ze_K&nZ{#~vq}~qck?i$Z6n{S`DhGp24Oenj`x+J5{CjHjx&9tVMg8j{rubmn$ytiz zPpe%2mQ4GvjEg4YXV$p88Fi4_>3h2)z4zywlR|lyBE1d_d}so_QVyHbm_IdF)G#it zTGL5pS8G9mZG^HxzzzR;WE^J^gb9x~P*p!`0TBMxHSzakI?@!+qVD^EAl-QhqVy4?Ds)h0%oIHZs1vQTw+4aKbeD$4O^S1c%1i| zfV931shRnd-)1vkE!F4-2e6?`W@l9EWwsmMAXXv$)(y2SwFRfN!xy=yQk$vQ%~Frn z2b!0xb?hM_>{#;fdaX?Y($~KKsG$0&xvcRg*efo5vtxNLV@VHY4(Tk#LZ$ARtVK;Q zH$6YI(}PRTzXGP&H+A3-;F-}KZ|JByIx}%K10Q^N`Mb~K94W~>ruTj4a_7xx%7bsa z$UjELbh9yqKbX;RWa}1to{jm>0zM0bT&IlNynTzO^~?X$lU<7c&#-`Cc-UY;ZD7R$ za@PW`SArYl7Z(>BBiYMB8N^+hMQPN=vRUr^i4=8>*2J=b#ivm*_+EKb(IV!}^Jq5G zG54dz0y+6RPxj8cYlJFxw?7^OrIm5Y-37v>zOkjn^nuJmH`O)Z(D+`nZSC(oAKodF zgSu7-y|Z>7gbt9<#LhsS2cgyrF^W z5nt?H?9r_v0oL0yD}k=d?`Pl+&ab7s$--jr!D?DtPuH)@KvT)U^q5t|`;rdbQAJ~Zo-7bPC1XSC;)+}Nke)QU#}xv%f1H1NmVz#Y zZ8k_Cw$xgm{fxXZ%2chkDAAJk-4d8J-9Co}p3k8WBxd9{=h^pM7`Je|-Ra^CpPbBP z$m%a_of~&B2$fsmdu&a|$~#|~q4HobAiJoRgX@F2b36(|ml3w_>Y%pGA7+04<8E^! zJzZ)tRgBZ0)AWuYMZV;pp!tDsw!Y<;Z~p`kzGMDSitZcZ=|4|FO^!iq$&rt2e~k{0 zsr@!|4I$Zl-%x9Vx!GclJ`6&hFRr$o=*pcB@gQN~$aC!pbkMB;=Jbi+iDvZuMB9B$ zTgESRRn~uaCc5p0rtQIlglJMk4w;RjF@H4?ba83>-F9!x_QK#73O(!kfJDc%k)y73 z%~3ziF$Zf}%ziN;R)vd^=r#0p+m-oYjT|x$4ToX$pbHU$08-)PU+A_|2J_nwWFQ4Z zQJXpfqca&S1dn3Es}?ZlV_47w0s%%RE5rBpL8pa*(#q($yugX(w-@Ma^!eJoyV-)m z5fXD#?+y)n{2)gHR`|Jydi;PMfi2%r(70j#rK+-#*>5k*;kxG-1s-XNYGWm~7!A5D zL@l;86s-kK!wmxAh==Uynp;=Yi21#F8nO+w>W?9kvra`cifRsG63mmDu$prKMMML8mMzmMHSTL)D-Q0W?}nT;QBmqwhTfgCn(SIm@QZ z(1Hi4cSk5Gf!qtrnvPUv>-*OJIn*xtb`Jfp&Ul2{Lf^#?cqqsM)S~72y2XW5$)m#US%B*VX2Wc@tI{|IePvV{5+l z&V44V0r#hUGK?FSkh?!jKmP+>3MAh&5nBEisT9C&di4S{33r;(*x@hX^XcYGC1%xG z7s(#CNMETFBxKhdoAdXEv;#9Ih zwp}!07693BEy57-KCF;&D}Y+`o*CjBSH?nf&|$#c&8hWhlTX_&1{}rym+3wHAB~!~ zuZ5MnMd}2QMI14GcYnUR49KSt{zAfr_bV>0&u!jq>&dK175qRW`h#+>APc&GrI-JJsr-7m;kUP z`)$&hykUrLV}oihSNo5`J}$e5LS2753wuSZcL4iIG&$dlf2YWi873BE|0G{=$WqNkzN9Qv`h3nKleD1i`rjMll zJ0R>Eobf$c=i@8zX&JvwN#8q>hAK-)X3x2>!KCN@>{0P|A^Q6g;=9D!0hbzc;O*GFK`6yV<4OhT6T;28E zZ*{C}+Wh=oP_azW6pxQ!J93-Zr^_~10Dqo9R1V(yaz*&)FQA>96`M(jk>iO+w<^#p zRKV=kO0lJVPWDFn+0abN($&-RKU~!jF`Zvb@CBz0s`X|!lGkrjXdcb}xKx-*1m|R7 zZ4*d@n($N3>;G!W9V2=st%qg;Kc^^6@*}<1m_Q?N%;-c!`82*E<4~KCO`2=2t~2N@ z$j>F>fSzm2s*Ipxvxjn(<3MgdQySO2s70rxFg0CF%~5j)6{Tqw%Yl!Yg(hzKpWsW^L?2*)y0N`1Ty_BbKf@u(w>+k`V_l zfhRwI2=f`X&tG!|ZWjLTJp*J@Ww&yVnXr6yYT(`^e^?#s;m10O7GyXjn)%-|d>n*vwvjY_5fRyE5ZrDQ53Oy!(WR*yN7EJlmGX%n5j7rIS9mIBLJ{BWd z4d+(&efBFA`xkyY={PU9grgaJULs`VEY%{IP`1a4b= z>0HHaNFMvu6aX`vJki`tIlmLz>VBNy=*1@}j(OdnEm5_tRgnk?YkjC!I4f4(1-Dj94MA%tylGoLmJvfh&HGdU_|>+~k0iPDl&-Mw zP6fg6j7wSqs>)cvBh%bi{G24h?kzKybV6gbQ0Y*4)i-)5Apnr%{Y?xD+P}`!>f2-Y zU=4zu21;&x#w_dQSVL%TuW+4mTTM>BLhMmFkj+eN3HP68ZUv$Gl{l|WR$m&6ksQOQ zGS|HVpRnQ%!mljZHR!%LFj&jx$<)WnD!zB7*;TF%wmlBz^bOb%1*Jg8fhCKk^t#rV50p9qGAduh4Yq5v9KPAH$;wJR3f(acA-lm7vns!YQub<|4 z*nQ2!XxIPrP|ha%E)LpI5;webxfbTr>+7aU|}6G1c5j2Kf(7n_WseoF?A|&=f6M4S-D(+_q|=-?+{S zZ2~#PFlKORc8_Rh_C|9oQR75JvmM68W(@V6TTThOOfE zaz;q2`&y<~imp@7^Cddux~9iQCMFTO*2E7S=I>sXlMEteVKu!_lIE0*YO^y8Nhre!2_+u8N}u`;tx0PJ+T zSY_HeUT(05ig)=c8k_*3z4)Uvv};y;cl(6`B_nvJrV0o0UVNEj&>bLH)pkI7Xaql0 zC1FA(%NKjZ5vb(6DX{_-*(%uEYKbbb#9ZM3d=V zoGYs)eylq;S^kWIROL>S_oW*4!;!Q9?r3HSD`^i<$D!qFZ-SjU0vkuw$I9gHqzg1M z*M{m2I_dBa>v9JNIz>Jgddn%^v;LOVFG~IsUhW3rLy!0HP24nZ8eo5&lqnqh&1*yU zF=x%$e+us1>ovcF6AFg3DU!D;*X*rH%;du#%1=1J!NkI%Rl5Eon)%^em-GcA^EWnA zy3u1;xw87aV^6H-x6;m6mu%S|X_(zEqELkE3UsXJ(U zg-vVeyo`)9-CE*7gLxO)=h6p32gT3d;a~nMGvq&v!?>d3UOH`J*sRXZbiaz76VCjpHEf5>-SfhE)&zeh zz)Pu>?R;0vzIoG&Ip#^Rw`4E~G*{T-KngVY4C1N2JX4g>oFUuqlLD1boaP`pWgQsj zjFz7Me>}ZsJlpU4{vXudrL~2s(o(Coh}F_%Rjt;ny{Q$1D2mo>QG3@`vqd#ljnv+o zSS9v~*pc6>@6Y%DzvqTWZe6eIyw2l1&gZc+O^<*391{P8rBCBABFzv+S+zI9zpr&z zoNl&CVoxIux5554IoG-1|H3=Qf=X!PC%3=#MegfGJL)yv+gpds!8wl+t(8?9Sww## zYjPEUNWAB(n&;&@Y)cXVnQDkc$f7SyksztrrkG}Q;=ZevCyPNh_SFTdjl)lXqjsdIFwyiNxPz6w}Vp} zms_`|$ZQ}Q?0zdIloAdTu1h;b{XNw@H-Gom)&P(3dFMPIE3?(olX;ZAZ`>1Ddo>!_ zP9CQT?%m|TDODnRU)t#%wOCj*b^QSvg$wobTc(8SmNMF3S9#y=0*Z3^j+`{$zKeX| z7ug&0;r(rVk;Lld&r#^}VMLfkmswg^V+7?+)EQpGY@&xOj8h5v$5NP@JR;)S082b& zTt9bfCY>xHYdxZ5tcCSLZp( zTA1E|Elv`(ODjl<^qL{}*XDiCE?!Q>plm-v&%SD`w8ZTs2sAn7(E#Me1tMrDvzNhg z701acr`7PUaW0~qPvbj_R9vlgWS1Kd>i$E^?bo{BS3B*XUD-a!23dL0F6<-5Y4ges zZy@9jaLkhbkIHm}zs-Gm4KqV6Fkd`mBDRr3AbwWU_;>#ds~E??ITiek>!kfY_Y#0$gQEkloYMRjTDm&WUsA_K2P$MZ@QMX%e#N-o}lD9HNl1ZNgZSzOd zvh;4qZ;VX02Qezwmp*S+Uu7?uw7yjf%s{v}GfH(ae?h5sU~>Y3@WdAHsj%CGm+ih`vsFo&utR;!|$ z%%^P9d_pn777-n_-U|IJCH03L&v*Q)%{5m|i$Ki6k3(@APG*%j)o6fTlvB&GKV339sASY~{ao6qZ5Rhvo4_KwL|2_LtH6 zEu~`_Ea-so9>7HYk=^Qc1o+lijtwrdNo$~c$n-vU@AZ@G~= zX8a`W@xQpqxDU^|7XbVM=ZcK;rPRDeotnoJgVFTzzlcXFGt4QdS`)UHNOCAzuhIf9{pELvAKQ!n_Ce6$i%X!mz51zTFAr|xZqq5So93GDHS>Cs)s+f zDMK1})uPv7XL;d^#fL-yRbf*Nk<@C(dTsw{Tg_uuN=HeH4eNQ4`PGazYV6-`riHC< zr$8Dd7Do>~)sg<{CtOXW@_Kfbn}cZ?>-9`};&+V}Y`S%EdMU;=%SsPS*L!eZg1cKb zFQ|uW`_6PhliI3qZ_QR{EK0+Qb(s^j)#;7c-{HGj{N?`?bA$Et9s@10ea!q)CtpeP zf^odfC{gh-djz|><)!IhZE?n$pR`T}^YN>Ha0=DQQzBGAa&Sr_^5|?p1tg=CmB-M@??#pz2hdZ5Bo5+o?V6ar%WD z)=m?OBG0l%FK-{cJ9*R)SI3K3r4GKC8Lgv3g`ai?A9i|bE^gj{8n;_q?{PRj@I#I{ zVTfWp8XH{xaG1eBxs24W{BB|~-hPY5U-c|D)=ybM(H~Zyv^`k0G7@X!{!uNA+L?q# z&$5OZYR)f8Oa3j{^~_=xN{2v2D^Jl|(0*v?U+PBE*7Wl&I6i&%0i-C<+f1qX2|>RF zDgI!+#jil=M+Q)lY(2?LbZl#`H2wvzik7*wY5?XX%nwDtAnwpv#*^+W_)u0!>zY3j+EB00K15< z1+lU72_Orj$i3|kPh-wSMIWMgg|6eww?^O*DV~B8h^wsC%PY-s0`@OpEp>35fA)vo zSSn1MO4Y6dpA-Qng4RYn`0aLMdt-ZPwS4gIX>`MY{LM5+zIw`760}u;F`RzoK3t4W zEyK>|`npes6V)SEe{$Mm1N^AeJl}b4@watLqm~h#VbU z|Bo1Uk^nzSrS2yQwzXRV?WYW;h)o^W^!j?!s;6~4H-L0ZRasXP=d4t5p6o3Yw&8bX zm{yNn0+jBpXvzMDof=$IkBE@FFR08GUsA!ncDf@v|u4eoz@0IOgDnf#^A=L?_ zR^&XAB*WI%OxfbT1&>&XTFP2L-g_w+i8QiA^AP2oL5RQN6k@5MBpCytx|5exzMmuk ziDK&4V{B->6eMP>bzBnOB+;`4(F~2Rka*h7b8S5$zYrD35Z!Cb4PtUfrkQ6;z|vO_ zYRN~vE%yXs@4vZ6auXaZ-j7k+{f%CVJCvX5}Q<7S8?9c1`jP3h?XRQK z&SpQ~dF7HA^+>y!Z9eU-l^rI69zW#8=q7_hQRE%rsnU2iipXH9<0lUNZ zU;6Uf>8wA3*>0)?-`#^ehngH*YH3$BToV^Xvl!ZYD^{IpVTp>=CYU zx_NS=1t}^UTlZ|7VE9)|mk>%~|Kxld$S51IyNMr!y&+EcjdNQC?tMS8DeyS&Bf@Z2 zpWXOF?T=Sw8C@=bI(^AK>K62uQW1Z7a()43A{pfUN-`ppGdD(n{JA|)$s$t*_x159 z`vAN8LpCrjONlxUU0~v_^`J=NBFEMT)|sLDP+s5-QBWrt(hN_)EipKe{pPz|AW+FfdRKFj!RpJ|3{)Hnd0b4&C)&)_Kf=+#5FDTGb{uV*3fze^b>n z-qOp)lPUdPWB1qZ*Joe+_OeL!v1woJMLxgbL374gO)K{h^-$HTRcr+--Qkal>2;8EQZiHVf+jLQhCg5!%F?0Dml;YLLYW`d{3=U zKoWy=aBg7z9hIh1f6j;D+GA#=p&wv`r-2@QG#$TR2aB+Od>?b!#E`Z++cBu4BHiau z+`jaRq29A-;8}|k*!5!->t;k6{r>NSEG7#JyENZwh&}$3=uD=Dn($F|P-Rx!O#k4s z^^6fxE?c>ol3x2Soen->0=b#`zgC*pjtq$xYifZMrmE~gM$a^=^3A-(C;2h2veuX| z=JQd?;LkP{3ZX#(`(9N@SMY2e6@}dV@m+4ly_Yvvd~OBKNhey~Df~?NO=yqLR`%47 zc7QA}5*ym5Js$9zvgq%&%enSy!`xG6r&ZMKk<#wJB>}5FRgv{T*#d;y5aK(dpX#pd z2qN<<|Jl%obYQ)BBEN*gZ4?p3v$c=7N4@U(8?c10ggYa4+rII|g!tAPYteOUeD=Ljz_PoQT<&q;VT%4ru&?Xs z14`0@O}uM0_FaFJ(HOC3LGQ2x$uGxo?G&Kc4;1ng79hrrx)$!Yo_;}-Llx1GDk z7gDEMmqC|DB|ouOh(CUB;^=X~WTz0$W;-he_7!F3(BV5hqg(73Y-L-!P`Ldr-z5kC za>`)amWtR~&q^vPMN-RqA2#6;upe~nzcXEH2RWwYl}#zMszB8J#e8R6;%u|aPk;F@ zXX}1{`v1cBHsVN3PlJ0utW;ztu!R09uIV6Z9PpLpJXGe);;CcwdexLQ_^Z(4xDP*j zVy+j9~^o_+{ax0;IWJ`yMNBW(a;Xz!y5OQgr zFkU_8pDi9M;Xm7^YMn>5!r4Uy#`y~lMqUK>ImVYHfA^>CbU2c4?v>Dw#k}%+v2rRP zeMMh6;fX?iIz7wW@Y-CuZDUg)ocd+8{*~x`7P3N-l9-LOpZAo>3PvSgAvDW8YRYIM zpSH@A{ti6Fju_ZHJaY`RfYlyoPU0SnS7df+NVkQ+pD+77_bVNhYkl9;G(+-Yv~!^a z?;?JgjvLPpj|G8$_J3kAnyau){{g;dEE_TCp}0?Eq{ARcqm87}p|Hu}`lE++`VwFk z(bNsvGH@q0zVH{;)9x;Stog6}h12LVZZgKEG#uM zl(@T}Y*5pTb$a1CbHl?=7FZi}5^^mZ}z?`|tVbpAB8! z;qs%FbI2~tD61bb@wF@i;ayt143Xxp|t3Twg6yKP;~A= zhA*mDQ2lsXbJTrKc=`)Kx>D!zLGTTddv}}i2)cOSfk$Rf8{zYKf?(M5cnpEW6qpiA znvLzXTm?Ouy`y(ti4SSCOlVDUMPI7&ulQGzWoe9C!|S7HGfClqPHom^F}vYDm72~w zMy7fEV7>f|B)ZE{3V(I=?e$GCS9|A*tPT^rOFX#96~fJdgU6!cS*_l{{r0W`2Uq%k zAt|K;xo2dru#?TlQbj8-6-ytG#x{i4h#li3928jg{kZEwXYTS7=lpl7@xd>)i2f1Q z0~h|N_kI;k`@INY84n8 z=j5fOiP)*Sn|nQ)`mbKt{A9~ffvEBP&gE)vvKRb1BvvuH~q8{)_$No??mp|xKquM9%WAI;S?G7@40I|7J z%Bsk*hI>N6zF`qZ@NbC1;g%mF_6mQ^7F1Ag&On`SpDx}~mA9Bw^UT`blp4>JjZ47* z)2v12mb(&+x4cIKDn|*n3IMmMm+Clr)Trg|`NCg7CGS-)IjjXb2XVwW6EINUnEaY( zb-&hal#nAMy;*h}9}z^l2m8`1iQjuZ4y3z@&*fx4ah5J?&0W(wC@mp)_=$@y6cQ{| z2T<5Spq`AYDgMJVF7aT`72fT+jUW^!ApqG))h!V;(O&B|i704r6$j+IaZAu!1du=d zlp;#^%k-G+!!2gjm`_*cbq((&7UwxNzhhzK35Qc*uZ{&1$1Pcf823$*+QntNtl}t_ zVelKjUER|FYU#a`sbN^(O>LGYe+4V#&B-%l6$cgcSxOxpXHi+TEhHRSMh}6ngV9Y+ zxC;Q7blDVeLMz=f;o(5>K;}kxdj#uHL!8IXXpy#G2nf~ARA!47!Jv5;2@maJ{SmE}*G%Vz~pF_q2))V<+@}K))AQNJ^DROOKGZ4&l>&3vVaUR z2`t{E_<9i5ef#+)=s~ypzxUW#ePlpMm7R_z&Zn4Ty6xu%H5G;P^yxYK+FpIo<>)Rs ze6+<1V0>E@^dvs#5vFA0dJbyW5pzYr%288xu}CD5X#)U72#T2nG$Uze7zGqq2I@-( zo=A9;2Vlq{z%@GY(wkw!Wm{eTCXv@Cq`T;IH)#^|(Pc4f*N@vFD4VkuCLdz6QY6hzs*bvM$3jNU;GZBZ!{JRT4bz*vlPiTJ+h6_Vf(+917o^X9qpQ6~A! zVwOX^NCYW}+ngM9E4(7H(&2`Vs{hy%BCM*pA#QmrDqL)>7+2^FW$Z10lF)WK9A?T#KJxzB-nr1*p0!vz8M|I-R~lPto0JiC7KbF<~k zw{sx#iTd$Y0?r((VG1nyI*+l$b_4k6!zjN*Kp_%pQLP?IrXi@_8ayl4_^IQi2V0Hhb916-y>g4sf#sN=FYNYix* zMrajLF9;7j~XVqcLQE$OY;$5WNsq^Cegz$uUQk`x9nSKC2L$A zyAh;ANAN)lj)JkWw#_aPmZ1uS0p9Hn=Av|Vq%YWS)24y5qjd&c2krnMJ zs-;#N4dd_mbrcN|fAiB>f>4BnIuZ_cCPz~F*cX<=XdtG`Tq9Uq)kpt+{ATiu2E(YRr;v;!x!@2R))#* zb@bf);dXiHw_e}h%F*uN%aH&1kP0`VbM2DzO}KgPmSF|!>`_?U#q-(1op&mg7;&W) zuNrdR{+lTyF9SP!GqWQkxz?Q49X5Z-o39a7#AMGJ*`8)>&Qs>vJO`NFgSKuuWrMvE zP7X?cuU`(G=V~L?Bc#i|dpG^$pF{P(+de4E0W z8B_6VGLHsZ&0Q*w%f1v0hD5NJs=De0R86nT!F5v^&&0<&KCSg~I4IJ;<%Io_gC<|u zDKmKlu|*ohZ>fVk9wNS*#k;I4LG!Y0@8DVX47O=g&R*g%@I1+qbNVYr9+RG=jb{I* zDYJ0`T&2D)z!Pcojt^}G!qHLH{=vJjM>qXK2-S15 z5`gYcBW$Clg1@4-skZl;Csw~4SU+Ua-@J0Xsh8%;+OX2 zb6r9Io>D=JCAi>!e?VCtf~Mz?RBIdJ?^I6RVO^c!tbR90>FvuDBAg)h@gjj^I-GA^ zr(_!t7e1?`fl^^B!2-{8y)uMrCGXJnS2r~&-uO&nCeiqu=^6ujIF0nZFptpHj3)Hc zPLAX7J0ZSw0gFSvo1$Tewe#PtA(M0vn8nK_ijTe?ll(<)@{@aTRWfs$Iij$x&qk~* zj&RphviV|Kr;hxtpCX|)Jnz=id9|ez-R2g(PAhEMloMOOUC!>_^$Ovv6%H*v_qd-<;gn+SiatS*(yr| zYm8f+hI;l;XHpK?Nq(vS5->VOb~+%py6#J)=4#+VZ}tnhz--_Ki9{%0!sc5X}xVmTJB#;!GQAo1zJ@)mI-|hqA7djLD`+Ww9^>r+RK6y~( z%VpseTH?$J7QdaaH&6^3_XMa8I zVW;+LU!=+Ght~0@am1{pE(UTySdp=`a~pRq@af>^h>SQ!fcgUY=2S@l+J`WCdjx>A zVf1x6HUa9>IF9P&xN3ho4lF+5$I%pGIB|OeA&kj+2~b@tkP0twEr%iclk*Sp5iHHY zgFy6|uPWa6)*0|YIHVugbR^Vo0D5l5BSLLCh}d*o^bx^3gb@d1DWNL9lPL&|T*&AX zet_%p07GBg!eg}Otg*%sc^}|jzrkVR1~gEUBkgcnmvv+M!}LrOb^*@Ni^8$9k<=rqMRjQ zhHq31%QoF{u8|kQE1I~_R@Rr9xA(c|=w(Y;ysYS%ph^k~>AhXS@>w#Tx2Eo${{NMV zXdS3o8=fli#pw|dL=gU}^3y!>Z|>^hla$K#G@q6ZI2GbMvW8^4Lj7SylF3l2d3vq8 zzGYRM?De7#+W;iHce1B&OUF-<_Ar+3Ys@4gvZdl!TxH8&Xr#*e>Z(f-8KZQYN}nDv z^-~FIQ)eB^c23x#{pIgF+KuMtBSIDr_Kvw#eLB?BMNGYocU3v=T!1j>9eJ3klH-YQSvOx>_7`8^ zbEiH@gO8tE=bG2CyTn~kV;BO`^?p$>XDt&Ykw6V_^ftZ>X#TI3&=%OiQ#t3wQCtJz zC!TZQ-8&&v4%zB^=s0EtD?7LyW&XEu|3PlQzHu%byZg)bm2|N%ad&GwjF{gE#5|YG zOHWp{Sfc5$3~h@b;w`Q8r}QBnM4`d^X?DQz4X2 z5(ki1sLA#z!_~Ke^GhfU`SB^MXuYNTVf|1Y(1*y|EdjZIYINW13=Nf{uF{M98d`vA zA{=pjbRO`B{%uIBN>d>;brg#>;VO&=wvNpAN_M|)A_Svwa{2_Te@LlR#BGjE-fX~% zj|5(I+;5F~0{HX^Qszgr&A>0rv@boX@dt<2ZzAHi(uaRA;|DicTUgF72%1^t{fx<- z7$V4cl1XX%zN0}_2X}vtb~`X#fDoBG4_^yp9Jgf73b{6QIDBh+oTY!NbKgpWoPJom9Ba|{Uxx4Gvu%OUrSOo7QSfzUv&sm z;i@xAB_GcfiS6%XN|yHK|9Hkp(zi{i843%G++qzKdK+t#(1mVsJEhn+ZpzuZ9)rMS z`YsY#fuLpL#0>J=!fxX_x(w%l2sQq;d$xX1So+>Iod0zoCA+-I74(pLNOQ9HgZ^OV z{n~FrYC<1X*3%6uU$I(PXG{a}B2t)7>@JPG^vjyH7$&x#R+!Q!(^SYpdA|E>vt6Go zi!DHIA5RAqq(he)YDx0Z5d4vzXOuGOkjS_Y2i*?fZy$dELo-cj9xHgqA1v@N5N&wN zoRbHOT}V`&fm@!#{%rBrArXV-BdL_zsAL+C8bnHXem{q zqy0zf4Kx+~DJ$k(4NW12R=RhNkKF4oobkc4kNh@ohu68?+atRx zdOG(qf!9PJvE;HOIi4WCN0phXm{xx)^5oni#10SpOzP=0Y3TvLcXnxi6@m zme9=8;M9J7=blkdqAk!t6rJcpCAsSR7c(t;GmI+mNtv}OPIGQ|{*W9l@SC>xL}XSm z2i|j$z30{hD%!V?zNqwLOzxHU2Usod#nLW~^qh5MNQr@%l0es#o zdFqvQg*wdHc`|~a#3-k(Hs8&!948cS8y_iA@3l*m+C9Wwlc*k61-Mf=&~$`mc9)rdqat6=xi+D;veJa`fMu7;s%lP zMD;9C!Jl)Q(F)CrHRpS9OS4!z=nUHNn;zt))1{Ts<4HUxe`hXT;We&u+j@RoTphc3 zgf}1v&3;Vp#f4j<$J&TP+wBIA*QkcxAfLC-Qj_OsMv@#Fx&{?Gp^+4vSsT-gk)tGPur zIet;J!8>12Q;2;3+dEjm#9+VbH{*%L?M*DGMe=Wi*(7`!BBvw)#mTWodzhUg>DzpV zHTM87r;s2C`K3Mn!m6jA%*DI%bu*kv6BQ5SwwGr9o+QP zypm~JTk#ybzos1s=B@}=%#lLSQZgm8oecYhb<>FmeC|wXA%3y{osope9=nCS^w^2| zR~lVh4sS5`3Lci9nt&d^IV-l-z=pvcre_T9t8FbLQu7BZm&&B6D?Yfv96O7fNuqfv zu*w2r855#L=a@$u$aO$0b0}PDt~mn1dRSRQLgA#?LWC&Fa)}^GqJ^Rwu4ckn`~{$Vi{uIs${o=K-0j zJ*Al1F6~OY9;gS#>n>}{zRSSS&vgsPyJ-<%8`QnMg{TGSqUP)|-NHD{VM0TH?Rv}k ztgVrs_q!HCdD*;c>T1nqsc})^zh?LkOY^Sa zfA(RZHL!AGiS=ZwlE+{qf;&K*ma-ulp59y>jq5PuO4LHSrJOQ5^(&g-fQH^lU_pUD zv6=7LOTflk)lCDnPH|sj|4foTj4Wvu-!CVlw-3Y@jIxG_B`)GknB8x_r9;cl&bDAI zEZWvXBD`$8N|tc!Axnk9N90XP8`)%PAK#J6N9ZQ&sfbZ{CbYZ}YhMhNk>dFBx+VaU z<(H`&b8+DPRo}{s3Ymuvwk&ZNbC2GN+7o=;i}HqpT2Y|LFLL?=dWoO-c7LWu3us|K z_C{`f^TYo5HWM7%yXfBq$1D1gO%mNQ)|-KJ*mQaS&25eHcXxO#37%(tQpwA8*m;7A z1GoG(U(=&JW{b5fzZ}2pAC(VGAf(Yve!uT;%?($ zBhI&Fkf<~E-Y1lkFpRThfX#Ro$~$YZ;JE)KB9mn8a(54pe#vFF#CHn}BlgVzrQ6eE zPF@DbOs$CQMi@z3rRs?Zlku*cgNi#fE_io22CSTbWJ3-?dKca1+>8{ICiIJz*#~*X z>sw5RF>MbsoXqntv4;V*SJVd7av8u0-4Q<5ZoNxs^+CJz3T5M9=E3Fx*6h}c9U@Of z0Vnu?i^>0$LFv_NP#PylB`90(NT~wwEe#TRGn@ur0h>0^A@Y8pYaSLEWE6T{b5-`d zLmrTF)lD4y;-X&S-I|MD;IbF6N9ZadR$wV{&Fx9))dd3r{7V?XY9^Ma0NCpX=Xedl zii4?wEkcFtH>8`%r{N2m6AZ#}< zH$A@$rVzfjX|Mt)6|tMM$s161c!DR1BZf$seEE@D;eQt~dE);-w2m7O?$ErPoIsK@ z0QhM!Q1YPA%8DaufASL$l0>8g$+6^FGzutg9g6R_mT!LD*%s;nY~9e(>!GeiCtJTs z_F@%f2g~0vohd;N+1c6YaV$KZGevR0I}a#VWQRS1oMDRJ6oXm6Qj)PR6!FnGu)1xE z2Vy3Gfq0~b1ml+*5g4J$O*4>M7W4*Rm4G@A=I3}B&FetA6A$MQDaRCGbO629m4uA` zqU;{DhNp<60uLw=KTPCi(Ju4PGkaxAIt0CGmGu1NdY1ySk-4GdFmF%WsTajRG`;2XXP5MT>iV^O0!CCHV$=EzY1hwx*WvB!n}^5fQk5S=Qx zYfz>QocVb1Em#974jDR{x*fB#iFzR*;#9U)TNmXw%rx}KhTrTU$D&Wjh5pR8jVZB7 z1*`%06Ru&zbY8yXZUV2~SUtOgCub-U^a7GOiw}YPkz`J-6cQc)yJ&}x#Xg%r42pke zBlB~1M7O9A4oqm)1h$k4KiBw6++(`(-$;fOO{*7jBm?wu0T!FKr}Q!Qx3R*w0NJNb%NmH3hiaH=rDt?Xu`jx-e#n zS?#4rSl_EaH+el)&!;Y#afUVY&j@SRlrOrf|98A&|98C4kql&BB5;w6H7SdjuFL&k z15tah%ha3naalJj76xRd)Dc;;RX!^#!-+dynvIpqfr)~Q960r1i>ExWhgMJ4#z9X} zU&CYArLK8tTHAeS{{ zsl4WK+n1L%Ip&cCmew6idOg*Ws&Y;Ywx)Mb+?bj|+Kn^QD#_Z5+DmBzQ! z&+Yf(P~Omc2oEswv(_LuyOIE6n=a$Xeuy_@8v`b`Eetwbj75NnySB)>BOT~kPm#jd z59e`6$-O&!K)3ouxvP&Ek_(Izs!f0(F4)QWqG?Jgq5nxAuwt2_OuH8gh^UZ{?C#IU z34Okt==Vss-!$jo6RV7c^rM9fhKcS`x2Y9Ld>qaPFz;OAj;b!>3@GEZ+-BD83!!;>>6sI?2W^F@W4qyj@@#I!y(e$au?qOS!RN zzx_oblF@1zS~gkf<2s_w>Rc?mEk?arB12iM+~TD}O6<&obKTXmP&beA_DNkDop#o+ zB8E42$`0l(Tc_ZcvSE7^WTJ;gXta-qnZF`g{F{}L=eNf!xgp;q??ZcgXGOF)Fz;5f z&-J_my*_*ksvOAf!OHIWlth1^h*%S9ZDj(7>S2;5oz>u6a9KwV3nwNQGf6FwJdRN0N{V{Y0m2M%vs=~TC_XD z744z85^%l?sC$fShSI_5WGd)lLX6Kq4nc3{=`bQ`#Wo$dK;u=;T?F-y^^VMy;zv`D zS`trk;{<5Xz~QVjt^^i!YCseu-=B^XWR;o#&H!l4A>?-_1fG6{s)+*zxt`B$v!2$h zCek#k0P%BSbwCcgXQ<}R+b^8}cON+y?(2D*{O)>Oz!EV}Ax-)Y;Il|6w}sHNSd`dri_# zR(;J9B&FiOABJfSmln&qdDB41V)>t-;^%Cwsf3T*D~Zr?&XB6y@SRf0q_b>K*vMEu z5{tZX8H)`?>0Uk`WgUa0o46YUJXUC#NNvs>1JaRh zW=e4b3FP0UT)~$2IjPh~CH>eY_aNLT=KAW?J1eKt{O^XEqqpAW_XKQj+{AETOQtK< zeC0wS-sqGGZ^#|SVk2TR1t#x3@W211{SIPkG_5Ck)c{vwY&dsuK54$n)mmd4kS_1? z&G|Fg-e2rtj34u)_?K~6JTMn^G`1ZW&z#&qB>46>W)=}r1jV8!*a1hgcuU$&V8T@d zp1PEF@j5R1$!byeC}3Jnc7oP#5*KW@034{~p%hKHt#2(3NRBcwZ|A)~ig2!)YB znxO{3o!3-U?LUfBg7K55BDm<&PWDxxz+<6{9mv14bOQn)CTaK5-d;%K4fl-^Ex>-- zUZyV|@VI%7Xcx3ZE+C?%7|hCzlVuld&&&zuh%FuxdT>t)HD*2e1g)@kXeDaP5NsQr zeB@guD9^oeZXaI^1pQzyz&cb<$qdUHbSRfK8=KB8y4?e<-Ge&{fUnHEXp*@q z+@r`L5%I{fFj{>s;B*N2IU60N^6pMU{;EAY>5X!4{%GxBk?MmF7mj_7uUO|ahaSZ> z#CcJTb#l;*hx>k*-#SpP zrTY_ha|&{kG$ObJBynFrt0>2;mdnGhr`=G%ZquKVA-Ou@&WH?A|LN$pmhYM3Jo&2* zfh%^h&<0Y$48xPObc;@a#4@p`>0WbJ@ANUd22*fF+9J`$SIrFVa)PEYU`6Q|E}Rs6 z=Ya--G;0I@^Wdgr><6(k1I}A*tS}%uEQcae{yrHe*!~1|t!fyoDGz~KjpH%#tYMw(GFaFijmNMQz zvqt2_G^d&EkqW#4o;x<*JqOQpW&?2oC~`Dq%68!bGs|Q_2|?bB==7PDSaVTUFO`^D z(E)xqUt@f#m~E16|1OjwpfI?W+ne)vRTPnmbqm)S^+aR&h%+mpmwzT*$xq~-r+aeI zwY*DuO9hFjwvvMC#~W|*Ta7HPI*&8n0u4N_TzN@a9(Ytv-@5-kVo_(`&y44v@HI9< zFaQ7Dig|vpo2~9tyg8WV%!51H45aBRF(x4@`#m-4CMbbd$Feu-2O~5o6j97{==%+J zyS3tni>1MXvu#Er4MQGm`ZR5k%P~|qljN9EayDgqspiFR`Qcx7(G_6UH#}0mL66H0 z$Uf4lN?j+Sh-zvF{_NXK%mYZw{ z?57z0rHf1xE}0j_~Ys=DWn6WVz;3 zq44y@^xZ#Gu+)Xg_Jiu0wVMpNwcS+?{^Nn%NjelYcU%Lz2i|F_|{-n(Sr@dT%8wQBj8f#?ZF*9 z>f|(2JoJj3VH^l-joXq+ze*;Pp!Wlwf0Ip7R`S{ewGOsQOL5@RGMvvi$x^E9YZOjQ zsQuT!1F2qnm7@sK_bX45f%XUcs`M&iNcR#ruQES2G{c@K;qicx1#2zwh|s1Gw$O^n zLlF4ql1r@f?pi%9C9s}!jITu&<>?B;ti*UaMgh-&p0IveWc=Kok{! z^!D~zvu47w{q(l$j0ZTeXzW6e(bvJ)a_~8Wg7$NRZe9?z~n$ z@KWdP(SD!uOdYdKcldiZ167wP!&83TXFEYcJem4H$CrYAWh)tt4b8Fe=X<Eza_A1W33~G2?NgZ^Q2CIrkfm5p$L`e((IQR!FNiDsD?68W z{v_K&{%7kM3E|SIIZpZ)VFLCE9qY>FFKReyP3B2r#9u&ny=kp!wO9St-qVXLm*k$m z9Q?#6KX5xSZ0?b1w-_ya^*pth(^UW&q^Vg~5n5ZEzLGR0osplFYWOo$Ky=119L86y z9SL@2PHB5koWI60W0&WT^=uHW34=($mLnv7a2eR}eKSlg04*#sn^(_vbbXI&8DInK>lvrSxb(iqnblvdC zO*r`#=G7W!miU40U8LsEtIt_2GB#70qZ28UR9g`w^fA z#|D0HUl2ZTg#roToa2;tSprLT*04OUXXv&3Zj4i-kv}(|>&JzQv z;mgt$Y~NCNHLI5#v%s+D#1-#L8hidaH!z(0^8!aVyZ6@xxBS4oGULq!{-5Cs{9mKC zZnwC679AOC0JYu=aype^cG&;LL|6+sl9AsRPLLf0Js0RvVhNJTESx;dldk1tr1)@I z7S!cytjNDY3y;BmmQ1LkS6ljV=^g?7^Q?Ev2=}pKmBKsWfX01@=2upuY)r$o$Eokz zjh<}L49RV3Uwvzr!gJ+#%p|T5XODIcl+n?`=>~1pR+?7d{QT-;x9>x?{@hAgE3P^h zT2)tPz|GBV+hjIaMl+B6sk^(kXSl-Bh*@X*x^zrKMxth=r>*g)xP1!u_iu;r{rm6P z?~i(-aw~8@J%#$u-?H*X=hD+fPftb4jX%c}!j9zK>`LuAJ^!%Ag5mq`B3elL$xly1WQ|T0+@C zrWOyQt4cfE?jT$GN<7TJWBm~UYq_(7~)gHutZwcbV{R^rC# zdQrn2wGw^<14^E6Bt@2xzZTcabUM%U+3<&8jodl z)_1-eT)q@^)>416tK@TgI?!(JwRZD#zpc!#i2L4gQ+yxz{cLbg`JS=UenUOxbC6_z z^638GALZ|t5UmUoar5shtD}gn5y(ksgky3{pR;_O@7$%Qt|Zb!|5%!24f+IFRV;m3 zjP^wAJ<^kkrvIL(-QH_Di!|)&?m1oie=L1~qYHEChe&45v3^kBdSjBUT`_w(C7 zd%*79y}Pdy&*wSkbxuFq(eJJ&2jA|d$~OoJ>3aW|`_Af59~l0z>ypT2*}$R|PBsTL z{xj(vF`hjg(#Af$g)>EpZQHH{_x|T#Ae|vhmX#|u;rS1EAQ3FZ#PXMb_1{5 zP%L*{rrOO_V=kTU|F%sWPsOyeKK+oS$UNNOo}E_JS6x%$3{@@lj;A|)@n0_1b8S%Z z)1}BK=V(;>;vgO^`$faYM6t$F>}nJ^)at8qdUyTDkw2X!@+RJ9H~aKs#}*xfT3UIh zr(Mh3Xq7nWTF8hnSJMy0-?Wi5uo1AslZjzYPR{HkF=BJ=C5{&Jv21=z2>^c;xjyjhW$u!QORafGi27wfbv|AzQ-Vb*fAiTO>cyNteG~5`TFX9~+ zca)UMyJRdc&6=|*UQdfwnYVpt)AR|=#@OQgqv2QfZfc^V?rnc;n*w?kY*TC{`nUJt zm0^cw3Fw)Ap>&?xdk=+*+fg5xa_p(;26sjW3#I7?E#*X&<&d9&t{P0T%Go$VkC^f_ zajy9He7$~n*|tdBAdv`4%`;gzTUhY*uqxfR4AbzVp`v2C=uAZwy}?|Vyj=>>8h6^c z_AJlu*S#L+O_m(iFOc7q#gM^*7J`@Sl~LfMk$7c@=D0a)(P^VmibpZRP8#xvZ7oM5 zPe=!PvYf!y?!5GH+bn5)6|!%@JJOdRu87_6nO|+qb{WwWly2ap8;)B}zUYEKUwj%p zdX=g84Wxu$oHkIiKy2P5jgEYsX|^w*^}~7#0vo|cwqBEb$11dg5^tWz8@yth?9N>b^AGoI=OO9F7B)Pi2Ql&?+ zTM@1klbqGCY(#(mdcBI+4wELlW z&ev!{J9fX|B;I#&X6-|D^QW;x#etTCw(|$J1-iB+CIRuBCB^yA7Ave@{OZ^qDii6E zfd1vLOjNQA-ZrXhb2iH=-hYGME@SBYe$GQcemuF^{mR-?vt3Nf%Te|S{Hm^HFDD|} zBJQU;;@LU~VYqjrd(NDhLnFj8y*g*Sd@ENhQRy3NLEoh2B}LBTy3V*i&#-IW%&+^X zL20FztP~wRJ-OosQoYuRR~vqXK9^$7CH6dwb@ztqMm zJ!>>;+;B1+VBrBiAEul_$dyCoo)7;^veY<=rJI+TRbbdcbc5uEDX~^|p zs=r3(g2{xiKIA6=iM&L`)?SSgFWj%te`hAH*{&Jg}NmOlr_J#*l zHxopbn^KD699uvNpVPIRaKW;UQOaM-vE3^xMw7!EgH3EA`W)z8yW29xs%yJq+D`3E z>me^drhKkz;+HUm_q{V9V=rjqhK1UHg(YsQIWvrA96F9FC=31MKghV`%#lOKnhQS` zzv69_XEI)Ed=IJ_L__sfn3|f3YUv?_bUb~pVadcAf_}I8`S_Sh2uoScnVA7cVA(zVK}?D~kCn_HTb0)Z_j@yGe2Tba?0 zJqZJ(zc+g>Dr0dd>!uaqdzNetGlKRTLH<~&JL_hd{9cPPE66E|quk6|a(!whv- zDb4;CY`X<1r)Xx3eRY4*#D?ejPp#M(9VGm8(35ST8s)u7$~j--AF0q$GScO>StAyV>lip&yzvh*OdlGj;+f^Czc!oEm|o|oCD*p zM)L7M^W2rZ*z0qZ^ESk}={p{8QY9)@@hPYMp%AY0cgTZn8wx2;&ST`k^|a$NXb@MK zS_Naxpz(3~F;LG;IZ1a3oBbGJLpin~!Hrz{`Vc6ASEVjW31^oH@pW~S!+W&}7gtdy z@m1%#q3-9ilTPyB%ze>4P|6uLVus%PY*85LCec0x1MZMI%;@z$~H&604 zoVAcA7C6<0Xybw`QzLC&=rP39JXxt1G76J>`O!0UHIe*-^Zf5pxedvNoHW&kQBs|5 z%|Tl1i4cRbhp-efA4!%%&HE zSy(*E@!$k#L)-xWY)|oolkm17AuUUam^q+>ZWQXo^H~rxF10H3H1SPNqa}>QmYp~+ zJ4l|MBCo+ki67YbO-!J>P`7fZrNOM6&n^XcY+b0eFyOaMPW$YrEs9K&5y4>};OWO_ zDBm5mJ&dsW0GTp`I^~1L@EMVSH9Mp5V7d5)F``3qePqf>A|)};o@u)({1{5^Q^13& zTJ#b~aQs|esOpX#$ojkvnrTlNuj~NhDaTcmj>H4%6`Us;?q05G*=t52k1G)I4RDgC z>eW6V%|ux$r-+iXkW*0O+68LE1zA~H8aS~99#YBPoO7LsB6aY|b6PhO3TK8m9~Ifv zHk&^a(;--;KVrvZ>`h7-{|(y49&A`AtSBdbYK7lgTbm5rn}@v1zOJ*T5`y1}=f~qB z9HD|AJcbFWp-cmC-;2l)!k&t@=S5x>b9Muj;|Z1VTg7PKZ}BzmA%HLYt@%#(@&&4; zx3dcib!(CWZNg`r!=4`E3(*Ehx%ru2eV;7)Fuh0akX||(llGl z@J>_r=AYH3bMPrby^&pfjVfcA%()sNz4*)aA?iDWGyhQEn4$!Tw0?fl@>2x* zg{l+sJk-fY4~_G-@Kx&GWu<4TVf2AkGGQMt`UxeBo<6DL>2T0NcYq}bpLZ9t@A&T6 zm|=2=s5 z8aP14tf%Fi{M}wz-3)Q3NQT14ne(*aC3II2w9hXsJZ51U_^?+VB&dECp0PJOHI;qq zx9e%*R7Gr-WOJZ}Zvu5V>sD|WDW}KY{PBu(pD*LpZb@oU)wr0-a{sAyl!S54M(*^G z&&Xq~ZpfYrh>9wR^(_?x6&3B@(?bk>^XqGpE5WNXu)_RlMl5O=31$9|1>x_XZss6nZ(>yQ{!kdK$<6qW*=C~ zyQ$j9Ip2M-u_80vZp~Od@J^XwU8LI?eyUODk?G_Y`M_f<2ZA?3sJ>!cG1mFq?XYGu z=})~qLAIpL5UyGc?u~enVe%rJi)m!wf-eh3r0rW!lGtJ1D>cI^NqXIyc_~uRL(;$L zhwb~F^plEb`e+QvB}DAy35`R07z`-egCEv&-M&-wUn^?a9& zOn0sk*KC)~to2$^uBFrS;i)sr@-kf2Ks{gks}ZXS8#&xGfHp@HGvXY$jpQnj2~Y4&VECB z2c?4)^w~i*hHvoV*uBk+j^p6Nc9a6XgwuZuAFD^iG&iI;jFBNcd3`r_)RZsZke#!O zB`MjB8igCo3Ro3wsI%r(aT60S9a|F1LVxCz^IG<=HZ8(Phn}+y(!2132B|)>@viXp zIE~8n(wTn0-Hk)6+G{JnZ?!>l#{`Pe3DJOX0o`?*kRRE87!BD5mU)73h*MNwZ?M``E;v)bp6pm|a&FA(gX+FC*Klsxe{O^QmqUVI=W`8@8T+s&Ylx}o#IPbhwZ zJl3WYpI!PkdwFMTu8D$f?w3Yh!>6qJIXC_NuazH9m6&j2BmfYD`*(WeE3@30oX?s-@x+qvk!r?&YK_7~Jq%*phi4drtVDGqzg4hF z=5n2W9_b*pRVcUS5_zjIc!FSd#ZDZ)2t029;R(akzhQ|UUnT3q9VkiYeEWzQu<0iR zj3QqFtUE2g7`bP&9tlS!;=YcOxuC{AJ9*RGN3Q0^We>VQBQa zKpx>L(X-a1p2QS(AJ++YvDLFAOCZsB!2Aq|bZaMEqDT;{hPK7<*eYy&EF{~W@?yPS zF%Sud+Wv-lZy)dChh3h4_W#+ppw~f_f9fbfR+S`QuA$-KYa}wM3RPMlKXgzpOEj2t z6C$TsT|tW0(tMa?hFt4O5a&&?*=%=x^U6wIM&y2r!N54dFxWT#oUV0A+4VTsv5eZs ze5rXP428q_sMGfZIF`{Y+AP}Rnv*05uchfjJ@2e45iWN-QBlc1W2Ix{xeWmT*ns{)kI_;r6qTru#BU#p;ot_y&oHlaXVxb#xlky6RuV>=~>SO`8p3*x9>uzrwu82o-aLb=r=U&6;z=^ywc4n6a4d^lEqvO}UI$ zSyL`Bw5HFHt5Na8*^6z2fBM3`#`0q-^Jq4Ss_N^bs;%)f%|zm=>)4&4d#ao;FE7#a zgzZOt1Bczjn}jRUbmCLuFRZsB(p@`#Jh5k=TdCR4Pxt?f`GjAtFCSPYVCaVC15_Kb z9mP~-rbM(9B$yfq0sANLwTn_}>gf#s&FW+$CgJBK)rd#=mR1QiuZF58e326{{rb3RCeSTCw(>k~IoZ*=*CG4`)vcv}285-iZ9u9rliRn_yM>*!Yul zN6}Pct4p2>9t7Opq#m*1_4^jVX|h9R`d>Y~=d7E`G+BWM(hk@)W3~I=a9h=siHIC- zq6iC$?nM2~Ul??D*a-%$sicvm{K>5$IiAs-Y)VitM;p2o) zV1?kqY0aEKKeLx|0tse3Ivr-Q*X}J}8?UR5S956+qB)oOZE=XEt2)j6nA9Ed@Md@O zs<*$UY05edEi};P3`85&%?~7bMwiDaFJ+TjmABM6PIJCQ+>g3t6R?>D4d!*9dX=xWJzho#lLSOi!? zn-LOj5*hUSICfY%O7N?_LFi}M28-JP)zh!dY{HMt*8>#=lC(7*zs^}wG5O;+U3m7# zryCRbO-tl6;m665r}RE`L;;#vDfOXHc-&8sAtnr(4X@DsUmeKvcD6Y%5huZX$EJQ# z3~#_&Cv=%p7)8FfJRw7T9Li`%Bv_yLPWm^yZhH``tPy!VC9x4;CF1&*1+x>EtK<_+dVwd|liyqygcQ0oOd zB<`wtjV-a_^%yBpqsVr_5JnM(9T^vs4IBTj&hWgR{DNv`?U>};=<)p zCL_romievC7(e{H@l(*sI-&!4dgQ`-{DD+;8g)+JGm5k1`K1lv)Asdg4EfHofKuqY zK#;w;JDl*JGEAmoRY4UX57@)YT+f7b2qCq5BL$k3s!>dQm3wq9S=lyP;d0?p?uUl9 zOwO)a<7#ZvR#a3}d_4c0=?K$Zxr$e|yziGBCUhPLS2N4}miOP9FkQ2Pz^bR|D^@$6 zTzB_s-RRB#$Qizn{K17UcNMp^ao!n(AyaGSD(Po4LU8gUZTdG`fw`bpkjo#g=T5fa zQy6J~PDVTzRjno%|6qVH-zktOS>mBz@=3Y}^gZxw^VIVnlZQ581765x1S<1e#SQ$r zI~8>y^n1h(S3;^7?cY{4`fITLuI=KPTZo%{_6xt;Cam<5$2FF2J?SXU_cMxcVViuG zc0A@Rv*s@}VkE--xX&mvJ@Vm$E0CYJ$4Y&)%Hu=*GZGIWGw(xN?!ne-@_y?ABZpZ9 z8-yycmjnjr+`sArL*g%!p75?}RgBc9RtqkLvv^uaAGdVtYaPNfDz|KZ!Pra+&9NGTD%RQt6#eO+e zEOE02no;Fmtu z-l6$dHwy7+KsD#r!OZ#`oCPcwN3x*c>8zN<)4`b}kxJT^X3aaONtdC>DCI$^Lnn7i zD5DY7J}57R)FNl~3EJ|JfT*TCvgvPtx&%y1!7rIxS$FCb>h z%=!O_=xFO}mET<6xtARU_4z_7S_!!pKQ4R>D)ISU)&C?hZRryD#9uFWBWYFp>7VV7 zD;nb>QA?)g=2voM>H=k$YR}2xMw)P!K~HJ!G5en8>*M!KT7R!3e5XB3?_9$9p)c$n zPJ47e* zo1XGg+9~2)+hHjKOxz)7)i1N;>hApYoysdP+Xvz)J6MydYh{slJhBi4r0j=Ul6O|m zE(&N~kqI4=7suY-NuT@?`K;sa?dPM6MN7Jymx?Fvcrw!eGUrjN^_9r(x*uI8)9A@2 zHd~a0NMYTUCyi^^UgLWI7?=Gl=5PX9oa75Ru6wf7^unWsUrTDS51QLBKb6X?@qTi~ zAVs)G(`>zYFpMrVD_&Sj$Xt!}J$DYKl;=fdM#0d%`q{X~Dx!gl+KaxEj<{dLwzn)5 ze-t5pZ}P@zLl&>>xe5QUaHkw-0^U(X{VPte&SI(!LCyjzMUaTfVw2?(P7S20pA|C7 zE55tXp_KQ{2v6sxwz64@>k;67MY(B?dtf(^mc+c;cx57p?-{!$;l9Vv`kb2aak3sU zuju;m#K5>c|T+~G$o3x*7@SrV(<@78)&l76Khw?2>s zJbYdTU}P^ew;pl4JQEI6<;7#+22P)qEBlx_sdHtCHf$wcow#p|Hjj?^nnLnEdoLqC zu?P%r#ZXr)z?77f9A6h)Kg6GTx4Y;GU+?-)%0NRLUWQlk+wkik6u_K(Pr#(m!7f?K}WMYODL8=98hEuHXf4YoX z4o7?)P2pt7cFy)b#W^Uz47=Q-Y*M?A$SbsRnBTy= zGu1ar2*aLP#t|Hb1+1rUD-);Cq{Xqi|gICMJ37fjihk&J+fuZ;OM)ZWek%Qz4vRAoIj>N>hzT> zh@Ph-uLtw!>!G4wDnIz_E127BUWNE9Or11(@wVw~7as#C@^J@mXv?58WjQn3jpD~U zA7G{?y+Ga!HRH7Ij`AOXQJ&x!P`*pijT7-Iw`HR zr@K+YS^q);a|Y@tb+(@6%Qp3-7B`R;6CoB5YKP^Q(s875|J<$G1}AVODN)0w%q>Mt zblzJ-#e63Zml^0wf3o1alh*@uY;mlHo@Kdbhl$Tv60v7QY@&sK*!Oy99wY3z^>*T4 zV@pR!#bMr_C-%u9Z!v`Fjn>9h%7R)k-;EnB8EM*lQS%E=;|p~!b&=BDZrzZISDoE_ z+c4_nCG?f~>!~WX4cF_XtZF$zdM##j$mK(ePEm&uAd-ODRW@W-#`d$}OkW8R45PJBO z#ZgH3!5e|OGKCeDs}Q5<+=q4iDl5Cnw)7FiTaP&g6tAr=Ec6T@%@r?ths$^;qI#{} z!k1j`RtXNhqwO)VobPF#cMBko6dd4i^FiTcuVnd3F!>T=VhBps_n6| zL3e&IIxh++-!i=Nw=it0W;(*xBt;5*mli#YnJeoE8|3>{D`WB;9g6ySNiKd8W3kf*iK=2mpdNYM%L9CsDs+jfK~wTt6uH%G0lzAI+!kpA}`pN z<3h#7GXVW+OKRk}xD`q)8<9oVjgSWa)=^Tg4VB?@2Vs=1s3`j@jy`LDjIRB#%LE+F zLZJ8HR}abrXak&%yQw@>2c7Qw)Be4}v6>=PC3)#xsa&$pE_@pcNBHi>RuByqnDT;u zTyKfFz!^It_o##XI6f-)<&z?LKQqhHvsQ12NyKBt{WZw#NGFxaEQrduA4^WSF8g^bvISWLG75? zTH79;$7vZFO{F@0tibyceD83{_jiHY8?FfqOyX7^tuY+^{13Trchp^uEwXy9vazj^ zbQ;*!zE>o4cB*^yv0k)t0;4s@ke)-Z$HIT;*jZTxz`eb_haeBrG50R_zpgTLr;sgQ zh&~FtRS&fZv@a$Ry+o}i0HJA4__7Hw^*)T-yfadQ=sD-zPD;+_6=c2Egts9`o8@le z`RwRgu8&B8JP;`)U$t61b{2@Aub9(v`8o^%K>!p$-#N{@`&1i%z&p|<=P!`f*<9wM z`^H|biULIE_B6R)Bx5dVo#Rg(bSPrZPnL-CO$K(r56pSY?dBmr6WuBSDE>9iCMo%z zejRjC82O-&jIdy6Zh#%51~&0ngfrWr)5M4(M|u-OT3XtZ3#bozarTlX1Xod7H{`_?Kc<-$V`PGCKvPrHh8duy`v;x_PM*WhG~`))vl4y1tF*bt z%#S45T>8KqyY@YHE6r86?Q#Z=%>FL<8ut(q27W{0`-mSoTp96pkPy?WzPoDrw^E@4oo51^?_AWblPrK# zs~IJfA61e9kKaiUMU;fA{MnveodHM}dClK?efBlQqh_|L>GX}YRQv=|tLVl~-cU08 z0gyqI7``)3Mx4njNnBA%KqPC_-)aEZ|2PW0uweD{X(b8K3|L8Ymj@xR=C4~RoZ?4z z$=caoR%gL_Mi6R(zEKL0QIXCWrTcc3!dyZce7}77Vy^b}68FQh(wngTxFecKAP9M~ z_TT@cB3lhh`~IffnoO5o?Er)I+S^;LX=WtwXX$TysSTYUSIQMPNy%V}YWs2=xN?N2cu8=|&CLc?P;2=#z_Q z-_x{?{+`@506N6^nB@H_cM-G_=3rgNEZqB>rV7bnKZHPek9^2Qk=57OA}fFJ{Gm>4 z`{JV1K+WXkU_Lk<^LX-<1LLdVm-2oj{Of)aZl(79T!!01~ zZ$d`B=k*V4Ew1<(*?u`@DzstYd)zsbO;0e4>Pf;pyCRB9-WE_%T@5hMJ2$JIR=jm) zFqw7$jAXC;6!*Awsv24!b7#;MI!iEZ{k*->egkRxEec_>haiTG4y#?>tfstE{x~kA z^tFeqkR3r6cDs-K`13;mvehp1-Os(}v#WOd1U;jMtd{p=>&B~Hfzmea`t0U)dvL}n zAN6n(omvDPVbJ$;Np@E-bMV^Z8@uq!Ov!*J#7KE903xRSx|s$b%T}baadP}Y@?a(q z4m$noNSRW3C|*UF#e?|#0MauV8FhH5od+;!GgEnUGRejZ0rdVl6$txNq?jkB=X>q6 zJ$85j2tpqK!~KwHF&7p{Y}1DN++ZcYwT`z%Kg|}0d6m|0J2x9}A1PmuTOg!8RgVK` z%fHvg!!tWm4!z;|CSS}6P)KdiO2Q*Ww8=783NC!IIBBs2!P6snu8eG{qJaj`goVY$ z@Z7Y9#o+Br83}r~tU==|Vco&E!sT$mhl3Rc>8GK?XJ=;$)|`{&cYQ5IthK^Ees7+J zfGaKA&Zd}JkEf=X{senvXwH7LG?0K=dS--YGeX->*L%ykxWZ!y*EX3}@#$buT&8>i zoY?Ad-W|^+2hHY~ZTI2(+*@5CQL{J-;q_76-p=A&3|c+2S)89Ix9Wtf$SP1fT(9;*~TZH3n3wUc?9SI@l z;T{%4w49e)@dd`GqAHJT;t|U2mg~p&jzkfu)f76VWH2*<`ZVhhHPd)nzP-(5BdP`$ zL|jY%RRIOUYbmto$9YY7(0FzaxyjnXq5%%D0Yjn#QZ1*v1`cgfwt;_fqZ}w8>Y!Uu zt^Z6$6~Kdi4}msa{dJUy(|#DGW;Z-74cC0)3w+HXAZv*29*j#<0GOmvN$T?lpiFZ+ z{Gd0U4<1fhw*h#9{DLJB=n~$`1V3HRs#Zf}>p|~ftz}EVuAU{x<*=qzxY;STAtvnR z2uT1`>hu$i@t0=d`k$D*WejE0ms=}!dZK=Eoo+;&`l`ai@8M-MPaj?N(v#U(M#1U(sClD1Onzj_X~ow;n06t4*l3@aVXE_lj>WsZ)WMbybDPivIUE{J_dmO2UWk_j z_i4v{E_^R$JWrmk@+7l@0-m7KFt_x}%T*Mx{C<=tr>7ZU-<{|p(ScN9@DD)+J(H7n@>x0T_Mv4C*onMR>Oz#O!ZH@x!vyx)?T zF6d>UraKFV_oB#Rz}53y%Yih+a+76vG&!LMD0}>V1SHDH!hjs~64L)WBB1A>CK=5; zd3$osfTSFj)Q8UPh^mT=1OF*<27ddx?|0egZ5A{FjUhXApV4i!C+)Eyd;=zqJ{=QU zUof@y0||5B^_C-)&EuM~y0fi1^;L79MA)%g0rja0ej@z8Rd+i6H_Qv+`ZBDbddv}p3 z{=zR!nha*c;aYaWVFSJrh^fhG0JE{`>pomqY$qasMMAn*R@S$(Y0ZIPcig3S;N@`t zS@_?3{_aS{3=hEDLcUn{E8tQ7j4eBqsR||dLsC+jCDF4*R{s}6eHE9SN4NkcRBt=I zM(m*7Z}1KhTjm1juP7;hlB^q4TGGl(UaM8*MZTQYjGRzxA4*3g{_z2>;L@~?s41CS zJv-i3(}Kb`qygaI2lxoGgiTBRL0D}!+VvN7_OTO;5+C0H&+2yK$S=z#yg>o=O%)Xt zPOHRk39E1Tw%N0c|EHGjVJM~h|5HjTo=$%C9=1qY&R>^D#PzOfJ(Fn+B`gFQKru=v zNP=>pUYw4tISr!JVd*+kFywS7P_{jb zN$#IA?l_6@)?O8S=E@&JYUa#`P@!&LETP%>uI^>g@)J;=JK|YcS!$Vz4F}B=UvN@- z3@N(Kbng)uBZp6iU^ZJl4Y6pP6cXtPZD&uGs7`uge(}=;WXl!)f|CE7uVjSut3(Iy zD=ffKmui83SC8w)q;)bUojlI_-a5C%Pkf%G!&a5PICbC+#`Ae@*Jz$*X~tC(JQ7F^ zITV*upUcV2y+R1GahPHsIl@FLO0U0$(s;EAj~$-GgZiV`jCX`)J%IFaSduci|DM7$ z8Lj#Y@X(xLfQ5{2HTB&^(T`-Y3vX!rAe9~`n(a{52V2w(>-j#YoyAxZ6OqExWYPmN zK5@k9pY0v4gPyf$L%W<|^>8?)-E;nA5!b#heUzaH`i}kHp7sN3ITRn?g3?ChQBHdU z0j0dV%S{APc=OtWkGFmu0a5Rj7R~VC684tFks27xd*(>b()xeP2h1;#Ta~F^QvV3i zac8%=|FfLN7~6U{B+bQzRo0{yVPhB)1PQP)EgDA{Dagmsy2&uFslQgPcIRsCb;;;| zSE|ck2}wfaz5+*BjY};(i0SaOv?0&WH4`J0-^#^wK$O3N*<6wBhz>$;FCI#ovdB`? zcxqw&-KTWyDZ>g{gigFRY5&WUDmSYiIdf;9ys1yXu~otERJ+=Hg(5R2U^VdG?IL_& z*oV$Aop(QA=iXl`&XhkW4ylw&;11>sSRw z55u5*0liT@K%{H}0wiCr#Id;VH~}cj5GzJ3b9-c}3V5|K>s9=24K$(606@lplM0g( zt>6&iV!2;MS&t)N6q|iQECbGn+K4j%ajeflE#|Boj*jQZdZ%8bYvw>XU(q?K%%C0B z=)F1=XN70ulN&5u3ENEG%d>`t9Ri)fXM3eb4}?GCHPs1GwLhz>_@w^7y6xW|`Tbto zc^pK2^S%|FJS56mu-fs`mFfo5`5fMW?#6T#N+INUE1uKEc1HI3wZ2ANMz`(a*J3A& zTWdPAAFK8s%JCML(WI4XU)G6c>y3T~^A`Lw#e`#RNOiff9}w2NE7p+uzPr5j`uN>N znYk*rC3o}4SpHn{Z4S#uYw-J2-Do*n%efx<>3?Gup5SwKx)H0eexZvg&Uw9W)l{MF zd>)_W@#D3{-5*RtH(kpcx#>o?=v#{~N@WG*ScWGOVu+=B$!(UK()zblg(t&B1tjXB zi&2rrtj)S_hw3OU+sHEzdfEQELF@vceCeVPAx>pR}2@FC$Bc{ z6F&fh?nSH}^EE_(VU(0M^bEYV3h-j2U*(`4v?xWN%-;877+6LuPx!$HZn)jgd0l!t6izt7ej$2=~Pd z%_18-p|NQxBoW**eLQzK;`t3WupZ(0_BJ7}9g0%rnL4If;InQC0N?l*Yx(zDDp>CL z&`T9T^GqhF@b=FY^;DLK(-?y$o1>gW=>z_+-59{4x9U)Lb-$g|yD?F!9Ai!kcR=Q> zc6cE3rEUv;JzA1gs9sk;U0=^hZCIQ;yTFm}iYNwcGo{R|5oO*|>)mvGrt@bqDUG&Q$SXhvD*4|{Zb;iv< zs@nD4nR%h|6U^!5-YikN%bi^IAd0Aiw*Ta!BqI9ReI=eIgOe@;sLgZ>vOuQQX9?4o zyCsKxg!-DYoVmkZ+LvWVbxZd9szXlB_rfKo>r1n%Vm=_h&LwQs!Mrh?fQy+f(WA-Fx{YoN2%Pkq1`sBLGq$hl3#o8My_- zu4x-+SPTbHv`tle|DSJrNF!7IH7_p^DrX&jisl)=C1ZP&kyfIL(?;2Qnw$Bxmm}@% zwD1(Ok%#;H%Uyef@5W`a&dD>=(WHgMvyrp$$O~#EB5Iqax5!gz)br^CJpLmPF1e?l zE${to$K=|mlVpah^!}hxi5sc+o#kU<3N-OYjY136t&|jf4C4KQb8EQZv_J!4|V%a~$)Bt@?2*J;mk(>Ifp=?%VdZi>!@WLre zvqzG6o`Ua|jc@aJKf4fCWX+D6C58v>Pe#SbSnR5qn~**Me9yyedyjBGs3wwJN+9%@zKj!QYQo3~p(~1B5By^=nA0@c==@fKixc*oX3BPMp}U?CPMN zfY&yU@fTi9JK>qGf_aMmL{<;;58a#eV9l_;yL&=dUkA$tfj*p1Ky(DQ=kN5T)HJDX zw40hVyqL8>3~rYmW&OCy#noVrtTrp{_cJ<<3731R??yjR?5>GSGx4)-K6~b)LXqh4 zP_z*{|C-QhKAu=_zzr&YgqWW{k0d>EK{kT)MEklSVm-z+)iKTfvrx;A^27BtX-`=^ z<&1aKCMkL!N$D8G7agtya7%mLoJJvU1<~EZqb2-0T5{a~`)zCt>8W8G|7)x0kH&y; zuyF&}DOYJ%fccpvM)B05)YzIyJZ9Lt*=n=)DCRp*U3W+ihWL|*#F_XSV9UT?^i#rf zZd(d58?}_d!3IK@b;Tw(F!p zU!g8Pm)f5VKHmF0N{%lNLo9K0kfsag`NJ$8JsP(sGIQxxHlKeNe?U84zyMVII24b_ zeR9k*X#m;3IBRuO6Z^#b3g(e|XFlW+I)V3BygDynfnXd} z&bRo>z?<^fOuw$D-jULApuHFRi7#noL&`=n^p||^_K#13 zx1W;JmKEj0{aS~;{=n{|I5)Y)(+M|;=ujs3Jp;=ou+w8+d&Mp0GECe00FG(!qS7q* zb*8rn7xD9*!4(OA*X`Rx$`HqGO%u#+ugt?Bw~H7NC1{DS2y^?u~WCr?3@& zg+4hZb`8dKamEo>sjd4J;ooH;rbg&EggCmYM?s*)yOfua-%BE zUPc;hC%LOhJR6bcrdN7dfATsH%rHD+{%6YX#uGT>B->PRYaSOEH7XkrOwQ#PRZvu| z8`kjPwQ|TY<=mAsWSmXh^n8w#^$uMP7HE)5G^;0LSA7ueyO?S>INAaEiZT$smi0(< z*pUq0{aj5}VWUXI7WMnEu|JAXRY*I0ld+9e_wvv!)7dlGT7CoFlY>54v+xvbeY6dc z9qp=7mwqJ+P-Ky8>b4AEtHXYfz{O2j$+<_UXQGdoT=F{$W#UF7*^4(@*bC`IM-3kgvT7l|1Y z8mN|6(Pr15D$)Fu9b~#hFep)Tz6L9Co>K1%;AkCV0S4szx z*`w_R8lPR%f7x4n2^aCObnoU@-zPJG>d5|7#H+R%1Kh4gMnzaa_{;4Ur&gxUC0Y@>Avui7~hiUC` z##NoS4N5C68U#Nce`px2n|`Vnq*xZ|HZIg;GoWN1OMOgsF?9BUKiZ0rT?UyXh3~%= zeu6`l+*jFP&T=pp9fhpq_wUv(veSQe@!Zr>tT@&6bSY)mx;khtj}CHkWM0?~%f!@G zCbB1%j68t+RJL9l6_^T$i}vQt&roYYbIb{5yC)K>t-&bSh_YkWItq>1kQ? z+_9<@Pjl%LmbRb9qyFx{vPBI8o6hUmcp8*@S`^ybOE0;yW^H;(#trd>o6?Us#$K0z zHdGK$i8A%N%L*Jho5`0jAq3|yE5Yyyh3K}NQ#tyf^Q<1n_u7ulsJYo$(cwXbF1Dw6 zN`VR4GRhW|T_ECyBcUC)5J1h1_RDya>j^8R5UIh7iqFx*${kt%U#oC4ou z8MqfJPF(&)nK;tPm^Nto^duKbKFZ7FZSvpV!^|YNxpz^9|L>!kZ}WuHv7M+lHe#<- zDd*CZfuqY-a`IIMVOvM=2PzuVnnT-vGs-AMn=H*khlKX3LkkOwJVyhJw3EKIv`XP= zV8))DsTX+F%wn#$RcRaZA~kRISJ~&A-!F z`%ysNme&}D{1LYxweD}@OxGD%8C{i;T$(@2leU)sOFHQXXX1NJ5jFx9l`7u zDQ24;sVaec+!Tg?epxl(Uuis5(Ao^JeM|c6LQ!NO*Ckk|99$nhH4g!NDDS=*0u%Z=>vGi6b9pH$J9zkSCLYdT2) zH`Y4DxoljZX8z!{mGRrDbBi0@PU#i@z##91|9@3^D7lr5?2OYW`n@WDl9K!-Blq=d z4N*|}QS0yhNb9M+jP@8|)onGU+f14qu33j)@n3UtXDWoxZ#b~nj1ph$zPs?DC%<3E zLYSyz%kguH`pSWvwsh5EK|^3I@0U?c=d({D3_GGAe{2wN*(JjZ{|M^a$1HMQtkN}v z-XP^yYzA>FUJBpBZ6;fuj~biOYkNLmv$nC`P*LM~{rB)7Xr=t9>%ExSFtvHq+~JEd zYxB-LoWG{{NAIwOkvN;5$NPyQG&@;nhc>U5H#>cE()UmU8*IR}PE7v~YAqRRiF*h@ zgczbUQ@WDYRtL7<5V{KpWNK(qz<}N z^@j4~XKy(y^R=W_Kw_%t{?fZ)A8$kdF`e5TAswn87h8TD#Kp4~Fx0u0T}PT%4I7(Y z%_}psRj*)(hbZrs-$_g98rt~KTloEgLH7N&F2W69I@nDx-M`%B?^~Dt?VP7dl)5P( zFDCBm>wCpcj_KQ^7Ilw2Trs8dS7u=Ae&!2iGRJ#bKZ-wF!DV)w)EdmgPx-@fxA8)I z!41r`*N)YLcX}dvBdelUxO!x-&Z-0)-sT3jHey?)pF`-kfSJjzg5jsxT>o3CEB`8& zsdyD+X!VIiqAP?)t#Y&C)t!%i&l7FjQ#D_HLzmnLF)5-Gtul%Xuz5!DGQG<1LZzi{ zMJg(aZ6Fyg;d}&niCsu4ixoH4`P8xWZtP;J;&kxf|7-6$qnc{AHiAg+O}e3lUNixP zgetv*3Re*6U=R@m>4?$?_2lp{d@Bx zIV)?Oz0W+e=b61{?>WQqyXD}*8p3A*~0z%5=~;r^O6 z_tv;Rl)kiBwRj{x!R;z(E=SbkkskdpS+$}SA3d><c>|L}BbWcQCQrAzXWwA%A&+}OXfXwT zA>a9U0VuhidlDiETlag+Z@Rv_xP7%#0M}{*9ECWB@1!6?D0VjF@~=I?yrK6_RoA}i z%2>toSxqp$4q1<)ddZ75f|Rg3phmVkR}(LuNTB+1O1hexVkZML)uJL8KV4rADvjzg z>D8&XNpb8TTVV{NoEc)_<7L?o@w)9iNJ%XnvNXC)r`xC@X_a7st;RXKB)OE`p6 z?Fcitr(n`}vgA=qM~RvB3VCYuIUfzh9}#k+S$WA|{u{J%`HH2y{@~1r zl`YfWH=JY2vJDt{s5aeM2YHX%<35upJRd=?Livt#vmp2fCmAJ;EOugc`kn)>yftFqQ0quOUUw`8UyhIaeDIkuhjT8Z|E+q3)|0~Z*OOsd@xA48o>j?P1FFEb z^?zDGvW1tHkMDLswY$I{PBB6DfSqC_zehj?Z8bHnMUm47m$BQid-l}pkz=E!nZ>@a zsa_SoHMmSylx}}aPDkUfqMI_n@~5i-z0Q+#Hn3nMG2r?hO@3<5V5FIbc&)wS)+Gyv zcSoLnAFxK@P666iFtyGXSyVpcbGjN#bA+p)GG;+CMI!=fyX#7V(Cr&pRhSu*If;MC z7@#D-`SAXceC_D-|Xqc3KP zc@Y8}4k|+U%xujEy98`Rfts*Q84imEs!Bw%o9@M1Z0>4B--g{Wdy{!s_*k5QmY_Jy za{gClItm2Q!uh8%EUNRZ5@#rq!_#UilDtkJUmYW1;oWJ@)$B%vl+>Y(I$4*Nyo{wp zMqu5Jl#S_z&C#+n8&2q^vI3f>Ki=Vn?n$P5L1M4{TJRs&T$Q~?qx;J_8eL#~WoRa^ z->?pQqIj-TA|t`STeh_T7kpQfzmXAIT?4M55#-pC^B+n&|gX#nvN=mGFCLw{}xVt;S)y5H#kXp{>5pWe| z525TRO-@|WcsNqB#yR_tUtjG-V6({j(Nz)9xWDbYLc+>*xyek*u^^scji>v4k6{R( z!$=$S39oewhJv|d!{ie@wE#n;<1kDlHi}YEpsCx z?MF@X{fR@Z#N-o6q=-0L-FlnuOrV6DT3W!Cd3-v@Y#q=A>taELBaQdBI_tEa z&fan0;HaWkCVaQX1@m`Y0h*9UCSnEr04~98QWA#CEf(u7dr}TI!4rQPyoxYU7j}xt zsmGEIhXw`*p_54?-}YwMgm%Io%z)_!8Tt2zl)}zM?B@*={8Tv8?#`|F!+8$nw`|4+ zN#*u_?!nWP3vdX#gJQ&6{oi~DV(ve*Vu@w~67oqdX zu7(S!dt#3=ZPS_GEjF&SAJtJ6eIP}+VL1idAI(XhgJXtqyAPeRuE(^Sv8K7FDk1`S ze#$4I3@@f{wg+q0_1DVpbwf3+qy=gEYAZGT9-={&9UG6IED*Ckb2%Z5rNg8;I0)yL&}$dj?2M2WP>Ls z>3u#Hf=RD37?Hg5YKTk{cg4xwYmwiHd^XDo^ANi;jZz12K>((DIHL|CI;jgH~WJ~U6J<)&q3WLpaKVFG?W%jc{ zrq{jNasZU<*Gg#TKS^7+uX1kr)DM~Ifc5T4D(0%-_(G6dvpX}2RMlT^RxJ9?XvjPt z0zhgLq(5cL?{bCX7bB0+JX!l(+K+;RPZ$H6(S(Iqek9*l;HB_dxk4#fiauB%N+c$R zijA4whjQQ{-T0oBm6dz!TtEc*s2>j`;)XLXZDcD42aMr+HfQQpG;@V+<-h~6jcZBk zQ@E@mV`f-?%cz@;!h>)ANv%(?<|UJc2@h?Ac=l%_gIb=uIB_h$ca4NNqvO8`vzhR9Qin2(wk2H3Fv z647FR1V3xL#F(_ySIn-1hjrNqjV|pZa=h|>Q-TAtdTOKTT?jQH0PRv7asC=*(0ymO zndS@z=D6s)oWJhp&=!r-$ZvmQ0CWPyp?@t;1A_j9P+Q1a<2Gzx-mI^H`!pK+QvtdNp77}VuwUx#2(Owj zE%P_Rtnf-Ge5<>^ztLt%>ztvf<$>CB-h@&*AHFTu33m?<Z!ULWJ${l;ZGJL^Kc|e3vxVTtnYRpJ9Xg!(r(a1Xt`*z&7m*XQ@bfQZ~75!p}-c?!i?aWQ!ec)}i|X^`3alyop56`R+P->YUj_fr9uFpt?UEh$^5T z!0o?^@NI1f^tJ8J`Z8?5S*uciA5)Nw7!3i9Cy$Vp*GpM=B-UUp7LmP+*e-_Jl!B`> z&r8r%j|PU_J{nTuvd^NjSvpytMJ|+9n&`9qKr4)Fu@+k{X;B$gIm-E$_W6XVlZ!>r z)PRmnaklEJM8PoHv-y2XH=osdsEiWCzy}lqO&lLL$Lvc}-QwayN_z1tIkScP;M^ATOC*lfH6F03@)TGox(- zQ$eepfE>^4EL3md-fK};c5F@wmrXAaPH23A1=O0*-F$tqwPBOSE$=0PH+CFDXLs3!dv9LGAmf;sKMT<%wN^b zPu;B^MD-B}kZ!mL@ID#RWw0K$t6rQXaXNsJk@F%lu2|PNk|M%<23+)QB_T$-HthbHn|5t zk4o)cv8Zew4-7dvO6len2k}C{ad?3iqc<^%7e45fFLisVo1We;OZ6AG1b%R$nExGf zK5@P&fnN`BiGGbuN69fGJ$42*0i}OrnNiOHQ*_wT`-$ckkR%Sye?EGaZWPOx3%l?J zueyUi42+hny}F!0ZeuWP0=(XEMzf;X^+4f|mT=XFheMDdj(rW(2+?5#9(nPcLeS}z zF{9bm`plIZ&%Zg{3aegY5<{l>Z)WlV`7GT{)*U2^|K4n53P<3gn-McH+XMJU4vf!E zt>-(H`Zb=Xamq*G Date: Tue, 29 Apr 2025 12:55:34 +0530 Subject: [PATCH 10/45] fix: css + build --- .../i18n/src/locales/en/translations.json | 12 +++++----- .../settings/account/activity/page.tsx | 2 +- .../workspace/delete-workspace-section.tsx | 2 +- .../notification/email-notification-form.tsx | 22 +++++-------------- .../settings/archive-project/selection.tsx | 2 +- .../settings/delete-project-section.tsx | 2 +- web/core/components/settings/sidebar/root.tsx | 2 +- 7 files changed, 17 insertions(+), 27 deletions(-) diff --git a/packages/i18n/src/locales/en/translations.json b/packages/i18n/src/locales/en/translations.json index c812a8ce342..0630f87d4aa 100644 --- a/packages/i18n/src/locales/en/translations.json +++ b/packages/i18n/src/locales/en/translations.json @@ -1420,29 +1420,29 @@ } }, "api_tokens": { - "title": "API Tokens", - "add_token": "Add API token", + "title": "Personal Access Tokens", + "add_token": "Add personal access token", "create_token": "Create token", "never_expires": "Never expires", "generate_token": "Generate token", "generating": "Generating", "delete": { - "title": "Delete API token", + "title": "Delete personal access token", "description": "Any application using this token will no longer have the access to Plane data. This action cannot be undone.", "success": { "title": "Success!", - "message": "The API token has been successfully deleted" + "message": "The token has been successfully deleted" }, "error": { "title": "Error!", - "message": "The API token could not be deleted" + "message": "The token could not be deleted" } } } }, "empty_state": { "api_tokens": { - "title": "No API tokens created", + "title": "No personal access tokens created", "description": "Plane APIs can be used to integrate your data in Plane with any external system. Create a token to get started." }, "webhooks": { diff --git a/web/app/[workspaceSlug]/(settings)/settings/account/activity/page.tsx b/web/app/[workspaceSlug]/(settings)/settings/account/activity/page.tsx index 6eeb2cccd7e..79d3eeefb0c 100644 --- a/web/app/[workspaceSlug]/(settings)/settings/account/activity/page.tsx +++ b/web/app/[workspaceSlug]/(settings)/settings/account/activity/page.tsx @@ -62,7 +62,7 @@ const ProfileActivityPage = observer(() => { <> - {activityPages} +
    {activityPages}
    {isLoadMoreVisible && (
    + + ) : ( + "-" + )} + + ) : ( +
    Expired
    + ), + }, + ]; + return columns; +}; diff --git a/web/core/components/exporter/export-form.tsx b/web/core/components/exporter/export-form.tsx new file mode 100644 index 00000000000..b108d2e4c5e --- /dev/null +++ b/web/core/components/exporter/export-form.tsx @@ -0,0 +1,172 @@ +import { useState } from "react"; +import { intersection } from "lodash"; +import { Controller, useForm } from "react-hook-form"; +import { EUserPermissions, EUserPermissionsLevel, EXPORTERS_LIST } from "@plane/constants"; +import { useTranslation } from "@plane/i18n"; +import { Button, CustomSearchSelect, CustomSelect, TOAST_TYPE, setToast } from "@plane/ui"; +import { useProject, useUser, useUserPermissions } from "@/hooks/store"; +import { ProjectExportService } from "@/services/project/project-export.service"; + +type Props = { + workspaceSlug: string; + provider: string | null; + mutateServices: () => void; +}; +type FormData = { + provider: (typeof EXPORTERS_LIST)[0]; + project: string[]; + multiple: boolean; +}; +const projectExportService = new ProjectExportService(); + +export const ExportForm = (props: Props) => { + // props + const { workspaceSlug, mutateServices } = props; + // states + const [exportLoading, setExportLoading] = useState(false); + // store hooks + const { allowPermissions } = useUserPermissions(); + const { data: user, canPerformAnyCreateAction, projectsWithCreatePermissions } = useUser(); + const { workspaceProjectIds, getProjectById } = useProject(); + const { t } = useTranslation(); + // form + const { handleSubmit, control } = useForm({ + defaultValues: { + provider: EXPORTERS_LIST[0], + project: [], + multiple: false, + }, + }); + // derived values + const hasProjects = workspaceProjectIds && workspaceProjectIds.length > 0; + const isAdmin = allowPermissions([EUserPermissions.ADMIN], EUserPermissionsLevel.WORKSPACE); + const wsProjectIdsWithCreatePermisisons = projectsWithCreatePermissions + ? intersection(workspaceProjectIds, Object.keys(projectsWithCreatePermissions)) + : []; + const options = wsProjectIdsWithCreatePermisisons?.map((projectId) => { + const projectDetails = getProjectById(projectId); + + return { + value: projectDetails?.id, + query: `${projectDetails?.name} ${projectDetails?.identifier}`, + content: ( +
    + {projectDetails?.identifier} + {projectDetails?.name} +
    + ), + }; + }); + + // handlers + const ExportCSVToMail = async (formData: FormData) => { + console.log(formData); + setExportLoading(true); + if (workspaceSlug && user) { + const payload = { + provider: formData.provider.provider, + project: formData.project, + multiple: formData.project.length > 1, + }; + await projectExportService + .csvExport(workspaceSlug as string, payload) + .then(() => { + mutateServices(); + setExportLoading(false); + setToast({ + type: TOAST_TYPE.SUCCESS, + title: t("workspace_settings.settings.exports.modal.toasts.success.title"), + message: t("workspace_settings.settings.exports.modal.toasts.success.message", { + entity: + formData.provider.provider === "csv" + ? "CSV" + : formData.provider.provider === "xlsx" + ? "Excel" + : formData.provider.provider === "json" + ? "JSON" + : "", + }), + }); + }) + .catch(() => { + setExportLoading(false); + setToast({ + type: TOAST_TYPE.ERROR, + title: t("error"), + message: t("workspace_settings.settings.exports.modal.toasts.error.message"), + }); + }); + } + }; + return ( + +
    + {/* Project Selector */} +
    +
    + {t("workspace_settings.settings.exports.exporting_projects")} +
    + ( + onChange(val)} + options={options} + input + label={ + value && value.length > 0 + ? value + .map((projectId) => { + const projectDetails = getProjectById(projectId); + + return projectDetails?.identifier; + }) + .join(", ") + : "All projects" + } + optionsClassName="max-w-48 sm:max-w-[532px]" + placement="bottom-end" + multiple + /> + )} + /> +
    + {/* Format Selector */} +
    +
    + {t("workspace_settings.settings.exports.format")} +
    + ( + + {EXPORTERS_LIST.map((service) => ( + + {t(service.i18n_title)} + + ))} + + )} + /> +
    +
    +
    + +
    + + ); +}; diff --git a/web/core/components/exporter/guide.tsx b/web/core/components/exporter/guide.tsx index 1dfd9001076..024cd059ebe 100644 --- a/web/core/components/exporter/guide.tsx +++ b/web/core/components/exporter/guide.tsx @@ -1,221 +1,38 @@ "use client"; -import { useEffect, useState } from "react"; +import { useState } from "react"; import { observer } from "mobx-react"; -import Image from "next/image"; -import Link from "next/link"; import { useParams, useSearchParams } from "next/navigation"; -import useSWR, { mutate } from "swr"; -// icons -import { MoveLeft, MoveRight, RefreshCw } from "lucide-react"; -// plane imports -import { EXPORTERS_LIST, EUserPermissions, EUserPermissionsLevel } from "@plane/constants"; -import { useTranslation } from "@plane/i18n"; -import { Button } from "@plane/ui"; -// components -import { DetailedEmptyState } from "@/components/empty-state"; -import { Exporter, SingleExport } from "@/components/exporter"; -import { ImportExportSettingsLoader } from "@/components/ui"; -// constants +import { mutate } from "swr"; import { EXPORT_SERVICES_LIST } from "@/constants/fetch-keys"; -// hooks -import { useProject, useUser, useUserPermissions } from "@/hooks/store"; -import { useAppRouter } from "@/hooks/use-app-router"; -import { useResolvedAssetPath } from "@/hooks/use-resolved-asset-path"; -// services images -import CSVLogo from "@/public/services/csv.svg"; -import ExcelLogo from "@/public/services/excel.svg"; -import JSONLogo from "@/public/services/json.svg"; -// services -import { IntegrationService } from "@/services/integrations"; - -const integrationService = new IntegrationService(); - -const getExporterLogo = (provider: string) => { - switch (provider) { - case "csv": - return CSVLogo; - case "excel": - return ExcelLogo; - case "xlsx": - return ExcelLogo; - case "json": - return JSONLogo; - default: - return ""; - } -}; +import { ExportForm } from "./export-form"; +import { PrevExports } from "./prev-exports"; const IntegrationGuide = observer(() => { - // states - const [refreshing, setRefreshing] = useState(false); - const per_page = 10; - const [cursor, setCursor] = useState(`10:0:0`); // router - const router = useAppRouter(); const { workspaceSlug } = useParams(); const searchParams = useSearchParams(); const provider = searchParams.get("provider"); - // plane hooks - const { t } = useTranslation(); - // store hooks - const { data: currentUser, canPerformAnyCreateAction } = useUser(); - const { allowPermissions } = useUserPermissions(); - const { workspaceProjectIds } = useProject(); - // derived values - const resolvedPath = useResolvedAssetPath({ basePath: "/empty-state/workspace-settings/exports" }); - - const { data: exporterServices } = useSWR( - workspaceSlug && cursor ? EXPORT_SERVICES_LIST(workspaceSlug as string, cursor, `${per_page}`) : null, - workspaceSlug && cursor - ? () => integrationService.getExportsServicesList(workspaceSlug as string, cursor, per_page) - : null - ); - - const handleRefresh = () => { - setRefreshing(true); - mutate(EXPORT_SERVICES_LIST(workspaceSlug as string, `${cursor}`, `${per_page}`)).then(() => setRefreshing(false)); - }; - - const handleCsvClose = () => { - router.replace(`/${workspaceSlug?.toString()}/settings/exports`); - }; - - const hasProjects = workspaceProjectIds && workspaceProjectIds.length > 0; - const isAdmin = allowPermissions([EUserPermissions.ADMIN], EUserPermissionsLevel.WORKSPACE); - - useEffect(() => { - const interval = setInterval(() => { - if (exporterServices?.results?.some((service) => service.status === "processing")) { - handleRefresh(); - } else { - clearInterval(interval); - } - }, 3000); - - return () => clearInterval(interval); - }, [exporterServices]); + // state + const per_page = 10; + const [cursor, setCursor] = useState(`10:0:0`); return ( <>
    <> -
    - {EXPORTERS_LIST.map((service) => ( -
    -
    -
    -
    - {`${t(service.i18n_title)} -
    -
    -

    {t(service.i18n_title)}

    -

    {t(service.i18n_description)}

    -
    -
    -
    - - - - - -
    -
    -
    - ))} -
    -
    -
    -
    -

    - {t("workspace_settings.settings.exports.previous_exports")} -

    - - -
    -
    - - -
    -
    -
    - {exporterServices && exporterServices?.results ? ( - exporterServices?.results?.length > 0 ? ( -
    -
    - {exporterServices?.results.map((service) => ( - - ))} -
    -
    - ) : ( -
    - -
    - ) - ) : ( - - )} -
    -
    - - {provider && ( - handleCsvClose()} - data={null} - user={currentUser || null} + mutate(EXPORT_SERVICES_LIST(workspaceSlug as string, `${cursor}`, `${per_page}`))} /> - )} + +
    ); diff --git a/web/core/components/exporter/prev-exports.tsx b/web/core/components/exporter/prev-exports.tsx new file mode 100644 index 00000000000..ce246a3fe54 --- /dev/null +++ b/web/core/components/exporter/prev-exports.tsx @@ -0,0 +1,135 @@ +import { useEffect, useState } from "react"; +import { observer } from "mobx-react"; +import useSWR, { mutate } from "swr"; +import { MoveLeft, MoveRight, RefreshCw } from "lucide-react"; +import { useTranslation } from "@plane/i18n"; +import { IExportData } from "@plane/types"; +import { Table } from "@plane/ui"; +import { EXPORT_SERVICES_LIST } from "@/constants/fetch-keys"; +import { useResolvedAssetPath } from "@/hooks/use-resolved-asset-path"; +import { IntegrationService } from "@/services/integrations"; +import { DetailedEmptyState } from "../empty-state"; +import { ImportExportSettingsLoader } from "../ui"; +import { useExportColumns } from "./column"; + +const integrationService = new IntegrationService(); + +type Props = { + workspaceSlug: string; + cursor: string | undefined; + per_page: number; + setCursor: (cursor: string) => void; +}; +type RowData = IExportData; +export const PrevExports = observer((props: Props) => { + // props + const { workspaceSlug, cursor, per_page, setCursor } = props; + // state + const [refreshing, setRefreshing] = useState(false); + // hooks + const { t } = useTranslation(); + const columns = useExportColumns(); + const resolvedPath = useResolvedAssetPath({ basePath: "/empty-state/workspace-settings/exports" }); + + const { data: exporterServices } = useSWR( + workspaceSlug && cursor ? EXPORT_SERVICES_LIST(workspaceSlug as string, cursor, `${per_page}`) : null, + workspaceSlug && cursor + ? () => integrationService.getExportsServicesList(workspaceSlug as string, cursor, per_page) + : null + ); + + const handleRefresh = () => { + setRefreshing(true); + mutate(EXPORT_SERVICES_LIST(workspaceSlug as string, `${cursor}`, `${per_page}`)).then(() => setRefreshing(false)); + }; + + useEffect(() => { + const interval = setInterval(() => { + if (exporterServices?.results?.some((service) => service.status === "processing")) { + handleRefresh(); + } else { + clearInterval(interval); + } + }, 3000); + + return () => clearInterval(interval); + }, [exporterServices]); + + return ( +
    +
    +
    +

    + {t("workspace_settings.settings.exports.previous_exports")} +

    + + +
    +
    + + +
    +
    + +
    + {exporterServices && exporterServices?.results ? ( + exporterServices?.results?.length > 0 ? ( +
    +
    + rowData?.id ?? ""} + tHeadClassName="border-b border-custom-border-100" + thClassName="text-left font-medium divide-x-0 text-custom-text-400" + tBodyClassName="divide-y-0" + tBodyTrClassName="divide-x-0 p-4 h-[50px] text-custom-text-200" + tHeadTrClassName="divide-x-0" + /> + + + ) : ( +
    + +
    + ) + ) : ( + + )} + + + ); +}); From 75f6ea7e97062bc6cbbdb28088dfdb701ce14569 Mon Sep 17 00:00:00 2001 From: gakshita Date: Wed, 30 Apr 2025 16:58:03 +0530 Subject: [PATCH 13/45] fix: external scrolling allowed --- web/app/[workspaceSlug]/(settings)/layout.tsx | 2 +- .../(settings)/settings/(workspace)/exports/page.tsx | 2 +- .../(settings)/settings/(workspace)/members/page.tsx | 2 +- .../(settings)/settings/(workspace)/webhooks/page.tsx | 2 +- .../(settings)/settings/account/api-tokens/page.tsx | 2 +- .../(settings)/settings/account/security/page.tsx | 2 +- .../settings/project/[projectId]/automations/page.tsx | 2 +- .../settings/project/[projectId]/estimates/page.tsx | 4 +--- .../(settings)/settings/project/[projectId]/features/page.tsx | 2 +- .../(settings)/settings/project/[projectId]/labels/page.tsx | 2 +- .../(settings)/settings/project/[projectId]/members/page.tsx | 2 +- .../(settings)/settings/project/[projectId]/page.tsx | 2 +- web/core/components/profile/form.tsx | 4 ++-- .../profile/notification/email-notification-form.tsx | 2 +- .../components/project/settings/archive-project/selection.tsx | 2 +- .../components/project/settings/delete-project-section.tsx | 2 +- web/core/components/settings/content-wrapper.tsx | 2 +- web/core/components/workspace/settings/workspace-details.tsx | 2 +- 18 files changed, 19 insertions(+), 21 deletions(-) diff --git a/web/app/[workspaceSlug]/(settings)/layout.tsx b/web/app/[workspaceSlug]/(settings)/layout.tsx index 48769fcaae0..9c0503ebe82 100644 --- a/web/app/[workspaceSlug]/(settings)/layout.tsx +++ b/web/app/[workspaceSlug]/(settings)/layout.tsx @@ -13,7 +13,7 @@ export default function SettingsLayout({ children }: { children: React.ReactNode {/* Header */} {/* Content */} - {children} + {children} diff --git a/web/app/[workspaceSlug]/(settings)/settings/(workspace)/exports/page.tsx b/web/app/[workspaceSlug]/(settings)/settings/(workspace)/exports/page.tsx index 1b63406de34..dd984e1cc6e 100644 --- a/web/app/[workspaceSlug]/(settings)/settings/(workspace)/exports/page.tsx +++ b/web/app/[workspaceSlug]/(settings)/settings/(workspace)/exports/page.tsx @@ -36,7 +36,7 @@ const ExportsPage = observer(() => { <>
    diff --git a/web/app/[workspaceSlug]/(settings)/settings/(workspace)/members/page.tsx b/web/app/[workspaceSlug]/(settings)/settings/(workspace)/members/page.tsx index 8be7a9d22f5..35db48408db 100644 --- a/web/app/[workspaceSlug]/(settings)/settings/(workspace)/members/page.tsx +++ b/web/app/[workspaceSlug]/(settings)/settings/(workspace)/members/page.tsx @@ -107,7 +107,7 @@ const WorkspaceMembersSettingsPage = observer(() => { onSubmit={handleWorkspaceInvite} />
    diff --git a/web/app/[workspaceSlug]/(settings)/settings/(workspace)/webhooks/page.tsx b/web/app/[workspaceSlug]/(settings)/settings/(workspace)/webhooks/page.tsx index 2623660da88..e5ea763b035 100644 --- a/web/app/[workspaceSlug]/(settings)/settings/(workspace)/webhooks/page.tsx +++ b/web/app/[workspaceSlug]/(settings)/settings/(workspace)/webhooks/page.tsx @@ -56,7 +56,7 @@ const WebhooksListPage = observer(() => { return ( <> -
    +
    { <> setIsCreateTokenModalOpen(false)} /> -
    +
    {tokens.length > 0 ? ( <>
    diff --git a/web/app/[workspaceSlug]/(settings)/settings/account/security/page.tsx b/web/app/[workspaceSlug]/(settings)/settings/account/security/page.tsx index d3febe3fa00..b9cdf9d2687 100644 --- a/web/app/[workspaceSlug]/(settings)/settings/account/security/page.tsx +++ b/web/app/[workspaceSlug]/(settings)/settings/account/security/page.tsx @@ -10,7 +10,7 @@ import { Button, Input, TOAST_TYPE, setToast } from "@plane/ui"; // components import { PasswordStrengthMeter } from "@/components/account"; import { PageHead } from "@/components/core"; -import { ProfileSettingContentHeader, ProfileSettingContentWrapper } from "@/components/profile"; +import { ProfileSettingContentHeader } from "@/components/profile"; // helpers import { authErrorHandler } from "@/helpers/authentication.helper"; import { E_PASSWORD_STRENGTH, getPasswordStrength } from "@/helpers/password.helper"; diff --git a/web/app/[workspaceSlug]/(settings)/settings/project/[projectId]/automations/page.tsx b/web/app/[workspaceSlug]/(settings)/settings/project/[projectId]/automations/page.tsx index 5fc536d91be..dfc49e45222 100644 --- a/web/app/[workspaceSlug]/(settings)/settings/project/[projectId]/automations/page.tsx +++ b/web/app/[workspaceSlug]/(settings)/settings/project/[projectId]/automations/page.tsx @@ -49,7 +49,7 @@ const AutomationSettingsPage = observer(() => { return ( <> -
    +

    {t("project_settings.automations.label")}

    diff --git a/web/app/[workspaceSlug]/(settings)/settings/project/[projectId]/estimates/page.tsx b/web/app/[workspaceSlug]/(settings)/settings/project/[projectId]/estimates/page.tsx index 0a19713e880..6ce66fb94fb 100644 --- a/web/app/[workspaceSlug]/(settings)/settings/project/[projectId]/estimates/page.tsx +++ b/web/app/[workspaceSlug]/(settings)/settings/project/[projectId]/estimates/page.tsx @@ -29,9 +29,7 @@ const EstimatesSettingsPage = observer(() => { return ( <> -
    +
    { return ( <> -
    +
    { return ( <> -
    +
    diff --git a/web/app/[workspaceSlug]/(settings)/settings/project/[projectId]/members/page.tsx b/web/app/[workspaceSlug]/(settings)/settings/project/[projectId]/members/page.tsx index 9deaef126ad..e603d9ff4a6 100644 --- a/web/app/[workspaceSlug]/(settings)/settings/project/[projectId]/members/page.tsx +++ b/web/app/[workspaceSlug]/(settings)/settings/project/[projectId]/members/page.tsx @@ -29,7 +29,7 @@ const MembersSettingsPage = observer(() => { return ( <> -
    +
    diff --git a/web/app/[workspaceSlug]/(settings)/settings/project/[projectId]/page.tsx b/web/app/[workspaceSlug]/(settings)/settings/project/[projectId]/page.tsx index a0ecfff70e4..e8841d4b021 100644 --- a/web/app/[workspaceSlug]/(settings)/settings/project/[projectId]/page.tsx +++ b/web/app/[workspaceSlug]/(settings)/settings/project/[projectId]/page.tsx @@ -64,7 +64,7 @@ const ProjectSettingsPage = observer(() => { )} -
    +
    {currentProjectDetails && workspaceSlug && projectId && !isLoading ? ( { /> )} /> -
    +
    {
    - + {({ open }) => ( <> diff --git a/web/core/components/profile/notification/email-notification-form.tsx b/web/core/components/profile/notification/email-notification-form.tsx index 3c8754d1097..9aab9a92fea 100644 --- a/web/core/components/profile/notification/email-notification-form.tsx +++ b/web/core/components/profile/notification/email-notification-form.tsx @@ -53,7 +53,7 @@ export const EmailNotificationForm: FC = (props) => return ( <> {/* Notification Settings */} -
    +
    {t("property_changes")}
    diff --git a/web/core/components/project/settings/archive-project/selection.tsx b/web/core/components/project/settings/archive-project/selection.tsx index 5b4568bc65c..60963ead76b 100644 --- a/web/core/components/project/settings/archive-project/selection.tsx +++ b/web/core/components/project/settings/archive-project/selection.tsx @@ -35,7 +35,7 @@ export const ArchiveProjectSelection: React.FC = (props) => { >
    - + Archiving a project will unlist your project from your side navigation although you will still be able to access it from your projects page. You can restore the project or delete it whenever you want. diff --git a/web/core/components/project/settings/delete-project-section.tsx b/web/core/components/project/settings/delete-project-section.tsx index 78df0da2629..d425af53e42 100644 --- a/web/core/components/project/settings/delete-project-section.tsx +++ b/web/core/components/project/settings/delete-project-section.tsx @@ -36,7 +36,7 @@ export const DeleteProjectSection: React.FC = (props) => >
    - + When deleting a project, all of the data and resources within that project will be permanently removed and cannot be recovered. diff --git a/web/core/components/settings/content-wrapper.tsx b/web/core/components/settings/content-wrapper.tsx index 474a196476a..028c83014bb 100644 --- a/web/core/components/settings/content-wrapper.tsx +++ b/web/core/components/settings/content-wrapper.tsx @@ -1,5 +1,5 @@ import { ReactNode } from "react"; export const SettingsContentWrapper = ({ children }: { children: ReactNode }) => ( -
    {children}
    +
    {children}
    ); diff --git a/web/core/components/workspace/settings/workspace-details.tsx b/web/core/components/workspace/settings/workspace-details.tsx index 2b7b8d9494b..39cd7f124d3 100644 --- a/web/core/components/workspace/settings/workspace-details.tsx +++ b/web/core/components/workspace/settings/workspace-details.tsx @@ -155,7 +155,7 @@ export const WorkspaceDetails: FC = observer(() => { /> )} /> -
    +
    +
    + {/* path */} +
    + + {t(activePath)} +
    +
    +
    + ); +}); diff --git a/web/core/components/settings/project/sidebar/nav-item-children.tsx b/web/core/components/settings/project/sidebar/nav-item-children.tsx index 3ce7b7ab6bb..7eaf7f71063 100644 --- a/web/core/components/settings/project/sidebar/nav-item-children.tsx +++ b/web/core/components/settings/project/sidebar/nav-item-children.tsx @@ -6,7 +6,7 @@ import { EUserPermissionsLevel } from "@plane/constants"; import { useTranslation } from "@plane/i18n"; import { Loader } from "@plane/ui"; import { cn } from "@/helpers/common.helper"; -import { useProject, useUserPermissions } from "@/hooks/store"; +import { useProject, useUserPermissions, useUserSettings } from "@/hooks/store"; import { PROJECT_SETTINGS_LINKS } from "@/plane-web/constants/project"; export const NavItemChildren = observer((props: { projectId: string }) => { @@ -17,6 +17,7 @@ export const NavItemChildren = observer((props: { projectId: string }) => { const { getProjectById } = useProject(); const { allowPermissions } = useUserPermissions(); const { t } = useTranslation(); + const { toggleSidebar } = useUserSettings(); // derived values const currentProject = getProjectById(projectId); @@ -48,7 +49,11 @@ export const NavItemChildren = observer((props: { projectId: string }) => { workspaceSlug.toString(), projectId.toString() ) && ( - + toggleSidebar(true)} + >
    { - const { workspaceSlug } = props; + const { isMobile = false } = props; + const { workspaceSlug } = useParams(); // store hooks const { joinedProjectIds, projectMap } = useProject(); @@ -26,6 +27,7 @@ export const ProjectSettingsSidebar = observer((props: TProjectSettingsSidebarPr return ( { const { t } = useTranslation(); // state const [isExpanded, setIsExpanded] = useState(projectId === setting.key); + // hooks + const { toggleSidebar } = useUserSettings(); // derived const buttonClass = cn( "flex w-full items-center px-2 py-1.5 rounded text-custom-text-200 justify-between", @@ -64,7 +67,7 @@ const SettingsSidebarNavItem = (props: TSettingsSidebarNavItemProps) => { {renderChildren ? (
    {titleElement}
    ) : ( - + toggleSidebar(true)}> {titleElement} )} diff --git a/web/core/components/settings/sidebar/root.tsx b/web/core/components/settings/sidebar/root.tsx index dc8ac9104c2..3e8fb8d296c 100644 --- a/web/core/components/settings/sidebar/root.tsx +++ b/web/core/components/settings/sidebar/root.tsx @@ -1,8 +1,11 @@ +import { observer } from "mobx-react"; import { useTranslation } from "@plane/i18n"; +import { cn } from "@plane/utils"; import { SettingsSidebarHeader } from "./header"; import SettingsSidebarNavItem, { TSettingItem } from "./nav-item"; interface SettingsSidebarProps { + isMobile?: boolean; customHeader?: React.ReactNode; categories: string[]; groupedSettings: { @@ -16,8 +19,9 @@ interface SettingsSidebarProps { renderChildren?: (key: string) => React.ReactNode; } -export const SettingsSidebar = (props: SettingsSidebarProps) => { +export const SettingsSidebar = observer((props: SettingsSidebarProps) => { const { + isMobile = false, customHeader, categories, groupedSettings, @@ -28,9 +32,16 @@ export const SettingsSidebar = (props: SettingsSidebarProps) => { appendItemsToTitle, renderChildren, } = props; + // hooks const { t } = useTranslation(); + return ( -
    +
    {/* Header */} {/* Navigation */} @@ -61,4 +72,4 @@ export const SettingsSidebar = (props: SettingsSidebarProps) => {
    ); -}; +}); diff --git a/web/core/store/user/settings.store.ts b/web/core/store/user/settings.store.ts index 8d8419f3971..857a8859774 100644 --- a/web/core/store/user/settings.store.ts +++ b/web/core/store/user/settings.store.ts @@ -20,14 +20,17 @@ export interface IUserSettingsStore { error: TError | undefined; data: IUserSettings; canUseLocalDB: boolean; + sidebarCollapsed: boolean; // actions fetchCurrentUserSettings: () => Promise; toggleLocalDB: (workspaceSlug: string | undefined, projectId: string | undefined) => Promise; + toggleSidebar: (collapsed?: boolean) => void; } export class UserSettingsStore implements IUserSettingsStore { // observables isLoading: boolean = false; + sidebarCollapsed: boolean = true; error: TError | undefined = undefined; data: IUserSettings = { id: undefined, @@ -53,14 +56,20 @@ export class UserSettingsStore implements IUserSettingsStore { error: observable, data: observable, canUseLocalDB: observable.ref, + sidebarCollapsed: observable.ref, // actions fetchCurrentUserSettings: action, toggleLocalDB: action, + toggleSidebar: action, }); // services this.userService = new UserService(); } + toggleSidebar = (collapsed?: boolean) => { + this.sidebarCollapsed = collapsed ?? !this.sidebarCollapsed; + }; + toggleLocalDB = async (workspaceSlug: string | undefined, projectId: string | undefined) => { const currentLocalDBValue = this.canUseLocalDB; try { From b2e939201569e6524433caa195fb16ebc9fbdd64 Mon Sep 17 00:00:00 2001 From: gakshita Date: Tue, 6 May 2025 16:18:25 +0530 Subject: [PATCH 20/45] fix: profile redirections --- apiserver/plane/app/views/workspace/base.py | 13 ++++++++++++ .../workspace/delete-workspace-form.tsx | 11 +++++----- .../workspace/settings/members-list-item.tsx | 9 +++++--- .../layouts/auth-layout/workspace-wrapper.tsx | 15 +++++++++---- .../lib/wrappers/authentication-wrapper.tsx | 2 +- web/core/store/workspace/index.ts | 21 +++++++++++++++++++ 6 files changed, 58 insertions(+), 13 deletions(-) diff --git a/apiserver/plane/app/views/workspace/base.py b/apiserver/plane/app/views/workspace/base.py index c627f19b6b0..bd3ceac77f0 100644 --- a/apiserver/plane/app/views/workspace/base.py +++ b/apiserver/plane/app/views/workspace/base.py @@ -3,6 +3,7 @@ import io import os from datetime import date +import uuid from dateutil.relativedelta import relativedelta from django.db import IntegrityError @@ -35,6 +36,7 @@ Workspace, WorkspaceMember, WorkspaceTheme, + Profile ) from plane.app.permissions import ROLE, allow_permission from django.utils.decorators import method_decorator @@ -147,8 +149,19 @@ def list(self, request, *args, **kwargs): def partial_update(self, request, *args, **kwargs): return super().partial_update(request, *args, **kwargs) + + def remove_last_workspace_ids_from_user_settings(self, id: uuid.UUID) -> None: + """ + Remove the last workspace id from the user settings + """ + Profile.objects.filter(last_workspace_id=id).update(last_workspace_id=None) + return + @allow_permission([ROLE.ADMIN], level="WORKSPACE") def destroy(self, request, *args, **kwargs): + # Get the workspace + workspace = self.get_object() + self.remove_last_workspace_ids_from_user_settings(workspace.id) return super().destroy(request, *args, **kwargs) diff --git a/web/core/components/workspace/delete-workspace-form.tsx b/web/core/components/workspace/delete-workspace-form.tsx index 7dd918c0fdf..bc99d3598b9 100644 --- a/web/core/components/workspace/delete-workspace-form.tsx +++ b/web/core/components/workspace/delete-workspace-form.tsx @@ -2,7 +2,6 @@ import React from "react"; import { observer } from "mobx-react"; -import { useParams } from "next/navigation"; import { Controller, useForm } from "react-hook-form"; import { AlertTriangle } from "lucide-react"; // types @@ -14,7 +13,7 @@ import { Button, Input, TOAST_TYPE, setToast } from "@plane/ui"; // constants // hooks import { cn } from "@plane/utils"; -import { useEventTracker, useWorkspace } from "@/hooks/store"; +import { useEventTracker, useUserSettings, useWorkspace } from "@/hooks/store"; import { useAppRouter } from "@/hooks/use-app-router"; type Props = { @@ -31,11 +30,12 @@ export const DeleteWorkspaceForm: React.FC = observer((props) => { const { data, onClose } = props; // router const router = useAppRouter(); - const { workspaceSlug } = useParams(); // store hooks const { captureWorkspaceEvent } = useEventTracker(); const { deleteWorkspace } = useWorkspace(); const { t } = useTranslation(); + const { getWorkspaceRedirectionUrl } = useWorkspace(); + const { fetchCurrentUserSettings } = useUserSettings(); // form info const { control, @@ -60,9 +60,10 @@ export const DeleteWorkspaceForm: React.FC = observer((props) => { if (!data || !canDelete) return; await deleteWorkspace(data.slug) - .then(() => { + .then(async () => { + await fetchCurrentUserSettings(); handleClose(); - router.push(`/${workspaceSlug}/settings/account`); + router.push(getWorkspaceRedirectionUrl()); captureWorkspaceEvent({ eventName: WORKSPACE_DELETED, payload: { diff --git a/web/core/components/workspace/settings/members-list-item.tsx b/web/core/components/workspace/settings/members-list-item.tsx index 06decff4c33..28b742f0869 100644 --- a/web/core/components/workspace/settings/members-list-item.tsx +++ b/web/core/components/workspace/settings/members-list-item.tsx @@ -13,7 +13,7 @@ import { MembersLayoutLoader } from "@/components/ui/loader/layouts/members-layo import { ConfirmWorkspaceMemberRemove } from "@/components/workspace"; // constants // hooks -import { useEventTracker, useMember, useUser, useUserPermissions } from "@/hooks/store"; +import { useEventTracker, useMember, useUser, useUserPermissions, useUserSettings, useWorkspace } from "@/hooks/store"; import { useAppRouter } from "@/hooks/use-app-router"; import { useMemberColumns } from "@/plane-web/components/workspace/settings/useMemberColumns"; @@ -33,6 +33,8 @@ export const WorkspaceMembersListItem: FC = observer((props) => { } = useMember(); const { leaveWorkspace } = useUserPermissions(); const { captureEvent } = useEventTracker(); + const { getWorkspaceRedirectionUrl } = useWorkspace(); + const { fetchCurrentUserSettings } = useUserSettings(); const { t } = useTranslation(); // derived values @@ -40,12 +42,13 @@ export const WorkspaceMembersListItem: FC = observer((props) => { if (!workspaceSlug || !currentUser) return; await leaveWorkspace(workspaceSlug.toString()) - .then(() => { + .then(async () => { + await fetchCurrentUserSettings(); + router.push(getWorkspaceRedirectionUrl()); captureEvent(WORKSPACE_MEMBER_LEAVE, { state: "SUCCESS", element: "Workspace settings members page", }); - router.push(`/${workspaceSlug}/settings/account`); }) .catch((err: any) => setToast({ diff --git a/web/core/layouts/auth-layout/workspace-wrapper.tsx b/web/core/layouts/auth-layout/workspace-wrapper.tsx index 80530b17ae7..9a5c37684e1 100644 --- a/web/core/layouts/auth-layout/workspace-wrapper.tsx +++ b/web/core/layouts/auth-layout/workspace-wrapper.tsx @@ -173,14 +173,21 @@ export const WorkspaceAuthWrapper: FC = observer((props) No workspace found with the URL. It may not exist or you lack authorization to view it.

    - {allWorkspaces && allWorkspaces.length > 1 && ( + {allWorkspaces && allWorkspaces.length > 0 && ( )} - - - + {allWorkspaces?.length > 0 && ( + + + + )} + {allWorkspaces && allWorkspaces.length === 0 && ( + + + + )}
    diff --git a/web/core/lib/wrappers/authentication-wrapper.tsx b/web/core/lib/wrappers/authentication-wrapper.tsx index c868fd54245..3c235adc742 100644 --- a/web/core/lib/wrappers/authentication-wrapper.tsx +++ b/web/core/lib/wrappers/authentication-wrapper.tsx @@ -51,7 +51,7 @@ export const AuthenticationWrapper: FC = observer((props false; const getWorkspaceRedirectionUrl = (): string => { - let redirectionRoute = "/profile"; + let redirectionRoute = "/create-workspace"; // validating the nextPath from the router query if (nextPath && isValidURL(nextPath.toString())) { diff --git a/web/core/store/workspace/index.ts b/web/core/store/workspace/index.ts index 80cfda7d73c..36a47d35dc2 100644 --- a/web/core/store/workspace/index.ts +++ b/web/core/store/workspace/index.ts @@ -21,6 +21,7 @@ export interface IWorkspaceRootStore { currentWorkspace: IWorkspace | null; workspacesCreatedByCurrentUser: IWorkspace[] | null; navigationPreferencesMap: Record; + getWorkspaceRedirectionUrl: () => string; // computed actions getWorkspaceBySlug: (workspaceSlug: string) => IWorkspace | null; getWorkspaceById: (workspaceId: string) => IWorkspace | null; @@ -92,6 +93,25 @@ export class WorkspaceRootStore implements IWorkspaceRootStore { this.apiToken = new ApiTokenStore(_rootStore); } + /** + * get the workspace redirection url based on the last and fallback workspace_slug + */ + getWorkspaceRedirectionUrl = () => { + let redirectionRoute = "/create-workspace"; + // validate the last and fallback workspace_slug + const currentWorkspaceSlug = + this.user.userSettings?.data?.workspace?.last_workspace_slug || + this.user.userSettings?.data?.workspace?.fallback_workspace_slug; + + // validate the current workspace_slug is available in the user's workspace list + const isCurrentWorkspaceValid = Object.values(this.workspaces || {}).findIndex( + (workspace) => workspace.slug === currentWorkspaceSlug + ); + + if (isCurrentWorkspaceValid >= 0) redirectionRoute = `/${currentWorkspaceSlug}`; + return redirectionRoute; + }; + /** * computed value of current workspace based on workspace slug saved in the query store */ @@ -221,6 +241,7 @@ export class WorkspaceRootStore implements IWorkspaceRootStore { ) => { // Store the data before update to use for reverting if needed const beforeUpdateData = clone(this.navigationPreferencesMap[workspaceSlug]?.[key]); + try { runInAction(() => { this.navigationPreferencesMap[workspaceSlug] = { From 7fab5043c9682d0a28c2a15ced7ae7043e46283d Mon Sep 17 00:00:00 2001 From: gakshita Date: Wed, 7 May 2025 13:33:43 +0530 Subject: [PATCH 21/45] fix: dark theme --- web/core/components/settings/header.tsx | 4 ++-- web/core/components/settings/sidebar/root.tsx | 2 +- web/core/components/settings/tabs.tsx | 8 ++++---- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/web/core/components/settings/header.tsx b/web/core/components/settings/header.tsx index a55bcd7b44f..6fe0e61b685 100644 --- a/web/core/components/settings/header.tsx +++ b/web/core/components/settings/header.tsx @@ -37,7 +37,7 @@ export const SettingsHeader = observer(() => { > -
    {t("back_to_workspace")}
    +
    {t("back_to_workspace")}
    {/* Last workspace */}
    {
    {/* Description */}
    {t("settings")}
    -
    {t("settings_description")}
    +
    {t("settings_description")}
    {/* Actions */}
    diff --git a/web/core/components/settings/sidebar/root.tsx b/web/core/components/settings/sidebar/root.tsx index 3e8fb8d296c..522d622c6a1 100644 --- a/web/core/components/settings/sidebar/root.tsx +++ b/web/core/components/settings/sidebar/root.tsx @@ -48,7 +48,7 @@ export const SettingsSidebar = observer((props: SettingsSidebarProps) => {
    {categories.map((category) => (
    - {t(category)} + {t(category)} {groupedSettings[category].length > 0 && (
    {groupedSettings[category].map( diff --git a/web/core/components/settings/tabs.tsx b/web/core/components/settings/tabs.tsx index a97bc5b05d5..4419bb8811b 100644 --- a/web/core/components/settings/tabs.tsx +++ b/web/core/components/settings/tabs.tsx @@ -36,7 +36,7 @@ const SettingsTabs = observer(() => { : TABS.workspace; return ( -
    +
    {Object.values(TABS).map((tab) => { const isActive = currentTab?.key === tab.key; const href = tab.key === TABS.projects.key ? `${tab.href}${joinedProjectIds[0] || ""}` : tab.href; @@ -45,10 +45,10 @@ const SettingsTabs = observer(() => { key={tab.key} href={`/${workspaceSlug}${href}`} className={cn( - "flex items-center justify-center p-1 min-w-fit w-full font-medium outline-none focus:outline-none cursor-pointer transition-all rounded text-custom-text-400 ", + "flex items-center justify-center p-1 min-w-fit w-full font-medium outline-none focus:outline-none cursor-pointer transition-all rounded text-custom-text-200 ", { - "bg-custom-background-100 text-custom-text-300 shadow-sm": isActive, - "hover:text-custom-text-300 hover:bg-custom-background-80/60": !isActive, + "bg-custom-background-100 text-custom-text-100 shadow-sm": isActive, + "hover:text-custom-text-100 hover:bg-custom-background-80/60": !isActive, } )} > From ffbc2f06f4ce29f65f4aed4f5bf7671111bd7e09 Mon Sep 17 00:00:00 2001 From: gakshita Date: Thu, 8 May 2025 15:59:39 +0530 Subject: [PATCH 22/45] fix: css --- .../settings/account/activity/page.tsx | 1 + .../settings/account/api-tokens/page.tsx | 1 + .../settings/account/preferences/page.tsx | 2 +- web/core/components/exporter/prev-exports.tsx | 1 + .../ui/loader/settings/api-token.tsx | 41 ++++++++++--------- 5 files changed, 26 insertions(+), 20 deletions(-) diff --git a/web/app/[workspaceSlug]/(settings)/settings/account/activity/page.tsx b/web/app/[workspaceSlug]/(settings)/settings/account/activity/page.tsx index 79d3eeefb0c..788b18fc4a8 100644 --- a/web/app/[workspaceSlug]/(settings)/settings/account/activity/page.tsx +++ b/web/app/[workspaceSlug]/(settings)/settings/account/activity/page.tsx @@ -54,6 +54,7 @@ const ProfileActivityPage = observer(() => { title={t("profile.empty_state.activity.title")} description={t("profile.empty_state.activity.description")} assetPath={resolvedPath} + className="w-full !p-0 justify-start items-start" /> ); } diff --git a/web/app/[workspaceSlug]/(settings)/settings/account/api-tokens/page.tsx b/web/app/[workspaceSlug]/(settings)/settings/account/api-tokens/page.tsx index 7d898dd2f96..a4276f3ecf4 100644 --- a/web/app/[workspaceSlug]/(settings)/settings/account/api-tokens/page.tsx +++ b/web/app/[workspaceSlug]/(settings)/settings/account/api-tokens/page.tsx @@ -87,6 +87,7 @@ const ApiTokensPage = observer(() => { title={t("workspace_settings.empty_state.api_tokens.title")} description={t("workspace_settings.empty_state.api_tokens.description")} assetPath={resolvedPath} + className="w-full !px-0 justify-start items-start" />
    diff --git a/web/app/[workspaceSlug]/(settings)/settings/account/preferences/page.tsx b/web/app/[workspaceSlug]/(settings)/settings/account/preferences/page.tsx index ef0b786ba81..a849b0cd5eb 100644 --- a/web/app/[workspaceSlug]/(settings)/settings/account/preferences/page.tsx +++ b/web/app/[workspaceSlug]/(settings)/settings/account/preferences/page.tsx @@ -19,7 +19,7 @@ const ProfileAppearancePage = observer(() => { {userProfile ? ( <> -
    +
    diff --git a/web/core/components/exporter/prev-exports.tsx b/web/core/components/exporter/prev-exports.tsx index 1061be899fc..8043d5f49d6 100644 --- a/web/core/components/exporter/prev-exports.tsx +++ b/web/core/components/exporter/prev-exports.tsx @@ -123,6 +123,7 @@ export const PrevExports = observer((props: Props) => { title={t("workspace_settings.empty_state.exports.title")} description={t("workspace_settings.empty_state.exports.description")} assetPath={resolvedPath} + className="w-full !px-0 !py-4" />
    ) diff --git a/web/core/components/ui/loader/settings/api-token.tsx b/web/core/components/ui/loader/settings/api-token.tsx index ca8f59cda5b..a0508837070 100644 --- a/web/core/components/ui/loader/settings/api-token.tsx +++ b/web/core/components/ui/loader/settings/api-token.tsx @@ -1,21 +1,24 @@ import range from "lodash/range"; - -export const APITokenSettingsLoader = () => ( -
    -
    -

    API tokens

    - -
    -
    - {range(2).map((i) => ( -
    -
    - - +import { useTranslation } from "@plane/i18n"; +export const APITokenSettingsLoader = () => { + const { t } = useTranslation(); + return ( +
    +
    +

    {t("workspace_settings.settings.api_tokens.title")}

    + +
    +
    + {range(2).map((i) => ( +
    +
    + + +
    +
    - -
    - ))} -
    -
    -); + ))} +
    +
    + ); +}; From cffbc8860a0dd60ac10111076f5e4a6a80903ab3 Mon Sep 17 00:00:00 2001 From: gakshita Date: Thu, 8 May 2025 16:04:10 +0530 Subject: [PATCH 23/45] fix: css --- .../(settings)/settings/account/activity/page.tsx | 15 +++++++++------ .../labels/project-setting-label-list.tsx | 1 + 2 files changed, 10 insertions(+), 6 deletions(-) diff --git a/web/app/[workspaceSlug]/(settings)/settings/account/activity/page.tsx b/web/app/[workspaceSlug]/(settings)/settings/account/activity/page.tsx index 788b18fc4a8..d325d222cbb 100644 --- a/web/app/[workspaceSlug]/(settings)/settings/account/activity/page.tsx +++ b/web/app/[workspaceSlug]/(settings)/settings/account/activity/page.tsx @@ -50,12 +50,15 @@ const ProfileActivityPage = observer(() => { if (isEmpty) { return ( - + <> + + + ); } diff --git a/web/core/components/labels/project-setting-label-list.tsx b/web/core/components/labels/project-setting-label-list.tsx index 8150eac5fce..a48d8622b49 100644 --- a/web/core/components/labels/project-setting-label-list.tsx +++ b/web/core/components/labels/project-setting-label-list.tsx @@ -106,6 +106,7 @@ export const ProjectSettingsLabelList: React.FC = observer(() => { title={t("project_settings.empty_state.labels.title")} description={t("project_settings.empty_state.labels.description")} assetPath={resolvedPath} + className="w-full !px-0 !py-4" />
    ) : ( From 70cafff791c39baf6860c9b6ef6a220533c151bb Mon Sep 17 00:00:00 2001 From: gakshita Date: Thu, 8 May 2025 19:16:28 +0530 Subject: [PATCH 24/45] feat: scroll --- .../components/settings/content-wrapper.tsx | 55 ++++++++++++++++-- web/core/components/settings/header.tsx | 57 ++++++++++++------- web/core/store/user/settings.store.ts | 10 ++++ 3 files changed, 96 insertions(+), 26 deletions(-) diff --git a/web/core/components/settings/content-wrapper.tsx b/web/core/components/settings/content-wrapper.tsx index e053be71abf..71aa54956da 100644 --- a/web/core/components/settings/content-wrapper.tsx +++ b/web/core/components/settings/content-wrapper.tsx @@ -1,7 +1,50 @@ -import { ReactNode } from "react"; +import { ReactNode, useEffect, useRef } from "react"; +import throttle from "lodash/throttle"; +import { observer } from "mobx-react"; +import { useUserSettings } from "@/hooks/store"; -export const SettingsContentWrapper = ({ children }: { children: ReactNode }) => ( -
    - {children} -
    -); +export const SettingsContentWrapper = observer(({ children }: { children: ReactNode }) => { + // refs + const ref = useRef(null); + const scrolledRef = useRef(false); + // store hooks + const { toggleIsScrolled, isScrolled } = useUserSettings(); + + useEffect(() => { + toggleIsScrolled(false); + const container = ref.current; + if (!container) return; + + const handleScroll = () => { + const scrollTop = container.scrollTop; + if (container.scrollHeight > container.clientHeight || scrolledRef.current) { + const _isScrolled = scrollTop > 0; + toggleIsScrolled(_isScrolled); + } + }; + + // Throttle the scroll handler to improve performance + // Set trailing to true to ensure the last call runs after the delay + const throttledHandleScroll = throttle(handleScroll, 150); + + container.addEventListener("scroll", throttledHandleScroll); + return () => { + container.removeEventListener("scroll", throttledHandleScroll); + // Cancel any pending throttled invocations when unmounting + throttledHandleScroll.cancel(); + }; + }, []); + + useEffect(() => { + scrolledRef.current = isScrolled; + }, [isScrolled]); + + return ( +
    + {children} +
    + ); +}); diff --git a/web/core/components/settings/header.tsx b/web/core/components/settings/header.tsx index 6fe0e61b685..c6bd9e5202f 100644 --- a/web/core/components/settings/header.tsx +++ b/web/core/components/settings/header.tsx @@ -14,7 +14,7 @@ export const SettingsHeader = observer(() => { // hooks const { data: currentUserSettings } = useUserSettings(); const { t } = useTranslation(); - + const { isScrolled } = useUserSettings(); // redirect url for normal mode const redirectWorkspaceSlug = currentUserSettings?.workspace?.last_workspace_slug || @@ -22,41 +22,58 @@ export const SettingsHeader = observer(() => { ""; return ( -
    +
    {/* Breadcrumb */} -
    {t("back_to_workspace")}
    - {/* Last workspace */} -
    - -
    - {currentUserSettings?.workspace?.last_workspace_name} +
    +
    {t("back_to_workspace")}
    + {/* Last workspace */} +
    + +
    + {currentUserSettings?.workspace?.last_workspace_name} +
    {/* Description */}
    {t("settings")}
    -
    {t("settings_description")}
    + {!isScrolled &&
    {t("settings_description")}
    } {/* Actions */}
    diff --git a/web/core/store/user/settings.store.ts b/web/core/store/user/settings.store.ts index 857a8859774..348e7a9df1e 100644 --- a/web/core/store/user/settings.store.ts +++ b/web/core/store/user/settings.store.ts @@ -21,10 +21,12 @@ export interface IUserSettingsStore { data: IUserSettings; canUseLocalDB: boolean; sidebarCollapsed: boolean; + isScrolled: boolean; // actions fetchCurrentUserSettings: () => Promise; toggleLocalDB: (workspaceSlug: string | undefined, projectId: string | undefined) => Promise; toggleSidebar: (collapsed?: boolean) => void; + toggleIsScrolled: (isScrolled?: boolean) => void; } export class UserSettingsStore implements IUserSettingsStore { @@ -32,6 +34,7 @@ export class UserSettingsStore implements IUserSettingsStore { isLoading: boolean = false; sidebarCollapsed: boolean = true; error: TError | undefined = undefined; + isScrolled: boolean = false; data: IUserSettings = { id: undefined, email: undefined, @@ -57,19 +60,26 @@ export class UserSettingsStore implements IUserSettingsStore { data: observable, canUseLocalDB: observable.ref, sidebarCollapsed: observable.ref, + isScrolled: observable.ref, // actions fetchCurrentUserSettings: action, toggleLocalDB: action, toggleSidebar: action, + toggleIsScrolled: action, }); // services this.userService = new UserService(); } + // actions toggleSidebar = (collapsed?: boolean) => { this.sidebarCollapsed = collapsed ?? !this.sidebarCollapsed; }; + toggleIsScrolled = (isScrolled?: boolean) => { + this.isScrolled = isScrolled ?? !this.isScrolled; + }; + toggleLocalDB = async (workspaceSlug: string | undefined, projectId: string | undefined) => { const currentLocalDBValue = this.canUseLocalDB; try { From f41f21e650ea60dfed7bb4b0de2f81544eaf6c53 Mon Sep 17 00:00:00 2001 From: gakshita Date: Tue, 13 May 2025 16:15:37 +0530 Subject: [PATCH 25/45] fix: refactor --- web/app/[workspaceSlug]/(settings)/layout.tsx | 4 +- .../settings/(workspace)/billing/page.tsx | 5 ++- .../settings/(workspace)/exports/page.tsx | 5 ++- .../settings/(workspace)/imports/page.tsx | 10 +++-- .../(workspace)/integrations/page.tsx | 4 +- .../settings/(workspace)/layout.tsx | 4 +- .../settings/(workspace)/members/page.tsx | 5 ++- .../(settings)/settings/(workspace)/page.tsx | 5 ++- .../(workspace)/webhooks/[webhookId]/page.tsx | 5 ++- .../settings/(workspace)/webhooks/page.tsx | 11 ++++- .../settings/account/activity/page.tsx | 7 +-- .../settings/account/api-tokens/page.tsx | 15 ++++--- .../(settings)/settings/account/layout.tsx | 2 - .../settings/account/preferences/page.tsx | 2 +- .../(settings)/settings/account/sidebar.tsx | 1 - .../project/[projectId]/automations/page.tsx | 5 ++- .../project/[projectId]/estimates/page.tsx | 5 ++- .../project/[projectId]/features/page.tsx | 5 ++- .../project/[projectId]/labels/page.tsx | 5 ++- .../project/[projectId]/members/page.tsx | 5 ++- .../settings/project/[projectId]/page.tsx | 6 +-- .../project/[projectId]/states/page.tsx | 5 ++- .../(settings)/settings/project/layout.tsx | 6 +-- .../components/estimates/empty-screen.tsx | 37 +++++----------- web/core/components/exporter/prev-exports.tsx | 3 +- .../activity/profile-activity-list.tsx | 4 +- .../components/settings/content-wrapper.tsx | 18 ++++++-- web/core/components/settings/header.tsx | 15 +++---- .../components/settings/sidebar/header.tsx | 19 +++------ .../components/settings/sidebar/nav-item.tsx | 4 +- web/core/components/settings/sidebar/root.tsx | 2 +- .../components/settings/workspace-logo.tsx | 40 ------------------ .../project-settings/estimates-dark.png | Bin 0 -> 1385116 bytes .../project-settings/estimates-light.png | Bin 0 -> 852149 bytes 34 files changed, 122 insertions(+), 147 deletions(-) delete mode 100644 web/core/components/settings/workspace-logo.tsx create mode 100644 web/public/empty-state/project-settings/estimates-dark.png create mode 100644 web/public/empty-state/project-settings/estimates-light.png diff --git a/web/app/[workspaceSlug]/(settings)/layout.tsx b/web/app/[workspaceSlug]/(settings)/layout.tsx index ee68aa0ea59..516a413d1c3 100644 --- a/web/app/[workspaceSlug]/(settings)/layout.tsx +++ b/web/app/[workspaceSlug]/(settings)/layout.tsx @@ -1,5 +1,6 @@ "use client"; +import { CommandPalette } from "@/components/command-palette"; import { ContentWrapper } from "@/components/core"; import { SettingsHeader } from "@/components/settings"; import { AuthenticationWrapper } from "@/lib/wrappers"; @@ -9,11 +10,12 @@ export default function SettingsLayout({ children }: { children: React.ReactNode return ( +
    {/* Header */} {/* Content */} - {children} + {children}
    diff --git a/web/app/[workspaceSlug]/(settings)/settings/(workspace)/billing/page.tsx b/web/app/[workspaceSlug]/(settings)/settings/(workspace)/billing/page.tsx index 801b04b3783..35338642e7a 100644 --- a/web/app/[workspaceSlug]/(settings)/settings/(workspace)/billing/page.tsx +++ b/web/app/[workspaceSlug]/(settings)/settings/(workspace)/billing/page.tsx @@ -6,6 +6,7 @@ import { EUserPermissions, EUserPermissionsLevel } from "@plane/constants"; import { NotAuthorizedView } from "@/components/auth-screens"; import { PageHead } from "@/components/core"; // hooks +import { SettingsContentWrapper } from "@/components/settings"; import { useUserPermissions, useWorkspace } from "@/hooks/store"; // plane web components import { BillingRoot } from "@/plane-web/components/workspace"; @@ -23,10 +24,10 @@ const BillingSettingsPage = observer(() => { } return ( - <> + - + ); }); diff --git a/web/app/[workspaceSlug]/(settings)/settings/(workspace)/exports/page.tsx b/web/app/[workspaceSlug]/(settings)/settings/(workspace)/exports/page.tsx index dd984e1cc6e..3812940216f 100644 --- a/web/app/[workspaceSlug]/(settings)/settings/(workspace)/exports/page.tsx +++ b/web/app/[workspaceSlug]/(settings)/settings/(workspace)/exports/page.tsx @@ -8,6 +8,7 @@ import { NotAuthorizedView } from "@/components/auth-screens"; import { PageHead } from "@/components/core"; import ExportGuide from "@/components/exporter/guide"; // helpers +import { SettingsContentWrapper } from "@/components/settings"; import { cn } from "@/helpers/common.helper"; // hooks import { useUserPermissions, useWorkspace } from "@/hooks/store"; @@ -33,7 +34,7 @@ const ExportsPage = observer(() => { } return ( - <> +
    {
    - + ); }); diff --git a/web/app/[workspaceSlug]/(settings)/settings/(workspace)/imports/page.tsx b/web/app/[workspaceSlug]/(settings)/settings/(workspace)/imports/page.tsx index 718742804ad..83e267125b8 100644 --- a/web/app/[workspaceSlug]/(settings)/settings/(workspace)/imports/page.tsx +++ b/web/app/[workspaceSlug]/(settings)/settings/(workspace)/imports/page.tsx @@ -6,13 +6,15 @@ import { EUserPermissions, EUserPermissionsLevel } from "@plane/constants"; import { PageHead } from "@/components/core"; import IntegrationGuide from "@/components/integration/guide"; // hooks +import { SettingsContentWrapper } from "@/components/settings"; import { useUserPermissions, useWorkspace } from "@/hooks/store"; +// plane web hooks const ImportsPage = observer(() => { + // router // store hooks const { currentWorkspace } = useWorkspace(); const { allowPermissions } = useUserPermissions(); - // derived values const isAdmin = allowPermissions([EUserPermissions.ADMIN], EUserPermissionsLevel.WORKSPACE); const pageTitle = currentWorkspace?.name ? `${currentWorkspace.name} - Imports` : undefined; @@ -28,15 +30,15 @@ const ImportsPage = observer(() => { ); return ( - <> + -
    +

    Imports

    - + ); }); diff --git a/web/app/[workspaceSlug]/(settings)/settings/(workspace)/integrations/page.tsx b/web/app/[workspaceSlug]/(settings)/settings/(workspace)/integrations/page.tsx index ef31bd82feb..b405b4a0b32 100644 --- a/web/app/[workspaceSlug]/(settings)/settings/(workspace)/integrations/page.tsx +++ b/web/app/[workspaceSlug]/(settings)/settings/(workspace)/integrations/page.tsx @@ -29,12 +29,12 @@ const WorkspaceIntegrationsPage = observer(() => { if (!isAdmin) return ( - <> +

    You are not authorized to access this page.

    - +
    ); const { data: appIntegrations } = useSWR(workspaceSlug && isAdmin ? APP_INTEGRATIONS : null, () => diff --git a/web/app/[workspaceSlug]/(settings)/settings/(workspace)/layout.tsx b/web/app/[workspaceSlug]/(settings)/settings/(workspace)/layout.tsx index 0755325cbcd..f5fc2eac517 100644 --- a/web/app/[workspaceSlug]/(settings)/settings/(workspace)/layout.tsx +++ b/web/app/[workspaceSlug]/(settings)/settings/(workspace)/layout.tsx @@ -8,7 +8,7 @@ import { EUserWorkspaceRoles, WORKSPACE_SETTINGS_ACCESS } from "@plane/constants // hooks import { NotAuthorizedView } from "@/components/auth-screens"; import { CommandPalette } from "@/components/command-palette"; -import { SettingsContentWrapper, SettingsMobileNav } from "@/components/settings"; +import { SettingsMobileNav } from "@/components/settings"; import { getWorkspaceActivePath, pathnameToAccessKey } from "@/components/settings/helper"; import { useUserPermissions } from "@/hooks/store"; // local components @@ -49,7 +49,7 @@ const WorkspaceSettingLayout: FC = observer((props) =>
    - {children} + {children} )}
    diff --git a/web/app/[workspaceSlug]/(settings)/settings/(workspace)/members/page.tsx b/web/app/[workspaceSlug]/(settings)/settings/(workspace)/members/page.tsx index 35db48408db..e645ab1d25b 100644 --- a/web/app/[workspaceSlug]/(settings)/settings/(workspace)/members/page.tsx +++ b/web/app/[workspaceSlug]/(settings)/settings/(workspace)/members/page.tsx @@ -14,6 +14,7 @@ import { Button, TOAST_TYPE, setToast } from "@plane/ui"; import { NotAuthorizedView } from "@/components/auth-screens"; import { CountChip } from "@/components/common"; import { PageHead } from "@/components/core"; +import { SettingsContentWrapper } from "@/components/settings"; import { WorkspaceMembersList } from "@/components/workspace"; // helpers import { cn } from "@/helpers/common.helper"; @@ -99,7 +100,7 @@ const WorkspaceMembersSettingsPage = observer(() => { } return ( - <> + {
    - + ); }); diff --git a/web/app/[workspaceSlug]/(settings)/settings/(workspace)/page.tsx b/web/app/[workspaceSlug]/(settings)/settings/(workspace)/page.tsx index 6088cf0a50f..736c3481069 100644 --- a/web/app/[workspaceSlug]/(settings)/settings/(workspace)/page.tsx +++ b/web/app/[workspaceSlug]/(settings)/settings/(workspace)/page.tsx @@ -4,6 +4,7 @@ import { observer } from "mobx-react"; // components import { useTranslation } from "@plane/i18n"; import { PageHead } from "@/components/core"; +import { SettingsContentWrapper } from "@/components/settings"; import { WorkspaceDetails } from "@/components/workspace"; // hooks import { useWorkspace } from "@/hooks/store"; @@ -18,10 +19,10 @@ const WorkspaceSettingsPage = observer(() => { : undefined; return ( - <> + - + ); }); diff --git a/web/app/[workspaceSlug]/(settings)/settings/(workspace)/webhooks/[webhookId]/page.tsx b/web/app/[workspaceSlug]/(settings)/settings/(workspace)/webhooks/[webhookId]/page.tsx index 5edc914e908..a775ff3b1fb 100644 --- a/web/app/[workspaceSlug]/(settings)/settings/(workspace)/webhooks/[webhookId]/page.tsx +++ b/web/app/[workspaceSlug]/(settings)/settings/(workspace)/webhooks/[webhookId]/page.tsx @@ -11,6 +11,7 @@ import { TOAST_TYPE, setToast } from "@plane/ui"; // components import { LogoSpinner } from "@/components/common"; import { PageHead } from "@/components/core"; +import { SettingsContentWrapper } from "@/components/settings"; import { DeleteWebhookModal, WebhookDeleteSection, WebhookForm } from "@/components/web-hooks"; // hooks import { useUserPermissions, useWebhook, useWorkspace } from "@/hooks/store"; @@ -87,7 +88,7 @@ const WebhookDetailsPage = observer(() => { ); return ( - <> + setDeleteWebhookModal(false)} />
    @@ -96,7 +97,7 @@ const WebhookDetailsPage = observer(() => {
    {currentWebhook && setDeleteWebhookModal(true)} />}
    - + ); }); diff --git a/web/app/[workspaceSlug]/(settings)/settings/(workspace)/webhooks/page.tsx b/web/app/[workspaceSlug]/(settings)/settings/(workspace)/webhooks/page.tsx index e5ea763b035..603b9fadade 100644 --- a/web/app/[workspaceSlug]/(settings)/settings/(workspace)/webhooks/page.tsx +++ b/web/app/[workspaceSlug]/(settings)/settings/(workspace)/webhooks/page.tsx @@ -12,6 +12,7 @@ import { Button } from "@plane/ui"; import { NotAuthorizedView } from "@/components/auth-screens"; import { PageHead } from "@/components/core"; import { DetailedEmptyState } from "@/components/empty-state"; +import { SettingsContentWrapper } from "@/components/settings"; import { WebhookSettingsLoader } from "@/components/ui"; import { WebhooksList, CreateWebhookModal } from "@/components/web-hooks"; // hooks @@ -54,7 +55,7 @@ const WebhooksListPage = observer(() => { if (!webhooks) return ; return ( - <> +
    {
    setShowCreateWebhookModal(true), + }} />
    )}
    - + ); }); diff --git a/web/app/[workspaceSlug]/(settings)/settings/account/activity/page.tsx b/web/app/[workspaceSlug]/(settings)/settings/account/activity/page.tsx index d325d222cbb..d92067c25f5 100644 --- a/web/app/[workspaceSlug]/(settings)/settings/account/activity/page.tsx +++ b/web/app/[workspaceSlug]/(settings)/settings/account/activity/page.tsx @@ -50,15 +50,16 @@ const ProfileActivityPage = observer(() => { if (isEmpty) { return ( - <> +
    - +
    ); } diff --git a/web/app/[workspaceSlug]/(settings)/settings/account/api-tokens/page.tsx b/web/app/[workspaceSlug]/(settings)/settings/account/api-tokens/page.tsx index a4276f3ecf4..acfbb789716 100644 --- a/web/app/[workspaceSlug]/(settings)/settings/account/api-tokens/page.tsx +++ b/web/app/[workspaceSlug]/(settings)/settings/account/api-tokens/page.tsx @@ -56,13 +56,13 @@ const ApiTokensPage = observer(() => { } return ( - <> +
    setIsCreateTokenModalOpen(false)} />
    {tokens.length > 0 ? ( <> -
    +

    {t("workspace_settings.settings.api_tokens.title")}

    )}
    - +
    ); }); diff --git a/web/app/[workspaceSlug]/(settings)/settings/account/layout.tsx b/web/app/[workspaceSlug]/(settings)/settings/account/layout.tsx index f87920e0e4d..9dcffd57cf6 100644 --- a/web/app/[workspaceSlug]/(settings)/settings/account/layout.tsx +++ b/web/app/[workspaceSlug]/(settings)/settings/account/layout.tsx @@ -4,7 +4,6 @@ import { ReactNode } from "react"; // components import { observer } from "mobx-react"; import { usePathname } from "next/navigation"; -import { CommandPalette } from "@/components/command-palette"; import { SettingsContentWrapper, SettingsMobileNav } from "@/components/settings"; import { getProfileActivePath } from "@/components/settings/helper"; import { ProfileSidebar } from "./sidebar"; @@ -20,7 +19,6 @@ const ProfileSettingsLayout = observer((props: Props) => { return ( <> -
    diff --git a/web/app/[workspaceSlug]/(settings)/settings/account/preferences/page.tsx b/web/app/[workspaceSlug]/(settings)/settings/account/preferences/page.tsx index a849b0cd5eb..52a0cdad0d3 100644 --- a/web/app/[workspaceSlug]/(settings)/settings/account/preferences/page.tsx +++ b/web/app/[workspaceSlug]/(settings)/settings/account/preferences/page.tsx @@ -19,7 +19,7 @@ const ProfileAppearancePage = observer(() => { {userProfile ? ( <> -
    +
    diff --git a/web/app/[workspaceSlug]/(settings)/settings/account/sidebar.tsx b/web/app/[workspaceSlug]/(settings)/settings/account/sidebar.tsx index bb2faaf47b7..ee51f0285d5 100644 --- a/web/app/[workspaceSlug]/(settings)/settings/account/sidebar.tsx +++ b/web/app/[workspaceSlug]/(settings)/settings/account/sidebar.tsx @@ -34,7 +34,6 @@ export const ProfileSidebar = observer((props: TProfileSidebarProps) => { const { workspaceSlug } = useParams(); // store hooks const { data: currentUser } = useUser(); - return ( { @@ -47,7 +48,7 @@ const AutomationSettingsPage = observer(() => { } return ( - <> +
    @@ -56,7 +57,7 @@ const AutomationSettingsPage = observer(() => {
    - +
    ); }); diff --git a/web/app/[workspaceSlug]/(settings)/settings/project/[projectId]/estimates/page.tsx b/web/app/[workspaceSlug]/(settings)/settings/project/[projectId]/estimates/page.tsx index 6ce66fb94fb..5f24d2d81ae 100644 --- a/web/app/[workspaceSlug]/(settings)/settings/project/[projectId]/estimates/page.tsx +++ b/web/app/[workspaceSlug]/(settings)/settings/project/[projectId]/estimates/page.tsx @@ -8,6 +8,7 @@ import { NotAuthorizedView } from "@/components/auth-screens"; import { PageHead } from "@/components/core"; import { EstimateRoot } from "@/components/estimates"; // hooks +import { SettingsContentWrapper } from "@/components/settings"; import { useProject, useUserPermissions } from "@/hooks/store"; const EstimatesSettingsPage = observer(() => { @@ -27,7 +28,7 @@ const EstimatesSettingsPage = observer(() => { } return ( - <> +
    { isAdmin={canPerformProjectAdminActions} />
    - +
    ); }); diff --git a/web/app/[workspaceSlug]/(settings)/settings/project/[projectId]/features/page.tsx b/web/app/[workspaceSlug]/(settings)/settings/project/[projectId]/features/page.tsx index ef33da85213..8efbb8b3eb3 100644 --- a/web/app/[workspaceSlug]/(settings)/settings/project/[projectId]/features/page.tsx +++ b/web/app/[workspaceSlug]/(settings)/settings/project/[projectId]/features/page.tsx @@ -8,6 +8,7 @@ import { NotAuthorizedView } from "@/components/auth-screens"; import { PageHead } from "@/components/core"; import { ProjectFeaturesList } from "@/components/project"; // hooks +import { SettingsContentWrapper } from "@/components/settings"; import { useProject, useUserPermissions } from "@/hooks/store"; const FeaturesSettingsPage = observer(() => { @@ -27,7 +28,7 @@ const FeaturesSettingsPage = observer(() => { } return ( - <> +
    { isAdmin={canPerformProjectAdminActions} />
    - +
    ); }); diff --git a/web/app/[workspaceSlug]/(settings)/settings/project/[projectId]/labels/page.tsx b/web/app/[workspaceSlug]/(settings)/settings/project/[projectId]/labels/page.tsx index 391de61e86f..5c2696ef8ab 100644 --- a/web/app/[workspaceSlug]/(settings)/settings/project/[projectId]/labels/page.tsx +++ b/web/app/[workspaceSlug]/(settings)/settings/project/[projectId]/labels/page.tsx @@ -10,6 +10,7 @@ import { NotAuthorizedView } from "@/components/auth-screens"; import { PageHead } from "@/components/core"; import { ProjectSettingsLabelList } from "@/components/labels"; // hooks +import { SettingsContentWrapper } from "@/components/settings"; import { useProject, useUserPermissions } from "@/hooks/store"; const LabelsSettingsPage = observer(() => { @@ -45,12 +46,12 @@ const LabelsSettingsPage = observer(() => { } return ( - <> +
    - +
    ); }); diff --git a/web/app/[workspaceSlug]/(settings)/settings/project/[projectId]/members/page.tsx b/web/app/[workspaceSlug]/(settings)/settings/project/[projectId]/members/page.tsx index e603d9ff4a6..0d28e2550d0 100644 --- a/web/app/[workspaceSlug]/(settings)/settings/project/[projectId]/members/page.tsx +++ b/web/app/[workspaceSlug]/(settings)/settings/project/[projectId]/members/page.tsx @@ -7,6 +7,7 @@ import { NotAuthorizedView } from "@/components/auth-screens"; import { PageHead } from "@/components/core"; import { ProjectMemberList, ProjectSettingsMemberDefaults } from "@/components/project"; // hooks +import { SettingsContentWrapper } from "@/components/settings"; import { useProject, useUserPermissions } from "@/hooks/store"; const MembersSettingsPage = observer(() => { @@ -27,13 +28,13 @@ const MembersSettingsPage = observer(() => { } return ( - <> +
    - +
    ); }); diff --git a/web/app/[workspaceSlug]/(settings)/settings/project/[projectId]/page.tsx b/web/app/[workspaceSlug]/(settings)/settings/project/[projectId]/page.tsx index e8841d4b021..cf79fa127d3 100644 --- a/web/app/[workspaceSlug]/(settings)/settings/project/[projectId]/page.tsx +++ b/web/app/[workspaceSlug]/(settings)/settings/project/[projectId]/page.tsx @@ -16,8 +16,8 @@ import { ProjectDetailsFormLoader, } from "@/components/project"; // hooks +import { SettingsContentWrapper } from "@/components/settings"; import { useProject, useUserPermissions } from "@/hooks/store"; - const ProjectSettingsPage = observer(() => { // states const [selectProject, setSelectedProject] = useState(null); @@ -45,7 +45,7 @@ const ProjectSettingsPage = observer(() => { const pageTitle = currentProjectDetails?.name ? `${currentProjectDetails?.name} - General Settings` : undefined; return ( - <> + {currentProjectDetails && workspaceSlug && projectId && ( <> @@ -89,7 +89,7 @@ const ProjectSettingsPage = observer(() => { )}
    - + ); }); diff --git a/web/app/[workspaceSlug]/(settings)/settings/project/[projectId]/states/page.tsx b/web/app/[workspaceSlug]/(settings)/settings/project/[projectId]/states/page.tsx index c8f1c58b7e9..c23636f7fd9 100644 --- a/web/app/[workspaceSlug]/(settings)/settings/project/[projectId]/states/page.tsx +++ b/web/app/[workspaceSlug]/(settings)/settings/project/[projectId]/states/page.tsx @@ -9,6 +9,7 @@ import { NotAuthorizedView } from "@/components/auth-screens"; import { PageHead } from "@/components/core"; import { ProjectStateRoot } from "@/components/project-states"; // hook +import { SettingsContentWrapper } from "@/components/settings"; import { useProject, useUserPermissions } from "@/hooks/store"; const StatesSettingsPage = observer(() => { @@ -32,7 +33,7 @@ const StatesSettingsPage = observer(() => { } return ( - <> +
    @@ -42,7 +43,7 @@ const StatesSettingsPage = observer(() => { )}
    - + ); }); diff --git a/web/app/[workspaceSlug]/(settings)/settings/project/layout.tsx b/web/app/[workspaceSlug]/(settings)/settings/project/layout.tsx index b38c1142f3e..68140134bc9 100644 --- a/web/app/[workspaceSlug]/(settings)/settings/project/layout.tsx +++ b/web/app/[workspaceSlug]/(settings)/settings/project/layout.tsx @@ -4,8 +4,7 @@ import { ReactNode, useEffect } from "react"; import { observer } from "mobx-react"; import { useParams, usePathname } from "next/navigation"; // components -import { CommandPalette } from "@/components/command-palette"; -import { SettingsContentWrapper, SettingsMobileNav } from "@/components/settings"; +import { SettingsMobileNav } from "@/components/settings"; import { getProjectActivePath } from "@/components/settings/helper"; import { ProjectSettingsSidebar } from "@/components/settings/project/sidebar"; import { useProject } from "@/hooks/store"; @@ -33,12 +32,11 @@ const ProjectSettingsLayout = observer((props: Props) => { return ( <> -
    {projectId && }
    - {children} + {children}
    diff --git a/web/core/components/estimates/empty-screen.tsx b/web/core/components/estimates/empty-screen.tsx index 0155e25196e..250cdb07d9b 100644 --- a/web/core/components/estimates/empty-screen.tsx +++ b/web/core/components/estimates/empty-screen.tsx @@ -1,13 +1,10 @@ "use client"; import { FC } from "react"; -import Image from "next/image"; import { useTheme } from "next-themes"; import { useTranslation } from "@plane/i18n"; -import { Button } from "@plane/ui"; // public images -import EstimateEmptyDarkImage from "@/public/empty-state/estimates/dark.svg"; -import EstimateEmptyLightImage from "@/public/empty-state/estimates/light.svg"; +import { DetailedEmptyState } from "../empty-state"; type TEstimateEmptyScreen = { onButtonClick: () => void; @@ -20,28 +17,16 @@ export const EstimateEmptyScreen: FC = (props) => { const { t } = useTranslation(); - const emptyScreenImage = resolvedTheme === "light" ? EstimateEmptyLightImage : EstimateEmptyDarkImage; - + const resolvedPath = `/empty-state/project-settings/estimates-${resolvedTheme === "light" ? "light" : "dark"}.png`; return ( -
    -
    - -
    -
    -

    - {t("project_settings.empty_state.estimates.title")} -

    -

    {t("project_settings.empty_state.estimates.description")}

    -
    -
    - -
    -
    + ); }; diff --git a/web/core/components/exporter/prev-exports.tsx b/web/core/components/exporter/prev-exports.tsx index 8043d5f49d6..b07d580b3c9 100644 --- a/web/core/components/exporter/prev-exports.tsx +++ b/web/core/components/exporter/prev-exports.tsx @@ -123,7 +123,8 @@ export const PrevExports = observer((props: Props) => { title={t("workspace_settings.empty_state.exports.title")} description={t("workspace_settings.empty_state.exports.description")} assetPath={resolvedPath} - className="w-full !px-0 !py-4" + className="w-full !px-0" + size="sm" />
    ) diff --git a/web/core/components/profile/activity/profile-activity-list.tsx b/web/core/components/profile/activity/profile-activity-list.tsx index 4d10ce2b1e4..4955bead7bf 100644 --- a/web/core/components/profile/activity/profile-activity-list.tsx +++ b/web/core/components/profile/activity/profile-activity-list.tsx @@ -81,8 +81,8 @@ export const ProfileActivityListPage: React.FC = observer((props) => {
    )} - -
    diff --git a/web/core/components/settings/content-wrapper.tsx b/web/core/components/settings/content-wrapper.tsx index 71aa54956da..9ae0e9fb7e8 100644 --- a/web/core/components/settings/content-wrapper.tsx +++ b/web/core/components/settings/content-wrapper.tsx @@ -1,9 +1,15 @@ import { ReactNode, useEffect, useRef } from "react"; import throttle from "lodash/throttle"; import { observer } from "mobx-react"; +import { cn } from "@plane/utils"; import { useUserSettings } from "@/hooks/store"; -export const SettingsContentWrapper = observer(({ children }: { children: ReactNode }) => { +type TProps = { + children: ReactNode; + size?: "lg" | "md"; +}; +export const SettingsContentWrapper = observer((props: TProps) => { + const { children, size = "md" } = props; // refs const ref = useRef(null); const scrolledRef = useRef(false); @@ -41,10 +47,16 @@ export const SettingsContentWrapper = observer(({ children }: { children: ReactN return (
    - {children} +
    {children}
    ); }); diff --git a/web/core/components/settings/header.tsx b/web/core/components/settings/header.tsx index c6bd9e5202f..5e2efc0d9bd 100644 --- a/web/core/components/settings/header.tsx +++ b/web/core/components/settings/header.tsx @@ -7,8 +7,8 @@ import { useTranslation } from "@plane/i18n"; import { getButtonStyling } from "@plane/ui/src/button"; import { cn } from "@plane/utils"; import { useUserSettings } from "@/hooks/store"; +import { WorkspaceLogo } from "../workspace"; import SettingsTabs from "./tabs"; -import WorkspaceLogo from "./workspace-logo"; export const SettingsHeader = observer(() => { // hooks @@ -34,8 +34,8 @@ export const SettingsHeader = observer(() => {
    - + ); }); diff --git a/web/app/[workspaceSlug]/(settings)/settings/account/preferences/page.tsx b/web/app/[workspaceSlug]/(settings)/settings/account/preferences/page.tsx index 52a0cdad0d3..75b4e86afd7 100644 --- a/web/app/[workspaceSlug]/(settings)/settings/account/preferences/page.tsx +++ b/web/app/[workspaceSlug]/(settings)/settings/account/preferences/page.tsx @@ -16,7 +16,7 @@ const ProfileAppearancePage = observer(() => { return ( <> - + {userProfile ? ( <>
    diff --git a/web/app/[workspaceSlug]/(settings)/settings/project/[projectId]/labels/page.tsx b/web/app/[workspaceSlug]/(settings)/settings/project/[projectId]/labels/page.tsx index 5c2696ef8ab..d0872a2031e 100644 --- a/web/app/[workspaceSlug]/(settings)/settings/project/[projectId]/labels/page.tsx +++ b/web/app/[workspaceSlug]/(settings)/settings/project/[projectId]/labels/page.tsx @@ -39,7 +39,7 @@ const LabelsSettingsPage = observer(() => { element, }) ); - }, [scrollableContainerRef?.current]); + }, []); if (workspaceUserInfo && !canPerformProjectMemberActions) { return ; diff --git a/web/core/components/preferences/list.tsx b/web/core/components/preferences/list.tsx index fea84a5899a..beb08fd1aab 100644 --- a/web/core/components/preferences/list.tsx +++ b/web/core/components/preferences/list.tsx @@ -1,12 +1,11 @@ -import { observer } from "mobx-react"; import { PREFERENCE_OPTIONS } from "@plane/constants"; import { PREFERENCE_COMPONENTS } from "@/plane-web/components/preferences/config"; -export const PreferencesList = observer(() => ( +export const PreferencesList = () => (
    {PREFERENCE_OPTIONS.map((option) => { const Component = PREFERENCE_COMPONENTS[option.id as keyof typeof PREFERENCE_COMPONENTS]; return ; })}
    -)); +); diff --git a/web/core/components/settings/project/sidebar/nav-item-children.tsx b/web/core/components/settings/project/sidebar/nav-item-children.tsx index 7eaf7f71063..8250b59f524 100644 --- a/web/core/components/settings/project/sidebar/nav-item-children.tsx +++ b/web/core/components/settings/project/sidebar/nav-item-children.tsx @@ -46,8 +46,8 @@ export const NavItemChildren = observer((props: { projectId: string }) => { allowPermissions( link.access, EUserPermissionsLevel.PROJECT, - workspaceSlug.toString(), - projectId.toString() + workspaceSlug?.toString() ?? "", + projectId?.toString() ?? "" ) && ( = observer((props)

    {allWorkspaces && allWorkspaces.length > 0 && ( - - + + Go Home )} {allWorkspaces?.length > 0 && ( - - + + Visit Profile )} {allWorkspaces && allWorkspaces.length === 0 && ( - - + + Create new workspace )}
    From f713538811bb712f062067e36b0bc3ab8ecae285 Mon Sep 17 00:00:00 2001 From: gakshita Date: Fri, 23 May 2025 14:05:18 +0530 Subject: [PATCH 33/45] fix: project -> projects --- .../projects/(detail)/[projectId]/cycles/(list)/page.tsx | 2 +- .../(projects)/projects/(detail)/[projectId]/intake/page.tsx | 2 +- .../projects/(detail)/[projectId]/modules/(list)/page.tsx | 2 +- .../projects/(detail)/[projectId]/pages/(list)/page.tsx | 2 +- .../projects/(detail)/[projectId]/views/(list)/page.tsx | 2 +- .../{project => projects}/[projectId]/automations/page.tsx | 0 .../{project => projects}/[projectId]/estimates/page.tsx | 0 .../{project => projects}/[projectId]/features/page.tsx | 0 .../{project => projects}/[projectId]/labels/page.tsx | 0 .../{project => projects}/[projectId]/members/page.tsx | 0 .../settings/{project => projects}/[projectId]/page.tsx | 0 .../settings/{project => projects}/[projectId]/sidebar.tsx | 0 .../{project => projects}/[projectId]/states/page.tsx | 0 .../(settings)/settings/{project => projects}/layout.tsx | 0 .../(settings)/settings/{project => projects}/page.tsx | 0 .../issues/issue-layouts/empty-states/archived-issues.tsx | 2 +- web/core/components/project/card.tsx | 4 ++-- .../components/settings/project/sidebar/nav-item-children.tsx | 4 ++-- web/core/components/settings/project/sidebar/root.tsx | 2 +- web/core/components/settings/tabs.tsx | 2 +- web/core/components/workspace/sidebar/projects-list-item.tsx | 2 +- 21 files changed, 13 insertions(+), 13 deletions(-) rename web/app/[workspaceSlug]/(settings)/settings/{project => projects}/[projectId]/automations/page.tsx (100%) rename web/app/[workspaceSlug]/(settings)/settings/{project => projects}/[projectId]/estimates/page.tsx (100%) rename web/app/[workspaceSlug]/(settings)/settings/{project => projects}/[projectId]/features/page.tsx (100%) rename web/app/[workspaceSlug]/(settings)/settings/{project => projects}/[projectId]/labels/page.tsx (100%) rename web/app/[workspaceSlug]/(settings)/settings/{project => projects}/[projectId]/members/page.tsx (100%) rename web/app/[workspaceSlug]/(settings)/settings/{project => projects}/[projectId]/page.tsx (100%) rename web/app/[workspaceSlug]/(settings)/settings/{project => projects}/[projectId]/sidebar.tsx (100%) rename web/app/[workspaceSlug]/(settings)/settings/{project => projects}/[projectId]/states/page.tsx (100%) rename web/app/[workspaceSlug]/(settings)/settings/{project => projects}/layout.tsx (100%) rename web/app/[workspaceSlug]/(settings)/settings/{project => projects}/page.tsx (100%) diff --git a/web/app/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/cycles/(list)/page.tsx b/web/app/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/cycles/(list)/page.tsx index 70a7e4781fd..e23396f4df5 100644 --- a/web/app/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/cycles/(list)/page.tsx +++ b/web/app/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/cycles/(list)/page.tsx @@ -69,7 +69,7 @@ const ProjectCyclesPage = observer(() => { primaryButton={{ text: t("disabled_project.empty_state.cycle.primary_button.text"), onClick: () => { - router.push(`/${workspaceSlug}/settings/project/${projectId}/features`); + router.push(`/${workspaceSlug}/settings/projects/${projectId}/features`); }, disabled: !hasAdminLevelPermission, }} diff --git a/web/app/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/intake/page.tsx b/web/app/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/intake/page.tsx index f71a685c36e..5b6ad8b5f1f 100644 --- a/web/app/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/intake/page.tsx +++ b/web/app/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/intake/page.tsx @@ -42,7 +42,7 @@ const ProjectInboxPage = observer(() => { primaryButton={{ text: t("disabled_project.empty_state.inbox.primary_button.text"), onClick: () => { - router.push(`/${workspaceSlug}/settings/project/${projectId}/features`); + router.push(`/${workspaceSlug}/settings/projects/${projectId}/features`); }, disabled: !canPerformEmptyStateActions, }} diff --git a/web/app/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/modules/(list)/page.tsx b/web/app/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/modules/(list)/page.tsx index 9f2371f41b2..7c62a4d51ae 100644 --- a/web/app/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/modules/(list)/page.tsx +++ b/web/app/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/modules/(list)/page.tsx @@ -61,7 +61,7 @@ const ProjectModulesPage = observer(() => { primaryButton={{ text: t("disabled_project.empty_state.module.primary_button.text"), onClick: () => { - router.push(`/${workspaceSlug}/settings/project/${projectId}/features`); + router.push(`/${workspaceSlug}/settings/projects/${projectId}/features`); }, disabled: !canPerformEmptyStateActions, }} diff --git a/web/app/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/pages/(list)/page.tsx b/web/app/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/pages/(list)/page.tsx index 733b124e770..270faf985de 100644 --- a/web/app/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/pages/(list)/page.tsx +++ b/web/app/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/pages/(list)/page.tsx @@ -54,7 +54,7 @@ const ProjectPagesPage = observer(() => { primaryButton={{ text: t("disabled_project.empty_state.page.primary_button.text"), onClick: () => { - router.push(`/${workspaceSlug}/settings/project/${projectId}/features`); + router.push(`/${workspaceSlug}/settings/projects/${projectId}/features`); }, disabled: !canPerformEmptyStateActions, }} diff --git a/web/app/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/views/(list)/page.tsx b/web/app/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/views/(list)/page.tsx index 7726e6f7212..4e21defc93d 100644 --- a/web/app/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/views/(list)/page.tsx +++ b/web/app/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/views/(list)/page.tsx @@ -68,7 +68,7 @@ const ProjectViewsPage = observer(() => { primaryButton={{ text: t("disabled_project.empty_state.view.primary_button.text"), onClick: () => { - router.push(`/${workspaceSlug}/settings/project/${projectId}/features`); + router.push(`/${workspaceSlug}/settings/projects/${projectId}/features`); }, disabled: !canPerformEmptyStateActions, }} diff --git a/web/app/[workspaceSlug]/(settings)/settings/project/[projectId]/automations/page.tsx b/web/app/[workspaceSlug]/(settings)/settings/projects/[projectId]/automations/page.tsx similarity index 100% rename from web/app/[workspaceSlug]/(settings)/settings/project/[projectId]/automations/page.tsx rename to web/app/[workspaceSlug]/(settings)/settings/projects/[projectId]/automations/page.tsx diff --git a/web/app/[workspaceSlug]/(settings)/settings/project/[projectId]/estimates/page.tsx b/web/app/[workspaceSlug]/(settings)/settings/projects/[projectId]/estimates/page.tsx similarity index 100% rename from web/app/[workspaceSlug]/(settings)/settings/project/[projectId]/estimates/page.tsx rename to web/app/[workspaceSlug]/(settings)/settings/projects/[projectId]/estimates/page.tsx diff --git a/web/app/[workspaceSlug]/(settings)/settings/project/[projectId]/features/page.tsx b/web/app/[workspaceSlug]/(settings)/settings/projects/[projectId]/features/page.tsx similarity index 100% rename from web/app/[workspaceSlug]/(settings)/settings/project/[projectId]/features/page.tsx rename to web/app/[workspaceSlug]/(settings)/settings/projects/[projectId]/features/page.tsx diff --git a/web/app/[workspaceSlug]/(settings)/settings/project/[projectId]/labels/page.tsx b/web/app/[workspaceSlug]/(settings)/settings/projects/[projectId]/labels/page.tsx similarity index 100% rename from web/app/[workspaceSlug]/(settings)/settings/project/[projectId]/labels/page.tsx rename to web/app/[workspaceSlug]/(settings)/settings/projects/[projectId]/labels/page.tsx diff --git a/web/app/[workspaceSlug]/(settings)/settings/project/[projectId]/members/page.tsx b/web/app/[workspaceSlug]/(settings)/settings/projects/[projectId]/members/page.tsx similarity index 100% rename from web/app/[workspaceSlug]/(settings)/settings/project/[projectId]/members/page.tsx rename to web/app/[workspaceSlug]/(settings)/settings/projects/[projectId]/members/page.tsx diff --git a/web/app/[workspaceSlug]/(settings)/settings/project/[projectId]/page.tsx b/web/app/[workspaceSlug]/(settings)/settings/projects/[projectId]/page.tsx similarity index 100% rename from web/app/[workspaceSlug]/(settings)/settings/project/[projectId]/page.tsx rename to web/app/[workspaceSlug]/(settings)/settings/projects/[projectId]/page.tsx diff --git a/web/app/[workspaceSlug]/(settings)/settings/project/[projectId]/sidebar.tsx b/web/app/[workspaceSlug]/(settings)/settings/projects/[projectId]/sidebar.tsx similarity index 100% rename from web/app/[workspaceSlug]/(settings)/settings/project/[projectId]/sidebar.tsx rename to web/app/[workspaceSlug]/(settings)/settings/projects/[projectId]/sidebar.tsx diff --git a/web/app/[workspaceSlug]/(settings)/settings/project/[projectId]/states/page.tsx b/web/app/[workspaceSlug]/(settings)/settings/projects/[projectId]/states/page.tsx similarity index 100% rename from web/app/[workspaceSlug]/(settings)/settings/project/[projectId]/states/page.tsx rename to web/app/[workspaceSlug]/(settings)/settings/projects/[projectId]/states/page.tsx diff --git a/web/app/[workspaceSlug]/(settings)/settings/project/layout.tsx b/web/app/[workspaceSlug]/(settings)/settings/projects/layout.tsx similarity index 100% rename from web/app/[workspaceSlug]/(settings)/settings/project/layout.tsx rename to web/app/[workspaceSlug]/(settings)/settings/projects/layout.tsx diff --git a/web/app/[workspaceSlug]/(settings)/settings/project/page.tsx b/web/app/[workspaceSlug]/(settings)/settings/projects/page.tsx similarity index 100% rename from web/app/[workspaceSlug]/(settings)/settings/project/page.tsx rename to web/app/[workspaceSlug]/(settings)/settings/projects/page.tsx diff --git a/web/core/components/issues/issue-layouts/empty-states/archived-issues.tsx b/web/core/components/issues/issue-layouts/empty-states/archived-issues.tsx index a20b2513688..f9aca06f2ba 100644 --- a/web/core/components/issues/issue-layouts/empty-states/archived-issues.tsx +++ b/web/core/components/issues/issue-layouts/empty-states/archived-issues.tsx @@ -72,7 +72,7 @@ export const ProjectArchivedEmptyState: React.FC = observer(() => { assetPath={archivedIssuesResolvedPath} primaryButton={{ text: t("project_issues.empty_state.no_archived_issues.primary_button.text"), - onClick: () => router.push(`/${workspaceSlug}/settings/project/${projectId}/automations`), + onClick: () => router.push(`/${workspaceSlug}/settings/projects/${projectId}/automations`), disabled: !canPerformEmptyStateActions, }} /> diff --git a/web/core/components/project/card.tsx b/web/core/components/project/card.tsx index 3315f2cb6f2..48ff34d242f 100644 --- a/web/core/components/project/card.tsx +++ b/web/core/components/project/card.tsx @@ -127,7 +127,7 @@ export const ProjectCard: React.FC = observer((props) => { const MENU_ITEMS: TContextMenuItem[] = [ { key: "settings", - action: () => router.push(`/${workspaceSlug}/settings/project/${project.id}`, {}, { showProgressBar: false }), + action: () => router.push(`/${workspaceSlug}/settings/projects/${project.id}`, {}, { showProgressBar: false }), title: "Settings", icon: Settings, shouldRender: !isArchived && (hasAdminRole || hasMemberRole), @@ -344,7 +344,7 @@ export const ProjectCard: React.FC = observer((props) => { onClick={(e) => { e.stopPropagation(); }} - href={`/${workspaceSlug}/settings/project/${project.id}`} + href={`/${workspaceSlug}/settings/projects/${project.id}`} > diff --git a/web/core/components/settings/project/sidebar/nav-item-children.tsx b/web/core/components/settings/project/sidebar/nav-item-children.tsx index 8250b59f524..02b0d42c219 100644 --- a/web/core/components/settings/project/sidebar/nav-item-children.tsx +++ b/web/core/components/settings/project/sidebar/nav-item-children.tsx @@ -41,7 +41,7 @@ export const NavItemChildren = observer((props: { projectId: string }) => {
    {PROJECT_SETTINGS_LINKS.map((link) => { - const isActive = link.highlight(pathname, `/${workspaceSlug}/settings/project/${projectId}`); + const isActive = link.highlight(pathname, `/${workspaceSlug}/settings/projects/${projectId}`); return ( allowPermissions( link.access, @@ -51,7 +51,7 @@ export const NavItemChildren = observer((props: { projectId: string }) => { ) && ( toggleSidebar(true)} >
    ({ key: projectId, i18n_label: projectMap[projectId].name, - href: `/settings/project/${projectId}`, + href: `/settings/projects/${projectId}`, icon: , })); diff --git a/web/core/components/settings/tabs.tsx b/web/core/components/settings/tabs.tsx index 4419bb8811b..59f6aee1fad 100644 --- a/web/core/components/settings/tabs.tsx +++ b/web/core/components/settings/tabs.tsx @@ -18,7 +18,7 @@ const TABS = { projects: { key: "projects", label: "Projects", - href: `/settings/project/`, + href: `/settings/projects/`, }, }; diff --git a/web/core/components/workspace/sidebar/projects-list-item.tsx b/web/core/components/workspace/sidebar/projects-list-item.tsx index 64088505274..eb644c16a2b 100644 --- a/web/core/components/workspace/sidebar/projects-list-item.tsx +++ b/web/core/components/workspace/sidebar/projects-list-item.tsx @@ -356,7 +356,7 @@ export const SidebarProjectsListItem: React.FC = observer((props) => { )} - +
    {t("settings")} From 3a36f9916c8f5f37ec51be24f6f6c5f41a320870 Mon Sep 17 00:00:00 2001 From: gakshita Date: Fri, 23 May 2025 14:24:08 +0530 Subject: [PATCH 34/45] fix: refactoring --- .../settings/(workspace)/sidebar.tsx | 18 ++--- .../(settings)/settings/account/sidebar.tsx | 24 +++--- .../settings/projects/[projectId]/sidebar.tsx | 73 ------------------- .../components/settings/sidebar/header.tsx | 6 +- 4 files changed, 24 insertions(+), 97 deletions(-) delete mode 100644 web/app/[workspaceSlug]/(settings)/settings/projects/[projectId]/sidebar.tsx diff --git a/web/app/[workspaceSlug]/(settings)/settings/(workspace)/sidebar.tsx b/web/app/[workspaceSlug]/(settings)/settings/(workspace)/sidebar.tsx index 2192bf89992..8a97c8b050f 100644 --- a/web/app/[workspaceSlug]/(settings)/settings/(workspace)/sidebar.tsx +++ b/web/app/[workspaceSlug]/(settings)/settings/(workspace)/sidebar.tsx @@ -12,6 +12,14 @@ import { SettingsSidebar } from "@/components/settings"; import { useUserPermissions } from "@/hooks/store/user"; import { shouldRenderSettingLink } from "@/plane-web/helpers/workspace.helper"; +const ICONS = { + general: Building, + members: Users, + export: ArrowUpToLine, + "billing-and-plans": CreditCard, + webhooks: Webhook, +}; + export const WorkspaceActionIcons = ({ type, size, @@ -21,16 +29,8 @@ export const WorkspaceActionIcons = ({ size?: number; className?: string; }) => { - const icons = { - general: Building, - members: Users, - export: ArrowUpToLine, - "billing-and-plans": CreditCard, - webhooks: Webhook, - }; - if (type === undefined) return null; - const Icon = icons[type as keyof typeof icons]; + const Icon = ICONS[type as keyof typeof ICONS]; if (!Icon) return null; return ; }; diff --git a/web/app/[workspaceSlug]/(settings)/settings/account/sidebar.tsx b/web/app/[workspaceSlug]/(settings)/settings/account/sidebar.tsx index 49f1e0ecb27..6e495daff10 100644 --- a/web/app/[workspaceSlug]/(settings)/settings/account/sidebar.tsx +++ b/web/app/[workspaceSlug]/(settings)/settings/account/sidebar.tsx @@ -12,19 +12,19 @@ import { SettingsSidebar } from "@/components/settings"; import { getFileURL } from "@/helpers/file.helper"; import { useUser, useUserPermissions } from "@/hooks/store/user"; -export const ProjectActionIcons = ({ type, size, className }: { type: string; size?: number; className?: string }) => { - const icons = { - profile: CircleUser, - security: Lock, - activity: Activity, - preferences: Settings2, - notifications: Bell, - "api-tokens": KeyRound, - connections: Blocks, - }; +const ICONS = { + profile: CircleUser, + security: Lock, + activity: Activity, + preferences: Settings2, + notifications: Bell, + "api-tokens": KeyRound, + connections: Blocks, +}; +export const ProjectActionIcons = ({ type, size, className }: { type: string; size?: number; className?: string }) => { if (type === undefined) return null; - const Icon = icons[type as keyof typeof icons]; + const Icon = ICONS[type as keyof typeof ICONS]; if (!Icon) return null; return ; }; @@ -50,7 +50,7 @@ export const ProfileSidebar = observer((props: TProfileSidebarProps) => { (category) => isAdmin || category !== PROFILE_SETTINGS_CATEGORY.DEVELOPER )} groupedSettings={GROUPED_PROFILE_SETTINGS} - workspaceSlug={workspaceSlug.toString()} + workspaceSlug={workspaceSlug?.toString() ?? ""} isActive={(data: { href: string }) => pathname === `/${workspaceSlug}${data.href}/`} customHeader={
    diff --git a/web/app/[workspaceSlug]/(settings)/settings/projects/[projectId]/sidebar.tsx b/web/app/[workspaceSlug]/(settings)/settings/projects/[projectId]/sidebar.tsx deleted file mode 100644 index 7bb1984c89f..00000000000 --- a/web/app/[workspaceSlug]/(settings)/settings/projects/[projectId]/sidebar.tsx +++ /dev/null @@ -1,73 +0,0 @@ -"use client"; - -import React from "react"; -import range from "lodash/range"; -import { observer } from "mobx-react"; -import Link from "next/link"; -import { useParams, usePathname } from "next/navigation"; -import { EUserPermissionsLevel } from "@plane/constants"; -import { useTranslation } from "@plane/i18n"; -// ui -import { Loader } from "@plane/ui"; -// components -import { SidebarNavItem } from "@/components/sidebar"; -// hooks -import { useUserPermissions } from "@/hooks/store"; -// plane web constants -import { PROJECT_SETTINGS_LINKS } from "@/plane-web/constants/project"; - -export const ProjectSettingsSidebar = observer(() => { - const { workspaceSlug, projectId } = useParams(); - const pathname = usePathname(); - // mobx store - const { allowPermissions, projectUserInfo } = useUserPermissions(); - - const { t } = useTranslation(); - - // derived values - const currentProjectRole = projectUserInfo?.[workspaceSlug?.toString()]?.[projectId?.toString()]?.role; - - if (!currentProjectRole) { - return ( -
    -
    - SETTINGS - - {range(8).map((index) => ( - - ))} - -
    -
    - ); - } - - return ( -
    -
    - SETTINGS -
    - {PROJECT_SETTINGS_LINKS.map( - (link) => - allowPermissions( - link.access, - EUserPermissionsLevel.PROJECT, - workspaceSlug.toString(), - projectId.toString() - ) && ( - - - {t(link.i18n_label)} - - - ) - )} -
    -
    -
    - ); -}); diff --git a/web/core/components/settings/sidebar/header.tsx b/web/core/components/settings/sidebar/header.tsx index 65020dda745..ed85f8295ab 100644 --- a/web/core/components/settings/sidebar/header.tsx +++ b/web/core/components/settings/sidebar/header.tsx @@ -12,13 +12,13 @@ export const SettingsSidebarHeader = (props: { customHeader?: React.ReactNode })
    - {currentWorkspace.name} + {currentWorkspace.name ?? "Workspace"}
    {getUserRole(currentWorkspace.role)?.toLowerCase() || "guest"} From 58454bea960368a0480287e8d72c481f645c696b Mon Sep 17 00:00:00 2001 From: gakshita Date: Fri, 23 May 2025 14:40:55 +0530 Subject: [PATCH 35/45] fix: refactor --- web/app/[workspaceSlug]/(settings)/settings/projects/layout.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/web/app/[workspaceSlug]/(settings)/settings/projects/layout.tsx b/web/app/[workspaceSlug]/(settings)/settings/projects/layout.tsx index 68140134bc9..4701775b460 100644 --- a/web/app/[workspaceSlug]/(settings)/settings/projects/layout.tsx +++ b/web/app/[workspaceSlug]/(settings)/settings/projects/layout.tsx @@ -26,7 +26,7 @@ const ProjectSettingsLayout = observer((props: Props) => { useEffect(() => { if (projectId) return; if (joinedProjectIds.length > 0) { - router.push(`/${workspaceSlug}/settings/project/${joinedProjectIds[0]}`); + router.push(`/${workspaceSlug}/settings/projects/${joinedProjectIds[0]}`); } }, [joinedProjectIds, router, workspaceSlug, projectId]); From 426ec3d3a99b76635915cd07b6654a9f2e8bec4c Mon Sep 17 00:00:00 2001 From: gakshita Date: Mon, 26 May 2025 14:09:45 +0530 Subject: [PATCH 36/45] fix: no authorized view consistency --- .../settings/(workspace)/billing/page.tsx | 2 +- .../settings/(workspace)/exports/page.tsx | 2 +- .../settings/(workspace)/imports/page.tsx | 12 ++---------- .../settings/(workspace)/integrations/page.tsx | 16 +++------------- .../(settings)/settings/(workspace)/layout.tsx | 2 +- .../settings/(workspace)/members/page.tsx | 2 +- .../settings/(workspace)/webhooks/page.tsx | 2 +- .../settings/account/api-tokens/page.tsx | 2 +- .../projects/[projectId]/automations/page.tsx | 2 +- .../projects/[projectId]/estimates/page.tsx | 2 +- .../projects/[projectId]/features/page.tsx | 2 +- .../projects/[projectId]/labels/page.tsx | 2 +- .../projects/[projectId]/members/page.tsx | 2 +- .../projects/[projectId]/states/page.tsx | 2 +- .../auth-screens/not-authorized-view.tsx | 5 +++-- web/core/layouts/default-layout/index.tsx | 8 ++++++-- 16 files changed, 26 insertions(+), 39 deletions(-) diff --git a/web/app/[workspaceSlug]/(settings)/settings/(workspace)/billing/page.tsx b/web/app/[workspaceSlug]/(settings)/settings/(workspace)/billing/page.tsx index 35338642e7a..0286476694c 100644 --- a/web/app/[workspaceSlug]/(settings)/settings/(workspace)/billing/page.tsx +++ b/web/app/[workspaceSlug]/(settings)/settings/(workspace)/billing/page.tsx @@ -20,7 +20,7 @@ const BillingSettingsPage = observer(() => { const pageTitle = currentWorkspace?.name ? `${currentWorkspace.name} - Billing & Plans` : undefined; if (workspaceUserInfo && !canPerformWorkspaceAdminActions) { - return ; + return ; } return ( diff --git a/web/app/[workspaceSlug]/(settings)/settings/(workspace)/exports/page.tsx b/web/app/[workspaceSlug]/(settings)/settings/(workspace)/exports/page.tsx index 3812940216f..669a3aedbba 100644 --- a/web/app/[workspaceSlug]/(settings)/settings/(workspace)/exports/page.tsx +++ b/web/app/[workspaceSlug]/(settings)/settings/(workspace)/exports/page.tsx @@ -30,7 +30,7 @@ const ExportsPage = observer(() => { // if user is not authorized to view this page if (workspaceUserInfo && !canPerformWorkspaceMemberActions) { - return ; + return ; } return ( diff --git a/web/app/[workspaceSlug]/(settings)/settings/(workspace)/imports/page.tsx b/web/app/[workspaceSlug]/(settings)/settings/(workspace)/imports/page.tsx index 83e267125b8..1d22e36474d 100644 --- a/web/app/[workspaceSlug]/(settings)/settings/(workspace)/imports/page.tsx +++ b/web/app/[workspaceSlug]/(settings)/settings/(workspace)/imports/page.tsx @@ -3,12 +3,12 @@ import { observer } from "mobx-react"; // components import { EUserPermissions, EUserPermissionsLevel } from "@plane/constants"; +import { NotAuthorizedView } from "@/components/auth-screens"; import { PageHead } from "@/components/core"; import IntegrationGuide from "@/components/integration/guide"; // hooks import { SettingsContentWrapper } from "@/components/settings"; import { useUserPermissions, useWorkspace } from "@/hooks/store"; -// plane web hooks const ImportsPage = observer(() => { // router @@ -19,15 +19,7 @@ const ImportsPage = observer(() => { const isAdmin = allowPermissions([EUserPermissions.ADMIN], EUserPermissionsLevel.WORKSPACE); const pageTitle = currentWorkspace?.name ? `${currentWorkspace.name} - Imports` : undefined; - if (!isAdmin) - return ( - <> - -
    -

    You are not authorized to access this page.

    -
    - - ); + if (!isAdmin) return ; return ( diff --git a/web/app/[workspaceSlug]/(settings)/settings/(workspace)/integrations/page.tsx b/web/app/[workspaceSlug]/(settings)/settings/(workspace)/integrations/page.tsx index 91573ed9212..335631a2ed4 100644 --- a/web/app/[workspaceSlug]/(settings)/settings/(workspace)/integrations/page.tsx +++ b/web/app/[workspaceSlug]/(settings)/settings/(workspace)/integrations/page.tsx @@ -4,6 +4,7 @@ import { useParams } from "next/navigation"; import useSWR from "swr"; // components import { EUserPermissions, EUserPermissionsLevel } from "@plane/constants"; +import { NotAuthorizedView } from "@/components/auth-screens"; import { PageHead } from "@/components/core"; import { SingleIntegrationCard } from "@/components/integration"; import { SettingsContentWrapper } from "@/components/settings"; @@ -27,23 +28,12 @@ const WorkspaceIntegrationsPage = observer(() => { // derived values const isAdmin = allowPermissions([EUserPermissions.ADMIN], EUserPermissionsLevel.WORKSPACE); const pageTitle = currentWorkspace?.name ? `${currentWorkspace.name} - Integrations` : undefined; - - if (!isAdmin) - return ( - -
    - -
    -

    You are not authorized to access this page.

    -
    -
    -
    - ); - const { data: appIntegrations } = useSWR(workspaceSlug && isAdmin ? APP_INTEGRATIONS : null, () => workspaceSlug && isAdmin ? integrationService.getAppIntegrationsList() : null ); + if (!isAdmin) return ; + return ( diff --git a/web/app/[workspaceSlug]/(settings)/settings/(workspace)/layout.tsx b/web/app/[workspaceSlug]/(settings)/settings/(workspace)/layout.tsx index f5fc2eac517..dc0f1e4b92a 100644 --- a/web/app/[workspaceSlug]/(settings)/settings/(workspace)/layout.tsx +++ b/web/app/[workspaceSlug]/(settings)/settings/(workspace)/layout.tsx @@ -43,7 +43,7 @@ const WorkspaceSettingLayout: FC = observer((props) => />
    {workspaceUserInfo && !isAuthorized ? ( - + ) : ( <>
    diff --git a/web/app/[workspaceSlug]/(settings)/settings/(workspace)/members/page.tsx b/web/app/[workspaceSlug]/(settings)/settings/(workspace)/members/page.tsx index e645ab1d25b..250b5bc02fc 100644 --- a/web/app/[workspaceSlug]/(settings)/settings/(workspace)/members/page.tsx +++ b/web/app/[workspaceSlug]/(settings)/settings/(workspace)/members/page.tsx @@ -96,7 +96,7 @@ const WorkspaceMembersSettingsPage = observer(() => { // if user is not authorized to view this page if (workspaceUserInfo && !canPerformWorkspaceMemberActions) { - return ; + return ; } return ( diff --git a/web/app/[workspaceSlug]/(settings)/settings/(workspace)/webhooks/page.tsx b/web/app/[workspaceSlug]/(settings)/settings/(workspace)/webhooks/page.tsx index 603b9fadade..6969c194450 100644 --- a/web/app/[workspaceSlug]/(settings)/settings/(workspace)/webhooks/page.tsx +++ b/web/app/[workspaceSlug]/(settings)/settings/(workspace)/webhooks/page.tsx @@ -49,7 +49,7 @@ const WebhooksListPage = observer(() => { }, [showCreateWebhookModal, webhookSecretKey, clearSecretKey]); if (workspaceUserInfo && !canPerformWorkspaceAdminActions) { - return ; + return ; } if (!webhooks) return ; diff --git a/web/app/[workspaceSlug]/(settings)/settings/account/api-tokens/page.tsx b/web/app/[workspaceSlug]/(settings)/settings/account/api-tokens/page.tsx index acfbb789716..bd99b7bd674 100644 --- a/web/app/[workspaceSlug]/(settings)/settings/account/api-tokens/page.tsx +++ b/web/app/[workspaceSlug]/(settings)/settings/account/api-tokens/page.tsx @@ -48,7 +48,7 @@ const ApiTokensPage = observer(() => { : undefined; if (workspaceUserInfo && !canPerformWorkspaceAdminActions) { - return ; + return ; } if (!tokens) { diff --git a/web/app/[workspaceSlug]/(settings)/settings/projects/[projectId]/automations/page.tsx b/web/app/[workspaceSlug]/(settings)/settings/projects/[projectId]/automations/page.tsx index 8127dba4512..61fecee89b0 100644 --- a/web/app/[workspaceSlug]/(settings)/settings/projects/[projectId]/automations/page.tsx +++ b/web/app/[workspaceSlug]/(settings)/settings/projects/[projectId]/automations/page.tsx @@ -44,7 +44,7 @@ const AutomationSettingsPage = observer(() => { const pageTitle = projectDetails?.name ? `${projectDetails?.name} - Automations` : undefined; if (workspaceUserInfo && !canPerformProjectAdminActions) { - return ; + return ; } return ( diff --git a/web/app/[workspaceSlug]/(settings)/settings/projects/[projectId]/estimates/page.tsx b/web/app/[workspaceSlug]/(settings)/settings/projects/[projectId]/estimates/page.tsx index 5f24d2d81ae..db9d17e89be 100644 --- a/web/app/[workspaceSlug]/(settings)/settings/projects/[projectId]/estimates/page.tsx +++ b/web/app/[workspaceSlug]/(settings)/settings/projects/[projectId]/estimates/page.tsx @@ -24,7 +24,7 @@ const EstimatesSettingsPage = observer(() => { if (!workspaceSlug || !projectId) return <>; if (workspaceUserInfo && !canPerformProjectAdminActions) { - return ; + return ; } return ( diff --git a/web/app/[workspaceSlug]/(settings)/settings/projects/[projectId]/features/page.tsx b/web/app/[workspaceSlug]/(settings)/settings/projects/[projectId]/features/page.tsx index 8efbb8b3eb3..d84ba10c4ab 100644 --- a/web/app/[workspaceSlug]/(settings)/settings/projects/[projectId]/features/page.tsx +++ b/web/app/[workspaceSlug]/(settings)/settings/projects/[projectId]/features/page.tsx @@ -24,7 +24,7 @@ const FeaturesSettingsPage = observer(() => { if (!workspaceSlug || !projectId) return null; if (workspaceUserInfo && !canPerformProjectAdminActions) { - return ; + return ; } return ( diff --git a/web/app/[workspaceSlug]/(settings)/settings/projects/[projectId]/labels/page.tsx b/web/app/[workspaceSlug]/(settings)/settings/projects/[projectId]/labels/page.tsx index d0872a2031e..317e7692981 100644 --- a/web/app/[workspaceSlug]/(settings)/settings/projects/[projectId]/labels/page.tsx +++ b/web/app/[workspaceSlug]/(settings)/settings/projects/[projectId]/labels/page.tsx @@ -42,7 +42,7 @@ const LabelsSettingsPage = observer(() => { }, []); if (workspaceUserInfo && !canPerformProjectMemberActions) { - return ; + return ; } return ( diff --git a/web/app/[workspaceSlug]/(settings)/settings/projects/[projectId]/members/page.tsx b/web/app/[workspaceSlug]/(settings)/settings/projects/[projectId]/members/page.tsx index 0d28e2550d0..06990217fe7 100644 --- a/web/app/[workspaceSlug]/(settings)/settings/projects/[projectId]/members/page.tsx +++ b/web/app/[workspaceSlug]/(settings)/settings/projects/[projectId]/members/page.tsx @@ -24,7 +24,7 @@ const MembersSettingsPage = observer(() => { const canPerformProjectMemberActions = isProjectMemberOrAdmin || isWorkspaceAdmin; if (workspaceUserInfo && !canPerformProjectMemberActions) { - return ; + return ; } return ( diff --git a/web/app/[workspaceSlug]/(settings)/settings/projects/[projectId]/states/page.tsx b/web/app/[workspaceSlug]/(settings)/settings/projects/[projectId]/states/page.tsx index c23636f7fd9..b0d86b27cce 100644 --- a/web/app/[workspaceSlug]/(settings)/settings/projects/[projectId]/states/page.tsx +++ b/web/app/[workspaceSlug]/(settings)/settings/projects/[projectId]/states/page.tsx @@ -29,7 +29,7 @@ const StatesSettingsPage = observer(() => { ); if (workspaceUserInfo && !canPerformProjectMemberActions) { - return ; + return ; } return ( diff --git a/web/core/components/auth-screens/not-authorized-view.tsx b/web/core/components/auth-screens/not-authorized-view.tsx index fe344f468f8..58265a41fbb 100644 --- a/web/core/components/auth-screens/not-authorized-view.tsx +++ b/web/core/components/auth-screens/not-authorized-view.tsx @@ -12,17 +12,18 @@ type Props = { actionButton?: React.ReactNode; section?: "settings" | "general"; isProjectView?: boolean; + className?: string; }; export const NotAuthorizedView: React.FC = observer((props) => { - const { actionButton, section = "general", isProjectView = false } = props; + const { actionButton, section = "general", isProjectView = false, className } = props; // assets const settingAsset = isProjectView ? ProjectNotAuthorizedImg : WorkspaceNotAuthorizedImg; const asset = section === "settings" ? settingAsset : Unauthorized; return ( - +
    diff --git a/web/core/layouts/default-layout/index.tsx b/web/core/layouts/default-layout/index.tsx index ea647312b3a..4282f40a8be 100644 --- a/web/core/layouts/default-layout/index.tsx +++ b/web/core/layouts/default-layout/index.tsx @@ -1,12 +1,16 @@ import { FC, ReactNode } from "react"; +import { cn } from "@plane/utils"; type Props = { children: ReactNode; gradient?: boolean; + className?: string; }; -const DefaultLayout: FC = ({ children, gradient = false }) => ( -
    {children}
    +const DefaultLayout: FC = ({ children, gradient = false, className }) => ( +
    + {children} +
    ); export default DefaultLayout; From af8f0108121efd1ef0b25541bff13d2cc1e58551 Mon Sep 17 00:00:00 2001 From: gakshita Date: Mon, 26 May 2025 14:36:42 +0530 Subject: [PATCH 37/45] fix: folder structure --- .../[workspaceSlug]/(projects)/active-cycles/header.tsx | 0 .../[workspaceSlug]/(projects)/active-cycles/layout.tsx | 0 .../{ => (all)}/[workspaceSlug]/(projects)/active-cycles/page.tsx | 0 .../{ => (all)}/[workspaceSlug]/(projects)/analytics/header.tsx | 0 .../{ => (all)}/[workspaceSlug]/(projects)/analytics/layout.tsx | 0 web/app/{ => (all)}/[workspaceSlug]/(projects)/analytics/page.tsx | 0 .../[workspaceSlug]/(projects)/browse/[workItem]/header.tsx | 0 .../[workspaceSlug]/(projects)/browse/[workItem]/layout.tsx | 0 .../[workspaceSlug]/(projects)/browse/[workItem]/page.tsx | 0 web/app/{ => (all)}/[workspaceSlug]/(projects)/drafts/header.tsx | 0 web/app/{ => (all)}/[workspaceSlug]/(projects)/drafts/layout.tsx | 0 web/app/{ => (all)}/[workspaceSlug]/(projects)/drafts/page.tsx | 0 .../[workspaceSlug]/(projects)/extended-project-sidebar.tsx | 0 .../{ => (all)}/[workspaceSlug]/(projects)/extended-sidebar.tsx | 0 web/app/{ => (all)}/[workspaceSlug]/(projects)/header.tsx | 0 web/app/{ => (all)}/[workspaceSlug]/(projects)/layout.tsx | 0 .../[workspaceSlug]/(projects)/notifications/layout.tsx | 0 .../{ => (all)}/[workspaceSlug]/(projects)/notifications/page.tsx | 0 web/app/{ => (all)}/[workspaceSlug]/(projects)/page.tsx | 0 .../(projects)/profile/[userId]/[profileViewId]/page.tsx | 0 .../[workspaceSlug]/(projects)/profile/[userId]/activity/page.tsx | 0 .../[workspaceSlug]/(projects)/profile/[userId]/header.tsx | 0 .../[workspaceSlug]/(projects)/profile/[userId]/layout.tsx | 0 .../[workspaceSlug]/(projects)/profile/[userId]/mobile-header.tsx | 0 .../[workspaceSlug]/(projects)/profile/[userId]/navbar.tsx | 0 .../[workspaceSlug]/(projects)/profile/[userId]/page.tsx | 0 .../projects/(detail)/[projectId]/archives/cycles/layout.tsx | 0 .../projects/(detail)/[projectId]/archives/cycles/page.tsx | 0 .../(projects)/projects/(detail)/[projectId]/archives/header.tsx | 0 .../archives/issues/(detail)/[archivedIssueId]/page.tsx | 0 .../(detail)/[projectId]/archives/issues/(detail)/header.tsx | 0 .../(detail)/[projectId]/archives/issues/(detail)/layout.tsx | 0 .../(detail)/[projectId]/archives/issues/(list)/layout.tsx | 0 .../projects/(detail)/[projectId]/archives/issues/(list)/page.tsx | 0 .../projects/(detail)/[projectId]/archives/modules/layout.tsx | 0 .../projects/(detail)/[projectId]/archives/modules/page.tsx | 0 .../(detail)/[projectId]/cycles/(detail)/[cycleId]/page.tsx | 0 .../projects/(detail)/[projectId]/cycles/(detail)/header.tsx | 0 .../projects/(detail)/[projectId]/cycles/(detail)/layout.tsx | 0 .../(detail)/[projectId]/cycles/(detail)/mobile-header.tsx | 0 .../projects/(detail)/[projectId]/cycles/(list)/header.tsx | 0 .../projects/(detail)/[projectId]/cycles/(list)/layout.tsx | 0 .../projects/(detail)/[projectId]/cycles/(list)/mobile-header.tsx | 0 .../projects/(detail)/[projectId]/cycles/(list)/page.tsx | 0 .../projects/(detail)/[projectId]/draft-issues/header.tsx | 0 .../projects/(detail)/[projectId]/draft-issues/layout.tsx | 0 .../projects/(detail)/[projectId]/draft-issues/page.tsx | 0 .../(projects)/projects/(detail)/[projectId]/intake/layout.tsx | 0 .../(projects)/projects/(detail)/[projectId]/intake/page.tsx | 0 .../(detail)/[projectId]/issues/(detail)/[issueId]/page.tsx | 0 .../projects/(detail)/[projectId]/issues/(list)/header.tsx | 0 .../projects/(detail)/[projectId]/issues/(list)/layout.tsx | 0 .../projects/(detail)/[projectId]/issues/(list)/mobile-header.tsx | 0 .../projects/(detail)/[projectId]/issues/(list)/page.tsx | 0 .../(detail)/[projectId]/modules/(detail)/[moduleId]/page.tsx | 0 .../projects/(detail)/[projectId]/modules/(detail)/header.tsx | 0 .../projects/(detail)/[projectId]/modules/(detail)/layout.tsx | 0 .../(detail)/[projectId]/modules/(detail)/mobile-header.tsx | 0 .../projects/(detail)/[projectId]/modules/(list)/header.tsx | 0 .../projects/(detail)/[projectId]/modules/(list)/layout.tsx | 0 .../(detail)/[projectId]/modules/(list)/mobile-header.tsx | 0 .../projects/(detail)/[projectId]/modules/(list)/page.tsx | 0 .../(detail)/[projectId]/pages/(detail)/[pageId]/page.tsx | 0 .../projects/(detail)/[projectId]/pages/(detail)/header.tsx | 0 .../projects/(detail)/[projectId]/pages/(detail)/layout.tsx | 0 .../projects/(detail)/[projectId]/pages/(list)/header.tsx | 0 .../projects/(detail)/[projectId]/pages/(list)/layout.tsx | 0 .../projects/(detail)/[projectId]/pages/(list)/page.tsx | 0 .../[projectId]/settings/(with-sidebar)/automations/page.tsx | 0 .../[projectId]/settings/(with-sidebar)/estimates/page.tsx | 0 .../[projectId]/settings/(with-sidebar)/features/page.tsx | 0 .../(detail)/[projectId]/settings/(with-sidebar)/labels/page.tsx | 0 .../(detail)/[projectId]/settings/(with-sidebar)/layout.tsx | 0 .../(detail)/[projectId]/settings/(with-sidebar)/members/page.tsx | 0 .../(detail)/[projectId]/settings/(with-sidebar)/page.tsx | 0 .../(detail)/[projectId]/settings/(with-sidebar)/sidebar.tsx | 0 .../(detail)/[projectId]/settings/(with-sidebar)/states/page.tsx | 0 .../(projects)/projects/(detail)/[projectId]/settings/header.tsx | 0 .../(detail)/[projectId]/views/(detail)/[viewId]/header.tsx | 0 .../(detail)/[projectId]/views/(detail)/[viewId]/page.tsx | 0 .../projects/(detail)/[projectId]/views/(detail)/layout.tsx | 0 .../projects/(detail)/[projectId]/views/(list)/header.tsx | 0 .../projects/(detail)/[projectId]/views/(list)/layout.tsx | 0 .../projects/(detail)/[projectId]/views/(list)/mobile-header.tsx | 0 .../projects/(detail)/[projectId]/views/(list)/page.tsx | 0 .../(projects)/projects/(detail)/archives/layout.tsx | 0 .../(projects)/projects/(detail)/archives/page.tsx | 0 .../[workspaceSlug]/(projects)/projects/(detail)/layout.tsx | 0 .../[workspaceSlug]/(projects)/projects/(list)/layout.tsx | 0 .../[workspaceSlug]/(projects)/projects/(list)/page.tsx | 0 web/app/{ => (all)}/[workspaceSlug]/(projects)/sidebar.tsx | 0 .../{ => (all)}/[workspaceSlug]/(projects)/stickies/header.tsx | 0 .../{ => (all)}/[workspaceSlug]/(projects)/stickies/layout.tsx | 0 web/app/{ => (all)}/[workspaceSlug]/(projects)/stickies/page.tsx | 0 .../(projects)/workspace-views/[globalViewId]/page.tsx | 0 .../[workspaceSlug]/(projects)/workspace-views/header.tsx | 0 .../[workspaceSlug]/(projects)/workspace-views/layout.tsx | 0 .../[workspaceSlug]/(projects)/workspace-views/page.tsx | 0 web/app/{ => (all)}/[workspaceSlug]/(settings)/layout.tsx | 0 .../(settings)/settings/(workspace)/billing/page.tsx | 0 .../(settings)/settings/(workspace)/exports/page.tsx | 0 .../(settings)/settings/(workspace)/imports/page.tsx | 0 .../(settings)/settings/(workspace)/integrations/page.tsx | 0 .../[workspaceSlug]/(settings)/settings/(workspace)/layout.tsx | 0 .../(settings)/settings/(workspace)/members/page.tsx | 0 .../(settings)/settings/(workspace)/mobile-header-tabs.tsx | 0 .../[workspaceSlug]/(settings)/settings/(workspace)/page.tsx | 0 .../[workspaceSlug]/(settings)/settings/(workspace)/sidebar.tsx | 0 .../(settings)/settings/(workspace)/webhooks/[webhookId]/page.tsx | 0 .../(settings)/settings/(workspace)/webhooks/page.tsx | 0 .../[workspaceSlug]/(settings)/settings/account/activity/page.tsx | 0 .../(settings)/settings/account/api-tokens/page.tsx | 0 .../[workspaceSlug]/(settings)/settings/account/layout.tsx | 0 .../(settings)/settings/account/notifications/page.tsx | 0 .../[workspaceSlug]/(settings)/settings/account/page.tsx | 0 .../(settings)/settings/account/preferences/page.tsx | 0 .../[workspaceSlug]/(settings)/settings/account/security/page.tsx | 0 .../[workspaceSlug]/(settings)/settings/account/sidebar.tsx | 0 .../(settings)/settings/projects/[projectId]/automations/page.tsx | 0 .../(settings)/settings/projects/[projectId]/estimates/page.tsx | 0 .../(settings)/settings/projects/[projectId]/features/page.tsx | 0 .../(settings)/settings/projects/[projectId]/labels/page.tsx | 0 .../(settings)/settings/projects/[projectId]/members/page.tsx | 0 .../(settings)/settings/projects/[projectId]/page.tsx | 0 .../(settings)/settings/projects/[projectId]/states/page.tsx | 0 .../[workspaceSlug]/(settings)/settings/projects/layout.tsx | 0 .../[workspaceSlug]/(settings)/settings/projects/page.tsx | 0 web/app/{ => (all)}/accounts/forgot-password/layout.tsx | 0 web/app/{ => (all)}/accounts/forgot-password/page.tsx | 0 web/app/{ => (all)}/accounts/reset-password/layout.tsx | 0 web/app/{ => (all)}/accounts/reset-password/page.tsx | 0 web/app/{ => (all)}/accounts/set-password/layout.tsx | 0 web/app/{ => (all)}/accounts/set-password/page.tsx | 0 web/app/{ => (all)}/create-workspace/layout.tsx | 0 web/app/{ => (all)}/create-workspace/page.tsx | 0 web/app/{ => (all)}/installations/[provider]/layout.tsx | 0 web/app/{ => (all)}/installations/[provider]/page.tsx | 0 web/app/{ => (all)}/invitations/layout.tsx | 0 web/app/{ => (all)}/invitations/page.tsx | 0 web/app/{ => (all)}/onboarding/layout.tsx | 0 web/app/{ => (all)}/onboarding/page.tsx | 0 web/app/{ => (all)}/profile/activity/page.tsx | 0 web/app/{ => (all)}/profile/appearance/page.tsx | 0 web/app/{ => (all)}/profile/layout.tsx | 0 web/app/{ => (all)}/profile/notifications/page.tsx | 0 web/app/{ => (all)}/profile/page.tsx | 0 web/app/{ => (all)}/profile/security/page.tsx | 0 web/app/{ => (all)}/profile/sidebar.tsx | 0 web/app/{ => (all)}/sign-up/layout.tsx | 0 web/app/{ => (all)}/sign-up/page.tsx | 0 web/app/{ => (all)}/workspace-invitations/layout.tsx | 0 web/app/{ => (all)}/workspace-invitations/page.tsx | 0 152 files changed, 0 insertions(+), 0 deletions(-) rename web/app/{ => (all)}/[workspaceSlug]/(projects)/active-cycles/header.tsx (100%) rename web/app/{ => (all)}/[workspaceSlug]/(projects)/active-cycles/layout.tsx (100%) rename web/app/{ => (all)}/[workspaceSlug]/(projects)/active-cycles/page.tsx (100%) rename web/app/{ => (all)}/[workspaceSlug]/(projects)/analytics/header.tsx (100%) rename web/app/{ => (all)}/[workspaceSlug]/(projects)/analytics/layout.tsx (100%) rename web/app/{ => (all)}/[workspaceSlug]/(projects)/analytics/page.tsx (100%) rename web/app/{ => (all)}/[workspaceSlug]/(projects)/browse/[workItem]/header.tsx (100%) rename web/app/{ => (all)}/[workspaceSlug]/(projects)/browse/[workItem]/layout.tsx (100%) rename web/app/{ => (all)}/[workspaceSlug]/(projects)/browse/[workItem]/page.tsx (100%) rename web/app/{ => (all)}/[workspaceSlug]/(projects)/drafts/header.tsx (100%) rename web/app/{ => (all)}/[workspaceSlug]/(projects)/drafts/layout.tsx (100%) rename web/app/{ => (all)}/[workspaceSlug]/(projects)/drafts/page.tsx (100%) rename web/app/{ => (all)}/[workspaceSlug]/(projects)/extended-project-sidebar.tsx (100%) rename web/app/{ => (all)}/[workspaceSlug]/(projects)/extended-sidebar.tsx (100%) rename web/app/{ => (all)}/[workspaceSlug]/(projects)/header.tsx (100%) rename web/app/{ => (all)}/[workspaceSlug]/(projects)/layout.tsx (100%) rename web/app/{ => (all)}/[workspaceSlug]/(projects)/notifications/layout.tsx (100%) rename web/app/{ => (all)}/[workspaceSlug]/(projects)/notifications/page.tsx (100%) rename web/app/{ => (all)}/[workspaceSlug]/(projects)/page.tsx (100%) rename web/app/{ => (all)}/[workspaceSlug]/(projects)/profile/[userId]/[profileViewId]/page.tsx (100%) rename web/app/{ => (all)}/[workspaceSlug]/(projects)/profile/[userId]/activity/page.tsx (100%) rename web/app/{ => (all)}/[workspaceSlug]/(projects)/profile/[userId]/header.tsx (100%) rename web/app/{ => (all)}/[workspaceSlug]/(projects)/profile/[userId]/layout.tsx (100%) rename web/app/{ => (all)}/[workspaceSlug]/(projects)/profile/[userId]/mobile-header.tsx (100%) rename web/app/{ => (all)}/[workspaceSlug]/(projects)/profile/[userId]/navbar.tsx (100%) rename web/app/{ => (all)}/[workspaceSlug]/(projects)/profile/[userId]/page.tsx (100%) rename web/app/{ => (all)}/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/archives/cycles/layout.tsx (100%) rename web/app/{ => (all)}/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/archives/cycles/page.tsx (100%) rename web/app/{ => (all)}/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/archives/header.tsx (100%) rename web/app/{ => (all)}/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/archives/issues/(detail)/[archivedIssueId]/page.tsx (100%) rename web/app/{ => (all)}/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/archives/issues/(detail)/header.tsx (100%) rename web/app/{ => (all)}/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/archives/issues/(detail)/layout.tsx (100%) rename web/app/{ => (all)}/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/archives/issues/(list)/layout.tsx (100%) rename web/app/{ => (all)}/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/archives/issues/(list)/page.tsx (100%) rename web/app/{ => (all)}/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/archives/modules/layout.tsx (100%) rename web/app/{ => (all)}/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/archives/modules/page.tsx (100%) rename web/app/{ => (all)}/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/cycles/(detail)/[cycleId]/page.tsx (100%) rename web/app/{ => (all)}/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/cycles/(detail)/header.tsx (100%) rename web/app/{ => (all)}/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/cycles/(detail)/layout.tsx (100%) rename web/app/{ => (all)}/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/cycles/(detail)/mobile-header.tsx (100%) rename web/app/{ => (all)}/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/cycles/(list)/header.tsx (100%) rename web/app/{ => (all)}/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/cycles/(list)/layout.tsx (100%) rename web/app/{ => (all)}/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/cycles/(list)/mobile-header.tsx (100%) rename web/app/{ => (all)}/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/cycles/(list)/page.tsx (100%) rename web/app/{ => (all)}/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/draft-issues/header.tsx (100%) rename web/app/{ => (all)}/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/draft-issues/layout.tsx (100%) rename web/app/{ => (all)}/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/draft-issues/page.tsx (100%) rename web/app/{ => (all)}/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/intake/layout.tsx (100%) rename web/app/{ => (all)}/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/intake/page.tsx (100%) rename web/app/{ => (all)}/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/issues/(detail)/[issueId]/page.tsx (100%) rename web/app/{ => (all)}/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/issues/(list)/header.tsx (100%) rename web/app/{ => (all)}/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/issues/(list)/layout.tsx (100%) rename web/app/{ => (all)}/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/issues/(list)/mobile-header.tsx (100%) rename web/app/{ => (all)}/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/issues/(list)/page.tsx (100%) rename web/app/{ => (all)}/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/modules/(detail)/[moduleId]/page.tsx (100%) rename web/app/{ => (all)}/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/modules/(detail)/header.tsx (100%) rename web/app/{ => (all)}/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/modules/(detail)/layout.tsx (100%) rename web/app/{ => (all)}/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/modules/(detail)/mobile-header.tsx (100%) rename web/app/{ => (all)}/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/modules/(list)/header.tsx (100%) rename web/app/{ => (all)}/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/modules/(list)/layout.tsx (100%) rename web/app/{ => (all)}/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/modules/(list)/mobile-header.tsx (100%) rename web/app/{ => (all)}/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/modules/(list)/page.tsx (100%) rename web/app/{ => (all)}/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/pages/(detail)/[pageId]/page.tsx (100%) rename web/app/{ => (all)}/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/pages/(detail)/header.tsx (100%) rename web/app/{ => (all)}/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/pages/(detail)/layout.tsx (100%) rename web/app/{ => (all)}/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/pages/(list)/header.tsx (100%) rename web/app/{ => (all)}/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/pages/(list)/layout.tsx (100%) rename web/app/{ => (all)}/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/pages/(list)/page.tsx (100%) rename web/app/{ => (all)}/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/settings/(with-sidebar)/automations/page.tsx (100%) rename web/app/{ => (all)}/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/settings/(with-sidebar)/estimates/page.tsx (100%) rename web/app/{ => (all)}/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/settings/(with-sidebar)/features/page.tsx (100%) rename web/app/{ => (all)}/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/settings/(with-sidebar)/labels/page.tsx (100%) rename web/app/{ => (all)}/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/settings/(with-sidebar)/layout.tsx (100%) rename web/app/{ => (all)}/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/settings/(with-sidebar)/members/page.tsx (100%) rename web/app/{ => (all)}/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/settings/(with-sidebar)/page.tsx (100%) rename web/app/{ => (all)}/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/settings/(with-sidebar)/sidebar.tsx (100%) rename web/app/{ => (all)}/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/settings/(with-sidebar)/states/page.tsx (100%) rename web/app/{ => (all)}/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/settings/header.tsx (100%) rename web/app/{ => (all)}/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/views/(detail)/[viewId]/header.tsx (100%) rename web/app/{ => (all)}/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/views/(detail)/[viewId]/page.tsx (100%) rename web/app/{ => (all)}/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/views/(detail)/layout.tsx (100%) rename web/app/{ => (all)}/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/views/(list)/header.tsx (100%) rename web/app/{ => (all)}/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/views/(list)/layout.tsx (100%) rename web/app/{ => (all)}/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/views/(list)/mobile-header.tsx (100%) rename web/app/{ => (all)}/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/views/(list)/page.tsx (100%) rename web/app/{ => (all)}/[workspaceSlug]/(projects)/projects/(detail)/archives/layout.tsx (100%) rename web/app/{ => (all)}/[workspaceSlug]/(projects)/projects/(detail)/archives/page.tsx (100%) rename web/app/{ => (all)}/[workspaceSlug]/(projects)/projects/(detail)/layout.tsx (100%) rename web/app/{ => (all)}/[workspaceSlug]/(projects)/projects/(list)/layout.tsx (100%) rename web/app/{ => (all)}/[workspaceSlug]/(projects)/projects/(list)/page.tsx (100%) rename web/app/{ => (all)}/[workspaceSlug]/(projects)/sidebar.tsx (100%) rename web/app/{ => (all)}/[workspaceSlug]/(projects)/stickies/header.tsx (100%) rename web/app/{ => (all)}/[workspaceSlug]/(projects)/stickies/layout.tsx (100%) rename web/app/{ => (all)}/[workspaceSlug]/(projects)/stickies/page.tsx (100%) rename web/app/{ => (all)}/[workspaceSlug]/(projects)/workspace-views/[globalViewId]/page.tsx (100%) rename web/app/{ => (all)}/[workspaceSlug]/(projects)/workspace-views/header.tsx (100%) rename web/app/{ => (all)}/[workspaceSlug]/(projects)/workspace-views/layout.tsx (100%) rename web/app/{ => (all)}/[workspaceSlug]/(projects)/workspace-views/page.tsx (100%) rename web/app/{ => (all)}/[workspaceSlug]/(settings)/layout.tsx (100%) rename web/app/{ => (all)}/[workspaceSlug]/(settings)/settings/(workspace)/billing/page.tsx (100%) rename web/app/{ => (all)}/[workspaceSlug]/(settings)/settings/(workspace)/exports/page.tsx (100%) rename web/app/{ => (all)}/[workspaceSlug]/(settings)/settings/(workspace)/imports/page.tsx (100%) rename web/app/{ => (all)}/[workspaceSlug]/(settings)/settings/(workspace)/integrations/page.tsx (100%) rename web/app/{ => (all)}/[workspaceSlug]/(settings)/settings/(workspace)/layout.tsx (100%) rename web/app/{ => (all)}/[workspaceSlug]/(settings)/settings/(workspace)/members/page.tsx (100%) rename web/app/{ => (all)}/[workspaceSlug]/(settings)/settings/(workspace)/mobile-header-tabs.tsx (100%) rename web/app/{ => (all)}/[workspaceSlug]/(settings)/settings/(workspace)/page.tsx (100%) rename web/app/{ => (all)}/[workspaceSlug]/(settings)/settings/(workspace)/sidebar.tsx (100%) rename web/app/{ => (all)}/[workspaceSlug]/(settings)/settings/(workspace)/webhooks/[webhookId]/page.tsx (100%) rename web/app/{ => (all)}/[workspaceSlug]/(settings)/settings/(workspace)/webhooks/page.tsx (100%) rename web/app/{ => (all)}/[workspaceSlug]/(settings)/settings/account/activity/page.tsx (100%) rename web/app/{ => (all)}/[workspaceSlug]/(settings)/settings/account/api-tokens/page.tsx (100%) rename web/app/{ => (all)}/[workspaceSlug]/(settings)/settings/account/layout.tsx (100%) rename web/app/{ => (all)}/[workspaceSlug]/(settings)/settings/account/notifications/page.tsx (100%) rename web/app/{ => (all)}/[workspaceSlug]/(settings)/settings/account/page.tsx (100%) rename web/app/{ => (all)}/[workspaceSlug]/(settings)/settings/account/preferences/page.tsx (100%) rename web/app/{ => (all)}/[workspaceSlug]/(settings)/settings/account/security/page.tsx (100%) rename web/app/{ => (all)}/[workspaceSlug]/(settings)/settings/account/sidebar.tsx (100%) rename web/app/{ => (all)}/[workspaceSlug]/(settings)/settings/projects/[projectId]/automations/page.tsx (100%) rename web/app/{ => (all)}/[workspaceSlug]/(settings)/settings/projects/[projectId]/estimates/page.tsx (100%) rename web/app/{ => (all)}/[workspaceSlug]/(settings)/settings/projects/[projectId]/features/page.tsx (100%) rename web/app/{ => (all)}/[workspaceSlug]/(settings)/settings/projects/[projectId]/labels/page.tsx (100%) rename web/app/{ => (all)}/[workspaceSlug]/(settings)/settings/projects/[projectId]/members/page.tsx (100%) rename web/app/{ => (all)}/[workspaceSlug]/(settings)/settings/projects/[projectId]/page.tsx (100%) rename web/app/{ => (all)}/[workspaceSlug]/(settings)/settings/projects/[projectId]/states/page.tsx (100%) rename web/app/{ => (all)}/[workspaceSlug]/(settings)/settings/projects/layout.tsx (100%) rename web/app/{ => (all)}/[workspaceSlug]/(settings)/settings/projects/page.tsx (100%) rename web/app/{ => (all)}/accounts/forgot-password/layout.tsx (100%) rename web/app/{ => (all)}/accounts/forgot-password/page.tsx (100%) rename web/app/{ => (all)}/accounts/reset-password/layout.tsx (100%) rename web/app/{ => (all)}/accounts/reset-password/page.tsx (100%) rename web/app/{ => (all)}/accounts/set-password/layout.tsx (100%) rename web/app/{ => (all)}/accounts/set-password/page.tsx (100%) rename web/app/{ => (all)}/create-workspace/layout.tsx (100%) rename web/app/{ => (all)}/create-workspace/page.tsx (100%) rename web/app/{ => (all)}/installations/[provider]/layout.tsx (100%) rename web/app/{ => (all)}/installations/[provider]/page.tsx (100%) rename web/app/{ => (all)}/invitations/layout.tsx (100%) rename web/app/{ => (all)}/invitations/page.tsx (100%) rename web/app/{ => (all)}/onboarding/layout.tsx (100%) rename web/app/{ => (all)}/onboarding/page.tsx (100%) rename web/app/{ => (all)}/profile/activity/page.tsx (100%) rename web/app/{ => (all)}/profile/appearance/page.tsx (100%) rename web/app/{ => (all)}/profile/layout.tsx (100%) rename web/app/{ => (all)}/profile/notifications/page.tsx (100%) rename web/app/{ => (all)}/profile/page.tsx (100%) rename web/app/{ => (all)}/profile/security/page.tsx (100%) rename web/app/{ => (all)}/profile/sidebar.tsx (100%) rename web/app/{ => (all)}/sign-up/layout.tsx (100%) rename web/app/{ => (all)}/sign-up/page.tsx (100%) rename web/app/{ => (all)}/workspace-invitations/layout.tsx (100%) rename web/app/{ => (all)}/workspace-invitations/page.tsx (100%) diff --git a/web/app/[workspaceSlug]/(projects)/active-cycles/header.tsx b/web/app/(all)/[workspaceSlug]/(projects)/active-cycles/header.tsx similarity index 100% rename from web/app/[workspaceSlug]/(projects)/active-cycles/header.tsx rename to web/app/(all)/[workspaceSlug]/(projects)/active-cycles/header.tsx diff --git a/web/app/[workspaceSlug]/(projects)/active-cycles/layout.tsx b/web/app/(all)/[workspaceSlug]/(projects)/active-cycles/layout.tsx similarity index 100% rename from web/app/[workspaceSlug]/(projects)/active-cycles/layout.tsx rename to web/app/(all)/[workspaceSlug]/(projects)/active-cycles/layout.tsx diff --git a/web/app/[workspaceSlug]/(projects)/active-cycles/page.tsx b/web/app/(all)/[workspaceSlug]/(projects)/active-cycles/page.tsx similarity index 100% rename from web/app/[workspaceSlug]/(projects)/active-cycles/page.tsx rename to web/app/(all)/[workspaceSlug]/(projects)/active-cycles/page.tsx diff --git a/web/app/[workspaceSlug]/(projects)/analytics/header.tsx b/web/app/(all)/[workspaceSlug]/(projects)/analytics/header.tsx similarity index 100% rename from web/app/[workspaceSlug]/(projects)/analytics/header.tsx rename to web/app/(all)/[workspaceSlug]/(projects)/analytics/header.tsx diff --git a/web/app/[workspaceSlug]/(projects)/analytics/layout.tsx b/web/app/(all)/[workspaceSlug]/(projects)/analytics/layout.tsx similarity index 100% rename from web/app/[workspaceSlug]/(projects)/analytics/layout.tsx rename to web/app/(all)/[workspaceSlug]/(projects)/analytics/layout.tsx diff --git a/web/app/[workspaceSlug]/(projects)/analytics/page.tsx b/web/app/(all)/[workspaceSlug]/(projects)/analytics/page.tsx similarity index 100% rename from web/app/[workspaceSlug]/(projects)/analytics/page.tsx rename to web/app/(all)/[workspaceSlug]/(projects)/analytics/page.tsx diff --git a/web/app/[workspaceSlug]/(projects)/browse/[workItem]/header.tsx b/web/app/(all)/[workspaceSlug]/(projects)/browse/[workItem]/header.tsx similarity index 100% rename from web/app/[workspaceSlug]/(projects)/browse/[workItem]/header.tsx rename to web/app/(all)/[workspaceSlug]/(projects)/browse/[workItem]/header.tsx diff --git a/web/app/[workspaceSlug]/(projects)/browse/[workItem]/layout.tsx b/web/app/(all)/[workspaceSlug]/(projects)/browse/[workItem]/layout.tsx similarity index 100% rename from web/app/[workspaceSlug]/(projects)/browse/[workItem]/layout.tsx rename to web/app/(all)/[workspaceSlug]/(projects)/browse/[workItem]/layout.tsx diff --git a/web/app/[workspaceSlug]/(projects)/browse/[workItem]/page.tsx b/web/app/(all)/[workspaceSlug]/(projects)/browse/[workItem]/page.tsx similarity index 100% rename from web/app/[workspaceSlug]/(projects)/browse/[workItem]/page.tsx rename to web/app/(all)/[workspaceSlug]/(projects)/browse/[workItem]/page.tsx diff --git a/web/app/[workspaceSlug]/(projects)/drafts/header.tsx b/web/app/(all)/[workspaceSlug]/(projects)/drafts/header.tsx similarity index 100% rename from web/app/[workspaceSlug]/(projects)/drafts/header.tsx rename to web/app/(all)/[workspaceSlug]/(projects)/drafts/header.tsx diff --git a/web/app/[workspaceSlug]/(projects)/drafts/layout.tsx b/web/app/(all)/[workspaceSlug]/(projects)/drafts/layout.tsx similarity index 100% rename from web/app/[workspaceSlug]/(projects)/drafts/layout.tsx rename to web/app/(all)/[workspaceSlug]/(projects)/drafts/layout.tsx diff --git a/web/app/[workspaceSlug]/(projects)/drafts/page.tsx b/web/app/(all)/[workspaceSlug]/(projects)/drafts/page.tsx similarity index 100% rename from web/app/[workspaceSlug]/(projects)/drafts/page.tsx rename to web/app/(all)/[workspaceSlug]/(projects)/drafts/page.tsx diff --git a/web/app/[workspaceSlug]/(projects)/extended-project-sidebar.tsx b/web/app/(all)/[workspaceSlug]/(projects)/extended-project-sidebar.tsx similarity index 100% rename from web/app/[workspaceSlug]/(projects)/extended-project-sidebar.tsx rename to web/app/(all)/[workspaceSlug]/(projects)/extended-project-sidebar.tsx diff --git a/web/app/[workspaceSlug]/(projects)/extended-sidebar.tsx b/web/app/(all)/[workspaceSlug]/(projects)/extended-sidebar.tsx similarity index 100% rename from web/app/[workspaceSlug]/(projects)/extended-sidebar.tsx rename to web/app/(all)/[workspaceSlug]/(projects)/extended-sidebar.tsx diff --git a/web/app/[workspaceSlug]/(projects)/header.tsx b/web/app/(all)/[workspaceSlug]/(projects)/header.tsx similarity index 100% rename from web/app/[workspaceSlug]/(projects)/header.tsx rename to web/app/(all)/[workspaceSlug]/(projects)/header.tsx diff --git a/web/app/[workspaceSlug]/(projects)/layout.tsx b/web/app/(all)/[workspaceSlug]/(projects)/layout.tsx similarity index 100% rename from web/app/[workspaceSlug]/(projects)/layout.tsx rename to web/app/(all)/[workspaceSlug]/(projects)/layout.tsx diff --git a/web/app/[workspaceSlug]/(projects)/notifications/layout.tsx b/web/app/(all)/[workspaceSlug]/(projects)/notifications/layout.tsx similarity index 100% rename from web/app/[workspaceSlug]/(projects)/notifications/layout.tsx rename to web/app/(all)/[workspaceSlug]/(projects)/notifications/layout.tsx diff --git a/web/app/[workspaceSlug]/(projects)/notifications/page.tsx b/web/app/(all)/[workspaceSlug]/(projects)/notifications/page.tsx similarity index 100% rename from web/app/[workspaceSlug]/(projects)/notifications/page.tsx rename to web/app/(all)/[workspaceSlug]/(projects)/notifications/page.tsx diff --git a/web/app/[workspaceSlug]/(projects)/page.tsx b/web/app/(all)/[workspaceSlug]/(projects)/page.tsx similarity index 100% rename from web/app/[workspaceSlug]/(projects)/page.tsx rename to web/app/(all)/[workspaceSlug]/(projects)/page.tsx diff --git a/web/app/[workspaceSlug]/(projects)/profile/[userId]/[profileViewId]/page.tsx b/web/app/(all)/[workspaceSlug]/(projects)/profile/[userId]/[profileViewId]/page.tsx similarity index 100% rename from web/app/[workspaceSlug]/(projects)/profile/[userId]/[profileViewId]/page.tsx rename to web/app/(all)/[workspaceSlug]/(projects)/profile/[userId]/[profileViewId]/page.tsx diff --git a/web/app/[workspaceSlug]/(projects)/profile/[userId]/activity/page.tsx b/web/app/(all)/[workspaceSlug]/(projects)/profile/[userId]/activity/page.tsx similarity index 100% rename from web/app/[workspaceSlug]/(projects)/profile/[userId]/activity/page.tsx rename to web/app/(all)/[workspaceSlug]/(projects)/profile/[userId]/activity/page.tsx diff --git a/web/app/[workspaceSlug]/(projects)/profile/[userId]/header.tsx b/web/app/(all)/[workspaceSlug]/(projects)/profile/[userId]/header.tsx similarity index 100% rename from web/app/[workspaceSlug]/(projects)/profile/[userId]/header.tsx rename to web/app/(all)/[workspaceSlug]/(projects)/profile/[userId]/header.tsx diff --git a/web/app/[workspaceSlug]/(projects)/profile/[userId]/layout.tsx b/web/app/(all)/[workspaceSlug]/(projects)/profile/[userId]/layout.tsx similarity index 100% rename from web/app/[workspaceSlug]/(projects)/profile/[userId]/layout.tsx rename to web/app/(all)/[workspaceSlug]/(projects)/profile/[userId]/layout.tsx diff --git a/web/app/[workspaceSlug]/(projects)/profile/[userId]/mobile-header.tsx b/web/app/(all)/[workspaceSlug]/(projects)/profile/[userId]/mobile-header.tsx similarity index 100% rename from web/app/[workspaceSlug]/(projects)/profile/[userId]/mobile-header.tsx rename to web/app/(all)/[workspaceSlug]/(projects)/profile/[userId]/mobile-header.tsx diff --git a/web/app/[workspaceSlug]/(projects)/profile/[userId]/navbar.tsx b/web/app/(all)/[workspaceSlug]/(projects)/profile/[userId]/navbar.tsx similarity index 100% rename from web/app/[workspaceSlug]/(projects)/profile/[userId]/navbar.tsx rename to web/app/(all)/[workspaceSlug]/(projects)/profile/[userId]/navbar.tsx diff --git a/web/app/[workspaceSlug]/(projects)/profile/[userId]/page.tsx b/web/app/(all)/[workspaceSlug]/(projects)/profile/[userId]/page.tsx similarity index 100% rename from web/app/[workspaceSlug]/(projects)/profile/[userId]/page.tsx rename to web/app/(all)/[workspaceSlug]/(projects)/profile/[userId]/page.tsx diff --git a/web/app/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/archives/cycles/layout.tsx b/web/app/(all)/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/archives/cycles/layout.tsx similarity index 100% rename from web/app/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/archives/cycles/layout.tsx rename to web/app/(all)/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/archives/cycles/layout.tsx diff --git a/web/app/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/archives/cycles/page.tsx b/web/app/(all)/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/archives/cycles/page.tsx similarity index 100% rename from web/app/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/archives/cycles/page.tsx rename to web/app/(all)/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/archives/cycles/page.tsx diff --git a/web/app/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/archives/header.tsx b/web/app/(all)/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/archives/header.tsx similarity index 100% rename from web/app/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/archives/header.tsx rename to web/app/(all)/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/archives/header.tsx diff --git a/web/app/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/archives/issues/(detail)/[archivedIssueId]/page.tsx b/web/app/(all)/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/archives/issues/(detail)/[archivedIssueId]/page.tsx similarity index 100% rename from web/app/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/archives/issues/(detail)/[archivedIssueId]/page.tsx rename to web/app/(all)/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/archives/issues/(detail)/[archivedIssueId]/page.tsx diff --git a/web/app/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/archives/issues/(detail)/header.tsx b/web/app/(all)/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/archives/issues/(detail)/header.tsx similarity index 100% rename from web/app/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/archives/issues/(detail)/header.tsx rename to web/app/(all)/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/archives/issues/(detail)/header.tsx diff --git a/web/app/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/archives/issues/(detail)/layout.tsx b/web/app/(all)/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/archives/issues/(detail)/layout.tsx similarity index 100% rename from web/app/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/archives/issues/(detail)/layout.tsx rename to web/app/(all)/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/archives/issues/(detail)/layout.tsx diff --git a/web/app/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/archives/issues/(list)/layout.tsx b/web/app/(all)/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/archives/issues/(list)/layout.tsx similarity index 100% rename from web/app/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/archives/issues/(list)/layout.tsx rename to web/app/(all)/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/archives/issues/(list)/layout.tsx diff --git a/web/app/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/archives/issues/(list)/page.tsx b/web/app/(all)/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/archives/issues/(list)/page.tsx similarity index 100% rename from web/app/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/archives/issues/(list)/page.tsx rename to web/app/(all)/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/archives/issues/(list)/page.tsx diff --git a/web/app/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/archives/modules/layout.tsx b/web/app/(all)/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/archives/modules/layout.tsx similarity index 100% rename from web/app/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/archives/modules/layout.tsx rename to web/app/(all)/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/archives/modules/layout.tsx diff --git a/web/app/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/archives/modules/page.tsx b/web/app/(all)/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/archives/modules/page.tsx similarity index 100% rename from web/app/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/archives/modules/page.tsx rename to web/app/(all)/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/archives/modules/page.tsx diff --git a/web/app/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/cycles/(detail)/[cycleId]/page.tsx b/web/app/(all)/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/cycles/(detail)/[cycleId]/page.tsx similarity index 100% rename from web/app/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/cycles/(detail)/[cycleId]/page.tsx rename to web/app/(all)/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/cycles/(detail)/[cycleId]/page.tsx diff --git a/web/app/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/cycles/(detail)/header.tsx b/web/app/(all)/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/cycles/(detail)/header.tsx similarity index 100% rename from web/app/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/cycles/(detail)/header.tsx rename to web/app/(all)/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/cycles/(detail)/header.tsx diff --git a/web/app/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/cycles/(detail)/layout.tsx b/web/app/(all)/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/cycles/(detail)/layout.tsx similarity index 100% rename from web/app/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/cycles/(detail)/layout.tsx rename to web/app/(all)/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/cycles/(detail)/layout.tsx diff --git a/web/app/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/cycles/(detail)/mobile-header.tsx b/web/app/(all)/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/cycles/(detail)/mobile-header.tsx similarity index 100% rename from web/app/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/cycles/(detail)/mobile-header.tsx rename to web/app/(all)/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/cycles/(detail)/mobile-header.tsx diff --git a/web/app/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/cycles/(list)/header.tsx b/web/app/(all)/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/cycles/(list)/header.tsx similarity index 100% rename from web/app/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/cycles/(list)/header.tsx rename to web/app/(all)/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/cycles/(list)/header.tsx diff --git a/web/app/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/cycles/(list)/layout.tsx b/web/app/(all)/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/cycles/(list)/layout.tsx similarity index 100% rename from web/app/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/cycles/(list)/layout.tsx rename to web/app/(all)/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/cycles/(list)/layout.tsx diff --git a/web/app/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/cycles/(list)/mobile-header.tsx b/web/app/(all)/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/cycles/(list)/mobile-header.tsx similarity index 100% rename from web/app/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/cycles/(list)/mobile-header.tsx rename to web/app/(all)/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/cycles/(list)/mobile-header.tsx diff --git a/web/app/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/cycles/(list)/page.tsx b/web/app/(all)/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/cycles/(list)/page.tsx similarity index 100% rename from web/app/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/cycles/(list)/page.tsx rename to web/app/(all)/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/cycles/(list)/page.tsx diff --git a/web/app/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/draft-issues/header.tsx b/web/app/(all)/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/draft-issues/header.tsx similarity index 100% rename from web/app/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/draft-issues/header.tsx rename to web/app/(all)/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/draft-issues/header.tsx diff --git a/web/app/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/draft-issues/layout.tsx b/web/app/(all)/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/draft-issues/layout.tsx similarity index 100% rename from web/app/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/draft-issues/layout.tsx rename to web/app/(all)/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/draft-issues/layout.tsx diff --git a/web/app/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/draft-issues/page.tsx b/web/app/(all)/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/draft-issues/page.tsx similarity index 100% rename from web/app/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/draft-issues/page.tsx rename to web/app/(all)/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/draft-issues/page.tsx diff --git a/web/app/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/intake/layout.tsx b/web/app/(all)/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/intake/layout.tsx similarity index 100% rename from web/app/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/intake/layout.tsx rename to web/app/(all)/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/intake/layout.tsx diff --git a/web/app/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/intake/page.tsx b/web/app/(all)/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/intake/page.tsx similarity index 100% rename from web/app/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/intake/page.tsx rename to web/app/(all)/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/intake/page.tsx diff --git a/web/app/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/issues/(detail)/[issueId]/page.tsx b/web/app/(all)/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/issues/(detail)/[issueId]/page.tsx similarity index 100% rename from web/app/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/issues/(detail)/[issueId]/page.tsx rename to web/app/(all)/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/issues/(detail)/[issueId]/page.tsx diff --git a/web/app/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/issues/(list)/header.tsx b/web/app/(all)/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/issues/(list)/header.tsx similarity index 100% rename from web/app/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/issues/(list)/header.tsx rename to web/app/(all)/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/issues/(list)/header.tsx diff --git a/web/app/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/issues/(list)/layout.tsx b/web/app/(all)/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/issues/(list)/layout.tsx similarity index 100% rename from web/app/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/issues/(list)/layout.tsx rename to web/app/(all)/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/issues/(list)/layout.tsx diff --git a/web/app/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/issues/(list)/mobile-header.tsx b/web/app/(all)/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/issues/(list)/mobile-header.tsx similarity index 100% rename from web/app/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/issues/(list)/mobile-header.tsx rename to web/app/(all)/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/issues/(list)/mobile-header.tsx diff --git a/web/app/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/issues/(list)/page.tsx b/web/app/(all)/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/issues/(list)/page.tsx similarity index 100% rename from web/app/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/issues/(list)/page.tsx rename to web/app/(all)/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/issues/(list)/page.tsx diff --git a/web/app/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/modules/(detail)/[moduleId]/page.tsx b/web/app/(all)/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/modules/(detail)/[moduleId]/page.tsx similarity index 100% rename from web/app/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/modules/(detail)/[moduleId]/page.tsx rename to web/app/(all)/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/modules/(detail)/[moduleId]/page.tsx diff --git a/web/app/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/modules/(detail)/header.tsx b/web/app/(all)/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/modules/(detail)/header.tsx similarity index 100% rename from web/app/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/modules/(detail)/header.tsx rename to web/app/(all)/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/modules/(detail)/header.tsx diff --git a/web/app/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/modules/(detail)/layout.tsx b/web/app/(all)/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/modules/(detail)/layout.tsx similarity index 100% rename from web/app/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/modules/(detail)/layout.tsx rename to web/app/(all)/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/modules/(detail)/layout.tsx diff --git a/web/app/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/modules/(detail)/mobile-header.tsx b/web/app/(all)/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/modules/(detail)/mobile-header.tsx similarity index 100% rename from web/app/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/modules/(detail)/mobile-header.tsx rename to web/app/(all)/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/modules/(detail)/mobile-header.tsx diff --git a/web/app/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/modules/(list)/header.tsx b/web/app/(all)/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/modules/(list)/header.tsx similarity index 100% rename from web/app/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/modules/(list)/header.tsx rename to web/app/(all)/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/modules/(list)/header.tsx diff --git a/web/app/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/modules/(list)/layout.tsx b/web/app/(all)/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/modules/(list)/layout.tsx similarity index 100% rename from web/app/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/modules/(list)/layout.tsx rename to web/app/(all)/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/modules/(list)/layout.tsx diff --git a/web/app/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/modules/(list)/mobile-header.tsx b/web/app/(all)/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/modules/(list)/mobile-header.tsx similarity index 100% rename from web/app/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/modules/(list)/mobile-header.tsx rename to web/app/(all)/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/modules/(list)/mobile-header.tsx diff --git a/web/app/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/modules/(list)/page.tsx b/web/app/(all)/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/modules/(list)/page.tsx similarity index 100% rename from web/app/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/modules/(list)/page.tsx rename to web/app/(all)/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/modules/(list)/page.tsx diff --git a/web/app/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/pages/(detail)/[pageId]/page.tsx b/web/app/(all)/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/pages/(detail)/[pageId]/page.tsx similarity index 100% rename from web/app/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/pages/(detail)/[pageId]/page.tsx rename to web/app/(all)/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/pages/(detail)/[pageId]/page.tsx diff --git a/web/app/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/pages/(detail)/header.tsx b/web/app/(all)/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/pages/(detail)/header.tsx similarity index 100% rename from web/app/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/pages/(detail)/header.tsx rename to web/app/(all)/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/pages/(detail)/header.tsx diff --git a/web/app/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/pages/(detail)/layout.tsx b/web/app/(all)/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/pages/(detail)/layout.tsx similarity index 100% rename from web/app/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/pages/(detail)/layout.tsx rename to web/app/(all)/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/pages/(detail)/layout.tsx diff --git a/web/app/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/pages/(list)/header.tsx b/web/app/(all)/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/pages/(list)/header.tsx similarity index 100% rename from web/app/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/pages/(list)/header.tsx rename to web/app/(all)/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/pages/(list)/header.tsx diff --git a/web/app/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/pages/(list)/layout.tsx b/web/app/(all)/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/pages/(list)/layout.tsx similarity index 100% rename from web/app/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/pages/(list)/layout.tsx rename to web/app/(all)/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/pages/(list)/layout.tsx diff --git a/web/app/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/pages/(list)/page.tsx b/web/app/(all)/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/pages/(list)/page.tsx similarity index 100% rename from web/app/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/pages/(list)/page.tsx rename to web/app/(all)/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/pages/(list)/page.tsx diff --git a/web/app/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/settings/(with-sidebar)/automations/page.tsx b/web/app/(all)/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/settings/(with-sidebar)/automations/page.tsx similarity index 100% rename from web/app/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/settings/(with-sidebar)/automations/page.tsx rename to web/app/(all)/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/settings/(with-sidebar)/automations/page.tsx diff --git a/web/app/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/settings/(with-sidebar)/estimates/page.tsx b/web/app/(all)/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/settings/(with-sidebar)/estimates/page.tsx similarity index 100% rename from web/app/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/settings/(with-sidebar)/estimates/page.tsx rename to web/app/(all)/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/settings/(with-sidebar)/estimates/page.tsx diff --git a/web/app/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/settings/(with-sidebar)/features/page.tsx b/web/app/(all)/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/settings/(with-sidebar)/features/page.tsx similarity index 100% rename from web/app/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/settings/(with-sidebar)/features/page.tsx rename to web/app/(all)/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/settings/(with-sidebar)/features/page.tsx diff --git a/web/app/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/settings/(with-sidebar)/labels/page.tsx b/web/app/(all)/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/settings/(with-sidebar)/labels/page.tsx similarity index 100% rename from web/app/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/settings/(with-sidebar)/labels/page.tsx rename to web/app/(all)/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/settings/(with-sidebar)/labels/page.tsx diff --git a/web/app/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/settings/(with-sidebar)/layout.tsx b/web/app/(all)/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/settings/(with-sidebar)/layout.tsx similarity index 100% rename from web/app/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/settings/(with-sidebar)/layout.tsx rename to web/app/(all)/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/settings/(with-sidebar)/layout.tsx diff --git a/web/app/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/settings/(with-sidebar)/members/page.tsx b/web/app/(all)/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/settings/(with-sidebar)/members/page.tsx similarity index 100% rename from web/app/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/settings/(with-sidebar)/members/page.tsx rename to web/app/(all)/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/settings/(with-sidebar)/members/page.tsx diff --git a/web/app/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/settings/(with-sidebar)/page.tsx b/web/app/(all)/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/settings/(with-sidebar)/page.tsx similarity index 100% rename from web/app/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/settings/(with-sidebar)/page.tsx rename to web/app/(all)/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/settings/(with-sidebar)/page.tsx diff --git a/web/app/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/settings/(with-sidebar)/sidebar.tsx b/web/app/(all)/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/settings/(with-sidebar)/sidebar.tsx similarity index 100% rename from web/app/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/settings/(with-sidebar)/sidebar.tsx rename to web/app/(all)/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/settings/(with-sidebar)/sidebar.tsx diff --git a/web/app/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/settings/(with-sidebar)/states/page.tsx b/web/app/(all)/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/settings/(with-sidebar)/states/page.tsx similarity index 100% rename from web/app/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/settings/(with-sidebar)/states/page.tsx rename to web/app/(all)/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/settings/(with-sidebar)/states/page.tsx diff --git a/web/app/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/settings/header.tsx b/web/app/(all)/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/settings/header.tsx similarity index 100% rename from web/app/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/settings/header.tsx rename to web/app/(all)/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/settings/header.tsx diff --git a/web/app/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/views/(detail)/[viewId]/header.tsx b/web/app/(all)/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/views/(detail)/[viewId]/header.tsx similarity index 100% rename from web/app/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/views/(detail)/[viewId]/header.tsx rename to web/app/(all)/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/views/(detail)/[viewId]/header.tsx diff --git a/web/app/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/views/(detail)/[viewId]/page.tsx b/web/app/(all)/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/views/(detail)/[viewId]/page.tsx similarity index 100% rename from web/app/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/views/(detail)/[viewId]/page.tsx rename to web/app/(all)/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/views/(detail)/[viewId]/page.tsx diff --git a/web/app/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/views/(detail)/layout.tsx b/web/app/(all)/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/views/(detail)/layout.tsx similarity index 100% rename from web/app/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/views/(detail)/layout.tsx rename to web/app/(all)/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/views/(detail)/layout.tsx diff --git a/web/app/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/views/(list)/header.tsx b/web/app/(all)/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/views/(list)/header.tsx similarity index 100% rename from web/app/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/views/(list)/header.tsx rename to web/app/(all)/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/views/(list)/header.tsx diff --git a/web/app/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/views/(list)/layout.tsx b/web/app/(all)/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/views/(list)/layout.tsx similarity index 100% rename from web/app/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/views/(list)/layout.tsx rename to web/app/(all)/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/views/(list)/layout.tsx diff --git a/web/app/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/views/(list)/mobile-header.tsx b/web/app/(all)/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/views/(list)/mobile-header.tsx similarity index 100% rename from web/app/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/views/(list)/mobile-header.tsx rename to web/app/(all)/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/views/(list)/mobile-header.tsx diff --git a/web/app/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/views/(list)/page.tsx b/web/app/(all)/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/views/(list)/page.tsx similarity index 100% rename from web/app/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/views/(list)/page.tsx rename to web/app/(all)/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/views/(list)/page.tsx diff --git a/web/app/[workspaceSlug]/(projects)/projects/(detail)/archives/layout.tsx b/web/app/(all)/[workspaceSlug]/(projects)/projects/(detail)/archives/layout.tsx similarity index 100% rename from web/app/[workspaceSlug]/(projects)/projects/(detail)/archives/layout.tsx rename to web/app/(all)/[workspaceSlug]/(projects)/projects/(detail)/archives/layout.tsx diff --git a/web/app/[workspaceSlug]/(projects)/projects/(detail)/archives/page.tsx b/web/app/(all)/[workspaceSlug]/(projects)/projects/(detail)/archives/page.tsx similarity index 100% rename from web/app/[workspaceSlug]/(projects)/projects/(detail)/archives/page.tsx rename to web/app/(all)/[workspaceSlug]/(projects)/projects/(detail)/archives/page.tsx diff --git a/web/app/[workspaceSlug]/(projects)/projects/(detail)/layout.tsx b/web/app/(all)/[workspaceSlug]/(projects)/projects/(detail)/layout.tsx similarity index 100% rename from web/app/[workspaceSlug]/(projects)/projects/(detail)/layout.tsx rename to web/app/(all)/[workspaceSlug]/(projects)/projects/(detail)/layout.tsx diff --git a/web/app/[workspaceSlug]/(projects)/projects/(list)/layout.tsx b/web/app/(all)/[workspaceSlug]/(projects)/projects/(list)/layout.tsx similarity index 100% rename from web/app/[workspaceSlug]/(projects)/projects/(list)/layout.tsx rename to web/app/(all)/[workspaceSlug]/(projects)/projects/(list)/layout.tsx diff --git a/web/app/[workspaceSlug]/(projects)/projects/(list)/page.tsx b/web/app/(all)/[workspaceSlug]/(projects)/projects/(list)/page.tsx similarity index 100% rename from web/app/[workspaceSlug]/(projects)/projects/(list)/page.tsx rename to web/app/(all)/[workspaceSlug]/(projects)/projects/(list)/page.tsx diff --git a/web/app/[workspaceSlug]/(projects)/sidebar.tsx b/web/app/(all)/[workspaceSlug]/(projects)/sidebar.tsx similarity index 100% rename from web/app/[workspaceSlug]/(projects)/sidebar.tsx rename to web/app/(all)/[workspaceSlug]/(projects)/sidebar.tsx diff --git a/web/app/[workspaceSlug]/(projects)/stickies/header.tsx b/web/app/(all)/[workspaceSlug]/(projects)/stickies/header.tsx similarity index 100% rename from web/app/[workspaceSlug]/(projects)/stickies/header.tsx rename to web/app/(all)/[workspaceSlug]/(projects)/stickies/header.tsx diff --git a/web/app/[workspaceSlug]/(projects)/stickies/layout.tsx b/web/app/(all)/[workspaceSlug]/(projects)/stickies/layout.tsx similarity index 100% rename from web/app/[workspaceSlug]/(projects)/stickies/layout.tsx rename to web/app/(all)/[workspaceSlug]/(projects)/stickies/layout.tsx diff --git a/web/app/[workspaceSlug]/(projects)/stickies/page.tsx b/web/app/(all)/[workspaceSlug]/(projects)/stickies/page.tsx similarity index 100% rename from web/app/[workspaceSlug]/(projects)/stickies/page.tsx rename to web/app/(all)/[workspaceSlug]/(projects)/stickies/page.tsx diff --git a/web/app/[workspaceSlug]/(projects)/workspace-views/[globalViewId]/page.tsx b/web/app/(all)/[workspaceSlug]/(projects)/workspace-views/[globalViewId]/page.tsx similarity index 100% rename from web/app/[workspaceSlug]/(projects)/workspace-views/[globalViewId]/page.tsx rename to web/app/(all)/[workspaceSlug]/(projects)/workspace-views/[globalViewId]/page.tsx diff --git a/web/app/[workspaceSlug]/(projects)/workspace-views/header.tsx b/web/app/(all)/[workspaceSlug]/(projects)/workspace-views/header.tsx similarity index 100% rename from web/app/[workspaceSlug]/(projects)/workspace-views/header.tsx rename to web/app/(all)/[workspaceSlug]/(projects)/workspace-views/header.tsx diff --git a/web/app/[workspaceSlug]/(projects)/workspace-views/layout.tsx b/web/app/(all)/[workspaceSlug]/(projects)/workspace-views/layout.tsx similarity index 100% rename from web/app/[workspaceSlug]/(projects)/workspace-views/layout.tsx rename to web/app/(all)/[workspaceSlug]/(projects)/workspace-views/layout.tsx diff --git a/web/app/[workspaceSlug]/(projects)/workspace-views/page.tsx b/web/app/(all)/[workspaceSlug]/(projects)/workspace-views/page.tsx similarity index 100% rename from web/app/[workspaceSlug]/(projects)/workspace-views/page.tsx rename to web/app/(all)/[workspaceSlug]/(projects)/workspace-views/page.tsx diff --git a/web/app/[workspaceSlug]/(settings)/layout.tsx b/web/app/(all)/[workspaceSlug]/(settings)/layout.tsx similarity index 100% rename from web/app/[workspaceSlug]/(settings)/layout.tsx rename to web/app/(all)/[workspaceSlug]/(settings)/layout.tsx diff --git a/web/app/[workspaceSlug]/(settings)/settings/(workspace)/billing/page.tsx b/web/app/(all)/[workspaceSlug]/(settings)/settings/(workspace)/billing/page.tsx similarity index 100% rename from web/app/[workspaceSlug]/(settings)/settings/(workspace)/billing/page.tsx rename to web/app/(all)/[workspaceSlug]/(settings)/settings/(workspace)/billing/page.tsx diff --git a/web/app/[workspaceSlug]/(settings)/settings/(workspace)/exports/page.tsx b/web/app/(all)/[workspaceSlug]/(settings)/settings/(workspace)/exports/page.tsx similarity index 100% rename from web/app/[workspaceSlug]/(settings)/settings/(workspace)/exports/page.tsx rename to web/app/(all)/[workspaceSlug]/(settings)/settings/(workspace)/exports/page.tsx diff --git a/web/app/[workspaceSlug]/(settings)/settings/(workspace)/imports/page.tsx b/web/app/(all)/[workspaceSlug]/(settings)/settings/(workspace)/imports/page.tsx similarity index 100% rename from web/app/[workspaceSlug]/(settings)/settings/(workspace)/imports/page.tsx rename to web/app/(all)/[workspaceSlug]/(settings)/settings/(workspace)/imports/page.tsx diff --git a/web/app/[workspaceSlug]/(settings)/settings/(workspace)/integrations/page.tsx b/web/app/(all)/[workspaceSlug]/(settings)/settings/(workspace)/integrations/page.tsx similarity index 100% rename from web/app/[workspaceSlug]/(settings)/settings/(workspace)/integrations/page.tsx rename to web/app/(all)/[workspaceSlug]/(settings)/settings/(workspace)/integrations/page.tsx diff --git a/web/app/[workspaceSlug]/(settings)/settings/(workspace)/layout.tsx b/web/app/(all)/[workspaceSlug]/(settings)/settings/(workspace)/layout.tsx similarity index 100% rename from web/app/[workspaceSlug]/(settings)/settings/(workspace)/layout.tsx rename to web/app/(all)/[workspaceSlug]/(settings)/settings/(workspace)/layout.tsx diff --git a/web/app/[workspaceSlug]/(settings)/settings/(workspace)/members/page.tsx b/web/app/(all)/[workspaceSlug]/(settings)/settings/(workspace)/members/page.tsx similarity index 100% rename from web/app/[workspaceSlug]/(settings)/settings/(workspace)/members/page.tsx rename to web/app/(all)/[workspaceSlug]/(settings)/settings/(workspace)/members/page.tsx diff --git a/web/app/[workspaceSlug]/(settings)/settings/(workspace)/mobile-header-tabs.tsx b/web/app/(all)/[workspaceSlug]/(settings)/settings/(workspace)/mobile-header-tabs.tsx similarity index 100% rename from web/app/[workspaceSlug]/(settings)/settings/(workspace)/mobile-header-tabs.tsx rename to web/app/(all)/[workspaceSlug]/(settings)/settings/(workspace)/mobile-header-tabs.tsx diff --git a/web/app/[workspaceSlug]/(settings)/settings/(workspace)/page.tsx b/web/app/(all)/[workspaceSlug]/(settings)/settings/(workspace)/page.tsx similarity index 100% rename from web/app/[workspaceSlug]/(settings)/settings/(workspace)/page.tsx rename to web/app/(all)/[workspaceSlug]/(settings)/settings/(workspace)/page.tsx diff --git a/web/app/[workspaceSlug]/(settings)/settings/(workspace)/sidebar.tsx b/web/app/(all)/[workspaceSlug]/(settings)/settings/(workspace)/sidebar.tsx similarity index 100% rename from web/app/[workspaceSlug]/(settings)/settings/(workspace)/sidebar.tsx rename to web/app/(all)/[workspaceSlug]/(settings)/settings/(workspace)/sidebar.tsx diff --git a/web/app/[workspaceSlug]/(settings)/settings/(workspace)/webhooks/[webhookId]/page.tsx b/web/app/(all)/[workspaceSlug]/(settings)/settings/(workspace)/webhooks/[webhookId]/page.tsx similarity index 100% rename from web/app/[workspaceSlug]/(settings)/settings/(workspace)/webhooks/[webhookId]/page.tsx rename to web/app/(all)/[workspaceSlug]/(settings)/settings/(workspace)/webhooks/[webhookId]/page.tsx diff --git a/web/app/[workspaceSlug]/(settings)/settings/(workspace)/webhooks/page.tsx b/web/app/(all)/[workspaceSlug]/(settings)/settings/(workspace)/webhooks/page.tsx similarity index 100% rename from web/app/[workspaceSlug]/(settings)/settings/(workspace)/webhooks/page.tsx rename to web/app/(all)/[workspaceSlug]/(settings)/settings/(workspace)/webhooks/page.tsx diff --git a/web/app/[workspaceSlug]/(settings)/settings/account/activity/page.tsx b/web/app/(all)/[workspaceSlug]/(settings)/settings/account/activity/page.tsx similarity index 100% rename from web/app/[workspaceSlug]/(settings)/settings/account/activity/page.tsx rename to web/app/(all)/[workspaceSlug]/(settings)/settings/account/activity/page.tsx diff --git a/web/app/[workspaceSlug]/(settings)/settings/account/api-tokens/page.tsx b/web/app/(all)/[workspaceSlug]/(settings)/settings/account/api-tokens/page.tsx similarity index 100% rename from web/app/[workspaceSlug]/(settings)/settings/account/api-tokens/page.tsx rename to web/app/(all)/[workspaceSlug]/(settings)/settings/account/api-tokens/page.tsx diff --git a/web/app/[workspaceSlug]/(settings)/settings/account/layout.tsx b/web/app/(all)/[workspaceSlug]/(settings)/settings/account/layout.tsx similarity index 100% rename from web/app/[workspaceSlug]/(settings)/settings/account/layout.tsx rename to web/app/(all)/[workspaceSlug]/(settings)/settings/account/layout.tsx diff --git a/web/app/[workspaceSlug]/(settings)/settings/account/notifications/page.tsx b/web/app/(all)/[workspaceSlug]/(settings)/settings/account/notifications/page.tsx similarity index 100% rename from web/app/[workspaceSlug]/(settings)/settings/account/notifications/page.tsx rename to web/app/(all)/[workspaceSlug]/(settings)/settings/account/notifications/page.tsx diff --git a/web/app/[workspaceSlug]/(settings)/settings/account/page.tsx b/web/app/(all)/[workspaceSlug]/(settings)/settings/account/page.tsx similarity index 100% rename from web/app/[workspaceSlug]/(settings)/settings/account/page.tsx rename to web/app/(all)/[workspaceSlug]/(settings)/settings/account/page.tsx diff --git a/web/app/[workspaceSlug]/(settings)/settings/account/preferences/page.tsx b/web/app/(all)/[workspaceSlug]/(settings)/settings/account/preferences/page.tsx similarity index 100% rename from web/app/[workspaceSlug]/(settings)/settings/account/preferences/page.tsx rename to web/app/(all)/[workspaceSlug]/(settings)/settings/account/preferences/page.tsx diff --git a/web/app/[workspaceSlug]/(settings)/settings/account/security/page.tsx b/web/app/(all)/[workspaceSlug]/(settings)/settings/account/security/page.tsx similarity index 100% rename from web/app/[workspaceSlug]/(settings)/settings/account/security/page.tsx rename to web/app/(all)/[workspaceSlug]/(settings)/settings/account/security/page.tsx diff --git a/web/app/[workspaceSlug]/(settings)/settings/account/sidebar.tsx b/web/app/(all)/[workspaceSlug]/(settings)/settings/account/sidebar.tsx similarity index 100% rename from web/app/[workspaceSlug]/(settings)/settings/account/sidebar.tsx rename to web/app/(all)/[workspaceSlug]/(settings)/settings/account/sidebar.tsx diff --git a/web/app/[workspaceSlug]/(settings)/settings/projects/[projectId]/automations/page.tsx b/web/app/(all)/[workspaceSlug]/(settings)/settings/projects/[projectId]/automations/page.tsx similarity index 100% rename from web/app/[workspaceSlug]/(settings)/settings/projects/[projectId]/automations/page.tsx rename to web/app/(all)/[workspaceSlug]/(settings)/settings/projects/[projectId]/automations/page.tsx diff --git a/web/app/[workspaceSlug]/(settings)/settings/projects/[projectId]/estimates/page.tsx b/web/app/(all)/[workspaceSlug]/(settings)/settings/projects/[projectId]/estimates/page.tsx similarity index 100% rename from web/app/[workspaceSlug]/(settings)/settings/projects/[projectId]/estimates/page.tsx rename to web/app/(all)/[workspaceSlug]/(settings)/settings/projects/[projectId]/estimates/page.tsx diff --git a/web/app/[workspaceSlug]/(settings)/settings/projects/[projectId]/features/page.tsx b/web/app/(all)/[workspaceSlug]/(settings)/settings/projects/[projectId]/features/page.tsx similarity index 100% rename from web/app/[workspaceSlug]/(settings)/settings/projects/[projectId]/features/page.tsx rename to web/app/(all)/[workspaceSlug]/(settings)/settings/projects/[projectId]/features/page.tsx diff --git a/web/app/[workspaceSlug]/(settings)/settings/projects/[projectId]/labels/page.tsx b/web/app/(all)/[workspaceSlug]/(settings)/settings/projects/[projectId]/labels/page.tsx similarity index 100% rename from web/app/[workspaceSlug]/(settings)/settings/projects/[projectId]/labels/page.tsx rename to web/app/(all)/[workspaceSlug]/(settings)/settings/projects/[projectId]/labels/page.tsx diff --git a/web/app/[workspaceSlug]/(settings)/settings/projects/[projectId]/members/page.tsx b/web/app/(all)/[workspaceSlug]/(settings)/settings/projects/[projectId]/members/page.tsx similarity index 100% rename from web/app/[workspaceSlug]/(settings)/settings/projects/[projectId]/members/page.tsx rename to web/app/(all)/[workspaceSlug]/(settings)/settings/projects/[projectId]/members/page.tsx diff --git a/web/app/[workspaceSlug]/(settings)/settings/projects/[projectId]/page.tsx b/web/app/(all)/[workspaceSlug]/(settings)/settings/projects/[projectId]/page.tsx similarity index 100% rename from web/app/[workspaceSlug]/(settings)/settings/projects/[projectId]/page.tsx rename to web/app/(all)/[workspaceSlug]/(settings)/settings/projects/[projectId]/page.tsx diff --git a/web/app/[workspaceSlug]/(settings)/settings/projects/[projectId]/states/page.tsx b/web/app/(all)/[workspaceSlug]/(settings)/settings/projects/[projectId]/states/page.tsx similarity index 100% rename from web/app/[workspaceSlug]/(settings)/settings/projects/[projectId]/states/page.tsx rename to web/app/(all)/[workspaceSlug]/(settings)/settings/projects/[projectId]/states/page.tsx diff --git a/web/app/[workspaceSlug]/(settings)/settings/projects/layout.tsx b/web/app/(all)/[workspaceSlug]/(settings)/settings/projects/layout.tsx similarity index 100% rename from web/app/[workspaceSlug]/(settings)/settings/projects/layout.tsx rename to web/app/(all)/[workspaceSlug]/(settings)/settings/projects/layout.tsx diff --git a/web/app/[workspaceSlug]/(settings)/settings/projects/page.tsx b/web/app/(all)/[workspaceSlug]/(settings)/settings/projects/page.tsx similarity index 100% rename from web/app/[workspaceSlug]/(settings)/settings/projects/page.tsx rename to web/app/(all)/[workspaceSlug]/(settings)/settings/projects/page.tsx diff --git a/web/app/accounts/forgot-password/layout.tsx b/web/app/(all)/accounts/forgot-password/layout.tsx similarity index 100% rename from web/app/accounts/forgot-password/layout.tsx rename to web/app/(all)/accounts/forgot-password/layout.tsx diff --git a/web/app/accounts/forgot-password/page.tsx b/web/app/(all)/accounts/forgot-password/page.tsx similarity index 100% rename from web/app/accounts/forgot-password/page.tsx rename to web/app/(all)/accounts/forgot-password/page.tsx diff --git a/web/app/accounts/reset-password/layout.tsx b/web/app/(all)/accounts/reset-password/layout.tsx similarity index 100% rename from web/app/accounts/reset-password/layout.tsx rename to web/app/(all)/accounts/reset-password/layout.tsx diff --git a/web/app/accounts/reset-password/page.tsx b/web/app/(all)/accounts/reset-password/page.tsx similarity index 100% rename from web/app/accounts/reset-password/page.tsx rename to web/app/(all)/accounts/reset-password/page.tsx diff --git a/web/app/accounts/set-password/layout.tsx b/web/app/(all)/accounts/set-password/layout.tsx similarity index 100% rename from web/app/accounts/set-password/layout.tsx rename to web/app/(all)/accounts/set-password/layout.tsx diff --git a/web/app/accounts/set-password/page.tsx b/web/app/(all)/accounts/set-password/page.tsx similarity index 100% rename from web/app/accounts/set-password/page.tsx rename to web/app/(all)/accounts/set-password/page.tsx diff --git a/web/app/create-workspace/layout.tsx b/web/app/(all)/create-workspace/layout.tsx similarity index 100% rename from web/app/create-workspace/layout.tsx rename to web/app/(all)/create-workspace/layout.tsx diff --git a/web/app/create-workspace/page.tsx b/web/app/(all)/create-workspace/page.tsx similarity index 100% rename from web/app/create-workspace/page.tsx rename to web/app/(all)/create-workspace/page.tsx diff --git a/web/app/installations/[provider]/layout.tsx b/web/app/(all)/installations/[provider]/layout.tsx similarity index 100% rename from web/app/installations/[provider]/layout.tsx rename to web/app/(all)/installations/[provider]/layout.tsx diff --git a/web/app/installations/[provider]/page.tsx b/web/app/(all)/installations/[provider]/page.tsx similarity index 100% rename from web/app/installations/[provider]/page.tsx rename to web/app/(all)/installations/[provider]/page.tsx diff --git a/web/app/invitations/layout.tsx b/web/app/(all)/invitations/layout.tsx similarity index 100% rename from web/app/invitations/layout.tsx rename to web/app/(all)/invitations/layout.tsx diff --git a/web/app/invitations/page.tsx b/web/app/(all)/invitations/page.tsx similarity index 100% rename from web/app/invitations/page.tsx rename to web/app/(all)/invitations/page.tsx diff --git a/web/app/onboarding/layout.tsx b/web/app/(all)/onboarding/layout.tsx similarity index 100% rename from web/app/onboarding/layout.tsx rename to web/app/(all)/onboarding/layout.tsx diff --git a/web/app/onboarding/page.tsx b/web/app/(all)/onboarding/page.tsx similarity index 100% rename from web/app/onboarding/page.tsx rename to web/app/(all)/onboarding/page.tsx diff --git a/web/app/profile/activity/page.tsx b/web/app/(all)/profile/activity/page.tsx similarity index 100% rename from web/app/profile/activity/page.tsx rename to web/app/(all)/profile/activity/page.tsx diff --git a/web/app/profile/appearance/page.tsx b/web/app/(all)/profile/appearance/page.tsx similarity index 100% rename from web/app/profile/appearance/page.tsx rename to web/app/(all)/profile/appearance/page.tsx diff --git a/web/app/profile/layout.tsx b/web/app/(all)/profile/layout.tsx similarity index 100% rename from web/app/profile/layout.tsx rename to web/app/(all)/profile/layout.tsx diff --git a/web/app/profile/notifications/page.tsx b/web/app/(all)/profile/notifications/page.tsx similarity index 100% rename from web/app/profile/notifications/page.tsx rename to web/app/(all)/profile/notifications/page.tsx diff --git a/web/app/profile/page.tsx b/web/app/(all)/profile/page.tsx similarity index 100% rename from web/app/profile/page.tsx rename to web/app/(all)/profile/page.tsx diff --git a/web/app/profile/security/page.tsx b/web/app/(all)/profile/security/page.tsx similarity index 100% rename from web/app/profile/security/page.tsx rename to web/app/(all)/profile/security/page.tsx diff --git a/web/app/profile/sidebar.tsx b/web/app/(all)/profile/sidebar.tsx similarity index 100% rename from web/app/profile/sidebar.tsx rename to web/app/(all)/profile/sidebar.tsx diff --git a/web/app/sign-up/layout.tsx b/web/app/(all)/sign-up/layout.tsx similarity index 100% rename from web/app/sign-up/layout.tsx rename to web/app/(all)/sign-up/layout.tsx diff --git a/web/app/sign-up/page.tsx b/web/app/(all)/sign-up/page.tsx similarity index 100% rename from web/app/sign-up/page.tsx rename to web/app/(all)/sign-up/page.tsx diff --git a/web/app/workspace-invitations/layout.tsx b/web/app/(all)/workspace-invitations/layout.tsx similarity index 100% rename from web/app/workspace-invitations/layout.tsx rename to web/app/(all)/workspace-invitations/layout.tsx diff --git a/web/app/workspace-invitations/page.tsx b/web/app/(all)/workspace-invitations/page.tsx similarity index 100% rename from web/app/workspace-invitations/page.tsx rename to web/app/(all)/workspace-invitations/page.tsx From 4a0b00913eeec3321d5b6d87ce748df3b1382f01 Mon Sep 17 00:00:00 2001 From: gakshita Date: Mon, 26 May 2025 15:08:06 +0530 Subject: [PATCH 38/45] fix: revert --- web/ce/components/workspace/edition-badge.tsx | 19 ++++++------------- 1 file changed, 6 insertions(+), 13 deletions(-) diff --git a/web/ce/components/workspace/edition-badge.tsx b/web/ce/components/workspace/edition-badge.tsx index 377378dac57..b32ce9e61ad 100644 --- a/web/ce/components/workspace/edition-badge.tsx +++ b/web/ce/components/workspace/edition-badge.tsx @@ -4,33 +4,26 @@ import packageJson from "package.json"; // ui import { Button, Tooltip } from "@plane/ui"; // hooks -import { cn } from "@plane/utils"; import { usePlatformOS } from "@/hooks/use-platform-os"; // local components import { PaidPlanUpgradeModal } from "../license"; -export const WorkspaceEditionBadge = observer((props: { className?: string; isEditable?: boolean }) => { - const { className, isEditable = true } = props; +export const WorkspaceEditionBadge = observer(() => { const { isMobile } = usePlatformOS(); // states const [isPaidPlanPurchaseModalOpen, setIsPaidPlanPurchaseModalOpen] = useState(false); return ( <> - {isEditable && ( - setIsPaidPlanPurchaseModalOpen(false)} - /> - )} + setIsPaidPlanPurchaseModalOpen(false)} + /> -
    -
    - {tokens.map((token) => ( - - ))} -
    - - ) : ( -
    -
    -

    {t("workspace_settings.settings.api_tokens.title")}

    - -
    -
    - -
    -
    - )} -
    - - ); -}); - -export default ApiTokensPage; diff --git a/web/app/(all)/[workspaceSlug]/(projects)/settings/(with-sidebar)/billing/page.tsx b/web/app/(all)/[workspaceSlug]/(projects)/settings/(with-sidebar)/billing/page.tsx deleted file mode 100644 index 801b04b3783..00000000000 --- a/web/app/(all)/[workspaceSlug]/(projects)/settings/(with-sidebar)/billing/page.tsx +++ /dev/null @@ -1,33 +0,0 @@ -"use client"; - -import { observer } from "mobx-react"; -// component -import { EUserPermissions, EUserPermissionsLevel } from "@plane/constants"; -import { NotAuthorizedView } from "@/components/auth-screens"; -import { PageHead } from "@/components/core"; -// hooks -import { useUserPermissions, useWorkspace } from "@/hooks/store"; -// plane web components -import { BillingRoot } from "@/plane-web/components/workspace"; - -const BillingSettingsPage = observer(() => { - // store hooks - const { workspaceUserInfo, allowPermissions } = useUserPermissions(); - const { currentWorkspace } = useWorkspace(); - // derived values - const canPerformWorkspaceAdminActions = allowPermissions([EUserPermissions.ADMIN], EUserPermissionsLevel.WORKSPACE); - const pageTitle = currentWorkspace?.name ? `${currentWorkspace.name} - Billing & Plans` : undefined; - - if (workspaceUserInfo && !canPerformWorkspaceAdminActions) { - return ; - } - - return ( - <> - - - - ); -}); - -export default BillingSettingsPage; diff --git a/web/app/(all)/[workspaceSlug]/(projects)/settings/(with-sidebar)/exports/page.tsx b/web/app/(all)/[workspaceSlug]/(projects)/settings/(with-sidebar)/exports/page.tsx deleted file mode 100644 index 1b63406de34..00000000000 --- a/web/app/(all)/[workspaceSlug]/(projects)/settings/(with-sidebar)/exports/page.tsx +++ /dev/null @@ -1,52 +0,0 @@ -"use client"; - -import { observer } from "mobx-react"; -// components -import { EUserPermissions, EUserPermissionsLevel } from "@plane/constants"; -import { useTranslation } from "@plane/i18n"; -import { NotAuthorizedView } from "@/components/auth-screens"; -import { PageHead } from "@/components/core"; -import ExportGuide from "@/components/exporter/guide"; -// helpers -import { cn } from "@/helpers/common.helper"; -// hooks -import { useUserPermissions, useWorkspace } from "@/hooks/store"; - -const ExportsPage = observer(() => { - // store hooks - const { workspaceUserInfo, allowPermissions } = useUserPermissions(); - const { currentWorkspace } = useWorkspace(); - const { t } = useTranslation(); - - // derived values - const canPerformWorkspaceMemberActions = allowPermissions( - [EUserPermissions.ADMIN, EUserPermissions.MEMBER], - EUserPermissionsLevel.WORKSPACE - ); - const pageTitle = currentWorkspace?.name - ? `${currentWorkspace.name} - ${t("workspace_settings.settings.exports.title")}` - : undefined; - - // if user is not authorized to view this page - if (workspaceUserInfo && !canPerformWorkspaceMemberActions) { - return ; - } - - return ( - <> - -
    -
    -

    {t("workspace_settings.settings.exports.title")}

    -
    - -
    - - ); -}); - -export default ExportsPage; diff --git a/web/app/(all)/[workspaceSlug]/(projects)/settings/(with-sidebar)/imports/page.tsx b/web/app/(all)/[workspaceSlug]/(projects)/settings/(with-sidebar)/imports/page.tsx deleted file mode 100644 index 718742804ad..00000000000 --- a/web/app/(all)/[workspaceSlug]/(projects)/settings/(with-sidebar)/imports/page.tsx +++ /dev/null @@ -1,43 +0,0 @@ -"use client"; - -import { observer } from "mobx-react"; -// components -import { EUserPermissions, EUserPermissionsLevel } from "@plane/constants"; -import { PageHead } from "@/components/core"; -import IntegrationGuide from "@/components/integration/guide"; -// hooks -import { useUserPermissions, useWorkspace } from "@/hooks/store"; - -const ImportsPage = observer(() => { - // store hooks - const { currentWorkspace } = useWorkspace(); - const { allowPermissions } = useUserPermissions(); - - // derived values - const isAdmin = allowPermissions([EUserPermissions.ADMIN], EUserPermissionsLevel.WORKSPACE); - const pageTitle = currentWorkspace?.name ? `${currentWorkspace.name} - Imports` : undefined; - - if (!isAdmin) - return ( - <> - -
    -

    You are not authorized to access this page.

    -
    - - ); - - return ( - <> - -
    -
    -

    Imports

    -
    - -
    - - ); -}); - -export default ImportsPage; diff --git a/web/app/(all)/[workspaceSlug]/(projects)/settings/(with-sidebar)/integrations/page.tsx b/web/app/(all)/[workspaceSlug]/(projects)/settings/(with-sidebar)/integrations/page.tsx deleted file mode 100644 index ef31bd82feb..00000000000 --- a/web/app/(all)/[workspaceSlug]/(projects)/settings/(with-sidebar)/integrations/page.tsx +++ /dev/null @@ -1,63 +0,0 @@ -"use client"; -import { observer } from "mobx-react"; -import { useParams } from "next/navigation"; -import useSWR from "swr"; -// components -import { EUserPermissions, EUserPermissionsLevel } from "@plane/constants"; -import { PageHead } from "@/components/core"; -import { SingleIntegrationCard } from "@/components/integration"; -import { IntegrationAndImportExportBanner, IntegrationsSettingsLoader } from "@/components/ui"; -// constants -import { APP_INTEGRATIONS } from "@/constants/fetch-keys"; -// hooks -import { useUserPermissions, useWorkspace } from "@/hooks/store"; -// services -import { IntegrationService } from "@/services/integrations"; - -const integrationService = new IntegrationService(); - -const WorkspaceIntegrationsPage = observer(() => { - // router - const { workspaceSlug } = useParams(); - // store hooks - const { currentWorkspace } = useWorkspace(); - const { allowPermissions } = useUserPermissions(); - - // derived values - const isAdmin = allowPermissions([EUserPermissions.ADMIN], EUserPermissionsLevel.WORKSPACE); - const pageTitle = currentWorkspace?.name ? `${currentWorkspace.name} - Integrations` : undefined; - - if (!isAdmin) - return ( - <> - -
    -

    You are not authorized to access this page.

    -
    - - ); - - const { data: appIntegrations } = useSWR(workspaceSlug && isAdmin ? APP_INTEGRATIONS : null, () => - workspaceSlug && isAdmin ? integrationService.getAppIntegrationsList() : null - ); - - return ( - <> - -
    - -
    - {appIntegrations ? ( - appIntegrations.map((integration) => ( - - )) - ) : ( - - )} -
    -
    - - ); -}); - -export default WorkspaceIntegrationsPage; diff --git a/web/app/(all)/[workspaceSlug]/(projects)/settings/(with-sidebar)/layout.tsx b/web/app/(all)/[workspaceSlug]/(projects)/settings/(with-sidebar)/layout.tsx deleted file mode 100644 index e51106bfe5f..00000000000 --- a/web/app/(all)/[workspaceSlug]/(projects)/settings/(with-sidebar)/layout.tsx +++ /dev/null @@ -1,63 +0,0 @@ -"use client"; - -import { FC, ReactNode } from "react"; -import { observer } from "mobx-react"; -// components -import { useParams, usePathname } from "next/navigation"; -import { EUserWorkspaceRoles, WORKSPACE_SETTINGS_ACCESS } from "@plane/constants"; -import { NotAuthorizedView } from "@/components/auth-screens"; -import { AppHeader } from "@/components/core"; -// hooks -import { useUserPermissions } from "@/hooks/store"; -// plane web constants -// local components -import { WorkspaceSettingHeader } from "../header"; -import { MobileWorkspaceSettingsTabs } from "./mobile-header-tabs"; -import { WorkspaceSettingsSidebar } from "./sidebar"; - -export interface IWorkspaceSettingLayout { - children: ReactNode; -} - -const WorkspaceSettingLayout: FC = observer((props) => { - const { children } = props; - - const { workspaceUserInfo } = useUserPermissions(); - const pathname = usePathname(); - const [workspaceSlug, suffix, route] = pathname.replace(/^\/|\/$/g, "").split("/"); // Regex removes leading and trailing slashes - - // derived values - const userWorkspaceRole = workspaceUserInfo?.[workspaceSlug.toString()]?.role; - const isAuthorized = - pathname && - workspaceSlug && - userWorkspaceRole && - WORKSPACE_SETTINGS_ACCESS[route ? `/${suffix}/${route}` : `/${suffix}`]?.includes( - userWorkspaceRole as EUserWorkspaceRoles - ); - - return ( - <> - } /> - -
    - {workspaceUserInfo && !isAuthorized ? ( - - ) : ( - <> -
    - -
    -
    -
    - {children} -
    -
    - - )} -
    - - ); -}); - -export default WorkspaceSettingLayout; diff --git a/web/app/(all)/[workspaceSlug]/(projects)/settings/(with-sidebar)/members/page.tsx b/web/app/(all)/[workspaceSlug]/(projects)/settings/(with-sidebar)/members/page.tsx deleted file mode 100644 index 8be7a9d22f5..00000000000 --- a/web/app/(all)/[workspaceSlug]/(projects)/settings/(with-sidebar)/members/page.tsx +++ /dev/null @@ -1,144 +0,0 @@ -"use client"; - -import { useState } from "react"; -import { observer } from "mobx-react"; -import { useParams } from "next/navigation"; -import { Search } from "lucide-react"; -// types -import { MEMBER_INVITED, EUserPermissions, EUserPermissionsLevel } from "@plane/constants"; -import { useTranslation } from "@plane/i18n"; -import { IWorkspaceBulkInviteFormData } from "@plane/types"; -// ui -import { Button, TOAST_TYPE, setToast } from "@plane/ui"; -// components -import { NotAuthorizedView } from "@/components/auth-screens"; -import { CountChip } from "@/components/common"; -import { PageHead } from "@/components/core"; -import { WorkspaceMembersList } from "@/components/workspace"; -// helpers -import { cn } from "@/helpers/common.helper"; -import { getUserRole } from "@/helpers/user.helper"; -// hooks -import { useEventTracker, useMember, useUserPermissions, useWorkspace } from "@/hooks/store"; -// plane web components -import { BillingActionsButton } from "@/plane-web/components/workspace/billing"; -import { SendWorkspaceInvitationModal } from "@/plane-web/components/workspace/members"; - -const WorkspaceMembersSettingsPage = observer(() => { - // states - const [inviteModal, setInviteModal] = useState(false); - const [searchQuery, setSearchQuery] = useState(""); - // router - const { workspaceSlug } = useParams(); - // store hooks - const { workspaceUserInfo, allowPermissions } = useUserPermissions(); - const { captureEvent } = useEventTracker(); - const { - workspace: { workspaceMemberIds, inviteMembersToWorkspace }, - } = useMember(); - const { currentWorkspace } = useWorkspace(); - const { t } = useTranslation(); - - // derived values - const canPerformWorkspaceAdminActions = allowPermissions([EUserPermissions.ADMIN], EUserPermissionsLevel.WORKSPACE); - const canPerformWorkspaceMemberActions = allowPermissions( - [EUserPermissions.ADMIN, EUserPermissions.MEMBER], - EUserPermissionsLevel.WORKSPACE - ); - - const handleWorkspaceInvite = (data: IWorkspaceBulkInviteFormData) => { - if (!workspaceSlug) return; - - return inviteMembersToWorkspace(workspaceSlug.toString(), data) - .then(() => { - setInviteModal(false); - captureEvent(MEMBER_INVITED, { - emails: [ - ...data.emails.map((email) => ({ - email: email.email, - role: getUserRole(email.role as unknown as EUserPermissions), - })), - ], - project_id: undefined, - state: "SUCCESS", - element: "Workspace settings member page", - }); - setToast({ - type: TOAST_TYPE.SUCCESS, - title: "Success!", - message: t("workspace_settings.settings.members.invitations_sent_successfully"), - }); - }) - .catch((err) => { - captureEvent(MEMBER_INVITED, { - emails: [ - ...data.emails.map((email) => ({ - email: email.email, - role: getUserRole(email.role as unknown as EUserPermissions), - })), - ], - project_id: undefined, - state: "FAILED", - element: "Workspace settings member page", - }); - setToast({ - type: TOAST_TYPE.ERROR, - title: "Error!", - message: `${err.error ?? t("something_went_wrong_please_try_again")}`, - }); - throw err; - }); - }; - - // derived values - const pageTitle = currentWorkspace?.name ? `${currentWorkspace.name} - Members` : undefined; - - // if user is not authorized to view this page - if (workspaceUserInfo && !canPerformWorkspaceMemberActions) { - return ; - } - - return ( - <> - - setInviteModal(false)} - onSubmit={handleWorkspaceInvite} - /> -
    -
    -

    - {t("workspace_settings.settings.members.title")} - {workspaceMemberIds && workspaceMemberIds.length > 0 && ( - - )} -

    -
    - - setSearchQuery(e.target.value)} - /> -
    - {canPerformWorkspaceAdminActions && ( - - )} - -
    - -
    - - ); -}); - -export default WorkspaceMembersSettingsPage; diff --git a/web/app/(all)/[workspaceSlug]/(projects)/settings/(with-sidebar)/mobile-header-tabs.tsx b/web/app/(all)/[workspaceSlug]/(projects)/settings/(with-sidebar)/mobile-header-tabs.tsx deleted file mode 100644 index 2728625970b..00000000000 --- a/web/app/(all)/[workspaceSlug]/(projects)/settings/(with-sidebar)/mobile-header-tabs.tsx +++ /dev/null @@ -1,40 +0,0 @@ -import { observer } from "mobx-react"; -import { useParams, usePathname } from "next/navigation"; -import { WORKSPACE_SETTINGS_LINKS, EUserPermissionsLevel } from "@plane/constants"; -import { useTranslation } from "@plane/i18n"; -// hooks -import { useUserPermissions } from "@/hooks/store"; -import { useAppRouter } from "@/hooks/use-app-router"; -// plane web helpers -import { shouldRenderSettingLink } from "@/plane-web/helpers/workspace.helper"; - -export const MobileWorkspaceSettingsTabs = observer(() => { - const router = useAppRouter(); - const { workspaceSlug } = useParams(); - const pathname = usePathname(); - const { t } = useTranslation(); - // mobx store - const { allowPermissions } = useUserPermissions(); - - return ( -
    - {WORKSPACE_SETTINGS_LINKS.map( - (item, index) => - shouldRenderSettingLink(workspaceSlug.toString(), item.key) && - allowPermissions(item.access, EUserPermissionsLevel.WORKSPACE, workspaceSlug.toString()) && ( -
    router.push(`/${workspaceSlug}${item.href}`)} - > - {t(item.i18n_label)} -
    - ) - )} -
    - ); -}); diff --git a/web/app/(all)/[workspaceSlug]/(projects)/settings/(with-sidebar)/page.tsx b/web/app/(all)/[workspaceSlug]/(projects)/settings/(with-sidebar)/page.tsx deleted file mode 100644 index 6088cf0a50f..00000000000 --- a/web/app/(all)/[workspaceSlug]/(projects)/settings/(with-sidebar)/page.tsx +++ /dev/null @@ -1,28 +0,0 @@ -"use client"; - -import { observer } from "mobx-react"; -// components -import { useTranslation } from "@plane/i18n"; -import { PageHead } from "@/components/core"; -import { WorkspaceDetails } from "@/components/workspace"; -// hooks -import { useWorkspace } from "@/hooks/store"; - -const WorkspaceSettingsPage = observer(() => { - // store hooks - const { currentWorkspace } = useWorkspace(); - const { t } = useTranslation(); - // derived values - const pageTitle = currentWorkspace?.name - ? t("workspace_settings.page_label", { workspace: currentWorkspace.name }) - : undefined; - - return ( - <> - - - - ); -}); - -export default WorkspaceSettingsPage; diff --git a/web/app/(all)/[workspaceSlug]/(projects)/settings/(with-sidebar)/sidebar.tsx b/web/app/(all)/[workspaceSlug]/(projects)/settings/(with-sidebar)/sidebar.tsx deleted file mode 100644 index 95cb20c6cd6..00000000000 --- a/web/app/(all)/[workspaceSlug]/(projects)/settings/(with-sidebar)/sidebar.tsx +++ /dev/null @@ -1,48 +0,0 @@ -"use client"; - -import React from "react"; -import { observer } from "mobx-react"; -import Link from "next/link"; -import { useParams, usePathname } from "next/navigation"; -import { WORKSPACE_SETTINGS_LINKS, EUserPermissionsLevel } from "@plane/constants"; -import { useTranslation } from "@plane/i18n"; -// components -import { SidebarNavItem } from "@/components/sidebar"; -// hooks -import { useUserPermissions } from "@/hooks/store"; -// plane web helpers -import { shouldRenderSettingLink } from "@/plane-web/helpers/workspace.helper"; - -export const WorkspaceSettingsSidebar = observer(() => { - // router - const { workspaceSlug } = useParams(); - const pathname = usePathname(); - // mobx store - const { t } = useTranslation(); - const { allowPermissions } = useUserPermissions(); - - return ( -
    -
    - {t("settings")} -
    - {WORKSPACE_SETTINGS_LINKS.map( - (link) => - shouldRenderSettingLink(workspaceSlug.toString(), link.key) && - allowPermissions(link.access, EUserPermissionsLevel.WORKSPACE, workspaceSlug.toString()) && ( - - - {t(link.i18n_label)} - - - ) - )} -
    -
    -
    - ); -}); diff --git a/web/app/(all)/[workspaceSlug]/(projects)/settings/(with-sidebar)/webhooks/[webhookId]/page.tsx b/web/app/(all)/[workspaceSlug]/(projects)/settings/(with-sidebar)/webhooks/[webhookId]/page.tsx deleted file mode 100644 index 5edc914e908..00000000000 --- a/web/app/(all)/[workspaceSlug]/(projects)/settings/(with-sidebar)/webhooks/[webhookId]/page.tsx +++ /dev/null @@ -1,103 +0,0 @@ -"use client"; - -import { useState } from "react"; -import { observer } from "mobx-react"; -import { useParams } from "next/navigation"; -import useSWR from "swr"; -import { EUserPermissions, EUserPermissionsLevel } from "@plane/constants"; -import { IWebhook } from "@plane/types"; -// ui -import { TOAST_TYPE, setToast } from "@plane/ui"; -// components -import { LogoSpinner } from "@/components/common"; -import { PageHead } from "@/components/core"; -import { DeleteWebhookModal, WebhookDeleteSection, WebhookForm } from "@/components/web-hooks"; -// hooks -import { useUserPermissions, useWebhook, useWorkspace } from "@/hooks/store"; - -const WebhookDetailsPage = observer(() => { - // states - const [deleteWebhookModal, setDeleteWebhookModal] = useState(false); - // router - const { workspaceSlug, webhookId } = useParams(); - // mobx store - const { currentWebhook, fetchWebhookById, updateWebhook } = useWebhook(); - const { currentWorkspace } = useWorkspace(); - const { allowPermissions } = useUserPermissions(); - - // TODO: fix this error - // useEffect(() => { - // if (isCreated !== "true") clearSecretKey(); - // }, [clearSecretKey, isCreated]); - - // derived values - const isAdmin = allowPermissions([EUserPermissions.ADMIN], EUserPermissionsLevel.WORKSPACE); - const pageTitle = currentWorkspace?.name ? `${currentWorkspace.name} - Webhook` : undefined; - - useSWR( - workspaceSlug && webhookId && isAdmin ? `WEBHOOK_DETAILS_${workspaceSlug}_${webhookId}` : null, - workspaceSlug && webhookId && isAdmin - ? () => fetchWebhookById(workspaceSlug.toString(), webhookId.toString()) - : null - ); - - const handleUpdateWebhook = async (formData: IWebhook) => { - if (!workspaceSlug || !formData || !formData.id) return; - const payload = { - url: formData?.url, - is_active: formData?.is_active, - project: formData?.project, - cycle: formData?.cycle, - module: formData?.module, - issue: formData?.issue, - issue_comment: formData?.issue_comment, - }; - await updateWebhook(workspaceSlug.toString(), formData.id, payload) - .then(() => { - setToast({ - type: TOAST_TYPE.SUCCESS, - title: "Success!", - message: "Webhook updated successfully.", - }); - }) - .catch((error) => { - setToast({ - type: TOAST_TYPE.ERROR, - title: "Error!", - message: error?.error ?? "Something went wrong. Please try again.", - }); - }); - }; - - if (!isAdmin) - return ( - <> - -
    -

    You are not authorized to access this page.

    -
    - - ); - - if (!currentWebhook) - return ( -
    - -
    - ); - - return ( - <> - - setDeleteWebhookModal(false)} /> -
    -
    - await handleUpdateWebhook(data)} data={currentWebhook} /> -
    - {currentWebhook && setDeleteWebhookModal(true)} />} -
    - - ); -}); - -export default WebhookDetailsPage; diff --git a/web/app/(all)/[workspaceSlug]/(projects)/settings/(with-sidebar)/webhooks/page.tsx b/web/app/(all)/[workspaceSlug]/(projects)/settings/(with-sidebar)/webhooks/page.tsx deleted file mode 100644 index 2623660da88..00000000000 --- a/web/app/(all)/[workspaceSlug]/(projects)/settings/(with-sidebar)/webhooks/page.tsx +++ /dev/null @@ -1,101 +0,0 @@ -"use client"; - -import React, { useEffect, useState } from "react"; -import { observer } from "mobx-react"; -import { useParams } from "next/navigation"; -import useSWR from "swr"; -// plane imports -import { EUserPermissions, EUserPermissionsLevel } from "@plane/constants"; -import { useTranslation } from "@plane/i18n"; -import { Button } from "@plane/ui"; -// components -import { NotAuthorizedView } from "@/components/auth-screens"; -import { PageHead } from "@/components/core"; -import { DetailedEmptyState } from "@/components/empty-state"; -import { WebhookSettingsLoader } from "@/components/ui"; -import { WebhooksList, CreateWebhookModal } from "@/components/web-hooks"; -// hooks -import { useUserPermissions, useWebhook, useWorkspace } from "@/hooks/store"; -import { useResolvedAssetPath } from "@/hooks/use-resolved-asset-path"; - -const WebhooksListPage = observer(() => { - // states - const [showCreateWebhookModal, setShowCreateWebhookModal] = useState(false); - // router - const { workspaceSlug } = useParams(); - // plane hooks - const { t } = useTranslation(); - // mobx store - const { workspaceUserInfo, allowPermissions } = useUserPermissions(); - const { fetchWebhooks, webhooks, clearSecretKey, webhookSecretKey, createWebhook } = useWebhook(); - const { currentWorkspace } = useWorkspace(); - // derived values - const canPerformWorkspaceAdminActions = allowPermissions([EUserPermissions.ADMIN], EUserPermissionsLevel.WORKSPACE); - const resolvedPath = useResolvedAssetPath({ basePath: "/empty-state/workspace-settings/webhooks" }); - - useSWR( - workspaceSlug && canPerformWorkspaceAdminActions ? `WEBHOOKS_LIST_${workspaceSlug}` : null, - workspaceSlug && canPerformWorkspaceAdminActions ? () => fetchWebhooks(workspaceSlug.toString()) : null - ); - - const pageTitle = currentWorkspace?.name - ? `${currentWorkspace.name} - ${t("workspace_settings.settings.webhooks.title")}` - : undefined; - - // clear secret key when modal is closed. - useEffect(() => { - if (!showCreateWebhookModal && webhookSecretKey) clearSecretKey(); - }, [showCreateWebhookModal, webhookSecretKey, clearSecretKey]); - - if (workspaceUserInfo && !canPerformWorkspaceAdminActions) { - return ; - } - - if (!webhooks) return ; - - return ( - <> - -
    - { - setShowCreateWebhookModal(false); - }} - /> - {Object.keys(webhooks).length > 0 ? ( -
    -
    -
    {t("workspace_settings.settings.webhooks.title")}
    - -
    - -
    - ) : ( -
    -
    -
    {t("workspace_settings.settings.webhooks.title")}
    - -
    -
    - -
    -
    - )} -
    - - ); -}); - -export default WebhooksListPage; diff --git a/web/app/(all)/[workspaceSlug]/(projects)/settings/header.tsx b/web/app/(all)/[workspaceSlug]/(projects)/settings/header.tsx deleted file mode 100644 index 003e7274319..00000000000 --- a/web/app/(all)/[workspaceSlug]/(projects)/settings/header.tsx +++ /dev/null @@ -1,37 +0,0 @@ -"use client"; - -import { FC } from "react"; -import { observer } from "mobx-react"; -import { Settings } from "lucide-react"; -// ui -import { useTranslation } from "@plane/i18n"; -import { Breadcrumbs, Header } from "@plane/ui"; -// components -import { BreadcrumbLink } from "@/components/common"; -// hooks -import { useWorkspace } from "@/hooks/store"; - -export const WorkspaceSettingHeader: FC = observer(() => { - const { currentWorkspace, loader } = useWorkspace(); - const { t } = useTranslation(); - - return ( -
    - - - } - /> - } - /> - } /> - - -
    - ); -}); From d38312c1c3765f889b4bf5bd7f544ed0545495a8 Mon Sep 17 00:00:00 2001 From: gakshita Date: Wed, 28 May 2025 18:55:04 +0530 Subject: [PATCH 42/45] fix: empty states --- .../(settings)/settings/(workspace)/webhooks/page.tsx | 2 +- .../(settings)/settings/account/activity/page.tsx | 2 +- .../(settings)/settings/account/api-tokens/page.tsx | 2 +- web/core/components/estimates/empty-screen.tsx | 1 + web/core/components/settings/header.tsx | 2 +- 5 files changed, 5 insertions(+), 4 deletions(-) diff --git a/web/app/(all)/[workspaceSlug]/(settings)/settings/(workspace)/webhooks/page.tsx b/web/app/(all)/[workspaceSlug]/(settings)/settings/(workspace)/webhooks/page.tsx index 6969c194450..9f99989ed21 100644 --- a/web/app/(all)/[workspaceSlug]/(settings)/settings/(workspace)/webhooks/page.tsx +++ b/web/app/(all)/[workspaceSlug]/(settings)/settings/(workspace)/webhooks/page.tsx @@ -91,7 +91,7 @@ const WebhooksListPage = observer(() => { title={t("workspace_settings.empty_state.webhooks.title")} description={t("workspace_settings.empty_state.webhooks.description")} assetPath={resolvedPath} - size="sm" + size="md" primaryButton={{ text: t("workspace_settings.settings.webhooks.add_webhook"), onClick: () => setShowCreateWebhookModal(true), diff --git a/web/app/(all)/[workspaceSlug]/(settings)/settings/account/activity/page.tsx b/web/app/(all)/[workspaceSlug]/(settings)/settings/account/activity/page.tsx index d92067c25f5..2394d9210ae 100644 --- a/web/app/(all)/[workspaceSlug]/(settings)/settings/account/activity/page.tsx +++ b/web/app/(all)/[workspaceSlug]/(settings)/settings/account/activity/page.tsx @@ -57,7 +57,7 @@ const ProfileActivityPage = observer(() => { description={t("profile.empty_state.activity.description")} assetPath={resolvedPath} className="w-full !px-0 justify-center mx-auto min-h-fit" - size="sm" + size="md" />
    ); diff --git a/web/app/(all)/[workspaceSlug]/(settings)/settings/account/api-tokens/page.tsx b/web/app/(all)/[workspaceSlug]/(settings)/settings/account/api-tokens/page.tsx index bd99b7bd674..cd85d2ccd45 100644 --- a/web/app/(all)/[workspaceSlug]/(settings)/settings/account/api-tokens/page.tsx +++ b/web/app/(all)/[workspaceSlug]/(settings)/settings/account/api-tokens/page.tsx @@ -88,7 +88,7 @@ const ApiTokensPage = observer(() => { description={t("workspace_settings.empty_state.api_tokens.description")} assetPath={resolvedPath} className="w-full !px-0 justify-center mx-auto" - size="sm" + size="md" primaryButton={{ text: t("workspace_settings.settings.api_tokens.add_token"), onClick: () => setIsCreateTokenModalOpen(true), diff --git a/web/core/components/estimates/empty-screen.tsx b/web/core/components/estimates/empty-screen.tsx index 250cdb07d9b..73acce27f86 100644 --- a/web/core/components/estimates/empty-screen.tsx +++ b/web/core/components/estimates/empty-screen.tsx @@ -23,6 +23,7 @@ export const EstimateEmptyScreen: FC = (props) => { title={t("project_settings.empty_state.estimates.title")} description={t("project_settings.empty_state.estimates.description")} assetPath={resolvedPath} + className="w-full !px-0 !py-4" primaryButton={{ text: t("project_settings.empty_state.estimates.primary_button"), onClick: onButtonClick, diff --git a/web/core/components/settings/header.tsx b/web/core/components/settings/header.tsx index f7f0500b272..cd096f3acfd 100644 --- a/web/core/components/settings/header.tsx +++ b/web/core/components/settings/header.tsx @@ -36,7 +36,7 @@ export const SettingsHeader = observer(() => { getButtonStyling("neutral-primary", "sm"), "md:absolute left-2 top-9 group flex gap-2 text-custom-text-300 mb-4 border border-transparent w-fit rounded-lg ", "h-6 w-6 rounded-lg p-1 bg-custom-background-100 border-custom-border-200 ", - isScrolled ? "-mt-2 " : "hidden p-0 overflow-hidden items-center pr-2 border-none" + isScrolled ? "-mt-1 " : "hidden p-0 overflow-hidden items-center pr-2 border-none" )} > From 8bbed0ab8c3fc6b9a02c3bca3fb1f2c17213a169 Mon Sep 17 00:00:00 2001 From: gakshita Date: Wed, 28 May 2025 19:46:46 +0530 Subject: [PATCH 43/45] fix: headings --- .../[workspaceSlug]/(settings)/layout.tsx | 6 ++- .../settings/(workspace)/exports/page.tsx | 9 ++-- .../settings/(workspace)/imports/page.tsx | 6 +-- .../settings/(workspace)/layout.tsx | 10 ++-- .../settings/(workspace)/webhooks/page.tsx | 23 ++++---- .../projects/[projectId]/states/page.tsx | 6 +-- web/ce/components/workspace/billing/root.tsx | 10 ++-- .../labels/project-setting-label-list.tsx | 18 ++++--- web/core/components/project/member-list.tsx | 53 ++++++++++--------- .../project/settings/features-list.tsx | 8 ++- web/core/components/settings/header.tsx | 20 +++---- web/core/components/settings/heading.tsx | 28 +++++++++- 12 files changed, 107 insertions(+), 90 deletions(-) diff --git a/web/app/(all)/[workspaceSlug]/(settings)/layout.tsx b/web/app/(all)/[workspaceSlug]/(settings)/layout.tsx index 516a413d1c3..d05da405839 100644 --- a/web/app/(all)/[workspaceSlug]/(settings)/layout.tsx +++ b/web/app/(all)/[workspaceSlug]/(settings)/layout.tsx @@ -2,7 +2,7 @@ import { CommandPalette } from "@/components/command-palette"; import { ContentWrapper } from "@/components/core"; -import { SettingsHeader } from "@/components/settings"; +import { SettingsContentLayout, SettingsHeader } from "@/components/settings"; import { AuthenticationWrapper } from "@/lib/wrappers"; import { WorkspaceAuthWrapper } from "@/plane-web/layouts/workspace-wrapper"; @@ -15,7 +15,9 @@ export default function SettingsLayout({ children }: { children: React.ReactNode {/* Header */} {/* Content */} - {children} + + {children} + diff --git a/web/app/(all)/[workspaceSlug]/(settings)/settings/(workspace)/exports/page.tsx b/web/app/(all)/[workspaceSlug]/(settings)/settings/(workspace)/exports/page.tsx index 669a3aedbba..2b321873f0f 100644 --- a/web/app/(all)/[workspaceSlug]/(settings)/settings/(workspace)/exports/page.tsx +++ b/web/app/(all)/[workspaceSlug]/(settings)/settings/(workspace)/exports/page.tsx @@ -8,7 +8,7 @@ import { NotAuthorizedView } from "@/components/auth-screens"; import { PageHead } from "@/components/core"; import ExportGuide from "@/components/exporter/guide"; // helpers -import { SettingsContentWrapper } from "@/components/settings"; +import { SettingsContentWrapper, SettingsHeading } from "@/components/settings"; import { cn } from "@/helpers/common.helper"; // hooks import { useUserPermissions, useWorkspace } from "@/hooks/store"; @@ -41,9 +41,10 @@ const ExportsPage = observer(() => { "opacity-60": !canPerformWorkspaceMemberActions, })} > -
    -

    {t("workspace_settings.settings.exports.title")}

    -
    +
    diff --git a/web/app/(all)/[workspaceSlug]/(settings)/settings/(workspace)/imports/page.tsx b/web/app/(all)/[workspaceSlug]/(settings)/settings/(workspace)/imports/page.tsx index 1d22e36474d..10d1a76e66f 100644 --- a/web/app/(all)/[workspaceSlug]/(settings)/settings/(workspace)/imports/page.tsx +++ b/web/app/(all)/[workspaceSlug]/(settings)/settings/(workspace)/imports/page.tsx @@ -7,7 +7,7 @@ import { NotAuthorizedView } from "@/components/auth-screens"; import { PageHead } from "@/components/core"; import IntegrationGuide from "@/components/integration/guide"; // hooks -import { SettingsContentWrapper } from "@/components/settings"; +import { SettingsContentWrapper, SettingsHeading } from "@/components/settings"; import { useUserPermissions, useWorkspace } from "@/hooks/store"; const ImportsPage = observer(() => { @@ -25,9 +25,7 @@ const ImportsPage = observer(() => {
    -
    -

    Imports

    -
    +
    diff --git a/web/app/(all)/[workspaceSlug]/(settings)/settings/(workspace)/layout.tsx b/web/app/(all)/[workspaceSlug]/(settings)/settings/(workspace)/layout.tsx index dc0f1e4b92a..fb96779947a 100644 --- a/web/app/(all)/[workspaceSlug]/(settings)/settings/(workspace)/layout.tsx +++ b/web/app/(all)/[workspaceSlug]/(settings)/settings/(workspace)/layout.tsx @@ -41,16 +41,14 @@ const WorkspaceSettingLayout: FC = observer((props) => hamburgerContent={WorkspaceSettingsSidebar} activePath={getWorkspaceActivePath(pathname) || ""} /> -
    +
    {workspaceUserInfo && !isAuthorized ? ( ) : ( - <> -
    - -
    +
    +
    {}
    {children} - +
    )}
    diff --git a/web/app/(all)/[workspaceSlug]/(settings)/settings/(workspace)/webhooks/page.tsx b/web/app/(all)/[workspaceSlug]/(settings)/settings/(workspace)/webhooks/page.tsx index 9f99989ed21..f29377e0685 100644 --- a/web/app/(all)/[workspaceSlug]/(settings)/settings/(workspace)/webhooks/page.tsx +++ b/web/app/(all)/[workspaceSlug]/(settings)/settings/(workspace)/webhooks/page.tsx @@ -7,12 +7,11 @@ import useSWR from "swr"; // plane imports import { EUserPermissions, EUserPermissionsLevel } from "@plane/constants"; import { useTranslation } from "@plane/i18n"; -import { Button } from "@plane/ui"; // components import { NotAuthorizedView } from "@/components/auth-screens"; import { PageHead } from "@/components/core"; import { DetailedEmptyState } from "@/components/empty-state"; -import { SettingsContentWrapper } from "@/components/settings"; +import { SettingsContentWrapper, SettingsHeading } from "@/components/settings"; import { WebhookSettingsLoader } from "@/components/ui"; import { WebhooksList, CreateWebhookModal } from "@/components/web-hooks"; // hooks @@ -67,24 +66,20 @@ const WebhooksListPage = observer(() => { setShowCreateWebhookModal(false); }} /> + setShowCreateWebhookModal(true), + }} + /> {Object.keys(webhooks).length > 0 ? (
    -
    -
    {t("workspace_settings.settings.webhooks.title")}
    - -
    ) : (
    -
    -
    {t("workspace_settings.settings.webhooks.title")}
    - -
    { @@ -36,9 +36,7 @@ const StatesSettingsPage = observer(() => {
    -
    -

    {t("common.states")}

    -
    + {workspaceSlug && projectId && ( )} diff --git a/web/ce/components/workspace/billing/root.tsx b/web/ce/components/workspace/billing/root.tsx index f760525841f..aa1b37fce4a 100644 --- a/web/ce/components/workspace/billing/root.tsx +++ b/web/ce/components/workspace/billing/root.tsx @@ -9,6 +9,7 @@ import { import { TBillingFrequency, TProductBillingFrequency } from "@plane/types"; import { cn } from "@plane/utils"; // components +import { SettingsHeading } from "@/components/settings"; import { getSubscriptionTextColor } from "@/components/workspace/billing/subscription"; // local imports import { PlansComparison } from "./comparison/root"; @@ -56,11 +57,10 @@ export const BillingRoot = observer(() => { return (
    -
    -
    -

    Billing and plans

    -
    -
    +
    { @@ -75,14 +76,15 @@ export const ProjectSettingsLabelList: React.FC = observer(() => { data={selectDeleteLabel ?? null} onClose={() => setSelectDeleteLabel(null)} /> -
    -

    Labels

    - {isEditable && ( - - )} -
    + +
    {showLabelForm && (
    diff --git a/web/core/components/project/member-list.tsx b/web/core/components/project/member-list.tsx index c6bf34640e1..71f73f8f5f2 100644 --- a/web/core/components/project/member-list.tsx +++ b/web/core/components/project/member-list.tsx @@ -13,6 +13,7 @@ import { ProjectMemberListItem, SendProjectInvitationModal } from "@/components/ // ui import { MembersSettingsLoader } from "@/components/ui"; import { useEventTracker, useMember, useUserPermissions } from "@/hooks/store"; +import { SettingsHeading } from "../settings"; export const ProjectMemberList: React.FC = observer(() => { // router @@ -48,31 +49,35 @@ export const ProjectMemberList: React.FC = observer(() => { return ( <> setInviteModal(false)} /> + +
    + + setSearchQuery(e.target.value)} + /> +
    + {isAdmin && ( + + )} +
    + } + /> -
    -

    {t("members")}

    -
    - - setSearchQuery(e.target.value)} - /> -
    - {isAdmin && ( - - )} -
    {!projectMemberIds ? ( ) : ( diff --git a/web/core/components/project/settings/features-list.tsx b/web/core/components/project/settings/features-list.tsx index 05045f7178c..faa41a0e1d7 100644 --- a/web/core/components/project/settings/features-list.tsx +++ b/web/core/components/project/settings/features-list.tsx @@ -6,6 +6,7 @@ import { useTranslation } from "@plane/i18n"; import { IProject } from "@plane/types"; import { ToggleSwitch, Tooltip, setPromiseToast } from "@plane/ui"; // hooks +import { SettingsHeading } from "@/components/settings"; import { useEventTracker, useProject, useUser } from "@/hooks/store"; // plane web components import { UpgradeBadge } from "@/plane-web/components/workspace"; @@ -61,14 +62,11 @@ export const ProjectFeaturesList: FC = observer((props) => {
    {Object.entries(PROJECT_FEATURES_LIST).map(([featureSectionKey, feature]) => (
    -
    -

    {t(feature.key)}

    -

    {t(`${feature.key}_description`)}

    -
    + {Object.entries(feature.featureList).map(([featureItemKey, featureItem]) => (
    diff --git a/web/core/components/settings/header.tsx b/web/core/components/settings/header.tsx index cd096f3acfd..586fa9181f3 100644 --- a/web/core/components/settings/header.tsx +++ b/web/core/components/settings/header.tsx @@ -6,20 +6,16 @@ import { ChevronLeftIcon } from "lucide-react"; import { useTranslation } from "@plane/i18n"; import { getButtonStyling } from "@plane/ui/src/button"; import { cn } from "@plane/utils"; -import { useUserSettings } from "@/hooks/store"; +import { useUserSettings, useWorkspace } from "@/hooks/store"; import { WorkspaceLogo } from "../workspace"; import SettingsTabs from "./tabs"; export const SettingsHeader = observer(() => { // hooks - const { data: currentUserSettings } = useUserSettings(); const { t } = useTranslation(); + const { currentWorkspace } = useWorkspace(); const { isScrolled } = useUserSettings(); // redirect url for normal mode - const redirectWorkspaceSlug = - currentUserSettings?.workspace?.last_workspace_slug || - currentUserSettings?.workspace?.fallback_workspace_slug || - ""; return (
    { )} > { {/* Breadcrumb */} { {/* Last workspace */}
    -
    - {currentUserSettings?.workspace?.last_workspace_name} -
    +
    {currentWorkspace?.name}
    diff --git a/web/core/components/settings/heading.tsx b/web/core/components/settings/heading.tsx index 35c0ef4156a..7d6655de370 100644 --- a/web/core/components/settings/heading.tsx +++ b/web/core/components/settings/heading.tsx @@ -1,3 +1,29 @@ -export const SettingsHeading = ({ children }: { children: React.ReactNode }) =>
    {children}
    ; +import { Button } from "@plane/ui"; + +type Props = { + title: string | React.ReactNode; + description?: string; + appendToRight?: React.ReactNode; + showButton?: boolean; + button?: { + label: string; + onClick: () => void; + }; +}; + +export const SettingsHeading = ({ title, description, button, appendToRight, showButton = true }: Props) => ( +
    +
    + {typeof title === "string" ?

    {title}

    : title} + {description &&
    {description}
    } +
    + {button && showButton && ( + + )} + {appendToRight} +
    +); export default SettingsHeading; From 750a2ee844cd3a58c223f65a53385ddfbb89cc78 Mon Sep 17 00:00:00 2001 From: gakshita Date: Wed, 28 May 2025 22:26:20 +0530 Subject: [PATCH 44/45] fix: settings description --- .../i18n/src/locales/en/translations.json | 38 ++++++++++++++++++- .../settings/(workspace)/exports/page.tsx | 4 +- .../settings/(workspace)/webhooks/page.tsx | 2 +- .../settings/account/activity/page.tsx | 13 +++++-- .../settings/account/api-tokens/page.tsx | 30 ++++++++------- .../settings/account/notifications/page.tsx | 9 +++-- .../settings/account/preferences/page.tsx | 6 ++- .../projects/[projectId]/automations/page.tsx | 9 +++-- .../projects/[projectId]/states/page.tsx | 5 ++- web/ce/components/workspace/billing/root.tsx | 6 ++- web/core/components/estimates/root.tsx | 11 ++++-- .../labels/project-setting-label-list.tsx | 3 +- 12 files changed, 99 insertions(+), 37 deletions(-) diff --git a/packages/i18n/src/locales/en/translations.json b/packages/i18n/src/locales/en/translations.json index ba601f38ff4..60e79121bc0 100644 --- a/packages/i18n/src/locales/en/translations.json +++ b/packages/i18n/src/locales/en/translations.json @@ -1308,6 +1308,28 @@ } } }, + "account_settings": { + "profile":{}, + "preferences":{ + "heading": "Preferences", + "description": "Customize your app experience the way you work" + }, + "notifications":{ + "heading": "Email notifications", + "description": "Stay in the loop on Work items you are subscribed to. Enable this to get notified." + }, + "security":{ + "heading": "Security" + }, + "api_tokens":{ + "heading": "Personal Access Tokens", + "description": "Generate secure API tokens to integrate your data with external systems and applications." + }, + "activity":{ + "heading": "Activity", + "description": "Track your recent actions and changes across all projects and work items." + } + }, "workspace_settings": { "label": "Workspace settings", "page_label": "{workspace} - General settings", @@ -1374,12 +1396,16 @@ } }, "billing_and_plans": { + "heading": "Billing & Plans", + "description":"Choose your plan, manage subscriptions, and easily upgrade as your needs grow.", "title": "Billing & Plans", "current_plan": "Current plan", "free_plan": "You are currently using the free plan", "view_plans": "View plans" }, "exports": { + "heading": "Exports", + "description": "Export your project data in various formats and access your export history with download links.", "title": "Exports", "exporting": "Exporting", "previous_exports": "Previous exports", @@ -1401,6 +1427,8 @@ } }, "webhooks": { + "heading": "Webhooks", + "description": "Automate notifications to external services when project events occur.", "title": "Webhooks", "add_webhook": "Add webhook", "modal": { @@ -1588,6 +1616,8 @@ } }, "states": { + "heading": "States", + "description": "Define and customize workflow states to track the progress of your work items.", "describe_this_state_for_your_members": "Describe this state for your members.", "empty_state": { "title": "No states available for the {groupKey} group", @@ -1595,6 +1625,8 @@ } }, "labels": { + "heading": "Labels", + "description": "Create custom labels to categorize and organize your work items", "label_title": "Label title", "label_title_is_required": "Label title is required", "label_max_char": "Label name should not exceed 255 characters", @@ -1603,9 +1635,11 @@ } }, "estimates": { + "heading": "Estimates", + "description": "Set up estimation systems to track and communicate the effort required for each work item.", "label": "Estimates", "title": "Enable estimates for my project", - "description": "They help you in communicating complexity and workload of the team.", + "enable_description": "They help you in communicating complexity and workload of the team.", "no_estimate": "No estimate", "new": "New estimate system", "create": { @@ -1687,6 +1721,8 @@ }, "automations": { "label": "Automations", + "heading": "Automations", + "description": "Configure automated actions to streamline your project management workflow and reduce manual tasks.", "auto-archive": { "title": "Auto-archive closed work items", "description": "Plane will auto archive work items that have been completed or canceled.", diff --git a/web/app/(all)/[workspaceSlug]/(settings)/settings/(workspace)/exports/page.tsx b/web/app/(all)/[workspaceSlug]/(settings)/settings/(workspace)/exports/page.tsx index 2b321873f0f..9f08259c6e7 100644 --- a/web/app/(all)/[workspaceSlug]/(settings)/settings/(workspace)/exports/page.tsx +++ b/web/app/(all)/[workspaceSlug]/(settings)/settings/(workspace)/exports/page.tsx @@ -42,8 +42,8 @@ const ExportsPage = observer(() => { })} >
    diff --git a/web/app/(all)/[workspaceSlug]/(settings)/settings/(workspace)/webhooks/page.tsx b/web/app/(all)/[workspaceSlug]/(settings)/settings/(workspace)/webhooks/page.tsx index f29377e0685..d1692168eda 100644 --- a/web/app/(all)/[workspaceSlug]/(settings)/settings/(workspace)/webhooks/page.tsx +++ b/web/app/(all)/[workspaceSlug]/(settings)/settings/(workspace)/webhooks/page.tsx @@ -68,7 +68,7 @@ const WebhooksListPage = observer(() => { /> setShowCreateWebhookModal(true), diff --git a/web/app/(all)/[workspaceSlug]/(settings)/settings/account/activity/page.tsx b/web/app/(all)/[workspaceSlug]/(settings)/settings/account/activity/page.tsx index 2394d9210ae..05777e64891 100644 --- a/web/app/(all)/[workspaceSlug]/(settings)/settings/account/activity/page.tsx +++ b/web/app/(all)/[workspaceSlug]/(settings)/settings/account/activity/page.tsx @@ -8,8 +8,9 @@ import { Button } from "@plane/ui"; // components import { PageHead } from "@/components/core"; import { DetailedEmptyState } from "@/components/empty-state"; -import { ProfileActivityListPage, ProfileSettingContentHeader } from "@/components/profile"; +import { ProfileActivityListPage } from "@/components/profile"; // hooks +import { SettingsHeading } from "@/components/settings"; import { useResolvedAssetPath } from "@/hooks/use-resolved-asset-path"; const PER_PAGE = 100; @@ -51,7 +52,10 @@ const ProfileActivityPage = observer(() => { if (isEmpty) { return (
    - + { return ( <> - +
    {activityPages}
    {isLoadMoreVisible && (
    diff --git a/web/app/(all)/[workspaceSlug]/(settings)/settings/account/api-tokens/page.tsx b/web/app/(all)/[workspaceSlug]/(settings)/settings/account/api-tokens/page.tsx index cd85d2ccd45..10461db071f 100644 --- a/web/app/(all)/[workspaceSlug]/(settings)/settings/account/api-tokens/page.tsx +++ b/web/app/(all)/[workspaceSlug]/(settings)/settings/account/api-tokens/page.tsx @@ -7,12 +7,12 @@ import useSWR from "swr"; // plane imports import { EUserPermissions, EUserPermissionsLevel } from "@plane/constants"; import { useTranslation } from "@plane/i18n"; -import { Button } from "@plane/ui"; // component import { ApiTokenListItem, CreateApiTokenModal } from "@/components/api-token"; import { NotAuthorizedView } from "@/components/auth-screens"; import { PageHead } from "@/components/core"; import { DetailedEmptyState } from "@/components/empty-state"; +import { SettingsHeading } from "@/components/settings"; import { APITokenSettingsLoader } from "@/components/ui"; import { API_TOKENS_LIST } from "@/constants/fetch-keys"; // store hooks @@ -62,12 +62,14 @@ const ApiTokensPage = observer(() => {
    {tokens.length > 0 ? ( <> -
    -

    {t("workspace_settings.settings.api_tokens.title")}

    - -
    + setIsCreateTokenModalOpen(true), + }} + />
    {tokens.map((token) => ( @@ -76,12 +78,14 @@ const ApiTokensPage = observer(() => { ) : (
    -
    -

    {t("workspace_settings.settings.api_tokens.title")}

    - -
    + setIsCreateTokenModalOpen(true), + }} + />
    - diff --git a/web/app/(all)/[workspaceSlug]/(settings)/settings/account/preferences/page.tsx b/web/app/(all)/[workspaceSlug]/(settings)/settings/account/preferences/page.tsx index 75b4e86afd7..81c37ae4c43 100644 --- a/web/app/(all)/[workspaceSlug]/(settings)/settings/account/preferences/page.tsx +++ b/web/app/(all)/[workspaceSlug]/(settings)/settings/account/preferences/page.tsx @@ -8,6 +8,7 @@ import { PageHead } from "@/components/core"; import { PreferencesList } from "@/components/preferences/list"; import { LanguageTimezone, ProfileSettingContentHeader } from "@/components/profile"; // hooks +import { SettingsHeading } from "@/components/settings"; import { useUserProfile } from "@/hooks/store"; const ProfileAppearancePage = observer(() => { const { t } = useTranslation(); @@ -21,7 +22,10 @@ const ProfileAppearancePage = observer(() => { <>
    - +
    diff --git a/web/app/(all)/[workspaceSlug]/(settings)/settings/projects/[projectId]/automations/page.tsx b/web/app/(all)/[workspaceSlug]/(settings)/settings/projects/[projectId]/automations/page.tsx index 61fecee89b0..c7542b4f064 100644 --- a/web/app/(all)/[workspaceSlug]/(settings)/settings/projects/[projectId]/automations/page.tsx +++ b/web/app/(all)/[workspaceSlug]/(settings)/settings/projects/[projectId]/automations/page.tsx @@ -13,7 +13,7 @@ import { NotAuthorizedView } from "@/components/auth-screens"; import { AutoArchiveAutomation, AutoCloseAutomation } from "@/components/automation"; import { PageHead } from "@/components/core"; // hooks -import { SettingsContentWrapper } from "@/components/settings"; +import { SettingsContentWrapper, SettingsHeading } from "@/components/settings"; import { useProject, useUserPermissions } from "@/hooks/store"; const AutomationSettingsPage = observer(() => { @@ -51,9 +51,10 @@ const AutomationSettingsPage = observer(() => {
    -
    -

    {t("project_settings.automations.label")}

    -
    +
    diff --git a/web/app/(all)/[workspaceSlug]/(settings)/settings/projects/[projectId]/states/page.tsx b/web/app/(all)/[workspaceSlug]/(settings)/settings/projects/[projectId]/states/page.tsx index b180495e8e0..30f6c3da638 100644 --- a/web/app/(all)/[workspaceSlug]/(settings)/settings/projects/[projectId]/states/page.tsx +++ b/web/app/(all)/[workspaceSlug]/(settings)/settings/projects/[projectId]/states/page.tsx @@ -36,7 +36,10 @@ const StatesSettingsPage = observer(() => {
    - + {workspaceSlug && projectId && ( )} diff --git a/web/ce/components/workspace/billing/root.tsx b/web/ce/components/workspace/billing/root.tsx index aa1b37fce4a..6dd45213409 100644 --- a/web/ce/components/workspace/billing/root.tsx +++ b/web/ce/components/workspace/billing/root.tsx @@ -6,6 +6,7 @@ import { EProductSubscriptionEnum, SUBSCRIPTION_WITH_BILLING_FREQUENCY, } from "@plane/constants"; +import { useTranslation } from "@plane/i18n"; import { TBillingFrequency, TProductBillingFrequency } from "@plane/types"; import { cn } from "@plane/utils"; // components @@ -21,6 +22,7 @@ export const BillingRoot = observer(() => { const [productBillingFrequency, setProductBillingFrequency] = useState( DEFAULT_PRODUCT_BILLING_FREQUENCY ); + const { t } = useTranslation(); /** * Retrieves the billing frequency for a given subscription type @@ -58,8 +60,8 @@ export const BillingRoot = observer(() => { return (
    = observer((props) => { ) : (
    {/* header */} -
    -

    {t("common.estimates")}

    -
    + + {/* current active estimate section */} {currentActiveEstimateId ? ( @@ -57,7 +60,7 @@ export const EstimateRoot: FC = observer((props) => {

    {t("project_settings.estimates.title")}

    -

    {t("project_settings.estimates.description")}

    +

    {t("project_settings.estimates.enable_description")}

    diff --git a/web/core/components/labels/project-setting-label-list.tsx b/web/core/components/labels/project-setting-label-list.tsx index 376361a2656..2df43aa97cc 100644 --- a/web/core/components/labels/project-setting-label-list.tsx +++ b/web/core/components/labels/project-setting-label-list.tsx @@ -77,7 +77,8 @@ export const ProjectSettingsLabelList: React.FC = observer(() => { onClose={() => setSelectDeleteLabel(null)} /> Date: Wed, 28 May 2025 22:26:30 +0530 Subject: [PATCH 45/45] fix: build --- web/app/(all)/profile/appearance/page.tsx | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/web/app/(all)/profile/appearance/page.tsx b/web/app/(all)/profile/appearance/page.tsx index db367e49a7c..ac5beec3764 100644 --- a/web/app/(all)/profile/appearance/page.tsx +++ b/web/app/(all)/profile/appearance/page.tsx @@ -11,7 +11,7 @@ import { setPromiseToast } from "@plane/ui"; // components import { LogoSpinner } from "@/components/common"; import { ThemeSwitch, PageHead, CustomThemeSelector } from "@/components/core"; -import { ProfileSettingContentHeader, ProfileSettingContentWrapper, StartOfWeekPreference } from "@/components/profile"; +import { ProfileSettingContentHeader, ProfileSettingContentWrapper } from "@/components/profile"; // helpers import { applyTheme, unsetCustomCssVariables } from "@/helpers/theme.helper"; // hooks @@ -75,7 +75,6 @@ const ProfileAppearancePage = observer(() => {
    {userProfile?.theme?.theme === "custom" && } - ) : (

    SVn+lW1p}FnUXE^S&WK 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