.gitignore000066400000000000000000000002071516075642300130560ustar00rootroot00000000000000Installer/Installer .vs /Service-Manager-Tray-Installer/Debug /Service-Manager-Tray-Installer/Release /ServiceManagerTray/*.user .idea Artifacts/000077500000000000000000000000001516075642300130075ustar00rootroot00000000000000Artifacts/Application.JPG000066400000000000000000000022611516075642300156150ustar00rootroot00000000000000JFIF``ExifII*>V?fQQ Q -zRGqc 9!C    $.' ",#(7),01444'9=82<.342C  2!!22222222222222222222222222222222222222222222222222 " }!1AQa"q2#BR$3br %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz w!1AQaq"2B #3Rbr $4%&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz ?BK,p 9XY^H5cW w#h}qn$+Owro+6ɭottA"q >k[遰#& ^z+dHmu,3.Ɏ`m'=3jfD MJ&D'=wt5vk4ݞA1s srً)16(%@rsVUҬI҃<:R;˃wb v$옜rqH9'&oVҮ@ToA+!`׷\4$,QE<3~B{յ[;Y,)rr-?P[wUgcc]qcaArtifacts/pad_file.xml000066400000000000000000001026461516075642300153050ustar00rootroot00000000000000 3.01 PADGen 3.0.1.38 http://www.padgen.org Portable Application Description, or PAD for short, is a data set that is used by shareware authors to disseminate information to anyone interested in their software products. To find out more go to http://www.asp-shareware.org/pad Patrik Laszlo Római Körút 41. 3/1 Dunaújváros 2400 Hungary https://winservicemanager.codeplex.com Patrik László alabard@gmail.com Patrik László alabard@gmail.com alabard@gmail.com alabard@gmail.com alabard@gmail.com Windows Service Manager V0.9a 07 16 2016 0 Freeware Alpha No Install Support Windows English Utilities System Utilities::System Maintenance 1993545 1993 1.90 N Days windows service manager tray control Control any windows service from the tray. Control any windows service from the tray. You spend lots of time starting up the default windows service manager? You develop a lot and start/stop/restart services? Tou came to the right place. This software runs in the tray and you can select which services you want to control. Do you spend lots of time starting up the default windows service manager? Do you develop a lot and start/stop/restart services? If so you came to the right place. This software runs in the tray and you can select which services you want to control from the tray. Do you spend lots of time starting up the default windows service manager? Do you develop a lot and start/stop/restart services? If so you came to the right place. This software runs in the tray and you can select which services you want to control from the tray. https://winservicemanager.codeplex.com/ https://winservicemanager.codeplex.com/ https://winservicemanager.codeplex.com/downloads/get/1591670 License: GNU General Public License version 2 (GPLv2) Copyright (C) 1989, 1991 Free Software Foundation, Inc. 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. Preamble The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users. This General Public License applies to most of the Free Software Foundation's software and to any other program whose authors commit to using it. (Some other Free Software Foundation software is covered by the GNU Library General Public License instead.) You can apply it to your programs, too. When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for this service if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs; and that you know you can do these things. To protect your rights, we need to make restrictions that forbid anyone to deny you these rights or to ask you to surrender the rights. These restrictions translate to certain responsibilities for you if you distribute copies of the software, or if you modify it. For example, if you distribute copies of such a program, whether gratis or for a fee, you must give the recipients all the rights that you have. You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights. We protect your rights with two steps: (1) copyright the software, and (2) offer you this license which gives you legal permission to copy, distribute and/or modify the software. Also, for each author's protection and ours, we want to make certain that everyone understands that there is no warranty for this free software. If the software is modified by someone else and passed on, we want its recipients to know that what they have is not the original, so that any problems introduced by others will not reflect on the original authors' reputations. Finally, any free program is threatened constantly by software patents. We wish to avoid the danger that redistributors of a free program will individually obtain patent licenses, in effect making the program proprietary. To prevent this, we have made it clear that any patent must be licensed for everyone's free use or not licensed at all. The precise terms and conditions for copying, distribution and modification follow. TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION 0. This License applies to any program or other work which contains a notice placed by the copyright holder saying it may be distributed under the terms of this General Public License. The "Program", below, refers to any such program or work, and a "work based on the Program" means either the Program or any derivative work under copyright law: that is to say, a work containing the Program or a portion of it, either verbatim or with modifications and/or translated into another language. (Hereinafter, translation is included without limitation in the term "modification".) Each licensee is addressed as "you". Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of running the Program is not restricted, and the output from the Program is covered only if its contents constitute a work based on the Program (independent of having been made by running the Program). Whether that is true depends on what the Program does. 1. You may copy and distribute verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and give any other recipients of the Program a copy of this License along with the Program. You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee. 2. You may modify your copy or copies of the Program or any portion of it, thus forming a work based on the Program, and copy and distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions: a) You must cause the modified files to carry prominent notices stating that you changed the files and the date of any change. b) You must cause any work that you distribute or publish, that in whole or in part contains or is derived from the Program or any part thereof, to be licensed as a whole at no charge to all third parties under the terms of this License. c) If the modified program normally reads commands interactively when run, you must cause it, when started running for such interactive use in the most ordinary way, to print or display an announcement including an appropriate copyright notice and a notice that there is no warranty (or else, saying that you provide a warranty) and that users may redistribute the program under these conditions, and telling the user how to view a copy of this License. (Exception: if the Program itself is interactive but does not normally print such an announcement, your work based on the Program is not required to print an announcement.) These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Program, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Program, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it. Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Program. In addition, mere aggregation of another work not based on the Program with the Program (or with a work based on the Program) on a volume of a storage or distribution medium does not bring the other work under the scope of this License. 3. You may copy and distribute the Program (or a work based on it, under Section 2) in object code or executable form under the terms of Sections 1 and 2 above provided that you also do one of the following: a) Accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, b) Accompany it with a written offer, valid for at least three years, to give any third party, for a charge no more than your cost of physically performing source distribution, a complete machine-readable copy of the corresponding source code, to be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, c) Accompany it with the information you received as to the offer to distribute corresponding source code. (This alternative is allowed only for noncommercial distribution and only if you received the program in object code or executable form with such an offer, in accord with Subsection b above.) The source code for a work means the preferred form of the work for making modifications to it. For an executable work, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the executable. However, as a special exception, the source code distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable. If distribution of executable or object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place counts as distribution of the source code, even though third parties are not compelled to copy the source along with the object code. 4. You may not copy, modify, sublicense, or distribute the Program except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense or distribute the Program is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance. 5. You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Program or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Program (or any work based on the Program), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying the Program or works based on it. 6. Each time you redistribute the Program (or any work based on the Program), the recipient automatically receives a license from the original licensor to copy, distribute or modify the Program subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. You are not responsible for enforcing compliance by third parties to this License. 7. If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot distribute so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not distribute the Program at all. For example, if a patent license would not permit royalty-free redistribution of the Program by all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Program. If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply and the section as a whole is intended to apply in other circumstances. It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system, which is implemented by public license practices. Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing to distribute software through any other system and a licensee cannot impose that choice. This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License. 8. If the distribution and/or use of the Program is restricted in certain countries either by patents or by copyrighted interfaces, the original copyright holder who places the Program under this License may add an explicit geographical distribution limitation excluding those countries, so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License. 9. The Free Software Foundation may publish revised and/or new versions of the General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. Each version is given a distinguishing version number. If the Program specifies a version number of this License which applies to it and "any later version", you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of this License, you may choose any version ever published by the Free Software Foundation. 10. If you wish to incorporate parts of the Program into other free programs whose distribution conditions are different, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally. NO WARRANTY 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. License: GNU General Public License version 2 (GPLv2) Copyright (C) 1989, 1991 Free Software Foundation, Inc. 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. Preamble The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users. This General Public License applies to most of the Free Software Foundation's software and to any other program whose authors commit to using it. (Some other Free Software Foundation software is covered by the GNU Library General Public License instead.) You can apply it to your programs, too. When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for this service if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs; and that you know you can do these things. To protect your rights, we need to make restrictions that forbid anyone to deny you these rights or to ask you to surrender the rights. These restrictions translate to certain responsibilities for you if you distribute copies of the software, or if you modify it. For example, if you distribute copies of such a program, whether gratis or for a fee, you must give the recipients all the rights that you have. You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights. We protect your rights with two steps: (1) copyright the software, and (2) offer you this license which gives you legal permission to copy, distribute and/or modify the software. Also, for each author's protection and ours, we want to make certain that everyone understands that there is no warranty for this free software. If the software is modified by someone else and passed on, we want its recipients to know that what they have is not the original, so that any problems introduced by others will not reflect on the original authors' reputations. Finally, any free program is threatened constantly by software patents. We wish to avoid the danger that redistributors of a free program will individually obtain patent licenses, in effect making the program proprietary. To prevent this, we have made it clear that any patent must be licensed for everyone's free use or not licensed at all. The precise terms and conditions for copying, distribution and modification follow. TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION 0. This License applies to any program or other work which contains a notice placed by the copyright holder saying it may be distributed under the terms of this General Public License. The "Program", below, refers to any such program or work, and a "work based on the Program" means either the Program or any derivative work under copyright law: that is to say, a work containing the Program or a portion of it, either verbatim or with modifications and/or translated into another language. (Hereinafter, translation is included without limitation in the term "modification".) Each licensee is addressed as "you". Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of running the Program is not restricted, and the output from the Program is covered only if its contents constitute a work based on the Program (independent of having been made by running the Program). Whether that is true depends on what the Program does. 1. You may copy and distribute verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and give any other recipients of the Program a copy of this License along with the Program. You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee. 2. You may modify your copy or copies of the Program or any portion of it, thus forming a work based on the Program, and copy and distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions: a) You must cause the modified files to carry prominent notices stating that you changed the files and the date of any change. b) You must cause any work that you distribute or publish, that in whole or in part contains or is derived from the Program or any part thereof, to be licensed as a whole at no charge to all third parties under the terms of this License. c) If the modified program normally reads commands interactively when run, you must cause it, when started running for such interactive use in the most ordinary way, to print or display an announcement including an appropriate copyright notice and a notice that there is no warranty (or else, saying that you provide a warranty) and that users may redistribute the program under these conditions, and telling the user how to view a copy of this License. (Exception: if the Program itself is interactive but does not normally print such an announcement, your work based on the Program is not required to print an announcement.) These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Program, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Program, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it. Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Program. In addition, mere aggregation of another work not based on the Program with the Program (or with a work based on the Program) on a volume of a storage or distribution medium does not bring the other work under the scope of this License. 3. You may copy and distribute the Program (or a work based on it, under Section 2) in object code or executable form under the terms of Sections 1 and 2 above provided that you also do one of the following: a) Accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, b) Accompany it with a written offer, valid for at least three years, to give any third party, for a charge no more than your cost of physically performing source distribution, a complete machine-readable copy of the corresponding source code, to be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, c) Accompany it with the information you received as to the offer to distribute corresponding source code. (This alternative is allowed only for noncommercial distribution and only if you received the program in object code or executable form with such an offer, in accord with Subsection b above.) The source code for a work means the preferred form of the work for making modifications to it. For an executable work, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the executable. However, as a special exception, the source code distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable. If distribution of executable or object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place counts as distribution of the source code, even though third parties are not compelled to copy the source along with the object code. 4. You may not copy, modify, sublicense, or distribute the Program except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense or distribute the Program is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance. 5. You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Program or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Program (or any work based on the Program), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying the Program or works based on it. 6. Each time you redistribute the Program (or any work based on the Program), the recipient automatically receives a license from the original licensor to copy, distribute or modify the Program subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. You are not responsible for enforcing compliance by third parties to this License. 7. If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot distribute so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not distribute the Program at all. For example, if a patent license would not permit royalty-free redistribution of the Program by all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Program. If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply and the section as a whole is intended to apply in other circumstances. It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system, which is implemented by public license practices. Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing to distribute software through any other system and a licensee cannot impose that choice. This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License. 8. If the distribution and/or use of the Program is restricted in certain countries either by patents or by copyrighted interfaces, the original copyright holder who places the Program under this License may add an explicit geographical distribution limitation excluding those countries, so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License. 9. The Free Software Foundation may publish revised and/or new versions of the General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. Each version is given a distinguishing version number. If the Program specifies a version number of this License which applies to it and "any later version", you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of this License, you may choose any version ever published by the Free Software Foundation. 10. If you wish to incorporate parts of the Program into other free programs whose distribution conditions are different, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally. NO WARRANTY 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. Artifacts/patrik-laszlo.cml000066400000000000000000000020661516075642300163040ustar00rootroot00000000000000 PADGen 3.0.1.38 Patrik Laszlo Római Körút 41. 3/1 Dunaújváros 2400 Hungary https://winservicemanager.codeplex.com/ Patrik László alabard@gmail.com Patrik László alabard@gmail.com alabard@gmail.com alabard@gmail.com alabard@gmail.com Artifacts/tray.png000066400000000000000000003301021516075642300144730ustar00rootroot00000000000000PNG  IHDRYwrsRGBgAMA a pHYsodIDATx^%v o'$xBn$0ݪ!yʬngsb#2^C20@LB#͐iu hw-?'#J֓m>~oY]{R%BUHA׻q6FRmFV U+IR(pފZ\-AX[acR',(Ǖk*UZ!0ʕV1i7q=V3Q-ON]Z5լ5#|ŞWZA[aWrZ Vwl9_I++zVJARĢjKr)ɔٸYĂfP檙RwbSnWʅqI{gvϊOKϾ(~d ؗQbe|^*~V,|ziL{⠟wpPGGYO{ë/{_toߺs^ǭkQqRV~~~nk^<ߪmUo]p+ߺyqv΋)[KιVf3^/Rt-+un:z|Egr2O['Frrx-KWb=] KGKjr^ {Gѩ9|F`K w-1Fbϱ.FjYו%gk 'Ε(xtNFV_s |`ݠY6h?X/{ \דfu5,ݕhJˆ$\ggO?wȝb8\.V++ ̕ϰKhQKC v|hY F{3laȽ)iNsEN-z|5gNv :0S]>U 3_=TrBӬ=oM)?6q@OhjBK|{:Sڭb:\:fLɴ]-0/zKE,_P`Gufla#ʶ8ΪOs\lA0/[yؽ<ۭ҅. ~o[ڽBBjr f?36JKz}UJPk=多 z3hF]͸Z ʕF5}[Ɯj-F QB!JĪZ4阐t"z#RB âv !|Va_Za6qpb/$]DA+ RZJFIiR"|W|n<E/g(iqOQ틸e9zZMkz=j;bWB^etpmOwGك/@ۗ.?n_}Ժ~vvynε`ك/?߃RDF+c@Tm]7[$oj՞u.-Ї / ƨ@7>a$ %zԾNq|*<.l[' Fy|u'T%\%jyru.W yow[/ {8YoN֚@:oݕj]G nrAŀR $Ό ʍS߲>Mx'- R|F>9w? K;ⲧ5K3ho[^ٓ7>n+ʴCg L: ~G&9uw?8Y*-]-Dчث_ hFf{+Q[.`oyxhAZ[Mbx1=Gs㟃s#@zRpH̖ӅrTVːr.oa^~uH's]L d.bAY. @Jft~Ŀt~0U©Rg؜)f\lo>ԿY a{*njS!D5̿^b]sR{-zNfZSB?(fNb߯21B!ݠG0CT8F{𒯸3uXTuO&6mEXFy;W'u 4r0߽m;NjN=A!rY1 aNN/kV'栃 N7',D*G&ASq]A/g`P-k%(iİCAD,5T,,5`aZvw,0)pb9K =%k_3nRVL>_Ź;ܗ\ga!hܮUa ,,I U4n?{GX4: aoj*;8=\?x2ۗ?<6ZfvQ$K2/zhyQaQGk8eX"D5nU]6+`v4ih'H_]! v@X9sB) D#q^=ҼSi8a0^ܪޫZockӕJe%Q9Ly9rd,q, :,6P{v/\J tP ӵO yt x&0 1DOP\hQ4. x;`(1jX.MXh5QG#ғ?ugLԚ ;QY/Bh.?}W<FKH?{t }Oϼ$lϵhQާf1fyސ6L<1CK{y+ R<[5lw2-PqDtda..n A)YYh,M\vT0xXAh0Bt^_ЂV;Z{X!P)WfwP k9 %(PccX+5VT뭤ѮZENS#=@!Պq3(¨ 1(81@Hq9 ])[[I* Rʅgg8TR(LP\nưFV 0V$x>a/ç__~YZ!ӈvjq y)UTڮĻY.{SDP9]ٽg'/W_{A凝{/>4 WdEPaR,}<qF R93IDZg'5&F2/;l/ԳaD@XSʰP>?bKL-!AҸ.!%w0EB qZC귅Y%`Ŝ+9jh`I GRXJ).f3}[Jm'D< QۨU@rRtхP >qH m"qs(XuRkƃ 9F9-1XHA±ؗ('. {X2فnspʝ'GtV c}z2 9HI*8>1r pv~%aDmT=\ꥉ dbRM\BS8qndA ,<ؠn̷3ug:6d.L{j`+m{8~pHa:{Pp}ۿzڿ{I] Hޕ.; 38oy,EY8S(ˑCk:޼kpc$%0/q9̵Cq)pr[{B]|݆Y=. 뎜t2g,4pov(-{҇!)e|uPw\?Y>6>܈Q*\:u'|6hQ90'|RgBt!(pH|:4g4΍s '%FA(Q͑@eq -f,=j6\cuZgkSX(N ǰФ 6ׅ\m ݧq1҃9Af,Y0dҤnFbDbdW󘅋R20-'+ = t@!qcBL : ]@ȝqj=\Qccitv[~]c>8W&ȤC4]8 P< 2>xָFA=)÷-Xh>Z#2){Cp8Bv5\ll֘ĆMN(E#T4lP{Է"XXkUMJ0wd'@wOFaWi ƾ҉aBaZ)ts5k+(Wjjښf;N~;[H,VBX4$vҳr0'gi]y)情n|*}V)r(|Z]f|zpXGw4Dp$K"> N^f=yQ B: =ePAGJT*0>R#6!ρb:mԷTǪaI-Ћ2:fgvw|zϹuICnc$Be&-p.m_8؜&!dI4deg]DnJ՝/WO*'UXx1B䌽0-j s97pxf7*7[Zjt:_8^ T9%ʼn5Ş9HY玽<rrB| f syEѵ,A-f)E@@2 o #u0[*j12ʺ:ý!Pl2wVH8内qRo ]`.F;9l1<GSK2Kp`zXg 6oc8 s!ǞsE޲+?EvRA &,#vޔz)UГC54l"JmX4 /Oա+E=OލkE8`\Fd"{'d5SiY a±( 2 ֛fa/1b08F,e!t<;A\ȇb\+˘*dbCvЎ`7gw2XC!s;e §qDžOO< >/J_ZEI9 ]@U#Ww*9xxퟕϋţͳ% {~B!T( Xœ3OFC?Q`ď/owWG:S%) ChAm6^ܻs1 (y.q{ʥa:ņA8!6*[$*rB'r3QrUbrP91Fw#3^bkWÜap0~s@J$X:>P.7s$swpqQB",{ K0B *p<ؒd+?Y|¡, r<ECD_Z5ܗ8x@D#cgbm  p -lTtF !#o?ߛ/6;r 0,!mZB)qJ$B]PNFAsbznȵ Pc%/U9|T=`U2YC$OtО*&,\Pp|ࣘxxc\9f7~9RHe1|{BD'7\v$hEqf ރV0g MBIE_m[kÄ !m>,g3E>҇MpxoA f{qУ@]Rv6z+2aauQcFN;wgX VQ0g>j ;6iL8?I"DDЂ0[ wv3IYö8v,3I}T NUQp!zۉp8|/wgX@0:. ?~FBd6 u*NWs]±4LD>qQ;(68 q)$DMLfM@&,t}AyX|y}͇T>tۤВt>oe˻~-cYHAVՋj)AYV$Z X9.CU.߭X:nV+j_7sl$Q'f5^/ r0 ) -U#jD!{3srkܠPp 4WI0@(]^,J x_+H |e9(`XUxP996,ļ-Ucb/xQi<^ܤ7=s(U]lJ-ڬ,7lrp?Eh& '#(Tp '`s(By3QCU˷=3YHW1 ,\b8K`8$ Vm[{{; Z\)GBT!Nk$#-,Pm,"DL.*vjp}:xEvub>~vn!m agcg`!(tO* r\:1ǡkG3QBׅ8Sm],TKE @wB!C$V @Q,,uІ*;o9h$q%r`r!)ȉZb 2a%]<˅J ]e$Q~ܳ_}PRA(j5xV.=- `z ֪hЏF`0*t`48 Gpx3gg3@a $L0PQ ` {N;yb|WD)~A% @(X#<-2\R"yqa>ly˭)wA睅ο M R<1]5](g)?iSzx"T`)B?A+_s|AK 8\CehYm6n!/_<2,a q 6tpjlPpB4TpJBWP$nv*EX9Y(Ų_Dt /1 r R[a_H | Z\_*heB!Fyb򜻃 9D9t{t-DT2jfn8 \`je$N&,b^SߨFXX' }%e,SJyџW_뀙fkVN|r3,X>uV fÇ1p&jMX"T -Ga38L?K\C*@ "W,V̍k#9- Q҂BsC.I~|o?K8WFgn{OooW!Zs: ,wMX8+q:ǯ~NvVp@ v ϸ(ɖ" ""hĤǢCs"PFG Ss(cYvu2@<ވrLXXa%ۅg(.BX(Q<)=/g}V|EiWQR'~q 'N9rp>Jϒrʶ:O+\"6`,8.ˇWU0ȏ.{gO_vN?}:y.z [[3axjBe^l;p hM. -J(,CX(klԏB]L'}m\o@F`oUz[fL!?\lTnKsY}Q!K]FAdbM!̥D^rl|-!@PB%ѸA0fHPOA Swep< %ť_: X8<4|$1J =7xDBcܬсj@07bN|S[crQ+\v4S(xC,qo&,4bt $ D(k,,Ƚ7Z{dq^re%o"{BM9)0B` )S\L>Bt;Q!aa4%}{w| ,\ D.%򸢃 :3rPO茴 -vRe\(&fAAJ{v*J4q݉t']N*p4hPAb ,Ttnvs9 z*TAiYL"op`!/g6B kA@(t ՜Pu~ĕ{ͮ<fV-%Z~GJ.>^AU\P# ˍA`1K|vT8a\(¨R!*äQa.eLRD ]b6 PA&`av g%\ev|RʙZ].TV7oZff݆Xɜ{0>z,W;g/_.>\|:}fUUo 2p}LǔYY]sBR D)E}V!l M` qg_z2s"`: }Yq-p(l,d&QI̽^vUԼ0vo8e %Z6f(䃎pmv$"mpU8 u9+r %\,죲s:*,ĊeA  mT|DRӈ 5ZOr_~}Ya'vv4ܧ $aQ)F#h:Bws.4ۙ&^흔/!Z0LѵǚU_*ycLQ րV#VPr`Xu ih|x6w^(Lgg;Rx=yhS8Hfq6g!B>ҵ )tEs).DYkb9A Lt3&,]}\}ܚ0Sé.E_cfF(8yxxC͓{`P,D6E{!6.d0_m }Ia`dXtRb|ID cLFb5{z w]7qb>g*.D9%"L˴R@ FHBta%jPI,דL) 0>SLF e!ˢ_ ] ?|{޳|P^'QN0 V#nR+FV^hMn9;|{EM'ZQrQ&9HBD?9DU~bBo 'u)؞XIjxwB[#Xю~܅O#1 OLJX YhTF]¹|1 w/},o*<.N ^uS2Pk 䗾O;_ipǙp$%X u16 %,Hgt\<_=j ,-ͤJ':\9A.Ix6`hE 0NO s70юmVVTQ:(甕G*[%g!qeZ9U43 =aԇrMiB4cgJM*.֦1S C1Aƫ416 `L"D~l]/t alB 40dNL82s9r \M#BwNsy՘*"[@#L0̄} ~)`qä-kz'' t],ts9 y@<@jcV*jzP2(fەE/f/="ea#cg:c읅91 ->-n?)n?-!wa!:,abgbEiC|$F;3O0[,; a?, 1Z0? N:99ۻ_>^uYGhG%=Y»&mA)dGgRO1 Ca|4cWz\B?{gA/̞e?prI ֔U; sءa~Mkpമ{F6rռ qQMn٫JYE D!9hk4j6, t{q9,|\3+ADbBWsT 7N8ls"}VGtP2 -ӫU:aZzu8_?*UVx,Cѽ֠rX^.ɩEB-OȑBQ,i e\}5dTܡr]bkScLC,T4fQq@/ +rrTF*溟 Bl wc>[>nR@h}uu)B텺rg<эztB! ܑ߯',t8qri o Bw򺜰uł[br>RRp|3zTϷ7r͕"Щf]Œ>RQ \͆Ш9ԚpfVKHc$!U `ףk7bp69+ѐDTN+BQ4MYg{C϶D(,\u_iJpua!{ j>-XJ'`IiAm-|2yBz<,\TOXކ .,+5.q33̯o)+w؂*$ ˂ۚ@\ O=UF}nu_?W ޓՊ͖`8Sz&n߇#/!8LX8u*J+Ls шEa.Xý7}.\jD !Jp>|)B UjM@ь5HChW4=7tBİv ,\3]+ZOݸEXFD4](T`ɧ/>+><|(gPσ짅q$ yP$$q^-5+A{qN0:-]7zW7>~Z?~.v~廵u_~җf 6< D}</od5C>hS?^gBAh NܬBʻf¡;H7;'#ڙO2Mw9ηTH  Lt.V.ylo5A>e(тd2uC1X7\@r u3,\)oBDRz2A|*q-)P]%q g=r&sN0 y_cKʴS+ȹB*`,C,|SLp6QY.)' ›B K_:(8>(EX^s:ճ ,{Xܛ+g˵ RE2J~HTO -.EKkTT*_xgR<ƜAP*4<bs+ϒEAͰҩ WHgJTIm4)#=:tVXPl{$%B&ڄ(T 'H[=xl,@HfH罯Igp2Hx%ڷ,B3N* H] 5Xo; gsB})jFVxtY|BUs/w{ {t4.8a!Ud"@y?֠5%bA(4ǔ*pԵ ;YeYLE[ю^U-!Ws-HHMnO "b|t)Mf %[LA}Fz1w 3dbX{b^" Tj%s)F}e(tē.(LyԉX9H0*B-&(4~U"Y^'Wg,x ?}aKpe*+I^ٮʥjk$zZ-F<]|zaF,I4BLҰ Q%@6Ttr" ZJĢɜֆ tG,|á6ܤ<\T9is4ڑTb\@yO|UcAF}" [DQVf!1SY-GP2~tH{K,kGͯ}Қl)}%/E[r$p,@o#v|dJ .}foS^U|}6'3e~/gG =spi 3L96$Iͥ(4Կ͛,=,(B{V̅2τP\叐J 3ׯX.…ܞ%˂IFzz`=[AC} ] !z](ؔٚD&y>(lpX. }yڤ3>|˹E*?pa-iydXosW9BЀ2g ׽ + Mgp.RXLhҰGӒU'C2!pXzI =(0׈ԼmgBc,\m99wj9רbYX5nmnFmh(9(N2;zgv//_vI ~Ҽqq-xA}5;5/ڗa[Z&0:iZZwuC ʻ8i6;UQ4+G~9!.}t@qo@&{عik?nPhD԰G-׮wrL\ A@ߛP8بoV84a^5R6M٥>u*GyîX. D 4@m:7vt#򂖶lƒA~z6%_.(P (w3<ΎfZY=>YOdfЮh qM]9+D24/WG],xQ OgJi؋R|~FhjVTnK'oyU0BZ-Ũv%[-5D*0jD `:/l%8Y.Zf='*i-Dr]d 5|m (&jLu<6XӒClo5T<:[rRJRR9 uJgebl$!r}mƒӦḑtj8w+6 鳠 re'eCh6 񈐰{`[BL?U#4174k; =\zgRԚS@ї'+if!h \ci%H:O?M^5kj[! Z?Y:"3Xc@{BAvojn{igx{$#m>\iOYԊv G^=h";ܷ"93(ǩyD&MZnw,`Vn+-[𞔟D/' BqX4iy8Zjn-6zv[J|ŤXД4BχlM7km.Ӱ;q)n˔BHK'W,8|AbOP~'BDp}0eq]n'N%ZisJ] zbAaqpxF(fwW_G75+^c 3tE:L!W|dY$ڙAɵ[ї"~Y"ҥ!^=~RW,|\߰wr &NZP0sKx-dp ,tZ^ily#k\!VjKy:l0k=XZ-(Rf,Ÿ P.ʉ}a4 %eں& } `d~J6&^i ౟ob^m͂H\h#?CD0x_BbaEHx^YӜDp]'RJ?Ur [H.3Kgx'SœLx)ew?@i"[?Bi XPfE%-@)GP^cN#,p&=Y6rhɖ_*K̿7%e0~rp[|,k>9ԕ|8Lvzh^U#rkA&T.iv =grQK; ~܄e6?@h/&ÙXpe{ dj5lm&( g"Hbx% ZB,sjVT0*#ElCma]5i@.L 9X$WgE ~Y/_(Ԍŧr~=S" }l3V=ۮ>VKAര=fFg/>o~9?FA{ 8U D RV=G>doM@RG`V} lP61^U_kCiuiŸ4 {?Pp|.Wr  MIQ:Yz,DEUͼƸklp<٭gd tV}qXh1Z/!+2ԼG/D3%Q8Րˊ ?"G1W8tͣ7H%t,jbrlS؝RןBY] "w] = ӟfŖyZ*k,<х.;9 }A#|PJrƓ%5jPB 9㎠;wď!E?8ެ)Qg6.،E,FE-B'{;2H#!k*U!fk.J15?+nǍW,1fe+V -t!p:OǍA iNNVF& v=7=, ai3SufDCq2,jc:*jf tC[` ZڠsMd_RFJj^;rWRG,Dnjz[XΖ-w( |e<8|Z?-dN _}8"N֝04)! }݉L]rkzBh`'NKgzGO{O7O?}\|! C`Tqǔ2b+S~^pByB^vê{?d!ǃ|C;u+B2@]C~ֻuM~p kWk盭_;{ .#{׹Pr M#Ǭa hR@ȋ҂E_IUihQYyȟ(/GXnCjB`yzB8͢'s9xbMp6b>n`",qh,_n5+t.og˚.VHCgdsCX jd>_;8|gs:;VS9zjԁO?FMPKatYhkI5R&@UX8S:a/BL `]PЛ}Z"y } є^ABñ, mͥ6 ؜%*tsMpQmtp)N'13?MG  -(K;^"6w/yA7ӘjQ_ڄ5=nRgeyQ+#c >8 2 l,{Xlj~TY~ojg5X.M@x| 6QX躰ڈ;} NXH3pD~o}YnZb?7d"Cՠkʝ:˓ aЎ^:jֆڨc(XjdV>Z k`A*$Xp'> w*갴KEXUA܉W_>2J-:eqRmTwk B[,ۥA9 ]N288 FgIIgwEi:sR{;WZψw4)|.Dw'"{׎ EYTX8,t^ b@]OƷSb7z͛TՔ447iC^: ́G|0GNz:`N5石p1߽Ͻ(ȧB3Y82)HL.㴢펤˭ ڋ7yiʊlx!0|?梃P5% y/! E*3]oˋ܂ pWoy[DBA@T088d\4<[;摑(M$܃,L/ɸUKyU[MA`ܑ؞lU%@£rpD@,Rgݑna J P3W+[n]?_ŹZ ^[| Q F p없p_2哫\ _ ;}yZ HQpcLRQŎv)t:EPf6IT {-ԸRBaB &N61T /}bIæ+K/|z޸PK2P R`:]tkV{q b5ֺNd:or lx w`LC{LA껛ݷH5MM]yC;0loy'6a!ػ B >&JaVGoܴ_]^Q'oCrSE.FK,&yS+WZ,~܍8rDVI m)Å~LX耇=f|jD6|w{+lG%ajpb+ : .&dz9dgBFn,i8 W8! xZ~BCiPJP? %~Q4W瘅3T5M&,[0xG{S]NF*uZBtډvśq3ƼbV2IDSTmx\f”[}Qt0ݩwR gL@{8޲IUkiLf3tr|) '龗mSHդ)- L}JCz u8hv X`aWEb\ZB?p~>qBQEg`%Yop+ZxoKL4{R(EYw T R>CQ lUGK<@b6|]?3!Nn,$*p]hS"v]x{ wLqAO<S5O0'6pc?KA]()DNވD9 Q%M 'OIZО}Ͷj_c;_| ~PeL\6Ћ=J1WFu yyh}©u߭ۉ=+M9]k{Eed؉05Qba:JlflUu^ G@,mwcgT 8ABiW./1c҅dyf+ OXh/`!6x4{JJxpE*4<\NgRqӥPD|q!4x F}nۉݨKĶBa G+!\#{!|,r&PFl\0%/ d)xey+UP 8t[~ HU8GW9'WpN#m hA2(rĚ q:~ҎE8" C->RYLR=T,ה"_qA)D1?V㲚Ny]sloÖr>َT2o BWw'?,XXѼUX(7i_*UkFP돚f=x???ﶥwvg >psYo@AiNP\ӊ[(?pՊϯmy>ֻny& sM#Y%, 4>^5YAC}6}-btUѰlt<]#ױR`A8]|CMShGW=Bj185su x5CܱyY=:TjpH3Y=p2>)A/h@sDС;  ؂BN ;#rYQpYBe/ˀY*Wq`)xj<Ђ&E<!,L)m?B[Utzca[\QdWiQ1>>Wj#Pۨ&S; rA+ T( Xk3PM,֠QQ J!zm[ ﶻnTB@#jkJZ ,L[¦hn/h1,…VM=kKS2ɿ 6B! т>Xtn*(MƼGh/IUCDXW!-,v#6~&B.9BSߡ&ЅPmCax XHNrVk԰$Ms•ȀgSxk4XjRs,wg*4(Rئ#%QWcIKkq u0Wg eAJa6_bB7>OHMr0K@bRMm pfW4rp6׀nNm&ᖥ8"{Դ;kn*ݩ4[S\5ޱn~60MNsb.DMm0Z= qJGKXM=  } =D^tkO!zBgV8 .YX44|rP9^Ȍ@, hD3F' Q3Pz.yrF4-cGԖ5[ [omx0IectKhG̦Ai-5Br, !|5MAPԘM:s4+ЈR4NRbdCtMa 1> &1ahn2qiw ֫G2M=Xhi MPETZ[(YC(NSiv)^Yެhdo: .m"%\9 0Hp:1x`0rW)̉E Qtxt H1,eXȽwsPq.:Х]Z?`>]S7+]~]([kU?x\< .r; zݔM[" f'xas~^KF›___(ȟُ~o_u»n e}zbtQ{ugCƕR$.`|#Y |p! kaYkb}PPD*&wՒMhGis8@hL r@ K`ノp( Jܴdv 3*sá*  t[*VCr ѵ,2|QU!{FWk{kCp(hHڙ/@*a\WMHܸDNM7EℊSuo$8 ״1B QR|63KSj܅yA=99㚚piMO~K.1iSS rq#rgxrÇ红u@ηAbQ?>!Qs]`LntiAaN/ M%|}^ׯcNR>RN"~ V߱n6lnͺ}678!н6GvGݗ5ЂWf7­8upb"+,Ls3lr(\dt%Vo ʜiau Gg! \]8 ; 4V>"u>n. M G.t_"Yhg!Y + ]rX\[ΙjDѭzIVGO6VK6[G͓-LegP`hY?qzT@;ilIat!(‰.did:_s],w,!"A2d&+1/(֬?,1ڙt~dJS3a5i.]p#rQ4bR2nt - ,zMmB5]nBr4(,G> 7Sbf̗5_r@h13=XH\B=gRC(>n#%k P-r=Bg,RJ/[qé< cdу|ᘎۜ|5M6Iְwt>?TZ[l@ 5!ILBXd"26jQD)kh9"E(+fcS(ڋBWBKˋ||OǸ(h@Q 5R B}.8h2[FBU0tԡ&,t9ssz9H)&{gDSM/s3{/ 3?ցjrb=.t2a~~~AmpW;#55۽j# v4Lfar??_??8;;;==~ ݿ]S3>ǡޟP/g2rI)?q[zeڙԙ/6_ғ{A[(3j9_eBd .0.4'jr5 5(HFjJ+@,6K%g9W}9_@x%bUB)X;,pM GKy{,].VO擣xo:Nro6X b-ѧe-\ApC\k >_k\Zgí8bXbs`tFhˉҤ 5)*k.A9^5zc\ɴy-Rnոu8+ߝ<S9NM*&&9t|:;`:qM.CkxH Pe*2UxCgrTd5`HHv?64 j90hjN49{Y{pp/EzT0. doZ>U)1 Seq|(iaSE]n4˩A>7,dv~?|@!/_vm` +!v\jaRi[%hGY MXViov>P轝2{om/hfw`]>|sЦ?vqEJ׍򼦓=a|up?2 Z~bd+coC'䟠4ۏ~r_r~׾曯O#M_Wx %|mPb߼*Ql{ȷ69B*_׫UƇ6ׯ>֝z;6lߞi8u5Mi/ÆsMK\z~-[3^_JR&& u[ |>,[,wQx{*s!X8^1,CI'f{K2"XVӤpnt G.WP񮚛[Q-ؒM-@ܲRny8R :KC79 "2zZt3lB0ta2ڪ$]N,5êd.6Z5ICnP,oL)`t-^=@uB=,\.ku~ğcoդ3Q+ZpP,F\ˉ|2 KLf(jA+c CZuF2AYFm5OOkЇbGPb5qSv_`7e 5Ηhdrx#MGX`}+A1,$h9HZiOG+u-(މ UEfPVF 4Z)c\ϙsV_ ku;HхehN+\YRu&SE_AM)K˝5=a!o|!*ؤ\ib9-ͳE< LujԕÕZpt!P(]Zѥ$N Phܽڽp;z5Ak5%H:^KApؑi4QOݤ6 jy|u! aB(sմaEgTޢR\w|k.X y[RRpw, O: V1gNQ@{K4ludw~wP@">x__?C>H>nf*rmL;)-6x}Ɵ?Q~]U>zU57*V[w{<;n}8`MZ?U>Lr`O5@'D: 1DS˥QgU=ިC*& n [b˔2gc,QCsEYZPKL׎6骍" C tISA('R\s)lBiE3sYD]il$ᘅ)YU\ĝH(LذBeSu5itfJ[i<=7SSZ#VbpH,I: kۤTӼڑ&Yҟl}jrY$_ \~.gr ¤4I?jn蕡`}!4[FWo| ˗/wofoo\.{N V?4x[|7ƕ&ݮe߼·|m.W hin}ʷ]6j߱n߼?=OJaTyA5Lh,\oou6Z䗢+e2eC"*OB": =F)>c8Ǻs!2nld@CzJP/tb,}=gI4\0ΥqBPNYW[ Ѕv-BN7 G ij S #U&C]H4p~΢k=ke@a6g;3fDT8#U.HZp1Uv}݆[,!OOYy>ICcodNFSЛ,v~ED,tpG601rbnuQ֠(5)4d^~]1QR0 AO 1ݘ$2U~p Vqj\y3F8G]htVhkZkh N_Ϳ7L\__(&Gѯʯ Sk6lo?Go}.7jZ7װZ?_6|.3Rju{[GBT.I4aEgJB Wш Q 5p\Y՚l ír0aT8R%`Ts`yG|2LY1 tJa~b ,Z7':~P+qP@kӻMe1L6Q8C(A"u(XA Vjf U2mv|UHT#MQcPmkByJu5`]w7kY?я~~wi~6 v[ށn3¿gy ͷ/K,eI =zQWVD092oǑ%@ՠώj,`3ځf|+@ kzl@b#gx)BF|TU{RN G i5g*j6]TѲ`=c{2F72P>@Q5>8L3#E @z<\함ohe1*,pL\CHro  j!=^*+p giD&kHq-X?°Wи I*n TC^=$C9B0j\V|{R iXhwZ-Ae;zJPĉq'"f="b&ΕztqoSd) JkTGb6aag؂wB`ۿw~wЈ7A ~nnn ܜ?3m$3s.WOzx9!yS_kr!z*OX8BEƚ树.\ f)"dOGBT<\ 73p.˥cᄅQȏp& I i @x^1‰(?t.q½üd4j.IuD꘧>f!P3\ MWʖpZF JյJG=XP-pWƷ^a|If󔲧q )DnRi1U%k,Rk9h/p6[u.䩠̊y 4;>)z+e)0X炾ܤۈŜ<[@O. Qr&B$Z?r6кiD,,7cga=hFzQ5 kq,rMo!bݚMw {jǽz''>5Th>׮l6P 4=YK81>NX(iX>Bp2,a!G蒯e៖|gkai gRu%͗ㅲ!WMc 7Rgv-81Gayu#FuiTo>|H!ْ2J(0 KE}T`߷(Q|F7{S eu  F2LcW L<\nN|WҐj\Q\vR%w6 ~ì B/I6l9 u#,Yː~z FaEe{Z쁇&Ѯ]JŔƚcV !C)35K)FIf 4cc.4ه!"4HnȱYnʏ8 ==e&f`L>@>(pBᄅ~& әT&p똸FuwOzDϡ 15o; )15k bNdu}Ie¢VէD5kޫaa}jԛÊX82xs0k6 ygRޱn'?ߘ{,KB-w&=TZmV7ebXn.|sQaFNNSHR\\sGe#Y8Sh.{[̓`%"fG:bxonCʼE1ԧ&<1DÌĴj|664"` .E`m.Wqr4'w7oy j&WWn`0f[3w;q E ZOxK d=A~~V-6h_Ç?1 &1-& "bӎ}cT*A,l (R־+Էw,6gn4IX+u -Ep.fiAlj*h"҇B^ 9WhZ L$Djaez6a:.!̛Ɉ| r\+aphӠ™ƃmBb%NHR`Zjܤ꭫U~1+d(bo:a.XG-WW*/C `[!Vڕ;mwۏƟO>17gWD@ /ڋU@XyT~\ʕ`^lωj-hF`@`>p%ҢMYCKY=q>:;ʚm1R%z6xA7j8 n r{>JS&< /FV0Xv;w9е BOvg2@}V6 |.uE5f! T&{/ 4%~GpT4*` +ܔ.47icIE 5PmN}mndba¤[.wZ/FBojQ,,7;mwۏƟ_`>)k |} S,#baj \`RZVtBM$Pfl@_x̽-s8YY=nюeCApi4—.~)>57Ըjb>>Ng݋汖-ix.p99ta=֦KiH=˞nrd+F\[3l" 1.~ʞw"hJV7;n Tf~-NYeIm) z ґB RcX85h_Q_ @kfZ35HA@Ur&5,ofAÝ .[G&62@,;mwۏ&]?/K!T{|s޼^k\eMRt)YL͕Y#-<%WEhbG.t-aK ^MR z+HsG{ZBwjQp@KM" K5v'IW(';Ke[z<ܨ`tf HM<6G ?z!Q}L Vϵd|bHetDϝ"fr h&2IQ[yg;O!{ſh'9ut9?W{rӄ}Gg W74-*P a<^ת~ C^S)4"Dvρ_mwg7p 5׾^o^B))Ӫr: ) ֗_(,NWSmk ,W+P#Rr)Ǘ4 >_+{A ٳWcd+t(igr/mOW™H`k%HCYeFԔ)5.j ͣ g#rBA^z3k:@hnҡ,t<-$w9ד}BZ:cm8[l, W5534ܞVS8TpRB 1\ #z,4R3tz&,s8 %`f6sJ.Bc1Aj"FOeL M fs = !PP D=h6sD} 4=@fJ-LEkⲭ_ QFg!zr.wn~o7> THl.>S`or:Z܉g*-! 5KLDJ U piRp:/狇 1zTRxtu~޺Yo_-C䁱% QrZnB }IɨaEӐbo1:V<\fX:KCC:xb!PI!?NDDGT.-_/ŨV[(j7PXőzw3X*6 w6̡P :+{r0F,Dl up)^Tsg!Ziݔ|tQ kW2#FjB8 ڗsX/:_hr7ѯkUʀuֺ=$(px.CO> "0κm J_6D),\ ^6 @GpV!)  e#Bb4MX4¹  -@t[J8m Bl'i.l.J\!f Ö }b̄(1`tQh8gK=wbBnmzQXxi`jc7QD>܍4SfSЅ)0*Rϴ5ʜOh bXHoPOiB~4sl*5]o,k.v;کč(n67[uӖR ﶻn 2֧ݣ@FAMr`![/ p,rwRjVŜ 1~Qc4]/km)j`!g|cAhayO# >иjӳBlHaEMuٮ{Qm%gjpJȉUt`o0\k|.b~h؆J5U{m뛗gJO(͆P;T"ω1Ps!OB)eP֛vr1JNmxBG}lkfp؜ڭdZt'U 63ìG\G& dcsAVC|t/1-Ў:P9 Msʙ)j-ƅ~n0 ajqo2NZ֋>R5JA,w,X_{9cB2Ҧ(,4uHApndX36֪\qf*ǽxO !儅V 1"e)T亴$zϝ5 {;2I{ҦLfH!؆YN/||(/FY|55̄4&RtgvkoSB ".т;z R WkMuqJ = aГgLv5(ա$if AcTjɲ I뎅wMX睅k4 R&!|jrR^ /K's#YT\x?\i@wA^皦\l)J) EC1pZ7\7(QSNQU(UWmH HC@M^;\H ) bg.P8̀?cp(:t 鳔p!R( `w 8ۘL¡@]: :9"/x(JOsBR{I༷UϦa-pG!MguH}’" BZP z}?A b@*#}QY2:WqS0C: rihg&jm W6J~c-sQp-q@cM^3; ӽ‡YwAkkxD1 c.»nsܤ 潟~ Wht kV…^7W[ /((>lGj|jTdJ??ϝ%KarjVҲ-(c,^fB7K(trcs:`WGkM[U'a<*CHG_ Z/w-\a{3=Ԋ훰=4${D¬.yB,\*בO2!GmV}xM~K=&V]Bi&Q&fSMQt&.A4@\n0۝lP‘ičubمWzP,}`ӹ-Tsr 1dUBN1A0>BAlF½,D: ,Q~=e3?!l٦y\'m׷|oUͫnU*vW}wv~ۧmw۟gS?{?vS](ބ Q\ء,W.zqE+_\w х$4+.qa'xD )k&z+g]8a!ו(Fʂ_9Bх {ԡ@RSk5υjq`iUCU\W S+U:% )P2EYAjJqsQUNvla^!qDA8ZrՐ;3.,X?uSr!{@Gh:abpLѪ8oV!|Kuw)ҹR; 19  {6oYy. rzZGBDyS̨U[)&Ť !tQ+k6}m[Tpg':fL['ު>^nN*zwu|m?ۿs>* cGtR\4B8]Ut5BfK[-Wa!{Lt9O\: 8t0!e*)O4& ,A8+~28Ӓ-CC/ؤ`/ʢNQrK}aFZ\tQ^x. ӚM2EezlJ\ؙ))p%UF& EwD=Nrb%=}F.VH 8L1f RZ8~],+G9czTeRzJGgYzvͥ!`a) M: 1uf^ VW qRh3I:%Nx7їfC#C|d6.:nx\p6OYX?ǜ5 'b˕JuXr: DMDї3y7[ 3򢧾ph9X%瘅 i&0?,cbt׿cBn}/a7[HؼUkY[M|Oz7ܺ߹n?ۿsיw~8 "2\D "U,Tr-nl%/!r O 'kpЅxOA3i(Ї Ǟ3ΥҖjre#vrʕ KHY("^B+ͪEN!,h +3&>ڬk`iP[TP~Öln֖[.Tg6Y.`5 JmԚJԚZ!"V[&7-#,lЙ/t*+BVMZwmJ0\ lRQ Ptr 1/"I.ӻmxF~.g֢6HA%9 s{ yLXQaB0% SiSʽ̷T s?N!:[d\ >UhhbS 4ea،]vEʒA'"ڱb!6,|׀al\n\y`dO QF7.fGL?nunč?۟cO`tf6kkRHg$ -}2c=pHO!5=q|ۧ p:Cӑ=S9W6򿺣Nx qPAF:qSY{]e ^ـ6Y!d"_b,r74T%\5BgB8;Q^MP#?D` ŪD>|Z4¤[F,;k~ot;"R&[z hܞmV޾}ďy:mƟ_k6m `]R RK8`U# "6Tk=s=AebtlK#i}a}'lhVnѨ9E[k {ea=׻\o pqM3 $SȏB茰Jxy'&*?(7Z_F<AJpSt0g tҩZ}9EEX.%=@MQR66PG}pyDa. >@^pmqf%VJ@ -8ᬉUN{ '&P0" 5;"|4jj7W; hY2{5٫K4=)F }D3m"Kf84]£l,Fg5PT㠌8XĪZ%z=\Z!|Yxmw۟ƟO?`゚'|Ѫ7 p!8Ŗ"(x1BZC>j4DA6!`NQ pO4~< YYF'9,Ė/RZQ,Ol?:q4ԺW*[ Aw"-LJs5˚мejJչap04tTdM包]>BL\~Zp>DyHpFd ;Ea$`Y<#Fo<- i8³Q@ ֪KQ9&,*嘡|[!8d>tKkg99TU7̹onAF+ ~fB}1-Y~?f\xocq; Pcvm}3S{9XRҀ܊}.gCA_j#U>S)01ED툜@:&^]>^֢ӕFV6Vr<^s_(BN](:z,,dZwq8^m`H1Xu)- 'KEMC>TCL|~t4`{e!ЖGW]qia FE: )vb!)h,˵WA ThSq=4`0j<4']1L r\H[aqµ$8qbioBNȣLo/Dxt:KybsgOmz&P1̃MYf\Tb(%|%KƟsvmGztQ֌hakEMX.&Vx`ᚢf[.&](8a!j bI@¥!Fڨ_@zHC ך'E :tOP *Q>Qʵv7+jXڸD,pB9HѦY  )B]ox!8få<+,tثYdN"9mLSLs=_YꅘYm.ޤ ӫ!k,gQ)W8WXN_ni5p:cl9|t:=c!F501i !Is(BQ6-y,>d 5@X-ya-;mwۏ6a[{6ORiE ƺ_A5p%ʍOZV*$eBu&"B`OH_( {J'+c,<}-TQ&eV6+eu~fS*Pk R EEtT=X@6q0<0 &dk&GJ8MJ]8a!^K.R tGVNM*|Ɩ! =vC6N`zSSx6tPfxGM(p24ni9kսqwYh88B XڜPP5M(ƵnK:};I'ܠk ,:>wV\zb|sj f4%ʋ"̷ =]pE,(B܈&K" , Jcv8n.\ף ͦV}ЅNA BNr"}H2n;r91sOtBPF*AfQcP05@kA7q@*G(euޕ1pH?5u,M;+Ãm/Kp8D$ŇPCճ%-V`HaϳKuQA(Q_<׏ ǯrx ,c,=F=nC_1r 4IQ]Joq ӑ6hNeAdn[Ck{FB?WD!L,o?Bw4AD;ƌBUA佝]is13IyiT|Q 1@8OWiR=W XrZ%(BB jάޱn~6lgH~gF+X?xO1ioͅVnlW0 H cZ GM+X! ?>M1BP=iEOm ۈ$TZ Np+yhUs%@[@qbڠ+ U r .8|gVzհ9l9 a܎Ђ$ ncvmb߼ }[X$W|ai>7a_]jrŹ p6wP<,ħX s?mo[ 8D^: BQs?J7Hbhsf"RyP윣WtsEPi99N2tQӭi*p墢~lo1+Cb `gKBF =-2"U, {n# ,Bv A8q퀃:NDOTW@jzNKZPd8a…h*{Bl6ׂ|>|X#wJqB1) 촌>>1WR k@ے=sBcQȝd9;w0 M1D%l݉3JR|Xxm?v?7хI_Xj|ۨܨ=@||.f(lJSfBYE{B7K!, zMܧ@Q\Q>)<{\V_YNT8i`Z0;#kYn.ZBiՓDUEH ܤe˻OhM@\% Yo6k׏7ٰ)={ғ)ъ4PZR%xKgH)BZU{v~{KE'aB?)GF>e:v"(- ܬV|HSDbOJdԒW{޹΍peB)`IM> nl# aPkա @︅|m6tj5_KC\n¸].J`! |@D Z.(' ﶻns̔trp9eMT.6|/;DTpJ] |͕ڼW u:D@% wqxÜ>өuI+,XX~0sp#9`ޚKd:?-b-%Οឭi$"Ey9`Čp BbkjMy W:TZ$mL чKA+++ܛ@Ze{Ja ySS+-lG<7PBPo sUե=_d(t a0zjFbۍ2s&;184 Wprw#F" m\I53ZYKB>ΤLYE,v|T)vr?%u0_+\,}lo# kL5nw;W ﶻnsіQ,Db*2Vjà-kxJZ%HGRl1u8Hg@Qq톽9_0B܁ Gr؆6aN2]Է6dfΣrt0;)C//'3!,ĖjR 8D*Ah=pΙsZ<Ϝ3=5 $b@w-[U/]U|̗WWuA@$6M6$KHg}2{EܸqƽEĉ[%G1Jv-7Fwh2COwL[LJ>rMɾD ayw@Q|̵,,(/^u-ZB X6|r* w_8՞S#;KwG9zkn[͛bn㻴օ]S{Fv`!fY,EĮ;Ԭ {~baneX,$Rۿ %[dH7PČM~.4ԧ-adS?]$0Ðw,ͤJgQ,D–gT?X[/\-ڹPPeF#k+DlZ!<)rw,iZ Qm:LjM¶R2w#̃^niyhAqNCo39f]b+.T cY iҦ3)JVpȩYH-Bs1aiv`& -MGXhs)+z2^Ƃap1/3CL͝]f-4v IXW7 fQx5[(Bt8tBe W5 Lת~jd GT==$yiQk#ӷ"pʡ8ׅ?ѽp,5gr'N=rw,;GB E,Ԍ:žwN/x#CzBO),B)QBWPĨjF/LcǙU!2176ˮf]nU@Fw{"5^A0 Y q}x=2<90bPV7 W0,3V@:G%X oO"AAKKc`ChQ`Ŏ;<߭2&fJ$~`nYGcd)OrDEB͹ik)q`ҽ¦\4 _:nVꅅ|ߥsϔ)U~359{rJjV(õ,"O۽zS>)gĐtpkvO,^q4֋< Da 5Q^Sc;BPxA1 C9nF)D`mNluPY/mҲ6j q#;]SnҰ~Xhk^i+r3#ۆ籘V! --x 3tU+ H+UKJ< 2fZcN"dSac8#J]HiGGW"HrM]~(am=[SӱJD6fqj(&gD&4x\=f!d u 59iB`8*2`r}RPR{9׽~@Z`px} 4 C ,A7 ]8p4kϔ4 Y[3l+Ƞ;v;pP{wyF?o:T..?B)Ž]yS]5+ iPҰEB-S CJeC $Ö\]hDn=CY6l7vP5ض#rvR\@&6X. 으:(z]ͱ|sP#Kց9XYTkSq>\_jH)i u%;(CB DR Sq  Q-g'&m%Yk hNK2 JpR~n4>Qxm%tBSP;*=j"0]$S!l4<0; Npm9:։ &jF=#82g,)[,З_D)W2 X.ޅE/Q靭nஞRvb WhP{HͱJ}׆oW7_0Q@x)g<^Hu;MwhC~ET'+mWV(wr2jV"ju(4gdIS0$q?^=P&{Ǔ G&Vޞޝ|ƍC(?^8 ==X ˜P!B5$@YW!tairmBa 5)[}f,:8   MHx92Zz,GeBx-bc(Bt?x^Ŧ9.QG Zg '`v-BS b]B Zv]XlE)AFͿtm 1pHiK)ӫdeRNt.sFǖGir<-]&^̱57YZvě =*08XAfiGH楮1w7#c (,R7jH\ӧr@Bz(ʉ]5ò?X^߼:lC{.nLu_ymdٲ4fMeeh*@92oKoOV;w'%(ZCŔrTɂ*R>e={wkOҕ+Q=E#_`<5/>y5p>7Hđ/ԷmeF> F 5kkRbW6 $XAP3'@ 6,-7 NfX_F胵.Vԓںn۸ۖt_9cNoM“1}rņ7Eo1XڭQLcb!DƉpbqʑ$d󯏜@Q,=18}bhfx?}_4k k\%?(H[ׇn]ݼpr`GۥRφY;y5x况{rB5f9;CučORxnۏ@O g${IaZY,QoW e O;3P;ך_`,hKB 1k5̶l S% [v`a]~b֯ؔ[3 KGﴌ“+Е +jourxfڿFjg .5/4 ,pW(,D,jJ! %UP]VَPSr*YH F@P3%(XE<}5M m4L3AE #.d ,L &K'oN!]lTf_xx/^Ks3!QNڸ?BZWE:~\ӿ“?4[᧏`:T,Y, 4pBoW 9^+[4?1SOw#ml?+>Vɫ#mp3Z6`aTz6NAEŽ2yl Z 4f^^GqOїn7w`n\FbaTASGvZvFvKytWEafth R J*`'G֐#[=p.X&n$PKFZ&cE!]fa,6 _1F& !Gkj~РӔ{#'qN3Hg쀡iヴXMd4dIiI(D4{O$XnԖ_r\sفҊeSeD~Dak~< SÉR Gsj)}K`Ј3(x:5 YaXwÐ4~q,.wX8Gz \zՋ]y%w,){'汾Łٕ8j_9]/[e!C ]*u)QS~($"dE4]!^PiT4H.%=vtM%@(+j2NS)V{B阸:&G!3@q}x赹0U#,vǙ ŧYqJװͮ"5,X{rMOu:FĉIsxB0 QSE-#>5 /= 5 'Ncߑ! 2D6Xh4fzp]щ)Ř\mD+5RbYi*'U*RP28۞_<0ns$"5Qiw`D_Qi~: \%U,:p. W᫣3މ[KUVó Ul?>V5˜9 izu4$ PnH{!q *`Nk}6(߆ %-J~nX4DF@+@8ot k/i{^J&gn]@Q]e,k/ðXsbZfhB#PAS(ePDWim7/WR6ĨphE7o8R߿Ԛ[kXi]D q.C%f: $ ө̢FK' 9uCKx߬u5`E鸣El)\9Wo 'psRôX-x/+8Q‹<ug2m#\ȓĸ pTŊ FLu3JU =߃8,R߫PphZ)ZyDĭ[3+㫯W_\}gs< ;k]h oIL哯ּ>f<8@DkD؉l˩9Sdeݭnk坭x ~W s(F\,rҫc^-ߚ^^]ߺ5ګ&,jxkO…6XW(84 !8{f!0 9Š Mwc" ,[s uy@&Y,]Jk 7ɦj .6IrBA!G(UZǼ^{h(Ea?X>.lwTPԑޭB^c|9VM ^eskL5FzRG=y^w]FĆ"BAҸ4'Xhybk7r*{ӾSN` ~ AY3Fbpl,݉D T΂]q+XȽµ!M~m݆XwF[[iC0v~0ՐԪ _W0W^~|QōaNҒhdKtFDPT*5W)VCëv[u,bkkMJZȁ+l0[ hKLU iڪ[C;DƊ9Ў8wQ 7f`3!1\g?qB f␒KĽhݔ(8D&j6}pyfjzaWQN r=^/ݚ{DYh6<;p*5-}mvn_ܺ8q}evP ?}?W`agi{\=+X5Uރv F*JӍd ЌñxMq]Em_<1.l [B,=O̯2 -Ś-aagq,퓸V2uk(e~%w/a Xj;UriU9=hijW9F3Tg #Kf'Nd,l]'+~CQ&4!fhdL&Ad"H1IUWL}iC6i]hΑX/Nb|2]w&c!kMC!fAGcOD R1܈M"쨃+OM2]H7;:ϱPfRXxUDżʧ&ץ6((koO\ 괧D@6ȇS'i {ҌCݭb>V6>ymbWV̭^߸}y{a7,jxWNbKϝj]J}g=Gl 1p 2KR~5Q䉜Lu@39@۪٘ņZS M\NS-1 VVfð6)$-JHY/4X(~.! er˻{y/5W@P$E[%40oʑ 5(*HJFG5 &A-^;Vm/̷ )E+;!A,zA3gŏTFE$|1k.J3a!2#a.5Xb[G>EBJ@xH,_co ִc}Q^IaFD&: YǩpbD^wfjyɹW斯L/\:7q~n/-?7}ԃUVC5Cº; zM׋u:K31NaEEH(lo 76jhwpR~n C }4+h桵AͦЫ54pdcS{ܚ@OHZtav`{YȗM!BB ŃhxO6hGfU584)'h n?|sn˞i u(a(F?y%_lHhss0<!/ȷ5KOz85OF򓵃 (z#˼_/ŔJ vqXsSs' RC3xYBoӺlMnZDҦ^CeFO {}8,kXS-X|}q*ZpfŹ3[^ZwfzũWf{xnGZ ǏBϞ.䷀S۰kP(V#nqҴ?95պFwOMiB PS/  QnHV[iC>#CP*L]kȯ7ml=#ͣ pl٪xWb@kڡЈIԍ)FAY*;@YF'-ǘבooùE8!`@d-;dFb @k$SU2WQ@kZk,FUi 9l #\+Rs5b}8 >׊(,wWGZhmj|x=`tE7ϯGtH;lyJݭ>4X;Wwk֢754Wɡ( 'C1;C!/ c'Ǝ9;Jy ,%_=~s榼oj"=|F"(EYlϋgN/^[{ma0~~f sw.{eKӷ_w~K,jxWϜ [mXNWQQg&&/['Ʉhm jbְC:,GiPiCk+ŝ㲦F]a4<<ք)-g,4 730 )`ui.?f3Dk\g 7|ͫ[XtiT9 =Fv i]hɥvOF-m oOB;L>/N1re,l/o  ε l 49<3MD)NN-4 \)ab}|PsP64er"r,0`,${>Xb4vA"nz }z .gj1d(1*ÃB,_^:vmvsg&Mo2u~6a!řg>cn[}xO+x軗s8{Gw.YxYNxm3_7{:O?~Ñg¿wԧ -ok&֞D%:"OYJӓhX"@ nw ` .GTlh1zs4cdЅ UE ⒤&]"ч@[lV˘+D,ob(4Fl,$1'!@=ZXp=EH7]QOP%LȗH&.NrE rL@n)]qQf! lS=PЪqIaNI7 }uDmx23-x{Tra }a8(h"B/, LJrWQ$j&m[!HQbڟGŘX{0؍p]oYzo꘍E<bTMXxmfK&Ύ)2qfr, =53]pLu!MGXAoH8{oʑϡ?C')ݿGu~ ?dP-O7n<[Ϗ6<=O{'zЅ+ݶQ%͔gILph .?# 27 ,-a0𓱰m: Ѵ >Q gfV7b X\Kk,X`pB0 %ihG>Gd.`YZF Gc?VBcuo -+6 ƀ@XAAmÔw.pVt IC"~5]]#+,@]nvf!7 `N -*0H[~%mQدaͭ٘gBecy#9#ce&V2r$ O*4C#qlݦ\.#ݸ>umf[&N=7w~g=u{xa.mXq]{AiV^}9u~ ?dq#̪g-žtna11 mh5͋$faDH'R%c 0:ހ=P lox90dYǘ&ch87kW=TꋫX28`aLƈQu coA\ yPނɳT(V*gp9RTBNMb.ex 0˥ڡts qȓ)* GJ.Y!ňW2*V39]C2wz/ul`^K>m-zH&@mTè-0 s5J0cW|mf߃C1?Sg@ (2(0t<¸t\CIoyc7F3r9Z{k,URfiejpvչ;\}e;vԝ3_{ӳ?䙲pД$Y$$]YZ蕄'yԶw+gi-%7=@Ed?Os\/o-O''*7J=-aYr: ll᷈:áԿ BDǯY#S BO Xȯ I V,xe Bl MIɳ|K:,}}YٕYͩ8{rpg&5y}d"s!%+ơ i GX8b'R "Z *=e4qY3<}cƺ ɼFPqp43HCE>*]ːj  !P``cu4.2$1—B!K(.CU>Հo]!=Qޢ57'nMG@TLKiud#qwcVjj}l%Ĵnr'KWe,lwU? pd d͍I~:5o%j1ԭ;xeb)4\}q6rtsSwL]yĝw^̃{ -뙸U{:#f:]tiźbM5]B*95%cD '!*ȑ D/MSI^uk˻||VO#4vGx3|g]sn|Sт&)>}]⤤مgf~ksGSU9ʦ1rwmA\j<޹#GU@b?#`8"QW9K;T;UZn<"wW<`\e9J<\R\nyԝB:fS: k!#ihDNȚ',LB6ʄsdC@9E;H)Miv4#~L Qͣkmѧ7=۴Qc{ ՈKQ$G5ZrWawx9'D# тQ6Vo8I02Q"]  I&M6-(]oE5SGpLňC';K)(ߙXEB0"2A r*YMpG ͅaLe4l`!Ұ_N4S׈Kdζ[0{-Hc/lW3m}ND5&tHNH%߁o~TP(Fzi ʗt^7g}vB 9Erzv+_~ܣWf4PR[hMF;=MN'7Iw(GKLû{+R_* \=|wYNv%+g~InהLź*ǎ?*f%dpQOV LGKs$\O]|V9DE* hi?X DAe}ơ( jT" -#m"8 mDJjň:Hh L2;q]`g n &s.6&P%D)!|gZ`a. 4YhԜ:P[`dBDL]C4'9u- `Hc,_rSvI``/aLB"KoK<^ס`ii@țEO*kYYP:[$n/(X4w MjjHX~mT @xhH!PM '(ȝ'#s&s~ޅD΀ۗg_}p~{/MU'wqaIR.S"ԙmmH>@FbKwZ|9g|D @!˪ ( \h]*iN^^N^q 6 F14 Cc~@пƱeH3 y7#F`F_b O#|B @-2R_?,$NMxxIC rva,XX1qb\.l*&!23 )!>EB, 甈S_ ]ȍC0#Б)w.Q b[BB0 Di'z f!)jJb-5.BJ(5 ON  Nn߮鉽9'wٺ " «K//>0ww{'ȹ:2 шg\jxI {†o=`w k!#1c!W1N#ݵW5 )c-PKaXXbhgy}t{|ftyɝSc<(-j Y5ʛ][f!4&^,ԬX߷4=N!B[`PXXgizPQ25UNݴsEmofbuS,d¸\x &r crQLjX.XtK!i hy#Ԥt6k5TO0G"C_RM-t :U=ck=/X:߄ y"dR><09̳R)f| P;V8&D8EQJo"&%C+1j,T7ƫrxS~ C4qJDiwE^*(YCG˺~ d;xnX!Fu.A coTf+Vpf &'k3A]܍(+{1R49`֒1^ˏ.;3s/->]y᥹Z-j.

