From b68fd91a02e105ecb58b3cfe96e409ec3a4d14a5 Mon Sep 17 00:00:00 2001 From: Charles Gagnon Date: Wed, 11 Sep 2019 13:57:55 -0700 Subject: [PATCH] Update query history README (#7164) * Update query history README * Fix typos --- build/gulpfile.hygiene.js | 1 + extensions/query-history/README.md | 34 ++++++++++++++++++ .../images/QueryHistoryActionMenu.PNG | Bin 0 -> 2266 bytes .../query-history/images/QueryHistoryTab.PNG | Bin 0 -> 3312 bytes .../images/QueryHistoryTabWithQueries.PNG | Bin 0 -> 7648 bytes 5 files changed, 35 insertions(+) create mode 100644 extensions/query-history/images/QueryHistoryActionMenu.PNG create mode 100644 extensions/query-history/images/QueryHistoryTab.PNG create mode 100644 extensions/query-history/images/QueryHistoryTabWithQueries.PNG diff --git a/build/gulpfile.hygiene.js b/build/gulpfile.hygiene.js index 8ab4e7954f..338222a410 100644 --- a/build/gulpfile.hygiene.js +++ b/build/gulpfile.hygiene.js @@ -158,6 +158,7 @@ const copyrightFilter = [ '!extensions/notebook/src/prompts/**', '!extensions/mssql/src/prompts/**', '!extensions/notebook/resources/jupyter_config/**', + '!extensions/query-history/images/**', '!**/*.gif', '!**/*.xlf', '!**/*.dacpac', diff --git a/extensions/query-history/README.md b/extensions/query-history/README.md index 0f16683f33..7c115d0499 100644 --- a/extensions/query-history/README.md +++ b/extensions/query-history/README.md @@ -2,6 +2,40 @@ Adds a Query History panel for viewing and running past executed queries. +### How do I view the history? + +Query History is displayed as a tab in the tab panel, which is toggled by the *View: Toggle Panel* command. + +![Query History tab](https://github.com/microsoft/azuredatastudio/tree/master/extensions/query-history/images/QueryHistoryTab.png) + +Initially this view will be empty but once you execute a query editor that will be captured in the window - with a separate row displayed for every query executed. + +![Query History tab with queries](https://github.com/microsoft/azuredatastudio/tree/master/extensions/query-history/images/QueryHistoryTabWithQueries.png) + +Each row consists of 3 parts : + 1. Status icon : This will be a ✔️ if the query executed successfully. If any errors occurred a ❌is shown. + 2. Query Text : This is the text of the query that was executed + 3. Connection Info : The Server and Database the query was executed against + 4. Timestamp : The date and time the query was executed + +### Query History row actions + +Right clicking on a history row will bring up a menu with a number of actions available. + +![Query History action menu](https://github.com/microsoft/azuredatastudio/tree/master/extensions/query-history/images/QueryHistoryActionMenu.png) + +#### Open Query + +This will open a new query editor window populated with the query text from the query executed and using the connection of that query. + +#### Run Query + +This will do the same thing as Open Query but will additionally run the statement immediately. + +#### Delete + +This will permanently delete the row from the view. + ## Code of Conduct This project has adopted the [Microsoft Open Source Code of Conduct](https://opensource.microsoft.com/codeofconduct/). For more information see the [Code of Conduct FAQ](https://opensource.microsoft.com/codeofconduct/faq/) or contact [opencode@microsoft.com](mailto:opencode@microsoft.com) with any additional questions or comments. diff --git a/extensions/query-history/images/QueryHistoryActionMenu.PNG b/extensions/query-history/images/QueryHistoryActionMenu.PNG new file mode 100644 index 0000000000000000000000000000000000000000..26362de7de3735d71ff5868debce472f8e81fded GIT binary patch literal 2266 zcmZ`*cTkgQ6A#VM1PNR~2=(63P6Pxg(nJAyK@dVW6e)rzNR9x~3M+1=kR!NmC5X;yw#2n2E()Yn1L zEP*DD%%^C2Mj=d`X6Ue}YgZtpeTXHR!|0}Mqz!>o#IqecGSPe%jJ^#P0^w-?DRf<4 zg)R^XvlpnNZSHSR$u_#jW61M(aj&TEOl!RGwEZMAYdzO*9gnyedGo_Wq6+zRO~Tdy z>HEj*()Vq30RAhVgKhRS=d;KY8Ed61%IQTFQ_yAO2UflozS(ZYL0K6S#`~#L%^{JT z!kQ724G$u*i+!C`;t*xL*4Zf&mwU-q`gnh%pll)#RVuXU@GkJTS}E-Iw@>SnnjR)Enj^<5C{-u1b-VS9{kdA4ro`&%>h%-qQMp@x zj-0$aS4v8X)8WpFRpQe7SONJ8>Mms*Gt)s>rylJ!d9Q#guNP_g$sb7)@)e$4CCgy^ zX>Vh@&BgnltI>_Asj2PV-3HcncCp6WK&##bhi050vK3=r>op~`yEZ9c-{{ZPgroBJ zWvOz<+tm9}ZmOSr`&3ZZ9P;C2zq?{byd>Ob?nC1G!Pa8h=mHddsS6WtA zJ*=&*qe#$vAGzCi?@FuVj_c4mRoUt3>5|Mefw&ntT*r!N<%LX8P5Ce7Kpx7II zSfVa5>KswWB@qxa{F7Kd@ED0h*LV;Jo^i2ZxmqFbZxe=jVTMfOdZxs63Re0NsIaPQ zLaTnXgGYeWb^hVx8iErbDtS(%G~?o#i0L!HrqteaYxvg&wbT6g*WJ#U&%>0|MCd4% zj%+bz!CGHloOggO2IPIIZL)r734KUbS-}={<+_d7j5Ir*p!Ta+T`f~AFaj3XXFDL;d73m2SuSEv8nw! zyCnfF!tNkjhMT4|n*Wsrz+1$@;^p5~2Pe&Pz}_VMP5M+aVvo&xa5G6@F4D@#5bECV zT4oz`Ia7%{{V&UA>iU!0DNBdE-DAG740SF3-V{^V2}A?>nA(LK5-GpYvYMUE#vi`s z2Hh>8C+q5O(9e%;;l=w84FqExEOIDEf$!;DVU|6!dPxy%bIS07G?4FlkelTshc|H_ zZI;b$MBKlWIaZPpdnfaA64d?OY$$c@#U64R!xDru9wla5?rhnHtWWNvvB;>Gp9Nkb3uexSXM2ZMp;(QY$;MYKQ zY}{LVkrdy8xC&!Cg@03&&2hB3lE}!M(QJ`0IBsGVG_2gCj9&)GDz%a%OjhABvpOqi z0Qpqx@`X7eA}~Nu8TgoR%W_j;QbiP0I(uJj;)#;8A3yxRBmc`f{tMb1(MQ$BT|EwY zk_gy!IJ*z%UJ5sGqQuP3vFn84(23r^D64JPX5G_nuEwS_S^8@L*xtzJ04_SwXhBoYV^0pTHyL45# zxw#Ew^gA;C7nz)#JYZvM%U)So>FDYz?&`!fbb1eIY;t(ST_L{EAq2(HNno6PeJ}c? z8N=c58SPca3^J}GJQ@`Qlb6_431w5k3*5VRFRwjhw3Yt_@7h)Ma>;60uAdL#1|rU! Z&^a@)GK>oJzKu!Pv literal 0 HcmV?d00001 diff --git a/extensions/query-history/images/QueryHistoryTab.PNG b/extensions/query-history/images/QueryHistoryTab.PNG new file mode 100644 index 0000000000000000000000000000000000000000..fb43c25ffb543e8e437cff8fdf43438ec397163c GIT binary patch literal 3312 zcmeHKSx}Q%7XImO7f_pV!4?~dih?K&DuWU=N#TY_Lr}zs5WoSX$ACoA*~uSw>}G2P z0h_HE2s?>@$Pz;oG^j{|5E3Oonn8*1lYk~6l8uS;(A5v!Q#B9sHdS{yr|R6Qd%imN ze&6{aDA0GA%~~4(0G9b3Id~iZtP~czcJV^X>hm@RZP}~{$9?w$Y@x%1#rY!6C%^{) z>NA%Z&n&R`*7zf#1OWK5^V78IO00|lfTh>`4*Hy+L@0+5-Qfdk7e>M7H_dlOM#aV9 zoGRdpe@x$Ua3xVxv_=OkGT=fK&Iu%$&t@*={7f(9p%qBw$S z1JmF4?3No}PNJ(&ULw#q1kRguoi&_xS_=`9)Ia$6&(xGirb&A$S1M~xgvqjviBFQ; zkcO$o6w~nrSQRH)gqk;w8m9TEoaPZ4bhEzCeT--yjgZK+`m{Ump>TM+&~>vkS6$u? z<3KlvwbfyY7H$S%urB|WvYpi6jMTp?9V=)!Oyf`H6Ymfsx*FIUaXVxTZ0wXnHxA~) zLM>4=MBt9rX|v;XP^K1Mt2Zx|cu9F}nnq2FVL()P>wd*Z)>G}&cne6`QxpgRp9_D!S0(6>Y zNGpU_pfhyaRZ`M4o+Po^l4tF z1u&8$>FTY6U2- zT!MdZh&K^ll$3!NuCZ==aI!bnaN@2?@M3QA)IeOCrC8@;g2pN1%MtNh#~B_&jJUCf z`CJ7S9*`Wiz1_fm*;=o5RKC`=3&*A+CcnvFP!e^p_k?*}SC^ zn|UxPCFgHsz9bGIfqEQ*H;xwcL7owUp8B>~i85~L?lBy(5aSO(emnPAZ`qdUC7>%p z(`HlRVy!THUP!;)iusOxDMz_=FO&zpvJ>8vibHOY5b*}s;+hvuW3^{S<|$8c`U-J9 zp z=JmRiSVVhR89b*=`=};mv;N9)Qfj;49cLof41K)Wwy)Q;VQ+;^c}NCJ<<~)#qO^9^ z1NS!#eMl#Nm0ka}XSBFJSPP*gi1^~a7C>^#c*eaaGcCuvLn&t`U?b4alf>ABU|gjn zxsEkVt7(cLCAe=OyzmUtgX2Hxc5txl(hm2XB4dn9As=A0h#OaN4NZpl%GNigchbLT z%`9;^F0C5s(vu=>dCX!=;!4K1E&AOG_UfcTP4V)^Be)%8V)8mq(`4uOIzY9W0V@?K z)vtTt258Yt>!x_prQj}dNzVG3hXMIsTby9!*3FtQCQVqcnZ6`f3TlD$V8xXBM@J#F zd$cc8Hw*WLZ3`^ag?}(l@2`Y$yn;!%Xe_y^du^Cfm2~rwQV&8);MKJz)42^sGlPfgk}~pXhn9W!M0;Xgtg*}U@_Q) zvOCqvw&{4_3~WnF+*shGMeAW#52511_Y^qcoC%d)KS`&gdmyNOmTovD#YzGgEoA6b zliW~rI!hr@oDv?lts?N_bq7=P{Of#>HBQA*)&-ut7i|#9HnV%N}TmzebxqE z51iO=Pl5^Zy-(-cv<>CkD2{Ne_hP&`>eE-q%VbCRNICco&X6|1*G`WUtsy!e#Lwy- z#Vk(MsVl#PNi}UkiI(Qd$hbonzJ6=8&ZA|XYd5)!n!}~Uw={{NHDU~|RAFYNYRXvQ9PZ z+u`GlvL9VKGu1-#c5zs-bMEiEB=|s+zX$Jo%ILMPGFZ%RRiB5vqu-eWV;bLIcmWo@ zQYsW$qEXYc#=d48Lr8O|K{8ZcDKA=u$99smReG(l;oau(wvbYo575GXug=m z(25*9rB5BU7Le8cT&d;4H*r-4tB1s)Bi=gTDG6x|E;fDPx1iH~%ResTmOY!&sSnB{ zp+1kXH(m_-jaa@wWZe4Lu!h&;I)N!^6YdRM5ShU-o#P9+5okZ`eDnsx!0xU-7X}w8 zT8q*nKKpgg`Ar3-9qVCwY5*f6WJ|W=DwfW5;5-5?NAvaNTrfIZ)ZgXrtwp-t!5vK~ zJ}$NAQl~q1%7}?aVHF~;E`;RN*a|@hyumbx;~ea)e)HpV+{{oD4S(CKR}Ttm zqV~lqBWaZ?pGRl$K= zLg}c(+{4HNCE!`c5L#gGB0t&hJQ_Cd^Xhai@cbij#OA|VzOb-;0Hp^f``P+3rohj% zM_4Vy$ZMr)3+vFhnqkwTGth%`?bIF~o8GI)fs0`W7-sm%u2P|VnvY-Dl2LO_%?gRS zP(;6p53E$!U4&K$(IteTR1Hd7=XkOElgCW*m{d#!qxwI`Q_%qyE!e;RzZ8VOJ%~To zjQ4n_BA1~M@T~Cmznu|&-wk%`TX(y@ApTZghVk; zVcSDiT$X=)n?-dzcag8^4BTHi*yEoNT-e3#}FbH?lSGYKP)`k&-a z=l~DL$lQ}?+}rGEfAjf^*FT>+e zV{`lACq8ZVQ^N;gheqSf7fs8Qg-L8fkz4I%ep_vT-{`dHT_S6tmga_BbaL7vIhI#- zYi0#A-bd&>SGge9=W%Go553%E=0EfGjgD<%zLvqtA#p|Ou01?)wMV2@T7CFtqp*nv z=EXMYP`HfA2K-jUq=H}Y^g>1*5(hRd-z{#?Xk8Q#5kAjfR)PyT-)9?ChNw+wK0R={x1GHJP^%qS?&(CkvsIf=!E#^xgr)WHg|06doa@M#rD{^h+d<1 zL0oA^7x#FX?a*159KKqqS7HL;KtS6hdL@dxUD@JfUZz~TXdA=CZ~ypQYqvxZ?MyP# z{ea-rIET(qC7>r}LK<|S(6!oRx$=$qat$iEjaWW*4#S3xr)>faW^A+CBQhRU&L&UB z>1L(Ee3ZEN!nU|=E|}NDg-vP7f`Ar*A4RyaguL2)h+IfQ4kYeS*?WeENSn5Pi8;)Q zA%hNn#cHF1;ZOMO8Qoa(r3yp^yRbUO3m+B;UOV|En3bPfI(Ympb2^FDZ)P`ZuKg%dME*8LB{Kxm8ZJ)vAwDP~LH zT^ovpt@|$!oR^5t%l_`eFA%TA$-x&$-6l~iD zI*7QTZfE>p3y_ID7i5Z$nrifYqP;>L0G)P@P)tqWXUpzrU*c32D@myS# zPmyh^JsvF7c=Gmf@3^Wi1}o^pXVDiI7xfv3O<#b0l`g)pUHEoM>N32;DmXtuu`W68 z_ipuds_vXlc%IqY>uMvrNnQgqwk4xnHu!B$mim*81-hm`GXu;b4Ys`}%5O)*g>m$O zO3sKV%k{EeIdjw6T4DvHzoO>TE=-N^-RiBS*r@<@p^-Cz5( z*Y}J&rDjLsm9TX5;7moNcS5!DRHk{*qd@Fba~xfVgLE^fX}`XqH8ZsVh0B6?Z!;NH z^=#?gv3?)jaOaK{Bw$b#aBkBeG|6zIeYowLHOI7c37TWKLY@nltbE&+@0hzkK-h*(xSF@EeOr-)o?W)HCPb)gshBnCzfBS8ydJN zyo}XHK;b0(0XIPHerRBQnthgq*()XzmUQxz-1EXum##mcs(mtQXihd_Ig{%4jIjj=%w^p zzJ-J+fb&~5BU@v_;Q~wQq*oqAH|OI=UsaCNQlgR9R}z8;$$Nu!_j+4fTEOZ9XRl>6(1zRE%Zp+UCevSqd zs6&@+-myC8ZrPFC$K#P^1xF!u&9{BH)$j&WK*hL56Xzq&$me|bd!_Ilv1STzq##MjKSxzHnn_3ZtEw_~Gq#*Q*3(?-dSw~)Yx{U z%n=<<*?)G^5`>a<45UWaC@Iz;reo1|$-1}uw-X#GNW=-gxpB?$gMEZm|xrY{AUO+#6kx%gRa-ww7VvVfk z0N{)hesECO=QvYGccfJK;;KSZ6J_IF)5?$QC4tNMZjCp zAP{r7-Zzl9VAvHlx4E#e+R2vRo9ctK|B{Oe z3{gST<`TzMQ{F7$ePH>L}0S=!HDGXvox%HlLkjukd*c{(WC1UpmhW ziw3d;_0x;$&F*T}b8+goBZ$7*F*4siC{vn`VA)7kvXwQ3LAuZlaRr$abPQ^BJCXl* zTv8UmqDBT2l`l7YETx94Z=EPIj)<+r)%fvRZLKW)^qG3PSQM|-HQdaP2=Mba@jp1U zuk>mjrF?aBK_cCm;(6^U^%6G8rc1u`A$bZCI%`8=aQ*vS_|5iZH6SuD}plgQwe=5B1XsS~Z{8H&Jgva6mEC>Wehq!C(MSz3Iz7fV7t3 zYt{@OSHiLSK47-_Ys?E@%RL9k^JWiKX&bUg?BG9O)I z=iWzi%2xPEsJ|!1XmvAKzv0al{y?s%%Z0zbljz1d?8W!E5g(U1M=UPH9T>d!SiOVcb3JX`LmPxo5H1)u5jU8O^%|d zp$js`(QJZ{S=I{2w6>o`|p=2^R|>l-DCo8oO`uw}jaxXQaXh zrwXeb7nw?q9ojMDt^`?8?Za9d>OObZj-`ub2E!|rdJCJ6y!4a#ebP;ORo;z=7l4nn3UU0Wbqu(Ytbq3j4M9 zja2Q^jMKa@8L2F%^f6GdKCg+9DC?YEZH!h>kn}e~c{u&j8UdEk5*fs2aZWbM)w;A% zbvHIP_Hzrk=Aj!4Q#Ea0&OOYuTm`hW*e2L2k?|-&NO`v9wM3T*919sdHnFt_(zWc{ zY_L{)V4X51i_O&d%;K0f3Y?_fV70V?a~0k9RzfcQ5&U^IKdAQMjYUE+^-k1q;XBSJ zl~<|5yNaJ2vX(25yRG?vF7NZ+(YiAv@)$he5i)U;AG@nQ799Wif+4M#YX&4SzQjBG z@TVUPTszge&9X7mUQ5F{2<}plK6VrQ4_Z@}t=2EA3pG>}l)@HiY^LH;`8_i|6L0#&bK~oFT8cu(+FMINWkr}@$vUs@m~W}zStO|= z#gNjf%PdHEUF&1|haP~*g49BdC)k%Zr`bo(4uK0Xp+?z-145@QD%*Xp#eHJ_RHj9+ z|LXS2*IRHT(FG|CMXcqc=*K~^rm8-8z)S*sVDAWUWghjrZC42ZRSdv&O^bbYANw`E zjAo0fDf}Ysi7Z@zk=JO6lt)EJ!HBg=C4=N=ziaPOEz5e~K~q&wxA3}gYSl(*u%B>W zK#;4-6YmgQJ(f{O9<|woh5=x)Aj-6*u2DhgSC2mDSrEN9+kYQtm!NEUecEn~A$srk8-2wHw-FtBt zx->m0WXRWv( z56XtUq(fsFzrdPKyJVX_{Yy9GLe$Mt!5$D};`(~?Peo1^^68G#)33l`a(R*VZiJo8 z$|OP_8##L!Znz)eMyuL!_8DsSrJE0)NJ&c>;^~5Y!ybIZZxj{}kmf=Uhxbe=`Rwx9 zU-uq4?M%UOE;BNM5rJAmceT18pY3jbAL~+&obf+}D=scu7u0 ztGQPe@MKy=^#m~bc{{2Rz(>9IOBl~dB8W-#+Q#)=U;Ai&ao8dP^*(p}xCD|0kbi6y z;#PcTr5>hf<7p))hyEy) z47RV2X+MWSP_=vrmX!}~Xc8_GKR#J7wheHfzS~K2MzX=M;E>Tj)Pt!|q$M}yt z+KUk)j95^sEqeFZYmy_a>O>ZR>7?>)fJQ`7XDd-|Y`Z1G?wY)ShqE$bqz2YjeryHi zq?F+I#-f{LakvCp$KtamS=XtugRGjufhX0%sm9aC#m2QnDB@NqGg_QNU_O-!Ce{h`&4TR5_|?TUp> z8K9#|?i9T_wBpl~!B*@xykW*n(6e?&%+nvD^3o*`b$1>`VmNYH@9HUQKZd?0We_aO zO6N&smKK1n5BgU2gfcC;1i`mHHvg**?pKuaC=~e`G?2<~rV1=*PM&f^?lefm>&!wC z-~4XDY!og7)*5i$f1(TCP`h%z7q5<(ZJGpn;}R+zK48!@yVC<82iU@wZl|bw(XCL5 z`JVOA5x4JH`;4smQ0%%RWK-GA5hx7yqel%d#-4PsT#Yg+&Xa--Bc|dqFD4wo{&li- z?QpV;ubTIxkA*n&+Hg8*wmpe1*@-yViO3|5%dBrp2#Ll&;8q93+XvY-*Ch7a2RRFE z*4Z!?gBWM-ciF_}V1SMjr8(-!(9nU9z-M*@xY2vsaA)gl`0P!Tl)RlDmJ9)}Bi;1Q zcJ(z_e8|AK5y}cu7QV)f9ALh|&azhfNvU;UAPCEwj0VwvkP=+5PbV}(j6#safZ6&o zGBx0qZ-Fvt&omK4k6<7=GSUbvNd#hz-kwXwCP?B~j$K-7{t+ak&V8Jde<3q|Q)Udo zX^;wE=WAH#a`g&_pB(?>W|jU-Mf-q@tN_>8`dli+Gopy^6s~s7{ZXw{Ql2yx3AR_e zOh;85FY`1vhU6AHNG)@Je6V0w{h@#=sK>R$R9(KgFr@qi1Utho1^>Dr6?<&uwJ0)h z^UZ-$6Yk@pif7S~RDU}afK2((BkUg4vL+d$;bo1+$;Ww8pg@ob#MLZjQB@3_{=4Oq zO|lSjEn%|=c5$NVCs7)zk94#t!3#kuH)Oar^%wL#%O6M*KUwMJ1}VIaGVP%ol= z?~TNc7F`OuLMT7UEv9C+7le;~-L*9~Iwg*(jy@vo7jMpAD+OlIy0AJ@?f2QaS&9C9 zs(l@Dw12$at6<@IJ*XwA+N9O)Y<_Wd;lmr62*dAK)ZkHSrNTiIM-?6m5PIfx1BTRXtbd_hxrgJ8L zs_uT?A`3dwnd^YBYXF=|49B=sJoXsddRcT8?NaLf$WoMb#su;4cu3ugmRK1!q3qk@l#gR$)*KoiwJ*puLHo2;Rr@@*-7rAJ**M_?tBw|2JzC(P5^kn=|hm48RkQ(PPcoi_O&2z>tH}HdwSp z0IT0KtaOzSaNL$eSn#HJU(NdBhz;@W$)!oUU&pkXeAq27^-Sf;RiM`2b96#UQParJ0ZuRg z_yvCufeWCWb1FNw^1@_lbT2=u&Yu=Dp_ygk zWrxbG?t zbRqO#{1D&uR3p~E=`xK$4d^ffOZCV2M%2DiC-XuKKjuR5z%tglJ6ceCOzao`9uy4K zXm7NxQSYVqiR55{&9f&fr9YFHE7*JJZN>WYpF_ftpGa?Yy_y z(Hf+!0`=j~M#b=O4A~G5c373#Dcu_Stp=XEFat#Y#OOw^TIR+)%dxCU;vgzT~oj zT>oCJ*{jusQD9O&sR{pzD#%Rh`-Hynop9xC3M~~AVLNobFk{Pt4|SS|W=aFwR%^2F z(bDw_a7H63-5eCPsp@xW-nru5ZErw4pB-7oI$fqzK5S@k&0xP;Iia7hlI(6|aLd17 z&hUiTNJr1 z*+e){7R$^wE1hij3BR)_?H%w+)e8UA{TK^IWXfuu+( zZbkQpB*iW~GlC}jb2hG(ECjCdkqm8=Y(OHIY^WZPL=v>AM*BtOb z30yP~`!n^Um2O2sec&(Qtw_5O=HRy5m?Pt+3{Zue4i4Z@n={W=KK~{gq4+YvTBxep z`Ve_$o-S!Z#J1dZ^LwXd^KYP2T=t(phwR^Haj z0B{7^gOI@z+#7Cx=vo>hzLo50L$hrIv-u(R1y)2!@d{TWUeKp+TJ&&QCP|tR$~Y%l zj0pG$CPWpM;W-$t%$RVsA(EK{W}J+1(>cF1mRqLOvd+BgDkee{;k@Y90ijcBX4Y$M zC{~tr;lu-)-cA17xn7#;CJU6RX9ZM99|Oog;Hw(Mw8xdvuE(-kD>n7i1xHuBA(|_u z`unPl3o)xqaLXVxxATL%#SA5TH0;Q6gWaScm-mdQ@ucocO7%#MMjo7Yi@ANB$oM$fN53 literal 0 HcmV?d00001