From 6a9f6876c1e0ac188a11ba69b1f3890d5e71c563 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thibault=20Delavall=C3=A9e?= Date: Fri, 15 Feb 2019 15:41:09 +0000 Subject: [PATCH 1/5] [FIX] website_slides: fix some statistics and publication issues This commit fixes various issues introduced by recent commits in slides * fix slide type computation: using a dict in a fromkeys makes a shared object for all keys. It is better to fix that behavior; * correctly display number of course steps in elearning homepage. Currently number of steps of a course is simply the length of its one2many; holding slides. However this one depends on access rights which give funny results like a course with 2 steps for public users and 7 for admin; Right computation is: number of published lessons, whatever your access rights are. This is already computed as total_slides; * people that cannot publish should not be able to unpublish; Commit linked to task ID 1941250 and PR #31133. --- addons/website_slides/models/slide_channel.py | 4 ++-- addons/website_slides/models/slide_slide.py | 2 +- .../views/website_slides_templates_homepage.xml | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/addons/website_slides/models/slide_channel.py b/addons/website_slides/models/slide_channel.py index 9d51ea52d1c..c782b2813d4 100644 --- a/addons/website_slides/models/slide_channel.py +++ b/addons/website_slides/models/slide_channel.py @@ -136,7 +136,7 @@ class Channel(models.Model): @api.depends('channel_partner_ids.channel_id') def _compute_members_count(self): - read_group_res = self.env['slide.channel.partner'].sudo().read_group([('channel_id', 'in', self.ids)], [], 'channel_id') + read_group_res = self.env['slide.channel.partner'].sudo().read_group([('channel_id', 'in', self.ids)], ['channel_id'], 'channel_id') data = dict((res['channel_id'][0], res['channel_id_count']) for res in read_group_res) for channel in self: channel.members_count = data.get(channel.id, 0) @@ -154,7 +154,7 @@ class Channel(models.Model): channel.valid_channel_partner_ids = result.get(channel.id, False) channel.is_member = self.env.user.partner_id.id in channel.valid_channel_partner_ids if channel.valid_channel_partner_ids else False - @api.depends('slide_ids.slide_type', 'slide_ids.is_published', + @api.depends('slide_ids.slide_type', 'slide_ids.is_published', 'slide_ids.completion_time', 'slide_ids.likes', 'slide_ids.dislikes', 'slide_ids.total_views') def _compute_slides_statistics(self): result = dict((cid, dict(total_slides=0, total_views=0, total_votes=0, total_time=0)) for cid in self.ids) diff --git a/addons/website_slides/models/slide_slide.py b/addons/website_slides/models/slide_slide.py index 5dc5dcc4d5a..617ad2e1421 100644 --- a/addons/website_slides/models/slide_slide.py +++ b/addons/website_slides/models/slide_slide.py @@ -288,7 +288,7 @@ class Slide(models.Model): @api.multi def write(self, values): - if values.get('website_published') and any(not slide.channel_id.can_publish for slide in self): + if 'website_published' in values and any(not slide.channel_id.can_publish for slide in self): values.pop('website_published') if values.get('url') and values['url'] != self.url: diff --git a/addons/website_slides/views/website_slides_templates_homepage.xml b/addons/website_slides/views/website_slides_templates_homepage.xml index caeab4f77df..b41b75eb73e 100644 --- a/addons/website_slides/views/website_slides_templates_homepage.xml +++ b/addons/website_slides/views/website_slides_templates_homepage.xml @@ -276,7 +276,7 @@ - steps + steps From e7b3535884640724a062db042c83a9d5ebca3c78 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thibault=20Delavall=C3=A9e?= Date: Fri, 15 Feb 2019 11:17:44 +0000 Subject: [PATCH 2/5] [REF] gamification: clean next rank motivational implementation Purpose of this commit is to clean motivational capabilities of gamification ranks[1]. It makes more sense to store a motivational to achieve on next rank itself. We therefore rename the field and provide nice demo data that will be used in elearning use of gamification ranks. Commit linked to task ID 1941250 and PR #31133. [1] task ID 1922159 (landed at 91ee6ba5a72fc961227ab1e4ba301c3920c10112) --- .../data/gamification_karma_rank_data.xml | 3 +- .../data/gamification_karma_rank_demo.xml | 26 ++++++++++++++---- .../models/gamification_karma_rank.py | 6 ++-- .../gamification/static/img/rank_misc_hat.jpg | Bin 0 -> 22857 bytes .../gamification/static/img/rank_misc_mug.jpg | Bin 0 -> 25578 bytes .../static/img/rank_misc_unicorn.jpg | Bin 0 -> 17003 bytes .../static/img/rank_misc_wand.jpg | Bin 0 -> 26170 bytes .../views/gamification_karma_rank_views.xml | 4 +-- 8 files changed, 27 insertions(+), 12 deletions(-) create mode 100644 addons/gamification/static/img/rank_misc_hat.jpg create mode 100644 addons/gamification/static/img/rank_misc_mug.jpg create mode 100644 addons/gamification/static/img/rank_misc_unicorn.jpg create mode 100644 addons/gamification/static/img/rank_misc_wand.jpg diff --git a/addons/gamification/data/gamification_karma_rank_data.xml b/addons/gamification/data/gamification_karma_rank_data.xml index b91ee3dd4dc..2a5ad0231fe 100644 --- a/addons/gamification/data/gamification_karma_rank_data.xml +++ b/addons/gamification/data/gamification_karma_rank_data.xml @@ -13,9 +13,8 @@ Newbie

You just began the adventure! Welcome!

-

Keep going !

1
- + \ No newline at end of file diff --git a/addons/gamification/data/gamification_karma_rank_demo.xml b/addons/gamification/data/gamification_karma_rank_demo.xml index c34f93b486e..45b57ae34f3 100644 --- a/addons/gamification/data/gamification_karma_rank_demo.xml +++ b/addons/gamification/data/gamification_karma_rank_demo.xml @@ -1,5 +1,5 @@ - + 20 @@ -12,7 +12,11 @@ Student

You begin to understand things ! Keep going!

-

Keep going !

+ +
+
Reach the next rank and gain a very nice mug !
+ +
100
@@ -20,7 +24,11 @@ Bachelor

Hey ! You're not so dumb after all !

-

Keep going !

+ +
+
Reach the next rank and gain a very magic wand !
+ +
500
@@ -28,7 +36,11 @@ Master

You're good ! Really Good !

-

Keep going !

+ +
+
Reach the next rank and gain a very nice hat !
+ +
2000
@@ -36,7 +48,11 @@ Doctor

Ok, RESPECT !

-

Keep going !

