From 697d6a00d92566393eb245647db2a7f965c81b26 Mon Sep 17 00:00:00 2001 From: Fischer Moseley <42497969+fischermoseley@users.noreply.github.com> Date: Sun, 14 Apr 2024 12:38:03 -0700 Subject: [PATCH] doc: directly render read transaction timing diagram --- doc/architecture.md | 3 ++- doc/assets/write_transaction.json5 | 26 ++++++++++++++++++++++++++ doc/assets/write_transaction.png | Bin 29865 -> 0 bytes 3 files changed, 28 insertions(+), 1 deletion(-) create mode 100644 doc/assets/write_transaction.json5 delete mode 100644 doc/assets/write_transaction.png diff --git a/doc/architecture.md b/doc/architecture.md index 6bab858..c0c3da8 100644 --- a/doc/architecture.md +++ b/doc/architecture.md @@ -29,7 +29,8 @@ The data bus is designed for simplicity, and consists of five signals used to pe Each core has a bus input and output port, so that cores can be daisy-chained together. When it receives an incoming bus transaction (signalled by `valid`), the core checks the address on the wire against its own memory space. If the address lies within the core, the core will perform the requested operation against its own memory space. In the case of a read, it places the data at that address on `data`, and in the case of a write, it copies the value of `data` to the specified location in memory. However, if the address lies outside of the memory of the core, then no operations are performed. ![](assets/read_transaction.png){:style="width:49%"} -![](assets/write_transaction.png){:style="width:49%"} + +![Write Transaction](https://svg.wavedrom.com/github/fmoseley/manta/render_wavedrom_directly/doc/assets/write_transaction.json5){:style="width:49%"} ## Message Format diff --git a/doc/assets/write_transaction.json5 b/doc/assets/write_transaction.json5 new file mode 100644 index 0000000..aab055f --- /dev/null +++ b/doc/assets/write_transaction.json5 @@ -0,0 +1,26 @@ +{ + signal: [ + {name: 'clk', wave: 'p...|....'}, + {}, + ['input port', + {name: 'addr', wave: 'x3x.|....', data: ['A0']}, + {name: 'data', wave: 'x5x.|....', data: ["D0"]}, + {name: 'rw', wave: 'x1x.|....'}, + {name: 'valid', wave: '010.|....'}, + ], + + {}, {}, + + ['output port', + {name: 'addr', wave: 'x...|.3x.', data: ['A0']}, + {name: 'data', wave: 'x...|.5x.', data: ['D0']}, + {name: 'rw', wave: 'x...|.1x.'}, + {name: 'valid', wave: '0...|.10.'}, + ], + + {}, {}, + + ], + head: {text: 'Write Transaction'}, + config: {hscale: 1} +} diff --git a/doc/assets/write_transaction.png b/doc/assets/write_transaction.png deleted file mode 100644 index 5bdd47019d86046a1146ece2cb11b047f8ad2685..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 29865 zcmeFZbx>9R+xM#o3ZjH`iFCuJyPLfMrMo)?q)WEa-J3>Ak&`+8kF^sSQY%jd+;A3b{XQeI9<<dGzSbBY7!tH4lURjAtHrUDMr$dC6iDW#V4g6ygGm zoloU@O6iAKv)|-|#C)d3&w+-8grPEKBfa}^|B@ax1nc|RlC1>lVXTaceGy>AXP zn(G_gM}(rI7xo7a2OTZ87F`PPdi(nN9zUaPMTR}XF+zg0G6f(p!xkj|{`3*;inbNH zlZM>`{OThb=rQdhe24?`-+#6ub72{^{dyFd3w-`}eA_zDzb_>AO~r^9{nktmLQKmMlZ-kNLh4ie!-qxjwNh)H1?hCOklr$&3c}0L~Bs*Ota*F z@9Tp&?mQk?c*COe8ZrBKJMRPGZ)k z9M^C5!fQdCpnumai?SF>-B`38PUjB^2^sZ0GNR#gUJs$~xLo#+K3r^EOLP3$mM#A2 zhyT4_0*fw>*6ixmT>2yQf+3Pe1cu}Rz^{oK-45DAape?X zYwX!wHX%ZHS8Ll7Uoq#ZZRy5iZJmymnmw*of{(jN9Dn=Y-;ghPZjq&n`oC689ue&uRCF8!VNQFC%~nZsg3XvJIKn8tJw1A0d_3k*oBAz%#d z;?_RYP>X381!Is&(fKUs~h`)XKbAUqa3(b9KK z0y26Ogh3Y8;JWu5{ksqRL?T9x5E!Yy08Hg^b5MJ{TU7S^k_~Mr+0ZXEADnD5l*(;2 z`8`qgB9nPA5S?H()B6y6$Dw`$pB*1OLN`YD#cMT`PHgQvH6yjnnb37~XXFWl()(gx zyXo$FZ+oVkDlRTgY=qL-_fOk1aU^MSOf|n(<*$XkLQeco`sh|Ap(4m~R`NoH>C_*y zd@oYoSH>}=!CuKa)0JtJON4N;6Z6=?jKr+z*}f`eNbHQ~OJ5HTLa3>!KNds!4Q*@~ z-S%fFkgI{?^Q46A$U$~82a?&`2`y{PsWv5U6hER&IDSYUjY7uN+(Tz;dLtG4IR^Q2 zF*ET%-k-H-(dXfDwBPAVb)`Xts$ZSnR&bTI++7PL=g!f9lW0SslzJaVm^4eX_3EA5 zyTFv|3|FrPkJoz8oeIQ|B+Rq#<*FEBM#ruwBJ&xc@+R|*?v73wB3QkQLhgs@Sfb9! z!)d&jm_mO()+s^d&71d18$n)YR=>WhgSBRGw=)6bgSA$|Ot6e#61PVH+KX%CyNCurF%z@Ai(3%n<^ES;Sz-cOJ7aop1G-PLbp zR+>(1aFB=ryL}YmgYJ#Jy-?2?MJ7m#oC}zTtHZ{l&tiVS`L{Pvk9}9k5BpRX8&c)4 zDBxHT!`r6zIdCCsY;4T)ecyK)+eBuNKZ1=_MVQ(;b5-XYN@IIlaY!x za2m{U^yW=I@QNRDxj8xSPuAsEzSG1~e^EVwti>(+-IV+YyWF4sWIm9DR?CS-t6hJ# zBIcms?x3>84yiVZJ69~VbB4$5r6NUs87KU9LLmv2rxbPF{UxME-EXEH&)pw@b|ndH zgxn^*dkWbq1vRoLRxoBEikj4{*>1i@F~TrTH&MVL^)dKR;W;&ox@w&`@3$hTZ&5x8 zr`{xu%X+o7L8scr;|{)ciw{XnP%BiSiOuYcU1+SfoyJe1tml_U^o6PF!ot)c)>cjN z%v`SqDW$_ud0Ei-BLl}zh@YR`8#H@`-uDWF+oh9ew0q5NV~yg%lbGd9HcEw-kX;60 z?CsYyOqwa*qz-3uq{G9mv#%-IeAZ)SJFkjf_1b*(GHt6m-(ynuz=tsSq|X2kA9_r` zQc~jFDiu3rcsNo$PvUv97jk@(QcO{t-q&>rbtG+#5B|gxr?@`#W|L6(jA?X0Qd-P5 z16aw5;f1z?4syI+&iYASxyExYQy8;ssu8E{6f=9MoV|ElAQ27@6>>c74lb*nR>YI| z-zslv85FN5YS|)-yqx>Sn`NU&LjlJXlFyHuAV4vF6|XGP2es}Y;3V%Kgr;D|z_Gtb zf7FXKdl%>JwAvZ!2^G)JE0@zDkT(&>d7JPX3`#`fp#Ev*8|&?|)*Web!J-|&MG>?R zV^cIqrY;OE9K6ae*Qn659LZ!sjyh42kV~SB#Pg~E-QQjs9=C}(C=+)G`CeCHNmcCk zhEZW3PM2lD=%rWktuCxmIhTIK9>?NU+7ucxM*yII%d6 zV>;0l!D!jXDhoyAsIA@DwGYqqYCw{E8Ju8iEzpn(PC6zSJ3FO#{pW|wYK2OJJ{0*3 zp?bSSv7}Kl_l1=)nwuVS{}6L5+}=sKH0l_^ z@87;TroyH?*09(b@1#>ePo%ETeKF3MLm%cOT)ra6DSlJ~MtI~`@42V?=W@~V@KrH71+O(C-u%tr9 zVXJRAZ}ws=Iv5Y%>Fg`-arZgr_K5_{t;lGHeTlFiKea-NoGLl9Qo&mM^f`jr`jrYz zjCV3EVswUeF`jmdel5P=;t4erH`?N5(UZiih4}qxXK`Jtj!QZmiQ;@@iV zSPkE!{xEtPEGU}z5FxfAGs^()l?h(=toc8YU%+o5Oniai?#K8y6x50U;({*5h{}P# zF=rb^E0l=z5TW)ri2OkaIO%Y8Ld)d8SAzm?DJS0oyzp=EXv7YW=KFzer|AqPJ~ zw|HN7s+#gQelM zh4Ob>`Z*&al!l-T@(CnWq+*+v4t^EqRB1~o7|SCI2hyzWpoK@VL($-y0rqhr4gq)k zI`WoQ=fqCLU`O;qSx3-INx%v8CKL-M9k!j@W?omD`u+fGl-?3$rV1kS=M9bsA<`Gi zDh{;--9{HOhbA%^=$K*7=K%?)noi35ZV{fvPfc?Ae=pS?Z2P+K3pvZ8v>Xnyg&5A9 zykZwU{qu0B=yzfua#1)b|5BTqDNI($GUxi%_82~JK3b+KjeFGeyyLJWOg?)0ES$yt z%Fh@W(qX|TYI#|NeW-yGN#)|8s~Ndl#e<<_Vz!Bzx;6ih3M52^Q3 zS2?|*=oz!}+mD;nB9H$m6fxZ*5OEf+U03dg_To?-McJ+Bg(Eb@lUugVmiM6kBTYPU z_=lg+F}%UcQ|W~p*Uc^R7O^_h+4i$C)?bBn!UODPZNFOCR?>1koUTRKd1edE`3n5~ zNl7mCTEhx?SFiiK78=YS}bvd*El&${A2P1;3FUrT2R{ zs#g30emGHlk*zzLe6pR^^yD|4Qq-Ce2aLIpEy$d@-u-Bc$Htf4?dAHMa3hh$W{xR4 z!D#jSj2`89l3bS})S>jq-5*zh6A=rxQl*&pd;%_L^E;B?s*T8Q=>Qi<%J4W(n;5`v#Qf248&}1sl1=Sj!fetYrKGh+E8( zi}iGk{Z0@wG<%;`GINvP)*cB&_!d81y=lx;-BAKrn~a*et9M$8X0%=f#CnuCz8vB< z@5YGf5%VaL7B{4 zaqYIeE)!9Cg4vni?$n2Ipo-!s|DWQQTCk)VnXvb#xeoL(R7O8A9%S@g>3t>hSkO8^s=+30zn*9ehsECdrL=q z{Ps;O>G^xt7d!eWvLj|WbG}g|1Wg|P>JUO$qf^@-%*&Mw$7qx8KLRF1VP!@aPdnhJ z>Ypy~&%~k(D*~yfFJM_hqHcY=MjrbR+F`>%iQC;S*Sv9pL=<^)wyl{#wmO6s2<{=0 zf)7ldjG|iL_9SL%|7FlAo#xJ$;gMM~5;C$#_a)Dsqf<8crw|ma%}CB`-}t`p#wv=P zIBw#&+8ZMMHXqUYIa9yuD-@gC{5bSdOyBc1a?)Ml*2fhT6gc*Oo1eb@5`Zy}OEjs9*5eRl?c?`%mP#Q% zji-8(oI0OXe^qYOKl!XqeBiN}A7J7>>e)E>4=Q5q^Vo_~F6y{@ZwOeg)h_!D}60wko}NmtdOUgnya+gQ+_$(8e74SBt+gMH=9& zs^q0z*#G(yu_$01si=WQJAxXmm!>ui42iPtzR*y9QRSrxv{=;-RhW-7TEDWpQFUXVf)Y-D7r~dVXb`pSJrNtZSGW)yKze|{*8TcQT7H!P&UrYOc^wb~} zu;WThli6;r4|W>F<+qgf(9G~YW`)!w z$WdIcg?M|k_=SK>BATB3lMj}S_0$pFy@>UYr%*!(MwN&U6E!48b9@pb1j}*E%JL_dy6>z|W{o#80;+}eHYPfOn z@m-b4EV@BU&E8bp+}!k@E5RI(iI5)LxP%0BkcD*oDUigxWYQC%*o4wdC$4s@$fa#K z9xmAYqUi2v3CYWIA|_Gie`LwkJ^8AH`C}!ei4Vf$(InZ`#wOcqd3kvZUQYCh1)sFq z;q%RC57iqQ^mrugfk2h{$?>VGGr6TzWMD2lk{hj;VBO?lqoJj% zh59KI69*YPJKhib9=Y8$xN>cX=VHFk+SV}y{RO#Cc)peRY%N2a=9y@|JO z%p4~cW?;xesl1#y*q#$Wigqtq*TAP66#h*0m4n?^i>$>wUcj~M8ciyYM0hy+bx$5f zY&TV3`>)si#&?J=ttJn=*IwVA0O|TcT!Nn0-tAH@2p*dh_PZ zq@f}5&a3a_#m4pTiVZgsj-#KAciP^DTg04sD4b0$TXUP%(%c(NX)&c;^W z{_Kn0v!XyeQAvYdXqR?PZf%~?ct0vj5&wxKXp+|d2XR2{R>J^!q-orw%xX$}rIaSg z^;Q;+)uIzPSr2Vrep{U<$jbaa+ zgLz&z&!kFl66GjgL0n5+U0t>guST&Uw^@n3$}NTTPGo9^9f6+?|6XJd!kKsY&!y>5 z4eRVFkv5@_D_c^jNI0jpCboVV^;5UP&uz`lf_o7IvxH|;tjyYp(40VY)B)$saU8-? zcxoWO)1k3XjK>Rxt+Lgqw00-fTSlckJ#75V0rI1sf@UHscS%B8Ur)l*ZZ5Hr3$t4f zObyb6ugOUQQg0M{oa6K`B!hgSW-F5cd9!x3c-AO_WSYRVTZq0?zup;7I_#|d+q+BS z@jSm($DN&IEPOY%pcgw)g{oQO)Ufp={hIx6Atd`7)WF{S1(L;B=*rPWS-`|+VKkFe zr>BO@lL(*lHJviu?)H5_Yr0LkjP6Qdrd;z+Ac(#PuC03>6?~0eYLX>X&~Pqnc{)Fg z>{IF#YrxJjdCz1qDGx+fqTD+s#%RFUa-g-&J)$lB%jsDuvQhh4K z*+fg-%^_d0cKk<;lHD!#roB>jK=Xc4<8b>n-bjUdYlCJ1j-uhyT+(885nxU}7`^rO zp0MH|FN;aj1+=$?qxF;hWg~{6)X5=wJCwSu$%lsImiDOK{rKhB7QW8KBfYwWKo$2g zd?^3!%I-I>WgVf}5)O+OEj&~;eXVArzIf;^$6=MdSA``7$M5oE1#fzXrs`i1f*!@j zPV-cKMYwK{iboiBcL_(#%mj1$lg1Fn(JQ5#)EQMdE~7!xE}lHaJPfj)$n3scE)yTg zT+{Dn5_EsflzDtQQrd`CPtuVWD$35D`xy_S;R;G=ShGyXca*X;m%3{zX-P15l)6J= zpidX&#|)XgvOe4wlB$XboZYNf)T%rXn&ZKcoF{32OVI?984`Mfd}_9f_adW)faxnY zo@orO93$R>4UqE)VGsy3+Zr!$z?;dO(y7R*sp6^!eojLF<&S03zOJKha4eOj@pP%<+uFnG^2K_W z_&?jZsxdIWr?pFS$k^DJMl(MQ7d4-Zu;Q(Naam9bezo*b!=!q;C9xdnqUg^e6dZ zT`szF;xl`oJbBs_4ishd5ot+@O^6fbm~hwmn&`JBI;D*ZX-1o+9eU8bJUmts|Fj*H z7x_)dHbKnc!TeoR33H|Rx$SJ`XED96pz@w{0l6EmJ=u)!R>66 z^M(shAStKpS3C!=Y^OjLylwd@zOUCb+h5^R)Zq3fFo%3=$bY{NDfj^*PpQLcDOMai zh*N|>q((A@$^N9)iwhiOKG{FpNz!k0BhaZP4vH4>!cZ2ToZhI4GiauL!|uebqOzI$ zeg(QcW(qhP(_Euh_!^|>1X0~&?o##k&{EyC$X97p^o=)fbBv-*Z9Ex<^tP5ncCCcc zPD-`n52p-us_nk$IqLD)o0c73TM|94jxbW8ux8n;`9y%NUrYU*fbnDTKIuNc*F(4f^ zWadcEOpy%Q;z1}%*{O%EW*cev%nSpDci&T&TB0IFn^7i*fSLFD_S!)LqOKiN0|sE7 z&991t!sYIpUrVA-Ne5J*47xL7Uokt;P1lpDLup)NN_%*BW)Ec3jBG4@?O&*-knJ6K zFgQ-d#TE}5B+G2DVUd)&kZsiXQtGuW>mcStnfg zLTBX(6RiI#zac)`pNT9Gk59Ky^|b0Pj=%DEVB9td%_BQwg}AEmW5G-e)2A3zJT=KO zuezTX0A-E=d0h8m!L}DNbPoB~ldG$$;ht}jCdL^n=R7I<*@WuOfv#-{y=F zG$cY#IbQZRrt}+KAhZiheK)v;gh<2jS^9O4h=FYQB?-@!LicpaM|0E{Bs?$B(9nW5 zl35@fZ%-m&A6-#ns+I5yI0UEuw^?Y6thldT>ZzluSsZ5@GDPkpifV;Q#6>LFqKAfm zOF4@E)YQ)zd0oZjhLb>468SV(-SSnhsX8)HDRjem#G(BT2s?rIJ2BRxF0rMJ^ zThSNJT#%Slk}5r#|E?AS3FpTIqwy)1WRA+Q+e!PnN@>2Ji$38&ZL~c%gVt7FcjJRI z3#+l#cMwTw(0S`--M{2beIymAyd{KDcg$1b?Kh*x>3W#gqWu460cI5JVoEWXVN>>8 z=`IgBj$FM9miKQ}&FTr@W~pHpg+jhPT*|A(YJ!NGm0>l`Q>v(B*Io zi^_{(S{zXNM+zvv=nmIw(v~NxnT3ILjq1)R*n6zgz^W|fXk@{Apc^Fti;*n+ZjERh zJiNg5b+dOb<`%NukCx;V6|23<`R;kBvke^Wq>f)=4>lUYF-33Vw#=Uuf>Q5M`3?J>zUv*ph(C z=|q~wX1&e?afYb!*W|04FD4)Es+`A&qfZI;{w(d;uW77)E&Ozf-G_y)>e;=)G&|$8 zO<7SH&@dV1={gh?7P#Xmn{yt>BaqpMaa`glFOD-9k|P$@Z*uU#_i^&6fOU&1v1)Gi zWgt(gA^kGjXt4a&w5$^SG|gf^(>BC>7$xLo2*hTwZ9r<%E7+>K<+_@7f?CtdW6 zXw}@#aZp?O*@kh%-Pt3#H;q+MSnwN{34Ue+C;Vwm)-d}l-r&=^0&J)!!j9G}ayDv* z?U(q6<~SMWF`qJ^-hH+|tJ+@@n`Ice>jc?-Gh%?$+kS?ZKT5>=C)^e_8yQt7bGC{=-H=Y+KSs*UCh{ln;` z$Y6ABdOv+Umrh+~7NH+?UtAJx8ngtvT>n_d)Bj?!2k6Qe0_yyc{BAI4eH^PZ#8V()xn%=*5Uz{hGr1SmUE*DP6 zMA-ziSZg9&QSurjp<8S>E?juA$fsplKRdD-Cr&K-EG*59FA~^cmn(Z7JPwRr7v#_m zZ+D|n`KTU>k9JYw)rW|2R1`l1yRGY)RN4DGPl#YkUj}5_H&tM)3&SqmD}7FBpOP# zVQ##i<Msn=o2EKU$4&khy zwwC6Zl$7cLS)Xwu%&2F7lXCcXp?CR*bM18bM#kdb0s4%_@7ZKmrjc}jWl&@~YyE*k ztPGS^l|Z3jB{!beEzQ{D6DsWfi)cQ#ZPY$@Q&v8;3@G^u!RQ~TzZ)v1eJs1@539f< zn{B{>I1jv@`vJ*Q$Kcz<5c~lo+XM3ZcaKeiF4LEZScGeT@&%!8j!!adU+nsuXfTK3 z48`0oU%SlIZ6N_^QqPq3kW)r{*VpOx!MgNF1>ZaDv}Vk0J?z3AZLO-+2>O!Mxcoh? z$JXngCf^m9iL;k_9ZKMH_}d3BPvx(|FE35*j|V)q>UAUtcc}5^KCH}UCXQ8z6Be)v zF?RC(lhjS}&?>ObYFApMxJC5n-))=I4k(W7YXKERgsATt9)M~*{ki!5=|oTS$0vfd ztDk80PIOj}mVEwBqK&;1%Ngol;zZbigS)Z-m)3@u#fgDwiSkazPy0m=vc zGNYd@SA;>3#c(#+>7EWC*>~>~Ko}jfQ^0C@SRzHr=a0vqOup9)*Bh|dFaAU*x`n00 z<`C(ekKQ&*bEDS&`d5*`3#!91+SRg|^dQ~LMeThsynN8>ecD^C-(N|w9}b*Fr8VH9s66FO3U&WG-J~y z$e!V*A>gFfpqu3Qko#4v3$lU5W4a2HcMHqqLbSpLIDzQ(!>waXu=Nv~>7&Wz`7gik zZ`?I+-CrL(b?mPMF#Yd|W+z&R~%M?9QpKv{#Cp_u|&SO;bbBIwRwX&2Yn zWV2Q6luE@I>NlDdRMb29t_dma2l?FVh zahnuUN9VP&LQ(c*IehK7OR)Uvq}j;?39H_MVUSRi)c@`(@>2-o%k~VghA?=_lk)#U& zS@x%O==Tj$_Z#3Y%wy7 z;-9tD%4~Lp=V>CL-I3Mcj|&X|CSY+eRjBh~!@C4~YP+Xn&j=9loHC^Rc4OvD3W^)^ z8HW2EtHnL5xyLq>2p0sk=0z&{1qP4F2c@s^e(xqi_U9^IbNR{Rc+&dA8)wqRv^B;z zqYk%4O(-!AW}`w!7NehKdZIir^jqBM=mS!3vc{_pk76x9dol}9ZC9nv?JgeJyqim# z^SLF};TdnjBRZ_xm0#v@8vr1VVs09W|2754`KkrriUUQv*>V*XgUznnFm0lfDh#h41LxT!?f`^d4_-p%r{#(-EaQmNGD2I^ zJ&zvs(T$;h&+J;(WOICt&xesy*-YQd*OJzo`dUG5ZjCMA3 z5f^&jTML%43Q5cIy9&sx?Vg?HT@%(?=1)2{ha074_Ulh5^jhCy(3LEKv`RmT#m(NG zT%mOh=A02!>n6Q6`-_NSDzEW8`OZxPK9&h53a}*!Kw$NjdAUrB-t0~^>+^Qf%sZa2 z7SE?dO_FoD&b-g)=Duku2ZyM3-Yfr##fB)PrTXEeU08%{Fs>uHVFW7~$mq!66HhZ! zFiWL=OmMzqv{4&e3=AsOA0EWVXAcAf$r-mlIfSPGWuucs>4x=PW5Jvu0)N!vNH6^| z&et3w)ID_G%$=#?R^r_khtlA9W1;rlPgp@V;WT7e8)S_*IS7sN?)#3(Ieb$W%IoIS zv44*L4RIW_cW1vz_U-y@3q9h+JquVFTAYuGS!blA{T`W0WR9(~Lb7ta{Z_&BGZ#ZJ z58Cz^t2-pN{pxY7L@}ZqWR6Y}a;71$6x10fAa`E(Cem_O+aO0BR9&IbXqGrzJ`6|S z25r$P)Q3{n9H}*Q?ovh=vs-SKP*)R zRE?VNlK!?F^yIdkkl}kKtqZB*vqPd{d*OmHXrWu*_r>x<DzFCM!G^Y)r$qNoNLJSt#$$OP-hSkZ>F#*o(!w;XR72jmlg6KL6Rc4et< zfphM{e;xuwUg_Q&*Tx4Z#Fj0n>@;=|1HGW_kz~2#n`r3uz&yM*7F9AfE7r$nF&qx3 zOlW~Rgc!XRj%VOu&VD(Z(Gev{(6vL;@8;Hj{?@6lU!CsX1;`>SkQ694bLL~_!2sn? z|2)b1d%>6hlBd*-!mQya6O4+VPy7DXI;DUN&Q|1#t+yfXYWnzj-|=Il#?&`cEqEa?=*Rii<^)F5-@o zc45#88^Kr|PHQheJMU(-1P6r~rCKMG))#aYriifyeEUXEO-C2*KXKvN?0qR?^S!1y zCxrqBgcD%g5kx^j(e{Ixh!U3R9AC9U>Ok@nWh=SHiSHtOH8{*jAbHW|Mx{aUe)Pvw z{;5o+TUt4>Dr1fMDdd3SZLqv<3Yb3qrS&9_HMMt!ejNDh?*p8zI4IcZ6f#&K5d6BV-nh)4r%y zdfo2s=pi}5sxq!nBw|vQxxe3?J(G!kOaknS_I6ZYF!Ym+$(66VzT*5}nZoN@L$y2q zc?!2}(kFE@+UfW*1ivmW{N-%DIFoD)i{Z}&T!`;6x)fbuPbw#ee*hn3t{1Vhl5fk85QM07xW7tfsRnj7z--f>HzJ4L7)QK{I4uMI)CW zYstIAF(>)yIoKgege!?p)z#BuMe7enh3VLIx+;UH^#s-hZwVc)NI zqUIri@@oktnTsK&mZUxGef{a8HIJ_sREBA?0Fl8aIfqEl%@OWWLvKbBFS@fB$qut7 zo#;O=`bzbsMoheXU)YoUtj4MF&%}Uq(fJ6%B)`eMfV5+u%bDp;P9zx9@Y| zCkTY{^Hodo_P$?Cb$?WK^|tERyniw?@h5tr3;}QKShQMC`mz$m20}f7K^v>O2*0C= z{iT%j3olzoYZd(u)_5zbPl|=;$@h=J(7jS|rX)7~ zX-;ctTe>{D%)~uSWxChjHmKcJ2)?=XBTAb~yyhxZ$O~`>S2HwM`WzDfEd8FtK&rIs z;O~5~482#hhR)}Z@mh>vqQ_etYP9&5^x~jxFkx!;G-T{(HLWtU-p?t8@NH!1^>PMH zx5Y0qt~DP;tp;LVtemY*IgDI>_?msEX7*!|d>B7)gzb}0MC%^=>9X)PkQ%%OPlg>K zZOz`xi)vVr$hheT)tTuEHDlWo2d~_IiGq4=ubWE&=4fgpL;}e7G2p|>ZA}1QWd|c- zK|a|NRa#j=6D)W0;!I%Hz>0iUOmMT{=BSI0-ouToJ@8D~pu1)y&34sp5~$Fuq_;$H z;|Y*c^6R!N6r$9qp4QyO%|1)={UMquS?{OFzhl`}G2vmhsste<3>}bzi$>To1Yf-LIJBFI1H6d^ZKU>-w&otMAb*S?uCs%ea zivVJIvHnZ@x9g=X$0w4LAY&s%#fsl{Cut?eFM)c?uJxqC-5|(sr;nz{r<##<)`;W0 zQ#o3fH-;<+8xAZ@C8-%3&M7E5yj*QgQgP5_HC^L!Gx4j?JJc-X-!+q_f+nB_%fGA1 zmRSac|7F{{nh@N+LPU5S;n`ZTNWH^BT6A7pVBId{{0H%&foQ0c*^s5}`==8N!j@l@ zurRBq;Ot_Z7B7KgvEi79kgS0wHvIfPk@X$u8(>~zX$OU=^~xPZ zT$>5~S*ENL`H%&M@-)L=yaIE?Q)r4H*G@H{9eR$rjF9$=*`cv) z8K){Q3#zF@xt?3H0d%mcGRXU(ME`f1g;?E47m)N@%px%W2phiBDVkCxmuaLq@DmmG ztuLz!LZv0!n1pZK>rELmVq#8t!v3;WwkyoAgt8x{Mba0zwsFP7b+gX`wc@O7UWSH- zKD2m9eyD6AwIFJtwpuFiEec%Rhm@qYV2}xf*pC5atSXz?eO6pO$B#gD+;;hJYA-Q9 zKAy_ui2}IN%)0)mVzISa<>zp2__jXYyS$h+i9rPHj7pc4Wv7I1hmMsM&OoX^*e=X(Z2t z2E~Bdm_Lo6F0RflBh1Nzl=BCe7^!@vL0xZ5rbQRPHl5J9M5(UXCG{$}z%>^6ISt)+ z5?$?sj^VO3@3hSkDnp5PB?22ZF(r3jQJMj$~HQqG8ur_{Hr$OXeUSSCn*43^m)(xw`g+CiL3lFcF0E8J7iA6 zjJnBPO=Vfq-VJI65s4JTHv(>3Ji`cQ-ME&cpA5C#rypJyoQxyejz_;U#9KO)G~Cue z2aXwd3RjDUp%EpcwCx=oH83+YxZK=D;dZea?YZI_(~@K(e6yU27zg_~TjD?FXbC(HikG_W9$R2DRu7p*wx1@|EN*^qBq! zYPPw$Rcq9bN9C`?6gx!q)$%WNMVk!(V(T^kOPgDhv~hAM0N3{X18!|z^dQcF|Mp9A zKvB4UE~Uj$xhHT${Zs!N@_d4(={zw>E4J`Iko?(rPK1RyxL_-x(?YK`C&S(1@%6K%r??T1cMtS zBNToY6h1i9Selj2e@3s!LiWf*b<>jE!t4J#IFnaMT)ZEbjS+{W4QqQoj2PsJvfj9! z)cqQO1ra=+7|;d#Y<>+?xvP(mGyqxNJHNVJo(b$g*I8Au;32-yjjk`7>UqMxv8aM^ z^piMxQ5{<~_}7%0s)oa;#gEN&c*@XjweziwP3t{5!`nkGz}a``DC+@rnj~AjTzFuD z(dPQ7aYxkXFQ_(9@5wqle_k*`lFEhT8UutZdfjbnF!-_+5)BM)_{xtG2bJ{k1p21S z(LomwxwQFLrcxD49fs18xEZ!C=H7LrDH}xpbk}HYZyEkQdah8$Nf=!e@JG?-G2rtD0do+l1Tc zLqIY0+q^rOL$N;6$Yo(ze4*x_UAkxQ0k#8ickvPf>Ur$Uvn$+y;UY6hAmRPsdiXQR zQWM1|=4e2-H)|&8E^}d-|<{a4f6ShV~h8JD41lV3Jcw=y$ z{!V6NgwG_(eHGCcTTLQ5fljNwWm{@c_bfNV$UNF&LFrJC+x7G2%h%ta!Nv+NxER(;a^rh>q6^Bmtul1%J`Q(9fdjC@>a@SAld~}spw%(o zP5mxE@2yMUPzN!|;Nn{YrK(O_U)zumVW7QoP|0>2XyQ<0>56CrKfzPFM61PXfaKdT zxIdWeYG;)~$ zCkR?nkwk_&janUcAwt#1IGeBA^;z1F{~X{gJf|IsyS4NdaPW5uhgpMH3a<0tpFx1O zwQ9ZI2D70bjnPvCpBF21fC9U7TIh>#hN)$d_OZS-i9zs!d!iH_|Dr;VWyS#o~YxF~`WH zA!L#zGekKL57)vCfAp~XZj5YSk9&*GB2dQ3z~-?-Sq87Y)?Dt+Ub#d#K7gBpuoYb_ z0DvrKicb8LNE|`L!efYl9weP7wiwmw1H%AbyIq>cKVWkJ9#3WW&ycIxXVQvY7o0~Q z8}(E<3~iX|P4T?i@FAy@IZpg0?!`{baHWekSX^z?O(+h!p?RNalWI8r(K{m2N^Vvy zxx0V%n(~DFpNJpm-;Gq%W30w0Mh18azL-{y zC%KHxm9+IX8I zUj@Mk3I5RN)BNU#8y_`HTNLHb{I`mZ|<*ROcszbnBI42FNH8}lW%0A^lIu%wsz4}9%Vivf

wGs86N0{fA1O} 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