From f26b9b457b5652f20426409ea0021bdcc76fec79 Mon Sep 17 00:00:00 2001 From: Artem Bochkarev Date: Fri, 13 Jul 2018 17:55:20 +0700 Subject: [PATCH] MacBook touch bar: cosmetic fixes fixed IDEA-194896 MacBook touch bar: use close icon instead of close button fixed half of subissues from IDEA-194893 MacBook touch bar: improve Configurations popover --- bin/mac/libnst64.dylib | Bin 57296 -> 57512 bytes native/MacTouchBar/src/Button.m | 28 ++++++++++++++++-- .../diff/impl/DiffRequestProcessor.java | 1 + .../src/mac/touchbar/popoverArrow_dark.svg | 3 ++ .../src/mac/touchbar/popoverClose_dark.svg | 3 ++ .../intellij/ui/mac/touchbar/BuildUtils.java | 2 +- .../src/com/intellij/ui/mac/touchbar/NST.java | 2 +- .../intellij/ui/mac/touchbar/NSTLibrary.java | 1 + .../ui/mac/touchbar/TBItemButton.java | 20 +++++++++++-- .../intellij/ui/mac/touchbar/TouchBar.java | 9 +++--- 10 files changed, 57 insertions(+), 12 deletions(-) create mode 100644 platform/icons/src/mac/touchbar/popoverArrow_dark.svg create mode 100644 platform/icons/src/mac/touchbar/popoverClose_dark.svg diff --git a/bin/mac/libnst64.dylib b/bin/mac/libnst64.dylib index 1e31492f9275dc4daeb4063686b3b4fcc51eae9f..be77c80a0ec9ffc0688acadbb548e974639b0b14 100755 GIT binary patch literal 57512 zcmeIbePCQgxj%lACJ=;}REQJ-Sqg;$ZApQHB@oElwp&Qrv`I?krJGH%Z5HxIb^|RE z+>!>e99H5>v0ecKqPHk$)B@$Dkd{gUawQ^4FQP^TIk~r9BO+D>`ujZ3JacyUWVgky z_xI2D+ig!~o|k#%nP+C6nKLuzoR|LohYt=njI0@kVH}3*Xj}tF8b-fSh?rpg}|3p(kLtw}>a&a9YWWPTWTptktfm`0hClu|3%T!2kPJ*3)Xfo*cha){r zVF%@w_g+wut`H7_vm9>2$P;-~X8I|4{?=eySFoGm)bg%g%WTFsRbUXDEpZN}>DL^N zbcZ_D36ER94@BMrhbaaPYmq6kf%N-3o33g0w+ADw9f9`XH2dA(u2SweN`)HEEU&q< zBb=xZw|n!&=?}${X3xHNCvAio6#@ zDGg_q*VA!BsH4Rn>R8(eCbxbMd{(8@O`Kr2PFgmF)Gzj-f%^Sb<@M!Bl&HjuC3L~m zFG%GAA^ZIuZT|3v_NLA@e^;bCqde6cktmv457d0LEE4JWuj@?I>U8}Ik)D3FDliC6 zu2+&bQ)m?U{cV8*>DL%l%V`4FRx$8)749`OP*6z#3}uvtGhGOnNHp!kvCU~ zH3)Xe6N(B%UZ_2=E=Wz;tzVP0xbPF4EDz{(^%3rYn@=Y%dan}X z5qSiE2zjCF12k$(FYl1Z8x(m2yW|N)1yUa^fk=Q6?(!CYP4P`+sgU3U%X37fl~;IQ zsyu=ZB#-=_50~Fxy>!`S-m0bAVGb)fMwx^HZ!K0Z`2kUx5&8H_ZGM&u-xg}Zu(Y6M z10uvY8y=5EKwd2b)PBz}#?VOgZ`NamF$nzD?S?UeHbrfnWZF9n-G|FfB=Vt#X{@aWH`}6hBx+;2{#|pA!;mrmK>C+=bzK&Uq$@z>*@^}|NT1dueT-utLM`8QAi0&D z-ND73JsoJ^Fh@H1WT0do$)|BzKJ&5;VE+T>QF(TPF7lJ@Y8Y<-n`&1YVHT7pTh%a5 z0~fWERc6{h}$O4BfaL59OEO5vIhb(Z&0*5Sc$O4BfaL59OEO5vIhb(Yl z3pDs*Z~FT7Hu@~@tZJ*F&=>377wdV)7i+M6v6_jhnD_OnSj`@v)w{1c)-ddgdAHhI zF2x#G%scM0dT`~&ZUJcJf9z($j{0IfL%!IL?Y|IHJb%+#!oCDnV0R50_Ggwb_f?$8 ze6yFy_9$^%4G?F(#;8$yo62PjSx;C!uUid!?B$d;<{bgbwm+um+X0MO(Aa7~v}UB* z@)lNGHM8uGq2MUhn6Gbl{9rMNh3Je18h{W1Yw^u9f zSD71jBlIr2g0OwNYp;HG?Sf=`)%iB=-L49$+sIU`XD`~w1lq_Rw2@cPM#y$kfKg#| znV;bNUaF35UcG<+eqXG=7J>aMERLeFG(;&de}!EtY8|nD9}#yFF`nPmqOjH@gjLO^ z%1a6I=c{zzQR(bKmS#T2;HbTkK-E6>SUs5#&@e;j^xrOS!z}A{Gm=n20-E z#6?0}M8qK%u}p}pd>@EV-a{ssR{p0Q{Yh_F018i$$U3A_M2k$bey&~a!W7$QyD*FF z6J3}x`$%Av=?0U3;y;RgaW4!*CS&ta2z!_{>;!vkL}zax1CQEos}{J=*VntxDA+{% zI}1l*yHHZ-ZC=G(FWJw5tKjkx!7dZ*Ft>VUtQ6EeK$UOLfs`r;f!jjU!eySt^ijK) z>Eu|5uH4eGLJNS#wfJ}*)xIKT3sLnjIGMiP#najgDnykvhGt%a;`KoJ((kUPBKD3e zM>K9{k-9M$#-hs{VE0n`pyEn#SFcu4{^ngo5_h#5sEc5rQl;92E*m*cvS&Ao8MW`` zq~1M*-wS+`;5Pw3Nn5kNcc9|0L;S-bZfBD&2KG0`?k8rFSZv#P0s9ZLc)C zfDN2;F*Q0>Kbo%UMz^+^?B$OE-+|@*3HrQUP)GvT4sv~qytfNxdTmgsIdS_PWzLx@ z>rJqLv=5!X;(CzFcX0hS5?}1#`UO6uybChQ+qid_s>{m#=9Ls6S9DwMhnNjmG%+(< zdPtd3yQ3T-HH`k_Rgxbx5P@7q?y!nZOx_1~A?fBxy7MWWWfpM;=lf#h(rC6IV=GAPEW0q8KF&UF#nFv=4_97P*M^g0#YLg}E|YNC_v^9NAo zw+lXfR34B!1$PtUR_6dW(>q8>=uiF}$XHvjV65O)+VBM?_h`usIUpD1-?t!~pfqrL zg*5KwKKyAa2>xSixL}Nwrr8R@I8C++`j1o61Y5{hOev_@T>Y$Fj(%NmQWSvdZyWa( zXG2~ba}_IpC5t}77lY_n?*yuT4`zBO7iDZ7g)<9k#|g+PL`? zr@;W%PkK~an3d(6T5Xl(RmZAM%|oP+BDfPMn?;dX_O*~YdBWkO5i8j&O4ewt`jgua zWa{=af!xj)W)CrAzAoTQfK;DoIx}mAse&lh--^@#Bt*NFEDI&sYZ&6DHQ7d2mcP3W zOfcfZ#EkL^crQT860K)u4L3cC^;2rflEQ+^pGUOl{uPRI2=s;l`V%D$x1+i3EVy-! zQw8Qm5naimS93S(Urp*HS%hJvLFR=_1`L9M~ zX1vxVl3^{904fOk1yw`$btwyc`y#f$?W-uzt_ZbKI=~D&d`QaP=n)m`F9X8vL8=Ts zX&*I6t7wHvzKD~PPb%gZ`6R|!aYEShRQ6{Pw-qPZ;+BpEfmGH#kM0!6Is*4oPn4QJ zO^PycA-O12&rH4>N-|uL7;f)!C3G(GnN%*Do9i2$$R5q%UPz$iM5oMDIFs+62(D!% zR!hCCW+hMoLZ8`B_Z-q`z+P7PcEMF_bCS7;X?ea_d=|%i6!oZRA)<3tbQYq;h?4g3 zd(egP#JrEJV{tkokuEQhu27|8HIP0|S+f7T?9mdP(U zx@w(jlt?lEOvyKW{-hU`n@sPMP-Q3Li(SG*7blS_q)se}kVfoRLwyl;vXz+JuRuAe za-T)DG@huXJt|7IJE5XfyS6Gkb={eahsr)`DzNcY3aez0`^F-GWt#2OJh6%p_aLpk zZxO)wju8?Wm;7i5d4#CwX-u%p)7kSpGDb+toNOZ*n`bc#JbRW8F5PF9LuI&hM4%;H zIwH^!E*-s*cs6sngVEGf|-c6Re`! zxzBFiPDrb$nq@qa$1Fd`n#70FkJ#-$VM;D7n_7>moG+xRnD3})P?GIP0{cZNxA-GN z9B}8t>K18AOwg1GR?!6ehRs_EX%)S2EtxUCk8b^An11wAtlGlBcoYUmAHr%HAbl7h zt7(ArVSud009i|UTDf)b+=-b*LH`k?=*HbNLBP!6a4=0@k4T*_$Dj@x%!inN`$#NBsfRzDi+LyRv6B~lZs0U8**^g-X)UNr&`%KhWy!o*kl!FV5Mx;0clsuB_+B3~ zby9gkZu{Y6l-BtR$OmAas?ws^Lv|49fjX5?R?U#iVU{zN6lOR6QBE*wF9MqL$>V&E zrF_^P4SOJCY8^l{&yQ)YEaqy4i=ayW^hccn%;Sk7u-k>}X6 zi9}3mh@{rFUI;STZbP1OzkdlUPR){*C=hrD?HVSV^N7TET%&dgPcA-2o%?(LhP7F$-Z`MI*_ z@3YDVdPd7`$Mx=WS-t}A3vj{P(JXP1GdFA5wlry3O{S|v4wzF=+;_pwf=yp@%tAX$ z=9y9xCxGo;?H=3{=8d1$6Vb2R%;XqQN7uyuHDD&1}m2$Lm=0r8aYd zm_(&S;T}NeLT@X0`X~19=1YYYa^o!mD|Hg?=DAX!XTZZ634TX_liU9eJTDn+x=nI` z?5GfLcZioIh|NN5C!%F;5^#;?y_ITjJ30_Ljtn&etm{j533w(yLFBAtGCgnr!`a6Z znTCXh$9{&6+U4W9~wic?6176}#su*uE-tlW_xS5yNc3%6*S3-F&l=Fr&6#QAQvFJA{SE z&HnpbW=0ps4&jco7{F8~_xmd44mTr~wYO#=6L_gnopCTINPhQ2G(Z?oi#8 z{H2QVEwBA+k{>r0_$Vb2RcE7(@g~wk?PXgHQx>K#GReZWyr(*L%&B(aUvcmGW+MOX z7=@@%x06uI%u@N^&e$E)!&DY3*3VtRuk!!#5}m*54V3?HPbVowS9%e|A8DlI@zUJI z1m)j_OslQjvq7tlvFA^>F$zc8#ks1niTro0CR&B*7v{V}2&WJ}fN(Fut!Q+^pbxM^ zj@1kz^Z>@F{Hp!UGf5ZT6#d=Rh@z0+Ae3%dnda+g9(q5t%(}eFTJFPc=v?fE7W=Hv zE<)SE#2qtIYyi-tb>uH7quSn>Hvi{sGMY{L)CS)ass?fFj-}lnef134S!3a@{m~~} zL?}b|rPmcxx$Xf`-#t`0`%{G(_cz1fPu<@PxG=@`awQYnzH0xYZ*Q3{O49xv?^x2V zW$80)V>&f}CfPG$UqI<;>AA0W3Qb;(&U-OVlY5h1zXvVuYn<*S`v~w)Ud|0O*J?ys z%Zy01{g3Kh<1pWp)w35{VRmc|OGoddU5EyR<|^SH;Xc3{82^1Gabf+FP`rWX?B8jB zvcCY%i=2sTKSF+catyxCM?E<==;?!xzY3SmrMuId|GL`kXWc?e)a@IE?>*sRv#0chmm681nIQTXu|5|cm zmf6Mvp}2RY#am+kwhc$}tnUnT=22dZ$v7MSV;Qiz6 z-apFy(OYQFKuy~Z-MDuMGXd@rv0kXyGmHcnFpD0gmecnE%H40PC8-Gx9-(!`f=wrp zONj5_LBV1i)~<-drZw2fSs*Wbce@8cY?m)CgU3tucR-{?Qk9NYB8qA_qkTZn>>pP- zjd9RFlAKd54L_DFFK#9d`?KkCVm?e|sw5|#^V5+XtLS%BjhLWOPQ3Of3xctJT3>U@ zRIG9$9LhvXhIUc9oR|+ey>^N!6OZ>QrwvIt@k(B7^A-{p>mN+csZixaIOIee_O~Hy zn)R3uIdy@Es=~HVVea`@>O{yZ_XszW=}@o++?W^ML!|?7^%Q__kOBaLHvZI107EzL z*lnd47-rUB>9??kspAv_%S<{Ji2YbKcGFnD1u)tcRu|aa&={ZpEY+N4erYuVG*w!F zKA@+B-2MSprZ7&S{m^Vm$qVneqs?P$m^CbJ)V`C5Y|i{M(d^&N$-{jaa6slRR5{;> zfry9ZBN1Dd^RaEI0<1Gmo$Rf#>>PDH3OF01ry+CPi+ZdHT)R=XY|_$K{0DN`lMRJSAdGViEeta<(-h?5dLHwx+~LdEDz z1vz%p67*j@K*!AoN-3AvPrxw&4qP}4gK0+WIZQbpW}f^Z@RV<-Sw{KeGgxsxp7439 zW6Qin3B>AKRct5D8b08SjbRS?0MdUR=@&j9!+kwX8FE`WLC-i=CeboWS8zgEgv1fN zSkEA`#cUcu!$5V6R@eqG$sVwmLXLOgFREhy>5CVg18pF13``{SXcpQaLe2LYh>G39 znkbS+?T;cUxJSTAGa!g0BizbdaLl~%WKY5o3Z=@SbfIC{FM(42Bo!T*Lj`Ya4|-Sb z|6pYe`-G76CE}Mu64+m{HdC^tSl1uTIhB&xagxo;wYgoa08glbN=>^{QHNoATn$ju zTq&e_R*KNHAYxW3G%a$LFeR7U1x?Z|b3uZ5A`#K@kT+VMo?m*L#zyPqI5@0|TXYYr zbkt0)cFTOUj+A}L-t$Q+6`882FTsIC=8N@;-&k0rSsc?bduk@a4sJ@zy37&{S*RJ z;V>(8l@Asx{WPaZK97`q9xHXfVtyL=8yxx5%R}_k4&;>V-pE-eaV$|nWG79};!fs)-*~h3+yMe%XQOgC2 z!@|^_&!_)lmXo?xrMAyhDVIvh;|b)(r|n1Q=lS?)588eM1o6m-wqX{rPA}PS9Z$LC zf1Gl|Np_yJkq2z2+~WD41m3%Fgr}Nxk5T&O3gBbT9T}uz;CO+$s(m+!Vuwe!y5_f; zbJV8uT`bx%hXvKGII(F$ORN2h&}HEVDACQ!NXDpL%W9d=fTYwC$Nb!}K#Y3#A%!uC zK1b=sk^30ZUcu67@;Yo6a;A*F%t3Fp|Mm$=VU`h!@A5J3(`MIB``1i?EV>n<0fP_c zyYAmGesyJ0(%k3HqkxLL&pA2$h+5CsTucMAI+TDl36C14)%41|s}|`{zAnygvm%;X z1bYQxW4uT2>)SC4DPf&&aw*m6Y|Fg5hVx&A{P&~aN+)cV zE=P(kJ3yayZpSLR;~Y})W9SHQ51YA|w5MtnorOxRw(>VslkPicg3IR+_)tN0?8jhc zoE0Bq65lV_t4RsVyqpqQ@e!u*ZPXyl`>7PoSg_#3F=YD;cx`iHsT zd~l$A|9F+fRhH1LP@lZvd$wvT&SsC74x?9;e}4vUv{-^Gpp)87v2q_M zrc&cSCKKu)={VG;Uo+Vj@MaK3OkGCy$UGiE8Z7))S} zrH-%mOe+{QYUdD2Et>6tKY?E0;3;w8QlgC7zb!%-H$RWb9jDdP;ME_4mwj3Bqjh5d z!8uEj`W;F`-oCGQ97}O+j@0~XsOR@xln1N_SiO~yzmo7)P9B83bQvW^|A!D+l3+Iu z*K3}|jw5HG(lP&pM5?bys&gr8Rf1(cCCH;n@JH^9G|1TDFfPzIag{ znSmzdLZDUjy9+tZA2_Lb7$<$zw$Uq40thw#v6vE#+CL+ddO`?2pm(d)^8mUn?G@O2 z;N-!1GI!|BgkqPr%f64rxwJxJnMrqGICC3QyS@CBnL4vgr@&)s%bA`=i}ggI>MGSf zd{(wPvsIBttDb0r6@?TjL}Zp)2mKY=IuguRHnm?OP(3d-00Y4i<~h<^wlOC?O2z0? z1bvT#F5>49EpsW`0o%B0i{&O_h!_3nY|iK%(oB40Z1W)bQAUd%JS;6p_o#aQ!P0pI7YU{*`z{11U@%LL;t4f&{; z+^0_?t;|jl{5+?Td4U-a><<`A8pPF%!CbB=bdPoyh~>OLrylbmJr_yB8$ol5b(SE5 z$;eL%vewDM{A!gdPAO1O(Yp--kCj540i0ga>=V8sl@v8bTR3K$Dn6<95AFi+>l=4d zH%zlWA^Q>ZoT*j%1nGkH?@HXvj!@F(2B6I^N(*_IrJ3(Zw)YZ<)rL{;8<33+@HZ~> zzEcqYFY51B?p;dOosdOUbDc`NMZhKneosWzDN$(X+}QW|ntR{y?R+cOm-PWVHazIF ztboLt1*8jYI%4_!L>9t37f8{A6u(D`x4DO6jrzrpa*8*}av`&s?LhKy`d z*Qoaa1lV7!*@}Z(!(1!8u0cyNG_j)dG;p>(1NLofWE#rM-Q^@`)V`Ha8+S(`fg0Sj z{X8;G(({t)VM+68wmd!LFltvRp%Xr<)&s%cmV(YFv|8Rm#h81gu0GD(<|6_gt`ZZ+ z%Yu3*9|_g&Vj6w^$^FF}AWS7m^Zex%iJbI$Oy>Q=bHSXte|WM=PP>J&-a!2`PG(P? z1EE^boG{VihkWxlaQm#GS~$N<)xu#UDzVG854C}Mgh_d+XN(i%U@?fMMKqB&e<)pZ z^eE;8I{!7YpJo2&5)wtXnIratOf|PjBmfTe}Vf%V9XWIk`q%R6-){F23OvM4UTTfF&N`0pYoXG;Ye;p+S`2f9T5}YK5 z?rzaXr=OQq{%^`hn}{jv1x4SW!uMS?Gxc`;G3jOZQCEzc znNPu#m$NBpDo6_w=6V)GCLOa^ktj@RaHbNs3C;ww9}_%eksIeMdiH z+EFfNKh|j{YCcD&9Wen-dY&)yd`_JkN}bRB=SPq}Wqn1rLnZ(7|AhP?^QOw*Fin2K zf1*mJutg4IJxh+oDy=F-5bKSqRr9F*NlI*)UPh1F1qAXfU+&wSz&u(ge>nn_W)?M8 zMogIh6Us6dUaY{M5{ND}>U{-9hl_vZLhs&!cr9*CVC*Sha}AD8=8*H#D>%7eo1D$` z+%RXyi@j6Q9B(0k@uEMS&T>Z}1ebZcu`2Y_^xqT!%j=4&_Xpo8?Hv=rM^a>EL zl#kb2(B@3P|j zp*HT0BC#Hyo%X*Em5Gjtr`0X|e?ga=i3)w?S zEOS4DqxSOzs$TSlV*C%Ge3uz%7{YAK!$1uTNLHiqsb<7JQi<9|-Hvx3X{~XL8tu~9 zh~23qqm}bhRCkHk)tm@TNjqrwe4*IU-!dO((WNDvws(*61bggbRK^#I$Xt~Zst|r( zEdouTh-!U#)c!sCF7$@aM?o%Uz|3R8YFhamqi7e+{L><`#;E-RLZ!Wb*6)AdS09)= z!EfKHm{AF7*E4E$d6aWoOgXc2Dzz@6+?!&Pvq^83JB@f@UH-Sw`(}uRfi!WXn7KP1%o%g65aIj7wmyOX|Y8tR{D1 z56akvm0~bY*ngOTh-JP}LIHK@UG{5)QZqv>zcBrLux}KyuJ_pMRSMLuoKJH1&(C`7 zD;yr@Fq59oq3mcEDdTktym9Y1RWJ4%Vm(jMRzqL!2u2F5a^O_8NFP2_H_OQ&t^C`&ZeIV?U?*9pfvZtz>>3D_t)Coj8ANN{F zP_zJ6SsMGz(%6Q%OJmo~S~^-@4EY8^Pd38x(Q@2vahQj!fX{-Ju~YJLRqW^GPr&ON zUfNowwHaD2Pkx}>8|8V;Ru~227KW2oD_ z1>gPY(&m?aqdOsezdZv=f%KF&_S5p6|9z4->$UQq{Qd3nf-`qff@#^A>}Ycni$qo&cfRW_Fb?CiuFGFKBWV9AswB> z`#%)nMU&X^{6B%t0t=nUFn^-_3k{qy*BAiD7<%^@#w}_I+&DHNk~oiu#xaFvf#ZPv z(ggMqnRd3J2X%_|c@)z52MTJBvG3z2&}gd9GvSo+p)etD6K-Nw23c|rw ztRfkczeg);T|lwdDb`J~mnn7|#l|Q$M6stS_87&sQ4A4d@>>+UjABC+dyZmvQS8?g zyMtoyQ0x|p6`)y6QkQ8hrdS8XE~8ir#jd5;6^J!=2Lq9yr>nE8^ZH=7=gK){S9|70 zT7hjT@ysbZ!w7^obToTDdsO*wrBOHv>1iIISIy~(?;Yi2n5l>Ul(;R4P z3$`HE9OwxLJ)w?Bu)8DB=4lSLwRu8e;<^^!CGm8w^(?Ea=!rx+J1Rl)t|xKj-QArx zENx%+zay}TrE@7uJT0B&&Gg=MBLy35?}}{j1eh|<)6p4e#V2e$kxox=eXzMF5;U6l zYb^CE<}I7I%CCT?8$vCSR-?W};S_X@l3~=ZxrEUg?g_OR^<}e{)z$IWab`1-knI~P zI=fr&?H!Th!0j89Q4<7#+c#+QD2Yqyn;5g_od(5{NXZqLR8-I0_5dm>V_m1PCUb>4 zt`D?@T0E%ep7vlzBl`h7slaLNGBX2TRAxUwX6vgvzGWZiAlv9#* z2vinIQ0co&N&&7HCkw@wpi(Tg>Q3XzV|=K6T~aobl-dVj!_D12O-<6dN<1NaHr2vRf+1w)W^^&!n-R;s-$$2<- zCM%EuVBOY082xg^yp;xj?}R_1V$`1kxFrbwP!~IZlqD@y@HF?}Lp2?ddLESw2=8n*LLH&V<)KLH(iTw2_jH#S zAt%mcqZ@545QY-LNM&bRTc9f(Y*`uXLfb_e{$vLGqLKqJR0o=ZZ6!u?`s4<;|MHIJ z*3NG5;Il2=aH$dRbv=Q$`p!y11Ue!tpN5+2gB-1E?Ytpe+142jR`76ClBf!3TB}B4 zT_2pH7Al9!J6e35Z7nH;3L1-;rGiy~rWiS?Jk_C&U>~kj7kEiWCG~Xr^L{M8)eUFlgI87BQezS;3?xJ z)Vx#;k|hQWfPfo9EhUDGs(xYfYvF!kii9F zx}1nQBd?6r0WG$ro)sfO97`jJj8mtaZv}m|1)6ZaG$9Igc9WK=Ib#%;Y!H*2lSlSI zPXu3gaT>W&7gk&q3Wu6PZK249S`v(~#Gnzy=)e^U*PxL~X99CQkIG!5)JQu!IO^>n zCx^-i^H+Hm!`{o+lJZO?kRz(7RCCgm61`vv&n&y^TLT@-yQg)D1Yb4U_Cc8>z3OV5 zv+6tb(*9{s3AUieMY=oN(Am)+p;HAld4{M9C(+QKmAzM@i0it8!H$xqww_=~pslMl zz~bxRAW+s&SPa49xT~;Hq`bAA;gB+!_D8A$iQAb*usk-8s-VP#BGATD;Yd)8icSG2 zsZ$6CU^(S&p>-WJ>td)O91PcCe%cnK{;s+@H*U(w2(+}+^)yk%GjnxdLuU`ibBLr9-_k~`0itO zs5x9h#etAS5=ueyi4vzPmY`2Sla`7NC6P`SsU6dnP*)p`7c7GPbAZNjlEZ^~36)a3 z$>Q$Lb~h4qa^}b($(C$kHKSh@pr*v`rM`1ZnCVdYEFO~8@P3<;Sy>U zaDAb$Wo<^l z3btdm?2JLECb;zWaD68jBAw{EB^cSmU7c{C^_>YFx`Pq;HIOK%gsCIOjh!7qH3dwX z{UuNQrp@y@dQ{$2_%Mu6Cv$fcT*s&Zy3OMd)6H;`(t_*@t!qUeZcUy8r*c%nV^Y1t zhqnb+QXJz%sHGx^`)YKiU^g|tj&)R@3H89R7(OW6dLWLNsB)k z)HI1tp4EY$XH4ZSE$nLp@aV8Y2i+EhngbXC$)|vc?<|5Xe7D3Hl2nIjD2#=ct?pW( zg7Sl$MCw#wIE^!1QhCzqgBod)Gr=Ia9IGWTlb%nd2%?E+XP|{j>C96r1EdHI#87n^ zzHG;ll*ybo+#Ki%V(x-DY8xic`ShZ8-$W(EXs7Y zBcG)-%hG5#4t*=&XZaZP)C@MI{?-QII#cygHo+XDqdC+SXiFu+O=`EAC_MSVF5+`} zqY$+on4}de1ugg_UK`act z*j*QB@4`Gc%mE>4iMs@MgXKKJ!`VPefW`n!1gMP!xlWKAxxj`r@-%J0Xoj>aJ8#f( zl^8>@rPQyQ8e!l_y}>BKdYt-|sepEJjmFwqIfVA&gck8vR{ars5ZuVTF#r zk4Wp`v<^<|(EB1B1I>LpEZ%H~6HmYs)k zVFi&Vm9q_iA1)n=T}+%6l-Y+*bnZEnhzxnoc}7JdXR31K4n=4N!_$-5MzgXrSr+V+ zu!N#Y2BIXR>^xROK_D5;VpK_ty3=wf@hV+KYd+&&R(Ayk^-`FNL~E|H*?Mj;n=(r* zt_s_ANlH1T0n*R}N+CYnksz>c+_NQNDk}-OK1Jm9s&Fs>Y0Kkx>53J-NqlJ}NSaj2 zwDeMnRIZe!#&%UTbsg-Q)WFi_z?PD7Ci>UxbIzm0WwW(O922lf3QDvFNLX_TO2|1UIyBC1(APr^1KWxmdJxjjgNwEh@ynXPjtlmC_XQ4-;q!kqFN&3v@wR?;7KZ6yiSD%Ir^lZ=AXh=Fa5f(6HY&epNyLH zE0%ceY84rl(BYR#(n&P`;2MRQk}wnhTuIp2q#}b7I{dDhq?0!E`#|jAVJPuO(@&D} zpOzqTOw+4{zAOX%t3t2MK;J8LI&YW!)AF-VHqOMxgi9h(g`WY1#iULHVzOMVbqQdVBUu(a{95|$Wj>7db zDc`SkJ|30soemYgC3xdx1z#?D{YCKOf^QMLag*YU&Q@W&;PV7uE9H1xAA?mI?lL!RvB03f_ZcIk<-I zRq4MVe3c@12GDu9whH|#Lif7p!$QAL=u2Gm?Lz;S&@Xk->Ar^aC>DQrzJ!$$UMk^g z2^%G(cd613tM|@t7_o5&QW4#L#$D}a->s>P(c2W9sU6PK?Ikr?Mu^&B9Wq&~kO;r$ZQYmeziuj8fPa}rW~ zJ+48DB>i-KtsY21BI=2y!UFfMjF4t=^ zKf2$=|D^b5H~&i_N6&Y(eSRVMZ@c77WZ-{O@NWB03ErJA)hG4M_cG9_z0v&Pmoi`f zt%Pq$__l<9m2ig4tB;XT!`hx&FRh2JcU{lAUUfa{`qAMIv4gG$El1l~!`hD8ZW`A4 zzbtZeNH(CKo_8xq&8x{z=3lQcZ@B8=bix18g@0e*V{TUI4kVxaS(V7C5Pp@)Fq$*q z`vqU?;{S%=wg1y{p38u@GvKcgxjNh=@V7FAx_tURMdz#A*GFzpn4K^hUvZ5) zwJQ{Uf!IUWQ#-01<^y}h_c83&Ep99$Q|odIWLj^svxY}2(0~R z^7;<(5I&vXd(!3iiodKSrVq8>`=#iyQSzNyt@z#g)n1|SeX@?C$5+pl3co?*Xg^ja z_=g3r`J;mGa`6ud-UD&u+h%=D$=xS>?)46j(CMqY^!uXdul?d&p&uo5_xzjYGvxR8 zi9gJedD=-5o+{!0hM&wsJ|0}jKV4sgQct?R=59&m!u__u_lrKm59-!eVr=dMH2cXY?iP?LS4Ui2s|XAUT=F=;2%r)QwiUcP_O&x`M;ib>va{qUZU4Q z^!?R$Wq$sMgilELYYG1>;ol_uK*C&^N9*+#y-uUocP!V!*X-pOy*8LMiyZgXL>w zl8}neyFC@o1m)eKD4wBA911@WKQLWWYrmjkT|*j^J{TWb4q4!k1^!>Nz|4~y8w)DxD)qnUakIMet^{JGxAD~SI`yw&b>+(P zuDq^UUB!*F1hp!GI$luq3Dn0@x$;()e~5n-D=QjLDDNs%tU6TCD#mx^)m1?cPb15( zxT3NiYJCXFN0<5W+zTH0!c&KMvOR()pDXajj%$q-*Od)|=EqAhny>XYw_fXC z*AwV&F$mcb!uvuZ&8>cVCz1a;;954cwScv!$=^gTvgtOWTj}XH`eh9sQ-&<6g4c(d zgDaO*@T2nl5T6mvgS2IJ^nL>8g%9*(A7zqwri7knNjxRF7|#Z_aPn$;6~c#Ot)rKm z9FSGsVWRXx_RA|St@Kw`m)F(#PlYbY4>?AMFPhGPmlw!W`9^e$DmWE=njrOLBtHs< zXAg~NV;UBI&xjEnNtfJt;g%8gOi!v_Ll7Ono8I`BMnWY&RjMEFA=?_!2}j|fk=*H0 zseYi&-!ltcLJx|j%Iumhhf8fl3o}sonZ#(+(PcWD>uoDa`QZa3(2qnJ(KPC4V&YLM z)gWC}ui5ltRYr7h#&p%3XX;S>?`1ZWwviF7)iP?l_2r3%rXF85qQlt-qSF(dNev)X zM7kPIw53$u>4i(Of6=toTjjjN#fXmmBXcp6A38IlK3$YVG361`=+>O4H8E8&%`ogV z%Ej%@3J%XyiA@tuSYBM>%%ZNY4LRMogEo8KX0^v}pKhQFSL^PfWx)8C25=%4&I%6QG-n+Wq_*~A?nkB}U za>|W=%gHgeKvIrzH~$^tzYmb??8^G3%a<7s=2TZ3-v!%NCOt%?oT{aD3=kWj&(5$*Ejky?iBNZ{^e*e?W?1PO**uZl`qF%a<&v_8Pb4t}I_xS6jZ)yR6<{ zvBZeuCCE=P*9dXtT)wob-si6=ue;26CYQ@qWBf3;rhMg+rD$=JxfRP-R(V(Yjay-c z-7FV)PGtNtw|uoke+Q{!EcHd^sq-yeTyOjxav(Q~q~lC{C5iau!aU`Q*YG@8?S>S`YzdY6aE@AmaZya$+I)vj-59bEJ%Ib$%BV$ zzifQ>@Z@pE7|cV3KaB&DGnUmEO!~M}=a&j~N9c2B|g-v<# zx`o>zdKjWnWSznH@=`MBJHpA}2Z;>E9i~JE_a$ZUrq1BMkwNqs%3v%08reL5dOy$j z>Jg}d1m?~ojLpF8W6q%w;veI`Q~Y4khS$MX+%tQZhb26SCJz^r; zQ#N$?c=k~CU{+(5C?#S>YLjm5=qp@`bmm@x4?xS1#c5rKR@`IPJgnZ|6SndYz2S(NR@x#DGEMU;97yJ1@00! zB(Q!?uuow9d?0-)gvv7|{7(t2p9lPf!1_7Bw*}VE|K%U0((C8Z&JkEYheqF0A^H0G zvtEJqb7yx8te-b~Okn+-+0O;m&zJpKVEtU#G5JdV&_ZR8Qw1)&K*8r|`h^N!F0g(s zJt(k#KK*8a2TK)yOyFUGHw!#2@O=VL3A|g=%T)S53ap>Q%Kxa+S3iGszQFpqt2F}a z=dErMSU+cVufY2Gs;30j&sF_OVEvrXp9R*>2OU+Q^4HG=c?8za11%C*KL=DRuzvoh zO<;X~{2qbzx$&O}tj~)dRjBgQ=fo=n*5||h0_$_(QB7}9_PbNyk;@hQ9Zi=5Cc6dJ z?+f^)!1|nL&Pe&fBQq zO#&|x_-=t)1>Pp`7JGOt^pMDN-zrgyrzq!XKx_-`Yg~0mxv+D%b&zlVjte-FYfxv}wp63?=>+`q& z5LlnLJ-$fgr_a~Yz*B(w*e>=zR^VZQ=L@_|;7Wm?5}2ATr5_PEEbtow)A1#uPY66D z@K%8z75E{6={y$k-!1U31b#r^KMA}=;KQ>N|B%4P3;epkXA8VX;3|P%6!=Pk#{}*c z_!WU~6?k0WuL`_d;O`I&qv>;LG|eSgpI4g{c*_tJ$L~lOoanwG2947M*5}#00_$^a zR}qZ%lPC3S34N=;4+*T#oBdc|eJ<)9f%Unoqi3l6_4%*!1-3<>6$C@);$o$rU*M5O z1$PN-1Qq-lfhU?2{6!6aLc#Y7JiJ1|-xs)6(vN7mz&{tb*su71PcYiUfY^JVz&YX{ zFvDWHA@C;%hW;a>&nW_r3p`KY!A2#&RN#p#6 z1U61o^e=1vRSN!hz)%l=)$eH+{8JbFYZsiCo0@*13tp{YSWNv|T=b}mKIEc5>4IN# z!GChWMJLBWo_%UtlM zUGPmV_#Op2`E7I2f9#^a>7sw&f{(+2(PVoqa>0HDJNn<~qJK@n=mqNchzowv1^-UL zj{Z4Eq}t~+1v~Q2bHR&U@TXnywF*Wl)$e8({c|q(E*Jk+7yPITe!&I5;ez+M;F-9e zfPEc(<}27KA06|20@stccHnvj*9flNxPFN1Ib5T-#&A84>jhjt!u2Aq|G4VoitBD%PvP2$YZoq(@vr3NG5oS3#p?xnB_ajsELx;so%M?pY`t2kNX4bD zT4U9e@Rj*Ve79mnOG@X}9 zGLv{wB9-hcdMNaVUd2)D$;&tTg_kJ>OvjK~$W#tp5O+b7xin8wVKb4F3Y^T6D70D< zmenM`f)b0if}oY#L^O4oQ}B8{S3s?zPA2;gn#wD%&Pu3Y6H2Y~yOu=#>#(^?YodDb z%|YmOIe$l3EzTmMR%iY0b!~r`-||aV(@V%e>8}LQ5;B2_MPz~!I;k~tZ72mfg;rpq z(CIgrv5PT%a~Viyn*?#4A!(U;oB2a9s!it1j44~pU~_h)QoBd$X7e;!;v)jQLFJ|= z?L$u^@#}J(t>XK9*D-fMRAPv2g4bEpl8wAiE$ zsaJuQ)lJ*Nb0hbmi58n-n>lGW+MTUVOD#2RsdS%riB9ZI zyCup7V`vbov%)>eg@yB%7jXaI)o@LP^1;+5c3` z$%Mql=d@EmFog4s9DV^e43Xl<{Y`Y($dA{(cV3Ip!0&JF#9nf1unqgTLL)4`0)S72 zxC!&G)U8p*cMrXP{Ay!59$KgmvN&JR$-pJMo9jx_(e-z6t~Sn^mUA;4B%eY^myo|Z zmyQ6v)JK8R5!DBE(orax`hrk8s(gSa9SI5bH+<5O@x`8WXr!Vq{UnprjEg@CNIR%_ z2fKVDCk@j9znYVVUw=j?4GEe!UpPub)}P%;L*kUG4Wuhb;;TWK(k8VGZq;gDB8{34 zE2wYxP;*V5x%^8l-0z2Eyfq(hP2{L5fQrkvhUQ=Cc8c5!=#BmA>o!!NX)G{D#q^Jy zq-CY*qxlk>EuA3uSQ<_%203EpnDYIUw0t4`8I`nDmLlI-Nv}{uzuY`idS^78mfk~Y z-N`)2l9Ej44z;gK$Ba@==S}L9$tEP>sU1>Nox2fyPA|hpPAK!li_jAZ!gB6{KfXg> zn80*Fe;VeXY1%S=OyrqZ%6J#P%EfXDfq!FP5U+++eMCa0W`j@)b{44cb zjr&acPj8Tt4qHTKMj5`~k(M_FNv%oCNFmU-JW>$gF5`E=c;KTsoB! zTzXtMFqa;}QuEY3iK>Y1Di)-C)hbzH8cyx34<^#_%9$A#$QQ9Pm^f+b-mb?54C} zWJ?KVIjlsaJQYQP0#8-YfK-A~NJ}9pq7BF`Rk<~4)f4Y35drIGpWk)OHD`BEHf`_6 z`+fg--)^!ybA8UtH8a=DnVECWp1=L!U&k6o#x%n)j=}dte0z^Kj2vz|d)A<2zl*et#smJ|X}Dx4wbX6z!g?R7h}Ef}Mb9GU)e*BVCPQ z2j$jx`D#VFRyYXGaJUU4NAyvd>7(@d*9KcUf}ISfmUoNjdz`rqgWybwb1*4?P2osq zsBMk#xbt^~5G=`nhPBER-9Y;N?Tt4!`CEgLwQYgc;3WI)ZdH;GpP)hwPpz-1y)B%m z5O@C8-l`;@7X<`U8=2}O`DctdMrdyBs#(mAC*)f*ucO|1uNK3W&4^!wMeCu((a{_-JDpBfby1Si)k z>6;-m3jF?-z@hTj5LL|URbUXDtdGizuIzmLes{Y|wcp;TVx15Pf|K#kvO9kbqAy3J2tHIh*8NsH1Gm1lqHjG74EPXy1o;aGTRMZQ;hx?4 z#jE@tOfGMs=<5}I1iSPJMFmnH&4EaO5$^I1ioUT7#ZT~|^*O52>f6$<^k{tq zA4(tjJs-Y)e^up@tGyMK+F=eTJw~B~0*_v(VDbZ!Wk%%Um)iVH7rrIbh+%17^9DqS zaTYuttAsuu6!@Mpj1e>v{mFmUF#3S+AH)}JirPBq9NKOeuOiI(KKM^E3`}VppLadt z^t}Y%`|w?e?^K@#C^#K+a6rp{oq&60WP2TbC2UM$udkh zd}w%Hi7&~jet9xt8ODXR8^V!b>xEUJ#?CuwE*^%F?{D zL~TsYf5+@oF=Wg=RQ^jlI<5{y(iNcmLPeAOuT9F2amo{@x4gYGxTw9W4GkRT zNT;6+l*}XPG)zioPR1eZf9N#IFHF!yf3jT-V;``ocBK(!UTLyb4dY|rqIOb(b{j=_ zp1{mlta`7{>ON2vs~_;iyj$&@tFUes^N#wg zE_|~qHv+VBfAuNC4*OzV{l3@_?I1D5bDs$kb`MyA-8o>`|Fwv@PiG->8w>5RFC}iP z9_q}mD?Ro(DwPo=J!W;iZPo9!UnJR>cL*rkzN3#Bba%|NjT0K-{dGo8R>Y4V3 zQIROsh;P%bh8teWJL^uaSSfFftDIFa@7}6dHPWv>08L}aN10^pOO%d6+dy9|=pLXq zb-!oieHQtogdk_0DS2PZGUh1)eiGojdFOkPN%MHYd4c;bmee3>9>nGoOlQwe;8@)| zfnhh(03DCt^IezlkM%);7YbX7fx1 z3FQ9a(=7LCC1=ypG1Pp9!D0JPi%F2%$6l-JO_bZdhvZOXYDM-^qFcFJ0|?^V8=$-@ zUN8&m!d3AzzRCqW<5NV7dC|}xBKmO8TKs~vbGWBP#f+-hLmea<+q@nDH?f#EYSr(L z)o%qveWVv5tm^GUn2&G^!kGyBeX;E&Bt$)88^!DkI8T&kb7TXhJ#3#(sExbG3?n}(25^_b7Pc{ZhTm5W#?#6lv@ zbrBZ|aUl`&UBnV0a_0Z+MGiOZ@{kE8mH!1N|CDc702!Vjl`la`5iK&!`q}nVE=-~Q zunV)$j=L}=_HDo@)Ac2P#D5g};$9erOvdJ;5cV*0yUD6uHlpv|LeXKnkrc(y4L5Zk zF!JvF0_;A2D7F(NMZV2B>xsI@z64x(*9-~vOu>3cRxzF^s9c~*2eY810!rYv(6sP1 z|1Qb>0S&%%kQ@uqm0S9q&|U}ayR=L2Tn>JO_=XTw52JkUDxB0_N_1IcXy(-@UKcW7 zd^?MFk19trYTv9n8w>&CSf-ENOYsK9mEx`z6Q^aaCX%?T1wdU60~M>Rjp?$H<0N~Q zNj^_tQSV;D?+5-O!M|5-7~{0n?2BiA+K(VMjNzuG1hGxKO3;Y%&Vr;#wIo-|V}vG#SOUDer% zN^(p|j@jEGd2n>RK#4t;B6g+96!pO5@c{lODL-a_+?G{*Ul#)Q8Y)Z8oF&zLUHw$`WE`Tc{98=DAb&| z{eFfyXQ-s_gaxF1r0NSDVg5>|%-_cS17uz+`(xKp05hSR#i-w4^tNasW!@Pf>kZrU zN)b{;_ME0fE~_U3b@A+lDmpg)2)eh(Rf*gOC4@3JUrWIyP)ucn;^K>$p}SYrHv(_e z-VNsG$VHUKMtpIw#>sb*yUhL)_sD{5mfFq(9E}3oXvFiye(bYk(2Enoj;d6DfsJ{% zsVEI=m`B_QEZKSxKh;B$(U*t^1*|3!E+B1B!R3L82ifsY02by4gxN#PmU*v$GXRp} zep0-ZYLa3s4M2yvW3`HH0Ok1y;wV}lqJLGLscUBaD>K_~T7iL0V9CHgR_l=dL zdOBua)TYKz^?NZh8%0t`*qno71Y9jW>;Huc+j9j#_7iiU3|S_g9OfCepC+PZo+sc} zH7|7&;bol%ZU#tI-P1ujZzH}q=A0JI0k;tjnE+@W%f5!%xcN5AU_j!0R9TosWt~%H zmE=^#D$dD4B%dOfxtGkO$V~eJXdOTOSe>xBi4_dnxjI)p$?XSe>h?2+)K&=d7zPu7 zO9gx#Ak`tc5fH3DIuFE`=iYAZc+o*#=jV(}cNICHZy-WYFAKNs?$i zGpf1iQLKlgDMt8qjJ|e28vFerF&3aZ+ zc9JZ@Fl12Pd?s=#GkT~;liGfz_H4zG{bUVV*laY+mDNapB_cE8H7=D5Yn230LD(;- zX0)SS75S#i+33fupg_AK)JpMIX4vk7D0`!AD%Mj1gl$4<3ZIk{CQSu5EAfRaPCluS zW8{+$%$}?xa1ZrFsrf}xlzxba;c8M1N8=@g zvm;BD(%DF7{4^j%LzZY*C5aN95>w#}zTP2Nsa+}cvXV1_3K05?9=b-5P6PIm{CD%N zXPZ+&7BVfz7mLs2n2(|!70pL#C(9PW3il(kjqKPTTRoWi?Gt<+?njm$}v`z)%Z(L^onRZ*(lF%_lSwN>G%>&{?2 zvh1U#0vlhiuu2EHZ(OunW_=6NplNH|16g};A;9?dAyOHa^k@j#MpX1PCRpaB?0L40 z5YjTIvyRO(nFXFb!v~k{vr3U=xO7C2OSp7IkVm+5^hV;fmmx9La&&Ec7A05xhR2sJ zH&Nzje90&N(^TdLD4n=8b(-32CaN#CnF&_GgWTgb4-(QUXki`Oa+u}En3Wt+{)pXv z3R7rl+0=Se<=mH=#ko!v4H8)o5!f$Esl~VTbHJSot5K9wVnR-tU=>WXQTaA+C8SmG z`x^<0AD~P17^WXR6sxi@FrI(`(uc5$21p+U$SN8jeHb9CFhJ&0npXCY;JFhsi@cuc zl+lg5Xo7&5!|)}TuS{A$NS)t)4%tD2IfD7}8s(X}{VGtf0TUDM^h3^}N<)y(KEYW?=FP2hN4L0@ld+TVfZH?tzK z{u!%>rfM6@f>;8rew%VpLCZTaZ@)dA^xgn&iRzLIY9rKCAOIfyk=K?Hqpmn0n&^)$#$f|!2 z>u+dp16ci}84NmI);TuPM3%4$N>|yI8E5s~Taa61bc_8W)L7jU_RGf_M$G%frtT+j z2{{Kce}*p|^eI`Z`iV{BxBofs{M~=fTSb$(r7Dwovv=5^h62{VX;+7Hy|r=wm`WBN zfR~eD&RF$+vL+T;_gdBOZTe;YroU2Yw&vaWJ;jUa!t%3aenc#A4r$)hosSG*W<-gA zgV#(9#o>#+Y9G8nW43U;dy#NuFjo^?0M+d$j-$GL zlk!h%CWx3X1fc+{PD7B`)cqzFvG2jiTw8Go5aBw|`cB((^29H)u(52PvA-?ywL32KeBWPrfi zXU}D_*-Rw9q8he80+e1Vf3ulHhV5g38-K&eLQ*a&`g5n zVD{@^h2%oQT0HlZZZ`BRFTg^K z%p!6d%6Wh-knjv2VAUydt5rhZVWUz$X%20lrxNN@2@y&X%BO_(>4cQg;S8nxXCbEa z76ds7b2aN7w)dh#CYSHW+&;{YJIT`g)_xjXFwdzfSwcy&Um)?c>13;P{)Hw>J*dN# zPMb<+50j~Qg_O=!DxIeYi;K2II`c^!g-9|cyR!S0GkW&!>Sy7V^1g#v5;vH8S?^o1 zo;jrU&vUWno%g~}g%u~*OKs+KF^Q5y;oc5#PV-)P-F^xDoSL$kdA1_i-vC~%k$lE6 zsJX8}mGH9;@#+L|Sco?h(K2lT8#V7;R5OE__=#a2%43+y#~%9%@QiG*Z8D*BGd&>-Dkje^}lB*!VjT4(@noX6%4_{niZaZX%oyOjX_8aLjmInoFEt3iq6|R=cI5Jrn*F!g z%#1FK9l7lnFn}3McBYa%UL?L0@EwZS^E)AAbb?zeuP`m@CHEdWrrK9?nCGS zj8XS3`|SN4PQ zr`%5rgFkgYG2p@!+DnyAY_qEUhE4lRXyWU`^+?iw8SfC%E@AO0Y-8G`M|SI27Q3RlO7 zz=PrH*oWm~UTd)TQ}0Ubx;Df4qWlLiHTV_vV#~Y?12hkB-o5s7+!b@zmolYN8Rzf| z2KGjlGYiFZoeG>m@)pj_sNIn38OuqxtE7i;ouHB)wXaY~|FeXX{-M%z1W6yG(%QzQ z7`FfNF_!-_$Xv8l;(b@O2RETbt$gZ2-YWIjPCntCcrJ)0`9$`Kf_ zzoZ0iQvz_IYz117S1FhwW*)Y~8pW5wN&7Xus1M~0&dKQYzH_(t9l0*K5C#Kk(*EPd z{r#8?aF>X6Ba2-F5Ws+0a1152>0f9)J+@j>8slIatqbPeNz)8pd^-;c7UQt?L>xA) zp^ncaZ}P#Q2SIG7FD`?}9{Zah(juplqXmY7hsd~?xzjT9s7h&sgPx(}lxk@Bv1EC0 zGjZ6rr%Q?X;J7LzrIjqlDP5eD60hCKf?lkL*2kPO6{?g7hceNUpIwkHCFVm)KmDjG z6OZ?F7{@Buy)scIUWtos-a_hPJ$=b3<*Sqkhm?rJ{sxpyvL5pxr4A5LRoK?a&;A$I zH)hO8sl?M1}?I&iDBrlxf ziZzF=VLrs_hV6Ta$mY!LL_!~A<>0ytI3Tk(QcYUs8?^6(fuvdKi9+Z28H&TNIEI9y zEWv@4h!N=;oS+2eTuJv7Vug`?R-rGp0G_`CBS3^ae@8w=l05%+&L-CF6QquE8tYL} zmA@EoDIl9aqfA(;8%=E_-%J`;X4(&t(v7>QTTUMTa6GP`3Ya`}S;b{s%I>Xdkl$+8 zK?Prghot!Bq*JYp{IQ5q|{k{k2xY=Axsl;9f z#~3*9#o-f7Gh(k`%K0SoU*nVw1U=)Np`PY z2|eEVKdXrS#1}7k_i`=|+B5AqWH+(WdQoat>D*LDAsV$mL`C2ue%YU3PImA=t|KfQ zGjAN(<8XvXjLdVtL+L=nviE>e`aLQ-5=R!ivAyVB+26tX8ut0XzmNFkkOTHdtj#1= ziFNtmtaC`rj+1U)h0W%6tR__3IGJI)T~P;MdVK4Lpz$k0s^d%%nif3F&nq-7Viqwa zo7)9V(k=7T3E~+&x`n7bb5A}`gF$Hm^Gwp(3K`zLy^@7Lg z?5X<=U1{`haP&_u59zODnIqGGMjHL69!CG4s1j51ukFcsNBdE$q`SGY)19w!w>P!= zGJPrZ;^OhP(@8%s$oza6qtHLb>}E!rKVsCdT~A=V;G9n=4ht7Td>;H~n3afhzmm4k zSCU^4$Zdo5vOyvOd_w0$NdVV%dhl&?5D|Gr{3^<&rRl#AdL_{>&t95Bp6k*A{*r9ZPF9|bEeMA*HZFwo#bUZ=#$RfSOsdA=ELX+a1Wcgn6xKq z72JkOt+I0WT}^r4P7_={N5F>ys$xF`GvloI2$T4F!Cpz3u*_#k$chg!g)gJ71c8cf zb1Br(k#XdVdc!Cc5#b1hR85!&^P$3gFDAz`XtfGoHP1nB<->M-?5-MP`V2V~F@tA+ z)EZP0=f}xRI3cpb7tg*93yD@v2995yk1wMtfC899Af$3HXPDwMdd4WEM- zn&u;j_0Z%#(Q++rA}$oi>oY=w|sqahOgPGtT>xJUfh9R zQTp^WTxhWZOPw6RDiC02HGA(a~cm`tdHjQvt|TM#A=GAe9-oUoX_kbl8( zgoWt8Y0ozori`b~e8!A(GuvaILLFc2iQdPkVLOXZYSC;j{0Z^}4xSQs_=qxW|Ed6C z++2pq9n0!z@X8Ov%hKK<_|dxS$52t%i`H+F40-!a-J@8FYjL#ZK21G;)8#q9dVr;= zJf)WVAmOd794I+Ul!Tx}mL%AXgUt-Hr$`SI^^;JFIt8xBMXp^b)fl1>#&Fg4D&wZJBQ|C)x zLrSUR@y7iVWGAdu#JZk=%h-x#XSj+!GKYl)4BQvNW!$d(E={W`W|xvCzB>k+zgD)v z`~_cFL|8iDM=ltLj_p&4FJ3UhT@BJgpjGrQRFP{d2T+2*f4tdk9qb zC-uTWu!MPs^pq1Vbg2co}#x^fx zTVl_P4-VSPz{>pwiI}q_fy+sLcqcgNdYvfwLYc)$XKzr+-dzDcbdwVpYkpq9e{xqa zpWsYk{hL6wWrA^+hI~{^_FW&NT$wLQx7y7zGA}Tn6707bOF4+E8H4$-m>Jh-4}h3_ zTMgy2R|Ibb%_-Jxf(#}j+XPwTBw_x&TotDnC}h$53>3CYAp z3B+o{uy-GHV}pC&W#0Gl;=iZ<4^J z-TQnyewXdb_!m1i+*q?DkM;Q}FSO~1<>oV33GZA$q6-qgg~Yqu0KFsjYae0>lO?dX zp>D;oSuc*|bJX%w8x`7>WoSn@-51ySM!C(dO?^!`3|LGJ7-CL^S+21%1Gmm&K4PaGP z!DB?g4lVBC-7@U$2Xg1I_fZ7cU##AWgINPyE4;3OeOy{#iP1eHaJF5&_Gj40G?ba= zNCxgA)W%&=XrKm{I^HYs5kyV@l{GqN!;!&y0M!I)_AO|`kZxuDfl3lCgLM#3p5QkB@{I)K_h zJ;J2C)RWH*Itzw57q|3YsW2d83HH~P8vCvm@832Zyzo3vg~@CUNTrpsrfUalW2 z${(Sw7&rUSmAG5$>DMVaKr~HayV|4mwNQ|EP3=W{*Pbka$T(JUwL?F71vk}HjiZrS z@=%mrPP*fmtHcXxsOWJs!1{_m0s@xu@i+>8+Sz^tjA}k{U1POqGRIjaIB*-KQ+x^dxX_s z_0anCY>+PGlJl^H^v3M35t)00_V54Q`{gf%hAGF7k2vb({#4x0Kjrz8KOf^BKYj@e za)`Hu&wk6f-Iz?RrLyE{}3<4^YbNoQi*T z8Kvetyu&UgMaciK_ieObc%`@5E6qh*84>nxs>dA&C%ulm-XM+sSV)1DyWHF3!#qdL z?oj0;a}3!{S)>4M+A=#RNgk=`Fafy~K!f&6#KCh&p4lzuj1AjQupreeCWW{^SUnKL zb^mvv&&m#*3Hdk};{{(ni=rkR4Z3#rLLy)cK@T4t_U;7|y_-wtqZ2*cLV2=`+TmXP zaY~Xc@ANliKPn2EU-p-|1m?3zT{xSw$z9lkGQM^RrHO5aKTJc!G8Ygl6(5%nKP8l! z8EXCc>F0x+hM{Yn$6l`_P`gu{54+uCU+eHVhne(z4rNEXNExqF;Enr7sd{7GL$R*s zX{%vV_Yg)3ta9Mg_47D&jZqG>~;o>@6uS_u6HLQf{b z(&18EZE=``q=3(Wm9bOuMn&w$rQe0uH@vj9Olvc=T%LSGxHro4nyoN8zUJvvAK0*^ zHBm+!PacNv5$AP!WHRRM2MymY9NDcO#4*%oym{aHQDxH`zTq9ve$bwVOo8;gH}<2_ z9shNfH{++JumA1c(!BF`lE5VFtF(?n%PM@JBFzE|Mqj#1S{<6eN(?W|$a#xC65awc zmT^YS(-t7V)LD2N!F~YtK(VUP_el=i`E+!0*zQ(@IaCJ#+X!?PSm;Cs`wO<&tG3KF zdciRQ>x^LBqL#po<4!~p=Mm93CeSQ!9I!{4zyTuD&NlKvonn0sg>?Rbf|`@;NB9mh znlR(*8Xxi#`tHP~lTxv1p+b*yY62Y~Dxs1Eku>E-=Cian1#-AkpsriK~ zfU4{s)<_!&W~QjCn56FDxo3U^i{*IELoq~*@vl?tYKrw!>=lYVK(Sv?>>i4}N3lC7mWO6BPF-egA;sD#b~VMCDRvXZ zu0^b=GZ=^jJss^G?dyV_p6kvnxxq6#vKH9pBG0)c=NW{){e*q zPk0 ztFC0UhFdq3wRbk-6+Oc4z^xmU?GglmTQ_Jc7}qV3K2+oh;avz}PZOT*AMu>q?50Y$TZe2eYVWKBZ)v2mtvR?pnU~OR!L}~yG$72S zw_Mt0m&$2Av?TZbzBGTH?-}^z`OXb8WCC*c3@E*BlSpT58_Wxx!KaM5t_T zm3Ya?>h{i7>5$|j96OU0$N;eJ+CUiHZ`qvX2EP`C-?d`YeH3tW5d5JI?&ndwi>VSMHx_#%x`S7Nxk8=YutfiN-=jFh*xv;;cB!RF<`4zyj!@S8Q*7Zn|X zp(@ZAY$-CD(u*71{!81M*0y(o2XA-jgiDQhZ|(}T)U}rrBG49L{WPMi3v#q}ZTl_Z z@|N~+u#88YqC{07r!{K8)%C#=HOO+fw5{3K-qM^xD5D{VS;{yo$SDR$Do<6YEm(%Z z`ljmkX5k3l8f>YJY-mxS8bZQFjXdT+kX~<7p8Ho{<$4D6#kKUn`7+A}v9K9E;H$;;|R6kfDlS+IS-z zNw^3-;p*Uqa1lFHaj^QbYErfusIjFh zSQKdKSQ}vVweSZhYbY#+aEe&d9u6rhX^*4oj2N7W0;^z)s5(hZ83HXlr;P;FxaZ`V zM4fy)0P87j39V_Pc@;zT;b6EH6U~+&^=Q?Zxjj=#MxeR5wyTlqnwhHt8``^|S39Dx z(Z~(YXbj#84_On4tff}BoRH)Sn<7Q)mj{|dUE!h)5|YaDmQV+kkDDuVacMgPZQ&M} zDO}3!5Iqg~st$y2s%(oWXUE=;+y+mNxPfDc4xl87`VSKtEfy{klMo`d^B^29!V4ff zLrvi#Dh`w+L`Z^W3`I`wD?&FwPMXU$6h+!yq*hE!LLDtMBCrbfzyTVqNe>U(MN~?0 zAd5QNTir;|$z3CbBwMnD)g)m>fLafGl)Cmsp$M6$EYNh*nohE;u4)#*6$%_T)o>BD z3OKq@STi6_K8S0QCy{CrN_@I`k@La~lKR^k$TA61YYa6ZVW(%%08d6>J2_)uQTr`z zG%DhiOsHs?MM57KDMc8cWD@u=cRI>+%W6YrS1PCN(Beki0$VBz9+H;K77EvNwy)nn z9x2$0`LHv}pqk*tTf=qjV2HG%w-#aS4tKP}XV$eR^3WNKz?FeSK{-qvF>Y;d3#v(8 z()=!YYBy;n*Vd)drox9|gj$)Mqu@G54bW{KhnQ{-n>G=!SVg1A6NX9{*w^J`l}^_j>X7#6_?h1VX6qdd@tVP{GXrxY#hDT-*c zoK#XYHnI(x8zupfq{d3vq`qBWw`ig257cNP6&RV;uooo&*C4g+U7bxRStp8x7r=F@ zIR$E()F;o|z|V7{(&lFNwE;MBSfPzBd_qkD40_~Kz{J-M!DhZ5Vhm}j#Y7XvLd#ay zrO1NvgDfI-sxU0$Oo&vPw2Ytzm*hk+E-uBg2h5~rOeu~$_rpM&v-NxW~b;7jH+^|UZa;mRHC+FmgZj?)aq9&}a zw6`LiN{r=xjfUgUlYKwy$2h0vs44ZgIsn(1njd8oOe@-&LLGsYR3hA@cB_fPlMn15 zK9@HNQR{(8)?zK78Slnxp_-*d7Co+(g(9ti4l-#?OP~$&wvN#HU<-x|%wJWMI#v;_ zC)5NxYXhwvn8}7YAVdvu7vXxZlm~S<8)ym87=W>#+DMS=1mZ{qHl&fKaRWv($S!Zc zMe9{+48@jGziKvwfg|-2q6iCX{3%hv1noRD)YOboX#D+ezegA?S2X%vUZUbxlwhTe z-;+q|+O(cc>)lv*JLtyKz0O7y-xB@4#e@7VL|_ii#1Dn^LvoWpCzW7xz@Sxp^*O&p zg;$hd-^S4EYFDYbpaYkybvEsNs6Kg^N=ATLgVbN)ld*P{z$IJ&kZPz%ri!;nLM>`( zzeV*^?Me*Yd%&fm4(+4!FDWT3T4r1n~j>BTS|sn%R2v-H$p79|EVNp^(o z=A=wHB?HpX1dsoCrz`fnjN;Xd<9EE0 zZ#w~R^_?l+4||6h13+dN8R^}j68#_f-6#3jD&f--{!zl`C45D~Q3-!4;Q7)4zFIUI`2_1eiX40on;(aSsWI{rR zUn)n7X#UYv3RCD;;Z*#yMX0CUiPCk^Is096A?;&v`0vel`6fp`YteR7BHP3Z42w z@<-D@Cv;CT5phj_TId%|LH~`=(dAM;TE6#2g+3#Nn$Z8a&@Y&R{)W(Tf->c!_5VWX z=cP~+`lsKd2((3-{L%8C68iFFBI269N9fp9Px)y2%`FOjb_z8i|9PQ*duR@=yew$jAm?uR#k^Y^Bp+6?{kBYqWUiB|4#L9g&3{D=Hp0B7AFmH0IDDrE?s<|B&+i zPN(Bha;Hi9^r|BIjGnE+PYeE^g72TD@Rs0nKBZtf8%Uq~1)nc?&p8S|)~3Rlf-ey~ zJ?)o19~FFu;D0at7YM#j@GZiBiQtC>|A^qP6#SUrJZ>dsKL)1=k@QrpTp5;=`eCcqX7yMm9 z=Hj0ae2t4gzfkF+M^@8Ex7!lI-yra_xe~=JaGuGqVN0FqDuCD`9ubMQ}t79sh9aG^{^%fc%Bv*1ev|BmR<{$Zj*@!cVM&gfQf!(tWwMEG_6 zjtRa+@Vb8Ko-+E}>f)~v{3;iJRPY|iPQ`g}n0ae?FmB=*B=h5i+x&lS4%6CFZ- zQs|ev==so-NxEblK3tRgruekUWH2uyw#_oEu~ zx)lDJq;^S|dE)2v{6KLT#-+lq>r3M=7kr~jPqpA%UHFjTZ*$@M1b>eUzd-VHzYD)b z_}%!g3Eo|s8mI zt{)w~EOyZKp!H}wYgpS++fBnd{hx{+9g+>`v!$N{=ZEY=e)43o&wf`u6bk+?E`0W< zm5S3PJd}R&XY_(K`dlUa3NnnADe#{a{7M)9HwCZ#pVqTy3jCj@z;}vX9o{4G(^G`H zeEK>oo7iMJ@sZdZQy2~56|J_q_aFti?hJ)*FxtRQS%m zUBP;M-y-y-LN{G>>bKeWR!KixF5$o1k0}>av<8YKeYE`--lve-{-XkG)|qsw8y~X& z(Q$-L!9PdG5oL@2FOMVSBVSps%DGtjtAcPJhQQj7Ca=E`58>1Ky_Z~mZ}b7JF@320 z-ftxzF-f=ZlZxM+zrJe~{_8TI(c^2wbqarn=+S;GD){dRUh@wLeuImDOzCdaC(QzZ=QrF zNqCxsdc8%j)9Ce`I-xg9__~DuDdBG={HKJOH>-4xkx;KE>g&A|1+Ui=&lLDP2~7zX zOIRb}wG!&}!)Af+k?<)A^?Ky10{=w9KT7yd36GO?gYzW3Si)in^}2{&U(o9kdL80U z;d@-dXC&Myp4@|(Di!I3YjPAc~^_T^s;FB^h)?O34bWzn1mA& zW{CefNy0NEyja3&39pxMjf8q#La#SyKdAlZy~3yc=Jy0XP5js#3ANu|EO3*A>m=0k zh|L23ZwW8IRh4tGg!K|C?Bw4u@uP0a;1qZ_-{D|Se=3LGuh3Y%Z=qqIi(lj2q0XPq zzt*ee2Si{{!XXL8+(uO3UI}+gI4a>@3CXw9Ctn5ntPanO3AIx2Q}N|IEDTcwd`BQ? zg@@s5h)touh3<8&&%4MDI3Vk}(Zi+dS}$@GxFTDRFn?P`-`2yVJ3H=5UJbBb`_ zF#0+^ulPFpr%)v5En5yv*Hqgz|GN7&O;KToEB__;rqUY(ZV>cV7d@5RFuFv)uTN1L zBy{t+;RZo$ISl{jMgP_*_=cvyYyB&w9^C0`_;JzSI|X0=6nL$FXbQU4|C;FUbJdHc zZ=C|K^^Z(J*YZchqZT-7fuj~UYJsB`IBJ2T7C35wqZT-7fuj~UYJvZEEHLBjhK9Vd z+H(CDJ#}VB&UHX6_cokaT1$UrE6SIbcI0%->?mxQIT>}Dpz0D_A5P`USzdYse`U+d z8cr|m$XBd7RL}~>cjVMoARnFv)?apQc^$HK1e!~iCv=m1LI(n6&FGl9yc~R<#P9NQibu0yhFUMkWiUt5@3Iq1{J75rw|LB=sT$dNmK;ag_?rP7nkv!@qEvo5zT?NCAIVf0_TwqbR!=nlDLP2?nFu4 z6uAhu0yeXF6+P_W$XILXsU?SGm4}k3d?ERzWmlE^%d1LjYyIaSFUj{bMu#q&%z(!e z$W8c0bc-rD6@8K-bt5D{P5`$W8qtO{Ed1aQBRZH)+<8!z5%o+KRZks=_TdR_{7Ivs zoNpr4xATx~jp&$@;r_ww$y%v?jOfVUrdGO`?h8%T*)drUm)eNtPeI{(5Tj8iFO%6^ zk55sVA2@`7z6A=$g(qv%#Kf&rszJJ{Ub9hZDvQ0-CM$F9r!%7c|CriP+D1mSM(e2d z)|Dn2nz~yV-6!)~uJbr{|9g}F})A7_IBCdzQV6jAH zFI~MN&>5nK$dtjm<9_@wu|+dTiN7`2+SIXuMhHUoDr92RSRDv)Zu*Ge3>^G?LE_&+ zXsEz#^#t~3zyMrIJWLLEh2qH+kqt!H>JW7CfgErnYr7zD5%CYECt-}jI7bXaZiWPD z#33P9Ium|8s-QL0M53c<>22+84h!Z$8Gf9@ny#K2X4I=EDH?qlu<(l+@|+*X89bBO z7B*hVT;n&sG_9<@u5RfPKc3}ZRr<-L^>u#ZKo)x>WB3^381aCHl_8E|TSl#MN2a4` zYbLv5_Ke@n#B)WAeVNmYflG17LW>S)(eGyH-fw&fOrw|KAjUudKmFLV&5RgtW$355 z(SthhTr1-%nZ`6cPK6%Lh)0_k|IBcn9bkMjk%u8Di(;EGQ*KQ)9?0ZJ#uz=*vW$tZ zX5d`u*pu|zKS;k5FVOG65dDtspx@|D`W<@-XJ0adNUqb^3k~$dv7cvx`U+9|@M~n! z^IaB{;YNSVD@u*OW*P^<(9aA*uQJ>BGct&Yp1EK=KT4=W>%4yB=hGHdl`i%h+p=nwS1w&%S@%i5(R+-Mtt!X3Ba6tj zMsHS~cV(UN*{sUy#m4%82AK2= zk+Lc(YfH zbOhAbSnDYB)cPtH)fvBl9_alIh;K4+ZxZnzig*WX_%;*Al89e8h9w^caUT97$j_2j+Nz5*Wa*k;yZVU*#Cl=~>3!1m?XQ<8R=M zzDS%~`FE6m5AbjQ5aCDocLKk-r|Z&*jDgI)X(dA$(Ts_V(TstNzKjx2A^nYJ4dqi< zSTdR!&GQUp)kHIDMl(Df&scWhz_Alq(G1+FUgDv@!oCbJO&`njl=L4vn%SS(m(fr% zmI-c9$Fgb~kU)P%;aEmPLt$Zlem^jLfjH|poFzy7_Mgt6ak0P+XDN7@rVG4A(>;nF z6?jbGEduNN0$0 z`~CU_*7y0nD6qayZJ)sU{Q$J9Q}lX_X#|9nSwKNRetpS5XWze3S#1uhhL zou-#6`Xd6D2>hbJ`o1h%V0}MU{)bfl^nFV?%9jeP&y#NwSf3+*L12A;{5^s7x$znK zO20lYev!a^^~!#w0_y`P4Vo?oQq~Eq@AJP`V154cJDUGmrSDe)>+_y}5m=w|%%7q1 zqtADqEwDb6!><5M+Cl)U>Ipk?E5W&2L=9t!1{dLI|A$TaL2*mB(Kl4ohPub9|ggu zgkZGCKGD}MbbXGjPhfri>}i4ZIVpNKCF$4au>K;jJ`eU09MUGbJ}+ewj64n$s`SeR zHUbK+6SyR(V86hgCI#OjFg^Q)K6eQ`u}r}a2;3*~k7~NW^j-~0zr(NiUnLmru}|#% zw!kMy|EJe=5IslWe~G-&q~tM=V}1Do=LX!$^O}Mk{o^j!I5ssu z=eXcv7u?{2H!9dkZ;Olmw2QvmMgNrxrWa5p+vju~C{2dT73`E}m5aVf!D!{`^92_? z;DU!0?Bw58u%rLD>72f!Z>9@A-vt-D;H3&isnn;@MelUMx4QUo^+n}(SYBtRWBqY)(BEL zG@Vy6rY7;4K`Pl<^ib#{USv`1$*U{+A(JTuOvjK~$W#tp5O+b7xin8wVW%P|6*!qC zQE0U+D~mmT1tk_v1wpH)iD>Flqu}+Ls(?C+T1@r;G?iCDoz+OeCNj0g?^>4hufYZ@ ztxM{)F$bZS&HQa)wLpr9S|Rnj*OvWZey}cCO)ujDrQfha%eVw47IFzn zDYOC;g-*Z8i=BkY8@xa|TNQ}w1SywOZ}lDlquS`5nlWXY7i`Y1P-^!`-SC}6OFXKd zH;LTzq`lxtBz{7zv;8}XthRpBqp61(Zj##ZorImd$?IlG?Cwm`$@{%-{>fXsZVt66 zkQSTNA@w5dlG;hzXl~JzT|_r=DQ{^_%DXhqH%5q2l5WvQj6EtT%` zF4c+sVYf!v1e}C+9_q}RlKq%=xl*unq@=czN=~ymtWr*8OR;V$X|e^DP2be5NISOPbAB_ok)Zt(?3~nYulj0?Ec?8k}r9rchFF zY4#u$b21^Z`8eq$4h-SEc!r;O4MU_ja(^Qo`0?Wj>+LsTH1PYI+OeOzHrRr_RG|?T z58lTMIoyP~*Xhi8IN43*Pb}9rI~_Db{N+brK9VY&D>yIFe&9GI7mJT zkWP@_*_Muge5p6>q$8>~)}*75n0hTwI;yGrzJRuO4lMMX!8hS+o27mo- zmBY%kO!+pB!-}ST9m!NuA)4V&MWk9LI_yaPy$!FwP>4k5(suf{y4T$6^vsLpy)c?@^6)!6*~Di0#)Fp|0Evy zG-VR%tRN^aE|Ysa^5mR60I)YQ}l;!lqu3lyWG5_ T_s}FKm7wbmK9xLmQ^WW_7%uH_ diff --git a/native/MacTouchBar/src/Button.m b/native/MacTouchBar/src/Button.m index 5387be067b30..b345fbb291a0 100644 --- a/native/MacTouchBar/src/Button.m +++ b/native/MacTouchBar/src/Button.m @@ -9,6 +9,7 @@ const NSSize g_defaultMinSize = {72, 30}; // empiric value @property (nonatomic) NSButtonType btype; @property (nonatomic) CGFloat bwidth; @property (nonatomic) execute jaction; +@property (nonatomic) NSString * uid; // for debug only - (id)init; - (void)doAction; + (Class)cellClass; @@ -29,7 +30,7 @@ const NSSize g_defaultMinSize = {72, 30}; // empiric value NSCell * cell = [self cell]; [cell setLineBreakMode:NSLineBreakByTruncatingTail]; [self setBezelStyle:NSRoundedBezelStyle]; - [self setMargins:2 border:8]; + [self setMargins:3 border:8]; // NSLog(@"created button [%@]: cell-class=%@", self, [[self cell] className]); } return self; @@ -58,6 +59,22 @@ const NSSize g_defaultMinSize = {72, 30}; // empiric value } else nstrace(@"button [%@]: empty action, nothing to execute", self); } +// Uncomment for visual debug +// +//- (void) drawRect:(NSRect)dirtyRect { +// [[NSGraphicsContext currentContext] saveGraphicsState]; +// +//// NSColor* backgroundColor = [NSColor clearColor]; +//// NSColor* backgroundColor = [NSColor yellowColor]; +//// [backgroundColor setFill]; +//// NSRectFill(dirtyRect); +// +// [NSGraphicsContext restoreGraphicsState]; +// +// NSLog(@"drawRect [%@]: %@", self.uid, NSStringFromRect(dirtyRect)); +// [super drawRect:dirtyRect]; +//} + + (Class)cellClass { return [NSButtonCellEx class]; @@ -69,7 +86,7 @@ const NSSize g_defaultMinSize = {72, 30}; // empiric value // //-(void)drawBezelWithFrame:(NSRect)frame inView:(NSView *)controlView //{ -// NSLog(@"drawBezelWithFrame: %@", NSStringFromRect(frame)); +// NSLog(@"\tdrawBezelWithFrame: %@", NSStringFromRect(frame)); // [super drawBezelWithFrame:frame inView:controlView]; // // [[NSGraphicsContext currentContext] saveGraphicsState]; @@ -112,7 +129,7 @@ const NSSize g_defaultMinSize = {72, 30}; // empiric value return result; } - (void)drawInteriorWithFrame:(NSRect)frame inView:(NSView *)controlView { -// NSLog(@"drawInteriorWithFrame: %@", NSStringFromRect(frame)); + // NSLog(@"\tdrawInteriorWithFrame: %@", NSStringFromRect(frame)); if (self.title == nil || self.title.length <= 0) { [super drawImage:self.image withFrame:frame inView:controlView]; return; @@ -187,6 +204,7 @@ const int BUTTON_FLAG_DISABLED = 1; const int BUTTON_FLAG_SELECTED = 1 << 1; const int BUTTON_FLAG_COLORED = 1 << 2; const int BUTTON_FLAG_TOGGLE = 1 << 3; +const int BUTTON_FLAG_TRANSPARENT_BG = 1 << 4; const unsigned int LAYOUT_WIDTH_MASK = 0x0FFF; const unsigned int LAYOUT_FLAG_MIN_WIDTH = 1 << 15; @@ -304,6 +322,9 @@ static void _setButtonData(NSButtonJAction *button, int updateOptions, int layou if (enabled != button.enabled) { [button setEnabled:enabled]; } + + if (buttonFlags & BUTTON_FLAG_TRANSPARENT_BG) + [button setBordered:NO]; } if (button.image != nil) { @@ -330,6 +351,7 @@ id createButton( NSCustomTouchBarItem *customItemForButton = [[NSCustomTouchBarItem alloc] initWithIdentifier:nsUid]; // create non-autorelease object to be owned by java-wrapper NSButtonJAction *button = [[[NSButtonJAction alloc] init] autorelease]; + button.uid = nsUid; NSImage *img = createImgFrom4ByteRGBA((const unsigned char *) raster4ByteRGBA, w, h); NSString *nstext = createStringFromUTF8(text); diff --git a/platform/diff-impl/src/com/intellij/diff/impl/DiffRequestProcessor.java b/platform/diff-impl/src/com/intellij/diff/impl/DiffRequestProcessor.java index 13cc1afc6b6e..d361870f41ad 100644 --- a/platform/diff-impl/src/com/intellij/diff/impl/DiffRequestProcessor.java +++ b/platform/diff-impl/src/com/intellij/diff/impl/DiffRequestProcessor.java @@ -132,6 +132,7 @@ public abstract class DiffRequestProcessor implements Disposable { myToolbarGroup = new DefaultActionGroup(); myPopupActionGroup = new DefaultActionGroup(); myTouchbarActionGroup = new UpdatableDefaultActionGroup(); + TouchbarDataKeys.putActionDescriptor(myTouchbarActionGroup).setReplaceEsc(false); // UI diff --git a/platform/icons/src/mac/touchbar/popoverArrow_dark.svg b/platform/icons/src/mac/touchbar/popoverArrow_dark.svg new file mode 100644 index 000000000000..86f530776502 --- /dev/null +++ b/platform/icons/src/mac/touchbar/popoverArrow_dark.svg @@ -0,0 +1,3 @@ + + + diff --git a/platform/icons/src/mac/touchbar/popoverClose_dark.svg b/platform/icons/src/mac/touchbar/popoverClose_dark.svg new file mode 100644 index 000000000000..b396e1d86645 --- /dev/null +++ b/platform/icons/src/mac/touchbar/popoverClose_dark.svg @@ -0,0 +1,3 @@ + + + diff --git a/platform/platform-impl/src/com/intellij/ui/mac/touchbar/BuildUtils.java b/platform/platform-impl/src/com/intellij/ui/mac/touchbar/BuildUtils.java index 9a3b2c1d7d52..ee5e86c8190c 100644 --- a/platform/platform-impl/src/com/intellij/ui/mac/touchbar/BuildUtils.java +++ b/platform/platform-impl/src/com/intellij/ui/mac/touchbar/BuildUtils.java @@ -430,8 +430,8 @@ class BuildUtils { butt.setHiddenWhenDisabled(true); if (isRunConfigPopover) { - butt.setWidth(ourRunConfigurationPopoverWidth); butt.setHasArrowIcon(true); + butt.setLayout(ourRunConfigurationPopoverWidth, 0, 5, 8); } else if (butt.getAnAction() instanceof WelcomePopupAction) butt.setHasArrowIcon(true); diff --git a/platform/platform-impl/src/com/intellij/ui/mac/touchbar/NST.java b/platform/platform-impl/src/com/intellij/ui/mac/touchbar/NST.java index dced930344d1..08a0309e9e53 100644 --- a/platform/platform-impl/src/com/intellij/ui/mac/touchbar/NST.java +++ b/platform/platform-impl/src/com/intellij/ui/mac/touchbar/NST.java @@ -260,7 +260,7 @@ public class NST { // Maximum icon size 44px × 44px (22pt × 22pt @2x) final Application app = ApplicationManager.getApplication(); - final float fMulX = app != null && UISettings.getInstance().getPresentationMode() ? 40/icon.getIconHeight() : 40/16.f; + final float fMulX = app != null && UISettings.getInstance().getPresentationMode() ? 40.f/icon.getIconHeight() : (icon.getIconHeight() < 24 ? 40.f/16 : 44.f/icon.getIconHeight()); return _getImg4ByteRGBA(icon, fMulX); } } diff --git a/platform/platform-impl/src/com/intellij/ui/mac/touchbar/NSTLibrary.java b/platform/platform-impl/src/com/intellij/ui/mac/touchbar/NSTLibrary.java index e84fb2541857..79684b91420f 100644 --- a/platform/platform-impl/src/com/intellij/ui/mac/touchbar/NSTLibrary.java +++ b/platform/platform-impl/src/com/intellij/ui/mac/touchbar/NSTLibrary.java @@ -58,6 +58,7 @@ public interface NSTLibrary extends Library { int BUTTON_FLAG_SELECTED = 1 << 1; int BUTTON_FLAG_COLORED = 1 << 2; int BUTTON_FLAG_TOGGLE = 1 << 3; + int BUTTON_FLAG_TRANSPARENT_BG = 1 << 4; int LAYOUT_WIDTH_MASK = 0x0FFF; int LAYOUT_FLAG_MIN_WIDTH = 1 << 15; diff --git a/platform/platform-impl/src/com/intellij/ui/mac/touchbar/TBItemButton.java b/platform/platform-impl/src/com/intellij/ui/mac/touchbar/TBItemButton.java index 890f7641348e..926efaff962d 100644 --- a/platform/platform-impl/src/com/intellij/ui/mac/touchbar/TBItemButton.java +++ b/platform/platform-impl/src/com/intellij/ui/mac/touchbar/TBItemButton.java @@ -1,7 +1,6 @@ // Copyright 2000-2018 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. package com.intellij.ui.mac.touchbar; -import com.intellij.icons.AllIcons; import com.intellij.openapi.application.Application; import com.intellij.openapi.application.ApplicationManager; import com.intellij.openapi.application.ModalityState; @@ -157,6 +156,19 @@ class TBItemButton extends TBItem { return this; } + TBItemButton setTransparentBg(boolean isTransparentBg) { + final int flags = _applyFlag(myFlags, isTransparentBg, NSTLibrary.BUTTON_FLAG_TRANSPARENT_BG); + if (flags != myFlags) { + myFlags = flags; + if (myNativePeer != ID.NIL) { + myUpdateOptions |= NSTLibrary.BUTTON_UPDATE_FLAGS; + _updateNativePeer(); + } + } + + return this; + } + void update(Icon icon, String text, boolean isSelected, boolean isDisabled) { if (icon != null) icon = IconLoader.getDarkIcon(icon, true); @@ -208,8 +220,10 @@ class TBItemButton extends TBItem { synchronized protected ID _createNativePeer() { // System.out.printf("_createNativePeer, button [%s]\n", myUid); final ID result = NST.createButton(myUid, myLayoutBits, _validateFlags(), myText, myIcon, myNativeCallback); - if (myHasArrowIcon) - NST.setArrowImage(result, AllIcons.General.ComboArrow); + if (myHasArrowIcon) { + final Icon ic = IconLoader.getIcon("/mac/touchbar/popoverArrow_dark.svg"); + NST.setArrowImage(result, ic); + } return result; } diff --git a/platform/platform-impl/src/com/intellij/ui/mac/touchbar/TouchBar.java b/platform/platform-impl/src/com/intellij/ui/mac/touchbar/TouchBar.java index 80cd77b7ca45..309e94a07266 100644 --- a/platform/platform-impl/src/com/intellij/ui/mac/touchbar/TouchBar.java +++ b/platform/platform-impl/src/com/intellij/ui/mac/touchbar/TouchBar.java @@ -1,12 +1,12 @@ // Copyright 2000-2018 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. package com.intellij.ui.mac.touchbar; -import com.intellij.icons.AllIcons; import com.intellij.openapi.actionSystem.*; import com.intellij.openapi.application.ApplicationManager; import com.intellij.openapi.application.ModalityState; import com.intellij.openapi.diagnostic.Logger; import com.intellij.openapi.project.IndexNotReadyException; +import com.intellij.openapi.util.IconLoader; import com.intellij.ui.mac.TouchbarDataKeys; import com.intellij.ui.mac.foundation.ID; import org.jetbrains.annotations.NotNull; @@ -52,8 +52,9 @@ class TouchBar implements NSTLibrary.ItemCreator { myItemListener = null; myItems = new ItemsContainer(touchbarName, myItemListener); - if (replaceEsc) - myCustomEsc = new TBItemButton(touchbarName + "_custom_esc_button", myItemListener).setIcon(AllIcons.Actions.Cancel).setThreadSafeAction(()-> { + if (replaceEsc) { + final Icon ic = IconLoader.getIcon("/mac/touchbar/popoverClose_dark.svg"); + myCustomEsc = new TBItemButton(touchbarName + "_custom_esc_button", myItemListener).setIcon(ic).setWidth(64).setTransparentBg(true).setThreadSafeAction(()-> { _closeSelf(); if (emulateESC) { try { @@ -69,7 +70,7 @@ class TouchBar implements NSTLibrary.ItemCreator { } } }); - else + } else myCustomEsc = null; myNativePeer = NST.createTouchBar(touchbarName, this, myCustomEsc != null ? myCustomEsc.myUid : null);