.gitignore000066400000000000000000000003451516067347200130630ustar00rootroot00000000000000/build /dist /node_modules /*.log /*.iws .idea/workspace.xml .idea/tasks.xml .idea/profiles_settings.xml .idea/inspectionProfiles/Project_Default.xml .idea/inspectionProfiles/profiles_settings.xml node_modules/.yarn-integrity .idea/000077500000000000000000000000001516067347200120515ustar00rootroot00000000000000.idea/codeStyleSettings.xml000066400000000000000000000004251516067347200162500ustar00rootroot00000000000000 .idea/misc.xml000066400000000000000000000002561516067347200135310ustar00rootroot00000000000000 .idea/modules.xml000066400000000000000000000004121516067347200142400ustar00rootroot00000000000000 .idea/onenote.iml000066400000000000000000000005201516067347200142200ustar00rootroot00000000000000 .idea/php.xml000066400000000000000000000003301516067347200133560ustar00rootroot00000000000000 .idea/vcs.xml000066400000000000000000000002471516067347200133710ustar00rootroot00000000000000 .npmignore000066400000000000000000000002371516067347200130720ustar00rootroot00000000000000/.idea /artifacts /build /test /node_modules /*.iml /*.ipr /*.iws /.travis.yml /.scrutinizer.yml /Gruntfile.js /*.lock *.log /corifeus-boot.json /dist /secure .travis.yml000066400000000000000000000017371516067347200132120ustar00rootroot00000000000000language: node_js sudo: required node_js: - node env: matrix: - CXX=g++-4.8 global: secure: nSwVbJfdLnOb1dcyytnNMcJuY6DtufFBAyCUQdGyEjA5rZDeGQSeRIHY/cH7K3e+3BKJ4V0vmAZs/QCRhZTsznBiOqlfghkD1yFeikEh+Hbg+wc4uTb2+Aoft9KFmpDhOeYVPWMZWILGR52yUcEQ5t2WprqJsnAp7UiVynmdNGVHyvV582UYPc1+emWQxIkpHKQ4vOZGGIYu7LoQTED+cvnr+1x3MXs7rhZwkSN7/NuXBpyyPN8l5Nd6h+CP4WsvHFlb1nJDB9/3BnpZzWt1cwOsUAH4uxIQtuL2Gls72kz1pkUpSvB6VrdfbaOcCyruwY2p9i9NJiXMOrx6xW7h33Eoy2t36qy8/3O6YLinLk/wqxGNvVjAGqnUwR75SVqlT5aC6Q01ytaZVApIuKfhItsTznW/1n1vDNQJzd5ed4a22LOOe5OYcPi2FD/cGQZ5Tm3sel9ePExO2gWap6yT2y50c6uuSazFvNFn9srLV7XHZAxYxcJf2eAjmN007gLwIR1kEL1e4M4d4JUnxno/+1nDwt9FmsGdmtI0KWKOAD6ke0XTflD+nLLB7jf+5e0f5JEli4/fNm+/xPifLxgC9rvNdl7Vjclcna/4S0LQ8CbuwHbTg+g8Ulh+YAWP3EbPVdR8Y+EvyE3BU4oo5SM6yvtz7p6g+aThVTwD7KHKDRQ= addons: apt: sources: - ubuntu-toolchain-r-test packages: - dbus - gcc-4.8 - g++-4.8 - libglib2.0-dev before_script: - npm install -g node-gyp - npm install -g grunt-cli npm Gruntfile.js000066400000000000000000000005521516067347200133700ustar00rootroot00000000000000module.exports = (grunt) => { const builder = require(`corifeus-builder`); const loader = new builder.loader(grunt); loader.js({ replacer: { type: 'p3x', npmio: true, nodejsinfo: false, opencollective: true, }, }); grunt.registerTask('default', builder.config.task.build.js); } LICENSE000066400000000000000000000022701516067347200120770ustar00rootroot00000000000000 @license p3x-onenote v2018.12.30-3 📚 P3X Onenote Linux https://pages.corifeus.com/onenote Copyright (c) 2018 Patrik Laszlo / P3X / Corifeus and contributors. MIT License Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. README.md000066400000000000000000000236661516067347200123650ustar00rootroot00000000000000[//]: #@corifeus-header [![NPM](https://nodei.co/npm/p3x-onenote.png?downloads=true&downloadRank=true&stars=true)](https://www.npmjs.com/package/p3x-onenote/) [![Build Status](https://travis-ci.org/patrikx3/onenote.svg?branch=master)](https://travis-ci.org/patrikx3/onenote) [![Uptime Robot ratio (30 days)](https://img.shields.io/uptimerobot/ratio/m780749701-41bcade28c1ea8154eda7cca.svg)](https://uptimerobot.patrikx3.com/) [![Backers on Open Collective](https://opencollective.com/p3x-onenote/backers/badge.svg)](#backers) [![Sponsors on Open Collective](https://opencollective.com/p3x-onenote/sponsors/badge.svg)](#sponsors) # 📚 P3X Onenote Linux v2018.12.30-5 This is an open-source project. Star this repository, if you like it, or even donate! Thank you so much! :) I run my own server with dynamic IP address, so, it may happen, that the server can not be reachable for about max 15 minutes, due to nature of the dynamic DNS. The server may also be unreachable, when I backup the SSD with Clonzilla (very rarely) or an electrical issue (but this should not happen again). When the server is down, please hang on for 15-30 minutes and the server will be back up. All my domains (patrikx3.com and corifeus.com) could have errors, since I am developing in my free time. However, it is usually stable. **Bugs are evident™ - MATRIX️** # Description [//]: #@corifeus-header:end A Linux compatible version of OneNote ![Screenshot 1](https://cdn.corifeus.com/git/onenote/artifacts/screenshot/screenshot-1.png) # Downloadable installer https://github.com/patrikx3/onenote/releases After downloading the ```AppImage```, make it an executable. ```bash mkdir -p $HOME/opt mv ~/Downloads/p3x-onenote-a.b.c-d-x86_64.AppImage $HOME/opt/ chmod +x $HOME/opt/p3x-onenote-a.b.c-d-x86_64.AppImage # Then you can run it $HOME/opt/p3x-onenote-a.b.c-d-x86_64.AppImage & ``` It then actually integrates itself into the menus and it will auto update itself. The app can also be found on [Atom Apps](https://electronjs.org/apps/p3x-onenote) ## If you are a NodeJs Ninja [readme](artifacts/npm.md) # Original version https://github.com/peterforgacs/electron-onenote Props for Peter Forgacs! 😎 # Features ## Default features * GNOME menu * Icon * There is a bottom bar * It shows the current location * When you click on this bar, the location URL is copied into the clipboard * There is a new button on the Edit menu * Copy this location to the clipboard * This is the same function that is on the bottom bar when you click on it * Restart button (empty your cache, you can login again if there is an error) * Remember last notebook (as much Online Onenote allows ...) * Menu > Settings * Enable hiding the main window * If you access the tray easy, by 1 click, use this * **Disable hiding the main window** * If you have nested tray or not showing the tray, use this * **THIS IS THE DEFAULT AS IS THE FALLBACK** * Tray - show / hide by 1 click and hide the window list * If in the Settings menu, you set the **Enable hiding the main window** option, you can hide the window list and only show the tray, give you more space (but some Linux distros are not like Linux Mint, just try the settings, it can be awesome 👌) * The OneNote language is controlled by Microsoft, but the Electron UI is now able to use any language. The default is only implemented now English. If you want to request a new language, there is a `./translation/english/index.js` file, if you create a file like `./translation/chinese/index.js` and implement these keys, I will add a permanent setting in the menu (`Language chooser`). * You are able to set a proxy in the settings menu. ## Corporate * There is now a menu called ```Corporate home``` # Info about P3X Onenote vs VirtualBox If you have enough RAM or buffy workstation and you can install Linux VirtualBox inside Windows and use the Marketplace based OneNote or install Office. I think, you do not need ```p3x-onenote``` at all. For my workstation, with a 4.8Ghz CPU, 4 cores, 32 GB-ram, I use VirtualBox on Windows with Office Onenote (I use 6 GB RAM, 4 cores), but unfortunately my Laptop is old and has only 16GB RAM. Given, I develop a lot (NodeJs), I need the RAM, so for my Laptop, I use ```p3x-onenote``` and it's enough. Once the pages are loaded. It is fast, since it's own process without a browser and is in the tray, you don't have to re-load everything again. So it is very usable and after all pages are loaded, quick. **You can try, you lose nothing.** # Issues ## Unable to log in This only happens if you kill ```P3X OneNote Linux``` and then relogin many times. So, If the program needs to be killed often, ```sign out``` (on the top right of the Electron browser frame) just to be safe. ### BUT! **Exiting using ```quit``` from the ```p3x-onenote``` menu or the tray, will prevent the problem.** ## Latest Gnome with dash-to-panel For now, I set a `Menu > Settings -> Disable hiding the main window | Enable hiding the main window`, where you can enable or disable hiding, so if the Electron Tray is not working for you, you can set it with this `Setting`. ## Fedora https://github.com/patrikx3/onenote/issues/3#issuecomment-312711801 ## Change language Although the main page's language can be changed, it reverts back when an actual page is accessed. This is being investigated. https://github.com/patrikx3/onenote/issues/14 ## Electron problem Since Electron v3 the try click is executing the right click, for some reason. So, I reverted to Electron v2.0.16. If Electron v4 is working with the tray click (not right click - so simple click would be hide/show), I will upgrade. [//]: #@corifeus-footer --- [**P3X-ONENOTE**](https://pages.corifeus.com/onenote) Build v2018.12.30-5 [![Like Corifeus @ Facebook](https://img.shields.io/badge/LIKE-Corifeus-3b5998.svg)](https://www.facebook.com/corifeus.software) [![Donate for Corifeus / P3X](https://img.shields.io/badge/Donate-Corifeus-003087.svg)](https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=QZVM4V6HVZJW6) [![Contact Corifeus / P3X](https://img.shields.io/badge/Contact-P3X-ff9900.svg)](https://www.patrikx3.com/en/front/contact) ## P3X Sponsors [IntelliJ - The most intelligent Java IDE](https://www.jetbrains.com) [![JetBrains](https://cdn.corifeus.com/assets/svg/jetbrains-logo.svg)](https://www.jetbrains.com/) [![NoSQLBooster](https://cdn.corifeus.com/assets/png/nosqlbooster-70x70.png)](https://www.nosqlbooster.com/) [The Smartest IDE for MongoDB](https://www.nosqlbooster.com) # Open collective ## Contributors This project exists thanks to all the people who contribute. ## Backers Thank you to all our backers! 🙏 [Become a backer](https://opencollective.com/p3x-onenote#backer) ## Sponsors Support this project by becoming a sponsor. Your logo will show up here with a link to your website. 🙏 [Become a sponsor](https://opencollective.com/p3x-onenote#sponsor) [//]: #@corifeus-footer:endartifacts/000077500000000000000000000000001516067347200130515ustar00rootroot00000000000000artifacts/npm.md000066400000000000000000000072401516067347200141700ustar00rootroot00000000000000[//]: #@corifeus-header # 📚 P3X Onenote Linux [//]: #@corifeus-header:end # NPM install If you know what you are doing and you are a Ninja, here you go: ```bash sudo npm install -g p3x-onenote --unsafe-perm=true --allow-root p3x-onenote & ``` ## Warning This installation is not supported at all. ### Note 🤔 Though, I am using it, but some distros are different and I only use Linux Mint and still, I can't support this way. 🤗 [//]: #@corifeus-footer --- [**P3X-ONENOTE**](https://pages.corifeus.com/onenote) Build v2018.12.30-5 [![Like Corifeus @ Facebook](https://img.shields.io/badge/LIKE-Corifeus-3b5998.svg)](https://www.facebook.com/corifeus.software) [![Donate for Corifeus / P3X](https://img.shields.io/badge/Donate-Corifeus-003087.svg)](https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=QZVM4V6HVZJW6) [![Contact Corifeus / P3X](https://img.shields.io/badge/Contact-P3X-ff9900.svg)](https://www.patrikx3.com/en/front/contact) ## P3X Sponsors [IntelliJ - The most intelligent Java IDE](https://www.jetbrains.com) [![JetBrains](https://cdn.corifeus.com/assets/svg/jetbrains-logo.svg)](https://www.jetbrains.com/) [![NoSQLBooster](https://cdn.corifeus.com/assets/png/nosqlbooster-70x70.png)](https://www.nosqlbooster.com/) [The Smartest IDE for MongoDB](https://www.nosqlbooster.com) # Open collective ## Contributors This project exists thanks to all the people who contribute. ## Backers Thank you to all our backers! 🙏 [Become a backer](https://opencollective.com/p3x-onenote#backer) ## Sponsors Support this project by becoming a sponsor. Your logo will show up here with a link to your website. 🙏 [Become a sponsor](https://opencollective.com/p3x-onenote#sponsor) [//]: #@corifeus-footer:endartifacts/screenshot/000077500000000000000000000000001516067347200152265ustar00rootroot00000000000000artifacts/screenshot/screenshot-1.png000066400000000000000000005134661516067347200202660ustar00rootroot00000000000000PNG  IHDRF@8sBIT|dtEXtSoftwaregnome-screenshot> IDATxy\u5**%mjjZJk-]kmvV6,ӴL4 <<fp㑶|y?bhHBa@@!B!BOPPcv#B!B!YXX`!A!B!B!>zK,B!B!]JB!B!Bܥ$9(B!B!]JB!B!BܥnwB!B!B)4UPUT@dr(<AAAB!B!Dﱏ`im*FoJW !B!BqDIϤ`-݊Bqg¤o0%`jIfӎ$JT=>i2CCEwզ=-/5'>wRh,= fh+`uBHM?OԶIMf7Ȫ-,(8qSq][wvN}czRͩC̜rʅ;ٸ)uEffaݰ,JaS.n_mYwE+d×9[nL_,{!BcWc 4j,m@_Q||KB!L- da֋{gַf66mOp:3ӭ9K{{z9+J煹A++_\4+ȦX͐Wu4^|džtJa>zO>?a=M<ɫ+l*Ehڞ_vp: ¼<B!='x'xS6<4?g컐İ`7jƒgyւu{ Vm ~{i̚8oU ;X~* ?q /57|тkB.x|{fWџb Ԗ\N;̎/r(>3`K1PʁGjL]*3 KlL[<{O[1;شCw=[eGxuD "s=1 }VV ~sy}XF\ 72¡3bxilx[;ȠVً3\E>,0G*Z-( Ud88Sdh $dpe࠺m`5g?`(s=բ %J bal:y:9¹j^=Cy2?)4ΥrI-cΔtZrN$5Mh5fqw4>*+ \?ijQ!7G}^B`̘1XZZٻw/ϟ%m:'w''CAϨ۟A!Bܙ.pk')X|.] %W9ms06F|cӷgi NZ(f\CkN->4j?\e8=owTg|g_`K8n&J+l>!&gs,ec${aȏ?o ƁW04qa[Yf S9QpƸ,{MO^B30Α;@G>F4Kw¦eQ\+tT@OyY1v]9eΎ8PUÅ]%>/]y݌L\ 5dyoa6jOOiހћ B#]H !ۛѣG?ؿ-j9@ugu^¢QLJrP!w&/κjJsS۽͇ ]#`ƫWO`8 ~Oa_UDΑ^w39~z/X!>ֶ7?111z8pۨ*_R|y,m-J/A!Bܙ\6M9Îd>SyuO& ǃd@=u MpUo og)'Zk+h\PEE& `3;jFjz_ 0P]0o243 IҔ3j_ ϑ Փ! pAQHk˥PX8+e>sU` ZpS`+[_(OOQ}i.zԥx=m1ގNV|vM߾jca0.I]șH@$B B\]]!<<ܔ '% ';b2^!c"ؾFIj%9(B_ؖO6XXXbPxxo n?-cKLQf̒y$N_o\.Ù>jS4 餶,)u-冦刵z Qn`^ٗ(ѹG_z%F_nXteCN(V?F1_9ϹY1h,<MMFYx+2˵>[] z2߾URu+_%;T(ȸH Hgog:;*چZJVo+>?|'>iD^KfI-^r› Bh?K;tš^!cLB]M9`B!~A,p,oOneJ*v@C0`ίDY֭'(<=Nܙħ}ʩm0GR;KH-߽Uw>3#w ϾsX=5?'48R@'1}J x\P J}2 g=|=9VYb14^3\=F|,{͢#c;'أ7Q\}3ca,zMOJ7jœf2LG~z:zo/9OzYL"Ѐ~:U8Dmkk;] C[~o5f7RGQ.U$CBqeDIEc  v_V,B_=G8S{=+$qg$>}d:5% [dF2wzl͵*m \ϮLJp£ Fc?jBqy|FOauSy,宭+#9ƃMپT˚=筏IcjI}18wG+*PȱtX$tE]2TI %*W7`o]?>;O䍫>;?]mWUI_ c%_;rQl (Jemk>o+t9I9A]~*7~ȑB!nWNr&t5-wT'\={CV]8B!B!Bށ#pJMEI<СzB!B!.%݊B!B!KIrP!B!B$B!B!KIrP!B!B$B!B!KIrP!B!B$B!B!KIrP!B!B$B!B!KIrP!B!B$B!B!KIrP!B!B$B!B!KIr2kV0vQ]?2b c7݁!B!Uo1oJ&{)'#~31d4g6CP+<;k#;gY"Ԅ-Y,ߘ֬ {&-``|=TPOF6"F{x:Dzbm ;Gm{Fɚ9J gyRZ 2w|"ݙp2@HԳf,m\8"77N ,lOB2͙%kUNf9*opɴ{-dߊ,Y,Kz VcGBN15[Cr\"m-"nۙ5k浝5_b+ f>< 4wغB!B!MZ4WGTlVxx,cF;$ǦSѦa]"M<-!q"Fqj# 5xE,eV6V'dpҷi 섍DDĐ(}Dzh,=ɏgcD$19 sN\Kb3~X0:^֠&vUx)PXGxy2#HjSzQXd$fIEYL8Ř1.'|d/'%/y!K,\ _iCvDa,YNvI[Ց R}(B!Bvi瘃J~LVnVT1iV0^&g}z XLH'7] ďtbM'!`_ߪPdzz<.ZK<(A%^yYz5̼٘~4)DT3otc-eugc, j/mZ̛}ZjqL쟍bl[\o!,XN%̛j‡{` lu+c޼ŬKͮaGn4Q2\{F\|,q뼀t (e`(|T|%qG;m {ưb<.@A"ˀB!B!h֓JF-YdDD$a l\tU53tT*2hn@J\Cy䓖rk.M¶8cPM 5N lA2BtC ܆&l>}5F0 l6vd{Bf[P$l:X8$lB6m1u `/=q!SANFA;;l6{cj@?'0seO`xJ34 8[[ىiJB(Ag##BS0|I$ׯ7[;?SCA6Quql6,B!BьֻkL26tFP0v>W,Dx-Z@Y~$Jw\"i\<-נURyJJ-jЖߠdJG Ko|2`֧ Q,7URګQiLE^B٨Clj'mA"W'QX\ɲQvZZojTӠ#9ә7wk~ 3bs7(Qiۿϴ,'& #̃mMխ}ڴD2S_N8ʃh6ؓ L[DD6Q؇-fuh1Qx^h)РA!B!BOlhg% 3s`Qܪv\`UثPcELN_ζguiIN q+ # IL&mKxw9ra[ʳϓJgúfMaXOd&TTѪUw6(} Dm;C(0j;bjwhbIarIjr(Q6MFu@Ǔ czqL6o\qO=)هҴ5$'U;v8I dI%XAb ֚mo^L] J0fIME !B!U=q]"I&;u$T [4 DW 2!%‰[c;6c Vi0wjz<ZeL&z3/a<5Jm9ىivCm'4ׯˉMW9 m,9I_CmCuM9_X!25%k"kY<5=-8܇3rA[!-jr:u. _SXV͏ "_5E! ̗wނFN|)Mljc;HLCP0I u3L #۶6pYd|ZqVݢ~B!B! 2 fʸhbqK)X9ˉB!B!խX ý*S0pl%1(B!Bq_%3g*%h˳I!B!B ݊B!B!KIb!B!B!RB!B!.%A!B!B!RB!B!.e5!A!B!BqHB!B!w)I !B!BqB!B!w)I !B!BqB!B!w)I !B!BqB!B!w)I !B!BqB!B!w)I !B!BqB!B!w)I !B!BqB!B!w)I !B!Bq!B!JA/{5PS;lojU5U}RC9$F_kmK߱]Iν%vQl_>jμ%׭\f! Bqt@c肝rRsH:j'z1ay{:vluϙA3}(8_7N}-mWœuP(8MrGu50\$҂*RILya[ 7%9f,_HH IDAT|] !B!Dcc~ #*i{s*ˉ / `|XrowPe_Ӊ_F̚T~Xy ;9jF9΋8=H&tn»P_{OGBޒ_\$zuW%I(čAqGSd6wRxaxRsعmL!bmo36d/3ʲn_Ȅ-M/?~3?晽ʓL{c0 ^,MQL 6T7|[~EP%o@ f), ?3&_ !Dlg# {k*55?|sJsKT;)m2ʬپ?}vC󶲱`Hw˞?3]֑sZág9ݥFi EYwɝBϙ0wm*r1*>{C37]9vꏷ;!D;y t!>|~7y_['`bͬ?uG$/KֱBb,nttTv`CNJJNl"}e~qOlcwKI |ڟqx!1J$v ó;` rBwfK7mn(MI sSU%~y/ъ>2w0zm/vxB[ϳ:b~|'R-j/{'x(#̋E[!ioHٕlb`IDuc,LXgiܡ|ƥEx0iz h2IΑʩ}NJ|-!}M],p *jxn&,?MI4f`G_W8.0{`d:3V a[!dԐ^rKb89F<-:^xKڸlx,2$ ?vk.0hfwyOB+s^{oGtz2^%zuMß˄e(R#W9AGO_O?x`W}70,֒! $nO+B\3>Tf֜Q5e0Iaܱ}珇z}yw} K+f(mjFσg삕҂i%L7/Z Εr:*Ҩj91=c*j7PĬm{r5i%tv&'xHf$SsIݝإ~>lzNNP|ҩˎN1]O6n=z(lϜޛO3X7-8Cm~ 3Y3eI%4Mj F/`>8w4z8Q׽:c{ZCk'}7Γa @8yϣ5pozalͅ #^Vd [G%Yl_~ĭxP^ݻn]@qJiAnJ1{l:8>= 08x^X=Ӧvl|Yb-8sL{}>!(ͯbߚT~o]A8+"LcÁl_~G%ڻoY!vW9+oHwC}*k{+\}U ݃_Hw9AV❓*Zv,vSwg>N7BN2d/A.l_~*h+uV4~Ytzsg²xwRSC~'sd6 UؖPwF=.\:Q%GrNG ^]xn|,8p`]qtz0)?:pTˏ_?z3Al|0NrN;,37c9Q_uQ=F>17_/گ{v=^]mrж<[9ur%oqD/`-oܡ&zDJ'S €N9'5!}7[3R}[v<7č> (۳M0w0M/rzalQSB+=Ƴ)7~i>}(Ωĵ gO;4*n>FǔCXf͜Yf 7|yŧuj$C:~cS[xoB4U< wCʅR_?ܴ;n}Jд|~RRSQKi~>Hc)|k(VӘ:UZrNi~;jv](MɣRSssbh}\:U:K0}{~݋n;\Vs :rd_ae e+$d)Q3̝nIR3g?{"LF7Oؓ)Ϋ`bl_p!`1= yg:zl>YD^j1AӺG+Uu ލB|p ߭8AmM'DppJ;F*W1KrsVSUtT6]ǘū(*Kv _9i"K,,-0c0IR@-oi>}`0NXGbkkq+'kܖS;Oas:֎Xz@>[3K֝gK7EDL׹I ߭VS['x!]of us*پ8]ǹϵulT(4qmW -GuSpZRM7u[ϸ.8ve+Q[BA~z'dW3pbB[_XwSyPUVԔo'~MnYtd i‹~;oZ|ڔW9[`}M&̡(['%s;C'Ƽ@[Iļg,}L>p멛fkԞƌP(wM]Z|ƽŀu+/x ^:2^=Hݝus4Ӈc3(lLgtFOWX7؏3lA_.+ۨ_D<86 coh']6a:!szR]̻qT ~׏n|duݱHѫ\8T@8/P0)?BՆJbK53ǽ#:-יS]i*kjklZ :;1AtLٕjvzPjkuV〃 Q$eWNBaarc& 2Aol$×кVHOb߆0Aob֤rx9tkW'L7]f6/6V?Tښ R91xfo)9NSg+gxػZSQXs]dž_d0,4Çݹ_nqǽ/%#cY쓅~>i&&.iݰu\)_Hl)OṇfwOmIʞ\b#['ڻZ3FRZ}dיvdFPp..HٕwO8 W:^Ȁ)  ۓ [EיTX(\_>%i{ؾx*Uj99$_.٧/S)έ$_),OgOƚdl-yă|0#$ <?mK)f뒣s0qrr.Տ1i:[[g5]z: ֍n\qjO}}o#}ez Śsl{(*TcuR1&iظYwŶ~AӺ1i5J[KjT7iT0m`LFՓ y0V\[G%.k>_&$z$"BEDx٧ 9U&u^gVPԕoWt nxpˎN󅇙| [3Vb^#=?!2qvVHNיl{)t;f{ߠ7\y1x3+gKͺ֔גk@w5oCpz;?u_z+?[bZQˠ>g^뿝e%@g~0jm)Q*W MMȜ<>0Ƽ`Nm͂-" [x9kv4ѫࡽ|DfG`im&_ÊH:й=ډG~85~ Ec ?ó-6]?eÖj6U{+8zآjp8v5ҼJH\qX[n-`moExO|8:;1niͯ;OϓAfwEjv2ӻslOH'm>uah+j=;xb|#<( JȰfۉL*8[cNd+G`c8O>7Cw`bKX6\=99{ڰ"zNl$kի=r$ =oxRvX6fikX1]ω\6J"gG1f>CdW#xo|4:>6YwU%Z>d~=3m`l'Md-fC݈x`1?_i9m]gYh+XwMO $L_wzwW_&puy~+cW%7{;6J3̽;t@0wiC'OS|ة-.C'[^>YLc]6QuQֵ:CujtXYwouY;Ju~_Ϻ9YXY`heI΀^w-zs˓vf]ljC\zJHtیA3kЭTjV_EםyHn4AhL<ß3;\˲S lKC{׉%3ھk3Vϙ҂*:5~Afc 4ÇQTjjZ'z9m+߼RRǎNv(s9CE_k?4rNө#n=.W8JA-4}FcIgSQd^c.&r:ro`R3[oy99SO W[Q'/x_Zݔs] ΖYZv:-;Cxă--hp'ﲦkwG݆N^J1Q=! BP_ċ 3+G>KDeVP1.6DƿcÑ/2N(V6 ٝc_]4%{p#2?ɋo ƵwCM_{|uĥB"gcS~`  K?g5zV=_g<;'ۖdOtUɮ0K6<浇kwUmC[ .vf-=|gω=Q؍ -Ft&ަ:N\ ]d'5x}a#F_b1ЩKl==e7n7U%ZJ&7cҟIs۷6>;OEa6`nܚ֎/1E׽gtgK(ɫʅ2jo^IdYzhO.{k,~zw\tu8IaՋe!7oHڙwBڤZeͦs ku[B?cB{itzsNwˈQv V'y1eEM /#dNݧzfu4s WP(Ďb#ۃG޻O5@/ZVus8=;Mo?9X %yTzзjp> IDATO=ޠo*&eW3>}0ś&hb.x;%ZJ:=(Ge'4 M)+Zm(nJm[J*IݓkxQ零o{ڟ_ׁߴDX!nMDJ8l˞)&c]$N9i7nRs1x/Gt?'^waQ\_ǿ&*{C,XQc%M!X]{XXaT+V JRDA9Qvfg2wΞ{S|j~U 8q?빷#+c =0f;jf[[ץ ^ՊS73P+_wMtp1V?LN3aQޘ\ ;ݼY)X@n6Tmb͆1On%fD]*e*nu?>!zq{8r8QC~9{-*응sb : Lc{V^3Y=-Ԯ% QJEܳxҹcelM?OUHѩv1;:rH4kXNLj`^^VE{ZnO[cl{:qjsv5gٓ;]=|W\Ʃg:R%Ӓ2s!y}IC} /6ޙ<]征fkᅰK?AYr?~O0)kțLѱ<'Ksu*>QKvMPs*51~6Tٍ=W,ldiv4}#=%"DI/xwI s ]ӚIXfX*;[)?{gtԈ-Su:k;gldj =/}:Ng|vvV=%&:GZRgoKʞ9?_#Cݤ+wo̥Y1qv2~SO7LCS}^%-z:ԖpMpVfTk^^g 4g?;p }+#|=׹"`LAOX?Z< ;*kFa(_ÂCjRe%|W{gvޢJ%]]K^+xQg%q˳רWUe<ﲕMi6ΗbXRmXFj:|ZO9潬R92^7Ć0l4>Ǹ'63-՝:/O ~h=ťZOgFm&5!"jSk 괷D>0ˍ-98wCS}Tjo9bUŔ3;og*5,2v&4\G6{H׼1)kZ_Eq t}֓[oѠ[垯հZ:Oe :/R9igv4V#j(Jl2xHbIOlD)M3P):\=|Ft>Dr=['gSx~תz!n&q:р`jmD|d ꡼OVVq^\V#jc^ވLnDzrAe3mGաOXۛɵҲz!zMnS=L8oP]*1f5L;Cr>ssbc̪WYe z?,-ѩ\=͢>4>L?KOo; ObGǔ1_BE;>ӚbigBRlYWDYn8Vt.RdVܭd ;k FZR&"8`d![o2ӽwc .kɬy$G%i>&y;oG..r?&:Jc?F<Ͼ8. MrHMbӸy*6G%xφi5{fIw/ztܐ\_CxBfj}6lSғ?yeo 5!//dwgs) &:?!4d'u9r>?6&d  {N'g?K]"6<6(9{^A9zbgw!tvf'*u8˻&V^|){ c7A(> 15!nbVΈA+ZabiHRl^gK/M#ֵ)jF ,_T=3M)gyoy-*Z!)ggB~׌px ֎xEFJ~ <;w ò n@r\:'{CIlypU1u?/ FƘ3D߅ ?~2z+㺘1>5eki>݉gQR |??qv0%>H>3,{n@fZ r?oMwӆD3Iydg_wD/qGZX30ݿmptK =)€>m06"9.}[3)_FZR&^"ғI,s'I1iޮ[tyn8s?y8x1q!J+B!^^ν2`XBcdO冺?Lxs~3~{(Ih>e+7U)51C$:!-0Xߔ½|MNu (PD>b ZْL {[OB֛ld$B@wHO «7T !BК.A!AZbvGTt>Vng39+v/Y €J,B$?h@9ҘYT0r@$<Dz VBY'ӨѪo'sz"&e 6ޙdbdb!BjSE*9uc!DdiYA^LU?X/ fP,];QzkM9Txђ tZTlPƔ3Ʋ W-G.ь*jY Dn,+w fH?Q8' [ !īڈwdz=q,^!xj} V~JTv.K;- wԄt#S}>wcPǕF}T[dBE %ᘅ(JA!B!uq BB!B!xHrP!B!BRJB!B!BRB!B!B!B!$B!B!($9(B!B!D)%A!B!B!J)I !B!BQJIrP!B!BRJB!B!BRB!B!B!B!$B!B!(TB!B!BIB!B!$B!B!($9(B!B!D)_!B!B<4 ihQa`dZm$B!B!K-#-s2w(%FzZI 仞t+B!B!/9$chdTJJI !B!BQJIrP!B!BRJB!B!BR2!Bn޼9s є/_'''zEժU;n*PB!═gđR ,IݻOHHofȐ!C-ZDtttqVd&Oŋs]6zhٓa^{<WRnݺq|zgѢEOt@@Ǐy>Ξ=[a|deeѻwobbb;!B̝;A;vBv@@ޅ߂ ذaCqQ"g*kGa Z G~,jVdq$+]CbL's`O0Æ GjLFI2ezq .dƌ }||#&NH r]^_!4oiӦ,]}}}y{-nݺk׮\;сTmbM>tVUkfЊV86+q,곟udOg 826l{;(JBOOO1ZjUԻ.9z(кukشi888 :tիc``@uK?H˖-u3V%!!DUh>ʊ w߱b &Mc}FRonnn,Xg^^^ԪU/_NHHzzzt֍~%{zЪU+Ojj*m۶eԨQyع۷/'N$55DθqXf m۶eРA^Bʕ㏩\2ˋz0a*Wʕ+j 6Xؘ͛s!%9j9t}^;8w^^^Z +++GN˖-i׮>>>$$$ϸq㔘 iӦ)c-lܸ`?κu={6_0lmm;v,8p___033cС4oޜ;wf͚<'ʹ۸qc q4rHƎKÆ 9q6l ** <<cZn qx7S/ܹsh46l'||۷Os駟RB͛G^Ibb">>>=Cf͚m媛W02'xK8QP=( 1h2`Gm`y;Xm*;oonյ,ץĥzϞ=… OYf L>=ߊWʲTϟ9ח~TL߿ә?>-[޽{tڕyEFF`322=vsse_d?rgΜN:"1мys4M5 [lyϵxƏOYf }?3{%$$0qDfΜ޽{7oƍjժO_wwwǏy_駟ヽ=˗/Wڵk~S r /~`ǎ=ü'|իqwwgƌ:y+Wxb~\p˗g̙l2 MvXz5cƌa̙Jtƌ0gVZE۶m4iN;gՋ)S0uTǓ4|||tک=zS*?,^ӧѣGs6?:tLJpBI:tÆ cڵyf?Yt)yM7aaa. ?FA501,{~h'_Wו6sH4kݥv;;V<ù-Ϣl~Ⱥsُz}7<ϳ2>a]f\xN{}2>.DkQu1h  Ĉ#Ν;ѣ5j@RѳgO"""sNQ|||t~N>,x"tU\qvviӦ\pL T5je˖@"dwMh4aeeŹs߈~ҥrղeKŅ4"#y&J7np%FtQdffFm f`_IqQ1CCCnܸAٲe Օ {͛Rs< &&F*,.7FR)7M6&z IDAT?ǶTXs/'N_~JB$88WWw`7$!!5k|ժU$''o>~<#;vDRQn]ԩÉ'i{;wҒ5jЬY3hԨׯ_p%%++ o#$$DogϞTP===<==u"TP۷ocllLRRR dwڵ+g*3h `6777?~8 P899allLJ --pʗ/ύ7tիW/ { W^} x"GZ'6Fùt#FcccΝ;>|8vv zѭ[g~B쒓/Xd L6-/SlYZёz)mĝ;wҳgO%/УG"""Plmm{FZM>} ?z ZvmN휇hѢ2䗙]tɵ߾rh;(G;}W1"{ǹ]ֹsg҈*ж5jرCRlY ݻwˋSH1uTrQ;ﲏKpȨ?+k-L 4gO}5݃GN _wp/,*s|CT>Å.WǺS{]y^fj'6KSM~m2X7oڙBy-<ҧOtlHBBBعsZ&..ʕ+YaժU:Jʇ=>FYx`{oVViiiەX,-u\MLL'rJ FϞ=۷/$Z,4$z*(Ճvg޼y\~GGG!@&M3g ҵkW̌ƍqj֭[sA9z('Nu'+lmmM6j )3&&LѣiѢuQ]p fΜt~\xQg\gN:?Zidds322RO߲eRF Μ9C\\888pA\]]IJJܜt˗s!TjZ9ߞJ*ԬY@\]] ?TE:gg~Yf  "$$aÆGxx8!!!חy摕EժUѰzZljj"**rallc}\dd$˗bDrr29S(B!ċSL'}]o۷brlmmO^c=V{HN>#/|auu~755%--M)VxN7mШ(lllrslmmuzq䷯,_ÇN}W9RyL9 jSSSӹw输HHH`:OOO}V Zj:jժwQ@i5FyoyKj~r h=;!t_ z3vQXVn;ph5ZZ I;NYZt.o9SNRlv,9"]94YZz7d'MMM 7 ښΝ;kaTE|&J>!!!ʱeffJٲezWʖ-%sQNj6XGGG;n߾ʹi000Az</쪙lܸOOOҗ,YZ&88XvgjjJ ի4hЀ /͋KC|waaa'8yXZZR|y;VUΧȈe?7x##އ5|Ͻܯ+Nݻ{ڲh"N&.?`:Ă l>z666jժG.ȶݷ:>ɣ ·~KbPϮ8akPu1 SCִ&`~(~p|C=62CXX1 ׎DcWϒ y1濮* c&fw;1"AֹOTs]vlݺURegoo;|YH|g:{7f̘~s/ɲ8~8YYYaggGZZիWҒ~ 4 ܾ};mObb2^BqjdeeHpp0+7IKKZMff&~~~:ٲe CVĕ+WpM4)C*:uPL6l@v\IqڵM6eƍJTiӼysNwbiiӆ0m4gϞV7nk׮>}J*G)cs=~Vٻw/'˗/D 7of֬YӴiSz,]Cb``@͚5y܎#5.]䘭E[b+Vؘ*Uо}{uo޽{3k,>3iҤ /^Tde]CCCUFjjj`Æ v}{Vqqq!,,LiaÆ㔕+}}}L`O֖oիW3|LLLpuuU<-*O_233ue]\\Xn5*>]]] O?ʊVZt.6mpY YWWW}/^L\\t֍ݻ߰~U*Txnnn̟?_Y~DEEѣGeaÆxbopqq!11@o?#SLɱ<ˋ+V(]k֬?$)_ٻw/t֍={(2a?ϳY!EՕkZ- 6̳Oll,eʔk׮Jǂ5k`ƌOü?Hbb"eʔiDz`Ȑ!A۠-Z@V7߰rJF ds<<<%44+++FE rđ߾r{-;v,VVVl2?~<˖-cذa}գ] Y5dV^g}FVgTVMgr֗UlZy'o&=-3;n;lWf?qIq(4_XB4fhPX޴mOO',B!^ɓd ,\r /^ZJ+h7ႮpYt7TSAY:}Vmm̶~x~DcLn[™ޟɧIB}JD\x@;Fn`ݨ@Ŵ[&Kc`.Br#k|Dզy@l]L]U !ȝ$K,=Jdd2B!iϞ&rs|Mŷ49sgQfq$9(/G%YX<>믟{h!B!ċuB#݊B!B!K ݊Kt+.q !B!B!^ I !B!BQJIrP!B!BRJB!B!⥦RIOK+0J4PLH"B!B!^jTJ!Zju/(!B!B!Zشx)Ir9PkWqÄ˯wB!B!% c !B!BQJIrP!B!BRJ&$B!B!A!B!B!J)I !B!BQJIrP!B!BRJB!B!BRB!B!/D={'' *xo[!Dȭ=!(~rn|W=xՏO\|4k֬Cرc{رA!B!([B!B!$B!B!([B!xmϒXXܡ!J)ONOgF"FBrrwFqb;J)Jʦ˗!v(Ya)T9"?>>k_s-pJ5kѤI,ATPddd```翩˝:4PCŬHIIIzTVcffNժUp<ǎҶju׷7+++<=gcsSBl㉏P dΜy-[âcǎtؑYfwoRTW4L荑?0===j׮f>]vѪUkٳg+Ɒ(C ԨQy|wDDܜ޽кusINNfȐ4oނD/_ƕ+WHIIa14mڴ 7FܻwBY6bHe٣ !J={u|7TP;wibLWhh(5jԔ3HOOgx/Ą]vwH"w{IJJSN|ҿ~u1O`M$&&beeŬYs2e*s&==e˖R;w/y)hLII޽{?#fww<7##6L Z-yVq.Yuqq6tbJO\fZ\t{{Ԋcԩlٲ[naffF-ع3[Z*ZMڵkYlxxx$cյkWvر՘k׮_O͚5Ylڵ+pl?0>kkk }Q_|3=e{fg`llLVVsoܹs{O>|gϽW"<<˗/`ll }bcSG\ʑ#Yd¢.(lllHOaFp3266<{05ҧEm݊o,YٳgZ]ym}]~m>Wn~',--y }ۏC* jԨAܹpƲ}ܞ={ضm .^uГ8qƍʍ%<(P Mv/nrڴiVZDGGo7n>C9ϟOy;vrϼǭZ'N`BfIqFV\IÆ wޜ:uZjٽ{7M6ˋsԩX$%%)wss+Ht]V^zK%-- oX3~0eb2'???:wTnҺvݻ_`=N%|X?HO?FR1{\2e2煄{n:t舞lي{HrP24L{srw K 'Ң&MS\1333ߧ СCGk'Oյp>qѸqc-[!W\\YgL>]3OLL4۶mcaJin?Ν̙prjHFFh2^GU3AØ۷Yfa^3gNb zC=ȑ(ONNViɝ!7+IBFF 322D|r:j4-qI霹Gϴo333|}}sM==kJ޽144,?ܜm۶IDD'Odܹ9s?@ۘ5kNNNxz>UW'Ӵi'!d_ZTSU?*)31֭[a5j) >դIgNRh4 ׯSV+V}ϴ\~B^a|аaC ;ڨQ#9ExwquuEV3i$._LHHXұcJWb77wtZ@k׮S̑ɋ]{̀YdHgZǶ|X[Y2w|~i&*T`ƌ133cРܼor;u̱cŽij+ʿaж|h`R*[,)TPR2E랚}Mtvv\rٳ;SRRؼy{)> c`aaA&Mt`^~]$ 33={v3uZ-w1o\f͚SC4 Z:>jJ{iry\\\h׮wF]-ٳgbTT$::rH˖-e8;;+ߚ< ONL @ϞJT?44SSSVZܡ&T„ 꼗SON }U_bEի޽1{k^$2wM ㏱h-ǰjL^ڪ G~MV-`VTTիWLEaϞ;ܔcffX?-ōlR<=;||-˱le+V,aI SطEw<-kzW 3W/LwX"NLe]t!ulKE$${kסR졞T*:tȑ#$$${e>h4;vl…Gr尶fӦM9n|/_L6lCe3Fg۷駟vVVW_gڴiJ&33_~7xݻ3uj=J{dggǂp9>c,Xܹ[7 Cd{aYЯː!Cٳ'TEn0`[nÃwpƌC޽۷o%=ر.]믿$0(Ze˖<| gI3r0h@.\KIY<||fkCY∼Bf^knnNN?t߹s'XZZ<رcիرcʲܮ)3f`ʕ@vO>+V*ڱco&ݻwgܸqO̘1㩎ɉƍ vAJ޽;vׯOftޝ(߿Ϸ~믿N^oIIIQ!k"d믿N=غuSŝBV"##///NժUS)>[wqQ_72Qq*[poHܚ+RLJMKS5,W9•pO=@Y 8׳}~|>)$;lϟ?y&jԨobRJ~:lll0eL6 im۶Ž{bҤIض?<}rN#F@ݺu ֯_?5jرc1uT`Ν3oEOQǼy0{l̛7O%Qc]1~Wdddc!DFF}1'Bq_q%L<<h رvq+I- ;UbHT\}^2Qx%5߮;'nY8`n9?%񷾮bc_Mhѵk7޽ gΜ7>y$mۊ3gbΣyH$Ŝ9spU;Vơ^zѩS'l޼ժUC||<~|RBȑ#4H}۷o˗n:XXX`شi&OC֭[غu+{T*!akkիbor*8:: UBek(_e5{*== ,@5pY,^m۶[!l2u;L2;wzMa(Aʕ1oZӸ nN6Ev uxBT &''#2%4RgR0c'« BuiU*4h&Ncr7oJ!!!'OyܹsӧOo*Uy>hrm 6 cǎE\\F 4l7nƍh"4j!!!1cF.]y&.]e˖^zسgfϞ_~ks)))2doiSݺw"+{ Z??l{8Q:zz} 9>C0o-[SukbtJy/Z>|z!)2G>?<{(\ ¾}aϞO}~c]xセݻwm(܊såK£J{iԬOEc;38U^9XRce''szito6校$49vb1tZjٳ=9s[\g888h_7Ǝ;b8r̙e+V;sDDDcGA̟?Coɓ!JhԮ]ujޣ!P(<(D&TbM2 aaa055ERR^~b}uR)={L&$r3B"%%?Fjj*ㅹϾ.y=VoP&\.ѠA;v ǹs`gg $O< ggg!Qָqc4lӧOǾ.j֬6mnLڢaÆx6l_~hԨ=z糀D"{Q~}A/}ZӜVVVBmhr͛8B֭upy 6 A'$舨(j=AaѸuI)))B ,ԪU^D.?FZT1>Q+;.əT=z4lRdZff&>CDEEʕ+*_*UׯU;.o(^Kq]6&NΝEBBRRR4nܸD?+F J4VW^i}>::D*AiiiXf5&Oo~X8|<uÇe˖jA kFmر:']dQF#s(AƕH;:Z- uS; `>O sm0cǎť>x<{{{$L±ɧa'jq`Q6}T|qc8ͳ}8q>)Psv<ܫap}:L vnEqhO\Zh6)IYc M9WJ) 2/^up9ܼy򫆭#GDϞ=_`Z;ӧ.]?GE^ԮNT*B={͛72e 5AhhT*\.R0">} CMHll~2㞩lC\$ES?ԩS]6WXL!aafxK, 0h 8Æ xmoh.&>ǚG{\K:g8;B"+7)Z;vĸq`ccSs+`ll,]-ZT{R$Ѽys8;;cLT-_b 00PǨVʗFQW"::2L%^i+ǏW{ZhK.aȐ!f gş۾5 _9?%%{2IUEHH0 s6 ܿTuq%FcN f+B''j]kn?&M)gcYTw"Lܜ nȼ CZ).=kT(RgqŌj0>>1ehDsuE&M2 G>;N߶EY٤fR^H حEYNHNJ"S(Q.J:![HH0孱nzE_|JESzz:Rٿ0 Q `aaM6aܸqHMM?7qL&իWѪU+TV իW)@9 eоòN*H$€f|A:u–-[pyox":tTh>SNغu+<<<˗/#00:i+ z OYf U{=zMФI899!11BrB#==]:u :00M4ׯ@_'61X$ѹsg\xsEӦMjժw?NÇy氵@yE!>>={,/_~_U9Oagg5j`…سgw7}lݺ{ŬٳgHOOW+oٲ0S1p@$&&[m榲NVVV9Su̺z[.0Tn&M k@* ,, fff6mz*-5:|JR4n KpGo,nm۶áC\F"_˔(s[ J%Cdd i?33%^ks|6;wz'y"Du窸>jzTGYwSp`zx,Cjܺr+R%5ژBB 55gΜF.w\Ħ /**B&aƌ쳉B Ʈ]UF1w\ԭ[Vxyya;vm} U㳆gٳ!Qre|xjy)hٲy>/s?#"2n\i۬d#žJiL8<Ǝ [[[tYH c…Xr%ʕ+cܸq8s挐ٺu+|}}ajj |'S 8JL;@-WAC=$W^wۅCnժU%KmڴtysX|嗐dh߾=LJJBn accf͚aڵ*%ݺuC||<[$%%Ĵi_!99Yh*wKZLL4._TPhӦ^ šݕz0*Xh)䤤"[ICa6y > 2-jrKM{-pĘq=Z V?pJ j{BJ6qAR)d9_CT {lvX˗Dp[EL%v7vW`,XVTQrdFn!\ʤ!hC{aUNLP|8t(*RT$!$3 MHǏx%ihݺJ2[`iH aGΝQR%<|&M§j(>*Fzo߁#_vvUѷo1ե+\Nan iu9H0PȬ)jwt@(9U%:g`d!zp*m7a9v,@=HIJ1J{i ߿k$31zmtoYDwŠ'h׮^dHKK^jeF2H~ qe;o{r̙3hڴ)*VpYFeҪUmlhʸ%,NMHd) I ӧO WWWd2=zw3J:ׯq5&\p'NDjj*1j(|%I E\}l@wȬ"B& PAqzA,# l`00ЧzճBߟ^bOWխ{1s3SW(71Td&U2^%GVzѣX~=yW7t@~"Dv.Zel:ʎ!2_[naȀ ]!2;!ի###ԭ[+W,ўd@/݊*JEbPSNVLPЊ<`V\\XѐerK807m РWFPS#O@5fƸ<CG5|&0d~#}cotrCAvy?+ns0`QW^A.hK/-KTakb"ҀC*kWP-\-pHBDe̞b?Õ'8{; sUK8BMy F=fB\" $MAR dLpe!$K*UJ:*%>[1Qan3,g֌DDө"~15[@J`\tDDDDDDDDDT2$""""""""*ح  *'""""""ي[1Q9 -7 IDATQ9 Q9 Q9 Q9%}vI@DDDDDDDDD%@ݨP(JR+1d""*.w [KDDDDDD:9}bsS܍J"H0HBJ߳DDDDDDdtlWu}hNfQQ;o}jAMډ(7>V#$"""""X9HDTr|6O.Bg迬,@DDDDDDe+ʈ l0}Յ LP-FrwA"""""N(D[ODT5+-QI $1kV#lWwڬ$"""""*8 ㏱exzz"22XU5sL(J,ZϟǗ_~xxxয়~Bʕ'ĉdذae|*NB5`^J%b&b-sD$"""""*+tlWu[9 Imt | :tqoEŊ7n2e LMMѬY3ݻ?N< +++;v|8y$n޼ ;;;9:tӧѨQ#|7XbVZvVVV8<:uR={СCw^nӧOnj3?cHOOӧOׯ_KeESTr@HzWӺH$B௏Q𘕃DDDDDD^+ܣ5w\ 0_~%7ow>}AAA3gDY7zݺuK.BFd%#WXv5 {ENpE/ƀ }:/T=v؁8~xvаaC:u G!CUVg}&K,Ahh("##1gΜBV<{c6',~q + ><OtA֕:QيسgѵkWrM6D8q.]@u%KiӦGHHZ}d;#GĴiо}{2qxw1d4m>:w .QFA&MU_Kى7]n6<$X\X^;$"""""*: '$ammӧcĈ@nݰcd2|'A͚5oߎ & 22mڴ\.Gƍv ׯ|||l2˖-ȑ#5j`[naСh֬~G嗦`N۴UrA"""""Ir}T*…c3f"~޽{LP/1wBp}DDDDDDTdN.x09HTT RSSw?gb$s?昃DDDDDDg+&*"ppp5|||J:*R ~l>|R% Qa QiԨbcc/@"t8TƍҦA9͞=&&&^WRRR ˑZ/Z"H066… uŋabb͛7*F""""""VLDT^g+ ŢEPR%DFFBP@,V_Vw\Җ%K{ԩsժU3uV̜93}ܹ֭[NDDDDD^g+&"يL< 6D׮]jժbGVЪU+(,Y:u·~q!C`ɒ% +J߿]vNDDDDD$"*G8 ~`9СC{s xBX08 Q9RLOOǗ_~As%F͚5CzMC$az"V#rpٲeIJe XxzzE#$$D2{EQFbV#rŋXhBїwyسg*UTQfɯk͛7v)&""""A"rō7yf@DDDDDe4şR<6& (! (62qIeRD"X= 'RW($+KСCZJo޼Á ѤI :W\+pB̜988;;EBbz?}jt\Ңh"XyET:R3(DT]N\xw>@^ J?7nCfгgϢ UCbڴi ?PbE웈>oҖW2ɐd'sV e' 5KMYC$VNH$صkZhÇի[nwȐ!6mVZ lݺIDDDDDZr0yU2Bc孼9XԪTtC```OPRvmxzz_)[#""""EmWj U91ɐnA~~|x|1SBTPAyfff*Z>,Y:FFFN(=AAA!K7\\\9 M +1.X-xP;>T_V2NN.x0T2 eo5MDۉl)9lDBSB#;1z|@s;m2Dyc A*SX9H7VQN2Dyc daaaQfMXYY~7ouǧD]ݻwtzahԹ3<7n~|wQ[gܹXje*[X9HDDDDDD9IuYHߕ߇&L@TP8y^֫W/m۶DҥKaiiO>C1(" Bc{qۿ޼yS~ %""^bРAt2@,!))'N@F N:??"&T]k%3V-J:"""RM䠾+?cL03gڴi6m>/uI9::~ǏUCESB#;a8;бc+! H缽j*LpA""""""uի333ˌ5Je } 1cB͛zjXYYsEpp0={ZD"3"RDܡq?c̙B߸qpa( lݺK.E PbE|7zbΦT*1a̙35jԀ\.ǯ~pvvƻヒǏ(l1blwww]ފR*er9fϞ3fD2ϟm۱aXZXx^^^7ajf UT>rr2:uѣGpr NE i+ٳn:XSNw{!Vo^~{8a9s&EO`jb;ԩS8y$֮ɿK<Pf+&"""""\報1V^ ˗/,צMDGG_파0l0L<ܹsѾ}{ԨQCm_III8{,J%7od<8p ,Y"t Ahh(ѥK̚5 +fBWW^5k p$''*VǏ### Bk\٬o>Z NEidOƭ[}}1ew]:j@0ì̏\.Dž C~߿_em;&L|r-,X~^c.JS QI` ӄ$sPcǎ˗eJg}ZwIIIQ+[1w&QN jj'*o9]9ܻwΝK:""""""epb˖-z϶m I0i$+f+&2dq+V 11Q!cǎԩrÑ#G_='󝰪0Ν;HT?Brr2$ 2f&O>Ç Sf;w"&&R.dΟ?'N`̘1~;@arVVVꫯ 6n(T@FFZh-{%>} jСCu<ѣG6lj֬puB.UVH$qe 4Hm ۷^^^ڵk^'Qq*Dڰr(or0==cƌA:u\nݺzeff~È#Pn]ܹs;vY4INNaoo .`ΝpuuT*Ŏ;аaC?QQQQvmX[[c۶mU,,, ˅y{{IXN4YɩT*rJ?|ΝäIPBܹƀݻwc̘1pppRԘOOOGǎѭ[7$$$`ڵZ*6m48;;h޼p( >}Czzz_'Qq*ci113g9r ,7 ر@ֹȑ#Xp!VZEGG+VҥKqSN ]r[n9bݺuPlܘ5Iسg]vի#,{Y]k֭֬[ׯ_C& |5DDDSƍaooWd2222/_}DVj׮wF]xLJJѡC]Ey{.d2Ξ= ???͛7ѢE XZZB,M6}6ʾ֭[@g?TkkkԬYB[zP(#Ν;R TR$8d g7Zhn/ҠT*1k,4k r\r{.1e$,,,`ԩq yz;z*5ks< BNPUr/^&NWWWO1i$T\'OTٶ5r9={ KT*ſs|oF:u`nnxXXX$vyr IDAT4h:ǐ3gΠcǎ]tF%d( DEE!,, k֬?;v%WsӧOպe{xxҥK*]GDDDDOjKmL {TZpA11dVG @HЦM={`jj'O",,L=%'' O<5bccѰa"{ +WFתUKf>bcci&Y]W9}_X"d2uwxx8.^ &|sE$E8-- 7nNLjUvvvDL&#wؾ};N8}ܹsz*,,,0`Ԯ][VZ! o޼ARRRyJDDDDdhԒ.A*-8 Q㘃0jԨ|IPHsgϞETT>CH$ ֭[իA wB,|^yNS*hܸ1z:„!EjWdd$oߎ#Fjժ' ɄkBBt˨QЕm9sڵYXX >>^xkkkD"BxsPsssˈGvqDDDDDe-:S-A*-8 Q8nj֬P7PreH$DEE 3Ycwŵkкuk'T'Z[[#..dt nd2$&&- hԨ,,,vDD~7pvvګT\r xB//2 .\8ctaDDDӧhӦJ{LL ݻhذ!nܸT( \xQ`rdff*<==e˖aDDDDDzV9h׳7rJ Vz{F ֮] +++8::ӧje?~Mnnn!H`ddoooXYY_ &$ٳѣHJJۅnݺm۶9r$toKVLeib}Ü9s^^^%nJCDDDDDT|4}΄˽ᑿ$*>ۉʛL}+c2oJ@7ƴ$%+A""""""I-9'KB&+ @mb\lDy:[ㆈ6nxׇ^$)]):Q٧<G})VR)11('DX9H+A""""""I-9+` QX9HDDDDDD9d $+('VRArr2;vѣG!j$+(' P"HSҫ4!!=d1 SH(zg`OΚNO'44ɓ'0gj׮Mҥ IIIvFFI*UP?gϞ;<䓴hт={n]vݴoߞ *Pn]-ZdOƍ qNqR fo/EXX-Z۷3e*Vѣ:tͲuaϞ=̝;ڵkSJx L&\.-Z`dE%B!B! *}MJY&?|͚5ߟ+W0eZ-۶m;F 8v'N`lڴ:=>>oݻwyHHH ::'reVXԩSٲe FCbb"|=:B™砟-bՋӧO[fܹ3/^䭷bF\BXX/^䥗^bP4oޜUV石yf9޽{Yxu;k֬aƍܓ}%9(B!b9O?QF *T@߾}YlY1b~~~;v`N:e7?<999ʅ 8wʕg0vhիҥ W&>>3j(f&MX &J.sP!B!DA.sPӱn:.^^~6mʚ5kn9|0Ǐgʕ|> 6,^У/_?Ӧ,!!J*кuk~WfϞ̀vZ+9XP)]4'N 88ƍdҡC@O>I||<{%,,pBBBXxuׯ_iz/g$sP!B!DAŮuQvm*PYpԴ800LAVEVPNN\t7~'66ɓ|>̜9sHLLDӱb S-[ի,YBvvˠwpp0cڴi&Š49s&m8q쏸HB!B! *vczAPPM6W^lvFƍi۶-ƍ!x+|曄2h >"##1͌7ڶmԩS&Fq dժUԮ] *0osI(!$sP$sP!B!DAvAQBHIB!B삃ÞK2E !B&B!B! v-ꌡY@ ^JdB2pM2B!BbХT:5bX_f3'2.ΩX65:T*fay}!B!/[e^ c\DBd d !B!(a-3K2`0eBܒd d !B!(ș'3Bd d !B!(a`Rf./}wRI&ϼwпQ_!\A!\A!B!7sbxSd\bQ@#/`\ AgB!B]qqH0Tz 0bQ@#/#Q@B!B]ppۙdI(A!\>B!Bd++l9(J5B!BQ]p1%d d !B!(A%d d !B!(H2}E2pM2B!B$"B&B!B! Aq_A!\A!B!I核HIB!Be`ӦMټy=݆?^zϦޣYf6eԭ[1c0ydڷoϡC;M6iӦi6lu̴iӬ>#ԩ+WfÆ vxGqV~1VjW>{lF @jj*?={㙷#k۶-7n)KNNח/¦k׮vÃѣG[Q3fk]y衇1czᾀy={6͛7G9]$sP!B!DA&dpPTf£>ƍ;vɓ$''ST)v0XЪU+6mDff&3f̠?~nzFsz]ֺ}?tÆ 믿E\zSN0w\,Yʕ+ ĉՅ=bŊL6 i׳o>z!Yj2|pku0\pMZ&==t(xx &MDRRdĉ̙3۷r(a6x{EBb2_}nZ6~2LGϱZoL"kRjҳrh8mf?Zy{ϔE ٖ Owu8bݨ-qP]!B!AsP yCGB4ia0ؿ?ZbΝDEEsN^~ejo駟r%lZ[fǎ4oޜG}"""زe vv4JEzXz5={stYرcyغu˙>}:Æ ŋTXPZF\Rj %44VZQn]V\I߾}H ti3|@srM$[ Z28Ϋ;b2e؊'Coa-Yx{ݖ13Z}~ϱ\O+!B!>̙Cڵ)_<]tf۷3k,vJݺu˝8qvQlYZjkfmj*zioooRSS]nuԡ\r 8(,Y@NN UTv,^غ\||<7&$$i昸=š:u]hРmڴa۶mdggsڵkwL&f]P~}vÇ5hЀe˖qƍa6ygYpMy13 1biii,]jl۶˗/lvYVJ||zbcc2d-ϧVg„ dff:gŊDEEj۷/w}?DDDpe'OLDDþ9ڸOVQdtk؏W~z^QMZr:~fOKG?f/Gh7=M\̘xoqb#~AiFzrԯ<[Q!B!e1???;Fpp5@Pti|I@xٳ\^~e4 j駟m.]h~azI˖-%뫯b֬YxzzRZ5q~GT*cǎP^rl8dҴ8/eڷoO9{,ܹ;]~RJ.]+W:ξeh)S}v>>駟ҩS'kzϑVeС+WҪU+ :ЬY3fΜpzll,{իW? ]ߪUZU2 9^revm[c00hfHNdअ-^|5鷿f\6z7Uҙ+z;6͔O(q=[կJh6>n~4B!BRb2M&ÇaÆɓ /D6Ņ } *܋m^pի̟WDrrrhذ!ʕ\r,_ׯhXj}5r:=%sGe׮]\~SN;͛7gΝܹeF{nfϞ͎;25j޽{ T1g7uذaC6mD>}l%~j5NB; :fff:ܯgyKb0?>Æ +f͚_|slϜ9þ}{{{s5-[Vuڵz۴ircǎQNӇNdd$C <虃Y9z擑|ޒ!Z<(\X*cec6BRѫB!Vb2ׯ_Ç9~8+WfJ`` 6e ֿdffZOf`` W^Yŋ([,nnn$%%Drr2&Mu̞=pڵ" Jq bŊ4o:HEvؼy3sُ 6}2zh!!!Oa%00:tJň#8p]LJAq~b08sMCY+ViӦ̞=e#⋌7f˗3j(ziӦ"5-cW}D,]\ܹsIHH`Ʌí<虃l>Xeg6)bRʽSy ޚߴ8ǐˏ{ӺAUBJuB!B<6sl6c41L&t:>>>hZzjՊ .d, cʕuСC@߂ \m'&&CaX믭M֭&L ''H||vBדeˬM 5 fȑ>}t.\ݻv{wyaÆVwر>|ئpll,ݺuM6dddX[,F#ɬ^nݺ1qD֭r}>>>2w\VZ(,/$%%(͔cbbnY=s]|6n?.kow-^ͥڏ|.#,}EADv:_JvN3-YB!BB*ݻw*VH= iӦիA -[ٳ)_<3f`РAaaaL4N:ѱcG456[nĉի:um (M8]FժUY&+WDb67n!!!mۖSRB|\%s`RRMf[dd$YYYEvwW_E믿ZLb{QFR|yjժ˗mTRoߞ&M0qB͝;eYS;w&,,cq;g9s&>|K.ٍV*tbuZ>sL|||Q}3fLYfMΝs=DZcذauT{peLt<z`xHio]Sӳ]CèO\ԅb]ݡ f5;щ~/7lB!JKKy E fTf0GUs81buֵwNX,֭˒%KhԨ][(,:b8+xb~yCaPa_Sٻ<1fCQN{aR<%tZHvAdv-|2>'OMϸ“TZ}'SL?yR2;ԩRS!ަڧHB!Bl?oGn]oݴrJ0L]8WeF#:iӦOÆ R(NBGzݔC!ooOwPu2,_?o%xތMZ>sVn`4ѻ4)B!Bp߉8^z%k:- ӦMرcxzzҲeKVX!J5/\7¹ 2~1˗ĬM Ԭ @ ed}y{ObVޏ4=Ǚj;iU][B!W`:CCCٲe]_3W |8*ASaIEVr>oOwܵj2ǚKy멙 oH^(j|pמbW ~>/@)ϵ tnjݶB!B砸IB89(B!3sPIB&} !B!(xp8 h8jjW.ă(ЅB!g r dA2pM2B!BdYl9(J5B!BQ]pptJfAQ2HIB!B삃]eِ4 3dA2pM2B!BdbK2tUb}a4;'pTBpPTfBpM,>23anNЌeS)qϜ8a&&FZ]%<622{?VA!B2pA Oc˖p[L-92Tχ#gΘHpOq֙b#{s} ɺ"/7f^Ⱦ5/4Ю]ƿY׵kZ+sTmqCIO~RJAݼ{s{uغHiDGMT)6ϱN_6uHZ4,qBv6J6aaЩSg_'춵 sk40beʨ Q1yb$=|~ !,vWo_FQH=h4B{MDDPL*U1{v>šC&U^bw$ 5w%BN%,,l)1тo ?lo <wNyIҳi:uO|ƍN!<< G;n>Ι)_>զY&SȴObsXQ_jXÌ^TJ5]qZ5\@^XOj&N\9Z-Tj:0}GҢ_) >zd\=+w^^ksQ# :||х f*WVmF5KLs3i2F>X ލk~=8?yܸlo_9}:0ؔg2=۶W>LQr%3۷8܇%K ̝زŏwLO"<\ʕѩUլXܒ%zr"\йsfdo+_iOL4p\ QQ.v/CA<;zlۍdf#F8}̦M<Xʹj̙._"=bz7%1F4tn]ŋf~ɓ|7cd3iR6[m3gprί^W>df*wFe7Un$trۻk%a?.\^= ׯf1W͚j;deYhL ժ9s̗_y]o+r/Ç{0|r~58}҄sLƏڵ<^.ȑ\b{ &L⯿yeOz̴6-LÊ\Dn.Ltu8:_Y,н{eʨ8>m9xĘ1ʺMˡLTO^S&M46}R<8Wqpb&8udsLz4&NYyO6;x͵;j Ѩ<1g3Ɠ?4꫞ܸĞ=,^l~9 30'ɱlwsAA!v_QF`%d ڃ94oF 5?ΡC.AN Inh4kʋɓ&T=k !&Ƈ5n1q횅(}FEc47#ji{͹DE:Y_6oΥgO77\:urӳ,H)SXQV =zs ^ԩ!,ɛ?:lZ558zĔ)^ho׮[jLE2*T|Pb0֮U RwW-DDPAƿRo{QeUޜ:eaT[77"".:tRWrǃf4Tf[&_웳;"#<z)w܍#GAUOtiC88^o$|޽pwR--_E*j|ҝ#uh9~~ЩӧmՇ*^ʯ dwY,0{7!!*Px5R<={a2)Ym5`;6Z)Xa`;pgUW țmIgYr^= __X]!( x%d ڃ9Q_Evvџ e˪P tA۶?eog~-lޜ/ܑJVys.?dcG7tqcÆ\v0RښF|1wwfv#:{/: R2[7'ˮiVREVΝ3a2A@KfL&ʕ֭6<(He}2+ RS- i4<TV-% '-j*ƫWzx_Q7>\jr qSQ//ӝX=f3Ze`T:V;3tIc5; )St̛c>ϧFnn鉵MIzԭٌu6m\7q=fρJ+g`T/ PAMӦ\Rww>oo\.A_E&'Gt6`Æ\"#wcE5gF=Sr& ?ή[]#$$)[VeYtF S}>hF&NbVG]JRg-ɔ)^je=tХ (`!xs%@Jl6;,AS|CyQ`ʞ?ol Ԩ曞+dYo|n.o,Ym[M @Y>?01ifҡa<|6}g~} kVM?ػʕE^gÇM ΝDFjعH.奲Q?OG{2w3ٴɏ%#>>icߙ  0s7ݺe9L򒟗Քl!-b* //l77`rڌVP5`-s[M5Xa`͚\k?Ά Qs}kRԤ[^ii(AAψFkQۧAz za>ӳx[ V1mZM_t/̀4o~{ØХK^Zw_d}fU*ϝ ='U^}6a *VT3i|cmۺ}Ŋj?&KJi\='O(WN Nfg[0j4Ν p* I =|6eS'7|*-} Zұ-[j''mmzzq(WNe'ݥKV "@nOwJ5bp9|ĨQNec vg8בtMn}dd?zRHꮎm#Tw?бcw˕RTvsDaS!I核H=șek8."!Lbb<=Kz›oꈌT{rww(_^m<3Ͳ6Z.] ol牊rcZhZKNZ2|Y_hƍ5L6aՍ|(:71xpzի1pӰ~}.pℙuvThgϚl 3))y&f7eUkW7VRS- |E+]Zž}F_X$xzv6ҧϭ<;wY-2xƍ5)⣏rXfbb\&Q;=Brr?u4,zi_ly36;HJ2SrTXl8en#3f8D݊d שARW}UΏ?I1(ͯ׳o2Ǜo8~Ě5|].eϼҥU G7l1Kj7&<\MfZ?aGGޭu{2eTϥK|5J?dkB˴i^ ɕ+zp_咛.&H=zt6{8u̬Y:+OfZʗW3vl67nX8}ԩ:kѣvNn?_ρ&,md_~]@jO?&s|$'+Ν7΋LX,J{֬ΞUY}zHɕ IDATϾ}&w`o~؍Ll~)x~*URF8Qg3\S622,HHP^Hbb n5z䈉ӧMmntк nvZ-kg\hǔ(7Vu9c dg[x-yP^Tfp9:rT}6c=m~-SX>0M{ KLLY_U6{Ak*4TEFHdqr|TT=3g75jhh*ʕS,|}~ڵ'ZZ)*[k=ړNutw' @VhTF9t#GzcnԨ:h;*4_{zWO`S\d[77IoDqc _|:R=͚iqs+|Y@ORJq^9_syp劙Tk?Z- _9hЭ4ٍtdD/:_/Z ժ㙴l͹$%Y(U*Ji6ضa9?g_?;ԫqlhPCz,t|^o_wuˠfԿIj QG9+#q>mbÆAwѣR)#feJBzݺ^Vyl[uTuG/6Wo3JeS:4:Ŝ99|ƌuk-#Gf&6֗ɓuPZ}g]0!C2iٵȚ5B#Gl:EuW[Kfݺ\F[f N4Sv:]ms'WQ͟PulE3-[>t蠥V46o~k ʢE>.蒓-w|Bܯ~ <ܺ%$$H"} ڃJrn>d5j9,_pMYEɢrܧWaX,A?nT)utp5~oxR|V|K]9?Maύi8pa!.8/9ԩSٸq#iii0h &MtϷ-J.G{iӦ~ 70aӧOgg} :o `sN!k77={d;֋#R%ʕSG4mi;9r59Bq?*}mۖU{nQK޷`ZZ}=FIe oW9x7|S`BP 'J TY˵k$%ru…:t(\B!2spذa1zZֲeKZlyO+J9ꫯ2c OrJDRSSl1sP!B!s.sѣ?~W_}<ݻwg޼yRlYٳ'&MO>ԩSÇsAhڴ) ˜7 );h֬aaaݛׯSF <֭#,,5j^HBBBhԨ|ѢE4lؐPڴiݻJ*ŧ~JTTիW?gٲetڕ{Yٳ'gϦO>oߞmr!_NRlӵkW裏x饗ظq#lذ||8/fϞ=$$$w/])+צNJ\\﷛vEz)>cZ*Ǐ硇";;sqFZ-ǎ`tn}7ofر̟?D-ZUxXr%/_fܸqՋ7nX~:qqq믳i&ٲe .ycccٺu+oeW^O>s\r.]8<ׯgԩ8q\RQB!B_4 X&==J*Y?=zȑ#րEll,C .ӧOZ-^^^hтݻZu?~_S @2e0aݴŋM-Pռ+_Jţ>ʶm%=tPW:t`O>I&Ѹqck 8q"T*dݺue @ڵ)]4lٲԨQSNY:t5ߵkWL&'O,qy"##Ẁ.IB!B]`ʕ9s挵+???͛vDGGzj^ٳgرuֿ{yy?7:_[ ȑ#IOOgҥ6.\ &&rQ\94iBVV&L`d ^ ))IKK͍N:c6nH.]hڴ)Ga˖-p]yhh(MYBB5t?ʕ+KNN&:$AHwO2n#~5f&2z 9t- =g\~=3g9w}÷p\C[];{~!B!$.sݝ>cDzh"b׮]6lْk׮W_4)9Ю];Zha=MLL իlݺMCΝh44hٻ83gΙ}X!"RٳY´ !E}EJQ٪I RJmQQYf33gf4g8gQ~>1}\rƜy_[oEΝygHLLpg A2d=zFꫬXt{wƒoZkOЦMyZhZ׮];É~;˅QVSXI%::qYF.*Rfώ /^+(W.M ~}_0dH&6Oᮻ2?#\Pz*_rf&ul EJ#<%KBز%i`˖n͚7.W_ufÁ4oπGw $%9zѣvtdhѣ3۪ݻ̚ɓ23꫍<`>;7;_wokZy-gA,X˰a+XX`;OsSg+F,V,%WGDbR0PDDDD7{9n'>ޒRZhA☃Cʥngb6c2QtiΣ8X+0?2jA)%4[oeqB,YYaȥ1=bXć6?J:/m9&eMA)윓]{Ȝ=5P\yb2tR(9(""""""yMr$9M&?b6p)2c0ϥ‡EJHaTrzvW)o%%F~rЮ1ELz}ߨ."""""rV8'-;>.JI孠a0p: Ry}Q]DDDDDQc#%И"iA)̣88ⱑRZ(9(⛒""""""RGq%PrP7%EDDDDDbBAߔ”ˊ")9("""""")9(%E|SrPDDDDDD SrP.+J䠈\VMA)D&ψ#iѲ%ͯo9,xg&O-NAߔJ\r0'7aK˖-7߰rK r9QrP7%EDDDDD0lt1tF@hh(=w(nw[{IF5E%oT@앸`LL v>-[nFS'n ~iۖG=HJJ %%q=кuk:w̡Ç/رŧ䠈oJHa%nLˆ#_nF~*h"}9z<'jT/ ?Oǎy^Mc1EDDDDDh߮+ ӻwo\k]~ !qw"ʗgԹ35G $Dnn.UT!<,\LJ1wnII]OS-ѣ[i<~ZYx?EDDD(q|ʗgҤIKQo| ߟ\^m妛2L%""^=jR Lk]v̝㶯\ JaVvVYHx&My睂lR2\9z:Zw )GxjOg=/KDDDD.%.9sNXr,|WdggQVmr,7ϽOZҹS'/;p ֭[իˣZժTV K(9([YMbBNl ',鿇w,o_ `>?/R,\Àf/>ZF^{- ~0wn0-Zv6ٸ<@FrH9KsyE ˖qH$s뭧jvxv{0H59Sn.X,딕gР͛#Ȉbƌ`׶O;z` IDATPNĉHt ȑHc۶ex\B%.9/ݺuM6kDFFҡC#ӧ#Fqknݺ|3o`<*UJw6m®]Ѷ4wgPR[Zj6vیEiTʘ1Yxpz; [SOeSvˊ?LfaĈ@5 j}puF LDRoWŋsc@*V4W\nx {+\O>ɥQ#"""r(_539XJyf3g;r[ntc)S&J f0ѯ+?9h)kJz}\f7aɒP k[o0bDԬFrr$ccL 7LZSd,_ĉ{Y3*Vt/D,\K~fg-a :w6rr 9)FRMl4nl/hŸ`g2jTV+|ml6gD6&oͅ/+ظɓvn?~Vd2p-̘LFm{/^aԨǜ99$'ٰ|Q(MY$n;͎ԬGn.LͲeapC([ӨQf3o^ 塮\bbh֬۸&wG0{{Hɲ]e?}z',ƟcCǎ̞mp@|i:u2'iEt7W/3#FdqfeCG䬬(>(1c2iy w<7ߜ99f?NPPA[?ИN4Ӡ3 ٤ml ZP̍2Phuw^@h{W37OgvժA <={fW^i]Ff϶+DҮ%E %E|+3z#W^Gf6m{ńcoݕ4̄ \+/k8vAϞmc6G+yyVz0r3rek۞=ӧaz+ uʕ3NL׵viҟ3Ҷ>ޛo0dH)WRoðakOx_Ȳec HvA&Zgذ >:yqc#Ӧm9vѣſ3LDD(CbgJof[ؘ4)hH׮f"*U t?|<+rZՏͽ22`Lf !$s}qy<\6NZu;pX?֬ (32h3{ꔃP1!!w 7F=  ,\ɓQwgrkքÑ @BB&W[ϩoCP޽5$\>Jܘ",9Pn + p AJ|Y.n=panv曝~R}|UOVztvlH.oұo6WyhȞ=\g)S'+`~(wǏ;8vڵV54ǝ|,7wo~s~aօ?zvu3w \]CCaԨ@o&g)\9gۍFV_~0vm?lp[ߴ?a6ýl`Fsx#os-6ѣ~vV䠔 Î[r+|^ W.8&/]˧-&eaCnС,[K:FWQz0yi'8uidg*":i\64rU~Ԫed\֭m8dlvsh0б?*WabEIIӡbټ^[{-D%((ByDHҥ>b\LgORή?l/<{9lQkȜ99 p7&oganWcV|tsW7Z6d;\]cc\۶͆\qEp6cXAr(( ;C܊BJeEArr(QQ gÇ|ygQs{9?ɦY3#qqJ,ѣd_/#:vtkW&dӬ?22`L 8vnbϞG "g>gO3o8zynmѷyrg+k9o_%ssYꫝ6fdv&Nv[m޽́vnսӡlhʟgwѶmrж{ѱO>:wv.DRM5-Χrb ٸ}̜CDD )Ԩ1"}tAݺ9b'.Сȝwf¢E9|}8u(<NOwNr6<}w<,*峝m˕3ti3gZXVYOѺ?_Nԫgdl@<@^f:uʠFT,YR0b&z+W^ɡNTn4mۚ3`LLn&&ObȐL*WNe+WL0nW^Jݺio F b_acԨs+N3FZΪÁ l8ĪOmԠRrwt8f#uֽdm^P&)) ^Ɩ0g /uKgOSRTʟFPN^*fm`Lgto㑮4n\6Gy]/3s}3/""""ڵiuKJJ2`D8-RrPJ 9([Ys`Hp8y6d1lX+L(mqfvg!;\[O,^{J>KO(׿PtgchA5m[A#A1DʚL g]>KY7.W^`4BݺF" ,L_DDD(w'ƺ-SrPJ %E|+e²M֮ ͐KD_DDDȿc[oL BJJiيE|l""""""RGrp`1{>og"3\ܖ")9(""""""y}=e!u+k׼-)&o.aKE.8栈krlɒ]Qo="gUrFA)cA_cO9v<ŴO]ݿg.)k4栈59x<-GIv vR(9(⛒""""""RGq>)GSNA +)6fE9(""""""yt+h GSXR:x+h'-)kϣ8^6D)4栈osPDDDDDD (H> J䠈oJHaAQJ%E|SrPDDDDDD +fqPtPrP7%EDDDDD0%岢䠈oJHaJeEAߔ”ˊ")9("""""")9(%E|SrPDDDDDD +իWs7S|yʗ/OϞ=?{&>>>z #11m_M֭&MA)D&knVCbb";vCtԉ[kG]vMQQQ?_#>>͛77J䠈V⒃6QF1ydJTTь=!C0nܸbETR張_~lܸoc׮]})9(⛒""""""RXK臘2duÇ~ ==O>x]V+=קRJ<裏+믿+88)S#uCѿUǏ'''5jo>:wLΝ8p={$&&n?õ_|:uPbE&Lp&SrP7%EDDDDDܽ{7kd2y^:&>'OO??#G֯[cDzl2bccOfΜ9l64mڔݻw~z6o?@RR5koonsmѥK8 8p Vu[oa9 Ax2%E|SrPDDDDDD +qAՊ_h4{W_}sRR%hذk8p ,k9O?ݖ]¸q0L+WI&9)obaĈ z Ν;'==$F#/uJ\s%))R7CDDDDD#11QFbѣvj֬u̙3iԨQ'/iԨ}ᩧr[DZܖr믿ػw/+Vt=>̱chҤ 'O[oG޽Xm%EFA9=z4!!!gݶiӦ!?JEDDDD.G%.9آE L&kFN&$$L׺ӧO{-(/_N8|I>}zO矻<\J]RRիWJ*qrq#55p=sNZlɀݶNAjrcǎ̜9뺥KҪU+BCC UV|E+))Preիk݊+hРԪU~{]v̝;pQa6ݶy衇]?ggg裏RfMWL8w6Zy=zy.-ZDn(_rrr=vg*|֭[X~=Flꫯwu{Lf rs=:uk V^M7Ddd$ uzV\1=%""""WKffϞ#S8q[AEl6Oj%%%~{׵Mdd${bТE 9{g ++?;vhe˖dggI,Ô&- cĉ6l `ǎlٲQFpBʢ}4hЀ͛730}G!99 &;|!;;۵p1U^^swo%;;Heرc9q'N 99&Mmڴȑ#nƍӲeKw%!!6VsncX\*-- Dvv6ǎ'!!7;0`˖-[Xr%gi&nvx<6pi.]ʋ/Ȳe8r5[oj{JDDDD.LË-bΜ9TRkYfQV-BCC'SNtXXf"225kW_Y&|Fo8l0bbb\?f-[ƪUe˖iӆ|е͘1c9r$ "((?_UҴiSHII{TZG}y+˔&ٶmSLaҥ9bccׯ˚3-^8&NHŊ+ &MpwƐ!COkwʕ+Yp!jϏ8]QB*TF???*Wzٳ]vq}ٖիWJݽ裏[. 7@rr2:uh/̤IܖF֯_8]6}bT\aÆۉ*`dffr 7qF;wqNywӧUVݎ >>C駟2vX6l8$K=SNQJ{1zj֭[G:uE.񞊊J*D& _ѣR7GJ(%E|SrÇu<|pW©y^sqXp!'Odر}#::n#G綬pqqqq7S|ycy;w>wlܸ'Nw^חEv[իkxZ*~~~pAl6sժUn +$$,m0ܹ3+V$44QF}v222=%""""FI")9XK.ݻ5mhh(+Wv OM]3fX(W5ktM~oԯ_Xo {vnwILLt7==Ȯם,-^clǢEr=N@@!!!JNNKCA(9([YNfeeLrr2)))lْ+Ž;ػw/k֬){ʕ+IMMG%66͛ӿ~,YBjj**у'O2j(Cbb"C%::m8:uD^^/,Y_~aۙ6m{!%%>ŋ3fk٦dk]vZ~'l6O?4vrӧ?pp!VXu_d̛7C~z~HppYYhh(cǎgaƌܹ?qƱt"믳tR;Ƅ h֬qqq\s5ԨQzLrssYj?k[ԫW/^uvɡCx'8p ~~~z7ذaɌ;-ZpUW_=sMDDDD%岢䠈oe59ɓ&::+bxyx뭷k_>?$Tuɓ2d+Wf˖-\5jĬY?~<*Ub|DEEn_5[nI&jՊ,ky7|VP>h}YVXAZ0 l۶-[RZ5{9ϟ*{6fggo裏$VoݺmR^=֭[ǡC7oԎ ->>͛7_fH!J䠈vAtգ@F9t~~/2l0x&L@LL x4iqڵ}x5J""""""RIu]ܲe u!((zF|||Y/")9(""""""yTL&Fb~cǎԯ__ga '' ڵkX,7Dr4ikJ*ѡCڷobᮻM6ܹյ7,,{ns>Voʹi VZtU8;1 ^ϱJ䠈Q |@뮻o;wY 쮻{"KJJVZnbcc9rHhh f#77 *}( #55GbXhԨ+VbŊ|$''Z9W΍")9X$$$SO]fxҧO|5 """"""^uj~@lݺu -[JR s[DQN:ۉ $$ӧO֥hL&?~SNO)9NAjrcǎ̜9뺥KҪU+BCC UV|l6/ݖwЁ]- q[ܳnpLhh(7t[-==*T@xx8{&##c?YYY9UB۶mٵkW;{lm;rrr\_ޝ 225jlْd֬Ys^GDDDD4VUZ7@r07aȌ3xYp!餥w߱vZZhfcXVRRRx]]UJJ ӧOnm6̙CBB5o!//[oHكbl6ӭ[7q, V+Wω"bbx,8q"Æ cر-[0j(.\豭hunCO>}ˤ+Wr 7=w\ILLdӦM4lؐΝ;O?a׮][m۶ѬY3_fܹ0֬YÖ-[f̘1^_w޽l޼٣Yڌ;-[Zf0[Xt%lHu*UЦukwN=y-tޝn]Һuk*UtAշo_-Z^:uaʔ)L&f3˖-cժUҲeKڴiÃ>^VZSzuäIhժvW^y%]wݺuI&n3f #GdРAk;v+uwU.%E|+AomƔ)SXt)#G$&&XwUǿ=$!` H JQA 6^DXirQtI $@ٛIB&y3;;;w|wsH6l`|޾};u"? d~aQ}EϟgϞ޽{TI2eZ*m۶e@@^F RJL0J*Y~L>*UPJz!<ӨQ#cǏL`` ˗waƍQ|y^z%c(ڷo7>>>5 ܹs 8֐!C0až5Օ;Z$?CBCC&!!!lܸ0n8mZb+""""RإX<-Z,0͘L&L&{VV)))WymBCCJooƣ>vWWi6g_[}(_tɋ/h͘1O?ȟI7nnnn={GGG>#.]Dr8x ժU#""3uT=Jfزe 6_~YyѾ}{&L-[8v{aÆ8q˜"LJ~ٳ믿Xt) W^aє*U9deeo>z>O?mUgС899'pݻ7 ,`ڵ 0Fj*[.{~Z ڷoO\\ 4`ѢEԫW@~w֭KZZ>>>[<<̏?H.]1LԬY`ٶmF{%X"$''X/Hrm۶f̜9> ϾO>~x:/DT,."""Jq1䠈mJW6ߟҥKܯK.l۶x///~֯_o1ߠ?NNN_>C1p@g,2tPoNbb"[luVXbgϞԩS曔+WuZ ӷx̙39pt3vƹUXQDDDD39XlYԩCƍi͚֬5q4i҄pʖ-{7*rCJVRJ7|}}1L,XS2|ׯOXX[n_Ϸ-;;;zAll,;v4ʻtBtt4ݻw7^urro_~RJƼ9غ0qDΝK*Uaɒ%FfbĉL2*UТE .^Ν;^:!!! :@qƍí;CPPaaa;v 6mU^z:t舳3<}tV\}K/DV,>#VA777^yHDD^`РA9nݺN-طoU]\\TSB\]] 0|ÔHIj͛7'++Lcbd|r1OS6mګSZHJjrs8@DDɸz TPz72zhҘ;wn[DDDDN(Պ\/w͍͛Ӽy[ȝ䠈m%59(7vԨQX-_5jܕAڵkӧO[DDDD^d58Xb>sAIɠ䠈mJHnsOyp̫RN%S%SO=ĉW-w%ވHV,ȑ#7.:׏`V?gɴoߞZjsN^z%ڵkGݺuټyM-qCQV-jyMAɭX9xW[M&ݺu#""cǎgӍ:ǎElܸgy.]̦M9s&?M-q/BBBX~=K,aԨQޡ+UiA4砈V,iii ޽TƏe˖_gF???ڶm @6mHMMGe˖=zxu rrѫW/ԩ'O,KS(9(b""""""[Hr19rRjU N>m|6~wuu'''1LT݂t=<uG}Ĺs|2͛7Ύ;o2k֬""""""6X Y΃c^0r}ϰ`x{ݿ"|?!{6nȊ+ ˕+Gll, "xOHHH`„ :t3g닯/Er""""""QJ]䠈m%190k,&NȔ)SR -Zŋܹի[С 6GeҤItȞ+0"" fΜ dJ Qӧ:u"44ӧǪQjժtܙf͚8::쌽_""""""E.%%/g)lW~YBCC, 9,00M9`OɉIu3o\\q9߇|?bcc ;-bGڵk;ye/66pu/s"^7Og%)9(b[IMH yb2z--|97BwElj"Պ JHITȫ-YH)9(bViii|""""""%A'((9(b""""""[$E_۔ܬz yp̫\^WĶ~h]DDDDDSrPݿ")9("""""")9(Ŋ_۔ܔbEmJHnE<*G]^n")9(""""""Ir¦ESrP6%EDDDDD$7 ʲ(yp̫z yb%WĒv &$ < "n)Kjp0Wr*t Ǜ|HZB &4̀/+RC)~ uqLDR;@,)*sP69(""""""꜃׶.JJќ"iAɭPg.gn%(9(b""""""[&䠈mJHn4_'(9(EKA۔ܔbEA۔܊MrQF4i$mgΜˋYfAOlٲ$$$乭[n,[Hq^zx;z{#GJ.MDDӧO'--Ў䠈mJHn*9x ~7 \vl°a k/W\СC,_.]`2 }%ElSrPDDDDDDr+6A֭[3o<,,X@˖- NBB.\gee>w½ҏHŊԩ[l\WrP$JHn*98h ._lTVJ*Yݵk[& ZjpByF?@Ŋٰa?7RJٓs0gN=QΝ;_>~~~3gϞߟf͚ׯTZk9*USO=el}7_bϞ=X;v>#NʩS߿?'33Dn݈رcٳ}1}t222Sر7~w|2p@z-ӧ6m9::}vw5]dzuV  /d'{>H\\onժU#>>ˋ")9("""""" ÍWcbbؿ?;wxbwNv 'wEѣG6m=< ֭37lؐڵkd=xxxH۶m9t萱mРAcooѣr Gaݤ2~x([,/777z)RSS9r+WرcF={TR899duFVdaӦMn#Fˋǟilk׮UVCFqݤ1vXY&>hOzzŵJئ䠈x}՜u9y[|O( <˗ٻw/WfРA8:Zfll,իW( b۶myŋ-VNKK###}*T`^T)]f|6~חdA:}4NbРA$%%QV-Ν;gpŊ-jVٲeɶm'##{{<ʕ+1rJ P\|Wj }s;HI_B0oVybWynBrܰa[n^Bbcc ̳=???FŴiܞ{ rωh2 &+++~U\zu[oۏ2eʐd=111[}q!Yj ϣL2?ޢfO8%K׿uSv_fF""""""R8՜9 _Mxx1[Yt)[lȑ#|'`[2e!33Tz_~ITTO7eX_|W^?^zT\f͚a2x뭷$99^{'xT=F.]믍-[޵kё4-ZTh޼9ܹ^L%w2/fLΟ?ϪUԩ&MVZ@2ݻ~8ߜalќ"ioOv7yxj~+_JDDDDD}29XLuFϞ=^Z5+&L@\\+VdΜ94l~5ۛ`+Zn͛o9<L2ײeKCJJ >>>,XgggV^ͳ>ٳfȐ!=c2h 6oLʕ9ҴiS}Y|Aʖ-KߵkW-[FFZA9?^^^,Yg}'''*UD߾}2sLfΜ7ߴO>w7ߐIDDꫯر>)9(b[ILF>xѣusFS+Ws5zJjidDDDDDKIIO<f'gsvyYdEY0} 4"91)nQ8>Sߝ3$w7g {0tHfr'b4|x1wFZgW(z#""""RmݱZbccgrPJ.%El+m#,>;I<-uz%"""""ro(vKɦՊEljw9.XOQquqGLx#Ύ~uOV`iVHEFy {lb2G歱qr8{߲^<?f_rog/F$2_["g梍=@Rh':4J,n\MM'4=hӽ[`o7ٷbh\+آ,;_oYO^-(z-wnaն\Fjxyh'VdWxk&~}˔/Cjvx+y(""""rX-HaN$r JJѺW$GI@OH+;ܸJ݇xCcz>Ѐ_ψ?{sJ*1+N6t:4 uL$*""""PeL5Jئ`$_~m?{!1},/팋#.]e4 a׫Wbo/LY#ZV jpb.:܎ I),6Z!t2Vl>J:UZɇ>cߨ @Z!e==؈FNcOxKsP|)6|Ov3R:Ely GW^keX Cp6NNbɔa4ujoof}#[=J뮕BM]=䠈mJLJ> m~ KzL3qvt~IJja J8T~ja 4 }0c`AheNonNT+k֪FnY魱AG:4ޞe>HOi"B딖I Q*/e8Y l]>[_sd+][ͳ r&p弹p*uWjF unzJ"@sئ9 OqgpZWvp3_4^uqtQ|W jOoHK4>ߘfZG04+,d r=vDDDDDJBO'4[H)9(bBRӚBDZҧmyMCaudpğIf֢\KKrIJOP3ΝPtئ9'G<dn7'qq_#B9~F) ^4/b@{{]h<[~;`5⌇Ԅ+X/ zu>eH{;úڿWls{{;_^aޤL= ;ج/=։2^F]߲^y),?psze_Fho*QDDDDD<T1ɯٳawWJCAߝ]u.2 LE,C)>l.ZX,V,bV+^ٗnH(MGo"䠈mJHnLD+'W0E&YY]䠈mJHnVyMNWynsW8CR0ix)Ev_fHS'[Gf%rgIQj"ibɭPDvyPrPMsHn8s9 /_6nȁ7n\ubbb?η+^^^4i҄͛7s5}]vٳӦMRJ0~x?Nhh(s%$$///ƌd:>ި;|7onƼy>/oJPP+V0~t)sꫯPOf 6hf3/_'O}vx猾_s&MDR(S Æ cڵ7웈Ƚ$]%%ElSrEFF2d<==ҥ Æ vy-^^jj*qqqx{{tZ|r&OLYzvw???]Ĕ)Shذ!aaa|dffك?3qqqYڵkSziUoϞ=ڵ lL{0O>İqFVXA޽8s挱Hrr2?pB6mdsp0**^x3g0{lܹ37B <$%%q1&Od۷/rymtԉɓ'Ǒ#G:t($''˖-ZO>aҥ$&&2qD6lHpp{ԩSILL$++?쳈Ƚ'#:pGGG̙ëʄ 3g^G)9(bw *U2~*T+lsѢE<$"==///|}}ׯϔ*U -{{{'Ç端HuЁ 裏2i$:wl3=ǨQjժtܙf͚YLѯ_?:DݺuDQ~}.\@*U7o+W֮]˟I*Uh޼9='O>vvv?_ΩSc˖-VVZmۖP\]]yw:t(OԮ]ۘKŅ'2w\TBLL K,ss̡bŊԫW @RRR/""""r/KIIzYl6?={P,2",L>x9F1c ˖-ˡC[n 0>}l2/^ի;v,AAA7~xرٳhe˖ر㎜W$>ׅߝJ8rw׮]ۻx'OpBvul[w䁖-nzؒ̏/_6>XldҥK޽'䠈mJʝt=jO89sV̴7F֭ˏ?HFF&yꩧ5kӦMcԨQʽCsئ9z{+-[F\$GWEDDDD+VH<<b3H9(?9("""""RhAPrP6%EDDDDD$b5砈MsHnJJ䠈mJHnt(]=䠈mJ,AAAlٲnwCDDDDDat77o8;;3{lU@R񼽽gϞ899mUJݩ_>]<8;;N5?>۷_3b,Y… 4>Fu} 599j;FRk4JIYBHޔM[߲|r222ظq#s-#""g@v-'/ҲeKΝ;ǚ5k ##iӦ1zhΟ?O=ӧYYYV>} pe̙ÓO>Irr2,]xܹsjʪ4LILL$##xڶm9s ~)?Yh+VPJN:Űa8~8ΝĉVǻx"AAA\ BBBo?IHH`ȑ#si3jc=O?dZv U ,0/^LժUa"""""BMtH)9(boJQL~N>Mj0=t}YN8#GxgWt DLL ]v%55[rJ~a̙3V5uكduaĈx{{Ӻukˍ}VԩS)_|sļy>|8<ތ10V^g}ggg,~Vzc2#F࣏>2ERDDDDM':ib7E FA۔u 2OOOt°a ZSfM DJJ{{{޽;kצVZdee;]veҥ|77>>qXBBB,sis2en*qrZj?: fILLdӦMرx"EDDDDIrPM[goo… tk֬7Yw~w=Jv)S>hOf̘al˽ɓ'ʲHB;vM6߿Ç[ 0UVk.СC}hXZԍ&000߶r;[V,^֭[[\'y>Cy^F{U%E_۔w伲z9V^M=իM6矓'eʔxbN>̈́ hذ!LXXvvv,[b|{{{FMqqqɷcǎe}GQ&[Jh@J)ҫ4"PHDE_p "\qņ+M *0iD:ncn6YYb}=O3gf9ۙ۷/c޼ydffsN$a\\.\pNٲe9p׮]d21`KCff&gٳӎEa4ԩS5m۶]wȑ[ 60r:B!$E"Ir jժ[Ʋd:Z֙Hۿ?իWRJ;ׯ_}j… ,]NCբ5k>, 4`Ϟ=ԯ_9n7 `7mdTZYZZ] !Bq?Rx˝p8 [~Uԑ GVdE<eܵ ܛŠ8p իWwfW-[X.^Xd++Vd晩[7?TjN端 /V||R]=!00s\9t<3g8˚vrg2QrEF~뵿|TVJxx:M oGҽCçO@ppeʤ1doOe˦קL'36- Ŝ9JB6fɤB!Da59غ$&=Z-L&m:{?[4HM /yvE--yLL˹sH,^lɞ|/Z7|xf{>:Ĝ9~Yv]<|i9q"Gx%_qtU Yk*x4'¾}:ds6񇝾} ˗Cs_Fr6nbyso;׏K̜|9bcԨ,,#333|1"ӧ<7:mv﶐/׆ :v8ڥ7!Ο^~ҥg0mj$vF mf槟9s&Y8xٳv9ufпE7Ӱaxʏ?*TPQ_3stCOsK4"݊ IDAT׍5TʗO#66s皈b̘lBC MsI\Գ_*Zey5v'l&^(W.twؗ:uTsgoߥqOʔQaݺ?XpPB65P\{Z:4_z{B!J❭ғ͛m2xb.IrPJsrp|Aca<͛{k9;׏ ZCXP^SyE))!DGk0ݮ;̑#AԭUUDEiRۅ MĸW6iSeۮ]5]4(X}-Fu,t릡}{ ~Yiܲł٬$p@wmE^:/hЋ ƕ]Ugit>>/\`|? >ЗQ $ӒL6SgO-K5ܬ\iU+o:v.p&LGrp{X5} ׌;gر ~9A)رm᧟IHjU5O<'n?r3x=_Ν 1s<.5fRbϙժt޺zΜz_WRkbQ+URsb01|xO5-Zdo_-gb>V7gӾ7׮vm˿eUt>xXLD iޛ%K|5kع35k 6 ]k!"BV O>zmd!0P#xNQ:pℝ{nUSlgN+V+;ghtpLFT4lsg xѳg&;wZ2JC"@^lkܾ5[*Br*7vy,f̡o_zegO jM*U[- q7e6+ 8P~~+${Ѡ;v( t:z5`jp!fͼ =} !%]V\F(:I YiN~/-Z(ɖ=ɈzuSPsℍaz(qPIԮ}6._vл ce+n]/zbz:i +;vXGæMJcǦMvՠ}7:pJl<'l r{)[׋Mkךi}n]%c6++sr6 ԯc2NwUWyS3s#GlDGoR#1Pz:ի3eJKs`2Aժ+t,Q#' eʵknBBT;wCA?]AʔɫWCeίZ]&q . \sPX̜KjMc,\&4 frE;իG{-R8 K||Ӧ)[zu5˖)c_59((>(c{! ,Yb&==&9s&Z55+~ |?!!gnM M|Rsr-C7[عBV(7[p8$㏻6iM||~׵KoLRSyE=;fwPV"%rAٲj||®M\![ ?d%::yl6AZؽ; ddxNJ/Mtn;+Ѿ}&/;xIZ ù B!JnWJsr0t Ld[x]Iͨ0a` ~ Je/Yb];o zҲq;,t{w-6Yؼ5Zr WOM͚^|nei4*B*ilfa|Bփd;ի1jT6|Op {,N49A W* er3V9oe=ٳA?Z FIB% =AjmB ruo-\L%. /da08 ر83[NvV7W_qt0N٘6-Fp8B?yѶ7.9#X9 'QSOiQ4o: s V1fJTܩTld[X m<تxYwii.yyAÆ^cN+v;hMPٳjl\̡Cαfe?^T$7v-3sr&ֲek׷wev1yyy)w1l ;>Z`;i2KkƌɦeKo/8n]seC]_|QO*jڷoQǎmg^k::T˾}6fȹٷjg9X,Lb6+棢 <پo`P*.q8a~ldv>z=t׳Y@\8a?1q_}eEső#u ma.8XFQlN֭VFAeoOLޭLsyt442sfcds9&Nph)߯׮9XBt~4ty]=Å} !%$E"NB;G6q`^mW/Y׮~؋4O{OW_U+ ,]{m[e͛-|tlٙB[SOi]^r`o߂]e;w`4*u: Rѡ7:tpmQ&޽5$%WsLLfl!! aa̽itٳvg]v|I-}N#00 2ض͊^fY4h=VBɽ>>|4Ν˫[FUKɓ6;w}\YEF2xpׯ; 9:uFٳ}]ۋ֭3^= 5y)x?\.翿.5Ӣwػ7'ԮN680j[W{χUԫΛoARƍHKsܹ&Vw6Vy6yV7[^=JPRuȢntF̢Q#%ڵh,R //gh|?}חyL4nNdd:vYxm5tMbAeѩS1fZ R}TVM㭷\ơz5oɫWDD=D¾BNoZ.)lիWS],,(Ur<III4h>3p`իMpRSTƑ#A.ɻ_7rEwս׎ѡC&&#!Y䓼FjJ磏|Gӧ7f rͅ vެY#G>g`Unbs~~ !ڮ{ؾ-oD T*vBO³[y>r TއRl];ŋݏu/9!$$hqA3eRp`088wPƬM:s8BZaj3~{[Wom({~|߃',LErr!%JAw/ .ջ*b.3;NݿB-XsSWJX\;CC߾Z7Ol??h3F銗[*>̗#HMuA6sY+61KSߊ]H5;^!7݊oٕ+Wn-Ե8Aqg.ҭX6E}>v;ҭX!B!sڭvW%֜Ardః n|B2I YiL !B!(\9mƗZs Myw9(gqA!B!S߸Dp<-g_`ϕA hv_!J[y>]!B!J^s_-{aPy^wܿB|HB!B|Ś4( $L%OLL oֽ.B!oXΆAI{DBx&۷o~~~\x֍CVRh4˕+W̘1 Vyf3&㏣RPT)SAV9VB!wG& $L7ٳ)WmVh49pZ"55(&O\pRSSFAQBX|9s%&&1cJhh(w{bbb %00ݻseK4hO?̈́ {{{Cz!>>^}Uʕ+Gpp0ݺuɓ.u_RR%5kF^믙5kޅU!Bq(1SNEhh(eʔW^w#A!<+AϺu8|0+Wcǎ{;wcǎ1gV+fvƌ\Ǽyܮ{3~~~ߟ;v]̙Å ?9rubh"*Uŋ?>Ç%ZnMbb"ϟ'##3gҳgO;ơCzjzY`W\akcDz{n~'Z*O<6͹{;vzj֯_OLL /VgyhI!BqO`NN=zK.$&&rQ rg*K³Қ6mժU#""f͚1j(ZhA`` ]vu63}tj֬Iٲey<{3+V$--9BHH=~qEϞ=[.7o.H^x k׮$$$PJ:tL#nݺ ڴivɔ)SjժQZ5>c͛ɓ]6˗g̙:uÇ;}w$,,/׋B!(SNNll,T\A>G5=" I YiMm6^/1Gvv_.GRR2XwNv8v3///u+T0?Ɣ)Shڴs>3իGDDƍsvӧӦMe˖ <Ν)I YiNYv-]t)Zf„ $''S~}{9g7F|TR`~)/fÆ ;vѣG;?ׯIIIűvZ|ImX"jujIJJr.KII!==jժzr!BQ",X1cEBB3Ntt4ݺu#997x!C8.\ ,,d^|E6n܈l~CVӢE [ v#Gc[-[p;{#I YiN+4G=eԨQ[v-gϞERR%b||<ƍʕ+\|s'-IMMe˖-ς޽;ѢE]VͤI8}4׮]c̘1lْ]ٲe9|08B!B{D$q~w*T@ӦMYl 999ƢRݻ7sEJŰaPTԪU:usNV\𫯾7ޠrϳqFKPPΟ($&u:ZVEӹVLyu l6@hh(AWJJ m۶% ͛7駟:ոqc҈`ܹZ;[Xj55k֤gϞjʥC aRZ^fϞMڵiݺ5իWh4f͚B… TPwB!JOO/;n^8|/_z:u0eV:`B@9eo63xb~zJBB۶mc9?7|l>|/H6mDxx8\|9nI&lݺ>}p} IDAT0p@xMܭܿW y(x 47|,X_~u%*Uiܸq1N!Bq?ص{/۷7HJJƅT*v.$w)9_^([,ǏB 4nܘz(ׯӧO'..0ev>{1ݥFw[<2Rɳb j׮- B!B1Ç={6.]h4b UV\x%Kp8fݺuB ԯ_)S8mx\tyǏL3s.зcʕ&B!Bn%b`[իG*UYz5e˖LJUV_Pre~a='dϞ=DGG;96mЪU+U $=sPJ똃g>,?C~`„ Ų/!B!DP"9(DdA!B!(yng"$LB!B!+c K3sP!B!D~%$LB!B!+䠏w$=%A!<B!B59XΧ$=%A!<+;,p>sLT** ׯϴiӰZu>Cj5=;w.YTT=z@PF 5jDBB])B!* ,z/QS%Ea žlٲԪU{Ŋ]RRڵsYV>|8~)C ?J?>իL8ʹsի/B!@㠻.f/ q?Wn4:x 'OK {wyEիJ6oLJJ 5.ƙ/_;w ^O\\zmمB!"W9(Ľ$1fa0vk֬!::~ѲeV\^zs1dX<СC1L}=" xׯϕ+WQz#GpQB!BKc q+guAVNsY߃ؾ};TZzX,YR~FJrDբjIQTL> 67115k֐N#,,SR%z=UTAR{j*իǛoIϿ!B!PxJp8?-z*uԹE³[JP4hpo +B!HvKmny$IE_!<+A!B!ݵ1,'/S1LB!B]I^mQIrP!B!D~7.PTαr8[~#1V~5cvN`b.+DIWXBF!B!DVq]Gw󳚲8y69YXmvTz)۹( nP!B!DSc&܀ŘIbR) q7ȘBx&c !B!ȯX̼r HrPu2ɘB!B!+hp6$'A!<`KLLDa6B!BnŚm䠸W$9(g59ثW/T**@ڷoϪUeVvݻwSLg̘AÆ o{šVQTh4Éʕ+hZN>>/_qh0xj:t3ȸq㈈@Qn]]@ff&Æ #88KJJsY&K,iY~w^xj׮Mpp04oޜٳg{ I&,X&B!JbM6JrP+³ҚLKKcF??ΐ!Cqf3GEE1yb=VFFZHJJ ˗/jՊTj֬Idd$/vٳDGGp80EJ)=zٵkɌ1`W^ի\zk׮ѤI@iXԩ> &33?йmTTuҥK]9sW_9s M4AaXX,.?$$$}vF#7o&88cr1~w=ʟɋ/@rr2^ڵkpĉB˲d}Q"##ٵk\v{/{ιԓjd28l&''/ץB!(y$9(JI YiMx{{R :SNeҤI *TO?\W^!66bbb %00ݻs\ݻw;g4nܘ2e0p@Fcf3= *tzZh;0̚5 CH}7iӆtڵg͛7>QF4mڔ?ʕ\r-[ֹ|T^'75jয়~"113gDVaʕ0x`{; `֭_*٩Sشi_55kDVSzu1L,^)SPJW΄ Xz56 ҤIyx_>W.p~1cưk.Z-͛7N:޽իWdb%9u"o+B!Jl֬:NGxx8&M*q/$9(g593+gǎҘvY\o!&&DEEQJԩS.]}}}<L8љʢyPn]gرcԪU |A sڴil޼7tR?kV`rQzu޻w/ 0`Vرc$''IF\b4~:ǎsSY~m|M ovb̝;:uPF j׮͑#GL&.?p7n܈ٳc-B!(ټo\EQRa.^'ׯ_#<¡C߿?c>};CC)ŝt;<7.$$NGZZM׍$22{׮]/L>5kc^lڴ "bŊsT;wfŴhтǏsIv[.\xc>|e˖9!NԩS1L 0|M\N?F,Xgy:J#gzzzVVz^zl̙oʕ+l6ƎK۶m9x ;wiӦ ==*W\fggeΝԩS8p k{1aUբhezj=z(ۋ/O?-B!JPh46mʰaؽ{wԩS)eV_G3I|2&Лk٘2e M6%22ٳgcZ2Sߘ1c\޻w/͚5T™3gxGyG%aDDDP^=˔)W_}E:uOYɘBxVђ%KiӦ2>^~)/fÆ ;vѣGΟ?~"oڵkҥsYTTl߾c⢸z*]taС;ΆU;?3LPL"""HHHpvIn7eyl6s̹sZ*.]sZJ4KTPYy5==ݙh4$$$ʰah4FӴiSYOdff2zh>gCB!(}JTr0Wbb"K.u؞Dtt4'NXwy;wt_IIIDDDuVn III_ǓСC8q#Gޙl`0G1qD}]z=gŊv֬Y_ʕ+Jjj*[lc_vn٢(S ˖-cο1 o>z聯/Fr~GTTǏ'==nݺyװaHHH(YJJ ]t[n;`p`Ajj*+WdΆ'x;wi&7n^`` &M"%%~ 0|e>O?eƌL0WJҵkW, ӦM###K?O@g㢪f`dGwQ1T205s\%2I+#-mGs4q4552= W}g`0ÀK}^ҹ{眗^bĉ\rK.1i$JW^3 `8\xyyѫW/|I:dm^#22tgVThZ%-ZkGdd$fY㏨T*Ξ=KͩZ*~) .s΀qܻFJ*qin݊-5kְ}v*UDhh(SL!$$, Fb̘1ѧO 7̙3T*KvPPj7oڵkYr%L<͛7+?~ʤ*M4!88> _FŊYp!6m, ~~~zKHH׮]ܹstЁKϖ-[L&|h4JwAJڹs'۷oWf+.qB!Ŀ*99/#ʗ/ӧ(Ν˗/+W ~('|$V̼y0a3f̠Cxxx8<B!kU~111lnnnJC^`` /2 6rDGGlC5c4eYyzzhVf,,Rx0db!يxx B͚5IKKCPvmΝ+B!x,\2ǏgĈ zͪU1ϟ?8p `/^g&sss㯿"++ VK"77[RX"c a]YsPGA6mشiW\!))[nqA6l&B!ʨj Fzz: ,VZ?*UЯ_?fϞPٵkWԩCPP۷'00XG歷ޢ_~̙3Xj֬?֭3I<<2֕1B!BX،9(D>sPɘB!B1AQ6IIB!B1E%c a9(B! :B!BQPFjIx$rP$rtvvvt!B!(R,%⡒A!+:t@RRpqqE[NYqww7Yvrsst.wرcؠRjԯ_~ᮏPn]nz3,X,KMMeDnHHHPO>:u@ƍ9|1/^SO=+WfΝw}]QQQtwww<==y0fϞ=<tl_-[憫+SNUm޼zaggŦ̙3 2:u憋 M4aΜ9fu"33{___[.qqq\pVZQ\9<==y{qϞ=;00%KF!B!,)JO<+⡒A!+IIIL4LΝ;/L߾}/a޼y?t&''h$66Cʉ'YYYdgg>Z , ٳ9sӧOsFe˘5k+V͛t҅Ν;ϙ?>ɜ:uFu4i҄Gh"VX̙3|aaaEs !BqJ5rе?-my:º9`kk=UVeرL2 &Oy<<<ܹsx{{rJ5j3!!!JWaWQF888͢E۷/o]^^l۶MYfoo;ÇՕH:DƍvL6M)EѫW/zVeӦM?Э[74 QQQܸq'''v]d^ >S,fL|8={ U9ypvvfԯ_[̫?ѣG{nZ-M4ߟ1cưo>֯_ODD`[[neҥV֖r%fΜ+v"ҵGɪT*ڴiS}B!DTnUR!41-_ ft7K9BX&BXWV#-yHMMѣ+?lܸqhт86nܨ4egg3yd֬YCll,999u;Ҙ={6C%11:j*rssc_\\=yyy,_t5kիWyy7y& ,`,_֮]/׮]Eͺuɡf͚899ѥKVj1K.ER)5K IDATt._Ljj* 6TիWLQ㯿"''SNaooOtt4\zyQJ<<<֭n2;ԩSٶmaŊ;w<.W/^Aʲ@j_scGRvm\\\={5qD>xٽ{7WfѢESfMԩéS8p...777WNXXgRV-Gsz:uٽ{7!!![;R\9Azz:+W&"":u0c z)|-[ʚ5kS7'''-[fq]rr21 ,pos%7oNnn.7`0y&!!!|J#ixx8s59O5gȑddd`y摝Mqn޼7 .#FЯ_?Ξ=KBBUT1ёdddd?h"LB^S`CZF[3ƍ뫜ҥK&煯//^4us[[oѧO6mzG !BE Hº9HKKʕ+|||ۛm+ ?c9r?ӧӣGJLL$ Jի6mڠV1b]tήw֍#GxbRSSٵk=o*TN\\٤1`.^h9}4'Nĉ4nܘc7K/ĉr .]bҤI 8JEtt4Ν#''#G0`F+W&((ɓ'ϱcǘ7o7KÉ'ܹs1cǏ86N3g-Z --ͤQ͚N:1|.\իW0a}EVӫW/<Ȋ+HJJo!::^zJ*Jȑ#y <.]ÁLqԩSIIIaŊ:tW^y֭[„ HHH`޽,YA6nÇJB!($rP} iӦِZ-j{{{+^u|IOqlmmٳ'IbF=XX@@k֬/ˋ7x9s(QZb#q?>k&66TVZeIjՔ_+3%7i҄`>#^J۶mqtto߾ 6ӧ+^|9iiiT^N:fqpԨQ3???C`` f͞=8z쉳3899)c#JŴi駟PT,1>,M6% uW_РAK¨X" .dӦM,ٻw/!!!\vsѡC.]J||<[l1.`ڵ\OOO&O͛CѰfoNJ eʔ)a1^);wrMʗ/J2?Q!BTfo)ߺu d!{eLɿJrq;KϕU*Ubɒ%mj*וFC3o<&L3Сt:Ο?4 !Bbj;/&&F"E֕Gի֭4 2˗n:6lUVeȐ!,B!BsLT**rQ~}NJnnٳQռk3aj5&M@KV^O&Mܹs .ЪU+ʕ+'RF UbooOӦM?M϶mܹ38;;SBڶm˶mL{믿NFFƌ ,PM8N:lWi,ʎ;h֬TZ)S(rssywrm֬0;Ɔ &&/MKKFrIյY`ԫW;;;x={j<00%K^!BR, /&BXWV#srrtf233IIIիWOꫯѣM||= ~ѣҧO322xyHMMUM^VbggGNNٵ[k|˗޽;.qqqrys暕5'*6B!m$rPH~СQvm:vȳ>knÇ3uT\\\,Ӛ+ѧ*,r͒)SЮ];*T@hh(jXؠK*Uj?1kHOyi֬rkyyW5j]k|_-^vZ^.[@^{58p gŖ%wSB!.r0,, ___ ={Ev7)Μ9s:t}9N"F| w駟'4oh"%*`07[oY=]t{AQV-gϞVZ899)ի˗Qׯ'11 DGGsU͛G*U[nܺuSNe۶mlٲ+Vp9}]?M e7.r_GRvm\\\V]={ *ۺSre: t|'|,Y?޽{qF֭Kv|2IIIfqEt/]JD2c:c~˖-L۶ṁRSS㏩QZ,22#FeƎ7|s%/^l-;W[^ >>ѣGsA^u._W\]{Pk)/ L²Mɤ!^Z!QXEn:\\\L<ۛtD a]Y9r$'NP>3f(~*U2k|h׮ʕc͚5lڴ [[[ڴicX|wh4ubϞ=fLs!995kRV-VX=¥K8y$QQQF3rHƌÜ9spppzMڵ3\+͛7\vu*q]gARJ4lؐe˖DVP=oixl߾b睔oqu~shZ>q~~~fIY !B}}7ڵ+uի  S={I2kK",GލǏs^xuѣ=zK"**?ADjՊyŋMf֍$ ֭[G pssz&?RRRl}ZƍWpx ze<22EY磏>$''w^~gZn @ժUٶmz~GSs… JzyayyY9qwwo!((-򵖗zX$ʪ*k!B&rpǎԩSUгgOV\i //rIVXAΝyًܹ`ƍ_>#Gرch4/_'Zd$G"FjZI@찷Wc^: >^8CERDkZJ2~%VZeֽ AժUS>*U`ooFa͚5l߾J*ʔ)S jԫW_Aǎc/_4WNN 88j(ƌ}!00؄'Nի,M6% u*36N:B5SO,,00={IHH`Ϟ=oq ̙c2ٳgϞJHHH$T}-![[[Zr;w}vn>}On:i۶-^^^JqߢݝSvZqqq1Io pqqQk[ˀ:tVT̙3QF[gΜAR)߃Px._ky٠AK¨X" .dӦMJhL :PTY !BǞS>E-u_^7777WRrfs0`/\|'''fϞ_Dܸq6lkV޽;]vO>̞=/2w\V\ʕ+ٰa7]6&*آI|R( `~6S^pӦMgTNecӦe!e !Be9x35 c9($º9̮]ܗ.5*GG\2իu~?:Kƍ⟗x{:ߥK0Ń,;w?nw̘L(մ<*Qw W_e㓌C"AA)poNxxNBR8?RS<$rPj`vv:rŀ}"ڵVѬYJ{ٲlڷPrvrErs :]Vgrs{dyICR.{P:\%gqu4`9WbngnpC-;gڐ |E=, Mgc W_:*&od7cF [} ,uٺ5a'C!D!9x;RS<$rPj5(vdgCVVYC-Z^vI< [^P}qqQ1a=C}`vvYY2QrN]ӧ_RRj!3ӝwVvs N!1ј]h4CKh6Z !DY'"BXWV#COPP ..Nf1Vd<3ؚ+"B͆ ̆ gpꔞS\te\<<>7ްM7,pd,/)3'M7׷!.Kb^j::,^hv\557,qT^22ط/]xѕtꔪQvvŦMNDFvVR3Ǖg,X`zM y|Y;w:~SZn-,Z?;ueXz cӾ}$'Ӳ-#Fd(vM#0І(7:vԚ ͛r+W̙YJ^h`N0e*˖,ރyyйsO(ǭ[niOiddNj9Ҏ\w^{zy|#ii̞СJěN3gf2j= Tf85ݛˬYY_ѣ.T""‘rrtv6~۞xwqar<93(=Ǐb#.ޮ+bӓkZUMlÇ iW-7bb  У;s?ow?uJԩ8ʵkntj9c*{_korq( 51yrk8NN<{'[%%oo59N͚BQ<?<{5Y{nΟ?OBBlj QF)º98{MP^*owb`{^|Q =Ο7_?-olm|y,بp䈞<:v4.9[Z{撓cAɴuNٶcG-璖ǎR pqߝ;sQ#nQ^w̡sg [9h7IxU;4GMDpuUb ;6o6É橧lxM;\\TliKh5knG hGÆ6/Q$ロի6mrue`Ҥre(cŋ4uT1si 2vyOZ5 eP{6EEHƤn.O?-G@ ժ͏$~1O?d.%ŕaUarT:ur)=.rTb-z }@ CBBlxv%NUӽ-[,GEF9}Zĉ尵zlhNO?NO?- WW?Տ~3clG<=UԮf„rJ9Ni^CZjzgoӪ-A77Psgϩ#G$o_.\_~!3y,jЖN4TпNRs JvO !x4<[Mi޼9ݯJ˖-r5]A!+ˑvsqQqA*j6n驢Y3輥KC(B۶ƆÇs gO-۶_˥cGcG6Tbv4mk<ܿ? 4h`LdǎF}z%38X u>>5(IIy㓌O2'gk5kFp ի݀u W2[Gz:&vs3y޾wp+_qu|Oqa-K**J^𒔡]ZG˖ԫ̫+\nPRzc7ƍSHfΜlkXzq2ٓcߣ11<='||Ԥ`(vvPLWnZ/++OO68x~щ\UKb$cerJ$?Ǐ%SW/r-x n]~]͛yqH.Rn<.;úumع;x0<ֵ)/Z5ɧJ+|y|m6ڥmR$ZH%66-όcPf'>$ڵٰ2%݋}h9t(˗ lܘC6Ԯ}yT{ABGc9 ⩧gQ" 322?xܹ3WV?ewNfܹ3))g۱cO?4+VO>t"Ÿqzуk׮ЩS'.]l۬Y3Ν|ʕ+lݺFQR%fG9(ue9r(^rUE]`ο6`0@ժ-ѿiYNZeM(;sxy[ڶpp.6]__Ю[sض-GiD4SKdku< O<φq1:ܸqŮ q|UoWەWض8^^jbbL[Jt`Jj]+UxĉW&!!Ϭ۟ s'$䑜gXREY](.?;@r*)KmOP-{)] FF MgLΜqeݼ˗WGfb*sY<~rYWF2*QQz% ߃*h௿\ƺEcꇗJi@&cCC))KM˖q63{83kV?CJoWhg0mZéS.;jxdFcfRhdH:iiy=ٳ&s \l'C3X 77U}kcX{ 7&O.GϞZ1V0A:up+x4 v/֪qc֬ѱn$jx2(/Vq/!wE @VݻwӲeK{9ÇSߺu+K.1o<bbbׯf"66={ceqűcLjVZ6mڰgbccUxyʗ/OJ߿?˖-ƍ|% º9XȆGsv͘*1pnbe<ƏϤqc%k St7}\\Tfco!*_==U< |iƈ͛u8?%$Ė'^3REEFcpk3iOOзo:g?`< 2 [7-~Ellqq MpH.HM]r{oaנel~]ύƼ<{vUZȴiY˖cc+TP-*>08c7>D]LAT#[de]4c,[0::9­[9KOo}%$X0AA* kp#[O?xxXF#VJqqQd~)WY311^=A>9ծ8(>Ez5'vLTkf&ME ڡC&7b` tVԽc:/7OY/΁&|qkUp䈑BqA-ڵ.]Ю];Ο?ϭ[;2j(\p^8z(Wfvf.]ܹs@0}t=ŋի-g}ÇcXؽ{7=z@PR8y$M6WڧA! WQ3u:Ze ^}ՉAR cU$2DzK$&9sgzvE+W=Zע5$%YlÐ ru!#:vTYv&=BA!Cei޿h3[<'%ٸ/SCLG@VxWWвuKM?m RnsfRJaai̟B^Nc0-}аa?jUF`53g:E7ΰi;?EZ<|wA:$HFMr>}Aa76w(*/=GQQTz&i]ϗTL29ۅ}GԌi$ZNF %NN4X΍ŋ$b)Sh|N(PnҾ:ߐ^4nO[ζރ lᲕ*%0}z-estκ8GTڵ!>}4uz ֠ԟ=SZa־o*,=9j.@˖IMMzJ֬qw3Nn$֯7~#&ƌ_"vYSdRu*Uh`<z*f͒ٻHӦ*J) gz<=L?ٳPqvŋ]>=ڵY\c+kLg6l0иqӦeйÇk<8//J͚%k({z*Z=lJug5qL@[l`C`ww#FҬ ]R aa鸹YVet,Grꔉ-ǴJvɴiCQ5G$ԩ,\~$_Պ^HJJ$*h7hذ!ZM`1LFp@YBbbbhҤ gϞiӦ\rZM>}0aǤI A{aÆ`ڵDDDi&{9ׯ/l;א!C4h]tiӦv4k֌oߞ l{Ǜoɔ)S1c̅4deAxx&|c =ƍxY/SXժ,_Jގ; !(7N3Blv^AK իSV-fϞMvPΝ;sN9?\ryݶׯPre qqqTR,]?=z`ΝDEEDnؽ{7fҥtؑ}?2|pN>_ۢ"+DW\)y IDATA EmaxÇ ˿AI]qJ'w6Y,ޜ:eb@-f5U3>>9 ڔX,ޤZtl[ab~k*{b ef0;q9snsBO!e"_p쀋ޜݺucʕL<ٶs >FY2}QF /v"22Fȑ#yYp!L>z5jyy:t`O>IFprr"55#GЩS'xt:Ƽ3b+DW܂7A/8{iY)On_aܹ҆.Z:J {7// i$$XcG EYCkKCAVkyB 8xf5_-غuk o0+ZjEmgϞoAQTtՖХKΞ=XO֡|SLŋ$sPUbk AWO^/S'5Pu_"QYCjuR+Bܟ͜Bd9(9(B!"[tttYXՊ(JE]X!B!c:ݝsPB%?$.B!drE2(d !B!ȭL3]4H核$sPIܹst: ݮB!B[f6dI2(\E APP(SNlذd2mF#Vy>t* BViӦZ4jԈ۷ܸqL:TeL&Z-G/On<<#~mRSS2e gΜ **zJ*ӧoUVӣGoڵj Xd F矷gX]6;vmsrrۛ'ɱciݺ5NNNԯ_pdFȑ#j|wxxxp%F… vu aŊ̛7ZͲeˊü,YiӦ ބ͡CJwB!Bgxbԏ=;qcv(C//u-j d Q9ȓO>IJJ A쬴SҩS'ٲe c>C֭[W_uX~ll,˖-#559s0a a͚5̴x:wl~_MZZ\znݺF\\-?믿zׯvЩS' `Æ deeQNslݺc2i$F#O>dqk׮^{I& %@DDu,LG, gϞE:u-[~Zj\|TB!~Sƫ;=mTQA! W3FewAbccW5j԰ ^z0qDm_|-[T*0`&K.Jff&?36l8;;dJpqq&"" A7nt҅cDzn:9֭ˌ3Tj'+Vi{ >TZd6n8,X`]eI}zƍp[pssJRRR)B!3 /Bd Q8quz=UTɷO?%00F1f@JϏ 8MҤIf3FBCCYf ~]0Mɍ7l kDGG $66mn9O^5k֤^zWqt|ǎ9ׯO?g^СCKu- o| 7bzzz!BQܑA!BN2sDDDE֭f\p(f͚eۗ{q .ef3ݛ]rqN>mT|ظq#'!!^zٽf͚٪TBttݶ ._uY_TDD]tkf5/sV-q`СDDDЩS]݂/Ts !Bq?cB (\E4 r>3z-f̘Sc+pssZmK/qf  BPvZL&mϞ=Q* 8NWd́Xt))))ڵBˑ#Gwj/ǎ#99[n"\+D*j栧'.4i҄7_sَt ÇHjpww^c1vXڵkG6mxjZR㩧YfݻMhl6Ç )h4 bݺu̝;*UmYZaqԩ,\s|ˆϏ]vy Z6_f.J777v튷7?07n`EFn-Z̀UVn+G]9sϰapww777nݺERR7n-8sJ='>>իW;,W!BH۟lWAoܸAÆ `(\I˗ %~(y5kvw*{Z*˗/w޷]֚5k8q"B!BIђ9(Bfދ֮]%0(B!y7( [I/~H2TG{+DyQ܂7^Ƿ#==m۶AB!MN)胄(F<)7`(ҥKeR eRB!B܎24\K̳_x( LX0a Q$sPIB!B4s0+>vq-hLqgHA!B![$.s%b!oFdh;vAI !B!DW>P/ΐՊ(V|w|hLTD4۳ػxqT{L!x4sP$sP59(D*j`@@vݝȹsf^|1WW=kPM|HH%pZ˥K tr[;wΌNPNĉ%zǧxg~eўy=6vlロvĿ X!Bܾ2%sP=9(D*j^o`p|=WqrJ %wի j+WW"vc 0 h=_i2n#єP:֞ƥ3ujQw;斀{;n]񣳿jKL`֬LөY3wzH9s 0sf&5j$@vv EBWHHj{`>Gﱒ>˲|!B4sAqH1_M6!37U/w##Gj$TV3rumz̒{oAXX#Gj9sƓ'<4INJ =jbT{NǕ+^z3zO8a`[g._6iz5>$M܉E 5b4BNjbc^-[C{=BQH(W$sPUA?4ѦM2 FF$NQjuOH&DZR:YYߍnS'i&fȤV-kVȑimk0@)pI:Aܸa_H۶TH6oa1cs4lN$4)ֆK1"#j,23C+UJ+^R믜6.'OprJӃ&vmܥKfK=!!Xa`<=ju˖JuNL֬quԬ$ @ZaǙLİaZjִײm[ в֭UiS޻dui[Ax3f2TBժ yQQ&Əߗ-3ТE2 ޽Y,]m[y{kN,YJ*Fo/w + >(^q7i6,6uk5ݻW00|m䥕+kس;lCo":ѣ@ʶmYozаe5d4O?em[-wYꥡS' ~, kY` @ܼi桇쳭"" ,Xg&wvrg&@os=8v̓{̛?U ݺ#.΋E\L`;|;.yѴ?K+lARy.xѿ֮11BBR6͙74ɉR7YSI*[{=k^ߚ5V][IL:2%={طσg=UKIhh &Su? U'|nY;#cV7Ǝ2iћ'Ԗzlɢvmm W#_? ڷO?L2ѢX=uD˖9z{+VMǛg:||Ϲmdwn;y$3]tɓSL,ZdE^oaLvtgF@C&FJcg\l矍9_0yr:3ή];ᙶam嗝yӛ?׭x/zлw Nxы7tg04B!DP2nJZZiii߿СiiiDEE˫ @ff&}{;w'N0j(&''sMoNٳ''++~PN:U}B2(JE3DžvT4h_?-V>D^T*x'̙3rFNcz L\nΝh ~HV5.$Dր۱kٻHj*:dQ#NNp;wfѿWWUc *ܙŀo7Sf=zhpr6xqm۪ Ta+o匧oo TO]2s옩:Gf&J߾Zfrq11fr|ܸtVMjDڶ-|qq2~̓o5R1zt3fwq.{oݲfLruUdL:}̶mY}G{e5%k+iF̈́ NkCA389c3AA*[#& HabW Z,d+..0xO>qjUMhHe;ՠ@:JZTqlc&N01}3j54iO-_p6_IJ M6壏>_ga2S9Ϸ (9sP+. =πܿZ*WVTZWud++[BСZ[`N޽6LˎYdd=F[uk v⧟tﮡwok޽F|}F:t\سHF587pk&003 1ر&ćfصkh3u Tk=|횙Z ^B9Z-3a300ɖg=;5*vM ii]gvbcEֱ823-\lã{4ҥ?.DFz2k .K nn0iOvBhh*ӧ; X{=<LOcg>8~4ԯo==-ܒNNy9gQ Tku˂w}R@_9$oܰ0n\:͛'ġCF ]bdFr{wkSg`:*9jnV!B]*sБ0k,yػw/m۶f͚ !B"g$s_Bas+^hl5V̙-[Vuل>j۹3na~#6__EJ[BBЧ۳ر#.[G;fbz͚hXIݺ*6o6p5;1/%׮D@rtuwwXƍ=xѓWر=_9U(0]`eV$&Բen=kft+(INkwV}{/z#Xz~X0@3pT@:oݲd_Yd/߼A //kָ2sfygiW/ .ٱÚif-˫kRrdNYrW=1cLT֮$22z-X ʉ|]b }c%QT{m[5|ȑƖ9~|)Oڷw|ΪUh4p|N_⭷_G@!BT,*s }?+W >yM:u:u*@:?UT!>>ޖy饗8p gϞ-NTZՖ}(ʆd Q9XlXWAtk,\6_~'"@l7Ƞuk-njfYh-Cc(> Ej@*WVмi2~`ܺ@dQkWWЪnre))0jT-HӧUחhg||=z`>('OϏ֭[f͚"hJ?O2(\Eh;yx(xU' J%$:G >" /ChYXOzĘY:gN}yW6Юn.XI=Z/奠{w II0\lf@Tn22cG5:xz*YMz%_dk={Z!:=IIf6n4z?^GϞ4:z??*sP-puMҸyO*X΍s3R%4wW/y'N1l}Sh0*jgTZb3g:օ 7 [z||YBϔ)h4׫d7}7oMbz5rzкu2O<[o9V}}wA:$HFM܊UGggXؕ3];ՙ5ǹ7y;? c/]e\1ÅKjDPP?śya5%HF*ͳ ~cL̞{ysV}9ZzH?x W,L˖yYrc a ߯Z/we3sf霺`̆͜ 7Nbڴ :w lFjLROϰ0s/g`(lCz=ZB!;37b ~ 6l>X0bƌe4 iӦ SNcǎ΀1b#F`„ DDD?B^O||<&M*pۙ3g?m_`` | vuٺu+cƌٳjHKKCk򖘘իGlllCT±cǨZjUd%鿗/__!*8@tt4͚5;njF`Ѕ!i̸q:y&IBj9~3iy bcͬZe 3f7N"#;\u<{L!䢣73Blv=7AK=>///2e?1qD>| ~BBB~1c _!*eӽ@H2,yp:aa7htsV!.{}cwϬY3:Bqor0;hܛs6h ǰahٲ%_tҥ}ٌF#|縸ЬY3;޽{m×nJZZAAAL&L&7 ,`׮]vYlN"(hn o৴r+2Ž#O|dzmsk'B!*s87oΧ~ѣu5j?,r}puuٙ`6mڄNˋoz BAVظq#$&&Zf͚w^*UtWڠ7/;~3<NJ1^u]5QN!X}#B!|g2Kq<OzjCޥ./F&:W5 ;U-;~ٔj>:zCgvD9&B!B!r36$reZ˷UfIWT)0-^x?7GYTO”eW'־vWv ϛl87/䡡sXCZ `(Jƅ F}wI*e6Y0h]՘6Q{c2Խ:;(al},tdz 1lzOL3?xMʼn{d !B!-_p_m:=݀+nY\cڍReӉW9<ϮM_s%Ow?olDg|t\?LՆ8|+lJΊ ,{WPCNeo9%[j|&?y*<`j#OBl43.zWض+~uų3;>=NfJzH #wxy[O{zS#oP!B!DsW2 Z/XE-8Ƿ_aprppy1~^S;cx`` VcWrjC"%=kP~=h?.[mz@"e~ɛ6꣣^*( 4N*:GzRBT< G6\xpMٷ򜵼?obԛ0Aݫܸ"YA!B!J栣; IȏƮ;9?ޟ5FoRnd`1[Zs$ƤS6.\8pgfCT#J~2.K3fA$S5xsJsJDlsrbo4Iϔ$sP!B!zܴ.jZ]4ytZ vfw`h0zSoy ^ʼn[%ƤU+/ڳ$jHJ\nhRnYLޅljBm@[-{ mզV 궯b 3;}ψmѹjl tcĜvl8Ix9[-\p~yz|sYݙ=T}bәxjR|{1_t`l(ڍsDk*r`zz:/2ݻw'%%Ŷ`0@ff&K.|6mpƍt[ne$&&># z=O<|IL>sr%zɲepv.g+ɓ(J7nLFFNNNDGGs<==2e $` NO6 Hv7o򶟟۶m@Th"[YB!byoVh(E P \JbL6'ޱ[I9x9.]ʬY <&<|-ZDLL W\4jԈ^{%KТE F#˗/m̙ܹ7yX-[Fjj*sa„ $$$֌ٳg3e_^Ek׎[nĔ)Sշ f͚oMTT^^^( CRR]t^SX;;j,VZEjl3pLž={طogϞVZb2֭[;v,&Mh4J`P!B}=yUO"f3_M:|ݮOT9_xy, _}ݺuӳrϟ;ÛoImه={ХKC=ɓ'dΝjڷo_ԭ[___zѣG8r<:tM6tܙK.{c8qӧOGVӤIXoooΟ?y^nj3 f͚E_e˖(J doXX<΄СClg_wq3PfMj5ӧOVZjBCC9{lڹ6yyQT׏Fc.]|@ \2~)QQQ;va !BQA!BEuWm=yp(M)8v}"fnڴ8ƍW1 5kְxbB0aΝcĉ 2H<<<㏉VZ^_zFFF-X]n@֭[otDΙR6bF8rqqq\~кu|r &FH`` wF5j'NO><Ü:u̽KQ?8p M6I&fŗn`ܥK4i?nw΅I6#!!7oF:9zyyiL: !Bq-Hbd q/+DJrժwۆ 8s UXIOOd2QNpNf͚`x 4iR|jW_}9sp!ZliO ~Ūg˖-Ehh(\Ç_i4Z-@gWjU4 ϟwMTo0yd^|E~i~bevL޽yoQ(vQ;vc믿Һuk~Wz] j _Fx{{jAܺu$oZB!D3exL%sP+(\E?>DFF2~xyߟرc2|p DjjݾӧOꫯrQ]… cǎ|7̝; .'|BZnסCؿ?,**p֭[ׯϟk޼9a0ؽ{7/^w-[x"ZjժxDGGs5]V  BPvZ{8uqc2Xvm/M!_N~P* 4~ .K/Dpp0M>={Rvm,Xڵk yl߾-[ҬY3.^ȶmwZ<%T* ͍0VZ jVRijvt 6> OOO<==gvh46oY&*UbՂ5ݝ;v_УG|AwXļyxꩧh֬{iӦbZm-oy<#FiӦnݚ5j}~sAmЪU+]6K,aÆ T\4h@ $##nxsuŘصkB!S@`ACERRRoC,U7n:J;$E}?͚5;enԨQT\> ]g Pϗ_~f !Bq;{I;CzHBIK ]A,Wzm(( rbUz H @:齝cINy'9k^{ w/cƍJ e*(OTh 66[[[ r ֣T[_y9裏ضmNNN8;;rJml½An_rZ e*(OGm- יAt\GF|\@p ZcsC.lɖΡN63a3},X-uS[#" :|uC+gK4ҍDC#Yudz ${|@<{P^Xŵb4|+t+a3}~)ͫ$t~f~"oݜ>p+2vV0jXwZ"~o:?|ѯw}-%0vێa/vф y>%:ՓӼyNjt)`3~wmٲ81PL, 9m"{_jV׿ FYtgߐ]T Ti/:TOO'Z=kC=~H8y8]U ]#+kٓ-ץ5oR.:'+́qocfӹ) 3Cr֒ymKsح{{VÃFkiD,v-ivF_ 6ӞQ 2|G/IX:kaْܻRƗO˃J}Xv4s@ IDAT1Vel;񻤓٬bno,~8vsM}{/cUTW4kRz [iofd]hj)E}vٚv aՃGr Cӂ.DoFC7V1 GC> |b3þ{"C 1[Sز,5#'O#EUY~3&ozkArt=IQfy03fk]¡/ssqle8Ys&||;+SngO:Sm=nqv7zYΞi<7NZ>Wwk#ԟn]lxr[b4CĆNGƛݶIVOfgh ՌDD4jbӂh8oiY9S[PkT z#S<Ȉ/d#X2q&P9{4wa3}\v5crvU{lK~j)_9CRTv|-xϾzP5-!l$׎>/IQhJr*d'7~z>΁VL\3oDj-unÍ*8-5ûsP? 9aeL;q;T*U͍^^>7bw)AobǛ1IcG=Db@B\YeЩs⃁2gmoϹz!c5O{^,LAqf\?~~#2ٍ@ fҏS=9uE(ɫ.4_[s-RJ"k8*a/uf{cdOy>ћ~w/rdMhϴx/bj+\ޛE]+<%ƶ8[ 3߾Nd])E?_vO`ڧr,|sHwfRW٪3@{|1v%9 }~ݛFm8os)9+Omepd%#>uwb, ]emiڔd V\qgM*vc̒`2.َ+{fl K'-7N簪 B tĜeT;l=f_M<@VB!c f k)Əޖ{>ae/ݙF=)UA6IKke!wu;U /*#^ bq<hOzњy'G5?,Ibٰvq,g7 ΍4/>O6gQ8qok1cQUğy~1,8 ߻npZӇ9㍫K?ܻa,IϴP=J` /c=Y0;O;79:ʹ Bڱ,,L c]/! =CYP+ָLC?ˑ?ZnOm‹4Fj زyVqh.=nHpnDt2*~KqLq+?]kFVc'q*kJ($|> }ÎښZNN$d^﷋5Q75VQ<}"^8iΓ[(. 2(Iͣѯwk6|"Z)lXtb$A< 3{=C_qH+Վ$||^xv#(.EzN0jy}hYtV}{jt@MuK^Dm-Z &;`baȥِKG\;YCZL>:.nKش3mccTjweq|$/.o(v Ύ!lOc@J8Xl 2uU5j5T\e®D~1/Ǿ"TNKyYyт ̱o曨5*,[Rz1}s|uCd W )ͭ4R&VP|\~ar$Os^urzd N΀~O5N*:A^ND^䥔rjٿw E˜_3?[OG?K:poɒHsȹ^LyaqĹ"5:;]MQ~F fek'n8jkXD",p4Ü#_]=/ C@z~vFU_:40pbu7vbeNTUݙ$0ȹ6zNf;9#ϥ.5V/ѯwcq-~R}^K[LSmAz6wn][MilghgN$k zaa&[grLϥ,H r-#s{co[ġW*ǭEuջ 6x$gwJ;-[r0ЙcD{ G-9׊>_W.U3?8&5pS#MmdBR;SU aQ 6r2Hn;Tj_=KF|5:Рc퍙s?_ozcd&4`ތmH1j磫DLm:Hk}"ܷ5]@ D(([I<Šg;r}:|鹭Ɉ?xzL·QO%wHNR1-ۖ'n@!.$$Oeψ;j ߁)^j92zlҐ`=J(Nٖzپ|= L;^g٨^$~}2<{ .\ڑJmMd9q L~|1n?=S=Z>$76͌{k͖K/6y`E?|z C 3;c\LI XswǍTL-l_oT V.ZG`ײzjլ|8tޟC$mM BGC5a3}y&]UmkK)jJ//?~|]PI'C&y-)tlg\ʇķDkգ6"xO6ģYxtoB : wVbg~MTI{ѿ$,ylT*I. 1[S罆=~Bxޕ%-n׃[~jYW\aP0ߞ;EY~!hh±oYcӘ0:w%| Ňvc^aLIټk7On}Rytvƴeη?.nOŔGǂĊ'«Ў8Z!\=%[T;>}㫯r|U~y2 3;cfOOgimm=K-`1kInv NZL>ۗ^`W6B'v5FZQQ #?2ɽQB00V5=W ǑoŐj?]lXs9ɔz2kd;\;[VVVN9ȈAe[f6\q{017 *FM~ji #P]A%!Zϭ ghL 023VKr,sTJ6ֈ#\9]}Bf43Vcf+l#p4AcCwrE|a8kU.l‍\ޗإ Jfji);k7-Df^H.>1b;z<|E嬜zĶڟo TKGeHӍ398ZkC\zL+RcIKq1Q)蟯cԳ=V.CMtV`媕>Ty-f,-iLS TMluX8赣(&64jɖ }fm$[wqvz5<Ձ}d%j黮K[LSR/QWW_ mMO4hEINޮ]U om&7DRsChkr Zs99+gɧ(H/cpŎSԵAurz֘_e9^ﴉ2F/bZr`biȴax7I`dB?=vz9YBb~O,onړ} [:ٚ乃581ɧy;t+ 3afodܳvd_-L$Pú9Њo^XizòHƸΙ&|yӽY;^`.Y~IϡֵFcrJៃ8%RUtd:M/]U E5!THÖgٺH0)xg뜁j.N;sqU Ni>|*!9fuUpDܻ`baHn^LzlH]L~ji혭)t.)0ĕ)崅g:9IŔUq J ­kE\ؒBuE >æ)N#%Hi)ɩ pqM.(s{9I?TDJ*1>n~*$)*](.oTLލ.H\ѕWDxn$ nZbV9ezY|9y'GyFJ$t'KOkT ;rc];~ vxP4g}VZlۛOb{e-Y44jFsq[ i,_?5l=Yz}1ׯ&߃'88M9&c^o`9hD^wKF=`A̶jtNk5 ⡗p /fk]ض9Њgyr~R02Ո[+E˅-˯V\&$G(ͫ(gsq[{gϻ(/"$rxͣfqGϻ>v|c\Mņ=]LG`[ N859hEAF֎z*Kl^bUpy_: :0W|Gqv7r\oG\=WzoIV5'ٺXq}t/+/ý-Nb׽ŗI8*n!5&0tXbiNVB!A~5#ecHYS]oGp3|8t\bA}ߕܯ&BPm#=_S]+~^O9*w1[SDGVqz]2>163d[@pLlx4>{.c9]r_IqT_9CmvJ-)\jyN=s˻~iʈ]8]J 6=en+1R\©,4*o H9Cc!Bj!z)on<Ⱦ(ɭ0R>揁O/;槕K'-8'# 6q^Zn`ѳa뷬ƖtՉTV+Kvhlie){Ìzμ@g~sLp?[ƛtOXtF41rvDS;@/)rurrL䬜 "E[k7Sow^DEHWNW)sbekۥ8vlj^>5sfM&8[ B;t2[T&zky7K1575Z X:Ҩf^Y&;sG>lIa}Wdo)YNc罸769>sOiXRVqPS]CrhܻoOhAfaw[m`5ȚuP 7sRZGOK)ήHM'Uo1gHkychg߷%]9kfk_'6-8 @֛L|;;ߺ'ŵcZ\vNF|V?EEq5 D\o+GT0{ReN}n{;؏SVTk'kɪ.Q^T1y7JxQigJܞ4)/Yrhiǎ-9RxxM|OEq53V?7 M,F Vd_+"f֨HeseOf9,!ڧ4BeDc6PNFC9*wQ7Mψo^xV< 7- R29U 5.Kg-j1Zc$Gr.#ӆ}p@AԚkbԞޒBVKTWs-si/FY4E‚$J!^=Gw;6rZ40d⸮iY+O;SVPɔ{20NrUU@j ]um}+ScerIDAT=xǾ$Gg/OE1 z'JuE 2HVq11zu|8ra0G‘ tύEnTW4v tU5mlN0s{ے-qzYʞf߽HeIs 黭K[Ss'3gm,.DT>-f~vJI=ycB'{:œы=I]ЖF=e{ k_'.0"Ӥ߄$^:e%a .QVPxdKz2Hƺv|0pYQ ̤{f':?Ɣlof0FbaX:k9]([zRwz_)]A@ݔ L4rgƼ,UO1lk<ӿ&b譵M;Sʋ%nLaf9:t,(\/d%NMul9eX4VZL O+JUKqN9~m?R˜]IRJشd27M[˹BqF~Neyr.lwCEVm @+řߒhFm]tN|?~zne\;VDK<k7SM?*adf i řߒRf)[C-mkd;4jE;Q/*/b[X1ןCp4/LԀeqmr#onD8YH 7(ή`͜c<}0E[3csL, )ɮ#tbTYwaQV9j5͒%K#=]lVf-q'sE)?_V:w]uX]Al?. d6 ]U8mk;\r_GaFs 7m8jr"1ctcے ~V_ Of|; ,GV&0 L4 |*ȠC_\7|8ߦ6es8eÌ S8*<~IQz19#TGņ/'`Wv3ן5`Bڇq꧆U}˜/ +SrS@/9*wo% ykǭEd6Joތv$Ue:Q~z;O,F摣\ƥ5+u?6F4ʻ8~<+ggm[MKI چ-FiamΒ Л:]o4;uR?r1)-ʒ맀L#,NxȾ$\\?ܻ6EKQV9i2ك=WW@ҩۑO<>rwӎ YZY[ 55h 8܍뒨5ȷCq7 L/Քjtzb 8gSlk_'|"Ԡ6P8>Ł ?=FT/ƾw՝֥#Z1%9 rǂ+5=ђ}S[cLEP͋ d,$Xk}.%gL56rzq*zQβJ1̀FqLa-݂2:kSFtbKY-I,#DQQ}VU#|<0E..ɮ5cbJqvFfxg唃bjr\;4!ĽŒ2ROgM8kk:pEQ7~OȎL%bpmlĖVR|\d6LzjYDP[ g5=#,p >ȡ/.N2]U- 5uow9Z~=ۏo9mJ9_?' ,!vW΁V$m05pW:|**Lyvj*Nf3NX}ں-Rt^2r4<1CăZau]-vfSȷ1PQYZMuUkigƯw,g%kkg!uD UZNhx)6 S#Lm+.ZzLf=0jC3*jD0;=Re3 -9PEU[y]eֈ1:1tlV[>O\]=P-$hWA|9*w뉘ϱo#+t}3֨ T{"@|abeH!2$lG00VcbiH-B{,Tu-,\ϫ^Yiovc[VSoݎv!$n_'X!UzfAZsqde 8cfkHMwc(5H'p3~̼r@)ՒA'PkTظÎԘ~7j{p3<fY8:ٓTW0nį*%dPSSKv TDr6rz1Wd!.j5y_5*,y`E 2EMȕ5l=xf0T*a2^lZp*F3Þ&ss82V$ N10^>m)Tm'Gmaim;MԚkmMꇎ0`F/rUY~>s }$ΤpWm{X8jŅНʚ o2~*>JL;0.;?ǂG|t)yX%j5e0+r"$VرB t-Wή].i  +uFŃ_YKM! ;B*mjOj;0Fͩ_S~pBYpn :JrtZk#&Ѓ8tT0QY̓O-% {Ї?q+?Iv{Qضk1cO-ecj ,+gO{\*g<"s{cOyaLå5V$aXٛZ]-'JEQuQR8e,tb$e{$e˝ gǴ2d?5 GK7 #5 غX,7v?H–f)_fBâ*}ͳ WϏ%?C_^s%&̐I'qs @cētsы20rY3瘨c~ ePnem]\b6f T‘jY(+ews()y!INҩlJs+Fhin2. @yƼލgGX3Wrc@nnH19 Rz1|Q"`j}~!p\:Xs~Mv#]3ccaƕ{FzCyQkbҞ &.M.G79T,iH9_c`‰WI8(Esqo3neE&םWϏ]bH)b<{3= {ێR}_ Oņ]pSY/>ύ3֥jWjjkӿ 'tGw{ߖt?B/)rǠ߀Iwƛ$dܺZ8ӽ1w0aGqx;ņSmO_TPPPPw*o0ce8J+ 8>r>}NVPPPPPPPPPPP_家+((((((((((((((((((Eb/sPAAAAAAAAAAAAAAAAAu :IENDB`bin/000077500000000000000000000000001516067347200116415ustar00rootroot00000000000000bin/p3x-onenote.js000077500000000000000000000025011516067347200143570ustar00rootroot00000000000000#!/usr/bin/env node //const os = require('os'); //const process = require('process'); //const cores = os.cpus().length < 4 ? 4 : os.cpus().length; //process.env.UV_THREADPOOL_SIZE = cores; //console.debug(`P3X sets UV_THREADPOOL_SIZE to ${cores} thread pool`) if (!require('fs').existsSync(`${__dirname}/../node_modules`)) { require('child_process').execSync(`cd ${__dirname}/.. && npm install --only=prod`, { stdio: 'inherit' }); } const utils = require('corifeus-utils'); const path = require('path'); const mz = require('mz'); const start = async() => { try { const desktopEntry = `${process.env.HOME}/.local/share/applications/p3x-onenote-cli.desktop`; const exists = await utils.fs.ensureFile(desktopEntry, `[Desktop Entry] Version=1.0 Type=Application Name=P3X Onenote Icon=${path.resolve(__dirname + '/../src/electron/images/256x256.png')} Exec=${__filename} Comment=https://www.patrikx3.com Categories=Office; Terminal=false `) if (!exists) { await mz.fs.chmod(desktopEntry , '0755'); await utils.childProcess.exec('gtk-update-icon-cache || true'); } await utils.childProcess.exec(`${__dirname}/../node_modules/.bin/electron ${path.resolve(__dirname + '/../')}`, true); } catch (e) { console.error(e); throw e; } } start(); onenote.iml000066400000000000000000000007131516067347200132440ustar00rootroot00000000000000 package.json000066400000000000000000000045111516067347200133600ustar00rootroot00000000000000{ "name": "p3x-onenote", "version": "2018.12.30-5", "description": "📚 P3X Onenote Linux", "main": "src/electron/app.js", "corifeus": { "prefix": "p3x-", "publish": true, "type": "p3x", "code": "Linux", "nodejs": "v11.6.0", "opencollective": true, "reponame": "onenote", "build": true }, "bin": { "p3x-onenote": "bin/p3x-onenote.js" }, "scripts": { "test": "grunt", "build": "build --ia32 --x64 build/dist", "postinstall": "opencollective postinstall", "start": "node ./node_modules/.bin/electron ./src/electron/app.js", "publish-electron": "build --ia32 --x64 --linux -p always" }, "repository": { "type": "git", "url": "git+https://github.com/patrikx3/onenote.git" }, "keywords": [ "onenote", "linux" ], "author": "Patrik Laszlo ", "license": "MIT", "bugs": { "url": "https://github.com/patrikx3/onenote/issues" }, "homepage": "https://pages.corifeus.com/onenote", "dependencies": { "electron": "^4.0.0", "angular": "^1.7.5", "angular-animate": "^1.7.5", "angular-aria": "^1.7.5", "angular-material": "^1.1.11", "angular-messages": "^1.7.5", "configstore": "^4.0.0", "corifeus-utils": "^2018.12.28-1", "electron-updater": "^4.0.6", "opencollective": "^1.0.3", "semver": "^5.6.0", "typeface-roboto": "0.0.54" }, "devDependencies": { "jsdom": "^13.1.0", "angular-mocks": "^1.7.5", "corifeus-builder": "^2018.12.28-1", "electron-builder": "^20.38.4" }, "engines": { "node": ">=10.13.0" }, "build": { "publish": [ { "provider": "github", "owner": "patrikx3", "repo": "onenote" } ], "appId": "p3x.onenote", "copyright": "MIT", "productName": "P3X OneNote", "linux": { "category": "Office", "icon": "src/electron/images/", "target": [ "AppImage" ] } }, "collective": { "type": "opencollective", "url": "https://opencollective.com/p3x-onenote" } } scripts/000077500000000000000000000000001516067347200125605ustar00rootroot00000000000000scripts/start-local.cmd000066400000000000000000000000431516067347200154670ustar00rootroot00000000000000.\node_modules\.bin\electron.cmd . scripts/start-local.sh000077500000000000000000000001611516067347200153420ustar00rootroot00000000000000#!/usr/bin/env bash DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" ./node_modules/.bin/electron $DIR/.. src/000077500000000000000000000000001516067347200116605ustar00rootroot00000000000000src/electron.mock.js000066400000000000000000000016221516067347200147620ustar00rootroot00000000000000const Module = require('module'); const originalRequire = Module.prototype.require; Module.prototype.require = function(name){ switch(name) { case 'electron': const mock = { on: () => {}, }; return { ipcMain: mock, app: Object.assign({ requestSingleInstanceLock: () => {}, quit: () => {}, }, mock) }; break; } //do your thing here return originalRequire.apply(this, arguments); }; const { JSDOM } = require("jsdom"); const dom = new JSDOM(`

Hello world

`); global.document = dom.window.document; global.window = dom.window require('angular/angular'); require('angular-mocks'); global.angular = window.angular; global.inject = global.angular.mock.inject; global.ngModule = global.angular.mock.module; src/electron/000077500000000000000000000000001516067347200134735ustar00rootroot00000000000000src/electron/app.js000066400000000000000000000043061516067347200146140ustar00rootroot00000000000000const configstore = require('configstore'); const pkg = require('../../package.json'); const conf = new configstore(pkg.name); const { app } = require('electron'); const translation = require('../translation/default') const path = require('path') global.p3x = { onenote: { pkg: pkg, lang: translation, title: translation.title, conf: conf, disableHide: true, iconFile: path.resolve(`${__dirname}/images/256x256.png`), tray: undefined, window: { onenote: undefined, }, action: undefined, menus: undefined, mainMenu: undefined, setVisible: undefined, createWindow: { onenote: undefined, }, } } // configuration global.p3x.onenote.disableHide = conf.get('disable-hide') if (global.p3x.onenote.disableHide === undefined) { conf.set('disable-hide', true) global.p3x.onenote.disableHide = true; } // loading global.p3x.onenote.action = require('./main/action'); global.p3x.onenote.menus = require('./main/menus'); global.p3x.onenote.mainMenu = require('./main/create/menu') global.p3x.onenote.mainTray = require('./main/create/tray') global.p3x.onenote.setVisible = require('./main/set-visible') global.p3x.onenote.createWindow.onenote = require('./main/create/window/onenote') const semver = require('semver') if (semver.gt(process.versions.electron === undefined ? '4.0.0' : process.versions.electron, '3.0.0')) { const gotTheLock = app.requestSingleInstanceLock() app.on('second-instance', (event, commandLine, workingDirectory) => { // Someone tried to run a second instance, we should focus our window. global.p3x.onenote.setVisible(true); global.p3x.onenote.window.onenote.webContents.reload(); }) if (!gotTheLock) { app.quit() return } } else { const isSecondInstance = app.makeSingleInstance((commandLine, workingDirectory) => { global.p3x.onenote.setVisible(true); global.p3x.onenote.window.onenote.webContents.reload(); }) if (isSecondInstance) { return app.quit() } } // app and ipc main events and configuration require('./main/ipc-main') require('./main/app-events') src/electron/images/000077500000000000000000000000001516067347200147405ustar00rootroot00000000000000src/electron/images/256x256.png000066400000000000000000000143671516067347200164220ustar00rootroot00000000000000PNG  IHDR\rfbKGD pHYs B(xtIME  %aXfIDATx{x;M rB(4d6$K>mkUjzϑ =jkjO{jj)zKnrQQP ${HRN6<>$ygf;w}wFX "߀Q" 5)Eʊ2P8f|.&L y2rKr7+ {\[_j ̖T@@@JB1V0Y !42o0M+9y3(,)\2J /m/ !) @1cũ^ӕ4%f~H=z3ϣ@1 P( jRa~)I<2' N ݐӥw-N]ybʲ2㆜=&K9M^@"P5!AROP!1bEh΀Q"$LT< & !5A"ǀqN n~E*&d%B31!4H} Ӥaxk;KGR*>f)z>~@1oũ 7_7%R`W{:EI.ϰ\4&)s vO "ٺtn<1/4HskPD^Ӥ^H.yr'@, A4E@ހB\`'@,H[: %oBt<);QL@htRy@-b'Rr:]~UMb!e S D1+=MS&MݯfH30M{ҙn'(/-%͎| US B#%4mVs;Df@z+.^v=?h% 6kp?M2B Nq;jH|* 7uqOU@W:]49N;04@.D邦W=H'-% xħウɃtj= 4`K&fkQ*fJH*=:3`~<0:@ղ J,{?ŝ0]q)nW^xD@ȇ)A"ϊ3@~vӽ@\ ,37xSP8_s)uk75]8lRKOyr$MUTcY | ξ7%/j y*yi Cӗ#ʥ%h E <\t)σ4PwEK2I#pm * q.»~Le ܋!)3yW/!oߟz ?0@4h 8w`~6\@ A2dDڸt 531>)Sɷ^c`7ЬaH#"ud*2g"spx=,1bARze mLIGژ4ICrf C X+uh}~!7R㑐kqC|8|>xxM"qX"%7oC%"1-!>zݛ3w.0ƹ($";gz'mωyB]܅!Ny EDZƄLL=k|2i7>@#w5hDmp/eiIf*#tA6rN0%$rbxx1DN 8HwȉU̺<z?)Zy:QT3 3& .=bCmr±ȟ 3PLRw찣ǞwvL4>|}45l spS:{ZF xߐ)]0E!{U]/xmmZS JM 3s[Qge:=C",KG&V[]L3fc?6ňP,Iv?jl3]<oߙBS*`LI,9ZQpW 9Eb_#t?'ɽ03Y]RgB( .a ^'@ȇEwxm[xT=bfG{kE:2yP(X2w5ξ~< 0!plZ]+M.>%.x;L4|} 26wyۮ[ hSGs]j+wbKY{؍%kw&;":Otb(vVm(;/ntdn;ە2"Kǡg`RљqL\,l[zc>~ ]]as{09<)*%e&GG Qh?ކڥƦsoI;nTGM|z~P* J?{ESbpou/'8*Z`+[,=kd2{EoL-qS+Yo ~xSJHMI`>|Kmi,^8@Z iJKmt>ߡ=Q񱥶ic0<9u/OoCJkߛ8obU:+R$Kˋ9ZkW5{*e8ѧ?m{1fj;'ރkg)ѪY^D ^o5{1쪶jvVu(S`kX]z"?=d~pH DsۏIӳYHbնWry7Ea9`Kn gNsYHbؕ[~^7 I ;һtT>)= ^6$]mZ-ۗ\3 ,$1쨫5/T[nŌgd .jVU"[{*P iF485h}36;&wn[V1RG4MKwn~aDHv؊-bP-abV_n! &,$1쨹 O8X]3 z[#0eTvtda|>-cp+1liݓo!t?=粐:ٴO˘u})|> xjm}($)mۧeL,&E L k-w{ܘxq_cR1,+6;.w|L§U8 Fi}oP uJL-fh:n6^i} Pya_&@>Z>9ԧed`6Ť[aW}gy9p0E@NyE ;30,xmho2FMˆI0ͱfipJT9hxf.}ZVYLRuMP\_aٜ4MAV~ęD6w嫱g u "j9|U;uh:heTݯ1/ן;0z_V"p@:ّR<pm Tf9@2wo rP?Iz8H41ا}0]6ho  ~&Mkjko@/y @6y՞@_%Q?q<@t/ n5G^BW{W.H6Kj7nCE\{k;*^n 47c]8pb _[!YJVaz=[oZ@cxWYow Ě)Qt t=6P+cE~s:w س^\!!L- DLֻk6h %)~ڗ-RwuNyq_tprKRoJh!Q(| !@kʲ2uOӔASRդ@!<0 OpU+>x\[nJ bXdKyO Ès@o057`j`8\$~2M-%b%AƠ(R31I$DHY!T.hwFߦQȗP5R3!zddqr?ȓ*J<ȨfH3O$e0(7A`_AF))03#Л@$gX.&&!I pf+R|F"K3 @*/-OC4E@3{`0beYqCd)4("R5`0bwCBfNO(KEr`ĸ i~R=Pg,NMP, #6dRėdd!B)4k&#1&4 JLFAF1 P( jR.!g_fX5]!&!AF1bؒ%BZw((2@  2v~{2 #1(4 d #d4L/4 LF1(44%fdd0(ƅ7Bvdd0aVuiwZAFb4PM _f0Af|=M ya0ȡ!@0|ӃL3e׭LIENDB`src/electron/images/onenote-icon.svg000066400000000000000000000027561516067347200200700ustar00rootroot00000000000000src/electron/lib/000077500000000000000000000000001516067347200142415ustar00rootroot00000000000000src/electron/lib/remove-cookies.js000066400000000000000000000031531516067347200175300ustar00rootroot00000000000000const removeCookies = (webview) => { let session = webview.getWebContents().session; session.cookies.get({}, async function(error, cookies) { if (error) { alert(error.message); console.error(error); return; }; for (var i = cookies.length - 1; i >= 0; i--) { const cookie = cookies[i]; let domain = cookie.domain; if (domain.startsWith('.')) { domain = domain.substring(1); } const url = "http" + (cookie.secure ? "s" : "") + "://" + domain + cookie.path; console.info(` cookie.domain: ${cookie.domain} cookie.hostOnly: ${cookie.hostOnly} cookie.httpOnly: ${cookie.httpOnly} cookie.name: ${cookie.name} cookie.path: ${cookie.path} cookie.secure: ${cookie.secure} cookie.session: ${cookie.session} cookie.value: ${cookie.value} url: ${url} `); const promises = []; promises.push( new Promise((resolve) => { session.cookies.remove(url, name, function (error) { if (error) { alert(error.message); console.error(error); return; }; resolve(); console.log('cookie delete : ', cookie.name); } ); }) ) await Promise.all(promises); webview.reload(); }; }); } module.exports = removeCookies;src/electron/main/000077500000000000000000000000001516067347200144175ustar00rootroot00000000000000src/electron/main/action.js000066400000000000000000000027431516067347200162400ustar00rootroot00000000000000const { shell, app } = require('electron') const action = { setProxy: require('./actions/set-proxy'), restart: () => { global.p3x.onenote.window.onenote.webContents.send('p3x-onenote-action', { action: 'restart' }) }, home: () => { global.p3x.onenote.window.onenote.show(); global.p3x.onenote.window.onenote.webContents.send('p3x-onenote-action', { action: 'home' }) }, corporate: () => { global.p3x.onenote.window.onenote.show(); global.p3x.onenote.window.onenote.webContents.send('p3x-onenote-action', { action: 'corporate' }) }, toggleVisible: () => { if (global.p3x.onenote.window.onenote === undefined) { return; } global.p3x.onenote.setVisible(!global.p3x.onenote.window.onenote.isVisible()); }, quit: function () { app.isQuiting = true; app.quit(); }, github: () => { shell.openExternal('https://github.com/patrikx3/onenote') }, patrik: () => { shell.openExternal('https://patrikx3.com') }, p3x: () => { shell.openExternal('https://github.com/patrikx3') }, corifeus: () => { shell.openExternal('https://corifeus.com') }, npm: () => { shell.openExternal('https://www.npmjs.com/~patrikx3') }, download: () => { shell.openExternal('https://github.com/patrikx3/onenote/releases') }, } module.exports = action;src/electron/main/actions/000077500000000000000000000000001516067347200160575ustar00rootroot00000000000000src/electron/main/actions/set-proxy.js000066400000000000000000000002151516067347200203650ustar00rootroot00000000000000const setProxy = () => { global.p3x.onenote.window.onenote.webContents.send('p3x-onenote-action-set-proxy') } module.exports = setProxy;src/electron/main/app-events.js000066400000000000000000000005471516067347200170450ustar00rootroot00000000000000const { app } = require('electron') app.on('ready', global.p3x.onenote.createWindow.onenote); app.on('window-all-closed', function () { if (process.platform !== 'darwin') { app.quit(); } }); app.on('activate', function () { if (global.p3x.onenote.window.onenote === null) { global.p3x.onenote.createWindow.onenote(); } }); src/electron/main/create/000077500000000000000000000000001516067347200156625ustar00rootroot00000000000000src/electron/main/create/menu.js000066400000000000000000000133261516067347200171710ustar00rootroot00000000000000const { dialog, Menu, shell } = require('electron') const menus = require('../menus'); const action = require('../action'); const mainTray = require('./tray') function mainMenu() { const copyLocation = { label: global.p3x.onenote.lang.label.copyLocation, click: () => { global.p3x.onenote.window.onenote.webContents.send('p3x-onenote-action', { action: 'get-location' }) } } const minimizationBehaviorLabel = !global.p3x.onenote.disableHide ? global.p3x.onenote.lang.label.disableHide.no : global.p3x.onenote.lang.label.disableHide.yes const template = [ { label: global.p3x.onenote.title, submenu: menus.default(), }, { label: p3x.onenote.lang.menu.action, submenu: [ copyLocation, ] }, { label: global.p3x.onenote.lang.label.settings, submenu: [ { label: minimizationBehaviorLabel, click: () => { global.p3x.onenote.disableHide = !global.p3x.onenote.disableHide; global.p3x.onenote.conf.set('disable-hide', global.p3x.onenote.disableHide); const message = global.p3x.onenote.disableHide ? global.p3x.onenote.lang.label.disableHide.message.yes : global.p3x.onenote.lang.label.disableHide.message.no dialog.showMessageBox(global.p3x.onenote.window.onenote, { type: 'info', title: global.p3x.onenote.lang.dialog.minimizationBehavior.title, message: message, buttons: [ global.p3x.onenote.lang.button.ok ] }) mainMenu() mainTray() } }, { label: global.p3x.onenote.lang.label.setProxy, click: action.setProxy, } ], }, { label: global.p3x.onenote.lang.label.edit, submenu: [ copyLocation, {type: 'separator'}, { label: p3x.onenote.lang.menu.role.edit.undo, role: 'undo' }, { label: p3x.onenote.lang.menu.role.edit.redo, role: 'redo' }, {type: 'separator'}, { label: p3x.onenote.lang.menu.role.edit.cut, role: 'cut' }, { label: p3x.onenote.lang.menu.role.edit.copy, role: 'copy' }, { label: p3x.onenote.lang.menu.role.edit.paste, role: 'paste' }, { label: p3x.onenote.lang.menu.role.edit.pasteandmatchstyle, role: 'pasteandmatchstyle' }, { label: p3x.onenote.lang.menu.role.edit.delete, role: 'delete' }, { label: p3x.onenote.lang.menu.role.edit.selectall, role: 'selectall' } ] }, { label: global.p3x.onenote.lang.label.view, submenu: [ { label: p3x.onenote.lang.menu.role.view.reload, role: 'reload' }, { label: p3x.onenote.lang.menu.role.view.forcereload, role: 'forcereload' }, { label: p3x.onenote.lang.menu.role.view.toggledevtools, role: 'toggledevtools' }, {type: 'separator'}, { label: p3x.onenote.lang.menu.role.view.resetzoom, role: 'resetzoom' }, { label: p3x.onenote.lang.menu.role.view.zoomin, role: 'zoomin' }, { label: p3x.onenote.lang.menu.role.view.zoomout, role: 'zoomout' }, {type: 'separator'}, { label: p3x.onenote.lang.menu.role.view.togglefullscreen, role: 'togglefullscreen' } ] }, { role: 'help', submenu: [ { label: global.p3x.onenote.lang.label.download, click: action.download }, { label: 'GitHub', click: action.github }, { label: global.p3x.onenote.lang.label.developer, click: action.patrik }, { label: 'P3X', click: action.p3x }, { label: 'Corifeus', click: action.corifeus }, { label: 'NPM', click: action.npm }, ] }, { label: global.p3x.onenote.lang.label.donate, click: () => { shell.openExternal('https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=QZVM4V6HVZJW6') } }, ] const menu = Menu.buildFromTemplate(template) Menu.setApplicationMenu(menu) } module.exports = mainMenu;src/electron/main/create/tray.js000066400000000000000000000013711516067347200172010ustar00rootroot00000000000000const { Menu, Tray } = require('electron') const menus = require('../menus'); const action = require('../action'); function mainTray() { if (global.p3x.onenote.tray === undefined) { global.p3x.onenote.tray = new Tray(global.p3x.onenote.iconFile) global.p3x.onenote.tray.setToolTip( `${global.p3x.onenote.title} v${global.p3x.onenote.pkg.version}`) const click = () => { console.info('tray on click is executed - if not shown in console. this click is not executed.') action.toggleVisible() } global.p3x.onenote.tray.on('click', click) } const contextMenu = Menu.buildFromTemplate(menus.default()) global.p3x.onenote.tray.setContextMenu(contextMenu) } module.exports = mainTray;src/electron/main/create/window/000077500000000000000000000000001516067347200171715ustar00rootroot00000000000000src/electron/main/create/window/onenote.js000066400000000000000000000064401516067347200212020ustar00rootroot00000000000000const { BrowserWindow, app } = require('electron'); function createWindow() { global.p3x.onenote.window.onenote = new BrowserWindow({ icon: global.p3x.onenote.iconFile, title: `${global.p3x.onenote.title} v${global.p3x.onenote.pkg.version}`, backgroundColor: 'black', }); global.p3x.onenote.setVisible(true); global.p3x.onenote.window.onenote.loadURL(`file://${__dirname}/../../../window/onenote/index.html`); global.p3x.onenote.window.onenote.on('minimize', function (event) { event.preventDefault() global.p3x.onenote.setVisible(false, true); }); global.p3x.onenote.window.onenote.on('close', function (event) { if (!app.isQuiting) { event.preventDefault() global.p3x.onenote.setVisible(false); } return false; }); global.p3x.onenote.window.onenote.on('focus', () => { global.p3x.onenote.window.onenote.webContents.send('p3x-onenote-action', { action: 'focus' }) }) const windowBounds = global.p3x.onenote.conf.get('window-bounds'); if (windowBounds !== null && windowBounds !== undefined) { global.p3x.onenote.window.onenote.setBounds(windowBounds); } const {autoUpdater} = require("electron-updater"); autoUpdater.on('checking-for-update', () => { global.p3x.onenote.window.onenote.webContents.send('p3x-onenote-action', { action: 'toast', message: global.p3x.onenote.lang.updater["checking-for-update"] }) }) autoUpdater.on('update-available', (info) => { global.p3x.onenote.window.onenote.webContents.send('p3x-onenote-action', { action: 'toast', message: global.p3x.onenote.lang.updater["update-available"] }) }) autoUpdater.on('update-not-available', (info) => { global.p3x.onenote.window.onenote.webContents.send('p3x-onenote-action', { action: 'toast', message: global.p3x.onenote.lang.updater["update-not-available"] }) }) autoUpdater.on('error', (error) => { console.error(error) global.p3x.onenote.window.onenote.webContents.send('p3x-onenote-action', { action: 'toast', error: error, message: global.p3x.onenote.lang.updater["error"]({ errorMessage: error.message.split('\n')[0] }) }) }) autoUpdater.on('download-progress', (progressObj) => { /* let log_message = "Download speed: " + progressObj.bytesPerSecond; log_message = log_message + ' - Downloaded ' + progressObj.percent + '%'; log_message = log_message + ' (' + progressObj.transferred + "/" + progressObj.total + ')'; */ global.p3x.onenote.window.onenote.webContents.send('p3x-onenote-action', { action: 'toast', message: p3x.onenote.lang.updater["download-progress"]({ progressObj: progressObj, }) }) }) autoUpdater.on('update-downloaded', (info) => { global.p3x.onenote.window.onenote.webContents.send('p3x-onenote-action', { action: 'toast', message: p3x.onenote.lang.updater["update-downloaded"], }) }); autoUpdater.checkForUpdatesAndNotify(); } module.exports = createWindow;src/electron/main/ipc-main.js000066400000000000000000000010001516067347200164410ustar00rootroot00000000000000const { ipcMain } = require('electron') ipcMain.on('did-finish-load', function () { const toWebview = global.p3x.onenote.conf.get('webview-onenote'); global.p3x.onenote.window.onenote.webContents.send('p3x-onenote-onload-user', toWebview); }); ipcMain.on('p3x-onenote-save', function (event, data) { // console.log('p3x-onenote-save', data) global.p3x.onenote.conf.set('webview-onenote', data); global.p3x.onenote.conf.set('window-bounds', global.p3x.onenote.window.onenote.getBounds()); }) src/electron/main/menus.js000066400000000000000000000022211516067347200161010ustar00rootroot00000000000000const action = require('./action') const menus = { default: () => { let visible = false; if (global.p3x.onenote.window.onenote !== undefined) { visible = global.p3x.onenote.window.onenote.isVisible() ? true : false; } let menus = [ { label: global.p3x.onenote.lang.label.personalHome, click: action.home }, { label: global.p3x.onenote.lang.label.corporateHome, click: action.corporate }, { label: global.p3x.onenote.lang.label.clearCache, click: action.restart }, { label: global.p3x.onenote.lang.label.quit, click: action.quit } ] if (!global.p3x.onenote.disableHide) { const hideMenu = { label: visible ? global.p3x.onenote.lang.label.hide : global.p3x.onenote.lang.label.show, click: action.toggleVisible } menus.splice( 3, 0, hideMenu ); } return menus; } } module.exports = menus;src/electron/main/set-visible.js000066400000000000000000000017511516067347200172070ustar00rootroot00000000000000function setVisible(visible = true, force = false) { if (visible === null) { visible = true; } /* else { mainWindow.webContents.send('p3x-onenote-action', { action: 'focus-save' }) } */ if (global.p3x.onenote.window.onenote !== undefined) { if (visible || (global.p3x.onenote.window.onenote.isMinimized() && !force)) { visible = true; global.p3x.onenote.window.onenote.show(); } else { global.p3x.onenote.window.onenote.minimize() if (!global.p3x.onenote.disableHide) { global.p3x.onenote.window.onenote.hide(); } } } global.p3x.onenote.conf.set('visible', visible); global.p3x.onenote.mainMenu(); global.p3x.onenote.mainTray() if (visible || force) { global.p3x.onenote.window.onenote.webContents.send('p3x-onenote-action', { action: 'focus' }) } } module.exports = setVisible;src/electron/window/000077500000000000000000000000001516067347200150025ustar00rootroot00000000000000src/electron/window/onenote/000077500000000000000000000000001516067347200164515ustar00rootroot00000000000000src/electron/window/onenote/action/000077500000000000000000000000001516067347200177265ustar00rootroot00000000000000src/electron/window/onenote/action/load-proxy.js000066400000000000000000000005311516067347200223610ustar00rootroot00000000000000const loadProxy = () => { //console.log('load proxy'); const webview = global.p3x.onenote.webview; const session = webview.getWebContents().session; const proxy = global.p3x.onenote.data.proxy.trim(); session.setProxy({ proxyRules: proxy }, () => { webview.reload(); }) } module.exports = loadProxy;src/electron/window/onenote/action/multi-action/000077500000000000000000000000001516067347200223335ustar00rootroot00000000000000src/electron/window/onenote/action/multi-action/get-location.js000066400000000000000000000010431516067347200252540ustar00rootroot00000000000000let text module.exports = () => { var copy = function (e) { e.preventDefault(); if (e.clipboardData) { e.clipboardData.setData('text/plain', text); } else if (window.clipboardData) { window.clipboardData.setData('Text', text); } } text = global.p3x.onenote.webview.src window.addEventListener('copy', copy); document.execCommand('copy'); window.removeEventListener('copy', copy); global.p3x.onenote.toast.action(global.p3x.onenote.lang.label.copyLocationCopied) }src/electron/window/onenote/action/multi-action/toast.js000066400000000000000000000002251516067347200240220ustar00rootroot00000000000000const toast = (data) => { console.log(data) global.p3x.onenote.toast.action({ message: data.message }) } module.exports = toastsrc/electron/window/onenote/action/multi-actions.js000066400000000000000000000035161516067347200230610ustar00rootroot00000000000000const multiActions = (data) => { const webview = global.p3x.onenote.webview; switch (data.action) { /* case 'focus-save': //console.log('focus-save') webview.getWebContents().executeJavaScript(`window.p3xOnenoteActiveElement = document.activeElement; window.p3xIframe = document.getElementById('sdx_ow_iframe'); window.p3xIframeDoc = window.p3xIframe.contentDocument || window.p3xIframe.contentWindow.document; console.log(window.p3xIframeDoc.activeElement);`) break; */ case 'focus': // webview.openDevTools(); if (webview !== undefined) { webview.focus() /* webview.getWebContents().executeJavaScript(`var a = 'foo'; Promise.resolve(a);`).then(result => { console.log(result) }).catch(e => console.error(e)) */ //webview.getWebContents().executeJavaScript(`console.log(window.p3xOnenoteActiveElement)`) //document.activeElement } break; case 'restart': const session = webview.getWebContents().session; session.clearStorageData(() => { //console.log('storage cleared'); webview.reload(); }) break; case 'home': webview.src = 'https://www.onenote.com/notebooks' break; case 'corporate': webview.src = 'https://www.onenote.com/notebooks?auth=2&auth_upn=my_corporate_email_address' break; case 'get-location': require('./multi-action/get-location')() break; case 'toast': require('./multi-action/toast')(data) break; } } module.exports = multiActions;src/electron/window/onenote/action/set-proxy.js000066400000000000000000000016201516067347200222350ustar00rootroot00000000000000const { ipcRenderer} = require('electron'); module.exports = async(data) => { let valueProxy = ''; let cancelled = false; try { valueProxy = await global.p3x.onenote.prompt.setProxy(); valueProxy = valueProxy === undefined ? '' : valueProxy.trim(); } catch(e) { if (e !== undefined) { console.error(e); } else { cancelled = true; } } finally { if (!cancelled) { global.p3x.onenote.data.proxy = valueProxy; if (valueProxy === '') { global.p3x.onenote.toast.setProxy.clear() } else { global.p3x.onenote.toast.setProxy.set(valueProxy) } //console.log('set-proxy', global.p3x.onenote.data.proxy) ipcRenderer.send('p3x-onenote-save', global.p3x.onenote.data); require('./load-proxy')() } } }src/electron/window/onenote/angular.js000066400000000000000000000016031516067347200204400ustar00rootroot00000000000000require('angular/angular'); require('angular-aria'); require('angular-animate'); require('angular-messages'); require('angular-material'); global.p3x.onenote.ng = angular.module('p3x-onenote', [ 'ngMaterial', 'ngMessages' ]); require('./angular/prompt'); require('./angular/toast'); global.p3x.onenote.ng.run((p3xOnenotePrompt, p3xOnenoteToast, $rootScope) => { global.p3x.onenote.prompt = p3xOnenotePrompt; global.p3x.onenote.toast = p3xOnenoteToast; global.p3x.onenote.root = $rootScope $rootScope.p3x = { onenote: { lang: global.p3x.onenote.lang, location: undefined, copyLocation: require('./action/multi-action/get-location'), } } }) angular.element(document).ready(() => { const bootstrapElement = document.getElementById('p3x-onenote-bootstrap'); angular.bootstrap(bootstrapElement, ['p3x-onenote']); }) src/electron/window/onenote/angular/000077500000000000000000000000001516067347200201025ustar00rootroot00000000000000src/electron/window/onenote/angular/prompt/000077500000000000000000000000001516067347200214235ustar00rootroot00000000000000src/electron/window/onenote/angular/prompt/index.js000066400000000000000000000013541516067347200230730ustar00rootroot00000000000000global.p3x.onenote.ng.factory('p3xOnenotePrompt', ($mdDialog) => { return new function() { this.setProxy = () => { const confirm = $mdDialog.prompt() .title(p3x.onenote.lang.label.setProxy) .textContent(p3x.onenote.lang.dialog.setProxy.info) .placeholder(p3x.onenote.lang.dialog.setProxy.placeholder) .ariaLabel(p3x.onenote.lang.dialog.setProxy.placeholder) .initialValue(global.p3x.onenote.data.proxy) //.targetEvent(ev) //.required(true) .ok(p3x.onenote.lang.button.save) .cancel(p3x.onenote.lang.button.cancel); return $mdDialog.show(confirm) } } })src/electron/window/onenote/angular/toast/000077500000000000000000000000001516067347200212345ustar00rootroot00000000000000src/electron/window/onenote/angular/toast/index.js000066400000000000000000000012661516067347200227060ustar00rootroot00000000000000global.p3x.onenote.ng.factory('p3xOnenoteToast', ($mdToast) => { const toast = (options) => { if (typeof options === 'string') { options = { message: options, } } $mdToast.show( $mdToast.simple() .textContent(options.message) .position('bottom right') .hideDelay(5000) ); } return new function() { this.action = toast; this.setProxy = new function() { this.clear = () => toast(p3x.onenote.lang.dialog.setProxy.clear) this.set = (value) => toast(p3x.onenote.lang.dialog.setProxy.set(value)) } } })src/electron/window/onenote/event/000077500000000000000000000000001516067347200175725ustar00rootroot00000000000000src/electron/window/onenote/event/handler.js000066400000000000000000000025561516067347200215550ustar00rootroot00000000000000const electron =require('electron'); const shell = electron.shell; const ipc = electron.ipcRenderer; const handler = (options) => { const { webview } = options; /* webview.addEventListener('did-stop-loading', function(event) { // webview.insertCSS(window.cssData); }); */ setInterval(() => { //console.log(webview.src, global.p3x.onenote.root.p3x.onenote.location) if (global.p3x.onenote.root.p3x.onenote.location !== webview.src) { global.p3x.onenote.root.p3x.onenote.location = webview.src global.p3x.onenote.data.url = webview.src global.p3x.onenote.root.$digest() ipc.send('p3x-onenote-save', global.p3x.onenote.data); } }, 1000) webview.addEventListener('did-navigate', function(event, url) { global.p3x.onenote.data.url = webview.src; ipc.send('p3x-onenote-save', global.p3x.onenote.data); global.p3x.onenote.root.p3x.onenote.location = webview.src global.p3x.onenote.root.$digest() }); webview.addEventListener('new-window', function(event) { //console.log(event.url) if (/^https?:\/\/((onedrive\.live\.com\/redir\?resid\=)|((www\.)?onenote\.com))/.test(event.url) ) { webview.src = event.url; } else { shell.openExternal(event.url); } }); } module.exports =handlersrc/electron/window/onenote/index.html000066400000000000000000000017031516067347200204470ustar00rootroot00000000000000
 {{ $root.p3x.onenote.location }}
