pax_global_header00006660000000000000000000000064146162046310014515gustar00rootroot0000000000000052 comment=cf2ba3c8eba0ebc28f9da62e5b31fcf3939d2d0e mnt-reform-setup-wizard-1.0/000077500000000000000000000000001461620463100160775ustar00rootroot00000000000000mnt-reform-setup-wizard-1.0/.cargo/000077500000000000000000000000001461620463100172505ustar00rootroot00000000000000mnt-reform-setup-wizard-1.0/.cargo/config.toml000066400000000000000000000001051461620463100214060ustar00rootroot00000000000000[target.aarch64-unknown-linux-gnu] linker = "aarch64-linux-gnu-gcc" mnt-reform-setup-wizard-1.0/.gitignore000066400000000000000000000000101461620463100200560ustar00rootroot00000000000000/target mnt-reform-setup-wizard-1.0/.gitlab-ci.yml000066400000000000000000000013441461620463100205350ustar00rootroot00000000000000image: debian:testing-slim build-cross: stage: build script: | dpkg --add-architecture arm64 apt-get update -y apt-get install -y curl curl https://sh.rustup.rs -sSf | sh -s -- -y source "$HOME/.cargo/env" rustup target add aarch64-unknown-linux-gnu apt-get install -y crossbuild-essential-arm64 libgtk-4-1:arm64 libadwaita-1-0:arm64 libgtk-4-dev:arm64 libadwaita-1-dev:arm64 upx export PKG_CONFIG_SYSROOT_DIR=/ export PKG_CONFIG_PATH=/usr/lib/aarch64-linux-gnu/pkgconfig/ cargo build --release --target aarch64-unknown-linux-gnu upx target/aarch64-unknown-linux-gnu/release/reform-setup artifacts: when: always paths: - target/aarch64-unknown-linux-gnu/release/reform-setup mnt-reform-setup-wizard-1.0/Cargo.toml000066400000000000000000000006521461620463100200320ustar00rootroot00000000000000[package] name = "reform-setup" version = "0.1.0" edition = "2021" [profile.release] strip = true # Automatically strip symbols from the binary. opt-level = "z" # Optimize for size. lto = true [dependencies] adw = { version = "0.6.0", package = "libadwaita", features = ["v1_4"] } gtk = { version = "0.8.0", package = "gtk4", features = ["v4_12"] } gdk-pixbuf = "0.19.2" regex = "1.10.3" quick-xml = "0.31.0" pwhash = "1" mnt-reform-setup-wizard-1.0/cleanup.sh000077500000000000000000000006121461620463100200640ustar00rootroot00000000000000#!/bin/sh # # This script is run by the setup wizard after the setup wizard has completed successfully. # 1. Remove autostart of reform-setup rm /etc/profile.d/reform-setup.sh # 2. Remove root autologin rm /etc/systemd/system/getty@tty1.service.d/override.conf systemctl daemon-reload # 3. Enable and start greetd systemctl enable greetd systemctl start greetd # 4. Exit pkill sway exit mnt-reform-setup-wizard-1.0/gfx/000077500000000000000000000000001461620463100166635ustar00rootroot00000000000000mnt-reform-setup-wizard-1.0/gfx/mnt-reform.png000066400000000000000000002566541461620463100215010ustar00rootroot00000000000000PNG  IHDRtj|zTXtRaw profile type exifxڥir8vc^1˹"/tv8;UқHgXn_+=.J/_I{v'ݿ_˟gnc1~PG _x;QzzCD E(d}N?'N`ﴞ[} caOw,:S%z+sŽ=vc~ƓtzȏqJ@ 5YY3gRr~g+]&?wDD_vBgR_S8np ]9Vot~U=)g3}7Ov$}z!ǟPI|Ny7|g{ƕ9E?9jOo 6PȈ?௟?) fEY- xO1&:r`A_KgC$O_SCF@asX 2 iA+CCx0#9XMFROMs9\s=[%\JEh5jjbK-jk7FO=kow3iq#4eF6)fefŠ XeV_vy]w}ۡNt'|ʩ~;kӶO͔YZN'Y9#a%OƫR@Ai>)gOtE 2+g+cd0m_sͨ2#o͜Sao%7co*Og{Oi<"a*aN!kzyxVyF>i>B=z >{a=#Z>yqu' >8\,m+?{3jˡOBNI6(:e9NQQꋮf㸐qjs|>:Z;7eMfZ]a8_5@&j|gǝjk\$(1(S#MfxUWQIjN1  8_3nϼs^(Y"[)cAl,85:|HtpUt:c+ևdЪGJ\`![N:M4;|R dTo&ktX( ${zC<'3it[nс??3f t[yvg5Y&H"؝u:=!@"Ņv2NtMė볂m IzGB7`!K`1ը 7K$ Tc5_zlkr, &{4VGAP v`z/2C3!5EwpPL < Pr#\z՜~: Ǹq'硱SUpBʯh}cyxqO(|^P̨bXٌ"צ),l3TP_ VcdklI *͞W0 e7tJ=rLrWbѰ::9?o mb˥Z"ɵZ! M\n:ȱ =g¤@xxN`V5(9ZD 9 US\ nt㜂742NX7{okydp֫J ̬hI.C{WҦ Ϧ Ɩ~iɗz++Me~,5^#|ń#ƺK~)=Ul8GDz `SC2n $}:e3/ӣ԰2X5OTTUKdxt;*u H '0}Dcvn-L/1TGFuE}z/(-%@x | bj*Ss* Ġm~ІC^W1PƗs)l#&Ae1FH"&m:ڡ6+2S=!7ڀc]K*.܋ib;{p:I*6/z 3՞j=ޤ&a9-j !'J`(FCY&ޫkBWHw"bL`KfܜZ.AD%"58e`!&sGJCeFZn2CDGͱO5\+.E'"+bf $9ag:ͻߕȢc[Zn:XMh{ .j"zVKݏ -Z!LJWwj[*y3fpA|(J p& W<]H/ M2(Ow`v0:EY RJdP"~Vw){)-ƴds<~ 6~9pJ6dhTiƜ2 g@H. ϱ]P@虎z܃tq/ޏt`IFr4+C34G`,g8ɍZ GmkB`E,bP2ri t`+ 3rs jZlh<(ʧH'2rQ6^2aaP M`eډSҚi#=r[G {QP E<Jh?0 ًq+qe~lj*V~wqKZ(:̷pJ.TUU(5|1/jI'xz./-TAtw1(hH2p]A[&bvQX־JL\DzV"50ʭ2N0 V壎(D D:hyz℻ ͮEOxm30(0|EPq,U6ڃ5GM_wRa,tBf{"^ 6V֒#%*hmYDj"CCm"4.ڇт̴,qQ:wO% Tu;< NjQR8s7Kq$T$ZAb/Ӎ[BsiZT+j{!2ԋ)D6ŴY#j^cHuIx|xv2@V2X?$I%ZYrXZT^x F%bvNn^pQ\գQb-u}N]kF(Fa%Z _xV(j~$?2r -5&Q,[b9+J]CLmzV|S[oG1"CYn:;,m%Y;V^/^#Gvt:Wi_D>dZ>PvUr}R7AaA5mF[Ɠ{[ J[QJ+}@CEEwh"hV-9,λ}Ъ2 %ݰL*)R+B@DqY9YN÷.ƳA`1 'Xݴ7g6:}bxҤ ?r]segf63O,KV{Mx8 95[ju_)+\5T4PA6bXy?er䪀c5P\?U{I$8@.n:O3pet0IzEm⺫{0TWLŕbx?o÷79N,*}%^ywwntlr4 viTXtXML:com.adobe.xmp rF pHYs  ~tIME pQtEXtCommentCreated with GIMPW IDATx˒\Ir6摷*0ݍFLO4\k.^fzvw4OL4Lmh4$QqQƥZ LT s8 tS UUsĉ;ڿs AD%{?NDw;)=o|yr?W<ws`945sQ9~_:.~Xd?'"Z.;/8ӳk:~/,=9;)>gwJ+t/IssAQ{9Yɕ|ɱ=-O ιhѿ[.ï~†* n# YJ$T:tLyNaƵX,wh?K5=6ν,\sJ?JK dGQpDŽϥǗ=}__y鼨-=.)y;9eEIs?Pc!}H}swa7gιO?TmqB4g徛 ӾR0sIs 9^0OrNJ$%Y5rmn,=Dq?' B%<}QFDϽo(wr)b~??777swι?ʏ%",~ /I ''4~KrIyΒA<9XRxr}<8RRP!cyJވѤ9O pJR\+KǤ sPwpF|%=y{V/?+w||\Ћn$NN/*X%5y@1.\ \9V2H%"@ε4r.A)4M)s/WDt=rnG]ѽ{hXPunizf#+*$܏ i\9 N! (6aܹ4Fw0D"NptI FM{豥ZS"€( mI+]9QZ$))%=_nJMrI佧vK}Çi"}u???99!=v;rvs""/&O+L,I)1VidyhgRZHJI &8Z&>[.^MYaYchU(X>h*ұRwEx5s=={?>9G9튈.y8n~7gܘrEi>%DUJ%!Yd:~ba\tA0v7 [Bތ&'l! l |`n$Kȵp&:wo͆6͝q{O]בs{?{PXC9!99 Xk`!-B]L[:3,XAwj79Hp}i"pjlgGQ+Z-9&=|gD4)8Ђ6;}ŐnSD$k38P6,)+/4hN_,[,jt 䵴bR~5ީ6~'%h4Zlyg{ 8z)7Dz_6GqpT+U"yɂY ;nYCxMAeUiZecI1mEjiNvJ==@1z^~=_0 4cODgD{lsyu_xSGLס8 E-=jWUɹMʐ|V0ԶJM΂kqy ER7~\QiHbm CS|^,s gϞM;Dr;"z:)"܃޼yC~/ZP5F-ťAB C&h0w>b(פ U( 6ҬCɄ?w}Ȱ dxkX) DMu;WW]w<8!}_?u>77*ei P73gvƠ(z-O˱@Λ;/sWޟZc?bjUs Pe?ddpj[ߏdJǭ*szc , D|&4jSm-1+nI앂񄎈h'oS)6DD:@!K]ɪnb7MT`8i[nר3hJ(ك@=!: 6%S, 1Sc! AF{'o_줣՞ET3no:H:F]4[کBSzP!5gZk#ءƂe@J穡Sr^A$1'C=u;J9wj⓮VjAԸV ۲J n:G?ḮO|4OWXAX<Mr}h=RzNzU-0N9S\N[~!eN,F%%t(4b'؏jn臜Rg]0))^ZDž9 @[oV45aIm8w8+~ "*JC6lܴlAV#G$9 ֜CZb"Һ@YZzf!o,t- QxRp΍Dtg˻s>y%geK>TG zH$ˉ9TK|cfi5?Rߊ-y=KG#yn}b4 QkbߖҘT)ĩKa2ZlemR-á5 eiaUH7p`))b"^YUN$!#s " $lX|5=rkxhYQnµxΒjf'90 c̖_8NKNJAL- 7mԂ^s5 ԑM`RЯhX5?REJRS)RT\(y-0ͥj}k%kǀ8B=?©~)"'..tJZ`rwF侗%ta9ChSr9QE̱r-bZ/Z%&`" >/7$VJo1xщyu)< kD$ aǁp42CdAS/6rn,cC_rAkJz|rBP(⮋(Dc"A;)NK˺8ew1zAsmB`·4S0F{)z D**ĮF<њf 93RUh+B- m9B S>6d)ww ֓'MF:*U`C8b kԪGɃR[sDfNb\O"9疈 L>D){!Z1Zne Z[*B`)N#$7QZϜ.) ؑ{\s'7Ehjg-D)MڶKGQ:Up\JSնhK%wQY}8{@YRMu[ Vd_|"|#$Oh׹,Gw&+8Gιi%yZs \kY5ƥ5PX,h4XL=\Ϙy"G> {rJtqE8I(&\&-$ -#QkCJCJ\S\.HN8B;w|Za KhBd>(I"cӤkל(R&D蛴NS(kZ̜VA7.1Z6DO\6C}qҳt&Lڧ\VBdkc#"*AVCI,Lwr1zsiu>Qf;9bVcU8\QZfNKWt^As5 ᄱ5RCz~Н("}B&O@{}nprz-]ظF!G7ϼ۸N\inٔ.EiZ*n uj7IIT+k{LXNgaHAq!UKR^,ҞiNIG&>nS*\#z[;sR ":޾(ttêU*sUW+-VE}V|^[X1Y&V CkỊ;n\5J%S"RlO)۳t- W30w 8p>.Mg ?|T,yܢf *.(<'J 7>  K2*7:PFOfY(_ (+k)1DtťG'vSH5X=s˜y9(eΡR*UKuevg[Zy.9ͥ[SK:9&Z[ßj:}ߏι3R Mz5ZȃCwZa~ ]j(Dh$$ V%ν "Nk&#jj5( 9.u(㸣̰UI"b-Rj Pq .sV9Cj9ZNЬqhyN+\2Zx\&LӶSHU+)ev8^)z("W(Q]v]+5} :AKR"rg {'eV |֢i R7 |N$Vs Hq4B(: e>,9:inv?zB#4rgtjsŹ|h¯BP ͽ"Y 'jDaֹ?sAyy6sɵzjcRղ%+F&ZXU%Tx*'<5.@yJr5% .ÓզU(_YGih)xoE0n\VH "k:Z*tpVB.ͧĥ\[Fxgđq0T$#-'kv.6RHEf4q=P\Ox_y/tAqrvaCwn4JEpU})7)db9-T1"Y ujգ\ ғCM2FPmAE2"( fȣ^,=~d>jN[zqlV☫ͣ%Ply U8@4pXgɓ6d=B bm#*m?9BѰ*Ҧk噖6&\'&+?J0cֲ /eq#5aME!p~,)j6&Ұ+hv 䊀P_xiZ<e)DA-BII[ -lF qQ{Y&0 0 )5fجbj~9EYiᙚi97B0M sP"q )}9Fb.)VlԜ[c -xѤiXZ,7@U*W>%<$Э`HJx]j nx*֞]*Lh.$4ps(9\/yN5 jv(dM< \6ayX^8nGb " 6H<VOZ1iK)sUZ]^*ԒǘrP!TRPU| ˢAb}ɚ ( 55W+*5׫@Dhjt e3DnRUJ}ɗt% ŕP?Z4O%D&:eZ5^5oA[ikrh]Q>sRp= 9O8yX\Eh PS8\g ,*5G\$gyVjU4y,-Q^µR  V㴕24_hZsQِ5Pe>炞PUsp#S{:BZ~5 Lj=Rx#q%[\Ht%賎yrru_p[(?~y ŢBaN/g!$zڔWIxJ_5$,-R˫/b9^Ia2$3@jZ(J:HefS)hmQ.&8 ICk i4{?W؟x31cY$B2ż[Hh-( ^2Xg$pMIh PWOJYX,FF~КyRHp4A[nZCǵo3ѷ$(޿+siQuyb%,Q[Z_~hmjj9^a8(#CI *zŵ Zsk QfZB|4-3J}+~-c+5?₃' )#LzÈUdߵGi84^n)`/hiz!5kFkO)}?rVdiSS$A)xM=H:mAќ:&k<9)œ;ʪ8rF_ ϡ #{[ZVȨ55K^jιW-=9ZH()iPk&e@Q-(5Vn . %]!nRF[”PN^hlSi,7235d(R/(g9"@(U~ ''s(8J!=l=D eqk:9wSGl+ғAް(,D`פ޶^FԪYSZCbyq_sg(s0 qxbEZnKԒPqtaݴV_v҂X7sQ5sX!#+EE`@$Tٖb5 <[C{̑v5=&׾@DgQ,k"zRӛ l%Ғea2[@ZLQ:Ɵɤl33㊶ZrYAZ%FYji!ҔS!ET35 Zޟ b1"RUukr-.n v)QRHkʫQ'8(Dj5E[qDP>ԘB\jF(\i8DJXG":RX) G.t+iYzG qNȰ҄yl9gmԯ"5Rci N鵠mLR{r]]Dt ؂BiyPZ[ Ugb< ^$J*Z⠋C a8KsHPgVHm !Qf3gCeo\6קH |D[hRH4fRʩ44 6˚ZMt |$RVj?v}moY#Z,[RL5_m- iƊ(9d훣=u s({|ss3qzk+Jk HZm+z\nMKNMpmrߊ"@[rM^ZZ6Zs4JgQӻEڟsqgw1B 4%9i)ѳn{\Yr 6ukU8< @y}Md _(:4rȥ/k;iƠAJؓ*-JPl677g+d~@gBH3DtJ`>nǫxR㺅 Uͨ5CKntiZCD*(ђaB}_x8嶄A5{&LJk ճq{F#[NK !iB&&faq>(bSX\\.v/[L Rm*ܹ@]nYUϖť2[XcFBi9c`nTxui,z1@졪)ɐ㠠x9q|MDofS 4Ƀ}ߊiqu '·n`5F!EERȹ۵5 Xd(R֍fX[n-(iMc{ U#$/Y9徇zt(L|\>?vn焏sn[ J@4bA6;s,ReIDg]CrGQyT]FhY8JL- ,XEk jR 5.Q%dm\yLD٪W!`XqZjI)h98Dr}n8kN+4S2*kP"4-ލF J5=.t-=Z%BRVdդua1|3NxOE)rΝEXRB iMkr0 ߢ!nk Z{Z7ws;J k0f]d6ѬMV&h'eNI0wT) W6{zK yu* $z`37R`Gj鱬e딨qVVr -A-܁ȖBqn˽Y67.YŲ)bbI 0׮F"z0,qZ+ă,QhkJ-6-b<眮pB@J\̤U%Ƶ箏usMfT1s1R,ϱ"t%' ZVI \m.;̒Y>hLuv}}ݓN |tl)ArVM 5-&; |5,t|^5S>i,yx9ʊfqAbťj)lCܳx,m7QCVQݾpJqOsB5iQ!,"UmnIff?Z/'pKE\x4 Қ(8йsϫd jֱ60UKFBo4E{ A&GElιWP #=qx0)zlJBtZOGZ9 ISD:-XS(9Z2XEj`=PkB*4=)d=ަq @8>߷QW) ؞Nҁr=d5̩5ZX^Md96GkiCM'WTT[8%IVpJ "(R n0$ssPcO!ΏxND!<OD4TfyVrj|M- J^+wQKI|"!V- sr_YYx&荶E]9Lph#;+7LlZLZR422Ԣ_EC,Di ( S0i\ CǕ 5FD%LK4H(N>2 yxm5Ev!Me q,#. f`Dì]59 9! k rV {͇ޑgu0}t[krQZ 1"AFqwΝz_a.-X,hR5V8B깬7U# |mMJC4[<vJUV˚^CZZmY(H:a.@ڲ.mTSΫۀϠe-EYգo\z|kR6שU ~j9RDML\컅EfZ4FҊE ֕6iTZVV}Z"8@ZACrRp{&V Ḯ름}e+R6שR ι{Snw_sfU%js9LKEo)΢& iXR"0ԳPXK34 VT[G+"-IF᣸pmGᔔ}~Џaҝ42ݰv!r9֍8,G[UqĂSبUe 2*YJa"ִjBYR5:"k~7l@aJ MEA (͟M?S2<]"舼Oh8$|s(lf}-vJ)*ŒܷG8bPT/լhsh+6^!VZR0P d1`VZ̙D5AύhLZ~3D2[ xB Ϗ8łwDtj]Żޟ'z¿byZ:m~Ⅎ6ƣ%]]])}7Y܁- 0fJ nq/ɺ-}^a[2rqkSXtiԯEZ!Q[zh`xƱZzgk;O12P~]ѫ)8SߩjN Z4FQaihR-Rxkv߭iQw, wQY4j:,ֵc1~581qin).)ѠqZ"ާORpνSl¦ŪMПB;s( hkxRLRgB=C , 1JJ#f8>suM)vL @HV͌zZj7YtKr9١eKV}z\,ȳ&fXZ|*-uVZQ5ڰ=9޷fm.ӫqZV!-`+M' Pz9*gii- :5" $?l"d IDATTfm9c\VHmZ<;3JC@6mtiL)8^__TOqBRy>DhK#RKL#YךUŇ(k 6(ͺC[xZHT;-&59f5 2;FfTGR޿ v4f;1﷥)wMVv +ˆ}Zh֝8,ici@ZyR acPKCm,;%asuu5PE8/B0 w\S@4x ЪRFӷ"вGFjY֌ 7gX!R0Q҈( 4œR \ojyôEn^t]7jE;"zޕ~7 yP -SL-YCBKvK˖XKT|U J_m@rY%Z٣IOrjQ_L#kR Vnip`sS@Ұ"X-MJ\kVK0m5ŻvKpQh/*^"Y˺?v CBx9/\S "f1LxD=&,ڶB(R3,su Oۢoڋ8WKݜKyhZ+V {s ZY=l Zv jo%=%+}U1), :991 tkE0qV!:R'uB˒ Xqw^ʵMdj!ʦbHkTk#OH:i8NkOEl菍F6mzB`>*]Kc T0bҒ[2sXj(\:wI+td 4e6}~wUZ9#B=XGaOD{W ιﺮZV佧Z"rk^֚mYkq-nQ-DSHLJ[,H9Us "iޫɘ[ecS$}u}]]]M ԠpR_CPV!<ؘoZ[M,y҂Q4pAB\Dөh̻9h9oZH*R -iBf&z[puus=n[y g0L1QS)-U,X)Q [`o,Y*P]k)Ԩ[@>Ѿ% %J-/)mkkMKBA /"7ZS5z5 -=}@BBrlHpV;65mB7)<霹jTXoP@h94AlmDʰƀfYYcF:7K;x ݛ>k ]|H&ǃl6\.iHQ R24 $f!Y&x֞OKnl8aں/HzMtnP\IVA{/Œ-fnqZFon>$O{#D6-5LTh3B0QkWQ1aiIX QGV !=k}dž(1hjy-bw\yP&pOljײ=S\gx,\k;GPm\.IBFZ-^M!Pkn憞=UsBfi$*bI9Gv-LF=$0ezc"`X5 {(T Dok0𛛛I)Wt-4RFH74BQ]\oɢ?dSpLNЭ [#,ր3e ꁄkuqS5ibT onna]׽lVGĜcM#Ch9 z gR,eՌ_æUF7#Jb 1[<n"sʆd5 8NTB9v#F.z3wSݩjF|Vp9-_?jQZk&\¾s9 ))t(IDeZ*ki*PHkLj .~Ac aąkiEn\)8础w bms# HH7@2Z{ %%f·*[whڮZdڵ}j4i MsJ7$Kܹ{.qcQκk> %v IThN8 ;XEؐjOt%VUP,y.·H= -Q^R[8WiH(^mADh+,r#s1v(0 ωW 5DるS4DV0h54tn*CG$8|]#jդQZŢ@ZyKWKHDZG9l6wQjf?sR{۩b*`[.S1᷈HW1Z,y)T"O{b5ZփCyPCifT>>Zok`0B\:5Px$?'%"B-;\\?p%lcYHƭjFz)*]o\R5z{gn(󫫫j""q'ii>,nmU٬lZb?6_?,ͷVjzeXw2j]-gµF"j^0rᆆa`shB="lI@ifV%xQKʸeS % &m)Z΃Kt-\PFJF58\kH l6ʂ(ιs\{"U-䈨BtBf lZ]VY/8$nD,j\VbںK ȷJ[Š4ۇ[@+dxl=7y4Jav;OJ ZA!jzZFjޚWS\'rmp+pM5[(P1vQJWV9bCr)8hN̩8^RޏNj§![j)epW ,rmhM޼f!cܦ-=?K`/'9cmيj 1$.`J ?mt5tsGsc2:{]{F H J!T@˚ޱ(bװ2J@+YG ,r4`p .YX}RcbHPċE{?̎Bu~gD1y {m>V+ ImIVն",Y595S\ƕF.J`㸳$L)@ҖNn \ZxCXm#3ƣ%qB0M> *jpuu5h/#EYHJim@85&wAHKi|T0G9jϣdR صt)}HIƁF"{/V+;jT{S O"UR-|C֢bS,YL_&ؚD]TX4ϔ (YC.) I.V[?jI]>r9@v˾cFaV{uUUnR V!43GbϚnlJ *T()vںtRI h֍I)(K4} &SGY-n{J!f^,tuu5Gµ7 Ý`F͢iHfiJӊR}b*mqEI'B*֑V[hv[xj؀{{ɶB=k<-_꼂quu }fW 0 ]בsnrH-U6"J5XnM:.k-bڑ>9Bԭ/b\!;(٢L4 FB2PbA]];~|J=;q4-ѰhiMڱ5w kUc8(8K4< Kx; {uqkjT4{qƛR9@T{ a ި~E349R8Ǔn."Y1r\ҩN Eҽ }֥ [h Y2u/iN5)ZT֎ąkq:0 ~O~tJ9sp7DSWaW`-7Wݨ, [{*TtF59(QuZ҇jF9!Ԝp eZOK AZ&O!.\>?:fݎ]4qmM붜ZMd(! M֦J՜Pvm&pK6`ZR9F=K&dpi >vjkd5 C.Z u=BjD휛HHHJ:3pFk1-!,\K’+NGDi9"t>ѥC5`" Bv-e/Y!\sk{sn6un1@ h(rk UKJAS,UDk6MN@nR\Jm7KYF%G#J~/nt? wڬMPh_brPx 9n=3b…3)PzDr,_Ebx|&Es6&pk5"V<Rj}mf㸇R[Z'W+x,1 Z(b74w$'rI777F?Jz}gAn[:>>bAGGGѣw`eY9y8\V'hP@s[xRR8'M6L k*-seGƚo5/9<^-^!AhmJ\J{), }[G?sC:996cj*)w=j ( 8ޒ[j2DF6:5^3›sCy.Ũm^,=j7$6\Ts #Wb~ k}5Xp0z￉ݾX))*VwDIXI$U!Rr928 ~h&)]'j#^I T JKC#n^-KKŸ/Y5%%¥!K> T;&,\zinMku2( ..W[yI"˺bm1lr297kA5}b RH48qNh1jEXZrJ$24W]P(8e[u乤50Q\L!SѷsΖ^Ċ –#q XKkPӢE}Yc%h>48p IDATU ZX6f}%sז \Dv;5 vSP q#SU8I[t.4IQ FS+m|6 ;*CAhT,)mA'gdQT K$/q1|?%[`"0iO!^% K iYAAڍ)TT+q_mG[+MZ% i?Zq]5eD!HwZ=8PE~J{?>82*\*%-Is=Vkhz)`* $TZXϴmGxPM jptn Ith*$au(W\SJ9GV!u'gD+"ι}PBT)e pPr= (#ARmTLіpTM=W +t/0NX"鴖l )ȍzZ/KJQj4Mt8o zj"!c vH3#28PhcxEAƱk)BrU/iyz/, 4fmTf|b j)V.&k{J9λ&Ea2J zUȱڜvٚYX֦)T[VSP/$kkj"V6@rj~/-AN钷5pT4a6$93"aT5[d V?w,ZV˂ZIcZV(KC Zk jhUs8 PdK}4A 8!)%R =rv4C)+8~0 CF2 BRSȖ51e,^b.!zK!c@>XqxQҤr*ФW[ oԺ( rtRnk-Gj]XE.=OSR S"~j¿v]7/^uXng4ͣ9זeKMl ɜڵ % O,^pŞ`jYIJJSDJp3\(`G{qc)'ܵv8CS ~OR8Hf'opQ )iՍ!bYscL{N/@}Zhr5gla.E#~?J'VTtd 73m!e"O@5 )9 %nԶ+7% O &xDP v}BSk4RH^!mcX2P)5R8hܘuBMSڥ&Ih9d<|.Q/Xi:@s/qQl躎vmV@c) rNpba %_^f:lRo.t!.<\Ym֦6ݔ.ѧ^cX,hMpR|6No|RY򪹟ݎΦqxNc뺑S9}WӧniZ_|AGGG&j[D0H}},w#:w-9hZjzkY,t;1ݻ7 hXq-oQZ=5~Hv NjPNAh;O\N]XtZ޽{Ӹ=eL'н{i)) x>{{KO>UI1ŋtssC>;~C?I@oמw]GՊagϞ'|B?NOO髯`;(5w6b3RSasԐaד4{(ؚ ?8D)K !V5쒨5Pi?j1! 9249N䌾8{$XK.s a{Ot||L=>8-%߇҇zu~||` EWݣL#(AP9 > B󕚸hk ,h'Zиh&6eʆp "fH͋!쥹g.g *"4kJ'~ qA|G=-X^Vu'^dž-ߍxR_~M~)}O777tЮiNHՖtlhJ x#A1M`LzXo9ey5<t9 rߚMI ȳ\J̼%zޞD# mi|% >w0|h9bb+c{9*$_D]~]]][jfC777tsso 2hO@c.ӨFF ںo1j,y4v9N4z,H=]^^Bkp:::nR.ߟ`+"_9\Va^x?΅I aJ\9D[Y5!YpsA6sJ Ixza}kĵl̍Y#տ=R<9%2U#6noo*;=pq?sh>t 4+Rq_i=0HP!}& |AZG io-5UZ7 zιsdW ">_|1˗/'?Gc ,qٳgS|з`!jNziZWKQCvB@~>ΰA?ㄝsp%W(`g!}=+(U^^^ҳg&{z#z!}w{?@zO{7_~'}{o;MlNS-²Esh'E8t?2`BA%E6`;/mMF@k*Q5PYni AREҭZҐa[-)n 01}yy <I HTiORr  J砐v{KH5EQDX\AUiϚj(HX+_cii*+t%\.?S>- _;ł6ͲQS|X]у=Gћ7oh_-ZRJ/~u oavMa8J4IH WLqD4R9rW_}E9:==F4+rw?aR־\$SjsVpFS0c5qd9`ߏKj{ooo&<99??7o/W9OIݿ~^W1vhZjCVT.rhNY 0vݻQqT;xJϟMLrqэe1qfZ! 4 ?n 9qW^;yE w\Ji6ZBiZ&wsP*Bd~P>=x6rv; +.rl6O~q c^;J/d}CA\C9y*4aW^ѫWoǃ0R(X}']*ߟ7͝ga@`NXk ")t6MܠbO71 (LdӜ<}?01Kw%Jsl}=A)@˾,c6ֽ{RxJWř@!H )bA'''+" h5jb6.mx)8؍K`m)x6VK޸B2)ԓX ClB`O=&Ns ^6͔ s7{ӎ)ݡ6͔Ax%ȏ=O> ur Y0h v + T ,אzrI >72j_CP(k.hq)}Hc6A\ô7?OhrZ9a((Rщ%HMSettC5J"5 w,Z-ka̒/]יd p2NDp#(dTJ*絡A8+Oso~ѱsz=y ]MJ[H<171HEJ;me9s@ mgDx6TգuB*KI:"8ΰX,NqR@/ރRODANiF@R zVzxxJfs֐BiVEVk,u뼕!eL'=G4&y/d& ^Y9K B#skn/p]{yh>ϗIOz9ط)}:ꗛD]׽S IB!~@ T𤿗R*p *g[ Z2F%FB3$K B#4%+ x9EfqB0$04!V.R-7Z_r}Ui*hJG "d#qqA777=vXE/YԱQ‚u =EM/jIKb~ `C[G!]x %,f9|J4eCHr4i¹k:>>>h.K:>>0/h~J9 )u\T9/ l6kzqqSm pJ;U*K (JH-p| HZhS4"]y\TmL-X[ /ye6A9կ~E]dPu,܏n~1s{%P? dׯիW_/hZjz=)^=Ej?LZ]/GH}?ޒsxj4qo/r +kIt~~>r=|WX|r}ٔQyHn>ы/&ѣGwzz KZ,tttD|;D̝U4o6:??O<1C+u9>>~nnʗЗ_~IGGGwz9ޯ0__O _:0~Ç4-@n=Fs'Fc nG]On)|H9yg?} pW_}5)wtrrrG0 5(b!:}4#}_"{N!?x~_Msv$҈s aW_}5 >|`bW_}ED4qX# cL|ttD'27 s5w\ב]EL9,ɒ`T||+Յp&dZZד>~\od8‚yBz\.'Jň`زsLSslVX,3FR*$N+57 IDATt:2L{2tG ]*"ώK\.NL[:y>VH4IZ*"`ZkL,"/ h4l֯5/  %es7>)}4Vc9mERS?'pml6+ZPo e{î{gQLVΉ36v|&BAz*ɹ%y)g_A@~3JIV9auQ:NVg@m`1ĕ8Go3. e?]`8>vop>ϧt2eii)bVq xUF_،.]{TxL&ROF3,"\6`!b젒Bi8_;4u.ߴ9 m`LLM2qH'ph| J;..n~ƶwre5Z3cBƟ>.wWĞfqQG,X\ HVCʹݧk 7r upӃ GJDHYM (>pʆxb`l$?'cẸg۔خNi`m!ݴsMIQ/zD+|k'mL4כΆ7]Pg^{}40v(uF0ko(!Z#HT'l.[\6^8NTN! |>t^ ;b16Ǡ`Dl"K6X QNف) ]tƀ\oi=p*S/piIZ}ن+Al$ct\e!9fq\0fnsϐ^gH3޸FpǴ,l}J| 0%_\p h(s_|ހoNBZiG0 7PڄUs)i<y q$sf/e Z]3z3JetDA˧Gjrpe5RtE(2M~tz߾Hw.TN D| ;۸ޗ9!}e#d+!q̙J.`h$BrHSz&";b(ш%0 "22B2lV:=Щ3&tF-49 pՋ^\{I 6K(IC~+GJVz.z { !Ԩ6vSRIZV)VEd1 yiBt:(bh6NY&2Gt†nGJR^uFǽݼmH8,#Jk.#kNq}bduqIMtjsEh hrD$4!.itLs>.WW@V&p'6'm׊e\נ W(S &q|f_,#|>/ 2Ld9 G?L(8 8pF1t:f13DC̸C7Lm53 !%*6iU*be0mfc  nW86"#v4)ġ|קAR k˖qF=ISw>d Ѓqe\`צ.rtTЧW\ؓ6|^Fr`0vϞb:.p8<)p߃'׺ynG!/f[kCl(!l ~Kҍ9Xdg"Ҙ|\jqd3nk^lZj,c 𰙎]=|>99\.gE$5ڮh6F"lx\Wە!zhqW29v ژ']%]M\v8@^}q=̌sqe*w\}8DXP0Fa6kt!3g=+xqG@0r\* Ík>gCP(n2cX,d -Ӥ\Pl6+ ftfR*LP(R@Ru#5M-J%Y\\4!|F1  sRI׭$hx?+++9R)Y\\ZXtf"lpJ`qt:-kkkqr,zMRF̚E0WVϬ znE l,A9 "x eh$P ^$}p(gKT#Ӧ$N~4B "fFGvXJsZ+oL&Kەf)SyN(Dj%cF#z(r||,bѼlRb&I yͭH>7ӎ:<,z].]$looE)hl66\ݖy)rMYYYj|51` CywH2lnnÇϠ{| &eY^^/Rdqq1B'ң CoȣG:C%.sss%O<9Sv4J]RդnnK=CHzM7\p\pAnܸ!NǬ]br # \XX}Y]]t:-w1=vJ@ifkkKI\6hH"]Kx6bς,N=j{tKD=|_N!y(nrIfwwWd8ZITz\~L/޿_$l5Ҹht2ȃ$JIە` ~J8?F_(֭[Y.}Tx<>ຓ"ty cGGG駟 qpp MKղ$Qo߾mq=ݕCuZە?\vwwe:nX>] l.~Ϟ==F#V8͢; ݻwΝ;fo>t6VeXQ|W&õ\ARF*M&z& >bR$ptJ l*~4NADs\F ȭ|V24A8ISy$t4JR|5j|ms]ݍL9@?޽{g Pͦ4DaNǑx䉉4d2H`rbqϧnGݖNUK2>3je.J^'$$%ÙSp ziYD? `/#͚ Hy"k*NKXt:ֈm/)&be;H1AbgAr:JMʋ'_F AzOIg|hC 4+5q@sZǺe6tҠg8&XM(]kߗQ:L>E4 $f?,m+rzB@qTKɒKYD"cq T*ep!h7ߔ_Ʋ0(^O_Eܹc6OS) \#CD ܹ#_)I\~oU],8J;;;ƙ曦tbS]cتKh2:֌K]*rT u^R$lΎٔgʒaggϞFf\_RHѐvm(SpIfDDj<|ʊlllR1Ȁ{}/^(W^5Jd qqrYvvv \tSqF|~e~~ޔ5%4Zq@AUb(F#bӲl~<axG> `>JUbxiyR 6lNP(HRuY]]x,rҥ3F'277'R.e2ȵkdqq1Ҵf`Ǎ%^)T*%oF9666dccCөoqo\^` .\0صkdee%Vu.wnnN._l{.θ\rE999%ty>E7ŕ+WRg=Cv횁f\h%W\t*r95<\xtZ\"jUNNNFLWĺ"wy셋/ܜ^J.iZX@`3N!8<$QM(M% s5ĀwcRGu- T1nVl L2G!yx=&C)Z嗤 (hdpďl?- vPhg&T B)_> `X,f`p:!;|&ZX`kRɼ(&rsԢU#l6+fkyXu>.KOF XDXэЙbq 5EBNDR1%._Cvx(EiY8sNj: A``.GztTʠ[lr.J%aO*7;F%||sz= fR8=$Ssss,_ٰCp)|b;߇SD\.Ks( % ` f1wxw5Ck4kME 砕|JA H8SaGJB:f VADwqD"q#"'W\׶t&k(o)c\6Sl 4] ҹ7 '㺮$0GwƲ D|l3 $eL9Woaǘj{3ch.I9ƽ/d2# r,TLN3Y)a P~\)ˑ3vl`i꾃|9ս d@J]Bq_jl tyG/\8N-uFe(9Wgdx dWZI"h48j,QSN=}[}[y[$mrSq.ߦ̦|QViθ/@gtHpsYvIu|N>ʤh2DtJЎμ0l dlY$0g l{\^Ӯ5?k99gr 1<;Z*Z`=6({,06]Ͳ~jqsV#xNyO0z$m'd1tԭ׼RRi&_pqM7Ρp>GP+ueVu38SwEv>;NmSۜ<]:ƽ=kW~4 r =`T*2`{{{Ls!B!W~ tAq_32'cJdbBz'4p6u4_AT6ZU*eIT\St8J >gmF+N(k%lN,{I q>V_vE!Ѩ M)#.O%h0-N'DS}T*_*bh{- S|>g%iC;tX)Icm A<]2JnPmrQ$h NM⧣rek1 SN';ᨴӝ󆯁1Oݍ.嵸x@^DMg ,6F7NGt1Tg)}mb`00g["e {{{Fý 4]L>`ӹ erR l]r ""OfP(HO9N` GIۤ9vd '=Y_.NpMm>?;',<>e0L}e6-v BAF"-f[/"I'AE\Ӓ'q rs߁i$f8A9ԧ؂Td3p<9pCjel|x.ad":g@yVTWa}:~D8KHM66<VL_rJq h4<|Ps2.մx,NGZ;wNq 灒[T .EX4X0d6`Mߗt:-jUӐќuyr9YXXhAi_dGXE) l6\kGlJ,--I.~o-`l\.K0ׯ_?s9ٜrPE)Hד;wDBZ?? 9"Y[[Cyi$۶n@KC!O<#|RlVvX, u\ed+++0 Pд:IR+agCDS| `:qO"L&jdooOf5ph9X$*^_ڧ=ǶcaݖwʳgϤj%m2l۷ӧa/K6=CL&ceuW; ٳgtd<h IDATt:i4rppa]26^tւ> 2+|j*~pĝfb "RPlv BSM<0#" ߸`k2ёaۓ^wPԈk{rr"(c:ݻw@  3Nv͈|/Ve@|We=yD7ɵUw5V%fUNNN֭[f}&tevȝNGnܸa7o1zc#mj͛k>@0cs,qAёQcg9GJ{LI9 6p*,"~=R*^ёi]:/1Lh8И/N!Ԗ?aZ-0 z0dq咎9b=m\/n8ڊ;.E=c 8➭븼ɜdWmrR*9fjzZu%cYR$NTVN x?La!NyT#_zUժJ%hx,RBld"Ϟ=VUsZG+ZXnݺef@F&6osVnW={@'`z}SH -t|P."vp|\ vtD 2B c"G|ifkSW=_7x5=wӉy9w\ ˷j6HObccC]f@&l7ZA&}5Mok׮| J%"50 d0ܿǂ~:tNvkfs)C`pki<F%8RSlE`Xn޼)v[<|D,ݩ5r5)rmi6!?ƍY%;mҝ2:Ǐ֭[jdkkK{=#1A VC_Kӑ7xC\b6gAT*g}&~_\"ϟׯ;0|5\P(|2ի*w9#i+c]Zuo+ب=~8uؐ1j} rtt4Ħv8*~Q[XX+ԯa.z]~_@muuU*1v,>nllHP?P0+WիWessqD snllx<6O~"W%o)!S±]A,..ӧO巿\|YI}џqqtZ~_۰o BJc]Zy\>OB6؄r9F/9R Y8J% ?6#bmSƠ]^^ ^9nRqxE A[{BA,--E_*9J%YXX0хjEkZ}.,8fiJO&)F^qΥJ"b(2gjDQMQfQܜ\XX`}\cE7vgnW%Ғjq\&,//KZ2[m𱹹)]1NX4@Oϻ])|9ce8n֒)EFͷyؠظ6X("qG-0mvbg)PNilR_)ossӼY> .D,eaa*_C؎h:Y]]ȹUAU 'mH %}:60a]~s6wyy 'YR@Y:6Klk0 %i@۞-4\¡} K a:Sq5YrPߦ2Ft0q0Ϡ}Vi6p8ȟpjd}Vt:^ƈH W$t=O2f]VC9FjlzΜ$a"I8l' $fƃξ;vYC2Q"^aj Hm#) $I2 ׬e=16ыH\$%);֛[^$MUg<W;/s:{#\+j"s/m{e6lDl8\:qQg`C4@j458g;_3GmWw: eZu]IGćOVfKՓԹC2kI<\cs uYQ5I@ G:҆Ec`oyzrr"b4mAmM鯙 lRIzq}|k?Q-JU#Sx\BWOX8l5dFXl&؂AM 41$JcՙO^=s6*Eg3bI;㜃kmў28gq$/'/i#16q{G6(M9m̧q#z@E]A~\L2"yݮœBaBkT~ 2LZ."N_md*Hg ĩ+j|Ίqx5_smFBwg'=׈mCkIzK'i=v~jxY{€kP-tbINmX[m4 ю'lh<}sVb{&'''RTL Z?N.Ky|Y;-ItdnnE8>NyfxipNGYK_d'hF]%BOumu9ˠd} ֺg2|.TKZ%\jԚM7I9džHsT1-2~I\ό#z[24 ^\rt~ߔVyƨj;p~/Ž+\*u;TUT lw4]e Awõ3McCPJ`6IOZD e)W6`8tK;/S {QJjCEg}( g-KJ1 dǛP۞;S9 KouL$+1*iiP:=.js z߰Nh%&lipfgv2XBTQAՂ5 PA~HB "٬\+)%.|B[%d(0:cN6nF3:#Y gS":La3n9{a!5ۮ%Ms\rw=hu+gvjI ԅwlPbB9 䘜Ol|@`QQdzu kh4RT82[p z.qL^Y@D08(9I{ne/OI崊S2)\Ĥ?J.(xQ38-lH^بtI9ḩͽ  R)7`mNt㌟|vs2qbѸzw`0@|吤R"l5?v0fSMYQEqeuu5Բ3DH/tRh>0AyLժcŭ)HL$rpxxygKZX7d2Jbt^_k5kAs-c+!K՟_sΔYqa jzi[T7]=rlCSk.Q"Wlҝq()}/`$I BJh@#Y d+IS.B=]w!p}O,..Zl} eYXoݕ']Bӽ&1à ZJ3aΉH뇒) XC 3޸qCөe#'n;0p{5 ّsI>74T*V {ߗ#G@cWY__jOg `GE}Ւv}|g*t]c3Nba2,JO!"nwG r~_?~zmZGd"O>phS%,6ɉmz=ҶѾkT*td0ȷ~+v9/"rMݕF!nWnܸ!6k޻wO:h4JZAɓ'2Nyt܋-bsgIݖx,y.Rt:/Bd0g}ft}q;L͛Q""Iw>|hݻwѣGo]]7U;vW|l6% C6xfp8V%ׯ_7U7nDzZ}jhwww9Cq \Uwu޷.qb#oooG0I֕cy vvv89[~:ޞGd3Ծr upp`ttD9ff"tOg8Ju%iRFUk vojrUGX4ϋtnڨﳧr(d2t:FG#6[:낋k646E%x~q\ݗ2̋FPnHEz?}wl/t1PųqʐrdE{J%cH PT*e"Zb(R)Ӹ9 :}ӄR#6҉ cC5#{.[=?Nޞ dkkK.\?v!R<{|XoaĪtϊ$۾\Pp84/8La#ϛ3  'S8 uZ;wL򗿔WfK9 ζYx3$>(.]$lV_.VK666o#ifЗyt}{EG#Y;(3\pA`0;wYך0}L&.z]>Sk!NcccC?\|Y}]O׾ ^*>7nHVۿ[nrȪ^]&X~H:6FR)2ϥVRa|r,?P.]$/_6`-oii.ׯ_7oAjIK-թq[r||,$N| /_R,ɺY oa(rUOOguȿ!6g7o`3ULhj A?UxEfEt R)Y]]5F]v[t <<q.N':I \ZZǏcl6+z]j ۷o{kckϟ?NZ9ޞLwW '/mMYU9,ennN:Ǖ5aժ|9Ί CY^^ =޻mY\\ d}}ݰ~M҈Ȳ~/ JdiiI< 2d.l~ߗ5Ө]YY1' &;v\(3I|70 A`00SaNDƯ҆q QSOojQ)JfGG%sk+J&d6*6׸ԑX nj !GZ93 >q!W:5ϭ-sn7Q.٨PtLː\5 ŋF#MMR,QV&yy<K6J"ssszsI7Mm3]Y:@l9I.33:ƜOؗI n^&m?[v,sz=G{YXr9†j1Z% å)aXUxJGx` ex,RI-\/7/I ]ѺƨuK2Եm%#&0D4k\&Ils >P_g9 QMIu4r$;d~Ia솁8{Fj: WV y1G*ۻWHu ` P@}L&)H- "l6+^D fK0<[߷]} , NyN_AkmJY3\Fr6qQlbd=qBpKU̜qrĝ\tI4fV:LjĹ|`5$7{9ذ*[.!w,:?]q ``防),5#)_j&)x1A +:bE63暿)w-yaw@ M1'1rdB9.X[SN"3K9fzm%3KK.f+%lARyxE6cs|p(R *IC֊+д*ZAnV k'qPf ,'|>o 7mDCWv 'u>:+ˀsSv0dY :g 8vgטQ ,64D)ZkQvTP،6;k;@fLkZ ,Ь6gߦ䯙&ڦ5Gu2h f'iC̢Ci6i׾l9g z]m 1峍Y'pHfq.8[Oͷ}C*Ɔ^[aVD6鴙QQ@-%%yY[t<+q8b3ǵudpX@f;f\㗝U?KeYPE~.E56V;<ѥ}% =ܬv'@b-A8G:pJhgmNݲSvlmfvc?IP|w0/JIV^ aun4NGNAcFQ3˸؜s-dSHZu-$֎<]s"k':9"c ʒF~.r8s^Z9ӷ>|ޡg w6::kz<\GLg\O _]=zO%!3بkMeWV,:L:>}{= nAD^+> "^.3ٜSFt7\S^=]4 Tl86Qln#;B .CrxZ Q.xq06c_Y:~𺸚qNe*͚4"uY.cK: fP"H"rdp.,/-uPˆe2S^sA3ʮ~U7XGJXfTRm;mo Cilz)hx:0 Td\P(ȭ[d~~^ /m~uY@yhh۷o#Q!9::2@<4 t:X>m@m}rr"of$s8::,dvp(H666L*[l(3טaFA$/ǑE&F}Xa iUg(HݮYW@l=0>vш? | Z&v2񱉺(<{6[sp?R.rYZZ2Y3?b~'/_Zv5lZ AgߗV%p@\Y$A.Kz9SHnȭ[^>7 pzWǶnl)'<4E%HNNNdooOͦ4fsZ?EdyyY }`08C-yVttt yLS9>>Dlp:}F_F#/- l6dt:oV:I]ۦV]Z*O?TժF#988O?Ԩ6êKJnݒFa_ȃlzq n+_|+}QLʦezmT*rrrbݻ'^JnsZ@ {X٬ܽ{Wͦ<{Ny^hp*{{{Ç J>9::2ɓ'F?\.ra">Mg36 vZ WaH*V`CO C* u`pY:(#5X }\IWpqɌcyYF]<#\ΰnvggLS:sh4{ |Y,r||l,S`ȽuyFg$EqݳpMS6e` O>=C*>:1XVKۈJ mooup7j^jIד Hs2 -*c#/;L޽{rG> 0}#ߊOkw ;\:wQ$GgS8u\k 20K0<ΚpݖO~6 D#9; WO뺢u2=KLƅ 10َImzʘ %6ǎm68H& >zueM6})w;d/[),K.>택 ޟzήr' Z~^B~ܡ4 :A\ %0 v^S098Vu^LIf lj#*W3ѧŁl2.8^l<]فdNM?Q0kq".֍YJ}H_v^8߱9kWoyushk>Jx9͙p =4\CuF9F8"@Sp84t:ȺDdR"N:@l??K. .jhXǑtˢh$}ܹsG"zͲOHRcꫯ""rzܻwL-R 'Kla(?KՒ //nFS?֋Ƃl6"".׮]7oFQiM%ѣG/TJ~ӟ`0gR@kRz]~ms d_n;֖loowJ:|_jU?d"rY~mе @\"rm @x j&vi" 8GT7|S~TիW =gd1z7ߔ#% CY__ .Z?>z*ŋ_Jd2y7>znX||3Q^,Ϟ=/RDDΟ?/\v-2QDA+ҢbQ~ߙ*,E#CTuayGyy>f(0!CO1*aJZ4q>k#^tIr|'R*daaAHj;wN>3ًg\.˥KjΎ\r|*sg߹sdaaAKժ\vM38Q ;/=~[ݻ08~eYZZm) C9<<}>˗eggG޽+j}Y rY޽{fޓN#{{{Ơ1BƸff]YYK.7|#W^k׮AI4H?[ >99K.ɭ[$J/R)vô1J*0ȅBAΟ?/~\rE\"zq`a:jpssS_.[oeaa:o˦!Wj 0,-OӺ<{GT*CI>,@QǒdX,JP/$м6 YXX4`5?FآyaDwvl $_դ^GhIJa,ȅ doo@J2IONNd~~^#5ᤥ$| /^OJ:6=W30ܛ9L&cm6&i$HP3*{gX\.#TQtn:naxu+-AP2L0bیh4RdOԦIa+W²A\f&LHɄy(x~lbSӎl:>#w|"n]LMyVn8J\J"F_Rw.`q\.g"lMؐ-y @>mI82f>=s s2O\k#gcpl$Y'١fX^\u&kKjzoHZ5 #ć 8rh4ZVST&6x<l qCqstrrb&a&csX<p!ٮ PԈ$UлH$ lJj;Ɵmظlh&ݡ$`]\5*}KÎu2hd5z<po\`TY*ɓ (*L= #g28+t9D0cϥR)y l*0  _'f3t8 (7Ţ9زe2lج6j28 4_0&6tr* $6atB7+|5ڄ>L )n:8|+/н*dڦV2R6)_ v.h˪8304 fj.]g:C۳~6,wF=~fxY0 ϝ4,U"r>ͦDDfF 2 ƇIwH*f/{e Mj72"h&|YvR,5h9NՑm"m_!Yr|pդU>M8lLUKr.̸-e4).4:kArNت<:KgU֏Njlni)JR,M4X\ a b;a{*:Aݎq^=dn2au0g N}`)g8 %+/!B VqmK06$q1\J 7yFt!3JnkJ5,hβ..+rmfpi1 e`^;d )@\tݮpP)!mJ#zC0ᱚ]%v aQ%Le;>$>6;U.e Ԏ_Tu\r ~"opjU]k%vRye<0 ˌWr[*~%&pa[?߅aZW镟YT2ψm݁<=ϲ_p*:j*򍹆|YDEQ\v~C&JuMFƥl<|q5Pmg6(e ,0X[1 pτ#}0v?n2UJre7ɺP!4uvWgs /JJ:CF}:JTP2-]j |~ohO}5)S(Aƃk`d=NS^4L/Kw4ytoMY0]e#Wl(e;(\Ѥ$|шD2P88IR}dqNHCpf\%8.ajږ$k#ɢ<BwLc$s%uF΁l_R- >x<6r0j? t0@)TEd T2uRFBthءe*܋ ޵ 3@`I ƆǸYjGb/æEIpݛ~oiD2 ,7@}i9$nrHҴvgÕVc:pp_Y/ˑF?*a(RPlyi_{mST^OJRd0uMִ5ypTt9MT} u*W]ߚg!X M2 MDGe;_lHS)2O5㴢 ::3Ω5/r˘[,儹 ɵm"zfAõ59`0pV68e(Y<ɤ $BU9T*fU~o<@o!ϟ7I(ؑjbsݟ'x\Ɲ\TJRunYG\||M__E;.7Kz+3HJ+ M+AAΓ}v,qB.(,N"MCe1 p!t:HPf0 7^ yn7y~z s@js,//z߳gόjS4+G؈bٍ'OwtH:džyqMRTd2oVL !;`vt*>\.gF][3ƛͦt]t:2N֭[2 XU6DM=yz=i6c޳x1A 7n0 "(Hzm_iqJKە\UO:u:H~Y. ^ M69::=d2f/jkcݖ~/Dܹ#""d 1ph eR~/fS i6'IX4+{`` n׬md`80 "a%v^E `g#b3 ̣S&-a[Vd"iq0I<=}M '͓?~DD8z 'HXf3\::/~p/JYqDzk vډLt}ّhdPJ\VeaUx{{{g)➁~֨Wc1(i(1;V%V+pBX}|s vf_EJ18o u3NgYI?g\6DG H)Dd/àhCxYKu+o} _/Q';lqYEXu.`WnKU?~oL > Nm9, "F^{uHgb.Jh4}ϋ-=Mj1+t;:9&1Y XjVcR%c;,Ã1҂5H?RBj<7 "eF@IqhuQCG 8s8L?EIKut  q6ھƨqoUEZ.hqedc.'g :\kUgnMGk.=l 7|Ed x|~"X8b(@:cn:nȗlA>J?`0.~IR1.M?4u9L&yi]rEί.4 IDAT?/g& }}q jΎ֟fG{9t:g MpɈZ"b_޽+TJ._,[[[F1#t6r&9LV͛7l=[SfdGGAJr܀ RTxAN٬? +rxMS9,//Kەc3=3ƮHȰڅYYY1z.vۉsELI}=tZ֌Pp8z|'g8z&vmM׵) ~~=;ȗ_~KM*JUƆ,,,o~IÇM9U^IR9*\p/^~[t:fGښ<~Xy|#ʣY,Cq[,,,;KR1z ٦O8n+ZnɟJw4upeߥi277)kBpFl'ɤD\AU6ϻ aAFFSUDb=y0,f)BA,lr9!W#X,H:NcR\ȜOj5؈㜞NuY6פMӲ"=:=N 2@i6/ t9A)-%IXbc-0l%'d2RץZFʂ0&= O/..JP TJ7keO:jjwg,aė''')h w&ch<] 'pꑶ L,,drEھ,N#a 'Mlg9mNďaz܌16G'l׾zoU $8II45Dgl[ƨA <بh\U{^բ)6l6˲ryau>ttlLgp,4! \*cvV6^(;m/b֭}u5(v:ۈ>?|UAWT;39T|9DPQmÕr?e,ٌvFģ^/>qlF0 ux8gyQ m{|OEu`tϯH6 +SH9ndDV o\TQ%T\ JX ;ؤ|[. %'$w!1RhV",[NΊ{mpy*iFg#Pg3Ժe3 䦮k0Pܸ)˘,@C`Eȍq~^ uFF>*רC,. fV0 "ce V4?|ŊTW($d AUgŀ H_SgM} F54#OW:9toʕe0[ AQ[ ҙ h402҃5bB4UBb.H6FY5Vpm&C\S[\8+ Eй(b }^>2I8\i!5ϙE8I,T-[NtGLH]GZk.!0~lז%fMC{)M] u9۞%{A6K$2“'Ofߴb;Rj\.'jx)7xј\(\3NMXe͢ϕ蟧ׂp<ԾsttH:A<>o҃W 6K|Y+=:6928R}2m :Mټ҂MߧLUƐjҹۈ.C5)0-eM4O5뭳}Yɵ:3R)Y>Ș+&בXlԝkXL'҇M"d dtu/oR\-ENpɓ3Ljoi9ɅT|DkVVqQ`D}Aطby2ݐ֛5LP=jtz?9Wdf(1 F X'3tTv#l_ou.xHw :et6ݎ5Q>` 9آT\g&ݜ3l (2Hl:g6`ͩ 3lU`ҝ P'-Ri(S36WI`mpo~'G[Ig'LgjrE&3l+f*P]p最IݾsWMLϒ 3c:Ӏ:Hw8d[ZVfm l[CП[=ѧqF,Sޯ4M)'S((tX+Y_6 =IJL=XW sVn|4.ǩ+s >n$*-s[r\ynq%ؠzT;+9¿ |zCsU"M "uʬ#G߫T8;;F^>lAQ7Q>5БЄET;M'ם)T L.x:1yzzNshQmʘ(J)<~GGG%1׍&9`KmLj5\^^079FrX+:k7 HQLw D˙ 枇KlM4E:%8YD_^+sda: zn `0)J'z \X96yACc2[7]Ժ*)4Ӟj:vg>{{{ֻb `i4t[:]bT)U}|݅LuȸRE,NBwvU,//cii vV֩iuc23cnLH}Zxnwy| NOOl632}Ϙ^}!1qvv۷oÇ8>>ΘSzc$[Tgj2'v;VQHd;IeF#?>߿~_Eܸqufןɟ8::HtW(:7͙U.//p -IoܸѮVx1Lp+3O>R LEL (3{1]nKsѐq8BPF *\ n%ē`HNdžv t,&i WLP%9LpA4$YW!XM%ȹSzd)Zv҄`7ױɩ3wA]65ֆR*Y^^(?{=p<{ߺºRFZ M, P&AF` t-Lhd*hsq1}=qO6l]b.Фg%?CҸН z1:JEN߱c"+bOU0jgՎL>sCe>ણ񥤑z6SگR3K2L[[ͩ.%LbvbBڦ Ya:V [[[LCZamT.*u8$X'd3 )Hs(!cg!cL64c"yNÖd2M\Ɯae6Y1>!4iz\,<gf,Lzo3AV4m8ء5#&` /92ަp+{0 AeFQ|qEDEP?)^G$`x,t>!:.Ϩ"z}Fi Hsc(hn;G.AUU} `kq i6R1 XtY|nQi}^F>.\$޹9s ̓5ҜHkx9ɡZ%qvg.n8NRu$̂8|ĕ}]w&<6?=~JcfSgzM >jhh4Қ<|J)g9[V7pnH7\O\`j膘5w^(eL4JD\g3ܢ7g ]t]304ɓpy`,b p '=p>+++Dp8D֩Jx'fGJNBGý{seKKKZm Z~$_SK dLLv t7I:~B@+t9Y+[WdiVsT})yy۷ocaa+++x~?#0َU6rI'N?_W0 {.}Y'Y@963 WdLA S L <EH6\>]Xzq{9]Zτf\8JCꉮe˧җw}>h\VJgіRfi9+l{l햜+Jᘘ^&32&Zc;^b&IƩI5Tu}?4ҋ tp#)Ud"ҵ[,;6c C#dVFNtW)50)ˊN&qqq޽{xE΀<|.Ȉ[d.#N7QsJ:uiK-$tzU(rбckj@9#MSmL&<|8??h4լPJ5kL)iZ$IFqNO~1Cܾ};3<Ee{1sԽlM-R&o44M3:h_Z+{ā-C;ǭm?ZγJux饗fi7S{h5Rj]类{saL|4B ҧ/ze%unỈيK1öiRsNMT슀 |}~8vw...beeūqcQ&NPKxȉH_%]Iq)i!1J$ :Kmb-n΁lD43'Ѕ& ױ|G63Mq3[suA/6l9www/ﺖn ܻw]pPF,r!@N#rus:Blb^u+{O(i7TN@KH}w[3~$Bk3q:{BJn7omJp:d`əs1x77}m9|eh.N1zH}{x~֚MZdp8d+IPzv?C^tzܵm:[}:$S6P}ٜN)w9H:pTWa27ڥ]Ve` 08A@AEO+9Q'Is`yyY!U7:C+O z?韢eB#֛)qtttEg pO&NVkFBDRo~/~Y!t],,, Iܽ{7opLt NJ!醊38|+E $;,PUJ4S(̈똌,X2G s91#n<فdsx]X(φ&oH dD0 PT2yL@)u: Smx nܸfi\ j5۸uV&P?I:|\5|t IDAT}^H:WCd>:$bS>#ױT5DeISpayh.9~S8: $tחqY70EPecw,6''k^Z4lBi8ܡJ_g\_Gt]HӴ `8/(QJmN}/w )tqǕf=1PRB- :HhW?@LFx<:gI ʑDE#f3I  s"x<`0 £XtIhRVcssW#BȍF;;;t:裏prrVeh6.YG1eCĸ {q<їᇠ0B[)o$(hup搤C{<4]@l''c !s3ǡԖFC`vpa0s= 9;%=z;7٩bE[&/,,da<IIl6ϣjx:O`SF6P Nw^-Z RZvZ"5{A:ĵ1uPo!SLoԘdn X[%X4Wg}ji/!xغAp'z*" +}n0Ç363<9Fw UJh^"# A7nK/7offBmkk+s 4D;|S!,ޓSC>NOOYϚVDʾ\gx!q\>5 "!u{i*؛SXWJU衛!"j8|I=~iFÍyI>PST>vww3p׵mG] @$D^ [Ϊ9?)6GQ =_s6?mB8i_]r}ҝ$)3 ǕHn ebܥ-{(Kჱ&FG4eh40LpvvrE)JZvu.Li$AZͺ=E6x;@l1+tlm [Pjp"Pn\XII1#BvԄH;lBEu/qEC)AmRZ:,t c$ARɎCh9jZFN\L+eۿ߿u.|MѣG[+C_p8DT?~9r,zFKBhN2q dBR.%nؓt]r!Ę}r}W;)нV Yۮ3_:?ԕBr\59I-mϣPItG1m)LsV9-z1 y ުG& Dg 'IFlG/r !>K7n ߖc4͙Ib:^z n`02MV}k888x<ΎGV3m<Ֆ_{A-z\XL>qg8Z&UJ>.s@g'cP2-[54MkQ%J $v;TqI%&\-3h|9= _///G -M&z=k899}Ʃ ])^z zV їf59PPKkR(3r!W`S\7g`%N|{";=SKtO)RK5ѐR\CQDA8|$u&y z2[PXRo: Q$IL xW´N+ '''~rh`0X*N#:MTU1^}:(#ܶퟘ:Wqfuaޡ&gmIfUTCo Q| +dTdy>'4)ņ->I U1ˌ|S Hʁ~˨jsS4O5YzYe:۫^g%Wׯۻ]Q78%P'sC$: C lY>$Iryy vE:m\g\elcKN{KE9$ОBm|iMT*aqq1?1bz-|0 u.&)p ϑ;irYS}Bl!!iǒOЌ-JF *Mӽd-iIS1š<ǓBN1[2/x󈙄V;0aiT)tJnZX]]NNb;BϓDs \,Tqs}Bj p]N6f IOU87Sup7%/$#5auka16V9u:{pvvv #AO=۠#*rWtl66!h!p[@}:5qD9&6e.-Ė+`v q SQ@E܇sD6"-P4= %7qm6=ҵ?s899~5,,,X=sp p7k5U7 `0oySl=2N$4X$ ^K8J> u\GlSeo O2\/ՔRԆ+I"k_GRLQLm:58B$\h~yI޶lEU[ 믿&2'P*f\e1}+6}](?яP.nQTfʥR))܋u}^P=z;wݻymtV7 f\ I)m0( jJ 9tK-a^܆Rjf n#߅Z#,DSI.X",jH$rSdL@: VWW?{y5 zb]˩YH3%yE^v Rnjn+6O q.M3+k|+?WSHFP(Dsux}N-z=z>6 b%}Y|_޽{hS!1]*ʌ>DZůگa<Ν;+󢈏E9πJ"E\H?7RM[R4=/֖lԎ12rOqc(!xu ilKsH d/ﹸiօST^ӟ˿??7Mܾ}{55IF.no, %4Mto|ַc o˨$jDf[g\SP;pfb|{8E(C=,aషa,84`J!h%<.Y yh9X4sඔZ89YGЌ)PTPgK#>󻸸/ )*9kZ&g!3È{tArV *n߾^AGEgTlP~fa87( XZ.%]{D•q5Rj9My3Rj<&kE& 'd}C'2u1\uFVd2Rx2 sD{M!_{T*FAs8==~|IhYAy<^'uވ_rn\Y 'I>լN&-),X49d8dPe`B\;nT98ENɅ!;}v@Z1$CQTBV:hv3$IP.3vyy%IJJ Tu/9]}(N¿%16# áw-kއ˹Fd/,}ldR%;d 6nz) (,eL E(qຼs,r 8;;VPI$읜EwRɪF_\p\.0J .1u\\\s;lւ-F "dR;fC$8}4xUvJRαm6, l`h4\4J)TUG?Q&$ n޼/~x Նm]5/|~򓟠z>f1vӻ9朷 r>9S|NZOӴ `J]J47`fdngR13("*A+!RW^&yRd=R)k,J=Zj&~~W{Rdzss_?3t:+L:e&3mbaaoF֍DPoo/nAN􇾛`/ܹ__#Ie>.i\] R څ=r8!M$ҟlzPTpLG I ;Nα%NM2 !)s>{O|.4p||K\j?JU}J0wQ"O]BR'!tMJUh3s'͉R qn&*CCHu8e<[q}w,osCL"! O +" U\R4M7+r J%)g[E`pRאD`4+m<)(:BΦAvPrcT9c!g軗*lKB{)XL !6N}diIWTVJm(6ŵzQBڴ!+& d2%dVW}H'r|kgqhSb:A.9FPbtpd"6f>-$9R:YļICR>"2 .6*: XIDATǭDžjIyBY@̱C{{H&b2@IX|\{kk@Y4M eǃSi>ؘm(yp qӼ;/jX}/:;s8$>t]f m>^,~R<4ȥF;T_ A1CW$oT/;yk|BW+} SHT)uqPetl$ŝ:/7Jl>CD]TBۺ6x֖uem|G3ѳ%\@>OOOժ eX3\ .//t ϡT*"Uyڼ)q֜tйs8Tz x*۰ 6 jn$)SH&/&>Tt^3.dbv{{{^LrC^IF()RJ^v:qE .tMr`E $! *LNaAftB;W`^BXf̄w(*Rf?;;C$/Bm(`^` f`0k5LD% qLuHؤm!21hf52bmB q 71 ,4WMQ%)5,>"T/I.;kcxKF"*|1m1%D  1w~cV`4MkAP+M\F-np +.|!ygm0Β!";*b3E_74 e\D _Jb3lD(ivg&J%D-/qΉf=1A!qUlG.vV"cʐ{R(EwEiisxND74q%+<[ Fi6ce\ eBgE2 Z.Аfַ}ft\YBH5dE1Ƶ-yq+*Vy2HC9z Meˇ3q_;$F!$Oatϊ)sRy#z\K<7BS\:)-1'#q -\L"y饓>蚻>86QV A`=I)J$4bm!}-w,p<\uhҕpdBWh @2)"9/^qC[J)6I5؅1`5Pt)ktM儈դCڭ᜚Ym A"~H^*"F"njSV—{hg p"{7uik3SPwlG͋I80/\`d3r͉CEb ~ːHxäT56psо20K{bw4۱9- [ 9HyX$Å8?/6.n6oyEZ }%]uY-Ԙϥ{0ZkmjʔZ&cG4SP>E_'$5͋]ƴ^Wm}n㚗:=4+u:|]Z g.f9nǠmsN=PJL)1EpuϫmHi%B fuHU mX*m e|"Y j87.ZN 9:W"+jr]zN`kXoRu4gg ,@k癪t-PO4cG*.Tێ2eH'HH;^*9R]|~L.H3(f%r͓pg \ 3SHӴZ2QC|-me$RJl<(( \YJ(u9I.L*%?Ht9"f]J;:xB R4MNa/55 REXQ3p::QXwQ4[Zw2}If |ZȻ.4\[|Q™䪭Nrvqϸ UĹZy91 @R i^Gq^_E>MLL e! [𵵺f !"EWW(qwm܌!tXfC\^^ P*iz)XSJ`4a<nFgEqDRg*Ѕje^/)@Ƽ7c]䱊ǟ}y;t zu!¬SU1qvS1+jKrn78HYz^+j9Pq @v2`4] +yXC.}y ,H,/sWSh}O}P})+*qL3,4i @q?kFo^W*Ly[lb$e!B gEP0+9}Ҋ+La%u"-RPzM\?NcH%WW"Is3/ w6!Y!8dnxϾD)4Mr\81W[SFRY2)B vW_[(8~\ǽ47unK)5NxW4N$Mǟw^+k޼ۏ<댲>+^6g}kkǵn2 Lt׋l>N/6xҢo{,N?}?4mOμ$Ӛ0pߗZ(9EEg(:iEq۞]{җΫHNhkW9c4}])=rvzѠIENDB`mnt-reform-setup-wizard-1.0/gfx/pocket-reform-magic.png000066400000000000000000004452101461620463100232320ustar00rootroot00000000000000PNG  IHDR<}=zTXtRaw profile type exifxڥY帱e9 תkozDTJzVedtٱsA\v+J/S?Ƿ⯯ׯP~}#ߟo{_o{)B?<̿Fr_xGu!z3~_HUڙ=1?_Ó~>gzS]zK׻H]?h_˂ _֩_~;ן|Oߟ}w{g)F*bP ' |o+~?:?{}{c"v '?Oz~ፕOc;s+Wr!c}xi \,x[,+j܆;篼-E¥[{\b?|?{ ÍJw O%5 ؠq!縹ɘ7-Ѽ^{m;T?J)c?55lh's5(OI%rZQjj=-JFp깗^{뽏gG_cJKu~;^5󺓢^sq̧mOXӳ~w ?;C9sqr+>q)q1o8Y{NPǖ}oyN~\w!ϕf))FVhםl` Ii>S\ U6?\FI wz0Os!cA[:zoObViǟ- <hD bj3=^5Op0'^9ń!bb4l?)$1f},y<XsQK"yskbYgFi"h{{5ԟa2p{]_L*}jZ 1p R+.N@O`9>v546=16T Nұ݂w~wQ<ux-\k`H.YS"FNS$!J!0ug,]}#Σ  c}0~JTłԷW{6{ҁiWPjy&!L.?4>)BBNebX|@Who F/ |rBh\ zD[BH h L&#v 3BJ ,)|/4'qFձ `;g<0!Rqp_O/\fGH+$VL !>h"C]Yr #ZF+E/O@~߉؟!o ss{]\ xP &DXZ*Qt1*1%w`t\ Y@LPa[7cc! #ځY(ہ'v]7[0ǫhNQ }l" lK6$Z _9 KAOx#Ac/{MpI9C2C*MSz@ .7䑈eOjN `yϦb0%XDQ͘ب]k͌p_ÝM1vt9CHXGeUzDnZƓ &D!v@&B6o_k >Z y$6_Y٠rwcpe _qVn̠5L~>k$VsRyk7.z[r0A,vɏm-("Q4G,/CT6 {,ĥPS)Ġ0Qt@/7XÈ;bA(vSAY=wc *0?^ _66D aC.ϗJ> ;"ZAx&dZ }VGEFI=9u=D"a//0ScYu?C(C`]U$5ҭp.{A\xs蝫FRI`3p?d@ŕ[e@K^<8 2x/ MxˁuIBNFZ*8!j,  /%z^ iT$-\pUMX#24 )&w09hf3sucQ"RL0\^ |UqnI&M] i"!hm M5sP ljY-#Ub| K=0 ] @ᑞLJɵ-"<0B7MfF\1SVVu .sF`נ%ỿf\jR"BXMy.G 5žL@[@*l,aO@! Z{{}$a@]َQ޶%YoHr_KDE=/FD|E{Z.7HilDrwn4uBf[mo=')f  @ Cez ֏iYNk<ؙhh1T@+w< n2 ~c@HTu!4s,H\ WV\m֖H -zo2DLJfms|z4LMkZ3&K#'XH:Pٰ[x@HXQ5Ha,7lѯLu% >wܐ`n^RaXxzCy~?}iH̓L|ue`P:BWě=; f0:9D(l[b,q׽2Qӻ?x&|up\tG9ۛ_n(iw̲{q Π3c&%w<)˄y Py,& |&UD@5xhw\ JQf~\#5@@cii$#7y˵i&Ҫ T y[-#Ջ^1(v^+82L>r͗{hޖۉ9Jg@h>79O>sy-%8XkE麷mM}, &!\}_^@a/_<VKó7vY,S%p4C: ~ޔk ERCg@"{g2l݆t$ E!=LiIlJa.^FQTf agId8"V!:؅Λ_ò;V#.h甬EYi i򪢖 N& qH)\rL萷ߠ4 s|.Hόvi=r.̖"*ӗB0VKmFMD@0#\pJ3o`AaJ޴A,\*Vd,!1qpA3#/83 :7\I[Dž#sC f-Dt j00MrXL,sb+Nm(c[>A0U6} -"<ۥ ߗűܷ5fc8V-5̈=s=qy 6UWbs4+CcDLf6< -Lz} O6ɖ6i0) HtkatLnsy yn%Sl:&1 Ѭ(]ΰ VN|er5W, k#C{UfT ĝ'iҶ\gE !hBY`\,~gMZJ+:C m#a(ц#"a5١?% `mOs JًS-Utt;_G``ikT4 }aokXRksjcNK)PKrP`-*v?~9p34N6 k`{`uzd"~_/"%&Pu;' 'j5LMA9Q&KvIBؒUJ0&i668^&O0y,P0qҮ|ElZ0>CׯYCh2@x|uG_Ձ#E;]De$u'iل@:mxÔM~Lv{Y1/@4eڲoN#TH0Gno7}J:ka íD[L3Ujx nۿ1m9=XKp|~UKlfj\òʹ  ѠEL lͼvkP3+'V`Yl%` iV ,~4-h{BO.M2!ƞ8`o)`͗({^j)(O|毋Ϩv6#$A!g!"~6^8uAh `,6M=9aVT:mHDZwu\;p6ݟB @z !4YO: {q wƞӾT)1+ '1(a.5|LT>>+*& %Z'9%A ܱ8i7r;ЌQVmZcjm*"d?1fU"q^̡-b 2ǷZ%Y-/Vgc4A4I\|Ђt`s EF_E p|aMUIC%&CyO`֟6H-6ۗ(#u;ͬV%C;Ȝd0#>=k 0CP?<'|)%k)g,-›̂-]ՙ#<.$/!8yfI)-># 0w|[\ k> [gSHf$RM;92Ci[AmSٙӛ  (mz}NĐ4Fwv!b52!hnQkiWM #ePX g!8r!{YTG ylT\{xw F1ccs!NA[u]i5fo~PY31 Zh..ȕAV, k(N[\fRNB4zm89aڛ̾(ҶVq|. Dɉ쬙 LiřrΘL'Nl&"abNJ}^O($4RԐgH' )"ou~jy,I==dYvalο`_T.? ri8K˚VDk+fg!NK;UKa>n?7~M̘-B>0HQT}#_In+FeF' vp$EXYqN X@f' "- %u+1!fU~v0b >}0@,`l΁6(κ8 VsSc8̏h7[.M`NJ@X5Q/]&4N6w6meBP evB$Eq8!zmu\~O1b _<`@7MIXU{:Qv_FĖ^_RpН#ЗD*iĥoI%.cb!OZrlni[yPȰݦ DXR!jF[ms|ľV,T>a / S1kllfgV׾X:EeV)wVF:.$09MWGn4j4# 'Y>8(ࢇgɎWx @USr#[_<#hx䅴&\M { kf'Bp8w#wV1H$jņ) %L+f4WV\/Y<25*J+Nڍ |)-uLW❓ˠ3dpꮓq=#>@v)Ocꈀk%^ <:m |Z}dJ𴯗^e#`G d#RYmwꌲ_mHdDmTH<0m l.ž-31`H 5Hv-{ĐѺTzm=eD -u%dn>j0 җWa |Xr˶nz9-׋:~$r( r:WOM1[~$ܸHcvxv?Īc(1zt[!0=cw @.Pu7"YqQ&-׺HbVc<$}< osiu=&s tv7ƒ/T8c:vub:6[\{rqt&l%(lXv')![+ 'aJfomtA ;a.b(p`++;3JM-ёpͫeo > }D#gShc oD}d.|`$ˏV:hC4) f1nycvE ØhcXzV6#=M]A=AC#t { @3'mo#–I4IaO@ (֫QF~]]iVrW' }ApC~+X o[o@QuxYMLΰ܍YTdWM-9|i,YSZZ* &w[H:N|e5He/mlAD#@ `mX[MȚowXp͋݀D}sgj;M;y7:r.W=%Bm*4γh9ͬ9rك0^sy]Qa[|Ir,B{l)ɳ^ɦ`s#*zۣ5XԜ7`rCR!te6ʷ9p"r,Ar©Gĭ'Pَ``/q,f:2N;߸1{U=FVZnFspȸul A$a!Lrb[jk fW̽!|4#wr@”hm^U?8p[FGVÝ&8P(0&[` `A&q`$6q BZyՈr}ZkFd"(nmK8ݿrdTȱ=`C[LvjI!]lȗj*<> aTC $Yש i#7f P3-DE`cX+#GO0kPB)5љ5P`4+eW_v#!JӬH\ .-|f $`(t?GlxV]7Ot "t,,Ǩk PIw .r73o/ia;79Ok]3'}_]̙Q jyZ6IYbc1{vpnIL]ن6 ۑ<,z<!A"V>e"Evˆ %6W^r{T.(H!j -G2>_"Q_َb5nrvs ֆsz*dy؛^ǣʃ}$hN~ u}M_Uht{0it15 Ţy'2߲sUDdðs_"ti.|Fߥl>V9aYkSi~$n3mޞ^M)tW0 ;I^VS9z}7rݮl<Y#y ~8` ^섬/Mas~Dr( & :2@!s,X?=!1YDLl :Nmaœ2F;ԘYAc,-/w ʆ"2;xn>O zLhu9/;LjmhNJ EqΐpjtĦtֱ>=5.2e#q߯n.l9Q6[NS$/|M8NXl}T,/ђ7{Q7 &(B.Ĵ;=m:4Gl%A.[\ymG`6؆`fM9~gcWrX\\p3?:y9G܈K7^;Η˚OarU_aO>]>lVHz-\h2P,]OcΗmMKIF0Χneoc0   4=Y?$ !rtXqHK XpߓcSZ.j&s? zds[Bݮ9!b`8']m61H|p o6}}GcsGr~mıN|Twy?K?<1ٓi C;c'w=lv9J:wDWXj [%,vΕxKۆX|!͖=Vh9yd'\ vZH5fmV?Ŀ $3673-{4doi\H~$k?6׮w0Ak۵:߳/=ǐ'$4BICuG`k\C!WVA[O]wG)Q9r?[aMaON=cc 4׃+i  ='z }z"xǛ|%l4FYfaė4bM6WVU(j MFkt,:.FW8c1L&ӎ9ƌaX: rbl1 {{{;}#tp8_\8"Ey.,X%%Gщ1-9ҀKl.oo/O$&'=JvMޞxǥ{=Vs\x ‰N柜>ucKz=s/ol|ϝ?y ^d]ps~:;/;]7|WpQoH!ɻVsnYs}ҽ~4] =>=:`;cܱ'?e~!ańD#G&}'/?^xI֓?+\wx20;5\ӯ_etWf^Qs-mw3+?~O~pf* viTXtXML:com.adobe.xmp " pHYs55 !CwtIME /}N#tEXtCommentCreated with GIMPW IDATxw|TU;%BB]@P", ADTU] .m  " tXJ@$L} $3I2LyO[={ BKvuNV E$EہVuG>>{U)) rRPSΜ9pqqɑb9!"DdD^^'NmI BP(iii̷lE&I֯_/O<ȢED@D"("DӳD,KdCG*QBP(0ɓטLCf'v;WΓ|YrV_"r@Db6dgg?qf 74Upf J8shӦ CfffѣG[8(^Gחt:l8G֭OhѢIOO9roڴ)["u]g}vDf6 ~,⟯ŋ\ vo?3-5L3Zj#RY贺 B @Es΍;sGֳgOMӴԈ FfEaaagNhDDD$Bshi- iZ=wP^7;Nq:8NvNdddFTTiݎfjbٜjRRRbAכRRR9qnp8p:w8Umq8lŝ~II c6)**pXw~]vr6l6N~`4"668֯_&666m۶4i6::}p}MgEYfcbb-Ki #//aӟtj:"<33SNqI9ˋkC}VZuF=22֭[yw*=O>ǯFpdDZ9 eeek׮IP(1ӧO۷C.].!22f;'***H2 TGnn.ٌlDQQQr Պj BOa0 ""GDDITTQQQDFFY*xKo\g0,:^_Ͽ[^̖'a- O{V{se~ϳgbt6 سSx!@w8zS||1:O X6`0RSS;N?[zr?C"9&&x怮QFM#""zo޼7|O>JҥKơ `Ot-zb޽瓗GNNO&33ӹj*;gBBQEϞ=d2qiΜ9CVVYYYdffᅮAZZl6׋ӟ޽{iӦL6-VTz}`&&&Tx[z P≧ubPPP@ff&'O hy$!!$㉋#664ϞŤ;=OY^l{.ya{"ugFnG4zMdd$w^ ~50s=8MZN3dv^oKdddNlll: >嶼{@풒r<&&䶎qXRRnuhttmv7$ l x-[jiNKKcܹJ +T(nk޼YYYIk֬aٲe^`spW‚ ~ƍӡC~ZKt?v IZZZ`q9p {/߉gܹ "ڽx6&<ry]~]y밷|Yϛܛ5S4gyH\\aNW)LE0!!jl6SRRhܸ-s&M䐞d5k,s/̘1#B @E`ڵZ^^hѢE~3gΨ'\t3'x+mڴ_׿ظqcqq1&?6+G_r | 11K;j=T,,Y<&HKq1gO˳!ެsy/۽nt:4?,"G^zܮj-:/І Z||aÆMj#Fzj;|ʕ\uU_7p)5cϞ|l(gG:J 1b7ި<]VDE$%H"l& .Tys8G>GuÇ#zt:(ӧOJǺ6Cfb̘1̝31 `06!U0~-©S¶SSS馛Xh999?t=úu8|pDs;YL@çxW[X,_O\wu _B @El6kٲebK.ٓf͚ HJJ e]{s9twu uy ^/~Otn߂nGn9ݝWoΫ=݊3˸<ƛ[OZE2(_.-$),,n,W*A` 55$N:UZ|,'wy>#nsY˽|g+/7G~=z4M4l x@p Jpgٽ0v+'Nb`+ :tkaɒ%eٶlKqqqPbL8W^y]MxYb۶>NsyuVڷoϨQxyW),,|ucԗIV7n~̙״o߾~mҤ /CyDDD~ N'%%% +e://4DNNNiTӧOAFFoXE۶miڴ)IIIĔ:(ŕbl6[[xS*B-B݂:11vqԩ έݿ33,=}ypO1MeJw9O_r<`.of'}|q Ǹ8z͖_\Tg&66xzכ;LILL$55d7nLƍILLt;]ѥ (>+M<$pW FsT-,ߨ(v{1~7.݂mP֗9,Sz~&#F\l7t z-6mڵkYnd?~;vpAL&ۏ*rtwFFFҼys=Z|[cDl6zۯҾ}{V^MdD$^{-vnAѱcG4iBFHJJ*;`H;^W1hXf,W;u /`tp "z"""#11jnXiz[t7 |oVqNGfU-X>z""tO+kNb!77Oѣlܸsrt塚ׯ_O޽Ξ=)SBQ;ܹs/sr=ȑ#r!+j.=t9i0d&x].&[NL&[Ӷm[4i,\Pv!999p8N"9"WDE$MdhLTi%"-Ed<%"Ddd#OCƍ/=^/Z?_F!SN,*9s|W2l0i]uURTT$ǎP HOOtʝwB$##C Tf}˖-eJ:[XE>yyg0E^m9J͝;Wl6L6t]e҄I/d޽RTT$SD^Pu8"/i>0"FDE䌈,_\}/7o2d̞=[l"~֋dH @BDN8Q5׈`矏<@?g /ˉ'$77Wz)M8QVcɒ%WJP KN>/2*+W7xCDZңGȐBSJ&!DDn҆IdI-gDfɅ^Xg>r ;9mst.[RRRPl6:v;vs/mnEEEШQ#aJjZ\r`uMp;6% <@w or ZѣGyǙ={6UH< fϞ͏?o9CVV֭cر >e˖lvKPPt `5>>$dܹtҥ4ԗ yB6czv/~pbK&M&==6%22ԑPu?**2=CyW_"| шl*riyE^(Uw:ȨQ>jE*jf@# !hڴ)#G, _h1ڵ+23_]l2}]V+bVXرciݺucN>hT*uڵBOHHfq&ШA^ ::1cưm6233,6(>̛E-0-˷z|_ʧ-Ce|+u!Y ? d pQn|G^i,ylٮt7<c2&++cǎCqq1{ g_]}o),,yeC׫B @EIMM4 u{LL VN֤IìY3gN{gXr%6m|W̟?(((rVɓD' olذ/8ts x?R`H`AAÆ CD*1|ӊ[_out2 DGGdsǷ&::4MÇXBu뼮lТE2 l7x?P(-[+CRvse]fLLMعs''N2?y$?|Oo2/ 3f%+q8?؄Ժ̃A ެaVNqqq:uSN01lb<.iDEEH׮]ѣ[n_fA]] iԨQug3$:TB*O,"2uT32.yG*=z+f̘!999`9Rbbb1Y d䮻z] j8uWqq!aRk*QtM?j[n%l͛7w}Wf񣥤D~(RTPQ#2MҺu cV^ߠm۶kr}#""^zUh5G}X+/6fn&66nUf[]3CB1! 36'0ShӦM݃ '5=~| Ti>vLLLLuG1lٲ%U} EPٶmۃ""{{ر8 Y]8eѣKoݺ~֯$'ρڛjʿ IDAT\A:V8\սE 4 ! sy!vYJ %%DD縞Pvo:I*Unqs(WfoijeғY$>EB DCxu]0qbՎvw^wdUʰZDE@ %A`0t:}vו4L8j @3} C*\7?s=6)H ֯_VeR+VfAu>  ]ǺwpW] ʕ+ IB^^^R(fH*c߾}:t붱c!-M;4y/c~ aj5,[o 69~vpD߻wo@j[{*Ǝ~۶mURRh@PPQSnݺp`ҢL⊯ ,`9AcӦMKp3Q`) n`ѣG+4>:c{7쁳| ,T(X,?ฮ|e9JP߉v'Tt҅;}~5`ٸ Z <UobZٵT9B,@Pjݮ*`rεzn6y`#==k 6(F,>إ90mn$L4#F/ ld2uVPPQ0\p8 J ]6nܘWwy{ΫyF<9saÆau|5 iO; a6n/0vXlY0M6!N'Op=_"KV!^'xccc6 N'<ٷѯ_әN_ӣh`,I@ZDĞDD h_ ]sň-KbHLL_T/Y5^ )Si&MrYWhC.k>'OrN:e˖jͭ*6-$NdjN%ݽ ۷oZ! h-@nDEEj,] w߾}as#4MÐew|l?Fi#&uN}aƌu~;vjrĉ:Nvb[x t:=F{wpMx_z >_ #FPTTĊ+ӧOյ.]\4dxK( 11NVZPIDD.`R'xcbb4 T4ZM+druƞD^%:L?p?!=ܑȍe/g}қK#5ͯ_/G ]wEtga *.( <Yĉ@ޫwu_}q4>X*, +NӴd]999U:nذa˜ݿunC(N? !+f' <ʺ@֭͛7ٽus׮]w9èQX{5&X ҅h+.fᛍp3nܸtXXX$..N}J*5\HD"Yu:]D㈋tr̙*7wz$??bk<_@0д{i7~m?0L~݆TE1l0.b/OztXlV OnjnZo#зo p 糽tt:Q-лwot:_K^*hLL N3(@ EEE!j@0ewҽ?nݺq7Tm‰Cjw41N xAllՕݻ뮻ڵ+3^}8#'P l7~\r _əݹ˫Jyg֭[poʪUv-TqbΝ+s h4]<ӉhTsо}{t:_`-mZ͛;D]ƪv=$cqxhD/wu_eiwf_ScI{ z?ϯZѵk*d'{?~~8WR xFG._}ݻLJJJ0LZҝN'q WV%֭[ӢEppĉꫥP(8 ˪Ud֭kh> 2}t1LY ]dW^yEd_-.Nuȸqvp<ʣFbc=+ݧQF2eYr?~\vH&"[EYNq:ray%)))l`0eYfMgɒ%w^Μ9#۶mZ eTX4MWX2jYba(븓;1bl6c erig}&h.m 7@>GSҟur{Mdd/4^z%jڴiyw\1Yn {;v&///la{8N0q8ر(|?g<;* pc^c"""p8h %%%q>۷vpFb:0 \J*T $"`0xV|Wo!11vڱsΰg.I{g/~vvis/Нy~J =_$4Mh޼0""~aÆE%&ԩ'fZ᫯/jƩSjj ?7+!4OEQ="R'J*(nql4C5VkW0aϞVbĈt݅i\.zmx(:Cӹq-ZЈ>I ?"wlI0r1oqw3;g?01'8L-+ӡ\>k>|x}wD[1_~17tר{§Vc%J*BBzzz0@^o@d=\~mLg z瀱[\j٭_)͓$k&;wsĝ&|TKgך4Pldc}>Weƍk~G=/t=Xzӻ>3gWO֠P(7o,:N*NWc N+pE3:+_Nux0 K"dgn5ng;kY[~~fW맯gH4ݐߓ~ .,b.^UX,T(TTytp5tمuik׮Fiϔ0m4Bʕ|dh|'"~`CO}>[/o)LQX*1;B-LXl]DR6{3c# .wql ].Ig=F8x0f^zZIۈ!`lnh֬YQB :IA"R!n^jUJ*Gec5M+-߽{ͣW^z&CtҿNYX8lfrf1v;9j1jZG9sL@y0˞={l Cۂ2y.];rHn[U)h>X~ D^TeT?*LQ ͛7OS7@Q@_߉u%h4mG 1|a 6vxgyvڕON͆fpiJuw#l6<PuK/w߭u)7yhsLw9֭[3f׿x/]4.CAX)_v~7k}²eAF9t٪(%z=JI"WC]b20a \L1Yvi>222ȨsZ)@šy+܁t/YN]C_~@\/P}Xppû^{-={dȑffv.ߖii055N B @EПȪ9ima0J%ay~] 1aĈ)p%ݻ7ЪXr%O<|MGw, `0mN>7nB @EZe[6vΊ>_^ W#?Mt499ZaÆ2]>k߻?=A5NtF&Olܪ?>jB @E`-Fp8|&xx4P?n5K_ָ򖠓']kS^xᅌ=?r0ӏMS}p׻3Xx8Nw;,ԩ?WT 5 DrXU^|&Npbq8]y}0պ*4 /_5ױels{Le&6U;M ('ŁRH!{p@۶mT)*B59bRW/h{ b - N<ʕ+ 7p_ߝQ^ՔeaC*fʏ{mQ, Zꫯj*蓝;seA胦MgHzI4iwUW]ҥKIIIa>|ozN~=lެ0Sk׮Volܸ1$/@`JV(h8Nb tޝUVw`^4Xh)vWe2 a6_~!Vn{sΌ5 6УG^{5~w-[w\vRU`̹ѣGSTTDNN*p%k,mNC EP\ve߳gO/^Ls o`EIN΄ ~y>3nZn̈́ عs' `Μ99ry1`u8MŸ}SO=ݻU!)REQ( &l'O{ssϕKv|)"""ek "8vټy9F~Il6ˆ .J4E-j ͢i=:edd;67޽{`0Y?f)))/b)P4N߮Q*wy,^&]0$?[ځz͠o||Wtp1c_|1O>m۶{O\uUlf39"̭`+VZzz^j tcw %j @Nddd߿?-"K&$)v[iձ|>3|֭[ǴisN^w[oE IDATΝYx1/yQQ7;w&99]{Ҋ`0o=wPPJǟZUjy^q|$u`n`. p0M3}4~g Rf/ĤIgqFמ|I),,]"ҫyMD$GDDUsouDXVY|ѣ5 4Hrsseʕu?#eK5sIHx??yرhQ%K۶m'yZ='zҥl6?~|ؔѲedRRR"K.Unf$iӧ;6aTa 07W98kk /cÆ ^AѳgϺ)N5eKAکSZAU Z`0ԋh)~[d4 WPPQ`ec}}2yd~J #\HVJMhFRS׿>֭[Lx71<% !bѢE!+5o޼N$>|8@9.))a5OhZX$''i&)n* @o_z%&MڈѴ\~+MN>Yp!s%**׳{nfUo@w c+;y>l?оJ&s7ԃ^ %%0z}9F!;;[<ouX,^|E3A a\DG{ng׮]L0+WұcGFͅnגqqqHOO Ż;y睼ih`0|#LE!rUeL4LN"+zҳ{n+z,:$DP2;;;yM?)o0"Z("Ek9!")(9M$u{eaJ/"}DXDΝ`34o\v|1ahiF=*s'"vыYpa ۫\:tP}](.k֬͛7Y׵kWٹsdgg) "ɩP}Gbs:Ae'EDZ}?EG9-N9"UHjMDڝID󎏢Z3MPTR ".z*XA,EADU:{ =RImSvfwydv̙3;yٳ}i6mTڷo_Y+ҴiS)6:."Df;)" tӧOHl2I&2rH]v=}t9{,]g!8m4)-fe~cٳg˩SB(322w\X,KJPYYYGy5TT"""*XK['"s%;t;y[DZHW$Пu] ,Pr -[}_uԑ=&w/i,~\FQ)C&Ld6FDtD$]drז/;vRʊ+I9|kK.M6UZvzi%FV(LLL g88#3@Vsn L_6%}3r-h#L@}Ul@RZ<ip5аۋfyڳ'oܯR o ۷o_;Bmn]hܿ<իO?D.7p<Bm|g< R1< W EIMMW𵙛+]-"2""5Lz[_V22򐈮;*"۷oWCoUZJw8JD\g/'NJf͊ "QQQt:T6kL6m$"9"bOdq?M"okW~ݲe,Z㵞=A E@9v|1=*CDDQ Oߎ =ov Np g}EOq\BWLq[!DД~Zl6i-Tq}zx:JIHHP} RZb·;M7iFvt.(ID~W_oӦMt*uo./|=N E@IIIhX ^/l<滂-"Dd,g=IJ}* eO 뮻Y&Iv!y!"_fGyuFڵkXynmk߾߿5%!/w"۽4MDb INN@v) .Rǹk.3gG`jj "8p`j  /H"ҹ%Udv)?&"ҭ[7%*=ZlTtuY)"S"rPDdp&ڋn{׮]%..“R:t aaaE0T}W_/=R~~9rcС߿_fϞ]u޽7x[od(R(]횦MPsRIFFX5 R;;P,e1@~x8>?/ڵFJmB&M8p [)]{]_ -苀jy.]n[no_Hg7ٳ#99AѼynvmڦf͚|4j<37NA,WYR3[T`pf41%<<2$Bgꫯ@ڶm+EQdbE~Uӳi}/"^3RewJmeS +yo8D?eMIG>35b0 ʙ陓#DlDDGI5Kɑ&"#\ Œ.+M;Sʤ_tlY_^Zjp7]Nw>z3bRA?.}Q 8'OC)P(KNN`!]v-x̛7jayJJJy ="}\q ޢrVڵC.ț84ȶmd!QC W_"r."?H=Y1*B2vX;zڵk]qxDdP>iii{).7nTPQnT܁G#"O?Uތ 222 1cwqne!Z:lVkЀaÆU_~jp~m7g@=v%J? } Ȗ[lڴiO<1##YԨQ#/^L6́W7˱) .𵣁`dm=߹ +F#bA###1͘LmP(ʩS.}-#tԩ Yw+766V,Y"M׹8 !s䨷ݷ5W 6:ucd3o 8G"RnZd-h!OT{M͛d%~ldܹS:tPi})oFe"hV eT3T,++;wVlnϘ~]G0! ?xhٲ%~{ԁSVx뭷LLop;pfgE )1XjQ ֭[W]z̛7V.^>3PӏK/e֬Yw}!( CoF> "ͪU<( $O?4?x:t /119!r\ЏGt:arL^PяG؎Hppxǎ?~= Dք}Q^z%8'Ӑ,*V=Fϟ6M̙3U c4=oh`(A"kd`0T8rU&=='NT(qpUl7i҄k/pKϞ=K/< |#Q@WG? o zx 4o߾Ai%>umfB(ׯBDdȐ!%%O=zke˖_C9T,9EeH$ϰ]΂,x[nK/4KkԨ!O<-ԯw4h@n*"sRG sժUҨQM7$6M_d>+2R5( 0%~;w.^YYY,\\lݺΝ;_y*> aI'b4h{nN8C뮻x'|RmOK\\\q(̞"j%>>yqe _[ h^vc…l2hPfceP(KzzM"СCn޼! 2klq"U,DհFD[^v2uԐZO=h%2[t+ǰ D~ p9w*(׳gOlҹs"}]9ݥKΥP@E`qq]͛7ν{]ɤ XoJQ7XM0U@B)F}(_RSS믿־ӦfGNшT +P@=/JOAǾQ4ݦn0w.Tk<䓄-7B@ U? :ujD%P"PJ"`,ֵ+_x V#,s'{~)Sw@~$$5׀Ѩn"G{9{nf@oo_~yw1jgf2<<0~XXX B37oNu] Ccƌ3gHffOC_}U 2sL Ṯ^ ,u3U[n aIUTPx U"GE`7D*'NP뒙YbyjX,`u$nΝ ʠUun&}: [,r)[իGQyiԬYSuD)fȑDGsY2Bܚ3P+9\L zdg.}Hdd u)TTwIP42r8,Y$m~'7n֛ΔO`k96iY4o۷I&kNep3tjk;#4hÇk׮$$*@J^`jo,Xn ST(8DR ԩSX,֕ζmB^xcb`En#|O: FA>}l߷o_,\}Q "h1")77W/^7ߖtdm۶-FGbog3LY U*"K:vz_V IDAToT>e!.]t>LjԨQm۵k'aΓ.i/WpExٰa+?BWMvL<\'ѣGK,_l|T eTu麮v[C6lPwл<|GػaW|S8XNO7_+`Ŋ?9{B}*ޭW&33\ۙf>5jv-h_ ݺZ:g8MZ{.D 8Gy\@oϥBQŰl'VXtȑ!u]p8ZO^i>@lVȼRlJ#"Y"rQ㏗ ) *4ֻ+套^#u3fDdT%[JTI-"E//CXWRSSP, "Vԉ^z@7'%%k=RU1 NCvr97MFci߮^B0Ξ={|ݺu&|"Jov礋bv]]үJ }'bEf&G?ŹU5]vUØaynV}QïuIT_!U|)""Cl6F߷o_6lƏ?X "`dgg_~Wt799AO4i3cWrD&("Dbȗ_~)fZ[ZjR|>`K;ULLDZ >ALgqJQz!"KD.#r$X,uV2eʔr7|QnڴIrssPo)?!`E^-*)"sT{i_NC8nii<XV0Idȏo39hojVYwÆUڼ"h&T~35MaUJ䩧VWVD X 0RbR6m\r ˖-.wuyt0*BǽX+< ]jժ%iiiE,{쩒֊oFt.YĮ,~7u]Wc9,<{X^ym~XYAr"2[D Yp>zEH^^̚5K|IΖ5kH\\_}:sL۷˙3gPP^[ 9s6la9/^\N*3ftcbaÄfʷ]ݺ̙BnmO۶m}Jrg}&i9%袋1Ы\`= `2ݦ͛o߾2p@IOO[\wΚ5ˣܵk6dع*x$|^l߾=aPk|4Fj*WNyշ/4 kC=-2`"Pᡎgn0de0voq 'N+6m RNK1fzLvv6{o)2+lX,%P(Cia`Ǝ+N۫"<//'N]D|yYDZ-X]!7p96`ׯ_Te߾}neLtYD+%ٸzc@F@ʇLO?UD>rWF`N%+"D{̊Z~|&^M v"YYY_HRRRvM;&)))}̞=ۣ#Gd#MkWM E@9{kz|07NJ,ONNwyYZp:Fy_~ǏrD8#$"SDd "% %osRF Y%ȃ9EdN+՛+N ubV> SMyw}'6CftTiwk qX."GEDLY τgߤ7zv;9oQRRRѣr7 cǎÇ`3uc9~xH&NqjՒMJ-zD3+Ĩׇ""E__F,~ef3={g' %6)^c L&uV^ͨQJMHH`Μ9\x3g*w3g8zh%|y!>^:tӧiӸۘ0a_\z5/.6ޞrz(Tڵk G`0иqȍ_?! RlUVAmC4Q$Ϟ=ɓ'"m6QQQE 5 DQ* hehݻwgʕdf ~Qt]nݺ$r0|>oZٵkW@٨Q#شiSE躎npp84 шhQh4Ovv64ϟst뭷g=<9mڐeU칀?Bjd߷~;k|wUU0 T@+$t;uյXhr̙SEīHi>}nݺ`֍XM O ++^yyOzu#0־ x{vf3 BpV^@u2eJxKI>}RٱcŞ,#&=;[يn'"<}>rKt.c\dis= yk* z5KGEcf3}߯p֧u/_3`D>}:e v~ę;4@1_y^xV^-R1~w'''W|u]GSJ*A||VAM+p8ꐮts{ɗ$ᄗX^3g⺏zB% Q2f3|P6uhW%gРA{d:Lv;x2d/k׮{@6NuWT%V /U*㐚z&6aTRa~(q}Λ7JO=dCoaeO28IƂuܒ@dtFW^EtNtdt@{+X^s=Gff&/2?EF8X8t ׏_ݻwӻwY7% B @Ea/ `Yg222Xrynn ]R)_:NCw8řq7+Կ9)w+ Ft=uig] ҈.LҺukd]LVX`Aq k8Ʊ 1rH1bcbG= e/BwЁxƏ_s *ZH$:ڙgY5M+׮];RSS*#7* %?1nEn }H3Ky9rz}]5j |_:Dlf͚^W @E> T(J#2c[ʲW_eg>,c_} =_ Ldb}&~:NjhThP8Өs >S=(#GJ;zٳf, ={6jW_ED&Fcz+J*|cװk{4b?3Y&oH M0ۤt}kˊʵ)<"0?eZ֒BJ=z4?n>)С?ʢ)My7L{͝]zqpF&5l(Q^=;."^|ł~ 曃"=a4$'jJXXX…|˷~ 'F67_HGChBjko˻tk[>ss>Hi\ lTP2=|U\mXo,]g)PVh:",['''`.R^y&Niexe ZD^^zQ)Tw&ԢVPڥiGQ C.%\\Qz={䪫 Z`ivb H ڴEX!hlmp z@$ R: ''Ǎ\V@VF} 6d…42^}Ղ9UmfͦB @E.2Y73 (5 Aq>NquU˻Mo on 9+{\CkXo{˿kY[-Ν;3lذɟ0y0`EUaÆOS3-o'cZnŋys[7g^Ud2QN}MPP/Oo>uÞ!>>Fpu&NȒ%K>yAVC{Cvюt&I;WVRSS9|pH9d\xT.G짟~=ém %͛G/E}sjbHXXXT+oTE`Y> >>Mϯ>yh^|W|ՙl/,v[ne֭!mkZZ>S ;]+Cutײ$ӫyjӦ ֭P˗/M6L2}psb`.B=5AC%HOhbcc1dff\"TFP}zFG,g1\%J9󫖇z <_Mbb"Zhte0cP%| 3.[ټys9氰0:uĆ *lyg 2_||3ʎi5 hD#p hⅉ#,, S(b/_MӪD?Ae+C i8b5cbxgm3fL@?~'xթS'ݱcݺug9s:th⯢[ ʵ`I&jB @E`(1hW%K]p_B΅kT?vн;ԭ$d8EUy(~Tp1Pki}ymt ao;,>εl3glXX\ Q@Edee*u\qCp8ԫW/.ְ}QCi4nܸ'8IʶdF̕s!t01I3dy`قs@~d0H %o؀glܹg?.ѺucOypBy++VGDD/"A&Ǝ>V(cWطo &+Tqi0C_lf{PVs5 ڵ^+ļy*\G||<]t [BD VI>? δum*V6b )p˖-[~sΡkur++]V~B @E"$DG:r*,j֬Y;8*ߗ\/ݺUh֬Y{F{QCA!;OʃC,:?CP-P"¾}s\ޡՏ>/=?T z %gDTp +XQ҂tօ k^o[)*PvUHa=V81Qx 띥2!6m&mA$Ю]!`ii֬={ gիa߶m[&Mu]We^N5g:R7nal tG.ZY&\}@!VOSp "J*TGi"Q8r~!wyg\]~)iΝ,Z-[ Fh $pP#thNU.r,ws\)0z`8$Pj'Oc1ydf͚űcbơC"33l$??ILLf͚ԨQbbbd2a44 ]q88v;v͆j-(6 ͆n/b2 F d2a20͘fL&aaaFFcikqoƨQ ]"R8XV,KX,rss#??gϒIVVYYYqQΜ9C^^999و+]G?1l؜~zG_.*-DʹynZjEzz-?Yb.uOR5B\YFnݼ~qC^5IX믿CҢE bbbE\y啄ZEn'??tv]1 knA^dnZu8"˽0+,m ZED{hm-,4<<GEEd*[anA}.c$P5Ml6_ ׿-)-O.܇~,׹dggNzz:YYY۸شiSȑ#+|/e)o]H;1!@*nfVXխ!11⓷BlgQ@[O4󅴴4^b0L$$$Mdd$DDD`Z"''`B/,LDDqqqDEECڵ[.IIIWEeq FEDk5 +fu p%M0R[JXT< ]ݎlfݥ%Ņ붾?P9}4)))X,Vw`2/Y [###|H>7J~pWvv68q"$z6~RիÇnky]w߭sj1PPqмys{`@WoxE._&&HKK ~"0cf\d2,nƝwN8 ,(l&22("##و"## 6"m!5DGG Ň khĠi-.N ––KpF[JiO$>Y--b)pMpǼ<,K0v]riZmin9L%>PILLv$%%qq^z饐ӚLΰB޺sj:gΜGPPh8#O31uzғVn”5ꫯni&uyছI3\Dl÷q[$و[xbcc.(nQK\\DEEU J[ZV:c{SXւKqqUnYXtea7A^ ><<@] µqެ'Nn:֬YԩS+cgص Vsx$< E"5|Y,ףz)}FAmJ޽ZWp}0%8"(+Td_U>%dA@ -šZV*2mZ8`ff&v5j B")8ZTobQ(GV+Llq[}{ƈ.rV^Q 8ie qΘGc7t1^aK$[kמaw:111E PQ*n9oni EP4z'hKHC# yڭX,d"̙3U…gj[ڴݸINNNn˦JPP;xO72.;k:uh00CFdNw>#Q,5͓|xD~a+7X"ʨ )WLb~N߯^UG Eīs[ ?Z*9}^'|ng]Z1d5kj cHII tv3ӾZ]G7&:Qttٳ%Faw %nݺٺ{5~'O 7@.]^ NW믿fގdsp.]OmӼyѬ: Z:l+\ Str@JJJNE`X,%bh uVG,\r%}f[[Ԭs>qLK㯿:}&0Tv .۽Ǝ Ą)l+?6r?8m[tW_U Zb;kOݺuU)T˗c۽vXn̘Wy/\OSNw D'tPfj.oG8ҩS`jٲ4o<$nJSd2yBG}Tz)uCeذa'ˮ lw-ZQ&qALZ;vS5$<-[Ĉ4gJݻ}B.~Cذa0hذ!"To@RRZϟ?Ąa2gl;RxxxA w*Du~eb2iZHiF9n+CuoAw9"4j/=xwJ pHڵ^5vHMM-ߩK.)Rz~>rEV(Eb07=(ϯ!lLc Jؿ{wKc<3>l]b999-#GQtSvԿ?X?/ Z*T(999HJVN Y{|!)NmeF~zH"(DEE팎&P|x^KPuc2h޼y@ Dج?zfC=T"ƚ*µ\s;vB드Lߜʽ(.j(f\.] F&XId"I7\`u8z'i+hf\=# @"L.o6ҡC6^QE MMNjL4)cAO>{͚5k 4ĉSD\P@poY%v[sV@lڤ;;Zw#{/^m^_*'O>Ç:ND"R?@/s{q‰-֒o>H'ZC>}0k,7ؼkc99*`6_џ:u*D"̙3[9Z5AvzzA̴]HZܸ8# IZZyGHjjxש$#T*ҫW6Yt8?jKSPǞ#Gl|AAٲe {˖-DJ%Ų,o_~9r%_nN^[4c .mHQQQ2dq:7@G 9=tVh 0Eԩ{̘12d111WoS:^TTgN4_ B b|=8 ɵ`\@czAuu5B!><^a7'N@M6y3gάEѣ9n۵m6~zArrrZb@bC%t?'SMS*=z kֵ_`A[$IQQ)..&}~#gϞ%ȝwIV+9s̭t6huTVVv\瞫KɊ+ ls% , w^2szD]=ȭ/ДyUEj4u #_Rbb")--%g&.|vܙh%O'ܹsS :Q m⧟~9bۓgϞ7b۶mj^@MM Z-fΜϷDAb1x YU"c 47t;8q@ѣ^ FN7%%%?|on@UM{6 TWW_?={flK)))G(h4(JrrHRBB0 ab6s'xG(B$(. wh綀Kbp\׿ }2331yr.-{]tjժugq7R&N<ݱc-sSNXl{1{o۱~<oL3(/'Yq 7`Ȑ!|=! $9 H$H$bH$( rh4!&&шB@dd$\.b1?aqȸ|Y6 6 vND"b>HG⡇B?F,ˢgϞu1b~נn صkW4 &lԩVFTTAUUU~ow<'"dF$ o͛{oiӦ!-- jRJ  vrN'\.n7nqD3yBe,r 6 K,/xMX|9n:=QQQ*++%WNRՊ}]?III8q"99s__|SbʕXd Ҁ? 7(+~>˒aÆwɗT*q 7Iqd#^dsrݰlp8|7qf˲Őd|9&>Ӊ(Bv1=zÆ CjjxՀ =܃ՉZ }U{饗p-[aZqanNf555(..ƅ p TTTb,a?Beƌi:tV̻~ᇱxb .Vرc9=SPHqܹsHҸ#%%yyy;v,xbL4 ƃ>e!;yyRjm6SO=~6l``X,L&T*@ IjlbjjbfhV`@eee/bԩt;[n /aaa6l6nҭ?P}M 2E_&ߛ{qhlv On7ѧO$''w3c ̟?R\555[Kg 6.|jՓ8}47o^(Pd-N#2T$Ç݂[B,F !H:vMչ'zeXFhzӧOu]s免֯{#'N NBl6طo_':PPP\U/^\.j 6DV]!L4ŋ@DEs ٷoױhDhЏH vѢEן5q$22/Cx;F6l;vn:?bTJ@pU333GEVXA8@L&aYL&]MM .L[r&m`!77`?SjffaÆ-{)>ӠqqqHII{j|mmT*EVVN>ݠB@bрC^(?SrV9Msssmrnjfy][~$/'L&zTTT#ѣmd"ɇ IDAT7g5t]J%!Jͮĉ@q1Wz"III<шիWLF,$''#!!HKKC||<Ѯ];,ks8ǦǏڶm/v5ěo)bb+><=sܹsǟd0DDD@VC.g!jyZj4DFF"""h4PHJJB׮]tw5þ}B{A.]0Lpi q` N!NTjFRibr׬#!rX@ b\YY 1.+NP@$IL&Sg=͑BP ev].xL\<"7xGH$66@TGnW|ʴX,6l=ǎu lj>}:K\xˋm'a&cnHdh4\.\Dx&KRr`a6a4h.8NٳgR/\`5kη?SP-`VC޽^|yJϞ=cbbE"Q,0H$^ֶ gL&1 0 X,ƄHj0$""B^c6Iyy9=[ׯ_#ĉʘSBBOz-رׯo+aZRg\mK2q"J[XBʁCk/>hv]vņ Z,/M0<(((( ݻ[nǯH$XR[? pxYeʁf;zA޽G{rRnr9:w|eYwUU pA9rl&ڛ)(Ni&vڴiF#mܸ񚩿X,FXX^Ó'7JLQ 0Ƌv܉;wz].R\RM))) N$/X,baj KUWWeKNgŋW\i PPHArrrF 84-11CDDr9M JN'V+F#f3N'MTBRA* T*0,, * #h4p1J ]PHjGz X,6Ӟqr„ (rpzzGڮ65j}Cll, 8W *TWWtȑ#ԣf4ڔkɓ^mϟ?| d2<=C9d2( !<<JRRjjZP(j5Je_BkJ;##o !'N)rK1c~ZR\wXn(66FҮ];Z).+eXBa%C*B*rEBԜ|ǎ;=-X= =ػ ~39}N:nDf3gNJtI_nZ\jcZ֑ouGjlHXi+ m3y4$]q\2ݮq:j-kvC*je2Ye`/ }˺"ј²3gMvU#3oLVM!8 @` +0I`Xbv{40NVT9Lc{&BП")0L@C5٘8}he|ďb˲d<\NN&MϷK.СڷodiRRRlcšիI9y۶m^}UBg J)Il޼[=qdT*fvGqq1l68Ίk2xIdNCMM yKa _(B*z !p:٬0̼9_iJ#v VӉjƎ%xV{A{;@FꂝvMvulGZ߅` /RPABز|DFF _~TTT.]ZJ)?yfSX~=>ps?n@H( l6jhomd  VssTomjHB!,[k@\nDWh<ذa>6YgN"Ro8![5_e˖aٲeh4뮻ow^z;vIMMGzyȑRPHqq_Y֔5kW_މrs1ѹsg,H[; äI8C ( pz2+ԕP(˲g 9嶝96 $!Ă x/`  à)JdiR`25;F !]/"bSk!//͵P p x,B$!33Add$T*J%o$&1?7B`6a0`4Q]]4 ??tMs^+N7xo233裏&O`=(((Z(..?>̟۷/F_~P(Dll,w4$'']vATT4 áRP( rƎX,`k6(FF67 y._PT"""R)b1ry"n0oSa#aq_FFtS:8Ν>u}!<<?5},[,jСkر)ShLD6E8x`.]صkW7 Ww7cРABJO. 6Z-EEECaa!*++a4[_|ZBB*P-?~d2@T `XntZ60y /|n{#DbIu:k}y}_lܸѯdz> @*^(++ӱcdztF@V˅kϟ?vmO$aڴi?~}ګ^Ѩ!b"8Vľ Y ۘr}D7e227oC1r:rZv6++TW߿,=M>^Sg=N ???{8O4 &L> `~qqqD8pVXѢo[nTTTyyy(G9biΛ7zЩo=z#pBL&ɓ駟v۱|:l۷o~QHAAz\xfr-۷/Yv-tq:o7$ƍf-;s[&/ @&On[{/IuLR 6?0 8p ; iDoѹl22r%W-hߖҩSѹsgrw@ub 8l6xZ{L2Jz#۷o'%%%t .DFF$33瓚*PP Eh? ܶm6n܈˗c̙lرc֭[u% L> ૯Z#t:8nk4nqq@}Y#9h(#q=y׶ !{_. wnсB ΋7س^{j\f DP՘4iD" x5^姳^9#C.CV\FT*ZbP*Qʩ\݆ߍڵkvZ{;1sL̝;ƍ+>?<>޷zEQ J)BO >CرzO=Æ ñcP]]-/H -\.GRRohDEEA*"-- =X^Q|/쐷(+|ݡp%X bP:޽Ie7-j?73j  fߚ0 cުoϢ Rԯ*A}[!}MN=mv;oqa& f:8}4~jA :gԺ-˲XjVZ[n?pa77qVWPa4_ O}1ϲ9CnR=0 I*8jZ 8@KBQ/1X§Aj we2d > o[Tr:DW_$GX,(//j(7O(J̝;ׯGIIIEEEaXfMyC;`:@\[o[z5rss'ҥKxح[&7RBPdZ B̛7=^wRSS!Jۤ0x饗Э[7H$X]EʗrDwE! vX, zFTVVOl[BZZG-ya@sg`ժzV~~!0iRxTZrx>'Vc̙Xd -ZK.ݞ((( 6$:NrSO=E[n9r瓇zBs!/:Ag) رc9{n~p_?L}]{nJFI1 mRRRHlllC@W/.SSS1OQ[1=e J_{9wLJ F ?LJKK̙3yKBE&h "vwuxt:bbbOml'P!~ET` fkZBm>tش hJDkݻ:=>sLa̘1ؿ?FOD8s .]ʫPP4{M@c\,\< N'}YH!8P7,] b<II.y$ ڵk3g./44BǸ 2+P(cgT2`Spr<y:U"3j,sG9idX|9&MT^Ǿ} q"Х Wu:;F zozBAxxxM)(TqʏL&k/Dll}۶ǂ1C{T& ~'!CjhE5Ը 7Ῠ)uc1uT\p!hu܌LvE/FEl+pHvGW111o7޽{67;<GŲ@aHN~V=X7|O:[QPHTpBd5n@dd$֭[YYYAeeeONM'kCRk62 '|;vΝ;#~ůͮRlt6[. L dm_uu5~gtA'1\hV0nڴgOm_䏂@1e pdmTo~ 7… Nwh=I[XeBP^^$f >6mZnP>˲xgXd R)vڅ|L:SNEnn.6l؀_~/2WNN***[n@ uYH$0~P(ĩS0c b̘1HKK[W PZin[˲8uɗ.]͛7c֭Z!Q`qqm˖52G\j_ p8t_wYfaÆ|#DyInu[TTDI޽III 9{,3̿p`٘7o^0 [3w˚9s&xuc0Z &!XQQQ9]>BBۍcȐ!b(#<</BZ̅ۼV;qnLƻqwABDFv=XImѧh 7tSm qu*R4U&wΜ[W퐈D&߻go֭K@JJJ4Yŏ?J /GyN X ՊUVa?>>|>}:'=Κ5 ˗/qw`ƌ^d2\1Z-r9r9R)D"O8h2PYY'x3gDAA_GxI{$:M„ zQB 3̭֟ rG(,h \_FR ~)y"nq GZ J)( $IH@٘X]ܱc@>}vѫꎦ}"HX)/ =8{lPRYYo11>rd2~: 5vw`0ݲV*0jPrrr3c >z|;hq> Ð|;;{,|RPP4LWdgg_,6tŞ F'6Fctx^܋|y>w ڵRRӷ^KQRR={^YHJJBjj*z=Z$୷}kWTT4(M' Xu n?H, ;6nYftȑ#1gΜ&ѵ+PVKw…ׯ_Khj:h;U 999Pu3xM@`Zqر߼qcmj%- xP"33ӦMÒ%K<`逑XF_XfM@Ə]euJ ^z~f /)Z`hP4ݾ_}dT!!Eq}FJX @;p{Z..|x].l6f3F#GeY0 @PD.׃#nNVf& ,B*B,O>Aaa!}LJ H/K *qk)S`?k agff."j+ʂTdf-}L0 %$%%ē#Tu4h?A۬ iʔ)mM͛Gi})H!o"rIH m` 0hJ Z.m Nɘ|˯qnݐ !@aa! `4Bkj0ZI b1_)Ii(8 PNԻ Vj\(Jլ{9I)\ Hq=EXDa\}bV٘M]Qh4D$5ڷZTTDN8A%AeeFHrr2S_|@ Lk FՠˏhD_z 䛋\23Z %N45y Ynaa!9{,%hZ(ɺ;ƍPa/^{ =z8p# Q\t~ω Bwto:uSL IiHCthBolZˣ p]. }q8jcǎdٲeW^-gȑDѴ(cArrB a GS MW/I!%/?IPٳg7kk8)//z*h6@aZP(Ξ= = ՊC5ob%첲,A CxI -G;ÎX ZO>J%Ñ$DDD ,, j2 fhZ#///^hl0Zxx8d2 DDD`y_; .q.F#jjj`Xx6 zΝùs)jl6l6[(( Z-J%[2 !""*w+@#118u>}QA.ŋPTp\0u9pBfš5kW%*ށAjU[Amk 99aaaFZFXX RP(  ,, L&jjjP]]b(((S믿+WW .\hp$%%AVL&QSSޫX,F\\"##VT*yrjሌDXX8ίnnǎSذo`шBxBx_HnX a`k5`(7@̙3x뭷֭!p8p8vq7&}M2 DT {,++ŋbilXj{ReeeHNNFv킖g߾}1j( IIIh4P(d\ψ|0pnX,ի&L7ߌxd$''#)) qqqh߾=bbb FOV0WL /?ĨQ@.7yF&0.T*<3غu+Ν 3f }YbH$^:+&"ߞ 3o4inHIIAxv.}rmn:̙3KW86 Vwl`! BQ'˲Z(((@NNt:O>TWB"fr ko۳={6;1w\>}r2O\Jdӡf1sL}݇\zo+ǁZcǎatRXڵ+J%O~}U82Ƒ5O\{믿7lñ`߿;PYYh4BcZFLL ~DG!8u]={6 !!Nŋq9TWWd25*OIIA߾}@.}soAGm6J%(( .]~񒇖Jn݊JJJP\\ǏCCd2d2lD"AEEOT*^裏b^;SNŔ)SvI3T7q[6V^j60 d2"##1`R à~!, \.I&I37sO.áRro۷oC-3ĝE||1d8= ^"e2`6a6aXwLڵwr@EСCFiii]]vEJJ 1p@L2"Q7vXDEEwAZ X! !Pn,pR*=7LLeY^t:Op- F#Z-Z-V+(4'޳f͂F?~|W3f fϞ_֭Cyy9=JL&5J}ĉjsa߾}%敕d2:t[n#1+((+e믿n@RRRPfHDyQPH_ŖB(o߾/oV !"":^yk ?gUUUXv-D"/qBee%JKKqĉF;uꄼzvd+wqqpɄc3FGGc߾}xꩧgϞ!1cR/::Ny;૯jٳgnݺD$!y`rͿ J)V BHPrz"(--0ʪC(AZ HFr] xI&f3/ 69BT֫t:u_ d '7dJz8pA8w9\:$/  ҥKMj/=]!EEEQ#աXrmFMϘ b滰 Aia57 GA Ee٠PD8A [g9YFb/]``Jtu#F=ru0<͛7t۷3L&/mgN83s񿫪P(oKA$]Y\\ T~c664ͼeY3gj) քB!|I]_,XkQk<qs1Cx3OtܹvK ))_QHA EpIn/ Tsn{IsBE4LDAm;OV߄(݋իW=gP'廘q\^HՆLze29.]xM^ B/8}džOsyh bdz͸6oa/-j'_^D#ك-؂.]`^:u &-XŪU<("dؿ=XF ,ˆDp\8D('8E{-`P8}6&yݮt8!%dLɞ={B,CwVEttt.ZcWh0 JꫯzˣͰ/عs'Vyx.))X,AA\\pEeY|M&S(97P˦w_C&#fpqvLc%A~j"h_ 7EFFm8疥d@ Ȳ XV,Ez6 F#3 ó3jGNB`)(<&h T%$"V@_PK')mF'D7 J^&N3n /^ ؍o>JyXPߛWV֫!jhZy\Z-\.g0r3BGi*\.Xz^cѣGc޽7ќoZ*B$z.>o)i]!o)h U %k0a0Lx =s<܊jBtH$^}S@oߎ An n=>皍٘8&V8':H$.%~555p\uP###q{/o]0 aÆ!55q.Utޚ*dY P>Eik,p)oP E@~H[(%F)))C-9Bn&Ztd^>v{WʡR zh_]й3qvݓ\mksgH$Bll,N:Բ***t:?U#NنZ֯+!O>dʘDff&D" Y(!eA$y{yrWR&mK$9K$@]y*] hCf+8ߟ={DZ`/^ ^@Z͚AjT*F:Z.z !q' H=z7uJ^ŋ;()) Ja*ԬY&Mrz|c:5r90HaR  \ke撕 &&ibF} z\% SU| Tr?NT]ZzSp ::RU8RaZRR4K^z r5P">;{lRS+ݎ3 `TTN>:<GgUn !HXQll,ڷo_!{Jj#xzzB$!4]Lth4.M8%*ATRfM4j'O,ƍ+ԞT*eI4%tWI `0lxd t쫚a>卫甕aܢlV^& h߾G*T; ش׫<);vB<* ^QiX溭j=!zC* .! iiiwVm%Vnn.!n1tU3H NCVVKړH$,j mlܹD"MjeU-\\j^/J&,  tWu"`0<@׳uh U!!+SOy&qoY4 IDATFxi4T)Yy !& F_)))%̴Α-\d29cKϝփ!fVc#qz=$ Nd2vJ@O!`0 z=7ѣG ٌW^>b"EtL&))UwZn LիW)b(JLWP@("00mɓ'àAPn]Ԩ^ %D/  "Jf(t,yAHKKӧOu传/{=deeEEEl=o6mL4#>>rĽO.ZZ,F,[ Z[.ޝ9s0PT ϺX,L&B`\O$J)mn޼_={d"ν>ffA'zoPTuٻ@LHVKb!.2~'OoѣG00 `Ӂvw/H$4o޼DmuBR٤<ӿHF8(1NIIヂtܙD #em^0P(ŨW;[nu;p\AQ+w@/\[nabGI iqkb&dBT \R6X.#77}a />}PԫzH.qFn_Ё">>jm s QiבϽL&nݺes+@Ra2#6dѵsDiD"dgg\;_~P(tHyR FÒ/{#<<,.Fqcf%9R('<<<Z OOOAϟ+ϟ?ǏǥKd21fe4h0 $ d2j5///T*T*xxx@PLj'}N?|w@<6j%qOܸq#:wԕJ%;[\.g_*w:3g 6& ̚5oLԫW~~~ RdU{Q"@. OOO(Jxxx@.C"))&ɓ'Ѻuk`0ؐ1{L+qzކ>|mڴq{ݿb9<<<ЩS'Ǐ[1cƠELLHD7tÙg`c?DT xzzBRύ'*b7od[t)~gˋ}ΨBUrUur9Kl3i6D ,k.?G)QF d2X,t:d8<}fc0jHżglGMZDʆ ٳg6y?[@U~.QNtҜ oy!ܙ60xYu;vŢP*ԼDIZff&nݺ,ȴdժUCÆ #** @q~q'TJ&U琢NM:GVV>|sٳgcΜ9/%\X,<|cǎuI7bȑd2Y +<\(`W̝ B" $$7Fpp09PFGUȢ"lٲcֹZ \/B@`` jԨ "00Pլ9k>g;wdf'M[Wa_u4ɏjNCNNq,  ???O#0ם,Bկ_/_f$,-67HӧOGV8qiiiZ0GNNF#B!ryߟ?yTEmaojU<<>>6\u)qױZ PZh߾=-[ѣGW^zVU6a>x`ٳuƃ'<ˢJ%NVZ/IB/˖ٻFa28x}EU&B{.u/**b4i˗c۶mwDD͛ xt>9D"֯H&Jcƌӧ ڵ/k"d~еZlP׿Q3L&?ԩ~ڨQPn]j(ׄ[Zlh~~>_/*8RJ$gJ^>l\5 $''ٳطo`Fg`Z^7}[343… Xb$ n޼ի;=!͑l6Cիx7͚5 ooؓ:{WZ?L&zDGGcԨQkpKRo~:z=\ 0rtt}:YBbb":wM6A m۶Jؿ?vY}{Z09r "Fvv6ƍ׊ի}WѡCKG(6lp%``` R[*Ǵiӌt:ݺcƃ'<J DNtzHYJFR)PV-H>:P@`S;vD\\nܸLdddɓ'DZZKL1 6l 2e ?~cǎACRN9VybɂFArr2[9bwA.]pi[ ŃC 77 ZA^^233 pmvPdiҥ0h40 6D_Hm9H$by˖-ѫW/|FjհqFLB' 2їRݻ7:w}AP`ܹl*Z @`H)`!H HRXDݹsQQQwDhWB |}}Ѯ];oߞ$( {"(ĞbFOk nc% 8x` b]TWTVMKYHD"yJxZ!~}.KLx-.^*`@ Q"Ի>;SN>uc4/,YIJ'z*̘1_~%ՊGСCޗT*ň#y\nt06ػw/M>/GAFF,Xv>sٓ z<϶?æ\mYdP,^/ƃ*Vnn.U+7}/##]wZe Z"nNNMiӦ?~aÆBӦW T2 UiF˂yQf-Fϴ=i4<<$000gφH$pTqK'mช Y޽YeK+A75jO*jErrrvyW/ 1)e<<<`6*qZoΝ;͛7CR KMM~Qb#h% X(B >X*"TqYuNB&lvT*aZr]Vkw$$tw@{@-E,2H؟PXXhcƤ]ro]`Gb1nܸÇWR7.!z•+Wl5ԩT3g@ -- .\={*EHpfd鑑{n 9{l Yk׮ByOE ,4hFقiii^n:TZ8&&tw@G drHEB(2wYEMX;&ܨ_w݃K.3R6%rV&7+@ `U*-- @q_5B͚5!QXX&OOJJBPPT*v1c`ժUӧf Blؗ_~yV[xqOVlq4駟bŊfaaa}GA$Ć |ҥ ^~eHR'f̘tDiuba+D1' 7זJRH$ 6ӝP.j#%j-{RvJngThQ \V-xyyϏ%#j2Ju &C BFFq8q'O,u5zht-[ٳ1n8DEEaҥuVMybbbkJ/ڵkC#{՘8q"'7x@e[E'RԆd\بQ#޽7oĸq`Z?W^l @4hsA\\^{5Eꫯ:$KDU$'g7ѵ@D۾?ݕFPٳg $#KT4\ RicFh4n ̠F4gSрšj,ְGƏ/ѣٳ'ܹ1cƠvڵ+>R%}y4hCիWѷo_;w۶mCHHH2!JѣGI&9u챱@tIRtt4Je#G OyCAGWʽ0 'ڕط="+WĹsзo_\xoZl'"**ȬV+W_W^hժv܉vѣXdI HtY"-K.)s<_׏= \NV@. lDr|"Fц0i4p؏~O>)&6-˗/###8 U|e=G\\֭[իF֭ѫW/lڴd-a'qݻ7.\#&&\n-I&!AڥKu&ܹs]bؽ{7uQ'} >>gC,@,1QeyH!sC(i`B!Z-f[L ^_iENS׋;y*((T*Zvr),,,b|=zs,dx3)!6$)"Ut !ԌnX *DjQw `iՊj5/_bZXp!ԩ & ЧO{HIIk׮aʲ~VG]sIǏGZZ^GABPT:GARRvލQFnݺCll,bbb [\~ *^ݡdO>POѹsg:u/plݺo=1 Y:u qe%H*4|1VO(;T*``3Ltر /J,rIr H TϦLr6d6% rrrC^=Uu!juH+Hiף ]=d@ p:q7!gϞ-w=d@Xwӑ4k K,q[^S8x ڵk/ժU_Ãۻw`Μ9.mǰZ=Q/ et_cbرhѢ ӧOcl=0h t͛7ȑ#1j(ܺu ;wDErYFV#GPfM믘0aqT|GÔ)SX%kkT&gYB$pNy%L&ؓYnN0&&T(,,\.g AX  QfMվ IDAT)NMvw0CC:u#** #FpK`˗!:ujȏ<DTTJ$:jq4j6l@ 0mڴJX3uŲePV-ݻk׮-PA&a֭ѣ6l؀yU8裏pH dr Q:û3)`0@$%o}Gt;ΕNP`ذa%yeeeA,#0=OF LHHdijUqqji2h\ yw0`(Jh4 ; T*-Z ((-B-q}ܪU+ >R[nEϞ=K//&H@@xzzʨREq7111ѣLP)t6~F>w\t1110abbbХK2 }]ٳӧO9? rqʔ)-q\RW=Z%TJf5U' 89ʄgϞR %[ w" a.U\ujt`MZ2 Vv@%+&^^^Xd كZj9:)wƍ âE^wɓqԯ_-|RRRRY y`XVddUjDF_GQF` toF=0o<ԬY0rHz{{C$ܹs 4 HCZ^r۶mC1ydZtߎ&;R7NN.4LUΗ rv,XVT^-hqG VuKO:U!f Cddd -- uԁD"\.G߾}nS1bT*NA!%%x׮]Š+#FJUEV%~$ >G baM1/_NѣG;vRVeaٲep6܌UV!??:u*nݺwyJ,2ן9s&qaڵ0ܒ`{^z-R(Z6`0  K'F.0n?A `nn.s%z}iN___E+{"==J~~~qIhҤ  dժUCqe[A(j5J%[M.iӦ5jZh"!th׺57nbĉoMuDBINC^^X;v{7Nȩ `ĈZjQHMMeSX;f\мg\t:5zb_pp0J%;|r䒽Z +=^^alFkZ6jl`!E4/B!L&f3f3G V^nݺAVcĉD~,f7o޴q BCC1tPх{?FE+//z-yT*! '0;vaXW(B*ŨW^ ЧOBh40L`F]f3B͛7cڴi{7p8.o3fo߾XjN:@KwEZS9s=RBJJB`?+ rԪU 5D"g JkgϞf@iy;u9ss(((o̞=xgw`D"Abb" Ǐ׏?DaZ0 fΜ 6Wᅬ7^<NUي.4؂ HDrT* pBo8pgcrqס*Z) ԬYK.e#===qIH$h4GVŐH$Jw$'Y5K͛7/NE׮]1c t& Ɯ9s_}ĠYf)h@0}<+..!PzjX,|7Y?嘚6mK._ň#^ǎѻwoXr({)ѤS$Aɓ'矫tͩӾJRdnؓD,u>|8a4R XbI*_WFT*lFAvv6ߏ8Uoooh4dff`N:HLLҵ{Uq'\kBZ ___xyy>u\O:U"tHHkV9mД)S3fP,Co rI$0 B֭駟eth߾}3#GD6mׯ_ǁ:} @DD:vt,]?۟1c`Ĉh׮ N8EkaHP 'wt||rssq-aΣ5vM&Z-4 t:󑞞iDzeŚ]iS%W]4LDFF{m Quz߾}>@xx8Ə/]6W???xxx@&Pci|!PT@aa!vڅd|wӧXs*5 D"JBݺuqA 8Щڷot邠r6m ""]vEHH233qUDFFbǎ(**r~;w.jժ`„ wׯ pԪU 8q/_E.NM84ES o :.33 ӧ駟@Vk޼鼼Æ Ù3g^c2e /_h{Gyt|2^z%$&&djڨ#+U|(QfUJBBB#t @G%Rph*7҅3Ehh({=iӦ Ní[˗e^Q)(=Y"h27ˆHD:}|J^ӧ=UPPŋ1Æ #(@??y^>Bdd slĦM.]ZA῅ƍDr :vXb hñ2׽vF#Ǐ/x rAOOO,HR)ׄJG/,, 6m'|Π oP( `2hPPPB65 d@\{BPW_lݺmڴݻ"  򂷷7^^^lZ aТE $''cw["m… 6mZjw,Fde!R}AB\?=o7"=~H$E_/… 1{l7>Djj*Z5h۶-> ** }~ܿ)))Xx1+J/q!IIIHLLD׮]?ooo|;wرcc4i̙J˗cٲSC-Z@QvmԬYll|0PulY`u\/?G\pX_E7`̙8}4Z-Zh5k`0(((v˖-?s#?bȂ2rHBȑ#ĉ+3+BRRRHRRi֬[ڠKHHH$nȐ!޽{BΜ9SBL$Сuܹcϓϻ222Ț5kǎ#ׯ_wK[Ν#Hr ~r]֭[IBB[|dɒ Ovk vl'qD}H$bGJgHWt-mV߿Wpp06o B-3<Ѧ +;oJB*:2_Db͹ٗPsfMb摫 _ M&46k;'xR4Bׯg>H$,_wʕ+1~xo4-[`͚56x饗 s4*,4nb̊AXf &M+WVU4Zn6mڠCH$d2<<<HM 0j0 x!{k׮!::Y*EKl\%X6YjC?aڵܾc;c]FмysBSZaֿyʔ)?|3N:QX,",>}hZ2~-}!~ͥ9CN;r)Gff&Yr%ĉիniҥK$**{nyf~޲e ILLtL6o~#ti7&7 ӧO':(Jڼy3a\vtؑ =ѓ4DCDDD7DB˗_g@uvEXDb/d!($mvZB!^Xb6IAAׯ#Z<IIIUVmUddpʔ)/Աر;vĪU߿}yA 媅+DUYUUҪx=. RJ@ga4]׭[.ENNL&[c*ȑ#q! Lxn:DDD@.ChӦ ϟL+W"66#GDPPL&0LhԨQd2ѣhժB=;wS.VTo}buU )ڠ `(D6nj|WŽ˩g+Xt)F&MyًuxGSըQc͛7Ço!CRk`8^+w //./ZoX TF:"fRʩdJ%vBl (F*υh\./:n9 = 0%UuChԠ!_݆{8w\ߞ.\Wx[-??`xҥK1cBO>ADD:\:t(c 36_HRE ,he2Y^lfU9l޼ya>v&&&n`0@w @ `ڵhҤ ϟYfa,׳f3.\-[bΝUj5=zswE񜝝ͪM/߿;8M ؀Tb>縋'ev;da*{M??Db+zѣ-Z4u7-Oy@HHHѼyxEdddG Je3Ƃ p= 2t"Rӧ|Xn]a&S| 8ٰaÜ6##. 9^%s~G+.!ĆSdƆf*X,6MCn'JҦ_x0 p}z?D:~K/d4ܹ+u~~)0m4(zAb` F `BQ50Pw7`0yGO:u Щ(_ tRh" <|&˚5ku@駟VK aSoD*XN"W\a?ߺuBȣG 2p@bZj%}u͈/LBCCILL 1 dٲeNWfM~z@V+yYz5/u .lҦMJq0dǎ/|0j!_+)_)=!GUI,)@Ao5 !ortǏ'Fdgg^OzQIRrAb6+_<6KСCɝ;wHvv6ӧ KNJ[|ygΜIV+y뭷\vQQQҥK'O W/)))䧟~b?'$$m۶={D\<{|gDѰpժU$##W[no޼I>vݻGOݻJFcyXXw)**"fͪTb̚5aHff&ٴi .nnH^^tRl  FL4'0MG:ك=d(s.B ,dfd9KDOO^KӨQ… mk۶-IKK#DՒHuh$z~UVV_|oa޼ywVT|}}q5̘1WZFHHƌp[1k,ܽ{W\={ФIxyya8|0FZJp@LLL;7͛ e˖.;l{ai~rl'Jh sbt:ss d2ЪF+W {ӦM+},_ڵðapm >X`ͺOƚ5kЦMJ$ǎ̟?Vu!CQ7!5!C1 9# I60`JB(HPL>,W rΦƍVhhg_"""7@ |VWܺu'0a ?.EEEvNC0` VGȺoYhQQd+Đ<٨0eI"ӧOaljl& ,psxbb4IffJ~D2eJ%K^=zt7SRRF2 Cf̘f?;,ݥ"bキػI&&Fc%X5$Kb-bI,1vT4Az]`e~ .F>y`gf{wf~EIdJ?Ȅt: FDDDCE큰fHooo djJ*/_LAzj?< >j+We$ǎ+Rɓ'Sʕ+j1\/?'Yq&9$4x (- g8jٲPS$ܹj~~~:k֬$IƄ %+xHѣ=ꟑ:++G A$Ihb233=j onݺRN*㳵9A`:uL׏F˗/-KKKn߾}Yөi4Iye2##$1>>YYY,]4wMW_}B7lмJ`|rӧM~sEÆD!o@@ daadU~k2ئONV+|0tR&''>f Ax ر=&&‚x->}/9)[XX055/fRR;Ơ JDAk.y͚5%I'7n,_ymիm/Y ̙3&v͉h ^&yF)@#!w0,4L˻/@ kl@o)V' &22[^"%Pտ $I###yYow~ʕ+NOOO03330&++VU}tnƍS$Ι3'it\z5ٲo9Ɯr-kժ ˋ 0$$!!!EQ5j<r(Ƿv s{ZsN&5֪Ug5J Eq)|Κ5YYYf͍2ӧ%IbϞ=/TrY6ooo>}xxx\ \z5yiQKRV3**~9:))iiiܸqSP^(ŋZQJ<\U )>nf(Bi!Wo-*ԩ(7nz3f(U/^̛7oR*%|Srݮj`=z?7rH[׮]$IlѢE謼Zj=3%DPP^ʺuO>E~O27˸qx]իWyJDFH;Ce4x @yNe29B7mħ Zkٲe+z\ӧEQ{'fZmL(auXIQXWp>}4}||L\6oׯ300c0$m'c2,, ntΟ?_.o|9r$[nG133Z``EɊ_"% Zo0!!!\d(*oNܷo˕+YfٳLLL`}d(z{{h4&&M댊7WAPF &&&2%%#Fx*֭czz<>j\n|AM\gRRR.r"{Y UV1!!q5٧\rQ}uЁz^&b&MN3Fg͚5&i_r<7̜WϜ8qI.s߾} ^J ;;;۷zAxJB49煱c2++kJV.(qٲeyR@ r}tsu:5 %IbDD>S2<<>>>$ܽ{7åKȠN^gll,g*J8 .ݻhѢ=4<<< M(۷oSݝjEǎRdԑp&Tr\t)Ҋoܸ!J*1###[P~}jZN2qDȑA 663_¥P(D77b!CP$MWŋfHM³}8/^LQٱcWY3&(J~wڷo_0my5FFFF>zJ/m.p'<9ϏNn 9l0޻w(ȑ#Z*O:%^0 [ne^5j* Cbb P"/.55u$I>>$ɸ8ܹ۷yeHVK@ADQMWEPa`kk+G&''aÆ\jz=ϝ;W`2P&j… vPU-ʕ+gr\RBݼygΜyQɂ;?7|C|(b rGsF"[oEI\tI( [5ny=<<848Yt„ eRRMؼy3әB77i 7l ?||| I,*c8b+3+Vݻh˙3gM6^u8gn߾^^^dVV?B݅Źs(BZXXX6P"߿F^hu.}+WfPP٭[79(|ԩCAL?E_X*Jfeeq͚5ؼy3u:L֭[˾8iii gΝ|E[KÆ rJj4޺u#F`||`hk[ܹsh48qITIةS\7I4vЁ(r޼yyjAhqFSNV5k/BN'͛7SB5]+r /]dGE o{7``ȑf5k 33nnn0GFF uaԩSn]zDGG:upz;;;XXX@P $I H.]Hded@V####W{JDB$h4BEt:zhZdee5 z=A3j#*XKRDHH`0@j7 5j 55HJJBzza*;9PTj֬ kkk ++ 2;wFÆ accX[[r4 EQFJ=Q\9eʔAҥaooe9ZYYBh$IEz:pppZ5jԀR… T*aaaYfȑ#/|>666ضm[LIIA߾}m6h=wϵNý{0w\?~nnn9s&z-L>/_~fQQQ߿?&Nɓ'y]6j׮Çqq6k&p4WqU­ bmC8>GE.]PlY~ɓg!)))6/^Ν;cÆ ;v,Μ9wyG.Xgt&Mw=JXBKIMAΞ=k׵kƌ'N<>lq[BZXϟǎÐ!CP@5p 7oD-дi98;;aƌ_fի7wޘ>}:֭['1b-[KKK 47nܐu5k/_z([, +W}NG5k 7oDRRz3f`ƍo=2{CV*96lDQ|nW(F}FHIIA֭B1cA& $,,,`kkRJN&L2]6Y(UѪU+/_7oބLlDQN61$R$ L6%IJ??.]?۷ohg6YWPpm IFdʞ{BFpuQR%888NNNprrB2ePT)9ZNhii KKKXYY!88XbРA0 r_f˜Q(P*PTrVVVr_ X[[믿ɓ_9& `1rH4k NNN CzWb)m۶RJ 3h"L:$oV'NI&5{ >>AAA;#:ݫt...֭ׯ,xyyax"FaÆYf{.We˖0`.\X[[ɓf75k׬SN%lȑ#ʞ={T*N2ї,aÆaӦMw:uLK1idѣG{:*VtF˖qq|/ȤJ*ƍѭ[7 8qqq(S  ֮] \\\yfL2?c VƎUV4hN>eˢgϞV2rHl۶ ?ϟ_ٿ?~m@${& [YYAVc…%bfkϖ-[GGGiӦ1D+``̱29&DٟJL:F#1n8ܾ}VVVhժPjUTZGҥaD]鐜G!44qURNk 33iiiHHH@dddhqC&MQX<2Y# мysSܩP&o_ҤI_]vELL py9r111E b֬YǠAfhS8O[UV7SjÇKKK4n+WZݻwqylڴPMqڵCT*q=?֭Ã0qD7mڴAll,mۆ P˗/qa̞=*TgϞ믿`P")ILLA<}DDx FGG3""¤PfMVP$q;IVKNӧOW^T(5kh4jw^-[:t+WZ$I{r# j4޿jZHe^ʇ晊𡋏%Ҿ(WְfǎMJ P(:u ӧO汥KFrиqc4m+Wc~jFJֲ9XRA$ddd 55 pW ЦMt:hZdff"##iii&+WFڵQbETT uԁJBҥeB(Bjj=pܹYSRI|/ۤm>YbӦMŪU0e٧Ot:d=7}:֯_5kbHᓑӗm/{[/m6r'/ x<3gΠnݺNIY\Z5899W^}v{[lVC%0"Yfaŋq!hܸ1ի$s &7_kѣGDDD...hӦ $IB`` <==}e˖]6h$$$ ..ɈDrr2jժ^zX"ʔ)U ʕPL-JFA\\lVR.]{뭷L_f9~8zsbŊy&J*&M md{J_~o/̞=we;3g*T@jJP0 dpׯ͛#%%㭷Bdd k17h40 2@ZpEC<|nnnr5iJQh $K٤$;X$a6&7* zΝÐ!CШQ#^=zx=W1'&dل*ۯ-{db ̞=nBvʲ~fE^=> Jgggj4np-c񈎎 f1"44w+ #44Ts9;{\9}rU*hԨbcc]v᫯29:EXb<==zljaaaCTZ5&b"y0|ܹs-Z@q\͟?_5RRRx8lr>>sY ,ŋs ]\\СCԮ]("$$x"lllЮ];ԪU prrBٲee7uIA@FF4 Ґ<|z*>|:h׮6lի׷e˖"[[{=# * gΜAǎ7Gj&ׯ8A999EDqsŊ 9rlܸ}jϟ_|;&jZ) lSNERR&M+eرcѸqc̝;111R V\4бcGر#WnasFժUQn](Jt:ܼyΝ;q(TdffB RPP3&C3ZJ* *FBҥ}vh4 99zvvvR *Wc߇4i+E= ,S-J@zz:nܸyqSHLLDrr2ܹjӦ ._,5kb˖-5kvw[oB|222`mm gQ{5: ,^;w|dZ[[cĉXdB4n8tO?;v(T9*WQFt"۰,Y+++̞= ;/FXXVZEv!6vb~j#GDdd$.]k߅ dw޽'࣏>B-0zh"** 񁟟\J*FpvvFʕacc#k NCRR㑞@DDD}WRUTAǎQ~} >_5*W:8|0M %͚Rn]T*uhҤ cѢE],'NСCO\߿AKDv~kFs.11oY}%fϞM^cǎf͚Qɓ\2pĉrn(vp6ZlI@ϳN:oW߾}VsQ[ƆofTTի''.*nܸaR&9ƪ_eDD \~k׮\Œ =><}/!!˗/?ϝ;'Ozŵkŋ``FFݻXyyIrĺuĨQ&>>|qqqE7oRE9Iz |7|Ì ,ܻw9666Ϫ:/SyLj}]ߙ9s&%I+^SE7`0..N;wdFF4i x}&&&I kժE._{ٳgy5|p>ܹCooo^x'N={aΙ3fժU|N0!!!t?gpq@c= -,,LJN>&韥Lx-`0Ƿ.a%ZIBBܽ{7CBB<~8͛ݻի$W^{wtg7|)))(lР---M*K.1999W9_=m6JrG/?6),--y5sĈ3{NcPP}<0j(:::P_ePM~M6x1 O4iחaaaVe6mLBBBؠA @^OFÿidN<&777FFFR$rZjmٳ(kf @ma86jvܙ$qѢEGS4囕0&&ׯ/ O?%nܸ111&,^#gVOC^ÇM/wޔ$o6WNF)Sk׮$I3gNǎM/]=\˃<~)&$$9~|]kZ-bcc]+-aaaAHqY^=uԉ6\\\=81m4 QE\UTaxx8ػwo5ocIdv\/I .ߑѬQV޽˔:~a됐M930ej,0 ¢H}_t)))fqu zk.U (WJzoĩTRarrr"W_5 4F$111w۷ ȑ#e-RGܹs'_xvӦMEPP;;;>}(N2iO?`0~|[refeeOXXXLENj*&$$7h<}066Lk?R9sd|7odpp+,.(YK(gj0/]ߝ?>cccK{QV+a%JHpppMNvigϞz˖- 4 $IOOO |$R,e5DܰaC=zz&ѼHDr-ZZZeʔ)C???&''7duT}t5 I/wLV󼢛͉Ѹ;wdhhh\xرBk -[R3NNNʗ?όrCeJJ ܹy̾O4 ٫W/jժA*^:s 333/nݺ8s~/ݺu+|Zr%%IkW"++zTTTjܺuv1m4j4HA(lB^_(²h"333;w,Ĝ^'=ǎ3 I;wpL1ܼy3h0C޸q#_"--M̸{I"vY$Sҫnݺ111)))LNN&I\v-322 Fzk(I%ȧp8WLL5kPEjmn|FիWekrW(RSSO?"hŭ|Xv˗3^=(INHH(p-e87|`۶wUpKFo\78?Çn!o!]vezzz$ /}P$9J* 8mZNC`HFFF9 V܊|NÇS.^Q˩LLL,TN ;vN3K@ȫFQQQKXI4ILLVhFxv  02P*'}jݻhاO<͉)p IDAT4 U\Z~~~^kر#`VGm۶ɉ-,,ͅWP$&&rʕttt+Wxʕ`e 6pذaEFFy'&''?s~+W.`NW9sޣ$IԩLpwarɫݘ1c(BI_mPAOOOj4<4h@FCR*_@j=UZNaaaPfdd,a%Ee\=zâ}aկ9ODL¤gOR$|y@^ JmژlY& .E&x{{h4cGHBM:tu,] 6ď?h6w5 ĉ1c L6,m+ BEW^E```}* $RRR`mmَ;W )^x\y @$IeKZ)s}v\t CE.]t~Yz.] "88 ,+0`*UF#SϣWAq!kC 1רQ#kzIGTR)VsNmQ_nmB34c O5Og^~O|<==|MHHȕkё %V0c `0%͛)Ic}5̢-5kG;w-ѣG'N^gF͛7M"Qϟ6hNTDEQNGu]>|جA&|NG;u]]Ajذ!ݻǔG(?~Y"f+VJ> Tb z(]4=zĬ% hbQ2///ڵk8~xYs2Yfyj2'|s*.˹) ;É'ι@ƍMedd@㒝YZz-zI&aʔ)h֬)$ x{{=R={`С~:>cyÇVoe8CRR+W 66 x!ph4@%Tpwmk׆ OiiiP*(UY[[[XYYAEy[HH,--BaRsh4`0@HFS zAaaaJ5j ((jKF߾}{;t׮]æMW_a2eJ_ ж-`m XcĈ8x ֬Y=z !!Pعs'&Nw+ǿτ\zݺuCʕZ˙8x NIxxOk׾[VJY>hܸ 49sfH98d/" i1cPNl޼Yަh\ܽݻS&!FVgׂ~ᇘ9s&x-TH tFll"-8::zBbb" $''CʦsKKKۣZjʔ){{{)SF#DQ$IE* eʔprrBPP]w\~X@=poUqkkj붸ZZiYgmukj[\8P\ A ٗ 3Ay?w];WV:@ػw/Ξ=oa̙8\qtի ޘ<( 4yfOVPY`;s -?̙3&+V@&aܸq8y$̬bsi~~~y~cHKSASCkPлgdXlz;vvv\2\\\ꊪU"** 7n@q8;;7}h4QRHKKCRR޾}gϞlZŊZXmll`cc;;;ֵ0꬚N\ oWȦM;R*„x{{ضm*V[B&`ظql;}tS`k`U֗}(dǹn޼y3OƏ?X(sPիWK, >1=p-=cLTljoFfͰzjZnoo yS7n ap,ZAO=ٺu+L<N7OC=p`;Ê+0rHTq"^++qHq =W̞=3f g-ѣxɊCx,ѹL&3+WIII8Js祺~5{"jl۶uׯG2exqqև@ `ctw) 0Æ Á|r}R4+c_sEprr#ʔ)eё;wbԩ2[5kD*n|5LII5kclܸSNEXXFR.v Crb T\fBFF֭$Cȝ;wкu訨z5R[ψ,ׯeua'B2o^ EoO<3g0bĈWX'+z Wƞ=(:t+,=?A;w.&N= > `.FK.իWcϞ=1bݻ  ** Y$xvرcY+ =#Bl S ]֪x<\xӦMC֭q1ܾtj5ۆ~‚Fa-dtP˖-ƍփcԩSln|cթ}\LP"!!;={cرcXP]T(_<޽|/^ &&/0P(鮏ꀧ.(S 6tݺu+L8ѤH˖-{n4hO<4hh?ߴ~̙3稨(ݺuܹW)'唘HqqqԻwR[:ח"""(55>\jĖ-[ƍQ_,Oo޼I "XUB+jڴI7ݨQN ͛7KU0W9oooAVIйs2+VC\./_ WN^=zEQ,u2M> yի2dJ"WD8ـ_":GDRJNNm۶pH#R(_ѸqhȑC~ǎT\Ӎ7? 5kfKP(dԩSIPg&yz&? .1b)JjӦMޥ]]iР4i^҂;o߂k_zG۶mc?WTlիOۗᰥzEرcMvvvtER$ )00, 4?.[*j+Wlm 6j5}vX(4i?##Lzz:jQ+eڻwob6l@?W҄ ("" :tǷ~K|`;QZZ 4.\jK $8"DD6ـgDt$NO˧1:x`&Hjx1 3fk`&OLr"9вe(==3-PF 0ziy ::}Nwܡ[nSSSi͚5;tzAx6499^|I7HmըYĺV׬Yc֬`J*FIjjLa(KNիWPBB)J #FkגZ-Yu].>>̅g-$_ߛT*("rـ("%"9jܸq;bz 2$>/^wM>dKM4r9 ̭+V4f0Ewݾ}}7R[nfkq%___wX,ŋ[,E `)CC^b;v,eddǏ ]eJIMC'N "[Gr85-ߏKnݺj5Xފn~"##k-[vf͚R1f;L.Ld9w:t(ԩGGG"bts4K?ϐLрfښm.m}G͚5󑖖f4c$P*{ʕ+Ѹqc9r݁R).əDc޽( cG֭ ,ZTIPM6EŊޏK޽*JPjկOH+W*T&%%a̙fÆY|7|\EC4~'+^~CbJfoш r=\˂i6Ub޽h߾mM0ػw/:t `V&HDf"a Z//ѠAL8ѤӧOG pQ޽NNN?>[+67h4ҨXd!rYT*p E ټ,UzVjxj3kf}kg#FeB>Gڵkm6tO|6h4;9(|WloƐ!#1o<9&hR@DD7VW<𚎎87oޔq< ËkvyQV?¢cꫯrѪU+ܹ˦. ,@`ԩ8z(twǗG8p bPU_8fΜ1cƠiӦl?0 D`Ez˾p<<X*Urޝ;!@D(Sm\\\paNr@B`(};nnn,mܹs}-Ԃb$0^V-|Gap%<{ j;wׯ>1-8!O>Ez޼y۵kW-Z1OcZzz:_~atP-/^+ˑh7P(Ĝ9s0uT$"n߾ ],ơY|:8rK«/?qho=:f끿h=RS+A$@f͊6oތ7Bbĉ>|QU*Ѡn]fMp TZոZ$ƍ3KKKԿVe˖2DZcT RimmmP7j(ܼyӦMìY}TŨsg<E?zܺu$?lr%ʕ+U0???.\l5jUfQOF ⯿*־ۇUV 2mv (ڵn]=z5ʕ++Q#.8eX@ANX|%6o GGGt11t@89q?~ӧO͛7Ѯ];b"@T @`TE_2 P0Dh4Zݻ ޏعB>tqqVE\\EƆ%m\ ˗/+tRH7jT`]75kbŊ(_> ([̙3HOOZ`Nqwwfccz(S*8pW|M͍\m۶O_Wt-qVŸ5zCfG8u^|EN)84"DX$w,_ 4ep]p8t$}wp8>}Ν;ѻwo-B]|>yN^?SE%=9{$ s@;;;|yHM5 2 V {{{>Y3h4Z [  1a( lڴ jz/k_yZ%fdd~- /.5sź+k9lٲcccq1HL""zYJ>ccDP`ݺuܖ1* v0 #Æ{`2S7֭:uGfVRNAPfdܻw\.˖-c!Pvmg۷oǔ)S u^[e2|>s;P 5PPRQ,>\.dKj ƍCՋԗ>2fn~hӡ%-rx| = K7@4)d${\]wt&JXJc %ٺu+:t۷wǗB $9s&LgtLeTt[[[f͚>-իW7}||Jոh@VoOBem OPAGꫯн{w297on60&ѡoݺ#Fd* ˙\%@IgU* 8<< K.9,_̑D=ZRvv6-<$"IPbE_% x<*dԱ^^pB?F´i=p{ÇKݚvڕyyyHJJlG/_o-:t)))pssZ;qss' m۶?֖w"f/+J :AAL ЧO|qU0 ݫO[|7X|9"##1tPQE?W.&:uL~ b9(ŋ8p|><<<8EhgjA**,}LaFiN2 \.eؾ!Ck|رc%KeDD#:w'!Kcǎ%v|~~~xGcDP* @ <=X  G8P͛7:t(°02Y ?zB߾}q\jD\v@`{gϞضmR)ƍ١SNf 7Gbp8X3L} Ef@h FFx<O3 c10E|>D"x<Ԩ3%^"E Jr`AE``&daܹg_ƒ؎ʨ#’ҠAU+ AjժhZXS82=f7.^[[=c=V{Uvpphz//cCϟc! KЧOn*XD-Pq `'Mȴ۷p/Idȝ&B_  NT<1F!H]lcnΝOϢY!-2 N @rjj*\n ,qwo|-v@"wSqElٲ~)n8bQ`ooq|O[-LOz,CXXXA X1fHJJBݺu{[^zJ%ߜ5bC8^w,OZB^&bu7˖-/sNj3/_6Op˼ɛV W{@]ܚ`XRX,;޿DE/TjbE^|>;cup!_]v3ccu9dڴAgt.E[_>sx<Śָqc?+WqG#HZm1knPTx`B!x<~wDD"`^hس'y@<..5}4I:&I<_vSB(KdV5SLA֭ޢ=~gt+l͛7aۏB߿Q |sSRSSqB߰aCǮf*4s.20_q +>˖- pYvm___t {A@@@|氎p\HRr8Y+P*^r5 j}[t/!B Zhpdd.D 0,, *4UX_8CH5kӳT$ǜ9sp7ײV_lllP|\_-ݻwaooɓ'wocl^s\#GX-2117HOO/fP0bXI QbO W^i kժ? |\/F3fW^[1;0.˺m?8Q侄B!f~ ZE`RR|>ׯp$%%`pXrxrHN&ũ j ȞJ&DFq0믡jhVhj;o[7@>p8d4T^lllrrٹQ7FjaȐ!8w?nyn1?H#KH$,l޼;wҩS ZfӧΝ;=]TR((9qD)S &Fؽ{7/|嗨R R/Z+"\.Gʕ1a-[~XT*( bY<==akk ݱ:R0 T*j5:;GWb). r0 aÆ DgDBeʔY+x<jժpܽ{ӧOGjj*b1kEӍQ|><9dŨVk޽]6|>eAtMק>Pe>}aÆ]v,ԍUq5ԁ\.^e˖ +­" ʇ+ϟǝ;wйs7iDa=+i03dZ)W 3f V!C0 -Z 22]t^GJJ BB\.\.Rd)2pѷؠbŊٳ'&O]ve P$jWyWT nnnpvvӧOYi8+HZn j֬ WWW8;;a)O4 kS(JHKKCbb"222LsGtD>!$$oܸ-[O>ƯMDGtHBJU2iкu"ǎCAAAl2cD H$Gԭ[ôJUbܹ޽;6loooܺu = in'Ob̗X777PT#뒴=kYrҏ̙3YjYF__|iwC-sj뀣\.L&ckJ%8l`F LHL&xXZ@ ɕp%m۶ŋ.vvpl&UAAfo]vؿ?RRR0rHkרQwޅ5GGXo]._\a)[ժMTB4RTDDt@O&BASL)cɓ'Ӯ]ʕ+#  'O/?~V\I-Z(uץlٲp ޷z<[x1T*R*0 1 CJ T*jVU*2 C 222hi֭ gQ_{BBB(44?NaaaN/^Hz-}^~M~/aÆ Vi޼yy?P=I>ڱcvnG%TJj6olұs!JE@޾}ϗ_~ׯ[UޛL0K,+]*UC ȑ#1tPܹSLyoclڴ)&ONNNH$HJJP(0E2prrBrPBh4x/_JbiB6]F.Ȥ%2upB$^u2ͭ\n]ܼy!!!?>lllXk.9BW[Yg=ظC 3)Dׯ_?n-[W ]d ~'{FwɳI-[FRBA똭-EDD{ > ODDdP}Tnժo̸ŋcǎHJJ*yĉq5",4˷ $+WļySNaVP|ycX:YSݻw#99l>5jժT`֭+x bccbbpqkccp\(J,Xs1y"wޘ0aZljժhDrpqqq]o&OVquuEZZEX2={@;zO|liii?u[Ƌ/> tR={:D Ћ/hI!:uCT*%""LƺJ%T*I"F➭F'PHo.]liɒ|i֌`gGu֥#GL&gόJh9r$1 crKjCPTT0jaJOOh ǏӋ/(&&$ iZR(MW^5kpG{zrh"?T*rʽϚ5k L)):}:hذqcҥy)aÆPvј1cjժdccラ/_&JE֭+T_&F܊> h4ӧXKibEЧ~`kH$ hPm6K666Baaa ҉D"}QժU:Fѽ{aڻwo6 $h…Trejٲ%uޝOSLEQJJə~..t}JII#F۹\3f %%%ӧOL2;tPRTԺuk@0(8vvm>͘1N:E,؋˗/ӁhժU4rHj޼yx<4hmڴ|||(**"~9>I$V%ZMo޼ӧOW_}U }itA:q-[,5u֔@ӧ+z*rrjZw^ZN?NI4iBIIItߗFo&XLIIIe\MZ222(22.ZD‚VGIIIo=SRU6P(d]nڻwoRԹsgݻ7S\\͝;|Ayʕ+$ I(Қ5k4777Z|9ݽ{b1)Jz!͟??c6mD=z4lٽ{(66ѣG?֫ZjsWB:r1 Ct9Zx1uЁ<<< u҅֬YC7o$PH ݻwiРA~δrJgAL&dz-j+S|J?9VU%--mL&O> HZzDԭ[)SH*JsQ G߾}i@tRTK5k4B ;z8HoooR(tb jߠ{&99@@(lOOOJJJ3g~ѽ;jό"~x"i5d@ttY,YB*F{.;*44bbbѣVݻwSFFFqx۷'Zm/իIRsݝmmƍ$Jŋ_-5={6Zh_ޞqqqFO bI,瘿9`s1'5oޜ*Wl~<==)<@j5 07|@SPP*1..RSS*4<~j5EFFioܸ1%E%>[cS8>D"Ĭٳ)==¨|ӳgOH$t=nL>V4U E"Vˋp(x$b Rf@}ZÊJUQr}+U?-_0nI EձK/Ge˖ׯ_Ç^ztb|H?Αe˖M̛<˛ ,JLL .P۷tT*=:={(##jjE2P,S Mh02 6J*rl)ҫW(##-[fQb+$m۶:޸OM ~B{]\\BH׮^9Xx1rrVR &F@@=zȐy^|br߾n:db4@@Vpbjz)MֳZΘ1ڶmk|{L?t-tQ Ece?g=Ҧ<(::ڢҚ5kRBB … IT x.Yj5}Yٽ{B=Ũ=#cǫ<bbbϸ8t\>7mDr9v,SRRYTiSЂ?J 7o @_Y< 6juda)7K.lۊ'xx^ȬӦM$JMM~bs_lEEEZ&>|8 64c F$jZhL Ztaʕfh4?w}GnݺUh)7ׯ_/kEX%\e@w47ԩS-UުKus2Mڵk,5H-:+W\.^zo҃1_Rjj*EFF(=M/ XL+VyԩT*4iR.ę&2W22==(֨s<̣)&$}(""$ ]|Y K Yhт)%%%WK:|6[[[7n6HDW#vww7+eH˖-a\_]]]IT4iB X$RXL1}vd] (igy.^hTG30~Y_T*Ǐ5jժhѢ~:m4* #GΎg?pBCCrsNR̕+WFvޝ\6`Cu+*ANܩ[8,@Zw߁+ܱs%FCg6ɉ믄 A:~f͢T5+1z5JNN.exB6٠A %PHӦ垽kv_ o>.]J'F Д)S lg̙$ϏlA2o^*Ŀ۷)##>l2oQ%Lf9ԔzUV_]@*9|ӧL2IЭ[f2e(""b5kpVcuÊJ/_4rZOAF=~^x;0lX曩Wr9=}Zn]sѣIR:tP6lH!!!$ M 'NG `l,ZΕz0Lt…$JӧԬY3͍Ξ=˖2k\-ZӧI&QBB[2?L׉f{fշ`6j$Ҷ֮]Əogdhh(ݹsxߠAD/^7oRLL ߑJ1VU$""Fa"fh6UdmРAR.UVݸq#1 C׮]+αٳ$ qWV-7O>0 &NЩS ߡC(66b?(==lmmsAjjJzz:zX|iSB_~ż8B.:۷/Z."\PbƤxncM6;kٲ{]:vHk׮5 ONN.K d -[Ү]H"7HTu떳u IOOo@ VZF7zϏQ9{JLL$<֭[G -gvЁ$I UV->)55(p̘1R,w^yҤIDD4vX{nh4򠠠&VUD&ONN.0ۇg0XσNwE2̠t$FeVf9֭Kػ7ڢgRTf۰ad2 %///%lFgYTڵkLj3n8b&)\t9Rtܹ\-}Ї`|22Һ60%bG ӧ&W}n͡ , ZM111(=JZZڎ"SSu@RBt֬YhhƌfmwذaBԢE9?ryq[Šـ˗$hͅ&q-[nP$߿O?L&S'ϒuSTfI2e %$$PJJ [0Oϟ?/Xz',W_}E0 8qы-"ZMcƌ)kHze?4 KBʊayIT5ky{{[d^>$B|+{PORvQH1 J޾}^ze6'LVð[Yߍ[&)p KDphƍ$)&&H`:sLڂQ?O߰arr @ӱcGRoѐ!Ck׮E۷vQv}E;vΝ;SnݨG_P޽_~4`:t(}wE ѣGMfQDb,H9\̥Mo>AÇ7[?|>ŋb >t\#8@|||L'OtxMBV4D*f0zsifH*޽{O!C&dEDDɹױcGwjzjq_j*X!gիd@ns;jڊH"&)С]~FIǎ#@`1!!T*jUѰNRL&#JE9?xflټy31 Sl( nj6pGGGL&;v-ӔB%|U2(p8tqRTCEns锘HqqqS\\ݸqâx")ʤׯ"bϟh6l(BIӼ[t믿H.JdJ92يU`ݹs(...?LDDLϞ=3`vP 0 Hef5OLwZNN~DJΝYfGVuwmxҜ9s$)!!@+Cv WWWO_~4x`:t( 6 {WUpV̽sTfe9JM-+JEMӲ4ImpYuY @6w+9<9糦cڴixw0e曘?~,b֭Xnxɓ+\ޞ={`4^&/kB2e f-ʪ6zrbbbƟHTGU(>DxxY`4qmo!ƍB:v˗yDGGƍx"Ο?s .gϞũS_oQ逾“'O, z$ 233!0 XX,ݻ=Yi_ш"Ǚ=FUqΆ\.ǚ5k*]^BBBBB,NkPY{Tk]q|}}|LVPVEw0+Ǐ#66ZСC8Nw֭T4H$bHVV1g6pED8V\$/^)Uރhıc ?x Fc!H~ ;Y ۵kT BJgUׯ;wIAW_eN"RUH+ "y\\\o߾ ˫WSş8q:|m۶AA,cFe#,35hitrrB˖-k/5kTǗСqe=dd2igʣ8>J/ C ܱcGzQVL[??<'NHf6ʷtbE -.8j7/V!<a13ϬYR\ sN}ݺu8~UYf-6X۶l?I #͙b~|G%:s-[ PT_576l1113fL>g *ܽ{˲ʒAPRVh̳o) ۶m FǏc׮]y,ҥK5۷2JiiiUg`8S.)) UUdl耷Dp | ]VkMKMM ϕK/Xt:_/ ƍa4G#9VLC ALL Fc=͓J94;teK݁dž  `0_fKݻ`Yؽ{7-ftP(Bf>*|۷oz^n #TEˋ`-th۶Y޽{E.~z,j `Yp-Z] V9;/1>&[]ߵA`` Zmq~L4d"mTz=*=j~zU]o@=TܹӐaÑ#G`)/"mjdzz:Y IDATb9r$^ p޽XuڋVˡL&Çmovڅh4"''//^l\|spHIID"pζxZ"GP3mNEIFžcԨQÇ˽Kkl׮BCC,mV ̥KHkcRZҥKK\X;NT% VYu[m{+Za\JldffB.aNCxx8|}}ѩSb˸yfBRu.W,N5khc;N~|e؀3m`OÑ8V~%pB?/>#"&Tǹs<?[[[ܻwaaa Ņe5nݺst8qb}[n`0<]9ՙbc Ht$@P 66ǎþ}~z|GhݺuX~=AsgJo>|8>}2ҴCqnݺ[uЯ_Zt'nذ?(scƌR^v`3p֬Yf˖-F\Ѕ B$'']RDÆ k]'tRJ$;vs[*$ bqt邐, ??? yҹsgܹ#Fs,Ç8޽L燅!33ާH+ +j֭[^NtZ'k:ѸqcDGG8$&&bȐ!#}…PՇdWFڪ|gL +dZZΜ9SBxxx ̙3V"N6 )))PTXrUݻW([h3r„ h?oVX[~7oެT;vVWuyu֭ZƓ'OkVCl5k0|xͭ4kH@nnn叡F/[mxAp3g)h4t } N4V=n]\\* 7o.зo_8p/Bh %|dcZ===RP(4R*oD'O0ёJ1h 2d+VBJ$44L:ԫWhZwڵE$11|'uM.HիWk@yzxx*m 6ĦReD"bccClllH$c숣#qvv&...ŅLCy'&|y,[=zԪǭ^':xzzVHhh(yIޱH2gb2*T&tbj| !OrlI#i$$tM8#Ĵ4rieّA۷o('ׯObqxw !lذqggg"1 f6m "o6ɱtuu%͛7'W_%#nnn~-O@qrr"NNNyŠ]mkkKlmm E@L&SD"²lo3} ; q,$Gy',d"H${Z6˻W:gImKDj5#۷o'7&۶m걫h[@; ''B ЁA9rBń_EqE/էO*õklmllފ2ّ-I"I3mZL$LVrڵkGIlll]v%DJߨQ#_QFDKp]/`P} D\A-Rb25ʻ yq8.\) _P˭}Z-IAd"W#Jbϵcn xo2qy¡^'F,KX% aڦqyFb0 {aHFFi߾=9x 駟HV? 4lHpI X5nJ Q6mBXPh3ɩ?S鲺nd BVU$88Qo^zԫW;"9iGd߾}ݺ???ҵkWr)M Cp_/lmmԊR1_@B ` T*hV#JH$i:u*5`DFF1cƐ#Ge˖ۓٳgeYT*iӦMߤIkÇj}0`5ƢZZ;ZDFFW^yBȷtFӧVv(/_Aʔb$n۶ z>aÆ!55O:uB˖n;Nu:ݡP^=h}qp99⟥QFϑ#G]d`tspعs'<<<,]{~0L࿸s玣Pj[ՋBBCi{T=z jҎy뭷#={$<ϓWX}Y^|9'|BttD 9Jv/ >>> 2Hlmme...,@! H w {-뵰ǩH$"FU4aY֭$ Ds3sz=h4%EC222˲9]tLRRRHZZ"YYYBpp"BD^^^ڵslҤiӦ$?6lH4h@\]]󼍍Fm|||F q[lӦZ*r}]p!.'O oڴo=ɏ?H-]v%QQQd֭䫯˪u}IXXMdҥd۶meW9r$qF?~<6mYx1QՄB\+K{ QZQ;11q /Eo >}z/\kVX^Lv͛.TLnڵV&/^Ĉ#rO?G"BBp?Ǐ_e6uŦLNNRi$<W޽o׹ԩSF㓐(-GF)U^%i0dTHI$5 èsrr?ٟ6mZp-1ǎ rp653̙ f98hȎrW}/qqqxA֬iQ& BV-XCKhl$٪U+HR\pղeKdggիEpBt:;eYc```Z7rV^{J?t:}TtD"J:N!b^5L0Lh4 @Q `#kZ̟?c 5X?>8֭[WAؼy3mJSNP*?֪.|oѢE8h@QWʼn\aàRpe똫FYٕAxɒ2. J:nUm4͍^][V;wwwbh=Q.!;;hT߽{رa5VLZ@K`gg;oR zg9\(2 o7;֬Hp;v <+RRRܭz@g&͛Tjn@~}էyޘ؅uTqwܹj億ř%,Ѹqyjҋ[H}0'i]'uZNc ^^yJfUfBIRaСTj_qƌF\u۷Zg}?!sZ_P ʕ e$ak R(KÇ!00U⸸.<3=6mڠQFtRVCCC\@AwW,+WV8 D"Avd-t~ۃL^:vLZǯHӝMIIuѣGGt`QV W K?!bXRT*L-ܜ0az}8&Mرc^}]˗[^[ hiHl;w V5x322|^ݻwDJrG399:.ʕ+tɧ(؎Im\Jϟ*aan^_apQ888`ՐJx)̙S |I]޽;Qv•+Wy$''{[ŀJ 3Bi>>ז͛`Ft(836>Ozx{{[|Ҽys,Zl0 _ 6tPDDD@pvvܶYO?źu`WȉÜ`xnk5220Y ٻwԩ(۷C>##uSP-˲AkҤI:@*ʕ+ur~ڵkF#֭[WFZZeQnm*}iӦh4B&-A^VW^`رcX(ʅ `0@&mK;E鈈i4 oF݊+ʥڷo ƌS槹s`0ԭǏ`^ 9@ccc[p=zU7c^*"'''jՊv@JqȐ!ʂNuV{SP O>u{,h4c98 ~T[uCӓv:JQQQ0qqqMNAQ>Pb%߫"`0Ъ]/iڄwžƶj75kh0 ])(ݫV86mJr0$$%d<3gV(Sƍ$$''#<<>>>UF@,|(n޼ O>[N&}Ȳ,MFIYDtpV*LAQI$ETF:;@zO}x޵k ˵٣GA"h4"22gΜɓ'eq t[lŋX`}Gt}w܁`H qv7јvӠ4lH;e䄛7o8Ç'Bwߑztyz>Ry!\(9̛7Ġ gر#P(Rpi7oeP(#" )))8NvpP(P*mIү͑(R&:;;ڵkyޘ>1w|5iFe åKrjDT}||`0вeXF1IJ?"++ jw (ÇK/=|uV0 ]v4L y>?瑕Zz Hϟ?_6lER~kGЩS D0p`tss1;;{"])(jqqq} -eqEӇ΁yJիW1|b}뭷D}z v!d24iҤ?Czn5xOƕ+WyL3 Yth - ϋ2:wѿ0 PTҜJAaXfCjjy`?gkku%~g0 |5jƍ0( 8`ҥe1k,HRǣ9&%%ڵk%oAVӳnEaң+ :))i 5uhѢL*6m￯;V^#VD7%M1n8|'㏑ rCP`H[@@bqNNNĉ'֮]N:ѵ bxxAbbbWAuUU5i͚ؔwy'7%QfJJH,RP-d!N<~hݺu3pϛ0ṝDFxyy4k50 zΝ; `ܹt @h 'NW+ʽp>دC_f T*z}Խ{:ѥۢ$Bo9ɓBz@D"={h4" ͛7/\deeοmz9ٙa̙30 $AAAMxW8p6f);v,&NHۢsqP###GAAVr|hL8Xzu3f˲4d"ϛ={60 >\+V{֭Ѽysdgg)+σeYÇK$Z-zUCmki0{l KFFXUgggϮ:V7neffjo dddϯ|N#ӧOa>}o<==`er=ud2Yv|ׯ0tc߿? rrrc?^d0h#ְÉȋEG˲h4卂T*wrjrJ]C&AhZjpe73O>PT+X ܿ?x%''{3?|pdŋidH!ag.m*ѣsr2l ](((*FrK^47ްyI&?>6mڄ-[`ٲe0`@:RYV  xq/_nm7|jѴn:ηLXlNOOj5i+=˗/GNNILLLD/ s`Ϟ=Nd^O38w\jvZj$͛C"̙3w-^ |蠝;wB}ZZZ;'z}SP?~<,YBtuuűc,T*Չtɢ07Ξ=뜓aeNNlR;GnnÆ?[ilذF%7i$Flٲۗ>>>bklݺ{;waf{^[b~%ƒx^'&:h4%vԱ мٳg㧟~,,q:nWRR(k.] T aDAAQHIIyI?0 8z(6mZs{5ϳѦMjl߾3'c׮]yǜ Dyw^B˗/c%X)4h{{{wq=p+WTiOby{ F/˲ÇSةS'xxxжTx0tܹӄ.E5(;\-'O`… =߾-XYrr;ą bBT:N@jx \vv7TKAAQ~ONwa:u oY,w\./yeJ< ;wFAFF~ e ٷo  Vd><#55usRV7df[[ELsRPPX9"R(rKNNƂ jr%ŕx_sŨQ\}ʍcǎǍ7 _d1d rMOHHZ>R#޾}ە8u)Z(Ke߾}i;XHKZ}=..΃.5z>a=z.%ݵ6޽{%]8Ĉ_|d2駟> FZ)3g VGAL&<~92 ^v&aسg8SuF#^~e*@PZ-_z%8A&wT*:w)Sh4_3kett4T*yB!wirH<|Z֭+} reform@reform:~$ reform@reform: ~ reform@reform:~$ reform@reform: ~ reform@reform:~$ reform@reform: ~ mnt-reform-setup-wizard-1.0/gfx/setup-wizard-wayfire.svg000066400000000000000000000311141461620463100235060ustar00rootroot00000000000000 mnt-reform-setup-wizard-1.0/reform-setup-sway-config000066400000000000000000000034341461620463100227020ustar00rootroot00000000000000# SPDX-License-Identifier: GPL-3.0+ # Copyright 2024 MNT Research GmbH # # This is a special configuration file for sway so we can # use sway as a minimal compositor for running the # MNT Reform Setup Wizard (a GTK4 application). # We use sway as it ships with Reform and is much more # customizable than cage, while still being lightweight. # # import variables into system-user enviroment # based on the instructions in the sway wiki # see also https://github.com/swaywm/sway/issues/5732 # and https://github.com/systemd/systemd/blob/dfc637d0ff756889e8e5b7cb4ec991eb06069aa1/xorg/50-systemd-user.sh exec systemctl --user import-environment DISPLAY WAYLAND_DISPLAY SWAYSOCK exec hash dbus-update-activation-environment 2>/dev/null && \ dbus-update-activation-environment --systemd DISPLAY WAYLAND_DISPLAY SWAYSOCK # emergency/debug terminal set $mod Mod4 bindsym $mod+Return exec foot # reload the configuration file bindsym $mod+Shift+c reload # workaround for RK3588, to be removed output HDMI-A-2 disable # display config for MNT Pocket Reform output DSI-1 transform 270 output DSI-1 scale 2 # background image exec swaybg -i /usr/share/backgrounds/reform-mountains.jpg # start gnome xsettings daemon exec /usr/libexec/gsd-xsettings # default theme settings exec gsettings set org.gnome.desktop.interface icon-theme 'Papirus-Dark' exec gsettings set org.gnome.desktop.interface font-name 'Inter Medium 11' exec gsettings set org.gnome.desktop.interface monospace-font-name 'Iosevka Term 11' exec gsettings set org.gnome.desktop.interface gtk-theme 'Adwaita-dark' exec gsettings set org.gnome.desktop.interface color-scheme 'prefer-dark' # remove sway's decorations default_border pixel 0 hide_edge_borders both # ADW_DISABLE_PORTAL so that dark theme works exec ADW_DISABLE_PORTAL=1 reform-setup mnt-reform-setup-wizard-1.0/src/000077500000000000000000000000001461620463100166665ustar00rootroot00000000000000mnt-reform-setup-wizard-1.0/src/main.rs000066400000000000000000000760001461620463100201630ustar00rootroot00000000000000use adw::prelude::*; use gtk::{glib, ApplicationWindow, Stack, StackSidebar, StackPage, Box, Button, Label, DropDown, StringList, Entry, PasswordEntry, CheckButton, Image, Picture}; use adw::{Application, NavigationSplitView, NavigationPage, HeaderBar, ToolbarView}; use gtk::gdk; use crate::glib::clone; use std::process::Command; use regex::Regex; use quick_xml::reader::Reader as XmlReader; use quick_xml::events::Event as XmlEvent; use std::collections::HashMap; use std::io::Write; use pwhash::bcrypt; use std::cell::RefCell; use std::rc::Rc; use std::io::BufRead; use std::fs; const APP_ID: &str = "com.mntre.reform-setup"; const MARGIN: i32 = 48; const DESKTOP_IMG_WIDTH: i32 = 392/2; const DESKTOP_IMG_HEIGHT: i32 = 278/2; const WELCOME_IMG_WIDTH: i32 = 640/2; const WELCOME_IMG_HEIGHT: i32 = 534/2; const CSS_CLASS_TITLE: &str = "title-3"; const PATH_ETC_DEFAULT_KEYBOARD: &str = "/etc/default/keyboard"; const TEMPLATE_ETC_DEFAULT_KEYBOARD: &str = r#"# KEYBOARD CONFIGURATION FILE # Consult the keyboard(5) manual page. XKBMODEL="pc105" XKBLAYOUT="${LAYOUT}" XKBVARIANT="${VARIANT}" XKBOPTIONS="" BACKSPACE="guess" "#; const PATH_ETC_HOSTNAME: &str = "/etc/hostname"; const PATH_ETC_HOSTS: &str = "/etc/hosts"; const TEMPLATE_ETC_HOSTS: &str = r#"127.0.0.1 localhost ${HOSTNAME} ::1 localhost ip6-localhost ip6-loopback ${HOSTNAME} "#; const DESKTOP_BINARIES : [&str; 2] = [ "sway", "wayfire" ]; const PATH_ETC_GREETD_CONFIG: &str = "/etc/greetd/config.toml"; const TEMPLATE_ETC_GREETD_CONFIG: &str = r#"[terminal] # The VT to run the greeter on. Can be "next", "current" or a number # designating the VT. vt = 7 # The default session, also known as the greeter. [default_session] command = "/usr/bin/tuigreet --window-padding 4 --remember --asterisks --cmd /usr/bin/${DESKTOP}" # The user to run the command as. The privileges this user must have depends # on the greeter. A graphical greeter may for example require the user to be # in the `video` group. user = "_greetd" "#; const PATH_SKEL_SWAY_INPUT : &str = "/etc/skel/.config/sway/config.d/input"; const TEMPLATE_SKEL_SWAY_INPUT: &str = r#"# change to de if you have a QWERTZ keyboard, for example input * { xkb_layout ${LAYOUT} xkb_variant "${VARIANT}" xkb_options lv3:ralt_switch } "#; const PATH_SKEL_WAYFIRE_INI: &str = "/etc/skel/.config/wayfire.ini"; const PATH_CLEANUP_SCRIPTS: &str = "/usr/share/reform-setup-wizard/cleanup.d"; // see also: // - https://martinber.github.io/gtk-rs.github.io/docs-src/tutorial/closures // - https://docs.rs/libadwaita/latest/libadwaita // - https://gtk-rs.org/gtk4-rs/stable/latest/docs/gtk4/ // - https://kerkour.com/rust-cross-compilation fn valid_password(pw: &str) -> bool { return pw.len() > 0 } fn valid_hostname(hostname: &str) -> bool { let regex = Regex::new(r"^[a-z0-9][a-z0-9-]*$").unwrap(); return hostname.len() > 1 && hostname.len() < 64 && regex.is_match(hostname); } fn valid_username(name: &str) -> bool { // as per https://systemd.io/USER_NAMES/#common-core return Regex::new(r"^[a-z][a-z0-9-]{0,30}$").unwrap().is_match(name) } fn run_command(description: &str, executable: &str, params: Vec<&str>) -> Result { println!("STEP: {}", &description); return match Command::new(&executable).args(¶ms).output() { Ok(output) => { let stderr = match String::from_utf8(output.stderr.clone()) { Ok(s) => s, _ => return Err(format!("Error: {}: {} {:?}: failed to parse utf8 output: {:?}", description, executable, params, &output.stderr)) }; let stdout = match String::from_utf8(output.stdout.clone()) { Ok(s) => s, _ => return Err(format!("Error: {}: {} {:?}: failed to parse utf8 output: {:?}", description, executable, params, &output.stdout)) }; println!("STATUS: {:?}", output.status.code()); println!("STDOUT: {}", &stdout); println!("STDERR: {}", &stderr); match output.status.code() { Some(c) if c == 0 => Ok("".to_string()), _ => Err(format!("Error: {}: {} {:?}: {}", description, executable, params, &stderr)) } }, Err(e) => Err(format!("Error: {}: {} {:?}: {}", description, executable, params, e)) }; } fn set_password(description: &str, pw: &str, username: &str) -> Result<(), String> { let digest = match bcrypt::hash(&pw) { Ok(v) => v.to_string(), Err(e) => return Err(format!("Error: Password not hashable: {}", e).to_string()) }; run_command(description, "usermod", ["--password", &digest as &str, username].to_vec())?; Ok(()) } fn write_file(path: &str, content: &str) -> Result<(),String> { match std::path::Path::new(path).parent() { Some(p) => match std::fs::create_dir_all(p) { Ok(_) => (), Err(e) => return Err(format!("Error ensuring {}: {}", path, e)) }, _ => () }; match std::fs::File::create(path) { Ok(mut f) => { match f.write_all(content.as_bytes()) { Ok(_) => Ok(println!("{} successfully written.", path)), Err(e) => Err(format!("Error writing {}: {}", path, e)) } }, Err(e) => Err(format!("Error opening {} for writing: {}", path, e)) } } fn main() -> glib::ExitCode { let app = Application::builder().application_id(APP_ID).build(); app.connect_activate(build_ui); app.run() } fn build_box() -> Box { return Box::builder() .orientation(gtk::Orientation::Vertical) .margin_top(MARGIN) .margin_bottom(MARGIN) .margin_start(MARGIN) .margin_end(MARGIN) .spacing(MARGIN/2) .valign(gtk::Align::Center) .build(); } fn get_device_model() -> String { match fs::read_to_string("/proc/device-tree/model") { Ok(s) => s, Err(_) => "Unknown Device".to_string() } } fn is_pocket_reform() -> bool { get_device_model().contains("MNT Pocket Reform") } fn build_welcome_page(stack: &Stack) -> StackPage { let is_pref = is_pocket_reform(); let img_pocket = png_picture_from_bytes(include_bytes!("../gfx/pocket-reform-magic.png")); img_pocket.set_size_request(WELCOME_IMG_WIDTH, WELCOME_IMG_HEIGHT); let img_reform = png_picture_from_bytes(include_bytes!("../gfx/mnt-reform.png")); img_pocket.set_size_request(WELCOME_IMG_WIDTH, WELCOME_IMG_HEIGHT); let button_next = Button::builder().label("Get Started").build(); button_next.add_css_class("suggested-action"); button_next.add_css_class("pill"); let page_box = build_box(); //page_box.set_spacing(0); let welcome_label = if is_pref { Label::new(Some("Welcome to MNT Pocket Reform")) } else { Label::new(Some("Welcome to MNT Reform")) }; welcome_label.add_css_class(CSS_CLASS_TITLE); if is_pref { page_box.append(&img_pocket); } else { page_box.append(&img_reform); } page_box.append(&welcome_label); page_box.append(&button_next); button_next.connect_clicked( clone!(@weak stack => move |_| { stack.set_visible_child_full("keyboard", gtk::StackTransitionType::SlideLeft); }) ); return stack.add_titled(&page_box, Some("welcome"), "Welcome"); } #[derive(Clone)] struct XkbVariant { layout: String, variant: String, } fn parse_keyboard_layout_file(file_path: &str) -> HashMap { let mut layouts = HashMap::::new(); let mut reader = XmlReader::from_file(file_path).unwrap(); let mut in_layout_list = false; let mut in_config_item = false; let mut in_name = false; let mut in_description = false; let mut in_variant = false; let mut variant = String::new(); let mut layout = String::new(); let mut description = String::new(); let mut buf = Vec::new(); loop { match reader.read_event_into(&mut buf) { Err(e) => panic!("Error at position {}: {:?}", reader.buffer_position(), e), Ok(XmlEvent::Eof) => break, Ok(XmlEvent::Start(e)) => { match e.name().as_ref() { b"layoutList" => in_layout_list = true, b"configItem" => in_config_item = true, b"name" => in_name = true, b"description" => in_description = true, b"variant" => in_variant = true, _ => () } }, Ok(XmlEvent::End(e)) => { match e.name().as_ref() { b"layoutList" => in_layout_list = false, b"layout" => { layout = "".to_string(); }, b"configItem" => { description = "".to_string(); variant = "".to_string(); in_config_item = false; }, b"name" => in_name = false, b"description" => in_description = false, b"variant" => in_variant = false, _ => () }; }, Ok(XmlEvent::Text(e)) if in_layout_list && in_config_item => { let val = e.unescape().unwrap().clone(); if in_name { if in_variant { variant = val.to_string(); } else { layout = val.to_string(); } } else if in_description { description = val.to_string(); } if !layout.is_empty() && !description.is_empty() { layouts.entry(description.to_string()).or_insert(XkbVariant { layout: layout.to_string(), variant: variant.to_string() }); } }, _ => () } buf.clear(); } return layouts; } fn build_keyboard_page(stack: &Stack) -> StackPage { let button_next = Button::builder().label("Next").build(); button_next.add_css_class("suggested-action"); button_next.add_css_class("pill"); let page_box = build_box(); let mut layouts_map = parse_keyboard_layout_file("/usr/share/X11/xkb/rules/base.xml"); layouts_map.extend(parse_keyboard_layout_file("/usr/share/X11/xkb/rules/base.extras.xml")); layouts_map.retain(|_, v| v.layout != "custom"); let mut dropdown_pairs: Vec<(String, XkbVariant)> = layouts_map.into_iter().collect(); dropdown_pairs.sort_by(|a, b| a.0.cmp(&b.0)); let layout_keys: StringList = dropdown_pairs.iter().map(|(k, _)| k.clone()).collect(); let layout_vals: Vec = dropdown_pairs.iter().map(|(_, v)| v.clone()).collect(); let dropdown = DropDown::builder() .model(&layout_keys) .enable_search(true) .build(); let search_exp = gtk::PropertyExpression::new(gtk::StringObject::static_type(), None::, "string"); dropdown.set_expression(Some(search_exp)); dropdown.set_search_match_mode(gtk::StringFilterMatchMode::Substring); let default_index = layout_vals.iter().position(|v| v.layout == "eu" && v.variant == "").unwrap(); dropdown.set_selected(default_index as u32); let layout_label = &Label::new(Some("Please select your keyboard layout:")); layout_label.add_css_class(CSS_CLASS_TITLE); page_box.append(layout_label); page_box.append(&dropdown); let error_label = Label::new(None); error_label.add_css_class("error"); error_label.set_selectable(true); error_label.set_wrap(true); page_box.append(&error_label); page_box.append(&button_next); button_next.connect_clicked( clone!(@weak stack => move |_| { // TODO: find out to what degree this actually sets the keyboard layout let layout: &XkbVariant = &layout_vals[dropdown.selected() as usize]; println!("Selected keyboard layout: {:?} variant: {:?}", &layout.layout, &layout.variant); // normally, the Setup Wizard runs under sway. // so we immediately apply the keyboard layout here. let _ = run_command("apply keyboard layout in running sway session", "swaymsg", ["input", "*", "xkb_layout", format!("\"{}\"", &layout.layout).as_str()].to_vec()); let _ = run_command("apply keyboard layout variant in running sway session", "swaymsg", ["input", "*", "xkb_variant", format!("\"{}\"", &layout.variant).as_str()].to_vec()); let new_default = TEMPLATE_ETC_DEFAULT_KEYBOARD.replace("${LAYOUT}", &layout.layout).replace("${VARIANT}", &layout.variant); match write_file(PATH_ETC_DEFAULT_KEYBOARD, &new_default) { Ok(_) => (), Err(e) => { error_label.set_label(&e); return; } } let new_sway_input = TEMPLATE_SKEL_SWAY_INPUT.replace("${LAYOUT}", &layout.layout).replace("${VARIANT}", &layout.variant); match write_file(PATH_SKEL_SWAY_INPUT, &new_sway_input) { Ok(_) => (), Err(e) => { error_label.set_label(&e); return; } } match run_command("write xkb_layout into wayfire.ini", "sh", ["-c", &format!("sed -i -E 's/^xkb_layout ?=.*$/xkb_layout = {}/g' {}", &layout.layout, PATH_SKEL_WAYFIRE_INI)].to_vec()) { Ok(_) => (), Err(e) => { error_label.set_label(&e); return } }; match run_command("write xkb_variant into wayfire.ini", "sh", ["-c", &format!("sed -i -E 's/^xkb_variant ?=.*$/xkb_variant = {}/g' {}", &layout.variant, PATH_SKEL_WAYFIRE_INI)].to_vec()) { Ok(_) => (), Err(e) => { error_label.set_label(&e); return } }; stack.set_visible_child_full("time", gtk::StackTransitionType::SlideLeft); }) ); return stack.add_titled(&page_box, Some("keyboard"), "Keyboard Layout"); } fn build_time_page(stack: &Stack) -> StackPage { let button_next = Button::builder().label("Next").build(); button_next.add_css_class("suggested-action"); button_next.add_css_class("pill"); let page_box = build_box(); // let output = String::from_utf8(Command::new("timedatectl") // .args(["list-timezones"]) // .output() // .expect("failed to execute timedatectl").stdout) // .expect("failed to parse utf8 output of timedatectl"); // NB: above wouldn't run easily within chroot, so for now let's use this let output = String::from_utf8(Command::new("sh") .args(["-c", "awk '/^Z/ { print $2 }; /^L/ { print $3 }' /usr/share/zoneinfo/tzdata.zi | sort"]) .output() .expect("failed to collect timezones").stdout) .expect("failed to parse utf8 output of awk"); let lines:Vec<&str> = output.lines().collect(); let list = StringList::new(&lines); let dropdown = DropDown::builder() .model(&list) .enable_search(true) .build(); let search_exp = gtk::PropertyExpression::new(gtk::StringObject::static_type(), None::, "string"); dropdown.set_expression(Some(search_exp)); dropdown.set_search_match_mode(gtk::StringFilterMatchMode::Substring); let default_index = lines.iter().position(|v| v == &"Europe/Berlin").unwrap(); dropdown.set_selected(default_index as u32); let tz_label = &Label::new(Some("Please choose your timezone:")); tz_label.add_css_class(CSS_CLASS_TITLE); page_box.append(tz_label); page_box.append(&dropdown); let error_label = Label::new(None); error_label.add_css_class("error"); error_label.set_selectable(true); error_label.set_wrap(true); page_box.append(&error_label); page_box.append(&button_next); button_next.connect_clicked( clone!(@weak stack => move |_| { let tz = match list.string(dropdown.selected()) { Some(s) => s, _ => { error_label.set_label("no timezone in dropdown for selection"); return } }; match run_command("set timezone", "sh", ["-c", &format!("echo '{}' > /etc/timezone", tz)].to_vec()) { Ok(_) => (), Err(e) => { error_label.set_label(&e); return } }; match run_command("set localtime", "ln", ["-sf", &format!("/usr/share/zoneinfo/{}", tz), "/etc/localtime"].to_vec()) { Ok(_) => (), Err(e) => { error_label.set_label(&e); return } }; match std::env::var("CHROOT_MODE") { Ok(_) => (), _ => match run_command("set timezone", "timedatectl", ["set-timezone", &tz].to_vec()) { Ok(_) => (), Err(e) => { error_label.set_label(&e); return } } }; stack.set_visible_child_full("desktop", gtk::StackTransitionType::SlideLeft); }) ); return stack.add_titled(&page_box, Some("time"), "Time"); } fn svg_image_from_bytes(bytes: &[u8]) -> Image { let loader = gdk_pixbuf::PixbufLoader::with_type("svg").unwrap(); loader.write(bytes).unwrap(); loader.close().unwrap(); let pixbuf = loader.pixbuf().unwrap(); return gtk::Image::from_paintable(Some(&gdk::Texture::for_pixbuf(&pixbuf))); } fn png_picture_from_bytes(bytes: &[u8]) -> Picture { let loader = gdk_pixbuf::PixbufLoader::with_type("png").unwrap(); loader.write(bytes).unwrap(); loader.close().unwrap(); let pixbuf = loader.pixbuf().unwrap(); //return gtk::Picture::from_paintable(Some(&gdk::Texture::for_pixbuf(&pixbuf))); return gtk::Picture::for_paintable(&gdk::Texture::for_pixbuf(&pixbuf)); } fn build_desktop_page(stack: &Stack, desktop_index: Rc>) -> StackPage { let button_next = Button::builder().label("Next").build(); button_next.add_css_class("suggested-action"); button_next.add_css_class("pill"); let page_box = build_box(); let choice_sway = CheckButton::builder().label("Sway (Tiling)").build(); let choice_wayfire = CheckButton::builder().label("Wayfire (Traditional)").build(); choice_wayfire.set_group(Some(&choice_sway)); choice_wayfire.set_active(true); let sway_box = Box::builder() .orientation(gtk::Orientation::Horizontal) .valign(gtk::Align::Center) .build(); let img_sway = svg_image_from_bytes(include_bytes!("../gfx/setup-wizard-sway.svg")); img_sway.set_size_request(DESKTOP_IMG_WIDTH, DESKTOP_IMG_HEIGHT); sway_box.append(&img_sway); let label_sway = &Label::new(Some("Sway: A tiling desktop with a strong focus on keyboard shortcuts, for advanced users.")); label_sway.set_use_markup(true); label_sway.set_wrap(true); label_sway.set_hexpand(true); label_sway.set_xalign(0.0); sway_box.append(label_sway); choice_sway.set_child(Some(&sway_box)); let wayfire_box = Box::builder() .orientation(gtk::Orientation::Horizontal) .valign(gtk::Align::Center) .build(); let img_wayfire = svg_image_from_bytes(include_bytes!("../gfx/setup-wizard-wayfire.svg")); img_wayfire.set_size_request(DESKTOP_IMG_WIDTH, DESKTOP_IMG_HEIGHT); wayfire_box.append(&img_wayfire); let label_wayfire = &Label::new(Some("Wayfire: A more traditional desktop with overlapping windows, suitable for beginners.")); label_wayfire.set_use_markup(true); label_wayfire.set_wrap(true); label_wayfire.set_hexpand(true); label_wayfire.set_xalign(0.0); wayfire_box.append(label_wayfire); choice_wayfire.set_child(Some(&wayfire_box)); let desktop_label = &Label::new(Some("Please select your preferred desktop:")); desktop_label.add_css_class(CSS_CLASS_TITLE); page_box.append(desktop_label); page_box.append(&choice_wayfire); page_box.append(&choice_sway); let error_label = Label::new(None); error_label.add_css_class("error"); error_label.set_selectable(true); error_label.set_wrap(true); page_box.append(&error_label); page_box.append(&button_next); button_next.connect_clicked( clone!(@weak stack => move |_| { let mut index = desktop_index.borrow_mut(); *index = choice_wayfire.is_active() as usize; stack.set_visible_child_full("root-password", gtk::StackTransitionType::SlideLeft); }) ); return stack.add_titled(&page_box, Some("desktop"), "Desktop"); } fn build_root_pw_page(stack: &Stack) -> StackPage { let button_next = Button::builder().label("Next").build(); button_next.add_css_class("suggested-action"); button_next.add_css_class("pill"); let page_box = build_box(); let pw_entry = PasswordEntry::builder().build(); let pw_entry_rep = PasswordEntry::builder().build(); let pw_label = &Label::new(Some("Please choose a password for the root account:")); pw_label.add_css_class(CSS_CLASS_TITLE); pw_label.set_wrap(true); let instr_label = &Label::new(Some("The root (superuser) account can modify anything in the system. Use a strong password.")); instr_label.set_wrap(true); page_box.append(pw_label); page_box.append(&pw_entry); let pw_rep_label = &Label::new(Some("And repeat it for safety:")); pw_rep_label.add_css_class(CSS_CLASS_TITLE); page_box.append(pw_rep_label); page_box.append(&pw_entry_rep); let error_label = Label::new(None); error_label.add_css_class("error"); error_label.set_selectable(true); error_label.set_wrap(true); page_box.append(instr_label); page_box.append(&error_label); page_box.append(&button_next); button_next.connect_clicked( clone!(@weak stack => move |_| { let pw = pw_entry.text(); let pw_retry = pw_entry_rep.text(); if pw != pw_retry { error_label.set_label("Error: Passwords don't match."); return; } else if !valid_password(&pw) { error_label.set_label(&format!("Error: Password must have at least one character.")); return; } match set_password("set root pw", &pw, "root") { Ok(_) => (), Err(e) => { error_label.set_label(&format!("Error: Cannot set password: {}", e)); return } }; stack.set_visible_child_full("hostname", gtk::StackTransitionType::SlideLeft); }) ); return stack.add_titled(&page_box, Some("root-password"), "Root Password"); } fn build_hostname_page(stack: &Stack) -> StackPage { let button_next = Button::builder().label("Next").build(); button_next.add_css_class("suggested-action"); button_next.add_css_class("pill"); let page_box = build_box(); let hostname_entry = Entry::builder().build(); let hostname_label = &Label::new(Some("Please give this computer a name:")); hostname_label.add_css_class(CSS_CLASS_TITLE); hostname_label.set_wrap(true); let instr_label = &Label::new(Some("Lower-case characters only.")); instr_label.set_wrap(true); page_box.append(hostname_label); page_box.append(&hostname_entry); let error_label = Label::new(None); error_label.add_css_class("error"); error_label.set_selectable(true); error_label.set_wrap(true); page_box.append(instr_label); page_box.append(&error_label); page_box.append(&button_next); button_next.connect_clicked( clone!(@weak stack => move |_| { let hostname = hostname_entry.text(); if !valid_hostname(&hostname) { error_label.set_label("Error: Invalid hostname format."); return; } match write_file(PATH_ETC_HOSTNAME, &hostname) { Ok(_) => (), Err(e) => { error_label.set_label(&format!("Error: Cannot write {}: {}", PATH_ETC_HOSTNAME, e)); return } }; let head_hosts = TEMPLATE_ETC_HOSTS.replace("${HOSTNAME}", &hostname); let hosts_file = match std::fs::File::open(PATH_ETC_HOSTS) { Ok(f) => f, Err(e) => { error_label.set_label(&format!("Error: Cannot write {}: {}", PATH_ETC_HOSTNAME, e)); return } }; let reader = std::io::BufReader::new(hosts_file); let tail_hosts = match reader.lines().skip(2). map(|result| result.map(|line| line + "\n")). collect::>() { Ok(s) => s, Err(e) => { error_label.set_label(&format!("Error: Cannot properly read {}: {}", PATH_ETC_HOSTNAME, e)); return } }; let to_join = [head_hosts, tail_hosts]; match write_file(PATH_ETC_HOSTS, &to_join.join("\n")) { Ok(_) => (), Err(e) => { error_label.set_label(&format!("Error: Cannot update {}: {}", PATH_ETC_HOSTS, e)); return } } match run_command("run hostname", "hostname", ["--file", PATH_ETC_HOSTNAME].to_vec()) { Ok(_) => (), Err(e) => { error_label.set_label(&e); return } }; stack.set_visible_child_full("account", gtk::StackTransitionType::SlideLeft); }) ); return stack.add_titled(&page_box, Some("hostname"), "Computer Name"); } fn build_account_page(stack: &Stack, desktop_index: Rc>, window: &ApplicationWindow) -> StackPage { let button_next = Button::builder().label("Next").build(); button_next.add_css_class("suggested-action"); button_next.add_css_class("pill"); let page_box = build_box(); let username_entry = Entry::builder().build(); let pw_entry = PasswordEntry::builder().build(); let pw_entry_rep = PasswordEntry::builder().build(); let username_label = &Label::new(Some("Please choose a username for your personal account:")); username_label.add_css_class(CSS_CLASS_TITLE); username_label.set_wrap(true); page_box.append(username_label); page_box.append(&username_entry); let pw_label = &Label::new(Some("And a password for your account:")); pw_label.add_css_class(CSS_CLASS_TITLE); page_box.append(pw_label); page_box.append(&pw_entry); let pw_rep_label = &Label::new(Some("And repeat it for safety:")); pw_rep_label.add_css_class(CSS_CLASS_TITLE); page_box.append(pw_rep_label); page_box.append(&pw_entry_rep); let error_label = Label::new(None); error_label.add_css_class("error"); error_label.set_selectable(true); error_label.set_wrap(true); page_box.append(&error_label); page_box.append(&button_next); let cleanup_script = format!("for script in `ls -1 {}`; do \"{}/$script\"; done", PATH_CLEANUP_SCRIPTS, PATH_CLEANUP_SCRIPTS); button_next.connect_clicked( clone!(@weak window => move |_| { let username = username_entry.text(); if !valid_username(&username) { error_label.set_label("Error: Invalid username format."); return; } let pw = pw_entry.text(); let pw_retry = pw_entry_rep.text(); if pw != pw_retry { error_label.set_label("Error: Passwords don't match."); return; } else if !valid_password(&pw) { error_label.set_label("Error: Password must have at least one character."); return; } match run_command("adduser", "adduser", ["--disabled-password", "--comment", "", &username].to_vec()) { Ok(_) => (), Err(e) => { error_label.set_label(&e); return } }; match run_command("add to sudoers", "usermod", ["-aG", "sudo", &username].to_vec()) { Ok(_) => (), Err(e) => { error_label.set_label(&e); return } }; let greetd_config = TEMPLATE_ETC_GREETD_CONFIG.replace("${DESKTOP}", &DESKTOP_BINARIES[*desktop_index.borrow()]); match write_file(PATH_ETC_GREETD_CONFIG, &greetd_config) { Ok(_) => (), Err(e) => { error_label.set_label(&e); return; } } match set_password("set user pw", &pw, &username) { Ok(_) => (), Err(e) => { error_label.set_label(&format!("Error: Cannot set password: {}", e)); return } }; match run_command("run cleanup scripts", "sh", ["-c", &cleanup_script].to_vec()) { Ok(_) => (), Err(e) => { error_label.set_label(&e); return } }; let _ = window.close(); }) ); return stack.add_titled(&page_box, Some("account"), "Account"); } fn build_ui(app: &Application) { let header_bar = HeaderBar::default(); let stack = Stack::builder().build(); let toolbar_view = ToolbarView::builder() .content(&stack) .build(); let content_page = NavigationPage::builder() .title("Content") .child(&toolbar_view) .build(); // navigation sidebar let sidebar = StackSidebar::builder() .stack(&stack) .build(); let nav_page = NavigationPage::builder() .title("Sidebar") .child(&sidebar) .build(); // split view let nav_view = NavigationSplitView::builder() .sidebar(&nav_page) .content(&content_page) .build(); let window = ApplicationWindow::builder() .application(app) .default_width(960) .default_height(540) .title("MNT Reform Setup Wizard") .child(&nav_view) .build(); window.set_titlebar(Some(&header_bar)); window.present(); let desktop_index = Rc::new(RefCell::new(0)); // main content stack let _welcome_page = build_welcome_page(&stack); let _keyboard_page = build_keyboard_page(&stack); let _time_page = build_time_page(&stack); let _desktop_page = build_desktop_page(&stack, desktop_index.clone()); let _root_pw_page = build_root_pw_page(&stack); let _hostname_page = build_hostname_page(&stack); let _account_page = build_account_page(&stack, desktop_index.clone(), &window); } mnt-reform-setup-wizard-1.0/test_with_chroot.sh000077500000000000000000000030771461620463100220350ustar00rootroot00000000000000#!/bin/sh set -e # set up variables and check existence of chroot system if [ -z "${CHROOT_PATH}" ]; then echo "Need to set CHROOT_PATH!" exit 1 fi wizard_filename="reform-setup" cleanup_script_filename="cleanup.sh" repo_path_wizard="./target/debug/${wizard_filename}" repo_path_cleanup_script="./${cleanup_script_filename}" chroot_dir_root="${CHROOT_PATH}/root" chroot_path_wizard="./root/${wizard_filename}" if [ ! -d "${chroot_dir_root}" ]; then echo "Can't find ${chroot_dir_root}, suspecting no system for chrooting set up." echo "To set it up, run something like this:" echo "# mkdir -p ${CHROOT_PATH}" echo "# debootstrap unstable ${CHROOT_PATH} http://deb.debian.org/debian/" exit 1 fi # ensure the current variants of the needed executables are inside the chrooted system sudo cp "${repo_path_wizard}" "${chroot_dir_root}/" sudo cp "${repo_path_cleanup_script}" "${chroot_dir_root}/" # packages needed for GTK4 sudo chroot "${CHROOT_PATH}" /bin/apt remove -y libssl3 sudo chroot "${CHROOT_PATH}" /bin/apt install -y libgtk-4-1 libadwaita-1-0 # packages needed for keyboard configuration (?) sudo chroot "${CHROOT_PATH}" /bin/apt install -y keyboard-configuration locales sudo chroot "${CHROOT_PATH}" /bin/sh -c 'echo locales locales/locales_to_be_generated multiselect en_US.UTF-8 | debconf-set-selections' sudo chroot "${CHROOT_PATH}" dpkg-reconfigure --frontend noninteractive locales # xhost +/- allows the Wizard to access the X Server for display xhost + sudo chroot "${CHROOT_PATH}" /bin/bash -c "CHROOT_MODE=1 ${chroot_path_wizard}" xhost - exit 0