From 4a33b1a26ebf26635d7c0d784beaad90647ababa Mon Sep 17 00:00:00 2001 From: Chris Veilleux Date: Thu, 13 Dec 2018 12:16:17 -0600 Subject: [PATCH 1/2] added a stylesheet specific to themes --- frontend/internet/angular.json | 24 ++-- frontend/internet/src/styles.scss | 86 -------------- frontend/internet/src/theme.scss | 185 ++++++++++++++++++++++++++++++ 3 files changed, 201 insertions(+), 94 deletions(-) create mode 100644 frontend/internet/src/theme.scss diff --git a/frontend/internet/angular.json b/frontend/internet/angular.json index 6317d168..31a1698c 100644 --- a/frontend/internet/angular.json +++ b/frontend/internet/angular.json @@ -27,7 +27,8 @@ "src/assets" ], "styles": [ - "src/styles.scss" + "src/styles.scss", + "src/theme.scss" ], "stylePreprocessorOptions": { "includePaths": [ @@ -88,7 +89,8 @@ "tsConfig": "src/tsconfig.spec.json", "karmaConfig": "src/karma.conf.js", "styles": [ - "src/styles.scss" + "src/styles.scss", + "src/theme.scss" ], "stylePreprocessorOptions": { "includePaths": [ @@ -187,7 +189,8 @@ "projects/market/src/assets" ], "styles": [ - "src/styles.scss" + "src/styles.scss", + "src/theme.scss" ], "stylePreprocessorOptions": { "includePaths": [ @@ -264,7 +267,8 @@ "tsConfig": "projects/market/tsconfig.spec.json", "karmaConfig": "projects/market/karma.conf.js", "styles": [ - "src/styles.scss" + "src/styles.scss", + "src/theme.scss" ], "stylePreprocessorOptions": { "includePaths": [ @@ -363,7 +367,8 @@ "projects/sso/src/assets" ], "styles": [ - "src/styles.scss" + "src/styles.scss", + "src/theme.scss" ], "stylePreprocessorOptions": { "includePaths": [ @@ -440,7 +445,8 @@ "tsConfig": "projects/sso/tsconfig.spec.json", "karmaConfig": "projects/sso/karma.conf.js", "styles": [ - "src/styles.scss" + "src/styles.scss", + "src/theme.scss" ], "stylePreprocessorOptions": { "includePaths": [ @@ -574,7 +580,8 @@ "projects/account/src/assets" ], "styles": [ - "src/styles.scss" + "src/styles.scss", + "src/theme.scss" ], "stylePreprocessorOptions": { "includePaths": [ @@ -635,7 +642,8 @@ "tsConfig": "projects/account/tsconfig.spec.json", "karmaConfig": "projects/account/karma.conf.js", "styles": [ - "src/styles.scss" + "src/styles.scss", + "src/theme.scss" ], "stylePreprocessorOptions": { "includePaths": [ diff --git a/frontend/internet/src/styles.scss b/frontend/internet/src/styles.scss index e10fbd88..e78af377 100644 --- a/frontend/internet/src/styles.scss +++ b/frontend/internet/src/styles.scss @@ -1,89 +1,3 @@ - -/* You can add global styles to this file, and also import other style files */ -@import '~@angular/material/theming'; - -// Be sure that you only ever include 'mat-core' mixin once! -// it should not be included for each theme. -@include mat-core(); - -// Mycroft palette defined using http://mcg.mbitson.com -$mycroft-color-primary: ( - 50 : #e4f4fd, - 100 : #bde5fb, - 200 : #91d3f8, - 300 : #64c1f5, - 400 : #43b4f2, - 500 : #22a7f0, - 600 : #1e9fee, - 700 : #1996ec, - 800 : #148ce9, - 900 : #0c7ce5, - A100 : #ffffff, - A200 : #dcedff, - A400 : #a9d2ff, - A700 : #90c5ff, - contrast: ( - 50 : #000000, - 100 : #000000, - 200 : #000000, - 300 : #000000, - 400 : #000000, - 500 : #000000, - 600 : #000000, - 700 : #ffffff, - 800 : #ffffff, - 900 : #ffffff, - A100 : #000000, - A200 : #000000, - A400 : #000000, - A700 : #000000, - ) -); - -$mycroft-color-secondary: ( - 50 : #e6e8ea, - 100 : #c0c5cb, - 200 : #969fa8, - 300 : #6b7885, - 400 : #4c5b6a, - 500 : #2c3e50, - 600 : #273849, - 700 : #213040, - 800 : #1b2837, - 900 : #101b27, - A100 : #68abff, - A200 : #358fff, - A400 : #0272ff, - A700 : #0067e7, - contrast: ( - 50 : #000000, - 100 : #000000, - 200 : #000000, - 300 : #ffffff, - 400 : #ffffff, - 500 : #ffffff, - 600 : #ffffff, - 700 : #ffffff, - 800 : #ffffff, - 900 : #ffffff, - A100 : #000000, - A200 : #000000, - A400 : #ffffff, - A700 : #ffffff, - ) -); - - -// mandatory stuff for theming -$mycroft-palette-primary: mat-palette($mycroft-color-primary); -$mycroft-palette-accent: mat-palette($mycroft-color-secondary); - -// include the custom theme components into a theme object -$mycroft-theme: mat-light-theme($mycroft-palette-primary, $mycroft-palette-accent); - -// include the custom theme object into the angular material theme -@include angular-material-theme($mycroft-theme); - .mycroft-snackbar { width: 500px; } diff --git a/frontend/internet/src/theme.scss b/frontend/internet/src/theme.scss new file mode 100644 index 00000000..f17f6267 --- /dev/null +++ b/frontend/internet/src/theme.scss @@ -0,0 +1,185 @@ +@import url("https://fonts.googleapis.com/css?family=Noto+Sans"); +@import '~@angular/material/theming'; + +$mycroft-typography: mat-typography-config( + $font-family: '"Noto Sans", sans-serif' +); + +// Be sure that you only ever include 'mat-core' mixin once! +// it should not be included for each theme. +@include mat-core($mycroft-typography); + +// Mycroft palette defined using http://mcg.mbitson.com +$mycroft-color-primary: ( + 50 : #e4f4fd, + 100 : #bde5fb, + 200 : #91d3f8, + 300 : #64c1f5, + 400 : #43b4f2, + 500 : #22a7f0, + 600 : #1e9fee, + 700 : #1996ec, + 800 : #148ce9, + 900 : #0c7ce5, + A100 : #ffffff, + A200 : #dcedff, + A400 : #a9d2ff, + A700 : #90c5ff, + contrast: ( + 50 : #2c3e50, + 100 : #2c3e50, + 200 : #2c3e50, + 300 : #2c3e50, + 400 : #ffffff, + 500 : #ffffff, + 600 : #ffffff, + 700 : #ffffff, + 800 : #ffffff, + 900 : #ffffff, + A100 : #2c3e50, + A200 : #2c3e50, + A400 : #2c3e50, + A700 : #2c3e50, + ) +); + +$mycroft-color-secondary: ( + 50 : #e6e8ea, + 100 : #c0c5cb, + 200 : #969fa8, + 300 : #6b7885, + 400 : #4c5b6a, + 500 : #2c3e50, + 600 : #273849, + 700 : #213040, + 800 : #1b2837, + 900 : #101b27, + A100 : #40dbb0, + A200 : #fee255, + A400 : #fd9e66, + A700 : #5b6984, + contrast: ( + 50 : #2c3e50, + 100 : #2c3e50, + 200 : #ffffff, + 300 : #ffffff, + 400 : #ffffff, + 500 : #ffffff, + 600 : #ffffff, + 700 : #ffffff, + 800 : #ffffff, + 900 : #ffffff, + A100 : #2c3e50, + A200 : #2c3e50, + A400 : #2c3e50, + A700 : #ffffff, + ) +); + +$mycroft-color-warn: ( + 50 : #fdebeb, + 100 : #f9cdcd, + 200 : #f5abab, + 300 : #f18989, + 400 : #ee7070, + 500 : #eb5757, + 600 : #e94f4f, + 700 : #e54646, + 800 : #e23c3c, + 900 : #dd2c2c, + A100 : #ffffff, + A200 : #ffeaea, + A400 : #ffb7b7, + A700 : #ff9d9d, + contrast: ( + 50 : #2c3e50, + 100 : #2c3e50, + 200 : #2c3e50, + 300 : #2c3e50, + 400 : #2c3e50, + 500 : #2c3e50, + 600 : #ffffff, + 700 : #ffffff, + 800 : #ffffff, + 900 : #ffffff, + A100 : #2c3e50, + A200 : #2c3e50, + A400 : #2c3e50, + A700 : #2c3e50, + ) +); + +$mycroft-light-theme-background: ( + status-bar: map_get($mat-grey, 300), + app-bar: map_get($mat-grey, 100), + background: #f1f3f4, + hover: rgba(black, 0.04), + card: white, + dialog: white, + disabled-button: $black-12-opacity, + raised-button: white, + focused-button: $black-6-opacity, + selected-button: map_get($mat-grey, 300), + selected-disabled-button: map_get($mat-grey, 400), + disabled-button-toggle: map_get($mat-grey, 200), + unselected-chip: map_get($mat-grey, 700), + disabled-list-option: black, +); + +$mycroft-light-theme-foreground: ( + base: black, + divider: $dark-dividers, + dividers: $dark-dividers, + disabled: $dark-disabled-text, + disabled-button: rgba(black, 0.26), + disabled-text: $dark-disabled-text, + elevation: black, + hint-text: $dark-disabled-text, + secondary-text: $dark-secondary-text, + icon: rgba(black, 0.54), + icons: rgba(black, 0.54), + text: rgba(black, 0.87), + slider-min: rgba(black, 0.87), + slider-off: rgba(black, 0.26), + slider-off-active: rgba(black, 0.38), +); + +// instead of creating a theme with mat-light-theme like a sane person, +// we will create our own theme-creating function that lets us apply our own +// foreground and background palettes. +@function mycroft-light-theme($primary, $accent, $warn: mat-palette($mat-red)) { + @return ( + primary: $primary, + accent: $accent, + warn: $warn, + is-dark: false, + foreground: $mycroft-light-theme-foreground, + background: $mycroft-light-theme-background, + ); +} + +// define custom color palettes using the Mycroft colors +$custom-theme-primary: mat-palette($mycroft-color-primary); +$custom-theme-accent: mat-palette($mycroft-color-secondary); +$custom-theme-warn: mat-palette($mycroft-color-warn); + +// include the custom theme components into a theme object +$custom-theme: mycroft-light-theme( + $custom-theme-primary, + $custom-theme-accent, + $custom-theme-warn +); + +@mixin mycroft-theme($theme) { + $primary: map-get($theme, primary); + $accent: map-get($theme, accent); + + .form-title { + background-color: mat-color($primary, 200); + color: mat-contrast($primary, 200) + } +} + +// include the custom theme object into the angular material theme +@include angular-material-theme($custom-theme); +@include mycroft-theme($custom-theme); From 1b7c4d7683a0ba3df7a97341d0d8ca1331ecac74 Mon Sep 17 00:00:00 2001 From: Chris Veilleux Date: Thu, 13 Dec 2018 12:27:10 -0600 Subject: [PATCH 2/2] changed default favicon to use the mycroft branding --- .../internet/projects/account/src/favicon.ico | Bin 5430 -> 116178 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/frontend/internet/projects/account/src/favicon.ico b/frontend/internet/projects/account/src/favicon.ico index 8081c7ceaf2be08bf59010158c586170d9d2d517..5921ab59f41e8b003f5978074d3ce6ac42ab5be1 100644 GIT binary patch literal 116178 zcmeFZ^;aBC6eip=xQAc~?oMzEHX%T8m*50<2<{9P+}+*XH82ne1Pu;>;O-LKcHZ6n zY0vi;?0$XDJw0vJQ&qR>)_tCP8vsB6GVtF90w@7f2mqMFe?y`F>zEN01PsH^LE!S= zbw+UjxR3?`9321axQq?}h$G=wDF65ID*))L0|Bq#`~U8@L<9iqUJwwjtoR8FofsVe z04y143Dy6u{wJvay;{$y4E|0Ci;Tnvb&o&C-#z1KcU{+RybaCu^?em5qTgb2FvNg3 z5g})YMKYGw;5j!vfTYH21(`2NLP>#)w1H2_yq zmXIm(wWK)p2N0q(6b6tQnFFInC+Xdt9W|pq&zoj$IHA7kTCVP{8r$pzrCuGCja)sW zr@p7&rEyc-%MTInVX;5K>|Ls>;JAE8k!RPZ9~&6cIy0FV`;7*Ff@F*?vTEbQ|Acn!kktj$xD> z5eoN{w@Qh}hWI@ONP)Mmiowp5sR7Pq-I(&ne+B=c=P8L$PYzq8OraI2b_+?};_=n*`K?b1AiA~pXM7xNeN1`Z+AKi#T)q>Y8- z6%JZ1C>*4x#}68wZ_XrcDWS|kRk=2;@A@#6HMR}`MGy2abwQ-0Z0B9yiCnPt>YXVS z0Xi9^0%Yrl4E0;nhuwhO%Pvs)CNY2x&UK-;8Z8U0_cA~TMZ?R;F7)df2J8?^()I)h(96>M9%ih zZD3gpD{o$XfBx*>{+A*1;yb*I%X*4Vb}_Ug&42o3CkTkM3Iy%tvZV6;pG+EI3^V`Y z6JhQf^Xz~#Y~L-{VfZEi9m?16(%%HU1;U$9^Hg{u{-%nKE?87n9hiSU*AnNDi9@8k zVtHR-`3%ETqk%>wsy?pVr*8%wi>~G{5CF%;6peL6P($E1$0J9*@*d9&4?YTMbPp=; z<0(`I_wKzivLCnKgL4`RRdKW}b21kloteo#VsnGd!pr`mP{5L8pZ5nbWXy^S$m1a` zUk^z$7gFDCGdkrNZ(dBB7-Z}9+5O@tl$w?Y3GZlop9MZ{Y?4b-<*xn8C0xRsW>ar9 z!~;l52*+j;7CqTN*R9{-zX~Co5nCwGr;26l4x**YSR>?a^N+4V*>B}(+CVcBTdr%w zLl_k&f<}+ggAWre544@x>Ik0=@9QBsLIK_zzx;JOm8=svUiHw|05~J+UD#be#WS3S z-@}#2razy-!iRM}N4Zc5Ag{prB5p)M*tz=YwC0wDGf3gSl2Qv&8-9k)5#GiQnuP!F zi6(gQ(eUDhgb7t0{DGxIQHaCQ`Fvo&tqsYZiag!|mL8}(x|p&QY!ofS3#AwIF|I(x zl*FZpcfuS(>%xIde&PtI!{Bx*uF84sh&3YWLx_rWX9HaQbNH$raL(`N()Q;B@7Poo zE6+0mM$YPTLjm%X6#IRWct9PIc8s_tIvU-^{`|sQWzfr7ugh61s0#W`8Tw+$h2!x> z->uLVi^eU89MlqYl=rdl<~?dJGkL%;3R*gz*~fOfXQKx=#BX>YCys^baw zzo$SbBtCZ!5K^BtIUcqz=J_FRzV!n=>?{bE7|aef9Oyz)GR_Ht>+y*>JpllV&E_C@ zHsxW_pvIv@fwN5u|Hr%INvr}HIcKss2U^{~GLvVd4?$giSoPuAC z{3X?Cr;#R9$;$1*rAdL~9iKI>>MicRB!zxB-1fRN1e<_+$a;?bV-2U-dKFxbDpC>> zrrwKGV;qZde#cvoEBd7TBvTbJ=6hZnx-lPvmynYd@e)8L>W<^REV6OF#)rcY=NbqY z_-K648|!(^i0*Tz3JX!~Z=44!#)L{hX0*{k3yMw}xy|FmXN~gU;rSZGE)SZuBl-STdzXP0!8yb&R%N_@HsI6%3&)ia z$nofTKu)FJvJEi=IdW_jVL9?ZT*f zc+KO}FR7F=V%=hX*?mnx{B;%uEJe%K`#PXJ^A;j#kdmSZqUlKT8Vw9vBPQ=CA7kbz zb1?xg3s$cZ+ZjqG^pG*{bV}-oY3c(GA+isip-HQ858wzhLB&4-Uo%F%{uYbsbiY!++hq|V4l-?%JuZ?LtmIs|9?_QeDa zW^&^qyv={jJbmS6xSr9#PiWx|5J*s-d*kz)B3gJJYIv&GH87?6j z!KIrw^0}V2Z8q%POJ@Og5I$8u(dR{Ps9tGkdv*UxLE!`udUsRPeNa0t5;ysZ=vtem zW;gd@G8v5fd|o7C1wlTnJ&>Vp%JlcZdOsOEAo`DBX1x!R9o5 zR15*|pfq|9?R4=iLH$?RK&E?+vR{AuEts;QwmE7!a%1zG{&`z%2CbPjVi9?PkRi5( zkE=Y{tQ${m=`UGN$+EbJrYM8W@MjHOF65L04owyFgZKW+NuCKv4EyF=ATxQi!?OMY zg?6VCe`BXN9{hZFFU~;HjS<);Zj8O{&u~sb;o6T-H#32bfz24u;NKtEU#v1AZ?r$e z?K-3lyzH}p*kh37XOj>2SN!QJ()c)nnmH@O&L}olMO?4z*A+4)>$MqFu@Bp(L$4MQ zShnhzkmk%cH}rx5?+7YEoCs0Uw@zV<_Tf}f8-aO5a<~rT5?Sfko+k7MDxn7zzv`9c z%}H9=Zk--GYmGlhWF{z30oXon^cbdPpB|LS!7UXBI1R5#vG%tdvOKtYILSEGwBDsq z8|0!hdGxge{=j=P`o~dG-7dnART44&;`ls_BspxvS;hKRS0vC5B$50w>PNl)%ur%Y zeUTIvg)qxKh!RLBYND`+4+b)~B-c>S7zt-CyWMitOA|(yoEvd>&DUp4hn(j_)~g)% z<|<&^ExrCsHR!?y8q8#kL4RFPF(T(y!~J)l#E!%^{^a0HDWJ(!q^=mnW@eXu!&^%FS>h|Lz%;tV-~^B2xq)i z_}UI=P;aHr2ll)fD@dl)+pqfUU~ZI!mRf`d(lS&zHt4MZ%SZ>j@#`BNXbo&f}PG{UOLG}^$FBz~*64&=+nf-D98Pda+n-zHL@vR}i z;>w_(@fj5I!bIK^DiK zE>Ivcabn}%2t?4cWZriI4JpJB)ogdv$c;`cjAI4(ERt?&bMytb-ssYjP%c6@mCbns zMZ~E<7}YeW>^h)r`UE6Nj;Qedq@<{bXV8lB)fNkk7uS$d;>guh-Es0%_Ju!CGm<+vO#dS zMVh_716|PBx0dNCNYDZbWKko|aa)H&>Ea?6h9v-BH0nS_o@Rj*3}EaZGq|4HF;d4x zMnYq@SaT}(mL@K9*1`$UuCkLsm$WTY<2@O73{jPS!C!IXIcfmC*d)rp4skYhaEKF7 zF>E^aOkYh>H))Aol*?;tx7q=`YB6H^PO{S}4-y;ScL$%Y*sshYAdq(l>HE&ny6`Yy z_J0TC<;UIh2ZvgK^IoUkXJaHwe|c9IE~cVUayaaw&~Biz1KvJf4AVhe?f4?dlDf;o z_O_)SGhnB_Bh5y98oag^{uT#P`1=d94Dn(s_U*XlX%(ImxrcG>Ta=|sdZ2|!9^uV6 zS~tXBYRL0C`RiJwf}awt{lj<2l%(+FD=x(t^sF?v`-bw-~RYqr=vT5dl14 z8xjtc1p=(uZ(i#;B;>qVsh=oE*^A7zWP6uKfMtYwrv8?a_pzEp2wijda42r@FAcd6 zddx$Mhbh_7k&Q?)%_L&N{H&uNy+nXTZOG_MvV$H@+vkWj0~LF9RkS+nt$;4dpwEIA z@7cT%{^;W}ZWC^mI3x@)<91tYui&FzBB6%p+F`E#RbV7Q$xJLkf<_iBL4A@+u4>SJ zfgjzk&4=FK#{0f)AtLR(U-m&-9s7CwWbVDdZ&WMhoSGg`lS*T+o;0mSrKFFYR>o}D zY3&x&Y^%TW19MzM?g470BTuF{9iXP_l~%$F9cm|oh6_u+wxQh>yG|3+joA999EBa5pT=Bi5F?6x4n^T!tUvJ zb9T1aNU<~kEO`Pw!E>yP`Acs{Q4zEk#MaKc$wU#}t}kffpxBNL;uVIZt6-0^xfd3w zf4p3uKvKp^b~@UvmHc}3%j0USKNFT^k=P(cW12O9^Y2diU&wk^J8tGVK5cG28@mMa zqpdANn|psDc`p(BOuI^WTGirRDGzk2G~WIPadeXe3w+of(Ttrt#8p|~S!?B*b{{lPMP^Kfi&NZ96Fn1Bj8yde2mS=Z;YyXNzFjx=G6F6BfhraXrBvHrYXjD}4+ zG7CawaCiE)9!DM=lhZ@aL4?|P<#JIArpWYWWA9eL05p*62@R}J&(M$9GU#3w$_9OP zg##3Ovbr8Kd#78qbAmf_nnCLy7xVU9tuBxBnM-fhRiafct4QE_rHKS>I4a(|ryg^Mw~M_~3Rc+^{r=7dh$hjk00Zr=%t; z3l)vv`JjL|*Vj{+hrn=t{PbO#(VJ1!Pv6Kql{{V)JGW&r>y6E?z($`)zYBO}E}{$v z6x2gIa_HYyNf5#--MOZl-sPKyDBB9iIeHAKoP~t8-Yu`3E-X3VNf9sXF?`^eXTjxm zeN&s^;M-E8$HJ1V?8$Avnq8Il>!3U3(88(8+BEl2Xj_-xHZTPN?^P>7NR@@SJta-l z)~G$eLh_J>N~IsR5)hHpf+?%b%TN z5`sJkn*;4(%42(4kx9l<3mMKH*vMSb(Y=tLdIim>*f^f>hmI4_0(l}F$#MRtO0l5= zZ+nORi|rw{vl9c6kN%!KNwf1;yU_jy0AH{*Z-Y{Javcqc}#BSnAt&meV!h@pd*=A z8pB=^L0T2hTeRfk1}rsRFG1VFs+nc+&i)-NzO9$u#=N&yQZv|ut)#pEh4z;uKZUc% zlp782#7DZO4XSt@Ur;=ff)QO|KA!U@Lg7XxMrEd@Uk5uWp(GzvKeU-0cY3k|9R!u2 zh3OE84=4YkrQ)soX=~NqkBtgDBl@*=kADX; z?BzWBpd(hJyhhkxL;}(8aYVCc!%##$ZzA+TDz!CnOJu#~ORVy`p_r}xsi9wYpJ{XH zNc!zkH!1kR4n^zoGYQ5?irEso$t-x zfKSPeRA5IM=^7>bKVFCx!OU3Y7r)9G+EGQGV4PxzHe5HFY(R{!A_`E#qUJeDu#mVE z*7;4O+o5zYr(koTZ1s1}ix3`FtwKmvM%3*{q^mX6D6i$>_&|ur4I$a--*uHyR2=(e z<>hSO63{;jNL_gD4B#@Q6F8|;0Lz+1TKD%WkHEXF7iv5@z>A5#KRPzNS8)R4*f$Pd zsi8EE&LxZWymIucVK71R(Gbo%i($70g&EvaS;;2bNFhj5>m(TGiOA&Qbl#ILVT>o3 z5$EAE?CGUP3J{^p@^qXDjjnx;5_9LU36}t4?!MpUqs>r!z2#g@8vixM8bR^dw6d;n zZEu2calHMgnO^%z_ZqQE2T%{1Qhu~k!hY%Y8>|ti1*~TcX=u zGNFRIO@v2{eY>Vv)ywWUo<~Q{q;DKaiJdUbLcSwt;y1MozX=+XD7b&QN`{Im!JX)9 zoNvn_M_*k=E>sfXeUDcrNq@o^+{H`swR$;`5Y+RYpBoVo(q4{Gb&W$Eop8H3?t8Ce zM9Xk==)TOkw$r$wxlz3smOA(m4&3-yG;k)*Mq>GNM)u`@7=+^!p)Gf}HFsT)V-j5Y zt7$FgZ-ze0o=GbTbclQX>h@T^xzbI)AR*Y+amYXvi7pVQCVRngaqIWupglZIDvTK_z)_KaA_jSmN$G77j|3v$`#7b>-W z&Bx~?Vf?5asqyC5uZTOmK`D{zYm9AJiB)T z`WIKKzuEYd%Y-~b{o{!LH$3j6fabg5_g{F}zY5jnyxH;mSutGhk?CSKPJ#EOu~yAThKp_@Eyf2Kpp{Z9}wzUr7W|r$F<**CR<2>-#vSPW)K%mAbSakh#0? zP%Wcb6Svy--oy}Ynhm}c>ty(p%Z|1E+J&aHlv+_qQZMIHKwytE4p-_jQmiDr@^bxH zG&EHB`L_B!dz5x-0XZ7Mb+~C<^b7z=?AZ?=bf#s2FM~vO+4S#z9vm&Ixqp2}9aZ(? z#K|;kk+8u&pZU!A>A@@B34lAaKLqn%TW8s|-iOJU3Fg^ z_)vb_8KH8=6o_+P2?N5A%;N8p#KG)o)f`-tpm~&frC= zImK)C#C}utwwY9T(LPx)rd}eN2J>;TwoXgSrt@=2ydzhd@YP!Cvo9^aYxBZ_EP!8y zQoFIq%q(uAG{75uE4A#vz2}(6Mr8StxZ;&vT<|Dab5Aj(u3n*T^yptdxO4SWN4a)?cLPHY&BiCDwB<@5l=!7iSrc7zI{3f9#gxSY*D#T9KO( zk1QG$Sif{wa(bQ=c`m5OO>cWWogEaT^xwLu#OJ!YBxvh>K$MO@v?Q{a*92h?tvY|g zkWs%mYkopqqnLCrg6VrsSn;73M_TdKUl`G?I!s;qCSk$f)z` z)n6tc;a#u7#4mFvP=cF;eksUQWGB;=zWFgVqfBdu+8`TMP=rhsJw@qMq+`IuVe+fx zP~qN$(%6v68t)8e?3H?P z-VEvL+NWaGe(w1|Gq#r>+AMFpJcb%(J9tz53*l=&0QWXL2=~L*SvKoI;IC*+ zxn&Gewa;vmG2&51sWykRHT{WrBdK#ha{D_Zb40!IH_fGtn5Mzc^49-!<-pC}d}^V; zD!9_jCZ8ku-ECyu3=SvJ%A;+4xL&;`0X2IgLK&3LzHlJiV6uy)XbsObUyC#8)T`{` z9Q~?m-D~^4T3q=;oUov`l7;rmJB79>4H)v`GBo7aU;2#Q$*i$}fZp_*UKk6}xYu$f zETD#b{=#tlG?$eARNMF2faRcGWk$S{XyooTF<$A!j(29~#||Hb4CU{iW(drGi2Rp$ z1C2OXNJ*Oic(0&~cJP;e>~^DDi%u`5gS7-o-ib7gMd%b&;V>{%ZT+!aX{yr2B_u9b zrmz7|7~t&EpmzdFRrE&F#E^OU4LHOwI~_%oM*(kMTyh%0brB&S!uV(;ZPskUoma0!(pBOr#2 zpY{&wR%YXP9`w-6w#%l9VvKImWcb;mnJ@RNKWCXw1tco3)x4c9a2Vsi7^zy=l^d2< zXjhL&)5&j~=xn_+%_8GBdrB+MWI1@W?YB|G)phE-?%Oc&vmC;oi#jaP`EU?!d4Ob@ z?8y$}LWb#-sf#y0*KWzZGiSYHh`uv4On6X^%zMpzWw{T^J!M^%yrJz*iB>>KX~R!* zi${*T3?}n6X6lf0tgh0_iA*yn_*11(-F%9J{odwnjw}@GOV#W1Ir(7rKD&W|)yBe! z6G?t1vyR`CE;J*7?zzZo;pK-TA)q9%Sw+bR@(V4_yyLhr&{acHJ|-jB#I?3Prk9Gopesq%&hEWGioN$UN>Jw^{zdS5D^@b_j$&&@jysHGT&AzxRW_4_5VY*h#5B zVPIQ!9_JDXBIs)q0wcw#BUlnD9R&<|wivSy+5(BZ`VDhEco>Wgr_)(4(M6=66=6;w z(QxEA*A%)pZl475`pG)@n%E&XsDQ&j#qUDT)YCo zf>kk?iV$<{xB+%$XpHs1UZ81S758ji{7Gk{t64!u6MUgM1-$n+eIMy$bYor<@M<;C z;txbnxueja&b|%#H*aj~E0kj%N6GkixzFCtA10Hc>Du|DP45J)9&_9Qr)e!Uo^@n= z3P>kqTAzDKiv`I-omS##qa_pEDzgQgc(l9^)j@R5SG9qFw}hu}N3G}1Cmcx*KrU}9 zadV@Cfl^!H=wJ(m(bdzF4lNREgu0%6FbR}`2>gqWQmiumU8eU5qLgzB%HD0jKF2}6 zYR$**pb@_nqI<4D2C|-e1k|Yv8CYg3K& zO~}=ooJ6`##J{qy(o24ye}H@|kYFACr7?ZU2bGFHz1#8LkFj7bPPHuIR(|ccs0#F% zQ%WB^@V>%Lh!#P9e(gOd{iQ1-0_qm`Rg*wqI*xzP3AsZG0Sd)B!Cof&NMtBo6uqzX zI`n3kYtWkZHJjOSyvFTyp~uKPFV6Wv7Uk-XgH1q!2HGaB`N;NDwK_SH)POzgJR;$;>Z39X$|DfW{S44FrsMc zcJE=JgcABs1bm47{xrO*_w`cEs~qI9qXYTbJ16d@-ON+WOB*w?pzG4*Jfqvve%P*^ zcy{%U>&1k{pWwfBG|yYc5*5xr()W&X)Pludb}GMAseCFmC_=-6m>+9&{>mWUY&Gp0VaKbk`19eW_&V9Q+ZA_Za(7|r zwCvk(^To!;uhv|&yJ)9Nxb=-ndzUG(T1r+?-z7sC>Y9zvbQbBZfmvx!&#unV=hj#G ze^f~!+{BP6<>Es`h)7`L^fl~}GF@^t@y2!l&N#c_2dBT6Lx;AS(;#vqE6$S|C^9xZ zPV^=RBT0&$H?;tK)+pQXgr)tIK7AGy8c5V;TVxkV&qHo z&v=-_m;|Qz$CJ0;)}^fDN?AwXP|efZl;|fExf}a`er}Ao(%FPNrrf?D=4*u;D`58b zazHeEadEqsgUK-XvD?w_{9H>OwTp+`shU*fESTm;IbfN5y1LDskxCF$Rgr&jjC^Vl z`Z`=X1ZxFMdmuHB2FUFPiS-x}!&G&4wQ3Rn15pu#e37{{2X<;^=<8Sm35>@)&y-Gv!K^lSC~e9S zw|}Rb?d2Y|qkuH(x#3JIeSg*eY)L}E&rOF;FP1aCEYbVr=D2KMT)5Zxji~-Tk^xa~2leMjs>T;VI?%(f+z=uAp}aT^_qE)YP5Mced`TKA&wT&VFD+y0c_ z&Z_+JMa~%xU5Xo!VtD3vR==R}GOP%2EFOWT5{%^H`Y%6KNHC8WxJ;#+`-$~>XQB+`vw{)Vvu=+1nKb}{>X$Ct$C3OjSo#Rm`mCOG4_+1d0 zn_SU!5~Y5E$nPTVSfxjVP&GD5i=j{wOQm^eIjUAM_;ISy8BXi>w5=K=p1yIxGHZ1e zf-k-DsRrSIaxBHrJDa;kwAwBK!n3W#_nWgdnu-qezZtE6A^(;og(x|GFEGu%OH7>g zs<)WL!%#tbGX!DN>7cHwz%pi1Udak)G!J%if2h<_puetxqcL_N+jIpL1?a`^;fpY@ z-g`0s{W5!7uDIc@rhPO{@9$Lt^$DuQ?@7t8+rImsKXvq1^p;|8qY}{D5WJg^{0bSq z=@yF$3Y7&t&dFfZJ*LwLUgY>H)}!Es-gEaEA;W!?^Gy_I{HKtw`VsS`)GIkyn_+Tv zd)>m##i%px)3%PJka-OxgP5Yo(U63Mn*y_F*Iy=HFJ*5lr7rvA^%;>^4@jECX$dLL z{%NRHiFOQ@vh%SLdUI$p64gF--d9aI(1aw}t5dI}g}3R&q#b9^QUs$aRoGgJ0IpwU z>gpJHpuuX1gcD*}cv8;dhEgd}QgXv;Vhtk}wviV^MBs77Pl)mF4#<=Vz2={`C0UpZ z(CjFDjDDNw8k~`hXi^=xaAEu4p1eKxm~hJ#LLt>wO2N8^Gieq1#gBfQIvf-Oi`0K`&^ST9Hfm*RJ1^@l8psTBn6SIZ8k{t{?s|KlVlAz5Mpf81iK}L|nieA+6}+z)@(BM&Q6-&0|UJ~dR^p4Og7SB?*|KgzZA4MRuuC% zUsvj_3%&m4h;a*p>o>S5*_~haVdLTLAaD6KdcSQr3FqU@x)pk3-e$AVG08gn#89sB zaxTQ>Q*?4U=rDWN*m{^0m|QtcZ&fv6h;ufOkg(D`whIqqplQccgdKv>II^10A0ApQ zJWjE5*O!N_y74ro#l-w;#{ctS^5*|ddV;y+8{-Xtuk|DxM_4p#)xi~r%<{8I@IZhd z?Ju+`fSlbV_jptAG159LZ&OOL91%C3d7HpqAHP(8d}iHR`#k&Nk7?LxFq`LH4Q;xp z;m(qoom<3t`^w7c-ULi~JpQt3`Hzzci15%bauh=1W};(l!uU!MZq68h`%}g!1o^D; z&@_q$yqs3v!q+a?u?{vyR$`eV4v(8FU$s8yi83@bZCwn{`{K6#aZoT@1mK= zMySab@!wc|Io4v1(n!K6&KbJZ#gwE4Tj$<;ywJjGc|G$qNfr1%)!SbT+8s{{Eb~Ok zXS+{9zKh9->xOh$41^P`-0}rwq0jbOHATQpSa-S=yA@a{Y47 z@#NJDB93gRvy&a~!H87ljcAZk*-}tiM##z?l6k>Bd|A2ui-c*R8i9hHSzjb?4@a-6F%{Oo(%i5odhWfVE=x8`&-O* z8=`;oSr*RkhnKVh5i7ub0I5h7NPaG<^c~6^J1jl)U+T$3BJL0??hv){!@uuOtLD^Xj)B9epSfoFwZWlw{? zGBx$1w&BN%i>TM6B)^Z34uU);3;Bd?qqTSQ=Mk}@ErY$gk9Yc{Ichma_squv#~2= z$$2yt`C;3A2Q9$C04J@2X~F=*(}vHqrCYhwv5_l*;6k*^ByvK8hH%08ChXI=c5k9o ziJu_H{GLrBmA_ZbxV*mSwb$>+527O~DyEoe_VCJB0HA?UX8U0+bJ{rQIdzScaD%z!lvc79y*P6|m*(Q*e0Oi~!m`a`;8GVB#D$o#;O`PsnfALeZMixz0W}j28lPLf z+$RL`AZ@G9NZroARWR5@+^UGbnkoK=GSp<=wF*;dRT54PivKdsJ+*iosoeRgLjKzaCo#Pg{EP=DRRWQA8fQ)qY!*& z-}Qh(s<^LzSYNA*1egLt<`z9Mh%zC!o56^*MU8wN){0Z6$| z7WYa$ByUz3n}Gc_+?jARd$+NI8w)3Wkh%NDkt3n+5edu~S(aBESdNUO%A_0}hlmri zGMn`mird3D8p81;T5@Zou6}vD#H@fE8}&&&Wr)BDkg! zn-mb$uOCM0oL@}Nz|_>smH|mn-s}7fm?EyGr%a{>_^k#*{Pl9#Jq@`TIfyE+N=wD5 zLr&#`<<-a5tk%CXVZAbPuH8PHgokf@{29O@p7~DdHw$g$pUe4=@W6luUiKq6yK(IP zc%&~V9PkuWdHRZ$+T(Mru)UW)x`tZy6@9Lks2}(dS=>pNPIY7p;kG(aV+YKVGNoqL zH3x(=Q1VlrOwEGf1BQw|e5$imwy%wF%~rpihiE;VBdz%h>1f9A>ac7lDLmHs&HkM8 z)TjD240Wd2WZ%xKSK3*uG_-({Hy&vSh#H#97?`?&imt~-#0fL8lTuv|5|3e#OAP-~ORoIN^|vaI`b-kJ zU1={hL=PQnX&l6FZ!lO*XpKzz&>EN9Yx`6(*`+kRH}0*0H1Q83LPe)HICWhSs0-9! zY0OV`PTE~bJ7p}v`A)@{#gzTdE#OGl?gSeTovZQoP~t{D5(SsB>vi^LGErP<)z{YN z!PNs}N-XEYBD$@#g-&Ji^Hqf^<@QRermU9?)-5-=5&pSSXVu&l+@C36Z|8=B{xks| z+iem6N={nU7a6oWw^${9yn%;(%BefQ5F!UprSV3Qg>liyzZ7HI*I&jP3rGz}ebf3M zgYGtaF9_AEXWT@%w6 z3UG)FNGl6u;PY%8r|&);-8~$@^_L0z@H&`Cq69QkSY%axylFEje(NYpf~%sw3LXdV z&L7mVVE_c4c+My%;({~XxUw?pXXQoop9!YQmyo2p{zU5G&!$30Y+U!6e*-J9hJ<_E z9c6e@QauubD|bl|j}lqp+A1=AfCV%)K+fh0WV6Hm-qHA8bS|t-0=7v8WK}8(erGBNNl$lF@uNZC z#;KE`<-sXH3{_BHLW}nKMKhRJ?s^3#DE3?l`Ezym(R(>-f+{L*zTt0|lBYOA6 z_j*re?1EUcjbl)J)QOlOE}=mH*SrO*{z)_?GMa2+n;G|{+9wd8& z2uR7_ptyu7j_9+N)Jp^KaIJ6Gf>Y+H zxmBv9AG)LB7Gi2k>EI82cWdknu)iS0IS)pZwI$xQ-nz zU_o)pg7BDezz@26!c!xFe4t*-rsi4|q^B$XA(K$11ac5suNAv8`B)3w+cb2)>y}!; z6!jeF3ndtF%IIxDT#dB?{WuowO-j-zU`;xD2Aj{mpzq*zj?;7bIaCn)g(}J0AzgpM zMbWt9g{istcTTX-nI#8PmV)~CC#XijrSJ?m`}WjToyNC3(9Cl1CbgdOww#Z96ijq9 zBrTyqyWA)w;{cYrk^2`WzP@Cn*@RLWwCkT9 z36dtj&O%+ihSC0NcT29=yLKUCC7@;bV41O^e}8q;fCXezPCLpg{Gz7BSKf+p3pp>u zDIH6k`i=a>$aQZ}6y<#phhAN*BB0=t(N}ZFO&OH*N6je-#lE1*XN!tHM!V(CSTBqc z!>T1%T_md;DSfBE(K3-JG<1Y6G`^`j^Kru`ilG1Q}y_8t2qcE(4 zS6VxQ6u%0df+>viy=bkh>DANzTN#}8AZ7q z>LEgX<*O0ic-IjOPcX0`C(A%ZxDispOj#z72eW8p{j%yueZ=0WwRdHAy-F*K@+VHMRS>OzQbNJ z+`BCNOfXMr{fiO)wwn5Qe?cS|r3}$3)fPX3-A+`^6ap)sIvT z-QLIratD?=yhaR6c!HW5UohIyTMvxLO|fv-wr<7LlgrdXIDVij=xA(B!XeR517m<5 zSKJ%Hwb~5f)g8L>>%pEIVPB*--cN}?)Q&}~-6mP!nnEih*_gJ);CJ=;H=>uTZAW;K z65YZuj$5u=8gd%#`9D^Xa?tW{07EG}i1&kQX2rA9ondvo}3-@sX7SxAsY&0iXu~n#hizjds@wBSSp}uuJ|%{)r8ffL2_vjV9mN1(ybB z|HfFbHbi>!@-w&f!G)i$9B2#g5qVcwFs67#DT$@WOSsT+`U|f(5@9 zIhaNW_vgtNPF9W9Qho1Ac=8yF<2425%!Y#@ioj#~ero`mN}d|JH)1(c209drw&u4Q z;kHfAkoMX^`5=lnUs@>vJkiZdc46fLiB-WxA~-c5tHO)|j3RBqIv2q_C&Mp(%LNS2 zZ|3Iy1p8DdP<$Vhp_n3sX9!xqYLiROSH6=3)WyXA{Iso3!`-sViz$8KdR`o{h{c)L z5wwhmw+5=!2Jd^uK>h?Tto?{E+&lmi)DBM%3svqDZ(^tq&emSjwv|te>D(vxkCx_z zx~`p-miFK{21vXh)!}X1R~2gy4`<=6W3AC{}i5|7Do1E+U5Aa|8{bX7yf| z1!|X}1o%}Qe$D^O&@Llw%ZvwkyH2|ET`0EtnQYOqPz_!#)*384y%6SBu=g?V6veH= z3P~gubpk;x>@hsd8%@A}=N6U;*D?dDS%B}`D>;#BV-|yk30GEprsHJq_~6f4@XSn8 zVe6v(b`r%3P*VWhra7Qs=O2BzDuqTBP*~k~+5xC}?<2L&mMOpi-zHl( zZ<3CDzpMDVH~yC!`=8+}O7$TtBNgD>H!%SJ_N;VAIStv})(G3)P3>>zq!jS>F)G;q zQBoyX4lIxc!)(rPdO!jeXi~n+T_kO4$xoD_5VFkUZZuw7UVl#enscr*W{wyqa_%#I zy6Wn>{RKT7)mW$N+q&1SoCu1b<*WXGtZ_KMtI<8teQj5i+C+@|E1x$?N2NWQB#f1S26~ijFKfdRKp|tOnwvgcI z3C`3`2x+3uK9pmlhm`QFQNfw|;KE4QG^7U=52{9IW$i>kXfBN3Q-fq?>zWHvjBK9q z;(Y!)&-pO$*~i|hcMQ95dRdN%lj1%CJ&r{S!NIoSQ2<);Y?5a<=`B1yj_m-uol3(cWmskMeL_-+wJ{ddO1a`v&Lv;4|Xg z3y7eim1uAGD?j|}0f3C8qC}0jQ6MAyH}t;~@J|c;_w9lIwSfRU4B&st|32~m-0r%L z75S=)k>#?KCh)Y3X5g}n#{03Hj{2p79{zQP|9|_xwFUl_QWIU2(deC*(KMcyQXij{ zQeVU60WMePWzB{DYs{feQ?-BW{-!w2Ut;v_K@?F?ArVCd#1%wA z5mW>f1o02bQ%rCLeIh8_7YO1>G);;Ikd+xbsyB&d#(HEFC$4aAPAkseRzeD2jZGpc*!{r?C z^}rxUK024Wr@3KEs6Fri$F$E|JCR?*xuR~>I{zK*bf?=3EgjoW{+@0Ig%Wu zXk5nq|3>TiFh9p8v_G*3oG z*tL#m*zP_RX={Bw^4J0JdB&ZY-#3f^-ShQ@HMHwmBX_h1C&QO^+wO?tBf#O#*4@Fc z`20z%(IwYC*C2Gy?hEVbo7d3J<7saTGRas!sG?s)X0+}KE}370Utql70L?cwDBZLB z0emTV75w1XP+RjmS(EHi1sb-yS6RD{hwg64{PEW$C%kY++}$E9~t+ed#%=RBh_D$z|jr;e`V%`_Q31VNh;a% zSV>_3d8w(lWAY9I9q-=*`d`HH5_BILrDMKOKSKu<>_$E~FR|c*uV=k5j$^D3fC1gcQ{juZLH8bx*V>rRM}OTDoU%F2 z3UxJqAT+aeyOIx?|HenUS`UQwmqUAGq=0m4g>dy+zTb;nu%3SKn`l>{1zY0|uXTP9 z?Pz%`I@>dW`7UTK+stT}@2c&eg8wD@!6I<-b>_i+UWJ03HpUqK>_v?Xk4KT~b zS}pEgOYg_Q%aa^eL^=W=wdPEG&BzAGIn9x_;05&YCD2@cH?JkS)fyJ9eHJiI&cg3t zztPMKLh}yT4LCjnJb&R>$KkhauGX{|sruxn@)XAv;O{8$&e7HnknIE5MbBZ)y9797 ziytXmj^^*m=iqj9pl5_STi)5|eZZP~a8qLT0Xx&)BUs~J&UrKK_v(8yn(0={w&Q~o zTn8Vxg!%I$=ty^zuC&n#HoEa)BilD058dw=qkC=n9dcnD`p?5Z`Loy+_vUDbwW4KB zZwk+txEng#1L5~SPL26m_W!ZEhUd;Cec)Mm!S@+o6T>qn?JWF{ROxLC?hxr}*(=o1 zd?fU5qg`XXewbFi^;^amb3)*HWP-yYGbirRGiPGmc>#Kg9f_aW7rt~lbNy=C;~TtV zbr-;Gd+?EPNAro%u9i1P+FR;kTSiAId(C)`_dxqAp^aiD#%Mo6IDi*~!)?vKf&R^r z_U0X|&i#Fz4xs;z(EbEye%~0~8>!z17eoI~Lx11+K&ZW0u@#pdvIT@KZ-6dL8qG{oz3h>Uz>s+`b6rz zo1>O7HO1f<`>i;gi{U2;{X@uR3-CQXt`1C8UW{@3bT+ioSETWAfuaE~>xb%iy!ZIw0n$`jV$t50%%+!}m&75A6( z``tXZ!0KD`FDw4YrB=^fXIPPWAGbmslSW&A7(gGh$m%?yD%}7+%WsDEYdJ;%{6T1S z6l3~at8ewShK_?TKVl8_JZ~ij<5ndlInZkj#Wq=kTOYO(8|Pc`C$6%3?)knInftL( zfCrma(EowHneW-F8XgepXgLVl%SWqm;fA+IZ$H-RUH)^cfBj4|o|B0fW7c?K5(HGx$V=;5y8gAiA}FnvCdYd0rFh1=@7#bkR7k_VC`sSJWjQG z?myq^-!R)6>fHj#hYHg%`xiYs*k9Q@Lj&-I=jdlM;4?q8!nb_5k!6J^(FsiTOnhEM z*Yj;?zooJ0A4HZr$cimF#p-+Vdg%UQHf3Gc$$=hdw$Y4VdwySNCAx1lyrO??2YqK2 z*K?UK?yv@4TxMhg@&4psud5#SMbgYG@yD;UV#tl*uJ*F%vF=9&Htw^;F&zeUDB&G7B;tb-Y|t!{qCb$HeX zm`9GWV*mLzvfuBm{%7Y}123<%hN90}$wY+8bLW#JbHl)k_p*lgo_W8))(zB;rCOl-j%;GvRRti&a>z=7$W7W`11olF>8QO=VUjn%bm+Q-)%)C zS3GnPJYtSD7+yy|h&n%)`F}9lZS_9*Q!6s(Be{L6-0#)?xh?1ceq9ayu`kSk_KMB$ zhQnID*D;Z?`zgck?Xj3az4<3O*k>irvnc$w9$HAd_mU*XrAwWxNCnScMQC+EPo#uOj!NvI<4q}V;ey(jIl*S+wq zhZ{L8Im9~6QN#xZ(BDayTS(>#qsNUc`G(c^)Qv{ZXLLYG_(yWktogJqh(G!V?=*s+ zsD8D|NvnP9SPkZx$&?J;im%3cTU*nJcA9DU?Ggi~2)0pjNtsa?w zRNlEecGq{9EABAs1IdKEoPIUuTod|hj2hYWXlvm4|G4`A`lX@BdaL*0U&EtXD(_p> zkAHo0L$o8<;$;rN=6@vbkI34uXW6;%?58ZtDeny>ti~zm>jX5nmsx5`f8m|AfzeBCd(71W z*&_O%osWL#kl}Xc(#fyiHshCnbfvV{^VpBh0MB*z?~F5!lYOtaa425T`_Rvf4c|q3 z`byt3|KRy;JYSgCyDCdv)SUj%R64}om6yQxH#k1YIt6`l@ABz>(YRQ>FX9_|k|+9i z1TO^Fb=CbuZk>|D_ceZG&yCDE+yN&x0LH!aEroP)4g%!;*AM!uZ%Y5ukN<#?J5ygy zVrLq7=|L+j{b2pZzP|MmHj<4*B%LVYqNYVoOl!Z#P_w%a@tpgKx?c4Ojr9!P zSl`K(Bfp($ihuNn2Qbe2R$oJ3mLEc@pu;dcpbP)9`i&`cz`@^oqko{Cb}AO#|MsGX zjox`m8dI6G?6pR(>u7^~_@ra4w)jbZ;VicFRO3_TY^Ua`=%SPS$LBD4cD3^6D*z$E*wHD*H$b{@>w+{@4y4yi!?+iG@^FJELH{@Cg7qhpax z->bZzU4K33Z~E)T+p|AyY}s|v3HD+ind^!E?Lo!$`fmFR&o~Gf?{_&kl0Suu_uqO1 zwwxPsp7VO69`v{8fIP5i9pKe3B|RR>JNGgE@AN`{)(sn>zwdE=^5>F$*I9aY|=B4m{;w~Jx(Art{yjqp|&_7_?2hm|Ti`K4M?>gc0>Hh@uf5Z#@X^;Fq zeb3J+Iwupd*$kJyXKu26>C*HESA9=hCCoSE_{W&AQ1)uUlf8>AZe*L9Cw!GMq)7-e>s^|U-T>MeKpNjFQWvLhaW%rBY z1CU*`HmKD9&_iDl{nvP+f4l!{f8$q+?|gQNp+9%ZN5=n?_>5YXy3rr~mDV!ZMR6l_ zh$}^Y3vTd8f8S+4`RFMIJG;d0I^EdQ)BQcR_+;Z>ll@#Z*L9;mvWxgxb}=?B|JQ)* zHxb1MIZch;`L%lJ z07U<1J<-1{D8GMS=l`&5dH*>*2RHJ|7H>$8|LB6_(EHBMd9Iopb)&y*)yt>lG*xq2 z9rVEB|LeTapV%+?{`g9N&3}rk$u3&!J9U4Nx%gDnz~<-tPTlA~`%sgE!uf6eFPXLu zI$+6vPkW+&TTs5g{?ecIk7D;-exBe)>!tAQ4`s%`WN2IW>s}{jU~e& z%p(b|R|CnLc|H0K>=+AqK{qUFmta&4Ir`WOk4h;2o&#~kSmgfKB6NAL&K33;~{`Xm3U&_#b;D7S{oUzYWNe8X#1>Op_mHu|6Wdrp&;Z_e4bee4J98_>Ma3;nVGEu&rj z`+q2g1NlDbjGF;t16%IHc7~2LGY4QxB{zriw$-B4gZ^6E3~XKLYHkwQFNDtna=8OG z-+XL(SpR#90Z0B@2=43P|3%ycvXK0|okcb>=?0u@q_Eaf#B6GQsJ8e{e{5UIP386h zCTe2ieI=%icL`KCYK+8;_Ni0URvRP*29(G z^jGc}+wMEOW>suronrtZ@c(N)(Z4N zow*)}1(Dt_a@*0vIO93_RG7FwN36&&qRacwPx?pi_#*jgZgcso$Zu6~VTJNlfa_rx zYxn;v$Z^xX(ZBg(+Emy0FWLFBV>wOiqCTB|@rmZnezcVwkU#WD|8r?yUE_bl$N`CGZ*#{0A_vGnG`85C>&4iPsBrWg9dH%{UGy6@eoJPL#1wNlVz z$ZF%Sjd_5)yH4Ine~I0Frk#IXxAWlBu(B5XWQ%Z|MTn_ z_ysTYXTNUc{;hld2hEQrpF@_fulT8aK&3Bs^#R$Ch!aX|S`6O9u5nkaKh&E35#kg2 zm5adDZpHp@MsIalz32Tjj-HEjv`qCv|44i5hrsiQ<^iol{74sY`nh7pmLW`-%yZ4$yM02h;~bPn$R}lgBr^ZOjMqCz8CNac6QkXZaSV z=~FBEhi4yRbQiMeIg9F--A`+Qk-{P0T_2t`@$FvdZ_PgF4ZQ#I2)5nW1qNRspN>No z5RNq$#2>pn5}! z)}4dl^>j&hpH%Y{-z|T?I>mPugBjaj@Q!Ne&l-?@#OkO6EJQQ;3FAYnxj(0%TQPGj zan{lamAA%b&QO0T#5eM_13R^Rb~UHib4jiZN;!Xe?*2ZsuZwNJ813~Nxf_EwS3`gB za})K{T?ddmj+twfgPncb5-;49(*<-xG?BhtI#$V!&iIks`pTDS&0ZtK@G7UX_L#}# z_jYr%Zh`X0yL zAMEAQ_vCfxhlnMR&Y;|}E}4O~e9yA8Oz!A`E%!V20Lkro%IzlKR1?o-XkUKc%7(AT z*Utm<|5Qc)_MmjYBboy|2PdrYWDk-*XtrOSi#n_urHfHcG1=TTe&tuJJd8c}p2z-= z-zU!GbaR%Emh8{cFKNFR(cI_}lvgruKeNAN@=~t27<<%__44N_#q*uNcQb!~s~Y;V zkF557eIbVi`R2!Z-b02{-U#`J^sjA$&d@1qec@!2`A!6qX&z;*d^{FoEkzbc$xa|Fe%9K6pi6hp2k&fnLtD=8L%i++TeS{i@r#bsK zV~#!G*k_@a_&WJo3~8O{%o&{_S`Gez&kv!0lpRO91=}yBA?A5EPKIgqc(kMC;40}K zfc6_2mi}p2k>w-!+4r*M?tA)1`29V$E;dVdSZObitfxMu-0srz7`l^xaD>jmbqcWnG=tUkrs-BaG@Z2HGLC%z@s2Q&}V#~*a8A9(G{ z8uzQv`~EaObF!y>f3oSXYwNb=orohkl|FSZ^=nUnQ6mq~R^e!w3@9%$!~PI#;jG)CWo4ngVqufwKsK(#b3^?rCpU>{qUM)#7*PKd!fpXAXnWvE;2hgt@O*f15c==LUajSjt>(`l z59~xA*q7tWwC90QfqUXI!}tVgPd@o+$Y0;&Vv%3S2#n)OzX|Q{<~SC7znS@de9ehk zVTI9I!Ex*rxd-j}F#bYUax~}~5xXwASbJCg8vP#nK>UQ|vuW&u#2%ZRQ;nIa+DsS*$@;)82;C7b(wp9DhH1zve8zEfb%GZ#gz# zXWpqw$EHuuD~JDbaC-*04RACR-JN|S(mrV%$6m+-Uj!FzwEGp#BQ76?m4{{74~qK> zU>uS!VQk5%W%`i$u2&G=WP85>`Tp2&XYdV9TsQLnR_6)h=%UhVBP{7lOBggwIB%ccHe$I?)x_afF?~v6;j7d}8_f znf4MXH-D&n%j8p#ubw*G6Mnj({ofh$Cq!p7zo`&zN6UR{$1V914;ZauzEHnJZ?qS@;CSW(@dE8F@raB5CrDMe3WQLvr$Z@bV9iV_4JeQ3!{l{XRHv!e^_Qe(+Ox!b;$- zOMIzvGH87_)Rz^fmDLHfucYKeSFQe10=y{pxT>^8u{ocPbZmuchZA zoq;{jAsz?5r90Fb!N0Yld<2o})CaU5o9zRJkGSGS@coiskR7M(t52uoJN9G@+>LMb zRF10svqpP=K+b9E>3Hw%jE8f;jsN-rbOBlq^y0VQ_w?VG7k+MhN9&M}a}XGxgXf(E z%;N?3Si!f%rhgN-*&#G%|9#LM{uUg)w?oAW_rx-x_?)y9Dfu|dr`A-LD9q=ap z-$5{s(LcBMhvpry1N47=sH^25WTLC-1CkB=o{N2}pFaI8aQrUT-nu{Z-yMJ4QK`qt zrIf#Sux0NA-rj-^T9%y0=6-f;-m%?6FT| zVF3NnjvPV8-|5H)H$s<3IsC9St8dBYeFgH!b$stsbT<L$e%k4W-Fphn*>XslIUF%WKV-80hq4+g9! z_8&L&;JbJ2?QDG;u}nKFo@sk6DgTGigtQ}seO|hY>pF>{&RP1Jnx;6fyPKN!bY6qa z@s8_3VRzc_jgYP<3|}wRwd0GrY#NvO-MsFoz`X9LV7hsJ_>1=Ca0OY{sp>KnrmD+S z*qwSl4bt@Vbqb{PW$FW&>QWVgn{=5X5SFH|QXozrzE*{xcDQiusLoXAsLmk0d-!RC z^z7@U&fmf5bmui6bY2RAtZP?upn9WSyU+uI#;#oi9K(kT9sc)^MjId5?a3bBC9kJD z5eUENc3#8eGu%@5C*)pd^D9?_;BU?b7#6>D_ycAN=pMeNddqTDI7Qcv3U%qIFg0Uj zDoo8NnF=SE$A>GNVqa$}v@bIiW+tFigEH5t3Ntfas)ecQGA&G3m*T;x*+X|t1)0}V zAZA`qRWSUznL|>**mohq1n2K?!D-HGYk2arZ+APsraOI8?EBUvfSbxOonu_ne*C3O zZED(kcl$8cBlIWQ7LZQweB|_pBj|V0zfFy{HNU29>BQ5H$M4}#VEr?2Z{cw2Fr~jB zMgTo$N1$f;eMX49uFtae+7-Bt2EJQ3ws91*=SV;IIBWXzvA^u+s%Vs5U@LwDaDN7P zlxx4z{r1#1*06@Xh&qDkt458^f}8<+(8uNbyO5(6Hk-BR?S2j(-bG((SUk|aojE=R z%=0|RF*M6G%R#R^++v#^*+9T4WYK?qH9a+CF6ko8DHqGI6d-pXm1V0?8e!XrSF-W z$iII*`FnoP{+?&C*UoWPh}_=3eBa2X!J@%g;m(#f^6i@DywiSF+Rr5M>^ytFA?;V0 zuW0`f;*%R`2Et{c9h!}g5=n^!roU4+AH6V@-wJDjp6vCe*}h? zGW|j@4Y225(eKeuv}Z$l?{($z(jIO_-znZVUWs-U&bP(*ztL;m+KVDR-V>YdNbO-9 zFtO=_FF)dfTd=E?gx|mtq|f}&<_YXenqWW7Vctxx{U9e2uxpZb*JQvF{=``F~=ou%7Oj)LG+7toFi+WlC? z@VB=zXZ^=+*UJwx*0pbQv&{?4-NJt=fnV+FeduRYMvh1J?o+IP#cgH%F5R>PWY@pc zx1rKHl~XRgmtg#nOHG^9|FtJwsZuHY;(gkOSf%fYtN2#M@$Cs{bD|4q#|3?(;(g&I zx0}NLY!Py?7&@`HQaPnk_{9gr|5VHvK*p?)UfMhRn+}j&|58__b{d;6(H`wJDA`Bj zGO>Aynpm<_48O(zxlC1({b4VAQ4azCcU?d`E`Yx>{XMYuub*MsBbY;-e+xLo$hEU(JW5N~Q2?&%b1U zh-#Bo@58^Yh)yZEkbes60C`3^jVr5HJb*oFRkYWzy*_2_e*cf{HG%mh|DTHB=R4ZR zT19&qM{b=`SvzgGkbj$xaS`2d!TNV;#qd+F_HMV>M^|*wI!*Gw^q&3ex=ecu{iy{0 z=_BUQ)~r*Ls4VK48}RskMpG)6750#sPXilb?~?eA%Te z_>nRCp19gxW3k5281ULg-V3ASf4ht5jtk)bWfgV9_s`DgfTYJ4zcTgFKV`a0z^5Yi774o?B1@*v-6lPZr3oOW;2O z_)Epoy5Y^DzoDo4`<-8N$pFbj%*e&+&sxLD))#?CNM{g5x8M7~1@O4}w%#OdJ7BD6 zyqk4(zVB3iufqj!)&>4#EwsNzdCVmT9cJ}0AIg@cxxp?;qtlnYOERqJZ1lz{nDvZo zWCPfNVvA3zM%SA|C+Pe8ERbE7__=6baQW!wyj#sZty5*&(thh&Cz!E;4$t5OxFydB z7t$dsUu#VJa6a%LUu@9R8H! z@N?Y{`2WRGm0aY)Vdo^1k6t!X&4*RmH1qWX@>B-C2>oi3zlwF??ixS9P<@_8WCN|; zWyebw*~y%Cau=>D>nGA*chO$?qq}HX?S=CCg3p7ge;!9=dO`;b@&QQOO4IOb9+VxW z3b-|2t)qS4!^i9O)xuireSC!Ajb@#&fp1nkPfBN>wqp*%Z&^L}o#z#P$*b+aeqgeb>xtTpST8X)7s9fXPri1b+CV3hsOq z0)`3T;zz)wJeGy#3(cilc2n%CU|nTO3U4WQT~bsm)ot)QBm-X~1VfZD3PViTJd5vy|{dx9TpY_ih7%HA&j zHRHROvP;Jw|35E&rh;Q>-uAZ{eQ8CuRryB@^}Jy4EZ?_`z7$)E{H=5Rpz#}$KHd1C zo0zfNy!Z{R&D;L=z$umVOWCy*vmzURFa4c;qVeZ=pNV4_e0imb`yJTwfRpZ-|0BRA z9Wj6#U&0FG-a@fClXuL9fwBGn%5A@Vx#hr(9(3~9e{`JH9sslYXRIR_8P!M|+_ zE?I~C{Y3Nr4YR>Lv9aVhP(RLB%4xrHC&(cxxH&+CG=? zN@JH)d}rvHd`&m^%4xrei^Bg$yjMJ-j5a7%DaT)h_ZF6Zmlyd|Q5A;n^RA?|iN{?N7zN^(^~Ax$XZ_p7t*&4LkjZxF*e6 z(c6y!hC?$xt-^P9DHs3Bbt3sg{$8cqK>ukEelAb@l}EGW`|(HrKr@Mxz!z2X<{+`T zg-TiN@0eufG4Y@rc_V*&*cZF`=sfNJXF2UxoLiEZg2d*<#&6b+r%2}qaYIs0`%UZ! zJ|_dn9Gb_=XoL9Y5qa8wbs6u1^GU|fLw+tAzb1C)#e3ZiPhFMMev?x}^jtozoVM#3 z=C9_1^R)k0WwjrgYMhC04s5yK_+yHX=9>pfwO{gUav*LEkprcIn6+N)U^xqVbPea0 z+kVj?v61*pc(!s4=~{90=AQ9CwFywH{aQB|Ii&Ku1F>*dOO9O!{(n;0?S}^9pM%>T zHFW4---R4cj4|Umw)kY$j{h?BFtK1cV=!oBRkd9_M{#;(_WN}I+SWgB{~Wy#V?z41 ziqJ<#~))22F#V*{#@RGck5NirX6j!J13;vLz? zit2208lH6{)*0A|_MgE~wq94d6pNU?bQ##Xyb?Yyz4sz;_uj0gc)kqJ2#lle1))g? zb(hS8CLT0IE<3v*W2EArdAAe|Ug8=21*^k(AwcoVl#cos4)G}U&4TUGT3qp!((9HH zbEACA*JB^7OTJ~kvnT!XOxmycq9`22VB|OPxViL|!+N?Vmc?5N;kMHI*vFc%Gr?;E z7tn@E=RMiB7J&1kXnR?)E0wmdlILl|KD0&hw`}Ug>`t;_3f~_`huKhmZ1Ty78XxxH zH)!KB4&gXGKDN@|ZeZPXNVL5rM|WHauIlkDx!iVRJ@j#8t*hWAKcVf-v6=hV+^#NI za6FnIA0zyW*ziVYxruQ$ZepBqH`-Iz-Eu$TJYC*joXyKkO~$WjN>h_@Tbj_+#ACdW zI^(^*RM(}>j9l~FNS%wcuRGO#&|u(7!)f52X5+!&W4hevY&;o!@!$kq^WZd{jhmLv zOL5cExzFHTo-6xtOy$VeL!axxKe?q{n`t^J=>t)%%?@pGij2eCEZkW(DK>W1eH#+Jhh9yZ3Wc zGmlC>y$SsNH{GzT!g_TV-np1VaXN)?T-%RbJ1^p-s)uSbbCkgQ>PrU~Mo#h&k7@k;}r zd=I3JLMY?tg=Hm<1iJQpMGxm z9Hc*V*!dOTd!@a`;Y_vi}F5azP}nh*^dkzD*8TlY}v2!)|>nN9~XEIyX+m* zbDhcYQ1^yysxtdT2|H^G7Ta^4D3e>B- zq8aC6c)xT~d7ssH#oJ_yjV|~M{BKwfoA>*`E?c(zl?v6#{RH#SzG?WG8$VU#S^D2O zh6l(;LF<3xV`FsM+2bF-1^gwF^7|+ZyV@0x%xKNXY0SIQj}}`W(*G_oyj6Y~!ii$w zl}9YyZjE_kgC$Rj@`0r97dXF|hFxcP!CQH*`1}Jelipr7DcPyh{j%@r8{u^i8r!d( zd;b%qzOCPvJHL<2GoE{8@}Uv@27BZIBnR#QBM1- zdFJ2rx3^_~Kh=i4`F?v@ZGbmvu2)W=vYt0Fz<~?N?@)A|&RB#N!BeSII=6y#n>@zY zJ~TJV@2uFf{PqZSeuy!j5A3}6=#vw8uZtt^xRAe|WB|=`(n%NizWg?)Q&coSZ&HNj~dPvx}3{cU}B5j0fXZ;map!q4VB z4jy-dS4mcao-VpbUpS9`Jq7)h@A^XGB6kGFPxDRnk1J`H;vjR{Th0xuZvy)eqdFkk zi_kFb8$Kn3Mq(-26^`-KhmUdmU+$54Pjz%tm+DmAe8W~*=$m|7li*$)`*CFS6pYYv z;>mz}XW;)j#|n-m9LI65B;8qWs9$TnwT2^m>@4TrQH9pcjN<^mFUs?tvmUJ_+UO6i zSSapkp2vQY^G)Zw&i^;_?8iZkVr+Khf7cupQNA$dAK96;29sW1b7NNh-RAwazy#-g z{$}6Mal!spa!pgd^-FavMca7uX%o7_xtuU>D=z__wBkJ?<4D(_uuchXJli^ zwX!EU-I7Hf!}7z|Z_$OHHFI*-I#{v}F=>W}xooHM z^%c$1^pnqL*1M{Ao#>~+|DWO5qHj45tv$n?dGnvCe`n-;yAC7k%yhml{}#y;j(g&x z*MRpom=9<~aG>hYK_-9@nP2U7`ztX3| XU8n1byicVX%5Qo`&vv6T*1P{7DF>Xg literal 5430 zcmc(je{54#6vvCoAI3i*G5%$U7!sA3wtMZ$fH6V9C`=eXGJb@R1%(I_{vnZtpD{6n z5Pl{DmxzBDbrB>}`90e12m8T*36WoeDLA&SD_hw{H^wM!cl_RWcVA!I+x87ee975; z@4kD^=bYPn&pmG@(+JZ`rqQEKxW<}RzhW}I!|ulN=fmjVi@x{p$cC`)5$a!)X&U+blKNvN5tg=uLvuLnuqRM;Yc*swiexsoh#XPNu{9F#c`G zQLe{yWA(Y6(;>y|-efAy11k<09(@Oo1B2@0`PtZSkqK&${ zgEY}`W@t{%?9u5rF?}Y7OL{338l*JY#P!%MVQY@oqnItpZ}?s z!r?*kwuR{A@jg2Chlf0^{q*>8n5Ir~YWf*wmsh7B5&EpHfd5@xVaj&gqsdui^spyL zB|kUoblGoO7G(MuKTfa9?pGH0@QP^b#!lM1yHWLh*2iq#`C1TdrnO-d#?Oh@XV2HK zKA{`eo{--^K&MW66Lgsktfvn#cCAc*(}qsfhrvOjMGLE?`dHVipu1J3Kgr%g?cNa8 z)pkmC8DGH~fG+dlrp(5^-QBeEvkOvv#q7MBVLtm2oD^$lJZx--_=K&Ttd=-krx(Bb zcEoKJda@S!%%@`P-##$>*u%T*mh+QjV@)Qa=Mk1?#zLk+M4tIt%}wagT{5J%!tXAE;r{@=bb%nNVxvI+C+$t?!VJ@0d@HIyMJTI{vEw0Ul ze(ha!e&qANbTL1ZneNl45t=#Ot??C0MHjjgY8%*mGisN|S6%g3;Hlx#fMNcL<87MW zZ>6moo1YD?P!fJ#Jb(4)_cc50X5n0KoDYfdPoL^iV`k&o{LPyaoqMqk92wVM#_O0l z09$(A-D+gVIlq4TA&{1T@BsUH`Bm=r#l$Z51J-U&F32+hfUP-iLo=jg7Xmy+WLq6_tWv&`wDlz#`&)Jp~iQf zZP)tu>}pIIJKuw+$&t}GQuqMd%Z>0?t%&BM&Wo^4P^Y z)c6h^f2R>X8*}q|bblAF?@;%?2>$y+cMQbN{X$)^R>vtNq_5AB|0N5U*d^T?X9{xQnJYeU{ zoZL#obI;~Pp95f1`%X3D$Mh*4^?O?IT~7HqlWguezmg?Ybq|7>qQ(@pPHbE9V?f|( z+0xo!#m@Np9PljsyxBY-UA*{U*la#8Wz2sO|48_-5t8%_!n?S$zlGe+NA%?vmxjS- zHE5O3ZarU=X}$7>;Okp(UWXJxI%G_J-@IH;%5#Rt$(WUX?6*Ux!IRd$dLP6+SmPn= z8zjm4jGjN772R{FGkXwcNv8GBcZI#@Y2m{RNF_w8(Z%^A*!bS*!}s6sh*NnURytky humW;*g7R+&|Ledvc-