nywj+\3?H$(Ba -6wrWyEȘz_c#O R3mP]΢V6pyN9Ȳb5?JU8;c"RCۉi)Z{SCHIVsl'5|lp \Ģ9N$)1$,|uG&5/,=>,{@:GX% ,jx쯼𱚞 ,t ԜfpU5rŚ7ZǴl> 7#(e2#3wФf,.LE_"R-Ʊ='vZG71,]^!F(Ҭbv<*kMy4W8ER&۞cgyxB)whX܍WV'p j2caB*2ɀGȫE} ],`#oS"UZD>jcLϤ֜a]͎4,lt9FԴt톅S3 'C<}t8WB ?C,YCiڛ3Z[+pwl)`^vb`ыr nFgzD1RU)^[yʛז\^x$->'gjp~t)UVC5l~TBulk5'QU؅r .v~mrA Y̊_#3%e` I"@,,~db #P   mU.z Aɣm Bm]շ`!R{xfZ !%L|VC5TÏ#fgF 1`Žѻ5Ԥ˜zmra% !_(eoPraX؊mFﶕw[F; }(qG#ڥUGkR2q X&kŔG0fz@CjSt E*,Ě`7׌ ~~ze32 dru?Ǵ\qSS ǖ(ҋ}săpX.}ZZS{'`e"G!Oul*5Qzqqx, ̤ hD5e}Jôf,Rb)??p jzJP k52GϙD!T2a!r/]]zܣsϾqiM#ͬ_\xMP c _8?:2)XXG6o4avs~W쩄xš s5cAg ̈́ M-y$(1G,ô? ;m(!GK;Ƕw'S^0XӐ\ThmR<:&wWTxIUJ rIfsF*&85+!ogJ!,Tba'ht^s l 4Ƭrbdp 485|:8uaFa!$"t'Qnj#qMР9ȦZX&0F$1NĂC͵y! s0850O,NBG mͫG` s5(<߉TNH+O`֔z/?0s2φ7e~ a\~MV܀1 ,&+460"BV843b!EAY}  :%՚0 őc0fq =t>ذ"c/N=5 s@1ӋS#bƩ ,S:$Z5r{MnZSG҂b<8{t!D —'$R&1"GŹǗтOM? cxnlA{^XzYVua5T.V3=??rD[G\DʧttI C@VJ65 %3,`HIU%@mw90ČpIUb4 $:Evr/ ,E 96SwNMhzc %9gB Dg 5R~)(`$ivrb@Ns)ovVG!&fa -a]MMRh8(zw6ʰy&h--jB}qC"Mi~%aha?"g%u7MGWXʢ%g.,G_;o5B8ZFK,|w0m4L{ɯ P }B C  QD4s2jʭz `k~[-n-QlV?6R{ cB\B ΋g 4 t7NZXT c! ^:DDri\h5w`+aCc -pP QxUXh[jm5qMJj_[G%cf'N=q 2S%5}/GR$UEAiKYԱI2](gy^@xњ:z?O=r3TudCa!\WȞ+i>C &/#ryK o/?/]YK_D }D2TYX ?GNtZvj)æẔ[0Oєe#[ ;F#֡5E8FI" T{<Y,8BV'[m; -nmhT):U}121$x8D *6 2k {(6W24(fh.ouC 5pQTbgfcrlhE-26=3\*Y5 ia3 zH:{ap(!Qg!0ނ+Py#6dpB4f} Q+B.o,B%Ó<y cy-k^kV"*٤,WF0b WXN b[#ƘQ7i_4Js?=?ZzMCYq%y.:`N Eͱc7#}z^3D8;s#q^D?֕/aDςGPRVYX O\{c%@4;{-֑;XSa۵: A|#vf_46Os47 BpED m56]p{yr^ВHWI@I]N0"$z.2t7XcMHVfcim~1PT,o#B*#t(LMIT?'5h*5 OOBHSڳy k 7wƯA[RPK<c`d0?K,t ND8CŸʣkS aCH(# lV,-7 hĘqS8pQ7(/`Ӳ)x4Vm++5#bԀČCXxeM@_Y|b^G&uyD`ṙ7{ׅw/?yÇw^]]jgg:o[/ouOl{G$567[#{>&:T Qh%dqDct,[v qq`" -@4)vlٯ֟FM3,W¯$\INMтmaxZb~!r}~Q[jW!8 ఴ2υv}rŖծVfG~3^318Dݢz'auʻ'XسfEb_ mxD @,JU2K6١!'ZſЅڳH+f2 B 3G@Pa lَBT/1s/;168{|`Mb]gjXwKo2-0Kk_֥7/-M4Xƥ7.>8[l ]Y|~;oTP > ?w%Z/9,l/зli3uZz5q_ ݕd =u/2]1E!YGv!Ơ] o C[mf{l46kܚ\4 ;=g*&6$}UB]LC5z`a8`WR_f>/]6PFV0"0-WVOa+84 e@p47f`4oE[ROicSN?JY/[QEPOkA+oPZGbsyǗV_Y{ȅy;zq}t~Oso^օַÿ|+_җ?~۷oommϣo淾=44CP aP &ֺWza!Pn1.D!Bt廘YiJmc;5+bl<83L8J! %-{B}EdsmC]û^]gdU܆FQо!)Vs"A Eki\Zboۀ}bit6Lé)Xnl_E&Z-J 2زP2H7לǺAG}D_AEki_X|v]OLi‚`\N[KK1<L!M`k)Ƙ_?8$s5>pd+iJ$@:Ԋ.S0X8ik^hFj2Xx" <>8__/5 хV؞eD"4,>hA Z#޸Xx~ٙ(KM:cӊ\}>ҋ ?}{~Nh޼so}woݺ'҅?ު,jx:~Y;{{aǸ <ۨCtvOMľBTG X>eUwof0vWqgN'r3awi/"ř_E)"Mm2f 6YgXeF5COD+Buªj6.,S#ap6.597< xhSC&qpEQɡ2ʍYȯ['nB 0b?O2-C)G/XX@yB8(D)vj¢''}D zi"$ch0v0CAh*T&ag`ry~4nx ef`6P7 g^1󯏞9S4Cp[ Gkb4c!q' \Y|"^^zrij7,}Q3(߼]pzQΥO¯~PW?~zW^\Kxy㓯l~GZgA k׮]o׫,jx?Ts5^h`Hi6j,ԣG6 Z&nwub~ii4N7z.+gM܊o˯B>QL6,l /j"\ AFt,l0R_(N!ѻ-<:- ̠%=vm jydC0 ^ (6kCLnѕҒW Xh\lZԧ!D8Z'e*:cv<Թ-QNH40ۖ_rY:KhtyoJ 2,x1OnAXvd((VZh{f`qVSwmȯX F{?`'-RS ga|RD&e M4s$ޚii/t$y7)$BQ ^x}؍њ^AZssYO*Uj_Dݼ᥅P&v~əG`/ Kh{{_򗑃POjoU/7 ~y諰6ZpΣݽ_.\𣳐$ۊ߽ʄ,sdL8ĥ$;W;HR>~-"wEiǎvZP ,X!tH|M#PΓD؎{D1Zk v@hėg8u(RL NcMo9 8m@L5dA5A,| O N¶ٶa#7GNEVТoB dKO`!B0[6~旮MO7~/mbC߯6Zs[V,>_4?@Båhш?ׅ8Rwk,1yш)[T l?ZytYحyNM؍Ռr(4 QqL|ϋ'2 95BqNZi=?]ŝ:f*n^m+ij J\G*}#BNiAXNf!2HZB v5, 񴼎1,kv4Ɓ Vi!,l/v#: ꆍPĊFtI*= [)f[afG 1rR@EM{\-1"eʣ|Q8,{AQ`M3m12P(0l<-ԶP.Xz8p|Zkc&w*,iD4D/J&4)EŞd_V^"EB,6jy B(Ikk/,bD@b, L9‘K<٦ʻ#b}lɫ,H{~0ĥ=.=㫘ue§tmȚ.L,WCXح H6nk꫆%>Ґ#DH!7ZbSwblj´|Mڕ E{qc%-X ]㧈Yhߜo5m]hZ“7"l# _HSZC^nj /cdQ YZ+G;T ajbp^^ 1"柜_/.cFRṙGOpss'`Ho.ZpmW ?* Hs+)Ga2x_{϶ MsҪ]>GkzAcB t XAAbpѴ3 lQ߁,eB6& a 59"ͫ/avqaK*2e M(r@NpLrZ:,t)9iU Кڸ0j OX݋/\נIF} `a?so+36;fw;FE;xx˙66BJ11"@'Chc *8G3}ѳob#@HKX% ]up8.FM\v(J3[cG)]Aٴ,-t/uOtMByTVҦ50$)Tܩ$-<]Rw5cC:+=ԛp;r(#38".6Tl&uS nF/fGz0 =xAQ-t߷-/O)9ЏԾ3#-E}8V+P"h44kyE -:0#3d} |ٷX;K YCf!4Ebpi^s~~% >ү|+HÕ/^p¥˗/^<:6?^}ĿFlS'e]qn;>5j]XBMPmih~hv1{} JqRΰ@֚Hb,]0gk k|h"\,y_ f,0K<Vi r{~'x,nx3BnPc9@69~Nka&C'5yu KۘZg9l#1x9Z2@yGSXHģ\uN3{ͰvcEhfn*8[*$Ve3b7 Xhg,!! Lھ)ʤJf!(<5L6JܨÚ#ah(ӊ#;q+OOV?//$T`B( TJߜV8~w4 \ޤY3M߽0+SLF,Bm6,_ _~Zի ~Bl?c9ܹg}(=G r"<5y,N(Bc&}MuS[$by"{j[S=5+' j/҅=c+ݣ=ck11B0BFoFs-wpf:/vJ SSh.@+\ѿY~AT8>WIE/q Hr^/Ű%ǘ0&*HKl6k)pC-KM} RC Ci^:B3U Ӯԋ'Hܼ&|cnww[ &[yVLs؃y֎#qpPѷs ,=xp/#sw_ǗaP ~GkN|eZ}mx9~Hu(u(B-B; F3 X=GV`vNVz<;ZX_Gf\ND .ڇW:M Ij=n~;QJFN Z3͠&],ls 6h=RBᰴ5$Gˠh:a [adx"K4ނy#Ǚ| @zB^QސQH6^ Z|X,/$K`R,h 1]%8(ro'b'LCkd-(\r75Gn`_R&iM1Ssc D@DB;A*%>5-Nޚ1c]d KՇW]^Pרl~Qk3= * w?ɓTKX> B==Ǒf=%"C pcƒ6bhcBywc|sv{y׃^HKaÛ滣|ci%nh-D'fiL,»Gy6Rjԍ* TijheT9 5ٔWENs@),$ra($ #x:nzP0oitgx}3F?2G GרR& @r(Pc(H63A#\frSDArLoz1-jwlE&+Ae[7fI83k"ReK c]tG5fR`HKR/הD~Ĵo-Լ65]{sJ>9}S_3;rzXxf3ף0,rSRن[aw91ph^ݽ8wnzmpxaޥG2{ ~tn sO.-ȑ۱ȁ=XkkO?]__,j3 bNj/sMm-s @w@R0G,#Z[޳TO$uOlA_ yȖT PD!*vP*hIVUհQaе5 C6 ytbX4=,dD ũ2O j x?3U\i/CSc=Z m#i2<]R2`,FQ z`/ ƾ%7Vr`gg3v:3㼖8E(7(Z|gce{0-鉖(ھ7 w "Ko\]yraљL>83oBA4B$W#/~766fgg?~\ea5TßU_nx6ηi !؃*p'oc ih1Kz GӅl"Gqq(a&uk"EuWhQ3UK11釶<Z|KC "[B^;J-FlVMGY]gүiiP3"tZ2-rR8B AQȋMw4/oqOLd$<䘃B akB f"RIjXQ031"d)ő/, k':;КCs^2KEXXws88B`)0׊WüjP4x#G.AVR%C8Xni>>/x 1rb9ాI,.߻^[}_@qnɅ9ALY woyo~7V# hggѣG?, lYp_gqσP ?jX}훆& ߍ= ar<~tH0(<]cwOM<@v@G U*K(i*|y|?+ .ނ2 iè2` FɌ{jh9DXMrdR[*K z5"w54pI됦؇La@ٜy_ehA(ԫ<@X7Aἅ1:Tէ c&Ywy*_ ߜilu!Vӫ!C@|u .-܇W# -4 Ͼ45xp~w~"?ǰK_ҩS?, 0I0VC5Jđx4!v%8J5F+uf_#t!4ga A[p 5qU/M9P0L;#+G7g)̄WIQ#'jpv(Fmc)p=(NS żC@QЈ͹ܴfk=6 AZsWnP+/ynQb'"Pl)ͫ4phBv3r9# 17_}jh7~~.™o_{iG_tf^zi(c(th"_|+zbX.x㍷z 9({xDF* /p~"0o|-, e.MxH[Opt^*cPs@4 nvbFWiԑªgDzq|3΂174#>V J,H! Żc柝f9CG5vM*t~XT#x"@BDjah(h;r͛jQj될J}nVshDpx #^~d,$")YdR)E˸n.|( >a8δlQjZhYk]h]\)a\B2ap< j m@wd![#o`D84w憼"Ԑax2-2VC[HCD|-Ne#m4օ Nf! <7Q ̃_4 !vM(?.__y]Ǐ!"}}9ʈ3DFn =KRb lJϝq8t:v|rK zwm%We"G[C_Pͷr>/TŪ':d,||( ;5~B?ȥZƋd }ѧΠ;`0hO- LGVi_вkHL3hȠ XRdpi(胍WymќlTB;[Ş]MXaI!֖(Gh#O1lTRb8ǐU~D3 ͽ;K(…ۘ*C('dEw 3~ H h(Ν8~ιtb/HP)ź P8Ƕa)~4ڼolQnAB]iF!gH}#yc2Lq4c"hQ] }I7i0PEP/h>t\?kZk/yh\,g'w/1 /._xra񭳳ob.<;~/k~_x~[(Ewjz:szѶgX49z@@|\T$Tx:s$Ih?D\FZfD>_|lv[%O 1eK}Ohd8}Sw5et1nSF@tZEn9fM3u4 B!fd/hAF%hY~Q$QtYPY4;%urZiW*r;9)AÑ֐7"}ղ7p^059y}ztPӞېAף|di9[B&(Ijj-0ko/ph y$rZWyI XBgJDOXcAɨ-廧uNF@RxG3D4f%MW'Osȃt6%y)@X]G -Mjk\H1#;4zVHw2]p 4 % _x%J.;Zjg|+xTR G<*N4 Nyoxh+./U `b&IN횼^N!,4E ZZ8|ǐoNDҤV *0m֋p1B O@(8e1"ijJm8>#,f`,EjyMoHoD W ЈGldGwQB*qШp] 4yLJ Y \#NKi(Q7),.t7) (/f]hZ%h}]=*, Y_9y7!#L4LB;Ku,jQ wĥa J \/?t p)2$r^6M}ug8'0l'Q K^nannnOOOo8W4M/Wj_ſfa)!6̚il+v} qu޸鐤"+*%((QT*<*o-ˮp8[*KM}/֝~5=m5֍= YFNCWi{&6HKU^_%.sN,-`i#DHwC/D_ d(!SMƍ.o!^،I8,H zpQ'Ʌ/F>Q%uuBc*C ^4\[3Y1h&j;+Ӱ 5^6zDݎ_ɲ,Cm*àh8 J aa$.b",lzu/%,lFn\F]'w $N"_r\ c7-}C*ҋ=i= (g!H z'{>, jfzc@xu KXkBԃ'³ӒOо3h7|ѣG&~jKgͻ/^;9'W?4 =`ŕTʚ62qɯImXP;zS`CbfQsOḍG޳#TV Gz;?80V=u,:,-w Et!i,'e<$ h72O[)Me;H 335(t,M{TDrb, .IUyiBdKJ GJcK&cC3aν[*PQ#X^#4SRU ` :B$jz ȡ,ĸdEȍR`9@[M `a}Nl:be֜n/$ aDBv!SŸT7[bG|@~21:M+XʣR]BSjb>lˉ-_nƵ-OƠ>ZΈBu>`!rs!dz3L9¯kn[wqϟ:1όggӬo+T[xZBS*5w< SwwNy託G?y#5ϝ.؅XNˈ|L'тcN_=-EӺ1./R <)0Ox_wl11?$S$`FXlSYhZo_i\ouvm !ʱ}deRlu-a:NBex6Zu*jBvyu>`(uoFQvF9d< A2hDDXaVi{>sL:]K]{#х=6^3^A6 yosmčÌ)ĝB~&(6Jԍ[0L]s_9o]yOOjxA;@jx/ϝ7 AY4T|lEhTGX/D6SǠG2e-A-fnw! 4/Դ5i[sP"Kt8ښ[kXBS5 "2綍iYpm0_T\/6`JQsT&c{/'MZ_R%m]f*f$(hȲD%ݘŸ;q .ĥKQe&,tQt?2|40 )k\; R8,BELb?sK1aeAJzo uԋИ[jXVCp8>EDéu˦yt"sK>h"ygNP“so\{,.<7ٹ 0"X1מr߻o߹>;>:}* aU օ=d!OŴ}RI;`6N96s<=qYW$GpI8O6o68rk9w8RZwG287Wͮ)B6! {Dxb[amh#:H]n2:L~C ZFa!ԶM# F`0Mj 54Ŧa[ 8tnXpmB-uʫ3~3pśb`<8.LI4H;r`nH4IUgĭ2? iqԡ%-h'R#]>+ˏ<]^zCoΥW\{n6Njs{;z&oO[_OE5Tßas;H46RJ8wz(RuK;N;u܁;PknVSa~H̜? CԝnX$==#/OU'OOn[SXZ:fZxa*PlZi-[)j]ltR©b7Fֈ[5 }sA,dZ<9']&(£C,h~qbH0==`6ݺ]lX^."=3&"OmP&<@}w5OAp֣M0( 7pl22]Y1_ gQ: @m~'9z_G,4"? 8+i.joNݚAWkoW[ /~h0Oͼui`:0+zéaJMoKdNRg xvn_CГ ս|~Bl?+/|ss4dbG8b1l&8ADXBP^Ԍu]Fi7; ,Q2 dm-%CD'%cA, lʯ,Ck"# Nt{c0}d{|[DhSOcd@&>mev&6pUAs6bHh Ƒ5+]\"@* zdz@x 84gayP:,,iGXbX8w(ޑlUu5kB>٢Xu6 i䒚+ykf!dY\{k88&A2 )+5t;7%눊 }ڒ׿`cy [_+.xh6[(NXfP}Uq`Z]ХeE*`TMK>f!sw0xyDC=@xaهgTYX b_-݆{M=̌ F )cr[) v[֑=XQ>˅.Ġ`8Pʋ**Ӱ%pB6nr7Έ҅RbX3 O4D с)Ѹx *9"^ŀ\59hvQ!/m{Pd\0X8nDzv-F&u Vئ#')OK$E$rXFBE,L?6(<).K)O)'f/pcTR-z N6 ΀wE?%C}2ig|h(Dyu4,N3j Q jsHæXԇ!Ӿqůt? ㇅z/?bt6yNE,4#^Z|Qr0Xxi7?#HVYX 2~YX ƴ4Q#8|9fYE!P|eitUAN}|{.,lޖv,l*mjxZZ`8uxFDqf! +!!+A7 GҖWO)0c!T #$.օB ba0w*r.4,wJh֑&BQ8J2rP 0a߰)O^{d +ӌA-&mQ*Db8\JF+w,u.Pu& 8򍩙`wCMK W܎K˜y" NDzwB,xJƲه`åqI=Mu2 /1#0GB98Fb:`BP_kF sea¾ p`!f!n`dXMV0#VM8<3wv. 0k\YbP ?۟`a A;*!!GNOݓK1 Jl@c{YVpGP^TͶ-gܫI"8NO~qΩ=G tX͜XHZF6&ӶE#0 wglG:SxG!%Z^ Yqxa!K9kQN4 yW9||p{UL{Wo]g0j$+J=% %4nM"GV5tjOPJ_3PԜy[#3V6ߟO㛇8淈#,Ư.V78W38w27c't9ME帻a90>;rk"cMd݃5X8H, 1}P= -IS // Xx~|Sf/¦AdF= />|eҌ P<"]Md3 m(B@PGqkwq 1ÚN:S([_(9#LvnsggdW]RB_ BEJLj&F0a)^%USkUk+`"bqA q~w <3W ZVfN3YYQ^E0-LØKF{o,TGJѷ)" <,E`V!^pPF~xJ!E(DX=ƫ53'OXĉ"1K~􌮷s?w40EVB "g 5b凗Vch%7n_{BBª.j OrK.Zr+iԹ/[=+3d65@VI![-ySs=yOml(TbL SY܀!4Bd7;'*T˛JL (&=z` ݢ),M9-:TZt" :0Ж{I3UD!" Mz l/̷kQ5q PGx:aBGY d{2LQjK!0HFQ;T5}]N7%=ZDi 2yr/Y``̃['о 96( ]mN>+[ȉ^@8qo dJL; o+7ؒ6ǯPɹ`! P#B҃K+.>UVC5?XbB-ud, ycbY(,yPbHIm3tl:3,lZoE5@E AZh #,l/mBD'ӎ\bBuхPPsc42LM€ntȳl")KĆAچ^JC`S@iiZ̳b!* Ǚ]0LExR(YS[*f_^RdeYD,%qvRUeA$2Mf:/^AӵؚQ1" 1"uajPϢjs ݧgB),D)(lf03nk/.!E֕/^^ť.=NUVC5l.X|SbP!> 1#?T1(t^V&R v F"‰m{p \D8rJDޞ@"@]si+hYvX[:^P䈄LTۯ;hLz/$])!T2ACrϖYda2ɛTN[0[ ZT(~=Y'q\pn5j)D1YG0ؐ \"EB&@&s=(0e5݃1sӠzCG>R;ڏ,xaNWua5T/g?ycu/~PB`0~C%EڌÌ0gtHR[JR>tn&r>NE,=)"Xz?tS^B, / 牞}x dTv~H T}(H(!I)7뇲ؙa8H,yuXT#tŇ.,=(\|/OUua5T/ÿr5>>GKBլq,ȳgM^:%Zn%Ah7ZgrnX/-.i'QaQrs E>6&-KgHBT/jY6 $pp,Dq.s8Č0 ot¬6$E׶edC,)Kl1BN4—egk9I^8b]ܻ,jxNt=wvw5b0X'yW&?IeJ}Ujiu9p᱒(jũ= A Q_l˱gEl :sb{jW8,'4Ri:.X&ƶ1ƋGiBa`[KՀi!`;*  P&mtCH@DjC<S"K"bK o9r _` Q`DA# -yz쥃sځ)⾤T#~LKB?PT1 AX^Kfͥd^z _bɫ ~Gė_~_m}"",(&Se)Jm }v@R__<1.I%:xyi=p%[Dk&!",\SPaTXh]#)9HRP5s'OR#KHQ~W )Gr:H̊j ?ΈT;_UڅL;F,7?CO_ .T)—^z)a8B!KM?}q{oڹ7{?Wea5Tó??o'O{97~or#7~Uo`~_?_p,-fqe3boOKѳxbɽN?x?W>*"i|OJteGNuM3nzDU(Ƕ&V6YBͳ8Uy bï|эܻ{׷_[ǒ#|&wd-{5TÁݔQ,ZhŏV&i4 eq7YXe)Q`ƿ81l ?Fߒ"%,}S> ݦ9>YLȚdoQՃ娐N̐ܒYz)bqc9"Yzf]ےB~R].ėYT< L+q#-+9:?Bif7F +a8?0eE~ݒ45 τ.^0|q?Hvuu~ ,E?q@{w_s$,!Vea5T'3O0i+4' SX?mҜIE%eD`3$sY~D:rP'i6DjHa`a% }x) YyTnwbn+-.`pe$ l̤JEzeZ6i }<*e9t'mB-^mƤהVx?Oqg t}seR=k?fl_f8MEp}+*aTU4 tQ,>RPG] ?Y\ͲfNLn_}•Μ|?lO^?y<'ݸ^4"NKYx<uᑖaMrcdP$x Ώf]$FK*D<i\2*Fl斚tE[ðeUdS*K+N4oX!+nܯa\Ube^aY9K(`JʖǗw$_ھ FCTa)*S @-tP9~$PL3J SH"vYN`m#d L` )^<|_~͗^|uN͋:ރ{wb#M* 1??roһpuܘ`aҫN e< wc* ODn9ʣw_׾6bo8XԊ UVC5cd! RlO2PSLEMjĊS@H׋U <;c;o;3حf;o/ٹ'2>vN4?: #ji5T{flN;t'&PON %gp:Ŕݑ9 ߅Ow G4he,Q|Ϩ(f WBjDЉG`Ο.&&&V{~[2_ԗ ]9s0^;jOT! c~Hy0Ղ{CzqK@x8[7g8-R܆:Cp;4ʤ1+qgG$C%-MV"+.Ӱt ғSXi^9f% qRҒs?3Hte@ն4sElX?i 'H귾TJ?L~FTM>!A!Ջ.|g2{ ӣ?g>~u__O? 2]£|g*]I+Ykw$P-сl,S췆]L!6)98Kr99%=M-MyF,+e7ƽEG$5ɞ2$UKB"oƒss]N/Hbi|?O%zfE%9 x*̤ɪS.B@~_r$~M/t9OZl% e2O̸.'a'&MO>uI&M8vm^k]0s{;c\8x  BhPDX %.4\y_j?u;LpUfv^i]#@oƑ5v+ D,ѝ57gl =ˀBģiFAܣo()%b`<3 c .M193 :CaCŚYi v֜f .$wv;#:Bapap|^Vַ3ϼkƟ^a-.<:HXAԑ䬌=~ѡ c?,B3Da#`fR *T л&m¢{{.qjtjm%u!RР*.-27UnWBDҺ,-p?gil8o1>s ;i_"Lm_-33>ҫF ;M;lF 5;2]Ͽa?'?2_~FHlb ٳ-Z|+W[^z[IMd?un0z1cٛ`+B{owm=wɓ 5"p=Yy ,P ZC KM I!laPe2'_|=k`at +a(ai[t(g5 .]|kԾ^+__ ғ˸slsa?_hBHO?}WK_z7_z饳W\rS8I&Դiӌ,9ѣG~p-槆.eMٚ;5ZX$K B.\j͝mx J` k? w!]6rͿ9yR#V>g~KF*#O7H}ůߚ{*5iKDRW`4NGEѦHd,KylEEP r! paP~?c1x &lC=t}:f&bLzQmX,]&kg^v0PYJ.4{F{1wJn{PmeMPƝ420ANXVm_h\h }u탸oDozu0Ƒ\I0&ț0d,\c8\2a Ҳ8= ޫ B;"#x=ㄽӧ)vaɋ8Pqv=Ʌְ+ Cjh}?1C;#Ĉc"˫42 9LYFlK+vY+ˎ_#Zz*?$4 ^IlZa{K) tK,'*l`=.>#.6;N8e9dw'lmvs|X0n`fDePBKB_T=Դ 0_GM.h]4l 5-hSpeI2:FX0g][^}MW PgBSCWD ̲]wuggJ>ϘH}~+1yE_𩳤4gOyeW :?z*i^g.2\c\p(;7\qNl6L;-?.ijԔ5U0.[Y樣Zbł . /n|W_}'z%={7j(C;>O=Zgjw8qI&M2e=xwyipr n6{/z_lfg,R:/D/jSOY<뻸iW|25+~H`*܆f4+իv:A`ZWaq/•Cx ;NJ>S `K@M~I{ Bo7FH„3Ʉ fifO z !j"4ŀ6a@J1][ʨaa#g%1@2\if8Q 7\vx%5@fC ݆2QU,p U40Łj}q AK8B?uwpلSyL3IsLc~f/<'gM3o<j3024Q]mO:~֢fpCa")FKfw7,p>ru۰aW^i|+oK/s7yGn&~n_Bd)ъ%aȑefqTzdF-}cf2,#;!`ZaJ֣MZ2f{0Le1h7Q氆 URV\sӚM=qw}|׃Nn̑zL3儥E>qGLǬ;ν\ʩ'.2fGǟ{BuE,'g\z뭷_~ggyȘL-)DHq'Rk~?}_nܸф'Ƃ<̏nea{vyRyӦMq8U`йG@z!9(k^6h\axl /4$EM͢)J)&.^l7q H#nfn0BBx?w"A$M*>G՟5G8#VBsa2bp!J1N\,(SRO&Gjp1\CR`ƅή'/?ő;8# cvH8;ĸ~ bo_pL_ʝ2 R|9Tp,ʛ Q* P &Vs%z J *SC{})4יF4k (?ޚ"P^TJ320`cR9O r}?꫷5Kzr%v;tOm~ v;l?0}r6<%_M?ev肰\++l xe7gSjzy㭷OZefJ6xtf~&y`cz’ً[fͭ /\7~߿{mKgçzs3O~|j뭷8v7|yqnFZo6.fT\7me+mACR~#EpE,!nxwEt &3ӑ( =.PמrFw]+BeEo4{w}Ij{F΅)&wFuHmvŒf@Ҧp!/k`VH~#C1"HQKԱ/l_-c"aE6u Qk FT?ؼFs-3T[ zUDafN)"U'F\@xU=4аǬKjdSrY85@[ٜe꿷r > _LhJ~ыE[W"5Y¯ J‡*zoz1/ S@SZ1YھPTj&Н녲P`t:M@xߧz$'f0YPeO { g,PTyAcgtFƘ3@_N*e=\P, \p@5<'{O[KV" Zϛ\u)k:Dۿd#kv޼y7p9c{J{.[ni fƪTfg\mHeKnc*X k^掦Ƀ)rrۢq5S`G~GَOXsGvG T!1ކzz־ Rc!) Hl^FBNiZA\|1X[zðI++FZ;Z&:`($ئf{ǰq3*;Pj7Xnɰ(Jf1SsH~h:F D$tDRGpivF9k}\ XY^"?aZ@ٗbIig٧W vgC,9umf0}3W -9] %Ի2lZ =?B3W,BNK&ȸ3/ti$3~b1^q?aY8)[t3)/mV{5jԾcbupF>a–ܩu ;6Sw Yy .m Gyɉz_ ª5w"l`7"f%׉Pq%dWLoG"GbAH18ƺ>%|!l]῰}Yd~]5InC E2gs+F}@M C)}e/ѐr&ڽk\)/ k.,6pF <&BuXSPzF\P"6d@/gQj})% #NVUFNxyHԴ}uraNҠ%`M-`$z1gy>b{2.ڠ 58 F"6b8T1,y}8XFJ6d;nne bdA:lQ` ?q)I}uL2l]k+G`tB\S2u̒ c{AM Bʡ,rBKِi0PRnL f?4" 3-aš"^ ҃ˑ 22\Xi0M/E.dk Fǁl{6we62۬.(6G.MpWɩ9Bqv6ꞂgI b*!]~K 3g"k %jgohkT-DYɩf@dt˘-Ӂᢣ*l&Z~bt!PڃQ%ER4nIm!sf*h.3c3@ {Ҙ( kI+GB\X">Ba3SOa0إxVD\% ;D@Ps H}WKF3v gOJx jT1)PSfyb?+,ŘqMðt C̶} .lHSDdঘ:#p7:ÊbQ׹^Q -;`Wڷǔ["Hm/0h 6M̢Ji_Ȭ YMf*w,Dhˤ,¿QQ1P]OBiEv@|/q//m !&6Ƙ-NpQ* mrG@#P) ̅Pr5t"wV1dLX`OT%o[%/T:zL') JOAˬm 4B=X1MPJNp y!rh]j$ Ja.AQ*I[.΅4Xym6vڇ42 m*=&a15y8g*UE kGJD-5|%4hO>KԽ. "'6g>Q 2fcqXPʈ\,!@f6W>Ь@D\DC LMCF|AF/3G/Ez ^`D`6;kXq jkxm}:3DeV-l 6NZ]c0^R/+ oAmqpAhbHN!X0Ym <5{,VCե^(Vd(`S *2c m1ⵖ/4WQMaEQhaPpTfmkԡ2ҥFYW╌3mtjNlbR)0ʓj(̮ȪlKY] Q  ?H R6-gmr 2h{qI.B8Krf*QAuJ[/8cl}(JŌT3El"a# ˄(FWF1_e 'ZY\ok㣥 sQ…1Doth/6ʠibdln֢R:Bb?%\H{D@]Rꗣ/Z{Y.] @7+MYB@6.(iS*\㤾\A@cHZsi,.Pî&y y.*2 6gh%f82I g+p HTD4gP3fwv1M'DfuɢY%zp}+ZedԀJ5 ~TY 6`#&!˳i\D6̐hT\.Z~sPr.4tBpClkܲ{g!]#!oHْݕBFCIwg:Vpa] ܩW ʒߘ`U<5ʬ*}R+#cbiC"\)EA<R\HoذВSIò… W.\hgG FlV)-&UUE xٛPHTDjtQgi衉!/' 2O֌)hGZ[2 G6,EGT\*i$\i^Z#F(5* \% YC̃E*c6W.T Ʌ^0{%&q;I3s ""Н -uD\m B|]xp*/,WWJm);5^π\4!xh-PIENDB`Artifacts/window.png000066400000000000000000000635311516075642300150340ustar00rootroot00000000000000PNG  IHDR1|YsRGBgAMA a pHYsodfIDATx^ }yɳ3<<ٙylf2KbqI<qp0 d@ ,,HBwK%VQ/B-Ѻ%5js89SU.oߪϫ~CwթS>os>C`J# )04C`J# )04C`J# )04C`J# )04C`J# )0+2ȍgrT*kreq2`< C"\~0\Hs餈4 C4wL˝&K,W4،, ]=;9srrIr 30^<73,?`2\2 ,=?@=ಅ2G\"R],ijC=Tɾ޻wƃF4h,!rLj CT1HOHOO[eְCC4hhҌC Cڑv1HMc& Y~7ƃQ*!D<$ d!M4 h?uK <4i ?"aFadQl2I(@zfrrƧ׭k, 64i0#Q4،8 eUHӏ񫯾+:uek` !A49i9yK/488xĉ1B2$ <$I*H$ԬR5 ٧B3!9X/!GNKNq``ѣ}}}G9l]h!C $H$O~rLʄ!1|$$?z7x:]KP( 2eppPPPá|Bok644$?纃 BP(U$K믿Vus{s#;>v[qCo޴]ߓiCP( 2"id޽GO22 gd;!9>.?O7ntؼ_q()rg[ M}ܹaPPm8( B"3[&.U6MDdPaeE҈D j 'N?)˄!6c Cҝ$T CpKOY]396ٓ V?'}])'* 3(e]:E}erMH! Bg9,S*&dI#wԡC~IN?W_= }E4}Xw=O)ʾ{dۖ.XENW/})y,e*(& 5xo@R)'s-' Q( 򙚸T4q%@cOBR$<-$P6$^.nllܺu$!Դdɒ,߸qLfw}J$R"\p<1~z䂔ŗ=]lWqѽk\/j34n>ԋ9,9h߶דsr{Q( 2"sL&.U6Mh4$$%0Wi޽[۶m[re˖=>'<('f͚/ܒCR\RNG$!5,l0o\bwۛ~ҹ*UvSԉ +hjn~ϩ0]fڧH^EP(:/f,xJcy~a6lxe9MɓrfR?44z~wfnd e‡$rd}m5;JAWVo/O.ZiQZ9 ͢Gqm싢P( e0T4qE|2 FT Czߺoڼy4Sljj}566.X`͚5K,6|3_sI L Ҭoۀ~MmXU\>cM?>wLjPEP(؋򙚸T4A%ƞ C׍{>`%=nݺݻwoٲEжm֮]O.\p\򦹏}|ֳwqQ ?䒔 qtn0ilo-,SOh'R31? ?&( Bs,S*&F1pЯ]7[ۿpg?s%/^<~3bReE%zϼIoo e8Z&xiM@%Uj>&P(ʄ7Ti! BP(/uH^l%BP(S) Q( B{! Q( B҅0DP( eJBP()]C BPt! Q( B҅0DP( eJBP()]&? Ix3bQ`Ș ǻ("@ TAHd LȓGvGD`CH(4CbHԏ,C A$:#COahy\ !p?l !aS?\ ܏ M?g}pI$6MH9$.Nr1$ DBs?24dƟQ% 7# ;#Ő0h AvGD`CH(4CbHԏ,C A$:#COahy\ !p?l !aS?\ ܏ M?uVN;';}7\5MD2.njZ`}s>6g[b܏>\ !p?l !aS?\ ܏ M?Lɛ0Yv,D`CH(4CbHԏ,C A$:#COaHl fsH\ bH4@~dh8 IEw|}5mtJ:z*/\eg$m6N0=H.r['7$BB&C`~d "!й~21 %ԚL˪i#xSd9@&GLU&)DBPD:K.FG7EL`MD`CH(4CbHԏ,C A$:#COd{Hcó!/ ΓeYTf<2x!q^2>lT\ !p?l !aS?\ ܏ M?gk[4-:{︱WA2$BB&C`~d "!й~20d2.0d;w'@J"I$eFr2 mE&9 i6Ő0ةY.AHtG2 i"$lFC~ŕQ&I#jA$71F=)sxYBq2a7# ;#Ő0h Qwa"J`p#ԤqI$6MH9$.Nr1$ DBs?24dƟA*`CH(4CbHԏ,C A$:#COahy?6MH9$.Nr1$ DBs?24dƟQ% 7# ;#Ő0h AvGD`CH(4CbHԏ,C A$:#COahy\ !p?l !aS?\ ܏ M?g}pI$6MH9$.Nr1$ DBs?24dƟQ% 7# ;#Ő0h DS(ybM~sQwɀʂCfKTFd@en]gzV|Jk'O*L={immݾ}>ظfys̀sQwݫ/{ng7|sÐ4˗7ܷN[4,gΜΡ!IBׯu68 T1ޓw8zX_ҥK]jث75{.j.5Է~ٛ}kegӧO~Ϋ46|-/?KO艿o]Q'ǭDBo߾]\ݻw 755Ʌڰa[[[]SԹ7 /pر^{}]m;[ع{ǎ>h"n~,sEm% ӬYfΜy7p ^{w|;]ջhuw/xܯuА|ڵo=p'׬Yq) F<$G^Kt[⦅F&μd/SrΝ;{-[lܸQ~+VXt~y?2jdG8 %ע{$&BM67ܴƆsiht+Y}n%ֺ.U8nGGM?oũ}+ORCNk/OipKOH:#oxWnS@fpН;ns笇:ォ?56|g~Gr+C?ZMo~S|j_uuۯG:,o>|xҥ;wH$>yTnFztANCO_v3^U'/.۝סmfjQV>#x+Aȶaܗpܮvܕ5KZZi;[2l* ={ ;!1Z5v=1[Poo7?cO܉0]5}m}[=iM=7]k/vs.{^tvɫ$3-"GƮYLmӷ[y}Arq{{{%uwwK;6cɧٲeK[[[g>ݤ_,%*3L^4 0¶f!ޔuv:b>>Xmr,Nl;8\3ݖVhLصkс_iگ|czd IҧAKv??}Μ9N#Ukz"2/UO-jmn'g<:hS0FIM",%sq/I[LUF]56DKu]2+?Md HZv400p}ߒf&Ѽ[Fu vE-Y_,GU} Մ4sJzx*>XϢeYtfrиUlUQ~=z/o 1hAY=]t@i. z:["}~@ XTXt^cz)OSA繳gڧFRdr'fOy-換*s 7' fD($ +^+MKOSq ;Ұv}n~[n|;܃MxO6+ !uD`o2xq-׻Q }m>O|A`$On,R6rAKCZvC+ȼ֭[#,YD.K?5g΍|EǼkV~K/knʾ'd{'>3FgUz/Vj6[9Ծv=HRfJ^ct,ZNU[o{(3l7Yg̡yr{% Ӡ]ٽ/n 3Lu2Vmʜ|rA5f1|IM|693;5Mu[,fn \Fu]2+?ÿ>yǵow%۾_oYñ v_1Q4H. Z"02O~:S~{o+ߟӯ,.{qg-?[BX#eYHjfi\[_ibs+^xa׮];v쐯?5?Ġs6_.]_՝{gs;8r vKZr2ghkSK&m!_|qܝ2 5*7ݦˆgrA7+VΖ[EaÆ{ ˁ\wukmYvsn gH]w-Nԯ+ZBzƚC:/>IRV<1n.i7U\ WIƈS IgLkTzqT> +뜻dV_}6 o~ag7%.|⵷~`0R#?qڠ!Au+..Zr`c=?--7ny񒿾ᆁXs9޵߭Kn?v,E.Zn%R6:fj;ѷ[7k,yGpc#I-tƆY/e%[nWnHr,sjzRF|2д6ν뮤2y^aF>s S$3emv_<՚ٍZW| _TxgO/vuٺe]{t=t護zm~oǟ$eho~n:5WpQwɬt<㟾4%KcV_=Ww?gf}f᥿vYgΝޭ¶\p O~g~opᣍOFҷ[\|;\78_wx켇w̺~7Zc;6@/]tGKk^/_kf̘q_r%_| ])pQwɬ}-~ $1Hsس+]_͟~78~?7_o>?}z?vYg0$[ko-l~ĭ}"Ionaƍ~6Կo?3gμiМ9s6x}LM憋ڸKf>^eXν[m{O6u&? ɬp֓0%1Ƃgnd| ~zwE %*[f!ZjÐԿ h> " 1ʤ!dÐSrА[0ξ 1t!Ǧ UՆ790>9j!ʦ UՆ790>9j!ʦ UՆ790>9j!ʦ UՆ790>9j!ʦ UՆ790>9j!ʦ UՆ790>9j!ʦ Uզ⛼OܚYjy: .|U*:3\PcC]dys 8Xlr^^IcSj3m+]*a'Z+E:~lh6 Z2'g+lؐ+MPI ' CU[ϡJ Cc>c`SjSuCbΊ%0q6Pm;0Jy3QKhA$7W?nj?*- C0o-d>&ؽeYK*)Kr랊A<;m2ohh9\[Pp?1^^ow9'Y;%-(}?P ۩kEКPsRS3d 4h1ݥ=ܒQ]*!o'ޫWUao[̉G 1oQ_0߽E` r9(j#'ZaWJx-7l"oCjw}5FLӖs_GtqMݒf."8.gTF%RI3]̷ܶ mxM:G^eRgv׽Zҽ#s0GE'4n-&s6'g< Yt!Ot个 ̹BjyL73t0YU'ڈAbLJĝ:.5Uבw3o ja{]OsA6 yݗ Ez-iǍhlJ9ȨBOCi#ji2l r\UmjmņoOܫ>E\'ZN,[RʚPUKj5 {u32+v?2*݋h{-2'TQQ>l r\UmjmYɢ.ȷ*Sۭ;p}fg$a(}vќo`Ǭi#w _3JژMk'B8n)ChG3S~hFՏɴxu5GW^d\x*a(j 'VsVƝW9b\l6965޶ͮ ѵJnkr*PtW }'n0oba(*Z]NB'3>?̓6{9ךtUt> UaHljFf) H;яu~qc%4~F琭\˟Q\}r_dSjSMg{W4\0g"cİ)qU! >Шa@>9j!ʦ UՆ790>9j!ʦ UՆ790>9j!~ʦ UՆ790>9j!b\,oלl r\Umx>l"l r>ȇ BP~2Cte?R`qD) D)W>'}/[rfBP(W CF*e(MR?drUbO `S/?'??᳭CCC'O|b>7P( eJa({RdiُPʴL?xή]{?6n=00߿l?Xpf ˞Z~cǃBPB/5ue~ؤH6xiHD ܆0692fEӧe5صu۶^Uk:::N:(J|* *LTbϫv)+AkъG}0l rdݴvhgk @aH{zz$ ޽nutxe~'2R*W/2ll7W^-(c8+҃yƎV %S6I! i! ˓8Ҩ(M>JroݵbS5'$tvvoٲe…/niiikk۱cGSSV<ᎁOtg+&Q%Gr m- ...Sj> )X7~CZ*_6m :pV)Y izСw,ܾ=ü;wH$; 3gF+[GuϭxaK-Ц04+C%7fST.rA]cSӲUYooo{{{wwҥK?UVnٲ[_YS^<`$4M{56moktO2G7}e>:DPׁ0ܻx ?LO9)ywܼyi\տ֗/?jۈ狀5VQv-qMLcYg ]m)C25l79~~yI\o=粎NJK]I]j+zM--u9B/GP> Cas{^T_] kt3igVXqdll rt}v#_e X⩧m۶mܸQVϟ6ȝ{bT֤cG*GYy&z^R+.dj5U*4]\ʴ%u52NJHJqK& j._CZuP> Cad{\Pţ 04<3l rd]DedHطo_{{ NٺuT^9}fmlT?TީxmZEI^}fm^1YR껤ǃ{F.Wga5B]C$$!%"4Jh&GV-+nC2d]hssenmmg|+/qT̚5]YhQlx#oz5UX7Q6-qW5N3c+|Ji{heTQJTɤT=۔8A)u\2! .17J5z]py>BRo!0$3I.>Jjl0m_}AI [3G1ĉh_huᒝG. CEy':خ'z3IIOl rt]t׺+Ϙv=֍Ko\?=ӗ΍-TALG3и!nu5sXrSԸ%-]c{s|nꖺ}(zFݒMn|#U~uU1~ܲ 4սdOd)ٔ5UhN(:hv69|g>ȯn[[k^&νٔ.!+cEQOOk+55y%0dلNLkd6_}fޜA5&]$ i2ejtlq*np/-}-l r2Q洝-_?ٜDP(ĕ Ð̶IZܔ,uؚTHU>x9_?tɷIk-+T_2]6^½/d"BP(UB C9WW# x|m6I,%bAUL*}4ģdu-g<ir.Z)-2K*O6E⚤mn|Mq1aS BLVБcǏÐ~w}3%!݊y"Ե&*lU(I{2nU:[0ƽ o_0Gy5]IeɞX|>5dД.tdH@:x`yw Cg ! 'O={ ڵkeA 0h R:>588600 ֭[|֭[%g/:Z0h R2d>}ZZ[[m{5k֬^ԩSlb*N&xw,0A:a6p<>p3ɝ %СCd$H:|D" C#ah7pêUXM[r9|d.5#E0tq!K\]c`m19# # +gG,R¿Z9 B,Fl0Hc'c@Oggg{{-[.\x▖;v455mܸQ[fH JH'u2;:2Ox4sOtc.!j0^S^5[˯lte.XY" *appMC!%LZYv;:#= DTww<=jnn?D'xbΝIxy=n:rqIAto=7;t-X8e:Q(a(R:hľL[I:3\)TIʹ+{{ʢk%URo*dQ{ZĝWS;!՛~D&G%//zhʸ03 6Q.'{ mt跱Mq*G569joo FK.Aӳj*ie˖+B79r/6^,LƝIO^Y]lYirTKm*3۲I{@f %>kӾ=b[<\ifvݓ[gv.~`;t":˄"];mV[bO۬'* F\y_|v*gEROBJd̯~\Hݒ|g^]6 &cwM;HR̷tu-ZzS%12;Z#_4W{ w6*ilɶ+%h~b69۷o7;]]]k׮}tP۷o---MMML\tEIMRoz#ջI5qK[|nޢƓ6|Z[{Otl]MxdhɞvU:Z#_nWz>nѴ6cūGPN1/_r?K֭Ym0E>{˶Uj ͷLM} )y6m#y}ՙ$$CRL[冡8b7NE5 uTc k W_Ym*ߛI_1!jUԑQk`cě{($ 5X69k֬?%KdI|g$H$z'vܼy+K.1cW8c4XKfW_w+ p.wxsNnۤ|(p}]:RnGUdVU|wUt[@Nf&ua55?=Rk.05/GP> p3d +tzML*$`[k~*5~(">Aԛɼ%[n3{5,Z$ˣ: l rt޽{׮]} +V]NhWetSI|OjN͂bAUBIYtk3%R-[7RڏW/lu͞Qzҭh3l[L3=dN8ӭ,uqOnKӝE1]5Ћ7J5zo aHAP> аaMnLVTWT֓*ՁuҕkMzU$Ho*ٻ7A{Hb REfd_1 x":9ĻelKy/)Ǧ GY[[[ssD;c٭---W^yW_-===fzXUnbL=|ۓH:޲UxlM>worr(=/jYsLܵ6L#Tv5dd_Q4-G߽`_ẃz)&% F!skKI|.g%*6٫CO*NƄ\ MA˗Ϙ1㪫{;::d8N>СC ߮-Q$xI-0! )ИÐ}z Cbǎ;nݺnݺK.DV]#ԓa0GoL5_ ^p\aHT^8 {J g%ok}]/0l rt0C(MA?&a)qUL6cS<2dH߿_Ɵ`PW2HdBggɓ'ׯ_/I mĩ5 Ħ Gkd$twwv=00߿y3glذa2:%g/:Z0ȪO۵k׶mz{{88uTSSy@e*L!Ǧ GVZ[[e$H:|D" C#ah7p͛us~/w'+W!ml!z᡽΋_HFҀ1wG-ja0l rĉ~:;;۷lٲpŋرIj /44!+7G|?#D;~\M~UwF,AXW#00/Pcl r߿gϞCuuu577/Z;wH$Z ,p]8rw$X*7Gz?2 X&ڍGz܄º!E" "A2z{{ۻ.]:00N)9ômhpUQHf[|0;q׳4UiUc(Q}dʒ׺bMFf~F8aHCȦ GV<00 hΜ9gnmmmii+5k֪UtwKon{ׅݞԤWEҁےnfs|6{ksJv5뮁/FGS2ӕ^2Pܻal'1.!E" "Yn݌3j!GG ǫJʥ^zϝ;W[K&L,BR!*)qU8s挌{֭.2Y#5P^k}rs8uC(MA򴵵r-7tSss`|wz0)qULaÐƇ lߔPC˜h R2atdH@:x` draݷ CBɓ'eaϞ=CCCvZY~m! <69:>588600 Iu/_uVm sd|8˽5 {K˜ apiYhmmݶm[oo֬YzꎎSNI0ڲe:B@Byl rd:tH2 @HaH{zz$ ޽nXjiK.8眏f}b}{,2Ej9Gvma# )a1 駳}˖- .\xqKKK[[ێ;6nܨ-3LHNsL-#Mj}9 Ƴn$T088~ӦM!eS-#OrϡCϟ/'عslx`޼y?׈A%=,)HCs Cm2eTI/l@" MQ692z{{%I0ZtiggʞUVI-[_qɑ{zdYtOϒ{6m/UE7M|k/ C1]ʞL| S8f7j-_zrXwfƕUҫ P3>+N\E=e*~:C069۷o7;]]]k׮}tP۷o---MMML\tEIMRoz#ջJ60UI[25{tM+fsGhoIɒxw\31ur`֭Ym0E`rWIB"0ԗ C?aH96!MAΚ5kϟd|:;;y=x;v477o޼+Kf̘ղ7X|?7R#Yէ+ݦ8Ƹ%TGk|'ccxf̙_˵RGRey(a04E۽{]$W+Vxꩧdu۶m7nեKj˄boА֤rۍM,ELx%~)w+zM--u9x!!C$$C)ʦ GY{{edHطop씚[J%ٱdnvU2j3:J bA *d'R#܉V_h|3z0L]mvI. *ohJ5z[GRuPHkh!@X( E= ?65^JmIar`R|T?KC_Ԡ4-:ba : IRܣuqPjh%lqIĴpyfn{i \c>C');KOP֔(L_CDRjiŵzO#W ] ,!M ,!9BBy ,!9BBy ,!s;H9 qz ,!E &aP/n:jcD &aP/! "d}s+XFP!@0$Y FԋÐDFID|C aP/C#d%5v7m\U'm\?d7`B"0$FI8&ŘPNc 6I[25滗"ahB"0dsMLBj\FҐ36D EaHB{ $li.Tq EԋÐj]4}f6'I-%bAahB"0cZ =IUd1!CztP E &aP/n„" a0!L^(gAq?Nr%0r0!@XC(r0!@XC(r0!@XC(r0!@XC(r0!@XC`J0$`ȋE!c2:q&$rSE!/2#O"Jahy\ !p?l !aS?\ ܏ M?g}pI$6MH9$.Nr1$ DBs?24dƟQ% 7# ;#Ő0h AvGD`CH(4CbHԏ,C A$:#COahy\ !p?l !aS?\ ܏ M?VN;ݮ&mrIij*޸p{RUٴUn%fZ̶xs*9f^B9B\ !p?l !aS?\ ܏ M?!;VtmJ%iUR1&F$Wa̴iQKߪUZe[y~c3E$rq% 7# ;#Ő0h | ?~Wr:ד,dLQݑkZ hw CtR. GV:/M .Pi6Ő0ةY.AHtG-]8Cɣ>Y%?ja$ib~J2D0o,MBI1QhUQI)% 7# ;#Ő0h aHj0tȑcǎMbJ]O& UnRT6D(KEa(- I+-vO CSC2PnG!Ap1$ vG!a GhteI#mmm$ḣ!> CnLaH& %yg4! Aϴi]N%LM6!G6ژUqwY$(de*&!A$B&C`~d "!й~2ӧOKYL 2&P~ T0J3 C~M/wbIfe!{>rψ "!7# ;#Ő0h Gc~eQꓡZ<Ӧ}K@"I& [ad]$h}6El8*lI Y):q) M!p?l !aS?\ h@LI)4R !r*i2RIֱ:?%[lI?ы1 06v_;Da|Bjψ4@SH 4CbHԏ,C A$Ӹ_04&C 2F+5_ӧOKr ah4@'~C s?24@SH ԏ,C A$:#COݻw G0tSNk!uзD? ! CS!AHl bH4@)N?5BH{{J>9qx uз Mk҅t$Et-CC)$:#% )$DB `#_/ I#===|288844+%˄!)& DP0$8~04h !p?4Pi6BHl=!Y,is>6ilƐݷߑ{g!aH$dX0e.wO:uĉ#G "!7#MH\  "!~2$%;ڗ?{TLaH)BM&t(EBVCS!Ap1$ :#CH\ Ds?24dHٷoߡCo?#oH)ܮkCk90dXnm2I_29/9)03IFбcǎ=*q$șݻWNQ( I1$iHސ$CB/9Cj0l`l$Qh!ICG -˯!2'|-B33gޗ$5 Uy8$yH2C/K/I$:~P>,'* `$(]\!B2$ ǎ! DIB$$YEy,$wͯȇ!}8Cr<_D"9IE4Id3 I+$]h!<ze^I$ ?},Ŧ132 C5~L&4 wy'GD~$HXht!ÏAo$dYy=6H$a 8 2yH!eqPG!9K F GF q 旦 sy*d~WȐ$#IhdaHTy8CoF~Hi38O$ KB$ 8 Ւ޲,4i0;3R1SoO$$$!/| I IB_8 C<$0~D"MEq0#3$ Izy"$%M$ I) rD!"9-MEFMsOL @}4λ%&d eFD<$Ys%qC>= @0JFO3 UaN`¸ Xʦǣ!05hh CClFSZ0!p" )0aڐ/Ag)C`J# )0_:u%+GIENDB`Artifacts/windows_service_manager.pml000066400000000000000000000144001516075642300204240ustar00rootroot00000000000000 PADGen 3.0.1.38 Service Manager Tray v0.9.201607161704 07 16 2016 0 Freeware Alpha No Install Support Windows English Utilities System Utilities::System Maintenance 1993545 1993 1.90 N Days Y 1.4 http://www.asp-shareware.org/pad/extensions/Affiliates.htm Y N LICENSE.md000066400000000000000000000020561516075642300124760ustar00rootroot00000000000000MIT License Copyright (c) 2020 Patrik Laszlo 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.md000066400000000000000000000013551516075642300123520ustar00rootroot00000000000000# Service Manager Tray for Windows ## Download the releases https://github.com/patrikx3/service-manager-tray-for-windows/releases ## Project Description Do you spend lots of time starting up the service manager? Do you develop a lot and start/stop/restart services? If so, you came to the right place! ## Main window screenshot ![Main window screenshot](Artifacts/window.png) ## Tray ![Tray](Artifacts/tray.png) ## Developer [http://patrikx3.com](http://patrikx3.com) # Some reviews http://www.softpedia.com/get/System/System-Miscellaneous/Service-Manager-Tray.shtml http://www.01net.com/telecharger/windows/Utilitaire/systeme/fiches/136343.html https://briian.com/6368/ # Publish http://publisher.appvisor.com/ © 2020 Service-Manager-Tray-Installer/000077500000000000000000000000001516075642300167075ustar00rootroot00000000000000Service-Manager-Tray-Installer/Service-Manager-Tray-Installer.vdproj000066400000000000000000000736511516075642300257710ustar00rootroot00000000000000"DeployProject" { "VSVersion" = "3:800" "ProjectType" = "8:{978C614F-708E-4E1A-B201-565925725DBA}" "IsWebType" = "8:FALSE" "ProjectName" = "8:Service Manager Tray Installer" "LanguageId" = "3:1033" "CodePage" = "3:1252" "UILanguageId" = "3:1033" "SccProjectName" = "8:" "SccLocalPath" = "8:" "SccAuxPath" = "8:" "SccProvider" = "8:" "Hierarchy" { "Entry" { "MsmKey" = "8:_0E4B037B02364549827AD7748512C6B0" "OwnerKey" = "8:_UNDEFINED" "MsmSig" = "8:_UNDEFINED" } "Entry" { "MsmKey" = "8:_D8E1C1540E29464FA955F80D3200CA7D" "OwnerKey" = "8:_UNDEFINED" "MsmSig" = "8:_UNDEFINED" } "Entry" { "MsmKey" = "8:_UNDEFINED" "OwnerKey" = "8:_0E4B037B02364549827AD7748512C6B0" "MsmSig" = "8:_UNDEFINED" } } "Configurations" { "Debug" { "DisplayName" = "8:Debug" "IsDebugOnly" = "11:TRUE" "IsReleaseOnly" = "11:FALSE" "OutputFilename" = "8:Debug\\Service-Manager-Tray-Installer.msi" "PackageFilesAs" = "3:2" "PackageFileSize" = "3:-2147483648" "CabType" = "3:1" "Compression" = "3:2" "SignOutput" = "11:FALSE" "CertificateFile" = "8:" "PrivateKeyFile" = "8:" "TimeStampServer" = "8:" "InstallerBootstrapper" = "3:2" "BootstrapperCfg:{63ACBE69-63AA-4F98-B2B6-99F9E24495F2}" { "Enabled" = "11:TRUE" "PromptEnabled" = "11:TRUE" "PrerequisitesLocation" = "2:1" "Url" = "8:" "ComponentsUrl" = "8:" "Items" { "{EDC2488A-8267-493A-A98E-7D9C3B36CDF3}:.NETFramework,Version=v4.6.1" { "Name" = "8:Microsoft .NET Framework 4.6.1 (x86 and x64)" "ProductCode" = "8:.NETFramework,Version=v4.6.1" } } } } "Release" { "DisplayName" = "8:Release" "IsDebugOnly" = "11:FALSE" "IsReleaseOnly" = "11:TRUE" "OutputFilename" = "8:Release\\Service-Manager-Tray-Installer.msi" "PackageFilesAs" = "3:2" "PackageFileSize" = "3:-2147483648" "CabType" = "3:1" "Compression" = "3:2" "SignOutput" = "11:FALSE" "CertificateFile" = "8:" "PrivateKeyFile" = "8:" "TimeStampServer" = "8:" "InstallerBootstrapper" = "3:2" "BootstrapperCfg:{63ACBE69-63AA-4F98-B2B6-99F9E24495F2}" { "Enabled" = "11:TRUE" "PromptEnabled" = "11:TRUE" "PrerequisitesLocation" = "2:1" "Url" = "8:" "ComponentsUrl" = "8:" "Items" { "{EDC2488A-8267-493A-A98E-7D9C3B36CDF3}:.NETFramework,Version=v4.6.1" { "Name" = "8:Microsoft .NET Framework 4.6.1 (x86 and x64)" "ProductCode" = "8:.NETFramework,Version=v4.6.1" } } } } } "Deployable" { "CustomAction" { } "DefaultFeature" { "Name" = "8:DefaultFeature" "Title" = "8:" "Description" = "8:" } "ExternalPersistence" { "LaunchCondition" { "{A06ECF26-33A3-4562-8140-9B0E340D4F24}:_32C493C830A1451C8E2BEDE252C9216B" { "Name" = "8:.NET Framework" "Message" = "8:[VSDNETMSG]" "FrameworkVersion" = "8:.NETFramework,Version=v4.6.1" "AllowLaterVersions" = "11:FALSE" "InstallUrl" = "8:http://go.microsoft.com/fwlink/?LinkId=671728" } } } "File" { "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_D8E1C1540E29464FA955F80D3200CA7D" { "SourcePath" = "8:..\\ServiceManagerTray\\Resources\\Application.ico" "TargetName" = "8:Application.ico" "Tag" = "8:" "Folder" = "8:_6DFE7A4F9754468FBE371518056A5921" "Condition" = "8:" "Transitive" = "11:FALSE" "Vital" = "11:TRUE" "ReadOnly" = "11:FALSE" "Hidden" = "11:FALSE" "System" = "11:FALSE" "Permanent" = "11:FALSE" "SharedLegacy" = "11:FALSE" "PackageAs" = "3:1" "Register" = "3:1" "Exclude" = "11:FALSE" "IsDependency" = "11:FALSE" "IsolateTo" = "8:" } } "FileType" { } "Folder" { "{1525181F-901A-416C-8A58-119130FE478E}:_282A248226904839AA9DFCEBC121EEBA" { "Name" = "8:#1916" "AlwaysCreate" = "11:TRUE" "Condition" = "8:" "Transitive" = "11:FALSE" "Property" = "8:DesktopFolder" "Folders" { } } "{3C67513D-01DD-4637-8A68-80971EB9504F}:_6DFE7A4F9754468FBE371518056A5921" { "DefaultLocation" = "8:[ProgramFiles64Folder][Manufacturer]\\[ProductName]" "Name" = "8:#1925" "AlwaysCreate" = "11:FALSE" "Condition" = "8:" "Transitive" = "11:FALSE" "Property" = "8:TARGETDIR" "Folders" { } } "{1525181F-901A-416C-8A58-119130FE478E}:_EF4A165DA8E84E75B8BDCEEC6DF44065" { "Name" = "8:#1919" "AlwaysCreate" = "11:TRUE" "Condition" = "8:" "Transitive" = "11:FALSE" "Property" = "8:ProgramMenuFolder" "Folders" { "{9EF0B969-E518-4E46-987F-47570745A589}:_652D97FCDBA649D690660A9AEED44BAF" { "Name" = "8:Service Manager Tray" "AlwaysCreate" = "11:FALSE" "Condition" = "8:" "Transitive" = "11:FALSE" "Property" = "8:_542C2C17D52742B0A7FC9FCB84412521" "Folders" { } } } } } "LaunchCondition" { } "Locator" { } "MsiBootstrapper" { "LangId" = "3:1033" "RequiresElevation" = "11:FALSE" } "Product" { "Name" = "8:Microsoft Visual Studio" "ProductName" = "8:Service Manager Tray" "ProductCode" = "8:{92E164C7-5723-4B6C-9C1A-9C4BAD60AC34}" "PackageCode" = "8:{739CDF14-AF76-4A2A-877B-4B232385E09E}" "UpgradeCode" = "8:{9AEE7188-033D-4C05-8D66-20E147F1CA00}" "AspNetVersion" = "8:4.0.30319.0" "RestartWWWService" = "11:FALSE" "RemovePreviousVersions" = "11:TRUE" "DetectNewerInstalledVersion" = "11:TRUE" "InstallAllUsers" = "11:TRUE" "ProductVersion" = "8:1.0.3" "Manufacturer" = "8:P3X" "ARPHELPTELEPHONE" = "8:" "ARPHELPLINK" = "8:" "Title" = "8:Service Manager Tray" "Subject" = "8:" "ARPCONTACT" = "8:Corifeus" "Keywords" = "8:" "ARPCOMMENTS" = "8:" "ARPURLINFOABOUT" = "8:https://github.com/patrikx3/service-manager-tray-for-windows" "ARPPRODUCTICON" = "8:" "ARPIconIndex" = "3:0" "SearchPath" = "8:" "UseSystemSearchPath" = "11:TRUE" "TargetPlatform" = "3:1" "PreBuildEvent" = "8:" "PostBuildEvent" = "8:" "RunPostBuildEvent" = "3:0" } "Registry" { "HKLM" { "Keys" { "{60EA8692-D2D5-43EB-80DC-7906BF13D6EF}:_095B07DDA79B4EBAA8D869DAB1C1E3D4" { "Name" = "8:Software" "Condition" = "8:" "AlwaysCreate" = "11:FALSE" "DeleteAtUninstall" = "11:FALSE" "Transitive" = "11:FALSE" "Keys" { "{60EA8692-D2D5-43EB-80DC-7906BF13D6EF}:_BA7FFD69980F4ABB87409D36AF70BE99" { "Name" = "8:[Manufacturer]" "Condition" = "8:" "AlwaysCreate" = "11:FALSE" "DeleteAtUninstall" = "11:FALSE" "Transitive" = "11:FALSE" "Keys" { } "Values" { } } } "Values" { } } } } "HKCU" { "Keys" { "{60EA8692-D2D5-43EB-80DC-7906BF13D6EF}:_EB23CE4C278041D7AA568AADE16621D3" { "Name" = "8:Software" "Condition" = "8:" "AlwaysCreate" = "11:FALSE" "DeleteAtUninstall" = "11:FALSE" "Transitive" = "11:FALSE" "Keys" { "{60EA8692-D2D5-43EB-80DC-7906BF13D6EF}:_F69356BECB41434691BBFF84345C7E68" { "Name" = "8:[Manufacturer]" "Condition" = "8:" "AlwaysCreate" = "11:FALSE" "DeleteAtUninstall" = "11:FALSE" "Transitive" = "11:FALSE" "Keys" { } "Values" { } } } "Values" { } } } } "HKCR" { "Keys" { } } "HKU" { "Keys" { } } "HKPU" { "Keys" { } } } "Sequences" { } "Shortcut" { "{970C0BB2-C7D0-45D7-ABFA-7EC378858BC0}:_57A558A2439B432DBA5B04EDDD465511" { "Name" = "8:Service Manager Tray" "Arguments" = "8:" "Description" = "8:" "ShowCmd" = "3:1" "IconIndex" = "3:0" "Transitive" = "11:FALSE" "Target" = "8:_0E4B037B02364549827AD7748512C6B0" "Folder" = "8:_652D97FCDBA649D690660A9AEED44BAF" "WorkingFolder" = "8:_6DFE7A4F9754468FBE371518056A5921" "Icon" = "8:_D8E1C1540E29464FA955F80D3200CA7D" "Feature" = "8:" } "{970C0BB2-C7D0-45D7-ABFA-7EC378858BC0}:_941CF6A53D3A4D03B3AF3CE2F20C40E1" { "Name" = "8:Service Manager Tray" "Arguments" = "8:" "Description" = "8:" "ShowCmd" = "3:1" "IconIndex" = "3:0" "Transitive" = "11:FALSE" "Target" = "8:_0E4B037B02364549827AD7748512C6B0" "Folder" = "8:_282A248226904839AA9DFCEBC121EEBA" "WorkingFolder" = "8:_6DFE7A4F9754468FBE371518056A5921" "Icon" = "8:_D8E1C1540E29464FA955F80D3200CA7D" "Feature" = "8:" } } "UserInterface" { "{2479F3F5-0309-486D-8047-8187E2CE5BA0}:_43B8F24842C94BDBB6A53AD2556FEFC8" { "UseDynamicProperties" = "11:FALSE" "IsDependency" = "11:FALSE" "SourcePath" = "8:\\VsdUserInterface.wim" } "{2479F3F5-0309-486D-8047-8187E2CE5BA0}:_4858F9712EC74923B6661947D1D6E1BC" { "UseDynamicProperties" = "11:FALSE" "IsDependency" = "11:FALSE" "SourcePath" = "8:\\VsdBasicDialogs.wim" } "{DF760B10-853B-4699-99F2-AFF7185B4A62}:_543E48125386471290AFE8DE879BAD21" { "Name" = "8:#1900" "Sequence" = "3:2" "Attributes" = "3:1" "Dialogs" { "{688940B3-5CA9-4162-8DEE-2993FA9D8CBC}:_0391861B47A44EC2AD501113A9DCE088" { "Sequence" = "3:300" "DisplayName" = "8:Confirm Installation" "UseDynamicProperties" = "11:TRUE" "IsDependency" = "11:FALSE" "SourcePath" = "8:\\VsdAdminConfirmDlg.wid" "Properties" { "BannerBitmap" { "Name" = "8:BannerBitmap" "DisplayName" = "8:#1001" "Description" = "8:#1101" "Type" = "3:8" "ContextData" = "8:Bitmap" "Attributes" = "3:4" "Setting" = "3:1" "UsePlugInResources" = "11:TRUE" } } } "{688940B3-5CA9-4162-8DEE-2993FA9D8CBC}:_B24781663BC7443AA9575D6B1390DBDB" { "Sequence" = "3:100" "DisplayName" = "8:Welcome" "UseDynamicProperties" = "11:TRUE" "IsDependency" = "11:FALSE" "SourcePath" = "8:\\VsdAdminWelcomeDlg.wid" "Properties" { "BannerBitmap" { "Name" = "8:BannerBitmap" "DisplayName" = "8:#1001" "Description" = "8:#1101" "Type" = "3:8" "ContextData" = "8:Bitmap" "Attributes" = "3:4" "Setting" = "3:1" "UsePlugInResources" = "11:TRUE" } "CopyrightWarning" { "Name" = "8:CopyrightWarning" "DisplayName" = "8:#1002" "Description" = "8:#1102" "Type" = "3:3" "ContextData" = "8:" "Attributes" = "3:0" "Setting" = "3:1" "Value" = "8:#1202" "DefaultValue" = "8:#1202" "UsePlugInResources" = "11:TRUE" } "Welcome" { "Name" = "8:Welcome" "DisplayName" = "8:#1003" "Description" = "8:#1103" "Type" = "3:3" "ContextData" = "8:" "Attributes" = "3:0" "Setting" = "3:1" "Value" = "8:#1203" "DefaultValue" = "8:#1203" "UsePlugInResources" = "11:TRUE" } } } "{688940B3-5CA9-4162-8DEE-2993FA9D8CBC}:_EB4CA04736B8471EB34E9558D6FD24AB" { "Sequence" = "3:200" "DisplayName" = "8:Installation Folder" "UseDynamicProperties" = "11:TRUE" "IsDependency" = "11:FALSE" "SourcePath" = "8:\\VsdAdminFolderDlg.wid" "Properties" { "BannerBitmap" { "Name" = "8:BannerBitmap" "DisplayName" = "8:#1001" "Description" = "8:#1101" "Type" = "3:8" "ContextData" = "8:Bitmap" "Attributes" = "3:4" "Setting" = "3:1" "UsePlugInResources" = "11:TRUE" } } } } } "{DF760B10-853B-4699-99F2-AFF7185B4A62}:_63323B77CB9C428A902F50AE7F2B5CE8" { "Name" = "8:#1901" "Sequence" = "3:2" "Attributes" = "3:2" "Dialogs" { "{688940B3-5CA9-4162-8DEE-2993FA9D8CBC}:_A33C1A9060854C89AC9A5CFEC8BB255A" { "Sequence" = "3:100" "DisplayName" = "8:Progress" "UseDynamicProperties" = "11:TRUE" "IsDependency" = "11:FALSE" "SourcePath" = "8:\\VsdAdminProgressDlg.wid" "Properties" { "BannerBitmap" { "Name" = "8:BannerBitmap" "DisplayName" = "8:#1001" "Description" = "8:#1101" "Type" = "3:8" "ContextData" = "8:Bitmap" "Attributes" = "3:4" "Setting" = "3:1" "UsePlugInResources" = "11:TRUE" } "ShowProgress" { "Name" = "8:ShowProgress" "DisplayName" = "8:#1009" "Description" = "8:#1109" "Type" = "3:5" "ContextData" = "8:1;True=1;False=0" "Attributes" = "3:0" "Setting" = "3:0" "Value" = "3:1" "DefaultValue" = "3:1" "UsePlugInResources" = "11:TRUE" } } } } } "{DF760B10-853B-4699-99F2-AFF7185B4A62}:_8E01902A979441629BCC67570B83E44C" { "Name" = "8:#1902" "Sequence" = "3:2" "Attributes" = "3:3" "Dialogs" { "{688940B3-5CA9-4162-8DEE-2993FA9D8CBC}:_D0F392063E744D4890AAB056D3183E35" { "Sequence" = "3:100" "DisplayName" = "8:Finished" "UseDynamicProperties" = "11:TRUE" "IsDependency" = "11:FALSE" "SourcePath" = "8:\\VsdAdminFinishedDlg.wid" "Properties" { "BannerBitmap" { "Name" = "8:BannerBitmap" "DisplayName" = "8:#1001" "Description" = "8:#1101" "Type" = "3:8" "ContextData" = "8:Bitmap" "Attributes" = "3:4" "Setting" = "3:1" "UsePlugInResources" = "11:TRUE" } } } } } "{DF760B10-853B-4699-99F2-AFF7185B4A62}:_A32D77DECDAC4D53A3544D7A0762468C" { "Name" = "8:#1902" "Sequence" = "3:1" "Attributes" = "3:3" "Dialogs" { "{688940B3-5CA9-4162-8DEE-2993FA9D8CBC}:_416E53362ED842CEBF94A7BE9050A79E" { "Sequence" = "3:100" "DisplayName" = "8:Finished" "UseDynamicProperties" = "11:TRUE" "IsDependency" = "11:FALSE" "SourcePath" = "8:\\VsdFinishedDlg.wid" "Properties" { "BannerBitmap" { "Name" = "8:BannerBitmap" "DisplayName" = "8:#1001" "Description" = "8:#1101" "Type" = "3:8" "ContextData" = "8:Bitmap" "Attributes" = "3:4" "Setting" = "3:1" "UsePlugInResources" = "11:TRUE" } "UpdateText" { "Name" = "8:UpdateText" "DisplayName" = "8:#1058" "Description" = "8:#1158" "Type" = "3:15" "ContextData" = "8:" "Attributes" = "3:0" "Setting" = "3:1" "Value" = "8:#1258" "DefaultValue" = "8:#1258" "UsePlugInResources" = "11:TRUE" } } } } } "{DF760B10-853B-4699-99F2-AFF7185B4A62}:_E231702565254D8D846D060EFFD39381" { "Name" = "8:#1900" "Sequence" = "3:1" "Attributes" = "3:1" "Dialogs" { "{688940B3-5CA9-4162-8DEE-2993FA9D8CBC}:_0A9D4A0ADA1C42149ED5D5E2F1D83353" { "Sequence" = "3:200" "DisplayName" = "8:Installation Folder" "UseDynamicProperties" = "11:TRUE" "IsDependency" = "11:FALSE" "SourcePath" = "8:\\VsdFolderDlg.wid" "Properties" { "BannerBitmap" { "Name" = "8:BannerBitmap" "DisplayName" = "8:#1001" "Description" = "8:#1101" "Type" = "3:8" "ContextData" = "8:Bitmap" "Attributes" = "3:4" "Setting" = "3:1" "UsePlugInResources" = "11:TRUE" } "InstallAllUsersVisible" { "Name" = "8:InstallAllUsersVisible" "DisplayName" = "8:#1059" "Description" = "8:#1159" "Type" = "3:5" "ContextData" = "8:1;True=1;False=0" "Attributes" = "3:0" "Setting" = "3:0" "Value" = "3:1" "DefaultValue" = "3:1" "UsePlugInResources" = "11:TRUE" } } } "{688940B3-5CA9-4162-8DEE-2993FA9D8CBC}:_1EDBC5963C32421EAE03FF7FEF85ACD2" { "Sequence" = "3:300" "DisplayName" = "8:Confirm Installation" "UseDynamicProperties" = "11:TRUE" "IsDependency" = "11:FALSE" "SourcePath" = "8:\\VsdConfirmDlg.wid" "Properties" { "BannerBitmap" { "Name" = "8:BannerBitmap" "DisplayName" = "8:#1001" "Description" = "8:#1101" "Type" = "3:8" "ContextData" = "8:Bitmap" "Attributes" = "3:4" "Setting" = "3:1" "UsePlugInResources" = "11:TRUE" } } } "{688940B3-5CA9-4162-8DEE-2993FA9D8CBC}:_D29D306B6C7A4503B84FF9E593D492CC" { "Sequence" = "3:100" "DisplayName" = "8:Welcome" "UseDynamicProperties" = "11:TRUE" "IsDependency" = "11:FALSE" "SourcePath" = "8:\\VsdWelcomeDlg.wid" "Properties" { "BannerBitmap" { "Name" = "8:BannerBitmap" "DisplayName" = "8:#1001" "Description" = "8:#1101" "Type" = "3:8" "ContextData" = "8:Bitmap" "Attributes" = "3:4" "Setting" = "3:1" "UsePlugInResources" = "11:TRUE" } "CopyrightWarning" { "Name" = "8:CopyrightWarning" "DisplayName" = "8:#1002" "Description" = "8:#1102" "Type" = "3:3" "ContextData" = "8:" "Attributes" = "3:0" "Setting" = "3:1" "Value" = "8:#1202" "DefaultValue" = "8:#1202" "UsePlugInResources" = "11:TRUE" } "Welcome" { "Name" = "8:Welcome" "DisplayName" = "8:#1003" "Description" = "8:#1103" "Type" = "3:3" "ContextData" = "8:" "Attributes" = "3:0" "Setting" = "3:1" "Value" = "8:#1203" "DefaultValue" = "8:#1203" "UsePlugInResources" = "11:TRUE" } } } } } "{DF760B10-853B-4699-99F2-AFF7185B4A62}:_FE7939AA70B74463A53118F9576A019D" { "Name" = "8:#1901" "Sequence" = "3:1" "Attributes" = "3:2" "Dialogs" { "{688940B3-5CA9-4162-8DEE-2993FA9D8CBC}:_A94FC301D8A64533974BD9A781A923F5" { "Sequence" = "3:100" "DisplayName" = "8:Progress" "UseDynamicProperties" = "11:TRUE" "IsDependency" = "11:FALSE" "SourcePath" = "8:\\VsdProgressDlg.wid" "Properties" { "BannerBitmap" { "Name" = "8:BannerBitmap" "DisplayName" = "8:#1001" "Description" = "8:#1101" "Type" = "3:8" "ContextData" = "8:Bitmap" "Attributes" = "3:4" "Setting" = "3:1" "UsePlugInResources" = "11:TRUE" } "ShowProgress" { "Name" = "8:ShowProgress" "DisplayName" = "8:#1009" "Description" = "8:#1109" "Type" = "3:5" "ContextData" = "8:1;True=1;False=0" "Attributes" = "3:0" "Setting" = "3:0" "Value" = "3:1" "DefaultValue" = "3:1" "UsePlugInResources" = "11:TRUE" } } } } } } "MergeModule" { } "ProjectOutput" { "{5259A561-127C-4D43-A0A1-72F10C7B3BF8}:_0E4B037B02364549827AD7748512C6B0" { "SourcePath" = "8:..\\ServiceManagerTray\\obj\\Release\\ServiceManagerTray.exe" "TargetName" = "8:" "Tag" = "8:" "Folder" = "8:_6DFE7A4F9754468FBE371518056A5921" "Condition" = "8:" "Transitive" = "11:FALSE" "Vital" = "11:TRUE" "ReadOnly" = "11:FALSE" "Hidden" = "11:FALSE" "System" = "11:FALSE" "Permanent" = "11:FALSE" "SharedLegacy" = "11:FALSE" "PackageAs" = "3:1" "Register" = "3:1" "Exclude" = "11:FALSE" "IsDependency" = "11:FALSE" "IsolateTo" = "8:" "ProjectOutputGroupRegister" = "3:1" "OutputConfiguration" = "8:" "OutputGroupCanonicalName" = "8:Built" "OutputProjectGuid" = "8:{5ACD07B8-8874-4C8F-B6A6-66E646218FA3}" "ShowKeyOutput" = "11:TRUE" "ExcludeFilters" { } } } } } ServiceManagerTray/000077500000000000000000000000001516075642300146225ustar00rootroot00000000000000ServiceManagerTray/.gitignore000066400000000000000000000000071516075642300166070ustar00rootroot00000000000000obj binServiceManagerTray/Build/000077500000000000000000000000001516075642300156615ustar00rootroot00000000000000ServiceManagerTray/Build/KillServiceManagerProcess.bat000066400000000000000000000000771516075642300234230ustar00rootroot00000000000000@echo off taskkill /f /fi "imagename eq ServiceManagerTray.exe"ServiceManagerTray/ColorHelper.cs000066400000000000000000000014051516075642300173670ustar00rootroot00000000000000using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Drawing; namespace chc.servicemanagertray { public static class ColorHelper { public static Color ChangeBrightness(this Color instance, int brightness_modifier) { return Color.FromArgb( Math.Min( Math.Max(instance.R + brightness_modifier, 0), 255 ), Math.Min( Math.Max(instance.G + brightness_modifier, 0), 255 ), Math.Min( Math.Max(instance.B + brightness_modifier, 0), 255 ) ); } } } ServiceManagerTray/PortableSettingsProvider.cs000066400000000000000000000157251516075642300221670ustar00rootroot00000000000000using System.Linq; using System; using System.Collections; using System.Collections.Generic; using System.Configuration; using System.Windows.Forms; using System.Collections.Specialized; using System.Xml; using System.IO; namespace chc.servicemanagertray { public sealed class PortableSettingsProvider : SettingsProvider, IApplicationSettingsProvider { private const string _rootNodeName = "settings"; private const string _localSettingsNodeName = "localSettings"; private const string _globalSettingsNodeName = "globalSettings"; private const string _className = "PortableSettingsProvider"; private XmlDocument _xmlDocument; private string _filePath { get { return Path.Combine(Path.GetDirectoryName(Application.ExecutablePath), string.Format("{0}.settings", ApplicationName)); } } private XmlNode _localSettingsNode { get { XmlNode settingsNode = GetSettingsNode(_localSettingsNodeName); XmlNode machineNode = settingsNode.SelectSingleNode(Environment.MachineName.ToLowerInvariant()); if (machineNode == null) { machineNode = _rootDocument.CreateElement(Environment.MachineName.ToLowerInvariant()); settingsNode.AppendChild(machineNode); } return machineNode; } } private XmlNode _globalSettingsNode { get { return GetSettingsNode(_globalSettingsNodeName); } } private XmlNode _rootNode { get { return _rootDocument.SelectSingleNode(_rootNodeName); } } private XmlDocument _rootDocument { get { if (_xmlDocument == null) { try { _xmlDocument = new XmlDocument(); _xmlDocument.Load(_filePath); } catch (Exception) { } if (_xmlDocument.SelectSingleNode(_rootNodeName) != null) return _xmlDocument; _xmlDocument = GetBlankXmlDocument(); } return _xmlDocument; } } public override string ApplicationName { get { return Path.GetFileNameWithoutExtension(Application.ExecutablePath); } set { } } public override string Name { get { return _className; } } public override void Initialize(string name, NameValueCollection config) { base.Initialize(Name, config); } public override void SetPropertyValues(SettingsContext context, SettingsPropertyValueCollection collection) { foreach (SettingsPropertyValue propertyValue in collection) SetValue(propertyValue); try { _rootDocument.Save(_filePath); } catch (Exception) { /* * If this is a portable application and the device has been * removed then this will fail, so don't do anything. It's * probably better for the application to stop saving settings * rather than just crashing outright. Probably. */ } } public override SettingsPropertyValueCollection GetPropertyValues(SettingsContext context, SettingsPropertyCollection collection) { SettingsPropertyValueCollection values = new SettingsPropertyValueCollection(); foreach (SettingsProperty property in collection) { values.Add(new SettingsPropertyValue(property) { SerializedValue = GetValue(property) }); } return values; } private void SetValue(SettingsPropertyValue propertyValue) { XmlNode targetNode = IsGlobal(propertyValue.Property) ? _globalSettingsNode : _localSettingsNode; XmlNode settingNode = targetNode.SelectSingleNode(string.Format("setting[@name='{0}']", propertyValue.Name)); if (settingNode != null) settingNode.InnerText = propertyValue.SerializedValue.ToString(); else { settingNode = _rootDocument.CreateElement("setting"); XmlAttribute nameAttribute = _rootDocument.CreateAttribute("name"); nameAttribute.Value = propertyValue.Name; settingNode.Attributes.Append(nameAttribute); settingNode.InnerText = propertyValue.SerializedValue.ToString(); targetNode.AppendChild(settingNode); } } private string GetValue(SettingsProperty property) { XmlNode targetNode = IsGlobal(property) ? _globalSettingsNode : _localSettingsNode; XmlNode settingNode = targetNode.SelectSingleNode(string.Format("setting[@name='{0}']", property.Name)); if (settingNode == null) return property.DefaultValue != null ? property.DefaultValue.ToString() : string.Empty; return settingNode.InnerText; } private bool IsGlobal(SettingsProperty property) { foreach (DictionaryEntry attribute in property.Attributes) { if ((Attribute)attribute.Value is SettingsManageabilityAttribute) return true; } return false; } private XmlNode GetSettingsNode(string name) { XmlNode settingsNode = _rootNode.SelectSingleNode(name); if (settingsNode == null) { settingsNode = _rootDocument.CreateElement(name); _rootNode.AppendChild(settingsNode); } return settingsNode; } public XmlDocument GetBlankXmlDocument() { XmlDocument blankXmlDocument = new XmlDocument(); blankXmlDocument.AppendChild(blankXmlDocument.CreateXmlDeclaration("1.0", "utf-8", string.Empty)); blankXmlDocument.AppendChild(blankXmlDocument.CreateElement(_rootNodeName)); return blankXmlDocument; } public void Reset(SettingsContext context) { _localSettingsNode.RemoveAll(); _globalSettingsNode.RemoveAll(); _xmlDocument.Save(_filePath); } public SettingsPropertyValue GetPreviousVersion(SettingsContext context, SettingsProperty property) { // do nothing return new SettingsPropertyValue(property); } public void Upgrade(SettingsContext context, SettingsPropertyCollection properties) { } } } ServiceManagerTray/Program.cs000066400000000000000000000010751516075642300165630ustar00rootroot00000000000000using System; using System.Collections.Generic; using System.Linq; using System.Windows.Forms; namespace chc.servicemanagertray { static class Program { ///

/// The main entry point for the application. /// [STAThread] static void Main() { string[] args = Environment.GetCommandLineArgs(); Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); Application.Run(new ServiceManagerForm(args)); } } } ServiceManagerTray/Properties/000077500000000000000000000000001516075642300167565ustar00rootroot00000000000000ServiceManagerTray/Properties/AssemblyInfo.cs000066400000000000000000000031371516075642300217040ustar00rootroot00000000000000using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; using System; using System.Resources; // General Information about an assembly is controlled through the following // set of attributes. Change these attribute values to modify the information // associated with an assembly. [assembly: AssemblyTitle("Service Manager Tray")] [assembly: AssemblyDescription("Simplified tray based customizable service controller application for developers.")] [assembly: AssemblyConfiguration("")] [assembly: AssemblyCompany("patrikx3.com")] [assembly: AssemblyProduct("Service Manager Tray")] [assembly: AssemblyCopyright("Copyright © patrikx3.com 2018")] [assembly: AssemblyTrademark("")] [assembly: AssemblyCulture("")] // Setting ComVisible to false makes the types in this assembly not visible // to COM components. If you need to access a type in this assembly from // COM, set the ComVisible attribute to true on that type. [assembly: ComVisible(false)] // The following GUID is for the ID of the typelib if this project is exposed to COM [assembly: Guid("465ecb4b-5aa3-4062-9674-aa962c2959ad")] // Version information for an assembly consists of the following four values: // // Major Version // Minor Version // Build Number // Revision // // You can specify all the values or you can default the Build and Revision Numbers // by using the '*' as shown below: // [assembly: AssemblyVersion("1.0.*")] [assembly: AssemblyVersion("1.0.*")] [assembly: AssemblyFileVersion("1.0.0.0")] [assembly: CLSCompliant(true)] [assembly: NeutralResourcesLanguage("en")]ServiceManagerTray/Properties/Resources.Designer.cs000066400000000000000000000134321516075642300230210ustar00rootroot00000000000000//------------------------------------------------------------------------------ // // This code was generated by a tool. // Runtime Version:4.0.30319.42000 // // Changes to this file may cause incorrect behavior and will be lost if // the code is regenerated. // //------------------------------------------------------------------------------ namespace chc.servicemanagertray.Properties { using System; /// /// A strongly-typed resource class, for looking up localized strings, etc. /// // This class was auto-generated by the StronglyTypedResourceBuilder // class via a tool like ResGen or Visual Studio. // To add or remove a member, edit your .ResX file then rerun ResGen // with the /str option, or rebuild your VS project. [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")] [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] internal class Resources { private static global::System.Resources.ResourceManager resourceMan; private static global::System.Globalization.CultureInfo resourceCulture; [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] internal Resources() { } /// /// Returns the cached ResourceManager instance used by this class. /// [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] internal static global::System.Resources.ResourceManager ResourceManager { get { if (object.ReferenceEquals(resourceMan, null)) { global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("chc.servicemanagertray.Properties.Resources", typeof(Resources).Assembly); resourceMan = temp; } return resourceMan; } } /// /// Overrides the current thread's CurrentUICulture property for all /// resource lookups using this strongly typed resource class. /// [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] internal static global::System.Globalization.CultureInfo Culture { get { return resourceCulture; } set { resourceCulture = value; } } /// /// Looks up a localized string similar to You are free to do whatever you want with this software. ///Special thanks to famfamfam.com for the icons. /// internal static string About_Text { get { return ResourceManager.GetString("About_Text", resourceCulture); } } /// /// Looks up a localized string similar to Service Manager Tray by ChildhoodCoder.com. /// internal static string About_Title { get { return ResourceManager.GetString("About_Title", resourceCulture); } } /// /// Looks up a localized string similar to Service Manager Tray. /// internal static string NotifyIcon_Baloon_Header { get { return ResourceManager.GetString("NotifyIcon_Baloon_Header", resourceCulture); } } /// /// Looks up a localized string similar to Click this icon to show the application window.. /// internal static string NotifyIcon_Baloon_Hide { get { return ResourceManager.GetString("NotifyIcon_Baloon_Hide", resourceCulture); } } /// /// Looks up a localized string similar to {0} service is {1}.. /// internal static string NotifyIcon_Baloon_Service_State { get { return ResourceManager.GetString("NotifyIcon_Baloon_Service_State", resourceCulture); } } /// /// Looks up a localized string similar to Service Manager started. /// internal static string NotifyIcon_Baloon_Start { get { return ResourceManager.GetString("NotifyIcon_Baloon_Start", resourceCulture); } } /// /// Looks up a localized string similar to Favorite services:. /// internal static string NotifyIcon_Menu_FavoriteServicesLabel_Text { get { return ResourceManager.GetString("NotifyIcon_Menu_FavoriteServicesLabel_Text", resourceCulture); } } /// /// Looks up a localized string similar to Click the menu item to toggle the service state.. /// internal static string NotifyIcon_Menu_FavoriteServicesLabel_Tooltip { get { return ResourceManager.GetString("NotifyIcon_Menu_FavoriteServicesLabel_Tooltip", resourceCulture); } } /// /// Looks up a localized string similar to {0} - {1}. /// internal static string NotifyIcon_Menu_Service { get { return ResourceManager.GetString("NotifyIcon_Menu_Service", resourceCulture); } } } } ServiceManagerTray/Properties/Resources.resx000066400000000000000000000153251516075642300216410ustar00rootroot00000000000000 text/microsoft-resx 2.0 System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 You are free to do whatever you want with this software. Special thanks to famfamfam.com for the icons Service Manager Tray by ChildhoodCoder.com Service Manager Tray Click this icon to show the application window. {0} service is {1}. Service Manager started Favorite services: Click the menu item to toggle the service state. {0} - {1} ServiceManagerTray/Properties/Settings.Designer.cs000066400000000000000000000115301516075642300226440ustar00rootroot00000000000000//------------------------------------------------------------------------------ // // This code was generated by a tool. // Runtime Version:4.0.30319.42000 // // Changes to this file may cause incorrect behavior and will be lost if // the code is regenerated. // //------------------------------------------------------------------------------ namespace chc.servicemanagertray.Properties { [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "15.1.0.0")] internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase { private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings()))); public static Settings Default { get { return defaultInstance; } } [global::System.Configuration.UserScopedSettingAttribute()] [global::System.Configuration.SettingsProviderAttribute(typeof(chc.servicemanagertray.PortableSettingsProvider))] [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] [global::System.Configuration.DefaultSettingValueAttribute("False")] [global::System.Configuration.SettingsManageabilityAttribute(global::System.Configuration.SettingsManageability.Roaming)] public bool TrayBalloonShown { get { return ((bool)(this["TrayBalloonShown"])); } set { this["TrayBalloonShown"] = value; } } [global::System.Configuration.UserScopedSettingAttribute()] [global::System.Configuration.SettingsProviderAttribute(typeof(chc.servicemanagertray.PortableSettingsProvider))] [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] [global::System.Configuration.DefaultSettingValueAttribute("\r\n")] [global::System.Configuration.SettingsManageabilityAttribute(global::System.Configuration.SettingsManageability.Roaming)] public global::System.Collections.Specialized.StringCollection Favorites { get { return ((global::System.Collections.Specialized.StringCollection)(this["Favorites"])); } set { this["Favorites"] = value; } } [global::System.Configuration.UserScopedSettingAttribute()] [global::System.Configuration.SettingsProviderAttribute(typeof(chc.servicemanagertray.PortableSettingsProvider))] [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] [global::System.Configuration.DefaultSettingValueAttribute("DisplayName")] [global::System.Configuration.SettingsManageabilityAttribute(global::System.Configuration.SettingsManageability.Roaming)] public string SortColumnName { get { return ((string)(this["SortColumnName"])); } set { this["SortColumnName"] = value; } } [global::System.Configuration.UserScopedSettingAttribute()] [global::System.Configuration.SettingsProviderAttribute(typeof(chc.servicemanagertray.PortableSettingsProvider))] [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] [global::System.Configuration.DefaultSettingValueAttribute("Ascending")] [global::System.Configuration.SettingsManageabilityAttribute(global::System.Configuration.SettingsManageability.Roaming)] public global::System.Windows.Forms.SortOrder SortOrder { get { return ((global::System.Windows.Forms.SortOrder)(this["SortOrder"])); } set { this["SortOrder"] = value; } } [global::System.Configuration.UserScopedSettingAttribute()] [global::System.Configuration.SettingsProviderAttribute(typeof(chc.servicemanagertray.PortableSettingsProvider))] [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] [global::System.Configuration.DefaultSettingValueAttribute("Normal")] [global::System.Configuration.SettingsManageabilityAttribute(global::System.Configuration.SettingsManageability.Roaming)] public global::System.Windows.Forms.FormWindowState FormWindowState { get { return ((global::System.Windows.Forms.FormWindowState)(this["FormWindowState"])); } set { this["FormWindowState"] = value; } } } } ServiceManagerTray/Properties/Settings.settings000066400000000000000000000030421516075642300223370ustar00rootroot00000000000000 False <?xml version="1.0" encoding="utf-16"?> <ArrayOfString xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" /> DisplayName Ascending Normal ServiceManagerTray/PropertyComparer.cs000066400000000000000000000031461516075642300204720ustar00rootroot00000000000000using System; using System.Collections; using System.Collections.Generic; using System.ComponentModel; using System.Reflection; namespace chc.servicemanagertray { public class PropertyComparer : IComparer { private readonly IComparer comparer; private PropertyDescriptor propertyDescriptor; private int reverse; public PropertyComparer(PropertyDescriptor property, ListSortDirection direction) { this.propertyDescriptor = property; Type comparerForPropertyType = typeof(Comparer<>).MakeGenericType(property.PropertyType); this.comparer = (IComparer)comparerForPropertyType.InvokeMember("Default", BindingFlags.Static | BindingFlags.GetProperty | BindingFlags.Public, null, null, null); this.SetListSortDirection(direction); } #region IComparer Members public int Compare(T x, T y) { return this.reverse * this.comparer.Compare(this.propertyDescriptor.GetValue(x), this.propertyDescriptor.GetValue(y)); } #endregion private void SetPropertyDescriptor(PropertyDescriptor descriptor) { this.propertyDescriptor = descriptor; } private void SetListSortDirection(ListSortDirection direction) { this.reverse = direction == ListSortDirection.Ascending ? 1 : -1; } public void SetPropertyAndDirection(PropertyDescriptor descriptor, ListSortDirection direction) { this.SetPropertyDescriptor(descriptor); this.SetListSortDirection(direction); } } } ServiceManagerTray/Resources/000077500000000000000000000000001516075642300165745ustar00rootroot00000000000000ServiceManagerTray/Resources/Application.ico000066400000000000000000000205461516075642300215420ustar00rootroot00000000000000  ( @  " (E-@MMMMMMH!5MMMM5MMMMMMMMJ +=MMMMMMMMMMMMMMMM:DMM;MMMMMMMMhq^MMMMMMMM8 #MMMf싋O⚚򌌌MMMMMM;JMMMwɏɛfboMMH JMMZٔӉꑑՐOMMM}ϜMDMdqMJ {ML?^hurbMM0<԰MWT՚”աV񖖖MMMMn+牉ވۉ鉉ջݕǑċ=܋g򾾾؋q΋LMFt賳ӍP%͸⦦͋p#^|=(:O(?( @  " (E-@MMMMMMH!5MMMM5MMMMMMMMJ +=MMMMMMMMMMMMMMMM:DMM;MMMMMMMMhq^MMMMMMMM8 #MMMf싋O⚚򌌌MMMMMM;JMMMwɏɛfboMMH JMMZٔӉꑑՐOMMM}ϜMDMdqMJ {ML?^hurbMM0<԰MWT՚”աV񖖖MMMMn+牉ވۉ鉉ջݕǑċ=܋g򾾾؋q΋LMFt賳ӍP%͸⦦͋p#^|=(:O(?ServiceManagerTray/Resources/Application.png000066400000000000000000000047241516075642300215540ustar00rootroot00000000000000PNG  IHDR szz pHYs  gAMA0 cHRMz-RqGc9 !_ JIDATxb?)H͒ db$@UgKII pqq1>yӧO75+ >ħLn@}!斤_dv[n}PPP`7o_?p@XHYKL?~dSXX"`?~`c`ffffυ /((prVV֝F<@w/>eccc Ý;w޼y/3HJJdeez5(öm!r˗god ,p"11QÇ `˯_p)ϟ?3Adٷo~ ƠQQQa˃~xⳳg:f@ؖ8ᆃ|W` f111AAA^P#X= >(jŋ`>Hs?舙 v'&(Y\\ @vZp4}ĄA[[@$we8r 9P<rȁD ''ڴiǀC 6ܵR(0Ā a?fGaO b0+W !( 5`bxa A1@@Am~~" @ԠsCCCpH ^hHPk`B|ݻ?W\>.]Qi (6sF6jw>| h!P>zl(5|۷ol`TDNr`H-8$@Q Ewww}'N| ;aFP||Jtի(.\SSS @ j9M׀ 0KRpz@Bj-A2X^UWW{ ZZZ  ǎc۸q8@lll>of4# a #@ up@Pv` T<|Ɂb @O+YBW뎰࿡jysz@,zAy"<` ԄgE`T1\pJr# ,ٖ$MǏ'j6332&4tY5%_``Լ:k\UyDc8gEě_1;jP ֘{1X:G hٱ2/j)">K>WX Jd0z̋"wقv!{V#y;:Azqfw޲'5Jhi> \7vz9<^xXkW,&jx CA`5E sX%He`5 *Aq bR>(Aݻ=J  6P aP l08z@JIPvPh^9;Cȧ q###p"-v}0JD@.`5(cAJ4449[VK@ۀ4 u 0h_'@ ȍ`bT4 + OA0ȁ4LȠ/J@un@23 r $ЮeJ@Ÿ@@p)Y(~Ġ 04@EMo#cx@ )(O"⟤@d9 wgL^_IENDB`ServiceManagerTray/Resources/Uninstall.ico000066400000000000000000000021761516075642300212470ustar00rootroot00000000000000 h(  @WyEBEE{WÁ%d!wydME{qQÎhfda_~\|Z{XKcvvhEȒlCBʔn$]Mw!@D̗o=vr.kCmќs*aC Z_aԞu|Zՠv~\آy^٣y`ۤzcܧ{ܧ{ܧ{ܧ{ܧ{ܧ{ܧ{ܧ{ܧ{ܧ{ܧ{ܧ{ܧ{ܧ{fݬ蹒蹒蹒蹒蹒蹒蹒蹒蹒蹒蹒蹒蹒oqQkݱܧ{ܦzڤzآyՠvԞuҝsϚrΙp˖oɔlĚzqQkServiceManagerTray/Resources/arrow_refresh.png000066400000000000000000000012551516075642300221550ustar00rootroot00000000000000PNG  IHDRagAMA7tEXtSoftwareAdobe ImageReadyqe<?IDAT8ˍKa3bvВBB9d-Od6_t䡁eŚܡIͱaIF%he a#; ]8axo<+ ߺqeZ!;"4U/(/Dv]toUq|͸U!\vtPָ#i)8:S.άj[/Uv loL3 k&~j~MLGJf2Bʔ̘Zf=EfQd֟wLۅȌ#fd&ʝulՓ;xLH֌ ÉȠȠ~+:#hh#5=&N.ehiL(B:* ƑCc!i9BL%^0n9ֈs>i ֓i붻k>Gj ]IENDB`ServiceManagerTray/Resources/cog_go.png000066400000000000000000000015331516075642300205410ustar00rootroot00000000000000PNG  IHDRagAMA7tEXtSoftwareAdobe ImageReadyqe<IDAT8mSKSq>6'zG5|icŠ%d>,oB~!G}~?d5_IJ1t95v9%/1~,ښ {Xl_ZZ566Z̀d' ؏ulJ`j5DQL`A9x<anF&%,j* (BIl6MNNd3 yhbx'EmooC8V?A4ojj\Pt: uuup8@irNh 8 hb VX*z@[cn. Cpd%dH$œN'X,j766 J|yhy[ 5  SSS Oii 5ROU-/ep@`ue FJSL_d"$3nuz`;,Õ]$Ξ87776JJ(gS(B Fa5AFUzmP=onn#MI&v>  $&Zn_RYT5@ p Rfj 2rن`)d—O+O-`8Yԓt~0,Qjok!BxAPk>aZC+Ǹigggsnpn}s Xk( dgc,VYltrÙsӗ.ƙw6XY)zƲglEOd ʺM6g^ Y}}}Z4;yL"9;"JLﭘfk\_B:fՄ`pM@ R }ʖ鱵8bWUqI& o+0:4kp'⊘p&u6)|ѡjK\*AI*"]?];O[iES;؛o={LJTTKDK"u\#&눩Ň#eTf0uL 7'1cILxKK{ Z#L#!qwTSSd-!$6qIP'vj@ =  L yzz֣gEI[ş5>y-w8u0a3r\9j~Mw{ͽIENDB`ServiceManagerTray/Resources/information.png000066400000000000000000000014121516075642300216250ustar00rootroot00000000000000PNG  IHDRagAMA7tEXtSoftwareAdobe ImageReadyqe<IDAT8˥kW?wLdL&1 6Ѩ(hR,M!R;TA.\tm\ >VtZ΢043$BH|=/_>8U}T!su4-WNV8 (wOo^uŕr#ɞF֮`!r pzyeHnVZԜგ[C*³2??\S +K;EСzrc%5*cb]3_槻i4|vQ @hԎdÅ"@IzSlՒ,Ѿ1AֆFޟXq AǏd'bβE.r`o+)ȶ6P)G!wGCqnfG SJy8ux8q8+g~jnBs14({^&xqXxXƘ0 `~Mqrd;;?ln]-G "8:Z &V#_M_G_8T-y/LZOr_wnYf .m[/-q_1rdߪr^LJ&KӼ~-<]0(Œ1n+iU ' 4`)7 r珁s?w ?{Y!IENDB`ServiceManagerTray/Resources/wrench.png000066400000000000000000000011421516075642300205660ustar00rootroot00000000000000PNG  IHDRagAMA7tEXtSoftwareAdobe ImageReadyqe<IDAT8˕oQ_[c+W.]хi5  g mJ[Fq#_)qո;,@{;upLTʙH$(Z XMɤni"\nt:}yD 0 \ ږIU4(r HMk̈_4_ziy'"[ n1rM_A`b=$Ik_p-qS~=li~3Bv"qZAԧ̸r[G]<&e!'ڸ67 yq$OX!=_~1Gs~EZQx&qWK3!ޤunkzGrjQnIENDB`ServiceManagerTray/Service Manager Tray.csproj000066400000000000000000000270561516075642300217110ustar00rootroot00000000000000 Debug AnyCPU 9.0.30729 2.0 {5ACD07B8-8874-4C8F-B6A6-66E646218FA3} WinExe Properties chc.servicemanagertray ServiceManagerTray v4.6.1 512 chc.servicemanagertray.Program Resources\Application.ico app.manifest true true ServiceManagerTray.snk 3.5 http://localhost/ServiceManagerTray/ true Web true Foreground 7 Days false false true 0 1.0.0.%2a false true true full false bin\Debug\ DEBUG;TRACE prompt 4 false -Microsoft.Globalization#CA1308;-Microsoft.Globalization#CA1304;-Microsoft.Globalization#CA1305;-Microsoft.Globalization#CA1300;-Microsoft.Naming#CA1709;-Microsoft.Naming#CA1707 false pdbonly true bin\Release\ TRACE prompt 4 -Microsoft.Globalization#CA1308;-Microsoft.Globalization#CA1304;-Microsoft.Globalization#CA1305;-Microsoft.Globalization#CA1300;-Microsoft.Naming#CA1709;-Microsoft.Naming#CA1707 true false true bin\x64\Debug\ DEBUG;TRACE full x64 -Microsoft.Globalization#CA1308;-Microsoft.Globalization#CA1304;-Microsoft.Globalization#CA1305;-Microsoft.Globalization#CA1300;-Microsoft.Naming#CA1709;-Microsoft.Naming#CA1707 true GlobalSuppressions.cs prompt false bin\x64\Release\ CODE_ANALYSIS;TRACE true pdbonly x64 true -Microsoft.Globalization#CA1308;-Microsoft.Globalization#CA1304;-Microsoft.Globalization#CA1305;-Microsoft.Globalization#CA1300;-Microsoft.Naming#CA1709;-Microsoft.Naming#CA1707 true GlobalSuppressions.cs prompt false true bin\x86\Debug\ DEBUG;TRACE full x86 -Microsoft.Globalization#CA1308;-Microsoft.Globalization#CA1304;-Microsoft.Globalization#CA1305;-Microsoft.Globalization#CA1300;-Microsoft.Naming#CA1709;-Microsoft.Naming#CA1707 true GlobalSuppressions.cs prompt false bin\x86\Release\ CODE_ANALYSIS;TRACE true pdbonly x86 true -Microsoft.Globalization#CA1308;-Microsoft.Globalization#CA1304;-Microsoft.Globalization#CA1305;-Microsoft.Globalization#CA1300;-Microsoft.Naming#CA1709;-Microsoft.Naming#CA1707 true GlobalSuppressions.cs prompt false true 3.5 3.5 3.5 3.5 Form ServiceManagerForm.cs ResXFileCodeGenerator Resources.Designer.cs Designer ServiceManagerForm.cs True Resources.resx True SettingsSingleFileGenerator Settings.Designer.cs True Settings.settings True Designer PreserveNewest PreserveNewest False .NET Framework Client Profile false False .NET Framework 2.0 %28x86%29 false False .NET Framework 3.0 %28x86%29 false False .NET Framework 3.5 false False .NET Framework 3.5 SP1 true False Windows Installer 3.1 true "$(ProjectDir)Build\KillServiceManagerProcess.bat" ServiceManagerTray/ServiceDataSource.cs000066400000000000000000000043261516075642300205310ustar00rootroot00000000000000using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Collections.Specialized; using System.ServiceProcess; namespace chc.servicemanagertray { /// /// Service data store. /// internal class ServiceDataSource { /// /// List of services. /// private List services; private string search = null; public string Search { set { search = value; } get { return search; } } /// /// Get the list of services on localhost /// public List GetServices(bool refresh_services = false) { if (this.services == null) { LoadServices(); } if (refresh_services) { Refresh(); } return services; } public List GetServicesSearched(bool refresh_services = false) { var services = GetServices(refresh_services); services = (from ServiceWrapper s in this.services where String.IsNullOrWhiteSpace(search) || s.DisplayName.ToLower().Contains(search.ToLower()) || s.Description.ToLower().Contains(search.ToLower()) select s).ToList(); return services; } public List Services { get { return GetServices(); } } public void Refresh() { services.ForEach(delegate(ServiceWrapper s) { s.ServiceController.Refresh(); }); } private void LoadServices() { services = new List(); foreach (ServiceController s in from s in ServiceController.GetServices() orderby s.DisplayName ascending select s) { ServiceWrapper sw = new ServiceWrapper(s, Properties.Settings.Default.Favorites.Contains(s.ServiceName)); services.Add(sw); } } } } ServiceManagerTray/ServiceManagerForm.Designer.cs000066400000000000000000001221621516075642300224330ustar00rootroot00000000000000namespace chc.servicemanagertray { partial class ServiceManagerForm { /// /// Required designer variable. /// private System.ComponentModel.IContainer components = null; /// /// Clean up any resources being used. /// /// true if managed resources should be disposed; otherwise, false. protected override void Dispose(bool disposing) { if (disposing && (components != null)) { components.Dispose(); } base.Dispose(disposing); } #region Windows Form Designer generated code /// /// Required method for Designer support - do not modify /// the contents of this method with the code editor. /// private void InitializeComponent() { this.components = new System.ComponentModel.Container(); System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(ServiceManagerForm)); System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle1 = new System.Windows.Forms.DataGridViewCellStyle(); System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle2 = new System.Windows.Forms.DataGridViewCellStyle(); System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle3 = new System.Windows.Forms.DataGridViewCellStyle(); System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle4 = new System.Windows.Forms.DataGridViewCellStyle(); this.trayicon = new System.Windows.Forms.NotifyIcon(this.components); this.trayicon_menu = new System.Windows.Forms.ContextMenuStrip(this.components); this.trayicon_menu_servicemanager = new System.Windows.Forms.ToolStripMenuItem(); this.trayicon_menu_separator1 = new System.Windows.Forms.ToolStripSeparator(); this.toolStripMenuItem2 = new System.Windows.Forms.ToolStripMenuItem(); this.toolStripMenuItem1 = new System.Windows.Forms.ToolStripMenuItem(); this.toolStripSeparator3 = new System.Windows.Forms.ToolStripSeparator(); this.trayicon_menu_exit = new System.Windows.Forms.ToolStripMenuItem(); this.statusstrip = new System.Windows.Forms.StatusStrip(); this.statusstrip_statuslabel = new System.Windows.Forms.ToolStripStatusLabel(); this.mainmenu = new System.Windows.Forms.MenuStrip(); this.mainmenu_file = new System.Windows.Forms.ToolStripMenuItem(); this.mainmenu_file_exit = new System.Windows.Forms.ToolStripMenuItem(); this.mainmenu_tools = new System.Windows.Forms.ToolStripMenuItem(); this.mainmenu_tools_refresh = new System.Windows.Forms.ToolStripMenuItem(); this.mainmenurefresh_separator1 = new System.Windows.Forms.ToolStripSeparator(); this.mainmenu_tools_option = new System.Windows.Forms.ToolStripMenuItem(); this.mainmenu_help = new System.Windows.Forms.ToolStripMenuItem(); this.mainmenu_help_about = new System.Windows.Forms.ToolStripMenuItem(); this.servicegrid = new System.Windows.Forms.DataGridView(); this.icon = new System.Windows.Forms.DataGridViewImageColumn(); this.servicegrid_namecolumn = new System.Windows.Forms.DataGridViewTextBoxColumn(); this.servicegrid_statuscolumn = new System.Windows.Forms.DataGridViewTextBoxColumn(); this.servicegrid_favoritecolumn = new System.Windows.Forms.DataGridViewCheckBoxColumn(); this.servicegrid_isrunningcolumn = new System.Windows.Forms.DataGridViewCheckBoxColumn(); this.servicegrid_contextmenu = new System.Windows.Forms.ContextMenuStrip(this.components); this.servicegrid_contextmenu_refresh = new System.Windows.Forms.ToolStripMenuItem(); this.servicegrid_bindingsource = new System.Windows.Forms.BindingSource(this.components); this.toolstrip = new System.Windows.Forms.ToolStrip(); this.toolstrip_refreshbutton = new System.Windows.Forms.ToolStripButton(); this.toolStripSeparator1 = new System.Windows.Forms.ToolStripSeparator(); this.toolstrip_winservicemanager = new System.Windows.Forms.ToolStripButton(); this.toolStripSeparator2 = new System.Windows.Forms.ToolStripSeparator(); this.toolstrip_taskmanager = new System.Windows.Forms.ToolStripButton(); this.toolStripSeparator4 = new System.Windows.Forms.ToolStripSeparator(); this.toolStripLabel1 = new System.Windows.Forms.ToolStripLabel(); this.searchFilter = new System.Windows.Forms.ToolStripTextBox(); this.toolStripSeparator5 = new System.Windows.Forms.ToolStripSeparator(); this.toolStripButton1 = new System.Windows.Forms.ToolStripButton(); this.contentpanel = new System.Windows.Forms.Panel(); this.splitcontainer = new System.Windows.Forms.SplitContainer(); this.infopanel_table = new System.Windows.Forms.TableLayoutPanel(); this.infopanel_name = new System.Windows.Forms.Label(); this.infopanel_description = new System.Windows.Forms.Label(); this.tableLayoutPanel1 = new System.Windows.Forms.TableLayoutPanel(); this.label1 = new System.Windows.Forms.Label(); this.searchServiceInfo = new System.Windows.Forms.TextBox(); this.trayicon_menu.SuspendLayout(); this.statusstrip.SuspendLayout(); this.mainmenu.SuspendLayout(); ((System.ComponentModel.ISupportInitialize)(this.servicegrid)).BeginInit(); this.servicegrid_contextmenu.SuspendLayout(); ((System.ComponentModel.ISupportInitialize)(this.servicegrid_bindingsource)).BeginInit(); this.toolstrip.SuspendLayout(); this.contentpanel.SuspendLayout(); ((System.ComponentModel.ISupportInitialize)(this.splitcontainer)).BeginInit(); this.splitcontainer.Panel1.SuspendLayout(); this.splitcontainer.Panel2.SuspendLayout(); this.splitcontainer.SuspendLayout(); this.infopanel_table.SuspendLayout(); this.tableLayoutPanel1.SuspendLayout(); this.SuspendLayout(); // // trayicon // this.trayicon.BalloonTipText = "Service Manager Tray"; this.trayicon.ContextMenuStrip = this.trayicon_menu; this.trayicon.Icon = ((System.Drawing.Icon)(resources.GetObject("trayicon.Icon"))); this.trayicon.Text = "Service Manager Tray"; this.trayicon.Visible = true; this.trayicon.MouseClick += new System.Windows.Forms.MouseEventHandler(this.trayicon_MouseClick); // // trayicon_menu // this.trayicon_menu.ImageScalingSize = new System.Drawing.Size(24, 24); this.trayicon_menu.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { this.trayicon_menu_servicemanager, this.trayicon_menu_separator1, this.toolStripMenuItem2, this.toolStripMenuItem1, this.toolStripSeparator3, this.trayicon_menu_exit}); this.trayicon_menu.Name = "contextMenuStrip1"; this.trayicon_menu.Size = new System.Drawing.Size(221, 136); // // trayicon_menu_servicemanager // this.trayicon_menu_servicemanager.BackgroundImageLayout = System.Windows.Forms.ImageLayout.None; this.trayicon_menu_servicemanager.Font = new System.Drawing.Font("Tahoma", 9F, System.Drawing.FontStyle.Bold); this.trayicon_menu_servicemanager.Image = ((System.Drawing.Image)(resources.GetObject("trayicon_menu_servicemanager.Image"))); this.trayicon_menu_servicemanager.Name = "trayicon_menu_servicemanager"; this.trayicon_menu_servicemanager.Size = new System.Drawing.Size(220, 30); this.trayicon_menu_servicemanager.Text = "&Service Manager"; this.trayicon_menu_servicemanager.Click += new System.EventHandler(this.trayicon_menu_servicemanager_Click); // // trayicon_menu_separator1 // this.trayicon_menu_separator1.ForeColor = System.Drawing.SystemColors.MenuHighlight; this.trayicon_menu_separator1.Name = "trayicon_menu_separator1"; this.trayicon_menu_separator1.Size = new System.Drawing.Size(217, 6); // // toolStripMenuItem2 // this.toolStripMenuItem2.Image = ((System.Drawing.Image)(resources.GetObject("toolStripMenuItem2.Image"))); this.toolStripMenuItem2.Name = "toolStripMenuItem2"; this.toolStripMenuItem2.Size = new System.Drawing.Size(220, 30); this.toolStripMenuItem2.Text = "Task manager"; this.toolStripMenuItem2.Click += new System.EventHandler(this.toolstrip_taskmanager_Click); // // toolStripMenuItem1 // this.toolStripMenuItem1.Image = ((System.Drawing.Image)(resources.GetObject("toolStripMenuItem1.Image"))); this.toolStripMenuItem1.Name = "toolStripMenuItem1"; this.toolStripMenuItem1.Size = new System.Drawing.Size(220, 30); this.toolStripMenuItem1.Text = "Windows service manager"; this.toolStripMenuItem1.Click += new System.EventHandler(this.toolstrip_winservicemanager_Click); // // toolStripSeparator3 // this.toolStripSeparator3.Name = "toolStripSeparator3"; this.toolStripSeparator3.Size = new System.Drawing.Size(217, 6); // // trayicon_menu_exit // this.trayicon_menu_exit.Font = new System.Drawing.Font("Tahoma", 8.25F, System.Drawing.FontStyle.Bold); this.trayicon_menu_exit.Image = ((System.Drawing.Image)(resources.GetObject("trayicon_menu_exit.Image"))); this.trayicon_menu_exit.Name = "trayicon_menu_exit"; this.trayicon_menu_exit.Size = new System.Drawing.Size(220, 30); this.trayicon_menu_exit.Text = "E&xit"; this.trayicon_menu_exit.Click += new System.EventHandler(this.trayicon_menu_exit_Click); // // statusstrip // this.statusstrip.ImageScalingSize = new System.Drawing.Size(24, 24); this.statusstrip.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { this.statusstrip_statuslabel}); this.statusstrip.Location = new System.Drawing.Point(0, 439); this.statusstrip.Name = "statusstrip"; this.statusstrip.Padding = new System.Windows.Forms.Padding(2, 0, 14, 0); this.statusstrip.RenderMode = System.Windows.Forms.ToolStripRenderMode.ManagerRenderMode; this.statusstrip.Size = new System.Drawing.Size(729, 22); this.statusstrip.TabIndex = 7; this.statusstrip.Text = "statusStrip"; // // statusstrip_statuslabel // this.statusstrip_statuslabel.Name = "statusstrip_statuslabel"; this.statusstrip_statuslabel.Size = new System.Drawing.Size(94, 17); this.statusstrip_statuslabel.Text = "Service Manager"; // // mainmenu // this.mainmenu.ImageScalingSize = new System.Drawing.Size(24, 24); this.mainmenu.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { this.mainmenu_file, this.mainmenu_tools, this.mainmenu_help}); this.mainmenu.Location = new System.Drawing.Point(0, 0); this.mainmenu.Name = "mainmenu"; this.mainmenu.Size = new System.Drawing.Size(729, 24); this.mainmenu.TabIndex = 9; this.mainmenu.Text = "Service Manager Menu"; // // mainmenu_file // this.mainmenu_file.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { this.mainmenu_file_exit}); this.mainmenu_file.Name = "mainmenu_file"; this.mainmenu_file.Size = new System.Drawing.Size(37, 20); this.mainmenu_file.Text = "&File"; // // mainmenu_file_exit // this.mainmenu_file_exit.Image = ((System.Drawing.Image)(resources.GetObject("mainmenu_file_exit.Image"))); this.mainmenu_file_exit.Name = "mainmenu_file_exit"; this.mainmenu_file_exit.Size = new System.Drawing.Size(93, 22); this.mainmenu_file_exit.Text = "E&xit"; this.mainmenu_file_exit.Click += new System.EventHandler(this.generic_exit_Click); // // mainmenu_tools // this.mainmenu_tools.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { this.mainmenu_tools_refresh, this.mainmenurefresh_separator1, this.mainmenu_tools_option}); this.mainmenu_tools.Name = "mainmenu_tools"; this.mainmenu_tools.Size = new System.Drawing.Size(46, 20); this.mainmenu_tools.Text = "&Tools"; // // mainmenu_tools_refresh // this.mainmenu_tools_refresh.Image = ((System.Drawing.Image)(resources.GetObject("mainmenu_tools_refresh.Image"))); this.mainmenu_tools_refresh.Name = "mainmenu_tools_refresh"; this.mainmenu_tools_refresh.Size = new System.Drawing.Size(116, 22); this.mainmenu_tools_refresh.Text = "&Refresh"; this.mainmenu_tools_refresh.Click += new System.EventHandler(this.generic_refreshbutton_Click); // // mainmenurefresh_separator1 // this.mainmenurefresh_separator1.Name = "mainmenurefresh_separator1"; this.mainmenurefresh_separator1.Size = new System.Drawing.Size(113, 6); // // mainmenu_tools_option // this.mainmenu_tools_option.Image = ((System.Drawing.Image)(resources.GetObject("mainmenu_tools_option.Image"))); this.mainmenu_tools_option.Name = "mainmenu_tools_option"; this.mainmenu_tools_option.Size = new System.Drawing.Size(116, 22); this.mainmenu_tools_option.Text = "&Options"; this.mainmenu_tools_option.Click += new System.EventHandler(this.mainmenu_tools_option_Click); // // mainmenu_help // this.mainmenu_help.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { this.mainmenu_help_about}); this.mainmenu_help.Name = "mainmenu_help"; this.mainmenu_help.Size = new System.Drawing.Size(44, 20); this.mainmenu_help.Text = "&Help"; // // mainmenu_help_about // this.mainmenu_help_about.Image = ((System.Drawing.Image)(resources.GetObject("mainmenu_help_about.Image"))); this.mainmenu_help_about.Name = "mainmenu_help_about"; this.mainmenu_help_about.Size = new System.Drawing.Size(116, 22); this.mainmenu_help_about.Text = "&About..."; this.mainmenu_help_about.Click += new System.EventHandler(this.mainmenu_help_about_Click); // // servicegrid // this.servicegrid.AllowUserToAddRows = false; this.servicegrid.AllowUserToDeleteRows = false; this.servicegrid.AllowUserToOrderColumns = true; dataGridViewCellStyle1.BackColor = System.Drawing.SystemColors.ControlDark; this.servicegrid.AlternatingRowsDefaultCellStyle = dataGridViewCellStyle1; this.servicegrid.AutoGenerateColumns = false; this.servicegrid.AutoSizeColumnsMode = System.Windows.Forms.DataGridViewAutoSizeColumnsMode.Fill; this.servicegrid.AutoSizeRowsMode = System.Windows.Forms.DataGridViewAutoSizeRowsMode.DisplayedCells; this.servicegrid.BackgroundColor = System.Drawing.SystemColors.Control; this.servicegrid.BorderStyle = System.Windows.Forms.BorderStyle.None; this.servicegrid.CellBorderStyle = System.Windows.Forms.DataGridViewCellBorderStyle.None; this.servicegrid.ColumnHeadersBorderStyle = System.Windows.Forms.DataGridViewHeaderBorderStyle.None; dataGridViewCellStyle2.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft; dataGridViewCellStyle2.BackColor = System.Drawing.SystemColors.Control; dataGridViewCellStyle2.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); dataGridViewCellStyle2.ForeColor = System.Drawing.SystemColors.WindowText; dataGridViewCellStyle2.SelectionBackColor = System.Drawing.SystemColors.Highlight; dataGridViewCellStyle2.SelectionForeColor = System.Drawing.SystemColors.HighlightText; dataGridViewCellStyle2.WrapMode = System.Windows.Forms.DataGridViewTriState.True; this.servicegrid.ColumnHeadersDefaultCellStyle = dataGridViewCellStyle2; this.servicegrid.Columns.AddRange(new System.Windows.Forms.DataGridViewColumn[] { this.icon, this.servicegrid_namecolumn, this.servicegrid_statuscolumn, this.servicegrid_favoritecolumn, this.servicegrid_isrunningcolumn}); this.servicegrid.ContextMenuStrip = this.servicegrid_contextmenu; this.servicegrid.DataSource = this.servicegrid_bindingsource; dataGridViewCellStyle3.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft; dataGridViewCellStyle3.BackColor = System.Drawing.SystemColors.Window; dataGridViewCellStyle3.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); dataGridViewCellStyle3.ForeColor = System.Drawing.SystemColors.ControlText; dataGridViewCellStyle3.SelectionBackColor = System.Drawing.SystemColors.Highlight; dataGridViewCellStyle3.SelectionForeColor = System.Drawing.SystemColors.HighlightText; dataGridViewCellStyle3.WrapMode = System.Windows.Forms.DataGridViewTriState.False; this.servicegrid.DefaultCellStyle = dataGridViewCellStyle3; this.servicegrid.Dock = System.Windows.Forms.DockStyle.Fill; this.servicegrid.Location = new System.Drawing.Point(0, 0); this.servicegrid.Margin = new System.Windows.Forms.Padding(3, 3, 3, 22); this.servicegrid.MultiSelect = false; this.servicegrid.Name = "servicegrid"; this.servicegrid.ReadOnly = true; dataGridViewCellStyle4.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft; dataGridViewCellStyle4.BackColor = System.Drawing.SystemColors.Control; dataGridViewCellStyle4.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); dataGridViewCellStyle4.ForeColor = System.Drawing.SystemColors.WindowText; dataGridViewCellStyle4.SelectionBackColor = System.Drawing.SystemColors.Highlight; dataGridViewCellStyle4.SelectionForeColor = System.Drawing.SystemColors.HighlightText; dataGridViewCellStyle4.WrapMode = System.Windows.Forms.DataGridViewTriState.True; this.servicegrid.RowHeadersDefaultCellStyle = dataGridViewCellStyle4; this.servicegrid.RowHeadersVisible = false; this.servicegrid.RowTemplate.Resizable = System.Windows.Forms.DataGridViewTriState.True; this.servicegrid.SelectionMode = System.Windows.Forms.DataGridViewSelectionMode.FullRowSelect; this.servicegrid.ShowEditingIcon = false; this.servicegrid.Size = new System.Drawing.Size(562, 384); this.servicegrid.TabIndex = 10; this.servicegrid.VirtualMode = true; this.servicegrid.CellClick += new System.Windows.Forms.DataGridViewCellEventHandler(this.servicegrid_CellClick); this.servicegrid.CurrentCellChanged += new System.EventHandler(this.servicegrid_CurrentCellChanged); this.servicegrid.MouseDown += new System.Windows.Forms.MouseEventHandler(this.servicegrid_MouseDown); // // icon // this.icon.AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.None; this.icon.FillWeight = 5F; this.icon.HeaderText = ""; this.icon.Image = ((System.Drawing.Image)(resources.GetObject("icon.Image"))); this.icon.MinimumWidth = 16; this.icon.Name = "icon"; this.icon.ReadOnly = true; this.icon.Resizable = System.Windows.Forms.DataGridViewTriState.False; this.icon.Width = 16; // // servicegrid_namecolumn // this.servicegrid_namecolumn.AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.None; this.servicegrid_namecolumn.DataPropertyName = "DisplayName"; this.servicegrid_namecolumn.FillWeight = 50F; this.servicegrid_namecolumn.HeaderText = "Name"; this.servicegrid_namecolumn.MinimumWidth = 200; this.servicegrid_namecolumn.Name = "servicegrid_namecolumn"; this.servicegrid_namecolumn.ReadOnly = true; this.servicegrid_namecolumn.Width = 300; // // servicegrid_statuscolumn // this.servicegrid_statuscolumn.AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.None; this.servicegrid_statuscolumn.DataPropertyName = "Status"; this.servicegrid_statuscolumn.FillWeight = 15F; this.servicegrid_statuscolumn.HeaderText = "Status"; this.servicegrid_statuscolumn.MinimumWidth = 70; this.servicegrid_statuscolumn.Name = "servicegrid_statuscolumn"; this.servicegrid_statuscolumn.ReadOnly = true; this.servicegrid_statuscolumn.Width = 70; // // servicegrid_favoritecolumn // this.servicegrid_favoritecolumn.AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.None; this.servicegrid_favoritecolumn.DataPropertyName = "IsFavorite"; this.servicegrid_favoritecolumn.FillWeight = 15F; this.servicegrid_favoritecolumn.HeaderText = "Favorite"; this.servicegrid_favoritecolumn.MinimumWidth = 70; this.servicegrid_favoritecolumn.Name = "servicegrid_favoritecolumn"; this.servicegrid_favoritecolumn.ReadOnly = true; this.servicegrid_favoritecolumn.SortMode = System.Windows.Forms.DataGridViewColumnSortMode.Automatic; this.servicegrid_favoritecolumn.Width = 70; // // servicegrid_isrunningcolumn // this.servicegrid_isrunningcolumn.DataPropertyName = "IsRunning"; this.servicegrid_isrunningcolumn.FillWeight = 15F; this.servicegrid_isrunningcolumn.HeaderText = "Start/stop"; this.servicegrid_isrunningcolumn.MinimumWidth = 70; this.servicegrid_isrunningcolumn.Name = "servicegrid_isrunningcolumn"; this.servicegrid_isrunningcolumn.ReadOnly = true; this.servicegrid_isrunningcolumn.SortMode = System.Windows.Forms.DataGridViewColumnSortMode.Automatic; // // servicegrid_contextmenu // this.servicegrid_contextmenu.ImageScalingSize = new System.Drawing.Size(24, 24); this.servicegrid_contextmenu.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { this.servicegrid_contextmenu_refresh}); this.servicegrid_contextmenu.Name = "servicegrid_contextmenu"; this.servicegrid_contextmenu.Size = new System.Drawing.Size(122, 34); // // servicegrid_contextmenu_refresh // this.servicegrid_contextmenu_refresh.Image = ((System.Drawing.Image)(resources.GetObject("servicegrid_contextmenu_refresh.Image"))); this.servicegrid_contextmenu_refresh.Name = "servicegrid_contextmenu_refresh"; this.servicegrid_contextmenu_refresh.Size = new System.Drawing.Size(121, 30); this.servicegrid_contextmenu_refresh.Text = "Refresh"; this.servicegrid_contextmenu_refresh.Click += new System.EventHandler(this.generic_refreshbutton_Click); // // servicegrid_bindingsource // this.servicegrid_bindingsource.DataMember = "Services"; this.servicegrid_bindingsource.DataSource = typeof(chc.servicemanagertray.ServiceDataSource); // // toolstrip // this.toolstrip.GripStyle = System.Windows.Forms.ToolStripGripStyle.Hidden; this.toolstrip.ImageScalingSize = new System.Drawing.Size(24, 24); this.toolstrip.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { this.toolstrip_refreshbutton, this.toolStripSeparator1, this.toolstrip_winservicemanager, this.toolStripSeparator2, this.toolstrip_taskmanager, this.toolStripSeparator4, this.toolStripLabel1, this.searchFilter, this.toolStripSeparator5, this.toolStripButton1}); this.toolstrip.LayoutStyle = System.Windows.Forms.ToolStripLayoutStyle.HorizontalStackWithOverflow; this.toolstrip.Location = new System.Drawing.Point(0, 0); this.toolstrip.Name = "toolstrip"; this.toolstrip.Padding = new System.Windows.Forms.Padding(0, 0, 2, 0); this.toolstrip.Size = new System.Drawing.Size(729, 31); this.toolstrip.TabIndex = 15; this.toolstrip.Text = "toolStrip1"; // // toolstrip_refreshbutton // this.toolstrip_refreshbutton.Image = ((System.Drawing.Image)(resources.GetObject("toolstrip_refreshbutton.Image"))); this.toolstrip_refreshbutton.ImageTransparentColor = System.Drawing.Color.Magenta; this.toolstrip_refreshbutton.Margin = new System.Windows.Forms.Padding(6, 1, 0, 2); this.toolstrip_refreshbutton.Name = "toolstrip_refreshbutton"; this.toolstrip_refreshbutton.Size = new System.Drawing.Size(74, 28); this.toolstrip_refreshbutton.Text = "&Refresh"; this.toolstrip_refreshbutton.Click += new System.EventHandler(this.generic_refreshbutton_Click); // // toolStripSeparator1 // this.toolStripSeparator1.Name = "toolStripSeparator1"; this.toolStripSeparator1.Size = new System.Drawing.Size(6, 31); // // toolstrip_winservicemanager // this.toolstrip_winservicemanager.Image = ((System.Drawing.Image)(resources.GetObject("toolstrip_winservicemanager.Image"))); this.toolstrip_winservicemanager.ImageTransparentColor = System.Drawing.Color.Magenta; this.toolstrip_winservicemanager.Name = "toolstrip_winservicemanager"; this.toolstrip_winservicemanager.Size = new System.Drawing.Size(173, 28); this.toolstrip_winservicemanager.Text = "Windows &service manager"; this.toolstrip_winservicemanager.Click += new System.EventHandler(this.toolstrip_winservicemanager_Click); // // toolStripSeparator2 // this.toolStripSeparator2.Name = "toolStripSeparator2"; this.toolStripSeparator2.Size = new System.Drawing.Size(6, 31); // // toolstrip_taskmanager // this.toolstrip_taskmanager.Image = ((System.Drawing.Image)(resources.GetObject("toolstrip_taskmanager.Image"))); this.toolstrip_taskmanager.ImageTransparentColor = System.Drawing.Color.Magenta; this.toolstrip_taskmanager.Name = "toolstrip_taskmanager"; this.toolstrip_taskmanager.Size = new System.Drawing.Size(107, 28); this.toolstrip_taskmanager.Text = "&Task manager"; this.toolstrip_taskmanager.Click += new System.EventHandler(this.toolstrip_taskmanager_Click); // // toolStripSeparator4 // this.toolStripSeparator4.Name = "toolStripSeparator4"; this.toolStripSeparator4.Size = new System.Drawing.Size(6, 31); // // toolStripLabel1 // this.toolStripLabel1.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Text; this.toolStripLabel1.Name = "toolStripLabel1"; this.toolStripLabel1.Size = new System.Drawing.Size(89, 28); this.toolStripLabel1.Text = "Search services:"; // // searchFilter // this.searchFilter.Font = new System.Drawing.Font("Segoe UI", 9F); this.searchFilter.Name = "searchFilter"; this.searchFilter.Size = new System.Drawing.Size(40, 31); this.searchFilter.ToolTipText = "You might search in the services"; // // toolStripSeparator5 // this.toolStripSeparator5.Name = "toolStripSeparator5"; this.toolStripSeparator5.Size = new System.Drawing.Size(6, 31); // // toolStripButton1 // this.toolStripButton1.Image = ((System.Drawing.Image)(resources.GetObject("toolStripButton1.Image"))); this.toolStripButton1.ImageTransparentColor = System.Drawing.Color.Magenta; this.toolStripButton1.Name = "toolStripButton1"; this.toolStripButton1.Size = new System.Drawing.Size(54, 28); this.toolStripButton1.Text = "E&xit"; this.toolStripButton1.Click += new System.EventHandler(this.generic_exit_Click); // // contentpanel // this.contentpanel.Controls.Add(this.splitcontainer); this.contentpanel.Controls.Add(this.toolstrip); this.contentpanel.Dock = System.Windows.Forms.DockStyle.Fill; this.contentpanel.Location = new System.Drawing.Point(0, 24); this.contentpanel.Name = "contentpanel"; this.contentpanel.Size = new System.Drawing.Size(729, 415); this.contentpanel.TabIndex = 16; // // splitcontainer // this.splitcontainer.Dock = System.Windows.Forms.DockStyle.Fill; this.splitcontainer.Location = new System.Drawing.Point(0, 31); this.splitcontainer.Name = "splitcontainer"; // // splitcontainer.Panel1 // this.splitcontainer.Panel1.BackColor = System.Drawing.SystemColors.ControlLightLight; this.splitcontainer.Panel1.Controls.Add(this.infopanel_table); // // splitcontainer.Panel2 // this.splitcontainer.Panel2.Controls.Add(this.servicegrid); this.splitcontainer.Size = new System.Drawing.Size(729, 384); this.splitcontainer.SplitterDistance = 163; this.splitcontainer.TabIndex = 17; // // infopanel_table // this.infopanel_table.ColumnCount = 1; this.infopanel_table.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100F)); this.infopanel_table.Controls.Add(this.infopanel_name, 0, 0); this.infopanel_table.Controls.Add(this.infopanel_description, 0, 1); this.infopanel_table.Controls.Add(this.tableLayoutPanel1, 0, 2); this.infopanel_table.Dock = System.Windows.Forms.DockStyle.Fill; this.infopanel_table.Location = new System.Drawing.Point(0, 0); this.infopanel_table.Name = "infopanel_table"; this.infopanel_table.RowCount = 3; this.infopanel_table.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 32F)); this.infopanel_table.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100F)); this.infopanel_table.RowStyles.Add(new System.Windows.Forms.RowStyle()); this.infopanel_table.Size = new System.Drawing.Size(163, 384); this.infopanel_table.TabIndex = 1; // // infopanel_name // this.infopanel_name.AutoEllipsis = true; this.infopanel_name.AutoSize = true; this.infopanel_name.Dock = System.Windows.Forms.DockStyle.Fill; this.infopanel_name.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.infopanel_name.Location = new System.Drawing.Point(3, 6); this.infopanel_name.Margin = new System.Windows.Forms.Padding(3, 6, 3, 0); this.infopanel_name.Name = "infopanel_name"; this.infopanel_name.Size = new System.Drawing.Size(157, 26); this.infopanel_name.TabIndex = 0; this.infopanel_name.Text = "[name]"; // // infopanel_description // this.infopanel_description.AutoEllipsis = true; this.infopanel_description.AutoSize = true; this.infopanel_description.Dock = System.Windows.Forms.DockStyle.Fill; this.infopanel_description.Location = new System.Drawing.Point(3, 32); this.infopanel_description.Name = "infopanel_description"; this.infopanel_description.Size = new System.Drawing.Size(157, 303); this.infopanel_description.TabIndex = 1; this.infopanel_description.Text = "[description]"; // // tableLayoutPanel1 // this.tableLayoutPanel1.ColumnCount = 1; this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100F)); this.tableLayoutPanel1.Controls.Add(this.label1, 0, 0); this.tableLayoutPanel1.Controls.Add(this.searchServiceInfo, 0, 1); this.tableLayoutPanel1.Location = new System.Drawing.Point(3, 338); this.tableLayoutPanel1.Name = "tableLayoutPanel1"; this.tableLayoutPanel1.RowCount = 2; this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle()); this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle()); this.tableLayoutPanel1.Size = new System.Drawing.Size(157, 43); this.tableLayoutPanel1.TabIndex = 2; // // label1 // this.label1.AutoSize = true; this.label1.Dock = System.Windows.Forms.DockStyle.Fill; this.label1.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.label1.Location = new System.Drawing.Point(3, 0); this.label1.Name = "label1"; this.label1.Size = new System.Drawing.Size(151, 13); this.label1.TabIndex = 0; this.label1.Text = "Search services"; // // searchServiceInfo // this.searchServiceInfo.Dock = System.Windows.Forms.DockStyle.Fill; this.searchServiceInfo.Location = new System.Drawing.Point(3, 16); this.searchServiceInfo.Name = "searchServiceInfo"; this.searchServiceInfo.Size = new System.Drawing.Size(151, 20); this.searchServiceInfo.TabIndex = 1; // // ServiceManagerForm // this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; this.ClientSize = new System.Drawing.Size(729, 461); this.Controls.Add(this.contentpanel); this.Controls.Add(this.statusstrip); this.Controls.Add(this.mainmenu); this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon"))); this.MainMenuStrip = this.mainmenu; this.Name = "ServiceManagerForm"; this.ShowInTaskbar = false; this.Text = "Service Manager"; this.WindowState = System.Windows.Forms.FormWindowState.Minimized; this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.ServiceManagerForm_FormClosing); this.Resize += new System.EventHandler(this.ServiceManagerForm_Resize); this.trayicon_menu.ResumeLayout(false); this.statusstrip.ResumeLayout(false); this.statusstrip.PerformLayout(); this.mainmenu.ResumeLayout(false); this.mainmenu.PerformLayout(); ((System.ComponentModel.ISupportInitialize)(this.servicegrid)).EndInit(); this.servicegrid_contextmenu.ResumeLayout(false); ((System.ComponentModel.ISupportInitialize)(this.servicegrid_bindingsource)).EndInit(); this.toolstrip.ResumeLayout(false); this.toolstrip.PerformLayout(); this.contentpanel.ResumeLayout(false); this.contentpanel.PerformLayout(); this.splitcontainer.Panel1.ResumeLayout(false); this.splitcontainer.Panel2.ResumeLayout(false); ((System.ComponentModel.ISupportInitialize)(this.splitcontainer)).EndInit(); this.splitcontainer.ResumeLayout(false); this.infopanel_table.ResumeLayout(false); this.infopanel_table.PerformLayout(); this.tableLayoutPanel1.ResumeLayout(false); this.tableLayoutPanel1.PerformLayout(); this.ResumeLayout(false); this.PerformLayout(); } #endregion private System.Windows.Forms.NotifyIcon trayicon; private System.Windows.Forms.ContextMenuStrip trayicon_menu; private System.Windows.Forms.ToolStripMenuItem trayicon_menu_exit; private System.Windows.Forms.ToolStripMenuItem trayicon_menu_servicemanager; private System.Windows.Forms.BindingSource servicegrid_bindingsource; private System.Windows.Forms.ToolStripSeparator trayicon_menu_separator1; private System.Windows.Forms.StatusStrip statusstrip; private System.Windows.Forms.ToolStripStatusLabel statusstrip_statuslabel; private System.Windows.Forms.MenuStrip mainmenu; private System.Windows.Forms.ToolStripMenuItem mainmenu_file; private System.Windows.Forms.ToolStripMenuItem mainmenu_tools; private System.Windows.Forms.ToolStripMenuItem mainmenu_tools_option; private System.Windows.Forms.ToolStripMenuItem mainmenu_help; private System.Windows.Forms.ToolStripMenuItem mainmenu_help_about; private System.Windows.Forms.ToolStripMenuItem mainmenu_file_exit; private System.Windows.Forms.ToolStripMenuItem mainmenu_tools_refresh; private System.Windows.Forms.ToolStripSeparator mainmenurefresh_separator1; private System.Windows.Forms.DataGridView servicegrid; private System.Windows.Forms.ToolStrip toolstrip; private System.Windows.Forms.ToolStripButton toolstrip_refreshbutton; private System.Windows.Forms.Panel contentpanel; private System.Windows.Forms.SplitContainer splitcontainer; private System.Windows.Forms.ToolStripButton toolstrip_winservicemanager; private System.Windows.Forms.TableLayoutPanel infopanel_table; private System.Windows.Forms.Label infopanel_name; private System.Windows.Forms.Label infopanel_description; private System.Windows.Forms.ToolStripSeparator toolStripSeparator1; private System.Windows.Forms.ToolStripSeparator toolStripSeparator2; private System.Windows.Forms.ToolStripButton toolstrip_taskmanager; private System.Windows.Forms.ToolStripMenuItem toolStripMenuItem2; private System.Windows.Forms.ToolStripMenuItem toolStripMenuItem1; private System.Windows.Forms.ToolStripSeparator toolStripSeparator3; private System.Windows.Forms.ContextMenuStrip servicegrid_contextmenu; private System.Windows.Forms.ToolStripMenuItem servicegrid_contextmenu_refresh; private System.Windows.Forms.ToolStripSeparator toolStripSeparator4; private System.Windows.Forms.ToolStripButton toolStripButton1; private System.Windows.Forms.DataGridViewImageColumn icon; private System.Windows.Forms.DataGridViewTextBoxColumn servicegrid_namecolumn; private System.Windows.Forms.DataGridViewTextBoxColumn servicegrid_statuscolumn; private System.Windows.Forms.DataGridViewCheckBoxColumn servicegrid_favoritecolumn; private System.Windows.Forms.DataGridViewCheckBoxColumn servicegrid_isrunningcolumn; private System.Windows.Forms.ToolStripSeparator toolStripSeparator5; private System.Windows.Forms.ToolStripTextBox searchFilter; private System.Windows.Forms.ToolStripLabel toolStripLabel1; private System.Windows.Forms.TableLayoutPanel tableLayoutPanel1; private System.Windows.Forms.Label label1; private System.Windows.Forms.TextBox searchServiceInfo; } } ServiceManagerTray/ServiceManagerForm.cs000066400000000000000000000566251516075642300207060ustar00rootroot00000000000000using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using System.Globalization; using System.Diagnostics; using System.Runtime.InteropServices; using System.ServiceProcess; using chc.servicemanagertray.Properties; using System.Security.Principal; namespace chc.servicemanagertray { public partial class ServiceManagerForm : Form { #region Fields /// /// The datasource for the grid that provides the services. /// private ServiceDataSource ds; /// /// The name of the service currently selected to re-select on refresh and re-bind. /// private string instance_selected_service_name = null; private FormWindowState mLastState; private bool firstSave = true; #endregion #region Constructor /// /// Initializes the designer components. /// Initializes the form. /// public ServiceManagerForm(String[] args) { InitializeComponent(); InitializeForm(); this.servicegrid.CellMouseEnter += Servicegrid_CellMouseEnter; if (args.Length == 3) { bool stopToFalseAndStartToTrue = Boolean.Parse(args[2]); var service = (from sw in ds.GetServices() where sw.ServiceController.ServiceName == args[1] select sw).FirstOrDefault(); if (service != null) { if (!stopToFalseAndStartToTrue) { service.Stop(); } else { service.Start(); } SetStatusUpdateNotificationTimer(service, !stopToFalseAndStartToTrue ? ServiceControllerStatus.Stopped : ServiceControllerStatus.Running, null); } } searchFilter.TextChanged += SearchFilter_TextChanged; searchServiceInfo.TextChanged += searchServiceInfo_TextChanged; mLastState = this.WindowState; this.WindowState = Properties.Settings.Default.FormWindowState; } private void SearchFilter_TextChanged(object sender, EventArgs e) { this.ds.Search = searchFilter.Text; searchServiceInfo.Text = searchFilter.Text; BindServiceData(true); } private void searchServiceInfo_TextChanged(object sender, EventArgs e) { this.ds.Search = searchServiceInfo.Text; searchFilter.Text = searchServiceInfo.Text; BindServiceData(true); } #endregion #region Methods /// /// Creates the datasource, the tray icon and binds the grid, /// private void InitializeForm() { #if DEBUG // WindowState = FormWindowState.Normal; #endif this.ds = new ServiceDataSource(); // grid binding InitializeGrid(); BuildTrayMenu(); System.Reflection.Assembly ass = System.Reflection.Assembly.GetExecutingAssembly(); statusstrip_statuslabel.Text = string.Concat("v", ass.GetName().Version.ToString()); } /// /// Initializes the grid programmatically (set alternating row style and so on..) /// private void InitializeGrid() { servicegrid.AlternatingRowsDefaultCellStyle.BackColor = servicegrid.DefaultCellStyle.BackColor.ChangeBrightness(-25); BindServiceData(true); this.servicegrid.Rows[0].Selected = true; this.servicegrid.Focus(); } /// /// Builds the tray menu, adds the selected favorite services. /// private void BuildTrayMenu() { var favorites = (from sw in ds.GetServices() where sw.IsFavorite orderby sw.DisplayName descending select sw).ToList(); while (this.trayicon_menu.Items.Count > 6) { this.trayicon_menu.Items.RemoveAt(2); } if (favorites.Count < 1) { return; } foreach (ServiceWrapper sw in favorites) { var item_service = new ToolStripMenuItem(); item_service.Text = GetServiceMenuItemText(sw); item_service.Tag = sw; item_service.Checked = sw.Status == ServiceControllerStatus.Running; item_service.ToolTipText = Properties.Resources.NotifyIcon_Menu_FavoriteServicesLabel_Tooltip; item_service.Click += delegate(object sender, EventArgs e) { var i = sender as ToolStripMenuItem; var swi = i.Tag as ServiceWrapper; if (item_service.Checked) { swi.Stop(); if (ServiceManagerForm.IsElevated) { SetStatusUpdateNotificationTimer(swi, ServiceControllerStatus.Stopped, item_service); } } else { swi.Start(); if (ServiceManagerForm.IsElevated) { SetStatusUpdateNotificationTimer(swi, ServiceControllerStatus.Running, item_service); } } }; this.trayicon_menu.Items.Insert(1, item_service); } this.trayicon_menu.Items.Insert(1, new ToolStripSeparator()); var favorite_label = new ToolStripLabel(Properties.Resources.NotifyIcon_Menu_FavoriteServicesLabel_Text); favorite_label.Font = new Font(System.Drawing.SystemFonts.IconTitleFont, FontStyle.Bold); favorite_label.ForeColor = System.Drawing.SystemColors.InfoText; this.trayicon_menu.Items.Insert(2, favorite_label); } /// /// The service menu item string like [service name] - [service state] /// /// /// private static string GetServiceMenuItemText(ServiceWrapper sw) { var msg = string.Format(Properties.Resources.NotifyIcon_Menu_Service, sw.DisplayName, sw.Status.ToString()); return msg; } /// /// Starts a timer for the specified service /// and after the services reached the desired status it refreshes the grid. /// /// /// private void SetStatusUpdateNotificationTimer(ServiceWrapper sw, ServiceControllerStatus statusToWaitFor, ToolStripMenuItem item_service) { if (item_service != null) { item_service.Enabled = false; } var refresh = new Timer(); refresh.Interval = 200; refresh.Tick += delegate(object sender2, EventArgs e2) { sw.ServiceController.Refresh(); if (sw.ServiceController.Status == statusToWaitFor) { if (item_service != null) { item_service.Checked = (sw.ServiceController.Status == ServiceControllerStatus.Running); item_service.Text = GetServiceMenuItemText(sw); item_service.Enabled = true; } ShowServiceState(sw); BindServiceData(false); BuildTrayMenu(); refresh.Stop(); } }; refresh.Start(); } /// /// Displays the service state as a balloon. /// /// private void ShowServiceState(ServiceWrapper sw) { var msg = string.Format(CultureInfo.InvariantCulture, Properties.Resources.NotifyIcon_Baloon_Service_State, sw.DisplayName, sw.Status.ToString().ToLowerInvariant()); trayicon.ShowBalloonTip(2000, Properties.Resources.NotifyIcon_Baloon_Header, msg, ToolTipIcon.Info); } /// /// Refreshes the services info and binds the data to the grid. /// /// If TRUE the list of services is refreshed as well. private void BindServiceData(bool refresh_services) { string selected_service_name = this.instance_selected_service_name; if (selected_service_name == null) { selected_service_name = GetSelectedServiceName(); } var list = ds.GetServicesSearched(refresh_services); DataGridViewColumn sorted_column = servicegrid.SortedColumn; if (sorted_column != null) { Properties.Settings.Default.SortColumnName = sorted_column.DataPropertyName; Properties.Settings.Default.SortOrder = servicegrid.SortOrder; } else { sorted_column = (from DataGridViewColumn c in servicegrid.Columns where c.DataPropertyName == Properties.Settings.Default.SortColumnName select c).Single(); } var sorting_list = new SortableBindingList(list); this.servicegrid.DataSource = sorting_list; if (sorted_column != null) { servicegrid.Sort(sorted_column, Properties.Settings.Default.SortOrder == SortOrder.Descending ? ListSortDirection.Descending : ListSortDirection.Ascending); } if (selected_service_name != null) { servicegrid.ClearSelection(); var row = (from DataGridViewRow r in servicegrid.Rows where (r.DataBoundItem as ServiceWrapper).DisplayName == selected_service_name select r).SingleOrDefault(); if (row != null) { row.Selected = true; servicegrid.FirstDisplayedScrollingRowIndex = row.Index; } } servicegrid.Update(); } /// /// Gets the name of the selected service. /// /// private string GetSelectedServiceName() { string selected_service_name = null; if (servicegrid.SelectedRows.Count > 0) { selected_service_name = (servicegrid.SelectedRows[0].DataBoundItem as ServiceWrapper).DisplayName; } return selected_service_name; } /// /// If the window is minimized it will hidden in the tray. /// private void SetTaskbarState() { if (FormWindowState.Minimized == this.WindowState) { this.ShowInTaskbar = false; if (!Properties.Settings.Default.TrayBalloonShown) { this.trayicon.ShowBalloonTip(5000, Properties.Resources.NotifyIcon_Baloon_Header, Properties.Resources.NotifyIcon_Baloon_Hide, ToolTipIcon.Info); Properties.Settings.Default.TrayBalloonShown = true; } } else { this.ShowInTaskbar = true; } } public static bool IsElevated { get { WindowsPrincipal pricipal = new WindowsPrincipal(WindowsIdentity.GetCurrent()); bool hasAdministrativeRight = pricipal.IsInRole(WindowsBuiltInRole.Administrator); return hasAdministrativeRight; } } public static void RequestElevatation(String serviceName, bool falseIsToStopAndTrueIsToStart) { ProcessStartInfo processInfo = new ProcessStartInfo(); processInfo.Verb = "runas"; processInfo.FileName = Application.ExecutablePath; processInfo.Arguments = serviceName + " " + falseIsToStopAndTrueIsToStart.ToString(); try { Process.Start(processInfo); } catch (Win32Exception) { return; } Application.Exit(); } #endregion #region Commands /// /// Displays the form. /// private void ShowForm() { this.WindowState = FormWindowState.Normal; } /// /// Saves the settings and quits. /// public void QuitForm() { SaveSettings(); Application.Exit(); } /// /// Saves the grid sort settings into the program settings. /// private void SaveGridSortState() { if (servicegrid.SortedColumn != null) { Properties.Settings.Default.SortColumnName = servicegrid.SortedColumn.DataPropertyName; Properties.Settings.Default.SortOrder = servicegrid.SortOrder; } } /// /// Saves settings. /// Save grid sort state. /// private void SaveSettings() { SaveGridSortState(); Properties.Settings.Default.Save(); // MessageBox.Show("Save: " + Properties.Settings.Default.FormWindowState.ToString()); } /// /// Minimizes the form. /// private void MinimizeForm() { WindowState = FormWindowState.Minimized; } /// /// Shows or hides the main form based on the visibility (toggle). /// private void ToggleFormDisplay() { if (WindowState != FormWindowState.Minimized) { MinimizeForm(); } else { ShowForm(); } Properties.Settings.Default.FormWindowState = this.WindowState; SaveSettings(); } private void RefreshGrid() { BindServiceData(true); } #endregion #region Events /// /// When the form is resized, the taskbar state is set. /// /// /// private void ServiceManagerForm_Resize(object sender, EventArgs e) { SetTaskbarState(); } /// /// When the form is closed, it is minimized instead so that it is hidden in the tray. /// /// /// private void ServiceManagerForm_FormClosing(object sender, FormClosingEventArgs e) { // MessageBox.Show(e.CloseReason.ToString()); switch (e.CloseReason) { case CloseReason.WindowsShutDown: case CloseReason.ApplicationExitCall: break; default: e.Cancel = true; WindowState = FormWindowState.Minimized; break; } /* if (e.CloseReason != CloseReason.ApplicationExitCall) { e.Cancel = true; } */ } #endregion #region Tray Icon Menu Events /// /// On left mouse click, show the service manager on the tray icon. /// /// /// private void trayicon_MouseClick(object sender, MouseEventArgs e) { RefreshGrid(); if (e.Button == MouseButtons.Left) { ToggleFormDisplay(); } else if (e.Button == MouseButtons.Right) { this.BuildTrayMenu(); } } /// /// Show the service manager on the tray menu item click. /// /// /// private void trayicon_menu_servicemanager_Click(object sender, EventArgs e) { ToggleFormDisplay(); } /// /// When exit is clicked the quit method is called. /// /// /// private void trayicon_menu_exit_Click(object sender, EventArgs e) { QuitForm(); } #endregion #region Main menu events /// /// About menu. /// /// /// private void mainmenu_help_about_Click(object sender, EventArgs e) { MessageBox.Show(global::chc.servicemanagertray.Properties.Resources.About_Text, global::chc.servicemanagertray.Properties.Resources.About_Title, MessageBoxButtons.OK, MessageBoxIcon.Information); } /// /// Options menu /// /// /// private void mainmenu_tools_option_Click(object sender, EventArgs e) { MessageBox.Show("Not implemented at the moment.", global::chc.servicemanagertray.Properties.Resources.About_Title, MessageBoxButtons.OK, MessageBoxIcon.Warning); } #endregion #region Grid Events private void Servicegrid_CellMouseEnter(object sender, DataGridViewCellEventArgs e) { if (e.ColumnIndex < 0 || e.RowIndex < 0) { return; } var dataGridView = (sender as DataGridView); //Check the condition as per the requirement casting the cell value to the appropriate type servicegrid.Cursor = Cursors.Default; switch (e.ColumnIndex) { case 2: case 3: case 4: servicegrid.Cursor = Cursors.Hand; break; default: servicegrid.Cursor = Cursors.Default; break; } } /// /// Renders the info panel contents on the left. /// /// /// private void servicegrid_CurrentCellChanged(object sender, EventArgs e) { if (servicegrid.CurrentRow != null) { ServiceWrapper sw = servicegrid.CurrentRow.DataBoundItem as ServiceWrapper; infopanel_name.Text = sw.ServiceController.DisplayName; infopanel_description.Text = sw.Description; } } /// /// Selects the service row on right click also. /// /// /// private void servicegrid_MouseDown(object sender, MouseEventArgs e) { // Sets is so the right-mousedown will select a cell DataGridView.HitTestInfo hti = servicegrid.HitTest(e.X, e.Y); if (hti.RowIndex == -1) { return; } // Clear all the previously selected rows servicegrid.ClearSelection(); // Set as selected servicegrid.Rows[hti.RowIndex].Selected = true; } /// /// Updates the ui to make a service favorita or start/stop on the gui. /// /// /// private void servicegrid_CellClick(object sender, DataGridViewCellEventArgs e) { if (e.RowIndex < 0) { return; } var row = servicegrid.Rows[e.RowIndex]; var sw = row.DataBoundItem as ServiceWrapper; switch (row.Cells[e.ColumnIndex].OwningColumn.DataPropertyName) { case "IsFavorite": sw.IsFavorite = !sw.IsFavorite; this.BuildTrayMenu(); SaveSettings(); break; case "Status": case "IsRunning": ToolStripMenuItem menu_item = null; bool new_state = !sw.IsRunning; sw.IsRunning = new_state; if (IsElevated) { SetStatusUpdateNotificationTimer(sw, new_state ? ServiceControllerStatus.Running : ServiceControllerStatus.Stopped, menu_item); // find corresponding tray menu item foreach (ToolStripItem item in trayicon_menu.Items) { menu_item = item as ToolStripMenuItem; if (menu_item != null && menu_item.Tag == sw) { break; } menu_item = null; } break; } break; } } #endregion #region Generic Command Events /// /// Generic refresh command. /// /// /// private void generic_refreshbutton_Click(object sender, EventArgs e) { RefreshGrid(); } /// /// Generic exit command. /// /// /// private void generic_exit_Click(object sender, EventArgs e) { QuitForm(); } #endregion protected override void OnClientSizeChanged(EventArgs e) { if (this.WindowState != mLastState) { mLastState = this.WindowState; OnWindowStateChanged(e); } base.OnClientSizeChanged(e); } protected void OnWindowStateChanged(EventArgs e) { if (firstSave) { firstSave = false; return; } Properties.Settings.Default.FormWindowState = this.WindowState; } #region Tool Strip Events /// /// Starts the windows service manager. /// /// /// private void toolstrip_winservicemanager_Click(object sender, EventArgs e) { Process.Start("services.msc"); } /// /// Starts the windows task manager. /// /// /// private void toolstrip_taskmanager_Click(object sender, EventArgs e) { Process.Start("taskmgr.exe"); } #endregion } } ServiceManagerTray/ServiceManagerForm.resx000066400000000000000000001524301516075642300212510ustar00rootroot00000000000000 text/microsoft-resx 2.0 System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 178, 9 343, 17 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 AAAASUVORK5CYII= AAABAAEAICAAAAEAIACoEAAAFgAAACgAAAAgAAAAQAAAAAEAIAAAAAAAgBAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AACHh4cMh4eHH4eHhyKHh4cfh4eHGYeHhw+Hh4cHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACHh4cLh4eHKIeH h0WHh4cth4eHAYeHh0CamppNuLi4TZeXl02Tk5NNjY2NTYmJiU2Hh4dIh4eHIQAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACHh4cSh4eHNY+P j02+vr5NtbW1TZubm02Hh4c1m5ubTbi4uE3R0dFNsLCwTaysrE2oqKhNo6OjTZubm02Hh4dKh4eHC4eH hwmHh4crh4eHDgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACHh4cFh4eHPZSU lE2tra1NwcHBTdfX1028vLxNvLy8Taurq025ublNuLi4Tc3NzU2lpaVNo6OjTaOjo02lpaVNoaGhTZOT k02Hh4c6h4eHRJGRkU21tbVNh4eHO4eHhxuHh4cCAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIeH hxWXl5dNxMTETcTExE28vLxNy8vLTbOzs02+vr5NvLy8TaampmiQkJCUmpqampeXl5Sbm5uImpqacZSU lF6amppNoaGhTZeXl02Xl5dNm5ubTcvLy02fn59NlpaWTYeHhzgAAAAAAAAAAAAAAAAAAAAAAAAAAIeH hwqHh4cPkZGRI6GhoU27u7tNqampTZeXl2aYmJipiIiI7IuLi7apqalPiIiI4pqamv+4uLj/l5eX/5OT k/+NjY3/iYmJ/4iIiPKMjIyYn5+fTZubm02cnJxNy8vLTaampk2lpaVNh4eHOwAAAAAAAAAAAAAAAAAA AACHh4cUh4eHSpSUlE2hoaFNq6urTZeXl3eQkJDJj4+P/76+vv+1tbX/m5ub/42Njcmbm5v/uLi4/9HR 0f+wsLD/rKys/6ioqP+jo6P/m5ub/4eHh/mUlJRmkZGRYomJibKpqalvoqKiTaWlpU2bm5tIAAAAAAAA AAAAAAAAh4eHCoeHh0rX19dNy8vLTby8vFqIiIjZlJSU/62trf/BwcH/19fX/7y8vP+8vLz/q6ur/7m5 uf+4uLj/zc3N/6Wlpf+jo6P/o6Oj/6Wlpf+hoaH/k5OT/4uLi9OJiYnqkZGR/7W1tf+IiIjVkJCQjJCQ kE+Hh4cfh4eHGwAAAACHh4cSl5eXTeXl5U3Ly8tNo6OjfZeXl//ExMT/xMTE/7y8vP/Ly8v/s7Oz/76+ vv+8vLz/u7u7/6Wlpf/Nzc3/vr6+/76+vv+rq6v/mJiY/5qamv+hoaH/l5eX/5eXl/+bm5v/y8vL/5+f n/+Wlpb/iYmJz5ycnE2Hh4dEAAAAAKioqBqXl5dNvr6+ZJqamnGWlpaeoaGh/7u7u/+pqan/oaGh/9nZ 2f+ysrL/m5ub/6urq/+lpaX/vLy8//39/f/6+vr/+vr6//39/f//////tra2/5qamv+fn5//m5ub/5yc nP/Ly8v/pqam/6Wlpf+JiYnWwsLCTYmJiUoAAAAAubm5IIyMjHuIiIj5lJSU/6Ghof+rq6v/qamp/9fX 1//8/Pz/+vr6//39/f/x8fH/x8fH/8fHx//8/Pz/6+vr/+Li4v/g4OD/3d3d/+Pj4//z8/P/lpaW/5ub m/+Wlpb/k5OT/8XFxf+ioqL/paWl/5ubm/TLy8tNjIyMTAAAAACbm5s/h4eH+dfX1//Ly8v/ysrK/56e nv/z8/P/9/f3/+np6f/o6Oj/6Ojo/+7u7v/5+fn/+fn5/+vr6//w8PD/7e3t/+bm5v/i4uL/3Nzc//Dw 8P/U1NT/vLy8/9DQ0P/g4OD/2dnZ/5aWlv+hoaH/k5OT+pubm5SHh4eMAAAAAJCQkF6Xl5f/5eXl/8vL y//Kysr/n5+f//Pz8//u7u7/6enp/+jo6P/u7u7/9vb2//39/f/w8PD/6Ojo/9TU1P/W1tb/6enp//T0 9P/8/Pz/7u7u//Dw8P/5+fn/8fHx/+jo6P/z8/P/5ubm/56env+hoaH/nJyc/4eHh+oAAAAAr6+vaJeX l//a2tr/q6ur/6Kiov+bm5v/7e3t/+7u7v/x8fH/+fn5/+jo6P/BwcH/m5ub/5ubm/+cnJz/oqKi/5+f n/+ampr/lpaW/56env/Hx8f/8/Pz/+7u7v/c3Nz/1NTU/9PT0//t7e3/8/Pz/5qamv/CwsL/iYmJ+IuL iw6/v791kZGR/9zc3P/a2tr/6enp//z8/P/5+fn/9vb2//f39/+srKz/n5+f/7CwsP+8vLz/vLy8/7m5 uf+vr6//ra2t/7Kysv+vr6//q6ur/5+fn/+UlJT/vr6+//39/f/j4+P/09PT/9ra2v/r6+v/m5ub/8vL y/+MjIz+i4uLGbOzs3KUlJT/+fn5//n5+f/29vb/7u7u//b29v/t7e3/rKys9oyMjP/BwcH/wsLC/62t rf+cnJz/lpaW/6ioqP+lpaX/lJSU/5iYmP+jo6P/rKys/6ioqP+IiIj/u7u7/fb29v/l5eX/6enp/8fH x/+mpqb/y8vL/4iIiP+Tk5MaoaGhlra2tv/6+vr/8PDw//Dw8P/u7u7/+vr6/7CwsP6vr6+hjIyM/rOz s/+jo6P/v7+//+vr6////////f39////////////6enp/7m5uf+ampr/o6Oj/4eHh/+rq6uxs7Oz/vz8 /P/d3d3/6Ojo/76+vv+lpaX/iIiI/76+vgfHx8disrKy//f39//29vb/8PDw//b29v/Ly8v/sLCw28fH x02MjIz+m5ub/+Dg4P/8/Pz/9/f3//Hx8f/U1NT/09PT/+bm5v/5+fn/+vr6/93d3f+Wlpb/iIiI/5CQ kE2srKzG0dHR/ebm5v/j4+P/9/f3//z8/P+hoaH/i4uLMP///zzKysr/paWl//n5+f/x8fH/+vr6/62t rf+NjY3UsLCwTYyMjP7Nzc3/9/f3//z8/P/CwsL/sLCw/8jIyP/IyMj/uLi4/7i4uP/09PT/8/Pz/9bW 1v+MjIz/jY2NV6GhobCsrKz39vb2/9PT0//R0dH/7u7u/7a2tv+Li4tUAAAAAJCQkNWampr/1tbW//b2 9v/8/Pz/qKio/5+fn/+JiYnClJSU/vn5+f/z8/P/1NTU/8rKyvn///+0////of///8b////s09PT/7+/ v//09PT//f39/6mpqf+IiIjVoaGho5qamvL9/f3/09PT/9PT0//t7e3/wcHB/5OTk1aLi4sHjY2N7NbW 1v/8/Pz/8PDw//r6+v+zs7P/vLy8/7Kysv+Li4v/+vr6//b29v/ExMTxlpaWjK2trU2+vr5Nvr6+Tba2 tk2srKxun5+f5fz8/P/8/Pz/lpaW/5GRkf+wsLC8n5+f8fr6+v/g4OD/8/Pz/9TU1P+rq6v/vr6+GIuL iyusrKz2/f39//Dw8P/w8PD/9vb2/9HR0f+srKz/x8fH/6ioqP/U1NT/9PT0/+np6f+NjY3/iYmJ54mJ id6IiIjbiYmJ6YmJif/CwsL/7u7u/+vr6/+Tk5P/kJCQ/6ioqNW7u7vy8PDw//39/f+srKz/wsLC/93d 3ZUAAAAAAAAAAK+vr93p6en/9vb2//Hx8f/w8PD/+vr6/6Wlpf+wsLD/u7u7/56env/t7e3/9vb2/+3t 7f+4uLj/nJyc/5OTk/+vr6//4uLi//f39//6+vr/o6Oj/5eXl/+Pj4//lpaW8O7u7vvf39//6+vr/8vL y//ExMTS////AwAAAAAAAAAAx8fHkbCwsPzg4OD/9/f3//r6+v/39/f/7u7u/5ubm/+vr6//ra2t/5qa mv/Ozs7/+fn5//39/f////////////39/f/9/f3/2tra/56env+Wlpb/mJiY/5GRkf/Q0ND/8PDw/9TU 1P/c3Nz/+vr6/pCQkMSLi4sHAAAAAAAAAAAAAAAAn5+fPaysrLmpqan3u7u7//r6+v/39/f/7e3t/6Oj o/+YmJj/s7Oz/6ampv+Xl5f/ra2t/76+vv++vr7/tra2/5qamv+Xl5f/m5ub/5OTk/+UlJT/1NTU//T0 9P/c3Nz/3d3d/+7u7v+8vLzci4uLZwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJ+fnxCcnJzY/f39/+3t 7f/09PT//f39/9TU1P+enp7/kZGR/6Ghof+oqKj/qKio/6Wlpf+bm5v/lJSU/42Njf+RkZH/tbW1//Pz 8//z8/P/+vr6//Dw8Pzt7e3yvr6+2IuLi3EAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAi4uLCJCQ kMHt7e3z+fn5//Dw8P/u7u7/9/f3//39/f/x8fH/zc3N/7m5uf+zs7P/oqKi/7u7u//BwcH/4ODg//39 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 q/+5ubn/uLi4/83Nzf+lpaX/o6Oj/6Ojo/+lpaX/oaGh/5OTk/+Li4vTiYmJ6pGRkf+1tbX/iIiI1ZCQ kIyQkJBPh4eHH4eHhxsAAAAAh4eHEpeXl03l5eVNy8vLTaOjo32Xl5f/xMTE/8TExP+8vLz/y8vL/7Oz s/++vr7/vLy8/7u7u/+lpaX/zc3N/76+vv++vr7/q6ur/5iYmP+ampr/oaGh/5eXl/+Xl5f/m5ub/8vL y/+fn5//lpaW/4mJic+cnJxNh4eHRAAAAACoqKgal5eXTb6+vmSamppxlpaWnqGhof+7u7v/qamp/6Gh of/Z2dn/srKy/5ubm/+rq6v/paWl/7y8vP/9/f3/+vr6//r6+v/9/f3//////7a2tv+ampr/n5+f/5ub m/+cnJz/y8vL/6ampv+lpaX/iYmJ1sLCwk2JiYlKAAAAALm5uSCMjIx7iIiI+ZSUlP+hoaH/q6ur/6mp qf/X19f//Pz8//r6+v/9/f3/8fHx/8fHx//Hx8f//Pz8/+vr6//i4uL/4ODg/93d3f/j4+P/8/Pz/5aW lv+bm5v/lpaW/5OTk//FxcX/oqKi/6Wlpf+bm5v0y8vLTYyMjEwAAAAAm5ubP4eHh/nX19f/y8vL/8rK yv+enp7/8/Pz//f39//p6en/6Ojo/+jo6P/u7u7/+fn5//n5+f/r6+v/8PDw/+3t7f/m5ub/4uLi/9zc 3P/w8PD/1NTU/7y8vP/Q0ND/4ODg/9nZ2f+Wlpb/oaGh/5OTk/qbm5uUh4eHjAAAAACQkJBel5eX/+Xl 5f/Ly8v/ysrK/5+fn//z8/P/7u7u/+np6f/o6Oj/7u7u//b29v/9/f3/8PDw/+jo6P/U1NT/1tbW/+np 6f/09PT//Pz8/+7u7v/w8PD/+fn5//Hx8f/o6Oj/8/Pz/+bm5v+enp7/oaGh/5ycnP+Hh4fqAAAAAK+v r2iXl5f/2tra/6urq/+ioqL/m5ub/+3t7f/u7u7/8fHx//n5+f/o6Oj/wcHB/5ubm/+bm5v/nJyc/6Ki ov+fn5//mpqa/5aWlv+enp7/x8fH//Pz8//u7u7/3Nzc/9TU1P/T09P/7e3t//Pz8/+ampr/wsLC/4mJ ifiLi4sOv7+/dZGRkf/c3Nz/2tra/+np6f/8/Pz/+fn5//b29v/39/f/rKys/5+fn/+wsLD/vLy8/7y8 vP+5ubn/r6+v/62trf+ysrL/r6+v/6urq/+fn5//lJSU/76+vv/9/f3/4+Pj/9PT0//a2tr/6+vr/5ub m//Ly8v/jIyM/ouLixmzs7NylJSU//n5+f/5+fn/9vb2/+7u7v/29vb/7e3t/6ysrPaMjIz/wcHB/8LC wv+tra3/nJyc/5aWlv+oqKj/paWl/5SUlP+YmJj/o6Oj/6ysrP+oqKj/iIiI/7u7u/329vb/5eXl/+np 6f/Hx8f/pqam/8vLy/+IiIj/k5OTGqGhoZa2trb/+vr6//Dw8P/w8PD/7u7u//r6+v+wsLD+r6+voYyM jP6zs7P/o6Oj/7+/v//r6+v///////39/f///////////+np6f+5ubn/mpqa/6Ojo/+Hh4f/q6ursbOz s/78/Pz/3d3d/+jo6P++vr7/paWl/4iIiP++vr4Hx8fHYrKysv/39/f/9vb2//Dw8P/29vb/y8vL/7Cw sNvHx8dNjIyM/pubm//g4OD//Pz8//f39//x8fH/1NTU/9PT0//m5ub/+fn5//r6+v/d3d3/lpaW/4iI iP+QkJBNrKysxtHR0f3m5ub/4+Pj//f39//8/Pz/oaGh/4uLizD///88ysrK/6Wlpf/5+fn/8fHx//r6 +v+tra3/jY2N1LCwsE2MjIz+zc3N//f39//8/Pz/wsLC/7CwsP/IyMj/yMjI/7i4uP+4uLj/9PT0//Pz 8//W1tb/jIyM/42NjVehoaGwrKys9/b29v/T09P/0dHR/+7u7v+2trb/i4uLVAAAAACQkJDVmpqa/9bW 1v/29vb//Pz8/6ioqP+fn5//iYmJwpSUlP75+fn/8/Pz/9TU1P/Kysr5////tP///6H////G////7NPT 0/+/v7//9PT0//39/f+pqan/iIiI1aGhoaOampry/f39/9PT0//T09P/7e3t/8HBwf+Tk5NWi4uLB42N jezW1tb//Pz8//Dw8P/6+vr/s7Oz/7y8vP+ysrL/i4uL//r6+v/29vb/xMTE8ZaWloytra1Nvr6+Tb6+ vk22trZNrKysbp+fn+X8/Pz//Pz8/5aWlv+RkZH/sLCwvJ+fn/H6+vr/4ODg//Pz8//U1NT/q6ur/76+ vhiLi4srrKys9v39/f/w8PD/8PDw//b29v/R0dH/rKys/8fHx/+oqKj/1NTU//T09P/p6en/jY2N/4mJ ieeJiYneiIiI24mJiemJiYn/wsLC/+7u7v/r6+v/k5OT/5CQkP+oqKjVu7u78vDw8P/9/f3/rKys/8LC wv/d3d2VAAAAAAAAAACvr6/d6enp//b29v/x8fH/8PDw//r6+v+lpaX/sLCw/7u7u/+enp7/7e3t//b2 9v/t7e3/uLi4/5ycnP+Tk5P/r6+v/+Li4v/39/f/+vr6/6Ojo/+Xl5f/j4+P/5aWlvDu7u7739/f/+vr 6//Ly8v/xMTE0v///wMAAAAAAAAAAMfHx5GwsLD84ODg//f39//6+vr/9/f3/+7u7v+bm5v/r6+v/62t rf+ampr/zs7O//n5+f/9/f3////////////9/f3//f39/9ra2v+enp7/lpaW/5iYmP+RkZH/0NDQ//Dw 8P/U1NT/3Nzc//r6+v6QkJDEi4uLBwAAAAAAAAAAAAAAAJ+fnz2srKy5qamp97u7u//6+vr/9/f3/+3t 7f+jo6P/mJiY/7Ozs/+mpqb/l5eX/62trf++vr7/vr6+/7a2tv+ampr/l5eX/5ubm/+Tk5P/lJSU/9TU 1P/09PT/3Nzc/93d3f/u7u7/vLy83IuLi2cAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACfn58QnJyc2P39 /f/t7e3/9PT0//39/f/U1NT/np6e/5GRkf+hoaH/qKio/6ioqP+lpaX/m5ub/5SUlP+NjY3/kZGR/7W1 tf/z8/P/8/Pz//r6+v/w8PD87e3t8r6+vtiLi4txAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIuL iwiQkJDB7e3t8/n5+f/w8PD/7u7u//f39//9/f3/8fHx/83Nzf+5ubn/s7Oz/6Kiov+7u7v/wcHB/+Dg 4P/9/f3/+vr6/+Xl5f/6+vr/sLCw/6Kios6Li4ubi4uLTAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAIuLi02Li4udubm51ujo6PDo6Ojy2dnZ9ePj4/729vb/9vb2//r6+v/8/Pz//f39//r6 +v/8/Pz/9PT0/+Xl5f/o6Oj/8/Pz/+7u7viPj4+nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACLi4tGi4uLlIuLi5SLi4t0k5OTkNnZ2fL6+vr/9/f3//T0 9P/9/f3/09PT+K2trejNzc3p6Ojo8dra2uizs7PTjY2NwYuLi1AAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACLi4sljIyMwKam ps24uLjhwsLC4qamps2Li4twi4uLI4uLi16Li4uSi4uLfIuLiz2Li4sHAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AACLi4sEi4uLKIuLizqLi4tPi4uLKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAP//////+A///wAD//wAAD/wAAAH8AAAB8AAAAeAAAAHAAAAAQAA AAEAAAABAAAAAQAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAABgAAAAYAA AAHAAAAD8AAAB/AAAA/4AAB//gAAf//gAP//8H// 256, 17 452, 17 iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6 JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAC3klEQVQ4T5WSa0uTYRiA/QFFQRH0ISLK iuiMdFY7sEZqLWvUtKkra2KUNnUtbVurrXIt05na3Cmnm1aiZlnZ0exkpR3UYWTnogNC/YGCq3cL9hJU 0Ifr0/Nc130/L28U8N8E3Tutfc7t35+cUH/744W/MeDd9UKQGWw9yGV7Kt3HVUORQ5PJhNFoRK/XU1RU hE6nQ6vVkpeXR9CrYcCby8tzh/nS38inp6dpL1Nw71iKGDAYDFRXV4dxOp1hXC5XmH5PLp97zwg08q7L wetbdi6VbqDTuk4MhKY6qh2k2NdFZLfbHeapcwcfHzfwprOUl9etAjYulqznmiVRDIRWlpetRnIkNiJ7 PJ4wPVVqPnTXhuXBy2YBCxdsyVw0rhADMquU7AYV2/xpxB2Yz2JjDPML5xCjncmDchXvu7wMtpt51mbg 2XkjbVYZrYWLfwWkR+P7suozqHpUQnm3lZL7ForvmTDf3svsXdO4cyyVt7cdgqhnoKWAr3fSOV+cSGN+ zFDUSlucTx1Ip6LHxqG7BvQ389Fdz0FzNRt9h5bpO6bQYZXzqqOCYJOWd+2ZEEyk3bac+pzpvzaINy8I pnk2RKbu69RReCMP7bVcpmZN4ooliRdXS+g9lUNvvZo3bRm0HpTiy44Wv0Hc7oXIK1ez1r6KGTlTmbZ9 MlPUE4nOnECbUcLzS8U8qcuix7uZnpOZtJoluLeOFwMqlYp43SKW7Y7F5/NRW1sbpq6ujrOFscL7Dwji Fh44U3noSqdl/wocqrFiQKlUUlNTw9L8JRExhN/v50zBPIItBkHeRFelnPtVCppNy6hQjhIDCoXit6kh MUQgECCQO4u+xj30C/Q25POoJpvmfUuxp4wYigr9uhqNBrlcTnJyMjKZjKSkJBISEpBKpUgkEjxZ0Zwq mEuLPpYLFilXjqyhyRhH6cZh4gb/wpU5bozw3oWVaaO3lKeOLC5TDPeXK0f9KN047OtPBu2lZ5wUs0wA AAAASUVORK5CYII= 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 7GpSjJoAAAAASUVORK5CYII= True iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6 JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAACk0lEQVQ4T3VTT0s6URQVP4B7P4Lfw00b Qd1EtdEEMalok6Qk9mcISWiRLkqJorKoBA0slMpSUytHU1SKrIV/GBJy5Xbm/u59oGX0E67DzHvn3HPO fU8GAH/W09PTZDabTaTT6QT+Jv/aQzX0UiqVVIVCQYFgOYI77XYbWq0WnJ2ddS4uLuTn5+eKUCik+on5 CfYjWHx8fBQymYwymUwKHx8f8P7+DggUIpGIEomEo6MjcX9/3z9E8Pz87KjX6/D19QVvb2+A4N7NzY1U q9WgUqlAOByWENxDZSAIAlxeXsL6+rpjQIBdF9GrRCQEeH19ZUR9Anovl8tABLlcDhYWFqS5ubnFAQHV /f09R5vz+Tw8PDxAPB6HQCAAe3t7pAjQFtzd3bHubreb6+NkyMhj9+bt7W335eUFeJ6Hq6srWF5ezths NrXT6VRvbGxkUqkUI6J1j8fTXVtba66srPAyBIufn59MLnXGIOHw8BBWV1fV/S7b29tqzABwL1NGaihc q9UqynDGYqPRYB5pgTpg4rC5uTkg8Pl86uPjY6aALKBatt9gMIgyHAmPEpu7u7vdYrHISCiHnZ2dzNbW ltrr9TIL5J+sxWIxMJlM3dHR0aZer+cHIaJEDoNkQdETDxKcnJwAzp19w7FCNBpl3ywWy3eI9Hd6eroY DAalarXKwDQuPFgsEyIiRfT9+vqarc3MzEhms/l7jAcHBw6SRycPiQDT7XEcJ1Fo5Ht6elpCUI/WyLvL 5QKdTvd9kKiWlpb8s7OzIvoT5ufnlUgiUDdSYDQahbGxMSX6FjQajTgyMjJ8lPuFBKqpqSmF3W6XI2GH JOM9gPHx8Q4SyCcmJhRI8Pdl+l0oexI7JrRabQLl/uc6g+wfcVve9+tNVSkAAAAASUVORK5CYII= True True 616, 17 iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6 JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAACUUlEQVQ4T4WT60uTcRTHB/szYnbRkkJ6 YYWs+81kLW9kBq02f67pyEsDy5yLNX3c3KVd3E3NsWFJRiUMjEZUVtvYcF2WI+i170Twbfju23keWuzR RS++D+P8zjnfL+fDJAD+q6tPmoZaZxTScm/bCuXUPN1QUEyciZR7+/uj/6NWduutxqB7pUpoFtrXrz1t weWoEo3heuifdaDzsQpHzYd9pcO8hE/fUqdc/0Yd51JG+HMORL4HEV0JYTrvQ/DzQ3iXxzGetqAt1ISa vuox0YLedx2y7tfX455lK+Z+zGDqmxeP8n6Evrjhy9nhynCwps148MmIS+4G7NXtcYoWUGSD+cNdzBam EMkH4c7aoJtX47RNzkfGocGDaPYpcNFVjyrtrkDpsLBA/aIt4UhZBEdnmsN514nVk1ydu7SpuquyUMl2 xkprRUmuzDau0ZU36cq/ztqPbRy3HOG2Nu3WVJgqVDukZMYIKSOkTBk4x8iMSejK7ILnFKPIjCIziswG Mt1SQ/KmaesiMuPIbOOP2SaZrYkaiiKkMUJaKK0RUjeZrXoyNqJix+Dibf4+CdEgL0IasGZNGEneA0UG RQZFRs9LLVwpTkDqyIyifbKFR2oQDRNSJ5c2Yv5nVEAaK0yKkI4mhwWk2rkbONCzL05IZaIFhHTs/vsB xFbCAtLwVy8mck64slaMLA2jd0GHVr8S+/VVcUIq52dEC3hRZF9/vAv654xHCkKKOlMtau/UrFPkBCE1 EFJZsX/bAl78H4euLDriv1S2SEilhHSo3JtYkPwGhKyImaaNa1UAAAAASUVORK5CYII= 17, 17 540, 17 iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8 YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAJtSURBVDhPldPrS1phHAdwob/DRbO10WTQBcMuc0LWKu2C 6SDJfDLDYRdZrGUuu5y08syyUqvVcrVYoxZIwWy3tlKK2qUlg73uXQS9Hb37To8PhdsY6/Pux+98eQ7P 9xze/7jzrLxDtaRKouPFyX1FkZJR6Qwd/+7epo5velNnblitCWpW1Mc1zyuhnC2DwieD8YUO9fMa5HZl uenjiUxv68XG19oAE7JgbG8IM988mD3wYmrfDc+nRxjZHcBAuAfV3nIIm9L6aSzu7rqOb3ilCQzv2rHw fRqTX0fweH8M3s8uuPcGwW4zsIdt6N60QO4qhsCQ4qTRuIY1jdn24T7mIpOY2ffAteOAYVGLWw4xcm3Z yGq/gQp3CUpZGVJJ8jiNnatdVgaHQj3cic4wAwlbcFjQJ3LRNSdVL4gIdJf8dEykfHr7qGJKdFo0Kv0p ceSd5PdkM3R1JqWOb+WpeEnapWqini8nVdMlRD4uJYVsPuHJvYWkyCUhEoeYiG3ZJKNdSGKdt27prTR/ RjWnYBSe4pPYYaJu0Wl+d8YRXSVq+aj3G9drI3TkKJ+UuhQe2eHwtiPayiDa11qj9yMM0vW55g0ybt+x onfrAbTL1Yh+hYi+Mkwv9WBDDFfp0HYf1BOVuN6cZqaxONM7nZMJW7D4Y5ar1B+ZSKi0b6uTq1S/UIt0 05WAQCfg02hcw1pN/8P3bfAf+LhKfV9GMLrnBLtjR+9GJ5pWDKgaK8M1Y2pAUJ8sprFE6jm5uyXQCOMS QSFbgJtMDnKsmchsSz8WNl0NpjVeNv9x8u9iP47UnpdwiRcSq1HcldVBx3/g8X4Bj5QzBMM+BqgAAAAA SUVORK5CYII= iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8 YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAL4SURBVDhPfVJdSJNRGD5aKN1IN0WCZPQDaTd1FVhh0JLo JqZkklHkTEUdWyTkNNnaHK2lphJTUXNjTav5k0oz/Jub7sfNTfAPxZ8Lpwwn88qbKPd0zudX0YU9cPi+ 833v87zP+5xDDoLX6xU5HA7rxMSEdXR0VMR//j9mZ2eT3G53HIBol8sV2tzcxMbGBjo7O0NyuTzaYrHE dXd3J/Hl/2J6errZarXueTyeoM1mi7fb7cG1tTWsrq6ip6cn2NXVFU+Fgh0dHXsGg6GZp+2DkstXVlYQ DoexvLwMSt6lHSMLCwuYm5sDe6fkXToWgsEgBgYGoNVqy3k6IZOTkxWVlZURJsIIS0tLnNBvAbafmZkB E6AjQiaTRaRSaQVP3wcNTM2Kp6amQAUxODiIlpYWULvMEZxOJ+hoXHeNRqPmaYRQRd/4+HhgaGhoZ3Fx ET6fD8PDw1Aqlc7S0lIBtS+oqqpy0hpOiP2n+x3qOEBrfIQFt7W1xdllnf1+P0wmE1QqlYDvQZqamgTS D9fxpO0S54y5YeGmpqbucQLr6+vcjOwH69Db24v6+vo/AjqdTlCgT8HL/vu413geY2NjXD0noNfrfdXV 1YHW1tYdehqcCMtBYroGsTz5Zz5dOfKLkRc9d/HZW4cS8x3crDmBzMzMQEZGho/vQQg9JjUNkguKPYuM l/HFr0OX7x1H/OitRe1wCQwuLQpMaUh8FfuDgERxZLPZXMHOen5+niOz4xLReRm5ZlCC19+KoLbkQdH/ GMqv+Wi0q/BAfxXHCsl3TsBoNJaz5NnNa29vZxdnN7s5CZ88tTC5q2FwavHeoaEihWiwK5FnuoVzz2JC CU/JEU6AQaFQNLNQcnNzg2VlZfHChtO4XZcAwdvjuPLmKB62pUBnUyDHmIYzz2PDZ8Uklqf+hUQiSRKL xXHUQTRdoZGREfT19SE7Ozt0QRW1/chwA6dk0XPJchLDUw5GcXGxKCsryyoUCq3p6emiRBnZPll+CERO DvMlFIT8AvqOGRVDHNtXAAAAAElFTkSuQmCC iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8 YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAK1SURBVDhPhVLfT5JhGP22/oCu+lu86K6rbtq6MuvKTTdZ jCShoSOhTdOpgwFakDE0lrpkQxCwhBkgoPDx8UvgAwT5/NmaWa6ttVoXp/d9w5ar2bOdu+c85zzPc7j/ VSaTmUmlUj/i8TgikQhCoRBWVlbg8XjgcrkWWm1/lyAIlwlcjUYDBwfv0GjuodGQUKeoN3Fy8glzc3No tZ8vono9nU4fSpKE4+NjpPgcEhtpxOI8orEkotFNVGsNOBwOcKIofi8Wi8jn8yCKSCaTiMViCIfDCAaD CAQCzO7i4iJTnJycgtlsgVipw2azgaPk09PPkKR9hqa0hx1qd2f3t90awYeTj0zxbTiB0FoMZXGbDDKD y2azjNiu9RB4ceuhFx2Dy+jQ+XBb78edRwHc6FtApdpgigaDAePj4yiVa5iYmADH8zxTpUSZMY67pg3I LUkopnj0PhWgtGXZAFGsM8XVUBRvViMoFisYHh4Gl0gk2IU7Bn2QmzehmEzh3pM0lNYM7j/LQfW8wAac Kb5MzqL91U0UyACdTgeO/pa+h9qlxN4WsY8Q1fYtPHCU2IBi6ZfitRdX0TbVhnxBRH9/Pzh6aXoouiu1 a3ZXYV6qtbANzazIBpwp+vwheH0h5PIlqFQqcH6/Hzvk4rTpIpTK20zRuxzEkncV2VwJCoUCnNvtxv7+ IcrlCraKZWSyBRaYdRKYZCoDnhdIkARyxCpRVMNNyO6l16SvCJlMBm5+ft7gdDoFu90uWK1WwWg0Num/ p6enodfrv9G9R0ZH8XhkFDOzTkakODp6j+7u7vNRNplMvWNjY2vR9TizqNVqv2o0GvvAwMCWWq2GUqmE XC5HT08Purq60NnZWWlROY78+IrFYiH/LUPa3WcplEg+iM0vrZaLi2T90tDQkEAvTRTxhyLfavlHcdxP PWV/TP5gqAUAAAAASUVORK5CYII= iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8 YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAALkSURBVDhPnZLbb8thGMd7xY2EIBIuJA5DFucszp1TqrGN Gg3duYzVhE3XVW3arnRY18wOZuu6tda1NSxsYxjGnDfMYVszMWfikCX8AyQfv5bsFzcinuRz8775fJ/n efNK/qcCNbtsPc6U7w8qN3/7ffRv1efe9UKQ6W8+yOXSeDqPJgz8vpJILBYLZrMZo9FIbm4uBoMBvV5P VlYWAbeWPncmL88d5ktvA5+enqK1RMU9e5wYYDKZqKqqCuF0OkNUV1eH6HVl8rn7tEAD7zocvL5VyqXi jbTZ1ooBwa6OKgdxpesH5ZqamhBPnTv5+LieNzeLeXnNJmDnYtEG2vKixYDgyMqSNcgKpYOyy+UK0VWR xoeHdSG5/7JVIJ8L9liazCvEAIVNTnq9mm2+JCIPzGexOYL5OXOI0M/kfpma9x1u+lutPGsx8ey8mRab gibdvF8BqwqX9mhOpFDxqIiyhzaKOvMpuGfBensfs3eHc+dIPG9vOwTRSF9jNl/vJHO+IJoGXcSARGaX etL8yZR32Tl014Txhg7DtQy0V9MxtuuZvnMq7TYlr9rLCZzR8641FQLRtNpX4M0I/zVBpHVBIMm1cbBr 3k0DOdez0LdlMk0zmSv5Mby4WkT3yQy6T6TxpiWF5oNyPJow8Q0i9yxEeWwN60pXMyNjGuE7pjA1bRJh qRNoMct4fqmAJ14NXe7NdB1Ppdkqo3LreDFArVaz1LCI5XukeDwe6urqQni9XppypML+BwRxC/ed8Tyo TqZx/0oqE8aKAYmJidTW1rJMt2RQDOLz+TidPY9Ao0mQE+g4pqSzQsVZy3LKE0aKASqV6o+uQTGI3+/H nzmLnoa99Ap01+t4VJvO2bxl2OOGD0iCX1er1aJUKomNjUWhUBATE0NUVBRyuRyZTIZLE8bJ7Lk0GqVc yJdzpXAtZ8yR2DcNESf4W1VsnzjGkTRuYXnS6C1l8SMKSlTDfHmJo34Ubxr69SccQwaA5ROfGwAAAABJ RU5ErkJggg== 86 True AAABAAEAICAAAAEAIACoEAAAFgAAACgAAAAgAAAAQAAAAAEAIAAAAAAAgBAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AACHh4cMh4eHH4eHhyKHh4cfh4eHGYeHhw+Hh4cHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACHh4cLh4eHKIeH h0WHh4cth4eHAYeHh0CamppNuLi4TZeXl02Tk5NNjY2NTYmJiU2Hh4dIh4eHIQAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACHh4cSh4eHNY+P j02+vr5NtbW1TZubm02Hh4c1m5ubTbi4uE3R0dFNsLCwTaysrE2oqKhNo6OjTZubm02Hh4dKh4eHC4eH hwmHh4crh4eHDgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACHh4cFh4eHPZSU lE2tra1NwcHBTdfX1028vLxNvLy8Taurq025ublNuLi4Tc3NzU2lpaVNo6OjTaOjo02lpaVNoaGhTZOT k02Hh4c6h4eHRJGRkU21tbVNh4eHO4eHhxuHh4cCAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIeH hxWXl5dNxMTETcTExE28vLxNy8vLTbOzs02+vr5NvLy8TaampmiQkJCUmpqampeXl5Sbm5uImpqacZSU lF6amppNoaGhTZeXl02Xl5dNm5ubTcvLy02fn59NlpaWTYeHhzgAAAAAAAAAAAAAAAAAAAAAAAAAAIeH hwqHh4cPkZGRI6GhoU27u7tNqampTZeXl2aYmJipiIiI7IuLi7apqalPiIiI4pqamv+4uLj/l5eX/5OT k/+NjY3/iYmJ/4iIiPKMjIyYn5+fTZubm02cnJxNy8vLTaampk2lpaVNh4eHOwAAAAAAAAAAAAAAAAAA AACHh4cUh4eHSpSUlE2hoaFNq6urTZeXl3eQkJDJj4+P/76+vv+1tbX/m5ub/42Njcmbm5v/uLi4/9HR 0f+wsLD/rKys/6ioqP+jo6P/m5ub/4eHh/mUlJRmkZGRYomJibKpqalvoqKiTaWlpU2bm5tIAAAAAAAA AAAAAAAAh4eHCoeHh0rX19dNy8vLTby8vFqIiIjZlJSU/62trf/BwcH/19fX/7y8vP+8vLz/q6ur/7m5 uf+4uLj/zc3N/6Wlpf+jo6P/o6Oj/6Wlpf+hoaH/k5OT/4uLi9OJiYnqkZGR/7W1tf+IiIjVkJCQjJCQ kE+Hh4cfh4eHGwAAAACHh4cSl5eXTeXl5U3Ly8tNo6OjfZeXl//ExMT/xMTE/7y8vP/Ly8v/s7Oz/76+ vv+8vLz/u7u7/6Wlpf/Nzc3/vr6+/76+vv+rq6v/mJiY/5qamv+hoaH/l5eX/5eXl/+bm5v/y8vL/5+f n/+Wlpb/iYmJz5ycnE2Hh4dEAAAAAKioqBqXl5dNvr6+ZJqamnGWlpaeoaGh/7u7u/+pqan/oaGh/9nZ 2f+ysrL/m5ub/6urq/+lpaX/vLy8//39/f/6+vr/+vr6//39/f//////tra2/5qamv+fn5//m5ub/5yc nP/Ly8v/pqam/6Wlpf+JiYnWwsLCTYmJiUoAAAAAubm5IIyMjHuIiIj5lJSU/6Ghof+rq6v/qamp/9fX 1//8/Pz/+vr6//39/f/x8fH/x8fH/8fHx//8/Pz/6+vr/+Li4v/g4OD/3d3d/+Pj4//z8/P/lpaW/5ub m/+Wlpb/k5OT/8XFxf+ioqL/paWl/5ubm/TLy8tNjIyMTAAAAACbm5s/h4eH+dfX1//Ly8v/ysrK/56e nv/z8/P/9/f3/+np6f/o6Oj/6Ojo/+7u7v/5+fn/+fn5/+vr6//w8PD/7e3t/+bm5v/i4uL/3Nzc//Dw 8P/U1NT/vLy8/9DQ0P/g4OD/2dnZ/5aWlv+hoaH/k5OT+pubm5SHh4eMAAAAAJCQkF6Xl5f/5eXl/8vL y//Kysr/n5+f//Pz8//u7u7/6enp/+jo6P/u7u7/9vb2//39/f/w8PD/6Ojo/9TU1P/W1tb/6enp//T0 9P/8/Pz/7u7u//Dw8P/5+fn/8fHx/+jo6P/z8/P/5ubm/56env+hoaH/nJyc/4eHh+oAAAAAr6+vaJeX l//a2tr/q6ur/6Kiov+bm5v/7e3t/+7u7v/x8fH/+fn5/+jo6P/BwcH/m5ub/5ubm/+cnJz/oqKi/5+f n/+ampr/lpaW/56env/Hx8f/8/Pz/+7u7v/c3Nz/1NTU/9PT0//t7e3/8/Pz/5qamv/CwsL/iYmJ+IuL iw6/v791kZGR/9zc3P/a2tr/6enp//z8/P/5+fn/9vb2//f39/+srKz/n5+f/7CwsP+8vLz/vLy8/7m5 uf+vr6//ra2t/7Kysv+vr6//q6ur/5+fn/+UlJT/vr6+//39/f/j4+P/09PT/9ra2v/r6+v/m5ub/8vL y/+MjIz+i4uLGbOzs3KUlJT/+fn5//n5+f/29vb/7u7u//b29v/t7e3/rKys9oyMjP/BwcH/wsLC/62t rf+cnJz/lpaW/6ioqP+lpaX/lJSU/5iYmP+jo6P/rKys/6ioqP+IiIj/u7u7/fb29v/l5eX/6enp/8fH x/+mpqb/y8vL/4iIiP+Tk5MaoaGhlra2tv/6+vr/8PDw//Dw8P/u7u7/+vr6/7CwsP6vr6+hjIyM/rOz s/+jo6P/v7+//+vr6////////f39////////////6enp/7m5uf+ampr/o6Oj/4eHh/+rq6uxs7Oz/vz8 /P/d3d3/6Ojo/76+vv+lpaX/iIiI/76+vgfHx8disrKy//f39//29vb/8PDw//b29v/Ly8v/sLCw28fH x02MjIz+m5ub/+Dg4P/8/Pz/9/f3//Hx8f/U1NT/09PT/+bm5v/5+fn/+vr6/93d3f+Wlpb/iIiI/5CQ kE2srKzG0dHR/ebm5v/j4+P/9/f3//z8/P+hoaH/i4uLMP///zzKysr/paWl//n5+f/x8fH/+vr6/62t rf+NjY3UsLCwTYyMjP7Nzc3/9/f3//z8/P/CwsL/sLCw/8jIyP/IyMj/uLi4/7i4uP/09PT/8/Pz/9bW 1v+MjIz/jY2NV6GhobCsrKz39vb2/9PT0//R0dH/7u7u/7a2tv+Li4tUAAAAAJCQkNWampr/1tbW//b2 9v/8/Pz/qKio/5+fn/+JiYnClJSU/vn5+f/z8/P/1NTU/8rKyvn///+0////of///8b////s09PT/7+/ v//09PT//f39/6mpqf+IiIjVoaGho5qamvL9/f3/09PT/9PT0//t7e3/wcHB/5OTk1aLi4sHjY2N7NbW 1v/8/Pz/8PDw//r6+v+zs7P/vLy8/7Kysv+Li4v/+vr6//b29v/ExMTxlpaWjK2trU2+vr5Nvr6+Tba2 tk2srKxun5+f5fz8/P/8/Pz/lpaW/5GRkf+wsLC8n5+f8fr6+v/g4OD/8/Pz/9TU1P+rq6v/vr6+GIuL iyusrKz2/f39//Dw8P/w8PD/9vb2/9HR0f+srKz/x8fH/6ioqP/U1NT/9PT0/+np6f+NjY3/iYmJ54mJ id6IiIjbiYmJ6YmJif/CwsL/7u7u/+vr6/+Tk5P/kJCQ/6ioqNW7u7vy8PDw//39/f+srKz/wsLC/93d 3ZUAAAAAAAAAAK+vr93p6en/9vb2//Hx8f/w8PD/+vr6/6Wlpf+wsLD/u7u7/56env/t7e3/9vb2/+3t 7f+4uLj/nJyc/5OTk/+vr6//4uLi//f39//6+vr/o6Oj/5eXl/+Pj4//lpaW8O7u7vvf39//6+vr/8vL y//ExMTS////AwAAAAAAAAAAx8fHkbCwsPzg4OD/9/f3//r6+v/39/f/7u7u/5ubm/+vr6//ra2t/5qa mv/Ozs7/+fn5//39/f////////////39/f/9/f3/2tra/56env+Wlpb/mJiY/5GRkf/Q0ND/8PDw/9TU 1P/c3Nz/+vr6/pCQkMSLi4sHAAAAAAAAAAAAAAAAn5+fPaysrLmpqan3u7u7//r6+v/39/f/7e3t/6Oj o/+YmJj/s7Oz/6ampv+Xl5f/ra2t/76+vv++vr7/tra2/5qamv+Xl5f/m5ub/5OTk/+UlJT/1NTU//T0 9P/c3Nz/3d3d/+7u7v+8vLzci4uLZwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJ+fnxCcnJzY/f39/+3t 7f/09PT//f39/9TU1P+enp7/kZGR/6Ghof+oqKj/qKio/6Wlpf+bm5v/lJSU/42Njf+RkZH/tbW1//Pz 8//z8/P/+vr6//Dw8Pzt7e3yvr6+2IuLi3EAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAi4uLCJCQ kMHt7e3z+fn5//Dw8P/u7u7/9/f3//39/f/x8fH/zc3N/7m5uf+zs7P/oqKi/7u7u//BwcH/4ODg//39 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 q/+5ubn/uLi4/83Nzf+lpaX/o6Oj/6Ojo/+lpaX/oaGh/5OTk/+Li4vTiYmJ6pGRkf+1tbX/iIiI1ZCQ kIyQkJBPh4eHH4eHhxsAAAAAh4eHEpeXl03l5eVNy8vLTaOjo32Xl5f/xMTE/8TExP+8vLz/y8vL/7Oz s/++vr7/vLy8/7u7u/+lpaX/zc3N/76+vv++vr7/q6ur/5iYmP+ampr/oaGh/5eXl/+Xl5f/m5ub/8vL y/+fn5//lpaW/4mJic+cnJxNh4eHRAAAAACoqKgal5eXTb6+vmSamppxlpaWnqGhof+7u7v/qamp/6Gh of/Z2dn/srKy/5ubm/+rq6v/paWl/7y8vP/9/f3/+vr6//r6+v/9/f3//////7a2tv+ampr/n5+f/5ub m/+cnJz/y8vL/6ampv+lpaX/iYmJ1sLCwk2JiYlKAAAAALm5uSCMjIx7iIiI+ZSUlP+hoaH/q6ur/6mp qf/X19f//Pz8//r6+v/9/f3/8fHx/8fHx//Hx8f//Pz8/+vr6//i4uL/4ODg/93d3f/j4+P/8/Pz/5aW lv+bm5v/lpaW/5OTk//FxcX/oqKi/6Wlpf+bm5v0y8vLTYyMjEwAAAAAm5ubP4eHh/nX19f/y8vL/8rK yv+enp7/8/Pz//f39//p6en/6Ojo/+jo6P/u7u7/+fn5//n5+f/r6+v/8PDw/+3t7f/m5ub/4uLi/9zc 3P/w8PD/1NTU/7y8vP/Q0ND/4ODg/9nZ2f+Wlpb/oaGh/5OTk/qbm5uUh4eHjAAAAACQkJBel5eX/+Xl 5f/Ly8v/ysrK/5+fn//z8/P/7u7u/+np6f/o6Oj/7u7u//b29v/9/f3/8PDw/+jo6P/U1NT/1tbW/+np 6f/09PT//Pz8/+7u7v/w8PD/+fn5//Hx8f/o6Oj/8/Pz/+bm5v+enp7/oaGh/5ycnP+Hh4fqAAAAAK+v r2iXl5f/2tra/6urq/+ioqL/m5ub/+3t7f/u7u7/8fHx//n5+f/o6Oj/wcHB/5ubm/+bm5v/nJyc/6Ki ov+fn5//mpqa/5aWlv+enp7/x8fH//Pz8//u7u7/3Nzc/9TU1P/T09P/7e3t//Pz8/+ampr/wsLC/4mJ ifiLi4sOv7+/dZGRkf/c3Nz/2tra/+np6f/8/Pz/+fn5//b29v/39/f/rKys/5+fn/+wsLD/vLy8/7y8 vP+5ubn/r6+v/62trf+ysrL/r6+v/6urq/+fn5//lJSU/76+vv/9/f3/4+Pj/9PT0//a2tr/6+vr/5ub m//Ly8v/jIyM/ouLixmzs7NylJSU//n5+f/5+fn/9vb2/+7u7v/29vb/7e3t/6ysrPaMjIz/wcHB/8LC wv+tra3/nJyc/5aWlv+oqKj/paWl/5SUlP+YmJj/o6Oj/6ysrP+oqKj/iIiI/7u7u/329vb/5eXl/+np 6f/Hx8f/pqam/8vLy/+IiIj/k5OTGqGhoZa2trb/+vr6//Dw8P/w8PD/7u7u//r6+v+wsLD+r6+voYyM jP6zs7P/o6Oj/7+/v//r6+v///////39/f///////////+np6f+5ubn/mpqa/6Ojo/+Hh4f/q6ursbOz s/78/Pz/3d3d/+jo6P++vr7/paWl/4iIiP++vr4Hx8fHYrKysv/39/f/9vb2//Dw8P/29vb/y8vL/7Cw sNvHx8dNjIyM/pubm//g4OD//Pz8//f39//x8fH/1NTU/9PT0//m5ub/+fn5//r6+v/d3d3/lpaW/4iI iP+QkJBNrKysxtHR0f3m5ub/4+Pj//f39//8/Pz/oaGh/4uLizD///88ysrK/6Wlpf/5+fn/8fHx//r6 +v+tra3/jY2N1LCwsE2MjIz+zc3N//f39//8/Pz/wsLC/7CwsP/IyMj/yMjI/7i4uP+4uLj/9PT0//Pz 8//W1tb/jIyM/42NjVehoaGwrKys9/b29v/T09P/0dHR/+7u7v+2trb/i4uLVAAAAACQkJDVmpqa/9bW 1v/29vb//Pz8/6ioqP+fn5//iYmJwpSUlP75+fn/8/Pz/9TU1P/Kysr5////tP///6H////G////7NPT 0/+/v7//9PT0//39/f+pqan/iIiI1aGhoaOampry/f39/9PT0//T09P/7e3t/8HBwf+Tk5NWi4uLB42N jezW1tb//Pz8//Dw8P/6+vr/s7Oz/7y8vP+ysrL/i4uL//r6+v/29vb/xMTE8ZaWloytra1Nvr6+Tb6+ vk22trZNrKysbp+fn+X8/Pz//Pz8/5aWlv+RkZH/sLCwvJ+fn/H6+vr/4ODg//Pz8//U1NT/q6ur/76+ vhiLi4srrKys9v39/f/w8PD/8PDw//b29v/R0dH/rKys/8fHx/+oqKj/1NTU//T09P/p6en/jY2N/4mJ ieeJiYneiIiI24mJiemJiYn/wsLC/+7u7v/r6+v/k5OT/5CQkP+oqKjVu7u78vDw8P/9/f3/rKys/8LC wv/d3d2VAAAAAAAAAACvr6/d6enp//b29v/x8fH/8PDw//r6+v+lpaX/sLCw/7u7u/+enp7/7e3t//b2 9v/t7e3/uLi4/5ycnP+Tk5P/r6+v/+Li4v/39/f/+vr6/6Ojo/+Xl5f/j4+P/5aWlvDu7u7739/f/+vr 6//Ly8v/xMTE0v///wMAAAAAAAAAAMfHx5GwsLD84ODg//f39//6+vr/9/f3/+7u7v+bm5v/r6+v/62t rf+ampr/zs7O//n5+f/9/f3////////////9/f3//f39/9ra2v+enp7/lpaW/5iYmP+RkZH/0NDQ//Dw 8P/U1NT/3Nzc//r6+v6QkJDEi4uLBwAAAAAAAAAAAAAAAJ+fnz2srKy5qamp97u7u//6+vr/9/f3/+3t 7f+jo6P/mJiY/7Ozs/+mpqb/l5eX/62trf++vr7/vr6+/7a2tv+ampr/l5eX/5ubm/+Tk5P/lJSU/9TU 1P/09PT/3Nzc/93d3f/u7u7/vLy83IuLi2cAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACfn58QnJyc2P39 /f/t7e3/9PT0//39/f/U1NT/np6e/5GRkf+hoaH/qKio/6ioqP+lpaX/m5ub/5SUlP+NjY3/kZGR/7W1 tf/z8/P/8/Pz//r6+v/w8PD87e3t8r6+vtiLi4txAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIuL iwiQkJDB7e3t8/n5+f/w8PD/7u7u//f39//9/f3/8fHx/83Nzf+5ubn/s7Oz/6Kiov+7u7v/wcHB/+Dg 4P/9/f3/+vr6/+Xl5f/6+vr/sLCw/6Kios6Li4ubi4uLTAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAIuLi02Li4udubm51ujo6PDo6Ojy2dnZ9ePj4/729vb/9vb2//r6+v/8/Pz//f39//r6 +v/8/Pz/9PT0/+Xl5f/o6Oj/8/Pz/+7u7viPj4+nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACLi4tGi4uLlIuLi5SLi4t0k5OTkNnZ2fL6+vr/9/f3//T0 9P/9/f3/09PT+K2trejNzc3p6Ojo8dra2uizs7PTjY2NwYuLi1AAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACLi4sljIyMwKam ps24uLjhwsLC4qamps2Li4twi4uLI4uLi16Li4uSi4uLfIuLiz2Li4sHAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AACLi4sEi4uLKIuLizqLi4tPi4uLKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAP//////+A///wAD//wAAD/wAAAH8AAAB8AAAAeAAAAHAAAAAQAA AAEAAAABAAAAAQAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAABgAAAAYAA AAHAAAAD8AAAB/AAAA/4AAB//gAAf//gAP//8H// ServiceManagerTray/ServiceManagerTray.snk000066400000000000000000000011241516075642300210700ustar00rootroot00000000000000$RSA2%rKѼEc2%pI8Ti?;|]]xt:^66=_4:9`w m|v?9:pįA[rl${{(Qv1N&\͖KCP\]0W+;Q7<7aG%XT{U`=KQ.>ti$ /// Decorates the ServiceController. /// internal class ServiceWrapper { /// /// Favoroite field, fovaorites are displayed on the context menu of the notify icon. /// private bool favorite = false; /// /// Consturcts a new service wrapper. /// /// /// public ServiceWrapper(ServiceController service, bool isFavorite) { this.ServiceController = service; this.favorite = isFavorite; LoadDescription(); } private void LoadDescription() { ManagementObject wmiService; wmiService = new ManagementObject("Win32_Service.Name='" + ServiceController.ServiceName + "'"); wmiService.Get(); Description = wmiService["Description"] == null ? "" : wmiService["Description"].ToString(); } /// /// The description of the service in the registry /// public string Description { get; private set; } /// /// Property for favrotie. /// public bool IsFavorite { get { return this.favorite; } set { if (!value) { Properties.Settings.Default.Favorites.Remove(this.ServiceController.ServiceName); } else { Properties.Settings.Default.Favorites.Add(this.ServiceController.ServiceName); } favorite = value; } } /// /// Property for is running, changing the state stops/starts the service. /// public bool IsRunning { get { return this.ServiceController.Status == ServiceControllerStatus.Running; } set { if (value) { this.Start(); } else { this.Stop(); } } } /// /// Starts, stops the service. /// public void Start() { if (!ServiceManagerForm.IsElevated) { ServiceManagerForm.RequestElevatation(ServiceController.ServiceName, true); return; } ServiceController.Refresh(); if (ServiceController.Status == ServiceControllerStatus.Stopped) { ServiceController.Start(); } else { } } /// /// Stops the service. /// public void Stop() { if (!ServiceManagerForm.IsElevated) { ServiceManagerForm.RequestElevatation(ServiceController.ServiceName, false); return; } ServiceController.Refresh(); if (ServiceController.Status == ServiceControllerStatus.Running) { ServiceController.Stop(); } } /// /// Display name /// public string DisplayName { get { return this.ServiceController.DisplayName; } } /// /// Status /// public ServiceControllerStatus Status { get { return this.ServiceController.Status; } } /// /// The service controllers. /// public ServiceController ServiceController { get; private set; } } } ServiceManagerTray/SortableBindingList.cs000066400000000000000000000055311516075642300210570ustar00rootroot00000000000000using System; using System.Collections.Generic; using System.ComponentModel; namespace chc.servicemanagertray { public class SortableBindingList : BindingList { private readonly Dictionary> comparers; private bool isSorted; private ListSortDirection listSortDirection; private PropertyDescriptor propertyDescriptor; public SortableBindingList() : base(new List()) { this.comparers = new Dictionary>(); } public SortableBindingList(IEnumerable enumeration) : base(new List(enumeration)) { this.comparers = new Dictionary>(); } protected override bool SupportsSortingCore { get { return true; } } protected override bool IsSortedCore { get { return this.isSorted; } } protected override PropertyDescriptor SortPropertyCore { get { return this.propertyDescriptor; } } protected override ListSortDirection SortDirectionCore { get { return this.listSortDirection; } } protected override bool SupportsSearchingCore { get { return true; } } protected override void ApplySortCore(PropertyDescriptor property, ListSortDirection direction) { List itemsList = (List)this.Items; Type propertyType = property.PropertyType; PropertyComparer comparer; if (!this.comparers.TryGetValue(propertyType, out comparer)) { comparer = new PropertyComparer(property, direction); this.comparers.Add(propertyType, comparer); } comparer.SetPropertyAndDirection(property, direction); itemsList.Sort(comparer); this.propertyDescriptor = property; this.listSortDirection = direction; this.isSorted = true; this.OnListChanged(new ListChangedEventArgs(ListChangedType.Reset, -1)); } protected override void RemoveSortCore() { this.isSorted = false; this.propertyDescriptor = base.SortPropertyCore; this.listSortDirection = base.SortDirectionCore; this.OnListChanged(new ListChangedEventArgs(ListChangedType.Reset, -1)); } protected override int FindCore(PropertyDescriptor property, object key) { int count = this.Count; for (int i = 0; i < count; ++i) { T element = this[i]; if (property.GetValue(element).Equals(key)) { return i; } } return -1; } } } ServiceManagerTray/app.config000066400000000000000000000041111516075642300165660ustar00rootroot00000000000000
False DisplayName Ascending Normal False ServiceManagerTray/app.manifest000066400000000000000000000023151516075642300171330ustar00rootroot00000000000000 ServiceManagerTraySolution.sln000066400000000000000000000131551516075642300171020ustar00rootroot00000000000000 Microsoft Visual Studio Solution File, Format Version 12.00 # Visual Studio 15 VisualStudioVersion = 15.0.26430.6 MinimumVisualStudioVersion = 10.0.40219.1 Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Service Manager Tray", "ServiceManagerTray\Service Manager Tray.csproj", "{5ACD07B8-8874-4C8F-B6A6-66E646218FA3}" EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution", "Solution", "{4FF65FD8-2617-46B1-8948-E3AF7AA7774E}" ProjectSection(SolutionItems) = preProject .gitignore = .gitignore LICENSE.md = LICENSE.md README.md = README.md EndProjectSection EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Artifacts", "Artifacts", "{5C37A80C-A391-404E-8870-A8B12A8A3FB3}" ProjectSection(SolutionItems) = preProject Artifacts\Application.JPG = Artifacts\Application.JPG Artifacts\pad_file.xml = Artifacts\pad_file.xml Artifacts\patrik-laszlo.cml = Artifacts\patrik-laszlo.cml Artifacts\tray.png = Artifacts\tray.png Artifacts\window.png = Artifacts\window.png Artifacts\windows_service_manager.pml = Artifacts\windows_service_manager.pml EndProjectSection EndProject Project("{54435603-DBB4-11D2-8724-00A0C9A8B90C}") = "Service Manager Tray Installer", "Service-Manager-Tray-Installer\Service-Manager-Tray-Installer.vdproj", "{7C19D956-9B9E-4CE0-BBE7-21DBD0179734}" EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution CD_ROM|Any CPU = CD_ROM|Any CPU CD_ROM|x64 = CD_ROM|x64 CD_ROM|x86 = CD_ROM|x86 Debug|Any CPU = Debug|Any CPU Debug|x64 = Debug|x64 Debug|x86 = Debug|x86 DVD-5|Any CPU = DVD-5|Any CPU DVD-5|x64 = DVD-5|x64 DVD-5|x86 = DVD-5|x86 Release|Any CPU = Release|Any CPU Release|x64 = Release|x64 Release|x86 = Release|x86 SingleImage|Any CPU = SingleImage|Any CPU SingleImage|x64 = SingleImage|x64 SingleImage|x86 = SingleImage|x86 EndGlobalSection GlobalSection(ProjectConfigurationPlatforms) = postSolution {5ACD07B8-8874-4C8F-B6A6-66E646218FA3}.CD_ROM|Any CPU.ActiveCfg = Release|Any CPU {5ACD07B8-8874-4C8F-B6A6-66E646218FA3}.CD_ROM|Any CPU.Build.0 = Release|Any CPU {5ACD07B8-8874-4C8F-B6A6-66E646218FA3}.CD_ROM|x64.ActiveCfg = Release|x64 {5ACD07B8-8874-4C8F-B6A6-66E646218FA3}.CD_ROM|x64.Build.0 = Release|x64 {5ACD07B8-8874-4C8F-B6A6-66E646218FA3}.CD_ROM|x86.ActiveCfg = Release|x86 {5ACD07B8-8874-4C8F-B6A6-66E646218FA3}.CD_ROM|x86.Build.0 = Release|x86 {5ACD07B8-8874-4C8F-B6A6-66E646218FA3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {5ACD07B8-8874-4C8F-B6A6-66E646218FA3}.Debug|Any CPU.Build.0 = Debug|Any CPU {5ACD07B8-8874-4C8F-B6A6-66E646218FA3}.Debug|x64.ActiveCfg = Debug|x64 {5ACD07B8-8874-4C8F-B6A6-66E646218FA3}.Debug|x64.Build.0 = Debug|x64 {5ACD07B8-8874-4C8F-B6A6-66E646218FA3}.Debug|x86.ActiveCfg = Debug|x86 {5ACD07B8-8874-4C8F-B6A6-66E646218FA3}.Debug|x86.Build.0 = Debug|x86 {5ACD07B8-8874-4C8F-B6A6-66E646218FA3}.DVD-5|Any CPU.ActiveCfg = Debug|Any CPU {5ACD07B8-8874-4C8F-B6A6-66E646218FA3}.DVD-5|Any CPU.Build.0 = Debug|Any CPU {5ACD07B8-8874-4C8F-B6A6-66E646218FA3}.DVD-5|x64.ActiveCfg = Debug|x64 {5ACD07B8-8874-4C8F-B6A6-66E646218FA3}.DVD-5|x64.Build.0 = Debug|x64 {5ACD07B8-8874-4C8F-B6A6-66E646218FA3}.DVD-5|x86.ActiveCfg = Debug|x86 {5ACD07B8-8874-4C8F-B6A6-66E646218FA3}.DVD-5|x86.Build.0 = Debug|x86 {5ACD07B8-8874-4C8F-B6A6-66E646218FA3}.Release|Any CPU.ActiveCfg = Release|Any CPU {5ACD07B8-8874-4C8F-B6A6-66E646218FA3}.Release|Any CPU.Build.0 = Release|Any CPU {5ACD07B8-8874-4C8F-B6A6-66E646218FA3}.Release|x64.ActiveCfg = Release|x64 {5ACD07B8-8874-4C8F-B6A6-66E646218FA3}.Release|x64.Build.0 = Release|x64 {5ACD07B8-8874-4C8F-B6A6-66E646218FA3}.Release|x86.ActiveCfg = Release|x86 {5ACD07B8-8874-4C8F-B6A6-66E646218FA3}.Release|x86.Build.0 = Release|x86 {5ACD07B8-8874-4C8F-B6A6-66E646218FA3}.SingleImage|Any CPU.ActiveCfg = Release|Any CPU {5ACD07B8-8874-4C8F-B6A6-66E646218FA3}.SingleImage|Any CPU.Build.0 = Release|Any CPU {5ACD07B8-8874-4C8F-B6A6-66E646218FA3}.SingleImage|x64.ActiveCfg = Release|x64 {5ACD07B8-8874-4C8F-B6A6-66E646218FA3}.SingleImage|x64.Build.0 = Release|x64 {5ACD07B8-8874-4C8F-B6A6-66E646218FA3}.SingleImage|x86.ActiveCfg = Release|x86 {5ACD07B8-8874-4C8F-B6A6-66E646218FA3}.SingleImage|x86.Build.0 = Release|x86 {7C19D956-9B9E-4CE0-BBE7-21DBD0179734}.CD_ROM|Any CPU.ActiveCfg = Release {7C19D956-9B9E-4CE0-BBE7-21DBD0179734}.CD_ROM|x64.ActiveCfg = Release {7C19D956-9B9E-4CE0-BBE7-21DBD0179734}.CD_ROM|x86.ActiveCfg = Release {7C19D956-9B9E-4CE0-BBE7-21DBD0179734}.Debug|Any CPU.ActiveCfg = Debug {7C19D956-9B9E-4CE0-BBE7-21DBD0179734}.Debug|x64.ActiveCfg = Debug {7C19D956-9B9E-4CE0-BBE7-21DBD0179734}.Debug|x86.ActiveCfg = Debug {7C19D956-9B9E-4CE0-BBE7-21DBD0179734}.DVD-5|Any CPU.ActiveCfg = Debug {7C19D956-9B9E-4CE0-BBE7-21DBD0179734}.DVD-5|x64.ActiveCfg = Debug {7C19D956-9B9E-4CE0-BBE7-21DBD0179734}.DVD-5|x86.ActiveCfg = Debug {7C19D956-9B9E-4CE0-BBE7-21DBD0179734}.Release|Any CPU.ActiveCfg = Release {7C19D956-9B9E-4CE0-BBE7-21DBD0179734}.Release|x64.ActiveCfg = Release {7C19D956-9B9E-4CE0-BBE7-21DBD0179734}.Release|x86.ActiveCfg = Release {7C19D956-9B9E-4CE0-BBE7-21DBD0179734}.SingleImage|Any CPU.ActiveCfg = Release {7C19D956-9B9E-4CE0-BBE7-21DBD0179734}.SingleImage|x64.ActiveCfg = Release {7C19D956-9B9E-4CE0-BBE7-21DBD0179734}.SingleImage|x86.ActiveCfg = Release EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE EndGlobalSection GlobalSection(NestedProjects) = preSolution {5C37A80C-A391-404E-8870-A8B12A8A3FB3} = {4FF65FD8-2617-46B1-8948-E3AF7AA7774E} EndGlobalSection GlobalSection(ExtensibilityGlobals) = postSolution VisualSVNWorkingCopyRoot = . EndGlobalSection EndGlobal _config.yml000066400000000000000000000000311516075642300132100ustar00rootroot00000000000000theme: jekyll-theme-slate