From 10b0228d6b74ed19a336870874c5fe56b7718522 Mon Sep 17 00:00:00 2001 From: Bottersnike Date: Mon, 13 Jun 2022 05:48:39 +0100 Subject: [PATCH] libpcp docs --- docs.py | 17 +--- mice/libpcp.lib | Bin 0 -> 148226 bytes .../software/{pcp.html => pcp/index.html} | 0 templates/pages/sega/software/pcp/libpcp.html | 74 ++++++++++++++++++ 4 files changed, 77 insertions(+), 14 deletions(-) create mode 100644 mice/libpcp.lib rename templates/pages/sega/software/{pcp.html => pcp/index.html} (100%) create mode 100644 templates/pages/sega/software/pcp/libpcp.html diff --git a/docs.py b/docs.py index 3e61aa7..a5f24fb 100644 --- a/docs.py +++ b/docs.py @@ -20,7 +20,7 @@ TOC_HTAG_LEVELS = {"1", "2"} HOST = "https://bsnk.me" TEMPLATES = "templates" PAGES_BASE = "pages" -STATIC = ["images", "static"] +STATIC = ["images", "static", "mice"] ROOT = os.environ.get("EA_ROOT", "") @@ -43,21 +43,10 @@ SEGA_CONTENTS = { "intro.html": ("Introduction to RingEdge 2", ()), "hardware": ("Hardware", ()), "software": ("Software", { - "pcp.html": "PCP", + "pcp": ("PCP", {"libpcp.html": "libpcp"}), "jvs.html": "JVS", "touch.html": "Touchscreen", - "drivers": ("Device drivers", - #{ - # "columba.html": "columba", - # "mxsram.html": "mxsram", - # "mxhwreset.html": "mxhwreset", - # "mxsuperio.html": "mxsuperio", - # "mxjvs.html": "mxjvs", - # "mxparallel.html": "mxparallel", - # "mxsmbus.html": "mxsmbus", - #} - None - ), + "drivers": ("Device drivers", None), "security": ("Security", { "game.html": "Game encryption", "dongle.html": "Dongles", diff --git a/mice/libpcp.lib b/mice/libpcp.lib new file mode 100644 index 0000000000000000000000000000000000000000..cf42b744d93fe7dc3fb1c55e71725c3683f95bd6 GIT binary patch literal 148226 zcmeF431Ak*-TyZPLQGH+1*L-a;S#(s_kk#c5ClyiclLOmXOkeP@A-cho_v1$+nL$9 zXLfdWX844f*4p}GQ;rJ6ADMZ%xfz8yIhh6V`V8kZGcPa47U!o}mUV(*8;OPq; zRihPbscoq#mjNTTM8&Wx8rxQ|bo%7-;_~2$B^8y^XU@PC**q>3E@^FTZk^iNytKTw zrA3anIgYml9p{Vc>MBD`b>%g+OG5T-YKj}1+d}rujX1fXsiyTzTY;O!%}bZoG}U?M zCxp&i*4*lxPj6}nSB6_dHB0U5Gh0GUm7&(tL#?wL!u7E(RfK9!k3E+!;?HHvcBL{D zE?O84wc6Lqn(IQvHI0pv@$=O7rdrR;*g3f+nwIuuQ%YjuR_BhRQ8#R5TMI?miLqEsRn3A%PfbL{ z6}y&TL)(cpjSY1qtdl&!w&tawa6KttO$^SoYlzBlb8F3_(4>i(6DRJfCYdy;a8jY2 zr^2L)R}sv1f*UTXtqrv}sbxYKHZfS-+|(4R4HvmSwY4Ruhnz|%9IYK}aY{|NMyYMP z;Y;gqOj?JPs;=pn)HeFqbES^$nxZHw#pD3|O-5{5*s#dj0W~`dNLgK30O22>Tf(B1iw}N>Bg#V!ro(3A?x^Tm8EI zOYk(h<5$fK@wH92CS%vlQZEe(Y884fd(qBN_o(^lp6lY8w*O8|k=vNkX8LND8s)(M zFIpufz97H|9Jh8<_L|-3^W@!vB5Sh-g~TWba9H;dHpIV6+={l&=Z- zvZtS{!d&M$XnsmtYwf(H4Yi?gb8}*Jm|Oi9CBXhHj;QI+nMDf?PhDdsL8WNVHD zldQDK`R=<7 z{Q#K>@Z;#uZ&F(K`yPgVYQVBu_~}rPdU9_pH(D96tUHIxRPXK`&9#4G=ExDo*e=~G z!c4$s$KhDVbVSU0OwlX8ee<$`gw#s-}#H*Ul`RGNY)h zq;f={FYbKE?*e|)tb}x6m5rabpuM57&i6U7;hQjov8_{pV4emd}H#0gJi5a$%N z$XJ*JCqwdH89samH9i2Ze zWk>$o!Ec@yX^Kl{1ZMZ*av*W!#HFIjO-)6ei7FFUE!@LBbl)z1gwv|yr-SOs#MORK z2~K=PvfyB-N{uQi5{3uB@4+GPe)ui;GNk&7Y=pz0!gCPx$I+z(mg`n*9FZ30{6qK- zh1nlRvLiDW!BgVm$QiIw9Ldohj+p#*RBRljrf=A}bLXL`nwpmp!bAnw9KYu8Id+vY zfNZ%HW9_IK;tYKs%^KU#J{ZEx&H$<<%j(D(sp(%h=cm^+wueZ8B=d{COA(f*Q@?TO zF57#&%QCLEM-6Rr3@z^F+PN6~Bx-PrXE64b^D#77c}>MBHT`o8DM!@Sw|YL5PnCa^ zD|EO;Z-ag6oe#Hz?w!x`olmm;;$1(-zO6Zr=Eut&TXI}!+y#%~x6;wmghiC@0jRP& z0wP-@VKE#H=fXpv%Ip|;52Rg-JOU4gZ$jGL$op^{`~-53$T04a2@iwWFc0R!*)Si5 zU;$K4D1=Jv@$ha)I~VyioB-c~$G{KZv5=^=Cc@!x63l}|@Mt(0D$VhGq#jOzO5PH9 z1)K`+gvY^O!D;XrI32zYkB9HU6W|tD3YF?*PzgH&j)F5`9xR8)!wNVXQidb#unI1N z)$n|HB2?L$4L>A)E+*0sxB92gr%WVR$IqM`oH_aUlH#i1jFPHgMNw5ruz2Q-s*0JV z!IBw8lS@miEXQ!4T^cScniHH{G-Jx_=~Jqvktp^J`tH)sluAaLtBQ`J&t)6$zf0pM z7L`t)5}aCEbX+C5pnrOWKLpcf_85R%$81~x{AMew@O)9}%o!!Y6K9rImz9t)>|4Zz z!EbHq%!=ZYVD*gYRl%a-;*!eBU{Pr)dBV1u92=f5w>oo1uyW?qs$g+ZIn{3e^b-kS zqE+6!EYw=v7HTc4Iiq1|`%-G&{^=)ksgG4Wv%(#z50(`jud^%)PXF{OW3#Fpr%FpF z7ZslnEU%b8vtoMHNx|teOgvH(B&QE2KePwi>YH1`vR0>bM;i)aS_#4-f61pNDY`|g@vZ!RdQGsg zfq{AjHGoehpHx-ioh&#r95N?vteDuPS7wFGbGQ@xij~Ugb4!9%wD&y)8gq)1c*E*wpX{fcKc1mbrLsO{DghZ}SF|nnLkgjl5PMcX#g*WU3 zAv3uzn3P6)r4cjcRhDvxa?4291v>7^WZg2R<3DAaHinFA>grmJ#Q+v3&zxCWQZ&PO zB~dp&apv?XCQqs#ppGoI7)XcdOCy!|mgQ36aOeR-ZRH>2NWvMC{wb9WNvsne-m70sErVA4m0M+)Vz>ghA8OrDlk z6^?1tP*_lmDSk|@_VPaR2~%g(9{ATe+m6_)W!PKa$=yzOjdlw-31Y;*)8^ zt~dG{&)DaZtno9m*Zy`$RWn}raM;~^_i8p_I8tpqbNK1I{ z#42ZK-rTmKgoboxhzG*|FE_k2kDY zdg1XOO`-2&^pD;2*}7wwmu!9S_;(9mfA%vv)h`?Uugmj~EvEeKda5;ja>?e-W;SxMmfPpT{eyMXfbU15+NkJ4Jf7C@f~u`UrU z7*8g=Y+BUxHC<~bbIijn9%;V`muh)`tL(Nkw6wP6%wXHsb#v*wWerVD;jinA0$CeA zvnBL39dZ&9KT%^fw|-66Ox(LMw#-WehBJB{z_7~<;VHfS`6}9Fi zAwC^dl@S;fTF??W1~jw;bex|(VgJ5q`@)6-RYx_VF7=;<~h@q~`cIn*R6ZDS(e;6E3G14SCZU0ZNRL~>g3Koai#|t)5#T`GSGKc ztfc{%?l>#M3V+*N%rLem=X55=o7%jOv9xor{Lrzkud!9&+A6SZP53ffr#$hD4#MMe z4S%ib!e!&mdFzn6`~QkZP@5pEQu7$^Km4=e@n<{(&yh2GFz^~`+l3818R$H3JL+;p z))iZ1G(Mu_Nj;p~p4=v*aR$r@mS=6mA4(%zLHs^Gufo+S3J8D4mSN_q7onGwY$$ik z^zAI!nEm{N8_C-rf7npHK|=oj|zVj;-qxd_=N2p1~7cm}phvfAoTa`MS_v$R!+R>G;x@4;iR&PD}3Yi_) z@dGXr#>A4X7pZD6z0c-; zn~rC=Ek2CvOSU_KDcj!hSYUP8_7%&wtCKshV+4PVVJ}lvZ(m)#P2t{V!o982*eNXA z)^@V-@V0@Eo@W9SYmJPyjl4)RLSF3nbYT0y*sFavA8cPwcCPnt-#h;L6>+DX^1~MS zVTyyKI=IR_1VwEFXoPtX0%pn;E;d>$7~$(!SE zhO2R2jla72BI6aWz-@YxA=b`!PkBOqAHgq)#|_Imkl!HFB91h=;hruJX_V11dgqv% zg*4je7y)y18gf0v=+5zU7a%dV$UQFR?*T@-i@#%y^b7vl_f-{lsL?&nU)$V^NQ_5f z_f=2#ZzRSh(S62W+wK9R_z^~@kx5%ufOMqM9pmXvLSh^fyQg}(vye1ynq+;))BOO6 zM-+5xJl*X`nMU_>B=s8xSq~y*8QpI@-OEVXM)x|B9ga;%Lye98(}R(6 zjc%l;(@3XcJ;|Ek>B30)Mt7#Cy9tSrR?OYz>Fz;d)D_+RNVX5&KpJm!fA!40kEHZW zvi{|n+li#!%phwhC3u3l8bGprIu_{|qZ@~0yF3Yrv0Gdz@yy+V#5gXxJ3QUHNRy22 zJx@1)imb@!G&p0sSBNy(=#E9Q@2g>%Vxw#KbeAGcF*@~OY;!+DDlxiyJ>9R6rW)Pj zo^AmB3&x4@UpkU)cPP>{qYHStLL|nIF?Xz|n}$?sbTg1_KhvtMMP;4x1h=rhZLUiC zh~FrF?vdgO4*l=AR-&KmdtWF!M40KcJ zO0m{CS5vJg9Vx{!eZE1olW8<}1JsDy4WasPooN+rH8$jwCk8oo23f5F&SQTS9(9p_rK5@M&u?K+zG<%NwR<|kMVR@$#>rBfumAl=mF z)}=LJUL2;T%l$OzN;Tm;#7pVabOlZsKUmbds8j=zdbgzb)A2lpqwj(;Y^C`tf4{;n zHmz3nvD4~&sPJ3>>ka2>s`ZW|rC8fN-40J@`g6&blnhv1vZJ$X z$E?K`jakLw1UHfTx_y|m)g{~4m&hW0jO}WCRP6TWm!wxx#w&w*OgvRlibo}^4kca^ z)VUt`Zs2!>FY)YZ&8{wwSLB)_p~aqruXK}(-47KHH{D{>Na?Xdul!=uLk9KgF^oIG zicnj7qn$>|hdS=_(#TSQnr4*tANfy-q;O2IRn{Yk_6xgTLnTfZR0H-HRFm;I%!f}n z*A;(uL6c-Bo}?7(H~h7Adf9I4-tu%CJY68brwCPn(QN_V&Qw)bs+b2jirZUTnME8h zgSF!WqwBaJy*>3epaJ1f7=1>;oWR)8b%%QP8XIJ-*Xx?18DRL58T!~BcUYU}Zj7EF z>t32G)|1&dJ!T0(x#NB8b@O>3&=#%>1<1bD}+_|BQO^-O8Yeuh~ zqETU$>)lPjC@tN$*8a|KtTc2K58g9I0w+YeD*20b|d8_|X*|a>?#E8-YKzro=tc`N;z!fSk*%#3^dn%s4MO`gIY>%+|a zt$s~GUt%N9OyLlpCM)9zzb12tl${F*{dV2QnZZpJFVCi8l~CacS@ z$<^pvoI812{hC5$w^%cI8H4ctWUTRPGH>x~vTye^u@hD`wJI@zsPi3m4ll@&+L&?c zs48jHn@UWWFEQ>I7c+HrZ>}UJ)W==d$)EUr*@vJFOIt7!tkL^0-p>XXnok{rM%~gL z*0-XL5%*Qc(xuH!-jf8EV?QOWS=yk__*(f`$Nr)!I)gsuyHaQJ-dFs>DCMXed(L*i zIeME(@6Phh&dPHvXqI@;lpSPWhkc_)4>s&&R#v zzTPZlCQdkW@W0+9W%E$fLEEiaXqr{A+q2MQIBpVGw<&AgXQ9bX+zhU6cH(BC$@rel zLi;Su7XtqbAZHq#W}(S!TmbxLd!B_RYjI)lTkCxmnyh}!S!g?PqL*1{2_`{$orU(f zvDwqiF>e;yP-|~9Axn9lajW=`&oyyGZuC6)>`P{qX%d-IGiGj9x1{f764{>48`FHA z;dtLndD5IP#d^$ryCs)5Croj>dvn4RT0PzOI{S;>w3%OIX6B6G#F^ivSzAh{Z*)I4kx-4`vb_piJ{hUOyVmDOx8DM z0^wtBzCI-9imh{VO_7_53d$eqq7yPU`pa-@Z6I^R|Lxe(}c!YeUJT zdECYv|C!@V>cSJJF-L6Y-5zIB_g!&NTwkD}0_ULBFo(?aF{2b2dHIEAlm|^>+%ufa ze%UjeJr<>|ef*(u5C6hDDMuCNyAMBxyYU3%EJvXypfvLY)USzQdgop}Jpt+QIPU1- z2`G)1#p^KlVyCK1pN`(#n~!_fV`j&E zW2{&IX*h6ljb$z8r=vIbjk*?HNUUb zCoSK|qpSbDZ5nZ`g0G(rz4~*{Kji!wt{?4t_2=3VPp0O#kA$Ar+0vUp*KyaVL*4}L z&5QCF?Le!adpfFgMpib1A90E-zarDG$nYsL3;l`$zarnS$nz_5{fZpF!tc{ezfUv$ zKF!SFZF6kk3Vr7VzVm$Fd7ke)*LR-7x&3{Mt%orL(DhRGvNl#%i#_<3o2eJpg*q1b6rPoaoxzZ zTwh%xI|{GzRs8qm_R@RKLNi|}#{Y?%_}e>luP%OSmxwQOWDySCpDu!l?;NQ3&V}EG zv{e!Enfb<6e#DJ#;U>+@k?hc)$2!pG_`)qay084Sl#F5@`mSC}6}s!l?QyX8r^pY$ zt#*D(?6nAkO?+@^GN9r^dBr{Chc13e{M;}!GH*rxS_+l_nqUAn!%^@wC_lGCfBK(B zzEB**roY_Qxystv{QU7CJ2JBro*EwyG0UeZ9^BZ)aO}}@fm79|*(CeZoG@k+4gdBS zySjH5=fn7IarD$*5&5SYYUKSyI1-v@|Js? za)X>4jEAje=8~9i0cmdS8C=8Bw&+`5Wpw#l3g@Fiqt}d~A?Q>9_yD$MX;AH=of$L` z>t+U(h1k5HaCM=J%?q?qCNG=?RjA0nkpMgg(gs=Ifz-Fw3MlWM2Qh1PK&3h9AGsD@ z0N23_q3YIE@NGza9N7dr;XmLd@F4tgDI5tegG$rO;beFvR9ezDM%v(2@FMs&ywnQNi=yr6k7 zF;%x*>EY`C%!E`zuw}NH0~C! zt{sJCVSK!5?$B3_R}~Fq<7m;y>al2;I3>?{hy2sUPxawSemar}tHQ->YZIr*P;t5! zRGg+l#VK>JO`PrxsVl90Aa$NK5K=c;Y4BXQAEX>ugW-C(KYSGqfr^K3L4TgThQyr1 zwb-~#;#~exp4FNZ8NT{Uc4S7Z^T(}OWLGtoTSZ)J#-_VCjJ+^)W{xqY1#2?6i!A0D4T_xsN0UjiMAxXn2Wl?v!GKmaFzYwy?pjbs z@1M-wZD%*4lII(6HrGr`)fzT2!7;abB*s)Wv#(RrZ%5<0&Dzy9G)S5{d@Plw4h3B2 z&-ueGAzC&Evm+O-|96n+jH;ZAr4w5SKK5uo}s%n^*-1{2}kurK^2 z><1r!^jjj2!v0YHN`ZfbJpY(>kJ$+k?qTf>^=z>Z90>VE21A}vBST?2)ELvgFbC2P zGVS9aIG1zGMuL!URU$QzX-ttOh+WfO(zZq-oF5F&ha;fcOWNAV&*3Qe02~dqe$FBA zNjL`n0dnuibMR28Z%|m9C!#M<=zm4F!f|jXJPK0(Ss5@LX2PK`3yy)=a1ta8kuu2I zK9N&kKBV7m6~G_BLil4yA0ToUJR1HU9s^&3$HI5uM7R~wM~Hj`i(vv;ZwlN8mOy=L zG8K-2$H8Ja4Qis`@lfByo&XoXQg|LLgBQYbxEjuaH^B;c7p#O2!YcR@tcLHv+3*9% zw?L5{a2`w`>z@kuhNMyCa5x`kLeeUtuW1*+3RnkEg&}w@TnJafMet%+55ET+;1A$p zcmrGlZ-I^QC$Jgn+msgg6g&++3tQo9unoQq!|;9B4nKjX!@(5AWpD&M6CMT6f)n7` zP~WI5hgI-gI2V2go(0Kck?+9s;0o9QuYni98{jH<2V4!;!;9eWVJCbWUJU;MFNL4N z%iw{O<;!6JUIE9#D`6)5F3g8l!9w^wI0=3qPKDRPli+nQ1b+aRK&I72&VV<-It+n^q*Z-@QhPhdLyDI5#$g1PW#uo&J0E8)-K zTzD@$4c-SM@P4=oJ^&wwYvFV7A@~V=7=8hN1yiXKABDrkUIL$h z*TQvh4g4*<4X%gJ!zba3@OSWa_%!?*di1~50=6A;VJL~xDalI{yvr3J{@W&bm%#N{}#o<^r>!z(|mm@ z*^!x6ehvOU)h;(H*yHgHeI+8V#dR&*hr>iXXZ_BbZpVK~iNaz-cg z35nBbQ{2__a}W8WiyuYOe9H%{X@pUJ<11AYcgMp3=O;kLT^Sq?`F7PjUzNkToX>)b zUB`FazEWkAru>S@2G%ym=RFfQ2S0}^;VDYpO9jecC_|s7_GtrlhvZHXz?=@-sF-K47 z=f;es%nG{Dydt z|9=aWZtGzHJ_*Obr=iNl@8MMV2Ur20g+cfnRNc?>he^NZp+8=~tPQ*#`^Wg=HMR|0 zqA;4njo0XK*jJ5Jw?+x{rJZGPEogt_X9jR|J4I<@sL4d6;_=Js=4$E%#p8)k@i-d> z;2fxUoC{SqpA4tKdGG{yDpdXt!df^VDxGRzD_j7->G)jKEk2{eVBbW1wrSnRuNj{_ z-j2^*?n_z3|lwJTs7_#8L2_FE{NP&K|FhjRW1ki(hOUyhhmMr`Mt4;0+jnZ$ibv zJ5c`pEBvPOMq_*&#P5Q#>uBiVz4tepH|i)0ikA>nyexzPxCkm<8ldvVV)!AvoDS8# zR(~@AA6sUAO0ao}r%P~k;bz7}ZF7BGU9GkQt22w(YJ4)$)w8x{t@#MsyTqW6<91VX zn9b{`g@?I!jeOx;s;z1At`708e(qdd6k-v)hFWGqIKGYSaIV{nJMD736=K&M$ zp`P;}IG2sjgJyBlsNH`!7i$`s9Z`3t9cNLyTb#?w+G>JL3`94CnL6V7d$V(~y=e(6 zqc@pPaIQ|*m}Jc73f(@Fh*=0)hU30q>1Me5CpfYb_xVaUJ8_@j$oQUpf^(ri1pW^$ zVm`r<*|-4s&G!5Wj;zIn!EdeiPjF=QYkq>$i4(nig7ZBSo?bt}S#4~7^-plL47Hxa z;-19FS4|;Pf^{h&_94wI18wREO&)OSjTX1wkj|+$SX0)nH>7jwjTR~guilW}sW)1< zVQjr&oObFBU5lwV>`QjNfpanSh6<2<)vh;Mf^h{%W#7JRR}L*&0h$-!v6Y8?{Zmth z@W1oU#__XCpl!ge99n{=rx`8z_Qh>J+g{1HFMsGU)Eb$qvtQHwBqs@+fLlF-deu79oO5N>db1-b@npAdY7~ND}8?# z({U?(tGw^3_UYv#EroozJYz3kuFrasZ9jkc!r!uM-kX_LjmH4nsn~VEwVwoWw)^XV ztC+_Gqg(ypee0o?ocMbP=9q>!IwaG*73fLovz?gNwy9b(;pS2Wp zG>K8@i!xO^-{==*ySEN_x18+wPnl{D)&aj9<0P&d3vRx_v3&`ff81%;pRXz7x$g0> zot!?*cHCYYTwfsCMbCYe`z4>d$%VMJ!K3-q39Cw=w>G$&b=_6`yMHaGOymm@4*9;J z)2S*TyMi%Ez8|;ITHoGU;cmFF9sh-$GDy@im*uJ0Pww2C{oh*QachMqe{k2Iu2{eJ z&L13g<7bP{z2k%bTPu8bmoaxf`})7N!uMp+_y4-J!c_r|tNmJ^l>QI>(C-^sEBtPr zp|7Vt9?Q>OD_oMjR=A`T>+l3KD;*v4Cp14DT^`b@#@u*EO3~~Et%QiV6C5eUnu9dY z=$LC@q!i5#(Cl2yEp;ST4M&=5biA`SQi|TXYgRAjc+YO66ulWYGs{xV>ZEhHnxePZ zmPYDQ_1@Y@DSGp)8N%pz$84k&>sh2~qvL(Bky7*q*DL~+s&}?VO0hmfsx;<4a-vl}F_vb!UtSgSnU#h&ghB#n6WH*=aKrCJ#bnMq2q zu5qMP>v~VO5$R}SBd5PDaSunrhNrtes!O&=twEnEetqmtS;5k$C#4P zF}`$+xyM#VO0~8*Qi|1>YF|yYS{y0G+JU4Is{YnA#s?*(TBVMZVs&}Cb)Ig{-sam6 zY~12V_`s1;tk;nARwLDV%aKy7zauR)y3LNnx{^pCqub#~Db`;5FgR&+dplB!bs$oW z(H-naluM-fMt77WrC1Y?8jNm|BayF=>WyxWBM}Eki;S+tky5OcNOeZH%8|%dNQ;eb zjU%O4_aQAXy0wl(nHgxuMymCZBc)gg)GQN?xqgn6VrlT%)(!S_!#&+-PnYTGay?y< zrz`Pvvpik3r_)HOeUBDTcjx|=H3`4;x3)V{sagmb`uiFW0Qi_>Ki|*Pj|a8G1xl6xX!YEX6Hwe^uw_e93jz?v&E#%v68 z)b}MBS+KVxxu5nHa98Tpjv4D$XpaFM(S0jSeC)qCr+a*C{+79;=a=X{5Pco%X5R&OJDnDpSk*ddJxoxlS-nmNEoxQnatflmcNoR@WONz-s)GJPQWE4_e29- za^K-4cY0g)bXMPUc=hcKzcc&xJZ9>F0XxHou=&Z+)dSkn@!#Pk+gF#c0n4`4Wm`7y zy}o1{zQpZqY>r}bi|(t=1SS+iD;`&+72N}X)^~Nu#?G>hp4YXFjdI0SyO4L5ZCPEm ztz-Gtgz!oHwc4k8u}7G#Sig5H$8V!Mza#{knh5;n_%zt`Dw)^I+-meUy@KYFvU@yl zeVMc7=DQs++hR)uy|j&;)f?T+L$$e8NmjPi&NH3WTS!aAz`&JE%C^g|qP1`PA@#f- zRFmJW(l?Rhw)wc$u~ymL8hHK@azXnTO|s8dndD0Dc*rDFn8uO`jfOuHL?Es29V!gIByZoldFRbfr|$5@c63x}6Tp z#&wN49x}b5@S%#QRqFqk(r3p` z@KQ8y$jqMl$V7&5%nhI$+D)YlCve|R(*ayv@>XX|iEOC8-QGmYq{k!J?O6Vn6&`NP zt6OMt*3Rm;+!$~>k+CuGWeN86GILz{RlaTC*Ce3Aw-+AX^ngMfpVl2~-T2dvWlB*~ zM_{k>3X`JGD?Hu$!Cw5u*QjoGZ!e53!n;{N%%G{=d_a8%nY4R#yXhYK(f^y%M!mED zoV4k;DagZLJ>T>66wlLWG)Vo92hGD)dsh8Vdo+hv*PG7ZN0e5Tf73nLG}5(w1UbnX zxRQ^Dto0=ukyTrI&5%)$u~wJ7CcCS2uf(#AtIIZYR=;*pA8&)S4Fm7*bM%wTsT`lf zAyYX%C$~D5KWFLr;u)Q&%H-o6zOX8LW>pzGqgCUf4FexdKKhU0ah!d@#%q}6yC2)^ zld_}@(;k%O@Fx#1dvbNzBb$C?wA!Yvz2BxwIWZ6CkG(}~ymrwb_FQArwvwI3&SP&A z7W_6K<><%cxpl77>#&CB))~)r=|rCEGM=mMvbSyP?nJoXrfS7v^=loE_gP&{lx*ne z>a&_Kur1vAPYpc(@1)oI64g04{)p8+Zb|j_v0lV=R;33_pg{X_*wHoCwENW3+mF6NsWkAs1vtOh&I>pi{|p;jj(4l}I?(B(q`G~S zEsBCI@;hA$yDOrnguZaN+^ zHCI@%*RfV|g7VQ?^)KbmwaLbx#Ln8)SIAym?d^1lcB{7&VYtQI&~E=%Zls_n$xJy> z=X&Ag+-kQEw~wmlNAvJl&o@jxlwb3>vH1k5Tplp%`JSmKGiG>bjC@lzVD&0h^U5|Q zX{*hUhKXq7YkZg875@kuy}$BKz5H+fxUnC9e?5crU?%?lYAD_Nt0CRZ`}3_#Pj2gR zYxCsAvCo^y9ou)d5AvLS9}{c!XY){V+X1W3Q%3NvD@@OnL6^$?A!dN--FxOg}TIm_KDir@xL zA6~D)_8aq@=xW4*wxxVZ8Ke&E<&*3rYeVigcoYb+Lxb1Hb zd*+zzownM9%uQ!gF{(f4(i~$?drN^PNFYX5#O!hh+EudUW2c`wy-E6EV^~|1iFIAT~b*W>vmSzY|q`_UxxHCVZkp5(9IvL=~T z@G6X?4u#&(Ch4mL^VT-WY$>L7V}ox8nNBTptoCI+WUhvh9yXG8#I#-hF4B?4 z-0et9&DCEZg^lz8k|ua1S&tyuHvWWky3zdwX_=AU@~-|H=_quAtj&q8Py5oA+kQR@ z=?r5d2kA^BX$MQ&W$jj(W$bFDfU!negLIZLcPrA_M$&o!wvFE)Wg2sTK(cLYMLNfr z`v_^dk+i3_ZR23xKHK*ggJj#7j&!aur#&jaW28zX+eQUB&`QvUoA!|L^sHq ziBw>utB|sdbOVy@zqgQnWbD3+bhDA(L$Y1jn|{zOMz=50twuTk$-bI_WZz=~l6{Xe zka96M$XbD9-{Tb|z2!=>UPt=Ak={YFUD=K_#@HB}Y`@n|vNDlu-7QEt=IXsjV~zB_ zcU9lr+vaXV$}m@diDaAm1j)`#^BJPD%{_!<`*|?0C2ie8BwKgD09V(BbgXgjHYEG% z-g~=Ok3+het4UTV(lth!g=B~5UeDaXeeBr)gRIF&wkvldU2AOUUH5fHdJxIB`!doG zjP5n0>y7lbcXbT!zmG&W$a*-<-k>qbdI~Au=w3pyL!|kzc}90Ek{ugoBiXU>5|VB1 zh<)w1{7F^@(h_sG98W4hsxi6=o;1n3s%_A08`F?#jk!{!kdexfY`axR3yrQB>1Rd? zBi(JJGm-3&e;4T7wGNCz9;Wk?qr=_;g4jC8GM?)ONS8r^$Hhae5If`iS9 zarmkZ>2hcKCh}(pARXw~*|6WFsAc zjyeo!t+`r-^q`SW^2{wmI@Fk>wA1tatbJHl~v7ZA>NE`vog*?EQiz+4}|C=APu-Hb-oB@)B@2_Y0OC zd%xh}NdGbW1yA+j{eRbf!6S$Vf$ZFzq*r5Qj0l-6goom;ot|ntRC0Pw z&ly}v=0|m84wWN14}5WEm!o%Kw(pyH*^!y!`IX0}XPdo?aIh`d$fuOOE&Uo`IX-=0 zs@uMb^`P@D_yOn!pc@m_6*spxMYn;D-F8?G$j@mq9J4j_5On%P#oHQM1~pZI72)Ex zB39+A4$POf~esIVx1>F}4) zU!n7_g)TcPquKmsN0ZAdq5sk4bGNqzk12c8@T+^s|0;V5!vsh9?f!Pz8vzv;BcXZ? zqhJOc4He!)oa-v$c5+IxlT#9X2TGf*)04Wb)29N(`Uuonr*(AO_|bLaS$DX(Rhxkq zX=`TIgby^dHH~2>?@$~c4+Udn#Gx?z1-j+OO zS?4|Q=kD0YZ!J-CDJDLm=e^(8wP#1Q?MtF_kL|lQ6-WOW_tiZDWvmDln?R1g{mUus zZhqL6J!e&=xVtH=yRuX4eC`*}UaN67?fBgtyY{+2&L;DF=tfN->gzzbxjE3-+_Z?q z9o^RB{hh{t_sb9d*D^BBvM0N5FJ@Vg?&YqRGGynk-M>dq=I!)ymw&d)NN?t%>kaj8 z&Q0H4rO`wuPe$F_{V?=qNBW*}M11&m|31;Rfa2{)-}`+`+S}EJlXLco$|KJCHrFiP}l6V4^D&O)@$V3-FCwcU_fin1!}*%JQpnthgxkrs+^QVCfC$1 zF{`@8<@H_oZMWUnL%&76wFhkvaTU#mJ*3sH+T$;?Yw~d~=^VdoPJF)H)jeaj{)mh3 zUhL?BLVMvA{qglz&Mqt}TJy==%cdRv`3m|XUt=#kZ8W9L@S=O+ZQnlW@|W*O{p7qE zhy85%Q$K#=rnT3tx%%xH#fOETdS%lOwr;p(3> z{NDZV{I>sz{aZ%9^31D!7TkW`2Y3B?{?f8XJ}+H*R(*2K@Aqo`^>Iu_ z;QOziGV!N}Ri1XiUH$Sm?1T5s@t?WJo;HcQ*S)dfxR~wX644|kXoI+?k&Z9=ho0#; zV$CQu5))KR75{Y=YfjS>A!h7t$SM)7e*6*>w(+;WPC5D-U93AvXcH3-n4rf#*BxFBpo?`!UH!xac~rJjkGP*cuHT)#jG6f{?j(0}MS`w@s6(#!DLo+PyWQPkyc{#rFrd)r7+|Cz+mp7jK#_d}%>C^L zYDeX0_H$1ATCSN)*8r5S?azCRz#m()$T>|iwu1KPgVFIpm1D-ex74<+?>V-TJu|mB zngO0hL)-S@y7P#0p6Ho*!8PJ({?<*Sp-B61-RYCy*X-L(GoqVDF9qY>(dV@Bn#yh( zeM%c|=FD!I)!j7Lb<_N$o93}@8qIZ0;}?w|mO-`xM0r%h!o^y6Fh-*!Srey8<19dt zjM`#3T5BuWDym`8U+X!FTU4W|BV81!sD=d+t@-=LYR*FQR-EQWnIY>%ZRvIBb8(vW zXv!%$Q8VwL>59{QhGr5&;!!h$DEnP;8ZF?il}w{%^3hE4G}<>W4~X|H1hPtaT=bPd* z^7HL+8u?iz+_P0Ecl0Vv8WZ#EUx9|I*fYb9AAABy#cOLgv5rT)glg6^!!{u-UrwbO zHB*C_O!erQ$(4UjiPhxE)^BJ%qqbTRFXvTZRMUZ|1$?8Ls}P@y)7*;YASVQfpA2VuUbdYU1-j|ck(T7&ACS2p3;U#KyZPTe^@+rSp#^V@Od0b9rR+h<~#*C}c z*SM^~B465Ove}-*rzxD|)8yvV`8By=zb5}0zotNG8hfw&yl4EH{Ea?ML58Mb#M&yz zRO=U~$)4iZX?e9foH%h(dH$;rx3qXmhvm6KJVWej39dHIw4nu1cFCcmKG zuPF@sGzD3g`!(6u`!$8n#A|Xh@}Bc+^561n3j5OP#rQclGh>iXla;9j7-G$2Woe6x zI89EYUz2-|Pm`U$#;++@>(k_9yyn+rZu4n!vxd+v$KE|RdxBq+JI}Ali}*Bo`SF!}&-W(v!Fnu3fvpQbQNn^wfyD$HKv*W|AAYw});*W_gssA7$A zCoiLLkWZ6YP~g`TPV+Re8y{2oQ}@p2Z~QSXX47NUwmjX$8{q77%0n>Nu(Tz}CP%GJ zT3Iup^8!{KZK{o`ZA)4bx49{J`a-9p z9rQ%r_c`~|9d!fOZ1jZ#ro9uH_fD)}&C-S{mNabTF&cL?;DS`5k@u;s%}dJ}WVWPj ziGMsdDl=klUyU8SH`iiD{M_>s?7cN@3tYDc;wqbKm+02IN6b*Wecm>?z3oiP8jj#3~kMjw;NJQLu;GsKPvJVsNHi94o`ktu>26lO|?PoVcrEJ84qk zq(a_)PoK;FAUoXmn4C1PeqMqVB!^RlwDa?GXq zDWwT%)|HRkw&44(n_b3C#WJq0HB=iuJ>=Fh83XX zprbR%N}C)z)S)XK(|K@gp<}N}K^*sBE?||<_nXsjM%(Y0<;hP6#(La+ejEA=F>|&? zd^o73?cL{NhJ~a*jNfCJ+3c88kOFDkH)hyJ=F~mhiJ39K*IDoG&EVQn%slLv>&?CS zxc4k(j(XNO*Q@_DaMO;NdmMAUxhMav!_1cFcI}=Xu(JNh!x}#wy~W=&F0^6h;pc60 zwD5NP#XK13%2Pa6yziK?O)7mex?&qK>F4vi|20X`!{mdQhD=u?{Pri`#T_Z6Ng#04 zl#;1M)umPB^zkFgDo-q~sG2e&UOTgN%8a72lFAVpJ1{fAE`ZZ4tv~s7231=aRBc|c zm=&ugq+0={{(j8Ce5jpW>>QRg)V4OaH7^VY##S5}P!V3*a8^Upq5zA~w=^_{TDkv6 z{6_I}4?U>JpZe+08-4fuL(cU8a$z`P>IDhmtpgE-*wzI>hQ}p z!{nK9V01%C4NGMB6qyBnMYqi`{o7?SxUf&0qlLcn0^fPQ?>x_UuHAvXT{X=}i8h+0 zCuL@{$L4z z>24nA%({{$bVfs4m;w=`AG#=9&qkbDn$|uRgC}fJ+Yo3MPg!Bre7VwxfSLIr|3tUe zHfH`R%w0&Nm3HIsJi$KcqDuq9tGclA7O43Klk_~(N1GU zxDJ0hhp^{QXW3CYi>Jk>b8&r5)1r{u$J})~`!>S$o%%|Cwy&UnmAWC{+ksYfvHham zsFWA=G)=Z(16sXV#_t=?2alaYTBw1Ua9`ybJsTZsd zAm!WI3Jc)B;1swGY52f}uk2HBO;N{3It{opfjFnk&A58s8~g73ov z;ir(@N6pTt2SW|R2jCPq9J0fi#mC_heK9u*w!+a+-y1R59nsfD3=~Bkg@?j7;bHJy zcsL|Zts~(MI1b_`>nO;*txT8$v*4*P8*2CnU1TB5gNq?U=#fTP2sLCn9%`WUXm~qh zV_&o5=|rf3q)G5GSOooL@(_l4`o*^5vRIP+ibbzAcOOT%!#dw%jfr^Rqu{NZn?#yw!O8j zxi!w@nhtI$h;M=eiz6#KbM}CMXU)96AU<14#E`|@m zMyNJ-Df|;`hDx6n=udOi<-1CAy%f#zrMc`VyyB@nq&S3b)!)q8SW`gUWA|g^1eM z)8Sxv22`DLCRDq87F2#)4wc`|h4RS?NM5qegQ{CPAU}N#WZK*F;SHQ$0PltuLgg>o z;>h3NMQ|&;7^=M`k46T;OQG7^%i(BvB~-ghsWa{F)lgxi{)%XI>uaG_5V#)Bf!x#V zbpAuA-63y;YM0kQy^{YCTn=x87r-CGtKjYMCU^(*=krDAb&#ayP~FCVbFTV&AwU1D zaM_U=^)G{I21Gd%;=}%p+t?o^yQx&hiP2*?{+IY{kg75HZ}2a z$Pme78qOs=i0WN~iAUFIIqxPFBJrq)5yf&lKf6)3n_xvkSU-CQCez>2ePa4#;U;(td=H)qH^YT+3#8puUpGQMY<&Q! zFLl4jrSL;YJ*a#Yq5iY}1#f`c;LY&gPC zdjG6V*~T42NlNdj*QbVBPqsC*qwbK2bc}YihvHh+#oRl`_JCSeeZQvcRJ*j!>8DeI z6(?udX3Sstzl)!;Xd^!zNyLr9L_Ub@4U^%wAZ?o&6QSOV=stX#7O8^!KxO%XP-#mU zi(C(xq89lf+z+mSw29r~JcM3HY@AbMEdprjyp_K_!Os#(1;@o|mr8vhxPX}?X z4v+5X#`zS@Um1*25uw01pCim@Uuvp8#oK&-?jb*P@l%_mIMA^_;gi2;4@_G%1O_<& z790gx!NWY~9|UJ|PTwF>2?J1J84mqt{-JbeU@(ZnQNz%Yjs{6xOp<} z<)tD?PW5o~+%6~wDvFe`men`Z);kS@KYrwgE`G7`Gm`M>X0(&0zeb-ZGMw{6;34o( zI36Ajiy-4+k?D}}u!zD!yV@;&wx}#~%?*Ugtb4BbIh&t9|G0KGVmA~YKQZrd_c&_Y zGH14yYSn0wQ{D==k9+9eU7U>Kr@o*L#wAU>(62S|k_(5UXFnA4yi^DkFZ7&EJ2?R= zzZ?V4f)n8-un1lUCqwmVis5~53VaNfK=o;+!oNe_*+jO%=`aDm91khW+G!;+6qdpa zSO&S5H3MSCqK_Jx4a;F2oCQyV74TeG2|HmGyaraoTj7cD7ZAIVUqkvsW<2R6_-D@N z!oR_jq0(j^^p}SxX_Riq&#~n}c}!`p^!^*^pW%B>lO356Pxqy_{hnTFEmwOuCjt=TqeRP2}YGOfa{u+cV?HsNdR_ zHH2&Hrvx)Ha&q&t7A|DF$+pmxAa7arj~a5{QRmm@%3fY<4x(&9#A484p-wrjl|5JDYyc6CG?}B&3pTS?kyWwN-9{30NbIAJ= z>lcvs9o8=)?>DRmU|;I^2O;k%tcM`)8?1++maKgQYJ&Bz;B5G7I1fGn7r=F}8U6-p zQuA-&qi{X^9eff#1D}FgPV{NG6EYPul0k|6Jv;G9{g)hS{$O5GiP4oOS>Ad^-jx59q#7cdF(Zr17# zd53Bx!#CkxP%D8ea zQ0tWqg&)CTFo90SL2z%#s&J75;kV%kI1-M5qhUTIts=#6EUbZt!WHl^cqu#_UImYU z*TW;>Iyesg1!lkvFbjSLN%Kg5IxRVHZzhF8LQ@J4tF{3$#YJ_UpDWmp3@ zzy(nIvDL!mjywe~fPaUp;J@H%NXOLbglX_%I1F9_$HPmZR;#-VR=~^Q$?ytz8oUyo3%?70 z39o`L!SBHh@cVEpyc%j3xoe>IkYioL$Y6LK91gFCN5UK6cz7c`9?`aLim-V67Kzl3G* zemEaK0Gr`jcs6_xUI-t8SHXwj8u$pj6Fv&p!e7JRz{lWA@NxJyd;;!(>)?SrOZ*lN zhwEVhd=hFWxu>A^k^3Fg7{$|2d&oTl&w{^)tKhTnBKSvmHGCfa5WWO&hA+c=;VbY{ z_-ELMe$cCMANUuT2492P@c0c_2H%9W@GaO1--hSHci=_vukc~G0j`Jd!WZD*;hS(H zd>6h4H^a^FU+{hS5&Q@I41NHU_ocmngW-qp0Jsfi!H?iX_-{BDehe4F?QkXh6y67S zz%KX&{21900F_d&BGD zKJZ6yAiNu92oHwK;J0A} z2H*p5ID7++fbYYR@Dn%+_8Uxl0{4Z7z=Po!co;ks=E1{YF+2iRLRJHfXf42Ta5+2* zUIf`MGx8XuO^*ByvQ}v1Etm~?EV6RoK$r`M!aO(zvXW>d2NuFfa6Bx76QEWBJO(a= z6JaZy1TTk0@P}{;ycte~ufpTt`*0f6-iXs-@&SxBK&}0E0vrz6awBpiEQ5t`CM<#F zumV=VT1cNF(gLgCIj|aD2Tz25gtOrra1PuCPl5+Ch&~q{2~UQFa2_myr@#t$Dm)d^ zSBWf!HLwHL!mD5%ya|TjZEz8M9oEBt!3NleLDI!=AGib_2peGlE`>+JCRhmR14U-T z78ru9a4`(SWw0G~z-90=fjb(1|A7{hKv-#g>W`p^#7>)7x*lyYyTgg5QO+78cQo|$Jd2^ZUbU;o#CUU~9avu5A-+H0@9X3q>*308x(U=4U1 zcpZ2*cs=+CxDea~vi3}E1#7`SfcOKg9~OfjaL#?}R4>Z41RMx11=Y4Ug7N<1{(<#X z(CqR4+CX}7pRVGlzjDB9gNR<(U;e`=|F3!~xO>+?34*(K2iJRlCq}gIRF778(Z0J` zZ3pkup!)6>P<_X}f9t!?g6g{zm;{%Bv%p5M23!Fy0r3Zdn4o;02i4B(HR#fJ8LX8@5?1BZ5%0U@#EbWx;;4S?XY^`2 z_no#)jh#O~*g2(?yEzzT-Q9YXD@^5x-DXt|TFTFv&gR#-OUw%;hf~C>m2W;LIjaJn zQ=xI>{8AsgJFM#A*Wd&We|f^>p;HLooh47O^A&2W%j@Ot2+IMO&Tk}-`1`xBD3|TN z3if$Lw>@7$5;yYW(1upI#FSMH?yz2+ZUkNh_kU_Q`wpmf{4R)T=Ha)oJ<^YZMV$W-l>9vbmVx+lZ0`l{hEH9?`5JIO_!Ow} zKMmdo{sepm zz>OfX>b(fw3;qmz2;2m21b+^00r4-TUI%{(z6EXuX+!T<;9=m);Bnva60%q@M`c?@D}j*U=#Qn_}}0kKy||#Aa(V&fzaL`LG5S#6Zm)V&!FCl4=<(1 zrvD0REbIXPNjnVW7aa5PxlG_B7$))Y#n|jJz7$8}s~W5iB0Alu0T9_DqLjNi7+>9Z z*oRf|Oq<3S?uzIb(=d>@)b>ovvW-t=ErAVWyF0C^$m=={4&SwILQIMg*ZOwCb#kq1 z!J zL64ZY8vzQnaM4mE%fAnZoP~$_q?I$xwaB#{&6#ez-3O`x?*}#Bz6hQP{tu|}_9al` z?aN>p_!UsP;UVx^@T*`Q_%-k|;KSf*@ay1R;5R_sm;WaCZIC_BsWsrYz@LHN2H7{^ zJqBto$alaa!S8}cf!_m91|J8xN9%nbeR2m zr@%jg?9E9XLfwA?_645-PXwO@2ZQ)!ZQuA$L4B>F71VfJ3tk7l0Ls_=zu*#ZJ@^@L zBbWkT1m$zauWS3tUjo0t`7gl7z+Zys7H>1CzWEi%*!5lp<#T=oJRQBb1!PaT_iON6 z@He1*%)bS%1o0EwKJ(v!^pW=}NEyA~gQV&4>VeejAiq=__y_P^@C~pBBE1bf9Q+e_ z9QbE258Mu(1#(X_H3IxAI3C;q&IU=#e9doxU+26X#Gmf%1lNK82W|)d2L1zl8^r(W z?E#2d z{WP2F@i#*&j`WkTrmKFk{nNJdYKSG- zo3xm2+XY&U8%60IvKst>!f`f%RFG7Slty&VtW5r39u79xR+wViLg+wwIOAZeAK%#! z#hs>hjlb!x1(dmL0A=Ow8pfVa+2+F8f399-{ib$b1LETIo&x)UPlI{j zPrwo2GvHW|`$o1OqZL#co(C6#Yr&=93*epLI#Bv$Jt)1h5nK!Y415`U3ET>90(XEv z2j2qG4XJF(`7)@r0dsZg0`S-19Pqaw>k@A(I3HxsKo|L=PF@~qNq_2y%b)aC-2PM? zwZnJ7#a-nu@;FAGlI(gQfZfc4!JT7uu3Hqi8ALg#&m6C)%Q8>>8l86vOiY6Nu66aZ zSsL!sUR0)moH_ZK+ev=_WCO=t(4Gy(YD<>!NW3QbZ;~D>Iw+leEH}~Ic zzM2ebzCuUZd^HU`pYt+Md0z}xfYZV2!5Lr^I1{`Bl3k^dE-%7o6f zeJb47OC8Pm)u85~3Q&7)uK_25v%x9g9Pk>j5@en0%>%CouLWDcYVdxr2K+jB9r!57 zGeRlJ!~!s`=Mu~hLnxc-ts^dH$}hfGS8>!{y}$)sfUzs zk$@7)Szi7MEE;qa!Ac0up`bF!G=Qq+&#tYjs>GPm6DjVgl)uB5{U01^-&Ri4c+w9# zPQr#(o1YA-ug(CE0I}yyM$ZIgQ(W&J6r)8c!M};Q}Uns5zK!gPA$K zmVP`^BGsvt^CS5^?DH$sZqRc;Rbno9Dp(21|8^}X(XRn72C;8VN6rVOBNu@3zbynm z4=w_=PkJ$^JnFzFzy|OQa4EPOyb(N<@~{UZbpm)ZsJ8wz81Fyqa~nHBH^lqzD&ocG zPQ_8Zu>HM;Afj7areCIV0OPHjx$^|NK+U8sa66~$tuGZ=V)LpNn`VgjqIy==OS)&> z4yizI`5qa!LrUG-K-!VjWVfCh8F#^oaG0qyID_J0LcEF6nffY&1C+Xk)YOxCEz{aDDdmxXz=^sIUv3# z?_BU_;CbM0!1F5pkI<;HaHPH1-t+}6PyH|1F}CTg)QV=2wnnS z1Y(PLQ^0z#6ucFj3O0k&ze>=D&=kt)NVI^q2UEZMF(pS%id7V8W|CLLyIk2R|UggkGyJW z#UL`vp?Y?mJqe>%04NO`&!kaTvv6(|FDN6pY@Mi9*Ll=FN$c)ik*cXpS~=%dlDFOG z--@nOJEcIjnt01V6?!>%2G|J7Z~8g#T<|vVYH$@e55y;!S^%yF7lF;-a`1Mr8T>Es zzrj1e{{im=zYE?4{uul`_;V27MJj{x-3#V|_kjiA{ouLa7s1IOK1UmGUjjAWz6{D1 z_zI}Leh`eyPk;ET)4t^AX|BcRZpBf%$hxajWIJr`mhO+w-C>9zq{IEs-KIomFP^=i zqWi^Dum}!Rva>@aJAoaV?&td=8LRBAoU2f``}{@N`KnJXsCKvkJQZ9FYL0FIrB9cD zW#Cd!ez#A9>SxAs>IE^9VygrDSo{NK*#eH%^N+VAVqPM&(=9P2ZO~Y}gu154HyA@{7CPmkr zs!uD)MAw{evF2AD{|2f^Z-eTiU7-5t@1W+se}ET)yTO?tHf&0_MLIwgjrk*$0{4Iq zfggk41owhZfXv6KRv-iXtxiGN?f5Hgzb-bg?bq!MCMYNKP-+s$8pPhEkqutKc@8L_ z1@{$F3&6v{o4{OfC3pmQC&>Jj`X0y}Z+7`nU|c5TYtf;4>yS+F=b636cip~a!o5IHw?_%r-O>Fh)g9?TFw98ahdxh_!D}Lkt8A_O4&|pl((!xRU*&xb z6#sQF5BvitUAqlbKmQS&0R9QQ2>c7EI=%_U+wEic@<&G7O)?a;oBB8Y-W zhmGRvw&)uc)n9w50o9rTw%}qJphj3oVn4St^P7Ni}MG;Ip9N}=C!YaP2kr+ z$s+5`)K|c7fGX-Y!N);tz0_LpTi`bEQBZpE+h7OyT~O`Lc<9oXc^V^J8^}*bTrXb6 z^|+m*IO@v*;L^^0Sy8uWK~;S77!3+NbFb-w(mJD5h7p524s z_LAuyWT{I%8(kD{U;TSC*W_+62%XD#pNsi@&;t@$;TybsO2uZ1Ap9dxlq zh3Z<%PcH;J+$*tj1>Z}m>HZ!gmVYSkR({k8-Q*7DHmh$ocq1%SiLJ#C2USMKl-U`p z2sqg5-S;s}uMF?PY2zxUjk_>8erCngSrr=v~QM01;IdIfzQ!8dnn>e##{Ma&XtM%^t4Jw%Fl`UFY zwYa>lYH{i88*3Ku^!N!}dX!5&yz$ef2k+ahC>?vD&I-NLxcsoioLNRvQ>Kg?JN}}I zvgwnjO`kmT@`}k*tsPPPz5B`$g(qC^?yRp^bbZLn2zd32SR}h}Jp$fby`iPj3aI#* z0e>NH+n!&e*X60~mUL>bpZ3B|dHapU+uV-sCQy5?=l&c6siig$sHA zFBzX0hS}qXsa;gFkS~u_H1OhTz2z*(qQk#FclN@t0LO$^-}A37T*OMFE>g00{R>O$ zW*1gmTeYxiam`$o??I}&{mV5AF^wu_S5_{zCU>>^hktSEw2H|Sl4C0_oiui4#mq^Q zXH-m{5lQ16KbY;za>Y((uq&N^#X_o9qn8r)?yCi<-&wUmXNl)`R&9mfS>pMfRZEYA zoh82CS+%4a?JP^$?<`&OJ4-F;F1gMkxkyW@E8SJsSG5(Lx>DWbE`MnCsjYA(hc#PG zC0~UOu7BWP58O3=nbjaJ0oNh56_M6TXYRU#+B=iU$x%A4YiU$+y0_97T}#(i(9=On z_YZS@+b>qb!t2>|vyg>-R$oncK}M3aEE{PR-3>GbPFCNuX>$fwg_&Sl&s5ao$ja&~ zYm3+CRdGYVsnbXnaS$!WN;ThA$ zUo>{Ygz4TO7*gl^Q|3->D(VsBjh?%pqKveZ^vNnrU9~m{tB$8|S{??-fg{VZZ2Y9L z)2(C*zH}~A8zno6tAqVI(!F(6?oMI0pX#O4rcdC5w|;#Yq}~~vNN-1q+C?v#f?CLxYhR6Ke;B&#Qb9eS)=?I;5}aHDl7W=`&4ObP)*)UaYP@Iuv1XThSyR zl9yA16o%`OeJ3D#G~4u(0^|{3+_Y&^l4GY@ucvEhCCF5smrR>H!7iRop>0xdiA(IU z|4|zC7Wf9vFExQs=LUhT6?0t7S}T;AbP_$rJF_j>BRN-pQAS04j9N^bjESKFYe}$r@!3GSdJ|x|*pf`d|f1FV(D;#H@X!B64-DLSMA78#EN zzjEW@Erp||6|Gs{f5rE6a^_99O z*8lRzkM<-ISH65!37xad_;YW)H+9aQRbw9=)Z@nDbw}pgz8bu-KwSBMfe_A$T^!Te1AN3ga`gw<}`|48e+h9=l z$$0gbcYONQvI{@VuKeeyfrDSAQd-L&LI-%`N6q3U!nJsB^Ct4B=B!J3 zm*AqMb$J)n)Yr`_$e)GJettt`739$Tp#>%R#RWt2XVsyysw!vA;T0A2b(KS_{}YMv z8et6mYZv~TsWl)Rvq%fC!G9v9xr>-75jQ@1IJfquin@O{%>}cT)+}6D|L-QFO3tmn zskZ9hOvvv@%7ji@wD{jl&DuU_v87=rl#ZHJw|MTX1vPW4_;~dEx>@sU=IDo3oW+m# z@&8-$-ju$2mR0(2Fu&g34xh@l_dSZ2(A%H% zCRr5o**=xfn~=N;<4HG)N_ZDQU2VLJd@7+g3h8aK#GU0+2|c;w%`%?+@1hdk%}`ew zPxqlkCG_-*cZKo(+ouv9o=?54mh>L{AJOwe3yH+45r>mGE{#&9rd4d@5mg`qdiQ@&{R4CG>QKc@OX!p?8bzYEPd^Xb-l} zWB0XDg`Ry$s;P;o8(go?=w)<##`=F39kjJ z#&~!7RKmLtO7}~$y$5_M;e88gf$_fMQwi^BsQJcw&ZiRIOHkJv@0UJ>Y(QOSylp;} z@D?5xly9+5k#ER*AmnYsNu~Rsy}cp0sYGRa`978KZV7p*G>=g~%3^HvscdhPPtk)I zbGn-C75h}eYlRwZF>L}hz@d@AAT$#BQZ@~MQk2kIP)F{z)Uvb`xjmGCx(yiFl* zSIFBP@@kJ_ABd&$j88G9eJbG%I@(>Oe|;+9>FMY5EXHd-#pw2_gg5CJca^gERKj~4 z>U@i_$EOgH{*IUMuJNgCuQKF4h!r-*V(j#(Y;TuOCA@*hv44ZB+1?!s~Io`wVQh*UP68 z-f>X3TDTK^D&ZAEEivA3pGtTaLfvS*sXmqP=0G(VZ=O#vLqIJz-e-I&;oSxGS>xT~ zQ`8M=sqwz+QweV^RHO0M`&7bv6{_BNfAFb<_jjmI8}D78VkSAk^)yoFQweX&V7LFP zx0g4>QD`ooN_gu+-o}u(;w)B=q}{Hp^7N1Jk3$AoE+gmZzg-dv2&c%S-PLUGF`r6!zY2N34tX6RZ%@d3u+ZJ*=92RKj~1s@ZtI@u`IOXQRhSyxmYu z#_RAYK4w0W-8;rR)TfyDp;Urw?{S|>cw0l>Yay?-gk>_}dV4ve9EIlcDQ5eSw=3lJ zA031n;8SQCRM`cVO1)2IdpG(N5{rt`)ogE`PcdtRygNhQGa;`vZ?{h+yir`z)okxPpGtT*C4JsyA+Nl7=f%y*tfu6i=F&Zl z&-ZEK|E+tDTzYwP`JTN4zd#CJQEPkInhc2c$!mHD#%ZIg*FJiUwr;f-uX$H+)|&SP zr>}WOaMBumQlP#6nhyni8#nH4&sn4I5VRk%MlT?2{>xP_+(9D$(PI+_^=aIh(|BtZ zZ|7*dHOFf>vHGQ6&TKQ=&6Y7<;olJcfR6QE8bH&A6&ZU;^y+K z%mSfz~tmZq#UA9&U1uf>TsZ;IR^JBOcc4L^*Q_BAOUwP|S^igCd1&Xj? zS&DOGm1i|RZN+RjhA!RUm}I(4;o8{WNek`qHY7VZ_1X`mGaJ`tG?jO#drLb;uTtFH z#>)vuwwdJ}tCw#g;Hu7s2Z@H-)ycg*Ggc+{<~~`vH!S1& zo>{b2N8|Guutu*|a&>1}4|n7~w@PV|NW<|i@!aQ@|6H7oM8lyjQj>aKMWXOceQ0#Q z;9Az^K3TqJ<;(R)H?=lnRr%hw3JdS|LE}?u(lPY(KsvNqQSILjQEnh= zGhP@w_sQg571ugI`C#MHdtc^czyB%$c@@Z^E zf8;btMqE8LqH|AD+jc#A_RQ$n?a`xWrmq2P{P)qgZ#e$ClCHf~*xI(9gsuJ($)?g> zQWV_{gO1V3UAc{#LXb$x*Rmp^S~MkhyGrFgcc)452j?{`j1HQ*!ly~td;U+7Ids_S zetlP=GD`bkiCg({5M~64W+rzxNzd%2YGmbf zb%$4f1QB}GGyiq;*8E2XJ(<1_X}iLobN%_z>GzLsXgpbRf?8G?sGjFJI>EtvCQ&t3NWWBVYNo}Wd-^v;q+6{(o4JOrZtBUx9$6pB*$f- z8|xEhxwPFEq|AIs%4>QmbR++qeRGSmb{c588(hH~vMBGzD_^Y7jp$S^Pj4>mvq9VZ zz4lY-q>t&OET-nhkscv^-Ax9B9JD_95vo|@6*-{kn){9}?^vqdIV=#Ll}}+b{Y&Gw zXU`tpj_aP88qXTc1FFA6DZ6%R+Zc6ST1tB|HXEOx6?P3>vSIleqUs>r273#Pos?#6 zSk@|v!-B1YFyl_aHX2`9k^z%Av;OlM?m@~q7DXdc0W4*kZ8<0GhGkoHMJFo2R{!L> zEK*8l9imAr7*{zKd^?=1Aoz|Tt_mWbtqu#eD>zZA>^FB;6s#jSQReLOa90#;PjE%S zRxxbsaQ5H!uYjm<>>5Wr2PZoiFzpGcIL&mW9eyr@OZzp)(#KpOkwOOb=P=t5n1fd*lg;-Xy1Evr&+=Er$4=!p7b?j^`TUt zyH;tRzX5BC1Di0p$HqHrt1Q-2qwh=+r|v?3b&*-RC-=!aCHiz`lwtVN)N@EtENhY+(XfunJ z9AACHzJm9$jC07?iki%dNW0CK7yHtFTDK`^>36zpP}<_wJzhOyV^2o?q3!6$tmce% z^?38RS?!sGQ^Qk!m)^~5EZkf% z`qDRH?6!pjWKoexnIg*1si^-yP=2Al(|8W`ozzvR@1$QseWzfdzEiMJ-ziwA?-VT5 zcM2BhJDO?3GM<+4`kY}6ykWT>?X(jG3w5!AVZiGpI8N8};pCdPURaIfVWMUYO*_P66VfRb2OuIEDA8Wkz zvE1C-5`<_jeJs6z*|1!57Nzsr{&t+oz#_Jlvy6r@5{0L%_6>(yN-BF(atq2rixWvj zQ~8$WW z-kf|bQj4vw7Ro)CC0qfra#xt4r&h9-sh@3ap{a_JW!|9)OwsN%PI=ZEX^g=(m043Ye8?xC1u5ERHB<>ddYv%5g8ld5jw)vcsS|EXEQ$k+? z>kr+Kd|2gF=^s``Pydq!8eIM`;hXMI!P*ZC+fJ9-aSKuGhfjY7rdmTo$dMtG^&>Rr!0&lkZ{9A5L=NP+(w0L>p`P zJ*;68y2g*JghVUR)kdvKzSkl-j&xv6xj%-=NQ`mOL1%0U+L|%(gsF+m&83^8y>w9G zKb9Ie@h^n>7sS5@Li$=i>!Y+C*izaWRXEO^((0o{F2n=W4E-d53#8eN`J9Ve%HNJI z98Cseqq$+QjhfSFr41?d{|B@zy%8--&}*Y66tUYai)pa<3UkM(q2Uw?eOp3SCh+CEUXYPvARg>%7daX3wmqt=N` ze$L_Qw47@0>%GROTB&Ge?#ihM7%GLqXBunrL2E3G<2uIrgBola>kopY^x%81o@&W8 zCpT-daAWR3GLpOEd16cC5!_74N2s`SSITYS7cMHn$^EEPzi@**EW-XB;|W!b61{10b(s0 znY~)$v)BHr)RbI9${UueZ&fX85r!?Ut2Il{H#u&FeMkeHa-WS9I_17x)lXHpuW7k1 zTd_4>l!RN+eCr4W=@?wT1|eukzO7!PJvIkpvYUCutG`ff(QrNk>utQVh1Ok4-?G0u z$X;JUP?pW*cQ@Us%Pz+e6VCc8FEiz3x8x$rGgJNLJHk5o zrrN5TY;B_`F4`7zN89bpf;vUknt0}puxpdP8 zeGSPoXPHL6yk$WvN%%L|7aNuP!E^-Orlnpmaswl!xqOo*Am@sUNO&JDMY{G%+JMH` z$9O@}okqjD1=!!+

BfZ&AelqJRHOk;s7NmTW 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 +

A download for a precompiled libpcp can be found here: libpcp.lib + (7b31fa7a5145b6a945655a970022df8d). The required headers can be found in the micetools source code. +

+ +

Main server section

+

Server setup

+ +

e_pcpa_t pcpaInitStream(pcpa_t *stream)

+

Initialise a pcp stream, allocating memory as needed.

+ +

e_pcpa_t pcpaSetCallbackFuncBuffer(pcpa_t *stream, pcpa_cb_table_t *callback_table, uint callbacks_max) +

+

Assign a callback table to the stream in preperation for callback registration.

+ +

e_pcpa_t pcpaSetCallbackFunc(pcpa_t *stream, char *keyword, pcpa_callback *callback, void *data) +

+

Register a callback. If a command is received where the first keyword matches keyword, + callback is called to process it. The stream is passed as the first argument to the callback, and + data as the second. +

+ +

e_pcpa_t pcpaOpenServerWithBinary(pcpa_t *stream, int open_mode, u_short port, u_short binary_port, + undefined4 param_5)

+

Open the pcp server on port, and prepare to use binary_port for data transfer.

+

Binds to 0.0.0.0 if open_mode is 0, 127.0.0.1 if it is + 1. +

+

param_5 is currently unknown. Pass 300000 for now; I think it's some sort of timeout.

+ +

void pcpaClose(pcpa_t *stream)

+

Close a pcp stream

+ +

Server mainloop

+

e_pcpa_t pcpaServer(pcpa_t *stream, timeout_t timeout_ms)

+

Perform one tick of the server. If no events occure within timeout_ms, this returns.

+ +

Within callbacks

+

Reading commands

+

char* pcpaGetCommand(pcpa_t* pcpa, char* command)

+

Fetch the value for a given key. Returns NULL if the key is not found.

+ +

char* pcpaGetKeyword(pcpa_t* stream, uint keyword_num)

+

Request the keyword at a given index. Useful for fetching the 0-index keyword when the same callback is registered to + multiple keywords.

+ +

Sending responses

+

pcp_send_data_t *pcpaSetSendPacket(pcpa_t *stream, char *keyword, char *value)

+

Begin a response, setting the initial key-value pair.

+ +

pcp_send_data_t *pcpaAddSendPacket(pcpa_t *stream, char *keyword, char *value)

+

Add an additional key-value pair onto the packet being generated.

+ +

e_pcpa_t pcpaSetBinaryMode(pcpa_t *stream, binary_mode_t binary_mode)

+

Set the binary mode to either disabled, receiving, or transmitting data.

+ +

e_pcpa_t pcpaSetBeforeBinaryModeCallBackFunc(pcpa_t *stream, pcpa_callback *callback, void *data)

+

Register a callback to be called before a data transfer commences.

+ +

e_pcpa_t pcpaSetSendBinaryBuffer(pcpa_t *stream, byte *send_buffer, size_t len)

+

Set the buffer to transmit from when performing a server->consumer data transfer. Should usually be called in the + before callback.

+ +

e_pcpa_t pcpaSetRecvBinaryBuffer(pcpa_t *stream, byte *recv_buffer, size_t len)

+

Set the buffer to receive into when performing a consumer->server data transfer. Should usually be called in the + before callback.

+ +

e_pcpa_t pcpaSetAfterBinaryModeCallBackFunc(pcpa_t *stream, pcpa_callback *callback, void *data)

+

Register a callback to be called after a data transfer completes.

+ +{% endblock %} \ No newline at end of file