From 96b2579d694566190ca93bd36a1ea870375bc505 Mon Sep 17 00:00:00 2001 From: Dominik Koch Date: Wed, 20 Nov 2024 11:30:59 +0000 Subject: [PATCH 1/5] feat(i18n): add german language support --- .../dashboard/settings/appearance-form.tsx | 3 +- apps/dokploy/next-i18next.config.cjs | 2 +- apps/dokploy/pages/_app.tsx | 2 +- apps/dokploy/public/locales/de/common.json | 1 + apps/dokploy/public/locales/de/settings.json | 44 +++++++++++++++++++ apps/dokploy/utils/hooks/use-locale.ts | 2 +- 6 files changed, 50 insertions(+), 4 deletions(-) create mode 100644 apps/dokploy/public/locales/de/common.json create mode 100644 apps/dokploy/public/locales/de/settings.json diff --git a/apps/dokploy/components/dashboard/settings/appearance-form.tsx b/apps/dokploy/components/dashboard/settings/appearance-form.tsx index 40247fb5..38f0d48b 100644 --- a/apps/dokploy/components/dashboard/settings/appearance-form.tsx +++ b/apps/dokploy/components/dashboard/settings/appearance-form.tsx @@ -37,7 +37,7 @@ const appearanceFormSchema = z.object({ theme: z.enum(["light", "dark", "system"], { required_error: "Please select a theme.", }), - language: z.enum(["en", "pl", "ru", "zh-Hans"], { + language: z.enum(["en", "pl", "ru", "de", "zh-Hans"], { required_error: "Please select a language.", }), }); @@ -176,6 +176,7 @@ export function AppearanceForm() { { label: "English", value: "en" }, { label: "Polski", value: "pl" }, { label: "Русский", value: "ru" }, + { label: "Deutsch", value: "de" }, { label: "简体中文", value: "zh-Hans" }, ].map((preset) => ( diff --git a/apps/dokploy/next-i18next.config.cjs b/apps/dokploy/next-i18next.config.cjs index eaefab3f..6d4a88e8 100644 --- a/apps/dokploy/next-i18next.config.cjs +++ b/apps/dokploy/next-i18next.config.cjs @@ -2,7 +2,7 @@ module.exports = { i18n: { defaultLocale: "en", - locales: ["en", "pl", "ru", "zh-Hans"], + locales: ["en", "pl", "ru", "de", "zh-Hans"], localeDetection: false, }, fallbackLng: "en", diff --git a/apps/dokploy/pages/_app.tsx b/apps/dokploy/pages/_app.tsx index 9b621a45..54f9238a 100644 --- a/apps/dokploy/pages/_app.tsx +++ b/apps/dokploy/pages/_app.tsx @@ -71,7 +71,7 @@ export default api.withTRPC( { i18n: { defaultLocale: "en", - locales: ["en", "pl", "ru", "zh-Hans"], + locales: ["en", "pl", "ru", "de", "zh-Hans"], localeDetection: false, }, fallbackLng: "en", diff --git a/apps/dokploy/public/locales/de/common.json b/apps/dokploy/public/locales/de/common.json new file mode 100644 index 00000000..9e26dfee --- /dev/null +++ b/apps/dokploy/public/locales/de/common.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/apps/dokploy/public/locales/de/settings.json b/apps/dokploy/public/locales/de/settings.json new file mode 100644 index 00000000..3125dbdf --- /dev/null +++ b/apps/dokploy/public/locales/de/settings.json @@ -0,0 +1,44 @@ +{ + "settings.common.save": "Speichern", + "settings.server.domain.title": "Server-Domain", + "settings.server.domain.description": "Füg eine Domain zu deiner Server-Anwendung hinzu.", + "settings.server.domain.form.domain": "Domain", + "settings.server.domain.form.letsEncryptEmail": "Let's Encrypt E-Mail", + "settings.server.domain.form.certificate.label": "Zertifikat", + "settings.server.domain.form.certificate.placeholder": "Wähl ein Zertifikat aus", + "settings.server.domain.form.certificateOptions.none": "Keins", + "settings.server.domain.form.certificateOptions.letsencrypt": "Let's Encrypt (Standard)", + + "settings.server.webServer.title": "Web-Server", + "settings.server.webServer.description": "Lade den Web-Server neu oder reinige ihn.", + "settings.server.webServer.actions": "Aktionen", + "settings.server.webServer.reload": "Neu laden", + "settings.server.webServer.watchLogs": "Logs anschauen", + "settings.server.webServer.updateServerIp": "Server-IP Aktualisieren", + "settings.server.webServer.server.label": "Server", + "settings.server.webServer.traefik.label": "Traefik", + "settings.server.webServer.traefik.modifyEnv": "Umgebungsvariablen ändern", + "settings.server.webServer.storage.label": "Speicherplatz", + "settings.server.webServer.storage.cleanUnusedImages": "Nicht genutzte Bilder löschen", + "settings.server.webServer.storage.cleanUnusedVolumes": "Nicht genutzte Volumes löschen", + "settings.server.webServer.storage.cleanStoppedContainers": "Gestoppte Container löschen", + "settings.server.webServer.storage.cleanDockerBuilder": "Docker Builder & System bereinigen", + "settings.server.webServer.storage.cleanMonitoring": "Monitoring bereinigen", + "settings.server.webServer.storage.cleanAll": "Alles bereinigen", + + "settings.profile.title": "Konto", + "settings.profile.description": "Ändere die Details deines Profiles hier.", + "settings.profile.email": "E-Mail", + "settings.profile.password": "Passwort", + "settings.profile.avatar": "Avatar", + + "settings.appearance.title": "Aussehen", + "settings.appearance.description": "Pass das Design deines Dashboards an.", + "settings.appearance.theme": "Theme", + "settings.appearance.themeDescription": "Wähl ein Theme für dein Dashboard aus", + "settings.appearance.themes.light": "Hell", + "settings.appearance.themes.dark": "Dunkel", + "settings.appearance.themes.system": "System", + "settings.appearance.language": "Sprache", + "settings.appearance.languageDescription": "Wähl eine Sprache für dein Dashboard aus" +} diff --git a/apps/dokploy/utils/hooks/use-locale.ts b/apps/dokploy/utils/hooks/use-locale.ts index e45a0e6e..5aa5bf62 100644 --- a/apps/dokploy/utils/hooks/use-locale.ts +++ b/apps/dokploy/utils/hooks/use-locale.ts @@ -1,6 +1,6 @@ import Cookies from "js-cookie"; -const SUPPORTED_LOCALES = ["en", "pl", "ru", "zh-Hans"] as const; +const SUPPORTED_LOCALES = ["en", "pl", "ru", "de", "zh-Hans"] as const; type Locale = (typeof SUPPORTED_LOCALES)[number]; From 6d674a4c6bc0031bb7cfaa5d1fa4051c5bdb5752 Mon Sep 17 00:00:00 2001 From: Dominik Koch Date: Wed, 20 Nov 2024 11:34:13 +0000 Subject: [PATCH 2/5] fix: code format --- apps/dokploy/public/locales/de/common.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/dokploy/public/locales/de/common.json b/apps/dokploy/public/locales/de/common.json index 9e26dfee..0967ef42 100644 --- a/apps/dokploy/public/locales/de/common.json +++ b/apps/dokploy/public/locales/de/common.json @@ -1 +1 @@ -{} \ No newline at end of file +{} From 6dff11af227449e47376ecef3535e377aca628f4 Mon Sep 17 00:00:00 2001 From: Dominik Koch Date: Wed, 20 Nov 2024 11:35:57 +0000 Subject: [PATCH 3/5] fix: formatting again --- apps/dokploy/public/locales/de/settings.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/dokploy/public/locales/de/settings.json b/apps/dokploy/public/locales/de/settings.json index 3125dbdf..e2ba0623 100644 --- a/apps/dokploy/public/locales/de/settings.json +++ b/apps/dokploy/public/locales/de/settings.json @@ -14,7 +14,7 @@ "settings.server.webServer.actions": "Aktionen", "settings.server.webServer.reload": "Neu laden", "settings.server.webServer.watchLogs": "Logs anschauen", - "settings.server.webServer.updateServerIp": "Server-IP Aktualisieren", + "settings.server.webServer.updateServerIp": "Server-IP Aktualisieren", "settings.server.webServer.server.label": "Server", "settings.server.webServer.traefik.label": "Traefik", "settings.server.webServer.traefik.modifyEnv": "Umgebungsvariablen ändern", From 238fa5d02d2458ecb9cc8e0b211c4df4ae475383 Mon Sep 17 00:00:00 2001 From: DrMxrcy Date: Wed, 20 Nov 2024 10:08:05 -0500 Subject: [PATCH 4/5] feat(add): Ryot --- .../dokploy/templates/ryot/docker-compose.yml | 39 +++++++++++++++++++ apps/dokploy/templates/ryot/index.ts | 34 ++++++++++++++++ apps/dokploy/templates/templates.ts | 15 +++++++ 3 files changed, 88 insertions(+) create mode 100644 apps/dokploy/templates/ryot/docker-compose.yml create mode 100644 apps/dokploy/templates/ryot/index.ts diff --git a/apps/dokploy/templates/ryot/docker-compose.yml b/apps/dokploy/templates/ryot/docker-compose.yml new file mode 100644 index 00000000..1fcd80ed --- /dev/null +++ b/apps/dokploy/templates/ryot/docker-compose.yml @@ -0,0 +1,39 @@ +version: '3.7' + +services: + ryot-app: + image: ignisda/ryot:v7.10 + networks: + - dokploy-network + environment: + - DATABASE_URL=postgres://postgres:${POSTGRES_PASSWORD}@ryot-db:5432/postgres + - SERVER_ADMIN_ACCESS_TOKEN=${ADMIN_ACCESS_TOKEN} + - TZ=UTC + # Optional: Uncomment and set your pro key if you have one + # - SERVER_PRO_KEY=${SERVER_PRO_KEY} + depends_on: + ryot-db: + condition: service_healthy + restart: always + pull_policy: always + + ryot-db: + image: postgres:16-alpine + networks: + - dokploy-network + volumes: + - ryot-postgres-data:/var/lib/postgresql/data + environment: + - POSTGRES_PASSWORD=${POSTGRES_PASSWORD} + - POSTGRES_USER=postgres + - POSTGRES_DB=postgres + - TZ=UTC + healthcheck: + test: ["CMD-SHELL", "pg_isready -U postgres"] + interval: 10s + timeout: 5s + retries: 5 + restart: unless-stopped + +volumes: + ryot-postgres-data: \ No newline at end of file diff --git a/apps/dokploy/templates/ryot/index.ts b/apps/dokploy/templates/ryot/index.ts new file mode 100644 index 00000000..1d8d5ce2 --- /dev/null +++ b/apps/dokploy/templates/ryot/index.ts @@ -0,0 +1,34 @@ +import { + type DomainSchema, + type Schema, + type Template, + generateBase64, + generatePassword, + generateRandomDomain, +} from "../utils"; + +export function generate(schema: Schema): Template { + const mainDomain = generateRandomDomain(schema); + const postgresPassword = generatePassword(); + const adminAccessToken = generateBase64(32); + + const domains: DomainSchema[] = [ + { + host: mainDomain, + port: 8000, + serviceName: "ryot-app", + }, + ]; + + const envs = [ + `POSTGRES_PASSWORD=${postgresPassword}`, + `ADMIN_ACCESS_TOKEN=${adminAccessToken}`, + "# Optional: Uncomment and set your pro key if you have one", + "# SERVER_PRO_KEY=your_pro_key_here", + ]; + + return { + domains, + envs, + }; +} diff --git a/apps/dokploy/templates/templates.ts b/apps/dokploy/templates/templates.ts index 46806a8a..8a137678 100644 --- a/apps/dokploy/templates/templates.ts +++ b/apps/dokploy/templates/templates.ts @@ -867,4 +867,19 @@ export const templates: TemplateData[] = [ tags: ["support", "chat", "customer-service"], load: () => import("./chatwoot/index").then((m) => m.generate), }, + { + id: "ryot", + name: "Ryot", + version: "v7.10", + description: + "A self-hosted platform for tracking various media types including movies, TV shows, video games, books, audiobooks, and more.", + logo: "ryot.svg", + links: { + github: "https://github.com/IgnisDa/ryot", + website: "https://ryot.dev/", + docs: "https://ryot.dev/docs/getting-started", + }, + tags: ["media", "tracking", "self-hosted"], + load: () => import("./ryot/index").then((m) => m.generate), + }, ]; From 4967d3bb311c98870913bf95e4b52f964c7767b7 Mon Sep 17 00:00:00 2001 From: DrMxrcy Date: Wed, 20 Nov 2024 10:09:05 -0500 Subject: [PATCH 5/5] feat(add): Ryot Logo --- apps/dokploy/public/templates/ryot.png | Bin 0 -> 21319 bytes apps/dokploy/templates/templates.ts | 2 +- 2 files changed, 1 insertion(+), 1 deletion(-) create mode 100644 apps/dokploy/public/templates/ryot.png diff --git a/apps/dokploy/public/templates/ryot.png b/apps/dokploy/public/templates/ryot.png new file mode 100644 index 0000000000000000000000000000000000000000..8f03b124d3742663f38982995942a8c237e0b5e3 GIT binary patch literal 21319 zcmcdSWm_CevkRQXU4y$V?iwJtySuwBEWstg9fG@CaEHYmf=h4+ZVB#wdH=-yFi%ZS zRZI0$cXdfesw&H%Arm13001;OSxI#O0QTb*7J&HQ2QUVcfIk3*g{-;~0N_Ih00e~q z08byEf{p+H4|V|H#1sG!Oa}l6T(hBS!XF4&a|IbmzdvAE;=H` zKGs|;0H6*pC;3IwYxOk8!_-J>u{W@uPAQYlDG4g1#efG=T{i3DqIa?RH-{9+c9{DPv3w97pJU zXk1eP3yYmJwj6pGG=%79MPY=JqZze>?j$m=nk41#(vD%O0Z`CU0Y^qtDZ=MtaX!HW zDb85GOB8MOFRXuc2jo*5LP(GqIarcuv0pBpbWe(~2qF0xUCZHT5Q-Gsd8*$Ez>>YX z7+PjC*1rt->rJw$(0b(F+Tuhh7x=j}5l8{jSSb)&LyF_C-k|USXP%)0%LTPI%tI`9 z!|^l){A?ccoKkdA=;>ZVguuj(4zHfn7JU`$1&W;IY~Cy3uvmi}7fT#da((RMOF!hG zAryIjNB08{cMP#cq$ZS?$;`wb#*tqhMJ>JJQefm{QFOGx3li9|{URFX&i-mES7-+o zrXR$|=g2^sutI4r9g0+{f@S|A%tAPUh+aZJsfc2cEv|h{Ey|gsv>4y(@X>ZEzdmP( zgh0p{HwQ~hErS(L(qk&)-ttP2r!H`dGz0YjGtM$EDDwfLI;9?9DlD4hpr5?l3j(mo z7O=^|35=7dSHGJi^+hOmD+U1(syA+6otPOKi zh$rL9N)3zMy=(L9A=LBnyT=Ct_5+cRL+{EPT*z+8r(a zx38>ojKp3M1v^J_y7Dhu0Qt-3k3y=xJY!LeTh!QxoVTdSvEn7a;|CZ>t{5XzWT5T@ zanH#X0-Xf-)>eO(+=BAj5 z#n!$m5b91q&z0J`Vk`T-eBi~CSzmV7w#FJaHb%HB+fSP_UW(aVz&p9k`6g-?Z3;j8 z9i3n<0u|bb;eRCI!imO0VV~aD=qLUyu}p^WD?BDrBKv#OCKw295ZYtUYkrv9`6EXntd%3$Z}%o&VqvI z?S;#gMbMt!9hMZ1TBJ(hK^eZ}+Y0e<<5juhdR*{X&SGjyYLR}P#crknGrt%07wI&I zRmU8X#pTDcIiB07vm^xY_*1vpkgUY)p?8}m9i2@*c_7NIjy=QAj`Ri`E;*7ugqtf0)@m z&{9(vX0-flugJz~Me?`eGQU>Gm6}D-^CvCQr{U-1_BZi^YtmNE!Lp=z&EaVM>$(Pk zc8=HfT(*@RpLm^XwD2c$Z>vidz4ZyAG?PI$>q`oRNBjOB`kc_xX(m#UTBLyo0#S_< zw?8fiBC8o^hS8#tHrys1ouG|g-)ur)?G~mRuzGcBRzG+32hOK)d!4{<`gCqFIS9IU z#R7pAMbT`=K(4l=S5$9oc>z7k5|eQ;Cl%#lwpRAYQ`R^9_H}Zg{PGSZ^~1tYY=x6w ze|q_9e7D*{w@Gt{T=SOYrmGs|5@%x3KjB{3gg&$?k5es!vH6(0f|Qq$`;B9hvfsK|L4@h0}1L?Y)Vn)RCSb9xkgFKZ+-=d&FJXA^nlj}@sXzwI84 z2X{(WFx|()n(M(d9ni75_w9Da*v0Ilv}8KxbFNsTOx0L7mmUt!{@}ear`R|aGiZ== zdqq2)DEc?u)7;#LO^dqEM4+9v_V{DID8S0Q$yTi?k`g_SK!pi?3*LB_phf+7F0-fG z0wl9Cy1Y!8ajp0Bl@@e}po}32bMaU5G*`xVpT1-!xY0Y#Wb}HFvhB=*n$IV@wbwjC zTbLQyBX+NRhn_X&iS7MdnAQIIJ$dIvV>x`>EA4mgkO6O1uSsFjaZPL6WVc_zqk+aa za}9oV=BpA_UexM)p(_SOE_(L3LDeM#zN(v|Y4Pz{YnzNPy}inLeT)$7-G=QLsv5>R zU7IISkyprLGBNpy2We#+MXAy*3|%bo*z8lo-o<~fihK$}aFWhyJlRCs{sv(5ya;pD z2@`i3=_1qhy9Uc-Fqxl>~Ic^-OBo0-y>V79P3qn zIUn6ZhxZ}}2;n`>g0W1xfVkBP16v?VYt=Z4Q^Zs=-y~X61oL*(!9#Gy5-c!Z1i3ip zZ*k2TshD8Nl-stxYU;v7F$9y|5lp7jog@hjY|>`z61ohQshq3z_f&sj_puw6SpA`h zcP;F%$Tte-Q*SuK)ND2$e!JU)`-!~MCk|vB_fru)HK)me4ts^Wx>fJN4SLIJ9nzAfU522&%X>d%+Kl0 zF=aFtVddeQf7%h)gYMxTPv3WS`)7GA`HA?`L-hkLQVjR!8%WP)L*xoYpcp|k!?q{x zf#iSr2W~Jd?IMySwf{lmh`J8|^GY0Io{2EEsnJ3B>t&xiS8GS$r<&VCUMDK5<}bJi zE=_~_eQ8M;KoQU!xZ~mHT&<_ufy5CWZQujm=Yc>Z8>VC^DtuYA@cp72i$*MlTy6Xd zMMcn-WaE&#U_8I9a&xeL_cp6_rgIDjG;%%L;DRmFmqw3vC|OM&&uZa}dpOiq5_yc9 zE|xpqu!*akz$=a@UjGdAMGbIiIMo$5E}C`$iy;Z-H7TR{*HZb1y@HiMn9-8hK(Eh! zu`bjJS4|cu)j>!-44r8}#*RPqa7GnVyyDi-9L08RF9 z(ROxq)sd)sl#90Z(;#%N*WDqq&!J{a9^}8*@s5}S6X!A?$xz>jtldJ{99b_>w*^}4 z?S4~bNh})(UbGLVxfR9U!o%11-EQ|}_B?}%+_1wh>r$u7aw`H#r{w_Rq5B?fzEUeVM z%iF!ZO#FL}B69sqKC(iIqZ>8iP>rDH_5JqszjmxL0bbD3MfvzF7KaK6f$hw~c6_ac zeqfocLLv09K5D#ZaK4b^*5u!^lkR|ZS4IO?7NWOGj!22DsYiliFe`_zDugVBIp842P#!xRmkT!~Y??dQBGau0F4&YMUM6yzOP*gL zxq5Ns(i@c(?uWOI1%|Rs#4)^GK1Zv7tf%p>=2Buzk}w~A=Z5cpmH3w3IWr2t59cmW zflS#w9|VvooJ^Lp7`yG^w@a6M3t+Gk->QXA-75M!JB@%k4441;8!nLhfN(#?Ii<5$ zm)4a;Nr`V=1D$dj{k@I`Tp4Uya4)QoMW$P$e)eW>T*ycd@1 z0g*7w=eP$E=T|<4-=aeLZ4u5G&u6h^4+u*tEgT3bn2^cdbjQ_7v$nC1g^Q{vTERc< zE{oF86;%UBdkU^yJdbOR_MQSJnBj;ne}1fo*lQ)e0jUNrlXjbf+3BW-SvgJ>CeJ7C zr*pS5u9VL8Uu_c*0xwDE?mzkcb^LTHuI=MK$^A`28x|Olp?IWuINN^j##u2GRkt&X z2#GaE_gEFCQx9Z)q{lYG5@@Eu=@OriS zq(2q(l`7;zO-r>hcB&4=G?#^Nzzc0f<{xicru*w-q1jgY4@dcEqKscJX`oBKhbSpm zo2jn3$E@I#QomZ^7Xq%{rUx>d5z?r}c}(|XGkw4Jq~5Nmzf~zQj$4}*orMnr!1k}M z#8&POK%GqdO~6Wwj&}O=8pU=Pzk0p40v3U!>%9oGD)dO}j8Da@m+5!13v!nOGRS#C#eU!YgG1GSv^ z_W1o7tL#R3UulS(wR}9t0M}$c+=73?iX5M*67WHhB!Nd?)HA1Zk^C*nVbhcqPBZ#D z8&Z{cOpHPDKyZ}6K-0w=jY7Tft+q0@$gzBhqs!2@^Qqz1?sQhO$6f@&93YQBB7>pcs(**PKp%Hmt z7d*(C(2ve_(-3Y{O%=+Qj=zS`Wd5@Ob{YFtFNr7Vmu^X%VSjg&ilzZPF1+*W*G}=E zaX+C@;1;q~T0W-98s@f+%=uD98{lMk8zsYMXNBx%#+KY3LmiDanFHRb6Ab z=uz*qe9nU-={M0tj$|!)75^~HdD7BY{?Nj$N=aYVz5`_|Af|cb=?Li{IBhQV7dMpO z?+Q)ctPZ$igz)}jI2_r2iKs51Ow@s-JgAHsVvNH7%;X>G{+P5&&!^$_DiM;7{fXEM zpDWafZ4Yr?{5gU~W(Bu(m76l5Q1hlS6`{#5d?6L4`Nc#G;^_k3y7l5zLOEqp)^uZe ze~s9%Ul0<=g$<3%k`!W5iQk3)g_ql-H1INjLBdkyt1%E;Ds@N5@;LMjHX=4g<8~&d z78lBrX2BzWQ8A}N5M$MgCvKA(%R%t|hyDF)K0tgTBGE6(!?mLSzBN^*S-DrH-grA4 zWtej-z^qaf-Rmn29y(a{GrJ_3=aBR87P|b~!aS+LyC;3zT5`5vtCauk67D8`^Rf>h ztO%GyIti0H;=G;E19E)F;!=y5x3DYZNwi7i0*p%wp zY4^=v{zvd!K~JD8Ixn?PX926i7Hp_flU(OnrsSGe1WD*$^qrG(BlsKK>d$;!(@ni1 zB~gSSBpZ~`A3I>6mFQwrv!w`q8%P88T{B8SAg6hzIDe#U%37187_z*y6yyi7Upd*jQk*Y^FdIvYH#?%e^ zRw*z8cYHIad^5B%1)7I_PRG_3>Xy-9jf@rO4XDC#7}3k@dOs;mF)!&nGJwx!avL!I zBepT5dq}s>y)AtR*qjFJ2;|-MJAk}58_%b$$*5Gep#yEgzfxgHrF^HeM)_FkYW0*; zc73_`v$vk%ZY-L0x!#VBmv|Bpl234)B7Rzl3A07&-+!SPFFdjky&|0kh&$dw*E8=$ zMr|Sn$Q8W9s?l@P<&ha_&Pxm&R+M>4lGVD_{#1JZfWyn?T606WE;i9%3o+2 z?JiBICQ>i41d}C|Un)D+;)&@f)Fg zIa7!&dO&PP>Rm+c*xQ>knO~`opp>YPk6UaEFhC?FBz3W4e~r=h9G*y03BiW9AeF4c=veZHSaH3@T}7*V(wSAu9yzwe5L`zu0VfB`aG5@a~_8kMUf#~)%Nkgc=}-O%-QcP zkYb@z+b>+FXW1Qdd4C_rojKDfa-HRuXbmi!KQ}?tU~Y=YlQy939muB1ZHVdaQOl#k z2kd!xj``WY5ILJ^5*6t_A4vzo&&M*S9k3i;!R-p4CvJ>kj=;PqldA`(mPiwy8X2Bg za|jCJiE)PeKmnsxB1sv8!Yyj7(1s|GyzVpxO@cBXJXh2uRtqfm=1*AZRg%Ucxqo9tR z+GJkDmJ_&t5~srn`OLa^CevqLB?)^Yk)HnT7wa4zEdfA6WBA{M#@!!w@jzZ%@;C37Javl7fFJy71v8IlBfQG&6pxYUcL4E_@;$2g zoO7+%&d$Y#ho-Xs9veulp&V#GCg+oxS}(LPmKL6W6m9cW?11Kt&T#ZEit5e-HYe>~ zISb_OMCQ@rVx+|!Oj zpO`*;eQq>O3!Jm49N)T2v#>cBUo`Z96Y8?_)x*Ct&56ea)*#`}L8X4I|5~Zg|D2*{ z_|ZcHj38cSsNf?gQEG-BY`}pUnaZ%w2#Xfe1A!sx8IrHW7 z8>dpTIc>^^ceBH6$7}fV-pV<->h+!`R0j9+Y4=tBm9m4ieHKheI+0OL#cI2l-=KmB&Kp zL&p&-Fot{MCX7Gw6y5lz{M&&;Yo6?KTD!c{`|7?`Z^`O4u?Rs?Uth2;?O7$G#|xA` zdRT#H>BK22fZ9}4rZU;n%f9uBbas^Ftv#)t9vl4-TW9~Iz&{a;Khg%O7nR$myBv06 zIj`gS7nm{4+vkscWC4A=O&WAS?`GhFRrjMxL`dmwaUeX)RJ`o0eS9XT8l-uzm1}k{ z=qK?E$O(8k?x)@5>yC|vp;-Hp{lcrv&C<;)h*;DWC@Qk)P^L>Ti94Zts{#oPZt`#kd5_wFG=Zo~M2VFSrKg8<*@RH^6IwixjT@QLnp3-7s7z&1$gO z{>no3Z|dAk&LxN-X^MU|%Gsu|Qn=m=(#lg(H-xX+2I%Y&D%CR~Qw(Mwjq6s*k_4(D zKmQaBdIGc{pJ`3UnUfl`_5S4NDFx-X;jR(0K61`E1cS@8VPu+!3>z2(3 zjT5UTuw<}7|Lh886?+nhHD57zj_ByqUcyy+%T^Swfot|Q+~+%eKuhh0){7W7d&a;d zn}}9j&2z#bX8eu%%0MnS9vo@D*MKU^e7jkr0xT8A+Yw}VyHuLoR>N$Vkmcb|^Es!S zdYzRET-Q_&44c%@UBmaYPKY`PL4UkQ5#@{s4o}JD+&=C_+2%*(2ScDh;xdvS{R92$ zqC#;X=ZLMd!>EZM?|%+Zp%e3RbzoQf+vc+CXisvOM*BgPkdfZM23SOnf%zM2;~%}T zQE%0v(#e8W{09HsGw;&Old2O~;5rubtUKyE>KqTLm+08EFV0LS#wlb-y7`gIYLSgd zMRngj@RSERe;%g4?%23v97>dK;5h3zcsSl;Mo4{X|xKUu+k{XJL zN%9sp1#Nkem8Hz3jC;piMNCzhwjWJ7#ios*CbYr;lH}DKEYRY4%=LY5xmFt|1UUoG$cLxwqj=Z9yIrGeJy#b}=HU>V#cN;_l@5 z6P^1+zJ-`*28sYt;jkPLUkfHjtNM|KiYc*HGS{gC?*iza@Blj8I-7T-`e z&bUybRG0xtN_{*MBrzr#+RZX3?)(;7Y`c=~jr&qjOl9b_1Jf$g&x^9P-vXM5LMQ0+ zRKC(K2=!jIf?r=>l167OH~TE6`D* z(yp^bO%?@Zx4gnVs@;4VqleSY~uIc-j|U}z#V^p!QEQlhm>8;u`V-`0;z5BcPD zRqbh0gx-yQ`71(ZPApjumC$2>FAeqltXEdb`{^sb+dc+8-VlT_#c{%&vl?M{51Z z=C5pE9RamZe9zqC^c3)Ewq|03yR+!p641)7TOyr;7@pQgsSuv+dW+F5Iml+*l?3lk z*(TPG61{uFLI}QYbrh%LuUN!=)lJ{^9Mi^mD+4JeSt%=>DW1C+#x*IUZCgrIMi#&VDbuD=L3^ z(Lv6mxChCrHtx8hASP{P9t4F0PxTvRFPhxmQ>KMvZ~U1K_~&7Lm2rmr z{Y~?K7VE)F*?c7bEMCCL7i2~L>T2a^OCW9V>hZT0&i zJK06?F2O0s<&526Ss{I=;bG3|MSW@?wmBCYdw(7F=mBgg!=l^f_2@44$g>@zADx$Z zEW<)M*-eR?BRy0HU0^krcMt~}4WioDRa@_QohY-yn|#~qVQ1U#H?0I zjKn2+Fp%@a0Z>_&=eAL7gt5Z8g@_EipR$pKyPvOw6;I}f?crGPNZaPucSo)jh;l~c zdpVzJNp3f~+2b=jW23a|x1{Ksgfk>J(#_v4VZz1Rg-SxsX|d7?Jt~7RDS0m$bvSxc zs<*xL!T(`!u5I&HbqtWR;(UIF`<$n0#2chpU=o};M?v>uW*2+Aj;Tpb((IDoTF)5=@}*WOphSpw@HnTHYK5w z5dCkA^^6s`LV@M1zyz9w4LU{91I9wJasMz^w7??4?_4Edz+dX9Y27|6;lYf|&(Axy zD!y?A2`S8$MAy0s=p`W`_j36Hq(}V$s3k(DM!y7_LxsGC>W^J?q8M=g3*ejM`Z_rQ z0P&!O*cN3{vD`=QV$)qn{by4;qX#*(!pd!pBOcx5)PdK5f37D#RPC4MtQ-ne|NArPB$I@(q^Qoyd`Wf0_F7ik%jn`x~TK*2k3c-UUD6UxHkyiOE zKRAk&DA!a*8s%(j32_I-Ad$Asfv1v6#1kdZiiDQOs zj3enKRKQLfH>`xA@9dmo<0v5zv{?PdcYH#@PrriZz|?ccr$jCg7DRG58v6UNWrsq(Ox|U(+D|V(Q*?Mtwx>i zEbXS%)niJ%P1Y-2^2Z8G$NkTg@b^9|&cn;5=x3eg!gz@&GK~K|YRFsmMi^1&8}GDz zmpFMm9}@@G$%F4d$NRQL5SDffNVQxGA6|7;PBY*#rqTKQ3O-f`fJLV6cIY$h&dO3> zs>w{A@To+fPkdm%5p~~j4PSicCw7L^B|AJu|K(w>Y~mM1nk@m`oJGJBypFL;yL;sH zm>VQol}6#k(dbR(wWmI=8rY_CZtg*beN0<;uaKI#04}rSaD>w-9;|SJkx}0d>sJbx ztvY{I2$SbKPG7fWGG#dEqu$Sy0Mw=aWV$JlfoG+&`8|ASn)c!ZOP?CPQxG>vf|&QG z4SQ8!mI+4p!O9knVre`*1qv`UQI0=2lgwNbD#k_$C#B4+P38J0VE#5S02mH&rgqR% z+vc=g7oNF4sNj6B1ezqt8A9e zAiJWJp?x7LVktclR`#q+jF7=xpk=I#9cYa_50J&OhBF-hit%KM#&(7N>_!qks}s-H zflcX_K6U6f4Z`8@@-Q{^oJfX^7>ezk>UVK#7mr(4UY{D;gR3aCG;K!T2%^R1N{no> zMwH=<%B`XQ?@wb%R>t^!j7|MCrv@+9W2E-qNRkhk_$lRET0!*;QT;^m^FV#DGDfW~ zhkWEw7`+MW791LmY>FV@H*C{X#1`%fcuqKdnosVNbDxV4uPycaZ(X&qZ_GGT=P=1wb#xFdCc7 zooI~lV77pt*PVd&^4~9<=s}Ohkr;63?@|HPp?Dj74cYXchTeAQJ$7odW$4xRw&{ve zh>-s`hb00z$I7DcGl`2$t``}I^*JPNy1!r#8ZvLyw)}FfcN)tTU=||2ixQ1&Vduxs zFtjFcYF|;Xf!Z+0$3w+~clAvkto9N|m^Y~tnOA4Rlp!Ubo$TZVm1HTqrmVyXtsKij zsIK(J1+^P;N!%FX3SUb#6VZBY6oS-eQIfaRo~%W|sH39iEa<8KL z41cgtuk~_Xcj5I?-Aij=^&aI?+2MZfIgIWdog6nD!(vjAY#MAi9+4gmvH7eD$q3S+ zu=@)1`cK|f%lMTZa0`J`Du6sQ74URtY-LxFHM}4qW@E;(ftmDmMXO>9e9#Uusi~ug z7(%lgHqM&_U_!MmhmvuwIBqa=@)~8DbB2WXe*XRCV_NYtQLUusn#0<6=rgm*l% zKh+LQ96Rn`oLXbzeTUlwtM&ixUj8q}2|L6%FVmdwmNAGbkx4cBQzi^apXxT=pL4u) zjbUn5RyggfQCXK2vGa#Hx-)o2jKlJrEJjPwBA6WtnNHvnf-jA;Otre}72g`s* zt0f!zodhg6x&q3zD`)0gr4`qSYN z{5ph0Lepsu_g;D3Gr9lnCEkIfg+(g2=3u}p8L-T~&0}Wc(`;t(McnNEXVJXcl9MHJ zzU-2lY8h-oI<2_{{7i1;(13?|7m#Ojn__C7*-B*-&7qeC<9SIuYT&^&IrR0GX|%|? zw$Wi3U%MGMbYq1Tg?L6o>dU8N`%#R_2>bq);udr*Yr0giQUEf9mTR^GKvVhSzdlDw z{m4TqbWCH7VT9Y%Lxydvuo;8O?6IcHPM3Zxk;0~*ao)1t>1IU8l}+M%;e@PU-0+Q; zD$_ON`-q}2L(ss)59EGX0vWjve|rkan|c}Q^6+VZHO(No7*2rFB`%rVx)}1>pIg0916Ah0TLK&9l*<&X&qBO^8kOy|&Kkt{y}L+r7DC7DOoC`h~GX{#w}( zP|&R=;*|5wuDF`A-L$A3Q@1_Kxs2bLgP%P#5#K_yQF*EQgGe~h*WAYxPYmY_+xHzN z2FL4};1a;3#J6A`p&mE|h?27Il`ibZo0SmOasSru;ozl(tIU%mbIM5}y;8^)TqFPl zY{2S~ZlOA>vAcwMX_1`X6Xj(%R}CR%g)o}@{Za;7j`@`Asm0*G?}>g8KubOX>}0(Y zW!k}7%yh0B0ua9nzyTEX&|Z>P~J`hl8NXjlfd-x-NMlM+z_t}7e&vYA&JEkc|>F=o>;|234$&CZQW(4$>E>U5h2r(D z8riS%C~{}P?D9t}wXJ_qbtk)TP)y=BXj3V(8{ILGhn&G2=>WX@@lJynnqj$j;Wu$p zUp8~>bN5hUv0n$dz7k@>RarGotsQFvhQ#ArHVfSl-zehDI{PKiiwH%xkgARSD2)*f zR0pw{Q%`;(HNm|Cq4;VnZ4T~FOagtGMV|@4grp>!R`Bn0&l0c(ULoHsqie>@fMeXW z&b6{3G@Ju|WIM8mSskpD|H^1Y!a!m^L)bD|!@dP3FcU=~6A{zORutrRX?-l5{2xKv zUa;M@*1EdPExAq1q0}2F^Eb+Yy%m@JZ}v4as56kKsPU zp#maokpnQjD3r$m_O;>`L26Z@8DQKilHt6*oh1UXY@yHcVsaB#_yo1Rsl2KZyHRh<(jBf$4RW2a3E^pvEx}w%l{u1jg+$ z_}Fq;g?i=sN}6y8xQ}8<>7f^7e0482&=7 zzP%Oy1wo2K`Ss`02KYm|^}BGzJEu0FAn1Y|`n4o-K0RrnG|cG5duJ(@gcRKf_Q4T; z9~v-W+&mHXldP|fUQE>nX|dwHw7q0wr9V16Lbd1w``&Y96zE(RKeaW zPnbjnwMP<2?jg5))V&`ey++Bfa%t2<4>kFJPj(ZGO)gsjj7|Ai)w1-#%=$BfT4^cr zxrfg2VWQ0DNn$X)6#5J{G!6V_AxEA+txDe(*qj-Isv)@9q9NKu5_;k!<11)YfE?(R zEW%C|>w9yVn|Q2iGFLDr_?B!_ ztylCRJbd8&{!T_2I_lm_(_HA(%b%x{_iq9)`&hZ|y5c4SlZ@!0g;S!g@4+SYt}mCU zWjIj8>hf|rsW|&p4|briRNejCkz*izHZki24aY|822txvt_>pJopi){II(%gX1X0h zmn(-0A$uJQHdGtUHDO_J`oWu;Jyb#x?|J%tFbNJH}+|165l$Gw3uk@pNk|lU1S=zQvHikL&nck^XffQp6-rW})z8cqX8e8`4Sg8`r;z(k;L_Uu!Ad#~v?TTo*nt1{ zi(&TBN)h6~wW0)M*Rchr{Z)H`)xn`7~T>GF=0mW~oU`a@++Mk1A265SG9 zVd^$>Sj1d)U~t*xyoRv)vs-S}Sk{p>tXSR;RD`#MT%ODe_^cH^5`hGyW%qT>P^WNt zp|mksAMS7r+{l_wqi;lc=Wp6u`fme~FA@g+|2;=Ojv8@`gWl)19mBn{xNoO~AouatsxL>PJ>F|(}mp-Yk!u51y!Q?Jw zw%B!Kj~7%)!g2#(*d_MlYuwNQxMvI{7Bao`6qf&+=xb9$B*P z4l6h1v_YIwv5Bxb)2Nr_EkhKQQ9vDPvfUT7M?#7ts+qm}he{WfYc!m9tORulmMtbx z%q@R)@x739?cd%*(dU}A$%s?_$ZvB9@#=M|j3HoyLhx{=30LO?@R4|IvDfqz!I~fU z2&}%%VQhXZQS4oA7kHRet#`Qyr%N zyp%*5B@aCdI_wgOZR2U?HQ*Ubft#UUc7pDY`%P3}*gkCkJVYEw35WEW3ZKCP+BzTd zx*1hjCS&1>V&?R~_e#m?%lT4kVH@Pn013aHx9%i9hYdOLJZ^r?ERA122T@b!g*=}t zyaVvUfEbaPxZ7yE^m*TMN$5MxY5%mdrSc)0Hnsu0crCbahP&Z1kU7gh3ep5 z77*akcB%ueALYEHY^G+K!VD;GK+EAZWVcZS3!FwbRJ3b#rUd+{Z~aWxJ{oKNOhDDK z=fWdM5Z7_({>ofol+*H3mhxqUcRvIh0kP|Mmt@ONm8-~)|20LxYU|)_q6@EtbuMTN z+Zd{Ivt`MmQe#y(n!}kpE8-2lp-{rw)Uc3kaYmNPf@X+Re07DD2-RWUCw7s%K9ic> zhbwrC+ci|G-7(~inEIn*Vb6J;j7*>8G&HYu&OpFov*TZnwH$LThi!b_PMi`nu)Uvl z=3cMWNM7dPePxdyJ#}8gBU*1Ku83EXEWZbsr$UIL4%GsfaqV`l_TQ+(Fz<5JLwpVZ zCE_N7r8|sSJ$f_~jEy~u`jhoabOh1k$$^JPMoesYViBHWSjI&T=7@1Hbk~(YWz3Fdg6mXIq=PP=uajn-x+0(5gF>rtbN-Bsgs}_YiJJsDK4stwP&Dl! z*HgOvRA^@&*r|ps-%~P+6FZs)5-AD@^nZ?s6X6Z1U=Ke1-nc8kj`>Uh9)|1KyL$(1 z7S0I4biHNJN6-5YfmypqL|apl3fX^1qThr9^$4Ov(EH&0GpRbIx%shC58-U5OU$3& zQM<3yB|oy-I4p*SxH{Y`;FUxa(*N0iniT#=(7Hm?1Pdt%w@VyQr;dt`#=#Kn${xnt z#%u2U>-0p$_l8Q`E&#Mp}hm+rd?0tGG`s z;L1zO@TmN=j=&U#Dzm2WivDu5?_|`!wuxdd4YPL@wY|EDa>KrctlO-{NGiWIe)UgmP&0#6D2BmW*1cT z+JJPc@UtG?vNQl7_aJ`OuMbMbpmntKl0M*=s3Q(t#+fbY_mra{E%R$I8e3KcpVQR# zwFbBuU^^09XrAWVprp&*!Sn3B&UD79hpUu_T^FnBVms)ub1IrX(qTQwQ}!{-U-t64 zgLnCdW;N)e?W;$Cj(mRKW{BNF_!EA+@!Le#Rvh5f-oFQqSdNbHy{PypS-kC(f1MOw zjGiJVDPI?33RR#GrAN4?uWpkv>v$s2_!HQOoS$y9Lf35%;Ny3l(fiPt|8UF8d$9}f z@|E&=#W(2V6h6^*|BN}D#Ixcfz7hBqk5?lYUX+}t%gP)`+O#gFA<3#MhkC82>soEQ zk}eijHW#}mA4?{`v>++lWi$Z{yKolKHX*eX%WN zP1!2pjC<>mb^Hf0$bPjEl;Vl8yyM}Y{}-{#iLT|hV;z8(^M_6~%gm}jeKhr3!?(6E z)3-v?Ed7DT&HZ!1X@lF-I zhWAxbJjSY2uWynG;FWfcS3}g-994VZSfKJ!Cq_GFOr;nv$gNuK8P3nT|6k}|>#K%i z?1KPRfVZ%GO}~eI4!T1+y6%Wp?7=xWZui|>gqdX$g4gevK7?~ibz41k9( zjF^Rlo*)4r9@5fBs0r)Svyhe|j=x8PpA{SulFmd1+2}%M;EeG$bUK;0k7pMHs5-GAZ^)o3XQcmWnc(j--0N*(T{Z`AGCgX4Vb5^>XVXbAtX76tQpFX^o0)Q!p z3PU>VHp!Gun|%R0-%R(nUuaG8pYS_-YS#;B$2PjQ{;N^{Bt>bgCL6U28=wZb;5A_~ zOzA&Go=Tg$(XA%5E!8ljlxf3S)ux29XdexTrlb;zenfONGXinNDC6towxMw^8ZZ7e zJ2q;jj{jH8c?LDXd}};Gigcty5Trzb1f>Z9Q350)O@)nLBsp&i#Bp?abMIW_MGZCSJY4PoD>TnJ=oa@B1uu2U$|x6FOsLL$k?&5m})7% z?x=1)>L*eaela)H)nQ*(d`?PVr{;;Ad%R2GIDf4}lbGul%^(ottGhtY3{`@4}m{d*0M{2SL$LV2AmRip9dXj z9{(<8s#r4Wm1EEO_F;uUJ&BbWnU2>sHrmiEOMs3jw3+aDBm#8`n?y+;j`c7T*^R&knn~|()q*jzASc*S)u-@zUE^0k z<)>^iP~SWVRDgK4g86xFtlmhN(HUn*B8E{4l4HUe6qr1kA?>^%YkP=1)2;{zPT&=) z(TNO4KIN**tSp)xmE$>W@ehgL)dJ7Snky_8!89@oHb6^YRW$?2^NlmRQqS3y)Hv}I`AYWDdr2dh)JmraFQ8h2kC|f@7pI6&{0<#G$r28e^ zyeaGQYA~r;BWkjdy&!4B;heI{p8_5ze`8qLC5b4*db1J$ejt=JS7@eJm8?4Lb)Pl^ z26Xf#f}%dgv>Vof+(uqly4ZdNY@owNnS#J#}91`Izc`GHC zvebE+OCvoNDHg|CVS0n59>Ll;1TVdwuKcu*UJ|@6xY3v!esiV9m;LmshR#M?(A>1` zST{c2)BUM`!p}HfVsuD5vuOV%%Dq`_9+hd=5vqc(Dl1kHELR-nNK$&6q@-4edfFUIQuT4&edC&TyY z(LaBg0vqO)yfbE+UBvD*l{3Bf&ulJXI#GIS&8?Ze!SPsK#KXl-+O(xeszwkF`HtIa zyE`A;eJltcc7Fj;oRu?11U>l5_S)a6XE&x|{j1R6D|$DGW!85;%fB%dC&C)X>~{tk zg{)%Iu0!ApF!;;ULgHGspUZ!PGAB9z9XGjkqfpW4fPl*PuT^|u!Xmd@wsH~kzCB8t z4&i!tqFMxp{C=Vkaf{=VY##StzRi&?PhJ*r>_1=lXx&ThEzT7-lIqjk;sbo*dXu1G z@5#7QCa>L|$}25f`NgS2sVZyA>+I7xvo}~wIcVbeh>yZ2PK*n^Ke=#`gh5T23Uibw z37=Qr9G*=1PCigsy|^xIU^lyB_^f&Ix^tkbUm*$pi9_eHmF23Grebw2N1^WDz&(%Z z#T&(s1k@yyl4&!$b`5>JLey}?q-|g<{o+T0j#l=-W%5IgJA_jO45uJ2V=UG#rYGQa zzij9xnx%aGwPm0-rfAjWClbeXwPdHVVm=DmL|%iX$?$J$q(iUDmIrGHra$ znQ{6f1f5eJJ6o7mtRUEUf{gaN_yG};oG4p?{YZfH2kf1{wTp__K_IvvALzQu59S+c znXf^&f?sS+g=hPf z*xsBdA!C}djfudA)qVU~8Zr0Y-HhfKS%Tr-UwAX8W%#{RT0gnC`qg(rh-%1(IjV>o zQ+I@~M*`Ww&}HoLWWP&{_pUaY_yYxav_F(KW=`OfIy`4&Y&w=1boNCAm}DxOFXUw1 zD>`O2Nq~;n5Z*k#b>m|>fXDSMO>;ROUP?%^!dFBn9p${J|x<~WTYRnKf)$PgsxZu!O0>Hz_J4w^EOFhu>EJpcn}d4&(yyl$+5P@%dd@s z-)NE?;zfmZ48~NqcRwL{$plUNr{%VWn8PMHx3*H_N($3z)7rQ4X)XO_dpVKDJij20 z$YoxYg?%fNoY}RQs~RiwTF*3L)2~=)7szgDX}=tQAgE9{F0>)(l50b{!d{FEna`^x z`uaPWCw1O$>Tc7&$(aH{D>b^zSXRJW4Mv7zu~WNyVe_yz(aV zXwI=zy+420jDTwvz)eLP0n~GJ>t(j0BnJ-*S(q-k3VLo^VlbCfBb`fIzAZ+YlTv2^ zfSU7{k(cTO#8tZR(U*51xrk-n6mggSrEdc-xIX!p^EM@d%W~0`1*ZA_Yv0A_Dv?}c zA3j|da9xkRyr*)m^c!ofQ~?YxIun4}^)7USpE4EyE9lW|dG$5J0E%ur(-++ZbS+|} z=)lm`iu@iaLl)}iCj~3gv7mun1j~NgQE^0itXg>=SATX7XZ{hnMXL0h4-8a?yul<= zKN4+AGebLX|DpF9TYkMTG88CAi!n02FLCfqV%+qvo*L7M9(RpDi-}YCa0h@Tnk+Q+ zrUfJ~D7@pJg=GUZr}ZH=3@s7+f`kKE&`9t? zapE}$AY$P5kS+O|bcSUas4|W2D?&O;?FS$cacF*#EiLI~%^irIEuc2SBqYsPq(E85 z`&T!}W0WDB+Juj^yz_lP)gJGmL169WkbS{PD z3+{5*{yy?K$nPu*XWk@ah;{G?2Y`94UmmwPF*Th2+*QMPw+wN<_{|Ii7o!FO)pY#Q zdJTw8@Rd#B0hOd(?%>|$=snJdEqyyq^r^{k0nI1gZx59=)QFoB%h5Bt@{8fg>@obJ z6k*Fj-3dO-r8&i{xWDQtJWaOIm<#J6QEuxs7RpcIfnmap4|3uMI!9qPq74#XEIWOG zQ$vjiIQk-{nX|@FzZVPr(L})Rqg4&3D#KqAKV0o9vP+Z9FkO6bY6Pb(+Rtj~*w^B%?K21t zUABtKa?3ACr*FK@mP^xB`H+zXL2z?6#Xl;(h=vQa2{Z;~m<)8z(?7W6=#`qZQ)Px_ zzu>WsLu0X6g#bF3^HoX~OooDEy9V`k&EOp9v=Zx0C);`bBO&z8D12<%cbijz^g(CR z`88i`X!jyM;aTI75sEPNTdG>gXYfnt{OG7}-z$dm_6xP{%GHq0-Viv!TXT_>Z0_Q8 zO6KX5-cTrBpC~ohe2tQc7B;63Sc@AQPKJ-y60@}OeqD3sKXUq9#CcZd#pS+jsEPXc zTJ>M~MQ+w-8+J)EMoV(%eS(C(AIdM==FbLmfBNxlR-S^W4zcvAk)QntWV>oIEBsM(g9P%55((5I{;H@UN5sf z2+i+?u1GHM@G#o|`#t;Uw~eK`k8Q349qr#++0@0|U$D?C% zy!uidiWGDeiXizV&q)-BX6Z8k7uS632E{dMW0icL$9Q|I3pV%;motn2Jp}u1m@_8d zOQndD0iRmwMUsrLV{U7Dm%&dh^d+@?!SM{I5rQ2oXnj)!bL4D$LC~Y^$=27ePXOxY z^W;oUPk;vt%4p z2Ic`NH08HbkGlw!n6m;0$wt3gHZR%$gAJJSv;nWR^nsBwbzH_!Gedf?w>o5k`uH)h8O81THYCXfOVX{3FGjS&}iDsMvj&>|} z5>ao}qN2t0zlwgp$f&)n-%l8TzBZU)oQ`a8>}xKxTsPhLy6Lev^5qgXYzaGI;q8$9 z8Jy{?^_K__{Ga9<0@UxMSCpA*DBO*mHdnY zXW#8D{E7hfm7O7PA2V=nBS?uH^p@^MpH6No_KnuS(scF^2Nw9+_xN=wUMD5 zw{KYZ1+c#W6lF0#8%;Ky8cRrN0OvyM`b*BRUr{^yA&20;JpP2Lf%`%^KT-dzalsni zc6M(h;TE9txdOdpEJnBioCK{KIG1<6gm@h-J|al?yDpN-%K!|94U*r`!cFAMiEb46 z=h-r^iGv;*=_cFv!e2G-Gez72=$+3;iKpwU4#*K%-HALgo|5O`Ay>W14% zs)`DwL*zxJ{}*Cn5C31@@>I_%`%>vF1|$-UN7~`tUGW%gG!DaP0IJHW>PpJ$N~+2z z6?JW8n6|1WL|Iu|S-B+f8G||bKLmI0xqEqp{NI94lQPK+f&72ZfcLtK3BOb_cQ?392 literal 0 HcmV?d00001 diff --git a/apps/dokploy/templates/templates.ts b/apps/dokploy/templates/templates.ts index 8a137678..1401eca3 100644 --- a/apps/dokploy/templates/templates.ts +++ b/apps/dokploy/templates/templates.ts @@ -873,7 +873,7 @@ export const templates: TemplateData[] = [ version: "v7.10", description: "A self-hosted platform for tracking various media types including movies, TV shows, video games, books, audiobooks, and more.", - logo: "ryot.svg", + logo: "ryot.png", links: { github: "https://github.com/IgnisDa/ryot", website: "https://ryot.dev/",