From ddd3301d172fc88162e865f0dc326571baadc1f1 Mon Sep 17 00:00:00 2001 From: srinivas pendem <65014795+srinivaspendem@users.noreply.github.com> Date: Mon, 14 Aug 2023 11:44:17 +0530 Subject: [PATCH] feat: csv, json and, xlsx exporter (#1840) * feat : csv, jason and, xlxs exporter * handeling the export fail * adding expired state to exports * typo update * header change * improvement: added validation for the expired date --------- Co-authored-by: srinivaspendem --- .../components/command-palette/command-k.tsx | 13 +- apps/app/components/exporter/export-modal.tsx | 185 ++++++++++++++++++ apps/app/components/exporter/guide.tsx | 171 ++++++++++++++++ apps/app/components/exporter/index.tsx | 4 + .../app/components/exporter/single-export.tsx | 81 ++++++++ .../components/integration/github/root.tsx | 4 +- apps/app/components/integration/guide.tsx | 4 +- apps/app/components/integration/jira/root.tsx | 4 +- .../integration-and-import-export-banner.tsx | 17 +- apps/app/constants/fetch-keys.ts | 4 + apps/app/constants/workspace.ts | 27 +++ apps/app/layouts/settings-navbar.tsx | 10 +- .../{import-export.tsx => exports.tsx} | 8 +- .../[workspaceSlug]/settings/imports.tsx | 58 ++++++ apps/app/public/services/csv.png | Bin 0 -> 5155 bytes apps/app/public/services/excel.png | Bin 0 -> 60019 bytes apps/app/public/services/json.png | Bin 0 -> 56722 bytes apps/app/services/integration/csv.services.ts | 42 ++++ apps/app/services/integration/index.ts | 17 ++ apps/app/services/track-event.service.ts | 23 +++ apps/app/types/importer/index.ts | 24 +++ apps/app/types/index.d.ts | 1 + 22 files changed, 673 insertions(+), 24 deletions(-) create mode 100644 apps/app/components/exporter/export-modal.tsx create mode 100644 apps/app/components/exporter/guide.tsx create mode 100644 apps/app/components/exporter/index.tsx create mode 100644 apps/app/components/exporter/single-export.tsx rename apps/app/pages/[workspaceSlug]/settings/{import-export.tsx => exports.tsx} (85%) create mode 100644 apps/app/pages/[workspaceSlug]/settings/imports.tsx create mode 100644 apps/app/public/services/csv.png create mode 100644 apps/app/public/services/excel.png create mode 100644 apps/app/public/services/json.png create mode 100644 apps/app/services/integration/csv.services.ts diff --git a/apps/app/components/command-palette/command-k.tsx b/apps/app/components/command-palette/command-k.tsx index 6f3a0e5ef..a1525a348 100644 --- a/apps/app/components/command-palette/command-k.tsx +++ b/apps/app/components/command-palette/command-k.tsx @@ -739,12 +739,21 @@ export const CommandK: React.FC = ({ deleteIssue, isPaletteOpen, setIsPal redirect(`/${workspaceSlug}/settings/import-export`)} + onSelect={() => redirect(`/${workspaceSlug}/settings/imports`)} className="focus:outline-none" >
- Import/Export + Import +
+
+ redirect(`/${workspaceSlug}/settings/exports`)} + className="focus:outline-none" + > +
+ + Export
diff --git a/apps/app/components/exporter/export-modal.tsx b/apps/app/components/exporter/export-modal.tsx new file mode 100644 index 000000000..df4729265 --- /dev/null +++ b/apps/app/components/exporter/export-modal.tsx @@ -0,0 +1,185 @@ +import React, { useState } from "react"; + +import { useRouter } from "next/router"; +// headless ui +import { Dialog, Transition } from "@headlessui/react"; +// services +import CSVIntegrationService from "services/integration/csv.services"; +// hooks +import useToast from "hooks/use-toast"; +// ui +import { SecondaryButton, PrimaryButton, CustomSearchSelect } from "components/ui"; +// types +import { ICurrentUserResponse, IImporterService } from "types"; +// fetch-keys +import useProjects from "hooks/use-projects"; + +type Props = { + isOpen: boolean; + handleClose: () => void; + data: IImporterService | null; + user: ICurrentUserResponse | undefined; + provider: string | string[]; + mutateServices: () => void; +}; + +export const Exporter: React.FC = ({ + isOpen, + handleClose, + user, + provider, + mutateServices, +}) => { + const [exportLoading, setExportLoading] = useState(false); + const router = useRouter(); + const { workspaceSlug } = router.query; + const { projects } = useProjects(); + const { setToastAlert } = useToast(); + + const options = projects?.map((project) => ({ + value: project.id, + query: project.name + project.identifier, + content: ( +
+ {project.identifier} + {project.name} +
+ ), + })); + + const [value, setValue] = React.useState([]); + const [multiple, setMultiple] = React.useState(false); + const onChange = (val: any) => { + setValue(val); + }; + const ExportCSVToMail = async () => { + setExportLoading(true); + if (workspaceSlug && user && typeof provider === "string") { + const payload = { + provider: provider, + project: value, + multiple: multiple, + }; + await CSVIntegrationService.exportCSVService(workspaceSlug as string, payload, user) + .then(() => { + mutateServices(); + router.push(`/${workspaceSlug}/settings/exports`); + setExportLoading(false); + setToastAlert({ + type: "success", + title: "Export Successful", + message: `You will be able to download the exported ${ + provider === "csv" + ? "CSV" + : provider === "xlsx" + ? "Excel" + : provider === "json" + ? "JSON" + : "" + } from the previous export.`, + }); + }) + .catch(() => { + setExportLoading(false); + setToastAlert({ + type: "error", + title: "Error!", + message: "Export was unsuccessful. Please try again.", + }); + }); + } + }; + + return ( + + + +
+ + +
+
+ + +
+
+ +

+ Export to{" "} + {provider === "csv" + ? "CSV" + : provider === "xlsx" + ? "Excel" + : provider === "json" + ? "JSON" + : ""} +

+
+
+
+ onChange(val)} + options={options} + input={true} + label={ + value && value.length > 0 + ? projects && + projects + .filter((p) => value.includes(p.id)) + .map((p) => p.identifier) + .join(", ") + : "All projects" + } + optionsClassName="min-w-full" + multiple + /> +
+
setMultiple(!multiple)} + className="flex items-center gap-2 max-w-min cursor-pointer" + > + setMultiple(!multiple)} + /> +
+ Export the data into separate files +
+
+
+ Cancel + + {exportLoading ? "Exporting..." : "Export"} + +
+
+
+
+
+
+
+
+ ); +}; diff --git a/apps/app/components/exporter/guide.tsx b/apps/app/components/exporter/guide.tsx new file mode 100644 index 000000000..82a4fd453 --- /dev/null +++ b/apps/app/components/exporter/guide.tsx @@ -0,0 +1,171 @@ +import { useState } from "react"; + +import Link from "next/link"; +import Image from "next/image"; +import { useRouter } from "next/router"; + +import useSWR, { mutate } from "swr"; + +// hooks +import useUserAuth from "hooks/use-user-auth"; +// services +import IntegrationService from "services/integration"; +// components +import { Exporter, SingleExport } from "components/exporter"; +// ui +import { Icon, Loader, PrimaryButton } from "components/ui"; +// icons +import { ArrowPathIcon } from "@heroicons/react/24/outline"; +// fetch-keys +import { EXPORT_SERVICES_LIST } from "constants/fetch-keys"; +// constants +import { EXPORTERS_LIST } from "constants/workspace"; + +const IntegrationGuide = () => { + const [refreshing, setRefreshing] = useState(false); + const per_page = 10; + const [cursor, setCursor] = useState(`10:0:0`); + + const router = useRouter(); + const { workspaceSlug, provider } = router.query; + + const { user } = useUserAuth(); + + const { data: exporterServices } = useSWR( + workspaceSlug && cursor + ? EXPORT_SERVICES_LIST(workspaceSlug as string, cursor, `${per_page}`) + : null, + workspaceSlug && cursor + ? () => IntegrationService.getExportsServicesList(workspaceSlug as string, cursor, per_page) + : null + ); + + const handleCsvClose = () => { + router.replace(`/plane/settings/exports`); + }; + + return ( + <> +
+ <> +
+ {EXPORTERS_LIST.map((service) => ( +
+
+
+ {`${service.title} +
+
+

{service.title}

+

{service.description}

+
+ +
+
+ ))} +
+
+

+
+
Previous Exports
+ +
+
+ + +
+

+ {exporterServices && exporterServices?.results ? ( + exporterServices?.results?.length > 0 ? ( +
+
+ {exporterServices?.results.map((service) => ( + + ))} +
+
+ ) : ( +

No previous export available.

+ ) + ) : ( + + + + + + + )} +
+ + {provider && ( + handleCsvClose()} + data={null} + user={user} + provider={provider} + mutateServices={() => + mutate(EXPORT_SERVICES_LIST(workspaceSlug as string, `${cursor}`, `${per_page}`)) + } + /> + )} +
+ + ); +}; + +export default IntegrationGuide; diff --git a/apps/app/components/exporter/index.tsx b/apps/app/components/exporter/index.tsx new file mode 100644 index 000000000..ff15c1192 --- /dev/null +++ b/apps/app/components/exporter/index.tsx @@ -0,0 +1,4 @@ +//layout +export * from "./single-export"; +// csv +export * from "./export-modal"; diff --git a/apps/app/components/exporter/single-export.tsx b/apps/app/components/exporter/single-export.tsx new file mode 100644 index 000000000..34eb1510a --- /dev/null +++ b/apps/app/components/exporter/single-export.tsx @@ -0,0 +1,81 @@ +import React from "react"; +// next imports +import Link from "next/link"; +// ui +import { PrimaryButton } from "components/ui"; // icons +// helpers +import { renderShortDateWithYearFormat } from "helpers/date-time.helper"; +// types +import { IExportData } from "types"; + +type Props = { + service: IExportData; + refreshing: boolean; +}; + +export const SingleExport: React.FC = ({ service, refreshing }) => { + const provider = service.provider; + const [isLoading, setIsLoading] = React.useState(false); + + const checkExpiry = (inputDateString: string) => { + const currentDate = new Date(); + const expiryDate = new Date(inputDateString); + expiryDate.setDate(expiryDate.getDate() + 7); + return expiryDate > currentDate; + }; + + return ( +
+
+

+ + Export to{" "} + + {provider === "csv" + ? "CSV" + : provider === "xlsx" + ? "Excel" + : provider === "json" + ? "JSON" + : ""} + {" "} + + + {refreshing ? "Refreshing..." : service.status} + +

+
+ {renderShortDateWithYearFormat(service.created_at)}| + Exported by {service?.initiated_by_detail?.display_name} +
+
+ {checkExpiry(service.created_at) ? ( + <> + {service.status == "completed" && ( +
+ + + {isLoading ? "Downloading..." : "Download"} + + +
+ )} + + ) : ( +
Expired
+ )} +
+ ); +}; diff --git a/apps/app/components/integration/github/root.tsx b/apps/app/components/integration/github/root.tsx index fea02bb86..2e5d9e0c4 100644 --- a/apps/app/components/integration/github/root.tsx +++ b/apps/app/components/integration/github/root.tsx @@ -163,7 +163,7 @@ export const GithubImporterRoot: React.FC = ({ user }) => { await GithubIntegrationService.createGithubServiceImport(workspaceSlug as string, payload, user) .then(() => { - router.push(`/${workspaceSlug}/settings/import-export`); + router.push(`/${workspaceSlug}/settings/imports`); mutate(IMPORTER_SERVICES_LIST(workspaceSlug as string)); }) .catch(() => @@ -178,7 +178,7 @@ export const GithubImporterRoot: React.FC = ({ user }) => { return (
- +
Cancel import & go back
diff --git a/apps/app/components/integration/guide.tsx b/apps/app/components/integration/guide.tsx index 8c8d05671..0b06e997e 100644 --- a/apps/app/components/integration/guide.tsx +++ b/apps/app/components/integration/guide.tsx @@ -58,7 +58,7 @@ const IntegrationGuide = () => { user={user} />
- {!provider && ( + {(!provider || provider === "csv") && ( <>
@@ -100,7 +100,7 @@ const IntegrationGuide = () => {
diff --git a/apps/app/components/integration/jira/root.tsx b/apps/app/components/integration/jira/root.tsx index b9d08550c..b5c086431 100644 --- a/apps/app/components/integration/jira/root.tsx +++ b/apps/app/components/integration/jira/root.tsx @@ -92,7 +92,7 @@ export const JiraImporterRoot: React.FC = ({ user }) => { .createJiraImporter(workspaceSlug.toString(), data, user) .then(() => { mutate(IMPORTER_SERVICES_LIST(workspaceSlug.toString())); - router.push(`/${workspaceSlug}/settings/import-export`); + router.push(`/${workspaceSlug}/settings/imports`); }) .catch((err) => { console.log(err); @@ -109,7 +109,7 @@ export const JiraImporterRoot: React.FC = ({ user }) => { return (
- +
diff --git a/apps/app/components/ui/integration-and-import-export-banner.tsx b/apps/app/components/ui/integration-and-import-export-banner.tsx index fd24acaab..9173a630e 100644 --- a/apps/app/components/ui/integration-and-import-export-banner.tsx +++ b/apps/app/components/ui/integration-and-import-export-banner.tsx @@ -2,18 +2,17 @@ import { ExclamationIcon } from "components/icons"; type Props = { bannerName: string; + description?: string; }; -export const IntegrationAndImportExportBanner: React.FC = ({ bannerName }) => ( +export const IntegrationAndImportExportBanner: React.FC = ({ bannerName, description }) => (

{bannerName}

-
- -

- Integrations and importers are only available on the cloud version. We plan to open-source - our SDKs in the near future so that the community can request or contribute integrations as - needed. -

-
+ {description && ( +
+ +

{description}

+
+ )}
); diff --git a/apps/app/constants/fetch-keys.ts b/apps/app/constants/fetch-keys.ts index 295d55f77..97e8dfc90 100644 --- a/apps/app/constants/fetch-keys.ts +++ b/apps/app/constants/fetch-keys.ts @@ -237,6 +237,10 @@ export const JIRA_IMPORTER_DETAIL = (workspaceSlug: string, params: IJiraMetadat export const IMPORTER_SERVICES_LIST = (workspaceSlug: string) => `IMPORTER_SERVICES_LIST_${workspaceSlug.toUpperCase()}`; +//export +export const EXPORT_SERVICES_LIST = (workspaceSlug: string, cursor: string, per_page: string) => + `EXPORTER_SERVICES_LIST_${workspaceSlug.toUpperCase()}_${cursor.toUpperCase()}_${per_page.toUpperCase()}`; + // github-importer export const GITHUB_REPOSITORY_INFO = (workspaceSlug: string, repoName: string) => `GITHUB_REPO_INFO_${workspaceSlug.toString().toUpperCase()}_${repoName.toUpperCase()}`; diff --git a/apps/app/constants/workspace.ts b/apps/app/constants/workspace.ts index 76b099ec5..eeb5e2730 100644 --- a/apps/app/constants/workspace.ts +++ b/apps/app/constants/workspace.ts @@ -1,6 +1,9 @@ // services images import GithubLogo from "public/services/github.png"; import JiraLogo from "public/services/jira.png"; +import CSVLogo from "public/services/csv.png"; +import ExcelLogo from "public/services/excel.png"; +import JSONLogo from "public/services/json.png"; export const ROLE = { 5: "Guest", @@ -40,3 +43,27 @@ export const IMPORTERS_EXPORTERS_LIST = [ logo: JiraLogo, }, ]; + +export const EXPORTERS_LIST = [ + { + provider: "csv", + type: "export", + title: "CSV", + description: "Export issues to a CSV file.", + logo: CSVLogo, + }, + { + provider: "xlsx", + type: "export", + title: "Excel", + description: "Export issues to a Excel file.", + logo: ExcelLogo, + }, + { + provider: "json", + type: "export", + title: "JSON", + description: "Export issues to a JSON file.", + logo: JSONLogo, + }, +]; diff --git a/apps/app/layouts/settings-navbar.tsx b/apps/app/layouts/settings-navbar.tsx index d6962940d..462a4b6a0 100644 --- a/apps/app/layouts/settings-navbar.tsx +++ b/apps/app/layouts/settings-navbar.tsx @@ -30,8 +30,12 @@ const SettingsNavbar: React.FC = ({ profilePage = false }) => { href: `/${workspaceSlug}/settings/integrations`, }, { - label: "Import/Export", - href: `/${workspaceSlug}/settings/import-export`, + label: "Imports", + href: `/${workspaceSlug}/settings/imports`, + }, + { + label: "Exports", + href: `/${workspaceSlug}/settings/exports`, }, ]; @@ -103,7 +107,7 @@ const SettingsNavbar: React.FC = ({ profilePage = false }) => {
{ link={`/${workspaceSlug}`} linkTruncate /> - + } >
- - + +
); diff --git a/apps/app/pages/[workspaceSlug]/settings/imports.tsx b/apps/app/pages/[workspaceSlug]/settings/imports.tsx new file mode 100644 index 000000000..a0a46f0bc --- /dev/null +++ b/apps/app/pages/[workspaceSlug]/settings/imports.tsx @@ -0,0 +1,58 @@ +import { useRouter } from "next/router"; + +import useSWR from "swr"; + +// services +import workspaceService from "services/workspace.service"; +// layouts +import { WorkspaceAuthorizationLayout } from "layouts/auth-layout"; +import { SettingsHeader } from "components/workspace"; +// components +import IntegrationGuide from "components/integration/guide"; +import { IntegrationAndImportExportBanner } from "components/ui"; +// ui +import { BreadcrumbItem, Breadcrumbs } from "components/breadcrumbs"; +// types +import type { NextPage } from "next"; +// fetch-keys +import { WORKSPACE_DETAILS } from "constants/fetch-keys"; +// helper +import { truncateText } from "helpers/string.helper"; + +const ImportExport: NextPage = () => { + const router = useRouter(); + const { workspaceSlug } = router.query; + + const { data: activeWorkspace } = useSWR( + workspaceSlug ? WORKSPACE_DETAILS(workspaceSlug as string) : null, + () => (workspaceSlug ? workspaceService.getWorkspace(workspaceSlug as string) : null) + ); + + return ( + + + + + } + > +
+ + + +
+
+ ); +}; + +export default ImportExport; diff --git a/apps/app/public/services/csv.png b/apps/app/public/services/csv.png new file mode 100644 index 0000000000000000000000000000000000000000..3c35eb9f7c3ad9d30ab57d103160e5f7d7e6bc8d GIT binary patch literal 5155 zcmdT|=QkS;)J_mH{EUcHYqWOl*4}&63`NwaO{!MSss^$59<>S4QlnZsMo_Z|T6>hL zS)-^uUhjYKetkbY_c`}D_nf=VxgTzfp}rTvH{ zqVUu*zhwcP{{^s2KJ&w^2=q46Q~^|v+}pf$NSu}RlmUQGNmQ4%AOL`&Nn1_%X#j91 zpCSn2o7wl=gl$uwoq{5nL92<=Ql-g58UED4oDnkl&TAU~ZUOEbWuo}_d?tg1H z=DRyz;beD4`rq=OaIr6^D-kVInh{Z~{^5N4bofogg3o#hKZOZnz*5kGc7;*?lk=O( zli;b2Cm}KcHfM(^PVYCkq7N|aR2Zd5zdH8mkPnhOIbYY4w3*N5!xQa0BDkXsCq^ic z3?D%f%Y1P9@?~I~R~ALK#(ilVHP`^=IVlh+clENIhem}#^<#_u{GhgIgz3bCG|fx; zuj5PzfrLcPp#k>+Y5#wlKirCA=-9Kzbh!O1l2`LjcLKi1Lv40psRF+IuS`&%H@{(F zE-I%akDabgIcv2l9e^^*g2s#!OO!}gFOC|QrsTt$x-^_52GP? zT9A1nX>as2|3b!dfqqK~(sG{e)vttAiu;`~hC44=lh*`CtmT=(XxlcgHSUcGwN|-| z=R(r0egGH%s>=Yl`i9UfvmfY+=W0`SMu_M|sWskN8y&XH0Lyftkt#)pxev&zzsBiT zZ3ATRXrx_#-S<(!jGNcWlNFgo!~)se(VRN=oHNoMyD81KMWVMtEXe^!iJ%YanMMwl z(fu|DsrutdN9dAX)`a+Wq61#cu@t_aw8y&nJ-6uK5fFU#y&tKXq}q4dAN-|AmfyK4C?ev=2RIgv^&>_!|WRU?7aw`r5uL*#ng zyuQ85ZTl!Lc3Zc6I6L_-heqe#KSw6Th6V_c6Bt7B6zOs}cw>+@vE_^5y^SG{oHyqG z9Bwc^{yi=dgb~$Gq5_Aglb$snSg(lH4|$o3FdG}0Q@RgOpL0x;n4=o6V%%$R$qKR? zqyo_R-t?!LO3jr-;7~C4)6Ui~RSY-ig8o+5LW7y&gu_B<)#2CMdG>LIlv_47V(PSN zQqO%tWp40NZT>p4!;p<9x@?0 z5(?C=jn1rTe~;-JMvnoNA@?~Hsoc|<&|{r1JuTq0W^V)S;OjZ45%d^^cQm6!{vxT6 z{i-7oE$BX;Xa$#)^sUPDc2gT9)&oCj^J+!k@CP{j2cu47Kcb@kRCOgKYbYiFW1-XI zZrW-AT8#cdQ~GnksDa__erEkk3bPmRCVw_64QE}a$CjR!k>c;3tGXju7xIDeBb-yvr|uD$jLoFpgSx*R;&bpqnEE1`JJ~5$!ynFY-`%_=Pgg6f1~f*B-|aAj_|z z@pw;ZemwjcWieEiQ=>;Uw_h!q(hcbMIltPEKn-*dKnC@qMcD(y`MW;&NTtWu3Jk>} zjvA#@-ra$9hkj)t|1^WQqXsq(eTeScc@?HPE}KJ70*w#7zl>0QX;VK-7!2r)C`pk! zkI^7)P6katXg6jhiUWLtFP%iAe#AdSi2VNr_#{Lyu-f+h3=RB#3au?QS?&y_`wTJH z$fG7}FXGtzvV>zBPnoP?2vJHvL3Hwd?tjbaj=WwO$|;{o2KOs9f7^#vm8icia*nBd z`r6vw-VTmxq`oH_v3+kr8MOnhCp4c@gy6nb5QlY4b+uJ$;7PlVKo zHSev(kdJJCOS1ZrN=FU2oJ*ddE+XMgjvK#V5)rEo?(9sCk+(=Eo)g-Oz<~OeD>&Hl zSb4Jdhm*P`t2BKm_fRLAQq)&KIut}bzX-mx$oq{!gQ z@};R(A9DSnz6Yn_-E(q><5msdaQvsY#rA4-d#}eNAe*Hlzwmt0wy4R27wf0zmlEm- zYtp{suu&DLlC7htSa^Y;G5h@NeB;~dQ=)qvDEcEMZ+!C2eqdqN*rOv-pgRqTe7`L5 zQiwDURCO|8!Z3!|D5Goefs_}=UDNz4QVnjJ$QYKw5E2L#ofAz&)|kW1i}l=CdrQVT zCq;FgHQ~$zCcn=0J|+`I)=}>=f&XZ%E?A+3&p`4eMm8$tpFD$y++%;R%V;*#{0){3 z*vUSaZK{Piw!Y(nv}pQ}Y$ zOmGd{^18|EnOu4>cyaoI^_$FrG{hvcvp#lPic7HaZ$OrSguh)qB$py74oP@haCntw25nlh7BjbS~X6=$q!532%?Mh1S%WP0exnGz~3FzFEZAN`Vi# z#n+v6VXway8>~cx8>Q8v@553u>~@_dBJxGB3tEnI@e@A{k6gE6t6zkDTzlVB-0t?u zZ>nIfR7Yw@{V~;{(hB>=cnQYig0nsJdCBN_?I|$5@=WHOrG9vmD8%EOqko{m;-x3g zjMwYuN?m)(_l}%+U(|zRH!+-Bxa7}o>R7v6b;anw(z&_5P(NIk{USC4L?KLSGh|%c=AzU|T z$3`0U=tl9Ed&*S(L2R9`mlT-}5C>r*bR30|QW#%l$IxLW|MP}{;1cA(()dDRxYH*B z-vjBN{_d?!WJekdc%Q^SfZ;3MN9ufz)vpM#3DUB)@yUC0*wUr+bZrsWp1FO8s6Io2 zXo9;}gN-y^kyx)e{gkb1$A+D)e@&8QN4>nAFjE_(Z(kH+lgcqm`Z8@`GS$wELZItQ zd+?D8r?>}k$Hq0ssmtly{%+Ay7lStDQ{oT(JG|nPMcfBNR3e;;yK~%ZYky0l(1C8e z1&Z~K{!0xEpBHjPJse2HVp8ANZj7F##ubTgdtUpO*r3K8iLkT8I?l_JPJ~ty|KDlY zT6C<+DXX{2lJ!i@Y9#MXiA0-0`^3S-wylkBh4Au}B3AN}!*#$7BY5DS+U;TGP#!z- zb14m^p~QeEgao8y9EZy8{h93H#y$BgVj)Knm#_Nk0+byjEGAxGr^%P$Js6tYjXNAy zKzR8PuVz|-#Pga^l=(}RT9h5{qO{dIO1;(INEvzJCa01eF^03NX3=F`<%=WLOnO*O z{HS6PzsaZ^QN6&o9=qRh2<_{m=^#f#*Slb5oM{8^kvD6^NmM(f(nvChH z%RQLYT~dx+X*zbqTOpGp9?gv&@FvMQKzx)dzF`SENKE{EveAKfo@RSfQwSZV!HVnR(bqNQQ>(|5S!Bim??-0-Ue zi{ zOT%1SplOfJLz#tvWw)R?h@R6Fym6d3fh3LLXJcu@E{z_LY%Mm^p(eEP_=bXiE~5R) zFU?B32Q;*N36}ExHQ8xQ|Jj&Ykp92MH|*?eYFFacH+{S=4`7d$r$mI8BNjhO46hV_ zP#S*XI^qVNo>IVB5o*f)h6S_yK!5H&EqkhjGVYi>xoFU-&2G8bvK3*@A&-=~ZnSR6 zn8eP~|5okc{xaxju&Z3=_FdZERmkUwT|p}eMobnT-n?bm7v=lNNz=t0Tb=-Ae`a2 zha@+3LbOws)Ne(oUEt#OkfGS4`ne9i&9g{Cjj!|3&aEjql-2Ja1`mo9?lcx=1h#Y|zB+HhQcAy|1Epj2B^|R9qOsmxv);MHIaw}? zD9q9jp}K$t$-zL{y?teEG|PTdIrWsw%!u(BhZsYe`(x5J8V~BAdTXLG<+r?E2&Jwn z1!_3tucgq?KR4rqgpv}`jXya(7OKiuy&0@LFgiVu>VnJT|AL7ecP(@{wFKC}Z;Uqy zCk^mL8s<)CnJX$>&NbIQU18rPX?g zNPw2*^Cg8X{zVj0_@#G~8&u?eM$a zb6*O+7*7)J<&TPaaoDcnzgMEKCoQz&O#&aLmy~v>Zto1X)~J(Z&!1@r&?sJkG>o?k z0)-x6TvA9ju9lD$7)MF#_es54Wg!n&w;K*p>OKe`=Mh;wBjNtruPoHNwg0R8n4zAX~Aj+)yp*C)jEo zM~tXg*+2Cp?t}`nw=r0$mf0*jw>3YI-T`Al>mFa3Z|8%Gn&{+-CpyMUikBZ!IgsS5 zAvdU>9u>ZqaGkG}txJ>jQg7})5-&`>EdCHR%i~|9s5DTukqo7M@o8#vC>hjZieeeB zGvhb?-HKCH{#QY$gFG|T7=ri5s?9urq%4kjRCIRyCDhyR11TfUEnM{cRf~5Ow*g|C=fU4B(InVmO&7*CM9+M??hlAHU< zi>`Lhfg;b`=%2A2B;l&4%61<$8Rd}ixaXnmLFTbbV}yTW;>t5C3LEK6nCyYTF+mNm zKDL;o8&;s(PRxj*go6KXpmVLCU3edXJcxb-MTgp=l>o)@nWQXakrb5DIwabU77t{4 zv!iQS%1dcm;MJnLrrj`DF~RuZM~LM0_Pj3bYC@-o@BRK<2?OhF9!j**LKK_bm!}k9 zV`AQ9dSI#fQCn(MjE{D%*PanTWU`G5#=%a-juHv5H2Zzb(4Ki#?8@C(+gz%L27Krg zu_i&hvEt1Qu$h11*jynz(dzmKeK*x4h`ytY>+MS&!ENO84A^@3_%+ z#@M&1CzqM0jFfj=zgST-_@}x>#CS+JVDqKx6sOT8Ff9~9=Cxh3(ZQGe_6}O?XD~kJ r{?w!VIZpR!3HSR8uW+VWtA)!Hu8uj94b`_lJ%F~lzFM`44f=loaFdit literal 0 HcmV?d00001 diff --git a/apps/app/public/services/excel.png b/apps/app/public/services/excel.png new file mode 100644 index 0000000000000000000000000000000000000000..d271880f68b50cd560d55b17f7ca8caf31c1f2c6 GIT binary patch literal 60019 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 KpUXO@geCxxPT-pW literal 0 HcmV?d00001 diff --git a/apps/app/public/services/json.png b/apps/app/public/services/json.png new file mode 100644 index 0000000000000000000000000000000000000000..a5d0dfd229907ecedb176debb7bc1ca3d717ec7d GIT binary patch literal 56722 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
F}XsoF;4p#0dR;Yn8Q+ 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

+U-XT?f(e`XJh~mtWw92E7ZAZ$zdpz=X%Zk1z z*H9CSE@MFC;A7+J^umtd%__YEZj0+XZ!{hJu`WXUYCpYbUl>2Sx0?Ux{{1IK2Oop| z7B^oUGtencH>N#CI~N5$=CrCs7VM2U!OGr^dQq;w9qDhCC=zIWQbGCE*MYi>s5X9E zPR?_+gu2G(yO>#nPaO(iVEFdz#U(Pa-TJR+4Y5+472|-b)Znx$%F?Ff-coZYFf{;wEV9Th#SmT&!LJ`WXka+<*A<&;KOT^Oj$=f1e*`|H* zXbf&>NY$GyPwm64*HKg&!hXDS=zX|$ziFX@q|A&KqcMd~r*+@H*^*9*%%Eu{cCRi7 zezl$F`uwoV`VQxk&DZFpqaE){nHgT&^xB@_Upev|UdYj2+g{&@-W5!XD&m%QF%^z} z?=k}qWkVs)<&P2$t|b-lMyo{|I)t7S$4on3YEHs{g%@*SoXmaa@M_PGt^!#yj4TaX zTGx+Oro5(NQEzJ`CC!Ym3$vew8-!lvhkEtJb)X+nE+N0fJ6I@}%5C_KVeyof74k1g zSwN~U50Zq=?lVm>IU$jR*w3`X`+fNy=L{370hMdrfk(O-6?Xi52e+V-5kFV ztY%7k$&Na=VUO@|!IGt!lUrELM|BZ>dnWp=q{a0O6^o`%zVEBdpUl>i+e_MJtIj?) zk%)Y4LgX`>6(H^Lc3M&C%@;7{Vsb+A;o0x%jV7xhSIgF0W9$aXJ6B#&}(h6nC(1!YBx;z($HwVo=E?J$Q%)IRR zVL{CEI8Mf_%8h7eWdfzk8IbzcWD-FiCBgZ2Bx3Vpe^)@2-q%ed=9RDQ9%qB-q6Dak z;|ifOmNj1Q()Si`Dux9l7ZP{x^=FIYnC4WH4K(cY?R=d;p`i2T8(NfPhr6T0cM)8V zkzFgPo`>>Hx#hQ3f+WU>33{~~DFR5lIptp#e2 zEyg#c-V1+9lx=i(>Go`oD8KzGPVEE`a{PREK6DOa5JxXrZ-4Ve^-G+&z<~p=0q$e! z#YNuvHKYqFypX!{QHJGoZ2MeEa-yjD_3e@`>w`s&k;z3mk0&bR99mxO9rVq$cL~)} zNC#4VTCPm7k?E0cSTf_R)b5vYy}KLmOhSs?KJ6kZRM8{&qow8ELc!R=bJ9=>Q2%(o zt_~N{BJmpcsI!!U6g}7Ukrp%jXQR_B&VbKzu^!%eU>SB*pJrN*^noh}Rbi7sZ}@xg zX)%s9p$Jw;Ygu#XC79;c%m|bMpw_0b#xY-r8MlsqZn)?gIF)>nM^sElTO14nl1Z)B zid($(nAViyPKPHxO1!3q(cm5Y;Nu1 z^>3YiqdFBc-OsO0e@_=iuHU6k5xE*D?-+=D16}XRz;$fT$DwWG`{+Yk7eqAIwmes_ z{Xt#g8uAhoZ(1t5qCN!^r402dF1{9egy7O{nQiCYDloMb=sy|@a&9@k)PJ=-yLRPs z%U%@M^k!0M3l7nR(mL{VITYX7y#-UR*O9N9@2ldl`UurfWALXtA2BW(>DKH%$ZcU9 zFf;VC-3{X}Yhh-=2t=ie4hHnbHj7VTf1;+~uNs5gJu>clgd6ANT3J{kE9bSzI2$f( zfq9$3IQH)8)4fG*#amu|Pn$*L+VY()im};a<=a8}&&f+--QWxkbbp}m^6>1O8T#C(b6&*D*C6g8U>EM58ZRm(eq zx^xP-yVqBG(iEHpJl{LM3x8Z!2<4Nw7T6+v+r<%7-XU+6OpyCb{EUf%P{+62L#9bq zb1s-sLB(Sr#ve=tC&MD})^mu2I+~ikWlPAF8g=P4lg@5KG!^J!Ze{aBaVjo0Z2efz z#3dG%Z_O(YOo$<8EvvAXG&ION}PkCDm;(X z9i1+yj0J=b0cJ^>LU=Mo?`S zgNL1-@rz6!A15G@%#7SOZ_#8&&0T+Qr1}2I6Ak3oxD2h!+Ldv30#PzzOA7}q-~Ib& zM=e8FzWZ;cJ3!ARP!(eNHdK!AM?z!>Gn+}31u9cR{m-#p^uw`_4A zn&X4))v8Hh2hnSg6od3u$s!p;a962a19Qh#0_kENgK;y}+Wjq|O^dlt?_TBlM*d`y zze>A_&|>mu z`p@{?6A8$umk#Wq@1qx1{pMCX)ZD&4z$Hd+Zx$3;-ZU0%(GAsH&G?#gHcJ%A*XaK( z6L;qF^)AlTML~xwH)l>WARLMu?h%%Ch1vNue{~Y`oP0F~bkFY< zd<%&}kPK?=is1X2o*D8)_MsW($lgO2?$$oRt1I^QHI1}xd>r=&uMXBF zAjqAgZ9Q)_Ihrapy#e^b>wuE*1FnUNYZgHSM40H{*eR8_Gq-O!p z7UDOju(vqJ(%DmYjV-nBQm9zJWOcvfqe6uv*!gJgJ85Fql4MT< zYU0p!edRCiCyvPI*U+M=5^>fp9^4wHMry;1a}S!|&^D3Ye#DV_l$4Jp+17ruzoFPB zsY@X=lsNZjXt%=40dH{H(e3TXq{SzRRcexvNjP`v*!u97ptWI-(0K5F!BspwkeiM0 zv$%%(kYCDQ+NsBKz*s9r|D}3M!_xcnVxbd4kF;^C@P+Ah+jL*q+j3_^$X>{A0V!^i zXkRWj`hv8oia6u(^?rAe+h$Bpb#-g}XV3dD{a+lNWn7bO8^*WMCDJ7!ARyf!IaCCs zlauP!GJXSIu)!5bgGprl&l+xwB>ibN@U*bh<=<)8)pu04B_A|+C6bu=$n#V3hxxKO z%%|~kI+k{dtga8q_AOSE2Q3>N1OnENu;?x}r6kvt1KW)Y5k9?au14y-jM=ypETZQ@ zR`uQ7{+#OvKcH9>!CPWCc!%WsxE;Lw_;PIBPHb=4000$=o)H|Yakt+$%3o$LViq4C zc?@Tz6`kxC*HL-)~B>LU+W6t*_+*>$(=Apvkk*XcVXfekZu7XMEr=F%NwT>(Qwf?ra6WA_XMk`U#@geMMi$zZ#eHQ1~?hCmE$tIjx0PB4_8Z;_SD#I!u0V@Mv+74vdsl`|D*$z#C4udhr)B>;i2$% zO68Fvx-bm-V#G_#>Uk8PW!;_7*FH?>HAQ3gdo$)@5qUD-fY4W`?B=LC^N9b@fu2OIEw{_>cKo{I{_sxM@t%wZ6C0qTm9Dmx^y+Hj zLkPnSB*3|nRcCsqNsWuKV){~(H6tt6QtqtxS zaM28{m|qI&v$tLNfiCb23&SkHKF!dMh|KDMH#)Jnnuo$qCr+fcn_qn&!<)4w3bAsGnb(FjAz+hEnBSmieDR!Qu zvE5TEYLSIu8+es*3$i}9pGXYCFz&QMNa%p0Mr|4B*gPp}qzX19 z;CIL5w;_B29)hg;aq&JZv)9@yC=8fvHQfPW)2&QY05|4!F<*&6zyN z^jn@Z;ldAc6{+M$aK2p6SL?=$wVZkFt@g?=1sJZ?{6b4&+PT9}{~BD7mnjEPdS zb%FS0G*Sd3!75AE(tAPOZ+${8;4*S8GCj(WYA&Ma#jSHs{7}f-XNvt5C;r)ny3kv+AjwM^gPZ3WZjg%CXggQn9SN#Ri@mdpgbmFb1Zasyw*8Ec!mqN_ij=YSn3D@Db7am)a>*Zw z8e=|iGU0SZUI8M*^O1>7D>HnhxNBG*V=IJ2iUUY*T(Fx6)Z+t|$ds}^?D9e)sHWP`Bv4?ax^dRztI)%}_eN5?f(9`(E1BRT_&$Q?Q6Ah-VabeHQff z$B}92utU&ME0tOA@FZBm*p5&OV+DxnderYgl%paF`75-bxrvAL<9Zv8TDEvmR*ww=`6!o_DSLb8cm?YA<`F(al=uMq1*eDo=)A;0eq)r+1 zX1&>6-3|b7Yd3vmvCXJ+a>j%E*J5y6NWf=Ti5#-YX9p0bpI(f}Fa7Ixj8KSMABa1d z9cbDwI3z`Clx0}^f9vvi9yb&`h`ro+`D&lS&N#3)Dlz=Fe2f7%gvw~H4dqDbVj4h6 zdU3gjl#HkED+#*9NOPNce_wJOB}CF(;BWi8sNU#f!}i##s+K_>8}({dGO!2PXR~!O z=slKu>m?l0(Acy&YRlWW$aUvjCtQa>Yb5JF#& z+IjUsS17^IX5xtWSr$ipaD$ke9({0ga1Z>QP@2rWedUGsGRZoSby}a}>!1*`x6}G!DucmqEK@1r3dx>EDhn+J_j*h8-Xy z3wv)qTHfl6eD-Q0jH3nE2*TEzyW&>hrWlI`CsDE=qhQ)IWmRV)g+Gg8i$ZBWoY<%C z+DNszNqZkJ8QwZD&Q68C?29lgb)069HK|ip5CiDzT>=7u@BIxiaI8X`x{4#64jik>k?Cmk>tQ09_ zKdzSR91NJMm|1|;^fFqvhK$pz&hlY#W)U00D(_3&#u{kSf_hu(O#4FKM4tEgpEea} zm*_B`8t|45@7!3s3W7TIlf@_IgI#1@iQD`?{|Q2r{LT2L$*x*k0`%0Cvqt6qffFG?M@5Adlpd20UZ`>+^^YXo;QS4ti{{XLz-X_3erckG1$^YeC)<<;% z$?GayQ)NkWKwx=|!#;zhiKp=_mO2|*9?S;X;rVvH*0wnBnu)*6O4`!ie6mj`)&5v> zwok&fsPkjXpET-klCw2{SK3WZezs%nVFF|R>cPb9dcXG*ZnK%Tg>j$@5rWC#jDcN zc?PMsJ4;RLPJ57{Fb!BtXthq{{qo@z z2S2J}Oo;sY%F3G~2|YHS6DDewx#dszRKu*}Q)~6pzh@+A#zIHrq%9cJ+3ygq<0@2{ z>BoZ6!KNnVCLN@ethl~4Y5K3y>E2i{sbg(wbV+^|0-sYfg+m3e-*UbdbrUV+0RD*feBQ8o1o%)DqVUeGtRpkb@P{h6op{%VchHTdTzhSb7?nlj6x2-2X^%%|Y5`%~Z~zgWavvjB``(Q?MAoAQbtnJGOSGIn226l%is>ZNb2j!J};K zN7v{_g)vOU*)#MF{%$B{ZamafmwQ`uASBS%IE7&;?WF#Bp2|rCpc5mT z^2D%xW4C-WU0wDzkDcne_k&wi^V8O8`rXDrGNzZlMg-MW7cZuy;qch zUuIDR@%N1&N(ulrkK{QSgg!c}|5ZsR)tsr^1$!XnjHl?AZ|y!Q2v4F?@*q??pV{Jm zZFk5QumpjXJ1;xrK<)()mkCNch{MH)L!W-Eb|n{HB#=7I8b{P`&!Pj!#AttBIfh@Wvpyrn2zj`HAi+-~l@7jZ%c zPYj*Zg!IdO0@Uh@akE}ot~3Tosl;|1)vq|zXP-KaX|!!Q=j^@}X!H&2V5jAOnr=1<|>!mIWFwrP>1tOk~|#j!TS%y)qiDJ~DEC zbHvZYNv}D4_2)&^ubik{w!DJ0;+fXV{&e;&r#S>&v5FpH-Vm85+#2vU&>wIi*xfAy z=u~IX$i6yhmiLP>Pw@6Nqc^CFooWbA2JM?;$}?-VXM0CYo)96CI@J2y5@MK_CU2l6jGk*yUXK9`wQ0RiAVtg;35pgoaVNeuE3{el>)X-NsGB{L;G^+Zj3aZ< zP+3{%v-k=>5(m?@7^9|X()Cr&fOu-Sx9yt^&;iAtPbT8o_j;;*`-7CR&h|X;m%7f& z0HIVYi<97OE2arq(0XikS@++a8VfjOmWYd-zWOVhennPoEWZ_3Cwwai{dR#(Z^l&V zu~1T3(kL*xV!d)M;K`AwaWGWo*0@Lr{`~ZIZ+5+gHn@QJgZ%lE*XHyQ+pE7!Qw&`Z z6sWjY)8k?JhAyEA@2vn@6vg)IIK-$%ckJ#PNwr)_;*#;~NYwCNZI>k-gDDC>XRVH8 z+;J&(C0ikJ)S9POvA^;(pv>ZD@(TQKyJ`scee%541-{FUpMVEUu_)sr41PLHh&agBa}vC@*D21ooq2)mJYaq@+DW7c(-; zkwY_A>0mrtu*}=iOT;AMq%efH5?ByE;m^FO73n~ZzyIB5|jwJ4#5FRcwnDuCC zZkU%3t{VOE%c6*3!V@eQ+$uEITjbWf-lYHy|7OUDoe(}F$FKM(pB~sk6#S(<^uw(i zF)4tkTRNDvmCIXyWjc4icZj0gesEKB7eCK)C#Rlf#ul8`0EV@oGaQog;B)Oz z^!aw6e$V3KxE0ncwi3lY*A=@aeItGv=qD0KFJ-=>KQ~dPOe`(=0eNNF;BbP~P;EXG za2)ywX(EX#^fds;OhQ~pm;&kmV_!U3$yC#%HePdQpm_i01W^joxK`y}Lxk;Iyl91h zLU;}7u%0(}mVI5)unV|sbm`XM+&^VCR?-&V4GW_VR{_zp#jk6qErG|~(xKX;bzolY zZxf6CPq&r@H7`|Oh8{h5sQpN1YX%Y0W2@-4FLE|j5KTbDe#{eTBpPRyw8kVyc58qI z6$J>DV=^_ITI>!YYg~H_YY%q}FM1aZCsyi-Z9d*W`OM7~82XmjEiOWRwu)M9pJ&(Z zPU6zwlI1Ce?@E-CqxBYsfO{;X^PiBON@7{PdcMF17#{2p5fy=ndiR@RiPYTGaL zUGi#vPU#RT;uP;r2qta6>x^1D^^-mI-yYgmW0Vt|L=EVMi5s4BMz84e+5DW2Bz~jN zM&N>)^l`mOm5tn~t|(n-=J(!K47kZ%{bnr&Ars@4!Vq^S7x(`Ae(x2WmxbDEdO;KU!-Dd;glgpeN9SWzeJ!X-#*HRu2hn{16+Yc1-bW1NWwv(i%l*%^ z>Qyi{ovr{$N*-UjF@x)I#TQz$fP^41VBLvfjQ6jaHmp_DC8t!&?Te0`hI-fO8JF$@ z_ObHc%>w>YR?8RZd>cOTk3_khC(XWybCSHD6gou2_&2~Y|5H>*ReEjG3%s&|WQ3Fs zWk_j|;BZxB8NR1CeNWj=kO)8{tx(taH6I%G0WZhTqdE8+B-OZ?Ip27P#jXEn@;Aqu zc8ccqfgRxpGBPZaSR0w;4KR?1F-(r^Z|7?xOy!p8w86((>A2b)ar^U+ z#uttXpmVrA##~&g(C)11Y@b50fwi@V8->|To@1ERy`rH}>EF^BbXh58Kc5@w3iGr{ zrI%~yHYlqm2z@93m{Le}Ut0mQ&MW~M^G#PTJ&#Qyf5xnR6Qb%OD-G*)1RUs+efa0I z)_5OR2KXx8;E3%bje2%!aKTNfmJuqJ)k;2>(@K6-tj0&aGy@8}72VLXvhgRRg2!dft)><(e(+vnStXXbl3skK%Yl4!y}sUwEU!yN9s zYN!?7M0TYW1$eUJb&nP4@NUhgHQtK08!=dXyYtY3kj-X+CgoOLc#MG0pMM#{gt3ew zw08lwYp#>JGVw$>cNk8URo1@vOgLI)ce^Jl&wi)40Fr*QS}8Tnj#vhxORU$46s%ic z>vB0WNACITxA6fQd~)$WPS5(kbDa)Ob3q9D!~tBk980|}-B9!TiLr7}h#1zUOH0sK z%siqcZ{9aUr;RPh=xU3x>w2?&qnF@^gZN(LQ2G<}U$g*sYQ-WPI%J^}qT(S`*ZPcM zrRGU|*CVLwaR}A-=tkx`yG-UbwtO#s((gwtX2F__|28vF5QuK=`Y_&;^FAI@O{}a~ zHgCxHfAg)l%c%+m+PyEHNKq-^S~_{qJhNq4f8_1!PfK|xtkYd|VHAA5EEs zG4ZU^XKYB|F`c6AZSS8!G2k#2Dj)ms&h4QJy9E;?{2i#S8<*N!6x^462O&Y%VexcT zFlJIWHM|6*d=uP6Tm%>mq{h!X46XvXtt^i6{QwCQwFa#IA#_}cVw7>^qtzr5_j|<5 z5_H0*RL%X0-nY#z=P&FOe?FY>WCd*o1YERlv6o85=>dQxXD?INE@<^CO)VQ%d@1FIc zPg&!uL=#g+$}q2ZwwO@gsMB^KK++JdB7?`eC@5kG_ZNWNaruGTxt;yXi1cLYU?1- zf--7Zck&vim>0dpufWrv+06E-mt+Vv(&dAT&DYl_S!R7HXX4NKBK~~>vtSUtTp#cn z-$E)tzj@j~E9)ij4}$J^hB0AS_nq>=L0BN{XyuTON$9a9h#c^3zRBa2gm?8&W)+N7 zEu;OZw0#vR6UKKEe(R;WKeJM8FEJuMWyiOf2a3dozT~GpflCO!BFdB`Hoy8Fzv&Y% z8~c_s{N9p%y%()P98Qn-A6!vt6^V~3TfV`Nal03Rb&sQP>>N2(KZ$b?X% zjx;JZi=!3oU0j(UL9KFwA@)#&qzF;rQY1P&a^OgrX}V;4;;J|KEe*F6REEEONz3qg zlb72cskZ-)z2aw}U;KLJa~i-p>>y;*^o1+lIW^G7)SL#X32Z~ulM}K;wll!^j{Om; z;vSQ9Pc^l*@-nHO|9pXIbYL=sEB>+a(2>Al(XgL(V35grt+^R(*A$V0`mpD$wUMl~ z-tls02vfL7qFyii_Pn4*cc z0ajP1LSCN7*ZQ^BPv;(zLX4jxGDBklQf($yxXU~U!dw+VfKm7w!8t7ut1WThI~S75 zNBUfvIwAtUV&_E>6KSYn+Vc;`FM%`8FP}BH;}33unSto^is2i4I~D!*`$l14-%^M` zVScl)`F+(142JFn4v2L!q7Xxd6{?<`Z~YzUc#U20CuW=)ac8eX-7fsqn}Fh3zs=V2 zzgVM?@B6nYB}<4!87q;|)wpy`K+!v;7a=#9rv32{ zlz`(ZQW$-I&h5%g*H5xR=hIGW8Gr>ALEEO5RsY1J>ADGon~=&!Y^va5eDCefh2FLU-BBV6JA@ z9G+Hf7YC*Y^3(vN=6svK?Z7Hho03 zpjE2PS)N%B&iCfFO3|{VSXMN4pBnm6XowQV%5YCv$XXoU=wmUrU zaTHySRr;w!RXZ|XlReMBE7ghYocy%KbTG5}ftp<2Tor&v5t1XEFb>QxuRJ&##mB@= z>|`BVWC7Q5BDUNl7vtv*bT1u8xR#*frBokO!OdbXrW#g1A^z(i`J?vQVN1Hu5WR|y z#v@CGxZZOujN4tofkyn|;{!W(iniy27JAJd3in%lN_w9+L60Z*JK@IoMC~@Ot1Re) z_4SZAE8VZ^cT-Tw5g{UmqK3t)iIqQpsL=zSV|*QRX@T!qs8L}|M*bCM*eJ!(YSQLvGd36?MtV$*(s?3?tkQp zg8UZZ42D;r)1U{Xj-AJtKeQ1kTKLoNVh2~_M!hkeVbC*^@65ojm^lkgG}$Z0b}#Fn zo|jFJb&oc$S$yjhBlw_-VMZHVoS&ahqMPISX+gc!7Imc88W^L!_MGc>w2NDS0F15i zNc3jNnD`Mlvsv~Dlf7wYXxN$q=&gQmjW(e3CTLX#P^|E;a{+MnCm4-OvIS&OfRs}4 zU>vG|i-DXG)W0bL*U#x6*Hf}3YmOQN_p?7I0Te&^k>qjfBlSd2gp9mQ?fnoPczS@`UcR4g=6DDU!cI4tjurhR=OWV6MXIjcXA zkl|dJ#b4e+(efRrSmJi@s41`$cBu=f2-uU4z1w+fR5E+Ejp;Rnwe)QigK|z>(6Z&Leqdm*B3=g5) zp`+|r-hnbsY4zX~~jvG9O*IvSKY8D44@>J+YttMGQ-y zxExWNKC+qL$d`g>x7HtQ=WQb&-l@numxn z_UNa^C(hM%l8`@Fiu1udN^s#@aK_pBJ(KaSaJMvP z_VtmmRa;tpd7PhW8dmIJje4LPYX=Cises!2@wvFlrsyZq;bOt34BY7w7^yjRzm9EB z4o?UB_$un6E3|&{qsI4h3CW3Gnl1c^to4JF0W?4t!~|ss;g)~i-SYqa72bT2QwDa9 z0KG7)u_ppf+5dZ%UehIsaFMUYQ}Uf1FM7jUsL8ERj+jr5$XVvdqB8EcKYaEcnDe5b zByQcJ;R+v|b`Gd%)ASO039rqBP>DKm!|%jIMK?{?&TY!6g)+IgYdvW(wYeXfbpz*b zuuWSw+oC=713ukwIy?yvKmQx12v!MC9N%cN%_$pRx-U`Y9eQ=8j*Sj_ z)N%OfvgI9@0(7^l55Ri@9o8EMEfyR06n-boj|lUlDe@RYf6kT?0PcZ$5}w&fghY&`U&>^TkS=te&O zsZznFyE|zNQ+9Xq<8}vj(%?EAY-Nwj#=KF8Pe#mcUWf<5dNL;{)hPxi1T@rC!KOoh z^)E~8!Mapz#B^WJx^9dqNcNrDy*Ilk#zCW_I?W0{{#(eTcxG3(s{ehEC1r$F?k`gU zyp%7W0dKz|HwtgMumPc-A-U81BvR@m*Vx&Xq@IOzDBn}(?JI*b11CXG`e0UIbabFX zyxGj|rRKs}`-8;aY(aYQMSB9hF1_wQf3RB$^^~dCJQvfgWBzs_;BI*(OKQfF4s;lG zfX-~9N_(`$>dE>nJ7e`Qd!5;!%Hwt)V`TDgfUz-H)R13uY%Ka`Y`*Sed;26O7i`5} zCd`dRL1$Y8b%^wLtEitgK%F`MD&lYiy?vmP$G-F?>Zk|wxDr@Md|+{aE})(zDUVc0~|Y@P-<+V*N|Uxm!hpvUgjorj-;bx+S5@tZI_-}7ly#0Z!0 z88HBLRU&I~hMcQ7NwySlAhZsr2PmPE6ahz~U9qZ5xmXEN9LT_Q(9@Y?tY}%OK)@dX zU=UV_0p`V=6b%UDPWn>Wvqb2am_K>Iv@XT*1?haCnXI$_;n!%Xo1eB>UlmYSP`A<2 z62s~Lbf(wIzd`zQCZN+m%xLGP;8)EmWADE*N`+0csSTLQBIN&OiI*PFEqqto%Aet? z6dhFC$Y7Qq0dQ#K^U1xzU-MgMIF_t|S}=}Vm*jqh1Z+VsO1aj8&65b9iQ_(#0eSjh z95ggSz@iT61r;7621EXzD~1@P!Y(dYyS!Hn&tX(Z3~IY~Zl#NSMoN6CNaJALlkP&-%hV8~L`U(auArIfr0?k;4<@`9zU{jLF|9%>NGT z(hL^E$M>LjmDcII@W&P(Vg(3nUq-r)_dy2@tMB<)OCinAUo={RSpAIy1w+oHA9Ww6 zTdDFITYnyxA-^y@;g|AYBVYDY#B+&uyrW%Y2J84FZmzEXSSZ5E8D8#kMprYj1t95NPNpLsz;C zyt4ONMvz5)YH3H`0rl*0#3uXx@hj|D2JI;1OJtF3qBYa^-M{gTl9lpBeSYW7!^ z6!w1!e?h~+oapM;aitk&4SL4ca_@BZYreW=Gxo)Q550P8GUP)qXT@>{aKy)PC|`wE zp9QCH!M|Jo2NPG+OMKF@=yVqK?tt3GE zq(iHWo{$C?zXg3?j4;0({+K3c!~Kq!PN#8t_YTrY1qph<8xem&ngZNE0Ss@-PMJ=cgR7>u9Li=6w8{kE9faRq}_!fO#z8PlR^Pz0D|ZzAAlB3AOZBRkZd^L`Xp0Nxv1)RBa^BXJz-Y`XOnmkRLtJ@RU z-*Jeemx1!nidZ!%8`}@mi0?tKKL(Fk(o`5+aa8!BYN}ca-uVS-0)pC6>Ec0sjMWTu z3@m_Zplc?ede~nzWPeYN^Mvv<>@DK-%o-qYJYNq|uMVJ2&GHbLqRG*FBSK)-+;AGt=M35r=#HS`LSWAG+C6DSOa|6RVN8 z!XoA)$UwAM5fs%f1AoC$JD(?^-PZ1Zp5qcoRPDn6eD|$^xyHA`1>I3`uhLJ#T)rBv zP8>V-IWU}W}0Fr|i%LPeekm@z=e)MFplw1EW z1`@|YyJCHVj@|`qLLh>6N3W5HRM|e|OfgVpWlHeCzuwD6jk}QqBRE;VCD@SeRR88# zm*d=n23yR5&_`=S z$sh#USaoLz5!+uqbUACMTI+;A$?F`AMs9gywJ#5WM4SIZHj|)TQx~J~(?JO8eoRit z*%W!Nem(+S!HA`HzA;c|!*@U}JfvRlHU7b@aojZ{_2VBKB|J%!>!R|UQJlk3ex+2J{99TRR zOK;#pNe80v4&ojDOrYwX+R4tu{oS~@Vyu4<1mL8B!&Fht> zaKX6ufJH-YkMFJ&sFxIWF(+0Zvq}L&n8IS4SCB_~nM>KVO1<`V+8N)> zY({i773!10`qq%q9M`UeeMT7{?XiC&iqfOIqdvJoj5lydQMhzxgn&|98I`r-&iem4&?qLcNT;J4Gv$Rca6#f01~uxtt`Ac z{Vy7&VGvmuIs%p>yRkxL5-rC2ii$m!R)mS~<~)%Fwp2fIo{4kXSLk3`XR>#0?wy}& ze83owAuzx>rMZ15R+(ts9*=g@WyxS%V4CM2EPCLP)Hrj zPqrT9jyC|u1~Vb+_R^McTf)~eUwrrsEf(^x_3m>=Lz3n9m98+K9kPMz)N>17Ib#j) z)P6eSt#}xSKmQ@=+-FUo)eOXAAS=Vwo z3wKVUq|SgrI=!JBl}xiSWgxX`EWI+zNr_igim!Ec<&9*^TX$6#i@Wt)s$M`Wj^gqT zw=Mk`p=j3eCj9%s#6F*+yD8fNSoCrER_qr}oZSzj4{S{D+t-o?WIvH|?hBaEakZ-i z*R$kpM(7Ma8Lqr6udk@gfWyUY|oXan3La8Gf2b|Q2GxE*0AVI{I ziz7=dJ6upW1rjkQi!&JC$T_b0yBAyRN1H44ZLxF&aKFmQU&MdyUS)Q%Zccb|Y93u% zsP`#N+n8-6+y9rTR-=A}@1&}#*iSZDNIU&jG_^0WiuZU4C1G-c_SYDSTArkg>UCLT zJn`}dMLZD}rJRC~4GNbTa9Ab(*mU;7a1$V+gL)3q$|?=+r|58}3(yf1k9ONn7h68` zE1?h1;u+sxDt>CE_oJ(?p`{+pIeU*S_ zvIR-mY#NP39t~JDQdD2AowaXxyFy@6*r6ge;i$%miB&ticzFK%Xt!ejiRk#Jd_(h} zYhUa^ZRRef*$P5d!((f&Wr(-Eju14@SC)2Ok1DERPt|F0XnAGM|^E_^O&f4r{OugV;zi1L(^5b;c+O{S_lF>LcmEZ$Q(yXBvZ@lDyI_!d8oHNy) zxRs;Hne2BSnq;2Yz0&{O`Zc|O)@fr+{Ciz%Xo-<9UMQ5>S4d~lQ^;2dvckIX1>uQA zD4m?730nxGO+b^&6Txq#;(S%YxqmmkqaEJ48n&w6e}A{`y7%#T9?D1``GmQACvn84 zk|*>#8n}WP(MVD9EBm_ILQL2_3@TfQl!-U3@Od;D*>$};+-ZR?u!s1Pmg*5Y{U*1G zW%x3A(l@aY5phN`@j0Hf3hiy@i}_#XuNO_8sopVVkAm*AUR;+J z&HNENjZNj@FO!y@l62PiQ4qv)ve|cWjro+WC zvr?GX9Fp>5=2gll@SZzw5BLT{g`WT0ddgyw6DuLSc<^Mdx=n)n$wqXy6-W=+>waBy zx7br^HzY&9;qizaw>GNY@WAVM+FtalWjXw&crRJN$UgASl92pN)b2B3=$$`QuAvU6 z&5gW#4oOeN(@EPlmd-JT(-NJ19FyZr-mlZlvhfy69B0Fi^~ zl4eUyruW-p>CS8e41M0WMYWg{%X*6WT<&hkhu`$FuU$qPe%-|8vH~NF_(5&>{e<9V z`L@zpu{M<>+NpcOTjwQA$A1;SG@8Q)gr&yMI9Ii_nP}>x@5xhXG_-oC{|xXX!mXE& z$A`nLKadYR9O6RF7te%PF_?a**t=!+Am?-DJ6Tw>=Bo8`1;I`duPtHMw_L({VW$biP$MG9#zL`Ozy{kwbq2Y)ks(`Z)?n+QD~94$H8sj z5C@0GMvJD@i;+fub4_wIE{4o(@g17#yCR}$)-pKu^{MKdct$Y_dn4|vd#1>OHvJjB z*n&tgBKxJ=AuE&qK=Ig-h|!)>@=*;dm5WPd3z69m)R+}KsjN*0vR^g+^7=+O{Hkfc zBPHVYNlYD~C&LjMS%2j8?a~`YaCpo9>6Yx@HTx$|(>m&uBw&;T#rg?B9@q%i&Nt3~ zPP$DM{G1?Rl;Pdb>9;fyFJ5=Q1bhon0;gqJY=}YWqywf(`BI~!={0%$1f7jrgUkHc z5)X1L@NQtNl}|Zb@uU0K%q8j;zLXpHo@7?#VAbD(7{!hd5uoNvhGyogu-EzNXY+nK z3@uoL()1c!TeA+Q&ou2ZGyA~PTomffdAY^>tnf4arqqg3n*+f~czRyKZEB?JgDeTo ztdqf$6>$(3g3)WlB(XcD0FwL^ad%K)d`KQVjEOk|O5>;^NMKr(>;}7XnIDxqd!q3n zjcJmWPZIWo!9T;+x-3DRS8F?Ybnm=q%aT1eLU;I7hoV0hXzdj^zoMMeOWV8-hlid9 zn6m2R)5C;O)sq8|IIr}RGvR_T0VTWBmH65lHWbx0s5~pps(qQ=+9Fv ztw;DL0Gc|`!38Xcf=Zs8aWj(B0BAB&-pSt?b5u-}9B-9!%vMs)FR`;BW0=nvJiUyLSDQjlWO}uRVVsN&VC%0%vkk&S6_~L5oTLf=(xX? ziWg<@sM{p)%kzc8gmXxgtEsSFkURw`dXSEsMBxR<__Smts&BR9^DI zhLYt5>pITZ-LbCR+?#hYY`=VaC8O+*m)l9odcW5{%Mw{>ea1#e7gE1B#s_~%?Cota zjg}>MpC_#dv}Mrcp$T^)UrW1B0}b;I6aud~f1UH$DVctt>?oUrydVU;t^<6Gru~a6 zhEgRFMo@d7Erq82`CecB5!#OO*A-j!nf0@CaOQ=V`W!EOJ2jeh-r&5Mru>EGBxAAS z?f;R=(YdC?Te#3Wh@Qva9RdI>cnB-0#0nn2F~UNk2bTggHf++2gh zGva=RU%YhUf;J3(-ZlRiTaw|RzyLpyf(pfl z7gU@PJ6w{z=#yE;&Lj6=;`EMMeEu6wO+nu-#`JwA;r$c<5N;!yaViK5qCYhg@%-%o z-utLRCxZ=vt+R8IA~3q6b?4d*M&8e?A(NlJE~Dh+>P}g`hk%Vv7}*}>=urhlCG^Qt-z5D#7 zfRXu6%f8AKlj?b1(tX(&9^B`n&u$H0!evfV0MO{GHurs$k5xwS2y^ z^}Z_<|A$FPqYxly5(@vu1$2=*RDCV#gUeS5p{2_5dWF_}eznD=;XOXI(IrNHP4)IR zn?ugk?yUolkEEjCq!UKGNJMn2EE5rwlI)UE-ot&zSSH!W< zkk6&{Kb-?V+u^1kvNKHI8EUbA@Txs?!C*pT+ND8HpA$UQ(#v0<3C{mEooYOtuP8W{ zB|tYlnDyZtD?doM&D!3Ss-(XlFdB~gd<1N(OUYN| zPYZrF{?rDwIxPg9t)xqCkCR0oH}A)N;F>k@NV(b>*+e)e6iPICR)c-4ZqdX zD0Nnst}VCuND+CQC=TspypEPrdrxoc$ZN_URZjX87PA~cK6<(U+e@Td96M9e@884n98(LMQL{-#j(e#qRz_zV02GqMY`eCam{; z@Y?{~+@IbgdHIEv`6P9V(3@PWPu383*( z62a&pk3y5U6+2CIRHqC13V55}h1o&>F~j7(16_%u!q)!`<$WW0#QFRyMx~lZaAG+g zd;Nzho!b^9fF?Tv8=V~gDxTmv`v0*l|G2_m1gqyy066}bi2ZCp($^4dgSBkrjfr2n zDsa;GM z%rQkAz5b;^E&3P4%Lx#=>N;Vhs8<;bPitfcOBAA~0h+Z%^a)R9RdfMiQ0Qt5m(1Nu zN7>J~)B=AEZc|nC4j|e*6$td0sn0`gDOfY*Kiaa-@)n3bT=)JA-qKJ^X1w`dWoI4@ zb@cb~?<~e(F!r^KB@HQ(p=23b6tZQB7($kk3Xx*ImW0Zd%2KwF$dV`_h7>B1gbITe zLKzam%sh8I=l92R&hz~7IF94^UibUG-@AP7{mkd{el<97<3WI;bNah)eQDB-xyWot zRLna!r($`B?)mvw&eT7A8*Ay@F$tm?r?R$f9A2t!yv^dMyJPaVkOSVVo0ih{ZyTF$ zC)rlQG1I%cgBjPpwm6HuJUyUMm-JGjvA%xNrYV>`yZVbV|04DGGnppAUr+5>4>BDW z@~=rKP#x>T+1@kxculPB%`EfcxY|Lxdu!2dvlKoIP3GU#Cp;+`T#|j|-8p~nEju4{ zd~aW<0$VA^-K>7tcGt!rrs=kR(rESkW7mz8t-d@|1*fuAXUFp!it#w@1@0%Ir{J+K zD4IHvgl?B34R2|9I@J4~YCB_CE+QNzBKui@T+930%IuZj?={pr*LviA>pQU*M7Dcv zl)d*qOd<%St|vc!Fl#Y&ZtuB=B26A&u1GvR^=jt24CCA9+mF0@PfNNA_=m>RcP)m* z(;qB{SFhX$II@L|-{0hSOh+--ci3%HbZYl!9KX^!Yxomw1;xEdh znrZ^SR**eRj@hMUh*_OF{jy=%%il^_$lIP%P1hjJ`$Cb}99(%MnWlBD zJ-9vmrfKk+2S#+g|R3t$FT1JYw&?=+L^$B^r+jCprs#+H+u!b(cR3%yq=Y&ZG5 zM@VZDOtnA?Y|o|_?1rMU>4K_tM715?L^G?_bGw8t;$Oe^Uj|V60_dBAK6a;;DQHFcoG%98R-WG9;o;hy;aY=>v<8t4#f{d z;$6!Vhw55BMq+5VRs4tpkG(!l8{DMvI_r&4_~TSVnL4ne;1=^`UFOttUfi>9x`*rs zt!e5A4@RbQ{`T^r5s6J1m4b65(Lfu$_;sXXNRIN*IJ8{S5W91hqp&Wm4V@6nzaoVK z*XzsuND^hQx2RJ>=JDf560PxkYNyhc0>`gF(Pol{t_xS%0JoeG>Dth;%oHIf3 z##x&`Et1j=H^~+NsjT|5$}0K@xP;v#N?7Q7MYaI^-dO-Y1?Ug*@lDKy)aUn?+_}p) znao{yp8|ezPY;mm$I2t0OCNFFHq-`l%P-skXc2o<wSpdhx$xKk^!s7@+U}X8Q?*YU~i~qj53csx9nmH^736#nPW0hmQI`OTmmi zqJJvIl>nUD;(Ed^D!>0}kBl zL5Y=7kHb|5sKj(-#1d$6cabp_VHJkV0H_!nx8v_boJN}p0^Ex!^67T%5BmHg(v59t zv;KXXZ!39YUD$uHF5%-BRp>prR!jpt0!y1Kiuuf&c<91L0boUy9w<)h)N}*$uQ;dS zF?7P>%xhm*OoPjgB`Aa7&}d@6S=y6nGxsTB4r+UCqo878x%u#s;#JW42YG?n%33?; z!EG8(MbW;n20?n?NrCoqmF!Jwj9FM_%)2U_$FUVOY?@eb#g}`ev&8lNqZn<-tBR;r zGMUB2*?M6g9KaAH6qZVS3QOQAX-y1m?nUp$pqID|_GDE8=Oy4SgAd)nv8Sy({|SGD zvL}I`?1GZpLzrBl-YNa=nR90==v@0s8Y%EmKDFSrG;C{UPJ@$1oRMI+h`j4A)un0U z$my;Aa^i;}k_~l7Nw@^9W|Aj8WRY!{bIXr2AS}#mZ%TITfUM9qh^*L$9(YiYILx6DOgu@jh5^LLxGs`WX=4Rj>zUqa5k+I}1m3k62 zx1Di74(-0kbB_CW(6aXtx#d3^&SFa;_rl4aa2y7fuO{>_F+F;~7e+}h2!>*4!T4eW zy({vPm$XrU7-VlyE*z)SjelCGbM}%@fy(OG#a3l)w6w)dwU;~1!rf0{OgRtD*}EPM zUV)(G56mJYS&=Ya`Jk&+90!X|rkPf~#wWIhQ8IjXadGCLAFn>7EAP=1j7C2mD>7`| z3YpXj0(Vpr@z1s~qbCNq&0_XW5vqvph&Tci=7+kLMsqAaYNCt6KPik&8V4ahiW`?N zh*{5nv**yBqQu#u%BjE~1eF;S$qkf`sV}Zf5{%Iq8PQb%71a27W3NgP`7Qz4O`$WgImw_*+PiN7NKQ9i ztC}iQ)f};Wn>r+?ShO3<8*$|rkhVSFT7-k$ruo}EE2f8^Z_R#qV3Sp(Bz$(fFsOKox7$`ZW7tCJB>jtaVp>|$bYp5}mmWybN zPn(v*2J`6=`N>CCM3gp8kez5z#|~(RL+Y(-O2TuzR^XkZ7i|0%haaswq9ve&o!06l zd&UcNAO#b=lXXA>u0eh^JI1Q?Dt`>;(S4xB3m-sswI#&V1kCIw(q)BW5Gnxd*pDl? z%6q2CpP^4i1Tb&x9lYyn=?UIY`ljQ+8BuH!`?f$Vki42f%jrT66zS#&1s@!BqZYyO@6P$hK~!>l znl0y`|LxI5y0XhG`>!w;do@ps)%Gh*2QpGgBL>{4v4S1jx^+1nWycSb*sWXP*sr%) zQdo5;RK&L$ChU|2FfadoW&`i2(K@4BSJ56GY^BJ4-E{<*mpmOgY&zV&LA9Nr3{=6S zE%5Sv1hGWOSS1YdxZ*TDlG(kLw(LHOcerp4EN?>hh{{iXM|6)N@W>z@P0a5yIV@e$ z-vVgLP6iX!UXi2sYd$-V(b9c1Ro}B|isCJV`$q45y~+OuQbHHW`C3L+GlsP4HMsE0 zS;X|#e9I4rjvCOo;!om$i;xIs@itxFFmn0GE_z!V!vM%2-&m5jK;SkM$V(;=Jg6$d z)TxTt6!(*79#-TsA<$i`lf~??uaX@B>=re|oaOj_z+oGfJvf{|E~TZ5%|M}FH9#^^ z!W#sb<+A2y*68HInvq0*Tzg&R2`i(@%P);W){JI%#`TkgLDP8t>Fwp`Ed7bbYiu~m zG!^fkP>F?N-9`nwab$|B{BspCMJ18(Duf2qQ4`jA?$mH&!b=zo$z)qm&)F0S_n%Y; z{I8X5Yl50clXp-&Pt-sjG$u$By6DcBD0vh#Woav_%>~wq<2wp)vbz0A^)h+!)HRCI zvRxp`7D$nUWuWYg!YRI2Ad7smlw5r(LV8sH6famfIux=Y5Mdy#|8tahgw5UaPp0f` zvmrk@K4x*YQY{CGkMck4P{16n4_2Jqowo#tQv;7&*+{qWW}mCAzwarQz5$YQrw!!> zsompXLWElIPK9KNa}=pw#;(c=#tAuJF?90 zBB2>2rlBpE#uwwdyR$OCqn_i zIfk?wbWG-DEy03syO9t7Q<^FPH&+Tu7l}a$^~kDD#>FDu4}|uZt=H!v@QzlI+)knkGRU?SH>ou5%}16@YM_s_I`0WZ-)EWy z!OSHfX@IGE=?fQ;GC>$skv2^?WnN&KgnTsS3Y``PeHSNp6w{xL1Mhb~ZwUL{Qq8VD z+?L7fKzC-S2-6HOt6AF&w96#>mi`rNSdq_)kN*^-n(E$|aB2h1=mI$~_npU5w_Lnc z*sw^?-6{Sv5y6h~Ykz`1fhkBWCHQlbTh++6I^=4eMDNZ#--yWXOp9&*IstVq?xrbn zxW-rCsX2lh#<-zO(_4QluIa|Eln4bl1#LGAWRSSRjtGB5q3hA-sRcPxCsCZDAoL^E zG?of1kmhh2CyH(yMA0Fhfn(zK_6~}9T~N%r@OQyafPsTE%^Za+yD`%Yo4@`Le2hh8 zEsV&e^`5ldD+betlXnh7bc9 z_cdj`h5P74Iati3)H;sSuFg7ny}TOUeu#MzVHZ8z6CBcbP7}b-qBOXQK0?uyxDI*{ zauTTf$+#=|7+0gsY;%jk&%44HJgW{H92N6z=n4cc?)K9cCxNO#O1$Z7x_-gs|#N$NQq<( zodovY)-r&7l2;*mbV>;d)sF+IV7h~+U9L+up#jgvJ-OA(zu_w@*!#nBC!%a`3pAoW zBlv}zCW^inR=-s3fg|@7@Dt)?ft6QSmt05`{nOiOcWgDq))KKx_bk8DEsoX6&X3J9Ev|Da9M#ligCEsV$ciH}q1URciYLlL<=(ZPMi8= znubp^QUP5ZWBN?VaziJG5(mPqI-cBpgHS@6(sLJeF2x$QIxR;3fEe>ge+;_j{k>6n zJudtSWU~XJcBF>F}>m|SQ2H)}BT%Tmwc;F^CwDTc5!2m2j z338%%UQF}isVh;a_dhm94-gJ51;=Cc`N@Vp2$&HG+gro*m7_qvK^N#ZhyeWtI25Ci z#SaE-xjA!TZ(8rqhCea$o?i#=2c5midAc=;o|Sd6^~*i$&U$OWChz1M7msQ%H6V%* z%(M_=>%XgycAb*}oQAD_yPCH?D2_cQpkd8Q2ZON0?w94tlP&7UKmDP;dUCh-lU=J2 zVYPAl+R7|+5~~Rnl~7BHSpkshDQLqAj%VCNj6HzuYZ0|Hyam*srRfDECL&R#R(etz z2#pcs9+4uW`k+ZK0!Ue)`H&GLO|xt zK=~prMn`5`jGE5F;B8r1|N0m~#(^Z=>lNy2c-Neq^xnr7X#h(Qa>FoV}wQ=JD7sVt%h85wQec>fVX(>wFNg8g+hUSmJpki%=hY7yK!uHj| z2SoA?nF7U|vey9~p|hRqcH#5O2Y^voQ`*4P_;&I|oc^m1Vi!M)Q&ddn{=#LHI{jvU zo`R0oln(LX%zG&B6 zuW7P}_alOQJOrz`&Hf|x$Sh3hwFk#1Hm|q**o}+c-*F&-h3bteICPl`R<=FR?=HD* zSx|6#!Q?*=vxPv!v-tJjQ(A~`X@^o?sBF)>ngrzO->TdvJH|YG9tfX+ft53*@0zNTBoNEwZ`$mne6YVzcNf$Qm zh63;2h3&g~tx_d*kWxkw;(J4K?;gZRxZz>L7SLA7?RZ zr=A}&sP0wgcs-(?|5$T(xO*~fB4osEXYd-flF~FvP{h|Av;lT2sI{z}N&_0}cC(E5 zOk)Fd_n*B_c>r>0?q6%;8)BjUPD)<004@@9M&$SVA3(&#Fs$zcu zVJ~BQ`K@ufmATgZF5w_Uqaj7T!6iw)_w%o8#n>Qq!%G>;OQb9cMRa$HPFLYzoyyZa$FGP)I^jtIpb$-m@YlL)M#LpLvBOF#ejI=LV!9t#x*ctqx>=g+!)(M*2 zZVvSoR8Q*P!78;OU{>!B#g#MSTo;o&^dDxYQufo&ePG44OO}O2#~uJjzRekoeFnWX{N;!fR4aY4Je3S{zW3 zOA}>B>OduuXkbt5^o9ghdzlxfCaqH$mU&ZuqDjU$h;Vql={niAo;th&42jAk!7r4il?ct65^{f?=%(iPLA7AE2L2Er$~(pKel9^9Ffsa#2XhS=ZGGMVt?P(74yVkqxu44 zYqY4({xF%!EG?-1CO^3&(LE(ig>mszUrGWtiB+O{T@W}o3kKLj5~x0B2TujpO!XQ1 z{4WRF%H2f>NeE?|%!3skB7WgVwXO5Vf0Rf>8y*@^cl4A6hFiU8==O1%M!I;|_dUj2 zWgJ)6Yg=0Be5_&K2F>lknFff`sf(@WZ)c3Nb#2Ohj>a>f?d%_xF!>GEl^m0B4s!!)Kf~85R5-SCHu&McTRX78*FLO;cBd;(K3SvAisNGEtFgJ;HgsyJamS}c<1eVhN?LBihKshP28t3lv>-A&#MP3WU$T>F~%(F68Q_T z4vYXO5QL(*U9)D%1B&d1v;|NP9hWnOt__2OInr?4f_d}|I4{JfeJ20F1J{K7rvCt2 zxakhZ{>K*%3g9=rdhz&8?_>P`-`oDb{7YBbH?|-|rZimAEZnUMfv { + return this.post(`/api/workspaces/${workspaceSlug}/export-issues/`, data) + .then((response) => { + if (trackEvent) + trackEventServices.trackExporterEvent( + { + workspaceSlug, + }, + "CSV_EXPORTER_CREATE", + user + ); + return response?.data; + }) + .catch((error) => { + throw error?.response?.data; + }); + } +} + +export default new CSVIntegrationService(); diff --git a/apps/app/services/integration/index.ts b/apps/app/services/integration/index.ts index 9cc146866..2b32a5bd0 100644 --- a/apps/app/services/integration/index.ts +++ b/apps/app/services/integration/index.ts @@ -7,6 +7,7 @@ import { ICurrentUserResponse, IImporterService, IWorkspaceIntegration, + IExportServiceResponse, } from "types"; const { NEXT_PUBLIC_API_BASE_URL } = process.env; @@ -52,6 +53,22 @@ class IntegrationService extends APIService { throw error?.response?.data; }); } + async getExportsServicesList( + workspaceSlug: string, + cursor: string, + per_page: number + ): Promise { + return this.get(`/api/workspaces/${workspaceSlug}/export-issues`, { + params: { + per_page, + cursor, + }, + }) + .then((response) => response?.data) + .catch((error) => { + throw error?.response?.data; + }); + } async deleteImporterService( workspaceSlug: string, diff --git a/apps/app/services/track-event.service.ts b/apps/app/services/track-event.service.ts index 3da8b8436..a87a0ff07 100644 --- a/apps/app/services/track-event.service.ts +++ b/apps/app/services/track-event.service.ts @@ -98,6 +98,8 @@ type ImporterEventType = | "JIRA_IMPORTER_CREATE" | "JIRA_IMPORTER_DELETE"; +type ExporterEventType = "CSV_EXPORTER_CREATE"; + type AnalyticsEventType = | "WORKSPACE_SCOPE_AND_DEMAND_ANALYTICS" | "WORKSPACE_CUSTOM_ANALYTICS" @@ -776,6 +778,27 @@ class TrackEventServices extends APIService { }); } + // track exporter function\ + async trackExporterEvent( + data: any, + eventName: ExporterEventType, + user: ICurrentUserResponse | undefined + ): Promise { + const payload = { ...data }; + + return this.request({ + url: "/api/track-event", + method: "POST", + data: { + eventName, + extra: { + ...payload, + }, + user: user, + }, + }); + } + // TODO: add types to the data async trackInboxEvent( data: any, diff --git a/apps/app/types/importer/index.ts b/apps/app/types/importer/index.ts index 134248a71..81e1bb22f 100644 --- a/apps/app/types/importer/index.ts +++ b/apps/app/types/importer/index.ts @@ -32,3 +32,27 @@ export interface IImporterService { token: string; workspace: string; } + +export interface IExportData { + id: string; + created_at: string; + updated_at: string; + project: string[]; + provider: string; + status: string; + url: string; + token: string; + created_by: string; + updated_by: string; + initiated_by_detail: IUserLite; +} +export interface IExportServiceResponse { + count: number; + extra_stats: null; + next_cursor: string; + next_page_results: boolean; + prev_cursor: string; + prev_page_results: boolean; + results: IExportData[]; + total_pages: number; +} diff --git a/apps/app/types/index.d.ts b/apps/app/types/index.d.ts index dbd314826..8c9592917 100644 --- a/apps/app/types/index.d.ts +++ b/apps/app/types/index.d.ts @@ -19,6 +19,7 @@ export * from "./notifications"; export * from "./waitlist"; export * from "./reaction"; + export type NestedKeyOf = { [Key in keyof ObjectType & (string | number)]: ObjectType[Key] extends object ? ObjectType[Key] extends { pop: any; push: any }