+ +
+
Reach the next rank and gain a week-end with a unicorn !
+ +
10000
diff --git a/addons/gamification/models/gamification_karma_rank.py b/addons/gamification/models/gamification_karma_rank.py index e5a7897f44c..78b8e40ac50 100644 --- a/addons/gamification/models/gamification_karma_rank.py +++ b/addons/gamification/models/gamification_karma_rank.py @@ -19,9 +19,9 @@ class KarmaRank(models.Model): name = fields.Text(string='Rank Name', translate=True, required=True) description = fields.Html(string='Description', translate=html_translate, sanitize_attributes=False,) - description_reach_next = fields.Html( - string='Motivation phrase', translate=html_translate, sanitize_attributes=False, - help="Motivation phrase to reach next rank") + description_motivational = fields.Html( + string='Motivational', translate=html_translate, sanitize_attributes=False, + help="Motivational phrase to reach this rank") karma_min = fields.Integer(string='Required Karma', help='Minimum karma needed to reach this rank') user_ids = fields.One2many('res.users', 'rank_id', string='Users', help="Users having this rank") image = fields.Binary('Rank Icon') diff --git a/addons/gamification/static/img/rank_misc_hat.jpg b/addons/gamification/static/img/rank_misc_hat.jpg new file mode 100644 index 0000000000000000000000000000000000000000..68abf33bc1422f450e98b991bc5746ee2ad9288e GIT binary patch literal 22857 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 jMmqw=YDTYhncJb#qi5+NY{0`AcfhCa z0oiq^DbQ_Oo9#qXq85xE{sP_*tF>z%pzKm`JZ2;1sCW2B{|KiG8Ga;r#sneHu(0Hh7pNzb&)!>cNQ*n2Q%7Ff>4db zJ@=HRDu1-)Yv;b~#~ys_ISj@=M)4&SD)y@!+^0Ne$cg0nQ~2sNqe~74n1u3NJw}BN Pvv;-W;qp=Z@9O^m5w>Q# literal 0 HcmV?d00001 diff --git a/addons/gamification/static/img/rank_misc_unicorn.jpg b/addons/gamification/static/img/rank_misc_unicorn.jpg new file mode 100644 index 0000000000000000000000000000000000000000..5612d5f785542fa25879c3a950b8cdacfc2f9e3c GIT binary patch literal 17003 zcmbWe1zcXc@+i7+cXxLy?%LwT-HQ~8ySr0dN|7SP-QA(M7k77eErt8hz4tli{onna zckf$#Va>|STFE3clSw9dnSWUaP-P^fB>*rma6lIH2fS<$JBhoQn*xBeG(7+d000z# z4+aH*fgl-BBKR9t2Envo5P$L^Krk!l1BjrzHYl-yU`)^*^bx=Vl!6cdfaX8$lG1XD zq-@NrZNXt#f_=c5(gM);ISCEHIfSH|x z?e!yIaBy&l2#B~yNVsfdgk)_0*VjuYfCl?oCkQZd02~br0uAh?2Ot5}6AJ9l^%pCk zXK)BeC}NJtRY8-xcS(V)=DSVf^Rlni0W?J?Q>*U;3`Ha7Wa zYWB(8!qLgu#nsK-BQPj9BsA=EcznW_#IH%oDXG~xxq0~og+;~HHMMp14UJ9BKe~H* z`}zk4hbE_{XJ+T-7Zx`*x3+h7_x2ACFD|dHZ*K4IA0A)%dgb$<>o3m!2VZC)zQ7?N zAs}I1`2quXePtXC5{ir!8eLQg#?T&voXsB=Q!Fm4stb;SUHKf#$YBB=o04OL>f)8P zKb-xaF&6Oui?e?*_HVux0YnHeQ0GCQ0m8t;b2#mH@c)_GNH#LNdA&6F4pXxQv?;AS zceD@ucT{f`-I(r?9n>qjW58HGJJZ^7+Fh8#-vdPXJE7-+)68y+LV;~ z-ZxKlh;$#V#9Mu|F1xp^%xfg1YOt5 z-pWlnA<){27h%W0MYLp%gI2`TG~1FDzzL#YM_=}$ zpcl#2IPa5?(yH(jbzD*rK^#}w3(%1kbGm+0;n)-pTV@)+Gs*8HHrX19r6#f+?}6xA z5%VNjjAYs4`WT+XD#wo7+6xwB90ZBXhDrOxKRX}Z(Y$>qPWx+)Z9hBwYAiN8oEG>$ zP6aj9Ez>sfvqOuP-#)Wf<5Do6_$T=B3V{2<->@J(p|>@W`=YIQhYR^mSTE?SOgk(W zzW{JsE}|5HT54tRGFPTw4&-xcmG*@pT7{fYz!ggM-|i?B31=oWa>oY3B?=(RR#Fr? z^BzPGi_h*fd*&tY)U>nyo;bL-S2wJZI3MBD&nQ7u?D@K%_Zc?A4_aROLDHknFh^Tc zybi-F^h|0+;U4~)Rz4wTwC$GHqR+y`8~$fERx4T;q%fW02lylv69o% zrKU}GzzuO>tH$@{1?X#0AZIy+H>p>j%8J%h`*O?K#&^hk%kH$qqkvD{Qg)BMyVT8P zVA0YBzAC!gm!WEfe06p10KM$|P|c?i>iZ+*;sy8(2wys&JTteKH`E18vJ;{)TF6To zXn$=gUUX>6Wx+Du9=}%+5`F=`!#vB2z5u<`j!z^PCvB|>9ihv)7J5OhZ(2~H-P9a3 ze*w}b209a3m*fvA=WQoZtKVF1lV)ocm;0m6$MGa}BO{Bp?L?m};2(3gZ~{tO#Wxs6 zwT#})I1S)`Di~XtU>Uin2U})sEIeN6WXeoD;$>hf#d5D~e6@<95z?gd!oESan^iX68q`n@&kj$1O?>ugpaF(G#? zQJ#*IWC3^h0&w4}HG`}+A3Vcao}5ZRz`k1@^&U6PG(#+(PYFo&P`=eG+%#P|UY?9s zOw~DGgX~f{PWAGT(k?u0b`33UcBPlv77<2Qv&YI2w~t0j<6C$-bLtOlVuer8@&Kht zWH=DGNp#W{+FgM<>PVABpeYN>FFibvhiZQ~l5?>aem~oy5JrN|DNMZ5LltxEVTJo< zf%03Y*M}A^=-opY2nhe_gx*;;SJOCkP>H#Q;+TqH|0TiHKS7+2D7W2xE`UA5AmIPV zLq!0V-b6^q<|n$Zi#F<+=a>OD>09{(l|7G{LaFmH{#}~kq~ybjRA(PvSl703>i$tc zZd2~UzDf+EGI^tSEbFNoW~!=|*_Yb~arKrYuWvZnF96?MeZ*kHyR*p5G6`&;2H`pFtCAvNJIZ& zXFO6aRs+8KrA?Q%E%Wy(gSUblCQMN+l@bIE5H!O4h%7V^k$!9zy7BlLf;#;jgvYhp z-{j6qs7|&RC=6bJVOj#72T|PEb##=KUj@5(SnK%tMV@6AuJ~W`9PYT2klM8jii8J% zHvl035W*LUn=F0I`;Z+@he(?p4*Y+mUm?ZIdH}qHgJqH z5-SMIX`t)s%3O{z;KWPg*6?G*OAEv+ctp2F^a?{!T`lf)vuA~sv}o%|xk8VL_04ai z^^Zuf4ijGNG?#}K?>j#5P=A{#)IFHN1om9jvJtK5VX`*JDAZwVk?qxdZsj+ z5XY*D{nOE}o&Dbv*!5aB(?{n_F!RwbSJpVk4#jj}@7)mQis&lic?Jdfkb6-F4kKow zp}bbkb9!p_ecm)w?v!zADKDz3LN&y{vx1|*HSOBV5XNM%&OU(| z>KK&QIz$J4bwAF1OHp*DE9!TCAezS?!r1YC-%Oj`?sY5At$VMxq33Aq9r{a1ymQU4 zp3y%8e!aq{aU3GeUSDq0AjpUG=bfBU$Kq_@ec8{?lAS!XIvd=FXEcwa;B7vUT)jWjPL-A&wvg3E9<~FIH?L3>_m=p-y8Jw5)Nl4HSsYdrT%b3LWvu(aZ6g(Q~`B+)_P_+L7 zKs1N&DeBhD5T0O_Fnk331dGA zHM2xfHTo0k95UR-%A{wDNyS1_Ztv|1ee3LFHIS-hD_D){pVq+JdI3VYeS~W2JPGcZ z%B@_Fqn-GvR#kWn;~U|9gZ7rn%>8$xoQZec#R>L z38GCDT9efV1qufUqP)$-Wdn?r&3<4BrYElEIDG}VAG*uZ>9JjSu2zU?V1w%z_Zrjf zocFRD6_|Qd4;oVy+`C$gGph0kAx1}$I20}fV3SMx_=Q^ah6gH? zqCp!ZHyi0Mz@hmIFy#9JSXbC*H|d$D(+8nlp0=FZ_AXKtHtBqFrhNe-&5tMf9DoP- z5Z>|gz({m^T`2Eveaj2sjUatS{~J9zbS4L?Z4>&HLP7>&f4_C^b+;}(G6Nl{F(-~z zg;d%ingAX1?Etq7x@@C(N%BOK4|bw3v7#qRbJ8RK*&SH7d!cp7UT-&6gf#*`$PS<@ zezmINv0d9RSted7zTbW$#>vukKW6M(Jo{0%LiAX?C=2fEb z&u;}-tlv;e-GN5oI@13pL}l(Vv>v;~4Aw$3f?GQ?g1nsC^{QL64udw5{E_9&*tCUP zHZxRiiABwh_GT3_*+p2d>S^-HYvQ6pM2?})Sg|2=xM4bWpvM{*DM0b#CB!sRQ102A z8ns+$7t(ZZR!=E%Z~P@Vwe;ZWbC=vwlXelqkk7kvG9EOikMA`-#Z!g0Q}`1!4mXAU zW0lp~SXA34ocX67oMe!hsVJV4`RI~krhRzkDYR3up10H)GT+udc z%J8bsd5^tS*Ed?WsvwcSwo{+4edZK~JF+`$R(;mJI3HThE%eBVKD2)Xef%T;uze#hNk^BZF!Yd=_-ELkU0P`y8UP{BH~9Sik?n%RhG&6MKAY z!9sUz&S64zuPHp82}w~6SV#1g5Oy4+{-WIM@O^f|OfS_Lc<&1pjf7-hG!Nph2NsT=7;F&xnQ7mQTh0r(7_obf?DLDtzYn zHN}!hs8W&q%hiaz`y%j(@_KKwdcOdBb4twOuz%`WO_2Ol_BZyAOT`kZ-d2Z3(N4zi zX`YT63j=^ee*P8^GgLG(pXTS zbIIej&uv^(kEo!(15Zagm#zGp%Td}mXA|=BUV3CnzdUeoKWp)+T-{q(+)Xd$1j(H7 zn3D+obd@N#L`Ro#M28{(_C2Cm+B5ODTVZ@J0&fUudv9lxjry>1>-6MEly7&QA-w&% z=Wb;<42QDK`yLSr_|EqCj*5bNCI&sToEZ&y7O?umDm6_aOR}PTjWAQBTLRI7hx=q9 zqL3cpD=M-o+|;}&X*-{(>Of3yXm0() zSS+23iScdI4=oCOCK(Cv^v4-$?YJz4{7RV+|H+iGH%8e}+CWe}=i8;Ao2WRUZLjSE zb!x}&suy5l(13kzKFOtWO-sSdA>(6Pk2PjdJU0U(THL^TM&g!+Fu09;Irf}(n0ZvZ zzUJo?z73a{#Ewv=#6!0&m==hz0(oS1mqUA_eR&7v@TREqwT-rlh~x4)B8kgSW#qA4 zgf81K%-~g&m88tL_R|SVgxAFM_uP30?F4Pp93{UxYPBV%s#mJ3`Dm&97Qcsdu3z%> zd&Q_ua9Ap!?9VQ$h1px%#H>Lwecl^BC^dLWy zto1o}xBE!iX9|5gI2ek;3XxO=E?UaxOX#N~LRIhk>Y_G$frzd427BX;79?`49*-}j zQ^JI$I`YeCD=G4#B(8+J?cNp2_t(Okja7G3Dj?TqSYJn9&&<817=8j|qN^ESRq=W) zC^ZMp8Hp+ai=Nq-KmrU`WAG^9%TtW}b7A?uL*$URXs;WJKPSrZ8J_v6wkYBFHd~+1 z?L{rbIEB5+y;+^-j;AKxm2%C#y@qF6fPg!rGo45zI83tUK$vZ;z!u_6FqBynMUWIoyoz1UL!Q=zkRnrlYWk~E$Ou*)oN|{$|<=D%aUrn)n4uU>%K!h4#n{j#5KDr${V(+y9uTCsrEXC^#bWqA#Xc&YIf ztnDr1QHJu+te{N#nnRDLh!_+Yj$cG!^n5vkV$Wqx& zwqebs+LC^C<|gx_0?@M@=HOq=h2#aLAnOG&ua7ifn+C<5sU3DA6862?#4$CdGKKzg z%=JL|A^TawpuHX?%%tuL&yM%wM_{i)(sr!Pqg8k#efjGuN5g0E#HMhmOo~|Wv#m8+ zVZ^ycjXHnVyepoP3NMCs!+He!1N4~5M*M4r;2y;npe5X`pw!2xphn2(ey+efVw19g z*yaUj&=I$9u;KcEdoh=J<33Jgzr?xceAq#}k?3VyFlJD(n$u&07?^5FK2GM?4cg|&z>VUY5!%wt#naHnRkBgS!Pm33;J zttpt}#yPTTv2>Eh2u4IoZSbttLnBe6$jki&h}-Rd?gH7V{RPWm%Ycf$v1BjWJC@K6 z-0$(TNGQDyjY)RlMABjO8iejWX#vR4&yH#JZ!{m9TOIldD+l7c$wQ;1=GmI#VmqT@ zDcZcOwI8{|Imc1n@TnKsTlq&k$SmbBN=(WS7V-2`x)2An9?K)C&GNA~htN$;YUdpB zG3>P{METG))Jf$<$TvHWnWjR6#)#Oz#)$Xr_v4!_jgWTUA%lT7Y&xB?Xo3A_2#Agu zDO+WBzGky+wS4U@GAjx`)0_x$3~&rSieP%D%%KT!^)I{^o2z|nx)?W(^agRKMh z+xp~ptEDB3K|$_zzItIO7>Fi;=aTZn=Iv*jqC(x3O4E<%12S3033VQ{>vjMkip+TV z6BjZ^CP$qam6uAUJHBa9Wc!a`g&M!JZE)_`+;bU`oLBzaF*0 zXKZG$F7%|z9AuDP97%mW>V7mWA->h2TjWJEri6+`NozRwQ_@&&+?(sPJbD3eKf&~@ zVoulEvJb~^3P|*!ae?K?!Be6t@8@&3fTM4F95}A-V0#WajmSO|KSC2YI|?@0-&9d!0d(_ zgz#xg((}KYq6{yElep5W^hU;$7lai&YO0{QhjE3tS5dCkVzcqUsaqw<$lggLtHN;jofw&>=)Jl3SCN`nou>W&s00Hq?4$VoDz-6L;1_J zjji2tMu_?o*P>U2p~IYpxYTDzWWb6Ld!=D#j6E>J(s<*p?}SkW5J=#PX-w?>3}52*kV;bIGD)2qbb6h4|}*Xtst+CdMoQFaf1X+c-wQj z<0R=hT;>MzK6pdIS*0Wxa=oe{31Tg%0{?=z?03^9!ip4iZ_2ZHAFK#?xx2tR;?*4I zOmqpHs08z4ieluK@`(dqz!`-_ca~#~LHJX>Yz({W%H@&`YqaC;%{YPg{ax{c!p3++ z*11`@Z>>$1yET>ndYVK_F1%f5xhCSN+R=Q*eTB;l5ZttG@QC~ZZ0EiJPvVYBX{uHW z&g5rK?rZ%g{6n+X-U_4Ri%c17!%KHw^($$6X%CHkJWFT&u^PEvdKdLcnU6FWa*SBq-#j&06#AOgz1DnfM)avzKpj%%Fsto?0<@%@XNwq5myLs@Yf&cf&~4b zU|(aGQ1CD?(6ET`h=>UA2na~X=%`4@Xvhc%sMx4z7?@aCScoV%xY(Gu=$KfTe|3q8~K_OW1*VyDg@m2tUgaU_#fdGRA#VrXy z`LEc2BVVx)&|okxe+U0iAy7e4*x#=~b1(#-BJFy!nD76h22)~@^J*gyeE;)bSwL`y z2G4#;1HE|*mRIaQ*M8h>mM|joXSTnXPw(VtdO*)%PU6jxDXMknY0xGk-xr;Yn;er{k3XD--;-PRcNvC z6OQ8Dqn00vE?Z?(<6k5&;rPRv&D>MUn%2IeTSC9q0hITG={YWLkALBzyri9OZiV=` zyjJj!3cmv|pFLb;W-9+e0<`pH#^!4pN_;Os%}%atByc4~Gy{K>}rjEXCDCQd6$}POz#NUAl#0d+^>xO!XmO=)~ka+_k$%JX-nwh z9~^kDch`4!&cw;vf4v@}IXg7@3O;O|RkRD0%r$O&(v#+9X;dI|9R7PvDoO%=%!_Xdb>rrLO;10vGv`boU&j}{*J z-Pbx5lp@lxG2@m?HgH%O=}Li(D>qqDw?^EMoN&Itg2@^~NmQJxz=MI%-0v00-` zJfmdPK+K;K%+d_T;fNR1oEBg0n>6G!`I3aW4a*X_C4K^g47GWm8;BFeH9hw#5Ub`b zskOvcw4iNrhMa`>T;K?9Y`kr`*>pbufRfx)Ki^Q?EbrhPYObclG5`_ltfqbao5&!! z#%2b`rY*kQ>V8QA_aiuFNBe`2)%)smP)Aiuv{TJbMR$y7O3kH@;E@8nzS24ci@nDJ zdF2Fk8q!nMGji!9pFmvzG8#67?6vvV{i}mR3mQW+wW{&}*qH75rv}9q1v1;c20elO zB_iEn*d@PLa@cS78+v(+QSL56+C%N~CCO~2pXLF=)5q7AslS**JfAzxw!*4D-n4xs z2UzdMY=4T}cCVbK>RLB`+^a`x0H7;A5~x>4O}ZZ;wkaz_S)zE25`ajBLH3Rj6##<( zhkCWsf7?9JZWBlV3Jo2D^bIts2qr5V894ZO9SJ!((Dg< zQTa5RLbpXK#>Hp#7f|$QLm7k(Y*7MQI(}<&wrvnX904OIQUX2Q9@bXa(}m(N{lWZd=*hcHH(-JQflt9Y% zT7>Gw4qvzswO#Uo@TRY!Yt`j&=DNBYs(lqqJgBMdGB&A)toh55Ivb#dAe`3kK3ja7 zOqJ(b)pPafiatfX6y;ESwLEM>I!}!$@JzlfKGD8J`vtJbe}7$sy;HgewNOS7rAai% zsR6G6w`EFOr=?`BC7vBtA_=$XuFRXgRhKoopn;X2rmibnqGi%vt@qK+GqC8}FyHs4 zJT~bMT<0s(7gxPvN?ED*YV95a%s*i`aknYnBN)>~v=XVVEi80T<4XVbZou|_N4&x@ zmK!~L{fmk{g)#)8dU-ZC133?I_H-zj8|CR&UR@S_v*w#6*WbEqPm(ZKDJbo%~lReCiy7SEEDs7a`4MPelE@9qlw59q#E0tkopp} zHr()R2$jD5I>YH{o^W%8c|w@y}!(8@QW7;hYSE2Ma!9@?35u zy%|eeHLt@3(8`2|(Ts>e_n24^%XRm_HuE?4ChA%GZ3of_BFz<#I-HuMP3nn5VQQeTjm{$jeWYRLfLlux!JC& zIlSN5t{ki19t&fwr5?T-0wV%L6Tdq63n{RZRZwRs8x;^uI=*O2TC#mb-7w2*kSXha zTO}E5$ncar+#bihd<4Fa;PU0TX*9^_RG*6ZhoE7HcP;q{uGn(+j;i$TkX|mrcc!I= zSf$>}9W9nbxTk&a-J$w4)~-C=D2Q=O}T?N*(A;#wY#B_C8ILhAT(>+sR=PpUi09-QM|~I1Wn8g1PK}C3yVyL*N$)`YeoqX0QmKfm#NYuX-!<5m$5o$kb3t_?U{)NjXRpouWKZ4`I& zvZ3iiQkbXlT{rpW{0|$Z&PMSUK-(PV4v`{;YsW!tbqsTQ)%}TXzqNkPaD9mJDu`w# zcsMG+5<=~(Vx;dEV+RTrK~ zjN(%Ly(wLJ`x`5pR7ZsTZxIKv3qj`=5}lhnB=QB3qZIh|4)zi80q@)6vs@OOW~Jj9 zyw5FQaxl(w4rVvZ(1PF0e{tWykw=}zCYmB%fLe--uP1ZG66kX^2;@5EX%e3*w>L{8 z-B&o|k(`Rq-L;tvHtF8MZ;BbBY+OFi-REhE4|}pKJp4iImv{I>D5L8)4Ok$uhGo(2 zn~3jpl`#dCt`vdp>l>HJ$K7fQeQ4KEER5tk^Qp$(33LP8v~}2+eII8yOyy8)6Y zRakgqO@lT`@)fQ-1OOD@()Xo7Q~OJ1ze)aK40lLUOJF-0^RDxoNorW-@6-q^8Xx8G(A7gGWjHBQ6HGePf4_@R{}^F%}`uMam34`OD}%xdbr-0-)R zelTErEjUxb^WCr`=ub$~w9U%$;4>3HPzxqbbpgHDhWKJX+AT^j1gShnybFICpn&;n-x^BK3VIaV!o6T&MC{eTj_x z@D<8wC#GDiS?Z602M+=8a>&wVT%RA8zu)d_HDo@G8>~0j?_ffmewd=cJ_Qtw3Lh`$giS9`1?L6lL*>uVzk4ra ziWAvQ9ZmUkYPF-5&Fs$eO)(^-?sKA@yd|%bmSl3CTbDUZt-w!-?1wTD)U2RM>^Fsx zrQwZnS4}lo#R(oz^kmOoBP^zeYTn;l>7*Xo&63}aZr;GAiX#iud%CSwM2%*Ax?xek zK=~EQFVp8&Qbutk6_gsj!anYJ+4a*Lxi()dSfh4ml|$sSxjl0vg(LN+M_b#^pZ$-< z$%`wQYmxLrq7<2v_u8andNCQG#dM!5Q}CRgE78$u)2BOHGg}sg3R4J?JvpAqg>2F} zy_J}~afHWzvY*nNZv6nuD&&kB>`AFV%iXOFX`3UK5m9%= z!CFz%?G!6P$_h;U{LxfBO0sy@HorA}E!_uw)cq5LN_t5d6wWW54n`l^*!5J#eRe46 z4%$yF)o-IVpN1FZp#x5=gtL*&K@H(Kr=HlRO$XaTtw7EQuWAuV_Ud++b4z)Li-nXvM-mP+Y zz9h1lA-iSu=6;o{4zuTgQjB~UMsVEBCn(&oMST=ODeG{lDDni4B~@=m9k+N^bbaZL z{k#?5&;#7MvGR$TJZyYs@&#yDBHX|GK69_8OZ7gPx_HwqeZ<%J?!8b%Rs&92%nWd! zCgZCO#b$?0IOm`Tf2vTV4F2}(QSA#*IyJ%Demn0R`VPhS#2FJY$o`qzSCzY%4DOn1 zorEr@=1~QS_yKk`@V648doWfKYgGC8&xwULFo>-0Hv_14w9mAWj2k*wNEiA;QS1vU zun}=7t&1UsjWFziNgg;up~#MfKNqrR9*Z#CSA0S8ONR=Yv4H>a-u_ zN#BTw+GoX8`FEX9Y+U>^xe+GY=^1Xql!-)h$@Q#vws1q-=!jD6+MRD%b)tx!xb0d0xznCV`CN*n{CMkB5c zsY=;Is>l?qL?&2N2#OeM&YZA^19A!XRzuR$#e5A*9)Cr>^1Z(51DBLQiT0TyR$l?` zA*iZ{gPGrpq}uw|t4kWTP+XLm|#Fj3Y%0@EV38V?Qtux}ftp`%) zJzs#-6ebw|bm<2^VTA;Mgua7oxTMx=<}55H)5P*OjQHWzr5f!5b+zf^he}zaIy0CO zNIk|KJURIYs*_xr4|sNTjJGT{s{C0&oT-@&h{wAm)FOg4`zDhc^Xr+Pd>-higp0;G zRS#?I27AyP7>2s;hQN@9KGw=m^Z%X|F&I;gu*L8&uk@2w-4GY@8|bGYc+1V_$7x{3 zA}H|!Q1KK>y{CaO+j#-Z;?hZaT{)TD=72Z#<%90{$p zQW2O?IJ^KSfO?lG60-E(1nRy-c4{6v#K)Eu@@CX07}q zL>tOl*>ij87tTPzLr6xD7ncQe1=RoKDt;O{LJb2JYZ zj(3p?A~y!MXVG0EG@rY5V>VTc;`~Bey1;wK!W0|MA~(y=jJ_W=OuN4+L-FHzGE^UZ z8)MOXZ}^n0bEA01D7Z&dE0QYjBNqQ{De5hDY_ux7>ns=M;~sHZ(o$%$>|%K;GV$_s?MZ|~M4~9A@yDNXu#vi;bni26S}yZN=olS3 zK#KO~48@;FH$*n@w=X+{5n8ME;I1+xn*zWbYAw4=}OpL{bnLf~&W zF77)3w*41P0%)br!UApE z`upK^5-9b$cR-pl)(`XmgROb0{5K3bWW_ZGLWzL#K?`gWOCb2o9~j~G75)PPOshWz zDdXie{6LQev)v$AN}m(}a(qvlM{?t(p~puPUw{|jR5%3m#EdmaNo3pC0oq*%LcvK> zdit)u0MDS}spkeMNtm{|FJIpo9i)s=>IuRC<#VMEQiiHb|EVsq{vc%p)A1jex(kjn ziQzAp)@6Y*xC%r}`D!N7{+LN9&??YBv)n&sQuNhKD%tyIRh`Fm{bMFyXSk?4{;To9 zcwts2=5hp8$oiE=|;?d9?DEUBp zzc9EM5>^(jKPU!@p5h*eK<&HR-XwY&{__xS)Q#l*RCEZtX|I4fu) zcO>TgZgN05o5>@YhcYv?yn>3@5 zlO~E^A8UrGwI?Z%iLnM`b-~NM(5=S118%Q*_)c65Yh+h{8#rR)=UTw4OAh7cqzYXH(}e zvnFZZ9VvRzeG|Rk1$)o&!QO2OPhySdTWVtV^q~0<>EiJ-YH1hy;SDVTPsNQx8PrH< z2#NGhOVUvh?FLwa^KASM614Mq0=DFxU7oeZ5DZw9$kSd1+qCx$ovIf}K5DBt81GM6 z15W&7>TAh0KVE~sHA9GxmnwwY9v0wW7Q{MEgG}(^m`U5UH@n$5mSGnldiH>f#~;g8 zR3j})p@YPn(x(;IExS6)dwZ)2+7NvqQ1Oq*gF(T9r1{?>j|w_ervwstL;JX@F8{2F zjq|@egVzZx>Pq(4L&#*Ft)G@c;W%A!{Za&l(2+&a4aE1gib~~MN}7(fP9n|8?kuIM zvu+I#81~|&xB{S21s|4{gr@&8JcK2DdycwEKnSxK&E@Q2H9%*FtW@uysJbi9v1kE8 zV}Kt#cEb#6x)lfO)_{|3>*nK)?`Ts|2;PX#UiHR#IAm>-Ca!W96R%dqLBx#+B7{}( zsXn@Z+2){WgKLrBkG-Th?>vOX;d}uW2|W`DyxqDWmc!NKm8Mz#?vg$ANX!m{A^&{i zEtJN2EO!j$Rr)94m`Qs^Yw(uc0W8l);hLK&8rJ0RrJ&sUV^dvhf>mL zg=1kgKjs_}A?aIRI)O$;qGN0dG_fhPDzV%0g^a`@i!FjX8MO5XK6w28aGmD&^>|1w zhhXbc0;0c)s_eV2FE8YgF^p90r5|nxk{9e)nbZM78*hGmB$}GpJ$Q(5p9@-mk&PE) zaq^?T0tJuH+RD!yDhP1h_DZmQUsM0HJh#4sfvgOd!u>_wgcz9!y?u~6hWL8$P_GbS}2 z*P2Y#9VJot%aEDo5$7BJHdfct{#bj)be7GI`HEXQSgJkEUmwBLA-H0P$Rsc_y!odS z{30Ms8AFgc(1GYV4jy6`M8ykvSwk7b()AA*^W3nx8}bTu@VL8QGcR`7VCg)-@GIkIIt_2p5<>)!YJ?BY*(_Yql}_ouIKEfR zB)Fddh>r{(9rC|x2Jt6hVo#e*hgQ_sk3F)U>>#A26+y{=0S#7l0inuXZ>AG#RC5B* zjOi#2E7AG1#3&;(dK6d>{TOgucm=8oW25s@FImk#uz`iw(_Q15n2lj7#FdgP@=$f= z9oS0=hILbOx>@Z)SDwRb41(p?s0qD|oy>VsNO%PMGc{wzkCMAS#{HOgpff!~95 z^VY!=owb{V`z}2pVrX}3L=$cPi8zcjo=c{-yvp0-L@%<=DW6zbFPdxQ3wZ72g=@>N z0}3=&e2l3?G`~JdY93WL4f5nYn6`Ho;Nw+Sx>D=l(g%!h21a+3HQWTKuD0Ux%<-Eu zudhcI5^CR`eoH_c#FdMp*WySN;68+`XTU{H5~5S`|MlZbTa7E?d4Wl;jMHwe^}CXE z(GJDmRz!|i9}pLf0^w{X@E)$E959doq6l@o8N>C{Tnoq&Wh>nv7Od}xBfOy@iP1u= z;*zM6^V6YZFq`xT2-*GPw|Pw?=#)wANYKh%$~MbvcV9wRhl|Nu$b9w*F(BO&)XV0` zI-u=JDEuOO{ddmfT?D^-Fk2DnDZ0&@)4tpELXaXr@1VGl2>N0+#eL*vYR;Q=Z(q*( zh6M|Wob5T75ud0Q(J-MOsR~+AHzhNCV8wAuiIPr5cOz4phI6E=flf*zmm`}M|__rt6 z$Aw4y_U_-wT%h9|GT3(EP6drnTyJd=1-VDYUC4ef^viD;G>2o8UrL@VknR(E2ZSty zYtc!vONE0(i(7Ml`{!z$C7+;g%UVbIh)UG*G^4IryzrH26;0PMoa0y*I(h*=0~CiL zqGd+#8$wGbs!k~8sj=YBr%4ucIEu}zG?QYmwl^{}0c@l{B$6^PQBPWvdDRq9$#Eh3 aadR3eqhJRwqT4^z0mT3>@^#-{|Q%nAkYz+5esu1pJ>Ge>WiiMFs_)5e(SU7LdXIeRfEo z4EbMV^nc5L%YlIYtDOU&4Ek@G{0Hy=NYMZMKL2YU{Jl)z89!G6f&gepNGM1MXecNs z7#L_+cr*lfI5>E06jUTMysrfKcwcdGzY)`re)~>Ego{hYN=`*b&&0$;K+4X|#=u3x z$i(os5fB&{7;fP||Gg$KknaFcWDqc9kk38<0q{B@{@yW= zzrFeofq;U6LqI}7!@$A;3)FuB0DB4y6dVi!0vsGz+6$Nu07r&EA*APrM3vKn`fi8D z@H;vinn<9!8(n_-ikMN~{tpZ+1|}BvSCSv3WaJb~%q*;I>>PqWg@i>!#l#g9m6TOf z)zl3Pjf_o9&CDGfot#}<-Q0cs`~w1mfh)L8|DgY=UdTYb zK*7Pmz@h%?1p?{c#Mh$M zwRb46+wToofxXuQB&jm<@X~pCwbDW5zJC<04xy@k{9b@N&(Dzfn#u43TuFVJX?~he z2u%Ty6GHaixxte@JM+t_-7Ni#9x(}Z2WOqnaE%B&N))pm7riyv-3 z6Fp;q_Hx(OOXRVy8po8vo{fT0U@?XFG&QY3W=;sD!k53T7oSsI*j!+2EMO)mAC>Ux z=v~V7R0s*$v$2*=|w#Q8gb-SWXAZ4No+%S9!`_u$&)cOGTDw>ha_l^3^CVPq-R6X zsMAC6yJ>&0-e{tMpES znkN*jAIKl&|7OE);*y2bGJEn6@$%8Boh7mjaOtK0KnEo7YJ#c7Pq|WRg!X<=)O9ow zYj{qN3GDgng?&IlMYxvP(d3zq&pwr%pO}dWjgwnBobn==sfz?Us#-c)xMnv3Feo68 zaj>Wci>)~qvYQ_(eoWkPk#m=A=R^xq4lFA}W#iYIu21YHYuxsG8cdRmnu#c^xI%d0 z2lBfV2hkM=IIPZ;gsU6OE8Lg;S|6v|=nIV1Rg9q7%sxVjA8jUR*4E3V?S-qN(T zd05Q#=6XTa;d$!qYMK0V*_JMhw{X!X=tMwH>eKZ~AQ%>5aaQxTi4-o8D6;&KIsaDX zc272fq>uu9g6A1v$#Q=EW$wamZ^HV8yM+KalDe2V+EiRo4615tS;Rr`t(V7Bb#0=S z_L{5n`-Kd&wSH_P>c}{xwzWsN*e6GB%6_JE8@ZY9O~6+-OT!f6N;1|r{6m<3g|39dVN#oM-2Au$zV#EJ<#`RG#)lJ_ynj1IyFLNQ zU=JyS-Hij2Z|ZIt`EV@M-`|UA-0DNWZ@HJ|!t+$|H8~usL)Bw)=rTV+Ip!cer)`q0 zcDAw}QqRPKDmT3!?Huo!8){d>IRmaO-erAF$hv6)YC>eO@l->-GmJnYPRPKR!?ThW zR^&DJO~@{BrT!tOZ*7f}oYxkY?2Rm}+R2@awmqIrx9Hx%$DU)HhXBEhl^LQ>33AF40iN6Lqgs(`~6sk z;u)Tn?gy!vhG;A7dYUqlg;0*#-?AClp~dq&gV&X$2_-n0eVp;sT~WasmU5GgWKhWH zOo;1qHh-w7f@j$Yr>;5wEtMtUM;Ur9sXhyhBU(@>+!9oi+=}zBO zR7-d^x3`DGGeVh<=3>gUoC;pRhjUd^eXAIj*U@Sq9SJ{?aFj9IrKao7ab^pwiF-hu~Lk z+iu;szWpw<)B(}D>Vh@~21r7($dEEwyD>iM*YxajL^P5d2VO5e-Q1cyYUDKLlkwiX zSBR)0PZkE&t@mmv7xL^8-{qO#+%sp7weSw|bB|is6SM z^?r79GFKTS?a(T5A!G&Bqmsc}t5h9os%g{YjY4$ck*TNcpZCTz!$rJsi=}*X%oelb z1a-jHt#s7H8_8`k%Ot@`O*24=17~`Eo{J^As|oT6SbQwLr$lf1-83QOh&#X?*Y$hc zW`$?J-(I=D{J>PFB!e=$CN+8-@T1<~plb|@?Ns%vXTG<>9IlG>&<{V~H5E)Zkea!5 zJAa!byAPk?EX0@|X(5fyUsC34&Se%b9mf?R4EU%SNm)oq-pohi=;sk7CHtZ*Gbp|0 zTM3eg&Fr2TX^81>8SS5dU7G6c$5|T3hK}G%)xco=&~b_phsB)3Z1y4WD|eM&vLHfe z|Baz)Jdv-N3Oq6q*BF`f;2-)jTmOL3YN!1Hd;%;M+Bc=O771I)#yuymEW~3T2jM)y zpvwqdjKRXkU?F&A$9%S!@1{Nhf;EF;M(+@wKP&{|xyBbXgvccpbMD>o<1yB8T&6K; z(($L?9il9DWpLC}X>l#0jBII*^cu6^`+vO!RhDn;J+pB`sXx8;H5M1U7Am&~KlXF) z)d+8tXhy&2x86`m^y?qWQKQLwH`=_7(SO+s(KgmXQ;rDC-h2vG3YDJCx&7fS#zjHv zY_NoM1xEZ^M~Qs^**>;LghE<+ND5P^;~KIMKeMpE!(=bEXP|vKQkS<2J_f>L(eDjG zZ@XyoEcLK8nlIr%mN9|>4XLFWdyuq1tZN|9pNr6ByPVsSN+g+cyMjhlFHdiCSwwGj zEk^pFxp>)CgTHC6V$_X}MpS8(5d{G7h=D4c=@7(@ERIYq6hFz>u=iOMT8a z^A<)5X%i`QWff;-B^_^${SFP%E511`;;_0Fg*5r`{TlBwm>HwF#TgmYGl|tmUx)w1 zOU6C2kK=qZ=)N^v{Cur0%(KpTD46jkYs;1=?Z!Q2w9+9R{L@P-G%E+n?Wf( z_EDfk22NAV!7)XB;Fhb}SK|Ta~QKQAZv3BOwpw!joo8&z?ik4E4 zsTDtjF1HJT^5YSw`$8Y1m<_`yj+N7q8A*t$Avu$EET&;VHgz!8KyyXVP#Y}|g%k(*mS2a|p_v|2}jb-S)!w6&});@8~jrXk!#1v~3R z=dmybEd91qm4&)b032sSsT+C?CGsu4Mkg$T4A$|fcJU6ruMwFeXmcn2+Vatg*t~VV z>I_&6+uClEj>2Z7_>GmsZeO@-LkdD+JStwn#hy{*Yw?sf`-{?JlMlvGE%jNs9lN|B z`!LTO$mEF+Zb7&@HLKf0k@oBYrD)89E%IUbT==QTz#MrNUaVe&Ka zRnb3B`%5qJZw>D+R~Usm#W7k1t5V<>Eq0I9%TU(@-o8*r-a%K5es`I0$H91Qpk!67 z^ao-?7lWNQcU_e@bmQ6lEsFJ-+XO7Y_q-wkLqT(9+S~j0mJYP)6EDB0Qs~=;VNKP6 z8T}$&AQsqaC-M0xrwqCC<&-;YfJZ`;t;~q8zuXjT*EMYjl_zVyn2QSyU|ZJf7^kM_ z!eYC0zBnYarqGS$-play6A*LcE)JV=;O-s3+V=^-toXfMY<0fB>g8HM=A5DEgZiqA zk5r6)>tx{?+J~7zvOqFt0}a1PAdB`o%8(7QA0=Fa%>Obwh(8G9ZK6i&&kQ{ zl{SgpjwYiyOD4AU27!VdrLGm#tG4?goTuZV)77xZ3(vQsY@oNXq@JF^6vYd{rn~2=54hkQ*(@^3Xx~k0mCfU}evn~&US+1`y z5|VTJEdlJ=(b}xCBO~@$_@JX4jFF+V=gflhao*WA^$g&jA{sh|o}cM~?^FoK>IYWkf< zf5Kn^;au3!zZ_^IbUee*NsT0^PH=-6xy ziX=o-Y zx;{sE-aa3SZNfQ{h#hvu@bXyg?sE0YU@lAt(C|fM(o{@r&crmNqM(_Qq+H)Z)slGANtgC2*A7u3ml9hR|oJ+~0uwiLi= zcoTJRvtv_SnLKEsWd2(9Nc0Ja<-Pf6b#M zL-dW@mrU3`a3C&^eSsZqpDTA9RcUU^VAGe2nOFjC%kAgI$j|hu_|uA--4gA_dr|yh za#Kl(58#sRNGb21-GMintQRua^iGRF--Dv27vR-q*>B!6Ik;#AgcG~sE zzk~A$Kr#Pu@uImKv`gSje*|@ZsWv;wJa@_6S4mZ2KXE2Tx|R~rF-bjQx)r}rbNL|> z9Mm^bd-f-UtWxoS`*ur{MPln*eut4@byXII4aKM}8;gG5p=)hsYd6DvH&Q|)AOZ~L z%ua{QvKQbTkpKR zlGy_{F1l!?^Uvz>4myv=N`$BJZSw88&g~y{5n|L8p!wTi-!TCc)pyER_{n(Qx|GW` z)767eO*sm9eGGyWl!M>VT-OCDi?P1>c7r=t5>bw0;FrY92s`W3ZOmW<-$0z+qXUGh~=%Fwd2A*nk@ zD^UW@|0r{>5^5G)DB)Nj?d#{>_^!qr2AD&Mad6&EwFj#|;t%-R+qxp~q)ovVJoSw5 zYjgUG20#)(YGfR_k+yu&-6Vq^8UYcoX(4x&uom>|D@i||bECyMVwbKgk`|fNlwTxN zqw}LR_Mw}pIB}880jF=+Wia3QG>VQjp+cFe^IQ{dmN6}Zv^(;h@X&L)((5OVGeBm_^2ChYDu{J1S?1pYdCQ%htGdDU zh-6DRDHhXJIP(d%`#Zbt$PJw`>c8p)@6&m5&okpG%lX&Wt!J`G7aq0C?Eb#gstCWD z6t1OMgrUi%>wZ6khQ5VLmfVwMjNiur4>aN7>hJ+>|mgqO6tp zeBmC)(1I3!?y~*~Na$;5P;QW=BKsadjHQ|-H@L-yZe`up@r|G0RV3l<)f+w2fw>_a zBvZB}V1;BaQI|4kk%#hlfiQd8YJ9CXl0*6nz7Oy1xV>EW4&~^h-7|1*{s{=c^A!3j zv1yV$%Fv6dsX0T%!y>e2GxjIf? zo>VuIw(wr7qfJ>?piTGozwX%qM?S^S7y@==l*{2%2HPX^E!$dT@~x20xXq(aZ$>z- z4NZ7P-N}({m+z5z{Ca%(iDh#`h|yg%m=8yJ{+rCzL|I9vjlWvbH!+AMa?ilXUf6NNa?$*>q8d?mKCOBV=c>u#g3rCbheHqZc{j9c{IM+r@qH;-n zI_`(xytW`2HZ@;W#H2+xRG>rDBKaW2%6FCXj3zOQ=jHv`XCLgfj}L9GLJf3JheY(L zff1YCdmE`IJB(DexYLM@Y^&?cH`m2HnoxHYY8d=wbgjD3v*~1jG&l=lA)kOFwu*A5&@DGV zq^B>RfUi|d8iiN}U*FXWPn(XNjHi2abEk3F1EOt%H4u#pb><{z6=t>^T< z?qY>OV7*cD9ns?0cqC1^3^EOWo3UDCJQ4f72oLqNz!*Vcvte^Ev7*p3t9_zFY{23W zyO73?b)VmIP3v#z%23~nbYWDA-a)Dwnrl^f>`(Bd%?IF3WG?4wsCz*yunPRMwjMBX zpwkQ&eIg8Xs-irmQSjQDq^sk6&^Fkg!G2AQ`3K8-W&_3mF@PBRjw{nnvm>=kYrF)8 z<|02mwJk#9dC`k2;bj~+F4A?kh8oDqxqLIARafX^GvjEC(FF?OJr4XM6(kE!>?O z(PGRNB^U-)HFb-1B>#X6c2?h&WRP7;XKz!pP`)$kni(buY}jMqh*$4|`#7out8Hki zYV|u=PzrI0*mK+y>~Oa(40P@yNc1UBYiQ-S*$ICbFUf|Fhk=TbW|0Q%Z~)6nz5xmv=Is_X|D&n+d>ItAw0~(X~KkyGkdI^b-(L$(_^sQ7rN- zLwSnskv^A+(WdaNJ7L*pJt*>2dX~$pVpB7&W!_j;2DS;bi9^X)7`_nP9)UR^r(*;v zsN`don^yxp) zo{Fnk`^R&jlFcRT0$rFlx&gbi{8M_5Sj^1`Wzls!jt+i$(KaYF&mYnD)(@q~GsxZ+@1MlWq&0sCN1w`>?ya^|f&?WP=L18^!kT z&zN!OcVi<_MV@oeIt;Y&98xr?2RLMq)V=cLXd)6kFHpPSQ`OyCNtUqdq%^q$$O=Vp z#wmnQ7>D*Ka>5cwv%s3m*A==`4q`1E8CRa8E#c2$Hur7C;GrZzhF?4GQHrtZ^3Im+ z^4SZ?O7nE(gv``keN;MXJVv!Rb~Ky@CyLXT*`7s|_i%UFE|tj1N*ncrQDWTi43)Ej)6f)A1!z91yd^ zh#IJ#fz982!htM3GLBD?^n;YQ93a~iI^5*?3N|=fZ}H@Q*3X(C<4qBf)!HD=&60Vn zbWTFImK&*U3N~Gdrn!u~_`PjshX|rCI&+(?;-kloxeEJSGc(Alt#p$P5yzJg+xZb? zMYG=l%qoEtg-92djvWeWqa(EP>s8^O3NF4*^QP$XGLSCYW;0tixFe3YwcDlJNTW(r z#$p&TVOk}ROrhABG(vJQ({r1?p2+SDyoj^4ig=i)m?izOv`;{l^qRvgu5&rH{5w-S z#mS3QzHWFLCCgMFA|_AXmN&C?t!XA4UJhagyRM_uK^DPC3l!u7Z zJ8o7f1;6$mpB)-uDn*;%23}z{%LMKbo8*|NpM{ z#bM;3*}lhw0A?DS*Cz$n6lZ_g?jBhXsumBGW09i#nBDk=^KBiDbcd%tQ(fyJC6~c6 zK5&N&tYFH9RTwS9U9p3(@wOc9_sFg4SEa#Ndq`L2`O)BW=+l0H*^v%1Q>hk3&&UN_ z(q0IY|GFXrfNgz|8&ZZK-I+tVvCzU!>_@s|ZJCKhc)s|H;TJ^i_sD!#;_D<6*U76i z2iV<01SLTHw_myX~NRy6%m`JZhY#)qi_=0i1L%ZE@c#CVb}YNB_;279m?kTOk8|ieiJO;Edn+Jt)^*a@{N#F;E7% zmghbNVW=O0NfW=HGc`t73m- zACKjPtG`GjQb+soKeoG_KYv}C-AOg2dyg4+zU4%?v0Yw+85YKc53d6e-V|$Xb^g*P z4WbtVDQq|3{()U$olk5?1R)05LV51IGBaaAP3qCM_g?U#_c|=o$V+xY|B|-I`k&r{ z;B)z3s4y^4(7%5mfdl^#(0}n&5U@~CkkIh3@bGZ3aBv8SC|?i|krCnGzF>SoMnywM zM~6qk#KJ(sLP0}E`v(;U2CM@P0RsU6gN6WyfcAe)pFRJH3IhV7{sR?;_ZPhO7Z&y} zB|a!5~4PKL3qS`U3U^2o*bt`Y$E^5h1gf zr>nyIKo0x4*`IqiD=CJ07x@0k0oe<&APR!*UwX&kiN3R{b9g|&?=6ePXmx3K6^$*h zs?$i6fYnOK0su4&MzRA&$C|!D?*|na$eDP15BZbQGJ-Wq9yRvHR(jhlEzFna%dAtY z@5vkez>HxvYkfpd%*;|zN&W>u5FBxSc)D?MF}c0|=_jz*sI9Ewb-VI>GQ+~0EIsbA zYf1OQ~?7*pTEjrw4+ z_)MAK66DXqsyi%v0!YqD)I=t|qeqn1D+o>e4GNkjKJbH4^Mp3vAIHpJYC)5`k&QjV zDIHFiQ)MbPZioPYdIiY=9tRJkl=zz&8jptvW5X~=q+9$9Dt2rU7a{k~a(r=N9H}YY zIxV~nLxkWNdj}VhnrIjkPP6rKQo*xDC@K#sfb4t*LH8X?hWrRK%QGIjao5WtBZqV~ zB;uLF@3zQXXO%k+m<8ltSAvTT!m3K6IQ)Ah27WhP-tMWIBNMp{J1pr~gaQ8h6?T4CmzL?x3Sml!(tr3hKt}KC{oG^?P3+h=wKeG(z?m)-)$D>2rPD&QD@? z_3hUY0#h3v@gDKqSoJ1MxEI-NWAgytO-BLGB4Vgl zz^i&dL=$>7<4AZ`){{uPc$vM`SGP z{Xg52fNu>5lC?3^T5F| z7v6yA-_ig8mqC2v&(g9a{a`GNEH!Zv&}5h@gfna1e=>p1=?9C}M~gzyrZ}$UAD!|2 zI~fq9@GUBo|2M9p73%al$y$SOqC+f701oA0*}qD75@x{3S$t2Ua%BN&neby@J^Td7 z4v{Xb<_>RaO-}r~nX8{f2{k?e>WyVlwg3zHr7A3w`L+DoLtHtG3e-w z3$$1N5XhGR17Sb*s7W!CBhl+e;LZA1@>PJkMuY@GYA+c1US$J|5FGE&;^G8Kq8|+p?*O_ z|Heo7osJ%Zh=Gww7HE&5fp!`M0`wCwF^4BplxxRP%^`2v?wAtc6B2{yg339Ze$_`z z8<6K4N`}f2&Hc0@YY9pt5_j%bPH)^|qWJwHnQ$*+NK_F2ftxnKt!I+41HMKQ4q{-R z<#4+?h57pXYJc2d^`VEr&w}Qn-FB9^Zgn@qTFY4cv3 z&cfMw$Nq+vkuXWuTLkgdSKc`C^k(X76iK*uO{Ec2y)O8(;%tHxh%BZ%u;*c!j;bCl z8H)x?&sN)n*Aa8)8W=nX<^3~#GdNA-mgZ-WL03c}B&)o$Xg3@e307oOE-`}m_dki_ zWmESAKK7K%E**oZg{-|RyTbK~5D{a;k>$R~3P~Vzu(7d|#JLrXl*b7UTe)E8xtzVR z!2b}CTDOf>*K@I0)+^#qvm;&^s+oQaIQj7}C_QoTl`eAFP+qVC$nK1+2fgY7IljUz0S$+|Ey0Ns&KS ztXGR7FEN!cX~|10V>>lS(RpkHoY#Pv@kSM$wx_d z`}U-ms91_S$j%z7_qj0?kg6{DF(!21kriU>g{6#WXdfbSXFuXS#K|#!Cd_!5h+A<+ zdCgMc1o;^eYI$iX|IA~@pc}C0S&?t6#@<@D(2;?VdSh12S(u;UHj80O3#fr^S`+fH zOxvWle9oeAa&A_~IKbj8%y(JNkAJh#dc||af>ANPc`qYxtDsV?m>{bLCGtkqIu}_I z$9Od)UZD;C!P9G>Y6+30GwYY7nyE;vjE6ohBcIsfrC>Bu>pZT8G}bqx!qZ-8_e?E} ztsaX@NPm(E{! z=OrgbT1(E7tTWq+S@%kNA|`JeuSx6^@Ey5KoON?3N<9F7S@Ln|$GpP{Y+sG;?n=$W z_sd-)!+C=*`(aN@$%Jj7o4lqs&d}vMH7Pg5Uh+|nVQhW9R&`uc=+J8eyU}ReJg3PR z%}G81j))I5eIj3~qD4Rj%eFTqBS6XsB&({NhhI1cwuHH*mr72$B&n4~3FeTtH%FZC z6K+d7>t1&4*11I2<6?QJlOySu%FW9Ht)5TpT_(E(BJZ8#CyX>q@-e$U3lsL zUNEXaWY=gDs~Ckl&-8$HW1)bPlW}xBq(I1g4R0G8!?y9|TFXY|*gd5EVzuzS?9O=e z_sY-PDW-Gt(ah^1*WK=6k^m>3$}wfwYcd-L>zLW6ixQ!AmeoB9n~+qhgqjKHNq>?* zVeb~JMoA7Pg(}+3`8;Bz#PsVw>ib$k)%GgYXjW4n)sN;UW1F9aIrj=Ye$S~_vI|Ay zt?8-a0pnyniav1$30MAIHGWD7@C2yIk4Rz_?Ftf}%~V9;_u|?5>fd)N?J8ol+>HyL zecDcxkcy`aprVLIueL7;)N zi+}lwza#g5uip5AiuUb01D_n7ydH4cOY|;=;;~-J(mfq zII3`<&PR~{Uw2esXz z6O%?IrI?=SNsjoQ%BNoFLd0_ohr%C-;r=uJ&oi%}4weex!(7z^$6C?8N@9ZOSd%|0 zUYC^?p@k;9r5F#LO>VZQILrg0m|$J8YpQoIk&dvP9il41cnf7xITYr1nchq+n@Voa-8C#|*k)(zE8#!%2;Nw{F-3SyM(W z)-j?oTs$NO7ULX&eQh4L!C5_Xc$g|hNkebeI`>7?feRJ&#MKuX)KV?Q)DidUkteMT zM*Xy%+vL?3)g8}4D*Y39w8ui02eM^cA`(vTPk__d+CkL11m$;3J0-Tz%;iwN#uEjX zDP1=tX=C|PEDdrVZvfm8IuEK6FMRGwPB;1Xf5>oR;|nU>|O+6Nm0K# zQ>YSEWzvD$Df6<_JlB?~vpO4jaVn#Ivy>2%CJjeiU1h1aFhz=sg1EkmD%=qoo0I1I z(B$k%&PPVEb4}D{=4QXpubIKk);P!O-aJVV)#seAL*v}+=*ojaz(;F;~c<+0APPj z9?w4}4-6Cr4h$6PpW*S}1#JM}f;DL%lymu`5{H&eoc`s1tX&rddwbX@6{ZD-|EoCx_|U?}XMC&D+)!O1l3 zjTsN&$+J7+;%jnZtES~6J`kx=oC48OiB}T8YPeI}8H$=ND+Yf8+LW;)ny6yRdUrQl z4{M)_Zc^iDB9k`QT~j6a$CPZ%;S45F@Nnas0{R!MB>Iw}C|%^9l-(vBf%q_v#iaO` zLzpuHaRD$hXz2@u>69p{6C3evBGjsA(ViS4Yl+1akxxLF7rCrKrJ}+Tr^FGC;u?un zgu69`GQP$kE5A5@iv?WTo}V#)ZP7V8s6A=@0IAk)Tpo!bIs%*cAE9yH&_N4*_JLRm z$4z;LNSxPVEKwZ}@!GFe1uGbQjaAY;I8m@GOBEx1*$IkD7ETM0HNnGRUMEB+zk_tv z<*J__?bqEJP}6($V;ngI6LYRUVMm{8P*(d5vd@m0dybV zb4GEHA3r=w5qrksEoa>dh#Il6ac~*6B_vA@%?h*?;3h(pX<8i=x6A2ygX(+1TxysGd>qIvF52JdG1`&Rh33x2EKBG>5 zMLLz;Hjy=IG0UU-wZeqUFmE}qc1ND5z1wXW-*Wr#_2Wl8gZe(Dbr%z!lCPe$v2(NN7+XhlcSCaOU+r#`K)i^r7Pq>Tul&`W|)2Lx}4`W1~b{XDh*<}kL{q(btZSvno+O8 zKM;PgDd}1!UKT3!e6JkF)=0G}3sfjD-|1jU+C@oEfh%9Yts2!~ z!K1TY%>HNYfRy$`#kP2SJUbS)h?PjdUHzUJD|4V5%bW*0X<9}3W(w#k6cGma!1GLA z@vj2J6Qd7$)-t@icI0p7EFK`=teADzbOwNY2LNwM3%73lI@86bJgA2cnM5q@`k4r1Wz}(1nNpsTlFViRti$Bz!N8yjzmBdyCN)K}L}1RLs_zaby0|e^}c{QB#N>XCyE7P382=dse5i{?$zN z=}|#^P>TcB0V|`8hMQ#l@#!Z6;LL*>}Ydv|$V5W&=jJAM8Dek!2HYefQq^k<~`H!{^(`c?fm z)y0pjwSaVDLQM!W$i7$mi`hIE-koqSfU$v1U9YB)sn7JD zel4XPoO{>e)HRc)V$AZMryTaz;Z3YncrMPP&ivZ?irxu{hVy4b)HY)kNlhfldDU~` z>9Cl{2Sf-(>#1Wz@p}u+J6V0@twt&s4S`ZGP9KQdX!q1Wv|;8kqf4cUY6s(#$CdT%4~JKrRF6pe=3Bwhj3wPdj(3K=oz$FG zmCQ4?s-f$pH)}nl-zipf zMnNt``j<;0%cf;Q7FNp6qOIl5Wt0RcKBS=`}+5@-qMAxAEeu#4G>2ziHTYOvQ z)=XeSZimopYrScsZxg4kVdz|QU#0Qjxa`hW_BkOwoK^(&<>S!oJ%#-~Xk%9JC-2v# zUeVbbweA^38}hl-jRe)M`bUF=X^To)lvhrqi^8`eI@s%BPQ{n?4aQl=<2DWk{eV#J zFm+YqjIx$BZ(e`Nk$0P^>Ad!XQvv$HY9vJN5?{#hOBDkvDBOu;-!$+@tA$1;lA!6{ zorZ4)GK`8O>DhVdDaPpA`M0vMi0e3QVbeCgXIVb>K3f#4)Y7r|5eKhv7_U4i!rMeL z%tj3&(;0Lxw);<*8KxK=nphmvN@Pe%t#^q{QxH;PIDz0x$r+~ftpO=%EECEuqO znLh!g++TuysG5{yb(!S)Eps)MYQ`XlEKVj3cQD?Me8bTzyCXQ2RW?lDX8;|X4~RQNYN*T%^mOKwlBpki*o4xxh!RfkWC5U zL)Uy%^CV9Hp3Gx#l5zo|#qMtuch+sjLrZ$Geq9*rE&>^0p<;~ou2wpOXW52+h+bWb zZ$ohk<(-K8NH{3Sm9ANaWCH4o1*Xmll9N#pf+iel6uIa@F=?ugjtIe|V!zOsM_*E{ zVbSm)FJr0e%|R=E)jh6N%g|Xo@?IdgR5KUv)RbbT2|AXe3x$5EYPSHPya1^CdhTNgmTqPCL z?Vy(UO-biK?L$1evF^aLklEICgGt*O>Q8P&`P#x)rx*jRahwsuGjJ$F`&n1hY~g~q zaRkFGeAQAy{{ePAV$6g~GyX~1m>*u|C?oL$Xsx$=kCxLC+^3n)V5}=*3)3YompRyM`SK8VJ_j zmrwe3ojqHptU*+tzR`HQ_IvA3jjK3KdIsMcBep;8G{>Di6L+35QZ_~t6w@VeW!Grq z<8DEVX+`>wKe0UAwCKztBB8pa%_iKaMW3P4oCjvekOi~qd_Ij88m>7;oJ5?JK`XMuBQnG~>388@zK%A_{Hi8*q1tczHQGexuXYa;jhN zSA`;d<(mdvMSYaG_*Q(kK0Fc&RJ6_ahRAdUww-K_Nc)e>aP=x3eA}2uBdjkXGJl$U zLW~hFLnfA#wcxkuAALvTX}glXqW+|X`}cbBBA6`JG<*ty#QIl zYBw;Nf6plU^sdkuo>%(I8I1j_&>tl>$h(6#YE&rsw%!C(XpEfHJii(m?7y|?$X60J za3ZHpALedu^dqtRK)HjTg96Q*VXotrJj2ql~Tp>On-EEZHT77m9XRA z19g2m{R7y7!P@*@K%9)I12g}AEmYXxp@&Y5A2*91CgsVpHi62ND3`M_n$sjr5JuTG z1@m8~+G}68;-rjr8p!o;%lutkLbRPOylq-~bOH;{o<#e&I~dB^(dSfNNUi~0vr=u{ zEA*BS*)u-(kC5Q1H5_U~#+!yAp8Li)7F9cEro=%7x}hsg35AV-Je>UgUsgG1BSr@6 zG}o(lMXGLc1g+P{j>$3Pdx05CC$u51W zjY#5+*Drxcxdg(OJ#k^8q6rI0W2fWIw3h4ls-a*|+L3bNwIMvA9=>dq+L2rHHa>0L zq-<1FoM5nHBSguO!EGGm(lsE}DXwiBL?MP&J&pCVla}s1iBwPakM72-`fpOmceFHh zN214DvGxQ?Z(7j$=bSb?RBdic^I6_!{chU#>BpjfV+q* zDpd7<{+dsFBf#Z9CC+T&s+W#eUi)iVom$(8S>_;AS?o<9KB<=?T=>NRZlI0a|(9Geo6Wt)sBux)i0kE7D?Utv_5u)uS-exwk= zjBZ`$*HYxN^ro97XcYAP4#za8Q4%G0u8+%MvRj!{jNcMDXi+SlAk+MWrvaK9UrHO? zxnDss%EPH|_iV#YQak=lcN?|-7K5)VhPbb;Zdt?~9r#fD)S9YYDKsN*j=4GLv zjBc{N0DphgC~HE`m}2P6xhqF0^|k@uZ9qw#?A-~si*`15NUTOaDS!(Yk!Y}5cKP+-a;JPuXv{9)ZK8q0^A zp){mHp#;R~GT69o-k#?j13_)h&I|it!aUopEuCIoAdkLvkt(@OZQmrcbx) zpouHs_p8yj1`4LtbOu&9IiEIr!~N{c<9|lbl)4O#v4CifeF`hD|X8mU2c%5&dKP8S}xPfia=TtA*bwCm|5eEBKa9~*j&N`z! zt%Ga$7Fp8TVNmdxC{|7Dwxo#=VXht2pbgE#u1pQf2<`=pA-Ah}EQ4E7K~k~atVYTPRv@(UK&OC|nq-@CT5azcD^gJHwLD=nD{OL*)CI;79JO z*kQ0b-N$RJJ>ne085GGF)YcN9eUcg@{xbNLtwtfvvadgJ9LM~$Yp5(t zXXOIVZ>?UvwZXQRr%zk%-kbrOWBscPBQgcV{23QCU`y7a0^a0Ixm~{} znEE!jkH`DDkcGNYyYYrq%B-O%=mcvZZSOWgSnIlqU^mid9^28nAC0vWY3X9~Xtf^K zY0>dKs%`yjN;r4%0}X+B;NUFxz5OU!^5$9Z&~P3sR*CC^&BqMLEMd!7Kuc%Kc)sku zR@`f9ijmHbis`>~8<%EK@Tt)IO9Es!><#4P@|e%9Z*Z-i+|O#kl&NQ1uj z__q*%%!&3u#FQpuouWvAtg-qLQjw;zPuy$}CRJcS97f2X^JB=|FnXL zrt!_*DguZRyUH8sc_1Q8RAhgqG!Bgj57fF#rc5@b^iI?`N+#6-RIga3`uGZrSdbAW zC=CgFxQ7Yph$#dKK&bKqSBa^lm+2P(`87~BOo=Iii>1OSt>u*o;&Q2L$FCl9O3eT6 zxl|2;rxi+3Lj9{BN=#bPAY!b)4>{1thK;8-xO|J6aX+Czo*UN0tR7~=MihQ*7F8wbwN$it z`cikeJF>EvhEF%p`@dpTH$j8i;xEoNW>{mcX5;p8pH$ztOyAb(1Dy=-7K_0TXBD{m z1SfI>!uMjUH=4*N@$F5g_H@rr{s1V~CCsSVtaf*+WLA3WqE!R}s}v^AH3yW^4<_on zc&(}b~_fzVeC>0~+3$QyctoTsYNV?+25b3G> zT}|#yfFg*G%|Us@{r7u#hrbK|T-3@~d^Foq8s6H$*h?dxPwyFJ&(m`V#Mt#UW`Axg z>q3)T&>p}8g$5oKw$Fei30U@;zLO$W@R#!_`jPQ>yPBq@1RdE_V@KS=b|dx)Awn1f z+L4@{Kv!9#9_@8mE>DDL81ZqONwaW9ZT`TurO)>1(2iv%Mh@w?vaRjQ?~GwaBZ9Zl zLS$4V`Kbs85w?LO*CzG4O%nFcXslGF?r5Cyw)B5ZVj{eVF<+* z(J5sA>?l8x*Pn!QGn(Bm0_>_3%nQHM0O||eAcv;HY(0$cjx?K#RD)3-8yb%=HaXqD z+>+(tKYY*QrW`CG)EP1FBd@d)!%o3~cJD4_bZGk;dwJJb8?XM3hmtaPjxF5lu3!Xi zIxofNrWYGIjJbBpDHcPN(4dIKEnSAkKL8!z<)an_bTIY9&(W}q#EZ^4b1@!_J`AMB zfiE(d&AZw41z|>f<5L`Fky@a0K#@CU?$g9M9bvNdwgpk+0An{YjTqHaB zxZ6WsvsZYF{9vL%eXzBNjCsynlu8z^7lKH%wJ+WpYzr1 zbN$e|AqB!AUTJSSpFQI-O>9cEpaRS>&Kr&Ae|aH(BqU=9+%U?L8+_P}@7ktbm;m)M z@pSMtl`njHXI7HYu4c`2I?60K3hWU!e>wji-p(cGG<{(8>Jq#221u5$8cI1DAwSyWCeA=KuJpzvx4Rk6I+x(a=ub+>5D%Y*xLaAKkiAfU<0N zL^c;6ihOa!c zDINATbXl2E5%&R$$`-;C`<~RIejDCEPrk?C3$BwT!5({Nq|C-v;8~I>+`IgNi4(dUGOFr;Mca9TzNqdw zw*AWtQ^`_N?rOrg+|uE2buXa9=>2;$adr#ku0LNN#Gnz^GZId@Zd0p{Cf%u8X^5riHLu z=I<`|)yvdxPG%pkszc$^yBqDR3)j-2J2Cy#Oo4(S`?YN_3S1}lD+9QT<|XBRf`;)Qd#Ea<`K)?!!8 z9fRe9Gnm^&>!Z5~3R#PclVHEY=k3(Gyu)Ws%jeuiuusVqJ)IwmEqGNi*kPcy*`nYC zeI-e+Wd{K0b|W|ib}P{nN+Hxs-CNm47jALbKeB1M7BU}(i&6Ll#$^=daNU{SnU|-9 z=x+Z08ryB&$u%%N74~|TBe}?H;zh}h)slAqZA{tD&l-=R{7X9n;Stt6!+pRn1+IPy z#>I`pxMuCeI{WNjcKbCj-^dhS+dP~33hkoNfmB)Yhxq27gC!Gz+1D!+(jzT!+i)~^ zpYvK6Z@eB=tQfrKL-qqwIRq&rxbBkNk&J6p%47KExYUu?c7J7W^hR5I%4EZ&la%Mv zy-B#wXMVNNv2Uv-AgR}63b7YAhM76li`x?X{g#dIeAMUA6tTrQct3v3WJqwl#ZRV6 z!NbZ9ZN089Vx+6@Lc<}6(LbmLPh$o_JR?b2-8bD$xAinAho z9&E^)uau32eZ)vP(@UW1C_ZdRR*n+b(qG@cj6-CZ6JJ7tB!UvRgm-?ZRb?Enf4jX> zX)Z6<96;A*)hVp*E6vGv{1Auayz@5iTf(@+-U9VkC}&iSp_}M{(#|hLO0S+eSr9he z>g2?dM!xYHo046j$``{WNx0OWe;aZWHGa;0`RILQVbgY|Z2uhNBV$E?i%`MC1V^{k!9lR{Iz!P449l9=YT{757 z$5Ni^uDJ?nd+`!b+}IXt#v)$66(71Isc3-J#oqwX!qm^uBSLQv4$!osl^;qXr5MRk z@T@+9d{GT?f0lnm7Uli?yfqB-dr`O zey7m#NmS=MM_dO2`33eAUl4E-R9d!Y9tMvJI*O`!S?qg0PG&6*?N352q!7`1>wQ2F zDg&*?cZcO%EQ)2^;?1SS4jQ$)51}IaZ>|voE@bErVD;m_P~BfT#OQx};lH7}|GY4v z)L%p$=>LQ25I%T%M4;(C@@R}xeoQ&EpcLh>VsL~b+TopWTqhBCE)iLLF(IZ+=;Yi| z0)rdIgjSH>52FyS++>3|WVMZA*6B-4P5Q5_>r%`MTrEfp`QR*UL!}rE5ospWJY*ZK zhQMZucw*f!E>)UyEn8Xcoz=DE0XZfJ){gDUdJg`n1|5>ZYj}02q>}o{&#p&f|Rr|B!g7<)AWXrV+nw%oM{KR4}%x-^PYGPUCF=KA_+&<{+6iG=6 ze(}#7kZlfms9KI-iC{i8Gguf~Ur=lFY+Ka=;S79beZkX)=T+k)O?+BCfiIur4;5nx zH~&H@Odr1T7K%stER=9nI099!22@mW(M?;+j>)}cPJE+s>`G`Nf15a)BxHaVE!XE3 zg&Q!3lOZd5Dy`|_4%y36TJZ8Aykj?+*u@*B7pKAi%U$~}bZQtU8V4;RDQ5D-DOx*g z76O7)^~(?BDo(8CN&x%JGezXeadaN-6(b}bbc)$6!c`NQ&Y3rFp(8xSIDnHEv?vYS zxVXt|89ctq8Ub{{Ycxsdn{jP4nKSwu|`_rSsj>J-qt(EVZ2ju&V zE&g>S4^t+A!#m}nPRQd1W&8!nd6|~0le1g~jC1T=?lXhQrrjoEsPZmOj zp(K&oGPecN%|awX3AgY2%RQ9{_<*$i!&=d@kVAlwaN-KyegR zFR7?%1h;6p8u^Lx(sehUnYdTFN=LWq9nd+vpBec?2Gu9VI${dBZUiUSl6Wer{FjFY zi4OIx#Nxy~E{L8vHXy{i$}{KN)6X(SJUMoPEHY_2z5QnzT72#-$NcycKiTn!G&)-; zBg|OyW?Cxg%=+)k^W+(nwFFWQf=K$uH z91Ckn{SFObaT8I3-Z;L#Et3h+%{jPzk_v5P0q7^X-3JvGjCzfxv=fOfxtzXPIqNn0 zgd+MO&HJyghOh?c?JUeqt71!}O3(qN*fPY4r4}4L^m2oD#mf1-nAx9d6qOr6t@*=W zkK_8KV;7(9OR=*!1>;~CJgCtM-N8cbOx=%q(RW9lVeO_UE*=-8G$^BtTC=~6QjMvJ00;Lq3~Vpt>#zO*){1-bQOxJcrzx;E^7G;t z^A9)Q7~EPVFj^P#K`fby+V4w*>M@iB)3APOA6|Y{@UPSX`J{bu(zrqbZ`i9#x^$OG zJ8Boa3q%!>8@|MCLK9hB(GaKZ`%+0R(8EllM;A#)sHLtAk!icCqUoV&y^s!v&&q7H zntsJaY7QbIVV+OUs#LxW)Lm>1oyK$--y(xlK7OR^Ho8(IZu8_RsRQ6GO|!M9sE?>r zKb$|m{r!3Mz0XCPVs!;7aeDO!5Ft0I-Sl4%ts3Mg&Zbpi;N0nC%kWeC6-B>CjHs`+ z4^3JSi}_vqqCD-WdJk<_{hks|`!jvz)MK+bF^g?3ve`7EZqwhfh1x47fiiDJ-ARC6 zkP41s@5-qG9~k|v8ObOq5&PcTQAMcG2I>xPx3_e5J~lfVi#y}{T^y~@OLf~Ov=6t) zDRbUbdD)?u^Le&f=8zOTwQE*VaH!^RKmM`&86Wx;&Z-VM55|PSL#Z+bXS5}OX7%zE zBmSgj{hO+&@0>Fk)cfV%q{Ra|Yii>tx9Y}FX*3ih2QuhQ&GCeM0z^~N1>JeX@?X+Y z(VwBrs|cn>Z{_DlOo&sIr-oRd_>4JwS4Cw7*_T$xQnF%9Y~H>l;0^(7#!vQ1P;Dxz zD`a$Z|JH@E6Yu4&zCZ=1*BVmdQ5{~Td1ME)GAUQ-PAZ!YYmeOknl;ZUfhhqC9mqD~ zU(OR!W7Y?v#vuw<0yWXHWZe_j+mEc$dcQg-)a2fZ=-?J$@O&1ofy=|$K3H|u5Y;dR zUR_DYHXFAKPe51HL&%9@C4Cz}OkQ z&e_nNp5xC1MuitD0+o=8j#CT@meUk7++5WQY!$_zE{nOub%{oba^3Ku^2hlUfw2eI zF2$~3?zLU+ErGa?4CYEgZ;m zTAED-*2t;Gd?{xWAav-L@&bpby{IE-nxZ{JjurUElGPLMH=qks+1zAeqiz?+S0Lj%Nmsdo zw0cH=A$b+ZK$;Uhi3S^bLFisdQs%f9QD@0yL4nKa^QJHEBg+;Bg=14K=4s{<%EtWD z_Tcj!e4;P`9U85js8>1`FLg1DV7$!U<|rmU*ZpCNM@r~=KpYg$maUcqS-n_A|J4gU zZ$GDDl?ehy{#Y5zIeIqoI+;%-z^RD32%ucKoy`yABs8Z#s}@2Y0#iMrc~VrIk^ z4osS;6W-$G=#S;zh87w_BJT3_SRT>`w|Rwmdma9c8xBgz(`{ZB7A!53r&_58dTGf# zADzky;m)>l0B{@JRxt7@I$O*uNv{(UcY@WdmwIeAmN|FqSyjuhCh#iXP#J_}!C6}D z1@lnPn6ilY4mfnXUS77pbfppiyPnT3S4xnQhNGrk5$)Q8uu;L|8TX;KRcU*d2%bT} zyES=uPh-%VPhYDcLr)8{e_xEzKEj)hi+p*>7YjYcoTQD|Q=k&ul=TubakrEq==!iHA8uMC}c#2BW?x;(*BO*xz_ ziP^9};2WdS&FnaK)_gnrd%H5QY?ihz1Ss z>lsY9xf7V|(@rm-q0S;7n`FcUY)Zru@FPtor1_**sT9VIE3rvy9v*a9K+^^6TgEd@ z5-@8+?lT1k*43>LBfGxx#}R1mCzy;nq!7kx!M$)ju9Z>Q66(H4?n02?LjJIfgTCgv z&ff!#QCiQICMb(=AaadvuzoE>@rjmINT-gE9@BcB=*IKYZQz^+btSP#oTjM-7&71Q zu98NODf8XLCpgY4)`ICW@vj$ihZE&eRZVh>JAy_5T3C)08v- literal 0 HcmV?d00001 diff --git a/addons/gamification/views/gamification_karma_rank_views.xml b/addons/gamification/views/gamification_karma_rank_views.xml index f09d516ca88..f728cff538e 100644 --- a/addons/gamification/views/gamification_karma_rank_views.xml +++ b/addons/gamification/views/gamification_karma_rank_views.xml @@ -1,3 +1,4 @@ + @@ -35,8 +36,6 @@ - -
@@ -58,6 +57,7 @@ + From 1bb7b242c00a726bc5186b45dd97b37c4b988328 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thibault=20Delavall=C3=A9e?= Date: Fri, 15 Feb 2019 11:39:20 +0000 Subject: [PATCH 3/5] [FIX] website_profile, website_slides: clean user avatar controller and add one for slides Purpose of this commit is to * clean user avatar controller and its calls; * extract default image computation; * add a controller to get slide image even when not having access to the slide as all slide name and images are displayed even if not available to the current user; Commit linked to task ID 1941250 and PR #31133. --- addons/website_profile/controllers/main.py | 40 +++++++++++-------- .../website_profile/views/website_profile.xml | 2 +- addons/website_slides/controllers/main.py | 35 ++++++++++++++-- .../views/website_slides_templates.xml | 11 ++--- .../website_slides_templates_homepage.xml | 13 ++---- 5 files changed, 66 insertions(+), 35 deletions(-) diff --git a/addons/website_profile/controllers/main.py b/addons/website_profile/controllers/main.py index 92c69ae4c34..c0d6a278a0b 100644 --- a/addons/website_profile/controllers/main.py +++ b/addons/website_profile/controllers/main.py @@ -10,7 +10,6 @@ import werkzeug.wrappers from odoo import http, modules, tools from odoo.http import request from odoo.osv import expression -from odoo.tools import limited_image_resize class WebsiteProfile(http.Controller): @@ -30,6 +29,20 @@ class WebsiteProfile(http.Controller): return user.website_published and user.karma > 0 return False + def _get_default_avatar(self, field, headers, width, height): + img_path = modules.get_module_resource('web', 'static/src/img', 'placeholder.png') + with open(img_path, 'rb') as f: + image = f.read() + content = base64.b64encode(image) + dictheaders = dict(headers) if headers else {} + dictheaders['Content-Type'] = 'image/png' + headers = list(dictheaders.items()) + if not (width or height): + suffix = field.split('_')[-1] if '_' in field else 'large' + if suffix in ('small', 'medium', 'large', 'big'): + content = getattr(tools, 'image_resize_image_%s' % suffix)(content) + return content + def _check_user_profile_access(self, user_id): user_sudo = request.env['res.users'].sudo().browse(user_id) if user_sudo.karma == 0 or not user_sudo.website_published or \ @@ -60,16 +73,18 @@ class WebsiteProfile(http.Controller): @http.route([ '/profile/avatar/', ], type='http', auth="public", website=True, sitemap=False) - def get_user_profile_avatar(self, user_id=0, width=0, height=0, crop=False, avoid_if_small=False, upper_limit=False, **post): + def get_user_profile_avatar(self, user_id, field='image_large', width=0, height=0, crop=False, avoid_if_small=False, upper_limit=False, **post): + if field not in ('image_small', 'image_medium', 'image_large'): + return werkzeug.exceptions.Forbidden() + can_sudo = self._check_avatar_access(user_id, **post) - fname = post.get('field', 'image_medium') if can_sudo: status, headers, content = request.env['ir.http'].sudo().binary_content( - model='res.users', id=user_id, field=fname, + model='res.users', id=user_id, field=field, default_mimetype='image/png') else: status, headers, content = request.env['ir.http'].binary_content( - model='res.users', id=user_id, field=fname, + model='res.users', id=user_id, field=field, default_mimetype='image/png') if status == 301: return request.env['ir.http']._response_by_status(status, headers, content) @@ -77,19 +92,9 @@ class WebsiteProfile(http.Controller): return werkzeug.wrappers.Response(status=304) if not content: - img_path = modules.get_module_resource('web', 'static/src/img', 'placeholder.png') - with open(img_path, 'rb') as f: - image = f.read() - content = base64.b64encode(image) - dictheaders = dict(headers) if headers else {} - dictheaders['Content-Type'] = 'image/png' - headers = list(dictheaders.items()) - if not (width or height): - suffix = fname.split('_')[-1] - if suffix in ('small', 'medium', 'big'): - content = getattr(tools, 'image_resize_image_%s' % suffix)(content) + content = self._get_default_avatar(field, headers, width, height) - content = limited_image_resize( + content = tools.limited_image_resize( content, width=width, height=height, crop=crop, upper_limit=upper_limit, avoid_if_small=avoid_if_small) image_base64 = base64.b64decode(content) @@ -159,6 +164,7 @@ class WebsiteProfile(http.Controller): ranks = ranks.sorted(key=lambda b: b.karma_min) values = { 'ranks': ranks, + 'user': request.env.user, } return request.render("website_profile.rank_main", values) diff --git a/addons/website_profile/views/website_profile.xml b/addons/website_profile/views/website_profile.xml index 06562d0e697..471cbe6a3f8 100644 --- a/addons/website_profile/views/website_profile.xml +++ b/addons/website_profile/views/website_profile.xml @@ -299,7 +299,7 @@ Ranks & Badges

