From 7b25da7e22904285fcebf4f6a5c090455fbc6962 Mon Sep 17 00:00:00 2001 From: Leena Miettinen Date: Thu, 27 Oct 2016 15:30:42 +0200 Subject: [PATCH] Doc: Describe new flame graphs in QML Profiler You can now visualize memory consumption and allocations of functions in addition to their time consumption. Change-Id: I1c36019a5e3a161332a956a4b2d4aa833ea781dc Reviewed-by: Ulf Hermann --- doc/images/qml-profiler-flamegraph.png | Bin 23498 -> 23750 bytes doc/src/analyze/qtquick-profiler.qdoc | 18 +++++++++++++++--- 2 files changed, 15 insertions(+), 3 deletions(-) diff --git a/doc/images/qml-profiler-flamegraph.png b/doc/images/qml-profiler-flamegraph.png index 23c6558028f9efb236938890d7ba3beb5745b52e..4e6c694385bd487abaa3249d032a67070cec306b 100644 GIT binary patch literal 23750 zcmeAS@N?(olHy`uVBq!ia0y~yU^>IVz<7s)nSp`ft09jb0|V2q0G|-o|NsAAyLRo5 zqT-V$Paa81{xVkl@bSYhD~*nhjvxGd-=Y}oKyQu3d++$STRuPTCnlm#9t3;wp3 zd?hD$_T0H+$Bw?>=K5r;@J3tWv$g0;X{r17?|*SsdTt?l?D&cQp)waQU0Sz%`7cB6 zEnBuao(+0$WBUF3x05GN?BBa*+p@(kj1*tKeEHHz{-&wHq4{%Ozj^yGKKPTAO9eSs zQd1MzSWEbMp6PRC33BJLvfjCK`@q3NlLfd=s`J+i39R7ecpT-qe@g%H@{)_05vTf! zk4z|kmuz}fiSKG|^4~nQU@?JrY;0G{qBhC%Tow`7#K&dC&Q`<5I!}b>k-0&;B=-q1 zzD{d=M#%BAaMed3T?H1S86k6v#=cAy6K+3-!4tDJuED% z*KM7xAo1(+o?T039__3R^ebDXDG?DFeN$Tcctg!AEv;|syYD2&aq>xBWo2=5a9%4W zuE5FFBO?ApTXL!bcT-biZf@=wY3anctc;#@v*s$i>=C?49l&?>a7al!V7 zUaB)|Qmz^ESIY7?rUhK|_2iYYaCeWJwEobZGnXx8`J;-aZ<|w85bhuC?XiD-_jv<_ z12a2sM!Bp%a|H&v>QHm}pS2~wCq%zb^_pAYQmFdw z@1b>TmQVUnVe`pX=b5)ov8mvvaIP6Mn{HiRZ80{a8HMrbkRql4*@;x z8UF-5W?hi`J^SN-GtbRum-YOzd%bVZ_h*tN-zVR%E5CR9?5tAR#t6P^G8Rl5WfW!# zayMP;vp;|Pbk226-GA#}Y+dHt?zsNT+Rv{Ib^9VJOR^^3TzK{T*`WHK1;>nU7|!-v z9@+a(aHehMALncR{TJtJu5Qgrxp$}J%-$*XbsU1WHT;bGewDI>BR{3r6v7|XZ+@0`upC9IqJ8uQT{S> zlMQagXV(6APP0Ck{6of#DNgNJ-+lpK8{Na_PrkXDVdD9m_n-eaug#l3JTonQYP()S44Mtd)Ib>CuAK+pdfU9VUmFzrN}<-1R;M%AC^ zL^Pi-JEZ<#uX4y~kF?rotu2>#x^wj_6;IlK;QO4~j|()exEbyK8h)qwfnBQB#JzWW z<`=mA?)fa2miJ+LqIq+i+~1xvR*Mg=t6ybwd*@?ch7vR3s>rmSrI&Abq|H6~8Jc+9i5Rws>NmgkuR%LR&B3UVrJ?reGUIdk(&gNK`qoHZ(!7?oG}J(**^ z{i(w|Wg(OA0{VB)9OZf7Qg?p)AJ;vV&GOH7%1nx!+LL;Xy|X>|x$2S=9$~LO-SwDV z9gsCy>9b<(^7GSf<(;asnkE@#5V`Wqt-#c8Cyjp`H`L!OyV+iIv)bN`n#E^c+D*8r z@jUUVn`@Pfmd&1{;89xnGy>E9XG3mjma5V=n)?a#gx29~;x$tqXY zCjMueZoGMKw7(GlErrO5a&d~AnJ-IzJ%4YOb={Y1G8ud`z6Q@+s8{{qmkryYj@LJC zM)AIHd6Klu=%z|lit41469;pfc&=|&(LH;Nr&i$7QU9GzbJpBBsL!f%STHL^$9Tre z-L(rorKlGCdT`r%0n4T(9V<`psJt}kx!>?|S?Ap)tY3;}t1;LyS^F`+Ii@^Yt>K%* z12^rnX@4Kjo-6TBW4WJ*%(Mpa{8=~3rC9&y&d5uDZ7BK2^NZW-WiKzj&0#QR?E84& z-$ea`jd?qD8MSUOx+ugQNRlyeQm_;CNIP+u#b`N zx6~xbkM^HuKHq!r)5}QnWRJ8X|IbW&zIpqD?$YBzr_b<3t86}XBdg})&FF*~6D{wb zPC0bMhVxTTL`cNE$w!d@ zYdvF#bk~{per(kn{cO+uux>1GZ?v7rsWSUWZ4>A9W}i1{8TxYRbId>X+}APMsp4}g z>Au(8mKnnA-yUu%j}|-jw8&P?SleOu>r*LCf7WG3Ppq`a5#r`Z;c0W88kw78`oU?T zfIY{q<{Z_eeLbS9!+7t1E+}!;4N!^_@pxXG)MeDztyO_8@o`Lhl&a=Uc@JGX-BUpX^DAlZw+dUV1UZZ1LiQ{9(5@1mF3i`sCQW;|Z5C z7D+tapgI3Y)w&e1O>|+|;&l{#%p8mr#sWP>4>zU>E+h5$hN zRGX1z7yk6M>q5EmUysgZ7&5L3W_sLy)VGn-olpLWWIofbgL8^Xxh7Sn{!}q~U$edb zQkTrz>-G27i+8%!{C=P!QgU(k^Q)UxBrBYr?LEbMv3C64!)gjM!>373f4@H>`ggvO zdinYKe9yFEkrcgY-#_o}IuoS6fA{~AlV7^ZXM`6tpINYl_s+GB@~$(Ro>cBCa_3~$ z;XB3WCwcPC%C4?68+OcG-fr}{)HQ8KmfKWGL+#D7ZvQ=>MLn+CKkuwZ{Ib{XYh#u_ zf6uR79Pw&O_D7zOyT>g*n*VxOWhl5oZKi{IVSvu=-&23@*(q~5;`7d&9k0JMo|$0s zs%go|`|N+EvI99Xgo5fLW|lgwQD$qh{P~L2jPc~2O+MV8)1&MEiO<~2IqTVLiL1+A zrmfPtz(3u@|M{b{eCO3(r0qTBzCqo9?dY|+e_T#ZTjHs4&U4n}Yt{k_Ggk(ivk9|H zY@56}@L-1xv;4~$8-0&kb*cqU&1wJe;HB4+&vNSyO+KzLGkp5WJ@s|}t{*@7r)tmB zkG1B`vlrT**jsd}V&0AuN90b5dprw$`dRb;_A?EE%Vodv?E1>TdiAvi+x{?i|NjCi zpI?1icqYSI`sAJs3Nt63@n)VRd2){ln0a{lw3$LnUc8tV`$Jy(rv1h88;2TG;w0?m zZ~nPHe17`3I&&*^#&*+3QxEKUar5oLGX=|iCT-?EP;a`cFC|VQuJ*zS?<*_I7JCTj zOgvO}V^7Vyj#TBVuP1DA-t+!YjqK-5Ip-WoBQKiXP+W95xOm&DofmU6Zs)Mn34Kj@ z@6#2=8L?1p!Wr(vt5fgYwrj|mb7x&l-tkp?xpu!^Z}hL|bd79L{cEe&t(W%R+8ZEj zv@_wE&O@m=E$`C!q!Qa7-TYl){C@v?0jHIht&L~5Y+;br)M7fh$Dqb&X7UBLSjG(2 z>DI3&^+lEMZ#c8{>teCre;sSKm&IOoI&;D5*s^~?pBvAVaPe`M9$`$)`uttMc+xqy z`!f%PuuQ5<{ISGnehb?Lxt&@jxpJp-Y_gVaPh51<`nsRd=PgE`HQ$%cSoXTM?c-^q zRrK?v9Q5X2Oj-j7v=ptSY%%@#Zkt+KQ!T4g|KTcza%YyI0S3YMqJqq?C6{ipsA} zI;E;xGRZ*D`jKoaumw^U8kgJ(<<3Wt6=z{fgzky$9eCSadMd?q=9Xopa~E?cANGEi7VyDl@+!V+rJ3QPTbMf{q$Zr{Sju>^2Z=Fn z>dc~yjj4<$_x$NeS!Ts@VS{G#+>hn8zm7g_6I4v*lb9#4&s*TsC;7xsE^VP_B43pg z!|u9qO{)Ak^TeF{yc_2wD%x@KrlqD;uTyh;GH*iV`IBl%WWCs(Ue)8J+~*Q8b3GKcR)l# zw=8sLK%ex?Ybzhj3{5}rYq6(QYhrui#Ga`q5BT#4AFvZsF@6+k^#AO=zb$G-M;T?_ zFBVq}w-s$#c)=vR`ook*TX$}2|2E~Z_1Q%JO9IaV+7329vRKq?VDZXA`JllO`{p0( zS8Uzbu~qkyQpAmAa!G4GifsD6@8XhoTOytQFZp=>eK(Jlb=vn2CkVpvZQh8M0M%z>$BZL&d}RG6zZpR&VRDK zy0N17&&28n9E&1L^($xcv6kuYxwmYxRE6x5giY*DgEQcMP+b z&uGgen6b|Yw>Xf)XRyAY;igPN+(U-VmIwA6VoWP;sBHbsygB!F-<$8-ozC3k^Dvt& zYCGp@Ur$-D@|$hUkKF@qdzB*gs}TkY%0s`aQcBaboe;5-d)Z>FjZQw~|CyKh`0 zW1kqQ`D{ti(xtOEa2u?z=RR|0M}XRl*Ic^6wzKy6EdOJ-$#u!=BNC~9`ThoF@@CvT z_qs$o_Ve*MCsr&!XAqoMJ*~GhG}~pH+RLuSo&UU+v);YW)A>*0*KNkM7xKwz(&AZ* zwwTKHZ&`I+@MB1EkIY4j=d#cACF>V0sXnA6{Cc{~;ety)l$EuL>}M9QDw19~r~BuG z{o0ZfOavDpR_Jb#{m)8y~qQRP&Jq?5m>_R8tc8=Ff{dm3#l8v|+ft z_S|`CYwC}k=`Px{fFmVi-_wxeKOZDrxihW&laQG| z9}mu^Kl9rix!Wf(k#EX%&Nnd^uTA`(YZh2%A5^k1{$%R0M`v;}pUtbk6n$XNzq`rL zuI}Ofn4}#M9%&|=s5;f#YvU{ zV^ew$&i}LeK~7NZ^p6!wH|t86vhP*gk;ybe@xY&mhRRmvGtU@4bFt4j%lJ%`&tNus z0{K3pc$OO*``xKhNiunh%u9{-ICcM+_`t>TPM7$X=kvF77~~gypAo38CBhVYeCJdf z|Eg6hT@FhXSzM}laQEG}d514Pk?kw4)-WhIvPRJVV&Uyl>x*ml9kYCW{P&^>Q|AA_ z#*uLEN!;-{$ttE=XAH%cEzQ2>&vx9Rub?#=QTq=6SpN35o#cMQ9}6U6dd?ac zSWkH_|D1D%xs~v<6%(x1oHJDCKd$e6*3aaS$lWKMTc@vxQ$I8}!|KsaFS(+QTer&f z41#NA`c4Sy*#8#bIk4y8U&-R6KFd>a$Ks7Lo_l%Sk4<4af4uoOYva{>47u7$eNFWJ-U7+xPFgeHZ;U_r#r~|Mxi!oc{}aex%m1(nD>Z^vN3+ zl>>KuXuq-~=bz=Xzajc=eLfTSzrM&|{H6c-*%@~~Y=~NW?&h^To6VC0C3jcnrKqnz znYPdL^1Qw6*I9qR=}qyzaO>@p6*Kc5%RXuSXz)$BWNql&6?Q!A7nK>)UffSyHc9H5 zMRec6x1DX0dM^_Craa6rO#2lH9pYpRWdaFP&JD&qYc<`rzTWu~P87*e;pG zJ1bUd@oDd{nDo0hq3c^}jOo#8o*9aZ)sM{a>UsP3Mdl)}((SYUL@N8XNt_L5;Nd-P z*`}QQDr^0$6C&%62`r6XGJ8#lb`giFYSam@%*R^0*4<0#&t4S}zW&u07r7_SUO7{4 zihkBSz;m|B>CES+ZIS0io%B!LDDK~RIZy1=(xW-C%QjugXW1;l_bJ$Mui^~br8^A0 zlzT6fDtj3GzFhj)aANF=<%znpB(tOr@4Nu=X#BjHtDl^CW4-3qef99u`kc=$$rP_C zGn<#JS91A8$lSe(Gt@8n#@-5IZTcBBg`bbBOW@Y|u)IwVS)YmLsV{PqRCg*!YkOuZ z`fS^Maf!q#js5y=nJZ>Dg&oN+b;!20fIi$}X-%M+j19DjT3?#o^GOK)>q z->nTlD0}~|=lgd@CR%{JpxV=A@{>`uYOv+vw##a(VDh&iJbB_C-$D-#XPBXXy)Y zC@sEQtG=j=DQ~*1$ctl}k2|`&{JC_dD4W6h`t@rsXa&@szaOu*L+|I6RUfq{1a&*E zQvaEuxb#=3CF=~v&;MsgZZ6w?$DsQ#Yv8Ofy&G|z+)y=FW7^{9^QW?P zX5HV>YWvPOLdwi3z4wZ2T5(9djLVV`?T)HkZrv+w)00fKU%JkYunCy<6W3_ z`QVAqT|OiDN714}wzPd`M4CS<7C(E{$s;+(#qEfwT2N2d z7MVqJrhJZ?mqwgv|94EM*IcV-wk^>=EW=% zyqd@oQhoK0c3RP&OslEoOHVA+t9x|%$V$1JhuLEmUgnZPNF<;rX>6cYZYZdim1- z-He|ve>=xtEni>s<>hkw{M!BBpDwSSUsLqu^l|TgCWG}(4Uz`yeIZ2UV}s|1_I5Q~ zGd!@zaYp4u38U-%ZW4Smji>o(cO+U@ZHRA|;11!_|NO|Nq4Kandz;i@%k&wQcb|Jp zmpdCV7dbDH^m6$-v%BZ-i5-nXR$qVhtaPkh{(P^`g&(RN3tzkS?tL`9;-<-gJ&7}l zqtpcZq-W?)?MjxqH*=ca63^Fq@2<@Q}a&F+!>tpDYdy!!*E`5-;(u`kv8*UjkV`+ zU%e^8KZEgeaq6)%-49I`DT(gAxSC_XpW!~o>k{T}I}UBTv`}-}lntdVh1&Dh9LdtU zesD*|?BsJvJ=*3e+Pg0pvClAP`}~W22IJ>lDVz6ytpG)X!)>wK(fuH?Pvs97&NNio zZnD$?Nw}JIvl=iz+xp@F;|#{nRW9oc89uiq)TN*Oy~3K`ZdP>tnf;r+w_EVC21>NC zH%nTt5Ona+U} zS697bW6r<6y(n(l{IWJHp07*RTz6dCzIu9Gc6WL7mAHQ|SA08J#Q3@G_2G9*?#!^i zu`~I~jz$fJ!|Vmq^;#>%1JVtS=>@Tx-rgl4bR)@Ie@Vbfy9L}lLEHB}oVxR@$jQ}5 z&j@akbWPG1I3fH$enr4v!;CL&KZ}n3`BC+~LiO+C+joykpSfU&^&#sX2~;g(FWg7 zy2L$GbY(W4vA3*w=h>RHhMUFQ&-7;2RA?ozZGJ9x=B#&L^Qp%3JO}`gond`7a@wXw$uoAVXISg1o=H+tYn>{2 z#&7iu`}0cAP1JV#FB3eI@GbJFOqa*<1h&oZwVpkNl^$uA*Bc&bZjwBc zw|d6$FjLoT5W8;mjHAa4W=Hg>P24Y;P1$_jal*G-y3hXoCWpPXAl%9Ry=ma<6}#ba3l~l%$ed zYFqi`jlb5+e0FbkT+#cte=X+Bn>i=LJLv3&`QI|Pe?GGRYU|fC3Y)j7T@jFKqwx63yEPI&#k4 z9X^5Y?#ewo`1bnA?83iUX4|*xOFw=3b^aaCzL>uUJ8eID7yqw1HMMu+neFTO3%smu z%f9^acJCvPs&%ic9iQ!2{meb3b>*5f)4dPJc%_;Jn7!YeVz>FB`tnK2Pv!Rr8pZ1_ zw-Gejf7{@Iy~DxVDy~P=zrPFe*WiYj}G1I%|#Kg!QGRp4H4$isxVYgy+TEiK`Ri|p!ooy|Pn)Wzbq4+~1 zd;0IsmfJ7OPn!9k@yhbEw_LS%-N?PNII6nMydmhEPRTUo;+=WrPTP5mj<3)vZdG`) zbICf_S&r5<;eYS^vYC{&p+nItx9QQvt^(~}sVUP^(+)jvG)cBd|2EC+&6=h&Orfdk z+BjJKoP}pTJ`wZs>8UqHN8FF*M_r4U$+~o*=j1h3#wX@HBUn&I}Hjy7QsQT8_ojo@Pxjo*j4jk=^vQ z%lAIKbcc2ItK~+<_p>f(7N>{ZZs=>_8{#2$vxb?UMD5G z&TKGCP7;~6Q!ubL#Vm9AfA+AmiGk-Ewn|Q3xZw=9A+v?j7DLyRW0|(jdS?&b>WK-N zdh_!onZ+lzO!!&2K0VFt*`nuyUYD=BT|Upiw@gxC=J5r~&g=;7)e_8yuOoYWA7AJTu=$qCjrG9{Y+-5DQV41Ef;=rNJ;CT%$Uz$*>$QXU~$s+t+Pxtt*<@5 zZ_C`#dY<_z&ki;N`P9@lNr#EX{Vr)MjGr&waE8%s&TNR7d;l$&+C zRH<85&c1z;i!1Z|l|Qs@o>$oH;5*ZH`stXDTJxSK%clHGaEp2NtKDX1v|!fJ>9dlXp1+=**p<8B zszbW7u&j<^_khd?P^a!LNwnzC8PdtXARuF zi{0+#eRD`_oMluz*YFTW=B2C!DMjs*`)`(}`Pl5YeQnxM(-S)-2y(p=puPb~#t^n!71xF~-(sJyONe&R;iA-m>`O(Yz;4 z-qDSVj23fkmA}cj?skaq%=dK~6Z78jR@LnG3_N60Yka21b8_@EHZ~*fDN`+TeoDlD z*tqntlk(xEv71BQKh3$nd*c1< zbMZ_wgGHw9Ok_2mJApN@!m;0^`Ks02^E=JAevw)4HhF#8>)8|M8$UjkE_9H$ilyt6 zk8D@%@x$VCJevQVS$ZjbvrMV{^K!LXeIK4*uOHUEU4{_D>wFwV0z+HBO8&7jVf z@{iZ({?^@p?`)NP{_YXC+0;qBlE2apT)ip0aLJh&0*5#b?mCeZQoVEH&DTmT`Y!g) z#$V1}XuYpoe0bH|&99#;t?53qwPxn)+I@AK>^y_KS&yVfi z%x3qz>XR{5XQs{TIU#e$sqt;wj7_seVpEJ=(#+oRD#U4RcYZQk!Pwn%rl23&v5x$R zpC@vT9hs~a+5LHSZqNSzwjcB6?UP)2x@cD75%DdDsz7NoJ1kw!KGVr?lHs!Vvl*}U zoMf2!f6E!8$FI+1CY;khJJTT3h;PEr{!=+ixVm$f?UOt_Q8J4636s(PqbF>(p3z)+ zhDqb>(}i=+On;xgXw8}5@A-=@r~a(tJH9DJ&*T0Ef0>(KKOeAF{MMC>@B}3`}1_-%<%uK-~OLk`S#R)(|^5ZvM>8itNeP#DBrJ5<@2*2j7HjupHJ;y zS*-PWn$OH~z7u=$&i*QWU2pfS|4er9%<%5xK1Qdl)Qy%~@t@XN^UM7)$fUG)H+R`v z9C7|5Vri6rvg?d>vGV6#_vL4X`|E#B+sCQab7uC@cl!08>`(vc-SfG8;x&%P6{_xC zspmx`Iai8Z^0=pzp_sKZ$zgAigTeOaJK2A)6Ju=dEfw0n^;Fr)9IRyJ2aWC(byW+VkecC-MB2 zN=6ZLU-y}kOyP%ptmGSHo(9gIS#a&f*T?S9l8mQ6FP5BMn;OUEyZKjxm_*(>mcG^Y z4BPuQ@BLf#`)ez|gL;#YgZjecG`Co>*i^B9i;bL@FFjK`V`IvsXDae0N*lDLXLQbd z`0M$bE6p=kKWh&;XYe{Xby{1_vrzG8e{U6*{QB7#*I-#9a(iVWpIbtjNOJ14r?pdO zewn&ccb-I^ME!BW8ivc81JZu`|L~Wa-nr)_ktWAt0iabwY;_*G4NjXNhdxiEiklZ zmPFUIZ&PoEOqpS5>pF91MG-^g|G#bq$2SM2IsRtxopXG?&woR!;?%m(vrm6-57@cB zrLotJVJT-?+p~N3?nyGAlDYNha^d>7?@DhSSfjE??5BxLgJjp#L;i^~=59`SK0Tq# zZ_-@VHc7c|y)#Wyx$7*irnPl>9^R(sDDkOr`?-T5lO+%AxnVG4^7H)E-6mQo#_J^t zxvy2H zU0|;M!JN5EUzjj${-=K8mx{gdLz{9#nazS19IBNrCH+}&_slEi0DITxJ9_#qzMOsJ zd=a1V^{1+@_r#xmJDqiRe%189XI8&sUm$0Dv*hO!)zfBYqVF0Xs%3xX^7%_*>ONx` z=R*d&e;r(*cW@80w2f@b%sVXS+tWW3_;oNSeY04bA<+N0`HRcUFRin9R(|TSW5{1+ z^FQQd+PwPe;>pisp0SEwDi2RPWRUkovMRam*+-5CMbdd?AO4n!mn4WWt1mPWSm<=W zb+VK1oKh2sb8&2)H{vp;q&-c&9y4JnYpLq1ZHZ|&o<*7(GTkuGNNnL3GHH@iSSkCi zVCC_7Pj}ut^H}hJYRDHsjvIU3yQl12S35g$)}{+D{5DP(7MIHX+WU~Nee=Q%udUb2 zdc4ol=w#Y6_JdcFPAA)VolxB&UL`r>%=2@{&+OQd)hF0nQu_5<*-5K{N3N3IZ_ZAL zknLl5RPe2O&Dn&;96uAj^!<}E(0zqiH1$1+d0O|=y_ zeysN2WXYL3*AG~oP>a}mQg!xa3q|ba^S|KZGPWl zMVGXfb?2?fP^!zfdp(me&2qhU(Y&cLX-iJ%-*56hQe69idsEBpuU{2nChXjKsQS7) zL;aN(Z}+Ob+rRH_{a@v`8pRT>)`jA&Q`Gu)m&$}M@msRv@F^LVg|~yA8J!I(x|!zp z$mtfVr$hC+ohE0!*gmAD%6*&7`^%zA=yref_Iqk~ON(9{-MJ>6ZN^^V7|#+boBGp< z&lYvwm0I)k`}$Aa3bhN%j;8Omdp^J6&$O9(x%q7-2hZ1}H%hJEZMru$SUpGk^WJ9} z7q4|(Yv23mtKC>`C03}E1!&|JLCUapP4rAMkRlmDc|4YnP#6?&+NAU z^TEQdpxxeO&SpEdUBw^RjSY=;-iE~cKEBu!pHLThr%m#iL$T#C*>f6QZ6?QsY@LJS zf9yA6df{Sv=A^=z*Udi!TECq${>FB9-DH=$nT;!YH8$tnTb0E9EM&tePJ`zG)ds(( zKB%81z$nvOQLt$DEuT1(UFt`Elv}+Q%G-J7HM2lM-8$9QUlM6N>bsRzRo>Tq)g77m z)iwJqhc9PXUXPJb=9{w(#gmM(cWRV-a%Ie{pFCIIAGp^qeolSP-5HWa-t84~W@V&q*R^~WN~xL)JTV?l>?hhrB{yT3jE7*E0uX|?Uvy=S!M z)D{=7;(AnZgcXKtK{$eY@$cJJSgz|bo3Es6gM zH{VQA`XR$t-QC2xcjL>yZkOGs+|*l;G-EN>tJE3I$%?L;SKd{nDb|TR(mZuX{o^Oy zUGg!9d#3FA9Ta`=`L_Hv$?~Z?86x8%mbdr*o6WpQCo9DK;EgYrT+Hh>U%H_GVq-($ zeG!%87d{^`pWpNK7=vp3&6Nr-7nE$@HFxK)Tl!AUwyM%+4HDDbEKXiepLOT9qU;yr z{KY2~w5j5Jt?{}ujBoV$obFy+@KxY@Y-zsz{C=bTVnO#xrbJ%xbu38wuA#ri zM}W&VH{o34mDcp*&y;@jni%XpuGGbp1%{=X7_^u&p|ctfC> zTW$}>{{w&653C6>J@d?~z1=d@ypH!X-yu1-Mmx>*eGFZvcm1up*~_r2;NSi!l@(X# zOiA5Yts=8)s{Z%b^KX=oeDyY)>6^PzXSZADM>B1wOFE}-L>Ksaa@A_C-yeJK!!MgZ zXV$Cg-M)GAf=8H}i|N|j&bj*B-|H4GTf}CtdaKd%Ydbe+J#?L^8r-F`|Hk|qr`=A* z>1#B+Pie}y6}k3I=GrrpJnw8O%!rxEe1ah_Cd)p@+Ms>c?p~o=%PblkPE9b%ch)#4 zq|bO(f+fH4=9yQYEOePPJi_L@JUFpiuX(4V&{V0kM^AG$C34-pbl}gTvyEjb2HDS_ z#UJVO{r%wd{y7h({aR*VJzMhd8Q+Gv>t65ooV4_Rn9HoZDctTGMHP&$d~Kc{WZKnv zAU7?xS7?7lhwI%HOP82!imliiR=DbQl<3P{iE0VPhtEvjVki91f2SV%gu{PYuf?8U z^X|ynrQ4oXu6GMF;n}>lEOFak^TRba<_MfweCo`H->Pa&d#uG~2?+~ndA*w*$m8!3 z^8aV*k6VG)KS`wt&r+DiI`fLBQ0yy z>^j(g-;9~jdp1U5UzyRCJRk0oXP9xfV(jAus(Fg}|x zDTE_{JNVymm&SFTT$f@Jog6tz9!yc)o3Our?flB0lNa4tJ%9e2+w=SX$~ZKH^H1sB zw3*59(}KrVY@#nW%q)DaYb~v=re0*Y@M@UZ@H&N{HoVGJ+>s77m7qn+EA3oQ~aMiF!#B1N3CElu4(-u#bmR=cpN!*wJ zRpt>(^KGZ~rf~;6bDoyIjN$yV&D<+iPW{sF|7`Qc(6nol9L~2a^C*kqd^>4|a<%-y zj0u8?TRJ3Xmz1&;tY&Jw#oXdoS72@6&d#!K%;PATmwLIZ@y;$c z$pn4_^{(|iTBRLz9WgeE+-r{Xx@ZXRO`O_%rUV%lB`!mlDmD9`xvc1~kA3nC-`z=*AD^;zRqs5UBlBj` zF}Ig<_|$(YuG8ht`nl6Vkw-INsm`qY!-syjWT&cyS>>l5%j&x9fBU6>(1K}ATdsZC z(IoACz5Xn7?0HrF_IAI=R~~qVzsdPgJM~+p*=Mfy%~uWntm)$4CSH=rma+X@^VU!q zQ=$1H-`!tS^gX?CFM(yk!96?Jo>jkHFmGE{%76FNeJl6ox_W+E!;--GY>G$a)YDG0 zBxlA5g#`!1Ftxcqo@KoGmto@9gcQx$0Z%Sml-yx*I_RL!LiOiG6OB&qY`Cqkn&tY0 z)|omcNgIX2PP?x;Q=|EO)9y#}W-9Pb3tGT<=G*C4+^@vLBsbXKI-q67HAU`foP_TV z$<2GLn0_c9*b`qTf9rPMEs;>>ZEcpFP6gR5O0RR~YAiWCQ*9CV^=pr6KF141IlG@- z`XE8Rd!EtckbQ>QM!8q-RCs>6ww7~6+&txDEPvJBKZs*w`%*KdvZ6lCNB;GCDUD?%Jll0a@#hxSeWJpPsNg`AnKzKf|X_KRw^LGJL=Ft}E7| z((d(_1t-ITlP2HldiU+yEal7PjC(5_Uf$vJJ5>Icvqt9cvp0XvNTj7i7QERdsrqJv zml{7;jFkTJ4Ef0x7pHXXG{5O`sC@Fln9qBktqXqkZr-;1yO*{ttZbYzGx*at4u#BD z`_pDQ{B2+^kIQ?ujq{A}JpO}cDw1~;hPKK1XFc5>AT>kPR&>X7VG+x(mp+8Vw?32Q z)2r_1{@diUd1ko$7x6CzsdephKL>I>*dlXaBiHc*9{c=g@-VEQH@$ZPzeyV`l(VwHfhK*3c1bOZYx{8e9n>22FpsdOq-@PK~Z zjRgL-1^gX4M@^s6aoIURa=Il6{J%iIv?xp{mrDczW zc^BWGarE5Ji$B{Up3h$8b9vH|%GR7`ajQfU)tz>Clq{a|rYiN{I~7(PKBq|`1-y&D zE&IgVGmE=k^6!aPS@y;vx&NC5FFmzeQk#0O%};>EbCd6(=G~#W?R^J$QnweEpB6il z8MQ1$Ce84qmL|s~C5t7oGgcp0I$!itYPRHZ_e9U9efhVPb?Ka!kvb+q zJ*&jhUt}CN>gE5po%hV#+;^VZPhXn4FA0xhFRxQRb3?mbc;CBQ2M$?dIQ?1=YLx>{jpAI}IHJMX-&%Qadj{jo3`Bmj+$y_0ZBZ}Ni`B#rh)or@zozkGN(Cv1S zX~g94!g;fpI}-QxCrp3#q)hwUlt}Klgnh;@E;}v>G+J}!`eB`0l^Yi`e7@{?E7aE5 zS)aRplF{VGkQ}|W&a)+Ym&KMpsR`)2xw<&;+3XJ`hyUqKHmW;PznoJ$#!`9%=ksr( zS!#P?wrw=hpS?XYRbOz)hnOor`QybI|2zzTy?Ggn{W{UD?3*RBW^?%P-oBZm(6A}o ztW&B-qu737so-hu-%aMq0iw-PQ(dliU26Tg-QGns#Yva<_S-xfBlkNEifGvg2Q>h$%uECgI1URoj*(tFdLW5*_L;hj@1Ha#s%NL1j+ zcFexQx~*`p%P_M4T*I9+PbV%~nqS30r6 z$_?dxiQ7+ZeQvxv=h~+U=|vkZO}l2tyUf>dmbzwf>8jsTcHTXHHC-*2tsrBk+PekD zEPD5qJD9Zt&#vUk_`UL;%?!o`=_d>y>#W-{h5xJbD#k52B?a5nex2!hbYs)+>~!_p zZ<3$3*G`(1qQA{Or{%*EF3ru4Ew_|?E1BW=?nf!Z%#-&xIPNAHRlhd>%=~A^ywhuT z=IpK8n>YWuc>K&p?HKbOOOxxnLQVGSU14vZ*?#Zb!Nu!51s$$-8H+^C;`#jDA~*5e z;}ui3gndrv54~M$@$Jmn3Av|k-Ta#Q_m5CZWb?g?*|S(bCv-eG=phK&C{o8YSZX56B$@R-0?m7GH;ynLJ zj5FRmHquHqcABZlyo5c?GgVf~IJ;b;kAdy=-ObO~PF?)w@{8${-}(zr`hH%SWqg0u z-{0%?&NQtNXB6biRAbx2J7;d#_T%g1um3ZSl3|q$F0wRa7kK<+!}*vgKbw1dGW8#= zY2D@3eWh)Rq{d_;=h^HDcGoNu_;yPMuWHDOxBl5=^}}#g+i87)V=sz$ZP)LV?0$1Q z^>a3Y(PlmLc^eauirDWG-B=02JJ8h=X#8WF4U94Ta-umu~xEb9)%0C57xBk3ki?#pE z^4`36$Dc9$n)Pzx-L3ZuzD<$l-L;HaZqE5TJ+1rp*sc|uzCC;MrRlDl56zIga;Rdl z+{F;ynWcTwUm|ufZhwEAF+c0XeP7FlN$0En3C;~QXUbS(IMwv$#cjR)Q?6-g2}w6t zYK10-?EKRbSu|_&>!KAl({2CiWLKL`Prcgs)6*!b^+jR!tS>)~94z=!uus8QTI<~( z`wXV}l4dMFjtH7R+_kaJc*_>eJBss}FHZ9mJg}clvOKv-Ek6ECfaryK!E?tnl3iE~ zTC}3-%pV*}E%5Ztnph)z%vj3!`vIOmQ>qnFF^M6i{Z@ulwJ|XgOX2s{#OuyRq8ej92 z;CNh-9COP3aX?AIp$S?%DkU!pI%jy8i)$z==R25BGqZ7zZ)kN-C@Ls_$XdfG%ohE+ z{rY4#vkG=apPtb@y^l zNcukuoul~@E+(%G?>gO2`6t?uy4Blg0jE;dSC*^{@#+mb z9kVN@Il1Kj>|3)Zpox{|_R=JS9pVCw`Ck=GzN;tXHXYuieC$D#jh@TnTo&DKhpIiZ z4US%xdNha+lciOJ6 z5~|X@bR}79*E_A5<)?ErX7a0k=J0k(o2@EGc$)7N;4PulK1M)eztkL%+U+KS{vA=3E^}J3z zU6+|x@VZ^8#M1im@y9$GRmNpX4m_Gy~k|DJkm=ZSNB&0oyA zY0&MGXp;VjrT8$nwP~BV?eion-{9madOJcqzWw*wc{1iqsm$6wgVjyk+tbc1UQukY zUTH_&>?7F`%gfj9k2`nUHcjyCZH0+}=4sDf8~jiCe*fN;@Ai6ABoEHqpD0yi-n`Vn zGgyRotNRR5|KNFvD_7o1e0FD3+w3WkCrt%sWiFCEBkDhG^R=To+&jKE+|-|z^vphK z-J)Enu#&jTW$l(+*6+=q*@&IocIdR#m*Zz@WYdcNKl81tFJER_ZrB!^_TU+#@zw*s zI5t0<$+|wv>)VX4Q>2&aY!30CsnIpXlfBq7yLelXVRK3z-;C8W`y+mKSn}WQy1L}E z=XdGPzc!u`_`IN}ct_o{{+U0m&iwgz+j`^8eIFPN*8YmT&YXYN@Ny@P@O#J3)YqSq>*S0*{GMN(G4ua2)9IJb?!7(BImSGL1(5c71^|I;T5YH zwT_41{a_TZyIjk##`A_1e}gIG$ZhPx(oo!mUb+vml#V#8p!%4c6@ zYQ_l2{5rFF(u1?Hq7RQAH+%bj>BBp>r%QHh$!F!942pzvXX5?O8>c&U)m~Jb{EB7s z3N>eYCN1R_DIuv6&doEWENgGvGgA}(Ws`Pk>hapNOFk=$3?}d4s%0-Oe13W-N3`MV zA6DwBt!|$MpWP6@{n6$#uL1kt*Y*~3&IcXXb8|)ajIUGlKe%~SE=b0!`0So z`7P06#z`py_40W$rgk4?TJKTbBdOADXdK_Y)8@(YVJ(_8CW16P_7u30uKE zgV8X^E$vdut$Q5Be^?Ec3nsjKH1&Q}x?bDORd>+^~%t6!|J*0hmYnMOR%4D6g^O| zOEPXR-}Snk^UmAmhnCkpmo;Fo{BZ4iLeJeE>6}>>uA66O$9(&n)~1%3UVC0|zF4K=^;4PSZ!_mxN|ZCizb-dsC~h%nU&wW=BqDN|=HrMrBJ79H zomu~<^;%Aab;G@Hf9rmh@p-HF-T$7Zdq!NZ!tu$*&ywqR&Xt{$lxFmB1H&1emDykZ zJp2>?X72f{*A^nj6e})!r-zOc|0a$2Tt6I%ny# zZ*PtGzR0C{Em>$iYkS1Wi03!AzIx-OJSAd1tN)6Krb8F2kL)-U>>XlrAn@Yh137zV zHB9Eol9=b#mT2#mVX?C|$G?q5)%m^VnL7s*O5VqLZ}4I>XnSUL=8NW;9W(6Nc4;j5 zv;OjPgX~Fn)GOv3ydzlBUtm1@e9y^Rr&rGtjy-Pebjx3VW>#la@$s3g7eyBF>?w*U z4BX{BsWUFpa7xk#nbndTBAu6i$-eP;dCZNFo~5bL``fvvO7J=Se!NIY@?~vSqRG9V z9~ZP=y{`4;&cO#)m;Q{naB5l8waM z<@1L1D*`gtU+Vg9+N~nF^~0w1_gIRfjE-@3mL%*oIddt_%{l(I*4C+OWS=u#5UmX> zK36Sw&{ioewQ1(6nG*a4(fZEGsX`m&S6fV7;}mJIi&1ZWd*rdg?b*E(cV?bT$m@Ao zpyy+P94!g{NuR{GPq z>Jdh(7S7i$R*QHQZYllCJS@%il+o=I8+hFGH!Kyu;;1>ZRNz`5XKf1aO4f3N-67pK z{lXXp)=zR&kCr`_*z0Y}qP+R%28*_PA)IFn?ycS+-upFRVoCjs+du6eyyc3D)!|k8 zm1^3M$->pWlQXwXm*=q6o6Qc1y}>t>3txRqtk>3cl*&H8d#+UG(H7Pzfp=6Z-MfNkL?`_Yo}v13nt0;37LVq6`6iODQ|268 zv*KxDYRj>w(%PFDHff3VaN9Ag?v9=k5%5Il!rtDuy3%hq6iEN)s=oC0ky(k#sl-4x ztv#Rbh)un`)ln)+PVP^ae#h6B0mp^UaJl~NniwC+Th4y2{isdc{smuKkFMGGJN8^! z0lTqm)Pztb53ibrN}~fB5936qu+LyloO<(+Wun+rErzGdX3u&#;p(|LAspvC-Q2&v z2vqzS(0DEVz)rqPHWK|hmmQTQ+b{3vvg|P4pfkDUaIg9KLvv=Q-YYA7xXpM*Dj%=e zTX9))!vJaZXBoz~%H}&COE*~FyxppKX7h~rrpUy3lO|1hZuU5AbEvH5o%I<%x1HiS zVm0Gqes`D$qk*taP5))ylEuX{R1f6HbQYwUwOh_lP;-j-f6$D5u{w)Yhe3Jx%Y}EZ z&36LETCgoqwudiGaOYo@SDQ0z4y@solsO~W)*T`s zd~8ipT7u1-HwE2-UnOR4&UiYPc-}K zIwRWn;GFuG8P2k2ByL@Al{{!4H}NCq8He`f%B_p?*PeMB&R(pScX*Rq`G*C|n{sca zD=wIopYUAf*{r*bx{QL?C#t)CWiW2wHkh9HeroxhiBUIO-Kz|4#>e{pT7OTMc}A_- zDaM3-ru+Z08~kTg&~N%Z-#=kl(cW`{UjD_UUr*<_xgEH(=w4@%w_9s_&lTN33)h+9 z52d&@e{nwJDW1w)+K?;4bD&JBV(V84E!BB%7=8Dia#`hf^2N@ZJZ3*a*=Bk=_IRg0 zyd|f%w0hOg2lK?WciGygEc0PH^X7VbBAb@)KbteMOnimj*DLw@m=p4RVk9DGyxW@a zE$Q{m_!XfUXPS1VuX8r=)Y6##BzLN0lkyTad#8qI-vG^bVT{g>{08@vrZnu0_L+Tp zPvyfGHq3KoP3qk)^=_H2-vzNvl82UF+eG zH`!6!N^FZ9=TyN3-qTyp%*t6?QoMLe7^|q%owU6+lWGdrTDrcQ$Ru)+A>cm0+?I&} zIagSg^1R>+GT6+asFx(t*QM}W+HLxs2PeKNE0j!%lx&!0?4l#ReE(tGZ%vAmGcqdkjryEhJxG zsIKbMNLSwaalPtRWozlZMUJa~cy4%gD60=oDKJ9tL3qJ@l3@p=N{Y>Z8tZAg>{v9Lfq1R1M3I;Z-0L}Bd^Nv>`VXr)4$)| zN%L8`b9VQ}W2gD!%|s7BmcMpkp~=0oiEMp>FUzjH)LwK#B=}x)!WE}We5zHl$}wjW zj-|fw3YJgo+byQLqOv72N#{qi(Rvj}olQ24E}?D$4;Q)JUTn0U=g{6`KZI#X zRNr^nr^oBh`!pn6v6yjNy}P&hXvPZWX>YuPQ|~;8b-o@_w=hadqj2uwGtF^r#WPgj zaapxnMxAt@@%u!R(elKVA2QfBNG5)WxUlNx+J{y#wN=l;gP#3&chqi*H#&G{&cQos z8Vesd^|1!9daj7xVi~ts_JGaQ9p@6$4q3PEJbF~~%$@lM*E9(xJX^AU#nJtYXTE>m zY-4<9&dY=Uznr>qT%<2)1?;3{;3EwIcRxi zZshvLV|>$|%t}y;6@Q<2jQ7BsY0Z)662+byc>n4*czj8-IAGNRo^1@94QBu2*etUk zi7Vk>$g})b%ia7hB+od!yd*LC%7y%ihEbO-;-Aa3S{_y z`r28kptHNz-CkQBf9G0hh56JS^HPkxxMR+3mUO*->5*XCdaILZ66+AQkuk(lOsNMEbic6McK90El_3^Ekf9(JH7WDl8D(%o2@cqlu z&P5th{?}%m7R<8?XRQ5P@$2oIn?9+&{gS;AI+c1ek4QM={p?RLj@h&O`pw@mpVR04 z+N(;L)jR33hpP9i_%gGW8GMnYHBQi(83r z7MQG^ozL&zT=aL7=7Q@}EtO|Xy=L8h^MA;*@PKFPW{;CfT>c8kZ+){tSpZb3>@=3jU;Aq{^ENd*QnEb1C zljyIRmsT$Sbj#f|wAd@T%D%T!Esf((g-y-9xz9U1%4-Wvj%Mf0mfJcb=WNgEp7tqc zSjtN0?_4x%<^efo!?52Pv(%g~8gOn--BvSU=24^D8yDR9^f~pIYO&%>{!F*U&nB;$ zd3j&csfaJf&d-tW`C8C^W}S2H{lb+3H=cSfOXHgqStaYRQSWumR8`}b3@)k9yt2|Z z24{3Cl-GCp&7M26^t#F43#s?+lv_@VOt>ZXe8a7Rk|jAAT}Nf_T)5mkp_1pMO}uTd z7@yo+T|KGI20yfn=Pb2*b!OhiGmBkKI=;vKdEx3blTLJpHuGbQ_tC-{jA>L(h~!DlT#~avTi)%b~ff@;vdP`{0Yf#TGM1$qj>9G zf4{Z)Zk>BPGkXE=ucH_9mi;YS6CD(@Za0^!VbtB1OTuS-JNnaey-fZjqy2LhNnxrTEa@5()n zRTC7h&z6)u=an`;W5cGBliV}cpG$B2&uAKwc50Q;`I~Q6RcQ&{=5pQkCBb;gi$%-- z{%yX{IlFwX)C9|Y9)4frR+@W%oy>e=?y8qZ)LQyx`Q|KfQk4DFT7Gi#nLjf%ws!oC zN~_TMGq zO0i>~F4jJc3e#my_CB&B;K--G#))TjerSK*@VrZE+YUKl)xG_HZ;EbDKHR;-ic@9k zmZ`4~h3tIzi*M5o&Z#pub)9+mgNgknpVW2#&%P%AlsY8@Bj;Ltj@h<%7RT`_&z+hx zPcAyfqq@=7NYuwg_gTVTj|sB&t!FAq|L>U@n#6VX?JU(ox7ce^f4!>3B&Mb-><^URJZ`iCZDZ!kLF6n@C=w9XqYzIh^BUn+!K$|v$@&os#JQV(e9rr@2)nS;a(>-)9q(c$Iit*Ti;5UraU~pd+(*WYwq$H zv81zY3;(g`tV2KRHjgtKw2e10Gi;IkGoj(YiGPg_&%An1`9y}NDGG@zt+aJZS85XS zbyr#`vF1#1-&cm2wo@`pj;n3|>VMItFL#;n!Q2_zA09q;S-fkuZQQpr(-K#3&)n*D zy1}gZe~!nh)N}jlC->9@PGOVPGEOa>S$nwoOg>A>w+BCeGQMNtJZ8hju%hUDg#|x% z;f+Qgdj`#Yk<(^=_wRXppX0gTe~DWM4f=^P!l literal 23498 zcmeAS@N?(olHy`uVBq!ia0y~yU_HXXz|_IP%)r2qsl}4^82+V6CNTVe5-I$xQ}%O=);nhA zpE+uul$4GgI+&Q4_&%NOi@f~z7{0i;xOa(CzZ*4wm59Ff5s!?F%*@QJt*u?Lbn*Ql zp5J0(&-nOqa&q$X^BWo(Qc_Yr^=bqK1*N5>ebds4j*hOVs34$tGH?g|KKYHB1WC*RMJ6crV{apm%dc(M19 zd~I!Q3l=PRx=7~s^{YQjmD!mXf7(gB6A`(4^SYax+XrVZK^8_i7N)P>!msS zJ!$FJvRpsn1XX!hy1KgTY;7H7*dN`$|2SLp$5HLy3zc3?6#K3&`ff4rKT{rmPWIm3 z-Z^vTq;hdQHW%gP<^A#F2QM?@+ZGvJ0haqR-1$6Qooamk;v8S=G%rg_M{;pE2(i6* z@gh)}>$8RWn|#qeA)yUoVpWE`4g9?8JtZo6IlnJZ|1w)4N1JD}2&a{$g`vK_5i85= z*|Rqri9B{zJQcuyL5geJ)~)S)T;?LIHA-9w>Rg9~1uhB;@7cAp&sI22isMR{ptQ8~ zCpn(!y4=fk1x}tgaVJjxg00+A0p4sm?(3!^d%Xm&+H#+?)CVo5Q&Lj1g#=cwTzMf<{-vc@ zt-a8R0EN53YUk9{rn!r}j?`FurR-$B>X%^fo@Oq%i+}Ny*GZ#i>b&bu&^6+G1X=Skb;Tt9?~k-JHba z(jfCN<9r5&h(1pj$B>F!Z|2zM|8kQ#zL#ZxQ^kj*$p?=e+GNN$lX2w=j|DoZOs+RI zf~R}LZBjYq#TLi#%KF8m-ig;Im_a*HM%-RB0%7@>%UjA=! zee%0vd-=>(e|6RscD{BE(N3REJe+YhEmL{9WA%#V2EUnRD#kx~Y}NUF;eU;I)rodr zjtEFw$voWc{%>01jb{BxGXgUX%$Xd`#Cy|6%~50a&lJA@0S{Wtj_&-vP|{hGhfQL8 z17DooORo91?55wo!8o0B#`o!|0lkO%=J0Hd(#?Hha^cygX&oWb+nlpJe(yiSkXZfy z`0~B%rd+%;ii1=yOkg%)$TixSt0sPovth>kHvTQF7fO9}c>kYpxopt3;K=8TyVc9K z3yRpi+?Ue#eY0+kRZ+mI+jE`?2?msO23%IryWY0-@TFyco=@xGVdUdG{r8&V?i&|n zw;bNUzIE>n=gVjAoW5exkeMHt{Dkf68<7bnjKy*nE=#d%6dqU4UfQL6_APUBH-l4t z_M<|JZFc#~zi&zKOEF#G&*Aq(OSv#j?&?3~EfXilDzmjrn#Qq*FS#(QHIciMX%<_? zgEh-%zC5=&O--EjZqLSs6+iFtB%EpIO6YP_@%tat_pk48vuXLMV}0{lH_VkkminjR z+~Z(hhglH|58dB)x90b?_w7RKk8L>r{>_%3?*Cj@{|-vFIQw_`l&KF?#5*On9-6dH zjBRd@Vef`pUDFf))agA+X%FB3rK6;^c6aQaTEE0(J?rErhfECHScI;#gjTrcyX;6m z5ZCIpXJhZ-qg&M{xs}*)-Ba&twvA4Z5Bl=ZX?WLDpaCwuk0%l~oevGjaC9i#MNQ?0oz*TG2VVBhEL%OfZL z?KP0uQ_@$xt3a^#$>%L6yB$^5F}Epjzn@Xnvf@bdy>ojS&&Y}Q8)qC$@+qNzCUHmof9aO^vCpeu5cgAk%h9v&C5>`5wEo3F< z?0&hxaK=5$HP>4wY>*bLU9k6wlh3+Ox6`|idaKlHY;6#(YFZJ-|NhyNtS0{D5AGRT zNgA_T&F0>Gd;gakWk&PooQ+^_FzicYQS6T6Pv-E7S!K@owQrVQ;hVMo2K;-XpI?)H zu}j0`!4`cdE_TJ6=fkT+Hh#3*R$D&d*vG;N!m;v7+>9Ml+pguVcF%j4_4#!Flz6k3 zLgB2A-g7z*Z(Z_omWiy@nvc#U)@>Q=WohZvZAXM>&f{fEpXzb$(UH2Dnx1PUTMg40 zdp{bS+xC6Yj%D4oo;$X$Ff0;3C$ZD8_L6GvtY@D}_$M;>7_31-4GOs2IaMTq&_hpUPo4b$y#-6VWm#^g8Dk18)B7<|r>usF97vpC8r0>@M z@r6B6Un$Ak>xHp&($VNU2hZ%Tjj0efD4nl9Eda(zQm%+)zxyO-HIZ&#S4 z{aBzdUaw@nLN>!5*W9)8vxE!lnx$=d=49*)bhc-sE~|cA_xJ1kO{(rI3=`h_N`H2063;3$& z#%y+e-GZ9UH(7+#`6FaakF41Jcw@9VZ__EIwe0^EKS5Z_lKD#+`MLTd+}QZ*GI2c=K3FvSe7rS9_e2-b57UiQd^EY87Cfo<3FRr z!^F#Zq=xrHwiSn~#?m!zM%}MWxU#J#2Rtg>FLZrBTV1fuG%4n9_Y9okvpy`UbUBr~ z;@NhUKHaN(w>We<_j61*QJTJFanqsmdqotUu3@WCdBAr^Y{M@xoquPiA27e~pvq^v z&XVOecd773)^>VBhG^H;)<8A&-}vB^RuOQ^4$1K zbDmt=GD$HjBUrU}X7Clq2S<1ng~A(lJ(zU--FnXb|Lz4%02MoVSGjiXZkztP__UDj z>yLrkTqZHOY>Ty;_EhJuaMjd5D;7WYel#VVx$o2b%RiY~k9<7vmSMHI(#P}m|Nlr& z_z^8%6_f0dRhD+lQ=DnxrBBk9MvC$4mVN*B_e-SV84jbk9jzH{Lh*dkSczUwEUopgm#jG$edK~&15f#@;||(Rn)}=~)$U#T@{Y9P49g8`7QYMs z9CB5{^1*bIV=S}2ICPq`ZvTCubpNtH$0FwZb(5{$9eSqEd;;6NwHk|@x++{%I-5>T z|M5B`^n9FTXS9Dh@6Dac6WM>RSn$C=UGoL239HlOBZbv(>U+YZH&`^jS$3tdFh9d( z;yIQ>XPTnzg>=eZxJI167XG?2)@V_L%cC|GPdA@OH>!-k7HK)Xu`c^B`ReDavez@8 zW$$0Mb@{TNcecN^v#>w;ID7ZUCyh^B&)8j-@|rV0ctc%Vhh=N;#AfB6Qa80$D^A&4 z+&kGe@{+rl*(B#nGj@8En20AUedKePyWpbNpZSH$MT1fg+*^0{j|*G>B8!HwFWbM? zb_z3fCToY=tXH}$JkjiWKX;;o693EXXHPv_GQA_or1S7!lU2R1S%SLqR~){-;>gm4 zBB^>mVkRAR5ENNf!_*#Kdc8E-K*Uv$#d}wq{nssP%P+D=9iE}%`o8H%c>c#lQpdg) zeY7y=`JA*f;vA22ZDhszMU1=pjlYQfHQS<;Hh=wz=nr+mYviWzBxbcg-yyAdl>7Ca z-|~(f&B41m=5)WUXGjgb%wf7w{*w_~lSjYC;t2td?zXqLzw5C0^IdxT;egZw_t=+< zKCHQ+<@BpJ;M9RGxs&J8t^DgXCkTWWWJ-j(mpo+e4!##wdMG3M(Y5Xe%7PA$ESzNW zJUb(bcWf{gSChT=Uenq|DTjG#Tc=9NKk+(#6SvMoX1+a3IieR$dG~s5t7(I!_vJnN z{FXN?`&m2JY4Z7-2PYoT;GI%o%d#!_pIrZI!9_y+Rq}KESgyV<R{f9^4^Uqg*%5N*K^@wLaTH8DCSkHnDr$3e+ z^nI0fZk3ek+d~ss_AfD9)-1HV;n3{DNp&o-d*g(Tm((r1s_^&c+L-6!>pma<#{0A4 zsAOc%5nY#s^ScDAqE{wAdsedV9qaw&$#4AItk3?{JbJzG)O{gFgH0NDQhv-THEUmX z+NA86etnAZy@MUorS*1s3UuzaI~!B-HO=qU@#Q-{{||op|He+we{1e)IBQQ0zWLOD zN?p#AigW*8Sk2$56MbV+i9>w4*v&tz-}2&_kAE^5?)KzO+&=Gr>h-?L%WQ`X`Zgcf zyr;NbM_0CEk&CZ$*Di&~q9ra>tz{bfekW?40)p<+4{S zWI68O`S`_8%Zca3=WbeH|EyqMKzXv&nF($&_cK3b*HvYGyR>oMuSL4|dG8%L-gG^` zPUhq4bknUrcQ34spH+QZp3!d4zBkWaUzOS$XMFeO!F$g#_x+rnpkTE+IaiNA$TCySTV~zSOZ;L84Ge$!$)@i@OO&Iy<;}1l5(a4BX~) ztT=G3bBD*T-O-zD4tEF(?v*GM+<31ua?LkCWxarx`}5};K5}uH?Iv?^E$`x|9jjyA zWDI&0mHk|{6dq};wqz=>-EvP?fs>(D@c)4qbARl}e)}|e--6v)8NVC8xHFkJ{XWQG z&tF?D;g~eTSIt>?N&5EpzkmB(XPO(>EvT+kW%x){lF@uq`l=$^)n5va|D80;&1Op1 z?%(tDAN8i4e8U{n-%z(ZWnT?z+y1#LWtWs*^JF|zX>J>SdvDz4RoNdOgjcBhxvXCq zq$zqhUa(wA-JB7sa5oDc_>hRnx3rrc|&^agMFF zmMXSx?bu}as7hVVLurOv&7E(m%LMmtQ%Ypr$>R5Y>spltKWoXCPre-bI{V|#%wF!2 z+=?@{g-TV7%Jam2$MiJ>D7^@&`T5{X&5?&zypoFI>(>Z=ukvUWXLA!%zs#Nd{N0h# zT>U-iM>;j6mDl+%-|{3mMNW?~-iyJlC_U@5puNoQjqkRlSkHf#eLU)|ari&BAEMz_ zQ-0K#nQJy=^Ira(xkvrpx^ruL_Y}L$=`b>Uq?FXI&bIM9bM|_9~F zvuDq(5iDQ6_@uDf#%ba_+8?X*Iii`qtbMVhj7eBb^%D%5e-m z7J_RJb%--4|7+iC9agB+^~hk}u{qDSMCAzQE?TsK%S%U$NmwAItE6v9^qQQO%p9J} z>k8g8pAnYGS>|o%IxjI={|k_}aX7QLf5*EM znJZnUq((Qc3aFJAXv{d{I}rv2By zg0*imcEu-0>$pzqex~v{@%^>B*=GPX+sZT}zaVPIg!{C<}gkwruZ(>rwgsaeH=cxOUAeBKdS| zsj@R$_Lq2b@({_EbwfMP)`@7!3bJ3wWmBHFYP!Q_fx_i~ouV#3TdubE zZc#r}=kM7+vZlR=>iD6)eAd_ZQiUhypWWHXyy0NN5&4(mH&1Q(^z*);c>T|??8wJ6 zEgF6wOgPf5vhou<^TeqAPY>@`{+IML+-l!#hGD$bbz5*aQY)1&&e}S zY8{{zd4I;#H4R*oqzDqvHr*J z)E-;uZ7yn`AzN9uVWy0VrhK2`NqI#V8zvW-1NNJ)cP)JCBE!)3ZJ%JF;v9DgI{z0PX;j+(gV zN7a@15<~>czs9~${v5Eoi~rcIHo^GXm-C#S?3J6bb04qEonFV3&sNq3mntpI)BXin zRm=YkmY<>h`$EiG*H`bKewxz3Ea7@2wl+BSR8X+~v8WcMyi?C!+WDIbF3x;lb@c3} zmzP(~dh5MhE2P^i>iw(gdzx8Ga^}Y@iPPEX$M}KW<<8NYS(;0uzF(5g{;d4Ye&@EL z%+~vz<>_j3yOWdq^p||x`cL8S%}f6(zw3CLyT}~SP?D=qf7iRU*LBYYuQ?y){y1*; z=-r8#j5ghjkD4s*~jPZE7#3<_If?UO^ix>3N0P(4IRuJijM>p9x*s|RIqedGzcik z5tMrG5PD1ilq3uut@?fGhP>|QY23MoIk(j@^mQ=LSf`;pPhH7#-LLESn)%glNV&)y z_~I)0@mEO7{;;>puhmJWXFqxUJ6dN;tJ;kanYVU#-mMobWDpigJre%Y=w$dR`{md6 z6mDZKUhz_lJ9i=Hw!|a5|C%cCB{(hW*>O_N{#=j!)@%KnLxbLJxbVz>1FO=$h@!bn z2|39n2m#D_!m!-~FK?>B!y}&u)G?_0;ZJpLrpJr?FI_>7i?KQx*oS&gOl; z{j}@fHGWSQUYK7%UjRI{W(4@0UM(`8l<8`S128 zjd4f1UG2W=&P+eOT1&s%P>_9s*=E7%f@ZaIFRfj7^16|TqF~taz`f1dA4@BD&rXlN z{#EVtEq^6Gg~T*vJ^L5-Ic2M}@0w2*sCAzIsv~=T_u8i!VttJf8a z9@oEl&}R1O#dmsy3mG_z-|Ieq_PJ8}qx@yT>#MWt|Ihuj*8l0_wJ-Mf=Z83rw> z=A)6HS;`+V2&Ef<+Z)c{=EMO3a1+Cz1>Ef5fiy)>rJgKO&O64z@UQ%&pgbc(hXuo* zO~LFY3=9k$&A+yr9hYr+(0YXNkP4rGT494hCv%IZjDpW2hD0HDj>#4dGl-Wu<|li_ zfy2d7U~g^i>XfNHHZBt%x-c=Vc(ONodqb0fAUlU}VFPK@?Ad!=WE4{F$^8BwaluvQ zL1vw~@&C77Kcc*kFxvSYVLap_qu@g=%CGFz4YouEwnZ7wC(dYTofMcLd!ti{msQA7 zUH2%&+!{;h>9*!i)}P7U9B%1SLKJpCgP-ofZxtZ;>at;n$OmcU|Xre0}!% z^UXFs`&Ie#)Nk(W*c`5VI%w;<*Xug&zi;oC{ueO4f7QC#x{tQserPRT=py4XhtXw@ zr^}o&>XUzt&Xawt#^Vww@-}8O-?u5cmFb$B7Q65;X|ozEI#BmsrZLsKEV(we_t+7^ z!dV>_g)Vc{l>B4_mv?puyC2C^dNeqN=cGQKI@{jv&WE}p5sH0?;D0%Rn)a&=r7s3V8zq{CUcbs?qvrlke+_`m(+l8K6 zfJFS=YO-rC$%Iuuk~yMZ{k{LPn*eLVp6aV2?=l`R6?b1*r=c8kA?LBtl@4hh-rl3C zK~DvCHgT)uC-zOeJNJ2_V|I4>8jgD({))Vx-{H}sBft1$ReQ(v){gWE7Rigg81$aC zZtQscTKQ3_;-g4Gdqsn}Owt_{u^knTN4{roFR-dLlAB$v#K)|rystjS?%nRa)z-?7 z%mh9*b*wM{7}bBNry@axk9(QYzU*&__m6N}&lM~b25FA{|LCTsL6+8|+0*krZ;IUE zXQli|P2l67j@^FpA3xkOS^sc@`XhrRtw*o7-QJQdJNJd8pm}4*^!_8;zvou(w|&!T z(KDm#hf&Gw4Oco|L*(3S{CeMCYqu3_7d-C%sMjs#e8&z>mpwL*P7Ane7y2JbJkn|T z@!_E~zdK?|=R9QYpErE9Ef>o|oqd@CXU&n0c zBi+jHs+{);`ycuE)lg_Xx1fIi4~u(^FGV5@MGMVyBs!yAj%-$zi(5bY?T;dU!zXvt z`5@7dcH}GXtd~Xn-0LON137Lu9C__@#8`PBN$q z>|x&;HIL6zzb8~UxufEzN6nZ2vwW5x=v&!wKi_$Gp_RmSal!449rMlA?RGtp>^$7I zvg3W7{&jtqJ1RPt zk^(s*9Ko*X2)ixMWcQ(6Jb!mPr^_BampvZ>x7gWsmkG=eZWjd$qy%P2l4$fsd1R2Or8vl|L^vdqXQI48_-NeEC@K=p0kCL{^Zs z=X-X@i{9aP|JdNFm;e!(=lAjQ`)`T8z7k+}RNl7TH}kvT{N!`&lPB@G{Mqcm*1JQX zP{jKG??}7jKkp|O+gE(@p77Q31$%#-y65sI`Aeh!UcGqvj>i&xetVa0kCl@4x}6sP z+>hi}DTRlJEAjL5EB!s#Z>}``^Vj-cCKIhE-Y!=9S8QPXXu7-7y;`-;%KM_$7Ae&g z1`2$fy^yh7^HKTVhhED6%(Wlww-U0?pZLT7#~+XxiCt++g7!A_Q%8(%ZobaTsu2ObE1x4Lq>*<$`qwkt|?3xmv^2Jj8VAA(&?=; z@9ZW{>j;UUGs^$hPgwqhVg9^%ISzYl1(wT;bTnHuT4?eeah&5YM}+;6f}et47jvP2 zx`6u8MvD&Nj>(T4WR7qi@hnu}d&Kf+iG=`rAyZ+H3`E;cl13Y>T<^HXXC?{Ia|$cC>8M{H>?O{@F`!|HuEa#LDY(>eSv` zR=?zbv}ygsUH>CQ`v3ZWw$zSuoU==m|50V^ugK|p<08$Ar{~Z9zeoK2Lf@Ks%N|dE z`Q@YJ5yu$cc=L~uJ7cD8Ud;LE%GwBl`{uVQj@&&rXP5lEQFbIe(`qY3CQn#kxyP<5Vf&gW!SDMWWR842s^&Kll!Wda@hrUG z{o~sfdRv!E;*QNJnG?9f z#Z>(_vc?7leiXRulPtd5bwUNpY1b}M-bD+RIEd&3sYppF&pY6?WY4K{GACx7?lZjc zhAsWP{EV5+vi?SKwZHFAe$4pwfK!L^kwA{ZE6m)AeFE-^M*{hES}dGoS_Rx~HwZl9 zC=_v$`Fh|N`;q;w-yQZ`yr8~XQO_jpn4!S)T~D`X-Fo)m7uQ1h-43g^iz(W^Zk8?3>do)_t{9S8VpfD4n|B%f-6a zCN0}1dEM#JRx$2Sd z>GgTp8!IX+BX#~g_$BWcvpe#`wv`HbO#+WJKu%Zu=dXAq@W1j|`A2T=#qHHvc33`{ z!F}Xf|(tHKtGSMIMF74l;2!Y*4C7S9l!&wZr* zM?uLWj>0Sa*WW1et=M-#>aum==KZx6>idq(v2c?4y4ke4V||sOU8$eUxqII>7Cnl| z2CMhK_C}GfFZ!<3<>yDv{`>Z@=u!3>KgW*6bvx4dKYGi>@Tr~c{LWkxcUAN7njccd zAS?Q>y;01YBmCg5Vb8MWAEiz9Nu^w1N2OQlV}&epfXk)ayXe z_21*a(vg#&@=ngN@MtYaepS+?Qej+EqJA%2-A~|AvVxq!B0*o>OPm}|GNqCC`93~K zkY#Gv(i8Gx+G756Pla8aj~1L*92Rph;L#n42S-lw*58=2BCPn%9O)z1&)(GX2)y2@ zeB^zLMfVoF4q?5Eibn!3XH|97Us%BNf<0lUXl&V|x(fayjaTx7B&TXK-h0){shGE} ziq(I{MR~L9hkGonKCV>o+fvuDSlFHSO1bkL@5;$l-iK5dvt458n|uC^a*v%xy#?R2 zC6(Vk&AsV)Qod??X2F(7!wa47H?!U5T*~>}OpwteT|G`l=i9bT;j_;gn=0H8(EHbM zUcFZC%@N_*zgqV1@~_l>7QOYkvHtR4ExYH2o0RRgD05f|-2XV;ZqnCTOM2FnD=vN5 z$NosL@S{hrTz}D{N8A5g+45^CgUp2w*PpMg5T4>U$F<7M$TrEUevzpApGgsl!TCuo zJER`9c~%`wAZ@@%6P5#7o_gDI$il@%fB??9i=tBs`}0@vqc3MWY?L`I&)v0p;c%z?^BvJW-#)2*h!&Xsv7qB}!gO_+>+iCj z{?hHJUbam3ZVdm_tD2sxmW$at&)t)@O#Zc1{K7ljrINxe75&2Nr|-V3d?Zl$%Uyx( zWqWQ$HayL9c~Icz%@O3Wxuz=q`fGPD$3I0og_oDgK05GHV_|i_^VGs=;y!PW?ELsN z_t-ph&ro*WBXcu08{W7ec~t3=-t(e_OlUxtI^?|TK%$zab4i?&f?H1%a1))n&|lU z$mWMvHFeeXm@V&r_0I{LGQa)Q?0OVIj+R z?BibEvTbrFqthQg^*#aj-pe+tf?uqZJz6)j+H_5SUflB|tVf$A5@PMGOZ|6GHs^Zu z;PBm3Cl39XBiw&jr^wo}P`_%O#{0+i+>#eKiXL4oe$soc^SYz){Ct;prt1HquH5N+ z?8WwKjs=S^pH1EUr}ug-3-yHsrk}id<9hLWHjj9}82fkq1zs7SMU9l-Yac7&dUhnR zf644uM>siICgxu1^4oayQgNvl*Wx>s{P!8Jo!uOK+=}J#+zQd?Z`md5{4{^09Pble z|HE5+QTp=-8N!Z*av{!&c^$8&s5M`jyZ(OXenY$77n#~G!j|tbmlTPd%k)}pb?`Aq znL6)zUV{2xkGx$_p~)%mQEkQRBg#TASv#Z7Nr!PL*2zAKnAyP`E>E~HbNk(!&u4tO(mDS|lx|b`x0!1{B!6FF`P!`GxygGM zVXwX2iP;HX?#|17D)HUXrgM?SMByzNb|22!Np|Zw+UOLU|It_2x6b;GHLGIZub;F2 zvPH0MklJ_7w#49#)0_z<#qvk`CpczK;EgwuC`y-i>N}>|vAjoZcc+4$ec1XNwPA5b zV|fH0t&m@T)A>)A@cb(K!p*Pu-JbruG+q8e)Z0VXjhsL+`Zwn;L*e~sKjrh`abfpw zE-!rW|5e?iyKC25{h0UToE@X`*8|`48h*IS|LYcYSGQ9N{H*4WB=RI4B@3AG_ z?pqq=@-uhQtLA$7WY+w-viqmpep=eWy!`6yPXGP$cd%@Ib5`v1+3eCsPqdEM&s5#4 z{${bgz?vj)EJ?)dL{dpJ{3u+Q>i zrs6!cDE=dNFVtwp2|il!($w}yEMvm@gZiG56RU;i*;K!ux<4;MLp7#cQh)8;b5YCQ z35o2uuE@8bO_#NI!rQ-XciIkh3g2HgHGlJ?b<(QcJKwkzMW-IscbroY+h}3Q&mqop z_d!~R{7~- zgr!X@=-3_k?ANY3jx(W?6ppNSn3MPVtF4H>f8wH}b6&dMaXHkP&QW+pqV~OB+l2;? zeN(E1iyZIY+puA>-$oZd8;-+P# r&O4VTu-}(e-*?NV`|>WyM+})t<$5gq|GGun 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 diff --git a/doc/src/analyze/qtquick-profiler.qdoc b/doc/src/analyze/qtquick-profiler.qdoc index 141ca00fcb0..e482dac5580 100644 --- a/doc/src/analyze/qtquick-profiler.qdoc +++ b/doc/src/analyze/qtquick-profiler.qdoc @@ -557,14 +557,26 @@ \section2 Visualizing Statistics as Flame Graphs The \uicontrol {Flame Graph} view shows a more concise statistical overview - of QML and JavaScript execution. The horizontal bars show the amount of + of QML and JavaScript execution. In the \uicontrol {Visualize Total Time} + view, the horizontal bars show the amount of time all invocations of a certain function took together, relative to the total runtime of all JavaScript and QML events. The nesting shows which - functions were called by which other ones. Mind that, unlike the + functions were called by which other ones. + + \image qml-profiler-flamegraph.png "Flame Graph View" + + To view the total amount of memory allocated by the functions in the + \uicontrol {Visualize Memory} view, select \uicontrol Memory in the + drop-down menu (1). + + To view the the number of memory allocations performed by the functions in + the \uicontrol {Visualize Allocations} view, select \uicontrol Allocations + in the drop-down menu. + + Unlike the \uicontrol Timeline view, the \uicontrol {Flame Graph} view does not show the time spans when no QML or JavaScript is running at all. Thus, it is not suitable for analyzing per frame execution times. However, it is very easy to see the total impact of the various QML and JavaScript events there. - \image qml-profiler-flamegraph.png "Flame Graph View" */