src/electron/window/onenote/ipc/000077500000000000000000000000001516067347200172245ustar00rootroot00000000000000src/electron/window/onenote/ipc/handler.js000066400000000000000000000020731516067347200212010ustar00rootroot00000000000000const { ipcRenderer } =require('electron'); const setProxy = require('../action/set-proxy'); const multiActions = require('../action/multi-actions'); const handler = (options) => { const { webview } = options; ipcRenderer.on('p3x-onenote-onload-user', function(event, data) { if (data !== null) { global.p3x.onenote.data = data; } //console.log('p3x-onenote-onload-user', data) if (typeof(global.p3x.onenote.data) === 'object' && global.p3x.onenote.data.hasOwnProperty('url') && global.p3x.onenote.data.url !== 'about:blank') { webview.src = global.p3x.onenote.data.url; } else { webview.src = 'https://www.onenote.com/notebooks' } if (global.p3x.onenote.data.proxy.trim() !== '') { require('../action/load-proxy')(); } }) ipcRenderer.on('p3x-onenote-action', function(event, data) { multiActions(data); }) ipcRenderer.on('p3x-onenote-action-set-proxy', (event, data) => { setProxy(data); }) } module.exports = handlersrc/electron/window/onenote/load.js000066400000000000000000000016361516067347200177340ustar00rootroot00000000000000const { ipcRenderer } = require('electron'); global.p3x = { onenote: { ng:undefined, webview: undefined, pkg: require('../../../../package'), lang: require('../../../translation/default'), data: { url: 'about:blank', proxy: '', }, prompt: undefined, toast: undefined, root: undefined, } } document.title = `${global.p3x.onenote.lang.title} v${global.p3x.onenote.pkg.version}`; require('./angular') window.p3xOneNoteOnLoad = function() { const webview = document.getElementById("p3x-onenote-webview"); global.p3x.onenote.webview = webview; webview.focus() const ipcHandler = require('./ipc/handler'); ipcHandler({ webview: webview, }) const eventHandler = require('./event/handler'); eventHandler({ webview: webview, }) ipcRenderer.send('did-finish-load'); } src/electron/window/onenote/style.css000066400000000000000000000016351516067347200203300ustar00rootroot00000000000000:root { --p3x-onenote-navbar-bg: #7719aa; --p3x-onenote-navbar-color: white; --p3x-onenote-bottom-bar-height: 20px; --p3x-onenote-bottom-bar-font-size: 12px; } body { background-color: white; padding: 0; margin: 0; overflow: hidden; } #p3x-onenote-bottom-bar { cursor: pointer; position: fixed; bottom: 0px; left: 0px; width: 100%; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; height: var(--p3x-onenote-bottom-bar-height); font-size: var(--p3x-onenote-bottom-bar-font-size); font-family: Roboto; line-height: var(--p3x-onenote-bottom-bar-height); background-color: var(--p3x-onenote-navbar-bg); color: var(--p3x-onenote-navbar-color); } #p3x-onenote-webview { position: fixed; top: 0px; left: 0px; overflow: hidden; width: 100%; height: calc(100% - var(--p3x-onenote-bottom-bar-height)); }src/translation/000077500000000000000000000000001516067347200142165ustar00rootroot00000000000000src/translation/default.js000066400000000000000000000000461516067347200162000ustar00rootroot00000000000000module.exports = require('./english');src/translation/english/000077500000000000000000000000001516067347200156475ustar00rootroot00000000000000src/translation/english/index.js000066400000000000000000000052671516067347200173260ustar00rootroot00000000000000const translation = { title: 'P3X OneNote', label: { donate: 'Donate', disableHide: { yes: 'Enable hiding the main window', no: 'Disable hiding the main window', message: { yes: 'For now, the main window is always shown', no: 'For now, when you minimize the window it will be hidden and can be only shown in the tray.', } }, settings: 'Settings', setProxy: 'Set proxy', edit: 'Edit', view: 'View', download: 'Download', developer: 'Patrik Laszlo', personalHome: 'Personal home', corporateHome: 'Corporate home', clearCache: 'First sign off, then click this menu option to clear the cache', quit: 'Quit', show: 'Show', hide: 'Hide', copyLocation: 'Copy this location to the clipboard', copyLocationCopied: 'The location is copied to the clipboard.', }, dialog: { minimizationBehavior: { title: 'Minimization behavior', }, setProxy: { placeholder: 'Proxy setting', info: 'To clear the proxy, use an empty string.', clear: 'The proxy is turned off.', set: (value) => { return `The proxy is set as ${value}` } } }, button: { yes: 'Yes', no: 'No', ok: 'OK', cancel: 'Cancel', save: 'Save', clear: 'Clear', }, menu: { action: 'Action', role: { edit: { undo: 'Undo', redo: 'Redo', cut: 'Cut', copy: 'Copy', paste: 'Paste', pasteandmatchstyle: 'Paste and match style', delete: 'Delete', selectall: 'Select all', }, view: { reload: 'Reload', forcereload: 'Force reload', toggledevtools: 'Toggle development tools', resetzoom: 'Reset Zoom', zoomin: 'Zoom In', zoomout: 'Zoom out', togglefullscreen: 'Toggle full screen', } } }, updater: { 'checking-for-update': 'Checking for update ...', 'update-available': 'Update available.', 'update-not-available': 'No new update available.', error: (opts) => { return `Error in auto-updater: ${opts.errorMessage}` }, 'download-progress': (opts) => { return 'Downloaded ' + opts.progressObj.percent + '%' }, 'update-downloaded': 'Update downloaded.' } }; module.exports = translation;