<div dir="ltr"><div>Sorry for the length of the email. I could not hide the noise created by the images I added. <br></div><div>Also let me know your thoughts about the requirements of the function tracing use case. Do you think the options considered as viable?</div><div><br></div><div>Thanks!</div><div>Vidushi<br></div></div><div class="gmail_extra"><br><div class="gmail_quote">On Wed, Jun 6, 2018 at 2:09 AM, Vidushi Vashishth <span dir="ltr"><<a href="mailto:reachvidu@gmail.com" target="_blank">reachvidu@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div>I am just sending a revised version with incorporations of your suggestions. I will create a fresh version 2 patch after everyone has reviewed.</div><div>Sorry for the spelling mistakes earlier!<br></div><div>---<br> images/user/ctf-stream-<wbr>packet.png | Bin 0 -> 21843 bytes<br> images/user/ctf-trace.png    <wbr>     | Bin 0 -> 16038 bytes<br> user/index.rst               <wbr>     |   2 +<br> user/tracing/captureengine.<wbr>rst    |  10 ++++<br> user/tracing/development.rst <wbr>     |  12 +++++<br> user/tracing/index.rst       <wbr>     |  25 +++++++++<br> user/tracing/introduction.<wbr>rst     |  97 ++++++++++++++++++++++++++++++<wbr>+++<br> user/tracing/tracelinker.rst <wbr>     |  10 ++++<br> user/tracing/usecases.rst    <wbr>     | 109 ++++++++++++++++++++++++++++++<wbr>++++++++<br> 9 files changed, 265 insertions(+)<br> create mode 100644 images/user/ctf-stream-packet.<wbr>png<br> create mode 100644 images/user/ctf-trace.png<br> create mode 100644 user/tracing/captureengine.rst<span class=""><br> create mode 100644 user/tracing/development.rst<br> create mode 100644 user/tracing/index.rst<br> create mode 100644 user/tracing/introduction.rst<br></span> create mode 100644 user/tracing/tracelinker.rst<br> create mode 100644 user/tracing/usecases.rst<br><br>diff --git a/images/user/ctf-stream-<wbr>packet.png b/images/user/ctf-stream-<wbr>packet.png<br>new file mode 100644<br>index 000000000000000000000000000000<wbr>0000000000..<wbr>0c41fcfb015d5f7ad2afef0fcc09d0<wbr>7ea4a9b155<br>GIT binary patch<br>literal 21843<br>zcmag_1yCMaumuW#1cJLKSdak02?T<<wbr>>B{&3kcL^c5B{&3km*DR17Tn!ExJ!<wbr>b){hf2}<br>zz4ia~s$LcHF|%i8@9x#zYxQh`<<wbr>Ygt$kY6H0AP_VuNl`@z<XJfQyo(<wbr>4AetP9M8-rg+<br>zc9QB25C{qm^cx0}ltKuBAj_GHh{(&<wbr>E*?zHgFtfFLB_$&A%I>qRiMbWH!g(<wbr>Q8$y8Zs<br>z51;R5<x==#pm)qiTSYv?SBk<R-<wbr>nfy}bmT~w9|FlU=kXLeu*AgRh<;@R!<wbr>iI%;hvF$P<br>zpavt)A#9Ong?-Ns3?8^!cgwb%X};<wbr>MReyo}0-z~mKtr|sWM?{U2WK($<wbr>Ojanc~inaE=<br>zue*1Bi%HN2naU1=iCASs?(jef1G)<wbr>9&<)x=+M`(q>I8UM=LfU1L+gXSMo-<wbr>p=>6SZKx<br>zePP<aM85xs=#2{zbPW^Eg$Rnnc&8><wbr>%D?u{gAbNv_2AdFhMu;Ab*UluwJM}<wbr>iv4F;ka<br>zLyiZN5ea#PV;m?7G2?+0kE#<wbr>TVLDX0vxF#RFxgc|l5Edy_6G=#U9i)<wbr>8(6QvS@hzem*<br>z2=sdcfpdfC{i39FhWI8zaK+D6dC%<wbr>xeF?Z>Jr4lQ78>qO%d^8am?GaQ}<wbr>nMi3zqzLG7<br>zIrN|DCkZljx+K1M>%)$*b}<<wbr>BjWJKbD)m}U}kD!;1jBte2qU$p5x4}<wbr>PA7#M6mZjTn(<br>z2|^(2Up&Vj8JMeHdh@`0TR&#KK87><wbr>XLCJ8u2{Ea}5Uhb@>@BEX*g<<wbr>V0mKo77Kfk@T<br>zHTR)gSW|yM)#K5$Q@369!Rn7E@<wbr>BPiyTI&Xt&s%LD3Ao#}&Y?@`9OBU^<wbr>BwvH2op6c!<br>zI+Uk-l1YkgDT4+zI^0bKZ2K_Lq|<wbr>l4EITS&{QEz%)PdpiItTNoe@~^&<wbr>wlw0t_xJ5GN<br>zYa7B|f26@w`_jH~1A&}3*>+<wbr>6PBEou`eP17SdO8t!kjQuq@ivi)<wbr>vWGx)M5&mR2dV`6<br>z5FrrJ3?I63A)?C;LWXvD;*RG_<wbr>9VqvD9KOO--JQai!pKJ6#Gm!v6n_(@<wbr>^&c)Lq0?iY<br>z5+q@7S1|LBwnJy?{8W$5XNU1uA2F?<wbr>iw%G>>PUsgRjz0N9AdEq<8f6$<wbr>FL89L+d50t%<br>zb_mt0{y<y>ijR@+Bv}=Mm0x|<wbr>5Bsu5%{ERC=OT00X=NIJdw|oC)3Dy{<wbr>&N(H_t)Ebe7<br>ze9o7?;#nwTMqgNy!tpbb$39oT<O}<wbr>7<+#M@2!&nIC7wKbZ|4oR%)@{YY)Y~<wbr>Oo@ty%G<br>z+HkOfq8PQP_hq?CF>F)<wbr>NmEmZG6CAdWSUVC2oRjb?eNrJwHEA{<wbr>3Im!H2#8m893rL(u<br>zu)YeNG!)VKAFHVwvHo-u8oXr<P?<wbr>Kb!oWTyqVa9X|6zS%q!<wbr>VVI7OVbeXOse9i@&xvT<br>z_=Jrj<sL&pGP~qU%IN+DBg;wzt{8?<wbr>_^uPSJQn$Lc*tUqa$j>#AQw;>|<wbr>f8Hu>&?*jC<br>ze0Z^qxy`-}Z=CQ}=u>u*;&OhbGS<<wbr>6r4dIf^TE#MjfP5Tw$0V-d@Ay(<wbr>5b4s#eCtsQo<br>znBAC{{r=L3wH!+-8$YHxF}Nr3JN`<wbr>H9r4uTeKi>DgKvUWm$%F`mrZ1cb%<wbr>Mzq>UrdI)<br>z=u>9lWIagOO~gpF{iH@$OXrRkIe;<wbr>AdA(lFph>lsgpfI;^r4Z%Q#iv2#@B$<wbr>qrk5chZ<br>zY)YF2NK<h|p9)ju50r?MObdAO0}4&<wbr>^ZIuOnda6GJ!K-&kcgczTRLH2%-<wbr>E8iCg<|-k<br>z%9(-O60OMJ(dS(^b;a<!`&YWAga?<wbr>wQ5Wd2KOfC_&4{WMciWe~^0tlN4_O~<wbr>ftWRZ4h<br>z^WrZ&gI91*-fX-f%4L^sU^<wbr>UjVER2hfQ!A1zQYex*XyGV5%1g~{<wbr>5o=Pv^FbHt`#_^b<br>zBVigo@;r4{X<lhL4>=EChL8KIl&<wbr>R1%hbXg2)TzxT?>Hf?RmVF`+BR>+<wbr>rDgXou?O>m<br>z@`Lr?yekP*HTWu2D)><wbr>dz5klUcclNftB+Pw_X9^<PU4kMx`<wbr>my@)>%Nf<<Gk6^;y=VO<br>zLd|=%HmNqPd#!u3so|-~sXxl>%N!><wbr>u$~5G@$>ovek?tEF8qOM?Nqm>g$2$<wbr>9VH+eUC<br>zHhHy9Ps3S*p*Fv^-dL(~<wbr>OCwkPxVG8GPlHQ6N9~h_c9nQZYRT)<wbr>Frjn*Sth@%<XxXB)<br>z8Pl%vv)caJg1Q&w+jH=XrM1?z9{Q#<wbr>R1g3R8rCrC-Ezus09zP!V5YPhV(<wbr>ThklNIV^?<br>zKjU(%aIYkdq#O%)^jya6F`KH5Vvf$<wbr>SZPwxpzUekkRZ5<eFeNZ;aQJ=^7!<wbr>vgH+aOas<br>zKT|SM@A9vftq)(W?6ucjC$<wbr>3VHtCBm9@)ygFIgZVb1D4W<*wf#<wbr>nsk1qZb^Q`qQ`jCC<br>zKuM2fv0N?oloOHjF|FC9WHw}<wbr>uR4th;ugh^NywN`);J@booW9Aw$;-<wbr>L&c12xxh_k)!<br>zSKXjomu;G^->Qfg<&)8q>(e+S&-*<wbr>ouDQu9BkdNlGyIWUx^0qJm?nUG4%<wbr>K0Oq(2NEl<br>zJfZM!CEvC?O32NA9Y&Op-|QxgM2?<wbr>uF`^kI$o*6^X-_Z~0@<gTa3-D9*<wbr>7YMTpRC_tj<br>z8vo8|d`ZM%RrIfDoajojDXSb;<wbr>8RLg{bo_-(7Q73bjqHsAy-X(RL(^)<wbr>hYEo7oiMg2Q<br>zN;zz-T37FnE&?`EH&8a+2ojioY1_<wbr>GEj&xr7<>41FVKZ>Y2}%dbzK=N-!<wbr>lcW`4}E=(<br>z<McWV*`<@D)<wbr>0BdFoMSw2PDG22RQ6nwPR2FrFtYib3<wbr>snzW4#ReXFHJ#2voxCYax!-s<br>ze$v-h)^GW^TUftGMMl^Q7m~|F*<wbr>P8B|?wEWXEH?J5eC)9asbeOMMd-<wbr>JziYR`r&WKzq<br>zocmi@gLak<q0-b?)ue4WXn-rOD2;<wbr>yjXsBvnF@iJYB>m|KyAyjosy4^}<wbr>qbehb+D=Qc<br>z1y?1ny~`r<Cf;*;e--#*-umELI_<wbr>qh<q9fJ#QqLA@R~btmosNNT9W^<wbr>kP2PmJAxBWa0<br>zmS&H%<<ywfS8MeD`lk}{;{^qm;w}=<wbr>z<9W@|E;(-#1=tR>B`(EO7Zi0j7>$}<wbr>tnC$JW<br>zFs5mu#}&r!#G~7w%`a4=t*<wbr>TTXU0sVUGRF_oE;fCy6=}$B<E?Kt&<wbr>g&l;<`Gc-seGyY<br>zSDE8@V!1|t_SR<nn8>a9n*<wbr>DHkQM38xfxo|X@e|A^nQ4=0<2$<wbr>LlsvCjQpu)Y|xI1g@<br>z5?O2eqdwRP*arkk^xD~mscDi4K4r!<wbr>58TtbW^ggoI$J7%iMl=qzPd`$6Hz@<wbr>5yUAFda<br>zkXCO<(YP1BhPoB6BTSNgB{3yowh&<wbr>G_PZCd7O1jfD&}@_&;vb*cUva&cSR}<wbr>(pVdqtM<br>z`Ea4!Z@#eiZ8F;Qd^9vQHr2zE><wbr>CckhVpgr&uHne41%~ZOBj%U&39+Y;<wbr>U7lv15v}w3<br>zFXxqu+c>KAs!3(sy4L$&_IV$pC*}<wbr>H@Qks%V8?-DNj$K=7+)Qrvh|)MmmM><wbr>de&hVdR<br>zrqj6imRl}dZEt#Ru2%7vJwMYtj0`<wbr>r-JJB4MG|M&XUJ4!w&5JAtObci}<wbr>F3p`Rd0DhO<br>zWn7FeN!-BueII>{yb8w<c^;k^<wbr>KIo6;e~|W`pNnfl;Pb=YeV)ju(I|<wbr>Bq!DH6rU?~AU<br>zv*+#f!R*L*!gyx<d3<!6wR_IPe*3|<wbr>Tvc=xcUeeZnXEs)yOO?B$<wbr>4yPq2l9TLJ47n}$<br>zS6;MFW`8QKl*aPzqF+QuKf%E!T-+<wbr>P7F)jkW`N~jIQ3e8WeGP$le}_Q+Jb~<wbr>YP5QrlS<br>z1hTIOfp8~4AOyBix;^3$$Olg;<wbr>Q6XjLg~JvXJFPyCle<(jHbRE)9pc|<wbr>8AjnjR!Oz4Z<br>z^wg==6DXc*sBXk658yE_1{<wbr>vJF5nHKeSd4v7o%*w~`9Mn{%<wbr>yvLCisIs&VezDQMo~q|<br>zQ+a?~TK$bu);S^*1p}5ZViW`}V$<wbr>KBq6+BzQ(SyA#*(LE1D*Ryat!JS;<wbr>WM^pa_~L*+<br>zuWfg>?U>`ffA53>reuE<X^W<BYE^><wbr>3c?Ao?4EtL~<V7k39md(SVdD0Bg?U%<wbr>zx#!XF<br>zNy*lA)7)1F#C9Rbol=5Vk*gQU^<wbr>Rb2qoQnbvY+*@$18HF`lA+B5f(--m><wbr>Y}gal1eWy<br>zq$oI}&A0XkJ38=OZD|S}@)p9B7<<wbr>Cq>SA8*s&k?Ks-eoMzLxMSv^63g+{<wbr>tU|(dC>X(<br>zcM_&2+d*<aP^Y&zz7MHKWVZ0*Y>p><wbr>Wcd`<n+!qce+Lb7^m0-#!@9!G^<wbr>yV1YoybgVn<br>z@^mDF@8$Bn$P`D9K3(j^cK;H(<wbr>dRie&HEC`}m)b?SYxwEzYwd@oHBm#<wbr>VAYdu~WD_y4<br>zK%PTBfjfKgIh6hUhtYy<*=6Ng%z_&<wbr>CVi}vP=TX8{MB~rK&r&yYii>C)<wbr>OLAF5%pZ@~<br>zbruO~`DufM8$1U4v{-c-4RYp5vvs&<wbr>{&8U4N4tw&yax)iT9Lx3_j%<wbr>RpMJIVG@jl)6u<br>zrbk_;M>guGDq4R&E*Fr-^O5&Wk&z#<wbr>UeO$Fx9sRK@g>7Cx)fU|^$G@ZeWIK!<wbr>0r!?Wz<br>z{ZtZV#-EqAScrq}y0Psj+<wbr>9FFX8YVUCBLC3#iSHysnFdX9_<wbr>dt2jQ66e8ucnwC*5#W^<br>z^DUzO+EtZ32UY(C+va<%!0RXu$t&<wbr>8r<Pou2A}Y*q62-*Si)xQEzO(bWR}<wbr>ai&(Ylop<br>z-48#@2!s*I)sJ1Q#$4EaIZH(LAz><wbr>d<#}uyIvcB`sxp2tpbBq+Ka_><wbr>yJeDj^%E}vQ_<br>ziRGmW@>k<wB`S)Q_<wbr>RKPj4sZF1LzXwyc2l%RraD+5^<wbr>053Ss3LoRwZfnQd;4{B-JRpJ<br>zN+Ikno-ZVBc^1)z`z`@fCnu_tpP$<wbr>v|#vPO=ov=!+k%mQz^<wbr>9T1CEtFyUr7MPWN?s*~<br>zT_;O>22jam|JsZxU9QI;x7j#*^X^<wbr>FJ>ZQi?+g{7N&QdTC31;b4YMt)<wbr>GGX4Cz{5ST@<br>zBIsJU)?5zd$#x`^$v-0oZN|<wbr>7dre3o`u&(m7XA|pS301u`3<<wbr>CuvSNx55&|T^qD1+`_<br>z8f?*Y6HsA%%DW^vo3D4(7S<<wbr>XeXp5ySgBQi<bL{0pK;mVQmHHw&b><wbr>6Q-O)ji~<@K9=<br>z^;hgQkFF>4$7i3M<J@uxu<b`G#<wbr>Hy1;YbVp=^N&K_23<R8IqBrZsF+<wbr>5X8~EG^ko!iU<br>z8piRmF%9*Gk@PJkv^x|3AouOIQ^}(<wbr>;h_meUXX{<<-=ax(lH4yA)<wbr>tblZzo6u<>YCsx<br>zDU^AMuO`mLY>LWSLCF8waiS#Z!<wbr>T3at=bWvTRflLO_L_)ZK+;;?<wbr>883WaCt*u%$RD?j<br>zu-o#kkLBPE-dSDWP6OxeM~56)<wbr>GYa2`6o5}P3er7VlK_!T;F4M4FLMU@<wbr>r-&vr4uP^K<br>zE(|s*4!r34U*G;BPt6F4O{d+(>JM?<wbr>y+OOu$Il#9!=~SXMs20^yx#RsR6*D`<wbr>SkjgOb<br>zJ)hZZM1$}?=cM-IhEVrF5cy};<wbr>CAtlUNKx&bw+$1XINLPcpYo=d<Rp#<wbr>F;urRX3R0Oa<br>zjp^q<1Lsksow;bMlY87Cni#%|<wbr>mWsv{mP8Nk!%6sY5u(Sz^zn;XiM&<wbr>7Tri;SMsm<9b<br>zS&=Vmotik7`PSr}uduV(c=<wbr>M3qRipm&Z}Yx(^nM$_%JXO4mx@}<^|<wbr>LgIa^_cB@fVxh<br>zuT47A6vOvgKAvHc_Sz4P<nsM|WX@<wbr>yeRSB4W^2^Kr6fZ84R<o{U(<wbr>ROzJoeH<dR>Aah<br>z(~J1hGAEcL@$Rd%4-;u;3$1~Uq^<wbr>g6=0sg$qsd;2Oaxv7viNsy67_<wbr>nEF9P2;#QMvJT<br>zV-|d*+0n>3sW(WW?@J6)dm9<<wbr>96kpnm8*$G$6(&J?J?VC|v7N`9cPq_<wbr>Qce`4^!xTp{<br>z-e>o&yPrl!r{ZugSPA{XG34`<wbr>aYpT4}Qu;hvkus{R6bN@)%gvw*ThS*<wbr>CD)-jwMWXDq<br>ziDl2-K{;L1vxToG6bnCyDd#bFSH|<wbr>l4MXkwLt;o}94*7JG9IU#<I+4h!<wbr>oVpE}UUhF?<br>z6gT#CjU-}%cnIl9Fx<woHv}0Mk(>&<wbr>akRlSXL=cf2{2A3Li32_8iy18O&<wbr>oALK$$w6~<br>z4RFcPsju$-C|fyUD!uFaP!Wbi?z=@<wbr>tzkG4q2RSxid!;Ul=Pi))0*sdDHL;<wbr>a=VB~;}<br>z5+i<Io@DaM7c;6PLG||PiP4)L!<wbr>jHbjX@yROqGQ63qDLen1ZJSAzL(a=<wbr>18GHHyMsuB<br>zb6v#GPs<=S<G5f(w4_z>UZ2Fa*w~-<wbr><zv?`=bz*-Gon7DIt~$gEJtHCa)r)<wbr>UB(7ED<<br>zb9IZ+vW9!fDn+0QmQnsQig@b)6s<<wbr>Wyr3iMB|2;%Wo0fhuhD-Hh>;<wbr>SsB4c34^ZV(v=<br>zIyfZrzlRcGPCr3b;o^_U3j+STze~<wbr>Fmgp~Fy-1jH8D+zS<#3o6vsCA#8o<<wbr>MZqSY#a{<br>zaNC!Szzw&kE_r)*D7;lOP<3&<wbr>lkbgT;0Ru#jT@a?Xc~_oXA$^j@<wbr>uGISHK~$!hyR7`1<br>zkVoWp2lnUcCjSf-K1;|;f!J}@f5A}<wbr>af8Uh^{Ly1biu3H0MjjuXIfLuh+<wbr>y7Y|?=F?M<br>z4a7@YDdM&8f2+gmRE4>J<<wbr>K1M2TnYEz-RgyJF+bdIu8!dvMgF%<wbr>ud%v?fdFqjBa0u()<br>zi7>Bmhxa=mv_ByMA9x1ryh8Cl;<wbr>Kmk4>?iu|qD4pp!7UQ@jxfrcjRb+<wbr>YA~?F)i3sD2<br>z-#!XyM(-h#lBD=|jjCf8^>&`<wbr>HYmBs2Wk`t_{~8JJl9ws047MI(<wbr>On66`^u62XA8WcG<br>z@P&tLQbL}dt!c79mx8o}LCZh7D=<wbr>ER~>a+T1Yn$@^l}M5QK2Jw@baSHt*<wbr>7)`>fCoFm<br>zxX{0Am3SNQA21@<Y~DgI$L}<wbr>KZJZZplSr0S0`}}(P+1fkE4aJX-H_<wbr>naC^o{FGh7UR4<br>zo^l=^ab{ShUO(L*D!lZ;jQR@J$4!<wbr>vg&HKnDBlMqPC8FST5$q7#;gbw{<wbr>y40ZHa{0k)<br>z<w4*r@a)v(%C-_x{0TqdNL+gPa*~<wbr>k#%H%DPd}W7!KZZvj93?yOe}wxwC4?<wbr>Dro9E?u<br>z{aZqqcLt{3yh2^S7PnoGeM}lf1>M`<wbr>l5s|zOE7E+y_O$^W3M@p}hWio<<wbr>D2zxuxQ=$z<br>zXZ!+?sSusxa0U)~1{He0%`C>EK=^<wbr>1%Y0YBMQ15Y4akHpSs3Sb}SzhW@Xy{<wbr>j{!>omi<br>z%H4!EWO&c07kZ{}K=j+yq+uE+<wbr>SYrLLuE8>`p<yPVP_w}%%&YPO_3}<wbr>Lv0(tzt$4^*`<br>z?SIxBf#+R_S2VZC$QJ1hqt6^rriy(<wbr>Db-%ilJa4XdL?2={AL@5MHXGGW64C#<wbr>xU&-DX<br>z?2TJxEA{vv_9QBK|DJ_<wbr>mvB3HZyOLe}IsV6ah&`0*9Ktr!<wbr>cfT4WU6B6qGA(I;C3YeQ<br>z1g2fBbN#@*+2KE&O2(x|<wbr>EFvmN5yInGN6P(&)X1N{l4IVdB$<wbr>T0AjWlJ)FaN=mJa1GC<br>zRuW66+2#b_pJ)HwRLUZV_SwYN&l^^<wbr><W5R!i6&nq)3%Me$vUaKwe;X$<wbr>inj74kZ9r}b<br>z8<cRn;5f8tCct~01Mv>wEX&M3;<wbr>QiYte){`bJHI49*ky%zqzxA0{N=<wbr>7Rq3`Kz>Od+!<br>zvo;I42Je&e-Ts}6xuHI#ewE+UuwU{<wbr>l3kO$+{|CfO=OHTcc&yxD%+5&@Z_<wbr>2rbfPF{Q<br>zr5)=k;;h^j7owHczx+&T518P2;<wbr>HFGg#p)qXXBSThhEBW*X=moEN2D*?<wbr>r!zev-cG&Y<br>z0~?C$)5SfDs;hl-B%@J1pIU?aoS*<wbr>Sx$-J{X1M~Y$MwIDH1x>L@fvetus}<wbr>Ln~LUN1%<br>zJ_j^clK6n&D8*_{TM>y_<wbr>KlSiAOfWeg=3_6^CQci1aER8&$<wbr>uVDGziPl>z2qKqSp@cC<br>zXI`<5w25;CMX-ODV0Tr>S}Znh<<wbr>oHMOI3K&W_0@rb!l9s;)<wbr>SFWDtIeaL6T_R{;W;&><br>zqHP-A+?MuWgycHQXEHwzQqQtmT$<wbr>1Tl3Ki7!dU}${I(77VdXqGyM{nO@6p<wbr>`Ae{gP`v<br>z7X7mq-r{jpSMPkWKukWbT!p{#LI7%<wbr>%B#Rk?n_f5QrE^<w+@5ZvhS4}?1*;<wbr>hgR<PnH<br>z((;1X!Ulg7CApEBWLWSW_R_SPl?V^<wbr>&d98|c%aB+Tk27K1xBH$5Ut`<wbr>CAEcVnN6)7iB<br>z8yDdCwoJsiIeye6ub>z#T!<wbr>iPRLQfY=lFy*hoX&VKWBF~<wbr>bKpSHXoQ7Iw?}b3x!XIzy<br>zQ~tJHa$vbh-Y*o|<j!QvttdKe6o=<wbr>p(gw$#!?6Cq1>N95djm!jNyj_^~%<wbr>TV2mv61+6<br>z_aU%af@@yi+@u<X&a;p^<wbr>vdMv0k7bNyoxq*d#hT$|B<~U3d_<wbr>Li10Puj>&FdkNJ7ny#<br>z4vPv~+#9MRX0p=#((=*i+op-zwa#?<wbr>6e=<~fdfF_Q-F2q$bE<GNgV^5O;{%<wbr>isCZ`DA<br>zjCt=E-}U@)Vz0Ogxj0z^<wbr>F0mBZYkU6`Ms3zs|HKLfG>J9=?&<wbr>xa7XX!vDthR!{O-tvq<br>z!?JPUWZk)oh`8g+P-dIv-<wbr>13mXMQQ4`U~FSV-Ixp2=PK@=qaq5k%<wbr>!ilZc{&nLbBNGo<br>zH?w)V-)#+^j@&{m3Plkx-X;J^2f><wbr>Yizix_`srr5(CSV6~<wbr>K4ZREJ4vrlXAmhoWz+gy<br>z2@evm51*?zo8Eu?Ai`{C5R?l1bQ%<wbr>651Hfb__24%*8K=y;BW{+`HN1G<V)!<wbr>!ANzeD;<br>z#djE~3|e=6{xGzpqFl>=BKRs*<wbr>1OATx+#z8WP>{7hT6xh%%}-{vQi`<wbr>OZk05x~yMR*c<br>zd^|ZiR1nR|Ap@<C_}B{mWilfy-|<wbr>BvQ41N9WsHNlUZLVJDIU*X{=Du+<wbr>QMKr<aBlli)<br>zRFDg9g%9HuQMucu32)7T4;QOXKcX^<wbr>ucelJVSi9%zVN6|gWE3lhM_KANVe>#<wbr>20Q)30<br>zJl3$I;YH{r!#e<?3SUc0@;gENv$<wbr>K9cBu8?mqr&lRfq#Wc7}<wbr>9WUSi4Fd3ZCB>01t)O<br>zwOgIUFubS5E^I#S8?mR`)5@<wbr>LMm1dcslcM}ikY>IYiNGpUxSwtO1>@<wbr>N}xLi%2Wjn>Z<br>zty^v4v*?tSn0;>DpT4aJ=CH682gP+<wbr>3)o+7snt}OJ*B8kaGaCh|7-k~p4~<wbr>CSt02pIn<br>zkrH($-#~O0i9A3bXDx;YZY!^;;<wbr>0KNe2S+m)HB*vPp<nWvL_`cCDt$s+<wbr>e?u96+^_iC<br>zQ5sF)K3sPLAh>H5op{P$hyKHdv+L=<wbr>bc#rv%y0X^rxW8!5U=7f3h{-G;F#<wbr>zOb@9^y)<br>zji*3v-31gE*^5r=%;~otkYIw79w*<wbr>NdG?;^c>i8~8Q|9swO9XU_<wbr>ZMTPe9sp#?g!I-F<br>zgX`*g9S9ViXYq3P{AmkU5FPj3S&(<wbr>0dVs!x0@ehz70JE4nymtr9+P#<wbr>68mCmSMw=KJn<br>zR|ZaY`4p5JKPlkg&_GEbVtp1jE%<wbr>bUOa>IVU0)&61P0P-o5Kg#d<*<wbr>KhEQLF}?l23Dz<br>z6ZX-aMY(bx-I+|t4<=(wUmb+^n<<wbr>KN%^08xnGVxFcORYKC`*Td@&T5gM^_<wbr>1%TXK(Ng<br>zfAk>ZV;zB7c38-q5|@<wbr>s0OytKaOyNssJ{;We7pf=J?akbQYt}<wbr>dvLICr0`ntKkxV}rc<br>z*HnCnXZ1^icv!-}J_k!&2fv`<wbr>kekL3(E|VX@;8PJs1sixP1~`=o;<wbr>YGr8Uz#5*rRW{<<br>zghED1D}7ep;4}_{k**CmkNc&_2o}<wbr>rOY-%gxhE?+z`JZYA<-<wbr>9ZDlVHu78BiJqEjmcT<br>zOrWxA^#3OLmlFZ%h$H$8-nWIgb%<wbr>g4l0uH6cV!sT1$4UJ=IzM%>*>nC|<wbr>Smk+l@b$$6<br>zKkubo{!5I(rOE$Sz9(I1{&yS$<wbr>dELIpR%N*PzswEr<-8ziB5#Nu!}_<wbr>Ts_wlp;nOzFa<br>z7DuNtwtt7H=6?h^VoUw>+IKw=X5|<wbr>H2uBkMl#Ah$*X|uqL@>g(fLYU$<wbr>rR8mB6tR$!H<br>z1PP+=v8B!bd_YNI!B1QxC6>uV8!A`<wbr>-Aa7>hZYEhOr6$Zqo8I`NvH%NwYM><wbr>uuG+9#f<br>zVBTkL!EkuhPV<c1<wLtN#7P0KH$;<wbr>V8kM7sO?$U=wl?A4jSvr>c^_w(U@4#<wbr>gRZZ8QU<br>z4!tjhnAdM<tX{unN&4(%<wbr>d1yzAxVlBvY(qd7lB@q#d<QRVb0wL!<wbr>l;L|zF(I|Xano~=<br>z4$S6bo_e-@@rD*p9T;<@KNWj3V#<wbr>S4}f-dTB7~+<!5eP~+Ac7&QeJimM?)<wbr>cArUiB{H<br>z)bsKB(-&!CvZ!BNbJaza#@2pZtwC;<wbr>1LrSO>SVD(*Syv2uMLG3;`xZqvH<-<wbr>dgcwyMR<br>zsK?%EK<^6!5BD%h%R&>zdI_&ZTU?&<wbr>`a{|UNZLZynz0;zuLytwT_dvp@<wbr>KkfAHQ}lN=<br>zU6Y=|!p{lP4VJKN9o`qU!b>N~y#<wbr>pS~*p+Wt5<_X3=zKf$+Ph;glsF_-_;<wbr>*z%Y9_w!<br>zHL1va`TKwp;*yfa+M%Hs6_3`dq4;<wbr>et@lQ)&YdhSbagU2RteZNkyHAiy+<wbr>iuEBp@zxG<br>zi`hFNA3R4Nh!qx7km#=unM-@#4i-<wbr>jYy#L;^piL$5c~GBSHzfOwfT=B^On;<wbr>A^KV>Fw<br>zUB`Wu_|Q6Jh>KtAgp+X0v_fw(G+j<<wbr>gSOwFh3Tfx`{%rWqX^N)Q?1#miM-<wbr>2i-Qlx%@<br>ze~BPI0^p4H{{uhlDE9vWvM<&<wbr>1f4Cmtl;l$XgIY;R#eat~kd*$<wbr>ARzbbw&JEA1d^xpJ<br>z#k^DTh#_k@z*l{b!4`t{>1vVna(%<wbr>HF0*xFhBXh*EO`5#pF+%fpql(PxeH+<wbr>wOUW}(0<br>zo_#et>UWw#D$}+SM>`(4;XqfMN&<wbr>cG1oMmMT#qjhFiac=OXD(?Z5(|<wbr>47y2Kl<Cx{jO<br>zj_4~T?y3Imj*IfFt;C-sHwYvx@?<wbr>hbn@Sv{CsG>td89sSANUuF06Ju4}t`<wbr>|XKdRc=T<br>zHv(uvZo&)6bJAXJ6S7QijGE+|O!r|<wbr>Ei1+ldD0ni9x>f#sInhBa|1(I!<wbr>IcnzD3x2D)<br>zvsDOW+wxcloTvRfr8mIld;<wbr>ac5uPbcTuR#zi2EvXd1!(@eG3Z@gN!<wbr>a>wwc9v%tDf8+<br>zk`q2-beuS57J4Rcm}}Lcd2bXfRo_)<wbr>55H^I-pWNF*23VZHEz1{<wbr>D2cBTaJnzV!vT{_b<br>z^f_~vL<n2$VZhAHcd`C8TL;SwYt?<wbr>0&*Gr|exoE>)1OdTe|7CC?t*%<wbr>2jHEqdPn&PiC<br>z{MU23q8_@=_$?Dg$;v%)Kt}+J)<wbr>8m3E4aS(#nha4wP*>}{lhB&pm2I5<<wbr>m{jQe3~aYe<br>zZd}n};Upd;4)j*ych+z!Tm53gxY_<wbr>Vozc)7#9IPgycp;nL$ug9GXkIo3$<wbr>hVqQy~I#Y<br>zSR$(E5#I#8X5`G>$SuZ8Zj&@M*6@<wbr>du^cfS8aNsWh1>m-f;YQNGr`EW!<wbr>C1KokPY;u)<br>zZrVr}$OXH$UbmL@Q)d_#p6O7PO-<wbr>cST)NzPG=SF@hi2l4WoRV|YaDWZ><wbr>YCgsdF`oNT<br>z=z{-m-cl0g;nUg|WeqSFGuGHH3k~<wbr>WJw9IyPdLL-70!a#L_>U}WAw&lWhc^<wbr>ZurK^d(<br>zCyrt+gn5Jnz&URMz`9QKilN;JfGf#<wbr>~|ARU1|G^yX|6oqu9Cq`+W8RW=9+><wbr>6)m;9-y<br>zu>QSbkNouk?+jP)*==<wbr>squDhqF8LsJH{5JH(svBE%<(GG}<wbr>vm2dbh~h1+)i1tUOT9xc<br>zwoShHle12mLUO3_r7=J=O-=cw+<wbr>kwW}%C7*z<m)YCk=%bC(64`{W>%3=<wbr>FcHM&A(EuG<br>zsI2ZkYGn@REr#+d_XAC7Xd{99$Y%<wbr>1fc>1oaMvr0Ue6YAF;|Tg!^KaIME+<wbr>lDI3kZ-9<br>z{D>bT8d@YLnx|X{Gj;lUpWj<=<wbr>oXOIL-sIjpdkuv1WZHeWc$*}hZ$sN@<wbr>ck;@U1UZK)<br>z+#nh&Ii$G0>{qZsH0yy?d6b&8w(<wbr>kShtw55G7p-@>z>O|Ts0wWHJAAbhI`<wbr>44{wMY)N<br>zLO#%~rY3#98z4T;S9thnx33}a=<wbr>z7vu-ja)L`qy86msVU;8;$OW1JWL=<wbr>z$vSJfZ&~P<br>zxFU#|S9+B_iqkT@RGUPnykPzNVoB&<wbr>GA4Mis*1g&0-61}kcng0@<4m|<wbr>h8OEX|9Sj8g<br>zVBJZTE%JuLl`{<g*ig!O$9?uAHN9(<wbr>QUmV!7b0Ny&P-`+YSQr7aw(m@~a(<wbr>Dm-eU3MV<br>z?X{x;SUcTO$@CA}x>)d;kgwE}o!<wbr>hd)L5A%RpQtyN&$+4$$8eI=s><wbr>EihRp2;TvcWqA<br>z)$hz}^*p1#5>>2-PQijBr)Q>!b0(<wbr>MJNS?(PW6A0CY5DW!liHDBKX2A+B@Q<wbr>(thH9qH<br>zRu<k9X9X3lP`UsdYNg{@F<<wbr>RWttptMOWT&+`<ACwnbE|S(H%#HU+<wbr>s?Qk=_7o$)-O*U<br>zb1F(XF4$zNUpN=`Ep~`43%_<wbr>i9yjewPGFI8Got|DxJi5`-l)?<wbr>MU7oG2byE%VXmocO8<br>zjXvAPs;HoIR-l#SYsib5Fl><wbr>lmNj4ST4{0T{+6}uwoH>o<d>3qtV%<wbr>x5fcf$^0)(mA`<br>z>v1&lX0;Z(C%{B`Cmw{FMMSJDT%<wbr>k3ur{6D~!_CAgZvvaus&H-;@$ml;<wbr>uEMkYSolte<br>zE-#X9rD;<{>eGu4bR;a><wbr>L1u3gWoQe&Wc(~dJy||0ktEu((<wbr>7xqI&M2;jGwylqLYX8@<br>z9sO0NHT)U<1pLPe1ac$upUN`UWd)+<wbr>C*@WJ2t+dVS)@$fz_3IMG`Sv?)|<wbr>Jr1_P5GgS<br>zP~IN2kbPe^=mkKSV>EGpS|0pO>X<<wbr>p|AaOzaEV!>?L?M)al;nPG`DP6bZd^<wbr>qb*7jAP<br>z?ZXalv(Kx)<wbr>yiTWw51QpAxyWVO4PmAytKVizwbD0R<wbr>q!GXh-<{P~G^6ABp*N4;aR5)3<br>zhTW_m>JhkVJviHLiMSi??gE<_<wbr>SUOT7533Nj-O_;*gbBnmyuqK7V57U<<wbr>d!BugMtGQO<br>z0Gm&Q1X>-AO%u@n0;3fpjYZFntN}<wbr>Z}cR3m&J~5{Iopj!%pcEU=<wbr>847rdcD7A5*CG83<br>ze1i(XV+W*gaPVRR{`FU$rSH+@Wp$-<wbr>$L=3&8z7Y)g;lOX!Y70b&8+q|=cKT*<wbr>;kg?r{<br>z?{cNOAz&5Q%jEeK3aCy_;f><wbr>X8FlGjqAccVCLNX?7poXgBZ{RV}<wbr>NHnsRs^MTbLc2Zv<br>zaAU6Z@)!n!DvfTa`+!bt<<wbr>3h1dyiS7KwG5zsWE)AHff^)-5If%<wbr>kjDed}a!c0c@ZLmY<br>z&xo7YXEG*zg(JJ)chAm9Z1L6XJ_<wbr>UAQyV207zI60>proGhq8{t@D_^<wbr>4uXZNFlE82A$<br>zv!bF7kav3hGO_M2KVyKrmO!<wbr>BxD8j0#5jetnQvJ0xP@nkf@9E?qp8~<wbr>}Nm^Iy@--~yr<br>z{g$R#zUg|qNhZW<tNtIm_?&a@*g@<wbr>d2iv7e4FsQA@Oa<WwPT{}%?<wbr>rOF0UA0k8B53GF<br>zoL{t|B!)2++7X{;Cfy|G{bryT(p(%<wbr>)!Ew?HorI-osim+IVn4vp`$<k;kQn)<wbr>^a<Ept<br>zZr*|fd3H-pvrpXf-m!!XBw><wbr>qPMEgXUvoK-8XJgbgzXtyzR=<wbr>DVS5XtKBWFyItQ}rnF<br>z8C+kVg_Lc8H~=}i3#60g`PrZr$<wbr>C3puVXa_&TQG-@dHKcgH8+<wbr>PLF2zsZCqYeTbW1b&<br>zUuIK{WF5ttY$U3nP583o@v7$bZ(<wbr>p5+hYrAe%x)MpWO3huUC1TZR#J1n4><wbr>%pf!C4~X<br>zkGZy1e2^r|3o22=<wbr>Z5uUlvNniWtsaN2-GBvmUYD>nq%?D$<wbr>lV4Atw5vL~bMIe(^ae89<br>z6x<q!?4%4{p1B;xD>jnL&8-?X=Sp+<wbr>3>zNu0gY)*k95R8y4&CK{CU5vdg{<wbr>vH;4x|AI<br>zPyn2U7Eq@y&e1M`?J#cq6sh3><wbr>Qozd;np|{ekY6tt8P8F@-l$k*3p#<wbr>0Yd-0IgpU@}K<br>z!he62{8TXPdwe5pL4hIf-!<wbr>yuOmf5KjxF;x>{QLaDiP><<wbr>72Mx0DGHTKX0wCJ@bZk7u<br>z6|7)ZA(~2gURX|Gv6~Can)<wbr>rGJF1ErP<8haV+3YL?L|4);*qHU>s_<wbr>)t$C0pR=LDp`2<br>zR9TOcArNb{{=Ez`5OHC;?w^ts7}<wbr>MD}jyfDny?j4w7JOv_-Q8_{_fuHuP_<wbr>6U}7xU?5<br>zC=c7(ae;#kmW1*(K;*#kvKu{l24<<wbr>IFA*Z2Qv#qMyZ6tss%w)ZtJCuck<<wbr>wy0n<@m<N<br>z|Gw~eW};uELNs}+O-2!0=m;<wbr>bizWoXRBpeS3_p(t38Viog{Mo$<wbr>WTKq5Jjaf71Q)C2|<br>z{QIV#LaHYkdN;p}g_EkbaZIKB=<wbr>Gkxq>rpUpuv*9lgD>m<X8+G%u_8%&<wbr>U8e*vX)C}`<br>zp&T-%Y#tQ?_*(vQGX|Iwpst3?<wbr>GZGMpQX2V`%}M|o&m$2e!+n?!dLB?*<wbr>X%~O_)*Vv7<br>zJeybuXoX?CsnN}F7N~GISTC-<wbr>r0foUI{eR_{LK;wx>9g?v!!b{d|<wbr>GzlqICZrYwH1^X<br>z`RCJqS&Q^vUO*QFo&daJ9RO^>>D)<wbr>u^TohDEU(U6V1`Q#)ijq?C>9pE}<wbr>KJgW9*wvD4<br>zUHWOGs?PDs=bNUZ#@#cY+!<wbr>pjSwMnk#L*1Tjo}`Jix763F&P;?x<%<wbr>(an-R@V;$`tPF<br>zSNz9j&n}_t(xl5q?MODJtU&??S)~<wbr>aFe37{wGH10i^NQ=3V~Z7TY=<wbr>HIqZbU{9Z}#VU<br>zsA(#eFiuz3G-3e;RdYnkRzc&!<wbr>adz2)(Wkvn7fWc(F*iHi;<wbr>ZcDCBUimF!teFr{7bc!<br>z5SVaikOT-vwE<!~T}A52#NyxtMh(@<wbr>Fl}%=b{;-04qRpmM^=XwnUJ+<wbr>Kqd5GR^@AE0E<br>zxe}KUf7_HWY*YX*`qYXZ_@d<(ui-<wbr>zxSfFaNj>0~>1y#t-(~LcbExD(<wbr>7AJiaSERwy?<br>z&KW9|1oTAaUuG<<wbr>Dvc2bDCvBzrcAwa<!W|baK$?2|LHS)<wbr>sN;|t|BiIdcfEa(92D}gu<br>zlkBg2=kV_DL2&0#o>Y()4ON^kYR(<wbr>4Rulm+P9zkLPLuzWIZa}QxRflND(<wbr>jk-7msxyQ<br>zLD&20<y0}y-h0l?7{<9Q{q?5ZE!%<wbr>cv_uA31yrk5Bcf(jlI__l2r+<wbr>gIQriW>G6CR?(<br>zc~^51Tf^RER@Jd#myuD7OP)>!_0+<wbr>Fj2?dXmIN4k{qxPeq0iLxpy=f7Q&<wbr>el@&6(SGX<br>z)dmszJgw^}<wbr>nIESszbAQpwt1YoFOe5!r!%cA*`<wbr>zrRh|5g+bH!uW-*p-(#j!Z(?ssm*<br>zrg8NtzFtuZT0Q8Dag$6wWyuQmKI_<wbr>1!eo?P;gE?c(=M7a-?x)|kxNSpZlC^<wbr>}A$Ef#e<br>zr9N~UD&;6GR&jp{Of^vn{-<wbr>sukV3FfiQ5gwx2}p`#aGK#oULzDI8%<wbr>~+?g^V3k-MMq4<br>z?x28xyfUZS1`9YqjrzUZ>KzL_b%<wbr>4Ejy~HAl_ThI=koTda4{(<wbr>6P63ZUIA3@Bnquo|t<br>z30-~U9*$py=2qt=Q1`+0_<wbr>Fv0UbeGS}=NLHv%M{M8!UvSS{<wbr>VZfaKDVBFev+Hy(vlt{<br>zX7Pi9!tY;!&Y==>yCTzR95M_V1H=<wbr>pR7Jo)a@)ss^g9-}ytZ56&z<#W<te*<wbr>u~z$2&2<br>zFK4<FtR3IM>$<_lz1?;V*|%h)<wbr>CdDBywLJfT@yrH;m{Ai1&kq2~<wbr>jQdBD^7q82%YX4c<br>zaJ<X1kRt-u7>3yud+Z~@Es;v=?D=<wbr>FHqkvNzf6vG|8(r~ccpnkn>-<^gm%<wbr>mq*469w-<br>zQvPnadd6Ukew1)B!!n?<wbr>eRCTTshBr9#^k{A!cW}FgKucHD0e)#<wbr>n@B@WTOQ%WVX!CTJ<br>zw|>)zy@RJXy83uJYge#Iw)4PmEu8$<wbr>blll!&Z7E=*fSb14ux86?H;oe^<wbr>c7jhOrSQpg<br>zgOFDPBIb1o6<!`C)Tp3-G=JT0{F?<wbr>TD2MsPeZbd3)2b9Kg%^^T%N9X;hr_+<wbr>R6IA2HZ<br>zil3lG@rk)&OwCnG9HfZ-<wbr>HAQIBtDCdao%W~27+Yyn0Ypq=;<wbr>qyzXs{5_FCx0k|g+{z<<br>zBRil~vm<5)&igl10w7?JhG>$<wbr>ndzMGFhDx98XNeXRW#u@ILV&uUX?x%<wbr>V>?nI&z33>1<br>zX+g5sni1zHePwgM5BMLXwC?<wbr>FMeyDzcB1dC6FjzRCR?ZE`DuKl-<wbr>7pN{+_zgJBsfli0<br>zZHoyw{Le$<O)Ru07V^>(F4S)>R{c(<wbr>9$|*8xZ4`KaXyOU6x#S?!$nn9P{<wbr>NQICVcxpQ<br>zwvbDvMi=21uzCEQr;s(|WJ!4ZQ5%<wbr>4xw)o5krAKi`5MTvj5>VndRs(|d&<wbr>Vaz?>0A{O<br>zvu;SfMO}88QJnK4+x7we`Y-npTO><wbr>XN1ee7u>G>a4$0{=L7#|Re3HEXz-<wbr>Z8$HwfIDg<br>zhL?{9e8S*E{Fo@<wbr>hW4qRqPPuhKxpvn5Lt+>XDzA}{&<wbr>RsqK|Kv4H&c2n}Q;g=p+MU3A<br>zlGqt2Ac~jDlj8afL}*!39Y^2&<wbr>LlBHN>@{U#Yo9J3uLk4;)aKlPJQ=w}<wbr>>#$+nWYc^J<br>zxV=5le`)ic7)f-gfP3lU_(J|+<wbr>gMGEr%9#^3lih|{>^-Mnxd{*<wbr>mnwkPf6r5E>P3d|0<br>zg(1kJKTaD{T3yiZ_MJpsf{id@By}<wbr>139YC;h#Lcb)dQef(EK4+lo0bCT;i%<wbr>Miqcop><br>zeO{+)2~evt#??cByaQZa9Y^!5Irf|<wbr>AT_Os`1yDWJjp4BZ5E-oziLCqXXV=<wbr>1k&jwhU<br>zF^m3|aBjbo+5T*V6GUx{Xm9k!A;U;<wbr>1o0^u<7#)-aGw$<Pu1-|<wbr>QeVxsyEByVuV~cpQ<br>z3{f0BWVB~c1NG;PIN89-s*itH`<wbr>fRD#0io^n8<DHzmkN~y3Pd(>Z)<wbr>oZLo@T7A=hS^+<br>zK?S<Cz0&LD^Qn=0I8Kq``Fl}m9)+<wbr>4Q^yLRZSKPn-3Hxqne<Ccm@;!V6hx!<wbr>W+sYK^P<br>zQpa`O5qiUO-6v;qKw<N%7yn1$D9y&<wbr>`=bN6Wie}9fo(8)Pfv5w5@Iw<?>{<wbr>lXS@C6s3<br>zsyEASJW(M#GD?VjUtEa&0&@GN!_)<wbr>7tSF^Z#fQ=N=l8ZJyl6J*k;p3Ct$<wbr>gJ(Tk%>2y<br>zd<jF?hkgn#(#0V($gjv6^C5F;@qwb<wbr>>`mO)z5+XUdTgBTT%&GGs1M;`s*<wbr>C7QX^wELw<br>zev_P|<_EUOFw`<wbr>3lQRFM0JJ3c0VENW{S)Vn{r|=U(<wbr>Uh8-oBxpLn^doSz)h^oEzAWsb<br>z1>&+Q3vDFew6Uktqu?XaKurwSn&*<wbr>LZO!*Xb+FWsY3|E$@VeLknBTwnB!|-<wbr>N!yIGa~<br>z{jvi{nc`APhB3RWml0&!Hz(fxCVn?<wbr>2x?1*y1d|Z?hTTnCOY`2_c?UwTn-<wbr>qL_%mZF5<br>z94W;9(?OF$>^MWxJXn~XMLlM?4C$|<wbr>bI(+2T5D@r%azEtNHVuKU1jnbib<<wbr>OmpAGRK!<br>z>p0vQM{q*C++c;QZ<78@z(vgTboi-<wbr>m@82H6UdA3zLVE>3MS)ymX`t9`-=<wbr>8KpUf_xY<br>zSC1?=U3cU8Vs+)tSOzz6*$k>IT*#`<wbr>VSoV697{U_{8$LMdB#K_6h8!@<wbr>mYl3Q#fTM_M<br>zD|Zfj0r0B_IzvExCcUx-RACPq1W-!<wbr>JOdIlA!841GAgRRc%gjh3+|=*l>4j^<wbr>bD{HBE<br>z8qFI+jC#J{z=f%Nmp$JIY_`ycI-<wbr>BgDQb8~=&*dp9KM|`B5JSuJ25XPw;<wbr>5T)|PPMeY<br>zg5(Fl1jPTyis{9zwuxK_;>X0&<wbr>MLSaIbFaGiMhrzo=D6xKeb&bLCcO1&<wbr>!P?p6j!(ng<br>zD1A4KV~ck&atL45N+f}HSenAgHH&<wbr>Q)Ma<>5P3Er^F2G{|HJ{-M8PPia?<wbr>GOo?2RyUv<br>zmaG})@4&o46&Atq6Q-3zcu?<wbr>qThS8k@+-qV<bC%nb!=Vu9=`)~<wbr>QdFQJ!ylM|FG@OM&<br>z72l>GV7R85jW!dw06GBF?$Z?Vot)|<wbr>h(LYF<{9vS?NfCY}km0<h>0hx9==*<wbr>egappiR<br>z$hL}-HR$0DYjzaJk&j;H1M5`<wbr>bwcRh@zirxul2FIvUz(;n+Vrf4N;>$<wbr>Q?%QqIH@7Gu<br>zI-0DXLeu#I&Qp2Ds?Cq>+}n>7s2i)<wbr><yPPcF?}VCxaEDfHP|$~q-g{oB;GZ<<wbr>?oJo|g<br>z(?9X;r+lka1ebE|@(TY##tAo|<wbr>7skRsqCE?)bUFpH7qq!%sr!Cu5+<wbr>3X7hIo!rf!K5i<br>z>-oTzY9HpRUk4gbpckRP#<wbr>OVX7m3it3@aTdlg!Sj_=Kd_4?%<wbr>Qvd6LuKTqz9T6fVi9)<br>zP4a^h6dIh(>vDwpwbZ;fTITLF)j?<wbr>qJgIw6DVvmT{?0g3kko8F{E&!ZfWA}<wbr>(JQ)?DP<br>zQOE%`;3siBY%N3s7&8-QP)PbaKU5&<wbr>jpiUWA)WE$$P!kj7Dfih$*MVGc^T^<wbr>cGydD9n<br>z%mi_)rBj$Ohz?pN|GGzkeXy$CS_<wbr>69_9t*~{KRMTutDc%tZk$FQP(c_^<wbr>lA<J<-KyX_<br>zriH}Us7d$$df^)0mf=DMYZLy}<wbr>eXE4cq1lnbe-u#gR?RM!1*@b8X_~*<wbr>4J>2~B%h|Ea<br>zYuD|KuCXdAXKs~EG&@&*?w&vv&{-<wbr>7~=~vHZ9lmwRkw{i&Y>otMX~F)%r2!<wbr>jW5V2?T<br>zts4pGmet``{YHa318s(dv?-vRc?<wbr>LFV{d2rr8xYdxC-PI{rIQjjhFfK=)<wbr>p6zrzc@DA<br>zhVAY^|LnC~s`E@m_><wbr>kWEJHxN91SCe#MH~<wbr>kt0I2JifGKnlwb)AJL>9a#e*4#Q%<<wbr>Y#i<br>zB0k&n5q>g$A1BArxJd;-G|(<wbr>JB06XCL$vnd2aY6iOHM<-AK?$+(i)(<wbr>`~0n@m>x^ypv<br>z&V7b^DZ|30`QB*ys8TAe4(ohn;GJ-<wbr>K{JmH4=H9EVi@qO@(${Vk{Ihb`5zm#<wbr>uF{;Go<br>zt5vL7wN{4!4tfpL)xO47(<wbr>LcZ2it5tcb!uIVkusgNsG-u@nz|a(=<wbr>^JPX*R!yH(~t-{<br>zSJ_MS<-~-8xF2xtjw=@&&eDz$Y@<wbr>7iEHcDvcJI08jsgB0ywleGq4rSqelM<wbr>i!<;p04y<br>z;yU@^PB?vr4sw`I;$<wbr>DWp0PJgCMGB9z!~_<~i5CgPy-@f1nH<wbr>&%^t8l!M`-|o7b`l?p<br>zE_J2YFRbZx4CpZkYs#HN9T)<wbr>hrTentr93*yONh=0)gid}kz*@<wbr>9qnKon)`?1gF_+GXU<br>z<^+mOt<b@CaIFS8mGaKN9(Oql>$&<wbr>r6>{h5;dC_7je&QIk-7ua<cEIylry|<wbr>Uh=lswP<br>zt4vkl_gEY&HjeP6fjns%fk<)<wbr>C1eGrXdc`#*xzV=XPb5i>3E;FZV`<wbr>YpM{Kv^-_>=gg<br>z-Jq+qfZ3Yxo^k|das5bZl6P0Fm><wbr>ulu!i)m@1ig*uY06SNK%m|Bj*P-2{<wbr>2+-Xkcj6C<br>z6IKpZAKGX(nxLw(BfH8`0`{+s)uo<<wbr>PLk8j%^Zbt0^IB`la~UKQT62pOCr)<wbr>B}+2WIV<br>z6;(@3?%t5^xNaJ&kK1MMiDjWLFU|-<wbr>K<4hNWk6!rg%7>9Wj5MT+^|%<wbr>jgoPl5l(cY6%<br>zkW4%5TotN{y(HnW2b5{1h1_CF;@<wbr>qCBVZp5YKM&q03?QAlPD`_w)7#&<$<wbr>4Lz3Nai@;<br>zU18m9I-?13vAqOW5CL6K`MJ&ZpO+<wbr>nMXC~YGo9}Uk>wn-~Bn|<~ZtuG$<wbr>KyM#&vXp5(<br>z%;{LAi$f3MhjwuRHF`Ms#SL8VDqn#<wbr>2BJ5oww>3SVecGKO0brMAq>Vt6TjN(<wbr>8HY7LB<br>zV}P^=VwHCOr@I70v39Ei)UU-wD#<wbr>KEgsme>Mg^V?n*ZJso?yT`x!<wbr>KRdaozZ5M>buU^<br>zhVuej7xX-TmfB!JHrVr^q6*O)q9o@<wbr>Eo!ea^IyGNZJ}$8o%dS#<wbr>coYgpFxtJzNpNV_N<br>zUEYcY=$;wr0-*G2n#!bsD-znpN_4`<wbr>{A2a@7h03^<1J1VyuM{JaLZ26j(<wbr>pdovAj~fS<br>zz6!6aGu?O5p=P`;paB`a<<wbr>cM17sbRF;sLG<N6tIK#sbNnw)w0f{<wbr>J~E%2q0FEUK=B)^<br>z#-#F;?`I;w(0&|IJ~<wbr>HnDCxzONgcLj&RroG5YD0q65H-`<wbr>qxhrD0^mJA8tl4NqQ*(x3<br>zLb@`wn`qO^$ESuLX^Hlp=a!F#x=~<wbr>mJBvr=ka9zjO@w3ktJAAE%?!3ho#t&<wbr>)^|10Nt<br>zXS?t>^_+hnin{Qo6~WATZd0-=kZo!<wbr>b<SN3sS$HV5e|p_-<wbr>6oDQxDwHZ5C0uTnazbcP<br>z%E;7KbC0r1<tP{50Ivc4fZBQu4^@<wbr>fBA;D-p3x1qlmr9|{j_`o!<wbr>vr7CzZN7B?Whig><br>zeQgX^_47J0-gL>fC(uhfpLqct1r`<wbr>4>Tr9Uq23<f81Ogpur+fJA&R{l$eL`<wbr>xSdm7eR<br>z<g7a+LF^`{lq)2Nr`BfNiXC8H8vN%<wbr>1vGdt({llQHSPo^a&E?ABWLQwM-|Q!<wbr>610?c!<br>zn1B+betpn+P(W!#A$P9d4l-<wbr>VpXvrGOENOcK?dWL=gIdj8bfb`t@<wbr>i7th_+u3Zu5dYU<br>z)LNUPCJ_@Jit6B<@*qz>)rVD}d?<wbr>q6sH1Aw&omu|Q*h0O7Wk>I2x|E%<wbr>vqx)85`?+xr<br>z3ovgj{?y5~w!F$q<B#f?ayolLe;$<wbr>IJzJjKN0g%hhoPS@bT%gtS(<wbr>bCdy5C0R4Mh$EH<br>z`ycy^Qfp#8v{R{7jIgL`M><wbr>SESRbAPAEGpHrYv-zFXU+FCRm(<wbr>nDI3-(AtX;3oFq^6}<br>zVBUEgw1ihOZtEWb3FSlJRf-<wbr>x928zsd(tkwk=YMY{BZ*FVtw4}<<wbr>2KrBPnzMyHZvn2S<br>z4G4U;XrAxgC?Md<ZF_<wbr>tovIDXOym5f`V;A|tWZbGfIt_<wbr>ystW3aUK>$~0ZcSqxO&Yuq<br>zW60_^5&QEn&>d;ilZq(`rdO@r_o!<wbr>K?Ffj%76$rzD8PDXGP;UaMU+ih78&<wbr>m$lsW}_d<br>zp+9&V&^e8iyc_X!e2h2#t=lI(m9H~<wbr>U=gU0yo!*UFg1$|o4HgYxz@)!jsHg(<wbr>gfjLY8<br>zi(cr)5Pb2i75KFSs70}>8fb$;2J?<wbr>l08#<`b_VF1oCIN1<po3tu==<wbr>qMuLomn~mtp{n<br>z1T8)21y|{JsL)u!$Dy6Tv`^R*>?<wbr>Xo5De}8B*vPa5dBeeKt7RP8Ub2p><wbr>El+-Qt9&>*<br>z*p~-!X?9KKc2iAF3<TD#twRARG=<wbr>Gr~KD$xS<pz)a&G#rA<0Rj`bM=1&<wbr>AZ`e2a1Iej<br>zuxtS58V9%VHV9PBO33QEQ&<wbr>SHGu3N5_=r7%m%hfb*0Vua0`2bn=A?<wbr>fA2@r9?2BGxj#<br>ztqX~H+QSR;zDtgYMMc!*0C!I<<wbr>fkzRL6Os&{qGSd{i7H~S!1nV<%t~o!<wbr>?#Hox&pl&h<br>z`mhi}o-VL|uV%@%KN)^S!c`_+e3C!<wbr>C+LWp=h&$|L-9JY=bJbHt1}q(<wbr>KZQTp#WqmIt<br>zxjMWdSdZ@zRwJ;}YvMGycmMWypj|<wbr>f=@O~7Y54w|KCqs9Vbs4a-b-Q=u><wbr>d5~bgYJNb<br>zZYP3fk0|1dF*CvUxC4WhC;`H>>@<wbr>QWS(LR?jq2j{|uiNP?yuwBA(o>)<wbr>3PzwdGTyevx<br>z2F;i%I}ci;<7amqS37nn4uWfiN~<wbr>irCe>{)YvDH~v8>uFkc{vzd+<wbr>hK4h1l<Cl-s{oB<br>zAstq4Z|eSRUC+~bwX*~BI8;vWbN7!<wbr>Dv06Oy?^-1&i`w}0C(@m4jx@H-wwZQ<wbr>>X$3rX<br>zGP0dt<Bi1@^xlA1K@4akwbX;MLH&<wbr>WFC3HP*N;;rB&WbniFjDx-NHn?ya#<wbr>KPlRxqF7<br>z#KA&{N?WGwXUBp#yJn^{?Kf^Bx+<wbr>lxiO!jB3^<B`ZG*!-ak#5UN*siWOc;<wbr>>y&V3Acc<br>z<z352dOHuRd`dDPv0-mfLs9ekP$~<wbr>t%D^prhDSSl}j&&S#9{%<6NqBXe?}*<wbr>+`$S7F;<br>zFxKlY2xsDUwY3wFf0Wynceaw(xQP+<wbr>LiWAxpt~qCz^(+Wh^*B<hO!<wbr>HvTqMiFlN~U$F<br>zvJ0!c-?j2fU?nWKTtJb1r<Nsn@dB&<wbr>ztuzee9*?a&j9?7&pHzMxbW^<wbr>P294cNdBiAMB<br>z!0_O+&q-l~GKmR!mIFih4L+<wbr>g8O8wt)-{`?EPNUj2r`(ouQ4027Z}<wbr>rX-X-Qw3q`=^g<br>z-AVo$zz+wTt;%Lk*j`dd&9%quawM#<wbr>N#AMgN+(O+*$(>d7PW$$ZcP;f>Y^<wbr>VL7?riWz<br>z+x5)sI!Q03pHx7Mg;03x{Zr_<wbr>nyYooNPs^MmMX!<&{BXbL<hL|<wbr>57nPZ}C(>DCZ@pl_<br>zZmkPfG?C<-FDoYv!G$cx=cjv7*{<wbr>BJOzbiE=W_kRCk^79hFge;WStzV>b`<wbr>>yL#aWc_<br>zy&W0cn!`7bk?KPVRk|H)UTf1^$N#<wbr>m|Zg#GQW8Eh0tL{tXT&c68^)(<wbr>MCQYy8_#fOV7<br>z_n|DCWvNcwB?#Z_<wbr>DYCP4My1SVg8QB#mH2UqBYE7sY8}{<wbr>s7F}tJfrdIAOW&1bmqm#m<br>zcF^~Qzr0DF;q&i8p`nd-2iLS<<wbr>tJwC{e@|?+{Nbwp*mc5(0Ksa?W-q`<wbr>I)`x9oGr4_6<br>z?MqqUMwr0x+-|Da$1(#WQn@tVB(<wbr>U8CsY3_Tx1UgI0v<*hf%g=F1}kjK(^<wbr>Q{5LGN9B<br>z#@L4U8>v}Gp|ODTf<@Ykuufv+@_-><wbr>2_Z~6A`aCSl#<C86R;lj{Y?i3gv><wbr>dn_7Pr(t<br>zGPC>Z(fNngOq^L9NOJn0)wN)<wbr>6iWRXK*1mR>E&ZRZTP-S(Q&(<wbr>zyCelf%`dg+~#J=Nh<br>z$#S~Fao!!+J`LQyWA#Yu=1jk$k*{<wbr>5a3E7BFb+C5H_X|)(Pk%dO3KZ17`<wbr>n4k=DZ6<k<br>zZFFO0ne9Y~rOBnY^;<wbr>OB2LF0WACCev2%+Ct%bEAR<;<wbr>VAJJIPtUbVZ|BXtx`<#;mH38<br>zer=-&fMvPu#i~`U%0*O1rEXWo6L;<<wbr>mERXM`HhxAT=)&@iHMp<7S=Feswt$<wbr>5oiw0~F<br>zM0=h>D%P#|ETOoVQ5fIZDY-~E&><wbr>0PJbzR<q?hT6g+Pjx5BF4D!{6#<wbr>QAkSl&yG9WOd<br>z-$i1Ewkr4@6{%_ZQiTZNg?YjXlOp#<wbr>iE4>KRi_z(GX;8E3u6+akF^<wbr>QIRavVc8oZNs(<br>zwA;$`2Ub+5T`?*-Hk>dMa^<wbr>DwutWdorX`Ug8@L@y=mT%K+TDmb2?<wbr>wH|}k;OU;@3W-S<br>z-e?TJq%<Ox-X<5N5Hw41L(W5SC5@)<wbr>Ef-vDF+oi{^NC<z%`a~awcy`O&k(<wbr>gM_RNiqS<br>z-mNG6GsCw=LXvm=H)@yOGhst&?-7#<wbr>VK8CITr-dtzhqC+P4^ku)Whz6Kv6Y><wbr>Q#y%6q<br>zzJz))!r0Pl9m^OZ*=Z~zJ7X!-;0-<wbr>S#TlLzP$vQ+RW8cY|_&w_P*L|MP=<wbr>YH<<oO{nX<br>z_j}Jh-&5l&xEN@w5c)VbjCS=<wbr>yIsnvzTq{+^z$d4E$+e@|F{d=wB#_<wbr>HwpqDC$Df7UF<br>z*}m004}ImKC$b~`kN|KBtE48`<wbr>wgOh=+$VrFG72fcbl`M;eIJ-2A(<wbr>IWRg|uEFt;J7m<br>z1#zjR5ZDcyD_Wz~Mq)nGq+N;UFS)+<wbr>DBAm%cqy|QPE+Cq}(a?;$EDoxOa~w><wbr>OTV~2z<br>z<;KKW{5QF`4ID`f<Mbe*>S%#PQVy_<wbr>QmL}F3{A0VTVYsglLZWj9-<wbr>o7mN4PG02%!V2D<br>zlrIXhqt4L<ayGkd-<1~n&746u%}T`<wbr>i%^T8<Gft5Y7$&O?2Q)YKuY_~~N4_$<wbr>+Qu#5C<br>zit)p(N-ao`o1{U@A!~>MU}<wbr>HPP8QKOYotYxOzDR)aOT1wcV41!<wbr>gB1I>fE5_6z;pM{<<br>z?_TWwbEZV2B6Rf3R3yNAW?iKx(<wbr>Rjl@(eb`Cgbs_?$l}!SVnP&(v<<wbr>EKGg2i_Rk6D_d<br>zuEQWL>}-Ld5+UMn8~hf2p?%<wbr>gKIAR6q$3+8)-@y16?k?38jD<hn_T&<wbr>d{hsXlnt;U&z<br>z!0=l--E_bty~mn{p_NOu5G=EO=2F=<wbr>4*=Byxa?P+3*ewQs)@De*5ES*<wbr>XZcjSJ1BUW6<br>z;Yd88nI&&s2;l^dB8Ifh&->Bs`<wbr>HAxGQe6mf1N3YUq+YCPFe3y&4_p}D^<wbr>i0+^H`)wk<br>z4wwN?Sf|$L>eak4jFzIjsogA#a`<wbr>oYbe4tJ6#F6PY70rb@yrD))gnx>^<wbr>Ct}W&UX0gu<br>zJl)I=KwpW0TcjRjGF%q-5JD!>#<wbr>KMj2ppzdsgrgFZ-!fViIw>m9O*H|<<wbr>1;6`IEthQ6<br>z(#y598;t=6nVEP%N!J^5$q$h(>K$<wbr>8nUse!!LSHti3ns>2-Dgg|c}><wbr>wip2n?ukC6re<br>z!kh^u`HVmANQz7{uAfUj&w7$R-^r|<wbr>gr5Dc@5<R4|8MekS0!;ap|5vJj(ix$<wbr>5sJT(0<br>z6v#AnF<EHjWY>53<^%8ohLwMzc-L<<wbr>OJ8Gl839cYzR3dlIvvwaZilB~HB!<wbr>Cn5?*=O{<br>zNqZJaQ?Q|5e_*B%0DhJ$9^w+=Fv9~<wbr>->6Gr8f(dYGl1~^ME=Q|VVHW%1$<wbr>wIokr$y{A<br>za%=!OZ@EV=CAEnG!g}INdIAwa>&<wbr>cY?D8k0&khS8E8;A@+@+<wbr>kdOkOzn9bp>Vz+?!*K<br>zKf_H#avZncwn)-lekxme&=l&4tyN=<wbr>Dz+_+7FshG-stbUFl^$<wbr>M7zJm8Fk3q40K0D<A<br>zkWR0Y<iV8F4~Bz3^ZzWAb>Jz7w$<wbr>LWqOGI%ehLB@OGbB&k6!bdL6(5^b><wbr>Gte1LKBuh<br>zWwlXv{D3lG<eY<OX2RoXNuVj><wbr>yI64eZ2J|xMep!$jIU?T00DzPX&~t><wbr>VfjN^8}(M%<br>z*>?Ae3=l~$PE8K6ZJz2$G?<wbr>iCRXQntLn{+XSKt7E8c5U5$bb;<wbr>rZCCzVk2tbV@-hfQB<br>zxY>5aznb}%up7HZ)#BoXe><wbr>6o7IHGT^xjzKc6$RG4MG-lZxr$y%<wbr>65t9IaCaUw{C^oX<br>zIYnJncpv%@&)J8{k^`X4wi$v>E{<wbr>xMW1JNTDpOJs2O~Xh@iL&txA=}<wbr>NKcdqFd@4I(c<br>zNd(0{0LRi9cE#<1HmD(g;dpdBeh!<wbr>p)CGj6YlB2nfFX<>ScIcZUMt{-n=<wbr>qH*tvbY_B<br>z;W7Kud#97rsf;DQNsdR*<|k$f1_<wbr>MyV9xjjeJDm0OEv`+GzfB?g@U)<wbr>u9yJZHHRPZT><br>z>iJJbDZKo(`mqO4{so~^EkFH}fA{(<wbr>t$k6#&OOc%O@+pOWPZuDaf++TiY-m&<wbr>L9sTJ#<br>z`&~0#&YtWA9Y2k}U%LWFnDl@)ZX7-<wbr>xDX)c&Zi|&iXuf0k^YamVH@5ka+Sf<<wbr>VO?iIS<br>zec^t1<K0&m;e9%rR;CW6*-QRC*XZ^<wbr>v&6QCy!CIU&p+H|uise+9UKj?7fN|<wbr>tq0--TT<br>zwllfxLVtpiPx3Z@Hzx-O@a-h>a?+<wbr>g8vQA+1KJw$MfJW@5Dlo+dKtc#gwX><wbr>!G`m~1~<br>z-JAj)lzu%h&OY)U_lluyx@DfYq31=<wbr>G@vAG~T|lDw^hrSliDANxr-F~hmh=&<wbr>5un0r+<br>zjP~>xzA4Ms-beNLE7mD}b*Hw(XAn!<wbr>fv5!`bJ`mW53k#@Mj-Hzdqzr`x-K|^<wbr>E*S?h)<br>zH@6|QE!+k9GGt)K57juVYRP((@p^<wbr>TT%XIazU?R^}w(s^A?*8OSnX1Yj?<wbr>A6Dll7bll<br>zV;iiV@^IeSMm95N$(h;=c8ZmT$;<wbr>ZIhuxm+f`36<foVT-dgX~?+uA#pR!}<wbr>BKUzv~-A<br>zm&}^hk|x%}=VNw#sbz(0_k!Qw`$x?<wbr>w?gz2Q@>qB*w~+<wbr>eufmFUfUOA65Qj5c1h@kC@<br>zdvIL~EchYXww1Q6BxL!-;@<wbr>tcHbSkYkkqSc;xo<KmqE$S$_y!)El;<wbr>ugjQ8@a&$D6sT<br>z#eSdHBt+e6s?W-geTAHG|CP7an@<wbr>qJYW#7M?j$URL>*4ILIy?<wbr>5mu57p5OutgyVivg@<br>zb5w_ag|ASri!>}gzLwap%3p;m!j_<wbr>gMef{Br32hlRF2RoqS-U^$9WH~<wbr>dZnY>;xJ<M*<br>zzP!+$-oH#K)uS5c%kJt><oe3cDa-<wbr>lpv8*Q9Rk}XAfpLw+2&&;t*!<wbr>kFvFDe}4&l*rl<br>z16F*Pa9Pq^x%z>G+p>K>L#0^|_u~<wbr>Y&CmX@<fA|#zOgFqN^s~}0vd~|8_<wbr>akI*vb$~2<br>z8$Kj&i2C?Y2G_-&l{)CUcyCL!<wbr>jCbkYRuF2@Svo#)gUK;c7oD{1trH-<wbr>q!ZbBb-!)0z<br>z5{Kzjnr*r{EPfc~vkoqz_<wbr>4JLEt8Zrf5bl#in;fs+i|<0`+t><wbr>NxtPb4padmA<`?Xl!<br>z?9&TZlggW%SvG(5z2UqN@D!_~<wbr>PexFCZIU{fvh@k5TOO!e7o>0o3u~q(<wbr>mhMK!?iK^e<br>z!q$^wC_Y7>?G$D%Q>~3v2W`q*^X-<wbr>uju(d5DC3&W}0J(Cu-`hx13lXs-<wbr>nvPe0G7%FH<br>zOXcE*;iDl%_DQ+Kp8~(++<wbr>QgJCxUshgsW$cax2C(@&v*3%!*<wbr>bdbpl0rSoQv`E^QuD1<br>zM)1L7>;6yHO!|=I`)aAQj`M8<<wbr>9rymC1cl*wX~#$b1JulY=ZQ_rm-9+<wbr>Hy6oF*-K~;!<br>zFm*4DUvOiq>7v0cybQcvp!1}(L~Z-<wbr>#t`0jH!Q7wR)t{MnYbbYXhe^t^sF$!<wbr>}!VTwF<br>zUZ1XtMK7e8&edL+$oZ6XS>ZY^<wbr>lh7hI_W`#FhvCYRyjn?bkDs7uF@&<wbr>SygNFMXW*Q|c<br>z7AwPIIPWiWwHD}<)i&=(=*U-_&=+@<wbr>X5*s<2Z*IdQht{CPQ>(Tp|5$n1p%<wbr>ieYioTC`<br>zvGyOsu~JX6x5nq9bDX-2wc0rUCC|<wbr>xl@9+_rDbx?=hK=)`j3a5UR}vN%9)?<wbr>!$RbVB)<br>zt6Z}PUiv8zq&jr{D}JReAXBR8{%-<wbr>EPD~Iv`=uoVHO?|;T?WSqmu>upH!_<wbr>O?^zFPh&<br>zXRL2%5dT`AFaba^Y7Se)`+<wbr>XKBoCQ7q`y7bX<{=(E_g8AQT-<wbr>E5DOvhxDFN%J}YUfz><br>ziK&v1_(y3))>!QcmZIL-<wbr>isx3SFAp0J!;Bs$)L&>oeQA=@<wbr>wA2ne3b+Gff7y5h$IiTn<br>zubo95--B{T*?uq=w=*%<wbr>nibjHhMz79b9!D^$P*VQV+<wbr>NvUddNc2-V<*AAD1uHmEDn8V<br>zO>N|!b%~9w4Nj`9G3eQ{iuYlc+)<wbr>392?@g4T#EG}0)OxM*JA+^y4dc%<wbr>2dk7A8AXT!V<br>zg%+eC5)jWHutQd9HNalhO_v@dtL!;<wbr>^JJ_V}TGNy5dCZ)Z+8_`)Xh54`%p$<wbr>u(>_)Ve<br>z{)LwZe$w3d@{PHwKtUMCX8L!qV&<wbr>ityj~ed_QgY>c$;pmn?AHoNjWP?<wbr>owPnz_9*<KD<br>z(=M4C^#Y%L8Lh`2Q3Re|`={<wbr>IPKTZE5tE3S_&^z9(*l$^MO*<wbr>zmLgso}&W@|Zx-lm{m<br>zBUFp=maZ?9?s|#Gvh;DDA@KQj7l><wbr>cXjzY)S%HZIy2s5C*#<Vz9K)&U!W+<wbr>8pGY2ln3<br>zdii>7(%h-U$NTZHbjMpBrz$4~3(|<wbr>P5XZ)k=19OJ3n(!#ckD}Cd^<wbr>XzkcN66$<&MwTc<br>zKUK13OE8K+<h<qFHvX*|v$+_>e+<wbr>OBg8%4foOSe+DlhQF-7+YF^S)Bm|%<wbr>KyJ8L)RPT<br>zV<41a@#2F0RYuRXnx$2e|KFZsL7)><wbr>8CfaCaH42Y9T?KKQ%!K$1fSsQ><jy^<wbr>3X+`99<br>zW=+fP^VL(9v`a;b4CUqsM%aZ>r!<wbr>LO2$v{m86ks@huFTsn4IZqDx5Ras%<wbr>Jg1vFPTnb<br>zeW&swY=!299Gnzz6E@x_QC~FO?<wbr>2xZ~%K7LQ)S}DJ=#6Cqk3BBUt}2$<wbr>TW9)Jw?=s8w<br>zI%otn6e4N4fj<8eH<xR0-<wbr>wxVjtb9BoOv~(FZ$<suxFTsdTp|<wbr>5uwVARZ=}2s$<*xq<<br>z8~M2FJJLXqh;9o9?FO%SA$<wbr>oNSLvjMe_g`6b=x#;ung=7rOXWWK$<wbr>WJ!#Q9HUkztoL$<br>zLHZ#JYcu|^Oj4BKi=P>o9G9>X?Q@<wbr>CRuvK-RL=Rj#bYGL$<wbr>5bvet3D0MUnGw1k;NzZ9<br>zY7(%S5W1)5|8Q70r*1-M_ABpna4J@<wbr>RrT>{uukK4BsrbI=`B#p#rG6WtX(~<wbr>mdYcc_u<br>zaZrKrN?gY*7uT5P`{o&fJ5Z<Zz?e-<wbr>ns-zB;Ofuy#E>9UwryOl`_TRus+<wbr>Etwif+u#3<br>z<W)vCHt=a$u0{<^*i{Apx>>`}3?<wbr>5k&S9DcSu|`tW1iLErhUY(gxYktK=<wbr>yRNOUke7k<br>zkMRj&t(#Ma1M)okI$9BnA`@HsDuq&<wbr>(CDoUgj^cdW-^2RE8*hx=G{4g^D><wbr>7NYDsynQ<br>zRM|7p1H{(%l^i+vd09)|v?<wbr>RLyhAat(!ehJDy+wat_zhgVa*l(<wbr>6wmeerQ|mrDuxb^6<br>Mx@&+e(|8#AKeclho&W#<<br><br>literal 0<br>HcmV?d00001<br><br>diff --git a/images/user/ctf-trace.png b/images/user/ctf-trace.png<br>new file mode 100644<br>index 000000000000000000000000000000<wbr>0000000000..<wbr>64a389c21b9bfc3ef57de7d8699b01<wbr>9ebfc7dfa2<br>GIT binary patch<br>literal 16038<br>zcmb_@Wmp}{x@O}9CwQ=h1PJaB++<wbr>9L&ch>;H-Ce@QEkJOG0KqK*f=h6R;<wbr>BLWTdhLDY<br>zK6B=|XYQZr2k2GR)<wbr>kW23Rp0y8ihQRejgImP1pokaSs97<<wbr>005f+eqKgK1plHPiVcCc<br>z7fv$TE&zav1O0^oGO`E(07cnaT><wbr>RZTD@RvH7b{06h^)9c#L3yw!<wbr>rIOp06Z45RV~$2<br>z_wWU;S1!fmBLe=CcYKeB40$gW9e|<wbr>riLr?JnOD=*UZyryj8(UHmo_<wbr>OGM1YBHPKn$J=<br>zBU%*79MW%!{J7wPh^WE)b?*Y(<wbr>nYQcgk*9`Pp`D70?D{dJE@ZS684eY$<wbr>0JKsuGVHbB<br>z{_lP3znMh>QK+2&EaZAK3YSMJ7~<wbr>sZFK!Aa=3#kKu@t8tI2D%<wbr>h8yI4uWpE38v()C~h<br>zLSVXF6M5y418@NmuQ;(HKtu{<wbr>AAUlml75EGf7!8@4Yy$6?03%xe?I|<wbr>E2`zGBR2GISB<br>z0uSbMA^^cLkB|VY_<@QsjVMV#<wbr>ixt4NkpKP`m}3H1Wi>5ifSM+tYZME$<wbr>4nRf&SXClI<br>z-vIF5fYAUIl?M=#4&X|iYYLn(<wbr>RAKGVgOW<G6KJM>D;cPZ%=7_CQ<<wbr>IsDZd8_l0hikt<br>z);L3ixyLh|h&_-KbM0an06r(;<wbr>fwR4M^ccmc8Xe`1Ys4^Q+<wbr>V4bsrZh3xeA*f-cM<`B<br>zbyvTMCq|a~R{{Kp0rpS%uaDua3{<wbr>XFRypFc0!xU)%KJP7PUN}KzBbk@<wbr>bJU_qn`}dsO<br>zcQIY#K~3K$%O1ln%}2XiKY@qqtF?{<wbr>|>Ogk=Kxz1!wVvTig+h|CPcK4DmbT-<wbr>iADU2~<br>zA4sPtzss65YtiFws=WLVCy^0z!<wbr>CpuiDfa2jkJppWW*e)F_i#<wbr>e1TtJPD5R7*sQ;EJQ<br>z+#h*bEG^frjcWinZ*}bcMTZO*U=_<wbr>SR=Kg#l{3!kTH4tDS`{@G!7)Vevs}<wbr>0r*_ag&<<br>z#OFZz8d2iQZbHT`M3QcVrEb&*<wbr>Bkm9}>hC>bSYjw<0VK{wZz_Vs=)y*<wbr>7Na>AOeu<EB<br>zcBxo}B{^X*_o#ov5Ol)4Ge*<wbr>worfUm)0WUg$jAKl(5CLNnr9~<wbr>BoOpqRWL(we*|1z2y<br>z@-qTgg;G9|ONQ-zlo~``hV)#}8TM_<wbr>so>WUB{{X-q^bpo2&GuJdor>Tuv<<wbr>C6!5}sEf<br>zQu(OkX0B`*@%W!J$DO~v5{%)_+<wbr>Zivn!d!?K67Og2+9gEd_-@C_+}A5s%<wbr>ggv8$#kfe<br>zvI4EV?^TUP1zc<7mFZZmJN(N)$*<wbr>vdN@a|#|V=_@0Ed?#5Ihhg&2{kA7!<wbr>V8`ka3Lx^<br>zw3JCD@?U9Muy4N;ny|BlYsoND&<wbr>Ag1qVZri_5dY3Y{W4OVowhjvR<`zw+<wbr>T_bgsY!?T<br>zRC|o2nVd4OsFHpznAz4Lz5R<3!Y~<wbr>l}JNtL<Z;s!@zbVdjQL;@$K76@R-<wbr>Jp9vXd_3o<br>zg|)@Gg=n6}E~;LT@qW1^PYs(<wbr>ZUPr7lukn4gN_Ytl=f{k<Bf<Ex@`<wbr>aW8$y2Ya2&}HH<br>zt9M;nu$Pm`lv2kvCx`Z=cT;!aF5S`<wbr>4!|;OpBP{8NG6|6gEs5L-tJ4&Uh^C^<wbr>6`qfx@<br>z*bdTm(lOH=)wSpw>3#4L2T_vcl4+<wbr>8O=~>iD%ZkcY%23rW)Q8mKOAS<<wbr>gtEAL9R5wds<br>z{7NZTFUx*+ph~Q2S;}7$US?V1s3!<wbr>cyPx~<vQM*^6S6Tdv%I8|c&9*)<wbr>Wswq*u2P1_o<br>zdU@E#K(6mJwIlOBZuG5bkEE^9f@P(<wbr>7Z^b#}I5g|uU;JeujI^2d;U>#f><wbr>BSCRaq5L%<br>z)C%s&n~gWbMVt!<wbr>FZ035lWhtpCTIDk3D&^7#?c7yI#<wbr>o0yelC9eJff%Cwa<qE1(w6a~<br>z2-!QT^Qz0mD8=}Sf_zt1%w@KP#<wbr>Cfd}?wt<B$7wko1_3z=j>RjU?K^<wbr>iQzATSwkM?)P<br>zSJG%&i1ldHh>K{WgaSXfJ~#@Hvh**<wbr>Wsfg?Miij5)CmW}(ha@&n2oy|9#Y$<wbr>nuSoi5|<br>zQg7P#+4mLDAkt9K$SdwE9%sB)Y%<wbr>Y3J#IL}w&_6Ofl0Pz&&Xp<1Hp{+~<wbr>xsy4Yx!Po;<br>z<DtXYSkm~-T(<7FPLcL;W1B;$&<wbr>Rgw5Ep;9Jda26n%GWckm953t#m!<wbr>1dO655-mc2D+<br>zjXxVpn}}+*<`5UF8tof>jV(<<wbr>GESr8*^&Tg+C;7Jc#y$!np@+|7l#}<wbr>X^`nh~{#^uxC<br>zTge#BIu`c*ahbBmVyQKTH8#hw*@!<wbr>dr=DT&aYUY%*<wbr>C4ptLOYlWRbfkRH5Ob;!b0%@$<br>z@<97<IoGQX`s-ekSJ|2MnLS4(i`B><wbr>6$JWQ;OS!|Gxo>i`Ib6nj2gKJ@<wbr>wkCv8bCX$Z<br>zS1bIK#gzjs8+NEzOj!~&D`#t(3f;@<wbr>DjZX-K{s=keZVGJ*@T{<}<wbr>Xd4dmbTth$4Jr3J<br>z<`{;qiu+SNn>~9yPXNUMuVF0VA_<wbr>GMObz$#synHA+<AnJZ&HvQRABo0%<wbr>ZWhH8jSs2}<br>z+Ul;Puo^f_sHC{wNgGWZwZ;g2=<wbr>eIjEj%2)T9Np`OMjIL)su?C6=M<s!<wbr>YJx45%Y9-=<br>z++|hbP9jBOCDW2k`E50m92dP%<wbr>8MBSR0#6HPi*O&ah4%2YR<@R`ojl1~<wbr>X8I~_2fL2d<br>zhog(|jqDB7O>crUmH~Yy&%Du|%g|!<wbr>{Qs$S8d?_Ld5lXy&or+@7m*B^|<wbr>KF4u?9f#uC<br>zL)v3W$uhw`5iuvOM^C17E<>;A_<wbr>31FNjmwkz2S*{}R&xk#X+oO<<wbr>y25fMUk-kT8^oSn<br>zkguIB_)}uS2eC2=#iT~<wbr>deameNx1kF2(7LA|4$)04WXVWBZR-;<wbr>%5VV<48pVos)pY1)<br>z>5=Lz%{47LM<NH`rj+L}j2sQu4=<wbr>yI~WS!(bAHD2(x&EoKFic*PiBxO5y~<wbr>5^goxlgr<br>zMU+iE1copT#0r6LQH}KW)5_&<wbr>XnyFQO?KEDBwt)uSgF)R5Ft!J%>L^><wbr>Gz6VRQNBYWI<br>zEZVCL#&==a#6ozHQB}B$<wbr>1gUubb974{Tg2gxgPrM1e|;@2|<wbr>K4miW-)28x4puYql=MJ<br>zmb#sa;ebBB@D+Vk<LlAYAIU|Q)<wbr>DgPH*5F3*=7LUvZ*AtqKSxLSh1I^<wbr>OU8>!waUV}E<br>zHyF>}I7}Q9d$;}JJe*$CZM%LH`q{<wbr>Cl4x_F(Z82?rFMD5qEnF2@ws(_qZ?<wbr>9jeWdGr)<br>zA8r!v5s3<;aklx_H0h+E+WYt!<wbr>h68Dge)5i|>=Sn;bZ&I@*sQ({<wbr>Dkllg-+R|DR<Fs><br>z`4-$_yerm`rpVn$ElF8y#4^q^q%u`<wbr>A?sZLcTa<@|CT8|mydI<%$uYAy1++<wbr>coF4TTn<br>zFYE<PC0U-2#bhUE`}#58E*UN6H+t`<wbr>wj;`8ZI-ay(xvo!<wbr>2K1c8HxABkaoquyZuUp*0<br>z(fp>FQO##)zwf#)@RT&A+~1njno-<wbr>rPXWM-2)!yK3alJ>J!!x>k+3tCU|2#<wbr>9D^Hy-V<br>z{ld%f`p5OvD*m#cGwtK(Q0u%q?<wbr>QvzBa+~3$$dTy0_;UEPu<p~++{u!^<wbr>O_%%Ui-{%a<br>zYsAptv8TkVcuaAG`1JUpF!<wbr>Zp49A2TfZ#RUUANL-L#mCIXXmSXi@}<wbr>GvP2=H0_Zl(`r<br>zM<>!I@>0)JlRE8v3Lp2o4v4B3`+<wbr>EAwI(~X^uo+xx+#hwjFS(PR6s%$@|<wbr>Mr3S(>+_=<br>z)?TTO7vColB_%z>!=+t3m~t><wbr>Jg8NN~smyyt0PuPZ00F@OaQh72_W<<wbr>A{D*)^p0RUeb<br>z01!BSGW;P002~vt5~6Az3x~`<wbr>0c52tzET<=)8E-EHHh0)~ErQqx(O%<wbr>F{uPtFYy>!l8<br>zNhne&zmc*hXmDIm8(EQaFU)LRn3h{<wbr>Kux6-inUuQUaGOT5PoZmXa+l}<wbr>cYn08hYuTds<br>z5*E-+=!D41x>igiJaRGI%(9)e>B-<wbr>p`Xq0&(4eM<&I`v?2cyV=-^-KiwRs)<wbr>CyUR|C<<br>zMt~RE3t$#T4=w=<C;`Y|SP_<wbr>k0iezw6f>*u(JHQiQ14zFHuJ`<wbr>gjkcgyQQ9!FHwE?zA<br>zZ*}-JB-ZX0ENpD-2}K3qG#bDKh-<wbr>QMJJvvariC}9ZLHp1_MwEfxO#-N)<wbr>xBp!D&kb~r<br>z%~Ap)Qu0_}=g>bZbw08MG{NY>pW*?<wbr>5C>QOe{*N}H{m(_izL;=<wbr>nFisifw9tQ*zqQ8z<br>zJfQ|)0uKt9iH0yWFS`7ZSWzGu1h~<wbr>pOp`COAI=%~-K+LeIFUvu963nNF2=<wbr>F&0k55qG<br>zi6Ovn|2i9y6>V)S;Xtk<o2MNca&b~<wbr>V-AR@yO}A9wzZ|0HUXKx=-ziw&7)%<<wbr>vJpOQ1<br>z`P17Dv0nduxZiV8oBeG73kx<<wbr>AfdCTNW73glAj7IPuu6v#)g-QHuv;-<wbr>T`>ZaA#&=om<br>zAGTzCJms19G5*Qp$u#qF5d-<wbr>kgSLUf;*;G#8XH=H>%2)#@D={?<wbr>jW3eVin4#s7hwez`<br>z>1A`=PWZq_<<wbr>fenX6RyWIKHnV7tLlE>0lB&<wbr>AcdwTgXNos=b5()3|KUhmm#r)H><wbr>bAVR<br>z1X_ZGgnQV;V=JB`KElLp*yO_<wbr>nP59MqhZar3!c}$<wbr>gMaQdb8OUtl1HGZ#-&$&^k4d;@<br>zl^Y{^NF*EgYYZ@7-tS5i^g@<wbr>2nGCXlghoqCcbw<p?2;IUo#<<wbr>4JAGtvG%Q5@5*VU7Xx<br>zcWe)lWIfEwc~=XL&d-Zp5laSND@<wbr>7bazKLVTOZ9({%5{@?zK(f{kFe4<<wbr>g32dzHsRp><br>zF_~;K28Nk@Z8XM=OzK!bMmoJeZm;{<wbr>aI_kJuva0o_`mW9UTx<);v-@1yGw|<wbr>Hf$2!ug<br>z87qPR!##<-sKihN8`h6qa2tNxJCT`<wbr>iaEeYa(khi}X_0fFqsn>ogFT-3dKO<<wbr>%wRn}s<br>zCF$1Urtakg`@|q1D*;}pC<)NPgBN}<wbr>X)CM9V2qAxa#D6aQj}88L6>3i4<$!<wbr>vtVR8I0<br>z*b#=Fjp^UJ?dqeB^#d^_34CN_<wbr>Jykb<P`j7TGe&lIvlH&;d3v|=<wbr>3POJHbY6y(yYN_B<br>zFo>EtgrJgg69x4!<wbr>rVsP3MHJjzSAyaFkAku(<WG-*hWh%<wbr>u?D)ROtyhWmhVE*f>!+SX<br>zWYF=ayiiG5JM~;IInReaGW^Ak-|<wbr>9TQx7*mP?}G;&R|-YuA_7?PqzCr}f;<wbr>^r7eUu97<br>z#m>}nFX2T?z*=gsh`n5}p7a_5I&<wbr>FSvf_4y|(v-8|w#RUr_6_;D<*&<wbr>gdOCQy5gf56y<br>zl1-My<0w2O9>f>;C3w{$Q&Ad*<wbr>ZRocLvnWM464-S=V1L*ILPj5(l2S$}<wbr>iK3~9ltqTj<br>zEOO<$i-z4>zfS6CROD%V;<wbr>8SFHUPvx4*4Pt#cX?-HZg{e>^<wbr>ZxiFQ)M{akkgHT)15#9<br>zuKDPl#rro3@zSh<WTG_5^cOReH}$#<wbr>_?{Rs{+nm(zx7AlmYn^0$Bd^Ryv<(<wbr>quGRQ>%<br>zPLTkOSCj~O5MJcw=g-fnnFg$6I2P_<wbr>F+jh<7;sb_t2~BNn0ctflljHe$50A;<wbr>c2P80!<br>z)b;z<)*^iA672Zl%Lidv6cQF3+<wbr>6wXE6ml=AwP7#I(bUj*bkY}6Le?e;<wbr>tCO3nAwDUn<br>zPFp?B%>hEyI?1R_$*H<<wbr>Eu9bSbGgz5fJ-<)s9x81qbO)b%<Y-<wbr>mDaXZ08O~Xny^q6Qe<br>zguSP)aC9|!iNhmRQ&#zL^v>W&7)<wbr>i1r<LdQHDwm}%!?b&?2Xf|d9&<wbr>0wgvDRM_Up6D7<br>zk_tCIMAX5nY{&Np4Kl#iNe1TYu;<wbr>Ik1WjR;~pn+1hYY@Rgz;{@=!h;;-<wbr>d3)KlZMaUE<br>zZoX4vI2gLC+paii+aCgCIZw#xu}<wbr>dYK<AC&%x$G~QNw`ED>yd-}!Kd)l(<wbr>LG{JjUD(1<br>zQ=7?fcb6U^SLVLjE*b8=<wbr>M3BgBVh93EMoQ()w<2>?%#*30gG||<wbr>C2B93;Vv3rM3YG);<br>zirY^mEdLmeFY|wPlN2fgnJk4U#<wbr>sdPh-1Zy~noLQ)B<)M2;5kMOEj-<wbr>j74pr2QF=O?_<br>z5u1qDI1EJ{@lEy<w&j}ISWZ;zaTh#<wbr>Q6zK*_v<!B7(=jP`QX~(X>j)!F-K!<wbr>xU^pVj8<br>zvziLNhJH4NKYiiy7<gTeIrF1^$<wbr>UinZ^vrBGcpNPUqh>hTx}fI&ghvz;<wbr>2S+@lQ$Na3<br>zH!4pl;>O)zRNhG>G>rl5k~<wbr>fEmixXgF<cMf~M)xZ&KJ*dn_5;8|<><wbr>6*^E+6}e{VBiT<br>zX=~dqy1vd!mKb`5-BTW_waTB<W}<wbr>L45O^Ub@RvBRxev!o3u#9!EDp-<wbr>kHzon&L1Od@)<br>zr%l@Ji{WSKrFfurmW7tm&^G%d2!<wbr>XZt_8v9O2ujmo1;LgC4GQHZqN?ggK|<wbr>9_Ky0lM^<br>zhs6x^B30Ks#t_bsz;Qf4Bz7v+my};<wbr>+({(eJik#Ud-7OmL;877Z$MJbndDG}<wbr>*9j{>u<br>z)S2x}`bUHJFm(*$VWUO(mtoB7*%<wbr>MekWu*Fn-0(gPH}~<Y($r*<dMBf<<wbr>2n$$f@eo2H<br>z1mOGB8xMO7@G&?uF>12*!Xu!@4Au;<wbr>k0_l?l*hP2o!r5>OQ|{0o^9H?sY*<wbr>rx^r2tA<<br>znJ@1x2>+6J0UJ<JM3JK)G6kq$<wbr>eWu4B_yi9FyHRQ;yNine<5rFr5U}<wbr>Tg`-!gGzFs_q<br>z+DaRJ>Wt8&6khL+{3UlZLgZg~6J|<wbr>a?9(r2Xu)F7NQ(dm6TU!oZX{_(AX=_<wbr>mv9Vyzr<br>z+jKqPids(^Lrjn<HcrM9a9Y**^-T~<wbr>9xHN2!>0Y;$G=AS*G;Iq3Zm2yl$<wbr>XekRPaH%0<br>zk3}exdwvdy>b+_YM9Mfp0yt-XZF*<wbr>6+<%|6m*+p47IAGdCZu{_Ce2z&&<wbr>V16aAXkTxQ<br>zEHmSK_eyUB4bJO$Qa*RYeinVYc{<wbr>bNZ2UwtOb~f53l~~z+U!-9u)`~q)d}<wbr>q`M!fB>d<br>zztZ_i+?0yJrXO^&nF@}BHfq=}$_)<wbr>ker3m3+%xTNtApuSTQK{S~BH^7xU=<wbr>40anUUGo<br>zHKFPeW4GO)^~B7o`pQOZQuJ$>J1?)<wbr>GN6@sko%tR{ki(?<wbr>MH5QSpZNilss0fK99e3aV<br>zi2Dqho1G0Ce_@~V<{mCzrp_=%F<3><wbr>8E}D!7-^LYDtZGr*kao5d+tT)<wbr>MiepuNwmKbP<br>z3;*4W4;?!|^4aN+6(vUaG-5O(Rf<<wbr>9vC4<xAVcNI_N{?xBFM?zW8+LXeT|~<wbr>)8Pe>G{<br>z#mf(KxTyPrpp_zvCpzZ}R?5`<wbr>fKDHZaF5+`~m4CP!l+-dKB7RWB0v`<wbr>ICr*;><;+2=%<br>zobGLn)huX6w`Vr3S8kRDo!%7M$<wbr>LEh8Nh&|TD5(n~XndwEi9#q23$m&z?<wbr>bjrm4}EsI<br>zr1G#IT^h?>eo@`~B4&m7YWewQO6$<wbr>b2$J@6Zp>uAP_uRPK6twR-<wbr>usWh6lWq>X?ctY;<br>zRaq66JL9VF`P;b)4H7>0S6~Z|+<wbr>frYskKd6)eIyvv6ml&XmTX7(s@<wbr>wQhr-6Bm#WYk?<br>zs?hAej6C4|A18F(scSmM8`<wbr>1OjUcmQKS$u015`@XjLKQcd#;6_%<wbr>tP&yK*ux#&UHtRo<br>zqb{h1h?Vizb7lx*6^pRy8ctTbum)<wbr>C(VFA_nPz8tQz^r9o(<wbr>4z8X8f3zOErLAw%n>IM<br>zQwgelAN;!A5Ph0Et<HnZp9i><wbr>HyicfAuqfo~^Tv>4n&Z;LB<MrU_z+-<wbr>Vsbz!ckP{@Z<br>zqZlbN6d)<kpC0>q0>-An^&rZv9#<wbr>hW5fL@zWMp?r23=zuo?|;!<wbr>5C08SYUS&F!bh?n8<br>z79+_<6kSzfD04-|5;LaiRLcGJS9Q-<wbr>GL$feSkty4y)M$Yt9ddNV=<wbr>f17LDU0ACi{7%b<br>zS3Ux~0m>|x8>*gI$_?(gjMvTf*(D#<wbr>n$6dDJ@2cQyo8JIU%YlZZ_n3NQq<<wbr>ytxh^HgV<br>zhFxCIHV=P(k=GU!qSG>CZb(<wbr>cR4i7DZl^6G~iixu;Gl!3R=6+<wbr>FQgkfaz2N&)0skJVZ<br>zxHZ?VtcC=)_nEdsm54AjvWg8=8QA*<wbr>Wk@IGQJEjSQ6TY>O!2fKk+Sv9&<wbr>2kMbfcNESN<br>zjuqcgs{fY~2l!YbT_8gr*YNiXNBB`<wbr>3I{o%#WThu}*%5oGc&o_IG5QOd<4j}<wbr>8MULC#<br>zsJgD;??=Q3z-V^~emLHduM4X5N@<wbr>XR9rz{aJ8bo<uuJ#lv#(r9P>;KZeA=<wbr>V?$KC^kr<br>zgHQeJK@r%_yWcoDp%w)sBDNtJW_;#<wbr>klS-ELH8L+N%1HAeAl)!(20>}=ey9)<wbr>c;8Kuq<br>zS(es5fee1i;{Tm3w}0?+MD^fY1j{*<wbr>C4j%d4mt?`JA?pUw(_xJKw;%RkM^^_<wbr>P6JJKf<br>z6ij!bWM;zF45GjTvy`<wbr>Sz2PcISrAuS70?9qP{qeBl?+*TK@9+<wbr>MhOjKI$i7juA`|^Y|<br>zfx1XOG_CPW$Qs{Un}49Yc?<wbr>mqtFCuwkW_BhZiD{0{w_qzbx_3F$?<wbr>q8#CZNso~rri5t<br>zE7A<(ti|@KDo!_m@r?JwS<t-xz!<wbr>5cya!<8ev$o+(YJ)}gNhB!N_6B-}<wbr>CXxg&_8^FI<br>za^k&7ry(R0weo_^R%8N$4frX4&B>#<wbr>-#!smbTc8!z-W<-5l|3ph?0$Uy7p(<wbr>f~hn;Xu<br>z)7F?B!Z?=YstmS$J_7iUcW>jke*{&<wbr>eNU~>((PW0&)Z&JY&5zNmGvS-n*<wbr>XQyGlE(KG<br>zF08*lviJrcP`f8<#)S?GfI%r;<wbr>u6ox{Be*v&-v#2L?pDTqXtNk|w)<wbr>ZCM6^e<S%}dPX<br>zRUOu9Y!n!y&9Zxxmiq9qT+yAD*j><wbr>FQY(Yz<wChga2fB?t>d!D&2IOH>>v;<wbr>OBpbhCe<br>z3niV&dx5K?sg)i4$<>t!c)RCw!&<wbr>fkU2tsn+5s6h)#6MK~^YQR|M_e`n?<wbr>d<dAs=saA<br>zj2$$_(EaaSLi?!u6<>l>%|Z$J;OO;<wbr>vuW}lk^mc27k;nH3%{K{u;P21k+<wbr>sW6*#}RJS<br>z_&dG@d<4zz?5>o`<M9`<wbr>Eo68e5XlRoHj8*jbB(GWmW|c{<wbr>sx8iK5Q&6>T3&tLm#`Mv1<br>zq<9s~*=4?{f-&F|-Trl9o^^m??<wbr>QaZAd3L=rbPaRvQw7?Mv?<wbr>yugCLLpST<XbYr7vY#<br>z36q8lxyyx^brY*uo`J4~E~VT+SK$<wbr>QlE-^~}!WQ>fbn`1Rac~8M8?<wbr>jxlo3CvtLyUKv<br>z3u^dS@6UaWIJP-{%VA|m+T}a_@<wbr>tXiQ8t|>U2*3BP<V62~hk&F?1#hT*<wbr>dIZMlVG;ql<br>z?iKCp)T^>$y%OV0?@Br%-Oei|<wbr>a6jw=cU9XDphP!}PK?1Nl3m&Xwomq?<wbr>S?A<nPMcNv<br>zX*3kNd$gVLES$cra)Sh~V~1?296}<wbr>9>-UPAQa>hPTxnc9vp7(<wbr>2ZHMmrQz6zBTbO9`N<br>zyAT*|b}NyB*q7ULj?HrRRATSP$YT-<wbr>(TW@oGwyYYp<R#;pwT$5uR&}k~-<wbr>C0f_w$j$Z<br>zLnt$08{15}6rboT;jCVMA&Qmo(*j$<wbr>OT2AcCa(<<wbr>7kyOEhQtZFTt9yfnh89Ho$D|he<<br>zL4jg+q8kz=nf!?Lp94|P=6F#tram?<wbr>(q_#80x<=Waf=ZjGSJ2pZx`4jBQi~<wbr>J>DD>s?<br>z`dMSy9uT97{obCo9dG!+u)@0(<wbr>tSrPIeso>kpHg&BfecHN&%t}<wbr>Aee5inxXVdqZ5>>u<br>zb?QhPUwLzf5fV0xA?8QWJts@<wbr>J9MtLaWD7X&2(^2+5a?#=qPQW)<wbr>S1pD>B^$ruhXWPt<br>z&p#L!-@Q!9HoZ4%W=&X-dhY5vD!2~<wbr>X{(1qp!SObY6LsFl`@1)EymlHQUUT<<wbr>4olMDo<br>zXO7T)irmJH<WnZ-uAK|6OGS?t`<wbr>eXQ6;mE%cv)aCTO3%BHMVHnEr8XWi?<wbr>j8~id0Q;w<br>zyWV7C$4Q@!-X^^sIy~hmU>LU`%<wbr>a1Eo^|*hKy^PoE<>7Zr)+=<wbr>WxiQj05UuBuw-mvF_<br>zwQq(I@4NkUJ9NL36izT3`U^AJh9_<wbr>ML7r`n6QL(clMuXM=m{@x_d&<gy;<wbr>XPL3;Fl5R<br>z!ZQy!at~8idK|A*m6wtO`5|h2u@<wbr>xzy)N*%){sCI-)>R6)5?<wbr>baUzH6Jqqy3Gkp6Bbv<br>z{nrgyE?nVTSN0c{$<=mmilq7>+<wbr>KjI+MpE*ujKMU_M(4w=%E_<wbr>4tA9lZjKnjoSdX}HE<br>zx&!g$?0n(<wbr>E2POeTkzjRlEjU24Pa4Jw-0wIol6=<wbr>c2NBppObUH^un1f7}BiC)}-eu|z<br>zymIn93~Sad%<wbr>m3W18VaTp2RNIOTvPPF_)mPlsC(e-<wbr>UH8)zPyFi0v-4%i-47o*V)TvH<br>z@TlCjZSQ<hFolB<o;auo2Nc|<wbr>q7jr4a&l9mKed2K=11^<<wbr>nihutZpJUDc8RE(BpYvcY<br>znRLeQ96`^`7P^hZo$Px!SzK&<@y+<wbr>3$PkWVLch$RL#z%Se@%l0rRrKMJ$<wbr>56YWOR{n0<br>z3b2N6jctgv;N`%OCP2Nh!<wbr>Hyik4WTm~m$Ra0Ke?cb6=nZ1#<wbr>4atYEIG(LrIpI2_+)xJ<br>z1n<0~2(FC?i+XL9LcZVK3)eC`<wbr>J9PJ~MtMZ=PnsJBS8>e|D|^ldB|<wbr>bS1O-8{=Of>2I<br>z5UFp2HIwxndd*f@Vqv~tXq{}U{;<wbr>oQ6rtI^;kdVlV{IOe?u`jrE_-y@<wbr>huZ3}zMaySn<br>zwsqmy5>pe%)^Yk)#_9X?h^nu7_9(?<wbr>V(%I?ZxB2c$?_+b}nhc1wxFSU`!az|<wbr>4Hj$Um<br>z+dr8iSXjo(C`!)_QH_H{Y)NH~!|<wbr>pTuOjfQ=F`FmZQ~oEfT&@K3$_XF;v^<wbr>wp9nL&aH<br>z4K>^D;@$Bcv-j3>zBy6x{<wbr>JvynpWfix)LtnTt(BZ>R5>Q6{-<wbr>2pEMdnXP=1(z|N*8z;<br>zym?o|c~0@)Jx_xOlRt6apTTE=<wbr>wbIF$r4ldqBtGefBDi5sMpA?Idea?)<wbr>{EPeaUp8LM<br>zfZdH~uX=(hxmn5$*<5+Sr1|}z-<wbr>gWH_rN4_obZyT^!YdY?iKF>9QB_x(&<wbr>g<tJwsbZK<br>zQ#OUfdS3Ptl{a1y&Al^Vwto0k442{<wbr>gh+2*^OWlCl^aI$n)%@Y1%LIx)?@<wbr>p7xjx`g*<br>z%)4^l?4o4<qrqv_@=G#0FW-i`>L!<wbr>ibmTa9ZTkfbj_}2c|j3V^}reyxMI!<wbr>RH}104{W<br>zV8h7~p~+^<wbr>xnAuRuPostcCMCKqtBMD$<wbr>Hobfbv9YPYQnd_cvaZYnzT8d-E9<<wbr>0fvR%-W<br>zClgS<E>S{KD-Qng4bH3_!N6az?a2#<wbr>&6JvUIb`CH!g^TV6K?7IIKS}?M-k2_<wbr>cQtJgR<br>z?j&P`zX7K_I~q8}sXn1ufG9WTEr@)<wbr>WT>Vo&_nY%2#{`e?EZ}*(OYYCcK_<$<wbr>{4&z4o<br>z_tS7YnqVt4SdL9&Jzlp5f@tl&<wbr>e3s3Nd$`UP8<lBkILt=>-u)VXS*#<wbr>Gg4r(Y~C!bkl<br>z-5Z&{+X=6H`S{T5f48;ugHar)A?|<wbr>wnH>MV`otIot1MS*M^gkmI|MuixK;<wbr>6I9{da|b<br>z>UJ9w9L=|{_{nXw8alR!qssi$u|<wbr>lAD-rxl1krzFg|HXb+Xf7tn({DZoF$<wbr>vdr#DPX><br>za_#AduA+E*2U<o9ehFC<uE>%<wbr>KJDRD4tVq8xlO}&<+`{<wbr>ntXQxa0axsaoK1_F5jsDAz<br>zhE2`-@0OXvq$xA*31X>5KeigVw5}<wbr>PtKhJ7oQ|5bfiqMxeEbf1;50c<?)F><wbr>v6vN^JN<br>z9T9On0lYyLYk)YTVPG?@U5C+$<wbr>VTIUe1V!wUp@R^xgv9rMP|tteps?_<wbr>N)%{!He{Aqi<br>zYl++6g*Dh?$8({yjY1)Oj(EV@?z|<wbr>9*zyo&BY;~UZm;wANjpXc;E~HKb!<wbr>1ctl<#1D2<br>z;B<<=u01eJ3Vf8e^Su^f?B3?<wbr>uk7Vzpb+0Yn&I%0SVI9%IP3D=TW$5~<wbr>t4*j~)LL03)<br>zpgtXb>Ys?Xoy<oc3wlquf4~<wbr>BJQhoT%(<ybI(csbGElg5|&eLO@g@<wbr>Uo6=7e=*I|Ccw<br>z=}kixF5ZymJEDUo-8XU{>+<wbr>kN6ncElF_(yVNvBQFir0l3@s{Q;<wbr>S8ZY?5#8vPc>9Y5q<br>zb5dncBu$6lcIBW=-NUV)x$Wa`<wbr>Dw3Nu_q+CB!nl~t>Ep-Or1jt!KG5@<wbr>OIT>cpA_2UU<br>ztL{?{`q@n=@pc0Uog;yIgn}<wbr>M7REJi!(qLV0;s@yKX_5WIaoKFy6I^<wbr>zN^)q^wv%!lK<br>zE*pff=&>Fq2X6Jj8J)4W@#xZhsEx&<wbr>wKH$W8n%F!Z>F<~^Hs(oNhwanB*D><wbr>sCMZ~H8<br>z94#S)+i(<TM)r?*#(D|2ni6Dj;{}<wbr>GPLq|v3dCS#8w&Z}gsoE`inZ+BH?<wbr>lGKIy>!<~<br>zwuBLGBi=q14k`)M%|`t=mq0DoHOY#<wbr>wADZ;opEKH6&|?sq%SmOZhDrBW&<<wbr>K4Akj@OB<br>zXLDEo^j3Z}AaA)o{LzsePXUezI%<wbr>H7Z3$wq2bo^3}bqzf*K*5>tvd5)+<wbr>psn8ZxIm@$<br>z%d>p#oxO#Xa|w6bLOVIAS)SG$<wbr>uvtd;pa-MJW7(|_%<x;o_AyI`<wbr>YV5jJuyauFYggq~<br>zhV}T>0?#J%J2!(DEcu}3>P_##Pd#~<wbr>M7Q0+xM%Ov*(B3(I34zn@xC-3?<wbr>fbIj$iFV8C<br>z=D6mW&Vov)4)aHKL&2dy%~CVR9~)<wbr>EvuNtv|=aVD{1P6q;2WzND0~u#!<wbr>bxSl`uL+i(<br>z)&p}j4rRy$9=tiSpxyd;tXYDxq#<wbr>Cb5`M5$~uj;uLyqZ4M4$eZ^&KKGL4%<wbr>6S(Z4ble<br>zlpmbqIB19`<ib#s<@IXB6n^@<wbr>1z5dSL!%Uo?q-<m<<wbr>1yq6yKWSOzh7Xd^4QbADE$RvR<br>zGrS;e+&ZY#aZvq!=b46?7q9dOClj(<wbr>3b2_34u-g38Pf!ec@B4*C!O0@*gl@<wbr>B3^shd3<br>zc)o%G6#6$TSQ&E~JsvsE2*F_%Z@X|<wbr>8aVbfbT-?dERR8VDp7Jrhl}#I<$<wbr>BCcbO?!sE<br>zH*ML|A_3%jVkas&M#r*-oXkjaL#<wbr>vEeNA+J*%<#@mAlKanx>emqUFo+4+&<wbr>{LSZaVru<br>z7cC2Ho?c@9@kat>*XI9_6g9Pi9F7`<wbr>f37YfsgYZ+!7knPwP8Hitu3<ywzt{<wbr>5>4XFf<<br>z7LD7OxU`9@jIlb0*@!LYysz(_<wbr>I551)1sB6}AGT+=Z!@=GouAgyZ-*@<wbr>hNW&V}*Vb3T<br>z{D|J|YlG&Y2-)6AZ{m~C*J|r-99{<wbr>BBBs%@H*$Y8Xrl5E&9O@_9AG)6$$<wbr>GjiGS$;iV<br>zo_2xUGjAgfA1>ZPU1<9eYIh|<wbr>U8te7r4Xus(pm@MuO?hATIZ?;>@{{+<wbr>1ri&NS^H7b1<br>z=^s*Hd5<DxN!(ot#wT7iT~QvFs#`<wbr>RrOq;OTj_7(gm-Dg0VFD|w@6hQh+l`<wbr><LvA4wE<br>zb~j8SpMozAs~mS9%nrK{$3oubUO}<wbr>y?eZ7jj=c)Di8qwfrC7%5783Xj$3^-<wbr>{oB@*3V<br>zAMqVi;m9AL{;>fnQ7B+(<wbr>UAusokAz4XbpJC@)Z}0k<A6@WujZK_<wbr>;bQjQ$KwD*iQfJo<br>zZ3X`u{itQd<~(Wh#IHW%y~*C8P^#<wbr>8oFs|-=X9J_vvfk=My|0(P3+b=t$<wbr>JHm=r%Upu<br>z#^1M~9Vfmmq3cBKO+0%$3k_!<wbr>1WH4P0zz#m&rvKBQr}B=XzQsE1TR0_<wbr>W(UOPt-K8tC<br>zUWB}#c?(!pRuZRo4VgL8+5+~+ZNj<<wbr>D%mt`6SyPq@j!UVXJ_Wk7?jLH*_%=!<wbr>8OyBl-<br>zg;5z_l(We-Px|zkHYbkFf^TzThGI(<wbr>hxCre$SYM1Ga2@lcXzC3;?5ICz6<!<wbr>et&pymr<br>zQB<QZ^Y@6)o;p6CPN`SGV^7pgw@|}<wbr>U|GgocIDe7wz-R|$h;^|3Ge`<wbr>VyPyRDu++qp$<br>zrO4V;hkFR+<-~)(qgnkpr+rK^<wbr>gtA2%&Wt{XHz6&q4!U$krqjKT{<wbr>GJINi{LAW_>S<s<br>zq@6R$S*f)d$Dzba74vxoe6aAHrpU?<wbr>nbc00;Tza<@4Gv=-{dv9A8|mU_s;<wbr>uwAOd9;4<br>z8<c<c0QS7eG7m!oKk{;OZ+B14H9{<wbr>h+JaK?SM5nmIzj-uIt1Y_!Uz7Z|><wbr>HizAo<ElB<br>z!@%M0XKvUVHX7b(?84VUA7KJF1m!%<wbr>N<c2J&`-?1B1iW`QbII?vx(_M_P*4)<wbr>$Kl*!4<br>z2P+>v&8cjKj%)?d$yd;T&b?e`$<wbr>2WzQnQ@oXyZMwuJ%suE)Ky(oM=w8=<wbr>k7?W_RCja`<br>zN6$hc#L^4p50^WfDCM1Q+MLupC+-<wbr>FstLrHl=tRntq?<;LOrYDu-<wbr>MAWXTaz8<pkac5<br>zAR~%ZCK;J64QjkaoI>&w1X+xWp*<wbr>9G#hreUW-#NlRslvq3>w0*GtfH-s;<wbr>j=W)`cvWG<br>zV<pMWV>d-kY};t#Q4V8Dd3X-*&<wbr>bYUk-Z2;i7U5NPco3h@R^utqMo^<wbr>kXBY=dPXx6<W<br>zEmNi>JH9k~PC&}fVWHF@#q<+5>%<wbr>xW#E%C|?*9?uP1_n*#%<wbr>1Q6fyI0eL9V<V^3YQLa<br>zbTCy?KvH$>(i8G#FzagM%lkC4cq1=<wbr>?AO(8$?aIP4%ch7gbWR$c>t%mN$~#<wbr>m|*FW98<br>zJZROkRYFU+^u&P|frGayq<D{o5)_<<wbr>pk9p_cyoa#KX6$zDFq)#v9rExR)<wbr>pKYFRR-bU<br>z4LZ}S!BxYzZKK#m^6ce)xrkqqWWn@<wbr>cuH7L5Pt1%v>Bpr9VLr9!r`IB#3hF<<wbr>c3X)6h<br>zWs#X<&ver7QF<(!0ZnGcRMg#<wbr>zGWBLBUC(9&`Psox2lU#XZxk@%<wbr>dsbWU>k1z*D6$pS<br>z7rGGWG*EG;QKI!L3FS&_Iwm4z6_<wbr>yCQ%Nl3i9(XrAli*I<%%p0qZt1z`<wbr>Wc-VJB%Yv^<br>zqntdG`0?}o8LxzP5Zy(;spu9S%<wbr>zVCxN@dy$X?i6d4l>XQL>hG<5wNH{<wbr>CwC|bSL1?$<br>z+y)<7_G&-Sl_i6jn5M!=B+MtP$cM?<wbr>7iE`9C$O(~A%d#zRWfQ@~rKAlGLs`<wbr>V6*!b+K<br>zfi8`#nq<7Vp9;+TTJvo{F-pi&iJ-<wbr>u8GU=XuP#nT1TPa4E<w;V~^btr>5;<wbr>uaTqN&^3<br>zF8}5U|0?`jT?<3X_<wbr>t5YBnL0Jot7y44NB|Vn$jd`TR#<wbr>g7XFpk(crRvs^V<ZfK1&u#v<br>zAV8OX&3%(icB5|q@?K1(1Oxw2U%M~<wbr><P;m-=ke)3ZsPpSSoj-`QtkeF&kuK@<wbr>a8ZlxL<br>zs$L5b;Ar@KOQL}{<wbr>UlFFoUTfkvN9MSgKdVt)2U(LcBiV7(<wbr>6K8M#rd&Vwt&E82Dwg-A<br>zzZc{rgF9cGsl6nSuC7kI>v;Ip@#!<wbr>8>Ow(z1$y$QoR%qXDIizyL_<wbr>H3aQiGXu;W*c83<br>z=>=Ly7?{tcHWcCQRk=ezNOl+HD+<wbr>M80_d#(Sl!?GTo!%&9;?EmIp**7tN><wbr>qWTDnP!m<br>zf$3@^RW1gpIgsH)-chuC(A{<WI(?<wbr>J+D|!<|j<#YkDb~tE%e0OkGDQd4N$<wbr>Yg*iI`9o<br>zr;HNuw0{3EyimY`*ZLj$oc;dfPj^<wbr>d?&_dbD5gY)LLz{OJgy4EhX6Mii!<wbr>hz8SMe4Pm<br>zOUvB4F9e$^anKD`qsmUa{<wbr>F9msNRjosL2BS%Fe}(@*@P>#73-ed{<wbr>}qT&{|&QFMSaxd<br>zPY{}p0~t#YCpB`z2?l!3=nNLx;<wbr>6MTrta*oZ9+Wr{bPs}Cz-NEX5F?M@<wbr>MF)1}_7c*)<br>zz5yLMpaMZ)zc~xTpCf1;`|C7!Px-><wbr>S>JhS()C6%$2v`fd^2)_ms_A_)o-<wbr>21lTK0R><br>z<}+6m5ahNXR5M3-ET8~6s(><wbr>cMGuOexuPKY81PhJ6$JMeLLmx?<wbr>CHgUG#={|)>(3^*e<br>z%Kilb25eq!{DkL3$3lQ9GYMpr#<wbr>ezU`<S11xiE8s9T@DSfSgfS+<wbr>VlQ8Rvv&h|P^NNY<br>zJ~DB}<N)~-iA6?y>h~HFNoRN$<wbr>aPFp*LG`oDJNxDCA7{BLdM3I-nt^><wbr>GbLMm3-i$47<br>zFKsS5BvGlCp21_SqoL%3Hw4)2^<wbr>dbuGosH`G5~Nr@D*~L#o{|W-<wbr>AvLb9qQox;f@D%s<br>zYVbEsFE~ujRZIX%vR%n|NPeUM8G=&<wbr>-Lr2-2Es!$qaj1pDiY}JC++2~t?<wbr>cpFzAV<dU<br>zdW;rl*z&Fp?$~Y_9`LBHCYWaC$<wbr>yxXn2=ZtXX0YL-+1(;m16daB{#;><wbr>wQW|PIVOQpr<br>zktq^Lb(M{51btE{?ja!R_;gp$<wbr>gc7uIgi^us)gDAWp(HxUd4kX`2#ed*<wbr>!Dd!;fhuWu<br>zJC0}7+qWPE!offn!K}R~NHMQ_;<wbr>DX8k*)x-{UQqIRAR-Jhb6^XXW~tpH(<wbr>7cP><zsKf<br>zrf@(@J_C(4d08W~;xp}B{PW^-|<wbr>LY426+BeNx*!GaXghAyXh!h{Ef@f!<wbr>9GyEFZ%+X+<br>z2+{?TX|80Fq9P#CnK}{&<wbr>LXLkEoksOqi3-IO@-IQ6a}JjQ_s#<wbr>YER1|gQ>ME*RgT3he<br>zKG0WG%!(Ip0?xW|wNvO?2;@0I*~U+<wbr>lzR)s9{o}9_Htm@$U7o)tzex6@;<wbr>DCFJ@8Tbt<br>z^DB2n->C$=K`V}-ry0S_uV1~kF57-<wbr>&he{r#quxawP^$;|8Y7U2FjY<<wbr>3wOclGb3G@o<br>z*Ht_8f7lChh+Q`MF{CUQ4)XjX*_<wbr>ZCQJ{Xu)*4^WC$TnGIApI#+am};m4*<wbr>*<Bm}UA7<br>zP-v<$l5~K7%Pnj1dUBf-p~+DA<<wbr>CiZ~)~-Y#<W7PK<?=^J?=a%i!<wbr>mGW59=G$(K}Yct<br>zPhC?z0>efg?VMxSLaG^p?iGeLFPY><wbr>!e}!Z`Fz#LWC{aN=U7o(ot8=ChD;<wbr>Lw}bXvRe<br>z#M<93J>_Fb3{2YXCcS<k`-lU}sR(<wbr>imV(i&L0L&+9QCxVLd}<wbr>PTKEJYeDdFao2<2-7L<br>z?v|5iqM3q(C6*%fT8$1UZ>b`h1Q{<wbr>B(*C<+B<$=pKKjto}+<wbr>uUerOjSU9onarTYGpI@<br>zj0m53IxOW*o!9sEwT^PX$!=_x^y)<wbr>h-d~MO#A-LiZ#MF^6b#<;A4<{<wbr>hkfb4tmIV8vC<br>zgih<&Wsy(i;Lqos;TM<sFHBri0f$<wbr>z&PQE|n-vsz#OmorKGFv+XuAZiEj!<wbr>K11q~(c~<br>z^vJ$P$`fd)`Oe;JX0FciF8{5L4}C><wbr>6A6Q)pK@c8vnEcWf4A37yX@jC)H><wbr>y6<V)-Nd<br>z<l60Q=(qotQ+;*=^s9|=kOv22HRv$<wbr>a?cP{$c@%R@?KjaZ{^+`y|1<!-?<wbr>qU7G8YDk6<br>z{w79D0@_TonY2ZH5`&S^<wbr>egrFssV0811|wHU5iQ89nYh91>^r|&<wbr>mZtJ}wfz0l78u1Q<br>zoXA1O|MUJ1>h?dBn-!z`o0sq+<wbr>AyydqvPG)f6i2S0@l$t~El{AqLV!<wbr>JmJ^^><KjTed<br>zk-G}V=tb^W=CY%t=Sr`yu6}Qqf;<wbr>2yJv*>GBFs`-b`>$nb5W|<wbr>lhLNahtnb#g-^^k;c<br>ziKNT@@wj;qjFRz?fhx(qwV7u^qU_<wbr>04=~CPkK0n-<wbr>mFr6kIP3b0rNLLgB2fdMx)K}N*<br>z|Dq{(x&Di$^ekp4KNPe(z5$oC|<wbr>4ma?xsM`=i8p%!Xt7&<76m^;-i~+<wbr>iqRpx4M}wy-<br>za0pn^^s|;mzd6<P%AHJtM~k>7J|<wbr>RP?H?2i2_Pg7y@LUmAfgtzM+^p-<wbr>mZ5IqP<r?xc<br>zHFkIAFP%h&dQFADvF?1t$|j6CF`|<wbr>i$e-Xaz&?73SauI!3oV#hI$~a)7O+<wbr>EF-tWLWG<br>zUtZ-V>(NJR+C-F_|K4+I><wbr>WogWjFfrWAxs`1%*>I{n1TQ`<wbr>1MHtllOH`x{s&5u%aL`e<br>zPyHIt)e<vTIC%6U@kFx&mDgw%><wbr>xuvUjmq~aSrNGXb|EzB9)^|<e_sEV-<wbr>)(HBmfxPw<br>zirF~1gRbwqz}tIvNcUVKY_rP<<wbr>XnCk^D}9hKo;V+?mFFq{=gPPAjioI!<wbr>OCSE`!W9{o<br>z^#zgGL5h}_?8j&u3>|O^p2`<wbr>79Gri7{)XF_On{N3`_pX!kd@wkI{<wbr>Ny1aYzgn=Td=u6<br>zwwSIx6=f}vgbByo{I4Kz<*N_&<wbr>xRl4d&CZERCDj>?aY`FB1JBn$A}Og=<wbr>ex1mRPXU=G<br>zKS@VZ%)Y7VcGK<eNsy?X(H&|qR73?<wbr>y@LA6Y6uMjZx}^#YNcp>LBTOcb7A^<wbr>ols+8kr<br>zN4f}`)J1{kT^kRyNHr8p&g#%1i~<wbr>jwxR{|Zzs53JojkI3DJ0Er*h`v^<wbr>1taa@3>5&m5<br>z0!x~z(d&_VR!a?jF5SkpW2R=$pZ2!<wbr>_UcWt9@TiWY>c`6YL?UE#@PNb`<wbr>lorEUi{^JD<br>zh>7zD*D8<*FR1^BGjpFg+zsE{<wbr>jqqO-q!NgEgA}BW_3_<Vk74#LJd6E&<wbr>q@&xR7^?tm<br>z^$1L^jkM$Lq<trispIa;1sh`M@g@%<wbr>o{o@RuzTFe>%ntaCH3Pq!$<wbr>U6NoFl4sC+I!rt<br>z(*nOSq&t0|zIbZ2-<wbr>JCXJGipXDaJyTRm*<P9Gj4nOeDb4P;<wbr>3ZnLbr-{e2hB_ZC-M`P<br>zbyLad0x4m7R+kzhO6mwku}v@l$<wbr>sRGH<TgcA&+UC7i_0cJq<<wbr>tnFkvG8GS6nn+YeCwG<br>zFq1yJ$%$b|es2e0Rxbw}lX^<wbr>ptyUZA)Hd7I68#`(t5)KCKi2B4$8?<wbr>n8DH^1v$=KP+$<br>z?5tbJgCItfe8B~|*$99{{*=d;<wbr>Li93|?#^t1#*G7htXJ&(T(`@<wbr>wOfBtP&7aP1t6>JR<br>zP5&J48Q9r7yqP-_YH`3ZSgIu!_<wbr>PSSuvc9y7{KJW5eFA;ged|9Sm@%P;<wbr>2xq>UypsRF<br>z$wysov1B~E3VY7hz+?<*B%g+e?-<wbr>nSd6r6~aAw`rILh+M?Y46(@H=<wbr>oAUz8td0ek7Xu<br>zEu7M+Kqc~j&{NlX;VT3e4|2QVat)<wbr>aZR8io%5?o|xD8-N_d>zZUJ!(B{<wbr>qunk~N0}^}<br>zsV}#A_LtCU->w?XrF|-Rz?6<6S&<wbr>6FLoFej*-yS)5bS8rV2LW3{TU28xV@<wbr>DC+VdxOO<br>z@<yoA<30KhWua_^9&Pm}z6jL<(*(<wbr>wpPq!9B@4m8DD%f*XetRgn_F&77Fr^<wbr>_I%KYM_<br>z)LBg5gnoBF`Tw919i0FF(})NE(1;<wbr>VUuZsH*y9k4^W3oAccAUdE&4QfVF;?<wbr>uxE2Fuz<br>z{@N2}4{;<YF^UR#w}Fc0<gJ%`)^h?<wbr>?iycZc*P}Dn29;MnHh!C8SpLr=ni_<wbr>0%Om8Z|<br>zQ;w6Q++%=t+s+KVzv^E^Ur~k_<wbr>aAXIW<QY(~Bv)<l;6~0-5?)_<wbr>1rGEdKpOIXeTBKg3<br>zF52#(QyxUgau0a2G%v!0gWg00A%<wbr>fg$&w)sS#8=3_u?GKDaCNuJu<(1S^<wbr>fm~RLToRF<br>zT2f7|*&zn<Qrj~ACScCiqWyO^X#G$<wbr>(XhEUNU?`!hQi+h8FOHfdTWEZ(-<wbr>jUWZwIfQC<br>zZjy(uyK06KNAI|Gr{M{vdhU|bSs)<wbr>E_+yb&jb~LDx4Wrl)b+aiVvnjMh)B{<wbr>Rj&kUv1<br>z19tQ+?3aSUa5c(ESIVDCqe1)<wbr>S6xlMAc*<SsN980=W#tJ`v|#e&{^<wbr>M6x3eBIGlhAfP<br>zdi}=g;g96eEayBs4TKDO;VRGhc*{<wbr>B2`MWy)uL+o0I>PcbSSvMJx(<wbr>jEeennM>r}5h{<br>z>EaG3F-X*&uPWtJ_h@fHkp+4XSr{<wbr>1=BB(q~U43YjXQ(v)@yZ6Tc<<wbr>SqUwSKdgP4Wty<br>zWOcR1pQ{;q!zR^opAjjQ6r<~<wbr>JDpOxk>I$91H5=)y?DV7e&<wbr>R8vaa0b3inXl+9u@NMh<br>z5n<#aeY8Dpwf5Dt*9tGKJ^LGCAb~;<wbr>*t~|TBv`kP;Bx!mOHSwidF<jYHx5-<wbr>kZp@0S|<br>zNacAvUNQEOmQ`2R!gTZ@;s;;<wbr>7ZsE9>1;0rFUjNWpR(l9CAZu5bj><wbr>Z6`Xx$~alLA59<br>ztl~Qe2%YVv!+{WjMgrLSIO1P4o^~<wbr>W2E@X`Kag)WOk19fnrb`J5*DN#7D<<wbr>Dn`z+3e7<br>zesem!VbMw~w45lY@%LZT)MP5Vvs&<wbr>x^<ETaYhvh}kyMAX7*qNxD<h18y!+<wbr>A_yi|okt<br>zzftaN8;)WWgbi2*Mr(1Qrp1X_<wbr>NfN3E{e;@{4{7yZ)&;HnZwmii-M{<wbr>fzu44!TxIpAT<br>zI9z4|@P!&c0SE#JZN;EHx}3sB$ap#<wbr>FA&I~xASRgGLuEu4kJbhE8BwJ3^<wbr>Qtx6IPzz*<br>pfY5(^D@GRJ0rcRo?w{d+x3;sgB{<wbr>vq}cYgsuR#Hi#O3Wzee*yMzYQ+Em<br><br>literal 0<br>HcmV?d00001<span class=""><br><br>diff --git a/user/index.rst b/user/index.rst<br>index 8cbcd1b..a764fe8 100644<br>--- a/user/index.rst<br>+++ b/user/index.rst<br>@@ -52,6 +52,8 @@ to the Community Project hosted at <a href="http://www.rtems.org/" target="_blank">http://www.rtems.org/</a>.<br> <br>     tools/index<br> <br>+        tracing/index<br>+<br>     support/index<br> <br>     glossary/index<br></span>diff --git a/user/tracing/captureengine.<wbr>rst b/user/tracing/captureengine.<wbr>rst<br>new file mode 100644<br>index 0000000..f0e2b01<br>--- /dev/null<br>+++ b/user/tracing/captureengine.<wbr>rst<br>@@ -0,0 +1,10 @@<span class=""><br>+.. comment SPDX-License-Identifier: CC-BY-SA-4.0<br>+<br>+.. comment: All rights reserved.<br>+<br></span>+.. _capturengine:<br>+<br>+Capture Engine<br>+**************<br>+<br>+[TBD]<span class=""><br>diff --git a/user/tracing/development.rst b/user/tracing/development.rst<br>new file mode 100644<br>index 0000000..ad74d8f<br>--- /dev/null<br>+++ b/user/tracing/development.rst<br>@@ -0,0 +1,12 @@<br>+.. comment SPDX-License-Identifier: CC-BY-SA-4.0<br>+<br>+.. comment: All rights reserved.<br>+<br>+.. _development:<br>+<br>+Tracing Development<br>+*******************<br>+<br>+RTEMS trace is an open source project currently under development.<br>+<br>+This section can contain how to build the rtems-tools after making changes to the trace linker. <br>diff --git a/user/tracing/index.rst b/user/tracing/index.rst<br>new file mode 100644<br></span>index 0000000..d2d9993<span class=""><br>--- /dev/null<br>+++ b/user/tracing/index.rst<br>@@ -0,0 +1,25 @@<br>+.. comment SPDX-License-Identifier: CC-BY-SA-4.0<br>+<br>+.. comment: All rights reserved.<br>+<br>+.. _tracing-framework:<br>+<br>+RTEMS Tracing Framework<br>+***********************<br>+.. index:: Tracing Framework<br>+<br>+RTEMS Tracing Framework is an on-target software based system which helps track<br></span>+the ongoings inside applications, 3rd party packages, and the kernel in real time.<br>+<span class=""><br>+Software based tracing is a complex process which requires components on both the<br>+target and the host to work together. However its portability across all architectures<br>+and board support packages makes it a useful asset. A key requirement in RTEMS trace process<br>+is to take existing code in compiled format (ELF) and instrument it in order to log various events<br>+and records in real time. However instrumenting of the code for tracing should happen without rebuilding<br>+the code from the source and without annotating the source with trace code.<br>+<br>+.. toctree::<br>+<br>+   introduction<br>+   usecases<br>+   development<br>diff --git a/user/tracing/introduction.<wbr>rst b/user/tracing/introduction.<wbr>rst<br>new file mode 100644<br></span>index 0000000..596bc25<br>--- /dev/null<br>+++ b/user/tracing/introduction.<wbr>rst<br>@@ -0,0 +1,97 @@<span class=""><br>+.. comment SPDX-License-Identifier: CC-BY-SA-4.0<br>+<br>+.. comment: All rights reserved.<br>+<br>+.. _introduction:<br>+<br>+Introduction to Tracing<br>+***********************<br>+<br>+Tracing is an important function which has several applications including identification of<br>+complex threading, detection of deadlocks, tracing functions along with their argument values,<br>+and return values through progression of several function calls and audit the performance of an<br>+application according to required specifications. <br>+<br>+RTEMS tracing framework is under development and welcomes contribution by users.<br>+<br>+RTEMS has the following trace components:<br>+<br></span>+- RTEMS :ref:`tracelinker`<br>+- RTEMS :ref:`capturengine`<span class=""><br>+- Common Trace Format Integration<br>+<br></span><span class="">+<br>+RTEMS trace framework can currently function using the following methods:<br>+<br></span>+.. _tracebuffering:<span class=""><br>+<br>+RTEMS Trace Using Trace Buffering<br>+=============================<wbr>====<br>+<br></span>+TBD<br>+<br>+.. _printk:<span class=""><br>+<br>+RTEMS Trace Using Printk<br>+========================<br>+<br></span>+TBD<span class=""><br>+<br>+RTEMS Trace Using CTF<br>+=====================<br>+<br></span>+`Common Trace Format <<a href="http://diamon.org/ctf/" target="_blank">http://diamon.org/ctf/</a>>`_ (CTF) is a binary trace format which is fast to write<span class=""><br>+and has great flexibility. It allows traces to be developed by bare-metal applications or by any<br>+other C/C++ system. RTEMS tracing framework can benefit from these features of CTF. <br>+<br></span>+A typical CTF *trace* consists of multiple *streams* of binary *events*. The *metadata* stream is a mandatory<span class=""><br>+stream which describes the layout of all the other streams in a trace. This metadata stream is written<br>+using *Trace Stream Description Language* (TSDL).<br>+<br></span>+.. figure:: ../../images/user/ctf-trace.<wbr>png<br>+  :align: center<br>+  :width: 75%<span class=""><br>+<br>+A binary *stream* is further a concatenation of several packets each containing the following:<br>+<br></span>+- A packet header<br>+- An optional packet context<span class=""><br>+- A set of concatenated events each containing:<br></span>+ - An event header<span class=""><br>+ - A stream-specific context<br>+ - An event-specific context<br>+ - A payload<br>+<br></span>+.. figure:: ../../images/user/ctf-stream-<wbr>packet.png<br>+  :align: center<br>+  :width: 75%<br>+<br>+All the headers, contexts and payloads are written in TSDL using CTF data types. CTF supports a rich set of<br>+configurable datatypes which makes it possible to describe a larger variety of binary structure. Moreover types<br>+in CTF are organized as type classes where type specifications can be inherited to allow deriving types. These factors<br>+make CTF flexible. CTF enables fast writing of binary data as it usually involves appending memory contents, as it is<br>+to a binary CTF stream. CTF streams are capable of being sent or received over the network without any data being<br>+written to disk and hence can be useful in transporting traces from the target to the host machine for analysis. <br>+<br>+Due to these advantages tracing using CTF will prove to be beneficial for the users.<br>+This method of tracing is currently under development. Currently the RTEMS tracing framework is able to output<br>+trace data in the form of trace buffers, console output and csv files. A conversion tool which transforms<br>+these trace output formats to CTF will be viable approach to generating CTF traces. In this regard we utilize babeltrace,<br>+which is described in the following section. <br><span class="">+<br>+Babeltrace<br>+----------<br>+<br>+Babeltrace is an open source trace format converter which can be used to convert RTEMS traces into CTF.<br>+It is also a reference parser implementation of CTF. Babeltrace currently supports the following output<br>+formats for traces:<br>+<br>+- Text<br>+- CTF<br>+- CTF-metadata<br>+- Dummy<br>+- lttng-live <br>+<br>+Babeltrace comes in the form of a library, python bindings (python3) and command line tool called ``babeltrace``.<br></span>+To install babeltrace on your host you can install a distribution package or build from source using tarballs or<br>+git repositories of babeltrace. Refer to <a href="http://diamon.org/babeltrace/" target="_blank">http://diamon.org/babeltrace/</a> for further details.<br>diff --git a/user/tracing/tracelinker.rst b/user/tracing/tracelinker.rst<br>new file mode 100644<br>index 0000000..6685367<br>--- /dev/null<br>+++ b/user/tracing/tracelinker.rst<br>@@ -0,0 +1,10 @@<span class=""><br>+.. comment SPDX-License-Identifier: CC-BY-SA-4.0<br>+<br>+.. comment: All rights reserved.<br>+<br></span>+.. _tracelinker:<br>+<br>+Trace Linker<br>+************<br>+<br>+[TBD]<span class=""><br>diff --git a/user/tracing/usecases.rst b/user/tracing/usecases.rst<br>new file mode 100644<br></span>index 0000000..418e8b8<br>--- /dev/null<br>+++ b/user/tracing/usecases.rst<br>@@ -0,0 +1,109 @@<span class=""><br>+.. comment SPDX-License-Identifier: CC-BY-SA-4.0<br>+<br>+.. comment: All rights reserved.<br>+<br>+.. _usecases:<br>+<br>+Tracing Use Cases<br>+*****************<br>+<br>+Following are the use cases of the tracing framework that are currently under development:<br>+<br>+Function Tracing<br>+================<br>+<br>+Tracing the entry and exit of a function as well as the values of the arguments and<br>+return values can prove to be an important application for the tracing framework.<br>+<br></span>+Objective<br>+---------<br>+<br>+This use case can prove to be helpful in debugging of applications for the users. It can also<br>+be used to understand the working of existing application code bases. Capturing of argument and<br>+return values maybe useful in tracking unexpected output results from the applications.<br>+<br>+Requirements<br>+------------<br>+<br>+The current tracing framework provides this functionality with :ref:`tracebuffering`. The output is<br>+provided in the form of printing on console or saving the buffer in the form of a bin file. In order to<br>+develop this use case using CTF we need to be able to convert either the bin file or console output to CTF.<br>+The saved bin file must also first be transported to the host from the target for this purpose. On the other<br>+hand console output could be written to a text file which can then be converted to CTF.<br>+<br>+Example<br>+-------<br>+<span class=""><br>+As a start to the development of function tracing using CTF we can work on the fileio<br></span>+sample testsuite and trace all the calls to malloc, calloc, free and realloc functions.<span class=""><br>+Along with the calls made to these functions the trace must also capture the values of<br>+their arguments at entry and the return values at function exit. As an example of an application<br>+having the following progression of function calls:<br>+<br>+.. code-block:: c<br>+<br>+  #include <stdlib.h><br>+  int main(int argc, char** argv)<br>+  {<br>+    int* a = malloc(sizeof(int));<br>+    free(a);<br>+    a = calloc(1, sizeof(int));<br>+    return 0;<br>+  }<br>+<br>+<br>+The trace of such an application must be output of the following kind:<br>+<br></span><span class="">+.. code-block:: shell<br>+<br>+  Timestamp1    entry of malloc > argument value<br>+  Timestamp2    exit of malloc < return value<br>+  Timestamp3    entry of free > argument value<br>+  Timestamp4    exit of free < return value (null)<br>+  Timestamp5    entry of calloc > argument1 value, argument2 value<br>+  Timestamp6    exit of calloc < return value1<br>+<br></span>+There could be additional columns of details including current priority, task state etc.<br>+<span class=""><br>+ <br>+Tracing Thread Operations<br>+=========================<br>+<br></span>+Tracing thread creation, switching and termination operation in a thread's lifetime within an application.<br>+<br>+Objective<br>+---------<br>+<br>+Real time applications inherently utilize parallel programming which entails several<br>+tasks executing simultaneously and competing for common resources. On single processor systems<span class=""><br>+the CPU performs context switching between each of these tasks rapidly. By tracing the creation and<br></span>+termination of tasks as well as the context switches between them one can possibly identify probable race<span class=""><br>+conditions or complex threading operations.<br>+<br></span>+Requirements<br>+------------<br>+<br>+[TBD]<br>+<br>+Example<br>+-------<span class=""><br>+<br>+A sample trace tracking two tasks Ta and Tb could have an output of the following kind:<br>+<br>+.. code-block:: shell<br>+<br>+  Timestamp1 taskid Ta CREATED<br>+  Timestamp1 taskid Ta SWITCHED-IN<br>+  Timestamp1 taskid Ta BEGIN<br>+  Timestamp1 taskid Tb CREATED<br>+  Timestamp1 taskid Ta SWITCHED-OUT<br>+  Timestamp1 taskid Tb SWITCHED-IN<br>+  Timestamp1 taskid Tb BEGIN<br>+  Timestamp1 taskid Tb SWITCHED-OUT<br>+  Timestamp1 taskid Tb TERMINATED<br>+  Timestamp1 taskid Ta SWITCHED-IN<br>+  Timestamp1 taskid Ta SWITCHED-OUT<br>+  Timestamp1 taskid Ta TERMINATED    <br>+ <br>+<br>+<br>-- <br>2.7.4<br><br></span></div></div><div class="HOEnZb"><div class="h5"><div class="gmail_extra"><br><div class="gmail_quote">On Tue, Jun 5, 2018 at 9:54 PM, Gedare Bloom <span dir="ltr"><<a href="mailto:gedare@rtems.org" target="_blank">gedare@rtems.org</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div class="m_5356409564211988885HOEnZb"><div class="m_5356409564211988885h5">On Tue, Jun 5, 2018 at 11:40 AM, Vidushi Vashishth <<a href="mailto:reachvidu@gmail.com" target="_blank">reachvidu@gmail.com</a>> wrote:<br>
> ---<br>
>  user/index.rst                |  2 +<br>
>  user/tracing/development.rst  | 12 ++++++<br>
>  user/tracing/index.rst        | 25 ++++++++++++<br>
>  user/tracing/introduction.rst | 90 ++++++++++++++++++++++++++++++<wbr>+++++++++++++<br>
>  user/tracing/usecases.rst     | 77 ++++++++++++++++++++++++++++++<wbr>++++++<br>
>  5 files changed, 206 insertions(+)<br>
>  create mode 100644 user/tracing/development.rst<br>
>  create mode 100644 user/tracing/index.rst<br>
>  create mode 100644 user/tracing/introduction.rst<br>
>  create mode 100644 user/tracing/usecases.rst<br>
><br>
> diff --git a/user/index.rst b/user/index.rst<br>
> index 8cbcd1b..a764fe8 100644<br>
> --- a/user/index.rst<br>
> +++ b/user/index.rst<br>
> @@ -52,6 +52,8 @@ to the Community Project hosted at <a href="http://www.rtems.org/" rel="noreferrer" target="_blank">http://www.rtems.org/</a>.<br>
><br>
>         tools/index<br>
><br>
> +        tracing/index<br>
> +<br>
>         support/index<br>
><br>
>         glossary/index<br>
> diff --git a/user/tracing/development.rst b/user/tracing/development.rst<br>
> new file mode 100644<br>
> index 0000000..ad74d8f<br>
> --- /dev/null<br>
> +++ b/user/tracing/development.rst<br>
> @@ -0,0 +1,12 @@<br>
> +.. comment SPDX-License-Identifier: CC-BY-SA-4.0<br>
> +<br>
> +.. comment: All rights reserved.<br>
> +<br>
> +.. _development:<br>
> +<br>
> +Tracing Development<br>
> +*******************<br>
> +<br>
> +RTEMS trace is an open source project currently under development.<br>
> +<br>
> +This section can contain how to build the rtems-tools after making changes to the trace linker.<br>
> diff --git a/user/tracing/index.rst b/user/tracing/index.rst<br>
> new file mode 100644<br>
> index 0000000..ad22439<br>
> --- /dev/null<br>
> +++ b/user/tracing/index.rst<br>
> @@ -0,0 +1,25 @@<br>
> +.. comment SPDX-License-Identifier: CC-BY-SA-4.0<br>
> +<br>
> +.. comment: All rights reserved.<br>
> +<br>
> +.. _tracing-framework:<br>
> +<br>
> +RTEMS Tracing Framework<br>
> +***********************<br>
> +.. index:: Tracing Framework<br>
> +<br>
> +RTEMS Tracing Framework is an on-target software based system which helps track<br>
> +the ongoings inside applications, 3rd party packages and the kernel in real time.<br>
> +<br>
<br>
</div></div>I don't know how it is elsewhere, but I would prefer to see the Oxford<br>
comma here, i.e., "3rd party packages, and the kernel"<br>
<div><div class="m_5356409564211988885h5"><br>
> +Software based tracing is a complex process which requires components on both the<br>
> +target and the host to work together. However its portability across all architectures<br>
> +and board support packages makes it a useful asset. A key requirement in RTEMS trace process<br>
> +is to take existing code in compiled format (ELF) and instrument it in order to log various events<br>
> +and records in real time. However instrumenting of the code for tracing should happen without rebuilding<br>
> +the code from the source and without annotating the source with trace code.<br>
> +<br>
> +.. toctree::<br>
> +<br>
> +   introduction<br>
> +   usecases<br>
> +   development<br>
> diff --git a/user/tracing/<a href="http://introduction.rs">introduction.rs</a><wbr>t b/user/tracing/<a href="http://introduction.rs">introduction.rs</a><wbr>t<br>
> new file mode 100644<br>
> index 0000000..3314447<br>
> --- /dev/null<br>
> +++ b/user/tracing/<a href="http://introduction.rs">introduction.rs</a><wbr>t<br>
> @@ -0,0 +1,90 @@<br>
> +.. comment SPDX-License-Identifier: CC-BY-SA-4.0<br>
> +<br>
> +.. comment: All rights reserved.<br>
> +<br>
> +.. _introduction:<br>
> +<br>
> +Introduction to Tracing<br>
> +***********************<br>
> +<br>
> +Tracing is an important function which has several applications including identification of<br>
> +complex threading, detection of deadlocks, tracing functions along with their argument values,<br>
> +and return values through progression of several function calls and audit the performance of an<br>
> +application according to required specifications.<br>
> +<br>
> +RTEMS tracing framework is under development and welcomes contribution by users.<br>
> +<br>
> +RTEMS has the following trace components:<br>
> +<br>
> +- RTEMS Trace Linker<br>
> +- Capture Engine<br>
> +- Common Trace Format Integration<br>
> +<br>
> +.. note::<br>
> +<br>
> +        I could create separate pages to explain the aforementioned components in detail.<br>
> +<br>
</div></div>Remove this note, and create/link the separate pages with the "TBD" stub.<br>
<span><br>
> +<br>
> +RTEMS trace framework can currently function using the following methods:<br>
> +<br>
> +RTEMS Trace Using Trace Buffering<br>
> +=============================<wbr>====<br>
> +<br>
> +To be completed<br>
> +<br>
> +RTEMS Trace Using Printk<br>
> +========================<br>
> +<br>
> +To be completed<br>
> +<br>
> +RTEMS Trace Using CTF<br>
> +=====================<br>
> +<br>
> +`Common Trace Format <<a href="http://diamon.org/ctf/" rel="noreferrer" target="_blank">http://diamon.org/ctf/</a>>`_ is a binary trace format which is fast to write<br>
> +and has great flexibility. It allows traces to be developed by bare-metal applications or by any<br>
> +other C/C++ system. RTEMS tracing framework can benefit from these features of CTF.<br>
> +<br>
> +A typical CTF *trace* consists of multiple *streams* of binary *events*. It is upto us how many<br>
> +streams we want to divide our tracer generated events into. The *metadata* stream is a mandatory<br>
<br>
</span>Delete "It is upto us ... events into." This is an unnecessary<br>
statement in user documentation.<br>
<span><br>
> +stream which describes the layout of all the other streams in a trace. This metadata stream is written<br>
> +using *Trace Stream Description Language* (TSDL).<br>
> +<br>
> +A binary *stream* is further a concatenation of several packets each containing the following:<br>
> +<br>
> +- A header<br>
<br>
</span>"A packet header" maybe better, more precise?<br>
<br>
> +- An optional context<br>
<br>
"packet context" ?<br>
<span><br>
> +- A set of concatenated events each containing:<br>
> + - A header<br>
<br>
</span>"An event header" ?<br>
<span><br>
> + - A stream-specific context<br>
> + - An event-specific context<br>
> + - A payload<br>
> +<br>
<br>
</span>On second thought, it's not clear to me if a user needs this much<br>
detail about what is happening inside CTF. They want to know what are<br>
the advantages/disadvantages and how do I use it. These details about<br>
the packet formats may be superfluous, I guess that remains to be<br>
seen.<br>
<span><br>
> +This method of tracing is currently under development and can utilise the following 3rd party package:<br>
<br>
</span>Rewrite this sentence to better introduce the reader to the need that<br>
is filled by babeltrace.<br>
<div><div class="m_5356409564211988885h5"><br>
> +<br>
> +Babeltrace<br>
> +----------<br>
> +<br>
> +Babeltrace is an open source trace format converter which can be used to convert RTEMS traces into CTF.<br>
> +It is also a reference parser implementation of CTF. Babeltrace currently supports the following output<br>
> +formats for traces:<br>
> +<br>
> +- Text<br>
> +- CTF<br>
> +- CTF-metadata<br>
> +- Dummy<br>
> +- lttng-live<br>
> +<br>
> +Babeltrace comes in the form of a library, python bindings (python3) and command line tool called ``babeltrace``.<br>
> +To install babeltrace on your host you can follow one of the following methods:<br>
> +<br>
> +Using Distribution Packages:<br>
> +<br>
> +1) On ubuntu/debian run: ``sudo apt-get install babeltrace``<br>
> +<br>
> +2) On fedora run: ``sudo yum install babeltrace``<br>
> +<br>
> +3) On Arch linux run: ``yaourt -S babeltrace`` or ``yaourt -S babeltrace-git`` for the latest git version<br>
> +<br>
<br>
</div></div>I would just refer the reader to the babeltrace instructions<br>
themselves. We don't want to provide an exhaustive list here.<br>
<span><br>
> +<br>
> +You can also build from source using tarballs or git repositories of babeltrace. Refer to <a href="http://diamon.org/babeltrace/" rel="noreferrer" target="_blank">http://diamon.org/babeltrace/</a><br>
> +for further details.<br>
<br>
</span>Yes, just refer to the URL and be done with it.<br>
<span><br>
> diff --git a/user/tracing/usecases.rst b/user/tracing/usecases.rst<br>
> new file mode 100644<br>
> index 0000000..323fe15<br>
> --- /dev/null<br>
> +++ b/user/tracing/usecases.rst<br>
> @@ -0,0 +1,77 @@<br>
> +.. comment SPDX-License-Identifier: CC-BY-SA-4.0<br>
> +<br>
> +.. comment: All rights reserved.<br>
> +<br>
> +.. _usecases:<br>
> +<br>
> +Tracing Use Cases<br>
> +*****************<br>
> +<br>
> +Following are the use cases of the tracing framework that are currently under development:<br>
> +<br>
> +Function Tracing<br>
> +================<br>
> +<br>
> +Tracing the entry and exit of a function as well as the values of the arguments and<br>
> +return values can prove to be an important application for the tracing framework.<br>
> +<br>
<br>
</span>Why is it important? What purpose does it serve? (Debugging aid?<br>
Program behavior comprehension?)<br>
<br>
I suggest you devise a templated approach to describe these use cases.<br>
Something like:<br>
Name<br>
=====<br>
<br>
Brief description.<br>
<br>
Objective<br>
-------------<br>
What purpose this use case intends to accomplish / its goal / user's<br>
need filled by it.<br>
<br>
Requirements<br>
------------------<br>
What the use case needs out of the trace to accomplish its purpose.<br>
<br>
Example<br>
------------<br>
Like what you have below.<br>
<span><br>
<br>
> +As a start to the development of function tracing using CTF we can work on the fileio<br>
> +sample testsuit and trace all the calls to malloc, calloc, free and realloc functions.<br>
<br>
</span>typo: testsuite<br>
<span><br>
> +Along with the calls made to these functions the trace must also capture the values of<br>
> +their arguments at entry and the return values at function exit. As an example of an application<br>
> +having the following progression of function calls:<br>
> +<br>
> +.. code-block:: c<br>
> +<br>
> +  #include <stdlib.h><br>
> +  int main(int argc, char** argv)<br>
> +  {<br>
> +    int* a = malloc(sizeof(int));<br>
> +    free(a);<br>
> +    a = calloc(1, sizeof(int));<br>
> +    return 0;<br>
> +  }<br>
> +<br>
> +<br>
> +The trace of such an application must be output of the following kind:<br>
> +<br>
<br>
</span>Eventually, you would be able to show some actual output. For now, you<br>
should try to "mock" the expected output as closely as you can.<br>
<span><br>
> +.. code-block:: shell<br>
> +<br>
> +  Timestamp1    entry of malloc > argument value<br>
> +  Timestamp2    exit of malloc < return value<br>
> +  Timestamp3    entry of free > argument value<br>
> +  Timestamp4    exit of free < return value (null)<br>
> +  Timestamp5    entry of calloc > argument1 value, argument2 value<br>
> +  Timestamp6    exit of calloc < return value1<br>
> +<br>
> +There could be additional coulmns of details including current priority, task state etc.<br>
> +<br>
<br>
</span>spelling: coulmns.<br>
<span><br>
> +<br>
> +Tracing Thread Operations<br>
> +=========================<br>
> +<br>
<br>
</span>Here you would instantiate a new use case template and fill it in.<br>
<span><br>
> +Real time applications inherently utilise parallel programming which entails several<br>
> +tasks executing simulataneously and competing for common resources. On single processor systems<br>
<br>
</span>spelling: simultaneously. Please use a spell checker when writing documentation.<br>
<span><br>
> +the CPU performs context switching between each of these tasks rapidly. By tracing the creation and<br>
> +termination of tasks as well as the context swicthes between them one can possibly identify probable race<br>
<br>
</span>sp: swicthes.<br>
<span><br>
> +conditions or complex threading operations.<br>
> +<br>
> +A sample trace tracking two tasks Ta and Tb could have an output of the following kind:<br>
> +<br>
> +.. code-block:: shell<br>
> +<br>
> +  Timestamp1 taskid Ta CREATED<br>
> +  Timestamp1 taskid Ta SWITCHED-IN<br>
> +  Timestamp1 taskid Ta BEGIN<br>
> +  Timestamp1 taskid Tb CREATED<br>
> +  Timestamp1 taskid Ta SWITCHED-OUT<br>
> +  Timestamp1 taskid Tb SWITCHED-IN<br>
> +  Timestamp1 taskid Tb BEGIN<br>
> +  Timestamp1 taskid Tb SWITCHED-OUT<br>
> +  Timestamp1 taskid Tb TERMINATED<br>
> +  Timestamp1 taskid Ta SWITCHED-IN<br>
> +  Timestamp1 taskid Ta SWITCHED-OUT<br>
> +  Timestamp1 taskid Ta TERMINATED<br>
> +<br>
> +<br>
> +<br>
> --<br>
> 2.7.4<br>
><br>
</span>> ______________________________<wbr>_________________<br>
> devel mailing list<br>
> <a href="mailto:devel@rtems.org" target="_blank">devel@rtems.org</a><br>
> <a href="http://lists.rtems.org/mailman/listinfo/devel" rel="noreferrer" target="_blank">http://lists.rtems.org/mailman<wbr>/listinfo/devel</a><br>
</blockquote></div><br></div>
</div></div></blockquote></div><br></div>