From 49c35589603c1f86f948efd99dc0ef8db54225e3 Mon Sep 17 00:00:00 2001
From: tmetsch (tmetsch@platform.com)
+ You can download this project in either
+ zip or
+ tar formats.
+ You can also clone the project with Git
+ by running:
+
+
+ python-dtrace
+ by tmetsch
+
+ Contact
+
Download
+ $ git clone git://github.com/tmetsch/python-dtrace
+
+
+ python-dtrace
A Python DTrace consumer using libdtrace and ctypes - Now Python can be used as DTrace Provider and Consumer...
-
Examples
+ Examples
There are some examples available in the examples directory. The following screenshot shows a Python Tkinter GUI which shows the current (life updated) number of syscalls per execname. The bigger the circle, the more syscalls where made.
@@ -78,6 +78,9 @@ Download
by running:
$ git clone git://github.com/tmetsch/python-dtrace
+ The project is also hosted on pypi and ca be installed using pip or easy_install 'python-dtrace'. +
$ git clone git://github.com/tmetsch/python-dtrace
- The project is also hosted on pypi and ca be installed using pip or easy_install 'python-dtrace'. + The project is also hosted on pypi and can be installed using pip or easy_install 'python-dtrace'.
X$kl&vP*j#>IMfpjmoOspw`On(9
z0E-nrH`u;S{f@1tSnc*6WvxG^H(-Z7)wfHxcx#c8xLl|HBSqPagiXs0fv@XuBW9-8
zje}yzP8YP`g%&uBc%>DA3PZI2UOdE$sYY`t*53CkI5Sk2ks-Epb_qJ ~f)
zDc@Z{f}QB3wp#CEj?3<1Bu1gy2k~X{6yksSaA*+`=_yLKqaU{y#+_e3ul>Pu
z8`*dCqe@*YD$}5Vq8b=NUqjZiC>4E^f$lvn!x4+j5Y{u`B$-v!&UTMVd=qZ|dL&c|
zSmpGx<4~rgocX*vX;FPif*5fEaP#z>)*ydi -|fwSX4l@fDc=NLVMZ_VA;6
z&EIEg#A>vj1=`ch34>$EODN=juH58-u$}`H{HCm`MzhvL2We^oq!_|F4O9Xj(WpEE
z?f1n_FN_VFK=ZfF`b}r->r!Kgfi>tW
GSu#GfeLcnb1Oi{@cFJ2SAIEQV&zMJYXYXi@2-Y$s0A2+$)9 zq7dL}zmIW#mab;ghfJ?VL(Ail&hdQwB;Y?IhqiAs+kB!-Ia4Tmt5n7Ov8hWD10&6# zH5NP?saU+=+0Y0nK}&xzlUxJJ4Kl zaNv^{2TOAcT3rzPJj^=F0chCtz$7hYdql?(Vdg*3$ofNGIjPZ=1KN=%mRL9yaT8#I NXsPSn!m8Rm|3AEUh6?}y literal 0 HcmV?d00001 diff --git a/python-dtrace-syscalls.png b/python-dtrace-syscalls.png new file mode 100644 index 0000000000000000000000000000000000000000..2784b76ebf19d524bcf25821a7e08b7d23f7ad1a GIT binary patch literal 11133 zcmai)2UJtf*60tSfC6F#=_nuqQbZ8xO(`P1Ned# 2$32{C@KmP z1cH myGYc!FL}7TLpLohq*%B0Z(v%zq?G3 z8^qlm9OM-cyw2RK2>>F1(H$M@@WNGmRF^=A>(0jd%G%&`5TrLFm;HFBn26nQnG>_w zMJ8dNPY)+EZM(LrvIlORwfL=5pZg;D dD<;JzPzZOrc1mTMque~l8cuWz#^I%aq%3~YVJAV*rcZ|`~e_!v5&dO^n z$pHY{0LOkoko};%NlWxrAhQXK7XZ9B>Iaku Qu fLI>$#K_R#>Bao8%&u14BjF9J?)DSGuubKPl^vfI_wzPjzwqXd`lUx&^Kp zxX^Dv{ag _1!9?e7+&)+bjY*r_8FJE?-MFw5u`QL)_#QOeqVNt zRKbv;hYn#(_eW$><%wjX*W5?@{Xu`NNvp8=DrVNJx8~ON#+>uRe!R5pp;!|jym?Yy zt!JEi#AGzX)3{~xt8hI>R(MJUs&!@e6+tU<$JxOzjZ{dekuDfEOni3lGFn+oCO;~E zakLl~6}MR`)J>BW1lPw!bXCpP+>@T3)0Is(kv3Xm?oPRPx%!{a8|JY~HR+@-%6#4H zv2rQc`cj(e;wAczv~_G2dq>3fbPcu6Shn65?+Zsc7zjl8eO2NM`^tYBd)|zW^d>MD zk@h&bNd83OD=qKLK0mQn`H;D=xcnkaeJTHZx?iL@v6ph@;wjn%g=C4_YfBNx1=<=x zi~i$zB(3R1eQR6^$)rw{s}PP7ZjkA9YS-MT?DApmtlaQLCyDhTs+^kJvJkzSZ#_oy zU@^~W Q}RZ3T7_VJH(##N8LyM1K6)Y3k?#OdwTG$+Ub^@ zTKSHaH3g5+5$~mJ9_P^}yU?E6=^&`r6R( *r(rWmjc@+Kbu _2Y1KRMIuZnrv)2JGea?C0(H zI?nel-K^<0 =&f74LFAsPL)b~BuUT|9<(db;X-%^@>D08fvD!*{A4=~; zvzSSdx&bP*xAO2H_-Io+dwZ>}J=0)kWolhG?tV~O)Em<-l62&caxSSiLv>EqNhxr8 zoQYO+UF^}W8{ce`^P6fDxMWRxl~em@Gb= >Ha~ z*b2W}HFL!vqr;zBLxjp%#qN#SWTog;R4W-vp>C(ESH+>$BMJSd?OM9bgrg~W`=d?8 zWlxob#El| P Ss za*j3(BG(cHBfS Mb6^PVV zcG|b6FA+ztX&qgP*+r8>)_#tkI6g?M`u3&g#|gcxh0xPP%C|3GRR Qh^Hdlq1 zjYfI&{Pd!SQaobf9%{FwIW#=F<>;6eb#15iT)&D _j) zK843=F*l36Z4W(e=8+(=0}q<48(OoDsM4gOJ*|l_4C_{LUR qfJG<#cex`))zx1;aV=DQJQZbEkBwk^lWWKJ5#7Q#Q^=dko`V>p*QwIV*$mx zWts=e($wN8_!}`8?Gs=3lUa$aZvK&pR--)9rdHS175C9j-J@^<|JLS07|AUzBz2_6 z6XvPGWUMKdZNTCtIj}0wm;k9d7#pK2aCncAD+lS*Cx;wZc5)tH$|k@ )=`qb3 zC!A$y5~S(Dw?=%_*0glMH>HxJ@Q{5^c$X0>bbYLF Yn4&0($G+s=@_NhxmQ$ep9Tn?*-Wa^y@@ zqwUl+vM&}qVGsavq#xHE3#2dq!+vCFrI5s37*VH>Ew;zc`8&Fd+kqo%78f~SyI*XO z8!PE`52EdUM1p >p?Uhz)m6Mz+G6w?lC| zbw$XvedT&B->H>(t;2(z$k;xEtx>o1)cfiGd>)OOI{(hv0evH}+0(ew^3c%rfn}96 zQf?jp#_IZNgRIt|5L!rv@bPda&}w?{jZ(yu2lKp_FfM+$YTjfXavQM(8^*$-Sl_GA ztEl=mbM;$eOO+q35K@X^?%v$%B4a3rJzcSzm^iO-x#EfU8wTEg?`A^#Trv*wX6`Kw zW4iwCn|tca-Dm9kzu5MDKlNL5do}y<+v`?@W~nmuZ6VD1r51 80ijWSE3{*mfzFYC+G%#M8=X;rirVu zYoR9jJ+mPZv{n^;`|Z1$aeH=c2X70ggaxiiu?3r=*nO2r0;f?`6LKamvuAH1HB#>= zTn=ma+|4NC^j?>>5c`n+P@virC8AE=HnvP8&w~)~!LtB76akg1Q&ewiaGDp3`SGE| zyZ_hcnY{x_ep`5x<~#2 ?UvJmQ4!A0EeELd z!m4_3kBhHeQJJL1!su#Ak-VKt$D(lXq`~NTrN-#;S^*qOlRa`AjXVa821)Vo$1xMJ zma D%K`<$u|rxm(8B3gPB |H35}^pYnAszgRHLZ*um*4XVEXw@(Son zyc!x+n`2dO`ubaU0^qTeSa`*Y7h)~fvpL `t1T=XBO)j6%Vah>ZrScQfG&zOzm$X`}=B)PR+{$XcG{uC$*j4zAcb~LqF z&$7?&eb_VtqHuN-JC^xQvAKIj_-Y-3ogtq~$R$yWOIccnt(ECEIVu#A-0~|kP?-%P z*0xW)1sPBivsNE@nBV3==?NIjZLucC{D=!0xpKkter{Dcluo^BqV_nCs2Wv_YZ!L9 zRJ+&l+U44SjTzj$J&0v k)F7r!)Fk?#D|ZuNLNVOA~oXAqu*)W zQZT0G1w@-^*y|B2Eoj@TIU(SE7}3_O4l QI9Ny895$&=ED@WrmqM9u`8-D)0%$W)qx$;2#Du=z? zQI$oVz#nm8!ZT~3YzRF&`~JAk*{DQFRdinl2uJy+asT&K71c4HAvt5l4oRUs?WaqR z099DZnt2b$%&e+yxgM-XN14P#J=7My#J>2=TxZ(oO+Ohvvsv&hMk8R23H?}sw7MGN ztXU!)C-GzQo)9nZSXU?OpGN*NUVVMJ-hD?xvkIXhUB|rzz1T18*`h+dpD!l*NgJNy z5_n|!oMKlfDLP)Gg Qd~&he~4YHgg4PE0SZLXCwb>$PGGvTV+W z&Ys^Bu5%L!_hpR~Z2E2PAK_8Ju-u+Y`!`Ii^z`&p9}SjqZ0UNj%Bd=bU$&Csz9+@) zS0N}W <# zpk-OL9vuoxm6S;J$xjp%)E^$kC@Ao{(`ea)_RbSABr Yq4xvqo%kQV#9Jvl_ z60&w#BQ+?qag*vG$nGQh;bhT_+U;6NtLlW)p5uy2>go+2KIjY=tC$#{b`d~A-rpQm zKkvO4*~_$2HQ!^2jRg96Uv%Fk6q$KH`E$Y~?;E^l(8~S(#u1<6VDWi9sZsSi{jLFl z&TARW^X1M_{X-=;V!)LGGl+m*4^xdhF9eoAhZ6)(pRH*a-|WV->ic=+hjok!C~xCR z6hrbW4xgiCG_9?2N+fA^wYMn~>A1NqfsmEvvGr)8hX%s`03k-(?4Hq5Z19YuJd17d zXY4#Uk6<$6HKt=^E>NwWOI*f2ZIh2LbbXE)2yX0&hI^dW5Ou?)TZhL!|Jp5=2*Tzf zwKbB>pb>u@+v?Zlv4u-RJ3f_LDaCQi29d4 UCo-nM^Z7Soc%E#zQzc$ro1TOv=7nb{$PvX_}8wknL` zoLS>C;yZm<_T`3NpD1a4h+KI-4O?KQWz<=?qg;FYVzT(EFyGXVAF;=H0ptYc&&!Fh z+^bvy^@oJL??I2e!tccF^= CII;Md%WcIp~?ff z*ShwZQ}eVZcz$M}v;fu{Pz33ILk7(gMX>--n$6}80Oy{Wvj8HO|NG>XI8&7`=!-+n zHS?WoWu#~X4FD>gSIVvrDtn!D1%TPMF4|1Jxc_hqn2}*(<$$I>33VTD;{*%~suP-9 zs*F310cRQr*ep86pCN4d6zpQ$TFV41L%)woj{C4M3O#Z_hc!mkUVZ7U#0-49x@~^? zloc(S*nIp3AToRo7sCl?&zwO6fY|Xe4nSM?e@xyv)Q3}dV7~eq0ASc{Sk`qo_abC! zS~}l`2LM#(=tqYONNg324~S0?$zlQw*>rjTlYCj7xXE~0UvOYnj^ehecvCD8KXPtQ z)WWsFsmY1a%WF^g0N@g~dCfOUM9nc9oQ`)W8}SCip1|Fo@3xW1-WvmxdW>e%t6Q_y zop#KXGRoW2R%Lw1JvPNbNSx~Sz_#jc+XNlWK4bemhQTBaoy%6JFwnLfchieZdf)|W zQeI5AJ_6@eI)f$RFhFV4=M92G2qFuPI-EH<&d}wb1aBP~ed5+T*oti^rvV;{)$Gvl z1mf3zK%ZJDO~kC)JS~;Qm9G7kckYFe&V`bDPWSl>|Jr@Q1Z29?W5|zugT>c^(A3uW z1+bE`gAj8U08qX5wdH7v2=}gP6l_6YmtYfGL8X#Rck09b_VT^4m9D+d^_1DE5cc)b zkP43Pr%u@;24V^4`+@k{nW>mzgG2zRorIcS&0qp@Yh}vri!cN77Qggen1Kx21O)&% zd3I=tTmc QcLjN1bSe~f7rWi4w!A$YMizfi>a(_IsO_K2Kue$$d9sg$%eEK4v z@}9PeSzBdhdtuJv@Lq8^)Q(A;RU~VSJIU4BF#s%cj~0!f7E%t-r&?ljBkyH`VK5hS zJpZ%-BF3wB4LFx>u0O<^ba`CSJ-^!XTIVprEX)y`ACPD DVTZ*&{#n4z$zv7DdR?VQvZg%o5DPDIv7LGBVe(&jwTXyJK7 z;ZDWW7_0|Oef77%6~^;}%6?772!v?#GPzKXM|6*qVOBR;!pGV;gISR9F-Yr7*TyWc ztZ&RKgY{AlR$l02`j%?0?|A0cTsSy>tNg!RApd2p{LjhQjB?{kNn>MLkI%Fpju3Y5 zRt0aWf>y@yu`D;!+& !-bQp+!*g@p&!FCZ2T(vT_2Tv@&dD; zuj%cCu)dqKz|GsM&AX#y7TOzJFHJgrr*@MrSes@=xT3?RUh}-$f*h{3TF2dv6!e7h zhvAo^x@Hi()gTb{cX-kr<4(5+63rSJv!-BTFr4Npgz5~$raIj8O$C3C(5r=%e`S{% z^)2a}5`4$5I?~`at2!4j8?ulPbmk?0+3e-Q_5SBj7%@?FrFmOB&B630=nLE9@VXr& zj4l8XS|9P95{P v7C;C7lSroQ2A8;RzI#J5%r37`oa6*4M_~JjeesnSKc|Pt4V8xq+!43h(yaacH*> zsr3XEl0^jb$M`~^VSOX~S9&)%e7adVzubu&vot+ROxDqmd(5b3$|s1L09ldKj>We2 zIjx_5TQl!zfy4iElJB>NcWd!vbAZz02A|>But(Bk>$_~KBetVX&fUHGzE0^e2 @bgqe>{pdvQ z3K~jl>;>gb(7h``MtBL4S8VQLBZ6kV6Khht&2t 8LPv9B;{Qq^3hJdEg V O+<}PLRl-@!pNrTg&syB` zJaZPLeLb@5q*wSqv`Z^%53goD1y79lew=DQ=_#V1%e!>dh_CeS?F#Sbtw==M*CpTJ zqIbOllOetG*_GPu#y;Jc$Js|wD6 u8j$ouIn});iOXsk5sJEo(jly;7)pQsw z$+e@Wf|?I5A=(trLt=-LrcJYutgAV`okeH9gcjM(U-+Z8zLL(bk~WZY(yC;m0Eb+o z9FV!K&EP=|f^6==9DVYS^A{85t+(^n3W*299yAv?p^)%Eq9sbuy4z;)1a>R{^^_K3 ztTFoN*qN__^~DR}(Rt|3zabRy^-eV6;Wn 6x+Kl;GqVh z^i2hPj1BP-ab#Qk#CHDCwtFAc-qG}lh}~3uT X(9$S+NzE0GB`;J1NY8j>Ql@i*Vwvg#zDEst^ zm6n!RCE6tHso&*XHHYsMiEFvAy#?afC+_x`VmrZu{wKSWH&0$3CT5X;^Ynlywz5U@ z4W!`INLK4T7?FB=rBoi?yfBkC?>4SDe*OW1FFLI=l~2VKFO+V!6DJU|SNpu1q%w+o zWu8_#X8SHC<`|z2-?HX$q)S*ae*%PUcqy|TEmrtb+y?fT9Y&CS^fqEX2H)LLEl@g* zec8z(Xe#BH;?4fp*kK1H{W)xIs^_>Ok;ax8Z@xYD_Ptmx6L1cXZJarq8SGi1KjWAj z>=yRA1J#70b(B`EVAgDXQ3x(zBU#!IrIsPC%WGKNipZ2v=W_11rkBlpK^7&Nw;SD) zZkwk5*+2PFEc%I%wxDj;(^nM!4ZbMY%X5v(C*9bwSp#C?88UxIGLt-nSM)h+c+vBW zW4hWehiHk3CJir1>4>L(oeZOqFFc>N+4svewszLPvy@tdyZd#i88-Qg*ca=BqF$Md z5@Mkm-rXZy>65Q? (s${p;4jS`ya9iJuBuoZ;^mf|VHj#A1|^0*qcUIY9g*5BoTQN;+NxXbnqbl=?6 zM|v7EFfJ#)k8*fp&ME@7=n2!fXCGK37kH>`R1b0qhp|ae%Vw8921nr;9_s HDX-pb{+6?)cJvCd zsXOZS*FBB0>yA5Z^N~8lC*QF-@Ao@`;|46ih FwhgFOSZ-O*}LfR&~Jf`w7?kKuY9ade@ zr7h~4`)~gVg lEPyZ0S^olT*0$o~>Bv)2niD~diH!^2 z+d_#H$92sF`+ncwO7M#tM*harkvTjQ4jM- hDu0m6j(rTStRri3d);6+?INu^K~d`7KdUZlRgWlVyHfAM}siKqHUK<%_R9 zX^FdWH@CSDtR;DQB}qgdRi&EM$A$};ZIJbFz(|fIjQ+Y+5%t~PBa@kX=}rP9UjFIQ z)Ls12t&7c&tycVASgbmu%8Iv{+8G-kY#(p*X-PYS4x6Eb*_rBx&!s zj Fy& z>(5FUj^&?z-AMdS!Qw5A6=bZA?=ZWA+}HM}iWM}~GB0sv?fo<8lXpazwN)7%w_{k7 zHK`5=3&fIq5_oC%R*(0_y$=C%$Fy6jLQ8qBu<>`eLKjdG-AX@O(9TcYSR^y|%|V^P zvE^}godjp>@aYqtdtE<{Y1@$WczpuMDH$yBQjL<*oy>LlAh=`d?~t6UO{TC<1(^=& z!iK!M5%<46>#U 68^ifwij#JR+qwOs zI+x*P-RUwsjPL+4pQ Lt;O&~KaxR_d4y271uNzQ8$q=#Dl7EjQ>S|V=PEK<)?@xh%B81+UBa3byUei_ z{3SVHt_JYDmWY^cr&WmCpHFrCB_&|aMlfEk^mGD5g4F-sI|&?JjFfqg^pA^YIg2i; z=6_zDhuqjBK}E<=I`HVuwXjSuN3QKsKM^+03>znNDV{8wl| UQ37#UEqR=D0?98~OL?>e>f z)~yoh^ut*WF;Gl X_x)qkgHuF87023 K_l^wQOHiJWt5kti_IQHd`_rEhX4u>#(Uta0kjKB0EM-&c({?@RMu{6!U>TDd! z{<*Z2!^*bXUD1JOyy19jfqcNRazCt47PyS}LM4cD@*!Z_nl*L-Bol-()QQ&lbH#$B z;L2<8(SY-7B&uY&o#mmyH3=i0)Q+?kciFmcCaY(^Zm(@2+oOEl@cm#sX4r{Kd#9YH zD*myR8`rrSN%G8Z(^=v9n(D_2I3z+LJVE>^7eh42f!#PxR8LD|qr3f6e)*32G2|V0 z;o}~00*eko8f2y=MmS~J`XoLFw^cd-9;dTJPo9r;C6kop?(Kw#KJP00u*`7W5KuZ( zB|9GLoYFYMhFpr&j32pc+?m`~PUZ&A2 F7%*SW@s?a%xx`C-YoW0NM?e;eVtAvM3+GL^zGF!xsvJT!E9{m*VI=M;_a>Rtfw zDQjd|&&1p&pGTz;8li`6qdWUX`n{X@#mVs*f7@h1!<&8bZ|6UNk7Pp`Fv3N?rCN=+ zmrdyH*{Ko!Rco9@op}X?oVv66PbjTT9Io)pq06=1 J>0mv3w@H}>sOQj zg`mWLvrEsMjXW-s0a}xxkTi^bGPljG5ye6r9lazGxD%^UJUj$t=z_io^Rh?&;&+qg zW-Kybn7xk_n$|q>N%f8k!k&$AVQK5^(DB=t=v6 ?Xt 4sq*!f!Gs3y!Ar 889a|wAd*+>EkQl3*T=8 z0RBfqkZH0zp!nZ~X8%T9cl>&5x*(q+qY;1EV&kwE;U7X1loimn{KSpkF7@+xa_$Qd z51wT3Mh0XJuz))?bwvg_&iNMy#n75T?zgebfXJ&yzLGCo19a3J$6bkuGUE}#Kzya| zvbJ2*JN@OPZO2>pRe~d!0aYDiN3?0{Lna2lY&Q=jmorxNu UR>(lvN4-ZK_EZKTrRu)ed~G1-@9{63YhD)p{;U0PBP-*_ z#0Zm4xEy@Cr5e#J3jo2{j8r{bPB=1R6uP;Jm@i8{{59%UcY$%BlG+w<;J@U~nd7Zd z?VTnRGpik~bPN#r982B3%A3@r`|VvNJu|8Q&|&9=SZYUGmPwy{wISM=)Ix7tBZ^b+ zk-WD}0RY3v(Ra;|j~8{ZAAHw{&{QBfxJBx@HNY*E3bW40nhYPB5hyqf0M9Ne385?a zxCoj3dehYW=DH1Y*}v!eCRreZZq5K8|9bMh;AFUOXYIyRbAa)*k9f{+p)a-%n1T3* zw#5$0^=*Fc{`RM^mZ9vwpY8s`X!&Ea!X$EX(z2bkna&ra|JUle+A|{?1lo>LCoJ37 zJZ<>DfQ4%q2Tae~+xu{N(&o)8;IQ~xigS?mc>vIs9}krFeKZxxQh#>y--k|V^XI_N Wq%MmJsQo>XYIN81PNVL_Xa5V@!B^b? literal 0 HcmV?d00001 diff --git a/python-dtrace-terminal.png b/python-dtrace-terminal.png new file mode 100644 index 0000000000000000000000000000000000000000..12fcc53f9f7155810bd30bf5bed37505d25fc2d1 GIT binary patch literal 21388 zcmZs@1y~%<(l5LT?wa5pAUFhfOK^AB;O-FIorMH @%}7(>vW=Rb5rTs%pX& Od zW@`;6b3}1*u^+inUef70$v{uf$%%EI$J+j)xU1<|`~F(WYWvvO*gJT#Aas%cI7n!2 zA8J;f>;H4VzQZ>dIoRE@UTc>G_xt3)-?mDZpp`IaAh=fabw>n6NcBXY9l$KhwLyX# zbeR?1dw~{`pw#sDy(Q*8FE(&%>DlNMz5zM!v+3`u5dBgQ%P>0hg`9R5r>WyIerZdQ zVL^Jzg&V$kq)VYx+Q>iu4ByIXK2wHOh<&AXK6xoTFgQ(CU1Mh Sn zBt%S1Y`&g@@_2U~tyZzd(k2e+Q3B7?{gB-D n3TtdPozJqTQ4|jP?ilS{ zt-{6Djpm9R_4$Q*EL|`<|NGgkr%F}$oefX6-T15dhy2#p xJK?Hh|WHquvG zVs?y$9H@Y&Tk$-jOFGrk071||mJU2%K+(OTXwT|nAuHkgPQSf~U(_+=6cp067gxJw z8XY%QO|ut5k%uOU0VgP`)Qik)m*Dc^(R^a=Y*) zpRXL9a+Jz$?FRhDw}q{ZjrYRf$@ZL|HhgAEsJ<2X+mNDPy{jjrP0_LACicV6R8<)5 zg(-5)0G|dvDbf}1__m-CEdwp<^KrSdQG!GSW@1ID=Jf>u?mtxh#bt3$mfVO#V@}1d zsUXw*VK2xx`z5H(3eDdSZD3cyu{aAZyHHzI#mxn@scdF{yW#VI9j>qH9?}c@$BZ)~ zb5WsPvk*F&34eE2JvT%|k!zF7^Og1y4IfY< @F0g6n&>Sft8CmLM!9#?!`U zCGvUZP4H(fHX`>HR;JMB-@g^U7gRY=kgT+Mcb4~(_LXBYW_Gs*w&f(633uBND+JgX zus_%CBX65+6b!K9vUL$SdVJ&>W0iuxsS4qLN ce5_t zmZ_w^nTO}_FDm3-;G+@)h>!75P2yMyC7JZP>m%rX|8|N({$O9R6_JlqRd+<0|3$*% z4x3=^C1`q|DFD3fM4P8pHX+c&{&;(iBu<@#d7Q>(n_YWyn^q$R9x9aFhBYlo)7#Gf zJ?MQ2U0K-?Yu3rpf~u}g=BUqS=;ht!{sLX8>J^vqgfEpqh$Zk0b=RPJGnbO`f+=WC zfc#D$dY)FK&3#nI*K`W2sqP|>p8W$LTj}$~*=wFer!NkUs34rY0vC}2-3RlR*?aq& z5}@y+3*6hNIuqlZ+JMYdrG9}o3Y-Gh;%6@2Zg5&S{4gGB!W@17&=S7K7rd@ZD{S5J z@`^)bxDw|tthKS}KVvv_fB28@b8IS 2zp?3ULn7ij7(Du`9XW;mJ2cs(e z$LTbT66bs+JZ#zzQ&X(Sv_%RfSHoZ0s3P G7x z4#V$OoPa-AY0~O>>@MDd&4OyrKL{<_XmJJ1pu`$W3d4&aFTHU0;%c7n4dWIxavv@Y ze#xEZD*4`LBt$bh)kzlmBUz8ch=nv^cRnlQ8qwiW5tj%b8e`Zc!x5(XPnpE`{k8x< zCW9&xKk`;)9}_taS5AwVcX4s{c58&Eo$G#B6mWUNbAlTy10>_Qxz$Xc;Te5072u(l zZkgq|z7AxW!^ioqhRl73nsC^zdX}0|_>5FFiyjGzm8z#E{E|Y5lvoK$%t{ne`L43# z2=kF%7pZ0eUrlXk-69fXRPh6$1bGLMJ6?)%>I-t3J$!=Hzz0XUs_+1t*Ay1wfY{ z;z@WK&O4*6e3JtQ^ElJiDx)&vMPRGKsAMipE%z$PaD!an)gEFLz96owAR!PW=<7dI zroTDtf$^|$!AZIF&W}O!okqtkQd>*g`{_NVo-m4a%ejnJcNEJ6Y@qFHpuCxw!NFz~ z-Z5$Z7xc(?32e*sx6JJVSJZ@mZil~fZ(RDNp7~XLRWMq9zsN0h;r?eCCw^8_5b#aT z@Y%8+pF M8oK+xizNyh1}o-9CUA&55<=6R zbUiGXW$U+dN=(L>-Z9Q$4=)Vt2$ wcaW xdQVBMx >l zknFE+`i_I3o7{gG$$bCxdW3;oFM?oFGZ=|G;WAmQ2dmrL&1QuO4{h)0-1SfrX@7RX z5tY>fKPDFgv8Ftx4$dKgDgubj@1+tD9pUU2JUDu5k+icDrEe3RY90JVDwz+E!J!N* z=pEJsiC%LgYItZ4_Q$kQ>9vZr8R x9tMw{&+#<9* zHMj~iGHpiKCuUsOL(h*NBA&y8L=>B%5T;$N&A3#qjOGo8b`P9x$V)lwVyG1rHSn;5 zO5);*7u&cW37h=_SG5E6Pxg%IAwmiAK@qP(fWsmN!trV&TwUeE<8h&K7_ppKQ*K-) zvo1^r1*(W4CcLLjz|;iV36VC4*Q-%noIINffqcr#RHQzugvfF&jp+vlnM7WI22eIs zOMtJ&rpGVUocBS-lkxY=Hk;rDn$my`GS+u8`3P_&GZDVfr3r{^SvUxA=X*TE-}$0M zRNQ0d TN)rvytp;+DIB5 zI7f-aXH?0aN^#w4YXxNGo{;)l7)vJ>T+v%Z{w`aIjEM=S`HRWmY4XsKN9FPP*0^qq zPmJKB7eb~MN(vj!wfG^UxP(dU8^(ZWw|JToZ1K%XwlpQ2$`_%}gG~8qIO&5E?3)8s zSzxHCFM0-&=ARaPOsbULl^imy#c$Tk1C1{ChuD8b>jwlVeDJHMK>O*;?t_5Xlg#-G z)ufW}JzZJPLym6ew+^L}J+%*B0wi;Db5YBYpx|0UT{F&nC7RM^)q=N|SSj)ATxGgA zM+e?dvjo|ek@sDm*S2v9?nE>=4eySAGL3Cju~X47MXXs%ghx5=x$&HyCMVVK&)>RT z?jwHV(EE y<5L}^+a`C66x?${XL8WvzES)fD1zTv;e(<9_{DKP9Ct|;i zQQw6EB^c|~(l0)zhiV1YKJ4-_l!EO@&F|5F%Wz@S3VnjsNe9%_<0_TBw^dCRG$!J= z@?#nfsCRi?MAWlI?byG}ey=c%h~CQW$Am3x#1uMujeLTD_@2Zsj{ R zN~Mko-)2J_$8CFy>|>;h+~ PDP>5)d2|-?}_F8R#s$Yu8~c> z1RYRN#l{AGNk1+Jg15W14q(GSA@K>2ybp)=lGTDGSXfx-BBO@0Oh6RT=Dqj^bGhHm z&b9E26W!16RerlN55{8BZx=Il k>H_4g0>&J zxQ*A9voIxi!MD8JEqFJ0X$c8XW}bHL^G22H9lGiR#48YohaA!`X-y;CxUl*&hhMvB z%|k8OO*zt&tFGeBof&8!(K`7D#TAk{ dG@f{y9 zySOLs%;lBPDo;IG4F(0L{M+o)Uy$ZuNYN1DWJ~CN2_}_qf_K?d9y9T{V<)|`MyXfl z%wL)@enzgt&=xI?6788bmXPTP8?ipSU0$9OIz6h`)XXC&hiN%(l>Fg$a!nog!2{#> z{y5jX-R>T0YxZ2V%`{#!u}l5Y{atCeVxHKRn)3`Ppc&w}#`in&IRl9lxLa7V 6`VGt3b{$b9=d3mBLy^MgxL;|ZCntod)_<|9J*1JJEdK&5jL?*v_1$>a3LlMi z-|a-5Fkp$TUgqVZ80m>6TG8e?>dPPGeZEb=6;vSt6j@MgV_bnC6y1-PNBdO!HVN-& zUKTe7BBZ}Sd#E|&^;U6q5wzh5o3Z&|x=0vEK>C*=yBE77@Oi`dY@4ye$gS_Q{$g@y zX8RtpU&=!ke{neOSTzD%#^&F~VHn7%_P9Uuga0 J!@p9ggk(!Q82}dS*l-& zdq{rD7^5%Y1Bo=z9DA$Honnbdd^4^=2u(6W>EFFX2yV2h-@(Hwyo+qm)e)xG%VcL; z{_wJ_an5EPAy_G%+u*XPyBa^`US~N)()t?twdk>4*0vYB GpzsvtAxq%gxSM0$&k$-_3 zreRgRXF5VZw|z>@IjZe=X6A=&Nz=%zne=RTy fgF3++=9ss_m#@O9NKBm zi9bdi2Jb~5<=8ZmE#RaXDroC0Gr12aF>U@@v)NeRA(DB%3z} {lk+N=r-T7i{WFKEMwx2V=lnKiRx;OtqSyD3jb5&|duUin3I~ z0Z;Ez0h7p{`dZ~=pBp_{9$jsMVO^{&5_O+F@LTF^gFa^bFw&io)>&mk;a_?nt2Xg0 z=Y2}Q 2wsw p^&8>4m&Fe5w!-3icfnCT2przNZ$c@bZ`Ts603#=kRDl zUZe(~yOwdxo&UkP-_Ej3tQdvw8Gm~YB{KARczmhU$XFyiM%C>v ;fCIQe*mvQ%#Q5?E~vDIPF8;Cv*+1Fq(HG8>J;1ojJ?pZaIs z;c=x>fiCTGFFP5qE{1nz2aZqR9A+`lQ^~|CYp@s4IS|<^>T6M6A3$*Sm{&PxztN@s zoIhMfZbGgU8}*^{m7kqsj+X|{dnE@#-QEgfe zx<(xl1m>Prz5c#%Pu&-U=35h|0*k?uC4@sfVVPxCZ-e4@gi+p6RIX~Uvvx91-{wDL z)Mz^PZ0-<5*j62HZuH_mysF}?l$?*?QZI8MquO^b)s{KP&Jx`(jSJ@vAz6*{1!ymO zn1)ZrY5=kuns#!w>4&oXE`nkxGs{#RGqy{uS}(I0#elcs)we|Y8rS+=WpY@x=L8ML zD(kq|z;D;g%GQwhT?(!{3LNk{(Bdg~IO3JRB!ib~d^M=ZqS^iS0AEcGnWdPa@)U @AQVUIP#VfOdOt*=rIgEbd__`I5PSvv@?V3wG&3RvYD94_#b(UJLehrI~Cr!x@asRE=H
=6bpim$ z>%ZR>h02QT+muc0ZhruXG56ojf>&8Oj78hV;w^{piKO?>H-PUn7As7{I~?%f=BY$; z)Sg4DU}xU}!GZG|b_Tq3xKQ5d^o}8->jM7_(yXj(<4*|4nC02`e2e {+^8-*#2ciK$Ag%e+|e- zvx#qcz9cX6B8LCilP|31JuIeQv7|wNe;2EC@drn+YiSAp?#{KkCa!B}2;ZoNz0Zgs z48&30&=8W4@Zl?Y+#VTr1SvYa{b^^KSff>376|jNY4R#PKaSj(t5B%Y;|KUD6@;kJ zhUzeeLi}%$9LVK+07UC*Xle@6H~3dn^yRxA;-mgGbs9Panf5o!6V>IS%74*{5!w(b?-0?fC^%~7>|sFDA{=@3 zw#>?~YNCt82eqlmX!sjTR6y~jAU54=lWIQ(h6p^%jQ@)#gIc2^R*Vk;zUA0g?3dP! zKYcbtHEc&*K0GsU)0H3fCQH@Yd+ewM`ie(KnGN4m_+kgSXH)J@I7il(iO%0J{eZ5W zp&4k1f+I6WeCbihprG|-qk}v2@>Zgf4^~rwA0CXv>AWtq ZxAKVUd1N`_{KN|Dg1>}7~_a`c%;8D(@0dLQOE-xgD4{-r+uG8qhberTT zeZxIO*F#%HjoGaE5fl#{D;(W?^&_ZUQhS?CIlWxSzgg*a=W#VSUX{1vE;2%+#&qMh zY^19-+cHL1Kbfqhof?tWoJP?Xw0wQp`(k+@<^1&O2I#tNuZ^oWLoIT&-X5F_&D{pE zx$=Nz#ye(JV<1#*4Mii_xDX6QC-7V*za?PbTzDHKI(gfX3-3g#JADvf)O{k%^}CO= z-xnXf;!P6YPOs+wi1tDdXxY&-r3~htZN9m1WV8AM)esfYGgawC7MWF~d4JFkUU(eA z%kf4v8qU7GkkilmFpO69Ty1{Q3GZ9P=$ig0SNptGzF7UXg)@RTL1 d! z5nzAO>(Df5#J8oN*?qF-Het6TS;1rW{jO_t$4LX-3+<&peUe^~gy((hCnEbVXSk+! z?&1EuK+A-un-D>{zVzN2liO hu75v1W<5dMXsRdQw6v5xn60qW!Pj4MZoQjG zBHw-Q)Y2ol7546W&nf{S`7Cr tr3DDZVxaK)^}_jvwNe)<+mkQ)6mlH7In_44#~=$*`F;r`-V$E%26VN1)--w3 z^`F>ieD6`z-g(~Br!H10N!>-;aU5Bg!hYd=G~5_p&5j2
tEiesI_U7*kgRGh5%KyBUlGh5;gn7r;XL@I9V zFDW9xnkosVZ@tI7R ^l=VD!J-0itz^u#9Fd7DYV zT>)1i95{gZOZ;nhN|k43uS!w7m7C1T5)mLa{h5x6Ff%ILM;wx6{7U{z{VTUZ!&>1) zggCZntdm%%Yd=u```N4nd0#X=OaRf>ShH1siLE@<276uluRnjJ?lPQI)cnz8E7eXI zt8a>?6!~gKH?gFrV&rISLK4=|z{Kpi&8Kq8M$q78t6%g0gEI1#r^WQ3atuRqH(Jkz zd DQTmJ)#x+`!UU|7Q1@{gJmx5ot^ IND$23@;yj__>3WGk(Q ~T8i4 w3Wr6UuDY4{xx3C_{-dJH<`?|t8z_-#LP@I|hc?}S4BCZm~P&_XGH1t`4m^ui4? zDnDE;HJqCIB{41u_7A(jJf?Oo517s2M8}*Q$#nn-9V=QnY%AgeHoBWTN#os}7|X2q z-o1F6ThsNGI)$e%Pc_;hknPwwZH#+I4f{TBde$}=PvONN$cj`yNRU`3NJ{H)4doj~ z>QC%FJIgFLLnD^)9N^XYDQ74X%=Cn?W^LIn(KYd~cZ-whTQ%I<{zf4Ayl3>MThG0q z?ptVK zi_^yWP?a#sd!}=7+VoUy68eNjj26KP}z={QQtM%+I~H+J@RHN|jgW z$@4?z52D{){YRgi(XREZXn3fO2 d6L>=IyZ?T`)5`9dGJd9a z_h~s>pc(J }l@kME`V52oWX~IYH={G9KJRt`S0+X-WXBUk?s%b{oIqO3_ z$dTxhOL-1SicJfn?JCRc`-@q>k02vJzxFJnChRZ%tY1{D;x^0!Ew|8Ln|tFA!QVdr za-r79-Og7 eR*5$lN(5Bk8!WfIUX4zZl32BCkNR%x2^5AFI>t&0r zWv?;*pIU(WPhl{A85;0aTI>p~u0%7%ibQI2A*;&~NO_F-3=)Z;{im+M3X~-jEkCEK z0@ws5s~WJYvB8r-vE@9vDnC!|c+)wTNhCw6dBp}9W@EjECk%Eo+N7NapX(`6cXO1$ zwuqZSzaaJK7vYH{G}!79A2Vq$Gdb(0@h{*YeBOOIv0kmw4W%+(0r)2*n3DS&$|u%0 z_k);V?+n`$2d!MWjosT`+!+&eOLdzl%iBj%>t&SDmP=3Hu9w~I&&F&XbPHi1E>C+p zQ`w9#+tt?I 750thT8G{gUEYv}~nS(Vhxj+~o_5$9i3x zu_pRTw+GFeQ~@+aU~VjWEmmNuo^Yt`qf;xkSM^6extA)&Bi~ZN!K9kg5AN08jOCv6 z->f___P;#p48$5g^L}^=kYU6kaxz% |x#!`l;qA zL(f8NT~l3Q-21VJ@@T}Th2(arO5_-!*8cEJb>+bfuMdo9muP0Pj!n?2xjC(mb<-d! zVM5x_AXZ GyDol`!R!9ag+a@@2JG$20$pur%tBH0 zCX&8%>j6Gc7r3u1&OQ{oA C3m|Lz _xUZf fZVXBFvnEv!0W9PC1?SA{&d&XcAm|4vgb-|PPv zNx4<`HKR3zK@>Qe#%yDNZrK#JdA1$Ot$lB9GwtI5_qB@4M2R;@MTI;Le$AzAW1b5= zwuzkQjAd(!c*El7>!5%-l^oa1fO|?%#b)is20uUuBun#3eucBp _;)2C}4W&}izjIDnqUbU6!? z1bbfTnlDzfe`2hdG@Zcg+cEd`-cm68{5$h(QW1*G4$jlllg(xhSuMu42`?$E4~$^? z^aFH&ApXiu*ik%d&&;t>8trXH4ON^>1FFT8%kdmIPi}BR-2Y-}Le TSJ;P ?+9!#hKr{&Z#gkGX~0$Fo;>6xQ?-? zVJGtFjd(z?ieis)`r8#DHW$MC8aQljG?dDD!Udz6ujz@!*N%mR`a~{WG1K77FK6;z z2M!qgaHq3NV&=+lLwsk=Iq)Ur4_*SPY!>h9>!EVb`za0wv37QLlJ%-;V6Lk+n}9bs zI1ZcRpaTWUx4DfE3 IqKG5AD+zO~Ri;RBLGx?vBF#H0hrN za6owSKfNO`=Hho3kGpd<=c{u7ua*8quxxfbl~YVjZuQKi(U@_MI=PUD-m6=Yr)_!2 z7pB4NAosn#k4Q;eDExUQ;XLi2_tqNx_%18fWDX@Ez$9OFBh1PH4`~0ULg8CXB~1kA z_s|>`0qTp0E1t=I@n+*PmD4AU9GssDxYS{2K<|>-3myUktv1(fVZ_cJ2-bnOtl9aP z(^To;9h*R@5`F_`7j0|z_=5U!Qht6vOst5HcXRIPSV#p|0xG3kW1N%tbG|e`yk4*} z&H6>i+5z<~_CL2j?O0WAsqd^9)7w#Okm(M#Iiakc>(H2tlh&2kD5Uorto!cqQ~glG z*xnD48NH5r(2Z3&H5a+*H;x2hLbTpkB_qg*GJy}BmG}j<^$1GVGBkFmZ*dW?{@8t6 z&kIvY>1SM0l9`hC$H4+645f&-)*l?HUJp2GdJk}{Kjw^9#OCk&XmD^ggI3W;D$l!` z36t&?ZZanUzM;C4TK$Qc0{`v7)L)BKzV8#cFgaYPH&2~wd95@WS;L8JTVXrV{q0xd zC2z)(m|-BmFxs$=@*>x uha4%b{lv%t2E)a3S{ zVwI-sG)_($FI{ONvPS&+`a1Bl?DFA|waw>tD8GgN%jN}=4XnU=3WRT^0%YmyY>(F3 zkzzP%c@0+DLHgyu_GKA)nl;Gs{$2py3hdg`>Rk7YFM4x(& BM>hA#AXBY4T zF=IW!Q9b%;ZLJ -C0`7yZ$b)=Qi2}m#C)@ Ppru3bTy&BIvQ6B3@OXn8%9Nmla)sj1fhK%su zzR>AJftQm@eAZlCbJ<)d1$J*KPstZYov?y8qrI^ka>WFE7*nsC3#;=`fTt>-n-}td z hQW1}+9gv-V8_=2|T_k<`Y(NH;-i? KTSkVC!=3A zKq?-J)mEVp MgKPBlC-j; `cPr6;TPRYLodXC{QWlZ?#@R=&xT`dS>5+D`St>lY *6QxTfccc5^w={meEJ8$lJ(`>qu@-dzIoQKE|Md8gUq?0v9(>E!~{YCxa zbq|Igqq;$9@)QoH_aYK+=}>?HZy)Fm8}%IJ13n$;u)aU-NI87Cg>FPR@-ZXeDfcrE z?H{9p;kNo?p!y&yckFg7QT|FNDI7cN=0@F1?6ZHpKFj|3QW%=&^$JVia0^X69Hotb z6Ew97_YUB>h6Zuy<_$$8NK2Q(6^k5L<&JL@hm@Fi+6AjG;P2D;R-fEH2%M~86Ehku zw5aq}r$}FJ9Z^Ll7*mW#fs$j|H$EeLH2@!mjm^j**vatR#@8-Sv|CVfN#SR^=DpLX zqYx__%WW#OGmHFH!4Kg{-w9TXepQj7mKkTi%krBvsIGEEFv&!_XuO6d?;`geQHK4> zRLldfs`@^Sxd|4TF2NB*^lVRPTZapLNHSw?{X=v^;GtyI&T=>dccT{&TQ$F_xg?vu z%1_e#Wa< k*`L`|hJ z){-{{>~q_@TN~&QxF@QPmAc^tX8%yP7Kb;>z6D2_h@zCF{grvGzeM+bs|=V;fWm#T zCE;3Z?4!17Dkw6u0y4-ko?cdbx tOaW2xkBdLy4-N|m@5g0 zH^Qobf~@XDX)gDy)u-(-l$e}&A}1O!qGn%7cc(&>Xw-Em!qGW@BTkP*eiERXg#$1` zFr?wV>57LJksGRf-`*h>+i{fa`q)QmZBNkUgOQNU!_H60x&oQJB7m#59X0|H7F;<# z9x8GFwAG&|CulQfd?jK AdWv{Pt zwTwnj`v-iMTzq@(2F`u=fR+?O2;sEB?i<$*S!9oLUrwytvyY#)?OhGUe?3V+qSRZ= zH2mI^NFtH~_ 5khE S$t5xoEB>~KjPWH$3|i8>z6nWED*;YVZ-HXLIW?B?la6A4IV4Ok z2`kT)tQ4Je8(Le#`8)-Rk1E`Y0V%m?MNl%P&d#1U8kR5iPbcFJE5A8|dUkKsF&M`< zOv=H*XI)Xga%y2dscALdjPl0)4dcV2UM8Ro{Ss^ + zdGBft3w}dpP_c8f=GJ6_6!S!lS~{Oevo=LRx^B-g(zrI}+8a`?p#-{UJ|XZwRh} zF&Veh3Hazkw0SUtN>asFrCE6_lSEF9nz!7E1Xsl2F1RHXZsUBKx7Aq2H2juO8_k~W zsk0En>M^GqWsUP54s3v|YhU@*yXA3&gOSFpF~@US&OV+^=u`}<+FU$p(A$hRapBPx z!Fs!=0l07n1yonxXBptgOmrWoJxKcp{;bMNpTH4UF+P{V8gB&T;jWWGpO3_FH1jL3 zX)nfjc%NhK5wbQoNH#fQDu;Lj;F9LdvA!TR{;pfsc4_BWd@MSD(NbTh!-uTn4r^T) zE1)18;1jV%Oev9RubhIrZw+1wzdh?8!jI7FqMa;eY{TQBF B}=N(oRBdr7p@#)3b2iHMr918T0B
2ON zaXqhpQ|;pWC#ttVf6XO4zs3GvHaf8Xt-6m$2)w~RD?5&jW$6DQ-A((N3sIo;c1e|- z@{@X7RpJubxebB8H vE!Dab<}QZVkkrg-E-m!qPw+!1sd?%B z{gf;I(tUc?t *sI^Iqd)*u7-tE#WLJWTu;KJ7ybi<6g!$L( -(spm zMo0X8%VW0P+dCmnC_xQdQ@V*d2~W`BlK3vdvIdR;K2F1S`Gdfh(El=VGQLEIyorEb zAcC~PviPIkc}t9N!)4u!XCfm+P<-yj>|R|0lrk+HJqup+#`@z~rr8 7Imc>b?CJ3HEa=ix#VQt=`be znA<)6Z O7HESIAWG{1|0aGSwNBSvOGu-7@5}~-I92F`9l6W-ZHrsHoz}46F zl-9U(s&7LtxIqpQvUZ4!r?<`@jTghg=}%q3+)Q5Sf(00bsJh|FV2c5dOK9!F=$Z2A zq^rydG)NE*x7Je)ypQzSJ$wV!;P=ky-X&N@tU1!j?cSBLf+Wj`%%)pad-DsZ<1&B6 zKw)gcg8SGQ|I2#A&TFT47!N8rx4$|YE{pefbXG^3S#+8u-1#s!v`-P^a3tc^;y8XF z{TRR`4X*q)joZj_!#_O3#o#UMEh6%skAKC$%F0TK|6_{%Lof$a)_D|s$n+&fZs3Iz zn%Kf2&q8CtFH?_;pQpG#J#ZPk1JD `Wh`v;IeCA+FNMT0k>Xl<# zc$IjT^6IY zx|!R06R~XWT+i~g_wznG8efNDk@x)gS-7gV)EOK{0r#9Wg!gWoRic5cWeU^$(7b&) zTDwipBB2&K4Zb_!7d6Hk*6Z(~_P-j |>02SnM&fIU4te0l}LRU7Ai{s(pAt5OzVvrY7-C+8rrAhLO5r3BQ{{^>~ zq7wom-(*arNcLdZLJu0T;IG}LI%{AKj{_@T%uplJxfWXFL)nb07LOTA+oISZdxAJa zblC8*umbmi+ZTry-LVqZm)nmOCciQ>!@n@Wtjo3q-Ti~#5SjRRO3OtjhLxVGhU0Y? z@Yj&;IT!=9%UDb+(j>p(T0y+?aV2HtINUdMU2S&OKaVI~VZ6~t6hG_4w;A*7YY0{^ zE69J(yr${WAy!y1ghbmBobarymb*aQAr__rrEr4zs$Os&Z7R$|N`V~2E-q9`R37LT z0TMdV5?gZHhG%vq(pz-iAoT_!L-A4tJ-5g6o1gb`?85$3QnNrH<6pPwgR-e9mF;>5 zlxG~icZ&;5mR-ksqDt}2%`VG}y+=f_z4%i!x(MRnt|OlpHqg_}ws(0I0c!me*^2IZ zZK6s bb)VL=+V>gZwb #FJ*!IW#=tuF!5|*A%59fM$*bo2H&pG;qzl- 5H^=8B`p z7?o;&lKRGYcKY;A&sLY&v|mgodYr?9h``%o=-nQ6@1xS|k(A&_h?SIs=+<{>H*2XO z8{L18*xUIOj`4++ji|8$d%+sq7d1lMl;VYo6mXuip3IuM+h5qV=h$YiSaAxUzb-i9 z@ifH)+xV6gVWFEcE}?d}9fhv+Q_>B8R5rZ#PL{XEVOpS=z_mL;bXZmoj9(rz-PfXo zd@TKEnDWKmp)enN|EEBUdyBELvTZF3WkoxSMO!3Ld~)CVNm&0)Ml!OJ4yK_}!@aGA zD~tHaRHw2#=kCi+!RZvQsm>PL%`tFmxhz2weaYER>0^NtL1oR(yjiC4#Ox3p(DA%m zSmDZM&xU&po(5Prz7kYwYg??>4y&W9YiMN!m!kmhF9d*m1oQy{S!e=TaKu0~VqlR+ zvSX1VWaaN(UQodcRj8$zWYi@8GvqS57iI!w eI!+>-orZY`N@?eSm
|FYx& zxP9eWfX4CcurwE%@r7 w`Fnp9wpqtmlT2{{tAyGnhgtDM1rzCuFiYP7BG3`*~ z>%V(#?JUEsy$6vqaiVx8(Ql}b%)cfS4ob&Ruv24&CI;t;B{`(-7809<5HtNzk?_95 z-hX|730xP9DDb^uuWsXzCJYR88v%71_ZyzZnYWE3l3$L=j(FB)#;}U435dyZZB<$K z-Aoc~($oK0Ew4GI@5ZF@T~vy|VP?zV(QYx8&R^kxNC%^}MH|KciUaPcWYN4B8xJvw zlK)Mi5=T`}yHwjrQ;#|-16f6ZIDn07f-X*TF4M|R{}k$1Q1Vit>>7guveaJydpPc3 zz4#t_&N3v?+f*3u3yILK;1~oQYJTG9Crgm^XsUuC3rZFZZZnVntNwzJ{;6yw>)SH# z5r&7maY2MU4WS~0s7&}8u2lP2#Lc4~;o{j-oC=e5S0u4Ads}XM$j{;#Qtg?uZ`OAs z$?wS?8Gzu*c8a=0;QABP852oS^CA|cMC&RNvIVDDrKZWrgpOR`4!k8tRP)CnhN@fb zGDzFx_Ql8N@m%!)n+I(klib1QT;wxa$RU$PH{XH)&K!SYZhgCiRda&3vh|5+u)MGA z=e)mLeC<`qrlxBPzzu{_Z@PL@z9d>0k(rTehJ@#Lk-VfoKs5a>f3-ajF)lNcf#1~v zGQ<@P+L!x(k~!d*8re`D(YRY@w0&Fz$Rwiw)r`Yx-&sdH=bR25^3ske-(>{vSn^gl zZJ$A(QdMqrt@ Bv~Z9~MPJ_PQF6R~du>&?gyZ_4+ckOzLaVugjz z3&pR8mCE`BN$)q2Xute7=`2tz_iXpWMNi%GpTo{S5AH+nzpgYPB}fxRp=d*s3clR` z&%8d_* O zoQtBG-%%1?jxr(Aylu#(KuCn>Fz@CjU! !oL5Xnn7`_7{neWJd2d64ky(_O-F>* zw~jP8eIRLA@XA@IQlbnuY_m}-n!Lxr<47=>1O8MJB*C4h>R$JX5{V8^&@-BcMCIi+ zobA}(AWjRHYOjLcZ<=r7xjmV1r>oCxyj(UA(Xq&@ViCRZYRGl1q-8`j9okcN{Fd!o z^sabwCo~o1(Wtv>l4tmX&3NAQ7$%E7yXhHY)KV)+%GDF)Ttbm|{xL3nSR8{P>GJQb zg|lwsv#9Y*BYnO^%XK_;8rhJEmIBG!RLr8vOK87;C#cytZ?{EgTEppDpA5HG@O~__ ziF@WdW+Q;LWz?74ddfFY-WCHpnTtFb9~*U5jdU*wMt1q0kZyUazEw3x+Fx6I8avU0 zKg@Ef8^V5T^*fISaa{~u@SeQy8nuQoZQFi_F^#r995>{S+~88zQ$a`>?*TNlo5clQ z#VhRe34hn_EEhHY{{IroO*mUfo3lUO?<`WD<6FnwNfe;@B-;Q0Sg?QpFMz_~^z^Zm zcO}zoOXba}^@39C@iCNkx^+3*5k7nvgG`7Ec*f>u9JG-nw zmI+YfWB(q~o uxw-SfYS1QBEH1K< |xOg z+2_-hc$Xo08Gk<)BZ_BiWGS!z1`w(k2};nl8*q|`G9dZO-$f%9Q{78WU8^DhVfeB? zYULcydhF~GoIS=LQnGX66BxdVAI?Ocpd{UtX*grnUi8{WqPgVA#O=$62m5UnYrJDn zvoFlBv?mGP4@exOo-!tU3*07JVKN|XCRpo2kxTObwecKKO*YF?C4h90jzWYVQ7NHC z5D-LBdY9gN4TfGqm4vDk0i`H{Qlz8w-UXE=C875gIs~NNFaGy`=f3yuIeX5YZ|ltL zd^@u{GyAF9EUw0EYG+|{WOYQCs5*Z1;n<_=+`9(Gjb3c~W-Uu!zdbJQ4IL=tO^!~_ zz}$uf?_U+;s3%kYigDSb>jSo~JF#jS<{@_vYX$3usw*v3Hh+Gk>FO{{3u_`=L{Ey= z5Mdo>-Y{zTx$}RzkU90aE%n =xGC@AilZ_@=KdfO(cg|J{d|!3D$`ve1dTgysA6utb+7nVH<76QR zEF{YDU%59~3y(#F`fvHsxq0Y?neH49(BFrzMs0a13>cl!>rmfp9h}L6XGS(Lr=4JQ z{}xRioD(ATu&x=FlYK#(Zwuc?xe6Kty!=myR5QgSMx@xQer=hYSbYD JW$@Tk$D!0q_z_0nufertM{s8waSKv;SYS^-ep|^?OZjLp7suo&XEfkIt;yWwd^C z;Dq{ktBo>ef*vi=vV5V>(v)a?>8n6)MD;FaG8O6NrjvzB$nL(uF1U#X`986So|ihC zf}_fMoUzo3^yhM-Rr?36Q`gno;13WKU95LaJ$w(r&=WMgBx$oT ;RJ!vw+>=gy$Dv{N6CF8go#KBME3IJ>stt#DI2b~mJXxPv1p(JI z`k5*=clrPp{dV9sBJ8;KG Bb zbPqBNbLpdaQn=QiB7HChgxj=|xJa|dcouLxtrl9nt7Eb Jx4UoT+Xx(7 zKrW$9QlCY1pTD+ivsBGInP1$)*ub5(3`ruq?M(9a58vx66fU=_*&KI+j01A_AWm&` z!M5N}FSkJUk%q S_2r+Y}d!w9DX_@D{eP4uTmnIoquavf6sV4pi zF=)ApQXq4(oo3MmJ$H(EP%m_iU*oiA!1@){KUX;-N12YM?_8Y+SKFL^dAr8!#2l9U z7&A9|7)XmDTM8+b{Z}-E3nebE193>}b%yMwc}>vT1_`f(|1pSv?x_0`kUop;6Xw>w zo#4Bql!I9B1OAmsewiTBt|cCYptPZ;q-de_^m{BPhnDvdS=0qXW!qya?404Y&U&d9 zScglnU_Z^BayPRFa1=s1R5
Ek$cFr%8sg*S}dP#IJKH9tD zmk=Tk^T)|vEExkL233D_9;wk6N=hPv&u&@Y9Rg-|XtN}!(ivE85QhLNkT!ZCqMcyL zRa aLvAv>*9eY7F(km1Qfy3-TM>*`v zY>(DOJ7F`VS*e`G!&Qp6j&ERvSQ6|}_;L6Eo=P}90|ic$DC7 Ne2Iaj~gS$Jt~lsi#kdec_g?V?x2r-`kbU zaBo-QrynNl&zo2N=|;O1t1_L!i)=35GXJ$~-aZ#&L 9gj~ z1gR-9NJ7Vnqcf1U^!OObJqgiuS&qN0wY1n9Rwktz7qk**i9XsZyPX*m;s;F(P4tBH zd%6z%bQb+_BY543e^(;^Pv}V6&wNpic4Cg*!(IC;sgz|5jvw{(Z;Qq$U$pD>3s{|H zyeja^qHCs1Eabd9%7tIZG=M}b|KDcH^-y4SUe;wjLQCc4jWs>$3iFQ^{fUnGL%PAW zM3H9gBHp&b2!uPi8{elnuX$6|Aa|O&A~q{cPCQeHWNMig{C6|w-J`YaI21cW{59F( zSJVMw8$*=Hi<6c#TIep`$He5E=wX;NH>n;iM2e&S)Zd^8Z`h9z20US-os)dZw|~|1 zrc|2Rb64!Q7fwl+_x4Co^>em$m!U>j^hFZw@L@NvuT5d_t{B|clo LY-u(=M8%z-o?T?yq})TZbl4OO`O}d2+dm9I$afC${wA=?!6t>B5U+$_~f56 zrNP4!ZLXe2lrxxLKz)%r)Xj%cG)c~YRgLm!-D&%w{} =b8bxgT dTzaX+;PA&M6-?ICDM{ Ed%J&AV2tQ*)ModK6uU zlZ!IzA-%G;g@bQCywFR}n_Hig>FG_2Wgg>bL9^Arb@TCX8rjdUP*pfQ)F{Kfkxr|e zb$`2|3pd@{D>_z4^q7yU> F9$=+T{EI>VyG%5-5;AC%KqRa zx0^h;H-5Py@XHi~v@(`Ki22cX{V-q{t({It-U164&osUWe=U?P3})yrors_4K62j5 zd%KaSpAn0}kQw+a3wpa7#dQU5Kd_z(P7uB+ij@jBK9uURv2T%Be2Tq)mio%I>F~%O zJH6w2^~<<$!0>X996uf1VSr#K>9^^tm1vSmbWyFWo<@O5GGlC&zq+^qCAZ3$n9og) zFal5*fjoi9)(*mq{2=*TEg$QQG8cLE1Qn1TOiWdW)ZqaM!{jj4Wa>s1v@46W9tfDp zSVg+(T8(?DKfNY?n1n+0q<-iro7kj%L`P1JQIaHh4d!@pO-9xoH>q+%(mbpc(vaiw z9zjr2<(pNfnfn>hKSoZ3;i=(Vz$zhk!_oV%49gh*+Rn?_OX`Q=#=XT&w}mAJQATT! zjGxZ1+LHFAx}gObyUY-z`X%S#vuoHo5-UzAj%PSs>s4$gL5TQ*&aTIj+W2F>NK^Z= z;1A7+Yla6<_w6D)Xex;}C+h=fLI^&K)A ^|_108doSMkVrc z+E!|-83Z3gjEuQv+oSIy`h}DStjE3?TUJZ@^ocC~3?!9gFWmi!`^X}x8i2tZ4{0Ws z23_}};mB|HCS+gfU*FBDuwg*p9E)f6&tH?)3x=Yq@@AdjmR-(S38{aLF}3p6OA#U8 zN zKbJrIi_4;pSHGghPf7y=eI1@Fp{tJcXWI%%kB#PtG6c^GX7-PYh1yH(RoW5CAD6!q z79p}pzWKXWX8aZ?@uh*M%XS^lX;^xq{aJbg5W8EGmqBM2_b$&5{wAg>8*ye@q-2E* zAvowe1QZsMaW!Wh4=F~vS-y4GlqJJ3S}slhk?wVXt%%)PmYypl8VzU$vr7WcJgKQs zVZF&63ml)Qsg0cJD*IeCwNinbMLuoLw)%MFEXxsube$f-*4mh`7oBbS66%VIijB^l z8n_k*F&>dYib^z*)&U0%*O^yto^6ZM*EVz$tT%*^_(n93DxWAl{hjf$0wVC^C9upr zQi4~R;w&-DLT#P a80GBQX{ wJA{b~!~{_C`&A` T!u-%)1sdrDL= O%u zU5+KglgrwYH2z>Q+29CI{*&?$$+)*a_;Npu`&SA95F7;ah<9G8L^I+}iQ{2`JFV}^ z0?~>2p3(Tm@2Za?<+Agde|J( Dvk%Y3CJI)oK6Q! z61B_;!Bz=b2-67Cf^gH;IsvuZUGGAHakzpZ1Z4L^bC@!@b4Kj9K?h0E>>-pP3?V~i zZ>TfDJX^T2C=`mn>DCSjHCc#+FC?5uBNEn{#CkT}KKIyuR&$n|4N@0LWgi0n)6SQS z4>L>7Io*=|UKCbC{Nl>?Y9zx&d!!@^;6tszeLK?aWzMCYWe_v%Gzi&T#vQ& A5*UIZ2Nc+3tNQn5m2DGrFnWuXk`Qm44l{`1)kF+c=||Pu|&Zl F>|c-p@+bfR literal 0 HcmV?d00001 diff --git a/python-dtrace-trace-flow.png b/python-dtrace-trace-flow.png new file mode 100644 index 0000000000000000000000000000000000000000..cf913e26ba9aefbe3649c76ef08b4c9e2f44a75d GIT binary patch literal 24444 zcmbTe2V4_f*Do4CiXvbI0VzI;(ouRZqDYY |ut zgdzk89Rx$@NC}~Z+~IlO_dDNn&bjxV-+^If_MSa!c3c0oX6^s*) acFAP|U2 zOY?yt2t;EB0#S`K&;dE=YiY;8fy&qL(S1;P|Mg`cLHAVW(E||W^f$W|nE>RReXeQl z3j#4-KK-KtrDa?LGU@%abRW`Bp1XXG;aqC5suc*t3(|U^W*j)NHXW34-K3R534oGH z#{+8SUV5y#)1BqzjSjE=G5@fI|II!Pe)aob7}~_nO2$yJbLFOLt>+>>f#T25p0&HA zrTXB5UHF%j3wJ++jLw9H_3q{&4dJFx(*Sf<+#~LUjdFSD%5YKfPLUB*n;NLe|NJv{ zEopi19R=_}Av1jMG&s;% -)j_%6b5%7YR*gkDga&|@p&) l$QeM)w_$gkl%<0pG)_og@pFv(%(mj}k8UH$)t~BhxI22o zwQ}@hdJTRDm-;9jn|1rkcWR%Nk#_IsXXL0e%NySbK7P>W+MrL#&)3;a0fg)TLP){C z!`6NaOaLOFbAX8Qf@5c2)Yq`|qsXGXyxRI0-Fwd`vrSmQKBtZ1KEnP5nQ4K}VVp2o zgE6?-oUMf0?r1Uz7i%<`=;rdg&*gUJ=xWLAPYF!&@~l_IAYY1g9+@;7mv-9U-+EUu z$!@=hzEV&hjplU~oy$l)<018Qm2^G#^_4o9_qdQn>+Sqpv1TiU4K(=^GX^X?64TH( z@|#P1A`ESwCJ)WwP|QQpF@h&r?rN45q` zYbDHxx|ri8B{xFEih%KiM17ZcWu)s>O)nL?0gTC N4gQs^cYw%i^x@j2v3FX=URCi1Mp?$YlBW}xy0Hm<}1Y}WRuG_>@# zK6@FQC(wdLNnXE(G^0#*=FULY2Uo<(?O)(aI4h6|mR=X37=4e!e!J&TJGa#dTWk+X zGf$*U)pM7!5{WifNmlqnG)8+g(&}2s+uupu9*mV)!H4XbfjwF)%YB6vroHIty)kt( zn({(znOapOkT{Y8-Flcpn?@?IEXVaXud$oY?2SPSYyy{UuL`7Si*kbIW;u0OR~?X# zjg(tWQvE6=pRG%Z95ds{7D>2TwD7h9vW`mPyQ?PHdX>f09|ukd*EDPWjM*)E<9N zlb>%KQn+rfw0A~g2k_@|D@(?&SUJ_LvkR-o{~C)-5?N`tsM!dKVOP+wRFJ3fs=VjW z<W#J~*FUj2Jh0V;n%DTKm?Fcu%ozUN?M(J&)V7IB{$S|a-!ZALML z+|#|C8`o! ksvVY zG4kZ(2eD~?Dt&j5*7QiP;(FIKGFj0b)yto3-BQZJQ@NQvkl_I0Z7jGgfNM5K%?x3y z EXbE1<&JO=Ga%_AhNHrChqnlAc`BkU zx nc9)aaBjad$6&cJQDLTxRomASBnCiFv^wPhx1m%ceZG zpOp0YRwgzjad|A6;^F){w3+0QSsRQ}z6-BsMv=P?vFwQ9ivhF9C(Rq>0pQY~H0$de zt(NKH-M{DjN@+@?PQD1{w-L(eXiek$qN5nwjc%v2U%5uyJ TB+T#J@=P66 ze>#waBc4>J`wcdfk2tf2n#S*bp=DcIR~i@`@KjXQ*=&29k{O0rr0g5fVCvHcdNRm# zDv$PthuVWGEy37N`b8wN#7M$H#OSeoIqbdX^zo0?!_7DrY|Zpd=+4i))u7ycQo3zc zA?HSm>1B<2=3vTjymQh3af!&rJt&vbKZ0bP`b#S<>=%x>Xv4PBFso$P!FibmtK!og zq|NPH7b+KE+In=nxr?uu$ w=Fa7OcaO-U{NBJgJ2txg*4*oo_}V2FzR-HR+&R6 849b%eiIW zxX1q`hn`WjOd=1bL7d*Z>%ODWDjuA7%XM)vriZZIL-5tULT|?0)yXn2ZmLoI@G^2E zKe`RxDxO-ZN8WRW_N1V5qZh3!@;+j@WJItj8*Tn}ySVquZM!7{ihAmoqi%Bry@gdM z`Pc=K+Nz&4%!I~&N1o4oz5zW%KMFHX?Y(17sG0YV&R(y+6LbyCg%$n~mVUk)l8PDe;~G-KH3&uKZx5qHen^U?j7 1PJu*{1 zSQdhIhQpIYU{`vkB29L=OXsMPgFZwrE E*}k45jDVNBS)rG<$@QEk1HYS~D^(8^G>YU-%H4aH?SG zbd#M#3FyR+o5W1~=F-}z?eZ&@Q0v+2$sC$p88*Jk$hMsa3EQaM>{*HB_thHrQGU;w zgEAK-R;z+EaG2`YiJ-jDy0x&~fvFo7jRPsW{u_4Wr{n1yN=GGG{p_9C_fkHBS@>cM z8W~y9Y&km)Z{mm{L4VxnI{(;9vuBS`WM(rIcT)SfxnA0=91#ReT^(TRs{9d 3L #G>6bJjyD1~z1Da8rL6tx5TpM;Z^LlmbZ*`Gsx7m?#a%P4G+4Zd81%H4FIm z

