From 1c438e0c70abb8868ff008862ddf6087fb56ce92 Mon Sep 17 00:00:00 2001 From: Bagasbanuna02 Date: Fri, 24 Jan 2025 12:05:43 +0800 Subject: [PATCH 1/3] new feature deskripsi: - fitur tambah sponsor --- prisma/schema.prisma | 17 ++--- src/app/api/event/sponsor/[id]/route.ts | 65 ++++++++++--------- .../nominal_sponsor/{ => [id]}/layout.tsx | 0 .../nominal_sponsor/{ => [id]}/page.tsx | 0 src/app/lib/router_hipmi/router_event.ts | 3 + .../admin/event/_ui/ui_detail_peserta.tsx | 2 +- .../admin/event/_view/view_detail_peserta.tsx | 2 +- .../admin/event/_view/view_table_review.tsx | 2 +- src/app_modules/admin/event/child/riwayat.tsx | 2 +- .../fun/edit/fun_edit_status_reject_by_id.ts | 2 +- .../event/table_status/table_publish.tsx | 2 +- .../admin/event/table_status/table_reject.tsx | 2 +- src/app_modules/event/_lib/api_event.ts | 6 +- .../event/{model => _lib}/interface.ts | 17 ++++- src/app_modules/event/_ui/konfirmasi.tsx | 2 +- .../event/component/box_list_status.tsx | 2 +- .../component/card_view/card_kontributor.tsx | 2 +- .../component/card_view/card_riwayat.tsx | 2 +- .../event/component/detail/detail_data.tsx | 2 +- .../event/component/detail/detail_main.tsx | 2 +- .../event/component/detail/list_peserta.tsx | 2 +- src/app_modules/event/detail/draft/index.tsx | 2 +- .../event/detail/peserta/index.tsx | 2 +- .../event/detail/publish/index.tsx | 2 +- src/app_modules/event/detail/reject/index.tsx | 2 +- src/app_modules/event/detail/review/index.tsx | 2 +- .../detail/sponsor/nominal_sponsor/index.tsx | 40 ++++++++---- .../event/detail/tambah_sponsor/index.tsx | 15 ++++- src/app_modules/event/edit/index.tsx | 2 +- .../event/fun/create/fun_create.ts | 2 +- .../event/fun/create/fun_join_and_confirm.ts | 2 +- .../event/fun/create/fun_join_event.ts | 2 +- .../event/fun/edit/fun_edit_by_id.ts | 2 +- src/app_modules/event/main/beranda.tsx | 2 +- .../event/main/kontribusi/index.tsx | 2 +- src/app_modules/event/main/riwayat/index.tsx | 2 +- src/app_modules/event/main/riwayat/saya.tsx | 2 +- src/app_modules/event/main/riwayat/semua.tsx | 2 +- .../event/main/status_page/draft.tsx | 2 +- .../event/main/status_page/publish.tsx | 2 +- .../event/main/status_page/reject.tsx | 2 +- .../event/main/status_page/review.tsx | 2 +- 42 files changed, 138 insertions(+), 91 deletions(-) rename src/app/dev/event/detail/sponsor/nominal_sponsor/{ => [id]}/layout.tsx (100%) rename src/app/dev/event/detail/sponsor/nominal_sponsor/{ => [id]}/page.tsx (100%) rename src/app_modules/event/{model => _lib}/interface.ts (73%) diff --git a/prisma/schema.prisma b/prisma/schema.prisma index fd47634b..52a8f591 100644 --- a/prisma/schema.prisma +++ b/prisma/schema.prisma @@ -962,14 +962,15 @@ model MasterKategoriApp { // ======================= EVENT ======================= // model EventSponsor { - id String @id @default(cuid()) - isActive Boolean @default(true) - createdAt DateTime @default(now()) - updatedAt DateTime @updatedAt - name String - fileName String - fileExt String? - fileId String + id String @id @default(cuid()) + isActive Boolean @default(true) + createdAt DateTime @default(now()) + updatedAt DateTime @updatedAt + name String + isTransfer Boolean? @default(false) + fileName String + fileExt String? + fileId String Author User? @relation(fields: [auhtorId], references: [id]) auhtorId String? diff --git a/src/app/api/event/sponsor/[id]/route.ts b/src/app/api/event/sponsor/[id]/route.ts index 9d6266b6..663a55cf 100644 --- a/src/app/api/event/sponsor/[id]/route.ts +++ b/src/app/api/event/sponsor/[id]/route.ts @@ -1,4 +1,6 @@ import { prisma } from "@/app/lib"; +import { funGetUserIdByToken } from "@/app_modules/_global/fun/get"; +import { IEventSponsor } from "@/app_modules/event/_lib/interface"; import { NextResponse } from "next/server"; export async function POST( @@ -13,40 +15,39 @@ export async function POST( ); } - const { id } = context.params; + const userLoginId = await funGetUserIdByToken(); - const body = await request.json(); - console.log("body", body); - console.log("id", id); + if (!userLoginId) { + return NextResponse.json( + { success: false, message: "User not found" }, + { status: 401 } + ); + } - // const res = await prisma.eventSponsor.create({ + try { + let fixData; + const { id } = context.params; + const req: IEventSponsor = await request.json(); - // }) + fixData = await prisma.eventSponsor.create({ + data: { + eventId: id, + name: req.name as string, + fileName: req.fileName as string, + fileExt: req.fileExt as string, + fileId: req.fileId as string, + auhtorId: userLoginId, + }, + }); - return NextResponse.json({ - success: true, - message: "Success create sponsor", - }); - - // try { - // const { id } = context.params; - - // const body = await request.json(); - // console.log("body",body); - // console.log("id",id); - - // // const res = await prisma.eventSponsor.create({ - - // // }) - - // return NextResponse.json({ - // success: true, - // message: "Success create sponsor", - // }); - // } catch (error) { - // return NextResponse.json( - // { success: false, message: "Failed create sponsor" }, - // { status: 500 } - // ); - // } + return NextResponse.json({ + success: true, + message: "Success create sponsor", + }); + } catch (error) { + return NextResponse.json( + { success: false, message: "Failed create sponsor" }, + { status: 500 } + ); + } } diff --git a/src/app/dev/event/detail/sponsor/nominal_sponsor/layout.tsx b/src/app/dev/event/detail/sponsor/nominal_sponsor/[id]/layout.tsx similarity index 100% rename from src/app/dev/event/detail/sponsor/nominal_sponsor/layout.tsx rename to src/app/dev/event/detail/sponsor/nominal_sponsor/[id]/layout.tsx diff --git a/src/app/dev/event/detail/sponsor/nominal_sponsor/page.tsx b/src/app/dev/event/detail/sponsor/nominal_sponsor/[id]/page.tsx similarity index 100% rename from src/app/dev/event/detail/sponsor/nominal_sponsor/page.tsx rename to src/app/dev/event/detail/sponsor/nominal_sponsor/[id]/page.tsx diff --git a/src/app/lib/router_hipmi/router_event.ts b/src/app/lib/router_hipmi/router_event.ts index 1e04011a..c98a3b9e 100644 --- a/src/app/lib/router_hipmi/router_event.ts +++ b/src/app/lib/router_hipmi/router_event.ts @@ -43,4 +43,7 @@ export const RouterEvent = { `/dev/event/detail/sponsor/tambah_sponsor/${id}`, detail_sponsor: ({ id }: { id: string }) => `/dev/event/detail/detail_sponsor/${id}`, + + nominal_sponsor: ({ id }: { id: string }) => + `/dev/event/detail/sponsor/nominal_sponsor/${id}`, }; diff --git a/src/app_modules/admin/event/_ui/ui_detail_peserta.tsx b/src/app_modules/admin/event/_ui/ui_detail_peserta.tsx index a291c2f4..ec7a646e 100644 --- a/src/app_modules/admin/event/_ui/ui_detail_peserta.tsx +++ b/src/app_modules/admin/event/_ui/ui_detail_peserta.tsx @@ -3,7 +3,7 @@ import { Stack } from "@mantine/core"; import AdminGlobal_ComponentBackButton from "../../_admin_global/back_button"; import { AdminEvent_ViewDetailPeserta } from "../_view"; -import { MODEL_EVENT_PESERTA } from "@/app_modules/event/model/interface"; +import { MODEL_EVENT_PESERTA } from "@/app_modules/event/_lib/interface"; import { ComponentAdminGlobal_TitlePage } from "../../_admin_global/_component"; export function AdminEvent_UiDetailPeserta({ diff --git a/src/app_modules/admin/event/_view/view_detail_peserta.tsx b/src/app_modules/admin/event/_view/view_detail_peserta.tsx index 4121452d..9543bc03 100644 --- a/src/app_modules/admin/event/_view/view_detail_peserta.tsx +++ b/src/app_modules/admin/event/_view/view_detail_peserta.tsx @@ -1,6 +1,6 @@ "use client"; -import { MODEL_EVENT_PESERTA } from "@/app_modules/event/model/interface"; +import { MODEL_EVENT_PESERTA } from "@/app_modules/event/_lib/interface"; import { Badge, Button, diff --git a/src/app_modules/admin/event/_view/view_table_review.tsx b/src/app_modules/admin/event/_view/view_table_review.tsx index 2db0cb74..6d217545 100644 --- a/src/app_modules/admin/event/_view/view_table_review.tsx +++ b/src/app_modules/admin/event/_view/view_table_review.tsx @@ -8,7 +8,7 @@ import { ComponentGlobal_NotifikasiGagal, ComponentGlobal_NotifikasiPeringatan, } from "@/app_modules/_global/notif_global"; -import { MODEL_EVENT } from "@/app_modules/event/model/interface"; +import { MODEL_EVENT } from "@/app_modules/event/_lib/interface"; import { Affix, Box, diff --git a/src/app_modules/admin/event/child/riwayat.tsx b/src/app_modules/admin/event/child/riwayat.tsx index 1bee7757..d4128394 100644 --- a/src/app_modules/admin/event/child/riwayat.tsx +++ b/src/app_modules/admin/event/child/riwayat.tsx @@ -1,7 +1,7 @@ "use client"; import { RouterAdminEvent } from "@/app/lib/router_admin/router_admin_event"; -import { MODEL_EVENT } from "@/app_modules/event/model/interface"; +import { MODEL_EVENT } from "@/app_modules/event/_lib/interface"; import { Button, Center, diff --git a/src/app_modules/admin/event/fun/edit/fun_edit_status_reject_by_id.ts b/src/app_modules/admin/event/fun/edit/fun_edit_status_reject_by_id.ts index 28961c33..d8b30803 100644 --- a/src/app_modules/admin/event/fun/edit/fun_edit_status_reject_by_id.ts +++ b/src/app_modules/admin/event/fun/edit/fun_edit_status_reject_by_id.ts @@ -1,7 +1,7 @@ "use server"; import prisma from "@/app/lib/prisma"; -import { MODEL_EVENT } from "@/app_modules/event/model/interface"; +import { MODEL_EVENT } from "@/app_modules/event/_lib/interface"; import { revalidatePath } from "next/cache"; export async function AdminEvent_funEditCatatanById( diff --git a/src/app_modules/admin/event/table_status/table_publish.tsx b/src/app_modules/admin/event/table_status/table_publish.tsx index f19eef87..f020b234 100644 --- a/src/app_modules/admin/event/table_status/table_publish.tsx +++ b/src/app_modules/admin/event/table_status/table_publish.tsx @@ -1,7 +1,7 @@ "use client"; import { RouterAdminEvent } from "@/app/lib/router_admin/router_admin_event"; -import { MODEL_EVENT } from "@/app_modules/event/model/interface"; +import { MODEL_EVENT } from "@/app_modules/event/_lib/interface"; import { Box, Button, diff --git a/src/app_modules/admin/event/table_status/table_reject.tsx b/src/app_modules/admin/event/table_status/table_reject.tsx index 84b4f01f..304f9191 100644 --- a/src/app_modules/admin/event/table_status/table_reject.tsx +++ b/src/app_modules/admin/event/table_status/table_reject.tsx @@ -21,7 +21,7 @@ import { useRouter } from "next/navigation"; import { useDisclosure } from "@mantine/hooks"; import { ComponentGlobal_NotifikasiBerhasil } from "@/app_modules/_global/notif_global/notifikasi_berhasil"; import { ComponentGlobal_NotifikasiGagal } from "@/app_modules/_global/notif_global/notifikasi_gagal"; -import { MODEL_EVENT } from "@/app_modules/event/model/interface"; +import { MODEL_EVENT } from "@/app_modules/event/_lib/interface"; import { useState } from "react"; import ComponentAdminGlobal_HeaderTamplate from "../../_admin_global/header_tamplate"; import { adminEvent_funGetListReject } from "../fun"; diff --git a/src/app_modules/event/_lib/api_event.ts b/src/app_modules/event/_lib/api_event.ts index 2104589a..c84bc654 100644 --- a/src/app_modules/event/_lib/api_event.ts +++ b/src/app_modules/event/_lib/api_event.ts @@ -1,3 +1,5 @@ +import { IEventSponsor } from "./interface"; + export const apiGetEventDetailById = async ({ id }: { id: string }) => { const { token } = await fetch("/api/get-cookie").then((res) => res.json()); if (!token) return await token.json().catch(() => null); @@ -68,14 +70,14 @@ export const apiGetEventCreateSponsor = async ({ data, }: { id: string; - data: any; + data: IEventSponsor; }) => { const { token } = await fetch("/api/get-cookie").then((res) => res.json()); if (!token) return await token.json().catch(() => null); const response = await fetch(`/api/event/sponsor/${id}`, { method: "POST", - body: data, + body: JSON.stringify(data), headers: { "Content-Type": "application/json", Accept: "application/json", diff --git a/src/app_modules/event/model/interface.ts b/src/app_modules/event/_lib/interface.ts similarity index 73% rename from src/app_modules/event/model/interface.ts rename to src/app_modules/event/_lib/interface.ts index 27a0d3f9..e669391e 100644 --- a/src/app_modules/event/model/interface.ts +++ b/src/app_modules/event/_lib/interface.ts @@ -30,6 +30,21 @@ export interface MODEL_EVENT_PESERTA { userId: string; User: MODEL_USER; eventId: string; - isPresent: boolean + isPresent: boolean; Event: MODEL_EVENT; } + +export interface IEventSponsor { + id?: string; + isActive?: boolean; + createdAt?: Date; + updatedAt?: Date; + name?: string; + fileName?: string; + fileExt?: string; + fileId?: string; + eventId?: string; + Event?: MODEL_EVENT; + authorId?: string; + Author?: MODEL_USER; +} diff --git a/src/app_modules/event/_ui/konfirmasi.tsx b/src/app_modules/event/_ui/konfirmasi.tsx index 801e92e8..3c9baf10 100644 --- a/src/app_modules/event/_ui/konfirmasi.tsx +++ b/src/app_modules/event/_ui/konfirmasi.tsx @@ -18,7 +18,7 @@ import { useState } from "react"; import { event_funUpdateKehadiran } from "../fun"; import { Event_funJoinAndConfirmEvent } from "../fun/create/fun_join_and_confirm"; import { gs_event_hotMenu } from "../global_state"; -import { MODEL_EVENT } from "../model/interface"; +import { MODEL_EVENT } from "../_lib/interface"; import { Event_funJoinEvent } from "../fun/create/fun_join_event"; import "moment/locale/id"; import { apiGetEventDetailById } from "../_lib/api_event"; diff --git a/src/app_modules/event/component/box_list_status.tsx b/src/app_modules/event/component/box_list_status.tsx index d62ecc72..ccf1dd41 100644 --- a/src/app_modules/event/component/box_list_status.tsx +++ b/src/app_modules/event/component/box_list_status.tsx @@ -8,7 +8,7 @@ import { import { Card, Group, Stack, Text, Title } from "@mantine/core"; import { useRouter } from "next/navigation"; import { useState } from "react"; -import { MODEL_EVENT } from "../model/interface"; +import { MODEL_EVENT } from "../_lib/interface"; export default function ComponentEvent_BoxListStatus({ data, diff --git a/src/app_modules/event/component/card_view/card_kontributor.tsx b/src/app_modules/event/component/card_view/card_kontributor.tsx index 87616f3d..b7b5109c 100644 --- a/src/app_modules/event/component/card_view/card_kontributor.tsx +++ b/src/app_modules/event/component/card_view/card_kontributor.tsx @@ -14,7 +14,7 @@ import { } from "@mantine/core"; import { useRouter } from "next/navigation"; import { useState } from "react"; -import { MODEL_EVENT_PESERTA } from "../../model/interface"; +import { MODEL_EVENT_PESERTA } from "../../_lib/interface"; export function ComponentEvent_CardKontributor({ data, diff --git a/src/app_modules/event/component/card_view/card_riwayat.tsx b/src/app_modules/event/component/card_view/card_riwayat.tsx index ed29b4f1..29c2de2d 100644 --- a/src/app_modules/event/component/card_view/card_riwayat.tsx +++ b/src/app_modules/event/component/card_view/card_riwayat.tsx @@ -8,7 +8,7 @@ import { } from "@/app_modules/_global/component"; import { useRouter } from "next/navigation"; import { useState } from "react"; -import { MODEL_EVENT } from "../../model/interface"; +import { MODEL_EVENT } from "../../_lib/interface"; export function ComponentEvent_CardRiwayat({ data }: { data: MODEL_EVENT }) { const router = useRouter(); diff --git a/src/app_modules/event/component/detail/detail_data.tsx b/src/app_modules/event/component/detail/detail_data.tsx index 5adc68b7..cbc1c49a 100644 --- a/src/app_modules/event/component/detail/detail_data.tsx +++ b/src/app_modules/event/component/detail/detail_data.tsx @@ -2,7 +2,7 @@ import { ComponentGlobal_CardStyles } from "@/app_modules/_global/component"; import { Grid, Stack, Text, Title } from "@mantine/core"; -import { MODEL_EVENT } from "../../model/interface"; +import { MODEL_EVENT } from "../../_lib/interface"; import { MainColor } from "@/app_modules/_global/color"; import { Event_ComponentSkeletonDetailData } from "../skeleton/comp_skeleton_detail_data"; diff --git a/src/app_modules/event/component/detail/detail_main.tsx b/src/app_modules/event/component/detail/detail_main.tsx index f4ecad10..34244920 100644 --- a/src/app_modules/event/component/detail/detail_main.tsx +++ b/src/app_modules/event/component/detail/detail_main.tsx @@ -19,7 +19,7 @@ import "moment/locale/id"; import { useParams } from "next/navigation"; import { useState } from "react"; import { apiGetEventDetailById } from "../../_lib/api_event"; -import { MODEL_EVENT } from "../../model/interface"; +import { MODEL_EVENT } from "../../_lib/interface"; import { Event_ComponentSkeletonDetail } from "../skeleton/comp_skeleton_detail"; import Event_ComponentBoxDaftarPeserta from "./comp_box_daftar_peserta"; import Event_ComponentBoxDaftarSponsor from "./comp_box_sponsor"; diff --git a/src/app_modules/event/component/detail/list_peserta.tsx b/src/app_modules/event/component/detail/list_peserta.tsx index dcb30c03..b89db08e 100644 --- a/src/app_modules/event/component/detail/list_peserta.tsx +++ b/src/app_modules/event/component/detail/list_peserta.tsx @@ -21,7 +21,7 @@ import { ComponentGlobal_LoaderAvatar, } from "@/app_modules/_global/component"; import { useRouter } from "next/navigation"; -import { MODEL_EVENT_PESERTA } from "../../model/interface"; +import { MODEL_EVENT_PESERTA } from "../../_lib/interface"; import { Prisma } from "@prisma/client"; import { RouterProfile } from "@/app/lib/router_hipmi/router_katalog"; import ComponentGlobal_Loader from "@/app_modules/_global/component/loader"; diff --git a/src/app_modules/event/detail/draft/index.tsx b/src/app_modules/event/detail/draft/index.tsx index bdf8f4b5..e98b1f50 100644 --- a/src/app_modules/event/detail/draft/index.tsx +++ b/src/app_modules/event/detail/draft/index.tsx @@ -17,7 +17,7 @@ import { Event_ComponentSkeletonDetailData } from "../../component"; import ComponentEvent_DetailData from "../../component/detail/detail_data"; import { Event_funDeleteById } from "../../fun/delete/fun_delete"; import { Event_funEditStatusById } from "../../fun/edit/fun_edit_status_by_id"; -import { MODEL_EVENT } from "../../model/interface"; +import { MODEL_EVENT } from "../../_lib/interface"; import { AccentColor, MainColor } from "@/app_modules/_global/color"; import { clientLogger } from "@/util/clientLogger"; diff --git a/src/app_modules/event/detail/peserta/index.tsx b/src/app_modules/event/detail/peserta/index.tsx index a14fc534..c79e35bc 100644 --- a/src/app_modules/event/detail/peserta/index.tsx +++ b/src/app_modules/event/detail/peserta/index.tsx @@ -2,7 +2,7 @@ import { Stack, Loader, Center } from "@mantine/core"; import ComponentEvent_ListPeserta from "../../component/detail/list_peserta"; -import { MODEL_EVENT_PESERTA } from "../../model/interface"; +import { MODEL_EVENT_PESERTA } from "../../_lib/interface"; import { useParams } from "next/navigation"; import ComponentEvent_ListPesertaNew from "../../component/detail/list_peserta_new"; import { useShallowEffect } from "@mantine/hooks"; diff --git a/src/app_modules/event/detail/publish/index.tsx b/src/app_modules/event/detail/publish/index.tsx index 71df87a8..50856e35 100644 --- a/src/app_modules/event/detail/publish/index.tsx +++ b/src/app_modules/event/detail/publish/index.tsx @@ -2,7 +2,7 @@ import ComponentEvent_DetailData from "../../component/detail/detail_data"; import ComponentEvent_ListPeserta from "../../component/detail/list_peserta"; -import { MODEL_EVENT } from "../../model/interface"; +import { MODEL_EVENT } from "../../_lib/interface"; export default function Event_DetailPublish({ dataEvent, diff --git a/src/app_modules/event/detail/reject/index.tsx b/src/app_modules/event/detail/reject/index.tsx index 1df2f049..b2c7dfaa 100644 --- a/src/app_modules/event/detail/reject/index.tsx +++ b/src/app_modules/event/detail/reject/index.tsx @@ -12,7 +12,7 @@ import { useState } from "react"; import ComponentEvent_DetailData from "../../component/detail/detail_data"; import { Event_funDeleteById } from "../../fun/delete/fun_delete"; import { Event_funEditStatusById } from "../../fun/edit/fun_edit_status_by_id"; -import { MODEL_EVENT } from "../../model/interface"; +import { MODEL_EVENT } from "../../_lib/interface"; import { AccentColor, MainColor } from "@/app_modules/_global/color"; import { clientLogger } from "@/util/clientLogger"; diff --git a/src/app_modules/event/detail/review/index.tsx b/src/app_modules/event/detail/review/index.tsx index 8a927d81..a3526e03 100644 --- a/src/app_modules/event/detail/review/index.tsx +++ b/src/app_modules/event/detail/review/index.tsx @@ -12,7 +12,7 @@ import { useRouter } from "next/navigation"; import { useState } from "react"; import ComponentEvent_DetailData from "../../component/detail/detail_data"; import { Event_funEditStatusById } from "../../fun/edit/fun_edit_status_by_id"; -import { MODEL_EVENT } from "../../model/interface"; +import { MODEL_EVENT } from "../../_lib/interface"; import { IRealtimeData } from "@/app/lib/global_state"; import { WibuRealtime } from "wibu-pkg"; import { event_checkStatus } from "../../fun/get/fun_check_status_by_id"; diff --git a/src/app_modules/event/detail/sponsor/nominal_sponsor/index.tsx b/src/app_modules/event/detail/sponsor/nominal_sponsor/index.tsx index a8026b90..846ec486 100644 --- a/src/app_modules/event/detail/sponsor/nominal_sponsor/index.tsx +++ b/src/app_modules/event/detail/sponsor/nominal_sponsor/index.tsx @@ -1,9 +1,24 @@ -'use client'; -import { AccentColor, MainColor } from '@/app_modules/_global/color'; -import { Box, Button, Group, Paper, Stack, Text, TextInput, Title } from '@mantine/core'; -import { IconChevronRight, IconMoodSmile, IconMoodSmileBeam, IconMoodSmileDizzy, IconMoodXd } from '@tabler/icons-react'; -import { useRouter } from 'next/navigation'; -import React from 'react'; +"use client"; +import { AccentColor, MainColor } from "@/app_modules/_global/color"; +import { + Box, + Button, + Group, + Paper, + Stack, + Text, + TextInput, + Title, +} from "@mantine/core"; +import { + IconChevronRight, + IconMoodSmile, + IconMoodSmileBeam, + IconMoodSmileDizzy, + IconMoodXd, +} from "@tabler/icons-react"; +import { useParams, useRouter } from "next/navigation"; +import React from "react"; const listNominal = [ { @@ -28,7 +43,9 @@ const listNominal = [ }, ]; function Event_PilihNominalSponsor() { + const params = useParams<{ id: string }>(); const router = useRouter(); + return ( <> @@ -49,9 +66,7 @@ function Event_PilihNominalSponsor() { {e.icon} - - Rp.{e.jumlah} - + Rp.{e.jumlah} @@ -79,15 +94,16 @@ function Event_PilihNominalSponsor() { Minimal Donasi Rp. 10.000 - + diff --git a/src/app_modules/event/detail/tambah_sponsor/index.tsx b/src/app_modules/event/detail/tambah_sponsor/index.tsx index 1cb35624..0a19d8ff 100644 --- a/src/app_modules/event/detail/tambah_sponsor/index.tsx +++ b/src/app_modules/event/detail/tambah_sponsor/index.tsx @@ -32,6 +32,8 @@ import { ComponentGlobal_NotifikasiPeringatan, } from "@/app_modules/_global/notif_global"; import { DIRECTORY_ID } from "@/app/lib"; +import { IEventSponsor } from "../../_lib/interface"; +import { RouterEvent } from "@/app/lib/router_hipmi/router_event"; function Event_TambahSponsor() { const params = useParams<{ id: string }>(); @@ -62,9 +64,11 @@ function Event_TambahSponsor() { return; } - const data = { + const fileType = file.type.split("/").pop(); + const data: IEventSponsor = { name: name, fileName: file.name, + fileExt: fileType, fileId: uploadFile.data.id, }; @@ -73,9 +77,14 @@ function Event_TambahSponsor() { data: data, }); + console.log("res >>", created); + if (created) { - setIsLoading(false); + router.replace(RouterEvent.nominal_sponsor({ id: params.id })); ComponentGlobal_NotifikasiBerhasil(created.message); + } else { + setIsLoading(false); + ComponentGlobal_NotifikasiPeringatan(created.message); } } catch (error) { setIsLoading(false); @@ -168,7 +177,7 @@ function Event_TambahSponsor() { loaderPosition="center" radius={"xl"} onClick={() => { - // onCreated(); + onCreated(); }} bg={MainColor.yellow} color="yellow" diff --git a/src/app_modules/event/edit/index.tsx b/src/app_modules/event/edit/index.tsx index 86b13683..5d22eabc 100644 --- a/src/app_modules/event/edit/index.tsx +++ b/src/app_modules/event/edit/index.tsx @@ -22,7 +22,7 @@ import { AppRouterInstance } from "next/dist/shared/lib/app-router-context.share import { useRouter } from "next/navigation"; import { useState } from "react"; import { Event_funEditById } from "../fun/edit/fun_edit_by_id"; -import { MODEL_EVENT } from "../model/interface"; +import { MODEL_EVENT } from "../_lib/interface"; import ComponentEvent_ErrorMaximalInput from "../component/error_maksimal_input"; import { clientLogger } from "@/util/clientLogger"; diff --git a/src/app_modules/event/fun/create/fun_create.ts b/src/app_modules/event/fun/create/fun_create.ts index 647624e1..b6705c92 100644 --- a/src/app_modules/event/fun/create/fun_create.ts +++ b/src/app_modules/event/fun/create/fun_create.ts @@ -1,7 +1,7 @@ "use server"; import prisma from "@/app/lib/prisma"; -import { MODEL_EVENT } from "../../model/interface"; +import { MODEL_EVENT } from "../../_lib/interface"; import { revalidatePath } from "next/cache"; import _ from "lodash"; diff --git a/src/app_modules/event/fun/create/fun_join_and_confirm.ts b/src/app_modules/event/fun/create/fun_join_and_confirm.ts index 6cee969c..ce781040 100644 --- a/src/app_modules/event/fun/create/fun_join_and_confirm.ts +++ b/src/app_modules/event/fun/create/fun_join_and_confirm.ts @@ -1,7 +1,7 @@ "use server"; import prisma from "@/app/lib/prisma"; -import { MODEL_EVENT_PESERTA } from "../../model/interface"; +import { MODEL_EVENT_PESERTA } from "../../_lib/interface"; import { revalidatePath } from "next/cache"; export async function Event_funJoinAndConfirmEvent(data: MODEL_EVENT_PESERTA) { diff --git a/src/app_modules/event/fun/create/fun_join_event.ts b/src/app_modules/event/fun/create/fun_join_event.ts index 268d3d67..c3b4dd4c 100644 --- a/src/app_modules/event/fun/create/fun_join_event.ts +++ b/src/app_modules/event/fun/create/fun_join_event.ts @@ -1,7 +1,7 @@ "use server"; import prisma from "@/app/lib/prisma"; -import { MODEL_EVENT_PESERTA } from "../../model/interface"; +import { MODEL_EVENT_PESERTA } from "../../_lib/interface"; import { revalidatePath } from "next/cache"; export async function Event_funJoinEvent(data: MODEL_EVENT_PESERTA) { diff --git a/src/app_modules/event/fun/edit/fun_edit_by_id.ts b/src/app_modules/event/fun/edit/fun_edit_by_id.ts index 3781173f..e5693475 100644 --- a/src/app_modules/event/fun/edit/fun_edit_by_id.ts +++ b/src/app_modules/event/fun/edit/fun_edit_by_id.ts @@ -3,7 +3,7 @@ import prisma from "@/app/lib/prisma"; import _ from "lodash"; import { revalidatePath } from "next/cache"; -import { MODEL_EVENT } from "../../model/interface"; +import { MODEL_EVENT } from "../../_lib/interface"; export async function Event_funEditById(data: MODEL_EVENT) { const updt = await prisma.event.update({ diff --git a/src/app_modules/event/main/beranda.tsx b/src/app_modules/event/main/beranda.tsx index 33565488..c3fce622 100644 --- a/src/app_modules/event/main/beranda.tsx +++ b/src/app_modules/event/main/beranda.tsx @@ -22,7 +22,7 @@ import { ScrollOnly } from "next-scroll-loader"; import { useState } from "react"; import { ComponentEvent_CardBeranda } from "../component/card_view/card_beranda"; import { event_getListAllPublish } from "../fun/get/get_list_all_publish"; -import { MODEL_EVENT } from "../model/interface"; +import { MODEL_EVENT } from "../_lib/interface"; import { Event_ComponentSkeletonBeranda } from "../component"; import { API_RouteEvent } from "@/app/lib/api_user_router/route_api_event"; diff --git a/src/app_modules/event/main/kontribusi/index.tsx b/src/app_modules/event/main/kontribusi/index.tsx index 68439f77..e8b4a15e 100644 --- a/src/app_modules/event/main/kontribusi/index.tsx +++ b/src/app_modules/event/main/kontribusi/index.tsx @@ -11,7 +11,7 @@ import { ScrollOnly } from "next-scroll-loader"; import { useState } from "react"; import { ComponentEvent_CardKontributor } from "../../component/card_view/card_kontributor"; import { event_getListKontibusiByUserId } from "../../fun/get/get_list_kontribusi_by_user_id"; -import { MODEL_EVENT_PESERTA } from "../../model/interface"; +import { MODEL_EVENT_PESERTA } from "../../_lib/interface"; export default function Event_Kontribusi({ listKontribusi, diff --git a/src/app_modules/event/main/riwayat/index.tsx b/src/app_modules/event/main/riwayat/index.tsx index 57d249f6..0f674c70 100644 --- a/src/app_modules/event/main/riwayat/index.tsx +++ b/src/app_modules/event/main/riwayat/index.tsx @@ -8,7 +8,7 @@ import { } from "@/app_modules/_global/color/color_pallet"; import { useRouter } from "next/navigation"; import { useState } from "react"; -import { MODEL_EVENT } from "../../model/interface"; +import { MODEL_EVENT } from "../../_lib/interface"; import Event_RiwayatSaya from "./saya"; import Event_SemuaRiwayat from "./semua"; diff --git a/src/app_modules/event/main/riwayat/saya.tsx b/src/app_modules/event/main/riwayat/saya.tsx index bf83552c..4934517c 100644 --- a/src/app_modules/event/main/riwayat/saya.tsx +++ b/src/app_modules/event/main/riwayat/saya.tsx @@ -8,7 +8,7 @@ import { useRouter } from "next/navigation"; import { useState } from "react"; import { ComponentEvent_CardRiwayat } from "../../component/card_view/card_riwayat"; import { event_getListSemuaRiwayat } from "../../fun/get/riwayat/get_list_semua_riwayat"; -import { MODEL_EVENT } from "../../model/interface"; +import { MODEL_EVENT } from "../../_lib/interface"; import { event_getListRiwayatSaya } from "../../fun/get/riwayat/get_list_riwayat_saya"; export default function Event_RiwayatSaya({ diff --git a/src/app_modules/event/main/riwayat/semua.tsx b/src/app_modules/event/main/riwayat/semua.tsx index a44ad05c..9df811f4 100644 --- a/src/app_modules/event/main/riwayat/semua.tsx +++ b/src/app_modules/event/main/riwayat/semua.tsx @@ -9,7 +9,7 @@ import { useRouter } from "next/navigation"; import { useState } from "react"; import { ComponentEvent_CardRiwayat } from "../../component/card_view/card_riwayat"; import { event_getListSemuaRiwayat } from "../../fun/get/riwayat/get_list_semua_riwayat"; -import { MODEL_EVENT } from "../../model/interface"; +import { MODEL_EVENT } from "../../_lib/interface"; export default function Event_SemuaRiwayat({ listData, diff --git a/src/app_modules/event/main/status_page/draft.tsx b/src/app_modules/event/main/status_page/draft.tsx index 05f58d0a..f89a6c29 100644 --- a/src/app_modules/event/main/status_page/draft.tsx +++ b/src/app_modules/event/main/status_page/draft.tsx @@ -8,7 +8,7 @@ import { ScrollOnly } from "next-scroll-loader"; import { useState } from "react"; import ComponentEvent_BoxListStatus from "../../component/box_list_status"; import { event_getAllDraft } from "../../fun/get/status/get_all_draft"; -import { MODEL_EVENT } from "../../model/interface"; +import { MODEL_EVENT } from "../../_lib/interface"; export default function Event_StatusDraft({ listDraft, diff --git a/src/app_modules/event/main/status_page/publish.tsx b/src/app_modules/event/main/status_page/publish.tsx index c12bf6da..62b6b6e3 100644 --- a/src/app_modules/event/main/status_page/publish.tsx +++ b/src/app_modules/event/main/status_page/publish.tsx @@ -9,7 +9,7 @@ import { ScrollOnly } from "next-scroll-loader"; import { useState } from "react"; import ComponentEvent_BoxListStatus from "../../component/box_list_status"; import { event_getAllByStatusId } from "../../fun"; -import { MODEL_EVENT } from "../../model/interface"; +import { MODEL_EVENT } from "../../_lib/interface"; export default function Event_StatusPublish({ listPublish, diff --git a/src/app_modules/event/main/status_page/reject.tsx b/src/app_modules/event/main/status_page/reject.tsx index e9dca1d5..b45ea686 100644 --- a/src/app_modules/event/main/status_page/reject.tsx +++ b/src/app_modules/event/main/status_page/reject.tsx @@ -12,7 +12,7 @@ import { ScrollOnly } from "next-scroll-loader"; import { useState } from "react"; import ComponentEvent_BoxListStatus from "../../component/box_list_status"; import { event_getAllReject } from "../../fun/get/status/get_all_reject"; -import { MODEL_EVENT } from "../../model/interface"; +import { MODEL_EVENT } from "../../_lib/interface"; export default function Event_StatusReject({ listReject, diff --git a/src/app_modules/event/main/status_page/review.tsx b/src/app_modules/event/main/status_page/review.tsx index d2612807..ccd35b05 100644 --- a/src/app_modules/event/main/status_page/review.tsx +++ b/src/app_modules/event/main/status_page/review.tsx @@ -8,7 +8,7 @@ import { ScrollOnly } from "next-scroll-loader"; import { useState } from "react"; import ComponentEvent_BoxListStatus from "../../component/box_list_status"; import { event_getAllReview } from "../../fun/get/status/get_all_review"; -import { MODEL_EVENT } from "../../model/interface"; +import { MODEL_EVENT } from "../../_lib/interface"; export default function Event_StatusReview({ listReview, From ce1dfa1097ddba2eefaf4416a3286aa302b35156 Mon Sep 17 00:00:00 2001 From: Bagasbanuna02 Date: Tue, 28 Jan 2025 10:36:51 +0800 Subject: [PATCH 2/3] fix ( event ) deskripsi: - fix tampilan sponsor event --- bun.lockb | Bin 716700 -> 717480 bytes package.json | 1 + prisma/schema.prisma | 4 +- src/app/api/event/sponsor/[id]/route.ts | 55 ++- src/app/api/event/sponsor/list/[id]/route.ts | 79 +++ .../detail/detail_sponsor/[id]/layout.tsx | 8 +- .../event/detail/detail_sponsor/[id]/page.tsx | 6 +- .../_global/fun/generete_seeder.back.txt | 465 ++++++++++++++++++ src/app_modules/event/_lib/api_event.ts | 40 ++ src/app_modules/event/_lib/interface.ts | 1 + .../event/component/detail/list_sponsor.tsx | 142 ++++-- .../event/detail/detail_sponsor/index.tsx | 140 +++++- .../event/detail/detail_sponsor/layout.tsx | 101 +++- .../event/detail/sponsor/index.tsx | 93 +++- .../event/detail/sponsor/layout.tsx | 53 +- 15 files changed, 1085 insertions(+), 103 deletions(-) create mode 100644 src/app/api/event/sponsor/list/[id]/route.ts create mode 100644 src/app_modules/_global/fun/generete_seeder.back.txt diff --git a/bun.lockb b/bun.lockb index 8d2a8fec559e000218fcaad39579b9876212f6c0..1a72fede243440cea6ab2453a40b523377a979d8 100755 GIT binary patch delta 101417 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
szY^i+gHCRM^M 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 X8!&)^f^CiSPaU((I(4l4nTG!d{b@Jd delta 101094 zcmeFad7Rbb|NnnpXF4^fg;G;9(K1NUW~%8-O}lpMAS%LXI;~U9S`%uDQg%6VRSX7^ zC4`9HmJo#yqD3+kC84}i-j;s%$LqRg44-~}pU-#s<9ECDy1l2z^>|#*YkOYn>-9P> z@1;9i-@U!{ZS78N@W-zwesbY^mxRAPSo7kKwqLSmd4nH2 z8PN6q{EM3f>#tf~eBW`Wy&en%jtc~4PKp&5wjC9lGA)`vrU09VUI_&1p&Rg6@Wxl- z=htsn^4e-EuLQ|#=7S>xfd=41aAk8A=C#4@E?IGh^v){sm)8S!*|)Tw}|qi2D><>LyX`T5alfh*QpyBD!jlO{&td)wNNjTW>Wof92%4Z89z z2G!O{7UQNt>bTT*t(HADnlpj=K1H6gDV~_qVLbkOV7=u9(PA|xFqimd#NYd#ZSPz# z89u}D8N`R-75RPfzV+*6@zkW2C9^l!niYa|vFeC-RoXEh1p-aLKR&ej_YQNT6DF(F zjvw1xn}7|m+fKY%z5$e{UU&E$C~rRss>Sy>yxn5snR5xK`=)~`xWM7KczIGY?}E73 zuzg8O*YzK7w(e{Ims_iYD(uIXZ6y-6+CoNwC!!Amj|aCCuMzhFs7ikGndP5?YV`Pm zSV1<8dWv{eb}hQ>#^g*M8O!4Kibfp3Cp<-u}W zp>IKD_z9@7JY$&k+O%j+4nr?+BKFPD-}@>MI038!PXd44Zu8p<9uqi&n#3j*Oq-M) z7+)}XQhFc|xRQu=7|i)4p4aH|E^q9z#b zq@gh}uh5?wm+!UJeGOD~pKv%e9!`#AoeQ(xYFjX>AScilE@yo4qqQEHL&dmK(KRIY zGD#FaHkOmyc490LL9YX!x!?A5QG9-Kq~xXpfj}eFUmUjkw{>+Qs9aLfRmUVyuAMMy zWKqG`K%hEYee^4KDkXPvVQw^gLg0J2O4$KwJXK7KEsn>c`PoHVy<&K9z)z)~PKk^p9H3B;Y zJwLzq$WLwvQ5&Uy15T?>n^~OT`OO*)D#3*g`-7@ThQrh1d5xQu9GmC`TA=Q$;rRpo zBZoJEDt;xX8CIjF=MUg};VJNnMdoU_oHV4C=R1|fudtAnaYAg`6pa-d405m4>rKO3DmA@TXhJ%0cPirpGHSf{v;<(H#b3-`|5)l6k&@cGrz5G8M)%r>ncC#ne=n1p3>QvMOLC42*Frf&c>v!6({CEX2bB;E?Di#MKV z?XPis-buDkzXR2h$>?Co%qRhMVzfBcHhXe@>;lKTfhwp2s6Kg#0yQWKPqFramexfF z;p&TuMRl}`ALaUH5L`3AC#ZZLB_CDb=2MkFt8yU$`6@qFFga&REYKG&gT&UhMQz~n zZ3Bnnn2df!+SrUo$J3g&3_jmBKD=quE=i}`DR!v6jr_7e+EcoV4k<7e5S{qf*<&D3@!htIJiy8+2nz6YuYzBt$R z!1p*!e9L*R=Rx)K>MUE#lb{?`>TuQhmZw}`{SKEDe92jCN@-?XSdwg_S+uYcgK>v97#FkkPJL`2r zZMEAEv$?bY)&I|fni4M%uhJd>HEy18*mH#43|TpgVz^*leAbCQOD-Q_JL#6oY-dga zo0IB%P<_w^ROg;{h0VRW}X@j%+sifyq7e}W)uK5Z1-nduf7Skfjqir$kr1hW*dKJ_ldC1u_*EwAV0y{_B z^z+e`-*aQEo0frE_v|T?Y4BKII~+b3Yil+wI#JUqaN0PVpbXULjOFJ~&Tktlu1D9& zuPNvnHWkZDc1}UD(mi*nE%*&kEq;H3>j&ag(era`zh%IWjdwq}R`@3rRcUrS>*Qu7 zU&CZqI5vNB(U`FviVI_txSI;BZ)M9Z+Hdhr>{R|KxpuS|Q1z-<2S!bv=~$0zM9Ef(^nx4P1Du)!W==Cu9ox>F9f|^#bim2)sf-8QcM?X5&E> z@JESlaWBUkI^27W7dVypHyqv#GK6LpIz0JKx4b(ZHg=|;?D%i9to=r?L@s)QfN&nD z7L0V*9n>*7+2Kz!Eq~A9qo58^b3wV*+-+y%D98JNtPV5tuC{v8J$9^(de94;jeg35 zUP+(_fn5)HK0XF^hv$P`z^)*(X=WlQ*MEAyb?F?iJ-pqcHvVFGJNT&%e=GC+`^67I zd2*@45>TGI$YHxOTrAgBM-Xnm&w65|!`nf5B*$TYhs_=S=UyAX5tOHvgYwAD4#zp{ z56VL)IrKnz=8F0ZhXlW{3^Ou=O;leO80@9 zru$#Edd2Fy1FnkXP8idcqjTlSzv9GSaR>0XlYjilQ&ZD6ykggiE##q@H{&&1=?S`f zm^?bLfHGD28$rbv#J$rRm7M;DO;s41n5#u2f850U=xCPHtE|<;3Dkp_ZMaM>9>fA7 z{JU%JAzm(S$|%)}=FPD4cgI^+e-G5k_S9PI0X+qq76`=6X(=V|ud{V{85=EPPlEE! z1E3bI0=vQoE_=uF3qZ9b7Hd0tTz)~}K*w|5b@qkP!Xh5qTn3jnN5yirLj-C&y97|H z>Zn*jVgBT4@%F7#yHse4C{y0ae&6Expudexo-`?zT^MNpfi3$aP<6W?etqkfy?#K8?D+8l&{)>IwZ6v7x`sM zPM(?(m^_jdk*i6(cbi5fqd&2GOJOX(AeK)nnL27+&CNEKfXj9F$2PaW_uR3>%S%&v zq^R^)Y;_}IVs4H~X$03~_>lDSdd2g~NuT*`Etwf3paQ#Wvj%0LmhKxsRX_H*-D9T1 zH8kpNcP<^*cHE@VlLNIWKpBtps~-r|_`*7C8wJXlYe6~hIZ)0#rQGsm@UU)ovt35f z?Ce->VL{-yFRj5jc-Jow{|WOiwMT>eSTwtk8}A3PlYSSd25`Tw^Jt*rs8eyoxo?L% z@fWo9Pd_}X&W+;inL8;*d(Th|R8#k4qVmB+|F3P!-Urp)AM&6=1yO-fIl93wj%7zF zaL+fk3qJ={p$|d7<)B(Vc~Xq$(XqfpZu7I-j-FI82~V5O-lJJpi-2%1E!6_|0jPy- z1*kLrU7)u4>p=D8Mc>&jcnQ>@IAyOLVPipc#p5o%#`o6czd60)(M>nv)sTMQvG-_t zd`W3K;9N!l!kRzYj56Vh?@uk1;1J7-TDBKdL0>w29aKxh`)vi6fU0=KBc9`avK6d& z6jHGu=C&=d&p;~r@D>tk(0%=Ho6*&94Vqj~1s~jJ`Kdo!yZWH!+Sll+Xpe(-%b4(s z-GjP;?a}Ljt-)^(*_HkcPm zXN{omr;1f(bOC4n!u;sUM4Qp$pbF4)lhNaHV#7(N5%zP~X1D`Xe{2NR?25 z8dvcqqGFY?Z$(asj;WZuZlHa71SN#<)9om5LCZ^*Uv6SZ}SvZ4!gf$&>x74K+Tl>6fC^5k*#|u>3UtSbmNz}g z)~c?<5_H8EfYhR7=2!wMhze+61|C1z7Q{fwkMY(cJAa!0?ykUPe3`>T&26)@PO<*) z1Ii7I{A`|^j`^{L&9@*ohexMus`*-p1AzlAZ3DjrYtf_s<=x>IM96;~iiOmT z=aQMvID-q?+i}$wR6(6VWmwV9F|oq7xs&q?3+*{C@WbiWkFm))e!G{FkNmtW&Fc4n z%4b||Tkh@HsoY*wu{Y&L3&*yd5I-mVw34-Mo60S+d2i@s>-A?PoKgQw*(@*VP@p53?q;Y<8 zCUmjQ`8mV(L&Z8(F`g^dCoP0JGmMHyJ2yIia5pPGOCHhw@u3ouOQS1BhQpi^D+|O zv`q@c%gH#ilBE_z!UeESw$Qne@WU`U21_#E4C`DG=N)T?)%1FX&wZ;Rv*^@Fcmb@J zO)x7G-U#b!S#HEjF~e$kJ-r;W2navDwlXukvJ0kkUR;%Ewa)fh$V6|Wx-eC#TD%Oe z)O|Y;I0qK=Sq@Ak)QFc|6$w8DQ(s}Zj67k=vwFOobgkYA`1kW(yc|!*VDcuu{VftM zbIgmE!*-ksSYq3RlYdlO)@EU zY40+`?vz+dsYBnw+Qqj`$_yvJ7YK~@Yf?_xOJQB(rE@aFUlJOMPMv5=*Y_)Xc}GTK zCDAZ>0;WEqVY!j;zhN4BB%^Qpeqh~$v&du~Oam(DJLFB6oaM)Pwal>kbWR_$2ngN2 zfpqZ^`I*5_Hkif@ydGW~GpqrvX#G(jFp@-!UNXEHHV}qKD0-t~eq5;A$ALgvyh(9p zcp@Q3>hW=oRSBfJ;2zppB%jvH-7tHo2NN4%+KQ9}w_h1ka?Wc2+GQ+MLy zyhynFCzeq(9Y5VMT20ry1hef_*1y8k8`V|iP~=mXS{5!)2;KVTNtpFU>aL7LNN1vK zE1PVpWRoMI5ipy57y0(2-W<&B3XDa z!3=B|u#ZGS*T4qaqLyy==LhAF{DQ^WiaQ8iW`ljo=~+L!;Jk7(yg8j+=gUCgLh`}^ zb0gk(v$;9#S@xxAoJ!;$L~4BCIhLG^uPVJgHxilzyTXjP-|JS5&~U$ji90ISbbNaQ zOslKkjloZL#23%*;WaQRCozDscG_kJYP7= zn+RrE_0&Cqz_~V9Oz=!U7<_$?+0s&OLXw+k%=AdO|95u6urg1Igl>SPTk{{kGh13= zp0n3Zo*MD;dn3V5_L||RqPG0rE)T4Us5g9Xwn*KKsN6T zN3DWsnWp0O&9AVFY-SXc^;^I{s0B@VD|&i1RHh6@YG3pBiW+J&x%E#rhl3WZE0)xr zC8EwBl`W%&yK~?Y217M`xMG@cItiT(>lxp6eP+Uz!vV83!|NUz z9`FJK;-&L5gJl6TybDu$2TCM9A}`ZB-fZr|@_VjH>B@@wi01|R#hc`2hQB9dd%x_} z2wUc6qQf(Tp1+O<;;C0ff~$gNcqZll8&#DHnrH(r61qLX3k)%(4OxP}A=r-?yf!tW z?X??a#B90bcY8G{;#jC5EE!`=xQ=%8h z_uWxOZ#)FE-6!@d?0n+bdB}8Z*z-?P32_Eb@VT&Q+>_>?#P5u<;@fs~t43f@e8iQR z;g<-V=O@!>sZ-1IwTR$-FuT)lg=t*i#78p{kFkYg_*h0Y2!}XM zF!PTw!_V+~1lJv77K7nx$6D`&{5obh7LJ!sjD(9|%FmArt~=H&?n{bO>Ux1oQSC}_ z4NTtfSKjc4FgJ%8waN8t-YjJ?yaCJb(=on7vtj+?O{Qmt-zKEFh?i*lF~?Q3FO}Aw z;}~aB=f{r0RQq;~o%SIBFKalA=E zWehy{aoE_hoQ4Yhy zTO#36Fn_x0*cM#e*epJWDX|;%vUutGZpp`cfkGJv{(22CY3F(^y<^OIH^ta)bw* z=(*Dq_qw4ttdDzV@MasLvfE)@#7z1545j22Hj<&l&Gn_Qiz+jG8fHg3*$2OGVTNBs6`nrDEtLKe z>eV)zFJigv-_rWPj=7nz4)GC;gQp3paJ$d_46`#(RcY7C^KV|LFrzwj8#LX&$yw9N zEFMZx@19yw9W8Vxp62o8Kxn^O?~xXhS$z4zLYi`Mpcu2@3T3jj9^H1JlzXiZkmi>NZw9xgbn^c@Ddvw zoaS*h^$ki1X4&BP1kbj?%nlw0Qs3Y@f`j~E_Ivbc_QFh>AW)Tp+ zE8RMS^HOdkxFOv%9*Ip|Gi)R_XPQMoXijJLb5ok{bxX{!^T{4IyzypOHhDbLm4;Fd zPSbF#o=LNO8a;y{aS7BuRxyOsDU738k#IR|ILsey;S0J|?p6$wGMG+(i~)9#y?-*+ z@4nsLEY>C;x(0TUf78E-kUu_jV-h~SN9AgDT_jWtV>ry#;CH1VFe3LV( zK|1&c1w$yy7XMWw9O`AAeT?tyv9L4z#q}{lnuXl@@6AYr^n@JaPtY@aSDho*!u)l| zKa;J7xdF%8@)Hd2uvWM4Q!&UmfrQ4uF7$VTRfNv>E29OX&Kc-pCbb@O1?K#ON0-55 zX`e+Lh7A+52g9L#U2T0Dnh#|dX49vH)L3WNzMmJk_)mHrbi|+ZtG~u}?f;jwH$t=j zH2xl{ap7|AJ>W0&4rrD7?S)n;x9`Be#Fj#J=5kr>|7+}-gX|AZTp*pr8ul{0v&`Z=R)+(q zRf;?B?7uYRVQ7_R2G045@g>kdTOE2DdbZg{WfIS=*pGCU>jV4KEV$@gv!#GNr{;O8 z`?dm(zWoTELDiT|oIHMj4X})}U*{}4Hi=_oZGv5-o4HWC^BFze*Lhz+gx zbRFr7qk(jsOv%%2P<^<&26g?3f3mf0|^??Elb!Q~g4#Z#&L z*Qnj&BRKn?G^BF>;+|~`OlMQ_GwcFwHl{I_JQ*Vg1dv z0r>6WijsBe&4Ov>C79G7*iIGa-)*cR)DGPpAtSM zqz2UVA3fB+#4ZZe{r##RER#3}FwY3WGoiMAW!FW*&$>uXaolkH0Mk89C?5SO5^8g) zpZ%;%mgdbfSh}|$bTiv#ut_x>!HBZKD+ylcZ|!eh<^`^(Y{My+bIPh@vtjliq0Zj| zv*(mDw*4Mg*fo*1!)C)=9F`x${O#QL%Zbs7B}%zWg7vK|;c1wB<9jglBkZDhlMgbz z{$|lNRDS+Q|2~ov$Rd;6+XPVM$nU1d#^lt=Av;}+MZ_uuOsh!7Gx`X_$fyq_O%&i%T5H+%f zzlC%fXW!ntO*IC!=Qzp?zYH6RsXzL|&BxniiDAhOF%+h3I2&-Fxf7;Va&&=hhUp;0 zv4~Uqu@meJ#{JB+o-jL9!dDU0CPSjRk%TQ1y!h71-9yPal>_K9f*F1fgdZlTaa_xP z2hd=mEr5!xi-ZQlXf_>qvqD%=DVDRhU^>3|R^d96D#wJTEKF6jV`46>kJ+}EiA_jr zFTxx?migrDQ0DcS==j*2<$(#3-N)kUqR?>vO3lucrU};-2P9cNw=bk z(}Grqw_tJr_k{~1;Sp0RvQ4G%TVZw-GinlEpW?+YdAmoosnp0{ZnFv5qlM<}lQ6l* zGttj+9ZXZIn!S}hvDoe&G=t|#*)ZSf{@wNyFbxkIw-=^iz(Jhab)051_2-c{!7RFy zseC`8mS)~QvDke8t6W*U=4P0|WaO1LPgi`IqZBbY!qGKlAf}!D2rco_U>J=W!d|*>$cLm_m(g=RO6~%`yzX zjGgBNCi#q;q0lF=8UE^i+4YspW}=nC+}Py-=|)&KX=?hpXWU>17|Rgjx)A2-^9R9s zwrbbi=moB`!Ok~P85=z7=1TQLf>%2A7HVXJFA^MXgAH!=0<&%KWrEfqVZd#k*?NN4 zJ$UbJX3ITZkA&v)J#*JdUXN&yl*344Y@VY_{Ue}8%o>9I?BF@&9?gGMdijH1;9oYQiA%h|J!V@O#XsbS^d{*M zf_K~aeh+(rJ8W<>!P`ygQ`a(FMVUPns={;h@B)D*Zp@&)^O}*yLmiT28#5&#RT8c28G&e=))F zru1G6pQ-GJNq+`65wu+r>h)}8a4A7M^1{cguv3xUc`3h9fK9|fmUVp2F0`E6cnC8M zHqtt0E5R#lF!OmmRPtT6$PbSAiG7BUW@o^ZP35?-QoUVzCtLcx1YHE1NlMZS3<=qB zdHhvZfGcR0FZWsoZ+*dRS z%lh`Cf3c36(uZ))OKNcG-8ST^Uh`#|=T|-9yqCTB@w2*z79;iY-Dx&I%PN`mid|UP zawqa&1J;*fID>Ow+XA!a04-v5U#-ge!?a&TsWHZEYI-8eZ6glf_Ee?$^|dX3q#ikzFg$=S+mTg3#w;?Lj% z1Z^*Q31;)Z*o6AO#f`6BG7{EuH|Ph$mlD(=i^{OctcKZVBWwfVTI;MYJ%5Asx|?Ay z)6U7LZTt$WXYPX8>MQ*wn08in^}*NPHuQUsP@{J^S;n`$ zlNlaQs27Pins6X^6sC?R3pVFnFn`DQ-yk=Cw<4}=Sw=NTuXyRfZVLD>1j0WO((vMZ zpqFs#t)J~4ISS?uKnwgR)srG$@`*d^agaXlJsNGcwZxr$37+mhn=Vwyx7XR?L71(S zegyOx%(hwnX!ySEKwJHZj!_OTVjg+lYXOOPl2J3nMh#DRVQw=$`({s1O)JKd{oOfnO);q?-PtrFRI~^LCU|O1)3?!c66drV->-yMiAO9ArkUX9fJ!-5jgZp_^dst;t&i zd4aA<9kG8VckuWPx$G`<_**>dwa#eD`Rdgg4vlCog7K{bUUwf=5`O) z`=VmO)}74RFx85o!Ed2llwF**z%*(Y>D)}6US6?q>4|0z%*`*R^g}R>ciXhj9Ai$b zi-b@3va&dqzo9VQC)#E&ugXIIhV?Kb=CK2Pg*)QgW@Uya5VH1KJfDE6R1VCPx(lY^ zz+EQus__onSe{VO5QtmidHA^!Hq^gAth>`bxaQ#wuWbgvblXiunM60h?8=O1!*9Z@ zUzph8>R(swyDZ1-)-@kyy{zTobC{h2Vkdu7b?LYa=1*@E9l%(DsrtOWVs!ig(=EDn z;aR)vgbtdrPq2ikF51j|qH5v;T3vIu^*nbvtR}r+D!}fB#jpux+j0i+R|MUD(Cu3< z5XHvtflw)o8R6fq5M;h8IB1XFBaG0gfRMe13GXJT$E>#N#(c*Nsbm{qdTCeFr1Cx^ zaj%^Pc=<)2$UVG7szy_Y(p{S^J>`2c(fh{mWrUm)`RT#ku=B98&iD@Y=TvF=LzRO0 zMdGk882A4|l=u9Xzh08rjOblpQp$?0;@`=heV}sSG2L%=jG8Qq1lJ!hi+8fW^!nK@ z3A|~Z7YW|_vuXS_>Sw6dx0)-L9po%aX`Ff5^APzLvjv;bFTeOF`LF5ZY5(C7mA&uy zk>F%M7{2^h4$~y7VaoK9Wj%Cu1I5$((F^+Bl;}TXg=iUPjNKjKsX)qi{1W3H z&kX+#SN=|<4m})d>4dak&>x(BCxj=%)Lm@7#BG6TzWa+%s8d3aw}lLqgxLwf_|}5% z;a5>q3~NPkBy=KQq4YMT=diV96YNC z+6(Jzwtd4I!j~;PT;rZEd@Vt>gawKRLniAEWt`yD;TFSkA4!SH*7nVI1jA=`;%)O?X+_B6E~rixG)ZLGz&Ft#tW z*pG(UIJJKvOoj0YWP1K83mK$j?owjK33OkImGd$hDrH_nR5|e*o-qxeqoNjLNMC~Ppn@VoI@~b z)vpQic38Ik8dL@!B*=?msa{f0FNzhsl;AKMTtV<+KNxP#=QeV*ec5msOlvIu_y8#L-ydUKcO*hxy($snh8onD*&f@l+l?y$#be_UBf(0pI0l1l8804khxr zj{D*1jRf6|<{n=i@f~AiRO6sO&pEyA=I2E)J!C)5pKbeL)^F;zE_}eF6``K*(-|;z zl>aO3@VhYE7g`KEoM5}lHe?>Ga(fAGI$^=$V2^N06Wcm_=XwFmjsYE#=D;-kZ1R^J zW1K&mkqB|qnEgJTkAdtM*0FpV%#SnCJ8%)qI$F~siO+-1@gLP^6Ovo)xG#mN1M2t# za~Dk83A@%i)#FHz!RX*(nQ!V}5fba}hJDVlz@d{_jGsN3?B?Qxw#R)o%0{EIp4)bqa zwX4>krVk?O1jzwwB0ph+sq<=?vWrQ;=Sah0On!=e1Eyt^yBi9s$rna)Bb8vf_kpQO zVN;gCu^-mKl+L8Rgj6|>!t{~X$~v1xa6P{)geeVUE2Q@W3`2&qQA-O-yo>0*A}Pd&}W`9m}clOvc|QpW zFRCu0AO;?*_p2~fj?Sf_)%lu=hm?yl!-EN_kVN|fnt4!e-u0;tq4s`q{apSKOv4_J zrr=RNwo+e`HNU;M0%q&Uun#>4;GgM1X`))kyJ z80JL@l+TJW=r;|@QWB_h+7Xip21U}~K`Fg*%W*ZKFs;m=?Z znB65V;iEMBkc)Rap(U_^e*N|mQU}|Wwnz8ML52^mhV@nMCK{n+7iV+-1E#Hxmv-+H z*Ta^~AS7J@%;m{a3Q^zNsQNu^0d`(y!P1ChXJzDF1Jf@CtNV{*!_Pz28hph)%I=3&%=yB;3fXT{JqJa+_H{8nZM1SE}^n}k3VJi0e_w;JvrE@gizok{%Y{I zg+G~n&Y!NTsBFvm3-R|gf6D$F{&WeIZV!LTelLHzgtFf+!X;Eb2l$iSK|US!Gdcv( zC9K0=NV)$FB~^F2P#J|C7b?SAp#0Fl#W!-;803F}>hfhe2IOz{ZskvRUd9 zJ`Q^3_fvw+#wnj?U3#H{EBHs{{R>pRSA+7$8=&lYCE@dT9OvP=uYcr_$H6}5NvnSe zJu|%}?of5NLzNv*4}G(*LFqg+^K~9u`N&fwA9>Q_d=O0ykg0stWc0vUU92csOrUdKT1XEpvkEZkrH)gJMa#d9RSD_29 zcJV?5XE-iYJ!gX|XD%rFc`jZk{YJ;DqU>&xV`OlvOL&_z6iSaf{!gfk?r?U(Ch+Bs z3pI#e041$*_>u_MOLB}2{E419yLGTps)Sda{cE7=vj$XoZz{c+j+tpNGMId7P3VWt z_G3`vf2(Z%hMpNQ(k)x%&ipG-S%2-!g(~737r)!Zf9K+bnlC?sYT6;E3#I?&xKP1A z_(#i30);5PMgl&UP#Zz@tPiRJ4fW68Pz5w~dR5d{G*D$=J*gcScAL>vfvpa=IlHQ;fOSZ@Q1N>!`h72gGW@|A3KiVXKRPo03M&40PznEVco@_rlrHzFg4H$3|AvaMfv$YQ zE>G+XQ zO+C%U3zbi6aWk<)u%)@FLol&KWpr?H9i6REdKbr!go^J;yiCq;H~>@`13}eou;XVs zJPXuS1u-+FK2OGG@3>$y|A=^@ODmMwMb7ME$A>vS98|kUIK0B? zQBdi!LH-vQqkkN#&SM=HD*XgddQLT_oVLm-&fxzfszSx&%WJN{d{Ar3LRZe8Xs7&N zB2>e>oMBazeh<28elMs3%A8$QRQ&zu$AC|{_^PP*a z;{ORb<)(80$w_DE$^12!=13@StaI@~)!`jbWxwn6swjQEvwPpg3zcpIsQ3?^4qCTX z5q!gsU4l=XVO7+^x7F!KLKW~C@vz5d++jhDHRk0EJZ%(g@vOnzf z|7G<3|G$}$DiTz4|AumTHKz;J;t(jkhT|oP&Oj)Gu)~@TYk^8o2h>#+Wq%C1#z+#V ziX?+FZK8i1%C4!4Pj$MGbR~gS1dhcZ0xGVX{`niq%e~N5fd1QGx~ifI=<9T$><5CX z_+W?ne^t^YlzxuS%^#D3)%`&ruKcq=<#)axZ&CIa!Zp!`gW{JuybNpr&j)q=FQ6TS zRTHWL1+IW1mvL3BOZ*&kHS~ICccbICIzAuNRTU-O>GVI5^3|e+F5zNlAe2W+9T%#= zGEnvpIK3(={$Zyd36<^<;?=-M!4tqYI}uPp>p&U2;|$&fbqSSVz2iQb(%fL9-im(D z$^T1ensjAzQ|TYNY=kQ9Bgc<~s^v!FwI^){WxB)RZcypJ1(ok!MLLxJz0>zOyZs?% zf&BI}g77~sflvkg=6F?9#)q9Ql%2=$Q~^N^)4!q4(KVeelwB>yYuO241y$f!XHeG} z2zCBD9&7>ja(Y!%1^PH$s0#LT{79$@^mlfH&T@wOe>_vfV8?|zrd{B;Pz4QfTqygC z92at@+>IVZ4Ge{<9+xyijZSXQ1>ioL&`Ga5=gvv;!313CeVj{&A@1 zLVsvRsb%tx9st$`mGD?ln_W{-4m`w*x8wgis0#HVA7wR&e^k-4T)uzD5(!Fhwlh4>86F8`mqolEX%p%UBoIb@4)F^f;&rJO!$NXF%CKD>T1P4G!=hL%#x*`Dz#a zn#0$fzQ*BOPG9Tz+m62@G&dJB)wQ&K>f}wJE}=@_>h#Z?E|k9A>0b!Vh(1hp$zMA& zp(_0iDE(Wf3-ylVpyNVqo}LD$L!}GC)mt?{wKD9mmb0shvag+pnP(cj4de1D>d z9xkFPO7DrTcJ_7gLbbO)sQ3Y(7KF1MUf}c#K~;1Fs0xh(gQoOK_iVTTs`gHi3>Jeb zX1e1gpt7Ioa2BZg&H-h21E};jyZBq29tTzI-A*qBbyY$8((xXb-~nfFBve65U3^v4 z#`KKSkA$k&b1wf?&Q7QXypm{lTmrU*uR4Q&LV02}c5?Jvpggt?R0ZF2`p1rM26YK# zw-r?S&p?fcuPR)-!x;*d(QZ%)_JB(8or|xEvfJnEegf5^gU(KUd~ zB^3do3=cc>I}R>Xf&_J>Llv9|R|RW=;>S8{0BVXh1=TgDg1U}`<>qC3!Q!!sNsH})9-is5^+;Hh#$)+`)6JB zb1wP?hyQZ;ii=ZgRL4R69Qd<(DsNGNKjO;Uac| zx`aBb{sJna-$2=Ej*2IMszBJ`v7jnY50qUJD7$1A-_*r72XzS*e^M=GlxlP`g0O`% zZ0QVz(pxz^)#*YN*xKAvuE6pCdr0|eQIRW1s1{5CRnse-E|iC6x%g|GUKN$kY!^Sr#S68@-3%)J zR;LTqy|bK7cI)hD7a^2G#yT!k!f}rO6KX!>VW$R7ad?$W zR~422badrAqc%S?RiMNf3YEcZ$E%`hJlDnF1S;LlpfbD_RQ&Cro}Sz<-Atbwyxf1u z@G?}79@a|+-v@OG72L`{%I-6V+Z=wbNUo}=X}HVjRZ;nV>(cFU@t|D^C1{@RcM(-l z1^?vqs;GA_HCY7It~y!_9Lmv2aHVVLbfHFgW5@qQw-TN}gxylJOW!cZ^LVlWeJr6SV@M9QM zi_$0;{eJ_Mb)L(=3fiCiOd&$`o9eI_RE4eu<*K=$ntDB`OQ=B-2i5L7UHn2&_IHCC z3lD&@TLvosCqP|)B7LWbCtXBUR7TG@T`0R}K~>~Ar&mSAKaZ{oz3AeF1K=J5L+KJg zRjj7twM#T&xN08(m0=yH3zczQ$B%^a*zv?`ptl6ofY#1lsQlVEUV$wXP()i$3tmTO zAe7!oXx85tY?Pt~WH`BtGZXUkh-fcpn%uP?--> zX5e6#Tqu4fs777vbfN5rIesKmy5TOqDk|Nj#{^9FMZpyR8BPo%8IN|xLamPzoSx%w zqKmJJN;e5zndUmXJZE<#RM!`~c+f6fRRq5x)0{z7R6$pwYY0qt@l{d!Oc#GGDErx< zygSd?|5rSdSZAONZghr1WpERymfhm?s;KT*?CkCmnzL^SM*O41gU-AvD!V047s|np zIxf_L`?TXiH+}q1CiJ<4E}_!>!)FsCeFx>pnoFpHCyH=YMGf@=U;Urq(a$FS`7?^6 zpH0|7b@a1|qn}OK<@e}k6aI`i`q{+M&nAw3Ho@Z~PEgN(#BE;pHBYiHR zcAKbtuE*~HP$CNw+#`Wc0$%+b##?EP_+rvzFz zj(#?w&nNW6;OJ))IHBry6#n=)`q{+)(a$E1el~IR zvk9F`kA60R6S#Wly|Y8z_w|J9m~!;9330dIQrRy9Sr&zqgKeHpG_S7Y=U7>ps!wZPj>XPiKCxQFbrDpJ4)>tM?agu z30y}%o6rwyxsHA|q0c9@a~}O{qRQtI{@8#Y{cOVb#L>?tbe1^!*@T|mRQ+5+gF{^U z{|`Q!=%-$+`niPaFRuFkw?CVBe)BEC2j4YqFHJbpti2?mj+sNq8)7zGnsBixz7!#S z1j5B;)(C`FBM^2<7-rHgL)au?!DR@Sm~sj8E<@;dIl>4t|8j(k%MlJpxZL!<0%4bg zC08Is%{~bWuRs_QMaVW~QG|g}gwRNYn8_N6a7e-m31f_xjj(hiLM$6$oLMemXf{I9 zD1-?nItn3i6v7$_6HUDs!b%B6F@(uxwS=)TgchR_@=V@ngyhi(8zmH&)G-KaCCnLv zP-HepC?125J{DoBnKc%n)mVg`5~i87aR{3vEEtDyl_{4nZyZ9u@d(q+{P74G;}H%> zC^5Y!AncN`WCFr0vrodp2?#@S5Uw?4IS2!D5JD3X=9sLB2!|xBkTBPHlMt3pM2Jm7 zxZW(6Fmw_^(qx1iO>{Cs;$(z15^gs2auHTaD9S~+)vT5RQ+mxqv?hp>m{|n~tqKr!N?2sl3K2F*SWt*?mnoMpuMnYM5kje% zUxbiRgm6H@y{7jRgk2JrOhG6!`y?!!f-qz%!UO#OX(J4riV!MBSYon@5e`XMA>m=; zO+#2(j1ZfK@Q7J1Vdyl3q$?2~Gtny%60by9BVn1TcNM})2}M^SJZV--7<&~$i>ncq zo4l(LlCMVCDB&6YZ_yCeN|-YpVTIWsp?Eq%`V55U&8!&+t!5zXl<>7lD*C2$h zMOb69u0=Q`VTFXZj5ix$>9q*4*$C^*atT9cBP7j1c*jKNASBK~SR-M*sdpX1N(n{R zA-r!^OBj0{LW{Ww8%*9@gygvh8zp>XQs*J8l`v->!bY<}Lh(F=^y?8mHM6cqXmvfp zP6?Y$+6@SsBrLcAVXG;ZFz*J0em5d)GxKjuxY+yL>=tY{y>9}(FpC7`W}o0oGw5dE zD^n)eVSW+pG+DO*Uz@m^X5E5@gSR-MtsW%^C zrG%pS2tSzB62{I)XmLBjK9hGlLh|hh8zuZ?QsW3~CCrH<955Rs6vq+L??5JEgR5`Hmh3lKI*Sg-)$S5q!w-U5VvcOv|5=HH2saVNq7gy7+z>0=TuGP|TKF_?H} zpTT6IK^U?SA;FX_L>RabA+!h~WU>|^9Fnj?LJi|BMp(KCA+{JHY?ezHx)>qpE`(Yp zdKW_CT?lI=)G_t$Mp!AK=x&5#&1wl_??z}*icrtwl_DgUB5agU-=yAyuvWsHdk~V$ z1_{OYAf(@m(8$cX7opX?2s?*@z$^BTQntc)$-j6Wk0fduG*#igzA3z8_h|t1hJ&15f!U_p3jkg40 z>4ONdB?zaQ> z2+2zkHcIGdQXfHBD`Czf2-{T0~&HTp^G9E`bAfcz}y$oTOgeA)mdYgR`7A`{=@&v*ertArXflnZWoYw0mgd@Vd;|yv8NCQndK6OK82999N|n8U5=2r9AS-wvrWCH5mrhldK%$e zvs%K~rx98_gOFwNo2x}$Gc@|-a*&w0#S%mZz2p5}KD-c?(K-ei^ zm`QsMVUvUf&mml5$|cNu4x!)k2qVn==MgfVM>rtia?^Vy!Y&C*Rw6{rJ_!p~A`E!} zA={L_fH3d{gwTr!F_ZNo!XXJOB#bfMDukskBE(i9j5Et63|)ng^e==7Ci*Xg#D5{I zkucHJdkJBsgrb)aCY#j~#=eBm;$?(9llL-0^2-PtB@~#{R}j`pnDYukk=Y=j_!Wfo zR}rR~S+63rdKF=(glQ&iHNqwd3sxgsWy&SYTaD1~HH7JA{%Z&suOS?eP-1$&j<8F@ zlGhPtnSBx#zK$^D4TNh=*&7H0-#`ehL6~E*)*u{`utLIIgf$XwHucsbtdvl+7U5R2TEf`12rbqj%r|-K5R%s+Y?Kf;sc$2! zl`!XRgau}UgyOdm(%(TaX4X3ht=>V{DPfUGdlzAogaz*++-1ro%zGE1-+F{nGk-lo z#(IPU67Ds<-$U3XVaa<4WoDm*h3_E@c^}~cQ}#Z>!1obCA0R9-Ssx%AlCVO;!^Ycy zu=E3j*an10%yJ1sHy|W^i13(+eu$9xA;KC7%S^qG5LQYk`Uv4kvs%K~j}TgXjIi9~ zeThY>-gA5h48(gy+qyPY_ytg0NG<3nuMTgiR6_e2TEj zlp}cmGF>(SFPZs*m(6a$E2j5m;8n9ou-fbsyk-V%0bVy{f;Y@Bf;A>oQ!}d^p;bA;P6?Y$+Ls8MBrNz6 zVXG;ZFz-u*eqSMMGxNVf$oLB3fQ0R)_YQhC^!2gEZl)GWGBK`rfes|z?}%8 zuMu{dtgjIcNmwD_8{>V0u=Hz$*f$8f&2kAtzd=aag|Np&cOfM1LRceVuc@~iVWotk z-3ULJ)e^?;MriRZ!akGtEkg3Q2pc8*WK#Datd%fl55fVnK|=8!g!Jza4w_ltA+-7q zVW)&&Oxj+AO%fLDMflZ}OPIG8q2Koiznl5rBV>G!Z~!5AIKlM!LB|a#OMbw_Gy8tP zWZ@48Lw-a^Fl9d?4Ezxxv=1Rp1(td%h5XM`lP zK|=A*2$W>0}`5< z-v2?^C1J^b5K_%P2@C&&FyvQ+lT6vK2m^mb2>pi8!esr1a7e-m2`!EHJHpc65MsY0 zoNAU!82URx(jN$|P4o|h#6J+$NN8*79Y$Cwq3AF|d$U@?*ux2R7PP3wX=6cNwTl-d zSF5vNBdnuI^`L93;R+9)ZZ^P8v4@ZzM2MJKL4;O8gq;$)n6w0hO%fI)AY__y3G)&V z`c*^dZsu1*$f$;JKtfN`JA|-H!jcd|Z?jLr!Vtoc>Ii3;vg!x}t0RPJAoMd?H4qL- zSRrA6@e&c1)LNtVJ_!r!A`GdAkZsE9Aq=dC z5IPPaX0nb$I3!_(gfYgekFfMOgjjuqab~%Mq4g1x8X!zC(FO>K4G`8ym}u%HA*_^8 zl!P$Ztd=k~386(pgglei5FxoC!bS-NCbbd5S_yL+ArzSn5{erkq$eXxHM5ctS}~x^ zP6^XYS_;A@2@6sXt}^8k=A|I?Ym6}6%x{d4(HP-?gc8&Hc!XUNmK={T%j}b|@OXqF zCm>vF%1%HScmhJG3Bnwc)db;?gcTCz8m}qB(k2M8rU=)Yge4}c6~ZA2D!0dR_zdWN_fGfwMW<_VL^L@Ri<3Ry!HtFPDgmj%s(9= z<8*`r5?(RA(-3w^SdxaY+U%3CFb!cy2ZYy6SqFrH9S}kt5!RTjjtGY&tdQ`Q@j4+a z?T8TTgs{#mmoT&wLQ*=yJ0_ZrkeH6JM#6eiuQS3*2}PX|-Z!fyjO~ojB7(5N-f#fsoz>;ZrlK3qq?d2smoTqu zwPQ^G%xZ&m_Q*uY$i(76CKlUG?`{aYBrNHMP;T}~SlA6=NOy#xr=2ESE5}Cqhy$ggqwO3n8%=!Ws#CO}*X-D5`Ho{Q}qiZ7snzIrH*G7n_gOJ|D)2P z2-_qKXpB(U?32*BF+$EJ2w|pA6NI292p1%To2*R{j!GEa6d}T#l`yy|LPRr!5+=48 zLY`&_cO{fEVa*XPOPJ9dp^S-_Fs?a5)fNcl%+wYLC0ii8lu*G`YKd@P!m^eKmCQ2< zvsxlFY=uz8ENX>Ny%mCgYlNyMvNggh30ovoGmbV0D_bK(wLz$1HcDvH1|hI5!l$Nf zTLgDoghLW)nN;l%wn-S!4xx_OC!upYgq-aWB2Az62tn-;E=Z_vvUWf?Dq(a7gofs< zguxvUBBBr)o7gCXJW&XDB{Vf*9T6@|n9&iTxrvuBt|LO#P6#c{)J_N`J0ZN3(Are$ zjBsDVvd#!?%`*wJIwLgfg3#V9>Vim9(T@j+XA#^bt zB{b=V5ZE1|n`zq}!QCCa9B=j>` zdm$W^FuE7Q0CQHt;9dw3y%7eP*xm?vdL!JGFvNuQLAWe|YhBL;h=g%{5UTb?7;dKa zMJU-9;iZIVQ>h=qeF@9@A;g+z5@z*7XxJa&bF-*FLiPR#{sRz3o5%qOuOw`dFxEH* zBCH&M5H%2CyxAzB$v}j_K?oB}+d&BKK?sK=OfsnkBW#l}U@*dDvrj_j!3a5rAWSuV zh9CqDLAW4cn#np8;i!bsLlI_}vl0dmMTi)NU`*^VggnC#?n?ODgnfo^S;CCZ5ayV8 z3FAIPs5%^Bo|!rvq2zFcml773N+S^NOIS7nVUc+zVb%zQhS3O1%%W(7>d^@PF$l{{ zWDLS930owrFpgM+l`#lWu?VZoMhQ(~5duddtTAmzBDhB)9Fnlsr1~6Tn}h+MBdj<3 zBy|29A?GNBji%2igrHFf7bI*lSw|xrl`wiV!WMH@!r;*e5n~YIOzaqhJYx{vjP7^O-+*pLF;}CY4spAkzjzf4UVUMXa9^t-(W#bX{nP(DajYnws1;PQd z=nI7EUm*BTKsaO~Cm_6%utmZV5vgrLa?7bN^(vQ9xbDq-{#gbU`Zguzn~BBml- zGO<$;@=QgzE8&U>`wHQ*gc)BUTr=?!#(jlQbsEAAGj$q5$!Q2LCEPNVrX$>!uxvU) zym=;J)^vo1GZ20>i)J8HpMl^%6XC9joQd#C!WIeljKd(ToQV)+5FVI~5}Fu;k5~yhj3ZKjClxuns^E0<{?y_kMNh7Iv=6re1w+> z&UgN%@&a9eNLjW37l(Pa0GC+{5E?E-NMIH%M5w+H!G95gzlmIg@JhlK2`=MUjIeSM zLeye}L}sIeCW{dQmmnlDZI>XpmmnOHkj$i7im*+>fTaj2%svU7mm=g`hLFniS%wg_ z4B>)=G$!kEgrm#2x*W5dtII%hR>I)rctotgBfW`Tfskhf!d(f$CTu0bWeGD@B7~TD z3FB5GR9%IT(M(;1P;wQ*O9`1xrPT=cB`jNwkkvesFl#kJ!!-!m&7w63)z={Se}jTBr7Z~eB`n*5P{}-#Fl!4!!>tHa%%ZIb)wd$} z$01ZTk#PvGBy5pT%{aCptc*j5+J;cWY?RPs8$#fAgilS|?FjDe2!|xpGO2bTY?Clx z2SOdQPeSJ%2sw8mM4CQ35rTFiT#!)TWc?1|sD#nqAv82+B@F%!Az~LoV-vdzAmJ7`Gdt>K=raX6hbh`|!WIdgjN<^p%KZpY2N1fLjS`w1KnOgD(9N_xh~Pem za7aQAlj;z{HVFd`A@nl)By>K6kn=D?AJgYBLeOD^3ljR7tVa-zN*H|vVSqU+Vek=z zh@%LDOzcsFJVz1kN*H3ojv-u@Fyk1)FcU9f+%bfz-y;k+Q@=+j`8~o*3DKs~afJI4 zmK{fkHP0l>I*!or1j6TL(Fug=ClLHkB8)bXClOvr*dk%9ahyU}c@iP&6vBA3Q9_eb z2!W>&CYZLT5!|N{4oR3~Qk_BACSkxCgvn-~gwAIWa-Kz)YWkc-2s(>!LBceX^&G-c z38T*;%rIvq3_gbt@dJV}u|FW>`2pdsgs)B5d4$UnW}HWuW8x)@JC9KH0>V5q^#Vf4 z3kWYIEHITWBHWj->>|P<^Gw35iwF%bAuKVAE+JIEgy4S}VVQ}%jPOdr76~hi;|jvc z%Lq|d5LTIu5}I5=2)v50#Kei}2?MSntT+24biRg=^E$#t)8{%u z&~=0h5;mEvHxQ0W7<~g_i#aP{@C}5Bn+S0x_9jA}n+SI$Y&T)I5H3rYaSLImiI*_$ z7DCnA2)oSG+Xy9ZBfONb$5e_(xG!N@Jiqgobwz4wyxE5USrn@c$9vkcs>e z;gy6f5{?+hPY5f2M2Pwc;h5Pdp~+7Ofp-y(o3?im+;gAwrjL1e&?HaqpDVcSAEclf1@ zo0`~vk5g*0`xPAec}>hu6&-$QrL5zh#YUSV zDg7&YD$-*>zy598caF+!VypNY|Jy?y)O%wl|4WJPjq&EtAnvb^{L8o!C7$oy&K6gx zrvDO0g4z2VX3v9!FFl34UE9BbgI09-CDPuRJ!P!-y~8gRIk(3Ky>IcjagqMhoyjs@ z@W$@Eq%3_cYq~d}4US)S_$5|tlXz=;^gP?7H0d_`D5Wa@t-+GGJXK1R(CInQfyU9= z-z4f8;PeY(-=1-c*i7J`G@a8gt@1lA?<93HI6V#7EQ2$S>LhcR98vxglNHJ0^t4(z zS+(z<-jcYoI`yyqW6BgDRi#qjQ`MCPoq8og%tmZd6>x>8fQbfm?$W+92fXvx_^$qO z@m&MHk4)UezGJb?S(AQOKsi%ySHRG~vN-AE;{O(?6Y0NYe`Ml!1*9ogT{@pcHcGEv zsOeGYgI3c&de>W$^wGOVwYz@28p&yqB33^fn3o2kHo=%_j&= z{ZubCC~jhvM2L+FwNV^cziIpgR-a5Z3H?9)=~l~ZHU0Aere`HF(?(^rQF;gA1*>JV zS~|3bR?Cj2Qs_+ujrnpxK$>XZD-Ls6cfDA=IAMKqTP*|O5F5^8Z3vnws!v|4>HWB= ztd}1D`XurBVIH6C{ww?`qea_qC}~bc56|-q%Lu+rf z2&-jB8*EbTC5d4=D11uVsGNkySgn*zHW%6?G|6SGUv9#KOk0w0Y%l}%24wD`zLO7{ zsWyBnSkL@~J6f%x)e4|Bv05cG6}}+MB%lse1x?X~V5QacURnK2qcE&Cj(rsV8ynTY zCL2an49HDykyR2!VLa%gSI4TD;lKqINkseJOVP}_M-cUg_UF?QO(iQ14s~2Ut!)w| z2*0y_ZS1}!(Gplc{TmeRTM80dEz0g&8m+CjQz!T9XvH#!bP_%<}yKxf~bG$^De6l1*cP^{;_{MXL?8+9znA5Z2HbWVKHTM-tX&u+?f3R=hq# ztX7NgRjUoPT5UAFhnY`uzhPFa!`5vRdw`A?Z)O|_$Q?Mt_U>rwq3LC;Ig3Z$aW+bC z!d1;1g5FE5&q%B3AKZtTWCsH>N9uqzfk$=#jIl0F(e7JqESmh9!4kBbSiLz{eNF!( zf2sAGsC~`wg8_x3S6OMYO|CU=YwfO6tkwoi{|8T>sa9)CxSI0f^Oe=w5uUBQ_)N1} zd%|)(LG2=rhY|oeAf%eqURy z3z{;~xSMUYu7vx8K65-;G;eia<3~FR<|3*B-QhQ@EwDTHKzn4hg;wi{_Qq<9&{T$A z@R!w=SijzAZ>_e}`t?D35N*Zf*0C?*JFBg*j{VTCT5Xl}Q!S2KZMD?~pxw0E8Z=d8 zAbfANb=GeX+HSOB*c$7tIGBy^tm6hW)no{qvD&xRZz$RxtLbgYI&{O}ck}EpQ`RmU zwUsF4KOFX3ZM$_Jf%dc2c36$$;HP)YXo}luwHU&BgN~-S@2nO}IE&qPm(@n1W%p{) ze!H#sIbuyj&4qi=RG(2$&1(Cs-)OY@Ho^T?8-q5?Y6q+~7A*yu=25-eS?P^~+&U%j zIqdPH8spjMXeYlTh#EIvKzFMhw+T*=W+%=QXlkvAa4`vg_?)(WlL%k6+8L{TiMH8J zaA&PH8SQ~y30jH3IV)!Ybt-Ne8ot6j6&EVPnnjj?(cw*0@BYr?KhW=&35P8)^Q%%Gqo?Dcr*p)LoZdGkMHH$3kdf>Yme27 zwpEyguom?B*=majtHt!WXSKzI+d4V^oeA7WR2i0lMw{lHN7ivE;abVP)6Qe7EkkRF zrq2_rEhoI34yUQ;S2UG%1!TsrC-#~3TS+(#nx>uKbefUlDsb5ZUs%W0Xfgz2`{&rCKA>71gx@sL9ectb`rj^T4t-ALfdGyEH3hw z<7pU!_ysmAj_M0%U_es-@X2AdvxNIuEw@eZ9NJy>orKMUri%OkzuB2EpY=PB_Ae6F z+>+mF7gYa0lpCJ{R=h~~Go`|(Aey2tfu>D;idetPgro3Vj19Be6~a0RFM*;~yGmHc zeJM8FYS#$s4Oq+6{>7|#ov>bBwj3K_wHt(++2$&4wVPNyYoZBrKyQ}d`+wU zLO29XpITOXL^v4j2(~tw(t8Zy)=#(H>Tgfr1=>j+|41wTiuelg6tK53yP!tGz&LhNe$rX*&KdL2o8iPi}&!QvVL$*&f`? z?)(SZG!>subE~}~{Bc5$5RS2q zZLIbe+DNOlwc1;>E@&DB?X32Wu-=lZPTSsUYVQtc>a-oK=0Iyl|A^P|k3v*oopSVw zeqF3%0<_}vk2}P7wOT@H_^C5?vzkAeInO38 zbxeeol~VtL)*FqA`XxrohNe$n>z4%Wq1F0XEh(Dbjr2pm#!e9^3#Fh0l!h`;63Rn4CI9|PaV#Vn&z~01-1NE1Vn#cH?V$ri zK_k$btkz()=K2QfS!X5u7vbOGHT(%L;9sCM*SFZ0;3TZ|)>h0OEuaZ#t+hEcgO<=5 zBB6XDxOy1C;%zO^f^9t9g(7Sh zhJv6)+su#!vL>QC3ROYt+P$DL3}xR&SgoCFtvrAc9fj=z9bp1|0a~6NqZzk9fq^gxhQLrb z3di7k&{~q#j&vft02kpBTmh}RX!&tDtbmoE)x&RKEohN%BRm4FIXnd|3+N7AcjUMH zIsUh)VLbc@&*3Hf1}`81PKh8P1b_?t!41!dKL+2!Dp(B5VK&T#uVFf9d3-ErExa_X z69N4R_k&_N_)`?Zpg2T8At($5AV1{gxvDE9%0=)Qt*OQF7w{Ni%;osQ4}qTo9^R0(W2M8M+&bc!crbOXMJlW-c2!zs{; zd=1!2cpFTCFJT&tgwfCk^uDmp&;g-{#zP>A!Sc>yju&DL81siT*p zt$>xV3Rc4!&{eXo7j+S=YssVRa~#gVX*dff;1qldn_&xRk$)2Ve+iRe3gkr7qJC~z z$o67b0{t18p0%WbZ1jX)&<|cQwem2=vzUL5uom#OVE-7jNPh#gFt3I9=kNfu)_w*4 zgd?DJ_J{BjXnp+{XiZ&f=-1#EIF*c%ae%-rxBv&?30#L?LF?$p;VEeS{0=+=t(%{O z-{B9?V)BMAZ-K;1ub5G26I90 zA5Q{F;bZ1|Em-G*9MF@gJqom5t@Y`y&{<*pdO|Pg0SW1Q4)6nii2f9@CRBs!phasf zQeTIgkQ?m=bb?WAKf*qRXYc^-LtZk<2U^J9O`>~1Yt>&sZ@5E#TI@IlkJ$bdp1@-_ z$3KKXM#v0VAS-CGIt;=g0XQKDhLON$u$Z}h5iEseupCyvO1K8PBd^co^#z@N5*(*M z1L=H&pgQ`;Pz`zqw5FF6>4rrJlR>NEqaX${u|sCa0(>#TFB@cs`@}tjoQ#ZHSS@7l zf*rt@LHyECfOL@FJi8MR60K#&#E=9$Yw5VXW}f614W-9lAkp=n0F^mp~o(mHho~AYOyD96hZV>&{Vkin?9Z zZLDrlb(g5y(PHeB6p}$|c*=gy;03&d-{BGLg1Mx%0A|5g&<3pz)Pwy;Q>qAW#z`$AsE1>}B4fh$L6ycJfb@)UO013bipE4$D!6%?K`H!GF zXx+U$@tGJO(Ul44efQI02FwC2xNCiVDogvhY2tjX259p z613Dk3&y}?7zATs7%YH=Fdx2x*)Ra5CNrq`5^=1>`227h(txXFoj~SW0*u^+`!Mgm5UNfk1G)r06hn{nO(=_ttOY~O$kIBGRrE9Di?Ltz@>*YFM;Y#+zw z#b$-+=hg-{<_f>y+}*u4v0!aEqi5qk`~ zU=R!eEq>SKNK}EU@G)qiI|U?#WS|#<#&QI7GKhuGfv-mT6^SO3hSXp&&9wwtLmN0l zt1N>8#1(`rpk>}*{1bqdcf+s+p#f+amv5K)4TI0Xz}GMv7Qm+zASI-RKu8N;QGn=< zWYz;#lG!R)4Qt>VSPL0QJR$r-hT+&nB(@lqz*4AALcQ339lq-!4}KwxpG)-V*6uX$O>2p`o`FoFc~foSC7H>359H>H=&Ita1u^|zKpOMv=sar{snia#S&Ns zqoFT^Lq13WOQ^|OI84GKj>>!mqo5ni0ey8z&zSbXe#pgkPROTgngWm;@<2hz4|yRA zWQWYKkyeNUW$;SzL*4iE}8LElyR6jFk|dy*KssikPK=$!oN2%X_q zC_uzsYV&}m($_mC!F@7_2R$v(Gs1Fc`kF^8TBiZT!gY8`YdnSra38wkI{`Z$K7|k{ z2_@hZdA!rrp&uJJ*|-h2;41t8`(YPsfbrD4I;@~2w9Nm6gu@AcM|c|HwpJTNxHg@! z7Sw^|)HFZn%MRHf4fsPs_!z3{pXOJg#|~j*GW3J~Fi@Z?vx0>6sDC7Eg-qy~AsYqD z0-0bXx}Ma_Uz8=&GLQ~}Kw49*9*q06JWOy4qDe>(vi0D4H|TluaSp>VI11`udXBt< z=GI~P1$z_XAqOM^L(`vfa9N74UItkO;_~HjY0pL! zbc9ZzXT>V9o(1dC??xy@VSFV|ie8UGH3B{ImG6AC*&s~}g%J<~!?lf%9`WjdSTWE; zuy9=+7DF6scg#*nbAtZwupY~5CsCeo1-re2COl5ll_k;AaFei}t`>tZC=M#X@8G7; zdZMZasCfwM0cn012zoF&MDxFopa+vNFcJ(c(giyLs{*Nj87PpR zD|Ud+AYB=^Bd#s90zEn`j$Z^6C;VaUOKV%V+rH+gM7RnprG{llNRRsRLOzH9)kql> zrNBBIdYmWQ3VeNH4;7e4U#Lbarh=&yN~32oOawi}QyQWZ1&HpZ`l{fo?Mkcp0ece}6l&q4fCD2C4nP|N74TQ0~AM>W0jIhfC7-aQM* z8oh!4U&2Sw4|J;4#ZV;(hV+mQbXH3PI?Ji{I^*dsG7(mH zlxLta8E2$G6|pDSX3eXSXA$f$8;9UK&`D_roWeVmC2amuSD;TGUaR}W!!P?m<+=Fkk9LI$)ZPDWT`HX4B*lIp>yA~a*RhE~=VLTf`< zaq25mU;-$^u~;3#Anp&Y&qnQ%48T)S>>Rfsz>dKyN(_>P0{|=5p!|>Mxpv zWCy@t7z6`>(d;({t5K)Xrz<9n#9^R93HA=-WDM))391^gL%7k+{t;SR*ZZMX$D;hp_x zV4FuSSJLPQsDHwzC=RBAw}jPxe_^%Qq=Wm4@bB;&tb%9o6du7R#J2%GIDEqPWAJVJ z?63dOi<0h3v={0G&j~Og|J|FE`5$Qi0)<~=RY2{aQKmvv#J<7$QDAABm*26SfNhPg zS%kBIE1VBni0m(rtYe~Q#l%CR& zk9xoEP~9M1`z!5WYjroPZC|tNv2AhCgC4EeR|OCDH7^JJ!k-pU;^=cZy?%} zkv3W(s+29DIkbi-=wRuN?Fl`g8>q#)fOKuks=GOPFl!w*yWPxF7CpHc3M!1syb-HHYycHv9jNJ4 z2vu7JI7V32Rsk-vy_T>F@(p$kR4^HnyN2=e@voD+@>f;L9~R-m95)lU2_i{J;q9QV zsqL-UZ4f7GQl)T(G}=vY7ibm7b7~~4)1%HzM+xid{s^{@jqim$!S-o51t;Mw=sa`| zTbB6W6PS@HT$Q6=vHb_Ug!AwMp2JV@8$5$M@Dy&q&kzrn;5OWXD{vjI!bP|MikGf! zg)dv{i@(NpH4RUnqjpjTzHOi5O*ADWU79a^*M?P470{QN()kfS^nYl#?_nRneP{r` zYIr^&@E9J!FBV^79~MXnOPBQ(MD}-3%gO#PeDOZ(^E7;ny%3%_2TUxTM zg>Bz{>NUFPkk!hfPuGg$huhLWM2mjWK4)2V>L5fVq$hA(L-q7D~|Q~%14)-ltti1ah%16_%uRjB^x zIu7zv<44j4~Ad|v#&bLFv7Y@*A@9t!s_J;#}HP$ zPI?1$sXrWnz~5gE9mDnn_yR_P3MK7x7z+xIhEXsMe44B;Jf84Gm;@R=ld(!?D%RIg zy_IDcd0WHV8+YKW2wyMtIe%+)wa#)9Sq4jBF)V_G@PHPWf%PWL7$rOp=EB#Yme$E` z7GVQ3A(H$(O+JT>*`RT_0NV;jl{_cmrBD&S0PbjfiLXM_7avw)Jza!&#Yu0Et}7#b zDMDAy4MATNdr186SWQ-E33q_#mk7Z)pT+8@)@R@}oC1CKcOH}h-JaUr`}ds10a*hdA0(s`YHBH2Pw3elpM(j?2Ot zyORp0J6^3Ie}ks53Z>iU#MngO27Tp2-+R*?v=-*|6}hAMr^DXH-hvx&9j?LEgyxeV zSBB^x2%m#9a0*Vs2{;bl!!bAlT2nZTJp>2g0PKYwupPF+TF{;OI;_g63$68peRuD1 zgtx*L*bEzWF4;g}6MPGM*-1`HL!wdHrNG@rlEdcMG@4PPx)17GBSvo}8|fF@*Lh8hSOdAbf5B^b1%JQ=IG>Q?|2qMV0QLTt@B(}z;5p&nK%?LpXe2xZ-$?kC z@DtF8cnrV5L(s^00RJ2v_tEab&u|xh(((Th{@K*NA*9yPQ1ta|-(mXD|G#Oz_(wKv zU;j~hAEq7cbM)B{BmbW|kk8MTxjL$ExzE=pYtzRdq=HNO9;`7&05zR~f| zu=decvSrnO6km|;qOWM{>fwEw9Dgmr`f8yJHU2*w1-_AwiJFzCz61*7@1)b3P(u+|hbTrv<2h9JOgi zAWg%*3{|*Gc3X!|@rv^;q-u2Obf7eR`$Vg@=@GSquXes2Wwn#e4cbA4>qw3K3GXJH zll}5SM$kiH`S=m9uOQ|D#b<)dkOi_qR>%%HAh*VUE&_SkF+Wz%;$@Z4D>7(9dZP&I zJKsuF+j?fNiAGmZnho_Nx)iACRbWlEzWGG+hSJhyK|81fEkF}fQ>dnIwSP>YD(Fl8 z`m%pT64rG^6~g+?e<~8t;+A%<2$kU@P`rHQBmXAYNN5bzAsKOXv5i1q!qol^pgz=w zdJw7OUlTro8ldOv+DX@mb+B@*1 zK-VyHA({&j&ySgO{h^B<&qX#?4qc&(4R^Oze!9?Bv+7xeI;-z2sUAO@c=htHvC2$^ zn*}q$lO`>xO3#1}1pUSkm=4Np1ayPp5CzIC7E}loPFGUBxSI5LWR+2oF|M$Z05i23qtShShNLJuOkZ3L`6jB@_cY@m2Fq1;uH2Dl@gH z=9JM``HqA*wm-*?g7Huhzj4^;vHTfM;yPwi2rt9&3+tc+rOSCU_Dl4MFaai6I~n^G zOoMXN$Y6C?=3uq&V(cPNnhRkbEP(kydeNSr=B;95IV^>4B(e;<0yOqlV!wekuol+A z7D%f?VLd-Cz)!W=1mD6&NJ1gDVpD)xMJ=Je;JZ~&fsW|-t2ul%K1z6xC*t4r1893; zAM6L!Y%*hB&8&UZQirgrokqt&>|yvY?IUda@=+e@q{nqUPl7K&CG?c-c(@7YK*#uP;JHB}A8kjg7c25M8{4qAu+n_` zuWa7|72*l@F+74_K$leyu@B%r9ANt%_Gh>YIvM?h{Smak3jPlp{ZHZl*R~3+;i{HX zWqhrwla&sI?@a4EWY2Z{eE~G*4bl3ekM5o|G&bPS zn%e7kTWY?3gp(3Z0(uUiPL`Ok?#?yzQV>=vB*!KLS#2i-?XSx&jg&0t`dP5<#4};_ z^WhBoRhtsj?|St!Uj3Z+0z2uqzQO2$SY1@=r@g+1;lYH{!&LMjY!(vKZM}XwtZyuO zzAeCZUcy-+H{=BU7C8sVH#;^Ls>OHDnUf)&83 z;2Jq9yv~G)&D7kk+|h;D)bEv*q_4uN?00OJ#`@~3I;zfUNFA9{;A=2_Uq$UUeZK3-6^tyyQP%w2n{Se0M$AHpK%EXsJZ6a&Ir|=0V6a9il8R@&)HNn@7 z>JU~p(hn{5>zjI@!J{8a`U>(1k}A?2EeZLkrB4y|RE+#RKZaE1Rme#F?HFNQmwboS zIj#k4C#+im9h$A6?}Dtys-UW=`uaNTNBF8`))G#S9g1BItDqTi^kL5rE2m=BI?+o> zNHrYC##qoPK|cjjjWtR?$BqPj+frR88Upa?h#djLLCvYwIf1Ux8-o1|I}CjNWia6= z=m1TjEIv&%pj4`2&<1fmh0&@~Yr^`PXG>@XEuc9lzCE@bv;~b;-w0LzSB+E|6;y>% zhgE0Yfu`nHlXt_a59t&Xtp7Q(lnlEfYA4l7HBs+Y!d{^0A1ZJ$1VfDP3X52TLQl|*l$3cQ=Pmtnl8FZIynAYh}Z}l zK;IqTjNJsfVfq%k4Kzc?S-TUv1AIg2DB**kpH%4(9U#0P_Q4+54Z9#2m6Ok2!a7%a zw>kbg&W8|>z+sTn39PQzG`x;Obx_(@fRf$4H6?0~{nUdd~)?``i%H+JY+f-ca3W|7&dpg|99d_rb?>@4{ z>s|!+fIXc2h`AWoY|@Ys=Sve)q)=F)q7nQfT>x1%(>xxxUMq3n$X-PKRgFLPZKi z&^7j$pO(5hI+yP=HJ9PJZ6AG~G%GBB@TO>{o-gqXrwGM3e)~)e9?ot1%UL+ftEO|wNmFEvE67{r;Ls7A zPZ>%v&r>8yT>p9BrcOr@8k6k&#-1`G)==ODr_8r&Trr`ozV}wX>Vfv{Pv(B!myFf! zWPJOysr`+ssH4A${f1T?b=GYC#&zm{RfQe8m<4M&^!?1F@2Ju6bKWY?I69)qy}Qm! zo*H=)9(&F_SxdWrg@@|A<@=xejo4J>8XoivweEZy^Ym=lF`1{Vzd}qgZ)>bRXUeXl z_*>7J-s?!?0G>K_)gHh7t^Xgh&f`g^DO8kI6B}c$&72iKD$xc{8pTwxTj$Jf_KkRg zM@sfRYZ^bRb#8lhJi@(Ie`{m<6!_vvwwtMyYB5q}-{dCAdRK5r#`E3*GX7o1AJ$hn zn8%ZCSgArq!@_x|hbyhAzur|pr2b`Z6ND$s@-lQ!k|KD8(Njsr}^r1Ku!l75*69F%`%p3jQ zVcG7P+g(9s?j~28M7Qx`+KcfPDnJGCPF6vokBRae&pX|#=Gzyy-J5_se3kW1SV6@v zUH2ZnU%Cz(lc;p@1@ArY5tEAKKiTr`_RSWzZ7G$;pSR3+n_WR6$!>FniHBdu-3K2} z>2sZZi+cN4Hq+-Lx3_I7nOcS1!6w@lSFz%U*+E^k*R0biMvSXz*ntkI-gJ(b)WjSP zP4jl%gA_sDVyH=M+nJ?XT&WWui}zOfV!YYAg-Pt8-Hr=7bp6bkw?BDGK;JLP3jxfF zEv}kr{+VS;UP@Abt1GM1Hh}Zgk7mkN-?0v6+NXijaYC`j)Vi6Jajs(akb7F%*N)yJ z%zJ>Q)}&K;50C9)_Hh5Z=-hPA6xl{^vt7fN{l6vPi}WV9x~Ui?`kE+R23Xk*UD6!YgB% ze#dFXGs)EA#Vyyqb9D+`_tUn3+utFs{B|J8*cDZ7BE6S~1u3)Ek zv%0Cg+ck!B6hpO;`D3@MN677`-V~0P`M8W3wycitc&HT7dt7sP&q~N%3KL_x$av<& zKyzX*C(Xyt&7-|^D)$TToUq|+`O*jW&JFWa#51%rnaulK;UR@^&`J1CgE!rR7k>0B z4q=5nXOl{%$39p7MD=jcS)v6mo1v;b%uY<`7pNIf8(oYaId<#GXuDf6E|gxFr~8-$ z*V%;YwTeIf*Lkrs@;v{Po{evbD~FZjpfOu0{9n5+9;HADWiX|`*UctvQX*%~}{+6*w2 z4p8nu(_AL28E}AF|7Wx4f`JnF6*317xN3z?e91irCAgP5)t)ah?krDwMZF%cUz!33 z>EUiu^&sausyqE4C!`+c$U#@E^WYov$sx*h>Wvw3h*r4v#@mth99Y@>=(ksIdTJ6z zLxexDG0TQb9{X4K2Hw+nQC(a7@y47uOk$y>BCfJ zu!%h4N@s>2c4c(N{$=JK=79f?ox;MsJB5F+Q;-Qe;>zq5Vn5I`nt-FO3>hcB^PaAQ z*N@43w*I)5P6xBB=QHD-pDB0Ll|JJNT-15CG~|K-@ELI!p| zH5HE0ajN<8LJ)T8cJ=w?34e9sy2h946+iRaQO-49M<*{jYj%u=EoLSiqjTpo*VsLz zWCGqk!tQtCwx1Y~^9%a3Z}*Q)itk;)5e;zA)K_3#{_P=|PkoTS;s5L@X4R(D+xDH# z*75zW9ZgGi4IRv`>eDwnm&nolcAib|9XP6AeeWwvu=Cm*bNhR`fHzCC`g>Of=W2gb z=r{*_m%l?-+c5!me@oLaLE3?ygH}}Y{8?gj{rbm->D3Z6ANYuv;+(&kQ||ej&)7HQ zEgnI5H2V6dm=vM&S2`VG;hJ@d`lU1LkGq14*A8&#|K`Uu>i=X&(|3UfoQ}dMnNd1n zL$Fa3)0Fw@_@;Iw&ZQOC#@z6lx5r%{xtHLf6Oc)H)|D=<%?Vdohx7LUGykNkXvjO_ zG~UwrH_cc(OKLIY z$3-rF-Maf{IO?L4NvENie8$y@v(g`DT&E+xNb0Tq&8=%vw6C{pA%5Z1o~&jPqYBko zdv?&{OTiJI7)r^VqxthJHU5aZPBq-4SM6@JPU9|ygPr-#B{N0NxjKe+=eAGR$g`$b zJa~Rv6P>vuIF1y8(tdl6OYZe4%*}ILa(fy#IOG*OsJ~qqm+Ni$=Hn8vgFRCvHQ_(F z!b890e{(3sw)?Xlsx~XwJKHiha%-I0%>9A6)MrnoFSZ4yKTzNNAP5ns9b|h&c5yf=G}Q$*3cd-{ODX!ct!cWKaXxV z94|XlQ|hu87=(>X!wbylJ%hYO>ip~GU+Wd?pBG2QmM)J+m?b!bPQ^iOADFyGv-X`Y z=_avQp%SXqydd-21?v6Jp_}&axn*^bsd$m8sj``L(G~AJA7Xl6;t(`4Q!ml0dzv*E z=a-@8@FiD1_j-tjBfH9owj(-BdqxM$pOa5r4` zR7NS9JC|Jr9DXLn71#KPXPLY$aO$UBy=Q&-@)qT`XQIBDy~k~0YgF|JyX8_$oUBTSAK~ZX$R5vNgIFnz-TTIjHrmI-U|CrTE zv0P`?-sE&^OXcWjYTROk_BR`Ex$-+knj5zm(0}Cew$HYypWUjwaL^P_r9AE97Z-lp zmC<3#5@fo@yE25NtesnPv zy5pjL{;-I1@3}_$${W&=-l4N#jU&51T6=ysS0^RCXA-~urv80b{&G`sU^K@3(=p}W zj&TLO-D<_9qZ`ZjUC`E3ThD~)owdzbj##$+cxgt9YTvnS-~RplO08>`ZO8CmUZ-?i zAjZ?n%Rb=HXM4cW>QmV3e5BKttM0uF3{U9Ljb%93E2B)G2h?{~VKeao)A?E)b#aw! zYyIjy3gmaccRX0w?8PJEIv$#f-)_CO;o{~e+uwVxuQfCWp)UJ7*JeS|cU*8l>UFFoz?;V<&jW}>`aU2sm z89$u~zsXoXEYYs-Q@{6HU1H{APK1YX&?Q2(B9o@gs&W3zdxu*#rcc1}K52&roqHei zs)VV{z9GRZVrm3@SHLm$Nv*9~8n87CGqH~;L`^dX6Veqw72@N_$#qjzTORq|Z?rj$ zL+Csl)DRs89iN$_a*L?<4x37vgio0L6P9v#ZgyMs%04-+(W@^!9-fnEu!(#^R{2dg zOh^U%lv0D!)0WOM3-;p2EtF2F4b1`^ig(39Jv2kwKdYVy4$A0p@Z6~lx4XWs^2L&s z^ZM%kiv>BIV5XHaPoB_L%ka>-^YzA=Ie#DXiLS`#vAX%$PK-`)*UHD0O!wKgxt^G! zTFyIG%9Q<;K717qwbkQi9ZNqw_wWW^yoh${GtWvVS_YPhb?xcb@@cXz zR(Enwfo1Nwti*hHU_x+TOg&k>9`7MMvNM!Nrhgack)gcyu;>U+iEo7ej{w;7UFt3qMkt2y@3p>sa3U`{=!Nj|OUojLl}-q>Q}&2`mvXuNk) zjg8|4b5?Ov=LKh$iso}|*?N6Y)X-^EPW`9Xl3`>it@D2^wewwVGxuNg z0N?($RZag??sW9!qJFpQm`s0iHUGGd`Q%U6VlI9j|4E5VUDG0=J1BHTUGD&Fe5rPk z6B{09R?#&x74h3v*JN?xam;#jpS$w2D#OCGPR;e2j`7vHruQ3$#{jeB4ZVrC#Jje9JXYl$rXLK3>-xdh3df__?9? z*z6s(`slm+eeSV0bDy$(NsQ*6J+afHo!KAjuCS|vG@)z_T%u=twQ={*QR&SOnXPY#zOry1*Xhx2mnoig^A z*qu$b1Y{7`)Ra%)F8X(_6%!)9Y-pAzaL4?+XzIq%Nt_Pn))uCXKZQ8h!VL9y&-QK8 z#;H=%?9~I@wONcb0q)r1r&@aF?U0o9Uyb^934_JXAAUE9(Y)Dq)PYY|^li;LoiFBD zOH)&Y4>;)Tq?>y+;-k>v9M4vhO*Vkb3y(8m3zFc)!ud$4r0k*VCNF z!TDt?^U&qa=f57u^rlZGSD$rT?vcg8e_u=F&i{`cvxNTd zLi}HI&tfJfcF%Q;iOZYB-OUj?wY~QerITOzvk&uJ(E^>892jNG+nWtZ-9g1S%l`q^P(3J^18*V4Ybe?PL@6XO|GzqL1Ylhdev9lWUzE_vfghRuPA z@z8xcJu#5q{kl7a?v3)El3IRRFImSGsRw%;c$mXIc9aPv3FnO{b1E6uCOI=X9md9m z-tFkUL#RG}PO>`(%3k*rz>~c7=Jv8na(B2E?B^$U7yW;c-RAZtAO)U(-ts>Ux@#XG#OZtb=<{g4sM z+1q>4^!wlID)~&glytMcrg2J2%+sKWDd{qcx|qEw85^g&naZi$n?ve#_nu`ZmF;@; zVUGCzPKVYLiqc@7@zBW*3+K%4W_oIOOz3YMBi%&xuGVVAn*~!UdFtW01pT?YDUycr zKksfnN#iaW;_l&1`S*`AG)_MB!L788H#VEB<8B;7|1%SgkY{SP9?thk=1lJnk9gSEJC`R~II!otxg($IxvuBh z$*)2`@7&_=>N90$xz*fcYVn3sgrB|1T$0{hf+_r3diUDIYx{e9hMm>S>LB;S&@Tsg z(_T}$Zs))O4Rd(9i)Srr-T<>9*xk{&c7O@WKzGWm+Jtl_- zXcqEZ`uW{pMCr`Zx6p4z+rMkHL8b9rnEK^0Co|B&BFw!E9L?$`BE;R=zX1s)^2}0> z24;PTJF6qooDHD^GR6WzITd(U;6m#*@K&;U$dRpsBi=rwh&p`qyH_bp&ro{k?V;vr zDD%amq25V&U5B8+txFQlN%{B9=Nn>lCz4|9XNhW0DRB6GjCV}c^rc~zW^|w7ELCX? z6a1H%+#fra3^NxqxwC{G;2#%iP@a3wrnRM_&F zIgy1vdj=2PUymPtJwy5w!;`)Dc>LMStnQ$QB*VQIi$^{=SaRc`uFm&~=d&@jm)~hw z<;O});=aUdmd8_Ye_Db8q3)wYJiEXYP( zGLG;rI!`*bY2~(KTltEKFVV`xXvwVjl^jQs2hAz>ev#20rqE@4&qar6^Xp7kr^L+P zM&h35*+usX?^ypw z$>;k{`aDYd1;u(}W~|JxaC??)`MoiE`clrc%t=Yw;h^JkE8@k|*Qs*oIcN!H2hQc= z%v2nl>tf9}NwetPSdk zG+q0a5R(lOprx~&pHuw6>n2>Ep`|rOS@vc9LkBFb7n)ki=Tdx2EWX`5y;}D0%>fVh z4Qp0kG(iN?UPeAa0_-luCD90ckLfw{%~wqD60e>|{{Xr1B>Hmv^2_m}A7Y|Ma~fYR z+`V~gJ1Mpn4D3J^!Qfo)`Fj4}zR5r6fG98K1i0#p`=!dgK-xCz{ljspeDmU z|JE2~LiXK!I>Y{*vJY5wdvZimlLL@4m?c1S-u^^SQTmkw; zDjjl#Be+g_3wttEt^IX! zLWN7Iv@Phq4?yPq<&f}`4reEGgd_o*(3AiT`-?>tvQ9!9u-dCZqBquzUhowON*GUCqJhMFEV_yk+4E7qcj< zmWLRs&B*LPm6@$Avn)Q*gtYQd4%EpV+)zt(s#UH$=a?lO2aLJiQqZ+=s>+es4*vs) ziCS~4ucBekS5=NB*=)j~7G71JZ#9ZFNZLUEc(F28Rv8NRh9Z1XTA2*#^=ZGi5^d02 zU)?Mbp`2eEcCO;Y58Wa9h!}X=lB?F2;q*|rK$LSFhwY&aJ_t7^P{Nx^cklIv+)b($t9s%v&h*Obbp#f_50(g)tJ3OF}^Srqon)v8MS=D z=*t`IO**OiO$P&f<1zHt_;w?Ue#NVg{zKv4PW{j zs=bHFRKFt#uE|gO>n>p&_N^yYe)V3&fb5l~aRO*qM-cos0N8^LE?>E*R@n9o0l?gM zrsV+e?U^kAwhcOydv9AD_6gdICdroQ`|Ia*o7djY)Uqm@N?92}1SM4nEVR8}9eb zr~!VYPFF2T$>99~kbL>uYN1K)d}F2Osl(nt59;J^0&y`QP94&8xFbT?f%) zbahMuZg%k}-WzxDz|J?mHUR{Z+w0)hb^zdXD*5QJZmUkM*z{NcFhk9|b{@4PhZ0{0 zzgEM6vu_K!IoWgRbt}$&O6f80+PUwO94bOzW9yB2wO-Pt%<|4H?=dp=UUB^++Ers*$-R_{0H58@XV@S5TW zf1N@ponTYdFrpFVc0vqjK9=ACL@Z(N({O=ahjW_bNMqup?fVD6VIuDJO?v*X@yYjd zSN41BC7aJpEz_uJXDsGN00;oU#7@>($71|inE>vfr3+ea9*#Tm`{=EzklgBj~Z4+i; zsQLYWfvaZa^&RMH7cBzel!99OTMbc_DOK|XRsDkYR;7oDRFjLN_`vEuMeAFYy)R&@ zN}F`gvVd9hSygDdva zc$pDPtxpv$Q=6Wq&{&f6pAoX=T&r+EZ!S)&`lARCxLgv`vU5UWrskQUY@p~(_>7Vp z<|?Q?;crwd|2|O)>7^#zP&02!alI5LGi;fDSe&7k9HzWpO0xI6M?|s8h%4Vt+0aAJ zC9g zG5*=ptnNcw;uq4mujtbayPFLdx8ML*G@cq<(>$6X_SjQ81te8 zrm~-pG%0X?$~6S2-D6R^aFWi2DC1Df?DIAfbF*pu+seoKL~;tnZdlBgCWYcu$(@dd zg4Vn!x*Vz``&yE)3txL3%`b^=#@RJEBhICtO%!>@zwOH>Con)ABS};iATR7!|umqFHWiWp1Po4NNh6WBsg8DVuG#G7ebY(D3 zK&v7Pqh&*|Se58&M86DCEDR?u(4!&9U7n8?d#sa5>z;hy?VSh^%eh{Z`pK+p2#pvD z?89i~P%JT0p1JS9n!Q9vM_|KMIuv3l0p-J!+H*3u8|45%YjdDD{!xHvNPNv-g5g|J zb&CwD)OgiXC+-ocHwSUU$X?57;&>Up-F=j5Xc2}qrubpXeBav8u zZi$&2?p~zQ2w)Z*!@-)(NSLG-bHp-5tdlHtY;Z{&#l)o)MSZ=iM>^|#W9-;)RUvWWW>1^Ll?~?o0(9>MmWnuz6S`u# z=#vOYy4hKw(6TL$E=dx!Xhi%EBg%wyrNxsHBIm)W5?)hB?<->OQ@o=EhLU-s5kh77O`JY@Y62;zra}wqHE027Pv=G}(Gr?M#{g+vnm7ih zdJj&}kul0!vgw7W$Rw#^h<}kRZIUp3X_3HaMQ(9mrYezrrM!6>8($THNSX)Hfpp^RvyujBfgLM<0sta82D=_*&N$eW~s zRKw<*WE>A25~oQNG9EJ&)Ed&PD2tnhQ2uyeY(w|(Fl3jJ^91lPnPMhzw&a$uYAvsA zo#SY9O~e2)+1rD10AMJ-MaL$D9(rdI>iFdepJY60m{X>J-RjzKdBpS8fZDc=LCYX2 zW`G*ue0KdTTuSngG2PnR+s;xz9#TKK4N)1^Y!hx<$TBnRbCeB9zdj~RC~HJS_u zB1cU}i0JsFTyW?5=7CmQB3pAgBXb8ydBJZ-vxb=+xEKDv%w+KQMzOexmY%bJ;M0WS zff57wVrG(ZT9xOmPS^`7Rcoq}V!Toz+;UxOUw5~<^SC-e&hAzPWlx3v{{aY&Wm0>0 z>9gs#MNa|2x5qrZaU^Rq2kVIo<@XtI>H}e&Gxz@a8;!im1)>OLc){YyB^H3`52$mj zx_eZ^a>JGfG?m}i-=wryoZ`Mh$73N@J*WcEh)9*YJ^uGOShw4X~O2HIB$MeR}a$yVla0K6)3VsJLWB zpZNQAb$aG$;)%EVL#TJZRvljZ_=90w$PVuEd1)7FKV9V=-^#>wng0VM=k(rhl{9ML z{g6LZF5~JCr2P+ypN^T={!>7#j+t?;aYpPMu?{R4D7yqMy_(x=dN{Mg^J zSN-(xiKI)F*Q6QPQq&ypcm7Lcpbp18e69Ps!|bgw1};kLCem4S6@esA{)rQicSW3+Zjc!P-8DgD{J9s=6Aj57<|4EilNzCb?*~Zd0=foc5A|SdP%2g zYr%C6VkA`2Qk=5hP##a-@rtMK9lb$K{ogtjZ9DBzH&=|n1_E+urs_eO4$aXXjK^-{ zl!2O|4AAjQgF)R(G;!}eE$>ti8&USlP&jAmmw+kCdO^dlwJ0?Kl_^ha(S3BpRO=-2 z{>g$mCxY2~@M#jhkTrgVzRTU0cAhin6FF}Oit;UJDnk?if_MB88Nt2oTwTc}bNmPu!mjTA5JZ_$!)G?6B;x$*lDQ(Z*$+89%d^tyD!h&X3OG74ja6*v4?he9*K z`A}MuqC^>XDfCYY_R2S430lW}Jdt(jTBZ$LeYkIQqIUA)nwD+xm4)fgiiOk z{AotnNqcB4k~3U5q>~bP$&x0qq(})dNXc=mxp+)ykzu19-A_YJ;T)Q>1Y3W#u%~fH z&l*0S0|($!f_xm`OlcHlT^iaZI3KiNE6vF~t!^m7Ud(FR?>F-HM)$zMQlhHD9$xX( zbtz7s%pXoNa=6+vWeWo0)98X>d@4PK*Z#Y>` zv(=xMEg}cxILX1FmLBc?#<}E^Rdcch<$SnfRk^N0OBu<8)XZfsC_c?e7eRS$IwE!< z)JTV`#?zkMmqU9r+Yz}O37ncNsk`o|BOP2092$6&70O(_HD#_qIOAY6sEL7nLyfar zSr(xR3|v$%^~hkd1>FPOb89r6oK`APKD%IrIG^z3O0Xelz_~@3rL;md+ou>hx)QQ} zxS24L`)d_#Z)!DUmD&}Z@#TbO^y^Akh_9XUo3B!i8MH~$->bn1kqsK>nB*)ROQ3DK z-oDWx&eL)32UdMC?OOv<-*=`Wq_vD=ibaZW-|EHZ-J8X=RtHk$S=vV5OrYW_wc-nH z3yyd5hx=$_X8l8mO`!MzNG+Tac293_mr8spf}b508+{Tg7;)3 zY=6!IiXCN#^hj6tzt6NWQKZ^VT|1X=P52ktxwB`S3ZQad zltCIYT_`=HCUL?-nNk|xW+)*((XR@bx;7`F{wSA8jerlNGuXRmVV#+F`n~YvEo+#Y zvT8huMtlHLRs(>m77vF;Zk(V`Q1?8-M_bcM0Kjm5^Z|zg&B=B>N^+$rY5{{>cw^0L zBMr6;ZV+8^St$i?Q1Xnwwh&}54+a>J%G z^KCG$631HM+hC>H*jTHf#a+X%E$B%OblKNUC}B?1N5NSIbAv%4XJ%nAdXU>j7`HG0 z@U7s*5f;lw^xQiJ0I;V#*STjXaw9_dU)+V4{bo%4UGvV3KFDD$xB;EY@(_G-8CD*! zX3&UE=qqd1cY9FLMrE8a+f($t@q6==4sk_M>hLNjcX(3BCd?ffq3BI8^(D9S^ERQ} z&~U+- zzIg=**%+{O&YouRuA2cTm8U5s?NFk8BfAJh7FYV{r*HI0HX%BU7Pj)r;y3Diw`pSl zTI5_l>q5qz$_KdEl)n?i_NSPSFk&Dr{7AXW+e`JhgI+w}XdeEhNZ8cA<5JYOuGKzu z5mmw2zLWnk6~6Phho0xo2_51>`(1G1b{@>% zX2Pr`U4QiX4(&ETo4RwTZph+JuA^s6=4M?%O6iWXrJXMNQEaZ_)Wi?h&zT`J&!sqz roEZH{$324Pmww6LnX81H$e%UEGH56@oMIWcu%gg1zoM{ie(V1SCIscK diff --git a/package.json b/package.json index f2723063..81b515cf 100644 --- a/package.json +++ b/package.json @@ -69,6 +69,7 @@ "next": "^13.5.4-canary.8", "next-dev": "^1.1.9", "next-scroll-loader": "^1.0.9", + "p-limit": "^6.2.0", "pdfjs-dist": "^4.6.82", "postcss": "8.4.27", "prisma": "^5.19.1", diff --git a/prisma/schema.prisma b/prisma/schema.prisma index 52a8f591..1649a16f 100644 --- a/prisma/schema.prisma +++ b/prisma/schema.prisma @@ -972,8 +972,8 @@ model EventSponsor { fileExt String? fileId String - Author User? @relation(fields: [auhtorId], references: [id]) - auhtorId String? + Author User? @relation(fields: [authorId], references: [id]) + authorId String? Event Event? @relation(fields: [eventId], references: [id]) eventId String? diff --git a/src/app/api/event/sponsor/[id]/route.ts b/src/app/api/event/sponsor/[id]/route.ts index 663a55cf..3e28bde9 100644 --- a/src/app/api/event/sponsor/[id]/route.ts +++ b/src/app/api/event/sponsor/[id]/route.ts @@ -1,6 +1,7 @@ import { prisma } from "@/app/lib"; import { funGetUserIdByToken } from "@/app_modules/_global/fun/get"; import { IEventSponsor } from "@/app_modules/event/_lib/interface"; +import backendLogger from "@/util/backendLogger"; import { NextResponse } from "next/server"; export async function POST( @@ -36,18 +37,70 @@ export async function POST( fileName: req.fileName as string, fileExt: req.fileExt as string, fileId: req.fileId as string, - auhtorId: userLoginId, + authorId: userLoginId, }, }); + await prisma.$disconnect(); return NextResponse.json({ success: true, message: "Success create sponsor", }); } catch (error) { + await prisma.$disconnect(); + backendLogger.error("Error create sponsor event", error); return NextResponse.json( { success: false, message: "Failed create sponsor" }, { status: 500 } ); } } + +export async function GET( + request: Request, + context: { params: { id: string } } +) { + const method = request.method; + if (method !== "GET") { + return NextResponse.json( + { success: false, message: "Method not allowed" }, + { status: 405 } + ); + } + + try { + let fixData; + const { id } = context.params; + + fixData = await prisma.eventSponsor.findUnique({ + where: { + id: id, + }, + include: { + Author: { + include: { + Profile: true, + }, + }, + }, + }); + + await prisma.$disconnect(); + return NextResponse.json({ + success: true, + message: "Success create sponsor", + data: fixData, + }); + } catch (error) { + backendLogger.error("Error get sponsor event", error); + await prisma.$disconnect(); + return NextResponse.json( + { + success: false, + message: "Failed create sponsor", + reason: (error as Error).message, + }, + { status: 500 } + ); + } +} diff --git a/src/app/api/event/sponsor/list/[id]/route.ts b/src/app/api/event/sponsor/list/[id]/route.ts new file mode 100644 index 00000000..cedfdf28 --- /dev/null +++ b/src/app/api/event/sponsor/list/[id]/route.ts @@ -0,0 +1,79 @@ +import { prisma } from "@/app/lib"; +import backendLogger from "@/util/backendLogger"; +import { NextResponse } from "next/server"; + +export async function GET( + request: Request, + context: { params: { id: string } } +) { + const method = request.method; + if (method !== "GET") { + return NextResponse.json( + { success: false, message: "Method not allowed" }, + { status: 405 } + ); + } + + try { + let fixData; + const { id } = context.params; + const { searchParams } = new URL(request.url); + const page = searchParams.get("page"); + const takeData = 10; + const skipData = Number(page) * takeData - takeData; + + if (!page) { + fixData = await prisma.eventSponsor.findMany({ + orderBy: { + createdAt: "desc", + }, + where: { + eventId: id, + }, + include: { + Author: { + include: { + Profile: true, + }, + }, + }, + }); + } else { + fixData = await prisma.eventSponsor.findMany({ + take: takeData, + skip: skipData, + orderBy: { + createdAt: "desc", + }, + where: { + eventId: id, + }, + include: { + Author: { + include: { + Profile: true, + }, + }, + }, + }); + } + + await prisma.$disconnect(); + return NextResponse.json({ + success: true, + message: "Success create sponsor", + data: fixData, + }); + } catch (error) { + backendLogger.error("Error get sponsor event", error); + await prisma.$disconnect(); + return NextResponse.json( + { + success: false, + message: "Failed create sponsor", + reason: (error as Error).message, + }, + { status: 500 } + ); + } +} diff --git a/src/app/dev/event/detail/detail_sponsor/[id]/layout.tsx b/src/app/dev/event/detail/detail_sponsor/[id]/layout.tsx index 6b363920..5869b245 100644 --- a/src/app/dev/event/detail/detail_sponsor/[id]/layout.tsx +++ b/src/app/dev/event/detail/detail_sponsor/[id]/layout.tsx @@ -1,10 +1,14 @@ +import { funGetUserIdByToken } from '@/app_modules/_global/fun/get'; import LayoutEvent_DetailSponsor from '@/app_modules/event/detail/detail_sponsor/layout'; import React from 'react'; -function Layout({children} : {children: React.ReactNode}) { +async function Layout({children} : {children: React.ReactNode}) { + const userLoginId = await funGetUserIdByToken() return ( <> - {children} + + {children} + ); } diff --git a/src/app/dev/event/detail/detail_sponsor/[id]/page.tsx b/src/app/dev/event/detail/detail_sponsor/[id]/page.tsx index 1762e49e..c0e9cdde 100644 --- a/src/app/dev/event/detail/detail_sponsor/[id]/page.tsx +++ b/src/app/dev/event/detail/detail_sponsor/[id]/page.tsx @@ -1,10 +1,12 @@ +import { funGetUserIdByToken } from '@/app_modules/_global/fun/get'; import DetailSponsor_Event from '@/app_modules/event/detail/detail_sponsor'; import React from 'react'; -function Page() { +async function Page() { + const userLoginId = await funGetUserIdByToken(); return ( <> - + ); } diff --git a/src/app_modules/_global/fun/generete_seeder.back.txt b/src/app_modules/_global/fun/generete_seeder.back.txt new file mode 100644 index 00000000..52a39d86 --- /dev/null +++ b/src/app_modules/_global/fun/generete_seeder.back.txt @@ -0,0 +1,465 @@ +import prisma from "@/app/lib/prisma"; +import bidangBisnis from "../../../bin/seeder/bidang_bisnis.json"; +import collaboration_industri from "../../../bin/seeder/colab/master_industri.json"; +import collaboration_status from "../../../bin/seeder/colab/master_status.json"; +import donasi_namaBank from "../../../bin/seeder/donasi/master_bank.json"; +import donasi_durasi from "../../../bin/seeder/donasi/master_durasi.json"; +import donasi_kategori from "../../../bin/seeder/donasi/master_kategori.json"; +import donasi_status from "../../../bin/seeder/donasi/master_status.json"; +import donasi_status_invoice from "../../../bin/seeder/donasi/master_status_invoice.json"; +import event_status from "../../../bin/seeder/event/master_status.json"; +import event_tipe_acara from "../../../bin/seeder/event/master_tipe_acara.json"; +import forum_kategori_report from "../../../bin/seeder/forum/master_report.json"; +import forum_status_posting from "../../../bin/seeder/forum/master_status.json"; +import jenisProgres from "../../../bin/seeder/investasi/master_progres.json"; +import pembagianDeviden from "../../../bin/seeder/investasi/pembagian_deviden.json"; +import pencarianInvestor from "../../../bin/seeder/investasi/pencarian_investor.json"; +import periodeDeviden from "../../../bin/seeder/investasi/periode_deviden.json"; +import statusInvestasi from "../../../bin/seeder/investasi/status_investasi.json"; +import statusTransaksiInvestasi from "../../../bin/seeder/investasi/status_transaksi_investasi.json"; +import master_status from "../../../bin/seeder/master_status.json"; +import nomor_admin from "../../../bin/seeder/nomor_admin.json"; +import userRole from "../../../bin/seeder/user_role.json"; +import userSeeder from "../../../bin/seeder/user_seeder.json"; +import voting_status from "../../../bin/seeder/voting/master_status.json"; +import { master_kategori_app } from "@/bin/seeder/master"; +import { new_status_transaksi_investasi } from "@/bin/seeder/investasi"; +import { master_nama_bank } from "@/bin/seeder/master"; +import pLimit from "p-limit"; + +// PAKEK p-limit + +async function masterUserRole() { + for (let i of userRole) { + await prisma.masterUserRole.upsert({ + where: { + id: i.id.toString(), + }, + update: { + id: i.id.toString(), + name: i.name, + }, + create: { + id: i.id.toString(), + name: i.name, + }, + }); + } + await new Promise((resolve) => setTimeout(resolve, 10000)); + console.log("masterUserRole success"); +} + +async function user() { + for (let i of userSeeder) { + await prisma.user.upsert({ + where: { + nomor: i.nomor, + }, + create: { + nomor: i.nomor, + username: i.name, + masterUserRoleId: i.masterUserRoleId, + active: i.active, + }, + update: { + nomor: i.nomor, + username: i.name, + masterUserRoleId: i.masterUserRoleId, + active: i.active, + }, + }); + } + console.log("user success"); +} + +const listAntrean = [masterUserRole, user]; +const limit = pLimit(1); + +(async () => { + console.log("start generate seeder"); + await Promise.all(listAntrean.map((fn) => limit(fn))); + console.log("success generate seeder"); +})(); + +export async function generate_seeder() { + for (let i of bidangBisnis) { + await prisma.masterBidangBisnis.upsert({ + where: { + id: i.id.toString(), + }, + update: { + id: i.id.toString(), + name: i.name, + }, + create: { + id: i.id.toString(), + name: i.name, + }, + }); + } + + for (let i of pencarianInvestor) { + await prisma.masterPencarianInvestor.upsert({ + where: { + id: i.id.toString(), + }, + update: { + id: i.id.toString(), + name: i.name, + }, + create: { + id: i.id.toString(), + name: i.name, + }, + }); + } + + for (let i of pembagianDeviden) { + await prisma.masterPembagianDeviden.upsert({ + where: { + id: i.id.toString(), + }, + update: { + id: i.id.toString(), + name: i.name, + }, + create: { + id: i.id.toString(), + name: i.name, + }, + }); + } + + for (let i of periodeDeviden) { + await prisma.masterPeriodeDeviden.upsert({ + where: { + id: i.id.toString(), + }, + update: { + id: i.id.toString(), + name: i.name, + }, + create: { + id: i.id.toString(), + name: i.name, + }, + }); + } + + for (let i of statusInvestasi) { + await prisma.masterStatusInvestasi.upsert({ + where: { + id: i.id, + }, + create: { + id: i.id, + name: i.name, + color: i.color, + }, + update: { + id: i.id, + name: i.name, + color: i.color, + }, + }); + } + + for (let i of master_nama_bank) { + await prisma.masterBank.upsert({ + where: { + id: i.id.toString(), + }, + create: { + id: i.id.toString(), + namaBank: i.namaBank, + namaAkun: i.namaAkun, + norek: i.norek.toString(), + }, + update: { + id: i.id.toString(), + namaBank: i.namaBank, + namaAkun: i.namaAkun, + norek: i.norek.toString(), + }, + }); + } + + for (let i of statusTransaksiInvestasi) { + await prisma.masterStatusTransaksiInvestasi.upsert({ + where: { + id: i.id, + }, + create: { + id: i.id, + name: i.name, + color: i.color, + }, + update: { + id: i.id, + name: i.name, + color: i.color, + }, + }); + } + + for (let i of jenisProgres) { + await prisma.masterProgresInvestasi.upsert({ + where: { + id: i.id, + }, + create: { + id: i.id, + name: i.name, + }, + update: { + name: i.name, + }, + }); + } + + for (let d of donasi_status) { + await prisma.donasiMaster_StatusDonasi.upsert({ + where: { + id: d.id, + }, + create: { + id: d.id, + name: d.name, + }, + update: { + name: d.name, + }, + }); + } + + for (let d of donasi_kategori) { + await prisma.donasiMaster_Kategori.upsert({ + where: { + id: d.id, + }, + create: { + id: d.id, + name: d.name, + }, + update: { + name: d.name, + }, + }); + } + + for (let d of donasi_durasi) { + await prisma.donasiMaster_Durasi.upsert({ + where: { + id: d.id, + }, + create: { + id: d.id, + name: d.name, + }, + update: { + name: d.name, + }, + }); + } + + for (let i of donasi_namaBank) { + await prisma.donasiMaster_Bank.upsert({ + where: { + id: i.id, + }, + create: { + id: i.id, + name: i.name, + norek: i.norek, + }, + update: { + id: i.id, + name: i.name, + norek: i.norek, + }, + }); + } + + for (let d of donasi_status_invoice) { + await prisma.donasiMaster_StatusInvoice.upsert({ + where: { + id: d.id, + }, + create: { + id: d.id, + name: d.name, + }, + update: { + name: d.name, + }, + }); + } + + for (let e of event_status) { + await prisma.eventMaster_Status.upsert({ + where: { + id: e.id, + }, + create: { + id: e.id, + name: e.name, + }, + update: { + name: e.name, + }, + }); + } + + for (let e of event_tipe_acara) { + await prisma.eventMaster_TipeAcara.upsert({ + where: { + id: e.id, + }, + create: { + id: e.id, + name: e.name, + }, + update: { + name: e.name, + }, + }); + } + + for (let v of voting_status) { + await prisma.voting_Status.upsert({ + where: { + id: v.id, + }, + create: { + id: v.id, + name: v.name, + }, + update: { + name: v.name, + }, + }); + } + + for (let m of master_status) { + await prisma.masterStatus.upsert({ + where: { + id: m.id, + }, + create: { + id: m.id, + name: m.name, + }, + update: { + name: m.name, + }, + }); + } + + for (let m of forum_kategori_report) { + await prisma.forumMaster_KategoriReport.upsert({ + where: { + id: m.id as number, + }, + create: { + title: m.title, + deskripsi: m.deskripsi, + }, + update: { + title: m.title, + deskripsi: m.deskripsi, + }, + }); + } + + for (let s of forum_status_posting) { + await prisma.forumMaster_StatusPosting.upsert({ + where: { + id: s.id, + }, + create: { + status: s.status, + }, + update: { + status: s.status, + }, + }); + } + + for (let p of collaboration_industri) { + await prisma.projectCollaborationMaster_Industri.upsert({ + where: { + id: p.id, + }, + create: { + name: p.name, + }, + update: { + name: p.name, + }, + }); + } + + for (let p of collaboration_status) { + await prisma.projectCollaborationMaster_Status.upsert({ + where: { + id: p.id, + }, + create: { + name: p.name, + }, + update: { + name: p.name, + }, + }); + } + + for (let a of nomor_admin) { + await prisma.nomorAdmin.upsert({ + where: { + id: a.id, + }, + create: { + id: a.id, + nomor: a.nomor, + }, + update: { + id: a.id, + nomor: a.nomor, + }, + }); + } + + for (let a of master_kategori_app) { + await prisma.masterKategoriApp.upsert({ + where: { + id: a.id, + }, + create: { + id: a.id, + name: a.name, + }, + update: { + id: a.id, + name: a.name, + }, + }); + } + + for (let a of new_status_transaksi_investasi) { + await prisma.investasiMaster_StatusInvoice.upsert({ + where: { + id: a.id, + }, + create: { + id: a.id, + name: a.name, + }, + update: { + id: a.id, + name: a.name, + }, + }); + } + + return { status: 200, success: true }; +} diff --git a/src/app_modules/event/_lib/api_event.ts b/src/app_modules/event/_lib/api_event.ts index c84bc654..a3c4ff10 100644 --- a/src/app_modules/event/_lib/api_event.ts +++ b/src/app_modules/event/_lib/api_event.ts @@ -88,3 +88,43 @@ export const apiGetEventCreateSponsor = async ({ return await response.json().catch(() => null); }; + +export const apiGetEventSponsorListById = async ({ + id, + page, +}: { + id: string; + page: string; +}) => { + const { token } = await fetch("/api/get-cookie").then((res) => res.json()); + if (!token) return await token.json().catch(() => null); + + const isPage = page ? `?page=${page}` : ""; + + const response = await fetch(`/api/event/sponsor/list/${id}${isPage}`, { + headers: { + "Content-Type": "application/json", + Accept: "application/json", + "Access-Control-Allow-Origin": "*", + Authorization: `Bearer ${token}`, + }, + }); + + return await response.json().catch(() => null); +}; + +export const apiGetOneSponsorEventById = async ({ id }: { id: string }) => { + const { token } = await fetch("/api/get-cookie").then((res) => res.json()); + if (!token) return await token.json().catch(() => null); + + const response = await fetch(`/api/event/sponsor/${id}`, { + headers: { + "Content-Type": "application/json", + Accept: "application/json", + "Access-Control-Allow-Origin": "*", + Authorization: `Bearer ${token}`, + }, + }); + + return await response.json().catch(() => null); +}; diff --git a/src/app_modules/event/_lib/interface.ts b/src/app_modules/event/_lib/interface.ts index e669391e..6392a6bf 100644 --- a/src/app_modules/event/_lib/interface.ts +++ b/src/app_modules/event/_lib/interface.ts @@ -40,6 +40,7 @@ export interface IEventSponsor { createdAt?: Date; updatedAt?: Date; name?: string; + isTransfer?: boolean; fileName?: string; fileExt?: string; fileId?: string; diff --git a/src/app_modules/event/component/detail/list_sponsor.tsx b/src/app_modules/event/component/detail/list_sponsor.tsx index f16a4902..b5bc4112 100644 --- a/src/app_modules/event/component/detail/list_sponsor.tsx +++ b/src/app_modules/event/component/detail/list_sponsor.tsx @@ -1,51 +1,99 @@ -'use client' -import { RouterEvent } from '@/app/lib/router_hipmi/router_event'; -import { AccentColor, MainColor } from '@/app_modules/_global/color'; -import { Avatar, Box, Card, Flex, Group, Image, Text } from '@mantine/core'; -import { useParams, useRouter } from 'next/navigation'; +"use client"; +import { RouterEvent } from "@/app/lib/router_hipmi/router_event"; +import { + ComponentGlobal_AvatarAndUsername, + ComponentGlobal_CardLoadingOverlay, + ComponentGlobal_CardStyles, +} from "@/app_modules/_global/component"; +import { + Box, + Divider, + Grid, + Stack, + Title +} from "@mantine/core"; +import { useRouter } from "next/navigation"; +import { useState } from "react"; -function ComponentEvent_ListSponsor({ backgroundColor, border, marginBottom, height, color, }: - { - backgroundColor?: string; - border?: string; - marginBottom?: string | number; - height?: string | number; - color?: string; - }) - { - const router = useRouter(); - const params = useParams<{ id: string }>(); - return ( - <> - - router.push(RouterEvent.detail_sponsor({id: params.id}))} - > - - - - - - INACO - - Rp. 100.000 - - - - - ); +function ComponentEvent_ListSponsor({ + backgroundColor, + border, + marginBottom, + height, + color, + profile, + data, +}: { + backgroundColor?: string; + border?: string; + marginBottom?: string | number; + height?: string | number; + color?: string; + profile: any; + data: any; +}) { + const router = useRouter(); + const [visible, setVisible] = useState(false); + + return ( + <> + + + + + + + + + + { + router.push(RouterEvent.detail_sponsor({ id: data.id })); + setVisible(true); + }} + > + + {data?.name} + + + + {visible && } + + {/* + + router.push(RouterEvent.detail_sponsor({ id: params.id })) + } + > + + + + + + INACO + + Rp. 100.000 + + + */} + + ); } export default ComponentEvent_ListSponsor; diff --git a/src/app_modules/event/detail/detail_sponsor/index.tsx b/src/app_modules/event/detail/detail_sponsor/index.tsx index a78d6fa6..756a5258 100644 --- a/src/app_modules/event/detail/detail_sponsor/index.tsx +++ b/src/app_modules/event/detail/detail_sponsor/index.tsx @@ -1,16 +1,69 @@ -'use client'; -import { AccentColor, MainColor } from '@/app_modules/_global/color'; -import { ComponentGlobal_CardStyles } from '@/app_modules/_global/component'; -import { Box, Flex, Image, Stack, Text, Title } from '@mantine/core'; -import { IconBrandWhatsapp } from '@tabler/icons-react'; -import React from 'react'; -import { TfiFacebook } from 'react-icons/tfi'; +"use client"; +import { AccentColor, MainColor } from "@/app_modules/_global/color"; +import { + ComponentGlobal_AvatarAndUsername, + ComponentGlobal_CardStyles, +} from "@/app_modules/_global/component"; +import { + Box, + Button, + Center, + Divider, + Flex, + Grid, + Image, + SimpleGrid, + Stack, + Text, + Title, +} from "@mantine/core"; +import { useShallowEffect } from "@mantine/hooks"; +import { IconBrandWhatsapp } from "@tabler/icons-react"; +import React, { useState } from "react"; +import { TfiFacebook } from "react-icons/tfi"; +import { apiGetOneSponsorEventById } from "../../_lib/api_event"; +import { useParams, useRouter } from "next/navigation"; +import { clientLogger } from "@/util/clientLogger"; +import CustomSkeleton from "@/app_modules/components/CustomSkeleton"; +import { IEventSponsor } from "../../_lib/interface"; +import { RouterEvent } from "@/app/lib/router_hipmi/router_event"; + +function DetailSponsor_Event({ userLoginId }: { userLoginId: string }) { + const params = useParams<{ id: string }>(); + const router = useRouter(); + const [data, setData] = useState(null); + const [isLoadingTransfer, setIsLoadingTransfer] = useState(false); + + useShallowEffect(() => { + onLoadData(); + }, []); + + async function onLoadData() { + try { + const respone = await apiGetOneSponsorEventById({ + id: params.id, + }); + + if (respone) { + setData(respone.data); + } + } catch (error) { + clientLogger.error("Error get data sponsor", error); + } + } + + if (!data) { + return ( + <> + + + ); + } -function DetailSponsor_Event() { return ( <> - - + {/* Rp. 100.000 - - + */} + + {/* - - + + INACO Sosial Media: - + InacoJellyku - + +6289647038426 + */} + + + + + + + + + + Nama Sponsor + + : + {data.name} + + + + + Nominal + + : + Rp. {data.isTransfer ? 0 : "-"} + + + {userLoginId == data.authorId && ( + + + + + )} + diff --git a/src/app_modules/event/detail/detail_sponsor/layout.tsx b/src/app_modules/event/detail/detail_sponsor/layout.tsx index 627b2c44..e2677de7 100644 --- a/src/app_modules/event/detail/detail_sponsor/layout.tsx +++ b/src/app_modules/event/detail/detail_sponsor/layout.tsx @@ -1,21 +1,83 @@ -'use client'; -import { AccentColor, MainColor } from '@/app_modules/_global/color'; -import { UIGlobal_DrawerCustom, UIGlobal_LayoutHeaderTamplate, UIGlobal_LayoutTamplate, UIGlobal_Modal } from '@/app_modules/_global/ui'; -import { ActionIcon, Box, Button, Center, Flex, Stack, Text } from '@mantine/core'; -import { IconDotsVertical, IconEdit, IconTrash } from '@tabler/icons-react'; -import React, { useState } from 'react'; +"use client"; -function LayoutEvent_DetailSponsor({ children }: { children: React.ReactNode }) { +import { AccentColor, MainColor } from "@/app_modules/_global/color"; +import { + UIGlobal_DrawerCustom, + UIGlobal_LayoutHeaderTamplate, + UIGlobal_LayoutTamplate, + UIGlobal_Modal, +} from "@/app_modules/_global/ui"; +import { + ActionIcon, + Box, + Button, + Center, + Flex, + Stack, + Text, +} from "@mantine/core"; +import { useShallowEffect } from "@mantine/hooks"; +import { IconDotsVertical, IconEdit, IconTrash } from "@tabler/icons-react"; +import React, { useState } from "react"; +import { apiGetOneSponsorEventById } from "../../_lib/api_event"; +import { useParams } from "next/navigation"; +import { clientLogger } from "@/util/clientLogger"; +import CustomSkeleton from "@/app_modules/components/CustomSkeleton"; + +function LayoutEvent_DetailSponsor({ + children, + userLoginId, +}: { + children: React.ReactNode; + userLoginId: string; +}) { + const params = useParams<{ id: string }>(); + const [authorId, setAuthorId] = useState(null); const [openDrawer, setOpenDrawer] = useState(false); const [openModal, setOpenModal] = useState(false); const [isLoading, setLoading] = useState(false); + + useShallowEffect(() => { + onLoadData(); + }, []); + + async function onLoadData() { + try { + const respone = await apiGetOneSponsorEventById({ + id: params.id, + }); + + if (respone) { + setAuthorId(respone.data.authorId); + } + } catch (error) { + clientLogger.error("Error get data sponsor", error); + } + } + return ( <> - setOpenDrawer(true)}> - - } />}> + + ) : authorId == userLoginId ? ( + setOpenDrawer(true)} + > + + + ) : ( + "" + ) + } + /> + } + > {children} - + - Edit @@ -44,7 +102,6 @@ function LayoutEvent_DetailSponsor({ children }: { children: React.ReactNode }) onClick={() => setOpenModal(true)} > - @@ -60,7 +117,12 @@ function LayoutEvent_DetailSponsor({ children }: { children: React.ReactNode }) opened={openModal} close={() => setOpenModal(false)} buttonKiri={ - } @@ -71,7 +133,6 @@ function LayoutEvent_DetailSponsor({ children }: { children: React.ReactNode }) loading={isLoading ? true : false} radius={"xl"} c={AccentColor.white} - > Hapus diff --git a/src/app_modules/event/detail/sponsor/index.tsx b/src/app_modules/event/detail/sponsor/index.tsx index 07dc3767..e2c6037c 100644 --- a/src/app_modules/event/detail/sponsor/index.tsx +++ b/src/app_modules/event/detail/sponsor/index.tsx @@ -1,10 +1,97 @@ -'use client'; -import ComponentEvent_ListSponsor from '../../component/detail/list_sponsor'; +"use client"; +import { useParams } from "next/navigation"; +import ComponentEvent_ListSponsor from "../../component/detail/list_sponsor"; +import { useShallowEffect } from "@mantine/hooks"; +import { apiGetEventSponsorListById } from "../../_lib/api_event"; +import { IEventSponsor, MODEL_EVENT } from "../../_lib/interface"; +import { Component, useState } from "react"; +import { clientLogger } from "@/util/clientLogger"; +import CustomSkeleton from "@/app_modules/components/CustomSkeleton"; +import { ScrollOnly } from "next-scroll-loader"; +import ComponentGlobal_Loader from "@/app_modules/_global/component/loader"; +import { ComponentDonasi_CardInvoice } from "@/app_modules/donasi/component/card_view/card_invoice"; +import { donasi_funGetAllInvoiceByAuthorId } from "@/app_modules/donasi/fun/get/get_all_invoice_by_author_id"; +import { Box, Center, Stack } from "@mantine/core"; +import _ from "lodash"; +import ComponentGlobal_IsEmptyData from "@/app_modules/_global/component/is_empty_data"; function Event_DaftarSponsor() { + const params = useParams<{ id: string }>(); + const eventId = params.id; + const [data, setData] = useState(null); + const [activePage, setActivePage] = useState(1); + + useShallowEffect(() => { + onLoadData(); + }, []); + + async function onLoadData() { + try { + const respone = await apiGetEventSponsorListById({ + id: eventId, + page: `${activePage}`, + }); + + if (respone) { + setData(respone.data); + } + } catch (error) { + clientLogger.error("Error get data sponsor", error); + } + } + + if (!data) { + return ( + <> + + ; + ; + + + ); + } + return ( <> - + {/* */} + + {_.isEmpty(data) ? ( + + ) : ( + ( +
+ +
+ )} + data={data} + setData={setData as any} + moreData={async () => { + try { + const respone = await apiGetEventSponsorListById({ + id: eventId, + page: `${activePage + 1}`, + }); + + if (respone) { + setActivePage((val) => val + 1); + return respone.data; + } + } catch (error) { + clientLogger.error("Error get data sponsor", error); + } + }} + > + {(item) => ( + + )} +
+ )} +
); } diff --git a/src/app_modules/event/detail/sponsor/layout.tsx b/src/app_modules/event/detail/sponsor/layout.tsx index ea61e6e4..6bf0db94 100644 --- a/src/app_modules/event/detail/sponsor/layout.tsx +++ b/src/app_modules/event/detail/sponsor/layout.tsx @@ -5,16 +5,43 @@ import { UIGlobal_LayoutHeaderTamplate, UIGlobal_LayoutTamplate, } from "@/app_modules/_global/ui"; +import { clientLogger } from "@/util/clientLogger"; import { ActionIcon } from "@mantine/core"; -import { IconDotsVertical } from "@tabler/icons-react"; +import { useShallowEffect } from "@mantine/hooks"; +import { IconCirclePlus, IconDotsVertical } from "@tabler/icons-react"; import { useParams } from "next/navigation"; import React, { useState } from "react"; -import { TfiCup } from "react-icons/tfi"; +import { apiGetEventDetailById } from "../../_lib/api_event"; +import { MODEL_EVENT } from "../../_lib/interface"; +import moment from "moment"; +import CustomSkeleton from "@/app_modules/components/CustomSkeleton"; function LayoutEvent_Sponsor({ children }: { children: React.ReactNode }) { const params = useParams<{ id: string }>(); - + const eventId = params.id as string; + const [data, setData] = useState(null); const [openDrawer, setOpenDrawer] = useState(false); + + useShallowEffect(() => { + onLoadData(); + }, []); + + async function onLoadData() { + try { + const respone = await apiGetEventDetailById({ + id: eventId, + }); + + if (respone) { + setData(respone.data); + } + } catch (error) { + clientLogger.error("Error get data detail event", error); + } + } + + const isExpired = moment(data?.tanggalSelesai).diff(moment(), "minutes") < 0; + return ( <> setOpenDrawer(true)} - > - - + !data ? ( + + ) : !isExpired ? ( + setOpenDrawer(true)} + > + + + ) : ( + "" + ) } /> } @@ -41,7 +74,7 @@ function LayoutEvent_Sponsor({ children }: { children: React.ReactNode }) { { id: 1, name: "Tambah Sponsor", - icon: , + icon: , path: RouterEvent.tambah_sponsor({ id: params.id }), }, ]} From 56b031aa9a9d0b527b40ebc36a8b47811ef0281c Mon Sep 17 00:00:00 2001 From: Bagasbanuna02 Date: Tue, 28 Jan 2025 11:50:02 +0800 Subject: [PATCH 3/3] fix seeder deskripsi: - fix seeder dengan limit --- prisma/seed.ts | 6 +- .../_global/fun/generate_seeder.ts | 142 +++++++++++++++++- .../home/component/list_menu_home.tsx | 2 +- 3 files changed, 144 insertions(+), 6 deletions(-) diff --git a/prisma/seed.ts b/prisma/seed.ts index b4eb2917..a6785401 100644 --- a/prisma/seed.ts +++ b/prisma/seed.ts @@ -2,15 +2,15 @@ import prisma from "./../src/app/lib/prisma"; import { generate_seeder } from "./../src/app_modules/_global/fun/generate_seeder"; (async () => { - console.log("start"); + console.log("start seeder >>"); await generate_seeder(); })() .then(() => { - console.log("success"); + console.log("<< success seeder"); process.exit(0); }) .catch((e) => { - console.error(e); + console.error("<< error seeder", e); process.exit(1); }) .finally(async () => { diff --git a/src/app_modules/_global/fun/generate_seeder.ts b/src/app_modules/_global/fun/generate_seeder.ts index 988da404..3704edf4 100644 --- a/src/app_modules/_global/fun/generate_seeder.ts +++ b/src/app_modules/_global/fun/generate_seeder.ts @@ -25,8 +25,9 @@ import voting_status from "../../../bin/seeder/voting/master_status.json"; import { master_kategori_app } from "@/bin/seeder/master"; import { new_status_transaksi_investasi } from "@/bin/seeder/investasi"; import { master_nama_bank } from "@/bin/seeder/master"; +import pLimit from "p-limit"; -export async function generate_seeder() { +async function masterUserRole() { for (let i of userRole) { await prisma.masterUserRole.upsert({ where: { @@ -42,7 +43,10 @@ export async function generate_seeder() { }, }); } + console.log("masterUserRole success"); +} +async function seederUser() { for (let i of userSeeder) { await prisma.user.upsert({ where: { @@ -62,7 +66,10 @@ export async function generate_seeder() { }, }); } + console.log("user seeder success"); +} +async function masterBisnis() { for (let i of bidangBisnis) { await prisma.masterBidangBisnis.upsert({ where: { @@ -78,7 +85,10 @@ export async function generate_seeder() { }, }); } + console.log("masterBisnis success"); +} +async function masterPencarianInvestor() { for (let i of pencarianInvestor) { await prisma.masterPencarianInvestor.upsert({ where: { @@ -95,6 +105,10 @@ export async function generate_seeder() { }); } + console.log("masterPencarianInvestor success"); +} + +async function masterPembagianDeviden() { for (let i of pembagianDeviden) { await prisma.masterPembagianDeviden.upsert({ where: { @@ -111,6 +125,10 @@ export async function generate_seeder() { }); } + console.log("masterPembagianDeviden success"); +} + +async function masterPeriodeDeviden() { for (let i of periodeDeviden) { await prisma.masterPeriodeDeviden.upsert({ where: { @@ -127,6 +145,10 @@ export async function generate_seeder() { }); } + console.log("masterPeriodeDeviden success"); +} + +async function masterStatusInvestasi() { for (let i of statusInvestasi) { await prisma.masterStatusInvestasi.upsert({ where: { @@ -145,6 +167,10 @@ export async function generate_seeder() { }); } + console.log("masterStatusInvestasi success"); +} + +async function masterNamaBank() { for (let i of master_nama_bank) { await prisma.masterBank.upsert({ where: { @@ -164,7 +190,11 @@ export async function generate_seeder() { }, }); } - + + console.log("masterNamaBank success"); +} + +async function masterStatusTransaksiInvestasi() { for (let i of statusTransaksiInvestasi) { await prisma.masterStatusTransaksiInvestasi.upsert({ where: { @@ -183,6 +213,10 @@ export async function generate_seeder() { }); } + console.log("masterStatusTransaksiInvestasi success"); +} + +async function masterProgressInvestasi() { for (let i of jenisProgres) { await prisma.masterProgresInvestasi.upsert({ where: { @@ -198,6 +232,10 @@ export async function generate_seeder() { }); } + console.log("masterProgressInvestasi success"); +} + +async function masterStatusDonasi() { for (let d of donasi_status) { await prisma.donasiMaster_StatusDonasi.upsert({ where: { @@ -213,6 +251,10 @@ export async function generate_seeder() { }); } + console.log("masterStatusDonasi success"); +} + +async function masterKategoriDonasi() { for (let d of donasi_kategori) { await prisma.donasiMaster_Kategori.upsert({ where: { @@ -228,6 +270,10 @@ export async function generate_seeder() { }); } + console.log("masterKategoriDonasi success"); +} + +async function masterDurasiDonasi() { for (let d of donasi_durasi) { await prisma.donasiMaster_Durasi.upsert({ where: { @@ -243,6 +289,10 @@ export async function generate_seeder() { }); } + console.log("masterDurasiDonasi success"); +} + +async function masterDonasiNamaBank() { for (let i of donasi_namaBank) { await prisma.donasiMaster_Bank.upsert({ where: { @@ -261,6 +311,10 @@ export async function generate_seeder() { }); } + console.log("masterDonasiBank success"); +} + +async function masterDonasiStatusInvoice() { for (let d of donasi_status_invoice) { await prisma.donasiMaster_StatusInvoice.upsert({ where: { @@ -276,6 +330,10 @@ export async function generate_seeder() { }); } + console.log("masterDonasiStatusInvoice success"); +} + +async function masterEventStatus() { for (let e of event_status) { await prisma.eventMaster_Status.upsert({ where: { @@ -291,6 +349,10 @@ export async function generate_seeder() { }); } + console.log("masterEventStatus success"); +} + +async function masterEventTipeAcara() { for (let e of event_tipe_acara) { await prisma.eventMaster_TipeAcara.upsert({ where: { @@ -306,6 +368,10 @@ export async function generate_seeder() { }); } + console.log("masterEventTipeAcara success"); +} + +async function masterVotingStatus() { for (let v of voting_status) { await prisma.voting_Status.upsert({ where: { @@ -321,6 +387,10 @@ export async function generate_seeder() { }); } + console.log("masterVotingStatus success"); +} + +async function masterStatusProses() { for (let m of master_status) { await prisma.masterStatus.upsert({ where: { @@ -336,6 +406,10 @@ export async function generate_seeder() { }); } + console.log("masterStatusProses success"); +} + +async function masterForumKategoriReport() { for (let m of forum_kategori_report) { await prisma.forumMaster_KategoriReport.upsert({ where: { @@ -352,6 +426,10 @@ export async function generate_seeder() { }); } + console.log("masterForumKategoriReport success"); +} + +async function masterForumStatusPosting() { for (let s of forum_status_posting) { await prisma.forumMaster_StatusPosting.upsert({ where: { @@ -366,6 +444,10 @@ export async function generate_seeder() { }); } + console.log("masterForumStatusPosting success"); +} + +async function masterCollaborationIndustri() { for (let p of collaboration_industri) { await prisma.projectCollaborationMaster_Industri.upsert({ where: { @@ -380,6 +462,10 @@ export async function generate_seeder() { }); } + console.log("masterCollaborationIndustri success"); +} + +async function masterCollaborationStatus() { for (let p of collaboration_status) { await prisma.projectCollaborationMaster_Status.upsert({ where: { @@ -394,6 +480,10 @@ export async function generate_seeder() { }); } + console.log("masterCollaborationStatus success"); +} + +async function seederNomorAdmin() { for (let a of nomor_admin) { await prisma.nomorAdmin.upsert({ where: { @@ -410,6 +500,10 @@ export async function generate_seeder() { }); } + console.log("seederNomorAdmin success"); +} + +async function masterKategoriApp() { for (let a of master_kategori_app) { await prisma.masterKategoriApp.upsert({ where: { @@ -426,6 +520,10 @@ export async function generate_seeder() { }); } + console.log("masterKategoriApp success"); +} + +async function masterInvestasiNewTransaksiStatus() { for (let a of new_status_transaksi_investasi) { await prisma.investasiMaster_StatusInvoice.upsert({ where: { @@ -442,5 +540,45 @@ export async function generate_seeder() { }); } + console.log("masterInvestasiNewTransaksiStatus success"); +} + +const listSeederQueue = [ + masterUserRole, + seederUser, + masterBisnis, + masterPencarianInvestor, + masterPembagianDeviden, + masterPeriodeDeviden, + masterStatusInvestasi, + masterNamaBank, + masterStatusTransaksiInvestasi, + masterProgressInvestasi, + masterStatusDonasi, + masterKategoriDonasi, + masterDurasiDonasi, + masterDonasiNamaBank, + masterDonasiStatusInvoice, + masterEventStatus, + masterEventTipeAcara, + masterVotingStatus, + masterStatusProses, + masterForumKategoriReport, + masterForumStatusPosting, + masterCollaborationIndustri, + masterCollaborationStatus, + seederNomorAdmin, + masterKategoriApp, + masterInvestasiNewTransaksiStatus, +]; +const limit = pLimit(1); + +export async function generate_seeder() { + try { + await Promise.all(listSeederQueue.map((fn) => limit(fn))); + } catch (error) { + console.error("error generate seeder", error); + } + return { status: 200, success: true }; } diff --git a/src/app_modules/home/component/list_menu_home.tsx b/src/app_modules/home/component/list_menu_home.tsx index 8b9de429..94c86deb 100644 --- a/src/app_modules/home/component/list_menu_home.tsx +++ b/src/app_modules/home/component/list_menu_home.tsx @@ -11,7 +11,7 @@ import { IconAffiliate, IconBriefcase, IconHeartHandshake, IconMap2, IconMessage export const listMenuHomeFooter = [ { id: 1, - name: "Forums", + name: "Forum", icon: , link: RouterForum.splash, },