From a0cba618deba80bf2f0e51ead66dd0054110de05 Mon Sep 17 00:00:00 2001 From: DKChan <524912269@qq.com> Date: Thu, 17 Sep 2026 02:21:06 +0800 Subject: [PATCH] =?UTF-8?q?docs(architecture):=20GDD=20=E6=A6=82=E5=BF=B5?= =?UTF-8?q?=E7=BB=93=E6=9E=84=E5=9B=BE=E4=BA=A7=E7=89=A9=E6=94=B6=E7=BC=96?= =?UTF-8?q?=E2=80=94=E2=80=94archify=20=E4=BA=A4=E4=BB=98=EF=BC=88gdd-conc?= =?UTF-8?q?ept-map.html=20+=20=E5=8F=AF=E7=BC=96=E8=BE=91=E5=80=99?= =?UTF-8?q?=E9=80=89=20architecture.json=20+=20=E5=8F=AF=E8=A7=86=E5=8C=96?= =?UTF-8?q?=E6=A3=80=E6=9F=A5=E4=BB=B6=E5=9B=9B=E8=A7=86=E5=9B=BE=EF=BC=89?= =?UTF-8?q?=EF=BC=9B=E5=9B=BE=E4=B8=BA=E5=BF=AB=E7=85=A7=EF=BC=8CGDD=20?= =?UTF-8?q?=E5=8F=98=E6=9B=B4=E9=9C=80=E9=87=8D=E4=BA=A4=E4=BB=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../gdd-concept-map.architecture.json | 413 + docs/architecture/gdd-concept-map.html | 15051 ++++++++++++++++ ...concept-map.visual-check.1440x900.dark.png | Bin 0 -> 139422 bytes ...oncept-map.visual-check.1440x900.light.png | Bin 0 -> 149314 bytes ...oncept-map.visual-check.2048x1320.dark.png | Bin 0 -> 175372 bytes ...ncept-map.visual-check.2048x1320.light.png | Bin 0 -> 186491 bytes .../gdd-concept-map.visual-check.html | 32 + .../gdd-concept-map.visual-check.json | 548 + 8 files changed, 16044 insertions(+) create mode 100644 docs/architecture/gdd-concept-map.architecture.json create mode 100644 docs/architecture/gdd-concept-map.html create mode 100644 docs/architecture/gdd-concept-map.visual-check.1440x900.dark.png create mode 100644 docs/architecture/gdd-concept-map.visual-check.1440x900.light.png create mode 100644 docs/architecture/gdd-concept-map.visual-check.2048x1320.dark.png create mode 100644 docs/architecture/gdd-concept-map.visual-check.2048x1320.light.png create mode 100644 docs/architecture/gdd-concept-map.visual-check.html create mode 100644 docs/architecture/gdd-concept-map.visual-check.json diff --git a/docs/architecture/gdd-concept-map.architecture.json b/docs/architecture/gdd-concept-map.architecture.json new file mode 100644 index 00000000..f9400f15 --- /dev/null +++ b/docs/architecture/gdd-concept-map.architecture.json @@ -0,0 +1,413 @@ +{ + "schema_version": 1, + "diagram_type": "architecture", + "meta": { + "title": "Dungeon Sweeper · GDD 概念结构图", + "output": "docs/architecture/gdd-concept-map.html", + "quality_profile": "showcase", + "locale": "zh-CN", + "viewBox": [ + 1364, + 660 + ], + "views": [ + { + "id": "core-loop", + "label": "核心循环主链", + "focus": [ + "board-gen", + "minesweeper", + "action-economy", + "settlement", + "adventure", + "difficulty" + ], + "note": "主路径:新雷图 → 挖掘计费 → 轮末结算 → 关卡推进 → 难度抬升。" + }, + { + "id": "settlement-hub", + "label": "结算枢纽与红线", + "focus": [ + "settlement", + "enemy", + "status", + "rewards", + "hud" + ], + "note": "战斗结算是战斗域唯一调用方;呈现层只订阅结算步骤流。" + }, + { + "id": "foundation", + "label": "支撑底座", + "focus": [ + "data-config", + "board-gen", + "settlement", + "hud" + ], + "note": "ConfigDB 单点 + RngService 四流,被全部系统取用。" + } + ] + }, + "components": [ + { + "id": "board-gen", + "type": "backend", + "label": "棋盘生成", + "sublabel": "可推理·可通关", + "pos": [ + 50, + 300 + ], + "size": [ + 130, + 64 + ] + }, + { + "id": "minesweeper", + "type": "backend", + "label": "排雷玩法", + "sublabel": "挖格·插旗·连锁", + "pos": [ + 240, + 300 + ], + "size": [ + 136, + 64 + ] + }, + { + "id": "action-economy", + "type": "backend", + "label": "行动经济", + "sublabel": "AP 账本·停手/刷新", + "pos": [ + 436, + 300 + ], + "size": [ + 140, + 64 + ] + }, + { + "id": "settlement", + "type": "backend", + "label": "战斗结算", + "sublabel": "轮末编排·逐行兑现", + "pos": [ + 648, + 300 + ], + "size": [ + 156, + 72 + ] + }, + { + "id": "adventure", + "type": "backend", + "label": "冒险结构", + "sublabel": "关卡序列·大奖励", + "pos": [ + 952, + 300 + ], + "size": [ + 136, + 64 + ] + }, + { + "id": "difficulty", + "type": "backend", + "label": "难度曲线与Boss", + "sublabel": "期望值带·Dmax", + "pos": [ + 1152, + 300 + ], + "size": [ + 150, + 64 + ] + }, + { + "id": "aux-items", + "type": "backend", + "label": "魔法道具", + "sublabel": "显影·探测类", + "pos": [ + 240, + 140 + ], + "size": [ + 136, + 64 + ] + }, + { + "id": "enemy", + "type": "backend", + "label": "敌人系统", + "sublabel": "敌人数据·意图", + "pos": [ + 651, + 140 + ], + "size": [ + 150, + 64 + ] + }, + { + "id": "hud", + "type": "frontend", + "label": "HUD框架", + "sublabel": "呈现契约·布局", + "pos": [ + 244, + 470 + ], + "size": [ + 136, + 64 + ] + }, + { + "id": "data-config", + "type": "database", + "label": "数据配置", + "sublabel": "ConfigDB·RngService", + "pos": [ + 37, + 470 + ], + "size": [ + 156, + 64 + ] + }, + { + "id": "status", + "type": "backend", + "label": "增益状态", + "sublabel": "容器·叠层·衰减", + "pos": [ + 614, + 470 + ], + "size": [ + 130, + 64 + ] + }, + { + "id": "rewards", + "type": "backend", + "label": "地图战斗资源", + "sublabel": "格面资源·清图奖励", + "pos": [ + 776, + 470 + ], + "size": [ + 136, + 64 + ] + } + ], + "boundaries": [ + { + "kind": "region", + "label": "排雷循环", + "wraps": [ + "board-gen", + "minesweeper", + "action-economy", + "aux-items" + ] + }, + { + "kind": "region", + "label": "战斗循环", + "wraps": [ + "settlement", + "enemy", + "status", + "rewards" + ] + }, + { + "kind": "region", + "label": "冒险循环", + "wraps": [ + "adventure", + "difficulty" + ] + }, + { + "kind": "region", + "label": "表现与支撑", + "wraps": [ + "data-config", + "hud" + ] + } + ], + "connections": [ + { + "id": "gen-to-mines", + "from": "board-gen", + "to": "minesweeper", + "label": "生成雷图", + "variant": "emphasis" + }, + { + "id": "mines-to-ap", + "from": "minesweeper", + "to": "action-economy", + "label": "挖掘花费 AP", + "variant": "emphasis" + }, + { + "id": "ap-to-settle", + "from": "action-economy", + "to": "settlement", + "label": "round_end", + "variant": "emphasis" + }, + { + "id": "settle-to-enemy", + "from": "settlement", + "to": "enemy", + "label": "兑现敌人行动" + }, + { + "id": "settle-to-status", + "from": "settlement", + "to": "status", + "label": "兑现增益减益", + "fromSide": "bottom", + "toSide": "top", + "labelAt": [ + 679, + 447 + ] + }, + { + "id": "settle-to-rewards", + "from": "settlement", + "to": "rewards", + "label": "兑现格面奖励", + "fromSide": "bottom", + "toSide": "top" + }, + { + "id": "settle-to-adv", + "from": "settlement", + "to": "adventure", + "label": "结果推进关卡", + "variant": "emphasis" + }, + { + "id": "adv-to-diff", + "from": "adventure", + "to": "difficulty", + "label": "关卡定级", + "variant": "emphasis", + "labelDy": 14 + }, + { + "id": "diff-to-enemy", + "from": "difficulty", + "to": "enemy", + "label": "数值与 Boss Dmax" + }, + { + "id": "mines-to-aux", + "from": "minesweeper", + "to": "aux-items", + "label": "挖掘期使用" + }, + { + "id": "base-to-gen", + "from": "data-config", + "to": "board-gen", + "label": "种子与表值", + "labelAt": [ + 115, + 395 + ] + }, + { + "id": "base-to-settle", + "from": "data-config", + "to": "settlement", + "label": "RNG 流·表值", + "fromSide": "top", + "toSide": "bottom" + }, + { + "id": "settle-to-hud", + "from": "settlement", + "to": "hud", + "label": "结算步骤流", + "variant": "dashed", + "fromSide": "left", + "toSide": "top" + }, + { + "id": "adv-to-gen", + "from": "adventure", + "to": "board-gen", + "label": "推进下一关", + "variant": "dashed", + "fromSide": "bottom", + "toSide": "left", + "via": [ + [ + 1020, + 618 + ], + [ + 15, + 618 + ], + [ + 15, + 332 + ] + ] + } + ], + "cards": [ + { + "dot": "cyan", + "title": "核心循环", + "items": [ + "主路径:棋盘生成 → 挖掘计费 → 轮末结算 → 关卡推进 → 难度抬升", + "难度参数流入下一关雷图,虚线「推进下一关」闭合整局循环" + ] + }, + { + "dot": "emerald", + "title": "结算枢纽与架构红线", + "items": [ + "战斗结算是敌人系统、增益状态、地图战斗资源的唯一调用方", + "呈现层只订阅战斗结算步骤流,不直订排雷玩法事件" + ] + }, + { + "dot": "amber", + "title": "支撑底座与未上图", + "items": [ + "数据配置(ConfigDB + RngService 四流)被全部系统引用,图中只画主干两笔", + "未上图(已定稿):地形变异、存档序列化、战斗表现、音频、教学引导、设置与本地化", + "范围草案:关卡节点地图、元进度" + ] + } + ] +} diff --git a/docs/architecture/gdd-concept-map.html b/docs/architecture/gdd-concept-map.html new file mode 100644 index 00000000..d5897a40 --- /dev/null +++ b/docs/architecture/gdd-concept-map.html @@ -0,0 +1,15051 @@ + + +
+ + + +正在检查已编译语义
+没有匹配的节点
+ +最多选择两种语义类型。选择一种可显示其真实流量;选择两种只比较直接编写的关系。
+ +选择一种类型以检查其节点和相连关系。
+语义雷达需要更多地图可见空间。
+`(Z%yww6&prP{qJ+{L1rzFRH4qy1 zjElg(XgE8=oVNAx?%#vFvb=Y;vVxN@*RS!GC7 zdCz 8n(oh`aR9`0YCBs9iL8Fh PCT_Zy z3aN|QXgH@K1TQ2k?kxL_Gu;xs!Bw%vWfx-z%5h~DA?&}%muB}GhRyE+!=1Rpx20pW zM)SJ^5)CVCeCJ?}i;Hg;r7bG(ZI2MH!al4yEFovMiVxjsC$&268qh1gzPl0`NC?$S zTWyTZ$q6ocv0&&LMm!p I9sy2++>l_^c1Jo)gV09;tSk3)?`bZv2SZ zEjFplbohFc7%YT+M1JD_dK^&lMUROob^U3uHAuPZ{T Wp44hCF3OtDKyc3;P7 zwbfs-xCmxQxRxbAS0WM1|4CmZqo?ARZn45xksXRS)vbXQ|HWirC-$ePYp0o6nrkQa z`_Kd&A$2136@X=f>|Sv=-+*lBbPL_pthR+23A4!MkMgO{#6CasZ4UMmA?5X0muwft zS4ePHphBfWE@g?E#Tl`6umT-hnElA>#@zIF&)x#DKf<)cmgNNjBQ`~fjj!~Of;aGO zsySq&sU+`h@J7QlsKVs!Te%Q`TmwuFS)u>6nrA@uY`b1++3Cd4kuuEFTW4n9u-Mzm z3m(I4p@O!m)8iX-5@^%P?|2`RmVl} L*hdd=%TXjw` zSI1?cg-`>E7WwXmC2#pzP%TRz6lAcl9Ia=wx<5HFyXbZ^(MFk)hlHLgU+C}f)#<)G z0oN&*6jwe!0cO&QCw$oj_EyYkd(^CXZ4;X2R=?G>OrE}?FBYMFRdTxs<1L!Zr mE^6lpYLv^6^3-M%Yg9yF2gA3 ni$&LYho>bzXY>4sifr#S0@~=8g-*ka4Aud`kPI>ax&{GJpYyHNT4(Cgq7r zEJ;(}UM4jCxvC}{n9n4~%x=+{QZFb$4|@JbxbcRQ05c9Obki=rC+Y^fMOMn$5l0_X zv{AN+F%f6Nl0Er_rCDBx3kx uEV*Gyn?5%Qn~CctZSNdUl9n^*31=rP z_!u?nSIMtxR_j;*f=x*RuS7!$EDLdDs=9~%w%xkb0uO`|YWW2C!h%CX9Z-h3lTU8m zRb8D^R#sM<*OJ#*^k;QTG~`Rfp=~5ngyWPnn=}iHq$GcB1S!S~57Z&K7y0eEG OS zQNfu-F|m=wWhdXA&~x)Nr#Y%SRa-K%fAu@CT82hM7A{jOTsLQT9 +lLqawnq40CeTj^G{A$s_e8-TrHcHd?qWaSj?ad#Z<@YqIbVZ_x z2p8sE1(t_$3BR*``MpijMK71L`vn}aS7`Q_QAooud>pO10Qx}5#3X$j+2Ku^rjcJF z=@Dtz@{W?6OQ7|jtEyw>blm! N6F&$$kn)J-w0OnD9`KWJMba>;(-FA3mc=`v) dy_*!z^NY7CHHHkot$wxN$uN 7Qj*JdBkL4>{p08!w<>Q{G zlUegwyu~&}ZBx&-%S~^7-Y#UqV={DMzn$-z8OH rs_rx`;NP5eu-LvGL zs~2|^zTA6k(>`}aP}*wtG9_9HLz1@ttCrpt3@Zy3foV{m?c8|_5Zu&WGXrbAboz?B zyq{WO;@z5QPp=jo$@Ai+;&1tc2W{q{y=1x~R?l4p!?vxrflUh4@d8X2pHLkmP>gkM zPCj4lg
^Dv#7WO!2$)we&-uuxS&ex z$)ZBtS}(k^)e6AT!Et>5#^{M5gxEiH;l_AuVHYSxaxZMJt{|1_)f*zB+3An!j`aH3 zg&HO4dTZ;t>sDwX!HBaajYM{045#y4R}lUW#WT1j)qa_GfgL$r{D>YM9jk&z0DGR> z5e-dZG(iOE_%|?8^rkv&B=FwmEp#$;(1jXADi(YEKla`-EXuBJ8&;7J1O%iT1f)^A zrMtVOrMqQNx(1|`?(XgZN$IWuhLG;=;XS=>uls$z?fLip{I+lY;4IHrv*I|8b*z2g z7gNAs>d&Cv1kO`?&)p*r6R1#{aoZ!s-mjWS1L2IS+WoKyIOMSaBPw#qu!f0|yv3NT zlM;e`PaYD$V@=#XE)MK`zv6lJ^xfgXg+CG5&g{?AvZ6-m&lDTEzcJg+$c(YZH_Kn2 zN(6OZV&R6n_j7I-!L=CHSwc+xu?~$(Q4QWGTvGYrS3WMUQ?-c0Vz0ZNtSS? z3);1Mia_g9)akSw0?HI1W!LWL OV`=- ia554QLtX}}Up3h6hjs=` z4=1~9nBNW!#ftf RbFw1wLX;n5QTyP;btVFvlyqNgscC?-Ye*RWy zs5)IOr-cPuOw48-j?2v&J8PtU2ZfcFT?5%UwNRG{H(rjnPw2R`xpuZHS{?q p$H 4BA=(A>jW=%n-wq#ky_pqpS<8Q W!_%{9x^)Zcc^&mh z;-&NTx49w*Z1&dx{d2I`N>WpYf3U(Cd%Aa# ;i{dx+voTh&e9@Rv(O%D5`uj1{a|eew0fGzrIL2R z?!`bGZ2~=&>Q(Mc700$e13Y9w%29hVR?CP<=lmI##Y } ko;2qv5*o0XtPVwwk z+Oen(N*CXre ?xl0WuJjvBn$B(ioEeNI=aK+3 z0g{Celr$H|+~o@TcV1d>q&grqr@&7W$a6MWOnb+%Sx+CtUmvy`JSi|!%RtxSxOF)P z&F32x+g<(J#9_psF=g!*l-L7o? TgKx80*16Pz>ZW_2|3i3P#TKa++si z%Tx^d%8HrInMl)`^GygZ pp>Wt}_~ zP2a_)%w75in(3*c^Jf>dTL7tZzbZdlcz*}q#A6>5@O*3(R2R8TujN2H^a&FiN8EZ% z^*4P+V-DxYeibuPC>5m63cqX6UbeWuZo3yC#=-aQ<0x N#D+()$H`vr#C3kIiqH(6^E3OKrK%s^OnVE!dOwoUFJJ-4dA7tK z#FN|%*sz=iKHmMx95;Q#e?HQ(gFDcuRn2K`YLb)4qD4o?|4XcOn+|AFIgKzTP9G{H zBLk<)$T`f~la@-WNu3OLq0cKHxzAcmF^T4m`p6+^f =vnhROH6D}OdG!LpRv#v!Ys~SPzWZH| z*+aj3B;7LYJu`eNysv9((_>fVMR(KHQ&=7^!D&RDaK~sP&UrMg-b&P_pD*=i!L!G; zWMgHovgST2{6RH^y6ddEq40R(&O`=B z2)uX}@9|yM$5Y5gNqgns=oV@YFOyd{=lkr-cXq{Qa-gmXz1$IWgPG$&i&Z5ZPzkN7 zsZZ)qp9(7kEyWWyIyK8m9-Ud6Q8YZ-vO!0-vGp+GP#^XlBsv`e_yDzE7RP|m*Y~pJ z`ZdV>aC#ORvZX=x5Vx?q?2E1kdXw9ny277df)f{x&z$LgJvo{(F*(qF@4q0DQ-SGc zB2+S|gBJf 0@2y(|9*~(s1ubgl z92WPmEY!5z4C71z8MU*sQqaN<5&z|a79I=ScwMP>@M@p^EQ<8brZ=+5eQ-j^SUzGi z4(=4P=(nz5y1s5wpm4VpfVoJgNBV1IL`Klf;<}P@iiMexk&!tfA|k<$-wzJ#J7UQA z<&y}4_Ly-#so-Hc7%YuKY#+Dc^^A<}?M X zGnE4tPSJ&z;0!Xs@>r>hL}p0)@lPtMV&?-WO>j_fd;NBh6uH-!vW|ouQOCK<<`Az< zpc>&?yPv|WHRsIxJO`hP{q&d^na5n!pnIqT1o~mHKx^_k#o_wA2KNX8S+rN%@vb1` z`_7V*?(|ib!8LED0tEB;X6Q6y{>bC$Ii8IVhu@i1qzgg}&+LY?_dmWq?kev|T(Es9 z#$ a@t#FhRSV*3=4nNO9J6Z;#Ui<^3mTMN^s98g8*aEwetXEs^T*5W>XnPT z2h=&KE!S&R6vF=5prV$rPC})A-;K{+61TA9H`h`7sWY!&yhJ^1Zsa>i$a4rhGt0FX z41NXsFeULlU+c4y%g!k#BD2_SLcYpuc2KcfO0`3KqAZu~T@wSlpm!Dclju+!GHW(W zS5n*4E1C&65&;tGdncYWmdMDO;G=HPA|>#^L_Ax)TVdM6DkR6i*tIE?Pb!dmKgfCx zD^E-^Wni47c@w|61-%G?($?0yH 2p{0sq~x3SUDm>QOnbXxw>D4K z3*T3tgk kT2If2Gj8VwuVBx~v*A-|Y1maCi!{ zMW)e Q$;y?%j;YZHcZX-J-!zH0vvL%>oSlkwiS7_t zS$Kn$e~7Wr%AWRRbx8prIj{xl1fm19YA?|*vcNk;1N~ei^}=&^-2;{=b#dzeNe~@k z!BhxvNF!nrMATQ+Km9q`>tbnh$v{t(Xz(d)*T?-pz(9Y$)=#?z!y`UUvQ8$_x`eJD zd-^sFI=Jj5=sH7kP`LLAX)+J3XH-Z6^)xS4RXyqVmX4g>)dNEjQSIqY!I50Akzbna zaw{QNk7$S^{1fMLgA(iR5p{koJeMAwt118TwuDtS2?;D;Of9FIejybCGJkNNVD|7{ zfL#_%Erc{&{-yzUB{g{MgSjz@_-d=GohNUPqRDvI82lWiyU|#kbae9MU>jf!jI%d^ z!M=R9+E<0!=!83%M|W+p>m+1^Riua6q!X?mZCf6mR;QGA0>Iw{qL^WA5RIKf<-(np z<^N8E7iW~k^!cVVUY?<^dJJv~o|oKVmU0Ro)NYM7>p^@%Kxffe9`a~}E(jVNKP?3a z1T07tb}p!WQ`oH?FZ(<16P~GAAk_t(;OqHi!+H ~ z$UpbF>Iw~K@Oyn8`F)Z=7qv0mn!=*z#T3M|fbEc%h}!$rNK-_kU}0` +AD z`;rIDHkoeE* +T!-h@r80eB4)Mdm!kRC3BfbrDm{-kHjc$eCvKJMV z!0)_f4+Uc@nq|}DUPPnZjk>5SXL5mCSD*z>L0ad+4=dTnC8nk!eGMcR>-p +5BAsGmRcY=1Kmy~sL;F`Gc64T L HlEm6sbNC}GOaU(_BzzXEukuQ!xe|){P#CW z^ND4JAv1ycGkI%tWLQ(+$d{6u)vfoG)rBC<$lYY#;XgrVl=DPkId;y%F0cr#S29vK z0-bM_{_e4COl4x(dr!|=vl*YQYe Oe+3(NDDQ^>c^F};fO(N&EDT&}+aS@&CtzdCu zBCe62Oll!9hi|1#l0X}%ACuU-;S)T%`^^njCDbO-JnR}A$IJ8P{(37G%L#T=FlFq) z=HEs42_+9);rkr bpU}7%(!*;TO*SqNVPu_gRv4I( z_dEn_#QZX$zy$1wOe-ywN8WX~6cb@s(PXQksOU* !4LaO3Lr* zp?9x>SmMqhHmXvQWK`bAV=A%No=KbSu?zF@XmV6j*(zY!I`Poc(#-JXgmo$P`%kb~ z_toE|HHLyMlU%Oey%HflW(@^px^=k{<9BhjK?-?sr2OtQG_)85W6}1Jc~vY%Gcdap z-z$@|n9B$6%N;TBY4xeb fKdxqXs-@=`3dX?+=gm?nio8&e&&J8_eG|V$LnK@n(vjm5z4OQ7SF|Is^ z7UF$WXGk}nw! AGGSg!zhHDq4OWwqy59`3&MkPDZ<=kS#;=oD zHOvcRyZMQlIi(z>1F}ACPuPG5@E`~CQiwuUNUvJ#>X+l_>J8McsxCG3uOAlbBdj&? zrbSK*^W8v6<;m%7Q)w;giKv!wV0%3H8dW((h3jgBfAU9qc3t8rrnmk5F8Bij){=FT z2UT_kujrt*;N9KyT&CjrF=ZB3?(=0r0ItXA2kRnySxRG>M=*T~-|G1KU}$je|9L9q zHS@%of_h4hGqJ`w!$1&PVlnP0q;ebQL`2vIZUKaj>EKvr*(|8yXL~tkN%6o2TU@0C z9^EcErOsp2^W6lwFh}H~`cxDAF)2xx$Y%I0S$3wTiYEMQlbm;i02h}uce04nx=vTE z&4}5A!=QPra3)lx>|mU6ySWP2sA2+xwEWSW-AKKgC)}E|>ow6!vGuh=Vey;8!c%%-;Mr1Fgr&bO8fT!W~c5h 4n)`mvd#Tk_LX0yhf%nk^uV{{# z^HGC#)`AAwATnC-4T@cFLh| YN#;> zRJ^tPbi~4|lUiVk6C+#iD-;x3QLf(8@Vlg;n}z1^mUO63gun(^!W>oRuQ4zbpE@7h z%YT!cu4m4{mLxhw^g1U4cbS(s*Ay9=UdRR9ShcwC{tlaICp^%}BN0?g`Dx^Pq2TFB zV7D1tx$6vCtldb?3MfLM8h-tu#eZw0puv7Ayg#2Zlkl*8OVJ7=$}-~zccx!Py&cY{ zRZKxoSZzzbe3~~V7E*Mp6u-|5dK{93oI$7XqkI c1QF4V6_ zL^Lj@hLdv#E(=HOqTD*nYP&3_j$P)pKMW{nxcK3R=Ovj%Ta1hBE+93$pNM{AI(bv_ z)lNOdSgh+>v#iVyX~~g2!GNJ%Z#b_&CrzV?xB44iX7d*gxx&|0?)~{SZcor{i3-&< zbI6In;;GcZl1DMrQhBjO(jwrwIRcrV-&}F%>9E8*n%og(F|7d-=669KNl1I!P7e*b zceU7ph1D%Wajx_zHHk1SiDh&=29WhIg1V~=_h;*-XIRgO%z}+wJB_0s3+^M7N-#)& zGo1Iv(QPj|WO2V0YNXr9@YR^LBIVm4KKIz4Q?wQbCR&Wf co(k1Y_!|)RZQKt{m5t%lT?T*h!9 b)!v5*8`cY|hut}D6sS%s1aZ;7wlYJq3izZlKhN70f|<9WOele}!)E+3 zMtxrMs!FhSuU>u0R%Z5_ql=E!;fvmE*SA%6z^3 MSgo zeTb{Lu1iuK-k!wRip_VHHIO6Km`!D)Xrm5ek#uX+gqG>lB LQN$I=I79>UUa^P zKkSQ=^4-r!+)M8iLPVbfJ8vr+q!{DIdsh4EpsO#}zpt^pWZ8m$3jIj{^2nGUh%vZy z+ruo=ImHq~>h-||O5^4D)2xBqZ}kkb<=^4r1KVg7_LGUre)Vu?;`)06E|>au)CP}( znr_ZXKoTM0&C7!oO07*n5^v~1mdAq}E~%aL4g2qrmb&VR-_mE^b9P}3s&a_y9jqoW z+ARMFTH1OBZmnh6)$oWxVFSFIP5#;-GoA1$CJ`JQx{++_OZimC9M{=$y@rxpUc|zW zl!CDeDdUnkG0VftEmv1?gyOrvJ4}*93l`6n&bv?ibKVsx{hQ;N=o_r?J9B&cbPnXc zhsS2Q U%Ui0lOa?t~Ir+wX4eq#Vk{vt35XydCvxFcWRhw zQkQqc5kIz;0C~;*L$?&q^3vQl8>7Pfu8Leg0>m?&ucC?}O5$y8;*guZa1F+vMj(S% z=pF|s?QRUFCBdaaeo>$|KH{HSlZ}OM?|$bjwKTlYXj;IK`=;xsNNN&houXCvoyDm5 z+8vy)hq?S|YKf1=a{ SLm-|JBM4O#YF|1kXec^|LgR`H17Egu{)6H{3 z#eu?Kt2BXxn2?xYZZMLs)mdxx_!1K>&zcmxyxiu44J_&IzMd=X$go)T67CiR*F0o5 zXPIf|;mG9H3|cI0J_?*T?42X4ulU^V^a pWE9R5Msp} zJW%XnIl77ey55#>lz%7gPIPxh8vRQ3rV**WQ_4LuR^nntL0I{!s>`q5F6lL_7#Hl= ztD;V9rG7=8ODe?hX{xUKQ#IpRLVSD>J$?{;|I*D0o!zj(W2$(XA*IZ OvO3ieRP!pfRFL{I {Nk!`yXy_~Jzgfo0Gx zk>zL}seq@nu70*&LwT0*Pw>e&b;#sO!IB( !!uOet)q1s&2va zUVA!5Y{opGyRcj*U!7al6qc)-TqP*WNf(qQO{uG_{Fb~^Bxs#lDr(tvl85N`xt^GL z-u*a(Ok_R;rSz<=L~lUPf}<2N+z70du1R-EOU=Qu1;p)l?m(hNcV@)(V8-tDf!#9- zT4$=~WmTlnmsPZSCD>b20LEvXU}pO9$TM8g<}SZI6cV~&SHX#!pEKi4l8 z57(~U@vDcE89^_cnV~uurRsM~n$pqA#bGn{b&uo>AqvUYXQR;bA)1T`C!7o>qlKC+ z4Y?$imaBCB^|iHq*}I1;gsb82rUvd~nNNQ{5C-3G39}vwdrBMTo2fND)a%jto*gu& zrncT4 $5NEY-JF8E)Vb_Z;XSvjG+5XK1M3Fwo=^ja* zKpol*9v9Cl8d>^SZ2=gJ(bw0e-1^bxuRx+^Ib5M}she %! zLAL7b465<1S9rr+2EQz`Q#keR(~Y65#+XC-G{mfCh1d(d;cB+u!z0wopuvwmWaE2c z`OC&UjnVwR1AJG=#5i(tj9v~^?>IS4;1L2 q}OIhiJM5k(J*u|Vma~W_d^yv%V0<0;@?j1WdntQkj zd5lDzZ+f^hi=YB(^S}~6s{2u4ojiT9!PdJ56gxePTuCF9)3L(*6B&5%<>a>+hlP*B zI+s0`8%Cckw1iB dqgsdnxTSTHM2yTIPqy<+HL te?@IcbSS^Tr%XT0tpI<0%l)Q`NKVtDAgRx))HHi z$L7%d3!F##o4#nsNt5N4iqD7``w_&iS<{9c2fCHv_m bEXz!di|%{kx0EI+J3__Z)g2(BXP-Q`Ef+7? zt4~m5?*QcWXM|g?jEh+loU4bP2ty{X3kg+0>n;&^=J;%g@VkuV?o13WD$!)*cx<6{ zkz$?a27*(rC!*I~(Kam?W8{nEZO7mV57>KKsP5&4Uk=Q$_;Edx!$08nMs-?jkORyo zf(zrh9!Vc%6ya(P%t#TR+af;&6*af4I+)UlEjsu+-&Neg{U&N}49wWvyuTl%`F1xM z h_o5*;!I6=`G{E80nh5n(3BI;^{3=F6legAl>PNSxVCB?N gl*0Og1WJB9=+dypz2GU!7tP|AJG?F zQr=&XS)D#RVebDaO=a~H!}3gjtUt;A`()Hw;xJ50UH#q?{!F*@V!B6_iy=xGw~LQI z@`8&WtIu2+Qk(cEAsI2qM fsY`{b9MqD~f#{1j(l4@WDcb}jP}%8Ql}Mmc320QkqaHAaR3YEQH~#%4vb$L^ zN@?T6*}1 Uhy#;Y49M6rVN&GqjB^UgAcilhp}LHYHye8~1`T=lJ)6X1 zMiE>p4v<=ty*YHM{L_M9J13nK1it{|I;ZCxT&>(00nW k z*&MoUe}LLvyW}#dVA>0AIowFXS4wtOi#{|kGHmo*4^}w6cc q~xe`} uO `vX-?!r!+o5h@GYbOgxHj}cO9Y-A^p&L@@#P-E(@$f3x z@V#`*j4*D_f(W$8X4Ejm54yS?YaW{Pk)Q$>aTn ^HMPRmH>y#?b4(ENzbgDu(l*gRCJ*+JNmZPdm5pYB-@!V*be}_a1(qy zJGhB^tX1IEw1z{oS-Ixyg1R;2$fo&oOYNU!-OpKhIgI^?78mcE9ks+Q1y7x6Rd&c1 zE+L^p1!!soe9Hpfd`k+w!@M_ctFXUgb^_3F*I&6SIkLS}<>KbBrwdAKx27C}x!UuX za!Efp80jJ3jkSzb1MT0%k@*iP0A|IYImT5K2W;%v^c1=m{HD-R_o);F$DG>V-FU~Z zEC3ZmwvY|gb8-Aa8|DXLDzNJCak&mInGS81yqHW77qaf!ZSWM=>*q9{I522IpKEo4 zE=@X+3#}z@rTc9ZA0lM)HbvLUxT~w8I|CT^P}%%VWP-``n#LG>#q<+lFtuy_}mUR3FTKe_;};a z0Q*$!>pBqPn7`OFDO?eS;7Y}yD7}XHJ-QaV@+`n<&Cj?%Yh$C_g&7N_IKakz<0U)# zYDLoU+m)-fKddTq=zlW6X=!J}yM n1 zTDRd)%+q>HHBABRq<&dY516Zj@7*1y2-?g*05`6ijAa^HsGuAqnlo `XVN>nViJBo&epVH;+I~;?GEk_-}|$=Qa55kNw}D-r|P`+AnQemyKkaT-McEr zXKmMlA@nBj6SE-&t0e7g?@}hfPVm|`GUbYJ0_c=E!%Fk%+ItpmHENpb!YJ&VWT#km zSs=bYZIlL(H|P#$LNzpCpXWqOG(aT2uqMe~&C7!V%zO-BzZ`k*K;5MLX=(i;>jLqN zpBpf(Wd~)A{MMIjf}?$Rg;`bg7$j85yJPUp9=`_UloLM=H|*tBd`btB80F{_C^!ik zNme>7Uc}v^m!$E%U!=W+9?a-97=<4917assi(Qq?&F+V}tpof4%>c)h4tMM549CgF zs#yy&GZvlOlR%k c#@vAb1B7gb&bpf$GWGFYFjAr^qZ%_y3Nb=v_= zht(p|7x{{Ak5h{->i$_|O?-Vy4MhK!h6WeJ>zN&4i0fWfSXe^)ba!`<`yLkOZu90k zoipw&FzNfWG=CL0Cg(M+S410RU`q?$XI2$OIYu1twY-{Uv=-+?-_Zs@kihVqLWlW# zbivr_*NSdD!nuKQwFTtrbR(_nn2Hr}k%*>K38vlV7<$qDx}cGxwleEvUy U}eNrv8<-eEFURz)0V+mnx8kuwwkdA!J@f=oTEu-vxPEvhM*W0XM_7aW9!-{6q( z);v2LNrUgV9w{CX*E-w^@N_{zL2mm5?#CUMNk)bwIFtICzhtg@OBx{X|D*)~=4lxh zK KuTk82AKIfLlV bae(hnVs3jMrM$CzXs*z$kJJOU zCflwSy)N}{9}=%}1+MNzt@!(t8tH|ESQr`ksn@Bnd=!AGpwQhU`ulDzrCvZ|p~7*1 z>zXLWI~jZLIwtrk!VRNpSj>8n$Jor*(+8^kO-uLN7N3$Sw7p5g4T=UkzhjtgKoEdB z%Bdrh%)liP0I;WZ3e>Wm8TF=t^K9?|Ad#Y;643Y*1J0SUPO?tH8W=N9$Dy*B6d6Wc z_a$!@E wK?ap zwY}xE81@z?*`O?yB7V)WPqbRL1B{}b&6FS+NoHKkU&D-<8@Bq77t;aA=i6S>01C*A z33doSxPm`;J3N}NXNn-?9^AM#9lt?KP^r~Dm??wi9Tb6bIFEX~I0Vkw4{v|y-gifU z^0|bKJcQS+cw0wrZK}dBuY=S+)p=pw=ca>}n=+<0xwY6fce{I81Fl@4R}EtiZO01# z336W;qZHx-)a**Zy5S;i9l2=^>b&x^mh;) ~0b$?D`a$k@Z!alHi-qhV?I4}So9D&NRfVaZ zq5>n5F~}7l74$YC&inK{Ji*A})_BmSqV0O lyPa0iMY`yvGaNWH)4%vG7HVAoZ!SPkLbq>9wUg&Kg2y)Fx)k=~U|)|H zyn!rh!h185p|%pOe&ye~ 73h87C@E$2_mLJ z0qvqW=+#s5rx|{JwZ496Z7l_EXWaCk&L;@){4zsn#tyQHrm%n~+0xh&wc&1TB*u7b zP7zJFGFisS{P4b8`n9uQK{Q7GrHHe*%t0k)g2I6900(Pqs*@K3Wngf?-(QT06vG7c zOrbW&`@`W?HNcgJg>n^zK-&KpMue22qzsR)(b-*xwLgW10RItEAK$p=!A2h9dUM(x zlhI#-*UlF$;(&sRT0bR!*wEoS2@s~w57TFcVY!)LQ=%?W0h~dHLSOX&zO^W4B)t~^ zI2LvAD1IfUNTebOz;kcduEYZl<(TV;U2lTTXLkYigdSiWPUfqW6_{{z^>41c(q-zT zY(AY(eU{7zm_+~Z32cMP5oi8{?>0|Ln6G^1Ev#? NQ# z7_w^DYgwObd^uGIc?u+&A;AiJyP?&w*eA=x)ZirwlZYTx@>(VF4{AV|wm$i!EIYh< zB6H;<5MZdTBiV@MNB(&QAwaB4#RhZ%tZ-&Q%T9{KeqD3R1Y+YHYE>34E8GAXIw?V- zul7|5#j@Q0thXLVL>N6I^E-l n@&~DW8VNy@T$YRbmp%t zb5loei@y>AZ0O3g`PMQR(ew?#e4Yu1nrzL6T8C`#oO6GTce>Nt0D#rPs$K)SIefyi z_Lu1NoJ8Oaf=;X_g#;P|PoIAI)!ow|^Ol|kyF{jn>=hqLV9fl;y`t?hGQe1rXx&S) z5-WcIGB4s*!fGiQS3{%67jHwZbo`j>F9NwkVHW8TyHnW8vNr&p#iS;P?3y||TP_@x zbc^n@ld;MtPfzs-f~xV}@A9;Acj!;Z{S6az(-gPYdm3_8lHE@HUv;)h6uvVO*c^(= zCi)M_><4pRse!stKgU)ToIo4ISfrwFhVv(0iX1#$k_RB1zz7C6yB{3}c|5pDhs8|@ zT*$e(719*58nsdg$&ARQFoKsdA8TdghnhS)l~oi;x?Zt9&1)I&v@!90R^xcsb_(q3 zx$Ts*vNEzTxK1UUC=Ng`cX2OT>Nkoe;7_FIfz^7hn-b1K-JpQqvRiuPF~E;zD`Sx^ znVuk^esWD9Fsh+?9(-CITOF%fL~nO^J6)N_!9gYP=D7;`XM7!X;NZU3EovDd65_#u zfq>-0s0r~j4F)wY6@x53Nviv4VBGswdKtD?JVeAOBtlPN6wi qQ`%w~REDR9-8WClAuL4~1y4Ybv%7X? zWYFX3ESiVx`38cD9UA+4o@R=rtCqM)6aLFVwJrFr`O*osTjG1B$tt qkHYk?)lW0; ?Tw=1GFmEh-Mtdg%f*94&u`+jCOw#V1XtB2qNp9vkzJ=WDlnB9 z;)5h?y>^F=>ZT^%740M$&5YdFX(1e5`wm|oFvr96T{lC}iQVHW^D>^!!o3$tpP9eM zi?g&oW3(TXQf)kM$(Td~u|h>1r_Nj06LX)c?u5YVU^94y!%9>+IqSOh*}IYwUW87F zVy#kc0s)fGsCkm#l$VzPW{VnfG!yi^!8+xwMJ?BKLgkNS(DL%=)H$Fn!heAi;$`~) znBeehKyjj|2GB+U7JgKJ{D}>{)9#<9)Vkkf=mxB$U4t{gA>K0wxa3bw{;0N?;%I@| zEyx-kz&2+W$9Lg?& tjbF+ObH| zz!F0*Wop+U?tAVeV!=IJPpp`@1HS_W!$_o9vsK%$j5k}aySr8v5Pk>_NA;Bm%F5QS zn2mr`zf^_D=GB`n0RlNQUH9n=r&C{z7R@XH4#-9kyYPghOkSbmf!0X*k7hWYl^c7t z(?jLMQsTM|JU@8Wqgn`g;jTVso@4*v6zdhIU>!K2aB1@$Bsggz^J6%RG=3=>1{a|M zFFrf!*_rf#Cwu?9&t3RmI#wAy^;RfMaCP`8jaSccNQm&T@p^yAul`re=*fNH+D}G? zgyPoP+H8Q9Tw2>&+ugR&S}Fwy6(9mqNT^^MM^CH2N`y~7z241d`mplJA7G2nMk?uV z{iBHV F#&q~0Q)WR30 z3A3*qPxYVt_^Y$EqV^&Ei6Q`hZTB~EnV5oTBPIMf-~;$%RvEWWwVVijH=dH}K#BU0 znTV|6nXU!kKQlj;DHcqlCdz_4{<#u3Z;t~|7%ZMpmJ#;89iJ4o#v!5*10wolZF14C z+&v4gkH(0xmIRpI$CfW>Ye?8Ue^<7~6ZQArFPL4`rMfv-!n$>m3e#XfD omX(NDg1HGGl=i{;I9*V>woX#oxriwwu^@4feg!7pB*p`lJ}=(qP1g56 1mhl77=%fJ7uwez4 zT!u299Lm@Esg!|{<-dnU|3(3aDi=*R;j?mdv=Rd>Kjg?26b?XNV|#FrabVzYgFWGp zD1M2=ARx|VW2l*ZZD)W&(vI*P117p-LoL9UT%Mg>n) C5m@Pz$`4((pb7by=Qpi%O;>w zG$lDA9siZ` 6MgjFvT-(r-cOH@S1Y}rhCkP`$Dv_Q;)QBjqt@c8tj`_1?o(nS@be`_? zo`oCg)5iICjutEA=fAq|9guBdJ$O%CQp|vU8@j!{#;AqzX%}dJiS6hx52FH6Ikbq- zq0wLNr)}zJ-)E(#(M>gIR8X320t@P1svt@3uklVewIU2o7!s6xykRiDCV6;AJ 8ty?gbK4` zoJS0hu0X_!hf2F{j^nWlZBF(u17bi;j6bYMSItm&L4bB-?-_Es(uoMLJpGV4V;wk9 zmAD(zDaQD>Cm}z JT86Wd-B$=Uv zLxgWlknM99_ty@rSD)NOBy$R=y9pw9{yyv)d*(3AGVS#OakekjKjH9aeAaM(-Li5} zbce|P->W!K4YwoJHHhk#i95fp5(}XL@>{)nT2TP!R@2MI|84KDzqa7XZlpgcdQO#U z$@D9SCvIIyodS$czsi 8YN*lxfw(_2Qhkoj$ihipeRu;cYF@v zw^1o~gkX@ZjrIZkyr~<{NYZ&UqWhYG@Xw$Bewz;oe3HJdVSR)`(vj2&m}BH;l>h#i zXWMBv04e4EiN3_&qOrzIqs_YyD}TQNa>BrI?p?xPwErFLU_@^-(9`D_kf&O&|6ar) zupM!O20Z44{-1OE{(Q#1W#VuCv6SqNZhuGrhpsR1BtJkN>am0KKl i+*7NZ7l5{QSU?H>-xr|pNj-h?JnBQIH?yhq-&-j@ ze96aB2CM*2rt9C!lDWn>pWy)e{t-)@m~H=>_JR-NPk@u#E2&DbhDP&6PXAtfO{>iD zL4m^YNkL=zdkVk5rLTXQTRvYva(ww5<72dT0^6Z^$sW<`I6Xo%amv8hghkNLa7Gn* z!Pt@VpM4o`BeDy$Ru3#+-H${RbdFxT9pmf>)2Q%W>tw%vslvm9bziQPdGoee^WR*+ zF>A$XXNB2x uPp$o4Su2n47U zX$)wHiBbn?VD-Gx6Df60;2aEphFqY3!;tPMP%st!LpBd@fj+z^TDA<&@7HU_3^MXM ze@M*vnyUT28qN!l #R}}RC1rkJNex(381h7mWA{90kwo%}^$^zF`$8U-52e^D* z-Isqjp4Dux?i>vtS9&cre!9`=@Lm(^3E*>|ToQn3H;P{v?x!*6puZ~(Uk6}VFa4*6 zs|ONB!${TB*|E%5bZ!}k#xYfpvRvb2R7jW1I2d$<0CR%#9KxO~dOQi
SRYiOWe zyeE2dt$~UxOs#1j{$-^CR~Q3ixU*7V;E8BsLFGz`bw4tw1=K4=XWjzWpPWPR^=se1 zqYCIHA|w=&znuk0PWu2I`0uCV2=M9uet7~xe)jJmd-CL-?Ek;%pO*Q5*$|vhJMeQD^Gkyp)^mV9*xoVrY3-8{fhe5DIi;8a)#y46GTf7U;t=f7KPDVta;l&+?}m zgSsIB8Ce^5PREn%^6~T;CwD8B-KPosP2%$__)&s`DZuO*(0YHZBe|1|(`h7k11G)b z_`*XIka2RfVyR;iJD{~s@KpHE3=T2ZD3$HB2w&SM*=7ZYzeQl=$RRY$`* a&e^gS2_)I$~bJs<-Z`OHSZYe!g1w2wK$R wIb*cl5e!$KC9RFwd zTiu}6P4ui--V0n4RynKXe|`>;yXU|5%KOIx@G5@ed3DdC%yS*~tI)FswG%U$;CsMd zI|g(g2=n=0F;U>lwcsnB{|@$*D`1ZP`}yNe{y% %xqG z8yV13o(Zk;{#5hX(dQDFv*@gFcTB-V>7CY!LAI~gf*tx!cAtn^u_{_Zd!U~$1}Upg zwW5g9px-QyR=iAVCg_r!=7ap-SyJ&+%v*F)TlVwAUZ6>aoIPG;4%mYoN;egA(RziY z-gCcvJ(w%OE_#FS{EI!qMYVpE%u=I10(6Vhu=o9={%q0@_q5^OZS F%ygznkMmC{>eK+R9s8V$rE~mS`mm!Bi zxcRkAl#jlqO~y+vmXP a<>V%;<{Cj0F?n7wQ-Xy`# JVhnjYU&g>$(oI_5wVjl-?VHEpv)x6}_Ms1G z`A`=9R^S~N6$6BieNK^;b;~>n7NrH%Iy{eu0jUPZOooG`{Hz3VA?)0k^*6iDLN}uY zo1{0t-z7*64?-S}H0|%OItivz7TF~ivC?C#HyNm19-*6RHw(VDgPUB?vo0af0ZUdP z*+GBnuS= aMoaS#N z?@{BeMEfDw36eVW88qW~AtC5N2d(0y+)UO%Nk8yAeSFa2c}A)mvvpK$bX=q)uY>s0 zA2Z4l*`w}ecaFFEn%MaNko6Wobv41Z@FBQ+a1ZVW_uvF~OMnD|26uONcXyZI?(Pya zxRc=S|0dtP|9e%BqJXoRJw83FS9j02k&E8n8m*iTt*qNfPQr84;>Z_3r>VFw eOZ{A$KDERiE6{KATP_mWC}Xr12|9{#7Pj+!diMcg;Y@NS;*Z<-`eKp&|& zt;I}CFk1K5!xxtD;qRsF7fTvr_bYYLjjd1!(o!k9EFuo>wbp5;CIqkgnM;vTdmLsf zMAK!VqwvPy!@3VtGnRG-zHM_U;UVAcwbO`l%JS$b_1Rhs*&d08J4EREMQ6yB#koSZ zx&LU`!`dNG#wi5X=&@8KtKvfW-NgUZUX;LW{_?e S5> X7R6PNk`79Xixvm z{m}qzg9OFPg;!PW62Sz9PvI&u-By&1!3X_W_zOip9T0n#HLBfHbgi`%D0`<`w2JR{ zi@;2&3(J|(uEd8+AL=tk-p9yRAFGvADPzZjsq&_;OY(~-e!r9ghh7vsRaTA!v#8nQ zD)_BGB%~FAxr6Jh6}vBD)%67ufZGEkP%6@OvPMRs+w#MmwY%TPn~q#lwfH_{Nz-4b zEb*%6kxMA$vl<8_ THH)+7{@C~6(3a1OL5eSRM%bX zn5PM>i8VFhPBiS@nw^VS&mK^Zbp15bRczqNMJk{A%Zi>!J(8_FyTPhu38GQz2y7UJ zq`NcFuJ5qEL4uG2a4v)}Bs}5O$vE8Jl U zd*hQWB!^D6Z_tU?!}+cA9=d2PkC~vEnf}|7 b*)bpMClMx=cd9 z3!*2rZek*N7i0%eN(1lgtU;$APmiGfB$J??RsK6wKhk6=-0KD9m+$L2$1h}QbqE(j zj#+Zw&O!nR(A>^nL$FKE;mMzry-jHcXaJDjL8Ebd<22cj9{$Q)TNfz _&5Ew8rwi$N2E6kFdak9gv(iuf@=O9X;jz2)Bu_K=ScsnZ$>FcCLVs+| zZvPCuR%dCh7h7!M9#)h&o=MF2mE><<_A|RbCYIJFwcF>gUg^RXxu2D3s+Zv4O?3&M zwRRc%t;_LO+(#85R_UtO@>^In#bqTjzTDCIqVbE23fEi|q-LquKH_2LEuJzlW}ZM6 zEq<2j+bH57RDz?mjdu$`6KF@W;GlN|u1?i!-uMs-BNPMOY0EqU0h~khrvIh jKp_r5gyIb-UY K~~U=i`m!0d`8|=ql?pL_Ae?>q19==a3R04h 0MF*k`0u~Ucxr z1~3t?V)QdH;b;0bJ%t+(3WI zK7{aroC}-9SyIesUfxZXh~*ON+iXN=K!E^t{ZX`OaA|7Z+PND@*Ycx?(DZ`bFiZ_# zOEv`1^c!CQEDwO_J+!8csw($40<=aSVE7f8UF&fI$1~c$Z-+ zV`_1)CQs$^el{X@F$&-%Pxji&D!d{L+?HC=oGIk#+^uFgR4tCgN??u2 z+1n%wnglbTSb_hS3;2w>-46lWBqbi;^LmI1Yf#i$zx!fUc)mV5w_v|*NidSp($`ie zouD&B)wr1!U}wx+lf|$9 Z}fatyQ4WhGc~z=JAry?gq^E zXw)Gpb8;JJKB(^g$LMJok-;LvN&pZ;*|bWQq(2-lQt^fQ%@RoOES+
8!+~7)@-oOS(i()N<2%R;c`68P@0~s_noJ|G(uCNNnb<+ z;~WACNX({$(gI?222+X^mzDPo@?4g`7nw=vGu)p}{#{S`>+xEYqdz#!ZuIcEl#+mK z00Q(bxCeYOqfx4R+$>*l50TN#$vE^kEy9jEIrDRlZcC0U_ez#=iFD7P*x9#kciH$e zy!i }LW}t`8ZnI>#zl 2-Cig!WDz_<|76|CZx6r?9 zG{#fV{fe5d??!c=pyuycEd2W0U5cX#adP%CZg(uY()|Xz!39d_XVKZz$j0}V2)78) z){Co~Z3SjLzJ|WXEFfFth|o^D=`}op;ZBa;WZY397lPYePBo* ~v^!l;4T-+=+)achb*NI*B7x?0)^&PONw+akcw9=2En>BW!%KZEv=1M^%f zhh$37n{*KJbZi@7IM!382CKkE^w|#QBE@b=R-TOQ&l_>$T__<&^Vnx`Q;S%lx!K*m zqPMVvg`sWN5c=M%UoVnHhJ;<7&^)(i@ODzo;m2sFKyTC5c`0#-yEtXZ&jjYoJK1*T z1fJv(N7LS{N%EDbp9T-MtIN6Xp?!QqDUtSYp+Vl>P`xicxA$hSZXP7CjHb&Q2Qz_T zD43R|CLFS+&~dIl_pUg6HY^%i{i@Y_X^c6%Cz*dz){dK*J=HQ=x_ X2%@}1`1lX FT1S}Juv$XRmJ}S;3d2PW0rEr|O%D2&%q{#{QNDFs1lBuN6c319IN_MlzVccb zHxTf5txvC+Z)fj4^@_0!k=3kje!qIjRr|<%eTXQV;^T6`*>nDVzeamaq#q-E|BXQN zUhl15<_2hZ3ts!NcKhk^F}nKs@8usXF-zIF!gw+{SiAF;Hh4JljNv9(7|N7W!qvp^ zOb(Hb18@`Y6-2l)3)4T96z!_faZFwk7HQs_A+I{Oz~myCAtO)FwIBj%?+55meb?D= zB`VYj%Hk2^p*nxyli%@RPP)8*8mCCUCH`*Q@nfx2-vezyii?=NJjNO(7wrw~!G1q$ zRUk5Zp{!Ly>;z}D@5~odF8|Hp=oE>nJLAurFHS&|XXV$L$X{g9aJ8ukx9uLT7CE~N zg{B^z+1QW&kyuSvZ*53B&!ALddN$>k_vId6n+;a=Y_QJEWAiWGyHs}EZiqIRXXx)z zJcF%BbU8#LuD40CWa-xvz{0p=M(6eGHp$nw8Lu)SNp>VH5Y%0d%&+#(Zz m{fz=VSuwn+y(pdcM$G&wt$}gjh2WWB&PS)zL)g z2lO22hBrXzp5cGPd<=~I>-y4sdSz@2cjmt(U@ZM2C6n%Dx4W*j+xi07`QQ+#P*=w~ zI;Yu&ze;KBJsHMkisQel;JsP$iq9BremY@>a!$C|#zFLYrgwaZ-cwk0ciE% Cm#6z#;ExG2pM-W3F*HIq6rp8J70t$1AzL z;Bya`#PJ6-$gp^F<9^-V-JalKzkha T3^LCo5i!$(I?{8H=SJVi-NuRF^*UuAy z2X**xHXBaA)VfnreO8X%TAwuI9mE8B7BmNVlVt1u KOrR{a9CLXdL#LCL2r{INIp&l=PXi_w2K94lL!iuASVoe zHKAH|F4;0%UEKQz_ZP*kqOZYucp^P8A566+pzD92&*ULPT>EXhNCX_RywT>&Ab>T@ zW*E0Tz?*B}`6VRMQWs9R6aXkIk_jQI97k!g>^10DE$RU#bDQ0a1GmcJ2XLSc|Bl#X zZW9Rr)dT}m<2qM|e;s4n%*W1`Zy?Y8_|+it%G6V3@?wtRdFl7hyp#kU%IR%aG?06Um)B4M$JmcRpk{ZtZ@Np94T!G^ z(J~fPBo=Y3>-wQLSx@>Hh|w37@VvU#0JIk=Q)m}2zbt`xtaL(>xrY0M@xcNiL{HxL z%k>F`YFPhF119Eg1_LZHFF}O`GKo}IQEa?&3+w`gQD8xL_FI=kSAhfVEoh%VA*+ ZNTPvA{uB+EU30>y@-k!16`!YSBgUU>2ayF=OTIsIO(whDFxb)HU$c# zN6wjQ!f{stz{rn%+m6`4ycJuDL3&OxugpE#TKU{`A^i??=EN=d*y$#Voq#k7#&3JX zduvh0ySF*Il`M_S9?$~uG0sPKqDK@=70JbMMDXKZM}2=A&8 k@XfiRUt z77;mV&8keZd967Pp8JQTCDe&b$H7N>jbp*PptNg=-Y&Y^(XF`dQ>FX)4JS+qO=-#( zx@NTwU)c3tql6+UY`Ch$9d(hsAj5<-KAF<{1OgZ;7@=Mp1Q=>LZ2p(>(3etr?G9fH z+Zy*swaRflq9=Z1a*!q !cV8s*%^2bIYjw#D^8k^BCrb{aS3V0?OrmE{9aiC#>afC zz<4)i-J_aXAK;aWBGC{(F+`9+bzWZJCBB!}*qBz Q|CK z_OT5SaB#lc;JQhpIS`jNlyvn`vG9HQ#H{N&JS+2Anck6@o5nCNN$6UN)4{RBGF=Tb z=N+XQ&uJF#eSlLE62X*Ep;j# ^!`o8RJF+s6 I_YIu0>CHfH4b)%{T?zyqS#kj)tNUlDgDMK16v;%?yMuN=SIyYQg zO)<}1ixw{anmQ>?$Gt3pISa+@=OQR13GW|ImHc2U?mVBpI`1PN_Q#umGwgt^{q@ay zdS<|6WSrG$E&Q`&M%Ya_K~0VC=D0{8D@`Jz&ErYV@&2&=_wgf&6eq_AX#cfsO3)oD ze9Z@@(i%y1cDNZ$B-a3C@$JG#qum`GMY22(5nuJP_Vl `PG2ku(eBxAGw zMbEMO(Xqg1h#VWKsA9$K$EZXmz4jZD1wAg)F^7bNgjUoSGDBy_8$XM!?cym~xyf&h z@eXFh!_6=IdVF
ZYNt_S|G({7DP%cxGsys*a$$#(FJ}!x%Rql*n!t>3_L^ zTmhPQ-tP|T#_B!JM86=9?oOgT+kkV|M%FH`zYr X)?>2>#x~&8t$E*Th|LHC#zuy*~V<(;7K&})m#VVBF+#Z(O!ywSnD^;8~ULJ z-_aR-M2dqElya91TihEraoRnt-Pe6Ixi`3773~{_Lktadvp;zntikkqyejmPj>=Vp z-`00@jGD-BBzdA}+z6dR|2dPZb@dcv #L z-iD7IkTY&EK#1#HBKtV7Dw ^bP-shX9dI1 ~WBFpBeLXqC02a1UNU;?Bx#iMXmbz`*dU+6pe(*?L7P|@vNb^ zuyye40%wLS&&Q+CyIh6b-)Ugedy(&SH-)m=Jl0nu7x_;FFx9P5cF>fThJ^_PMH^{U zfJnt=)N@C!P^M0@6zrwBPyL+9Ov}W?FvQ#vtAOQg_$#!7Dp9Qj+e5Bgx`GoA+g*;~ zc{kU>Hb571^fFvKPrXu$T(_0M_@Z13W481 *hbROYi=K_mE|~JL@-FX;97d z!T*S6@Ri@5d=~)2-Vgui#ALYK>F8WAuwc4W!l?uqSGF^INA&Jz5Z Uj|^ zm5Zl24g(|Tz!7NsbYr)=Zgia1oAg_ V=oy(mS3*XAu`W~J`}34y?cthvMchl z=hd;M0Xnb67af4huLe)`+n@Uz>R#?2V?1z}^l;hCk?7l`{RJ*GMoKP=Do@<5JA`iW zz8kcC9_Z8ibyym v(p^++;Yojb0nt!r;qK> z8208U%ae6>2v1Ie;yDhqq1M+}T>RT5EHr(7{9YPW*I}2dSX1pa^O>TDTouXfr00I; zW_ZPGU0vHUbB9(F$9;Q Aq@7-5NR}Yu9D65LacPMw7u0*k~AX5y8ONfm?qad``jnYZq67g8ez2@wLCsceW*tx%t zo>Wl4pwKfhGBGkwcE;i?kVgVKRQgP8?19lZvtd3uV9~;S(|%rphQE(>Dt~1;2+95e zXVttwa78$IdpccJTz7YMKMQQkjt=YHbt?8$&*j>bs`hGXYF-)lpY!I^<@r{tBs(qK z8XYX1 G>8&}i+5~jIqlWPi4D>Fa0*bestZ%E9XNN_ X>YknwO+kj++$sGX?Cs2g`0uFqoXg0X3aMCD$RuY z 4;!&N4_g3^4y1O=MHwWh+P@6ZPP(vM)?Sb24eeP4Dc z@4x_BIwnh^g;;!HVd1(<6>atR_!!cytV#Wu3Yt=j)es9$4iElUio-&K3I&I+^A%>( z<>EnoD0NmU%G$1@i=V;FdMvnfH^dKYIfiMLo2xtYaLDj7CQGRZ i=ozFX$I@?=}*1KHJnoS!aJ3K=2b}|B!D{)?oijp!I5mnSu08Hl1;?4AT_jXh^5T zBE0)3ia~_8#L%MUsC%=UKB~H!%`2{-CPwFii}b)|YCL+4&EI>v*vUrDkn6U8A{Ncr zkxvpKL4=Os$+Z1+`*~s3ttTfZ2fyBRGRMO#p~dRfGp9R;p;wc{bdy`&ilt7$WW7vg z@ !8?#*EV`crt{j!?F20;vcgx1&L2~$LidgzbYC+DE{dG^v6*`~g zx!!a4Tc*{|0|Si;CQh_}luyfCi}Xg2<`1PuWFmpB_EcKeQ%ShF<4I(`A2Epu3+sK` z^)R36YV>@ra*1CZFWq-2Q$Jh@6F3{HlSxc3;`_&9>4K4_ #KyJ);)rDFmxH4VaFXOf6Yz^s2nt05#{!n-bP|wRLEtaUr@iny @n*Rh*_lzm}>2?*jjOK zGt=rk@d&&j5V1Ob{~lYu#k1$|(pcTSF?J7+?Qct(#A=h}9~e_}e$ZNOe!AXG-XI0E zV}3Lk(lqxB*qsV6zOSfTlq{R<$TqGz{|FH7yzHusGY&9Ti!31KQdLJebaSv2wsbb> z>y8)F?r#W>3@=PNLZ%p;L2L%ZtNO%lm=+Enl|#5Gu}tR{&xAH_1?&aF1^v~o#%+5l zT^gk8&8y9$0w5GDwCmeF53Z?3izCn>gN(l$Vr(=%InnExegG!UJG3_%(cV-vbfmaT z7-YhNl24dTf`bQU<~vA ~?l4Um&Er}u z9_Uo$@oVR+9Qz$@!`bWvqhn^C7fJnPI
48V(Fri5e8CHmL_HCJx$k zHTYBt(fFBg&CQ*QaPT%m)0KN_AgZ~Z?FJ!)1G)ak*3u{C!oF-}moGeAA%JHo`(22p z-As?mfI+=T0fu0G511} ;G}+U(Y3M9jYI|e>y18~ zN}YJtd#7t+b(vYmYoeQ|QI0C%ubm1sd6Vm7_eFm!9_8r1Gpa(eWW0Mjv*mL1PfVO9 zaNCzb1J&sqRu$Oyo(=7h)Kcdg)FUuL7LcrcUVeI|Jbx4gPuGNZ3;dXk+V|*eo1+P@ zOQVOv+!SZ^TCO!0E1rR?IaR7p6y9Nx+G-l>v?ixFdS0Av?DG_i-WEqW?bH0UAxTo% zQEwd2Gm6>|z6PH*?#>#a4$^3JD6$x62%h!}Y`GXlMP+Bwd=@mWxKE(dE51*l)q7Y~ zKG_J)$=m6NegeF4x`=B+PCB}}gOMQ{>2XTOW`CzEQ%DBzjUfT{rJe{F_3n!TH(Y6A zlFi1C%@>HTt$d|wAzG#YN=E~I5))QceOxH~@?xI!Vjfwdso+hZXiD*chv`MHSGs|S zUdt(X4u029Ph3-eY2(eG9xrm2|CCBRC?@GtN#Od^@#p>#sQ3vB+=x&i+krGW ApC-cA`#Zo|m_)9-` Oyr=|5F8BaX()Hkye;kOt}*hF z#p5oKE33Az{EdcU^N5Y;scUjcU(!*N9@~xjg!4wATPdGiv`i7W^{=z35`^7z^LItZ zBz4{mh6 Xf4RUN-YN~YgA#C&a@)GW8`H>peJf0?2-#i;;FXTc628LPa)OV|&My}i| ztGm}iA-o5Z5k@X_pQxhHEEeX==PyGv(_uTEzTze-eVY6#30#rHV|~{=mzOj%iNV|* z%r@oh1O;Wag;ex2KPkF~u79uLts3u;-h{0A@5zz?JkfJ60UvdZm-hl)B;-)2ZQV z4xTfuYGG^Nv ?B88p zw`qfHU9Z(qe+6 Z*x|4wh%Kiv?_vVHJk&(jGgoEOqNvdNa zJ9;E#k+BG&Py*7+?)k`h5~R9GbRfR^Q;zRX)>Ui~j^JA>Ka%=T2?8!Sv*4VJCjn@) z2+m3ea)>S=r4nasM6EtzSEWB9rP#=uv P*5MVITW0~Q2dY03B>NP{K27ov-`|p z>dxd>zL#-S) T2_s&`RZQp^TnF2bR-R3~&OJGgsr^q5zkcsrv zXo~KfqrB^;0ooh=fTjpI%w1vGqktSu|es!y&w$iz*gq} z?QuYz3kpWNxDpabq f&9NrBjbpe%3KnoHbCH2%FeKmnSH z&uIzN{)NShQZ7|6Ok=_cxJ|*nsZ5bYF^WWQl?9w(a3xmrGmG+Ek&Sys{UJ KaJyu=PEK+F-NLj=c_00^#>aQQ{l{gua%nT zivk&75dN9nrzw4;H$DiY0i~Z|c~CZ9;-1G>Ii4B9yt!k}W}PQUv`K5(X!rFs$jPdf zscN-E7Z(rV)$W_Gv=q3={?!|dx<2@oW< o$fFg?2IDW=Z++km6c`C@&A_c^C!5hg)AmHey&pVQRww<`{*0R%tS^+aOjbc zwc>aCxh&XMK+6;R?tJR`Tyc}&OMhX=6G!V`$tkT6_Uq7ByYUkXUWA+D>ED^_QcD3> zBfS=W(~CL!dl%T-QworG7s#sU%_I(dIZH gj=3`-}&O5L%`ww7l;<&7rGm_6 Tco55>+y6(Bkb+=nYSnm6o<7$CS)MV*=bKE$i~cZ_{#c2A|#D>Goj0f{oI* zaa&%;6aMRo)^G^}30K!nVaO6ro13dc2)`;6WO$B{t$^PRpRKnl;+S=sNS#XA>FTvB zrp@5L1)`9+Sihd0pEF{v)c@;^ZGB*Acn^@#g?nr=IqtPmMI|E4TnOJ?!*ua{BMX=A zpMGJ4ke(^{+&J^|=hf9^-eBbF?TQt=1!mlGqejWxTrn5{HK)3~)G$rG#Oqo7ctWT3 z=9nwHwA6NG^7Br>mlo%9zgM@Fhy55)FR6imaHKL7OTN!j&|ZJnfiQCj$W*B=V(j*U zp;iK1hS6HOT; ^L@p7XVLIRxT37zRHZ z(!-bWpTZT-!6zDRmKGsDyP3_sdZ9Y+!9~R!eKJ4