- Do not stop learning with Odoo. Collects points on the forum or the eLearning platform. Those points will make you reach new ranks. + Do not stop learning with . Collects points on the forum or the eLearning platform. Those points will make you reach new ranks.

How do I earn badges? When you finish a course, reach milestones, you're awarded badges. diff --git a/addons/website_slides/controllers/main.py b/addons/website_slides/controllers/main.py index 6a75730daa0..ba36df3fd00 100644 --- a/addons/website_slides/controllers/main.py +++ b/addons/website_slides/controllers/main.py @@ -6,7 +6,7 @@ import itertools import logging import werkzeug -from odoo import http, _ +from odoo import http, modules, tools, _ from odoo.exceptions import AccessError, UserError from odoo.http import request from odoo.osv import expression @@ -14,7 +14,6 @@ from odoo.osv import expression from odoo.addons.http_routing.models.ir_http import slug from odoo.addons.website_profile.controllers.main import WebsiteProfile from odoo.addons.website.models.ir_http import sitemap_qs2dom -from odoo.tools import html2plaintext _logger = logging.getLogger(__name__) @@ -267,7 +266,7 @@ class WebsiteSlides(WebsiteProfile): 'message_post_hash': channel._sign_token(request.env.user.partner_id.id), 'message_post_pid': request.env.user.partner_id.id, 'last_message_id': last_message_data.get('id'), - 'last_message': html2plaintext(last_message_data.get('body', '')), + 'last_message': tools.html2plaintext(last_message_data.get('body', '')), 'last_rating_value': last_message_data.get('rating_value'), }) @@ -362,6 +361,36 @@ class WebsiteSlides(WebsiteProfile): return request.redirect('/web/login?redirect=/slides/slide/%s' % (slide.id)) return request.render("website.403") + @http.route('/slides/slide//get_image', type='http', auth="public", website=True, sitemap=False) + def slide_get_image(self, slide_id, field='image_medium', width=0, height=0, crop=False, avoid_if_small=False, upper_limit=False): + # Protect infographics by limiting access to 256px (large) images + if field not in ('image_small', 'image_medium', 'image_large'): + return werkzeug.exceptions.Forbidden() + + slide = request.env['slide.slide'].sudo().browse(slide_id).exists() + if not slide: + raise werkzeug.exceptions.NotFound() + + status, headers, content = request.env['ir.http'].sudo().binary_content( + model='slide.slide', id=slide.id, field=field, + default_mimetype='image/png') + if status == 301: + return request.env['ir.http']._response_by_status(status, headers, content) + if status == 304: + return werkzeug.wrappers.Response(status=304) + + if not content: + content = self._get_default_avatar(field, headers, width, height) + + content = tools.limited_image_resize( + content, width=width, height=height, crop=crop, upper_limit=upper_limit, avoid_if_small=avoid_if_small) + + image_base64 = base64.b64decode(content) + headers.append(('Content-Length', len(image_base64))) + response = request.make_response(image_base64, headers) + response.status_code = status + return response + # JSONRPC @http.route('/slides/slide/like', type='json', auth="user", website=True) def slide_like(self, slide_id, upvote): diff --git a/addons/website_slides/views/website_slides_templates.xml b/addons/website_slides/views/website_slides_templates.xml index af82d23701c..abb22345538 100644 --- a/addons/website_slides/views/website_slides_templates.xml +++ b/addons/website_slides/views/website_slides_templates.xml @@ -268,7 +268,9 @@

