From 0658ca632f49d2907ad281521e80517e06f566d9 Mon Sep 17 00:00:00 2001 From: Juraj Uhlar Date: Mon, 18 Sep 2023 16:30:48 +0100 Subject: [PATCH 01/21] styles: initial refactor --- src/pages/paywall/index.tsx | 54 +++++++++++--------- src/server/paywall/articles.ts | 21 ++++++++ src/server/paywall/images/articleHero.svg | 26 ++++++++++ src/server/paywall/images/genericAvatar.png | Bin 0 -> 102547 bytes 4 files changed, 77 insertions(+), 24 deletions(-) create mode 100644 src/server/paywall/images/articleHero.svg create mode 100644 src/server/paywall/images/genericAvatar.png diff --git a/src/pages/paywall/index.tsx b/src/pages/paywall/index.tsx index b76615c4..3df4f9b3 100644 --- a/src/pages/paywall/index.tsx +++ b/src/pages/paywall/index.tsx @@ -1,12 +1,10 @@ -import Card from '@mui/material/Card'; -import CardContent from '@mui/material/CardContent'; -import Typography from '@mui/material/Typography'; -import Stack from '@mui/material/Stack'; import { SITE_URL } from '../../shared/const'; import { UseCaseWrapper } from '../../client/components/common/UseCaseWrapper/UseCaseWrapper'; import { ArticleData } from '../../server/paywall/articles'; import { CustomPageProps } from '../_app'; import { USE_CASES } from '../../client/components/common/content'; +import Image from 'next/image'; +import { FunctionComponent } from 'react'; export async function getServerSideProps() { const articlesResponse = await fetch(`${SITE_URL}/api/paywall/get-articles`).then((res) => res.json()); @@ -18,35 +16,43 @@ export async function getServerSideProps() { }; } +type ArticleCardProps = { + article: ArticleData; + embed?: boolean; +}; +const ArticleCard: FunctionComponent = ({ article, embed }) => { + return ( + + +
+ {`Picture +
{article.author.name}
+
{article.date}
+
+

{article.title}

+

{article.content}

+
+ {article.tags.map((tag) => ( +
{tag}
+ ))} +
+
+ ); +}; + type PaywallProps = CustomPageProps & { articles: ArticleData[]; }; export default function Paywall({ articles, embed }: PaywallProps) { return ( - + {articles && ( - +
{articles.map((article) => ( - - - - {article.title} - - - {article.content} - - {article.date} - - + ))} - +
)}
); diff --git a/src/server/paywall/articles.ts b/src/server/paywall/articles.ts index 4df80568..5509f7bc 100644 --- a/src/server/paywall/articles.ts +++ b/src/server/paywall/articles.ts @@ -2,11 +2,20 @@ * Mock articles "database". In the real world, these articles could be fetched from anywhere. * */ +import ArticleHeroSvg from './images/articleHero.svg'; +import GenericAvatarImage from './images/genericAvatar.png'; + export type ArticleData = { id: string; date: string; title: string; + author: { + name: string; + avatar: any; + }; content: string; + image: any; + tags: string[]; }; export const ARTICLES: ArticleData[] = [ @@ -17,12 +26,18 @@ export const ARTICLES: ArticleData[] = [ content: `In this article, we will discuss why the existence of privacy-focused browsers doesn’t necessarily affect the effectiveness of fingerprint-based browser identification to prevent online fraud. We start with a technical dive into how today’s anti-fingerprinting solutions work, focusing on uniformity and privacy-through-randomization techniques and their specific implementations. We list multiple examples from popular browsers, including one of the more popular privacy-focused browsers, Brave. We then elaborate on why device identification remains a valuable tool to prevent online fraud. Let’s dive right in.`, + image: ArticleHeroSvg, + author: { name: 'John Doe', avatar: GenericAvatarImage }, + tags: ['Fingerprinting', 'Fraud'], }, { id: '2', date: '2 days ago', title: 'Five Mistakes You’re Making with Your Login Page Security and How to Fix Them', content: `Your login page is a perfect target for hackers because it serves as the primary defense between the internet and sensitive data. Most web applications allow users to log into accounts and view sensitive information. As a result, your login page is the gateway defense between the user’s personally identifiable information (PII) and the open internet. If your login page isn’t secure, you’re likely making these five mistakes.`, + image: ArticleHeroSvg, + author: { name: 'Jane Smith', avatar: GenericAvatarImage }, + tags: ['Fingerprinting', 'Fraud'], }, { id: '3', @@ -31,11 +46,17 @@ We start with a technical dive into how today’s anti-fingerprinting solutions content: `Friendly fraud may not sound all that threatening, but it accounts for 70% of all credit card fraud and costs the eCommerce industry billions annually. You’re doing your best to serve and relate to your customers on a human, friendly level. You’re constantly trying to make them happy, anticipate their needs, and improve their lives. You’re doing your best to provide the best customer experience, but not every customer is acting with the best intentions.`, + image: ArticleHeroSvg, + author: { name: 'Alex Johnson', avatar: GenericAvatarImage }, + tags: ['Fingerprinting', 'Fraud'], }, { id: '4', date: '1 month ago', title: 'The Basics of Loan Fraud and How To Prevent It', content: `The balance between consumer convenience and security is a delicate process, especially in a competitive, high-value market. For example, when banks and credit card companies provide online loan applications, they make it convenient for potential customers to get a loan. Still, they also make it convenient for identity thieves and hackers. `, + image: ArticleHeroSvg, + author: { name: 'Sarah Thompson', avatar: GenericAvatarImage }, + tags: ['Fingerprinting', 'Fraud'], }, ]; diff --git a/src/server/paywall/images/articleHero.svg b/src/server/paywall/images/articleHero.svg new file mode 100644 index 00000000..44e37f93 --- /dev/null +++ b/src/server/paywall/images/articleHero.svg @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/server/paywall/images/genericAvatar.png b/src/server/paywall/images/genericAvatar.png new file mode 100644 index 0000000000000000000000000000000000000000..b152640eb4d01c2ec82492af9c0b2d9e0a57c730 GIT binary patch literal 102547 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 Date: Tue, 26 Sep 2023 14:54:38 +0100 Subject: [PATCH 02/21] styles: card --- src/pages/paywall/index.tsx | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/src/pages/paywall/index.tsx b/src/pages/paywall/index.tsx index 3df4f9b3..49170d2d 100644 --- a/src/pages/paywall/index.tsx +++ b/src/pages/paywall/index.tsx @@ -5,6 +5,8 @@ import { CustomPageProps } from '../_app'; import { USE_CASES } from '../../client/components/common/content'; import Image from 'next/image'; import { FunctionComponent } from 'react'; +import styles from './paywall.module.scss'; +import { useRouter } from 'next/router'; export async function getServerSideProps() { const articlesResponse = await fetch(`${SITE_URL}/api/paywall/get-articles`).then((res) => res.json()); @@ -21,22 +23,28 @@ type ArticleCardProps = { embed?: boolean; }; const ArticleCard: FunctionComponent = ({ article, embed }) => { + const link = `/paywall/article/${article.id}${embed ? '/embed' : ''}`; + const router = useRouter(); return ( - - + ); }; @@ -48,7 +56,7 @@ export default function Paywall({ articles, embed }: PaywallProps) { return ( {articles && ( -
+
{articles.map((article) => ( ))} From 9ac332e5b9e82ca8138e95753ebb67991c964746 Mon Sep 17 00:00:00 2001 From: Juraj Uhlar Date: Tue, 26 Sep 2023 14:54:50 +0100 Subject: [PATCH 03/21] styles: card --- src/pages/paywall/paywall.module.scss | 28 +++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) create mode 100644 src/pages/paywall/paywall.module.scss diff --git a/src/pages/paywall/paywall.module.scss b/src/pages/paywall/paywall.module.scss new file mode 100644 index 00000000..fd44ac6e --- /dev/null +++ b/src/pages/paywall/paywall.module.scss @@ -0,0 +1,28 @@ +.articles { + display: grid; + grid-template-columns: repeat(auto-fit, minmax(266px, 1fr)); + gap: rem(24px); + margin: 0 auto; + + @include media('<=phoneLandscape') { + padding: 0 rem(20px) rem(80px) rem(20px); + row-gap: rem(24px); + } + + @include media('<=phone') { + grid-template-columns: auto; + } +} + +.articleCard { + display: flex; + flex-direction: column; + border-radius: 6px; + border: 1px solid v('gray-box-stroke'); + cursor: pointer; +} + +.articleCardImage { + // width: 100%; + object-fit: contain; +} From be89d96e54f66c1bd6475de1e0d7fb072dcf9bf4 Mon Sep 17 00:00:00 2001 From: Juraj Uhlar Date: Tue, 26 Sep 2023 16:46:00 +0100 Subject: [PATCH 04/21] styles: fix card image --- src/pages/paywall/index.tsx | 4 +--- src/pages/paywall/paywall.module.scss | 4 ++-- 2 files changed, 3 insertions(+), 5 deletions(-) diff --git a/src/pages/paywall/index.tsx b/src/pages/paywall/index.tsx index 49170d2d..558ff905 100644 --- a/src/pages/paywall/index.tsx +++ b/src/pages/paywall/index.tsx @@ -27,9 +27,7 @@ const ArticleCard: FunctionComponent = ({ article, embed }) => const router = useRouter(); return (
router.push(link)}> -
- -
+
{`Picture
{article.author.name}
diff --git a/src/pages/paywall/paywall.module.scss b/src/pages/paywall/paywall.module.scss index fd44ac6e..a8eaedcf 100644 --- a/src/pages/paywall/paywall.module.scss +++ b/src/pages/paywall/paywall.module.scss @@ -23,6 +23,6 @@ } .articleCardImage { - // width: 100%; - object-fit: contain; + width: 100%; + height: auto; } From c0d5246254e3e1c34009d54669aa83c8811e2276 Mon Sep 17 00:00:00 2001 From: Juraj Uhlar Date: Thu, 28 Sep 2023 09:29:19 +0200 Subject: [PATCH 05/21] styles: byline --- src/pages/paywall/index.tsx | 4 ++-- src/pages/paywall/paywall.module.scss | 11 +++++++++++ 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/src/pages/paywall/index.tsx b/src/pages/paywall/index.tsx index 558ff905..db9bfb0d 100644 --- a/src/pages/paywall/index.tsx +++ b/src/pages/paywall/index.tsx @@ -28,8 +28,8 @@ const ArticleCard: FunctionComponent = ({ article, embed }) => return (
router.push(link)}> -
- {`Picture +
+ {`Picture
{article.author.name}
{article.date}
diff --git a/src/pages/paywall/paywall.module.scss b/src/pages/paywall/paywall.module.scss index a8eaedcf..f8773b79 100644 --- a/src/pages/paywall/paywall.module.scss +++ b/src/pages/paywall/paywall.module.scss @@ -26,3 +26,14 @@ width: 100%; height: auto; } + +.byline { + display: flex; +} + +.authorImage { + height: rem(120px); + width: rem(120px); + border-radius: rem(120px); + object-fit: contain; +} From 894eee8dd115e83cb4ca6beb9127c3744221a3fc Mon Sep 17 00:00:00 2001 From: Juraj Uhlar Date: Thu, 12 Oct 2023 13:36:57 +0200 Subject: [PATCH 06/21] styles: article card layout --- src/pages/paywall/index.tsx | 31 +++++----- src/pages/paywall/paywall.module.scss | 61 ++++++++++++++++++-- src/server/paywall/images/genericAvatar.png | Bin 102547 -> 57502 bytes 3 files changed, 75 insertions(+), 17 deletions(-) diff --git a/src/pages/paywall/index.tsx b/src/pages/paywall/index.tsx index ea7be847..bce335d9 100644 --- a/src/pages/paywall/index.tsx +++ b/src/pages/paywall/index.tsx @@ -25,19 +25,24 @@ const ArticleCard: FunctionComponent = ({ article, embed }) => return (
router.push(link)}> -
- {`Picture -
{article.author.name}
-
{article.date}
-
- - {article.title} - -

{article.content}

-
- {article.tags.map((tag) => ( -
{tag}
- ))} +
+
+ {`Picture +
{article.author.name}
+ + + +
{article.date}
+
+ + {article.title} + +

{article.content}

+
+ {article.tags.map((tag) => ( +
{tag}
+ ))} +
); diff --git a/src/pages/paywall/paywall.module.scss b/src/pages/paywall/paywall.module.scss index f8773b79..165472d1 100644 --- a/src/pages/paywall/paywall.module.scss +++ b/src/pages/paywall/paywall.module.scss @@ -1,6 +1,6 @@ .articles { display: grid; - grid-template-columns: repeat(auto-fit, minmax(266px, 1fr)); + grid-template-columns: repeat(auto-fit, minmax(265px, 1fr)); gap: rem(24px); margin: 0 auto; @@ -25,15 +25,68 @@ .articleCardImage { width: 100%; height: auto; + margin-bottom: rem(8px); +} + +.articleCardContent { + padding: rem(16px); + display: flex; + flex-direction: column; + flex-grow: 1; } .byline { display: flex; + gap: rem(6px); + align-items: center; + margin-bottom: rem(16px); + flex-wrap: wrap; + + color: v('dark-gray'); + font-size: 14px; + font-style: normal; + line-height: 160%; + letter-spacing: 0.14px; +} + +.articleCardTitle { + color: v('dark-gray'); + font-size: rem(20px); + font-weight: 600; + line-height: 140%; +} + +.articleCardDescription { + color: v('dark-gray'); + font-size: 14px; + line-height: 160%; + letter-spacing: 0.14px; + flex-grow: 1; } .authorImage { - height: rem(120px); - width: rem(120px); - border-radius: rem(120px); + height: rem(20px); + width: rem(20px); + border-radius: 50%; object-fit: contain; } + +.articleCardTags { + display: flex; + flex-wrap: wrap; + gap: rem(8px); + margin-top: rem(32px); + + div { + display: flex; + padding: rem(4px) rem(10px) rem(5px) rem(10px); + justify-content: center; + align-items: center; + border-radius: rem(16px); + background: v('gray-box-stroke'); + color: v('dark-black'); + text-align: center; + font-size: 14px; + line-height: 150%; + } +} diff --git a/src/server/paywall/images/genericAvatar.png b/src/server/paywall/images/genericAvatar.png index b152640eb4d01c2ec82492af9c0b2d9e0a57c730..0d50a39d0de205e81b5be00d5425a4c24a2d51d6 100644 GIT binary patch literal 57502 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 NQ&47sgc(o^J{d1Zg)+y9lH{L$ z{x7QAT<*%*#f9$#u7_hC4*DjWlEe98F`kSc=L;z+Z%m3Bbn$8wwP?1mTOsMjw^P1~_5dfczgR9?jIY-1?F|4sTphco zMBE9UwPsf0mP%8mdMXwn>#cHWHAb4jwtvq6B<%YnWndZAknNX?2gQC)?o(JxrQI(U zHxF=M6}-@Q-+u_AD&++Udx4R0HQdH>u?n|4svEGyziwIthJZ#ef-H%!zN^(j3O*WX z@memnHH#wH2Tm>ACVmLeqAmP`e+UeJfCvioDj-NP5TWT-o`H4T=Xq@Xhc-)61thr$ zVKIlKc&`CSxLU6t7IX2vv>q4-vQ|aQT#HmR{=LDWk(KCkR7eDF@9sohGa{B^nM$Wr zMqL$IqBFq}c?Aj%QEmw9m=`HvKK>1f8wW?JA4eqk+wX3!Z?A9f9`NZ02gip;$9a+6 zJ#33IRo$?ZkZ8IUo8%}A!KuY0epq7TUBLE-yLDY^uU_$%5-w*OM!jAi;h$U!8R`5r z-k-&iCK#?L7fSM6D*|Ha(=*I7kEM^iVlN3{2vWqR(e;`#7GlX&7y}_zQYk6JD{O*r zpQfu|cYQaTuadkf5H@aZIWm#eTGwaAPc*%oH`mwkKB=Wc!E;C?iE};Zb($`s16hPO z>!pmhlOq!zlEpzvg6v>xa057VopwiN1uKbR|Gzd_^%rufXi7);nX2&F2(%y41WkVi zm2@8L(iNg8s)#sbrU4AOyT22)Cu)5nKrc8M&QRqD5wetz-0#2t9&fc;tr6C@+d#=o zQe{{4qw&~fo-gMQBJ)C4M?h1CgD}L&!3HFvaEnFWY=Qg|%W;tUSq;ncIyjS$^XTs3 zF^czt(fIAVSMT3{Q2lKNr+^&1rs&7vq!*jR_pL%8(2^azemGf zp2n_YA!3EQt?S~Hun(Q&O`MP_BcW*UJs)q|?Q|6fKdj^r+oiRqb`nihUBop!HP0wa zpve2QX8^1}b=q^Vzm!o?Hp=45Y`dUt#Qqxg8mEA(N^OoeH@eaGT5%ZQX;tB93)H5> zKO|-41Y@4BS1Z8An!|@d1wby82;>@~)=J>$XMg z;OS0}+HBOr$b%^R{?j$wzET$ts2nJb49vYus0-sczB3Ip}Z+#bZ}zcB{d;!K`lBx*`SOP$h-P@V?r`*-5;;2bf1P zD?{(Duz$=}tL4A>H-Fjf_qfRj5aAvubuyXYKk?B@osCaoH#Bjj4Pm@Be{$Tzr^f~I zevOd1u5p^14YSiC`;RS^B1MBq4(_77xu1W!x!)^+TBCAXO?Xv$PE*G-U0fW)NiOF5 zIN22i+^G>qDL#!fC8pMCyU1s3%h&~LAjBvNtGe)g4}c7-3}*ntZL|KTrB*}?N)Stu0#J=J=ytDEJgTJn<-aBH))Qaxowu0JuaG9WD%3t$oU zYV*>afg|Af{sNwW&2#NGz5{UK`uYmk3T{vCgmU#HLX%z~#|gJvG(0}P1em?Mxh6*kZ#r21ir8H!G|v(XRP&zs zXBP-0(v0=anEKletNYS9k>V?u0CjI$-K3i_$tYAZWgZh&Amc=5OP6x?v6cF9L!!n+zeTpT7*9( zIKRLmRJoWfHTGk@e);lMv)QUi%V6tIDjJrdhEJXn1l4B5K%nlKHQ|?#?y;xhM*V!D zpvwfSLq=8`ahfa*>^YVoBA1O1ce5k~AlDK$ixf4r9L+2#5JMUwsk7VdhQq=8_wPAj zxZZFmBjr$@BCSMDi??6Q<1UF~*igez&rxocRSaGf*3vktZwM+~RQA?wEJ1pa8X zbYY9(a6K_H$6Cn`EpXF$(j%EyLaqeZqvWw{BmfO)B|6RJ1I32izwz58yV|$9VoX)mUOFW zu`y6#t(v3GdYtCBcaNkyr!Ggh4H9IIj;YDmX!jRCf8XmivAD|>+tuizv%+l{!+sAr z?sPit_WIY?w?Fx#pMLoCiDEIMkqeMq7L2>()Nah~7FB7EN7L7DzBoR;u$`vJFCZ|v zq}-7$>N$YHrucO z5N>yn7Z`ZQ@pv|ydDE;Bo;8;}Bx>E6 zTEi3chhxB#!Dv8H8FE?IkL${Jv=aoOqoc*_77i!a6>)*YhSY&|o^qOi?3#r4if~pE ztyPOdCceR(Ewe;TJxlY4y9JA4p5N*A@JK+LC2z)ZrR}J*=g4MwVR#^B!9jSQKhZfK zou%Y2VwqW8p*|JGG)3wt_c}GD>MK#NVl_tHMZ?no+1x)o24Q4SJX^yi>1<1Ez-Pg* zaLTJ9L)xrMlM6YbMIurVDEt1fb)=dt$|x>zHf+c8+HH0hCh>FqiV|{Iz1ib@xe7=? zZCRs!FWQA<*3k{uun_)X1SD-si-xVeee)6kB8=nNaupZVd>f{`pVu5i8}@--M0q zlRP2GiJI=ylzvsqF}$W@DV}dOadQF*$ExXhx@~>;{(FZkoum85pxxrh91VvtX;}B9 zoG~@*o1v9mdWa5o1vr1bT1NZu;`~hbR5#tWKj^keQYcs0c}j86^=5~io*o^#zCT|r z=WG1K{_5^-7blyLVgg~BA=pM)5wn$l1L5^ml~+SL(o5BB z$w|coN4VgOJ&j0Bq_5ZO<#H`4aTS(02{lq{M<_7kJr*bu(rBwjR=EqxGG~Q@3Kk~G zf@4LQ*~Zyk?6PPVcRDTVy(CGm-(MnpmG2U^U<{ zzuV1$H-&Wh=H|NFrK*K3l%kaL;cQvx@bZ&@)I4d@RA`?hb7Mpoug57!>EZ5uB zHrVaq{8G4wJ=Ny6>+J^ST~K_83#n*%j3;(2=|(7@>;S(qWN}tQjjO_7@xe-vRZ$g5 z{eO`%5oqAFTXXgKyYvw+JC@ zB#04rbsP_}OYTFJ>9I_y>4?^kkIUy>+9`$8SVlRJ$?!VO0Ng- zuzs3)s)Za-#SF5suwp7Q?^KBwMHiJG;4uiX1w-avHIr$T< zuFr-mrqG5Sg)u(&M_;@Kdj0KppN$5*jT!NBjy&5%S~lcfzSnI5Q~{X)m&E(H>-pHf z)rzvYjh5pHOYY(HfW!9E?##q6Dif&)+|QBQn0(-w%6}=fX8>is@rytPfqUcAFk$GIOCe5 zd=)l~ilT@qtmSCHC*$$halOTSiD-he!JWy=R~!sdz6rJ+3{IsOu(uF8P00KjI&5J zoXtVMe|dKC>hi^OG{LzUbo-;>sO`1ghU>X4N}2K|LwqxS2B0-|1{Pannox1(u=6-7 z$UbK%=H*HNZ6$z)qZGoap@!I%Mu$oo6kDX2(0;q!a4IcNkx7wOA0gCcHqQnxY448{ z(#19y@<J|C6{H&JmU4?)DvKHn$5TCq1xt2a79T%;Znryc-oC+C1GK>`sP1WtDzb3)Z?~iYd3<<4oEr}Y z*f6KTF7;l&gT)Vm4Nhp9M4Q!W4-d6T%1moI)Ty70r!QZ;jAEQEL@*oHj>6fYOST=~kuAzAe>mC7&)jI8W_IPh+ek;Wk9kMyON(!>I$a zNAy9uKYM(%q)570Zi<3#AkLT~!;aXvZZ?oh)%9F3IssX)AtP4VWvWk!8Q%O^{Z`5q3p>Q(gyQ9FqtMSl__MBR0fz>i|@|)|A_xI;#XHgV=`1G+m=p*q? z3m*98YK@oN5+Lr)HzU^;`8rsw=eshzNZ^_!K$@{u1M3|F?%mzp!3Ufmr#U=SYAkt{ zOP2@R>X2+~g8*lR3_l2X>CX4qNk&PbG-H=Qj?d$yiA+xenQQ%?15|*$@3wp6(F7T5 zSyYXtml*cLHvHwc@BiyR{__yq&M*-k7%394y|ck7cO~jx3ALZJ+2v}oI1+7~ z#J-J(6IjlC_JCy`4tw~GHNmNFW53h<;r2EGY>}H!ESgO{6lWa-fLZK6*aW~>=84Nv zF>n_1#Io9~g9VaY>aTJPn`!KDfLQx*e+!HL~Z(JuJ7XHv8zeA3nr+K0P^}93Mq_c5r;y^jaT2e?kyCIXgkDk4>;W11hA5o`!mJ3)WlQ=M*=fD%NLqz6%b*h9hSAl<}YOZL0V3~j- z@F&nQKpfKd87Y8oy8QvRXR`$)KmuH2E#V0$sGFz#ZWr;iU`>gGW{bx=z}Vry1(-q# zfxO^xvHJFR-|A9e#iLL!*L9H1wR=4Pnji?7VcpMG>y7zlKr%?iQjtx>8O<_=K%{SJ zRC+Co(yZ`Q{oeV>32Ph~drRaJlY~kle_Y{E;w&Qbu>|+xDO)gGx-a&NrWuFy218Od zi~3@L1;QS^dHvRJwE_6y4^B@`0sS5~TdOw;i)s}F>tMGHqvdvYzg*!-R|weaHGC{^ z+3oE9AASX6_|9!PZ{NN-I6N4QN4K}PFt-<%m%(;}qbksWR|pjDfixZ-_d zAsoMIs!hZ#Y8;)xXxtx+YzOf^3j!>CeslMTKcjsG7rP1yJhs9astvkiA4-YCiQ|d= z1J>(y2RN>907!fzYLftO#@irP~b4BPE?oENvt)ps91zW@9{Wk~6P8+N_ZbeTvcL-b&!#RzMJ z+!|rnY5D6-@bUBY&FurQVGu@pj{Tav`)PV`%(m;q83)>GLzUP0<5VF?C=zf+*<>d7 zZKagRNMOJ|gNEB54h_>>2Z_4fPRiPE(aDIS3#pD_1c<^oE3!%3yN4N-6oLRB)$78s zQLHT&+UsbablP6JPo(Xvae925rZEEi^q@1I4*SD_j2~I=-d>)ZoM5x!G*L|GFn7E* zFwZ`UXR|r{4dn(e*jHV$BbMpSE&f2Pfw)*Wj?I90oy_VV(y+v!gxfT3gLXe)e5 zCZn60j$>3NJK$`jsjOK!7Sg9M*qj^zKo3{*S+H3lsvJy*qb~JWkR8ltvzITBTaKb#vyI^Hm+#Gq0Y3Q>Ad!Z?h$}0)q3}o%wto zaj>aTQmsYjd?v3?b6^h7r5q0%?HxDRN3+L8R#uDE9_OknGocpQlTvYGrA+AQS(3vq z;RCTWzy0pI-!sRPQ9%>OR{A(&IK@kZ-m*G7zW^A7qkydgqQlkA7t6(BjXgBq_BrjP z1`@CyK>#q19J2nCKl$q2+qbvZSHJn?FOcqx2S9lZ5teiC6J=1;z**9zM+rxu>3gNz z=>r=hH$W1|EeteK8d$TI0!{Pt@KmJdC)BF3s{aYN#fAwd7 z26wf1oZ;Ay$l>5JM{pbtv5>l-{C9A>2x^>1Lo5)92TcZ=@m>g`H+K(tQFnU7hTGcj z<5dvPg7j_`26++YHKOS%*mLNl;e>H&;*0!Fl4GAX5AzM696Wiq)kLn3xWk46IAQ$i z^+|U^c4vJ!2BfVyN6f+%_ObRz%AjXd-D`Ax4^R}61IvPAdQ>LR@9>p7BAFQS7`r*;h!@~nM!Xa@E zAi@4&Hph-22{%ug1)Lo|Eb8*Kl_tE#&HRlC9<1O=5XzHrw#Pka2xFL)phtQ=77AIPD-#Luxfpjacy*_Qd! zufOUu@X_%CD?}XgtMi`gc_AAkqdD^B`*=EPynXvJ$&&9ret1}Kt)}1Y z5B+u*z^2Toi-5=N^twPzrrR`|t((VrUTJAj!L9&R@;Gggm9(2hNg72N%c^GG@HRK_lEJ zx~Mgp4F^7ui9x%KaP}|%@-P3-fBD67wfp+(m;e5M`1kFB+}Vd)c)0f;KO@m2XAj&- zPRY8GbWez~Wt7)m$2~kcuJh8dUBnASIvGMuk>w$k*o8}-yurESveYY5ki1@#=2A4wPdvUrwBaJa1Hp z%HqOpXeY-*MEP&O|NenmycMP30r$!hKAn-))Vr*lvzi@5@rSGH%`VKOdbpe~vn0{U zW5UV<{;sLnCEM9%)iO-tj8!_{)?S<)_kEy>nxftw2SC|_CX*yl6z0f#O7eOzUv?e* z5THCEwrq@m-4Qta_INlvL{>1JWNCbKG=1~>CA>~uKM{hsQn2GauW2#?Wdoy#V3;N? zGfpB|TvkPz9*{ysRkF_A{lmB4e!E&P;TgN#26p|!r%#n;%pPY3iTP`s0V(uU2z0>c zjwR}0((TGWs{*I`)#*9O7)o-G;`#ZFCQ=E-jhae%C1+i}s*)%rx1(;g+a0Vh0F$m! zs@I`oWO#zpDn(|FdP|0J{qZA?3Cx700XlVTO=Lc7A;aLzE%|M$(rvX| z8KCBkokt=*&a@*1Yq;0<^M}Q19qjS$=HHW#^jl7(}Zb-yMeO zTiQ2Yymctkq|*qffDMprI)>@m_H;6$tc?`aI5;ksL-a^86-T z2r%DhI6ON$JEr0!8Rvwg;>ifwGWD#6sDwF$zg1_Ogiq!;J1RqkKz8^cKmG}R{q*(g z*QaOa@DPK3|J|EcmuCo0!;7=y>8LyIdakYYI<0ooY&EKG%k2C1sMqee&go>t&OFx{ z4F@s~z`d7RBNOSGjXhe+Yd2kQz1}8()fIcR01tLSuv}+VzQ>XXk1f&-Z4+#E!FDnn z=w)&9@q@@!!fuKxD_RXLi}RL)tW9$r4%m*yL$~F!6Uj0tkms{?44=5$hb(J~zC8f% z<8p1-&h5ke`t}|t95Bhe=(7)>*X_)7>x1d2?YEI4eY!4jaBIDSSHbzJ^R%JEP7P+R zMSc75@agk4{0whSbPZX2o@s5*7!CU=oPj0{xOpWs_6{J^GOS2^F6w-phWXXo*A2Ou z6|Lx&+i(EQZJ;yTBmyQdsFa*@qzu$T=8X&mh86Gkp=y1O;|L)Ghh7tQN%Fbz#5Y7D z8Rr-%nyo&Z_Gx*-)}+{;MGh>_rQy1vW?I-|Olqs`Ppzdg3STd<6qdhI~l#Y zJfFY|b=#*$Q{a^2gYn7X|qsX&ZpJ!vXTa0e*ZG z?eWNfrH<={`v`}aedPrMK^mt>{%i`;-*7twi$?uIDS#__W!U>(*p zEj5M!ADc3hrQoP3V{3-Auo6P6F$Ps)Q;uOF#rsVMe>t2C&yJ>N#|Qj< zG`&1Mdi(P7M{i%fI6FBQ^?N=*3}r%u<40F>dq9r;L4UK|sHtv-ZQVecjYu_LuHzyX z`K-etW3x;e=fO7K1q-~;aL7rpJc*+1y3P~$ILFlxvOPx|4_alCkA}A2vSC2uF*1)a zfDhiyaT~th!mI4r>bJM8#%8nb4~9$*gI%SYhyquD!Hcb`dYLbVHoIu(7U197c==tp zUo2zOl0k^P29!4S(rY4FCy^_n*tg$(irAK#C8>rO1s`y9=p0PO2a^faIj(PnjZ>uZ zfVpaIxy#^BNSiCVJD#v$BCuNq#SD2_Z8ANugv4ArNZG#NvM5b%XBM3Ef)cHMTUG8A zYZs+0Tb%Kfp`t2z)6VApsxDWDFI`%?#Y2`y6;RB zfY@lCrx_>qvgy4Q5x?l)>9+%i;00MEla9k6C}|p0VEFA7Kc39dDLv$ z@OP78=NO1++BrWzJ3Tp>$}fBtWt`Y;SYdPUp3GEp(lgTmcY8?YVRP7(`Fi`|^VKfO z*mRE|@p|giLa>IZW3DWsu8|+9|8ArUNJw9@d zj}8aD9-(ELU0>hhT#`M@Fqmyq4Yn=}cTY~a24cNll&{ZEklvW0T}{|d&N>RB+rlUy zJuQZ916Z|uztii(wT=*()RdX9bTrvbbcx)j{&}EWeO{(QAT14t8?CrWRuZWc3fw1F9m%o+|I(CubAB&hO z0{})sVwL4e{j%TdyH0a79CMzV)}tX6Owtswa=lz^Rtr2WmCtY%bqj9$_~gWOTgZuV zco7U%+uesxS8U_vugZLL&;)A0qI5f?X-uhZV*u}OL(OBbcJPWVS35o)BiT-p?04VY zAue$khS%}hpwEt2tVNG>{rokX1<31Tpu$>*5$xi`bX!?z05w>K10R6}`q9htVb|Bm zSYQa1xlLfmi$12;qHAT>l6n<*8d5O1aAhouHym=u;e_$;yuUXXHi^91P%cyla8Yby zC-bb0`p z?ZA#Q90`UtioB*svZ`*|8ulHJ_lp&d91=2LDnCV0H5x7)3{J$&?cIF7{PgM5d_EW8 zY_6BfI7|>m;MeiFQC2+6m*0Hz6NA$hB$kB*?84~d&0Ko6rB&kXL6d4`Mb#1#cf89s zh}IkCk`3}^o2MrSCr2ZsM{yDcytih@ep;~WKs8o(bw!esx76BrG9Y&4_O z=>f;s&E}R$*tu!I=vxRb0CGp8-qB=W!Un0=XCR*>VIi;JD$43=Mxo|$brN;5Pq@}= zH8<68*mBM@O^3=hbsh02RR=njOJPkY8_7&ya}dB%`tCBRUT`*nS4dBN1~5TR8@sd; znO9+~p=~*$gyfJ>rrkjbCtWj^^k5Tbuoo?k{gyW#ArMcHwZeQkf*S2br;m9W`x#8T z;BoJeE4VNr617(`f-=x@;<+I8)b=LQdGzbci(;Y9min}x~9!~_2R_^61ttpws&#-O_-+LbjhQS zT$xqm4gz|=)$WkFl%`D;5uAyAoGg}`ySwe}?WWzfVN2uT0LYq@kY4NM#bwKH-z}Ei z0dSvN)_R;4YtgWZL>Nf%>u}uY&Db$z77LpIK!8{bFi;379y7H9-~w(?NA`tdcYC*w za-!4eWO#Hq#fmTIkGUv7;Ag14-)#3B#L#%R27tFqA_^keZdvIq&b9S0Z5Sr>Z|E=SFojG z7*wix*kA@r-WpYk>(>0k5l8jG)(?}8Bz=M*Sx=2(!Zq(Ug?WKR3lgkQJ)YMns;N~| zHov3!!QW25P zJT^8aI0b&U=XbjBE={LpvD=SRYZ@EQG|w{!gMLP`(+00k>l#_{+36V^=jXe-%h#`? zG>g(Ah|<}7<+Oa*C(KGj?wD_xmjhGLQQ4+auxVn$kkR7zY8h8$dPuGMF4h16!L8!E~P^I73c8UvqZkkx`qlVFW!2!v_1RD9*OtXj$TPI2{3vRFS^ zkLV<@F;$Y3Cl(XqneRgSlZ|ICoM(vuLxi?;Mb`90g`xBLSX>cJ8C?-6EN0(htHvhuM$5{POhl_~GGhv6! z?H5$5OuGGH!zJUgD_WN{g11wm3DKHIa@n?Q2Qd8Z;Sq=!OV(@asvHZT7li5UENU8> z+lBG&wRlq=?JM%6Xn5zW%812vlVlCd;A>_(uJQKOC5)gUx6(XX zG8xI{Cn=DaO6y38z)O)y^^hCtD!wk2oU>@NvQDf-&=grCzPw;i;P5>)4g?iG4JLC` zr!=294ip!*_RNp}B&G1ArS!~$@I-ULeXeAfsS;Xs(*23)@p`|=a>+=UzZ8`;DX^Pb ziB~f);K$Ava~h~+-OXl?%jM&`L=M;K^=7kKxZAzBxafDgzy8%Pk@`2eizv)m)bTFHyTp^8cn9~sjT-`^~w1;oc}(~ zU;)c*NM@_y2yVb@soa(#X69F?9X4G7OPdyqK&LjId3C+On;%S_e%A+XU9DE!!pdB& z<9^o>|HhV$mJDS9VgP8b*K}qwVQ&E(n6lE0q%Av)vm`6htiVCykTVRuJ8x* zvRI@)Rbl&y%}9GDFnH!Y(SP7Jkil?Tf$~Mh)A%zjLKlGr{EHeRSHfJXaT)8vW(5jI zvYimfj_NZo0+W^XQmZyWuvl->vYxN^RF}}IUayB0ySu)I!}#W_uW$-JeEL8M+~EjV zAWx88)mq6)=_c49k2^Y;zzGGMxL8H82)VaCm;#bRj`0&8!SA+GQ8w!W5RQkd%_c3X z<#w0X#=-Gv2YF0?ptNR*qte9u^2o(`}SnWtX z0O1x;)f56#wrUCAsi|VNoK0fET4F4J7nRU@v4O2BV0O6qi7^%}XPJKZKly zAWD2oUFeG2`S-kcipj>(pGeW3`E%)Bo;IFBoa(pEKTXL24C%HKrA|==lol&$#B!vG zj3P)40PboL{J>8^YBpaj5wu_gce4#rsMR(r3f7B8{Q+Y6dbK<}m<~q6@87=<$>UeH zy>{2*-3{Sci7(jNoE|8BugR3bLKcnGW4qq0I1nuwwA8a>eO7NYTiyNuUjTdDXZa?K z+Wq0t>3O@;1JWe)(Wy|2m~OruyI5i5zBpX~J=j&4Nw^QGeXiBpO)4#sW|pg25Aq%2 z+g&8YX^h9h3X?Y+Ctpeqtnf2I{JytC;8n+AE4?4J*3|koe*?Ia1DXJ7F1Rz0$UyA*Wm% zhymev>c3YCRc!Bu`ZR??6dqJ8@ElX1XJ@FQz%B=sz$tCe)*OfP}lCFqrk zXj|$K9QB4R@1kfINAS(1uO@9%bg%ZQ>n*q08{zdT2N%V`SB^xFR0ckk#>lazv$ zQa0dtf!|thVC_LEJYU#aw#F2kYEnAJ8HuqB&X^*oyG<^FY0Q`N-e3^y<1k7`2Zx9h zEVQ_eB;>^|2-fSh`LAD}?t>7IPs*HHACIS4W1Jo&Hmg;D*I@@cn`xeS4B6Pkep|ii zHB7tCidZ*m_(UAQ7WqeOQpjtC>o*!E&aTZ1M3PY(N*#rgdJM`G>w&-BN6Chq`auwJ;Ex(dTmmv?0NqJu z?`5qe-{lZ~4C0Y9c@Ybz*JseYunN-VZ>0W!QfSo znD7rWzc5AanpHwc_0*rwRHw`;NLRz2cgj)V=L*0eqQ-JNQU+kpt&FGHLI+(5m$MQR ze`Z0`)y=~1DRedMdE&KJHEG2m%O|HNsRbGv@L0i)(((9ncDI;}J7oqF=3TI)JmgBk z1NfegUHvcr`8RqU9UUEVrq8t%9EA-6)=A-{7S>jRW4T6Yv^oFZ&?K@^Sx)-dSDSSS zU+eqLmM7N--G)k;yp~-3B|&(ZG8m7nM+-G*r<-ku|Ar7mYRP3siyuGUY0pUOy4+ zS5G`?$~ahV7OL7pTn&5L@?yQ&Bw5z&^>9ERW)GbX2`jJ{eyfqjxnqeEv}JYM9U+Md z;pJwJw@Dg1O^5tt4lhqB+oIQsQ;uv|!j}WDAOZ&tAYnuLn@cf2P5@x?3rPvy97h?)4UPfpU`tqlAp&;~ zhl9y@47-C#jz?20$a21XczD3_O{WuNqGXvi?ZIgJ=G~W*gTwjb!zzdni(Z}{9FIqq zR=Kvtx%`H$v?;IzMgFuC!X3&KOd|rdQej}*3C|_=UR}_!#}Rf=vj_ttP)LG2Jo4)g zB@)yjX68vK!P-8;f%XRyaa%+eoYWx5D4We21lk7`>0HHZXlPF;Rq}vm$MBr5NRgm^ z`Wv^f%9X^d7)8x~(QvcfQZ;cn+y=X=>l^%YuivxH+HIIgl${(+@DbZhfW5|+4~P9= zw^^)UY>|PymSqQnK0Hg{Vz9wc90L!*Bbq?gGCRimv*EAardn#I9 zZ!i?uC|xwv@Kq^Zd9&V_KRTueyU=u3qT9aP1zC}4zGu+^&<)`XTWXe1DYUUIg2B3K zxBWqX0K{UOjd-6J5+r3Oi0JqkyFJ+&E&J@^;_U2fyIJ3UxWU`JJQ^Jg`zFFcgQ1&( zEK-g!c@tQ2a>#o6L`7eS1?4eH6Z~U?Gd(QWNg{_0@ zR7RlkRd(tkp92mwNSb$de}8p7!~cAIJhe@B3OTm+lOO*CsrB{s1`!V!u+!`4yzYod zZl&dx}+y9&dDz)HBtDjN~Q+kjH z`iLfto^aA*$>AiChSQ`>Iu7io;zCxEF=7Oj;yqAaK`h{D&|L^Gejf|eZ#Ck`bTG@7 ztJUYLt8l-^4>&#=n{`?j>2NUo=Id`3^X1L$JV|TIF56wd*YDU3W6fz^WbZI^ih{7i zrj$HbS|NTw&5h?gNE{LAe|RNlH!91DlC&YC5x}HCB=B?zxPVnx@VM6`HRIvs}{o*DuH z)`(i@rlneyesBXS5U9UA9gFhG4Um^aB7h>ZyFCQ{qSb7) z8u;{LG#rgb)>UgAt)tr7L{^c*MU5MwF{WF89frV^S2Y~eL_no1Mm&T~!Q zb&~xC;B`0{P|(}t3C5ZVo;6FUBNUuJ_PEtX3{wz3?L$7+g5)eO|DMoElB2Jr}I zgIpP!&bYuy22(V)pP`((4p2oW^4Q6cn2;VS+(-E@$00aKpBhl@hK&{2tk*70ycXs} zl_dndl@$arEyd8%KK%%zaO)j#+HWdyPmB#8L_{d#1aNd=DS%U%97Vw}5xUHs>CIMc(-|sG#DXvXLxbsGS}LE6P{qV zi}9(#^p*pvAQcDx2xHRIO-F4Q0gR(1H#F196pxEQ5c1-@5Xmi7Ea>L^=rgt$Nj@2bdfEb;X!p@%D~#WAX@2c?Z6ymq=U9N6>6 zN9v!*Rk{Ms>X@q$HX%GIs~>)eCxF3`wjfC~anx{He4`{?Z?`}L@Z^U_N7w@#p(xz7 zo6hOc5zONL{_gbb6wY15baancY3|P;>=IuMCoPea;pOOgLjZVC9*#2 zqK3xStA_41IjhQ+Mw{|y@ZPX7neWksQ-}Q`0A{njJZu0xt?9=r%o(l;Z>>DoA_gZC2 z(m5I&JCYkXke=U!dk3Nt0r{3qWXeJ(j@V+!{$7Vtd>yRpX1$8`VNEFu8_#)ke2laH zm;cRwyA8rhIx`&BB(_2gEbV$g6(sQ^q}gtFfIe^o*EiSZv@I^JsvVm`Mf)JiQ_bZ> zkRjkfBkcPEpwH4p;hVU=;Wm|eMJj`MSgZMB&T!Cm zG@0&TUC`hqLR{n;lNS0<4X@0ajco!aQJKWlVW)#p9~MB|&Y-ef;DzRo)9DzoSk4vP zEM=sD*ZfwiOC3yG2mxb6e}GfV#-_$$m`*06p=cor^*I57DHB3iO?WV>f{P@joGp#j zKqdi}Y65{J?a7-NA)1=9VXy-@H|!{HFQrh(;S|aA6qAN@qvxyD0_K9fPo(mQgpgyk z1}7k%+0vgXgDOV_3d0xg$TwN2NTdo-ib`2AfT&&11*;0RsrKXpC`!s!I6U)a8~pqi zzqo%49M=*pV}eaU5O_hPdx}jS$-M9R_>ozXNe4Cww&EznZ!975M&5{;I?e{pg3z(% z(hpRtk>}g{hc|D(SOFUuR@3w6iAJzNSAIlG<9NI9Pex@8^#kJv5tmE2}nj zR?fAuega*&)^cqeyl9^z>A>?4>-kNq0V7KK{oZ6U4T4=9B?^?OA_k6PN)f+OXb(Bs z0e5Euh*gE^A};Gx^@?Gwc7X;cGZ~M8!W|hB!^cs=o@JI&rFl4Z5hqMap8dw}HIP&| z5c)BmW?>+Fm;hHkRDR5mA(oe<{c94mqk{q_IwdV{`%EKz7(S9$AtYy?{}ol7i~gLh9SDf>wo$6H{X8$elQ%t>x_m&yd7fSdb7ln_l2Y6@aPz4EaGq} zV-*r_cmf1TdIF*Ot}N-lVLvEw9EspKPie4P2Y6sLtWvc0;G%e)Q)!52NFrEWsLK7G zt_kN;ltbBRqH=m9ggHA=Ifa8wZMEB26i$Sbz7hF)d2)25__{dhOl<~F1Yy{5CF*R6 zI+`*gVXEGA{aM&V8G$7dxDt+^?{m%Pvd}Z07e$H$Rx%m^X!i~e4$e-`kaSGOBur$j zLTc579omzyj`|6Jd@v@34dF2G>C4qB+=Uidn52j%kCzMmwjfrPY}GBcv@g>Lgmh^8 z4?p|IhgtCQ%_+j%r_Y~n?&GFQab2(N3ntSovjO~svv5|W?Fr|<=xDv*iEK)|Rt9QARMmy3PdBge^du@V{; zq^cT{8f5!Qs?_0pSrc0XJmWN+lxVGLdTqEPxcD?q$-$MEXD27p-p{&1uh&HY-s4^6 z+#~N_&KHO^IQT4&2;-hDl^k{Er1{KH)N67NRH$>$i6R!ocx3k!`-pOZw+Dv@@4oy3 zNB{8fus0YuLQ_n2FhfTQq4GmTM=q_-wrV;Ox71{|SyP7zmW^}t`P1i4x2yV)e(+T^ z9LvTUkrYAhuchsswXfx7^S6Kh_eEWtzkC%J^~bB*Aj~}%2TwabJX+0HNW{Emi@o%$ zX64JpV;qMTF%}zSaIkj!{p^u^VV=)U83Yk50ZtiKiT>O$*P9Kz@i$+8{h$8&uLu1; zjwsF|@HMia>EThk-MzlO?e_Yn#3np2fE@D7d*qJuty$T6Wy-`^!RT#qHqdt)j!~wr zRkM}|Zw~8duo0ES<)$IsTH8xry_D8ug!9eV0+$vaMFRL0t<-vx%1f+6<1eI30smM2q$#^ikwpgwV>Zf! z0c-iNQOn*Z8U8fvV!p0wJ-3~f-|n*U-F2@%eN6WuPFj&fmR{dqU!9+w!A1`b4u1E$ z-@zk|kB$J*gK%H#yt~2+Mx+vqw)nD^W=b}E3R>1}+XSXTY@AM}IFD(Po}3&3D@*CEkx8?Ss^W3nc#p@3 zx10Qk2Xd$=pA;-YIFKe5+Kt-%A`-ah=}Km9WR{bIcqPDhbD75=8Cs5r2&qYD$G z%$ca00%E!}r9bz$T)amI<^Ti}m1`dHXK57GQ>17OWk8W0@mWNR{3(bgd%43VZ>lKz z0!9#2vp8*2=$Yaz@}qbaCz>33#qJ|^R~W%QLgxDZ!+Y3TZ8xv(AD6p*r=@otHq`7k z`$2C2oU+-hcHtH-cr+Q7(qf$C1*aH+_k=?OS-#WMZtv39Z!X@vd4r&aH($=@+s*pr ziwn4306o0OI$1PIXs#k9(IPqQdC{>I9JrY*w?B-CI5EMRjn`^2!ppxc>N_C~;k(h;sRP4id2%V>iCErnT6GEw^i;6Y`)v=ALk1MgIL6O1Pe%Cb;0bShT&oJr=u=Hu+wbdq=#v_+ouFx zn%rR(m51!yZmd>#Ld|WGo)6*d`1EAE*&G}kx|BB9A~FH!`V>qsaLyc=4_vL*1yx6~ z;ixy6PEDD@fhjPZOOm$lAzP2h}}WeAFD_W)(K_ILb1(5Uwv_ho(fH@agafh(W614ClMk z>wdiY-0AfWPEO8Wyxhextmnn+*Ldi`bfR*TL`Y?MGwwK&$W&CP3Bt$u9G-x>KbGmJ zNiM{KLNm*!Il$Ve(_Yt~9E@?cc2Tz7rBQ;1U^<5&fP)3^jyHs9H(Xnl&5*QUpOE@v zjj$`MAG118kgQWWGQvG?6Kolzy|}#8}8P`2O z%IY$m6Q>hMxUx zO&8b)JA_!yv9GKIvb#7t{namj$wVTn_JwBGsWj%eQ5^bh4=EWA5<58H8eO+P9`^>L zgcIUvA{B1A)~`jN2cUr&O}Earb2qT!y=8p^bRMvuRp#ay&<0UQsjI!A0yc+gfli>g+4TrYbB}Hu@ zGS$@V)P#@?=E506Lq>Ty+vqyTU-3x@l5Nksxw;w+`&E&U@KY4#c4FFoyEB?hS#FXs zO`#pF8x*Uk$iiDz-A)f*LwV6Og{#EI0pgD*WBBSgib8~vx|&W8UcP)eqy!kkO_iji zFhN>8gMYZWy}i2LZ-YFcTu7E=^fFPhm@lqBU9n8K*|K$O510|MYK)XDj*wf2_!DW> zb{oQRrzx=6e7?B)eEs45hYue9-mUR{ODi zyFG>P2nBQ#;oxuo_GhHD_ZvlAHeFph0PI1}M_ye@ZLwyzDq9UNUcUPCfAyE}MN}zS zZ}Fs}P+M%)yo$r|#vvS!$B&Eo?cE)K$>H(Q(aGuW-hY29aiKpNSx#dx8ewC@aF4yg z7Lo6{;Z$serEcqX8z}9NQr(fVI$2jrC`#IAfCcM@QTN*}o=_)q&VC)lrNJv|3S>2q z_TZot6h$PbBVmC@P9Y$sj?Qt_=6E<gw+L^WDw$^)>eQ^Y!i39h}JH>;rQ5 zhx-p#SHFAz{x{!!|1ZDz)nEVL|M@@shyVD0{>Og|)(;1Vhwt9KyS%*YbVxFVU}v%k zh1yPOny4{-WL|K0cyjDxiDxAGA*u(ahFSg1-~Js8sp)DXWTy?z)yVv0a(Xmn9zikX z7C>vsl%(ch}WVu{nQxTLuUtM9#zWC9P5I%nO zo8LAh7QmR`2JkSj05(|Ijgsms#8?H(g)v|Oj2@m~x!Q0vU5#l=r(CUuY%HX?dTrHJ z+cihMPTTVVQ0J>4q?DiCVdH{JNrF5_n1vI=yTaWe1WZOFY!&hr>RU*W0AAW_w`eX- zGZtZB&+oLn_QB!NX0zGt0$2cY2{_NT*HTkv`+b7tz>fnKiSvwuFKjt!6!3~gi75Tz z;!>x9hbO0}gYod|Kl)lD8>{a7?P0$U59C@6q__`vcN~?Ec)>_r`)~*F3^zhX2>ic& zunyL%V7(!lh{7bgo6P{?2m*nGk(JbD80>pzk!6p3TyBTY%NG<>r6?KmIQ=cU2@DX{k}?hK&R}4g()< zL1(u&lFRdp7rj1^%oveSE_6&vLp?r{6^2}0+SfmN^YOz+eB5X}fnk5X-v03)e+_*0 zpa16n#e$w)T(sNWyZif2w`;I>90o_3%~&oA`h$K-fw>6g1qbu^IA5*ESi^FJ*K%Qu zEw@<}IEZ?gWi6BAf{vlhZXUjT_X^(wbo02&IRqR>NWs%0XQflum+L*Sv(qqvabVrU zeh+V`m4!tPGm53GcDr_efJl;;wb$+p$CJ@`+-$Wze*B2D^5WwBSHJxEXgGi|0#0tX zyO!(2NMYlW&gno*@Yg;-#%>3fg@=@R=VqtfVTI0Z^pB>mzI^xL)2Hdd^iTfuPw|E@ zp$UM=WQ;T5b-Z4m2-ovllgV&A?hnU(yJ@|A_v+ObZ#3KR2i>p#_@`g~_#1@u7q8xY z`Q=xK2Pb)2?AE(sXZXiI`RNyLUjONz{t3`{A}1brUX!MESLQbaoMr4YlBzSHIH?lK zBH@J-i?dC?vkapD<$wL(R(qCP@=kVG{3wynu)WYwYEn~h|{`1d&b9i*{7ytS%Pfkv1jtBDB zWIRelEvOcDD*Ou(FIx*U#Ddid$1p&a$ZDJCD{gqsP8!r|1U{@04#tBn2kGK!(Brgd zUTOF94LpWNhCr70Ir+egkQmMlsU4hKzuOsfI~MOjtAHAdmZr9(dQTd-9H2xx9FGrA505TioDGM4DUF9BfXC~LhR7b&G72q5ps6zD z|5w?U^+*aL0+itp!eRY18@DymZid3el@+<|-p^yR>aiIL;&wu{Q z-+rkk%l+L>vr03jXD?2emL(sK#(2J!s(17Do%g@}ezV>2aoCuMiUboZYKkI-R*?;f zD3P1;5?^ZiNpA0@JA{ z;{sdm9PR66M=O~t+UT6SzO%dEt~aVq*_lNfC#d+1dMWT7_!BrV-GH+(4Xb3i$m-Hn zWJ+4oueB<5;-RVgnn@F|OuVb{`ZJBm5JMKJNv%cKQ4nI_E+KRd$75owWNm}VbpFw& z4<4USsbV8Zwy9MEce9M9lZ8W!#qEd~ptC4Wb~>G)S|yG}N=cOUYI${e{*#}5f*WLO3L+doW{ASO0}|iu-B;Y5xnY+LOgO}OiY`N3QYZKG^SA#DHp_$ zBSe)&T6R^xTv|-0nnIEfQW68@mt7l9Gung_unA29Mm&o_9C7%YPRV*L^VS@YiRF}n zMyq{roU7*9#TAtp4Qfj12$>{tBnjO@9Dg1HAem}S5&JL1UWL0oM-U;_QWwu)3J(*m z+`z|eGhBycL-P#DbS0=zB?kvF%}UiO5H500L`q%N%W&ehyTMJJEk{@V#c-mel55xw z4arHV93c(Gv*%W|#D&F_xfZ1b)5EBI&S-*0(~;3lX1JUMU`?kkYj$@!&WDwD+q z29964SVbjE+U-=4PxbnPgTv!@-+Ldq9H9Ee)fLiZBy7{^82QVWj~=G$_^9oUhwIjfsD7?i z2nYD>bHp9bSD9T}(Ij%R|1eh8nq^#4oL_lBitfukJkz8007WH_8g}Z;G5o{QuYBI z@EBkZNL!Y`S%?}6^_|?ZuV_Y^Gl+0~!vqLbGh!2k|1+g1o%V-=^X_~!j^Pqi)d6lJ zXQvwY9j?yo-NYXx8tVp6wJ(=Tcvb2XlA=5Hj_@sW_(mMGb*x&YT%iHqDU*2x)q11d zro?QyZq-Y7@7yFNlT7}`>u>(Y|MZ_1>k!!;01K`T3Cv*7Z`7+KXRuxc9@SZqIR}p9 zmtFWm#n8{LdWNh1*}wYHTkpQRNz=u8ZMp7}W+OC&Q5tk$fI>TyL`k3XvcDL5pf($A zKu}M7a@FnQb^(W~B;Jg>0$`G7RnOUM!v1*FpRQ?}UXl!jlzDAKExF~vWWJ&kERDwa zJAuO}yEG7^k;J!a8%Ei&DsTccr@NR;M#zBZZXtIpl~@;;$j47!JYUXdL8SukIl+lB zor4>9D$P!%x!XRt3B>#K^H0)E$RovhxkMyCA@vohTTkadmp5=MVT9`6`%kjf zY~HBW;HQRzAwVT9FDS%#MLk8$R1`DGl{AO%Fg6juZH9jyuQs#6XgyoSi`8N@$<~pj zYLybAgpV_nAoW)z!`8iOIp)bYR_RuFo}Gr2gaR119W*g$v?O|$C2ra#P7~QMoD%YK zYGEu%oA}n{{P0&_fAi1(;xGT=ul}u~%6M|mPT()jk)D0?op0K< z@!9=P&d**P?Crku_M13Ud9p@qUCkGJ2M7J>(#RFBY@Lr zMiSY?r;-f1SGWY5a!cgT7A&CJ+I1^U#VUD?4nVycEzh1m=4nD2a;(*=wD*oXn?!X+$ZUww6g%$ElUd$XQOFKKtqa`TO7e({FTHt5s^I;j9)LVyVjTU2q)8!YxGb z)hsk*4RB!EAAk7sU!FdG>KS&k5*)PKu;X~M8I4Di#U#pNBygr{rg_Zs(_*KExk%!8 zIw9RZ>KDsm(UEd6!gM@in95pima45zB?yq$ZI<(^i!*rLTeok&_4eEEzW3gH?|=K~ z_Fb>h2Ko&*E5p)<({UKB`-48RBA_&?ZBbKkcKYH4kku>q?j7vzBI}IOq_Nle?w@>c zYF)|hjNh9Ix;D! z-??%4n_vG*CYFL6_o0nvrSZUeL zVi{gtjjy^FDXW|+rg87Bx7})Ox>ymN9S@Ujc%l^{DTx!FzAUIZQ`*zTGs>7upYnLy%<-0 z>2TkN`K+TD{si}+-6;FE*{b?}*}-iBc&pTEUL{Bw>>HYWb#{@*al286O#<&&roFp= z`1tvS2PbfJ$MI@@&`@=Ae{X*Rfa$ov5MO-y`*gEJ&Qh<{H!++W!48FYMrhZYi6zz> z3Ocl93P?thr8Ex*=oFO8o@KX#zyc1POqRXg{PJq>?D^pN^Huk%VVcLyhG!VaM19BZ zv|295(Qdzcc6B*f%w4Yxpze}f0%<>zq8F7Z6TwQv6FYMx1w@=o%5KtPIUkLNc;QTJ zlEqn4Y1Au?mRkuV!wO^Sy~1PP|KyYQPODN0WLmk?fmacd{IVC(lza?8x}MJUjI!#_ z9z0Y4OTFsVaPs8&bQMWQH#&x6c86D9y>{cZw_@^uDr_%`xv;?fu$0UBQksc<8)9jc z)fCQBqcuY@;~6KgzldmQr_+9a)awm(!>%DUm3Wqy934rnYZN;(iS{j-Pn%k+k`QE+ zk=m+C*l5vY(ZyB&;$pH|XTGcNx9WA@^&Ast9XVmy2SlqNYex8iMfbWrpK5tN?r0Ll zK~Qh(bnJ4qv3t-R&ey2~aO6`%-N*4N`yK+3?(FSrxUguQP)457 zrW6wbAxa=fuNH`xi6HObVJ!ltmabLGrMmAU)d^g;;d{G{dfh7nHwSp;nhxw)rPV_Z zFMlu^cKf~a%S+ud8#}FPqfRN7s-!HVZ1H>urC8ir<_Zwe5b@kwQ72%ERKi|>d%CHY zDuLxy49Amn!l$$O9Jms9^5frsWZR`zUU_vmoFs92uzv_63*!x~&(eT*3Y?43Jf6)} zldR_wCpF*Pyt#XHd<0Vi6gs|p&kdT1q;lt5;cuDL(JI- zNC$E@TjCmqqbUFrJhn;?ThKYuKB$&G+B^7Ea(~GH&kd z+&(!iWe^Ce#Ngfny|iZe=wQS z?wmvGhB8ngwX_Y(bp1pzHP>(MA9s#!9^bxq+3UAARoU=&>8cshoGc84S<)E)GY!r}450kn79C9k9cPf<3QiCI&YSuIvkg^Z>k&=3nM z;$vX}Vxto2A|CX7muff$U;JcX@jD-~a1>Tg;c$S{;XPwp_p|zW@Gv zAN=5Z_ys2?r--n-M@I;KNU4e)>n-`7Scer3>7RQ7nwMl2NYUxW3z#pK>@<0_gV(H3(em@4_~mgz@%G zcwKS&g#|Ey8O>`D2eI#wl&Rw`H;L(#WZlYG-I7|1QGDapt-)}NYk&XS-+6Iz`ak~W zZ}3l+YtkwE^)LVFfB)^@wc9&*)zifs>B+(V-e3HiAD3O{vrj(_*BifD*KHTxRAE}i zYX@*mukp`g!L=t~A_qcIJhK-8s8MRr9fa%1Es-1w=~*$y3Ju242#z9tuEa(_oYD%B zhH&Ye`K^c~CQEfyvUSxpwZJPO$)VkMzv6lUonzuTNExi=%vz-lC$mg58+*q=`@pW$ zO4SCwQ|y^X)CzmCx3}y0{xV!yOl%yb`6|xgsp4>c_TsUYt>v6%7i_nTykN7AESeI8 z-_8qy3q?$uN_gJ3W1F^VSVl_3x{Qs)GJzt&A(I-C@0UE7fNQyq>DVwk)lgYBHRF+D z4vVk`MdnTc^y(dqf7)rhv_g0f$p27{9ex*kI zb(@WAF>PN=j26q~%plSmBW1cl1a;EIu}ok?JZu`vc5Ly^A3G)qpt zS*b`+i$xpaU#bSxZ@v2t9M~tHeEjIaqiC`0PUkld4|exEvXW0mgNuu^%kvA@bpdDW zvS*gOFp3Jc=dCSXdxh&D^|G1r@bp(k5D8DPSRzs)Ka6N>l>}T>2|kuWpV<85H!jo@ zJq4~s7S^PQ>04U*m-D*k1ZCT`^hPacwVHT5t0>+-x@FNxC30yT2>3Ce_9?O*%lYPa zzE5b`_Kt6VW4WP0P8v$q)b8c^lP@0u#qaLz1C7XravI?f`VG2~5tW2k7m-E!5*T`Y&Pz6+PIVW;RnaZQ6>#%3rW!D zZHMJw4hPrP@O8&Pv!gU8!+p37(~-|+ixIUD$1nn-GAfl>vyXl#^U{bP$~h=)?-#tD zlo3;co)bZN#geO@UGq!TO1XoxytCtYK9F#^QbWv6l61jjNI8ihc+GZafA9Q!rEzKv58rgaQLv0hkKeP!wBx(yIXckaN58rifKu#_95tY{vZVWfs6Xu zr)j8m3k-{Ju!1KLM&P)lrJxckq1ZZ+1d(rn4mnTYIs`2!CTamGAJ*WWA_Z{tJaF`C z*$T>zUoKTy`Asz}gkJzX7<#x0=d&3+Bu;a4r_1j~$CzAjLS}iUw&c68K z(=Q%;2H3b*;787G9v=f1o2o|IX2dT<^j$1EM$J93nl84I3ocXspm@^-@uji-KsTAr zYij|t0jMa2<10u?nTQ4sJl;g|HXRVvAz=ZyQ7lQ~iESB?DbV~GlV%Y2q($5sG)Qik zFonTzh+kK7Y!U(H)P`z4icDKzk~A9*pMCkzAZaCBKX;dR(A8G%?qE4bfzDqrSO0Z@4iE5KEHwt{T1St;)}ssWr7 z?P%(xD`Go2aolF}#e9nVd$q*rs@56+gI=v|c~!Sko6eWV$2T5)_TcvITL_1Ao}%Q@ z<0tqMEh8Zyo~bB7mTLg1lD;DMhyHm+@c(NBTTd{aOyLP&1W3UEv#vcs zUPKT=2kZtYb)@(30&(})!zil^f-z8}6is04n{@TyI} zv0G_&N?y>~X-~$Jqr<}&&z=)QRzzgn{lN&{qEzTDEm^Jg-2n2tIN#d+)WS7XCsl)`IL03oXZV6r> zQCMU=<_|!iNhI250!JVSe)x-@`Ht0Y)_VOhT&n3ZHNfH z60r;=;hJ>dypp@Sv$MOq2O}`uz$n-4azGr>Svnby0Ca;&<--p@+&ehz^@nb`veVg1 zMAl19_XSebBwQw|<*0ix9-J>0)Bbcan9kxH0MITOO0DFSi1;Sw-60|?)Tpd0i=;sC zl`?+Ux6?jC(TC+g3_~cIF=UVnCi^1GVrR~7U`tJ!(rz;ml~E-HaDQkvNCaIU3Ppma>ATU(-@qiPPMG&!88Y3cdtdgHv%YH5&mSO~Uc`)8Bn)D!FST zg~`@13!P@78qFOXR$7P>WkK#@{qaVSi~d*P3ARQ+o`9sPT~@=Ar0ZB96h!DlvH$Xd;b7 zff9`;;U7JGba8RfY_w?zRe(!;6=2WE@q?IWH_8m2D8;XWQ~O=+OJpZ zWyhuAG|IdrS&$Rx#Gg`7j^%tD3w#ihC>GDH7PKa+0EN7TsBE9cWC7 zCzTM=V^&K+)5?#Tr1A{njV<#MDr*h1Dh2+vPR-?9V?I7XDyB0557F=|yb8xlILLhv zWJFqm6N;o@(z|;2+5IE}xFR|MNhLBKpn)19YqN#e0V|9)E0RRw5*TBbVs?~}Z@z6C z7LQR9bXvJ2#_|L(%qf^{V#WlE!C(Zpz=ZHF4TlLtEC|~bLE=l4@G0pROH#wLYCeHr zJOT#~o`^Fnyq=ua(D2)dO;|UbgX5b)eWz5dBUw~!7w#Bm6(EV|g)|v3vOgFg(}Po9 zE$97i_suun#2w)}ATELg7!(ONeZ5``7xVEtPWt1;>D6#Jnr)U*yp{ikgHOED460>bn1Th+Gb~q-ZMHi5R>`wmPoY6ul_4y7A)b4qr!kw& zkrtL*CtNOP(`mci_Iw|>M4@fpbrP-dD#O_@+02(D!nwZak4~=!qwy?`;<9B{U8~`{ z72jmyRit66p^-M=CW#pM@ID>$Z_7j*Bec*9KIUvoF9l18*X)%;)mpXD3Ti+w9osG8U@MgV7G-OS%1nKZ z|A9;OJtFC2{m{rJ0}q(#BTLsSHQh)^4aa?;1Cr%gglCuC=jT_0*#hSgc(74+8kJHt zaB91zLc%) z0N9d2r`cxp=_elpKYj1}-$O!iaeitUYME+KCePv|JU>o^EV-hkc~KROiU>tDO-)h% z&7b&@-R{zb$_>WbgYR|z!kaTThzT&Cc6ax*GR<(Ul8vV^*>)G}Z_L?Sqe zLN(iDE7~EAR`bOpNdW!O(~MMB&f_<>@X+doPv!kmkSn(%<Tz$|P=Y;pQuBc!iJV78PY3Jg>ue9if;?ov_W=)|J_0{KdnE zM@L8P-3}2>Ev5$1N_ap~_~yl89!D!8b2Kd4AJ20^tdy`OFI`Ll2d<5P&v9V{f}mAG zhI?%U{XW~b;NhWC9h)_g+cJbBmUKmK)@pZd-`wAAJEl&wn}9sb+@Tv4fX_!zJ?vt*rivvf(=~9x0i+C{&C;jDQ zxS_f26~e(;uXolT02t=1p4Rf+TGCC`$DIitd)mGR1-ouo-?5;sx;W)(G-KwXf&`$k#@Y z5&3js1mp1po`9P2BtHtvW!^w`ZN)gHrE9gIa(sAj>&8(n@Zn?)E)3v@8$gp@#cwq0 zt(~CWs8nkuuR_AMs!ppaJnheRz{whYpa=yb7O$6CWR3QqkziDV%49UmlC>1CSL4Ba z&|M6>o5dV(oL0*h;fssQv%z2$5xOY5TFY|*4B?buj!Z74A@PB$9}EYA!B8L|j>22& zX+cK4#RY=aFz4+Vrc=*FHbByVo3PjGe)Rj_J$m>BTw|-*AR<0PNB(kfcxYPIb(@YS zPRNgKB~-uW2`J&_44agr3@S~lyt0@@v5BZmCPy|6Zwl0q5o2VG5I7ljH6?F%cD{J{ z==|cmS#Laf^yuR3%qt@xxZ!%e3|GW$8b`3sb(DHu1%Vtl6GjK$KrbrG)otZh+FF3f z`@iN1s1vp(Bj9krgsXg3C7fW62cjy1N8YH__V;#g-8gPH8z$557$km3YvFkC)mFRO z>eQPpH~`x%8?2(2^LVRF$`!h}EyA^k?i?3qh@T%mtrGaSRk#<(H2PN;>1Gu#r^AcW z)wmxo=L*TpX7kl*G@Cy;Jv;4>SBZqjUAE=wuAZiiglKMSF|I7RLKLK2=)v9pFOcyu<2z>pGH-rxp z(`HAG*{@~)pNwV1-?C<;4%49wpj)!>Fz`8&Ogqfol8H&!ckevBYx3eHx65e220OlO{ z>z-h11jxHcOt{EhG}73W3NW4G74I|~hx@yS`+FtF;dX^=5ZxmU&otYeU}x8_HE={s z3rQgCTW1bZN=JC{kp~n6M&{$eReEZ!5S8?5*>3L;1Y69Jr46nw@@N&!r=zR$G+dH6 z8uBYCn}y+EJb7|@dfF#NH}V8_UUzN4lSWWUh`fSC9c;_x1t({K$Jo8XkHz6-Rg;wc zO_A*gAI^$uWCx_My$@iAgEkrK+}W`wvF z`-6hi`nq*1{woNN3Gq?KnQ8!d`J#A1yf}p2*7S790`!729C2y0+Jp<&H8WKI|5 zd*>%-&%Ssh$0=Y1uA$m$F4n7FzqbijuBMk9cQRjIc6&jMBoE-*5jzzYgvnB&+$a@t zz}s+ubD3vbBiM*=u$ZtB2n|W{1TxXek!k|1ttd*_wSWf^3xbMg>KYP4ysmW^;!*DI z?X^0))h6xD*p90k7D*~`z@>&5gED3WyVj!9M0HlMD&h(dW~rJUt!Wzx_h30&j0daf zFkgp`t^#|~lCP?qU3F*6@Zr;Ey;-c=^r{*a<4@jyw^lA0ELD>-r8Ck`otXGj;=|C@ z`FwiSy_`EvcI8s|(Aa(;UH`DdTP>)MWWL=sK=c=mt` zaQ>Ab@O+OaPzbzgOqMCe$hhdMu#pwIodqH+#C0VC1w5Ze(U2bng&}UR(UwRipuL29 z3y(A#4Q?Lo!=pVud-1bh{Sv{FiXB}+AP7Rrh;*nnY=k1Y#Xt%Aor$B zDd*V@AwGv^Ce9@y=X!};V6>T!lhqtS0m$6KS5>t;9jUhc;L&54!ZJ$Nv2^!N@E`vD zzkB`G&62LiYbNZbbc5m!4medYErZ#_D1Apbn9UII`s;NFSC243Oy;xccs#-l+;>ELPi^Z%O1jomRop!tIl~V?gxNc;vc%@!Y(TGkf*LmhPE5y#W(;Tw&vKx5m zE$2!)uLE$(%7q(lXR8WH$*V$E!P`0k}l3J_6`qWN!?x-i4EWx5vwXB9H{W|kcuAAwvNnIK)y~&nz;W( zlRm@Icr>1{t7K2WYxfjU5H?{;tw#06(P3w&g%AJ?4}`26Chkk4*{aqXb_wT$sA)Ns z5DW0qwooGp-cOlVVz_BS@ibwA0kQ!8jKp1cd=oGrK!6;r4LP$7-7LHpIMrgfs1XhFgL;o;-dUP3FUH zUsiS7_ttWbvq*a6YjCi`HxWIA9Tp2uSJZ;vzIwTM=PjVx)%T;Z@)R!TQ~5 zlFUX>p+7?T3I3l2Z|OdiJ(Af#ZpgyQA{U^|e9^qQ_Wy$GRJ_cW?4XzdH)&%@kp()> zMNP4Aj3QS_Su>Hgxyk!xAK(8Bj~_X-qUnL>{o?O`nyuFGCZ$SMv+XX-ceSdN%eHQ9 zmPryNC#TPG`|(_clW}`**D04-Pg3XEYpE~;`71lPMrULMWCOAA1Ya`(U8QCR?m@+~ z_S!puguCr_wHgpFQ<)UhR2m;GQ89p6AcTauBy@nNUM-24E}7PW_^fNp?JOAoh}qG$ zb3PF)M3#$dLZljWFVpoh-z-%rH4XSbb&dQ!OV1~Ll`8Yv+1Ulr0L*8X=O;h@(GSDv zlxMzV;_2SR;bwztcJZBgu^-MtRdUfS;CHeZ7F)83aKdC3_lycG8Blg4B=NZYLjzdV zY8632$YXGNnaUC?0HlQy;I>gIivc|GGPiYtui}BOo8kcGA~6sZHn>JzkHzu_u`j0r zEfEQ*s$KSnyGJ+hZ2rq%|8+Q<4K6R=|IT-HmnOINkB{(ju1+te!`V7a%AP-&^y6fW zJYo^9D)kx>#}nzd!t%UdYadF*c!c~fdIG$E6%I54DM}EOj}G>4-vl1mZ?~Ei&l8<^ z?(yJn+oV*`$hpfP71BRE)wiAJqQ!l(0!=N7gd#xY$Y?nx(n(EYQX0gwL13Q^dk6%& zgfk%#@K%)sLDVvP%dz8oquwZ}RPWup2b6l}_HnXat>^Q2z2Px)8WzPHS(5xypTeZ#ms@jff_wdPp?P+~31PQ@--3%60!% zIJWBte{BSW##LRqMr9%@D54~za9b)8LJ8DB%5$9ZC(llDMQe5TmkU~uZ8wmb?cch4 zFW1edr)T&lawa*3`O4i_n>z;pclD|Zgfp4Vk}M1A^?GYZ z;A@xw$EVQIwB;gXKsF{fY z&7z8;YeF0Z|B8kjN%RSLUYd-C7JgW~Ms^S(IW%c>I83s2mVS2faH!euMJHd}dcBC5#lZ5f8uqxCF#GBB-xIV$6TnIB1OBI~`n^c((s+CHBJh0Hr zP?&^_UA?%O2`!>1;)#<3r2bD)7`Q%Zxo8OSrzMG-gbL4Ut3}hFyG=3=C#Iah5r6D5 z4Ev+;I!{+|gkW@hbol9K_s_c*7vq6sn@+{Q_1bH*!N4)iyKlY;{M8>%XbgKkh@l&$glBlaQb=bq-^pK6*&eT&tOGaO{S?B>Lp6Rtvr38nR;3X!)4sONQv?=T!zG+ zqB>@2(4DBVsjFs;vzSL|vd}dor7`0BI!S(W|Ncf%e)O+@{QBM3P1!(l_xS0v;cSd7 z2=<2Ka(a61m3{CF%Nzk zL8anV8ug~bLykO2#-1)OhVCiBu?)o^1~`@LD3oy{dJzjhEAViqT+-D{*K&^hM35tq z2T-_yByTZ9PAjtsH<2XP<;=q{nvCbY>2#(f4^N*~D_)vL4<3JER7#0!)DCv%tHp!+ zAMLeU)xAz0E=RNR)!=G0yy{;(fBNikt=+D7cD-g(Hm&JuNq$DBbv&Y1&2#u~K$<9# z9oOUdr!ohB8g5pbXgx&=JsJ>~>Gn3M6;s-2?EpW+2TIHo3a0@J00yyv2k|#gPs_!; zf>=?&?<0mBa&`(2i!1o`VM?_S!igGdlk-E$OXbS2H(Jd@c#K-L8b#qITKT?{Cd+uU zr00hdrqDLrjk|Zh@r_sIC|k`|=a-jHUOb26Ec<1Wm!nD#MMvVsf`j7xjHf*{u1##G zA-L)(2F-0E^5Z=NYS=15*D;~pVR~95KT#n<3$ZUCZ!_y{22gA-u-a8hy!B!oT#?w0 z=*yZUf&saKV*Zy;mLM}@ZC>8lU{J{eDKw8s+*PwVfC1jab(CxBG+W<&_1@D5Up#yK z*l;a7@XD=vW2dR()*zv^9p5xH%S4tlnU3y%{QD=5zl446-MD#t=Z?#jW}q&(Oi2ii zlYiDlFOX6gk-zXC(g50ow7Wf{HgQ5C7J0skHb8~3l#QlixVLaThdCRz z<-sNE+Qp00!^RGrzJ|NDTz>iJ;foi~dcE#)wVuqP-J{z(`}?iV&SJI5vKV+Sg;gy! zx};0gzPGlvGsk={FrBOPYEXu?nV#jHy>FIph zn+z^Ty-SxnOY`OGvfmF$J@hJEE*zF>C$;4~YqXk(1)tpia-` z(GHQ-0%@x(!mUWx$p>QqI#%r3Bq1gyDME0SPY+xyk@uKXgIbekBSitatGPV9?Cm$( zxYxR6bq@An3On`Yci(w;(jD|KNYml;^yKpg56;fdbkqLM_kVbN>kja4tKBS@EZflU z-MX#I+GH>#hZRu(gc%y77fo#xMK+1}QB{OeAaYa!hU4jAFp>nPl_dXPdPyA07*naRCr#@y;+QHX__6h&OFa2;>0{h+s?t?08BF5`gaiT!33xD4 zBiizV!G6KKAm9NI0$D;v2!VxKw!7V~uI{eNp)xDSJ5O^`9LXbvvuF z)u`pVQe@nW8*yTvf3N@h*SEg)ecN&ClRvi{4hQ(h;dH<%!F=80@uJae0Zu1+ zy&j6C5-ODnjt>v8{p>k@{N!tGhZVd3W6)`bU035)9rR^T{@i( z>h(HWt(IOlo6TZ1zK?_+IkO|O|uCJ_t<5e|pJYwq{^W_?F% z{a0PW-}Ljuiqqr9z#5|6?!f7Ap;oISpD&*u{1)VAgo>o!&V*rS_$pK398ux)bfXD)k<(+2&c;dhts9^<@h$h@`4H2 zcBhN}aEMy1hElmK!0zwv;FAwN#Dn|yQLT57N`&#!OE2kTVqya0WpL4xn0Zpw?)h(P(IG_V@Sk;K2jjx^)X%+xwWvr0~u= z@8H_CYe=P1T9bG@4!_@zP%yyVdkR>tiw)Rrx2xA|Hk&9Gi>HA7@WT)B+1WXS zLm?!z$pRR5+vwG+=#=wl<&Oo{X7L2wW)&`{iJt^4@5NsVuui87z5W2rb{mC40p&^s zxm*rU9zVjL{L#Nesoa3a1zf#)8E?P+HdaUtxi|#!idI*$Vhm2c!)2*{8G`d-5KE8)r*R<%gf6GEkAVf1Osq690IJp zE?gsi@FZh&Re<;l5q1+RE58kZwczqN;dD9CZgtS_54E}S`65civLfuKpMHj0ckWc{U&i$G3}Ueu!jTC4fdB@bHae9OnuQb8bBCzskI=3Z(C^gYaXaDULGN(> z*R?d-e=peepTI{Op#9!_3qe-hA^-MUtthDP0gjOTgMU!KMSe zIRq$o%x^njZE$|mrqW6}U8vUU7z_piEH^Sg+sF6)2kVGMgLwV**Y#o3q;xusNH~N5 zH}WWo^EJ38jI!JS?RFd0YV{PbPo6x%`|rPxCr>u8ygaW6d;a|Szt#wQ_Wl3G%{zp{ zW$AiJ3A)`r3i%=mg%V1o3Z98BzK5xS(Ww^22hkeoW4!pyfuSc0w5XrkTiqTXm4?s{^9&p!JMpMLT&@+Tz( zybiqa#v6(vJo0!kqy+p~0@se7eDl01{H$Nj4-;U2Ya^_^x$J8^y>9YO2jKE}QK{7w zAqlXPlM@}|M@L7vfB!yy`qQ7HTxno_ZVEs8(T{N9!Ue6**w`3i(Fj6;06cE@DYxhA z+Z>cUmVhmn%Zl6tETi`N`ZFvo&FhHe>-}|d*lz`_a{!NrfbHs|RICWFg?tH*9zDh% z|M9=VNj`_GmoDMG_kM`^g*i-4P9PqS!Q=J8<@TcA?Vw#MqH=PG%CP}#w^0WA9YYCB zW@T{lZ5)<6o7Z?DGbCdYN4}O4GUwu`?pPV(5$>*TTQ|-uD${ z8DY4wnJD>5m%Lv6ybTVnIU}r{coDFS+;-G{{P-yr7v}_6JGuSqO1ge?vc|NtC%`tF zZ2`7eD5F@c;OOuew{PFYPk! z@~GnxK`KDrs$>5f{@4kObEHK4wsP1PRfHG+zdPu|>2~RaV4}ngP2NesGAiD_eOsW- z<*T@Gen|__}Dmp@PqH;+V!i*WYQSVqy=)P(}8YpfOfr( z^2rghyW1!o?xRyH!HYh8>4>dP*a;s$f16JEZ91*PWs*l;Cqc^(f{d9xKeo5G1+;(hFa8jn9`MF% z*Oe?$m*qN*jg5;&QRX@uVR?-5wHRHM=oX9E+}sq0y?gI5=I17*!``@YL-_(g?%jL%qd)p1xLi(g z_Zv5^VFKr@$R?*cX9gFXW30YA>Mu^SrUYiB7yI{M&$*rsr^oU;WkpSkefcBmT(+wYevO zX3J4jR7eY+ZysQEc}Com^ocxwVqy~EaO4zd_O;lrW77+QmPH9tf_wMZPXS9+hJfX| z+j=+OGvC**3mPv5hHnDp+3T>^>cxA(;8tlijDl2epj0ZOSSVq0a|<7R^b6d%dk2>; zUc_5(e;4P@ttru(n8+Bw4*T%9oT!)bDCbV_?BPQ^y?+m-<0Ax|KqTOU&*MZQ8in8I zh1cW3a4>}9_Ah^C;K_`gG7Y1SMLpZnXGT{>*}a1U?CkC-^L_t=572D(u(~{p-}&Kt zIDhV(jyNuu^tEtU5yw^peqGe#*WJ!vtt7n|LC;3GvucCApfBE(7r|=-@@y3Ul}vv` z=KpG-9RXHCA@qK^@faC-j1#o{Oj>a7-aQ?WCJvA7B>)T{0HV^ach zSn^j=0s@x6Ctw%mrxanSYZ9Q)h zeLl%%bqY`=;rnEDi<|j(e&@%ya^(u9rY41tv2+UlfFHx*0935%r5q}S9G*USfO}tk zf$Z)c{3F16T@Fl6WDq9L_xlY-?|l06Q_X-}#0D&rt^UANwy3df?d;&`v*$`8e);KF zdT;N%^%{Qo&iAk|Kd)qq#~K04g|lzoi;M8$5&vy~eNhK}@#nb+FG??`8ZRL5oTUXX zUXPvZ{5rt?W?9Dq977#@Hof5Y^Ja402v!@gySuyilRx`rzQ}OMi35#CI30@e)hg~%1yZNtUp`4(S3A#eJyya)yDSD zE*?C3q&oS-N6!$6`0+bG`WtxtrI#^1HFa8Uv`evP_0|`U92?BMXmXR^#9_sA&(!km z(yo2YcDdL7p0oUvekB^U~tnBR_;`P^G zQDj_QT|;^-gJ?8%>b2nY@S3?ccJ<7Tur^?A4ofMKuR|S{3GZ3J+FpYHf0PG`tb7go ze)75qR`T?2w}(o(ruUi6p5WQ@b$s!~XV~4_#q#nTzWdgjSXh`pr7V7b0Ff|D^+8so zF&y;JY!p!|7mz84*O=6m-M?8jjG$vZ$xcB)7mMs~$+%EAk zYKy!W?jRm(c#NI}u?<)rU;H2dUi{j(9fQA#?uRmb$JDSlj%< zD9HEyZ9Mku334`Y*k8Ac7zC+J1*l%|{k5BI)G9Tc93SK9({OVBP;>SYaqbRQloF91i#`!8#&VWGxojW`tyF-rW~Fe z%~~DhTnU@co?-pT17vfDh$q5$`Q@v)cKs5fv9R1&3}Q6D_`CtQU8FreIN(CJ-$i%O zM72^xvrP5*-Y?F&gK!$L;Oilc2eq^$88-RmB zUqy+tN4^29;e^a(xIh9c4HBIW`n@i!Aq6)A#fg5mM;n#+wjJTf#d%Wj-<5>8J=#nJ z1PQ;#>pkU)6tG!I`TEb9zdHc8n+`K0^Zm*Pzs4^)he}p$1B(Hyg;ukPTCJ*Nsnc#@ zcV}1f*3+j?(Cu^-VW|`>E-foz;s=2&3Nw1&Ja+k>S(mSrE7;!I!TaxjfID{{V`gRy z?|koVT)1!!6H^(aleFrE5DJBLE!~cZu*^lwpR)x{^A)}Yt^J6r8UxPPB0cj_-XD|C zkQNv^Kng&bQZJXW^XwU(tv^COpTqn@1~*>1gt^&Cq|%f)O+FI}h7b-#;dXlgi{>7l zdNfpZ;q(I4N(uFH1+`)sCwu!i+}T5?(SYCM6&+xKB@v4$L3cd(@Xstp2#ew@s|qf@ z5vLqTH44F8tZE$(A3w$yUw(}FLgEYuvy%qCxy~qhk`MQL zX5r3e!QEa5?OtcJ82oo?nx<-`Xi06e(~)M^Zq!k)RnTrU#C_Z@C%i5q8{Q=q? znlHLK9SB$l0qb@l6pkPm3L_e)dJ%!w?^BfZ`uwA6iv_pGPzSC9lc=F(%sJ%qUaueh zz6F=l3!gs>Yv@9|-GeoB!tL{--mbwP^a*TqUa@G$~Cl@-)%k{g@~`g&y`9Qoh~K2f$W2nulDy3u)Xm_R={K|fQ7|rtgS9!Vj_uf$cIqS zhe$Xq&g%2}5%2}!@%XqTr_MAM9R^lcL8#qmp<;`n$-$A z%?7ODK(%=Jyv7rOK4&7c|G#hOJw%zHW*B^qFc_r1nFT(-6 zL9b3!E*-(DXxbmBWXk*1;%l^c+IDr?9vvOy@Zd-WZD#n_FU(_hDv7n#dCbmc5Ds~z zpN2yLL=^3v+C)B2K*7kiQ8GY+bux=|uZvEri&njbW~G5fwSjiMjee((NH7dP0Urn| zL3cd-*&isv3hl$bqUX>7G)SoHO%zHsoMiL3d+#A`-oAw=&rXm`Iq<{xzK_cn&SR4P z&JhPQe9}lsEH+TTB?sg2#OP-LYa*!G&E{hJL$iC$?k9(H>*Dx_$7ze^=t>!lYDHEw zYuFcHMHyPHGf9F$^2Sfw>uFKQ2^HE|X<}R_FYR;p6R_l-Zha5IBAzuIpi!&qrZ;Of z40zNI2gcOPYaaGay$h;pVZ@UM{5PW|+Z>j5HXhy4cwAX^Boan68iwERMKBbA-|v$l z+2*u-Egpr@D9zR}3`hrBj65#*c*OaRnLr{LMlu=3_*fD#8uuB%`jjqR za9GaM{Dteobs+8rv;$DW>kiOw_t9v}KmMOB3g4E4 zyKJD(s&F-0+L`4_6Wcrcc<_+2#a*1_fu&_X-gx6RtSl~IGMz>=6hbf<(giW1GBU74 z$K6di<}6^1LD^`Hga!>}gI*s!awn=pPPafy{ze|#;^H-U%$7&|wQqdWGNBLQ3wYpk zI}8Vvf59Xg;%uYJ69LQL$;i#`;qk(wmpxVFkUW~nA^F+s^O%a?C{dxbH#56{Kp=v0 zxdEqx;&%%5dRxVm`;Q)AYiA30@7zH?S4K)VEUofmFyM#R!_&e6zt?#ZG+>KT~xajPlU4sVS+{ z;>-k=C!+%F^mGR4bR5Y<1gTV9lz_%`(g6cl?$e?251y<%(@EKeERPR~fdK}c0ebB| zdd)8S?Sa7V7&_ol5Mz{f!tvD~{>f~{K$92 z_3<&<34$QATH$9hs~VY(4V&URzO@$_=5zXiMpfo4rwQV0ULv>k>=E zaqj$i#9~n-5^;n=ekG7ZN3+$GhxsH|z~;^#?%scl=bI-e*Pt~EgaUH>_XllVC)Z50 zKl>;KV63|^NxRe6vT zu%vXb`uZJQAr%q&L-g7`1KL&}gLWSllU;{PAC$BtMSl6u{_C#+D>h@uw*f2-4NdIs z9^(1)ZQQ)Qj$#p5TMOXAr3(^u6FgE?19wXTVUfYE^6>A2zR5g|?apXm2l@jG-4TeHc(Ay@pQl>DcgKt8aie6|)swWuj!j!#;NsiaE~OAQQ5qG1 z89@U@(GGv5H%_?_z6fN7q|# zHTBvwWHT#nHX8z&&+8HY=Cu;AY=_~78&9XTJ_PLKE0f(Y4-w)TCjep^29I3IizK=4JFW}SnmunT2s})r1Ei~F)RO)Ti+dcFK zPV_AYDBAG%#v%blQbBMe-$^f5(7Or#=MSe(V& z94(VE1cHX<1pPsTgJHD+1^qm2T%f;eIG{AiB;4F{8?dARjI2zyh8;#&3qBV$Tb`(+ z4wWzd;2&BHw~VmlGCU6DA*eRh+EFgIu(x-Ft*t%Wy!jZ#60ovL;d@ol!te74uml1Z z(Ii{VQOBpz@RWg$vd^zewoU<-S4=<-2-<;#{t(JgTU{n<1bJ6clP_YVE)ssorSI`M z;SZ5IP~k9U8?!kmc*{nKP>A66ny5+g?{dNK^N%_sdIx7*!uVTvrPS7n<~i{Dhp3vJ$g=t|4E`VOdJB7$teF>9pajtlAiTw2xpgj9zB| zx66xWs}8r0^PZv*l><_=Rg+!vm+s3zwVbdWTx9d17(H+j)ads8Q7ANyip{sXK5exjZ~P zlFfAe!9Dcbq;)`M+<~=o%UE2T*E-lHsIg=kL4N>I1_M8Bf_+$nHU|BUHe|1BI12C8 zusg(nADw~ttJSj*@cKpj?fdWe^q>Bhma!Hx>KRFgQck_m7H7+4xx3gHS_G!+uX(hLMZy8PhXkfMcMDRjW0@oQ&GL+dZ18;PPnGFe>q;lYa2Jc+Aet&!E|= zNF`8oh9xsL`7M((-aztcX3U$L+qnPW5gLsa#?l!n4r~h{@0MxB#YD`fC{2z=ionm+ zYDF#0?BOCUXf*5kU2<3XL+EuaG-|Zyb>a8(=wx!j>R(^)AsPuuU62zl64i|(f8~ZE z@2|JJh_ThiA3(Rqb`=j2sTBOd5PCxk!AK05JB;Q* znES%uMT*Ewo&vv7aR_4dnN@0vxV1_N_rClb4<9^5yJu*^#H1USuUy9J%8DF(@kmU7 zjYUI^5*p(lU7}`R@>p&;IE@kgO%5 zZ4I@Pc(L_*3)M;!g?tr-Vint4d)VIIQS@Xsn@Z8n#>$Mb2THqBR5Ybl6U|uZGL}0N zS=NUA89NX){VYRJLSt$P+0=RLz~a< zY4;T+iKJX-s!?0jvz{LJrI;xi6=}b9DprmD*yl>07*naR7E%z z7cgBOKN_75Qj?Pi$K%MCO0am!ghHrQt4IdJzXI4(vk~E^e1<0eid7>d?Z8VFbd zjR16e+`2IYKNHC38(X3X1O%fE0YR{`5W&}C**cXb90iz=S&g+VXBU(4! zZ2nw05=OOBhtuH^@6YE>P^pyQ_q&lw(wXE!x6>3@qvFO*C7!ISGdjm(F{H=FkS!J9 z@ljZ(sU!fmhoxsfTpk}BZZG_yFyiSn+FXB^6JwK;aJb#5H5;lRxdsqmO-?o9iK8kX z>0y(l*^xx3Zj_OIlJBF_YNOxoU~g|1PoF=+j z;_;&UBZm}kDuV#21^>{r!t0}F*!HI~+7EbCbDb+yB~^SMJ|A_|Hu}A`q@QFgs&;TP zHqtHjK=BAAMPiY`?dNGhA2K^VVk&e{L+83WM}VDOS`uIxSzR9unp>@23;n^jE>zd^2Gw4K7Wo|cW&de&%Z#c#goyE zciwsnYb#4wU7AB8>WAMmKqSaYm>XUWBB?YmiREK`XX8D(O1@ zNkw*#i}TKG-O5&4jUk3#=KE)4wdbyx>ZAz-pkan1hiINLRWnimZUBOqpAAhKivI8q z%eVv_HbLdV16&Z#t6-w*=`%d3_;6`n(wjG zYRI8_b?XW1kU~uobbRze7F?Qw6kh5R0ZGb_#d<0xJ{cVx@{Z zckkh|FTTXX2agnlrY913^~PmfSer*C6+|@T5@4gj031DF&>0%@OQnHMvkTXd)FFs~ zhrBl|NsF6W*Z8mg*S}{4*q!L1al5A-PVKW^YoJkYA)hOvQlV3-shh^=MqpF4XVs|L z>77nFRKqzv4}u# z0yibs;QC9ipj2z%`Q{D=aAWQKWklm?c>O`l%rBzdx8SfVNh24R(ML%GSkNKQXOYGj zlg|EeGP&-vtV*C(&}J`Ny`d<3`_4Ul^2sl8bd*ED!(l7qxPECBt4k9YOYz#hh>}Wm zDQ!B?Yj@G8HuW*=4B>_wUY8fqP(*-b(y7AGPyX>gG?c*2QJVB$HqoT{m{VS=9B!5q za2XAFlUTuF?Y~dyg(W_JNJj5=%Xl|Q8DyT2m$M6>&uO2_F4 zPII)AmhemQNKl)IixZ%uiV+s3wT7H88VQ*4C;bP!K30_2p3Z)LMt4RpUJp$+jOvyp z?#yusU6Z8hMktvWP%`q!7a=3M%Z*OABX0yFD8Zn}-0MgdqY3+i4}LC1qDOPjU;vMs z+?Kx4o_>CBzl2!KCqt1M?>uG{CTUM9ky5gxsO|G8Qd663F;BoyU=2vq1$y0%R06gm zQGO@**`#Onn{YFDP)F}mjPEOnjK*lI3@PHxEi5Axjv-s9pl`XbvU&lN)3fMVPPl>* zINZKdbGy-7O@gD-it^z|@)R}DoGXX%PSc)PZz>wmAk*pd#A>2ktzl<(SKTQeee@xE zU1;FS^~=+E>B&;#5Kw+au$j}m)UD}VA& z{s)UUoNu_>YM|Aup;@n@TFj$bE~C|Kh(DYj^`lk^MpuF(n=hJ(C|QfcAKE&48Fd(4 z$rqUj=&jO4L~f~3l1%|gV;W`QGhts!g|QBqN{h!Kt&)*F5;8nbnjCMsHAFfQ(;_nS z=P}46kft4uz+}QiJ(5QiB_MvL*j}v}--5?yYUM-^H=j7Cm&ZJf(4kR{pPQA&9ZO$J zkBr;QqZQN|-YV2VT2z4oh<>%uU55M+Tz_`3;=3YnJM0 z7HjC#T4+_9;!VJ(LB2w706nrJnMfgDMGFH)Nn-=Z zOd>NhV9X?H(Br?E(qPE%lg3G~awFsmCDfa={Q2MyhV}o9GL>pa(bR4pAO#|~H9c%5 z`(<>oxhRt|yPd{ZBZmU8^k5~W4K&*=jL%Hr;9wtx<6|_dX0Jtjti-v{Xbs?G>6zj? z-xm*MuTz#rYOSOMtkrW&CD)Fdo}i%9i=Cp8P(XfK{+%0@bchlcBQa08F8?hal>wR` z81!`l^0Xv)jecn)Ltck35P~-lRHyF5)C{7j30VFZ+5?9SHt|GK(_45#khbuIuzR@} zfcUz+KfE72A(-59R1*P9zc96X4%29~8psv0*xuX5mtTH?&p-bRy*3aH0xw^l!|K8q z7G~mzL<0!Kk}}DA`aq}BM6*~$yKFqM&3a40j)3*}0&ugU`hWkA|HvW_Gqnp(- zS`CWARk{4RV6y)SuskNr@H6sME`(YX2v}Owlw6ozA{sgvT?q4TVJ|7dHT1K5 zJ!2&_l`Fe=!J~~fMS|JqbsE9gK@fQ0kt55@reQ+D77EHrTwEHBne{V@vuf7h2*{o} zrW!4y?aC)R>UJR|<5A242ze%@CUQl!(u@FW_cZZ65v;s{l)IQ%aq@I97SaC~b6J%0 zJyj8-J|N)Z_0SM+-a9{g13q{;en(SAdn2i;jd(OJ5K?Q+WlLywpdBU_kpy-c3bti5iOpMyuO|>Jat+ql=9d++{2^C5An-S zKEcs`K_%RaD`A{ln!w6J8i`~C;l!Al68&(aS8JhNuA@<^p;oM*UTr83p*%;>iW2;v z|J^?@9MA; zo&ig~P6Ibx``n~-lu=9M(HA1v-ELLN7)5!qFd8vyr%Q?@&Mr4LEOa=#Y_xePZSh`k zgVIh}tMrjh2jnD^1B{>>4vpv5B3Q?y*D_IyM#2JYy;4S>K36|mR6-i($!q6{Myn*( z%FiML$IHi3m{?fF%K1z3&9WSS?)+u=gArtN1xc2?zp8R6Xs~q8cwyS9cyBBx?Sa(C zDaj3_$`G*SY7vLWhoS|afA%RJ-g~Bmk(Kmw%NeXKW#sN69SH@(2zmS%HoIsu!7o+S z+*mDFbvlXCc)Z4T`oI69ziV-!xLe6x`G&hK*5plDkWrJzz(Co5O9=>pYj+2bm&(uB zXW5iS4yP82l^;eaE)qW~BQTX~b?soU&u}FI;_K>|DdSRBFqTxluF2dLff-c=9AjcJ zN4Q^+m7G|OldPEWXWZ<;3QC8h%bpoCk1kfT2pk@NyrHRh6s3}xUB#o`o}Oa2m$L*( zaN4pR)dJSh1^j3Pm1;#EHzt8hFj@OHeAFo^ieM(lyPPHEGhB>E8%v{{Xi_g1(Wq7A z`K1Fbp5TlEGX$FQVzE#-U4MR!n~GW}H#&W{ta%WqhZ;xAFO>Ut-V&l3`$NDTedQlbD*yAU-ysf=9#`0N8a< zsiRt`ph$J9RFPaMDUw|%jIjUH-}{d(nwGh1*s{@X)?bc`{G_><$^mbj>6;qm zMHaoNM*lS53sC_Yqa`&_8}0Swe9v*nZK*79@u=Yr=i<}Vqjqn#5!*YN5!L3j1`O(i z;PEi(wdVp-CnYEk508<{cj5H`kyub~kUY8B8OSm34|#OlMPmuX5(y<}#;ns4^-08| zx(s4T$;=vK_RR7lHB4K#goJwnlBW$RB)KPfCT)iFu{K-Oat(_L zMZ=1U9t;p2t(O^KT+#0{Lovc;x^=6i>!P8CKxMar(Q&(oL_#`=Xh34}MZhu{<^7X? zcsNv(BS-%5{ct`4=Ol3BPR-6Cm6=2$mBHf58sg~;h7K=$LHZCvsMgyEgd%dJalJ+N zn2k88B2e-oHzv>R!R<5!2yVPqyMao*f_yQDgQG*4&OdzreKc!BaLHB|Ls(m$#QfYe z(i78WE<+#;M}LTRwIMoC$mUTlmQPFk4DF&e|IL5$w@t@^HPph2yqmEc2DpR1zD}Q~ zZsG_q#@)oTnr7Z3^sPN$s6Aj8%P z4Z$!|0qF%$&l&l1pY*^Chp?rwgM+LpGLqapUb&DM!O7L=Rw7VI4fuQEq-qfan-Y0c z(=1ItFOvz<0JdcFhRVD>NamyFX*c-!0`#%6Z>f)<--Bc< z0-whv>cR<-`6BhoAzWT2a2|wMdUly|FE_cy#rJ50uc{2by1J@JNo9$k<@Inq7>%pd zE{b&^y{Y)*islg%D~CcysvfAyuQXM#FAba!fpGYTs;Y;LTOL3=P1AB04II z2IVH=&#H1UGTof5f}O2t+r!9gpvb8;0<6S&xp-)YV};9$P$ViTtI_JH+m}yy;s4Vh z!f8(ALj)`%A!)~;+s5(nA&!rWvNBT3CZ#b25K;uUX$v25ZQF)t8_KPIAK_>ey@7=m z*C4KP3@HR&};^jTUK=9m5|<4jLo1fZtC}#!gXIr&P*h z1%yu(VYg+CWlEz5l01haF~q2$x;R(W6dLTI8-|}6k19cFs!HZ)rWkHl)Tj<9(UUL1 zZeez)TfykAMsi^i#;*~~iPV_5B&&IhV6^n{JvJJY(rC5;0s#Y1dx8yrpP3Wj5G9bW zK!%qgN`<^ip)8;B)ZE07h*yE*Rk$`1{C`zm+Ku85BPf%2s&>sz>+Ng|X0gwiqsoTp(YxuIF z*=S-6%cQKtXk$@lJatI1Q=yLzt&1a@;!wT;uTBB-+F&Sxcq*;A1OyLDt&FD1^6d#T zXC`0U(VZLBes+Ut1FD)0u=u-#IV=F>hdC{CMK|dcqDC@ zx^W;F#=-H4Jh!AE3-fc>c=i;NnK2}}nWd0esFsT|!O&wsMc~TiOX`aKfB)d0qce0O z95Yj6IN^}NWNl?dug3}@0nCy%6`*#riFhm`?o7%ex<~M~=|vu*)f=K*YpaAiJ-37< z%3gB|2(d4VvKey}M(}t{YgVe1q<72cZaK}IG!{hqq=9)+f^4CvPK~d=yo>G4BbDjr zr-Ha~?L5x2>w0QhBS$GIvV~uuZM2X*JjBuN9;(F>To$o4qM85M4^}ngR8fs>lpOza zTI)CZt9oiE95X{7B|{SLEud7bjv}w&uZ#@zSu*0%e#Y5c1S_>V-XLc6{5fWPwDvXI zwNdHMjLo5|$?hrQ*~%#>1ON*V1Suc6#GOrJ4W9*-h?;0_%rvH`!OzAC2E>zNNR4MS zhk)SaztMwBMSWv!`WA_gBF+Dqta|48$%(W=V{;q`Kx$_m zwWu4@PE)^&f9B`sO}jY_p7c(5O#>hS%!140R7Q!~{y{+-aeUlN>Z7-!R4gd*3J3fc z^x6X4#q+DuRJXP^uzz$6UpR?mI)nY4T}4y2fPeSRH&DnPBX@EnwP9&tR?(+i%qzmC zQ%Ma7zHspho^0&kqmMsTVmmcGqw8ajSu&Nv+Ulx09(Zp8v|J8)8b-oCG2TzMoF5z? zVq$7i_h)baP|c^~nJHu@XLK6o%T+vh`~;KJb67cl0nJVaSFT^j%dfpA)3&DTkYchW zTRvd6HMNi{93z|0;W(Gqc-EUYAK>`7rm2K$E7N%O<*Nd0YJ3dIbQ+;>NEDPa99p#+ zat8+j>(=@@T!SG}k*MLhzxVw`i_y;3yKMeP`N_0gnAT;M2IWnaHcB9~q}WHXTGJxY zNhAR~%vNX)P@vS+Q~R#nec*C=Pg}T+&CiA2uno&$#thlxa_pWWCQ>Z7azhZbYRk}o zI*QyX9w8oeA`wp@L|48Ntuh>L4`ycPF+DpsdX82DM<-bvpX3ae)x0hGQCZz%2djDF zpwV1SPZ(RKWgQ&p$pk5ZY@|9fVVhO7^XC^&lS?L59C8+qCE@c06rmZ_)PU!6!{>2e zZfYEh^Hb<|o7maihbNT8#?~HU(I^`AnyA3zhZ|U0%wTeSOvgGSHNhaiN2e{n!SwVL zre|g`Gq;FeeEccCx^)}zL<*ehO&z+~VjVu9B#tKtJqV$IPxK;pax6MSN)`x*WUZ8O ze=yWD3bH3TOiWJW%C+lAq{h`3e*f_kJm20$u2dFq|Gody@l*=&WI~lWo)A(QYE_hu zPf$8K#mZLq{%l-sfLk|JdaU9#|RC)U8C_) zf2}oJN;)`Si)|YkmqVG1*?Zs2*=H7S4NXPF_Q7gkhTDO@#e|5PqbJac50S)=p0U6& zJ=AOo#N*==O)eo=Nq5J`gP5C{Q)DKPxxv^$8VpAePo@wIM{#tV#m4pywziKI0n?cz zBGH(l5DNyWco@w(pFhU#2kOYsQ%=;j9f^!OaR-ufni5~14TdA5wo0df!_D8x zh*=kRwr6YE&sm_JYCm!*n>D;S76)c#r^MUXxypz@E=A3CZedYiW#NEMvb*>1qf#?N z8zv^lF+MRVP_uPe(Y0QZ1l6I_-Q!SKfc?Ax$tVuCahn;fOpe;^p`*>W4r0p*jhE&IeULT30v0+PMqj>&!pIxmg8c zhltyapx>*`1&aF7WI~OXde z5=9`8X@_%Af@-Pwz_J0qP9CbKFY>|(ye!8(vi}M?`ZH4;nwB&Jmn$`y%gK|Yu{e@r z<7#5u-aEk7?jDLYmM5uC`b}%L++t0Hq7h6_jHB16=xNgAsU-gPleX=Ly4jO#48I0C zeR>5T{>L{N3i~BTamE5UJiCR4JWZf+`malEh^5WK$`5{PHR; zUcQE#_a1_Np7E(!!yRk> zdX##rEnpFHe1nXz2WToD*O3xn1&1;Zt5u`U0lKQp6TvBR zw-seoDPq4At&8HS9W?1eVg%Ww6l0YqYPB*wBwcXAS2eqWLgpy6HJcfVF{bzypT6D#kj$k(Nibg+uqYt&lyb# zkcF8^cpU>2i+S96uz|Uy86;9kY0Jk4yUOkx7Y34@is zWNJ)&op#ED<1C(UZi}mP1M{&;W`J8u$ri`3vlLC5K^pV;(K;$joIOrVPG(fzJeLE+95BhMD;puqCiu%*sz)E)}u8yNBa!3AgS) z!S>z>O4R}4@vw#nlEbD`5oyk(O;mu`T5lvw&M9asIc!!qs%=52!%=5+&uq5gf+6h?lSn?>3->Y&Tzb{UwJ_iM}XP+RI7tItT z7{O%l<^*lKYC#$@u#hVjHS&jApXGK+CSucLt-vyHKkUsPAlpG7s=RGiaW2f)>`W_MqnpDP&Pk|C&tEJ7s zAroVX2(GNoVEyp}3|(IQ;?s3pxi+griP|kkveO_0hZ{%7d9CwnuUv=UJ;cf0Gq@Zq zy0E>79*Q`|C#LwcW*nX5r1kbWiYU&6#z;oxViDtGDX9#!DpD^G`@`7W*udVwu3Bso zskl75Z0DyULkZjC@nd3g22M3BdPJYP-676jy^4vIMR)=p^g9hyDtXbYa;1#T?LF-5 zXL0+%GaO~xk{A~jX7R>%Uc<`DA~Itf92ZB}A35z}roJv;2?w%p9&oLSdbxyBE{p8J zE-J+$9RKNCh7vH0F|rY?@~SEUVg?=`IojRgDkSTo12i04bo8?)-mip}y@aA#wXP=>^kx8b{0-bgp%M0`R9F6)-}_YmO|TL#OpmiJk-6U%ZsNaPsB(tf?}bFgTp;V zdN2JCX+9d>D>oMB(snv#f@5Z4MxC(i)9UvuoV#)bndNy{E^72N-nUVsON$R6Tz`f~ zPq(nKQ&r#yNBp>c<7HgBd;v2vlLD;D&|Z6O7To5#cT=g8H>h7ky}1>L+ap5v5-%rInju0}NHitmkJqGix-gJE)ITMbL4 znvQ=)McYqc`yL2b7Y9N2x|o}t)kfscG0UbefHYx$KZ|gXCUNs{ic+yCPO1m3@fc1; zarMdtJbt<^F8AeEH|05{JjG5}mNNNTyorYgduX?+SXr9G{OlwKlFiBj6zNesnMQit zB$eck9P+`0*fyr;nN&4u@)htSGd3>4p9UiuTSx^s%!BF;^=bQQtb7!-M}oVv~@C7$f*S3SIc2eoP!)6*pEl&<3N1;QxS8+i2eId%`~Ap7=l$Qz$e zFkpjRT@jHDiyS0JLr6^Sr3s8@GBQ{5@tULp{KJ#L?l55FwFhI+-%H@x<{Qd5lbJMj zw{`_;R>h_!CsC``B!V+alhf8}U5ur<@x2;^q1Kfl=MMNp3+84f(CIRX?WuY2{SUsv z%Id5VRX%Nnz@MF*5QW*?cp{76>e`YLM7P7Gir;ZIE7@>%ZUIv>v*Pw!+dHG@H2Cx^ zF9sPt{EaFPrLM`$1Y!|0#*;G+IQNV4S*OR&>6SW<2_z2Y;I+i!DKJh|%5{W75k!+I zj4jN-7YZO8@}pWUVQ-IPolfv8F%PcacojEZdRas9!jS+{Ni&x%7K-Zx z*3?W@Pfev$dThNuq67x8rF;&Kf9KkmWoB=ZPYw-WNs8D+=yV~-$in_7-f1=ebx)1j ztbox$&(FM>r^Oy#Q-WGu&k|laL4VvFfZA=^+|s9xdzA`v(Uol)9Q1l~NxQW5DY2oQQfPKCTvz^{s6@c)AacGv#z@f_%saXSh8m)v8($ z@=ZR{yx(pj;`3<;26e#6nQ1(D@IV0)DF)qM z3-gnTuuBVzI5;>kW{}}fk&Z4lf|!43j!I~DfXUezT)p-ZR@csH9A_*RLM#>*U_*h3=D!jbcHYD_5+$hDQ7aWu z%o4D>G8#Gl_T_}dql|J40ZRd&S-cVpy68F9lH(}p&@x?Zxch;ZapwNTGhjsYqKc&`Uoa)U^OOjbA=t0Quf#2ys zLVf;Wq^BkYSUy9G<`ME(`w^Oqt~|!=iHxK+_LCmvMq`6!t0DU!wOc;;ZFzA?-%svu zOJno}FtQTN;=&GkNIB-xDbal@lh%70AB*GgXkQfP(=YE}dUiph)I&ZmI`xV;@51~H zdV`)SPNEqBKhnvR)EaJ#Y>w`+psHZwnQ2NqofkKLSDl@4iAo1+2cF}4tM5f4w>sY9q@+((ou;A8l9ePZeeHtM7?R$ zy_eQ5V0q;nQfc;a#Y72MNn~K7Em1SsMyC!piAv!dHNd2+Qb8$ug5%vCl=68v{;i8K z0apD{YTl!CW1=Dl#IVfD2Er;p;{!}jWiT^8hj!mQ z2e?zOVq$z8>9Mo|4MEG(i|ySUn9L2v&B*+KiUBtu!ArpI?d_vkZ;CF^E=X@htzMBs z&$Q_~addpF2jK1RAIi_mC(>}-CgnCKu|eN$z^?)V6`8}6EIz;a7=6lBHX6lWM(&Xe@@? zckdw1geMq6t=Y!m(TOr*mWSD(7>*~Ao|plL**$pt6wfve5RG`m7ahGOUb=h%nM4Fn zHn!1lgz<}8_mQo0*ctooeQ2;B$!+AdR+rtS4t61n`*C(aA{@XBpMFE_I2A`r65YT& z31)8(?KX!E8$T>%E=}rV(;=S(GxFt9ujP7p*}U0oU}|DgV6Rpx(sJcDD3vw%g8Z12 ziN`V5luwRiVyEunU>LDT5LUM)cNQOLK_hsj-o>N!=h^^sQ&R|eoNBvoG-?>1oWShz zihi$a&_njj;Kp z(u$2|AgDot9*=pnDw942H8VcIOok+V<4H$ZFMo0(9(%mMi=E9)IDWk1KLsqyr%a6O z$%AUI=I{l#Q*~&%u;}`sHsWS1vE{$p;eJSLbKp9Q07GxA837z^x}+ zsB_#X=d=2Kn!C!mOsqbsPmF}XVS15xtfnFnOeErZG!I4Z6SipUnYyg5nFP)7sHUn* zOtNfmtnK8YYo8m}sW}Qgx$PM-)PBuK8VKm=H_~-SugzqPYfA8HG-#_W9{{7t`Q>R? z{gxhRvAnX1?Y$#C>4p7JGaM~H>>)Fj6d>!(2Ht%4T{9}l3E2Ta~8}dk= ze0;1YBP)}z&CM;*zJ(>0MaLAF4i4xvJCH8S0Ho8K4gtF6 z%~SQ%-^7B!sGC(um*!iU0c{fg91eW=i;r;e%4Ho79B2Oc>87$zjRorT6mjCIF%(J_ zJl)vD-XV`4;MG@d;BbEz{~urP)#O;7ruRJn5*|n-kVx+;E6bbiuJ&fOXLgp$RtC?}}ta zRAku%aL#+)|7#vIJu#-q;;1SNk>eTt{Of00J1YC4@nlk>Aefeh0s~1B@?sY(0pcDJ z4X2aJGtvURluGFO^=sPP+HkE$F!F;NLPjNsIYK#BU9(y;G=M^S%*CmKRC_q&;ABd` z4@Os*`3`WiOj^jO=&4f6l8J2`*F?4&YD~iVQ=qvLv9L2Vo2`?RGd+6r#8a1Pm;$Xv zV9OK=sZ^`#=Jo4-0HNknX3)gV&(HZG`}W&!ovjQ^!s2N-r|lj3gdI)K&Kin{h5+~r zB!vovyi1r^Y{*|XH#R(#p~mL3fTjvC6=yz;f`_J)l-KOcls48@_3qpE zy!wUnQ|*NH=U+ZjsU0vO7@hH+0FHC>7{j4};u;*zKl)XDRxc+62sG+XI8tOK0x1w< z4uH`7o*P3$6$se1`U=~@){aa>X%x&c>uyr`HDv(}E7z5aPBvzaYV~TIT_6(TSCCBU z^sMY)X*J3kE99gedbcs%y?fWS;@-}lwl=rDNu#zL9UJw}=PzGs6e>+Nt?O5p^vzda zd4n}r1JBORYHe-JqeIHQ`GrdcYO}TlOavAK1_**0AmZSP(UVwA4$XpeS{obd+TPqW zN{>Ic)=<3qSbb!r4e>c%FO8y#0XO@QJ)2?H2NCleop`ud)5lmH6% zrv$;Y$aG};#MPYyfI^-fpJ;PsMJvlM75a2O=H-ZryHT!__!e^ltB%2Oc24oUrZ~Mm0MrQQ`nc(Gg2(Ysa-{b%s6sT?U8XR$^ zy(E);g_e-f@&k?-ONxWNQ|0p+wL3T+R&{x4GH_S9XlSBX@I+>QcFtWiURy6-9_ZGc zghQ6dD_!RB-|*;fY?Yu35bh zV`j>d8#iz1H^2FfR##pbXUqHM;e%lU2>tM2-(x1GMf^FQU?i!NqZ8|2v8XV~Kb}-> za!Ql)mjlYUBG&M-JU{b#gzX~1%$=V$Q zK2_+G***ih4^ROL2%XxE7msUL^^IL;?3t;!-nes9 zJ3CvxSW}a;25=(-^xg9ny*#RUIGyB}xsdY1anCI?8N@sQFlPvr`hnH0MJ#ASR*`UtG7@1w1S`Kr}^TlM^lt&a5YT zp>8Cu_65GJS*5cD%hNx3@aC}=1fXAx(`HtmrpV$eOM~W+f;KnPG!-0Lw(;ado^3lyMK73ITQ?*vj#10*;JJc@Wr- z2Fla?JvHq>h2`kv$j7DSfDpQfM!lxydm&#$!@>rQiNPRXEy>yGxa)=h2&!sj{ZKQr z!~U$Nhr7BoHExA!T(C2_g2!CH{roFU%}m)_?A42B`t;*>UDqrAU;d?6rr25mLIHQc3YwXi6~;&Db>2tP-a-E!npF2)4Fu^rqYI6!e)UgANcroZ4JvTtFIUQUkX?j zGn51e2WHN0Q^PL5Qt0EUfb58DI-^s{0_p-=DR$(BE8MSRhf`74O=F`)AG6ejj6YD0 z;U@6^yxHpOijrYiL~QMBy99s>w6(WuC?RWD^Ye!iHav^P)0TqV-r3jlmpgv?7G_d< z^Y&GB+cnda2iG0^#*=R6b zpxGpN8OAdvbCw&5YGZxSz8EguCHieZq@=B0nVfDl8Ac*V}bI32>}wJ(CWceu&5cE zm@@VP&4#Bhmo+mp>-P$HX@7rD-+cX*78fsR@zR37C&6jh8r)vAsU z_O-LMtb@*a*|7DK7FXE zaj>DoI;}KyR_|(M?^F+8?wHFkl9rKI9Q}0DxUl4`1(5Tf=a8t3qm|za$dV&DH-RiK zZ0y=sv7u89#!Yn#%R#%rmUDY|*ID+6PQTgG?%ttp-M$_$it#k7RCMXmC6@#Y^T&!s zcezXrsEr4{2bgn^SqX4zUMMbuK|c?~{=tC*&q5gKq>c`bG&eitBmL&B+YbH*4<7h+ zz_ebvv|#iXlo~!Kki7HL6OX^x%12}Io|grE z&jH^+clszJ$bvT|Gjqe<)KG(tjihz7x2fr|;2}AwHg#0(=-I}BmNxX$!fn!p5s zYfRv9G^1jONgJ3|XT8Nm{pwf0(#FP-F%!3M-|%z*av@V3WRXsf4ooW_@4GMl@|U0K z_U)@4ZRPR>mqK*zxx$!QUCM=~HEsz|SOCBbw>H-eCj}OI_s$)2)OL4vt;kMbCG7!* zwix%V>Lhf4C`dA?x88qGbBmXiM{i)HV9FIsAy~LHc~*)6(dT7TaH1Ou(3gW6Ok@V; zAB-3W%bU=L#aNFU!10WPy4fpzUlB?HvTHFW{eQG{C2jV=%-o#ku$5X<`O!c*W_NGfB?L<#l2!Q}J&C$k=48di zON*MC~~dXw-d zAFU!jz!%m%A)`iFtQ$$;%>HBJBkAOJ~3K~(+W3`@Y`N7`x!PR(xChUKD$v-*WT`}T53+1PrQv~OxQ;yL+Qx>KS6&&iM}af* z_q>+i=fR*3{(^g?r}J`0Q~8*t#)}Sq;DS@*?d@*6 zyMOxliLcet(iJ;&6KL?TP}4a)I@Qt1sdo1ElpY>72YT( zwnqF%k9j&>%SV!-LEYPCGR>AG83b$#ebJxEWAg)y_pIOo-k;$nOj_J4ezw`T?8Ov*8l4(VS@2ie{k$IvyJAgf7-Dgf^`v2PF?ff|K@A!BcLwM-_cBR zTm`mB4XX?isGze5U;>+yfxqW-QR~vcQBu%Y3^MWl{;?Jp=N!;X7+$`7;RcKe0NXL_ zkpQI(>O9bEZ@zI`moG2sKmEu5;A~v4)phg6b+{b)*9RYb;MV|9%{B_0?9E%Z z^soQTzxA4yZQI}b$)|pZ1CAc%%DA#)TUzopW7EYC%bV8fiVnpzJvD9TMdJuiX0_m6 z!yuS79_;h7<`x$nus{39e`eY_0ZSQZQDWxLiNtGprGX;kATXUt`@UR*Web1jKl^wr z)+5VYgobQSju9C{W^e@D^pQ+Llf}Ht0wx86+LRArn|d6rt=-x*5F}$G+*DwX)NVRc zf`%fa(oNRE+J=Yx`*-9{YI7#v+;?A2ZR9Y(WD;wt=QY)52%KDk;!%4X_So^tuXQLNH|LU2u{5j*6k6 zTp-g9l)bxshVI_}o*q7WWaB-U#XNkR3Ir{+D8UMllJKoQA-9ArQAen-51ZF>)m(Xaj^cofA{CgW+Q%J$mHnC zK70N`SFT)j2|%&{Itr?bjQfB5tAFLwC^;1JWQ7tW5VnJfTyl4gq&{`+!T!PP2|+5E zRtptx%ttagWk>QBE1^+^2+2YQ5x!6~s^&%4f1fXoxdG#$VWY*VL{p8ul$SVt{0T8N z$g+IK!Nd8tGVBM1a1X)XZaAi9H>6q%oq%BPZTrZ0RAZwf8XL(Ptv~Q-8pv(pB4WHc z0jsVN^dni6<|3Zkxlt&L8Zx)BwPRK%>VmrmDEOsya9H(M&_q~1Wm8}W<`h!Lb#uF3 z)Qj_p*yVG?^PX5l z@O7Zc#j#F9WShX9)S_ONC1(|xUn1q>svdh(CXFdw(AW7^rTLmoOWFU z{<2=X(53lNWm8ezxU#6y@xF!B*4B3P>8Bq!qd}S3J2>=Qb#yrE$p9TY8>Yas6&)tP zEeQu};G)NS2U+#|C)c%;+poTpX&+(6owH&tsxS418%GQOR?7a$jr-=CZ~S+Nqm55a zI5;`xcXm#Uf4F=1rjL6{0UAPZwm=ODD6547jH%Tv6tcOstC5kcPEN`em{?ue($rMJ zrvN7gH7wVhtUDO*m=I~LgqBYY$|dHj>+2hOwYutGPtVNh(&D1)?|gn#bMy0lk4PkO z|HcY=RnLx%UPGlD+6qCtx4ZMYj^+KkL8>up`Wx}=Z);1Be{CqFW(%WCNTUV;BhpTPC!dJKf42iJ$pJ3!D48Zrm0 zYqn5CEi5cS>vyQ(x_!OR3!}9NT1G>-5e|X^2k=Ca)(lkFg?gQqwW=n^MiuT}nETF3 z5)UZ0IPAo+$=p9Uw$yy3(a}j2fKPxp56Tc}>C%iwGI3p7n%CCqOP3Y|^NpJ~-LX@s zb0Nv3$k(u;u~%0gE#;Xo0gL4lhH=;`^)>PXd!^sotPcp=WQ>6!@W2F*fc0nvD^8$w zC7^X(p9ZXtnK9Eq0!kksylB48&Oq^xYH4Z7f_G#L;C}=)69zm60H(nEuQ%JyvXrS8!NRgBZ)Vh369v&z#=v~1?KJ+AFL~q`^=Td+y&-J0! zUteE0od+uUWU*kZbGOH&2ZL%@#hgeXot(gyP58A5(g4pJ$WH~HKY?W_jo0MVgmC~* zpY14-mag8o;iUmu33uPRr{d(4<}Y7%SxBwR#K@|bj5PaAECD)@hZ>Xtc4_~?kI-9` zku+Tj2f^BnsMQU8T6v;+J*<4N1P1^U_NtTam3j)dzRYk!mCC77jJvuWO+cud7+3l1 z)F2etv$M1Fdi?mgPD@pDw2n@y0t(9hIg?8g?*0%qm*{piRm^EDpVrN*m$b97V$cPh zIyEk=QjS-US#-w$Ua(PT?aJSCLs_?4Vv>3B>wpa|Mqu_4V0G>H)%Q=e2SOiH8+g+O zH-r*_e*+xy%#!KgdwXtV9(?~mYwH`X5oxBlc`N`1YyyV-)UyN7H#I9$1mrp09f!k4 zPub#gbF*&>a-qdb*wnW?$)LpH{j%wy>nCdunjoeGfNpqj$awkD!1WN#F|HSO@SJY% zyz`D9@Q2?&FxGWqY|QmGbup&Xps$$hoS&cBN0ial zhQbJ)%_y5n=;@Qk9@0}-PfyS3cb|W)$WT(HazmARTb*vm1^PL|dHcLVj%%w~ttx?> z&(w%+-?*&W`KgW$_kF}MkcTPC1x9|zXrge;AY$q{0(Nk$5Ud2Q1Gc~4C%Y1`zt6Bt z+XBF_$0~gj<$?64XRJm%#jIu$9N{%r5M<-WPoC=Y&%ZDljm%~L+&)Eou+g$NK{o57 z*cj42v5^1;^}l-%kOui|%vcW(>zWu3q>UIM8uyORnHjtnuSt-D=|gaXQG3~UriPd~ zJ~B2RKlio^X?cRT?>-fbpki@t zu5X&bOw9~pt57WXA)?d)Hvs2rc5Ys8zxTdB+xqs7uHU+?(aA|=^94P5@xp6dHl3KL zWKvnPRS3)h?31i+@P8jL|F<&i8)@}uWE$O&vn#|uGAt#5F#Ph2?yi)+2>y?Je1P@VM(Xeo}V(ZQYR8p1D6zP z7!Y5rx_L_1E{*Hzr5O!{x>{dd(b(jq*u{hOoS&P~Fe~A1SDEyP5lwtAF6tm)@yi<2 zd3<;Wci+(CZv`w0yIyhx4vB&PLqJOpN&}?yqiztG%^m@>gLjr4c7yfhm-oH0<@E=` z$Gne0@KV2$X$RmKj%Fqa1S|msBba`HBalBc$c6>VaIlTzq@X1avRshCc`zv{2v#y( znue~?^vsy86}|(&3ZY`(xN*Z}1Hq58%;x&4dkgLzTCl)6X~v*k@OW=`d)FB?;Oj+o_4-xUv6~xPE4o}!Tx8aevWP@v z;u;&ts5p|>%hKC&)aM0(?G#m8?HMzwjE|LdOnqkVyj9gb4`_;U`D??lsr|g1$mf zdH3MV#uytLYdSt|>8&>xJRJ&j!6IHj@PL7F26cwt7~8*CG_KRLW9x9?cMC(;j-=P&fuo3Kal(2Y4@DV=!edC!9l;ox4q zE(z`qM|vF3lmTcUIbhiUdH>T@W+<#eCa#&$tfq@O6?18G`P7DVO55;wIUe#H-sYlONw0G1{8}J2%P9&mgv#u(%Vgn(Na)v%A7Ls zutqW|L*95IX;NSjTwPi)7=|HRGzt)hU=6k=0|R3M7l&$Fmk$~)2W&7taSa>7AdYO> z_w?*{uY+3FfomOGoXcaD|D^FcJ~=U9hwMhz{Os8?(@_SljvS8zK@RFW>Q*u$LCrLS zzb6P7ImMD`XUD;6mU%8u4)#F=+TQN2Gc7s?%tZ%TobS(PqYj*yoc2S-2{3nQ(er6a z3|^BOloJnd49zn$a(gE9E;KzeuWuhO>*eZ(k9SVZm6c;nO~$l%c|qTQ|5Al~Omnky zUNX?Mfr%oUQf{FXb9}O|O0AFn%8uU@@$Z8$YEV~X$LaY-6V>Mwu!TkV~+J<`H< z928Hffyf0U$7ryf3U@Ws>*~WduW2|LRl8X=tJJ<)rc_sSWpP3CQ{zg+$?OPp;Ew&D z30Ri^L4cYDM6J|kRyf0k5xfJR8Avk)K+PbS0|Vu-$1XgObhCEDX*T@eP{(ltZKl?0 z>AMHt`)Fl}KqE$zViv;Dv92yHd0R!D$hL}1X*qfH8QKUWr;R@-7RU7L`EzgU*oIlf z@S^K({q&@&TrS})7B`Uxf!DHcL}bWJ1U66jQ%p=vy?%J0{}5#aEW*uOt zJ+t}*=tA8~GO1P1b$oniZXBy~g0og@DwQ5p4@__AR4cDGglt+S3(z~QiRn2#d9k9M zlcwq9#Su>05zUV0)oWB#uAZxkuu3eZl^3VF_tu0Tx-e!Q<(hKENmFtjK6zs7?gt-# z?0G*{Dv@N?7r6;iDecKzCH zRXxTkM5Ot#xMs%l-X;Mo4y20$*&@DCY$y@v2>_UgN4*VNU0-vc+`Ms1lateChJN$l zp`I?UYVWkBY++bOrUduQ7=W0TipSM%G?mW;NSvfEC7jz}ow) zVj3TgT$l-_k5hM^o?1$seIGy~6#nYfx)J%u`}?|%7C?Sj*$nTG3=1x_p`FbgWzs>X zOy)*c0rV8_1#JQ9;y{tSY*~DoJEj5$hld_X-Mf3&?9!ol+=F~@4@g0kD%eQ{0>NZd zI(`h_z%KK9vMzxdiC{$6u?jg1)$>x2d2v1;9xbR7irLze8aC4HX?{GbTZ=Oax2g_U zL9UDrsn@D&fA>(g?_5(a64l7WoGQ(ZPf>6Suov#U`KALl98YVwIBmsu^z4I{BBfh8cs!&NyM};J>d}aD%EJA!gVdjaNJ< z*n=aV8aD{u!EXA8U)^+3+PwbzAj1YVtZ!?8utEgSoVP$Uk2;fprJil!y_!s@gn|v4 ztgVi33L32lF&9Si+FV=nTKkPVx0Ny3Fz#gti(EPy6+Q{&q;FxUYTI!biwInZ}-Rz z6o@yH(C*HTMWK(*WVIZ|QJjFxfsad7jmM zRQa(<_b#CSSQ4PC#XMH{vt@D`DNcH0$%Kg!9+Vl|uSSE@fq=C;XJG5@jioc}+qqD$ z=YW;U4Ip*cT}t_|G(Voyt;K1BrvXEI%Q9dj^aC~)#^)+*+HSQ`*T&Aa9zT7d>({U9 zlOKKR8SKkfYx+-r`3pUMzNvIRqXeQ32S+XkD)o-7(Q%<>#DRZ6A)D3&3MdP6Zo2k% zw)FDZ3%&E!8_qP$5W$|-D`l^O2~R}n$VPy{e?JAlh&jlxe>Y$U8Mgm$_e+KUf52Mv zmE(#HPncO@?6s^B0R(OqYfEaf<5F2ir)AYzfmsPQOt3R3XZQ?ny>Zt~57UqaB?0`m z4wRI`*GIocNa65nyC;xgU@@qNp})KH=g5TgSUy(^YgJr*+8ryDU%P(8AR(3hN&iYjucm`oy9ZrKefh*w)ik9DE`c_29AI+TJtdbRi$n z^k`PIv(q|8>AY{$LTpi^qXQcOI$A6m#Es_!Rp4VEQzZzBu2xT&-o0q0Ef#O^tAGl@n9QLvdgd5^?&{Af1|zQrgG!MYI58TMYXwe zY~>h+&8~^NQYtEq=2F(bx_$ksvu&$h({FzLmEOE_>Gk@R4Bldxj&>HFQ&6CBJS-HP zRR<6?F2;W?!vcwXUBjZs`gby{vo(@B2FCyu3=mTU&f)Q~rS5r%*^}2>06#EOJN6_b zN+xVz@>cLH6fqD+O3Xvi@MqKptq5`*^*7g*#)H=&yV7X#dtN(u-LNJ110URok8nH_ zAO!-Zw=tlZ(qWB_k865nM%z1EUKr50;!n|PG~Bp?xS|2Sas8TupG6Ek0uz8%yDMVi ztlHGm^&{mnfldMXtVsN3apcK|bnDhlm7x=v0uw04pkV-&2MZ?xkDz4@U#iqqs?;2` zfb=;H_(}bbiwx4K#z7-Nnx$c*$&Pr8)}Jy4F#EShhI$OI&zn6}pf7ZTHSAO_tflFK zuFj5YJfF3A8?#e~^8h5mcBs*GK(r7fZZvF$`^EhS`uIm5>eCdZX-S{me`qO5E;a|T>EsbDk9|3F*&_qF29pbq8uhg)wGc2Pn24(%vHdxPkmg)u|sQbyV11k6t zWdWp0$|Poqy|9Dz#mbt_>kXxIBRVOUw6J(dI|h`}e9d+ml1abO*SQ60>%+(DQ96kz(v)v1*xfN z`NjwPN8W~YTGHrfQggHOc8>&4vbwpe$1he?Zw8&ax*dfW?z2*lOG}q$6i;VNY=qLy zikQg;Gy3_NNlzPiXrjrq&MI}6OaNqP(!faYP^BTXTIV3+>Un$#EmZw8zBTYE-uU_AYhNq zO8WJ0ztM*uzpIZw`BdLOe5&96?n|w#A1ghQR6IMZPAIIg=_!jt1PtAtV$gmWl2eMz zPPhrUa%s+L*>BvrrLVsD!rK}yK0p`0pOAF2zia*yS(T9wqm^N5J`hn+4zS?If2oH3 zVZcH+{<|60@|vu8EiA{}Hb7djxjMqT>#XFH2U1b5hgx-0&tAUL>h`um@tC5SjE3_g z>hw@YJh2xq0Xv*ZsoQEP)t4p>43blBu((BJW_}Q`%vEW$xX}bMqaR8itc=Q~V|V?m zjhW6cBj%=qZ{WSJyjs)LWKpxz(|&EhlZ?7fj*o&78wP)1B~AimLS!)U%N?7XRWg&) z>eilKt*jeB!?lWsduD);)bhEE=czWH>n}i{NHyzaEzVA=UOCtF?2OX6y!9stT55YM zfDcKjOh(z!qL)HUL*h($68QCIl}x8RTC*w14+HkSLbOMdP^v>j>=@OQjC3`fi)nFk zM3<*Vz1sm{U^3(FI`c)8`3x5eQ%rsQy~_E*<{o%>Fh-1vtu<{4K=#bNHMsdxP;rRT}_THO-#hRReCFAe`7^!ev z;F}eW$Mx{pbA9pEnl4`{YU%1tZEWu7n{QvK)srTs=nlv9#yjt5eS2FkUcS=y#-5Qz znK%TtmWBYc%Ax=OAOJ~3K~#r;7tT7v&Q6W%=wMHO@X1G(T7)Za$C|!dAwZl~rL3)u zb??{#O#|s;{YhDX;jRT7egG#NlnMj17Go_O4ZS%E1sY?X{rzA{U@%O7tYx+6{zFQG zy0d@iF_ae%;K6+Wra)Q0`0Sbf^4GuC99HmT)sdWU0B}plnn-9Ohdw_&X^;?$ z2$;f)mlwSOqx3;=nCo6BjCxc>V?y?1X#m9W^n}q?$D=tmUX%j7Pt;_fg zSr@4CFfAZ6gROv>iNYA`n4Qo+_|rep#?GD!lXG4cp#~1_q|>PC$+IUK!=&!4WK1zx z7G4-Yrwk0}e4!8dL^7_wPKPyHZ(XQ%fp8lL`ygN!$A@%ncFY0GcFXcSF(7eK7tsWn znX||XhQlrgSi?Pf@j~~%-O$*0LJNym^yJBN?H{*Ar8_g8vB%c!H{MXI*VTgukF~M7 zWqnw*q&N<%jtFn`GpE$rZptrLxo4V!ggo?o}8TsH0hOR`|?iyO}N-kuIhZ7t4Ex&hwa*tfLR zM;~1G{h(~>MUz^(dc(?zjH=-1!ITDmNWfBdky(oqf%`fb2}%Qg+HIaBNi_?ntJdt8 ziHd7rv)K`PWb?%#2kVuYq6))F&jNY6p+&P>Hz~~=^I+y!hYnM3=-I1Py;wO@9QyU8 zc|Ci&ftQCW7t-uRMyYI8i&vIhw|w#CSK8k>Rvcp0umsvWj$6v>dB6JKJ2)@9sC16Pw zw!KOv-6TDH{L1mOFf*d#!!u15le)xMawKP;gVRb~*KgkT@&hb&rCieP?w)yG@cYnP zqi*Hj;_!`PH~10W2T3Fr3&2L9PbcC%w5=+g09NSYx+_iRBU+po(Y5&rkC>om1f23< zykg6C6kCRpdbPgk<9zSrL~GlJDph@tG(QgtXxlE%=Gl)T5j3Rfxml@w!+|tJsT`hRPnWgU^x^|hzY`z z7cceKzxl1T!+6MHk20#_sODNuO^hjg(K42p8jj9*`QpDYabO4Wu=8(m{zx#*#b zo+gIFnjOvR=Hj#p*<@e9IFM%KgK`8Du$5*{-#>j}MVBM=1wpyPu*%}h_~yhJ@#*63*7uZsu; zb!?Z6GZfeE*0uw7VSd3EZwklmzJSGGaWGiP{xE0*(g9na{$im&C2&J#k%WMv{lkDI zYyB`|gQ}vYWKdu6101#X>e+c&>zmv9t6%+Ed;3_EN}1uPGc9QhVK(c2rJ(a9G&Mc# z5e`&pM4!1?U^`LmMTXy8fqs@jt8C>3H16Nr3Od(ZRm!XdZA%3q)6V(9q=q z;Lb@*Suiq!9$8AEe|l@8$I9)X(ss}^$m@mvD4%-uM9@~tRow~c7p3Z9>WuwyA zC<@TOj-o1N<)fr1*2;T1* z27{peeH|Orur4)RAJC2VePoea>XQY%6|}<3Aj=YS0p*4f5%b2=^ODZ1fyNXWfsA)_ zbfRDX=C^JxkIz^;N|}+2uMgP-M@bNA=wMyFcFpgZ`6_bnY`55?Q96*_x%tdX0grPu zvL0q}l8y~|?g=XyO^I+c?rTroSZ%be*3FuehK^Ag69N7&nB;g=s)Ke5gS$gd;2Hn z+BvDK++y$BHb$V3kS0fxTAa!Uz-9e$Bd7}p}*7ag-+kg*bEISPBqcPvG zgZ-K=Efm#lw=JK8LkX->9_NXvv@>k0#k3*p4wMlMl=3u!{}*kuWyg!i^T6C}d)r3y z!R81R?@ptsxT0EHUUBAm@4ff*{(J9hgt=#bob_6O;qRFSC z6CQ(X8z8j^W{$8y6UU~C1ps)0lhT&wNVC2iB_1gX&(=F&^*$u+v5wc%-N|8=QyUBSR9?4nF5bw z5Y1l`8_~0xMhY2abHjdpnlPsck8AX$UJpJO*WpnSgH`fganwy{1`yc;E zfApvS*od~TKKmQLCRhmcFkY>#X?t(qZtF913mVSl{dZt~DFs9S;**=b-NO@Y9amJU zcT^@|aRZD=6C>CIWi(mHYOFvYVaW-4KhP(j=6(2LT`xDbRjyws2@8O~<5+68wZ2o) zo7ZN%j9`CV1&)S_Gu*E$m-YPlOLZ?Iw!Wc0Lc|OKjZm+nR&uyaE8R4{OQYA);~ZTt!w|Zs>4#vXe!EY z*xRY0p03S}Yhom&iII#_2(sbnWqvudk&xDR5B1gePXiXga7IVx6*V|!Vj(*|BYO^F z>6@>gYGFQaSHh!{h9+m=!Z+2fwG4b2$&F}#|H#(l+^{E)AL%DQ{*k_a@U0(|;%MID z90YGFfp0-Zp>9N*E4!+dn;vC-^vNfB>)t&t4Xh<<*dcr&lxzYTGs%(%&TW;AGlDG^ zih&&M7L2ptT|j~}Y0(yzjLON!eKsw~Ef~10ZM#svgK0rP^9ZcO`Fe10Wc}4I?ti0F zxu#mPr+SwyQ8r*Y^uV^Zl+A?PRU?tfgae1|wbcz3ixbu^Ah9EQT&YzQO+=N=Wef@_ zpPtz*5lbOvwy0^-^bw%XUMxFU8_f${yLr_>bSyq;TU}+aU_$2#b(r$G&zmg3 zcL<0VnD`}BJ#XmVy&D!6Xzs^_pg9X7t%_{>JEiyhm#tnT7#{xn3%HRmoZsOaYnAJLK+# zEqtteGMu(5VIP?+yQ{H~v3Qm;c4!It<`D9KzTHEZ5pbbV{1di1XjmXDrismdN>^W^)Z{dl7K^o0Y zQ)}y+`t9%TYiIw+0bgxEK%!H}t2ge_fNzDt@aPCm*MW@Z?#{mT$Aa-8bfkzM_-3c6 zcq*7N*D7^Y&M~x>rlxTKy2WMqnP*-%Mv843l5AW*g(wx@TR`qHVKirU$ z%Gk)L@(FB4k@`PVD-_b|;i2CC=tKSFkAA8zzPfMM9L8*H>d;L9LrcKI30%5*Rr8CB z{%oOtc5Avv-FkFh*J-7pNm>R*{wss*ToNlK^kIPl#;xqf(Tsl< zqcbEQ!Qz6~M3A^qEeBeIpu@^F?d>AV9`lF7#hPJ0qc@~^kfyieV&5>0uLLc@OE40Y zY?%mDRAk7!T?cK$6rh0+$Dm1b4eJs%6igAQVVU2?2A&1SIynNf+V0oB=E2)b007XF zXRo|;fkJZ9l2TzQof-0Y3UgsHUN#-l{OpYD*|XC#+si}hW8Mu&o0n$-K~I~`fUV8A z>tElmC>~<=J>iZVMH)6m8!%k?+|iin-<$$W8?Icv8o0$I5_)yS$w6(jd&D}k1?4Bu-h`0=-qD@DoR9CvOIHFHK`M^>~pWTPnkLo$L zuS3ekP?{OF&|WN))yBz*=9Vt&&Kr02@bM$dDUkrUuCRZx7(k(&pk27M==%$bEA;p0 zvpsl4m3Gg;TDL}Q*OYCZE^68NiL~Y?3#L}Ph9w!_ zr@n#AELjO+mdmUVEa=H`%`3!0aoFyDbd!x%$44Tax<&24JG`dQ#C(%j@6te`#5g3p z99qUDkntHc5kFugm^WIQv#%CIpu%kmCJ8~nHt_~C&;;()iDfY<3tTf>)-vL(va+_R z`(J-+m>tNj!&1x8KoVOz9SO!sprYcOJ_QfxVGE!`%PCM}mKz@OWQ95ISsAXGR2*l> zj+)G-c8_Zs%Y!YATbzy2m?ft|Ax{Zd@iOLO1Q!TujC(?`v9@lk0!tI-u1pGOCPNop zf8O`sx#>~lH{U(b8PY_Rj=BVM7`S8CTdi1!o=5t7Kl#X7X@B#@muj|0+yq>-3mk$@=odKr-%@!p@C@x}eG z^?Z5TO&1SVnVCN{oj7%MF!#g_k9MpyFdUPJt_2Q<_93LE-)Yoo8 zonU4e)2&;#EPu{1%R>ND6Zv~|YkQ%gV2F<|l>@i#%x6Ijy02bavG9e)iX$HH@H$8_ zF=j#_jqHlnY#<;PtYrsUvR)I0hde&Qik&G3`d_8sNrI4gdfGPpFOkTqQfcV4RCj4LJd(2f zCd&kBKc*2}cSJ5cN{a--8oVDeCD>b-3~$}Nqh6mafB^YQv@Q&=O?Gi@IDfO8v0xJ-V}hUhYugyItewO5o}($NRfy&3UZUv zwq9am2Izk2+EsgBfNYDW)7n2i(Z=?+mkE5xxw(1G&de$F(}lEckLrjSgW76#ygaa| z91b!ZJHu=|QU<{Qe&9&u2U!^BY&4X}$J29jw$(X2KGo4NtkSA$r_F8j1f;2{jBek) z>F&B#uj%CQP^n1Nz-=-tLTHI3q6%#_TXm1Js4Iz*b6iYL%j&j*AvTCCFrL@00(Jq_ z4&C}f5fD?<Nn9u|PzU`l1rFb8gjfxReGgO2Ix9Ki%9q&P-vQGeA<6N?=K8Bok&UBLGLhaw1Ml6g{zE?1bqa4@5d0*Lk_A zSON#btnb-i z*AV(kCDjC9n@n1811o!yA173?IBsl3=+l{4k5L6#iGU@uQrKI#7;BmscJ1+CJqxBF zopk+Yh+VU#7tdF$=d^%nM76F{YL!mc+DT*}%V^eX4s0|cW@gYdz3|owH^pX|oj4<) zt_sBwtLUAc9+{flY}PDiPH@%B9UI-H;$bCY2^&P9N`h$yb5D>=RsnPNiW>b7)dT$H zfS!%P1$8EdWo+PR!0OGi@dSZ|Q^F)c*umV)ad5XxC;Hm5eb9kV7Y8gwWQXG%Clt(+ zTmDJVa+I4{3uLcc@%2b%GFEYX{A|?*D8S;*8~zsTNfe8P6dQ`GS`9{WQ&Tyc<3VY; zfEv#AJwXMHi9*Jir`2vca9NMiw30pf2~*h(B1sL?y(Dl;e9#X4+Ba`3sM~I;UOu&I zI+K;z=^4*VDQ_4HE-%0G#*Lr>QH9pP{?Vzn4l&6Ko5n)jZ+WS9UBii(Qt=_{FicF& z=>GltI@mi}D2n6fYF`0o*#PMcrqxoANa}!rjnIe&x>u}?@rq&)2sVMxQ-q{hbb7AS$c#V8ME z07ohI^h^SfIx1J;eNofKJa6R`W8p#e1y@jQ(##D99ZB$vkdDw>K@^pci-3Q zs}+6sU|EZE%*>m*dUeSSDqOcH>fPC#UOsu|Egx8j?ZX3IyL(rYbMrc>lx;8Y;?=61 z-GN_1qY3@}rHo4gWWJf3A!dxr2P;^p$nAR7{Q7(*Vx54w=}B#GZD?bC!+-~9+|XPY zZc`&tRRhBC4T{D*nqdA)ox;(&v%TZ&&HmiZiS+;lgs@n>(RDURrvnNxahx9s0%Ce% zO6hpoxYKYitah`l7#?4tAsv*;wpHKQ+S3^&17>sCgff|78>-RyvPGh)0@IS}PQ zs2Dz2Tw}$8u3cTS#@~sfaHXvk%jZa%rVYFpi4aGt|YZp)pzxBpF zKVVy{Vh4~r79!JL~H99$CLgS0aPh5&Xm9MqiO6BvKSzL5bZyg-y@c2xd zJG(kMJP8`zA5TSkGzJ72%@@aM6}VrErY0~)25xz2b|SFF>~?G!$ua)X2OnC5w_aeY#HOWOId{<0MJ5tMt_d5B3)QRA zyZ0_@X>rN^q6BO8ykg`&zNSz1j#cV(U(2u4+@#Z4!}z$M0GkI|v0T83;;0tp=NyD+ zfE9A+MYSwAhkM|SYfGw?&rJbAiDrIwTEm%4(169`&eX1Ddp$2X7y%L}Y|=PJ2W0_B zE9yy_puh_Ov+I=6T3}{3x3~3bZPiNvcu@puG>T3D;u$n?0pzdd>>t%oxa)_!SO{FZ zVZlOYskc!JA9DT5big9RR@3R|q8Bm>ieP1K8%r>Tys)*y_~XUgV_0fhAM%yV>302UXV!~}Y?QnJ(g>ERLYMpu@u__{s# z_A8&LSFhxCX)&0S=ZoXkIM~|URV*BF5`bxt0IZ!%XnbZ?!^JUY*yWXVJzrkY%Idm% zkXO=c>9ns&e%Wt>GYFwWxU2L>7uz4y+$D&+F2l`EPk zj(euNv$?I+{UcSAIc=Vl9008I*zRy*5Fi6{7@CbdBFrF_8Z}Fq7t%3ZxxAo{-+$M2 z`FZJ7&!0Tj<@s6NxU!_3jWz4tP8N$6p8)5;h>I@T0BSHl+xKRXVR|YkSw&gXOg~H(*o~NNjHH)ipK7nC$nClws5r+YM#Ytf+Ht zU}==N-l3t46AWh4mbUL}0D#zH4IE2GeLpI7wq?O}A)_Y{+RLUCkFHi|<6}Oto;-e_ za=EUBg{&s0kl>u~DgMjfe6FLzp8m-{`U9iyz#n9CBT5eEG{nip>N^(Kv*i^%di+d} zo;Juv2Q=f{3~6MYHLEr4)c`PvBDE69^2;5ennNjTgss{pwZw z7ch9HQCsLA^Uu~c^=Ri%-!HFfdGj!k%A);2FAHI}*r<1J|xSI7y&~cF}X=#WaH89AIL(2QXSQBY7u~?fo-jDF|w+`Ke-7 z$w)`(c-W4SV;J#e(zqX5iOa}pbAuYe!P%4?#;=&~h^c~@m%bYb5(*wNI;4b4nVdn5v~==}85^(WggXcyb%nx3w#X?0`6AP>M5%r(=Qq)|RxRI?Mp zp#UuuV%{0G)er#iXegpwChMdB!}s5Hrg-xGch>%g#!RsAy8b`uw5J;uD+^OUk}>5P z9oK0Z8bHzmxpNvvvMIIT!SSiqHn!F5fUrjivErS4J3M5^l`4od9`_+&j25f6hXdDy zhXx8ffRu@`5nI#~uyGV~B0=V7<;{a&=5r$H(vBt?Q2qGytg*`9K6s=uYKiff9V~}4 zapltyiGN&<5@06pCIMy+Y5 zp&tCe^P1A}gzntBp^;olfBuWlbmMwf*Kb}4npTC?LG`jDOHRR7pp3b7_YH0D?kkxY zwnr^%VAOQJe?o?Rt_t=2KfILakr~Yg0wCOK>#Wpu_KC)&_us#xci+CJm6y-;=(}$; zHHMAnxT!1Ld^qf62SjOs39>e%yTlQXfJLG3)ItwcuT*R0vRbSzndQ(NjSUA{N<%T@ zG7k=qRVoGNIW_c$@4e?60*VQ3tz0_gY)P;o+HqW|>X0tELg$K@oeaKVq{bKtAjsh{ zViA-qVN-o}5w%cH#X?a(`;&j9t&J`H@~?lPx9`2FpZ&=nYx(&Tt*^Xvy@+1}x~Y6t z0+rDWoFvN@A&eL2ePhH{wxlKqFGT1#b-1QvKeVdWHn(jjg+vcHjJ>@Bz1rN>?s-G| zxJlaFRGOM71mI}2asdR@8dirv#{g-jcAb+4o!6+YU!GSHU$j)xR2Z%Ur&~6cH>H{_ z+`-A26)8uG^F9-dHCn!T02PTw^B8XDc?8KPnrzUiAbZF(t>DhTLuWjj@?;jiQ zyt#9#R64B1%a^=R;5A>ZZ3To>biq2(=x|Oahb6^Avhc~Rn^*MbKmQvoF2;2GjT^=T zuvv}8vpO$T4UD4R=aj$m#+!Qj{Dmc2dB2-GdpbBR=@DDg7t1zr3H{-edhp?SQ5qF~ zO|wAYq0w~Z+Ev$M-+%v5mC~8=SfeMRw)31A8x4dVIu|Cg1=^q&uG4T3f$rSuUbq{! z`rhe@%BOWDqS7Ql?Q}}#H87k_UsOH_zFkKZshE_mEzRia;-WodSys@=GvK%Q8%*6w z#XebdtO*Q|6DgaCaQxBqG3H{d183jTncAT3=nZ9v1fR_8LIGoh{h-SYJUf09Hd#gwF*|bzr_RU?zY8V9SOOMX6j>7LV3i zQ%|40(BA%mLh-D+se<-P&_bYRSM|o5xApb6U#naVWZD6saD*ec1Pg#QGI(L;$d_k| z`jbySPe7u{D%V^3`7eK?N~>oj80OB!TtbPVuBxR| z%}$K!%KVH@4)(1Od1-OUo6lc;_JuR`&i=8crYB6LXEx00b#wpN2(-`zT4K`GnW9ei zj}#Auz2Zg`Wn~qtKu%LL6K2M8EmG+brP6_MG<7iW%o{gvctc99&w~v?;MuD+J$~^@ z&z4sMD$hT84a~|A1$P_VZs2(v*oX!aJ^)LGq8Nstoe*(%$<1VaOXrJh z`@q;36cd{MPVCDVY9ZwSiFD#_dbAfV8I^|&Z@di@OmQDe8pRy;F zPC0NGN!j14T(N)FH{U+cqbIx0r0>3aRquTGBdr})^_wrg*6|7633XNJ3#?lkfNnT- zd}8%kj}!^~x>!i)=H*4rj|^+JIND!)1h|KjvtzHefg+w&%PQ6CRt$`#b9(fARgahV zTsmb@Y)Qqnv@oNSqg_=?$GUTMK?R%{BSX502SHc5|J_4v9i0T0oC^!OcIBE@mtX4D z+J?4IDlS2os#K~?-IyI$<@iWp$b~~emMs*}v~8$^kK6dTiH6)Kbhk(@sMRoB{^+9* zyUXWn=d)oJ!r6D6@5U?~t{Qk+)XXa^bZfyqZR9plZ!9 z^>yJI&=|p9g?jDLR6lC@l8Q@L<|g%{yKi_;Pd~thj;sl@qtUFY(E?cob*H3OFRb2B zQYYoMMfmm(&n>MqoJ#BRr8!m0$2vLO*9w-93E+FZ{KEh z0P>$ce5kW>O^5ZC1&mqMF;kxyN$Y}U75ca}CWB1;o!vck zT6GK40Wak>_D@PmWb^vsyQg}(vZ3{zLzjD@Kfa#sF{?yK9BgRitf}$Qq?RsU@`h$@ zXJ4&Q#KN|Wi2_Jnx|xp%@)>4fzvjK zE9x{dNh>_0%~DMV<(^?{bdfVD>1TiViE{CffzBhvyaSd_I)>1MAj(Ayl&Mq#oB(q= z3#VCIAS&iXG>@!`$++=&u(6_9uyaeVs{|Af%kF@cMPVCe0*-%euUNs!f{z^pEK>sJ zh5?~5;w=&n1p*N?Tl^gXOJ;TFUg7B6wc!SsU*12Z1hp=>jl=VXj?XH-fz;XPZ_#uO z05r(4Gd3g3BkeO_>{3tX(`mhT>!vZq0P6vMbK0Gp9IABA{I#L;YFP)TCu*QM(FrRQ z%cxXt>EV-Qoj2M_MPiznfn|K5{q6scw)c9HG|kTYp7h>VmN)Iqw3!~ivkR={4i+GQ z03?b=A>HU!5eoeY(v@^eF+^Mtw1P+xWH1O2!0rMIV6g_{XLhE&?=J66R%KRZRaU0r z_q>_24T#Wa%&{=V=pXeoH#6>W((QZq_2B7| zA}J}E1N5Boo-~74TqUOo=)E(uHotf_Kksc5qZ&?Z*0Q^MP>ZE}HfmFe-R&I*n>SpY zt`Z3l_Ze-GmG@4x3qmX!K+;pWn11t@zM*WiYfwlLv*gjbah$1mLa8Vck#XytvI?b+ zl%uSQQI;bF4ro?F^~ya{V`j1X>``g9sfC+mI8R*8h#E+l%Y*(?wHQ zHmI%BSxrujI?K&3tO;qmvtv1xvT2>3n=!(!*``L`^z}bz?CbVtgZVL2EhZ(0QmG(e zXHn0EbUKa=b;pob4nDF6*-e3bQET(|B%u@W;4eLNEjVj8Kaa>>3XYdKBSM--1` z%*7&L*4EcO21}%(YBT_zNY!fGPieVW(cQcEESko$fn(h>#!OoCYkS)124}?JJW5HB z)~|f+ZH*RFN=AFi;t^J>1O=LS+=3hU;F96Zq zib$qx1$Kg2x52E>68m-#rxfq`fg%tfAkuvBKn&&5UG8*`{ZR6HhJi`ILPBir?)m`^ ziZx+fO4Gc#yjYbMf72V+kH^t~YQ-PDj3=g|m7kqoLVKsewf( z?~R{N{Yt>F1|8C7C@(nnnGg`XaP@f|)Tox_1UT)$1Yt@#KMC@X12o1 z(UE0@EHa!<`L*ze0OmaqkX!?PK4ZdcI%$srt}72I7yyF)$+M>}2P(C)K{!A?0e-hy z1b0?6#Md4!ngyjTzcD;FLl^nw=_Ww3_jz<>)x2`R6PC zegd`K3P9w^iIgTMCcGV@)&u7E;YXi&owwIO!zpI&*FmSP-PVy>N@@G>aNuftBo4h_ z|HhZ?v4GDFQjx4hnN9M5G5iK2V4fBnEtH%yVYC+Z>0Jje+;={>*+W4$J`=FijbtGf z7smGvtRk%rxZm(=WJ$rXMr}$KqYnJAfukRa=3s(pY^iBk z-Lg<1fC1%DhB3FbttYHqYQJp8h%lNzKWIltX9kIKUL)54*(Mko0C)I#M@J`a{-DtC zv+v%!r?riBvuo)SSY1;prIJ`vQS-O7zO}1PKdJ}M=CyN(cQ5nNjC+GvzpImWOSN1= zodeVkq2UKCGM9~04bXfhpEk1rl@>B3Tslr3np#RCWSqD^$470;Y=VQJjN`qrh3H1p zLU{;*4gNjor=7h6n{FXLz|w-yB4DBRM}GNgv5zt{kga-^ZaJzBUa;M$mRI(*dmzg- zveV<}BPm_HFr`W{se?vS_a3Y(7EP+L7gV(Q$so?IUAf@ZEe0BxQvhMSb9X@_b=Hr2 zuG{jZincgP6KU#1v^)tS0VX13FFtH(w7+j=1^57dE}7T$^Pn8? z)((ACgHQmy1j$a%eW92Sv<=GDs%!HI&^0Z;DC+0**yz@BGp)d)`dh!u)k@Ygb!44ZZux z9ZyNPGxRo*zkR*j$BhKIUcFjy{a7qiw7k5f#igdpfl?9a%7jKnDk>ELt&j=Y1{&YF z8`P8;yOeX%)OcCr^@^p2cDJ`I)T4Ca=y6fOx|-fIO>eeb`DR3&?kJX z{pPlE>gk(rT-WPY&M5(vB?9LtZKM}-P@YmUU=rIMkV*s)nLasUFEYm&wwcvcu4qua0|!yJH&tvqFu#U z3`NDLakA(StgNoO@xoCYE**Na$R~}BPPl|10mUqjk=%zMdaGp>E7#(^;&YhrBFF7Byn zUH6|a>heq1Tyr*B9nbP_-g#j8eZbp52Y_6fP4{azs(ogpINO02AaL{flD2nRTHo0B z5d(OGI<9wuL{3-PEOl2`^9y_0*a`w-KoC#QO_*7WWH<;Y05a6D+gm%@+TPW|BK-G2 zWl5!TYQx{prnR+yXj2ee6{%+q5BHQ-S6_blqQ3Ooi#bUw?yNzO(yR?FCBKmC zr0Z`t9k66i%8($96ofaZRe3!_jjrJd5G0R6wxu5ANcZxC2WK!=vlSDab~@k|m=l`} zIS@|dMC_}p!w$-Z7}XIpSY3vIW$VQMp3)IglINc*>Rd63pv%dciSJxEF7L+elO~0WD+eepdr=eAxhAffK^`V67D)Ot>%6&FY z98Dax2oz^B1@nxyw*hVhab0v&VE`l(5fw}1zpifGUej(%%2TtB)pTlhQpfF<)|Tf@ zm0*<$?vLWpL88ohTW$ec1J6hI$rd7py^1ipe6HT&wE#-MjkJKl`yW zb*UT_W=874thrLHE1NHStBDML(z9a9yq;&In4|y#;#zr9F;erX!Df_R<`|C)&!dr} zYJJhfj*gCKe{V;lwW=L0F=2t3{PMM{I_mZG?#-Jzf9+*^dO?DPjk~(J<3t3-oBH30 zqy+}JrN}Q`%JmU)U>6Kql2H&@^`sxy^2&O6TAETW1M_uKg?!c`V0d!iJDk*-;LUF|n^ zluU+kP;lXv%X&=wT}u77DFqCuCUD^uy!=z|qz& zM_^RtYDKs1-qlb3@&orHoN&~t^;*g9mh;aS)aylb?Z&Id_^aS^tZQQzxMkDk9ph88#)6QTXgXQ#!^w;M%9Uat9ubNsprRPI15KkQy?g(Ww^ZEe zS_$o^S>G?ZLu!p%_cp!vu2u3rDnRb@MA|#buGcUXu(+uylVWUhU~g3;!4fegvKei* z4%ESFC|S_n!LbewJAv*k>C8k?zy9s7E7j{N8>8^gsaz_l0K=7y8RM)(Ku(2#4K=Gf z>VaH07jL*7B4F_^CBp{cH)_EH2P_{}q;`i7<%Q8t=Zkbx!Qgp-Al~C=Pm~55P{`}%-Mjkq^IKZoJT?*!Ew5%{$MfuSr%ro$ z^ziW$C9_%8#>R|>L+6S{Z+8Qiap~+_S@n8Nxgx%3b#1O~_%yKeCNNAu_)%ui;TrqT zao0$;POGIFm}g5lMeP_f$!j<|wyDSb+Ll(f8cOBM8k?MU9nAQX2?Glpwt$h}e6`+Z z$B%g%D$SKj&FoX`=s)`Su18!GV=0w#jIrc-nW9N`BPl(6vTeiMlj9S2foz_Npx6^J zHFmeuJUH^0Yov-eMBYCi=^bYxHfzv&<9)5}Hr45&8`Za(495-y&}b>9zxV6EEcmdw zSRw>0revj((ujJ{U@=qWPlBU2sM0uKhnA0n(trSRz;c}Shrvao6`CzFuY-7?vP}R6 zMeV3d0y1oH6c5@2)WOmIi4wF92B&izlf6Th9ZnpEwXAjehXG5r_X)sj4*~1!N{u~G zoWX;PU*vIRc+v)aM98juA6u-GXwTSIM4`JdM%wr!92ywU>v+C6uWqELW~ZZPOUrhk zy!UwBdIi;L-gEa@zo*vDj=}L4FJ98_ena=3Jho>AGi+Yx^794l?4GEahjW)y+$CR4 zXXobBI%uk~zvl;pfMvl`saC8cjx0RakGN?bwCt-(?F&7AbbM4Zb5q8>HV%*VWNA&i zhbNktJ*{FT=)qD)qj!c=(B{UvBLBr}qYl_Zl#in^)$8NJXbv;5Pd@!roi@rVImPa-~A83Vaj?^&$4r*Pnvwz=65swnU!NF+lVl`)udjnfOMoUbBSp=x z?^#&4bAt5EV2;W1pqA8ce&<_*fKA$j4c&dD88i8;J7&6A3%d;zX+j30h7E=Ywviv| zzj``ACmm`=z7B$(x|L}_$jU>pjPU;nSZY@Q=5){Yo@GR39?p^C{Uh_-_<2KF`M(~p z!$rlgJn#g82g$wxyvVTK8?3;BB_z!oaf*T>p1F1+M|p;YL&ti$M>Kor5->kLIO9`Ls>-8Y)2IL zOddYm_&ELreUmgd_Yd`Kc|(bOMboFxTM&h7PIe`h)>oGe0ge2|^;(}U6ks)XcXVvR zNP67xZr!=9R%_o!-@)FYmqOGq?W4XAZR*?jfGn5ILX&RVsTv^)bB@@FH(P4#ar9Ci zoL97v za_F=PQksZiz;f}pXd!q8O$~v{{{|y0j(?Q1*#ZS8Ld@HO_&*yX)c*M3Xrhj_y(CKj zHhFaPG$l+<`ahqq4jZ=cm;}C;%L40cg>_}nstwBEjID+N`&WW@5U>nA$)>0)dQvm^ zI(05P{QY*zTB-((18`|~wBI;zEeU&JeS1@@TN~OrXj*IPNM;%5~I20m> zL)FC?;3Q-}KqqYiH#Q(DG7?K#keE=~Z|o|YN*HswwB6F?eqRTOmPF#}_Pe?|Gp(<` z{;~?u6IIeND?C?gWt+6cp<7cs^`ox6c?h^kA;7Q<0>TmKD?==zO`ZTHCaO2SUO=x_qt}-m-!EBn>Poso(0_0ROD}u%$>n1`e zgZfSq%cD_?xkQs070XrC#>Tz5BZ(j)xG+Dj2M_Km^7mez>{IWMRcw%!$(qkYjRoU# zadF8*f371#V-pRjpS+tt(bj(7;>Y;{>o_t>&+g7;RC<1Z6*|Tt?Nq zq;3mpOI*u4Ej?dvY72UKETL$xuM5*t`oprKq9~Jyseg$E#wq~R~1hx zlVC#>Hdowy8Zol1yKr)xb+OP~2xBXLzsYl!wrB3wa-egB^6v>szTfb@3aT$*B*oVW zT>d-k3_{k6P!So$)B(}6Wd?lWqm^KVA_OFmfWQDnQgb}P%0McBuOW`Izuz}ejpWk2fg~`O@x_o+0U%7Ejsos&Q*@VVwC4;Tw zsf1!&j8w+5MI3`c)FB(Z58OO4o(dZ=(@v8=N7? z#AB&JjXX5@7-qaUPvqcXcrjqRY`?%4^m_g|G>XhGhg-7Y>@_rkA#;Xl@zBvGYzSb^ z4xRuX$0HvI@HG}t@2Gdk}sC66-&S(a_oTpFR$18)Mhk7z|u@N zE)@NwuCF6)k_zZ?2%!UVdY!Mx;7(VZG+P% z8-@CnV72BKfEDJ4De9+V53-vaoju@xDIf1v`KE@%ueQ|;GMstL)_xvjd|!YHhMDfq z-Dd{>&CyN$+C8?&9E0uPsSpWPKdqMbcK3XPjrPL9x?cD18ETX9kPOE^-fj(=t1xe6 zHai%R4Q92&1w#mO%8D?dFo6`QD6kC2$EGG3K+lG8dD&kZotW_0>PJ6$PkC6ywVD;f z`CS|92b!B5Q|GYluT4)+SoV`v02T%#%4!ALf7x|Bq)}?n&M^%uYw3{P?ZAj*V!7;+ ziZ!}f80kT>Y9AV3Z1?tbO5H?SY3xaBb?YDyu!y?A3#5Et83ERKabZypA3jv%@4PzN zw}MHx>#+m4SagiQbWa}991c2VFHft zBO7{I@WRJ1X#JUsPQ5k=SO6=01XcsJ z!Pm&R!y49Qjz?$1v0NC@aqpa22LU@Q2guDRNiMIgd880~( zw}L=4i-*@=|B{|PUC`&BKUK9F)AY=QYPGU9x7M_=z99@`$ilg7!BX~Y!fLgW7fF^b z5`rv%!~-sve!wWXldff#0Q2B-$y5RQd=Haplzfi6ZuSYYzXdqhx!Xwvw3AdUB{e%U zWp*jjK4d^>%NuJ!nVP%eV*;39CT+DAI>sy4uIl>r>w5I)k^bV(|3Zt)O}&0)MlWA} zN!dhFd2Gr3W)sR}Qyx;gW{rV|4V^tTBbk$I%czQ`k<3a1MOGvDSS$={Mjkk*==fMU zaKNY@qrn;^i41{!p-gx&)4B%b2uDbxi>?+7fk0v5bs3<-!;jUv?dhdml*e~={9uu3 zN9&{3I-o`k8nj_@;Oxq=PY?&%+t2IfA#i4xVSCJf|7uAf7`D^;{!=LHh_wIPYGC7sgsngTSWD-`CeEN752`x>G z0dFkX*CCS)6nMltqA}2KC`b-g9-d)m-9UOQPBRXuJd<|W5lf}j#xQTc>0qsmjCx^^ z%H%u)e)??QNs-=XWpxm+-@cIPbAz~1Y@^5$%Zmp_V2zBF9mqcRPr!?w7z7QNgPRLw znNomZF@Z=HNoV4koETHRKH^m`>{0~a5MblDq0T7t5+@?&#*ZE zOb_op)9mD^u3f&OBES>S=3;(_<4i$}(Om1I<>d>+|H6k)3(P^!2Li z8_@(n9>lbmU}2rfXB=&YPT<1~`$e!Cz8L;kpcfJp%@5g)V~H|>S*>-$5F$bNH;ibg zaW^(M>|MYI57yN9gcl(EJu6bLkeM|N*RUvQ51P0aGpuVxkY)gPTn2T6=-i-&9hL=F z`fjx>42+=i!qT!8!)dUgU>8z-wGR(euTSdI znDgktyoVzbV-<~!jTww>s*tbwp<0kx;|bdpVb{bd$|#Z~1>Tpw#Y*S3s&yk;V6oA) zNM$TSi0K@)D*?N*y6!Rq^XY|!g-{ZF<9w=bh*+oNH78@JrGqqw=c*=0`{3X+CXs)2D@O!AEsILf$WD?Ogz`e{mqdwB1$uRj~LV(vPC%_PT zNIKx*w5rYVu|Xo}FYv+ZpxzqRnFQ2}0sBRu4rZxl{nC-pjWZ&{;|k!4U2p=`X4r^O zj}r8J9id}Jg|Hfsw`45GJ+Pw8U<%=S79je->(!gCVbe7%2^64(1T6RF#ef|)UNl|Q z>Q5II^xg*_XlJisgA2^-QgN8Kb+ua!)ke?^7}FpB>7QFJhyVnzKR#Y@2}Z!8^n>Zh z(!#tlskE;x*w^vNNsZJ;eF8(c1hisc5{sT{kal8<0sfc7#(JGokHtr2Y}Cy!>wZ*& z&R)3WfCYMpbQTauaJBk=G{GM}HJd5L9pU<9D~3)?}TUsCgW)`bL{DcAr^0yI^X zQcR<@lGX4GbIcYrH8G>)xJqXeTEpZF5N= zxC|I{`UY*YFxcDmg&1z1hRxORSm$P7ozC~Vc{AQM=*;rpVGi3HE-4Ry6V!yWuR z88ygYhEW)lm?7{61#(uJyIb2?B@@j0B!^6$XT8XG%U%?`8f5ZyHhSRPiCZ@>?5 zYA}1{4{m~Jt8VY@*~5kPQWyr_WcFOvY3$S1j0! z$L!eXh>c8kw${CQV&QV>$_>pgEcf^|jYL zojK|q8%c&J2lLtUmtJy706`IwCJ6;)Or``6A3ap$)oJySMf5(N0>2m0=IXAxZ34FJ z5z5}~zDnhiJ5inj8XQa-$Xtgwfgc8Ia}=ZD^KisbGa|uG-O1>Mi2#Ai2R9~Anjs8g z5%hCR?Px7K5Sqgcv8&P1NnJR1Nd@M8J3E>jA9t{#=tl#GwGLnps2J38jIwyDnMTm? zFgYM#430@8{InARWMOJ+I(xF;a5*p>%W(0LGUxM)5}U)I^6C@(0n+y169%Iue%G)h zpxN?Fb+9V_VjRUWNTWlEu(s}6-vDvy`gGb07ke;xfe`ppE(dx6GBa$tC=GLkvrY5{3V6HwsHDeGznzz)#NLO)hA3uJqd-v}ta$`z;ngZ6F`E=G`lC{MR zwVRX#86~0+*IHko=NS|6hCI?zPnlfW$|tM4(s(JVsi_(7yr-w8JxE?zUNpv_)g-lV zDHe}9o1lNn5y6FHGjfFR!{M>8PZ+5c9Yi#Lz~5edyYhx%Ci3>sjl-x<2?Jz#2Hx(!!!Y!wlfs*h@A-EscZ} z3yQ#!@Mz7aSg4ul(&^B>fH*pKzZtphq{zo6_^V_#wGfvOW>EYwYe#p^; z%_ZWhmC*>udA1)<#!L>S$>wBj?4ln5e~w@UY8X+mm{zN~t4B|t>E4q)ojEt{@f8eX z9$pqqZn6ewwYPua7d^T}2=AxwexPfwyk^SO`sSL60JyYM5-`O>>=>~;xLu65c6J-a z>ylk>-@dKL#S!%x7N;qcA@N0ll5MHA&l8B$Bme{ihw*(%8(T?31A)(*oMO(hlN;;X z7Cr+mci3thDGvzd+}TsU5Upmz8J5{00R@5w6cSmTEeUERJG)y3c-Kd{I4S>3dYZT2 zdQ<05pL2#qchocu6rUMdA9h^qll94}WGMT<+C}=vUmxOO30#7f8;(=<*2b1IHvu~o zbfc^wcxe>Ku>A2#b}%vE>jV$$LgtCvTkF0_1SM#+Va@9LH=A(-H$3Kt0qZ&KK%SHL zF#r6yXW)Sf6KLcXPv$`xIHC{7WdyS4u2z<8d*fuCS~9CaJOEQ7W+Su0LJjcyKlp(j zK3!3DBn0d_#vLGEdVNjSM^r6yiZEM+79Q$pIA>d%yY>!a2G6m?HOI(gY_w`qI}5EW zZK_%ybN1if+6?!_>*s)!oS2;UsOy*i_OEGeb6e|3{*O&)d39ZhB-mO;fB?|hw#M9a zK~7~3yW2Q$*|@g0?)vr4ojZz5XVr%^noXpXqW+4;t=-y&k#+*s71Ol7wzgWz6~g?J z+OSyWhxT3ck55b}mCWhMljm-pcp3?Ez}`5SMA%Wo!W?k@nfoF-hbl;ftxV_8-R^#~ zp~gYOwXx~Sdk5Ox?%Vt6#u-I@wC)DK6aBSl zOqFU`ySp2fi?XUvBBhHjUA6Kzy$$6Ir2-?ZJGbwIfUU>X&u8JD#|?x4*^fKkNxP$? z!@jDOjK?k8JA1~wB+~#>PRy8uaSCS$aC1Ii*1fw=?R+>kn)i4NjBGLqLJ0#4C?a8? zPGC?Hz#tea1%{^OZm`gywj+DAkJLWIsuR%gh`#dH+g9&}EsH(?!)Nx=FhBS95uZR4 z6;A-{k^+W+%!6u)S+#>KX=vmy!!-}JxlUF%`hqn(q{`HN zdrQ?y(Lf)*PIesPb*qL!7JVItz!o=Z1FS&U3~_`9wl2R5-!caDd|%LW7!ADzvt?Gp zL+hmhnUWeBZLxr%NPPi&q;@6C;$ZXBci-3V|KWQ&eXgRHu3giUXV3NU@pFxi2Ax}^ z_h~R0>Z8^|or>cm9KRs7pY*toa&F7cIN&9~(k3-AHLX-O;}T-pR`F#mEH3HZg9lz% zplLRD`m|oUa#c^CJ=eucm$k9A?S~oh>b12MZS5f8B(G)(TIyUzaWGGUZ${eyECTk{ zt-FfUqUtkqMO-YKh?(q%>r|B5se9t43F04JEj1F7RWbenDk;bc;rfhDeWqw{uj3ISPyhUU!j;wqOJ+y~@R$TU%90I4+b@QSDhrZt^X0(`CArW;}K-sq}QNa^ce`9(ia zI27Vsf&?eRaJ%~f%F7%7I0I>FQja@Lc+`PHu)cR)5~&WpMrgK5mpz=N92u)X7XFPks2Z?0Hy zmPO&kGUw2`33})%;8goz3`hNn?iWXzGxQ+P2rjbeFu?c>#*>b|Hd52{^pv+;G?xL+ z7-p~pIVB5OlOPMT)eyiQbH&0YjK8N3pxz4rmau35f50koZDmy#E?jWXGWYaSVbFYe z(Exa7KbS>x3i5;CL6KoOQs%sZ(dP zw7BAzq~5f7gUV(M7*QwznsMrtEQ)FUv=2N}|A0gz+s8y@XE zez<9h&Z{?G(d^8$R+g5W(cXOXO=o$ahL4{-RlnQQ)Yz07I}LsO@u#kRCTC|=sDhsb z;e~E2jS+4zNh|PiBm-9Wk=$QGSMgXr%@ba&5CPY zBCT93rChYHe7~h!fd z(GA1E8oU6G;=zao>i)B*`}*>iujtan^X@GeQQp3JQwt08I)CB3HO>Iv&`{w+{MoHL zI(_!MCZ=aJGB&1Mwc?G}5c)YgH|J~3B80^RWyJ%e?(f|9RxP4fq94(*5@Zv&dr{o@ zsAc0y_l|Xbyrk&yzARuLkLf6ia4|(9u)c`8$L!C8zAA(M{rwZ;5OTSUhuna8$x@)v zAs3=qb^6q7I6k8h)vINHZFhGsn3(|*!E|kR&kldBgTAg`Kj&aAp$(8utFgChC6udI zuUM{=n&_Z$;4NLXjG|)F1M2ra{7`@X?k&}-ag9%oTU29mazZoHQ+_R#QbpxL#W-Dy z%ptzkJMk8;f%OtK=0Ir$C>`)X-e>0s2wi|G=CZ|rV;vg35wxa&2PFi?cr;F-rUld; zf_12kaD)Q+fW;eZKL-+!nrM`PEZ;@)YrcHRb9MrUO)K3pZLB~XOc0`oIPh8L#uP7%U7;xV|&*p09iI$ zEV_Kz*xnidqvVNGz$G9O-LUR38TQWI2QED$kyxr9we(h40h*w}d=%lZeqXPi9aA=T ztVHZY$GsEnv=~1j{1)>zBhnAjI;>)u1uo179jK97*!5F;ojx_E#?H1sACYBSm@!P6 zA~QKw^~Q)7W5?-s$7?zU;RG$%TvYV{($M@N%t3d~zj^8MC0)39!T*Nu#j!D$D_Yfr z&ClA#rhe}~{ecVqt?j0^JJKj(cC+I?8BWd4DW#;c>6}@faQ6}0W!ppDOX6GeYqpta%&p-1>>e{ud+TPvq@xH&;2qGRB>A_F4A8p4Y zEwVm~15Q!Tlk+*YFeWdi^taJ^g)baGit zfipq9W_5ML2(!EQ9(r{giN~{j=A==(nBa{Rjx0c~7}U&_<2pN8)8tsinQVS#({kfz z3vgrdY&v_=$Y|Bmg6H!aJ}xSipuk7AM&)CBV_oOZoVJ(h%Ho3IWkAh}xwt10j6j%g zu=^%pc_VOu7`a$*A`*4&iqS(Gd!f#u9bK+mx#A@RH4;Zur+sYvE{HPZZSceW@S~5k zw!UV-FxM1UG&llNo4qaWsbQnKw`j z)d$pUpH6Y0bRmGL*AvO`y=(~C;oCV8Ji~zg!X}ZLnPWaQRRD}yp0Nh-e9UuR9JYV{2B z?mc|$Wk)2L$lCHD5tie9H|_WuAQsv!l@|-?BnOlT3p4xG3sqh`~>DK zKBjqJJl3TAGR8kVc^p?WlM`0_KPb5n}+4voA5T@LUU^EGHWJbgTw zW20l%y(i;9DJRe|x&x*LW|Yy-*|X5I1sd>8N@M$ z@9lSwT=VVjcg*o`p9JsOqr-juAOG@qycFR6EU)7;5V2@m0Y{)*Lg`GfvIiEJf_*}* z9gFF;*Wb|VufL(&w{GcYpM0t(4-q4+~X$+hQ001BWNkl@Y&Z=o-gJ$^q(F%AZIgo_1H@?$*>{w+ucelKo@lBPY5vTh)cx34iU${HmTUZRbD5;-a5Z{emjENxx-MP5q7nS18Vzmk>;ydlMeK1Eh5N6F zo?^Jcuzz<~Gjp>#f9ayu)>mz71Z#Mo`sk#ullHOpcN&(3q%;D|lY^f|r%N+LQ$@hh zk;4VE05chy1^@~Ix(%onCKNR|2*KXCP5THaP7;J9m^rR3uc)ylT|8aU>u({Tj z#-{YZN|ah1lV}W@3ChF6KyoAtTj&@G`D!SsPC6|^K^x5@-g)2w)7BDTNT2e1j2qfVK!5$4e@mAyzvQjnU4r)Gk8RD#ES$I7 z*g4Ya)1zLlpp-~iRVbD8+0D=04}9yLZ!3~W=)+GwF@*5t*Ix7IY`)-!pXE>{nK7(2 z;4=<9f#Jc%GlD4rV=b&ZA3lEO6>%iS8p?I6RiOqH?f_0ss;hLbtJ7n7y>xa)rF>q` zmR5D^!GiXVpwE<4%f{@Y2Xm5ckMs|0jQu_!T|8;=AVs^Yn$N3NET~p2YHNK}^Ut5C zK3Wou2L=sXGyuTVMTpx{yDl#+SwH~|05&klcutLvIY>^BpFft)U$~^1GpBSCjc8+c z$8Xe5g=Fn!+vN?%E+@jnM~@6GeD#gj6-&o;<>kwI`t-5ZmsS-)N53CYYwtjfO`4sK zxkMb5h-jo(B_|W6g?Efe?OH@5z<_!>MqDn^Q#64LXxcjdTo-PT^$ysy2n5uzf9}Gw zdCg5s=*`z&)f;cTuG&b|laXd~-%8h%6#&%%tXr<90skrpfbba%N1;-6ARo8FDbZ?o z6-^h_IF9M*;+p=+Z~t4hA^Kr(J&7`Q+;u1hbb%Mp)yPQI(x(8a5m1>ubIz_n=Pq3G za)xpY<&}>={7^SP{ZvP2=3?A@(AQUg;T11BsPRE%kzwyYTGKba`MRp3qx$gEPwa$w z<@$Bw7}hYYJ9o}1IzSgOBcunQydVKkh5=*U+S&0*jcwJf+jsTo@pJb`ZVxzSshQ}O z>G^PWK7w}i7g)+h$3^`B@^1%!Xrtl zRr8vgp0VR(XB zDQ3z!U3~S5M#t;=<3IeaM$1)QIe$@~fApzZyA5j|u)JV4%lHIgjV=L$%x5;^#)~$! zaj>V+iE%rlJY9IMlSp4@E}Xag`ORCmHBuY(Nq|uF(??IW_-s+}NZd7eDWB2H*RQ&v zLQ4Ivjs&di;_w09<+7g@;P09^;I{t9SD=Xo=RYA$H&xa zp6DI7+!h*|`EH4&b@aXYVJ$n2sm~xKoAx36p>qvO`Gww5=vx3R0}NyJ}^#v`gtmX*u~$RkH$fXkx19RT8B ziO~ljV9BgOIzAxNfDj_`hL-_ND2))c<=#PCfA;RD`u+#cMO#FMEg{}k%&3nPeoUI3 zEEo^FzumCIWwubz`OBAGpFdq#bRR<9PJr>C{@x${G$_QB7+F@0OXf8_ef-p?1GCf3 zon1}M%<9^W8!lDAG?Z#JPYqgaP+BS1wqB!HeB?yQ6gb?VhBH70S*>SlXWLEJv*!zL zxcE$86DbrkeJnNm$9)x2Q57@DV^#tv`1n{0i>s!4k0hmZM0)+TOLn0C%bWLgc-&JO zE6!rUD^-GSztvZz5OY`C+~4;No*ElH)1A3r@fktm&RUe5mn4-ct&W=c(CgjZTgms>mu8jRoen1nj}?f%2K0 zin*d<{aBctf^sSqba-;C`uM0P2Z+qI+D)sQ%*;)D-HHqk{;Lkyd`^>KWFZB(G13P>zg`icC@#-tLFB;BHf5`$*dowUZkg3KB5GwD+B!lMpmpy z12vk3gY41EDHE6rEM+hsNqX15y}z%m-5t+O&4B2%wYs*U_ddO)rJa`UFE(@x)dq7t z%$M`hsfnsGshFC3d%AS?qOM=Pu7kstVTV{orNKJ)``T+Xyey#U-B@dCY&56U<)+v3 zUw`wQ;gsz85iwp_-B-1q(|3O5S9R^iD_#);O5y>a6tH`Y#ihYb;L!$p57R#?y09=B ztN?uPP#xOb-qzD+3tk*7Ew34>7|CSPeZVKtlVfEQQJtD#FI?7syKNc7)y=jiG;@_C zHrcvy^_+60iavSp%=ON3yBV6}cwGC906m)+E%65 zt7Vuj!uGHk=6f(`d~KwNcgyi7f1d9v%vT9nGZVYJw{ngu4UP?wQjp<&#U_n zAL%5X)y{EDcOK1aX?<6dBY9muGoz!{o@d9GFI>=n`}h979zD3Pk3ad?m;lCgPoF;V zm<@0buK_6K3DTpzzLplZjles7YQ_V8n$U+&p8LIEtntR%Uv@(WCyNZtWQ5q@p77qN z(J5)Tzu;mKVU9!-Ay^0A6Cq%?y*PmC%~%Ue0bpv0p#w=+tCQk!Vkw`wgw` z9BRK4^hw9F5v5N0IyYUn7wE00i`r>YA)RP@n^|haydUPJlo)9c_z1$;3^}WjO3}Ut zP+Qn=u@yo;NtwI~WhgU!?QCsm)xhXoQ-N_=%oR&^6FE^_m#*GWZEQ+Yb7xf@8Pn#{ zyuSN8|3rx{-m%yir7aa%AFFF~XDf)q+0YGX_m(^V-rAcFhq9Ju`ZMdjgja^-S z`I_=06|L@UsWvrkkPm^3Zb6`42Y*|-YnT$jy*zBG7`dUb+t}VR>lYJf6d?&#R<*3C zL6kw8w^b@=xLjJrk)rkv*z|OLBZIC%ELci`+=2nofrb;<5+0uo%|n_2;kMUmOKI#d zIla1CUtQFbhYz&Z>S*HJ6`g(QWj%QETz~qfKTtB(_af(wH{R6iufC#_*1orp-~H|% zSt*&b$y1c5#4<85erlKw(<~P=sdcGE6vqf!?R3sV%rT-rR%PIP7-eax3gO*O8KC4JNmG3hy z>YsGnNxpvltQrS9dbqf)1`ieK6W73=Gzw208O#f3^>}4dn~jD^aQkg(q!c&Do@IFh zZqMwM#EuQism@2=*wlI8is1t=$84 zkPYodR7mDjNM$ryMtUcq=gW)QZ0zab{Bvy{?Cb5Xe@)k3dsW#=*A4=?{aknM-qp;7 zt9t8e-_pqBthNztV+z5jYtEWtDVgt$<9)s(^G4=srDW=c2Sj*8I@9G z|0+9b9Y>_?gMBTqJI5@JjGD=)b#&|vP_bHJLv*#|^iwm4=sXD4y zDyw$qP?dZ_F&*irKm4H{-o2yek00vwS8tdt^5oGYt*@=w8kDWx{_dgj*|_@*8sT=o zuS;*dsoK<(mpznNU|CU{;Q_ahGut);;gfEhd1HZ5+fh1|)!`uzDDITO-+^raI1-lx zo1uoidF!5?abPS&lJP{J0X4@Q%?scSYeV(=&V12$+GM+QgppKV6NR|q{jScRJ)_S) zf1+$rs?{9abjaL*&X02bkyR#u|jqHqg1Ut8<<5oxQ#-5J%4>ek>YqVNdsT>+jplxIZ)}BcF z(9DFH;Fd>swz$uPu?)=^3gD$eu+k(`!m1b@8&xh3bK*#=>#Gh{%!R>}j!#W`UTe8` zj8MQO3^Z$o1V(N!fohYGE^F?<+9gO2_7A=Qf^&NhyGN={PAgZRQDtIAv1D2sYpdE` zUC_->Khnn^ysuyV)nC)q8?Ot2`xARbIIU8#<-k?F~)Lp3>{z_>NAZ3@k&bLZI4D%iG4l{O~AlFa;P6 z18nTb*@yiA^nAnHuucj#_1ilQH(HM$FX-;QM~cPMI(zN{qp^q|1{*63)Kh@K**gjr zEDZ&2*MK@sIvTGO6z?7B>cz8K!QQBp(=Ohwjkb38&?%M1%L$#I9#=V&P$i$S1IRI} z+H%D+Ip%N#5!y_+DKhWOXH%Z-@$jG(nlD#%)Q@Yc+0m25bxoc=uWxv-p2_&{i zBv`ihj&#)6&>#KFf2_@C4>Vb;`eI#s<#mHu_V>0tzl2?ioa14KMzNzF0Fzcn-F@c5 z!3mo`Ly9;@G2@(}<`(~-%r+E?Gb^{#aloM+z*fsTu++WGMh{q%?t8P7K_IwVR-P#Y zOA}z4JVZww6<9zFoM(pMYyx$N4;|8MhFmk#O9og1HfwCvDihPn)~A%KO)8Sg8Z$vz zu(tS2i%%YD;n{P2{hROTYv25~o-eLRk%Z1)xU7SAO9#g->pbi&Eo<@N18uLaTJic3 zh^+$Ve6s~AID1N48!Kw;ZRzDV-qO_h>pF=Bv*=;TGSmnoP+#P+d7L$j z*f85tGy+whfF&b?A!vCzg|FMv@`fHgn%9Ge&lFFhTkMiReMUE+s0dgtMlkY1yNPjj z)SY{RX1I5(u}VQF?E_u8a7Mk}u@+XBw6@W)M*-mPLN=!HN=f6TtWr9$kr+3-Hag~M zz|Q`@n;fJ5q07K<9XJabYl+usHm`J{tW2@0GZ(MwFF*R39z9#sfB!%HkCw!-QwwX$ zLf(?;BZZ7U|IzpLpZ?9iQoWE`{pQcvwq)*1Ca4RJ zj{3rrWqIfjbl_rx5QFl~xDPxl3NknfIxCYQy!pwgTCb@(!T>$xNrPoSsf(>;3k#ME z6W9p^A`gRQ=U))^AOQFpe>WsH4uhAUQ64F)FfyuSdE6lFULtGY^OJ}7oe_1?ajpFq zKl-U2KYp%P-}sWg{Pr)ZT&_AhZyjv8>7=y;P<|%p02LFo+)T1MqxZx~$1GSSGHSF>)Qe}8F4iNE0OuG6gpx=X+!(N)trgPx_y7F2^!T&)6+dd|{Mk9vkFjy;_9G_ub?N>O z+d=EL2kA0tA|xL}`gfqIv#zhEmH{tHdNNhuf#4<=sw3L#MwPEmI?EDB=!tq$K~~9 z?e6bra$;1!`5V7(^SKY+f8T6om;=?ZF+~8Q!22IGTz+$Z!^i(yhV?4jj@>{E_ucG5 zjbY1r=gwno?;NOBpU{~z=a_z{DF`uya!|0r3H@E@;^2t$qR1u|Y=GK<2wC^oWdvxV zlOsGtV;UME2noTE_jP{jH#k9Syuxz|=rUvYTWs|`r_Hhl)En#RMWJ8Am1YL!I;cG)@n&GSz#w}Jp z0FkL_t=;84f7%*i499&H2lXAF16V#}TmBHRAms=~tGNsemM#7^kk=e$eos%(>&gX5 zBYw|8tD#b@uH~Hrji0`#NVcr@NyGwhOf___Wqg%Q-GpTpp`L+()2RiDutxNEwH(&ES7OFM-{L)BW=~CH1s4wI||As*2Jq$no za~U>{|JMrvyMNGdk3+yhCnsPV`)!SlPwNzm1I1Gmu9gxa%7cL!cm4d@ zg9r+t-19aE!eJ&J(MUP3iCRe$)uN`yM?HH5;s*wjZIIWP9q^^|YBu%^`sQb$rH``R z$nuGy;-+{vv0X|X~ONC5p!;XPyGeI^i7ls#} zn-EF>Oh1t1fxZ$X>w`;7&zTiOmBA`d%%cGu1UNe=bO-w-j$?p4WYz%A4mWr>2^gv= z+C!lgB$=qMX$<*UyL($IkJR;SWmBgvT~jnyQAcq-o?kRr9K;+ypV>B8*sYCC^WQ-E zql>n>wW`1P;h*cnpS-V)rFFG?(m(i(U(@Uv76Ch+2p|^1#*Q_4tv;>{3YEpO0W!qP za4h%N1CsXW$1cH`_K@Xdu?fVv|!)xE6 z_2{8NSr-x>R+inKHk%!9wI1I3P(S+Ke^7h?+ z`r!*+v7ymnZ$Av$p|949$J+4k;C8Ww^gPi*b3s1n=N3sADAQQ6BnhoaRP)atw>(X001BWNklKG{J;21ms0#=!f==ROe_1pjGx3s>vA^0b?k%Hd&&bO7yB(${rTyMYq zR$y(k+N#vY)Jvqak31%)FNy2_$AG2j`fCB3`XXRi5Da~$p(9hxvT`F}*-ClVb#m;$ z=E+LOdaCCV8mktJ#6n16dS=F$$Vfb;y@NwlM@B973rc-!eNBf4`zmC!R_88NM|7x| zmN&L_<@(E31}T)PW=jHm!Ix=#eAL)fZs6Io=QJ@r9k^#y+5kpqkeV&6?(J)JeMKL< z`xpA&@Bgk2w|4Z})mh!Rc1;y*bx^r37L`k~Og0v(miy-@tT@DQE#}~8c@R)W+ z9AwvFK!$(~ww!#;?vEDK2z9Ur=>wnUkX=LAhc#<(=7yIx6fE{ib}-(uQ{zB_o-$zQ zeq)81fn+Gn8_Wc&nu8fuRQtz$C5u&^B(hrF+Vj}Y1|#^Rp=WSRd6sl3L%^oeF|98z z>9_y4-_pI$?|LqdXz^FR`nINKC$+J)rf+=X8^#YTF0ZLPGOARer~}k&5Cb_r`u`NL zFD?#x0DnM$zkPa(znWpc2-wj{O-;`R<(J@!8p41hKO9RtxX&OBMDN06c9;n?s(Bp*#-Mn{OpMLt0 zKKbZf9c(u>UXAG2f9W01hDVAejaI9EjqIwA?UIvIuTR|=Mp_;v4b`rPwd4zp&tDZ{ z3-oO!Cx9;a&11 zeeJbZ#bfoiFMjhzkLx_1X_+uJxiqEBrZ zHa+n1XD?$i96-$PLs0B61EbSLCjdU*Fu|Nh+nI+a;As7+t!5t|ytF^7wGPt1iP47I z@@U-?uYDG;ng~X5o>aTC{UE)LrW|dG7}W~%VOR)F;zqbIA6^zLSH>D@@CXOyO=l4D zJK1mCN@YqFR5}Bgy&>qV4(uPDNE9a3AMAa_{I1m%TwJ9@Hlgdbaq!>){_t!626m$! z;h-PcVh-ce6Nt}DV|nGGpds{YwK+X7I~u^b0ireFp9-GC)7*PWL+BL4ACskaU;hOf}AAS?~M)7Nr(~&NW52syUu+sR@>Z=gqaNIg2?E*;vH5{gF&eC>bxU*WY`FcFL5 z!PXvN0_M&w;_|c43wfS|6w1SSYxab^0%@=QsRgUST9lh>C+x{-=3&7S*764;g6HdW zWb}?OfkzL3*2yY;znFot6`*yd!+?0uCj}dzT|9IT3zlFxbv)F!5A>8qsH>K?^K@BZ zv6yXM7;HY+{4uzFLBV6W@88|t6j=?)&Npt{z%$RkfK(<&k-wNOaNQ}MP2D!y^(yRE z6MFS3z36dzxPwGu3&~6h_eo1k919j1a5*vQG2`5L6cc`rm|l2%VR(H(*+$Wwn`=nk zX)HGF*f658_;ezD}`{9E1`a+0AV?<@NoIUNuR`8WNWp&bL5fz~7fTwHNYsYxl zk7&>fACs6Fd~0Ixu~D`+Vpnc7q1`7Dqzi}Bg+L%EV1GCohtBLoqpL&DK>HsjjC$G` z=}^dLr5&-6#m~r`gF|s~IkS9Gk%Ox>A+yj{GM7FUx4u?6k50LO%y9zA#4h$J4LQ!> zAe~2z1P=`Gi8sz_SewAEU$@6MIRpsQ<( zAOJU7Y9CC?A|4(p1C`Hq#A`*!=Mf+?x z&zFNE{?Y;Kzq!e{UB%JA3%#r#~;G7zWspgJ970Q7vYn z>( zMJo!}p-y}gn2)AmuH0U^-O8GtGl3+~j1UHO(yG@>ex0om+53z;YBdBGr~E|EjDVp5 zwSf**X2Ke+=o>BQ(7VGbB!r zvGHk~UAc%rbX?+4E0iGhda(OK;ugat0_~;vAkl$_4+E7FTzhMa1$iAv)Rv!BUvJcz zFzBoGH~VWIOf-k1zZ&H+~$Ixg&hbL`!h>p=FFc*o|jEUl~H;{s5_Jkc4 zgH8(e-+%p&@WP8PAvPWt1HHYi4On#@*llKcKPf)-kBuu|UmZ#AEe!Y?GNqCvDXyAH zh=xuwbZLRgp->epYeN;ReDGA_fu%Ex6kZi9mAX|i^-G?dinM!Ub6dP(S+F$V(AllV zp~4t>R*%|%(S&T^Q_vs6O?#k72$QiWd~Ule4M?gW`Ix=~l94K8k0Fc}tB@neA7I`R zuX72`HCaSm%CHEzI!161zaheAq%o#bDU5|9;_O0$2C6klUSSlD!{e7ewoxge->Rb5 zC?a>VFF$jskjj*B>;5LL-`~PfrXZc;xYvc{cnD{wBbc5bfkq7=2Au_72UP)H7_DX@ zUrSi?D3+ctq;`sFr#}noaac=ESe*fefl7AKidCFh$a<5$R*ZDzL}j!OkpccU{cv-+ ztSAT!dS(cyuxLdh_lgjZ#i{khEO5n1_~n8XxRJC;`C7;vBeAEcu2>2HEp}8$ST|VE z)2oj@BUlMnj*{)!@>vZ!w2N8%#h?C(Y!YAp@|PtG;TJ!96Bb=ph)rCrv)C;zk9fES z{4SMLGc1Pz%XW ze`zSIJib^wVQEJ+GchjQN}3Nlt!AL#5%(2d=j^K_y4`9Mn8fCEAsC9l7Ys|m`XsY} z-w>A&96tD@skm|}3UM}3CUU$=sFtM-Q6--jMix1&!AMjQXz1QoDPhpAp;gKveY}TO zwIF^71j%pS+r)eK)^Sp($In~H(;tbdtt?$B?p8HlFrb8_Q0SD zm+b+~*Yvdflq*yu{+50RKmGBK#R&R$|BHVnHb`&1@nd9?dm=lcDIUp2O%93u9^5V~ z{Gl)mHV-;<80H{I<{M4;=*2o@yJwR2?jIKH5CaBRj853c3zlAFj~6VhHtChd2ZlYf z&S)~pEhxi=s5Ys4YD=+_+(PB+%JLcE2+&fV5Ed1#?M7X|Z?nxVaW|v^(yoSmjL#pG zUBA&xLo~X=a22RdQ8D%9J22X>6BZKYy_om*Mc2WAbUMf@(2EwUT`i)P zKSe%$j7F^_Y%lT;u0PnowFjFxEi~j3nh4l%VLXDxSP*j)L2*l@2(Mn}1IJ7Ny-1^J zqAQuSqk&6YRfau#dJ`e85!`r3zMib2LnwS|u{FlF1|N?re+qD?PQy zLgSD{iy)fn@pR=0FTF0WcQWUw-6w_bVGqlb=+WAk5_Qm4Q=GS%_Na=M#&I2TYMGMF z)}T8;qeDTd5nYP|1FHi)Ms@RKMh~rO2|;?5r8D@qzyAlKiTmQ~U&1?Aet}!>y#tTK zj}ifX0H{%yD6))0@oF67VmuNhT1?{k_d(6a$R8=_xFqT}069LXSm6@gT3c zW<#)2i_*PbLylyyO8iiUrgPS=0+@G^%BEx-I0(Wt`?KxOVRWZfxx!OMN4w*1^Ye{(yG3HDlQX2+{5@-R95L?QBV4#=+S6A*M{8}6;%jT%K1`B3f643p9YdbSx5q!|RHD5>HJ&9sE#AO64W1`Y&E*O4G!4 zf=bnVA&0TCi12gSD~AJq>~3zrK;MFX7sb;PbZTYvn{|QPmJI!?-v*iTQDo#)slDK&7UEW}@Ap=&z{kV=CJg?Yy5SW_5i1*^z$YI&iC zy?;1#Nq{nCKJ+bM2sAxuW!>79!-f6`LrF}eYIrDNDlFKJ!Gbyo?R~CWPtfkDn}l4A zwFjGc>&HKZ-|0pA=vcTP%jeFD+$WpQi4@4rxkU#d!!!m4_@i-5&&`PoOpgbYiKjZP zme@A2T~g?@pwgpa_J}9!;{{8bBDNS56R=0t=`Hpl$DuB zasrF7_MArPVbE&SWWy7mnua?{?yA~#b7CcL*1*0_!qb$Pk>R?EA*6tB zK_NygCffR#BuTn2_CkeX9!pCL@&wZslBmS~)&`7&E{4qpvdM(366xth47J{EBbm)% zH*tbr+`NrjyIC+MgzshCufw@W7*8)PU|}LAz6VvVh^=-wtPIo8%f^ZRrkvPWL<~cg z5I2JAB#n&r_m9&IwY8~0U?cMjZ9Bz+Z*LaV1=qULRJKWCD)iO3U4&-_C+7Y4H{vyzOdui`-^c6x0XgL z+AyHf>Z0ChqfpMnWaE-She#}rNN5cI>CgTO>o-=R?~+>rJaPF61Y!{!CKK4(-4ShH z#N`$fxuaYO1%6CAd zH3qWlRr1I~jF&VwA%Gi%8>1#C*(XV&6(5iLOY?>4A_tNuZibqgySZNB2FZN|Ptc z#6BavqxNu`E8)$n?_=$_4!xZL7{E-#j4!_Y62dkse2fXFZ99$DhB`PbYPU{cpE@EA zc%0hVSMt}nVG=&>Xa)K>153^e;RP$U6$3N)|0%C#p>kNG=Ph$;sXdd;R<|Rci=UH7 zfTY%NQ^h=n5lc()36#UOAOfTOF7=wJmP1+v%}bT1?vSsqL2z$_(V{3!LL?_tMhC>6 z_?8Lo%QxIWPcJGJ+BnH%5T6=HrPs!-?M-a%AK=xGzXre6jURvWdq{2_$gSy*gt73% zGLBM7948VmaMmbPFgZSjOs$4Ai?q|mmwxNFFf^J`Z8W7ND8 zG|Yk};Lbjbtgvpqf)a8WWi_416V1T1y4$T2@~lkx5P1(jD{zy zDptj(ee^Lh|7B{8p7Bw9$jw3|5yJg|odWr)OurdO9xz{1^|rG(%xEm^S!w@sQT>l=g7iOk7J3T@q5nm{J8t_dNOC5!;Dzb*k zGnKRfDoeF%kOpDIMK#wxl0J-jF_@sKhKW6AF^hUWg&xBI+I4|ohyn9WsgS9KKDG`M zxPId2R0nWzkoiv#*3zqGG29ptM)j)U+ zYK3mqIC(Ks|d5L$3*k)hrJW|LrPm8M_UARMI!{K@`H9S$qfhy~$Qgqbmwj)0ZNZ*Uafu99p^Vm7V5*nY|-ojCPXpbmi+p zw;Bzx(1tFpCD0ZX3@MQs;I>T~SYDla^a&U8lr|Yqr=XDQVCE)tx^hF&z?!)C8$Z8- zbI(2t$J7Ljl#Sc0_|~8O2k1%-G>UbY?Oqrh4rH1&@y?}_x~|nj<)nl><3+PcxC0)# zv0&%u2rqr&6PTJ`ltYYz5{ppn{6_<%e6gc7s$B7pT7qA7!v2GnfLsFdmU+l{Tvm*Q z!V61`?cbV?~0`YkC~eoj&sYyB?v3#TYIo3NQ& zI6O!SCzMy=_Rbo<{Q1uyv$xOCCxK4L9Uys`1!y;#;I`XDLGieBg+=)|_f>+yoshB1u< zuIa+GzSeGIwy)wbKO~ItswF*>?*r|c>Lk4|+pHx-845&c+0VR(-Gd{fYYkj@`DGMa z4gCAB|1qq313HBYKJl?nqS72dZ*{=paSD+>cXEm$qcGc?11#9tUS)O^T!8=%PEWD? za@@Yu5AO(8KL^Vj>>H^u##gV`GR#Ba%AE z>x)utrn(RdV>3-}0dBSg&Jna?)PD(}$XcWok7@~M5iVOTnx2g!*?AIc`wym+&|RA7 z1bLz4i1Os&6UnXC>Ha26{RW2hJaoOLm<977Y4*4y*JJHuR~!a2i7aduha{8`tZ#R! z=rwC79-p97=em+9;%bS(-qCI}O2HDZb}_Y6 zcn8j(BKv44gNC(g!a^3O))Hva@?TZ3{Cmu8P`4~&H5Gg$ zr|+m}Sv2KpO|1NxY0K7trzkH~_Um_7*Cago!V4ckzFNV--j+z}^}PYkoLxbxP{;kv zU0LkNd)?_`Dn5-~*C6(y-9`pGJL{-0{ifH$!paI3mRH0|RkU}~@{HO7P4Yb&B8Ao| zhHz@=`v29#nspdPB7RIyPGBM)7f;i0FeoW`4e&T`KtlzzU(-%q{>4_e35Ln>hgRq`c8*5J5DGH)mfi#8 z5-|SM_>eZplbrvS_-uX1w?M-zS##QH{csSIHLb>7Ady`e<1u|vZy?`*zpqpy3aMe( z9}Bi2cqSQRMzcXs3t4HOrs47ik*hT&6ZZ1u6}m!hZX!Y3!5N07y zQYD9|FN~yc^`xmaut7E#jM|}%j$xoYu1K}>dc1Po9v|+)V+A_pG^&{+nDqnr{9c@9 zbGUN-7VhtEnX*x41VlKrd8<&lR<NN+@` zTtmIlmLW(G3;NR5$=n|Y9RL6z07*naR5?wdMq^><;q!%r+pv274)zjzu(%zVJ97>f zFF%hLU-=|TiBoXhV)yuP`|1Z+UE380pic1^`OFFKZ*608VF9tZdBkRBP-a#d2~ToL zsg^)-+12SUOC$}h42GHq;k{qJ?J=J50w`sS5N$poAZ~tmE3g$Hsaq4#X(uWBN*TUJ!;q|# zN1_z$JYixU7-wM`>jPz4|`L`aT3Nj6=heLW|A|gZO4#NmhSqJlz8}%x2 zk)|GOuLwvH1~cd|P|k7kfOD$Sf$sw!7Pcik(P%EGNcXCx83?pU$3hxw&={B`ZYHHC z^BL5PT^t-8;>o3DA_yK7MIV%ZgIc@6JB}tC5%nYVOXgPLFU$-`_d8= z5<58D--RbKhUnA`0uz(4d3~}jrwa}rP_}m@sq0wqHm9t{IigUf#x*bNgb*j8O@^Tm zk7qs?a~ig{4-{0V;|d(mjk|Tjix)3RJ{C_0_NKhP_#}{Z#jA}PDB4`o`9oom>M0TF zx9|eEX60H?k&QW$>kM4?vM1DyHZLu~Hv3K@HLenyJ0O;DRjhC{%? z%mtogWTcG*e_RWTvGRz^%D11diVR)yLAPkLoVXMY3Xy%(!tmr}A+SdjmYU55pVuex zmHclFj?z}H54i#(Nw^TOi8Bugtqox4se)yu!hj0{l3d8ufTAzb=AFOC5D`IMSl|O? zS1B@cp7J8o62++aREYzP2rY-Q?qr59SF|izVx5(43&))T#^O=z+`Nlgu>_;j2D9G{ zW59!n=_weAOw~JhVrd2QGYhadTZiLO^_2brSb!*69!nhLC4u661?F{1L_h6b*Ld+9L)_DGOJwPKQ&jb#3a`1}fEOssTeI&j@#goC&)3 z3Ai#URwn$3qY4X_)=@lR4RX4&Xde|U|Co8SIAHP0nW~&@h{7_?zDXBxn{1y7rHTYl zSL;obN)@z*eH<1}Wzmt|I}~?9z1<9F$dA6wC<4;U=T=Zo>?VCAwCtyQf;j&gA94_F_B2JHfWaSmuo z!4?Jk)(UoGi<>T0u<|+1PX>l(&z=>fs!VDfCR%p{8K7|i3BBA2vuN24u*hhgF1RWO zDJ}$Pv@!ah-1}tQ_mu^ZOuh=OgignVKi&{DO;&wkv)&Sxy~SZhxmtkF=R~VsK{=ll zF9Rme(29|2%5*j*55y7Op$&R0%+3oZAe+sjP%Xnmsf*2m_dj?K*WP~*1Ci;VJ=Vhf`25VY1oTdnfgQ5&cMOv91-mS2xieemlsX|Lz zI!v(GjO6AJqL%`gMi7O-Gnd-nWrc6L^-eC;XVNy-AH z?>}QS8CFcM05-~!3Ni|Zpy04iCuzQ@qO_AySwU2N4jVm?$4cm8I5f(3iYq(86nG6& zHZJg37j`!bx{cKF9^U!s8*my-xNvqE$wX4pPue^HjXF5pcCqKNGY8k^fUZmLt(HV~ zny7-+5An{`E4aV9igRZc@ta?KUDOMD4pL|BZWd+Xmtz4?0z$mD0 zUmPMEohJMfQTXB^7@Ss|Up@yzcL05Fi1hJ^NSJ=~lQ+e3bLGNCeBn#K1y>+0+rzDm zRhUgW9PV%9_RU*3f9@gz-Utp3(tI2--@N23OFpzG3|U4znIR>zim++OS(4lJm;Vj<`yf^2lW~h=hZJ z1~|+X3_ES~TW!hEBJRsrAsV%jbE_4s797DZR6_~azmoMY1=}N$q#-|x=F6g-1W8FG zmqIBwnBT?LM@{_f+qM2xJ6W|8S4qJ~soEnFJ>OJ0VMo|7{lMhUvtUPs`*^{!*dBU; zX~x2QSVl4@9u7n!j25#bWIxzg7yngm=Bniy#)2^!ba@r)EJh5i2Iy=iJo&=Y;-8R8 z9%E{JLJp3tt!> z=nah`BsEwpsJClqGgr+@q=*|gQc=k((Tj|TN$ZtrRmd;f+xxh8e^d3Za_9lN-~ZqL zr=c*1#7#xvqf`)hJU)3tNUT<5YxZtB;cs%|B`zd8Zr`|p7oK@WWi(KLNP8mTYSJr=t6A!yM&#+y zK*eE;C#>MEqe9Y#Eg@)B=XD zhrolhIvUv>as4YN^avi5la|onsNd%IpbR}!3&C5CJ-W8sV6RPFoQs3QnFp;w2NtIlpZfe~BodTA0^zVEdf!>Shwpyx`2|;{5#7br;`9Kf(2K@Y*oLewU_OYWWP97${l@EJwWyQkx zfh`X|_|S1Kp%i>~Zx{FO-$%V!mpD?I*2O1hP;U<SMGNE=uQn+>IY}dPIo*m2+vy2hAy=cxgjTaIHahHS31ykhdZg3GC>Qe> zpB$Gkw??yu-OV+G0&e{DtskM=YvMGM!dN_p$*CE{$0j6Ze)WUfNNgX%Wws$22uTcl zARfVf@=%~9r`sjwWrS%6jKB5PPh>$sM%dF&ToR4^R4j&kI*U5B^OW6)m~b?`KjfKe zTusQ9N=QFOp6p)PUa?@szqQ>KQnq%gKE9fjHSUOOFA9bcuU0JqRIaQ#Q6D7$YMfgZ zt+pcO)y~_G)I>3d8$DD!CFxfRy|jplu^%OewhL|8TGnUSK4y#S1K@SPqqxG@oE+|p&Rx3Pi zH#}~SK!1ExHUCx??c+V_hp&FI?9~Nq zF^6l{8(3LbLcs1qDw&kDbV6x8vk?ZHT_UT<$3U0CEIxF(h-fxYYgf_fwb5$SF&2qP ze=o`17BeE_W3alN5;T45?j3P;VNLM$BaP9hw;-RRiwp!Qnp>C?6TmB1-Vq{b#NRj{f6X*V=thdt!Aio95n@+8lS{|J4x_{Ip= zRA)e^!<0Xhs9&8nBMR9h(#buP3n|gLvyc;~$JjVdh&xOrR}hXSHSaf9ZzD1_CO-S+ zasj43FyReh_s#}-l@451H}2otgwbX}XgZ2eJR%C$YQ2WB*qG$a8qG#{d~RI3eof_c z^}6`ftFI!JI6|{pgVksjnw^=DoaUi5Iuo@`7W+zaSb4gUV#xuL*R13bj0oNmurb<+ zYlW*7o(5}a#F&RIhlHLGUuC90UPdE2)cu=CyyOC) z4X4enxDouj^mia9WAqU5VLwf$@YA3DOkSJ$rA6`AC2X{G?kpPZ4y-O8Lg6t~izS?y zUqm^ZlUL#J=txDGQsoQkSC$?U?7n|I`J`N&Hz3ZM9E|K|5) zc7L$8g<@?Jx^jyp-U4D?Oilo=ev=Y_@v0e-uw}a?dtfy{iKV2G z)|D()HGC+FAmFsyQLmH`j|OnGzlr^wHFO&l$wOtKtnX}LdgYvabK7g1NS~xJH8qWF zA%{RLgi@s-@%6n%6Z%F6h2snwg*xusypMYa8C+goz(+p$GAwora=DyfyKx#G>jsiE zI6fJdaJQfQMI`obH`OO@>4K{SSYDt(|Q#nWlH|%=|nG<&xy( zQrS8?y#SL@t|-*p_xcEZIjsu_HRAv>PK<)*}_H{3U^#v~{d7 z-FUw7fv1v|UWXIoM7R?G6J!vATy0(4aQOj z-P00o{^SZi`t*z9fA!}3ZzFth3NQTHM{#cDy!dhPYv%g=`1DlTNxv^3!>7oi^agm{ zUU{!rz-({k=H}oF_>f2(%54~rkK@+uyRtA~3gY_4E*dP@4!J2t=)V0I|F6JWZi&&c z$#pJf7ql&sK9w3M+UY1>t2F(Zr$2ivt~^PqMF-7R74=$4+Jty4E`__dw}V@^uhSI^ zKEDU8W=mFi~tZHJNd+y#qgue0x2lQ>XF`bFWA8 z2K#I3e`4b?HJNw2veM()Z+d156El<0ne;eF9->mM;0J&AJwXY^0zo{nydo_KL)7>U z@&)CI%A3Yvvnx);h*iZR)>H@_B6;evz(q>aRDJrxf|Xn7m!m6%*ewh;g~w_>U2-rG z5wMvtppMPR4xTzCH5Af0m<5FyNX${8 zkOLiO(wP))+`Nf9cUSR+*S{ndQhd{Ca7^1Mv)+t;g&boW1|}WutUrK%ECie1jf*cl zjdU?Dg}A%Afe*g_7J8`?EX^S-MhjBq0+ye-gr{G9js|To*&Nu|-i6!imy?`f*k&^a z@|qA_xJAoma|i|^2uETV4D~4F3qqhLr^9Bq;l|DD@*th2GT7MMMLJ!;jhpwRCFu2( zSF!HL-~GmrZ;;)=OjQ*U#>If31!QB1XpIGHeps+dqD^B9BLYqbTJ;jLxg?H{_awx@ z;~^h3DhkpE8xL^l@6oU9Q~lE+w_ zp2hs+v=~9Kw>>&OQkbC6C$a1l6q3T1rP{StlQ)>!|HxPr@rju9e%V4+;@QiU60W@c zb8-0_w%YP}*%k!cUOCCc+lmR@Hk%ZrQ2j>G6NfGqH4BUd%a(yBu7nqlGPaaF=@D1p zAz$_}NJ}eN)k>&8-zTJ}>!W2DO3_+vHn?qeS!8o?;th11&mfb}AsUWger8s*X=K1n z%+I1$uAz~wqE)KFNbOd=f`H$H$MI}Or z!PK2v69LfNw zHx#^gckcjy^^NafV{;EXJ1GfJ;j2bTxbDhZKU65eh-N1*D4YG!c8ifm28s;HxEc9K zDMt@8EP6fMW+M)E*Ra38j%KS2one6ZL|k^q-~0ae(d;(ymEZjeE?i#5)eqjs=FSc_ zcMg%u*YMR}{|!V9TmT%x8;fA~=up%Q-}&};@Y+isgP+D@!H{Id#wOxuwwpLkCd4O! za1>uCM*EO>OqAg1r=P~`^t9lEbO&VQd!bgw&))u-OreSWeVmz@h0o>x>9Q;^LCNSIoc@@QHGR_MIk&7oo8UiMHR| z+``=K6zm}{O359VZ8{`Rk8thg2e@$QG8Pt>gGgnAu?Y!3T-hnQbn#>~PQaSdVP%QYS= z-A$~u*M{BLN3D{&?1`*K+nqj|?IEV;=H-<0hdnqv*}~4@CL*ygHn;a+wR)g$ z0nf~zN6_sD35~Z`?}@3x%)~T?ojzv9r_iX^kS`U`>bIr1+U*8n(J<_06Hbm#QL5I7 zv|#b#d0e<~L0;5hvyH-W3ahJkack|KkYcDEqyNF#`9(3f;A%48C}1bIg%k~v8#;XP zwa+5t3y1)aN`eRL4{&B-Nz|xTqaB8!5l)*!+)(I5V=OpERh4EkvPKyoY zN)bodBh;D|1biNGc5GG}h>T4@?{LE955r>hi1QBRFRA0CC@j!wiU%1n?}_O+N`)-0 zzWp}t-MR_4)rPsbS6A&GL>eY`H=6V`=-^;~4|6lK zh{q;TEtIgkvj?}&hslL`7$X5>(#N=ce-%?RQ!wj{F!gkpSU8LNNm^Q({nI2CmzSW| z58-jypzE{+v#r-!I6OQO<7@I`S+o?m5*Z=V^zCo`HU9k1{}NM^Gx(j~`CaIK@y;7k zuArOwj?+u_@te{aWp;;+n_4ZXjrZ>2Xk%aerO0zg7t*j=&B&)S`0}s+ z20Be52}7jQX(SVem>Q45YOunh_sEde=oPSYvWtPsE;6F2zyw16089=&62(*8JlH~^ zP{y2Z67!KM80m#t%E4$K;+<<(ad=w5^4TXb6`jSP)tA$>S})@`cZ8v?3!`p`vkQxG zTU^-NKSHit$E&aZCSY|Ulgq>6unAWD;QbGf*xZy>jV(fGEC8p&iqz2oR&QKK`tVRr zUSi|t(k5uxP; z9H)^KzfA=-H0sqy1^WWmLFaH|ShiOEk)3OAxdfbRi#c`b2Lc3NJLOw|{7FQ6F z*aT)~W~4nMm6J}64wqZFDHJhsIa9BX63yRy`x_!c6a_$|hIlB5iEtF@R{&N_6Ms%_@9PaO9U;(xdwz09bj<04oT`2wPr5NhcnI<*Gu20iRU4oX2B zrgFIRU<*^z3)tB^!1&|@{9zv^=O@wcx1i^`x823@&JohdG&=18rWVg&@u{a6tAn0? z2&>b9+}=L!Ub}{PAc)EF7*0|r(iV_+%Xp}r2luhQdPjVHIiW9|Sr)ezI&`9Dt(z=g|C;L6?i(KYq)?#=gPc9@-+#v9-N0nSb? z;>st zesptL9G{#(ckRw!54k?AmWpUrs~GbIFc+V|>0T1Nr|E@YvAbY(dohsI6;ky2C}y(Q z+Dlg+?f?KF07*naR3NBZgW00P%xqjRI9ld-JYks4B+n@8MY40MjXcu16Y;W|oSMbu z%P(T}`aRTA1<5y9JKR8YDuPn2fR%ISVC+I#1{-Wb{Gtf5gDzYlCt@>E6lz&~|L^_| zc8eD-hZpham^`8BlT(;#Nym6^qmgUCnvDGU8uC{@Wmte$j4s78*jdW`H4kDt#Ksx z637-3=o<&{kH=A~HW9S>FcphqZF3dXb`8Z2eOm{x_bdoFdke>~$;0aQ z2`*0A%DJTlv>O%iQnTAF;<(LvXtoD9Nf$6NH;vf~^LXcjpTpv?VrBU}%rN3_{`NaK z-bvt}|IY8B-&SoTH*?8k0uvKa9PDhOTF78&c?Is7v&dx&!U_v|d~ljA=rkJedwnY5 zjz8)(VG@!@t-HJS-68uQ1`iW}Myrc4UkHst4FPumGt=`DPSz6-QX@*0qU`3~HmeLj zgj0@B4xrN$+--^2&EX(NbPQfEEgFq*x+s~bAXmr;b&MzM0Hr`$zs&R!*6yt1V0|00 zcoawZBbZ$#WD2LEvuYC5j!naD_Ml#A(iar7OY@k!xP-T_yovRl2bh|fMzz#}o$e$K zm$0ySeb_Bl;g=TESp?l)*xXLIC&zGoZ56eCM_l<{x$qSF)h14oNy!DUJ8c*kfaais za~D=*xH{O`Md9QWKA#7DBVh44k*XBn^toZw8Q?Oz(9G0f)f?gVSWv2$&>~}uW+OH) zD)}ND4m12AKdRjpGU*)97@%2e3VVvCbo{=EE3=2=6`M?_5ucub)9XUw=uqrVy-p`~ zHn(uNw~ufj1bttJR;3|`O0tl}(#7*weD+C{Q^&Y@>pIGXJYxP3BK{D}Mj8)C&?ge& zazbad0M#n;4<6v1pZ)|#sRUkr_2ckI#*rykVRU+Af#CIfWg(Q<+7PcbT0`-@Y_|K- zjxg-Q9dM)8$|9XT#_hXz5R1hGXYF-*c=@G|;*ilv14z_8X_%a4rzYd*w3}jLLb;8> z7v(sGOfo6$S2bTizuA&ZHNu&E=)~{LLGde~+ur)YkQV0YOj@wWMyU#)!wpm40H4b* z(|)Hvgew@3K8Z46;+dUBUAU$BTn4QcJ?M4fJeV((;B@$4wfJE)+VHWDe*(2y1^bC@ zY2dki2?e7VkI!Ofa~B_6xeAZhgqHwi#T9yLVg@d&6DNBIGFj8-K)AiFwy^ju6zUlbIIa}XHUi~t3og3@euEX= zQXR427z(+(z%E9s5!q5v1~ht4IV^TzbXgo0SOQM;t$Nf4ZCL3P*yv#^7cQ?NMA$fWl`)eG|sm`QPA<)WB}u-B(faBpW_`Fu{I ztt2t0*M&b2#@y0*m>q7Q-4W!bkjV&HoJR8=r%Q%zC3RPdYu(X<9}Ve|nm9hf{KA4v z&{l(4{6TFNJC09I#j@Q$78Unp>aKYDuvg?0aC&kAhr^d;v(`qt(GiQFAf@SEA5M4nu(`Gl6TM5VREPmh~)ObXt76Js#P@?d=>2P~92yP#d%mSd1apEWsBH zVA$%ySni{lD0VEVg+0K zTR17CFmrw$-};+x39R?g=U#?=V8vK)0v5X$6EpLul=FD+=Wl`A{`rYG5r1@3YomDY$qqCu(+@wuHD4pNx%<>!jhs% zf)%%;94d7`{j0AH`3CFEdOZKJSFp48K>9$p)gfvkauaE{NSYayo5!aqtgo#jdy>L< zY(nYP9NUA@}BI- zd1ZX&GoO{oegAL|R)+=gnK2|z4{>kn9?mSE#p>!RZhUYH|J{H6uP_yzL95)Bi8VGc zCPbH3v5d`)4WxKe*lDb6mWL|naHCPGh|J|Qlg1OzKZ6?&R$;JPad31Di_rnE(*>8+ zAkjg5s^igd9PA||ShzmyprmWzt$Xjn=(FPTdkfoBsk%D1jnPi;t2CRO#j& z9eXHfY}V?qo6J%?q$CmsqCaiES{8L`hz1opH#(IjDwz~E*6w2A+?=eNT^^@gr#`Do zQdZ1do7*j-xk@Ax7!OAj*sj;X?RVpy_uqvx?8eeF%lJ=!`z`o`J~)h4xcd%VKKm5< z9SShb!uUVj--63HfXiZm%NanqSjGLjcf{&*X?Y2g3v)0yY@*%b0kpflhxw^l+1Sl3 z&LKEGfohW>#w0A&P)MZ^atA>-ZDwiZibWhAA0ZeGq1~!u>C7Td_V!RImQX5IFf}uW za-%8lSIFameq<>?J)taWpp(@t`7K0ds78*D#l&_%xBjEQ9J)L%ynXcw-oN&qkS4zH zna_yYl-nNqrqb53P_H9bsR+YI93dr7&47io=Y^`axG>EvvK-wEl7q#8wVOBbumAP` z0)N1RGfT75<5FV6r*Lw78r5sMf~>2UFx3wZhYmqZu# z-S7T2D(Nc1&M-RVp7cs{OEb7|X$9GI2J7qV@(l|)gac$af03b^)#M5_XHMa7D)dP z@(fXn+jno_$tPCOZ8o55w_zOW5gVJ3fE9zyf!nuk!Zhfil+Q}+DEZX1p{I(Y)*#Q= z0NTZqZygSX1^Uw6{F^@=l9+LjJV2q8N3Y$&WNZvBvsq%|N$w!)++eq(K^vfA1tt=x z!!cN_4sinE6k4YwyO4$5ZpBkiJ%wVSgl~T1n?mezyX+VrkBS6>4Kz<~v&n|kaatUo zPm(8sz0EJq%hh&g?Jn+Z-$P)`k4u*?!0UA*f0Bh=Z-v+Ff!pXpv(%OyI8URg*(s4l zvq-sCCG&_JUA8WB6H_?d-pAJaw~#wN#p1cMu#Jb&9&;nptiud5#=}wcDn*ntY0Bk< zV8Z+=Vz}?zyN=oC&SUXomvCq29uD{SP)la;xs?~;9@mF-+LnZwKDmw-wecRqL*oBQjSy*Q7+WCYn7^8#FG z)ycf#;OIiBRztn35)XUznk+w-E+&f=rzo<(-! z1VLjEwPGFlY7q~%SD~}@Ff+Y?mo9%Ak@!4z-@Af)w?9Do^blt+oP#?OM!DUE-4n#n zK>h@YO?r5}cATaUv2(BvkKZlw84ktEb7x^38iWT;%~&FJgj;uR;Hk@(#6`WHE66g4 zGso1-0t(e8KDd4j9;;Du-V{Mdp#r1{upSszSSXgnuQ!$9_ZWt5?dN|tJUBc+u9z3t zgVsZgykul?(Crpu;Zn7VA$t<&QEGM&8=uDc_k1c^}Q8%p|J%vS{V;C0#QwV*Qt2Adv6JFOdcarfRGxlY{{2bzT{KJ&`2 z!8|acR;U6!AQp?m7xc-sNb(2?+#FCesWx$0(ikn>A#2Plb#ge!CS^$&wYl-i;uDxZa|t^) zSCK2#P_A`k?Ku&SpjIxy=XIggXyWDvw-5@l|1@1R^QVR7XGI(j3D&8}?J0-*>dC*ueOUD(+nKjEsV1Q@B=YIJaRb_uz3 z4zsg!!tndsAAS!uhXu7-8B_5Xvd1TI*_@c3oD)vNe)3dWsr~H@F(4$fFW~dT=W)wz zI~I+Kl!ulAWZwPs7e5zTr0zfb+y7%oh{f)9h!;QCj&!Rw^}BGGjF_LE5)uYw);g;V z-f#>HXU;?C^a0H#(wQTC``h1u%VopoKmR$r`Q{ta7SOIooDYRmV?d=+#`gBM9Q&jLQPyLn zw3|x>k4wlS#8?&Uot_5`K|VU=8oHShw(hS99yqqVfL7E6oy!JecYshU2hC z`3$dfN^l5{9~IL$sAf@Y)r4~q^Y}4Ll@PLf_$9DRG^GzuZ6C@hk;QChtDIvWAuh#G9V!^KKK;; z5jVFOxj?a@MRypN3-x9j9peD|`2;S!Z~>v|0KWCj|A@KJ1fu2uV&*7P2PyfUZf)Fw z&a21S<%`hQ9cUGr;=Sv(8j#Nwc<}Sv95frj{oLgQNk?Hq-^!FGWkHG1)3FUNqZ39lb3*B}fk=Qu4_Yxxr(kOU0 zw_5D^DP!WFr+UHRWJYce>3kL&yW66c&^>tTjUiw3Y`G{ZNltOJp|tAg4pe1kp70fi zMgyEaAI?4T6kvCwS8if`?E!9He+Ru@Lr&HgKk|YI*+`gR(@fVGEsdIzi=FLV8Pd2T zCI^!#fIb>@m<%YD@~}EBusY4y+}p&=(wy|OES}WiF(U2&PWO{=m~GM%vfm{FLG~75 zESt+I6g9G-$mC)lONj_Mq#>^#HiHQ_u3r~|O>}-5#xXyf!T+zPH;<9~zOMvd-S^$q zRoz{Eu}?OeH$_R7WlOSrNVaSz@i|Er2(XLYVD`WOo0k`armi^$}%7@b{4v(|>G z)keKoz@yEFLR@^lFsijC78VzAluzQf@4qQ8gtIgA@R)6QaQp7iI^N^JskvceLjn@v zIa2LL$HqmbciNqDCQl|3nmolOdAo$Lwz&n1%Z*IFh?R@yu#eFhdx3{;^?6lw;@rzjBXw@a9IZ7nt ztCdVh4Jq}4>L)4}}WY54si>~0?jr}Mb1@^rE}n3m_k-4E_c z)58}(KR+*yDU0TGI)lT*1bkkmr%;(N>;}`BBw}M@aI&c=77!$0Z8u|dGK%kh|9gl{ zjw7GV;;BndpjN1enMAdv+e2<`L(?iYLagWb0H~Z*&O)an_drTWSkICKP15t@qeE2N zO_7r?UA>HYy@Ge&z6Nv8EV>)(VEU&|?Ju#rhpn5pVH0;&Tv)EYQMrL;pPCn>PP1&f;HZ3{(SXf@dUg`jcg#;E)&A`(&;{JO##8e{L zn#uy6!X(!)UD0M`J}pqC494RXnnH+)QAVuky&*s9&AOD$*?bY3`-iZ3+!&u8!>Q#d zY&^b;pZwwNr@x?E}Wewoby@v>n2664~J8*kksAo$U4UE9=^QlpESS*4E zKe%%bpM3F?c=Gw@Nm(0O5IP;m9q!{NKmM_3j#n>V5zfl`^P|r^qbBh7o!f#ZS1+8! zNH`<}hsGT|u(+gz|)>}U{q;2@{lf!Su$dnGqGLMD~jh*G19_)%Q91IOWk@hOxW zb>y-scmsB1^82uPEpUeX*xot7(#(0BUA%~Dp4LQp46Hq5GYOcxZOlwgqEN2FY_cNY z4WN`S;`&=}BvoIW|ILH zDmr_6@`$6L|IKKSdxG z!ugL}M6#NO#cdIS@r75ufPeVGk8pP7B5YQ-XpWaT2R|;Ll+Wv-(UwQa+(!Bi)UTV8$h{Okpp1YXn=)!GJ^r9CZ`Z^yS1s3 z`Hb{iK939O<2<@H2S%b}7zqRr3H!0}=pJ_Wwh)`1!j0>Fs6r4U)5@$!OSU|=Q2W)4k;!&rPzf!T)2D* zc9R9=!zAuszlr*BNgAvB4pIe1RCwC9IatSvd+{Gt9|1x|*pWv?|MUjaD=4Y4S9*ZjehaLi? z$alHmj*EEu@>Se@w1%RskBKv<&^GrF-`c{A#e;saCePN9kuWm(yyop}CTUa2_;wP9 zcuEuQp+uVGl8`@u_4PHhI&HLjE!aF}Y$kRwwR#4R9zVwCKKT-yW*Z)@t%2HwIe!G- z{Qv#}#k~xk{KzwyxO@g%g%td!#;!UP;H)GN$DXiF-^zGHK96Vb@1Y@XN~I6N-c zJucux?AUEEua}>7S1=Z>bqKBTCZ>W!8Qxubb~!OJItoAEo694vbgSNi&1exLJJ+kC z+NhzHImQ=0@o7A~aR;4R6ODQkJ`S0tC(%S7jb0Z)!dn04v(FA{=)yf0!@?66;biEU z*NbMQ0UH5pBO`LU8WeO1aX4M5Rcf%gT<`>aC^pLyeA{|}g-m+6|MgMpw9)EzkSi6G zSw)DaR4gGDi%H5&;oaWG7A(bv0w7}H2v(Mtkx0gI>)}0g?M9e=PQ;c@Av!fKlZ6Ls z4?t<2KNLW_*F}$d^>Pn0W7A@28G1bg+#Usd6mmHk7Ay1ueQ-EZtdx|5LPhQUwTBoD zMo>*R;CK3U3q1G5S5T`L@t?l=4LE!*IPF$M0|7N)9J^);ITY$;DGM&0I|pMM$n9s~ zaCl+zI#q{KYu2qa5HUI7HJIg`xOupXw50{-LiiQJ@rK~CI&pe@78|c$ z$C$~5ey)PIuD^qwUJ1*ecp8^J^>HN01Id^0=H|jr`_zuPyY0Fl4nKsB@gX(^khF^dT6FpvkF@%`BY}CBR3_nPs$P zzlYs}eUU77xA$=6;$@76I8o|Iq&FH0p;9dA?;~J;`QjyPtglN^IvI$Lf4szKlfTr1b$^@m}kI)LRu zvx$f&09(BWq>8xp=G!>f+k10!}9f-WCCZok4PsMDhAlwJd5 z-tz?gQ2RyySw1g{EXj2k84asmC+C2?;H~`~@RrQy3s{^y1w#kJ(!%OQc{hnpx**H< zqg)0hj}glszY0s(k4m!!uhkCQz#!<4(NI*wR>&lCI>Q2wFoWZdL;p! zzemJ|G9l{Qs8UcOP`{60z^~0m=#d_^%);eZ+U4~sL49*;TZAi0!+Xsp8u=2&{Uf-r zw1WMeJ$&bH|5m8X%9B^{!f`kx2ob`uGzT}MKyr>LepJu{C`U_=U4 zI!!Z9Je$rU;Pnp$ikv9*x(YVq3sl_tiRhkR=jqDsu2?DK{KfOSR#+Fuj}qb=(AdFe zb0D?0h2wY6_jVpjb#UkH_wnTXdE^o)q;gqoCiXDCx_}qI z^a^$}aTF^>lrmXdICDlr526QD$@-}CYSYQEDW32VU28l}%udgulPzQO+D)7rokA=e z#gBjdBNRGyOkFw+qu+s^g$5Zt(e>z0MKxJjfKw*AV(bDve zH`Z~nFpM3o6?E%_V-s>?siX_oUf+@y%}ElI)rI4OBW&LNKnoTT4?gkb&!cT)me)XD zW1UJJ>$mS=YHULOz`OegD!Di!4Tr*7u(DM((^Q#9k^yFxfD|3mv5}%xg~&r@%uE0P zAOJ~3K~yoWsw*pe8zDxMLC6w)3Meon0efUD0(UTg!&Fi=?ya}qMWoY4pD*+e);Wz$zjK4;sAa!k=i}%ZfwES8Q|i% zi%J9Gkxp4~rBYQ>}so{)RH z@Yw7~ZET@mZNflbuGVmD>k9^9al3{iVWtXp`;r7x7|BIBIXQ)Dy@A)>d=2r`0lI^( z%qG6}^{*oykL!aaHk;4pH6E=M%Q!VPEiDp@`-Rz4sF$mNRT>Z6YczECw^OdkGvJBxFZK%^A6+hR4`=uqLv}(&-gM#>Qpz=OmSqN@4vp4K3?=y3&b-b^tVWW>ZP0Rhg~;M%KB+ zYb_=`+TIkN$`~ygolxY+(|R`@$5d!?r(pGUbTs@e&wq;%I7gPHwTyBi@p5=IrZ^` zwb~gh+|^uL)|)garp@_DZmp5EV~W=*IQ%YDT6MjVvlq@Ilh5MDwRd1^_h9V- zKDQT6t3$h*4m4FcpLC=Vi$umytB|qJfrCY)5PFi{ymJG=2pRHSF|m01Ztp%uI+u}= z9LW+3bMqoT_nK`a_V<-P6$y<<@8z?*QB37UsAh?O;kFoop%6|J)wk3YBIZd+|g4Iyo65 zhL6&5L8I^ye-MLOTOPfK|!)oizzht~Ku6AnumRJu)(QzoaUkW3`y=AGI*MB*T> z>zWeq#nUUpTa9V~gL#+~PAepORq#}$u?5!x!>3XQ4=Cgag@O@sJAXsyG}lA}0UGIDp( zmYwyDrPBo$ZLLy5rjSLZT14M&#Mt}{{E-n+&-ezn@2$boGr&u0Pq`)z8@+Tkhg!WM zBU=)mSu4@TK0Gq2@1M)(rMtg$<)W0jJS{f19%+QvH$o)nv**vM9=vtq2HMRAo_gX5 zAqdysetTGcjEur&bHnTL>7+>|kFc_`qG=uLiDV)!UhBEDtD5#5mkOF|bH+`*J{L%< zT$dj|y#Aid$(`tgWgFWpkeCa;=g z?TS6mlkV~EV?-y$uzKb!ECZ`D8t9d^vAqSm%ZcgfX}JkbhNH+G9>Ha{N@2kFO(7(W z<9wl@%q5O<$7+)4sKd3BOQj{=BPzp9LNy3;#H@CU6cw>klc;qY*Ou+7S;n*Q{doiA(6wlE~!}R?3;7f_)jUS!)QpE0l}! z$>*u+x7v~3dW@g_@P}}iOgj0-=BMy`fAkfkDh1g6ZkTP%$1=m%Gr{X-9J@)=Fn;*7 zNFw%2XoC?HZ~@s)CGJ~3=&~|cl~$o>PnPJuic6sVGOeole3eUUz%4V7_-@KL3AvNGYiY` z8l0MJ-CKVsrYzuASLU`fRpG3Xg!hK?`c9)DS$j^`; z@(GkjD6Z3NDu&bLb_o18+f48TTpE2R^C`r44l!;C!D)1$#Vb4HgK5MIquU9a+lgMI zg=VG*2dRZj0^;P!%#5EC2X@&!StZZsBBp;9Z>ma(b#+foDhV^RjEZLtv3vL!FTL`T zbbo#%W=_}}%0ADz$1x7s1&}SaNFtC9qHR~2`1lh6kMfd2AXj1A4yF{AS z@y$^1R?HtGzP*QTisy+j0+bo$VKm+ci%xOmk~LIQ?oz*`qvSen8e=w`?>~SyY?m;PNPoJ)u}l| zL-dqtVsmE)k6AAd4EX$~KPzh`CLWU7cW-+Q4>#9!T0XIQ0q3R`Q7u%ke-y{e{2Z(< zhh9gkT9?7_R5&`ke!D$Q=&H>IMkmHlY1DB{S&f4fP^R+qhcrw6q(geGuKJrYfD9maWXBoIl1 znxZmFj;@58fm}oa;gCk0L@Vgjy?3xLxQjOmPX*TTWL=RjF)=ZrPM!X>zkBZ;?evT1 z&SQCQ0UoPeXagfc9U%{jmab0Dh4481c8{(@cKxMlO%65(>)U!>!AMwsRk>yvg-S`A zJLK>pvwfgjiwmvQ>ncizdmjf5VMHDphge5Fv;mnOWC^Rb~4$AO3 zCQnuy=+~Q)pcG5TC{zpjsL0dhjngu8fl3$mUws#~Yz6ZdRxy3yGT`` z@EdKg>x3POIXh;9YSiH=3k{XJot~Oy*0GlE0OnQ?@BQWteCw~jfvtX2 zG^{gu;texhRbdGerl}pTD}7G`gx#utW>$a!n46x(cxXgJhUmn&zD{Z(7j3=KfIl2U zbY=?Su?UihBXsLc@ehbFFi5UGXyfMN`-n}(a4Iy0+)-M2SQjr}L4y>;hwECfGn3PL zend(5-?)6tBCDgA%EE7PN(4zZS-DZuDM_4_?}Iq(pwm@7%0`TMW@t2wN}cvhLnj)v z_}+&pGhDE3Gr{`~P-|gOZzAAwp<1t?-fO~QAqT{$j9fYu*t=%5wvN%ScJXj;ODF8; z*#&eQW{gZkWx{7`_hD7yB2zq!!@plprCJto0;p@FkdX1H{c0VkHql5QBXgL*yVtJ4 z>obQ%OsP3SRmm+p`h3h>77_f^vp)Bn)tOh(Z+e(fj;GpJ9-vQ70$ItYrW2gCyiLzr3K) z;Qrp;iSr->)rP5oTC9YF4F*}Ms5gx#jF2T~BZs~8Q*hr>lp*ofUbPY-fVdHwd7 z&1JI-M{F7g7@LYoJxp>qH!C|?-V!A;ja+6V;)m$gTbP?UCFf|`MLPNCn3Bk5g=8Pv z@f!`Q-O0U><6(b*5wA~Kx%~dbVR?ems*+q^*1kL~`K&$+O>z6Y(mQd(4VaeQWk%W% zqT%yvYQc780BvY@1fvl_8Q7SzZor_~M7PsYjT-fhAoannCVgau9UNy6nxBFr9Ke1u zAz(k^4roBY+L)yPPgqWzhM^$C1B#z7NAdxu8~YoZxc>SZayheI=wI_Y?BY&=XML1l;a_76$jA6?9>{%+Ony%$kRMgc*QQCK8^j|JuO&5 zNz&}Fq2fS*BS`~e;XNX!)H*HY&+>%kg5@bo$qGM!F8ZoRPc6);0b@fH4iTE61NLx{ z>W5BR4la0A4fC{Uc%05;1PhU$$rF@BY@!lm6Y=|Vvr;ijOqeM%+r4JqF+-l(&5Oc@3ebE3G;D5-U-A=`T7)M;cy6DVZBY&E3*NV z3CpHJ0VNI9Z~S+`ScQVFM?PZ?12}Zyg63)CvOCdh_P`uU-YJB-8X7zfU~Ud!MJ_19 zirIRRs1yQLyXct2Lm4R_uzInxv5oupA4nWIIy;G}r3JXjOE#F`A`Z(EkvEpnfDUV9 zNkYll=jot~7l5H4-7XHccJS+;{1m19F|J;|th$^12C>vS{duRS#M@(n&qlc0B*>Jv9CZhCa{c$BdTG!a6{3E zH~~%`+QtFuEMb^8)iBDVzi$qkY*JS-eain6Fcnz}KrMU)6gjz+cDE{Dc;t$Hy z+2CgLxnUCeV4xd|#Gyp;Xqckj>#J$(HaoKRWckEVYh!rPz}lsU+b|QY)@`BGZ=gdY zrP+pszi($8l3h^TSY!;%N*xoiNnye1{4uUP^^{PKTCqCZ421p}B64yt&=Qp6_-3~* ze6?9Bqgi3DEbTXWTQh#%B>a?+C5h?uqb*fxXfd79XhLju8jF`MVs~u~xiq~T+#>SJ z$9FIQO$td=BAhtfA%J1;wO0qZVnN-z#b#IC!Yhp3KC?fc`q(otx$Nll+IY0NsScDA zF~%zff+5sMXc-vMt2JOeLYg1Bot#QA|b}4AXF!SB6OsixM5y$>i~}yCiSa!r_7z zHcvCNZUF%uMk`v(wBq61;YKyU%|+E}qfjo(P=XB(HzDCXb8i?d$L7lAvZL3k%F>6U zWcpZC^>N<%{9iTfHXu`xdWA8H?-GF+lp=86Zedy3_V#rF9WR-@v z9$XMSm?lQY#PnxBLc^3QGawi&C}jwRQo|HWqOLs8KU}blUR?@djiDLZ$NuD`#^x=; zRH4JYefeC_#)w>4M!r%>L3{dEx2v4v;X-Yyx#Ot0%|JZsF!7uf59WR_C}MVMR`EZ3yZcCIvlyS6gv;Z??e}h~T&R@^ zjyvGt^~&gW#$7fV5+8n;@5R%ZT{s1Tq_0WGKVa9}lf0Z)I>{eg=%hJLjm5yG*2)DN z^2*9Qf1E!_VHr;7h}Y3pev0(P$S4Z5_TiYbO<6QUGPpgN-Z<3tD{0VZQWQHUXjDt^ zAqBlYZCd4X@zgf)&op)NabTimjtkdfg_Xo+LkB%(>yn<%rj&_Y_ z>thMW5`<_9(HP!9@K7f_v2*z}n9VBP`cx#V&*&>agtaMe z=u|$hl8iJ^DXi^QjkL)--~q!m#AqmPP!5s|cYpAmL6eP;)gdWyxn5U6P66Pl1vU{) z>^|OBL_1Zep_>4+vY zN;RFjJu3_A9;~cATP>9nEbAGr>~VMy@{>>52HZCB7LE=Mv>>`LYQz{}xO2CQndvDl zipSeqnoUzn|KWnwZFWM?Imya|$HN4`(lEM+rwB8qPF%P@43*>WNYrRC%LHT?$k7)l zUTcD<#e5x%m1188^g3 zq}}Rj?#`yy?RFxWNg`Lyp~Mik(761}SYnZO$XwXWQBrOYPUXNQZlw4RwH_|?b5jt#?_~vq1#@dkV zO_H}0>Ew}iBnxw;QL}y5DKsR=@WZ4o%+!Y9EK={7H`=dO(W+F2^<}@W$Vif$XBU@I zDVNY5bm1^tuzB+~S~NReT12zg!+11$vWpE!9LAAOCY9FB1u*O~8RbN7=P)Fb{}aP( zFbr$s!crYf>mRRAHw+gl$AkPD8#FFjiYs{<5V`P>4BlxBQw_-iQqMQUCx`!F8l+Xj z4=z}~UY)FFvzjUnU`R4zonJThP^eMPZ5JDA(ClJzd{Q`fz21~akS883C{z2p$QE-d zyC~*kDZtEEjx_lh-M@2JO)LL?ZeA`}A_(Lw=$$LNo(N1=7W2A=tY(yJRZRpbtC?F| z5Sqf9jvLzN@#)m0%0Rhpb_WV9C40kcwM0CD%|~1E!{P?z`)3#)H@yhyR06Zisn>=W zEUg2&T|E2B7i9!j$Y+rf0j4kvdSSoOXWC?Q*b@=KWB%CfzyGEH3a)Jip%b#0n3~iF zORp^EDY4F?oLX!tiw)UK4lFLn=&`sc|261CBp6;|^i8XUy`3F#KH2#ZHd0+8u$%En zjH2(OU2nqxmU&o1RHIS9r!cc@WcZyAjUMaK|ZT$0%>`2pQp4ZC+g5KIEugTowGQ6BpY5FY6C;+0FhmSh`t=Daz!wzef* zAuOjWtV1}?q(-mXZX=sX5A|*)!bK*XG()3{?(ifPyvF`|So8AVxd|!PVTr&&MI;zP zC6!Y{Suyp|XU*sGV8BMSHPEf%C)z-W%QloIk;JpVzc&n4wvsPlz<4Z%(XlAtav{FH zj`jNw5e<$=w8#@yuZv(m8&Vz=^ljkWzsDqSHrFlPs0zhMCgJsavAl9x%{A+2n%FU` zZIpFxC_KEH8QEGVy|SrtiipqVqet)(TNlZHh$Zv(_|S=m8hI7;`Ht@CQcZ;tZP!`NRP#nKZ(|Aa38ek9xJC>xS19 z$vK&HN)67$_?UJye{j+Aq3H0_Y0s^5GXEw@&>GfMPPZGaP7m?Kksvv*$14Rf8C;E8 zRaX|j7k@pbj?7{f`oIOt)k#=RG4zyyu(xE1poKBaFJlu*JlW;-V2m5WXh9~MMcZM8 zcXU*!MXS+)!{XH8V0Jmx{2BQSIbG~@bttd_8=n{#y5S53ME?Vg={7cyOJxx9_|!yd zn4;)zVwS_C5na&?8WxwUugy!3U?(F%jRv6yKjg&P>`u7cK8Z+KOmi4y zFbwc`ds}iCq9;TN*gOS%e!1}QW@8=A(~$!aHgpuH^2S*@eFlL@6!m6Xx0Tc9MLVCx z7By?-5<-3-dUAhh3+m&BH+=Au?+lDw@i3s)>Y&{pU}}0=--yhjUc04T&8s~}61CL^ z%SraA&Eb~+6Ain#C|P?lZLpBbB6)BKzn5{7M)4(iO0%%%&f*75px8=jNwEft+XJKD zt=OWl#ffr0uQw&k&u+ua>^xj1hk_{BeeG;MkoGDR3}DbPD3y3utz~@Oqh=m$2 z4oLXE7)ko*;R7iTc+%7CnY2cYNR=?t*WiO{VwOop>a}>)Q2ah**uwkXL_?P@TJNk;TR zbu-D&YBYz@ph9jn{VO6I8C8iRjNIuGbBf&EG&8|?bJ5I$r45X*JBfzWwD2O7>M*vb zJhWcrV&(hY-P%$Q!+V@JB~bvLswDjn3_SjTqhw0&ZzMXd)03N-&(%qsJekCCIti;@ zCt=5-n3X5K;rb8$YCxEQJBUa@z17tT%K+Z!Xc)C}Nsi7$OPGgcFj?U8`4Npx=^Ii# zE4P(e4f%9h^JgyFezz^Cf(wUrq#}Zvgg|OTt+~r7PttB@fbjSP%s!@vcwi>Zxxb6; z6dk$Uh)zzUUu`4MG^1Z>AYaHLU(ci1ufpQA!ESaSHWm|x%3*@i2`Sujy2L0W@IGwz zi~`+xnh+o4HN*h`X_6GiF(vTa6Hj4hXIBQ!k?{$cb}tAE=pDI?z*}+HXC&1uu+PePMy>uBY4CB3e!YnoUi zA0iDKSVwB|#8aTzK!JG!HJ(@w*>W=fYcx8B-bw6b(B_mHfi{=3%S-V2gSh|Z4fv0H zh_7wqAbEhu{5U!x(~ws?F^%!)gm&{TX@fkqit&r9K(8fhDfR|_HkO^CD?0fOWR)>=WOsWPIu#+T zUHMb6-bv*Bpf6r71&-|0`K)_=4halcSUL>@!?8J4BTK8-6MV&TiuybmPV9^y^L zj12#17<>2b;qdWeP1E@LcsMamerb6Hu?rVb;cKLQRCEjmw;QE+9Cn8dhewB~)vK5y zD-Z+ZwDCyMEGwYIJ2izKG5veL_|Aaw@-!YZ+3YZ~NbdJ#JHv%W`}V}azKUob-BbfG z{H@&`NDRp7)yCSo8UiwkW~Zlh!tv|Z-?^rT#`=Yg3$J31Rmm?URKa<2qua(4SDzf3 z=1xrG`Y(T@MsM-*8C8D38iM|U3K)j$6)@EC1?!wh4@iRow0VCu{~CSo%~E-JHF z+Z~zD@wL(vESYL<*yb!st>t&KG_iX}8?Qg>=zu|N#6V@W_ebWPb>O>N>LGY6tk0pVQC z?7|K76QfylXcRuH7ytF&{W-3`{T{A<`bE6-^{-%LWf7ouKUc#W|M{Ev;Px%}$HI8> z3opVG8%39+N)odP^@x{h)~Qv<53?$G<#X7;VF2azvTLGT+dgc9bmDe9SXo)d&hBFk zJs5-J_Jy!}5LXl@jp$hJaX+$QE|-fkDCTWLJsI&+W;F0rwipeP4PATVw{V!v2ypz$ z8^Qr04c_u@$L`*~WH)CnUQ+GK1?wa^pGoFa*&6ydNF`u(Smjnu9QM}r_muv~VbjWm z^BP>R$u!*l*|*t4>qIe_$x3&~yrEJpW1Qi*t-7*HA8oAT%H_+LoteYIK^$}QOTybq z#iDqrJk6q`QJrv+i5NES-qj*fHY;m>MyI#is(<+ZsSG8aN|=gw(dzsP4jw#0$Y{ZF zHig4tQjGPdFF%EMe)^7-WW z1jZs!#P<)RgdqIJ#)^jn@o<($yu$hVi1Shd$GVq5Jx9TG6da#lM8DlfDp$~gWqB4D z2@75#B9hG{kXd@EuF^E?w*SMY$hXsnR96#_iz6C z*MfjP9LKVWD_5#ow5*wkDN@_Se1y%18+hizRTK`6aR1G>v9vIY-Q1r12wV;~e)fZ( z;_BiRJbLsPBg?b!&qdL2c3`v{;j_8fn#tP}smHeIY zn1sDpO7S#eL&GwJHw!a&xoEhExB*zZDlnN1PA~$W#fjTL`UM_8Ttgrh!Ifv9#@M-4 zWbQn`!L@sE8m-8;>Uj3+zlXBDi@i)7twK?d8Hr1*5trr{gbHju+SL4>{$Xqw_ZcK- zGD+CS29z}{S!*PMvxfIL9r`@nBcpWmQ_6W~z_QPaN{u8Ps|FSvqc`gn93AW;lS=4B z<#U^wS%k@K6&geXjm`CS!J52nng7cMkMEsRIM%|e=g&*#l%u`WaSr$1e^-87v&-`u zfgjVhiNu)bIGXjQ@)s;F7s{Ou!kpq=|Hp3)!lO~_9metT=RW}x3+PrIR=)?Yzy3?4 zb4eT*vM3dg@!GF`h1rQITsnJE$t}-+`~^5&UUhtA)l+-(>_k6`SLSr9Z z%PiEnc=&+0t0@R11uo?DBE6dsQ8>c~QcB~-{#|_fi!Up6?_lEqm3ReLt~`VA;tY&F zrb#Dc;z66t=*XxF_fnyxOjV|YlY2m*n;#lwHKa!pvLY3d90!&Kix(4;~(_;9*6O_vA?dpn;MWa%pl4ZsCCpI^fW6&?-OSN#0H>Ev12#KyyL)=}B>Rxr#tq61>v6laXxVJB4&~MA zWlpTiB?N?YGwhYQVn)1Cs&h# z@RECbINU!_i6Z65iH$!$`_Zv64N5qrqg5UJoGlH+LNhU~iOe&bey=hZ}w&xQ`)9CEb! z21MqTfgZ~^}yt|Vqx_RGKma+_v6>GIJ1mD`jh_&_HYO-Qx|W)^A_60 z0zzI7Mgk#DE6`)i6S)V3vf3@VhqIpMb7oziNe{zH`1$fRP0UPdSi;udV&>2Q>c-hu zY;J90{n3U#ueG&@7>h=5>HImITRkHXzmQ7l#_jTE8y!cZ(bB=hX&iYSG%YDgu@EO4*Uki&F>2z|KQDLzlf0Tl$)y1O+Ygjq6iVCsdksz)<`%xJF z`d|O60bz{Or&ln)u&DZV`phzZ{;OB98;bjd`q_GdL(E5w`g-V~^rfr#_0}K@pSl3#in}@Oy1A7`nnU*}-z`84izP z;mM~Ezx#nSTRde6r?6h+hjZ?kk6`Ei101E(`Wo$to__ur^o@P_m%j1(Z?V3%rl_5{ znOTfS#$@U+J3S@xHo3msl$CN>CjrgrDEnr)L!h3az@)Qqk<;;{+H5K@#uE%+YD0=rD8$-Nu!RH3+L24+ifJc z(Dt%|R3@o3ocj;%p;*Xaad93S8|yeq#5EN9_{W~b%b$4}p2!%E_x7;)XqyMBjEYH+ zp^pIvBwYO?p^)lVs$Y4^`pE=qHn6w1D;$1iW_sv5OV`Hak-QcN{W(l#+`aZ5TDgK$ zFGLt>yVF1 z`7!G(o``$f``Em*21Bu_tlGCW-ot19`Iiv>)M;1)4(wdJi^hW#E}2gOMc~CRei89P z8p-20Vzac?X{piT{D#-@^5U|_s>Bs}y0UR1EW?4vxeMpz7*juKR=UPMI;I|uGDq?{ zRculs@lU59uO!xnfBet>5X;M_71p-9vnw}gg}eDY2#$r-*zgLY>t3(f(G^S{M2(|l zj&mcUn3|nIr`;84I(wMF_y6|0DD0*%=ZM1Nv||u9B6MyX-+TARXa&qD_B#0N3!g){ z?M1lig#ECAPNt%IczSgnMQ0cOnFykjV`?nP9T10t5k%1lM#iJ6Q<=dgrWtGbUQfhx zYQn-3W0+f7f!`N_$x5sJ3SNKhSNQ4AeuUk}n_!~fXgDbL7|BDCa75W)7tde9XgGo< zGaHI!BonEj!ogrx@Leo6g~(_W9=BKgl8NzgBoYb1d_)!kLBAGi^(c;;w{GF7r=Jl+ zkOD-meoMEHS}KdRcW~MtEuhfm731y>bzTUw!v)2A3~gQj~jvVmJCnSq=E< zZ+{N6*NWAvXAzqn$DjYle~&YBbGY{N-(V^bM%3xYpZv+6!V#H4wp7Q;x${7?iFEuB z@4x$wz+WEkw6YhzI6i^K6MotUjv!g0P*7l z&iZ1oJ+9$d*BP9jI)}IKe}KK?6bjuU+#$CtDhb_i6iAzM29vSTo0y2n^_$u%6R#Og zlblYhte(}xhaO*aMXYw~c>m7(vUm5o-E#AOyt#?}oyRC-^YY{R${&15CvKfdea8i% z5+t;cr}^ZkUqCUH!l2PXKAFLBIyap8Q@LsYS{Pttd`z_)n={5~QX95;{~=zu@*K9l z{~LU8=N2|w`$#$~xcK$wF!|&P-g)=|k~>LU^qCigOD!%vKZ{vI4`!-C54g!8QmK6;K^0};NlTTiK8ejhM*Kp Date: Thu, 12 Oct 2023 14:29:46 +0200 Subject: [PATCH 07/21] styles: hero article layout --- src/pages/paywall/index.tsx | 16 ++++++++--- src/pages/paywall/paywall.module.scss | 39 ++++++++++++++++++++++++++- src/server/paywall/articles.ts | 9 +++++++ 3 files changed, 59 insertions(+), 5 deletions(-) diff --git a/src/pages/paywall/index.tsx b/src/pages/paywall/index.tsx index bce335d9..79ccb7c1 100644 --- a/src/pages/paywall/index.tsx +++ b/src/pages/paywall/index.tsx @@ -6,6 +6,7 @@ import Image from 'next/image'; import { FunctionComponent } from 'react'; import styles from './paywall.module.scss'; import { useRouter } from 'next/router'; +import classNames from 'classnames'; export async function getServerSideProps() { return { @@ -18,12 +19,16 @@ export async function getServerSideProps() { type ArticleCardProps = { article: ArticleData; embed?: boolean; + isHeroArticle?: boolean; }; -const ArticleCard: FunctionComponent = ({ article, embed }) => { +const ArticleCard: FunctionComponent = ({ article, embed, isHeroArticle }) => { const link = `/paywall/article/${article.id}${embed ? '/embed' : ''}`; const router = useRouter(); return ( -
router.push(link)}> +
router.push(link)} + >
@@ -53,11 +58,14 @@ type PaywallProps = CustomPageProps & { }; export default function Paywall({ articles, embed }: PaywallProps) { + const heroArticle = articles[0]; + const gridArticles = articles.slice(1); return ( - {articles && ( + {heroArticle && } + {gridArticles && (
- {articles.map((article) => ( + {gridArticles.map((article) => ( ))}
diff --git a/src/pages/paywall/paywall.module.scss b/src/pages/paywall/paywall.module.scss index 165472d1..f146ee06 100644 --- a/src/pages/paywall/paywall.module.scss +++ b/src/pages/paywall/paywall.module.scss @@ -5,7 +5,6 @@ margin: 0 auto; @include media('<=phoneLandscape') { - padding: 0 rem(20px) rem(80px) rem(20px); row-gap: rem(24px); } @@ -20,12 +19,50 @@ border-radius: 6px; border: 1px solid v('gray-box-stroke'); cursor: pointer; + overflow: hidden; +} + +.heroArticleCard { + margin-bottom: rem(24px); + + @include media('>=phoneLandscape') { + display: grid; + grid-template-columns: 1fr 1fr; + margin-bottom: rem(96px); + column-gap: rem(32px); + border: none; + align-items: stretch; + + .byline { + margin-bottom: rem(8px); + } + + .articleCardImage { + border-radius: 4px; + border: 1px solid v('gray-box-stroke'); + margin-bottom: 0; + } + + .articleCardTitle { + font-size: 48px; + line-height: 130%; + } + + .articleCardContent { + padding: 0; + } + + .articleCardTags { + margin-top: rem(16px); + } + } } .articleCardImage { width: 100%; height: auto; margin-bottom: rem(8px); + background-color: #fff8f6; } .articleCardContent { diff --git a/src/server/paywall/articles.ts b/src/server/paywall/articles.ts index fb8692bd..f51aaf35 100644 --- a/src/server/paywall/articles.ts +++ b/src/server/paywall/articles.ts @@ -59,6 +59,15 @@ You’re doing your best to serve and relate to your customers on a human, frien author: { name: 'Sarah Thompson', avatar: GenericAvatarImage }, tags: ['Fingerprinting', 'Fraud'], }, + { + id: '5', + date: '1 month ago', + title: 'The Basics of Loan Fraud and How To Prevent It', + content: `The balance between consumer convenience and security is a delicate process, especially in a competitive, high-value market. For example, when banks and credit card companies provide online loan applications, they make it convenient for potential customers to get a loan. Still, they also make it convenient for identity thieves and hackers. `, + image: ArticleHeroSvg, + author: { name: 'Sarah Thompson', avatar: GenericAvatarImage }, + tags: ['Fingerprinting', 'Fraud'], + }, ]; const SHORT_ARTICLE_CONTENT_LENGTH = 100; From 92f90f04454f42c9a67b6045d8ff021c9dc67830 Mon Sep 17 00:00:00 2001 From: Juraj Uhlar Date: Thu, 12 Oct 2023 15:36:17 +0200 Subject: [PATCH 08/21] styles: responsiveness improvements --- src/pages/paywall/paywall.module.scss | 119 ++++++++++++++++++-------- 1 file changed, 82 insertions(+), 37 deletions(-) diff --git a/src/pages/paywall/paywall.module.scss b/src/pages/paywall/paywall.module.scss index f146ee06..a1fa2514 100644 --- a/src/pages/paywall/paywall.module.scss +++ b/src/pages/paywall/paywall.module.scss @@ -20,41 +20,10 @@ border: 1px solid v('gray-box-stroke'); cursor: pointer; overflow: hidden; -} - -.heroArticleCard { - margin-bottom: rem(24px); - - @include media('>=phoneLandscape') { - display: grid; - grid-template-columns: 1fr 1fr; - margin-bottom: rem(96px); - column-gap: rem(32px); - border: none; - align-items: stretch; + @include transition((box-shadow, border)); - .byline { - margin-bottom: rem(8px); - } - - .articleCardImage { - border-radius: 4px; - border: 1px solid v('gray-box-stroke'); - margin-bottom: 0; - } - - .articleCardTitle { - font-size: 48px; - line-height: 130%; - } - - .articleCardContent { - padding: 0; - } - - .articleCardTags { - margin-top: rem(16px); - } + &:hover { + @include shadowLarge(); } } @@ -80,10 +49,15 @@ flex-wrap: wrap; color: v('dark-gray'); - font-size: 14px; + font-size: rem(14px); font-style: normal; line-height: 160%; letter-spacing: 0.14px; + + @include media('<=phoneLandscape') { + margin-bottom: rem(12px); + font-size: rem(12px); + } } .articleCardTitle { @@ -91,14 +65,24 @@ font-size: rem(20px); font-weight: 600; line-height: 140%; + + @include media('<=phoneLandscape') { + font-size: rem(16px); + } } .articleCardDescription { color: v('dark-gray'); - font-size: 14px; + font-size: rem(14px); line-height: 160%; letter-spacing: 0.14px; flex-grow: 1; + margin: 0; + margin-top: rem(8px); + + @include media('<=phoneLandscape') { + margin-top: rem(4px); + } } .authorImage { @@ -114,6 +98,10 @@ gap: rem(8px); margin-top: rem(32px); + @include media('<=phoneLandscape') { + margin-top: rem(24px); + } + div { display: flex; padding: rem(4px) rem(10px) rem(5px) rem(10px); @@ -123,7 +111,64 @@ background: v('gray-box-stroke'); color: v('dark-black'); text-align: center; - font-size: 14px; + font-size: rem(14px); line-height: 150%; + + @include media('<=phoneLandscape') { + font-size: rem(12px); + } + } +} + +.heroArticleCard { + margin-bottom: rem(64px); + border: none; + + &:hover { + box-shadow: none; + } + + .articleCardTitle { + font-size: rem(34px); + } + + .articleCardImage { + border-radius: 4px; + border: 1px solid v('gray-box-stroke'); + margin-bottom: 0; + } + + .articleCardTags { + margin-top: rem(16px); + } + + .articleCardContent { + padding: 0; + padding-top: rem(16px); + } + + .articleCardDescription { + font-size: rem(16px); + } + + @include media('>=phoneLandscape') { + display: grid; + grid-template-columns: 1fr 1fr; + margin-bottom: rem(96px); + column-gap: rem(32px); + align-items: stretch; + + .byline { + margin-bottom: rem(8px); + } + + .articleCardContent { + padding-top: 0; + } + + .articleCardTitle { + font-size: 48px; + line-height: 130%; + } } } From a8f7835a402daa6f15ffae44be11a6a872459aaf Mon Sep 17 00:00:00 2001 From: Juraj Uhlar Date: Tue, 17 Oct 2023 09:23:32 +0100 Subject: [PATCH 09/21] chore: rafactor --- ...{use-get-article.js => use-get-article.ts} | 3 +- src/pages/paywall/article/[id]/index.tsx | 28 +++---------------- 2 files changed, 6 insertions(+), 25 deletions(-) rename src/client/api/personalization/{use-get-article.js => use-get-article.ts} (72%) diff --git a/src/client/api/personalization/use-get-article.js b/src/client/api/personalization/use-get-article.ts similarity index 72% rename from src/client/api/personalization/use-get-article.js rename to src/client/api/personalization/use-get-article.ts index 4683c4ca..280e9dfe 100644 --- a/src/client/api/personalization/use-get-article.js +++ b/src/client/api/personalization/use-get-article.ts @@ -1,6 +1,7 @@ import { useQuery } from 'react-query'; import { apiRequest } from '../api'; import { useVisitorData } from '../../use-visitor-data'; +import { ArticleData } from '../../../server/paywall/articles'; async function getArticle(articleId, fpData) { return apiRequest(`/api/paywall/article/${articleId}`, fpData); @@ -11,7 +12,7 @@ export const GET_ARTICLE_QUERY = 'GET_ARTICLE_QUERY'; export function useGetArticle(articleId) { const visitorDataQuery = useVisitorData({ extendedResult: false }); - return useQuery([GET_ARTICLE_QUERY, articleId], () => getArticle(articleId, visitorDataQuery.data), { + return useQuery([GET_ARTICLE_QUERY, articleId], () => getArticle(articleId, visitorDataQuery.data), { enabled: Boolean(visitorDataQuery.data), }); } diff --git a/src/pages/paywall/article/[id]/index.tsx b/src/pages/paywall/article/[id]/index.tsx index 1c755152..467977ad 100644 --- a/src/pages/paywall/article/[id]/index.tsx +++ b/src/pages/paywall/article/[id]/index.tsx @@ -1,12 +1,10 @@ import { useRouter } from 'next/router'; import { Skeleton, SkeletonTypeMap } from '@mui/material'; -import Typography from '@mui/material/Typography'; import Alert from '@mui/material/Alert'; import { useGetArticle } from '../../../../client/api/personalization/use-get-article'; import { UseCaseWrapper } from '../../../../client/components/common/UseCaseWrapper/UseCaseWrapper'; import { CustomPageProps } from '../../../_app'; -import Link from 'next/link'; -import { ArrowBack } from '@mui/icons-material'; +import { USE_CASES } from '../../../../client/components/common/content'; function ArticleSkeleton({ animation = false }: { animation?: SkeletonTypeMap['props']['animation'] }) { const skeletons = Array.from({ length: 4 }).map((_, index) => ); @@ -25,27 +23,9 @@ export default function Article({ embed }: CustomPageProps) { const returnUrl = `/paywall${embed ? '/embed' : ''}`; return ( - - {/* This back button is temporary, will be addressed in the use case redesign */} - {returnUrl && ( - - - Go back to articles - - )} - theme.spacing(6), - }} - > - {data?.article.content ?? } - + + {data?.article.content ?? } + {queryData?.message && queryData?.severity ? ( {queryData.message} From 1e6b5754c02a6e78cdf68dcdbbf60dfc37758eac Mon Sep 17 00:00:00 2001 From: Juraj Uhlar Date: Wed, 18 Oct 2023 19:35:35 +0100 Subject: [PATCH 10/21] chore: styles and refactor --- .../api/personalization/use-get-article.ts | 4 +- .../api/paywall/article/{[id].js => [id].ts} | 23 ++++-- src/pages/paywall/article/[id]/index.tsx | 70 ++++++++++++++----- src/pages/paywall/paywall.module.scss | 26 +++++++ src/shared/paywall/constants.js | 2 +- 5 files changed, 97 insertions(+), 28 deletions(-) rename src/pages/api/paywall/article/{[id].js => [id].ts} (60%) diff --git a/src/client/api/personalization/use-get-article.ts b/src/client/api/personalization/use-get-article.ts index 280e9dfe..825d7eac 100644 --- a/src/client/api/personalization/use-get-article.ts +++ b/src/client/api/personalization/use-get-article.ts @@ -1,7 +1,7 @@ import { useQuery } from 'react-query'; import { apiRequest } from '../api'; import { useVisitorData } from '../../use-visitor-data'; -import { ArticleData } from '../../../server/paywall/articles'; +import { ArticleResponse } from '../../../pages/api/paywall/article/[id]'; async function getArticle(articleId, fpData) { return apiRequest(`/api/paywall/article/${articleId}`, fpData); @@ -12,7 +12,7 @@ export const GET_ARTICLE_QUERY = 'GET_ARTICLE_QUERY'; export function useGetArticle(articleId) { const visitorDataQuery = useVisitorData({ extendedResult: false }); - return useQuery([GET_ARTICLE_QUERY, articleId], () => getArticle(articleId, visitorDataQuery.data), { + return useQuery([GET_ARTICLE_QUERY, articleId], () => getArticle(articleId, visitorDataQuery.data), { enabled: Boolean(visitorDataQuery.data), }); } diff --git a/src/pages/api/paywall/article/[id].js b/src/pages/api/paywall/article/[id].ts similarity index 60% rename from src/pages/api/paywall/article/[id].js rename to src/pages/api/paywall/article/[id].ts index acde5b06..8b1582d1 100644 --- a/src/pages/api/paywall/article/[id].js +++ b/src/pages/api/paywall/article/[id].ts @@ -1,7 +1,14 @@ -import { ARTICLES } from '../../../../server/paywall/articles'; +import { ARTICLES, ArticleData } from '../../../../server/paywall/articles'; import { paywallEndpoint } from '../../../../server/paywall/paywall-endpoint'; import { countViewedArticles, saveArticleView } from '../../../../server/paywall/article-views'; import { ARTICLE_VIEW_LIMIT } from '../../../../shared/paywall/constants'; +import { CheckResultObject } from '../../../../server/checkResult'; + +export type ArticleResponse = CheckResultObject<{ + article: ArticleData; + remainingViews: number; + viewedArticles: number; +}>; /** * Fetches article by its ID. Supports paywall logic, which means that we keep track of how many articles were viewed by a given user. @@ -13,20 +20,22 @@ export default paywallEndpoint(async (req, res, visitorData) => { const article = ARTICLES.find((article) => article.id === id); if (!article) { - return res.status(404).json({ - data: null, - }); + const response: ArticleResponse = { severity: 'error', message: 'Article not found', type: 'ArticleNotFound' }; + return res.status(404).json(response); } await saveArticleView(id, visitorData.visitorId); - const viewCount = await countViewedArticles(visitorData.visitorId); - return res.status(200).json({ + const response: ArticleResponse = { + severity: 'success', + type: 'ArticleViewed', + message: 'Article viewed', data: { article, remainingViews: ARTICLE_VIEW_LIMIT - viewCount, viewedArticles: viewCount, }, - }); + }; + return res.status(200).json(response); }); diff --git a/src/pages/paywall/article/[id]/index.tsx b/src/pages/paywall/article/[id]/index.tsx index 467977ad..c2fc1c6e 100644 --- a/src/pages/paywall/article/[id]/index.tsx +++ b/src/pages/paywall/article/[id]/index.tsx @@ -1,44 +1,78 @@ import { useRouter } from 'next/router'; import { Skeleton, SkeletonTypeMap } from '@mui/material'; -import Alert from '@mui/material/Alert'; import { useGetArticle } from '../../../../client/api/personalization/use-get-article'; import { UseCaseWrapper } from '../../../../client/components/common/UseCaseWrapper/UseCaseWrapper'; import { CustomPageProps } from '../../../_app'; import { USE_CASES } from '../../../../client/components/common/content'; +import LinkArrow from '../../../../client/img/externalLinkArrow.svg'; +import Link from 'next/link'; +import Image from 'next/image'; +import styles from '../../paywall.module.scss'; +import Alert from '../../../../client/components/common/Alert/Alert'; function ArticleSkeleton({ animation = false }: { animation?: SkeletonTypeMap['props']['animation'] }) { const skeletons = Array.from({ length: 4 }).map((_, index) => ); - return <>{skeletons}; } +function calculateReadingTime(text, wordsPerMinute = 200) { + const words = text.split(/\s+/).filter((word) => word.length > 0); + const readingTimeMins = words.length / wordsPerMinute; + return `${Math.max(readingTimeMins, 1)} min read`; +} + +export const BylineDot = () => ( + + + +); + export default function Article({ embed }: CustomPageProps) { const router = useRouter(); - const articleQuery = useGetArticle(router.query.id); + const { data, isLoading } = useGetArticle(router.query.id); - const queryData = articleQuery.data; - const data = queryData?.data; + const { article, remainingViews } = data?.data ?? {}; const returnUrl = `/paywall${embed ? '/embed' : ''}`; return ( - {data?.article.content ?? } - - {queryData?.message && queryData?.severity ? ( - - {queryData.message} +
+ + + Back to articles + +
+ {!data && } + {data && data.message && data.severity !== 'success' && {data.message}} + {data && data.severity === 'success' && ( + + {remainingViews > 0 + ? `You have ${remainingViews} remaining free article views.` + : 'This is your last free article today.'} - ) : ( - typeof data?.remainingViews === 'number' && ( - - {data.remainingViews > 0 - ? `You have ${data.remainingViews} remaining free article views.` - : 'You have exceeded your free daily article views.'} - - ) )} + {article && ( +
+ {article.title} +
+ {`Picture +
{article.author.name}
+ +
{article.date}
+ +
{calculateReadingTime(article.content)}
+
+

{article.title}

+ {article.content} +
+ )} + {article?.content}
); } diff --git a/src/pages/paywall/paywall.module.scss b/src/pages/paywall/paywall.module.scss index a1fa2514..52d84c13 100644 --- a/src/pages/paywall/paywall.module.scss +++ b/src/pages/paywall/paywall.module.scss @@ -1,3 +1,5 @@ +// Article listing + .articles { display: grid; grid-template-columns: repeat(auto-fit, minmax(265px, 1fr)); @@ -172,3 +174,27 @@ } } } + +// Article + +.backArrow { + transform: scaleX(-1); + vertical-align: baseline; + margin-right: rem(4px); +} + +.buckButton { + margin-bottom: rem(24px); +} + +.articleImage { + margin-top: rem(40px); + margin-bottom: rem(40px); + width: 100%; + height: 400px; + background-color: #fff8f6; +} + +.articleTitle { + margin-bottom: rem(16px); +} diff --git a/src/shared/paywall/constants.js b/src/shared/paywall/constants.js index 9c54f7af..7c92bb32 100644 --- a/src/shared/paywall/constants.js +++ b/src/shared/paywall/constants.js @@ -1,4 +1,4 @@ /** * Amount of articles that can be viewed for free daily. * */ -export const ARTICLE_VIEW_LIMIT = 2; +export const ARTICLE_VIEW_LIMIT = 3; From d77d2bfc4a9e9d297278e15c23df91ed33720eec Mon Sep 17 00:00:00 2001 From: Juraj Uhlar Date: Wed, 18 Oct 2023 21:03:40 +0100 Subject: [PATCH 11/21] chore: expand articles to multiple paragraphs --- src/pages/paywall/article/[id]/index.tsx | 19 +++---- src/pages/paywall/index.tsx | 5 +- src/server/paywall/articles.ts | 63 +++++++++++++++--------- 3 files changed, 52 insertions(+), 35 deletions(-) diff --git a/src/pages/paywall/article/[id]/index.tsx b/src/pages/paywall/article/[id]/index.tsx index c2fc1c6e..5fa58073 100644 --- a/src/pages/paywall/article/[id]/index.tsx +++ b/src/pages/paywall/article/[id]/index.tsx @@ -15,9 +15,12 @@ function ArticleSkeleton({ animation = false }: { animation?: SkeletonTypeMap['p return <>{skeletons}; } -function calculateReadingTime(text, wordsPerMinute = 200) { - const words = text.split(/\s+/).filter((word) => word.length > 0); - const readingTimeMins = words.length / wordsPerMinute; +function calculateReadingTime(text: string[], wordsPerMinute = 200) { + const words = text + .join('') + .split(/\s+/) + .filter((word) => word.length > 0); + const readingTimeMins = Math.round(words.length / wordsPerMinute); return `${Math.max(readingTimeMins, 1)} min read`; } @@ -29,11 +32,8 @@ export const BylineDot = () => ( export default function Article({ embed }: CustomPageProps) { const router = useRouter(); - - const { data, isLoading } = useGetArticle(router.query.id); - + const { data } = useGetArticle(router.query.id); const { article, remainingViews } = data?.data ?? {}; - const returnUrl = `/paywall${embed ? '/embed' : ''}`; return ( @@ -69,10 +69,11 @@ export default function Article({ embed }: CustomPageProps) {
{calculateReadingTime(article.content)}

{article.title}

- {article.content} + {article.content.map((paragraph, index) => ( +

{paragraph}

+ ))}
)} - {article?.content} ); } diff --git a/src/pages/paywall/index.tsx b/src/pages/paywall/index.tsx index 79ccb7c1..81342d73 100644 --- a/src/pages/paywall/index.tsx +++ b/src/pages/paywall/index.tsx @@ -7,6 +7,7 @@ import { FunctionComponent } from 'react'; import styles from './paywall.module.scss'; import { useRouter } from 'next/router'; import classNames from 'classnames'; +import { BylineDot } from './article/[id]'; export async function getServerSideProps() { return { @@ -34,9 +35,7 @@ const ArticleCard: FunctionComponent = ({ article, embed, isHe
{`Picture
{article.author.name}
- - - +
{article.date}
diff --git a/src/server/paywall/articles.ts b/src/server/paywall/articles.ts index f51aaf35..b0a61453 100644 --- a/src/server/paywall/articles.ts +++ b/src/server/paywall/articles.ts @@ -13,7 +13,7 @@ export type ArticleData = { name: string; avatar: any; }; - content: string; + content: string[]; image: any; tags: string[]; }; @@ -22,39 +22,56 @@ export const ARTICLES: ArticleData[] = [ { id: '1', date: '1 hour ago', - title: 'Why Browser Anti-Fingerprinting Techniques Are Not Effective', - content: `In this article, we will discuss why the existence of privacy-focused browsers doesn’t necessarily affect the effectiveness of fingerprint-based browser identification to prevent online fraud. - -We start with a technical dive into how today’s anti-fingerprinting solutions work, focusing on uniformity and privacy-through-randomization techniques and their specific implementations. We list multiple examples from popular browsers, including one of the more popular privacy-focused browsers, Brave. We then elaborate on why device identification remains a valuable tool to prevent online fraud. Let’s dive right in.`, + title: 'How to defend your site from common cyberattacks', + content: [ + "Websites are an integral part of our lives, but that also makes them a prime target for cyberattacks — malicious attempts to exploit vulnerabilities in your website's security to steal sensitive information, disrupt services, or cause other types of damage.", + 'Depending on the nature of your website and services, successful cyberattacks can have severe consequences such Depending on the nature of your website and services, successful cyberattacks can have severe consequences such as financial loss, reputational damage, and legal liabilities.', + "According to cybersecurity statistics compiled by Zippia, the cost of cybercrime is increasing significantly and is expected to grow by as much as 15% over the next five years. It's estimated that by 2025, cybercrime will cost the world roughly $10.5 trillion every year. Zippia estimates that 30,000 websites are hacked each day globally, with one happening every 39 seconds.", + 'The good news is that 95% of cyberattacks are due to human error, which means that something can be done to prevent them. To help track and prevent common cyberattacks, the Open Web Application Security Project (OWASP), a nonprofit organization, maintains a list of the most prevalent security risks affecting websites, including injection attacks, security misconfigurations, and broken authentication. The project is a community-driven initiative that aims to improve the security of software and web applications.', + 'By understanding these attacks and implementing appropriate security measures, you can better protect your websites from potential threats. In this article, you will learn about some of the common cyberattacks and how to implement defenses to ensure that your site is secure.', + ], image: ArticleHeroSvg, - author: { name: 'John Doe', avatar: GenericAvatarImage }, + author: { name: 'Daniel Olaogun', avatar: GenericAvatarImage }, tags: ['Fingerprinting', 'Fraud'], }, { id: '2', date: '2 days ago', - title: 'Five Mistakes You’re Making with Your Login Page Security and How to Fix Them', - content: `Your login page is a perfect target for hackers because it serves as the primary defense between the internet and sensitive data. Most web applications allow users to log into accounts and view sensitive information. As a result, your login page is the gateway defense between the user’s personally identifiable information (PII) and the open internet. If your login page isn’t secure, you’re likely making these five mistakes.`, + title: 'How to avoid online auction fraud', + content: [ + "Online auction fraud is a risk for buyers and sellers, and it's one of the easiest scams to set up. Most people know they can buy anything on sites like eBay and Webstore, but they may not be aware of the signs of a scam auction. Scammers take advantage of this lack of knowledge, making online auction fraud a common avenue for criminals.", + 'Online auction fraud is so prevalent that governments have a list of common warning signs, but millions of people are still at risk. Site owners must also take precautions to protect buyers and sellers, but detecting fake auctions is a team effort that requires everyone involved to be vigilant.', + 'Online auction fraud is a type of online fraud where scammers attempt to steal money and goods from unsuspecting victims by creating fake accounts on online auction websites and bidding on items they never intend to pay for. Scammers often use stolen credit cards or fraudulent payment methods to “win” auctions, leaving the seller with no recourse when the items are not delivered or paid for.', + 'Victims of this type of fraud may also be targeted through phishing scams, where they are asked to send payment before delivery or provide confidential information like bank account numbers.', + ], image: ArticleHeroSvg, - author: { name: 'Jane Smith', avatar: GenericAvatarImage }, + author: { name: 'Jennifer Marsh', avatar: GenericAvatarImage }, tags: ['Fingerprinting', 'Fraud'], }, { id: '3', date: '1 week ago', title: 'Friendly Fraud: What It Is & How to Protect Your Business', - content: `Friendly fraud may not sound all that threatening, but it accounts for 70% of all credit card fraud and costs the eCommerce industry billions annually. - -You’re doing your best to serve and relate to your customers on a human, friendly level. You’re constantly trying to make them happy, anticipate their needs, and improve their lives. You’re doing your best to provide the best customer experience, but not every customer is acting with the best intentions.`, + content: [ + 'Friendly fraud may not sound all that threatening, but it accounts for 70% of all credit card fraud and costs the eCommerce industry billions annually.', + 'You’re doing your best to serve and relate to your customers on a human, friendly level. You’re constantly trying to make them happy, anticipate their needs, and improve their lives. You’re doing your best to provide the best customer experience, but not every customer is acting with the best intentions.', + 'Friendly fraud occurs when a customer makes a purchase online for a product or service, then turns around and contacts their card issuer to dispute the charge resulting in a chargeback.', + 'It may sound relatively innocent – and in some cases, it is – but without the proper safeguards, this sort of virtual shoplifting can make a significant dent in your revenue. Let’s learn more about friendly fraud, how common it is, and how to protect your eCommerce business against friendly fraud and chargeback abuse.', + ], image: ArticleHeroSvg, - author: { name: 'Alex Johnson', avatar: GenericAvatarImage }, + author: { name: 'Emma Roberts', avatar: GenericAvatarImage }, tags: ['Fingerprinting', 'Fraud'], }, { id: '4', date: '1 month ago', title: 'The Basics of Loan Fraud and How To Prevent It', - content: `The balance between consumer convenience and security is a delicate process, especially in a competitive, high-value market. For example, when banks and credit card companies provide online loan applications, they make it convenient for potential customers to get a loan. Still, they also make it convenient for identity thieves and hackers. `, + content: [ + 'The balance between consumer convenience and security is a delicate process, especially in a competitive, high-value market. For example, when banks and credit card companies provide online loan applications, they make it convenient for potential customers to get a loan. Still, they also make it convenient for identity thieves and hackers.', + 'In 2021, the National Mortgage Application Fraud Risk Index increased by 15% between the 2021 first quarter and the first quarter of 2022. Credit card fraud also skyrocketed by the last quarter of 2021. Fraud affects everyone, from consumers to the banks that approve applications. The amount of money lost may vary, but it raises costs to consumers and leads to hefty monetary losses for financial institutions. The biggest channel for fraudsters is the mobile market as more financial institutions continue to provide services using apps.', + 'There are several different types of loan fraud. One of the most common forms of loan fraud is application fraud, which involves falsely applying for a loan by providing inaccurate or incomplete information on an application form. This could include providing false employment history or exaggerating your income level in order to obtain a larger loan.', + "The start of loan fraud begins with the consumer. The many ways attackers can obtain personal information depend on their vectors. Some attackers use phishing emails and malicious websites. Others use a variety of ways to install malware on a targeted user's local device, and some local thieves steal unshredded paperwork from garbage cans to collect private information.", + ], image: ArticleHeroSvg, author: { name: 'Sarah Thompson', avatar: GenericAvatarImage }, tags: ['Fingerprinting', 'Fraud'], @@ -62,20 +79,20 @@ You’re doing your best to serve and relate to your customers on a human, frien { id: '5', date: '1 month ago', - title: 'The Basics of Loan Fraud and How To Prevent It', - content: `The balance between consumer convenience and security is a delicate process, especially in a competitive, high-value market. For example, when banks and credit card companies provide online loan applications, they make it convenient for potential customers to get a loan. Still, they also make it convenient for identity thieves and hackers. `, + title: 'Why Social Engineering Attacks Are Successful with Technical Staff', + content: [ + "Many organizations focus on data protection from outside attacks but fail to realize that many threats happen from within. Insider threats can be malicious or innocent mistakes; however, social engineering is a common factor among both types. You'd expect untrained employees unfamiliar with cyber-attacks to fall victim to social engineering.", + "Still, the technical staff (e.g., engineers, security people) are also a target and occasionally fall victim to it. Social engineering is effective because companies rely entirely on their employees' ability to detect it. Even the most cyber-savvy individuals can have a mishap, usually from being busy, stressed, tired, or simply forgetting to take a minute to ask questions.", + "In September 2022, Uber's private network was breached by a teenage attacker who used social engineering methods to gain secure information from an engineer. It started with a simple text message asking an engineer to divulge their credentials. The teenager posed as a people operations employee supporting Uber's infrastructure. After tricking the engineer into sending their credentials, the teenage attacker added their device to the two-factor authentication (2FA) system. Most 2FA systems that use push notifications require validation before adding a new device to a user's account. The teenage attacker spammed notifications to the engineer and then sent a social engineering message telling the engineer to accept them to get the messages to stop. The engineer obliged, allowing the attacker to access Uber's private network.", + "The attacker scanned the network for sensitive information and found PowerShell scripts with hardcoded administrator credentials. From there, the attacker had access to various data-driven storage that held Uber's intellectual property. This recent story is just one example of how social engineering can successfully trick tech-savvy individuals.", + ], image: ArticleHeroSvg, - author: { name: 'Sarah Thompson', avatar: GenericAvatarImage }, + author: { name: 'Jennifer Marsh', avatar: GenericAvatarImage }, tags: ['Fingerprinting', 'Fraud'], }, ]; -const SHORT_ARTICLE_CONTENT_LENGTH = 100; - export const ARTICLES_SHORTENED = ARTICLES.map((article) => ({ ...article, - content: - article.content.length > SHORT_ARTICLE_CONTENT_LENGTH - ? article.content.slice(0, SHORT_ARTICLE_CONTENT_LENGTH).concat('...') - : article.content, + content: article.content[0].split(' ').slice(0, 20).join(' ') + '...', })); From 4fa4f1c1a6f41ed3ab13d499e44a3b784d16d8aa Mon Sep 17 00:00:00 2001 From: Juraj Uhlar Date: Wed, 18 Oct 2023 21:21:00 +0100 Subject: [PATCH 12/21] styles: article content --- src/pages/paywall/article/[id]/index.tsx | 8 +++++--- src/pages/paywall/paywall.module.scss | 26 ++++++++++++++++++++++++ src/server/paywall/articles.ts | 4 ++-- 3 files changed, 33 insertions(+), 5 deletions(-) diff --git a/src/pages/paywall/article/[id]/index.tsx b/src/pages/paywall/article/[id]/index.tsx index 5fa58073..6aae1a34 100644 --- a/src/pages/paywall/article/[id]/index.tsx +++ b/src/pages/paywall/article/[id]/index.tsx @@ -69,9 +69,11 @@ export default function Article({ embed }: CustomPageProps) {
{calculateReadingTime(article.content)}

{article.title}

- {article.content.map((paragraph, index) => ( -

{paragraph}

- ))} +
+ {article.content.map((paragraph, index) => ( +

{paragraph}

+ ))} +
)} diff --git a/src/pages/paywall/paywall.module.scss b/src/pages/paywall/paywall.module.scss index 52d84c13..88600ec9 100644 --- a/src/pages/paywall/paywall.module.scss +++ b/src/pages/paywall/paywall.module.scss @@ -196,5 +196,31 @@ } .articleTitle { + color: v('dark-black'); + font-family: Inter; + font-size: 48px; + font-weight: 600; + line-height: 130%; margin-bottom: rem(16px); } + +.articleContent { + p { + margin-top: 32px; + margin-bottom: rem(32px); + line-height: 160%; + letter-spacing: 0.16px; + color: v('dark-gray'); + } + + p:first-of-type { + margin-top: rem(16px); + font-size: rem(20px); + font-weight: 500; + line-height: 140%; + } + + p:last-of-type { + margin-bottom: rem(16px); + } +} diff --git a/src/server/paywall/articles.ts b/src/server/paywall/articles.ts index b0a61453..bc534521 100644 --- a/src/server/paywall/articles.ts +++ b/src/server/paywall/articles.ts @@ -22,10 +22,10 @@ export const ARTICLES: ArticleData[] = [ { id: '1', date: '1 hour ago', - title: 'How to defend your site from common cyberattacks', + title: 'How to defend your site from common cyber attacks', content: [ "Websites are an integral part of our lives, but that also makes them a prime target for cyberattacks — malicious attempts to exploit vulnerabilities in your website's security to steal sensitive information, disrupt services, or cause other types of damage.", - 'Depending on the nature of your website and services, successful cyberattacks can have severe consequences such Depending on the nature of your website and services, successful cyberattacks can have severe consequences such as financial loss, reputational damage, and legal liabilities.', + 'Depending on the nature of your website and services, successful cyberattacks can have severe consequences such as financial loss, reputational damage, and legal liabilities.', "According to cybersecurity statistics compiled by Zippia, the cost of cybercrime is increasing significantly and is expected to grow by as much as 15% over the next five years. It's estimated that by 2025, cybercrime will cost the world roughly $10.5 trillion every year. Zippia estimates that 30,000 websites are hacked each day globally, with one happening every 39 seconds.", 'The good news is that 95% of cyberattacks are due to human error, which means that something can be done to prevent them. To help track and prevent common cyberattacks, the Open Web Application Security Project (OWASP), a nonprofit organization, maintains a list of the most prevalent security risks affecting websites, including injection attacks, security misconfigurations, and broken authentication. The project is a community-driven initiative that aims to improve the security of software and web applications.', 'By understanding these attacks and implementing appropriate security measures, you can better protect your websites from potential threats. In this article, you will learn about some of the common cyberattacks and how to implement defenses to ensure that your site is secure.', From 50a4ec2bfe4e47928527fec0c5552988a3f33185 Mon Sep 17 00:00:00 2001 From: Juraj Uhlar Date: Thu, 19 Oct 2023 08:40:21 +0100 Subject: [PATCH 13/21] chore: refactor help components --- src/client/components/paywall/ArticleGrid.tsx | 0 src/pages/paywall/article/[id]/index.tsx | 82 ++++++++----------- src/pages/paywall/index.tsx | 78 +++++++++++++----- src/pages/paywall/paywall.module.scss | 18 ++++ 4 files changed, 108 insertions(+), 70 deletions(-) create mode 100644 src/client/components/paywall/ArticleGrid.tsx diff --git a/src/client/components/paywall/ArticleGrid.tsx b/src/client/components/paywall/ArticleGrid.tsx new file mode 100644 index 00000000..e69de29b diff --git a/src/pages/paywall/article/[id]/index.tsx b/src/pages/paywall/article/[id]/index.tsx index 6aae1a34..13de3d9c 100644 --- a/src/pages/paywall/article/[id]/index.tsx +++ b/src/pages/paywall/article/[id]/index.tsx @@ -9,27 +9,13 @@ import Link from 'next/link'; import Image from 'next/image'; import styles from '../../paywall.module.scss'; import Alert from '../../../../client/components/common/Alert/Alert'; +import { Byline } from '../..'; function ArticleSkeleton({ animation = false }: { animation?: SkeletonTypeMap['props']['animation'] }) { const skeletons = Array.from({ length: 4 }).map((_, index) => ); return <>{skeletons}; } -function calculateReadingTime(text: string[], wordsPerMinute = 200) { - const words = text - .join('') - .split(/\s+/) - .filter((word) => word.length > 0); - const readingTimeMins = Math.round(words.length / wordsPerMinute); - return `${Math.max(readingTimeMins, 1)} min read`; -} - -export const BylineDot = () => ( - - - -); - export default function Article({ embed }: CustomPageProps) { const router = useRouter(); const { data } = useGetArticle(router.query.id); @@ -37,43 +23,39 @@ export default function Article({ embed }: CustomPageProps) { const returnUrl = `/paywall${embed ? '/embed' : ''}`; return ( - -
- - - Back to articles - + +
+
+ + + Back to articles + +
+ {!data && } + {data && data.message && data.severity !== 'success' && {data.message}} + {data && data.severity === 'success' && ( + + {remainingViews > 0 + ? `You have ${remainingViews} remaining free article views.` + : 'This is your last free article today.'} + + )} + {article && ( +
+ {article.title} + +

{article.title}

+
+ {article.content.map((paragraph, index) => ( +

{paragraph}

+ ))} +
+
+ )}
- {!data && } - {data && data.message && data.severity !== 'success' && {data.message}} - {data && data.severity === 'success' && ( - - {remainingViews > 0 - ? `You have ${remainingViews} remaining free article views.` - : 'This is your last free article today.'} - - )} {article && ( -
- {article.title} -
- {`Picture -
{article.author.name}
- -
{article.date}
- -
{calculateReadingTime(article.content)}
-
-

{article.title}

-
- {article.content.map((paragraph, index) => ( -

{paragraph}

- ))} -
+
+

More articles to read

)} diff --git a/src/pages/paywall/index.tsx b/src/pages/paywall/index.tsx index 81342d73..18d6d305 100644 --- a/src/pages/paywall/index.tsx +++ b/src/pages/paywall/index.tsx @@ -7,16 +7,44 @@ import { FunctionComponent } from 'react'; import styles from './paywall.module.scss'; import { useRouter } from 'next/router'; import classNames from 'classnames'; -import { BylineDot } from './article/[id]'; -export async function getServerSideProps() { - return { - props: { - articles: ARTICLES_SHORTENED, - }, - }; +/** + * Byline helper component + */ + +const BylineDot = () => ( + + + +); + +function calculateReadingTime(text: string[], wordsPerMinute = 200) { + const words = text + .join('') + .split(/\s+/) + .filter((word) => word.length > 0); + const readingTimeMins = Math.round(words.length / wordsPerMinute); + return `${Math.max(readingTimeMins, 1)} min read`; } +export const Byline = ({ article, includeReadingTime }: { article: ArticleData; includeReadingTime?: boolean }) => ( +
+ {`Picture +
{article.author.name}
+ +
{article.date}
+ {includeReadingTime && ( + <> + +
{calculateReadingTime(article.content)}
+ + )} +
+); + +/** + * Article Card and Grid + */ type ArticleCardProps = { article: ArticleData; embed?: boolean; @@ -32,12 +60,7 @@ const ArticleCard: FunctionComponent = ({ article, embed, isHe >
-
- {`Picture -
{article.author.name}
- -
{article.date}
-
+
{article.title} @@ -52,6 +75,27 @@ const ArticleCard: FunctionComponent = ({ article, embed, isHe ); }; +const ArticleGrid: FunctionComponent<{ articles: ArticleData[]; embed?: boolean }> = ({ articles, embed }) => { + return ( +
+ {articles.map((article) => ( + + ))} +
+ ); +}; + +/** + * Main Paywall use case page with article listing + */ +export async function getServerSideProps() { + return { + props: { + articles: ARTICLES_SHORTENED, + }, + }; +} + type PaywallProps = CustomPageProps & { articles: ArticleData[]; }; @@ -62,13 +106,7 @@ export default function Paywall({ articles, embed }: PaywallProps) { return ( {heroArticle && } - {gridArticles && ( -
- {gridArticles.map((article) => ( - - ))} -
- )} + {gridArticles && }
); } diff --git a/src/pages/paywall/paywall.module.scss b/src/pages/paywall/paywall.module.scss index 88600ec9..cc9417e5 100644 --- a/src/pages/paywall/paywall.module.scss +++ b/src/pages/paywall/paywall.module.scss @@ -177,6 +177,10 @@ // Article +.articleContainer { + padding: rem(64px) rem(56px); +} + .backArrow { transform: scaleX(-1); vertical-align: baseline; @@ -224,3 +228,17 @@ margin-bottom: rem(16px); } } + +.readMoreContainer { + padding: rem(64px) rem(56px) rem(96px) rem(56px); + border-top: 1px solid v('gray-box-stroke'); +} + +.readMore { + color: v('dark-black'); + font-family: Inter; + font-size: rem(28px); + font-weight: 600; + line-height: 130%; + margin-bottom: rem(32px); +} From ca5973972ea8ff8f27396f7c33467a26c0fe7292 Mon Sep 17 00:00:00 2001 From: Juraj Uhlar Date: Thu, 19 Oct 2023 09:18:49 +0100 Subject: [PATCH 14/21] chore: fix responsiveness, refactor article description --- src/pages/paywall/article/[id]/index.tsx | 5 +++- src/pages/paywall/index.tsx | 24 +++++------------- src/pages/paywall/paywall.module.scss | 32 ++++++++++++++++++++++-- src/server/paywall/articles.ts | 16 ++++++++---- src/shared/paywall/constants.js | 2 +- 5 files changed, 52 insertions(+), 27 deletions(-) diff --git a/src/pages/paywall/article/[id]/index.tsx b/src/pages/paywall/article/[id]/index.tsx index 13de3d9c..7def82ec 100644 --- a/src/pages/paywall/article/[id]/index.tsx +++ b/src/pages/paywall/article/[id]/index.tsx @@ -9,7 +9,8 @@ import Link from 'next/link'; import Image from 'next/image'; import styles from '../../paywall.module.scss'; import Alert from '../../../../client/components/common/Alert/Alert'; -import { Byline } from '../..'; +import { ArticleGrid, Byline } from '../..'; +import { ARTICLES } from '../../../../server/paywall/articles'; function ArticleSkeleton({ animation = false }: { animation?: SkeletonTypeMap['props']['animation'] }) { const skeletons = Array.from({ length: 4 }).map((_, index) => ); @@ -21,6 +22,7 @@ export default function Article({ embed }: CustomPageProps) { const { data } = useGetArticle(router.query.id); const { article, remainingViews } = data?.data ?? {}; const returnUrl = `/paywall${embed ? '/embed' : ''}`; + const relatedArticles = ARTICLES.filter((article) => article.id !== router.query.id).slice(0, 4); return ( @@ -56,6 +58,7 @@ export default function Article({ embed }: CustomPageProps) { {article && (

More articles to read

+
)}
diff --git a/src/pages/paywall/index.tsx b/src/pages/paywall/index.tsx index 18d6d305..f92f083a 100644 --- a/src/pages/paywall/index.tsx +++ b/src/pages/paywall/index.tsx @@ -1,5 +1,5 @@ import { UseCaseWrapper } from '../../client/components/common/UseCaseWrapper/UseCaseWrapper'; -import { ARTICLES_SHORTENED, ArticleData } from '../../server/paywall/articles'; +import { ARTICLES, ArticleData } from '../../server/paywall/articles'; import { CustomPageProps } from '../_app'; import { USE_CASES } from '../../client/components/common/content'; import Image from 'next/image'; @@ -64,7 +64,7 @@ const ArticleCard: FunctionComponent = ({ article, embed, isHe {article.title} -

{article.content}

+

{article.description}

{article.tags.map((tag) => (
{tag}
@@ -75,7 +75,7 @@ const ArticleCard: FunctionComponent = ({ article, embed, isHe ); }; -const ArticleGrid: FunctionComponent<{ articles: ArticleData[]; embed?: boolean }> = ({ articles, embed }) => { +export const ArticleGrid: FunctionComponent<{ articles: ArticleData[]; embed?: boolean }> = ({ articles, embed }) => { return (
{articles.map((article) => ( @@ -88,21 +88,9 @@ const ArticleGrid: FunctionComponent<{ articles: ArticleData[]; embed?: boolean /** * Main Paywall use case page with article listing */ -export async function getServerSideProps() { - return { - props: { - articles: ARTICLES_SHORTENED, - }, - }; -} - -type PaywallProps = CustomPageProps & { - articles: ArticleData[]; -}; - -export default function Paywall({ articles, embed }: PaywallProps) { - const heroArticle = articles[0]; - const gridArticles = articles.slice(1); +export default function Paywall({ embed }: CustomPageProps) { + const heroArticle = ARTICLES[0]; + const gridArticles = ARTICLES.slice(1); return ( {heroArticle && } diff --git a/src/pages/paywall/paywall.module.scss b/src/pages/paywall/paywall.module.scss index cc9417e5..bec971e1 100644 --- a/src/pages/paywall/paywall.module.scss +++ b/src/pages/paywall/paywall.module.scss @@ -179,6 +179,10 @@ .articleContainer { padding: rem(64px) rem(56px); + + @include media('<=phoneLandscape') { + padding: rem(24px) rem(16px); + } } .backArrow { @@ -189,14 +193,21 @@ .buckButton { margin-bottom: rem(24px); + + @include media('<=phoneLandscape') { + margin-bottom: rem(16px); + } } .articleImage { - margin-top: rem(40px); - margin-bottom: rem(40px); + margin: rem(40px) 0; width: 100%; height: 400px; background-color: #fff8f6; + + @include media('<=phoneLandscape') { + margin: rem(24px) 0; + } } .articleTitle { @@ -206,6 +217,10 @@ font-weight: 600; line-height: 130%; margin-bottom: rem(16px); + + @include media('<=phoneLandscape') { + font-size: rem(32px); + } } .articleContent { @@ -215,6 +230,7 @@ line-height: 160%; letter-spacing: 0.16px; color: v('dark-gray'); + font-size: rem(16px); } p:first-of-type { @@ -222,6 +238,10 @@ font-size: rem(20px); font-weight: 500; line-height: 140%; + + @include media('<=phoneLandscape') { + font-size: rem(18px); + } } p:last-of-type { @@ -232,6 +252,10 @@ .readMoreContainer { padding: rem(64px) rem(56px) rem(96px) rem(56px); border-top: 1px solid v('gray-box-stroke'); + + @include media('<=phoneLandscape') { + padding: rem(24px) rem(16px); + } } .readMore { @@ -241,4 +265,8 @@ font-weight: 600; line-height: 130%; margin-bottom: rem(32px); + + @include media('<=phoneLandscape') { + font-size: rem(24px); + } } diff --git a/src/server/paywall/articles.ts b/src/server/paywall/articles.ts index bc534521..1504ec5a 100644 --- a/src/server/paywall/articles.ts +++ b/src/server/paywall/articles.ts @@ -13,6 +13,7 @@ export type ArticleData = { name: string; avatar: any; }; + description: string; content: string[]; image: any; tags: string[]; @@ -23,6 +24,8 @@ export const ARTICLES: ArticleData[] = [ id: '1', date: '1 hour ago', title: 'How to defend your site from common cyber attacks', + description: + "Websites are an integral part of our lives, but that also makes them a prime target for cyberattacks — malicious attempts to exploit vulnerabilities in your website's security to steal sensitive information.", content: [ "Websites are an integral part of our lives, but that also makes them a prime target for cyberattacks — malicious attempts to exploit vulnerabilities in your website's security to steal sensitive information, disrupt services, or cause other types of damage.", 'Depending on the nature of your website and services, successful cyberattacks can have severe consequences such as financial loss, reputational damage, and legal liabilities.', @@ -38,6 +41,8 @@ export const ARTICLES: ArticleData[] = [ id: '2', date: '2 days ago', title: 'How to avoid online auction fraud', + description: + "Online auction fraud is a risk for buyers and sellers, and it's one of the easiest scams to set up. Most people know they can buy anything on sites like eBay and Webstore.", content: [ "Online auction fraud is a risk for buyers and sellers, and it's one of the easiest scams to set up. Most people know they can buy anything on sites like eBay and Webstore, but they may not be aware of the signs of a scam auction. Scammers take advantage of this lack of knowledge, making online auction fraud a common avenue for criminals.", 'Online auction fraud is so prevalent that governments have a list of common warning signs, but millions of people are still at risk. Site owners must also take precautions to protect buyers and sellers, but detecting fake auctions is a team effort that requires everyone involved to be vigilant.', @@ -52,6 +57,8 @@ export const ARTICLES: ArticleData[] = [ id: '3', date: '1 week ago', title: 'Friendly Fraud: What It Is & How to Protect Your Business', + description: + 'Friendly fraud may not sound all that threatening, but it accounts for 70% of all credit card fraud and costs the eCommerce industry billions annually.', content: [ 'Friendly fraud may not sound all that threatening, but it accounts for 70% of all credit card fraud and costs the eCommerce industry billions annually.', 'You’re doing your best to serve and relate to your customers on a human, friendly level. You’re constantly trying to make them happy, anticipate their needs, and improve their lives. You’re doing your best to provide the best customer experience, but not every customer is acting with the best intentions.', @@ -66,6 +73,8 @@ export const ARTICLES: ArticleData[] = [ id: '4', date: '1 month ago', title: 'The Basics of Loan Fraud and How To Prevent It', + description: + 'The balance between consumer convenience and security is a delicate process, especially in a competitive, high-value market.', content: [ 'The balance between consumer convenience and security is a delicate process, especially in a competitive, high-value market. For example, when banks and credit card companies provide online loan applications, they make it convenient for potential customers to get a loan. Still, they also make it convenient for identity thieves and hackers.', 'In 2021, the National Mortgage Application Fraud Risk Index increased by 15% between the 2021 first quarter and the first quarter of 2022. Credit card fraud also skyrocketed by the last quarter of 2021. Fraud affects everyone, from consumers to the banks that approve applications. The amount of money lost may vary, but it raises costs to consumers and leads to hefty monetary losses for financial institutions. The biggest channel for fraudsters is the mobile market as more financial institutions continue to provide services using apps.', @@ -80,6 +89,8 @@ export const ARTICLES: ArticleData[] = [ id: '5', date: '1 month ago', title: 'Why Social Engineering Attacks Are Successful with Technical Staff', + description: + 'Many organizations focus on data protection from outside attacks but fail to realize that many threats happen from within.', content: [ "Many organizations focus on data protection from outside attacks but fail to realize that many threats happen from within. Insider threats can be malicious or innocent mistakes; however, social engineering is a common factor among both types. You'd expect untrained employees unfamiliar with cyber-attacks to fall victim to social engineering.", "Still, the technical staff (e.g., engineers, security people) are also a target and occasionally fall victim to it. Social engineering is effective because companies rely entirely on their employees' ability to detect it. Even the most cyber-savvy individuals can have a mishap, usually from being busy, stressed, tired, or simply forgetting to take a minute to ask questions.", @@ -91,8 +102,3 @@ export const ARTICLES: ArticleData[] = [ tags: ['Fingerprinting', 'Fraud'], }, ]; - -export const ARTICLES_SHORTENED = ARTICLES.map((article) => ({ - ...article, - content: article.content[0].split(' ').slice(0, 20).join(' ') + '...', -})); diff --git a/src/shared/paywall/constants.js b/src/shared/paywall/constants.js index 7c92bb32..9c54f7af 100644 --- a/src/shared/paywall/constants.js +++ b/src/shared/paywall/constants.js @@ -1,4 +1,4 @@ /** * Amount of articles that can be viewed for free daily. * */ -export const ARTICLE_VIEW_LIMIT = 3; +export const ARTICLE_VIEW_LIMIT = 2; From 464255632d3ae6544c4217378f62f092d1836192 Mon Sep 17 00:00:00 2001 From: Juraj Uhlar Date: Thu, 19 Oct 2023 09:50:09 +0100 Subject: [PATCH 15/21] chore: fix build --- src/client/components/paywall/ArticleGrid.tsx | 0 src/pages/paywall/embed.tsx | 3 +-- 2 files changed, 1 insertion(+), 2 deletions(-) delete mode 100644 src/client/components/paywall/ArticleGrid.tsx diff --git a/src/client/components/paywall/ArticleGrid.tsx b/src/client/components/paywall/ArticleGrid.tsx deleted file mode 100644 index e69de29b..00000000 diff --git a/src/pages/paywall/embed.tsx b/src/pages/paywall/embed.tsx index 207ea60b..0618f749 100644 --- a/src/pages/paywall/embed.tsx +++ b/src/pages/paywall/embed.tsx @@ -1,5 +1,5 @@ import { GetServerSideProps } from 'next'; -import Paywall, { getServerSideProps as indexGetServerSideProps } from './index'; +import Paywall from './index'; import { CustomPageProps } from '../_app'; export default Paywall; @@ -7,7 +7,6 @@ export default Paywall; export const getServerSideProps: GetServerSideProps = async () => { return { props: { - ...(await indexGetServerSideProps()).props, embed: true, }, }; From f6ad50f2c10776b6bd41931c5c4a54879483e58e Mon Sep 17 00:00:00 2001 From: Juraj Uhlar Date: Thu, 19 Oct 2023 18:10:34 +0100 Subject: [PATCH 16/21] chore: fix test, refactor article request --- e2e/{paywall.spec.js => paywall.spec.ts} | 18 ++++----- .../api/personalization/use-get-article.ts | 18 --------- src/client/e2eTestIDs.ts | 4 ++ src/pages/paywall/article/[id]/index.tsx | 38 +++++++++++++++---- src/pages/paywall/index.tsx | 2 + 5 files changed, 44 insertions(+), 36 deletions(-) rename e2e/{paywall.spec.js => paywall.spec.ts} (60%) delete mode 100644 src/client/api/personalization/use-get-article.ts diff --git a/e2e/paywall.spec.js b/e2e/paywall.spec.ts similarity index 60% rename from e2e/paywall.spec.js rename to e2e/paywall.spec.ts index adfc3813..1b794c89 100644 --- a/e2e/paywall.spec.js +++ b/e2e/paywall.spec.ts @@ -1,6 +1,6 @@ -// @ts-check import { test } from '@playwright/test'; import { reset } from './admin'; +import { TEST_IDS } from '../src/client/e2eTestIDs'; test.describe('Paywall', () => { test.beforeEach(async ({ page, context }) => { @@ -10,34 +10,30 @@ test.describe('Paywall', () => { }); test('should show how many free views remain', async ({ page }) => { - const articles = await page.locator('.ArticleLink'); + const articles = await page.getByTestId(TEST_IDS.paywall.articleCard); await articles.first().click(); await page.waitForSelector('text="You have 1 remaining free article views."'); await page.goBack(); await articles.nth(1).click(); - await page.waitForSelector('text="You have exceeded your free daily article views."'); - - await page.goBack(); - await articles.first().click(); - await page.waitForSelector('text="You have exceeded your free daily article views."'); + await page.waitForSelector('text="This is your last free article today."'); }); test('should show paywall after passing limit', async ({ page }) => { - const articles = await page.locator('.ArticleLink'); + const articles = await page.getByTestId(TEST_IDS.paywall.articleCard); await articles.first().click(); - await page.waitForSelector('.UsecaseWrapper_alert'); + await page.waitForLoadState('networkidle'); await page.goBack(); await articles.nth(1).click(); - await page.waitForSelector('.UsecaseWrapper_alert'); + await page.waitForLoadState('networkidle'); await page.goBack(); await articles.nth(2).click(); await page.waitForSelector( - 'text="You have reached your daily view limit, purchase our membership plan to view unlimited articles."' + 'text="You have reached your daily view limit, purchase our membership plan to view unlimited articles."', ); }); }); diff --git a/src/client/api/personalization/use-get-article.ts b/src/client/api/personalization/use-get-article.ts deleted file mode 100644 index 825d7eac..00000000 --- a/src/client/api/personalization/use-get-article.ts +++ /dev/null @@ -1,18 +0,0 @@ -import { useQuery } from 'react-query'; -import { apiRequest } from '../api'; -import { useVisitorData } from '../../use-visitor-data'; -import { ArticleResponse } from '../../../pages/api/paywall/article/[id]'; - -async function getArticle(articleId, fpData) { - return apiRequest(`/api/paywall/article/${articleId}`, fpData); -} - -export const GET_ARTICLE_QUERY = 'GET_ARTICLE_QUERY'; - -export function useGetArticle(articleId) { - const visitorDataQuery = useVisitorData({ extendedResult: false }); - - return useQuery([GET_ARTICLE_QUERY, articleId], () => getArticle(articleId, visitorDataQuery.data), { - enabled: Boolean(visitorDataQuery.data), - }); -} diff --git a/src/client/e2eTestIDs.ts b/src/client/e2eTestIDs.ts index 12256970..c30e7dfc 100644 --- a/src/client/e2eTestIDs.ts +++ b/src/client/e2eTestIDs.ts @@ -5,4 +5,8 @@ export const TEST_IDS = { loanRisk: { monthlyInstallmentValue: 'monthlyInstallmentValue', }, + paywall: { + articleCard: 'articleCard', + articleContent: 'articleContent', + }, } as const; diff --git a/src/pages/paywall/article/[id]/index.tsx b/src/pages/paywall/article/[id]/index.tsx index 7def82ec..51759407 100644 --- a/src/pages/paywall/article/[id]/index.tsx +++ b/src/pages/paywall/article/[id]/index.tsx @@ -1,6 +1,5 @@ import { useRouter } from 'next/router'; import { Skeleton, SkeletonTypeMap } from '@mui/material'; -import { useGetArticle } from '../../../../client/api/personalization/use-get-article'; import { UseCaseWrapper } from '../../../../client/components/common/UseCaseWrapper/UseCaseWrapper'; import { CustomPageProps } from '../../../_app'; import { USE_CASES } from '../../../../client/components/common/content'; @@ -11,6 +10,9 @@ import styles from '../../paywall.module.scss'; import Alert from '../../../../client/components/common/Alert/Alert'; import { ArticleGrid, Byline } from '../..'; import { ARTICLES } from '../../../../server/paywall/articles'; +import { useVisitorData } from '@fingerprintjs/fingerprintjs-pro-react'; +import { useQuery } from 'react-query'; +import { ArticleResponse } from '../../../api/paywall/article/[id]'; function ArticleSkeleton({ animation = false }: { animation?: SkeletonTypeMap['props']['animation'] }) { const skeletons = Array.from({ length: 4 }).map((_, index) => ); @@ -19,10 +21,30 @@ function ArticleSkeleton({ animation = false }: { animation?: SkeletonTypeMap['p export default function Article({ embed }: CustomPageProps) { const router = useRouter(); - const { data } = useGetArticle(router.query.id); - const { article, remainingViews } = data?.data ?? {}; + const articleId = router.query.id; + + const { data: fingerprintData } = useVisitorData({ + ignoreCache: true, + }); + + const { data: articleData } = useQuery( + ['GET_ARTICLE_QUERY', articleId], + () => + fetch(`/api/paywall/article/${articleId}`, { + method: 'POST', + body: JSON.stringify({ + requestId: fingerprintData?.requestId, + visitorId: fingerprintData?.visitorId, + }), + }).then((res) => res.json()), + { + enabled: Boolean(fingerprintData), + }, + ); + + const { article, remainingViews } = articleData?.data ?? {}; const returnUrl = `/paywall${embed ? '/embed' : ''}`; - const relatedArticles = ARTICLES.filter((article) => article.id !== router.query.id).slice(0, 4); + const relatedArticles = ARTICLES.filter((article) => article.id !== articleId).slice(0, 4); return ( @@ -33,9 +55,11 @@ export default function Article({ embed }: CustomPageProps) { Back to articles
- {!data && } - {data && data.message && data.severity !== 'success' && {data.message}} - {data && data.severity === 'success' && ( + {!articleData && } + {articleData && articleData.message && articleData.severity !== 'success' && ( + {articleData.message} + )} + {articleData && articleData.severity === 'success' && ( {remainingViews > 0 ? `You have ${remainingViews} remaining free article views.` diff --git a/src/pages/paywall/index.tsx b/src/pages/paywall/index.tsx index f92f083a..9db8fa73 100644 --- a/src/pages/paywall/index.tsx +++ b/src/pages/paywall/index.tsx @@ -7,6 +7,7 @@ import { FunctionComponent } from 'react'; import styles from './paywall.module.scss'; import { useRouter } from 'next/router'; import classNames from 'classnames'; +import { TEST_IDS } from '../../client/e2eTestIDs'; /** * Byline helper component @@ -57,6 +58,7 @@ const ArticleCard: FunctionComponent = ({ article, embed, isHe
router.push(link)} + data-test={TEST_IDS.paywall.articleCard} >
From c2123aadb575d138db22d47c0bb07341da45376f Mon Sep 17 00:00:00 2001 From: Juraj Uhlar Date: Thu, 19 Oct 2023 19:40:35 +0100 Subject: [PATCH 17/21] chore: fix test --- e2e/paywall.spec.ts | 31 +++++++++--------------- package.json | 2 +- src/client/e2eTestIDs.ts | 1 + src/pages/paywall/article/[id]/index.tsx | 5 ++-- src/pages/paywall/paywall.module.scss | 4 +-- yarn.lock | 30 ++++++++++++++--------- 6 files changed, 37 insertions(+), 36 deletions(-) diff --git a/e2e/paywall.spec.ts b/e2e/paywall.spec.ts index 1b794c89..5f5cc9cc 100644 --- a/e2e/paywall.spec.ts +++ b/e2e/paywall.spec.ts @@ -1,39 +1,32 @@ -import { test } from '@playwright/test'; +import { test, expect } from '@playwright/test'; import { reset } from './admin'; import { TEST_IDS } from '../src/client/e2eTestIDs'; test.describe('Paywall', () => { test.beforeEach(async ({ page, context }) => { await reset(context); - await page.goto('/paywall'); }); - test('should show how many free views remain', async ({ page }) => { - const articles = await page.getByTestId(TEST_IDS.paywall.articleCard); - - await articles.first().click(); - await page.waitForSelector('text="You have 1 remaining free article views."'); - - await page.goBack(); - await articles.nth(1).click(); - await page.waitForSelector('text="This is your last free article today."'); - }); - - test('should show paywall after passing limit', async ({ page }) => { + test.only('Should show two articles, then show a paywall', async ({ page }) => { const articles = await page.getByTestId(TEST_IDS.paywall.articleCard); await articles.first().click(); - await page.waitForLoadState('networkidle'); + await page.getByText('You have 1 remaining free article views.').waitFor(); + await expect(page.getByTestId(TEST_IDS.paywall.articleContent)).toBeVisible(); await page.goBack(); await articles.nth(1).click(); - await page.waitForLoadState('networkidle'); + await page.getByText('This is your last free article today.').waitFor(); + await expect(page.getByTestId(TEST_IDS.paywall.articleContent)).toBeVisible(); await page.goBack(); await articles.nth(2).click(); - await page.waitForSelector( - 'text="You have reached your daily view limit, purchase our membership plan to view unlimited articles."', - ); + await expect( + page.getByText( + 'You have reached your daily view limit, purchase our membership plan to view unlimited articles.', + ), + ).toBeVisible(); + await expect(page.getByTestId(TEST_IDS.paywall.articleContent)).toBeHidden(); }); }); diff --git a/package.json b/package.json index d98e85d2..17368700 100644 --- a/package.json +++ b/package.json @@ -47,7 +47,7 @@ "zod": "^3.21.4" }, "devDependencies": { - "@playwright/test": "^1.30.0", + "@playwright/test": "^1.39.0", "@types/leaflet": "^1.9.3", "@types/node": "^18.11.18", "@types/react": "^18.0.27", diff --git a/src/client/e2eTestIDs.ts b/src/client/e2eTestIDs.ts index c30e7dfc..b9c15203 100644 --- a/src/client/e2eTestIDs.ts +++ b/src/client/e2eTestIDs.ts @@ -8,5 +8,6 @@ export const TEST_IDS = { paywall: { articleCard: 'articleCard', articleContent: 'articleContent', + goBack: 'goBack', }, } as const; diff --git a/src/pages/paywall/article/[id]/index.tsx b/src/pages/paywall/article/[id]/index.tsx index 51759407..f4ee7338 100644 --- a/src/pages/paywall/article/[id]/index.tsx +++ b/src/pages/paywall/article/[id]/index.tsx @@ -13,6 +13,7 @@ import { ARTICLES } from '../../../../server/paywall/articles'; import { useVisitorData } from '@fingerprintjs/fingerprintjs-pro-react'; import { useQuery } from 'react-query'; import { ArticleResponse } from '../../../api/paywall/article/[id]'; +import { TEST_IDS } from '../../../../client/e2eTestIDs'; function ArticleSkeleton({ animation = false }: { animation?: SkeletonTypeMap['props']['animation'] }) { const skeletons = Array.from({ length: 4 }).map((_, index) => ); @@ -49,7 +50,7 @@ export default function Article({ embed }: CustomPageProps) { return (
-
+
Back to articles @@ -67,7 +68,7 @@ export default function Article({ embed }: CustomPageProps) { )} {article && ( -
+
{article.title}

{article.title}

diff --git a/src/pages/paywall/paywall.module.scss b/src/pages/paywall/paywall.module.scss index bec971e1..8210e7ba 100644 --- a/src/pages/paywall/paywall.module.scss +++ b/src/pages/paywall/paywall.module.scss @@ -213,7 +213,7 @@ .articleTitle { color: v('dark-black'); font-family: Inter; - font-size: 48px; + font-size: rem(48px); font-weight: 600; line-height: 130%; margin-bottom: rem(16px); @@ -225,7 +225,7 @@ .articleContent { p { - margin-top: 32px; + margin-top: rem(32px); margin-bottom: rem(32px); line-height: 160%; letter-spacing: 0.16px; diff --git a/yarn.lock b/yarn.lock index 72499c30..11a92564 100644 --- a/yarn.lock +++ b/yarn.lock @@ -867,15 +867,12 @@ tiny-glob "^0.2.9" tslib "^2.4.0" -"@playwright/test@^1.30.0": - version "1.37.1" - resolved "https://registry.yarnpkg.com/@playwright/test/-/test-1.37.1.tgz#e7f44ae0faf1be52d6360c6bbf689fd0057d9b6f" - integrity sha512-bq9zTli3vWJo8S3LwB91U0qDNQDpEXnw7knhxLM0nwDvexQAwx9tO8iKDZSqqneVq+URd/WIoz+BALMqUTgdSg== +"@playwright/test@^1.39.0": + version "1.39.0" + resolved "https://registry.yarnpkg.com/@playwright/test/-/test-1.39.0.tgz#d10ba8e38e44104499e25001945f07faa9fa91cd" + integrity sha512-3u1iFqgzl7zr004bGPYiN/5EZpRUSFddQBra8Rqll5N0/vfpqlP9I9EXqAoGacuAbX6c9Ulg/Cjqglp5VkK6UQ== dependencies: - "@types/node" "*" - playwright-core "1.37.1" - optionalDependencies: - fsevents "2.3.2" + playwright "1.39.0" "@popperjs/core@^2.11.8": version "2.11.8" @@ -4095,10 +4092,19 @@ pkg-types@^1.0.1: mlly "^1.1.1" pathe "^1.1.0" -playwright-core@1.37.1: - version "1.37.1" - resolved "https://registry.yarnpkg.com/playwright-core/-/playwright-core-1.37.1.tgz#cb517d52e2e8cb4fa71957639f1cd105d1683126" - integrity sha512-17EuQxlSIYCmEMwzMqusJ2ztDgJePjrbttaefgdsiqeLWidjYz9BxXaTaZWxH1J95SHGk6tjE+dwgWILJoUZfA== +playwright-core@1.39.0: + version "1.39.0" + resolved "https://registry.yarnpkg.com/playwright-core/-/playwright-core-1.39.0.tgz#efeaea754af4fb170d11845b8da30b2323287c63" + integrity sha512-+k4pdZgs1qiM+OUkSjx96YiKsXsmb59evFoqv8SKO067qBA+Z2s/dCzJij/ZhdQcs2zlTAgRKfeiiLm8PQ2qvw== + +playwright@1.39.0: + version "1.39.0" + resolved "https://registry.yarnpkg.com/playwright/-/playwright-1.39.0.tgz#184c81cd6478f8da28bcd9e60e94fcebf566e077" + integrity sha512-naE5QT11uC/Oiq0BwZ50gDmy8c8WLPRTEWuSSFVG2egBka/1qMoSqYQcROMT9zLwJ86oPofcTH2jBY/5wWOgIw== + dependencies: + playwright-core "1.39.0" + optionalDependencies: + fsevents "2.3.2" postcss@8.4.14: version "8.4.14" From 993f3de0a3ce05730d26a4ce8a23e87b56efaf5d Mon Sep 17 00:00:00 2001 From: Juraj Uhlar Date: Thu, 19 Oct 2023 19:53:08 +0100 Subject: [PATCH 18/21] chore: fix test --- e2e/paywall.spec.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/e2e/paywall.spec.ts b/e2e/paywall.spec.ts index 5f5cc9cc..fbe06d15 100644 --- a/e2e/paywall.spec.ts +++ b/e2e/paywall.spec.ts @@ -8,7 +8,7 @@ test.describe('Paywall', () => { await page.goto('/paywall'); }); - test.only('Should show two articles, then show a paywall', async ({ page }) => { + test('Should show two articles, then show a paywall', async ({ page }) => { const articles = await page.getByTestId(TEST_IDS.paywall.articleCard); await articles.first().click(); From 0b277ee514961f3d12bc8c74d381a3c261d714fd Mon Sep 17 00:00:00 2001 From: Juraj Uhlar Date: Thu, 19 Oct 2023 20:36:50 +0100 Subject: [PATCH 19/21] chore: fix old request ID bug --- src/pages/paywall/article/[id]/index.tsx | 23 +++++++++-------------- 1 file changed, 9 insertions(+), 14 deletions(-) diff --git a/src/pages/paywall/article/[id]/index.tsx b/src/pages/paywall/article/[id]/index.tsx index f4ee7338..19943664 100644 --- a/src/pages/paywall/article/[id]/index.tsx +++ b/src/pages/paywall/article/[id]/index.tsx @@ -24,24 +24,19 @@ export default function Article({ embed }: CustomPageProps) { const router = useRouter(); const articleId = router.query.id; - const { data: fingerprintData } = useVisitorData({ + const { getData: getVisitorData } = useVisitorData({ ignoreCache: true, }); - const { data: articleData } = useQuery( - ['GET_ARTICLE_QUERY', articleId], - () => - fetch(`/api/paywall/article/${articleId}`, { + const { data: articleData } = useQuery(['GET_ARTICLE_QUERY', articleId], async () => { + const { requestId, visitorId } = await getVisitorData(); + return await ( + await fetch(`/api/paywall/article/${articleId}`, { method: 'POST', - body: JSON.stringify({ - requestId: fingerprintData?.requestId, - visitorId: fingerprintData?.visitorId, - }), - }).then((res) => res.json()), - { - enabled: Boolean(fingerprintData), - }, - ); + body: JSON.stringify({ requestId, visitorId }), + }) + ).json(); + }); const { article, remainingViews } = articleData?.data ?? {}; const returnUrl = `/paywall${embed ? '/embed' : ''}`; From a5a2071a446108eca0f76cdbf8d8e2e17cf4d1af Mon Sep 17 00:00:00 2001 From: Juraj Uhlar Date: Wed, 25 Oct 2023 09:08:13 +0100 Subject: [PATCH 20/21] chore: move article card to separate file --- src/client/components/paywall/ArticleGrid.tsx | 82 ++++++++ .../paywall/articleGrid.module.scss | 178 ++++++++++++++++++ src/pages/paywall/article/[id]/index.tsx | 2 +- src/pages/paywall/index.tsx | 87 +-------- src/pages/paywall/paywall.module.scss | 177 ----------------- 5 files changed, 263 insertions(+), 263 deletions(-) create mode 100644 src/client/components/paywall/ArticleGrid.tsx create mode 100644 src/client/components/paywall/articleGrid.module.scss diff --git a/src/client/components/paywall/ArticleGrid.tsx b/src/client/components/paywall/ArticleGrid.tsx new file mode 100644 index 00000000..361fa68e --- /dev/null +++ b/src/client/components/paywall/ArticleGrid.tsx @@ -0,0 +1,82 @@ +import classNames from 'classnames'; +import { useRouter } from 'next/router'; +import { FunctionComponent } from 'react'; +import { ArticleData } from '../../../server/paywall/articles'; +import { TEST_IDS } from '../../e2eTestIDs'; +import Image from 'next/image'; +import styles from './articleGrid.module.scss'; + +const BylineDot = () => ( + + + +); + +function calculateReadingTime(text: string[], wordsPerMinute = 200) { + const words = text + .join('') + .split(/\s+/) + .filter((word) => word.length > 0); + const readingTimeMins = Math.round(words.length / wordsPerMinute); + return `${Math.max(readingTimeMins, 1)} min read`; +} + +export const Byline = ({ article, includeReadingTime }: { article: ArticleData; includeReadingTime?: boolean }) => ( +
+ {`Picture +
{article.author.name}
+ +
{article.date}
+ {includeReadingTime && ( + <> + +
{calculateReadingTime(article.content)}
+ + )} +
+); + +/** + * Article Card and Grid + */ +type ArticleCardProps = { + article: ArticleData; + embed?: boolean; + isHeroArticle?: boolean; +}; + +export const ArticleCard: FunctionComponent = ({ article, embed, isHeroArticle }) => { + const link = `/paywall/article/${article.id}${embed ? '/embed' : ''}`; + const router = useRouter(); + return ( +
router.push(link)} + data-test={TEST_IDS.paywall.articleCard} + > + +
+ + + {article.title} + +

{article.description}

+
+ {article.tags.map((tag) => ( +
{tag}
+ ))} +
+
+
+ ); +}; + +export const ArticleGrid: FunctionComponent<{ articles: ArticleData[]; embed?: boolean }> = ({ articles, embed }) => { + return ( +
+ {articles.map((article) => ( + + ))} +
+ ); +}; diff --git a/src/client/components/paywall/articleGrid.module.scss b/src/client/components/paywall/articleGrid.module.scss new file mode 100644 index 00000000..0d7cdf4c --- /dev/null +++ b/src/client/components/paywall/articleGrid.module.scss @@ -0,0 +1,178 @@ +/** + * Article listing + */ + +.articles { + display: grid; + grid-template-columns: repeat(auto-fit, minmax(265px, 1fr)); + gap: rem(24px); + margin: 0 auto; + + @include media('<=phoneLandscape') { + row-gap: rem(24px); + } + + @include media('<=phone') { + grid-template-columns: auto; + } +} + +.articleCard { + display: flex; + flex-direction: column; + border-radius: 6px; + border: 1px solid v('gray-box-stroke'); + cursor: pointer; + overflow: hidden; + @include transition((box-shadow, border)); + + &:hover { + @include shadowLarge(); + } +} + +.articleCardImage { + width: 100%; + height: auto; + margin-bottom: rem(8px); + background-color: #fff8f6; +} + +.articleCardContent { + padding: rem(16px); + display: flex; + flex-direction: column; + flex-grow: 1; +} + +.byline { + display: flex; + gap: rem(6px); + align-items: center; + margin-bottom: rem(16px); + flex-wrap: wrap; + + color: v('dark-gray'); + font-size: rem(14px); + font-style: normal; + line-height: 160%; + letter-spacing: 0.14px; + + @include media('<=phoneLandscape') { + margin-bottom: rem(12px); + font-size: rem(12px); + } +} + +.articleCardTitle { + color: v('dark-gray'); + font-size: rem(20px); + font-weight: 600; + line-height: 140%; + + @include media('<=phoneLandscape') { + font-size: rem(16px); + } +} + +.articleCardDescription { + color: v('dark-gray'); + font-size: rem(14px); + line-height: 160%; + letter-spacing: 0.14px; + flex-grow: 1; + margin: 0; + margin-top: rem(8px); + + @include media('<=phoneLandscape') { + margin-top: rem(4px); + } +} + +.authorImage { + height: rem(20px); + width: rem(20px); + border-radius: 50%; + object-fit: contain; +} + +.articleCardTags { + display: flex; + flex-wrap: wrap; + gap: rem(8px); + margin-top: rem(32px); + + @include media('<=phoneLandscape') { + margin-top: rem(24px); + } + + div { + display: flex; + padding: rem(4px) rem(10px) rem(5px) rem(10px); + justify-content: center; + align-items: center; + border-radius: rem(16px); + background: v('gray-box-stroke'); + color: v('dark-black'); + text-align: center; + font-size: rem(14px); + line-height: 150%; + + @include media('<=phoneLandscape') { + font-size: rem(12px); + } + } +} + +.heroArticleCard { + margin-bottom: rem(64px); + border: none; + + &:hover { + box-shadow: none; + } + + .articleCardTitle { + font-size: rem(34px); + } + + .articleCardImage { + border-radius: 4px; + border: 1px solid v('gray-box-stroke'); + margin-bottom: 0; + } + + .articleCardTags { + margin-top: rem(16px); + } + + .articleCardContent { + padding: 0; + padding-top: rem(16px); + } + + .articleCardDescription { + font-size: rem(16px); + } + + @include media('>=phoneLandscape') { + display: grid; + grid-template-columns: 1fr 1fr; + margin-bottom: rem(96px); + column-gap: rem(32px); + align-items: stretch; + + .byline { + margin-bottom: rem(8px); + } + + .articleCardContent { + padding-top: 0; + } + + .articleCardTitle { + font-size: 48px; + line-height: 130%; + } + } +} diff --git a/src/pages/paywall/article/[id]/index.tsx b/src/pages/paywall/article/[id]/index.tsx index 19943664..99cbb4be 100644 --- a/src/pages/paywall/article/[id]/index.tsx +++ b/src/pages/paywall/article/[id]/index.tsx @@ -8,12 +8,12 @@ import Link from 'next/link'; import Image from 'next/image'; import styles from '../../paywall.module.scss'; import Alert from '../../../../client/components/common/Alert/Alert'; -import { ArticleGrid, Byline } from '../..'; import { ARTICLES } from '../../../../server/paywall/articles'; import { useVisitorData } from '@fingerprintjs/fingerprintjs-pro-react'; import { useQuery } from 'react-query'; import { ArticleResponse } from '../../../api/paywall/article/[id]'; import { TEST_IDS } from '../../../../client/e2eTestIDs'; +import { ArticleGrid, Byline } from '../../../../client/components/paywall/ArticleGrid'; function ArticleSkeleton({ animation = false }: { animation?: SkeletonTypeMap['props']['animation'] }) { const skeletons = Array.from({ length: 4 }).map((_, index) => ); diff --git a/src/pages/paywall/index.tsx b/src/pages/paywall/index.tsx index 9db8fa73..aefcd9ba 100644 --- a/src/pages/paywall/index.tsx +++ b/src/pages/paywall/index.tsx @@ -1,91 +1,8 @@ import { UseCaseWrapper } from '../../client/components/common/UseCaseWrapper/UseCaseWrapper'; -import { ARTICLES, ArticleData } from '../../server/paywall/articles'; +import { ARTICLES } from '../../server/paywall/articles'; import { CustomPageProps } from '../_app'; import { USE_CASES } from '../../client/components/common/content'; -import Image from 'next/image'; -import { FunctionComponent } from 'react'; -import styles from './paywall.module.scss'; -import { useRouter } from 'next/router'; -import classNames from 'classnames'; -import { TEST_IDS } from '../../client/e2eTestIDs'; - -/** - * Byline helper component - */ - -const BylineDot = () => ( - - - -); - -function calculateReadingTime(text: string[], wordsPerMinute = 200) { - const words = text - .join('') - .split(/\s+/) - .filter((word) => word.length > 0); - const readingTimeMins = Math.round(words.length / wordsPerMinute); - return `${Math.max(readingTimeMins, 1)} min read`; -} - -export const Byline = ({ article, includeReadingTime }: { article: ArticleData; includeReadingTime?: boolean }) => ( -
- {`Picture -
{article.author.name}
- -
{article.date}
- {includeReadingTime && ( - <> - -
{calculateReadingTime(article.content)}
- - )} -
-); - -/** - * Article Card and Grid - */ -type ArticleCardProps = { - article: ArticleData; - embed?: boolean; - isHeroArticle?: boolean; -}; -const ArticleCard: FunctionComponent = ({ article, embed, isHeroArticle }) => { - const link = `/paywall/article/${article.id}${embed ? '/embed' : ''}`; - const router = useRouter(); - return ( -
router.push(link)} - data-test={TEST_IDS.paywall.articleCard} - > - -
- - - {article.title} - -

{article.description}

-
- {article.tags.map((tag) => ( -
{tag}
- ))} -
-
-
- ); -}; - -export const ArticleGrid: FunctionComponent<{ articles: ArticleData[]; embed?: boolean }> = ({ articles, embed }) => { - return ( -
- {articles.map((article) => ( - - ))} -
- ); -}; +import { ArticleCard, ArticleGrid } from '../../client/components/paywall/ArticleGrid'; /** * Main Paywall use case page with article listing diff --git a/src/pages/paywall/paywall.module.scss b/src/pages/paywall/paywall.module.scss index 8210e7ba..2aa15cd2 100644 --- a/src/pages/paywall/paywall.module.scss +++ b/src/pages/paywall/paywall.module.scss @@ -1,180 +1,3 @@ -// Article listing - -.articles { - display: grid; - grid-template-columns: repeat(auto-fit, minmax(265px, 1fr)); - gap: rem(24px); - margin: 0 auto; - - @include media('<=phoneLandscape') { - row-gap: rem(24px); - } - - @include media('<=phone') { - grid-template-columns: auto; - } -} - -.articleCard { - display: flex; - flex-direction: column; - border-radius: 6px; - border: 1px solid v('gray-box-stroke'); - cursor: pointer; - overflow: hidden; - @include transition((box-shadow, border)); - - &:hover { - @include shadowLarge(); - } -} - -.articleCardImage { - width: 100%; - height: auto; - margin-bottom: rem(8px); - background-color: #fff8f6; -} - -.articleCardContent { - padding: rem(16px); - display: flex; - flex-direction: column; - flex-grow: 1; -} - -.byline { - display: flex; - gap: rem(6px); - align-items: center; - margin-bottom: rem(16px); - flex-wrap: wrap; - - color: v('dark-gray'); - font-size: rem(14px); - font-style: normal; - line-height: 160%; - letter-spacing: 0.14px; - - @include media('<=phoneLandscape') { - margin-bottom: rem(12px); - font-size: rem(12px); - } -} - -.articleCardTitle { - color: v('dark-gray'); - font-size: rem(20px); - font-weight: 600; - line-height: 140%; - - @include media('<=phoneLandscape') { - font-size: rem(16px); - } -} - -.articleCardDescription { - color: v('dark-gray'); - font-size: rem(14px); - line-height: 160%; - letter-spacing: 0.14px; - flex-grow: 1; - margin: 0; - margin-top: rem(8px); - - @include media('<=phoneLandscape') { - margin-top: rem(4px); - } -} - -.authorImage { - height: rem(20px); - width: rem(20px); - border-radius: 50%; - object-fit: contain; -} - -.articleCardTags { - display: flex; - flex-wrap: wrap; - gap: rem(8px); - margin-top: rem(32px); - - @include media('<=phoneLandscape') { - margin-top: rem(24px); - } - - div { - display: flex; - padding: rem(4px) rem(10px) rem(5px) rem(10px); - justify-content: center; - align-items: center; - border-radius: rem(16px); - background: v('gray-box-stroke'); - color: v('dark-black'); - text-align: center; - font-size: rem(14px); - line-height: 150%; - - @include media('<=phoneLandscape') { - font-size: rem(12px); - } - } -} - -.heroArticleCard { - margin-bottom: rem(64px); - border: none; - - &:hover { - box-shadow: none; - } - - .articleCardTitle { - font-size: rem(34px); - } - - .articleCardImage { - border-radius: 4px; - border: 1px solid v('gray-box-stroke'); - margin-bottom: 0; - } - - .articleCardTags { - margin-top: rem(16px); - } - - .articleCardContent { - padding: 0; - padding-top: rem(16px); - } - - .articleCardDescription { - font-size: rem(16px); - } - - @include media('>=phoneLandscape') { - display: grid; - grid-template-columns: 1fr 1fr; - margin-bottom: rem(96px); - column-gap: rem(32px); - align-items: stretch; - - .byline { - margin-bottom: rem(8px); - } - - .articleCardContent { - padding-top: 0; - } - - .articleCardTitle { - font-size: 48px; - line-height: 130%; - } - } -} - // Article .articleContainer { From 3b6214e445a67b2150198de26b6f99c59317f56f Mon Sep 17 00:00:00 2001 From: Juraj Uhlar Date: Wed, 25 Oct 2023 09:13:15 +0100 Subject: [PATCH 21/21] chore: move byline dot to svg file --- src/client/components/paywall/ArticleGrid.tsx | 11 +++-------- src/client/components/paywall/dot.svg | 3 +++ 2 files changed, 6 insertions(+), 8 deletions(-) create mode 100644 src/client/components/paywall/dot.svg diff --git a/src/client/components/paywall/ArticleGrid.tsx b/src/client/components/paywall/ArticleGrid.tsx index 361fa68e..8273f665 100644 --- a/src/client/components/paywall/ArticleGrid.tsx +++ b/src/client/components/paywall/ArticleGrid.tsx @@ -5,12 +5,7 @@ import { ArticleData } from '../../../server/paywall/articles'; import { TEST_IDS } from '../../e2eTestIDs'; import Image from 'next/image'; import styles from './articleGrid.module.scss'; - -const BylineDot = () => ( - - - -); +import BylineDot from './dot.svg'; function calculateReadingTime(text: string[], wordsPerMinute = 200) { const words = text @@ -25,11 +20,11 @@ export const Byline = ({ article, includeReadingTime }: { article: ArticleData;
{`Picture
{article.author.name}
- +
{article.date}
{includeReadingTime && ( <> - +
{calculateReadingTime(article.content)}
)} diff --git a/src/client/components/paywall/dot.svg b/src/client/components/paywall/dot.svg new file mode 100644 index 00000000..7278e875 --- /dev/null +++ b/src/client/components/paywall/dot.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file