f-z~Hw05~;Q3w(
z(2l(DU~T3~#*&@r1=!}zH9hsMCmOF?{kpdFwO5m%4+9H31UU&od6S*Rvo@;(`n<+&
z1|1Kw=jalGzIQ0ZGaX%lCn{(0;`Uo!h4D?c7p`&-x*z+sT`nsV28Z3fX5rm7=kP|p
z{~`uow#M{dj2JrS3HPuAJ<*0shA6Db^uw7c3ILF$;MMza~z*W%GZq=l{1W
z;$Qkm^^%oH=3fc!pQ6QUf_s0pmws}uTR-jqPt$p;Wii$gS~_OA8XYkQNq!$)u^T7~
zAe*+_{gU0J7)_?9z6O`TWh^+NQBXK`*TQ&m0lVR^l5v}Oj*aSHFF2smq^E@SB9hMV
zq(SxY{BR{y(Xb-my>wKthX=6#6VZlF_^_{Ra!jtjby{#}f0-kHx_tyLY;fk1=hUg?GF36!M9J+J
z;HMOTH!uc^v@sxo9sY=v=^gz#crD0&-0rrHe3iv8)C>xARCMR<#=mD7Hc@a~dK=Cx
z*cwGkTL8WYtj=9ibUqV4g20B+Tu_wp|+A;O~9XH>u-9gBAPgz^L^_{b{p0a&Ecp
zw5L|z%=ys^O=h%WCkI;4v2YcBe5`gC>fum}ljrN2?o!bd`dC5jx&{O|Iawbgg@(}|
z%dC!>$07J!h3?WOIXcygQ-Ha<&wp#Z2&<&oWshtGp#nQCxCQx##hN}m4!QJGPty*;
zq*YJ?yMg=A%#0UuPEW5sv>MP$@H>FLjn(6;J{5MrS!T*8oH!27PA|$Kso}Kp1M*kL
zs%^qPx{GusouXs2F#OSZ7ji*k7y9Ai$IZUn&kyWpZtp&T2pI||8goDLHid|WO9Y^F
z2=oOruCu%_Ie{1nVdWSfAvSq_xcc&1Hlm}})|%z;`Hd$Ajbj$Ga@}!A%;SDqRif4S
zYz6q|84{Ps>}$W`OsUM{+Qv*X7qQHXHw_+563?~C$`7zLegHxiz2V%bmWnXmz%T2B
z6qAouCrdYT_pj7<@61kkA8tVDNVl{vFP;6_d|Yswy1X@frrkZR3gtNFn(!pVl{}c^
zU`rcZ7GO38?U@tNef#?X8{k3=h}%`RPi
z76pEUndD7C*Ze_Gt(Q)Jo_#t2VJhBDRTWNVJEO7tV(0i2yXnW*tI#h>(Vqi#T5VG2
z8%AK7xzp1rDT)VX2FqkRD@B^4LeIjP2kpXR2kGZ^K(omzadg{Vw6ypy(M6~M=)`%e
zNa~u+P*qiZD{|9}`Ls|xJ*e@>8c+d=?h>q)_vAGyB=s6TCXSj-4KNNMD^TAz)jNnF
zl5m)4UF|XB#6|IEpN=%9YkL&-CzJIUHT+N|8gla{j6bW9PjOo*E`@D+d|mMj@Wae)
z`9oo}>ioDbC?{X{QVw*;FKKY~Fa&bLn^ThssP&@9{^SOlMHS_|8p;k$%$ItvC;fdjl7*$
zg@bN1mcxHyh6L9L_w_Ftj4NLODQ^Dk?Bd&LgXOArnzDxC{{^#xG{eTVq}7}vrD3Y>
zqT~B60l#S|K$`p;FG3ykcmdr>RC<|FhH@;lr2u6OA7zG5mK_*(QMM-~O52;rICR?Q
z`Rt* psqe~k`OfPppz@Tab^PeWPOk-U4Cx^4JGLsr=jVO8Cr<84R4mjVccF$G2&
z;%}kJoP%3_tW4He>$E-vsn%+xn*F`8;CefCwN+sW=DDB7(Z*NB~*<&Oz_Mi_Z_ua9;R?KpJAV7nQhC%r~Fb`zEDO1
z4*KenK~etlm$V)bOAMAZUwVH9Wsp;MtPrKy!&;XKiNhvs{s$AKzwbN)`*A;Ij?fH8
z`JH?w8H(26TINgo+9-glZRV=M>XNkCDX^+dxYkn*t0`#tB4Rv@qw2>4rKL}bljU82
zBz)slvw#v2jDs2=bO`42ZsHY)ubt{o;QYD2JxM{mfd5-FU4Zj{+OXonZpX}U;S^c?
znoJb}wKh}h&Y8~Q_({3bUp3bk9ssqI#|-#HKD@K7~+SF++@}ZD!E13r{XO(
z#f(OjLfR^ZN<2J0kX!AZ7m^TjG)fzS{3jWWL0^vULiHc#{hUHpLF&F!06%4)4Fi%m
zZJRi%3MO$ZOMsXrDx*FIbJ$1;#Vt@Z*
z-c!vk;gq9{z5Ya=`8_JZR)6=l@G<+VO&fz&cyaO#>!Lk%es#dTin=__hB+w;>uo#VTNyB({a1}mra?`d~_@H%yVlCSw$=nbOPTSDhSCjM2i
zcWZ0;q_aQ#Cl@yc+Wx_v^cHS|C4q4|7`7UPJbQtLN{fZ21DQ@TI0DXs{zQNuSmLF3
zY0KPf>|P31|5#4hxval_LlE)>W`^(kV!Ih8HTK^2OS|^~m6s3ybgG;J%**2Wy^oTp
z9Of>#Sx$s;cRJ&+G%&$Mt
z>A(?RRxoJzrK`~8ELd*o*OOHJZSY`(0Kz4=pYP|TJ)nE~U9dICPx{drR
zYyRIc>HmM8`;uOtnh<~R#(u_jvNu31)g$>AS3bEs{-mZuhQx~vbWGl6
zBn00KI>aJ6!Zjm1;k+7rbM48RIu?m*C-BAYUorXpxeoK-xm#8}$a5{u2+qI~W0xHH
z0mbU>%^GhfFY?F-j=cvVDfYtpnufWhz&ZJ+!pVlJ!XJ`d@|H_E*(!lY$qf`Bf_%#J
z^^9t?{_a9`r9lQ}$@j+Zq%y_}SdrLp$n9lDu7l+WGH0N|k9m;cpv(+DNI6}n?;Y|^
z?;(6nMR0@$zx{%IDiGVQ|JxmWddk$XzP8u@DXzI3tpdt5WaSTe2HX0?M
z)>ONa^#XGsj=CQ3xm(KvR&`W9haUEL6s9|ejIo(Pup#K%3bMg@YsQCy${7`h6t(WMG9!
zoZnVjv&A2?p2=hbPXg_^uy}|o0i6Myh!fng(>xgVX!N~-g02TL?UnD&O|~3b!-WRO
zexvB6!=KwAS2!EVjG?$dK9KF)*2o88{Bo++$&ZcDZ|p1J$VQWbz?RnPjJ`OPjG=iS
z1SX*&m+dz@9oz_*_-DH-W5#x;6Erd3n{-o@7qrQ#le2b{fA04NgeX3@z46LW`Xq_2X@2R`(8kwuiA??
z5#Y!2D;ZSP0OTMZL+g1J!<QG1-JIcc*4pZ?y06FMwk$xd2@-hfG*ymv48t(J~hGA>T!b$O$_
z^_FOGVtp*jC}3?hRE^VhKc(Z&`Mi~PBB|q(g?=_|J^(wOgN#SE5}jk0+tDemhdOkV
zKW|^3BZ9D=W%oj?>Q)3nLmHaSGQKj``XQ0^wl|BAWok$t8{dB_XFCNZ6HVk=>&rf!
z$~AFukzPR^8cT8m$4{*KXK_u9RH9kyqVfqbodP6U>9WWe9X_|^9Yrx&E@>s_G(V#N
zQJWa}5pJ+$d!&WrjUd?1h*1C}Dcy`_iXD~uM9yN4nnWPe;(k$B!cto
z;Tn{zs!x*hJWm1oUnNk0uzV^MeG7kzQ4hPkKcU&5w}Q$9&xZse$uLFF<9#`5aUhq>
zQxii0mRt2GK+9bUfbRxZcnP$eC2k5X5BXa4BB|m+{y|(b3cx%`4d}b`x$xN{IAIYq
zUYj`kI@BNGv#KVw)c;SiQrUt3s>|P^Yc=TC?S16hbt1{Z&%^&w)SriV<^QG1frn5H
z24t5zMKq1wfxJYXtAg_q(w0p}N-GJUVh77;ZF65u32?Gm$3H}@+SfctbuoHd=U6vr
zn&+yYp-u&%_tQAd9<;oMh0K@I)k9t1RIZPmX3sd7Oa|Pz5XUa>d9E!10_ya^t>FaoQ$KEA2lyOycQ+|AX*hA_h!xR
z{VE?pD-^=@-f#F?u<}?BS2c(<40&FzukpkrR3ILyMQ*sBxYsRo%gUu0{T9!ugK`E^
zfYz*wQyGcb3Etqv8JZ94V#VR6NPia4#4Iz$E)4|}OX!G9o
zJ4G*3q8y(l7Q`Nvzyk2#5LTXlGu6Ld|MuUe4FB7d8(J!g4@eO8^^p*ykr`Bp0#IN0
zU$)!wAGQns+jisr({`P#HVM(_&xcxXa~hB54il6>7hNV2I*RD?I#Bqmr`r0*%vYP4cGZB#~sjWF!T
zT95s-$Q5)cWtDj3G72kqveV_XlCL$>4T5w)L9S%>k;)at)T$@7Q6EVwJ^Ya`;yG;Y
z=1W%GNnE)1xu`Qkzt{{)1@}L<@z6uX{$t!M$pVCHAX%OCDv(La)SSz%W!#UH2t^I;
zYJJFQeoU2o7Spojf;^mWA$$SP2L_^!Gn`Hco@7bHMm-rC7#f!Tes7U0dd~eW)&`fD
zUSz+)qkJ_+_|Mh41FkxISPo_is#C7z=u3ULm!r6rD8PkAw<5xIR*}8b>c_r2(plcz
z^Zr;~p%HZ2-*Q>~yIgkucfXGobE#~2kG2oz%ii}0Rnmn~A31YNJ9M|7%9pjUQW^3=
z>O|{5PK+VPQyX6sPvjI8QCDix
z8mtz*87~}^xXrEIK`8dRJo;qwpj@q<>O-dCIp6%YIaY{tH%%U!)l@O&G&p9iG+HZb4
zUW;qAJMZw?YK7qS=>i_|@dZ$pl-fJVy?w6}xR3#+$XHis(78ZI+NbSX>lH&jmf}xz
z92>e?btXS!rFxqc2%XkAzv@)4+|pu^)-L|$VD1Hasdx_ZsEbi%vC`?SUqxo-ac`^j
z^9G^U;QwYDEq~dD9SGN`VMPHn_F9g2sHWl%e`>j-3a=DDLYn-2DGm=M?G90Z?H)MZ
zVg3Si#8_j*@L1(H?qEilP-d~9~y4JXmrLa=aXhr5h
zP@9qJ3gEM^C;+Co;1yGT;I7VNrrIyQ`8_iIh0dsVE%Skd|K%_Qdo3yQ(tB#0;-dhu
zr7hpqk1oKS@9t`S%xQKXBFhK%n770Z4GG8>q^Rq^nSLQgXrjrx25oo)x;`E=?6qz1W6t_DS!$oLrf%1AWIXiX6^-hkoGeU&xTdfR+vYvoB8$ClEe1t-nU
z0}4=)6*o7_;;MB8-`AkI!F{%}*To@+%OB*Y(b1(I!#o&_{yogP3r-hon?8g$Z1yYd
z&2Glv88?;v$;?BGzbzLYtVtI}5RQbvHv%};tcIvKtv_l3pPsPi&LFcQC(11KxhqkA
zSDig4A}E`^1pY*hzASpq1*ZF4A*59K*J)}a&M5_YP|Vb&jzY_^%$quADi
zZxun`M>K?d=s>ftjvPIY7jh6|O?=;H1xe?ztd9g_$3l9T#|cq#80)r#lY#Ev$|2_z
z27GP^7E8NGd-8uq@kNxBT;mnYjwSSC`@gIAvzqvz2znA8dsl9!*nFOrdAFq>0138u_jKtQ}v29*y;x&cA~J=kuOq?ea>2S|LlXNAc^K1A
zKYpd{%afL`FT835924|;J7>&>F9@tJCj0DVvk!YR5Ky}K#5nGv`Sq2u%@3?UApPgz
ze&{bX<-|nQ(r!{O4ie{wpkM#$CJ1V93wcd=A|`PyKp%=RUnRr~x^04~Yr0^g9QM|$
zA+qD3U%}j@oywWZ6rjM{7pxPx!fpfX6aS+=`0SgoSz~g2o-?z8{P#O*$)OUXJL#Jc
zyvvqY=65pRn@S^pSDy~=CsdP?<`Ia-2WP4ChdaB?sMZrE@oen0fzKMX&c;HO&FY{{
z0W8nXsFFFwXhMx8v?5nS)UBmUFH^hPF4shz(&u-J(&Yyj^MgD$)^Q^+FfK6NEFSK;
zrtR1u>~jvg_!9JNf!b&WagZt}L}3$nzS}UbW$gF0gQc&EUF)L&)4JPR!EAdpIHX#&BXCPM_*Eo6^mY~`MSxmC`XrUT&@|+V5qr1=%}qnr!4e=
zdMu=TSZa31Q-F=ixt@Tz(0jG~rBR2BE8h~e!e8uf-{24XbPNgHT7vFb`?@J^E>0?h
zl`K_jNF197MvQIpv|qGH*hlJz+*)PBhf*S`>SKd$2S6w+J|Qk2X2sLAIy%YU4Q|Jzw!PB@R)$Y9Evi+DDD
z*S_Kt;$ZAmmvHKz6g^g6MOsa_0~ZRAw02DX@eRK6r+C%osQ6!IN_q&}3n8_jx$H8j
zP9#Sq^z`M}0OjBqkW8NRHSnw^XK2ttnGOcs{xHAmdfa@G1?rV$NO|{9cztu}T1aRx
zY+qx@M5s$TajVm(;zOEN9y-B_qx0%PDac|5ns9Xts)v}a{^6A
z>GQuqf`Qo}$w(oP=N952aqMiNWZz~MSpgK)HCHtJ3Y9awG)q$5F?T`du&b7A(LrbB
ztHBx;TCbWnQL=<`+*qs4P??|1#WD5JM_kw3V{XQUt4iL$27KC|JHCfYkZS*+Vk#D8
z6wCFg8)-YcJqWr+qpb)sGFsBgp1`%d-UqX|8iwReHOguc_YHZDOVklNQmY^JG4@Hh
z1dpCOV`Ij)$L}o73J@6%kk1?Hi{+gyT)PY(VHwuvC$IFtN#|<2Teq@two^EDmbo}G
z*Qh%NADT*TVRF5`t#W*){^*cFMcO+^NOgIrCf}k}r|tK*ZtI#&M^JS2&JLAvC9%!k
z$DK)7c)Zjt!q4%{yMc!uc?rD5M#}6UWw1e
zJbI;=sKk3uJDl+=Cvok7$#geB3wrFG&%5*RQW2_&GG3V2hh$xvc*YbKye6W+eb$
z@#`f_&h_PHucoZ2ITBs3<0OI}%LjQ&Cg!oc`OXH>*@PO63Iscs?rG||g|o;{{@P;q
zV=_Du4-EGIbFYHro#7F%LoFc*ErMQ3$&sW(PyhJ%(+7Fz|AG7-6-?Nt0K)xusKuzS
zR3B(BV?6M}O`3e3CPd7`{XAH>kG3|n9up)wNlXpf2X`hg
z-H#eJazPb*U_0mOlz!_aNh%i+CR6AgBUF3im@1k02+fnsOSU2h?o+
z4OmmG(S06)3=!
zvQ+9_$YYb@Wg)0OH4mqO^|OOWmZHwRB3vu{525Dde&mj+19cP1d-yw4n$#M6e3xwa
z8??VGx68G()bhi=WhuasnvaJ?=MCy|?RHjj?V>lSc;fQrd2$ny0^CG>a$81Cc#?JM
z#ZE%Ncv4S1nOWn(pmt94JDlFaV1|*|4bUSPRe@x`Yzlz>N`6{jzo^AY
z^)9sm@cJLPf}I^Kfx2gA6lrWcXa7Q%(^5AJbWDX$orq`(u%0*DCG{O*b4URu;A9OL
zm;%^|k`3*FVD!-9>=yor>=cjBeZ^}@S!PxZ+Cq$WTx&6?(1aqmYPc{af
zj`U>kuUd#Z?gVYn9_rUEuRegb&4TO+J!X>3+IhGBL`-VJC*hW4Xc0#0nW!CazFK{A
zhxG>^&$O)RE|hFxLv2W0-9lD?s*AAq@6M@=_=~sA?8}#GLiGeI-O8;JOHn*1@W
z$!&oMyQX0-U9K+tTHDe*g4GN2{N8$5f8D4KmztUfqCx6+i?bW33Z|tH)nj9)FB?kJ
z4d1}z5`?e~NKWhig0;@D+$S$yQjyMt23G9k(|56ET|eZx4R|Gt7G;YS+dy1FSZX(h
zeUbVe?-*V7wq7xK=&jqJho%|6h=1r&YLrOm{oMl|t{D=03%QSwlD~jae{--&0Zy4C
zNP$dq(KZ9P6a3Krv>L&$sy30DkI*>4^BryY_Z9_LGt6Kq)UTIS-;tOU
z!RCKM7EQtNqpo}O4&4_FB=xif)?48&r3Q3^itU=W(`CUT(53xd6%`+J>@Eora9+#k
zu2aOqU<%bZOOEF2v?{Yd>=z6rR)$l}Ydq!dv{UKovsv$3b=qW{WGA&=Y;(wTnB44nEm|aC`DsY4gwI{$@_BIO(kBXVNmB_z+NQ`gAN6d5%u7JUpsTaP+xHQ
zUfLy^F0m@ucOt*$w%ihqWM8Hx
zJc;h53kfaXq`Uj!m-&Mn@SxFO9h%C5qePZ395+8RWjg>@foyt|vI)-BkD(7Pz3x2ZoF#Ej!z2Gb+SdgCG#kf@t1`XtFzhc<%!
zb1CSYOK)Bv;@+_Jxv_w|lOHI+*F|{#Q$%CnI(5(5EUkvIA7(Zxm3~ejh6A$=N?W
zp?XoXb1I7N#I2!BZmuJo%uBGHZ<2KAQMAl4wKtD5_(
zSjEiE(kq&t=N;$nc^!csLV-J~iZsM@7eCLSQ~gdFR%dGruRLFabC_E#v%hQ>A{4js
zT^aJreCOW7?L2gY=FzFGXSg;X+mi*LjrW3DyUq%fkd)?Ez}2NxLdZ@_JuP-(PVIId
zr<8D}1;2+%=*!g0UwI`io${P8#?%woTbGRn3qZK!wbQqBA=k?VSqf*rA?!mO2+A8Z
zb3#~29cx6k2a|I#AH$BV$D9;qrn>4T3HSUh
z1j6}gR-^{^pb1tpT!a9Zc~AO3qM4!>w)Vx`cTJ>DFp<2sS;WP}nA9!;#1_n9y9sE%
zFWF{3ZQJ@CJl9$%q4T7WycUwx)PS9b@)26B@nto##Te#-jK!EgkuPHueqJJ<1rwJw
zGJdu+);8Csh1BI`IJx%=m)5<@TG$tDetYtfOlKG>EGUfceaFogFyXR$ils9`I0;^t
z7#nkEKKnUf7ahJBvoDD`AoDj2Sstznl8?UF~Cns9@&+2`;
zt1=?_`7fpJUXgbG9LvS&AkGT}Guco#XukJS^v4-$>_|WF$e;c*C;1}TaIYPJwH$l6
z4uod5s;Rv}+veAMos4|9AoXoiTV!67Sa1pH3C$ud^|GbQp)U@5uD;%s{v1`E^5-1z
zYdK5)9$Au5fbE2HRGFA62oLsqEsS^Yh;=hQb7d^zRoNFCqiXk#%(m9dIwA|x$GpQv
z5Z&OS69ZQRVyq*6FFfZ92k7=yv)O|OeBISsiT5r(jdSAq_!4+M|N5a7wXmLS0xk3G
z%(^~6V$EsJ$MCgBXeG5Z_9(#pc#6Q;+p&a04CCf`Ec@BDb8v_0>rn+#PsQC2-Wv$a
z+;-AxrKP&1j~SGcbd9>f%Q)8+uaD)69`gsqg*oQ
zHnsI&MSzh^uTNImx8oX(ZtrLJV|Mi!YrR=jR}Yee|NMYYKcS^&C*MC)fDQz~JnI@Y
z-|__!xIhH-sIL{|pwy#>c=V1MoQJ5pbWlkF(wFQMt^lgL~OF!&8^dLCq1WpPI2F^k?g&Z0WK
zI^`NaTy?lv3?y-Nj1
z_<45<@F4w&DXSTNY+2(-paAbTrJK|JVMP>xDWs!ik1dkAwo)_5i{Srqv&EqPU+Pff
z@>Ozw;dGW1&g#4UC0tFc2g)zgdcG#PYu@sH68RDS%~kfCEH`6pK->B3N%+H6S$Jic
z`Qebn(&=9-;0d7}{zK~akma`LfmW?nHXr^tnSJB!$NvgjAs7C+NH{cat{d5xiklq2
zU30!J>Ce6}Iwi5aJFhNlgV@K{ec94}%oT^gP_sa;Cr<;OJ~9*&&M>VMtjuZ5-4j|t
zjyGuALfL2BybHItg|D`CRvMx~mi;F?Qh$om2)54B&4SJxlAFC>dg24%)G)tdF@i2O
z)%a>as*o>P$9yq4gnJKCD?gTApbG@z58qinx3r|s)!sP5
zonRmawr9lNv~rOxNd2Ohpn5N>>j820_I-1cN@K)+&pAd45JC$sy`K}i-`|y4YlS31
z8*6KaHb@Hj{AbXVp6YOE;6t?Pi*=W*WRC2!DGjiXIXW>yx!xu%8e2xtvK)YgS
z!-~T;`|h8`Ny5A1l#~aEPSlZTaP)~EHI>$r3FZpg{x1{04}FW-?|EUKE}!W(-JCiy
z*w4$?bdg$rzpJgwd6#wtF^(YLP(z=<3dxc7gZ6UA@)Y0~qYc#s-cs`qw+X35{OtBQ
za=jp#oghzb>#k!<>1=U99&!1ih$L#p?haMGNK`(c5~N91M%26dPYOnNlTf)m@bG4*
zXare`k6P@=_KFIH9BaY5R3pjFj^szp)+nk8JM|xlU4^56xBRxsr0)Nrr*2YwKb=mk
zXAlKbs5kWs4p{X=D`!d3z7XO8{Di4F3YFF3(sIPMg52Mr07NeT#o29+BeK4%0zn#Y
zx#l8aTa?&^VjV`8Ma>eo*ks-PHs>O+nI0fJp-Pyw?-6EDeLgD+WMJ}
zlyv*7yoW_0HnE!QkB2wrhBq84DiR*myrA>S*#mr0ADYz(<5i^(D>bzsgtT$x?F*3e
zMrz2MJ;9>`)Dr>?zjX)KYe^2B&8U%eMOEvG^|8P%Ie|ynF38SivuU
z*wefPWSbhIvd?SSE5d128+2tbR?;~)D9_-NUYeeY#T`T81Kf^`%23
zd1BTyK9O}H%99(`1K*tS*&dJ;CAct$*|9sOy>-Vs0>Y
z6=pVvI2-6DQ|vO-38AA92~H5
z9C84DU9OWQC$kW_b4r^UlC6e^+frJE@3M4WNqx9>`UfgeOJEl66u5q~PK?F_YpE66
z>2h+hxf_M-eb{56wQ}HnWS^1nEM&Lf_!Ct083NG
zf+bJTh>?3A_=QyF_tVR+?6~TunQFew&&%ifBsM-Lc)LJ7cD0sVray0wI@VabvOZ766XSK?>XM}eyPqGC{-FD^u8i)pGQ_s8OqIBC)vv~AY?_upy-8Q>-xr#%S%u11m97+E10^GO+jhPz<$6!sI5kUtpj;aJ-bS*3fU5
zgn-BuIf^%DAms@)X5=xvUh(HAsZ@}vOD&0%Pk^N@buaXbCN~AP>q$y|TI$+WkAW1J
zufC>|p{B?KP&7B2p5T_DEFa#Tx?~BM>H3lRzmj`!
z*4HKpp)>(a=v;reJ6V7rI%#B=4E+T=9v^|1yglg8i5Dk2)s?L^bDiWjLQ1I}%wwgO
z$K))BhPz{VF{!!MooOX{RH`B
zhH$XX3W}E?kDr7PqKfo$rdNknC&pv)f7S+yFr!^m975(IJAzbDPTA~zp!m;M2vu0R
zcn5*I^DXBVkRzkuR~b)&TiT$k)(^tR4%Oar7&U)>-~oF5tCT(A0n82`aPqQ{`hpYm
zagWSE?Wof{t0zSsEt%n9^BbVt5lgvv4M<*~&dp3KJpIJP_^q2;m(u(-xo#|!?-8@Y
z(ZAr_EzTc(+5*o1A!r#^y7R(v9FIJl1oNY(1iO9KOucS^^htLKt@Ehpr{YRHX@_QS
zNku}y|g%9!mFq8rq
z5fY~JlJZi=rxT6kyTnG&cDNK>!ApeH`BK#xu2|!hancgg1&eAs)
zGERoW`%PN50``3~2YqJIuYB1GahfMWX?SAnF+(gs09lebdrrnR8+M|_H$O^Z5_bsFkN#5=zUS2T!>IK1lVyL~)u`x`1r1|oFmjJSWvuSbR
zwhmp%SqPuQoc!EbePB+YGl}};KD-Pis|NwfhhJ^1wME*eexFmxvHQId3^0l|ZT|#+
z+m2N_6B(Fx(4$|)n3~W$C{Lt`0@=;JK;?(=lVou%tpvk?k^uYq&1B--QA+LJ^q~H?
zaB8KLj}UJ1F#=N0UPgoZRG6l6DcR+nuvt;S;{o8B
ziB>c0q%=%OfVQ=0-bB_xNyg$#oufv(`v;DF@6$wveNGw(|{AkKpp4J_!z3=l75gu?I1h&=)*PoVMS0P$Dw;IBtmLuYJaIY^CZr%$*Zat
zdQ0%x49FN>S-oX>CQh7JvxaplU^1&CT&o&|1iQ5emLcYyNm7OV2|5;hW&T-r{|H8(
z>~;=Z-G<&Uk-Ck)liBtdL&;7BWbG@Y}DK@Q6euJJ*%B$~7VbU{Xa~js#J5kZ^~w
zEbJGVHst}{hmd`HACb9U-BgSPb%vh*9(Vm?eo%1DYrT8l6ON00
zsFBY)fVz9qXFc|4xV?o7dK=f<5<%wg*F;2@zR9bpmGBB%-mcR$GwcI?bUp|j#4c0Y
zAIsNFfMrNrG4qe2$sR6Kg47&igtCS;kwt)hPq?#0mD^V;e68NEl0;(es)pQx>LF#Rw6
z_FVsh1cp-oWy;@{jB9ohRVPUA=pA65OZQCP>M3W*}GO|Pz
z*=3uMJx$iJPelpY_jN=l+k_Be6tcx6TZB>8EKSz2@7cGpj4{UaeEsg{ci;E#cfarP
zJje0=_jVkPj?dR;@ZGM@bzbLrogYZEbAey_weu&z!xg(HZh|M0BVlv0s2_DHrA~6a
z%e5`Ll;$*-NB)-7B0N9priUv@5%>Hy
znpsG;->S(u3G*5pX2!oktoacTG~&tNz(BKXO0Si*Zh|UjimzvAw(sQzGg8fLH6gx~
zxBP0lat_Ne^uA+YyB7BTP_Vv+WAq!>{uD(0vrN>
zge7cToG5H7RC^x;1-=-d&uV~B3RFcXhx8%0F7`lIhJS;0M9AkG0uJB*2F)qHL*mPi
zAlYatvQBGZpZhazs=NhAzVlq(Cjy*++AE-l4K4_|=r`M>;QDmONpJ1Z;HlTyjD(sS
zMoDeDi+~8-mZVM%CnENG04Pf$CmpM+dFZtuba^5_$n#{2pj|M)f1iSUgX};6vZet=
zGWhEd-sWXU{hm+hLXJqSq8tyimGp9)hylVql^0w_I0VJ`1lHPb+oNo4t~=0N$SYlD
zHMt-x7Io3F^h3?i$bovJ!o8k4_8hZ_ksixS?$lA{?%yEPIRxafDb{)L!!>ub!i+q2
zF(Lhh?PPptS>CrxUZy3O>nP)b(D-jkW_96SKg)JXD2crx))5UIy^k5@2z+|
zUS_!&KY(UdftZmLTI>>RKMx8ZCdOugD#WL>MP+iP@_Yu^;BFhTvuc1CzO}E%?t-d&>}WbpAJ15I3oPDV7z7
zrzzl?t1l&X$7sQaAgcE^p|tM!e!;EzR;`qZXL%PLgiD)V??NJY_&A{vO3p07rB71K
zqH+>#aSMDQCi7R_u0s_PIVJ>?4bn_ahNie(tir=d1<(jJCt<_8Z}KN8aY6K|w+_u9*Dst_TBRe()
z8H|2ErQsi;E0nalc4GFI3%I;WQxj=qK9E~vame}T)v~w%AMtX?{Pa5q
zqxKWt$2^Ster+re&`KOXe@Igr9p*tg?Df0N#G~6xKG4xNnEIN?X414Sj
z=9r)3todLrpM2}kTNqZ6sKJwu&t7)gUYHSztrWjVD%!9bK%edK(PB)hVu%{oAVLZS
z_DaCfXqH{n^O4Plfj8>T=S>HH$R3U{A~Sf_CgVdv%3MT$(iQia(N4q}QVLkS$v~Dg
zgRBo|sy_6@8BJce*bZ6(+WCKj!V{IpF|ibwbJfK4PfI>Opo4M_uLEep8fxf2;s*Mk
z7drSYvB>W2_CO>mq82BePVpDO63gjou~z-iNGe{gOZK
z1n9?|hwb{Wo;5E8WJoDam%EF16+Kb61MuA`RofF*O|H&d-R`2#;-#%pY=Jc+H%pin
zLsHCf;soAX#?hwf-gU0r&kjjXnH(F-%XVnD+b_0+#KV)RfNr=4ZDnV)w*-3xI!q3NM|17n;G?w*Y4)e&lOy-*QX7iY7Cq>%zaL7)$~ha=1FoS7TS2uv!(rncN1+sA7Q*B7YAB;pqeKKurao>zuyRBfh4RakOao{~0S
zzimo*j)(FUHf}U|Zrp@O!bc{{>A!usNZ)imM0n7dKf}7873T8rc7_>jd~~tvdh_mA
zT0E3BtCA@94Kt#p_N8yN0>j?u71N$@iQRyC5cf3pl`Mopzu5_rVdXcZg+_+)XFx)CFWU_P1l@%XuyDxYPD*r!1dfCg>ad`zap
zCb>eo*2lg}?fJR@YNp*tx{${$R}=KP6Kb@Kwm$8$?GkeibQWt7P4&=&%T95&Ent^2
zg)y}UW^<>)wtV=NLUR}T@6rS77{MoD8Woj3W|8vtV*T!6EOF2+JWU`WM})!V^YPfM
za01)@^!oUUeKVDBpw6fSR=9%iotV(|PrxxMio`$Fx+nhuD*_X4XMNqjHa;p;3DV0q
zvvExQY2h%~XKiz5ls}SHY<(j1w0C>KW`
zCVC%=>yT2MWh~9&e&m6Z?7hCHMB02&U8}P@w+z}qSW~pnt5~p-fje%!qPS3grTOY(
z+HGIcn&@qKeQi~w;$y+gxp;=wffqUg!nE16(Irf0VV`@_<&yPHz?;JChzY@N-5Qc(?LMBKItOmygz^Ntd8!a
zUoX6u=Zs
z{9*bo3p7&Zni4u|a88^4T`hr}6XLy;bqVja0d~Lz7F*@jo$3>s_gu^=l-WXsD%l54
zb!M!@Fg!>ry|-1>ai`z8vG|O_Yyv8v9ltvcYgP!KaAN;tb-OLD?U%t~kv#2^bwaan
zpI+gXSv({~h(jT6gn6=ij}nk+-;8;|85Mik=`pRv
z-&!{ezvwxg@^^9Jp0<6VCqbbLWDg5ru(I;^wGnwes?~3y)>s47OKQQ{xPDVcsSoRc
zQkd`#2Vq4GA4@EL-rqH%PNv8Yeb-W-XJ9^vvc>W&HlW;#c2~K02^IxmmY!tLtd?@F
zA86k%Au|Cg2X
zG}z~2Ef%pw0aBb29FuSn=U`d>VhX}(pfsnlYV2HB(tDVykpnp*D+iPT`%+!|3}}3j
zq=&rD^DeVW{54+{kq$6$muvzFD^#5$}i{+Coy_I2$0EOOQW#iR3^1(;ZpTn!p7gy
z^SJ*=;I}5H#M7pMfEL{fF#P{-`knFrjef_ZHeDB}nTsx=jsuS+$Xhlg_U_AP?^0PG
zyl&3B`1oC@9EG+mzV1dAdc<^+EaSAsNQzReJs&WU=@Fpr$(^sPVoFbjj}A;fTA7Sd
zeo}MrNvmb@40JA-06BbC3f-|aJ>^}Bof%L2L`uTk(v-9EZ=#+6t~t?h?&Nn20$d`D
z74RQuxDilx1rSE8SaLx0L%K(y(=;`sdkvG9H%i+9wX5iWQzQ0KoV#u9fb@+F=IiWt
z!^h&egWW5rC+dj}a4vezt(u(+=2r}#8)&d~c+s&M!&9#hkLY`P%*bC-=dW2TIsr7^
zCWS~pgPg0xi7NWGA|Y4gLTXAmD=7v=Rh2Ur^^DxKM)LiSp{I{;LTR3wv+eFYn7tzr
zd{)J!*f7KC3nLjpbZOY8u=_f~x}ANR!9;UoRKHA6kIndjB!YEdxA=5#V-ku)dk+9a
z-koXc>EXd2T%RTvi%Zp!4sD6J$UP65BnN3D)WORALvDOWB{4t#1GXZFqhw@ltk=A=
z0$IVDe0UQRqd3TM8*|5CwcGQ;h@*`fa6-#jen+ApIj1QM$5R
zxc!mx3NNXE{}|Gpju;6tM;6rny1G_HyST*-rg+iGnBNIWaAcGJb`uShW`4wD|m6P%5xt;f`FhUIqO8eG6Obs%v4ON
zGB-lnU?lO&X*YmWF{BB^W2s%~?w0zlM&1V-|0YwxfMj-k8-t;%5aw0xSmm)qE4i6b
zEviDXO^CgU#d!eCOl5v%@HD~N{ya)mn?|K7uQ_(YYO5>L)%JXupRdhu&E3a!S9n(3
zo7=&pU>$j^!WC*j$2CmuQv<0HYAjfh3~_YNXTg^ihBQOvx)+Bw7lo`(^YA%;{9Ll7cPuT
zb+iniZkUY5x3SX9A&;xjIojNi9r;l|??B~r&Ae!SyZYW)#_aFHl6B?a+x7(qj;*~D
z-#Sj|2^*ezd`64)@%4i2do+6X&UDGSvV#c%vYXlQ@;~p1JPoDOze)Fi)Yoj9b#AjX
zztr(K!_~Kv&OhX;H4N6xo{|O!g2E5(QEnz4SVw)W^=>0Gzcj}rBjY_J3t;aG>3K?U
zym#qw>FXu_Gt534M*VhDHWOXF9c^DEa6A(OMD|turYn`jQacDX;|HC|&XjU>nWZYt
z-XBBa)D+0473M#?4l7O@IvNSZc^?E5Ki=ScA|{`B)9oRD5A4)N(h$5~q54IIGPfM@
zeObPFvY;-`JOviw?a5Mamrq%28KXC&S)mPuEiJ&|ZW
zC)D}eLrW((4ZyGkf0bpl-
z$mWTK%@vZVP&1C9a|+4jsKS%=OKhUA^Kd!VWs>vrY&COlB^3lPLlnEsH~A#YamXG)
z7rEL`L*_?FQb!uN0XDV*!ZP~S&-vn-nEQ{PB;k-WCY4-xp9$Qw@564e>;kNRZ5AMK
z)VV*lOP1yr0G>0RT7&iZv&hD7SYscq=&^&?+v#_{{-G|3{Q=s_&{6Jy*=U05V5kC`
z&TpYvg`q!Xucz1TCi%2(t&dEWQ^dA_gBNoc=8
zrQHGBI8^(CWA3^N_pMt7&3&I!|X=C7BGLG5uMQajM?eD(pL7IjTEx-t5(<
zh@~)1&mpiOT}S}sE}>)+74$H$6mdnB-``C=>(Vo~;zJk!0<%vW#S*jvbdS_@2UErk
zVq0~pGwt)$Kjk0u9$*4DvWg*C)3ueG7qG_~7$+&}Y2NxKS#3=cDuXYXbiA}oP@`qG
zjf*tAvj7%+j$o2j#6D9T-jP#^W+f$j
z+Rig~6I#O=v%NsZ6*T*4Q}y?Q6la;)%_a7W^CvVs+R?2nUwQ5O-4VH2ynU@D*~=C{
z=gZcJr3cJ;5e_X0c|;0ht-@CdKbVnUx6>e>kjM00JBF-Sw0N?Q%W&qRIx>So9xVGL
zEsaDBWR5*j%<#9ka+gr~Y6{iG`5{00z>@f!#Fr%=W{v#j)1D>B#6Rk-Zc8=Caj0n(;0)G<+aitrD`p)5L
zyh2`*2MS(Lo18MXuHJ=TDmyfL=tfNJAoeU@dehx%6pTPuyWw{REoO(CKqrF&QAwD?Q7DP_-IdD@@&y>B@XKKfUCb$Bp;cH>>TD2m@G5-&ql%g4mp
z_wxd9lEob9;Dh7q~v@D%jG1D104MA^!HuU132Ixq~l%kA#$xs4n+97TX
zLRs`q`3}DbNr;e~5|D7JqMbQ$dY|R!r7Fb5B#?ZN@t{ropgDt+L2riAWJi9Ce!qHfvE~V3TOt1Ig^TX52Ih+Tk3MHRO~Xt!)lM%;(-kQ9#v?>{V!z?
zTHfs*tZx-yTL7wzsw
zhSejx)`51?=tHm$@Sz3NW6{6p(-CU;zX(RYcx>!F2Sh6TsT`E^e#PF>uS)uR;e9*|
zM^I0nW(U`ViE23CPdS$}F}cK|?=4M}`?7u3{rdtmE_q6`
zAx8XFp6U%i8rqa4CMhD5uC3Y!Z)*tP
z>$P!E(h{N_kIJgt#kNA3t6wOwc(c{I)Kx+qLQm&nCJ-&2q?rco63LOGJT{(!SZ@{G
z)OA7O+;?AoNU3Y|uX_a>j!;|GFZQ3lcp=b-9DurwA4GzcJoEi<`e!XaH5F(=k&bQi
z>dVUT$!!eE)AXvi%M-ELnzGL+6Vs;g-e85^>)k|(;8SOR?W6V-*ovUVV^ZLD8XKuj_mjh-6r8?oL8Z@X
zFfBqQ$d!cR$v;IxHsQHSPPPp6@(A*iSbu|jm0=;_@pW=BDtvyZ7KR?g1cNi!(&_#u
zsoe!3!sXBNfODYFIWeM#QDO0_#{-GFrEjkXS9CPkR(RZUN&>_i11HOZbUtc27khHQ
zJhyAuv}<7Fbwb}4N-v#J0-xbYCE8Xx3$Pnj?-?-2Q|_=6K1i4nB^w4G4Fw)(kJhSG
z@t#oyg?~NK0Kq@`kx_ye`p7$aXLEb`1Dp&WW82bdjS>GCq%(Mz>1t^?reT)}Y3TI5
z!``7o8Bmnmh;^kCYdihN%en{SJpyr}OX%Syy#t}Jb@6exJ-k5S?kz4Ys&YeveM|7$
zsf$tvTweoZ;>R&;pV)cgn>>-T&G@wR{$IIo$EjK&h*SL@tMR_G4Vgrsr-%K=37cN+
zb@-+tjH=MuU?8)1y8eNTKKSm(dki(zi9E;=Lug5mN=HYF+5M+qd6GG9Z=6&w2VS=6
z=q_6aO*Nm~Jl5ouEH?uU;i+CwtJ4~e$pOe2Y`A+@CBmJZx%GD$X@DvVFNy1@?j0HT
zNLBP&|9ukmVk6)Ja-dmvdnBNhzBr{#M;kaX0`7K+Z~pLvzO&4DUftFxG>x{Cv;5ZN
zgrQbPa0?*9`(x{qZh|c4#M9|DEz>XF+E1qZUzasb*@2s`Pbr%NgieXH%!oxuNUhF5Q
z6W?^FDsh=xlgW24v77O@b6ZC&8_V3RP?8lSMoASplNqpKIuLt;_-n8I=eM#ePz~Dc
z<$y$(4E$EFH?s>>@giTxJb4{f!(8`ph)P>sA1t#OLv(nUa?xn!@)(n(!`<&+gsADC
zfrw*#2y+AxfF^zj14V;ynkZKlI=omklwpvja+CgUIB9gqeOV*8Z3;}cI6=2bQMeQC
z!XI~2vTN+S;-0TEZc%~B^f0gDyibp%g*vw^LD)E6hOvnL9-ZDz2xG|L%y5Vlg3E67
zQbn~K{Xy>&AZMNAqMx>LpE?z8KZ`wWMO)ESFsg&Tty|ec3GDxYA)s1}+Eq{bIY&;s
ze$Eg@eM(sguY5ByuC5TgmxAFs~;pwDs;a
zQOwvyerG(M)a_p#gM5TJzD$g+<+NIa3(F^RaC*7!rKsspF2JjSJXVpUNW9;>lOs^u
zT91^O^PsP+?L!UQ@UQ%!s(w8lQn?Xut)x38+1WWbU~f<2a$AiTL+@@2qOp;b)
z00A~(dsYVD%$4xo;g}wb`Q}0Lh3WOzUcMKj-cg0#*tWRiq=^FPfIaAN`7|x5)5zMl
z*))pElJP(-XD;{?ph0T*I<_M}x)RDPKKx}W-7n9mdE)BR$XFCL#<2McY
zg+O18_{1N_7svmCjsGT_i6)3P``Ggb@eGE-2DUF)MfjNLXhT7(qMbp(v)h|}tv*6#
zeRwL1vOOdIrx@qRqRT`tQ_vJ9b?gk=$I}uwc?!)Z_y_L)q(BQDs|6UIl;nO6dgB&-
z2dazK>wmIqc>&|qSs=D1$d!}MemYk9InW8_1ddKAci5OJIX0!w|5@P`0iCS&=DF&+
zFUYbF1Q<~7KbSH7oTZZsm5wz-d-zkm$@Wu2BM^qi?lql)v5c@nmXZ(`l95huV2g!H
z0{bhw5PS4~9qN}s|-)K27J%vEJtBFbf6t!>pA$+F3Q
z{Q4`J@NFtqG4C#s8)q%Ezw$yr
zOX=3s61RK3AH*>Bts5dEmlMiXB9710Z%^Y_S1^?=Dfu&NVuQi5COj^0#M4hD({pd;
zdC;3&1wRQ#Sok5E$k3=KEu|6f&6kLWy%W3{^*@f>d|uJC`H4-wUR$1x;{Cd8PQftJw*l7EHNO_
zbea)`CCaHRT>1LJ=8`6YaeyqoJwz0LMixkiJ)8Ml|0v0@|MjG`_N0H>KIrfSlpAla
z7Me{5qG_b9WOFb#n=LUlDN;xr&$1+Je1nzxdCTYt?;#u-%V`Ftp?)D3L((v5qU*gh
z$Imb*t72YSEbwE03e|4NeEZ*GXlV;{sx^rE8~2}
z;T_
z;(N%3U~+H(90!-e`Fjes^kZb2<7(zS6M^2r_%FCf?CDA{``A@n?WmUN;Tm8Q0v5^2
zpUgfKO)<=LFeAsRaGiQ(;Nj9)9Ee@{#6AsuDoBX@bh$=TpL6)>=cN4C$c6NSENb{z
zG`W-^C+xyZ#4!!d2$PE-ZW@ycXEB^+-@T80_q4Cww=Rf=8ZE;-;i9$4g8G()oBQt{
zDh1ov=bCnsmygQvFlkX-h%)lKR6lg(1C%V`^t1S{<0nvp?Q(1}^0ZCtKSk)MH;e{4
z8oY`~8jAXW5{Ip?>wC+gj?}X!FO2a^9A|Q`jPSy4)>HHWUn&K;|2Eo5j22Dz)0Ik<
z&hY`V2s1IW@
4d{5eF~%h5tiD!jx=)UKk*dR~(T=k0YSX)_91EU2
zPQSSEKPUgK3HP)6kcIJLjhd|eqjM~Vc^VwbCjmm_f6}*?{86rt|EIj>LU#arc!=jvFD*m67?KV3@;|J;{;(tx
z{=+}X^$#nsBe$Wt=vQ!PzcBJjHC_}cL6mEPvRM1&e>-1WLUGe_7p?vDEmwG?naM6`
zbg&LZ%m8|b*I)bw+2DSI-ooDo9S4w#JrFwZI@q2280EiecIKwvy^Z~43H)}Wp38
z_~3*Y02LWl8|fg_{NCzbxuS7hrI`faSb-H)K+k`l((Uct@wevQeMX?>np&)qn7TQ;
z7#1!3Ar8#)7r1h{{(zVX)D0kDB;FjG2oFssTU8&92mJ;~eFJb32SB|XFO6!n;Y$Tf
zct7>`xxe7DTg0|;Oh^4{-#b>bEM=V(_QuMlYd-dk#p8o_z4Kh1W-iWl=J(Q$C)Dmd
z*z*n_L5}I`{oK
z+A~pkOPMavrY3iICEcVov+$N+Ri@9!b!CPf-Yw>!)rU%Sfy!9vKtqF;-rC7s6&|2V
zqKx!nDo*`t`rBx4hl>4^vU{o_aGt21dJXs89ph!qT;r)7CG&5_zdElq1H?)4t(YVY
zK~_*r4y)Ia4zOZW*rtPm+$-XXLd(kd%R@%C?Xu$aMcf
z(jwrND!$oLL5x8VSb42yy-SM0yNI>V)V=IAJO<{7p_gbCLDxo(!w_^4ZijO~(`pkj
z`O_J{@;i03$7cF~#mN7{!p=iX&PprRq4=D5lvm7@)SR`n)*s#tc5L0Dsn`7WGcUAn
z8`%G7!&o>UFO%XBcYEM
z9RPO!S8Kkn?AwB|39B0abwLMfl#h@A)ouX3Dr(m+1xkOp3;Pg<)o-i%jHvc8GU`f0M;b#RxSn?gVW(8oGr>DqS<
za$}qk$c`E{{=_#&2=C7?QMu+?8O-w_Xu;y%REFgc4}II+3%2}Y-aIoE1=-+KZ_KdD
z*z?m-GyVxtiXSSWP|PK0JDom!r2VQuMb|(^u!j`y2F_
zHhjtacJrHU>%C^z2$d_Fph|^b_2sJG;>pLW`smL>v$^HwMO>o*6C@?;S!K-$(O{9~
zZ{O4pIuF_{mm6OQSJ%v>E>B&5Lk!xh7dpmbsr&Eh4&
z7^~_g*W(UIFhznVCda>oXIr|rW7r{&_k`z=TlT#GxY55dyFW9$KmY&FtZpX{*y|1v
zRl5+Q1ak_`y?TOSb@2SQ;D|51XI~$aXgQ7ix7t^k3EeT_nU~)MEglIA@{!+C2)+~o
zkfmW~P$a_%F(3_)MeI@FKZ9MOwlQ^t1`K@Pd|vwhKGTpq4p{(P+iWmfcsHuSsgO$f_(+
z&-{gTslVW9iLgNTXi}a24SgY=sKp?~_?%~jGUlUcqEOh%ChsPyP5xfrOcg;Ut}B&A
zY_h`A+4i#Hr?LysxF=RY{+ndfPOy~8%io}?vh2ePc(leQtR;R*a)=k&jOPZopR?9{
zvB^Sm_B5v*RFnsv6;w5_YkU(`FT5WYwqj_n%P9$7$dyRD%QpKZ-?f4vjTGck^$
zdH=Et_7hY`^}d`jwZR>9Gg(Z@x?pT*$!>ki>d7_gsyZmx5?vC|7C|{Ry}=aWEPf}}
zism;6a+bQKPRc?@(s>Qk=3POujBPE?dkH&)<^ow)+A`NWC$17~+@DY$F2(!Q8GF;nOm$i^v#-=GOJg$4-wq3JmZ
zhi^X&-&EXZslei#1=VsEZ!DMzyBY*lQcxE-x*Z;;U(PGFiLt)i5eNt|zHn|Te_y1p
z!Mv*ghh=g0rP=j!t{A=aK3mleWYNiADc>=geH91FlEcnBD`wa3*}Pz+gXB3g2>^a~
zqHHa!+38JfX?p?U+sLQ06URwHbY<}yEuXG6=ggmXmurVky3UZ9z$JmV&a}8Psvmb?
z)s`*d1NOQNJ^hL-`sqw8+q^m4IICTsXKAi+qjo*)!1wljW}-&&jSDJnRJu`vtDI2dkFc>W+q;d`xzUKwGDUOIURyO~D;
z)-IB5JnDSv;3UMpsU$PEHpic6a
zsk@V54J-pn{CUfFolY{=ZHwloUZx(KO`mO>xpF5a)-FTgqnD#vk%y@S^p9*3OQt}{
z*NPX;YC0`%#8O%N>nyW}EgVjr(`RdYJz=}X<#U~C2ai9B7Eymhi^ivVG&XO9^R5WA
z#pW1#yR!OcJ?=g_Q{)9Cj!T@vz>55q`p>!6Sj!wr=f;hYlA~Z^o+I<;f8ojAuex1<G>*@d0g
z+7=l8{sjL*GuQN5cfAD|9PeG1Mld*7IImAujHBrB~*VM!Njb2z3NFk?_{5l3!Kbe*eoOgBLw8{*Jgk?clGFr<%R#eC)yiv
zJWn7Cn>PDku|L^#mMf>b0HXs;6P@`D+Ml)u_A5FDEC&q$V97dw_EC})6
zZwfE`OOWVKOpx5v7kw#Xv%zJ#gx8v*QC)NKNY3qYg^D60s}ecSFSK`ZFYhPmwrLbE
zr3AD*tFlP0^F7}iD=CkgQ3lrs?GosxCf??zxdzE$?|y_xgnuBQ?o(`+aMb~1&FJmx
zr1aOme!*?tj%PlU@K4LB#dq?GG){$GSAB0Q1T^wDPn`OxbUSyM{6w-lUI><`3OsV$
z=(p{d>w_vZqvcYMNBYZ7_l)0y03g{Anj9!yu4`yRjon(lC!%psi-z{t6#H(fx7?Lm
zN9fl;R_|z0pS{ceIMJx|z(ZSX2tDN)}L}lodY|Rx!^>TV}
zEzdjUt?QKQ^efi5DC$X)?;R2Ht7?T;;YBrDfV`>!j_!`LRcd{9KAsx+@~cUz9z=!Y
z*_4iX;YwE;XD`@=Zf?AP1`wyfdsT}`=e+$Y1)>!5n22G
zgw3Sg3gCO=j;45}Z-^>3r_h^h67%z8U23ZmS+ZJQg(9Ua4ABC!VqMV*^D!vTnR7Ze
z0KQ{{w@hxg0{HG2{ZTK(zYpR4M~OtvS8^rdmwlSS|1jHNw+Qkh{3sk|?ydH`_ve8O
zcnev{bbtGni<;KJL1NGy^(i%&C{CsZ&do;|d1Ddm5~9*y?r0Jpv}GN-li+#?nHPm?
zA{|;aYTU2-)#{>%ulh9FBBWP#IRf=co{>c{(4vxnUC+rgUUCFTc%`z~nfLxVU6%1D
zb}yx7jm3sY-!BSOC`)|}k5ZO9H_NjFe~b6_c#}7tbtu2}RqG?LlBM1MKkUd%
z|D4*xL%SK=7F7vlSq?Dn{?OHv{iXU%&ibiJ$
+
+
+
+
+
+
\ No newline at end of file
diff --git a/urbanLifelineWeb/packages/shared/src/layouts/index.ts b/urbanLifelineWeb/packages/shared/src/layouts/index.ts
index 4e84460d..be278f62 100644
--- a/urbanLifelineWeb/packages/shared/src/layouts/index.ts
+++ b/urbanLifelineWeb/packages/shared/src/layouts/index.ts
@@ -1 +1,2 @@
export { default as BlankLayout } from './BlankLayout/BlankLayout.vue'
+export { default as AdminSidebarLayout } from './AdminSidebarLayout/AdminSidebarLayout.vue'
\ No newline at end of file
diff --git a/urbanLifelineWeb/packages/shared/src/utils/route/route-generator.ts b/urbanLifelineWeb/packages/shared/src/utils/route/route-generator.ts
index 7e495429..c591ddce 100644
--- a/urbanLifelineWeb/packages/shared/src/utils/route/route-generator.ts
+++ b/urbanLifelineWeb/packages/shared/src/utils/route/route-generator.ts
@@ -14,9 +14,10 @@ type SysMenu = TbSysViewDTO
// 视图类型常量(对应后端的 type 字段)
const ViewType = {
- MENU: 1, // 菜单
- PAGE: 2, // 页面
- BUTTON: 3 // 按钮
+ NAVBAR: 0, // 导航栏
+ SIDEBAR: 1, // 侧边栏
+ BUTTON: 2, // 按钮
+ ROUTE: 3 // 空白页(路由页面)
} as const
/**
@@ -74,33 +75,33 @@ export function generateRoutes(
if (route) {
routes.push(route)
- // 递归提取所有 PAGE 类型的子菜单
+ // 递归提取所有 ROUTE 类型的子菜单
extractPageChildren(route, pageRoutes, config)
}
})
- // 将 PAGE 类型的路由添加到路由列表
+ // 将 ROUTE 类型的路由添加到路由列表
routes.push(...pageRoutes)
return routes
}
/**
- * 递归提取路由中的 PAGE 类型子菜单
+ * 递归提取路由中的 ROUTE 类型子菜单
*/
function extractPageChildren(
route: any,
pageRoutes: RouteRecordRaw[],
config: RouteGeneratorConfig
) {
- // 检查当前路由是否有 PAGE 类型的子菜单
+ // 检查当前路由是否有 ROUTE 类型的子菜单
if (route.meta?.pageChildren && Array.isArray(route.meta.pageChildren)) {
route.meta.pageChildren.forEach((pageMenu: SysMenu) => {
const pageRoute = generateRouteFromMenu(pageMenu, config, true)
if (pageRoute) {
pageRoutes.push(pageRoute)
} else {
- console.error(`[路由生成] 生成独立PAGE路由失败: ${pageMenu.name}`)
+ console.error(`[路由生成] 生成独立ROUTE路由失败: ${pageMenu.name}`)
}
})
// 清理临时数据
@@ -171,7 +172,7 @@ function generateRouteFromMenu(
route.component = config.layoutMap[menu.component]
} else if (hasChildren && isTopLevel) {
// 如果有子菜单但没有指定布局,根据菜单类型选择默认布局
- if (menu.type === ViewType.MENU && !menu.parentId) {
+ if (menu.type === ViewType.SIDEBAR && !menu.parentId) {
route.component = config.layoutMap['SidebarLayout']
} else {
route.component = config.layoutMap['BasicLayout']
@@ -220,7 +221,7 @@ function generateRouteFromMenu(
const normalChildren: SysMenu[] = []
menu.children!.forEach((child: SysMenu) => {
- if (child.type === ViewType.PAGE) {
+ if (child.type === ViewType.ROUTE) {
pageChildren.push(child)
} else {
normalChildren.push(child)
@@ -235,7 +236,7 @@ function generateRouteFromMenu(
}
})
- // PAGE 类型的菜单保存到 meta
+ // ROUTE 类型的菜单保存到 meta
if (pageChildren.length > 0) {
route.meta.pageChildren = pageChildren
}
@@ -244,12 +245,12 @@ function generateRouteFromMenu(
// 处理有子菜单的情况
route.children = []
- // 分离 PAGE 类型的子菜单和普通子菜单
+ // 分离 ROUTE 类型的子菜单和普通子菜单
const pageChildren: SysMenu[] = []
const normalChildren: SysMenu[] = []
menu.children!.forEach((child: SysMenu) => {
- if (child.type === ViewType.PAGE) {
+ if (child.type === ViewType.ROUTE) {
pageChildren.push(child)
} else {
normalChildren.push(child)
diff --git a/urbanLifelineWeb/packages/workcase/src/layouts/SidebarLayout/SidebarLayout.scss b/urbanLifelineWeb/packages/workcase/src/layouts/SidebarLayout/SidebarLayout.scss
index c3a40ef7..83c75086 100644
--- a/urbanLifelineWeb/packages/workcase/src/layouts/SidebarLayout/SidebarLayout.scss
+++ b/urbanLifelineWeb/packages/workcase/src/layouts/SidebarLayout/SidebarLayout.scss
@@ -5,17 +5,17 @@
overflow: hidden;
}
-// ==================== 侧边栏 ====================
+// ==================== 侧边栏(内层子导航样式)====================
.sidebar {
- width: 220px;
+ width: 180px;
height: 100%;
- background: #F0EAF4;
+ background: #fff;
display: flex;
flex-direction: column;
color: #333;
flex-shrink: 0;
transition: width 0.3s ease;
- border-right: 1px solid rgba(0, 0, 0, 0.08);
+ border-right: 1px solid #e4e7ed;
&.collapsed {
width: 64px;
@@ -49,7 +49,7 @@
// 侧边栏头部
.sidebar-header {
padding: 16px 20px;
- border-bottom: 1px solid rgba(0, 0, 0, 0.08);
+ border-bottom: 1px solid #e4e7ed;
display: flex;
align-items: center;
justify-content: space-between;
@@ -63,7 +63,7 @@
justify-content: center;
border-radius: 6px;
cursor: pointer;
- color: #888;
+ color: #909399;
transition: all 0.2s;
&:hover {
@@ -78,18 +78,16 @@
gap: 10px;
.logo-img {
- width: 40px;
- height: 40px;
+ width: 36px;
+ height: 36px;
border-radius: 6px;
object-fit: contain;
- background: #fff;
- padding: 2px;
}
.logo-text {
font-size: 16px;
font-weight: 600;
- color: #333;
+ color: #303133;
}
}
@@ -97,31 +95,31 @@
.nav-menu {
flex: 1;
overflow-y: auto;
- padding: 12px 0;
+ padding: 16px 0;
&::-webkit-scrollbar {
width: 4px;
}
&::-webkit-scrollbar-thumb {
- background: rgba(0, 0, 0, 0.2);
+ background: rgba(0, 0, 0, 0.15);
border-radius: 4px;
}
}
.nav-section {
- padding: 8px 0;
+ padding: 0;
}
.nav-item {
display: flex;
align-items: center;
- gap: 12px;
- padding: 14px 20px;
- margin-bottom: 4px;
+ gap: 10px;
+ padding: 10px 20px;
+ margin-bottom: 0;
cursor: pointer;
transition: all 0.2s ease;
- color: #555;
+ color: #606266;
font-size: 14px;
&:hover {
@@ -132,11 +130,11 @@
&.active {
background: rgba(124, 58, 237, 0.15);
color: #7c3aed;
- font-weight: 500;
+ border-right: 3px solid #7c3aed;
}
.el-icon {
- font-size: 18px;
+ font-size: 16px;
flex-shrink: 0;
}
@@ -150,7 +148,7 @@
// 用户信息
.user-section {
padding: 16px 20px;
- border-top: 1px solid rgba(0, 0, 0, 0.08);
+ border-top: 1px solid #e4e7ed;
cursor: pointer;
transition: background 0.2s;
@@ -171,7 +169,7 @@
.user-name {
font-size: 14px;
font-weight: 500;
- color: #333;
+ color: #303133;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
@@ -245,7 +243,7 @@
width: 64px;
&:not(.collapsed) {
- width: 220px;
+ width: 180px;
position: fixed;
left: 0;
top: 0;
diff --git a/urbanLifelineWeb/packages/workcase/src/layouts/SidebarLayout/SidebarLayout.vue b/urbanLifelineWeb/packages/workcase/src/layouts/SidebarLayout/SidebarLayout.vue
index 4cf0bc02..3a75d689 100644
--- a/urbanLifelineWeb/packages/workcase/src/layouts/SidebarLayout/SidebarLayout.vue
+++ b/urbanLifelineWeb/packages/workcase/src/layouts/SidebarLayout/SidebarLayout.vue
@@ -30,31 +30,6 @@
-
-
-
-
-
-
-
- 个人中心
-
-
-
- 系统设置
-
-
-
- 退出登录
-
-
-
-
diff --git a/urbanLifelineWeb/packages/workcase/src/layouts/index.ts b/urbanLifelineWeb/packages/workcase/src/layouts/index.ts
index 387ddeff..90b1b142 100644
--- a/urbanLifelineWeb/packages/workcase/src/layouts/index.ts
+++ b/urbanLifelineWeb/packages/workcase/src/layouts/index.ts
@@ -1,3 +1,4 @@
export { default as SidebarLayout } from './SidebarLayout/SidebarLayout.vue'
+
// BlankLayout从shared导入
-export { BlankLayout } from 'shared/layouts'
+export { BlankLayout, AdminSidebarLayout } from 'shared/layouts';
\ No newline at end of file
diff --git a/urbanLifelineWeb/packages/workcase/src/router/dynamicRoute.ts b/urbanLifelineWeb/packages/workcase/src/router/dynamicRoute.ts
index 66c7e6f5..cf768a77 100644
--- a/urbanLifelineWeb/packages/workcase/src/router/dynamicRoute.ts
+++ b/urbanLifelineWeb/packages/workcase/src/router/dynamicRoute.ts
@@ -18,14 +18,15 @@ import {
import type { TbSysViewDTO } from 'shared/types'
import type { RouteRecordRaw } from 'vue-router'
import router from './index'
-import { SidebarLayout, BlankLayout } from '@/layouts'
+import { SidebarLayout, BlankLayout, AdminSidebarLayout } from '@/layouts'
// Workcase 布局组件映射
const workcaseLayoutMap: Record Promise> = {
'SidebarLayout': () => Promise.resolve({ default: SidebarLayout }),
'BlankLayout': () => Promise.resolve({ default: BlankLayout }),
'NavigationLayout': () => Promise.resolve({ default: SidebarLayout }),
- 'BasicLayout': () => Promise.resolve({ default: SidebarLayout })
+ 'BasicLayout': () => Promise.resolve({ default: SidebarLayout }),
+ 'AdminSidebarLayout': () => Promise.resolve({ default: AdminSidebarLayout })
}
// 视图组件加载器
diff --git a/urbanLifelineWeb/packages/workcase/src/router/index.ts b/urbanLifelineWeb/packages/workcase/src/router/index.ts
index ace44e6d..e6ce70e6 100644
--- a/urbanLifelineWeb/packages/workcase/src/router/index.ts
+++ b/urbanLifelineWeb/packages/workcase/src/router/index.ts
@@ -73,19 +73,153 @@ router.beforeEach((to, from, next) => {
console.log('[Workcase Router] 所有路由:', router.getRoutes().map(r => r.path))
if (loaded) {
- // 动态路由加载成功,重新导航以匹配新添加的路由
- console.log('[Workcase Router] 动态路由加载成功,重新导航到:', to.path)
- next({ ...to, replace: true })
- return
+ if (to.path === '/') {
+ // 访问根路径,重定向到第一个可用路由
+ const firstRoute = getFirstAvailableRoute()
+ if (firstRoute && firstRoute !== '/') {
+ // 只有当第一个路由不是 / 时才重定向,避免无限循环
+ console.log('[Workcase Router] 根路径重定向到:', firstRoute)
+ next({ path: firstRoute, replace: true })
+ return
+ } else {
+ // 第一个路由就是 /,直接放行
+ console.log('[Workcase Router] 第一个路由就是根路径,直接放行')
+ }
+ } else if (to.path === '/admin') {
+ // 访问 /admin 路径,重定向到第一个 admin 路由
+ const firstAdminRoute = getFirstAdminRoute()
+ if (firstAdminRoute) {
+ console.log('[Workcase Router] /admin 重定向到:', firstAdminRoute)
+ next({ path: firstAdminRoute, replace: true })
+ return
+ }
+ } else {
+ // 动态路由加载成功,重新导航以匹配新添加的路由
+ console.log('[Workcase Router] 动态路由加载成功,重新导航到:', to.path)
+ next({ ...to, replace: true })
+ return
+ }
} else {
console.warn('[Workcase Router] 动态路由加载失败')
}
}
+ // 如果已登录且访问根路径,但动态路由已加载,重定向到第一个可用路由
+ if (hasToken && to.path === '/' && dynamicRoutesLoaded) {
+ const firstRoute = getFirstAvailableRoute()
+ if (firstRoute && firstRoute !== '/') {
+ // 只有当第一个路由不是 / 时才重定向,避免无限循环
+ console.log('[Workcase Router] 已登录访问根路径,重定向到:', firstRoute)
+ next({ path: firstRoute, replace: true })
+ return
+ }
+ }
+
+ // 如果访问 /admin,重定向到第一个 admin 路由
+ if (hasToken && to.path === '/admin' && dynamicRoutesLoaded) {
+ const firstAdminRoute = getFirstAdminRoute()
+ if (firstAdminRoute) {
+ console.log('[Workcase Router] 访问 /admin,重定向到:', firstAdminRoute)
+ next({ path: firstAdminRoute, replace: true })
+ return
+ }
+ }
+
console.log('[Workcase Router] 继续正常导航')
next()
})
+/**
+ * 获取第一个可用的路由路径
+ */
+function getFirstAvailableRoute(): string | null {
+ try {
+ console.log('[Workcase Router] 开始获取第一个可用路由...')
+
+ const loginDomainStr = localStorage.getItem('loginDomain')
+ if (!loginDomainStr) {
+ console.warn('[Workcase Router] localStorage 中没有 loginDomain')
+ return null
+ }
+
+ const loginDomain = JSON.parse(loginDomainStr)
+ const userViews = loginDomain.userViews || []
+
+ console.log('[Workcase Router] 所有用户视图:', userViews.length)
+
+ // 过滤出 workcase 服务的非 admin 视图
+ // 注意:不限制 type,因为首页路由可能是 type=3(路由类型)而不是 type=1(菜单类型)
+ const workcaseViews = userViews.filter((view: any) =>
+ view.service === 'workcase' &&
+ !view.url?.startsWith('/admin') &&
+ view.url // 必须有 url 字段
+ )
+
+ console.log('[Workcase Router] Workcase 服务视图:', workcaseViews)
+
+ if (workcaseViews.length === 0) {
+ console.warn('[Workcase Router] 没有找到 workcase 服务的菜单视图')
+ return null
+ }
+
+ // 按 orderNum 排序
+ workcaseViews.sort((a: any, b: any) => (a.orderNum || 0) - (b.orderNum || 0))
+
+ const firstRoute = workcaseViews[0].url
+ console.log('[Workcase Router] 第一个路由:', firstRoute, '视图:', workcaseViews[0].name)
+
+ return firstRoute
+ } catch (error) {
+ console.error('[Workcase Router] 获取首页路由失败:', error)
+ return null
+ }
+}
+
+/**
+ * 获取第一个 admin 路由
+ */
+function getFirstAdminRoute(): string | null {
+ try {
+ console.log('[Workcase Router] 开始获取第一个 admin 路由...')
+
+ const loginDomainStr = localStorage.getItem('loginDomain')
+ if (!loginDomainStr) {
+ console.warn('[Workcase Router] localStorage 中没有 loginDomain')
+ return null
+ }
+
+ const loginDomain = JSON.parse(loginDomainStr)
+ const userViews = loginDomain.userViews || []
+
+ // 过滤出 workcase 服务的 admin 路由(排除目录类型)
+ const adminViews = userViews.filter((view: any) =>
+ view.service === 'workcase' &&
+ view.url?.startsWith('/admin') &&
+ view.layout === 'AdminSidebarLayout' &&
+ !view.parentId && // 顶级菜单
+ view.url // 必须有 url 字段
+ )
+
+ console.log('[Workcase Router] Admin 视图:', adminViews)
+
+ if (adminViews.length === 0) {
+ console.warn('[Workcase Router] 没有找到 workcase admin 路由')
+ return null
+ }
+
+ // 按 orderNum 排序
+ adminViews.sort((a: any, b: any) => (a.orderNum || 0) - (b.orderNum || 0))
+
+ const firstRoute = adminViews[0].url
+ console.log('[Workcase Router] 第一个 admin 路由:', firstRoute, '视图:', adminViews[0].name)
+
+ return firstRoute
+ } catch (error) {
+ console.error('[Workcase Router] 获取 admin 路由失败:', error)
+ return null
+ }
+}
+
// 重置动态路由加载状态
export function resetDynamicRoutes() {
dynamicRoutesLoaded = false
diff --git a/urbanLifelineWeb/packages/workcase/src/types/shared.d.ts b/urbanLifelineWeb/packages/workcase/src/types/shared.d.ts
index b3770513..663eb1fb 100644
--- a/urbanLifelineWeb/packages/workcase/src/types/shared.d.ts
+++ b/urbanLifelineWeb/packages/workcase/src/types/shared.d.ts
@@ -176,4 +176,5 @@ declare module 'shared/layouts' {
import { DefineComponent } from 'vue'
export const BlankLayout: DefineComponent<{}, {}, any>
+ export const AdminSidebarLayout: DefineComponent<{}, {}, any>
}
diff --git a/urbanLifelineWeb/packages/workcase/src/views/admin/agent/AgentView.scss b/urbanLifelineWeb/packages/workcase/src/views/admin/agent/AgentView.scss
new file mode 100644
index 00000000..e69de29b
diff --git a/urbanLifelineWeb/packages/workcase/src/views/admin/agent/AgentView.vue b/urbanLifelineWeb/packages/workcase/src/views/admin/agent/AgentView.vue
new file mode 100644
index 00000000..3d869be5
--- /dev/null
+++ b/urbanLifelineWeb/packages/workcase/src/views/admin/agent/AgentView.vue
@@ -0,0 +1,11 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/urbanLifelineWeb/packages/workcase/src/views/admin/customerChat/CustomerChatView.scss b/urbanLifelineWeb/packages/workcase/src/views/admin/customerChat/CustomerChatView.scss
new file mode 100644
index 00000000..e69de29b
diff --git a/urbanLifelineWeb/packages/workcase/src/views/admin/customerChat/CustomerChatView.vue b/urbanLifelineWeb/packages/workcase/src/views/admin/customerChat/CustomerChatView.vue
new file mode 100644
index 00000000..a3a9ab94
--- /dev/null
+++ b/urbanLifelineWeb/packages/workcase/src/views/admin/customerChat/CustomerChatView.vue
@@ -0,0 +1,11 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/urbanLifelineWeb/packages/workcase/src/views/admin/knowledge/KnowLedgeView.scss b/urbanLifelineWeb/packages/workcase/src/views/admin/knowledge/KnowLedgeView.scss
new file mode 100644
index 00000000..e69de29b
diff --git a/urbanLifelineWeb/packages/workcase/src/views/admin/knowledge/KnowLedgeView.vue b/urbanLifelineWeb/packages/workcase/src/views/admin/knowledge/KnowLedgeView.vue
new file mode 100644
index 00000000..35be3ea5
--- /dev/null
+++ b/urbanLifelineWeb/packages/workcase/src/views/admin/knowledge/KnowLedgeView.vue
@@ -0,0 +1,11 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/urbanLifelineWeb/packages/workcase/src/views/admin/log/knowledgeLog/KnowledgeLogView.scss b/urbanLifelineWeb/packages/workcase/src/views/admin/log/knowledgeLog/KnowledgeLogView.scss
new file mode 100644
index 00000000..e69de29b
diff --git a/urbanLifelineWeb/packages/workcase/src/views/admin/log/knowledgeLog/KnowledgeLogView.vue b/urbanLifelineWeb/packages/workcase/src/views/admin/log/knowledgeLog/KnowledgeLogView.vue
new file mode 100644
index 00000000..85df95f9
--- /dev/null
+++ b/urbanLifelineWeb/packages/workcase/src/views/admin/log/knowledgeLog/KnowledgeLogView.vue
@@ -0,0 +1,11 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/urbanLifelineWeb/packages/workcase/src/views/admin/log/systemLog/SystemLogView.scss b/urbanLifelineWeb/packages/workcase/src/views/admin/log/systemLog/SystemLogView.scss
new file mode 100644
index 00000000..e69de29b
diff --git a/urbanLifelineWeb/packages/workcase/src/views/admin/log/systemLog/SystemLogView.vue b/urbanLifelineWeb/packages/workcase/src/views/admin/log/systemLog/SystemLogView.vue
new file mode 100644
index 00000000..ecf45b78
--- /dev/null
+++ b/urbanLifelineWeb/packages/workcase/src/views/admin/log/systemLog/SystemLogView.vue
@@ -0,0 +1,11 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/urbanLifelineWeb/packages/workcase/src/views/admin/log/workcaseLog/WorkcaseLogView.scss b/urbanLifelineWeb/packages/workcase/src/views/admin/log/workcaseLog/WorkcaseLogView.scss
new file mode 100644
index 00000000..e69de29b
diff --git a/urbanLifelineWeb/packages/workcase/src/views/admin/log/workcaseLog/WorkcaseLogView.vue b/urbanLifelineWeb/packages/workcase/src/views/admin/log/workcaseLog/WorkcaseLogView.vue
new file mode 100644
index 00000000..0aa08fb7
--- /dev/null
+++ b/urbanLifelineWeb/packages/workcase/src/views/admin/log/workcaseLog/WorkcaseLogView.vue
@@ -0,0 +1,11 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/urbanLifelineWeb/packages/workcase/src/views/admin/overview/OverviewView.scss b/urbanLifelineWeb/packages/workcase/src/views/admin/overview/OverviewView.scss
new file mode 100644
index 00000000..e69de29b
diff --git a/urbanLifelineWeb/packages/workcase/src/views/admin/overview/OverviewView.vue b/urbanLifelineWeb/packages/workcase/src/views/admin/overview/OverviewView.vue
new file mode 100644
index 00000000..4e7e9919
--- /dev/null
+++ b/urbanLifelineWeb/packages/workcase/src/views/admin/overview/OverviewView.vue
@@ -0,0 +1,11 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/urbanLifelineWeb/packages/workcase/src/views/admin/workcase/WorkcaseView.scss b/urbanLifelineWeb/packages/workcase/src/views/admin/workcase/WorkcaseView.scss
new file mode 100644
index 00000000..e69de29b
diff --git a/urbanLifelineWeb/packages/workcase/src/views/admin/workcase/WorkcaseView.vue b/urbanLifelineWeb/packages/workcase/src/views/admin/workcase/WorkcaseView.vue
new file mode 100644
index 00000000..914cf78f
--- /dev/null
+++ b/urbanLifelineWeb/packages/workcase/src/views/admin/workcase/WorkcaseView.vue
@@ -0,0 +1,11 @@
+
+
+
+
+
+
+
\ No newline at end of file