- +
@@ -318,10 +320,9 @@
- +
diff --git a/addons/website_slides/views/website_slides_templates_homepage.xml b/addons/website_slides/views/website_slides_templates_homepage.xml index b41b75eb73e..cafcc9aa71a 100644 --- a/addons/website_slides/views/website_slides_templates_homepage.xml +++ b/addons/website_slides/views/website_slides_templates_homepage.xml @@ -312,7 +312,6 @@
-
@@ -353,9 +352,7 @@
- - - +
@@ -370,9 +367,7 @@
- - - + Edit


@@ -407,10 +402,10 @@

- From 5822e3098c579eacb487ea9bb9ee371d65ff6edc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thibault=20Delavall=C3=A9e?= Date: Fri, 15 Feb 2019 15:26:13 +0000 Subject: [PATCH 5/5] [FIX] website_slides: fix text / html mismatch in demo data Slide description is actually a text field, no need to put html tags that are displayed raw. Commit linked to task ID 1941250 and PR #31133. --- .../data/website_sale_slides_demo.xml | 6 +++--- addons/website_slides/data/slide_slide_demo.xml | 14 +++++++------- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/addons/website_sale_slides/data/website_sale_slides_demo.xml b/addons/website_sale_slides/data/website_sale_slides_demo.xml index c7ff453e837..dc223fb388e 100644 --- a/addons/website_sale_slides/data/website_sale_slides_demo.xml +++ b/addons/website_sale_slides/data/website_sale_slides_demo.xml @@ -46,7 +46,7 @@ 10 -
Tools you will need to complete this course.
+ Tools you will need to complete this course. How to find quality wood @@ -59,7 +59,7 @@ 5 -
Learn of to identify quality wood in order to create solid furnitures.
+ Learn of to identify quality wood in order to create solid furnitures.
How to create your own piece of furniture @@ -72,7 +72,7 @@ 0 -
From a piece of wood to a fully functional furniture, step by step.
+ From a piece of wood to a fully functional furniture, step by step.
diff --git a/addons/website_slides/data/slide_slide_demo.xml b/addons/website_slides/data/slide_slide_demo.xml index cf47aca1637..8971ec2fa8f 100644 --- a/addons/website_slides/data/slide_slide_demo.xml +++ b/addons/website_slides/data/slide_slide_demo.xml @@ -12,7 +12,7 @@ 40 -
A summary of know-how: how and what.
+ A summary of know-how: how and what. @@ -25,7 +25,7 @@ 5 -
Just some basics Tree Infographic.
+ Just some basics Tree Infographic.
Interesting Tree Facts @@ -37,7 +37,7 @@ 10 -
Just some basics Interesting Tree Facts.
+ Just some basics Interesting Tree Facts.
Energy Efficiency Facts @@ -49,7 +49,7 @@ 15 -
Just some basics Energy Efficiency Facts.
+ Just some basics Energy Efficiency Facts.
How to plant a potted tree @@ -63,7 +63,7 @@ 0 -
Jim and Todd plant a potted tree for a customer of Knecht's Nurseries and Landscaping. Narrated by Leif Knecht, owner.
+ Jim and Todd plant a potted tree for a customer of Knecht's Nurseries and Landscaping. Narrated by Leif Knecht, owner.
A little chat with Harry Potted @@ -110,7 +110,7 @@ 5 -
We had a little chat with Harry Potted, sure he had interesting things to say !
+ We had a little chat with Harry Potted, sure he had interesting things to say !
3 Main Methodologies @@ -123,7 +123,7 @@ 20 -
A summary of know-how: how and what.
+ A summary of know-how: how and what.