gpodder-3.9.0/0000755000016000001710000000000012654461626014275 5ustar jenkinsjenkins00000000000000gpodder-3.9.0/COPYING0000644000016000001710000010451312654461624015332 0ustar jenkinsjenkins00000000000000 GNU GENERAL PUBLIC LICENSE Version 3, 29 June 2007 Copyright (C) 2007 Free Software Foundation, Inc. Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. Preamble The GNU General Public License is a free, copyleft license for software and other kinds of works. The licenses for most software and other practical works are designed to take away your freedom to share and change the works. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change all versions of a program--to make sure it remains free software for all its users. We, the Free Software Foundation, use the GNU General Public License for most of our software; it applies also to any other work released this way by its authors. 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 them 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 prevent others from denying you these rights or asking you to surrender the rights. Therefore, you have certain responsibilities if you distribute copies of the software, or if you modify it: responsibilities to respect the freedom of others. For example, if you distribute copies of such a program, whether gratis or for a fee, you must pass on to the recipients the same freedoms that you received. 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. Developers that use the GNU GPL protect your rights with two steps: (1) assert copyright on the software, and (2) offer you this License giving you legal permission to copy, distribute and/or modify it. For the developers' and authors' protection, the GPL clearly explains that there is no warranty for this free software. For both users' and authors' sake, the GPL requires that modified versions be marked as changed, so that their problems will not be attributed erroneously to authors of previous versions. Some devices are designed to deny users access to install or run modified versions of the software inside them, although the manufacturer can do so. This is fundamentally incompatible with the aim of protecting users' freedom to change the software. The systematic pattern of such abuse occurs in the area of products for individuals to use, which is precisely where it is most unacceptable. Therefore, we have designed this version of the GPL to prohibit the practice for those products. If such problems arise substantially in other domains, we stand ready to extend this provision to those domains in future versions of the GPL, as needed to protect the freedom of users. Finally, every program is threatened constantly by software patents. States should not allow patents to restrict development and use of software on general-purpose computers, but in those that do, we wish to avoid the special danger that patents applied to a free program could make it effectively proprietary. To prevent this, the GPL assures that patents cannot be used to render the program non-free. The precise terms and conditions for copying, distribution and modification follow. TERMS AND CONDITIONS 0. Definitions. "This License" refers to version 3 of the GNU General Public License. "Copyright" also means copyright-like laws that apply to other kinds of works, such as semiconductor masks. "The Program" refers to any copyrightable work licensed under this License. Each licensee is addressed as "you". "Licensees" and "recipients" may be individuals or organizations. To "modify" a work means to copy from or adapt all or part of the work in a fashion requiring copyright permission, other than the making of an exact copy. The resulting work is called a "modified version" of the earlier work or a work "based on" the earlier work. A "covered work" means either the unmodified Program or a work based on the Program. To "propagate" a work means to do anything with it that, without permission, would make you directly or secondarily liable for infringement under applicable copyright law, except executing it on a computer or modifying a private copy. Propagation includes copying, distribution (with or without modification), making available to the public, and in some countries other activities as well. To "convey" a work means any kind of propagation that enables other parties to make or receive copies. Mere interaction with a user through a computer network, with no transfer of a copy, is not conveying. An interactive user interface displays "Appropriate Legal Notices" to the extent that it includes a convenient and prominently visible feature that (1) displays an appropriate copyright notice, and (2) tells the user that there is no warranty for the work (except to the extent that warranties are provided), that licensees may convey the work under this License, and how to view a copy of this License. If the interface presents a list of user commands or options, such as a menu, a prominent item in the list meets this criterion. 1. Source Code. The "source code" for a work means the preferred form of the work for making modifications to it. "Object code" means any non-source form of a work. A "Standard Interface" means an interface that either is an official standard defined by a recognized standards body, or, in the case of interfaces specified for a particular programming language, one that is widely used among developers working in that language. The "System Libraries" of an executable work include anything, other than the work as a whole, that (a) is included in the normal form of packaging a Major Component, but which is not part of that Major Component, and (b) serves only to enable use of the work with that Major Component, or to implement a Standard Interface for which an implementation is available to the public in source code form. A "Major Component", in this context, means a major essential component (kernel, window system, and so on) of the specific operating system (if any) on which the executable work runs, or a compiler used to produce the work, or an object code interpreter used to run it. The "Corresponding Source" for a work in object code form means all the source code needed to generate, install, and (for an executable work) run the object code and to modify the work, including scripts to control those activities. However, it does not include the work's System Libraries, or general-purpose tools or generally available free programs which are used unmodified in performing those activities but which are not part of the work. For example, Corresponding Source includes interface definition files associated with source files for the work, and the source code for shared libraries and dynamically linked subprograms that the work is specifically designed to require, such as by intimate data communication or control flow between those subprograms and other parts of the work. The Corresponding Source need not include anything that users can regenerate automatically from other parts of the Corresponding Source. The Corresponding Source for a work in source code form is that same work. 2. Basic Permissions. All rights granted under this License are granted for the term of copyright on the Program, and are irrevocable provided the stated conditions are met. This License explicitly affirms your unlimited permission to run the unmodified Program. The output from running a covered work is covered by this License only if the output, given its content, constitutes a covered work. This License acknowledges your rights of fair use or other equivalent, as provided by copyright law. You may make, run and propagate covered works that you do not convey, without conditions so long as your license otherwise remains in force. You may convey covered works to others for the sole purpose of having them make modifications exclusively for you, or provide you with facilities for running those works, provided that you comply with the terms of this License in conveying all material for which you do not control copyright. Those thus making or running the covered works for you must do so exclusively on your behalf, under your direction and control, on terms that prohibit them from making any copies of your copyrighted material outside their relationship with you. Conveying under any other circumstances is permitted solely under the conditions stated below. Sublicensing is not allowed; section 10 makes it unnecessary. 3. Protecting Users' Legal Rights From Anti-Circumvention Law. No covered work shall be deemed part of an effective technological measure under any applicable law fulfilling obligations under article 11 of the WIPO copyright treaty adopted on 20 December 1996, or similar laws prohibiting or restricting circumvention of such measures. When you convey a covered work, you waive any legal power to forbid circumvention of technological measures to the extent such circumvention is effected by exercising rights under this License with respect to the covered work, and you disclaim any intention to limit operation or modification of the work as a means of enforcing, against the work's users, your or third parties' legal rights to forbid circumvention of technological measures. 4. Conveying Verbatim Copies. You may convey 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; keep intact all notices stating that this License and any non-permissive terms added in accord with section 7 apply to the code; keep intact all notices of the absence of any warranty; and give all recipients a copy of this License along with the Program. You may charge any price or no price for each copy that you convey, and you may offer support or warranty protection for a fee. 5. Conveying Modified Source Versions. You may convey a work based on the Program, or the modifications to produce it from the Program, in the form of source code under the terms of section 4, provided that you also meet all of these conditions: a) The work must carry prominent notices stating that you modified it, and giving a relevant date. b) The work must carry prominent notices stating that it is released under this License and any conditions added under section 7. This requirement modifies the requirement in section 4 to "keep intact all notices". c) You must license the entire work, as a whole, under this License to anyone who comes into possession of a copy. This License will therefore apply, along with any applicable section 7 additional terms, to the whole of the work, and all its parts, regardless of how they are packaged. This License gives no permission to license the work in any other way, but it does not invalidate such permission if you have separately received it. d) If the work has interactive user interfaces, each must display Appropriate Legal Notices; however, if the Program has interactive interfaces that do not display Appropriate Legal Notices, your work need not make them do so. A compilation of a covered work with other separate and independent works, which are not by their nature extensions of the covered work, and which are not combined with it such as to form a larger program, in or on a volume of a storage or distribution medium, is called an "aggregate" if the compilation and its resulting copyright are not used to limit the access or legal rights of the compilation's users beyond what the individual works permit. Inclusion of a covered work in an aggregate does not cause this License to apply to the other parts of the aggregate. 6. Conveying Non-Source Forms. You may convey a covered work in object code form under the terms of sections 4 and 5, provided that you also convey the machine-readable Corresponding Source under the terms of this License, in one of these ways: a) Convey the object code in, or embodied in, a physical product (including a physical distribution medium), accompanied by the Corresponding Source fixed on a durable physical medium customarily used for software interchange. b) Convey the object code in, or embodied in, a physical product (including a physical distribution medium), accompanied by a written offer, valid for at least three years and valid for as long as you offer spare parts or customer support for that product model, to give anyone who possesses the object code either (1) a copy of the Corresponding Source for all the software in the product that is covered by this License, on a durable physical medium customarily used for software interchange, for a price no more than your reasonable cost of physically performing this conveying of source, or (2) access to copy the Corresponding Source from a network server at no charge. c) Convey individual copies of the object code with a copy of the written offer to provide the Corresponding Source. This alternative is allowed only occasionally and noncommercially, and only if you received the object code with such an offer, in accord with subsection 6b. d) Convey the object code by offering access from a designated place (gratis or for a charge), and offer equivalent access to the Corresponding Source in the same way through the same place at no further charge. You need not require recipients to copy the Corresponding Source along with the object code. If the place to copy the object code is a network server, the Corresponding Source may be on a different server (operated by you or a third party) that supports equivalent copying facilities, provided you maintain clear directions next to the object code saying where to find the Corresponding Source. Regardless of what server hosts the Corresponding Source, you remain obligated to ensure that it is available for as long as needed to satisfy these requirements. e) Convey the object code using peer-to-peer transmission, provided you inform other peers where the object code and Corresponding Source of the work are being offered to the general public at no charge under subsection 6d. A separable portion of the object code, whose source code is excluded from the Corresponding Source as a System Library, need not be included in conveying the object code work. A "User Product" is either (1) a "consumer product", which means any tangible personal property which is normally used for personal, family, or household purposes, or (2) anything designed or sold for incorporation into a dwelling. In determining whether a product is a consumer product, doubtful cases shall be resolved in favor of coverage. For a particular product received by a particular user, "normally used" refers to a typical or common use of that class of product, regardless of the status of the particular user or of the way in which the particular user actually uses, or expects or is expected to use, the product. A product is a consumer product regardless of whether the product has substantial commercial, industrial or non-consumer uses, unless such uses represent the only significant mode of use of the product. "Installation Information" for a User Product means any methods, procedures, authorization keys, or other information required to install and execute modified versions of a covered work in that User Product from a modified version of its Corresponding Source. The information must suffice to ensure that the continued functioning of the modified object code is in no case prevented or interfered with solely because modification has been made. If you convey an object code work under this section in, or with, or specifically for use in, a User Product, and the conveying occurs as part of a transaction in which the right of possession and use of the User Product is transferred to the recipient in perpetuity or for a fixed term (regardless of how the transaction is characterized), the Corresponding Source conveyed under this section must be accompanied by the Installation Information. But this requirement does not apply if neither you nor any third party retains the ability to install modified object code on the User Product (for example, the work has been installed in ROM). The requirement to provide Installation Information does not include a requirement to continue to provide support service, warranty, or updates for a work that has been modified or installed by the recipient, or for the User Product in which it has been modified or installed. Access to a network may be denied when the modification itself materially and adversely affects the operation of the network or violates the rules and protocols for communication across the network. Corresponding Source conveyed, and Installation Information provided, in accord with this section must be in a format that is publicly documented (and with an implementation available to the public in source code form), and must require no special password or key for unpacking, reading or copying. 7. Additional Terms. "Additional permissions" are terms that supplement the terms of this License by making exceptions from one or more of its conditions. Additional permissions that are applicable to the entire Program shall be treated as though they were included in this License, to the extent that they are valid under applicable law. If additional permissions apply only to part of the Program, that part may be used separately under those permissions, but the entire Program remains governed by this License without regard to the additional permissions. When you convey a copy of a covered work, you may at your option remove any additional permissions from that copy, or from any part of it. (Additional permissions may be written to require their own removal in certain cases when you modify the work.) You may place additional permissions on material, added by you to a covered work, for which you have or can give appropriate copyright permission. Notwithstanding any other provision of this License, for material you add to a covered work, you may (if authorized by the copyright holders of that material) supplement the terms of this License with terms: a) Disclaiming warranty or limiting liability differently from the terms of sections 15 and 16 of this License; or b) Requiring preservation of specified reasonable legal notices or author attributions in that material or in the Appropriate Legal Notices displayed by works containing it; or c) Prohibiting misrepresentation of the origin of that material, or requiring that modified versions of such material be marked in reasonable ways as different from the original version; or d) Limiting the use for publicity purposes of names of licensors or authors of the material; or e) Declining to grant rights under trademark law for use of some trade names, trademarks, or service marks; or f) Requiring indemnification of licensors and authors of that material by anyone who conveys the material (or modified versions of it) with contractual assumptions of liability to the recipient, for any liability that these contractual assumptions directly impose on those licensors and authors. All other non-permissive additional terms are considered "further restrictions" within the meaning of section 10. If the Program as you received it, or any part of it, contains a notice stating that it is governed by this License along with a term that is a further restriction, you may remove that term. If a license document contains a further restriction but permits relicensing or conveying under this License, you may add to a covered work material governed by the terms of that license document, provided that the further restriction does not survive such relicensing or conveying. If you add terms to a covered work in accord with this section, you must place, in the relevant source files, a statement of the additional terms that apply to those files, or a notice indicating where to find the applicable terms. Additional terms, permissive or non-permissive, may be stated in the form of a separately written license, or stated as exceptions; the above requirements apply either way. 8. Termination. You may not propagate or modify a covered work except as expressly provided under this License. Any attempt otherwise to propagate or modify it is void, and will automatically terminate your rights under this License (including any patent licenses granted under the third paragraph of section 11). However, if you cease all violation of this License, then your license from a particular copyright holder is reinstated (a) provisionally, unless and until the copyright holder explicitly and finally terminates your license, and (b) permanently, if the copyright holder fails to notify you of the violation by some reasonable means prior to 60 days after the cessation. Moreover, your license from a particular copyright holder is reinstated permanently if the copyright holder notifies you of the violation by some reasonable means, this is the first time you have received notice of violation of this License (for any work) from that copyright holder, and you cure the violation prior to 30 days after your receipt of the notice. Termination of your rights under this section does not terminate the licenses of parties who have received copies or rights from you under this License. If your rights have been terminated and not permanently reinstated, you do not qualify to receive new licenses for the same material under section 10. 9. Acceptance Not Required for Having Copies. You are not required to accept this License in order to receive or run a copy of the Program. Ancillary propagation of a covered work occurring solely as a consequence of using peer-to-peer transmission to receive a copy likewise does not require acceptance. However, nothing other than this License grants you permission to propagate or modify any covered work. These actions infringe copyright if you do not accept this License. Therefore, by modifying or propagating a covered work, you indicate your acceptance of this License to do so. 10. Automatic Licensing of Downstream Recipients. Each time you convey a covered work, the recipient automatically receives a license from the original licensors, to run, modify and propagate that work, subject to this License. You are not responsible for enforcing compliance by third parties with this License. An "entity transaction" is a transaction transferring control of an organization, or substantially all assets of one, or subdividing an organization, or merging organizations. If propagation of a covered work results from an entity transaction, each party to that transaction who receives a copy of the work also receives whatever licenses to the work the party's predecessor in interest had or could give under the previous paragraph, plus a right to possession of the Corresponding Source of the work from the predecessor in interest, if the predecessor has it or can get it with reasonable efforts. You may not impose any further restrictions on the exercise of the rights granted or affirmed under this License. For example, you may not impose a license fee, royalty, or other charge for exercise of rights granted under this License, and you may not initiate litigation (including a cross-claim or counterclaim in a lawsuit) alleging that any patent claim is infringed by making, using, selling, offering for sale, or importing the Program or any portion of it. 11. Patents. A "contributor" is a copyright holder who authorizes use under this License of the Program or a work on which the Program is based. The work thus licensed is called the contributor's "contributor version". A contributor's "essential patent claims" are all patent claims owned or controlled by the contributor, whether already acquired or hereafter acquired, that would be infringed by some manner, permitted by this License, of making, using, or selling its contributor version, but do not include claims that would be infringed only as a consequence of further modification of the contributor version. For purposes of this definition, "control" includes the right to grant patent sublicenses in a manner consistent with the requirements of this License. Each contributor grants you a non-exclusive, worldwide, royalty-free patent license under the contributor's essential patent claims, to make, use, sell, offer for sale, import and otherwise run, modify and propagate the contents of its contributor version. In the following three paragraphs, a "patent license" is any express agreement or commitment, however denominated, not to enforce a patent (such as an express permission to practice a patent or covenant not to sue for patent infringement). To "grant" such a patent license to a party means to make such an agreement or commitment not to enforce a patent against the party. If you convey a covered work, knowingly relying on a patent license, and the Corresponding Source of the work is not available for anyone to copy, free of charge and under the terms of this License, through a publicly available network server or other readily accessible means, then you must either (1) cause the Corresponding Source to be so available, or (2) arrange to deprive yourself of the benefit of the patent license for this particular work, or (3) arrange, in a manner consistent with the requirements of this License, to extend the patent license to downstream recipients. "Knowingly relying" means you have actual knowledge that, but for the patent license, your conveying the covered work in a country, or your recipient's use of the covered work in a country, would infringe one or more identifiable patents in that country that you have reason to believe are valid. If, pursuant to or in connection with a single transaction or arrangement, you convey, or propagate by procuring conveyance of, a covered work, and grant a patent license to some of the parties receiving the covered work authorizing them to use, propagate, modify or convey a specific copy of the covered work, then the patent license you grant is automatically extended to all recipients of the covered work and works based on it. A patent license is "discriminatory" if it does not include within the scope of its coverage, prohibits the exercise of, or is conditioned on the non-exercise of one or more of the rights that are specifically granted under this License. You may not convey a covered work if you are a party to an arrangement with a third party that is in the business of distributing software, under which you make payment to the third party based on the extent of your activity of conveying the work, and under which the third party grants, to any of the parties who would receive the covered work from you, a discriminatory patent license (a) in connection with copies of the covered work conveyed by you (or copies made from those copies), or (b) primarily for and in connection with specific products or compilations that contain the covered work, unless you entered into that arrangement, or that patent license was granted, prior to 28 March 2007. Nothing in this License shall be construed as excluding or limiting any implied license or other defenses to infringement that may otherwise be available to you under applicable patent law. 12. No Surrender of Others' Freedom. If 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 convey a covered work so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not convey it at all. For example, if you agree to terms that obligate you to collect a royalty for further conveying from those to whom you convey the Program, the only way you could satisfy both those terms and this License would be to refrain entirely from conveying the Program. 13. Use with the GNU Affero General Public License. Notwithstanding any other provision of this License, you have permission to link or combine any covered work with a work licensed under version 3 of the GNU Affero General Public License into a single combined work, and to convey the resulting work. The terms of this License will continue to apply to the part which is the covered work, but the special requirements of the GNU Affero General Public License, section 13, concerning interaction through a network will apply to the combination as such. 14. Revised Versions of this License. The Free Software Foundation may publish revised and/or new versions of the GNU 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 that a certain numbered version of the GNU General Public License "or any later version" applies to it, you have the option of following the terms and conditions either of that numbered version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of the GNU General Public License, you may choose any version ever published by the Free Software Foundation. If the Program specifies that a proxy can decide which future versions of the GNU General Public License can be used, that proxy's public statement of acceptance of a version permanently authorizes you to choose that version for the Program. Later license versions may give you additional or different permissions. However, no additional obligations are imposed on any author or copyright holder as a result of your choosing to follow a later version. 15. Disclaimer of Warranty. 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. 16. Limitation of Liability. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS 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. 17. Interpretation of Sections 15 and 16. If the disclaimer of warranty and limitation of liability provided above cannot be given local legal effect according to their terms, reviewing courts shall apply local law that most closely approximates an absolute waiver of all civil liability in connection with the Program, unless a warranty or assumption of liability accompanies a copy of the Program in return for a fee. END OF TERMS AND CONDITIONS How to Apply These Terms to Your New Programs If you develop a new program, and you want it to be of the greatest possible use to the public, the best way to achieve this is to make it free software which everyone can redistribute and change under these terms. To do so, attach the following notices to the program. It is safest to attach them to the start of each source file to most effectively state the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found. Copyright (C) This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . Also add information on how to contact you by electronic and paper mail. If the program does terminal interaction, make it output a short notice like this when it starts in an interactive mode: Copyright (C) This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. This is free software, and you are welcome to redistribute it under certain conditions; type `show c' for details. The hypothetical commands `show w' and `show c' should show the appropriate parts of the General Public License. Of course, your program's commands might be different; for a GUI interface, you would use an "about box". You should also get your employer (if you work as a programmer) or school, if any, to sign a "copyright disclaimer" for the program, if necessary. For more information on this, and how to apply and follow the GNU GPL, see . The GNU General Public License does not permit incorporating your program into proprietary programs. If your program is a subroutine library, you may consider it more useful to permit linking proprietary applications with the library. If this is what you want to do, use the GNU Lesser General Public License instead of this License. But first, please read . gpodder-3.9.0/tools/0000755000016000001710000000000012654461626015435 5ustar jenkinsjenkins00000000000000gpodder-3.9.0/tools/fake-dbus-module/0000755000016000001710000000000012654461626020561 5ustar jenkinsjenkins00000000000000gpodder-3.9.0/tools/fake-dbus-module/dbus/0000755000016000001710000000000012654461626021516 5ustar jenkinsjenkins00000000000000gpodder-3.9.0/tools/fake-dbus-module/dbus/exceptions.py0000644000016000001710000000013212654461624024243 0ustar jenkinsjenkins00000000000000class DBusException(Exception): pass class NameExistsException(Exception): pass gpodder-3.9.0/tools/fake-dbus-module/dbus/mainloop/0000755000016000001710000000000012654461626023334 5ustar jenkinsjenkins00000000000000gpodder-3.9.0/tools/fake-dbus-module/dbus/mainloop/__init__.py0000644000016000001710000000000112654461624025432 0ustar jenkinsjenkins00000000000000 gpodder-3.9.0/tools/fake-dbus-module/dbus/mainloop/glib.py0000644000016000001710000000005512654461624024621 0ustar jenkinsjenkins00000000000000def DBusGMainLoop(*args, **kwargs): pass gpodder-3.9.0/tools/fake-dbus-module/dbus/__init__.py0000644000016000001710000000040712654461624023626 0ustar jenkinsjenkins00000000000000import dbus.exceptions class SessionBus(object): def __init__(self, *args, **kwargs): pass def add_signal_receiver(self, *args, **kwargs): pass def name_has_owner(self, *args, **kwargs): return False SystemBus = SessionBus gpodder-3.9.0/tools/fake-dbus-module/dbus/glib.py0000644000016000001710000000012512654461624023001 0ustar jenkinsjenkins00000000000000 class DBusGMainLoop(object): def __init__(self, *args, **kwargs): pass gpodder-3.9.0/tools/fake-dbus-module/dbus/service.py0000644000016000001710000000031112654461624023521 0ustar jenkinsjenkins00000000000000 def method(*args, **kwargs): return lambda x: x class BusName(object): def __init__(self, *args, **kwargs): pass class Object: def __init__(self, *args, **kwargs): pass gpodder-3.9.0/tools/fake-dbus-module/dbus/mainloop.py0000644000016000001710000000000012654461624023672 0ustar jenkinsjenkins00000000000000gpodder-3.9.0/tools/fake-dbus-module/README0000644000016000001710000000035712654461624021444 0ustar jenkinsjenkins00000000000000This directory contains a dummy "dbus" module for use with gPodder on platforms where D-Bus is not available. The dummy "dbus" module will do nothing, but still allow gPodder to run successfully without the need for the real D-Bus module. gpodder-3.9.0/tools/i18n/0000755000016000001710000000000012654461626016214 5ustar jenkinsjenkins00000000000000gpodder-3.9.0/tools/i18n/summary.py0000644000016000001710000000371712654461624020271 0ustar jenkinsjenkins00000000000000#!/usr/bin/python # summary.py - Text-based visual translation completeness summary # Thomas Perl , 2009-01-03 # # Usage: make statistics | python summary.py # import sys import re import math import glob import os import subprocess width = 40 class Language(object): def __init__(self, language, translated, fuzzy, untranslated): self.language = language self.translated = int(translated) self.fuzzy = int(fuzzy) self.untranslated = int(untranslated) def get_translated_ratio(self): return float(self.translated)/float(self.translated+self.fuzzy+self.untranslated) def get_fuzzy_ratio(self): return float(self.fuzzy)/float(self.translated+self.fuzzy+self.untranslated) def get_untranslated_ratio(self): return float(self.untranslated)/float(self.translated+self.fuzzy+self.untranslated) def __cmp__(self, other): return cmp(self.get_translated_ratio(), other.get_translated_ratio()) languages = [] COUNTS_RE = '((\d+) translated message[s]?)?(, (\d+) fuzzy translation[s]?)?(, (\d+) untranslated message[s]?)?\.' po_folder = os.path.join(os.path.dirname(__file__), '..', '..', 'po') for filename in glob.glob(os.path.join(po_folder, '*.po')): language, _ = os.path.splitext(os.path.basename(filename)) msgfmt = subprocess.Popen(['msgfmt', '--statistics', filename], stderr=subprocess.PIPE) _, stderr = msgfmt.communicate() match = re.match(COUNTS_RE, stderr).groups() languages.append(Language(language, match[1] or '0', match[3] or '0', match[5] or '0')) print '' for language in sorted(languages): tc = '#'*(int(math.floor(width*language.get_translated_ratio()))) fc = '~'*(int(math.floor(width*language.get_fuzzy_ratio()))) uc = ' '*(width-len(tc)-len(fc)) print ' %5s [%s%s%s] -- %3.0f %% translated' % (language.language, tc, fc, uc, language.get_translated_ratio()*100) print """ Total translations: %s """ % (len(languages)) gpodder-3.9.0/tools/win32-setup/0000755000016000001710000000000012654461626017535 5ustar jenkinsjenkins00000000000000gpodder-3.9.0/tools/win32-setup/gpodder-setup.iss.in0000644000016000001710000000551712654461624023452 0ustar jenkinsjenkins00000000000000[Setup] ; NOTE: The value of AppId uniquely identifies this application. ; Do not use the same AppId value in installers for other applications. ; (To generate a new GUID, click Tools | Generate GUID inside the IDE.) AppId={{ABE123A1-41D1-4917-8E1E-C7E37991B673} AppName=gPodder AppVersion=%VERSION% AppPublisher=Thomas Perl AppPublisherURL=http://gpodder.org/ AppSupportURL=http://gpodder.org/documentation AppUpdatesURL=http://gpodder.org/downloads DefaultDirName={pf}\gPodder DefaultGroupName=gPodder LicenseFile=..\..\COPYING InfoBeforeFile=..\..\README OutputDir=. OutputBaseFilename=gpodder-%VERSION%-setup Compression=lzma SolidCompression=yes WizardSmallImageFile=wizard-small-image.bmp WizardImageFile=wizard-image.bmp [Languages] Name: "english"; MessagesFile: "compiler:Default.isl" [Tasks] Name: "desktopicon"; Description: "{cm:CreateDesktopIcon}"; GroupDescription: "{cm:AdditionalIcons}"; Flags: unchecked Name: "quicklaunchicon"; Description: "{cm:CreateQuickLaunchIcon}"; GroupDescription: "{cm:AdditionalIcons}"; Flags: unchecked; OnlyBelowVersion: 0,6.1 [Files] Source: "..\win32-launcher\gpodder.exe"; DestDir: "{app}"; Flags: ignoreversion Source: "..\win32-launcher\gpo.exe"; DestDir: "{app}"; Flags: ignoreversion Source: "..\..\COPYING"; DestDir: "{app}"; Flags: ignoreversion Source: "..\..\README"; DestDir: "{app}"; Flags: ignoreversion Source: "..\..\bin\*"; DestDir: "{app}\bin"; Flags: ignoreversion recursesubdirs createallsubdirs Source: "..\..\share\*"; DestDir: "{app}\share"; Excludes: "*.h"; Flags: ignoreversion recursesubdirs createallsubdirs Source: "..\..\src\*"; DestDir: "{app}\src"; Excludes: "*.pyc,*.py~"; Flags: ignoreversion recursesubdirs createallsubdirs [Icons] Name: "{group}\gPodder"; Filename: "{app}\gpodder.exe" Name: "{group}\gPodder (set download folder)"; Filename: "{app}\gpodder.exe"; Parameters: "--select-folder" Name: "{group}\gPodder (CLI)"; Filename: "{app}\gpo.exe" Name: "{group}\{cm:ProgramOnTheWeb,gPodder}"; Filename: "http://gpodder.org/" Name: "{group}\{cm:UninstallProgram,gPodder}"; Filename: "{uninstallexe}" Name: "{commondesktop}\gPodder"; Filename: "{app}\gpodder.exe"; Tasks: desktopicon Name: "{userappdata}\Microsoft\Internet Explorer\Quick Launch\gPodder"; Filename: "{app}\gpodder.exe"; Tasks: quicklaunchicon [Registry] Root: HKCR; Subkey: "gpodder"; ValueType: string; ValueData: "gPodder Protocol Handler"; Flags: uninsdeletekey Root: HKCR; Subkey: "gpodder"; ValueType: string; ValueName: "URL Protocol"; ValueData: "" Root: HKCR; Subkey: "gpodder\DefaultIcon"; ValueType: string; ValueData: "{app}\gpodder.exe" Root: HKCR; Subkey: "gpodder\shell\open\command"; ValueType: string; ValueData: """{app}\gpodder.exe"" -s ""%1""" [Run] Filename: "{app}\gpodder.exe"; Description: "{cm:LaunchProgram,gPodder}"; Flags: nowait postinstall skipifsilent gpodder-3.9.0/tools/win32-setup/wizard-small-image.bmp0000644000016000001710000003101612654461624023722 0ustar jenkinsjenkins00000000000000BM26(7: и1  џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўўўџўўўџўўўџўўўџўўўџўўўџўўўџ§§§џ§§§џќќќџќћћџќћћџќћћџћћћџќќќџ§§§џ§§§џўўўџўўўџўўўџўўўџўўўџўўўџўўўџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўўўџ§§§џћћћџњњљџїїїџіііџѕііџііѕџііѕџѕіѕџѕіѕџііѕџѕіѕџєѕѓџєѕѓџѓєђџђѓёџёё№џюяэџьэьџыьыџьэыџээьџэюьџя№юџя№юџ№ёяџ№ё№џ№№яџ№№№џёёёџђёђџђѓђџєѓѓџєєєџѕѕѕџїїіџјјјџњњњџ§§§џ§§§џўўўџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ§§§џњњњџєєєџяяяџььыџьэыџыьъџшъцџхчуџрсоџмнкџиижџджгџббЯџЬЬЫџШШЦџФУТџТТРџТСПџТСПџССПџТСПџРРОџРРОџСТПџУУРџФХТџЧЧФџЪЫШџЮЯЬџвгаџзиеџлмйџоплџмокџлмйџллйџккиџлкйџнмлџрсрџххфџщщшџээьџђђёџјїїџќћћџўўўџџџџџџџџџџџџџџџџџџџџџџџџџ§§§џїііџъъщџонмџннлџежгџТСПџБАЏџЁџ•‘“џ‰џ‰‚†џƒy€џ|qyџvhrџn^lџhTdџaL^џ`J]џaM_џcN`џePaџfScџhVeџjYgџl[iџn]jџp`mџrcnџvisџ}rzџ‚{џ‰„‡џ‹џ˜””џ œџЊЈЈџЗЕГџССНџШЩХџЦЦУџТТПџССОџЧЦФџЮЭЫџззеџхфуџёё№џћћћџўўўџџџџџџџџџџџџџџџџџџџџџќќќџєєєџюяэџвгбџЂŸ џ€x}џo_lџdM_џ\@XџaE^џeIbџiLfџoOkџsRpџyUtџ}Yxџ[}џ†_џ‡`‚џ…^€џ„]џƒ]~џ‚\}џ€[{џZ{џ~Yzџ}Xyџ{WwџzVvџvTrџpPmџkMgџeIbџaE^џ^BZџ_E[џhTdџqcnџwotџ}v{џ‰‹џАЎЌџЦЧУџФФРџСРОџЫЫЩџллйџььыџјјјџўўўџџџџџџџџџџџџџџџџџџџџџўўўџџџџџЫШЪџsfrџaF^џlLhџzWvџ…^€џeŠџ”hџ“fџ’fŒџ‘d‹џbŠџŽaˆџ`‡џŒ_†џ‹^…џŠ]„џ‹]…џ‹^…џŒ^†џŒ_†џŒ_†џ`‡џ`‡џŽaˆџŽaˆџŽa‰џbŠџ‘d‹џ’eŒџ“gџ”hџ’fŒџ‹a†џƒ]џzXvџrRnџkMhџcF_џjZgџzpwџЗГЕџфцтџххфџщщшџѓѓѓџћћћџџџџџџџџџџџџџџџџџџџџџџџџџџџџџЩУШџhSeџvUrџdˆџ“gŽџ’eŒџ`‡џˆ\‚џ…X€џ…Xџ…X€џ…Y€џ†Y€џ†Zџ†Zџ‡Z‚џ‡[‚џ‡[‚џ‡[‚џ‡[‚џ‡[‚џ‡Z‚џ‡Zџ‡Zџ‡Zџ‡Zџ†Zџ†Zџ†Yџ†Y€џ…X€џ„Wџ„Wџ†Z€џ‰\ƒџŒ_†џbŠџ“eџ”gŽџc‡џ]|џqPmџbL`џ†Žџьыыџџџџџ§§§џўўўџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ}p|џyWuџ•hџ‰\ƒџ„Xџ„W~џ†Y€џ‡[‚џˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџ‡[‚џ†Zџ…Y€џ„Xџ…Yџ‰\ƒџaˆџ“gџ‰b„џhJdџwhvџѕѕѕџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџјјјџxguџ‡b‚џ‹[…џƒT}џ„V~џ…Wџ„V~џ…Wџ…Wџ…Xџ†X€џ†Y€џ†Yџ‡Zџ‡Zџ‡Z‚џ‡[‚џ‡[‚џ‡[‚џ‡[‚џ‡[‚џ‡[‚џ‡[‚џ‡[‚џ‡[‚џˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџ‡\ƒџ‡[ƒџ‡[ƒџ‡\ƒџˆ\ƒџˆ\ƒџ‡\ƒџ‡[‚џ†Zџ‡Zџ_‡џ”iŽџlMhџ…wƒџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџzkxџƒ_џ‹\…џƒU}џ„V~џ„V~џ„V~џ„V~џ„V~џ„U~џ„U~џ„U~џ„U~џ„U~џ„U~џ„V~џ…Wџ…Wџ…Wџ…Xџ…Wџ†X€џ†X€џ†Xџ†X€џ†Y€џ†Y€џ†Zџ‡Zџ‡Z‚џ‡[‚џ‡[‚џˆ[‚џˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџ‡[‚џ†Zџ‹]…џfŠџdJaџЯЬЯџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџykwџ€]}џŽ_ˆџ„U~џ…Vџ…Wџ†W€џ‡Xџ‰[ƒџ‹^…џŒ_†џŒ_†џŒ_†џŒ_†џ‹^†џˆZƒџ†W€џ†Wџ„V~џ„V~џ„V~џ„V~џ„V~џ„V~џ„V~џ„V~џ„V~џ„V~џ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ†X€џ†Y€џ‡Zџˆ[‚џˆ\ƒџˆ\ƒџˆ\ƒџ‡\ƒџˆ\ƒџ‡Z‚џŽb‰џsRoџ™Ž˜џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ‘…џrRoџ’gŒџŽ`‡џbˆџcˆџŽeˆџŒc‡џ†_џ}XyџxVsџvTqџtSpџrRnџtTpџ~[zџ‡`џ‹`†џŠ[„џ…Vџ„V~џ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ„V~џ„U~џ„U~џ‡Xџ‰ZƒџŠZƒџ‰Zƒџ‰Zƒџ‡Yџ†X€џ†W€џ†Y€џ‡[‚џˆ\ƒџˆ\ƒџ‡[‚џŽ`ˆџ}Zxџ€r~џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџйжйџhUfџqQmџvUrџnNkџpUmџmVkџfRdџo\mџ‡x‡џ—Š–џž’œџЃ™ЂџЋЃЊџІœЄџ‰{ˆџp^nџfOdџ^}џŒ_†џ„V~џ„V~џ…Wџ…V~џ„V~џ…Wџ„V~џ…Wџ„U~џ†WџcŠџŒc†џ‡a‚џ†`џ‡a‚џˆaƒџ‹a†џŽbˆџ’dŒџŽ`ˆџˆ[‚џ…Wџ…Y€џ†ZџŒ^†џ{YwџŠ~‰џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџкз韘˜џ—‹•џЊЁЉџЦТЦџропџ§§§џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџЫЧЪџhWfџ}\zџ_‡џƒU}џ„W~џ…V~џ…W~џ…Wџ…Wџ„V~џ†X€џeŠџyXuџlSiџvduџxguџwfvџuasџmRjџoOkџvUrџ€\{џ‹b†џ”fŽџcŠџ‹]„џ_‡џyWuџ˜—џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџЛЖКџgKdџa‡џ†Wџ„V~џ…V~џ…Wџ…Wџ…WџƒU}џ’fŒџqSnџwivџЫШЫџ№№№џїїїџэээџтртџУНТџЃšЂџ…Žџ‚r€џgLdџlNiџyWuџ‡_‚џfŠџgJdџ­ЅЌџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџвЮвџoVmџŠ`„џ‡Xџ„V~џ„V~џ„V~џ…Wџ„V~џˆZ‚џŠc…џiRfџяяяџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџїїїџЩХЩџІŸЅџŽџr[oџ[AXџ€qџіѕіџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўўўџџџџџџџџџвввџkkkџnnnџрррџЈŸЇџpQmџŽcˆџ„V~џ„V~џ…V~џ…W~џ„V~џ‚T|џ‘b‹џ€[{џŠ{‰џ№№№џџџџџџџџџџџџџ§§§џўўўџ§§§џќќќџќќќџџџџџџџџџџџџџћћћџтртџсссџјіјџџџџџ№№№џ§§§џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ§§§џkkkџџUUUџSSSџџџ~[yџ‘a‹џ‚T|џ…Wџ…V~џ…Wџ„V~џ„U~џ’d‹џK5Hџ'''џ$$$џ---џЄЄЄџ§§§џџџџџ§§§џџџџџџџџџџџџџџџџџўўўџџџџџџџџџџџџџџџџџџџџџkkkџoooџўўўџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўўўџўўўџџџџџџџџџ‘‘‘џџАААџѕѕѕџїіїџРРРџ&(&џ2!0џŠ\„џˆY‚џ„V~џ…Wџ„V~џˆY‚џ\†џ<%9џџlmmџЅЅЅџџџnnnџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџdddџџЗЗЗџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџбббџџ™™™џџџџџ№№№џёёёџџџџџУФУџџI,Eџ\‡џ†X€џ„V~џ‡Xџ]‡џE*Bџ џЇЉЈџџџџџјјјџџџџџЖЖЖџџБББџџџџџџџџџџџџџџџџџџџџџџџџџбббџЂЂЂџ„„„џ???џ)))џНННџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўўўџџџџџџџџџџџџџџџџџdddџIIIџјјјџђђђџјјјџ§§§џњњњџџџџџ‚…ƒџ џ}Pxџ‹[…џ…Wџ\†џnDhџ џ–˜–џџџџџќќќџјјјџяяяџ§§§џvvvџ...џђђђџџџџџџџџџюююџŠŠŠџSSSџ333џ444џGGGџ|||џнннџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ§§§џ†††џGGGџdddџlllџ!!!џ–––џџџџџќќќџщщщџКККџкккџџџџџнпоџ!!!џQ.MџŒ\†џ‡XџŒ[†џ0-џ;=;џќ§ќџљљљџиииџчччџњњњџљљљџвввџ$$$џйййџџџџџшшшџLLLџ000џwwwџИИИџоооџјјјџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџїїїџ888џџџџџтттџџџџџжжжџ777џџџЌЌЌџџџџџaebџ#!џ†V€џŒ[…џoEjџ џІЉЇџџџџџ‡‡‡џџџДДДџџџџџџџџџEEEџ“““џџџџџtttџ666џчччџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџёёёџ000џџџџAAAџ§§§џџџџџiiiџџџџ555џ№№№џЏГАџџzLuџ]‰џC'?џ...џњћњџщщщџ///џџџ---џчччџџџџџrrrџYYYџрррџ:::џПППџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџыыыџџџџџ^^^џџџџџџџџџIIIџџџџџВВВџцщцџџf>aџ’_Œџ-+џadbџџџџџЮЮЮџџџџџ„„„џџџџџЃЃЃџ)))џLLLџџwwwџЫЫЫџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџкккџџџџџmmmџџџџџџџџџ‰‰‰џџџџџГГГџџџџџџS1Oџ‹Y„џ џ“џџџџџшшшџ444џџџџpppџџџџџВВВџ џџџџoooџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџПППџ џџџџџџџџџџџџџяяяџ;;;џџџFFFџєєєџ§ў§џ<;<џF)BџtInџ џТФТџџџџџџџџџžžžџџџџ›››џџџџџГГГџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџЂЂЂџџџџџ‚‚‚џџџџџџџџџџџџџъъъџ‡‡‡џ‡‡‡џъъъџџџџџїјїџHGHџE)Aџd>_џџийиџџџџџџџџџџџџџ………џџYYYџяяяџџџџџЙЙЙџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџˆˆˆџџџџџ```џџџџџџџџџќќќџџџџџџџџџџџџџџџџџџџџџѓѕєџ:89џM-Iџd>_џ! џежеџџџџџћћћџџџџџџџџџїїїџџџџџџџџџџџџџЋЋЋџ џџџџЕЕЕџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџfffџџџџџ555џџџџџџџџџљљљџњњњџќќќџќќќџљљљџџџџџ№ђ№џ-*-џS1Nџe?_џџвггџџџџџњњњџћћћџ§§§џџџџџџџџџћћћџџџџџ{{{џџџџџХХХџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџЖЖЖџkkkџ"""џџџ"""џѕѕѕџџџџџїїїџїїїџїїїџїїїџїїїџџџџџю№юџ  џX5Tџc>^џџгдгџџџџџјјјџјјјџјјјџјјјџљљљџњњњџџџџџNNNџџџџџаааџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџlllџџ{{{џ222џДДДџџџџџѕѕѕџѕѕѕџѕѕѕџѕѕѕџѕѕѕџџџџџЧЪЧџџoEjџkDfџ џЧЩЧџџџџџіііџіііџіііџіііџіііџќќќџёёёџ444џџџџ111џмммџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўўўџџџџџџџџџџџџџxxxџџВВВџkkkџTTTџўўўџђђђџђђђџђђђџђђђџєєєџўџўџx{xџџ†V€џ‚T}џ џ“—”џџџџџіііџѓѓѓџєєєџєєєџёёёџџџџџЉЉЉџџџџџBBBџщщщџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџŠŠŠџџ———џОООџ!!!џбббџќќќџюююџ№№№џ№№№џєєєџњћњџ9:9џ63џŠZ„џ\‰џ,)џ_b`џљљљџїїїџёёёџђђђџђђђџѓѓѓџјјјџNNNџџ џџ(((џxxxџѕѕѕџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџЇЇЇџџYYYџјјјџFFFџdddџ§§§џєєєџяяяџяяяџџџџџЁЄЂџ џf?bџŒ[…џ[†џG*Dџ$$$џсусџ§§§џяяяџяяяџ№№№џџџџџЌЌЌџ&&&џrrrџџBBBџхххџтттџ§§§џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџбббџ!!!џџэээџЭЭЭџџŠŠŠџћћћџ§§§џџџџџЩЪЩџ!џ=$:џ\†џ‡XџˆY‚џzMuџ џmpmџџџџџћћћџїїїџџџџџкккџџ|||џgggџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџgggџџ„„„џџџџџПППџџcccџЋЋЋџ‹‹‹џ!#!џ,*џƒW~џŠZƒџ„V~џ…Vџ_Šџ\@Yџџ‘џэээџ№№№џЧЧЧџ***џWWWџвввџ џ џбббџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџТТТџџџйййџџџџџаааџRRRџ'''џ999џ?6>џ|Xxџ`ŠџƒU}џ…Wџ„U~џdŠџtYqџjjjџ---џ???џPPPџџmmmџџџџџџџcccџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџvvvџџGGGџќќќџџџџџџџџџыыыџџџџџ •ŸџwWtџ‘c‹џƒU}џƒU}џ‰Zƒџ†a‚џkXiџџџџџьььџ{{{џџдддџџџџџКККџџџЪЪЪџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџѓѓѓџAAAџџ^^^џїїїџџџџџџџџџџџџџвЮбџiSgџŠb…џŠZ„џ‡Wџ‘f‹џdHaџЌЄЋџџџџџџџџџџџџџџџџџџџџџШШШџџџ———џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџбббџ444џџOOOџрррџџџџџџџџџџџџџ”‰”џfFbџcˆџc‡џjJfџƒv‚џџџџџџџџџџџџџџџџџџџџџВВВџџџvvvџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџкккџBBBџџџЃЃЃџё№ёџџџџџџџџџŽŒџhQfџkTgџ†x„џѕѕѕџџџџџџџџџџџџџмммџoooџџџƒƒƒџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџёёёџwwwџџџ***џ‹‹‹џЧШЧџдедџОКОџЮЬЭџїјїџьььџжжжџГГГџlllџџџ"""џЄЄЄџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџНННџ```џ џџџ ! џIJIџNONџOOOџ<<<џџџџ%%%џzzzџнннџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџХХХџџcccџ555џџ џ џџ===џlllџЂЂЂџкккџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџљљљџцццџиииџзззџеееџлллџщщщџўўўџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџgpodder-3.9.0/tools/win32-setup/wizard-image.bmp0000644000016000001710000062232612654461624022626 0ustar jenkinsjenkins00000000000000BMж$6(Є:  $  ўўўџ§§§џ§§§џ§§§џ§§§џєєєџўўўџъъъџцццџёёёџэээџыыыџъъъџђђђџїїїџјјјџљљљџћћћџћћћџћћћџљљљџњњњџїїїџјјјџњњњџњњњџљљљџюююџ№№№џєєєџшшшџсссџјјјџ§§§џ§§§џ§§§џ§§§џќќќџѕѕѕџъъъџчччџшшшџьььџњњњџ§§§џ№№№џэээџшшшџшшшџєєєџќќќџјјјџэээџ§§§џљљљџщщщџчччџъъъџћћћџ§§§џєєєџшшшџчччџюююџтттџўўўџќќќџюююџчччџъъъџхххџњњњџћћћџэээџчччџщщщџѕѕѕџ§§§џ§§§џ§§§џўўўџцццџ§§§џ§§§џыыыџљљљџ§§§џ§§§џћћћџыыыџчччџщщщџїїїџ§§§џёёёџѕѕѕџ§§§џ§§§џьььџљљљџ§§§џўўўџчччџќќќџ§§§џ§§§џ§§§џћћћџъъъџхххџќќќџїїїџюююџ§§§џ§§§џђђђџѓѓѓџ§§§џфффџьььџчччџьььџћћћџ§§§џ§§§џ§§§џџџџџфффџўўўџќќќџ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џєєєџ§§§џўўўџ№№№џџџџџўўўџћћћџшшшџэээџъъъџщщщџњњњџћћћџћћћџёёёџўўўџ§§§џ§§§џўўўџ§§§џ§§§џ§§§џ§§§џєєєџўўўџыыыџцццџёёёџыыыџщщщџчччџюююџіііџљљљџљљљџњњњџћћћџћћћџљљљџєєєџљљљџіііџљљљџќќќџћћћџїїїџєєєџїїїџэээџсссџјјјџ§§§џ§§§џ§§§џ§§§џљљљџьььџљљљџўўўџ§§§џєєєџыыыџўўўџяяяџюююџ§§§џњњњџыыыџћћћџљљљџюююџўўўџщщщџіііџўўўџѓѓѓџыыыџџџџџчччџіііџџџџџњњњџфффџўўўџєєєџяяяџ§§§џњњњџчччџњњњџћћћџјјјџџџџџїїїџщщщџўўўџ§§§џ§§§џўўўџшшшџ§§§џ§§§џьььџњњњџ§§§џ§§§џюююџђђђџўўўџїїїџщщщџўўўџёёёџѕѕѕџ§§§џ§§§џэээџљљљџ§§§џўўўџщщщџќќќџ§§§џ§§§џ§§§џћћћџыыыџўўўџ§§§џїїїџяяяџ§§§џ§§§џѓѓѓџєєєџ§§§џфффџљљљџўўўџёёёџяяяџўўўџяяяџюююџюююџхххџюююџўўўџ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џєєєџ§§§џўўўџ№№№џџџџџџџџџ№№№џѓѓѓџўўўџ§§§џ№№№џёёёџќќќџћћћџёёёџўўўџ§§§џ§§§џўўўџ§§§џ§§§џ§§§џ§§§џєєєџўўўџэээџшшшџьььџьььџшшшџщщщџчччџяяяџіііџљљљџљљљџњњњџјјјџђђђџьььџіііџђђђџјјјџљљљџјјјџњњњџјјјџѕѕѕџъъъџсссџјјјџ§§§џ§§§џ§§§џ§§§џјјјџюююџ§§§џ§§§џ§§§џўўўџфффџўўўџяяяџїїїџ§§§џ§§§џыыыџћћћџљљљџюююџџџџџфффџўўўџ§§§џ§§§џцццџџџџџїїїџщщщџцццџцццџуууџўўўџ№№№џіііџ§§§џ§§§џыыыџњњњџќќќџєєєџшшшџшшшџіііџ§§§џ§§§џ§§§џўўўџшшшџ§§§џ§§§џьььџњњњџќќќџўўўџшшшџќќќџ§§§џўўўџхххџўўўџёёёџѕѕѕџ§§§џ§§§џэээџљљљџќќќџўўўџщщщџќќќџ§§§џ§§§џ§§§џћћћџыыыџ§§§џќќќџїїїџяяяџ§§§џ§§§џѓѓѓџєєєџ§§§џцццџўўўџ§§§џћћћџъъъџџџџџчччџіііџњњњџцццџњњњџ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џєєєџ§§§џўўўџ№№№џџџџџўўўџќќќџ§§§џ§§§џќќќџќќќџћћћџћћћџћћћџёёёџўўўџ§§§џ§§§џўўўџ§§§џ§§§џ§§§џ§§§џєєєџўўўџыыыџхххџщщщџщщщџщщщџшшшџщщщџшшшџ№№№џњњњџјјјџњњњџњњњџњњњџљљљџіііџњњњџњњњџїїїџљљљџљљљџљљљџїїїџхххџсссџјјјџ§§§џ§§§џ§§§џ§§§џјјјџюююџ§§§џ§§§џќќќџўўўџфффџџџџџяяяџѓѓѓџ§§§џќќќџыыыџћћћџљљљџюююџџџџџчччџњњњџ§§§џљљљџщщщџўўўџћћћџ§§§џўўўџўўўџчччџўўўџђђђџѓѓѓџ§§§џќќќџщщщџњњњџњњњџщщщџљљљџ§§§џќќќџ§§§џ§§§џќќќџўўўџшшшџ§§§џ§§§џьььџіііџ§§§џўўўџыыыџјјјџ§§§џћћћџчччџўўўџђђђџѓѓѓџќќќџ§§§џьььџіііџ§§§џ§§§џщщщџќќќџ§§§џ§§§џќќќџћћћџыыыџ§§§џ§§§џїїїџюююџќќќџ§§§џђђђџєєєџ§§§џхххџћћћџ§§§џїїїџэээџўўўџїїїџыыыџџџџџцццџ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џєєєџ§§§џўўўџ№№№џџџџџўўўџ§§§џ§§§џ§§§џќќќџќќќџћћћџћћћџћћћџёёёџўўўџ§§§џ§§§џўўўџ§§§џ§§§џ§§§џ§§§џєєєџўўўџыыыџфффџцццџщщщџъъъџчччџъъъџэээџьььџњњњџљљљџїїїџљљљџќќќџњњњџњњњџїїїџіііџљљљџљљљџјјјџњњњџыыыџтттџсссџјјјџ§§§џ§§§џ§§§џ§§§џјјјџюююџ§§§џ§§§џ§§§џўўўџфффџџџџџяяяџщщщџђђђџяяяџ№№№џќќќџљљљџюююџўўўџєєєџыыыџђђђџъъъџіііџўўўџяяяџёёёџђђђџэээџёёёџ§§§џљљљџыыыџёёёџ№№№џфффџњњњџњњњџыыыџђђђџёёёџёёёџ§§§џ§§§џ§§§џљљљџцццџђђђџіііџэээџыыыџђђђџїїїџїїїџъъъџђђђџьььџђђђџ§§§џђђђџщщщџђђђџёёёџыыыџьььџђђђџяяяџэээџќќќџ§§§џ§§§џ§§§џёёёџшшшџђђђџќќќџїїїџчччџёёёџёёёџыыыџјјјџ§§§џтттџяяяџђђђџъъъџјјјџ§§§џ§§§џюююџїїїџцццџ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џєєєџ§§§џўўўџ№№№џџџџџџџџџўўўџўўўџўўўџ§§§џ§§§џ§§§џќќќџ§§§џёёёџўўўџ§§§џ§§§џўўўџ§§§џ§§§џ§§§џ§§§џєєєџўўўџыыыџфффџуууџшшшџъъъџщщщџщщщџъъъџэээџѓѓѓџћћћџњњњџїїїџјјјџѕѕѕџѓѓѓџјјјџњњњџћћћџњњњџњњњџѕѕѕџуууџуууџтттџљљљџ§§§џ§§§џ§§§џ§§§џјјјџюююџ§§§џ§§§џ§§§џўўўџфффџўўўџљљљџљљљџѕѕѕџіііџћћћџ§§§џљљљџюююџ§§§џ§§§џїїїџѕѕѕџјјјџ§§§џ§§§џ§§§џїїїџѕѕѕџіііџќќќџ§§§џ§§§џљљљџѕѕѕџїїїџъъъџњњњџќќќџљљљџѕѕѕџѕѕѕџћћћџ§§§џ§§§џ§§§џњњњџцццџєєєџїїїџјјјџљљљџѕѕѕџјјјџ§§§џјјјџѕѕѕџїїїџќќќџ§§§џљљљџљљљџіііџѕѕѕџљљљџћћћџѕѕѕџѕѕѕџњњњџќќќџ§§§џ§§§џ§§§џѓѓѓџшшшџєєєџќќќџїїїџюююџіііџѕѕѕџјјјџќќќџ§§§џіііџїїїџѕѕѕџјјјџ§§§џќќќџ§§§џљљљџ№№№џхххџ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џєєєџ§§§џўўўџ№№№џєєєџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџёёёџўўўџ§§§џ§§§џўўўџ§§§џ§§§џ§§§џ§§§џєєєџўўўџщщщџфффџтттџцццџщщщџэээџъъъџчччџюююџьььџёёёџїїїџјјјџљљљџєєєџћћћџљљљџїїїџјјјџіііџѓѓѓџщщщџчччџчччџфффџјјјџ§§§џ§§§џ§§§џ§§§џјјјџюююџ§§§џ§§§џ§§§џўўўџуууџўўўџ§§§џ§§§џ§§§џ§§§џ§§§џќќќџљљљџюююџ§§§џ§§§џ§§§џ§§§џ§§§џќќќџќќќџ§§§џ§§§џ§§§џ§§§џ§§§џќќќџќќќџ§§§џ§§§џ§§§џыыыџњњњџ§§§џ§§§џ§§§џ§§§џ§§§џќќќџ§§§џќќќџўўўџшшшџќќќџ§§§џ§§§џ§§§џ§§§џ§§§џќќќџ§§§џ§§§џ§§§џ§§§џќќќџ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џќќќџћћћџъъъџ§§§џ§§§џїїїџяяяџ§§§џ§§§џ§§§џ§§§џќќќџ§§§џ§§§џ§§§џ§§§џќќќџќќќџќќќџќќќџ№№№џтттџ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џєєєџ§§§џ§§§џѓѓѓџљљљџљљљџљљљџљљљџљљљџљљљџљљљџљљљџљљљџљљљџєєєџ§§§џ§§§џ§§§џўўўџ§§§џ§§§џ§§§џ§§§џєєєџўўўџшшшџфффџуууџуууџхххџщщщџъъъџцццџьььџщщщџыыыџяяяџњњњџіііџѕѕѕџјјјџёёёџёёёџёёёџэээџщщщџшшшџцццџхххџсссџјјјџ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џќќќџ§§§џ§§§џќќќџўўўџќќќџ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џјјјџэээџ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џыыыџњњњџ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џяяяџёёёџљљљџ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џўўўџќќќџ§§§џїїїџяяяџ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џќќќџ§§§џўўўџќќќџ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џєєєџ§§§џ§§§џѓѓѓџљљљџљљљџљљљџљљљџљљљџљљљџљљљџљљљџљљљџњњњџєєєџ§§§џ§§§џ§§§џўўўџ§§§џ§§§џ§§§џ§§§џєєєџўўўџщщщџтттџуууџуууџсссџцццџыыыџхххџфффџхххџщщщџэээџѕѕѕџюююџьььџыыыџьььџьььџяяяџяяяџюююџыыыџхххџуууџсссџјјјџ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џћћћџіііџ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џѕѕѕџћћћџ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џќќќџёёёџђђђџ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џњњњџіііџ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џєєєџ§§§џ§§§џѓѓѓџљљљџљљљџљљљџљљљџљљљџљљљџљљљџљљљџљљљџњњњџєєєџ§§§џ§§§џ§§§џўўўџ§§§џ§§§џ§§§џ§§§џєєєџўўўџшшшџтттџуууџуууџтттџхххџщщщџъъъџуууџхххџхххџъъъџэээџхххџхххџчччџцццџчччџщщщџъъъџыыыџюююџщщщџхххџсссџјјјџ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џќќќџ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џќќќџ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џќќќџ§§§џ§§§џ§§§џќќќџ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џќќќџ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џєєєџ§§§џ§§§џѓѓѓџљљљџљљљџљљљџљљљџљљљџљљљџљљљџљљљџљљљџњњњџєєєџ§§§џ§§§џ§§§џўўўџ§§§џ§§§џ§§§џ§§§џєєєџўўўџщщщџуууџуууџуууџуууџуууџхххџцццџуууџхххџфффџхххџцццџфффџхххџфффџфффџфффџфффџчччџцццџшшшџщщщџхххџтттџјјјџ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џєєєџ§§§џ§§§џѓѓѓџљљљџљљљџљљљџљљљџљљљџљљљџљљљџљљљџљљљџњњњџєєєџ§§§џ§§§џ§§§џўўўџ§§§џ§§§џ§§§џ§§§џєєєџ§§§џўўўџџџџџџџџџџџџџџџџџџџџџџџџџўўўџџџџџџџџџџџџџџџџџўўўџџџџџџџџџџџџџџџџџџџџџџџџџўўўџўўўџўўўџўўўџџџџџџџџџ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џєєєџ§§§џ§§§џѓѓѓџљљљџљљљџљљљџљљљџљљљџљљљџљљљџљљљџљљљџњњњџєєєџ§§§џ§§§џ§§§џўўўџ§§§џ§§§џ§§§џ§§§џѓѓѓџѕѕѕџѕѕѕџѕѕѕџѕѕѕџѕѕѕџѕѕѕџѕѕѕџѕѕѕџѕѕѕџѕѕѕџѕѕѕџѕѕѕџѕѕѕџѕѕѕџѕѕѕџѕѕѕџѕѕѕџѕѕѕџѕѕѕџѕѕѕџѕѕѕџѕѕѕџѕѕѕџѕѕѕџѕѕѕџѕѕѕџѕѕѕџѕѕѕџѕѕѕџѕѕѕџѕѕѕџѕѕѕџѕѕѕџѕѕѕџѕѕѕџѕѕѕџѕѕѕџѕѕѕџѕѕѕџѕѕѕџѕѕѕџѕѕѕџѕѕѕџѕѕѕџѕѕѕџѕѕѕџѕѕѕџѕѕѕџѕѕѕџѕѕѕџѕѕѕџѕѕѕџѕѕѕџѕѕѕџѕѕѕџѕѕѕџѕѕѕџѕѕѕџѕѕѕџѕѕѕџѕѕѕџѕѕѕџѕѕѕџѕѕѕџѕѕѕџѕѕѕџѕѕѕџѕѕѕџѕѕѕџѕѕѕџѕѕѕџѕѕѕџѕѕѕџѕѕѕџѕѕѕџѕѕѕџѕѕѕџѕѕѕџѕѕѕџѕѕѕџѕѕѕџѕѕѕџѕѕѕџѕѕѕџѕѕѕџѕѕѕџѕѕѕџѕѕѕџѕѕѕџѕѕѕџѕѕѕџѕѕѕџѕѕѕџѕѕѕџѕѕѕџѕѕѕџѕѕѕџѕѕѕџѕѕѕџѕѕѕџѕѕѕџѕѕѕџѕѕѕџѕѕѕџѕѕѕџѕѕѕџѕѕѕџѕѕѕџѕѕѕџѕѕѕџѕѕѕџѕѕѕџѕѕѕџѕѕѕџѕѕѕџѕѕѕџѕѕѕџѕѕѕџѕѕѕџѕѕѕџѕѕѕџѕѕѕџѕѕѕџѕѕѕџѕѕѕџѕѕѕџѕѕѕџѕѕѕџѕѕѕџѕѕѕџѕѕѕџѕѕѕџѕѕѕџѕѕѕџѕѕѕџѕѕѕџѕѕѕџѕѕѕџѕѕѕџѕѕѕџѕѕѕџ§§§џ§§§џѓѓѓџљљљџљљљџљљљџљљљџљљљџљљљџљљљџљљљџљљљџњњњџєєєџ§§§џ§§§џ§§§џўўўџ§§§џ§§§џ§§§џ§§§џѓѓѓџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџѕѕѕџ§§§џ§§§џѓѓѓџљљљџљљљџњњњџњњњџњњњџњњњџњњњџњњњџњњњџњњњџєєєџ§§§џ§§§џ§§§џўўўџ§§§џ§§§џ§§§џ§§§џѓѓѓџђђђџ№№№џяяяџяяяџяяяџ№№№џяяяџёёёџ№№№џяяяџяяяџяяяџяяяџяяяџяяяџяяяџяяяџяяяџяяяџяяяџяяяџяяяџяяяџяяяџяяяџяяяџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџѕѕѕџ§§§џўўўџяяяџёёёџёёёџёёёџёёёџёёёџ№№№џ№№№џ№№№џ№№№џ№№№џёёёџўўўџ§§§џ§§§џўўўџ§§§џ§§§џ§§§џ§§§џѓѓѓџѓѓѓџцццџуууџсссџсссџцццџчччџяяяџуууџсссџсссџсссџсссџсссџсссџсссџсссџсссџсссџсссџсссџсссџсссџсссџсссџсссџяяяџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџѕѕѕџ§§§џўўўџ№№№џњњњџјјјџјјјџјјјџїїїџїїїџїїїџіііџіііџїїїџёёёџўўўџ§§§џ§§§џўўўџ§§§џ§§§џ§§§џ§§§џѓѓѓџѓѓѓџшшшџщщщџчччџшшшџуууџчччџшшшџтттџсссџсссџсссџсссџсссџсссџсссџсссџсссџсссџсссџсссџтттџсссџсссџсссџсссџяяяџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџѕѕѕџ§§§џўўўџ№№№џљљљџїїїџїїїџїїїџіііџіііџѕѕѕџѕѕѕџѕѕѕџїїїџёёёџўўўџ§§§џ§§§џўўўџ§§§џ§§§џ§§§џ§§§џѓѓѓџѓѓѓџшшшџхххџщщщџёёёџуууџхххџуууџуууџсссџсссџсссџсссџсссџсссџсссџсссџсссџсссџсссџсссџтттџсссџсссџсссџсссџяяяџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџѕѕѕџ§§§џўўўџ№№№џљљљџїїїџїїїџїїїџіііџіііџѕѕѕџѕѕѕџѕѕѕџїїїџёёёџўўўџ§§§џ§§§џўўўџ§§§џ§§§џ§§§џ§§§џѓѓѓџѓѓѓџцццџхххџыыыџьььџтттџтттџтттџуууџсссџсссџсссџсссџсссџсссџтттџуууџфффџуууџсссџсссџтттџсссџсссџсссџсссџ№№№џђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџёёёџ№№№џёёёџёёёџђђђџђђђџђђђџђђђџђђђџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџ№№№џ№№№џ№№№џ№№№џ№№№џяяяџяяяџяяяџ№№№џ№№№џ№№№џ№№№џ№№№џ№№№џяяяџяяяџяяяџяяяџђђђџѓѓѓџђђђџђђђџѕѕѕџ§§§џўўўџ№№№џљљљџїїїџїїїџїїїџіііџіііџѕѕѕџѕѕѕџѕѕѕџїїїџёёёџўўўџ§§§џ§§§џўўўџ§§§џ§§§џ§§§џ§§§џѓѓѓџѓѓѓџшшшџуууџцццџъъъџуууџсссџтттџуууџсссџсссџсссџсссџсссџсссџхххџчччџъъъџьььџщщщџуууџтттџтттџтттџтттџсссџ№№№џђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџюююџђђђџѕѕѕџїїїџїїїџїїїџїїїџїїїџїїїџїїїџїїїџїїїџїїїџїїїџїїїџїїїџїїїџїїїџјјјџюююџэээџэээџэээџьььџьььџьььџьььџьььџэээџэээџюююџюююџюююџюююџяяяџяяяџьььџъъъџ№№№џѓѓѓџђђђџѕѕѕџ§§§џўўўџ№№№џљљљџїїїџїїїџїїїџіііџіііџѕѕѕџѕѕѕџѕѕѕџїїїџёёёџўўўџ§§§џ§§§џўўўџ§§§џ§§§џ§§§џ§§§џѓѓѓџѓѓѓџщщщџшшшџђђђџђђђџъъъџсссџсссџхххџсссџсссџсссџсссџсссџфффџшшшџщщщџяяяџёёёџѓѓѓџёёёџцццџуууџуууџтттџсссџ№№№џђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџѓѓѓџ№№№џѓѓѓџљљљџјјјџјјјџјјјџјјјџјјјџјјјџјјјџјјјџјјјџјјјџјјјџјјјџјјјџјјјџјјјџјјјџљљљџьььџыыыџыыыџыыыџыыыџыыыџыыыџъъъџъъъџъъъџыыыџыыыџьььџэээџэээџэээџэээџ№№№џяяяџыыыџђђђџђђђџѕѕѕџ§§§џўўўџ№№№џљљљџїїїџїїїџїїїџіііџіііџѕѕѕџѕѕѕџѕѕѕџїїїџёёёџўўўџ§§§џ§§§џўўўџ§§§џ§§§џ§§§џ§§§џѓѓѓџѓѓѓџшшшџфффџчччџшшшџяяяџёёёџщщщџуууџцццџтттџсссџсссџсссџщщщџшшшџыыыџёёёџђђђџѕѕѕџљљљџєєєџфффџфффџхххџцццџёёёџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџюююџјјјџїїїџїїїџјјјџјјјџјјјџјјјџјјјџјјјџјјјџјјјџјјјџјјјџјјјџјјјџјјјџјјјџјјјџљљљџьььџыыыџыыыџыыыџыыыџыыыџыыыџыыыџыыыџъъъџъъъџъъъџыыыџьььџьььџэээџьььџьььџ№№№џьььџяяяџѓѓѓџѕѕѕџ§§§џўўўџ№№№џљљљџїїїџїїїџїїїџіііџіііџѕѕѕџѕѕѕџѕѕѕџїїїџёёёџўўўџ§§§џ§§§џўўўџ§§§џ§§§џ§§§џ§§§џѓѓѓџѓѓѓџяяяџыыыџђђђџюююџшшшџђђђџщщщџтттџъъъџъъъџсссџсссџуууџцццџчччџыыыџ№№№џєєєџїїїџљљљџљљљџшшшџшшшџщщщџцццџёёёџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџяяяџјјјџїїїџїїїџђђђџщщщџъъъџъъъџщщщџіііџјјјџєєєџьььџъъъџьььџєєєџјјјџјјјџјјјџљљљџыыыџыыыџыыыџхххџуууџуууџуууџуууџуууџшшшџыыыџъъъџцццџфффџхххџыыыџэээџэээџэээџяяяџяяяџѓѓѓџѕѕѕџ§§§џўўўџ№№№џљљљџїїїџїїїџїїїџіііџіііџѕѕѕџѕѕѕџѕѕѕџїїїџёёёџўўўџ§§§џ§§§џўўўџ§§§џ§§§џ§§§џ§§§џѓѓѓџѓѓѓџѕѕѕџъъъџєєєџљљљџђђђџђђђџфффџуууџфффџшшшџтттџсссџтттџфффџшшшџьььџёёёџіііџљљљџћћћџњњњџьььџшшшџцццџуууџ№№№џѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџђђђџјјјџїїїџїїїџ§§§џњњњџњњњџћћћџїїїџїїїџјјјџїїїџњњњџљљљџёёёџфффџіііџјјјџјјјџљљљџыыыџъъъџєєєџћћћџњњњџћћћџќќќџћћћџјјјџщщщџъъъџяяяџљљљџњњњџьььџсссџыыыџьььџэээџ№№№џ№№№џѓѓѓџѕѕѕџ§§§џўўўџ№№№џљљљџїїїџїїїџїїїџіііџіііџѕѕѕџѕѕѕџѕѕѕџїїїџёёёџўўўџ§§§џ§§§џўўўџ§§§џ§§§џ§§§џ§§§џѓѓѓџѓѓѓџїїїџяяяџђђђџњњњџљљљџђђђџюююџтттџтттџчччџуууџуууџфффџцццџщщщџ№№№џѕѕѕџіііџїїїџќќќџјјјџцццџхххџхххџфффџёёёџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџяяяџјјјџіііџїїїџіііџќќќџџџџџтттџљљљџјјјџўўўџїїїџђђђџњњњџўўўџыыыџєєєџјјјџјјјџљљљџъъъџъъъџэээџњњњџ§§§џъъъџсссџшшшџъъъџыыыџяяяџџџџџэээџ№№№џџџџџчччџцццџыыыџьььџяяяџяяяџѓѓѓџѕѕѕџ§§§џўўўџ№№№џљљљџїїїџїїїџїїїџіііџіііџѕѕѕџѕѕѕџѕѕѕџїїїџёёёџўўўџ§§§џ§§§џўўўџ§§§џ§§§џ§§§џ§§§џѓѓѓџѓѓѓџіііџ№№№џєєєџћћћџћћћџѓѓѓџюююџуууџтттџчччџуууџфффџцццџцццџьььџѓѓѓџђђђџ№№№џїїїџ§§§џєєєџуууџхххџхххџфффџёёёџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџ№№№џјјјџіііџїїїџіііџќќќџџџџџуууџљљљџјјјџўўўџѕѕѕџхххџђђђџџџџџєєєџіііџјјјџјјјџљљљџъъъџъъъџъъъџъъъџєєєџўўўџѕѕѕџфффџхххџъъъџјјјџ§§§џуууџыыыџўўўџѕѕѕџфффџыыыџыыыџяяяџяяяџѓѓѓџѕѕѕџ§§§џўўўџ№№№џљљљџїїїџїїїџїїїџіііџіііџѕѕѕџѕѕѕџѕѕѕџїїїџёёёџўўўџ§§§џ§§§џўўўџ§§§џ§§§џ§§§џ§§§џѓѓѓџѓѓѓџ№№№џэээџїїїџњњњџ§§§џъъъџъъъџчччџтттџцццџтттџхххџцццџхххџъъъџѓѓѓџ№№№џэээџїїїџќќќџѕѕѕџуууџхххџхххџуууџёёёџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџїїїџѕѕѕџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџ№№№џјјјџіііџіііџіііџќќќџџџџџуууџљљљџјјјџљљљџќќќџїїїџљљљџјјјџщщщџїїїџјјјџјјјџљљљџщщщџщщщџщщщџъъъџъъъџюююџћћћџњњњџфффџцццџћћћџ§§§џтттџъъъџ§§§џљљљџфффџыыыџыыыџюююџяяяџѓѓѓџѕѕѕџ§§§џўўўџ№№№џљљљџїїїџїїїџїїїџіііџіііџѕѕѕџѕѕѕџѕѕѕџїїїџёёёџўўўџ§§§џ§§§џўўўџ§§§џ§§§џ§§§џ§§§џѓѓѓџєєєџыыыџьььџјјјџљљљџћћћџђђђџіііџхххџцццџхххџтттџцццџшшшџшшшџюююџ№№№џъъъџёёёџљљљџќќќџњњњџцццџхххџхххџуууџёёёџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџљљљџіііџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџ№№№џјјјџїїїџїїїџіііџќќќџџџџџуууџљљљџїїїџќќќџјјјџєєєџћћћџ§§§џшшшџєєєџјјјџјјјџљљљџщщщџщщщџщщщџъъъџъъъџъъъџюююџўўўџѕѕѕџуууџњњњџ§§§џтттџъъъџўўўџјјјџхххџыыыџыыыџюююџяяяџѓѓѓџѕѕѕџ§§§џўўўџ№№№џљљљџїїїџїїїџїїїџіііџіііџѕѕѕџѕѕѕџѕѕѕџїїїџёёёџўўўџ§§§џ§§§џўўўџ§§§џ§§§џ§§§џ§§§џѓѓѓџєєєџэээџєєєџѕѕѕџїїїџіііџіііџыыыџуууџфффџуууџтттџцццџшшшџщщщџїїїџѓѓѓџшшшџёёёџљљљџ§§§џ§§§џєєєџуууџхххџуууџёёёџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџєєєџѕѕѕџіііџѕѕѕџѕѕѕџѓѓѓџѓѓѓџљљљџіііџѕѕѕџѕѕѕџєєєџѓѓѓџєєєџѕѕѕџѓѓѓџѓѓѓџѕѕѕџіііџѕѕѕџѓѓѓџѓѓѓџєєєџѕѕѕџіііџѕѕѕџѕѕѕџѓѓѓџѓѓѓџєєєџіііџѕѕѕџѕѕѕџєєєџѓѓѓџѕѕѕџіііџѕѕѕџєєєџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѕѕѕџѓѓѓџѓѓѓџѕѕѕџєєєџѓѓѓџѓѓѓџѓѓѓџѕѕѕџѓѓѓџѓѓѓџѕѕѕџѓѓѓџѓѓѓџѕѕѕџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџєєєџ№№№џљљљџїїїџїїїџєєєџћћћџџџџџтттџљљљџїїїџџџџџѕѕѕџчччџєєєџџџџџёёёџѕѕѕџјјјџјјјџљљљџщщщџщщщџыыыџцццџхххџчччџщщщџўўўџјјјџцццџѕѕѕџўўўџфффџъъъџўўўџђђђџщщщџыыыџыыыџюююџяяяџѓѓѓџѕѕѕџ§§§џўўўџ№№№џљљљџїїїџїїїџїїїџіііџіііџѕѕѕџѕѕѕџѕѕѕџїїїџёёёџўўўџ§§§џ§§§џўўўџ§§§џ§§§џ§§§џ§§§џѓѓѓџєєєџяяяџюююџєєєџіііџёёёџчччџсссџуууџфффџтттџуууџхххџчччџшшшџѕѕѕџѓѓѓџщщщџюююџїїїџ§§§џўўўџќќќџфффџфффџуууџёёёџѓѓѓџѓѓѓџѓѓѓџѓѓѓџєєєџљљљџњњњџљљљџњњњџћћћџіііџѓѓѓџљљљџќќќџљљљџћћћџљљљџєєєџѕѕѕџњњњџѓѓѓџїїїџћћћџњњњџќќќџіііџѓѓѓџљљљџњњњџљљљџњњњџџџџџѓѓѓџѕѕѕџћћћџњњњџњњњџўўўџѕѕѕџєєєџњњњџљљљџњњњџљљљџѓѓѓџѓѓѓџѓѓѓџѓѓѓџ§§§џѓѓѓџѓѓѓџћћћџѕѕѕџѓѓѓџѓѓѓџѓѓѓџџџџџѓѓѓџѓѓѓџџџџџѓѓѓџѓѓѓџ§§§џєєєџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџєєєџёёёџјјјџїїїџїїїџіііџњњњџџџџџэээџјјјџїїїџћћћџ§§§џѓѓѓџѕѕѕџ§§§џјјјџјјјџјјјџјјјџљљљџщщщџшшшџяяяџѕѕѕџѓѓѓџёёёџїїїџљљљџэээџъъъџьььџљљљџјјјџіііџљљљџыыыџыыыџыыыџыыыџяяяџ№№№џєєєџѕѕѕџ§§§џўўўџ№№№џљљљџїїїџїїїџїїїџіііџіііџѕѕѕџѕѕѕџѕѕѕџїїїџёёёџўўўџ§§§џ§§§џўўўџ§§§џ§§§џ§§§џ§§§џѓѓѓџєєєџђђђџёёёџђђђџьььџчччџчччџтттџсссџсссџтттџфффџфффџфффџчччџэээџыыыџъъъџђђђџ№№№џќќќџ§§§џљљљџщщщџуууџуууџёёёџєєєџєєєџєєєџєєєџѕѕѕџњњњџєєєџєєєџєєєџіііџќќќџѓѓѓџљљљџјјјџєєєџєєєџћћћџєєєџѕѕѕџњњњџѓѓѓџ§§§џѕѕѕџѓѓѓџіііџќќќџђђђџќќќџїїїџѓѓѓџѓѓѓџўўўџѓѓѓџјјјџјјјџєєєџєєєџќќќџѕѕѕџєєєџєєєџѓѓѓџіііџќќќџѓѓѓџєєєџєєєџѓѓѓџ§§§џєєєџѓѓѓџћћћџѕѕѕџєєєџєєєџєєєџѕѕѕџєєєџєєєџѕѕѕџєєєџєєєџѕѕѕџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџёёёџјјјџїїїџїїїџјјјџјјјџјјјџїїїџїїїџїїїџїїїџљљљџљљљџљљљџјјјџјјјџјјјџјјјџјјјџљљљџщщщџщщщџщщщџыыыџьььџэээџьььџыыыџщщщџъъъџъъъџыыыџюююџюююџэээџьььџьььџыыыџьььџяяяџ№№№џєєєџѕѕѕџ§§§џўўўџ№№№џљљљџїїїџїїїџїїїџіііџіііџѕѕѕџѕѕѕџѕѕѕџїїїџёёёџўўўџ§§§џ§§§џўўўџ§§§џ§§§џ§§§џ§§§џѓѓѓџѕѕѕџшшшџхххџуууџсссџсссџсссџтттџсссџтттџуууџфффџхххџфффџхххџэээџшшшџчччџяяяџ№№№џљљљџіііџќќќџьььџтттџтттџёёёџєєєџєєєџєєєџєєєџіііџњњњџѓѓѓџєєєџєєєџѓѓѓџўўўџѓѓѓџњњњџіііџєєєџѓѓѓџћћћџєєєџѕѕѕџњњњџѓѓѓџўўўџѓѓѓџєєєџѓѓѓџ§§§џѓѓѓџѕѕѕџќќќџўўўџўўўџџџџџѓѓѓџљљљџіііџєєєџѓѓѓџћћћџѕѕѕџєєєџљљљџ§§§џ§§§џѕѕѕџєєєџєєєџєєєџѓѓѓџ§§§џєєєџѓѓѓџћћћџѕѕѕџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџяяяџјјјџїїїџїїїџїїїџїїїџїїїџїїїџїїїџїїїџїїїџїїїџјјјџјјјџјјјџјјјџјјјџјјјџјјјџљљљџщщщџшшшџщщщџщщщџщщщџщщщџщщщџщщщџщщщџщщщџъъъџъъъџъъъџыыыџыыыџыыыџьььџьььџэээџэээџяяяџєєєџѕѕѕџ§§§џўўўџ№№№џљљљџїїїџїїїџїїїџіііџіііџѕѕѕџѕѕѕџѕѕѕџїїїџёёёџўўўџ§§§џ§§§џўўўџ§§§џ§§§џ§§§џ§§§џѓѓѓџѕѕѕџчччџтттџтттџтттџтттџтттџтттџтттџтттџуууџчччџшшшџчччџъъъџьььџэээџъъъџяяяџіііџљљљџяяяџёёёџщщщџтттџтттџёёёџєєєџєєєџєєєџєєєџіііџњњњџєєєџєєєџєєєџѓѓѓџўўўџѓѓѓџљљљџљљљџєєєџѕѕѕџћћћџєєєџѕѕѕџњњњџѓѓѓџќќќџіііџѓѓѓџїїїџћћћџѓѓѓџїїїџєєєџѓѓѓџєєєџ§§§џѓѓѓџјјјџљљљџєєєџѕѕѕџ§§§џѕѕѕџѕѕѕџќќќџєєєџѓѓѓџіііџєєєџєєєџєєєџѓѓѓџ§§§џѓѓѓџѓѓѓџћћћџјјјџѓѓѓџѓѓѓџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџяяяџіііџјјјџїїїџїїїџїїїџїїїџїїїџїїїџїїїџїїїџїїїџїїїџјјјџјјјџјјјџјјјџјјјџјјјџљљљџщщщџшшшџшшшџшшшџшшшџщщщџщщщџщщщџщщщџщщщџщщщџщщщџъъъџъъъџъъъџыыыџыыыџэээџ№№№џыыыџёёёџєєєџѕѕѕџ§§§џўўўџ№№№џљљљџїїїџїїїџїїїџіііџіііџѕѕѕџѕѕѕџѕѕѕџїїїџёёёџўўўџ§§§џ§§§џўўўџ§§§џ§§§џ§§§џ§§§џѓѓѓџѕѕѕџчччџтттџтттџтттџтттџтттџтттџтттџтттџуууџчччџыыыџыыыџыыыџыыыџэээџ№№№џєєєџљљљџљљљџ№№№џэээџтттџуууџсссџёёёџєєєџєєєџєєєџєєєџіііџњњњџєєєџєєєџєєєџѓѓѓџўўўџѓѓѓџњњњџћћћџќќќџќќќџјјјџєєєџіііџњњњџѓѓѓџіііџќќќџќќќџќќќџѕѕѕџѓѓѓџїїїџћћћџќќќџќќќџїїїџєєєџєєєџњњњџќќќџћћћџ§§§џѕѕѕџєєєџћћћџќќќџћћћџјјјџєєєџєєєџєєєџїїїџўўўџќќќџњњњџњњњџњњњџћћћџљљљџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџђђђџяяяџіііџљљљџљљљџљљљџјјјџјјјџјјјџјјјџјјјџјјјџљљљџљљљџљљљџљљљџљљљџљљљџљљљџњњњџыыыџыыыџыыыџыыыџыыыџыыыџыыыџыыыџыыыџыыыџыыыџьььџьььџьььџэээџюююџяяяџюююџъъъџюююџєєєџєєєџѕѕѕџ§§§џўўўџ№№№џљљљџїїїџїїїџїїїџіііџіііџѕѕѕџѕѕѕџѕѕѕџїїїџёёёџўўўџ§§§џ§§§џўўўџ§§§џ§§§џ§§§џ§§§џѓѓѓџѕѕѕџчччџтттџтттџтттџтттџтттџтттџтттџтттџтттџцццџыыыџыыыџыыыџыыыџюююџёёёџѓѓѓџѕѕѕџэээџэээџьььџтттџтттџсссџёёёџєєєџєєєџєєєџєєєџіііџњњњџєєєџєєєџєєєџѓѓѓџўўўџѓѓѓџєєєџєєєџєєєџєєєџєєєџєєєџіііџњњњџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџћћћџѕѕѕџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџ§§§џєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџђђђџюююџэээџ№№№џёёёџђђђџђђђџђђђџђђђџђђђџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџєєєџщщщџшшшџщщщџщщщџщщщџщщщџщщщџщщщџщщщџщщщџщщщџщщщџщщщџщщщџщщщџщщщџшшшџъъъџ№№№џєєєџєєєџєєєџѕѕѕџ§§§џўўўџ№№№џљљљџїїїџїїїџїїїџіііџіііџѕѕѕџѕѕѕџѕѕѕџїїїџёёёџўўўџ§§§џ§§§џўўўџ§§§џ§§§џ§§§џ§§§џѓѓѓџѕѕѕџчччџтттџсссџтттџтттџтттџтттџтттџтттџтттџуууџъъъџъъъџыыыџыыыџэээџёёёџєєєџєєєџчччџшшшџчччџтттџтттџсссџёёёџєєєџєєєџєєєџєєєџіііџљљљџєєєџєєєџєєєџѓѓѓџ§§§џѓѓѓџєєєџєєєџєєєџєєєџєєєџєєєџіііџњњњџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџћћћџѕѕѕџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџѓѓѓџќќќџѕѕѕџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџѕѕѕџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџѕѕѕџѕѕѕџѕѕѕџѕѕѕџѕѕѕџѕѕѕџѕѕѕџѕѕѕџѕѕѕџѕѕѕџѕѕѕџѕѕѕџѕѕѕџѕѕѕџѕѕѕџѕѕѕџѕѕѕџѕѕѕџєєєџєєєџєєєџєєєџѕѕѕџ§§§џўўўџ№№№џљљљџїїїџїїїџїїїџіііџіііџѕѕѕџѕѕѕџѕѕѕџїїїџёёёџўўўџ§§§џ§§§џўўўџ§§§џ§§§џ§§§џ§§§џѓѓѓџѕѕѕџцццџсссџсссџтттџтттџтттџтттџтттџтттџтттџсссџцццџшшшџщщщџъъъџьььџ№№№џѓѓѓџяяяџфффџхххџуууџтттџсссџсссџёёёџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџѓѓѓџєєєџєєєџєєєџєєєџєєєџєєєџєєєџіііџћћћџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџќќќџѕѕѕџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџјјјџћћћџљљљџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџѕѕѕџ§§§џўўўџ№№№џљљљџїїїџїїїџїїїџіііџіііџѕѕѕџѕѕѕџѕѕѕџїїїџёёёџўўўџ§§§џ§§§џўўўџ§§§џ§§§џ§§§џ§§§џѓѓѓџѕѕѕџцццџсссџсссџсссџтттџтттџтттџтттџтттџтттџсссџсссџтттџуууџфффџхххџцццџцццџфффџуууџтттџсссџсссџсссџсссџёёёџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџѕѕѕџѕѕѕџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџѕѕѕџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџіііџіііџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџѕѕѕџ§§§џўўўџ№№№џљљљџїїїџїїїџїїїџіііџіііџѕѕѕџѕѕѕџѕѕѕџїїїџёёёџўўўџ§§§џ§§§џўўўџ§§§џ§§§џ§§§џ§§§џѓѓѓџѕѕѕџцццџсссџсссџсссџсссџсссџсссџсссџсссџсссџтттџсссџсссџсссџсссџсссџтттџфффџуууџтттџсссџсссџсссџсссџсссџёёёџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџѕѕѕџ§§§џўўўџ№№№џљљљџїїїџїїїџїїїџіііџіііџѕѕѕџѕѕѕџѕѕѕџїїїџёёёџўўўџ§§§џ§§§џўўўџ§§§џ§§§џ§§§џ§§§џѓѓѓџѕѕѕџыыыџчччџчччџчччџчччџчччџшшшџшшшџшшшџшшшџшшшџшшшџчччџшшшџшшшџшшшџшшшџщщщџшшшџчччџчччџчччџчччџчччџцццџђђђџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџѕѕѕџ§§§џўўўџ№№№џљљљџїїїџїїїџїїїџіііџіііџѕѕѕџѕѕѕџѕѕѕџїїїџёёёџўўўџ§§§џ§§§џўўўџ§§§џ§§§џ§§§џ§§§џѓѓѓџєєєџєєєџѕѕѕџѕѕѕџѕѕѕџѕѕѕџѕѕѕџѕѕѕџѕѕѕџѕѕѕџѕѕѕџѕѕѕџѕѕѕџѕѕѕџѕѕѕџѕѕѕџѕѕѕџѕѕѕџѕѕѕџѕѕѕџѕѕѕџѕѕѕџѕѕѕџѕѕѕџѕѕѕџѕѕѕџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџѕѕѕџ§§§џўўўџ№№№џљљљџїїїџїїїџїїїџіііџіііџѕѕѕџѕѕѕџѕѕѕџїїїџёёёџўўўџ§§§џ§§§џўўўџ§§§џ§§§џ§§§џ§§§џєєєџ§§§џќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџ§§§џєєєџ§§§џўўўџ№№№џљљљџїїїџїїїџїїїџіііџіііџѕѕѕџѕѕѕџѕѕѕџїїїџёёёџўўўџ§§§џ§§§џўўўџ§§§џ§§§џ§§§џ§§§џєєєџ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џєєєџ§§§џўўўџ№№№џљљљџїїїџїїїџїїїџіііџіііџѕѕѕџѕѕѕџѕѕѕџїїїџёёёџўўўџ§§§џ§§§џўўўџ§§§џ§§§џ§§§џ§§§џєєєџўўўџѓѓѓџяяяџяяяџяяяџ№№№џ№№№џ№№№џ№№№џ№№№џ№№№џ№№№џ№№№џ№№№џ№№№џяяяџ№№№џяяяџяяяџяяяџяяяџяяяџяяяџяяяџяяяџюююџњњњџ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џќќќџўўўџўўўџ§§§џќќќџ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џєєєџ§§§џўўўџ№№№џљљљџїїїџїїїџїїїџіііџіііџѕѕѕџѕѕѕџѕѕѕџїїїџёёёџўўўџ§§§џ§§§џўўўџ§§§џ§§§џ§§§џ§§§џєєєџўўўџыыыџшшшџшшшџщщщџшшшџъъъџщщщџцццџхххџчччџхххџхххџхххџшшшџщщщџтттџчччџщщщџъъъџчччџщщщџцццџцццџчччџцццџљљљџ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џўўўџыыыџчччџјјјџ§§§џќќќџ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џќќќџ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џќќќџ§§§џ§§§џќќќџ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џєєєџ§§§џўўўџ№№№џљљљџїїїџїїїџїїїџіііџіііџѕѕѕџѕѕѕџѕѕѕџїїїџёёёџўўўџ§§§џ§§§џўўўџ§§§џ§§§џ§§§џ§§§џєєєџўўўџёёёџїїїџѕѕѕџёёёџїїїџђђђџѕѕѕџяяяџэээџъъъџьььџъъъџьььџђђђџїїїџіііџіііџјјјџюююџћћћџєєєџѓѓѓџњњњџѕѕѕџ№№№џњњњџ§§§џ§§§џ§§§џ§§§џќќќџћћћџћћћџћћћџќќќџ§§§џќќќџћћћџќќќџћћћџ§§§џќќќџќќќџћћћџћћћџ§§§џћћћџ§§§џ§§§џќќќџќќќџ§§§џќќќџ§§§џќќќџюююџћћћџ§§§џ§§§џќќќџћћћџћћћџќќќџ§§§џќќќџћћћџќќќџћћћџ§§§џќќќџќќќџ§§§џ§§§џ№№№џіііџ§§§џ§§§џ§§§џ§§§џќќќџћћћџќќќџћћћџ§§§џ§§§џћћћџ§§§џ§§§џќќќџћћћџќќќџќќќџ§§§џ§§§џ§§§џ§§§џ§§§џћћћџ§§§џ§§§џќќќџћћћџћћћџћћћџќќќџ§§§џќќќџћћћџћћћџќќќџ§§§џќќќџ§§§џ§§§џ§§§џіііџїїїџ§§§џ§§§џќќќџќќќџ§§§џ§§§џќќќџћћћџќќќџќќќџ§§§џћћћџ§§§џ§§§џћћћџ§§§џ§§§џћћћџ§§§џ§§§џ§§§џ§§§џєєєџ§§§џўўўџ№№№џљљљџїїїџїїїџїїїџіііџіііџѕѕѕџѕѕѕџѕѕѕџїїїџёёёџўўўџ§§§џ§§§џўўўџ§§§џ§§§џ§§§џ§§§џєєєџўўўџыыыџцццџцццџчччџцццџхххџшшшџцццџчччџшшшџшшшџшшшџхххџчччџчччџчччџчччџчччџцццџцццџцццџхххџхххџхххџуууџјјјџ§§§џ§§§џ§§§џ§§§џјјјџфффџъъъџъъъџ№№№џўўўџюююџщщщџэээџтттџ§§§џћћћџэээџъъъџэээџџџџџхххџ§§§џ§§§џщщщџћћћџ§§§џ§§§џ§§§џћћћџчччџѕѕѕџ§§§џќќќџ№№№џщщщџыыыџєєєџўўўџяяяџщщщџэээџуууџ§§§џѕѕѕџ№№№џ§§§џ§§§џѕѕѕџјјјџ§§§џ§§§џ§§§џ§§§џъъъџшшшџњњњџтттџўўўџўўўџуууџўўўџњњњџэээџъъъџьььџїїїџ§§§џ§§§џ§§§џ§§§џ§§§џхххџўўўџ§§§џћћћџуууџъъъџъъъџэээџџџџџхххџъъъџъъъџьььџљљљџ§§§џ§§§џ§§§џќќќџёёёџљљљџ§§§џ§§§џэээџјјјџ§§§џћћћџюююџъъъџьььџїїїџўўўџъъъџўўўџўўўџъъъџўўўџўўўџьььџ§§§џ§§§џ§§§џ§§§џєєєџ§§§џўўўџ№№№џљљљџїїїџїїїџїїїџіііџіііџѕѕѕџѕѕѕџѕѕѕџїїїџёёёџўўўџ§§§џ§§§џўўўџ§§§џ§§§џ§§§џ§§§џєєєџўўўџъъъџуууџуууџуууџфффџфффџхххџцццџцццџцццџцццџхххџуууџуууџуууџуууџфффџфффџфффџфффџуууџуууџуууџуууџтттџјјјџ§§§џ§§§џ§§§џ§§§џјјјџяяяџўўўџ§§§џ§§§џўўўџфффџњњњџ§§§џцццџ§§§џѕѕѕџ№№№џ§§§џ§§§џўўўџчччџ§§§џ§§§џыыыџћћћџ§§§џќќќџўўўџюююџ№№№џяяяџќќќџљљљџьььџўўўџўўўџљљљџўўўџхххџљљљџўўўџцццџ§§§џѕѕѕџёёёџ§§§џќќќџ§§§џ§§§џ§§§џ§§§џ§§§џўўўџфффџџџџџџџџџфффџўўўџўўўџхххџўўўџѓѓѓџђђђџџџџџ§§§џћћћџ§§§џ§§§џ§§§џ§§§џ§§§џчччџўўўџ§§§џћћћџыыыџўўўџ§§§џ§§§џўўўџхххџџџџџ§§§џєєєџыыыџўўўџ§§§џ§§§џћћћџэээџќќќџ§§§џ§§§џюююџјјјџ§§§џѕѕѕџ№№№џўўўџ§§§џњњњџ§§§џ§§§џќќќџќќќџ§§§џќќќџќќќџ§§§џќќќџ§§§џ§§§џ§§§џєєєџ§§§џўўўџ№№№џљљљџїїїџїїїџїїїџіііџіііџѕѕѕџѕѕѕџѕѕѕџїїїџёёёџўўўџ§§§џ§§§џўўўџ§§§џ§§§џ§§§џ§§§џєєєџўўўџъъъџуууџуууџфффџфффџхххџхххџцццџчччџчччџщщщџђђђџљљљџјјјџюююџфффџфффџфффџфффџфффџфффџуууџуууџуууџтттџјјјџ§§§џ§§§џ§§§џ§§§џјјјџяяяџўўўџ§§§џ§§§џ§§§џѕѕѕџцццџфффџтттџ§§§џєєєџђђђџ§§§џќќќџўўўџчччџ§§§џ§§§џыыыџћћћџ§§§џ§§§џљљљџчччџўўўџюююџїїїџњњњџуууџфффџфффџыыыџўўўџѕѕѕџцццџфффџтттџ§§§џѕѕѕџёёёџ§§§џќќќџ§§§џ§§§џ§§§џ§§§џ§§§џўўўџхххџўўўџўўўџфффџўўўџўўўџхххџўўўџѓѓѓџуууџфффџфффџђђђџ§§§џ§§§џ§§§џ§§§џ§§§џчччџўўўџ§§§џћћћџыыыџўўўџ§§§џ§§§џўўўџхххџ§§§џ§§§џ§§§џхххџўўўџ§§§џ§§§џћћћџыыыџ§§§џ§§§џ§§§џюююџјјјџ§§§џѕѕѕџуууџфффџфффџ№№№џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џєєєџ§§§џўўўџ№№№џљљљџїїїџїїїџїїїџіііџіііџѕѕѕџѕѕѕџѕѕѕџїїїџёёёџўўўџ§§§џ§§§џўўўџ§§§џ§§§џ§§§џ§§§џєєєџўўўџъъъџуууџуууџфффџфффџхххџхххџцццџчччџчччџяяяџѕѕѕџђђђџђђђџіііџхххџфффџфффџфффџфффџфффџфффџуууџуууџтттџјјјџ§§§џ§§§џ§§§џ§§§џјјјџуууџцццџцццџэээџ§§§џ§§§џљљљџјјјџъъъџ§§§џјјјџьььџїїїџљљљџўўўџчччџяяяџіііџъъъџћћћџ§§§џ§§§џыыыџіііџ§§§џљљљџъъъџћћћџяяяџјјјџєєєџюююџ§§§џ§§§џљљљџјјјџъъъџ§§§џіііџчччџіііџљљљџ§§§џ§§§џ§§§џ§§§џ§§§џљљљџфффџљљљџ§§§џфффџђђђџѕѕѕџщщщџ§§§џїїїџ№№№џљљљџёёёџєєєџ§§§џ§§§џ§§§џ§§§џ§§§џчччџўўўџ§§§џћћћџуууџцццџцццџъъъџџџџџхххџ§§§џ§§§џ§§§џхххџўўўџ§§§џ§§§џћћћџыыыџ§§§џ§§§џ§§§џюююџјјјџ§§§џјјјџ№№№џљљљџёёёџѓѓѓџ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џєєєџ§§§џўўўџ№№№џљљљџїїїџїїїџїїїџіііџіііџѕѕѕџѕѕѕџѕѕѕџїїїџёёёџўўўџ§§§џ§§§џўўўџ§§§џ§§§џ§§§џ§§§џєєєџўўўџъъъџуууџуууџуууџфффџфффџхххџцццџчччџшшшџяяяџњњњџљљљџљљљџљљљџхххџфффџфффџфффџфффџфффџфффџуууџфффџуууџљљљџ§§§џ§§§џ§§§џ§§§џјјјџ№№№џџџџџџџџџџџџџќќќџ§§§џэээџяяяџјјјџ§§§џ§§§џіііџяяяџ№№№џџџџџчччџїїїџяяяџіііџќќќџ§§§џћћћџђђђџ§§§џќќќџ§§§џёёёџћћћџјјјџяяяџёёёџќќќџ§§§џ§§§џюююџяяяџїїїџ§§§џљљљџєєєџёёёџ№№№џ§§§џ§§§џ§§§џ§§§џ§§§џ№№№џфффџюююџћћћџфффџіііџяяяџјјјџ§§§џ§§§џѕѕѕџяяяџѓѓѓџќќќџ§§§џќќќџ§§§џўўўџўўўџчччџџџџџўўўџћћћџьььџџџџџџџџџџџџџўўўџхххџџџџџ§§§џђђђџэээџўўўџ§§§џ§§§џћћћџэээџќќќџўўўџџџџџяяяџљљљџўўўџўўўџіііџяяяџѓѓѓџќќќџ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џєєєџ§§§џўўўџ№№№џљљљџїїїџїїїџїїїџіііџіііџѕѕѕџѕѕѕџѕѕѕџїїїџёёёџўўўџ§§§џ§§§џўўўџ§§§џ§§§џ§§§џ§§§џєєєџўўўџъъъџуууџуууџуууџфффџфффџхххџцццџчччџщщщџяяяџђђђџяяяџыыыџёёёџфффџфффџфффџфффџфффџфффџфффџхххџхххџуууџљљљџ§§§џ§§§џ§§§џ§§§џјјјџтттџцццџцццџэээџ§§§џќќќџ§§§џ§§§џ§§§џќќќџ§§§џ§§§џ§§§џ§§§џўўўџчччџ§§§џ§§§џ§§§џ§§§џќќќџ§§§џ§§§џќќќџќќќџќќќџ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џќќќџќќќџ§§§џ§§§џ§§§џќќќџ§§§џ§§§џ§§§џ§§§џќќќџ§§§џ§§§џ§§§џќќќџўўўџуууџџџџџўўўџфффџџџџџ§§§џ§§§џќќќџ§§§џ§§§џ§§§џ§§§џ§§§џќќќџ§§§џєєєџхххџцццџтттџцццџхххџќќќџсссџцццџцццџъъъџџџџџхххџцццџчччџэээџћћћџ§§§џ§§§џ§§§џќќќџёёёџћћћџчччџцццџфффџхххџцццџэээџўўўџ§§§џ§§§џ§§§џќќќџ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џєєєџ§§§џўўўџ№№№џљљљџїїїџїїїџїїїџіііџіііџѕѕѕџѕѕѕџѕѕѕџїїїџёёёџўўўџ§§§џ§§§џўўўџ§§§џ§§§џ§§§џ§§§џєєєџўўўџъъъџуууџуууџуууџфффџфффџфффџхххџчччџъъъџђђђџђђђџёёёџъъъџёёёџуууџуууџуууџфффџфффџхххџцццџцццџцццџфффџљљљџ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џќќќџ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џўўўџчччџ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џќќќџ§§§џќќќџўўўџхххџўўўџ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џќќќџ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џќќќџ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џіііџїїїџ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џќќќџ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џєєєџ§§§џўўўџ№№№џљљљџїїїџїїїџїїїџіііџіііџѕѕѕџѕѕѕџѕѕѕџїїїџёёёџўўўџ§§§џ§§§џўўўџ§§§џ§§§џ§§§џ§§§џєєєџўўўџъъъџуууџфффџфффџфффџфффџуууџфффџхххџыыыџіііџјјјџџџџџђђђџщщщџэээџфффџтттџфффџцццџчччџчччџчччџцццџфффџљљљџ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џќќќџўўўџќќќџ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џќќќџўўўџќќќџ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џќќќџ§§§џ§§§џќќќџ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џєєєџ§§§џўўўџ№№№џљљљџїїїџїїїџїїїџіііџіііџѕѕѕџѕѕѕџѕѕѕџїїїџёёёџўўўџ§§§џ§§§џўўўџ§§§џ§§§џ§§§џ§§§џєєєџўўўџъъъџуууџфффџфффџфффџфффџфффџуууџуууџёёёџєєєџўўўџџџџџьььџсссџцццџюююџчччџъъъџъъъџщщщџшшшџчччџцццџфффџљљљџ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џєєєџ§§§џўўўџ№№№џљљљџїїїџїїїџїїїџіііџіііџѕѕѕџѕѕѕџѕѕѕџїїїџёёёџўўўџ§§§џ§§§џўўўџ§§§џ§§§џ§§§џ§§§џєєєџўўўџъъъџфффџфффџфффџфффџфффџфффџтттџ№№№џуууџьььџќќќџчччџсссџсссџсссџїїїџіііџюююџьььџъъъџшшшџчччџцццџфффџљљљџ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џєєєџ§§§џўўўџ№№№џљљљџїїїџїїїџїїїџіііџіііџѕѕѕџѕѕѕџѕѕѕџїїїџёёёџўўўџ§§§џ§§§џўўўџ§§§џ§§§џ§§§џ§§§џєєєџўўўџъъъџфффџфффџфффџфффџхххџхххџуууџѓѓѓџуууџуууџсссџсссџсссџсссџшшшџџџџџћћћџёёёџэээџъъъџщщщџшшшџчччџфффџљљљџ§§§џ§§§џ§§§џ§§§џ§§§џќќќџ§§§џќќќџ§§§џќќќџ§§§џ§§§џ§§§џ§§§џ§§§џќќќџ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џќќќџ§§§џ§§§џ§§§џ§§§џќќќџ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џќќќџ§§§џќќќџ§§§џ§§§џ§§§џ§§§џ§§§џќќќџ§§§џ§§§џ§§§џ§§§џќќќџ§§§џ§§§џќќќџ§§§џћћћџњњњџ§§§џќќќџ§§§џ§§§џ§§§џќќќџ§§§џ§§§џќќќџ§§§џ§§§џ§§§џ§§§џ§§§џќќќџќќќџ§§§џ§§§џ§§§џ§§§џќќќџќќќџ§§§џ§§§џ§§§џ§§§џќќќџќќќџњњњџќќќџ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џєєєџ§§§џўўўџ№№№џљљљџїїїџїїїџїїїџіііџіііџѕѕѕџѕѕѕџѕѕѕџїїїџёёёџўўўџ§§§џ§§§џўўўџ§§§џ§§§џ§§§џ§§§џєєєџўўўџъъъџфффџфффџфффџфффџхххџхххџчччџ№№№џьььџсссџсссџуууџуууџсссџфффџџџџџ§§§џђђђџэээџъъъџщщщџчччџцццџфффџљљљџ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џёёёџ§§§џ§§§џ§§§џёёёџяяяџяяяџяяяџяяяџўўўџѕѕѕџяяяџяяяџ№№№џѕѕѕџ§§§џ§§§џќќќџ§§§џћћћџѕѕѕџ§§§џќќќџїїїџяяяџ№№№џїїїџѕѕѕџўўўџ№№№џўўўџєєєџћћћџ§§§џјјјџєєєџ§§§џїїїџяяяџёёёџћћћџ§§§џ§§§џ§§§џќќќџўўўџьььџђђђџ§§§џ§§§џјјјџёёёџќќќџ§§§џћћћџєєєџ§§§џ§§§џѓѓѓџяяяџїїїџёёёџ§§§џ§§§џїїїџ№№№џ№№№џјјјџ§§§џ§§§џјјјџ№№№џ№№№џњњњџ§§§џќќќџэээџїїїџ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џєєєџ§§§џўўўџ№№№џљљљџїїїџїїїџїїїџіііџіііџѕѕѕџѕѕѕџѕѕѕџїїїџёёёџўўўџ§§§џ§§§џўўўџ§§§џ§§§џ§§§џ§§§џєєєџўўўџъъъџфффџфффџфффџхххџхххџхххџчччџєєєџњњњџѕѕѕџтттџтттџтттџсссџсссџѓѓѓџјјјџюююџьььџъъъџщщщџчччџчччџфффџљљљџ§§§џ§§§џ§§§џ§§§џ§§§џўўўџцццџ§§§џ§§§џўўўџфффџљљљџјјјџјјјџјјјџўўўџъъъџіііџјјјџіііџяяяџщщщџ§§§џ§§§џ§§§џљљљџэээџ§§§џќќќџщщщџіііџіііџъъъџюююџџџџџуууџџџџџыыыџњњњџљљљџъъъџїїїџќќќџэээџїїїџѓѓѓџъъъџўўўџ§§§џ§§§џ§§§џљљљџъъъџ§§§џ§§§џўўўџщщщџюююџіііџ§§§џњњњџыыыџўўўџђђђџьььџјјјџэээџхххџџџџџіііџыыыџіііџїїїџьььџ§§§џљљљџыыыџіііџѓѓѓџэээџћћћџ§§§џѕѕѕџёёёџќќќџ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џєєєџ§§§џўўўџ№№№џљљљџїїїџїїїџїїїџіііџіііџѕѕѕџѕѕѕџѕѕѕџїїїџёёёџўўўџ§§§џ§§§џўўўџ§§§џ§§§џ§§§џ§§§џєєєџўўўџъъъџфффџфффџфффџхххџцццџшшшџыыыџјјјџќќќџџџџџљљљџуууџсссџсссџсссџєєєџ№№№џфффџхххџцццџчччџцццџцццџфффџљљљџ§§§џ§§§џ§§§џ§§§џ§§§џўўўџцццџ§§§џ§§§џўўўџфффџўўўџ§§§џ§§§џ§§§џ§§§џъъъџћћћџ§§§џ§§§џўўўџ№№№џёёёџ§§§џ§§§џљљљџэээџ§§§џќќќџщщщџјјјџћћћџїїїџэээџџџџџфффџџџџџьььџјјјџчччџїїїџ§§§џ§§§џ§§§џќќќџіііџшшшџўўўџ§§§џ§§§џ§§§џђђђџѓѓѓџ§§§џ§§§џјјјџщщщџљљљџ№№№џќќќџњњњџыыыџџџџџцццџћћћџ§§§џћћћџфффџџџџџыыыџљљљџќќќџќќќџќќќџ§§§џѓѓѓџѓѓѓџ§§§џќќќџэээџљљљџ§§§џњњњџэээџќќќџ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џєєєџ§§§џўўўџ№№№џљљљџїїїџїїїџїїїџіііџіііџѕѕѕџѕѕѕџѕѕѕџїїїџёёёџўўўџ§§§џ§§§џўўўџ§§§џ§§§џ§§§џ§§§џєєєџўўўџъъъџфффџфффџхххџцццџшшшџъъъџьььџёёёџћћћџџџџџћћћџѓѓѓџсссџсссџфффџћћћџьььџцццџхххџфффџфффџфффџфффџуууџљљљџ§§§џ§§§џ§§§џ§§§џ§§§џўўўџцццџ§§§џ§§§џўўўџфффџѕѕѕџєєєџєєєџєєєџўўўџъъъџћћћџ§§§џ§§§џ§§§џћћћџъъъџўўўџ§§§џљљљџэээџ§§§џќќќџїїїџьььџъъъџщщщџюююџџџџџфффџџџџџэээџшшшџяяяџўўўџ§§§џќќќџяяяџъъъџьььџњњњџ§§§џ§§§џ§§§џ§§§џюююџјјјџ§§§џ§§§џьььџїїїџќќќџюююџњњњџњњњџыыыџџџџџфффџўўўџ§§§џ§§§џфффџџџџџыыыџщщщџъъъџъъъџсссџўўўџѓѓѓџєєєџ§§§џ§§§џэээџљљљџ§§§џ§§§џъъъџќќќџ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џєєєџ§§§џўўўџ№№№џљљљџїїїџїїїџїїїџіііџіііџѕѕѕџѕѕѕџѕѕѕџїїїџёёёџўўўџ§§§џ§§§џўўўџ§§§џ§§§џ§§§џ§§§џєєєџўўўџъъъџфффџхххџцццџчччџшшшџщщщџыыыџэээџђђђџќќќџњњњџыыыџяяяџюююџ№№№џъъъџчччџшшшџчччџхххџфффџфффџуууџтттџјјјџ§§§џ§§§џ§§§џ§§§џ§§§џўўўџцццџ§§§џ§§§џўўўџфффџєєєџѓѓѓџѓѓѓџѓѓѓџўўўџъъъџћћћџ§§§џ§§§џ§§§џћћћџъъъџўўўџ§§§џљљљџэээџ§§§џќќќџ№№№џ§§§џџџџџђђђџёёёџџџџџфффџџџџџьььџјјјџюююџ№№№џ§§§џќќќџцццџћћћџ§§§џѓѓѓџ§§§џ§§§џ§§§џ§§§џэээџљљљџ§§§џљљљџьььџ§§§џ§§§џѓѓѓџёёёџћћћџыыыџџџџџыыыџѓѓѓџўўўџёёёџхххџџџџџ№№№џяяяџџџџџјјјџъъъџ§§§џіііџьььџќќќџњњњџыыыџњњњџ§§§џ§§§џщщщџќќќџ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џєєєџ§§§џўўўџ№№№џљљљџїїїџїїїџїїїџіііџіііџѕѕѕџѕѕѕџѕѕѕџїїїџёёёџўўўџ§§§џ§§§џўўўџ§§§џ§§§џ§§§џ§§§џєєєџўўўџыыыџхххџхххџцццџчччџчччџщщщџщщщџыыыџэээџяяяџяяяџ№№№џ№№№џчччџуууџхххџхххџцццџчччџцццџхххџфффџфффџтттџјјјџ§§§џ§§§џ§§§џ§§§џ§§§џўўўџцццџ§§§џ§§§џўўўџфффџўўўџ§§§џ§§§џ§§§џ§§§џъъъџћћћџ§§§џ§§§џўўўџ№№№џ№№№џ§§§џ§§§џљљљџэээџ§§§џќќќџєєєџчччџфффџьььџќќќџўўўџфффџџџџџыыыџњњњџќќќџюююџюююџ§§§џёёёџхххџцццџєєєџ§§§џ§§§џ§§§џ§§§џюююџїїїџ§§§џёёёџєєєџќќќџ§§§џ§§§џцццџњњњџыыыџ§§§џћћћџщщщџфффџ№№№џхххџўўўџ§§§џяяяџхххџчччџљљљџ§§§џ§§§џёёёџхххџцццџѕѕѕџќќќџ§§§џќќќџыыыџќќќџ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џєєєџ§§§џўўўџ№№№џљљљџїїїџїїїџїїїџіііџіііџѕѕѕџѕѕѕџѕѕѕџїїїџёёёџўўўџ§§§џ§§§џўўўџ§§§џ§§§џ§§§џ§§§џєєєџўўўџыыыџхххџхххџхххџцццџчччџчччџшшшџщщщџъъъџъъъџшшшџуууџфффџуууџуууџхххџчччџцццџцццџцццџцццџцццџцццџуууџјјјџ§§§џ§§§џ§§§џ§§§џјјјџљљљџхххџљљљџјјјџ§§§џфффџњњњџјјјџјјјџјјјџўўўџъъъџїїїџјјјџїїїџяяяџщщщџ§§§џњњњџјјјџѕѕѕџыыыџљљљџјјјџ§§§џўўўџўўўџ§§§џ§§§џўўўџфффџџџџџыыыџњњњџ§§§џ§§§џ§§§џќќќџ§§§џўўўџўўўџ§§§џќќќџ§§§џ§§§џ§§§џѓѓѓџёёёџ§§§џ§§§џ§§§џ§§§џќќќџќќќџўўўџ§§§џўўўџќќќџ§§§џўўўџўўўџџџџџфффџўўўџќќќџ§§§џўўўџўўўџ§§§џќќќџќќќџ§§§џўўўџўўўџ§§§џќќќџ§§§џљљљџэээџќќќџ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џєєєџ§§§џўўўџ№№№џљљљџїїїџїїїџїїїџіііџіііџѕѕѕџѕѕѕџѕѕѕџїїїџёёёџўўўџ§§§џ§§§џўўўџ§§§џ§§§џ§§§џ§§§џєєєџўўўџыыыџхххџьььџхххџьььџыыыџъъъџьььџьььџэээџшшшџъъъџшшшџъъъџуууџъъъџьььџьььџъъъџьььџхххџьььџяяяџъъъџщщщџљљљџ§§§џ§§§џ§§§џ§§§џэээџюююџяяяџюююџэээџљљљџ№№№џюююџюююџюююџяяяџўўўџєєєџюююџюююџ№№№џєєєџ§§§џ§§§џѓѓѓџюююџюююџяяяџюююџюююџўўўџ§§§џ§§§џ§§§џ§§§џўўўџфффџџџџџыыыџњњњџ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џћћћџшшшџ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џћћћџѓѓѓџ§§§џ§§§џ§§§џ§§§џўўўџфффџўўўџ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џєєєџђђђџќќќџ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џєєєџ§§§џўўўџ№№№џљљљџїїїџїїїџїїїџіііџіііџѕѕѕџѕѕѕџѕѕѕџїїїџёёёџўўўџ§§§џ§§§џўўўџ§§§џ§§§џ§§§џ§§§џєєєџўўўџыыыџфффџяяяџхххџяяяџюююџьььџяяяџыыыџщщщџэээџъъъџщщщџъъъџэээџєєєџшшшџцццџуууџіііџьььџшшшџцццџьььџэээџњњњџ§§§џ§§§џ§§§џќќќџ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џќќќџ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џќќќџ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џќќќџ§§§џ§§§џ§§§џ§§§џўўўџтттџџџџџъъъџњњњџ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џяяяџюююџўўўџ§§§џ§§§џ§§§џ§§§џ§§§џќќќџљљљџ§§§џ§§§џ§§§џ§§§џўўўџуууџўўўџ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џћћћџыыыџјјјџ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џєєєџ§§§џўўўџ№№№џљљљџїїїџїїїџїїїџіііџіііџѕѕѕџѕѕѕџѕѕѕџїїїџёёёџўўўџ§§§џ§§§џўўўџ§§§џ§§§џ§§§џ§§§џєєєџўўўџыыыџфффџяяяџхххџяяяџыыыџшшшџюююџъъъџшшшџэээџъъъџщщщџчччџьььџъъъџщщщџцццџуууџяяяџюююџуууџѓѓѓџчччџуууџљљљџ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џќќќџ§§§џќќќџ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џќќќџ§§§џ§§§џќќќџ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џќќќџ§§§џќќќџ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џќќќџ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џєєєџ§§§џўўўџ№№№џљљљџїїїџїїїџїїїџіііџіііџѕѕѕџѕѕѕџѕѕѕџїїїџёёёџўўўџ§§§џ§§§џўўўџ§§§џ§§§џ§§§џ§§§џєєєџўўўџыыыџэээџьььџыыыџьььџьььџьььџыыыџэээџьььџшшшџьььџьььџцццџ№№№џуууџчччџфффџтттџыыыџфффџщщщџьььџщщщџшшшџљљљџ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џєєєџ§§§џўўўџ№№№џљљљџїїїџїїїџїїїџіііџіііџѕѕѕџѕѕѕџѕѕѕџїїїџёёёџўўўџ§§§џ§§§џўўўџ§§§џ§§§џ§§§џ§§§џєєєџ§§§џіііџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџѕѕѕџѕѕѕџѕѕѕџѕѕѕџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџіііџѓѓѓџћћћџ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џєєєџ§§§џўўўџ№№№џљљљџїїїџїїїџїїїџіііџіііџѕѕѕџѕѕѕџѕѕѕџїїїџёёёџўўўџ§§§џ§§§џўўўџ§§§џ§§§џ§§§џ§§§џєєєџ§§§џќќќџќќќџќќќџ§§§џќќќџќќќџќќќџќќќџќќќџ§§§џќќќџќќќџќќќџќќќџќќќџ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џќќќџ§§§џќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџ§§§џєєєџ§§§џўўўџ№№№џљљљџїїїџїїїџїїїџіііџіііџѕѕѕџѕѕѕџѕѕѕџїїїџёёёџўўўџ§§§џ§§§џўўўџ§§§џ§§§џ§§§џ§§§џєєєџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџєєєџ§§§џўўўџ№№№џљљљџїїїџїїїџїїїџіііџіііџѕѕѕџѕѕѕџѕѕѕџїїїџёёёџўўўџ§§§џ§§§џўўўџ§§§џ§§§џ§§§џ§§§џєєєџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџєєєџ§§§џўўўџ№№№џљљљџїїїџїїїџїїїџіііџіііџѕѕѕџѕѕѕџѕѕѕџїїїџёёёџўўўџ§§§џ§§§џўўўџ§§§џ§§§џ§§§џ§§§џєєєџџџџџэээџцццџцццџцццџцццџцццџцццџцццџцццџцццџшшшџъъъџшшшџъъъџшшшџщщщџъъъџьььџчччџцццџцццџцццџцццџцццџфффџћћћџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўўўџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўўўџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџєєєџ§§§џўўўџ№№№џљљљџїїїџїїїџїїїџіііџіііџѕѕѕџѕѕѕџѕѕѕџїїїџёёёџўўўџ§§§џ§§§џўўўџ§§§џ§§§џ§§§џ§§§џєєєџџџџџщщщџсссџсссџсссџсссџсссџсссџсссџсссџхххџцццџцццџхххџхххџцццџчччџцццџщщщџщщщџсссџсссџсссџсссџсссџсссџњњњџџџџџџџџџџџџџџџџџџџџџўўўџџџџџўўўџўўўџџџџџџџџџџџџџўўўџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўўўџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўўўџџџџџџџџџўўўџшшшџџџџџџџџџџџџџўўўџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўўўџџџџџўўўџџџџџџџџџўўўџџџџџџџџџџџџџџџџџўўўџџџџџџџџџўўўџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўўўџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўўўџџџџџџџџџџџџџџџџџњњњџсссџёёёџџџџџџџџџџџџџџџџџўўўџџџџџџџџџџџџџџџџџџџџџўўўџџџџџџџџџџџџџџџџџўўўџўўўџџџџџўўўџўўўџџџџџўўўџџџџџџџџџџџџџєєєџ§§§џўўўџ№№№џљљљџїїїџїїїџїїїџіііџіііџѕѕѕџѕѕѕџѕѕѕџїїїџёёёџўўўџ§§§џ§§§џўўўџ§§§џ§§§џ§§§џ§§§џєєєџџџџџщщщџсссџсссџсссџсссџсссџсссџтттџцццџхххџхххџцццџхххџхххџцццџшшшџщщщџчччџъъъџшшшџсссџсссџсссџсссџсссџњњњџџџџџџџџџџџџџџџџџџџџџџџџџїїїџџџџџџџџџјјјџўўўџџџџџџџџџ§§§џіііџїїїџїїїџўўўџџџџџћћћџіііџіііџџџџџљљљџўўўџџџџџљљљџќќќџћћћџіііџіііџќќќџџџџџџџџџџџџџўўўџшшшџјјјџїїїџўўўџџџџџ§§§џіііџїїїџјјјџўўўџўўўџјјјџїїїџїїїџўўўџџџџџїїїџџџџџћћћџќќќџџџџџњњњџіііџіііџ§§§џџџџџјјјџўўўџџџџџљљљџ§§§џџџџџ§§§џіііџїїїџ§§§џџџџџўўўџїїїџїїїџїїїџўўўџџџџџџџџџџџџџіііџљљљџіііџўўўџџџџџџџџџяяяџіііџџџџџўўўџџџџџџџџџ§§§џїїїџѕѕѕџљљљџўўўџџџџџњњњџѕѕѕџ§§§џѕѕѕџџџџџџџџџѕѕѕџџџџџџџџџіііџџџџџџџџџџџџџџџџџєєєџ§§§џўўўџ№№№џљљљџїїїџїїїџїїїџіііџіііџѕѕѕџѕѕѕџѕѕѕџїїїџёёёџўўўџ§§§џ§§§џўўўџ§§§џ§§§џ§§§џ§§§џєєєџџџџџщщщџсссџсссџсссџсссџсссџтттџхххџцццџхххџхххџцццџфффџыыыџ№№№џёёёџѓѓѓџ№№№џхххџьььџхххџсссџсссџсссџсссџњњњџџџџџџџџџџџџџџџџџџџџџџџџџхххџџџџџџџџџъъъџ§§§џџџџџџџџџэээџёёёџѓѓѓџфффџ§§§џ§§§џэээџђђђџєєєџџџџџъъъџ§§§џїїїџьььџќќќџюююџєєєџєєєџщщщџџџџџџџџџџџџџўўўџхххџѓѓѓџьььџѓѓѓџџџџџ№№№џюююџѓѓѓџхххџќќќџћћћџхххџєєєџьььџєєєџџџџџфффџџџџџђђђџїїїџџџџџюююџєєєџѓѓѓџыыыџџџџџшшшџўўўџџџџџэээџћћћџўўўџюююџёёёџѓѓѓџёёёџџџџџѓѓѓџьььџѓѓѓџфффџўўўџџџџџџџџџџџџџтттџђђђџюююџ№№№џџџџџўўўџыыыџъъъџўўўџџџџџџџџџџџџџіііџђђђџѕѕѕџяяяџїїїџџџџџшшшџѓѓѓџ§§§џєєєџџџџџџџџџєєєџџџџџџџџџѕѕѕџџџџџџџџџџџџџџџџџєєєџ§§§џўўўџ№№№џљљљџїїїџїїїџїїїџіііџіііџѕѕѕџѕѕѕџѕѕѕџїїїџёёёџўўўџ§§§џ§§§џўўўџ§§§џ§§§џ§§§џ§§§џєєєџџџџџщщщџсссџсссџсссџсссџтттџхххџхххџцццџхххџхххџцццџхххџјјјџљљљџјјјџѕѕѕџєєєџяяяџыыыџщщщџсссџсссџсссџсссџњњњџџџџџџџџџџџџџџџџџџџџџџџџџцццџџџџџџџџџыыыџ§§§џўўўџџџџџщщщџјјјџџџџџъъъџ§§§џњњњџюююџџџџџџџџџџџџџьььџїїїџщщщџ§§§џџџџџўўўџљљљџэээџыыыџџџџџџџџџџџџџўўўџшшшџџџџџ§§§џчччџџџџџшшшџўўўџџџџџьььџќќќџћћћџьььџџџџџќќќџщщщџџџџџхххџџџџџђђђџїїїџџџџџўўўџјјјџыыыџюююџџџџџщщщџўўўџџџџџюююџћћћџќќќџьььџџџџџџџџџўўўџџџџџчччџ§§§џџџџџщщщџўўўџџџџџџџџџџџџџфффџџџџџџџџџхххџџџџџєєєџѓѓѓџѕѕѕџђђђџџџџџўўўџџџџџўўўџ§§§џѓѓѓџщщщџљљљџџџџџцццџџџџџџџџџџџџџўўўџўўўџџџџџўўўџўўўџџџџџўўўџџџџџџџџџџџџџєєєџ§§§џўўўџ№№№џљљљџїїїџїїїџїїїџіііџіііџѕѕѕџѕѕѕџѕѕѕџїїїџёёёџўўўџ§§§џ§§§џўўўџ§§§џ§§§џ§§§џ§§§џєєєџџџџџщщщџсссџсссџсссџтттџчччџцццџцццџхххџхххџцццџцццџьььџђђђџѓѓѓџїїїџѕѕѕџђђђџяяяџшшшџэээџхххџсссџсссџсссџњњњџџџџџџџџџџџџџџџџџџџџџџџџџцццџџџџџџџџџыыыџњњњџџџџџџџџџћћћџъъъџцццџтттџ§§§џћћћџюююџџџџџџџџџџџџџэээџшшшџіііџџџџџџџџџьььџьььџіііџ§§§џџџџџџџџџџџџџўўўџшшшџџџџџ§§§џчччџџџџџшшшџџџџџџџџџьььџќќќџћћћџыыыџџџџџћћћџъъъџџџџџхххџџџџџђђђџїїїџџџџџыыыџэээџјјјџ§§§џџџџџщщщџћћћџџџџџэээџћћћџ§§§џуууџцццџхххџшшшџџџџџчччџќќќџџџџџшшшџўўўџџџџџџџџџџџџџфффџўўўџўўўџхххџџџџџэээџћћћџўўўџэээџ§§§џџџџџџџџџіііџъъъџђђђџћћћџўўўџџџџџцццџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџєєєџ§§§џўўўџ№№№џљљљџїїїџїїїџїїїџіііџіііџѕѕѕџѕѕѕџѕѕѕџїїїџёёёџўўўџ§§§џ§§§џўўўџ§§§џ§§§џ§§§џ§§§џєєєџџџџџщщщџсссџсссџсссџчччџцццџцццџцццџхххџхххџцццџцццџыыыџэээџ№№№џёёёџ№№№џъъъџщщщџхххџьььџъъъџсссџсссџсссџњњњџџџџџџџџџџџџџџџџџџџџџџџџџцццџџџџџџџџџыыыџюююџ№№№џїїїџџџџџёёёџёёёџэээџ§§§џ§§§џюююџяяяџёёёџџџџџыыыџ§§§џ№№№џѓѓѓџџџџџыыыџёёёџёёёџяяяџџџџџџџџџџџџџўўўџуууџёёёџыыыџєєєџџџџџцццџџџџџџџџџыыыџќќќџќќќџцццџёёёџыыыџіііџџџџџхххџџџџџёёёџіііџџџџџыыыџёёёџёёёџ№№№џџџџџъъъџяяяџяяяџьььџќќќџўўўџёёёџёёёџяяяџѓѓѓџџџџџѕѕѕџыыыџёёёџхххџўўўџџџџџџџџџџџџџуууџ№№№џьььџђђђџїїїџяяяџўўўџўўўџђђђџѕѕѕџўўўџџџџџѕѕѕџяяяџёёёџяяяџњњњџёёёџхххџ№№№џќќќџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџєєєџ§§§џўўўџ№№№џљљљџїїїџїїїџїїїџіііџіііџѕѕѕџѕѕѕџѕѕѕџїїїџёёёџўўўџ§§§џ§§§џўўўџ§§§џ§§§џ§§§џ§§§џєєєџџџџџщщщџсссџсссџхххџшшшџцццџхххџхххџхххџхххџцццџшшшџщщщџьььџьььџэээџъъъџыыыџюююџфффџыыыџьььџтттџсссџсссџњњњџџџџџџџџџџџџџўўўџџџџџџџџџчччџџџџџџџџџћћћџќќќџљљљџћћћџџџџџљљљџљљљџќќќџўўўџџџџџ§§§џљљљџљљљџџџџџыыыџ§§§џўўўџћћћџўўўџ§§§џљљљџљљљџќќќџџџџџџџџџџџџџўўўџњњњџњњњџњњњџўўўџџџџџњњњџџџџџџџџџћћћџўўўџћћћџьььџњњњџњњњџўўўџџџџџхххџџџџџ§§§џўўўџџџџџќќќџљљљџљљљџ§§§џџџџџщщщџќќќџљљљџћћћџўўўџџџџџ§§§џљљљџњњњџўўўџџџџџўўўџњњњџћћћџщщщџўўўџџџџџџџџџџџџџфффџ§§§џљљљџўўўџќќќџќќќџџџџџџџџџ§§§џќќќџўўўџџџџџўўўџњњњџљљљџћћћџўўўџњњњџцццџњњњџ§§§џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџєєєџ§§§џўўўџ№№№џљљљџїїїџїїїџїїїџіііџіііџѕѕѕџѕѕѕџѕѕѕџїїїџёёёџўўўџ§§§џ§§§џўўўџ§§§џ§§§џ§§§џ§§§џєєєџџџџџщщщџсссџсссџцццџчччџцццџхххџхххџхххџхххџцццџчччџчччџ№№№џяяяџэээџэээџюююџяяяџшшшџшшшџьььџшшшџсссџсссџњњњџџџџџџџџџџџџџџџџџтттџфффџфффџфффџуууџѕѕѕџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџыыыџ§§§џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџћћћџэээџџџџџџџџџџџџџџџџџхххџџџџџђђђџїїїџџџџџџџџџџџџџџџџџџџџџџџџџщщщџўўўџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџщщщџўўўџџџџџџџџџџџџџфффџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџчччџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџєєєџ§§§џўўўџ№№№џљљљџїїїџїїїџїїїџіііџіііџѕѕѕџѕѕѕџѕѕѕџїїїџёёёџўўўџ§§§џ§§§џўўўџ§§§џ§§§џ§§§џ§§§џєєєџџџџџщщщџсссџсссџцццџчччџцццџхххџфффџхххџхххџцццџчччџхххџяяяџєєєџђђђџѓѓѓџѓѓѓџёёёџѕѕѕџчччџъъъџюююџсссџсссџњњњџџџџџџџџџџџџџўўўџџџџџџџџџџџџџџџџџџџџџџџџџўўўџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџёёёџ§§§џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџќќќџђђђџџџџџџџџџџџџџџџџџьььџџџџџџџџџџџџџўўўџџџџџџџџџџџџџџџџџџџџџяяяџўўўџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ№№№џўўўџџџџџџџџџџџџџьььџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўўўџџџџџўўўџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџєєєџ§§§џўўўџ№№№џљљљџїїїџїїїџїїїџіііџіііџѕѕѕџѕѕѕџѕѕѕџїїїџёёёџўўўџ§§§џ§§§џўўўџ§§§џ§§§џ§§§џ§§§џєєєџџџџџщщщџсссџсссџчччџшшшџхххџхххџхххџхххџхххџцццџчччџцццџцццџэээџѕѕѕџјјјџјјјџїїїџёёёџхххџьььџюююџсссџсссџњњњџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўўўџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўўўџџџџџџџџџўўўџџџџџўўўџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўўўџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўўўџџџџџџџџџџџџџџџџџўўўџџџџџўўўџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџєєєџ§§§џўўўџ№№№џљљљџїїїџїїїџїїїџіііџіііџѕѕѕџѕѕѕџѕѕѕџїїїџёёёџўўўџ§§§џ§§§џўўўџ§§§џ§§§џ§§§џ§§§џєєєџџџџџщщщџсссџсссџщщщџчччџцццџхххџхххџцццџхххџхххџцццџцццџцццџцццџчччџыыыџяяяџьььџчччџъъъџюююџэээџсссџсссџњњњџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўўўџџџџџџџџџўўўџџџџџўўўџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџєєєџ§§§џўўўџ№№№џљљљџїїїџїїїџїїїџіііџіііџѕѕѕџѕѕѕџѕѕѕџїїїџёёёџўўўџ§§§џ§§§џўўўџ§§§џ§§§џ§§§џ§§§џєєєџџџџџщщщџсссџтттџшшшџщщщџцццџцццџхххџхххџхххџхххџхххџцццџцццџцццџшшшџшшшџшшшџшшшџъъъџюююџэээџэээџсссџсссџњњњџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџќќќџфффџђђђџџџџџўўўџџџџџџџџџуууџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџєєєџ§§§џўўўџ№№№џљљљџїїїџїїїџїїїџіііџіііџѕѕѕџѕѕѕџѕѕѕџїїїџёёёџўўўџ§§§џ§§§џўўўџ§§§џ§§§џ§§§џ§§§џєєєџџџџџщщщџсссџсссџчччџщщщџшшшџцццџцццџцццџчччџцццџхххџчччџчччџцццџцццџчччџщщщџчччџэээџьььџьььџщщщџсссџсссџњњњџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўўўџџџџџџџџџџџџџўўўџџџџџџџџџџџџџџџџџџџџџўўўџџџџџўўўџџџџџўўўџўўўџџџџџџџџџџџџџџџџџўўўџўўўџџџџџџџџџџџџџџџџџўўўџџџџџџџџџџџџџџџџџўўўџыыыџћћћџџџџџўўўџџџџџхххџџџџџџџџџџџџџўўўџўўўџџџџџџџџџўўўџўўўџџџџџџџџџџџџџџџџџўўўџџџџџџџџџўўўџўўўџџџџџџџџџџџџџџџџџџџџџўўўџџџџџџџџџџџџџџџџџџџџџџџџџўўўџџџџџџџџџџџџџџџџџўўўџўўўџџџџџџџџџџџџџџџџџџџџџўўўџџџџџџџџџџџџџўўўџџџџџўўўџўўўџџџџџџџџџўўўџџџџџџџџџўўўџџџџџџџџџўўўџџџџџџџџџџџџџџџџџџџџџџџџџџџџџєєєџ§§§џўўўџ№№№џљљљџїїїџїїїџїїїџіііџіііџѕѕѕџѕѕѕџѕѕѕџїїїџёёёџўўўџ§§§џ§§§џўўўџ§§§џ§§§џ§§§џ§§§џєєєџџџџџщщщџсссџсссџчччџчччџщщщџчччџчччџцццџчччџхххџчччџхххџшшшџфффџуууџчччџшшшџуууџщщщџщщщџюююџфффџсссџсссџњњњџџџџџџџџџџџџџџџџџўўўџёёёџчччџьььџќќќџџџџџіііџчччџђђђџџџџџџџџџёёёџшшшџыыыџљљљџџџџџыыыџџџџџџџџџўўўџџџџџѓѓѓџшшшџъъъџјјјџџџџџџџџџѓѓѓџшшшџьььџќќќџџџџџќќќџэээџцццџџџџџџџџџїїїџъъъџџџџџўўўџџџџџфффџёёёџчччџёёёџџџџџўўўџџџџџџџџџўўўџџџџџёёёџчччџэээџ§§§џџџџџѕѕѕџјјјџџџџџџџџџёёёџќќќџџџџџџџџџџџџџџџџџїїїџыыыџчччџъъъџіііџџџџџўўўџќќќџьььџшшшџђђђџџџџџџџџџќќќџъъъџшшшџѕѕѕџщщщџџџџџюююџўўўџџџџџџџџџыыыџџџџџџџџџюююџ§§§џџџџџђђђџњњњџџџџџїїїџіііџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџєєєџ§§§џўўўџ№№№џљљљџїїїџїїїџїїїџіііџіііџѕѕѕџѕѕѕџѕѕѕџїїїџёёёџўўўџ§§§џ§§§џўўўџ§§§џ§§§џ§§§џ§§§џєєєџџџџџщщщџсссџсссџчччџчччџшшшџщщщџчччџчччџцццџуууџчччџшшшџцццџщщщџыыыџыыыџъъъџщщщџщщщџщщщџэээџсссџсссџсссџњњњџџџџџџџџџџџџџџџџџћћћџђђђџџџџџіііџьььџџџџџхххџ§§§џџџџџџџџџёёёџ№№№џўўўџћћћџяяяџџџџџчччџџџџџџџџџџџџџђђђџэээџўўўџќќќџэээџџџџџѕѕѕџыыыџўўўџѕѕѕџэээџџџџџїїїџёёёџџџџџўўўџџџџџјјјџфффџїїїџџџџџџџџџуууџѓѓѓџўўўџьььџѓѓѓџџџџџџџџџџџџџџџџџѓѓѓџьььџўўўџѓѓѓџюююџџџџџѓѓѓџїїїџџџџџџџџџюююџћћћџџџџџџџџџџџџџџџџџыыыџњњњџџџџџћћћџыыыџјјјџџџџџэээџѕѕѕџўўўџыыыџѕѕѕџџџџџщщщџѕѕѕџџџџџяяяџхххџџџџџъъъџ§§§џџџџџџџџџцццџџџџџџџџџыыыџ§§§џџџџџ№№№џљљљџџџџџѕѕѕџєєєџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџєєєџ§§§џўўўџ№№№џљљљџїїїџїїїџїїїџіііџіііџѕѕѕџѕѕѕџѕѕѕџїїїџёёёџўўўџ§§§џ§§§џўўўџ§§§џ§§§џ§§§џ§§§џєєєџџџџџщщщџсссџсссџфффџчччџчччџшшшџшшшџшшшџцццџуууџцццџцццџтттџфффџшшшџчччџцццџшшшџцццџчччџцццџсссџсссџсссџњњњџџџџџџџџџџџџџџџџџџџџџќќќџїїїџёёёџ№№№џџџџџфффџџџџџўўўџџџџџхххџїїїџіііџіііџљљљџџџџџчччџџџџџўўўџџџџџцццџіііџіііџіііџјјјџџџџџэээџћћћџџџџџџџџџшшшџџџџџіііџѓѓѓџџџџџџџџџџџџџыыыџѕѕѕџыыыџўўўџџџџџхххџџџџџџџџџ§§§џщщщџџџџџџџџџџџџџџџџџщщщџ§§§џџџџџџџџџцццџџџџџѓѓѓџїїїџџџџџџџџџюююџћћћџџџџџџџџџџџџџўўўџџџџџџџџџџџџџўўўџёёёџіііџџџџџшшшџџџџџџџџџћћћџьььџџџџџфффџџџџџџџџџџџџџфффџџџџџъъъџ§§§џўўўџџџџџцццџџџџџўўўџџџџџџџџџўўўџџџџџџџџџўўўџџџџџџџџџўўўџџџџџџџџџџџџџџџџџџџџџџџџџџџџџєєєџ§§§џўўўџ№№№џљљљџїїїџїїїџїїїџіііџіііџѕѕѕџѕѕѕџѕѕѕџїїїџёёёџўўўџ§§§џ§§§џўўўџ§§§џ§§§џ§§§џ§§§џєєєџџџџџщщщџсссџсссџуууџщщщџшшшџшшшџчччџщщщџшшшџцццџфффџфффџхххџцццџхххџуууџчччџфффџуууџщщщџуууџсссџсссџсссџњњњџџџџџџџџџџџџџџџџџћћћџэээџђђђџіііџўўўџџџџџфффџџџџџџџџџџџџџхххџєєєџєєєџєєєџцццџџџџџчччџўўўџџџџџџџџџцццџѓѓѓџєєєџєєєџфффџџџџџэээџћћћџџџџџџџџџшшшџџџџџіііџѓѓѓџџџџџџџџџїїїџэээџџџџџёёёџіііџџџџџхххџџџџџџџџџ§§§џщщщџџџџџџџџџџџџџџџџџщщщџ§§§џџџџџџџџџцццџџџџџѓѓѓџїїїџџџџџџџџџюююџћћћџџџџџџџџџџџџџўўўџ§§§џђђђџьььџьььџ№№№џ§§§џџџџџшшшџџџџџџџџџћћћџьььџџџџџфффџџџџџўўўџџџџџфффџџџџџъъъџ§§§џџџџџџџџџцццџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџєєєџ§§§џўўўџ№№№џљљљџїїїџїїїџїїїџіііџіііџѕѕѕџѕѕѕџѕѕѕџїїїџёёёџўўўџ§§§џ§§§џўўўџ§§§џ§§§џ§§§џ§§§џєєєџџџџџщщщџсссџсссџуууџщщщџшшшџчччџцццџшшшџшшшџшшшџчччџшшшџщщщџщщщџшшшџшшшџшшшџшшшџшшшџъъъџсссџсссџсссџсссџњњњџџџџџџџџџџџџџџџџџњњњџыыыџўўўџќќќџѓѓѓџџџџџфффџџџџџџџџџџџџџ№№№џёёёџџџџџ№№№џ№№№џџџџџшшшџюююџџџџџџџџџёёёџюююџџџџџђђђџюююџџџџџѕѕѕџыыыџўўўџѕѕѕџьььџџџџџїїїџѓѓѓџџџџџўўўџяяяџјјјџџџџџњњњџяяяџџџџџуууџєєєџџџџџьььџѓѓѓџџџџџџџџџџџџџџџџџѓѓѓџьььџџџџџѓѓѓџэээџџџџџѓѓѓџщщщџ§§§џќќќџъъъџќќќџџџџџџџџџџџџџџџџџъъъџђђђџћћћџ§§§џўўўџџџџџџџџџэээџѕѕѕџўўўџыыыџєєєџџџџџфффџџџџџџџџџџџџџфффџџџџџыыыџэээџўўўџљљљџшшшџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџєєєџ§§§џўўўџ№№№џљљљџїїїџїїїџїїїџіііџіііџѕѕѕџѕѕѕџѕѕѕџїїїџёёёџўўўџ§§§џ§§§џўўўџ§§§џ§§§џ§§§џ§§§џєєєџџџџџщщщџсссџсссџсссџщщщџщщщџчччџцццџчччџшшшџщщщџщщщџыыыџыыыџъъъџъъъџъъъџъъъџъъъџёёёџцццџсссџсссџсссџсссџњњњџџџџџџџџџџџџџџџџџўўўџёёёџцццџщщщџњњњџюююџуууџхххџђђђџџџџџџџџџюююџцццџюююџџџџџџџџџыыыџѕѕѕџцццџѕѕѕџџџџџ№№№џцццџьььџўўўџџџџџџџџџђђђџцццџыыыџќќќџўўўџуууџхххџфффџўўўџяяяџ§§§џџџџџџџџџяяяџќќќџчччџ№№№џцццџ№№№џџџџџўўўџџџџџџџџџўўўџџџџџёёёџцццџьььџ§§§џџџџџѕѕѕџђђђџщщщџчччџєєєџўўўџџџџџџџџџџџџџџџџџчччџџџџџџџџџўўўџ§§§џўўўџўўўџќќќџыыыџцццџђђђџџџџџџџџџчччџџџџџџџџџџџџџшшшџџџџџэээџѕѕѕџчччџчччџјјјџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџєєєџ§§§џўўўџ№№№џљљљџїїїџїїїџїїїџіііџіііџѕѕѕџѕѕѕџѕѕѕџїїїџёёёџўўўџ§§§џ§§§џўўўџ§§§џ§§§џ§§§џ§§§џєєєџџџџџщщщџсссџсссџсссџцццџъъъџшшшџцццџцццџцццџчччџщщщџъъъџъъъџыыыџъъъџъъъџыыыџ№№№џяяяџсссџсссџсссџсссџсссџњњњџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџтттџџџџџџџџџўўўџџџџџџџџџџџџџџџџџџџџџўўўџџџџџџџџџџџџџџџџџўўўџџџџџџџџџџџџџџџџџўўўџўўўџџџџџџџџџџџџџџџџџџџџџїїїџѓѓѓџџџџџџџџџџџџџџџџџўўўџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўўўџўўўџџџџџџџџџўўўџўўўџџџџџџџџџџџџџџџџџўўўџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџёёёџюююџёёёџ№№№џюююџњњњџџџџџџџџџџџџџџџџџџџџџўўўџўўўџџџџџўўўџџџџџўўўџџџџџўўўџџџџџџџџџџџџџџџџџџџџџўўўџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџєєєџ§§§џўўўџ№№№џљљљџїїїџїїїџїїїџіііџіііџѕѕѕџѕѕѕџѕѕѕџїїїџёёёџўўўџ§§§џ§§§џўўўџ§§§џ§§§џ§§§џ§§§џєєєџџџџџщщщџсссџсссџсссџтттџъъъџшшшџцццџцццџцццџчччџшшшџшшшџшшшџщщщџшшшџщщщџыыыџёёёџфффџсссџсссџсссџсссџсссџњњњџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџљљљџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ§§§џќќќџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўўўџўўўџњњњџљљљџљљљџќќќџўўўџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџєєєџ§§§џўўўџ№№№џљљљџїїїџїїїџїїїџіііџіііџѕѕѕџѕѕѕџѕѕѕџїїїџёёёџўўўџўўўџ§§§џўўўџ§§§џ§§§џ§§§џ§§§џєєєџџџџџщщщџсссџсссџсссџсссџхххџъъъџшшшџчччџцццџчччџшшшџщщщџшшшџшшшџшшшџщщщџяяяџъъъџсссџсссџсссџсссџсссџсссџњњњџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџєєєџ§§§џўўўџ№№№џљљљџїїїџїїїџїїїџіііџіііџѕѕѕџѕѕѕџѕѕѕџїїїџёёёџњњњџћћћџ§§§џўўўџ§§§џ§§§џ§§§џ§§§џєєєџџџџџщщщџсссџсссџсссџсссџсссџцццџъъъџшшшџшшшџшшшџщщщџъъъџыыыџъъъџъъъџьььџэээџсссџсссџсссџсссџсссџсссџсссџњњњџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџєєєџ§§§џўўўџ№№№џљљљџїїїџїїїџїїїџіііџіііџѕѕѕџѕѕѕџѕѕѕџїїїџёёёџўўўџ§§§џ§§§џўўўџ§§§џ§§§џ§§§џ§§§џєєєџџџџџчччџсссџсссџсссџсссџсссџсссџтттџцццџшшшџщщщџъъъџъъъџыыыџыыыџыыыџчччџсссџсссџсссџсссџсссџсссџсссџсссџљљљџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџєєєџ§§§џўўўџ№№№џљљљџїїїџїїїџїїїџіііџіііџѕѕѕџѕѕѕџѕѕѕџїїїџёёёџћћћџќќќџ§§§џўўўџ§§§џ§§§џ§§§џ§§§џєєєџџџџџ§§§џќќќџќќќџќќќџќќќџќќќџќќќџќќќџ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџўўўџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџєєєџ§§§џўўўџ№№№џљљљџїїїџїїїџїїїџіііџіііџѕѕѕџѕѕѕџѕѕѕџїїїџёёёџ§§§џ§§§џ§§§џўўўџ§§§џ§§§џ§§§џ§§§џєєєџџџџџўўўџўўўџўўўџўўўџўўўџўўўџўўўџўўўџўўўџўўўџўўўџўўўџўўўџўўўџўўўџўўўџўўўџўўўџўўўџўўўџўўўџўўўџўўўџўўўџўўўџўўўџўўўџўўўџўўўџўўўџўўўџўўўџўўўџўўўџўўўџўўўџўўўџўўўџўўўџўўўџўўўџўўўџўўўџўўўџўўўџўўўџўўўџўўўџўўўџўўўџўўўџўўўџўўўџўўўџўўўџўўўџўўўџўўўџўўўџўўўџўўўџўўўџўўўџўўўџўўўџўўўџўўўџўўўџўўўџўўўџўўўџўўўџўўўџўўўџўўўџўўўџўўўџўўўџўўўџўўўџўўўџўўўџўўўџўўўџўўўџўўўџўўўџўўўџўўўџўўўџўўўџўўўџўўўџўўўџўўўџўўўџўўўџўўўџўўўџўўўџўўўџўўўџўўўџўўўџўўўџўўўџўўўџўўўџўўўџўўўџўўўџўўўџўўўџўўўџўўўџўўўџўўўџўўўџўўўџўўўџўўўџўўўџўўўџўўўџўўўџўўўџўўўџўўўџўўўџўўўџўўўџўўўџўўўџўўўџўўўџўўўџўўўџўўўџџџџџєєєџ§§§џўўўџ№№№џљљљџїїїџїїїџїїїџіііџіііџѕѕѕџѕѕѕџѕѕѕџїїїџёёёџ§§§џ§§§џ§§§џўўўџ§§§џ§§§џ§§§џ§§§џєєєџ§§§џќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџ§§§џєєєџ§§§џўўўџ№№№џљљљџїїїџїїїџїїїџіііџіііџѕѕѕџѕѕѕџѕѕѕџїїїџёёёџћћћџќќќџ§§§џўўўџ§§§џ§§§џ§§§џ§§§џєєєџ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џєєєџ§§§џўўўџ№№№џљљљџїїїџїїїџїїїџіііџіііџѕѕѕџѕѕѕџѕѕѕџїїїџёёёџўўўџўўўџ§§§џўўўџ§§§џ§§§џ§§§џ§§§џєєєџўўўџѕѕѕџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџћћћџ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џќќќџќќќџ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џќќќџќќќџќќќџ§§§џќќќџ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џєєєџ§§§џўўўџ№№№џљљљџїїїџїїїџїїїџіііџіііџѕѕѕџѕѕѕџѕѕѕџїїїџёёёџњњњџћћћџ§§§џўўўџ§§§џ§§§џ§§§џ§§§џєєєџўўўџѕѕѕџђђђџ№№№џёёёџёёёџѓѓѓџёёёџёёёџђђђџђђђџёёёџѓѓѓџёёёџђђђџёёёџёёёџёёёџђђђџ№№№џѓѓѓџ№№№џюююџюююџ№№№џёёёџћћћџ§§§џ§§§џ§§§џ§§§џ§§§џќќќџ§§§џќќќџќќќџ§§§џ§§§џ§§§џќќќџ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џќќќџ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џќќќџ§§§џ§§§џќќќџчччџџџџџ§§§џ§§§џќќќџ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џќќќџ§§§џќќќџ§§§џ§§§џќќќџ§§§џ§§§џ§§§џ§§§џќќќџ§§§џ§§§џќќќџ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џќќќџ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џќќќџ§§§џ§§§џ§§§џ§§§џљљљџчччџяяяџќќќџ§§§џ§§§џ§§§џќќќџ§§§џ§§§џ§§§џ§§§џ§§§џќќќџ§§§џќќќџќќќџ§§§џќќќџќќќџ§§§џќќќџ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џєєєџ§§§џўўўџ№№№џљљљџїїїџїїїџїїїџіііџіііџѕѕѕџѕѕѕџѕѕѕџїїїџёёёџўўўџ§§§џ§§§џўўўџ§§§џ§§§џ§§§џ§§§џєєєџўўўџѕѕѕџяяяџёёёџњњњџјјјџќќќџљљљџѕѕѕџљљљџћћћџјјјџћћћџљљљџњњњџњњњџњњњџљљљџњњњџјјјџќќќџѕѕѕџяяяџюююџюююџяяяџћћћџ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џюююџ§§§џ§§§џёёёџќќќџ§§§џ§§§џљљљџьььџяяяџяяяџќќќџ§§§џіііџьььџыыыџўўўџёёёџћћћџ§§§џђђђџјјјџіііџьььџьььџїїїџ§§§џ§§§џ§§§џќќќџцццџ№№№џюююџќќќџ§§§џњњњџэээџяяяџяяяџћћћџћћћџяяяџюююџяяяџќќќџўўўџюююџ§§§џѕѕѕџјјјџ§§§џєєєџыыыџэээџљљљџўўўџ№№№џќќќџ§§§џѓѓѓџњњњџ§§§џљљљџэээџэээџљљљџ§§§џќќќџюююџяяяџюююџќќќџ§§§џ§§§џ§§§џэээџђђђџэээџћћћџ§§§џџџџџэээџёёёџўўўџќќќџ§§§џ§§§џњњњџяяяџыыыџёёёџќќќџ§§§џэээџўўўџўўўџыыыџўўўџўўўџыыыџўўўџ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џєєєџ§§§џўўўџ№№№џљљљџїїїџїїїџјјјџїїїџїїїџіііџѕѕѕџѕѕѕџїїїџёёёџћћћџќќќџ§§§џўўўџ§§§џ§§§џ§§§џ§§§џєєєџўўўџѕѕѕџяяяџяяяџ№№№џ№№№џёёёџ№№№џяяяџ№№№џёёёџ№№№џ№№№џёёёџ№№№џ№№№џ№№№џ№№№џ№№№џ№№№џ№№№џяяяџяяяџюююџюююџяяяџћћћџ§§§џ§§§џ§§§џ§§§џ§§§џўўўџцццџ§§§џ§§§џъъъџћћћџ§§§џўўўџщщщџіііџїїїџхххџћћћџњњњџыыыџјјјџћћћџ§§§џыыыџћћћџѓѓѓџэээџ§§§џэээџњњњџљљљџцццџўўўџ§§§џ§§§џќќќџхххџїїїџ№№№џэээџџџџџыыыџѓѓѓџјјјџцццџњњњџњњњџцццџљљљџяяяџ№№№џџџџџхххџўўўџёёёџѕѕѕџ§§§џяяяџњњњџјјјџчччџџџџџшшшџќќќџ§§§џэээџљљљџћћћџыыыџѕѕѕџјјјџяяяџџџџџюююџ№№№џїїїџхххџќќќџ§§§џ§§§џўўўџуууџєєєџѓѓѓџыыыџўўўџћћћџъъъџъъъџћћћџ§§§џ§§§џ§§§џєєєџіііџћћћџ№№№џєєєџ§§§џћћћџ§§§џ§§§џћћћџ§§§џ§§§џћћћџ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џєєєџ§§§џўўўџ№№№џљљљџїїїџїїїџэээџэээџэээџэээџіііџѕѕѕџїїїџёёёџ§§§џ§§§џ§§§џўўўџ§§§џ§§§џ§§§џ§§§џєєєџўўўџѕѕѕџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџ№№№џюююџюююџяяяџћћћџ§§§џ§§§џ§§§џ§§§џ§§§џўўўџцццџ§§§џ§§§џъъъџћћћџ§§§џўўўџыыыџєєєџњњњџщщщџћћћџљљљџэээџ§§§џќќќџ§§§џыыыџђђђџъъъџ§§§џ§§§џќќќџѕѕѕџьььџюююџ§§§џ§§§џ§§§џќќќџшшшџ§§§џ§§§џхххџџџџџчччџ§§§џ§§§џьььџњњњџњњњџьььџ§§§џќќќџшшшџџџџџхххџўўўџёёёџѕѕѕџ§§§џћћћџѓѓѓџъъъџ№№№џџџџџшшшџќќќџ§§§џэээџљљљџњњњџъъъџљљљџљљљџћћћџўўўџцццџ§§§џ§§§џщщщџќќќџ§§§џ§§§џўўўџфффџўўўџўўўџфффџўўўџёёёџѓѓѓџіііџяяяџ§§§џ§§§џ§§§џќќќџјјјџ№№№џыыыџјјјџ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џєєєџ§§§џўўўџ№№№џљљљџїїїџїїїџјјјџїїїџїїїџіііџѕѕѕџѕѕѕџїїїџёёёџ§§§џ§§§џ§§§џўўўџ§§§џ§§§џ§§§џ§§§џєєєџўўўџѕѕѕџѓѓѓџѓѓѓџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџёёёџюююџюююџяяяџћћћџ§§§џ§§§џ§§§џ§§§џ§§§џўўўџцццџ§§§џ§§§џыыыџєєєџ§§§џ§§§џћћћџёёёџюююџхххџћћћџљљљџьььџќќќџўўўџ§§§џьььџэээџ№№№џќќќџўўўџшшшџёёёџјјјџіііџ§§§џ§§§џ§§§џќќќџцццџќќќџјјјџшшшџџџџџчччџ§§§џ§§§џьььџњњњџњњњџщщщџ§§§џіііџыыыџџџџџхххџўўўџёёёџѕѕѕџ§§§џшшшџђђђџљљљџїїїџўўўџщщщџіііџ§§§џьььџљљљџћћћџцццџэээџыыыџчччџџџџџшшшџјјјџќќќџчччџќќќџ§§§џ§§§џўўўџфффџњњњџњњњџцццџќќќџэээџњњњџќќќџэээџњњњџ§§§џ§§§џђђђџэээџіііџјјјџњњњџ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џєєєџ§§§џўўўџ№№№џљљљџїїїџїїїџёёёџђђђџёёёџёёёџіііџѕѕѕџїїїџёёёџћћћџќќќџ§§§џўўўџ§§§џ§§§џ§§§џ§§§џєєєџўўўџѕѕѕџђђђџёёёџяяяџяяяџяяяџяяяџяяяџяяяџяяяџяяяџяяяџяяяџяяяџяяяџяяяџяяяџяяяџяяяџяяяџяяяџяяяџюююџюююџяяяџћћћџ§§§џ§§§џ§§§џ§§§џ§§§џўўўџцццџ§§§џўўўџъъъџяяяџшшшџёёёџџџџџчччџчччџюююџќќќџќќќџ№№№џчччџшшшџџџџџыыыџћћћџєєєџюююџќќќџ№№№џшшшџшшшџяяяџ§§§џ§§§џ§§§џќќќџуууџыыыџчччџїїїџўўўџцццџ§§§џ§§§џыыыџњњњџњњњџчччџщщщџшшшџјјјџџџџџхххџўўўџ№№№џѕѕѕџ§§§џэээџшшшџщщщџђђђџџџџџщщщџяяяџчччџьььџћћћџќќќџђђђџшшшџщщщџіііџ§§§џїїїџчччџъъъџхххџќќќџ§§§џ§§§џўўўџуууџэээџцццџѕѕѕџєєєџ№№№џ§§§џќќќџђђђџђђђџќќќџ§§§џїїїџъъъџшшшџыыыџљљљџ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џєєєџ§§§џўўўџ№№№џљљљџїїїџїїїџєєєџєєєџєєєџєєєџѕѕѕџѕѕѕџїїїџёёёџўўўџўўўџ§§§џўўўџ§§§џ§§§џ§§§џ§§§џєєєџўўўџѕѕѕџђђђџюююџюююџюююџюююџюююџюююџюююџюююџюююџюююџюююџюююџюююџюююџюююџюююџюююџюююџюююџюююџюююџюююџ№№№џћћћџ§§§џ§§§џ§§§џ§§§џќќќџўўўџцццџ§§§џќќќџ§§§џ§§§џ§§§џ§§§џќќќџ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џыыыџћћћџ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џќќќџ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џќќќџ§§§џќќќџќќќџ§§§џ§§§џњњњџьььџ§§§џ§§§џ§§§џўўўџхххџўўўџќќќџќќќџќќќџ§§§џ§§§џ§§§џ§§§џўўўџшшшџќќќџ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џќќќџ§§§џ§§§џўўўџщщщџќќќџ§§§џ§§§џўўўџфффџџџџџ§§§џ§§§џ§§§џ§§§џќќќџќќќџ§§§џ§§§џ§§§џќќќџ§§§џ§§§џ§§§џ§§§џ§§§џќќќџ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џєєєџ§§§џўўўџ№№№џљљљџїїїџїїїџїїїџіііџіііџѕѕѕџѕѕѕџѕѕѕџїїїџёёёџњњњџћћћџ§§§џўўўџ§§§џ§§§џ§§§џ§§§џєєєџўўўџѕѕѕџяяяџюююџюююџюююџюююџюююџюююџюююџюююџюююџяяяџяяяџяяяџяяяџяяяџяяяџяяяџяяяџяяяџяяяџяяяџяяяџ№№№џёёёџћћћџ§§§џ§§§џ§§§џ§§§џчччџшшшџъъъџшшшџшшшџіііџ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џъъъџћћћџ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џљљљџьььџ§§§џ§§§џ§§§џўўўџфффџўўўџѓѓѓџїїїџ§§§џ§§§џ§§§џ§§§џ§§§џўўўџшшшџќќќџ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џўўўџшшшџќќќџ§§§џ§§§џўўўџуууџўўўџ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џєєєџ§§§џўўўџ№№№џљљљџїїїџїїїџюююџяяяџяяяџяяяџіііџѕѕѕџїїїџёёёџўўўџ§§§џ§§§џўўўџ§§§џ§§§џ§§§џ§§§џєєєџўўўџѕѕѕџяяяџюююџюююџюююџюююџюююџюююџюююџюююџюююџёёёџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџћћћџ§§§џ§§§џ§§§џќќќџўўўџўўўџўўўџўўўџўўўџ§§§џќќќџ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џіііџќќќџ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џћћћџіііџ§§§џ§§§џ§§§џ§§§џѓѓѓџ§§§џ§§§џ§§§џќќќџ§§§џ§§§џ§§§џ§§§џ§§§џѕѕѕџќќќџ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џѕѕѕџќќќџ§§§џ§§§џ§§§џѓѓѓџ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џєєєџ§§§џўўўџ№№№џљљљџїїїџїїїџїїїџїїїџіііџіііџѕѕѕџѕѕѕџїїїџёёёџћћћџќќќџ§§§џўўўџ§§§џ§§§џ§§§џ§§§џєєєџўўўџєєєџяяяџюююџюююџюююџюююџюююџюююџюююџюююџюююџђђђџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџђђђџђђђџђђђџђђђџђђђџћћћџ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џќќќџ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џќќќџ§§§џ§§§џќќќџ§§§џќќќџ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џќќќџ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џќќќџ§§§џ§§§џ§§§џ§§§џќќќџ§§§џќќќџ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џєєєџ§§§џўўўџ№№№џљљљџїїїџїїїџїїїџіііџіііџѕѕѕџѕѕѕџѕѕѕџїїїџёёёџ§§§џ§§§џ§§§џўўўџ§§§џ§§§џ§§§џ§§§џєєєџўўўџєєєџяяяџюююџюююџюююџюююџюююџюююџюююџюююџюююџ№№№џђђђџђђђџђђђџђђђџђђђџѓѓѓџђђђџђђђџђђђџђђђџђђђџђђђџђђђџћћћџ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џєєєџ§§§џўўўџ№№№џљљљџїїїџїїїџїїїџіііџіііџѕѕѕџѕѕѕџѕѕѕџїїїџёёёџ§§§џ§§§џ§§§џўўўџ§§§џ§§§џ§§§џ§§§џєєєџўўўџєєєџяяяџюююџюююџюююџюююџюююџюююџюююџюююџюююџюююџ№№№џёёёџёёёџёёёџёёёџёёёџёёёџёёёџёёёџёёёџёёёџёёёџёёёџћћћџ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џєєєџ§§§џўўўџ№№№џљљљџїїїџїїїџїїїџіііџіііџѕѕѕџѕѕѕџѕѕѕџїїїџёёёџћћћџќќќџ§§§џўўўџ§§§џ§§§џ§§§џ§§§џєєєџўўўџєєєџяяяџюююџюююџюююџюююџюююџюююџюююџюююџюююџюююџюююџюююџюююџюююџюююџюююџюююџюююџюююџюююџюююџюююџяяяџћћћџ§§§џ§§§џ§§§џ§§§џ§§§џўўўџўўўџўўўџ§§§џќќќџќќќџўўўџўўўџ§§§џќќќџ§§§џ§§§џќќќџќќќџ§§§џ§§§џќќќџ§§§џўўўџўўўџўўўџ§§§џќќќџўўўџќќќџўўўџ§§§џўўўџўўўџ§§§џќќќџќќќџ§§§џўўўџўўўџ§§§џќќќџ§§§џ§§§џўўўџўўўџ§§§џќќќџ§§§џўўўџўўўџ§§§џўўўџќќќџ§§§џ§§§џќќќџќќќџўўўџ§§§џ§§§џ§§§џ§§§џќќќџ§§§џўўўџўўўџ§§§џќќќџќќќџўўўџќќќџ§§§џќќќџўўўџќќќџ§§§џ§§§џќќќџ§§§џўўўџўўўџўўўџўўўџ§§§џќќќџќќќџ§§§џўўўџўўўџ§§§џ§§§џ§§§џ§§§џўўўџўўўџўўўџ§§§џќќќџ§§§џ§§§џќќќџ§§§џўўўџќќќџќќќџўўўџќќќџ§§§џ§§§џ§§§џ§§§џ§§§џєєєџ§§§џўўўџ№№№џљљљџїїїџїїїџїїїџіііџіііџѕѕѕџѕѕѕџѕѕѕџїїїџёёёџўўўџўўўџ§§§џўўўџ§§§џ§§§џ§§§џ§§§џєєєџўўўџєєєџяяяџюююџюююџюююџюююџюююџюююџюююџюююџюююџюююџюююџюююџюююџюююџюююџюююџюююџюююџюююџюююџюююџюююџяяяџћћћџ§§§џ§§§џ§§§џ§§§џћћћџэээџфффџшшшџљљљџ§§§џќќќџьььџфффџюююџ§§§џєєєџѓѓѓџ§§§џ§§§џяяяџїїїџ§§§џљљљџъъъџфффџъъъџљљљџўўўџуууџџџџџьььџ№№№џхххџчччџјјјџ§§§џ§§§џѓѓѓџхххџцццџєєєџ§§§џќќќџ№№№џфффџчччџїїїџ§§§џїїїџчччџфффџюююџуууџўўўџёёёџѕѕѕџ§§§џ§§§џьььџљљљџ§§§џ§§§џ§§§џ§§§џјјјџшшшџфффџюююџ§§§џўўўџуууџўўўџ§§§џўўўџфффџўўўџ§§§џ§§§џ§§§џњњњџэээџхххџфффџъъъџњњњџ§§§џ§§§џ№№№џхххџчччџїїїџќќќџќќќџ№№№џфффџчччџэээџєєєџ§§§џјјјџюююџ§§§џћћћџщщщџўўўџ§§§џхххџўўўџ§§§џ§§§џ§§§џ§§§џ§§§џєєєџ§§§џўўўџ№№№џљљљџїїїџїїїџїїїџіііџіііџѕѕѕџѕѕѕџѕѕѕџїїїџёёёџњњњџћћћџ§§§џўўўџ§§§џ§§§џ§§§џ§§§џєєєџўўўџєєєџяяяџюююџюююџюююџюююџюююџюююџюююџюююџюююџюююџюююџюююџюююџюююџюююџюююџюююџюююџюююџюююџюююџюююџяяяџћћћџ§§§џ§§§џ§§§џ§§§џњњњџѕѕѕџџџџџіііџъъъџџџџџэээџ№№№џўўўџѓѓѓџ§§§џєєєџѓѓѓџ§§§џ§§§џяяяџїїїџќќќџьььџїїїџџџџџљљљџѕѕѕџџџџџфффџџџџџьььџэээџўўўџїїїџыыыџ§§§џјјјџыыыџћћћџћћћџыыыџљљљџќќќџђђђџўўўџјјјџхххџџџџџшшшџіііџџџџџіііџуууџўўўџёёёџѕѕѕџ§§§џ§§§џьььџљљљџ§§§џ§§§џ§§§џ§§§џыыыџіііџ§§§џэээџђђђџџџџџфффџўўўџ§§§џўўўџфффџўўўџ§§§џ§§§џ§§§џєєєџѕѕѕџ§§§џўўўџіііџчччџўўўџѓѓѓџэээџ§§§џјјјџыыыџќќќџјјјџыыыџќќќџћћћџщщщџєєєџ§§§џљљљџђђђџ§§§џќќќџяяяџ§§§џ§§§џьььџўўўџ§§§џ§§§џ§§§џ§§§џ§§§џєєєџ§§§џўўўџ№№№џљљљџїїїџїїїџїїїџіііџіііџѕѕѕџѕѕѕџѕѕѕџїїїџёёёџўўўџ§§§џ§§§џўўўџ§§§џ§§§џ§§§џ§§§џєєєџўўўџєєєџяяяџюююџюююџюююџюююџюююџюююџюююџюююџюююџюююџюююџюююџюююџюююџюююџюююџюююџюююџюююџюююџюююџюююџяяяџћћћџ§§§џ§§§џ§§§џ§§§џќќќџїїїџюююџыыыџѓѓѓџџџџџхххџ§§§џ§§§џ§§§џ§§§џєєєџѓѓѓџ§§§џ§§§џяяяџїїїџќќќџфффџьььџыыыџьььџѕѕѕџџџџџфффџџџџџыыыџњњњџ§§§џўўўџчччџ§§§џѕѕѕџёёёџ§§§џ§§§џ№№№џіііџќќќџљљљџюююџыыыџ№№№џўўўџѓѓѓџьььџыыыџьььџуууџўўўџёёёџіііџ§§§џ§§§џьььџљљљџ§§§џ§§§џ§§§џ§§§џшшшџўўўџ§§§џњњњџьььџџџџџфффџўўўџќќќџўўўџфффџўўўџ§§§џ§§§џќќќџ§§§џўўўџўўўџўўўџїїїџцццџџџџџюююџјјјџ§§§џ§§§џъъъџћћћџјјјџяяяџ§§§џ§§§џѓѓѓџѓѓѓџ§§§џ§§§џ§§§џќќќџ§§§џ§§§џќќќџќќќџўўўџќќќџ§§§џ§§§џ§§§џ§§§џ§§§џєєєџ§§§џўўўџ№№№џљљљџїїїџїїїџїїїџіііџіііџѕѕѕџѕѕѕџѕѕѕџїїїџёёёџћћћџќќќџ§§§џўўўџ§§§џ§§§џ§§§џ§§§џєєєџўўўџєєєџяяяџюююџюююџюююџюююџюююџюююџюююџюююџюююџюююџюююџюююџюююџюююџюююџюююџюююџюююџюююџюююџюююџюююџяяяџћћћџ§§§џ§§§џ§§§џ§§§џљљљџыыыџїїїџћћћџ§§§џўўўџцццџћћћџ§§§џ§§§џ§§§џєєєџђђђџ§§§џ§§§џяяяџїїїџќќќџщщщџњњњџњњњџіііџюююџџџџџфффџџџџџыыыџјјјџ§§§џќќќџшшшџ§§§џіііџёёёџ§§§џќќќџ№№№џїїїџќќќџшшшџѕѕѕџњњњџ§§§џќќќџ§§§џћћћџњњњџќќќџцццџўўўџёёёџѕѕѕџ§§§џ§§§џьььџљљљџ§§§џ§§§џ§§§џ§§§џшшшџ§§§џ§§§џјјјџэээџџџџџфффџ§§§џ§§§џўўўџфффџўўўџ§§§џ§§§џ§§§џ§§§џѓѓѓџшшшџхххџыыыџљљљџ§§§џяяяџіііџ§§§џќќќџъъъџќќќџјјјџяяяџ§§§џ§§§џѓѓѓџѓѓѓџ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џєєєџ§§§џўўўџ№№№џљљљџїїїџїїїџїїїџіііџіііџѕѕѕџѕѕѕџѕѕѕџїїїџёёёџ§§§џ§§§џ§§§џўўўџ§§§џ§§§џ§§§џ§§§џєєєџўўўџєєєџюююџюююџюююџюююџюююџюююџюююџюююџюююџюююџюююџюююџюююџюююџюююџюююџюююџюююџюююџюююџюююџюююџюююџяяяџћћћџ§§§џ§§§џ§§§џ§§§џљљљџыыыџјјјџіііџёёёџўўўџђђђџыыыџљљљџяяяџ§§§џѕѕѕџчччџїїїџїїїџыыыџљљљџќќќџяяяџђђђџљљљџыыыџіііџџџџџуууџџџџџьььџщщщџјјјџёёёџюююџ§§§џњњњџыыыџіііџіііџыыыџњњњџќќќџшшшџїїїџјјјџюююџџџџџьььџєєєџљљљџёёёџэээџ§§§џђђђџшшшџїїїџіііџъъъџњњњџ§§§џ§§§џ§§§џ§§§џюююџёёёџјјјџъъъџіііџџџџџфффџяяяџљљљџ№№№џьььџўўўџ§§§џ§§§џ§§§џёёёџьььџљљљџўўўџўўўџ§§§џ§§§џїїїџъъъџјјјџѓѓѓџэээџќќќџјјјџяяяџ§§§џ§§§џѓѓѓџѓѓѓџ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џєєєџ§§§џўўўџ№№№џљљљџїїїџїїїџїїїџіііџіііџѕѕѕџѕѕѕџѕѕѕџїїїџёёёџ§§§џ§§§џ§§§џўўўџ§§§џ§§§џ§§§џ§§§џєєєџўўўџєєєџюююџюююџюююџюююџюююџюююџюююџюююџюююџюююџюююџюююџюююџюююџюююџюююџюююџюююџюююџюююџюююџюююџюююџяяяџћћћџ§§§џ§§§џ§§§џ§§§џќќќџѕѕѕџэээџяяяџњњњџ§§§џ§§§џѓѓѓџэээџєєєџ§§§џєєєџ№№№џяяяџэээџѕѕѕџќќќџ§§§џћћћџ№№№џэээџѕѕѕџ§§§џ§§§џюююџўўўџыыыџѕѕѕџэээџ№№№џћћћџќќќџ§§§џјјјџюююџюююџјјјџ§§§џќќќџїїїџюююџюююџјјјџ§§§џ§§§џђђђџэээџяяяџћћћџ§§§џіііџѕѕѕџяяяџэээџїїїџќќќџ§§§џ§§§џ§§§џќќќџћћћџ№№№џэээџѕѕѕџ§§§џ§§§џяяяџіііџэээџяяяџћћћџ§§§џ§§§џ§§§џ§§§џяяяџѓѓѓџ§§§џўўўџћћћџєєєџ§§§џ§§§џіііџэээџяяяџњњњџ§§§џњњњџѕѕѕџ§§§џ§§§џїїїџїїїџ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џєєєџ§§§џўўўџ№№№џљљљџїїїџїїїџїїїџіііџіііџѕѕѕџѕѕѕџѕѕѕџїїїџёёёџћћћџќќќџ§§§џўўўџ§§§џ§§§џ§§§џ§§§џєєєџўўўџѕѕѕџюююџюююџюююџюююџюююџюююџюююџюююџюююџюююџюююџюююџюююџюююџюююџюююџюююџюююџюююџюююџюююџюююџюююџяяяџћћћџ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џќќќџќќќџ§§§џ§§§џ§§§џ§§§џєєєџѓѓѓџ§§§џ§§§џ§§§џ§§§џќќќџ§§§џ§§§џ§§§џ§§§џќќќџќќќџџџџџ§§§џыыыџћћћџ§§§џ§§§џ§§§џќќќџќќќџ§§§џ§§§џ§§§џ§§§џќќќџ§§§џ§§§џ§§§џ§§§џ§§§џќќќџ§§§џ§§§џ§§§џ§§§џ§§§џќќќџ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џќќќџ§§§џ§§§џ§§§џ§§§џќќќџќќќџ§§§џ§§§џ§§§џ§§§џ§§§џќќќџ§§§џ§§§џ§§§џћћћџяяяџщщщџчччџъъъџђђђџ§§§џќќќџ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џќќќџќќќџ§§§џ§§§џќќќџ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џєєєџ§§§џўўўџ№№№џљљљџїїїџїїїџїїїџіііџіііџѕѕѕџѕѕѕџѕѕѕџїїїџёёёџўўўџўўўџ§§§џўўўџ§§§џ§§§џ§§§џ§§§џєєєџўўўџѕѕѕџяяяџюююџюююџюююџюююџюююџюююџюююџюююџюююџюююџюююџюююџюююџюююџюююџюююџюююџюююџюююџюююџюююџюююџ№№№џћћћџ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џєєєџѓѓѓџ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џўўўџфффџџџџџыыыџћћћџ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џќќќџќќќџ§§§џ§§§џ§§§џ§§§џ§§§џќќќџ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џєєєџ§§§џўўўџ№№№џљљљџїїїџїїїџїїїџіііџіііџѕѕѕџѕѕѕџѕѕѕџїїїџёёёџњњњџћћћџ§§§џўўўџ§§§џ§§§џ§§§џ§§§џєєєџўўўџѕѕѕџёёёџюююџюююџюююџюююџюююџюююџюююџюююџюююџюююџюююџюююџюююџюююџюююџюююџюююџюююџюююџюююџюююџяяяџёёёџћћћџ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џіііџѕѕѕџ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џќќќџўўўџ§§§џ№№№џћћћџ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џєєєџ§§§џўўўџ№№№џљљљџїїїџїїїџїїїџіііџіііџѕѕѕџѕѕѕџѕѕѕџїїїџёёёџўўўџ§§§џ§§§џўўўџ§§§џ§§§џ§§§џ§§§џєєєџўўўџѕѕѕџђђђџёёёџяяяџюююџюююџюююџюююџюююџюююџюююџюююџюююџюююџюююџюююџюююџюююџюююџюююџюююџюююџ№№№џђђђџђђђџћћћџ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џќќќџ§§§џ§§§џќќќџ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џќќќџ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џєєєџ§§§џўўўџ№№№џљљљџїїїџїїїџїїїџіііџіііџѕѕѕџѕѕѕџѕѕѕџїїїџёёёџћћћџќќќџ§§§џўўўџ§§§џ§§§џ§§§џ§§§џєєєџўўўџѕѕѕџђђђџђђђџђђђџёёёџёёёџёёёџёёёџёёёџёёёџёёёџёёёџёёёџёёёџёёёџёёёџёёёџёёёџёёёџёёёџёёёџёёёџђђђџђђђџёёёџћћћџ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џєєєџ§§§џўўўџ№№№џљљљџїїїџїїїџїїїџіііџіііџѕѕѕџѕѕѕџѕѕѕџїїїџёёёџ§§§џ§§§џ§§§џўўўџ§§§џ§§§џ§§§џ§§§џєєєџ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџ§§§џєєєџ§§§џўўўџ№№№џљљљџїїїџїїїџїїїџіііџіііџѕѕѕџѕѕѕџѕѕѕџїїїџёёёџ§§§џ§§§џ§§§џўўўџ§§§џ§§§џ§§§џ§§§џєєєџўўўџ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џўўўџєєєџ§§§џўўўџ№№№џљљљџїїїџїїїџїїїџіііџіііџѕѕѕџѕѕѕџѕѕѕџїїїџёёёџћћћџќќќџ§§§џўўўџ§§§џ§§§џ§§§џ§§§џєєєџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџєєєџ§§§џўўўџ№№№џљљљџїїїџїїїџїїїџіііџіііџѕѕѕџѕѕѕџѕѕѕџїїїџёёёџўўўџўўўџ§§§џўўўџ§§§џ§§§џ§§§џ§§§џєєєџџџџџўўўџўўўџўўўџўўўџўўўџўўўџўўўџўўўџўўўџўўўџўўўџўўўџўўўџўўўџўўўџўўўџўўўџўўўџўўўџўўўџўўўџўўўџўўўџўўўџўўўџўўўџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџєєєџ§§§џўўўџ№№№џљљљџїїїџїїїџїїїџіііџіііџѕѕѕџѕѕѕџѕѕѕџїїїџёёёџњњњџћћћџ§§§џўўўџ§§§џ§§§џ§§§џ§§§џєєєџџџџџчччџсссџсссџсссџсссџсссџсссџсссџсссџсссџсссџсссџсссџсссџсссџсссџсссџсссџсссџсссџсссџсссџсссџсссџсссџљљљџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџєєєџ§§§џўўўџ№№№џљљљџїїїџїїїџїїїџіііџіііџѕѕѕџѕѕѕџѕѕѕџїїїџёёёџўўўџ§§§џ§§§џўўўџ§§§џ§§§џ§§§џ§§§џєєєџџџџџщщщџсссџсссџсссџсссџсссџсссџсссџсссџсссџсссџсссџсссџсссџсссџсссџсссџсссџсссџсссџсссџсссџсссџсссџсссџњњњџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџєєєџ§§§џўўўџ№№№џљљљџїїїџїїїџїїїџіііџіііџѕѕѕџѕѕѕџѕѕѕџїїїџёёёџўўўџ§§§џ§§§џўўўџ§§§џ§§§џ§§§џ§§§џєєєџџџџџщщщџсссџсссџсссџсссџсссџсссџсссџсссџсссџсссџсссџсссџсссџсссџсссџсссџсссџсссџсссџсссџсссџсссџсссџсссџњњњџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџєєєџ§§§џўўўџ№№№џљљљџїїїџїїїџїїїџіііџіііџѕѕѕџѕѕѕџѕѕѕџїїїџёёёџўўўџ§§§џ§§§џўўўџ§§§џ§§§џ§§§џ§§§џєєєџџџџџщщщџсссџсссџсссџсссџсссџсссџсссџсссџсссџсссџсссџсссџсссџсссџсссџсссџсссџсссџсссџсссџсссџсссџсссџсссџњњњџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџєєєџ§§§џўўўџ№№№џљљљџїїїџїїїџїїїџіііџіііџѕѕѕџѕѕѕџѕѕѕџїїїџёёёџўўўџ§§§џ§§§џўўўџ§§§џ§§§џ§§§џ§§§џєєєџџџџџщщщџсссџсссџсссџсссџсссџсссџсссџсссџсссџсссџсссџсссџсссџсссџсссџсссџсссџсссџсссџсссџсссџсссџсссџсссџњњњџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџєєєџ§§§џўўўџ№№№џљљљџїїїџїїїџїїїџіііџіііџѕѕѕџѕѕѕџѕѕѕџїїїџёёёџўўўџ§§§џ§§§џўўўџ§§§џ§§§џ§§§џ§§§џєєєџџџџџщщщџсссџсссџсссџсссџсссџсссџсссџсссџсссџсссџсссџсссџсссџсссџсссџсссџсссџсссџсссџсссџсссџсссџсссџсссџњњњџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџєєєџ§§§џўўўџ№№№џљљљџїїїџїїїџїїїџіііџіііџѕѕѕџѕѕѕџѕѕѕџїїїџёёёџўўўџ§§§џ§§§џўўўџ§§§џ§§§џ§§§џ§§§џєєєџџџџџщщщџсссџсссџсссџсссџсссџсссџсссџсссџсссџсссџсссџсссџсссџсссџсссџсссџсссџсссџсссџсссџсссџсссџсссџсссџњњњџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџєєєџ§§§џўўўџ№№№џљљљџїїїџїїїџїїїџіііџіііџѕѕѕџѕѕѕџѕѕѕџїїїџёёёџўўўџ§§§џ§§§џўўўџ§§§џ§§§џ§§§џ§§§џєєєџџџџџшшшџсссџсссџсссџсссџсссџсссџсссџсссџсссџсссџсссџсссџсссџсссџсссџсссџсссџсссџсссџсссџсссџсссџсссџсссџњњњџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџєєєџ§§§џўўўџ№№№џљљљџїїїџїїїџїїїџіііџіііџѕѕѕџѕѕѕџѕѕѕџїїїџёёёџўўўџ§§§џ§§§џўўўџ§§§џ§§§џ§§§џ§§§џєєєџџџџџђђђџэээџэээџэээџэээџэээџэээџэээџэээџэээџэээџэээџэээџэээџэээџэээџэээџэээџэээџэээџэээџэээџэээџэээџьььџќќќџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџєєєџ§§§џўўўџ№№№џљљљџїїїџїїїџїїїџіііџіііџѕѕѕџѕѕѕџѕѕѕџїїїџёёёџўўўџ§§§џ§§§џўўўџ§§§џ§§§џ§§§џ§§§џєєєџџџџџўўўџўўўџўўўџўўўџўўўџўўўџўўўџўўўџўўўџўўўџ§§§џўўўџўўўџўўўџўўўџўўўџўўўџўўўџ§§§џ§§§џ§§§џ§§§џ§§§џўўўџ§§§џўўўџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџєєєџ§§§џўўўџ№№№џљљљџїїїџїїїџїїїџіііџіііџѕѕѕџѕѕѕџѕѕѕџїїїџёёёџўўўџ§§§џ§§§џўўўџ§§§џ§§§џ§§§џ§§§џєєєџџџџџўўўџўўўџўўўџўўўџ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џўўўџ§§§џўўўџ§§§џќќќџ§§§џќќќџ§§§џ§§§џќќќџќќќџќќќџќќќџўўўџўўўџўўўџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџєєєџ§§§џўўўџ№№№џљљљџїїїџїїїџїїїџіііџіііџѕѕѕџѕѕѕџѕѕѕџїїїџёёёџўўўџ§§§џ§§§џўўўџ§§§џ§§§џ§§§џ§§§џєєєџџџџџўўўџўўўџќќќџљљљџљљљџїїїџљљљџљљљџіііџљљљџћћћџјјјџќќќџёёёџёёёџєєєџѓѓѓџёёёџѓѓѓџђђђџѓѓѓџёёёџюююџўўўџўўўџўўўџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџєєєџ§§§џўўўџ№№№џљљљџїїїџїїїџїїїџіііџіііџѕѕѕџѕѕѕџѕѕѕџїїїџёёёџўўўџ§§§џ§§§џўўўџ§§§џ§§§џ§§§џ§§§џєєєџџџџџўўўџўўўџћћћџїїїџљљљџіііџїїїџњњњџїїїџіііџјјјџіііџ§§§џюююџ№№№џѓѓѓџѓѓѓџ№№№џђђђџђђђџђђђџіііџэээџўўўџўўўџўўўџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџєєєџ§§§џўўўџ№№№џљљљџїїїџїїїџїїїџіііџіііџѕѕѕџѕѕѕџѕѕѕџїїїџёёёџўўўџ§§§џ§§§џўўўџ§§§џ§§§џ§§§џ§§§џєєєџџџџџўўўџўўўџћћћџїїїџћћћџ§§§џќќќџ§§§џ§§§џќќќџћћћџќќќџќќќџђђђџђђђџќќќџњњњџїїїџїїїџњњњџіііџњњњџћћћџўўўџўўўџўўўџџџџџџџџџџџџџџџџџўўўџўўўџџџџџџџџџўўўџўўўџџџџџўўўџўўўџўўўџўўўџџџџџџџџџўўўџџџџџџџџџўўўџўўўџўўўџўўўџџџџџўўўџўўўџўўўџўўўџўўўџџџџџўўўџўўўџўўўџўўўџўўўџџџџџџџџџўўўџўўўџўўўџўўўџџџџџџџџџўўўџўўўџўўўџџџџџџџџџўўўџџџџџџџџџџџџџўўўџўўўџўўўџўўўџџџџџўўўџўўўџџџџџџџџџўўўџўўўџўўўџўўўџўўўџџџџџўўўџўўўџџџџџџџџџўўўџўўўџџџџџџџџџўўўџўўўџџџџџџџџџџџџџџџџџўўўџўўўџўўўџўўўџџџџџџџџџўўўџџџџџџџџџџџџџўўўџџџџџџџџџџџџџџџџџџџџџўўўџџџџџџџџџўўўџџџџџџџџџўўўџўўўџџџџџџџџџџџџџџџџџџџџџџџџџџџџџєєєџ§§§џўўўџ№№№џљљљџїїїџїїїџїїїџіііџіііџѕѕѕџѕѕѕџѕѕѕџїїїџёёёџўўўџ§§§џ§§§џўўўџ§§§џ§§§џ§§§џ§§§џєєєџџџџџўўўџўўўџўўўџ§§§џўўўџўўўџўўўџўўўџўўўџџџџџџџџџўўўџўўўџўўўџўўўџўўўџўўўџ§§§џ§§§џўўўџќќќџўўўџџџџџџџџџўўўџўўўџџџџџџџџџџџџџџџџџљљљџюююџџџџџџџџџєєєџєєєџџџџџјјјџщщщџшшшџьььџ§§§џџџџџтттџџџџџћћћџъъъџєєєџіііџѓѓѓџџџџџяяяџшшшџщщщџ№№№џщщщџџџџџћћћџъъъџшшшџяяяџтттџџџџџ§§§џ№№№џщщщџщщщџяяяџџџџџџџџџїїїџхххџѕѕѕџџџџџџџџџтттџџџџџџџџџћћћџыыыџшшшџъъъџњњњџџџџџьььџћћћџџџџџџџџџјјјџщщщџшшшџяяяџтттџџџџџђђђџіііџџџџџџџџџэээџњњњџџџџџџџџџшшшџўўўџџџџџџџџџџџџџўўўџѕѕѕџщщщџщщщџюююџ§§§џџџџџтттџџџџџџџџџџџџџхххџџџџџџџџџџџџџџџџџџџџџсссџџџџџџџџџфффџџџџџџџџџщщщџ§§§џџџџџџџџџџџџџџџџџџџџџџџџџџџџџєєєџ§§§џўўўџ№№№џљљљџїїїџїїїџїїїџіііџіііџѕѕѕџѕѕѕџѕѕѕџїїїџёёёџўўўџ§§§џ§§§џўўўџ§§§џ§§§џ§§§џ§§§џєєєџџџџџћћћџњњњџњњњџњњњџњњњџњњњџњњњџњњњџњњњџњњњџњњњџњњњџњњњџњњњџњњњџњњњџњњњџњњњџњњњџњњњџњњњџњњњџњњњџњњњџњњњџўўўџџџџџџџџџџџџџџџџџљљљџяяяџџџџџџџџџѕѕѕџєєєџџџџџъъъџњњњџџџџџѓѓѓџяяяџџџџџфффџўўўџьььџїїїџџџџџіііџєєєџџџџџхххџ§§§џџџџџїїїџъъъџџџџџыыыџіііџџџџџїїїџфффџџџџџёёёџѕѕѕџџџџџџџџџњњњџџџџџўўўџюююџњњњџъъъџџџџџџџџџфффџџџџџџџџџыыыџіііџџџџџїїїџщщщџџџџџэээџћћћџџџџџџџџџъъъџљљљџџџџџћћћџфффџџџџџѓѓѓџіііџџџџџџџџџюююџћћћџџџџџџџџџщщщџўўўџџџџџџџџџџџџџ§§§џыыыџќќќџџџџџёёёџєєєџџџџџфффџџџџџџџџџџџџџцццџџџџџџџџџџџџџџџџџџџџџєєєџџџџџџџџџѕѕѕџџџџџџџџџіііџўўўџџџџџџџџџџџџџџџџџџџџџџџџџџџџџєєєџ§§§џўўўџ№№№џљљљџїїїџїїїџїїїџіііџіііџѕѕѕџѕѕѕџѕѕѕџїїїџёёёџўўўџ§§§џ§§§џўўўџ§§§џ§§§џ§§§џ§§§џєєєџџџџџъъъџуууџуууџуууџуууџуууџуууџуууџуууџуууџуууџуууџуууџуууџуууџуууџуууџуууџуууџуууџуууџуууџуууџуууџсссџњњњџџџџџџџџџџџџџџџџџљљљџяяяџџџџџџџџџѕѕѕџєєєџџџџџцццџџџџџџџџџ§§§џъъъџџџџџхххџъъъџїїїџџџџџџџџџіііџєєєџџџџџєєєџчччџхххџхххџыыыџџџџџхххџџџџџџџџџџџџџфффџџџџџюююџхххџхххџхххџфффџџџџџњњњџяяяџўўўџђђђџѕѕѕџџџџџфффџџџџџџџџџхххџџџџџџџџџџџџџфффџџџџџэээџћћћџўўўџџџџџщщщџўўўџџџџџџџџџхххџџџџџѓѓѓџіііџџџџџџџџџюююџћћћџўўўџџџџџщщщџўўўџџџџџџџџџџџџџ§§§џыыыџџџџџџџџџљљљџ№№№џџџџџфффџџџџџўўўџџџџџцццџџџџџџџџџџџџџџџџџўўўџџџџџўўўџўўўџџџџџўўўџўўўџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџєєєџ§§§џўўўџ№№№џљљљџїїїџїїїџїїїџіііџіііџѕѕѕџѕѕѕџѕѕѕџїїїџёёёџўўўџ§§§џ§§§џўўўџ§§§џ§§§џ§§§џ§§§џєєєџџџџџщщщџсссџсссџсссџсссџсссџсссџсссџсссџсссџсссџсссџсссџсссџсссџсссџсссџсссџсссџсссџсссџсссџсссџсссџсссџњњњџџџџџџџџџџџџџџџџџњњњџэээџўўўџџџџџѓѓѓџѕѕѕџџџџџшшшџ§§§џџџџџјјјџэээџџџџџфффџєєєџэээџ§§§џџџџџіііџєєєџџџџџ§§§џџџџџџџџџ§§§џыыыџџџџџшшшџћћћџџџџџћћћџфффџџџџџяяяџјјјџџџџџџџџџъъъџџџџџѓѓѓџєєєџџџџџќќќџэээџџџџџфффџџџџџџџџџщщщџњњњџџџџџћћћџчччџџџџџэээџїїїџџџџџџџџџщщщџўўўџџџџџџџџџхххџџџџџѓѓѓџѓѓѓџўўўџџџџџэээџїїїџџџџџџџџџщщщџўўўџџџџџџџџџџџџџ§§§џыыыџ§§§џџџџџѕѕѕџђђђџџџџџфффџўўўџџџџџ§§§џчччџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџєєєџ§§§џўўўџ№№№џљљљџїїїџїїїџїїїџіііџіііџѕѕѕџѕѕѕџѕѕѕџїїїџёёёџўўўџ§§§џ§§§џўўўџ§§§џ§§§џ§§§џ§§§џєєєџџџџџщщщџсссџсссџсссџсссџсссџсссџсссџсссџсссџсссџсссџсссџсссџсссџсссџсссџсссџсссџсссџсссџсссџсссџсссџсссџњњњџџџџџџџџџџџџџџџџџњњњџцццџёёёџёёёџьььџњњњџџџџџєєєџэээџђђђџыыыџљљљџџџџџфффџџџџџѓѓѓџьььџљљљџіііџѓѓѓџџџџџэээџђђђџђђђџьььџїїїџџџџџїїїџыыыџђђђџюююџфффџџџџџћћћџьььџђђђџюююџђђђџ§§§џыыыџќќќџџџџџўўўџ№№№џёёёџфффџѓѓѓџњњњџјјјџыыыџђђђџыыыџіііџџџџџэээџьььџђђђџјјјџшшшџўўўџџџџџџџџџфффџџџџџѓѓѓџщщщџђђђџ№№№џьььџюююџђђђџяяяџюююџўўўџџџџџџџџџџџџџўўўџёёёџяяяџёёёџьььџћћћџџџџџтттџ№№№џђђђџьььџѓѓѓџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџєєєџ§§§џўўўџ№№№џљљљџїїїџїїїџїїїџіііџіііџѕѕѕџѕѕѕџѕѕѕџїїїџёёёџўўўџ§§§џ§§§џўўўџ§§§џ§§§џ§§§џ§§§џєєєџџџџџщщщџсссџсссџсссџсссџсссџсссџсссџсссџсссџсссџсссџсссџсссџсссџсссџсссџсссџсссџсссџсссџсссџсссџсссџсссџњњњџџџџџџџџџџџџџџџџџ§§§џњњњџљљљџїїїџћћћџўўўџўўўџўўўџљљљџїїїџћћћџџџџџџџџџфффџџџџџџџџџљљљџћћћџ§§§џќќќџџџџџ§§§џјјјџїїїџњњњџџџџџўўўџџџџџњњњџїїїџ§§§џфффџџџџџџџџџќќќџјјјџјјјџўўўџўўўџљљљџџџџџџџџџџџџџќќќџљљљџуууџјјјџћћћџџџџџњњњџїїїџњњњџџџџџџџџџњњњџћћћџјјјџњњњџљљљџўўўџџџџџџџџџјјјџџџџџќќќџћћћџјјјџїїїџћћћџ§§§џјјјџјјјџќќќџўўўџџџџџџџџџџџџџџџџџ§§§џјјјџїїїџќќќџџџџџџџџџјјјџћћћџїїїџљљљџўўўџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџєєєџ§§§џўўўџ№№№џљљљџїїїџїїїџїїїџіііџіііџѕѕѕџѕѕѕџѕѕѕџїїїџёёёџўўўџ§§§џ§§§џўўўџ§§§џ§§§џ§§§џ§§§џєєєџџџџџщщщџсссџсссџсссџсссџсссџсссџсссџсссџсссџсссџсссџсссџсссџсссџсссџсссџсссџсссџсссџсссџсссџсссџсссџсссџњњњџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўўўџџџџџџџџџџџџџџџџџўўўџџџџџфффџџџџџџџџџџџџџџџџџџџџџџџџџўўўџџџџџџџџџџџџџџџџџџџџџўўўџўўўџџџџџџџџџџџџџфффџџџџџўўўџџџџџџџџџџџџџџџџџџџџџџџџџўўўџўўўџўўўџџџџџџџџџфффџџџџџџџџџўўўџџџџџџџџџџџџџџџџџўўўџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўўўџџџџџўўўџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўўўџџџџџџџџџџџџџџџџџўўўџўўўџџџџџџџџџџџџџџџџџџџџџўўўџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџєєєџ§§§џўўўџ№№№џљљљџїїїџїїїџїїїџіііџіііџѕѕѕџѕѕѕџѕѕѕџїїїџёёёџўўўџ§§§џ§§§џўўўџ§§§џ§§§џ§§§џ§§§џєєєџџџџџщщщџсссџсссџсссџсссџсссџсссџсссџсссџсссџсссџсссџсссџсссџсссџсссџсссџсссџсссџсссџсссџсссџсссџсссџсссџњњњџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџуууџџџџџџџџџџџџџџџџџїїїџѕѕѕџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџуууџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџэээџѓѓѓџќќќџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџєєєџ§§§џўўўџ№№№џљљљџїїїџїїїџїїїџіііџіііџѕѕѕџѕѕѕџѕѕѕџїїїџёёёџўўўџ§§§џ§§§џўўўџ§§§џ§§§џ§§§џ§§§џєєєџџџџџщщщџсссџсссџсссџсссџсссџсссџсссџсссџсссџсссџсссџсссџсссџсссџсссџсссџсссџсссџсссџсссџсссџсссџсссџсссџњњњџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџѓѓѓџџџџџџџџџџџџџўўўџџџџџџџџџўўўџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџѓѓѓџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџќќќџђђђџљљљџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџєєєџ§§§џўўўџ№№№џљљљџїїїџїїїџїїїџіііџіііџѕѕѕџѕѕѕџѕѕѕџїїїџёёёџўўўџ§§§џ§§§џўўўџ§§§џ§§§џ§§§џ§§§џєєєџџџџџщщщџсссџсссџсссџсссџсссџсссџсссџсссџсссџсссџсссџсссџсссџсссџсссџсссџсссџсссџсссџсссџсссџсссџсссџсссџњњњџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўўўџџџџџўўўџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўўўџџџџџўўўџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўўўџџџџџџџџџџџџџўўўџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџєєєџ§§§џўўўџ№№№џљљљџїїїџїїїџїїїџіііџіііџѕѕѕџѕѕѕџѕѕѕџїїїџёёёџўўўџ§§§џ§§§џўўўџ§§§џ§§§џ§§§џ§§§џєєєџџџџџыыыџуууџуууџуууџуууџуууџуууџуууџуууџуууџуууџуууџуууџуууџуууџуууџуууџуууџуууџуууџуууџуууџуууџуууџтттџњњњџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџєєєџ§§§џўўўџ№№№џљљљџїїїџїїїџїїїџіііџіііџѕѕѕџѕѕѕџѕѕѕџїїїџёёёџўўўџ§§§џ§§§џўўўџ§§§џ§§§џ§§§џ§§§џєєєџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџєєєџ§§§џўўўџ№№№џљљљџїїїџїїїџїїїџіііџіііџѕѕѕџѕѕѕџѕѕѕџїїїџёёёџўўўџ§§§џ§§§џўўўџ§§§џ§§§џ§§§џ§§§џєєєџўўўџ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џєєєџ§§§џўўўџ№№№џљљљџїїїџїїїџїїїџіііџіііџѕѕѕџѕѕѕџѕѕѕџїїїџёёёџўўўџ§§§џ§§§џўўўџ§§§џ§§§џ§§§џ§§§џєєєџ§§§џќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџ§§§џєєєџ§§§џўўўџ№№№џљљљџїїїџїїїџїїїџіііџіііџѕѕѕџѕѕѕџѕѕѕџїїїџёёёџўўўџ§§§џ§§§џўўўџ§§§џ§§§џ§§§џ§§§џєєєџ§§§џјјјџїїїџїїїџїїїџіііџїїїџїїїџїїїџїїїџіііџїїїџїїїџїїїџїїїџїїїџїїїџїїїџїїїџїїїџїїїџїїїџїїїџїїїџїїїџїїїџќќќџ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џќќќџ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џєєєџ§§§џўўўџ№№№џљљљџїїїџїїїџїїїџіііџіііџѕѕѕџѕѕѕџѕѕѕџїїїџёёёџўўўџ§§§џ§§§џўўўџ§§§џ§§§џ§§§џ§§§џєєєџўўўџъъъџуууџуууџфффџтттџуууџфффџуууџуууџтттџтттџуууџтттџтттџфффџуууџуууџфффџуууџуууџхххџхххџцццџцццџуууџљљљџ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џњњњџєєєџ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џєєєџ§§§џўўўџ№№№џљљљџїїїџїїїџїїїџіііџіііџѕѕѕџѕѕѕџѕѕѕџїїїџёёёџўўўџ§§§џ§§§џўўўџ§§§џ§§§џ§§§џ§§§џєєєџўўўџыыыџхххџцццџьььџыыыџщщщџшшшџхххџфффџфффџуууџфффџфффџхххџщщщџюююџсссџхххџхххџхххџчччџцццџцццџъъъџшшшџљљљџ§§§џ§§§џ§§§џ§§§џќќќџ§§§џ§§§џўўўџ§§§џ§§§џќќќџјјјџюююџўўўџўўўџ§§§џќќќџ§§§џ§§§џўўўџ§§§џќќќџ§§§џ§§§џќќќџ§§§џ§§§џќќќџ§§§џќќќџ§§§џўўўџўўўџ§§§џ§§§џ§§§џ§§§џўўўџўўўџ§§§џќќќџ§§§џўўўџўўўџўўўџ§§§џ§§§џ§§§џќќќџќќќџ§§§џ§§§џўўўџўўўџќќќџ§§§џ§§§џўўўџ§§§џ§§§џ§§§џ§§§џќќќџ§§§џўўўџ§§§џ§§§џўўўџ§§§џўўўџ§§§џ§§§џ§§§џќќќџўўўџќќќџ§§§џўўўџ§§§џќќќџќќќџ§§§џ§§§џќќќџ§§§џўўўџ§§§џќќќџўўўџќќќџ§§§џўўўџўўўџ§§§џ§§§џќќќџ§§§џ§§§џќќќџ§§§џќќќџўўўџќќќџќќќџ§§§џ§§§џќќќџ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џєєєџ§§§џўўўџ№№№џљљљџїїїџїїїџїїїџіііџіііџѕѕѕџѕѕѕџѕѕѕџїїїџёёёџўўўџ§§§џ§§§џўўўџ§§§џ§§§џ§§§џ§§§џєєєџўўўџыыыџхххџшшшџыыыџыыыџэээџыыыџюююџшшшџщщщџчччџхххџхххџщщщџ№№№џъъъџсссџтттџхххџчччџцццџшшшџъъъџцццџхххџњњњџ§§§џ§§§џ§§§џ§§§џ§§§џїїїџщщщџхххџъъъџљљљџќќќџјјјџшшшџчччџшшшџњњњџ§§§џњњњџщщщџхххџ№№№џ§§§џєєєџђђђџ§§§џљљљџэээџ§§§џ§§§џ§§§џіііџшшшџхххџьььџћћћџќќќџѓѓѓџхххџчччџљљљџ§§§џіііџцццџщщщџцццџњњњџљљљџыыыџ§§§џ§§§џќќќџяяяџхххџчччџўўўџћћћџыыыџхххџэээџћћћџ§§§џ§§§џўўўџюююџфффџѓѓѓџѓѓѓџхххџъъъџфффџќќќџіііџяяяџўўўџуууџџџџџѕѕѕџчччџћћћџ§§§џ§§§џіііџщщщџ§§§џћћћџхххџћћћџўўўџуууџџџџџѓѓѓџхххџщщщџяяяџјјјџ§§§џѓѓѓџѓѓѓџ§§§џ§§§џўўўџчччџ§§§џ§§§џыыыџћћћџ§§§џ№№№џјјјџ§§§џ§§§џ§§§џ§§§џєєєџ§§§џўўўџ№№№џљљљџїїїџїїїџїїїџіііџіііџѕѕѕџѕѕѕџѕѕѕџїїїџёёёџўўўџ§§§џ§§§џўўўџ§§§џ§§§џ§§§џ§§§џєєєџўўўџыыыџхххџхххџшшшџыыыџыыыџъъъџъъъџшшшџюююџюююџяяяџцццџэээџѓѓѓџыыыџыыыџцццџчччџёёёџїїїџћћћџћћћџыыыџцццџњњњџ§§§џ§§§џ§§§џ§§§џњњњџьььџїїїџўўўџѕѕѕџэээџќќќџјјјџъъъџ§§§џєєєџэээџџџџџшшшџѕѕѕџџџџџѕѕѕџ§§§џєєєџђђђџ§§§џљљљџэээџ§§§џ§§§џ§§§џїїїџћћћџљљљџыыыџїїїџќќќџщщщџќќќџіііџщщщџџџџџшшшџљљљџќќќџшшшџњњњџњњњџьььџ§§§џ§§§џїїїџэээџ§§§џўўўџ§§§џьььџѓѓѓџџџџџїїїџћћћџ§§§џ§§§џўўўџуууџўўўџџџџџхххџљљљџќќќџцццџќќќџїїїџ№№№џўўўџфффџїїїџьььџћћћџ§§§џќќќџ§§§џяяяџшшшџњњњџэээџщщщџјјјџўўўџфффџџџџџщщщџћћћџџџџџюююџјјјџ§§§џѓѓѓџѓѓѓџ§§§џ§§§џќќќџўўўџќќќџќќќџўўўџ§§§џќќќџ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џєєєџ§§§џўўўџ№№№џљљљџїїїџїїїџїїїџіііџіііџѕѕѕџѕѕѕџѕѕѕџїїїџёёёџўўўџ§§§џ§§§џўўўџ§§§џ§§§џ§§§џ§§§џєєєџўўўџыыыџхххџхххџцццџцццџшшшџшшшџхххџхххџхххџчччџшшшџцццџђђђџђђђџѓѓѓџіііџєєєџщщщџїїїџєєєџјјјџћћћџіііџюююџљљљџ§§§џ§§§џ§§§џ§§§џјјјџюююџ§§§џ§§§џ§§§џъъъџћћћџјјјџюююџ§§§џћћћџъъъџџџџџхххџщщщџшшшџщщщџ§§§џєєєџѓѓѓџ§§§џљљљџэээџ§§§џ§§§џ§§§џїїїџьььџюююџѕѕѕџќќќџќќќџшшшџўўўџ§§§џхххџџџџџчччџ§§§џ§§§џьььџњњњџњњњџьььџ§§§џќќќџіііџёёёџ§§§џќќќџўўўџъъъџщщщџшшшџшшшџњњњџ§§§џ§§§џўўўџуууџўўўџ§§§џђђђџщщщџщщщџуууџќќќџїїїџ№№№џўўўџуууџьььџњњњџ§§§џќќќџќќќџўўўџщщщџёёёџёёёџчччџєєєџєєєџўўўџфффџџџџџщщщџќќќџ§§§џюююџјјјџ§§§џєєєџѓѓѓџ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џєєєџ§§§џўўўџ№№№џљљљџїїїџїїїџїїїџіііџіііџѕѕѕџѕѕѕџѕѕѕџїїїџёёёџўўўџ§§§џ§§§џўўўџ§§§џ§§§џ§§§џ§§§џєєєџўўўџыыыџцццџцццџхххџхххџцццџцццџхххџхххџхххџфффџфффџшшшџэээџєєєџщщщџчччџїїїџэээџїїїџіііџїїїџјјјџјјјџяяяџљљљџ§§§џ§§§џ§§§џ§§§џјјјџюююџ§§§џ§§§џ§§§џъъъџћћћџјјјџчччџћћћџяяяџяяяџџџџџьььџѕѕѕџњњњџшшшџ§§§џѕѕѕџщщщџћћћџђђђџ№№№џ§§§џ§§§џ§§§џьььџѕѕѕџќќќџѓѓѓџљљљџќќќџъъъџјјјџёёёџьььџџџџџчччџ§§§џ§§§џьььџњњњџњњњџхххџјјјџ§§§џјјјџыыыџћћћџ§§§џ§§§џяяяџѓѓѓџћћћџыыыџњњњџ§§§џќќќџўўўџфффџўўўџ§§§џќќќџ§§§џћћћџщщщџќќќџїїїџ№№№џўўўџфффџєєєџёёёџќќќџќќќџ§§§џ§§§џхххџћћћџчччџёёёџїїїџ№№№џўўўџфффџџџџџщщщџќќќџ§§§џяяяџэээџћћћџюююџѕѕѕџ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џєєєџ§§§џўўўџ№№№џљљљџїїїџїїїџїїїџіііџіііџѕѕѕџѕѕѕџѕѕѕџїїїџёёёџўўўџ§§§џ§§§џўўўџ§§§џ§§§џ§§§џ§§§џєєєџўўўџьььџцццџцццџцццџшшшџчччџхххџцццџхххџхххџхххџфффџэээџіііџїїїџјјјџђђђџѕѕѕџюююџ№№№џхххџцццџтттџхххџцццџљљљџ§§§џ§§§џ§§§џ§§§џњњњџэээџњњњџ§§§џјјјџьььџќќќџљљљџэээџъъъџэээџќќќџ§§§џќќќџьььџшшшџіііџ§§§џїїїџяяяџщщщџьььџћћћџ§§§џ§§§џ§§§џњњњџьььџшшшџяяяџћћћџќќќџїїїџщщщџьььџќќќџўўўџьььџ§§§џ§§§џ№№№џћћћџњњњџэээџэээџчччџўўўџѓѓѓџшшшџщщщџўўўџ§§§џюююџшшшџѓѓѓџќќќџ§§§џ§§§џэээџуууџчччџѓѓѓџўўўџцццџшшшџєєєџќќќџїїїџ№№№џўўўџфффџџџџџ№№№џѕѕѕџ§§§џ§§§џјјјџяяяџўўўџюююџћћћџљљљџђђђџ§§§џъъъџїїїџфффџчччџыыыџ№№№џёёёџшшшџюююџћћћџ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џєєєџ§§§џўўўџ№№№џљљљџїїїџїїїџїїїџіііџіііџѕѕѕџѕѕѕџѕѕѕџїїїџёёёџўўўџ§§§џ§§§џўўўџ§§§џ§§§џ§§§џ§§§џєєєџўўўџьььџцццџцццџшшшџчччџчччџщщщџчччџьььџхххџхххџхххџъъъџѓѓѓџѓѓѓџљљљџќќќџяяяџъъъџцццџхххџцццџхххџцццџфффџљљљџ§§§џ§§§џ§§§џ§§§џќќќџѓѓѓџьььџэээџьььџѕѕѕџќќќџ§§§џўўўџўўўџўўўџ§§§џќќќџ§§§џўўўџўўўџ§§§џќќќџ§§§џ§§§џўўўџўўўџ§§§џќќќџ§§§џќќќџ§§§џўўўџўўўџ§§§џ§§§џ§§§џ§§§џўўўџўўўџ§§§џќќќџўўўџќќќџќќќџ§§§џ§§§џ§§§џўўўџ§§§џўўўџќќќџ§§§џўўўџўўўџќќќџ§§§џ§§§џўўўџ§§§џ§§§џ§§§џќќќџџџџџтттџџџџџ§§§џќќќџўўўџўўўџ§§§џ§§§џїїїџ№№№џўўўџфффџўўўџ§§§џ§§§џќќќџќќќџ§§§џ§§§џќќќџ§§§џ§§§џ§§§џ§§§џ§§§џюююџџџџџщщщџ§§§џўўўџюююџљљљџўўўџ§§§џ§§§џќќќџ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џєєєџ§§§џўўўџ№№№џљљљџїїїџїїїџїїїџіііџіііџѕѕѕџѕѕѕџѕѕѕџїїїџёёёџўўўџ§§§џ§§§џўўўџ§§§џ§§§џ§§§џ§§§џєєєџўўўџэээџчччџхххџчччџюююџщщщџьььџђђђџњњњџцццџцццџцццџцццџяяяџєєєџюююџѓѓѓџшшшџчччџфффџсссџтттџсссџтттџуууџљљљџ§§§џ§§§џ§§§џ§§§џ§§§џќќќџњњњџљљљџњњњџќќќџ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џњњњџ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џіііџяяяџўўўџуууџўўўџ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џљљљџ§§§џњњњџќќќџ§§§џэээџјјјџ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џєєєџ§§§џўўўџ№№№џљљљџїїїџїїїџїїїџіііџіііџѕѕѕџѕѕѕџѕѕѕџїїїџёёёџўўўџ§§§џ§§§џўўўџ§§§џ§§§џ§§§џ§§§џєєєџўўўџэээџчччџтттџщщщџѓѓѓџїїїџъъъџюююџќќќџђђђџхххџцццџцццџцццџцццџчччџцццџцццџчччџхххџсссџфффџфффџтттџуууџљљљџ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џќќќџўўўџќќќџ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џќќќџ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џєєєџ§§§џўўўџ№№№џљљљџїїїџїїїџїїїџіііџіііџѕѕѕџѕѕѕџѕѕѕџїїїџёёёџўўўџ§§§џ§§§џўўўџ§§§џ§§§џ§§§џ§§§џєєєџўўўџэээџцццџфффџюююџіііџѓѓѓџёёёџэээџюююџ№№№џшшшџцццџцццџцццџцццџцццџчччџцццџцццџцццџфффџчччџцццџхххџхххџљљљџ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џєєєџ§§§џўўўџ№№№џљљљџїїїџїїїџїїїџіііџіііџѕѕѕџѕѕѕџѕѕѕџїїїџёёёџўўўџ§§§џ§§§џўўўџ§§§џ§§§џ§§§џ§§§џєєєџўўўџэээџэээџчччџыыыџэээџюююџюююџ№№№џёёёџьььџцццџыыыџыыыџчччџщщщџцццџэээџщщщџьььџцццџэээџцццџъъъџчччџшшшџљљљџ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џєєєџ§§§џўўўџ№№№џљљљџїїїџїїїџїїїџіііџіііџѕѕѕџѕѕѕџѕѕѕџїїїџёёёџўўўџ§§§џ§§§џўўўџ§§§џ§§§џ§§§џ§§§џєєєџўўўџьььџѓѓѓџшшшџэээџыыыџщщщџщщщџъъъџщщщџщщщџхххџэээџьььџчччџшшшџчччџ№№№џщщщџ№№№џшшшџ№№№џчччџшшшџщщщџьььџљљљџ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џєєєџ§§§џўўўџ№№№џљљљџїїїџїїїџїїїџіііџіііџѕѕѕџѕѕѕџѕѕѕџїїїџёёёџўўўџ§§§џ§§§џўўўџ§§§џ§§§џ§§§џ§§§џєєєџўўўџэээџѕѕѕџщщщџ№№№џэээџюююџыыыџшшшџшшшџ№№№џшшшџэээџюююџшшшџшшшџчччџѓѓѓџъъъџюююџъъъџяяяџчччџчччџъъъџюююџљљљџ§§§џ§§§џ§§§џ§§§џќќќџіііџіііџіііџіііџћћћџїїїџ§§§џљљљџћћћџ§§§џ§§§џјјјџќќќџќќќџњњњџїїїџїїїџљљљџћћћџљљљџћћћџ§§§џ§§§џњњњџњњњџ§§§џ§§§џќќќџ§§§џќќќџјјјџіііџїїїџќќќџ§§§џ§§§џќќќџјјјџіііџљљљџїїїџ§§§џќќќџїїїџіііџ§§§џљљљџќќќџќќќџњњњџіііџїїїџњњњџњњњџ§§§џћћћџљљљџ§§§џќќќџјјјџќќќџ§§§џњњњџїїїџїїїџћћћџ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џєєєџ§§§џўўўџ№№№џљљљџїїїџїїїџїїїџіііџіііџѕѕѕџѕѕѕџѕѕѕџїїїџёёёџўўўџ§§§џ§§§џўўўџ§§§џ§§§џ§§§џ§§§џєєєџўўўџяяяџїїїџъъъџђђђџьььџяяяџяяяџэээџшшшџѕѕѕџщщщџ№№№џяяяџшшшџщщщџьььџђђђџэээџэээџюююџюююџщщщџшшшџђђђџыыыџљљљџ§§§џ§§§џ§§§џ§§§џјјјџчччџёёёџ№№№џ№№№џњњњџуууџџџџџюююџїїїџ§§§џ§§§џщщщџћћћџћћћџьььџяяяџ№№№џщщщџѓѓѓџѕѕѕџьььџ§§§џћћћџыыыџїїїџ§§§џ§§§џ§§§џ§§§џ№№№џэээџ№№№џюююџьььџќќќџ§§§џђђђџыыыџ№№№џяяяџтттџўўўџєєєџэээџ№№№џўўўџыыыџњњњџћћћџыыыџ№№№џ№№№џщщщџёёёџ§§§џђђђџщщщџќќќџіііџхххџњњњџ§§§џэээџ№№№џяяяџьььџўўўџ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џєєєџ§§§џўўўџ№№№џљљљџїїїџїїїџїїїџіііџіііџѕѕѕџѕѕѕџѕѕѕџїїїџёёёџўўўџ§§§џ§§§џўўўџ§§§џ§§§џ§§§џ§§§џєєєџўўўџяяяџљљљџыыыџђђђџюююџєєєџяяяџяяяџъъъџѕѕѕџъъъџ№№№џ№№№џщщщџщщщџюююџ№№№џ№№№џьььџёёёџэээџщщщџьььџѕѕѕџчччџљљљџ§§§џ§§§џ§§§џ§§§џјјјџяяяџ§§§џ§§§џ§§§џўўўџфффџџџџџяяяџїїїџ§§§џ§§§џъъъџћћћџљљљџэээџ§§§џќќќџёёёџѓѓѓџ§§§џѓѓѓџюююџщщщџїїїџ§§§џќќќџ§§§џ§§§џіііџэээџќќќџ§§§џ§§§џ№№№џ№№№џџџџџшшшџњњњџ§§§џќќќџфффџўўўџёёёџіііџ§§§џ§§§џьььџњњњџњњњџщщщџћћћџўўўџєєєџёёёџўўўџыыыџюююџљљљџъъъџёёёџєєєџ§§§џћћћџўўўџњњњџхххџўўўџ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џєєєџ§§§џўўўџ№№№џљљљџїїїџїїїџїїїџіііџіііџѕѕѕџѕѕѕџѕѕѕџїїїџёёёџўўўџ§§§џ§§§џўўўџ§§§џ§§§џ§§§џ§§§џєєєџўўўџюююџњњњџэээџѓѓѓџюююџѕѕѕџ№№№џяяяџщщщџїїїџъъъџёёёџѓѓѓџъъъџщщщџђђђџ№№№џѓѓѓџыыыџяяяџьььџшшшџјјјџьььџшшшџљљљџ§§§џ§§§џ§§§џ§§§џјјјџюююџ§§§џ§§§џ§§§џўўўџфффџџџџџяяяџїїїџ§§§џ§§§џъъъџћћћџљљљџюююџ§§§џ§§§џєєєџђђђџ§§§џћћћџшшшџэээџ§§§џќќќџќќќџ§§§џ§§§џёёёџѕѕѕџ§§§џ§§§џ§§§џќќќџчччџџџџџчччџ§§§џќќќџўўўџхххџўўўџёёёџіііџ§§§џ§§§џьььџњњњџќќќџѓѓѓџцццџфффџфффџђђђџќќќџшшшџіііџёёёџъъъџљљљџёёёџ§§§џѕѕѕџшшшџцццџіііџ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џєєєџ§§§џўўўџ№№№џљљљџїїїџїїїџїїїџіііџіііџѕѕѕџѕѕѕџѕѕѕџїїїџёёёџўўўџ§§§џ§§§џўўўџ§§§џ§§§џ§§§џ§§§џєєєџўўўџ№№№џѓѓѓџ№№№џђђђџяяяџѕѕѕџёёёџяяяџъъъџїїїџъъъџђђђџѓѓѓџыыыџыыыџєєєџюююџєєєџыыыџюююџыыыџыыыџѕѕѕџэээџъъъџљљљџ§§§џ§§§џ§§§џ§§§џјјјџюююџ§§§џ§§§џ§§§џўўўџфффџџџџџяяяџёёёџ§§§џќќќџщщщџћћћџљљљџюююџ§§§џ§§§џєєєџђђђџ§§§џёёёџ№№№џьььџєєєџўўўџќќќџ§§§џ§§§џ№№№џіііџ§§§џ§§§џ§§§џ§§§џцццџџџџџчччџ§§§џ§§§џўўўџхххџўўўџёёёџїїїџўўўџ§§§џьььџњњњџќќќџіііџўўўџџџџџѓѓѓџѓѓѓџєєєџ№№№џћћћџцццџіііџњњњџяяяџ§§§џфффџљљљџўўўџїїїџ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џєєєџ§§§џўўўџ№№№џљљљџїїїџїїїџїїїџіііџіііџѕѕѕџѕѕѕџѕѕѕџїїїџёёёџўўўџ§§§џ§§§џўўўџ§§§џ§§§џ§§§џ§§§џєєєџўўўџёёёџыыыџяяяџыыыџьььџьььџэээџьььџщщщџэээџшшшџьььџюююџъъъџъъъџяяяџъъъџюююџщщщџыыыџщщщџъъъџюююџьььџщщщџњњњџ§§§џ§§§џ§§§џ§§§џјјјџюююџ§§§џ§§§џ§§§џўўўџтттџџџџџяяяџэээџъъъџшшшџяяяџќќќџјјјџэээџ§§§џ§§§џєєєџѓѓѓџёёёџёёёџ§§§џќќќџяяяџєєєџ§§§џ§§§џ§§§џєєєџ№№№џќќќџ§§§џўўўџѕѕѕџыыыџџџџџцццџ§§§џ§§§џ§§§џтттџћћћџфффџцццџчччџўўўџыыыџљљљџћћћџ№№№џъъъџщщщџэээџќќќџщщщџјјјџќќќџ№№№џћћћџќќќџьььџњњњџяяяџщщщџщщщџ№№№џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џєєєџ§§§џўўўџ№№№џљљљџїїїџїїїџїїїџіііџіііџѕѕѕџѕѕѕџѕѕѕџїїїџёёёџўўўџ§§§џ§§§џўўўџ§§§џ§§§џ§§§џ§§§џєєєџўўўџђђђџьььџіііџяяяџьььџюююџѓѓѓџ№№№џэээџьььџьььџюююџїїїџыыыџ№№№џѓѓѓџэээџєєєџьььџыыыџьььџэээџїїїџъъъџыыыџњњњџ§§§џ§§§џ§§§џ§§§џјјјџюююџ§§§џќќќџќќќџћћћџњњњџћћћџљљљџљљљџљљљџјјјџјјјџїїїџїїїџїїїџјјјџљјјџїїіџііѕџііѕџѕѕѕџіііџіііџѕѕѕџєєєџѕѕѕџѕѕѕџѕѕѕџѓѓѓџсссџъъъџѓѓѓџюээџоннџёё№џѕєєџѓђђџєєѓџєєѓџѓѓђџђђёџѓѓђџшшцџььыџђђёџѓѓђџуутџ№№яџђђёџѓѓђџѓѓђџѓђђџєѓѓџєѓѓџѓђђџѓђђџєєєџѓѓѓџѓѓѓџѓѓѓџєєєџєєєџєєєџѕѕѕџѕѕѕџѕѕѕџіііџїїїџјјїџїїіџјјїџљјјџјјјџјјјџјјјџљљљџљљљџњњњџњњњџњњњџњњњџћћћџћћћџћћћџќќќџќќќџ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џєєєџ§§§џўўўџ№№№џљљљџїїїџїїїџїїїџіііџіііџѕѕѕџѕѕѕџѕѕѕџїїїџёёёџўўўџ§§§џ§§§џўўўџ§§§џ§§§џ§§§џ§§§џєєєџўўўџђђђџэээџїїїџ№№№џюююџьььџѓѓѓџђђђџэээџэээџэээџ№№№џјјјџъъъџєєєџѓѓѓџэээџїїїџ№№№џэээџьььџєєєџ№№№џьььџъъъџљљљџќќќџћћћџњњњџњњњџѕѕѕџэээџјјјџјјјџїїїџїїїџё№№џїїіџііѕџѕѕѕџєєєџєєєџѓѓѓџђђђџђђђџђђђџёё№џёё№џ№№яџяяяџяяяџяююџяяюџююэџююэџээьџььыџьььџыыыџыыыџъъъџнннџзззџлккџчччџъщщџщщшџъщщџъъщџъъщџщщшџщщшџщщшџррпџффуџщщшџщщшџккйџчцхџщщшџъъщџъъщџъщщџъщщџъщщџыъъџыъъџыъъџъъъџыыыџыыыџьььџььыџээьџээьџююэџююэџяяюџяююџяяяџ№№яџ№№яџёё№џёё№џђђђџђђђџђђђџєєєџєєєџєєєџѕѕѕџііѕџїїіџіііџїїїџїїїџјјјџљљљџљљљџњњњџњњњџћћћџћћћџќќќџќќќџ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џєєєџ§§§џўўўџ№№№џљљљџїїїџїїїџїїїџіііџіііџѕѕѕџѕѕѕџѕѕѕџїїїџёёёџўўўџ§§§џ§§§џўўўџ§§§џ§§§џ§§§џ§§§џєєєџўўўџђђђџюююџњњњџ№№№џюююџэээџєєєџѓѓѓџюююџ№№№џыыыџѕѕѕџљљљџыыыџіііџіііџэээџљљљџэээџьььџэээџіііџъъъџщщщџчццџѕѕєџїїїџіііџѕѕѕџєєєџєєѓџѓѓђџ№№№џёёёџяяяџюююџтссџээьџььыџыыыџыъъџъъщџщщшџчччџчччџччцџццхџффуџхфуџуусџуусџссрџсссџррпџсрпџрппџппоџоонџоонџнннџонмџннмџонмџонмџнмлџллкџммкџммкџммкџллйџллйџллкџлкйџллкџллкџллкџллкџЬЬЫџизжџллйџллйџммкџммкџллйџммкџнмлџнмлџннмџннмџонмџоонџоонџппоџрппџрппџппоџссрџсссџттсџуусџфутџхфуџххфџццхџцчцџшччџчччџщщшџъъщџыъъџыыыџььыџээьџюээџюююџяяяџёёёџђђђџѓѓђџѕѕєџѕѕѕџіііџїїїџїїіџјјїџјјјџљљљџњњњџћћћџћћћџќќќџ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џєєєџ§§§џўўўџ№№№џљљљџїїїџїїїџїїїџіііџіііџѕѕѕџѕѕѕџѕѕѕџїїїџёёёџўўўџ§§§џ§§§џўўўџ§§§џ§§§џ§§§џ§§§џєєєџўўўџѓѓѓџэээџћћћџёёёџяяяџюююџіііџѓѓѓџюююџђђђџїїїџќќќџћћћџыыыџѕѕѕџјјјџьььџјјјџыыыџщщщџяяяџыыъџччцџфффџтттџююэџяяяџяяюџээьџыыыџыыъџшшшџшччџччцџххфџуттџттсџррпџсрпџппоџоонџннмџнммџммлџммлџннлџммкџммйџлмкџмнлџмнкџмнкџмнкџмнлџннлџммкџллйџклиџйкзџийжџийжџзиеџзиеџжздџжздџжздџжзеџездџжздџззеџжздџжздџжждџжждџежгџдегџдегџвваџддвџддвџггбџвгаџвваџбваџбвЯџааЮџаЯЮџааЮџЯЯЭџааЮџааЮџббЯџвбаџвбаџгвбџввбџггвџдгвџедгџеедџжжеџжжеџиижџййзџкйиџккйџлккџнмлџннмџоонџрроџсрпџссрџуутџхффџххфџччцџшччџщщшџыыъџьььџээьџ№№яџ№№№џёё№џђђђџєєєџѕѕѕџїііџїїїџљљљџњњњџћћћџќќќџ§§§џ§§§џ§§§џ§§§џ§§§џєєєџ§§§џўўўџ№№№џљљљџїїїџїїїџїїїџіііџіііџѕѕѕџѕѕѕџѕѕѕџїїїџёёёџўўўџ§§§џ§§§џўўўџ§§§џ§§§џ§§§џ§§§џєєєџўўўџђђђџяяяџ§§§џђђђџяяяџяяяџїїїџѓѓѓџэээџіііџїїїџ№№№џћћћџъъъџѕѕѕџѓѓѓџщшшџѕѕѕџчццџуууџьььџссрџллкџммлџзззџуутџффуџссрџппоџоонџнмлџккйџйизџззжџжееџггвџгвбџггбџдегџжждџзздџзижџйкзџийжџбвЯџЪЪЧџФУТџПННџКЗИџДБВџЏЋ­џЋІЉџЈЂЅџЅ ЃџЃЁџЁ›žџœ–šџ˜’–џ’‹џ‰Žџ’Šџ‘‰Žџ‘‰Žџ‘‰џˆŽџˆŽџ‰Žџ‰Žџ•Ž“џ—•џ—”џ™‘•џ—šџŸ™œџЁ›žџЃž џІЁЃџЈЄЅџЉЅЇџ­ЉЊџА­­џГААџЗЕЕџКЙИџНЛЛџРПОџФФТџЩЩЦџЭЮЪџЬЭЩџЪЬШџЩЪЧџШЩЦџЧШЦџЦЧФџЦЦФџХФУџФУТџФФТџХХУџЦХФџЧЦХџШЧЦџЩШЦџЫЪШџЪЫШџЬЬЪџЭЭЫџЮЭЬџаЮЭџЯЯЮџвбаџгваџддвџеегџзжеџиззџййиџллйџннлџоонџррпџттсџффтџццхџчччџъъщџььыџююэџёёёџѓѓђџѕѕѕџїїіџљљљџњњњџћћћџ§§§џ§§§џ§§§џєєєџ§§§џўўўџ№№№џљљљџїїїџїїїџїїїџіііџіііџѕѕѕџѕѕѕџѕѕѕџїїїџёёёџўўўџ§§§џ§§§џўўўџ§§§џ§§§џ§§§џ§§§џєєєџ§§§џіііџѓѓѓџєєєџѓѓѓџєєєџєєєџєєєџѓѓѓџёёёџѕѕѕџѓѓѓџѓѓѓџђђђџ№№№џюююџююэџшшшџшшчџттсџррпџоонџййиџжжеџзжеџббаџззеџжжеџедгџгвбџвваџвваџвваџвбЯџббЯџааЮџЮЯЬџЬЭЩџПННџЎЊЋџŸ™џ‡Žџ†|„џznxџpcnџhYfџ`P]џYIWџRAQџN=LџG4EџB.@џ>*=џ?)=џ>)<џ?)=џ?)=џ?)=џ?)=џ?)=џ?)=џ?)=џ?)=џ?)=џ?)=џ?)=џ?)=џ?)=џ?)=џ?)=џ?)=џ?)=џ?)=џ?)=џ?*=џ?*=џ?)<џ?*<џ>*=џ@-?џD1BџI7HџL:KџRAPџVETџZJXџ^O\џbS`џhZgџocnџymwџ‚wџŠ‚‡џ’Œ‘џ›•™џЅЂЃџЎ­ЌџЙЙЗџССОџТТПџТТПџТТПџУУРџУФСџУУРџФФСџУУСџУУСџТУРџУТСџУТСџУТРџХФТџХФУџЧЦФџШШЦџЩЩЧџЫЪЩџЬЬЪџЮЭЬџаЯЭџббЯџгвбџеддџззеџкйиџллкџоонџсрпџфууџчццџъъщџэьэџёё№џєєєџїїіџљљљџћћћџќќќџ§§§џєєєџ§§§џўўўџ№№№џљљљџїїїџїїїџїїїџіііџіііџѕѕѕџѕѕѕџѕѕѕџїїїџёёёџўўўџ§§§џ§§§џўўўџ§§§џ§§§џ§§§џ§§§џєєєџ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џќќќџњњњџјјјџєєєџ№№№џьььџчццџттсџммлџйииџедгџвбаџЮЮЭџЫЪШџЧЦХџШШЦџЫЫЩџЭЮЫџУУРџИЖЕџЏЋЌџ ›џ…{ƒџl`kџVFTџH5FџB.@џ?*=џ?*=џ?*=џ@*>џ@*>џ@*>џ@*>џ@*>џ?*=џ>)<џ>)<џ=);џ<(;џ<(:џ;'9џ;'9џ:'8џ:&8џ9&8џ9&7џ9%7џ8%7џ8%7џ8%7џ8%7џ8%7џ8%7џ8%7џ8%7џ8%7џ9%7џ9%7џ8%7џ9&7џ9&7џ:&8џ:'8џ:'9џ;'9џ;(:џ<(:џ<(;џ=);џ=)<џ>)<џ?)=џ?*=џ@*>џ@*>џ@*>џ@*>џ@*>џ@*>џ?*=џ?*=џ?*=џ?*=џA-?џC/AџF3EџR?Oџ]LZџeWcџsirџ‚y~џŠŽџž™›џІЄЄџЌЋЊџГВАџККЖџРРНџППЛџННКџЙИЖџИЖЕџЙИЖџЛЛЙџММКџОНЛџППМџРРОџТСПџФУТџЦХУџШЦХџЩЩЧџЫЫЩџЯЮЭџбаЯџддгџйизџномџттсџцццџьььџёё№џєєєџїїїџњњњџ§§§џєєєџ§§§џўўўџ№№№џљљљџїїїџїїїџїїїџіііџіііџѕѕѕџѕѕѕџѕѕѕџїїїџёёёџўўўџ§§§џ§§§џўўўџ§§§џ§§§џ§§§џ§§§џєєєџџџџџўўўџўўўџўўўџўўўџўўўџўўўџўўўџўўўџўўўџўўўџўўўџ§§§џљљљџїїїџёёёџьэыџччцџрпоџиизџггбџЭЮЬџЪЪШџЧЧХџЦЦФџШШХџЩЪЦџГББџ™“—џt}џhZeџQ?Nџ?*<џ?)=џ?)=џ>)<џ>)<џ=);џ=(;џ<(:џ;'9џ:&8џ:&8џ9%7џ8%6џ7$6џ;'9џ?)=џB+@џF-DџI/FџL1IџP4MџT8QџV8RџX:TџZYџ]?Zџ`A]џaB^џaB^џaB^џaB^џaB^џaB^џaB^џaB^џaB^џ`A]џ`A]џaA]џ_@\џ]>Yџ[џ?)<џ<':џ9%6џ8$6џ8%7џ9&7џ:&8џ:&8џ;'9џ;'9џ<(:џ<(;џ=(;џ=(;џ=)<џ>)<џ>)<џ>)<џ?)=џ?)=џ?*=џ@,>џN)=џ<(;џ;(9џ;(9џ:&8џ;'9џ=';џ?)=џA+?џJ0FџS7Pџ]>ZџfDbџoLjџvQrџ~Wxџ„\~џ†_џ‰b„џ‹c‡џŽg‰џi‹џ“jџ”lџ•lџ–m‘џ—n’џ˜n“џ™o“џšp•џšp•џšp•џšp•џšp•џšp•џšp•џšp•џšp•џšp•џšp•џšp•џšp•џ™o”џ˜o“џ—n’џ–m‘џ•lџ”kџ“jŽџ’jџh‹џeˆџ‹d†џ‰a„џ‡_‚џ…]€џ‚[}џX{џzTvџtOoџkIgџdCaџ^?[џY;UџS7PџL2IџE.BџA+?џ@*>џ>(<џ=';џ<':џ;'9џ:'8џ9&7џ;(:џ:'8џ<':џ=(;џ>)=џ?)=џ?*=џB/@џK9IџZIXџtirџ“џЉЈІџДГАџЛЛИџНОЙџЗЗДџДГБџЖЕГџЗЖДџИИЕџКЙЗџМЛЙџППНџФТСџШШЦџЭЭЬџедгџммлџуууџыыъџёёёџїїїџњњњџ§§§џєєєџ§§§џўўўџ№№№џљљљџїїїџїїїџїїїџіііџіііџѕѕѕџѕѕѕџѕѕѕџїїїџёёёџўўўџ§§§џ§§§џўўўџ§§§џ§§§џ§§§џ§§§џєєєџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ§§§џљљљџіііџя№яџщщщџссрџйизџгваџжздџСРОџ‘ˆŽџ^N\џ?)=џ?)=џ?)=џ>)<џ<(:џ9&7џ8$6џA*>џK1HџU9RџaB^џnLkџ~Wyџˆ`„џ’hџ—l‘џ˜o“џšr•џ›r–џ›r–џ›r–џ›r–џ›r•џšr•џšq•џšq”џ™q”џ™q”џ™q”џ˜p“џ˜p“џ˜p“џ˜p“џ˜p“џ˜p“џ˜p“џ˜p“џ˜p“џ˜p“џ˜p“џ˜p“џ˜p“џ˜p“џ˜p“џ˜p“џ˜p“џ˜p“џ˜p“џ˜p“џ˜p“џ˜p“џ˜p“џ˜p“џ˜p“џ™p”џ™q”џ™q”џ™q”џ™q”џšq•џšq•џšr•џšr•џ›r–џ›r–џ›r–џ›r–џ›r–џšq•џ™o”џ˜n“џ–l‘џ•jџ‘f‹џŠa…џƒ[~џ|VxџtQpџlJgџdC`џ[=WџT7QџK1HџE,Bџ?)=џ8%6џ8%7џ;'9џ=(;џ>)=џ?)=џ?)=џ?)=џ?*<џWGUџvktџ“џЎ­ЌџНОКџИЗЕџЕЕВџЗЗЕџИИЕџЛКИџНМКџСРОџЧЦФџЫЫЩџггбџккйџуттџъъщџё№№џіііџњњњџ§§§џєєєџ§§§џўўўџ№№№џљљљџїїїџїїїџїїїџіііџіііџѕѕѕџѕѕѕџѕѕѕџїїїџёёёџўўўџ§§§џ§§§џўўўџ§§§џ§§§џ§§§џ§§§џєєєџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ§§§џњњњџїїїџё№№џыыъџццхџшщчџийжџ‡}…џP>Oџ?*=џ>)=џ<):џ:'8џ:&8џ?)<џN3KџdC`џwRrџ„^џgŠџ—m’џœq—џ›r–џ›r–џ™q”џ—p’џ—o’џ—o’џ—o’џ—p’џ—p’џ—p’џ—o’џ—o’џ—o’џ—o’џ—o’џ—o’џ—o’џ—o’џ—o’џ—o’џ–o‘џ–n‘џ•mџ”lџ”lџ”lџ”lџ”lџ”lџ”lџ”lџ”lџ”lџ”lџ”lџ”lџ”lџ•mџ–n‘џ—o’џ—o’џ—o’џ—o’џ—o’џ—o’џ—o’џ—o’џ—o’џ—o’џ—o’џ—o’џ—o’џ—o’џ—p’џ—p’џ—o’џ—o’џ—o’џ—o’џ—o’џ—o’џ—p’џ˜p“џ˜q”џšr•џ›r•џ›r–џ›q–џ›q–џšp•џ–lџfŠџˆaƒџ[|џwQrџiFeџX9UџK1Hџ=(;џ;&9џ:&8џ:'8џ<(:џ>)<џ?)=џ?*=џP>NџocmџЄ ЁџППМџХХТџСТПџРПНџТТРџЧЦХџЫЫЩџбаЯџзжжџоонџццхџьььџђђёџјјїџћћћџўўўџєєєџ§§§џўўўџ№№№џљљљџїїїџїїїџїїїџіііџіііџѕѕѕџѕѕѕџѕѕѕџїїїџёёёџўўўџ§§§џ§§§џўўўџ§§§џ§§§џ§§§џ§§§џєєєџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўўўџћћћџљљљџѕѕѕџё№№џљњљџД­ГџP=Oџ?)=џ?*>џ<(:џ9%7џD,AџX:TџpMmџb‡џ—m‘џ›r–џœs—џ›r–џ™q”џ˜p“џ˜p“џ˜p“џ˜p“џ˜p“џ–o‘џ•mџ”kџ“jŽџ’iџ‘hŒџfŠџŽd‰џa‡џ‹`†џ‹_…џŠ^„џ‰]ƒџˆ]ƒџ‡[ƒџ‡Zџ†Zџ†Yџ†Zџ‡Zџ†Zџ†Zџ†Zџ†Zџ‡Zџ‡Zџ‡Zџ‡Zџ‡Zџ‡Zџ‡Zџ‡Zџ‡Zџ‡Zџ‡Zџ‡[‚џ‡[‚џˆ[‚џˆ\‚џˆ\ƒџ‰]„џ‰^„џŠ_…џ‹`†џŒ`‡џŒb‡џc‡џŽcˆџŽd‰џeŠџg‹џ‘hŒџ“jŽџ“jŽџ”kџ”lџ•lџ–mџ–n‘џ—o’џ˜p“џ˜p“џ˜p“џ˜p“џ˜p“џ˜p“џ˜p“џ˜p“џ™q”џšr•џ›r–џœr—џ›r–џ˜p“џ•kџŒb‡џyStџfFcџU9QџH.Eџ;'9џ8%6џ=(;џ@*>џ?)=џ?)<џTBQџ—”џЧЦХџжзгџЭЬЫџвбаџжедџккйџсспџцццџьььџёёёџіііџљљљџќќќџўўўџєєєџ§§§џўўўџ№№№џљљљџїїїџїїїџїїїџіііџіііџѕѕѕџѕѕѕџѕѕѕџїїїџёёёџўўўџ§§§џ§§§џўўўџ§§§џ§§§џ§§§џ§§§џєєєџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўўўџ§§§џћћћџњљљџџџџџ˜Ž—џ?)=џ>)<џ<':џ9%7џL2IџlIgџˆ`ƒџ›o•џ›s–џ™q”џ—p’џ—o’џ—p’џ—p’џ˜p“џ—o’џ“jŽџ‘g‹џŽd‰џŒa‡џŠ_…џŠ^„џˆ\ƒџ‡[џ†Y€џ…X€џ†Y€џ†Yџ†Zџ‡Zџ‡[‚џ‡[‚џ‡[‚џ‡[‚џ‡\‚џˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџ‡\ƒџ‡\ƒџ‡\ƒџ‡\ƒџ‡\ƒџ‡\ƒџ‡\ƒџ‡\ƒџ‡\ƒџ‡\ƒџ‡\ƒџ‡\ƒџ‡[‚џ‡[‚џ‡[‚џ‡[‚џ‡[‚џ‡[‚џ‡[‚џ‡[‚џ‡[‚џ‡Z‚џ‡Z‚џ‡Z‚џ†Zџ†Zџ†Zџ†Zџ‡[‚џˆ\ƒџˆ\ƒџ‰]„џŠ_…џ‹`†џŒb‡џcˆџŽd‰џdŠџg‹џ’iџ“jŽџ”mџ—o’џ—p“џ—p’џ—p’џ—p’џ—o’џ—o’џ˜p“џ˜q“џ›s–џ›r–џšo”џdˆџxTsџcC_џI0Gџ9%7џ:&8џ<(:џ>)<џ?)=џYHWџš’™џннмџшщчџонмџппоџъъъџяяюџѓѓѓџіііџљљљџќќќџўўўџџџџџєєєџ§§§џўўўџ№№№џљљљџїїїџїїїџїїїџіііџіііџѕѕѕџѕѕѕџѕѕѕџїїїџёёёџўўўџ§§§џ§§§џўўўџ§§§џ§§§џ§§§џ§§§џєєєџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўўўџџџџџџџџџ–Š”џ>)=џ?*=џ:&8џJ0FџuPpџ•lџs—џ›r–џ—p’џ—p“џ—p’џ–n‘џ”kџ‘hŒџcˆџ‰]ƒџˆ\‚џ‡[‚џ‡[‚џ†Zџ†Yџ†Zџ‡Z‚џ‡[‚џ‡[‚џˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџ‡\ƒџ‡\ƒџˆ[‚џ‡\ƒџ‡[‚џ‡\‚џ‡\‚џ‡[‚џ‡\ƒџˆ\ƒџ‡\ƒџ‡[‚џ‡\‚џ‡\‚џ‡[‚џ‡\ƒџˆ\ƒџ‡\ƒџ‡[‚џ‡\‚џ‡\‚џ‡[‚џ‡\ƒџˆ\ƒџ‡\ƒџ‡[‚џ‡\‚џ‡\‚џ‡[‚џ‡\ƒџˆ\ƒџ‡\ƒџ‡[‚џ‡\‚џ‡\‚џ‡[‚џ‡\ƒџˆ\ƒџ‡\ƒџ‡[‚џ‡\‚џ‡\‚џˆ\ƒџ‡[‚џ‡[‚џ‡[‚џ‡[‚џ‡[‚џ‡Z‚џ‡Z‚џ†Zџ†Zџ†Zџ†Zџ‡[‚џ‡[‚џ‡[‚џˆ\ƒџˆ\ƒџŠ^…џŒb‡џŽd‰џ‘hŒџ”kџ•mџ–n‘џ—p’џ˜p“џ—p’џ˜p“џšr•џs—џ›r–џ’jџXzџ^?[џE-Bџ:&8џ=(;џ@*>џ?)=џZIYџПКПџњњњџёёёџђђђџїїїџљљљџћћћџќќќџўўўџџџџџџџџџєєєџ§§§џўўўџ№№№џљљљџїїїџїїїџїїїџіііџіііџѕѕѕџѕѕѕџѕѕѕџїїїџёёёџўўўџ§§§џ§§§џўўўџ§§§џ§§§џ§§§џ§§§џєєєџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџШТЧџ?*<џ>)<џ:&8џY:Vџ‘g‹џ›r–џ˜p“џ—o’џ˜p“џ–o‘џ“iџŽd‰џŠ_…џ‡Zџ†Zџ‡[‚џ‡[‚џ‡[‚џ‡[‚џ‡[‚џ‡[‚џˆ\ƒџˆ\ƒџ‡\ƒџˆ[‚џ‡[‚џ‡\‚џ‡[‚џ‡[ƒџ‡\ƒџ‡[‚џ‡[ƒџ‡[‚џ‡\‚џ‡[‚џ‡[ƒџ‡\ƒџ‡[‚џ‡[ƒџ‡[‚џ‡\‚џ‡[‚џ‡[ƒџ‡\ƒџ‡[‚џ‡[ƒџ‡[‚џ‡\‚џ‡[‚џ‡[ƒџ‡\ƒџ‡[‚џ‡[ƒџ‡[‚џ‡\‚џ‡[‚џ‡[ƒџ‡\ƒџ‡[‚џ‡[ƒџ‡[‚џ‡\‚џ‡[‚џ‡[ƒџ‡\ƒџ‡[‚џ‡[ƒџ‡[‚џ‡\‚џ‡[‚џ‡[ƒџ‡\ƒџ‡[‚џ‡[ƒџ‡[‚џ‡\‚џ‡[‚џ‡[ƒџ‡\ƒџ‡[‚џ‡[ƒџ‡[‚џˆ\ƒџ‡[‚џ‡[‚џ‡[‚џ‡[‚џ‡[‚џ‡[‚џ‡[‚џ‡[‚џ‡[‚џ‡Z‚џ†Zџ‡Zџ‰]ƒџŠ`…џŽd‰џf‹џ“jŽџ–o‘џ˜p“џ—o’џ—o’џ˜p“џšr•џ›q–џdˆџjHgџF-Dџ8%7џ=(;џ?)=џ?)=џ—Œ–џўўўџџџџџњњњџ§§§џўўўџџџџџџџџџџџџџџџџџєєєџ§§§џўўўџ№№№џљљљџїїїџїїїџїїїџіііџіііџѕѕѕџѕѕѕџѕѕѕџїїїџёёёџўўўџ§§§џ§§§џўўўџ§§§џ§§§џ§§§џ§§§џєєєџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ§§§џћћћџћћћџћћћџћћћџ§§§џћћћџ§§§џbQ`џ>)<џ:'8џY;Vџ–l‘џ™r”џ–n‘џ˜p“џ—o’џg‹џŠ_…џˆ\ƒџ†Zџ‡[‚џˆ\ƒџˆ\ƒџˆ\ƒџˆ\‚џ‡[‚џ‡\ƒџˆ\ƒџ‡\ƒџ‡\ƒџ‡\ƒџ‡\ƒџ‡[ƒџ‡\ƒџˆ\ƒџ‡\ƒџ‡\ƒџ‡\ƒџ‡\ƒџ‡[ƒџ‡\ƒџˆ\ƒџ‡\ƒџ‡\ƒџ‡\ƒџ‡\ƒџ‡[ƒџ‡\ƒџˆ\ƒџ‡\ƒџ‡\ƒџ‡\ƒџ‡\ƒџ‡[ƒџ‡\ƒџˆ\ƒџ‡\ƒџ‡\ƒџ‡\ƒџ‡\ƒџ‡[ƒџ‡\ƒџˆ\ƒџ‡\ƒџ‡\ƒџ‡\ƒџ‡\ƒџ‡[ƒџ‡\ƒџˆ\ƒџ‡\ƒџ‡\ƒџ‡\ƒџ‡\ƒџ‡[ƒџ‡\ƒџˆ\ƒџ‡\ƒџ‡\ƒџ‡\ƒџ‡\ƒџ‡[ƒџ‡\ƒџˆ\ƒџ‡\ƒџ‡\ƒџ‡\ƒџ‡\ƒџ‡[ƒџ‡\ƒџˆ\ƒџ‡\ƒџ‡\ƒџ‡\ƒџ‡\ƒџ‡[ƒџˆ\ƒџ‡[‚џˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџ‡[‚џ‡[‚џ†Zџ‡Z‚џˆ\ƒџ‰^„џbˆџ’iџ–n‘џ—o’џ—p’џ–n‘џ˜p“џœr–џŽe‰џlIhџ@)>џ:&8џ>)<џ?*=џrcqџўўўџџџџџ§§§џџџџџџџџџџџџџџџџџџџџџєєєџ§§§џўўўџ№№№џљљљџїїїџїїїџїїїџіііџіііџѕѕѕџѕѕѕџѕѕѕџїїїџёёёџўўўџ§§§џ§§§џўўўџ§§§џ§§§џ§§§џ§§§џєєєџџџџџџџџџџџџџџџџџџџџџџџџџџџџџїїїџыыыџьььџыыыџыыыџљљљџћћћџхтфџ?*=џ=(;џB+@џe‰џšr•џ—o’џ–o’џfŠџ‡[‚џ†Y€џ†Zџ‡[‚џˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџ‡\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџ‡[‚џ‡\ƒџˆ\ƒџˆ\ƒџ‡\ƒџ‡[‚џ‡[ƒџˆ\ƒџ‡[ƒџˆ\ƒџˆ\ƒџ‡\ƒџ‡[‚џ‡[ƒџˆ\ƒџ‡[ƒџˆ\ƒџˆ\ƒџ‡\ƒџ‡[‚џ‡[ƒџˆ\ƒџ‡[ƒџˆ\ƒџˆ\ƒџ‡\ƒџ‡[‚џ‡[ƒџˆ\ƒџ‡[ƒџˆ\ƒџˆ\ƒџ‡\ƒџ‡[‚џ‡[ƒџˆ\ƒџ‡[ƒџˆ\ƒџˆ\ƒџ‡\ƒџ‡[‚џ‡[ƒџˆ\ƒџ‡[ƒџˆ\ƒџˆ\ƒџ‡\ƒџ‡[‚џ‡[ƒџˆ\ƒџ‡[ƒџˆ\ƒџˆ\ƒџ‡\ƒџ‡[‚џ‡[ƒџˆ\ƒџ‡[ƒџˆ\ƒџˆ\ƒџ‡\ƒџ‡[‚џ‡[ƒџˆ\ƒџ‡[ƒџˆ\ƒџˆ\ƒџ‡\ƒџ‡[‚џ‡[ƒџˆ\ƒџ‡[ƒџˆ\ƒџˆ\ƒџˆ\ƒџ‡[‚џ‡[‚џ‡[‚џ‡[‚џ†Zџˆ\ƒџcˆџ’iџ–n‘џ˜p“џ—o’џ™q”џœs—џ‰`„џW9Tџ:&8џ>)<џ?*=џfVeџљљљџџџџџџџџџџџџџџџџџџџџџџџџџєєєџ§§§џўўўџ№№№џљљљџїїїџїїїџїїїџіііџіііџѕѕѕџѕѕѕџѕѕѕџїїїџёёёџўўўџ§§§џ§§§џўўўџ§§§џ§§§џ§§§џ§§§џєєєџџџџџџџџџџџџџџџџџџџџџџџџџџџџџјјјџьььџьььџьььџэээџќќќџџџџџЭЧЬџ?*=џ;'9џR6Oџ™o”џ–o‘џ–n‘џ‹_…џ‚T|џ„V~џ…Wџ…Wџ…Wџ…Xџ…X€џ†Yџ†Zџ‡Z‚џ‡Z‚џˆ[‚џˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџ‡\ƒџ‡[‚џˆ\ƒџˆ\ƒџ‡\ƒџ‡[‚џ‡\ƒџˆ\‚џ‡[ƒџˆ\ƒџˆ\ƒџ‡\ƒџ‡[‚џ‡\ƒџˆ\‚џ‡[ƒџˆ\ƒџˆ\ƒџ‡\ƒџ‡[‚џ‡\ƒџˆ\‚џ‡[ƒџˆ\ƒџˆ\ƒџ‡\ƒџ‡[‚џ‡\ƒџˆ\‚џ‡[ƒџˆ\ƒџˆ\ƒџ‡\ƒџ‡[‚џ‡\ƒџˆ\‚џ‡[ƒџˆ\ƒџˆ\ƒџ‡\ƒџ‡[‚џ‡\ƒџˆ\‚џ‡[ƒџˆ\ƒџˆ\ƒџ‡\ƒџ‡[‚џ‡\ƒџˆ\‚џ‡[ƒџˆ\ƒџˆ\ƒџ‡\ƒџ‡[‚џ‡\ƒџˆ\‚џ‡[ƒџˆ\ƒџˆ\ƒџ‡\ƒџ‡[‚џ‡\ƒџˆ\‚џ‡[ƒџˆ\ƒџˆ\ƒџ‡\ƒџ‡[‚џ‡[‚џ‡[‚џˆ\ƒџˆ\ƒџ‡[‚џ‡Zџ‡[‚џŠ_…џ‘hŒџ–o‘џ˜p“џ–o‘џ™q”џ—m’џkHgџ:&7џ=(;џ?*=џtfsџџџџџџџџџџџџџџџџџџџџџџџџџєєєџ§§§џўўўџ№№№џљљљџїїїџїїїџїїїџіііџіііџѕѕѕџѕѕѕџѕѕѕџїїїџёёёџўўўџ§§§џ§§§џўўўџ§§§џ§§§џ§§§џ§§§џєєєџџџџџџџџџџџџџџџџџџџџџџџџџџџџџјјјџэээџюююџюююџэээџќќќџџџџџЮШЭџ?*=џ;'9џT7Pџ™o”џ—o’џ”lџ…X€џ„U~џ…W~џ„V~џ„V~џ„V~џ„V~џ„V~џ„V~џ„V~џ„V~џ„V~џ„V~џ…Wџ…X€џ†Y€џ†Y€џ‡Yџ‡Zџ‡Z‚џ‡Z‚џ‡[‚џ‡[‚џ‡[‚џˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџ‡\ƒџ‡[‚џ‡[‚џ‡[‚џ‡[‚џ‡[‚џ‡[‚џ‡[‚џ‡[‚џ‡[‚џ‡[‚џ‡[‚џ‡[‚џˆ[‚џˆ\ƒџ‡\‚џ‡[‚џ‡\ƒџ‡\‚џ‡[ƒџ‡\‚џˆ\ƒџ‡\‚џ‡[‚џ‡\ƒџ‡\‚џ‡[ƒџ‡\‚џˆ\ƒџ‡\‚џ‡[‚џ‡\ƒџ‡\‚џ‡[ƒџ‡\‚џˆ\ƒџ‡\‚џ‡[‚џ‡\ƒџ‡\‚џ‡[ƒџ‡\‚џˆ\ƒџ‡\‚џ‡[‚џ‡\ƒџ‡\‚џ‡[ƒџ‡\‚џˆ\ƒџ‡\‚џ‡[‚џ‡\ƒџ‡\‚џ‡[ƒџ‡\‚џˆ\ƒџ‡\‚џ‡[‚џ‡\ƒџ‡\‚џ‡[ƒџ‡\‚џˆ\ƒџˆ\ƒџ‡[‚џ‡Z‚џ‡Z‚џ‰^„џ’iŒџ—o’џ—o’џ™q”џs˜џrNnџ=(;џ>*<џ>*<џš™џџџџџќќќџџџџџџџџџџџџџєєєџ§§§џўўўџ№№№џљљљџїїїџїїїџїїїџіііџіііџіііџѕѕѕџѕѕѕџїїїџёёёџўўўџ§§§џ§§§џўўўџ§§§џ§§§џ§§§џ§§§џєєєџџџџџџџџџџџџџџџџџџџџџџџџџџџџџјјјџљљљџўўўџќќќџяяяџќќќџџџџџзвжџ?*=џ<':џO4Lџ˜n“џ—o’џ•lџ‡Zџ„U~џ…W~џ…Wџ…Wџ…W~џ„Wџ…V~џ„V~џ„V~џ„V~џ„V~џ„V~џ„V~џ„V~џ„V~џ„V~џ„V~џ„V~џ„V~џ…Vџ…Wџ…Wџ…Wџ†X€џ†X€џ†X€џ†Yџ†Yџ†Yџ†Zџ‡Zџ‡Z‚џ‡Z‚џ‡[‚џˆ[‚џˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџ‡\ƒџ‡[‚џˆ\‚џˆ\‚џ‡\‚џ‡\ƒџˆ\ƒџˆ\‚џ‡[ƒџˆ\‚џˆ\‚џ‡\‚џ‡\ƒџˆ\ƒџˆ\‚џ‡[ƒџˆ\‚џˆ\‚џ‡\‚џ‡\ƒџˆ\ƒџˆ\‚џ‡[ƒџˆ\‚џˆ\‚џ‡\‚џ‡\ƒџˆ\ƒџˆ\‚џ‡[ƒџˆ\‚џˆ\‚џ‡\‚џ‡\ƒџˆ\ƒџˆ\‚џ‡[ƒџˆ\‚џˆ\‚џ‡\‚џˆ\ƒџˆ\ƒџˆ\ƒџ‡[‚џ‡[‚џŒa†џ•mџ—p’џ—p’џ›q–џnKjџ8%6џ?*=џ?*=џйеиџџџџџџџџџџџџџџџџџєєєџ§§§џўўўџяяяџѕѕѕџѕѕѕџѕѕѕџѕѕѕџєєєџєєєџєєєџєєєџєєєџєєєџёёёџўўўџ§§§џ§§§џўўўџ§§§џ§§§џ§§§џ§§§џєєєџџџџџџџџџџџџџџџџџџџџџџџџџџџџџјјјџњњњџџџџџќќќџэээџљљљџџџџџпмпџA,?џ<(:џK1Hџ—l‘џ—p’џ•mџˆ[‚џ„U}џ…V~џ„Wџ…Wџ…W~џ„Wџ…Wџ…Wџ…V~џ„Wџ…Wџ…W~џ„Wџ…Wџ…Wџ…V~џ„Wџ…Wџ…V~џ„V~џ„V~џ„V~џ„V~џ„V~џ„V~џ„V~џ„V~џ„V~џ„V~џ„V~џ„V~џ…V~џ…Vџ…Wџ…Wџ…Wџ…Wџ…Wџ…X€џ…Xџ†X€џ…X€џ†X€џ†Y€џ†Y€џ†Yџ‡Zџ‡Zџ‡[‚џ‡[‚џ‡[‚џ‡[‚џ‡[‚џ‡[‚џ‡[‚џˆ[‚џˆ[‚џ‡[ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџ‡\ƒџ‡[‚џ‡[‚џ‡[‚џ‡[‚џ‡[‚џ‡[‚џˆ[‚џ‡\ƒџˆ\ƒџ‡\ƒџ‡[‚џ‡\‚џ‡\‚џ‡[‚џ‡\ƒџˆ\ƒџ‡\ƒџ‡[‚џ‡\‚џ‡\‚џ‡[‚џ‡\ƒџˆ\ƒџ‡\ƒџ‡[‚џ‡\‚џ‡\‚џ‡[‚џ‡\ƒџˆ\ƒџ‡\ƒџ‡[‚џ‡\‚џ‡\‚џˆ\ƒџ‡[‚џ†Zџˆ\ƒџ”kџ—o’џ˜p“џšp•џY;Uџ:'8џ?*=џwguџџџџџџџџџџџџџџџџџєєєџ§§§џ§§§џђђђџіііџіііџіііџіііџіііџіііџіііџіііџіііџїїїџѓѓѓџ§§§џ§§§џ§§§џўўўџ§§§џ§§§џ§§§џ§§§џєєєџџџџџџџџџџџџџџџџџџџџџџџџџџџџџјјјџњњњџџџџџ§§§џђђђџњњњџџџџџщцшџC.Aџ<(:џG.Dџ–kџ—p’џ–n‘џˆ\ƒџƒU}џ…V~џ…Wџ„W~џ„V~џ„V~џ…Vџ„V~џ…V~џ…Wџ„W~џ„V~џ„V~џ…Vџ„V~џ…V~џ…Wџ„W~џ„V~џ„V~џ…Vџ„V~џ…V~џ…Wџ„Wџ„Wџ…V~џ„V~џ„V~џ„V~џ„V~џ„V~џ„V~џ„V~џ„V~џ„V~џ„V~џ„V~џ„V~џ„V~џ„V~џ„V~џ„V~џ„V~џ„V~џ„V~џ„V~џ„V~џ„V~џ„V~џ„Wџ…Wџ…Wџ…Wџ…Wџ…Xџ…Xџ…X€џ†X€џ†Y€џ†Yџ†Zџ†Zџ‡Zџ‡[‚џ‡[‚џ‡[‚џˆ[‚џˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџ‡[‚џ‡[‚џ‡[ƒџ‡[‚џ‡\‚џ‡[‚џ‡[ƒџ‡\ƒџ‡[‚џ‡[ƒџ‡[‚џ‡\‚џ‡[‚џ‡[ƒџ‡\ƒџ‡[‚џ‡[ƒџ‡[‚џ‡\‚џ‡[‚џ‡[ƒџ‡\ƒџ‡[‚џ‡[ƒџ‡[‚џˆ\ƒџ‡[‚џ‡[‚џ•lџ—o’џœs—џ‡^џA*>џ>*<џ?)<џнкнџџџџџџџџџџџџџєєєџ§§§џ§§§џѓѓѓџљљљџљљљџљљљџљљљџљљљџљљљџљљљџљљљџљљљџњњњџєєєџ§§§џ§§§џ§§§џўўўџ§§§џ§§§џ§§§џ§§§џєєєџџџџџџџџџџџџџџџџџџџџџџџџџџџџџјјјџњњњџџџџџ§§§џєєєџјјјџџџџџјїїџF1Dџ=(;џB+@џ’hџ—p’џ—o’џŠ^„џƒU}џ…Wџ„Wџ…Wџ„V~џ„Wџ…Wџ…Wџ…V~џ„Wџ…Wџ„V~џ„V~џ…Wџ„V~џ„V~џ„V~џ„U~џ„U}џƒU}џƒU}џƒU}џƒT}џƒT}џƒT}џƒT}џƒT}џƒT}џƒU}џƒU}џƒU}џ„U~џ„V~џ„V~џ…Wџ…Wџ…V~џ„Wџ„Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…V~џ„V~џ„W~џ„V~џ„V~џ„V~џ„V~џ„V~џ„V~џ„V~џ„V~џ„V~џ„V~џ„V~џ…Wџ…Wџ…Wџ…Wџ…Wџ…X€џ†X€џ†X€џ†Zџ‡Zџ‡[‚џ‡[‚џ‡[ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџ‡\ƒџ‡[‚џ‡\ƒџ‡\ƒџ‡\ƒџ‡\ƒџ‡[ƒџ‡\ƒџˆ\ƒџ‡\ƒџ‡\ƒџ‡\ƒџ‡\ƒџ‡[ƒџ‡\ƒџˆ\ƒџ‡\ƒџ‡\ƒџ‡\ƒџ‡\ƒџ‡[ƒџ‡[‚џ‡[‚џˆ\ƒџ‡Z‚џŠ^„џ—p’џ—o’џšp”џ\>Xџ;(9џ>)<џ’œџџџџџўўўџџџџџєєєџ§§§џ§§§џѓѓѓџљљљџљљљџљљљџљљљџљљљџљљљџљљљџљљљџљљљџњњњџєєєџ§§§џ§§§џ§§§џўўўџ§§§џ§§§џ§§§џ§§§џєєєџџџџџџџџџџџџџџџџџџџџџџџџџџџџџјјјџњњњџџџџџќќќџэээџяяяџ§§§џќќќџJ7Hџ=(;џ@*>џ‹b…џ˜q“џ˜q“џ‹_…џƒT}џ„W~џ…Vџ…Wџ…Wџ„V~џ„V~џ„V~џ„V~џ„V~џ„V~џ„U~џƒU}џƒT}џƒU}џ„V~џ†Xџ‡Zџˆ[‚џˆ\ƒџ‰]ƒџŠ^„џŠ^„џ‹_…џ‹_…џ‹_…џ‹_…џ‹_…џŠ^„џ‰]„џˆ\ƒџ‡Zџ…WџƒU}џƒT}џ„U~џ„V~џ„V~џ„V~џ„V~џ…Wџ…Wџ…Wџ…V~џ…Vџ…Wџ…V~џ…Wџ…Wџ…Wџ…V~џ…Vџ…Wџ…V~џ…Wџ…Wџ…Wџ…V~џ…Vџ…Wџ…Wџ…V~џ„V~џ„V~џ„V~џ„V~џ„V~џ„V~џ„V~џ„V~џ„V~џ„V~џ„V~џ„V~џ„V~џ…Wџ…Wџ†X€џ†Yџ†Zџ‡Z‚џ‡[‚џˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџ‡[‚џˆ[‚џ‡\ƒџ‡[‚џ‡[ƒџˆ\ƒџ‡[ƒџˆ\ƒџˆ\ƒџ‡\ƒџ‡[‚џ‡[ƒџˆ\ƒџ‡[ƒџˆ\ƒџˆ\ƒџ‡[‚џˆ\ƒџ†Yџ‘hŒџ—p“џ›s–џyUuџ<':џ>)<џaP_џџџџџ§§§џџџџџєєєџ§§§џ§§§џѓѓѓџљљљџљљљџљљљџљљљџљљљџљљљџљљљџљљљџљљљџњњњџєєєџ§§§џ§§§џ§§§џўўўџ§§§џ§§§џ§§§џ§§§џєєєџџџџџџџџџџџџџџџџџџџџџџџџџџџџџјјјџњњњџџџџџ§§§џюююџ№№№џ§§§џќќќџWFVџ=);џ>(<џZ|џšr•џ˜q“џŽbˆџƒU}џ„V~џ„V~џ„U~џƒU}џƒU}џ„U~џ„V~џ„V~џ…Wџˆ[‚џŠ_…џb‡џeŠџ’iџ“iџ”kŽџ•lџ•mџ–n‘џ–n‘џ—o’џ—p’џ˜p“џ˜q“џ˜q“џ˜q“џ˜p“џ—o’џ—o’џ–n‘џ•lџ“kџ’hџeŠџ‹_…џ†Y€џ„V~џ„U}џƒU}џ„V~џ…Wџ…Wџ…V~џ…Wџ…Wџ„V~џ„Wџ…Wџ…Wџ…V~џ…Wџ…Wџ„V~џ„Wџ…Wџ…Wџ…V~џ…Wџ…Wџ„V~џ„Wџ…Wџ…Wџ…V~џ…Wџ…Wџ„V~џ…V~џ„Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…V~џ„V~џ„V~џ„V~џ„V~џ…Vџ…Wџ…Xџ…X€џ†Yџ‡Z‚џˆ\‚џˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџ‡\‚џ‡[‚џ‡\ƒџˆ\‚џ‡[ƒџˆ\ƒџˆ\ƒџ‡\ƒџ‡[‚џ‡\ƒџˆ\‚џ‡[ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџ†ZџŒa†џ˜p“џ˜p“џŽd‰џ@*>џ=(;џG2Dџќќќџџџџџџџџџєєєџ§§§џ§§§џѓѓѓџљљљџљљљџљљљџљљљџљљљџљљљџљљљџљљљџљљљџњњњџєєєџ§§§џ§§§џ§§§џўўўџ§§§џ§§§џ§§§џ§§§џєєєџџџџџџџџџџџџџџџџџџџџџџџџџџџџџјјјџяяяџ№№№џ№№№џьььџ№№№џ§§§џќќќџxjwџ>)<џ<':џsNnџ›r–џ˜p“џ‘g‹џƒU}џ„V~џ†X€џ‡[‚џ‰\ƒџ‹`†џd‰џ’hŒџ”lџ—o’џ—o’џ—o’џ—p’џ—p“џ—p’џ—o’џ—o’џ—o’џ—o’џ—p’џ˜p“џ™q”џ™q”џšr•џ›r–џ›s–џ›s–џ›r–џ›r–џ›r–џšr•џ™q”џ˜p“џ—p’џ—o’џ—o’џ—o’џ”lџŽd‰џ‰]ƒџ„V~џƒU}џ…Wџ…Wџ„V~џ…V~џ…V~џ„V~џ…Wџ…V~џ…V~џ…Vџ…V~џ…V~џ„V~џ…Wџ…V~џ…V~џ…Vџ…V~џ…V~џ„V~џ…Wџ…V~џ…V~џ…Vџ…V~џ…V~џ„V~џ…Wџ…V~џ…V~џ…Vџ„V~џ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ„V~џ„V~џ„V~џ…V~џ…Wџ…X€џ‡Y€џ‡[‚џ‡[‚џˆ\ƒџˆ\ƒџ‡\ƒџ‡[‚џ‡[‚џˆ\ƒџˆ\ƒџ‡\‚џ‡[‚џ‡\ƒџ‡\‚џ‡[ƒџ‡\‚џˆ\ƒџ‡\‚џˆ\ƒџ‡Z‚џŠ^„џ•m‘џ—o’џ—l’џH/Fџ<(:џA,?џфруџџџџџџџџџєєєџ§§§џ§§§џѓѓѓџљљљџљљљџљљљџљљљџљљљџљљљџљљљџљљљџљљљџњњњџєєєџ§§§џ§§§џ§§§џўўўџ§§§џ§§§џ§§§џ§§§џєєєџџџџџџџџџџџџџџџџџџџџџџџџџџџџџјјјџыыыџьььџьььџьььџ№№№џўўўџ§§§џ›‘šџ>)<џ:(8џdC`џœr—џ—o’џ•mџ‘g‹џ’hŒџ”kŽџ•n‘џ˜p“џ˜q“џ˜p“џ˜p“џ—p“џ˜p“џ™q”џšq•џšr•џ›r–џ›r–џ›r–џšq•џ˜o“џ—m’џ”jџfŠџŠa…џ†^џ[|џ|XxџyVuџyUuџzWvџ|Yxџ}Zyџƒ_~џŠf†џ‘kŒџšq”џœs—џ›r–џ›r–џšq•џ™q”џ—p’џ’iџ‹_…џƒU~џ„U~џ„V~џ…Wџ…V~џ„Wџ…Wџ…Wџ…W~џ…Wџ…Wџ…W~џ„Wџ…Wџ…Wџ…W~џ…Wџ…Wџ…W~џ„Wџ…Wџ…Wџ…W~џ…Wџ…Wџ…W~џ„Wџ…Wџ„V~џ…Wџ„V~џ„V~џ„U~џ„U~џ„U}џƒU}џƒU}џƒU}џƒU}џƒU}џƒU}џ„U}џ„U}џ„U}џ„U}џƒU}џƒU}џ„V~џ…Wџ†X€џ‡Zџˆ[‚џˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџ‡[‚џ‡\ƒџˆ\ƒџˆ\‚џ‡[ƒџˆ\‚џˆ\‚џ‡\‚џ‡[‚џ‡[‚џ‰^„џ•mџ—o’џ—m’џO4Mџ<':џ?*=џжбеџџџџџџџџџєєєџ§§§џ§§§џѓѓѓџљљљџљљљџљљљџљљљџљљљџљљљџљљљџљљљџљљљџњњњџєєєџ§§§џ§§§џ§§§џўўўџ§§§џ§§§џ§§§џ§§§џєєєџџџџџџџџџџџџџџџџџџџџџџџџџџџџџїїїџыыыџыыыџыыыџыыыџэээџіііџѕѕѕџФПУџ?*=џ=);џM2Jџ’iџ™q”џ–n‘џ—p’џ—o’џ—o’џ–o‘џ—o’џ™q”џšr•џ›r–џ›p–џ–m‘џgŠџ‰a„џƒ\~џ|UwџoKkџdC`џZџ?)=џ?)<џ>(;џ>)<џ>)<џ>)<џ?*=џ>)<џ?*=џ@+>џA,?џG1EџT)<џ;&8џmJiџžs˜џ›s–џ›r–џ›s–џšp•џ™n“џ”jџˆ_ƒџ|WxџoLkџdC`џX:TџL1IџD,Bџ<':џ8%6џ9%7џ:&8џ;'9џ<':џ<(:џ=(;џ=(;џ=(;џ=);џ=);џ>)<џ>)<џ>)<џ>)<џ>)<џ>)<џ=);џ=(;џ=(;џ<(:џ;'9џ9%8џ9&7џE0Cџ_E\џ}]yџ›s•џšq•џ—p’џ—n‘џ‹`†џƒT}џ…Wџ…Wџ…Vџ„V~џ…V~џ…Wџ„W~џ„V~џ„V~џ…Vџ„V~џ…V~џ…Wџ„W~џ„V~џ„V~џ…Vџ„V~џ…V~џ…Wџ„W~џ…Wџ„Vџ„V~џƒU}џ‡ZџŽd‰џ”lџ˜p“џ˜p“џ˜p“џ˜p“џ˜p“џ˜p“џ˜p“џ˜p“џ˜p“џ˜p“џ˜p“џ˜p“џ˜p“џ˜q“џ–n‘џ”kџ‘gŒџcˆџŠ_…џ‡[‚џ„V~џƒT}џ„V~џ…Xџ‡Zџˆ\‚џˆ\ƒџˆ\ƒџˆ\ƒџ‡[‚џ‡\‚џ‡[‚џ‡[‚џ‡[‚џ‰]ƒџ”lџ—o’џ˜n“џS7Pџ;'9џ?*=џЮШЭџџџџџџџџџєєєџ§§§џ§§§џѓѓѓџљљљџљљљџљљљџљљљџљљљџљљљџљљљџљљљџљљљџњњњџєєєџ§§§џ§§§џ§§§џўўўџ§§§џ§§§џ§§§џ§§§џєєєџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџЄšЃџ?*=џ>)<џ?)=џ]>YџtNoџvPqџmJiџbB^џT8QџI0GџD,Aџ?)=џ;'9џ8%7џ:'8џ<(;џ>)<џ?*=џ@*>џ@*>џ?*=џ?*=џ?*=џB-@џE1BџG3EџM:Kџ[IYџgVeџtdrџ„wƒџ†y…џ†x…џƒv‚џ|mzџjYhџ]L\џNџ=(;џ9%8џ=);џW@Tџ‰f„џžt™џ—o’џ˜p“џ‹`†џƒU}џ„V~џ…Wџ…Wџ…V~џ„Wџ…Wџ„V~џ„Wџ…Wџ…Wџ…V~џ„Wџ…Wџ„V~џ„Wџ…Wџ…Wџ…V~џ„Wџ…Wџ…Wџ„U}џ„WџeŠџ–n‘џ˜p“џ—o’џ˜p“џ›s–џs—џs˜џ›q–џ›q•џ›q–џ›q•џœr—џs˜џs—џœs—џ›s–џ™q”џ˜p“џ—p“џ˜p“џ˜p“џ—o’џ•m‘џ”lџ‘hŒџŒa†џ†Zџ„Wџ„V~џ…W€џ‡Z‚џˆ\ƒџˆ\ƒџ‡\ƒџ‡[‚џ‡\‚џ‡[‚џˆ]ƒџ”lџ—o’џ˜n“џT8Pџ;'9џ?*=џЬЧЫџџџџџџџџџєєєџ§§§џ§§§џѓѓѓџљљљџљљљџљљљџљљљџљљљџљљљџљљљџљљљџљљљџњњњџєєєџ§§§џ§§§џ§§§џўўўџ§§§џ§§§џ§§§џ§§§џєєєџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџo`nџ?*=џ=);џ:&8џ:&8џ:&8џ:&8џ:&8џ;'9џ;'9џ<(:џ=);џ>)<џ>)<џ?*=џC.@џWEVџk[iџykwџ‹Šџ™Ž˜џЕ­ДџЭЧЬџтпсџѕєєџџџџџџџџџџџџџњњњџюююџџџџџџџџџџџџџџџџџџџџџхххџџџџџџџџџѕѕѕџжбеџ­ЄЌџykwџVCSџ>)<џ=(;џ9%8џ>*<џyYuџœs—џ–o‘џ—o’џˆ[‚џƒU}џ„W~џ…Wџ…V~џ…Vџ…Wџ…V~џ…Wџ…Wџ…Wџ…V~џ…Vџ…Wџ…V~џ…Wџ…Wџ…Wџ…V~џ…Wџ…WџƒU}џˆ[‚џ”lџ˜q“џ—o’џ˜q“џœs—џ•kџ‚\~џvRrџmJiџdC`џbB_џbB_џbB_џhGdџnLkџuQqџ{Vwџ…^€џgŠџ˜n“џœq–џœs—џšr•џ˜p“џ˜p’џ—p’џ—p’џ˜p“џ—p“џ”kџeŠџ‹_…џ‡[‚џ…X€џ†Yџ‡[‚џˆ\ƒџˆ\ƒџ‡[‚џˆ\ƒџ•lџ—o’џ—n’џP5Mџ;':џ?*=џдадџџџџџџџџџєєєџ§§§џ§§§џѓѓѓџљљљџљљљџљљљџљљљџљљљџљљљџљљљџљљљџљљљџњњњџєєєџ§§§џ§§§џ§§§џўўўџ§§§џ§§§џ§§§џ§§§џєєєџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўўўџџџџџјїјџ}o|џ?*<џ?*=џ?*=џ?*=џ?*=џ?*=џ?*=џ?*<џJ7Iџk\jџŒџЎЅ­џЪФЩџнкнџыщыџћњћџџџџџўўўџџџџџўўўџџџџџџџџџџџџџџџџџќќќџ§§§џјјјџыыыџўўўџўўўџўўўџўўўџ§§§џтттџ§§§џќќќџџџџџџџџџџџџџуууџё№ёџГЋВџO(;џC+@џJ1GџQ6Mџ]>YџkJgџ€Y|џg‹џ–m‘џ›r•џœr—џ›r–џ™p”џ—p’џ˜p“џ˜p“џ•mџ’iŒџŒb‡џˆ\ƒџ‡[‚џ‡[‚џ…X€џ‡Zџ–mџ—p’џ—l’џL2Iџ<(:џ@+>џлзлџџџџџџџџџєєєџ§§§џ§§§џѓѓѓџљљљџљљљџљљљџљљљџљљљџљљљџљљљџљљљџљљљџњњњџєєєџ§§§џ§§§џ§§§џўўўџ§§§џ§§§џ§§§џ§§§џєєєџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџокоџ –Ÿџˆ{‡џƒv‚џŒ€ŠџЌЃЋџаЫЯџ№я№џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўўўџџџџџџџџџџџџџўўўџџџџџўўўџџџџџџџџџџџџџўўўџџџџџўўўџџџџџќќќџrcrџ?*=џ;&9џH1Fџ’kџ™p”џ˜p“џˆ[‚џ„V~џ„V~џ…V~џ…Vџ…V~џ…V~џ„V~џ…Wџ…V~џ…V~џ…Vџ…V~џ…V~џ„V~џ…Wџ…Wџ…Wџ„V~џ†X€џ”lџ˜p“џ˜p“џ˜o’џqMlџB+?џ8$6џ<(:џ<(:џ>)<џ>)<џ?*=џ>)<џ?)=џ>*<џ?)=џ>)<џ>)<џ=);џ<(:џ;(:џ;(9џ:&8џ:&8џ;'9џ?)=џM3Jџ`@\џtPpџ‡`‚џ•kџœr—џšr•џ—p’џ—o’џ—p“џ—o’џ—o’џ”kŽџf‹џ‰\ƒџŠ_…џ—o’џ—p’џ“hџC,@џ=(;џD/Bџёяёџџџџџџџџџєєєџ§§§џ§§§џѓѓѓџљљљџљљљџљљљџљљљџљљљџљљљџљљљџљљљџљљљџњњњџєєєџ§§§џ§§§џ§§§џўўўџ§§§џ§§§џ§§§џ§§§џєєєџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџќќќџ]L\џ@+>џ7#5џvUrџ›r–џ—p’џd‰џƒT}џ…Wџ…W~џ…Wџ…Wџ…W~џ„Wџ…Wџ…Wџ…W~џ…Wџ…Wџ…W~џ„Wџ…Wџ„V~џ„V~џƒU}џŽdŠџ˜p“џ—o’џšp–џgFcџ9%7џ=)<џ?*=џ>)<џN*<џ>)<џ>)<џ>)<џ>)<џ<(:џ9&8џ7$6џB*?џQ5MџdD`џ|Vwџ“hŽџšq•џ›r–џ™q”џ˜p“џ—p’џ˜q“џ—p’џ•mџ–n‘џ™q”џ‡_‚џ?)=џ=);џK8Jџџџџџ§§§џџџџџєєєџ§§§џ§§§џѓѓѓџљљљџљљљџљљљџљљљџљљљџљљљџљљљџљљљџљљљџњњњџєєєџ§§§џ§§§џ§§§џўўўџ§§§џ§§§џ§§§џ§§§џєєєџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџЗЏЗџ?*=џ:&9џX)<џ?*=џiZiџЭШЬџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџќќќџѕєѕџолоџЕ­ДџŠ}‰џ`P_џQ=NџB.@џ?*<џ>)<џ<(:џ<*:џ:'8џ<':џE-Cџ`?\џzRuџŒb†џ—m’џ›q–џ™q”џ–o‘џ–o‘џ•nџs˜џmLiџ:&8џ>)<џykxџџџџџ§§§џџџџџєєєџ§§§џ§§§џѓѓѓџљљљџљљљџљљљџљљљџљљљџљљљџљљљџљљљџљљљџњњњџєєєџ§§§џ§§§џ§§§џўўўџ§§§џ§§§џ§§§џ§§§џєєєџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџтптџA,?џ<(:џJ1Gџ›r•џ—o’џ“jŽџ…Wџ„V~џ…V~џ…Wџ„W~џ„V~џ„V~џ…Vџ„V~џ…V~џ…Wџ„W~џ„V~џ„V~џ…Vџ…WџƒU}џŽd‰џ˜p“џšr•џŒd‡џF-Cџ<(:џ?*=џ€rџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ№ю№џаЫаџЅ›ЄџzkxџH5Gџ?*=џ>)<џ>)<џ<(;џ:&8џ9%7џH.EџZ:UџqMmџ‡_‚џ—l‘џšp•џŸt™џe‡џI0Fџ>+<џ?*=џЛГКџџџџџџџџџџџџџєєєџ§§§џ§§§џѓѓѓџљљљџљљљџљљљџљљљџљљљџљљљџљљљџљљљџљљљџњњњџєєєџ§§§џ§§§џ§§§џўўўџ§§§џ§§§џ§§§џ§§§џєєєџ§§§џќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџщчщџD/Bџ<(:џG0Dџ™p”џ—o’џ”kџ†X€џ„V~џ…V~џ„Wџ…Wџ„V~џ„Wџ…Wџ…Wџ…V~џ„Wџ…Wџ„V~џ„Wџ…Wџ…Wџ„V~џ”kџ—p’џœr—џoKjџ8%6џ?*=џ^N]џїіїџќќќџњњњџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџњњњџљјјџљјљџќќќџќќќџќќќџќќќџщчщџЫХЪџƒŽџUCTџ?*=џ?*=џ@*>џ=);џ9&7џ<':џC,AџL3IџY*<џ?*=џ>)<џ<(:џ;'9џ:&9џ:&8џ<':џ?*=џ@+>џЬЬЬџ§§§џ§§§џ§§§џ§§§џєєєџ§§§џ§§§џѓѓѓџљљљџљљљџљљљџљљљџљљљџљљљџљљљџљљљџљљљџњњњџєєєџ§§§џ§§§џ§§§џўўўџ§§§џ§§§џ§§§џ§§§џєєєџ§§§џјјјџіііџіііџіііџіііџіііџіііџіііџіііџіііџіііџіііџіііџіііџіііџіііџіііџіііџіііџіііџіііџѕѕѕџіііџіііџѕѕѕџћћћџ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џКГЙџ?*=џ;'9џY)<џP)<џ^L\џеееџ§§§џќќќџўўўџџџџџ§§§џіііџ§§§џ§§§џѓѓѓџљљљџљљљџљљљџљљљџљљљџљљљџљљљџљљљџљљљџњњњџєєєџ§§§џ§§§џ§§§џўўўџ§§§џ§§§џ§§§џ§§§џєєєџ§§§џїїїџѕѕѕџѓѓѓџђђђџђђђџѕѕѕџєєєџђђђџєєєџѕѕѕџѓѓѓџёёёџєєєџєєєџђђђџђђђџєєєџєєєџђђђџєєєџєєєџ№№№џѓѓѓџѕѕѕџєєєџћћћџ§§§џ§§§џ§§§џќќќџ§§§џ§§§џќќќџ§§§џ§§§џ§§§џќќќџќќќџ§§§џ§§§џ§§§џ§§§џ§§§џќќќџ§§§џќќќџќќќџ§§§џќќќџќќќџ§§§џ§§§џфффџИИИџŠŠŠџwwwџ„„„џІІІџбббџ§§§џ§§§џќќќџ‰|ˆџ@*>џ8%6џnLjџ›r–џ—p’џf‹џƒT}џ…Wџ…V~џ…Vџ…V~џ…V~џ„V~џ…Wџ…V~џ…V~џ…Vџ…V~џ…V~џ„V~џ„V~џƒT}џcˆџ˜q“џšr•џ~Wyџ;&9џ>)<џiYgџ§§§џіѕіџњњњџћћћџќќќџ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џќќќџмймџШТШџУНТџрнрџ§§§џ§§§џџџџџџџџџўўўџ§§§џўўўџџџџџўўўџ§§§џѓѓѓџљљљџљљљџљљљџљљљџљљљџљљљџљљљџљљљџљљљџњњњџєєєџ§§§џ§§§џ§§§џўўўџ§§§џ§§§џ§§§џ§§§џєєєџ§§§џїїїџѕѕѕџєєєџёёёџ№№№џѕѕѕџѓѓѓџёёёџђђђџєєєџѓѓѓџёёёџѕѕѕџѕѕѕџёёёџѓѓѓџѕѕѕџђђђџђђђџёёёџѕѕѕџєєєџ№№№џѕѕѕџєєєџћћћџ§§§џ§§§џ§§§џ§§§џѕѕѕџќќќџ§§§џќќќџјјјџњњњџ§§§џ§§§џћћћџѕѕѕџѓѓѓџіііџќќќџ§§§џѕѕѕџ§§§џ§§§џєєєџ§§§џ§§§џщщщџrrrџџџџџџџџEEEџДДДџ§§§џ`N^џ?*=џ:%8џ…_€џ›r•џ—p’џŒa†џƒU}џ…Wџ…W~џ…Wџ…Wџ…W~џ„Wџ…Wџ…Wџ…W~џ…Wџ…Wџ…W~џ„Wџ„V~џƒU~џeŠџ˜p“џœs—џrNmџ<':џA+?џ‘„џћћћџ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џўўўџўўўџўўўџўўўџџџџџўўўџўўўџўўўџѓѓѓџљљљџљљљџљљљџљљљџљљљџљљљџљљљџљљљџљљљџњњњџєєєџ§§§џ§§§џ§§§џўўўџ§§§џ§§§џ§§§џ§§§џєєєџ§§§џїїїџѕѕѕџѓѓѓџёёёџђђђџѕѕѕџєєєџёёёџѓѓѓџѕѕѕџѓѓѓџ№№№џѕѕѕџѕѕѕџђђђџєєєџѕѕѕџєєєџёёёџѓѓѓџєєєџђђђџёёёџѓѓѓџєєєџћћћџ§§§џ§§§џ§§§џ§§§џьььџјјјџџџџџўўўџюююџїїїџ§§§џ§§§џѕѕѕџёёёџѕѕѕџяяяџѕѕѕџ§§§џхххџўўўџўўўџтттџџџџџЇЇЇџџџџџџџџџџџџ747џ<(:џ>)<џP5Mџ”lџ™p”џ—o’џ†Yџ„V~џ…Wџ…V~џ„Wџ…Wџ…W~џ„Wџ…Wџ…Wџ…V~џ„Wџ…Wџ…W~џ„Wџ„V~џ„V~џ‘gŒџ—p’џ›r–џlJhџ8$6џ.,џ=9=џ222џ џџ...џtttџЯЯЯџ§§§џ§§§џћћћџ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џќќќџ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џўўўџўўўџўўўџўўўџўўўџўўўџўўўџўўўџўўўџџџџџўўўџџџџџpppџVVVџіііџўўўџ§§§џџџџџїїїџљљљџљљљџљљљџљљљџљљљџљљљџљљљџљљљџљљљџњњњџєєєџ§§§џ§§§џ§§§џўўўџ§§§џ§§§џ§§§џ§§§џєєєџ§§§џїїїџѕѕѕџѕѕѕџѕѕѕџѕѕѕџѕѕѕџѕѕѕџѕѕѕџѕѕѕџѕѕѕџєєєџѓѓѓџѕѕѕџєєєџёёёџѕѕѕџѕѕѕџѕѕѕџѕѕѕџѕѕѕџѕѕѕџѕѕѕџѕѕѕџѕѕѕџєєєџћћћџ§§§џ§§§џ§§§џ§§§џіііџуууџфффџфффџыыыџќќќџ§§§џ§§§џ§§§џћћћџђђђџщщщџїїїџ§§§џцццџўўўџўўўџфффџ”””џџџџџ;;;џxxxџџƒƒƒџZZZџ џџџџ  џ4"2џqOmџ›r–џ˜p“џ’iџ„U~џ…Wџ„V~џ…V~џ…Wџ„W~џ„V~џ„V~џ…Vџ„V~џ…V~џ…Wџ„W~џ„V~џ„V~џ„V~џ…Wџ‘hŒџœs—џ u›џG1DџџџџџџџџџџSSSџоооџ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џћћћџѓѓѓџяяяџёёёџђђђџѓѓѓџєєєџєєєџєєєџєєєџѕѕѕџѕѕѕџэээџэээџьььџэээџэээџюююџђђђџўўўџўўўџќќќџўўўџЊЊЊџџџ(((џьььџўўўџўўўџљљљџљљљџљљљџљљљџљљљџљљљџљљљџљљљџљљљџљљљџњњњџєєєџ§§§џ§§§џ§§§џўўўџ§§§џ§§§џ§§§џ§§§џєєєџ§§§џїїїџѕѕѕџѓѓѓџэээџэээџэээџыыыџэээџэээџэээџэээџэээџэээџэээџэээџэээџьььџьььџьььџыыыџыыыџыыыџэээџєєєџєєєџћћћџ§§§џ§§§џ§§§џќќќџњњњџюююџ§§§џѓѓѓџёёёџ§§§џќќќџ§§§џєєєџъъъџёёёџљљљџќќќџ§§§џхххџќќќџ§§§џŒŒŒџџџџ###џЕЕЕџшшшџ§§§џјјјџћћћџєєєџжжжџ```џџџџџzWuџŸušџ˜q“џ‹`†џƒU}џ„V~џ…Wџ…V~џ„Wџ…Wџ„V~џ„Wџ…Wџ…Wџ…V~џ„Wџ…Wџ„V~џ„Wџ„V~џ„W~џ›o•џ™q”џ7(5џџџџџџџџџџџџ џЕЕЕџ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џњњњџёёёџїїїџћћћџћћћџњњњџњњњџњњњџњњњџњњњџњњњџњњњџћћћџ№№№џ№№№џ№№№џ№№№џ№№№џѕѕѕџџџџџўўўџўўўџџџџџГГГџџџџgggџўўўџўўўџџџџџїїїџљљљџљљљџљљљџљљљџљљљџљљљџљљљџљљљџљљљџњњњџєєєџ§§§џ§§§џ§§§џўўўџ§§§џ§§§џ§§§џ§§§џєєєџ§§§џїїїџѕѕѕџьььџхххџщщщџъъъџчччџяяяџёёёџёёёџёёёџђђђџђђђџђђђџ№№№џяяяџюююџэээџыыыџчччџхххџъъъџчччџьььџѕѕѕџћћћџ§§§џ§§§џ§§§џ§§§џќќќџюююџљљљџчччџћћћџ§§§џ§§§џ§§§џєєєџэээџяяяџюююџјјјџ§§§џфффџяяяџДДДџџџџKKKџыыыџјјјџюююџщщщџшшшџъъъџьььџѓѓѓџ§§§џ­­­џџџџџ’lџšq•џ‡Zџ„U~џ…Wџ…Wџ…V~џ…Vџ…Wџ…V~џ…Wџ…Wџ…Wџ…V~џ…Vџ…Wџ…V~џ…Wџ„V~џŠ[„џˆbƒџџџџџџzzzџПППџиииџжжжџВВВџ```џџџџџЊЊЊџ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џєєєџїїїџњњњџљљљџљљљџљљљџљљљџљљљџљљљџљљљџљљљџљљљџњњњџяяяџюююџёёёџѓѓѓџјјјџўўўџўўўџўўўџўўўџ™™™џџџџDDDџџџџџўўўџўўўџ§§§џѓѓѓџљљљџљљљџљљљџљљљџљљљџљљљџљљљџљљљџљљљџњњњџєєєџ§§§џ§§§џ§§§џўўўџ§§§џ§§§џ§§§џ§§§џєєєџ§§§џїїїџѕѕѕџыыыџцццџыыыџэээџшшшџёёёџёёёџяяяџѕѕѕџѕѕѕџѕѕѕџєєєџѓѓѓџђђђџ№№№џяяяџэээџщщщџхххџшшшџчччџъъъџѕѕѕџћћћџ§§§џ§§§џ§§§џ§§§џ§§§џєєєџъъъџыыыџўўўџ§§§џ§§§џ§§§џќќќџљљљџјјјџњњњџќќќџ§§§џхххџёёёџ!!!џџџEEEџёёёџьььџщщщџъъъџъъъџъъъџыыыџыыыџыыыџшшшџџџџџЕЕЕџџџџ4'2џ›o–џƒU}џ„V~џ„V~џ…Wџ…V~џ…Wџ…Wџ„V~џ„Wџ…Wџ…Wџ…V~џ…Wџ…Wџ„V~џ„V~џ‹[…џ~Tyџџџџџsssџрррџџџџџ№№№џыыыџьььџєєєџњњњџЦЦЦџ"""џџџџЧЧЧџ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ№№№џњњњџљљљџљљљџљљљџњњњџњњњџњњњџњњњџљљљџњњњџћћћџ§§§џњњњџќќќџўўўџўўўџўўўџ§§§џџџџџџџџџ‚‚‚џџџџ===џљљљџўўўџџџџџџџџџ§§§џѓѓѓџљљљџљљљџљљљџљљљџљљљџљљљџљљљџљљљџљљљџњњњџєєєџ§§§џ§§§џ§§§џўўўџ§§§џ§§§џ§§§џ§§§џєєєџ§§§џїїїџѕѕѕџыыыџщщщџшшшџчччџцццџыыыџыыыџьььџюююџєєєџѕѕѕџєєєџѓѓѓџђђђџ№№№џяяяџэээџшшшџцццџыыыџцццџъъъџѕѕѕџћћћџ§§§џ§§§џ§§§џ§§§џ§§§џћћћџчччџїїїџ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џхххџlllџџџ џъъъџіііџъъъџыыыџыыыџыыыџыыыџыыыџыыыџыыыџьььџьььџџџџџЏЏЏџџџџT9QџŒ[†џ„V~џ…Wџ…V~џ…V~џ…Vџ…V~џ…V~џ„V~џ…Wџ…V~џ…V~џ…Vџ…Wџ„V~џ†Wџ„WџџџџџЇЇЇџџџџџѓѓѓџъъъџъъъџъъъџъъъџщщщџъъъџћћћџхххџ555џџџџѓѓѓџ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џђђђџњњњџљљљџљљљџёёёџтттџъъъџђђђџћћћџџџџџўўўџџџџџўўўџўўўџ§§§џќќќџ§§§џўўўџўўўџљљљџPPPџџџџDDDџџџџџўўўџўўўџўўўџ§§§џ§§§џѓѓѓџљљљџљљљџљљљџљљљџљљљџљљљџљљљџљљљџљљљџњњњџєєєџ§§§џ§§§џ§§§џўўўџ§§§џ§§§џ§§§џ§§§џєєєџ§§§џїїїџѕѕѕџыыыџцццџщщщџфффџыыыџьььџђђђџђђђџяяяџєєєџѕѕѕџѕѕѕџѓѓѓџђђђџ№№№џяяяџэээџщщщџхххџшшшџчччџъъъџѕѕѕџћћћџ§§§џ§§§џ§§§џ§§§џќќќџ§§§џўўўџ§§§џќќќџ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џЮЮЮџџџџЎЎЎџўўўџьььџьььџьььџьььџьььџьььџьььџьььџьььџэээџэээџъъъџўўўџzzzџџџџzOtџ‹[„џ„V~џ…Wџ…W~џ…Wџ…Wџ…W~џ„Wџ…Wџ…Wџ…W~џ…Wџ„V~џ†W€џ\‡џ9%6џџџџВВВџњњњџыыыџыыыџыыыџыыыџыыыџыыыџыыыџъъъџъъъџёёёџпппџџџџgggџ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џѓѓѓџњњњџљљљџљљљџўўўџџџџџўўўџўўўџўўўџџџџџџџџџџџџџџџџџўўўџўўўџџџџџџџџџЬЬЬџ†††џ***џџџџgggџџџџџўўўџўўўџўўўџјјјџ§§§џ§§§џѓѓѓџљљљџљљљџљљљџљљљџљљљџљљљџљљљџљљљџљљљџњњњџєєєџ§§§џ§§§џ§§§џўўўџ§§§џ§§§џ§§§џ§§§џєєєџ§§§џїїїџѕѕѕџыыыџхххџшшшџщщщџчччџёёёџѕѕѕџѕѕѕџђђђџ№№№џяяяџяяяџяяяџяяяџяяяџ№№№џэээџшшшџхххџшшшџчччџъъъџѕѕѕџћћћџ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џќќќџSSSџџџVVVџўўўџюююџэээџэээџэээџэээџюююџэээџэээџэээџэээџэээџэээџэээџѓѓѓџђђђџ888џџџ4"2џ\‡џ„V~џ…Wџ…V~џ„Wџ…Wџ…W~џ„Wџ…Wџ…Wџ…V~џ…Wџ„V~џ\†џZ;Vџџџџœœœџџџџџьььџьььџьььџьььџьььџьььџьььџьььџьььџыыыџщщщџ§§§џМММџџџџХХХџ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ№№№џћћћџћћћџўўўџџџџџ§§§џњњњџўўўџџџџџџџџџѕѕѕџсссџЫЫЫџœœœџpppџ<<<џџџџџџџšššџџџџџўўўџўўўџџџџџ§§§џєєєџ§§§џ§§§џѓѓѓџљљљџљљљџљљљџљљљџљљљџљљљџљљљџљљљџљљљџњњњџєєєџ§§§џ§§§џ§§§џўўўџ§§§џ§§§џ§§§џ§§§џєєєџ§§§џїїїџѕѕѕџъъъџхххџцццџшшшџъъъџюююџщщщџцццџцццџцццџцццџцццџхххџыыыџѕѕѕџшшшџыыыџъъъџсссџхххџхххџъъъџѕѕѕџћћћџ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џџџџџўўўџўўўџўўўџўўўџ§§§џ§§§џ§§§џўўўџ§§§џ§§§џкккџ џџџбббџєєєџэээџюююџюююџюююџюююџюююџюююџюююџюююџюююџюююџюююџюююџэээџћћћџЙЙЙџџџџuLoџˆY‚џ„V~џ…V~џ…Wџ„W~џ„V~џ„V~џ…Vџ„V~џ…V~џ„V~џ†X€џ‚U}џ  џџџlllџ§§§џяяяџэээџэээџэээџэээџэээџьььџьььџэээџэээџьььџьььџэээџўўўџ\\\џџџWWWџ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ№№№џ§§§џўўўџўўўџџџџџўўўџџџџџмммџ•••џdddџ777џџџџџџџџџџџПППџџџџџўўўџўўўџўўўџљљљџ§§§џєєєџ§§§џ§§§џѓѓѓџљљљџљљљџљљљџљљљџљљљџљљљџљљљџљљљџљљљџњњњџєєєџ§§§џ§§§џ§§§џўўўџ§§§џ§§§џ§§§џ§§§џєєєџ§§§џїїїџѕѕѕџъъъџхххџцццџчччџцццџцццџщщщџщщщџщщщџщщщџщщщџъъъџыыыџѓѓѓџёёёџэээџыыыџшшшџцццџцццџфффџъъъџѕѕѕџћћћџ§§§џ§§§џ§§§џ§§§џ§§§џўўўџўўўџўўўџўўўџўўўџўўўџџџџџџџџџџџџџџџџџџџџџџџџџџџџOOOџќќќџюююџюююџяяяџяяяџяяяџяяяџяяяџяяяџяяяџюююџяяяџяяяџяяяџяяяџяяяџыыыџџџџџNNNџџџ7$4џ‘^Šџ„V~џ…V~џ„Wџ…Wџ„V~џ„Wџ…Wџ…Wџ„V~џ„V~џ^Šџ<(:џџџ%%%џ№№№џюююџэээџюююџюююџюююџюююџэээџэээџэээџэээџэээџэээџэээџьььџљљљџШШШџџџџсссџ§§§џ§§§џ§§§џ§§§џ§§§џћћћџџџџџќќќџџџџџџџџџМММџ===џџџџџџџџџџџџ[[[џЌЌЌџяяяџўўўџћћћџџџџџўўўџѕѕѕџѕѕѕџ§§§џєєєџ§§§џ§§§џѓѓѓџљљљџљљљџљљљџљљљџљљљџљљљџљљљџљљљџљљљџњњњџєєєџ§§§џ§§§џ§§§џўўўџ§§§џ§§§џ§§§џ§§§џєєєџ§§§џїїїџѕѕѕџъъъџуууџхххџцццџхххџчччџщщщџщщщџщщщџщщщџщщщџъъъџыыыџёёёџёёёџьььџщщщџцццџцццџхххџуууџъъъџѕѕѕџћћћџ§§§џ§§§џ§§§џ§§§џўўўџўўўџџџџџэээџўўўџўўўџџџџџџџџџўўўџўўўџўўўџџџџџєєєџ...џџџЖЖЖџўўўџяяяџяяяџяяяџяяяџяяяџ№№№џ№№№џ№№№џ№№№џ№№№џ№№№џ№№№џ№№№џ№№№џ№№№џяяяџљљљџЬЬЬџџџ  џvMpџ‹[„џ„V~џ…Vџ…Wџ…V~џ…Wџ…Wџ…Wџ„V~џŒ\†џpIkџџџџЙЙЙџ§§§џэээџяяяџяяяџяяяџюююџюююџюююџяяяџяяяџюююџюююџюююџюююџюююџюююџўўўџXXXџџџqqqџ§§§џљљљџ§§§џ§§§џўўўџўўўџћћћџўўўџпппџ@@@џџџџџџџ џ222џVVVџ{{{џЌЌЌџмммџџџџџўўўџџџџџџџџџџџџџўўўџќќќџђђђџёёёџіііџ§§§џєєєџ§§§џ§§§џѓѓѓџљљљџљљљџљљљџљљљџљљљџљљљџљљљџљљљџљљљџњњњџєєєџ§§§џ§§§џ§§§џўўўџ§§§џ§§§џ§§§џ§§§џєєєџ§§§џїїїџѕѕѕџъъъџуууџфффџхххџхххџхххџфффџцццџшшшџчччџчччџцццџчччџщщщџјјјџцццџфффџхххџхххџфффџтттџъъъџѕѕѕџћћћџ§§§џ§§§џ§§§џ§§§џџџџџџџџџєєєџ!!!џ111џHHHџlllџ‡‡‡џЇЇЇџФФФџтттџўўўџЪЪЪџџџ---џшшшџїїїџ№№№џ№№№џ№№№џ№№№џ№№№џ№№№џђђђџќќќџџџџџџџџџџџџџљљљџёёёџ№№№џ№№№џёёёџѓѓѓџњњњџCCCџџџP4Lџ^‰џ…Wџ…Wџ…Wџ„V~џ„Wџ…Wџ…Wџ…WџŽ\‡џ8%6џџџLLLџ§§§џёёёџ№№№џяяяџяяяџ№№№џіііџњњњџљљљџёёёџяяяџяяяџяяяџяяяџюююџяяяџюююџіііџНННџџџ$$$џ§§§џќќќџ§§§џ§§§џџџџџ§§§џџџџџЪЪЪџџџџџџ;;;џ€€€џЕЕЕџиииџєєєџџџџџўўўџџџџџўўўџќќќџќќќџўўўџџџџџџџџџјјјџюююџюююџ№№№џіііџ§§§џєєєџ§§§џ§§§џѓѓѓџљљљџљљљџљљљџљљљџљљљџљљљџљљљџљљљџљљљџњњњџєєєџ§§§џ§§§џ§§§џўўўџ§§§џ§§§џ§§§џ§§§џєєєџ§§§џїїїџѕѕѕџъъъџуууџуууџфффџхххџцццџчччџцццџфффџцццџцццџцццџцццџуууџђђђџєєєџцццџхххџфффџуууџуууџщщщџѕѕѕџћћћџ§§§џ§§§џ§§§џ§§§џўўўџџџџџеееџџџџџџџџџџџџџqqqџџџџџёёёџёёёџёёёџёёёџђђђџ№№№џїїїџўўўџЮЮЮџЌЌЌџІІІџЙЙЙџтттџџџџџђђђџёёёџђђђџђђђџџџџџЄЄЄџџџџ‡Xџ†X€џ…Wџ…V~џ…V~џ„V~џ…Wџ„V~џˆXџzPuџџџџУУУџџџџџёёёџёёёџёёёџђђђџџџџџцццџаааџйййџ§§§џљљљџюююџ№№№џ№№№џ№№№џяяяџяяяџяяяџљљљџ$$$џџџЙЙЙџ§§§џ§§§џўўўџўўўџўўўџгггџџџџџsssџщщщџўўўџџџџџўўўџўўўџўўўџўўўџўўўџўўўџўўўџўўўџўўўџџџџџєєєџэээџьььџэээџэээџёёёџїїїџ§§§џєєєџ§§§џ§§§џѓѓѓџљљљџљљљџљљљџљљљџљљљџљљљџљљљџљљљџљљљџњњњџєєєџ§§§џ§§§џ§§§џўўўџ§§§џ§§§џ§§§џ§§§џєєєџ§§§џїїїџѕѕѕџъъъџсссџтттџуууџфффџхххџцццџхххџцццџшшшџчччџцццџшшшџцццџшшшџџџџџюююџфффџуууџтттџтттџъъъџѕѕѕџћћћџ§§§џ§§§џ§§§џўўўџџџџџўўўџИИИџџџџџџџџџџџџџГГГџќќќџђђђџђђђџђђђџђђђџёёёџўўўџфффџZZZџ џџџџ"""џџўўўџјјјџђђђџђђђџћћћџуууџџџџwNrџˆY‚џ„V~џ…Wџ…W~џ„Wџ…WџƒU}џŽ]ˆџE-BџџџGGGџўўўџѓѓѓџђђђџёёёџїїїџіііџvvvџ)))џџџKKKџСССџџџџџєєєџ№№№џ№№№џ№№№џ№№№џ№№№џ§§§џvvvџџџ€€€џ§§§џўўўџўўўџўўўџўўўџ---џџџ!!!џЬЬЬџџџџџўўўџўўўџџџџџџџџџўўўџџџџџўўўџќќќџїїїџѓѓѓџяяяџыыыџщщщџыыыџыыыџыыыџыыыџэээџяяяџіііџ§§§џєєєџ§§§џ§§§џѓѓѓџљљљџљљљџљљљџљљљџљљљџљљљџљљљџљљљџљљљџњњњџєєєџ§§§џ§§§џ§§§џўўўџ§§§џ§§§џ§§§џ§§§џєєєџ§§§џїїїџѕѕѕџъъъџсссџсссџтттџуууџуууџфффџфффџхххџхххџхххџхххџхххџхххџчччџўўўџ§§§џсссџтттџтттџтттџъъъџѕѕѕџћћћџ§§§џ§§§џ§§§џўўўџџџџџџџџџ™™™џџџџџџџџџџџџ џѓѓѓџђђђџѓѓѓџѓѓѓџѓѓѓџѓѓѓџ§§§џйййџџџџџџџџџBBBџыыыџњњњџѓѓѓџѓѓѓџџџџџ[[[џџџI0FџŒ[†џƒV}џ…Wџ…W~џ„Wџ…WџƒV}џ‡Xџ џџџЙЙЙџўўўџђђђџђђђџљљљџёёёџDDDџџџџџџџyyyџ§§§џђђђџёёёџёёёџђђђџёёёџџџџџИИИџџџJJJџњњњџўўўџўўўџўўўџŽŽŽџџџџяяяџўўўџўўўџўўўџџџџџ§§§џ§§§џћћћџћћћџыыыџъъъџъъъџъъъџъъъџъъъџъъъџъъъџыыыџыыыџъъъџяяяџьььџїїїџ§§§џєєєџ§§§џ§§§џѓѓѓџљљљџљљљџљљљџљљљџљљљџљљљџљљљџљљљџљљљџњњњџєєєџ§§§џ§§§џ§§§џўўўџ§§§џ§§§џ§§§џ§§§џєєєџ§§§џїїїџѕѕѕџъъъџсссџтттџтттџуууџуууџфффџфффџфффџхххџфффџхххџфффџфффџщщщџџџџџџџџџсссџтттџуууџсссџщщщџѕѕѕџћћћџ§§§џ§§§џ§§§џ§§§џўўўџџџџџ}}}џџџџџџџџџџџџ999џџџџџёёёџѓѓѓџѓѓѓџєєєџїїїџќќќџ555џџџџџџџџџџGGGџџџџџіііџєєєџџџџџЊЊЊџџџџ^‰џ‚U|џ„W~џ„V~џ„V~џ„V~џŒ[†џ`>[џџџџ§§§џѓѓѓџѓѓѓџєєєџџџџџ|||џџџџџџџџџzzzџџџџџєєєџђђђџђђђџђђђџќќќџзззџџџџчччџџџџџўўўџіііџ---џџџЊЊЊџўўўџ§§§џўўўџ§§§џћћћџњњњџљљљџљљљџњњњџъъъџщщщџщщщџъъъџъъъџъъъџъъъџъъъџъъъџыыыџяяяџюююџэээџћћћџ§§§џєєєџ§§§џ§§§џѓѓѓџљљљџљљљџљљљџљљљџљљљџљљљџљљљџљљљџљљљџњњњџєєєџ§§§џ§§§џ§§§џўўўџ§§§џ§§§џ§§§џ§§§џєєєџ§§§џїїїџѕѕѕџьььџсссџсссџсссџсссџсссџсссџтттџтттџтттџтттџтттџтттџуууџјјјџўўўџѕѕѕџсссџсссџсссџсссџьььџѕѕѕџћћћџ§§§џ§§§џ§§§џ§§§џўўўџџџџџ```џџџџџџџџџџџџpppџџџџџѓѓѓџєєєџєєєџѓѓѓџџџџџЈЈЈџџџџџџџџџџџџ   џџџџџѓѓѓџїїїџюююџџџ  џ}Rxџ…Wџ…Wџ„V~џ„Wџ…WџŒ[†џ9%7џџџџџџџџѕѕѕџєєєџљљљџ№№№џџџџџџџџџџџВВВџџџџџѓѓѓџѓѓѓџѓѓѓџїїїџђђђџ;;;џџџвввџўўўџўўўџЦЦЦџџџ)))џѕѕѕџџџџџџџџџќќќџљљљџљљљџљљљџљљљџљљљџњњњџьььџьььџьььџьььџьььџьььџэээџэээџюююџяяяџыыыџыыыџјјјџ§§§џ§§§џєєєџ§§§џ§§§џѓѓѓџљљљџљљљџљљљџљљљџљљљџљљљџљљљџљљљџљљљџњњњџєєєџ§§§џ§§§џ§§§џўўўџ§§§џ§§§џ§§§џ§§§џєєєџ§§§џїїїџѕѕѕџѓѓѓџэээџьььџьььџьььџьььџьььџьььџьььџьььџьььџьььџыыыџђђђџѕѕѕџѕѕѕџюююџьььџьььџьььџэээџєєєџєєєџћћћџ§§§џ§§§џ§§§џ§§§џџџџџўўўџCCCџџџџџџџџџџџџЇЇЇџўўўџєєєџѕѕѕџіііџёёёџџџџџ???џџџџџџџџџџџџ!!!џќќќџєєєџіііџџџџџ777џџџ`?\џ‹[„џ„V~џ…V~џ…WџˆY‚џ}Rxџ џџџЩЩЩџўўўџѕѕѕџєєєџўўўџПППџџџџџџџџџџџџѕѕѕџјјјџєєєџѓѓѓџєєєџўўўџ^^^џџџЋЋЋџўўўџџџџџ‡‡‡џџџ~~~џџџџџџџџџџџџџ§§§џќќќџљљљџјјјџјјјџјјјџјјјџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѕѕѕџћћћџ§§§џќќќџ§§§џєєєџ§§§џ§§§џѓѓѓџљљљџљљљџљљљџљљљџљљљџљљљџљљљџљљљџљљљџњњњџєєєџ§§§џ§§§џ§§§џўўўџ§§§џ§§§џ§§§џ§§§џєєєџ§§§џїїїџѕѕѕџєєєџђђђџђђђџѓѓѓџєєєџђђђџђђђџѕѕѕџѓѓѓџёёёџѕѕѕџѓѓѓџёёёџ№№№џѕѕѕџѓѓѓџёёёџѕѕѕџєєєџёёёџѕѕѕџѕѕѕџєєєџћћћџ§§§џ§§§џ§§§џџџџџўўўџџџџџ555џџџџџџџџџџџџЩЩЩџџџџџіііџіііџіііџѕѕѕџіііџџџџџџџџџџџџџџЙЙЙџџџџџїїїџџџџџtttџџџJ0Gџ^‰џ„V~џ„V~џ„V~џ‹[„џlFhџџџ222џюююџќќќџіііџѓѓѓџџџџџ•••џџџџџџџџџџџџЈЈЈџџџџџѓѓѓџєєєџєєєџџџџџџџџ„„„џџџџџџџџџLLLџџџЙЙЙџџџџџўўўџўўўџўўўџўўўџџџџџ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џќќќџќќќџ§§§џєєєџ§§§џ§§§џѓѓѓџљљљџљљљџљљљџљљљџљљљџљљљџљљљџљљљџљљљџњњњџєєєџ§§§џ§§§џ§§§џўўўџ§§§џ§§§џ§§§џ§§§џєєєџ§§§џїїїџѕѕѕџєєєџѓѓѓџёёёџѕѕѕџѓѓѓџёёёџђђђџєєєџђђђџѓѓѓџєєєџѓѓѓџ№№№џєєєџєєєџёёёџёёёџєєєџѕѕѕџѓѓѓџѓѓѓџѕѕѕџєєєџћћћџ§§§џ§§§џ§§§џџџџџўўўџюююџ%%%џџџџџџџџџџџ џлллџџџџџїїїџїїїџїїїџњњњџуууџџџџџџџџџџџџџџ‰‰‰џџџџџјјјџџџџџЊЊЊџџџ4"2џ‹[…џ†Wџ…V~џ„V~џ‹[…џH/EџџџlllџџџџџїїїџїїїџєєєџџџџџŠŠŠџџџџџџџџџџџџCCCџџџџџёёёџіііџѕѕѕџџџџџЄЄЄџџџ+++џšššџГГГџ џџџЯЯЯџџџџџџџџџџџџџџџџџ§§§џџџџџ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џєєєџ§§§џ§§§џѓѓѓџљљљџљљљџљљљџљљљџљљљџљљљџљљљџљљљџљљљџњњњџєєєџ§§§џ§§§џ§§§џўўўџ§§§џ§§§џ§§§џ§§§џєєєџ§§§џїїїџѕѕѕџєєєџёёёџёёёџѕѕѕџѓѓѓџђђђџѓѓѓџѕѕѕџѓѓѓџ№№№џѕѕѕџѓѓѓџёёёџђђђџѕѕѕџѓѓѓџёёёџѕѕѕџєєєџёёёџ№№№џѕѕѕџєєєџћћћџ§§§џ§§§џ§§§џџџџџўўўџлллџџџџџџџџџџџџџуууџџџџџїїїџјјјџјјјџљљљџьььџџџџџџџџџџџџџџwwwџџџџџљљљџџџџџШШШџџџ џT{џ‡Xџ…W~џƒV}џ\†џ&$џџџЂЂЂџџџџџїїїџјјјџѕѕѕџџџџџџџџџџџџџџџџџџюююџїїїџіііџіііџџџџџКККџџџџџџџџџ***џ@@@џVVVџ\\\џЌЌЌџўўўџџџџџўўўџ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џєєєџ§§§џ§§§џѓѓѓџљљљџљљљџљљљџљљљџљљљџљљљџљљљџљљљџљљљџњњњџєєєџ§§§џ§§§џ§§§џўўўџ§§§џ§§§џ§§§џ§§§џєєєџ§§§џіііџєєєџєєєџѓѓѓџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџѓѓѓџѓѓѓџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџѓѓѓџћћћџ§§§џ§§§џ§§§џџџџџўўўџЧЧЧџџџџџџџџџџџџ111џэээџўўўџјјјџљљљџљљљџєєєџџџџџ---џџџџџџџџџџџџџ}}}џџџџџњњњџџџџџоооџџџ џzPtџ‰Y‚џ„V~џ„V~џˆY‚џџџџуууџћћћџјјјџјјјџјјјџџџџџЬЬЬџџџџџџџџџџџџ џЬЬЬџўўўџїїїџїїїџќќќџбббџџџџџџџџџџџџџqqqџўўўџџџџџўўўџ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џєєєџ§§§џ§§§џѓѓѓџљљљџљљљџљљљџљљљџљљљџљљљџљљљџљљљџљљљџњњњџєєєџ§§§џ§§§џ§§§џўўўџ§§§џ§§§џ§§§џ§§§џєєєџ§§§џќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџ§§§џ§§§џўўўџўўўџўўўџДДДџџџџџџџџџџџџ>>>џєєєџўўўџљљљџњњњџњњњџіііџџџџџsssџџџџџџџџџџџџџœœœџџџџџњњњџџџџџяяяџ111џџџtLoџŠZ„џ…Wџ‡XџsKmџџџџџџџџіііџљљљџљљљџљљљџ§§§џєєєџџџџџџџџџџџџџСССџџџџџјјјџїїїџћћћџоооџџџџџџџџџџџџџšššџўўўџџџџџўўўџ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џєєєџ§§§џ§§§џѓѓѓџљљљџљљљџљљљџљљљџљљљџљљљџљљљџљљљџљљљџњњњџєєєџ§§§џ§§§џ§§§џўўўџ§§§џ§§§џ§§§џ§§§џєєєџ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џўўўџўўўџўўўџЁЁЁџџџџџџџџџџџџEEEџїїїџўўўџњњњџњњњџњњњџњњњџџџџџкккџџџџџџџџџџџџ џлллџџџџџћћћџўўўџџџџџFFFџџџnHiџ‹[„џ„V~џ‹[…џ\[џ‹[…џŠZ„џtLoџ  џџ(((џщщщџџџџџљљљџљљљџјјјџљљљџњњњџњњњџњњњџњњњџћћћџљљљџњњњџћћћџћћћџћћћџћћћџћћћџњњњџћћћџњњњџњњњџњњњџћћћџџџџџ\\\џџџџџџџџџџџџКККџўўўџџџџџ§§§џъъъџчччџъъъџѕѕѕџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџєєєџ§§§џўўўџ№№№џџџџџўўўџўўўџ§§§џ§§§џќќќџќќќџќќќџћћћџћћћџёёёџўўўџ§§§џ§§§џўўўџ§§§џ§§§џ§§§џ§§§џєєєџџџџџўўўџчччџяяяџяяяџ№№№џяяяџшшшџяяяџ№№№џяяяџяяяџяяяџяяяџяяяџяяяџяяяџяяяџ№№№џчччџэээџяяяџяяяџ№№№џъъъџњњњџџџџџџџџџџџџџќќќџџџџџ„„„џџџџџџџџџџџџџџ†††џџџџџїїїџјјјџјјјџјјјџјјјџјјјџјјјџјјјџјјјџјјјџјјјџјјјџјјјџјјјџјјјџјјјџјјјџјјјџјјјџјјјџїїїџњњњџџџџџIIIџџџlGhџ‹[…џŠZ„џvMqџ џџ"""џцццџџџџџјјјџјјјџљљљџљљљџљљљџљљљџљљљџљљљџљљљџњњњџњњњџњњњџњњњџњњњџњњњџњњњџњњњџњњњџњњњџњњњџњњњџџџџџїїїџ;;;џџџџџџџџџџџџЬЬЬџџџџџўўўџўўўџџџџџџџџџџџџџџџџџўўўџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџєєєџ§§§џўўўџ№№№џџџџџўўўџєєєџћћћџ§§§џќќќџљљљџєєєџќќќџћћћџёёёџўўўџ§§§џ§§§џўўўџ§§§џ§§§џ§§§џ§§§џєєєџџџџџіііџъъъџяяяџяяяџ№№№џьььџъъъџ№№№џяяяџяяяџяяяџяяяџяяяџяяяџяяяџяяяџяяяџяяяџэээџчччџяяяџяяяџ№№№џэээџђђђџџџџџџџџџџџџџћћћџџџџџ[[[џџџџџџџџџџџџџџUUUџџџџџѕѕѕџјјјџјјјџјјјџїїїџїїїџїїїџїїїџјјјџјјјџјјјџјјјџјјјџїїїџїїїџїїїџїїїџїїїџїїїџїїїџіііџ§§§џ№№№џ666џџџrJmџŠZ„џ‰ZƒџxOsџ џџџтттџџџџџјјјџјјјџјјјџјјјџјјјџјјјџљљљџјјјџљљљџљљљџљљљџљљљџљљљџљљљџљљљџљљљџљљљџљљљџљљљџљљљџљљљџџџџџпппџџџџџџџџџџџџџкккџџџџџўўўџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџєєєџ§§§џўўўџ№№№џџџџџџџџџђђђџчччџїїїџѕѕѕџхххџєєєџќќќџћћћџёёёџўўўџ§§§џ§§§џўўўџ§§§џ§§§џ§§§џ§§§џєєєџџџџџэээџюююџяяяџяяяџ№№№џщщщџэээџ№№№џяяяџяяяџяяяџяяяџяяяџяяяџяяяџяяяџяяяџяяяџ№№№џхххџяяяџяяяџяяяџюююџяяяџўўўџџџџџџџџџќќќџџџџџЈЈЈџbbbџIIIџ(((џџ џџџџџџџџџџџџџџєєєџіііџіііџіііџіііџїїїџїїїџїїїџіііџіііџіііџіііџіііџіііџіііџіііџіііџіііџіііџѕѕѕџіііџџџџџлллџџџ џyOtџ‰Yƒџ‰Y‚џ}QwџџџџлллџџџџџїїїџїїїџіііџїїїџїїїџїїїџїїїџїїїџјјјџїїїџјјјџјјјџјјјџјјјџјјјџјјјџјјјџјјјџјјјџјјјџјјјџџџџџОООџџџџџџџџџџџџ%%%џъъъџџџџџџџџџўўўџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџєєєџ§§§џўўўџ№№№џџџџџўўўџўўўџѕѕѕџфффџхххџїїїџќќќџћћћџћћћџёёёџўўўџ§§§џ§§§џўўўџ§§§џ§§§џ§§§џ§§§џєєєџџџџџьььџ№№№џяяяџяяяџяяяџщщщџюююџяяяџяяяџяяяџяяяџяяяџяяяџяяяџяяяџяяяџяяяџяяяџ№№№џшшшџ№№№џяяяџ№№№џяяяџэээџќќќџџџџџџџџџџџџџ§§§џџџџџџџџџџџџџџџџџ§§§џ‰‰‰џџџџџџMMMџџџџиииџњњњџѕѕѕџѕѕѕџѕѕѕџіііџіііџіііџіііџѕѕѕџѕѕѕџѕѕѕџѕѕѕџѕѕѕџѕѕѕџіііџіііџѕѕѕџѕѕѕџѕѕѕџѕѕѕџѕѕѕџџџџџЩЩЩџџџџ€Tzџ‡Xџ‡XџƒU}џџџџдддџџџџџіііџіііџіііџіііџіііџїїїџіііџіііџїїїџїїїџїїїџїїїџїїїџїїїџїїїџїїїџїїїџїїїџјјјџјјјџїїїџџџџџŽŽŽџџџџџџџџџџџџ888џјјјџџџџџўўўџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџєєєџ§§§џўўўџ№№№џџџџџўўўџ§§§џ§§§џіііџљљљџќќќџћћћџћћћџћћћџёёёџўўўџ§§§џ§§§џўўўџ§§§џ§§§џ§§§џ§§§џєєєџџџџџюююџяяяџяяяџяяяџяяяџяяяџяяяџяяяџяяяџяяяџяяяџяяяџяяяџяяяџяяяџяяяџяяяџяяяџяяяџяяяџяяяџяяяџяяяџяяяџыыыџќќќџџџџџџџџџўўўџџџџџ§§§џћћћџњњњџњњњџўўўџ”””џџџџџ888џџџџџKKKџџџœœœџџџџџєєєџѕѕѕџѕѕѕџѕѕѕџѕѕѕџѕѕѕџѕѕѕџѕѕѕџѕѕѕџѕѕѕџѕѕѕџѕѕѕџѕѕѕџѕѕѕџѕѕѕџєєєџєєєџєєєџєєєџѕѕѕџџџџџЊЊЊџџџ0 .џ‰Zƒџ†W€џ†X€џŠZ„џ'%џџџХХХџџџџџѕѕѕџѕѕѕџѕѕѕџѕѕѕџѕѕѕџіііџіііџіііџіііџіііџіііџіііџіііџіііџіііџіііџіііџїїїџїїїџїїїџїїїџџџџџJJJџџџџџџџџџџџџKKKџџџџџџџџџўўўџўўўџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџєєєџ§§§џўўўџ№№№џџџџџўўўџ§§§џ§§§џ§§§џќќќџќќќџћћћџћћћџћћћџёёёџўўўџ§§§џ§§§џўўўџ§§§џ§§§џ§§§џ§§§џєєєџџџџџюююџяяяџяяяџяяяџяяяџяяяџяяяџяяяџяяяџяяяџяяяџяяяџяяяџяяяџяяяџяяяџяяяџяяяџяяяџяяяџяяяџяяяџяяяџяяяџыыыџћћћџўўўџџџџџџџџџџџџџџџџџ§§§џўўўџ§§§џџџџџ………џџџџџ???џџџџџ   џџџVVVџџџџџіііџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџѓѓѓџѓѓѓџєєєџєєєџєєєџѓѓѓџѓѓѓџџџџџrrrџџџI0Fџ^‰џ„V~џ…Wџ‘_Šџ5"2џџџžžžџџџџџѓѓѓџєєєџєєєџѕѕѕџѕѕѕџѕѕѕџѕѕѕџѕѕѕџѕѕѕџѕѕѕџѕѕѕџѕѕѕџѕѕѕџіііџіііџіііџіііџѕѕѕџѕѕѕџѕѕѕџїїїџ№№№џџџџџџџџџџџџџ```џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџєєєџ§§§џўўўџ№№№џ§§§џўўўџ§§§џ§§§џ§§§џќќќџќќќџћћћџћћћџљљљџёёёџўўўџ§§§џ§§§џўўўџ§§§џ§§§џ§§§џ§§§џєєєџџџџџэээџяяяџяяяџяяяџяяяџяяяџяяяџяяяџяяяџяяяџяяяџяяяџяяяџяяяџяяяџяяяџяяяџяяяџяяяџяяяџяяяџяяяџяяяџяяяџыыыџќќќџџџџџџџџџџџџџџџџџўўўџўўўџџџџџўўўџџџџџ‘‘‘џџџџџ:::џџџџџоооџџџ!!!џтттџ§§§џѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџђђђџђђђџ§§§џ333џџџ_>[џ‹[…џ„Vџ„V~џ]ˆџF.CџџџvvvџџџџџђђђџѓѓѓџєєєџєєєџєєєџєєєџєєєџєєєџѕѕѕџєєєџєєєџєєєџѕѕѕџѕѕѕџѕѕѕџѕѕѕџѕѕѕџѕѕѕџѕѕѕџєєєџџџџџЊЊЊџџџџџџџџџџџџџxxxџџџџџўўўџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџєєєџ§§§џ§§§џјјјџєєєџўўўџџџџџўўўџўўўџўўўџ§§§џ§§§џћћћџђђђџљљљџ§§§џ§§§џ§§§џўўўџ§§§џ§§§џ§§§џ§§§џѓѓѓџѓѓѓџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџіііџўўўџџџџџЂЂЂџџџџџ222џўўўџџџџџBBBџџџЉЉЉџџџџџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџёёёџђђђџђђђџєєєџфффџџџ џ€Szџ…Wџ…V~џ…V~џ‹[…џ]=Yџџџ<<<џџџџџ№№№џѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџєєєџєєєџєєєџєєєџѓѓѓџєєєџѓѓѓџєєєџєєєџѕѕѕџџџџџNNNџџџџџџџџџџџџџ–––џџџџџџџџџћћћџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѕѕѕџ§§§џ§§§џ§§§џїїїџёёёџ№№№џ№№№џ№№№џ№№№џ№№№џ№№№џёёёџљљљџ§§§џ§§§џ§§§џ§§§џўўўџ§§§џ§§§џ§§§џ§§§џўўўџ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џўўўџџџџџЏЏЏџџџџџ***џєєєџџџџџ‹‹‹џџџMMMџџџџџёёёџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџёёёџёёёџёёёџёёёџёёёџёёёџёёёџџџџџ™™™џџџ$"џ^‰џ‚U|џ…Wџ…W~џ†X€џyOsџџџџјјјџ№№№џђђђџђђђџђђђџђђђџђђђџѓѓѓџђђђџђђђџђђђџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџўўўџкккџџџџџџџџџџџџџџЏЏЏџџџџџџџџџўўўџ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џўўўџўўўџўўўџўўўџўўўџўўўџўўўџўўўџ§§§џ§§§џ§§§џ§§§џ§§§џўўўџ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џўўўџџџџџЯЯЯџџџџџџиииџўўўџфффџџџџжжжџєєєџ№№№џ№№№џ№№№џ№№№џ№№№џ№№№џ№№№џ№№№џ№№№џ№№№џ№№№џ№№№џ№№№џ№№№џ№№№џ№№№џёёёџџџџџAAAџџџW9Sџ‹[…џƒV}џ…Wџ…W~џƒU}џ\‡џ џџџЛЛЛџјјјџёёёџёёёџёёёџёёёџёёёџёёёџђђђџђђђџђђђџђђђџёёёџђђђџђђђџђђђџђђђџђђђџђђђџѓѓѓџџџџџˆˆˆџџџџџџџџџџџџџџЬЬЬџўўўџџџџџ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џўўўџ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џџџџџџџџџтттџ џџџџџОООџўўўџџџџџTTTџџџgggџџџџџяяяџяяяџяяяџяяяџяяяџяяяџяяяџяяяџ№№№џяяяџ№№№џ№№№џяяяџяяяџяяяџяяяџ§§§џЩЩЩџ џџџ~Rxџ‡Xџ„V~џ„W~џ„V~џ„V~џŒ[†џ9%7џџџzzzџџџџџ№№№џ№№№џ№№№џ№№№џёёёџ№№№џёёёџёёёџёёёџёёёџёёёџёёёџёёёџёёёџёёёџђђђџђђђџѕѕѕџѕѕѕџ!!!џџџџџџџџџџџџџџчччџџџџџџџџџ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џўўўџ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џџџџџяяяџ***џџџџџžžžџџџџџџџџџЮЮЮџџџџеееџќќќџяяяџяяяџяяяџяяяџяяяџяяяџяяяџяяяџяяяџяяяџяяяџюююџюююџюююџяяяџџџџџyyyџџџ0.џŠZ„џ†W€џ…Wџ…Wџ„V~џ„V~џ‹[…џa?\џџџ===џђђђџєєєџяяяџяяяџ№№№џ№№№џ№№№џ№№№џ№№№џ№№№џ№№№џёёёџ№№№џ№№№џ№№№џ№№№џёёёџюююџџџџџЃЃЃџџџ,,,џРРРџџџџџџgggџZZZџ333џџџџџџџўўўџўўўџ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џўўўџ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џџџџџўўўџUUUџџџџџ\\\џўўўџџџџџўўўџLLLџџџ\\\џўўўџяяяџюююџюююџюююџюююџюююџюююџэээџюююџэээџэээџюююџюююџэээџѓѓѓџсссџ џџџdA_џ]ˆџ„V~џ…Vџ…Wџ…V~џ…Wџ‰Y‚џ{Pvџ џџџПППџ§§§џюююџяяяџяяяџюююџяяяџяяяџяяяџяяяџяяяџяяяџяяяџяяяџ№№№џ№№№џяяяџяяяџѓѓѓџ$$$џџџЇЇЇџИИИџџџџџџўўўџўўўџўўўџџџџџџџџџўўўџўўўџўўўџўўўџўўўџўўўџўўўџўўўџўўўџўўўџўўўџўўўџўўўџўўўџўўўџўўўџўўўџўўўџўўўџўўўџўўўџўўўџўўўџўўўџўўўџўўўџўўўџўўўџўўўџўўўџўўўџўўўџўўўџўўўџўўўџўўўџўўўџўўўџўўўџўўўџўўўџўўўџ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џўўўџџџџџўўўџŒŒŒџџџџџџўўўџџџџџџџџџЧЧЧџџџџИИИџ§§§џъъъџэээџэээџэээџэээџэээџэээџэээџэээџэээџэээџэээџщщщџџџџџpppџџџџ‰Zƒџ†X€џ…Wџ…Wџ…Wџ„V~џ„V~џ…WџŒ[†џ6#4џџџhhhџџџџџэээџюююџюююџюююџюююџюююџюююџяяяџюююџюююџюююџяяяџяяяџяяяџяяяџџџџџ†††џџџџџџџџfffџџџџџ666џџџџџќќќџќќќџќќќџќќќџџџџџўўўџ§§§џѕѕѕџѕѕѕџѕѕѕџѕѕѕџѕѕѕџѕѕѕџѕѕѕџѕѕѕџѕѕѕџѕѕѕџѕѕѕџѕѕѕџѕѕѕџѕѕѕџѕѕѕџѕѕѕџѕѕѕџѕѕѕџѕѕѕџѕѕѕџѕѕѕџѕѕѕџѕѕѕџѕѕѕџѕѕѕџѕѕѕџѕѕѕџѕѕѕџѕѕѕџѕѕѕџѕѕѕџѕѕѕџѕѕѕџѕѕѕџѕѕѕџѕѕѕџѕѕѕџѕѕѕџѕѕѕџ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џўўўџџџџџЫЫЫџ џџџџџЩЩЩџўўўџўўўџўўўџjjjџџџџфффџ№№№џьььџьььџьььџьььџьььџьььџьььџьььџьььџьььџыыыџѕѕѕџМММџџџџfCaџ‹[…џ„V~џ…V~џ…Vџ…V~џ…V~џ„V~џ„V~џŠZ„џkFfџџџџнннџ№№№џьььџэээџэээџэээџэээџэээџэээџэээџюююџюююџюююџюююџэээџїїїџЭЭЭџџџџАААџџџџџ,,,џџџџџƒƒƒџџџџџџџџџўўўџ§§§џўўўџўўўџ§§§џљљљџјјјџјјјџјјјџјјјџјјјџјјјџјјјџјјјџјјјџјјјџјјјџјјјџјјјџјјјџјјјџјјјџјјјџјјјџјјјџјјјџјјјџјјјџјјјџјјјџјјјџјјјџјјјџјјјџјјјџјјјџјјјџјјјџјјјџјјјџјјјџјјјџјјјџјјјџјјјџ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џўўўџќќќџўўўџ###џџџџџ]]]џџџџџљљљџџџџџїїїџ(((џџџGGGџєєєџєєєџыыыџыыыџьььџыыыџыыыџыыыџыыыџыыыџъъъџіііџщщщџ)))џџџ,*џ\‡џ„V~џ„V~џ…W~џ…Wџ…Wџ…W~џ„Wџ…WџT{џ“dџ(&џџџ```џўўўџэээџьььџьььџэээџэээџьььџьььџэээџэээџэээџэээџьььџяяяџљљљџ666џџџEEEџџџџџЯЯЯџџџџџџРРРџўўўџџџџџћћћџљљљџњњњџљљљџјјјџјјјџјјјџјјјџјјјџјјјџјјјџјјјџјјјџјјјџјјјџјјјџјјјџјјјџјјјџјјјџјјјџјјјџјјјџјјјџјјјџјјјџјјјџјјјџјјјџјјјџјјјџјјјџјјјџјјјџјјјџјјјџјјјџјјјџјјјџјјјџјјјџјјјџјјјџјјјџјјјџ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џўўўџћћћџўўўџ}}}џџџџџџыыыџўўўџўўўџўўўџЦЦЦџџџџOOOџѓѓѓџяяяџчччџъъъџъъъџъъъџъъъџъъъџчччџюююџёёёџ@@@џџџ  џzPtџ‹[„џ„V~џ…Wџ…V~џ„Wџ…Wџ…W~џ„Wџ„V~џ‚T|џ“gŽџ|\xџџџџВВВџќќќџыыыџыыыџыыыџыыыџыыыџьььџьььџьььџьььџьььџэээџњњњџbbbџџџџрррџџџџџjjjџџџџџ$$$џьььџўўўџўўўџљљљџљљљџљљљџљљљџљљљџљљљџљљљџљљљџљљљџљљљџљљљџљљљџљљљџљљљџљљљџљљљџљљљџљљљџљљљџљљљџљљљџљљљџљљљџљљљџљљљџљљљџљљљџљљљџљљљџљљљџљљљџљљљџљљљџљљљџљљљџљљљџљљљџљљљџљљљџљљљџљљљџљљљџљљљџљљљџљљљџ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џўўўџџџџџтттџџџџџџ‰‰‰џџџџџўўўџџџџџ§§§џ­­­џџџџDDDџкккџќќќџюююџьььџьььџьььџэээџћћћџрррџBBBџџџџdC`џŒ[†џ„V~џ„V~џ„V~џ…V~џ…Wџ„W~џ„V~џ„V~џ„V~џ…Wџ“iџЂwœџ;,:џџџџпппџѕѕѕџъъъџъъъџъъъџыыыџыыыџыыыџыыыџыыыџюююџџџџџxxxџџџџžžžџџџџџљљљџџџџџџeeeџўўўџџџџџ§§§џљљљџљљљџљљљџљљљџљљљџљљљџљљљџљљљџљљљџљљљџљљљџљљљџљљљџљљљџљљљџљљљџљљљџљљљџљљљџљљљџљљљџљљљџљљљџљљљџљљљџљљљџљљљџљљљџљљљџљљљџљљљџљљљџљљљџљљљџљљљџљљљџљљљџљљљџљљљџљљљџљљљџљљљџљљљџљљљџљљљџ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џўўўџџџџџџџџџAAAџџџџџџѓѓѓџџџџџџџџџ§§§џ§§§џ‰‰‰џџџџџџпппџяяяџёёёџяяяџфффџœœœџџџџџXAUџ•gџ‚T|џ…Wџ…Wџ…Wџ…V~џ„Wџ…Wџ„V~џ„Wџ„U~џ‡Z‚џ—o’џ u›џyYvџџџџ555џтттџњњњџыыыџъъъџъъъџъъъџъъъџъъъџћћћџїїїџsssџџџџkkkџџџџџџџџџ“““џџџџџџХХХџўўўџўўўџќќќџљљљџљљљџљљљџљљљџљљљџљљљџљљљџљљљџљљљџљљљџљљљџљљљџљљљџљљљџљљљџљљљџљљљџљљљџљљљџљљљџљљљџјјјџіііџљљљџљљљџљљљџљљљџљљљџљљљџљљљџљљљџљљљџљљљџљљљџљљљџљљљџљљљџљљљџљљљџљљљџљљљџљљљџљљљџљљљџљљљџ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џўўўџџџџџўўўџБББџџџџџџ‚‚‚џўўўџќќќџўўўџўўўџ§§§џ›››џџџџџџCCCџTTTџGGGџџџџџџ^EZџЁwœџ‘fŒџƒT}џ„V~џ…Wџ…Wџ…V~џ…Vџ…Wџ…V~џ…WџƒU}џbˆџ˜q“џ›r–џkNhџ,*џџџџџЎЎЎџћћћџіііџяяяџяяяџѕѕѕџўўўџФФФџ:::џџџџ\\\џџџџџџџџџёёёџџџџџџ+++џўўўџќќќџўўўџњњњџђђђџьььџюююџђђђџѕѕѕџљљљџјјјџюююџьььџєєєџёёёџњњњџіііџэээџэээџѕѕѕџљљљџљљљџљљљџљљљџљљљџ№№№џыыыџљљљџљљљџ№№№џьььџэээџыыыџіііџљљљџљљљџљљљџљљљџљљљџяяяџьььџєєєџ№№№џњњњџњњњџёёёџьььџ№№№џљљљџ§§§џ§§§џ§§§џ§§§џ§§§џџџџџ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џўўўџџџџџўўўџ§§§џ§§§џ§§§џўўўџџџџџўўўџџџџџ§§§џ§§§џ§§§џџџџџџџџџ§§§џ§§§џ§§§џџџџџџџџџўўўџџџџџ§§§џ§§§џўўўџџџџџўўўџ§§§џ§§§џўўўџўўўџўўўџўўўџўўўџ<<<џџџџџџсссџџџџџ§§§џўўўџќќќџ§§§џЮЮЮџ***џџџџџџџџџџџG1DџЅyŸџ–o‘џ’hџ„V~џ„V~џ…Wџ…Wџ…V~џ…Wџ…Wџ…Wџ…W~џ„V~џ”lџ˜p“џ—o‘џI4FџB+@џ- ,џџџџџKKKџ“““џФФФџТТТџ”””џNNNџџџџџ___џџџџџџџџџџџџџƒƒƒџџџџџџЇЇЇџўўўџўўўџ§§§џѕѕѕџшшшџѓѓѓџёёёџфффџёёёџљљљџьььџьььџѓѓѓџчччџшшшџћћћџщщщџђђђџђђђџхххџњњњџљљљџљљљџљљљџјјјџыыыџѕѕѕџљљљџљљљџіііџѕѕѕџтттџѕѕѕџјјјџљљљџљљљџљљљџљљљџэээџьььџєєєџчччџцццџћћћџяяяџшшшџєєєџщщщџяяяџ§§§џ§§§џ§§§џ§§§џџџџџсссџџџџџ§§§џ§§§џ§§§џ§§§џ§§§џъъъџсссџчччџћћћџ§§§џ§§§џэээџсссџшшшџуууџќќќџ§§§џєєєџфффџуууџѕѕѕџўўўџєєєџуууџсссџяяяџсссџџџџџїїїџхххџсссџьььџќќќџќќќџщщщџсссџ§§§џўўўџўўўџРРРџџџџџџHHHџџџџџўўўџџџџџ§§§џўўўџсссџсссџ“““џ444џџџџџџ444џ)(џ<(:џK3Iџi‹џ˜p“џ–mџ‡Zџ„U~џ…Wџ…V~џ…V~џ…Vџ„V~џ…WџƒU}џ‹`†џ—p’џ›r–џ|[xџ9%7џ?*=џ{kyџЦЦЦџџџџџџџџџџџџџ˜˜˜џџџџџџџџџўўўџлллџџџџџџ777џџџџџўўўџџџџџњњњџѕѕѕџщщщџіііџјјјџяяяџёёёџњњњџхххџљљљџљљљџѕѕѕџчччџњњњџљљљџљљљџіііџфффџњњњџљљљџљљљџљљљџїїїџыыыџјјјџљљљџљљљџљљљџњњњџтттџћћћџљљљџљљљџљљљџљљљџњњњџфффџљљљџњњњџіііџцццџќќќџфффџјјјџњњњџјјјџуууџ§§§џ§§§џ§§§џ§§§џўўўџсссџџџџџўўўџўўўџ§§§џўўўџыыыџяяяџџџџџђђђџщщщџџџџџђђђџьььџўўўџјјјџсссџќќќџљљљџщщщџњњњџ§§§џѕѕѕџџџџџсссџљљљџџџџџѓѓѓџсссџџџџџѓѓѓџћћћџўўўџщщщџјјјџќќќџчччџџџџџ§§§џўўўџўўўџџџџџPPPџџџџџџ•••џџџџџўўўџўўўџ§§§џўўўџяяяџјјјџџџџџнннџИИИџЄЄЄџВВВџйййџџџџџvetџ>)<џ<(:џxXuџs—џ˜q“џ‹_…џƒU}џ„V~џ…Wџ…W~џ…Wџ…Wџ„V~џ„Vџ“jŽџ—o’џ›s–џT)<џA,?џhˆџšq•џ—p’џ‡Zџ„V~џ…Wџ…Wџ…Wџ„U~џ†Yџ–n‘џ˜p“џ™q”џZ?Vџ9%8џ?*=џž–џњњњџњњњџ№№№џуууџуууџ№№№џќќќџфффџјјјџћћћџ№№№џћћћџўўўџўўўџќќќџўўўџЃЃЃџџџџџџ џъъъџўўўџўўўџјјјџєєєџњњњџљљљџяяяџуууџтттџэээџњњњџњњњџіііџфффџтттџэээџшшшџќќќџђђђџуууџтттџэээџњњњџњњњџњњњџњњњџіііџыыыџњњњџњњњџњњњџњњњџћћћџуууџќќќџњњњџњњњџњњњџњњњџњњњџїїїџхххџтттџэээџчччџћћћџљљљџшшшџсссџчччџљљљџўўўџ§§§џ§§§џ§§§џџџџџсссџџџџџ§§§џ§§§џхххџџџџџђђђџщщщџјјјџыыыџ№№№џўўўџїїїџшшшџїїїџђђђџсссџ§§§џћћћџыыыџєєєџїїїџёёёџџџџџчччџѕѕѕџљљљџэээџюююџџџџџьььџёёёџљљљџяяяџњњњџјјјџцццџљљљџ§§§џљљљџѓѓѓџџџџџќќќџўўўџYYYџџџџџџ џђђђџџџџџ§§§џўўўџќќќџ§§§џ§§§џ§§§џ§§§џ§§§џќќќџчччџўўўџq~џ@+>џ8$6џlOiџžt˜џ—o’џ‘hŒџƒU}џ„V~џ…WџƒU}џ…Wџ“jŽџ—o’џt˜џ]{џ:&8џ@*>џK7Iџспсџњњњџњњњџћћћџќќќџќќќџљљљџіііџїїїџњњњџњњњџљљљџ§§§џџџџџўўўџџџџџЧЧЧџџџџџџџžžžџџџџџџџџџџџџџќќќџћћћџњњњџњњњџћћћџќќќџќќќџћћћџњњњџњњњџњњњџќќќџќќќџњњњџчччџћћћџћћћџќќќџќќќџћћћџњњњџњњњџњњњџњњњџјјјџыыыџјјјџњњњџњњњџјјјџїїїџтттџќќќџњњњџњњњџњњњџњњњџњњњџњњњџќќќџќќќџћћћџцццџћћћџњњњџћћћџќќќџћћћџњњњџўўўџ§§§џ§§§џ§§§џџџџџтттџџџџџџџџџєєєџщщщџџџџџўўўџѓѓѓџэээџђђђџўўўџ§§§џўўўџіііџэээџђђђџхххџ§§§џўўўџњњњџяяяџюююџњњњџўўўџ§§§џ№№№џьььџёёёџ§§§џ§§§џќќќџ№№№џэээџѓѓѓџўўўџыыыџуууџыыыџ§§§џ§§§џѕѕѕџњњњџўўўџўўўџўўўџ000џџџџџџ%%%џыыыџџџџџўўўџџџџџ§§§џўўўџіііџљљљџџџџџћћћџхххџўўўџжвеџ?*=џ=(;џB-@џ‘kŒџ˜p“џ—o’џcˆџƒU}џ‚S|џ†Y€џ’jџ˜p“џ˜o“џ•nџI2Gџ;'9џ?*=џ”œџћћћџњњњџњњњџњњњџњњњџњњњџњњњџњњњџњњњџњњњџќќќџўўўџўўўџ§§§џџџџџСССџџџџџџџgggџўўўџўўўџўўўџќќќџњњњџњњњџњњњџњњњџњњњџњњњџњњњџњњњџњњњџњњњџњњњџњњњџњњњџљљљџчччџћћћџњњњџњњњџњњњџњњњџњњњџњњњџњњњџњњњџњњњџьььџѕѕѕџњњњџћћћџёёёџыыыџяяяџћћћџњњњџњњњџњњњџњњњџњњњџњњњџњњњџњњњџњњњџцццџќќќџњњњџњњњџњњњџњњњџњњњџўўўџ§§§џ§§§џ§§§џџџџџсссџфффџфффџшшшџњњњџўўўџ§§§џўўўџўўўџўўўџ§§§џ§§§џ§§§џўўўџўўўџџџџџчччџ§§§џ§§§џўўўџўўўџўўўџўўўџ§§§џўўўџўўўџўўўџўўўџўўўџ§§§џўўўџўўўџўўўџўўўџ§§§џ§§§џцццџџџџџўўўџ§§§џўўўџўўўџўўўџўўўџўўўџтттџџџџџџџџйййџџџџџўўўџўўўџўўўџњњњџъъъџфффџцццџєєєџќќќџўўўџl\jџ>)<џ:'8џaF^џžt˜џ˜p“џ—o’џ’iџg‹џ•mџ—p’џ™p”џœs—џ`C]џ9%7џ>)<џP=Nџљљљџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџ§§§џџџџџўўўџўўўџџџџџСССџџџџџџџ555џџџџџўўўџўўўџўўўџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџљљљџцццџќќќџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџѓѓѓџщщщџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџњњњџфффџќќќџћћћџћћћџћћћџћћћџћћћџўўўџўўўџўўўџўўўџўўўџўўўџўўўџўўўџўўўџўўўџўўўџўўўџўўўџўўўџўўўџўўўџўўўџўўўџўўўџўўўџџџџџчччџ§§§џўўўџўўўџўўўџўўўџўўўџўўўџўўўџўўўџўўўџўўўџўўўџўўўџўўўџўўўџўўўџўўўџўўўџўўўџўўўџўўўџўўўџўўўџўўўџўўўџўўўџўўўџ§§§џўўўџмммџ џџџџџџџПППџўўўџўўўџўўўџџџџџўўўџўўўџўўўџўўўџ§§§џ§§§џЮЪЭџ?*=џ=(;џ9&7џsSnџŸvšџ–n‘џ—o’џ—p“џ–o‘џ˜p“џr˜џiIeџ8%6џ?*=џ?*=џЩФЩџћћћџњњњџћћћџћћћџћћћџћћћџћћћџћћћџќќќџ§§§џџџџџ§§§џўўўџџџџџ’’’џџџџџџџџьььџўўўџўўўџўўўџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџўўўџўўўџўўўџўўўџўўўџўўўџўўўџўўўџўўўџўўўџўўўџўўўџўўўџўўўџўўўџўўўџўўўџўўўџўўўџўўўџџџџџюююџ§§§џўўўџўўўџўўўџўўўџўўўџўўўџўўўџўўўџўўўџўўўџўўўџўўўџўўўџўўўџўўўџўўўџўўўџўўўџўўўџўўўџўўўџўўўџўўўџўўўџўўўџўўўџџџџџўўўџўўўџШШШџџџџџџџџ{{{џџџџџўўўџўўўџўўўџџџџџўўўџўўўџўўўџљљљџёёёџŸ•žџ>*<џ>)<џ<':џrQnџ›q–џœs—џ›r–џt˜џ“iŽџcD_џ8%7џ>)<џ?*=џ™Ž˜џћћћџћћћџћћћџћћћџћћћџћћћџћћћџќќќџ§§§џўўўџўўўџўўўџўўўџћћћџiiiџџџџџџџџпппџўўўџўўўџўўўџќќќџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџўўўџўўўџўўўџўўўџўўўџўўўџўўўџўўўџўўўџўўўџўўўџўўўџўўўџўўўџўўўџўўўџўўўџўўўџўўўџўўўџўўўџџџџџўўўџўўўџўўўџўўўџўўўџўўўџўўўџўўўџўўўџўўўџўўўџўўўџўўўџўўўџўўўџўўўџўўўџўўўџўўўџўўўџўўўџўўўџўўўџўўўџўўўџўўўџўўўџўўўџўўўџўўўџўўўџжжжџџџџџџџџ222џЩЩЩџџџџџўўўџњњњџўўўџџџџџўўўџўўўџџџџџўўўџzlyџ:%8џ?+=џ:&8џQ6MџpLlџwRsџgEbџH/Eџ9%7џ?+=џA,?џ„wƒџћћћџћћћџћћћџћћћџћћћџћћћџќќќџ§§§џџџџџўўўџњњњџўўўџўўўџИИИџџџџџџџџџуууџџџџџ§§§џўўўџќќќџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџўўўџўўўџўўўџўўўџўўўџўўўџўўўџўўўџўўўџўўўџўўўџўўўџўўўџўўўџўўўџўўўџўўўџўўўџўўўџўўўџўўўџўўўџўўўџўўўџўўўџўўўџўўўџўўўџўўўџўўўџўўўџўўўџўўўџўўўџўўўџўўўџўўўџўўўџўўўџўўўџўўўџўўўџўўўџўўўџўўўџўўўџўўўџўўўџўўўџўўўџўўўџўўўџўўўџўўўџуууџ%%%џџџџџџџџgggџцццџўўўџџџџџџџџџўўўџўўўџўўўџўўўџўўўџrcqџ0-џ:%8џ:&8џ8%7џ8%6џ9&7џ:&8џ:$8џ53џˆ{‡џћћћџћћћџћњћџћћћџќќќџ§§§џ§§§џџџџџўўўџџџџџўўўџџџџџлллџbbbџџџџџџџџ888џшшшџўўўџўўўџџџџџќќќџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џўўўџџџџџ§§§џўўўџєєєџGGGџџџџџџџџ џkkkџшшшџџџџџўўўџўўўџ§§§џўўўџџџџџўўўџЁ– џ@+>џ53џ.,џ-+џ.,џ8"6џR?QџМЕЛџ§§§џўўўџ§§§џ§§§џўўўџўўўџџџџџ§§§џўўўџўўўџџџџџщщщџvvvџџџџџџџџџYYYџўўўџўўўџќќќџџџџџ§§§џќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџљљљџўўўџўўўџўўўџўўўџ–––џџџџџџџџџџ^^^џЖЖЖџєєєџџџџџўўўџџџџџџџџџџџџџђ№ђџЎЅ­џŒŠџ„vƒџƒџРКРџўўўџџџџџџџџџўўўџџџџџџџџџџџџџџџџџўўўџўўўџїїїџМММџ```џџџџџџџџџџ–––џўўўџўўўџўўўџџџџџћћћџјјјџјјјџјјјџјјјџјјјџјјјџјјјџјјјџјјјџјјјџјјјџјјјџјјјџјјјџјјјџјјјџјјјџјјјџјјјџјјјџјјјџјјјџјјјџјјјџјјјџјјјџјјјџјјјџјјјџјјјџјјјџјјјџјјјџјјјџјјјџјјјџјјјџјјјџјјјџјјјџјјјџјјјџјјјџјјјџјјјџјјјџјјјџјјјџјјјџјјјџјјјџјјјџјјјџјјјџјјјџїїїџїїїџїїїџїїїџїїїџїїїџїїїџїїїџїїїџїїїџїїїџїїїџїїїџїїїџїїїџїїїџїїїџїїїџїїїџїїїџїїїџїїїџїїїџїїїџїїїџїїїџїїїџїїїџїїїџїїїџїїїџїїїџїїїџїїїџїїїџїїїџїїїџїїїџїїїџїїїџїїїџїїїџїїїџїїїџїїїџїїїџїїїџїїїџїїїџїїїџїїїџїїїџїїїџњњњџўўўџўўўџќќќџўўўџиииџ:::џџџџџџџџџџ%%%џgggџЊЊЊџьььџџџџџџџџџџџџџўўўџџџџџџџџџџџџџџџџџўўўџўўўџўўўџўўўџўўўџџџџџџџџџіііџЗЗЗџfffџ'''џџџџџџџџџџAAAџзззџџџџџќќќџўўўџџџџџћћћџњњњџњњњџњњњџњњњџњњњџњњњџњњњџњњњџњњњџњњњџњњњџњњњџњњњџњњњџњњњџњњњџњњњџњњњџњњњџњњњџњњњџњњњџњњњџњњњџњњњџњњњџњњњџњњњџњњњџњњњџњњњџњњњџњњњџњњњџњњњџњњњџњњњџњњњџњњњџњњњџњњњџњњњџњњњџњњњџњњњџњњњџњњњџњњњџњњњџњњњџњњњџњњњџњњњџњњњџњњњџњњњџѓѓѓџјјјџјјјџјјјџјјјџјјјџјјјџјјјџјјјџјјјџјјјџјјјџјјјџјјјџјјјџјјјџјјјџјјјџјјјџјјјџјјјџјјјџјјјџјјјџјјјџјјјџјјјџјјјџјјјџјјјџјјјџјјјџјјјџјјјџјјјџјјјџјјјџјјјџјјјџјјјџјјјџјјјџјјјџјјјџјјјџјјјџјјјџјјјџјјјџјјјџјјјџјјјџјјјџјјјџљљљџ§§§џџџџџўўўџџџџџџџџџЋЋЋџџџџџџџџџџџџџ(((џTTTџџЊЊЊџПППџЧЧЧџаааџвввџЭЭЭџЦЦЦџРРРџЃЃЃџ………џdddџ&&&џџџџџџџџџџџџ###џœœœџџџџџўўўџўўўџўўўџ§§§џќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџѕѕѕџёёёџёёёџёёёџёёёџёёёџёёёџёёёџёёёџёёёџёёёџёёёџёёёџёёёџёёёџёёёџёёёџёёёџёёёџёёёџёёёџёёёџёёёџёёёџёёёџёёёџёёёџёёёџёёёџёёёџёёёџёёёџёёёџёёёџёёёџёёёџёёёџёёёџёёёџёёёџёёёџёёёџёёёџёёёџёёёџёёёџёёёџёёёџёёёџёёёџёёёџёёёџёёёџёёёџёёёџёёёџњњњџўўўџўўўџџџџџўўўџђђђџŽŽŽџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџŽŽŽџїїїџўўўџџџџџџџџџўўўџўўўџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џўўўџўўўџ§§§џўўўџџџџџњњњџЁЁЁџ000џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ***џŸŸŸџїїїџџџџџўўўџўўўџўўўџўўўџ§§§џќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџ§§§џ§§§џўўўџџџџџџџџџўўўџџџџџУУУџwwwџ$$$џџџџџџџџџџџџџџџџџџџџџџџџ"""џgggџЗЗЗџџџџџўўўџџџџџџџџџўўўџџџџџ§§§џќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџ§§§џўўўџџџџџќќќџћћћџўўўџџџџџяяяџаааџџDDDџџџџџџџџџџџџџџџџџ џAAAџyyyџХХХџ№№№џџџџџўўўџќќќџќќќџўўўџўўўџ§§§џќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџњњњџњњњџњњњџњњњџњњњџњњњџњњњџњњњџњњњџњњњџњњњџњњњџњњњџњњњџњњњџњњњџњњњџњњњџњњњџњњњџњњњџњњњџњњњџњњњџњњњџњњњџњњњџњњњџњњњџњњњџњњњџњњњџњњњџњњњџњњњџњњњџњњњџњњњџњњњџњњњџњњњџњњњџњњњџњњњџњњњџњњњџњњњџњњњџњњњџњњњџњњњџњњњџњњњџњњњџњњњџњњњџњњњџњњњџњњњџњњњџњњњџњњњџњњњџќќќџўўўџўўўџўўўџџџџџџџџџџџџџўўўџўўўџџџџџпппџМММџ”””џxxxџeeeџXXXџLLLџHHHџOOOџVVVџZZZџsssџ’’’џЏЏЏџдддџџџџџџџџџўўўџџџџџџџџџџџџџўўўџџџџџўўўџќќќџњњњџњњњџњњњџњњњџњњњџњњњџњњњџњњњџњњњџњњњџњњњџњњњџњњњџњњњџњњњџњњњџњњњџњњњџњњњџњњњџњњњџњњњџњњњџњњњџњњњџњњњџњњњџњњњџњњњџњњњџњњњџњњњџњњњџњњњџњњњџњњњџњњњџњњњџњњњџњњњџњњњџњњњџњњњџњњњџњњњџњњњџњњњџњњњџњњњџњњњџњњњџњњњџњњњџњњњџњњњџњњњџњњњџњњњџњњњџњњњџњњњџњњњџњњњџњњњџњњњџњњњџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџќќќџ§§§џџџџџџџџџўўўџўўўџќќќџ§§§џўўўџўўўџџџџџўўўџџџџџџџџџџџџџџџџџџџџџџџџџўўўџџџџџџџџџўўўџўўўџ§§§џќќќџ§§§џўўўџџџџџўўўџўўўџќќќџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџќќќџ§§§џўўўџ§§§џўўўџџџџџўўўџўўўџўўўџџџџџџџџџўўўџўўўџўўўџџџџџџџџџўўўџўўўџўўўџџџџџўўўџўўўџўўўџ§§§џќќќџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџ§§§џўўўџўўўџўўўџўўўџўўўџўўўџџџџџўўўџўўўџўўўџўўўџ§§§џќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџћћћџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџћћћџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџїїїџэээџэээџэээџэээџэээџэээџэээџэээџэээџэээџэээџэээџэээџіііџћћћџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџћћћџћћћџњњњџњњњџњњњџњњњџњњњџњњњџњњњџњњњџћћћџћћћџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџћћћџћћћџћћћџћћћџћћћџњњњџћћћџћћћџћћћџћћћџћћћџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџњњњџэээџѓѓѓџѓѓѓџђђђџђђђџђђђџђђђџёёёџёёёџёёёџёёёџёёёџёёёџьььџэээџїїїџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџћћћџњњњџјјјџљљљџљљљџљљљџљљљџљљљџљљљџљљљџљљљџљљљџњњњџћћћџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџћћћџћћћџћћћџњњњџїїїџїїїџћћћџћћћџћћћџћћћџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџ§§§џюююџђђђџіііџѓѓѓџѓѓѓџѓѓѓџѓѓѓџђђђџёёёџёёёџёёёџёёёџ№№№џяяяџѕѕѕџыыыџѕѕѕџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџњњњџјјјџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџћћћџјјјџ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џјјјџћћћџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџћћћџїїїџїїїџїїїџјјјџћћћџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџ§§§џюююџјјјџѕѕѕџѕѕѕџѕѕѕџєєєџєєєџєєєџѓѓѓџѓѓѓџђђђџђђђџёёёџёёёџєєєџэээџѕѕѕџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџѕѕѕџэээџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџћћћџљљљџ§§§џќќќџќќќџќќќџќќќџќќќџќќќџќќќџћћћџ§§§џљљљџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџїїїџїїїџјјјџїїїџїїїџјјјџќќќџќќќџќќќџќќќџќќќџќќќџќќќџўўўџџџџџџџџџўўўџ§§§џќќќџќќќџќќќџќќќџўўўџџџџџўўўџќќќџќќќџќќќџўўўџќќќџќќќџўўўџќќќџќќќџўўўџќќќџќќќџќќќџўўўџќќќџ§§§џ§§§џќќќџ§§§џўўўџџџџџ§§§џќќќџќќќџ§§§џџџџџџџџџ§§§џўўўџќќќџќќќџўўўџџџџџўўўџўўўџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџ§§§џьььџјјјџіііџіііџіііџіііџѕѕѕџѕѕѕџєєєџєєєџєєєџѓѓѓџѓѓѓџђђђџєєєџ№№№џђђђџќќќџќќќџќќќџ§§§џ§§§џ§§§џ§§§џќќќџќќќџіііџюююџ§§§џ§§§џќќќџќќќџќќќџќќќџ§§§џ§§§џ§§§џќќќџќќќџ§§§џќќќџќќќџќќќџ§§§џќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџљљљџќќќџћћћџќќќџќќќџќќќџќќќџќќќџќќќџќќќџ§§§џљљљџќќќџќќќџќќќџќќќџќќќџќќќџ§§§џ§§§џќќќџќќќџўўўџќќќџќќќџќќќџўўўџџџџџўўўџќќќџќќќџќќќџќќќџќќќџќќќџќќќџїїїџїїїџјјјџјјјџїїїџїїїџїїїџљљљџќќќџќќќџќќќџќќќџќќќџљљљџєєєџєєєџѕѕѕџіііџћћћџўўўџќќќџќќќџїїїџѕѕѕџѕѕѕџќќќџ§§§џќќќџѕѕѕџќќќџ§§§џїїїџњњњџ§§§џљљљџћћћџќќќџќќќџїїїџќќќџќќќџіііџ§§§џћћћџїїїџєєєџіііџ§§§џ§§§џњњњџіііџєєєџїїїџєєєџџџџџќќќџљљљџѕѕѕџѕѕѕџѕѕѕџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџ§§§џэээџїїїџїїїџїїїџіііџіііџїїїџіііџѕѕѕџѕѕѕџѕѕѕџѕѕѕџєєєџѓѓѓџѕѕѕџђђђџ№№№џќќќџќќќџњњњџэээџфффџуууџьььџњњњџќќќџіііџчччџцццџуууџяяяџќќќџќќќџјјјџшшшџуууџчччџѕѕѕџўўўџсссџўўўџќќќџўўўџсссџўўўџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџљљљџќќќџњњњџњњњџћћћџќќќџњњњџњњњџћћћџњњњџ§§§џљљљџќќќџќќќџќќќџќќќџќќќџќќќџєєєџўўўџ§§§џѓѓѓџџџџџќќќџќќќџјјјџѕѕѕџѕѕѕџјјјџќќќџќќќџќќќџќќќџќќќџќќќџјјјџїїїџјјјџјјјџјјјџїїїџїїїџїїїџїїїџљљљџќќќџќќќџќќќџќќќџљљљџќќќџ§§§џќќќџћћћџіііџњњњџўўўџјјјџљљљџ§§§џњњњџіііџџџџџњњњџїїїџїїїџ§§§џїїїџїїїџўўўџљљљџћћћџќќќџќќќџїїїџ§§§џќќќџїїїџўўўџіііџњњњџ§§§џљљљџіііџџџџџіііџњњњџўўўџќќќџєєєџџџџџњњњџјјјџќќќџќќќџѕѕѕџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџ§§§џјјјџщщщџэээџыыыџщщщџѓѓѓџ№№№џёёёџ№№№џ№№№џ№№№џ№№№џяяяџ№№№џ№№№џяяяџяяяџќќќџќќќџюююџюююџќќќџ§§§џяяяџэээџќќќџіііџцццџћћћџќќќџыыыџіііџ§§§џщщщџјјјџџџџџћћћџіііџўўўџсссџўўўџќќќџўўўџсссџўўўџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџљљљџќќќџњњњџњњњџњњњџћћћџћћћџњњњџћћћџњњњџ§§§џљљљџќќќџќќќџќќќџќќќџќќќџќќќџѕѕѕџўўўџ§§§џєєєџџџџџќќќџ§§§џєєєџ§§§џўўўџњњњџќќќџќќќџќќќџќќќџ§§§џјјјџїїїџјјјџјјјџјјјџјјјџїїїџїїїџїїїџїїїџїїїџјјјџќќќџќќќџќќќџљљљџћћћџќќќџќќќџќќќџћћћџѕѕѕџџџџџіііџўўўџќќќџ§§§џѕѕѕџџџџџљљљџћћћџѕѕѕџћћћџљљљџіііџўўўџљљљџћћћџќќќџќќќџїїїџ§§§џќќќџїїїџўўўџєєєџџџџџќќќџ§§§џєєєџџџџџњњњџіііџіііџіііџѓѓѓџўўўџљљљџњњњџ§§§џќќќџјјјџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџ§§§џыыыџєєєџэээџыыыџџџџџјјјџљљљџљљљџљљљџљљљџљљљџљљљџ№№№џёёёџыыыџћћћџќќќџќќќџчччџћћћџќќќџќќќџћћћџшшшџќќќџіііџюююџќќќџќќќџёёёџѓѓѓџ§§§џсссџхххџфффџхххџюююџџџџџсссџўўўџќќќџўўўџсссџўўўџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџљљљџќќќџњњњџњњњџћћћџќќќџћћћџњњњџћћћџњњњџ§§§џљљљџќќќџќќќџќќќџќќќџќќќџќќќџѕѕѕџўўўџ§§§џєєєџџџџџќќќџќќќџјјјџіііџіііџіііџ§§§џ§§§џ§§§џ§§§џљљљџїїїџљљљџљљљџјјјџјјјџјјјџјјјџјјјџјјјџјјјџјјјџїїїџљљљџ§§§џ§§§џљљљџћћћџ§§§џ§§§џ§§§џ§§§џєєєџџџџџїїїџќќќџўўўџќќќџѕѕѕџўўўџљљљџќќќџљљљџѕѕѕџќќќџјјјџћћћџњњњџњњњџўўўџ§§§џјјјџќќќџќќќџїїїџўўўџѕѕѕџ§§§џўўўџќќќџѕѕѕџўўўџќќќџўўўџ§§§џ§§§џіііџўўўџњњњџљљљџўўўџ§§§џїїїџќќќџ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џыыыџєєєџюююџыыыџўўўџіііџїїїџїїїџїїїџїїїџїїїџљљљџѓѓѓџѓѓѓџыыыџўўўџ§§§џ§§§џхххџўўўџ§§§џ§§§џўўўџцццџќќќџіііџьььџќќќџќќќџяяяџѕѕѕџ§§§џцццџќќќџ§§§џљљљџъъъџџџџџсссџ§§§џ§§§џ§§§џтттџџџџџ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џљљљџ§§§џћћћџќќќџќќќџќќќџќќќџќќќџќќќџќќќџ§§§џљљљџ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џѕѕѕџўўўџ§§§џєєєџўўўџ§§§џ§§§џ§§§џўўўџ§§§џќќќџ§§§џ§§§џ§§§џћћћџјјјџјјјџјјјџїїїџљљљџјјјџјјјџјјјџјјјџјјјџјјјџјјјџјјјџјјјџќќќџ§§§џљљљџћћћџ§§§џ§§§џ§§§џћћћџіііџўўўџњњњџіііџћћћџјјјџљљљџќќќџїїїџќќќџќќќџіііџ§§§џњњњџїїїџћћћџѕѕѕџњњњџњњњџїїїџќќќџќќќџїїїџўўўџњњњџїїїџћћћџїїїџњњњџ§§§џљљљџљљљџћћћџљљљџјјјџ§§§џќќќџїїїџњњњџњњњџѕѕѕџќќќџ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џыыыџєєєџюююџыыыџџџџџћћћџћћћџћћћџћћћџћћћџћћћџќќќџѓѓѓџѓѓѓџыыыџўўўџ§§§џ§§§џчччџћћћџ§§§џ§§§џќќќџшшшџќќќџіііџтттџђђђџёёёџъъъџњњњџ§§§џ№№№џэээџєєєџщщщџѕѕѕџџџџџсссџэээџєєєџьььџьььџўўўџ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џљљљџ§§§џќќќџќќќџќќќџќќќџќќќџќќќџќќќџќќќџ§§§џљљљџ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џѕѕѕџўўўџ§§§џѓѓѓџјјјџћћћџўўўџіііџњњњџћћћџїїїџ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џјјјџљљљџјјјџјјјџјјјџјјјџјјјџћћћџ§§§џ§§§џ§§§џ§§§џ§§§џљљљџќќќџџџџџўўўџќќќџіііџћћћџ§§§џ§§§џћћћџљљљџњњњџќќќџ§§§џњњњџ§§§џ§§§џќќќџ§§§џќќќџњњњџќќќџћћћџњњњџљљљџћћћџ§§§џќќќџїїїџўўўџ§§§џњњњџљљљџњњњџ§§§џ§§§џ§§§џњњњџљљљџљљљџќќќџ§§§џ§§§џќќќџљљљџњњњџїїїџќќќџ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џўўўџыыыџєєєџяяяџыыыџџџџџљљљџњњњџњњњџњњњџњњњџњњњџћћћџѓѓѓџѓѓѓџыыыџўўўџ§§§џ§§§џяяяџюююџ§§§џ§§§џяяяџюююџ§§§џњњњџѕѕѕџѓѓѓџёёёџљљљџ§§§џ§§§џќќќџєєєџёёёџіііџ§§§џ§§§џђђђџјјјџёёёџѓѓѓџќќќџ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џљљљџ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џљљљџ§§§џ§§§џ§§§џ§§§џўўўџџџџџѕѕѕџџџџџџџџџћћћџћћћџљљљџќќќџќќќџљљљџљљљџњњњџ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џјјјџљљљџјјјџјјјџјјјџјјјџјјјџћћћџ§§§џ§§§џ§§§џ§§§џ§§§џљљљџєєєџєєєџѕѕѕџїїїџћћћџ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џќќќџїїїџўўўџ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џјјјџќќќџ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џўўўџыыыџєєєџяяяџъъъџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџѓѓѓџѓѓѓџыыыџўўўџ§§§џ§§§џћћћџюююџуууџуууџэээџћћћџ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џљљљџќќќџјјјџјјјџјјјџјјјџјјјџјјјџјјјџјјјџ§§§џљљљџ§§§џ§§§џ§§§џњњњџєєєџєєєџєєєџєєєџєєєџ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џјјјџљљљџјјјџјјјџјјјџјјјџјјјџћћћџ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џќќќџіііџўўўџ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џјјјџќќќџ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џўўўџыыыџєєєџяяяџэээџъъъџъъъџыыыџыыыџыыыџыыыџыыыџыыыџьььџєєєџыыыџўўўџ§§§џ§§§џ§§§џ§§§џўўўџўўўџ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џљљљџќќќџљљљџљљљџњњњџљљљџљљљџљљљџњњњџјјјџ§§§џљљљџ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џјјјџљљљџјјјџјјјџїїїџјјјџјјјџћћћџ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џљљљџ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џњњњџћћћџ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џўўўџыыыџѕѕѕџ№№№џёёёџёёёџѓѓѓџђђђџ№№№џяяяџ№№№џ№№№џ№№№џ№№№џэээџяяяџўўўџ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џљљљџќќќџїїїџїїїџњњњџљљљџљљљџљљљџљљљџјјјџ§§§џљљљџ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џ§§§џgpodder-3.9.0/tools/win32-setup/makefile0000644000016000001710000000223712654461624021237 0ustar jenkinsjenkins00000000000000# gPodder Win32 Setup Cross-Build script # 2014-10-21 Thomas Perl PYTHON ?= python VERSION := $(shell $(PYTHON) ../getversion.py) SED := sed CHMOD := chmod # Simple script that calls ISCC.exe via Wine, and passes arguments ISCC ?= iscc SETUP_SCRIPT := gpodder-setup.iss SETUP_SCRIPT_IN := $(SETUP_SCRIPT).in SETUP_OUTPUT := gpodder-$(VERSION)-setup.exe SOURCE_ROOT := ../../ LAUNCHER_ROOT := ../win32-launcher GPODDER_EXE := gpodder.exe GPO_EXE := gpo.exe all: $(SETUP_OUTPUT) $(SETUP_OUTPUT): $(SETUP_SCRIPT) $(LAUNCHER_ROOT)/$(GPODDER_EXE) $(LAUNCHER_ROOT)/$(GPO_EXE) $(PYTHON) ../localdepends.py cp -rpv ../fake-dbus-module/dbus ../../src/ $(MAKE) -C $(SOURCE_ROOT) messages $(ISCC) $< $(CHMOD) -x $@ $(LAUNCHER_ROOT)/$(GPODDER_EXE): $(MAKE) -C $(LAUNCHER_ROOT) $(GPODDER_EXE) $(LAUNCHER_ROOT)/$(GPO_EXE): $(MAKE) -C $(LAUNCHER_ROOT) $(GPO_EXE) $(SETUP_SCRIPT): $(SETUP_SCRIPT_IN) $(RM) $@ $(SED) -e "s#%VERSION%#$(VERSION)#g" $< >$@ clean: $(RM) $(SETUP_SCRIPT) $(MAKE) -C $(LAUNCHER_ROOT) distclean distclean: clean $(RM) $(SETUP_OUTPUT) .PHONY: all clean distclean $(LAUNCHER_ROOT)/$(GPODDER_EXE) $(LAUNCHER_ROOT)/$(GPO_EXE) .DEFAULT: all gpodder-3.9.0/tools/make-help.txt0000644000016000001710000000225012654461624020036 0ustar jenkinsjenkins00000000000000 gPodder' makefile commands ----------------------- ---- --- -- - - For developers make unittest Run doctests and unittests make manpage Update generated manual pages from source make messages Update translation files in po/ from source make headlink Print commit URL for the current Git head make clean Remove generated and compiled files make distclean "make clean" + remove dist/ For maintainers make releasetest Run some basic release sanity checks make release Create the source tarball in dist/ For users/packagers make install Install gPodder into $DESTDIR/$PREFIX ----------------------- ---- --- -- - - make install supports the following environment variables: PREFIX The installation prefix (default: /usr) DESTDIR The installation destination (default: /) GPODDER_INSTALL_UIS A space-separated list of UIs to install LINGUAS A space-separated list of translations See the README file for more information on how to install gPodder. gpodder-3.9.0/tools/progressbar_icon_tester.py0000644000016000001710000000132012654461624022730 0ustar jenkinsjenkins00000000000000#!/usr/bin/python # Progressbar icon tester # Thomas Perl ; 2012-02-05 # # based on: Simple script to test gPodder's "pill" pixbuf implementation # Thomas Perl ; 2009-09-13 import sys sys.path.insert(0, 'src') import gtk from gpodder.gtkui.draw import draw_cake_pixbuf def gen(percentage): pixbuf = draw_cake_pixbuf(percentage) return gtk.image_new_from_pixbuf(pixbuf) w = gtk.Window() w.connect('destroy', gtk.main_quit) v = gtk.VBox() w.add(v) for y in xrange(1): h = gtk.HBox() h.set_homogeneous(True) v.add(h) PARTS = 20 for x in xrange(PARTS + 1): h.add(gen(float(x)/float(PARTS))) w.set_default_size(400, 100) w.show_all() gtk.main() gpodder-3.9.0/tools/getversion.py0000644000016000001710000000035512654461624020175 0ustar jenkinsjenkins00000000000000import os import re here = os.path.dirname(__file__) or '.' main_module = open(os.path.join(here, '../src/gpodder/__init__.py')).read() metadata = dict(re.findall("__([a-z_]+)__\s*=\s*'([^']+)'", main_module)) print metadata['version'] gpodder-3.9.0/tools/mac-osx/0000755000016000001710000000000012654461626017004 5ustar jenkinsjenkins00000000000000gpodder-3.9.0/tools/mac-osx/Info.plist0000644000016000001710000000267612654461624020765 0ustar jenkinsjenkins00000000000000 CFBundleName gPodder CFBundleShortVersionString __VERSION__ CFBundleGetInfoString gPodder v__VERSION__ CFBundleAllowMixedLocalizations false CFBundleInfoDictionaryVersion 6.0 CFBundleExecutable gpodder CFBundleDevelopmentRegion English CFBundlePackageType APPL CFBundleSignature GPOD CFBundleVersion __VERSION__ CFBundleIconFile icon.icns CFBundleIdentifier org.gpodder.gpodder CFBundleDocumentTypes CFBundleTypeExtensions opml xml CFBundleTypeMIMETypes text/xml application/xml text/x-opml CFBundleTypeName OPML Documents CFBundleTypeRole Viewer gpodder-3.9.0/tools/mac-osx/makefile0000644000016000001710000000343412654461624020506 0ustar jenkinsjenkins00000000000000# # gPodder - A media aggregator and podcast client # Copyright (c) 2005-2016 Thomas Perl and the gPodder Team # # gPodder is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 3 of the License, or # (at your option) any later version. # # gPodder is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . # # # the installed path of the gpodder script GPODDERSCRIPT=/Users/elelay/misc/macports/svnlocal_dports/gnome/gpodder/gpodder/bin/gpodder # the /Applications directory APPLICATIONSDIR=/tmp/Applications APPDIR=$(APPLICATIONSDIR)/gPodder.app BINDIR=$(APPDIR)/Contents/MacOS RESOURCESDIR=$(APPDIR)/Contents/Resources # current version of gPodder VERSION=2.3 # set OSXVERSION to darwin8 to get the Mac OS X Tiger version of the plist. OSXVERSION=darwin8 ifeq ($(OSXVERSION),darwin8) PLIST=Info-10.4.plist else PLIST=Info.plist endif all:$(BINDIR)/gpodder\ $(RESOURCESDIR)/icon.icns\ $(APPDIR)/Contents/PkgInfo\ $(APPDIR)/Contents/Info.plist $(BINDIR): mkdir -p $(BINDIR) $(RESOURCESDIR): mkdir -p $(RESOURCESDIR) $(BINDIR)/gpodder: ../../bin/gpodder $(BINDIR) ln -s $(GPODDERSCRIPT) $@ $(RESOURCESDIR)/icon.icns: icon.icns $(RESOURCESDIR) install $< $@ $(APPDIR)/Contents/PkgInfo: PkgInfo $(RESOURCESDIR) install $< $@ $(APPDIR)/Contents/Info.plist: $(PLIST) $(APPDIR)/Contents sed "s|__VERSION__|$(VERSION)|g" $< > $@ clean: rm -rf $(APPDIR) .PHONY: all clean dirs gpodder-3.9.0/tools/mac-osx/icon.icns0000644000016000001710000055317112654461624020624 0ustar jenkinsjenkins00000000000000icnsжyis32/‘џхмНОзч†џрˆ$z2gт„џ яŽqн›•уigъƒџ нЃ96A0Z.йƒџ ЧR‡№™AДђYнџ р%,ірї@єцкеџ кAЭ НBх&ы!Ьџ о0$цАЫKŽюЯeпџ яЭešD{@xHфи<€џ29}€+Vz85—@=џџ;?C>?AinACm>џџ>M{|x|}}~~xwtAџџ9A@@ƒA@>>?Ÿџ‘џхмНОзч†џрˆ$z2gт„џ яŽqнŒуigъƒџ нЃ6)--Z.йƒџ ЧR‡№˜4ДђYнџ р%,ірї;єцкеџ кAЭ Н>х&ы!Ьџ о0$цАЫ9ŒюЯeпџ яЭe™P‚}‚ƒƒ„„}|zCџџ9CBBƒCB@@CŸџs8mk cжфукtЃюџыђџіИRэ№ХWqЕєѕwаџодњїШєџх,)хќјџџџўџџџТЦџџџџџџџџџџаДџџџџџџџџџџй’џџџџџџўџџљШNщщєќџџћїеђ "3 œіџџїMnяњ8јђћїіўџџџѕѕџњ_єџџџџџџџџџџџщађїїїїїїїјњћ‘il32№џџ†џіДg 0Cšј“џ Ч7„ЕЃ6 ‘џ – џg_iEъџМšџУ Эя$Lˆ‹d?fРАџў3‡f /‡#B”,џБІЫм*Obцюƒ- дŒџ‹RЋ№№Ф6ёђђ3/‹џpQ)ѓ€є eвѕііЄ LŠџnnј VOјљњњц/ŠџP žќќћќmFќ§яш§ŠџkЎ§XЫpD ъм ћѕ‰џ† ™ХvFX)Д|э'Lю‰џЁlш ФoC^Љtп С‡Šџгtv#ёхсЉ'v дс№”џŒdпŠџэн[J%гЯџџіМwhћˆџ M0‡A ƒџС…‰џH‹€…D€џ@?=Dvќ‚џ<=><7џ=RŠ€ ‰`F@CEESlQMџ =H_YQHFEFIQ|ƒ€ €ˆ„y†‹‹‡‰`>џ >fЇ‰‹Š†‚…ˆ€ƒ‚‚€ƒ‰Z=џ>qƒ€€€‚€‚„ƒ‰‚E9џ=\ŠŠ†‹ƒ…‡ŠŒ…eF:‚џ 3?FWn†ˆ‹Œ€ ŒŒ‹†€uj]QC;21@џ 3)/8f€W eK2,/13?Sc=<џ ,5ID=64326>_\€W Yce^dfifadJ)џ )MebdfgeddcYƒWY[Y[€\eE+џ,W\€WXX€YZ[[ƒ\]dd1џ+Hiea]‰\]`beggM3+‚џ-3BUeghhjijjkjjhgcZQH>0,.1@џ€3 /-.0123653€2 11..-.21258Iџ@@.313717457224865173:0+@3…џUU@€3+33@@UУџџџ†џіДg 0Cšј“џ Ч7„Ž‚ЕЃ6 ‘џ – џibkGъџМšџУ Эя$NgAfРАџў3‡f 0Œ…„ #B”,џБІЫм*R…fцюƒ- дŒџ‹RЋ№№Ф„8ёђђ3/‹џpQ)ѓ€є jвѕііЄ LŠџnnј VRјљњњц/ŠџP žќќћќnIќ§яш§ŠџkЎ§XЫpG ъм ћѕ‰џ† ™ХvG\+Д|э'Lю‰џЁlш ФtF^Љtп С‡Šџгtv#ёхсЉ(…|дс№”џŒdпŠџэн_……M%гЯџџіМwhћˆџ M1……‡C ƒџС…‰џJ‘€…‰E€џ@?AEwќ‚џAA><7џAT€… cHAFGGUoƒSQџ =Jb\SKHHGKR‰€… †Žˆ}…А‘Žb>џ >hŠ‡‰Ž†ƒ…†ˆ‡ˆ\Aџ@u‰…€†‚‡…ˆ‰Ž‡G9џ@^ŒŠˆ‰‹‘‰hHB‚џ 3BHZr„Š“€’“‘‘Š„ynaTF?6=@џ 3=<:?CEFFGJJG FEC@=<;6698Iџ @@.3137179:€7 486517=:0+@3…џUU@€3+33@@UУџl8mk@апМ•h Uюџџџџџџџчf‹џџџџџџџџџџџЙЃџџџТУїћтUОџџџЁ@џџ§1їџџіnM™ўџџdдџџЛєњљџџџ№ѓђѓџџЧ4џџъѕџџџџџџџџџќўџџЋGYџџѓџџџџџџџџџџџџџџџmЩџџџџџџџџџџџџџџџџџџžЕџџџџџџџџџџџџџџџџџџџЛ˜џџџџџџџџџџџџџџџџџџџи{џџџџџџџџџџџџџџџџџџџє^џџџџџџџџџџџџџџџџџџџџBџџџџџџџџџџџџџџџџ§џџ№[%џџџџџџџџџџџџџџџўОЌџџџ§бŠnRн§џџџџџџџџџџѕ9 Ѓюџџџз&ѓѕјњџџџџџќѕx2”џџл sKњџџџџџъ9~ЬОчL/O>&KђџџџџџѕъЄХхњђљџѕ<.єё№ѓњњыиыјўџџџџџџџџџџџџџџяJcѕџџџџџџџџџџџџџџџџџџџџџџџџ№GŒўџџџџџџџџџџџџџџџџџџџџџџџџє pіџџџџџџџџџџџџџџџџџџџџџџїіB Ÿљє§џџџџџџџџџџџџџџџћіїђ›=M|аўћњњѕїўџџєЄ6bњћќџўЦџ7ўџљџр- ,Дќџўіњћџ­A4899631vђџўџџўјіўџў­) 9цџњџўФџ$ўџјџЬ љџћї§џњџŽ$AU™“‹Œ”Žšt7>Gшџ§џўў€џ ўџќіџ{ 3ѕќТџ ќѕ2Љџєџў§€џ,ўџіS8@†”‘…|}ƒ“™X<1ƒџљџўџўћћњљ§џїџ WџјџўМџўџјџ^  џєџў€џўџљџІ/=[˜‘Š|€€}„’“‹@?6гџќџѕќџ§їџїџu –џїџўКџўџїџЃ ‹џєџўўії§§ўєќ]6?—€"€}‰‘™h<2ŒџђўџљезЩЮђџ§ќјџRлџќџўКџўџч[џѕџўі§џ ќџп?9Q“’‹~€‚Ž”ŒE9Eуџъ„$kуџљ§ё'NџљџўИџўџјџe(ђћџ§њџєŒO*+%]l;;e›†} €}†™b?,ІХƒ}џѓџМЗџљџўЖџўџћџЯЗџљџљў’3‹“€…•†?>>:fgB _џ№џn>џћИџўџјџ\bџјџќя<'[ž‰€ƒ"€}‡’”V- 7Оѓќ§ібb Mј§фЖџљџўДџ!ўџћџа иџњџё3 HЌлчиЃ6W“z‚~‚!~‚Ž™p ^љєцутц№џВ ZћџƒVџјџўДџ"ўџїџwjџїџя2 Ђќїюъюљї{ Z‡|~‚!€ˆ5Sўхчюяяюытќа yџл мџќџўЖџѕ#бџѕџL Ыўтчъыщцфџpƒ}€€ ~zŽp#щыь№€ыьэѓуњШ Бџ[џїџ§ўБџ#ўџјџЖDџђџ› Чћтђюэьэя№рџs#…|€€#~{‰'Њћч№ыээююэьєфџ "џЛLџљџўВџўџіџužџњыџфєыь€эьэ№чѕ6Wˆ|~€|†aEљщёэю€яэєчџZ‚џюџњњјГџќџ6т§џ…Sџчѓьƒюэ№ъјН‚~€~{‰3Њўщђюя‚№яємєUТџљџўАџўџќџт 8џ§№жѕэ№…яюђщ§S[‡|€€x)юя…№€ё№єщџ}Љ˜џеЦИџўЎџўџљџПpџџ”rџщєя…№яђъ§З+‡|€€|ˆ[sџщѕ№ƒё‚ђёєт*uіЏџўџіџ˜–џє5ејяђˆёђэі6s‚~{‰;Еџыѕё„ђ€ѓђіыџv ‚уџќџўЋџўџіџsЕџЕ^џыѕё‡ђёіщџ‚P‰{‚|ƒ#хєё‡ѓ єєѓіёћв ЯџњџўЋџўџіџcЪџbВџэіђ‡ѓђєюќШ1ˆ|€uBўюѕѓ†є€ѕєјяџH€ЕџјџўЊџў§џїџWм§"+№ѓŠєѓѓєђѓ*|€}†dmџьјѓˆѕ іѕљюџœ€œџіџўЋџўџїџIэХjџэљєˆѕєѓјьџ] i†z‰T“џэљєѕ‡іїїјє§о  €џіџўЊџќљџїџW№‹Ўџяљѕ‡іѕѕєљэџTŠw‹EГџ№љѕіŠїњѓџA dџіџў­џхчK1тћѕј‡ї€іѕљ№џЛA‹w‹:Ыџѓљіїїˆјїќ№џ|KџљџўІџўџљџЎ,(;џѓњї‡ј€їіјєўз 0ŠwŠ1 кџѕљїјјˆљјќѓџЕ0џќЈџ ўџіџœ € hџ№§ј†љ„јљя $…yˆ-ф§їњљ‡њљћїџр ‚їЉџўџљџО •џё§ј…њ„љћіќ1€{†*ъќјћњ€ћ‚њћќљћ(‚ фџќџўЅџўџњџгƒ Кџє§љњћњљњљќєџDz}„(юќљƒћќћ§џ ћќќћџѕџNаџњџўЅџўџ§џч„жџї§њћњ§џќњћћњ§ѓџRu…+ыўњќћ‚ќџћѓіѕѕў§§ћџѓџl ЗџјџўЉџњ щџњ§‚ќџњѓѕѕѓњџћќњџѓџYs…-чџњ§ћ§џј§џљќ§ќџѓџžџіџўЈџћџ4і€ќ§џї§џ§їўћћџєџ^q‡3 нџљў§џљџч‡RWЌџњўќџєџЁ ‚џіџўІџўџјџP+џљў§?џљџцŠSPсџљўћџєџZr~ˆ:аџјџќ§§џјџЄdџљ§џѕџБ eџіџўІџўџіџi 3џљў§§ќџљџž €8 ЅџјўџѕџVt~‰EИџіџќќџїџ‘  ’џєџєџЛLџљџўІџIўџіџ… 7џјўћќџїџ‰ЌџїџіџIy}‰S›џєџњџїџЗ #ѓћўіџП1џќЈџSўџїџ 6џї§ћўїџИ я§§љџ8|‡bwџђџњќћї*НџїїџСїЉџKўџјџК/ўїќњќј§6 ˜џѓўѕ%!‚}ƒrNџє§§єџЁ –џѓїџЙ хџќџўЅџўџњџг%љјњ§єџП€9Uџёџр-‡|€&іњњ§ѓџO‹џѓѕџАбџњџўЅџўџ§џц ‚ ьћї§№џ‰ €-9џёџЧ;‰}}‡1аџѕћјє œџѓѓџž‚НџљџўЉџљ‚ оўє§яџo€@џьџžN‰}}‰K›џёњќуƒШџі№џ‰ 1xДХоїџўЊџќџ3 Хџё§юџ} €hџчџqb†~~„g Xџёљњх€0јѓћэџh СџГџјџўЊџўџјџNЅџэ§яџЋ€5Дџьџ>v~€~ыјіѕї. —џьћюџK шџМtџђў§ЊџSўџіџg  {џьњєїь ?§ёќт&…|€{Š:Ўџђ№џl  =љёієєю(6џџё6§ќџўўЉџTўџіџ„ Kџюїїюџ• ЯџыџЊ?Š{€|†a[џяєћЯкј№іяќЯ Hџѓџ`ЊџѓџўџўЄџTўџїџŸыѕєєіяџlП§ѓяџda†|€~€~€лјєюџ“-зњяѓѕыџ›gџђџЩшџіњў‚џ€ў џ ўџјџЙОџэѕђє№ќ™#_нќ№ѕѓъ }€-~{ŠE‚џъїэ§А?$:ŒђїюѓяѕщџZБџћћџl"дџўџїіљќ‚џўўџўџњџв€J12yџъіёђѓюџёЬЦфџѕэјъџЅ9‰{~€~‚u чѓёѓэќќёњџяэђяёяёцхџ§џќї:fШњџ§јіљўџџўžџ§џыe|™ВЬтђџь2ѓяђ€ёBѓъ№ћћєъяѓѓэ§He…}€~{‰9ƒџщѓёыъяышёёяяђщџЂHџљџџўќѓD(WˆКу§џїћџўЅџўџѕџ]Дўъђя№№єёььяєёёьћС!…}€$€~‚s иєюяёђ№ёѓяюяю№щљAЇџјџўџўњџ‘ƒ .S„Нёџ§њџўžџ%ўїііјњћџљџГTўшђюяяюяёё№яюђъ§NUˆ{~€~{‰BN§чѓьэююэююь№щњГ ђƒџ§њџ№œK„RаџіџўЅџ ўџ№Фјыяэƒю эёщќА‚}€…~€‰џтє€ьэ€ь №чє1џїџў‚џ ї§џџёШ–d>  Ўџіџўўœџ„ў џјџtEњцђы€э юэьяяьь$\‡|€„€}…gЈџря№юээю№пџu*ї§„џўџўіљ‚џ єдЅl,ƒџїЈџѓџсѓь€ы ьяяфџU.ˆ|…~{‰M  џщфчщшцуџ—Вџјџўƒџў€џўњііњ€џќџ Z§њЄџўџјџœ Йўпэюяяэчцџr…€ˆ~{ˆ@ qы§ѕяђљј‚xџіџў†џўўƒџ ћіјљџ­ NќїЄџўџљџd Гџыхтучііfv™~€ˆ~zK#„РжЬ7eџјџўŠџў‚џіџбOџќІџњј6 sпљўќ№Д0 UŽŠ}€Š‚_ eџјџўџў€§ ўџіџп oџњџўЁџ ўџ§ћё4 Rmd2€)S“~Š}† lЎџљўŽџ€ў‚џ ўџјџзLўўЄџўџўњћg‚ #N<<€–‚~‰~„’“yB0?P>fЎѕџљўŒџўўџ §јјњџќіџѕџА‡џњІџўџ§љџЬM  *„џ />d™ˆ}€ˆ~‚˜~?3}џњџўџќјџўˆџ€ўџќїњ„џўќќ§џљўЇџўџ§љўџчЫ™ОрџќџЭ:;R•’Œ}€‰€“ŠG6Oєџњѕјўџў„џў‚џќїћџўџэИŽuTlŠжџћќїЋџўџљј‚џ ќї§њW5J”~Š ~Ž’“O<<вџћџўў§ƒў„џќјљў€џтЄtF1/16203ДџћџўŽџ†ўџўўџџ§њіљќџџ§ўZ5Eˆ•ŽŠ €}Š‘˜g=1wџє§‡џўќњїљў€џћнІg=/2:>?BEBB>9нџћџўў‡џ‚ўŒџўў‚џ ўџ§§[4F‰•‹ ~„’”ˆ>A4Аџћўї„ј§ў‚џхМ…U?EUl~…ŠR?2џљџўџљƒјћ§…џў€§ ўџ§§ьI8J“~‹ ~—i5B2†цў„џўџњуЩЁ|[B116;=?H\uŠ–——“™ˆ@9OѓџўŒџ§њ†џўљјјћќў‘џ ўћіџ 1=[™Š}€Š$~…“‘“Z5A3;m„ЂКБЙЃ†aU?5/159=>BN`yŽ——“€‘ ’”R:;пџќџў‰џ ў§§Ъ”‚ˆ—Йжяџўџўўљјћ†ќњјјњџ§џЃ7B8€–‘„~Œ~‹“‘“d€<3/ƒ0/45:<>@EN[p„’˜–“€‘ ƒŒ’˜_=3Мџљџўˆџўџёw/1./0019H^z™Зйуљџўџ їСc0A3h—‘Ž~ Ž”‘—ƒ_IB@>€=>@ACIP[hx‡’—˜•’€‘Žˆ„‚‚~ˆ‘˜g>/Гџјџўˆџ2ћџu'G=;85100<>W[~‡­ЗДкупццрсспфЯД›sP35?8h•‘’‚~Œ””˜vkihhmtzƒŒ“—˜—•’€‘‹†‚€‚ƒ„ˆ‘˜l>1Жџјџў…џ"ўџњџФ0G:f}|uk^SJDA>>::550/110?:€0 50Еџјџў…џўџљџƒ2;gž•——˜—”Ž…ym`VNIDB@€=98:99: 8:=?EP`{”–‘‘ƒ~“~…Œ„‘ŽŒˆ…~}~€ƒ„„ƒƒ ‚‰˜m>0Еџјџў†џ ўџєN8D‡’’€‘$’“•—˜˜•’Œ†}ukd_\WSONNPQRYaju„’™˜’‹€~”€}}€‚…‡€ˆ ‡…„‚€~}}~ƒƒ„†ƒ ‰˜k>0Еџјџў„џўџќџп<;P““ƒ…ˆ‹Ž‘’”•—˜—–•“’“””•—˜™™–“‰‚}™€~~ƒ}~~€‚Œƒ ‚Š‘˜g=0Еџјџў„џўџљџЛ3=\—‘‹|~}}~‚…‡ŠŽ€‚‘’’“’ ‘‹ˆ„€}~€Ё€€‚Žƒ „Œ‘—]=1Еџјџў„џ ўџјџГ/>g˜‘‰}€€~~}}~~‚…‡ˆ‰‰Š€‹ ŠŠ‰ˆ‡…ƒ€~}~Ђ€‚’ƒ „‚’’O;;кџћџў„џ ўџјџ˜0>n˜‘‡}€ƒ€€~~Š}~~€š€€‚‚—ƒ „‡’•‚A6Z§ў‡џ ўџјџ/@u—‘…~ŒŠ€“€€€‚Ÿƒ „‚ƒ“˜^=1“џјџў…џ ўџјџ‡/Ay—‘„~…~ƒ‚€‚‚­ƒ „’•€9?5гџћџў…џ ўџјџ„/B}—ƒ~ށ€€‚Нƒ‚‚ˆ““ŽEF5…џљџў†џ ўџјџ‡.E€—€~†€€€‚Чƒ‚‚†“•ŒL<.Bяџўџўў…џ ўџјџ‚/B~•‘Œ~~€€‚‚Эƒ‚ƒ‡’‘’—€H:=Zчџњіњџў…џўџљџ“/>\šŽ“‘ˆƒ‚ƒƒ„„Щƒ‚‚ƒ†Œ‘’—e>8E+HЅбџ§џјќ…џўџєџЩ5B9k—“’‘‹†‚‚ƒ„„Рƒ‚‚‚ƒ…‰€‘”—ŽpJ7=?:2'pаџњ§ƒџ ўџњџЗC;;Z‡—”€‘Œˆ…‚‚‚€ƒ„­ƒ‚ ‚‚ƒ…†‰ŒŽ€‘’”—”…jI7:@=7-/9@3`ёўўџўџљџ› *:=?7Ad„•—”’‘‘‹ˆ…„‚‚‚™ƒ…‚€‚‚ƒƒ„…†‡‰ŠŒŽ‘’”——’…qV?7:@?91,-,($-9? 6юў€џўџњџШ ;3,5;@<6>Vp†“——•’‘‘€ Ž‹Šˆ‡†…„ƒƒƒ‚Š‚€ƒ„„……††‡ˆˆ‰Š‹ŒŽ€ƒ‘’“”•——•†wdO?78=A>81-,€-+/0-)'9-UџљџџўџћџG1/(0+/6=A>77?Qdv†•——–•“’‘€Ž‚‡Ž€ƒ‘€ƒ‘’’“”•–€—•’ŽˆugYL?869>A@;4/-,.-,,,.00(6Лџљўџ§џщ >'0+.,,/3:@A=968?KWes†’•—––••”“‚’ƒ‘„’€“””••€–—––”’Œ‡‚}wmcYPHB<867:>@A>940-,-.†-9+.,/9zџїўџћџл3+..-.-,,-04:>@@>:767;@FNW_fnt{€ƒ†‰Ž‘’““‚”•”€“/‘‹‰‡„‚|yvrlf`ZUOJEA=:86779;=?@A?=941.--,,..,‚-,€-:./--/cџїўџћџм7*/,--,-.-,,-.159=?AA?><:776689;=@CEHJLNQST€U€V*UTTSRQNLIFDB@>=;:987667789;<=?@@A@?><:641/-€,-..ˆ-,€-.--5dџїџњ >(0/,‚-..--€,-.0368;=?@@A@@??>=<;;::9ˆ8€9 ::;;<==>??@AA@??=<;976420..‚,--.-+2)30—џїџўџјџ&6%/0/.--,-€.--‚,-./1135678:;<<==>>†?>=<<;::9776554210/..-,-,+,ƒ-.-,,--//1),9щџ§‚џя5)>+&(,-0/..-,€-..-.-,+„,-,-Œ.‚-„,--,,‚-.-€.-.-.ˆ-,--,-./.0/-*'&6:›џњ‚џўўю> 2?90*&'),./0€/€-,„-..--..˜-.-.--.•-,--.//0/.-*(&(,4=>џјџў€џўџќњў“ ,9>:4/*€&))-,00/1€/./€-.,-,-,,ƒ-.-6,,--,-,-,-,-,--,,--.--./.0/00.1--+)(&&(,27==3# Oзџїџў„џ ќњџќШs6 )4€<84/-(€& %'*)(-.-,/1€/020//0€/0//.-‰.-.€/0//00/011€/ 01-,-.*(*)%€&'+.17:==9/"Rœъџ§њџў„џ0ўџџїћџўџъРZ//17@9>>:8641--+*(%'&''&&%&%&*)*))€'€(''())*€)0*($&%%&&(%'&&)*,-/2578?<:89988478‡6*795688989;>?<<>:;A;9106-  %,VsœМу§џќіі§џџў‰џўџ§љѕѕћўџ§џязޘЂ‚SbD#+ € "!ˆ !!€ #( *\Xb—Бкмџўџў§јєїћў€џўўŒџўўƒџ§њіѕєјќ§†џўџцеижЫ›œ˜›YZZ€[\Y_7$!‰"R]Z€[Z\Uqž—œž–Бидйзљџў†џ§ћ€ѕљќƒџ€ў‘џў…џ §ћњііѕѕєјќќ§ўДџ§ќќћѕіїћћ…џў›џ‚ўŠџќћћњљ€іˆѕєљŒќі‰ѕііїњњћћўŠџ‚ўЇџ…ўМџ…ўЙџ‘ўџ‘ўџџžџџџџџџџџџџџџџџџџџџџџџЁџ‹ўыџ€ўџ€ўфџ€ўџќљіїїіјћ‚џўўпџўў€џћії§‹џўјіњ€џўўлџўўџџќіћ€џќфХŸ‚scVZbh{œЙињ€џќіћџџўўиџўџџљј€џкž^( ‰ #SŠвўџџјјџџўўдџ ўўџљљџџт9    0|йџџњљџўўвџўџћљўџЬW € ‡ €OМўџљћџўЯџўўџљћџЪF  -=<5) @ЧџќљџўЭџ ўџ§јџщc€OГбѕџўџёмРŒW WчџјўџўЪџўџ§љџІjРєџѓзжьџџљ§џјПrЇџј§џўШџўџћќѕa1Єє€џ єџзm9**;oЫў€њѕјўџџєЄ6bњћќџўЦџ7ўџљџр- ,ДќџўіњћўЅ.&'($iёџўџџўјіўџў­) 9цџњџўФџ$ўџјџЬ љџћї§џљџƒ.*4BB6*2Qѓ§ўў€џўіќџћ†йџњџўТџ%ўџјџУ  9мџњљџўџљџБ5%ImqrlO$6gџјџ€ў€џљњџг0 иџњџўРџўџљџЬ  tџќјўџ€ўџю9(&Nxn€ou^#4 џїџўџџўўџўјўјY пџћџўОџўџћџй•џі§џ€ўџїџ‰-=vlofgpluV%+5цџ§џўў€џ ўџќіџ{ 3ѕќТџ ќѕ2Љџєџў§€џ,ўџѕB%-fqo^TU]pmu@+xџљџўџўћћњљ§џїџ WџјџўМџўџјџ^  џєџў€џўџјџž,CtoeTYXU]opj--"Яџћџѕќџ§їџїџu –џїџўКџCўџїџЃ ‹џєџўўії§§ўє§N"-_slYVWVYTdotN+џђџџљезЩЮђџ§ќјџRлџќџўКџўџч[џѕџўі§џџўџќџм,&:ppfUX‚Wjqj1&2рџъ…$kуџљ§ё'NџљџўИџўџјџe(ђћџ§њџєŒO*+$^e%*Jvm_UX€W XU`nuI.Цƒ}џѓџМЗџљџўЖџўџћџЯЗџљџљў’ #hpmY„WXjrf-(2:fgB _џ№џn>џћИџўџјџ\bџјџќя<'Dyf„W"XUapq@ 7Оѓќ§ібb Mј§фЖџљџўДџ!ўџћџа иџњџё3 HЌлчиЃ6ClRYV‚W!V[ltV ^љєцутц№џВ ZћџƒVџјџўДџ!ўџїџwjџїџя2 Ђќїюъюљї| ?\UX„W ey(Sўхчюяяюытќа yџл мџќџўЖџѕ#бџѕџL ЫўтчъыщцфџMZVX€W VYSfV#щыь№€ыьэѓуњШ Бџ[џїџ§ўБџ#ўџјџЖDџђџ› Чћтђюэьэя№рџs\UXW"XT`Њћч№ыээююэьєфџ "џЛLџљџўВџўџіџužџњыџфєыь€эьэ№чѕ6;]UXWWXU\AEљщёэю€яэєчџZ‚џюџњњјГџќџ6т§џ…Sџчѓьƒюэ№ъјНYVXWWXT^"Њўщђюя‚№яємєUТџљџўАџўџќџт 8џ§№жѕэ№…яюђщ§S=]UXWWXQ)юя…№€ё№єщџ}Љ˜џеЦИџўЎџўџљџПpџџ”rџщєя…№яђъќИ]UXXU]=tџщѕ№ƒё‚ђёєт*uіЏџўџіџ˜–џє5ејяђˆёђэі6 NYVYT^(Еџыѕё„ђ€ѓђіыџv ‚уџќџўЋџўџіџsЕџЕ^џыѕё‡ђёіщџ‚6^TYUYхєё‡ѓ єєѓіёћв ЯџњџўЋџўџіџcЪџbВџэіђ‡ѓђєюќЩ!]UXXOBўюѕѓ†є€ѕєјяџH€ЕџјџўЊџў§џїџWм§"+№ѓŠєѓѓєёѓ)TXV\Dmџьјѓˆѕ іѕљюџœ€œџіџўЋџўџїџIэХjџэљєˆѕєѓјьџ] G\S_8”џэљєѕ‡іїїјє§о  €џіџўЊџќљџїџW№‹Ўџяљѕ‡іѕѕєљэџŽ9_R`/Дџ№љѕіŠїњѓџA dџіџў­џхчK1тћѕј‡ї€іѕљ№џЛ,`Q_'Ыџѓљіїїˆјїќ№џ|KџљџўІџўџљџЎ,(;џѓњї‡ј€їіјєўи !^R_! кџѕљїјјˆљјќѓџЕ0џќЈџ ўџіџœ € hџ№§ј†љ„јљяZS]фќїњљ‡њљћїџр ‚їЉџўџљџО •џё§ј…њ„љћіќ0WU[ъќјћњ€ћ‚њћќљћ(‚ фџќџўЅџўџњџгƒ Кџє§љњћњљњљќєџDSVZюќљƒћќћ§џ ћќќћџѕџNаџњџўЅџўџ§џч„жџї§њћњ§џќњћћњ§ѓџQOWZьўњќћ‚ќџћѓіѕѕў§§ћџѓџl ЗџјџўЉџњ щџњ§‚ќџњѓѕѕѓњџћќњџѓџY MW[шџњ§ћ§џј§џљќ§ќџѓџžџіџўЈџћџ4і€ќ§џї§џ§їўћћџєџ^ LW\# оџљў§џљџч‡RWЌџњўќџєџЁ ‚џіџўІџўџјџP+џљў§?џљџцŠSPсџљўћџєџZ MW](бџјџќ§§џјџЄdџљ§џѕџБ eџіџўІџўџіџi 3џљў§§ќџљџž €8 ЅџјўџѕџUNW^/Йџіџќќџїџ‘  ’џєџєџЛLџљџўІџIўџіџ… 7џјўћќџїџ‰ЌџїџѕџHRV^8œџєџњџїџЗ #ѓћўіџП1џќЈџSўџїџ 6џї§ћўїџИ я§§љџ7VU]Bwџђџњќћї*НџїїџСїЉџKўџјџК/ўїќњќј§6 ˜џѓўі$XUZM Mџє§§єџЁ –џѓїџЙ хџќџўЅџўџњџг%љјњ§єџП€9Uџёџс\UXW%їљњ§ѓџO‹џѓѕџАбџњџўЅџўџ§џц ‚ ьћї§№џ‰ €-9џёџЧ(^UV]!аџѕћјє œџѓѓџž‚НџљџўЉџљ‚ оўє§яџo€@џьџŸ4^VU^3œџёњќуƒШџі№џ‰ 1xДХоїџўЊџќџ3 Хџё§юџ} €hџчџrB\VV[FXџёљњх€0јѓћэџh СџГџјџўЊџўџјџNЅџэ§яџЋ€5Дџьџ=PYWXVWыјіѕї. —џьћюџK шџМtџђў§ЊџSўџіџg  {џьњєїь ?§ёќт[UXXT^'Џџђ№џl  =љёієєю(6џџё6§ќџўўЉџTўџіџ„ Kџюїїюџ• ЯџыџЋ+^TXWU\A\џяєћЯкј№іяќЯ Hџѓџ`ЊџѓџўџўЄџTўџїџŸыѕєєіяџlП§ѓяџeA\UXWWVXлјєюџ“-зњяѓѕыџ›gџђџЩшџіњў‚џ€ў џ ўџјџЙОџэѕђє№ќ™#_нќ№ѕѓыUW,XT_.ƒџъїэ§А?$:ŒђїюѓяѕщџZБџћћџl"дџўџїіљќ‚џўўџўџњџв€12yџъіёђѓюџёЬЦфџѕэјъџІ&_TX€W'VYP чѓёѓэќќёњџяэђяёяёцхџ§џќї:fШњџ§јіљўџџўžџ§џыe|™ВЬтђџь2ѓяђ€ёѓъ№ћћєъяѓѓэ§HD\UX€W,XT_&ƒџщѓёыъяышёёяяђщџЂHџљџџўќѓD(WˆКу§џїћџўЅџўџѕџ]Дўъђя№№єёььяєёёьћС[UX‚W#VYOиєюяёђ№ёѓяюяю№щљAЇџјџўџўњџ‘ƒ .S„Нёџ§њџўžџ$ўїііјњћџљџГTўшђюяяюяёё№яюђъ§O9^UX‚WXT^,O§чѓьэююэююь№щњГ ђƒџ§њџ№œK„RаџіџўЅџ ўџ№Фјыяэƒю эђщќАYVX†WX‰џтє€ьэ€ь №чє1џїџў‚џ ї§џџёШ–d>  Ўџіџўўœџ„ў џјџtEњцђы€э юэьяяьь$?]UX„WXV[GЈџся№юээю№пџu*ї§„џўџўіљ‚џ єдЅl,ƒџїЈџѓџсѓь€ы ьяяфџV]UX†WXT^4 џщфчщшцуџ—Вџјџўƒџў€џўњііњ€џќџ Z§њЄџўџјџœ ЙўпэюяяэчцџrcŠWXT]-pы§ѕяђљј‚xџіџў†џўўƒџ ћіјљџ­ NќїЄџўџљџd ГџыхтучііfYtX‰WVYSg9#„РжЬ7eџјџўŠџў‚џіџбOџќІџњј6 sпљўќ№Д0 ?wmcTXˆWXV]yH eџјџўџў€§ ўџіџп oџњџўЁџ ўџ§ћё4 Rmd2:mqiV‰WXU_kzNЎџљўŽџ€ў‚џ ўџјџзLўўЄџўџўњћg‚ $A')_rm[VˆWXV]opW.8Q>fЎѕџљўŒџўўџ ќјјњўћѕџѕџА‡џњІџўџ§љџЬM  +ƒџ—-HunbUXˆWV[mu\-oџљџўџќјџўˆџ€ўџћїњ„џўќќ§џљўЇџўџ§љўџчЫ™ОрџћџЩ%)9qpgUX‰WYlqf1#>ѓџњѕјўџў„џўџўћјћџўџыВƒgC]бџћќїЋџўџљј‚џ ќї§њF"4jqiVŠW Vipo6*(Юџњџўў§ƒў„џќјљ§џўџп›g3#ЌџћџўŽџ†ўџўўџџ§њіљќџџ§ўJ"0frjŠW XUeotI+jџєќ‡џўћљїљ§€џћйX*(--/0/1+&кџћџў‹џўў‡џ‚ўŒџўў‚џ ўџ§§K!1grjŠW XU]oqe)/ Љџњ§ї„јќ§‚џтЖzC( *--0:L[bh8-sџјџўџљƒјњ§…џў€§ ўџќўы6%4lqhV‹W VknsK#/zуў„џўџљрԘoK/#*-,0?Sfqsspue,&>ђџўŒџќњ…џў§љјјњћў‘џ §ћѕџ—+AtodUX‰W3XV^pno?$/'^x™ДЊГšuzRD,!!',,.5CWirsqoonomo9)'мџћџў‰џ ў§§ХŠu|tГвэџўџ§§љјњћћќќ‚ћњјјљџ§џš#.&`rn]V‹W XUgqnoG(+*„ #(+--06?Pamsspoonki]gosB,Жџјџўˆџўџ№i%6NmБжрљџўџ іКS."MsniVWjqnr`C2..,"-.//38?IWcmstrpoonic^[[VbotI-Ќџјџў†џ4ўџћџg5*0/--,*&!(*FKr{ЅБ­зрмфумоомтЫ­‘e? -&Ornp[VW.hqnqtk^TLJJINSX`hnrtsrpoonkf`[YZ\\^[botL,Џџјџў…џўџљџО5%HZZTLA93/.-,))"! (,(//(+**,%€ "+.:`rnq^VXWV`moops„t srqpoonmjfa[WVY[]]\\]ZbntN-Ўџјџў…џ ўџјџw*Ixr€t sojaWMB<630/.€,('(''(&(,.3;H^rrom\VX‘WXUW_glmn‚onnmlifc^YVUUY\]]‚\ ]ZcntM-Ўџјџў†џ2ўџѓ<%/dplonoopqrstspmhb[TLGCA>:8778:;AGOWdottpmfXVX“WXWUUX[^€ab`^][XVUTUWZ\]]\[[‚\ ]ZcntL,Ўџјџў„џўџћџм(*7npl[_bfilmnooppqrstrrp€oppqstuuspmjcZUWX–WXXWV…UVWXYZ‹\ ]ZdntI,Ўџјџў„џўџјџЕ,@rofTVUUVXZ^aehjklnn‚o„p onljgb]XUVXWXWW€XYZ[[\ ]ZgosA-Ўџјџў„џўџјџЌ-HtocUYXXWWVU VWY[^`acde€f eddc`^[XVUVWXŸWXXYZ[’\ ]Zkpn6*&зџћџў„џ ўџјџŽ-Nto`UX‚WXWWVVŒUVW€X™WXXYYZ[[—\ ]Zbpr_-"I§ў‡џ ўџјџt.Ttn^UXŠWŒX€WVVŒWXYY€Z€[ž\ ][]pmtA-ˆџјџў…џ ўџјџ{/Wsn\VŽW‡VWXY€Z‚[Ћ\]Z^omr]%-"Яџћџў…џ ўџјџx/[sm\VŽWXXYZZ[Л\][[cpnqi-5!yџјџў†џўџјџ{1]smYVXWVVWXXYYZZ[[Х\]\Z[`kpmrg3+1юџўџўў…џўџїџv/[rngVVXY€Z[[Щ\]]\[Z\bkonor]0))Hуџњіњџў…џўџјџˆ-?umpmc\Z[€]Х\]]\\[ZZ\`fmonoskG*'0EЅЯџ§џјќ…џўџєџХ!/&Lrpnomf_[ZZ[\€]И\]!\\[[ZZ[\_chlnooqsjP2&+)+6  'mаџњ§ƒџўџњџЗ.)(>dsqonnlgb_[€Z[€\‚]Ѓ\‚]\€[€Z#[[\^`cfilnnopqsoaK2&)+*.34?H<`ђўўџўџљџœ50),&,Gapsqoonmkhfb_][[‚Z€[ƒ\„]Œ\„[‚Z-[\\]^_acegiklmnnooprsrmbQ;+&(+*,2645/,1?J,5юў€џ*ўџћџЩG560)+*&*4+'&'*++,.255445543546:-?$Нџљўџ§џъ A1944653.€+*'%&+4=HR\cimprsr€q…po…p€qr‚srrqomjgc_[UNF>72-)'&&(*€+,.146544€5€4553572Byџїўџћџм"=0545€4 541.,,++)(€&(,06=CHNSY]`cehjklmnˆo€nmkjigeca_]ZXUQMHC?;63/,*('€&'()*++€,.136545545ƒ45440Caџіўџћџн#>16445466430.€,++*)('&&%%&'(*,.023568::€;€<;::9986420/-,+*((''&%&'())**€+€,--/0245€6 5445545545545‚460Ebџіџћ A0:445€4 55445565421/.-,+**))€(‚'„&ƒ'€(€)*‚+ƒ,-../01234566565‚455445€455€45539556—џїџўџјџ::*8665€4€5€4 5455665542210/€.--,--”,--./00112334€5665655„45455455€454€5€4 5682+H ъџў‚џя5;F0.04677654434454453554665€6‚5€4‚3€2…34‡5€6…545€4€54€54644535ƒ45€7 52.-9Jœџњ‚џўўю>BG?3/-/246€765463552552464345543466554356‚54433€43€4ƒ54345665445653455346336355466€7631-.09CI-žџјџў‚џ(ќњџ’ #9DDA;4/--.12466767765754465334554€35654„345„6543€45654€3)4553345544665686675622/.,.18>DDA-Lиџїџў„џ(ќћџ§Хq6 &6?ECB?8702--/.-03116745788578766755677‚6€7‚6766567567)8579874674032/-/.,01299CAFB<. "Q™щџ§њџў„џwўџџїћџўџшО[0 .1B=EFC@B@78:5,104++.+/1.-/.,.21121232114431123121120,,/.-/1-,.)121//:97;BAAEG@?<-( 'BtІгљџўџїћџў†џў€џљєљ€џ/§џяаІ‹`F&  +/)6D=>AA,,/"  %1UtšКр§џ§іі§џџў‰џўџќјѕѕћўџ§џюгЯ–Ÿ‚SbD#*)  $€1?9‚216<<%"     !+&,\Xcœ”Бийџўџў§јєіњў€џўўŒџўўƒџ§њіѕєј§§†џ §џхбежݘ˜›˜œ€Z€[\Z`8*,+ƒ)*,,$!S^[Z\UrŸ—š›’Акгедљџў†џ§ќ€ѕјћƒџ€ў‘џў…џ§њњѕєј€§ўДџ€§ћ‚ѕїњћ…џў›џ‚ўŠџќ€њљŠѕіѕњќ§ўў„§ўўќќїіі‰ѕїњўŠџ‚ўЇџ…ўМџ…ўЙџ‘ўџ‘ўџџžџџџџџџџџџџџџџџџџџџџџџЁџ‹ўыџ€ўџ€ўфџ€ўџќљіїїіјћ‚џўўпџўў€џћії§‹џўјіњ€џўўлџўўџџќіћ€џќфХŸ‚scVZbh{œЙињ€џќіћџџўўиџўџџљј€џкž^( ‰ #SŠвўџџјјџџўўдџ ўўџљљџџт9    0|йџџњљџўўвџўџћљўџЬW € ‡ €OМўџљћџўЯџўўџљћџЪF !-=<5) @ЧџќљџўЭџ ўџ§јџщc€OГбєƒџёмРŒW WчџјўџўЪџўџ§љџІjРєџєлйэџџљ§џјПrЇџј§џўШџўџћќѕa1Єє€џ"ѕџк{M@@O}аўћњњѕїўџџєЄ6bњћќџўЦџ7ўџљџр- ,ДќџўіњћўЎC6::;853wѓџўџџўјіўџў­) 9цџњџўФџ$ўџјџЬ љџћї§џњџ'C>NbaP>F.bє§ўў€џўіќџћ†йџњџўТџ%ўџјџУ  9мџњљџўџљџЙ0I:i—œœ–r:I.vџљџ€ў€џљњџг0 иџњџўРџўџљџЬ  tџќјўџ€ў)џ№M>9mЂ•—––Ÿƒ:H.ЊџјџўџџўўџўјўјY пџћџўОџўџћџй•џі§џ€ўџјџ”2@XŸ“˜‘‘™“Ÿx9@Hшџ§џўў€џ ўџќіџ{ 3ѕќТџ ќѕ2Љџєџў§€џ,ўџіU:BŠ™–‹‚ƒ‰˜”ž[>3…џљџўџўћћњљ§џїџ WџјџўМџўџјџ^  џєџў€џўџљџЇ1>^–‚††ƒ‰—˜CA9гџќџѕќџ§їџїџu –џїџўКџўџїџЃ ‹џєџўўії§§ўєќ_8@ƒœ”‡€…"†ƒŽ–žl>4џѓўџљезЩЮђџ§ќјџRлџќџўКџўџч[џѕџўі§џ ќџрA;T˜—„†‚…“™F;Gуџъ„$kуџљ§ё'NџљџўИџўџјџe(ђћџ§њџєŒO*+%]l==i •Œƒ… †ƒŒ•žeA.ЇХƒ}џѓџМЗџљџўЖџўџћџЯЗџљџљў’5˜•†……“šŠA@?:fgB _џ№џn>џћИџўџјџ\bџјџќя<'^ЃŽ†ƒ…"†ƒ—™Y/ 7Оѓќ§ібb Mј§фЖџљџўДџ!ўџћџа иџњџё3 HЌлчиЃ6Z™ˆ„‚…!„ˆ“žt ^љєцутц№џВ ZћџƒVџјџўДџ"ўџїџwjџїџя2 Ђќїюъюљї{ ^‚‡„‚…!†Ѓ8Sўхчюяяюытќа yџл мџќџўЖџѕ#бџѕџL Ыўтчъыщцфџv‰ƒ†€… „‡€”t#щыь№€ыьэѓуњШ Бџ[џїџ§ўБџ#ўџјџЖDџђџ› Чћтђюэьэя№рџs%Œ‚†€…#„‡(Њћч№ыээююэьєфџ "џЛLџљџўВџўџіџužџњыџфєыь€эьэ№чѕ6[ށ‡„…†‚ŒeDљщёэю€яэєчџZ‚џюџњњјГџќџ6т§џ…Sџчѓьƒюэ№ъјМˆƒ†…„‡5Њўщђюя‚№яємєUТџљџўАџўџќџт 8џ§№жѕэ№…яюђщ§S_Ž‚†……†})юя…№€ё№єщџ}Љ˜џеЦИџўЎџўџљџПpџџ”rџщєя…№яђъ§З-ށ††‚Ž_sџщѕ№ƒё‚ђёєт*uіЏџўџіџ˜–џє5ејяђˆёђэі6yˆƒˆ€>Еџыѕё„ђ€ѓђіыџv ‚уџќџўЋџўџіџsЕџЕ^џыѕё‡ђёіщџ‚Uˆ‚‰%хєё‡ѓ єєѓіёћв ЯџњџўЋџўџіџcЪџbВџэіђ‡ѓђєюќШ3ށ†‡{Bўюѕѓ†є€ѕєјяџH€ЕџјџўЊџў§џїџWм§"+№ѓŠєѓѓєђѓ*†ƒŒimџьјѓˆѕ іѕљюџœ€œџіџўЋџўџїџIэХjџэљєˆѕєѓјьџ] nŒX“џэљєѕ‡іїїјє§о  €џіџўЊџќљџїџW№‹Ўџяљѕ‡іѕѕєљэџX‘}’IГџ№љѕіŠїњѓџA dџіџў­џхчK1тћѕј‡ї€іѕљ№џКD’|’=Ъџѓљіїїˆјїќ№џ|KџљџўІџўџљџЎ,(;џѓњї‡ј€їіјєўз 3‘}‘3 йџѕљїјјˆљјќѓџЕ0џќЈџ ўџіџœ € hџ№§ј†љ„јљя %‹Ž/у§їњљ‡њљћїџр ‚їЉџўџљџО •џё§ј…њ„љћіќ1†Œ+ъќјћњ€ћ‚њћќљћ(‚ фџќџўЅџўџњџгƒ Кџє§љњћњљњљќєџD€ƒ‹*юќљƒћќћ§џ ћќќћџѕџNаџњџўЅџўџ§џч„жџї§њћњ§џќњћћњ§ѓџR{…‹-ыўњќћ‚ќџћѓіѕѕў§§ћџѓџl ЗџјџўЉџњ щџњ§‚ќџњѓѕѕѓњџћќњџѓџYx…Œ/чџњ§ћ§џј§џљќ§ќџѓџžџіџўЈџћџ4і€ќ§џї§џ§їўћћџєџ^v…Ž5 нџљў§џљџч‡RWЌџњўќџєџЁ ‚џіџўІџўџјџP+џљў§?џљџцŠSPсџљўћџєџZx„Ž=аџјџќ§§џјџЄdџљ§џѕџБ eџіџўІџўџіџi 3џљў§§ќџљџž €8 ЅџјўџѕџVz„IИџіџќќџїџ‘  ’џєџєџЛLџљџўІџIўџіџ… 7џјўћќџїџ‰ЌџїџіџIƒW›џєџњџїџЗ #ѓћўіџП1џќЈџSўџїџ 6џї§ћўїџИ я§§љџ8…‚gwџђџњќћї*НџїїџСїЉџKўџјџК/ўїќњќј§6 ˜џѓўѕ%#ˆ‚‰wNџє§§єџЁ –џѓїџЙ хџќџўЅџўџњџг%љјњ§єџП€9Uџёџр/‚†…&іњњ§ѓџO‹џѓѕџАбџњџўЅџўџ§џц ‚ ьћї§№џ‰ €-9џёџЧ>‚ƒŽ3аџѕћјє œџѓѓџž‚НџљџўЉџљ‚ оўє§яџo€@џьџžRƒƒO›џёњќуƒШџі№џ‰ 1xДХоїџўЊџќџ3 Хџё§юџ} €hџчџqgŒƒ„‹l Xџёљњх€0јѓћэџh СџГџјџўЊџўџјџNЅџэ§яџЋ€5Дџьџ>|‡„†„…ыјіѕї. —џьћюџK шџМtџђў§ЊџSўџіџg  {џьњєїь ?§ёќт(‹‚†‡<Ўџђ№џl  =љёієєю(6џџё6§ќџўўЉџTўџіџ„ Kџюїїюџ• ЯџыџЊB‡†‚e[џяєћЯкј№іяќЯ Hџѓџ`ЊџѓџўџўЄџTўџїџŸыѕєєіяџlП§ѓяџdf‚†„†„†лјєюџ“-зњяѓѕыџ›gџђџЩшџіњў‚џ€ў џ ўџјџЙОџэѕђє№ќ™#_нќ№ѕѓъ ƒ€…-„‡H‚џъїэ§А?$:ŒђїюѓяѕщџZБџћћџl"дџўџїіљќ‚џўўџўџњџв€J12yџъіёђѓюџёЬЦфџѕэјъџЅ<‡„…†„ˆz чѓёѓэќќёњџяэђяёяёцхџ§џќї:fШњџ§јіљўџџўžџ§џыe|™ВЬтђџь2ѓяђ€ёBѓъ№ћћєъяѓѓэ§HjŒ‚†……„‡;ƒџщѓёыъяышёёяяђщџЂHџљџџўќѓD(WˆКу§џїћџўЅџўџѕџ]Дўъђя№№єёььяєёёьќС#‹ƒ†…$†„ˆy иєюяёђ№ёѓяюяю№щљAЇџјџўџўњџ‘ƒ .S„Нёџ§њџўžџ%ўїііјњћџљџГTўшђюяяюяёё№яюђъ§NY‡„€…„‡EN§чѓьэююэююь№щњГ ђƒџ§њџ№œK„RаџіџўЅџ ўџ№Фјыяэƒю эёщќАˆƒ†……„†‰џтє€ьэ€ь №чє1џїџў‚џ ї§џџёШ–d>  Ўџіџўўœџ„ў џјџtEњцђы€эюэьяяьь$a‚‡„ƒ…†‚‹l Јџря№юээю№пџu*ї§„џўџўіљ‚џ єдЅl,ƒџїЈџѓџсѓь€ы ьяяфџU1ށ‡„„…„‡P  џщфчщшцуџ—Вџјџўƒџў€џўњііњ€џќџ Z§њЄџўџјџœ ЙўпэюяяэчцџrІˆ…„‡B qы§ѕяђљј‚xџіџў†џўўƒџ ћіјљџ­ NќїЄџўџљџd Гџыхтучііfzž„†ˆ…„‡€•M#„РжЬ7eџјџўŠџў‚џіџбOџќІџњј6 sпљўќ№Д0 XЂ“ƒ†Š…ˆЃb eџјџўџў€§ ўџіџп oџњџўЁџ ўџ§ћё4 Rmd2€+V•˜“„Š…ƒŒ‘ІoЎџљўŽџ€ў‚џ ўџјџзLўўЄџўџўњћg‚ #P>=…›•ˆ„‰…„‰—˜~D2?P>fЎѕџљўŒџўўџ §јјњџќіџѕџА‡џњІџўџ§љџЬM  *„џЁ1@hž•Žƒ†ˆ…„ˆ”ƒA5~џњџўџќјџўˆџ€ўџќїњ„џўќќ§џљўЇџўџ§љўџчЫ™ОрџќџЭ<=Uš—‘ƒŠ…†•˜I8Pєџњѕјўџў„џў‚џќїћџўџэЙvVmŒжџћќїЋџўџљј‚џ ќї§њY7L’™’„Š… „“—™S=?гџћџўў§ƒў„џќјљў€џтЅuH3238425ДџћџўŽџ†ўџўўџџ§њіљќџџ§ў\7Gš“Š… †ƒ–k>3xџє§‡џўќњїљў€џћнЇi?24<@@DGDC@;нџћџўў‡џ‚ўŒџўў‚џ ўџ§§]6HŽš“‹… „Š—™@C6Бџћўї„ј§ў‚џхН‡V>26>@AHYqƒŠUA3џљџўџљјљљ€јћ§…џў€§ ўџ§§эK:M•˜’„‹… „”•œm6D4‡цў„џўџњуЩЂ}]D438=?AJ`z›œ˜žB:QєџўŒџ§њ…џўўљјјћќў‘џ ўћіџЁ3?_ž•ƒ†Š…$„Š˜•˜^6C6=n…ЃЛВКЄ‚‡cVA8237;?@EQd}“œœ˜€– —”™V<=пџќџў‰џ ў§§Ъ•ƒ‰‚˜Кзяџўџўўљјћ†ќњјјћџ§џЄ9D:…›–‰„Œ…„‘˜–˜i€>51322167;=@BGQ_t‰—œ˜€– •’‰‘–b>5Нџљџўˆџўџђx1301224EDB@?=:6323>@X]€ˆЎИЕлупццрсспхаЕœtR57A:k›–˜ˆ„…‘™•™ž”†zpnllryˆ‘˜œžœš—€–”‘Œ‡††‡ˆ‰‡•p?3Зџљџў…џўџњџФ2IEE?A@?B<€2 7>AQœ–˜Š„‘…„‹–—–—›€žœš˜—€– •”‘ˆ…„…‡‰‰€ˆ ‡•r@2Жџјџў…џўџљџ„4=kЃ™œœš”Š~qdYQLGDA€?;:<;;€<;:`œ–‘‚„ƒƒ„…ˆŠ’“”•–„— –•“’ŽŠ†ƒ„†Ё…€†‡‡Žˆ ‰‡‘–a?3Жџјџў„џ ўџјџД2?k–Žƒ€†……„„ƒƒ„„…‡ˆ‹ŽŽ‘ŽŒ‹ˆ†„ƒ„Ђ…††‡‡’ˆ ‰‡•—˜R=<кџћџў„џ ўџљџ™3@s–ƒ†ƒ…††€…€„Šƒ„„……†›…€†‡‡˜ˆ ‰†—š†C8[§ў‡џ ўџјџ‚2By–‹„Œ…І“…‚†‡Ёˆ ‡ˆ˜•b?2”џјџў…џ ўџјџˆ1C~œ•‰„…ƒ„„…ƒ†ƒ‡Џˆ ‡‰˜•›…;A7дџћџў…џ ўџљџ…1D‚œ•‰„Ž…‚†‚‡Оˆ‡‡˜•˜“GH8†џљџў†џ ўџљџˆ0G…œ•‡„†…€†€‡Шˆ‡‡‹”˜”š‘N?0Cяџўџўў…џўџјџƒ1Dƒš–‘„„…†‡Эˆ‡†ˆ”—•–œ…K<>\чџњѕљџў…џўџљџ“3@`Ÿ“˜–Žˆ‡‡ˆ‰‰Щˆ‡‡†ˆ‹‘–—•—œ”i?:F1IЃЮџ§џјќ…џўџѕџЪ5D;p˜•—–‹ˆ††‡ˆˆ‰Рˆ‡‡†‡ˆ‹Ž’•€–™œ”tM9?A8@Yu‹˜œœš—––€• ”“’Ž‹Š‰‰ˆ’‡€ˆ‰‰ŠŠ‹ŒŒŽ‘’““”€•€–•––—˜™šœœ›•Š{hRA9:?B@<976€7+9:73*;GTџљџџўџњџCH/7758;?B@99BTh{‹–›œœ›š˜—€–ƒ•”“’‰“””„•–‚•–——˜™š›€œ›˜“†yk]OB;8;?BB>:8„76€7<1=2Мџљўџ§џы'F0;48€79>BB?:8:BN[iw„‹’—›œœœ››šš™€˜—‡–‚—€˜™™šš››€œœœ›š—”‘Œ‡‚{qg]TKD?:89ABB?<989=BHQ[cjrx€„ˆ‹’”•–—˜€™ƒš€™/˜˜—•”’ŽŒ‰‡„~{vpjd^XRMGC@=;889;=>@BBA@=:8876678„7676€7:1N]џіўџћџн0@496866„78;=?ABBA?=;9988:<=@CEHKMORTV€X"YYZZYXWVUTQOLIGECA?=<;;98899:;<=?@AB@?><:8‘7 6786:0N`џі€џўќH.>6Œ78:;=>@AB AA@?>==<<;;ƒ:99‚: ;;<<=>>??@A‚B A@?>=<;:98€766•76:83I•џіџўџїџ=<-;98867878776776787889;;<=>>€?@@ŠA @@??>>==<<€;:9887‚676‘767 66788;5-J ъџў‚џя4AG2/379988776768687696886€76€7‚6766…766‚7677„6778ƒ7878†7 6786785968€6€7 899851/;L!œџњ‚џўўю>#CJ>61/14789886765966:757986698775788€765778€7ˆ87866€7€8+65788756885698587576787:9:88520039DJ5 Ÿџјџў‚џ1ќњџ’);FHC<6400134789:9:9:977976589664599776547:€9€8€7€6€78€9 545678:94567:€6!9878::9:9:8854200259@FHA4Kиџїџў„џќћџ§Хo9 ,:<=31454,.13100.022321477653ƒ28345676213322./1022/-/644/:=<:CEEDKF=H0/ +DtЅгљџўџїћџў†џў€џљєњ€џ-§џюаІ‹`I&) $&:,)?K>=>MMFFEDAGGCCDDC?965;=ƒ>=<747CK0*37"  )2Ws›Лрќџ§іѕ§џџў‰џўџќјѕѕќўџ&§џьгЮ” ‚TaI&)*   , ';==?>‚549@€= 5($ &*&2]Xc”Џйз„џўјєіњў€џўўŒџўўƒџ§њіѕєј§ў†џ §џтбжзЬ–šš™œ€Z [\\]YfB'.*+ƒ()++-,\_[]\[Z\UrŸ˜šœ“­кгжвјџў†џ§ќ€ѕјћƒџ€ў‘џў…џ§њљѕєљў§§ўДџ§‚ѕїњћ…џў›џ‚ўŠџќ€њљŠѕііћў„§ўјіі‰ѕїњўŠџ‚ўЇџ…ўМџ…ўЙџ‘ўџ‘ўџџžџt8mk@     'Hm„“ЄАЎЈЂŽqW4  B}ЛчќџџџџџџџџџџџџџьШL  Hшџўџџ§љіііїјїїїііїќџџџџёЏU xпџўџњіј§џџџџџџџџџџџџџџ§љіјџўџш‰‘ёџџљі§џџџџџўўўўўўўўўўўўџџџџџўїјџџіœ yяџўїћџџџўўўўџџџџџџџџџџџџџџџўўўџџџќї§џѓ <йџќј§џџўўўџџџџџџџџџџџџџўџџџџџџџџџўўџџўјћџм@ў§ј§џџўўџџџџџџўџџџџџџџџџџџџўўўџџџџџџўўџџ§јќџХџїќџўўџџџџџџўўџџџџџџџџџџ§јўџџџџџўўџџџџџџўўџќїџТ9чџїџџўџџџџџџўўџџџїќџџџџџџџџџў§їіњўџџўўџџџџџџўџџїџц1GјќњџўўџџџџџўўџџљіўџџџџџџџўџђЮђџџџџ§іњџџўўџџџџџўўџљ§ђ<Oќљќџ§џџџџџџўџџјњџ§ўКлџќџўџџ§§‰0VŠЬљџџљљџџўџџџџџџ§џќћј?D§љ§џўџџџџџўўџљћџџЦsQўќџџџџўџњџ˜$uбџџљћџўџџџџџџўџќќ№..№ќќџўџџџџџўџ§љўўВ9.їџџџџџџџџџђџ…JУџ§љџўўџџџџџўџћџтмџћџўџџџџџўџќљџЧ:Фџїџўџџџџџџџіџ> Tпџљўџўџџџџџ§џїџНЌџіџўџџџџџўџњ§їqYџїџўџџџџџџўџњџЬ —џљўџўџџџџџ§џѕџ†mџіџўџџџџџўџјџл0Цџљџўџџџџџџџўџїџv[јљћџўџџџџџўџљџ@%ђ§ўџџџџџџўџїџО Gџљџўџџџџџџџџџџќџу ;ёќњџўџџџџўџњџЫЊџјџўџџџџўџјџЏ Њџјџўџџџџџџџџџўџїџn &"!уџќџўџџџџўџіџtLџљџўџџџџўџљџЛыџўџџџџџџџџџџџўџћџд SЙьўџщЫ\8ыџўџџџџџџџ§џфУџљџўџџџўџћџж>ЗСКwzџњџўџџџџџџџџџџџўџїџIЫџўџ§§џћџбЇџ§џџџџџџўџїџ~Jџљџўџџџџџџќі8DЪџўџџџџўўџџџџџџџџџџџџџџўџњџЦмџєљ§џџ§њѕџјјџўџџџџџџџ§џтЗџјџўџџџўџїџu“ўўћѕјљјіњџџџџџџџџџџџџџџџџџџўўќљџџџџџџўџљћџўџџџџџџџўџїџ^+њ§џџџџџўџњџФВџіћџџџџџџџџџџџџџџџџџџџџџџџџџџњќџўўџџџџўўџўўџџџџџџџџўџљџН~џїџўџџџџџјџ5›џёџўўўўўўўўџџџџџџџџџџџџџџџџџџџџџўџџџџџџџџўўџџџџџџџџџџџџўј' аџћџўџџўџѕџpџёџ§ўџџџџџџџџџџџџџџџџџџџџџџџџџџўўџџџџџџџџџџџџџџџџџџџџџўџїџh-ў§џџџџџџџџќƒёўўџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўџљџО32-& "$Dмўџџџћљњ§џџџџџџџџџџўўўўўўўўўўџџџџџџџџџџџџџџџџџџџўўўўўўўўўўўўўџџџџџџџџџџџџџџўќћњњћўџџџџїдЈzTGNXSIGE?81)   ):82DoЂжјџџџџџћљљњћ§џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџў§ќћњњњњњќўџџџџџџ§эбЏŽoXQV_b\USSOKE>7.$  '-:FHCAKd„ЊЯщћџџџџџџџ§ќњљљљљњњћќќќ§§ўўўўўўўўўўўўў§§ќќћћњњњљљљљљљћќ§џџџџџџџџџџџќёувСЈxfXTV\ac_YVVVTPMHC<5,#   )/3;DKKGCBIVh€›ДШлыјџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ§іюхйЭТДЇ•ƒtg]WRQSW[__]YUSRSROLIFC>93,$  #)-/27=CGGEC@>?CKTbn|Š˜ЇВМХЮзоучыюёѓєєѕіїїієѓђ№яычслеЯЩУНЖЏЉЂ™Ž„yqiaYUQMMLMPRUXYZYWTQNLKKKIGDB@=:73/*%   !%')*-048<@ABB@>=<::;<=@CGJLOSWZ\^_`abba`_^\[WSQOMKIGGFFFFEGIJLMOQRSSSRQOLJGEDCBBA@?=;97530.+(%"   "#$%'),.2479;<=>?>>>???>>>>????@@ABBCCEFGGHIJJJJIIIHHFEDBA?><;:99888765431/.,*)'%#!   !"#$%&()*+,.//01223333333333222110000/////....---,+*)('&%$#"    !!!!!"!"""!!!!!     ic08­W jP ‡ ftypjp2 jp2 Ojp2hihdrcolr"cdefjp2cџOџQ2џR џ\ PXX`XX`XX`XXXPPXџdKakadu-v5.2.1џ Ќjџ“ЯС$ ЃЙZ)jЩšѓАўJR+Е{YърЯю…8жТрљNO 0€ZUŽ\ш?iž ,) D[†€žЪВ,0YЖўя fЫфvŒЉ‡3Уъ%(ЙФжрйЋ“дC+њK4ІЃЙбгЅŽE `ћ3ЭЁъ{бЏв>ZУъ"(ЙФжрйЋ“д_ІА%сі2` uэ"…оу\жяbhЯС( XК_пЅƒiJиe}т1ЗʘЧ.d*LhівыMІМеЗ]Щ\hžŒ‚siXqNcяLЙ@ і4ХЊq2ФrсЬтЯЬі?ќб€F3]}aХЈюючKь№ќу›шПZ]ŸџiвИš@ФОTЎ№XlhtƒЊ2OX jХQЛшŸRН!йˆ'_јŽтЏАTБLўі3чCk~P'4шbuЈкпB+ПЕеD„‘~Ђ>p&ЌјГ4jaўˆ• Жi•ЮЗуIм›Ч…кV2љ5Я \Юgn…Ч%. 2 ВŠu2ЂіHЖ/Iтй(:§[СёPЋчџ{…фѕlДЊ‹ЯъŸ$’љIZmЖrвСѕРља@|чРJЗ8Ѕх­ьD˜OnˆUЄE3^|М9ƒЧ‰—†>‘v) –ЉЁZJП<ŒўНеЭVИНAЭixˆ v‡OI"ъ‡Yб…ФђaoЈајЛ‹GЧЖ•ЕРn‚ЋM”’СѕAѕР|чРOКћсizуwЪфРДK ~œ.кœY€_Зё1ѕdMПА5Ќ”ZԘЅ!ѕ}kU,_Й ’В lп3Y)PC"ъ‡YёпЄШШ›б›ГZйїЩ=ўAЫ’єc +јЮЉUЯЬњ~h‘љЁ`Є•bЏТќТЃ ‹юзЁЊѕv› Ÿє№ЏіПБЎт–љ‡rЈуD,дзŒД–яUƒ˜xфџXгoAjHdДnєБtу4 Ц‰D•зо5YavђЕТю„)НQlІЎА”CK >uъtНДч Ÿo ћwКxbН• Vk"<ЛтщЃцЩyШ9žѓ›F5ƒ“‘СгшЃБГ ђъђрЄ ЋJўjŒСƒ€С4‹yTUš ѓA–‰мЯи1ЯЮКŸЗž=*lZвЌa";V†Jў?Ќ+˜Ц1м№JŽЦp!lКТM9Ї0нёЊ6Ђ%ЫЙIЂњrюйGУ"йІ“?d9&dOIп“ЏѓЋWœаFЪŒЗќљyѕјeЧ0‰ЂкйC(­ЪWMД]^’И•Žˆ qЦШЫЎ!вsЖПјЉf= '*oD8.‚(\HэьШ?ЗЈЂaЗ/FлЈlŠQ˜я[EЙU4okЃюжЌ]w•хчp5UРљшp>z„ЯF‚uќˆ’VK’мтDfh\GAЇ^”§џ1*6хМœkЄъф­_нƒЈІ[›CДЛ2ъА“iиЕjЁ@‹тиnHЃ:Ў…p vcў\ГйћcЩІ§Zaи‰m>БFžžіЌЎщfЃ‡П‡b}…‹ЊрZт9(э)№4Ѓ K:zфЖг<|э/BъuE”™•\IѕзЯAђZїѕCЎƒ ššшA\м6Fс\-мYŒZІ'Т•œ.ф§РйУ.KŠM#ЛVN—nGЖч8'ЧсRЯЮД‡сS46}КVЊйџ„Ќ&…йбОіЮГpЂх*р‹‹ХКая„w]-–ЉЬ ˆ0Ѓ|iYŸ0‚PnЪ`єCЂщы§ƒ$)~]сє†јmя€яТРXZBћgJЕš,ЕЌ'zНЪ•†СјЦчу–ћžNјG9–ЧЁWTr9 ‚‘њ+ЎiжRt{Й Лзч1зЏй6_Єo^n-ьщiX‹Љ-—4DМ’0Пйџfs-…”ШјQ6нМН mю—бТsdдЖWЊ9sє! nsxыц_Г“pўpПСг'ИфкƒјтPМњ0™/žЦZgcдзtХњХ57jЌLf€Qд-Е&ШIј;š$HG!†–hРtsFƒ­eŒ€ЯЛС-—Ъ SˆМOжЩЭ•™§АšАx”мК>m.zhPЂУПLЎE8x9,Z€‰4c9Ѓ$ІYфЈ№рЎ0‘FžPЂ|у#L—@ЕwЯ{:IуТJSsAАЏО–ЇЦМелfнF“К‘RƒИD(ЊZVq„сRX nЫ‰__#]ШсПOTѕ W&хд<э;1s'lжŒAм: ЕДDЖmё™'Ољ  n#‘ŠAї"Ѓ№р_lл­Ф*0tPi†M8н$8еOˆйгw”пЧ*Qот c"ЭУздџzx•дЯCтЛ1'Чˆп%В$A–‹F(!'rэЖDЦ ЯgЮњс †P[…ЌдИ†A“шHСŽlњдЬZƒ>Ћ5• рh2ЬХљ^ч§uВЋ‰"/fдW:Ыў~уK [ѕ&вnIa ь8‰Hь№œ,Кmкт„~ЪsS›kNсHЫYЌ›ЖеЇЛr‰pϘ’ jвЁўэ‰ю‘egŒ@е+Ку+Ч}wњJWџuр№†pјє4"Џ:bqљœ<х5Ѓ'д`‘хПкk,ŠЗ.ЊTшЭdвЇ?/ƒ”фШЩіДОцxJhџR ў)мЇГ7iЌюЗ\A‚вQ2pуїR€'?DgXB>jSˆDYяX.Х6-джŠчЇКНyЮ=I8tРX?й…!жE_І ^bg'ѓгу6{гЧjНI/Er“Гvh ƒ˜иzч’§с\Qъ垘 НNU8rџZw:~ž„Цђ„•eо )(J*O@яmіnЄш„J\Ую5Ў4сtKўЃoюЗ‚ŒrЙˆЛTЖƒ>XЁcиТ_аx3\ШгšP BЏћf‰™$гЃœA kЛ‹ dю$ЕФЪчзeУ”тxи#ў‹ŽcH6Tў‚ŠЋќеіp0ш oцf ЮUYФL;џ‡З р]”о‰?я€еhўїЌWн%ۘ‚ŠОнќnРЛЌG]œ„“P%•ЌOЋЦ9ж‘J†tэ>FSˆ.н1=_БC ѕќ=dВІУaqс TрЯМmу˜Ÿ#AяgWЬ ЁђЮШkЗ&>@R\ |”ъ~AhɘПWvЙ ФХw‡†ъ>ЈАуbџ,ˆўZМ–ЈXAРљ0тщФ‘фрЈєPэ#ГWрМZ˜Ў›Дq‰ 5 Eя*C ћ‚@‹)№ёM[№Єhw/'ЌP*и;ЉšиЖэ/еHКEбT1“У@Зм9мP9pЇLЏјXШ8•сRtЗЪs„IЖ…бЪбЄGыœМ ЈфV(5‚œ 1ІИ Є;'u’жЂ2[НSЮ_)гcшу§гБЁЪ†­и ƒR Ѕ1WcЂ`tпbgј…Лј~ЌЪYxХєџX>.*ЯfУЅ‹жвљВЉы^х\/љ3puљУЅ9vпџu RN6[8­—ПЃ8K%6Уї А"ятh.СвLWс`Р’umЃкЙх ]CAмU§ьцУQлю€М+Ыџ{ЅЬ9"ь"š‡ёкњuцaUC”3КyOЩў}bуИ— kИKг2уЬuї3 ьИЁВMл{џ<ѕ˜ѕљ?В-СЅnыьФ[‹#ьэ;*)rАЄтUKO‰еєѕШTЛУЌEСнуЎШяxT‡ё?UњоЃp­cЗocцЬ„)к"хvVюТhcъМ5љЇE9фЊ§юЂOlНЅнсН§zЎC‚lГ?iЯ6Оu ;‡њ мžuБЪRŸ[тЬ$o6@Vh]9гbnАѕSѕђЪyg­цDwі‘ ѕ>t—БJыw— єƒЋ§}8rIЅxеј@bqwё`з1\ўМf†Л-—І`*ЏR $6а]PŽHПЗsТFL›уРmj uo№ѕЕЙtКˆВОсќnвП№™;чЈШѕєtRЂЖ1ћѕК<‚BKѓВ … ж`м“hqЎKM…[01aˆ]LОЭЪ’КO6юјЭфVvp)Q—ЯЪ,ф…ЋйЈлСЗ&•;ѕ<$Ј^џ;@•ЗкўFГž тg‰#Oe§/ЬШTJT 3ќзRф[ѓ•` %ЊЦpfQЉƒ/z‘ѕш№ŠoŒmЙ<њ+Є#ЈРьtЂгK2Тl/[ЂБСЊ €9†sЧ]Џ­|sSŽЮАЈЈ]OeBИ …eМќТЊJ>ЮцТ$Ѕ\ _AСѕO>йз№я]ыгiž„Џ№˜ж eЌ ‡вrlїЋPћѓqЌhЦ"4рЁЇ‘‰9DЎЩˆJжђџЉљ"љоЭщUЇУєЋWн•XNђЛ№'QVkpЂ ЙLi›Ÿг cЊрц;<–7H…Kшьƒч~!ПalTе=їР2˜')*5…щђRЭМЊв“8;š3NЫ‘ќe#ЮўФSЬ}ЧќЖ@шТЃвhƒ„оЃ~Б.o>ЗнUтУ.‚/mфsYZвŽр7(53УЃСЩlфШ€yЕ/\ДІŠrОЇш5Іяі‡0Ш\Ux-wg‰Dј•uXЕш/yЮЗ Сф‹џ"eйzŽЧсы™‡БМ~ЙсАzў=;ГЂЭ:сё‘c%SДfЅбp4}Tƒs;~P_5Ъ=жовЦ5ZвЖЂлlЪхkНtШк ИgO1ш7кXџAЕА ƒq‘ц '-JЗQ‘ˆ†КЯ-vоr2ЂR+YьУДЁaЁВER5wХї9JEт­D7"џqyJ‡J^Ё(N“%“ќДєKŽSq$Бnњ—P€сџ 1=Ф@Nі:yМЬЏ5нхaŽ€Ž7А‹ПqYо^ђŽЖXэ3KЪдєЬœЫCфB^ƒŠюКЩAћјэxcЂ–mЕѕз~4†`3џ 0w№oŠцMhЋе  Gєе{k+R Ё›“ИЗ|gлўПщђžШ2VьђнІ8‚MЈz+џ!mz{Л$<щї+‰$ІФ ъ‚Е•,Н‘Л‚HL!#()ЋЯр‰WЗЦ$>iњзEƒ2ƒУms0цщDЮуqœŠЏѓюУэЙсщЪ*QO]!3юlзu—>ш2Ио-3™щПУbлЬЙЅ qТZН]чфТбtP]gнАCЬ!щЂ&ѕk‚k‰Яг>б†зK№5­_Oѕ…:Јwžb{'тI}ПьNы"f2ь~К-g?Ћ't•%%ЎH‰Oi{Ч$ЖЂЎШaO ІŽmл›ЈhЗЯ‚Ќ%ŽKZgЁХcІ-ЙXї%тУ›Yd/QEл Шн0vљmsЂ ЕахQ„ѕФ8к!uЙЌйЛКE šИен‰Ьigфз-_И9u€ŒŒ”РжщsЌn"lŸ>e,{TjХnо0QЁЗБjѓїБ—pЧ% #Н7 f/c„щн%МНJъd@ GW5Br:€ј=в Т'гг№вБЇНЉђЎЃњкН9 aWЩџl($ъ^ ЅВžЩП$OИ3ЃmЬЭ‚ ŠьbQlоd1Wдбл>‚PR'$^zWŽo.З}DPн†сѕ[”дЊхщ“џ y˜”ЯъЁ_pѓ3$—‰йqѓчšѓAК=oђ†‘˜e=ЦЕЦ‰mЯ<ЮшH ј(GШЭ]ИчSœ&kр`Д‹wН=“ ђgщОЎЬ”ДJ-у"д…Р ђuNл‚ =Šќ 9У•Ї oсуŠз:кОШоŠU шg”>RтзЪ§sLm`Елфbuф yy +ќHЇрол`вFеяќэ|Ф6?Б%CŸџ<юєжЦ+W;rКbžШЯx5ьђЪЭHѕ м/ІЗ™taПк@ =[А†] ’жk˜јФiX,^0\Ž ‰М!%g+CŒVƒлQI[~К:sл3{ПТ,^?Д‡7Ї§Њ`з@ѓз„Ь%s#^[PЬыЎY5\?хF…ыkЦ8;MвљBžАƒ ЊrПоЮКѕГ@I}аПЭ*˜–)Г{Ќr1.н:w`•}ЭУЋ`x[=вMДЮ;ФЩfьAЁАЛХŸWM вšеaЎN!ДS^УЏЦ|ˆXШЯпшић{jчJєТсb"ІSИNs‘'ukvЂ>…‹кЗEј˜њіŸ!9u?еЖr!ФVCГрѕqо_U§Ѓ=џм.РТ[”:ЂащАka|$’с'SёфS9‰™жзi’рш oBmdИ4{X†m]юL]ЎќЕоипЅjЌ  аDWЄ ‰љЋЉЉQJЯ"^Гc)‰qќт HbhТкKT%НРЎуR#мЃPЧ/@ЇŽˆVкZТљК1 ,ˆШ@ ˆ’яХz{g‰IФлЁњдЩ\QOц\ф>KГТœЭsщгƒ…-­Ÿ™ŽѓЫЃ8Ž0вЈе6п‹!Q:xTH|ѓВšбyU АЅџzЧЕ#<$Q_Дщчч,%,6V„:ѓњќQнŽRоXЂ—ыƒv\€BmŒмЋяV{гЋd2X-Хё_ш9„|бlк5›ЮЁЊЁ/ЭЦЃ[ф…ЏХTфzЫAЧЛqт‹LqШј:щѓpŽpЇd}Acо>QШ$—б S4сЦ{нЁЌ2qFTІ\u(­iЦ ›9{т*a|lКeаІRmnєгєf(6И_аŸ‘еС„xГX[…ђedоИykAPJщfЏ№ПŠоgI=АЭ\0НќŸкjНсўНŽu§М]m•`pхмVk+Ђ.К\ƒ‹Е?ˆјfЂj2їѓ LrFѓсЊВ{3– PƒХ1JŠ2ю\Aјжkœ„_КcеŽ>U$щ8<ДДл6б{Kе­ђЦ1t.ђ!2њo/К(tЄУхБ5‘ЩlК3нmNgŒУхh‘ŸaŠU5QƒУP‹§,m{sW”яююvckЦ 8&PІŒН›Ћ‘ђ­+Р%~Q мГЉГNњй_ш“Ў˜—v#(НС‘„­CUњ#ЎXЕВЖ!Х’ђ†‘іLњчq€У>kЖ~bђ{…Бѓ’‘њЯ"šjiзhgјB&иRАНnДrВ—sŒ1§зн#ИN[zl{ЁWПвбь7Gўп’і)5J(„_ЕмаћоWяб™ }* жјŸu4ouЕeƒ‚G‘zох;ѕ!СїЦЮкB|%1SјиB­ђ-1Ш%оЩСPŒЌлеГР Џ#)љX†DьВ[ЏФ\Pє‹ъmZ/Љu–БАЂl]AL-ЄЩƒ3hCMЋтNо33).gе^\O гЬ\ќ‡еЎ„1UUтg.ІАџ$ѕC№ЖmˆЎю,Ћ(ўu XoвМoqZMЂYљ+&ˆdS^xљ[“эЯЋm{ЕœсН`%Зў^OVјp8ŸkŒ цИ љНѕпn‘mJ#aЦ]Ÿ~ЬJ‰ВuЩaИ'xТ™‰э7;жscoп ћŸЂѓPЁЇ k>ё5фRО_п12пЗ…Že[+ў‡лфеЫЫnлЕŽv ШОгю‹і#wХ€ЂŸъЭѕЁ-єGяй„a}йkvC+ЁЗg/~ЌАФћ^Œ{кд№ЦZЁ$З?Т\ѓЧўЗeI1o]D^ЭО?УћаГящ№љЊаoC:иј?[пьП3<џ|т_Щ”Џх8фдXЩgьЎ+пКŽШ*иb‚ОГѕ:ђзлћk‘зј•ѕ%ft%•ІJЌ­вnv‰~шЊŒ~ћOЕчАiЏ6zЃamХ5W0ZоoLљjрnй9‡Bбы[y FšаФ а‰{П ­0J иrЗqAПg: ь2дž‰C˜wу,E…QtjЅМ:oGЬдHrЦEѓ“ъшz(Ы(FsjЅуšЙЗ'Л-ƒЋјWzюС†Hјїч”еЌgЮиЦёпКоБmЋ§ЦєЁЖRР }з х„У›ЉДўž k7|Ю?–dеЭы‰%хЌЦ?ZОТФк„eЦЦ '\ŸЫP—ЃML˜Z-‚6fбїџ‡1тСћЎЪб€ЙHwњЫмu”D'cтъ Бib0В[m„‹xОл HђlФћІMТ@DОкЬ DЌГњjЛ%4ИxoйТ'A…M>œ§2š3ЫM„cЙG:2puЯі +c JЕdd<”ŠГŽе1O+T;ткkлINЭCOOP№#€1yП,эдЙв9ЃСЎс;ŠЙ`н?оУƒN,Š“!‡A„c“,кМIОФдm[фeѓЭdяžф†X'D1ИЦj1ЉдVТы˜яr|Ш ? LAя…qXfjНBomЕЪœТ …7 nŠЭТžGв„;iёйЗ—”ЩY…Ец<^C“Ш<Ы“сw— ЮyђцЭ‡)&|ЬŸh—­џN+|ВЌН#љmlЪC^oCД7Ѓ}Аb-—‰~KўГ4Yѕѕ ƒUэ—СГљЩЖWKЭ†xЦCy€wј7DEqˆh_‘ И\ Аutќхэ,ЅяУЅiƒZcѕлИЋF jsНvјБЮPш›j@@!}­Kён_z'tЩL§сaQVХcРШљ*њЬIЎ›ѓУL)ь д ц(0‹ъYЂRђ ‹јBwœЙ№LWsдƒСШк+бЛБыŽiC››‚@0ибbд€|kI№šјj‰ЪYЇq ь.џUЋ-ФГF\Q’Ти›%@V‘Ц4пИјwoiДћќл…ѕЦA3 'žыD-’vбSfТ$/ˆ‹ЗžVf jЗbКp=KH‡–ЁЙs|ќ~ьТ4œж\ыс2Ўcм­уЂЄR“†жЖ&Œ` Фnd†|ЉѓШSFЈS]фЃщСЂŽџt1ˆЦЄў№fЕtu*[Ч8F–№Ж;W‰\чј[лЩed™\ЩkЅШFcћл g8йцŸPРф зуіŒ Шмєї|Q§0fсј6/ВVxHšСТЇGpЉ\фQ’‹'C[™…nё”ŸQ–бЋ90—ŠŒTФмєЏ“§”‹ййvzЌ+pк™+иМйiNвЉfaЏшЄE"QQфEД%(ЊцŠЩrŸ1ЂдФѕп^Jь+Rи‡Uh*ЗЪќP |nДЬx‚ЮWK”dS№Гж8”з?([Jм/”€оjaЯLєQWІ &оБыдqKƒ-О№dhfНоаЄdЁ€Dї‘ЊqЈыN‰І4FФ§Єdй%Sх“:‡n•ya--ІЛiGЊ€Б|НˆЏŒi‚–ao<+ЂбцНЌwSЁW3ПFЛќдоIzк6яke|{ќЮO%ъъќ•ш,Цў)3|$Ы9о8HХ8I5 ОпНœlЯfєG\ eЦ;SEьб (‚I №˜ЩПcџЬ~ђ№6асю$эД}JTН)lЗѓh#>ВЯЭNпъЈ€љHwэ+ИфoGь?њ*$OlЭWl\Ž YРљћхевWC хuG U~‡йСЙќ§иьzи‘^џЗЦЮф)З<дoщ&дфFўeГ& fXc`УQЎ@gNѕ6k‰`йR<–МQ@f!+"рŽ DgЧл„Г'ЅЭ> u1‰jйiьёИ%%Ех„пу†"9cЏ*–ђ$AЋЯ0ВL€#Щ мЬы6Ъ)ѓ|)Ќ \)ЦЬуИhпякЩї†YИrOл2)ќmQ{"КШ4”ыМіМ+’EЙxѓ‘- P?Дћ]гХрUщЂБhK‰'SШ]QNƒ2‰MўMТНВчЃ?fшЫ”ˆЏдф@‰`•o0qЯ/јЅМ™nрн` Eќ9‰ChA“ CŽУДoуlїкЙи˜‘ф]вœvЉ 1:Сэ†GхZ.–aѕ1еŽ+ЄїX‚тЦК…Џ)^Ќ‹tlU[%Х[эЮœнѕЇЊUs‰R‚а)™(№:ДКOTЕј1-3™лгsЂAЪuyBЙЪГк&i–ЎњiЗа ц:q>уdKЩ!œ§ pпjœжЏ–01tН7Щ„z?O]ŒУ;>ицŒЩФцЬ– Qй>>bš„+сГu?ŽЈЉŽŸy1І–tј0bЮHH‡Ь>Јћ™ Ф'ŸМ( јkеŠьиžvY‡IŠ9љ/ cНЊЅЊпЩ:ЩЧШ›‰}З'ьт•ЅbІыiъ_UСОД'б0СЎ,ЛрбЛя ˜жњЛЮ\УAт^`w#Б?+в@ЬGЇ)зьnMnеЌsг†'Є1кТч—^ЅУ1#Љ™ђѓцўиЬЫє&ƒ ;[<ћ~M"`ŸёкЂ–K‰*oН C•Іъ[Ѓb { фЗ™еЮЦm7Qw Р“Ž№†N%љ -члG"іј­mќ;џYЅЙH№ЗџOJѕ•иТ;Lї8@ol‘ЖCB%Sрh4@ЩП>j‚а Юц‰Ё§Ъ(Œq6зш3ЬJtjФrїb&BjЏcлЅ8Х"?эњП+ф6c<Г}оw0qRx7х(Њ-ŽЭыIsmєfнјщњ ,џ]юКЮЈЋєЙlb=D[œіІoвЎы |{аіXј˜`=ІБћїjЮсѕx'ЩOŒе3OkкИњл Бђ№ЂнщK‰bЉEбЧ†“g24™˜ь.I*ЗбњЇaР)]HГЖPЇ1eЏНЗ:Ъ7IzНёйqvF)†xЗšіН­-1E‚щBМў'.^^œЋЧњQЁс@wпCс<ШєфТ:€uЙњЧзЈgSЏ•Ђ3ф(dR.fЪn‚46$CоЏqџuRMЂ<8y+Нk#г4ф9‹љ…ЭјOЧ‘ВїжЊ#$uf\WocдЏЪD2ЃйкВц DВeЈE юYuoїїРxЏщLє@x<+ ђ:їn@ЫV)Лп?-``‰$ЖZхм8’WlQЋ5ЊЫ55ЏUЎFŒЎytО;ŽfJfу8ь nМЄяOњ;єXhЈЌ q3юЎCC” \F?_G!1ƒяF№ЭiD&Ы/"5BГAЉ‚UvЖYяуўy B<РЅЏ *@nfХн8ыШG‹UgAOТ–ХФ 0џ •‡иЫ(ЏъŠѓ@vЗ!GтЦЪЪЂХЮшіЧ›4/zц“r=`dЎчcмШhЁЋ&A#ШЮјcMZ<<‹ЅЏРые•хd!т]у4‚Л…флИвЅв‰–ЖеэяўQtєbГў*жšV9‚š юI8€1}зіZ2yдœрD}:“ќ^ає„,ьўЕЛwьE№ЮтС§<˜ѓ$Ž-=ЩTƒ+єељЃVл%9#Э,sKЩJ$WЊіJЎ— iЄњOœЊФєЏДŸV6fY?ва˜ЄшС(ЫPyАShЂcЉэBFьиЙЁдіС љтFw Ёыs{Ш†у@\ђ~ЄˆѓЁџ€ƒ!ˆ.ЦЁSщоaЩЭф?ЎНQ џ.ŒЄtQ+hаюэЊ)зАє1#жZ>бeœ‚њдФcЭИёд"–ЗN]yй?NО№ДЦQ7о— ^’gl‰ъ(ШƒћЧсиœ~ЕЧси˜рv14€mуЄnЙЪmАЂћж уlm>1є7вцŒfФ’Љэ…‚ьЦŽ3я Y#G*{cэGу(›uŒŸвwŠRВ23‘‰ИкЖЏœЬ9a&MЅ‹и”Џœ ƒhсށ—M)6~x1ђЉћ`sf ЋЃН+2 @сŠi‘л;`лБrј•’FhœЪЌѕС/нYк?:№зQзVВIнMІqЮђvC;_ш^Нўбў'kѓвџœPГѓhxмfrјBв“$яЎЕCžWяЃ‚FиQ›сC@Ž,љ~ fмNˆ;ПмТšвЬ‡Š*L_уp\x–`•aѓj Ймм٘о\q(dcќІˆ&Ё­б€Ћл.№kQьЗх№:ЌYО\Њ“˜ЂЂ":eTЅxма5ж–Ї'ZЙм7wњнХЛ!!&E,†Ї О žƒZцвAАm:Чсн!бhN8…„ёlЈ#И]Tz­Fr•мN–т}Ž# СэМЄjЃ+ЫХз‰Й‹HXHїќшЉrЉs^‚! }УКpЕ(hИ%rэ54ј‰ДЋІЊ§ЊРiG"ЉБBDВŠˆёcЩdG—šjкk(4Š&їŽš–У‰3ІЃё“ЄЈCРуі8jŸќїOЯ''zНьЃЂЙsЈSi —Œ,эЃ*Ьё Gю:­езТžц6 ЦWDемœe‹ѓ ОCLn”tЃ;[§чў ѓ<{ “Ѓ„EХ Ѓj‰iСкљ\šd]яВ”lx“YWg8Јt§X x(Вrх@2Icq7FПЅ@бщ&3Ї•э‚М§АOЩ‚' Я 9ї !Sb/хFLˆ–№žж№Ÿќb>kš˜1з2ХЃƒtхTМ"{ТгšHц‹ b\бэiљ/˜+u=&ЛОъ–рeIьЧ%Nь.мQeHvТANш‹ЫhБб $Ђы:I $ЖЄ*Ќ% q<№€ЌIЯЏq/ИWШBЈРpŸ‰_л`PmNb%ЈY„шиN‰‹С…+ЩйŠNю, ‰Э”–хžБЛ2;"тVМХ‘nя@ioѕPsєаЫžњМЮЌжЦ9с†еуk" LёSY^аК8ЙгЄиПЬ9Ћ\ТF-~>бB•:ЎЬьњL‚Œw вЉnH_ŠіЭѓ[oО•UкOeŠ7ЌЮЦ4>Q@_€‡L6fmнRТРQёйЙ њљ:ЊЇ Дљ<юГќіJ;,0–ъ+ћьЄM`wёD)„ё˜9ЈO[ьл-шБ ‘|cyчљ5ГХФ!Е6Žn№ЧQ>&фЌѕxїПфџf"ŠМ“ зЦаž …"L x™ ЮтLЎвoƒ8$œ6ш„ъ%fa+4­ Я уіЯДмlDXп[;`ніNeўЋђ'xTqkЎЬl˜ђ\•„yм,рљП‰;“`‡zІ”юў03'С)'q‹Y-=nГуu*аГЫў–xћй%П†џyЧмљy …z^хeЂOћSЩP$|zžmŒвTŒПtЬ&SHДјрбM;Н“фЎуЗ'DПлњ6й7•њ"ЮИ]Ul“бIь/5ЄќN9f4tв8ЇSц Я.‡Ћ•‡$qЁПЇШБЅђ?\ЄA%Kfjlч=cуУЌdJЇ3еёФ0& v‘?иы‚ж™#w‡Юш|qр?Й™ђGсХ,›Ё+™'cЬbž.ЂЃƒˆZуе ­л$щN№eНMљР •яD­ЋGїД˜ME’= щqј5Ы{…Œооxѓ&;є‚­Р+јODwˆ€˜c|Љ”Ÿ•mє…Й%ЬMЎЯђХЖў‚Defj2VxОЮдm"ъ Ž #RsМЈЄjLСнAѓm§<ƒWHЌоќ qB Wо Ыюж•Q‚'G;у•ЬZЫЦKп*QrѓЙъьwбH^ <г`ужј;-t-sЬму ИЄ\ХšЏQЪMh0у+{FwзUуtњ|М>Ъњсo™масMДэ a=j*”Юq'nUс…в›GE(„$<Љўњ[VЩ—HлbгСёQQjХu/’(ђо€ГщоŸкY:Б, ГЕџ\‹„ YЖLЖK>[$ЩZ €1…ж’яzТџo€Mjјѓšи( БВIЪ0ѕљэш^ф’dѕ4 v_АЌџ4јDЩ/eА›QСUI, И†dоЇUДzЬ€Јх›."€§4ПЉkхX+ју†ЄъRLП7ПmдtgХє…зЃzЌЎ›$Р§`ћ}њьЮ T5zŸљОDCžщиУШО„CІюМ§fБ&а|ц*ˆвz“њOЫк)W-ŒpЯ‹ aЖLIхії3ќ;}Ооў/ЗвяЗБлзэѕ§ОЛИ~оЭПob?Заіњt€ыK?тЯЎВ”їВюЂљТ `ѓv У"w<(ЈИ‚сaЅ{к%šB+ml&ЎКч1Цш”ї5дф<ŠFhя %Š3}ОГч…џkеЄ№jwфЧ ~щ˜sЗ1 Q@Нl‹MІОІЎ=SmН=eїЫ›(c^IЈИ“%*пѓ=w,›ЅG\žЖ№%э"Ц\ЁG.dCua§5UcшЬЕ82Jш\Tў˜#я\Д_+ZˆЈлЗю0ЧБщлІŒ0ѓЁт‹OЖ\НuКџB%“рФk‘LkИŒЗv~џ%f­вбЃ%DЎ™^И9œaЉOvнŽsя3мŠdыj{ЯIТюKлkMe}„рИ7Ÿц ЛЇг7hYљ5УЯ$tОž‚їŸYщŒѓmЇVи§Ђ‘4€DВœЛOU‚VТ›ДГvП5жЄ&9`&$E-„˜$*7тOeо(п д"_UЊћ_’РЈЈэiЂЎ;Л\./хНЄ(|ЯZƒолW /ѓђ :JЏF­aТєQˆK qЧ™VИAш9 ћБ€!Ў’пŽэб/ъ7]596ьfё”/\H_"§Мx!XђН[юžЅ<Н„П”Івњш1Ђž^Е„щzЕZфь:ќƒ……ч­ЅРь6usіoˆ{Х’bz_јCэLc>тЛ§WzмЭSсЕƒ.ФиЙ‘§Б„З~Б'|€‡EЂ 4>Бэ.[вc&Z"ql:wwдBPіЉ‡ЌГ&ИЉ›.hИѓv у ŽоlзK5V№VƒвўПcнzНžіXЁSьДh‰Qф*ыB›fУнеtNя$žџ*­Дэ‡“Ч‚эЮ;т{хOъ Ћ~Ю[A‡7zZшn]%цn ŒF?’ФїБ[@fМИxйвёZ.BТšЅWїXаrЃчBЭеL*b•уtpИтчпЏаJ$XРŸх$ Т ž6БыMŽ…KcшF#B>cЂЎ№ШMru‡Z­m‡гayє1x$тŽУ )b\^Яz Hњ:–™‰ћCВlЗ№†œІ&{ф,™N >яlnЛ=фgбˆЗШcЌзЉЊžsLеЌ'"а?А œ4?z™XY№š“ŽЯЂлƒIе!’%Mіі)ЛЄуЉVZЊШЙ„‘ЌБ”ЫУЯЇ "|žљgШћВ&аIЕѕкѓŸиNкaы7ŽРьСДЛP§~Тƒз.ЂCgОzѓ–“м=Бf3Xњd9@ уЬFСюЯfЯ;н'}3ё+4{ЖЮ]za–8[?Я\a—Xш–\п[•Ы ˜бо?ї6аК­›ƒз7|CF}Y`л*Ьх=ыї˜Cѕ)NиЏеГ™лД–aєl”€Вš)+м_ю„љe]фЦ5#b{KMћ(ѕƒ-xjѓ8иа(є'~п^SЦ#œњюг™U*Р ЉaЖЪ/О`№ЂfTc$O[m›кX†=У FTh-HгšsTчСн]~ RАx |$ѓшOcщKSGS Ж8UEYЏЅіZpЧхz§hЄМп?+HFЯ ЦBЙžЗєŸ=йї­ЪGwЏЁХLпЏ2иƒщ,‘р r? Њсsšа€ЉA§У йœŠNnаˆзžrzт)ЈИŒиЦ)рш28iНŽ‹A ЮГ/пыЄŸз#ИнљП.žrЬйћ й”Жѕ-Ћ§ƒ"#№СКD›ЭкКѓoў’ВЃ72џ,Ÿ ђD//,НV ђМѓки™JIтіЩЮЈіљчFўLkЙаГSsвФ`3ќoSIуˆs‚[z„hЈ‡ЗЁlЛуZбАШRU’1gођз$ GЋЙgЗƒЛM…;IЩщЌб3јeЉtw‡ГЦ%Ѕ'{cїp=е:TˆЄа—ѕъUVVа‰ЖїNJuyhЭEgЩ-ОEЅЫu™˜2(Yи3ac:F/вЏ“_Я$МЛ{-~ LJѓŽ„(”?њс”V+< ~ПCAEЋ`w9jж€nTЦ^.XэJђф}џ‰э;>ќ-Цжˆ“№DcВъбuњэСŒц9jS џxлffh[[єNз1R|љ+wх‰co6‹ъКK]n ЛУe:z*šхЗнг_їЉR2š“pн`4Z‰LZј>Jw 6šѓ—н[Ÿ’Ј„EŠ_Щ#b(Я~ѓЩјќ6tŒђсEy@ќгm:ЈДDjb*UсѕЙЙ-нњ„3ЄE#MЅС_,Ѕ)шt‚b/ E͘†ГŒ4‘c.‹Њ’wЁ˜4jСЃ•ˆі˜Œ#ђŠЩ1Ч/J~“СмnЯj.tЂeБHЗЙпХд(˜[<]нˆBƒш+С Ъ™ФЖ9x=Р*eJНе‰М2”pZ‰"K4Кщšй[ЂOЬККБTОœїРј!уцоbЄгJхœѕБщыxS§рv}ЩХЎВ8ˆЫЎЫЧœБК}9x]­хуљптй;”§ј‡ЊŸ~4ЬЗ}сюР)ФaБю$‘KИэ =Ÿfuі&ТбwЕ›jЮ7О7Mxkjчl‘UЯф2єОП^ T’\КAЌ#Ыщ!ЌИЛI@›!љ‹•,`yьЗ?Щ0вUЫjg#Џ9#L…а  JЧЅЦœ_{^qотз ЖЉ}RШOЉ,ѓV5kш%ы`>pщM>”Зzq ВЃ;‚~ эxџWЦТY(пh…Jеж[§ъ зpIшџD{™  2rЪT­ˆ• БЦPИЪЎаE~мB{ГШw1СљЏеЮVАsu­ƒ!ОYNх#{­kжœЁЋXx[N“ЎƒњnˆЂЭЪЂuоЩ” iœ{Q{ю­Вфf\;аCЭап§2Ћ,~Ѓўе%2rЭ‡ hžbU›§cC5У№цр]C}u…пpЩ{лЈ„5 …Ÿн˜[‚EYњT„!>4-FќV›K_bЛЌќ6/а с E^ЮLX+{t2р6ыЗ1гЭНї‘UтБд1kЭ ъП šCˆmыi f0•<\ђ‘gЅvG0ЃnxЉЫџ še›ВќdрКЭЩ|jдС†%я]sбљA?l‰і0˜†W!„Ља‘Ÿ‰д™яъ?­Jя" ­ЋЬЮЖйвЖ@.Њ”ћйX~Рю-єSPЕяg{q›jbBЃ8цINнїžВ8>„[7ЪŸЮ`BdhБ[ы-B˜=R$Ÿ™dЫ,ѕqыЧѕТ:ŒЎн юFЃ7Dіvo<ы~>™Œ‘R1‚оŠBR3ў Ж€ќФ7dё‚F[в&ИŸ (—q)9#mШB01UlFђЖ>KyЮDzc14rЊ LLGшiЌX€hЭ/MAщій|КEшz М_Їг7нп6‚ERОЯЋ/†…Фї" "‰kŠ(ЪŽнRкXб$8ч_pRJA;*`}#@=ЩрЇ+Ÿ>Ь8р5ГѕTФ9:F}ЈžCЭš…езеЅ›œlБ' ­hыГьљtч>kЋДб|дьџt<ЊK—5Њ"ќНЂU‡члкЖrЧ3Џ?bЙЅЉ‰ЙoУЧt№M'}юЯF№~шy iёB”.јкLSrYк›e)ц№џrОІŸZAЇ˜}шoЭВп…РRьŽ|ŽЁeє-$јƒjаœ-џЕЊTя9ŽРй'ИЬЏлJaŒ%зžўЊ,rTОkяOg"Лsў~ќНй'\%uw]9 uТФЇљјŠmЁC жPШфІ†ии(Јсp7њ,лZ*d§…eяcбѓуЗ6Ь БD Ы Ђъ1 !kШ=G‘{-")ТјЮ@БѕsU`Ї–(Ф‰оwRnЮјeіЖ‹№™?jбqПЏЕлЋdп[єюEDэŒѓЛ…І уŸl‰тоТ;OgI—щ)СШЗ,\У+gДєЭ„šѕ3уpo: ŠEЊTіЛЗž ‘jв=C|ЖвтLНœLtmЈП)"–хT‰№PvЩ­`ЧцkАЬњo[—ФH ЛAHћƒJ4Мžђѓ/ОЙЫK§гВvШЎЕ4 Хsšr;‹lЫMуkс|7ЮЄЈ fП2 ў!й“еCŽMw[­“Sь"Ÿv+­2wЖKfEPнNPЦlЃg8HпЉЃ+yxi›нœэЧЛмцдZqZМŠ0Ф<%G—Ш’с,мЦ|б#сАўЈŽЙћpы§ц{PГ€ОАЋЄ&ЖлsЦУ:l‚Ь" йС!БP=)lЮ'RŸ'чЅ=І0-„Х3GДЧjП з^‰ЌшƒYIBфЩvЋ:ЕSял{А9Ÿт Чѕ H§0&GЙ€oФбs §" ;%OtŸ]кЉ†žRс пk~НзЬры- 5цШIа[Ѕf уВŒVё5мn‹nкRХѓісV`‡ћГ>mї.O/5ёQ‰ч н­ЮF IПЧеЉюЬ2~4ыЅЋ~і!NФ xќ4ь як†rWcюџ]-врЎšRцфёЌ'…bАe6„Ь0љЈo€я‚5ВNЏЈфд#ЕJ‘nH:в“Њ/…G>щ'ЅqKHЃюЉУВMь\Œ|ЊOлЭЄuхЛ:‘HŽе˜ŒЋЪУШ bіƒЈ•o: –nа&as+-еПVї_*$8m(ƒмIwN6d=XmБˆсж~)z9wœˆЎd^`N2ЬA€%ъrbЕЧхОtЭЁgŸi‘‚Ќ…=\є8xч`Okˆ­jс ]’ЛŽP—ШCдК ЪCУhVDIћ•ШЃ$мЬJ€љ_ЈJ/Еˆ V^Ё§ˆАŒ•&7юЪєRˆёїСp˜ШХљ UБТА3}ЈjбзC И‰ HъЛгОƒЏКС§A@g‰ЄЩКќ’‰Ђб !бƒRyі гЛeНzаѓДљЃЙЯSgUL/} з*Ѕ0(~@fХџ_GюCŒфUРщэДnˆм5iФ+л(зaŒjд,%ЩtфзЇЏЛ'/ бЬhSОЗЖX[I‚гЌˆ9RТ№юу=дP=Љj “pвNЇБзКкƒsŸK‚я‘кo›7"-TьmяОяшzФuМ2>^HwcИ­ёwŒkapзД3пччsЇЈuWoЙŸЩ”_д—Œj/™NbєBпИpтўЭ&FЬN…іј;LhŠw~L…КгЙ a'ЮiA2]œКжКМсвХг2MR†t‡~ЛЧїЖ{шћ~f—ЈТ:XŠЄЫœ}ф˜J:E8,;ђц›F3ёЌvз(ЪŒY•чzжёпQсНѕШŠпIЊhjВk–kƒXЌЪЬ ­і Й[ТзЧ Ь•= ›ƒЖ‘Bщ>уn(CЂ–YЮ,фNj}Kр‹8c4„Пo•ЖŽЫ іМpеb$йЃцДОнˆz_Ы2Ж}щ0 QЩЪ€щž•6ƒИГ%W! яFˆгGŠРŽ !њкпаt $лгKчrbhЦ рн Ђћьor!нЊЃлЭoXО@hО&L4ё& SОжŽќ9$І Wъ;Ÿ€‘5д.ВH4ѓкГ­и{oІєТў )#Ц5С?пuTЌQЈЎшЫJэLŽГ…Дџb\[+ИžM:E&ИЗХ&gэЂ?ЃH$М@G6юкЛоkД!e+SˆчщPk}ј­ЎяЈХ ПБfН+тE3вTPцд XЏ*ЪIdШП^y[=ШhѕЫE}љ‘PИуД‹zё‚IѕЫˆ567gƒМЬOSbFXЦјIŠ.“ш{еkТVЛаЗ=­ *юlУAt&&Б}Tm;ЄrFтŠЃЄCЅpсœђяB^­КaКj†лДMМCдO—Yж­:o|3FјІ† Шпбуй Ш-П№RџL„Р/GDЄРkdѓШ•…А‰ђ—№•h’`л3Яq9Їѓ3Ё)Dtœђnm ‚|џ*Л )ыєфТф­Ћ*–XcЇ‰л '~EїЃЊ|mіnAЕUЁfД(Л8CЦuЮ (Ш"р(_Gœ•ШлА€/y”Ќš`ƒŒЙfъr†ЮfWPК2uyгО“ёБ хП”9bЦ.ЄццЦ]ПЮрйсtC вЗSQПемcN7yЂjh‚ZжЧњ6-4єИЮ=BBйХnлœЙOя'З\ь{YЂToЋ}­Ѕ5н—в_ ьФ +›Yл™іŸmЧЩгŒJuљˆ(чвйQˆє•ы'ТЋМ0АрВ“п‚А•T,Q. ѕ )цбM iІp64Ђ‹#^}`љK]рк<“бВq_ŒGNFВK@йEf†.(tОZ ŠФІ BcА‚2^ЈТЪhZЄъќ”§АіКƒUIYсЏЧ˜ОЪZlОъˆCUДэЂГŸ[B”ФР’ьR1юКИšNPrVp+-7€U*Ќ5іЫ‘в…bOМэgЩUЁ”Ё~ЋП$ŽХЄЮhЫРЇS„Z‚ГчпŽ iЯЪsі€С™tЕЯ›8М‡!@љ|чs.ЅŒVUЏяјy§œЂ*eП|)Z _з cЯ]]ЅTЧ0ПмЕhKѕE!}^R4\З6“I7§Ђшв'g˜7з(оNl›ќЃџSЮ’H<‚ZЎЦЗ1Д5ЪГE`љЏЁ1З ;Є еЖэ ь%&ПєѕЎ8АQkг џo[*ІаёлЅвмxрbиM Ў P kЂC„Ђq‘пaЪєу–ŒнQ(ЖІМM\kдя5,т—дцљО2мІНamКЩ*kЗ-сю›Фя}GќЗf-Б$o& <зЉUЩzцЊУРQG-9W•PVY9ђ~З6кЇцгЬтm(`+'ЪЕ Ћфх‡ИюБ6 х”ˆ8і1іHлиъ%њ”(Q5m"zП@ЖТрJ3йЗ+Є^7Ќћ‚”ž8х›Ї-jѓZ#йAцjb@•PVB_ЁVzйc•2“k&у Єо2lуТPJjG.цƒ_ІX;ЂФБЋ‹ŸJИСo§р‹НЦЌOрх.D‹к —ДўAZ0+9O~“‡;њвџr3IХ[ЙPAя)Ю§3БћУw-TDxE’Сqj•і# |їЄіgёИў&—ЪЄ\ЬЄѓ#яoлЎtœ:—ЋIRC@>@€О•`ScУйЃ9 ДЄЌМ˜ЉЅѕьE­ю WЂЂ…цS‰,a0Db%—„Kј§ЖѕS• N#”ЕJTorc КINknСu9шPхЋ№шˆЕоo. Ыу9’VŽц6†Tй$ЖˆЌduVƒѓ<Йfžiуд†5цd`D#6јихCљc;ЗРmТD Ъ;О$ђDъљхЈpFЯу.4О:žk—‘—nW“?Аж…AXE\j‡N8‘Г/C&ю%ю јрКыБ(ЛќкК`Ч3фхCЋVŠТ0Kг ЗЦŒьXJуЏ сСвgњЩ EW&zЩЗЦќaз АѓхoKz‡Ў№#^З.ћTЖЖт”cЃ‘и ђ8ИцO Џ7XJ]jз^mчћY‰HцІTГ/Kdш AДюъ РЖI›–/ЯJ<˜Бс~)џ " ЊЦP …ž Гf›Цт+dЂ3ѕЄ;T$ЅЫ†шFНž0щнЛяч!yi&ЎќzƒІ]`dПТчкДIЊъЇ™y; /фNв…ЮЩ&p"J !ŠКАOЂhТч(2ЬўЬзб^uoАео %yЮЖЂЊtnˆЗ„ђшDZїHЫ\žзtАhNˆnƒ[qI6mщ™xvЃЛЋКpкќЁyXyф Џ4ЖЕЪ`(jБат)йёЄŸRažй'lОс‹AfжП}АЅTGТр'jOZЃ\оKяєQЋИ–OЗWя† ~ 2 }РђJ•\Tог› wF4`ЄЕтџ\єщНnШрЌC№ОП_5;ІЊpИtpи$тexё?к‹AbчЪ‰r т­KАжaJ2gAZЛ§ЗjЙ|ЁчщљгдLl,G€5щŠжТrpMЬВЛk5dmЌиeœ}l ,е"`-жzшg€ЕptЭHљ­'‘лЗоˆёBpP–Џ\o.”Пў6Кџ?ŒWащ%Шtя+ч>РіёЩђIЄЯMНџ3S •ЧZН&9“Z_аЙHkjХї#§Оm3ЁёЗœЦЅгЧ™ыічщы% .сƒТMп•LRAs@™šжh,hqИЛP›ƒvъ pВ­}FZŽв /q+ЬщїЦ/йŠI‚| TїKPћ№m) зŸ<Fuиь{ђАžЙШђщрuМvФRc+_єПm :0і„ŒyЩPлsћЈш‚л.ІƒЮХ/„4zбгs:qW(GˆR8Щ@ ош!јєъŒkFгЧКЗšЗС§˜+Тк7з9С,„Ї‡Џ.Т:OЄЛџP?‹ХЌЁaѕЖЭWi€Я\8Ю3йnўjЅБOѕ5˜лЋЮ’ФБЕ?=qЩ8˜`hЄ•‚ЬЏЫы—н Ю‹аsЫџ)џP‰ аSFƒСŒЯэљіУXэѕ7P‹мm‰ UEBЄO€кržь@'ыБѕ‰ў-іvzЩa‡SиљЇЛЉ2ЕЯwДz%Б9šЕ­;“Ќе„P Гњиџ>Sт},lЏљ3Њ] pМылюДНЩ­Jh=вџ{л2?А?Ўи жsTїв0и3ъ•pбЁ&‚qвџ3ьщня §4ШiтkЃWg}ь*:HЈЌЃŒ;9#3„ефјЯ’sqЋ јџ=ХИ0рм…Ш•I §˜`ЖPе?дш[оmФО–БЌ-%Ј`Xpс;I-сxmє†)ѓъЊЧ~Rk*љ*f§q–—­ {"ф86шt…ќšhPк E,F[пc>чEыAHОЩ.h!ІH€0ЌпА„ьFвo{ Щ3јЗ Žб хиЦ/ЎQGё1}jIƒѓ6R+sGVПуnŸ\at&ЙЭъЦ>uЗЩМля§ВSЖtх†xqУжcвНSГєžjSўK:АяcXc{ле­Жb/а—eбУŒ` \мLчІs+\эЗT_WxDч+,\јЩЭjS+jп™ЗЪtВA@—/А.S['§UuGš˜5Ѕs'ГНЫZl.х ПНOEЋ…Дў€‚mжчІ%йˆcђ&yН<:ЂИ…м0˜`†NБo:зюЇŸ џjNШ;яЊП-WчЄЧ„ѕп‰ихцэц'ЎЗZЧ%§wЎrЭ0˜РД^ГМЪљt-ƒŠЌmУ"4.o`ЭmВnмСАŒт;Н^Tк1o‚)œЪgЦђР[W<пУЋeЕš7ьн|j' ]є‹Iгu2ЉЎГjжЏњыOиъoпйќдњтћш54еzcеj˜я}ФЫУzу”bœVтвћн qТ!uЙVёq™ŠЁeфR5@]9XЮrЛУЌ%Э#пiКL;Мѕ—MС4ЏœЏжп gѕ;pљЬUvЁAђmхџF)ЏЄЌ­Ж'vТтА„№Дžю‘Э—g+ёjрVЧ`™†RR`Ўђ;33 Мk„2*[oчсйCž"P…ЎШ(БШЁх*!QЙžyžсo},  рЌn р-xˆЙЏтІ Ыј^йUдкЭГо™FKmєYТжZѓіуђš%:у>‡б›k№гoD”ј;p9` cšDHg*3@ыѓNђўHЋgЕZНщADФо[аЋvМЖЃЄZ№iкЋЬчТМUнчMN“VЙч@\ьz”ЙјцƒъйЛэQAои‘vп?M(WŽ ѕ­>9eФЪрИ—?Qf{о€C§ѕГŸ^ЄZv…•€?кьWсyœЈ8Йђ‡ +JФьWЯQ•уVєŠ˜•d†p&џUpЅЭŒ' >Џy/*ЃЮсЁŒwкніђџ'АiыяЂ„u Еˆ…U%ŸЯœл!ДГiЦ€sџѕkЮ<`rЧ.Я•1зЯ&Јл™љFѓеЮъyЋЏqjѓ˜§M›wrŠjЉЌUbˆ>0!ЉpcП{і•.G–œ4ЌрѕЙБНmŠs^Ц“Шs7БёiKН“\гЦ 2сV_PГв‚тˆыwг)ƒёВЧКЬЃ(яћŠyO>х4 !§ti\`PЉ(ЁPЦ‰Fpd.&%Ÿ9&˜Џ€nЯ*№Ф+nЦїмŒ{љ­FѕO˜Ќ‡…ŸjќнBŽ№IЙ*iЖ{!­šёВйзQХeёАrYЇЬЎбНФrJМїЏыsk ЗИ’ D,1|ОІж‘ЪЁR6таЧЅЧ‡ЮЫћ˜nкХЩмжш6`БB$‡зPНciJyiяC‹l€`}аЫЏЗ—)ЃјtЈ?tіƒѕpЎБ+є’‘ЋчŒˆf›Р№.0#iїЕЯhїx2%(‹ЎЭ№ю˜А€hоRф_іжŒЅхэхrQ‘гYfg"Џт†7xр0В•ьq-Dƒ*„QЖj% v’д№D GOјтіпћqo[8ДЁїykSЎЋє=еИEJ,е…ГвХ€3Ќсzsq-ŽДœ`s+d;P$?цуЖ‘ЏЉаoс|њzљяЋЃег~фЗЯ’—њКо§]“рО}>JЧъщsѕuBѓYЅi.ЮцndE\[1ЩQЅˆп™АЋ№>KzЗо‰vJЭь&г  ЯЙѕОНе‚ДГa(­XА#ЈsеVRтfdїEnЋ›1G>Y{2е†БІБYГ‘n}oУЬй>Ъ;Й= ђ[ Р +JQыЛ!вдG>—ЬоЊ№šБLTi™АYйЙX)Ѕ,оЁњвt‹B:H1n]фOб§.ёFFп№_ŽњДї*J#ћа& ŒР%Z§yЦГЭэкPЋtkQѕЏ`§ŸіЬqѓѕ-3Y{КщјьTyў ђŒкЄШЭж›цž=Ђы‰svЖ—ц)‡№O,u -2ј˜""япŽ& p6НpByЉDиЧћ'wюЫЁѕнh{ов ЈйљчжœEтЦ•ОgєйкMЬапК}т‡&ЕюY і)ТГІ2‘1ёщцС~[:~Е,№э`%$&vžЄ›NлЖ•iєu˜пІ#№EфЧ:A?ч[/ЈЭи™}$MG^Y&rПAuOuЅ‚‰'ТT<ЧнFсьћЗ8&ГrропЗ2YМРMЁ§ЈиzSШhХ(ƒЮbбг™Флo‡мрЎ/Ф@Ш˜ЏЖ hЛе­‚‡G~Ь,nK$@ѕдЛ.хБ™Ќ—˜Л­zЗЗ‘;ЩQeгЈƒiž!‰"УмJ7#\ћ‡ЌЬ ‚я7ƒ]4АЎљЛ‹КХh>Бd pѕY‰eаІ+VЧа†fVˆЄсЇŠ/0ІНNƒXїœІГђд˜Љвк&™I‡ры-@WЗё'eоіњ5H˜G„хG›tSžѕь(rf@ржі~мєб]”МbЄРш№ђVЎЌРРљщЭѕ­EБМ™nј€lЅЛ:‰А0яs€кйш†ы>Ж1^AAТЄ@Р=BУ{MŒЮЩyb%сY‚& Щс7<ЊGщШЂжw1ѓЃеЄ+HC‘ЗЮJ%…<($2џuђ0РзЈЄ щ+ѕб4ˆўR–Р: ЃC€Dj&#шyuјntUф Šm|L$€š ї5gc^‹т–šЖ2Kƒ=Щ]ЅMД\;о:žќРžПМšБ‰0М —Ф/c\B -B‹§сКjЏ+.ИO˜yѓАj„-UІЭЖиП „sMc)i Ср2bwgГJшЫc1YФ!Ю-аšК.n‡Нu'Ћ‚Ї)—ЫmђzнLA_Ч+яsЇД‹m‘ŸnYLdы№fLЬБџˆhj8‰ЯT€STgеН\ЋF3Ќ_=яC5Уд%›’‰Sa+œсƒЫЁdŸ$Ѓq4@.eJ뇄ФьЙзVtŒиэЪб]Э\qH1§@u‡CСcЎн-:ŠwЙŽь<ЧиГДbчС}Иж№NйсcЗpй§;RХЛпі[љ?gюЮЗЩЕ yЂХйœ`nГѓСŒПS#Чџ‚‘i*ДјAЎЕRящ4V§фdќї}ˆћг\›mBPO”ѓyлй@ЂŒ Œ} CЂ…w_‡UТ9Дп†пЊ+мXuDРAЮ‹%A?K75?Ъ G3kK#_aLоGДŽнb‹‚с6Š‚k ™цzЇх€k@4HQjі@V@I–2{]Ъ‘›‘ћхыHKWoЦЩчЃ0^*u€њzЉmе№\№~ ќ@\Уf cЖI˜yw™ (= юy!zыoЮ‹"NKРфtњ}†ЉвB}ТЌЌМC §йžYцЄўЦ/.P$йИБХѓ чл\V­SЧ3ќТѕ)zm ЧSЪU(п­Žnt>гФўн­†ЊoПЯ š8Йё/‚з†qO“ДЁјчС † Хiр2)4А_jЋcжœ$тёP‰|ш™ыЃєV%Z ЇЌёzŒ‘S[)jЄф`Ы(УЧчЃЮ!cFЅИрnBмЊїZ"ц[qf6†f.Џ˜ыYŽqB{?tkЈрљFл ˆоŠЯZњ.{ДєšУС/ы1žŒчвLл"•ЖЃx8WИЯŒiэsу^ІЙUžЂwп0Ш@ЫЈЁƒx`чЅТи`,Ѕe=‡!\‚јЬo8јVNС”9B"љЕž‡І[љФЊд{J惘*Ю`‡ И>ќ?ЖЕ†u,„Й­WёЁЭŠв)Й_ХЕŽѕЋ7Š^,ž_}cMPHtsтёŽ…‘љXiž€A˜џYs17f( 0ЦяЇгfрѓW[ЗfШ”РЫ Jбjž ХuReVйLЌјк*|+r'еч71z"‚Iе“ЗDT§wлЅБЏчўLівМ0IlcNШKyлрž(Q1ˆMЙэбЖЖХр№Z#f*йИд`LƒйЖHЪяz6Ѓ = gmŠћJ>фqa’ЈыХЦЁ"3їb%/дъdiћй(‹0, ŽЎЉ‹6ƒNŒГ Эък,pGlkn2їaiЂЄJ“-ѓMкƒПyP[_ъьB[Z$˜к8™•ѕЉЂK6Ъз,. D€C4aџФфѓЄрsєPŠ:˜ЪH.žД›gСй…ўW‹Гй G3ьђžр­zŠ“)єmг˜JІя№ŸСQ+#}”!{ЄxŽ„Р2…ЩЊsО7@H’л=nў' c=ФИР:6>&л;j@MвъuОP§Щ№hЭ\ШЖЮ“Уšа_‡ч0i“”н"ёімВ‡МOJQ’9/-Н­_щ]0‘‘ЈdVЮчаР%MС ˜Ш_D0ш;2сдбНЦE~НР2†:Яa6ЎDqФнеаBЅжZвщ 2a{ў(:ОЅшЙш<эа“Šу4–Єњl$3U54MiZдЛџCVAlюе|9˜Ќг “b‡m:6Nmд:‹RљЦgžЙG 8}—м8E7Нhgmў‰ЇцE/C'еоА5Э2ˆїN­6УшКяaHЃѕˆ —yŽE‡‹тЧат„|<–LАВ#}D6GiЦDд8јkœЌŒО}iNw rШšаŒ“s'ћ(ƒ„B…†r&ОžшHдРщЃьЊa< М’Њ]э;лs2g№ЁMћ„˜6б…1 Ь1=YВЊŸпf†nчg5“<Ћє 8Ь1л3ˆУ №шІkBМjJЂT#ŽШ›8Ш‰:ъ•3ИИ/lwШ–"jд„‡#Q5?Э%мТjlUЮЉJј/Z›ЎœFФIЙО<ђ3” †ЉЅž™Љs.бг]Ч›мѕр€Œћі<"Зg|˜1уŽЋ”Bд9!n%`LЭ8WуЏјШ#F[ЭђфcэќэwPЂN=N~Ё„ГПDqМмэJэna™Q/ўd#”љГ‡теЬp2"ƒЛыŠцлŸ’D0БtНYЁі”}ѓ2q>л{|:uїЂEqmUfвпCжДš4)ЃN-ZЩя“†,N0Ёљ}G7:сz=!†ЧшгrЂ U?јКZфto;ЌЛ'Ѓ˜БчИ!Šп*Œ ЊpёŠёPЖц%Ѓд`Бr†(Љ[oЯжеЇ№ЁtœдІхQА~ƒ5уыq“‘/.оЊЈNAhоŠ}а л^Бе%…ž%,svfь8аиzЮSІњ@мћыJе=`u7"‡ё+^ђєі–МЫј*т…Њ‹ШbAŠll4a5ћќсвммвp2чы=BVBъО?Њ#iž[УђAЩv) QG–јƒ(p>…Ђ( ;У$b‹­ 6Ѓo!ћљY2žім6zУНJК€­ЕщБЉНџvі ОчŽТЦ“e=(e-“Tю“нkћnЖСќЦЇхкКэ>BщзЊЗСŽ…‘š0˜“˜@Ÿ˜К:ЪŒ™ š:ГQ3Нq|*цZh:qfпЄњтС‰ЭGON!?ЄœћyНїїН‡тGќ ˜g\ШІjœS•#nКќŒLD?UT™Mс œх[ж†k:“RБF/LLžщј+\_эJXЕGw<Ÿї'MЫ ‹mВqћ„щтУОэL:eуŒ‰N3vnУ|-dжФЮc%ТŽM _-w‰…›#0фFхй]™ЙУ>†*ЧŒ+ŸŸ*8^‡&…]гб M‹AјйsЃХ…ВШ—‰+Ј_-KœьЛi-Лъ;ТГЋЌO;›ћОр›z Љ…už @&і7Тw­ЂЭU˜˜IZˆКLay„Н"—Ћвw?W—Рf|У(!xіцС0ЅKnЌуЯ№ймЫjŠLHeˆHП“a^!Ку]žџxВН:с<њiї‡`•P—œwГРЫxyВ*Ÿн8cќПylF7FEOAD jьоƒф\-е•тd!Govјwy.YDFћртqлЦјТ`тnm1ї\ЕA1р2К№Šp \›=aYо.”# 4МЕ&цJs}Gu}.еАі0;ЁNѕВ жо”э4ŠШHIхtДЇќx`уEЧЄŽhбЊˆЮѓдѕЅжЇbЬ Щ/’Ьј7­9*VoФtцѕэ›dYžЄC{—ЃKцќЏМ—цO<І(Ÿѕ+QсжNg[ГшŒ х9wєб–{Џ"шyљВЯѓ” K T–Г?ƒxЧыг>™ДZF<л‚=Z№%PувФpЭ# ЎќЁЯтoНўЌЏннТя ЕФ’ДОZтаkўэ^1 б8‰Ї‡‹ЭBзd})к.'ђx€_ iСз|#ЕLяšыЋ§pbJ›Ш*_.є$ЗUИЈlƒцЙ+ќўоzL™ЯБHˆ3ЌиЬч ЄhА›Ах*ЄцУЭўгУ[P‹М{ёЃн™џ>СЩфуђl[ЎoCІВ•Œ%%7ВЋёЖ=8Жочkmf‘–НsьЙъћ/XЏ Ќ#НYШ‰іжgМлЏ•7ШDЧ 2mў=чJ•x)!й’kОЗ>Ї8СРЗ–’НетrѕЭѓE’ сP}СД`P8‰ЂКC…­ўU A5IЊe)“_Эk}eБlKРmб/Ž[ПЩ>nЕХ?кы•БИF:YЛxŠ€Ца#T­aш39]fШ-hbH…ŒЖ59Ъ2ыoЯ[6г$J:јнтіѕСРmдЌ–[уЉ‰ђЮ\уJƒŽлѓЂ‘[Žдш-№КІ5TZ‚‡цХKе6бРk F˜в2JМS›ЎДсѕWвОРІЏќ’цYЌЎoтП„бЬDнПчС † Х~ё=JЯ—=ЩЗТВЬ‘ ъƒХеARРV'pT ЏJZдшŠx Y†ш;!6м0wнх’4т§ѓФ–ОпwFZ!бФї^\хHЂ"н*™68 Йэ’ќ=жеVкCќ"r 6JъпФџд“МH‰ЃІo“•ZБŠ›А|zZ…!ўsИšч–)Ъє!Š!цюЩАФZўЉE3ЏT.@5БЊЖ-ЌS‰gЁ•Й­$ШПВПЄAМНАКчŽM§Њk;/(™јхuBˆL)XNЮтДkвзš€јњŸдšвXїlFЛРж?ФЫ‚>*сХZ(…мo_т]&9qХО№…Z{ытaf$sЉJЉ`BК?Сфяh‹PПs3"/Q д{yU–ЋфB€Г›& VklgАл№$'m0ПjjЕЖ„?Окт§ACЊXР;Ц—&;Иƒ[œsшdцді2DЅгЇ0ддS4™4fЈM`+TІKўJQФ€( Pщ•Ш O~^т*J№\j옳795їфЛŸvHиA 4jњ—ЙПšk x4Q4јябQQ›Ž Κ꘣Ч@ љ"?ВpЛ†БЛ?jV*fj*/‰ВRХ WЄXЃЬ$]ЅЇЖХЏœ‰ВƒвqпgQП‘ЃФХIзЗЊ 2ЏVвЃ2ях!Ж?H,bT‘OTК[Р{›pxtL^•ЫG$vАZћlаŒfэYzLщФпMš,ЁѕПТыш#‡<њ§0ŽацЯmBј~жS'JCјџ#щ~_ию"і–ц:ї)s\„Ж}трЅ-LLЛKуёЃАHxЅтWHэƒOПnNz&ВЦљЮYзЪUЦ3DojDгіЧРa­п+,+^pкБЂЪDJ.2kя„Љ!˜cгV­фЫЏ_PГŒ?ЕРК; ŒѓEQЦыIш%ѕGБнOу==ŒIЛ_ƒŒš%ќ(ЇАšA tЅќГШа‰i3,™`ЅˆѕЦ]Ќ;Dиш{0ZlsOjѓТ—hzщчк,лxЅT/ЅЮcЌЇgЋD‹Њ}|шМ№pжЦт&s№ЭsнCпвyСќ‚Ў‘}хяюжѕZВуВVkхнл(*Е!^ёЎ№Ю•М“nqјнŠп)ьЌКg,>Љ?(ĘUr§"‘|ЫQCЫЮШoŽhlЖ[БtКf™*‚ЕйTœC,dнАВ}і(†AšВХЃлu§aінPЫ<Юgќ+ Д9Йы“%›3JЪЏ9eч3:3&Р;§+#єcMyѓ6?ь>,д)сЮ?р-ЯŠ qŒЬpи`^ =ЗM`GР#Чщ'ЅЭІ ~ g`…ШЋQбr"…їНnОœ"ˆЗц\ћ(ЏSЊЖ†(bЭ*о8i‹љ $1'NБOУѕ№ЏУ”‰бhРaт\u‡…„аХvsљ[шЛuМ)‘Š’іЈУzпО$ЕBЮ–+Ёч$ƒмmHš9J\љ4 ТjщŸ‹˜Fф`!Яџ|ЖЙБ{ЮtУHЉKёЏ€!ГjXHёC- ‘ŽˆЋч<_дЃ+›ЮмЋеžgA4oЊ@Щ bн“$}7њ'в'бсpQЦb“Ozб'6љJАа‚IVдFLAJ{ЅЅ>š”lўžЦџEЌŸК3XcŸ\I‡Wegепр…Ew"xud8œ—сеМћJЌђёї|X5b џKнэ6uњC2/дnьЬTZŽЅ„пзћcXIГ”‘тАmёMш1™! о|к{^_Свъ&Ќš;QЉѕОvРˆ}ІDьШН.lьш"yTЁ,;.єм’I.АtЁБQќлh›с! W жЯѕЕQмЄ,пrht€ьx•@p4fЋяp”ˆvЧš ŠK§lqЕыЋцT_xЙ№`вqdћ…ь"РЄ@єОPrQrQdПМмšѕ Еhбџ^•Ыл84}/ыу\№є!_є‡,l˜іЦ„ЅЉeЈs•фDlдЌ‚Lм)Ќ}45(бФЛ†_ПжїЕbA%й™ЫЪу†.‡Ш<Ўe|HХ€чнcшљ§fXXќПлHЁЈд…8>5йm(‹К"]‹(П@u"Иф|Г•Bд#yБЯ?ьљsO?Чu_‚ˆ0АџD›•б’йŸл /7ѓœѓ(‰eQd$kLПќ cmюЭ027Д†˜6Џм=чЙЈ{Љ~ўv l№Дј2ЇRЄFbšFЦ.<Пš›Œ/GЛ96*ЮfчmУ!ФоЅД26ЉФЙhЩщЬцлПjувкЪŸ<=сЈњvЏчЃ"O<Œ™уCЏŸ5ŸУpYКq;ЫќzЖиеїЩ?nѕа|тWb9™/е”ЫŒЕTKzѕѕЮ*фНлW1ЌсlflМЪІWŽЊПўгw“|D*F№2ЮƒP )3уWv[Їž—И]р^‚nь=bz„SОŸŠI‚ќ›’aБŽ FЪqTЋ{ДёCI‰UiЫ…*;et–„n)ЌњЏnы!ДŸаkƒкБ›J;їЎzxUх0л\Ч:XWmЫЃI”>ћ@T—ЈbгШ8;ЬlšXЧF$ …фMWŠц\zŠ)§*§iгђXЛxџ Mw0м6п…W&7lЛй ьƒЕ§‹шГ]Ѓїžы”—M ђ§EЎф3!hЧю9Цїћкз-L,nз_Єœєу€hХUб"Š˜SœqАЖvTПŒuйВMТNќmЙђэ(фТMSTQВьPѓЪћУD IЂмŸЖ”Wи0њЩKfдЧўЩйn3jЯMЪцЗЃ іhZs€ѓ›цŒy$-•g˜§tk8ћš‚А0A˜LИ jцЋхЯjАяIхъУCфVГ8DƒѕArХ|Ѕ!*!ф„KЏAбˆ7‡8п№yŸ%ЦэЪ[O–ЃCКь͘‹x™Э гжЪвŸхлАc}Є7тЛ?aЄUTийe ьЙx­­‰š6š;0LыЙSUБХЩ.БКРнpRY„ `їoгggLъЕЫџ?= >пеciJtV›V?@–ŽЩНЬ(1ђtЮcвž7Ц€8 U†ЖйєFrџqEоЫ^(0€Д7ЬЧЅЖt5џдуЂ9QaУ мѕlор-^Vп ђ­8Klн­МвS_DXшzМќqсEd‹П…TSbї”єШ’Vќпч№злэжлэйЯсбю ƒОнiОо‰/ЗЏ\_nМџБ_nв_oP`ѓ$GСгЦQoф,ьџ`qŸ—zћРёb(вIАEh)ч… O–|бИ1хІ&j42рГ‘0П[CЇlа`bЯ žžŒ"tbђЄвЯOЄˆ=С`ѕ)Б˜‰ЯЎ1e#љЃ9Бƒё.I_ Xї%} џ€;йИ PzF 8фК­ЁBo‡™`@ЋuхhD“зD,‡qсŠ:Rz G‘NѓzяLпN4њTVeГШ%:Ё}і„л@™ƒ­ РЫ R#юjJ"џ„}ЕА3у…УA%pчU}v;ях’>Даnкxњ†зы1I†ŒoQКƒeЯ;рXN€SVbяKeM­‰%:sџb>`‹qЈšlЄiГзА‘еЃГPМ…Ф$’С‘~[\>v}хGn§' euІАМэзIЋЋЧn‡€хlCp”1ъkmUа?ОЌЯўŸw>Nч3[bтR0ZжbяЙsIrŽAв…vfрM‰f4š`ХьЭdќXы’^ˆБ›нЏM~Cн’С;є1 ьј ‰”0`44Ш'њ;Ш&Яжч"п>Э‘т3ђdѓєїKѕ u’уРb<зю$IŒšx5чjyЫ8Ю„х|–юсшEвДeщ“'ќЋбZ„™(Е?УPЦЪ™Ѓ Б№h?;щ8•ћ“_iODЎ˜]т„‚|ѓlh@8 @іир•“к&›dˆ§лP ЏWY:кžїЫbХ?|–`Е‰glŒnBTћxц9ngЇЅв;e?чнiYcqш?с[6ћАебe[юЛ<шHŒцЮЇu 1<:Ѓ§эa3дљън$КAЈбDVМTэи ЊƒІh$:0mf‹Vѕ[љ]Џй•LцКЯф€q•9 и4D"GV2ЏІЦGa,‡D›’Е LƒЎ=ЛƒRЌѓ ђЊ~m@b;[}яЏM?ЖQW•Ыњary%џ!o+fqvљ]Т!Ёп}Р ‰R‘эЁѕCЇ :"ЛiРšо _EЂ,рB—х„тH0vБ'bzЮљр:–э0а‹яžuЇc{9 C41ѓXfЄA~9А•GЇЩпrЙ};тнlDь‡en>ыYВр№ЬHїЕЩˆуџ0с6Znегv|юе—йХ…‹ХОhožL˜а\іŸ“ѓQВMчз…Є“їdžе’Mƒlрhˆљ•Е‹Lўџ’2аešш0.x‘Ј[Ђ_ж˜[’… "ЗШ'rк T њcь€;I S…2Dє№вЎџ*I`% …<D>о™ЎРе“КпНЩу/ЯlЋЙ#юБЪi&ЁCів~UZa!Aр  ѓЄец аARЩТќџS Ж—Ђї™џ_ˆъmeў|J„џs&P:ю…yЁjўmNnт˜’D|b\ЌyёPOтај{‹.y„)fџhxXђ~ž"кЏѕОdЂ/ћЦШarFлЙv‰b‰СP4­t#UабЭ0„ бЯZэ4 ж2§~РЩэ•„^Щ Ў€њєp„ЃWўXяAƒ ЪжНˆ дТФ'ћ uЁэiх(тая€K є?бtыZџi…Й{€ѓ вp,Жл 'ЌгЂ!о~Мj"ЉBeжћЧH4$3Ё}шoVзѓчИЃ2„М {MИ‡,&гE"_šў~%@,) !/эГєL л/0eЦдЦрШў›Ю?ИxSЪN—lШЫѕП2•ЗZ О‘ SmAщ{№нЬsтяИ-ёJдЅ;"† ^LяBƒ›VВFrТ“&gБ_ =НˆЭї2VЋд 8Й„Пњ$xpќњйрoє,ЭЛ9m†нmЙѕSR(\xнцДЖ+мw Јz–в_КъJЖЕо1~ZМв"гЏ/[Эge#8ф/ёќНZ&LМ. ­@зЅb‘iънЉ;жЮh@ƒщ[eyцЃіДBЕ ‡)љ§ф­2p4сМЧY•П|1§EОМ`3ъI›zЛ[+НшьCBœwŸ*ŸС№ ЃžxšБ '„8їХ3ЪК8x3†шљ| 0fїе+ИU€ЅVгЦcИБZtoaog;X+!ёжPo[$ЈОы]ЖКќњР>ЅЪtН #0н.енбЁBОПщ^'бˆ|› йфL›чЦ‚KQ!—oWrмЭŒšUЏ:]КЦж“,vЩ&Gй8Ы™Wњ§—офV=8Mћм“янжaTХB4-…?сІ]Џфє5Œ„'aдћŽ™t>ѓ^š ѕВГЎV ИоcŒ1&›T•†œ‚fп’™ƒMYrQ!В62Х1.Šд/KИА‰Х’'цО §]e?­0г‰­•ЉЭЇ ;ћж іHTLxё0ЧCхЅчГКczWъVuЋXpŒЎmТА›юРDŸ sŠУt=BЫK~љ5вŒU+Єш]єpJНХљ ­СX|›‡’ѕˆCuŠmњЯ[љXТю$,wѕКннwAЬ€2Ъ1ВP•ъЇ„ єJЛœ"Ќ:i]9Э6pМА˜Сгљв Ъ%ћжнЕ”ёnЊNT…О@†рˆи§ЬpiWzSї-фуЭЖ•Ѓšцч’T.ЬХgЊV'YAа(Ј5ŒЇKž.(ЭхьKU{4§™‰sŸ I9ИзsK.7сa\’JqаЬЫЧїJрЉD NnG“%– š^фФ†tЗEрЁЮ0“yПФˆЭјАЭ‘ЖфŒqх)cC/нƒVZKяhŠ˜В{ Xqу[ыЇёwб;z Зы9ђ-Уц‹’З№ и8РАU€YіK”ђш X6фЊЯађїt). Ёp~ž Њ1YZй0 Х|< HСTcQЃadіX MwЎб]GјBŽфЩ~>ЫUео:С*'UЋ B—22жС5СјОxЈ- KcecŠ'ыЙЭюЯЧ ФЗ†‘В‡#ЎЖw5їЁЛS{мjqзьі;ŽљboЋљiра’йŒ$=єЮCveК(—Œf}в\ѕСыО‚•qЕsоЬчТс(‚МЛWиа-ИИlDІ}шЂS%гы„C^$Ю#БUa­‘K]{.N SеСѕWE<6жšnh&ЛВпџ>>ЉџpKї^ПЎ+WѕJ nќџ\Сщ<БЯщ\­|3wЋ”Vт+з љвЧB:Ћ1ќБц 0т™kdŸŠћVƒŽжhнX“kШYyь‰ъТx§ЖkО '‘Т№DKвWЊК5tŸю ZcзAД\юћqЈЏI<ПУ“бaјž,)“"ЖаЈИЄЪ3ПШИхН.iќУ4ŽІ$iрjЩ aРb#zFoOБоN)w1ЦNћCmЮ:аХмiіѓяsG Ъѓ_Œ]~в†Ÿ‡Z,cŸ ПёKWМBŠŒcШ‹&ёЧя!ЁОНa }WIє]Хщфб0ёЛ@јО:ђyП ˆЙŠ‚жEЁ0сыPЧ№р`._i"ЪХUЂoБkB8‘.6"ФH{M†‰М*ЏN—Ѕ“4фь у•ZY”ўhћQ `ЏSѓМЖ_2Њ/ОўLšє1у5кёВЫaвcy3џ4щ\С[фvp‚Жф”ћКtаУФѓL1П‡ э Š­ŽрLЛ<Ц&О^LV|ба.ВOoШ'ЌхСC †•”ѓ`”o:СsnБiмќKXуj$ёЬa ZЪЇ)—ы"wР%˜~ўrЬ(П^jOјђrsА5йсщ~ШœzА|ГўФ"„' ‰ц’кfЋЅyЭЄќСD›бф8Ејd7м!я‘)DерФГпbO9r9М)ь:І,AА’пКЋnœТŒRu\ /VВПфсАЅFЯuЧкЇ|nТjв:CŠrО(ё˜щцžд‘‰ЎЃр 'ОЧsћy4Ђ”Угљz6•Џ&1ЋmЉ‘нс*КН 3я’PlЖoѕ“fjГяИєЃ•Д2ч ’ХЇТЂђљZ+ZАо ZЬuя6>Д1WЗМрї‡@ив‡сЙ#,Q%чвК$Љ†pVŠœкљ*Х‰#aZчАоЬ…тˆмД юћ†­kRzŠтет3ќДMлOш!OІр&EмhБš- ЊёžwMCK№МRы 4}tfЁМЯцЎ •]x ;˜ЄяЯфш\}’ЈtH}ЉЂ›Qўѕк:Ѕ^~aƒ…Š є["Ь,­TЫtх­GZяm" ,ŠХ(?р.$膹ј)ˆщ‘ЂьлIпrGž2IC е†ЧAD 8•—ЫЫJ}x—Кžш{l\„З ’Юкђ Њг^ љсѕ •3ЃRђ6Ќ<œА+ЯRs№ !–оЯ-MшЋ˜,НљaћЬоŒlЉЏ;‚Yap)‚JЗL"жь[ݘ4nyј№™І$G„tеtљ9]“зяШХ>rYm Д6eoѕхбMRnЫrдлYЌrAяhЩЋ=ПP.э№wgбЫlќЭШдy`†ГœFн]5љИ1уbM\`>иЦs7ZІџ“Хэ2Гq‚Йѓ_aC>т†з](kGiпШ;ьЈЮЫTФPlГйг9цŠИЗФр{i$ЋіVЛž§7ZёV"­Š•z;іЏЩню<ФќЙтBІeoа_˜,—lŠБнJ„Т№ЙЏpйNŒЫЁ’QЪF3!ВFН‘sћФаZXP&*ќ:ЩСД†р™‘гЇйШЕсБ<њЃŸљЗa+€>љяМЩЋyО ЃЋхAQѓсgKRжЪWrY_ OяыГДos!ЎœhЪВнШ3зf. вj̘zuz……їљЩЧyуCсŽѕ”&x'2=пёžšИЫ/PвH—юТœ2cšЉŠ{€d‡WНќZў Ѕ.ёЊ;šh Z~єЎ7 _ѓLПуМЇ?У'ŒJъјЊ%Сэ‹…„W–B&w6R99‘A}rУзnsЧЌ D0–Р9еВоˆЪГnF}НЂкd30eЈр–V{`ыOа56Чќ&8ЖAѓˆ:ГgьХ Wф2% 996ЇЧэ?яrт?ŽуФ4 ЎКФOЬ;ZЂЏаРэ­)/`ИXсRcЙ}Х,E Х<‘Ў.ўиЈДЅэцkŽ $ЋuRХl.ь„05iVЂxЫ—њж'Nh‰/—[…ФЖ§5ю!ZEыŽe*‰LюzР`<€д@ћ_Qe“BМržтeьVЋBНT™њјс/ ‡Gl~| dз<§Е’С}ЄFж4žйс 0ˆш€YH@Э=(ќ]Мі. 2ЅэnœР“’€їvl@  вNP­fх<@lRэ:\ЕЙЪрœyRѕњљЬЦ#Ђ–j,эЪ!lУ‡bPŸšFЫjєЇС07yV и.0ЫзZЖKgsфџ(7ыФDЫg0Л$d5Tv ГЛуcth]„zЊэЄH;в[k—јг™,O*?ьšо­щUї ТŸpуbˆџ;Б_^s"ь}ЫnбБj ГmŠŸMъ†œ~N‰3ђуџ`ўД6К8АЯмRKћ\GOи5GDŠ0м‡ˆ{Ћі)Б•t›Ч"”*4–S€ћЇx+Œ}}AЧ>ІљЎšњэД‘+ХъЯeКСЖ>r‘ф>э”4@бrh[ 0ЗЫqwгŠЌцЫ .ЦJ№‹4—ёJЇSЌП<сiХwфї§нЅЕМazв•„Nја дСЈHх_e€МК?ОЛёI3mкчE+Ье§ЙЪйTJ^Г`гКZџsуDа3ѓnиXиc{4 ЧJВ™ X5ойmКщ‚.ЮDоКэ7лѓUФп$;ŽwoJЗЁх АхŠJp8њdђв"Д/AСŸыї1фNzIДХЯOR:‡щ‚рЎКš„Xь ‰Ќ_i2БisRЬЋ`њqБОpьcG}І˜ЁТзаЛьфЉкЈ~#С]] ž3Ј5ЫVёX№жЛЦРЌ‹Аћжc ;u2нћ#щ†rFя} ‰ќGjр€iЩФ|šгэјœŒ№Вп/Ыў?•Ђˆ4žцїк†# љ>+АbЯ­ВщщDp›˜ЛHЅƒ/KEЋщŒ[([Ž>1Ь Эaџ\8cеP! !H\*Іv€H7f=šU§6зЎmъЁЦЎзCЋ9аšУyДЭя%œ[Ќf єy7+DЫЙUGДQu…В^vДfћіР№БK­B7“њ`=Кu3|Wnэg‹oЎэRgOЅяƒМInpF|фЃ(#ˆ]gЗrљЅg=_КсФGЮv уеFЭ!(ЃУШїИx8cџ5*~Ъ•xoЌПHЯюѓWАB<ЇХТ”ьЅˆеьР~T`ѓјЏOцИ~ц4щCУъ`‚ъќKЯ4j§НsCЁ!Dэ›6Бj XЭгЉК‰39ž4\ьVЯZХ`т”ё јŠYо9jЄ"= ќ%Ÿ §d‚оН;bачјнШp‹ъѓ :%nР№4BУъ^‚ът–oјŒ›ŸєšЎŒ#ZЊЉЎАц€ y+3„ІоИВ"Љ–­MЎіЅЏАCЬfœ%3‚xЛ[ж+ЙэИђVyц%@є!Ў%вЪ•ˆ†Иhк8Ѕžˆжйs_ЯТљPJЈКтЭ‹гГ&вЅcЋрх];]ѕ Лє™>z тƒуY‘žХќw-^.m–ЇК‰Іі]uЩDн’ЦA"Nнг cЃJ&mз‹\1іЎЭ7Г.Ї‰Ќ^Š•.†ŽZЯЄ'AwŠЈЅ!|:sqXХ:гОУд8Ї)T1H5ЗФёЎќ_” /г$zпгY ##˜ђиwЮ4xњНЊцP{”Є @pˆ1лжЎ>Фс;?yц{;<Пy>ѕрJ}Я<•ж Ѕ^ЕЋь№ŽpOp˜CR­†НaЬоЌБЁ PЭCVŽу „K8иЬкžєkZТ]‰—EЂ\7nk&OMћСъЏ№[у•Eж†З][отBЩ)чqвŠЋоимє')H­PZБ ЩЋYnH‚™bwєЏ(­ѓsж‚0Dъ(ьљжЖйт 7](ўŽLИ_ЁKŽ_сГzљ›ЂTdqONЧNМe у?`\pZˆ7n\Щяƒ=Œє:тvZš6f-Hџ+qОфЪ‚AXG",T(ч%ф4žЗјмNЕгЅ (%:\,йв~к іcаpwЮЭв=н2Юд…%(+ŠэїЄ…&p[bgрˆzЁжЅ–’IѕЕрЁNa—DСѕ#@љща=„>fDRў^dlxŸуТЂнК›YкуЪЃŠHќ‰ЄГHы3GO,qП;йiTgv‰sТNмMoпVЅєy {бmФ7мБЁŽЦЊ Ік}Цк %Yш$Ÿо”=ˆшЩшržОyќsяСgpiN]"'=” ќE№їhI<Ъap{ћЁШ–@3няо/]JŠоH•Žˆ0q2ЌшГтШе­ОћлќЧЕз(їncвх>+yZО<дќBŒŒ1F—rІW0„+зUЃЂ‡u1RFЅždАh‰РљшP>zŒЯG‚uќˆ’VK’мтDќюс8“>ёlЦ ТWm`,|4Н`КЙŸXŽV"?OP­QРк‹Ї3 Сmў€|ŽШ‹Y[Б…й'"ёйж8 д|NЩ дИЂw‘§тEQD?2ъcdA яоdФифWЏћіБn”ј™3LИt>d€їѓŽ ˜КЄ ќ(Ы•Ž‡ќ еšєUiШ™q”ZЉp'pw’„Aб#єЩц?о>\?ЮўІeиƒ>}TђЕIкљ шуŸЫЎmуњ ЅZЧсSOЮЖ‡сS€46}КVЊйџ„Ќ&…йбОіЮГpЂх*р‹‹ХКая„w]-–ЉвƒмaFј*вГc-bЩы…|g2Ђѕ˜ь.==л|:ЊяН ј‡ђIcц†nВfeѕЙ›ŠжьЦБжg RаŠУЬПпn0IШgоЅ KЎgє44кIХ3Аbу@зWёyЁтZЁ;ЬіA:Y€§idЖ*З!ё˜Œ:їjГžЎ|4DМ’0ПйџdЩžЗ0Ÿž8хfT^ЪќђЏ4ѕХЎ/2U|-к7ЎкfŒšЬ^ыїюцЗD˜NF8ёЄЂЧЊНлq{–з`0fm,Цv›ЯIO˜Ъ7їK—ф4Дќ­ П~€}qf@њHY2ц;ы<њ˜Ъ№ЕџфV№2юnЖ}†ЖzY ш[ЌfсCУбВ0БЯК'ЎљТ5.0ьђжV9ХБ4Њ(RєЉ.Bj[ЬЏZhѕFД 4žlФjeїпˆ1ЈёS4I…AzUYІ”wB2цF•a•}(…ЂJoTФтІW~lts(‰ЉџhZXЁѓ1ШOGъі%h4q1ШЮПТ@o$§uJXюK“Н*q&a œZWж,ЧњЯr>˜Їl“5GЏХХ›Z<и<хмYкЋВUЦ]Ю`їжG tŸ[ѓПВэ‘hЊ˜ˆ…%ЪxU•эhХ’e;ЄџVЫŠЕбs"IЛg_‡ˆBѕ\7™RL’<OЦХ™ЕЎ0Ў„5ЬП%щЫ]=3Jц’њ№šyі’>7В-ф‹и^œ“кн*CЄмЏ мhy™д<э;,д‘M”ЬЩ{Ў8VЮлаЌ2ђš5vћЏN$ЮниhСВУH2гь—qИlџgђ OІю"8БбR‡QS7<Я ”.vn–r_ИРP@ЏŠ3]&шИІ ХуVOЕƒ ЭŠFуА_=•eDыШZ§ŒhЅаяќч(Цcg“ƒ3’ЧMДc-„2ИmЂеЦљmЭ”’хaXfеgм™ЇƒіKEл#.ўтЋCV›%ўvлЫН–агƒ ќФЫЪŒ$\}€ ўЯлГmмK“ўV_:>шлиp‡ё‚єј@њQ ‡ ‹Юo/эIцHdEFш(ZУуq]‰Ў‹s˜Ф^ВY!pYЋгp{ЮјKEЂ§вi[RьvяЛЂg`іx-њЗкОB$иџr(Ј2k‹)oY‹ВVH'УќыF’bo ~"<йUъвьDh1~ aД'ŒЬХ-ФЫзйSЊЪƒ6јвmSчoЌ[Iг$EaUYМхТдё=žФЋ]ЌcеЗЯkіОЗEj§Ѕ^У’отˆ0ш9цї–†ю†ъ)XБ``hНдЮЄwƒ*ШkР)ЈFљ~Ї'M+т !Ћ‚їыиуНS>чнzЯкgПtjWСw,и3iљX&:<>DWarн0ENЬљфьк†IаfMлФpтZЏЛvŸё-k@“тJmђЯргaЉLЎ™[/ЙEЄкš/-ž]о‰#вŒLк€2Д2?ЫУУ$€ІНў€MвўfлъРˆ?Ruq\6ƒuс‰"BŒКЖФ*Г’Яu9г4 њфb SЗAы-5іIМOѓЂЎ™Э)ю’VKwМ?С #MŸCfmЉ,†8‰‰.Жž8шЭx‚‰J}Шp+\xЮЌдИ—іы…hШ.OgД[)Щ7“zЃЮЊDЕ`+‰ Ш‘пуінљ˜ЦoмыЗBъ"“Э§дeёЫмb˜оФ– B<3cл ‹aТƒИŒGЖХ%вц‰oЃqRЙ™РљѕЬŸlРњЌАН:ZPЫЖc-FЈOјєVвЅ ЉХ;-hша4ˆБ †šРC*лЛ>ZЈ,ї ћ§eSи­Тр4ЈлZ Ђ>ьeqЬЧЗ9ŠyŽЙє+s%Ї€'kšVућgФ’hЄ9€ќRј3mЈ­hr!-O…іе%œоцЕЭъTž_ЛттpQm`РД7пжш•№Ў…dЮБнIоМ д!В&ћБЙ›ЏЃчДH^‡Хv№ ЯДб‰Ч ЅЌPЙsŠ~ј‡†BЂ>)>ырг|бLѓ0М80dщѓХm•ФІН+љшТЯ ž#œ4PЌњ-ЌЧБ§`LС-~.ЃSціў­Ue˜ЅВџ3А§ШAmЁ%t4—*ТПM#^љ V$Иm„‚ 4j…ŸlЙ .§VœоНtКх9=Щы{Cєb—Ге‹"Y};Œ…уЉы§cШd] >ЊИю41ŸЖвЈЛ;YŠVє >˜_С:Ш DVЯoМЄл5?\'loЙ"OF&^шННuМAЯБ6ЂісГшфєуСqЦN@QI(дfGЈ#^БІЊ80N#p@t$9Л$ ђ ‹Ž5Є гј%“šš&‚/ЕнŽqвжЉvŒяХ‰ƒнc”„$;šэlzљ[† t6љ“ЮъsиМXŒ2цІ­ыФg]Ш8}=,†ММ–ЮуЧЦ Зќ1_и№Ÿ+кŸцœЛ0ђ*чu›ЩЈU-АХЋгЈ]УаиD=žŸўО€UдCvПК€яєѕ/{k/МљфЬfJИшˆШж.РљѕМŸl@њЌАН:ZPЫЖdщ%l‰ЏVѓМєНИ=Hšr Y]мїZLЄЂ>wyўОŒ{HTr‰Ї(нйя(Yќ—S’ђ€хе Р#$Ёn"#W^” єЎіL>џ џmЁS+oш‡Є5Žя‚UjжК/dк‹F‹OЈ—ъэчWь[roОk; [ъ­ВйџHыЄіг ,њс›бM7Lтbн8FYЯlq‹Lи1v–ЈЛ†Р,bb0›BЕбЪбЄGыm>дѓЉJžo;ё"цr:kMCЖОLгрСуJ`‘*;Sяџž’œћ}АŠV‹џrTPˆ — сМ,EБМЙ_иPЦІy‡f•!Pйн:04’(цтЅfW §лžM_ЅъТz§-g™кі…ЯЙЅƒ0.Оо,фуе,ѕ<Ц†H A†Zе]8oПя:*ъъŸLѕЄ(d|IєЎПdєOКвFс*]!щЅ.ьдMИы.\fс?DЯоЈжМwэОЏ‚J)}QМCB ;YА›Ы+ ѓ˜ N ˜Yzк:aгйŸŽГъҘ7hœzд>šdН§ЎєYš*H’У~Х 1TЇ…С‘mЪpЏ?y,*cЮћœJ\Ёя˜Ф9оЄ!ѓ2œ&CсеяšЦ№jЪDTЎf3g˜~Г9 ›Ј ЦёСфъќžя)5HіыйЋЉх =–мАњЗл[•(Ѓže`8‚:AX("ЖzsRЯЯштьўчO˜к)њEz/04ѕЂ‰0№ъыHЏЯЯ]ЇчЕёљьHнw{“Ÿf(Н`>нтђ[Вљ€ЁyŽэац—ЪџwИјб7Ѓнbx FЬUW џsъ/№а$šKGњІлyЦ} ъ"З{љRЊ,ˆАЭ}ФэpЫтшЈ”јvlkВ„љВ?ƒв9Кjќ|e‰ј ;3m# РНи^L—=ƒ‡р€a˜r/цМPдЊыБіuцfіБR&<—OющP§a3тYs&ОВМ›ќ„у Д VšZ˜]XŒkUWФx#ІКж Q›’cгбHб#GJџ7сz'8љлŸkcpџhn˜Ў<Зh‚Ђ-/•ойVCƒ(Рg3pтЛ8ЙщnЦ'Nк–шšnбЮьАXцИšпsЄugибГОœ6QЈБLУФ?ˆX Љ[ЌП!ђћeњ<fєЄ^Оѓ†&HjІ3FјіК$gеЛk‡бМnŠП) ‘]nZ–‘ _#Sжј_KSыМ лЉBЧ}г˜–•шU˜HJз V?-Ц.|нjz[mE+ўC­V{кЦBЄn„}šєŸѕі5ЙЗЬVœ: *zЭѓ^іˆјœ9Їo0%ъДlnбYЋЁѓŠаIН™8{єќ4,Œю•Э/qпшsј`'}Ј5ŸuЦЌ,2п&ЩNžЭьY’fŸ$ёЎOWцyбюiЩє%ЇЭЕ­B„\UЏ@yBЫ?(hІлђЭIs2кй№fЫ:ЎvЗНKћеrA`RAњ›r~ У%ЦќШœ9\ш2„}‘Y4tюJЛŠ.4Гavр(жнХHk“ѓ0Е‰џRPє2§R$Ѕш‚ПћЌ‡?HœП:y g#з•QОY[”“еЅЧё‘nЊу”ј”ѓNJ]”јиž7KSnТ?ЕДЦ”€}>j|кЈрфМѕ “ЛMђ„ ЪvJ}~фUЦ9JѕЩoы_(QJ)‰58ЉA‡вUЌH+ы›T,ВёЦ,WBDЙьƒ@‘–Гў{Q"”Д›‹c`mqdжСцRћЕ№№wM]*bрBэ[N".фРIGх‚Йр”Ћ Б”§vqњоф鉆YЈЭ`рTг‡ТЄъТ›ы тJGеeЉЩЪR$Uќh€b'’ї%ЫZПл\шœЂL”A§жOПЃ ša‚a;X+ Э ьс  Џў@‰5ЮРЏXгMOŸ*ХŒ XsЂ/‰dW–о.jh'Ры™Elч&ФšGUЙ—C.фvгеYrƒ›3Xн +џl лЙRгЉт?е@mх%‹Xуў>ч \ПQp8ЋW/BбуќbŸcŒWЅнTяr(ЫŸљюBFЉ')"РoСšт,y˜_qQ"l;}А&ЖЧсь‡Г„~~Ур…Ч[ПAІ0QчЂ№&Њ+Щ08–Уй…Hљ_І|­a§Žg}ўЪГzEШ3‚•……A7sX&}j”>pв?cј˜Š rТ*о,4єКosg?Р&~rЃ“…ОUо˜V€бО‹‘іЋ:Ž˜K-kн,’ЮМЭ€ нт7Э ‚B2 “РыЈ ŠЕ ш#mЮ?жЎ’^2;†‰‘bјieЗЂšЊ%R#ц &oя,ЁХg~rŽ?8KеzTqѕмЉ1žЛ­ыO懙ЊY‘L4вrпNvЏlЬRў„щ!щвdЭpj*‡Њ— ЦфPЮAk†4ЖW)гwS5Ер\’I№лo-nЋїтщя&!-”Xˆ`r фТp’С&єLЈ•ё њR >gaИ@AФнD§`5RшОБXmd=В::7еь(Wž)ЦCfмр€цj|тЮаЃиРMДфlђА–П—дЎЉРн­ЊaNю'rx ѕћ yZvWHЧEfdФЫ@ГЃЖiЦUД>k“cФp>šм%xЋCfс™0*ЏієaХ_HбY“SАbtуђЖ!ж@љНšŽуЉZ„–ЙиPЂЉTємЗRхЮЯЕДqн§SЦфqJ™Ф{g”IЮЕ'жмнQ№?MФЖbˆBanлбЭІ’ћƒh™Ѕ€=~џT[Жар\v‰ТЙA!V_@bмфИв жЏ&pфџwЬ‹^z§Ed)•tѕ6dЃС&р“…Kf9“>@œИ$DЙ3s'щШ™с Сн:Пі5Л] 1шFЅ™ЌTœљк)%НhєTїЈВЛјeL^iШ&Ъ407(†ОKjщ(ю=вьяЄ•+Nѕх5Q–: JкЋQЮ`:Є*šš­[ПЯ1пHZ˜š§/К—*…їл~ЃЊv@kАI‚~œ*zсвƒЄВŸ=YДЦж„ƒ—њAIв)ƒnZ‰ЛgY1+QиАвАn_kŽжл%оЋ аЃLТjŠ/* ЃёЛlюЗb* ;uх\йШXЩВIrїŽї7!&њіЪсуюЕSЪ‰ЇщаТтс§0г0TGЈ эДЎєŸб&Ц[kPœ)[э}/ЫШЖBЁЧЕ;]У_&MGчНќ€ж@lOЇyI{РgVTЕгКaШ>,(}ыдQФрFРТ}шnk3WЫ%xЬ'4X›Ѓ<…їЎYрpЪрŠЭ§гd~ЂWя[шTФ”˜oB№Ыl‡ѓ5хŽIвАВжИЂй‘М)М™ъ–dђ<ˆuŸјuќызœcўOp ЈХг2НHЋ(MЁ/3л‚МЈœkTюСеёжЈаX8WТœЭq›”ХOУl“š1™[ fuhыЩ~МЮк+Ж ћrл'Ž?ЪuєKSЙО5КЮъ”R=ж?щQб•']mўU7ѓЌgwІРњХЮ)сk VЦjŸл,HE5љЅэST‡E9‘Н/КЫдYчjЈщЪk=arЄoч/‹АІ5о:'cЈrт`}’5fџy Раwƒ'цˆЖЯОvљŒ|вђаЮ„|eЫEmQ;=sЮ;ЄЮQ&зE­аHyoЄщŽ”ЯŸДОŸFмMЅnрH-ŒY0ч™•ѓЂтKл‡;ўСшеBŠЮф>Ћ+їЂ у’X ЊРSєщКІgJ+Žя;}‰ вfњ˜Б0ШР Жќ‡м.&и\9Љ’v@_]h!кХЛА|)FхЄЅSеŠ/*ƒrn= Ф5z§V]љџ<މSmF!u5JQГkТѕ{$ІНbЁ@JІZƒK…)o*ДSц@PJ˜Ÿ †”к­, љЭ-_ъџxє/#юП!ЮЩи]ЮљЈWКЈК™kœžZŒ_јDyРж™UС Ј№Ђдrnгqє‰слОИ6“mГщŒ/ќ‹2МŠ#Iљ6%Ÿ?•€ вЗўGOk cŸЎkўь0Зm"j;ъiЅпф0mѕU_JЭЬ’СтBЯёъGкм9шІvТ h*ц ‡]7ƒ’]Взw–рс+1|‚Q+ъIУp‘“(ŒЕЕ&eЏђћh\sжгdpk#ПŠ:Ю№ИАg;м$zm!•пЏ@vщtх3ЦТžŠ".ХSПŽ{ŒЇтпбкќb™jЂ4ZнLєѕwr65Ё‘{n•š=wƒњ БiN’š7АЪюnр{ОnЪќ€ŽDУo6nГѕМNsЬПtt/№ž‚ м]bЂŠKЁRe'Aю2ˆ4HВ№zНі|ƒЧЦžбvТўMюŒX_Om{!ЭxкіR_+…SЄГ%ю7ТaЄ|“чuaв™ТwА2Аj§+Gѓ+мЇœЌU–„ ЃДсSЅ‘”hтЌQ$t!#ф.?[Пї>Ѓ%чVšіЌЃИx>^›ЯF dћ{Ÿ_ш7uuДАНhЫА№N!H^—рдY ! cFhC%>x‰6И …цяfCѓŸЎˆ›\ЭћGфВЧ$˜`r†ЖgС9wбЪK;9rzЛKоЫ=†ѕН€Ÿ”ЈчЬ(ц&Ћ щbLь˜X­рFZМСY ˜ў@ЊМя8нПZ{Фўэў Ћ`џ5k9ЅИшќсŽ8іœХэєO0Хyь­ЖKЎгцKУтpДD5%rŠї­єЊЂ…ДэOr:ђd}Аš' ПVtћёЌ.К‚(!:щ ЪодмЮy‘А,А eюЕD8"1Oћ&SБ+ПgoКrХЄ ˜)ƒynЗ„ЙкFм5Lт•г‘žєv,‘єЄR—аp:GтVЧЎвPъН$?•ž†/g?•ж…ЧG4,MГ pZ $&[›8›<щ—nЦt– cяЩІхKaфьќћ0ѕј2§‰+' ьУ}Ё5A’рUђїЅмAпЛцsŽ ЦВnpLRЈЊјЌњцœу§м2/{•Ы/їПvЫЂы_œбLK$B#š{]Y6нЧ]BЅЧ„ѕХЉLсЎФ%tћ™ЎJђЃƒ(в‹ЉeъšшєA}K№гк №˜Š„@L1a_Ж ФјШк&Ф<еЅЅЉI;p]HНяX")тк‰т˜‰w˜чјс’”бйlбђ… B|žЋѕЇ=Ёќ|),ѓ ОзJЩ'оїіIBУ@є§­ЪVК—їїg9NN^\Œeє=у€zй†cWhД7cŒ92ЕRСp`Ч‚W!,RМ‚|є3B#) ScP–!ХШќ‡йx7Њ™ЫBттїHМv-yЅш8дыЛжi‚яnjІNЉ)LФNЃ•­iаiѕZќ†„HsT!ПщиВИоВЎqђ+Џ;;Х?ФдС<Ї?PЭЭ‘&IЃЭЙ{ЋЋОЌЦФхo.Бˆ™z-‰TСŸї”quЇЩе•ЖућœIyкЄA сЖЉгЯV|ЙRю#щqу*Fо>ƒdО"?Ž#xћUчCОюС-QПЙ|яыЛIs8фFg 2џ Џ4\JіtпEъеУWfФ%Oƒр9k˜GЋ ?иП“VД|сс~ыcРЇТЅŸј=ОK>aœ“Уd"ГQэ?zыzФ+ж‚иO–€Аqa‡йф ‹c›ш[ј‚?ЄЭ!ЦКURЗТ]Ф€чLїкžXЈ(‘Щ,є $XC; €ХЩ^ЭФТ(љMРgoEŠ&Г]KSf[gлЩ$RŠЙКAъ6›`ˆsб)лп” kЦР§™>дѕxёВ`ГgљМ џ[2Я7ЋK,œЗйoGє<ЌшхЕHюх@жјC3tŠЯB/ІЫљ<Љі‰%h;јGD~‰Щш7цЎЭdЪ\>jM(*; эpВ_rCe_Yз€”&šКд7€х]OG˜п“—іaЖх qьњ;“џRФr9оы]љЅz*цИLJ.0З™rџ+.uЉv^єму?†шУєЊуoє/JžеS5(gЯС™D‹’ь†„‚Є 8Г!0'Ј/ВчўЏЪШЋЎ–эcс§€r\зˆ…Ou`ˆoќ2јХ/9ырОЊЙФьОКюсМЫMt№=фкљѕV_ЅЪщžЊ7Ќѓ2рЯЯёB§Ў–B;?Јј$г”І3вvšЫŠќЬ§4мЮCІ•AˆћYNNвЋ­ЩумTС§BYSћК‡м`gl•^”+&ЛЩаQu#‚ДИ­Х<Щy\рЏлРŒ€ІdEї„žЧ@wyI LœˆБ.НЮмsџ[4ЁQл„ЂД+UrЙЌ c$Џ?ЈRjЕлЩзпєНжРЄ%#Л+тyoэњќC.VС^Щ >&jSrAœп?€ŠBђ­ƒЃ.%5'(;угTЭыь№iГSЙWr[лgА“јkЗў-jЭє [(Iъ‡АЎїц§ ‹ђ,щ­96ч+r,Ѓe/†ŒxЎ>Ё jёYgФd}[Ущ1Лт=q_)PЏET„™™*эDŸyƒSЄфAылй?Htг’yе[ИФыW iŽОкQgфj<65ZhвЈj4 ˆvаш} WЗ€›ИВ• ръ*Ж‡†ПšvяТ)п`єЩ ЎЕЛ‹#MёDуtЎЉЎ`cљ ёЛ ”Ј:,жS]т^Є І–/f|/fWJjД;7Іъ&"рlв@†њoQї. X\HШЙРo‚AыднЬЄїœмЯэШgz>Х†Ю$ЋтИЈ/еЫ@ЅбfЩё:ТˆЎ"ВOЂЄЮ0[N,Ж•ўЖш..ФXеснм rG?СѕoЌWKа}Н€јaG_ЖDNх™Й%F{7н:qu›=ЈЌd,BИУуЦяъ)ю‘п8ЕЌї№doбk(KЏ, –}Яа)ŠoЁsВSвЭ!mu“˜c;а‰ѓўй‚ті‚—А<8Пѕ /Ќ–Џ„f=нtr-ПQž“P[-Ї–Е œкНSпVў8ОҘƒ &ƒ‚іE~k§0'„jU0`w,фџ6zЏКРхъаЉœrѕдБN˜ЮeЊBSМ=ЪУтьБЯ&ЋQBЈм*ˆ!KЖ08J‚A”љл"Ёx1PЦrБu`§jfP.ћ8ї=теЩnU[g{о—ЗE˜ѕw3*qйЉа­СО{8р'вV ™  wВ3#O™Ђїbд­žЅPY‚KєткЊWƒёJ”šIШ pЕЎХэ>™kЙЃˆ/сXђC^ŒБ б['­8Л*веѓѓрГ–ЄнлLFВК иШОЄгђNМі7ЦўйўьЕ№З……\ЮC0`ИЌ|ш}АЎыˆ8 l1ўГ0RisђУКЖJ |њЫ‰8Мл{ŽœП‡@Ё+f8|9Ќ›П*dЧyŽu;$_o,žЯГo•l>р]J‡оФЌ•>n7…Л€Іu ЙяуГIЛY?ЎЊїяOмБ[ИСРXищ u Є­оšžF' њгј7ЎўЉ|{ЏЮx7K_bЛДЃ™(A5mw‚VŽai#ВzЭC kMлž:УIАД’Kп@ЙЂЋŽЌкъFПй ѕб…т™іът`эК8<љF)МБkЃЬŠ*„‹~/Чп™nBЭF"e—W!џ<5K9јЋ)Mёš–­ЮЄщЇs9>p "’-bg€ЕпОuЄљ5{^ [пуi–RЕ,щФ9›,ѓ..s’H  š4чžfрњ4ТмХБ›HДі— AM- зћѓ­ЊŸŸIBJЦTgЙ%. я#%­йплŒnE6JF1P=WM˜rєНФЫFќ,8п;ЛЕ}м’QІgk,\4cЬЁуCc^Uх;М9Ogx?,§Jв ЇWCЧ$q ИР,‹фQЁoђyЗя{блˆў`ч`(pda}ЫuCPЬf8љњrдЇѕ €СрЋx-лпG’Щ‘Ўйъж›іЎжio=ьљдОтіёhswОяТЭьO”АO1џ?Ю4.*"LV…_Dzq§e8/RdКа–НЂсYЬ4."qKУ)&7уœ”№о™AЪеDm)Fы7Я­:Alo<ЮYX;+‘"цЮцё?vž!ОƒЂЉWє ъ3мЅCdй­X˜Ж/-+`ДЬЦ}ШуŸп€]BS H›XУкяqvЄiЇq-4L@яš’.Nw7ЁГЁзБЬДC,Ьѓ ц$УЊ ›`ытј~7г ta(F‰њkІЂЬ™зђQseКIaв—œэфЭ€„›ЉБ‘“ф‚€NцЁœRcз‘#мы+…ё­‡ifzїІЪЧЧоLIАћ‹ф% 4ŠћAЗmХŸёs*ZД›УOкЫ|Ь—u^кєƒT§ЖЛўA@Сэ‰ы`ЈђЅЫ9f]Ѕ‡tцl}юk‡Lœ Oz†ўжLШ:Ї]ћbџqнlь0ћ{tЇŽѓ7ˆеœW„$Њг‡}мНЃnДWБ™ЬЂЄ…уW $dtЗž?Ÿьмя›УН­ йЇв `xН“pК+x7Щѓ™€І/јЩЧп Џё]“™п(mк>ѓjw.0#вA™†sм Лс‹9к…чZ *•ЯjњЦš№Щml3љЛ%мщіiКм,MYВСъЃ=ђ{гБія,ШОlmˆjЮ3_џ1"T}о>ФH.пjŠ„њRXСФРЙ3n#ŠkЌЮсЖ,OйЖ{Эі5А§ ˜+œk}Сqт2Ѓ1ніkR–ƒ(щMЬR`н§“ЕШЋtѕuŽsx/ЕpМv9оrЮЁд3љ\щЭ….vTВ5r# КOЧЃc†jд”$‚7ї…Ib‚š№SeDКyЧЯVУŸMнИЋ ўЋёЧЌFЬ|ёiоrG˜ћћnwЁ„=кœPэЄ$k6]S +вS‘:Ѓ[‰щ‰L7ђMVљЬyяЇЂ=sЧсй\~ХGчйирfcйGˆšХvŽй|ЧГЅ‹nЇzIрм)^ržШŒFƒА:ЏЪ Зtl;Eц 5КzЫЎ›HAZзЅ6њqЗ/!УуЛu‹—`eш‡В-švѓ.5:˜d“ў~˜вПEЮ Яrhйnс#ЁОЯц<й—`э7a3к7–Њя“РAЕЗЂƒн:а~{йˆе„Є|Ќ Й…ЇУСё?юрМ|P5Ыrp/Ј=в’b}Q –иІ:[юBЧbЭдFџxФ%ь@њ@#ЈGfNХ{„Д‚(xA§QлјZK&Х‡ЧPŽ€!!ю.ур’Њ”qХ#]ЋЦХ}Ѕ"_ 5:ЏћA m2ћЋ)фc™џLZЯ‡ЫjьpМеЇ—DыdЙ€ЃЁ<ТHък1ŽЁЯ ‚ЛЇIK"žšрeYVВ'ўwџ$9ŸœPrKšИ+иЪЩM RЎ‹цє|Eр=7˜г‘х8[…YQ-uЫЉд™k4ЯЏ pКЂ§Hјђy(jGSІ^_F-™‚"ба-6аЛ­,c8Дѕ„ukб2XэМ№шљi˜p&ЕІj?XѓkГВiјй=oy ШV=г'>ЅЎEEљoŸ>кУжpŠъ"СоДђ•и#ъyяDх‘l№„‡l-в*Э''u ї@YyШ:љиЦZЮ.`еИЇј“Š0KћЈwW † !˜uР Ш/З@ЮvеьЖ–P“žп;БСœLЙAjk&Лг9cШіsО1шO{й-]ЇЉDaЕ эѓŒгmP"q^|mоcŠl—3Rєўиsящд\Ч#гzz˜@Оћ TP№ХD7эгуAФƒ:So&ю5ЛбRЬSЧŠкэНд‰@pБ›Х!&>ђTVŽžх`§ ФЉpbE*Т'ЮС> fEЕйре*wyG•_SOa…’йcё‹ЌѓJ§/8д$фїб+пFю!ŠŒ…Ќ=њ‰ћWЫKœgћ,$Ћg"Hм-З=њ,Є4š1SЉ"‡ЛъЃыDƒпG”hŒЙm"G§gZО<h№›W”P 1С…+ЩйцЃЩ ЖЩљjљ:Ящv+мŒd•ђ2 4mйШg^мЧmjџ~НXщB/wzЃ^ДсЫІEд4ю 0Ш4‰SЏаlЌ%Y˜Š›[яkА]Ђ5ОšŽК(КзOqwНЩ‘ћ$,юx0й^бЖыQtxУЯU”^6ЩcСф{ЫМЕIСb˜"ШkMIˆі(˜=8хTнDsVj™–>^ ЛЇ`Г€a}фќйыN’/лšІ~,рCЧBNХKH­z^ы?€2з.ќ/]ФmёЎ:кv9фE•Š1ТЪvFŽЯѓ~eшNПпœWtФhЃбqР@šL$2‘Юм’&Жљn(6тБЛ'Ђg№ПЯ#! U—тЊ7RЏКaџ0BпW[;˜љ7”іP”Ўf")–ћЕTQъqvАљтАV€эŒ–Ј.еШп\‡[+ЯР%иyh%сXrWс,пЩ%щš>Ыl™ЦHїzБ(jfЂ Щo5^”3PQ мvWў#ЖnŽЯ‹ЕJнз”…СђT8д•њ—ьъ S–І # Ož›Dчяž{ƒ#UЛ„ˆž8НIрщ,Хžk*V<эEжЎЭ:А‹0›ЛнВ:иo6]‘Ђ;§g˜Є\Ж;CХ4улДОOПЧm‰b-’zЦ^JќЈ‰џ5ие“ Шќ‡Њ?drЬEeQ‡.Кy’ы‹BЇЄ№–œшРL2Х’Йи’ѕгшВмyХЋG{У,ь&[хд-Юм61*†Фa”R03х=ў™Ћ>ž­ТЧšЌgуѕ>јYQ\5@Ђw‘єA; QIUb8s ъ]Ј4­Œ™’XГц3Шгn0(ZЇЃ clљФ NОЂsч›ћЌр5чpІН…˜ћTЊцвK•вmb”њXА$Hт$_…У(Ю™ŠZЕ Щ“Ц‹Фэху ІiDЗ3в4сu" Ў&(6"!”_Ъ0XfЅІзЊUЙНxя цїe`(і%Е(3њЉА†qюP>œИЕХЁњЎШ”ђЗоc0%u^ОU‚ЂЮIз\‚ЧтЫn $ђјеІ%h$hлб§Ђ:‡TZ(ќ\ŒFkœ•їЉRKЌв‰›xГж”М…Џˆun/`1'_ЧgГ8I'?Ѓ(„2(ˆ)ѕ­0AѕЁАu6т!Т]L *Kо]$YLЦIЧ9FRž§ЈaЦ@T0CЉЖ-3аь'XzDшв`™ІСй…бќпмt[™С_M‘œяIвЅпS<ЭшЮ/ВT–ЇDГ)q&Ѓ”Ѕ•МіЧ?№КOМ=7TО!™ш1ЯФ3Цˆы‚Ы…РЭГeTэ.rлѕ[‡V›ЌBв‚Џd ‰жв§’Нгƒџ9Ѓ4В=ШwœlQnЮХо єЭФp‡ў›фЯЅЫѕЗЌœ:у­dc§сm?У%^%ЈеŒgШИ/вкФp7$м=‘|R6ѓїыпe72|Фю“К>ЅB…ЮzсЌ+ЩbоБЪŸ]ђй[д{‘d~” ~a ­g7ozKŠ5Џќї}ыК‘ТЯўа‘п8RD ЁO(ќДЁЪQ‰•‚huЙ:?‚@^їvобяK?ѕѓEeж7CЎ\ЦŠ6~BћQ•Ѓёџ32bБПеMIъ'Vоm*Hб瘘й#šЋб ›$Žию/уљхxaєб‚О,AeЋЎэ@Г5Bщшt$0йОБD#mC.LOƒІzf™ЪcGя$„eOЏкy\ˆЋРtYюЖэŠ„љ}ў7=йЫm /`1Яфnч 3™Ы МCoZb.ф"Œ,ИšњEЫiќ.ыmиaћˆœ›Э4nЕвЪ• кbEћTо•3Ž62<“сц‹}ЬИ?ƒўpw~шФеL йАлыеEІ9†шё“‹Аyxvm,хЬг5‚ћђИќр‰ћУW ˜ еіžЗšŒ\у^№А}‹Џћ8л,ч2*Ф™!ђjўж…*ZЋ9Щ ™§š€юl'šŸМецˆЧ.ЯЪэ$є_›їOєdњіS”I/ <С‘ь" чЋhОTu}ВИўБшСГhыЅ‚К=iJЪЏCІ“ rŸЮЅ dфFIšяМ2}їv‡aоЏИm; ^€:v‰mnnTОЧў‘fС8тслЧEЏ™@2R‡юН(Jё^ ­П%†Яoујv­ќ;4ўўџІ&?‡`УЎсщќ=mёќ;ўr@_сщі№p­)Є.ЮЌ?зКEœnагЖj›НЃЈ“ЌFЯy~i­іК#ц2ЪХN{–жЃSŠˆЈѕпdЇ(ЭЈ|N Ъл1‹'Ђ.яZ`”чњДдLЃo#wх)єш:ЭFkЖiiОUСAHЉБ”ЪЪ|LV9рэ`nYh;Ю7ё@˜wњ›kQ2яіМД" Љd(ЈЖ Iсxˆ…–я~шбGŠзKЅхђžж‚ ‡ Ѕ}gŠ:яƒйЌ–PIfŠtиT%0wвЧ_ hЧс˜Їo1r Нђ­№8ї– ƒf&ђV”Ч+ЗU oфЊЛpКЕV^‚`ч(ткЏ,œРД%0TфЁщSnЩНЫ}К;Б1€j Ю‘КР•F>j#Šљ,šeЌЎmо5дэВ)oГc™s^6ЖВZЈFЯ\ё>dЦyиДцТ9]“|‰ гЬјAeБыыHЇ-фmС—т§†У@pф}№ъЃЙЁŒEˆзqЧЖRЯšГеo4ЅбІЧЃR*{ЈЫШФїŽэ†wЁн7%XфE=Ж„Ъ•wОЁніёƒђз%_Ия |*І."жеha8#!n=G(Ь(›6y v„)7уЦжeЌ!Йж—Иkˆž-йс‡…оˆ džЪбJ—BV~YБ|]СudЇЫZл‹8[ПЋ§М+Щ<#‚оЏ9ЫWЏ@l‹SFЋЙ)mк]мDфŠ‘`˜—Џ4цс˜і~§^AжЏœKЧ6Ю!љ‚ƒфя==ељrг0;(rˆ™ў8зOЗс”7i™вiюŒВЁЃž‘/JЏ!GЃƒˆ>Ё€wbП%ЪЩА'ІzЉЬКt t№АЬtuЯШнў˜'аO!Ÿ‹ WžЉЅ ~‚4’O€ьј2P8Г\œr8фшGГЄk€‚XoC`ЅЊњqбCлP5­gў…8ކ іЦЅW7<З‹Би-ЄjDц ЛУSL7ћCоƒ4Ѓ(,х •zi—ˆлЎьOpЦ;Г юѕšЗxєiƒ4SЅFŠrзš|чНOcхВŒМнєЕкwї0:жбPЊ2‹…VŠ№ЊBџ`–G~дЄ˜!~:4кхЙЅПC v|w>{жOГЪ'KсƒС3ЌИ№R‚ољп‰Z ЉщBАВCЫИ”Ѓљ™ьБ&ЧЎ§џ$ƒ.ѕ/;оAй^"&‚фи@FАзУџ\1ўњЖщИ€#Эе ЋœџE‹Ї–KќtйbкНy‘ ЬБЩл8cYт—”;фdyвr4љ`!яЈnЅK‰9vjŒЛ”Рg Ыb^ЃGќфрлйs„юыыЙУТц˜M<Я№сќzDРk˜C“U,rЪЄaЭ!Ъ#L_ХЗ›ФBeк‚%и№БНZ^YiиБf>Gt/ІaЩЖзё9ьДtCъ‘Szш м?ф‡ышЭ/‘рз™aхшТ—QeŒ9zy“wЌ7nDKз$ИšК­8>BЕ.FњB“фЙЩaoљŸŠЃЪeу?Г/tРMДФсм>р иAgдв`BZ|‹x˜vоfў›—6‘щŽЦх/кЩљЈYsъdЛК„хю•—t5uIМJXv-|уJ^yИ ИЎ>U§‡-LџwP‘Ѓ‹Ѓќ;PЎАhŽIˆЦА№Х0§І—€SyЏžџ3џlљ8цX.ћђhњz&ƒБ!эЫIЭ&K2MэIЦƒhуb@ШќfЊg^™Д VјјьШ1И аb›}ќх-’№+tDыѓš:ьЛхх`fKњИDЪŒЛCЈ5€ъg\Йg^“vЇŒžМW%†œŒЬ_Z€„$ˆO4!О.0„ыхЖ7QPt“М3СлъвѕВƒ %УЗ‡уйrqb№џpяAб!YЦ-6[0ЩЭ ŠмМC/КнX!d3шЗˆРF4ёЦ(Ъ№ђ–Џ•;:уёС;хФƒЧ:рmикI [WЌКФч=!Z8›љ­Џъшх­ѓ-MЉ[bЩ;ыХв,§Б–Fи‹f]№\к;Я–уѓuš д ЇaDiбJ‡)кфVчŒџЧѓђшљNС—) bАŸШp.‡@vˆBcјзLtВїfюЯ+ЙуЖš’є4{#"зА…OжT"W„бfфEшШQ Мy‘ЋZ Z{вB9ў)v€$ещ‡Iщ/—ˆЪЬFЮ”‡ ƒ@ZрOџrиКq˜LE"‡FЌєmІ= "sбMyGХь:ˆ~8K§h˜;3^лWйO бѓ№щ ДК-2чТX€C(ѕкЛ}"й~qвсtVN ёчѕ6^(~ФПиj›тLцQ<№ЋŽ‹Ќp4Ay^§ vаcgk‡–Q EяФ:Д~џ3MhЧ‚@y?cŒSЊ~Gмг ‘Qњџ0ЕГ%fВлЭИзjNwВДДŽ6-Њ^ВшmXLI№ћвŽhй>\‚_бУ$яЙvKwLь4˜Э’oџ0Јu;6+Пў:[nКмЅоРDŠwjŽб ?вЫюкM Е†w~-{#А_цбдКЇ2 t№xeг LГXШ*злшЉ_:C`ћ‘тз]i%§щQеšˆqћs>х=єэ6њЦу0{ї6 іГ( хбО0юv“7:#=8џ\gљ‡P‘­>&оˆЬaЧFСЪ6…<ы~JѓуQ]СьhЇ‚~§ƒBДвQрж‘Ъгcз `[EД‰кјmr!Bd8+QЫ\уеГн7ЩcДjнOЃТ/ ­$х’ыS„ЃйшVшўФЉХaO^^mлG™vУ-HЪИšŠAŠях*ЇИэAѕЏc9Ћ Ч+FЭ5›ДЇ>aкЊ1ъЁJ$[и,iїѕчPДЪj‹ˆ[œ‚5DЕѓ\Й—жТ…ХЛœЯ‘т_ЇqеLђeUQЇg йуpКCм9.гсvЙŠTіќУк0JрqS‡-nnO%9}љ–сkИ”ЩяxЊВ*…ъZ‰`O’vДфH€Љ лš—~ѕ=8ЌoЪсГЧєWхf‹ і6цk‹ƒflЌy“ІєЗМh -’ћЃF-3Хѕa№qJAWу/МDС|МЂ%ПйwШъѓuUЏ‹ХpxZЌŠ№z”ЁK\Nѓ…ыцА6ЙœЂЙfЈdе6р^§БYƒflO,`z…щ ZЉFё3Г6!Аa"~՘‰WyБwЈ${Ч00mЧјФщќSІ‡з-сXm& D(НДиm%/{оЇ™1_-к{“ЭkЬFzj3hџе(}NˆЮ9RЩbВnу6 H= Х]Дјищ№Ьщ|@цкЯ зьz\хНaXиФ‘G6И`.ДчЈA`P4?tšж1љ*E^ЙXосЎЄЊщ]ць†K›і™{0сєŽŒЈK#ЪŸтрŸ[/йі#2вљlѕЪlЯЫЪo^JТ—З ЌJъШ!œИ§жЗ}ЎыpХп9щ, Ў9bеsрзIrя к№пУVЃŠgr•ЉИ6нњ#—ЙОїЯЯˆŽѕ „kи€Gc^7урЙЇš:Ь{о=dБЖ,љ{cіђzчМю$_ŠнУ…ЋQGЇž&4Ы!ŠbаЅ›N˜8]4:7оіЊА#Је]§y%ˆЬ&ЋйФаTђ‡Џъ јc>м"м@ЗvжђЭR ФнCfb ;йIЂЫГІ…Щkt›„Ў(^w‚M*ЎR№ожt’\COуУ™рьœЕwѕ)љ8O(7ј˜1ёЅDCфFˆ“эп5­ŠхnЊІЖiэЗx•‹шеˆSЦІМНю>1AКrїrц/šЄх/іЮEїг p‹2у=*ЕС OyЎЪL0тиМž*~gі1сwѕЯЮŒрчќЯW'pРl§,цкь ™ }?ќ–PЭпАЫZ}@T7—d@Ш6ŠykLT^…;ѓˆšU(Н{SŒђЩ>~Ъr 9(мжюЯпЪfZ„Y_Тўš ]@ •}špрn<йЦњ€ЯMСd№С ьИ)њ №>ŸНИwџDrТЊЄSkДG€[oУŸ5ЁV@Яˆz…з_мjкЗZЌІf М3“‰|юЬи~ щсdА’Ќќ>И lйлk"є|тјЂAG…aгыБЁl $бX™EтгуvdіСС)jю%uИŽЎ%Щїуї­в<ПˆъН"џXЫ#7хЌ(эШЩEoАWœсТO(vЭ‰А†Ž”zаЈ^uїб(п фЬ6BAзђŒиЕ6ўˆ•Щ[[aЧ'ёCIˆT‘ИАЛ–ыБМ1И{Э$L”Ћєkйo+рХќ7Щи!~ ?J3(ЕХЅы Ж)ШРЇ…GЗџa‹Њ<(|†ј)З8D@Г„щљtє%:Œ7AhЎё_јЌП-f1яОbšд_9[1)ЫД:­TзЙх›}ДЩ9њњh y',DК#ˆЁ4:`‘KюЋ9lб9'ПЂŠє&^6‹џ&BJ =:Rœќo€нЭ)†•\фзБЙ‡Nƒ?EGл~jр­?l, ОœQЉЭЃцŠя*Oп`§СлЗВ5iбcЃaњd-kЋјŒeWЋЬCŸŒйёn2Гнb`эмџ+ʏ4{‘ˆWЖЋiЏAKKxЋKеСJпиŒ$Жђ„ф”%\š cХ|ЭVкpьq€зWLп•юљ"skVрЌ<ЪФ7OІ7јxІs. ]!‰ТgтЩC+ŠГџ4~л™+ѓчі{%—O vqOщИ`тc8 ;фG,_Y žТУслq XЦІЕсq1‚Ц[8ѕB šБuO иоеr3tC‚_бvЦЩфњA§БэлЭ1ЂПдC•’ѕчљЕя5  е˜ЃЛaUN[E=H+АšйуЈТ ƒЊ'‰?ГмŽ'XКЇPЛЊn'хўАІѕ\ГmИzІўЦд з/иOm: *ю#&ђі0= ŒЛ\_Ф‘|м‡ІdwьIЄ'ьЮФRPсBАёIфN/]їM}ЈCfЬК1‚Eu'ю ЃОњЁ§_"АзІШ­b1kKЈS Б„vыЕш7Ю)З­4Š?Dљї@зaќF“MV-4B–шИBХ2Jy2d8ц˜0Ћ члQ?Ш( 8<њcЦб0їау’лђ)‹Г­Н•л?№ŸЌЬфнЯnВуЄ_s­–%rSмІмщїќmЎоб”ƒц! Y­{ыЗь|3MЁ7ЉНФ_о&t;МгfšоB*NS?O,Rё'7@=#… }rNtS5=ЙШтqPСвTЪсР#[A/mУ&;– СЕОПК]BKИ ЭПщѕаМћСД”іы)Н7FЬяŠ Ќb<Б\ВЩ‡†—ŒE є1•~XVХs ійf9KЭ ОQ;Їфq†Œ$ ЦЗЧЮ“wvЫ3}aьЙ6џnЩйKžIЗ—ЈOjT8Л(TЧєr> 3QŽimИЊЛм#Ж„u‚ˆpм9UЊg‘§~юќдЩ,%–`iу,6–щџЈяК“‚6SЈbPв` |eˆŒЊсІЭЫ…U“’uЈЄlЩGuYгLзŸИЏлЫі€њйIKЮ1dGŸ—/•іЌб{б‚ Щ З“ФС К„*ссГњн77А ?sLr(єёv›и†вЙm%‘RЈ.CсO1#х “ћsрб+ћMЉx1Вmн­(žzВXhЦ№РЧ‰Z?ЧŒMЁлєов=Aс_‡ж((€„сѓя5^jЭu$П^iXЌЉdњ§дƒш6hЪєŽeb§Œdц?:йŒА?wпiH•Иq'й…љс,я)жб' 9\Я\S$зToh_TЃћ‚ƒ NL‡ПZЛ€ОХгЯnі'šгкћѓcz†ёајЪ3 ЖU9ж5‚эЉЭЂЗРбdГ>Чšmђђё8ВЎ1v3etC-‘W™ЖХРВ‘сžБжѓъ‚7цLРNVB/ €мЃћ5и*…ІИђ#œЁLЃŠЯ CьTaФ ‚ša,y0јб^кШ‘с‡‡2b†J(Ÿoš^SwЫŸgснˆќЄ˜Œ)‚P_›WвЩмёij›§хІ.9џ#…јЗчИёЖ пыŸ№%p:YЅ>Шфю^}cy™оцЂZмˆ5MjuЛCYъzaШ~ЧКєїюЦ”­еъ€Б(э–№ёєбiCI†юmЕжФq.bsNрё,@zфЬr/S(q‘‹7хяР&^—Š&GТјоlcaф–8{+аžpkiМzЉ{}І#—ПzІЯ0Cі`н5КЇFбЛФ?Qќж жр’TчЎ~ѕ?d ‚пSlІЗp*мОђhpи1,8?…ušYƒOIU-Rн`ј”цЌ“o"cл'вt`.ThЦѓА]ЎЯюЙлѕМ†}v[ћмUhєvXcQ'#ЃЇ}аr+ЦТgъЋЖЃьтkeT100я HоЏ5 ЪT3‰`%V[*˜qW:єѕ­ыЯ8иЬљCL№0}і{џ3’Њыmžж$Мѓѕ’ё‡ЭХ–NGлUC74иБY@{їmy=ЧдУы9хтItвhюыD9‰х„EˆKм%0˜bxшx cж5 ѓnT OaPЁЎg•ЁxТœЮ!Э?!т‰nЊSb9k>ЦўtС 2эДš‚ц?рgР€Сyœы%œМˆb<~ˆtцк"&fђхwHsі[8€Н˜ЫŒчь gЂЪєМхo§/l*Fе€§€_›zБЯо,J[ШЂР“ЈwBtИH,jК€Ю6Т{Пc.{^х0бЗ7Ч}эю˜<Ўk‡F›™CЗ‹ЉЫДnг‰tноlШCЋ–GYе!ХС aGqбТ9‰ЈЛT8§ўд:‘э№И№юxыШ;?[?Aœ[ЌѓЯЉ^%'™Х‚Ќ№Ж8юVЯшЇЮ:O•щ‘уљђ\8нШяqЇУжНAкaMЯђеyИŸM{GМќ$Ж}nJaњjю]ЩЄрщF•BП0ь*…‘йZ,'Хbd.Ш#л‹эЋ‹i ёГ.HЊЩцп!№^>v2о\љPлјW'љN#Œ Фьъ'њёЮOFѕzOKvцЕс~E ЗдaЗRЊєЌ =и"VЃѓŠ`Д 6;ЭkbžмАъ№‚Ю qQXŒluБйL‹,у|EhŸfTјlbDР"ž ­|#Юƒ6Xю ‡жэ+#™5Aо’…x]д=Д†їцЖ–ўэTЇі)ђ^#’rr›F—tх|јщ.rAЗСъїЬхд тЈhклЪ юSўянŒлј<пЛ{2^‹h6л/щHЫПя4—і`ЎЦию6€Kќ‡S&цЉыўУ^+ •ЗлЯЋujYqh‘я?VЬЕ—cHуv-–=ЊіЅ3єbт,ќLЎŒЫп.ыњеuђЏЄo†Bvйœo—A%Š3XйžLЂЉEŠ nœЇ]їЂls™rf‹" iЖщЌH‹(šКъф73Шёђ”ЭCпТ ZъFLњbсПХЭбN@ ХРТлvс’ятіЖЁ>ЏС!ЊPFиZtИ‰ЁяwлМъABЌЌѓs`$Бaa2'ЙџZ&зL— в0ЗЎlхВŽ!Ксе€ДБіб.рЋл…Z/QШ‹Ы}‰C€Хlк6ЧиY‡тŸŒmЦоѓАњmПњЉ(Ыm№Žѓ6щNуHьшг Cѓ[,ЇEAѕЬ_ѕŽ˜}=ЩЬƒ&Хьv ЇcŒNТоЛГЏ0CRї.ГкЉ 0|9чЬБМс И3ѓЮ‹€aNНкХъbŒ˜ф’‡H~PЅВъ {ˆЊBЏ‚K‡—њ;4ЫІъПн.~1чЋъЕwVН$#4ЈtRцѓLВF‹ "ъщqјВD%Y{єЫГS]ЇЊ'ћР:№Ah­КД2.ўж&vјЛc}о A"cа@xЖ’щЌ aЦJ&і ёєWыМГ7Ё3ЮќeФррюŽŠ$ШvoUYЙЌ Y.]Я№QйЭџ<ъ^>рiЎјКїœЫД\ф€ЇЦ‘hѓyCЦ–с„…Q!ОНЏ%,(\ЌЅєu0DvC|ћ,ѕЌ)O‰idёŽt‚(!nZpНx}dWѕ%фЦSnЮЃ™…˜EŠАдцу™єЊш_S@иэqКјуvѓ SЗШ‹ћŠ…"YЇц*=ѕ5љjЩˆeX‹g’)RoC&(Н< ЕhЭуe"IДиo.ХІZЭ9uАш‹OБI+Љƒ юж,XLmŒ!Фф.ДИЌŠOЙrnзй,єЉг№ўЬыЧр(tАŠŽбGКЃuТfї$/RЖ^Х ›ULq‰ђ РVАLjуят/dC~’ mf–п/оІšаƒСХђ.+xѓS\—G1>XћГїvMљёƒtТ’)Œ"Ў{АЖ]P!ЛУ[ЂЋ$іОЯбЅўaхНИы6ˆƒ  жьИЌX§ЙФ”Žг$›ЯўŠЋGlлhТ;‰с=єGI”?€@^‰№†'˜uѓ_sЗШTмі'љDЖuотGљшdfŸ-<Ѓ4Q$ŽŒуг~юxЌdgіЊТ6‘ћQ}nŒ\XKCžEњ“Ё №>ЅКі?4aхѓпю'0?#ы6Д~ђVЏЅ?a`ИU"ЗPр:ЋДTЇш_Љƒ—ъY(n(Ќg–ЖQ+DPClІ3нХЙm$џ Еvй`Ѓb>Л‡Мw™ˆВїц:Ннwѓ+’ыЏ]СxгЊ™Я |ЋЗeЂ*№@CУЩ$\сг`Aљ)z›пцV:ŠЁ]г'UwъŽiXЩЯYЃC$WsŸdl0„FDВЭГвпШSOšњэ4Ъ”€‘гщ6•аА5ЬCєлгв­Ї$)оСвvэe‚ŽбV “6њъ0ИЦЛDЧЛ.WL\0оиь0 ŠŸдё|ФwЋхn3АћВ<“kЂNŽљДHРцžЊkОЙїе(DхЊoY5Ќ“P$НJђArL.w)šмP+ŠЎ…ј&9Њёр Т—€уxQQЈў5e{—ŒкЖсбъЪ"­П?И8Г^ў6 0 ђшжЬ+ЇKћyTс;JzFŠсЬ›- brДЌч(RФ}F•1\ЏˆRЫІ.ЋtЫi:†§LФн4’ЉЩЬѕ[џ<ј3єŠшНWд<ѕ-П:Ќ†ˆ…КЎ3Н ОmЊ†ž˜ЭвЙ=dЁЇБИ ќЋеХшP[/J_ЗADvV9^БjXfЬДЫэcІЄ8rйлŽќЂЭ Мwq ƒUV@ЭeіяЗљћд”ЄдrŒU‹Ф€рg›Щ/ Ghє8/жчТрmTШ~~[а%Ђ€s~чхк€ fЉюЪ]ЙЅ.MGˆLj&\hыАg€цЬNm6х!'ТйЭpЯиДѕI€V†\“y\айЄХШЉ;йзLБ|Д9Їf.ŠюP*м~ТЬWBВоЅуAVјM=Yч_—MЇžm“Хњ|EвŽz.юXф0(›Ш :kэсAЕ.С;изЩИ+sk[зlmFзF†ЩšыЎ(џ(‘­П—Л\3C>ЭрJCpєѕ ‚DНo‚ї!%=­ФZnЩev™7;џФмНеч №eEЖ†дvфКeў}і]пPvч9шР|€\н:Ё‰иxдЕЕа1–х.ЕЙ4аТныJ]ABЁ*qУSЉd“pŽЙ3ЕV§јU_гpW№р”6gд…ІЯ"ЩGю˜ћ„УWУˆ‰ЇR‡ƒџQЧMгq8.1оЪь›Šћ_Е2ЂZPШў1ЁШѓЂ]Ђл %SЏƒГEЮєиŸ‘Јсз ГЇk,VЖEД6mнЏнў=жпUVeн/Н№z:К\Г,„ŽŠAТТо3OБo0~яВЏхБъОХcЎ,†Ѕ#(]Ыке‚Бquс}Щ‡ЬED9Єт§@wЖњJлЛмS)2ЧGrЎЎz\с(HЃ Fqид$Рў5HaЁœ3ЏМН‰ДЙЏY Г9ј^ ёGXiŽY<–ўI[H%рЙ{ѕY,ЬgTŽztЕ‘ ИЁйЁ јœЙ) 6тjѓћQ)Џw+ IŸфкX.ДTкъЊ[Јквcњ&еcdRcЧЂФч?ч}пХ9ЄŠУќГ(нїЙ N0wшщЄЗz1ѓ}€љRІЯv@EЙї nsЯёіqуBfЯO4‰hмц•џЅЌв•џ[VВqл_а§і2hмЗj—ДS#Wд…’ТЕь”љœЏЏ‘ЪРQЇ§`œhЛ8 ЁОˆmц?B~vLџos*ъ€JЈПw"Я­mkЮ'Ѓ"Ю–ігк*8sфSёyыїњЎ,A?ЮvE~,йЯЩ$8L‹я}жЊўOдяgвdCѕб С­p_ЄœШѕ@>ƒЯХL|я\ЏГІBщ=ќzcўœ/!1/Ka ˆЂdШп/ @ъЄГёnjћ]ЫЊ .3яD=йŽf:[˜tхЙ49{АhдLЂ.О Жyъ>Яj5ЛКS‰\БтzњЖtЩтє{ИкЮ-ЃХЂф<ЎC5њUš0l+>RЁёЗžU|DŒ LEщ ш”5ех+Ђњ’б’;%њКќ4 к@йБfѓZє›ЪN4Юз@2"ЦrYпoа+EЄфїСМ0Vj=ˆtжЈ RЪбŒЁ\тЩйЉтЛЯœз‹|Чћ”—Њs™а\жЖhк5 ЉбNЙДШ@z™5Є\‘œўа ]Ўё5јb#(sˆNгВ'tSЭ*пЊe0kcљаWб~нmirzбІ0ш’’1f—ЅkгМLўЫ…ЙЇэЛљ ПЉ g(МdТTжA((з:R=сФ0)’СIZ&ŠГ"Щ ђxIјвj8нZAЭтw2g›{rг=L„ї˜gщЏ&иэemuд]VC\ЛtCиgЈ&Ћrg{„aEjВ<[0ЫчЎC z—ты0e№–‡5ЕЇАW‰ŸїЗG0@>бsOЉ{&!НМА&ълёak1g~”§!ђеЂL{жЈpум‹ЎяШ#К6Х7hjvйЊгямД›EгШ4^ЏRЋЮ[1c;пM%2СHu§јьжQ=NѕWјю„‡вЪnмжc$Ќ"Z2ќi†_K2ц„u/cЂeіЕП= Ўtљ›ЕЬŽм§уZтТHmzуОеtщ јЬ‡ІШ‡Бч.х™ВлЌ›єИ"–/l€V.Dк= щ`гžТГиЙсЦў­3DPec$;дАу Cеƒ|њŸuо)&Ёэ[Дl1‚'mяŽфц§ŽdЎ1№ˆt!hЇ‡Жвм;ŠыvNЙeйПь{СХїOPЕ Š-d&л2SRpX•SБСRŽ–ЏЇхЗ`5ё.НcЮМ%.ќфщгСQйŠ1DРЄЩћСЮxsoE@^ѕ)|ЧжžЉЋ—егZŸ~Ќк?…Ч&™*ц)ђќЫЋ}Ai§M—ЫЂдJƒќя­=JcЕ_Q†“`ЄˆГfAю…+P]Иy{hA>>-кЕK3щ%Џз~hШфуzј$~tЩR Юf| ~Э E<<ИbоƒясhR•эA&ЬЗбyBˆNЗT>^ ЄїXiрЩО „‡LъŠЊ&|DЋА}Є+/р"ruXVЂ“_bКАљ5–YпЎ]iЭдф2(мёraЗ‚Г˜5%С§\Iв„Ђ .ЖN.џ}%гžBˆЛ $—кtр)ЦfљHnђŽЉо5žё§зœж­M<У|—ў§јжl+‡Y13;8ЉАTŸмк4жжЕˆСч)qКеюЊ+Й;˜Q2ЕЫf m3wїШkёвxФмєС`С‰IІЦИ’хћ<OuЖЬ;r…*r)нШ{бFШЫќJRеSGvTгz-*ўьфџˆ3)ЫfžсmћYу№—gk-Г?Х(ŒЙyЌчоlMPу-єgЊDЬjэQ…ч Бœx6)ЭС&ТBАП0D6h2S(dу0лО\ЗX­!К?зgЯP aш|vHоnБ[›$хЊ„xТ|є#.ЇЗ3зCu/‚KyЊ­ЙСшЧЊhмвШ ФЇmв`F›ёЬw{|‚,‹Щ`6^'4jŸ]Љl7w`Чg<пrћš&(ИQ,MЁ6•јdь:ѓw!%;в“=xф•zTбцжЬy†=CIqЫђФ™ЄљТ+ZСRц_ђр%ю-†ћ2FJYSыѕьу§{ЈъїšеѓМnzH'›qр6в˜(iў”д,юэfnЦпЙœла’pоjШв‡@‰ “Љ&Ь‰пT ‰ў55€?802сŸ5`™Ф$3xНŠЬЕш‘асЎ<‹х‘ъонў Ћ5Пп‡XйMк›JЯГГUEjH|зgЏ‚ОбоВ>Е ‡ƒЩŒ€К(Sо ђz@Џє\ˆ8MeTc˜k—Ћ‡n™—нŠQђс&œУТѕдŒšЈZЌMOŒz*\Цšа!nГs+Eh‹рВГяЧ|›KŽm‰э‹ВFX@шйa+b№Й.JDх‡AуёTDЈT”FЗТJэЂиzДpC№;XeU[§јЋќЖ Ё Эщƒ–xі1”oи#Ч(№™F98\›Ыжh–pHт:ќс>} >{UѕtCћzvТ|іљ(ЗЊПличЙOžЉћzY§Н\€ђ.ЌЯp!ш‰wЅsчІт‘uИ8Хц'љŸ ШеNчА7ЬяB™ршM4]y§фQцK6Aя5zЉ›{ЬЮЁНiwт %ŽЗ §сUЈЭŽM+Ÿ Kў:Јќк€Ф˜1РUНКЪсquЈOdК•<рd | gёђЬЪй }ЄG,.%:{‹~ёFFп )й№Wџ4ИwмрmJЁлйR\KBы:pиЕ‰Žш? SB\ќЉЭЬОКOљ|1Фˆt)зG–ЛЋѓgСХ№Бsі0Ђ™+дvЌ{KЁ]gћ†Е:71мЭi3T‹•ѓ †жeЪzЕ=№3t@„ЄЭ-њЅоьЖА:QЃ.ЮЖђ-ЮЬдdУ;CўŠф3MЁ"рѕёЫєкrlђSœjŒѕ6Ь•љтычEёGД™Ѓ@zjˆERe@ьЭа1_BнY‘ЏZжћ'›ј8aэ„2ƒ ЕЕЎЮшƒДЭb2мїАЄ/іLe‰,Лˆ?у—gьіЁшгRЂЅ—Г‚4b0ћEHНМL„ЇЗфУrзЅфmЫюQu—юБяhHSN`(Zfx$СT[юђ`E‡Ж x§mZ`1‚;|>H;ЩЫГСк“њьШ^ЉДiVŽLF­j‚ѓЩHЎ MшЪзе&ќэзnСя?Šiв&mЃИХЋ“—ВЈЂ­ŒѓKQ0SЖУ>Ж”йœ'Щ ЋщќАžн$Xо=Зуe5љ‹аuТъmНС_тШбšРВgWKЩ›NмыъDЦыЄj^Ё—Sж4™ Б ЪO“m№х3ъxEQ'ќавIBDВ$‡oЩйyš>6х7x|t…ћRЈ№Š>Зx@RЫИix9ЩѕjфМюЄ4ГаІ$FЩPiь goђNњ•<_Ю-рu„ŒPџ0 ЉХEžГE:WL.Šв)я0P:+n|УIŸoјZAќx•WZ:4 ˜|А‘ˆЯѕšŒЬ„ч:ЫЈ7с"ЂИБоНзЌрѕ­EиTмMВгоžHbIY‚Ш k&‹Тs’Юkovю”тыц‹№Ў ЎШії-&№cŠŸ,ўшd Иџ —nR-ўЋb5Т‚ž‚›*x@Œt 7YЄTBl@>Н\C&=„эyк/ШqчЄU№жh›jTguVpJM­мFшш’—Œy“ЏKCF_с3:˜G4HАВ9 ‡і=#ЄxЛV •rS#?*^Jm_uђФ=јuОъѓО5b†;рSКрpЭJ†H' dС&%Гwi]РšAjа“ЩИаюЊѕ №вp––пЮ"pLюеЄ5еWп‹шЦoљОŸЇѕ;zд–QІємџ7…œjЩЉrЯ -]qrјu•Aю,юљ—яHєIьЈЅhь~ЕheЇ9Љ{іЧT*&5yBЈ7•ž­љb5р>ѓF.х‰ЧљЬуЌФп7”8ЭU€k$oЎIi]Щœ ўЕVЄž“ПїD/LЯіД‡B=уЄPэ…ЉщvKWROп]`Ѕwф0d§fІJ WCyš№Џ(ЙС$Ч–Vяж RiP7UЂЖйS›‡ІшбЇјяхМЉn,§ 'ŸДеsˆ/ЂЕЏорљq“Л™nаЄPšrяёsќУсІBіфfГ~UdДвз‰AВ TI§€L•н)vцш:VФa!m\Яј”фKмДdPшЛЊGдr…ъW3єsф*%ВSŸКТ?їАљћМ‰еаЃ"xрз$Ыh,ЦэЧяб3fѓžˆєрхBУ)МйиКЁBeФ­єфЧХыаeGн‰9су œ6"MkЃ_Lџ|JM3•’-(h2ѓvтК6мё1Є6’c•ЅЌ$ Ak„щЩ†ВІgGŒt‘™ЏwsЭхl9БЭ4A‹n;пЗ8^‡’„–QUN\‡чС 0яGwЩЄЌy‡…­tˆMRVа:њЂ7oiДчрЫд[<М‰:зЯєІкёујŽаы`ѓ(D &“\aTзJ!ЅМИж ІїЗ\R…QCNШ啇OsUЗѕQ?Šюэdщ-Х‹\ˆrX,vМєJwД,a№юWp_——pšE†>! 2сЩjY. œEnї™UЙХŠŒк-a`—ыфќ‚h#чЪд~НЫpэџkF>ЋžfLzфЎpњ_>YТtbx"ГfMуc•Њ1<rыLŸгъ uёAН… '‚Ю0’‚wҘћMtГNќИryРŒšяз‹Гр3UbаОЉЋ0ЧFŸќ-"ѕQњч4ФЙЂ +а-ˆАгˆО昲ЧГЮtэ9˜\Ÿ E UЧЦД"Ы=ЕЗУьl$Urƒ˜Шищh&ртІBJ{ч€ыо“dp‹ЃЋа7бДjј ЉЩЋC'Œ,)zRшфIз”WiвѕŽѕисяятибя3 M§› ЭZ[дx‰ХФ…ЅCS$5ЌГŠˆ'qŽЊ ч O<—йmŸПЧ.7Tсфєdў<&вݘуЭЁ~мy…mюјІ&WяЃŠGфŒy#UХ>,…Ћщіі,‘a:š№|+hqФњ˜K[=gMљиs­шc>5ххХa&јЉ$RŒРєQФ*ЪCФ>І›~Э+Oj§ `‰Ї€ЏŒЗD9аєЛн•.˜*ьDФw!\ЂцјЌВ)ј&“n›E^ќg˜їSЕЭи_ЌМЁz ѕіs<Юv-k1ž ц,оЊў“QMlylSZфїTђErаМ\lpп:>diм˜ЖсГя~§EE]xlѓ ŽC‹G’R |эм[9oxђС\ž—ЩLГ$х?$žŠбм№mPAбfфI•qJƒщˆ§ЉF61ЌЇНЕ3‘SВО‚ХЎЕYщŠћ1ДOс 9žр)d6Фzя­E6KЋ4ЙЙJ8yšХЏЏ` Я$ЋdœU'3ЛђF2нмгhhуŽ^Ѕ+EВbЉН2 дЦ=НЏѕКеў=&0ЈQЮРщ"z%БIТль~п&<џ"{’PБkSThЮVМЙрiЋфŒЯА›rяуяDo-<|Шѓј+qprs“ŽлEЩъCX-ЫрpЋцxувqаSzІхOAк&Ўе"q5Ўю‡с†З„^F%i,w1–Яmх?EЛ ЬGљ|Ы6•ЇРтYœс PіhиŸpVNЇи­Єъg (.’Kд7ё†_lLЮњЌЬг{ LЦшйskœQУМЫ#ћждV™ЖЇ7VэїC$УJЙ0оЪКЧDfЖєxБSzlлzlaЎqТ Y|ўKњH–pьмsŠ9CžœeяHВЄТя)šPЧЉWЫєќŸЪ%ЕтллI-FЖ%[дŠЭ0ЬяпПЄqйh–Э|[ю–vAмїHiXкДQo„§ ‰%р-’T?šDPPŠєшиК`@PЄ7“#›ѓшица1„Ž–Ы{с[БЎнђJcщiщ›\ъъOУbKcГDмEZBNМЙў­pх #rќMЪDN№•€Я.wsŸдŽE>!4ЅRc5цШuжІlAѕіЙ‚S№LhXЙШЂ’ЭaъAИ~EО+ƒП˜A6К*П‡э>ш0/}ЕKюжŽŸКazЅ’мє]dsP=9Кщі2учДЬ‚рmF№vxLВŒЊ`€ЬžџвX=^T^ЇЁ$Є7LУ<‹МГШOМVЙ…9}f &F5_’O1%m1ёёќTkХCkхам+їžuЮДfЦА6#OсфW§9№ UKъ'D8 ёv"n:ћZmІAЂxXrGШњWєЛцїПїђЭъШjѕ/ГnЈ|@`Мt/JПk†шВйР(•MM[jArƒФЇ6,;Г‚xЊvэdр_Š—…юЦEZzt‰їйkаюј„ЅЫ№ёј•|Ь~&pњ–хŠG/СшцuLЅT"RДtїъЮWјѓ4.ёМHTаVћmР\ч~:ЊdЃЭRј:КбсШ#ЛfЇ0бїKžЄт—A[пE’OUo~Yd>ЯЪn^ ;‹Щйф ГБКНMЧadvцj“ HŒjKшЈёšЙ(с< Ю$‡ЏлMљІк‹4aєУ§ nHЫ ЩіU'№џG"AРHФ>уп.Ы^\$ВєЭYђђКzBeгѓ9ƒ7ьЈіBBЪЛьшФ~/Mfn‡ё:WкЏ(Qсыc`ЈкХфжaѓЌ!H­оЪЈŽpoђ2Ћљ[a№вн6{xНЊPг˜`’<€љХ*3є†шœц 4 cТт2QѕЅsњѓТЅO.ЛЬyЭ^#žpgЕ{•ЇГЫП –tЋдx."Ћ;еqDIдГХюњF…V т…вB|$W‘V™Ђ~W&,™К0‚vyOїVяCмУƒŠЕп]ЊКЂPНjЮыТEF•5 ;V‹NМŸfІ ,ЙzЎKюјщhgрО}|іебъщ“љ+ёђ?§НW~оУpŸ=О|ѕ?лв—эъЈђ.ЌЯp!ш‰xЉZЁЖ={B\іqбmMi‘ OИSV\yЦ~Œ­‚Шw/ =~iЂ—’ц%І‚y3ƒіЋЊ}‡0bŽ3›I€:5 \н`–[tЗ3ц(fФ)AмТ@6br>UО"qKмŽ($aBЁKSћЄOєJжёFFп )й№XHК…QБяnlЇ’L&f/фзШ(X&Мyј6:9cPцы]Н:Ч.1˜тщ€b ЪHзKзk2”яoT™qЎЯДм(#pUPрх—Hћ{z&дѓ­Є<ŸkєО3 fЧЁєelЇfЯ~њOj ˆхтˆ>…YН|Р’€0нг•кп>ŒXtFYTІƒ U l4лЄ]Ct\пгФKўхи +юАчџ–ЯWЫЫГЂ]>b!n9I`пшпl№zC=ЎЩtXЫЙ6xђlЇ–Юэёžwђ‡ˆЬ˜ul.сtЁТиГУpƒх"КKіŸэKgмG8х†№Д?e ми6Ь$>hЁ*ИтR•yДў‰љЕDќ`Ѓэщ—€яЛsЬД tr‚Лwц<•QR"ЕK юКчˆФб6№IXƒ?•›ЙЁшX„­5жг‰Ьс’ёэD„№ЩЫvA сП‚K–lПтјщН\J=‹-1СпЄЇн‡XЋmгѕW\ #џњS>ˆ`д"c№08L„Кќ OpYЂЄљW…їFЎУцzћРптЭŸ`™БB h’<>ыјqЊяЅн+лГ ЫDˆ‹МˆЩФ!?пB#фїШ—е}(єГKФРВtИЁпэDGСŠЕнS”EŽшбЋУЏЪ0yйЊT=мС„sчХ чЬЊDуHЪ…Рd5dfŽДiЈ*e ::Ѓq‡Э\мtЕ­hёэ5šТЈѓІ2е№е[уЃАїЕ„;SђD`НŸ­ЋЋ‰˜Єъyќ$вІф4qеOю<т“тьП‡ПЛ ч)ŸЛ]Q7#˜Яd-нLЊ9дж}ьwШ0ыi 0‡qŒЧйеВ7tОђозѕJУ,ZЎn’ Дo9ў>|УšW")žЎКM8 §№‡йДѓ@‡уbNP‘С Ž™9Ї Yё“•c]‚гHЫљŒ+тБЧvMРЫ щЅqЊЩn'зИ}Дє[шЙБkфщ,Чь~“ЏюіIг~YЎ 9“чЈмˆїž+u3ШˆT†œЎ‹ шm_  SБQm”TЃ•‡}§оЭK‹ЩП=offfVЭЃcњ-5Ю˜3IћЅ~У)О8ля"m;O74ХЕšˆNžЃєpлмчFчYўўо3HѓЎY ыХЕKYєЯыj• <нђЅ`у#zХ6С—3ћ5z†\ƒЛ}r~кbъ{Q}оЬ• КЧV_Ž6Ÿ3FKФлm<›tЋ№А§яРС:ЫхЫЯz‘eС<зZtєЃYД6wŠ`^%>XpЖ“'soŠѓ(їŒeјъ лнс%з`иЩчqСХМ ђгPЦсОО•™:тЛіќ ћёЭ87‡|Ю"\iюИ“di№šК}7NЎYŒiі+ЊЫoі ФKBŽї‚ШиœIe3я7“GtˆpVЏ>Fб\аˆWZоvt–8ђЅЉKH<УbjЎсŸkГ2]1–z бB<ŽОЮьlІАв5ОЫŠСзЅГQƒмNщѕЉЌ”xcAymУOаОќpoZ?•юПкœg6ыОЕЪRР1O`ЖlМ'ŽЃаTГјBў—RМŠsј`г “р5|ёьЦЪхcM9˜аЋbгї#ѓ07ІˆфТЛЏr$;8Є?ƒъZƒМ?e1“qуxЃеєЉ}ЇЎNC!šщ0+ Wn‚>ёт!jOоЁЃ=ЪT т…Ъbsя Ми{жУУБ_•X8ёФƒЯ„˜H"ђЬNуŸј5щ†ЗЬЬJф>FFK}TЄQPЉMќ<ђЕ (гёѕmщ*_›3|(Сєr4„oTšАKєяg~-*ЈжT˜šЩZxшŒ ŸЎЌЃЉ8зјmЂЦŒ˜ џ}aUqИfŒ{юY9pŠVДђёЇ†UУM vЧu§C—<9^ѕЉО‚иБы"Тг+ФѓR№б;'/oн aG—wЬўЎђŽS7< sмpЊрфLKXpГH-Џœж эРТљDэЛZGkg- gжђЁйhјиsяZ”uз0;­TI~˜H"ЌK=›љVt‡Гe’T+Жe*Цf)bС[Ги.ц=}чMйСз.‚ОP ЖАЎR$‘ючь№&^0вЬёЯ{Э!юNLц„`rŠ,ХЃ (Ђрѕ˜Qв ђєЁЊeŸчнcшљё_эЦYxЧ†ХеL>&™('(8Aa;О4~>=ФЄ…Є„Ўq~ђ’—ѕOЖјKа0§н™ƒbМKsоƒkЇQ›Oaй%‘)оЛѓ›§yЏš4Ѓy–е|OИлО‘Zш2uъl Ž+jљaS,zZXуIS 9”e86ОвІPшV+цO2nx*њьј5У' (ƒЮжbЖNIеmЬЅЭ€J‹tucBdіэžќцYUQŠзѓ˜c/Ќ›ГmкЅ8u}в ’4nX$Ёy:ўHќ[І. м>ѓь™]“DыHє`iбу0( ацН§ щoUnMYЂ‹МZ k/ь-MпXЎ@йjрOІReD™Бoц"Йр-C@ђHcѕХ ђЅїУЭ"Н Eб o…pU—кsІYвУF)e9‰_Ђ]ЯhхoЈ_-еpK=И#6bSб:J“1WsУу^ИфPt7ŠЈП€Q'Рл‘жš!@~Nэ'VˆгhДвtx{w‘ѕЖ-џhLпeв…єЩјz+љtzЫ‹$5”ZВуЉUŠЉщ‘№ŒЊn оƒљсЮФ{ ЏfЅžвVГ.:•ђ“vˆЭђ­§T ѓБuФž›ЙёOd?Еаэ/РС26єЏi AЖŸЇ‚ьvН$IB8иЃЪŸšзcлSvєыыэЇ”З •yЁitу‘6) ‘œЌ˜^зg'R {ЊШˆКй†Љ-‘Иѕs™IAЌOgзљф'8_ЫцъXЗЪ!<ИВмЃ+Ђтcp„Kљ—y=—h—ЮŒ 9eUjлf47ў—5\;œРЈВI`ЖЪъ “šH•LiЩКжŠЊв‰мѕ{хЕ ;ЗІ\Lo7gИЗoЙlЎК™oД aЮ|КљёWЇš›е5YF›F§Ќ'vY№Е~"ЁЬечFE1”$яўтђРќЗЄK§RX•єЖ`Чфэ;&`t gЖЅ+^ъЗRliЏО’_m f-$г—GЇœТ'”Вџ*ѓИѕјYЛТ_EБ‚ їДЈ1th*(яI1eЬ:˜Н1оЩŸЧЫъЈј‹БЩНЮ“CЂtœї[Яn9яfp3Ÿе|2ЛмѕдІ§е?ЈЊЧIвЮь-иЪ•ЃГŠ-6ŽЉЧће`ŠзУžcžˆ71vГгп'zжЗ†ЅDЄјCЭџoэР#?nВћѕxх)9Ћ˜rФёБŸЛ5LenЙШЖЫ цєgPe“X‚А(нšQpТ‰UЅ%*hЄ -#s ЖЁёЅЛАІaaЗ}›рС Co\ЦѓoFvMNAєЎпрqАŽXжгbgSщ=3џr—Tƒ‹t99 ПчGЯKaRвx“Vt‚*jе`мUЪ1жїё"`ЦfэAхјk%јjХјlЯѓщ3УW?†ЄџјџTЙ~Љќєўќ6†ќ:eяPљжƒw5Е9ж‡'ЗA‘љгUJ/Д6r‹ЉВ&] š{iсЕZцЁ›nZV™№']єЌћютœŸb0`ИЖQЎˆx{‹[v^БbPА$Ї5РEђњfу А\#žІчƒ€Ѓп)v”§ПjI=ЕкГмQ†ѕ8Ьf'*fТщАЯ0§ЩOyK‹<ќЋNбUЛS+‹бшљ”TР~YЪї kїvЫ3К?vT86ЁˆѕЃ0Ђw•С!тЌ)qГЭU"”IзЬ№m)šЛEлТ‘9‡w$c~*єRжКz [ F Ё%%#ЊЁ{ $ МБUw ˜mœиW‹OWГз=!Ш­Ь")рэаЪƒж5…ДbДwщчЛ№aЁбT]pLг08%J•]F:xjо­Н ~н/&aІ8Р}ечя\ЈIћ2cъ%IwaBЪW:€š?ЌcЏG”]ќc-'Ыш0№$ар5=jџ[хƒ ‡>hdтЫ]RZ3ь\ђŸЂрžКuэЏ‘^ ,7фI‚Цы8Рxмы­Н*ЅЄYF‚ЫЈЭЉ§“al дТї Ш)ŽГY8ыk6Ы—џ2O…}L§Fэ! wю›Hу…ИŒ­vУnA;%ѕопАєŽBў4ьџ| ШВ‚”%m”їЦЙХ™qЈŸъ$ЕpeEz@:Tn’љ=щƒ жnЄ[и.л‘`„ e§Щ–ќЇstЋgЉГ'œЄЃ.ЊЎ’P1Їа€Э•‚рS7m›иїљ_cMn…/qзCв*›bЮeў'K`Љё›Фуъ‘хНМ’ФЄЦU‡ь††ф;Q о№n}§щ к”/ЇюТрy яA=Xз8ŠЊœДM.\PКфŒЃ†ЈЕјѓеЛ=аr$&ќ‘nм­HЕГ}ц]шХgЎ“I. љ/ЗжZМkіJ§^Јь=tlMЋЪЗаЗ—є(œ'#рџ~њE•i 0"‹[Fz0p#ЈAЕЎmЎH3ріЫ‚IЦЗЭZ.Lќџv Вƒтl­-Е%ђГgD`C‚ЕАеO rИœŸ7{ѓ ОљГzjˆ]/l‘EББAЁ ЈмzжЂз\•чB‘~Œ4E6ИХ§Žђ€=ыљпRў0ЦпHд–mВ|ас\IЈ9E*ЭіЩt€Юї‡їO™*ЏFЧФъ9ULScЅІ(Ў"ћК№$–Хч_PPt@zещНё(У–Ѓч!Ѓ2omSдРгдџ-ОI-DGLїi4Ы‚уЄ4mhЧЮТQцЏКžЄ­ŒЪк\c}Œ‚Ln7ы‹ЇЧ!ZqW1\lтЖЫШЦ ЈUS ёл+‚Е*☟ЉчЖ§aо‚ъЧ^DдЙ:AuпY_Ё)ЁЏ&зћьD‘ьЦЏ-БФsWоСt‘шњУŠЈ”‰sд lї‡Оg‰b‰ТтЁ 0Ћ=ћ]6;$нy'§рœWšФQ‡w*E }Z Ш`-aќхњВо˜у…кЏЅ‘…ЯК†$6ъўzбYсѓуЏу1ФD€1ѓ;ИчН'cP7Е"Ш-рNЊгY[іŽpу&ћ@Vt*ЊвathЃнwЏ_шЋ.f+qг‡OЩдlАflŠ]Эqg#,ЫМБZ";СD˜7уѕBъ$6vьЙЧ№—/H%+CmфbPЊAVЌђ {RёdYй*ƒbjXй0ј +T†&иуи9Aе>гGV ;ўdMз$NЧБw€•Й`9r,>nо"ЯеZmЫНаiгHVёcіJDмŒ3–x„%ъŠч:QтŒЯжЕAР}JYŠzЉ7щў”ѓkYўуЩ"Э“}Ё!‡ш'€{Нf4У'g7‚ЖЯ;nЙСВb•ч]›СЖуњЦжYYЃ>œпѓВ–:€]1™y(Г§Ž'Т`$ УБљМrБЫџkаЪbqчЏ\ lƒLж7<suЛpЂXRH11‡# ZL'ЯбЬŒd|Њ4Юš"‹јрцYнЮ…/тAg'Јђ)RЪЃ”•jИГ{IF5П>&§ЫzђЈЫ,@ЭІрНpкŸЁ>>Ща—с;R‚і;ˆD" ВMsž'ђт”xёкl˜Ж–№›T!Ÿgz G?QУэлТМ|vљСЁНтНн%Ћ 1z"лM•Ђ@щє‚љiјUl,^I­У›Њд\а*“Ё„†л=љ=лqЄ#Њг)š‹гО}u8вЮЦ›ЧVаYъ:•hЉKй‚ ъюУёbиЇT qфў*De ЫєР•Ойо0§§}–хzў#џy5ДT-ѕa'mВ‹Gаъ dщ#ЖГЄ;FЊpI§Ў,Ž7/šn†СA( 6 ‚Гч(…Нdў_+S“ЗД“{V%.ЋBžЅe@СфмS8ЬћnН\ЄTІ‚цNmн•cэї/ДеХšbєеЅBXл=Пю7KзG†cі W•U[`L;З ­8ОбЖaC8Œцж"0№HЖi!ЧРF;Žєz!бз”эаиhaф*:лA jџQjиmт/ЋigFgœпЎР$ђИЧЙNйЄDxЪ㹓ј<&0Шцƒї<@ІїcФ4™4гна 2Ё”м7RswwфuыA№ј §фВVrГkd“Хщејt‚o-^б[ої%щWяyбv8іa$•шЯSgnV<Ђ.ЛЖ›’‚ђѕљіŸ h!v™T!7гыM№ыb–8цћ< j(9жѓqpЊиDЩ(#ь‡oощЙЖŠбKBsмІeE:SЅьЌдЯ6={‘ЬOtг6шL0мK<Љћ­яjпW`z";tf™YЦР‰3_ Њpгаy‡JžШ щqgL7юмqЕtT$рlєЕ1m;ї!•жЂдцU\=ЙЯaЭЌ: %fФAЏŠ65tQ;уИ•жj{Ві!УмsЃŸНіo )ЬУ ЫœЃФЦњКХHƒйФkTO—љОЂ o‡šёk`М#Ђ9—K™ piƒра0€Jq9Ќъ/оfЦSїxЂYfЫfуQю>ћр&IЇ=g‡Ѓ~рТЏi cЈE^† ё.lзїяblЁcў‰z%+ЋоyщPH1GоlŠгдD„ ф{hАm8ВљьѓЋбИ5еА§xЉ™)Z`‚БћicRSв#ЌuЦѓpœГƒј­::›ЫММlsW6сћvьM1Кa—ёzGЗ‡NOЭEљŽўђ`т/ЦѓНЪ,BеУУвbяА§Јwпь$Dрod˜ЬЯ{ЗѓУaёўGЙ‰К YтЂbчуТнoœќnmГЋќНќ‘ЃЄвžŸшTvор@(p„ њ{Џ{Я7Ж rЊ/ЇS—2UKЉИ)њаEмy/пьЛ›)рнg(s№Hњ3Тy*)Dй›j­(г"и:Б~ˆ‹ЌCЉЪц\хБ[vс‹ТŽGтЃкзx5kЈ{qЂADр ,j/‡}Тр.й`Д7В‚гаdtR/аќ10їocۘ=pЂ $C6Nў#й;\&нЭ—ЃпsTEтЯЪ–бQŽхђ+ ›•ЯэЋЧЏ˜WИСEыяhW wЋmБО5ј<`m{hц:.\жкБ (eаr\Взцk‰"qnџZhЏ1)ю{р‘БLфьлћfr+Ф%X?ŸЏЪ`•“ЁKЯ,АМ—$х‘kп[ёуЗаРFg/-іэfњoГ|ћu^?уTЋ@W&ћЫшэЮѓУГ,sрёoЎG‘љ8ЌлOdьЪ˜ 4NШСд3ЇІ­РфHОЂњ*вЛWСш hшFq™Vф/2Їy”Н.^ŸпŽt™ЦЄ/рєf_?вс ,+ЇЉ7+ёљм}џ"Ж' BDo#‡Qќћј^ оBюЌiDeт–й›ј*ТќN(ЃAАB"S7mЗё•Ь3ЪŒЋН (˜ ‘–Эљ3њŽь№хg4­cФP$ИЧ\: ЉnpюКџJћв^2А&ЭЉšљ"c"5ь`аh#rЦВ$ZuЋД”Х]5TлŒъ(ок/nА›б•ТіБН]Iж5Йњ_РXe­і‹Хt$Џ•eC,ѓvЌ@њoH#С1Њ_ŠZШhБdЯ овеи­ЙМy ™ђ'ЎчкZŽe EГљЯУл^гiыЇАjП†ыЄm!аd~Kv ѕj/n=РкŒЛEЭ‡k`,вUБИз[=Эж g`ežЩхQђš*л…щŸсЕ‚d€l Ѓ#ДAпHлЭ=qИA!п#’ѕ].ЖяЫТбМ‚ХНЧX=fјRІ•Г0 ‰№c0№E;ІЗкД,ПЏuіXcГ•6[А[ћЂЕ ?rœЃаaŽЖЈBW,Ўє-уP4Еžф)J\™,бˆЁБoж—iсMлЦPъЁa>ГЄwŽњZЉ53Os5Ш6Ц[™(е†^ЭŒqnќШ0ѓ\Ы Јр>rє1ї>7hЇо№YnХЄ’бX‚D—Šф1klДжУ> ЖjHГ&9- Š~~ik\лб0kМe\ьШIЯœбжФ‹uЂ”шП•Pањ&шE‹Й“Ga™˜ц}<ФЎFЗ9Ул#S)?М\™V>FЗUhX%ЊE"=Є_Ћћћ№uZ>й‰њGCО9ІжЯœFЂKЁTUh…^LcђRнщ­‚jхfО‹сђT"џ ”9EщHЕЂKЦ1pЯMЌЬyoсеГ^РЪНИрD|#nь*ЪœUвЬds Sог‘Cš")дFlЦИJўљ ьнЖЅ$aр<зВƒЮnЉЬ==&gЈCГхѕ>lдИk”чIћWІ™$Т&1z+žп{!н@§ЗД'“Їƒаxl|(в“_š3fЮЧNw%KŽЎ\ў?OŸ<РjŸMЙFq‘јŸЫD§$Y* M„ЂЕށtHOК§ћџnЕdкЃ„Ёjkƒ2T’}т5тЮ pS‚™—ŽдЉ< ўFў–rNыь@=жьOуьeй–ЋIЭ…PŠž,E$дZь)UШЃ5Фњу‰У ‰(ўŽ@rЪЏВŒuЅYм'сhkuqтєOqЭMБОЗ€‚’ ?lыиІ*"ЙLwбo'E&Ђ\O(уНa)№„Эпњ22‹PДo8іkПџnсміYš…ŒMˆУ"АY‘)ѕ)kx[иŠ0ehѕ…dK#[JQZšЦyпРЄNъ'8w t;–ф‰—ЈШuaЃљz6P ”61сРvžŠ}8^ъДœ`M2ѕa%D’ь&дє…|S{6™ŒLыѓзй=J›ЌЁbSgNŠVГzЈR‰(_ѓ­Љ| цњђG щљyTЎ)ЄшгДЃЉeq’=qєGХR7‘ l*Жѕdl˜*~„Х2Џ>Јиољ"fшХK ыAeбПŽ[вЗT{uи!‹И†#qЏИUюёћwDIЫaПуЪ- ж#тЛ\г)@бЯН`?†:яќЄ^ZnSАUЉмћїсs’зјšSwU;Ј;"цAC3бNvRFC*h)/'ФЬ‡ск„лFv…pЌ“w-ўš42т,юmV9иЯ=њ’lЅШ9a-ЯCM)/\!сžЭsqж˜н'ъAОрaгEф‚Ф~й|с_jЋИо™:­~ИМ[1x"ќ[5)‘nМžxфпФ?Hs$ћVFјџ“W#_xѓ*{7ѓъ%уЎvOИn—9UлжЮЈиЫfјь4˜/„ЪЇYњ‰‘DIn™y,WЃBX)њІ„ ДД‚с<іtІLzKшрŽF К`K)=mŸ@Т~NdŸœiъ“u"/ŒЌЧЙ)ѕж шy|‚ЇMпф‹еOo.8ЏMŸ2=]t8рЂХD”,-^пфѕ}ї2сŽВЬЇ) Є†y_,ћјЪПЯO;•чˆž. ЯД’ЄV6uљeT–Н]АЃ|ЪaОІL):iВ7С™4nвЎ›І‡žГE,а є0u]1bкЊШ Мф2‹AmЈР€љѓ}ЁУ}?сИKэЃ?‡_лиП№nџBУўrУЌПсв№ы’ћu"ћtїјvЗЬ>@џaбŸќ7щ}ЌУЌ эыћV?с~џ`П№ьјtЯќ;NўCџP?УаŒ|т?†яџaЗ ѕ-œ/ЗЈ)ѕџaTсгп№оПсжO№жПс­ПУИрј™0 љЪИј|buЇфk‹Г9wн"ќwРП ^Zˆї\MІOЦ icЎМ…К=ЬЎЛАВ~“гbeѓwЁ?Bfв№IгЪ№Ћ эЭKRрдјLZ ‘…=l:јтxВОN$ƒѕ{‡œџ3оŽibKжDTлђ6мŠODx˜ыЩЯьD№†=Зsкђ;лФDSоVЁБЁШ*€2 дйК zФѓћє3ЏNУ†П“ыэˆ›Œрйa/›s™RRюI4YК-œ0lУ‘­†vЉюfіРО(WIЏoB ]ФкŠ›y”5+ЬЈlЈњ+Dq дŽю‰Т5сЇCnhžtNИЇћО? ![Ї…,Р , ВsЪœ&ауYž:ёщDŸ7ЧЉЮŽ$изœaнЛ8HџC†Ц'жц \ћЃиџpB†‹ђyйќѓе]‡&Ъл];НшщqЈЦтлN„ HXм_›№]ЂлNыћМx‹У90ЊEЛ.mbКЯвЫ~Щъ7 ы›fў v\ЋЎVMбnРёъЁМь-ооКЬœž] ?У-ЏMf.ЋmїЇ%pg+ГІа œ’ЈCМђ Fs”‡ЮНу”њФ§GЋУєEЛ’”“н< y3YxoБs ЫWШrмF[;kх^2’ЕCHэядЧgјMС{~XBЊ.Ї ьW"xЇtjƒ…БОрnlО™нцшЃ@ЯўШŒ/bUэ<™LнКР7шfХ~„‡пEхзЦќ1?Љђтœ;<бЋ"ЌiШ\\•ДЦ‚x'`ЫЊS•€Чы,nŒ–6Nх{оduМUr†к’LСVјјнІ8ИžM–I§]oqЂт72KvCg вАріА;“9Y€ъd'[Ѕ•-дXšл–&кFƒхгбZdP%`­vuCЙ%е„ъ1ѕumWмЉЬљ1нA {џ:kD32y№т :C?КGвŒ™tЗеДїљНЖ5нBВy‡!Ф‚p‚О$ЯvЙt[њюЭ>‚f“2…ЉСRRыsжЌЇцђQё0&?˜в$сўџЃD}>ѓšЭAП.И w†ўя&йїZŠЁŠСг?1Ї;Р9?~јq~,&–ЋМ‹gуSмDкхЉP БsdгЌЂ@›oЬ)ј@тк;O`!fЎ˜–Ѓpтрj…ИщNэ$x]р"ёгIжЃё !t„Ђ`ЁЖьѕ2qй˜кЦЄЋNЖЯH€ˆ<Їч527кqйˆWT<їOACnІržOuOЬiL‘$ЃКKžЎШјВE'ёЯи .>Яв5B9A Уп\A3кѓšч4–№ЙШobЖё€CХ"SС>wхšqх–КВвb–Œ"|іnћOюŽхfŽЋB“QГУp Ч\ўђTsZсЗнлВutЂEиш;ЗY ?1t[uГCФм—“Uџqљ]< FО{-XQц ви*ь$=!иŸ9(’TСfћГИ8|г„Ы8w1p0fгXZ*м№Бэup+ЧЬ5ў{ ФVЈŸрQ|)  џ=†ќЄ+бцёWм,хЌеиъКY“аGs•РH…“(ШѓГA№„œf&^ЪбH1#Зž§€  ›mхœ§љC !БШЉУ9iOZŒDЄ– ж<ЅœJёд3˜V•;*{‡T(?iH]•еб“жлп™єРщЙ+uŠH;юeTF vЈЂ[PeІнЅ[X>ВўO %пCѓ,кд\ѕЬЅкa`ЩіЩ­јZУ9НЧ0x,ЯЛEЅБXœГr;O]яРBЅБ{ЧёBWda‡E9Ÿјf2ŸŠЧдиCИHЬ.yЗSŽ6!U; Ÿ(Вш4…Лv У{А‰л}цЏи1кQu™wT.ѓщp9…Х№ёТИщ5зxЄХ‹Fфhž„™юЋ S„dЊGžs"Tec•љ‘ЋlK›rє’ЄABOKћП„ЂуCmGzџXйШћБ&xРvДц•` з,šš/,Ю“Оч Jі.#`hЯъNŒu ЄъhфWƒˆ”ь›&SU;Vјbрљ-’ŸЮ7#ЊІнштЙU kM‘н“щ{eEflŸŽаZщКUњцZЯhЙЧw—‡02PМz]Їс1сЯЛ[Ќ:)ѕўo JЯВ] ыБсё–ЁйXљ—gуmŸ7к ЛЭЏƒ˜ЖтЮьЇДМч…Э |я$ѕˆnї?дG‚УPЬ9КlЯ0Wщ0NчQШj;<\bЩƒЋщl‡б!%ћ% эюР†ШQэ• $кЩќ“yЌ>Ÿ–з&fў.oѓЏе9 Эиз–Jзћ™У’‹ ОшюЯЦ]5ыu{ещp@7ўhжЂЏLP~JXуЪєЃСя^z?˜oбЎ†ЁСˆ~аrЖжUB ђ0Emžм+.m+)5цб™ДžбОAЊЃjŠ_щЗYшN—/&ж zb†фwмr7#щќ'DN|шcђрќzѕїе#ЃCUDйˆ }њdУ_,tѕн™жаХnœЫЂqдp|тЪ#ЏБFЙ„Ш‹ЖioнЎЄHѕЌf‚-еИ‘}ЬOЌЁ–9эљ@љ‡•<9€n“d9Ю‹РЋIууJRЫUк‹Š\XђХ/#0СЩ8@•SCТџ+*FО\Лw–ЃTvОЙ —qТ†R^–ьПa#`Љ_иVЭн7СO79Іa0чъ1а]"єK;цп…VД.УS ‡чDшƘМK§ ~ѕkЮkkoЬЩ'RtС{Мg€ѓзЮQ˜Љ-њХpGъкUНaЪ„шДž%OhљЅvёJW…;гˆ*к^™АYКs^р)К§еDPЕCZМQ_@Ž/ЭgаЯ_gv™ЌMэNСо­А OKi™Ж‚a%СТђџ<_Іi%ьeH~ЄbП ŒІУЈЈ@я|n‡n‡s>ƒфьТвЃiДLЎ’ћЈСIQHœT8Рчгл Фпn’™?‚НŸџGКАж=6Л7УШЬŠмŸэKDrЬП ЄЮАrюцnЛa МЗ„^цЁŒг†­д)-Ўc)МPΘ€*Єк3;Я •SјвэПВ1훇dЛ;ЭаРn6сЌ‡ьO”cДі I™f–уЬŽйШЃaеч/8ЗKЕ`кU1w&|qщ9Џс”ќs}юЗъџQс]вђ+пџЋŽ…™{„*ырš0пфЩЫRЬ‚j•…3“,‰/ёЛ>MГљГюыt–зЪМзЬŸЎcˆ•Нњ~;AЮЄƒ\мхЕзФѕђлОЬFљŸЮ'Ъ=Рr…K>—ЅVwэ‚pОi?žю$ бVЭ аЖ*шЪфYРн6—"пAC!Gк>eH™‡Ј]šЦл‹й ќ”Юˆ3С'ЋC0“?љКаxMЭUза(Ўњ!#mлўЊэІќTаœsй<,Зu5 Д.ƒрЪ+Žс`'њOљЂЕv•сНGчХgzщРuЏНР_эfьш&€*>ёрw'(GŸ‘јћ`ЛhюЖ—sJ‘"BBчT2зкОК.…ЉfЩjѓ+%№‘%9Јщ')Цt'њEцЮP99–ЛX˜\Џ.“i~""Є-ŽЕ”ЖГ\ј)ЯOf\ЯгЩыŒcђ–”$‰w™5CEПП9КџЌŒ-кИйeTП1”n$,.NР„ѓŽЎЄїищZ4ЉЩмБјшcсy ћс;ТY|lфм b—ѕ23uœїŠj$%›‘`?YiИѓэЎт.ЂPНZZІНI"‘ZSф\}оfЪ’ТгЛXГ9U_Щ!ŠŽ `в\СbQJъ~›9Э)†eFwUф‹Ў›PŸЎЎbЉфёОБ6н‚ѕf!šEŠYѕg)_ЈўЂ‰ ћр#š7'= ˆZ§Ÿ%ЎlЄv4„сЪЛq16|]9П=CHDN›ќAр9—Ба`й 9 Љpyію5"c‡кЯ€ѓўљžЪO‹,k”ёаШ0š>Nї№лHЈƒН­BxpPЬЈ"Jќ{“0~Б5ƒGжюfF-ёuпХJxЌМїЁ†.зv лр0“7`ŽgGїёнфЉ)’Ьfg _bVйБяЏ’ятylтЪў}ў9ЮЗЬ4O?.œэС•™иуЁД,ЁЦzМ”дфЌТkјаM‡6Xѕž рГ№0Ѓ—хъєОOZѓЗЎEQ}Ћў‰џDанцД“цлр‰œы‰Pб(7Bв˜<Д™(T7уФвћ/9ФщW_JЩДEЕžЖА<$Й‡ВЗђ‘аM€Љ:0ЯqВИЯ§фŸЦЁsCХoZ/ЮЏ›mЪo_ s"E{ѓZzк6стћ~*FОНGЮšЬUлячfёXЪЪ(^-iЁЈ§NѓЖ < G‹ўL?Lœ)Б™б•ЖыуЇ­›О&'NЉiФє!Z)ыsё€ ћ+Ђ4›ЩI§!Msйж И”q( ЉюиК]…eЩ+b­яїQ$šNќJž+`-џ3gЫ(dICќ:a1кS‰ѕћОћЩ  m" sBQ§0ен6@IyоcфmH}QќМщќ+yы5œй@ŽлŒEŒZeЈ=zИђ‘pџ8#Hг^;ї'ЩЦЫ #6gG+№:2 FЫ!ШњJ•ЦsJУїz‰Ž&:9озRdйЯ†ЙьЦђЮŠкћNВ )3ћдіWNЫˆ‹7Nе­ѕ5ћРЙI7hљ…– Ў.…ѕф†$_щЄZ>sы&њЬѓ щ%а~‰/Ђ€ь›…'o }PаЁb=T Ў]ЭыlїbфŠcАЫJYиЙŒ]‰рЌТ_PžЪp жТ^oНcVЦ^У ПЧtFў9sTкiЃйОЅwнЌхдЧ $+3эЇ§№Тпі ц>ЃJЧК)}[+ЙUНSИЮtяђv/{яНчУ@жх3;ЫŸ’Иш3ЎQkЊHАЖпб‡юvƒ“н8™RGчk­|њЃлВ{ЙŸгМHЯsjxW;2fзЧ=qoЅ|Цд[эиzŠ_ыљУжœ˜eEDуŠЇ] dЛЁGТП§Gћat5У\ƒМ‹Iz€мBѓYєTДН:Œ>Ыџ->боќэхYŽКкОсињ,Ovх;*О,žд3т››јMмЙёО gоSЅЄЫЎ˜ЉЈ№Є@ %лvдв-я+Gэ€{ТШлЅЈbѓЉ?|{ЇqG8јwй~.‚М„UŸfыšГщўд РШQA№ЁK狇Rh.ЈGщ@gIѓкрВ{ЃžџqmˆфЃТПю`ўвў]QЋ+NЯдRщOђЛи8}'L`жу0[d'5‡Ь’Њм9'1џ1ѕ0ц№”^WxI[Јˆ Ei2Ђ‡oHѓЪNЧKž^ЋЙVqLњє-ИьнRAЮIš…љКЪЄЋЫГе| Œя2 Ч|ДlЭrЦ1a-•Žz>Ÿ“_‡щшП?˜Оng8{№t †˜ФЯr*с"$ѓa:HW ЃфвИЅЋB'qцлwbє‚[ШV`“йuФŸЫgƒf{лЄvzvNBQ“гЯд™ @Ѕ-ІвўЈЊј1ђ-д“ ™KОЦЭй ЎЇJЕŒЃ HДЇƒ”!Ь]ѕЬГGќ.Хдф5_)ъ‰AЎŽ…з}‘А“ЌЕЛ==жк­vрГЮФ;k вёЪ?qњт‚мšŠJќф гŸчr аAЭЬмЯcХЦrЈ!ЂСэйдиЫ”Ю5E”ж'H5№•ќ&PЯјд фЎ‚іoё‚•tЧиА3;Ђ Щ| ПЄЩ:‡ЕШšП.L зм[!›К џ3лAcбЏ‡ˆ@NWiЁ'Љѕа+ї>›q$}цERЯ$о„ъj,CD%БњкNчesФrž@sЌwЗ€ЁŠ‘)rфŸш,gмa;ЦЂ5ЄЂ\oDрcџ.нјBйVœ5П tІёE{2Ж@E’Ѕєš0Хj›oднfoЪD€Й7 o ]91Њ}7ѕэ"љ>­–ЬгqМОљgЇђQOsdЇЛ`гЩU§Ж щ Qл№з ?fЮЮƒМ€їкМa „ЊPЫ7НИXєЅЃдє›Сž-а>Х|ФB!ї№œd$;§v-Џсhу3 oEЗдм/ЛкwsѕpК‚ў@Кr|ммў^тQeћѕ …‡ЁЉBЏ=§аCаVїtrT…Sм‹&Ќ.АБsз(3ељВФћ˜ВziСДЛDBhХиŸ%hƒ@­Š™йљ_AЃ[”‹yЊN хоЉЃ›lшЎ ЉІTіKюЄN[“\Qъ™*ѓєGш`„E5э лфtђn@@'Sъ(žц1G3Цp^"ТYо9MЋpх™šmzЅœфB=ЂD3‘ЈЖё–Кхƒ*‡ЯШ5ТІЪл]VфGФDћ7КpмПФ$мЬ9I›ЇіШ6Xi‡ФЈvzіJt6ЕWЋш”ЫSl|GKYєФVeђЬ?Ф6вwRЧ–B$ЃЗ–ІБюЌ‚dBЃ^ ќ@EыJ˜||TЧ~Kѓh‹1%Зx=Ѓœ2ИЄ”ˆЏкmбРЪ гћ2р2(wrІЋj^tмRDœђqLЬ”ЕСњˆљX> Єѓ`ц„~Œ] Œ~G‰PŽ| L1Г(№x$ВТб~ЄїwEДЏtж—МЌьшŠ йі9bѕ›–Š]жA*Gђ'Л+Lъ‰-юљœ‹IKoWЭжЎ!з&&Џв˜/ЃрLe&к:Ат‹џ~W’†mЃt‘Іі`ч|S­_Юet“)ЬWе0ѓŽѕVbќoЫхФ:—a5o" дLщShі“šŒxкk œhщvс-аnMЃЫЏа?œЪ€№–IPжмHЭ,NЎ‹J:з†rЩ5 UЙЭƒђАсo9ЇО'‹мь"“hмrˆlѕША3ЅЋ wЬ‚ВƘ3Rы‹ ЈŽП$%Uїжr›!4J•ъф`Щ&яЭ‡СP;Ќ§ГШQ=јт„ ЈYUMі ф’!ћ–8яЭйVдšФМu›Ю‘ьјЮЁчƒ* [y.+5‚|­A~]GwЗTЈ‚Пч4ї­™ђ•Д‡А…ˆGїЇSьN#Л8VБ ЖcQW#ФKўgћƒ1ХL"аE|?\:В ќ2tLЫ/§ж‡+ŒыjПŒDƒŸ|VьpЇіД0Џ#яЋПH"A1m@ ПŠBЦпAШтU…Ю–‡$}„i‰$Э0X%#›wОПЏЈїˆЊ$“Sма ЈІИ#бЁHi':СbДкпs y"…Ёu0Y~›ЦЄШyВpКЌОТfЇˆШLй™+xчOв`$ф9?™‡|BЯW_Й;l1›ёЄpZ„2ФЂN™pŒџ!т~b‚х•`ѓm•\g“K iu:J9ВЄДѓя›ч`Гv„œ—zЅ3aѕjоуТ№ће`ѓЫВввђ”cFњп LUzO ЫЗЪe§‡ЮБЎЌ[іАbМ?bЯe ћ.Xе(_-ЏЧ.–FЈ§тіfящэМs”38д8ЙцА№џЉЯ{е ”–’=QрjRш^ОPSѓœюЁю&Jќœ\৆ ОK,\g сЊ’юћ[:Iк+эœšћ НОТf ѕfWЋ7UЃѓ+#М–8qЯžуч…„-Љ„­яžC‹*œмjд›#IЮнiч !пЭѓъh(Ђ\)x(@,ЁcєС@’Ќв­ж {еЬBЫXLхтБЭp.K?эЈЩЭvЄ#оЭ}юР 2>bЅЯѓџ/ УNoоXcHдЭЇŸ!д{3Ў#))EHGщЮr(‘їіђёHЭpђ§lюхLрlmУ5%П ]Z›мХУcЃкчэoӘю*TЇа)И€hъбq"ЪижPЌŸr­XВp&ЅщФ"Г“‰юZюiќЁјТЕ,i+:ј™M“јkъ­чсЩssРЃBвFŠУiѕќџn)n\}ђЈЩŠ„Z?c5OOё5С=тXŽЖ%&ŒvшГšj;н­pюНО>“ЫЖ9ЩЅЦeЃэ?Р@ЈfW|ЋЖвсŠ-+ UK6wWеwќ,Аоv(“{хРZmP$KУYBЯUЕ&‹ЭЇw%ОяCїЈ]‰ќ\ЂsYГ[kЁМўmЃ”м+чUУьиKzФr`Р<5О ƒSeЂЧпrTы:Їн:м№<тя'о=Ё'оЧR>жИЏ‹џ[D$БЌ0@Qщё?Jjf›\ОQёџ|ггA?–'TжMл^я Ž)?дЪ=ШpЫ+6f˜BК ›ђ~ХНOm V†Ы=ыаDнf0ш‚f 3шдъ|,ˆdSaJ0НоПп уЅІЙ’н=žaМЄйnWћ˜œ^ ўщяУмŠ-­н|Нr› &6Мpуv—™=HїxŠZ"&†&ŒоnЩА4іЛzШ T=Ÿƒlњќ%Ѓ\‹№MЦ#уз7гУs7єЌTсJ_›ŒЖ~ќw€+ѕ"KфђїEыюlМ]ы3†4"ЎИШЇ ‰ ‡ђ•Ж}ХEQЅ-ЇŒ!F‰;ХЇsїмфШIcFE/ѕЈ‡<\С їу“)ќzѕПŽXrЭз-Lˆ‚„ьХжe3ЖvEbю^ъеdїОЯчˆ“юV|пyJ§ВaщЊ.`{'%drf?јš­Яoа‚KJ€@НњДНЮњyЮI $Іпj}ЦцЄТ7 yq%­aЫ`Э“|и'sѓ т [AѕWDч~8|hjfцXЊљxхЮХгз0NЫKЌ•СŠј™B[џu˜ЂY““R‡uŽ…,OНж‘Й€oФmGћ†lSŽ.е…hЮ§кUЄЩMъўїа8ч#!\=апЬ•V‹­–Р“@š}I€ лІ, P.љ‚зXЈšyЈУdЈ&К<д~лк№хРДbнXЂ}UЪ=mШ2^˜kW[*ђUІзЉ3еЊJ•DЪ6Г‹ИƒАх]еОЄэ'1˜œПйГЃдЈєШъ€ВЕWЭНnЎДЙuЉб+оН o*аQg“"Ÿw_Q‘јчKфoїYРщ…ЯOЁ9шњД`*ї„i)"2є8ЉѕшPїЖˆ’X*0ЅІИЛ|Х бг”огj^03я=Щ› t›;Вщ›‹*VЬЂ”$!є чЋЭ=(’gW{шxяЧbУ4ЖЕ•ТЁ’uŽ€Б4СЎ‡Ке,‚[н, Б0d мСуyЂёъ(2Б'UEќŽYЄ>ч?чјФdKaДб.ДЁс§злтЗІc4 ГRJхЕQтRИЏ?цђм?мfEМŸCў &Њ[”j@]RнМ]fV„šb.Xт-Лоя ЇYH&w!ГC4Ÿ_,tKW\фFЧ^:FjBэё3Ымyš4иqBŒ€‹yцk,ъ?МЄтlVбl`ЎГ‘БъЦ~ЋХ0`‹дUЫ%\•ŽzЉА–у,щGЧСгЏФj[р4ПЌ+ №щр,џ„ѓ”&wДЬxsЈ&п='…ФІjxкFRЁ•ћТX`ЋwЋ"WкЊ?1­Д™HTЕЅи)›"эЫЉпЌЉо†$Ч|•w ”eEс§;ГШ5Х–Џђ/EC!є3*лvшЙ} МыеI?А—+*ef`њf-ъŠP1œr_Јъ+]OИtlяH'Щ‰П0q‡’№юъРїУHеfeїv)~= J ?гyіXЪ\тРЄQ€?Љ`|7ˆЪЙё™:Нкsюбщжау5и›Вf3ЎVЇ[cКО9##є=мјэxО>оbЪiŒJАG%ъя Ч# ч1кfдb€•@K“STœЃ[Р,>c‘ЂсУЬ-љРUв;_“В!Ѕюћ4h žгЩ 36тД)MБQЗћN‹ZЅ№сц’Š„џіспoNeЫ•Њ3NЂC“*у’эр&“g/=ьL‘шg_ŠЛЉЯЄ6›rOG<эдЊРvіG•=W:‡іу{d9фEK­n—ЉшёДodУФ`бёЊ+Ў8Цs…2ьх$›тџ zœЕ†<"ј‡ј`Zb›Qё+жйб {_(ФvэфiE7’•РЧк8њрРϘрkїдDЦд)къЕ}а§SёБ|vBп$Ÿ/cn)TEE‹šžqDuanƒMXyзЈФpѓoL гТЦ”š&_Т0E)6йѕ б&.&ьЙЎ0D„iЅДzК?і“њ$CrРUуvi.eŽѕмRšйЗ>ћ/pЦ?ДcŒД#!м .6ЧЁЃ'yЪ<ЪjЭЦ'щr.dЁ{‡мКэ2Киi гюџ1Д.Јfщ1| 0|rЦЖоа9“’сЬXеbвИЏ=qХОќ4ЉШв…T8} вНЁїТ"FYЌšцџdйB]K3МДXнЯƒЧ№O>Е.Э%рш-л„&NЅМчЅЧnRнzŸЪМ:pŒЫ„–щМПХ<§ЦhЊ РГџaу–ќgн†Ќdћ s$iъ=ѓб ;OPцІ{Iк%€Н$]–н-г§‘+ФŒЃXˆС-cїкšcJМЦжмкcdIд+‹ІB^”ЇЈSwEр3*ђJ:и”“БžМ •є(™ О*>ФоэйKЛІчV:@KЇ mgбњ.yЩC_9xD12б5fЫØЇšЏ7aРЫЖ1бj2ПK€Н3L5ŒТH'АTЌ}іD@ЩлŠнјђ]Т/­ВjSќ еsГЃm-№’Yc—шб8ЮŸ,—ъчЅ:Б,ХЖOОaГшM|LЃЕщН3*СˆЅvД…cUњБ‚ъˆС'Н0‚UFt“šgќЏ/0л‰љ,ŽбМгг$ рЩl3Sц—xE%В7iГЖВ,]П_бОэ•ExЂV,№вр„Ќ?а7—Ћ\ŒC˜Vgуд!UxюЂэ єѕЛ~X яћz-jШPќDm"pДЏ!ћЏtŽЛ/%y†/•STvOs›ЊМхŠ Œ3й‡žФЃ‹2‡>BЄkŸЯ„HxН€qПяœСwiюп7ФНЖЗ;ЈЊШ;†ШŽ,&ЈОTŒЯЊ“Kгњs>aБJЂЉXСa &PЋuХ%ЖZ˜Мч—ŒБш$˜Б>ПбCйВiўSpњп(m*YnОMP7ЗуH˜eY|n‰ё4€ТБЧ0lѕ4B•yёпНmѕи3 ›смk;•ъj Лi€C#)…ЇаŒЇсС^HЩLЪ*™’–Dу–ї„U_љ,a‹7†ЮWОJИ]ТљЗFЬCKЂR–­^И[zЙЕkЦuГ”?‚^M‡‰л~FR BІу~ѕЅ'mˆЃ~ШлwГ—Д$шqzнБЛіrэIХŸЁ.œаЄщTйС!lзsGњ ёмFT= ЮG ž№„#86 ЄГSиз?kC’ Эі]‰kщ%люЇ9лцsЯ5@;ќьжQnдм:!1ЏjjHJy!љь~U–]ЋЭељ^WЮИŠH‹ЯЬ’ЏЮџ@dјЋEяyC>Д,Э†З tЩ}YР’єђ `CзrПћ(Юь“Ч jіЉsІ SШ,єщHЖzGч{hТ'…ўi нрAƒ5NџHя*З+RƒdŸФAЅааœЖЦ(}6Ai?YŠ^8иkШk‡TХK5‹3YŒЎАё‹ЖЉU$єKZУ­šgi{' ՘`Ь U‚_uЉMЗР,sњ*{Уb5tЬo3юђP%_Й‘§№Оhjuk цCЁуjєЄпЎВŒС~Ђ&Тež†^(ШЧэЎцў%иѕЩЂ^Ъ:—ЪŸmP\бЁєA™!#yRј@6Ь€ATГHЉи^ЧŠx`Й~f~гyё?j‚V]!ocиМЭOЇWˆЧ]A{Є ЩЃЈїHм.EƒЙЇчУЙ{˜s0ПcSП8zхщѕžwЗ№л{b•bЗпbллh@7oHїцІ4щbŒм^)†B%§JТОи0 PЖАМтlMJЊjЬУ0гУ"O0”ŠОƒ(w!џDв2Ъ>Иф w§ pByЇoЛVmƒѕB ПaГлRkbпE S=+_ыэ\Iс U>R­АE”№ъјЯwnы8A‰}} ~g›ћs:ѓ_|ьЅ_ГuЩWD­ўСY§UŠ6sсЅ!ƒСіКеM]6ћь2Ьn3БЬHЎхmšIзSZў0ŸyшА Е;)vі(ЮЁпи>‘‰•|XHмџ[ЦџQ˜лsвŽ23ЛSњ%Ј УFђСϘ~8 iсЭя™КyќжLВ!ау%ЖEŒm—UŸ ЗхnЬ/›8ЌGŸbTw.NаТЕwМ9^RJYЉXVдЂœPрГR ЦbУ[<ге%КвUШ„Ia9N)DіеЌ)§…Эћ›П‘Z#яІž“6@єі­Уyи.7БжЎЬqЄждт›бЩGX№нV|п–Aќ~žбCн.ЉЇ[E’;|јЪ3 )iJŒ˜š7ЅЦOѕZwРќы'мџi5UрБšЫkŒ+ФгЛъљо1Ckr—шеA`бИБ#\[КУЉ№ђy9p- ;ѓ,~РД‘PЩ;ЬєeZбЁЊˆЮrоC7ŸJ—ТQФЃ^ЯsЫ@_:крnbи_бгР"Э…v#іь+ењPŒu3Lе}&•М]ž,•я’-Q_RKј—Ѓ|^WЭофŸУ#t­`фЃ r жея§аcеP‹Чяѓ_p•НКFчь-0аH’‡ВЌ(ѓUІ&б}x.A-§Ьп†МьНс9Ыѓ-1I$ыlЮЧFЃ,;kЙщae35рQоџ]Йƒ?уюDЎ~Њ@,7- ЗМkEœe‹{‰'}Рo˜=рxнч+ъ цsУ^ЕLfЮзТФ“IД|ЩХЉтvMнщr<ИВАzыGЃm№“>J.ЛяFР•UГШ•oTd5lN DŸpЇ U ŽэNJЕњF№Q\“7XR‹цЇ.ёЅœŒгUž" ФmыA1ЉѕНў@—EйгЦg”M‰‹^[DгWЬНш-СA}л‹v ;PЊN№п`h’ьeяƒў№7ЭСЁqp š€ЦZfb”а4”ЬN\{{ќїЄoЃ[ЄїћDКяЧФ BHЙ…NaDЄ7n1—кшАФзcWШ3?ќвaЎgВšђб$xo ‚'UљЙyЪњ.`w"\lћыb[Ф‘‹,ЅQ™[‹є2VU~џnMUћ•Ž•НqVЄ4Тђъїn‰СНЈ^сqeйReRYцяЏ)FŠ Ећ3фƒ Г~B2ПЂыlfž№юCб@ё§ЇTNј*:L€њLвLY#ЂўЈ}bФ,JнžIUpѓЂC‘L9Ь|њВxХчђXxи‡Lj“%rЯmЪм_._ џLŒЙmо5Qa ˆёЦК7ІM!K+Ѕ—~_Z Э+v<Š Oд ћ›/WЇ]ЅзNKЄРHђЄ|ДжЋЅ*\‰Яk^ Ixrс8ŽJŒ§MгЉQТ06Ky=wюќІЃИЧ%Є_ьЬ&k0Љg™е<&E: @g‚•9!Cх|eеБ&х(bюriЏ ДкЏ+ОСзБВžrРГuyeлРx-Ш-r9S%tŠОKk^ЏЯG?ъPУ9Ўш/ьž(ŒЄЂMgzу—ЛЉ5|X 3†Я‘0О,Ўlж@„NeN[ылŸzџc“1ћдZ5E8ЗБйЯDЧЎп‘А‡Ћ'ыВож!рyl,еБ“hзЧI)3ў,п%ы†Нm˜ко§юCЮLйдЃKЌ~›ѕЃRОZn1•„ЕщC[%‰фЏnZХФёЙJŠЦВЬлƒь1*Эˆž№r’7ЇЖ›.Щ‹YќЕЗƒСЖЄp+qј HЊП‹ющ ъг^QѕEŠ$јкk'‰tK&a|{%GѕэєђHc+И—­дkR‰РАйЧsе№шTIзYЏv!…ž‹ЈŽƒщХфЊJHч ƒ’<ѕKКєЫяфЂЌіbЇ`эі&8T`(іpІƒсв!dо\ˆіwУ7Ž„№bJxдSo i& ‘yesSXi`—j->oƒV$бПЫўѓQиCп›ƒk+;ЅфœМ8ЕнеZВ Ю ЖЈVПw#е™хІˆэyI ч„ј\,‘›HоЪpј‰ƒІX93UєйХWRёT‰6П_нМИ€е|АЎЦxнйВ&Хh•U3zNЏхШTЌeш“G1‡тuQNх˜ЋйшАs№т rD™< |=’Уї~#Ш8ЪЛ” œZltТлж˜уl„!/Ÿg§$;pекНŠ ХъdsCПJ ‡ГЊЎbІ=Ъ” zœ—lЕwм2ц|Б“й+—J[„БЖ Vійт/Рєз*pD|дП№аHК5\уєŽ6HЌиІIРŸіЬщD_g8rћn•ѕMІОkИЫLІƒЇ =’G§Jь—єшЗ%§ЇФоэЅњ$ЂМз:jЏД$‹‚‘ЇZ€Ќебх‘t}C`Ф‡%„ў€›ˆJq уlwW4,B €žЈ­1ѓ'I…f†ЛЗ ёк УЅЎЪиcщO(3в>ЌX6=ЌНœ22 ЭВЏхŸу„­…Ьї$ѓр—Ќ.žо§"5ZxsкН[­)&qлЙ‘…@тяСЊжј ь ХуT&!*М:2Z7х&tfжн~Юv˜б•a!Ї(„Кyі1uE‚6иp$-xИнЄїБMŸжWž (Ф6"\V=ИL^ЧG.ЩеПЄ36эЊŽrЇ+Vзэ’0…ВМЇ 8“KMУ›oќоСpSƒ‹TBъDPЌЇЉJёѓгŒќДчкпšhќ(<Єdн%F[‹6а&q;Yќ†–НЃ'мўПК8%,q~йŽРєNˆНвЧЏRLЯћ_ѕWРЗm…O]…€€†мп§ЫпЛ=УGѕyЕ2О•9г‘Єч{Ьі*єŠЗF<Бц6^иђфЉƒќmнп’НeqЩТ1Qzf1ЊзlІржŽ)‡(jюv–dг|‚Я!Илыiњ?Ач WžЦž;ЦЖшDuFщox5чЈ_№bоc–c8I$_ЕDПŽwйэ-И‡’'>­MџEїм2›rnА§і~‚ж–ЭБЂўс`…?Tb6Р™*ДMчF]~‚фЫм|ыЩ~ œвњl!ГE‹GVŸ"ЧdVю€D™S[E№ШзђЄтlqы3Wќtcѓ:.‚2h%?/Mе)jК%6jЉu‚P‡zѕУ“všПђ'8xэиp"…Й•2ѓ)Ux5Ощђч‘ЩЪ}-d@Diє;ћяГьт‘ПdKџ!A…ЎYчЖ@•b“*NХ”,]бЊ"Y@,ЦшKСЅ“ bБ1-ЂEйБчtZТXЃ YЈЎHJЪ=Іž/џY†CМу[qh™GNИгѕo—Ќc„ qвjJюІ•t›эw­›Йт™ВG0ьOЊ№ъ­^DPSЪ‡„œУ|aŸІќм*Язџ—і­8,ћЊЇFz†фљнx˜С9Lп`гЭл>(‡'WДьљœтšLШ<–ї„d›Mа:FЛЙѓTЗ!Щ%љњ\ЊпзбŽЈ†UYMЭтƒzеx,LЖZ‡!яб˜Z3э€њT2ЯLpЎвa\AёlЎ-PЎпrОВЩL Uфr1F<5[|МGжuZЅёАkpщ=и^ћB зІ4›ІN_ъoь›;‘~šЄН*™2ф™Œm0Ej„^˜Zі&zOы)ієhвь“і ˆ эо%~lаЙ4%ŸН+Іs†sЪЅzoЋœ sФŽƒbvщЌЬ›zMлГC“џwjеy!з$кСЅ@НŠ^ юЏ UМiaМžщB’яЄ ‹uЙН,GGТбЂв—^Хџ~Ÿ ‘AЂд~z{СКŠЖDІqhэмƒС[ŒRЬыЪВЯ>Њ‘H2ЙЧ.ЊGШЂzoXЁšxиˆfMuBSЏЌ•ЗYтxOgШ-;o†:ЅЃŒqЈп“ћ№тЇBЄ4 SЖяЛb/!•^ГFОp9 уДQ!јЦёKqƒtMСУ}щ§ЅпсЮ1рM[…д))к{A?щ=3=ІkbKjщњAD9œ$ФЇ=шѕ‹ZOР—XчН„œ’`KMxо›|SsяЈ8Ќtkачщ&О1Є8EMКkБ“СY§ o\дэ'Ёѓ^ЬоДД'0Ж”­;0јжj\ЖXOJŽVш1—е4Лl/кв—@Ђ-джUГйŠ0тІ “Иј—ѓ„>0РŽѕhР­ЇЕёMBёК8wфŽЌ№ZZ8r к-ƒјGфЪT&ь„GNЅ?Дdб“§S”7іЬT|ˆ№7f`І}…Е-\‚ћЩїN*‡ЫшQlGvaН№іФщ=ЄЯc~р5 ѓGЎш+ъіc†9цgї'эцЇ ”8)Цв7рИЙ_йu™Њh}+жёЕP1;э„Оh§S˜}хlНГ›‚‰l}FмŠЩWтWoеRЩ\гЋ‡0ѕв€З#N8ћЏ6ЫFxюиuEœ…“ ь’ В‡cb}бt^ ёќо˜К™"NЦ1#%гŠ<`­nЬЭЙ„HOЩиuлЕ›ƒpG‰№ `н!}шх} Aq…Џ9ХІи”l2q†RPEХsћq‡–GœŸБVУр@P ) H’8ŽмЕqЦj.yІРguЇ;rв6ЧЧЛ…Ь;Ьo*D_U­Л6љ=t€4‚…†ZJe‡п{eСЄ)ћM%…sоSьЄчшьgz/ц"їЖO6ЁlzВE2Ѕ&ўRЕв.#F:Щ^m„ЯЬƒ[Щ_R9–DNеvТ.Z‘ніОч№f'УёчЯ [ЎЈaВЈуƒФл №ЮуОю‰rнŽY№Aa($eЇт’Eч<Ш9#Љ§Q,+ЈпТ„яснKAўљkхХ‡†Д9Њ/мѓяnщЄQк$‹Л*ˆnз(ЎЯ(›ƒЭ*m>ЏЉ­т1сD„!4_'ыЗnCућЦБнCŸЂ…ZM „ уC*ftыЊКYЉИ5ЕUўc} ыњя_AпЋЅмMCDюcч$0=ж$щ{С–єеО+ув\)'/w3ў№фєз–Ѕфkйзs0§Е+я]ГPf94{HЂЉcАЗH”Ьэф X*иkт<5ЃqрT…8ЯmFe'ŠЬžE,›“ПžŠ№ єГП^‚VBЎќЖцcDL‹эЂ‘ŒУuо–_>ю€биФ€mnœPЙ+ghNEьГйф с=Ш8?Niд†ТП*њтН№ Цc]=Їмяс~ћJtZ8мЙ KVYХŽ8r”БWФvˆX8me5ЯЬA‘ГъaXљЃЏdБ$zБ…БŠpdьe>Ов‹išH_Яџh>DБfИhЉея%…o™›Ÿ.vR7;EXрCEЖѕx’hЌ жd7Э‘~:Ш нhmкчё;<$ф!щrL !€eј‚Ў+ыЌ€!EюЇ №ЗЪ‡#[рйЛŽя€MyЩоG"g ^VЊDњ„$KмгМџі(зYГНxђZYЈІЫИ.ѓЅё‡ъGcJvиљбГH™›ЗЎБ6ОѓОYГ—/ЎИќЉћ>BіHгМ* ]>т­ie@мФg+ѕAW№,§ЧЛЃеLсCў{БђШUSєЭ cxџbПQы’RХтœУЦ?мн„GDбХ‹Ј"#~>xФ*•&-Ѕ”ѓц{љ8%-ёЛђ.AфЫdвEш5ŠЛ‚"LюS\ЁЊ€˜_}†b˜ІoSоŒXќ‰‰yЁ3рњxњц?&Щ"љЬТи-в -ЭЪЮЕ S…зь шИaяU%žЅЭ§aпxЃГђbz”Š&€cИгŒбŠЄI ђутр ЊТдE`гёмMcIN„aЫ6ёH5ь§Є=‘|вь N&Цl^qsГаЁMЙZ“фБх`–ыkЂVŒиИ…џuЭhэЉг0Z2wйНтЙ=дДѕtЂ’cЄяb0vИOžОБl=ШO[-тq'јЖŒYd;ЩzˆIeч‘щв™ўёе"еАaњS9С№–т3ЎŒ$%ИК­DжPBй|lкzЛВДm%ц•РН–Й‹’NCŒЗм"fOћЧ0ЗШzЄ$эоmІ№y.,+pД\сƒjщяk№ЭКW˜иуМяAќ2љоVъћšЫ#И^™"a п!†d0:прeVcvЉжиHїюй`Й9aƒ(/ Z•ŽmЋyв›RŽ^Ђ{п`б ёWхнІон ёSЁaВлe– ;­œСwР~Ё|Пeии‡FЁ№3•Ÿsžхо|8Зє<О6tU“ЕёKъУзјЊ#‚cЅ Ь6хUvŽХШAк"Uш)e‰[qщ gџEŸ—duŒY7ћudjjЫ3N`ЎТ­ѕМBЈ`xLШ@ђнMx”ъ3—бϘ:лGŠuЩтэЅcі 5/јаб=?я'6CMпƒŠБk9XК6фЙРOžy?ЙcюЪЯТ‰}тXќo1ЅіщсЗ#Tч=~)-MѕКдBћЫ/цT”QЫšp`…РЦ №ЧŽЮжї+ЯщЁ§p+EК,№X9@Kрu1Nџ< щёЭ=>EЁ1тгюž 5*Н" ЉЅаmћ™ЬbvЙBдlЁu˜ ј]QЇ/–ц Ц‘qЎ;ЁрcЖ–Ю"f\]ƒ2’е~\яВ8;ЇЧ—™@№j|€ѓЬ7лaРќ,енcОщ;(Ўиk>І&˜щЌhНdѕѕІnь h5ЉL€ТўCmЄw(ѓљЭЩіяІš­…ˆмџ ‚5q*ЎœьObT4уo lXЩФѕВТђЬijж71–jЫЌŠ[oI+"4\‹ўќџl%>ГэЈœ“U|јЋ?XžВ‰eЂфkќЊm’ вђЙOюи-ћiЫ\$–ПћРFхАй1"О§ŸWя9Ѓ БFУ–e‹ььwЙKЄU?ЁmЯфёy ф.PИЌN‰ЗIзиrої)EгГ™іпРЬ)i™О“žѕЁž$РСЋgЛŒMeђvo$§к~Б˜фЕё?$ЇБUЩ <#эМЏќСe7)п7š P=КљрЏ {аnе˜x;Нф Š rВђЁ}хx>У1DРЗ? рИ)Х№Ћf‚ЁЈ}ЉИ9дМ)§–ЋЊЯ™3CКЎžЪ.'zo œйЦяOФx>эЭшB[0›ћQЅг0Щ„ХxЋЏв<9”ўŒЩш•—аNЫЙЭжe?ŸЯФ€ч1С\>с6ш6zeЁх­аЬПюОGхuЭ`8~djРХЎ*є,м,6U—џЌƒьАх}SН;•~Шpg\‚5–8PІСpь2n a‰ёƒCѓ@AWƒЈ,Ёж’2ГИЪ<Ь‰јЈXqљ}ЫTB@U&зD+ФsџSš2sі*TЯ BhXZR:7•ТЫcЦ М-д€kж&SДС=кіъ!ЗŽeo'мwXвŠM€ѕдwU)эЬт#ЂђG”D8iІЈx  [#щŽ*xk1 $ЦОЃ4ЯGдлЛ4хж юЗјTф7AнSАў№7ы^L“ LШЯoФ_Sя@Э+ЦйЁф=Щ)zXЂ`“epЪƒ0š4u|ЙЫ$q{yЮСЗ)Ќѓыtх жlTЇXвўЕQаА6ЖС№vяUу‘оd) ƒV›щмчS­)@RЯRš[Еу{jwЫLжVМф 8?‰p‰rёcЌ“ћеі'еїI‡EœбNџhХjQГœм*ўЭОІF§E‘­…бA№О SШЦpЙU1МЕМѕ5нS„jШёGЗV ХЁTqсёІXшiŠ$f+†Ё2 ­хиЃ.ЛI+ЇЮЇьыНЊ‚#2 `у0&=шСЂ%ухЧвЭ!б`оЎ—ЂЭжЕД;šУч„ tБм%AƒŸ…‰рї–&F3Џ№сюs*Шцœš93n{јg`рЇfž]‡‰aNC$“Ќ…\xХш„<8€–iСіGЁL,вЌїтшїъRЉя Ѕ2Ч—|ђЗ €PЂГЙ=ошћЬ9 _‹+1§’8Йƒwв5GЧмшQxЮХІSЎЗ$њйˆЭ.l{MpOTQ…ЂЎ~Ѓї‰Щ:Г1т™’ ЈџSШкья~fљ~ Эj›Œj бЕІМCсы]„Ч*Јг‘ЮИQК_H8RJFE{˜бFЯеж[СhїтуœsKLg“2F)2;мЁ єѕк9IъЫу ЎшMЫh­а|KISžп>Ё+š(…БŽє…sЩЛ‚.ŠЂПŠш5ŒчЛwрЗїRKJ)}HыЫ.їu †ЭƒГT&\уƒd[|Š);ЈŸž,ЗљЭ уfuXм Ђщвж* ‰gфаJ| ОŠкЅiљРя.йŠ“| ЇCщЇJ/]rЄЖ-с( zlš‘Ћдž(5œЈуХнuŽƒIL# йБЗBГх ~/лЄэ…tЏ'ъёўСˆЃЂНцазHœАђ{SаЦKЮj07ъшiќšœidтgЬњ*Ч5ЯVяХQЅРƒNяьђкœV+kU‘ЄC\? цхtUЊ:œ3(Ж'KиcўЄRZu9Оz] ˆRi“ТѕS@ТiQюАaaЬѕйŽL8ЃyцЉ`MpADнhќDKф_њ1Њ;S;П|о'Ÿ4y5bkЌQWa)ІЂhIЌcфO›Юž ќлdYšцллжb\ЛCOXЮ}ў2ђq8И?a,Uжr0‰;1tЋЮ№”;TПtФУžtЇЂЖ7ИgZЮрЛŠ)хьгxшŸt ўоqўoљ_yA{[d›”ыш7ДkЗXбјžЪЈФ%„ЪBд @ъ—‘„эВг`xжr ю‡щ’)мцGі1i-›ЦАП3…X.*ф ‰ Дя­єсlRžКGzрЪБхF{}—ЪhФ‹ŽŸ*Xwё–Ÿ(&KЛšiћїГФ™Vљ­lMD!VP)Ы”,бЩvшa@I%щЌГ?схВШ2џXї˜  ƒJSŸ Tјэ&oяOC‹.ђш7”YЁJn&_*~тИНЉяз>Дж>жpƒžКв‘ўO"ЁГ ЎлR+*змYы23d^%˜VщЈvЌB48[ЌFƒЖJ9ђБш­lq3З8}щѕgІђУЎ„PЎ)ф8і~?’T’Ї[њЏо#bАБ ncœдcТќѕмбЋO‰уЈFч– wF‹Х ЭTˆ Ј,€њВћ 2>,ˆсЛи)л]гVіWЗєšоkћв‰5шmФРNKп„;’wg])Бэ&MwМЖјФ+ТћWŸ~ПК?Эо—VOlЈіŸс›№Ш˜–=q3пIDеоY]t?ВЦNƒе-4ќ”ќ\R[:v%Xf,`]N}[чм#ќOa0&uWwхШђf=Ы oБоUkё9ŒalэЉ2+џрQ№AŽKџdрЇq=ЉI^O‡,ЁВ3ЯŽ9BУњa9Wџ^Ћ„WёЎŽЪрРоѕь(3yН О*шj’іИj$Э&ѓ"ёVНЋ|ѕQт„шяЇњgёžvКaвqыaОџ>ХW†жj-fŸќљ‘ Пйч§Ия\ВйЗ_9O(;qН_n™V?Д?џq& UURЯ<'ІЩ$ллб+љ›ФpƒСп†ыLХV1`ЮwНЋ ќ€Ј] ЄОџMЧ€ПРaNcчвУ5nфє|ƒђиva–A2]  ЂЃшвбћWљ\@љX‹”ЦYyЄи5”iЮ0гVЯ&_ЮшNСV^eЃыn­љГЛE+…/ЕNIAŸAž"–PГј,˜§Њ~БЦЩc#ХxTˆаў65Э!й§‚˜“…I„и Ў}n<зЖ!68чСcўЇ_fНbЉД!Џ†};Дfkо•$/=vƒWЉѕr2YОZP(Є&NŠТVГ‘йJOл‡)ŒуЭЁѕxжуЦЧCѕіПLЌ>‚ЋQS+sƒм ЮEwЂuй4ф ;‚Œпœ]S@с[ƒƒ™cFЮbЊXwP‡§{–IѕW•9!ѕ„2"НфВдKч@ПiЈфq‰sјa^™yžDЉиюTŒЈщЂ1^ й@ІFwI^ЪТв{ЭrE(№:IЪэњ™рzL%уі2˜'™™s*­Z=4БзvЏРЌXapЄ*‚pеуˆ‘LЙ ЬЦћЁ‡E›#дЋgD h)Cцq#щЋœХˆёХй5ви)H?џ|-BЛ]№а[y#1G<г&Їy;ыޘнАPБsŸˆвjжЧtš% пM9љђ ikѕW™ћzШkЈMъЁзsЌђаBєz+uїЬ8ѕЯsJcwЉфЬkЭгЄц§{ю@ьўьC˜IK7jСаŽЫІFш—ЩxЫфЃžяљюЎ>K|љіч>}Ч&Ъ§Н6_V“_V•ўоЛt‡фа8~J9љ(УlсђiH|›oŸxУфйпУЉ/сМПУП‡fК#ѓоqљщGчЈп%9ЧЯoŸaqѓэh|šЃјtЫ}Кy}К•ќ; ѕmVжZЕ!‘­KPж:)5еБ?@–цА†fQv šЯŽ#ё яВдЈс—6xаK $ўѕсC,8)ЩФWТџ6СDп0ŸГ‚ЈB›ЩІ –*ЌjьM!Ÿю^'каЂЙ”LЁ)–‡-ыu]ЭМd—єЈ{R]іaщL o§ŠядМzV№a+‚dхњѓ/Fa+єЄ ЬrЌH‹8И.'6]оМ96ЌyЕrфpbЅ!Іs2йНb5@SgO “СэбйІ"tL}WСЅу5ИPСњtєАЎџe0œ/*Щ% 4,лрc…-jшЛ—В’;?Ÿ”ўЉ'хфў{Kіы˜ чCэЬЂЊљј\ќ=I›{ЪЇl/вьP' bvkwbcШ' Ц(`"И8\†W8јL+Є?уK*ў(„‘ЩВ 8A,лЉwЂžМщš_GMœ6V/АWєr…Т5фФjє рSТЇ{iмhDN7Ёж­­,ЬHAКхы,ЪВIц#~m—ур3ЊЃe(ТЈЬ?Њ-4˜k Ъ šmfrпbdGі7$FДH‡+Т1Y§ЬŽјљsЪёЧђЪ/ШlŒѕхŒ+c_‘выEМ[ВйщЦшГЫљ#гсP;IшaјИbЩзО 3a[ЬЙ ZЦџPxby&†Ћ˜Ќ”р QДNi P6Vу<“&d#P2а2LІaГ1ЇЅ($­Š)РGџ6Вњ@F2<Ъv’5;"ћгйаZ˜Gнš›ОЃуњ№ЛFЅAяКCqќОџ3еТrЕJїя]:Ї­0™А0hПаYєJO$ЙдвФuКsуўKO^ж\ДИ„NŸГ'3уЏsЈ}ЋЅbг—“Б–.œЃPn‚`VДOfcšЮ–E?%‡›`Fђ`jlёысGOPK 0]OГпШтqQ1QE=щiK№Gu&ЬІФЯŽŸфА"пh[ЊЛ$cеnНјІЎ!J'YлБ шtЙ•?hŽКјн…йBC=еIРVбzZм%д§4А-ЫщФPЈЩŽ=ЈK]›эg5љЕљиIHђDј$ѕZƒeуіXЃG Њ­САТд+„eЛ +L­‘…;ŽЉІ т‚lHщК7vЖ@vo;PW…%mKSтФ:Д“.У<^еЅ6ІArцЧ•Ьx–мЦS‚l3Ињf6)†%ˆЧТ0Onm аМџѕєQnh gPDЉ+6юњ€%Бёџ bUаXе›*ПJbЎэGhР˜pЧжђвл ЕЭЩПЭwњ4E™ПЖ‚œxCdНЇtўЙv~Ц;VЊ]bСzS'r^VI)2ЦтgEЄ@лИ'L3иxа­• Фq}Jˆ––оЊЩi‡ƒјMрдх 1JЂQфе*Ъw(ŒOёЕ‡‹+3ЄвхЈ‘QьР!KЊ‡Rc’>яV?}ЪЇs}OЮВ… нlŽр:>Aчœ4ь+|ŠТP={ ШЛy=вЕPЌВй:k)ПzяMфh$"yвьOшьЕu4 v\x/qL|c^Уібф6j,К1#1!2 #dТАЏƒzМКЌpPщ В:B>Б"|ЮЎђќ1ћ˜О†ўWн–ЂјІњР]блZЊ—Т5O0ѕђр%VіКЊPІЈeѓ фBНFбпOз˜сfВ"Эe-/‚тЏw?‘‹-Иџ}Uј*иАГеГ51ЦЛ’‹'ГG† ЧOЕ6‹.Œ иczЮьН5 †вЇ"Q=“ю2КВЁ‡šЂхЮPzѕb ?Sœ†ХF%їШ|ПаЄwЄnЧ*šЛюхС=i]у—ме+8хˆkфoPbџmјїС~lы‹с?hEZИљD[ЃWжцѓPьQ‚ДrўЉNтІЩ№ЕпЩVI„‰d0ЩЌC ірK_BО;yЂђ м›™ї"ХДœнЄљбљXWяМйбї>,Л?тk,О_Ѓ}в1 C™,iјЖ|=тbMŒjg‡т9И$…е+Сљ П3‚_R/тќv197*%Џя ПZЌ|иБO євВЉVГ7’ђБзпОьnѓ7ћ=}~ˆџ.:D)џtˆРx$ф6šЕѕ­иƒ'”qМ9 ж ђСW№ЗrŸбЭс@OЇрyэпР іщy&Dй#X1Ъ_ 6…ј№­Э‡;rF=уcћPŠїQЗТŠoNžЯЌuѕБ,ТЗљB]{5SЊ†dІ@‹Ѕ9ØлёTбZйHeђєм^sЬcˆ;!Us<$K^kˆжVЎЫFЋ яzкGББŸmK…ЕdC­>MщšH–цєП0чж?йѕъOыаGхв;ќCЄЅФo…#ЋcНqDНzюrЩpqIŽV_­&4€\ЗNь—оЏ$Ў(h9MѕкP\ хС5Hc|чяPhLН*С(ЭЅ~ъ9•U“BЭt^VZ4ƒˆ"–G*=—…eЯŠВИИGЮ:оQВLJkOє ZrH~A.“Ѓ_кеwuŸXеФMm!S2—RL рv3rv"ќТ3Ы­šXЭgѕрt“VˆKфe’Fї1:\`Hqщ›[УФ/ йPоxlДЮ6‰Сrђ?|\KМƒ$ЎCќЋ<ГХjl<>;те%^9­Vmріp#_Ь ‡DUЧмWœ0kыlХ“дžЉsJnyХхAЕУk8?і`&ЊгцKцАбBˆwRтњџz"7п›ЕRѕ'N–xOЯ‹№Ј‹Ђвл(žЂZ‹ЦSбхљГїBЎž*йV)Ю– ЌђЕ-hНётM.*ЂJ^о1ЮЈі *ЖpЇHІфO^lЩѓ­ЋЭюјЎж4/B!§Ъ<мШQL%aЈЩХ!и5чЋ5аКœ˜S(м*žaл~i ъЋƒў5UЙ|ЇЯс(~!?oѓљѕ$œ­ЯО4WРf?Ћ4№9JёЙ{№Ѓ•§фnЊ„jЩЎш •Ју™fŒ?ЦФйTж'щtё>Мhз†Œ…Ее‰<щУA[”'9‡ъ(Qо!„›PцгП аRА^ЏЫѕ•Ÿ ‚ЦЇ >#gю Ђ]№Ђ ŸИcЯXђVЃПъУwъO˜Й(v чД‰H{ЇЙ"ЩВ5ЧМsfнП{SC™qGѓM”5‚ф…lЃBх„Єъ”рЯЕ[Љь`дlЕ5BŽК}vsMН›ЇУ("АVёMХпЩ{в пМтРaъ#‚Fjчƒdt& ­щCK"3~ѓ žЁк1л`еvgи0ЅE“жюыš№ЇЭЮътВі}ŽВORЦfЅ}tо!дПњюIŒіц ]Ž7cЃ•HЗPƒаЄgЙ^“џ!šъJџQЊr6€чўz$pašЄъ’›ѕ[њ)ЁEЫzžАоїб#1ZБŒХUйšBNR4.aВb^МўdZ1ђŽч›‡„9ЭM'trЄпцšI~œBOљЛї*O=žšА—`Зѓ›{(ьЈšмЩUi№ŽЦ›aCdZvъ=— ŠK&&Kм9Ÿще“В+о‰ТЇ™}Ћ‚Ї^о(Fэо!шДLі­<Іѓš›К}LY8aЅ^‡j/B›žU—˜Укeш —Й†твZћбяДљВ­;ЂТ/O‰œnйЅ„ЋжjёЇ˜…А‚Ј1k8ЈŒеP&ј{-…С2`MЊQизЅЖјєј5fI§гъ{Х|nš ўџz^l2E*…+ыŸўU"§оd/SчЁўЄš:р›†Х}ћ0>žБОц /tуKшъF~тP|њSЫ^ё'жPI йћКќ€Пу>кI)Dх|…*:z~ЩР‰&TЮ9і л­F6A6Ф,Ж™“ўCжЫф‡,ЭŽЫ^‹ыыFФ7&˜Ѓ*ша ѕ|IpOzЯЦТ>'9o:M2Kп§ иRф1Ў>Жѓ[VƒіcЂЄ6CЎJY—тЂ…ЗЂ ПЂвC%Ся& ,АвŽї› ŽхmћХџogЦœmВСœбЧ(эb4Ж?†ДtbQclШЃКb) ~}xž™3 bєeu:ђќ­ŒЌa`є˜у:n‹zн-›љ№4а.Р;Œ’Ы=jŸMОP)\3ЕShдЌdЁЮа,„2иВбОh~чz'qЅзza†0ЫZ(”.к€юL„оъ)ЄЦl4ћL №”и{ ОЇNHљ:РГ|s№вž6Ÿeгѓ›…‰9 ŸЧю#ј%ѓgDћт8TЫ2[§с5žvЩёR'‰ІФ™nлѕжаqддo#7шi HfШy}№Я—(М™„<ЦYВ7УЩ,()ьOц№XёгDFТзaнн/Sо;GiЯЌШЋБ€ШЉ п>ž0EЉŠˆЮљэИљŠŸ– ьQЫћ jbФWsДpB:зњY­Є†мЉЛŽ8ŽyR–вЙXб Ž%)ZJхhЕІV}ЅцЃзі-сОНP…’—Лї№к >y\yЅ”*–д“,%) єќ§г`џ?оЉFЕ8nэСˆ}їJp”Аvу/Š4\б’ž•X /eоџPL@соPьіЬ‰M%ќюD…#)Yїў6E4 IА"=ьВ–диЙуВффіЭP ‹ЇЗ‹’щЖpЈ5]?_ёEПг1YEЮТVEщ_ёъ”65л/Х"ъO*XU@ВЕ Ѕ$ЈтQжУ: 5(•d‘GеAЙ1ьь*‹кщЫщЌђД rg0ѕј Еб?IIМ›Jъ]ie<&я…Jџ7Пї—я@Mщ4“maвRН”ЛPсЛ9А\ƒBНИЂЇ5mЌeG0—Л„zЩ$Œ№ŸŸщ_ГD€‰Љ–SgZЩ–Ж!Yяэ˜!7bMHП$Ќ†ќi0 Ѓ-–ГokЎЋH–иmQМлRЫ›‘Ÿd8КŠЉўF I@ 4@<ъz№}•†АJаNr[Ћ3фВ€ ˜ЈШ +0рЖ@mЭ Ќ Ÿ /V­кlЗ1—A пОF<kЅР jЫњdrЌœ‡ЊЎz‹уц—“%sGЏnб& ЌŒК–mžуJwКЈШˆGvуХКжћЊГj5Tз]н<њІ<Э!jCtщЫ“п*иN,ѕ ?…;9УЧ‚ЇI›ŽоРЛ{КЫqвФЩ“Њ$ѓHRC0iиž_|#-CЉ‚Юj72Ћ2Ж[сše+дcuЌR}я…ќХј5y|išEѓ&у>чћ„ГМя­жЁCpYђЩКП"h+QG\ŽŒI„ГOЦ,A5Ѕы_Тчpc4=<шќјпŸYi”'b8žЊ ЎbК0Ж”+ІX@H-CB~ЪР\Э]š0л|Г,Сg‚ыБяlR>жчtМЎЊyˆв)“2ЁЮ‹ЖmѕAч=Штjм—_ац~"6Z~dЉ,Э•œБ“p9;Уx0 ЕЉŸвUX‰Јoт^"уњKщ]p.*СVpNLˆ`%о$vЕgдЪРЖ #џ,NїЗї”2uД№rЎб-Е<ћѕ›БDЌZШž’ШПSfмž‚Fm&љ‘нxѕ`уиЏ;ЭёsЯ\џhэpw(џХЏСD“fопAвА)чM_їo2ЛёCЫГsтњC'Ft“Ј?чY Ўкєal›mkўцO’œuЭdЂ> щУUЇ‘юn h‹УЫœЇюw кІ.ЉЩЫFеІQCЂш]>瑇ў(QQTˆМВ+§ ‘n| Ъ@vР-/А|'ЊЫ6Ыž€Ђ_OЎLЫ…gHj,‚Тїёt6~(zЂ–j {ѕВ…ЯCueЋ#йљфtЊИђ,;ђшЦ?боf­УВˆџ?Œ)=@ьSчK2фЃмбŠ­ЋB•+я>JКYHщ3(њѓ!Љея$ЌxјJњаЩ†ƒP„"G лннЦЁ :ЧCЌ–тѕбзо{тi3и:4єгWиеdxФэЌLЦaПЃzБDAGP‹Кz@/QЎi+є+Zтd^ r—нWŠ“ёqњГЩБŠœ 7Ф=„„•Ьp§Tœгaу2ЁƒVХŽШ'ѕгяЗB?u/F%љЙа=fhŸ+ЫN{НA^Егш5E-dЕЩ#$ё€ц{љ^~ўнlVЗУœšэ2J<"\ЏrЕ[х ­”Щb5дкh6ЮЦ'6Бн9iG‚ы’чŸП$GъЭЫr]ŠМVИдVЁOХSvЃъфФh1аЭъ†Zё0і&&А™Іœ^"cлF…с@И Y‡ЎюсЫz^Ѕє ш‡ц1с&Фdъ›‚Щ~с2~ОГС‡%Ъhѓ˜Ю›ћ)Љ‡ХŒ+ mb”зlм>FИТъДЁЫ5ЈyвяЇqфQЄXG[џkдOggд^{Mwy\$Е\˜(=фbаЄ+oOF}f+cХЫњЛrЊlй&”#ЭG-PnˆRѓPЛдЃЪLx˜ qQ‚ЎЄ%g5ьИїicСфN$юјvvЧ2,Д=”x{ЎvзЁЫMп…М+iзЃT4с "”A`†nІіvЊvŠvn•b6NPюЭ)3№tϘРу  špDТ%!Tˆ2і‰ЭYKзVЪўЁнЌR:GљOэ§Б‹P>3Ю1УUYТrХ› n*ъ~X^0щžх+šЩj{YЊ”’&j5ѕШ—KЄ—Љw Жr кnl\ž}33§(Y &§Hi~ауиыфBЊs'žJ1AЊ]~эаХ“y+юZHУ’0є м{FVkЮу‰…9ЉqcOњwпyЏ(8Q3Ў†ЅЖф*Tћс‰ˆНMЧГD›оь1–ЌТЃБ$БTЄЯuSВф“P]зЅкиИјј­ц' ОРМ Ыm§—Z,Йl`йjz>В‡ЙъУ{ єч1qјЩФ–MЫЄьК­q&юœкŽQРЪ;š)16’W*H`ѓŸWџRвœ…МжвFГЋˆПu`БхК&КЋ@XхK<џWЛд—ЁжpHPВ#" ътЦтpеГДШЋTYирENeџ~{iФ™6џu…LН:N8к„ъ‡;‹i:.ITеА#жRќЖBЎj,Г>tЋqЪ‡_’€ЖЉg‰U!јЃy9Й ў"b18$Š&ћœљє™Яфу:ч8ЯŽE4нЌYы% З о “ ˆЕ.ыxы­–№і`‘З”м!M­ ГН{ЛюЂвk aTиЬ‚OInј?ЈБ%ђьЉѕ_Сol0еЛєжЦ‹_З?$9Іљо)b ‹йДИGЌDЫј_йe`'_( wMёaѓ№Fв’Џe‘KŽNnu0јТ])E‚мv#šd§џ$3од&…јвK{ф(eзЙ|*MхІjИъ'kж]R/ .Ј|ylnѓIaЫЫsѓˆѕЩfЧ aƒа§ФНТS_# DEьЭЙmњ9ЩСЊ‹І4ЫиЇЊŒфjЂKh‹Н6—Vnф$”K­n•ВjВ§lz—Ђ†˜ZoЯO=tПFŒžk:g"WъљˆVŒ%ЦХъ:№šC^н)мƒ"Pu‰RЄmщ!xc |EРž,^ди Едvj“š+ЫЁxM эB%†Щs9%ŒЎ[ЎэlHŠa”`”™=&%gрZ&+P,Qp‚Ь†‹с7eсJ:Ќ_Щъ T2ЌЎ§#е€ІЦsЙЖt ^‚,жжO[ъLЙ•ы8ј=Ѓ“паижE!Œƒ„Љf В†,z„L˜`IМюхЎл C? Ј#ФUЂІМOosЋCŒљ№ЎŸнпh““эЎєжS@?0vJ\к‰ 6/ зьFщ4ечjwтўŒЖы…L[ 1gк‡Й{гpщD‘џ_Ч„^њ†АЊНьVЖЛ<ДŽ\nMБйЊђърi їГР›лЕЉRˆхЅ,Ьxul””…=Є%§‹ЪуlЂМo›;р –цgWя0?ц„­yUL'€6ŠГ&Œp‹PХЉЦk™ppxю˜ѓЫ4ЙЏœ›јйnІ}ефЁу‡лиO(5 Ѕ$,F3xAЉvыЗЩ6ЗRѓћ)›8ќБрпЏ~жѕoыkbІјCGcmЕ gњмx›Ђк {о€тCьјЗНcь1яQe8Ј<­#hџ~Š—П=TЧЏп"л$РœaА&лFK@ЭлЫЕђAz4ЖnЊrЈ0Ж‘ˆХџу$,ˆі§ќ™JЈнѕнSКwв}е‰Ј“№%ѓ€ЂЅЛAЗHпУeчtlхЎЋ712.>§д-Ќм§ЕtЦ‡01+s–7рїVnŸ<иѓШRч-qWt„v†Iп№qюDНLЦм2+™˜kгѕК{ЖЗ­t#U Ъ)–lTм!шv?кєHЗu=Э,Вц'  J€шŒ)ЅоPЇ7&n*‚sd1˜З•‡@Y<іюо‚3 м86ŠQ/Q:ї(ЉЮ&q`‡ж Њˆіr0ам‚пхЬд@|Œpь–nЪћЛFNкG#\Т“=ъЎЦŠЁƒ—?Жљ0ЕЕ| VЄџ 3ОђЙTі(fйз0Яяqv[КЦЅ–(F‹аAAL!/–ђRФ HIЖ,ЙЯюЧщ4ЅUZћШs”Г.ЪЏЁ№$’b0&Œwƒ@*Рч•тХx–Ѓ2jзuџ@3мЬœ–ПІЊrв•|oЊ<('єіlDYъћ€уК хEЙ"И™јё{ЫЄjй(wžжР ?"ыЈ!оu‚еГ*VсtоЗЏ.zУNЧ–Э(bWVтtkЗ9l&гDОрЌhЮуWБ…ЧмПЛЫХёВo‰ЮУ "џ0#JЭv•Ф Їж|c›дi’]_)љT6(ь8bv†ю+'{“оЌOF–мƒŠF~zvДОІ/Д:‰оMо„*†z9я№VЫ ! ZАlЋХhƒвОыyЄпm фPD“Ј8П‰›ПГЪЬ—Эk{š)J]буЙ$q ˆющFДєЕVчнb1RюК"ŠkУ—ˆД†d-&0њЯct fСР…dХb‘RVІ‡bЎQэПoч f7Вд+ћсЌШЈž7ЮšяEъmйjIз ЕЪёŽ`†ѓCжФ)ђО’ЕАQшv;<бчз]кn†mu–фХ.~AН­Kн'‘Ј o'ЁАOEѓƒЊ]ЧСФє oУ–ы$п§Ихј‰oѓ6–•\oчш&ьbђЮ ьЂЯџxPњР1k6­+У;Ѓ$љЙЋU Ч3Љгd4qё‡Й[A>*O€jJБk”гYƒ?їЁщMяйФз?@ккM™€иБеБaLМщ†nИаџW ЌѕKv”“’ЅёH,њ/Б€§ZТ•i*UЈ‘ёэюmRˆ/OeЕ—Йибšю—~ ЩырЁž4ѕлxˆMМœБМшžP‘ˆ0шм%ГPР­$є/щв2EЎMƒўЕ_|tы4ђ[жy9(щ:`•Х—5’ћ~Х§bАlБ;їџ'TхЈБ№J#7YД AЯ6[Щ—АДюxВŒvMУ–kљдSс ЫZ5ЇФ4b-EАGѓѓ\H™"ы•3‡єйP+Н&№6|֘˜CБЧџo jCЭ|zЖqЦ@ЭЫшОЛ3­Фє9Йв{эBЧ‘сtB jœЯŽwL5лЦuP бкж…њ-ПƒŒ”Œz֘ь…ѕКB4}K”йЌ)цXуИ/њw]ЩЬšq˜gсsЧ4хi's3ОгX–ЁF_Ї’ˆз`шЛ­!еB’)џ)юaЪƒxСК 8л їМ—6ЩЦЦ›/ю€ƒџ{FѓxДLѓ[ЪZbЗ(ˆЦј:YйгZОєыщаЁ@%>™в.ЯˆFBј˜™fWв~qG€)zјdvRФ§ОI"еuШ#[КŽЯЃSмС# ~@@ьг†Зdqpˆ!хм"1Ы €ЁН•гy}f87Ž\ѓO ЭР(Г}ьYНВO”ЩЫ0ъЊ—]TWд№WЩNr>J Д?ЈЄ‰,rЙщУgРL9чг&ФŠ?]дШmЊсJ2'‰жd?БZ7 ПBXTœђdcт2:%[›єнž„j_™авюї *&UBвšZЬŸTз@§”~фpѕЬr§сI;˜*Њ2Рї?;]‘wЧJКmšVLUIяп) tЛ њ…Ыjтh_˜kAЙo!†KWJБ[оіžА ЅˆFxЋ™ИTЩ%+ь?Я-C}хжBйIєцр§тУЊ.Ц){5 ъњхЗЮJЫщї5сЖv8јˆAлIџcА­ŸѓЗ0^ВSх“c"­5Онѕ`Ѓџ~S§žзˆ~~юKKшŸя–­Ьк`оMOWR…ц%‚а,l!…2ЊwСХџ|jŠ7ŸcЋДеG§Œ оM$eqЬ АВ 9@ *†PлY˜Vф!Ј­Є o‡7эОР'yК1ћ]^"Ўёy рƒ”LЌRзЖZГ“ЖT[б3!y—РєzАнG ђQ ]‚„Љ ZГ1ндмХ@?ѕџ|`%2b‚m}Г“L OђФ­ьiБп uй[™ы@{”Ђ$жlйКН^k2%ЧаЙs2(g!ž|ъ9ЪHJdnЎm1`л§у§]ЅЉКeшв—ї!!;ЭЊqiњjC DB…Ђ!сS‘ ƒ™йПМ­БmHІјЌ†Шу~Aьzѕ„•ЉЏa~МЪЊDП:а БЃЧљЮ/QEї*;!ЕhQЫКwЋєѓhPŸПД”ІњlMYyпЗЙTE§н—lПю>ћp…†‘aSК’Ж‹ИУк@2vl‡ aџRА–tНИ№„”шЪЗc|rЌцPмѕM Р‹‰ЫA”Ў–нrЊ­6+T1?ц _э$Vhg9­ѕ6d`Hbp§‘йг.`MЋтс€kиš•И2РДPŒ№К˜I€/РTT‰@љлЩљУ1пEЃхIУ|ящvsцR—g‰оХѕX<*CтЪ|М—уL2ьb4 ›Й6ИŠи"˜ЖmtЪЙё+„чD 6=е]ф №ес`‚iЕяжЂРx:(z ЃЫн PцщОкI5 шснЏuЃ9ІdGoс!ћ0}ДфpЕв ФЫ‰—dЉћW Iр4Еj"_ВБuI‘И §г&d%[юX›ёˆШ|1?ђюО$žЛёЭuyдЋlCЁJЛ8Гž“.Ж.їˆ5І!ё#ђЌ7ѕq`ђрd/d ЎLc}o›"d“Žћ{7qqя^Joˆ@Е‡љcУ ШааК?ГЊїW€RІqLAhцfŽue`сzЎМБh?мzћбЧ^5%ЉNK]cцеЫŸЁпŸƒЫi…YХмE)Ъ]Y”чЖм@ %юЄ@~•o›ТN’ЦэЉЖ.ў6‚кџKю6EП‰б?Ю<5џ{Й]ђ5}ƒpOoУ•“>Ч8љШрƒEš–ыЈфЗшосФƒžG‰з'ˆeKˆ73 z5/ЄЬ.S ѓэ#Кй§`ЄKЂЪЖ„}8$ТЈ“ Ys\Ёп_Y&dџG,ЬртчЂ"АрeщЉБ%Ћa№Ѕbџ}-y_Ktx.ŠQчeз"В†$м3‘уВЗЙŽьфucu‚:*4cѓДЋїфкs dбKГ А‘РFДч3$Ћ({тo'™ˆbPбzAŸšEПŒцнд0jкЌ9’ЮЫbђ-ЇЖI™q!ы+6 рYиR№щUџAЧрыы71‘ МЂ'и’k№ЦдєдIў}E.?GеЫ!:ы—м'НЊXФQе3GЊ)ЖUTKK4љіЗ>}Л&М§НJпV•_V~оУє‡фОaљ(Ѕ№нп ƒ‡ЩЂсђm&щ‡ЩВoЗ­псбз№щrћ{ŽбЩxУђQЯLќ”‡’Щ“aёѓьш|š‡јu!}К}КЏќ;<ѕmVй*хяјЮаЏTvЙОфЦч%яJ%‘‘ЅЭrќ*†а]ЯГ?–bRЩЎНю ЅцZдаЉѓscO„5m7#|єnuП У $А4ъgq?бв~kбzюГЎЧух‚Ѕ s6ЩkI4ѓ"`Œк™ѕфЄх_з&2О+a кF:ъ+Ѓ)mПцЮЂЬїЏцC.!хѕx-щлўТнeIЩ›Я##фЌ-”9hJSНu%Š8žIйФ`т0>Ji‡7дИЋ/т-d‚+СoЛWЦ~“Y­ˆ<Їcжх}фN[}_R:Ц;j^рЯЪтžј.“n6Яeе~№’Г…sьлWEQ€ы(ю7ДСоџJŒƒ:“”’hљBŒБœ”“Їюц"шŠЃюaп0ф8ЈЙi S"Џ~№>Ю’[ќN`Ђ*›Љџ ~ŒObdЁџJ•NeFУФЮ”/БvГ`ofо‰Е-ŸhЭ`л“{<ЙЭс:ыдW—FOaП3Фжџ#=U6Й\1 §Bз ŸmV<ЁЯ šVЫцї9д’#ћм…–AЛ‘-fzН…VЗ!ЁуŒћГРVLGOЛ 'hjВG›ЂVа[KFgЫŸx'І!>QЫ-КWэ€‡œu%њ5;ўый§dюžx”oIдO‚„бАл|Юk-p‡JуБІа“Ю9хГv5л“ЃХz˜УБ‡Šaз.Хaй‡TЦ НЛFПВ!‡”Ja(­ДУBМІЇмКЩЧЉЁ‹жЗœ‡ч№И˜JЛщHžЅzѓNЉГеbхр“V"Ї` УV&JЏNоУ@vЎCАz O€pW2˜ш.d|Oѓ6kЎBТ?|„{K5й^з[УћЮєІgњіGhЖ+ЂеъBnЛ…žth v‡б pи,У_џ+ўћkrDОњлX‰Н$щнћdxѕб'tEИМрH'n  žп- ж{”ƒШџx uњhт 6#eУDтQkА”+(PCбс‰kћ}љ:=#*;ХзUTŸ3%ЏЦќ‘o—]рˆž8мЏЗ9=%Єq<,2T^ЯŠœz~Sх `kђэC6шq„~$DлŸЋ еАn rЙи5нFЬЯЈ}%хhgrіt‹зW‚rnЋнђ8 p"–„ l"џЌF­e‡о8ZЯг8eХ <ФшЁGгМR0†Ы Pд+Зќ8 ѓS*^Ћ/Ф8@югMRЧЇЈъоБ*`cjоЈX–e“;nу8+$˜ЕVg |ГмМјD`dљeлd/Ыˆ–B^ М7w|F88)БА~і`'Моѕd"cov5џ9RЂ–€$ЎfЈкўJ€C|ЫГ^6nЃюпФЫ‰ŽhK|Г†Ї’fАDўНй’Cлц‹KўИd[іRїЏhrKo3џ.YжZ=ЖЮ0ђ”7рщKHф–еCrУŒEЫй7œN5JГhг/§‰Еи-Ёў}Mšj™ГCУ†.кЦ|tні2х z“_3'јT‡„wП0Аh"ф82їѓЄPVDœ`шШ‚_# ШсУ}сљФ§ќ}EуЭy$"GЪ7u%‹VZ8}эW9АилИѕ\ЉєXt˜,уШЄ%љВ‡РZžЗ8=—УYЏуTKВЭŽ нH>Д_|+OТyг+ЭЄG$a&Љ#Emq”‘ #%˜слрЂvь= СпDCEЃ@цVН‚yЕ‰Ы@—І3Хљr№і™UйќЩђTЇOц/ZГ8˜…Н5Xї@ž?€<ОЂ’ Ћa0ф§ЏЖšDв‡+[—Нh=KЂf!dв*vЪйЬЙџ”ŸnTнЫŒ—(з>ЫЭфЩk9G›§щхЗ O ЄžмРГ&даuXФoљЬd,xH Р гŽЋцd6l ZЅaЉ‰XRM€TД/ЌељЗџ~нКЏЋЩgй`™Hb`г3Uˆ fХz Б­ЃІcюмЯ^И~Жыyт&(q€‚S5љьЅ†/ЧиˆѕЮМdbђŸŒqв}"i‰Чa›юMГНЋЦџ7qЅ6*{2­шŸ6sэяžЏjП€<‰[KŒœЛНТ]xГŽЁЯ-кKˆОЋ6Ѕ`ЈvП`ЎWЖ&э& б"ФВНЉV‚Wm|AЄ‚t9‹ёц[K&эВuЫн_€fфиkўˆSЖ’Ж„k‡љŒЯ э60‹dOЫПЇE—t!`1‘оНSmвьЉЧs­RзЦ™7ŸuЮŠ˜чТŽLЪLи%_ЫХNrlVУyЖ†ў“&5>ю<٘kєe`ŸсVf{EЬ?„Є х“ч PјТУЊКRВ{ШўЬ…OСЏ1‰сїfГя˜‹u)ЫюœoРi _YыЏ№Џ@tDлŒ„LMІOFF7ък>­кьk†Ћ2"gЕLшж_&Ѕѓ>˜ZЛqB†b'+О9дЖHІпЁь:mFѓ›…‰9 ŸЧю/’џƒхм‡дkaˆљ0У Є–Ь’B}rgDHб:'ц!Нˆr†ŠШ:­TPШˆZ ЖїЧХСєУc•я9R2fœ9•уЫЋУoŠѓѕѓyД~_HтwqX-оCŒ™сі–­[NЄЗƒ7СђЅa\ NњЮжйфРqѓ˜ЭЯ›єИе`Џ5сЕџsyi, о­5чM!štІушSЦ›с'|ќŠі-сОНP…’—Лї№к ,‹žИzѓK‹wZˆ3J7 мЌrx&И@ #а/ХXПЧI EЦКOємЬR‰IJфй^ЄБСuтэ@Šп™0ы,{ЯЎ)9х_ŸђЮXщч—IKЅW8‰–ЌdеŒœ–Цл…,wPўLЉ KГ 2Г|фЄсAЪ5’=ЈDzёъ”65л/Х"ъO*XU@ВљФЩ*{ЃЮКщqиBIњ"%ыЅDеч>d5 -#*їJIЇТ+К†9ЕХеДТХtВоŒkкltюIЭЊиWN dRѕЪTŸ­pЦР%Dо›„'@ДьУRЦс-Ъ D‚Y Yі#dOТ_/Еы­jnkPJR,РмЩvPеo§Р­ае /­KТWг˜Lѕb0йМJtMvД\чqhьrœм^л—(ч&v№­SїћЕgЋ•u>ілЖрэќ… в@kŽП\шPTЊ{ёяг?‚А ўОьшЪБ$ќŸ‚s›†КЖXŠ‚ЕQМ:Єщф)•'wљф=Шxј їЖ|~Ÿ!ўiй:KiёxАiкt5lqЅ€­\%‚?oЌbL^єlеwЩЖ"кWLQ+Œ9ЇcdBdAТ{™bŽiК‡r@шЅЧЉхъЃp…Ушћ #хЛђЩКП"h+QG\ŽwпPщўF7uѕ…U-дмmњEžьF‰fžюоэ9ёюфFЙh‡‘д˜УnйfЃY‰UяЛ&Ѓ‹"џБEуUѕРПРXЯy Ў №/цКšпpщ”ъђыєсX+Dn‚8'“еI(ћтjсY;’ПЩїт•$оžэќ\‘ ‹_ cŽ;ашsJˆ L\љN3ЖЧЇV"cПЖBЮкХФ‰[&”YПЁ5§Ѓko‰ [ˆrЗEE}ЋзРчXgЈђЉмаФ]ићp iэГNђEEЎГ/hHМЪУЄ8є­О ўgj~OЌеaЭТBk1b6tŸ^Ѕ“њвњЮЭ_Б Ў‹ЮsєЖ}РАvѓ•мюA "№s•B Н€ E˜"ЯP%Ќѕ ”pЪшA*ШŸ’уk›{ќCђqIоšыЁЌџh}4ќ6G$< З:ѕ19АжР}WaеƒПэпЕЭwв`ћ фšIoIrJSœ`ЕHЂЫЋ QaK#B›5З1]6›t3ŠЫš§ъ‡—y EЄхœq Ž"™ZЫн2џh^0бY‰мСЊa(Ц*ЬТ&С–Y€85К5…-žМЅžlрЫѕD>‡(ˆ%ђчqgЅЛWЖ$Y ынЇvЩс1‡п*ЎUј)\јаСч&™ћЯлВ‘FћЭr!sZњЯ`f”&Š'иЗ—œјЭC’&uŸЪSИеCЎАџSc^Œ#о)›0Х[DKЧЇ‘ ЕZ§uЛЋЦФ5CчъW†Ы sЛ7@ЋйюЁЦc42ЏљžUlўбЦrr:CљЧ@MŽ>№v.–ш<'?tКЇа<С оW`l1нOok;НЪ‰—гu”Ї2Гalп†]ИЋEХg%Э4ZŽ™ ЉЌд“ТI(ЯŽяЙq mЄЙJrgЧhY4vйfфњ'‹^ŽЕІјx|ОЋ€ЄЎWРЌ щб`Єiё`sгЅ офWc%љtЬ‡2оуЬњWЮ‚ ŽйWј‚(ЧdF5ЫL,43…СЃElь„KzД’9Eœо„\Xб~›ƒŒo0Ѕ–›Т[ Œ";БPэЦ m8VљЇh) -Q Qvw4+Ф/СnlРШчмhєќš{ œцOрŠ{э‘џ4ідq~­Aш$fLјїІIз‘€ѕ ђ+!)•Ъ~SяWlіПяЋy8Зч€$X#ЈQщЌЈa^ŽdеїgШвОо№дaЦ3ДaњEЗ…MпQеeZ‚@П/@FПŒP‹И(ьЦDєZЊ0Й‹ЦњГD‹n&ј_ЇЋЭ[*CЪГцžE] Б>Ќ‚Жј‡’]“)hЫуj#y“Г7˜lаЊзEчŽ™њкA†Kќ…э‘Љ'б+П•fzў`aœ<ŒxˆЬд(и|_eлӘIžGм‹њ/.тW}9MъУzштЫqЊІ'fuУЋ~%™воhї3_6ЅуІЄІ/‚Є1|>FМ]pљ*АЫ’"pB§—5@Пœ5< ‚KЖі~ᘟ"TuПр}™1д;"c wЃФpхX§3ЏŠL uŸФ Њnѓў)яеЦЋЎмD a$ї‹Ы2vXЯюЪ ХМ } =ія0Ц-[U:WюЈœ/'БM=˜2B2 ЫўЉЈMрIAє€kMe№N9ШЕ"‚Б:Г0f,v™Э‘cМhw†JU~:8hъgkх3kїЙ†Ье#Тcэ LЯ,OfЭЈ}Яиюњyб˜OђЅ[Ї™Д`9OŸЦА‰}Dоьѕ-‘x SэЉЌ—зЄ…*'pіј3ЬчМ ё™ЏЁж{ГвйQˆ#L•..ћ,ьJ'ЩaŒ_uиЂ‡аŒT`аГН&Єћ­MЙ$“|e‘жЊ'ќLке­г…95Ц\Q:ЄXћймЎM’rSѕюЋЪІєЭ‚ыЁУZВєЉѓBкт` Ў6E%Mп…XBGSМвn7Yљ“$nšвм2wЄ#<ЖюіfhJGсpгКШT;ДFяЛг&ьD@Б:JD YЧ„^HR—’|ŒQУ_•FЌbюћ2х‹‡ˆœ‘лѓH<ОЧ5Ї ЇМШ1™њsйзЉЦ–R‰ѕ рР#ЃEi|аdŽPƒx)T? ёWЂšQЈ^MVoƒЭдp™яrI/ВбmUhк™А:ITтаРы" ž]—г@…P’ѕДwИгuЈTQo’геЫ,€ЕъЦ%Ќ^ ‚a@Е?NЗэ,kЁ?ЙЬб]щт' _Yfм‚Siy;Ѓ&ь(єц^Zќ„нїЪЁ' D`й)Ћ§•БВ)Pa(Є EHчц(љДќƒі•g_нКВ‰{ˆ`иа]_ozЗO?ŠXNИзWР€mњanAjтсW™`тщgќУх'–™ qЏ ь{I—їŽGџnY|c0љYŽЕ.PŸRбiќC{‘љП—CїўyеуїCwЬПЫ— hЦњє:ћЫѓЄg-#ЄS]tђY@Ђ!ыdгћПъыs§ЫПЖЉ!х|?щ­SНо‰rф=JˆdРs w№Iаxх  š+,лЋіQjєўW= Нћ\˜YMЙ(aњЅцM{Їи‚ўsуrI$’ФBU'ЫYЗOј…A› ,а-Мщ›гЋKJ‹џYїЧ‚ф&T„шрЄоcниў!цtjќˆа*М~ЉГQѓ`AЬ–Ђр6єNТйЫу2МEќLgk_X=6 :cIфСюЖmgЩђь1qЬ#."ЦRяo^йВ ‚Ѓ˜~#—@,5щГаQмž~|§€^6ЋCЧ…‘K_$ДœцМЌ;]o›|њSСюTкbS,Ѕёq@ГsŽ7Џ–П€;уFщaђhLн‘вh4жM(ђMcМYа§и L‹МktQвЇФTцГиў†iŒp„ЧЃ*, Ъ SO†къJЅze вPў,ЂЫє›!'чм/<З†ћ–uЦо8ЂS­I–v &l из“ЇŽZЋ S+3PЅœ\­1d#o[‡Џа|шчъ_цSˆŒН/Yвч4WГ?8iТlЊ%<7Ъ…јУкТt№ Жbек@DЧc$ xКцќd“$*VОішых}`ЎпOњЛЇ{Œэ "<пЊИ1Ш˜Л4ушZёA#hkŒЋKL7l­ƒъ>ѕь~Žп?JўЪLџGє” `)2b$AZ“DDуБa>Zыйn”w[ˆTнŠL%‰ОЦf и§ДDкЫДЉєЮсрЮlۘhЄ.ŠhЯХЉКД;“ЬЏЎтшvп5rPдxІ<Й шRЗa1žˆ>If‰ŒnмпЊ/t ŸH7gў“7Яjе˜•хс•&+ќНиC‹вљЪhšcМњ=t№г5>bеWцbЅxЇ\­Џќwaџ"ыeцJмˆXœ1­дš/Hђ”рDF}ЩwiЧЇ#hмЬT 8Ѓ вЌ–К8э/o]Ќ 7сpхНыЗSт€aг-оxXl›=Ж4^ЊrсшDzk#„WФ>…Ce–зLSЏYЅт%ЯВp5s!Иуgh‡дў5žgтGо€Бxй{Fи`bЭiэ#b‚hЛЅл]JЫf т"bВeЄт–ЋŒ‡фтn%|>д2oг‚еNY`CЙвћ—‘ю 4DсdQшK'>ўИžgžи?hи‚Ќ.Ф?ЎќЛHKбЃжž†‚X&Т6}PX=“и .Р|•J†l “q„•6mqвП‹NЊБєVАЭU;cD•Ў4ч5ЉЗЎрх TЩUМ$1ЬќцЃOTрZжЁ8жeвŸ1Юп€еt@ЇЭ7ŽььгЎјЪ`яBїЏдЧнЅ]реЅБ3{цDКCRN/о сEЛПRB"ЇКHW`‰j†ЙЭ`I%ц—Jѓ€ яrХ?&Ш-t ,цI|dШ‘r‹Ћи|щYиё јE(Q7М+їв7LгWѕ[O9,;љ —ћФЇxЬ?wMaШvAœХ+>O‹п|ѕ—ЈЭљe›я‡ƒ4ЈЋn›=‰†яОуябvmЫ‚ЮKќ’1Њ ,Œrс3‹Џ.аVЯ„A$|ЇƒШР§цQ:ї(ЉЮ&qь Аše%Ќ?Ќе‰Fзž ыЇw[KMеnxНѕХО4vрзу;љ)[ёEдуU!_ОкЉu мпќE ЪŸ4&і(|fsкМV2Ajжёу`œEbп›e&ŽвN"fXЇ‹zшЁ‹Q§uВ$цчЭuиЂBэL~щ щYСИ3Јnїќ—†РdЦё$чЅъ‡дя­j!0Rѓ,f@hnH’Ћ’€л"AŒЂг&ŒЖEєo;Я" ииŠђpа LьГ+щэNBuю’yютРтYЙ%–Ž шфЩ›пR& Њл$ZcœYnbœ м7Р„AnBžБвъM]оь{“ф@эƒœK >[о Ц2ШnmИн~’™МЋ.я\ IЃc§Нж]V—и)4HG)hd™ИWD6Х8"sމU @2::oЛ§ђQслщ•” GЗLІЪ4шUЦ&œ“fшУP”сЂ"’іѓк[ћ<ю”%эɘЁУn*o'ЯЌ™ЪИ&@ХФeae_аl…;ћZ)ѕUИY[у@шV+…œC&Ѕ>SњžџXДљ# Ѓ^%дW sщж /ђ1ђћЧ#КіЕ-{_qwџLѕ—т–ЙЅХ[Њ|Dб7–@ЦДФORл9Ду8РB€Ф`&EаG_`C_Л•J #dImcWЫГ ;йˆZэмT™Мb!O!КRS*9И„иM/鈋Uж~†1uђЮ ьЂЯџxPњР1k6­d"!ђGЏчY№ƒб7!lŠp\еж'ф”8л.ТЇЗЅа%КOYС“?ƒЕн[œv—чѓBжУd<ч.0!!rmgwˆ!џыі(…Й` hМ,ІэGъX[R2)WмнЮъYРЖЛbЄ‘ЊЏ‚юъЧjЃЮђOV,Ћ;p‰щчЃ@Z[чœmЁЈѓ‚€—шС”3`†Ѓ ‹бWЅ—’UT]$зВ~  ‚Tф†aјtlѕ(žt:t0ЗeЪўОˆHС#bœˆЭp[эЇ!=љJ7WJŽжЛџWФ™MЕ-Џœ%{ЫКЗ5ЉF‚dPќсR=˜бб5ѓР•NЎH:@пo*wДjїђx#ЄV?hЋ9ЙzЊїjбtѓƒž5Iќ‚ зaJЫуОFш0є$їOА"SЬYžСЏ.ђЇзРЋ!ŸР˜Kћ;уНь8Ђ@<СЖg f 5=ѕсдm[А№{8Ѓ‘[п Qў={(p(G; ˜6џy`ггпўХЄ™АЮx'фЌїцsUКАЯШПŸ3Џі;фVПыe[У<вc&ŽїэјЛ|^ˆ„њ=Х2,iЉЧТў˜евїЁ:*‹ѕoM>Ћ‰ЯŒ‘H@А€Ј0Ч=льV—дЭEљЏx6ЮœЧ+ZY пв—…уO|жѕ%HИБˆ —щi\Јuз w,.jM-ђpТ7ЋЂ™ЬHэъrt%уIУЯ}uђŒbФrпeЬ}Юljt&Хm=ОTc)ѕі’ ЉC—7ЖЋ|uќK9Ўr}щчy$хвV4Ш­ QaєТ>–}ђПrРicЦЅн;u2кb§;LO^ъH“ зйIј2 ,ГŸOV >ЬГГG("‹ШоЮЭYЎИ„i‘"œБŽqx‰9—3ўЋwЇjYЃWь Ё˜s5 ѕУXёr+… N0ucл5РИЅhпUГМ‚ГвLЃS&šяУ“~'jURыr§`yЉMZY9ЎL1CpодЛА‰ЖИЄ‡ь_$К+љ|]і­ёиЉп]()6]сџoЗ№єў!,ŽйvœВС;в}&хOX  ‡Б™(9•У|Њгь}Ž'6^ лєтnrћƒЖЂњ/эTpФ>іВn@mGX"Т|dЈDoщвfw+‡іaZt<Ш :oDMKHŠ’˜я<А/{Жh5Še‡7ЂЕлш/ ќmW{4}Ыqи|К= ц8ЃsТЮ’рЬЬ2jё^ЂОM`pџHѕY‹Y0(Зѕ!еXZŸкЉќЏ$<ПFІAкЁ=Й‘ТШsИdœѕгSVЈC=ИUxiv:]UІёнD‰t}Лu$Ђp0уы8AЁЏќ iРЁ•ћc“uc(™YŒ:Œ йВр+-j gіŽtЕ=‹q++ОЇЁ:B<&ž}\Ю2пЁmi‚jхї"…ѕџ~5G†№ѕB:аЯpЭЋ-(цч)CШ{‰КЛk@HіЋря)JjхЋj‹W‰ ]э˜}нћбИЂoЂwwЇCaєо–рЏџfв}O:Оъ№‹Дљ0tgШЯддЯ4Фб†Л‡%UЃЃѕЌƒW“!A~‰)ќM5g†]•sSa>лp&Lп98*EzfУ„%9VїGVхVЭЪэ]УџHžзЯlЙ™Лbc:ю1N\\иMЇУуa xbЭа‡WJНKГO6зѓНЊ jN^Зђ<™У‚Ђ99a(wI%—ТBpйyd—‚6Z%TбYd€ЇЧЏ`еЄў_@ЃA!LмЪщм‰Уmn;ѕџsњDћs:юo ЇМ+РƒUXcиPЬЧCћ“\u,хП9o*™8'жВИdе‚5ЏЛ'>o,Zќ3+ =мйnаRњX’НЮyкS3ŽŒ7œящџП†жxЩ:т3cjт€1‘‚!lѕJRd­–]>#’№­5`Ъб_,Ц,+СšЅ„џБхшббК З.˜esгпGЮ&Ї .дlьнav= ѓ}Ѕ—лЉ=іьі„_m3ќ?€}ів›ідПЖЯяЖнўiћtbюp|=}КЪњŠnЗџaЕбѓŒ§Ў?ЕN>q?С—Окуј^ЛімЗt/ЗGяЖж§ЗOэею7кSќ4зўщ}Ё7кл}Њ7к}Ћ›іаПЖЙпЖС§Л/ћo8љ.ђhOлЇ їџdЎЅUкЏGрІмЩB™ЂœwЈ•ўgL~юЭ Є#)гšf…œNŸѕХ%ЧмQ1мЛђRы4М С™ЗGтБжЯg'.ЌсДw#.ћљVЌћ2zS+,l(э9PiќЎdeEцDEb_§щК 'яп ЮфЮ—%ж{q$в Њ=[ZЃTAВ+щ’Ш™Ž LYj,лгйšЙК^–ащДg‡ЏаШmУу/OчЂх@!Ї_RЛ,Љ/—™У(6ѕ›—,HБйЬр–bKќ”]”š€\=MeдŒ{"nќHйкjфОкi!џLІbPУ4p•Wц ХoЫЂ`!-l^Q968Жt34Ќ!и+бЎЄ BkmЙA˜hЌAŠyVп”UЈПЬЩЏ}­Л-+Ч|…Ж–ЦaћG…–’ X=NЃ>Н\і=ŠТЄќQ#SФ-e3hHЁзЅЄnM‚ъх№Ї3ћfd‚j‚pєЖ€rДtФ)jЄtљ…й%Ця ~АIАЕк’œ;жн‰Х}UFŸ)t T.k>Ь;Twћ/юWаЧХДY`VoХa6ІЃН—5†}_ дP8ŸЦеwвіЩ0Йgк.]књ*д„ыФф`i?š5тhqЕјжQџ…ŠcЛТкДїжнŽУ@ФлД&ЂЪSйЂŒk1ЦъяЙ ~yG2(?Œ(юдš[ˆ06ёГѕ7ƒJ UЯ$ХЭЁНХь%‘wf~ј Œ)лƒqltѕi‰Хfќw2МЇ†Ѕ$o•;!агŽ~#cј-Я•AzŒvОДxЎ=Зй]Q7:‚‹ЙЂtъˆ‡•уƒR\€zЪђ є—HFЙBЏvКэЈŠіjџ,ovФ(ИЖшVзюН^YяŸГуpыЉW§/жјИп|h/„ЏїrЊb9lьтзaiћwыпН9Пј8ƒcLз“ї^ЁHŒЕI€tДmл5ЙХ‘РЕУEТшœ "ДјP…[Щ1‘Єm4uз_№н"мр.Х2жЩœ0і3схЧй…KrWЦr7ŽђЄ_`њ­BІПЭ”}гNЪZ͘dem€ЁniˆЧmљх?лtBъряЂ5йДlbЭЋ.{›"ШVБуŒцO# j:§›mтVIѕЕžˆVt|Љ™ƒO>ˆ%-Ў*ѕiЙХ6 БDK^RmоHКоТ%o„мUЯЈoGiшюxФœЗyЅƒа!‘,–­ЙQd1wo9RGa№ф2LЈз†=ŠŒYЈЛ‰ [чћРЂТєBxsЃыAД)…mпоФйŒ*"НšШ—š—RПšйO"чp шZ &6'гž0 |%Ј%З>l/m†ЋАоР8ЩoL‘x_ЌwKЁFƒФЎ4|vЯъл.n,‹ќjхŒKI%ЫшиЙvѓшŠШ~I@qiz‰˜|Д|ƒ /ДkШ‘0˜{§бС6лдO'J4Ун"9ПNlѓєхeНьx›њШ†…ж/SŽpH$ŠЈZњЅНŸbЩdd›0ЙФ#s@їOp˜2žЇ/Ь[6Щ”H&јНЅз…N№’у2л$чv]>Tkgip:M M#ї›(В"х;РЗ 9ЬРЈф$Х0^НrKыљж*jУЛ›ягеТг!йђŽіnУћ>тдœV–S$п€hdЏ}›вaШО6?eŠTNјkЋ;l8@‰'Хъђђ?зW ЉІы•$ОрЄ :ЉШїA0ї;†0Ÿк96Ѕдџ"QЌй  NhЮJa…жъHе‘Хƒž§П сІНвЉd„г/ВW•и_є.ГŠ3ўQс ЎђЎ)z0]ѕ/Я%C9ЈЪuд’—№‰“!ИЬ›RкiљB—фЬ"XєA*oыЊ†x7Уки!:Чˆ‚%ќЃЄЛ?@ЪљвбМmѕ†1J#г)ИQFKRШ–т> їайб†Cw@њ/Ъ*p„jœŸј[эŸшўєыЌjgЄR2X~Mxpt-cДмd‹Т‰r$џHАЌнлrіmF^!ђNVР$<ЕE,юћŽtЂgV\ш =rdЩ];> ѕЩ“ŠЦtФ*‚оПd"@ў”д}МШVДOр№Іцы`Ю/krФMŠaЄ{0XЧyfєњ ЯBха}­UPЩEс;ИоpœЛ „+ˆыячеZpй:ƒ5U(й~N/ц,S4№0анyѕ„Ле_ПмŒћТ~l+В†b’4Jpv/%5ц_šaБЅ вSp“О{ŒЬ§ВТгп"Pшс’џ‰Ив‚ъМц]уXFU9™Вn|Cи‘ќ Dk‘+щ№{mŒ№iGxt(œ*КЩђО9Œ{ŽюzЛ1Ке#N tОЂЦAНE]$>”FЋЅКŸŸпЅуOЕ3еБ`œїёѓ§DRd ,YЅ-)wGlў a,бCЉ‚Іэ?ПˆmЋPmcai7Vт‰zGA­Q‚]Gš] хlВю—МцаžЪЉhz–";бK4т=ЛgяПМ ›„‘hpї–є]—ЉˆIоІ\г7Ifh]QЭж nŸ˜x9/ЇЄф—,Ы‚Tѕ*КѓўєЅЙЊТдєяп™(”Ю“&ещ—JJЌ ˜г4іУћYє]AЭBfм2“*ŸЉСЯ<2Њ7Le@tіRЭRГѓЊIю)@šЁй–юPO їT}gHЯ‚}Џ”“~g}ІX:hэС_юЂУбЩмgE|ОГG 3+k’#[У[“JL$ŸЅ0sЧџVпяЪЗ пПЕ”Н]žїиеn7Аa1ОBюˆ~p6ЪЅзm1И'Я”iєyўzij аУђvЈЎќэЧ4ЉBНqылpэ˜™Zi@к2w†Ж(‰1щŸs–лCЩї›]|ё|z>‰”“чŠwр+пПјr‹*^Ф2]2–ъмЮ(ш1?ov3КjD­TM%UT№ЫˆDЌƒbВэђъ’ы(ЮУя‡$KдЁwъ’љж“1mКщsfџe…^D(Е[ŒL]њœІcлYЪ€Я G 'f˜љЊОFйi\Щ&kyнs>О'VфeѓЖ˜КзњУ:ъAК‰^іYЙКqŽЏЌc6ІzО G^ъсСVŒЁ›}аVE_8‘ }ZЮM‰ДвюP›ЈœцЃШЙрЅаЊ№Z“ЖМlk]Jѓьёпѓ‰q|ш—ЃЈLМxУтdbXžъ‡єK=Эщ–П*'6yіo'ФfкёžVvиЫшBˆ‰:j^FPd[’y~lТ$F7§ѓ !є™KМіхџDn {6„3ЎŽЁ-ов k2>Ёв–Аrv40ї} „XЗ6ъОтг1'iо wj G|@œŒєњ4]І‚КкҘ–WR>ˆQуKЪlѓъKEЕC’<*їЯязsђ”}6л;џ,‡5U˜h‰ŒЏЦј и2=МЅ^ЄбЙ,'бК2pMў ЃOЇѓxnУ9_–і( ЗZп‚l;$Bх–wЁЃ5Ы"Ю§›iЂЪk ~""Ј ‡Эюџњ$&ѓИMЭіл!74S7 ˜ !pнряS"т–z‚:0ŽЂs YP€ю]ЧxФпШtНљљoХ/а­т Южяp 1„$žВ‰& CGе .:МŒyŸ&4 mлpя~]sgю_рнУWўх+VЭŒЏ€ЉХU3>џZўv•z;„АА6ПГ}в)jђЏ,":ы•  ­УЙ†МnУ%ŠцЗ4яDа9„ЇŒКIЃIЩлЦ‘`F4Ы_АЯ‘л@GЈŽОЮU`э xМtСжзKСУŠ–nœу3Е <QdY6И—Ў^пDохПФЪ aŸх!‘€_р…їaДІїО+EP*„crнxэ ћa­ЯвПЄљЪmё.gя;.”ч'SЦјpЕњСФ_ў˜#ZНx>ФньbYЃxЙš К;8BќfЎ ЂЯljЅћ˜‰4ŒnёГЅ{›OјOнN^,гбИћГЁюЫŒji”fЄДŸ‘xЬєBбє‘Яэз>ЪїќпŽЪЅ(:!vсўа`ИП’ЎBаЬЗ&Ў_BqЄз‡xH'Ќx‡jBˆmСE_&ЈЩ[ؘжЃфп–юg}Эš—$ЗхЁб|Йнr›=Н RwT:Еј/Ъћјое L'}–ДбЯбЯі8г*ы$чQ4;ј=H{h€zК_™ с$zbdwРхќr"XyX—dfBЫ”,šžї јЩЁ.ƒЬ‹žZУŒШ• hБЮыKоПіШ№tЩ;м{–а. зAАсUц{< JЗсЈ\гПё˜TrЛ;2D2їY›лVTАПlњŒdQ#§s71ŒЋП‚ъоПj‘ѕ§ЛзЧу•…Nм`љpŸœЫDЙњћдiCц­$yESrхxo‚lWцГКйx†т8К6щp9)sІ!гПЪ„1uЃ8ЂјкОвѕ!j€ЉPш§§з4љ=Ч§3kЕYа3f  :Ьƒ@їzz?ѕ(оС7уНЬм’|XS œŠюЫШЛƒ,|#ПЁ8ь[mк0–лжл†Д6ЮHЮСŒ=Ќв0сЩо‹MЭМ†4В-5мЎЪ+<ЎЃœйo[:T \хлbРЎžХ ЉZƒ#WФ џ{іїDяQKюСž‹S|<гЅуешBыš$і”ЧA€XЭ&Wе4šŸ@ЂPЯЉ/B…cv3cц,ЅтЛC’Бc5ќ›ч>Ч†т ЗйзЧš|мщч"ЅxƒO™n›яˆz57hrcЧѓxбW‰W5™ьSђЧшsЙ@Ы,н~’‰нихиЉrф:"ъ‰l‰ћVјяa iix‘Зw€ЕЈ†ИъяZш~Мнљj~„;ущmфܘнл4]Шк"ЙЮВ{~%> йъŠАЛў@ ~-OЧЕ …yoRQQuUТХѕѓз‘™љA`iƒ Q­дбxК—Й|†ъьЂЦБ'’јP;uUlј†p_пcDлжŸ-Bг\ЋyqЎ{чњ9…оёJЁТ“ƒЊТ(qƒЋліf˜VЦюHј Š5`<цГczФbd­§инv'O2gyђF\О^ž’™.И 9hCs_Й[%ьР‚eўлdeћЃ?5ŒTvЄ:Џбњћb‘иyўлbZœЄŒj€f5]BA}§ vmт—ЛШ 4H?D0Cу(нёдсj "˜HьW~Ўя_мЦBBњŒњАлЁкzџ6И­ˆЯФDr^ƒ'(Ф…!xz:ЖЯ:•хЫ§г`щ*šиА;ТЗBьjэ№W€Їеg7ШЃ…Ah ƒŠч3%Б5№рU‡qЕЄШ;ЋfфtuTюВќuэ–aДР\ =Ї)"[+)ўtЏ™рвы3§uL.ZўО]С6Xќ№эŽТ›юЋгeк‘Ј }f”ЖФЌ;ДѓрZ- O/9фьБЈ‡…5п“М qJЅаWлш? ЗІпpщшZpлŸіъ‰Ђq8Vјobж,?МŸ†gRacš§б–-›šB‚?Б=кјJŒ5=З> ^‘АиТ‹Ю}њ8}ВЭЬЋ 2а–] –ЌFм­LCм$ ‚ƒe—2€yЩќ б+Го`Ÿх‡3нА&‰ДГѓ|ё83е#25ЂЬƒYММФeЭ=…і`ЬЖ‘>ЪыВьЛПјЗЮЧТklE{cažЋ[Жт:ёБЇCDЏВЗ[BАщВюВЖвЉМЖюЈЯ~9_ЬГт‰ЎŒѕзŽ*Ћ8tŠa.­ŽйxиФЭHКЗэ>)еаСЯ\‰о ЃяЩљ3,‰лo|0И›œn%%O;V?1ymѓoшYNЦшy.O%гДпPв`еYГКЂmкЅш ?hвП~іIаS!чmпВ=ЭoвмNё/aЄьnQ,}МЂЫј'ЮЄВЬ<Ћгi…vљьАЛе>хьоŽэwеј.^T ѓ+`gЅк[˜YщђхОEIМНЏЗ”ЛЯŸи.рж`Ъ&ицжЏнЃлшлс_Нœўc(ЯхŒrа„˜сЮЭ9ЫЂZГhЯ\Ѕ~Ÿ,Ђk‰YъGH—ƒо ZэС+ј™= žЏєžЎњ}vЉ S§є8ѓБX4Ўеdž6ZШЩДЇк\œcb‡Іїљy7LPH[V‡v‰;XрТлh—QNщfjтx5ЧԘЬчІНЗˆEJџ<хж\GіX(Zгkп{Љc'J3пЭЖ8И/‘˜`ЫЌ хp'Г…Eз›йLkj“Wх-тКрnŠЉцРБsЋjъЄКоfЫžZozі Љez>Lџ$|`ј;фP`еЃЩ–Ctы@Б твФѓЌ.˜DЩQы7ем˜'Ы‰(|……`ˆ–ŒBr„ђŠ%ќ“Е3{j&§шЉEїъЁс[1 ‚зоjЧW9б2ЏV4[ЖŒ~ВЉaКОo7Q'ˆ l˜Њ[КХgЖЃзлЫœ[WoокЏ!іaё б ;вšdUrЛGўЃЦмYВ™%оy{щmТ"Pа7р4{›ЩmГ L) нЂšјЗ.‰oШgя[3ю›X?гŠ~ЫЪEџe,л ёчФXбgїџJйN №ˆ BДПWбВ_п^ћч<Цб„xњeЩžЪƒAп)звѕuLjС<[‡ дЋEGћ2IЧ‘7—LdK~ƒ –yŸі..?х[4”a1Qэ‘SМNвD–@шxј|pіЂ§MrJХГэЏШй Ж‹е8КДrQ’zƒЅїF ’щ юыТих„зЖ`­‚БxQ”чЕЫ*Jі-ѕдb=е„n юqСpФIЎVсю–ГћvЭ4.чкЬЌњ’B9иLеxvЬqцЃЮєes§ž#Љ'ў‹‘Ty%ЬьЧ/$…Шћ‰ƒяq™ŽIЂ1чvЏ‘Všђ2rН$%вR—”^8цDgФoЧŸIˆgФVЦŠ6RЎдPoПPР~жш05ОВаЪм‘1йсGAњ8.KSMЇDšTEkMщ~кЃ†ЫmfЌЈqJqТMЪKѓ,vЄ;›{WUВr–3ў„ЃЪ $НбdЁUbRlУ+ЄИщ oЌйЋ<$UЃО>эв'eGй+цЬY!ЬqVfAgL'‡8FТH[ ŠМœ%ћo•гЛ$Цp (—t@:в7—‡YЧЦm ЗŠ XY)ЊлBХСІšћ†э&јPŸ;ъ№“­Єz$ІcFЂж‘F=рфТˆ›p_ ХS$ДR…”ќІXrрС“AВ*СŠNU&eЖ)z“•бІ• Oаўƒ §d„|–Г:€ВjŸЮ5АЬііt‘ьUAVШ,’уtЩ=uКKs' ЈЛуЅ, \nbYwщЛЦ:œ`cсЖВщЁŸsRHН‹Y ŸиtѕЩHб4}pЬСі†ЕgfПеjеmFMй<]<ЌX5г›)ˆ5X•|YЫZп86ЎЕo‹ЯДйЦ{š3K§жЈі’\2ЄЗЌлwJЮ;HэМЌ–‹LЛр(нRуСRo”<(Є2e› %ВВ_ЁЏТwъ(dkЈyиЇЈB’4ј#Џ?4ќ~cфŒrcјЅLD!#iі(ия„ЬlEт)ŠdЯEрuќК˜T?eљУ—!І,+ЫуЅež+ˆ­ЮшXх‚оЊDлЧbњ›ї^2ХЛ§$ЅјŠСTВЮ8`рЏ^ь—9g\6˜M m-6“p,›ъhJФˆ€јц/й–Ž;P9.ц™PŒCŒ#љrжСИLˆьЙ<ўSЩћ\Сдцr`vџ;сЦlсŽА~6N‡ШИWён!{вЪ‡ѕ?Љbnd“іxЋqLЗxЧмў›VNtыgZ}’Iб‹ю4”*Лцќ]^'t=є–4 )^МР‡Ž (K)z7–ђе_Ев>"8pO|Fcp=Ь6-B‘RфbЬѓЫŒЋ&XBъјvвсš8rlѕ{n|€ЊCœH9DЎžГLНЧiЙfn‹"мфИзY7 ЫI(­~Ёw[`хXНP™ХЊУЙбдЇtЦ`шё•Œ›qэ_‚v 1™O%aIVE:/юФЅ0ЋOˆЇЈв$Sюnќ˜+nў5cђs;ЄФд, еŸќNсфдzЬdzЛяqМgšYєŠР фЬŽ ьH_ъ†5ТW‡A†ЖEы­іJћVWЖДzх[$Ћ+ыFјХY+LП‰Љ<9ђ  ­К1| МNP_М!фўшиЂ­њН&YЊхч-нŽXі!3YTтБƒ•Ю hзЯBеує6‡r~пЋˆr:_№ђ‘ЁI‘?ўЙёWj-р8щ HгМU й‰П–в7ƒЏ•š%9’[ZБ˜ЖžМфјZ)Ш„ц%Жл^3bѕіПЙ9†[vќЌMнЌЫДЪЗш |0šL„RUЩ(?)Ў0 еyЧ—кZ2л L‹Ъ&К-:lѓ3:ьHУB6oП№6ƒсйІвзЫЯюЖNм™“ВБ U‹ пЩEј”/Œєфd{*lх3s}ZЅЪ%з-чвY4ДU„k{Ђ•Ё_gш˜Xф̘%sщf hмв@эЏ/?zEA9(‰ІgєxƒГФ Ё‰т‰jA|! ѕЕгФхм€1-ыFи{Ј*nлщЬЁ“.ЗaГQђЅ\'8фјt”ђА/ЛnфZв“юТŸjкчВІ С8хƒ<йfm§I]Јx№ЫѓСмiŠPб]ƒZЇG€з)$Ћ‹Bю…нœKт^Ы,вф vmFLПMYD|ЋЧoљ оGJz9mВgnюUї:AvА.љ‘ъN8%Y q•|#_iнў4Kl‰:ŸVѕ WиŽCЈйšpTldЪЏFї-$ёцV*EдT.MМdIжWг#fUліuА эђХ Ф0 [ZњЊX ЌŒЌRЛYjјЌХ^Тд5‚•ПЩ A%гшЁ‰’С; ДцфЫX*“ьзЯMP'№ЁіEј~ќ86gћjУnЊHyљnњхPxAŽж+(лнj"ЖУoц`ДђiрЊsђџOрџmSЫ2дХSiF/-"3?Ÿсё8;HплыYa€_ˆЂђoIБPXм,х уg lЭЉnRЗVц.Tн”FЂCцш~ДŠэЋ 5’>e“–|eoсjVКDцY{@ЌЁЃA+Ж‰ KчєЃ‚0$ўг›Ъ9эпo{Щ ?­Ф‚ёдYynє‚ЏТрНЉ s?Quт–\"dнЧЌМsP%02GCЖѓ~иMуœ*У~›ЕФYшЋџDtŠJWъ4NЙ<Д§ž&)Пй‹?Љ*—Rkyи4МF‡ќЙtБИaT)БбљRЋГ.„Юы,@ߘJчNюf†hŽ€•=Л1–ЧЈД­/} 6%BЂr F.+RG™Dž‰#]zг+žл@ЏhЧ›+@Ч`QЦ|Ќ(ђ97ррP›_bЦєˆЏд]OГnёoюеakт_‚ВоыбЬхjžn№o(… #у^tЋUb…т$еЁ )Ц9‘wћrV)ќZ8н№YЖC0ђxœЦ.№,Їр4œ›ЫL €E"YHUп+!˜ƒЉњАdЫ)HфДPЙJC ˜AЩюќэёЫ[SИ3Ј+twfЬJЗ…1Nчi”H‹рЌчю4Ыщ&Ў:~5пh'^Ч:Ю }ћъf/џњТ%mэpэ>УПђVЭOуIzœђŽc-Rhšсj233М ЗЂžѕQЯФLЦч„J,>P0ZzЖЬќkϘеPbja~›‰_ПѓЁ#VѓOџйicnV Bўffgpodder-3.9.0/tools/mac-osx/PkgInfo0000644000016000001710000000001112654461624020252 0ustar jenkinsjenkins00000000000000APPL???? gpodder-3.9.0/tools/mac-osx/Info-10.4.plist0000644000016000001710000000303112654461624021327 0ustar jenkinsjenkins00000000000000 CFBundleName gPodder CFBundleShortVersionString __VERSION__ CFBundleGetInfoString gPodder v__VERSION__ CFBundleAllowMixedLocalizations false CFBundleInfoDictionaryVersion 6.0 CFBundleExecutable gpodder CFBundleDevelopmentRegion English CFBundlePackageType APPL CFBundleSignature GPOD CFBundleVersion __VERSION__ CFBundleIconFile icon.icns CFBundleIdentifier org.gpodder.gpodder LSEnvironment DISPLAY :0 CFBundleDocumentTypes CFBundleTypeExtensions opml xml CFBundleTypeMIMETypes text/xml application/xml text/x-opml CFBundleTypeName OPML Documents CFBundleTypeRole Viewer gpodder-3.9.0/tools/mac-osx/README0000644000016000001710000000027512654461624017666 0ustar jenkinsjenkins00000000000000 These files are used by the Mac OS X (MacPorts) port of gPodder. For details, see bug 942 . For questions, please contact Eric Le Lay . gpodder-3.9.0/tools/mac-osx/create_icon.sh0000644000016000001710000000063712654461624021617 0ustar jenkinsjenkins00000000000000#!/bin/bash cd work/gpodder-2.3 # create temporary directory mkdir tmpdir # create raster images for the icons for i in 32 48 128 do rsvg -w $i -h $i data/gpodder.svg tmpdir/gpodder-$i.png done # get the small one cp data/icons/16/gpodder.png tmpdir/gpodder-16.png # create the icns file (thanks to the icnsutils library http://icns.sourceforge.net/) png2icns tmpdir/icon.icns tmpdir/gpodder-{16,32,48,128}.png gpodder-3.9.0/tools/win32-portable/0000755000016000001710000000000012654461626020205 5ustar jenkinsjenkins00000000000000gpodder-3.9.0/tools/win32-portable/makefile0000644000016000001710000000321312654461624021702 0ustar jenkinsjenkins00000000000000# gPodder Win32 Portable Cross-Build script # 2014-10-21 Thomas Perl PYTHON ?= python VERSION := $(shell $(PYTHON) ../getversion.py) MKDIR := mkdir CP := cp PORTABLE_OUTPUT_DIR := gpodder-$(VERSION)-win32 PORTABLE_OUTPUT := $(PORTABLE_OUTPUT_DIR).zip SOURCE_ROOT := ../../ LAUNCHER_ROOT := ../win32-launcher GPODDER_EXE := gpodder.exe GPO_EXE := gpo.exe all: $(PORTABLE_OUTPUT) $(PORTABLE_OUTPUT_DIR): $(LAUNCHER_ROOT)/$(GPODDER_EXE) $(LAUNCHER_ROOT)/$(GPO_EXE) $(PYTHON) ../localdepends.py cp -rpv ../fake-dbus-module/dbus ../../src/ $(MAKE) -C $(SOURCE_ROOT) messages $(RM) -r $(PORTABLE_OUTPUT_DIR) $(MKDIR) -p $(PORTABLE_OUTPUT_DIR) $(CP) $(LAUNCHER_ROOT)/$(GPODDER_EXE) $(LAUNCHER_ROOT)/$(GPO_EXE) $(PORTABLE_OUTPUT_DIR) $(CP) $(SOURCE_ROOT)/README $(SOURCE_ROOT)/COPYING $(PORTABLE_OUTPUT_DIR) $(CP) -r $(SOURCE_ROOT)/bin $(SOURCE_ROOT)/share $(SOURCE_ROOT)/src $(PORTABLE_OUTPUT_DIR) $(RM) -r $(PORTABLE_OUTPUT_DIR)/share/applications $(RM) -r $(PORTABLE_OUTPUT_DIR)/share/dbus-1 $(RM) -r $(PORTABLE_OUTPUT_DIR)/share/man find $(PORTABLE_OUTPUT_DIR) -name '*.pyc' -exec $(RM) {} + find $(PORTABLE_OUTPUT_DIR) -name '*.ui.h' -exec $(RM) {} + $(PORTABLE_OUTPUT): $(PORTABLE_OUTPUT_DIR) zip -r $(PORTABLE_OUTPUT) $(PORTABLE_OUTPUT_DIR) $(LAUNCHER_ROOT)/$(GPODDER_EXE): $(MAKE) -C $(LAUNCHER_ROOT) $(GPODDER_EXE) $(LAUNCHER_ROOT)/$(GPO_EXE): $(MAKE) -C $(LAUNCHER_ROOT) $(GPO_EXE) clean: $(RM) -r $(PORTABLE_OUTPUT_DIR) $(MAKE) -C $(LAUNCHER_ROOT) distclean distclean: clean $(RM) -r $(PORTABLE_OUTPUT) .PHONY: all clean distclean $(PORTABLE_OUTPUT_DIR) $(LAUNCHER_ROOT)/$(GPODDER_EXE) $(LAUNCHER_ROOT)/$(GPO_EXE) .DEFAULT: all gpodder-3.9.0/tools/localdepends.py0000644000016000001710000000401512654461624020442 0ustar jenkinsjenkins00000000000000#!/usr/bin/python # # gPodder dependency installer for running the CLI from the source tree # # Run "python localdepends.py" and it will download and inject dependencies, # so you only need a standard Python installation for the command-line utility # # Thomas Perl ; 2012-02-11 # import urllib2 import re import sys import StringIO import tarfile import os import shutil import tempfile sys.stdout = sys.stderr src_dir = os.path.abspath(os.path.join(os.path.dirname(__file__), '..', 'src')) tmp_dir = tempfile.mkdtemp() MODULES = [ # Module name, Regex-file chooser (1st group = location in "src/") ('feedparser', r'feedparser-[0-9.]+/feedparser/(feedparser.py)'), ('mygpoclient', r'mygpoclient-[0-9.]+/(mygpoclient/[^/]*\.py)') ] def get_tarball_url(modulename): url = 'http://pypi.python.org/pypi/' + modulename html = urllib2.urlopen(url).read() match = re.search(r'(http[s]?://[^>]*%s-([0-9.]*)(?:\.post\d+)?\.tar\.gz)' % modulename, html) return match.group(0) if match is not None else None for module, required_files in MODULES: print 'Fetching', module, '...', tarball_url = get_tarball_url(module) if tarball_url is None: print 'Cannot determine download URL for', module, '- aborting!' break data = urllib2.urlopen(tarball_url).read() print '%d KiB' % (len(data)/1024) tar = tarfile.open(fileobj=StringIO.StringIO(data)) for name in tar.getnames(): match = re.match(required_files, name) if match is not None: target_name = match.group(1) target_file = os.path.join(src_dir, target_name) if os.path.exists(target_file): print 'Skipping:', target_file continue target_dir = os.path.dirname(target_file) if not os.path.isdir(target_dir): os.mkdir(target_dir) print 'Extracting:', target_name tar.extract(name, tmp_dir) shutil.move(os.path.join(tmp_dir, name), target_file) shutil.rmtree(tmp_dir) gpodder-3.9.0/tools/win32-launcher/0000755000016000001710000000000012654461626020176 5ustar jenkinsjenkins00000000000000gpodder-3.9.0/tools/win32-launcher/folderselector.c0000644000016000001710000001151612654461624023360 0ustar jenkinsjenkins00000000000000 #include "gpodder.h" #include "folderselector.h" #include #include #include /* Private function declarations */ void UseFolderSelector(); int FolderExists(const char *folder); void UseFolder(const char *folder); void SaveFolder(const char *folder); const char * RegistryFolder(); const char * DefaultFolder(); int AskUserFolder(const char *folder); void DetermineHomeFolder(int force_select) { if (force_select) { /* Forced selection of (new) download folder */ UseFolderSelector(); return; } if (getenv("GPODDER_HOME") != NULL) { /* GPODDER_HOME already set - don't modify */ return; } if (FolderExists(RegistryFolder())) { /* Use folder in registry */ UseFolder(RegistryFolder()); return; } if (FolderExists(DefaultFolder())) { /* Save default in registry and use it */ SaveFolder(DefaultFolder()); UseFolder(DefaultFolder()); return; } if (AskUserFolder(DefaultFolder())) { /* User wants to use the default folder */ SaveFolder(DefaultFolder()); UseFolder(DefaultFolder()); return; } /* If everything else fails, use folder selector */ UseFolderSelector(); } void UseFolderSelector() { BROWSEINFO browseInfo = { 0, /* hwndOwner */ NULL, /* pidlRoot */ NULL, /* pszDisplayName */ "Select the data folder where gPodder will " "store the database and downloaded episodes:", /* lpszTitle */ BIF_USENEWUI | BIF_RETURNONLYFSDIRS, /* ulFlags */ NULL, /* lpfn */ 0, /* lParam */ 0, /* iImage */ }; LPITEMIDLIST pidList; static char path[MAX_PATH]; pidList = SHBrowseForFolder(&browseInfo); if (pidList == NULL) { /* User clicked on "Cancel" */ exit(2); } memset(path, 0, sizeof(path)); if (!SHGetPathFromIDList(pidList, path)) { BAILOUT("Could not determine filesystem path from selection."); } CoTaskMemFree(pidList); SaveFolder(path); UseFolder(path); } int FolderExists(const char *folder) { DWORD attrs; if (folder == NULL) { return 0; } attrs = GetFileAttributes(folder); return ((attrs != INVALID_FILE_ATTRIBUTES) && (attrs & FILE_ATTRIBUTE_DIRECTORY)); } void UseFolder(const char *folder) { if (folder == NULL) { BAILOUT("Folder is NULL in UseFolder(). Exiting."); } if (SetEnvironmentVariable("GPODDER_HOME", folder) == 0) { BAILOUT("SetEnvironmentVariable for GPODDER_HOME failed."); } } void SaveFolder(const char *folder) { HKEY regKey; if (folder == NULL) { BAILOUT("Folder is NULL in SaveFolder(). Exiting."); } if (RegCreateKey(HKEY_CURRENT_USER, GPODDER_REGISTRY_KEY, ®Key) != ERROR_SUCCESS) { BAILOUT("Cannot create registry key:\n\n" "HKEY_CURRENT_USER\\" GPODDER_REGISTRY_KEY); } if (RegSetValueEx(regKey, "GPODDER_HOME", 0, REG_SZ, folder, strlen(folder)+1) != ERROR_SUCCESS) { BAILOUT("Cannot set value in registry:\n\n" "HKEY_CURRENT_USER\\" GPODDER_REGISTRY_KEY); } RegCloseKey(regKey); } const char * RegistryFolder() { static char folder[MAX_PATH] = {0}; DWORD folderSize = MAX_PATH; HKEY regKey; char *result = NULL; if (strlen(folder)) { return folder; } if (RegOpenKeyEx(HKEY_CURRENT_USER, GPODDER_REGISTRY_KEY, 0, KEY_READ, ®Key) != ERROR_SUCCESS) { return NULL; } if (RegQueryValueEx(regKey, "GPODDER_HOME", NULL, NULL, folder, &folderSize) == ERROR_SUCCESS) { result = folder; } RegCloseKey(regKey); return result; } const char * DefaultFolder() { static char defaultFolder[MAX_PATH] = {0}; if (!strlen(defaultFolder)) { if (SHGetFolderPath(NULL, CSIDL_PERSONAL | CSIDL_FLAG_CREATE, NULL, 0, defaultFolder) != S_OK) { BAILOUT("Cannot determine your home directory (SHGetFolderPath)."); } strncat(defaultFolder, "\\gPodder\\", MAX_PATH); } return defaultFolder; } int AskUserFolder(const char *folder) { char tmp[MAX_PATH+100]; if (folder == NULL) return 0; strcpy(tmp, PROGNAME " requires a download folder.\n" "Use the default download folder?\n\n"); strcat(tmp, folder); return (MessageBox(NULL, tmp, "No download folder selected", MB_YESNO | MB_ICONQUESTION) == IDYES); } gpodder-3.9.0/tools/win32-launcher/gpodder.c0000644000016000001710000001635712654461624022000 0ustar jenkinsjenkins00000000000000 /** * gPodder - A media aggregator and podcast client * Copyright (c) 2005-2016 Thomas Perl and the gPodder Team * * gPodder is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 3 of the License, or * (at your option) any later version. * * gPodder is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . **/ /** * gPodder for Windows * Thomas Perl ; 2011-11-06 **/ #include #include #include #include #include #include #include #include #include "gpodder.h" #include "folderselector.h" #if defined(GPODDER_GUI) # define MAIN_MODULE "bin\\gpodder" #else # define MAIN_MODULE "bin\\gpo" #endif #define PYTHON_INSTALLER_FILE "python-2.7.8.msi" #define PYTHON_INSTALLER_SIZE 16703488L #define PYGTK_INSTALLER_FILE "pygtk-all-in-one-2.24.2.win32-py2.7.msi" #define PYGTK_INSTALLER_SIZE 33239562L #define PYTHON_INSTALLER_URL \ "http://python.org/ftp/python/2.7.8/" \ PYTHON_INSTALLER_FILE #define PYGTK_INSTALLER_URL \ "http://ftp.gnome.org/pub/GNOME/binaries/win32/pygtk/2.24/" \ PYGTK_INSTALLER_FILE #define LOOKUP_FUNCTION(x) {x = GetProcAddress(python_dll, #x); \ if(x == NULL) {BAILOUT("Cannot find function: " #x);}} const char *FindPythonDLL(HKEY rootKey) { static char InstallPath[MAX_PATH]; DWORD InstallPathSize = MAX_PATH; HKEY RegKey; char *result = NULL; if (RegOpenKeyEx(rootKey, "Software\\Python\\PythonCore\\2.7\\InstallPath", 0, KEY_READ, &RegKey) != ERROR_SUCCESS) { return NULL; } if (RegQueryValueEx(RegKey, NULL, NULL, NULL, InstallPath, &InstallPathSize) == ERROR_SUCCESS) { strncat(InstallPath, "\\python27.dll", sizeof(InstallPath)); result = InstallPath; } RegCloseKey(RegKey); return result; } bool contains_system_dll(const char *path, const char *filename) { bool result = false; struct stat st; char *fn = malloc(strlen(path) + 1 + strlen(filename) + 1); sprintf(fn, "%s\\%s", path, filename); if (stat(fn, &st) == 0) { result = true; } free(fn); return result; } char *clean_path_variable(const char *path) { char *old_path = strdup(path); int length = strlen(path) + 1; char *new_path = (char *)malloc(length); memset(new_path, 0, length); char *tok = strtok(old_path, ";"); while (tok != NULL) { // Only add the path component if it doesn't contain msvcr90.dll if (!contains_system_dll(tok, "msvcr90.dll")) { if (strlen(new_path) > 0) { strcat(new_path, ";"); } strcat(new_path, tok); } tok = strtok(NULL, ";"); } free(old_path); return new_path; } int main(int argc, char** argv) { char path_env[MAX_PATH]; char current_dir[MAX_PATH]; char *endmarker = NULL; const char *dll_path = NULL; const char *target_folder = NULL; char tmp[MAX_PATH]; int force_select = 0; int i; void *MainPy; void *GtkModule; int _argc = 1; char *_argv[] = { MAIN_MODULE }; TCHAR gPodder_Home[MAX_PATH]; TCHAR Temp_Download_Filename[MAX_PATH]; HMODULE python_dll; FARPROC Py_Initialize; FARPROC PySys_SetArgvEx; FARPROC PyImport_ImportModule; FARPROC PyFile_FromString; FARPROC PyFile_AsFile; FARPROC PyRun_SimpleFile; FARPROC Py_Finalize; #if defined(GPODDER_CLI) SetConsoleTitle(PROGNAME); #endif for (i=1; iSџџџџ џџџџџџџџџџџџŸџџџџџџџџџC-AЋtRpџg‹џŽd‰џ‹`†џ‰]„џ‡[‚џ‡[‚џˆ\ƒџˆ\ƒџˆ\ƒџeJaџ!""џ888џџџ''&џџ*))џ џ...џ221џџџ !"џџ*+*џ79;›џџџџџџџџџ?*< Z>VѓŽcˆџ…Wџ…X€џ†Y€џ†Yџ†Zџ‡Zџ‡Z‚џ‡[‚џ‡[‚џpVmџџ+*)џџ$$$џ,,+џџ(''џ!! џ00.џ%%$џ///џџџ$$%џ$#"џ›џџџџџџџџџ?)<V;Sыcˆџ…Wџ…Wџ†Y€џˆ\ƒџŠ]„џŠ^„џ‰]„џ‡Zџ…Wџ`E]џџџџџџ џџџџџџџџ џџ$#еџџџџџџџџџџџџH0FХgŠџŽeˆџ„^џwUsџlMiџeGbџaD^ћcF`§lNiџ‚^}џW>Tџџџџџџџџџџџџџџџџѓ?)< џџџџџџџџџ?*=;D-BЕA+?Ї>*=}>**<7>*)=?)<>*=/?*=ƒG8E§$$#џ543џ...џ777џ џ&%%џCB@џџ@?>џ100џ+,,џ322џ џ:;;џ;<=џ4,2ё>)=џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџH=FЫџ@?>џ?BBџџ;;;џ./0џџ##$џ:::џ999џ>??џџ565џ(('џџ@*=%џџџўўў‹­­­§ џЅЅЅћџџџEџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ3ЯЯЯы%%%џ888џЙЙЙїцфцЧ{jy§jVhџЏІЎБўўў›зззщbbbџ џ   §ўўўkџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ%яяяЧџџџNNNџdddџXXXџ...џџVVVџеееыўўўSџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџUїїїНОООї’’’џ~~~џˆˆˆџЌЌЌ§чччйџџџ}џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ џџџ1џџџEџџџ;џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ(0` €%џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ*%$$$2).-"/-) **% ''' )%% ‹ссссссссссссссссссссссс[џџџџџџџџџџџџџџџџџџџџџ!%#*%" -,%.+%1.)0-)1/(1/*#10*'20))20)-30+/30+130,740,9PNMЏBCEџ***џџџEEEџџџџџџџџџџџџџџџџџџџgџџџџџџџџџџџџџџџ )( .-'1/))20*331+;6/0Q:,6u;+8•=+:­=*;С=*;б>*<п>*<ы>*<ѓ>*<ї>*<љ>*<љ8/5§-./џ&&&џџ џ)))џџџџџџџџџџџџџџџџџџџk џџџџџџџџџџџџ/-&2/)38-3m<+9Е?*<чE.BџS8PџaD^џmMiџwTsџ~Zzџ…_€џ‰c…џŽf‰џh‹џ’jџ“jŽџ:*8џџџџџ$$$џџџџџџџџџџџџџџџџџџџqџџџџџџџџџџџџ 8*2!>*;ЙI1FџiIeџ„_џ“kŽџ•lџ’iџf‹џŽd‰џbˆџŒ`†џ‹`†џŠ_…џŠ^…џŠ^…џŠ^„џ7%5џџџџџџџџџџџџџџџџџџџџџџ џџm џџџџџџџџџџџџџџџ>)<БaC^џ’jџ’iџb‡џ‰]„џˆ[‚џˆ\ƒџˆ\ƒџˆ\‚џ‡[‚џˆ[‚џˆ\ƒџ‡\‚џˆ\ƒџˆ\ƒџˆ\ƒџcP_џ257џLKIџKKKџFGFџџ0/.џ876џ''(џ.-,џ555џCEFџџ<<;џONMџLMMџџџ$"!џ@CEџџ'&%џ<:6џLPTџ*.0gџџџџџџџџџџџџџџџ?*< A+?эgŠџŠ^…џ…Xџ†X€џ†Y€џ†Yџ‡Zџ‡[‚џ‡[‚џ‡[‚џ‡[‚џˆ\ƒџ‡[ƒџˆ\ƒџˆ\ƒџ‡[ƒџ\JZџџџџ џџџ457џџ)))џ џ#$$џ џџ)((џ'()џ-,*џџ џ џ џџџџ gџџџџџџџџџџџџџџџ?); @+>ыŽgŠџˆ[‚џ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Xџ…X€џ…X€џ†X€џweuџLMNџDDDџMLJџ./.џ***џDEFџPLIџџ***џEGHџEEDџNNLџ..-џSRQџ(&&џEEEџ52/џDFEџ"##џ)('џKLMџRRPџ9::џ ƒџџџџџџџџџџџџџџџ?(??)=п‰c„џ‰]„џ„V~џ„V~џ…Wџ‡Yџ‰\ƒџ‹_…џŒa†џb‡џb‡џŒa‡џŠ^…џ‡Zџ…Wџ„V~џ9&6џџџџџџџџџџџџџџџџџџџџџ џџџ г@);џџџџџџџџџџџџџџџ?)=ЛzVvџ’hŒџf‹џ“jŽџ•mџ’kџ‹d†џ\|џyWuџuSpџrQnџsSoџyXuџ‡c‚џ“kŽџŽcˆџ6$4џџџџџџџџџџџџџџџџџџџџџџџџ#"ы?)< џџџџџџџџџџџџџџџ>*=eN4KџpOlџhIeџZ>WџM3JџC,@ѕ?*=ч>)<Ы?)<Г>*<Ё>)=•>)<™>*<Ћ?*=бI2GљoPkџYIWџ'''џџ'&$џ џ&''џ&%#џџџ)))џ.-+џ&'&џџ,,,џ))(џ" џ''&џџ%$$џџџџ334џ џ*)я?)=џџџџџџџџџџџџџџџ@*=?**<[?*=3?)<=,<џџџџџџџџџџџџџџџџџџџџџ?*='?*=С1(0џџџ/0/џ*+,џ*))џ...џџџ0/.џCCCџ***џ џ210џ244џ++*џ-./џџ234џџ***џ+-.џ>>?џ345џ#"ч>)=џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ>*=5A8?џџ///џ333џ899џ:==џџ567џ788џ***џ(((џџ$$%џ665џ:<=џGFDџFFEџ"#$џџ553џ567џџ џ10.џ:08Зџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ?*<7KBJџџџ++)џ'((џ-02џџ џ)*)џџџџ///џџџџџ џџ!!!џџ))*џџ џqrsЗџџџ“џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџmхїг$"Б^SYџIHGџRTTџ]ZXџXURџTSQџ121џџ>>>џџMPQџFIJџџ.-,џLMNџ244џ555џ---џ)('џ@CCџ676џ))'џEGHџ,,,џџЙЙЙџўўўхўўўџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџƒ111џТТТџшшшџЈЈЈџџ  џџџџџџџџџџџџџџџџџ џ џџџџџџџ[[[џќќќяџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўўўџџџџџџџџџ;ћжжжџьььџьььџьььџФФФџџџ*(џ*(џ*(џ*(џ!џџDDDџKKKџKKKџKKKџ444џѕЏ­­(((ЯQQQџQQQџPPPџDDDџџџZZZџіііїџџџSџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџAџџџеџџџЫўўўЏ§§§“ Эџюююџюююџюююџюююџюююџ„„„џ*(џ„V~џ„Wџ„Wџ„V~џ0.џkkkџьььџэээџэээџэээџсссџ!!!§;џџџўўўaњњњѕВВВџbbbџ...џџ---џџћћћѓџџџUџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ“­­­џ]]]џ{{{џџџтттџёёёџ№№№џвввџиииџёёёџуууџџsKnџ„Wџ…WџkFfџџтттџ№№№џоооџыыыџяяяџяяяџƒƒƒџўўў9іііћOOOџ000џˆˆˆџСССџщщщџ§§§яџџџГўўў3џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ­vvvџџџџIIIџѓѓѓџѓѓѓџpppџџџ}}}џѓѓѓџaaaџI0Fџ…Wџ…Wџ5"2џџђђђџƒƒƒџ џ(((џШШШџёёёџЬЬЬџсљљљЙˆˆˆџNNNџіііљџџџЉџџџkўўў7џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџЩZZZџџџџ|||џѕѕѕџеееџџџџџШШШџЇЇЇџ'%џ„WџT{џ џдддџьььџџџџ---џяяяџ№№№џџчччџ///џЦЦЦџџџџйџџџ;џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџп===џџџџŸŸŸџјјјџЦЦЦџџџџџ———џзззџџ‚U|џiEeџ+++џїїїџъъъџ џџџџФФФџіііџ333џ***џџaaaџГГГџџџџГџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ§§§ѓ"""џџџџАААџњњњџяяяџџџџџМММџ№№№џџSyџO3Kџaaaџњњњџњњњџ>>>џџџџЙЙЙџјјјџCCCџџџџџўўўЁџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџђђђџџџџџВВВџћћћџќќќџРРРџ'''џџnnnџљљљџћћћџџwNrџ<':џ†††џћћћџќќќџШШШџџџџыыыџњњњџCCCџџџџœœœџџџџ…џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ9уууџџџџџЄЄЄџћћћџќќќџќќќџїїїџюююџћћћџћћћџњњњџџuLpџ1 /џџћћћџќќќџќќќџнннџџлллџќќќџћћћџ444џџџџИИИџџџџiџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџUЬЬЬџџџџџ‡‡‡џљљљџњњњџњњњџњњњџљљљџљљљџљљљџіііџџzPuџ-+џЄЄЄџљљљџњњњџњњњџћћћџћћћџћћћџћћћџјјјџџџџџгггџўўўOџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџmЭЭЭџBBBџџџџZZZџїїїџїїїџїїїџїїїџїїїџїїїџіііџфффџџ€T{џ1 /џ›››џїїїџјјјџјјјџјјјџљљљџљљљџљљљџлллџџџџџчччџўўў3џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўўў%џџџПџџџэyyyџџˆˆˆџ џёёёџєєєџєєєџєєєџєєєџєєєџєєєџСССџџ„V~џ=(:џџѕѕѕџѕѕѕџѕѕѕџіііџіііџіііџіііџ   џџџџџљљљћџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ…џџЏЏЏџ+++џМММџђђђџђђђџђђђџђђђџђђђџёёёџџ7$5џ…WџR6OџUUUџђђђџѓѓѓџѓѓѓџѓѓѓџѓѓѓџєєєџѓѓѓџOOOџџџџ***џўўўэџџџ џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџi   џџŽŽŽџˆˆˆ§UUUџяяяџяяяџяяяџяяяџяяяџыыыџ...џc@^џ„WџrJmџџъъъџ№№№џ№№№џёёёџёёёџёёёџбббџџџџ333џ\\\џџџџнџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ9дддџџOOOџэээљёГГГџэээџэээџэээџэээџŸŸŸџџ‚U|џ…WџƒV}џџЇЇЇџюююџюююџюююџюююџэээџYYYџqqqџџџўўў§ўўўѓўўў•џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ §§§ч)))џ џцццџЕћСССџъъъџъъъџСССџџdA`џ…Wџ…Wџ…WџaE^џ,,,џрррџыыыџьььџьььџ–––џ)))џЈЈЈџџaaaџўўўПџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ‘‘‘‘џџrrrџўўўу---q ѓPPPџRRRџ џ]DZџ‡Zџ„V~џ„Vџ‡Z‚џˆdƒџ§>>>џПППџбббџuuuџ§ЮЮЮџEEEџџТТТџўўўgџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўўў#іііѕ$$$џџФФФџўўўЕ:::ac6$4СyWuџ‹`†џ„V~џ…WџeŠџgJcџ<(:‰yнщГооояЄЄЄџџFFFџ§§§чџџџ џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўўўƒСССџџџиииџџџџ­ўўўџџџ?*=YW=Tџ’iџ…XџŠ^„џgˆџD.Bѓ>*=џџџџџџџџџџџџЧШШШџџџиииџџџџeџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўўўХ™™™џџџЦЦЦџўўўзўўўGp`n @*=бvVrџ”lџ‘jŒџU;Sџ>*=џџџџџџўўўWџџџуИИИџџџЌЌЌџџџџБўўўџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўўўеœœœџ џџwwwџыыы§џџџЩЧСЦЅS@QћT:QџJ2GџZHXЗяэя?џџџyџџџбщщщџoooџџ џЇЇЇџўўўЫўўўџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўўўХЧЧЧџ///џџџhhhџЕЕЕџйзиџФОФџидиџћћћљцццџЖЖЖџgggџџџ222џЬЬЬџџџџПўўўџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ џџџ‰јјјљџ---џџџџџџџџџџ---џžžžџњњњљџџџ…ўўў џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўўў'ўўўŸўўўѕгггџџdddџHHHџ<<<џFFFџbbbџџвввџўўўѕџџџЁўўў'џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџYўўў•ўўўСўўўнўўўчўўўпўўўХўўў—џџџYўўўџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ(@€ Bџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ  :(11,,,***%%%$$$""",!!­ззззззззззззззззззззззззззззззз+џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ *" '% .*' ((& .)"/-%0.),+'/+(1/%1/&2-*10(//(/.+0-+!2.*!#$$гџџџџџ666џ>>>џџџџџџџџџџџџџџџџџџџџџџџџџ3џџџџџџџџџџџџџџџџџџџџџџџџ,%# ,*#.-(1-'0.(2/)#2/*'20++20*/20*320+531,96//G7.2U8-3_:,5k:,6q:,6u:-6}:-6}:,6kfeхffiџTVVџGJKџKJIџџ///џ///џџџџџџџџџџџџџџџџџџџџџџџџџ5џџџџџџџџџџџџџџџџџџџџџ)' .-%//)%10*/20+931+?31,E8.2c;,6…<+9Ѕ=*:П>*;е>*<щ>*<ѕ>*<љ>*<ћ>*<§>*<§>*<џ?*=џ?*=џ?*=џ?*=џ'#&џџџџ џџ///џ///џџџџџџџџџџџџџџџџџџџџџџџџџ; џџџџџџџџџџџџџџџџџџ.+%2/()30*=5/.U;,7“=+:Щ>*<ё?*=џA+?џJ1GџV:SџaC]џkKgџrQnџzVuџ[{џ„_€џ‰b„џŒe‡џgŠџ‘iŒџ‘iџ‘iџџџџџџџ"""џ***џџџџџџџџџџџџџџџџџџџџџџџџџ Aџџџџџџџџџџџџџџџџџџ.*$6-03=+9Ѓ>*<ѓC,@џU9RџmLiџ€[|џgŠџ–mџ–n‘џ–n‘џ•mџ”lџ“jŽџ’hџ‘hŒџf‹џf‹џfŠџeŠџeŠџeŠџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ?џџџџџџџџџџџџџџџџџџ;)7)>*<зF/CџkJgџ‹d†џ–n‘џ•mџ’iџeŠџbˆџŠ_…џ‰]„џˆ[‚џ‡[‚џ‡[‚џˆ[‚џˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџ џџџ џџ џџџџ џџџ џџџџџ џџ џџџ џџ џ џџџџџ!#$џ!"#џ7џџџџџџџџџџџџџџџџџџA+<>*<БL3Iџ‰b„џ–n‘џ‘hŒџŒa‡џˆ]ƒџˆ[‚џˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџeZaџHMPџ42/џUWVџlljџKIFџ!#$џџ433џMLJџ8:;џ џDCBџQQQџDBBџ)-/џџ110џgggџHGFџceeџ&&&џ011џџ753џOQRџ$$&џџ==<џ4/*џBGIџcglџ5џџџџџџџџџџџџџџџџџџџџџ?*<?*<чqOmџ•mџ‰\ƒџ…X€џ†X€џ†Yџ‡Zџ‡Z‚џ‡[‚џ‡[‚џˆ[‚џˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџE==џ898џ%%%џ'''џџ367џ430џ џџџ>@Aџ===џ(%#џ&)+џ+,,џ*+,џ$"!џ"""џ<<<џ)))џџ+)&џџџ875џHHHџ*+)џ%(*џ:::џ'&‰џџџџџџџџџџџџџџџџџџџџџџџџ?*=гfGbџ–n‘џ†X€џ…Wџ…Wџ…Wџ…Wџ‡Zџ‰]„џ‹`†џbˆџŽd‰џeŠџfŠџeŠџdŠџcˆџ‹_…џ‡[‚џ…Wџ…Wџ…Wџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ/-Я@);џџџџџџџџџџџџџџџџџџџџџ?)=­X)=kC-Aџ…_џ“lŽџh‹џˆaƒџyVuџkKgџ^@ZџS8PџJ1GџB,?џ?*=џ>*<§>)=љ?*=ї?*=ї?)<ћ@+>џK4IџaF^џ‚`~џ•mџ&%џ џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ1 /щ?*=џџџџџџџџџџџџџџџџџџџџџ?*<?*=ЫB,@џJ1HџE-Bџ?*=§>*=ё?)=п>)<Н?*<›?*=}>*<_?)*<9>)=+?*>%?*='?)<3?*)=u?*<С@+>љcG`џVNUџ:::џ643џ.-,џvtpџ889џRQOџNPQџdcaџ&&&џџ""!џ=>?џVTQџWURџ(+,џџABCџutpџ<<=џZYVџLLLџ222џWVSџ987џ##"џџQPPџ?ABџhhkџ58:џ987џ1 /ч>)=џџџџџџџџџџџџџџџџџџџџџџџџ>)=?*<_>*<{>**<9>*=@)=џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ@+>>)=Q?*=ѓ##џџ џџџџџџџџџ џ'''џ010џ---џџ џ.-,џџџџџџџ)*+џџџAA@џџ9::џџ444џ0 .н?)=џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ>*=Ё;58џ џџ9;?џ<96џ.//џ.00џ(+,џ џ@ACџ0//џ%'(џ111џ888џџ џџ'''џ::9џ556џ974џ???џBDEџџ###џџ;:9џџџџџTRPџ,+Џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ?*<a[_џ"')џ џ<=<џPKEџLRSџSVWџ8:<џџ3/,џINNџ367џ000џ555џџ###џEEEџGHIџ@@?џDDFџ133џ567џCB@џџ:::џGHHџ799џ789џ222џџџ:;<џ@:@aџџџ-џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџU]/..>*<ЙEAFџџџџџџџџџџџџџџџ џ џџ$$$џџџџ!!!џџ џџџџ*)(џџџ џШШШяџџџљўўўГџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџwёџџћС7%5ѓldeџa^]џMNMџLOPџ†zџKHEџyrkџTTUџ?@@џџџ'+,џџVTRџNUXџ068џџ111џ1.,џGKKџ123џ111џ222џџ554џDFEџeffџџ897џ678џ+++џ111џНННџџєєєџџџџЙўўўџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ‹џ{{{џмммџчччџЈЈЈџ%%%џ  џ  џ!!!џџџџџџџџџџџџ10-џ$""џ џџ!!!џ.--џ џџџџџџџ!џџџџџ џ(((џџрррџџџџУџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџSћ–––џыыыџыыыџыыыџыыыџзззџ---џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџШШШџўўўёџџџ7џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўўў%ўўў!ўўўўўў џџџ зWWWџыыыџьььџэээџэээџэээџэээџХХХџџ-+џeB`џeB`џeB`џeB`џeB`џeB`џ<'9џџ~~~џГГГџГГГџГГГџГГГџГГГџ|||џџs==?vvvsЛЛЛчСССџПППџЎЎЎџ’’’џgggџ,,,џџ...џдддџџџџѓџџџOџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўўўoџџџћџџџ§џџџэўўўлџџџЩŒŒŒС џШШШџюююџюююџюююџюююџяяяџяяяџяяяџwwwџ  џyOtџ…Wџ…Wџ…Wџ…WџzPtџ џ^^^џыыыџэээџэээџэээџэээџэээџчччџ999џБџџџџџџ]џџџѕцццџ‡‡‡џ:::џџџџ111џxxxџъъъџџџџщџџџIџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџПиииџkkkџџЉЉЉџХХХџFFFџFFFџяяяџ№№№џ№№№џёёёџяяяџ№№№џёёёџёёёџиииџџM2Jџ…Wџ…Wџ…Wџ„WџC,@џџзззџ№№№џяяяџяяяџяяяџяяяџяяяџюююџŸŸŸџї!ўўў5ўўўїСССџџџWWWџ’’’џЦЦЦџцццџќќќџџџџїџџџЙџџџ+џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџеЋЋЋџџџџџџ“““џђђђџђђђџэээџ~~~џ$$$џ---џ‘‘‘џ№№№џђђђџYYYџџƒU}џ…Wџ…Wџ~Rxџ џuuuџђђђџ№№№џџ???џjjjџлллџёёёџ№№№џрррџџgџџџНфффџџOOOџуууџўўўџџџџэџџџХџџџ•џџџ]џџџ!џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўўўхџџџџџџЪЪЪџєєєџєєєџ‚‚‚џџџџџˆˆˆџєєєџЈЈЈџџwNrџ…Wџ…Wџ[;Vџ џбббџѓѓѓџЄЄЄџџџџ+++џрррџђђђџђђђџBBBџ333Эўўўљ|||џџюююџџџџЫџџџEџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџїsssџџџџџџэээџіііџђђђџ###џџџџџџцццџлллџ џ[;Wџ…Wџ„V~џ0.џ<<<џѕѕѕџѕѕѕџVVVџџџџџoooџєєєџєєєџqqqџ222џќќќџ111џoooџџџџџўўўуџџџgџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ/џџџџWWWџџџџџ+++џїїїџїїїџьььџџџџџџџШШШџіііџ'''џA+?џ…WџU|џ џ‚‚‚џїїїџїїїџLLLџџџџџџяяяџіііџ“““џџDDDџџNNNџ™™™џзззџџџџуџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўўўIўўўџ:::џџџџџ???џљљљџљљљџљљљџ888џџџџџџвввџњњњџLLLџ.,џ„V~џuLpџџЛЛЛџљљљџљљљџyyyџџџџџџрррџїїїџЇЇЇџџџџџџœœœџџџџлўўў џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџeљљљџ$$$џџџџџHHHџњњњџћћћџћћћџЋЋЋџџџџџ;;;џїїїџћћћџgggџ! џ„V~џ^>Zџ џпппџњњњџћћћџгггџ џџџџџюююџљљљџЏЏЏџџџџџџИИИџџџџЧџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџыыыџџџџџџEEEџћћћџќќќџќќќџќќќџџ$$$џџAAAџиииџќќќџћћћџwwwџџƒV}џN3Jџџїїїџћћћџќќќџќќќџ•••џџџџyyyџћћћџњњњџЌЌЌџџџџџџбббџџџџ­џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ›нннџџџџџџ777џћћћџћћћџќќќџќќќџќќќџѓѓѓџчччџљљљџћћћџћћћџћћћџ{{{џџƒU}џC+@џ'''џћћћџћћћџќќќџќќќџ§§§џХХХџ|||џžžžџіііџќќќџћћћџџџџџџ џуууџџџџ‘џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўўўЗЩЩЩџџџџџџџљљљџњњњџњњњџњњњџњњњџњњњџњњњџњњњџњњњџљљљџљљљџtttџџƒV}џ=(:џ333џњњњџњњњџћћћџћћћџћћћџќќќџќќќџќќќџќќќџћћћџћћћџ‚‚‚џџџџџџєєєџџџџuџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџЯ­­­џџџџџџ џцццџјјјџјјјџљљљџљљљџљљљџјјјџјјјџјјјџјјјџїїїџaaaџ#"џ„V~џ=':џ333џјјјџљљљџљљљџљљљџњњњџњњњџњњњџњњњџњњњџњњњџњњњџ\\\џџџџџ***џўўўџџџџ[џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўўў џџџпЦЦЦџ___џ;;;џџџџџПППџїїїџїїїџїїїџїїїџїїїџїїїџіііџіііџіііџіііџCCCџ2!0џ…WџB+?џ'''џіііџїїїџїїїџјјјџјјјџјјјџјјјџјјјџјјјџјјјџїїїџ+++џџџџџFFFџџџџџџџџ?џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ‰џџџїџџџ§ъъъџ џџ‹‹‹џџ„„„џѕѕѕџѕѕѕџѕѕѕџѕѕѕџѕѕѕџѕѕѕџєєєџєєєџєєєџюююџџH/Eџ…WџO3Kџџ№№№џѕѕѕџѕѕѕџіііџіііџіііџіііџіііџіііџіііџзззџ џџџџџcccџџџџћўўў'џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўўўџџџ{ьььџџџЁЁЁџ^^^џ999џђђђџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџђђђџђђђџЪЪЪџџeB`џ…Wџb@]џџгггџѓѓѓџєєєџєєєџєєєџєєєџєєєџєєєџѕѕѕџѕѕѕџ•••џџџџџџџџџџэџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџSјјјџџџŒŒŒџЕЕЕџџЦЦЦџёёёџёёёџёёёџёёёџёёёџёёёџёёёџ№№№џ†††џ  џ}Rxџ…WџzPtџџЅЅЅџёёёџђђђџђђђџђђђџђђђџѓѓѓџѓѓѓџѓѓѓџ№№№џ===џџџџџџ›››џџџџсўўў џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ3џџџ§333џџbbbџѕѕѕџ'''§___џюююџяяяџяяяџяяяџяяяџяяяџяяяџшшшџ///џ4!1џ„V~џ…WџƒV}џџ___џяяяџ№№№џ№№№џ№№№џ№№№џёёёџёёёџёёёџКККџџEEEџџџHHHџ000џРРРџўўўЯџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўўўџџџэiiiџџ###џ§§§џ–––ы џЙЙЙџэээџэээџэээџэээџэээџэээџџџiEeџ…Wџ…Wџ…WџG.DџџлллџюююџюююџюююџюююџюююџяяяџъъъџDDDџ<<<џmmmџџџўўўџўўўџўўўџџџџ—џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџПАААџџџШШШџїїїэЫ)))џеееџыыыџыыыџыыыџыыыџаааџџ2 0џƒV}џ…Wџ…Wџ…Wџ{Ruџ  џzzzџьььџьььџьььџьььџэээџэээџŒŒŒџ џЛЛЛџ---џџZZZџџџџћџџџiўўўWџџџ џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўўўmіііџџџ]]]џџџџџЪЪЪ“л+++џКККџщщщџщщщџОООџ***џџzPuџ…Wџ…Wџ…Wџ…WџŽd‰џK7Iџ џВВВџъъъџъъъџыыыџыыыџЃЃЃџ џ{{{џНННџџџЎЎЎџџџџеџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџяџџџЭЭЭџџџџы………EУџ)))џ+++џџџ„aџˆ[‚џ…Wџ…Wџ…Wџ…Wџ”lџbF^џ ћџƒƒƒџЯЯЯџУУУџhhhџџaaa§іііџGGGџџџіііџџџџwџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџёёёџџџ:::џѕѕѕџџџџХЮЮЮI‰‹B-@џŒgˆџa‡џ…Wџ…Wџ…Wџ‹`†џj‹џF0Dџ:&8w‹ё§§у{{{Щ§§§џЄЄЄџџџ˜˜˜џџџџёџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџщЌЌЌџџџkkkџњњњџўўўГџџџџџџџџџ>)=?*=эrRnџ“jŽџ…Wџ…Wџ†X€џ•lџoPkџ?)=щ>*<џџџ?7ъъъ[ўўўїаааџџџ;;;џїїїџџџџ}џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ]§§§§pppџџџxxxџљљљџџџџХўўў'џџџџџџ?*<“M5Jџ’kџcˆџˆ[‚џ’iџŒf‡џF/Cџ>*<ƒџџџџџџџџџџџџџџџmўўўљиииџ###џџџгггџџџџгўўў џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ™іііџVVVџџџbbbџюююџџџџэџџџsџџџ?))=пN:L/џџџџџџYџџџГџџџїюююџ{{{џ џџџЎЎЎџўўўїџџџWџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџБјјјџ‰‰‰џ џџџBBBџЏЏЏџѓѓѓџўўў§вЮв§‚tџn^lџ•Š”§чхчзџџџнџџџѓўўўџтттџ‰‰‰џ џџџ)))џШШШџўўўѕџџџ_џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўўў џџџ‹ўўўћЮЮЮџCCCџџџџџSSSџ‰‰‰џЏЏЏџУУУџШШШџНННџЃЃЃџyyyџ???џ џџџ џwwwџ№№№џџџџхўўўGџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџIџџџлќќќџНННџKKKџџџџџџџџџџџџџџqqqџнннџўўўџџџџЏџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ ўўўoџџџсџџџ§шшшџ   џaaaџ777џџ џџ џџAAAџtttџЕЕЕџїїїџџџџћџџџУџџџCџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўўўџџџSџџџЇџџџхўўўљўўўџџџџџїїїџђђђџњњњџџџџџџџџџџџџѕџџџеџџџўўў7џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ-џџџQџџџsџџџ…џџџ‰џџџџџџkџџџIџџџ!џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ(€ џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџi­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­Gџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ<872200,,, +++ +++ +++ &&& %%% %%% ### """ #"" +!! -!! џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџgџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ ,,))'''###" 4' 21 ..& .,+ ,,) ((% %%%$$$/%#1/!00 --$.,(2))3-(11'00&..%--$,,+,++,**++*-+)3+)Ѓ џџџџџџџџџџџ џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџgџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ  7!--' ))) $$$ & 00 2,)/+'--&))).('1.$--$/,)3-)11'//%-,+0.,2.*0.(3/'!10%#40.*%1/*%0/)%2/('1/*'00*'//*)1/,)2.+)40+)30++30*+ЋQTUџ $&џABBџџџџџџџџџUUUџdddџMMMџ………џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџgџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ)&&&$# .- ++' '&%0'!-,'1-&-,&0*)1/&2-)10)0/)!1.*#2/*%0/('20()21*)1/*+//*-30,-21+/31+131*122)320)511+530*73/*720*931,951,941,;40,=42,?32,A31,C41,C30+C30+Coj`Е‚џIIHџžŸ џZcjџ@;4џijjџ/7;џ59=џџџџAAAџџџ___џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџgџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ "((( /"" --'+)'.+%11(0-*2.(!10)#20)'1-*)2/*+30)-30*/1/+340-331+721*731*930,;20+=40*?31,?32,A30,G7//W7.2c8-5o:-6{:-6…;,7<+8™=+9Ÿ<+9Ѕ=+9Љ=+:Џ=+:Г<+:З<+:Й=+:Й=+9Й=+9Й=+:ЙupvуH@<џIA>џfn}џhjjџPPPџ<<<џIJIџPG>џŒŽџџџBBBџџџ```џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџiџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ%(( **".-#-,'00(/.)%1.'+2/*/20*130)510*730+;31+=21*?40,A51+E60.Q7/2_8.4m9-4y:,6‰<,8Ё=+:Е>+;Ы>*<й>*<щ>*<ё>*<ѓ>*<ѕ>*<ї>*<љ>*<љ>*<ћ>*<§?*<§>*<§?*=џ>*<џ?*=џ?*=џ?*=џ?*=џ?*=џ?*=џ?*=џ0"&џUXZџџZVOџ&,1џ џKKLџ џ+05џ џџџBBBџџџ```џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџk џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ (#" ,,!//%/.'!/.('00+/20,511+;31+?21+C32+E42+I31+K31-S8.2q<,7™=+9Е=+;Э>*;н>*<я>*<љ?*=џ?*=џ?*=џ?*=џ?*=џ?*=џ?*=џ?*=џ?*=џ?*=џ?*=џ?*=џ?*=џ?*=џ?*=џ?*=џ?*=џ?*=џ?*=џ?*=џ?*=џ?*=џ?*=џ?*=џ?*=џџџџџџџџџџџџџ@@@џџџ]]]џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџo&&  џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ### -&!0.&10(!3.(+21(521)=22+E21+I31,Q6/0e:-4…<,8Ћ=*;г>*<ї?*=џ?*=џ?*=џ?*=џ?*=џ?*=џ?*=џ?*=џA+?џF.CџK1HџO5LџS8PџW;Tџ\?YџbD_џgGdџlKiџpNlџuQpџyTuџ~XyџZ{џƒ\~џ…^џˆ`ƒџŠb…џŒdˆџŒdˆџŒdˆџŒdˆџŒdˆџ8(6џџџџџџџџџџџџ***џ```џ```џHHHџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџs*& '' џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ! **.-)10)%2/(/30*;30+C5/-S8-4u=+9Л>*;н>*<ѕ>*<џ?*=џ?*=џ?*=џA+?џB,@џE.CџN4Lџ\=XџhGdџsOoџ{Vvџ€[|џ‡a‚џ‹d†џŽg‰џ‘iŒџ”kŽџ•lџ•mџ•mџ–n‘џ–o‘џ—o’џ—o’џ—o’џ—o’џ—o’џ—o’џ—o’џ—o’џ—o’џ—o’џ—o’џ—o’џ<,:џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџs-) $$! џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ$$$ ,(!0,'1/(#2.)-5/-E;,7‰=*;б?*=ћ?*=џ?*=џ?*=џ@*=џH0EџU9RџcC_џtQpџZ|џŽe‰џ“jŽџ–n‘џ—o’џ—o’џ—o’џ—o’џ—o’џ—o’џ—o’џ—o’џ—o’џ—o’џ—o’џ—o’џ—o’џ—o’џ—o’џ—o’џ—o’џ–o‘џ–n‘џ•mџ•mџ•mџ•mџ•mџ•mџ•mџ;+9џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџs,%(( џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ""+%% /-"3.+;*7]>*;Щ>*<ї?*=џ?*=џB,@џK2Hџ_@[џwRrџ‡`џhŠџ”lџ–n‘џ—o’џ—o’џ—o’џ—o’џ–n‘џ–n‘џ•mџ•lџ”lџ”kџ“jŽџ‘hŒџf‹џd‰џŽcˆџb‡џŒa†џ‹`†џ‹_†џŠ^…џ‰^„џ‰]„џŠ^„џ‰]„џ‰]„џ‰]„џ‰]„џ‰]„џŠ^„џŠ^„џ7%5џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџo(( џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ + 4),=*;y>*=я?*=џ?*=џC-AџW:SџuQqџ‹c†џ•lџ–o‘џ—o’џ—o’џ—o’џ—o’џ–n‘џ•lџ’iџf‹џŽd‰џŒb‡џ‹`†џŠ^…џˆ\ƒџ‡Z‚џ‡Z‚џ‡Z‚џ‡[‚џ‡[‚џˆ[‚џˆ[‚џˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџ6$4џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ џџџџk"" џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ$>*;>*<ѓ?*=џB,@џX;Uџ€Z{џ‘iŒџ–n‘џ–n‘џ—o’џ–n‘џ•lџ“jŽџg‹џŒa‡џŠ^„џ‰]ƒџˆ]ƒџˆ\ƒџ‡[‚џ‡[‚џ‡[‚џˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџI8Gџџџџџ џ""!џџ###џ"%'џџ#$$џџџџџџџџ-+(џџџџџ(&"џџџџџ'((џџџџџ/#џ џ(((џ###џџ" џ џџџџ*-+џ џџџџ$"џ"%џџ џџџџџџџџ\_^џџ^__џџi џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ=*:3?*<ё?*=џB,@џlIgџgŠџ–n‘џ—o’џ—o’џ–n‘џ’iџŽcˆџŠ_…џˆ\ƒџˆ[‚џˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџŸџQTVџџ]]]џџYUNџ•”’џ?@@џaYSџšЅЌџ!џ}zwџ\gnџџџџXWUџ444џџ}yџ!"!џPPPџџџ{xsџџ***џ џPPPџXUUџEJOџ џџџddbџџxxxџ;;;џ765џ`^[џMKJџpy{џџџDEEџџџџџuqmџnrvџ>>>џ%%%џџџџџmjfџ()(џ0 џq}€џ&,1џuuyџ_dhџgџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџA+<?*<Ё?*=џA+?џnLjџ“lŽџ–n‘џ–o‘џ•lџfŠџŠ_…џˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџ€n~џ%џTaeџY\bџ;:9џ>;6џOPNџ279џstoџB=:џ886џTTQџ)%"џџџ%%#џ>?@џџ+*)џxxxџџVZbџ753џџ___џџџwwwџAAAџ&$"џMRRџ џџџ_``џџˆˆˆџ___џFFEџEDCџ5/+џ™ Єџ___џ:::џBBAџџџџџhe`џ_egџ00/џDJTџ'$џџџџ|||џ џWVRџ<<;џ468џhltџSY\џgџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ?*<?*<Щ?*=џL3IџŽf‰џ–n‘џ–n‘џg‹џ‰]ƒџ†Y€џ†Yџ‡Zџ‡[‚џ‡[‚џ‡[‚џ‡[‚џ‡[‚џ‡[‚џˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџ‚q€џ^]^џ,48џџџџ"""џџџ!$џџ'&$џ џџџ џGD@џBEHџ)*,џYYYџџџџџ```џџџџ>>>џ`abџ"(.џџџџeb]џџfffџ```џ;:8џUPKџADGџ[`dџ```џ9::џAEFџџџџџџџџџџџџ џ[[[џ џџ џ џ*($џ џgџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ?*='>*=е?*=џV:Sџ”lџ—o’џ’hџ…Xџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…X€џ†X€џ†Y€џ†Zџ‡Zџ‡Z‚џ‡[‚џ‡[‚џˆ[‚џˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџ6$4џџџџџџџџџџџџџџџџџџџ6:=џ џџџ888џџџџџџџџџџџ џ џџџџџџџџџџџџџџџџџџџџџџџџџџџџџgџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ>)<%?*<б?*=џT8Qџ”kџ—o’џ‘gŒџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Xџ…X€џ†X€џ†Yџ‡Zџ‡Zџ‡Zџ‡[‚џ‡[‚џ‡[‚џ‡[‚џ‡[‚џ‡[‚џ‡[‚џ‡[‚џ‡[‚џˆ[‚џˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџsbqџ```џ<<<џ&&&џ***џџLE<џ../џ3.'џ@FKџџџџTTTџLLLџџџ***џ,& џˆŽ“џ$'*џџџ;;;џZZZџџ***џ***џџHA8џ223џ/*#џBHLџџџџ?80џQW\џџD@;џ*17џџ]VMџ&&&џjjjџ444џџDMFџџ72+џџ```џjjhџQGBџ0*'џџџџ^^^џџ_`cџ```џџbehџџ‹ˆƒџrlfџ655џ000џџZYVџ‡ƒџEBAџJIIџ џџbehџџAAAџџ<, џcmiџ!.џŽˆџslfџџџџUWXџkppџ456џ567џ```џ€~yџea\џџQTTџџ  y@*<џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ?);?)<Х?*=џM3Jџ’iџ—o’џ“jŽџ…Xџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…WџŽ|Œџ999џ(((џŒŒџensџ000џžžџ---џrj`џqz‚џ***џikkџAA@џTTTџ999џ)**џ||{џS\aџSKAџ€€€џ++*џџџ888џTTTџџџirvџ,,,џџ111џme[џqzџ*++џikkџEFEџ31/џv{џ))'џfb\џJJJџ@@@џžžžџ%%%џmmmџџDGFџ010џ575џvneџlv}џџџџqkbџqstџ?@@џ€€џOX^џ[SIџqx~џџMMMџџ е=+< џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ?(<?)<Л?*=џH0Fџg‹џ—o’џ”lџ†X€џ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџm[kџBBBџ***џџџџ,,,џџџџџџџџџџџџџџџџџџџџџџџ,,,џџџџџџџџџџџџџ+++џџџ џџџџџџџџџџџ+++џ778џџџџџxxxџџ%$џ?)=AџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџC,C?*=Џ?*=џF/DџŠb…џ—o’џ–n‘џ†X€џ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ†X€џ‡Zџ‡Zџˆ[‚џˆ\‚џ‰\ƒџ‰\ƒџ‰]„џ‰]„џ‰]„џ‰]ƒџ‰\ƒџˆ\ƒџˆ[‚џ‡Zџ†X€џ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ5"2џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ џџ%$џ?*=‹џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ?*=?*=џD-Bџ‚\}џ–o‘џ—o’џˆ[‚џ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ†X€џˆ\‚џ‹_…џb‡џeŠџ‘g‹џ’hџ“jŽџ”kŽџ”lџ•lџ•mџ–n‘џ–n‘џ–n‘џ–n‘џ–n‘џ–m‘џ•mџ”lџ“jŽџ‘hŒџeŠџŒa‡џ‰\ƒџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ5"2џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ%$џ?)<Г@(; џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ?)=s?*=џB,@џvQqџ–n‘џ—o’џŒ`†џ†X€џ‡Zџˆ\ƒџŠ^„џŒa‡џeŠџ’hџ”lџ–n‘џ—o’џ—o’џ—o’џ—o’џ—o’џ—o’џ—o’џ—o’џ—o’џ—o’џ—o’џ—o’џ—o’џ—o’џ—o’џ—o’џ—o’џ—o’џ—o’џ—o’џ—o’џ—o’џ—o’џ—o’џ•mџ‘hŒџ‹`†џ‡Zџ…Wџ…Wџ5"2џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ%$џ?)<Ч?)<џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ@*)<Я>))=>)=Ѕ?*<§@+>џgFcџ‹d†џi‹џh‹џŒe‡џ‡_‚џYzџsOnџeDbџX*=љ>)=ѕ>)=ё?*=я?*=я?*=я?*<ё?)<ѕ?*=ћ?)=§?*=џ?*=џ?*=џB,@џI3Gџ^E[џ€_{џ“lŽџ–o‘џI9Gџџџџ џџџџ џџџџџ џџџџ џџџџџџџџ џџџџџ џџџџ џ џџџџџџџџџџџџџџџџџџџџџџџ џ џџџџџ%$џ?*=е?*='џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ?)џM2IџW9SџV9RџN4KџG/Eџ@*>џ?*=џ?*=џ?*=џ?*=џ?*=џ?*=џ?*=џ?*=џ?*=џ?*=я?*=з>*=Н>*<Ѕ?*<‘>)<ƒ>*=u>*=i>*=]?)=O?*>I?*>I>*=K?*)<]>*=m>*=}?*<™>)<П?*=ы?*=џ?*=џ?*=џD/BџeIaџiŠџŠzˆџJJJџ---џgggџ999џ3/+џMJGџџTNDџCBAџ)))џ)))џ@@@џ678џfhhџ'%"џTOHџ+**џџ^^^џџџџ42.џCDEџFHKџGGGџOIAџeb]џQMHџ=EGџ џџџJIHџDHMџWSKџECBџ!!!џ222џIIIџ?90џFECџџ@@@џџHHDџ`aaџ;:9џ)'$џ\ZXџџџџGGGџџ$" џZYXџd`^џgjoџSX[џџB?;џBBAџ&$џ>*<г?*<'џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ@,<?*=_>)=х?*<§?*=џ?*=џ?*=џ?*=џ?*=џ?*=џ>)<ћ>*=ы>*=н?)=Э?)=Е>)<>)*<+?*=?*=>*=>*< @*9<&8џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ=2=?*<>)<?(>?)=W?*<Ћ?*=ы?*=џ@+>џY?Vџ~q}џџџRRRџ###џHFEџ877џџ ˜џЂЄЅџ<)=Э>)=џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ=)=>)==?)<™?*<г?*=ы>)<ы>)<Я?*<Ћ>*<>**=G>*=-@)=џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ@+>?*=O>)=Я?*=џ@+>џlckџџџ===џџџ<;:џџ50*џ28=џ"""џCDCџ#(+џ63/џ<<<џџ:73џ &*џџ===џџџџB;5џ]]^џ656џЁŸџџ‘‘‘џџRRRџџџ%"џb`^џKJJџ72,џ49=џџIIHџ,25џ% џ69<џџ<==џ:;:џџ579џџ000џ000џџџџ‘‘‘џgeaџ=KSџџ)))џvxxџ59<џ џNNNџџ%$џ?*=У?*=џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ?)<?*< ?*= ?*= >*<?*<>,;џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ>)<%>*=б>*<џџџџџ џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџaaaџ џџџџџџџџџFFFџџџeeeџ џ%$џ>)<Џ=%=џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ='=>*=o>*=љџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ&$џ?)<‡џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ>+>1>*=ыK@Eџ‚€}џ&/6џџџIIIџ•™џEKSџvogџpkiџGNRџkgeџWZZџX[\џca_џ7CKџ322џџhhhџ‹‘—џDFKџtniџfddџ)16џšššџ!!!џbbbџrrrџџџџ%%%џ???џ221џ888џ^^^џoiaџpv{џ367џ———џ345џЇŸ•џЉЉЊџIHGџ~yuџŒ”џџџџŠŠŠџ)-1џC>8џ•“џNNNџdddџџџojbџ==>џџџџЁ›“џЂЂЁџ%$§?*<9џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ?+<%?*<щmfkџ@;Bџ[dfџџџџ4-'џ9?Bџimlџџvƒˆџ=@:џ@@?џhkkџffdџ&/7џџџ џH=3џ5AJџ[_Zџ-)%џ4=@џ___џџ555џ)))џџџџ###џ;;;џ8 џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ>*<7?*<эNFNџ‰„џ/8@џџџ%%%џIGEџ:@Cџ[VPџ`TLџ(6@џUPJџ>@BџhmpџKKKџ џџџ444џHDBџ*>>*=‘?*=џ8+.џ‰•џ,38џџџ џ>>>џ џ&"џ9AFџџ??>џ#џџ:?Cџ џџџџџ џQQQџLLLџџ888џџA;5џ%-џџABCџ џџџџ3'џ џ??@џSRQџ**,џ40-џ&-џџSSSџџ:::џJJJџџџџ"џ2:@џџџџџџџ;73џ&џ!!!џTTTџџ./0џ џ™™™џџџџџџџџџџџџџџџџџџџџсџџџeџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ ]Ыїџџџџ§ѓЙ [=);г?*=џmemџQIDџJB>џqqqџ,,+џMOPџABAџEGGџiheџ‹zrџ997џEC@џug`џuqjџSMGџ0/.џ:::џџџџ џ]YSџ:>@џџHHHџџBGJџobVџ2DRџGECџ[^_џ џџџcc`џџD:0џRY]џ..-џTTOџQF=џ$,џbbbџџCCCџ%%%џ џ џџomhџI7'џSgtџutsџuuuџџџ-+*џIJEџSKEџ(/џWWWџџRSRџџ™™™џћћћџЩЩЩџэээџўўўџџџџџџџџыўўўWўўўџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџƒѓџџџ џџџџџџѓ%#§=);џl^_џ…„„џKJIџ|||џDDCџwxvџqqrџ:@Eџ|umџІЄЂџ73.џwtqџtrpџ…}sџ–žЄџ689џvxxџNOMџџџџџABCџ),џџџrpnџ799џw…‡џGFFџTbdџ џџџ__`џџџ+&#џP_dџHLKџ1*+џ)46џ^^^џџAAAџџџ)))џџdhhџ џ\noџcjjџGFDџџџ)*+џ?CAџ946џ,46џRRRџџNMMџџ™™™џШШШџ'''џVVVџеееџџџџџџџџџўўўЅџџџ џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ Љ§џџ___џИИИџцццџщщщџтттџ›››џEEEџџџџ"!џџџџ€€€џeebџ џџџџ```џџ џTTTџџџџџџџџ џghhџWVVџ џџџe_Uџba`џ.))џca_џ55<џџџџb\Rџ џRSRџfdcџ%-1џ\VPџRVWџ џcccџџ]]]џџџџџWMDџinmџџ1%џTUUџџџџ]XUџKOOџ)),џVVVџџRTTџџoooџ"""џџ џ•••џџџџџџџџџџџџЋџџџ џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ }ћџ џšššџтттџщщщџщщщџщщщџщщщџщщщџзззџ}}}џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ џ џџџџџџџџџџџџџџџџџџџџџџџџџџџџџ џџџdddџяяяџџџџџџџџїџџџkџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ[ѓџџЙЙЙџъъъџъъъџъъъџъъъџъъъџыыыџыыыџыыыџъъъџžžžџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџQQQџёёёџџџџџџџџџџџџЇџџџ џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџгџџ˜˜˜џыыыџыыыџыыыџыыыџыыыџыыыџыыыџыыыџыыыџыыыџчччџ‘‘‘џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ\\\џтттџџџџџџџџ§ўўўЧџџџ'џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџƒћџjjjџхххџьььџьььџьььџьььџьььџьььџьььџьььџьььџэээџэээџъъъџlllџџџ  џD,AџE-BџE-BџE-BџE-BџE-BџE-BџE-BџE-BџE-BџE-BџE-BџE-BџE-Bџ$"џџџџoooџzzzџzzzџzzzџzzzџzzzџzzzџzzzџzzzџzzzџzzzџvvvџџџ§Ѓ{{{{{{{{ TTTЗљ„„„џ„„„џ„„„џ„„„џ„„„џ„„„џ„„„џ„„„џ„„„џƒƒƒџaaaџ///џџџџ џkkkџёёёџџџџџџџџџўўўгџџџ/џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ џџџ7џџџYџџџKџџџ9џџџ-џџџ#џџџџџџџџџџџџџџџ)сџџзззџэээџэээџэээџэээџэээџэээџэээџэээџэээџэээџэээџэээџэээџвввџ<<<џџџ`?\џ„V~џ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…WџvMpџ џџџџъъъџьььџьььџьььџьььџьььџьььџьььџьььџыыыџыыыџъъъџƒƒƒџџџЋџџџџџџџџџџџџџџџўўўџџџ/џџџЃџџџяџџџ§џџџџџџџџўўўџѕѕѕџсссџЭЭЭџГГГџ‹‹‹џ___џ444џџ џџџџ———џѕѕѕџўўўџџџџџџџџЭџџџ7џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџƒџџџыџџџџўўўџџџџѕџџџхџџџгџџџСџџџБџџџџџџ‡џџџm???›џџzzzџьььџюююџюююџюююџюююџюююџюююџюююџюююџюююџюююџюююџюююџюююџюююџЄЄЄџџџ+)џ|Qwџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ€Tzџ;&8џџџhhhџуууџэээџэээџэээџэээџэээџэээџэээџэээџэээџьььџьььџьььџжжжџ;;;џџэ;џџџџџџџџџџџџџџџџџџ=џџџзџџџ§џџџџџџџџџџџџвввџџVVVџ555џџџџџџџџџ'''џВВВџћћћџџџџџџџџџџџџгўўў1џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџAџџџїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ§ъъъћ...§џ%%%џЬЬЬџяяяџяяяџяяяџяяяџяяяџяяяџяяяџяяяџяяяџяяяџяяяџяяяџяяяџяяяџяяяџюююџEEEџџџ`>[џ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ^=Zџџџ+++џтттџюююџюююџюююџюююџюююџюююџюююџюююџюююџэээџэээџэээџэээџэээџЈЈЈџџџ џџџџџџџџџџџџQўўўуџџџџџџџџѓѓѓџЊЊЊџDDDџџџџџџџџџ+++џKKKџyyyџХХХџѓѓѓџўўўџџџџџўўў§ўўўЇўўў!џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџqџџџ§ўўўџсссџЧЧЧџфффџѕѕѕџјјјџљљљџћћћџ§§§џўўўџЕЕЕџџџ```џэээџ№№№џ№№№џ№№№џ№№№џ№№№џ№№№џ№№№џ№№№џ№№№џ№№№џ№№№џ№№№џ№№№џ№№№џ№№№џ№№№џЁЁЁџ џџ1 /џ„V~џ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ‚U}џ'%џџ џ™™™џяяяџяяяџяяяџяяяџяяяџяяяџяяяџяяяџяяяџюююџюююџюююџюююџюююџюююџуууџ***џџс!џџџџџџўўўџџџнџџџџўўўџчччџfffџџџџџџџBBBџxxxџЄЄЄџТТТџиииџѕѕѕџўўўџџџџџџџџџџџџџџџџѓўўў“ўўўџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ§§§џƒƒƒџџџџ111џKKKџeeeџџ–––џQQQџџџЖЖЖџёёёџёёёџёёёџёёёџёёёџёёёџёёёџёёёџёёёџэээџ№№№џёёёџёёёџёёёџёёёџёёёџёёёџпппџ>>>џџ  џsKnџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ„Wџ]=YџџџMMMџуууџ№№№џ№№№џ№№№џ№№№џ№№№џ№№№џ№№№џ№№№џ№№№џ№№№џ№№№џяяяџяяяџяяяџяяяџюююџџџџaџџџџџџџџџЇџџџџўўўџнннџBBBџџџџIIIџˆˆˆџЫЫЫџіііџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўўў§џџџпџџџ­ўўўGџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўўўџџџЁџџџџћћћџiiiџџџџџџџџџџџ'''џмммџёёёџёёёџђђђџђђђџђђђџђђђџцццџАААџWWWџ999џCCCџrrrџЦЦЦџэээџђђђџђђђџђђђџђђђџ………џџџN3Kџ„V~џ…Wџ…Wџ…Wџ…Wџ…Wџ…WџSyџ2 0џџџАААџёёёџёёёџёёёџёёёџъъъџФФФџ‡‡‡џwwwџІІІџиииџяяяџ№№№џ№№№џ№№№џ№№№џ№№№џ№№№џКККџџџЇџџџMџџџёџџџџђђђџ\\\џџџ---џЄЄЄџьььџўўўџџџџџџџџџџџџџџџџџџџџ§ўўўѓџџџщџџџгџџџџџџYўўў+џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўўўГџџџџњњњџOOOџџџџџџџџџџџ^^^џыыыџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџпппџ]]]џџџџџџџџщщщџѓѓѓџѓѓѓџѓѓѓџзззџџџ,*џ~Rxџ…Wџ…Wџ…Wџ…Wџ…Wџ…WџoHjџ  џџ777џьььџђђђџђђђџђђђџъъъџyyyџџџџџ***џЂЂЂџыыыџёёёџёёёџёёёџёёёџёёёџхххџ777џџзџџџЕџџџџџџџџЂЂЂџџџ888џиииџџџџџџџџџџџџџџџџџџџџяџџџЩџџџЁџџџ{ўўўMџџџ'џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџХџџџџјјјџ444џџџџџџџџџџџŽŽŽџѓѓѓџѓѓѓџѓѓѓџѓѓѓџєєєџщщщџcccџџџџџџџџ џuuuџьььџєєєџєєєџюююџ>>>џџ џsKnџ…Wџ…Wџ…Wџ…Wџ…Wџ…WџH/Dџџџџђђђџѓѓѓџѓѓѓџ№№№џџ џџџџџџџŠŠŠџэээџђђђџђђђџђђђџђђђџёёёџkkkџџы^^^iўўўэџџџџъъъџ???џџџРРРџ§§§џџџџџџџџэўўўБџџџWўўў)ўўўўўў џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўўў%џџџеџџџџіііџџџџџџџџџџџџДДДџєєєџєєєџєєєџєєєџѕѕѕџЖЖЖџџџџџџџџџџ џДДДџѕѕѕџѕѕѕџєєєџџџџ`?\џ…Wџ…Wџ…Wџ…Wџ…WџSzџџџ"""џЬЬЬџєєєџєєєџєєєџсссџ...џџџџџџџџџАААџѓѓѓџѓѓѓџѓѓѓџѓѓѓџђђђџŸŸŸџџ§ŠŠŠсўўўћџџџџИИИџџџ[[[џ§§§џџџџџџџџёџџџSџџџ џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ/ўўўчџџџџяяяџџџџџџџџџџџџкккџѕѕѕџѕѕѕџѕѕѕџѕѕѕџѕѕѕџZZZџџџџџџџџџџџBBBџыыыџіііџіііџЏЏЏџџџ?)<џ…Wџ…Wџ…Wџ…Wџ…WџfCbџ  џџVVVџѓѓѓџѕѕѕџѕѕѕџѕѕѕџНННџџџџџџџџџџ444џрррџєєєџєєєџѓѓѓџѓѓѓџЭЭЭџџџtttџћћћџџџџџџџџКККџџџџџџџџџџџџыџџџЁџџџSџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ9џџџїџџџџйййџџџџџџџџџџџ***џёёёџіііџіііџіііџіііџшшшџ444џџџџџџџџџџџџТТТџїїїџїїїџбббџ$$$џџ%#џ„Wџ…Wџ…Wџ…Wџ„V~џM2Iџџџšššџіііџіііџіііџіііџ™™™џџџџџџџџџџџЈЈЈџѕѕѕџєєєџєєєџєєєџмммџџџUUUџіііџџџџџHHHџџ"""џлллџџџџџџџџџџџџџџџџџџџџёўўўQџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџOџџџџџџџџКККџџџџџџџџџџџKKKџїїїџїїїџїїїџїїїџїїїџнннџ+++џџџџџџџџџџџџŸŸŸџјјјџјјјџёёёџ<<<џџ џyOtџ…Wџ…Wџ…Wџ€T{џ-+џџџкккџїїїџїїїџїїїџїїїџџџџџџџџџџџџPPPџђђђџіііџѕѕѕџѕѕѕџфффџ666џџџ{{{џ˜˜˜џџџ777џЫЫЫџьььџћћћџџџџџџџџџџџџџўўўПџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџiџџџџџџџџЁЁЁџџџџџџџџџџџbbbџїїїџјјјџјјјџјјјџјјјџфффџ///џџџџџџџџџџџџ“““џјјјџјјјџјјјџ```џџ џjEeџ…Wџ…Wџ…Wџ|Qwџ џџ999џчччџјјјџјјјџјјјџјјјџЁЁЁџџџџџџџџџџџ,,,џоооџіііџіііџіііџщщщџHHHџџџџџџџ џ***џ999џEEEџgggџљљљџџџџџџџџЭўўўџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ…џџџџџџџџƒƒƒџџџџџџџџџџџyyyџљљљџљљљџљљљџљљљџљљљџїїїџJJJџџџџџџџџџџџџ›››џљљљџљљљџљљљџˆˆˆџџџ\>>џ­­­џџџAAAџчччџѕѕѕџѕѕѕџѕѕѕџѕѕѕџѕѕѕџѕѕѕџѕѕѕџѕѕѕџѕѕѕџѕѕѕџѕѕѕџѕѕѕџѕѕѕџѕѕѕџѕѕѕџѕѕѕџѕѕѕџѕѕѕџєєєџђђђџHHHџџ џrKmџ…Wџ…WџzPuџџџ---џѓѓѓџѕѕѕџѕѕѕџіііџіііџіііџіііџіііџіііџіііџіііџїїїџїїїџїїїџїїїџїїїџїїїџїїїџїїїџїїїџїїїџЬЬЬџ!!!џџџџџџџџџџџЙЙЙџџџџџџџџ§џџџSџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўўўўўўŸџџџщџџџёџџџѕџџџ§џџџџаааџџџџџTTTџяяяџPPPџџџжжжџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџнннџ---џџџ€T{џ…Wџ…WџT{џ#!џџ!!!џтттџєєєџѕѕѕџѕѕѕџѕѕѕџѕѕѕџѕѕѕџѕѕѕџѕѕѕџѕѕѕџѕѕѕџіііџіііџіііџіііџіііџіііџіііџіііџіііџіііџЂЂЂџ џџџџџџџџџџџвввџџџџџџџџёџџџEџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ3џџџMџџџлџџџџдддџџџџџRRRџіііџ‘‘‘џџџ˜˜˜џєєєџєєєџєєєџєєєџєєєџєєєџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџЗЗЗџџџ5"2џ…Wџ…Wџ…Wџ…Wџ4"1џџџФФФџѓѓѓџєєєџєєєџєєєџєєєџєєєџєєєџєєєџѕѕѕџѕѕѕџѕѕѕџѕѕѕџѕѕѕџѕѕѕџѕѕѕџѕѕѕџѕѕѕџѕѕѕџѕѕѕџђђђџaaaџџџџџџџџџџџ џуууџџџџџџџџуџџџ7џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўўўџџџЛџџџџоооџџџџџJJJџёёёџШШШџџџMMMџэээџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџёёёџŒŒŒџџџU7Qџ…Wџ…Wџ…Wџ…WџI0Fџџ џЂЂЂџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџчччџџџџџџџџџџџџ###џшшшџџџџџџџџеџџџ)џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўўўџџџ­џџџџшшшџ!!!џџџџ@@@џъъъџіііџBBBџџџСССџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџёёёџёёёџёёёџёёёџёёёџёёёџёёёџьььџKKKџџ џpIkџ…Wџ…Wџ…Wџ…WџdB`џџџ{{{џ№№№џђђђџђђђџђђђџђђђџђђђџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџЈЈЈџџџџџџџџџџџџ:::џэээџџџџџўўўЩўўўџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўўў—џџџџњњњџ...џџџџ+++џйййџџџџџ›››џџџvvvџюююџ№№№џ№№№џ№№№џ№№№џ№№№џ№№№џ№№№џ№№№џ№№№џ№№№џ№№№џ№№№џ№№№џ№№№џ№№№џ№№№џжжжџ џџ(&џ}Qwџ…Wџ…Wџ…Wџ…WџyPtџ  џџGGGџфффџёёёџёёёџёёёџёёёџёёёџёёёџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџцццџMMMџџџџџџџџџџџџQQQџѓѓѓџџџџџџџџЛўўў џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџwџџџџџџџџOOOџџџџџШШШџџџџџнннџ"""џџџсссџ№№№џ№№№џ№№№џ№№№џ№№№џ№№№џ№№№џ№№№џ№№№џ№№№џ№№№џяяяџяяяџяяяџяяяџяяяџ‰‰‰џџџI/Fџ„V~џ…Wџ…Wџ…Wџ…WџSzџ&$џџџжжжџ№№№џ№№№џ№№№џ№№№џёёёџёёёџёёёџёёёџёёёџёёёџёёёџёёёџёёёџёёёџђђђџђђђџђђђџИИИџџџџџџџџџџџџџgggџјјјџџџџџџџџЋўўўџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўўўUџџџѕџџџџ|||џџџџџІІІџџџџџњњњџzzzљ§џ|||џыыыџяяяџяяяџяяяџяяяџяяяџяяяџюююџюююџюююџюююџюююџюююџюююџюююџдддџ333џџ џtLoџ…Wџ…Wџ…Wџ…Wџ…Wџ„V~џI/Eџџџ“““џяяяџяяяџяяяџяяяџяяяџяяяџ№№№џ№№№џ№№№џ№№№џ№№№џ№№№џ№№№џ№№№џ№№№џ№№№џяяяџQQQџџџœœœџHHHџџџџџ˜˜˜џŠŠŠџjjjџWWWџЃЃЃџ§§§џџџџџўўўџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ=џџџхџџџџ­­­џџџџџkkkџџџџџџџџџжжжѕїџ&&&џФФФџюююџюююџюююџюююџюююџюююџюююџэээџэээџэээџэээџэээџэээџэээџ‘‘‘џџџ3!0џ„V~џ…Wџ…Wџ…Wџ…Wџ…Wџ…WџfCbџ  џџHHHџчччџюююџюююџюююџюююџяяяџяяяџяяяџяяяџяяяџяяяџяяяџяяяџяяяџяяяџяяяџРРРџ џџ===џЯЯЯџ$$$џџџџџўўўџџџџџџџџџўўўџ§§§џџџџџџџџџўўўoџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўўўџџџЭџџџџкккџџџџџ$$$џїїїџџџџџџџџџdddУћџJJJџчччџэээџэээџэээџэээџэээџэээџэээџэээџэээџьььџьььџьььџжжжџџџ  џjEeџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ‚U|џ'%џџџЌЌЌџэээџэээџэээџюююџюююџюююџюююџюююџюююџюююџюююџюююџюююџюююџмммџEEEџџџАААџСССџџџџџNNNџџџџџџџџџџџџџџџџџџџџџџџџџўўўеџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџŸџџџџюююџLLLџџџџ џОООџўўўџџџџџкккЭ ЧџџŠŠŠџчччџьььџьььџьььџьььџьььџьььџьььџьььџыыыџыыыџтттџjjjџџџ;'9џ€Tzџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ]?YџџџSSSџчччџьььџьььџэээџэээџэээџэээџэээџэээџэээџэээџэээџэээџыыыџ„„„џџџGGGџїїїџ~~~џџџџџџџџџџџџџ§ўўўУџџџЏџџџСџџџ™џџџ3џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ[џџџџ§§§џ‹‹‹џџџџџjjjџјјјџџџџџџџџщ†††{эџџ•••џыыыџыыыџыыыџыыыџыыыџыыыџыыыџыыыџыыыџъъъџ‡‡‡џ џџ џyOtџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…^€џ&%џџџЊЊЊџьььџьььџьььџьььџьььџьььџьььџьььџьььџьььџэээџыыыџЏЏЏџџџџХХХџыыыџ666џџџџџТТТџџџџџџџџёџџџ1џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ!џџџчџџџџлллџџџџџ###џеееџџџџџџџџ§ќќќЅ sёџџџоооџъъъџъъъџъъъџъъъџъъъџщщщџрррџŒŒŒџџџ џZ>>џfffџgggџFFFџџџџ  џT=Qџ“kŽџŠ^…џ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџf‹џ–n‘џŒhˆџA-?џ џџџ:::џЏЏЏџфффџщщщџщщщџщщщџщщщџдддџ‹‹‹џџџџXXXџшшшџўўўџТТТџџџџџџтттџџџџџўўўчџџџ9џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџЫџџџџяяяџPPPџџџџџkkkџіііџџџџџџџџїџџџyOзџџџџџџџџџB.?џ’kџ—o’џbˆџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ‡Yџ•mџ–o‘џwXsџB-@џ4#3џёџџџbbbџЃЃЃџЦЦЦџДДДџ†††џ999џџџ§KKKљтттџџџџџёёёџUUUџџџџџgggџљљљџџџџџџџџБџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџWџџџљџџџџЩЩЩџџџџџџЏЏЏџџџџџџџџџўўўїўўўKџџџ cГйщэлЙ у;'9џL4JџŠe†џ—o’џ’iџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…WџŽd‰џ—o’џ‘kŒџY@Vџ?*=џ>*<ѓ;Ћћџџџџџџџџчnnnзїїї§џџџџџџџџ“““џ џџџџ!!!џбббџџџџџўўў§џџџGџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџХџџџџ§§§џ\\\џџџџџ666џиииџўўўџџџџџўўўгџџџ7џџџџџџ+79->)<…?*=џC-AџzYvџ–n‘џ–m‘џ‡Yџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџˆ[‚џ”kŽџ—o’џ_~џC.Aџ?*=џ>*=Љ=*=qеѕћ§§їщЇїїїщџџџџўўўџсссџџџџџџrrrџќќќџџџџџџџџЧџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџOџџџѕџџџџкккџ000џџџџџFFFџёёёџџџџџџџџџџџџеџџџ/џџџџџџџџџџџџџџџџџџџџџ>)=7>*<ї?*=џ`E]џ•nџ–n‘џa‡џ…Wџ…Wџ…Wџ…Wџ…Wџ…WџfŠџ–o‘џ•mџ^D[џ?*=џ?*=ы>**=љ?*=џlNhџ–n‘џ–n‘џŽcˆџ…Wџ…Wџ…Wџ‰]„џ”lџ—o’џ“lŽџY?Vџ?*=џ?*=ћ?)=OџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџGџџџуџџџџџџџџѕѕѕџ~~~џџџџџџlllџќќќџџџџџџџџыџџџ+џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ[џџџљўўўџюююџVVVџџџџџџqqqџщщщџџџџџўўўџўўўяџџџ}џџџџџџџџџџџџџџџ@+;?)<е?*=џK4Iџ„aџ—o’џ•mџŽc‰џ‰\ƒџŒa‡џ”lџ–o‘џ•mџqQmџ@+>џ>*=§>*<Џ=*<џџџџџџџџџџџџџџџџџџџџџџџџўўўџџџыџџџџўўўџёёёџ{{{џџџџџџSSSџхххџџџџџџџџѕџџџqџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўўўџџџЅџџџ§џџџџмммџ===џџџџџџ]]]џэээџџџџџџџџџџџџїџџџЛџџџ3џџџџџџџџџџџџ?)>>џРРРџћћћџџџџџџџџџџџџѓџџџЅџџџ7ўўў џџџ?*<?*<­?*<џ@*=џaD]џŒfˆџ–n‘џ—o’џ—o’џ’jџyUuџD-Bџ?*=џ?)=ѕ?*=o?*?џџџџџџџџџџџџџџџџџџ5ўўў›ўўўѓџџџџџџџџџџџџЪЪЪџIIIџџџџџџ111џЧЧЧџўўўџџџџ§џџџХўўўџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ%џџџЯўўўџџџџџаааџ>>>џџџџџџџџѓѓѓџўўўџџџџџџџџџўўўуџџџЅџџџEћћћ L8J/?*=х?*<џ@+>џU:RџuQpџƒ\~џ{Uvџ_A\џE.Cџ?*=џ?*=ћ?*=—@'>џџџџџџџџџџџџ џџџ5џџџ›џџџпџџџџџџџџўўўџѕѕѕџЇЇЇџ###џџџџџџ џЪЪЪџ§§§џџџџџџџџпџџџ7џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўўў/џџџЫџџџџџџџџэээџRRRџџџџџџџ888џІІІџїїїџџџџџџџџџџџџџџџџџџџџпџџџ™­Є­—S@Qэ?*=џ?*=џ?*=џ?*=џ?*=џ?*=џ?*=џ?*=ѓ>)=‘M3Mџџџџџџ)ўўўQџџџƒџџџгўўў§џџџџџџџџџџџџљљљџТТТџMMMџџџџџџџBBBџаааџўўўџџџџџџџџсџџџCџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ5џџџЯџџџ§џџџџцццџuuuџ џџџџџџџPPPџГГГџ№№№џ§§§џџџџџџџџџџџџџќќќїмилїvguџL8JџB-@џ?*=џ?+=џH4FџYGWїЄšЃПюьюŸџџџБўўўЩџџџлџџџёџџџџџџџџџџџџўўўџєєєџЯЯЯџgggџџџџџџџџUUUџмммџўўўџџџџџџџџчўўўIџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ/џџџХџџџџџџџџ§§§џЇЇЇџ+++џџџџџџџџCCCџŽŽŽџгггџќќќџџџџџџџџџџџџџњњњџвЭвџЈŸЇџš™џŸ”žџТЛТџёяёџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўўўџчччџЅЅЅџWWWџ џџџџџџџџ†††џђђђџџџџџџџџџџџџзџџџIџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўўў%џџџЁџџџљџџџџќќќџкккџdddџџџџџџџџџџGGGџƒƒƒџУУУџкккџщщщџєєєџўўўџўўўџџџџџџџџџџџџџџџџџўўўџїїїџэээџсссџЬЬЬџЃЃЃџXXXџ$$$џ џџџџџџџ џEEEџЩЩЩџљљљџџџџџџџџћџџџЩџџџ/џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ џџџƒџџџэџџџџџџџџњњњџДДДџDDDџџџџџџџџџџџ џ???џYYYџqqqџ€€€џџ•••џџƒƒƒџuuuџ^^^џJJJџ...џ џџџџџџџџџџ'''џŸŸŸџэээџџџџџџџџџџџџ§ўўўŸџџџ!џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ;џџџЩџџџћџџџџўўўџєєєџБББџQQQџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ џ333џ’’’џчччџ§§§џџџџџџџџџџџџлџџџgџџџ џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ!ўўўƒџџџяџџџџџџџџџџџџєєєџГГГџiiiџџџџџџџџџџџџџџџџџџџџџџџџџџCCCџЃЃЃџуууџўўўџџџџџџџџџџџџћўўўЉџџџ9џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ%ўўў—џџџхџџџџџџџџџџџџџџџџєєєџЏЏЏџfffџ:::џџџџџџџџџџџџџџџџџ џ+++џMMMџ———џтттџџџџџџџџџџџџџџџџџџџџїџџџБџџџKџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ џџџ7џџџџџџчџџџћџџџџџџџџџџџџћћћџфффџЪЪЪџЅЅЅџ‚‚‚џZZZџ777џџџџџџџџ,,,џKKKџlllџ˜˜˜џПППџйййџёёёџџџџџџџџџџџџџџџџ§ўўўѓџџџНџџџYўўўџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўўўџџџwџџџЛџџџѕџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџјјјџщщщџтттџшшшџёёёџљљљџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ§џџџеўўў‘џџџ?џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ7џџџuџџџЗџџџнџџџэџџџљўўўџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ§џџџѓџџџхџџџЭўўў‹џџџKџџџ!џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџEџџџkўўў‡ўўўЋўўўЧџџџлўўўыўўўѓџџџїџџџѕџџџэџџџхџџџЯџџџЙџџџЁџџџ{ўўўWџџџ-џџџ џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ ўўўџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџgpodder-3.9.0/tools/win32-launcher/gpodder.h0000644000016000001710000000051112654461624021766 0ustar jenkinsjenkins00000000000000#ifndef _GPODDER_H #define _GPODDER_H #define PROGNAME "gPodder" #define BAILOUT(s) { \ MessageBox(NULL, s, "Error launching " PROGNAME, MB_OK); \ exit(1); \ } #define DEBUG(a, b) { \ MessageBox(NULL, a, b, MB_OK); \ } #define GPODDER_REGISTRY_KEY \ "Software\\gpodder.org\\gPodder" #endif gpodder-3.9.0/tools/win32-launcher/gpo.res0000644000016000001710000030306412654461624021502 0ustar jenkinsjenkins00000000000000 џџџџh џџџџ(  џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ-+% 3.+9,5;;+8U<+9c7,5…ѕѕѕѕѕѕѕХџџџU=R•qPmѕ~Xyџ†]џŠ`…џuSqџџџџ џџ џ џЭџџџ?*<tPoї…Wџ‡Zџˆ\ƒџˆ[‚џwSsџџџџџџџџлџџџџџџ`C]­nNjЩgHcЃ`C]‹cF_‘[BXпџџ џџџџџ""љ?)<џџџџџџџџџџџџџџџC:08111џ111џ$%%џ!""џ000џ%%%џ+++џ555яфффKџџџџџџўўў џџџCSSSuаааџŒŒŒџ4$2џ2!/џTTTџjjjџЙVUUн111џDDD§ЮЮЮgџџџџџџўўў;BBBџxxxџџŒŒŒџeMbџhSfџ“““џЄЄЄџг’’’љвввўўў7џџџџџџџџџњњњW џŒŒŒџiiiџOOOџp}џƒŒџrrrџGGGџlllџ???џџџџ5џџџџџџџџџџџџпппq џ~~~џљљљџїїїџrџ˜’—џїїїџьььџYYYџFFFџџџџџџџџџџџџџџџџўўўpppпƒƒƒџђђђџёёёџiSfџ‡~†џѓѓѓџ№№№џ џgggљџџџџџџџџџџџџџџџџџџ“““Ѓwwwё‘‘‘эŠџuMpџdKaџаааџ•••џMMMџўўўkџџџџџџџџџџџџџџџџџџњњњ/]]]љВВВЃVATƒ‰_„џdF`­^^^gxxxяŒŒŒЧџџџџџџџџџџџџџџџџџџџџџџџџмммQlllёlllяf\eџ|z|гcccљ‹‹‹ЯўўўџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџиииqžžžЈЈЈ•яяяWџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџЈ џџџџ( @ џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ##")'%,)! ,*& /+$ 1.'/.(.,*iыыыыыыыыыыыыыыыџџџџџџџџџџџџ)(! /-(20*)4/-;9-5_;+7}<+9“<+:Ѕ=*:Б=*;Й=+:НC8@й9::џ-./џџџџџџџџџџџџџџ›џџџџџџџџџ2-*!;,7‰E0Bз[?XћlLhџyVuџ‚]}џ‡aƒџŒd‡џf‰џg‹џV>Sџџџџ џџџџџџџџџџџџŸџџџџџџџџџC-AЋtRpџg‹џŽd‰џ‹`†џ‰]„џ‡[‚џ‡[‚џˆ\ƒџˆ\ƒџˆ\ƒџeJaџ!""џ888џџџ''&џџ*))џ џ...џ221џџџ !"џџ*+*џ79;›џџџџџџџџџ?*< Z>VѓŽcˆџ…Wџ…X€џ†Y€џ†Yџ†Zџ‡Zџ‡Z‚џ‡[‚џ‡[‚џpVmџџ+*)џџ$$$џ,,+џџ(''џ!! џ00.џ%%$џ///џџџ$$%џ$#"џ›џџџџџџџџџ?)<V;Sыcˆџ…Wџ…Wџ†Y€џˆ\ƒџŠ]„џŠ^„џ‰]„џ‡Zџ…Wџ`E]џџџџџџ џџџџџџџџ џџ$#еџџџџџџџџџџџџH0FХgŠџŽeˆџ„^џwUsџlMiџeGbџaD^ћcF`§lNiџ‚^}џW>Tџџџџџџџџџџџџџџџџѓ?)< џџџџџџџџџ?*=;D-BЕA+?Ї>*=}>**<7>*)=?)<>*=/?*=ƒG8E§$$#џ543џ...џ777џ џ&%%џCB@џџ@?>џ100џ+,,џ322џ џ:;;џ;<=џ4,2ё>)=џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџH=FЫџ@?>џ?BBџџ;;;џ./0џџ##$џ:::џ999џ>??џџ565џ(('џџ@*=%џџџўўў‹­­­§ џЅЅЅћџџџEџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ3ЯЯЯы%%%џ888џЙЙЙїцфцЧ{jy§jVhџЏІЎБўўў›зззщbbbџ џ   §ўўўkџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ%яяяЧџџџNNNџdddџXXXџ...џџVVVџеееыўўўSџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџUїїїНОООї’’’џ~~~џˆˆˆџЌЌЌ§чччйџџџ}џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ џџџ1џџџEџџџ;џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџЈ% џџџџ(0` џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ*%$$$2).-"/-) **% ''' )%% ‹ссссссссссссссссссссссс[џџџџџџџџџџџџџџџџџџџџџ!%#*%" -,%.+%1.)0-)1/(1/*#10*'20))20)-30+/30+130,740,9PNMЏBCEџ***џџџEEEџџџџџџџџџџџџџџџџџџџgџџџџџџџџџџџџџџџ )( .-'1/))20*331+;6/0Q:,6u;+8•=+:­=*;С=*;б>*<п>*<ы>*<ѓ>*<ї>*<љ>*<љ8/5§-./џ&&&џџ џ)))џџџџџџџџџџџџџџџџџџџk џџџџџџџџџџџџ/-&2/)38-3m<+9Е?*<чE.BџS8PџaD^џmMiџwTsџ~Zzџ…_€џ‰c…џŽf‰џh‹џ’jџ“jŽџ:*8џџџџџ$$$џџџџџџџџџџџџџџџџџџџqџџџџџџџџџџџџ 8*2!>*;ЙI1FџiIeџ„_џ“kŽџ•lџ’iџf‹џŽd‰џbˆџŒ`†џ‹`†џŠ_…џŠ^…џŠ^…џŠ^„џ7%5џџџџџџџџџџџџџџџџџџџџџџ џџm џџџџџџџџџџџџџџџ>)<БaC^џ’jџ’iџb‡џ‰]„џˆ[‚џˆ\ƒџˆ\ƒџˆ\‚џ‡[‚џˆ[‚џˆ\ƒџ‡\‚џˆ\ƒџˆ\ƒџˆ\ƒџcP_џ257џLKIџKKKџFGFџџ0/.џ876џ''(џ.-,џ555џCEFџџ<<;џONMџLMMџџџ$"!џ@CEџџ'&%џ<:6џLPTџ*.0gџџџџџџџџџџџџџџџ?*< A+?эgŠџŠ^…џ…Xџ†X€џ†Y€џ†Yџ‡Zџ‡[‚џ‡[‚џ‡[‚џ‡[‚џˆ\ƒџ‡[ƒџˆ\ƒџˆ\ƒџ‡[ƒџ\JZџџџџ џџџ457џџ)))џ џ#$$џ џџ)((џ'()џ-,*џџ џ џ џџџџ gџџџџџџџџџџџџџџџ?); @+>ыŽgŠџˆ[‚џ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Xџ…X€џ…X€џ†X€џweuџLMNџDDDџMLJџ./.џ***џDEFџPLIџџ***џEGHџEEDџNNLџ..-џSRQџ(&&џEEEџ52/џDFEџ"##џ)('џKLMџRRPџ9::џ ƒџџџџџџџџџџџџџџџ?(??)=п‰c„џ‰]„џ„V~џ„V~џ…Wџ‡Yџ‰\ƒџ‹_…џŒa†џb‡џb‡џŒa‡џŠ^…џ‡Zџ…Wџ„V~џ9&6џџџџџџџџџџџџџџџџџџџџџ џџџ г@);џџџџџџџџџџџџџџџ?)=ЛzVvџ’hŒџf‹џ“jŽџ•mџ’kџ‹d†џ\|џyWuџuSpџrQnџsSoџyXuџ‡c‚џ“kŽџŽcˆџ6$4џџџџџџџџџџџџџџџџџџџџџџџџ#"ы?)< џџџџџџџџџџџџџџџ>*=eN4KџpOlџhIeџZ>WџM3JџC,@ѕ?*=ч>)<Ы?)<Г>*<Ё>)=•>)<™>*<Ћ?*=бI2GљoPkџYIWџ'''џџ'&$џ џ&''џ&%#џџџ)))џ.-+џ&'&џџ,,,џ))(џ" џ''&џџ%$$џџџџ334џ џ*)я?)=џџџџџџџџџџџџџџџ@*=?**<[?*=3?)<=,<џџџџџџџџџџџџџџџџџџџџџ?*='?*=С1(0џџџ/0/џ*+,џ*))џ...џџџ0/.џCCCџ***џ џ210џ244џ++*џ-./џџ234џџ***џ+-.џ>>?џ345џ#"ч>)=џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ>*=5A8?џџ///џ333џ899џ:==џџ567џ788џ***џ(((џџ$$%џ665џ:<=џGFDџFFEџ"#$џџ553џ567џџ џ10.џ:08Зџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ?*<7KBJџџџ++)џ'((џ-02џџ џ)*)џџџџ///џџџџџ џџ!!!џџ))*џџ џqrsЗџџџ“џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџmхїг$"Б^SYџIHGџRTTџ]ZXџXURџTSQџ121џџ>>>џџMPQџFIJџџ.-,џLMNџ244џ555џ---џ)('џ@CCџ676џ))'џEGHџ,,,џџЙЙЙџўўўхўўўџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџƒ111џТТТџшшшџЈЈЈџџ  џџџџџџџџџџџџџџџџџ џ џџџџџџџ[[[џќќќяџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўўўџџџџџџџџџ;ћжжжџьььџьььџьььџФФФџџџ*(џ*(џ*(џ*(џ!џџDDDџKKKџKKKџKKKџ444џѕЏ­­(((ЯQQQџQQQџPPPџDDDџџџZZZџіііїџџџSџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџAџџџеџџџЫўўўЏ§§§“ Эџюююџюююџюююџюююџюююџ„„„џ*(џ„V~џ„Wџ„Wџ„V~џ0.џkkkџьььџэээџэээџэээџсссџ!!!§;џџџўўўaњњњѕВВВџbbbџ...џџ---џџћћћѓџџџUџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ“­­­џ]]]џ{{{џџџтттџёёёџ№№№џвввџиииџёёёџуууџџsKnџ„Wџ…WџkFfџџтттџ№№№џоооџыыыџяяяџяяяџƒƒƒџўўў9іііћOOOџ000џˆˆˆџСССџщщщџ§§§яџџџГўўў3џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ­vvvџџџџIIIџѓѓѓџѓѓѓџpppџџџ}}}џѓѓѓџaaaџI0Fџ…Wџ…Wџ5"2џџђђђџƒƒƒџ џ(((џШШШџёёёџЬЬЬџсљљљЙˆˆˆџNNNџіііљџџџЉџџџkўўў7џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџЩZZZџџџџ|||џѕѕѕџеееџџџџџШШШџЇЇЇџ'%џ„WџT{џ џдддџьььџџџџ---џяяяџ№№№џџчччџ///џЦЦЦџџџџйџџџ;џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџп===џџџџŸŸŸџјјјџЦЦЦџџџџџ———џзззџџ‚U|џiEeџ+++џїїїџъъъџ џџџџФФФџіііџ333џ***џџaaaџГГГџџџџГџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ§§§ѓ"""џџџџАААџњњњџяяяџџџџџМММџ№№№џџSyџO3Kџaaaџњњњџњњњџ>>>џџџџЙЙЙџјјјџCCCџџџџџўўўЁџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџђђђџџџџџВВВџћћћџќќќџРРРџ'''џџnnnџљљљџћћћџџwNrџ<':џ†††џћћћџќќќџШШШџџџџыыыџњњњџCCCџџџџœœœџџџџ…џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ9уууџџџџџЄЄЄџћћћџќќќџќќќџїїїџюююџћћћџћћћџњњњџџuLpџ1 /џџћћћџќќќџќќќџнннџџлллџќќќџћћћџ444џџџџИИИџџџџiџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџUЬЬЬџџџџџ‡‡‡џљљљџњњњџњњњџњњњџљљљџљљљџљљљџіііџџzPuџ-+џЄЄЄџљљљџњњњџњњњџћћћџћћћџћћћџћћћџјјјџџџџџгггџўўўOџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџmЭЭЭџBBBџџџџZZZџїїїџїїїџїїїџїїїџїїїџїїїџіііџфффџџ€T{џ1 /џ›››џїїїџјјјџјјјџјјјџљљљџљљљџљљљџлллџџџџџчччџўўў3џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўўў%џџџПџџџэyyyџџˆˆˆџ џёёёџєєєџєєєџєєєџєєєџєєєџєєєџСССџџ„V~џ=(:џџѕѕѕџѕѕѕџѕѕѕџіііџіііџіііџіііџ   џџџџџљљљћџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ…џџЏЏЏџ+++џМММџђђђџђђђџђђђџђђђџђђђџёёёџџ7$5џ…WџR6OџUUUџђђђџѓѓѓџѓѓѓџѓѓѓџѓѓѓџєєєџѓѓѓџOOOџџџџ***џўўўэџџџ џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџi   џџŽŽŽџˆˆˆ§UUUџяяяџяяяџяяяџяяяџяяяџыыыџ...џc@^џ„WџrJmџџъъъџ№№№џ№№№џёёёџёёёџёёёџбббџџџџ333џ\\\џџџџнџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ9дддџџOOOџэээљёГГГџэээџэээџэээџэээџŸŸŸџџ‚U|џ…WџƒV}џџЇЇЇџюююџюююџюююџюююџэээџYYYџqqqџџџўўў§ўўўѓўўў•џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ §§§ч)))џ џцццџЕћСССџъъъџъъъџСССџџdA`џ…Wџ…Wџ…WџaE^џ,,,џрррџыыыџьььџьььџ–––џ)))џЈЈЈџџaaaџўўўПџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ‘‘‘‘џџrrrџўўўу---q ѓPPPџRRRџ џ]DZџ‡Zџ„V~џ„Vџ‡Z‚џˆdƒџ§>>>џПППџбббџuuuџ§ЮЮЮџEEEџџТТТџўўўgџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўўў#іііѕ$$$џџФФФџўўўЕ:::ac6$4СyWuџ‹`†џ„V~џ…WџeŠџgJcџ<(:‰yнщГооояЄЄЄџџFFFџ§§§чџџџ џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўўўƒСССџџџиииџџџџ­ўўўџџџ?*=YW=Tџ’iџ…XџŠ^„џgˆџD.Bѓ>*=џџџџџџџџџџџџЧШШШџџџиииџџџџeџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўўўХ™™™џџџЦЦЦџўўўзўўўGp`n @*=бvVrџ”lџ‘jŒџU;Sџ>*=џџџџџџўўўWџџџуИИИџџџЌЌЌџџџџБўўўџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўўўеœœœџ џџwwwџыыы§џџџЩЧСЦЅS@QћT:QџJ2GџZHXЗяэя?џџџyџџџбщщщџoooџџ џЇЇЇџўўўЫўўўџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўўўХЧЧЧџ///џџџhhhџЕЕЕџйзиџФОФџидиџћћћљцццџЖЖЖџgggџџџ222џЬЬЬџџџџПўўўџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ џџџ‰јјјљџ---џџџџџџџџџџ---џžžžџњњњљџџџ…ўўў џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўўў'ўўўŸўўўѕгггџџdddџHHHџ<<<џFFFџbbbџџвввџўўўѕџџџЁўўў'џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџYўўў•ўўўСўўўнўўўчўўўпўўўХўўў—џџџYўўўџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ(B џџџџ(@€ џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ  :(11,,,***%%%$$$""",!!­ззззззззззззззззззззззззззззззз+џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ *" '% .*' ((& .)"/-%0.),+'/+(1/%1/&2-*10(//(/.+0-+!2.*!#$$гџџџџџ666џ>>>џџџџџџџџџџџџџџџџџџџџџџџџџ3џџџџџџџџџџџџџџџџџџџџџџџџ,%# ,*#.-(1-'0.(2/)#2/*'20++20*/20*320+531,96//G7.2U8-3_:,5k:,6q:,6u:-6}:-6}:,6kfeхffiџTVVџGJKџKJIџџ///џ///џџџџџџџџџџџџџџџџџџџџџџџџџ5џџџџџџџџџџџџџџџџџџџџџ)' .-%//)%10*/20+931+?31,E8.2c;,6…<+9Ѕ=*:П>*;е>*<щ>*<ѕ>*<љ>*<ћ>*<§>*<§>*<џ?*=џ?*=џ?*=џ?*=џ'#&џџџџ џџ///џ///џџџџџџџџџџџџџџџџџџџџџџџџџ; џџџџџџџџџџџџџџџџџџ.+%2/()30*=5/.U;,7“=+:Щ>*<ё?*=џA+?џJ1GџV:SџaC]џkKgџrQnџzVuџ[{џ„_€џ‰b„џŒe‡џgŠџ‘iŒџ‘iџ‘iџџџџџџџ"""џ***џџџџџџџџџџџџџџџџџџџџџџџџџ Aџџџџџџџџџџџџџџџџџџ.*$6-03=+9Ѓ>*<ѓC,@џU9RџmLiџ€[|џgŠџ–mџ–n‘џ–n‘џ•mџ”lџ“jŽџ’hџ‘hŒџf‹џf‹џfŠџeŠџeŠџeŠџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ?џџџџџџџџџџџџџџџџџџ;)7)>*<зF/CџkJgџ‹d†џ–n‘џ•mџ’iџeŠџbˆџŠ_…џ‰]„џˆ[‚џ‡[‚џ‡[‚џˆ[‚џˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџ џџџ џџ џџџџ џџџ џџџџџ џџ џџџ џџ џ џџџџџ!#$џ!"#џ7џџџџџџџџџџџџџџџџџџA+<>*<БL3Iџ‰b„џ–n‘џ‘hŒџŒa‡џˆ]ƒџˆ[‚џˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџeZaџHMPџ42/џUWVџlljџKIFџ!#$џџ433џMLJџ8:;џ џDCBџQQQџDBBџ)-/џџ110џgggџHGFџceeџ&&&џ011џџ753џOQRџ$$&џџ==<џ4/*џBGIџcglџ5џџџџџџџџџџџџџџџџџџџџџ?*<?*<чqOmџ•mџ‰\ƒџ…X€џ†X€џ†Yџ‡Zџ‡Z‚џ‡[‚џ‡[‚џˆ[‚џˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџE==џ898џ%%%џ'''џџ367џ430џ џџџ>@Aџ===џ(%#џ&)+џ+,,џ*+,џ$"!џ"""џ<<<џ)))џџ+)&џџџ875џHHHџ*+)џ%(*џ:::џ'&‰џџџџџџџџџџџџџџџџџџџџџџџџ?*=гfGbџ–n‘џ†X€џ…Wџ…Wџ…Wџ…Wџ‡Zџ‰]„џ‹`†џbˆџŽd‰џeŠџfŠџeŠџdŠџcˆџ‹_…џ‡[‚џ…Wџ…Wџ…Wџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ/-Я@);џџџџџџџџџџџџџџџџџџџџџ?)=­X)=kC-Aџ…_џ“lŽџh‹џˆaƒџyVuџkKgџ^@ZџS8PџJ1GџB,?џ?*=џ>*<§>)=љ?*=ї?*=ї?)<ћ@+>џK4IџaF^џ‚`~џ•mџ&%џ џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ1 /щ?*=џџџџџџџџџџџџџџџџџџџџџ?*<?*=ЫB,@џJ1HџE-Bџ?*=§>*=ё?)=п>)<Н?*<›?*=}>*<_?)*<9>)=+?*>%?*='?)<3?*)=u?*<С@+>љcG`џVNUџ:::џ643џ.-,џvtpџ889џRQOџNPQџdcaџ&&&џџ""!џ=>?џVTQџWURџ(+,џџABCџutpџ<<=џZYVџLLLџ222џWVSџ987џ##"џџQPPџ?ABџhhkџ58:џ987џ1 /ч>)=џџџџџџџџџџџџџџџџџџџџџџџџ>)=?*<_>*<{>**<9>*=@)=џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ@+>>)=Q?*=ѓ##џџ џџџџџџџџџ џ'''џ010џ---џџ џ.-,џџџџџџџ)*+џџџAA@џџ9::џџ444џ0 .н?)=џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ>*=Ё;58џ џџ9;?џ<96џ.//џ.00џ(+,џ џ@ACџ0//џ%'(џ111џ888џџ џџ'''џ::9џ556џ974џ???џBDEџџ###џџ;:9џџџџџTRPџ,+Џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ?*<a[_џ"')џ џ<=<џPKEџLRSџSVWџ8:<џџ3/,џINNџ367џ000џ555џџ###џEEEџGHIџ@@?џDDFџ133џ567џCB@џџ:::џGHHџ799џ789џ222џџџ:;<џ@:@aџџџ-џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџU]/..>*<ЙEAFџџџџџџџџџџџџџџџ џ џџ$$$џџџџ!!!џџ џџџџ*)(џџџ џШШШяџџџљўўўГџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџwёџџћС7%5ѓldeџa^]џMNMџLOPџ†zџKHEџyrkџTTUџ?@@џџџ'+,џџVTRџNUXџ068џџ111џ1.,џGKKџ123џ111џ222џџ554џDFEџeffџџ897џ678џ+++џ111џНННџџєєєџџџџЙўўўџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ‹џ{{{џмммџчччџЈЈЈџ%%%џ  џ  џ!!!џџџџџџџџџџџџ10-џ$""џ џџ!!!џ.--џ џџџџџџџ!џџџџџ џ(((џџрррџџџџУџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџSћ–––џыыыџыыыџыыыџыыыџзззџ---џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџШШШџўўўёџџџ7џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўўў%ўўў!ўўўўўў џџџ зWWWџыыыџьььџэээџэээџэээџэээџХХХџџ-+џeB`џeB`џeB`џeB`џeB`џeB`џ<'9џџ~~~џГГГџГГГџГГГџГГГџГГГџ|||џџs==?vvvsЛЛЛчСССџПППџЎЎЎџ’’’џgggџ,,,џџ...џдддџџџџѓџџџOџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўўўoџџџћџџџ§џџџэўўўлџџџЩŒŒŒС џШШШџюююџюююџюююџюююџяяяџяяяџяяяџwwwџ  џyOtџ…Wџ…Wџ…Wџ…WџzPtџ џ^^^џыыыџэээџэээџэээџэээџэээџчччџ999џБџџџџџџ]џџџѕцццџ‡‡‡џ:::џџџџ111џxxxџъъъџџџџщџџџIџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџПиииџkkkџџЉЉЉџХХХџFFFџFFFџяяяџ№№№џ№№№џёёёџяяяџ№№№џёёёџёёёџиииџџM2Jџ…Wџ…Wџ…Wџ„WџC,@џџзззџ№№№џяяяџяяяџяяяџяяяџяяяџюююџŸŸŸџї!ўўў5ўўўїСССџџџWWWџ’’’џЦЦЦџцццџќќќџџџџїџџџЙџџџ+џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџеЋЋЋџџџџџџ“““џђђђџђђђџэээџ~~~џ$$$џ---џ‘‘‘џ№№№џђђђџYYYџџƒU}џ…Wџ…Wџ~Rxџ џuuuџђђђџ№№№џџ???џjjjџлллџёёёџ№№№џрррџџgџџџНфффџџOOOџуууџўўўџџџџэџџџХџџџ•џџџ]џџџ!џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўўўхџџџџџџЪЪЪџєєєџєєєџ‚‚‚џџџџџˆˆˆџєєєџЈЈЈџџwNrџ…Wџ…Wџ[;Vџ џбббџѓѓѓџЄЄЄџџџџ+++џрррџђђђџђђђџBBBџ333Эўўўљ|||џџюююџџџџЫџџџEџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџїsssџџџџџџэээџіііџђђђџ###џџџџџџцццџлллџ џ[;Wџ…Wџ„V~џ0.џ<<<џѕѕѕџѕѕѕџVVVџџџџџoooџєєєџєєєџqqqџ222џќќќџ111џoooџџџџџўўўуџџџgџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ/џџџџWWWџџџџџ+++џїїїџїїїџьььџџџџџџџШШШџіііџ'''џA+?џ…WџU|џ џ‚‚‚џїїїџїїїџLLLџџџџџџяяяџіііџ“““џџDDDџџNNNџ™™™џзззџџџџуџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўўўIўўўџ:::џџџџџ???џљљљџљљљџљљљџ888џџџџџџвввџњњњџLLLџ.,џ„V~џuLpџџЛЛЛџљљљџљљљџyyyџџџџџџрррџїїїџЇЇЇџџџџџџœœœџџџџлўўў џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџeљљљџ$$$џџџџџHHHџњњњџћћћџћћћџЋЋЋџџџџџ;;;џїїїџћћћџgggџ! џ„V~џ^>Zџ џпппџњњњџћћћџгггџ џџџџџюююџљљљџЏЏЏџџџџџџИИИџџџџЧџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџыыыџџџџџџEEEџћћћџќќќџќќќџќќќџџ$$$џџAAAџиииџќќќџћћћџwwwџџƒV}џN3Jџџїїїџћћћџќќќџќќќџ•••џџџџyyyџћћћџњњњџЌЌЌџџџџџџбббџџџџ­џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ›нннџџџџџџ777џћћћџћћћџќќќџќќќџќќќџѓѓѓџчччџљљљџћћћџћћћџћћћџ{{{џџƒU}џC+@џ'''џћћћџћћћџќќќџќќќџ§§§џХХХџ|||џžžžџіііџќќќџћћћџџџџџџ џуууџџџџ‘џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўўўЗЩЩЩџџџџџџџљљљџњњњџњњњџњњњџњњњџњњњџњњњџњњњџњњњџљљљџљљљџtttџџƒV}џ=(:џ333џњњњџњњњџћћћџћћћџћћћџќќќџќќќџќќќџќќќџћћћџћћћџ‚‚‚џџџџџџєєєџџџџuџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџЯ­­­џџџџџџ џцццџјјјџјјјџљљљџљљљџљљљџјјјџјјјџјјјџјјјџїїїџaaaџ#"џ„V~џ=':џ333џјјјџљљљџљљљџљљљџњњњџњњњџњњњџњњњџњњњџњњњџњњњџ\\\џџџџџ***џўўўџџџџ[џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўўў џџџпЦЦЦџ___џ;;;џџџџџПППџїїїџїїїџїїїџїїїџїїїџїїїџіііџіііџіііџіііџCCCџ2!0џ…WџB+?џ'''џіііџїїїџїїїџјјјџјјјџјјјџјјјџјјјџјјјџјјјџїїїџ+++џџџџџFFFџџџџџџџџ?џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ‰џџџїџџџ§ъъъџ џџ‹‹‹џџ„„„џѕѕѕџѕѕѕџѕѕѕџѕѕѕџѕѕѕџѕѕѕџєєєџєєєџєєєџюююџџH/Eџ…WџO3Kџџ№№№џѕѕѕџѕѕѕџіііџіііџіііџіііџіііџіііџіііџзззџ џџџџџcccџџџџћўўў'џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўўўџџџ{ьььџџџЁЁЁџ^^^џ999џђђђџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџђђђџђђђџЪЪЪџџeB`џ…Wџb@]џџгггџѓѓѓџєєєџєєєџєєєџєєєџєєєџєєєџѕѕѕџѕѕѕџ•••џџџџџџџџџџэџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџSјјјџџџŒŒŒџЕЕЕџџЦЦЦџёёёџёёёџёёёџёёёџёёёџёёёџёёёџ№№№џ†††џ  џ}Rxџ…WџzPtџџЅЅЅџёёёџђђђџђђђџђђђџђђђџѓѓѓџѓѓѓџѓѓѓџ№№№џ===џџџџџџ›››џџџџсўўў џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ3џџџ§333џџbbbџѕѕѕџ'''§___џюююџяяяџяяяџяяяџяяяџяяяџяяяџшшшџ///џ4!1џ„V~џ…WџƒV}џџ___џяяяџ№№№џ№№№џ№№№џ№№№џёёёџёёёџёёёџКККџџEEEџџџHHHџ000џРРРџўўўЯџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўўўџџџэiiiџџ###џ§§§џ–––ы џЙЙЙџэээџэээџэээџэээџэээџэээџџџiEeџ…Wџ…Wџ…WџG.DџџлллџюююџюююџюююџюююџюююџяяяџъъъџDDDџ<<<џmmmџџџўўўџўўўџўўўџџџџ—џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџПАААџџџШШШџїїїэЫ)))џеееџыыыџыыыџыыыџыыыџаааџџ2 0џƒV}џ…Wџ…Wџ…Wџ{Ruџ  џzzzџьььџьььџьььџьььџэээџэээџŒŒŒџ џЛЛЛџ---џџZZZџџџџћџџџiўўўWџџџ џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўўўmіііџџџ]]]џџџџџЪЪЪ“л+++џКККџщщщџщщщџОООџ***џџzPuџ…Wџ…Wџ…Wџ…WџŽd‰џK7Iџ џВВВџъъъџъъъџыыыџыыыџЃЃЃџ џ{{{џНННџџџЎЎЎџџџџеџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџяџџџЭЭЭџџџџы………EУџ)))џ+++џџџ„aџˆ[‚џ…Wџ…Wџ…Wџ…Wџ”lџbF^џ ћџƒƒƒџЯЯЯџУУУџhhhџџaaa§іііџGGGџџџіііџџџџwџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџёёёџџџ:::џѕѕѕџџџџХЮЮЮI‰‹B-@џŒgˆџa‡џ…Wџ…Wџ…Wџ‹`†џj‹џF0Dџ:&8w‹ё§§у{{{Щ§§§џЄЄЄџџџ˜˜˜џџџџёџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџщЌЌЌџџџkkkџњњњџўўўГџџџџџџџџџ>)=?*=эrRnџ“jŽџ…Wџ…Wџ†X€џ•lџoPkџ?)=щ>*<џџџ?7ъъъ[ўўўїаааџџџ;;;џїїїџџџџ}џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ]§§§§pppџџџxxxџљљљџџџџХўўў'џџџџџџ?*<“M5Jџ’kџcˆџˆ[‚џ’iџŒf‡џF/Cџ>*<ƒџџџџџџџџџџџџџџџmўўўљиииџ###џџџгггџџџџгўўў џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ™іііџVVVџџџbbbџюююџџџџэџџџsџџџ?))=пN:L/џџџџџџYџџџГџџџїюююџ{{{џ џџџЎЎЎџўўўїџџџWџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџБјјјџ‰‰‰џ џџџBBBџЏЏЏџѓѓѓџўўў§вЮв§‚tџn^lџ•Š”§чхчзџџџнџџџѓўўўџтттџ‰‰‰џ џџџ)))џШШШџўўўѕџџџ_џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўўў џџџ‹ўўўћЮЮЮџCCCџџџџџSSSџ‰‰‰џЏЏЏџУУУџШШШџНННџЃЃЃџyyyџ???џ џџџ џwwwџ№№№џџџџхўўўGџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџIџџџлќќќџНННџKKKџџџџџџџџџџџџџџqqqџнннџўўўџџџџЏџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ ўўўoџџџсџџџ§шшшџ   џaaaџ777џџ џџ џџAAAџtttџЕЕЕџїїїџџџџћџџџУџџџCџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўўўџџџSџџџЇџџџхўўўљўўўџџџџџїїїџђђђџњњњџџџџџџџџџџџџѕџџџеџџџўўў7џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ-џџџQџџџsџџџ…џџџ‰џџџџџџkџџџIџџџ!џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ( џџџџ(€ џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџi­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­Gџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ<872200,,, +++ +++ +++ &&& %%% %%% ### """ #"" +!! -!! џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџgџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ ,,))'''###" 4' 21 ..& .,+ ,,) ((% %%%$$$/%#1/!00 --$.,(2))3-(11'00&..%--$,,+,++,**++*-+)3+)Ѓ џџџџџџџџџџџ џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџgџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ  7!--' ))) $$$ & 00 2,)/+'--&))).('1.$--$/,)3-)11'//%-,+0.,2.*0.(3/'!10%#40.*%1/*%0/)%2/('1/*'00*'//*)1/,)2.+)40+)30++30*+ЋQTUџ $&џABBџџџџџџџџџUUUџdddџMMMџ………џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџgџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ)&&&$# .- ++' '&%0'!-,'1-&-,&0*)1/&2-)10)0/)!1.*#2/*%0/('20()21*)1/*+//*-30,-21+/31+131*122)320)511+530*73/*720*931,951,941,;40,=42,?32,A31,C41,C30+C30+Coj`Е‚џIIHџžŸ џZcjџ@;4џijjџ/7;џ59=џџџџAAAџџџ___џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџgџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ "((( /"" --'+)'.+%11(0-*2.(!10)#20)'1-*)2/*+30)-30*/1/+340-331+721*731*930,;20+=40*?31,?32,A30,G7//W7.2c8-5o:-6{:-6…;,7<+8™=+9Ÿ<+9Ѕ=+9Љ=+:Џ=+:Г<+:З<+:Й=+:Й=+9Й=+9Й=+:ЙupvуH@<џIA>џfn}џhjjџPPPџ<<<џIJIџPG>џŒŽџџџBBBџџџ```џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџiџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ%(( **".-#-,'00(/.)%1.'+2/*/20*130)510*730+;31+=21*?40,A51+E60.Q7/2_8.4m9-4y:,6‰<,8Ё=+:Е>+;Ы>*<й>*<щ>*<ё>*<ѓ>*<ѕ>*<ї>*<љ>*<љ>*<ћ>*<§?*<§>*<§?*=џ>*<џ?*=џ?*=џ?*=џ?*=џ?*=џ?*=џ?*=џ0"&џUXZџџZVOџ&,1џ џKKLџ џ+05џ џџџBBBџџџ```џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџk џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ (#" ,,!//%/.'!/.('00+/20,511+;31+?21+C32+E42+I31+K31-S8.2q<,7™=+9Е=+;Э>*;н>*<я>*<љ?*=џ?*=џ?*=џ?*=џ?*=џ?*=џ?*=џ?*=џ?*=џ?*=џ?*=џ?*=џ?*=џ?*=џ?*=џ?*=џ?*=џ?*=џ?*=џ?*=џ?*=џ?*=џ?*=џ?*=џ?*=џџџџџџџџџџџџџ@@@џџџ]]]џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџo&&  џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ### -&!0.&10(!3.(+21(521)=22+E21+I31,Q6/0e:-4…<,8Ћ=*;г>*<ї?*=џ?*=џ?*=џ?*=џ?*=џ?*=џ?*=џ?*=џA+?џF.CџK1HџO5LџS8PџW;Tџ\?YџbD_џgGdџlKiџpNlџuQpџyTuџ~XyџZ{џƒ\~џ…^џˆ`ƒџŠb…џŒdˆџŒdˆџŒdˆџŒdˆџŒdˆџ8(6џџџџџџџџџџџџ***џ```џ```џHHHџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџs*& '' џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ! **.-)10)%2/(/30*;30+C5/-S8-4u=+9Л>*;н>*<ѕ>*<џ?*=џ?*=џ?*=џA+?џB,@џE.CџN4Lџ\=XџhGdџsOoџ{Vvџ€[|џ‡a‚џ‹d†џŽg‰џ‘iŒџ”kŽџ•lџ•mџ•mџ–n‘џ–o‘џ—o’џ—o’џ—o’џ—o’џ—o’џ—o’џ—o’џ—o’џ—o’џ—o’џ—o’џ—o’џ<,:џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџs-) $$! џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ$$$ ,(!0,'1/(#2.)-5/-E;,7‰=*;б?*=ћ?*=џ?*=џ?*=џ@*=џH0EџU9RџcC_џtQpџZ|џŽe‰џ“jŽџ–n‘џ—o’џ—o’џ—o’џ—o’џ—o’џ—o’џ—o’џ—o’џ—o’џ—o’џ—o’џ—o’џ—o’џ—o’џ—o’џ—o’џ—o’џ–o‘џ–n‘џ•mџ•mџ•mџ•mџ•mџ•mџ•mџ;+9џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџs,%(( џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ""+%% /-"3.+;*7]>*;Щ>*<ї?*=џ?*=џB,@џK2Hџ_@[џwRrџ‡`џhŠџ”lџ–n‘џ—o’џ—o’џ—o’џ—o’џ–n‘џ–n‘џ•mџ•lџ”lџ”kџ“jŽџ‘hŒџf‹џd‰џŽcˆџb‡џŒa†џ‹`†џ‹_†џŠ^…џ‰^„џ‰]„џŠ^„џ‰]„џ‰]„џ‰]„џ‰]„џ‰]„џŠ^„џŠ^„џ7%5џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџo(( џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ + 4),=*;y>*=я?*=џ?*=џC-AџW:SџuQqџ‹c†џ•lџ–o‘џ—o’џ—o’џ—o’џ—o’џ–n‘џ•lџ’iџf‹џŽd‰џŒb‡џ‹`†џŠ^…џˆ\ƒџ‡Z‚џ‡Z‚џ‡Z‚џ‡[‚џ‡[‚џˆ[‚џˆ[‚џˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџ6$4џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ џџџџk"" џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ$>*;>*<ѓ?*=џB,@џX;Uџ€Z{џ‘iŒџ–n‘џ–n‘џ—o’џ–n‘џ•lџ“jŽџg‹џŒa‡џŠ^„џ‰]ƒџˆ]ƒџˆ\ƒџ‡[‚џ‡[‚џ‡[‚џˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџI8Gџџџџџ џ""!џџ###џ"%'џџ#$$џџџџџџџџ-+(џџџџџ(&"џџџџџ'((џџџџџ/#џ џ(((џ###џџ" џ џџџџ*-+џ џџџџ$"џ"%џџ џџџџџџџџ\_^џџ^__џџi џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ=*:3?*<ё?*=џB,@џlIgџgŠџ–n‘џ—o’џ—o’џ–n‘џ’iџŽcˆџŠ_…џˆ\ƒџˆ[‚џˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџŸџQTVџџ]]]џџYUNџ•”’џ?@@џaYSџšЅЌџ!џ}zwџ\gnџџџџXWUџ444џџ}yџ!"!џPPPџџџ{xsџџ***џ џPPPџXUUџEJOџ џџџddbџџxxxџ;;;џ765џ`^[џMKJџpy{џџџDEEџџџџџuqmџnrvџ>>>џ%%%џџџџџmjfџ()(џ0 џq}€џ&,1џuuyџ_dhџgџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџA+<?*<Ё?*=џA+?џnLjџ“lŽџ–n‘џ–o‘џ•lџfŠџŠ_…џˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџ€n~џ%џTaeџY\bџ;:9џ>;6џOPNџ279џstoџB=:џ886џTTQџ)%"џџџ%%#џ>?@џџ+*)џxxxџџVZbџ753џџ___џџџwwwџAAAџ&$"џMRRџ џџџ_``џџˆˆˆџ___џFFEџEDCџ5/+џ™ Єџ___џ:::џBBAџџџџџhe`џ_egџ00/џDJTџ'$џџџџ|||џ џWVRџ<<;џ468џhltџSY\џgџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ?*<?*<Щ?*=џL3IџŽf‰џ–n‘џ–n‘џg‹џ‰]ƒџ†Y€џ†Yџ‡Zџ‡[‚џ‡[‚џ‡[‚џ‡[‚џ‡[‚џ‡[‚џˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџ‚q€џ^]^џ,48џџџџ"""џџџ!$џџ'&$џ џџџ џGD@џBEHџ)*,џYYYџџџџџ```џџџџ>>>џ`abџ"(.џџџџeb]џџfffџ```џ;:8џUPKџADGџ[`dџ```џ9::џAEFџџџџџџџџџџџџ џ[[[џ џџ џ џ*($џ џgџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ?*='>*=е?*=џV:Sџ”lџ—o’џ’hџ…Xџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…X€џ†X€џ†Y€џ†Zџ‡Zџ‡Z‚џ‡[‚џ‡[‚џˆ[‚џˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџ6$4џџџџџџџџџџџџџџџџџџџ6:=џ џџџ888џџџџџџџџџџџ џ џџџџџџџџџџџџџџџџџџџџџџџџџџџџџgџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ>)<%?*<б?*=џT8Qџ”kџ—o’џ‘gŒџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Xџ…X€џ†X€џ†Yџ‡Zџ‡Zџ‡Zџ‡[‚џ‡[‚џ‡[‚џ‡[‚џ‡[‚џ‡[‚џ‡[‚џ‡[‚џ‡[‚џˆ[‚џˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџsbqџ```џ<<<џ&&&џ***џџLE<џ../џ3.'џ@FKџџџџTTTџLLLџџџ***џ,& џˆŽ“џ$'*џџџ;;;џZZZџџ***џ***џџHA8џ223џ/*#џBHLџџџџ?80џQW\џџD@;џ*17џџ]VMџ&&&џjjjџ444џџDMFџџ72+џџ```џjjhџQGBџ0*'џџџџ^^^џџ_`cџ```џџbehџџ‹ˆƒџrlfџ655џ000џџZYVџ‡ƒџEBAџJIIџ џџbehџџAAAџџ<, џcmiџ!.џŽˆџslfџџџџUWXџkppџ456џ567џ```џ€~yџea\џџQTTџџ  y@*<џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ?);?)<Х?*=џM3Jџ’iџ—o’џ“jŽџ…Xџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…WџŽ|Œџ999џ(((џŒŒџensџ000џžžџ---џrj`џqz‚џ***џikkџAA@џTTTџ999џ)**џ||{џS\aџSKAџ€€€џ++*џџџ888џTTTџџџirvџ,,,џџ111џme[џqzџ*++џikkџEFEџ31/џv{џ))'џfb\џJJJџ@@@џžžžџ%%%џmmmџџDGFџ010џ575џvneџlv}џџџџqkbџqstџ?@@џ€€џOX^џ[SIџqx~џџMMMџџ е=+< џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ?(<?)<Л?*=џH0Fџg‹џ—o’џ”lџ†X€џ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџm[kџBBBџ***џџџџ,,,џџџџџџџџџџџџџџџџџџџџџџџ,,,џџџџџџџџџџџџџ+++џџџ џџџџџџџџџџџ+++џ778џџџџџxxxџџ%$џ?)=AџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџC,C?*=Џ?*=џF/DџŠb…џ—o’џ–n‘џ†X€џ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ†X€џ‡Zџ‡Zџˆ[‚џˆ\‚џ‰\ƒџ‰\ƒџ‰]„џ‰]„џ‰]„џ‰]ƒџ‰\ƒџˆ\ƒџˆ[‚џ‡Zџ†X€џ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ5"2џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ џџ%$џ?*=‹џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ?*=?*=џD-Bџ‚\}џ–o‘џ—o’џˆ[‚џ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ†X€џˆ\‚џ‹_…џb‡џeŠџ‘g‹џ’hџ“jŽџ”kŽџ”lџ•lџ•mџ–n‘џ–n‘џ–n‘џ–n‘џ–n‘џ–m‘џ•mџ”lџ“jŽџ‘hŒџeŠџŒa‡џ‰\ƒџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ5"2џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ%$џ?)<Г@(; џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ?)=s?*=џB,@џvQqџ–n‘џ—o’џŒ`†џ†X€џ‡Zџˆ\ƒџŠ^„џŒa‡џeŠџ’hџ”lџ–n‘џ—o’џ—o’џ—o’џ—o’џ—o’џ—o’џ—o’џ—o’џ—o’џ—o’џ—o’џ—o’џ—o’џ—o’џ—o’џ—o’џ—o’џ—o’џ—o’џ—o’џ—o’џ—o’џ—o’џ—o’џ•mџ‘hŒџ‹`†џ‡Zџ…Wџ…Wџ5"2џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ%$џ?)<Ч?)<џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ@*)<Я>))=>)=Ѕ?*<§@+>џgFcџ‹d†џi‹џh‹џŒe‡џ‡_‚џYzџsOnџeDbџX*=љ>)=ѕ>)=ё?*=я?*=я?*=я?*<ё?)<ѕ?*=ћ?)=§?*=џ?*=џ?*=џB,@џI3Gџ^E[џ€_{џ“lŽџ–o‘џI9Gџџџџ џџџџ џџџџџ џџџџ џџџџџџџџ џџџџџ џџџџ џ џџџџџџџџџџџџџџџџџџџџџџџ џ џџџџџ%$џ?*=е?*='џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ?)џM2IџW9SџV9RџN4KџG/Eџ@*>џ?*=џ?*=џ?*=џ?*=џ?*=џ?*=џ?*=џ?*=џ?*=џ?*=я?*=з>*=Н>*<Ѕ?*<‘>)<ƒ>*=u>*=i>*=]?)=O?*>I?*>I>*=K?*)<]>*=m>*=}?*<™>)<П?*=ы?*=џ?*=џ?*=џD/BџeIaџiŠџŠzˆџJJJџ---џgggџ999џ3/+џMJGџџTNDџCBAџ)))џ)))џ@@@џ678џfhhџ'%"џTOHџ+**џџ^^^џџџџ42.џCDEџFHKџGGGџOIAџeb]џQMHџ=EGџ џџџJIHџDHMџWSKџECBџ!!!џ222џIIIџ?90џFECџџ@@@џџHHDџ`aaџ;:9џ)'$џ\ZXџџџџGGGџџ$" џZYXџd`^џgjoџSX[џџB?;џBBAџ&$џ>*<г?*<'џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ@,<?*=_>)=х?*<§?*=џ?*=џ?*=џ?*=џ?*=џ?*=џ>)<ћ>*=ы>*=н?)=Э?)=Е>)<>)*<+?*=?*=>*=>*< @*9<&8џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ=2=?*<>)<?(>?)=W?*<Ћ?*=ы?*=џ@+>џY?Vџ~q}џџџRRRџ###џHFEџ877џџ ˜џЂЄЅџ<)=Э>)=џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ=)=>)==?)<™?*<г?*=ы>)<ы>)<Я?*<Ћ>*<>**=G>*=-@)=џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ@+>?*=O>)=Я?*=џ@+>џlckџџџ===џџџ<;:џџ50*џ28=џ"""џCDCџ#(+џ63/џ<<<џџ:73џ &*џџ===џџџџB;5џ]]^џ656џЁŸџџ‘‘‘џџRRRџџџ%"џb`^џKJJџ72,џ49=џџIIHџ,25џ% џ69<џџ<==џ:;:џџ579џџ000џ000џџџџ‘‘‘џgeaџ=KSџџ)))џvxxџ59<џ џNNNџџ%$џ?*=У?*=џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ?)<?*< ?*= ?*= >*<?*<>,;џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ>)<%>*=б>*<џџџџџ џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџaaaџ џџџџџџџџџFFFџџџeeeџ џ%$џ>)<Џ=%=џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ='=>*=o>*=љџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ&$џ?)<‡џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ>+>1>*=ыK@Eџ‚€}џ&/6џџџIIIџ•™џEKSџvogџpkiџGNRџkgeџWZZџX[\џca_џ7CKџ322џџhhhџ‹‘—џDFKџtniџfddџ)16џšššџ!!!џbbbџrrrџџџџ%%%џ???џ221џ888џ^^^џoiaџpv{џ367џ———џ345џЇŸ•џЉЉЊџIHGџ~yuџŒ”џџџџŠŠŠџ)-1џC>8џ•“џNNNџdddџџџojbџ==>џџџџЁ›“џЂЂЁџ%$§?*<9џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ?+<%?*<щmfkџ@;Bџ[dfџџџџ4-'џ9?Bџimlџџvƒˆџ=@:џ@@?џhkkџffdџ&/7џџџ џH=3џ5AJџ[_Zџ-)%џ4=@џ___џџ555џ)))џџџџ###џ;;;џ8 џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ>*<7?*<эNFNџ‰„џ/8@џџџ%%%џIGEџ:@Cџ[VPџ`TLџ(6@џUPJџ>@BџhmpџKKKџ џџџ444џHDBџ*>>*=‘?*=џ8+.џ‰•џ,38џџџ џ>>>џ џ&"џ9AFџџ??>џ#џџ:?Cџ џџџџџ џQQQџLLLџџ888џџA;5џ%-џџABCџ џџџџ3'џ џ??@џSRQџ**,џ40-џ&-џџSSSџџ:::џJJJџџџџ"џ2:@џџџџџџџ;73џ&џ!!!џTTTџџ./0џ џ™™™џџџџџџџџџџџџџџџџџџџџсџџџeџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ ]Ыїџџџџ§ѓЙ [=);г?*=џmemџQIDџJB>џqqqџ,,+џMOPџABAџEGGџiheџ‹zrџ997џEC@џug`џuqjџSMGџ0/.џ:::џџџџ џ]YSџ:>@џџHHHџџBGJџobVџ2DRџGECџ[^_џ џџџcc`џџD:0џRY]џ..-џTTOџQF=џ$,џbbbџџCCCџ%%%џ џ џџomhџI7'џSgtџutsџuuuџџџ-+*џIJEџSKEџ(/џWWWџџRSRџџ™™™џћћћџЩЩЩџэээџўўўџџџџџџџџыўўўWўўўџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџƒѓџџџ џџџџџџѓ%#§=);џl^_џ…„„џKJIџ|||џDDCџwxvџqqrџ:@Eџ|umџІЄЂџ73.џwtqџtrpџ…}sџ–žЄџ689џvxxџNOMџџџџџABCџ),џџџrpnџ799џw…‡џGFFџTbdџ џџџ__`џџџ+&#џP_dџHLKџ1*+џ)46џ^^^џџAAAџџџ)))џџdhhџ џ\noџcjjџGFDџџџ)*+џ?CAџ946џ,46џRRRџџNMMџџ™™™џШШШџ'''џVVVџеееџџџџџџџџџўўўЅџџџ џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ Љ§џџ___џИИИџцццџщщщџтттџ›››џEEEџџџџ"!џџџџ€€€џeebџ џџџџ```џџ џTTTџџџџџџџџ џghhџWVVџ џџџe_Uџba`џ.))џca_џ55<џџџџb\Rџ џRSRџfdcџ%-1џ\VPџRVWџ џcccџџ]]]џџџџџWMDџinmџџ1%џTUUџџџџ]XUџKOOџ)),џVVVџџRTTџџoooџ"""џџ џ•••џџџџџџџџџџџџЋџџџ џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ }ћџ џšššџтттџщщщџщщщџщщщџщщщџщщщџзззџ}}}џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ џ џџџџџџџџџџџџџџџџџџџџџџџџџџџџџ џџџdddџяяяџџџџџџџџїџџџkџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ[ѓџџЙЙЙџъъъџъъъџъъъџъъъџъъъџыыыџыыыџыыыџъъъџžžžџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџQQQџёёёџџџџџџџџџџџџЇџџџ џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџгџџ˜˜˜џыыыџыыыџыыыџыыыџыыыџыыыџыыыџыыыџыыыџыыыџчччџ‘‘‘џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ\\\џтттџџџџџџџџ§ўўўЧџџџ'џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџƒћџjjjџхххџьььџьььџьььџьььџьььџьььџьььџьььџьььџэээџэээџъъъџlllџџџ  џD,AџE-BџE-BџE-BџE-BџE-BџE-BџE-BџE-BџE-BџE-BџE-BџE-BџE-Bџ$"џџџџoooџzzzџzzzџzzzџzzzџzzzџzzzџzzzџzzzџzzzџzzzџvvvџџџ§Ѓ{{{{{{{{ TTTЗљ„„„џ„„„џ„„„џ„„„џ„„„џ„„„џ„„„џ„„„џ„„„џƒƒƒџaaaџ///џџџџ џkkkџёёёџџџџџџџџџўўўгџџџ/џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ џџџ7џџџYџџџKџџџ9џџџ-џџџ#џџџџџџџџџџџџџџџ)сџџзззџэээџэээџэээџэээџэээџэээџэээџэээџэээџэээџэээџэээџэээџвввџ<<<џџџ`?\џ„V~џ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…WџvMpџ џџџџъъъџьььџьььџьььџьььџьььџьььџьььџьььџыыыџыыыџъъъџƒƒƒџџџЋџџџџџџџџџџџџџџџўўўџџџ/џџџЃџџџяџџџ§џџџџџџџџўўўџѕѕѕџсссџЭЭЭџГГГџ‹‹‹џ___џ444џџ џџџџ———џѕѕѕџўўўџџџџџџџџЭџџџ7џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџƒџџџыџџџџўўўџџџџѕџџџхџџџгџџџСџџџБџџџџџџ‡џџџm???›џџzzzџьььџюююџюююџюююџюююџюююџюююџюююџюююџюююџюююџюююџюююџюююџюююџЄЄЄџџџ+)џ|Qwџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ€Tzџ;&8џџџhhhџуууџэээџэээџэээџэээџэээџэээџэээџэээџэээџьььџьььџьььџжжжџ;;;џџэ;џџџџџџџџџџџџџџџџџџ=џџџзџџџ§џџџџџџџџџџџџвввџџVVVџ555џџџџџџџџџ'''џВВВџћћћџџџџџџџџџџџџгўўў1џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџAџџџїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ§ъъъћ...§џ%%%џЬЬЬџяяяџяяяџяяяџяяяџяяяџяяяџяяяџяяяџяяяџяяяџяяяџяяяџяяяџяяяџяяяџюююџEEEџџџ`>[џ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ^=Zџџџ+++џтттџюююџюююџюююџюююџюююџюююџюююџюююџюююџэээџэээџэээџэээџэээџЈЈЈџџџ џџџџџџџџџџџџQўўўуџџџџџџџџѓѓѓџЊЊЊџDDDџџџџџџџџџ+++џKKKџyyyџХХХџѓѓѓџўўўџџџџџўўў§ўўўЇўўў!џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџqџџџ§ўўўџсссџЧЧЧџфффџѕѕѕџјјјџљљљџћћћџ§§§џўўўџЕЕЕџџџ```џэээџ№№№џ№№№џ№№№џ№№№џ№№№џ№№№џ№№№џ№№№џ№№№џ№№№џ№№№џ№№№џ№№№џ№№№џ№№№џ№№№џЁЁЁџ џџ1 /џ„V~џ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ‚U}џ'%џџ џ™™™џяяяџяяяџяяяџяяяџяяяџяяяџяяяџяяяџяяяџюююџюююџюююџюююџюююџюююџуууџ***џџс!џџџџџџўўўџџџнџџџџўўўџчччџfffџџџџџџџBBBџxxxџЄЄЄџТТТџиииџѕѕѕџўўўџџџџџџџџџџџџџџџџѓўўў“ўўўџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ§§§џƒƒƒџџџџ111џKKKџeeeџџ–––џQQQџџџЖЖЖџёёёџёёёџёёёџёёёџёёёџёёёџёёёџёёёџёёёџэээџ№№№џёёёџёёёџёёёџёёёџёёёџёёёџпппџ>>>џџ  џsKnџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ„Wџ]=YџџџMMMџуууџ№№№џ№№№џ№№№џ№№№џ№№№џ№№№џ№№№џ№№№џ№№№џ№№№џ№№№џяяяџяяяџяяяџяяяџюююџџџџaџџџџџџџџџЇџџџџўўўџнннџBBBџџџџIIIџˆˆˆџЫЫЫџіііџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўўў§џџџпџџџ­ўўўGџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўўўџџџЁџџџџћћћџiiiџџџџџџџџџџџ'''џмммџёёёџёёёџђђђџђђђџђђђџђђђџцццџАААџWWWџ999џCCCџrrrџЦЦЦџэээџђђђџђђђџђђђџђђђџ………џџџN3Kџ„V~џ…Wџ…Wџ…Wџ…Wџ…Wџ…WџSyџ2 0џџџАААџёёёџёёёџёёёџёёёџъъъџФФФџ‡‡‡џwwwџІІІџиииџяяяџ№№№џ№№№џ№№№џ№№№џ№№№џ№№№џКККџџџЇџџџMџџџёџџџџђђђџ\\\џџџ---џЄЄЄџьььџўўўџџџџџџџџџџџџџџџџџџџџ§ўўўѓџџџщџџџгџџџџџџYўўў+џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўўўГџџџџњњњџOOOџџџџџџџџџџџ^^^џыыыџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџпппџ]]]џџџџџџџџщщщџѓѓѓџѓѓѓџѓѓѓџзззџџџ,*џ~Rxџ…Wџ…Wџ…Wџ…Wџ…Wџ…WџoHjџ  џџ777џьььџђђђџђђђџђђђџъъъџyyyџџџџџ***џЂЂЂџыыыџёёёџёёёџёёёџёёёџёёёџхххџ777џџзџџџЕџџџџџџџџЂЂЂџџџ888џиииџџџџџџџџџџџџџџџџџџџџяџџџЩџџџЁџџџ{ўўўMџџџ'џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџХџџџџјјјџ444џџџџџџџџџџџŽŽŽџѓѓѓџѓѓѓџѓѓѓџѓѓѓџєєєџщщщџcccџџџџџџџџ џuuuџьььџєєєџєєєџюююџ>>>џџ џsKnџ…Wџ…Wџ…Wџ…Wџ…Wџ…WџH/Dџџџџђђђџѓѓѓџѓѓѓџ№№№џџ џџџџџџџŠŠŠџэээџђђђџђђђџђђђџђђђџёёёџkkkџџы^^^iўўўэџџџџъъъџ???џџџРРРџ§§§џџџџџџџџэўўўБџџџWўўў)ўўўўўў џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўўў%џџџеџџџџіііџџџџџџџџџџџџДДДџєєєџєєєџєєєџєєєџѕѕѕџЖЖЖџџџџџџџџџџ џДДДџѕѕѕџѕѕѕџєєєџџџџ`?\џ…Wџ…Wџ…Wџ…Wџ…WџSzџџџ"""џЬЬЬџєєєџєєєџєєєџсссџ...џџџџџџџџџАААџѓѓѓџѓѓѓџѓѓѓџѓѓѓџђђђџŸŸŸџџ§ŠŠŠсўўўћџџџџИИИџџџ[[[џ§§§џџџџџџџџёџџџSџџџ џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ/ўўўчџџџџяяяџџџџџџџџџџџџкккџѕѕѕџѕѕѕџѕѕѕџѕѕѕџѕѕѕџZZZџџџџџџџџџџџBBBџыыыџіііџіііџЏЏЏџџџ?)<џ…Wџ…Wџ…Wџ…Wџ…WџfCbџ  џџVVVџѓѓѓџѕѕѕџѕѕѕџѕѕѕџНННџџџџџџџџџџ444џрррџєєєџєєєџѓѓѓџѓѓѓџЭЭЭџџџtttџћћћџџџџџџџџКККџџџџџџџџџџџџыџџџЁџџџSџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ9џџџїџџџџйййџџџџџџџџџџџ***џёёёџіііџіііџіііџіііџшшшџ444џџџџџџџџџџџџТТТџїїїџїїїџбббџ$$$џџ%#џ„Wџ…Wџ…Wџ…Wџ„V~џM2Iџџџšššџіііџіііџіііџіііџ™™™џџџџџџџџџџџЈЈЈџѕѕѕџєєєџєєєџєєєџмммџџџUUUџіііџџџџџHHHџџ"""џлллџџџџџџџџџџџџџџџџџџџџёўўўQџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџOџџџџџџџџКККџџџџџџџџџџџKKKџїїїџїїїџїїїџїїїџїїїџнннџ+++џџџџџџџџџџџџŸŸŸџјјјџјјјџёёёџ<<<џџ џyOtџ…Wџ…Wџ…Wџ€T{џ-+џџџкккџїїїџїїїџїїїџїїїџџџџџџџџџџџџPPPџђђђџіііџѕѕѕџѕѕѕџфффџ666џџџ{{{џ˜˜˜џџџ777џЫЫЫџьььџћћћџџџџџџџџџџџџџўўўПџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџiџџџџџџџџЁЁЁџџџџџџџџџџџbbbџїїїџјјјџјјјџјјјџјјјџфффџ///џџџџџџџџџџџџ“““џјјјџјјјџјјјџ```џџ џjEeџ…Wџ…Wџ…Wџ|Qwџ џџ999џчччџјјјџјјјџјјјџјјјџЁЁЁџџџџџџџџџџџ,,,џоооџіііџіііџіііџщщщџHHHџџџџџџџ џ***џ999џEEEџgggџљљљџџџџџџџџЭўўўџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ…џџџџџџџџƒƒƒџџџџџџџџџџџyyyџљљљџљљљџљљљџљљљџљљљџїїїџJJJџџџџџџџџџџџџ›››џљљљџљљљџљљљџˆˆˆџџџ\>>џ­­­џџџAAAџчччџѕѕѕџѕѕѕџѕѕѕџѕѕѕџѕѕѕџѕѕѕџѕѕѕџѕѕѕџѕѕѕџѕѕѕџѕѕѕџѕѕѕџѕѕѕџѕѕѕџѕѕѕџѕѕѕџѕѕѕџѕѕѕџєєєџђђђџHHHџџ џrKmџ…Wџ…WџzPuџџџ---џѓѓѓџѕѕѕџѕѕѕџіііџіііџіііџіііџіііџіііџіііџіііџїїїџїїїџїїїџїїїџїїїџїїїџїїїџїїїџїїїџїїїџЬЬЬџ!!!џџџџџџџџџџџЙЙЙџџџџџџџџ§џџџSџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўўўўўўŸџџџщџџџёџџџѕџџџ§џџџџаааџџџџџTTTџяяяџPPPџџџжжжџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџнннџ---џџџ€T{џ…Wџ…WџT{џ#!џџ!!!џтттџєєєџѕѕѕџѕѕѕџѕѕѕџѕѕѕџѕѕѕџѕѕѕџѕѕѕџѕѕѕџѕѕѕџіііџіііџіііџіііџіііџіііџіііџіііџіііџіііџЂЂЂџ џџџџџџџџџџџвввџџџџџџџџёџџџEџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ3џџџMџџџлџџџџдддџџџџџRRRџіііџ‘‘‘џџџ˜˜˜џєєєџєєєџєєєџєєєџєєєџєєєџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџЗЗЗџџџ5"2џ…Wџ…Wџ…Wџ…Wџ4"1џџџФФФџѓѓѓџєєєџєєєџєєєџєєєџєєєџєєєџєєєџѕѕѕџѕѕѕџѕѕѕџѕѕѕџѕѕѕџѕѕѕџѕѕѕџѕѕѕџѕѕѕџѕѕѕџѕѕѕџђђђџaaaџџџџџџџџџџџ џуууџџџџџџџџуџџџ7џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўўўџџџЛџџџџоооџџџџџJJJџёёёџШШШџџџMMMџэээџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџёёёџŒŒŒџџџU7Qџ…Wџ…Wџ…Wџ…WџI0Fџџ џЂЂЂџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџчччџџџџџџџџџџџџ###џшшшџџџџџџџџеџџџ)џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўўўџџџ­џџџџшшшџ!!!џџџџ@@@џъъъџіііџBBBџџџСССџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџёёёџёёёџёёёџёёёџёёёџёёёџёёёџьььџKKKџџ џpIkџ…Wџ…Wџ…Wџ…WџdB`џџџ{{{џ№№№џђђђџђђђџђђђџђђђџђђђџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџЈЈЈџџџџџџџџџџџџ:::џэээџџџџџўўўЩўўўџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўўў—џџџџњњњџ...џџџџ+++џйййџџџџџ›››џџџvvvџюююџ№№№џ№№№џ№№№џ№№№џ№№№џ№№№џ№№№џ№№№џ№№№џ№№№џ№№№џ№№№џ№№№џ№№№џ№№№џ№№№џжжжџ џџ(&џ}Qwџ…Wџ…Wџ…Wџ…WџyPtџ  џџGGGџфффџёёёџёёёџёёёџёёёџёёёџёёёџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџцццџMMMџџџџџџџџџџџџQQQџѓѓѓџџџџџџџџЛўўў џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџwџџџџџџџџOOOџџџџџШШШџџџџџнннџ"""џџџсссџ№№№џ№№№џ№№№џ№№№џ№№№џ№№№џ№№№џ№№№џ№№№џ№№№џ№№№џяяяџяяяџяяяџяяяџяяяџ‰‰‰џџџI/Fџ„V~џ…Wџ…Wџ…Wџ…WџSzџ&$џџџжжжџ№№№џ№№№џ№№№џ№№№џёёёџёёёџёёёџёёёџёёёџёёёџёёёџёёёџёёёџёёёџђђђџђђђџђђђџИИИџџџџџџџџџџџџџgggџјјјџџџџџџџџЋўўўџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўўўUџџџѕџџџџ|||џџџџџІІІџџџџџњњњџzzzљ§џ|||џыыыџяяяџяяяџяяяџяяяџяяяџяяяџюююџюююџюююџюююџюююџюююџюююџюююџдддџ333џџ џtLoџ…Wџ…Wџ…Wџ…Wџ…Wџ„V~џI/Eџџџ“““џяяяџяяяџяяяџяяяџяяяџяяяџ№№№џ№№№џ№№№џ№№№џ№№№џ№№№џ№№№џ№№№џ№№№џ№№№џяяяџQQQџџџœœœџHHHџџџџџ˜˜˜џŠŠŠџjjjџWWWџЃЃЃџ§§§џџџџџўўўџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ=џџџхџџџџ­­­џџџџџkkkџџџџџџџџџжжжѕїџ&&&џФФФџюююџюююџюююџюююџюююџюююџюююџэээџэээџэээџэээџэээџэээџэээџ‘‘‘џџџ3!0џ„V~џ…Wџ…Wџ…Wџ…Wџ…Wџ…WџfCbџ  џџHHHџчччџюююџюююџюююџюююџяяяџяяяџяяяџяяяџяяяџяяяџяяяџяяяџяяяџяяяџяяяџРРРџ џџ===џЯЯЯџ$$$џџџџџўўўџџџџџџџџџўўўџ§§§џџџџџџџџџўўўoџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўўўџџџЭџџџџкккџџџџџ$$$џїїїџџџџџџџџџdddУћџJJJџчччџэээџэээџэээџэээџэээџэээџэээџэээџэээџьььџьььџьььџжжжџџџ  џjEeџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ‚U|џ'%џџџЌЌЌџэээџэээџэээџюююџюююџюююџюююџюююџюююџюююџюююџюююџюююџюююџмммџEEEџџџАААџСССџџџџџNNNџџџџџџџџџџџџџџџџџџџџџџџџџўўўеџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџŸџџџџюююџLLLџџџџ џОООџўўўџџџџџкккЭ ЧџџŠŠŠџчччџьььџьььџьььџьььџьььџьььџьььџьььџыыыџыыыџтттџjjjџџџ;'9џ€Tzџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ]?YџџџSSSџчччџьььџьььџэээџэээџэээџэээџэээџэээџэээџэээџэээџэээџыыыџ„„„џџџGGGџїїїџ~~~џџџџџџџџџџџџџ§ўўўУџџџЏџџџСџџџ™џџџ3џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ[џџџџ§§§џ‹‹‹џџџџџjjjџјјјџџџџџџџџщ†††{эџџ•••џыыыџыыыџыыыџыыыџыыыџыыыџыыыџыыыџыыыџъъъџ‡‡‡џ џџ џyOtџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…^€џ&%џџџЊЊЊџьььџьььџьььџьььџьььџьььџьььџьььџьььџьььџэээџыыыџЏЏЏџџџџХХХџыыыџ666џџџџџТТТџџџџџџџџёџџџ1џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ!џџџчџџџџлллџџџџџ###џеееџџџџџџџџ§ќќќЅ sёџџџоооџъъъџъъъџъъъџъъъџъъъџщщщџрррџŒŒŒџџџ џZ>>џfffџgggџFFFџџџџ  џT=Qџ“kŽџŠ^…џ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџf‹џ–n‘џŒhˆџA-?џ џџџ:::џЏЏЏџфффџщщщџщщщџщщщџщщщџдддџ‹‹‹џџџџXXXџшшшџўўўџТТТџџџџџџтттџџџџџўўўчџџџ9џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџЫџџџџяяяџPPPџџџџџkkkџіііџџџџџџџџїџџџyOзџџџџџџџџџB.?џ’kџ—o’џbˆџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ‡Yџ•mџ–o‘џwXsџB-@џ4#3џёџџџbbbџЃЃЃџЦЦЦџДДДџ†††џ999џџџ§KKKљтттџџџџџёёёџUUUџџџџџgggџљљљџџџџџџџџБџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџWџџџљџџџџЩЩЩџџџџџџЏЏЏџџџџџџџџџўўўїўўўKџџџ cГйщэлЙ у;'9џL4JџŠe†џ—o’џ’iџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…WџŽd‰џ—o’џ‘kŒџY@Vџ?*=џ>*<ѓ;Ћћџџџџџџџџчnnnзїїї§џџџџџџџџ“““џ џџџџ!!!џбббџџџџџўўў§џџџGџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџХџџџџ§§§џ\\\џџџџџ666џиииџўўўџџџџџўўўгџџџ7џџџџџџ+79->)<…?*=џC-AџzYvџ–n‘џ–m‘џ‡Yџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџˆ[‚џ”kŽџ—o’џ_~џC.Aџ?*=џ>*=Љ=*=qеѕћ§§їщЇїїїщџџџџўўўџсссџџџџџџrrrџќќќџџџџџџџџЧџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџOџџџѕџџџџкккџ000џџџџџFFFџёёёџџџџџџџџџџџџеџџџ/џџџџџџџџџџџџџџџџџџџџџ>)=7>*<ї?*=џ`E]џ•nџ–n‘џa‡џ…Wџ…Wџ…Wџ…Wџ…Wџ…WџfŠџ–o‘џ•mџ^D[џ?*=џ?*=ы>**=љ?*=џlNhџ–n‘џ–n‘џŽcˆџ…Wџ…Wџ…Wџ‰]„џ”lџ—o’џ“lŽџY?Vџ?*=џ?*=ћ?)=OџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџGџџџуџџџџџџџџѕѕѕџ~~~џџџџџџlllџќќќџџџџџџџџыџџџ+џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ[џџџљўўўџюююџVVVџџџџџџqqqџщщщџџџџџўўўџўўўяџџџ}џџџџџџџџџџџџџџџ@+;?)<е?*=џK4Iџ„aџ—o’џ•mџŽc‰џ‰\ƒџŒa‡џ”lџ–o‘џ•mџqQmџ@+>џ>*=§>*<Џ=*<џџџџџџџџџџџџџџџџџџџџџџџџўўўџџџыџџџџўўўџёёёџ{{{џџџџџџSSSџхххџџџџџџџџѕџџџqџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўўўџџџЅџџџ§џџџџмммџ===џџџџџџ]]]џэээџџџџџџџџџџџџїџџџЛџџџ3џџџџџџџџџџџџ?)>>џРРРџћћћџџџџџџџџџџџџѓџџџЅџџџ7ўўў џџџ?*<?*<­?*<џ@*=џaD]џŒfˆџ–n‘џ—o’џ—o’џ’jџyUuџD-Bџ?*=џ?)=ѕ?*=o?*?џџџџџџџџџџџџџџџџџџ5ўўў›ўўўѓџџџџџџџџџџџџЪЪЪџIIIџџџџџџ111џЧЧЧџўўўџџџџ§џџџХўўўџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ%џџџЯўўўџџџџџаааџ>>>џџџџџџџџѓѓѓџўўўџџџџџџџџџўўўуџџџЅџџџEћћћ L8J/?*=х?*<џ@+>џU:RџuQpџƒ\~џ{Uvџ_A\џE.Cџ?*=џ?*=ћ?*=—@'>џџџџџџџџџџџџ џџџ5џџџ›џџџпџџџџџџџџўўўџѕѕѕџЇЇЇџ###џџџџџџ џЪЪЪџ§§§џџџџџџџџпџџџ7џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўўў/џџџЫџџџџџџџџэээџRRRџџџџџџџ888џІІІџїїїџџџџџџџџџџџџџџџџџџџџпџџџ™­Є­—S@Qэ?*=џ?*=џ?*=џ?*=џ?*=џ?*=џ?*=џ?*=ѓ>)=‘M3Mџџџџџџ)ўўўQџџџƒџџџгўўў§џџџџџџџџџџџџљљљџТТТџMMMџџџџџџџBBBџаааџўўўџџџџџџџџсџџџCџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ5џџџЯџџџ§џџџџцццџuuuџ џџџџџџџPPPџГГГџ№№№џ§§§џџџџџџџџџџџџџќќќїмилїvguџL8JџB-@џ?*=џ?+=џH4FџYGWїЄšЃПюьюŸџџџБўўўЩџџџлџџџёџџџџџџџџџџџџўўўџєєєџЯЯЯџgggџџџџџџџџUUUџмммџўўўџџџџџџџџчўўўIџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ/џџџХџџџџџџџџ§§§џЇЇЇџ+++џџџџџџџџCCCџŽŽŽџгггџќќќџџџџџџџџџџџџџњњњџвЭвџЈŸЇџš™џŸ”žџТЛТџёяёџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўўўџчччџЅЅЅџWWWџ џџџџџџџџ†††џђђђџџџџџџџџџџџџзџџџIџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўўў%џџџЁџџџљџџџџќќќџкккџdddџџџџџџџџџџGGGџƒƒƒџУУУџкккџщщщџєєєџўўўџўўўџџџџџџџџџџџџџџџџџўўўџїїїџэээџсссџЬЬЬџЃЃЃџXXXџ$$$џ џџџџџџџ џEEEџЩЩЩџљљљџџџџџџџџћџџџЩџџџ/џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ џџџƒџџџэџџџџџџџџњњњџДДДџDDDџџџџџџџџџџџ џ???џYYYџqqqџ€€€џџ•••џџƒƒƒџuuuџ^^^џJJJџ...џ џџџџџџџџџџ'''џŸŸŸџэээџџџџџџџџџџџџ§ўўўŸџџџ!џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ;џџџЩџџџћџџџџўўўџєєєџБББџQQQџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ џ333џ’’’џчччџ§§§џџџџџџџџџџџџлџџџgџџџ џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ!ўўўƒџџџяџџџџџџџџџџџџєєєџГГГџiiiџџџџџџџџџџџџџџџџџџџџџџџџџџCCCџЃЃЃџуууџўўўџџџџџџџџџџџџћўўўЉџџџ9џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ%ўўў—џџџхџџџџџџџџџџџџџџџџєєєџЏЏЏџfffџ:::џџџџџџџџџџџџџџџџџ џ+++џMMMџ———џтттџџџџџџџџџџџџџџџџџџџџїџџџБџџџKџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ џџџ7џџџџџџчџџџћџџџџџџџџџџџџћћћџфффџЪЪЪџЅЅЅџ‚‚‚џZZZџ777џџџџџџџџ,,,џKKKџlllџ˜˜˜џПППџйййџёёёџџџџџџџџџџџџџџџџ§ўўўѓџџџНџџџYўўўџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўўўџџџwџџџЛџџџѕџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџјјјџщщщџтттџшшшџёёёџљљљџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ§џџџеўўў‘џџџ?џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ7џџџuџџџЗџџџнџџџэџџџљўўўџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ§џџџѓџџџхџџџЭўўў‹џџџKџџџ!џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџEџџџkўўў‡ўўўЋўўўЧџџџлўўўыўўўѓџџџїџџџѕџџџэџџџхџџџЯџџџЙџџџЁџџџ{ўўўWџџџ-џџџ џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ ўўўџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџL џџџџ h  Ј00 Ј%@@ (B€€ (gpodder-3.9.0/tools/win32-launcher/folderselector.h0000644000016000001710000000016012654461624023356 0ustar jenkinsjenkins00000000000000#ifndef _FOLDERSELECTOR_H #define _FOLDERSELECTOR_H void DetermineHomeFolder(int force_select); #endif gpodder-3.9.0/tools/win32-launcher/makefile0000644000016000001710000000316312654461624021677 0ustar jenkinsjenkins00000000000000# # gPodder - A media aggregator and podcast client # Copyright (c) 2005-2016 Thomas Perl and the gPodder Team # # gPodder is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 3 of the License, or # (at your option) any later version. # # gPodder is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . # # # # Makefile for building the Win32 Launcher for gPodder # Thomas Perl ; 2009-04-29 # CROSS ?= i686-w64-mingw32 CC := $(CROSS)-gcc CXX := $(CROSS)-g++ CPP := $(CROSS)-cpp RANLIB := $(CROSS)-ranlib STRIP := $(CROSS)-strip WINDRES := $(CROSS)-windres LDFLAGS += -lkernel32 -lshell32 -lole32 MODULES := gpodder folderselector TARGETS := gpodder.exe gpo.exe all: $(TARGETS) gpodder.exe: gpodder-res.o $(addsuffix _gui.o, $(MODULES)) $(CC) -o $@ -mwindows $^ $(LDFLAGS) $(STRIP) -s $@ gpo.exe: gpo-res.o $(addsuffix _cli.o, $(MODULES)) $(CC) -o $@ $^ $(LDFLAGS) $(STRIP) -s $@ %_gui.o: %.c $(CC) -c -o $@ $(CFLAGS) -DGPODDER_GUI $^ %_cli.o: %.c $(CC) -c -o $@ $(CFLAGS) -DGPODDER_CLI $^ %-res.o: %.res $(WINDRES) $^ $@ clean: $(RM) *.o distclean: clean $(RM) $(TARGETS) .PHONY: distclean clean all .DEFAULT: all gpodder-3.9.0/tools/win32-launcher/README0000644000016000001710000000037012654461624021054 0ustar jenkinsjenkins00000000000000The Win32 launcher can now be cross-compiled on Linux for Windows. On Fedora, install: mingw32-gcc-c++ Then, to build, use: mingw32-make This should result in gpo.exe and gpodder.exe that can be used for the .zip and the .exe release. gpodder-3.9.0/tools/win32-launcher/gpodder.res0000644000016000001710000030363412654461624022344 0ustar jenkinsjenkins00000000000000 џџџџh џџџџ(  џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ-+% 3.+9,5;;+8U<+9c<+9i<+9i<+8c;+7Y9,5I6.0520*#1/)-+$ џџџU=R•qPmѕ~Xyџ†]џŠ`…џŒa‡џŒa‡џŠ`…џ†]џ€Y{џxTtџnNjэV>RЗ7,23џџџ?*<tPoї…Wџ‡Zџˆ\ƒџˆ[‚џ†Y€џ†Yџ†Yџ†Zџ‡Z‚џ‡[‚џˆ\ƒџŠ_…џhIdЫџџџџџџ`C]­nNjЩgHcЃ`C]‹cF_‘tRpп†X€џ…Wџ‡ZџvRrћtPpљXzџ‹`†џuRqљ?)<џџџџџџџџџџџџџџџC>+<‰]„џ…WџqNmї)>*=?)<-R8Os„p‚БфффKџџџџџџўўў џџџCSSSuаааџ•’•џyOsџzPtџ‚}‚џЂЂЂї7фффU˜˜˜Љ‘‘‘яЮЮЮgџџџџџџўўў;BBBџxxxџџŒŒŒџeMbџhSfџ“““џЄЄЄџг’’’љвввўўў7џџџџџџџџџњњњW џŒŒŒџiiiџOOOџp}џƒŒџrrrџGGGџlllџ???џџџџ5џџџџџџџџџџџџпппq џ~~~џљљљџїїїџrџ˜’—џїїїџьььџYYYџFFFџџџџџџџџџџџџџџџџўўўpppпƒƒƒџђђђџёёёџiSfџ‡~†џѓѓѓџ№№№џ џgggљџџџџџџџџџџџџџџџџџџ“““Ѓwwwё‘‘‘эŠџuMpџdKaџаааџ•••џMMMџўўўkџџџџџџџџџџџџџџџџџџњњњ/]]]љВВВЃVATƒ‰_„џdF`­^^^gxxxяŒŒŒЧџџџџџџџџџџџџџџџџџџџџџџџџмммQlllёlllяf\eџ|z|гcccљ‹‹‹ЯўўўџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџиииqžžžЈЈЈ•яяяWџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџЈ џџџџ( @ џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ##")'%,)! ,*& /+$ 1.'/.(.,*2-(30'31'31'30'2-(.,)/.(0.'.+$ ,+' *( )(#%"џџџџџџџџџџџџџџџџџџ)(! /-(20*)4/-;9-5_;+7}<+9“<+:Ѕ=*:Б=*;Й=+:Н=*:П=+:П=+:Л=+:Е=+:Џ<+9Ѕ<,8™;,7‹:,6{8.3i50/O31+C31+;20*320*)0.&)' џџџџџџџџџ2-*!;,7‰E0Bз[?XћlLhџyVuџ‚]}џ‡aƒџŒd‡џf‰џg‹џg‹џg‹џfŠџeˆџŠc…џ†`џ\|џzXvџsRoџjKgџ_B\џP7Mэ@-=Щ;-6™50.[31+?.-'џџџџџџџџџC-AЋtRpџg‹џŽd‰џ‹`†џ‰]„џ‡[‚џ‡[‚џˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџ‰]„џŠ^…џ‹`†џcˆџf‹џeˆџvTrџQ8Nэ<*:k&$џџџџџџџџџ?*< Z>VѓŽcˆџ…Wџ…X€џ†Y€џ†Yџ†Zџ‡Zџ‡Z‚џ‡[‚џ‡[‚џ‡[‚џ‡[‚џˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџŠ_…џg‹џfGb§?*=Yџџџџџџџџџ?)<V;Sыcˆџ…Wџ…Wџ†Y€џˆ\ƒџŠ]„џŠ^„џ‰]„џ‡Zџ…Wџ…Wџ…Wџ…Wџ…Wџ…Xџ…X€џ†X€џ†Y€џ†Zџ‡[‚џ‡[‚џˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџg‹џL4JеџџџџџџџџџџџџH0FХgŠџŽeˆџ„^џwUsџlMiџeGbџaD^ћcF`§lNiџ‚^}џ‹`†џ…Wџ…Wџ…Wџ…Wџ…Wџ…WџŠ^„џbˆџbˆџŒ`†џ‰]„џ‡[‚џ‡[‚џˆ\ƒџŽd‰џZ>Wѓ?)< џџџџџџџџџ?*=;D-BЕA+?Ї>*=}>**<7>*)=?)<>*=/?*=ƒjLg§Š^…џ…Wџ…Wџ…Wџ…WџŽe‰џiJeџW;TэV;Sэ^B[ћmMiџ€[{џŽf‰џŽd‰џfŠџX=Uё>)=џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџK3HЫeŠџ…Wџ…Wџ…WџŒ`†џbE_§>*=G>)<>)=>*=?)<;?)пKџџџџџџџџџџџџџџџ?*<Q?PGьъьПннныџџџ7џџџџџџџџџџџџџџџџџџџџџџџџџџџwџцццџЄЄЄџ5)3џ†Z€џ…Wџ…Wџ„V~џI3Gџ]]]џŽŽŽџ,,,у%џџџџџџџџџ џџџ=ўўўiѕѕѕЧdddџАААћџџџ?џџџџџџџџџџџџџџџўўўўўўўўў{СССeMMMѕэээџюююџюююџŽŽŽџT7Pџ…Wџ…WџZ;VџvvvџьььџьььџгггџЙџџџџџџcзззщџaaaџKKKџЙЙЙљџџџcџџџџџџџџџџџџџџџџџџџџџg{{{џMMMџCCCџЏЏЏџ№№№џ   џЈЈЈџыыыџ6,4џ„V~џƒU}џ706џъъъџЋЋЋџЩЩЩџяяяџeee§ЃЃЃ_ЎЎЎ§YYYџИИИћцццеўўўџџџ;џџџџџџџџџџџџџџџџџџџџџџџџ@@@џџџшшшџЃЃЃџџџžžžџedeџwNqџeB`џƒƒƒџИИИџџ џЮЮЮџІІІџœœœёNNNџњњњыџџџ/џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўўў$$$џџџјјјџџџџhhhџ™™™џ^=ZџB+?џЫЫЫџ­­­џџџџЪЪЪџџџƒƒƒџџџџuџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџіііЙџџ###џћћћџшшшџ111џџСССџЕЕЕџQ5Mџ3$1џѓѓѓџђђђџ***џџŸŸŸџдддџџџcccџџџџ]џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџфффеџџџњњњџћћћџљљљџѕѕѕџњњњџЙЙЙџN3Kџ6+5џћћћџќќќџюююџФФФџњњњџХХХџџџџџџџCџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџйййы&&&џџџхххџјјјџјјјџїїїџїїїџЄЄЄџX9Tџ6+5џјјјџјјјџљљљџљљљџљљљџžžžџџџ›››џџџџ'џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџeѓѓѓнџiiiџЉЉЉџєєєџєєєџєєєџѓѓѓџwwwџmGhџ3$1џыыыџѕѕѕџѕѕѕџѕѕѕџіііџ]]]џџџЖЖЖљџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџќќќЁџІІІџUUUџ№№№џ№№№џ№№№џюююџ=7<џƒU}џG.DџЙЙЙџёёёџёёёџђђђџуууџ"""џџџвввыџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўўўqFFFџ{{{џlllщЉЉЉџьььџьььџžžžџI0Fџ…WџsKnџ]]]џэээџэээџюююџqqqџdddџџўўўйўўўџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ!ЂЂЂћџшшшпЙtttџuuuџ7+5џƒV}џ…Wџ‹_†џ3&1џ‹‹‹џкккџџwwwџBBBџpppџџџџUџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџљљљЃ222џfffџќќќЃ9 K`D]ћŠ^…џ…WџˆaƒџA,?eŽŽŽПЁЁЁџџооолџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџдддхџuuuџљљљЕўўў!D.BЇ†`џfŠџZ?Wѓ>*=%џџџўўў‹­­­§ џЅЅЅћџџџEџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ3ЯЯЯы%%%џ888џЙЙЙїцфцЧ{jy§jVhџЏІЎБўўў›зззщbbbџ џ   §ўўўkџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ%яяяЧџџџNNNџdddџXXXџ...џџVVVџеееыўўўSџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџUїїїНОООї’’’џ~~~џˆˆˆџЌЌЌ§чччйџџџ}џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ џџџ1џџџEџџџ;џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџЈ% џџџџ(0` џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ*%$$$2).-"/-) **% ''' )%% 5'% 4.# 22" 22" 22" 22" 4.# 5'% *&& ((& ++& .-) .."/)$$$*%џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ!%#*%" -,%.+%1.)0-)1/(1/*#10*'20))20)-30+/30+130,740,930,941,951,741+741+741+531+520*531*321+330+120+/20)+20))1/+'2/*#0/'/-)0.(.,&/.%'&" '" џџџџџџџџџџџџџџџџџџ )( .-'1/))20*331+;6/0Q:,6u;+8•=+:­=*;С=*;б>*<п>*<ы>*<ѓ>*<ї>*<љ>*<љ>*<љ>*<љ>*<љ>*<ї>*<ё>*<ы>*;у>*;й=*;Я=+:У<+9Е<,8Ї;,7™:-5‡8/3s51.Y41+O32+K31+G31+A31+;21+31/('/.''% џџџџџџџџџџџџ/-&2/)38-3m<+9Е?*<чE.BџS8PџaD^џmMiџwTsџ~Zzџ…_€џ‰c…џŽf‰џh‹џ’jџ“jŽџ“jŽџ’jŽџ’jџh‹џfˆџŠc…џ†`џ\}џ|XxџuSqџoNkџgHdџ`B]џW;TџM3JџC-Aџ?*=э=+:Ы;,7Ѕ8/1w41,[31+S31+G20)1-+$џџџџџџџџџџџџ 8*2!>*;ЙI1FџiIeџ„_џ“kŽџ•lџ’iџf‹џŽd‰џbˆџŒ`†џ‹`†џŠ_…џŠ^…џŠ^…џŠ^„џŠ^„џŠ^…џŠ_…џŠ_…џ‹`†џ‹`†џŒa‡џbˆџŽc‰џeŠџf‹џ‘hŒџ“iџ”kџ•mџ“kŽџ‡a‚џuSqџ_B\џG0E§>*;й:,630+30/)('"  џџџџџџџџџџџџџџџ>)<БaC^џ’jџ’iџb‡џ‰]„џˆ[‚џˆ\ƒџˆ\ƒџˆ\‚џ‡[‚џˆ[‚џˆ\ƒџ‡\‚џˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџ‡\‚џˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџ‡\‚џˆ\ƒџˆ\ƒџ‡[ƒџˆ\ƒџ‡[ƒџˆ\ƒџ‰^„џŒa‡џeŠџ“jŽџ’jџxUtџN5Lџ>)<Л:(6 џџџџџџџџџџџџџџџ?*< A+?эgŠџŠ^…џ…Xџ†X€џ†Y€џ†Yџ‡Zџ‡[‚џ‡[‚џ‡[‚џ‡[‚џˆ\ƒџ‡[ƒџˆ\ƒџˆ\ƒџ‡[ƒџˆ\ƒџˆ\ƒџ‡[ƒџˆ\ƒџˆ\ƒџ‡[ƒџˆ\ƒџˆ\ƒџ‡[ƒџˆ\ƒџˆ\ƒџ‡[ƒџ‡[ƒџˆ\ƒџ‡[ƒџ‡[‚џˆ\ƒџ‡[ƒџˆ\ƒџŠ^…џg‹џ“kŽџdEaџ?*=Ы>)= џџџџџџџџџџџџџџџ?); @+>ыŽgŠџˆ[‚џ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Xџ…X€џ…X€џ†X€џ†Y€џ†Yџ†Yџ†Zџ‡Zџ‡Zџ‡[‚џ‡[‚џ‡[‚џˆ\‚џˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџ‡[‚џˆ\‚џˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџ‡\‚џŠ_…џ”lџZ>Wџ?*<{џџџџџџџџџџџџџџџ?(??)=п‰c„џ‰]„џ„V~џ„V~џ…Wџ‡Yџ‰\ƒџ‹_…џŒa†џb‡џb‡џŒa‡џŠ^…џ‡Zџ…Wџ„V~џ…Wџ„V~џ„V~џ„V~џ„V~џ„V~џ…Wџ…Wџ…Wџ…Wџ…Wџ…X€џ†Yџ‡Zџ‡[‚џˆ[‚џ‡[‚џ‡[‚џˆ\ƒџ‡[ƒџ‡[‚џˆ\ƒџcˆџ‚]~џ?)=г@);џџџџџџџџџџџџџџџ?)=ЛzVvџ’hŒџf‹џ“jŽџ•mџ’kџ‹d†џ\|џyWuџuSpџrQnџsSoџyXuџ‡c‚џ“kŽџŽcˆџ†X€џ…Wџ„V~џ…Wџ…Wџ…Wџ…Wџ…Wџ„V~џ…Wџ…Wџ‡Zџ‰]ƒџ‰]ƒџˆ[‚џ†Y€џ†Y€џ‡Zџ‡[‚џˆ\ƒџ‡[‚џˆ\ƒџŠ^…џhŠџA+?ы?)< џџџџџџџџџџџџџџџ>*=eN4KџpOlџhIeџZ>WџM3JџC,@ѕ?*=ч>)<Ы?)<Г>*<Ё>)=•>)<™>*<Ћ?*=бI2GљoPkџ’jџ‡Yџ„W~џ…Wџ…Wџ„W~џ…Wџ„W~џ…Wџ‹`†џ”kџ‘iŒџŠc…џŠd…џhŠџ“lџ”kџg‹џb‡џ‰]„џ‡[‚џ‡[‚џ‰^„џh‹џB,@я?)=џџџџџџџџџџџџџџџ@*=?**<[?*=3?)<=,<џџџџџџџџџџџџџџџџџџџџџ?*='?*=СlNiџfŠџ„V~џ…Vџ…Wџ…Vџ…Vџ…WџŒa‡џfˆџZ>WџC-Aѓ?*=с>*<уA+>ыG0EћT9QџfGbџ{WvџhŠџ”kџf‹џŽcˆџŒe‡џ?*=ч>)=џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ>*=5N5Kџ”kџ…Wџ…Wџ…Wџ„V~џ…Wџ†X€џ”lџR8Pџ>*=‹?*<<(<<*<?)= >*=?)>>џџџџЙЙЙџјјјџCCCџџџџџўўўЁџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџђђђџџџџџВВВџћћћџќќќџРРРџ'''џџnnnџљљљџћћћџџwNrџ<':џ†††џћћћџќќќџШШШџџџџыыыџњњњџCCCџџџџœœœџџџџ…џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ9уууџџџџџЄЄЄџћћћџќќќџќќќџїїїџюююџћћћџћћћџњњњџџuLpџ1 /џџћћћџќќќџќќќџнннџџлллџќќќџћћћџ444џџџџИИИџџџџiџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџUЬЬЬџџџџџ‡‡‡џљљљџњњњџњњњџњњњџљљљџљљљџљљљџіііџџzPuџ-+џЄЄЄџљљљџњњњџњњњџћћћџћћћџћћћџћћћџјјјџџџџџгггџўўўOџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџmЭЭЭџBBBџџџџZZZџїїїџїїїџїїїџїїїџїїїџїїїџіііџфффџџ€T{џ1 /џ›››џїїїџјјјџјјјџјјјџљљљџљљљџљљљџлллџџџџџчччџўўў3џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўўў%џџџПџџџэyyyџџˆˆˆџ џёёёџєєєџєєєџєєєџєєєџєєєџєєєџСССџџ„V~џ=(:џџѕѕѕџѕѕѕџѕѕѕџіііџіііџіііџіііџ   џџџџџљљљћџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ…џџЏЏЏџ+++џМММџђђђџђђђџђђђџђђђџђђђџёёёџџ7$5џ…WџR6OџUUUџђђђџѓѓѓџѓѓѓџѓѓѓџѓѓѓџєєєџѓѓѓџOOOџџџџ***џўўўэџџџ џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџi   џџŽŽŽџˆˆˆ§UUUџяяяџяяяџяяяџяяяџяяяџыыыџ...џc@^џ„WџrJmџџъъъџ№№№џ№№№џёёёџёёёџёёёџбббџџџџ333џ\\\џџџџнџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ9дддџџOOOџэээљёГГГџэээџэээџэээџэээџŸŸŸџџ‚U|џ…WџƒV}џџЇЇЇџюююџюююџюююџюююџэээџYYYџqqqџџџўўў§ўўўѓўўў•џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ §§§ч)))џ џцццџЕћСССџъъъџъъъџСССџџdA`џ…Wџ…Wџ…WџaE^џ,,,џрррџыыыџьььџьььџ–––џ)))џЈЈЈџџaaaџўўўПџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ‘‘‘‘џџrrrџўўўу---q ѓPPPџRRRџ џ]DZџ‡Zџ„V~џ„Vџ‡Z‚џˆdƒџ§>>>џПППџбббџuuuџ§ЮЮЮџEEEџџТТТџўўўgџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўўў#іііѕ$$$џџФФФџўўўЕ:::ac6$4СyWuџ‹`†џ„V~џ…WџeŠџgJcџ<(:‰yнщГооояЄЄЄџџFFFџ§§§чџџџ џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўўўƒСССџџџиииџџџџ­ўўўџџџ?*=YW=Tџ’iџ…XџŠ^„џgˆџD.Bѓ>*=џџџџџџџџџџџџЧШШШџџџиииџџџџeџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўўўХ™™™џџџЦЦЦџўўўзўўўGp`n @*=бvVrџ”lџ‘jŒџU;Sџ>*=џџџџџџўўўWџџџуИИИџџџЌЌЌџџџџБўўўџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўўўеœœœџ џџwwwџыыы§џџџЩЧСЦЅS@QћT:QџJ2GџZHXЗяэя?џџџyџџџбщщщџoooџџ џЇЇЇџўўўЫўўўџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўўўХЧЧЧџ///џџџhhhџЕЕЕџйзиџФОФџидиџћћћљцццџЖЖЖџgggџџџ222џЬЬЬџџџџПўўўџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ џџџ‰јјјљџ---џџџџџџџџџџ---џžžžџњњњљџџџ…ўўў џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўўў'ўўўŸўўўѕгггџџdddџHHHџ<<<џFFFџbbbџџвввџўўўѕџџџЁўўў'џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџYўўў•ўўўСўўўнўўўчўўўпўўўХўўў—џџџYўўўџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ(B џџџџ(@€ џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ  :(11,,,***%%%$$$""",!!9%!8, 6644444444668, 9%!,!!"""$$$&&&***,,,334( џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ *" '% .*' ((& .)"/-%0.),+'/+(1/%1/&2-*10(//(/.+0-+!2.*!2/)!20(#31(#30(#31)#30)#30)#31(#20(#2/)!2.*!1.+!/.*0/(00(1.*0.%1/%.+),,(1.)..#+'"(($ .,$ )# ##### џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ,%# ,*#.-(1-'0.(2/)#2/*'20++20*/20*320+531,96//G7.2U8-3_:,5k:,6q:,6u:-6}:-6}:,6:,6:-6;-6{;-6y:-5u:-4q9.4k9.3e7/2]5//U4/-M31+G32+E31,C31,C30,A31+?31+=31*;31+730+520*320*/20*+1/)'1/)#0.)0.&--(-)!(& џџџџџџџџџџџџџџџџџџџџџ)' .-%//)%10*/20+931+?31,E8.2c;,6…<+9Ѕ=*:П>*;е>*<щ>*<ѕ>*<љ>*<ћ>*<§>*<§>*<џ?*=џ?*=џ?*=џ?*=џ?*=џ?*=џ?*=џ?*=џ?*<џ>*<§>*<§>*<§>*<ћ>*<ћ>*<љ>*<ѓ>*<ч>*;л=+:Э=+:П<+9Б;,7Ÿ:-58/2u51.]41+U41+S32,O41,M31+I31,C31+?31+72/)/10)#/,'&& џџџџџџџџџџџџџџџџџџ.+%2/()30*=5/.U;,7“=+:Щ>*<ё?*=џA+?џJ1GџV:SџaC]џkKgџrQnџzVuџ[{џ„_€џ‰b„џŒe‡џgŠџ‘iŒџ‘iџ‘iџ‘iџ‘iџ‘hŒџh‹џŽfˆџ‹c†џˆaƒџ„^џ[{џ{WwџvSrџpNlџiIeџbD_џ[>XџT9QџM3JџF.CџA+?џ@*>џ?*=џ>*<ы=+:Ы;,7Љ8.251-c41+]32,Y31+S31+I20*;0/)',*#џџџџџџџџџџџџџџџџџџ.*$6-03=+9Ѓ>*<ѓC,@џU9RџmLiџ€[|џgŠџ–mџ–n‘џ–n‘џ•mџ”lџ“jŽџ’hџ‘hŒџf‹џf‹џfŠџeŠџeŠџeŠџeŠџeŠџfŠџf‹џ‘g‹џ‘gŒџ‘hŒџ’iџ“jŽџ“jŽџ”lџ•mџ–m‘џ–n‘џ–n‘џ–n‘џ–n‘џ”lџgŠџ…_€џxUtџhIeџV:SџG/Dџ@*>џ>*<э<+9З8.2s31,K30+A21*3//)!+(#џџџџџџџџџџџџџџџџџџ;)7)>*<зF/CџkJgџ‹d†џ–n‘џ•mџ’iџeŠџbˆџŠ_…џ‰]„џˆ[‚џ‡[‚џ‡[‚џˆ[‚џˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ]ƒџ‰^„џŠ_…џ‹`†џŒb‡џŽd‰џf‹џ’hџ”kџ•mџ–n‘џ“jŽџ]}џgHcџK2Hџ?*=ћ=*;Л8+4E/-&+*# џџџџџџџџџџџџџџџџџџA+<>*<БL3Iџ‰b„џ–n‘џ‘hŒџŒa‡џˆ]ƒџˆ[‚џˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџ‰]„џ‹`†џd‰џ“jŽџ–n‘џ’jџvTrџM3Jџ>)<я>);_џџџџџџџџџџџџџџџџџџџџџџџџ?*<?*<чqOmџ•mџ‰\ƒџ…X€џ†X€џ†Yџ‡Zџ‡Z‚џ‡[‚џ‡[‚џˆ[‚џˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџŠ^…џfŠџ•mџ‘iŒџaC^џ?*=ї>*<[џџџџџџџџџџџџџџџџџџџџџџџџ?*<?*<чsQoџ”kџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Xџ†X€џ†Y€џ†Yџ†Yџ†Zџ‡Zџ‡Zџ‡Z‚џ‡[‚џ‡[‚џ‡[‚џ‡[‚џˆ[‚џˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџ‰^„џ‘hŒџ•mџaC^џ>)=ы?*=!џџџџџџџџџџџџџџџџџџџџџ?); ?)<пnMjџ•mџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Xџ…X€џ†X€џ†Y€џ†Yџ†Yџ‡Zџ‡Z‚џ‡[‚џˆ[‚џˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџ‘hŒџh‹џH0Fџ?)<‰џџџџџџџџџџџџџџџџџџџџџџџџ?*=гfGbџ–n‘џ†X€џ…Wџ…Wџ…Wџ…Wџ‡Zџ‰]„џ‹`†џbˆџŽd‰џeŠџfŠџeŠџdŠџcˆџ‹_…џ‡[‚џ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ†X€џ†Yџ‡Zџ‡[‚џˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџ‰]„џ–n‘џcD_џ?)<Я@);џџџџџџџџџџџџџџџџџџџџџ?)=­X)=kC-Aџ…_џ“lŽџh‹џˆaƒџyVuџkKgџ^@ZџS8PџJ1GџB,?џ?*=џ>*<§>)=љ?*=ї?*=ї?)<ћ@+>џK4IџaF^џ‚`~џ•mџb‡џ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ†X€џŒa‡џ’hџ•lџ–n‘џ–n‘џ•lџ“kŽџ‘gŒџŽc‰џŠ_…џ‡Zџ†Yџ‡Z‚џ‡[‚џˆ\ƒџˆ\ƒџˆ\ƒџ”kџuRqџ?*=щ?*=џџџџџџџџџџџџџџџџџџџџџ?*<?*=ЫB,@џJ1HџE-Bџ?*=§>*=ё?)=п>)<Н?*<›?*=}>*<_?)*<9>)=+?*>%?*='?)<3?*)=u?*<С@+>љcG`џ”lџŒ`†џ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ‰\ƒџ”lџ“kŽџ\}џoNkџhHdџhHdџmMjџvTrџƒ^џg‰џ”lџ–n‘џ”kџfŠџ‹`†џˆ\ƒџˆ\‚џ‡[‚џ”kџsQoџ>)=ч>)=џџџџџџџџџџџџџџџџџџџџџџџџ>)=?*<_>*<{>**<9>*=@)=џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ@+>>)=Q?*=ѓrRnџ”kџ…Xџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ‡Zџ•mџ†`џP6Mџ?*=ћ>)<у>)<з>)=з>*=п>*=э?*=§C,AџN5Lџ_A\џuSqџŠc…џ•mџ•mџ’iџŽcˆџ•mџkKgџ?)=н?)=џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ>*=ЁT:Qџ–n‘џ‡Z‚џ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…WџfŠџhŠџI1Gџ>*=Х?*<9>)< џџџџџџ>*= >*=?*=-?)<[?)<>*<Х?*=ѓB,@џS8PџlKiџ…_€џ“kŽџ“kŽџS9Pџ?)<Џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ?*<O6Mџ–n‘џˆ\ƒџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ†X€џ•lџpNlџ?*=ѕ>)<џџџџџџџџџџџџџџџџџџџџџџџџџџџ@*;?)=?*=U?*<Ѕ?*=чA+>џI1FџK2Hџ?*=ѕgWfSџџџ-џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџU]/..>*<Й\@Yџ–n‘џ‡Zџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџˆ[‚џ–n‘џY=Vџ>)<Гџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ?)=?**<{>*<ƒv‚UўўўйџџџљўўўГџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџwёџџћС7%5ѓuTqџ“kŽџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…WџŠ]„џ–n‘џF/DџЭЁ‹5џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџЭ№№№џџєєєџџџџЙўўўџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ‹џ{{{џмммџчччџЈЈЈџ%%%џ  џ|ZxџŽcˆџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ‰^„џS=QџџџBBBџ&&&џ§џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ9џџџсёёёџLLLџџрррџџџџУџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџSћ–––џыыыџыыыџыыыџыыыџзззџ---џ! џV|џ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ„V~џB,@џџxxxџтттџщщщџчччџ’’’џ џ…џџџџџџџџџџџџўўўџџџ!џџџ_ўўў‘џџџЛўўўуўўўџсссџ;;;џџШШШџўўўёџџџ7џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўўў%ўўў!ўўўўўў џџџ зWWWџыыыџьььџэээџэээџэээџэээџХХХџџF.Cџ„V~џ…Wџ…Wџ…Wџ…Wџ…WџY:Uџџ‹‹‹џыыыџыыыџыыыџыыыџыыыџŒŒŒџї9џџџџџџџџџўўў5џџџБџџџїќќќџыыыџЯЯЯџЄЄЄџiiiџџ...џдддџџџџѓџџџOџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўўўoџџџћџџџ§џџџэўўўлџџџЩŒŒŒС џШШШџюююџюююџюююџюююџяяяџяяяџяяяџwwwџ  џyOtџ…Wџ…Wџ…Wџ…WџzPtџ џ^^^џыыыџэээџэээџэээџэээџэээџчччџ999џБџџџџџџ]џџџѕцццџ‡‡‡џ:::џџџџ111џxxxџъъъџџџџщџџџIџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџПиииџkkkџџЉЉЉџХХХџFFFџFFFџяяяџ№№№џ№№№џёёёџяяяџ№№№џёёёџёёёџиииџџM2Jџ…Wџ…Wџ…Wџ„WџC,@џџзззџ№№№џяяяџяяяџяяяџяяяџяяяџюююџŸŸŸџї!ўўў5ўўўїСССџџџWWWџ’’’џЦЦЦџцццџќќќџџџџїџџџЙџџџ+џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџеЋЋЋџџџџџџ“““џђђђџђђђџэээџ~~~џ$$$џ---џ‘‘‘џ№№№џђђђџYYYџџƒU}џ…Wџ…Wџ~Rxџ џuuuџђђђџ№№№џџ???џjjjџлллџёёёџ№№№џрррџџgџџџНфффџџOOOџуууџўўўџџџџэџџџХџџџ•џџџ]џџџ!џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўўўхџџџџџџЪЪЪџєєєџєєєџ‚‚‚џџџџџˆˆˆџєєєџЈЈЈџџwNrџ…Wџ…Wџ[;Vџ џбббџѓѓѓџЄЄЄџџџџ+++џрррџђђђџђђђџBBBџ333Эўўўљ|||џџюююџџџџЫџџџEџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџїsssџџџџџџэээџіііџђђђџ###џџџџџџцццџлллџ џ[;Wџ…Wџ„V~џ0.џ<<<џѕѕѕџѕѕѕџVVVџџџџџoooџєєєџєєєџqqqџ222џќќќџ111џoooџџџџџўўўуџџџgџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ/џџџџWWWџџџџџ+++џїїїџїїїџьььџџџџџџџШШШџіііџ'''џA+?џ…WџU|џ џ‚‚‚џїїїџїїїџLLLџџџџџџяяяџіііџ“““џџDDDџџNNNџ™™™џзззџџџџуџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўўўIўўўџ:::џџџџџ???џљљљџљљљџљљљџ888џџџџџџвввџњњњџLLLџ.,џ„V~џuLpџџЛЛЛџљљљџљљљџyyyџџџџџџрррџїїїџЇЇЇџџџџџџœœœџџџџлўўў џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџeљљљџ$$$џџџџџHHHџњњњџћћћџћћћџЋЋЋџџџџџ;;;џїїїџћћћџgggџ! џ„V~џ^>Zџ џпппџњњњџћћћџгггџ џџџџџюююџљљљџЏЏЏџџџџџџИИИџџџџЧџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџыыыџџџџџџEEEџћћћџќќќџќќќџќќќџџ$$$џџAAAџиииџќќќџћћћџwwwџџƒV}џN3Jџџїїїџћћћџќќќџќќќџ•••џџџџyyyџћћћџњњњџЌЌЌџџџџџџбббџџџџ­џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ›нннџџџџџџ777џћћћџћћћџќќќџќќќџќќќџѓѓѓџчччџљљљџћћћџћћћџћћћџ{{{џџƒU}џC+@џ'''џћћћџћћћџќќќџќќќџ§§§џХХХџ|||џžžžџіііџќќќџћћћџџџџџџ џуууџџџџ‘џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўўўЗЩЩЩџџџџџџџљљљџњњњџњњњџњњњџњњњџњњњџњњњџњњњџњњњџљљљџљљљџtttџџƒV}џ=(:џ333џњњњџњњњџћћћџћћћџћћћџќќќџќќќџќќќџќќќџћћћџћћћџ‚‚‚џџџџџџєєєџџџџuџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџЯ­­­џџџџџџ џцццџјјјџјјјџљљљџљљљџљљљџјјјџјјјџјјјџјјјџїїїџaaaџ#"џ„V~џ=':џ333џјјјџљљљџљљљџљљљџњњњџњњњџњњњџњњњџњњњџњњњџњњњџ\\\џџџџџ***џўўўџџџџ[џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўўў џџџпЦЦЦџ___џ;;;џџџџџПППџїїїџїїїџїїїџїїїџїїїџїїїџіііџіііџіііџіііџCCCџ2!0џ…WџB+?џ'''џіііџїїїџїїїџјјјџјјјџјјјџјјјџјјјџјјјџјјјџїїїџ+++џџџџџFFFџџџџџџџџ?џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ‰џџџїџџџ§ъъъџ џџ‹‹‹џџ„„„џѕѕѕџѕѕѕџѕѕѕџѕѕѕџѕѕѕџѕѕѕџєєєџєєєџєєєџюююџџH/Eџ…WџO3Kџџ№№№џѕѕѕџѕѕѕџіііџіііџіііџіііџіііџіііџіііџзззџ џџџџџcccџџџџћўўў'џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўўўџџџ{ьььџџџЁЁЁџ^^^џ999џђђђџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџђђђџђђђџЪЪЪџџeB`џ…Wџb@]џџгггџѓѓѓџєєєџєєєџєєєџєєєџєєєџєєєџѕѕѕџѕѕѕџ•••џџџџџџџџџџэџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџSјјјџџџŒŒŒџЕЕЕџџЦЦЦџёёёџёёёџёёёџёёёџёёёџёёёџёёёџ№№№џ†††џ  џ}Rxџ…WџzPtџџЅЅЅџёёёџђђђџђђђџђђђџђђђџѓѓѓџѓѓѓџѓѓѓџ№№№џ===џџџџџџ›››џџџџсўўў џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ3џџџ§333џџbbbџѕѕѕџ'''§___џюююџяяяџяяяџяяяџяяяџяяяџяяяџшшшџ///џ4!1џ„V~џ…WџƒV}џџ___џяяяџ№№№џ№№№џ№№№џ№№№џёёёџёёёџёёёџКККџџEEEџџџHHHџ000џРРРџўўўЯџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўўўџџџэiiiџџ###џ§§§џ–––ы џЙЙЙџэээџэээџэээџэээџэээџэээџџџiEeџ…Wџ…Wџ…WџG.DџџлллџюююџюююџюююџюююџюююџяяяџъъъџDDDџ<<<џmmmџџџўўўџўўўџўўўџџџџ—џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџПАААџџџШШШџїїїэЫ)))џеееџыыыџыыыџыыыџыыыџаааџџ2 0џƒV}џ…Wџ…Wџ…Wџ{Ruџ  џzzzџьььџьььџьььџьььџэээџэээџŒŒŒџ џЛЛЛџ---џџZZZџџџџћџџџiўўўWџџџ џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўўўmіііџџџ]]]џџџџџЪЪЪ“л+++џКККџщщщџщщщџОООџ***џџzPuџ…Wџ…Wџ…Wџ…WџŽd‰џK7Iџ џВВВџъъъџъъъџыыыџыыыџЃЃЃџ џ{{{џНННџџџЎЎЎџџџџеџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџяџџџЭЭЭџџџџы………EУџ)))џ+++џџџ„aџˆ[‚џ…Wџ…Wџ…Wџ…Wџ”lџbF^џ ћџƒƒƒџЯЯЯџУУУџhhhџџaaa§іііџGGGџџџіііџџџџwџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџёёёџџџ:::џѕѕѕџџџџХЮЮЮI‰‹B-@џŒgˆџa‡џ…Wџ…Wџ…Wџ‹`†џj‹џF0Dџ:&8w‹ё§§у{{{Щ§§§џЄЄЄџџџ˜˜˜џџџџёџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџщЌЌЌџџџkkkџњњњџўўўГџџџџџџџџџ>)=?*=эrRnџ“jŽџ…Wџ…Wџ†X€џ•lџoPkџ?)=щ>*<џџџ?7ъъъ[ўўўїаааџџџ;;;џїїїџџџџ}џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ]§§§§pppџџџxxxџљљљџџџџХўўў'џџџџџџ?*<“M5Jџ’kџcˆџˆ[‚џ’iџŒf‡џF/Cџ>*<ƒџџџџџџџџџџџџџџџmўўўљиииџ###џџџгггџџџџгўўў џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ™іііџVVVџџџbbbџюююџџџџэџџџsџџџ?))=пN:L/џџџџџџYџџџГџџџїюююџ{{{џ џџџЎЎЎџўўўїџџџWџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџБјјјџ‰‰‰џ џџџBBBџЏЏЏџѓѓѓџўўў§вЮв§‚tџn^lџ•Š”§чхчзџџџнџџџѓўўўџтттџ‰‰‰џ џџџ)))џШШШџўўўѕџџџ_џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўўў џџџ‹ўўўћЮЮЮџCCCџџџџџSSSџ‰‰‰џЏЏЏџУУУџШШШџНННџЃЃЃџyyyџ???џ џџџ џwwwџ№№№џџџџхўўўGџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџIџџџлќќќџНННџKKKџџџџџџџџџџџџџџqqqџнннџўўўџџџџЏџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ ўўўoџџџсџџџ§шшшџ   џaaaџ777џџ џџ џџAAAџtttџЕЕЕџїїїџџџџћџџџУџџџCџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўўўџџџSџџџЇџџџхўўўљўўўџџџџџїїїџђђђџњњњџџџџџџџџџџџџѕџџџеџџџўўў7џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ-џџџQџџџsџџџ…џџџ‰џџџџџџkџџџIџџџ!џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ( џџџџ(€ џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ<872200,,, +++ +++ +++ &&& %%% %%% ### """ #"" +!! -!! 8!! 8)! 8*! 6. 66 55 33 33 33 33 33 33 33 33 55 66 6. 8*! 8)! 8!! .!! ,"" #"" """ $$$ %%% %%% ''' +++ +++ +++ --- 2222871џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ ,,))'''###" 4' 21 ..& .,+ ,,) ((% %%%$$$/%#1/!00 --$.,(2))3-(11'00&..%--$,,+,++,**++*-+)3+)4+)2+(2+'2.'31'21&10&10&10&11&10&10&10&10&21&31'2.'2+'2+(4+)3+).+)++*,**,++,,'--$//%00&11'3-(-*)-,(..00 1/!.%#$$$&&% ))' ,,) .,+ .." 21 ,&  ###'''** 1 џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ  7!--' ))) $$$ & 00 2,)/+'--&))).('1.$--$/,)3-)11'//%-,+0.,2.*0.(3/'!10%#40.*%1/*%0/)%2/('1/*'00*'//*)1/,)2.+)40+)30++30*+30*+21)+11)+21)+41(-41(-30*-30*-30*-32*-30*-30*-30*-41*-41(-41(-21)+11)+21)+30*+30*+30++40+)3.+)1/,)00*)1/*'2.*'0/('00)%10+%3/*#10.%!3/'!1/(/.*0.,.-+//%22'4-),,&--$1+$)''))%--%1,)..(11 (!! %%% +++ // !!$ џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ)&&&$# .- ++' '&%0'!-,'1-&-,&0*)1/&2-)10)0/)!1.*#2/*%0/('20()21*)1/*+//*-30,-21+/31+131*122)320)511+530*73/*720*931,951,941,;40,=42,?32,A31,C41,C30+C30+C30+C30,E21-E41-C51-C51-A51-A41,A40,A42,A40,A40,A41,A41,?41,?51,?31,?11,?21*?20*?20*?21*=32*=32+=33+;31+;40,;40,;31,921,93/+730+720*510+521)532)331*131+120+/3.*-00*+20*+10))3/')10)'20+%1.*#0/(!1.*/.%0/&-+*--&2/(.,'-'!'&%,,( 2+ & && џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ "((( /"" --'+)'.+%11(0-*2.(!10)#20)'1-*)2/*+30)-30*/1/+340-331+721*731*930,;20+=40*?31,?32,A30,G7//W7.2c8-5o:-6{:-6…;,7<+8™=+9Ÿ<+9Ѕ=+9Љ=+:Џ=+:Г<+:З<+:Й=+:Й=+9Й=+9Й=+:Й=+:Л=+:Л=+:Л=+:Й=+:Е=+:Е=+:Е=+:Б=,9­=,9Љ=+8Ѓ<,8<-8™;-7•<.7<-5‡:.59.4w8.3q7.1i6.0a4.-U41+O42+O32+O21+M22,M33,M32,K42-K40-K31,I42+I40+G41,G30+E31)E32+C22+C42,A41,?40+?10+=30*;31*931*731+540+320+310(/21(-30++1.*'00*%11/)!--*22(/,#,*#.."+# ++ џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ%(( **".-#-,'00(/.)%1.'+2/*/20*130)510*730+;31+=21*?40,A51+E60.Q7/2_8.4m9-4y:,6‰<,8Ё=+:Е>+;Ы>*<й>*<щ>*<ё>*<ѓ>*<ѕ>*<ї>*<љ>*<љ>*<ћ>*<§?*<§>*<§?*=џ>*<џ?*=џ?*=џ?*=џ?*=џ?*=џ?*=џ?*=џ?*=џ?*=џ?*=џ?*=џ?*=џ?*=џ?*=џ?*=џ?*<џ?*<§?*<§>*<§>*<ћ>*<ћ>*<ћ>*<љ>*<љ>*<ї>*<ї>*<ѕ>*<ѓ>*<ѓ>*<э>*<с>*;е=+:Щ=+:Л<,9Џ<-7Ё:.6“9-5‡9-49.3y8/2s701k61/a50,Y41+U42,S33,S42,Q41-Q51+O42,M30+M41*K22+I33,G41,E31+C40*A22*?31+=30,;20+731*520+120+-2.()0-(%1.(.-(/+$,)$'' џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ (#" ,,!//%/.'!/.('00+/20,511+;31+?21+C32+E42+I31+K31-S8.2q<,7™=+9Е=+;Э>*;н>*<я>*<љ?*=џ?*=џ?*=џ?*=џ?*=џ?*=џ?*=џ?*=џ?*=џ?*=џ?*=џ?*=џ?*=џ?*=џ?*=џ?*=џ?*=џ?*=џ?*=џ?*=џ?*=џ?*=џ?*=џ?*=џ?*=џ?*=џ?*=џ?*=џ?*=џ?*=џ?*=џ?*=џ?*=џ?*=џ?*=џ?*=џ?*=џ?*=џ?*=џ?*=џ?*=џ?*=џ?*=џ?*=џ?*=џ?*=џ?*=џ?*=џ?*=џ?*=џ?*=џ?*=џ?*=џ?*=џ?*=џ?*=§>)<ї>*<я>*<ч=*;п=+:г=+:Ы<,9Л;-7Ѓ9.5800u41,_41,[52,[41+Y42,Y33-W33+U41,U42,S41+Q41+O32,M42,K40+I41+E31,C31+?10)93.)522)-11*'//)2*(((#&&  џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ### -&!0.&10(!3.(+21(521)=22+E21+I31,Q6/0e:-4…<,8Ћ=*;г>*<ї?*=џ?*=џ?*=џ?*=џ?*=џ?*=џ?*=џ?*=џA+?џF.CџK1HџO5LџS8PџW;Tџ\?YџbD_џgGdџlKiџpNlџuQpџyTuџ~XyџZ{џƒ\~џ…^џˆ`ƒџŠb…џŒdˆџŒdˆџŒdˆџŒdˆџŒdˆџŒdˆџŒdˆџŒdˆџŒcˆџŒb‡џŒb‡џ‹b†џˆ`ƒџ†^џƒ\~џ€Z{џ}WxџzUuџxSsџtPoџpMkџlJhџgGdџdD`џ`A\џ\>XџX;UџT9QџP5MџM3JџJ1GџG/DџD-BџA+>џ?*=џ?*=џ?*=џ?*=џ?*=џ?*=џ?*=џ?*=џ?*=џ?*=џ?*=џ?*=џ?*=ћ>*<х=+:Ы;,7Љ:-58/2{62-g42+_41,_52,]32,]32+[42,Y32,W32+U32,S31+O31+I31,C21*=3/*310*)..(**&*& '' џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ! **.-)10)%2/(/30*;30+C5/-S8-4u=+9Л>*;н>*<ѕ>*<џ?*=џ?*=џ?*=џA+?џB,@џE.CџN4Lџ\=XџhGdџsOoџ{Vvџ€[|џ‡a‚џ‹d†џŽg‰џ‘iŒџ”kŽџ•lџ•mџ•mџ–n‘џ–o‘џ—o’џ—o’џ—o’џ—o’џ—o’џ—o’џ—o’џ—o’џ—o’џ—o’џ—o’џ—o’џ—o’џ—o’џ—o’џ—o’џ—o’џ—o’џ—o’џ—o’џ—o’џ—o’џ—o’џ—o’џ—o’џ–n‘џ–n‘џ•mџ•mџ•lџ”lџ”kџ“kŽџ‘iŒџgŠџŒd‡џ‰b„џ…_€џ\}џ~XyџyUuџtPpџmJiџfEbџ_@\џW;TџQ6NџI0FџD.BџC,@џA+?џ@+>џ?*=џ?*=џ?*=џ?*=џ?)=џ>)<ї>*;ч=+;з<,8Л9.4‹70/o51-e52+_41+]42,[33+Y41+W41+S31,O41+I31+A20)92/*//,(#--#-) $$! џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ$$$ ,(!0,'1/(#2.)-5/-E;,7‰=*;б?*=ћ?*=џ?*=џ?*=џ@*=џH0EџU9RџcC_џtQpџZ|џŽe‰џ“jŽџ–n‘џ—o’џ—o’џ—o’џ—o’џ—o’џ—o’џ—o’џ—o’џ—o’џ—o’џ—o’џ—o’џ—o’џ—o’џ—o’џ—o’џ—o’џ–o‘џ–n‘џ•mџ•mџ•mџ•mџ•mџ•mџ•mџ•mџ•mџ•mџ•mџ•mџ•mџ•mџ–n‘џ–n‘џ—o’џ—o’џ—o’џ—o’џ—o’џ—o’џ—o’џ—o’џ—o’џ—o’џ—o’џ—o’џ—o’џ—o’џ—o’џ—o’џ—o’џ—o’џ—o’џ—o’џ—o’џ—o’џ—o’џ–n‘џ•lџ“jŽџ‘hŒџŒc‡џ‚\}џxTtџoMkџcC_џY*<ѓ=+:Х:-6—700k31,Y31+U32,Q31+O31+K31,E32+=3/*500)+//'!--&,%(( џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ""+%% /-"3.+;*7]>*;Щ>*<ї?*=џ?*=џB,@џK2Hџ_@[џwRrџ‡`џhŠџ”lџ–n‘џ—o’џ—o’џ—o’џ—o’џ–n‘џ–n‘џ•mџ•lџ”lџ”kџ“jŽџ‘hŒџf‹џd‰џŽcˆџb‡џŒa†џ‹`†џ‹_†џŠ^…џ‰^„џ‰]„џŠ^„џ‰]„џ‰]„џ‰]„џ‰]„џ‰]„џŠ^„џŠ^„џŠ^„џŠ^„џŠ^„џŠ^„џŠ^„џŠ^„џŠ^„џŠ^…џŠ_…џ‹_…џ‹`†џ‹`†џŒa‡џŒb‡џcˆџŽc‰џŽd‰џfŠџfŠџ‘gŒџ‘hŒџ’jџ“kŽџ”lџ•lџ•lџ•mџ•mџ–m‘џ–n‘џ–n‘џ–o‘џ—o’џ—o’џ—o’џ—o’џ—o’џ—o’џ–n‘џ•mџ”lџ‘iŒџ‹d†џ„^џwRsџeDaџU9QџI1GџC-Aџ?*=џ?*=џ?*=џ>*<ї>*;у<+8Б8.2m41-K30+A21*=3/+922*121()11*!-+))%%(( џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ + 4),=*;y>*=я?*=џ?*=џC-AџW:SџuQqџ‹c†џ•lџ–o‘џ—o’џ—o’џ—o’џ—o’џ–n‘џ•lџ’iџf‹џŽd‰џŒb‡џ‹`†џŠ^…џˆ\ƒџ‡Z‚џ‡Z‚џ‡Z‚џ‡[‚џ‡[‚џˆ[‚џˆ[‚џˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџ‰]„џ‰^„џ‹_…џ‹`†џŒa‡џcˆџŽd‰џeŠџf‹џ’hŒџ“jџ”kџ•mџ—o’џ—o’џ—o’џ—o’џ—o’џ—o’џ—o’џ—o’џ–n‘џ“jŽџŠb…џxUtџcD_џQ6Nџ@*>џ?*=џ?*=џ?*=џ>*<я=*:Љ8,5[10)+0.)'20&!/.)/,&((%((# "" џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ$>*;>*<ѓ?*=џB,@џX;Uџ€Z{џ‘iŒџ–n‘џ–n‘џ—o’џ–n‘џ•lџ“jŽџg‹џŒa‡џŠ^„џ‰]ƒџˆ]ƒџˆ\ƒџ‡[‚џ‡[‚џ‡[‚џˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ]ƒџ‰]„џ‰]„џŠ^…џŒa‡џŽd‰џg‹џ“jŽџ”kџ•mџ–n‘џ—o’џ—o’џ–o‘џ–n‘џ”lџŽg‰џ~XyџbC_џL3Iџ@+>џ?*=џ>)<§>*<я<*;8*330*#''#.- ""  џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ=*:3?*<ё?*=џB,@џlIgџgŠџ–n‘џ—o’џ—o’џ–n‘џ’iџŽcˆџŠ_…џˆ\ƒџˆ[‚џˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџ‰^„џ‹`†џcˆџf‹џ“jŽџ–n‘џ—o’џ—o’џ—o’џ–o‘џ”lџˆaƒџkIgџK1Hџ?*=џ?*=џ?)=§>)<Х<(87 џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџA+<?*<Ё?*=џA+?џnLjџ“lŽџ–n‘џ–o‘џ•lџfŠџŠ_…џˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџ‰^„џbˆџ’hџ”lџ–o‘џ—o’џ–n‘џ•mџfŠџkIgџK1Hџ?*=џ>)<џ>)<х>()*=е?*=џV:Sџ”lџ—o’џ’hџ…Xџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…X€џ†X€џ†Y€џ†Zџ‡Zџ‡Z‚џ‡[‚џ‡[‚џˆ[‚џˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџŒb‡џ’iџ–n‘џ—o’џ—o’џŽfŠџdD`џ@*>џ?*=џ?*<у?)<7џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ>)<%?*<б?*=џT8Qџ”kџ—o’џ‘gŒџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Xџ…X€џ†X€џ†Yџ‡Zџ‡Zџ‡Zџ‡[‚џ‡[‚џ‡[‚џ‡[‚џ‡[‚џ‡[‚џ‡[‚џ‡[‚џ‡[‚џˆ[‚џˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџ‰]„џcˆџ”lџ–n‘џ–n‘џgŠџ`A]џA+>џ?*=џ>)=З>+=џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ?*<?*<Ы?*=џQ6Mџ“jŽџ—o’џ’iџ…Xџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…X€џ…X€џ†X€џ†X€џ†X€џ†Y€џ†Yџ†Yџ†Zџ†Zџ‡Zџ‡Z‚џ‡Z‚џ‡[‚џ‡[‚џ‡[‚џˆ[‚џˆ[‚џˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџ‰^„џ’hŒџ—o’џ–n‘џŽf‰џW;Sџ?*=џ>*=ї?*)<Я>))=>)=Ѕ?*<§@+>џgFcџ‹d†џi‹џh‹џŒe‡џ‡_‚џYzџsOnџeDbџX*=љ>)=ѕ>)=ё?*=я?*=я?*=я?*<ё?)<ѕ?*=ћ?)=§?*=џ?*=џ?*=џB,@џI3Gџ^E[џ€_{џ“lŽџ–o‘џ–mџbˆџ…X€џ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ‰\ƒџ‘g‹џ”lџ–n‘џ—o’џ—o’џ—o’џ—o’џ—o’џ—o’џ—o’џ—o’џ—o’џ—o’џ—o’џ–n‘џ–n‘џ•lџ”kџ‘iŒџŽd‰џ‹_…џ‡[‚џ†Yџ†X€џ†X€џ‡Z‚џ‡[‚џˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџ‘h‹џ—o’џ”kџV:Sџ?*=џ?*=е?*='џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ?)џM2IџW9SџV9RџN4KџG/Eџ@*>џ?*=џ?*=џ?*=џ?*=џ?*=џ?*=џ?*=џ?*=џ?*=џ?*=я?*=з>*=Н>*<Ѕ?*<‘>)<ƒ>*=u>*=i>*=]?)=O?*>I?*>I>*=K?*)<]>*=m>*=}?*<™>)<П?*=ы?*=џ?*=џ?*=џD/BџeIaџiŠџ—o’џ–n‘џbˆџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ†Y€џŽd‰џ•mџ—o’џ—o’џ—o’џ–n‘џ“jŽџf‹џŠb…џˆa„џˆa„џŠb…џfŠџ’iџ”kџ–n‘џ–o‘џ—o’џ—o’џ—o’џ—o’џ—o’џ—o’џ–n‘џ“jŽџfŠџŒa†џˆ[‚џ†Y€џ†Zџ‡[‚џˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ[ƒџ‘hŒџ—o’џ”kџU9Rџ?*=џ>*<г?*<'џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ@,<?*=_>)=х?*<§?*=џ?*=џ?*=џ?*=џ?*=џ?*=џ>)<ћ>*=ы>*=н?)=Э?)=Е>)<>)*<+?*=?*=>*=>*< @*9<&8џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ=2=?*<>)<?(>?)=W?*<Ћ?*=ы?*=џ@+>џY?Vџgˆџ–n‘џ•mџˆ[‚џ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ‡Z‚џ‘hŒџ–n‘џ—o’џ•mџŠc…џxStџaB^џR7OџI1FџF/DџF/DџF/DџF/DџH0EџL3JџS8Pџ]>YџjIfџvSrџ[|џˆbƒџh‹џ•lџ–n‘џ—o’џ—o’џ–o‘џ–n‘џ•mџ“jŽџŽd‰џŠ^„џˆ\ƒџˆ\‚џˆ\ƒџˆ[‚џ‡Zџ’hџ—o’џ“jŽџQ7Nџ?*=џ>)=Э>)=џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ=)=>)==?)<™?*<г?*=ы>)<ы>)<Я?*<Ћ>*<>**=G>*=-@)=џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ@+>?*=O>)=Я?*=џ@+>џfIcџ•nџ–n‘џeŠџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ†X€џ‘g‹џ—o’џ—o’џ”kџpMlџP5Mџ@+>џ?*=џ?*=џ?*=џ?*=џ?*=џ?*=џ?*=џ?*=џ?*=џ?*=џ?*=џ?*=џ?*=џD-AџL2IџW;TџdE`џuQpџ†_‚џ“jџ–n‘џ—o’џ—o’џ—o’џ—o’џ–n‘џ“jŽџf‹џbˆџˆ\ƒџ†X€џ“jŽџ—o’џ’hџK2Iџ?*=џ?*=У?*=џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ?)<?*< ?*= ?*= >*<?*<>,;џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ>)<%>*=б>*<џB,?џŠd…џ—o’џ”kџ‡Zџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџcˆџ–n‘џ—o’џeˆџaB]џ@*>џ?*=џ?*=џ?*=ё?*=б>)<Н>)<Џ?*=­?)=­>)=Б>*<Л?)=У?)=г>*=х>*=ї?*=џ?*=џ?*=џ?*=џ?*=џ@*>џA,?џK1HџaA]џuQpџ†_џ’iџ–n‘џ–o‘џ—o’џ–n‘џ–o‘џ–n‘џ“jџ–n‘џ—o’џ‰a„џF/Dџ?*=џ>)<Џ=%=џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ='=>*=o>*=љ?*=џrQoџ–o‘џ–n‘џ‰]„џ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ‡Yџ•lџ—o’џ”lџdEaџA+?џ?*=џ>*=ѓ?*<—?**=7?*=M>*=i?*<›>)<Ы>*<ѓ?)<љ>*<§?*<џ?*=џ?*=џA+>џK2HџZ=WџsOoџ‰`„џ’iŒџ–n‘џ–n‘џ—o’џ—o’џ—o’џ–n‘џwTsџB,@џ?*=џ?)<‡џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ>+>1>*=ы?*=џaD^џ–n‘џ—o’џŒ`†џ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџcˆџ—o’џ–n‘џ|WxџB,@џ?*=џ?)=н>*=Iџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ>+9?)<;>*)=]?(?џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ@*; ?*=#?)=G?*=?*=Э?*<э?*=ћ?)=џ?*=џ@*>џF.CџO5LџYџ?*=џ>)<С?*> џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ>*<7?*<э?*=џcE_џ–n‘џ—o’џŒ`‡џ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџˆ[‚џ”kџ—o’џ‡a‚џI0Fџ?*=џ?)=е+++џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ@.@?*<5?*=y?*=З?*=ы?)<џ?*=џ?*=џ?*=џ?*=џ?*=џ?*=џ?*=зB.@=ў§ўGџџџgџџџMџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ џџџџџџџџџџџџ?*<[?*<ѕ?*=џpNlџ–n‘џ–n‘џŠ^„џ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…WџŠ^„џ–n‘џ—o’џ{Vwџ@*>џ?*=џ?)<ƒџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџC,C?*=?)=%?**<е?)=н>)<с>*=й?*=ЅkZj?ћћћ‡ўўўэџџџљўўўяўўўЙўўў7џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ U‘­ГЇ}=>*>>*=‘?*=џ?*=џƒ]~џ—o’џ•mџˆ[‚џ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…WџŒa‡џ–o‘џ—o’џlJhџ?*=џ?*<ѕ>*+=@+@џџџkџџџѕџџџџџџџџџџџџџџџџџџџсџџџeџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ ]Ыїџџџџ§ѓЙ [=);г?*=џJ1Hџ’kџ—o’џ’iџ†Y€џ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…WџŽc‰џ—o’џ–n‘џaB]џ?*=џ9&7ы cEG?)џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ_ўўўэџџџџћћћџЩЩЩџэээџўўўџџџџџџџџыўўўWўўўџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџƒѓџџџ џџџџџџѓ%#§=);џcE`џ•nџ–n‘џŽd‰џ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…WџeŠџ—o’џ•mџV:Sџ#"џ љщћџѓе›3џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџgџџџщџџџџџџџџШШШџ'''џVVVџеееџџџџџџџџџўўўЅџџџ џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ Љ§џџ___џИИИџцццџщщщџтттџ›››џEEEџџџџ"!џyWuџ–n‘џ–n‘џˆ[ƒџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџf‹џ“lŽџaG^џ џџџџџџџџџѕ“џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўўў—џџџїџџџџўўўџдддџ"""џџ џ•••џџџџџџџџџџџџЋџџџ џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ }ћџ џšššџтттџщщщџщщщџщщщџщщщџщщщџзззџ}}}џџџџL7Iџ”mџ”kџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ‹c†џO:Lџ  џџџџJJJџƒƒƒџˆˆˆџmmmџ,,,џџџћџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўўўџџџ џџџџџџ/џџџЃџџџћџџџџ§§§џЪЪЪџ999џџџdddџяяяџџџџџџџџїџџџkџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ[ѓџџЙЙЙџъъъџъъъџъъъџъъъџъъъџыыыџыыыџыыыџъъъџžžžџџџџgLdџb‡џ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…WџU|џ=+:џџџ џ```џЫЫЫџщщщџщщщџщщщџщщщџсссџ”””џџџ§Ї џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ џџџ-ўўўMџџџiџџџ‡ўўўБџџџлџџџџџџџџџџџџћћћџЕЕЕџџџџQQQџёёёџџџџџџџџџџџџЇџџџ џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџгџџ˜˜˜џыыыџыыыџыыыџыыыџыыыџыыыџыыыџыыыџыыыџыыыџчччџ‘‘‘џџџџoJjџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…WџT{џH/Eџџџџ”””џсссџъъъџъъъџъъъџъъъџъъъџъъъџшшшџЏЏЏџ***џџљoџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўўў џџџ!џџџcџџџўўўбўўўсџџџяџџџћџџџџџџџџџџџџџџџџўўўџєєєџ———џџџџ\\\џтттџџџџџџџџ§ўўўЧџџџ'џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџƒћџjjjџхххџьььџьььџьььџьььџьььџьььџьььџьььџьььџэээџэээџъъъџlllџџџ.,џ„V~џ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…WџZ:Uџ  џџџЂЂЂџшшшџыыыџыыыџыыыџыыыџыыыџыыыџыыыџыыыџъъъџДДДџџџу5џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ=џџџ›џџџуџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўўўџлллџЉЉЉџ\\\џ џџ џkkkџёёёџџџџџџџџџўўўгџџџ/џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ џџџ7џџџYџџџKџџџ9џџџ-џџџ#џџџџџџџџџџџџџџџ)сџџзззџэээџэээџэээџэээџэээџэээџэээџэээџэээџэээџэээџэээџэээџвввџ<<<џџџ`?\џ„V~џ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…WџvMpџ џџџџъъъџьььџьььџьььџьььџьььџьььџьььџьььџыыыџыыыџъъъџƒƒƒџџџЋџџџџџџџџџџџџџџџўўўџџџ/џџџЃџџџяџџџ§џџџџџџџџўўўџѕѕѕџсссџЭЭЭџГГГџ‹‹‹џ___џ444џџ џџџџ———џѕѕѕџўўўџџџџџџџџЭџџџ7џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџƒџџџыџџџџўўўџџџџѕџџџхџџџгџџџСџџџБџџџџџџ‡џџџm???›џџzzzџьььџюююџюююџюююџюююџюююџюююџюююџюююџюююџюююџюююџюююџюююџюююџЄЄЄџџџ+)џ|Qwџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ€Tzџ;&8џџџhhhџуууџэээџэээџэээџэээџэээџэээџэээџэээџэээџьььџьььџьььџжжжџ;;;џџэ;џџџџџџџџџџџџџџџџџџ=џџџзџџџ§џџџџџџџџџџџџвввџџVVVџ555џџџџџџџџџ'''џВВВџћћћџџџџџџџџџџџџгўўў1џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџAџџџїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ§ъъъћ...§џ%%%џЬЬЬџяяяџяяяџяяяџяяяџяяяџяяяџяяяџяяяџяяяџяяяџяяяџяяяџяяяџяяяџяяяџюююџEEEџџџ`>[џ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ^=Zџџџ+++џтттџюююџюююџюююџюююџюююџюююџюююџюююџюююџэээџэээџэээџэээџэээџЈЈЈџџџ џџџџџџџџџџџџQўўўуџџџџџџџџѓѓѓџЊЊЊџDDDџџџџџџџџџ+++џKKKџyyyџХХХџѓѓѓџўўўџџџџџўўў§ўўўЇўўў!џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџqџџџ§ўўўџсссџЧЧЧџфффџѕѕѕџјјјџљљљџћћћџ§§§џўўўџЕЕЕџџџ```џэээџ№№№џ№№№џ№№№џ№№№џ№№№џ№№№џ№№№џ№№№џ№№№џ№№№џ№№№џ№№№џ№№№џ№№№џ№№№џ№№№џЁЁЁџ џџ1 /џ„V~џ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ‚U}џ'%џџ џ™™™џяяяџяяяџяяяџяяяџяяяџяяяџяяяџяяяџяяяџюююџюююџюююџюююџюююџюююџуууџ***џџс!џџџџџџўўўџџџнџџџџўўўџчччџfffџџџџџџџBBBџxxxџЄЄЄџТТТџиииџѕѕѕџўўўџџџџџџџџџџџџџџџџѓўўў“ўўўџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ§§§џƒƒƒџџџџ111џKKKџeeeџџ–––џQQQџџџЖЖЖџёёёџёёёџёёёџёёёџёёёџёёёџёёёџёёёџёёёџэээџ№№№џёёёџёёёџёёёџёёёџёёёџёёёџпппџ>>>џџ  џsKnџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ„Wџ]=YџџџMMMџуууџ№№№џ№№№џ№№№џ№№№џ№№№џ№№№џ№№№џ№№№џ№№№џ№№№џ№№№џяяяџяяяџяяяџяяяџюююџџџџaџџџџџџџџџЇџџџџўўўџнннџBBBџџџџIIIџˆˆˆџЫЫЫџіііџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўўў§џџџпџџџ­ўўўGџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўўўџџџЁџџџџћћћџiiiџџџџџџџџџџџ'''џмммџёёёџёёёџђђђџђђђџђђђџђђђџцццџАААџWWWџ999џCCCџrrrџЦЦЦџэээџђђђџђђђџђђђџђђђџ………џџџN3Kџ„V~џ…Wџ…Wџ…Wџ…Wџ…Wџ…WџSyџ2 0џџџАААџёёёџёёёџёёёџёёёџъъъџФФФџ‡‡‡џwwwџІІІџиииџяяяџ№№№џ№№№џ№№№џ№№№џ№№№џ№№№џКККџџџЇџџџMџџџёџџџџђђђџ\\\џџџ---џЄЄЄџьььџўўўџџџџџџџџџџџџџџџџџџџџ§ўўўѓџџџщџџџгџџџџџџYўўў+џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўўўГџџџџњњњџOOOџџџџџџџџџџџ^^^џыыыџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџпппџ]]]џџџџџџџџщщщџѓѓѓџѓѓѓџѓѓѓџзззџџџ,*џ~Rxџ…Wџ…Wџ…Wџ…Wџ…Wџ…WџoHjџ  џџ777џьььџђђђџђђђџђђђџъъъџyyyџџџџџ***џЂЂЂџыыыџёёёџёёёџёёёџёёёџёёёџхххџ777џџзџџџЕџџџџџџџџЂЂЂџџџ888џиииџџџџџџџџџџџџџџџџџџџџяџџџЩџџџЁџџџ{ўўўMџџџ'џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџХџџџџјјјџ444џџџџџџџџџџџŽŽŽџѓѓѓџѓѓѓџѓѓѓџѓѓѓџєєєџщщщџcccџџџџџџџџ џuuuџьььџєєєџєєєџюююџ>>>џџ џsKnџ…Wџ…Wџ…Wџ…Wџ…Wџ…WџH/Dџџџџђђђџѓѓѓџѓѓѓџ№№№џџ џџџџџџџŠŠŠџэээџђђђџђђђџђђђџђђђџёёёџkkkџџы^^^iўўўэџџџџъъъџ???џџџРРРџ§§§џџџџџџџџэўўўБџџџWўўў)ўўўўўў џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўўў%џџџеџџџџіііџџџџџџџџџџџџДДДџєєєџєєєџєєєџєєєџѕѕѕџЖЖЖџџџџџџџџџџ џДДДџѕѕѕџѕѕѕџєєєџџџџ`?\џ…Wџ…Wџ…Wџ…Wџ…WџSzџџџ"""џЬЬЬџєєєџєєєџєєєџсссџ...џџџџџџџџџАААџѓѓѓџѓѓѓџѓѓѓџѓѓѓџђђђџŸŸŸџџ§ŠŠŠсўўўћџџџџИИИџџџ[[[џ§§§џџџџџџџџёџџџSџџџ џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ/ўўўчџџџџяяяџџџџџџџџџџџџкккџѕѕѕџѕѕѕџѕѕѕџѕѕѕџѕѕѕџZZZџџџџџџџџџџџBBBџыыыџіііџіііџЏЏЏџџџ?)<џ…Wџ…Wџ…Wџ…Wџ…WџfCbџ  џџVVVџѓѓѓџѕѕѕџѕѕѕџѕѕѕџНННџџџџџџџџџџ444џрррџєєєџєєєџѓѓѓџѓѓѓџЭЭЭџџџtttџћћћџџџџџџџџКККџџџџџџџџџџџџыџџџЁџџџSџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ9џџџїџџџџйййџџџџџџџџџџџ***џёёёџіііџіііџіііџіііџшшшџ444џџџџџџџџџџџџТТТџїїїџїїїџбббџ$$$џџ%#џ„Wџ…Wџ…Wџ…Wџ„V~џM2Iџџџšššџіііџіііџіііџіііџ™™™џџџџџџџџџџџЈЈЈџѕѕѕџєєєџєєєџєєєџмммџџџUUUџіііџџџџџHHHџџ"""џлллџџџџџџџџџџџџџџџџџџџџёўўўQџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџOџџџџџџџџКККџџџџџџџџџџџKKKџїїїџїїїџїїїџїїїџїїїџнннџ+++џџџџџџџџџџџџŸŸŸџјјјџјјјџёёёџ<<<џџ џyOtџ…Wџ…Wџ…Wџ€T{џ-+џџџкккџїїїџїїїџїїїџїїїџџџџџџџџџџџџPPPџђђђџіііџѕѕѕџѕѕѕџфффџ666џџџ{{{џ˜˜˜џџџ777џЫЫЫџьььџћћћџџџџџџџџџџџџџўўўПџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџiџџџџџџџџЁЁЁџџџџџџџџџџџbbbџїїїџјјјџјјјџјјјџјјјџфффџ///џџџџџџџџџџџџ“““џјјјџјјјџјјјџ```џџ џjEeџ…Wџ…Wџ…Wџ|Qwџ џџ999џчччџјјјџјјјџјјјџјјјџЁЁЁџџџџџџџџџџџ,,,џоооџіііџіііџіііџщщщџHHHџџџџџџџ џ***џ999џEEEџgggџљљљџџџџџџџџЭўўўџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ…џџџџџџџџƒƒƒџџџџџџџџџџџyyyџљљљџљљљџљљљџљљљџљљљџїїїџJJJџџџџџџџџџџџџ›››џљљљџљљљџљљљџˆˆˆџџџ\>>џ­­­џџџAAAџчччџѕѕѕџѕѕѕџѕѕѕџѕѕѕџѕѕѕџѕѕѕџѕѕѕџѕѕѕџѕѕѕџѕѕѕџѕѕѕџѕѕѕџѕѕѕџѕѕѕџѕѕѕџѕѕѕџѕѕѕџѕѕѕџєєєџђђђџHHHџџ џrKmџ…Wџ…WџzPuџџџ---џѓѓѓџѕѕѕџѕѕѕџіііџіііџіііџіііџіііџіііџіііџіііџїїїџїїїџїїїџїїїџїїїџїїїџїїїџїїїџїїїџїїїџЬЬЬџ!!!џџџџџџџџџџџЙЙЙџџџџџџџџ§џџџSџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўўўўўўŸџџџщџџџёџџџѕџџџ§џџџџаааџџџџџTTTџяяяџPPPџџџжжжџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџнннџ---џџџ€T{џ…Wџ…WџT{џ#!џџ!!!џтттџєєєџѕѕѕџѕѕѕџѕѕѕџѕѕѕџѕѕѕџѕѕѕџѕѕѕџѕѕѕџѕѕѕџіііџіііџіііџіііџіііџіііџіііџіііџіііџіііџЂЂЂџ џџџџџџџџџџџвввџџџџџџџџёџџџEџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ3џџџMџџџлџџџџдддџџџџџRRRџіііџ‘‘‘џџџ˜˜˜џєєєџєєєџєєєџєєєџєєєџєєєџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџЗЗЗџџџ5"2џ…Wџ…Wџ…Wџ…Wџ4"1џџџФФФџѓѓѓџєєєџєєєџєєєџєєєџєєєџєєєџєєєџѕѕѕџѕѕѕџѕѕѕџѕѕѕџѕѕѕџѕѕѕџѕѕѕџѕѕѕџѕѕѕџѕѕѕџѕѕѕџђђђџaaaџџџџџџџџџџџ џуууџџџџџџџџуџџџ7џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўўўџџџЛџџџџоооџџџџџJJJџёёёџШШШџџџMMMџэээџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџёёёџŒŒŒџџџU7Qџ…Wџ…Wџ…Wџ…WџI0Fџџ џЂЂЂџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџчччџџџџџџџџџџџџ###џшшшџџџџџџџџеџџџ)џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўўўџџџ­џџџџшшшџ!!!џџџџ@@@џъъъџіііџBBBџџџСССџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџёёёџёёёџёёёџёёёџёёёџёёёџёёёџьььџKKKџџ џpIkџ…Wџ…Wџ…Wџ…WџdB`џџџ{{{џ№№№џђђђџђђђџђђђџђђђџђђђџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџЈЈЈџџџџџџџџџџџџ:::џэээџџџџџўўўЩўўўџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўўў—џџџџњњњџ...џџџџ+++џйййџџџџџ›››џџџvvvџюююџ№№№џ№№№џ№№№џ№№№џ№№№џ№№№џ№№№џ№№№џ№№№џ№№№џ№№№џ№№№џ№№№џ№№№џ№№№џ№№№џжжжџ џџ(&џ}Qwџ…Wџ…Wџ…Wџ…WџyPtџ  џџGGGџфффџёёёџёёёџёёёџёёёџёёёџёёёџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџцццџMMMџџџџџџџџџџџџQQQџѓѓѓџџџџџџџџЛўўў џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџwџџџџџџџџOOOџџџџџШШШџџџџџнннџ"""џџџсссџ№№№џ№№№џ№№№џ№№№џ№№№џ№№№џ№№№џ№№№џ№№№џ№№№џ№№№џяяяџяяяџяяяџяяяџяяяџ‰‰‰џџџI/Fџ„V~џ…Wџ…Wџ…Wџ…WџSzџ&$џџџжжжџ№№№џ№№№џ№№№џ№№№џёёёџёёёџёёёџёёёџёёёџёёёџёёёџёёёџёёёџёёёџђђђџђђђџђђђџИИИџџџџџџџџџџџџџgggџјјјџџџџџџџџЋўўўџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўўўUџџџѕџџџџ|||џџџџџІІІџџџџџњњњџzzzљ§џ|||џыыыџяяяџяяяџяяяџяяяџяяяџяяяџюююџюююџюююџюююџюююџюююџюююџюююџдддџ333џџ џtLoџ…Wџ…Wџ…Wџ…Wџ…Wџ„V~џI/Eџџџ“““џяяяџяяяџяяяџяяяџяяяџяяяџ№№№џ№№№џ№№№џ№№№џ№№№џ№№№џ№№№џ№№№џ№№№џ№№№џяяяџQQQџџџœœœџHHHџџџџџ˜˜˜џŠŠŠџjjjџWWWџЃЃЃџ§§§џџџџџўўўџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ=џџџхџџџџ­­­џџџџџkkkџџџџџџџџџжжжѕїџ&&&џФФФџюююџюююџюююџюююџюююџюююџюююџэээџэээџэээџэээџэээџэээџэээџ‘‘‘џџџ3!0џ„V~џ…Wџ…Wџ…Wџ…Wџ…Wџ…WџfCbџ  џџHHHџчччџюююџюююџюююџюююџяяяџяяяџяяяџяяяџяяяџяяяџяяяџяяяџяяяџяяяџяяяџРРРџ џџ===џЯЯЯџ$$$џџџџџўўўџџџџџџџџџўўўџ§§§џџџџџџџџџўўўoџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўўўџџџЭџџџџкккџџџџџ$$$џїїїџџџџџџџџџdddУћџJJJџчччџэээџэээџэээџэээџэээџэээџэээџэээџэээџьььџьььџьььџжжжџџџ  џjEeџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ‚U|џ'%џџџЌЌЌџэээџэээџэээџюююџюююџюююџюююџюююџюююџюююџюююџюююџюююџюююџмммџEEEџџџАААџСССџџџџџNNNџџџџџџџџџџџџџџџџџџџџџџџџџўўўеџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџŸџџџџюююџLLLџџџџ џОООџўўўџџџџџкккЭ ЧџџŠŠŠџчччџьььџьььџьььџьььџьььџьььџьььџьььџыыыџыыыџтттџjjjџџџ;'9џ€Tzџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ]?YџџџSSSџчччџьььџьььџэээџэээџэээџэээџэээџэээџэээџэээџэээџэээџыыыџ„„„џџџGGGџїїїџ~~~џџџџџџџџџџџџџ§ўўўУџџџЏџџџСџџџ™џџџ3џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ[џџџџ§§§џ‹‹‹џџџџџjjjџјјјџџџџџџџџщ†††{эџџ•••џыыыџыыыџыыыџыыыџыыыџыыыџыыыџыыыџыыыџъъъџ‡‡‡џ џџ џyOtџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…^€џ&%џџџЊЊЊџьььџьььџьььџьььџьььџьььџьььџьььџьььџьььџэээџыыыџЏЏЏџџџџХХХџыыыџ666џџџџџТТТџџџџџџџџёџџџ1џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ!џџџчџџџџлллџџџџџ###џеееџџџџџџџџ§ќќќЅ sёџџџоооџъъъџъъъџъъъџъъъџъъъџщщщџрррџŒŒŒџџџ џZ>>џfffџgggџFFFџџџџ  џT=Qџ“kŽџŠ^…џ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџf‹џ–n‘џŒhˆџA-?џ џџџ:::џЏЏЏџфффџщщщџщщщџщщщџщщщџдддџ‹‹‹џџџџXXXџшшшџўўўџТТТџџџџџџтттџџџџџўўўчџџџ9џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџЫџџџџяяяџPPPџџџџџkkkџіііџџџџџџџџїџџџyOзџџџџџџџџџB.?џ’kџ—o’џbˆџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ‡Yџ•mџ–o‘џwXsџB-@џ4#3џёџџџbbbџЃЃЃџЦЦЦџДДДџ†††џ999џџџ§KKKљтттџџџџџёёёџUUUџџџџџgggџљљљџџџџџџџџБџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџWџџџљџџџџЩЩЩџџџџџџЏЏЏџџџџџџџџџўўўїўўўKџџџ cГйщэлЙ у;'9џL4JџŠe†џ—o’џ’iџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…WџŽd‰џ—o’џ‘kŒџY@Vџ?*=џ>*<ѓ;Ћћџџџџџџџџчnnnзїїї§џџџџџџџџ“““џ џџџџ!!!џбббџџџџџўўў§џџџGџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџХџџџџ§§§џ\\\џџџџџ666џиииџўўўџџџџџўўўгџџџ7џџџџџџ+79->)<…?*=џC-AџzYvџ–n‘џ–m‘џ‡Yџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџˆ[‚џ”kŽџ—o’џ_~џC.Aџ?*=џ>*=Љ=*=qеѕћ§§їщЇїїїщџџџџўўўџсссџџџџџџrrrџќќќџџџџџџџџЧџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџOџџџѕџџџџкккџ000џџџџџFFFџёёёџџџџџџџџџџџџеџџџ/џџџџџџџџџџџџџџџџџџџџџ>)=7>*<ї?*=џ`E]џ•nџ–n‘џa‡џ…Wџ…Wџ…Wџ…Wџ…Wџ…WџfŠџ–o‘џ•mџ^D[џ?*=џ?*=ы>**=љ?*=џlNhџ–n‘џ–n‘џŽcˆџ…Wџ…Wџ…Wџ‰]„џ”lџ—o’џ“lŽџY?Vџ?*=џ?*=ћ?)=OџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџGџџџуџџџџџџџџѕѕѕџ~~~џџџџџџlllџќќќџџџџџџџџыџџџ+џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ[џџџљўўўџюююџVVVџџџџџџqqqџщщщџџџџџўўўџўўўяџџџ}џџџџџџџџџџџџџџџ@+;?)<е?*=џK4Iџ„aџ—o’џ•mџŽc‰џ‰\ƒџŒa‡џ”lџ–o‘џ•mџqQmџ@+>џ>*=§>*<Џ=*<џџџџџџџџџџџџџџџџџџџџџџџџўўўџџџыџџџџўўўџёёёџ{{{џџџџџџSSSџхххџџџџџџџџѕџџџqџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўўўџџџЅџџџ§џџџџмммџ===џџџџџџ]]]џэээџџџџџџџџџџџџїџџџЛџџџ3џџџџџџџџџџџџ?)>>џРРРџћћћџџџџџџџџџџџџѓџџџЅџџџ7ўўў џџџ?*<?*<­?*<џ@*=џaD]џŒfˆџ–n‘џ—o’џ—o’џ’jџyUuџD-Bџ?*=џ?)=ѕ?*=o?*?џџџџџџџџџџџџџџџџџџ5ўўў›ўўўѓџџџџџџџџџџџџЪЪЪџIIIџџџџџџ111џЧЧЧџўўўџџџџ§џџџХўўўџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ%џџџЯўўўџџџџџаааџ>>>џџџџџџџџѓѓѓџўўўџџџџџџџџџўўўуџџџЅџџџEћћћ L8J/?*=х?*<џ@+>џU:RџuQpџƒ\~џ{Uvџ_A\џE.Cџ?*=џ?*=ћ?*=—@'>џџџџџџџџџџџџ џџџ5џџџ›џџџпџџџџџџџџўўўџѕѕѕџЇЇЇџ###џџџџџџ џЪЪЪџ§§§џџџџџџџџпџџџ7џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўўў/џџџЫџџџџџџџџэээџRRRџџџџџџџ888џІІІџїїїџџџџџџџџџџџџџџџџџџџџпџџџ™­Є­—S@Qэ?*=џ?*=џ?*=џ?*=џ?*=џ?*=џ?*=џ?*=ѓ>)=‘M3Mџџџџџџ)ўўўQџџџƒџџџгўўў§џџџџџџџџџџџџљљљџТТТџMMMџџџџџџџBBBџаааџўўўџџџџџџџџсџџџCџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ5џџџЯџџџ§џџџџцццџuuuџ џџџџџџџPPPџГГГџ№№№џ§§§џџџџџџџџџџџџџќќќїмилїvguџL8JџB-@џ?*=џ?+=џH4FџYGWїЄšЃПюьюŸџџџБўўўЩџџџлџџџёџџџџџџџџџџџџўўўџєєєџЯЯЯџgggџџџџџџџџUUUџмммџўўўџџџџџџџџчўўўIџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ/џџџХџџџџџџџџ§§§џЇЇЇџ+++џџџџџџџџCCCџŽŽŽџгггџќќќџџџџџџџџџџџџџњњњџвЭвџЈŸЇџš™џŸ”žџТЛТџёяёџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўўўџчччџЅЅЅџWWWџ џџџџџџџџ†††џђђђџџџџџџџџџџџџзџџџIџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўўў%џџџЁџџџљџџџџќќќџкккџdddџџџџџџџџџџGGGџƒƒƒџУУУџкккџщщщџєєєџўўўџўўўџџџџџџџџџџџџџџџџџўўўџїїїџэээџсссџЬЬЬџЃЃЃџXXXџ$$$џ џџџџџџџ џEEEџЩЩЩџљљљџџџџџџџџћџџџЩџџџ/џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ џџџƒџџџэџџџџџџџџњњњџДДДџDDDџџџџџџџџџџџ џ???џYYYџqqqџ€€€џџ•••џџƒƒƒџuuuџ^^^џJJJџ...џ џџџџџџџџџџ'''џŸŸŸџэээџџџџџџџџџџџџ§ўўўŸџџџ!џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ;џџџЩџџџћџџџџўўўџєєєџБББџQQQџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ џ333џ’’’џчччџ§§§џџџџџџџџџџџџлџџџgџџџ џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ!ўўўƒџџџяџџџџџџџџџџџџєєєџГГГџiiiџџџџџџџџџџџџџџџџџџџџџџџџџџCCCџЃЃЃџуууџўўўџџџџџџџџџџџџћўўўЉџџџ9џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ%ўўў—џџџхџџџџџџџџџџџџџџџџєєєџЏЏЏџfffџ:::џџџџџџџџџџџџџџџџџ џ+++џMMMџ———џтттџџџџџџџџџџџџџџџџџџџџїџџџБџџџKџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ џџџ7џџџџџџчџџџћџџџџџџџџџџџџћћћџфффџЪЪЪџЅЅЅџ‚‚‚џZZZџ777џџџџџџџџ,,,џKKKџlllџ˜˜˜џПППџйййџёёёџџџџџџџџџџџџџџџџ§ўўўѓџџџНџџџYўўўџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўўўџџџwџџџЛџџџѕџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџјјјџщщщџтттџшшшџёёёџљљљџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ§џџџеўўў‘џџџ?џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ7џџџuџџџЗџџџнџџџэџџџљўўўџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ§џџџѓџџџхџџџЭўўў‹џџџKџџџ!џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџEџџџkўўў‡ўўўЋўўўЧџџџлўўўыўўўѓџџџїџџџѕџџџэџџџхџџџЯџџџЙџџџЁџџџ{ўўўWџџџ-џџџ џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ ўўўџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ80џџPROGRESSФШШJDownloading dependenciesMS Shell DlgP Дmsctls_progress32X–2)џџ€CancelP Дџџ‚Please wait...P -‚џџ‚1.40 / 32.00 MBL џџџџ h  Ј00 Ј%@@ (B€€ (gpodder-3.9.0/tools/win32-launcher/gpodder.ico0000644000016000001710000030253612654461624022325 0ustar jenkinsjenkins00000000000000 hV ЈО00 Ј%f@@ (B;€€ (6}(  @џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ-+% 3.+9,5;;+8U<+9c<+9i<+9i<+8c;+7Y9,5I6.0520*#1/)-+$ џџџU=R•qPmѕ~Xyџ†]џŠ`…џŒa‡џŒa‡џŠ`…џ†]џ€Y{џxTtџnNjэV>RЗ7,23џџџ?*<tPoї…Wџ‡Zџˆ\ƒџˆ[‚џ†Y€џ†Yџ†Yџ†Zџ‡Z‚џ‡[‚џˆ\ƒџŠ_…џhIdЫџџџџџџ`C]­nNjЩgHcЃ`C]‹cF_‘tRpп†X€џ…Wџ‡ZџvRrћtPpљXzџ‹`†џuRqљ?)<џџџџџџџџџџџџџџџC>+<‰]„џ…WџqNmї)>*=?)<-R8Os„p‚БфффKџџџџџџўўў џџџCSSSuаааџ•’•џyOsџzPtџ‚}‚џЂЂЂї7фффU˜˜˜Љ‘‘‘яЮЮЮgџџџџџџўўў;BBBџxxxџџŒŒŒџeMbџhSfџ“““џЄЄЄџг’’’љвввўўў7џџџџџџџџџњњњW џŒŒŒџiiiџOOOџp}џƒŒџrrrџGGGџlllџ???џџџџ5џџџџџџџџџџџџпппq џ~~~џљљљџїїїџrџ˜’—џїїїџьььџYYYџFFFџџџџџџџџџџџџџџџџўўўpppпƒƒƒџђђђџёёёџiSfџ‡~†џѓѓѓџ№№№џ џgggљџџџџџџџџџџџџџџџџџџ“““Ѓwwwё‘‘‘эŠџuMpџdKaџаааџ•••џMMMџўўўkџџџџџџџџџџџџџџџџџџњњњ/]]]љВВВЃVATƒ‰_„џdF`­^^^gxxxяŒŒŒЧџџџџџџџџџџџџџџџџџџџџџџџџмммQlllёlllяf\eџ|z|гcccљ‹‹‹ЯўўўџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџиииqžžžЈЈЈ•яяяWџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ( @ €џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ##")'%,)! ,*& /+$ 1.'/.(.,*2-(30'31'31'30'2-(.,)/.(0.'.+$ ,+' *( )(#%"џџџџџџџџџџџџџџџџџџ)(! /-(20*)4/-;9-5_;+7}<+9“<+:Ѕ=*:Б=*;Й=+:Н=*:П=+:П=+:Л=+:Е=+:Џ<+9Ѕ<,8™;,7‹:,6{8.3i50/O31+C31+;20*320*)0.&)' џџџџџџџџџ2-*!;,7‰E0Bз[?XћlLhџyVuџ‚]}џ‡aƒџŒd‡џf‰џg‹џg‹џg‹џfŠџeˆџŠc…џ†`џ\|џzXvџsRoџjKgџ_B\џP7Mэ@-=Щ;-6™50.[31+?.-'џџџџџџџџџC-AЋtRpџg‹џŽd‰џ‹`†џ‰]„џ‡[‚џ‡[‚џˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџ‰]„џŠ^…џ‹`†џcˆџf‹џeˆџvTrџQ8Nэ<*:k&$џџџџџџџџџ?*< Z>VѓŽcˆџ…Wџ…X€џ†Y€џ†Yџ†Zџ‡Zџ‡Z‚џ‡[‚џ‡[‚џ‡[‚џ‡[‚џˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџŠ_…џg‹џfGb§?*=Yџџџџџџџџџ?)<V;Sыcˆџ…Wџ…Wџ†Y€џˆ\ƒџŠ]„џŠ^„џ‰]„џ‡Zџ…Wџ…Wџ…Wџ…Wџ…Wџ…Xџ…X€џ†X€џ†Y€џ†Zџ‡[‚џ‡[‚џˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџg‹џL4JеџџџџџџџџџџџџH0FХgŠџŽeˆџ„^џwUsџlMiџeGbџaD^ћcF`§lNiџ‚^}џ‹`†џ…Wџ…Wџ…Wџ…Wџ…Wџ…WџŠ^„џbˆџbˆџŒ`†џ‰]„џ‡[‚џ‡[‚џˆ\ƒџŽd‰џZ>Wѓ?)< џџџџџџџџџ?*=;D-BЕA+?Ї>*=}>**<7>*)=?)<>*=/?*=ƒjLg§Š^…џ…Wџ…Wџ…Wџ…WџŽe‰џiJeџW;TэV;Sэ^B[ћmMiџ€[{џŽf‰џŽd‰џfŠџX=Uё>)=џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџK3HЫeŠџ…Wџ…Wџ…WџŒ`†џbE_§>*=G>)<>)=>*=?)<;?)пKџџџџџџџџџџџџџџџ?*<Q?PGьъьПннныџџџ7џџџџџџџџџџџџџџџџџџџџџџџџџџџwџцццџЄЄЄџ5)3џ†Z€џ…Wџ…Wџ„V~џI3Gџ]]]џŽŽŽџ,,,у%џџџџџџџџџ џџџ=ўўўiѕѕѕЧdddџАААћџџџ?џџџџџџџџџџџџџџџўўўўўўўўў{СССeMMMѕэээџюююџюююџŽŽŽџT7Pџ…Wџ…WџZ;VџvvvџьььџьььџгггџЙџџџџџџcзззщџaaaџKKKџЙЙЙљџџџcџџџџџџџџџџџџџџџџџџџџџg{{{џMMMџCCCџЏЏЏџ№№№џ   џЈЈЈџыыыџ6,4џ„V~џƒU}џ706џъъъџЋЋЋџЩЩЩџяяяџeee§ЃЃЃ_ЎЎЎ§YYYџИИИћцццеўўўџџџ;џџџџџџџџџџџџџџџџџџџџџџџџ@@@џџџшшшџЃЃЃџџџžžžџedeџwNqџeB`џƒƒƒџИИИџџ џЮЮЮџІІІџœœœёNNNџњњњыџџџ/џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўўў$$$џџџјјјџџџџhhhџ™™™џ^=ZџB+?џЫЫЫџ­­­џџџџЪЪЪџџџƒƒƒџџџџuџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџіііЙџџ###џћћћџшшшџ111џџСССџЕЕЕџQ5Mџ3$1џѓѓѓџђђђџ***џџŸŸŸџдддџџџcccџџџџ]џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџфффеџџџњњњџћћћџљљљџѕѕѕџњњњџЙЙЙџN3Kџ6+5џћћћџќќќџюююџФФФџњњњџХХХџџџџџџџCџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџйййы&&&џџџхххџјјјџјјјџїїїџїїїџЄЄЄџX9Tџ6+5џјјјџјјјџљљљџљљљџљљљџžžžџџџ›››џџџџ'џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџeѓѓѓнџiiiџЉЉЉџєєєџєєєџєєєџѓѓѓџwwwџmGhџ3$1џыыыџѕѕѕџѕѕѕџѕѕѕџіііџ]]]џџџЖЖЖљџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџќќќЁџІІІџUUUџ№№№џ№№№џ№№№џюююџ=7<џƒU}џG.DџЙЙЙџёёёџёёёџђђђџуууџ"""џџџвввыџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўўўqFFFџ{{{џlllщЉЉЉџьььџьььџžžžџI0Fџ…WџsKnџ]]]џэээџэээџюююџqqqџdddџџўўўйўўўџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ!ЂЂЂћџшшшпЙtttџuuuџ7+5џƒV}џ…Wџ‹_†џ3&1џ‹‹‹џкккџџwwwџBBBџpppџџџџUџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџљљљЃ222џfffџќќќЃ9 K`D]ћŠ^…џ…WџˆaƒџA,?eŽŽŽПЁЁЁџџооолџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџдддхџuuuџљљљЕўўў!D.BЇ†`џfŠџZ?Wѓ>*=%џџџўўў‹­­­§ џЅЅЅћџџџEџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ3ЯЯЯы%%%џ888џЙЙЙїцфцЧ{jy§jVhџЏІЎБўўў›зззщbbbџ џ   §ўўўkџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ%яяяЧџџџNNNџdddџXXXџ...џџVVVџеееыўўўSџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџUїїїНОООї’’’џ~~~џˆˆˆџЌЌЌ§чччйџџџ}џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ џџџ1џџџEџџџ;џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ(0` €%џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ*%$$$2).-"/-) **% ''' )%% 5'% 4.# 22" 22" 22" 22" 4.# 5'% *&& ((& ++& .-) .."/)$$$*%џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ!%#*%" -,%.+%1.)0-)1/(1/*#10*'20))20)-30+/30+130,740,930,941,951,741+741+741+531+520*531*321+330+120+/20)+20))1/+'2/*#0/'/-)0.(.,&/.%'&" '" џџџџџџџџџџџџџџџџџџ )( .-'1/))20*331+;6/0Q:,6u;+8•=+:­=*;С=*;б>*<п>*<ы>*<ѓ>*<ї>*<љ>*<љ>*<љ>*<љ>*<љ>*<ї>*<ё>*<ы>*;у>*;й=*;Я=+:У<+9Е<,8Ї;,7™:-5‡8/3s51.Y41+O32+K31+G31+A31+;21+31/('/.''% џџџџџџџџџџџџ/-&2/)38-3m<+9Е?*<чE.BџS8PџaD^џmMiџwTsџ~Zzџ…_€џ‰c…џŽf‰џh‹џ’jџ“jŽџ“jŽџ’jŽџ’jџh‹џfˆџŠc…џ†`џ\}џ|XxџuSqџoNkџgHdџ`B]џW;TџM3JџC-Aџ?*=э=+:Ы;,7Ѕ8/1w41,[31+S31+G20)1-+$џџџџџџџџџџџџ 8*2!>*;ЙI1FџiIeџ„_џ“kŽџ•lџ’iџf‹џŽd‰џbˆџŒ`†џ‹`†џŠ_…џŠ^…џŠ^…џŠ^„џŠ^„џŠ^…џŠ_…џŠ_…џ‹`†џ‹`†џŒa‡џbˆџŽc‰џeŠџf‹џ‘hŒџ“iџ”kџ•mџ“kŽџ‡a‚џuSqџ_B\џG0E§>*;й:,630+30/)('"  џџџџџџџџџџџџџџџ>)<БaC^џ’jџ’iџb‡џ‰]„џˆ[‚џˆ\ƒџˆ\ƒџˆ\‚џ‡[‚џˆ[‚џˆ\ƒџ‡\‚џˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџ‡\‚џˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџ‡\‚џˆ\ƒџˆ\ƒџ‡[ƒџˆ\ƒџ‡[ƒџˆ\ƒџ‰^„џŒa‡џeŠџ“jŽџ’jџxUtџN5Lџ>)<Л:(6 џџџџџџџџџџџџџџџ?*< A+?эgŠџŠ^…џ…Xџ†X€џ†Y€џ†Yџ‡Zџ‡[‚џ‡[‚џ‡[‚џ‡[‚џˆ\ƒџ‡[ƒџˆ\ƒџˆ\ƒџ‡[ƒџˆ\ƒџˆ\ƒџ‡[ƒџˆ\ƒџˆ\ƒџ‡[ƒџˆ\ƒџˆ\ƒџ‡[ƒџˆ\ƒџˆ\ƒџ‡[ƒџ‡[ƒџˆ\ƒџ‡[ƒџ‡[‚џˆ\ƒџ‡[ƒџˆ\ƒџŠ^…џg‹џ“kŽџdEaџ?*=Ы>)= џџџџџџџџџџџџџџџ?); @+>ыŽgŠџˆ[‚џ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Xџ…X€џ…X€џ†X€џ†Y€џ†Yџ†Yџ†Zџ‡Zџ‡Zџ‡[‚џ‡[‚џ‡[‚џˆ\‚џˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџ‡[‚џˆ\‚џˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџ‡\‚џŠ_…џ”lџZ>Wџ?*<{џџџџџџџџџџџџџџџ?(??)=п‰c„џ‰]„џ„V~џ„V~џ…Wџ‡Yџ‰\ƒџ‹_…џŒa†џb‡џb‡џŒa‡џŠ^…џ‡Zџ…Wџ„V~џ…Wџ„V~џ„V~џ„V~џ„V~џ„V~џ…Wџ…Wџ…Wџ…Wџ…Wџ…X€џ†Yџ‡Zџ‡[‚џˆ[‚џ‡[‚џ‡[‚џˆ\ƒџ‡[ƒџ‡[‚џˆ\ƒџcˆџ‚]~џ?)=г@);џџџџџџџџџџџџџџџ?)=ЛzVvџ’hŒџf‹џ“jŽџ•mџ’kџ‹d†џ\|џyWuџuSpџrQnџsSoџyXuџ‡c‚џ“kŽџŽcˆџ†X€џ…Wџ„V~џ…Wџ…Wџ…Wџ…Wџ…Wџ„V~џ…Wџ…Wџ‡Zџ‰]ƒџ‰]ƒџˆ[‚џ†Y€џ†Y€џ‡Zџ‡[‚џˆ\ƒџ‡[‚џˆ\ƒџŠ^…џhŠџA+?ы?)< џџџџџџџџџџџџџџџ>*=eN4KџpOlџhIeџZ>WџM3JџC,@ѕ?*=ч>)<Ы?)<Г>*<Ё>)=•>)<™>*<Ћ?*=бI2GљoPkџ’jџ‡Yџ„W~џ…Wџ…Wџ„W~џ…Wџ„W~џ…Wџ‹`†џ”kџ‘iŒџŠc…џŠd…џhŠџ“lџ”kџg‹џb‡џ‰]„џ‡[‚џ‡[‚џ‰^„џh‹џB,@я?)=џџџџџџџџџџџџџџџ@*=?**<[?*=3?)<=,<џџџџџџџџџџџџџџџџџџџџџ?*='?*=СlNiџfŠџ„V~џ…Vџ…Wџ…Vџ…Vџ…WџŒa‡џfˆџZ>WџC-Aѓ?*=с>*<уA+>ыG0EћT9QџfGbџ{WvџhŠџ”kџf‹џŽcˆџŒe‡џ?*=ч>)=џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ>*=5N5Kџ”kџ…Wџ…Wџ…Wџ„V~џ…Wџ†X€џ”lџR8Pџ>*=‹?*<<(<<*<?)= >*=?)>>џџџџЙЙЙџјјјџCCCџџџџџўўўЁџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџђђђџџџџџВВВџћћћџќќќџРРРџ'''џџnnnџљљљџћћћџџwNrџ<':џ†††џћћћџќќќџШШШџџџџыыыџњњњџCCCџџџџœœœџџџџ…џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ9уууџџџџџЄЄЄџћћћџќќќџќќќџїїїџюююџћћћџћћћџњњњџџuLpџ1 /џџћћћџќќќџќќќџнннџџлллџќќќџћћћџ444џџџџИИИџџџџiџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџUЬЬЬџџџџџ‡‡‡џљљљџњњњџњњњџњњњџљљљџљљљџљљљџіііџџzPuџ-+џЄЄЄџљљљџњњњџњњњџћћћџћћћџћћћџћћћџјјјџџџџџгггџўўўOџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџmЭЭЭџBBBџџџџZZZџїїїџїїїџїїїџїїїџїїїџїїїџіііџфффџџ€T{џ1 /џ›››џїїїџјјјџјјјџјјјџљљљџљљљџљљљџлллџџџџџчччџўўў3џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўўў%џџџПџџџэyyyџџˆˆˆџ џёёёџєєєџєєєџєєєџєєєџєєєџєєєџСССџџ„V~џ=(:џџѕѕѕџѕѕѕџѕѕѕџіііџіііџіііџіііџ   џџџџџљљљћџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ…џџЏЏЏџ+++џМММџђђђџђђђџђђђџђђђџђђђџёёёџџ7$5џ…WџR6OџUUUџђђђџѓѓѓџѓѓѓџѓѓѓџѓѓѓџєєєџѓѓѓџOOOџџџџ***џўўўэџџџ џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџi   џџŽŽŽџˆˆˆ§UUUџяяяџяяяџяяяџяяяџяяяџыыыџ...џc@^џ„WџrJmџџъъъџ№№№џ№№№џёёёџёёёџёёёџбббџџџџ333џ\\\џџџџнџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ9дддџџOOOџэээљёГГГџэээџэээџэээџэээџŸŸŸџџ‚U|џ…WџƒV}џџЇЇЇџюююџюююџюююџюююџэээџYYYџqqqџџџўўў§ўўўѓўўў•џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ §§§ч)))џ џцццџЕћСССџъъъџъъъџСССџџdA`џ…Wџ…Wџ…WџaE^џ,,,џрррџыыыџьььџьььџ–––џ)))џЈЈЈџџaaaџўўўПџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ‘‘‘‘џџrrrџўўўу---q ѓPPPџRRRџ џ]DZџ‡Zџ„V~џ„Vџ‡Z‚џˆdƒџ§>>>џПППџбббџuuuџ§ЮЮЮџEEEџџТТТџўўўgџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўўў#іііѕ$$$џџФФФџўўўЕ:::ac6$4СyWuџ‹`†џ„V~џ…WџeŠџgJcџ<(:‰yнщГооояЄЄЄџџFFFџ§§§чџџџ џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўўўƒСССџџџиииџџџџ­ўўўџџџ?*=YW=Tџ’iџ…XџŠ^„џgˆџD.Bѓ>*=џџџџџџџџџџџџЧШШШџџџиииџџџџeџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўўўХ™™™џџџЦЦЦџўўўзўўўGp`n @*=бvVrџ”lџ‘jŒџU;Sџ>*=џџџџџџўўўWџџџуИИИџџџЌЌЌџџџџБўўўџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўўўеœœœџ џџwwwџыыы§џџџЩЧСЦЅS@QћT:QџJ2GџZHXЗяэя?џџџyџџџбщщщџoooџџ џЇЇЇџўўўЫўўўџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўўўХЧЧЧџ///џџџhhhџЕЕЕџйзиџФОФџидиџћћћљцццџЖЖЖџgggџџџ222џЬЬЬџџџџПўўўџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ џџџ‰јјјљџ---џџџџџџџџџџ---џžžžџњњњљџџџ…ўўў џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўўў'ўўўŸўўўѕгггџџdddџHHHџ<<<џFFFџbbbџџвввџўўўѕџџџЁўўў'џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџYўўў•ўўўСўўўнўўўчўўўпўўўХўўў—џџџYўўўџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ(@€ Bџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ  :(11,,,***%%%$$$""",!!9%!8, 6644444444668, 9%!,!!"""$$$&&&***,,,334( џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ *" '% .*' ((& .)"/-%0.),+'/+(1/%1/&2-*10(//(/.+0-+!2.*!2/)!20(#31(#30(#31)#30)#30)#31(#20(#2/)!2.*!1.+!/.*0/(00(1.*0.%1/%.+),,(1.)..#+'"(($ .,$ )# ##### џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ,%# ,*#.-(1-'0.(2/)#2/*'20++20*/20*320+531,96//G7.2U8-3_:,5k:,6q:,6u:-6}:-6}:,6:,6:-6;-6{;-6y:-5u:-4q9.4k9.3e7/2]5//U4/-M31+G32+E31,C31,C30,A31+?31+=31*;31+730+520*320*/20*+1/)'1/)#0.)0.&--(-)!(& џџџџџџџџџџџџџџџџџџџџџ)' .-%//)%10*/20+931+?31,E8.2c;,6…<+9Ѕ=*:П>*;е>*<щ>*<ѕ>*<љ>*<ћ>*<§>*<§>*<џ?*=џ?*=џ?*=џ?*=џ?*=џ?*=џ?*=џ?*=џ?*<џ>*<§>*<§>*<§>*<ћ>*<ћ>*<љ>*<ѓ>*<ч>*;л=+:Э=+:П<+9Б;,7Ÿ:-58/2u51.]41+U41+S32,O41,M31+I31,C31+?31+72/)/10)#/,'&& џџџџџџџџџџџџџџџџџџ.+%2/()30*=5/.U;,7“=+:Щ>*<ё?*=џA+?џJ1GџV:SџaC]џkKgџrQnџzVuџ[{џ„_€џ‰b„џŒe‡џgŠџ‘iŒџ‘iџ‘iџ‘iџ‘iџ‘hŒџh‹џŽfˆџ‹c†џˆaƒџ„^џ[{џ{WwџvSrџpNlџiIeџbD_џ[>XџT9QџM3JџF.CџA+?џ@*>џ?*=џ>*<ы=+:Ы;,7Љ8.251-c41+]32,Y31+S31+I20*;0/)',*#џџџџџџџџџџџџџџџџџџ.*$6-03=+9Ѓ>*<ѓC,@џU9RџmLiџ€[|џgŠџ–mџ–n‘џ–n‘џ•mџ”lџ“jŽџ’hџ‘hŒџf‹џf‹џfŠџeŠџeŠџeŠџeŠџeŠџfŠџf‹џ‘g‹џ‘gŒџ‘hŒџ’iџ“jŽџ“jŽџ”lџ•mџ–m‘џ–n‘џ–n‘џ–n‘џ–n‘џ”lџgŠџ…_€џxUtџhIeџV:SџG/Dџ@*>џ>*<э<+9З8.2s31,K30+A21*3//)!+(#џџџџџџџџџџџџџџџџџџ;)7)>*<зF/CџkJgџ‹d†џ–n‘џ•mџ’iџeŠџbˆџŠ_…џ‰]„џˆ[‚џ‡[‚џ‡[‚џˆ[‚џˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ]ƒџ‰^„џŠ_…џ‹`†џŒb‡џŽd‰џf‹џ’hџ”kџ•mџ–n‘џ“jŽџ]}џgHcџK2Hџ?*=ћ=*;Л8+4E/-&+*# џџџџџџџџџџџџџџџџџџA+<>*<БL3Iџ‰b„џ–n‘џ‘hŒџŒa‡џˆ]ƒџˆ[‚џˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџ‰]„џ‹`†џd‰џ“jŽџ–n‘џ’jџvTrџM3Jџ>)<я>);_џџџџџџџџџџџџџџџџџџџџџџџџ?*<?*<чqOmџ•mџ‰\ƒџ…X€џ†X€џ†Yџ‡Zџ‡Z‚џ‡[‚џ‡[‚џˆ[‚џˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџŠ^…џfŠџ•mџ‘iŒџaC^џ?*=ї>*<[џџџџџџџџџџџџџџџџџџџџџџџџ?*<?*<чsQoџ”kџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Xџ†X€џ†Y€џ†Yџ†Yџ†Zџ‡Zџ‡Zџ‡Z‚џ‡[‚џ‡[‚џ‡[‚џ‡[‚џˆ[‚џˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџ‰^„џ‘hŒџ•mџaC^џ>)=ы?*=!џџџџџџџџџџџџџџџџџџџџџ?); ?)<пnMjџ•mџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Xџ…X€џ†X€џ†Y€џ†Yџ†Yџ‡Zџ‡Z‚џ‡[‚џˆ[‚џˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџ‘hŒџh‹џH0Fџ?)<‰џџџџџџџџџџџџџџџџџџџџџџџџ?*=гfGbџ–n‘џ†X€џ…Wџ…Wџ…Wџ…Wџ‡Zџ‰]„џ‹`†џbˆџŽd‰џeŠџfŠџeŠџdŠџcˆџ‹_…џ‡[‚џ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ†X€џ†Yџ‡Zџ‡[‚џˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџ‰]„џ–n‘џcD_џ?)<Я@);џџџџџџџџџџџџџџџџџџџџџ?)=­X)=kC-Aџ…_џ“lŽџh‹џˆaƒџyVuџkKgџ^@ZџS8PџJ1GџB,?џ?*=џ>*<§>)=љ?*=ї?*=ї?)<ћ@+>џK4IџaF^џ‚`~џ•mџb‡џ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ†X€џŒa‡џ’hџ•lџ–n‘џ–n‘џ•lџ“kŽџ‘gŒџŽc‰џŠ_…џ‡Zџ†Yџ‡Z‚џ‡[‚џˆ\ƒџˆ\ƒџˆ\ƒџ”kџuRqџ?*=щ?*=џџџџџџџџџџџџџџџџџџџџџ?*<?*=ЫB,@џJ1HџE-Bџ?*=§>*=ё?)=п>)<Н?*<›?*=}>*<_?)*<9>)=+?*>%?*='?)<3?*)=u?*<С@+>љcG`џ”lџŒ`†џ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ‰\ƒџ”lџ“kŽџ\}џoNkџhHdџhHdџmMjџvTrџƒ^џg‰џ”lџ–n‘џ”kџfŠџ‹`†џˆ\ƒџˆ\‚џ‡[‚џ”kџsQoџ>)=ч>)=џџџџџџџџџџџџџџџџџџџџџџџџ>)=?*<_>*<{>**<9>*=@)=џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ@+>>)=Q?*=ѓrRnџ”kџ…Xџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ‡Zџ•mџ†`џP6Mџ?*=ћ>)<у>)<з>)=з>*=п>*=э?*=§C,AџN5Lџ_A\џuSqџŠc…џ•mџ•mџ’iџŽcˆџ•mџkKgџ?)=н?)=џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ>*=ЁT:Qџ–n‘џ‡Z‚џ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…WџfŠџhŠџI1Gџ>*=Х?*<9>)< џџџџџџ>*= >*=?*=-?)<[?)<>*<Х?*=ѓB,@џS8PџlKiџ…_€џ“kŽџ“kŽџS9Pџ?)<Џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ?*<O6Mџ–n‘џˆ\ƒџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ†X€џ•lџpNlџ?*=ѕ>)<џџџџџџџџџџџџџџџџџџџџџџџџџџџ@*;?)=?*=U?*<Ѕ?*=чA+>џI1FџK2Hџ?*=ѕgWfSџџџ-џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџU]/..>*<Й\@Yџ–n‘џ‡Zџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџˆ[‚џ–n‘џY=Vџ>)<Гџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ?)=?**<{>*<ƒv‚UўўўйџџџљўўўГџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџwёџџћС7%5ѓuTqџ“kŽџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…WџŠ]„џ–n‘џF/DџЭЁ‹5џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџЭ№№№џџєєєџџџџЙўўўџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ‹џ{{{џмммџчччџЈЈЈџ%%%џ  џ|ZxџŽcˆџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ‰^„џS=QџџџBBBџ&&&џ§џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ9џџџсёёёџLLLџџрррџџџџУџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџSћ–––џыыыџыыыџыыыџыыыџзззџ---џ! џV|џ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ„V~џB,@џџxxxџтттџщщщџчччџ’’’џ џ…џџџџџџџџџџџџўўўџџџ!џџџ_ўўў‘џџџЛўўўуўўўџсссџ;;;џџШШШџўўўёџџџ7џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўўў%ўўў!ўўўўўў џџџ зWWWџыыыџьььџэээџэээџэээџэээџХХХџџF.Cџ„V~џ…Wџ…Wџ…Wџ…Wџ…WџY:Uџџ‹‹‹џыыыџыыыџыыыџыыыџыыыџŒŒŒџї9џџџџџџџџџўўў5џџџБџџџїќќќџыыыџЯЯЯџЄЄЄџiiiџџ...џдддџџџџѓџџџOџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўўўoџџџћџџџ§џџџэўўўлџџџЩŒŒŒС џШШШџюююџюююџюююџюююџяяяџяяяџяяяџwwwџ  џyOtџ…Wџ…Wџ…Wџ…WџzPtџ џ^^^џыыыџэээџэээџэээџэээџэээџчччџ999џБџџџџџџ]џџџѕцццџ‡‡‡џ:::џџџџ111џxxxџъъъџџџџщџџџIџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџПиииџkkkџџЉЉЉџХХХџFFFџFFFџяяяџ№№№џ№№№џёёёџяяяџ№№№џёёёџёёёџиииџџM2Jџ…Wџ…Wџ…Wџ„WџC,@џџзззџ№№№џяяяџяяяџяяяџяяяџяяяџюююџŸŸŸџї!ўўў5ўўўїСССџџџWWWџ’’’џЦЦЦџцццџќќќџџџџїџџџЙџџџ+џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџеЋЋЋџџџџџџ“““џђђђџђђђџэээџ~~~џ$$$џ---џ‘‘‘џ№№№џђђђџYYYџџƒU}џ…Wџ…Wџ~Rxџ џuuuџђђђџ№№№џџ???џjjjџлллџёёёџ№№№џрррџџgџџџНфффџџOOOџуууџўўўџџџџэџџџХџџџ•џџџ]џџџ!џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўўўхџџџџџџЪЪЪџєєєџєєєџ‚‚‚џџџџџˆˆˆџєєєџЈЈЈџџwNrџ…Wџ…Wџ[;Vџ џбббџѓѓѓџЄЄЄџџџџ+++џрррџђђђџђђђџBBBџ333Эўўўљ|||џџюююџџџџЫџџџEџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџїsssџџџџџџэээџіііџђђђџ###џџџџџџцццџлллџ џ[;Wџ…Wџ„V~џ0.џ<<<џѕѕѕџѕѕѕџVVVџџџџџoooџєєєџєєєџqqqџ222џќќќџ111џoooџџџџџўўўуџџџgџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ/џџџџWWWџџџџџ+++џїїїџїїїџьььџџџџџџџШШШџіііџ'''џA+?џ…WџU|џ џ‚‚‚џїїїџїїїџLLLџџџџџџяяяџіііџ“““џџDDDџџNNNџ™™™џзззџџџџуџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўўўIўўўџ:::џџџџџ???џљљљџљљљџљљљџ888џџџџџџвввџњњњџLLLџ.,џ„V~џuLpџџЛЛЛџљљљџљљљџyyyџџџџџџрррџїїїџЇЇЇџџџџџџœœœџџџџлўўў џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџeљљљџ$$$џџџџџHHHџњњњџћћћџћћћџЋЋЋџџџџџ;;;џїїїџћћћџgggџ! џ„V~џ^>Zџ џпппџњњњџћћћџгггџ џџџџџюююџљљљџЏЏЏџџџџџџИИИџџџџЧџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџыыыџџџџџџEEEџћћћџќќќџќќќџќќќџџ$$$џџAAAџиииџќќќџћћћџwwwџџƒV}џN3Jџџїїїџћћћџќќќџќќќџ•••џџџџyyyџћћћџњњњџЌЌЌџџџџџџбббџџџџ­џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ›нннџџџџџџ777џћћћџћћћџќќќџќќќџќќќџѓѓѓџчччџљљљџћћћџћћћџћћћџ{{{џџƒU}џC+@џ'''џћћћџћћћџќќќџќќќџ§§§џХХХџ|||џžžžџіііџќќќџћћћџџџџџџ џуууџџџџ‘џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўўўЗЩЩЩџџџџџџџљљљџњњњџњњњџњњњџњњњџњњњџњњњџњњњџњњњџљљљџљљљџtttџџƒV}џ=(:џ333џњњњџњњњџћћћџћћћџћћћџќќќџќќќџќќќџќќќџћћћџћћћџ‚‚‚џџџџџџєєєџџџџuџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџЯ­­­џџџџџџ џцццџјјјџјјјџљљљџљљљџљљљџјјјџјјјџјјјџјјјџїїїџaaaџ#"џ„V~џ=':џ333џјјјџљљљџљљљџљљљџњњњџњњњџњњњџњњњџњњњџњњњџњњњџ\\\џџџџџ***џўўўџџџџ[џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўўў џџџпЦЦЦџ___џ;;;џџџџџПППџїїїџїїїџїїїџїїїџїїїџїїїџіііџіііџіііџіііџCCCџ2!0џ…WџB+?џ'''џіііџїїїџїїїџјјјџјјјџјјјџјјјџјјјџјјјџјјјџїїїџ+++џџџџџFFFџџџџџџџџ?џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ‰џџџїџџџ§ъъъџ џџ‹‹‹џџ„„„џѕѕѕџѕѕѕџѕѕѕџѕѕѕџѕѕѕџѕѕѕџєєєџєєєџєєєџюююџџH/Eџ…WџO3Kџџ№№№џѕѕѕџѕѕѕџіііџіііџіііџіііџіііџіііџіііџзззџ џџџџџcccџџџџћўўў'џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўўўџџџ{ьььџџџЁЁЁџ^^^џ999џђђђџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџђђђџђђђџЪЪЪџџeB`џ…Wџb@]џџгггџѓѓѓџєєєџєєєџєєєџєєєџєєєџєєєџѕѕѕџѕѕѕџ•••џџџџџџџџџџэџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџSјјјџџџŒŒŒџЕЕЕџџЦЦЦџёёёџёёёџёёёџёёёџёёёџёёёџёёёџ№№№џ†††џ  џ}Rxџ…WџzPtџџЅЅЅџёёёџђђђџђђђџђђђџђђђџѓѓѓџѓѓѓџѓѓѓџ№№№џ===џџџџџџ›››џџџџсўўў џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ3џџџ§333џџbbbџѕѕѕџ'''§___џюююџяяяџяяяџяяяџяяяџяяяџяяяџшшшџ///џ4!1џ„V~џ…WџƒV}џџ___џяяяџ№№№џ№№№џ№№№џ№№№џёёёџёёёџёёёџКККџџEEEџџџHHHџ000џРРРџўўўЯџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўўўџџџэiiiџџ###џ§§§џ–––ы џЙЙЙџэээџэээџэээџэээџэээџэээџџџiEeџ…Wџ…Wџ…WџG.DџџлллџюююџюююџюююџюююџюююџяяяџъъъџDDDџ<<<џmmmџџџўўўџўўўџўўўџџџџ—џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџПАААџџџШШШџїїїэЫ)))џеееџыыыџыыыџыыыџыыыџаааџџ2 0џƒV}џ…Wџ…Wџ…Wџ{Ruџ  џzzzџьььџьььџьььџьььџэээџэээџŒŒŒџ џЛЛЛџ---џџZZZџџџџћџџџiўўўWџџџ џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўўўmіііџџџ]]]џџџџџЪЪЪ“л+++џКККџщщщџщщщџОООџ***џџzPuџ…Wџ…Wџ…Wџ…WџŽd‰џK7Iџ џВВВџъъъџъъъџыыыџыыыџЃЃЃџ џ{{{џНННџџџЎЎЎџџџџеџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџяџџџЭЭЭџџџџы………EУџ)))џ+++џџџ„aџˆ[‚џ…Wџ…Wџ…Wџ…Wџ”lџbF^џ ћџƒƒƒџЯЯЯџУУУџhhhџџaaa§іііџGGGџџџіііџџџџwџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџёёёџџџ:::џѕѕѕџџџџХЮЮЮI‰‹B-@џŒgˆџa‡џ…Wџ…Wџ…Wџ‹`†џj‹џF0Dџ:&8w‹ё§§у{{{Щ§§§џЄЄЄџџџ˜˜˜џџџџёџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџщЌЌЌџџџkkkџњњњџўўўГџџџџџџџџџ>)=?*=эrRnџ“jŽџ…Wџ…Wџ†X€џ•lџoPkџ?)=щ>*<џџџ?7ъъъ[ўўўїаааџџџ;;;џїїїџџџџ}џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ]§§§§pppџџџxxxџљљљџџџџХўўў'џџџџџџ?*<“M5Jџ’kџcˆџˆ[‚џ’iџŒf‡џF/Cџ>*<ƒџџџџџџџџџџџџџџџmўўўљиииџ###џџџгггџџџџгўўў џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ™іііџVVVџџџbbbџюююџџџџэџџџsџџџ?))=пN:L/џџџџџџYџџџГџџџїюююџ{{{џ џџџЎЎЎџўўўїџџџWџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџБјјјџ‰‰‰џ џџџBBBџЏЏЏџѓѓѓџўўў§вЮв§‚tџn^lџ•Š”§чхчзџџџнџџџѓўўўџтттџ‰‰‰џ џџџ)))џШШШџўўўѕџџџ_џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўўў џџџ‹ўўўћЮЮЮџCCCџџџџџSSSџ‰‰‰џЏЏЏџУУУџШШШџНННџЃЃЃџyyyџ???џ џџџ џwwwџ№№№џџџџхўўўGџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџIџџџлќќќџНННџKKKџџџџџџџџџџџџџџqqqџнннџўўўџџџџЏџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ ўўўoџџџсџџџ§шшшџ   џaaaџ777џџ џџ џџAAAџtttџЕЕЕџїїїџџџџћџџџУџџџCџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўўўџџџSџџџЇџџџхўўўљўўўџџџџџїїїџђђђџњњњџџџџџџџџџџџџѕџџџеџџџўўў7џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ-џџџQџџџsџџџ…џџџ‰џџџџџџkџџџIџџџ!џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ(€ џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ<872200,,, +++ +++ +++ &&& %%% %%% ### """ #"" +!! -!! 8!! 8)! 8*! 6. 66 55 33 33 33 33 33 33 33 33 55 66 6. 8*! 8)! 8!! .!! ,"" #"" """ $$$ %%% %%% ''' +++ +++ +++ --- 2222871џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ ,,))'''###" 4' 21 ..& .,+ ,,) ((% %%%$$$/%#1/!00 --$.,(2))3-(11'00&..%--$,,+,++,**++*-+)3+)4+)2+(2+'2.'31'21&10&10&10&11&10&10&10&10&21&31'2.'2+'2+(4+)3+).+)++*,**,++,,'--$//%00&11'3-(-*)-,(..00 1/!.%#$$$&&% ))' ,,) .,+ .." 21 ,&  ###'''** 1 џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ  7!--' ))) $$$ & 00 2,)/+'--&))).('1.$--$/,)3-)11'//%-,+0.,2.*0.(3/'!10%#40.*%1/*%0/)%2/('1/*'00*'//*)1/,)2.+)40+)30++30*+30*+21)+11)+21)+41(-41(-30*-30*-30*-32*-30*-30*-30*-41*-41(-41(-21)+11)+21)+30*+30*+30++40+)3.+)1/,)00*)1/*'2.*'0/('00)%10+%3/*#10.%!3/'!1/(/.*0.,.-+//%22'4-),,&--$1+$)''))%--%1,)..(11 (!! %%% +++ // !!$ џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ)&&&$# .- ++' '&%0'!-,'1-&-,&0*)1/&2-)10)0/)!1.*#2/*%0/('20()21*)1/*+//*-30,-21+/31+131*122)320)511+530*73/*720*931,951,941,;40,=42,?32,A31,C41,C30+C30+C30+C30,E21-E41-C51-C51-A51-A41,A40,A42,A40,A40,A41,A41,?41,?51,?31,?11,?21*?20*?20*?21*=32*=32+=33+;31+;40,;40,;31,921,93/+730+720*510+521)532)331*131+120+/3.*-00*+20*+10))3/')10)'20+%1.*#0/(!1.*/.%0/&-+*--&2/(.,'-'!'&%,,( 2+ & && џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ "((( /"" --'+)'.+%11(0-*2.(!10)#20)'1-*)2/*+30)-30*/1/+340-331+721*731*930,;20+=40*?31,?32,A30,G7//W7.2c8-5o:-6{:-6…;,7<+8™=+9Ÿ<+9Ѕ=+9Љ=+:Џ=+:Г<+:З<+:Й=+:Й=+9Й=+9Й=+:Й=+:Л=+:Л=+:Л=+:Й=+:Е=+:Е=+:Е=+:Б=,9­=,9Љ=+8Ѓ<,8<-8™;-7•<.7<-5‡:.59.4w8.3q7.1i6.0a4.-U41+O42+O32+O21+M22,M33,M32,K42-K40-K31,I42+I40+G41,G30+E31)E32+C22+C42,A41,?40+?10+=30*;31*931*731+540+320+310(/21(-30++1.*'00*%11/)!--*22(/,#,*#.."+# ++ џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ%(( **".-#-,'00(/.)%1.'+2/*/20*130)510*730+;31+=21*?40,A51+E60.Q7/2_8.4m9-4y:,6‰<,8Ё=+:Е>+;Ы>*<й>*<щ>*<ё>*<ѓ>*<ѕ>*<ї>*<љ>*<љ>*<ћ>*<§?*<§>*<§?*=џ>*<џ?*=џ?*=џ?*=џ?*=џ?*=џ?*=џ?*=џ?*=џ?*=џ?*=џ?*=џ?*=џ?*=џ?*=џ?*=џ?*<џ?*<§?*<§>*<§>*<ћ>*<ћ>*<ћ>*<љ>*<љ>*<ї>*<ї>*<ѕ>*<ѓ>*<ѓ>*<э>*<с>*;е=+:Щ=+:Л<,9Џ<-7Ё:.6“9-5‡9-49.3y8/2s701k61/a50,Y41+U42,S33,S42,Q41-Q51+O42,M30+M41*K22+I33,G41,E31+C40*A22*?31+=30,;20+731*520+120+-2.()0-(%1.(.-(/+$,)$'' џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ (#" ,,!//%/.'!/.('00+/20,511+;31+?21+C32+E42+I31+K31-S8.2q<,7™=+9Е=+;Э>*;н>*<я>*<љ?*=џ?*=џ?*=џ?*=џ?*=џ?*=џ?*=џ?*=џ?*=џ?*=џ?*=џ?*=џ?*=џ?*=џ?*=џ?*=џ?*=џ?*=џ?*=џ?*=џ?*=џ?*=џ?*=џ?*=џ?*=џ?*=џ?*=џ?*=џ?*=џ?*=џ?*=џ?*=џ?*=џ?*=џ?*=џ?*=џ?*=џ?*=џ?*=џ?*=џ?*=џ?*=џ?*=џ?*=џ?*=џ?*=џ?*=џ?*=џ?*=џ?*=џ?*=џ?*=џ?*=џ?*=џ?*=џ?*=§>)<ї>*<я>*<ч=*;п=+:г=+:Ы<,9Л;-7Ѓ9.5800u41,_41,[52,[41+Y42,Y33-W33+U41,U42,S41+Q41+O32,M42,K40+I41+E31,C31+?10)93.)522)-11*'//)2*(((#&&  џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ### -&!0.&10(!3.(+21(521)=22+E21+I31,Q6/0e:-4…<,8Ћ=*;г>*<ї?*=џ?*=џ?*=џ?*=џ?*=џ?*=џ?*=џ?*=џA+?џF.CџK1HџO5LџS8PџW;Tџ\?YџbD_џgGdџlKiџpNlџuQpџyTuџ~XyџZ{џƒ\~џ…^џˆ`ƒџŠb…џŒdˆџŒdˆџŒdˆџŒdˆџŒdˆџŒdˆџŒdˆџŒdˆџŒcˆџŒb‡џŒb‡џ‹b†џˆ`ƒџ†^џƒ\~џ€Z{џ}WxџzUuџxSsџtPoџpMkџlJhџgGdџdD`џ`A\џ\>XџX;UџT9QџP5MџM3JџJ1GџG/DџD-BџA+>џ?*=џ?*=џ?*=џ?*=џ?*=џ?*=џ?*=џ?*=џ?*=џ?*=џ?*=џ?*=џ?*=ћ>*<х=+:Ы;,7Љ:-58/2{62-g42+_41,_52,]32,]32+[42,Y32,W32+U32,S31+O31+I31,C21*=3/*310*)..(**&*& '' џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ! **.-)10)%2/(/30*;30+C5/-S8-4u=+9Л>*;н>*<ѕ>*<џ?*=џ?*=џ?*=џA+?џB,@џE.CџN4Lџ\=XџhGdџsOoџ{Vvџ€[|џ‡a‚џ‹d†џŽg‰џ‘iŒџ”kŽџ•lџ•mџ•mџ–n‘џ–o‘џ—o’џ—o’џ—o’џ—o’џ—o’џ—o’џ—o’џ—o’џ—o’џ—o’џ—o’џ—o’џ—o’џ—o’џ—o’џ—o’џ—o’џ—o’џ—o’џ—o’џ—o’џ—o’џ—o’џ—o’џ—o’џ–n‘џ–n‘џ•mџ•mџ•lџ”lџ”kџ“kŽџ‘iŒџgŠџŒd‡џ‰b„џ…_€џ\}џ~XyџyUuџtPpџmJiџfEbџ_@\џW;TџQ6NџI0FџD.BџC,@џA+?џ@+>џ?*=џ?*=џ?*=џ?*=џ?)=џ>)<ї>*;ч=+;з<,8Л9.4‹70/o51-e52+_41+]42,[33+Y41+W41+S31,O41+I31+A20)92/*//,(#--#-) $$! џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ$$$ ,(!0,'1/(#2.)-5/-E;,7‰=*;б?*=ћ?*=џ?*=џ?*=џ@*=џH0EџU9RџcC_џtQpџZ|џŽe‰џ“jŽџ–n‘џ—o’џ—o’џ—o’џ—o’џ—o’џ—o’џ—o’џ—o’џ—o’џ—o’џ—o’џ—o’џ—o’џ—o’џ—o’џ—o’џ—o’џ–o‘џ–n‘џ•mџ•mџ•mџ•mџ•mџ•mџ•mџ•mџ•mџ•mџ•mџ•mџ•mџ•mџ–n‘џ–n‘џ—o’џ—o’џ—o’џ—o’џ—o’џ—o’џ—o’џ—o’џ—o’џ—o’џ—o’џ—o’џ—o’џ—o’џ—o’џ—o’џ—o’џ—o’џ—o’џ—o’џ—o’џ—o’џ—o’џ–n‘џ•lџ“jŽџ‘hŒџŒc‡џ‚\}џxTtџoMkџcC_џY*<ѓ=+:Х:-6—700k31,Y31+U32,Q31+O31+K31,E32+=3/*500)+//'!--&,%(( џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ""+%% /-"3.+;*7]>*;Щ>*<ї?*=џ?*=џB,@џK2Hџ_@[џwRrџ‡`џhŠџ”lџ–n‘џ—o’џ—o’џ—o’џ—o’џ–n‘џ–n‘џ•mџ•lџ”lџ”kџ“jŽџ‘hŒџf‹џd‰џŽcˆџb‡џŒa†џ‹`†џ‹_†џŠ^…џ‰^„џ‰]„џŠ^„џ‰]„џ‰]„џ‰]„џ‰]„џ‰]„џŠ^„џŠ^„џŠ^„џŠ^„џŠ^„џŠ^„џŠ^„џŠ^„џŠ^„џŠ^…џŠ_…џ‹_…џ‹`†џ‹`†џŒa‡џŒb‡џcˆџŽc‰џŽd‰џfŠџfŠџ‘gŒџ‘hŒџ’jџ“kŽџ”lџ•lџ•lџ•mџ•mџ–m‘џ–n‘џ–n‘џ–o‘џ—o’џ—o’џ—o’џ—o’џ—o’џ—o’џ–n‘џ•mџ”lџ‘iŒџ‹d†џ„^џwRsџeDaџU9QџI1GџC-Aџ?*=џ?*=џ?*=џ>*<ї>*;у<+8Б8.2m41-K30+A21*=3/+922*121()11*!-+))%%(( џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ + 4),=*;y>*=я?*=џ?*=џC-AџW:SџuQqџ‹c†џ•lџ–o‘џ—o’џ—o’џ—o’џ—o’џ–n‘џ•lџ’iџf‹џŽd‰џŒb‡џ‹`†џŠ^…џˆ\ƒџ‡Z‚џ‡Z‚џ‡Z‚џ‡[‚џ‡[‚џˆ[‚џˆ[‚џˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџ‰]„џ‰^„џ‹_…џ‹`†џŒa‡џcˆџŽd‰џeŠџf‹џ’hŒџ“jџ”kџ•mџ—o’џ—o’џ—o’џ—o’џ—o’џ—o’џ—o’џ—o’џ–n‘џ“jŽџŠb…џxUtџcD_џQ6Nџ@*>џ?*=џ?*=џ?*=џ>*<я=*:Љ8,5[10)+0.)'20&!/.)/,&((%((# "" џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ$>*;>*<ѓ?*=џB,@џX;Uџ€Z{џ‘iŒџ–n‘џ–n‘џ—o’џ–n‘џ•lџ“jŽџg‹џŒa‡џŠ^„џ‰]ƒџˆ]ƒџˆ\ƒџ‡[‚џ‡[‚џ‡[‚џˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ]ƒџ‰]„џ‰]„џŠ^…џŒa‡џŽd‰џg‹џ“jŽџ”kџ•mџ–n‘џ—o’џ—o’џ–o‘џ–n‘џ”lџŽg‰џ~XyџbC_џL3Iџ@+>џ?*=џ>)<§>*<я<*;8*330*#''#.- ""  џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ=*:3?*<ё?*=џB,@џlIgџgŠџ–n‘џ—o’џ—o’џ–n‘џ’iџŽcˆџŠ_…џˆ\ƒџˆ[‚џˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџ‰^„џ‹`†џcˆџf‹џ“jŽџ–n‘џ—o’џ—o’џ—o’џ–o‘џ”lџˆaƒџkIgџK1Hџ?*=џ?*=џ?)=§>)<Х<(87 џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџA+<?*<Ё?*=џA+?џnLjџ“lŽџ–n‘џ–o‘џ•lџfŠџŠ_…џˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџ‰^„џbˆџ’hџ”lџ–o‘џ—o’џ–n‘џ•mџfŠџkIgџK1Hџ?*=џ>)<џ>)<х>()*=е?*=џV:Sџ”lџ—o’џ’hџ…Xџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…X€џ†X€џ†Y€џ†Zџ‡Zџ‡Z‚џ‡[‚џ‡[‚џˆ[‚џˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџŒb‡џ’iџ–n‘џ—o’џ—o’џŽfŠџdD`џ@*>џ?*=џ?*<у?)<7џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ>)<%?*<б?*=џT8Qџ”kџ—o’џ‘gŒџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Xџ…X€џ†X€џ†Yџ‡Zџ‡Zџ‡Zџ‡[‚џ‡[‚џ‡[‚џ‡[‚џ‡[‚џ‡[‚џ‡[‚џ‡[‚џ‡[‚џˆ[‚џˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџ‰]„џcˆџ”lџ–n‘џ–n‘џgŠџ`A]џA+>џ?*=џ>)=З>+=џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ?*<?*<Ы?*=џQ6Mџ“jŽџ—o’џ’iџ…Xџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…X€џ…X€џ†X€џ†X€џ†X€џ†Y€џ†Yџ†Yџ†Zџ†Zџ‡Zџ‡Z‚џ‡Z‚џ‡[‚џ‡[‚џ‡[‚џˆ[‚џˆ[‚џˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџ‰^„џ’hŒџ—o’џ–n‘џŽf‰џW;Sџ?*=џ>*=ї?*)<Я>))=>)=Ѕ?*<§@+>џgFcџ‹d†џi‹џh‹џŒe‡џ‡_‚џYzџsOnџeDbџX*=љ>)=ѕ>)=ё?*=я?*=я?*=я?*<ё?)<ѕ?*=ћ?)=§?*=џ?*=џ?*=џB,@џI3Gџ^E[џ€_{џ“lŽџ–o‘џ–mџbˆџ…X€џ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ‰\ƒџ‘g‹џ”lџ–n‘џ—o’џ—o’џ—o’џ—o’џ—o’џ—o’џ—o’џ—o’џ—o’џ—o’џ—o’џ–n‘џ–n‘џ•lџ”kџ‘iŒџŽd‰џ‹_…џ‡[‚џ†Yџ†X€џ†X€џ‡Z‚џ‡[‚џˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџ‘h‹џ—o’џ”kџV:Sџ?*=џ?*=е?*='џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ?)џM2IџW9SџV9RџN4KџG/Eџ@*>џ?*=џ?*=џ?*=џ?*=џ?*=џ?*=џ?*=џ?*=џ?*=џ?*=я?*=з>*=Н>*<Ѕ?*<‘>)<ƒ>*=u>*=i>*=]?)=O?*>I?*>I>*=K?*)<]>*=m>*=}?*<™>)<П?*=ы?*=џ?*=џ?*=џD/BџeIaџiŠџ—o’џ–n‘џbˆџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ†Y€џŽd‰џ•mџ—o’џ—o’џ—o’џ–n‘џ“jŽџf‹џŠb…џˆa„џˆa„џŠb…џfŠџ’iџ”kџ–n‘џ–o‘џ—o’џ—o’џ—o’џ—o’џ—o’џ—o’џ–n‘џ“jŽџfŠџŒa†џˆ[‚џ†Y€џ†Zџ‡[‚џˆ\ƒџˆ\ƒџˆ\ƒџˆ\ƒџˆ[ƒџ‘hŒџ—o’џ”kџU9Rџ?*=џ>*<г?*<'џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ@,<?*=_>)=х?*<§?*=џ?*=џ?*=џ?*=џ?*=џ?*=џ>)<ћ>*=ы>*=н?)=Э?)=Е>)<>)*<+?*=?*=>*=>*< @*9<&8џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ=2=?*<>)<?(>?)=W?*<Ћ?*=ы?*=џ@+>џY?Vџgˆџ–n‘џ•mџˆ[‚џ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ‡Z‚џ‘hŒџ–n‘џ—o’џ•mџŠc…џxStџaB^џR7OџI1FџF/DџF/DџF/DџF/DџH0EџL3JџS8Pџ]>YџjIfџvSrџ[|џˆbƒџh‹џ•lџ–n‘џ—o’џ—o’џ–o‘џ–n‘џ•mџ“jŽџŽd‰џŠ^„џˆ\ƒџˆ\‚џˆ\ƒџˆ[‚џ‡Zџ’hџ—o’џ“jŽџQ7Nџ?*=џ>)=Э>)=џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ=)=>)==?)<™?*<г?*=ы>)<ы>)<Я?*<Ћ>*<>**=G>*=-@)=џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ@+>?*=O>)=Я?*=џ@+>џfIcџ•nџ–n‘џeŠџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ†X€џ‘g‹џ—o’џ—o’џ”kџpMlџP5Mџ@+>џ?*=џ?*=џ?*=џ?*=џ?*=џ?*=џ?*=џ?*=џ?*=џ?*=џ?*=џ?*=џ?*=џD-AџL2IџW;TџdE`џuQpџ†_‚џ“jџ–n‘џ—o’џ—o’џ—o’џ—o’џ–n‘џ“jŽџf‹џbˆџˆ\ƒџ†X€џ“jŽџ—o’џ’hџK2Iџ?*=џ?*=У?*=џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ?)<?*< ?*= ?*= >*<?*<>,;џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ>)<%>*=б>*<џB,?џŠd…џ—o’џ”kџ‡Zџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџcˆџ–n‘џ—o’џeˆџaB]џ@*>џ?*=џ?*=џ?*=ё?*=б>)<Н>)<Џ?*=­?)=­>)=Б>*<Л?)=У?)=г>*=х>*=ї?*=џ?*=џ?*=џ?*=џ?*=џ@*>џA,?џK1HџaA]џuQpџ†_џ’iџ–n‘џ–o‘џ—o’џ–n‘џ–o‘џ–n‘џ“jџ–n‘џ—o’џ‰a„џF/Dџ?*=џ>)<Џ=%=џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ='=>*=o>*=љ?*=џrQoџ–o‘џ–n‘џ‰]„џ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ‡Yџ•lџ—o’џ”lџdEaџA+?џ?*=џ>*=ѓ?*<—?**=7?*=M>*=i?*<›>)<Ы>*<ѓ?)<љ>*<§?*<џ?*=џ?*=џA+>џK2HџZ=WџsOoџ‰`„џ’iŒџ–n‘џ–n‘џ—o’џ—o’џ—o’џ–n‘џwTsџB,@џ?*=џ?)<‡џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ>+>1>*=ы?*=џaD^џ–n‘џ—o’џŒ`†џ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџcˆџ—o’џ–n‘џ|WxџB,@џ?*=џ?)=н>*=Iџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ>+9?)<;>*)=]?(?џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ@*; ?*=#?)=G?*=?*=Э?*<э?*=ћ?)=џ?*=џ@*>џF.CџO5LџYџ?*=џ>)<С?*> џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ>*<7?*<э?*=џcE_џ–n‘џ—o’џŒ`‡џ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџˆ[‚џ”kџ—o’џ‡a‚џI0Fџ?*=џ?)=е+++џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ@.@?*<5?*=y?*=З?*=ы?)<џ?*=џ?*=џ?*=џ?*=џ?*=џ?*=џ?*=зB.@=ў§ўGџџџgџџџMџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ џџџџџџџџџџџџ?*<[?*<ѕ?*=џpNlџ–n‘џ–n‘џŠ^„џ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…WџŠ^„џ–n‘џ—o’џ{Vwџ@*>џ?*=џ?)<ƒџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџC,C?*=?)=%?**<е?)=н>)<с>*=й?*=ЅkZj?ћћћ‡ўўўэџџџљўўўяўўўЙўўў7џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ U‘­ГЇ}=>*>>*=‘?*=џ?*=џƒ]~џ—o’џ•mџˆ[‚џ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…WџŒa‡џ–o‘џ—o’џlJhџ?*=џ?*<ѕ>*+=@+@џџџkџџџѕџџџџџџџџџџџџџџџџџџџсџџџeџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ ]Ыїџџџџ§ѓЙ [=);г?*=џJ1Hџ’kџ—o’џ’iџ†Y€џ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…WџŽc‰џ—o’џ–n‘џaB]џ?*=џ9&7ы cEG?)џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ_ўўўэџџџџћћћџЩЩЩџэээџўўўџџџџџџџџыўўўWўўўџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџƒѓџџџ џџџџџџѓ%#§=);џcE`џ•nџ–n‘џŽd‰џ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…WџeŠџ—o’џ•mџV:Sџ#"џ љщћџѓе›3џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџgџџџщџџџџџџџџШШШџ'''џVVVџеееџџџџџџџџџўўўЅџџџ џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ Љ§џџ___џИИИџцццџщщщџтттџ›››џEEEџџџџ"!џyWuџ–n‘џ–n‘џˆ[ƒџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџf‹џ“lŽџaG^џ џџџџџџџџџѕ“џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўўў—џџџїџџџџўўўџдддџ"""џџ џ•••џџџџџџџџџџџџЋџџџ џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ }ћџ џšššџтттџщщщџщщщџщщщџщщщџщщщџзззџ}}}џџџџL7Iџ”mџ”kџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ‹c†џO:Lџ  џџџџJJJџƒƒƒџˆˆˆџmmmџ,,,џџџћџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўўўџџџ џџџџџџ/џџџЃџџџћџџџџ§§§џЪЪЪџ999џџџdddџяяяџџџџџџџџїџџџkџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ[ѓџџЙЙЙџъъъџъъъџъъъџъъъџъъъџыыыџыыыџыыыџъъъџžžžџџџџgLdџb‡џ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…WџU|џ=+:џџџ џ```џЫЫЫџщщщџщщщџщщщџщщщџсссџ”””џџџ§Ї џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ џџџ-ўўўMџџџiџџџ‡ўўўБџџџлџџџџџџџџџџџџћћћџЕЕЕџџџџQQQџёёёџџџџџџџџџџџџЇџџџ џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџгџџ˜˜˜џыыыџыыыџыыыџыыыџыыыџыыыџыыыџыыыџыыыџыыыџчччџ‘‘‘џџџџoJjџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…WџT{џH/Eџџџџ”””џсссџъъъџъъъџъъъџъъъџъъъџъъъџшшшџЏЏЏџ***џџљoџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўўў џџџ!џџџcџџџўўўбўўўсџџџяџџџћџџџџџџџџџџџџџџџџўўўџєєєџ———џџџџ\\\џтттџџџџџџџџ§ўўўЧџџџ'џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџƒћџjjjџхххџьььџьььџьььџьььџьььџьььџьььџьььџьььџэээџэээџъъъџlllџџџ.,џ„V~џ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…WџZ:Uџ  џџџЂЂЂџшшшџыыыџыыыџыыыџыыыџыыыџыыыџыыыџыыыџъъъџДДДџџџу5џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ=џџџ›џџџуџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўўўџлллџЉЉЉџ\\\џ џџ џkkkџёёёџџџџџџџџџўўўгџџџ/џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ џџџ7џџџYџџџKџџџ9џџџ-џџџ#џџџџџџџџџџџџџџџ)сџџзззџэээџэээџэээџэээџэээџэээџэээџэээџэээџэээџэээџэээџэээџвввџ<<<џџџ`?\џ„V~џ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…WџvMpџ џџџџъъъџьььџьььџьььџьььџьььџьььџьььџьььџыыыџыыыџъъъџƒƒƒџџџЋџџџџџџџџџџџџџџџўўўџџџ/џџџЃџџџяџџџ§џџџџџџџџўўўџѕѕѕџсссџЭЭЭџГГГџ‹‹‹џ___џ444џџ џџџџ———џѕѕѕџўўўџџџџџџџџЭџџџ7џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџƒџџџыџџџџўўўџџџџѕџџџхџџџгџџџСџџџБџџџџџџ‡џџџm???›џџzzzџьььџюююџюююџюююџюююџюююџюююџюююџюююџюююџюююџюююџюююџюююџюююџЄЄЄџџџ+)џ|Qwџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ€Tzџ;&8џџџhhhџуууџэээџэээџэээџэээџэээџэээџэээџэээџэээџьььџьььџьььџжжжџ;;;џџэ;џџџџџџџџџџџџџџџџџџ=џџџзџџџ§џџџџџџџџџџџџвввџџVVVџ555џџџџџџџџџ'''џВВВџћћћџџџџџџџџџџџџгўўў1џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџAџџџїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ§ъъъћ...§џ%%%џЬЬЬџяяяџяяяџяяяџяяяџяяяџяяяџяяяџяяяџяяяџяяяџяяяџяяяџяяяџяяяџяяяџюююџEEEџџџ`>[џ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ^=Zџџџ+++џтттџюююџюююџюююџюююџюююџюююџюююџюююџюююџэээџэээџэээџэээџэээџЈЈЈџџџ џџџџџџџџџџџџQўўўуџџџџџџџџѓѓѓџЊЊЊџDDDџџџџџџџџџ+++џKKKџyyyџХХХџѓѓѓџўўўџџџџџўўў§ўўўЇўўў!џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџqџџџ§ўўўџсссџЧЧЧџфффџѕѕѕџјјјџљљљџћћћџ§§§џўўўџЕЕЕџџџ```џэээџ№№№џ№№№џ№№№џ№№№џ№№№џ№№№џ№№№џ№№№џ№№№џ№№№џ№№№џ№№№џ№№№џ№№№џ№№№џ№№№џЁЁЁџ џџ1 /џ„V~џ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ‚U}џ'%џџ џ™™™џяяяџяяяџяяяџяяяџяяяџяяяџяяяџяяяџяяяџюююџюююџюююџюююџюююџюююџуууџ***џџс!џџџџџџўўўџџџнџџџџўўўџчччџfffџџџџџџџBBBџxxxџЄЄЄџТТТџиииџѕѕѕџўўўџџџџџџџџџџџџџџџџѓўўў“ўўўџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ§§§џƒƒƒџџџџ111џKKKџeeeџџ–––џQQQџџџЖЖЖџёёёџёёёџёёёџёёёџёёёџёёёџёёёџёёёџёёёџэээџ№№№џёёёџёёёџёёёџёёёџёёёџёёёџпппџ>>>џџ  џsKnџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ„Wџ]=YџџџMMMџуууџ№№№џ№№№џ№№№џ№№№џ№№№џ№№№џ№№№џ№№№џ№№№џ№№№џ№№№џяяяџяяяџяяяџяяяџюююџџџџaџџџџџџџџџЇџџџџўўўџнннџBBBџџџџIIIџˆˆˆџЫЫЫџіііџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўўў§џџџпџџџ­ўўўGџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўўўџџџЁџџџџћћћџiiiџџџџџџџџџџџ'''џмммџёёёџёёёџђђђџђђђџђђђџђђђџцццџАААџWWWџ999џCCCџrrrџЦЦЦџэээџђђђџђђђџђђђџђђђџ………џџџN3Kџ„V~џ…Wџ…Wџ…Wџ…Wџ…Wџ…WџSyџ2 0џџџАААџёёёџёёёџёёёџёёёџъъъџФФФџ‡‡‡џwwwџІІІџиииџяяяџ№№№џ№№№џ№№№џ№№№џ№№№џ№№№џКККџџџЇџџџMџџџёџџџџђђђџ\\\џџџ---џЄЄЄџьььџўўўџџџџџџџџџџџџџџџџџџџџ§ўўўѓџџџщџџџгџџџџџџYўўў+џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўўўГџџџџњњњџOOOџџџџџџџџџџџ^^^џыыыџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџпппџ]]]џџџџџџџџщщщџѓѓѓџѓѓѓџѓѓѓџзззџџџ,*џ~Rxџ…Wџ…Wџ…Wџ…Wџ…Wџ…WџoHjџ  џџ777џьььџђђђџђђђџђђђџъъъџyyyџџџџџ***џЂЂЂџыыыџёёёџёёёџёёёџёёёџёёёџхххџ777џџзџџџЕџџџџџџџџЂЂЂџџџ888џиииџџџџџџџџџџџџџџџџџџџџяџџџЩџџџЁџџџ{ўўўMџџџ'џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџХџџџџјјјџ444џџџџџџџџџџџŽŽŽџѓѓѓџѓѓѓџѓѓѓџѓѓѓџєєєџщщщџcccџџџџџџџџ џuuuџьььџєєєџєєєџюююџ>>>џџ џsKnџ…Wџ…Wџ…Wџ…Wџ…Wџ…WџH/Dџџџџђђђџѓѓѓџѓѓѓџ№№№џџ џџџџџџџŠŠŠџэээџђђђџђђђџђђђџђђђџёёёџkkkџџы^^^iўўўэџџџџъъъџ???џџџРРРџ§§§џџџџџџџџэўўўБџџџWўўў)ўўўўўў џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўўў%џџџеџџџџіііџџџџџџџџџџџџДДДџєєєџєєєџєєєџєєєџѕѕѕџЖЖЖџџџџџџџџџџ џДДДџѕѕѕџѕѕѕџєєєџџџџ`?\џ…Wџ…Wџ…Wџ…Wџ…WџSzџџџ"""џЬЬЬџєєєџєєєџєєєџсссџ...џџџџџџџџџАААџѓѓѓџѓѓѓџѓѓѓџѓѓѓџђђђџŸŸŸџџ§ŠŠŠсўўўћџџџџИИИџџџ[[[џ§§§џџџџџџџџёџџџSџџџ џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ/ўўўчџџџџяяяџџџџџџџџџџџџкккџѕѕѕџѕѕѕџѕѕѕџѕѕѕџѕѕѕџZZZџџџџџџџџџџџBBBџыыыџіііџіііџЏЏЏџџџ?)<џ…Wџ…Wџ…Wџ…Wџ…WџfCbџ  џџVVVџѓѓѓџѕѕѕџѕѕѕџѕѕѕџНННџџџџџџџџџџ444џрррџєєєџєєєџѓѓѓџѓѓѓџЭЭЭџџџtttџћћћџџџџџџџџКККџџџџџџџџџџџџыџџџЁџџџSџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ9џџџїџџџџйййџџџџџџџџџџџ***џёёёџіііџіііџіііџіііџшшшџ444џџџџџџџџџџџџТТТџїїїџїїїџбббџ$$$џџ%#џ„Wџ…Wџ…Wџ…Wџ„V~џM2Iџџџšššџіііџіііџіііџіііџ™™™џџџџџџџџџџџЈЈЈџѕѕѕџєєєџєєєџєєєџмммџџџUUUџіііџџџџџHHHџџ"""џлллџџџџџџџџџџџџџџџџџџџџёўўўQџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџOџџџџџџџџКККџџџџџџџџџџџKKKџїїїџїїїџїїїџїїїџїїїџнннџ+++џџџџџџџџџџџџŸŸŸџјјјџјјјџёёёџ<<<џџ џyOtџ…Wџ…Wџ…Wџ€T{џ-+џџџкккџїїїџїїїџїїїџїїїџџџџџџџџџџџџPPPџђђђџіііџѕѕѕџѕѕѕџфффџ666џџџ{{{џ˜˜˜џџџ777џЫЫЫџьььџћћћџџџџџџџџџџџџџўўўПџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџiџџџџџџџџЁЁЁџџџџџџџџџџџbbbџїїїџјјјџјјјџјјјџјјјџфффџ///џџџџџџџџџџџџ“““џјјјџјјјџјјјџ```џџ џjEeџ…Wџ…Wџ…Wџ|Qwџ џџ999џчччџјјјџјјјџјјјџјјјџЁЁЁџџџџџџџџџџџ,,,џоооџіііџіііџіііџщщщџHHHџџџџџџџ џ***џ999џEEEџgggџљљљџџџџџџџџЭўўўџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ…џџџџџџџџƒƒƒџџџџџџџџџџџyyyџљљљџљљљџљљљџљљљџљљљџїїїџJJJџџџџџџџџџџџџ›››џљљљџљљљџљљљџˆˆˆџџџ\>>џ­­­џџџAAAџчччџѕѕѕџѕѕѕџѕѕѕџѕѕѕџѕѕѕџѕѕѕџѕѕѕџѕѕѕџѕѕѕџѕѕѕџѕѕѕџѕѕѕџѕѕѕџѕѕѕџѕѕѕџѕѕѕџѕѕѕџѕѕѕџєєєџђђђџHHHџџ џrKmџ…Wџ…WџzPuџџџ---џѓѓѓџѕѕѕџѕѕѕџіііџіііџіііџіііџіііџіііџіііџіііџїїїџїїїџїїїџїїїџїїїџїїїџїїїџїїїџїїїџїїїџЬЬЬџ!!!џџџџџџџџџџџЙЙЙџџџџџџџџ§џџџSџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўўўўўўŸџџџщџџџёџџџѕџџџ§џџџџаааџџџџџTTTџяяяџPPPџџџжжжџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџнннџ---џџџ€T{џ…Wџ…WџT{џ#!џџ!!!џтттџєєєџѕѕѕџѕѕѕџѕѕѕџѕѕѕџѕѕѕџѕѕѕџѕѕѕџѕѕѕџѕѕѕџіііџіііџіііџіііџіііџіііџіііџіііџіііџіііџЂЂЂџ џџџџџџџџџџџвввџџџџџџџџёџџџEџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ3џџџMџџџлџџџџдддџџџџџRRRџіііџ‘‘‘џџџ˜˜˜џєєєџєєєџєєєџєєєџєєєџєєєџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџЗЗЗџџџ5"2џ…Wџ…Wџ…Wџ…Wџ4"1џџџФФФџѓѓѓџєєєџєєєџєєєџєєєџєєєџєєєџєєєџѕѕѕџѕѕѕџѕѕѕџѕѕѕџѕѕѕџѕѕѕџѕѕѕџѕѕѕџѕѕѕџѕѕѕџѕѕѕџђђђџaaaџџџџџџџџџџџ џуууџџџџџџџџуџџџ7џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўўўџџџЛџџџџоооџџџџџJJJџёёёџШШШџџџMMMџэээџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџёёёџŒŒŒџџџU7Qџ…Wџ…Wџ…Wџ…WџI0Fџџ џЂЂЂџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџєєєџчччџџџџџџџџџџџџ###џшшшџџџџџџџџеџџџ)џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўўўџџџ­џџџџшшшџ!!!џџџџ@@@џъъъџіііџBBBџџџСССџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџёёёџёёёџёёёџёёёџёёёџёёёџёёёџьььџKKKџџ џpIkџ…Wџ…Wџ…Wџ…WџdB`џџџ{{{џ№№№џђђђџђђђџђђђџђђђџђђђџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџѓѓѓџЈЈЈџџџџџџџџџџџџ:::џэээџџџџџўўўЩўўўџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўўў—џџџџњњњџ...џџџџ+++џйййџџџџџ›››џџџvvvџюююџ№№№џ№№№џ№№№џ№№№џ№№№џ№№№џ№№№џ№№№џ№№№џ№№№џ№№№џ№№№џ№№№џ№№№џ№№№џ№№№џжжжџ џџ(&џ}Qwџ…Wџ…Wџ…Wџ…WџyPtџ  џџGGGџфффџёёёџёёёџёёёџёёёџёёёџёёёџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџђђђџцццџMMMџџџџџџџџџџџџQQQџѓѓѓџџџџџџџџЛўўў џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџwџџџџџџџџOOOџџџџџШШШџџџџџнннџ"""џџџсссџ№№№џ№№№џ№№№џ№№№џ№№№џ№№№џ№№№џ№№№џ№№№џ№№№џ№№№џяяяџяяяџяяяџяяяџяяяџ‰‰‰џџџI/Fџ„V~џ…Wџ…Wџ…Wџ…WџSzџ&$џџџжжжџ№№№џ№№№џ№№№џ№№№џёёёџёёёџёёёџёёёџёёёџёёёџёёёџёёёџёёёџёёёџђђђџђђђџђђђџИИИџџџџџџџџџџџџџgggџјјјџџџџџџџџЋўўўџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўўўUџџџѕџџџџ|||џџџџџІІІџџџџџњњњџzzzљ§џ|||џыыыџяяяџяяяџяяяџяяяџяяяџяяяџюююџюююџюююџюююџюююџюююџюююџюююџдддџ333џџ џtLoџ…Wџ…Wџ…Wџ…Wџ…Wџ„V~џI/Eџџџ“““џяяяџяяяџяяяџяяяџяяяџяяяџ№№№џ№№№џ№№№џ№№№џ№№№џ№№№џ№№№џ№№№џ№№№џ№№№џяяяџQQQџџџœœœџHHHџџџџџ˜˜˜џŠŠŠџjjjџWWWџЃЃЃџ§§§џџџџџўўўџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ=џџџхџџџџ­­­џџџџџkkkџџџџџџџџџжжжѕїџ&&&џФФФџюююџюююџюююџюююџюююџюююџюююџэээџэээџэээџэээџэээџэээџэээџ‘‘‘џџџ3!0џ„V~џ…Wџ…Wџ…Wџ…Wџ…Wџ…WџfCbџ  џџHHHџчччџюююџюююџюююџюююџяяяџяяяџяяяџяяяџяяяџяяяџяяяџяяяџяяяџяяяџяяяџРРРџ џџ===џЯЯЯџ$$$џџџџџўўўџџџџџџџџџўўўџ§§§џџџџџџџџџўўўoџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўўўџџџЭџџџџкккџџџџџ$$$џїїїџџџџџџџџџdddУћџJJJџчччџэээџэээџэээџэээџэээџэээџэээџэээџэээџьььџьььџьььџжжжџџџ  џjEeџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ‚U|џ'%џџџЌЌЌџэээџэээџэээџюююџюююџюююџюююџюююџюююџюююџюююџюююџюююџюююџмммџEEEџџџАААџСССџџџџџNNNџџџџџџџџџџџџџџџџџџџџџџџџџўўўеџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџŸџџџџюююџLLLџџџџ џОООџўўўџџџџџкккЭ ЧџџŠŠŠџчччџьььџьььџьььџьььџьььџьььџьььџьььџыыыџыыыџтттџjjjџџџ;'9џ€Tzџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ]?YџџџSSSџчччџьььџьььџэээџэээџэээџэээџэээџэээџэээџэээџэээџэээџыыыџ„„„џџџGGGџїїїџ~~~џџџџџџџџџџџџџ§ўўўУџџџЏџџџСџџџ™џџџ3џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ[џџџџ§§§џ‹‹‹џџџџџjjjџјјјџџџџџџџџщ†††{эџџ•••џыыыџыыыџыыыџыыыџыыыџыыыџыыыџыыыџыыыџъъъџ‡‡‡џ џџ џyOtџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…^€џ&%џџџЊЊЊџьььџьььџьььџьььџьььџьььџьььџьььџьььџьььџэээџыыыџЏЏЏџџџџХХХџыыыџ666џџџџџТТТџџџџџџџџёџџџ1џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ!џџџчџџџџлллџџџџџ###џеееџџџџџџџџ§ќќќЅ sёџџџоооџъъъџъъъџъъъџъъъџъъъџщщщџрррџŒŒŒџџџ џZ>>џfffџgggџFFFџџџџ  џT=Qџ“kŽџŠ^…џ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџf‹џ–n‘џŒhˆџA-?џ џџџ:::џЏЏЏџфффџщщщџщщщџщщщџщщщџдддџ‹‹‹џџџџXXXџшшшџўўўџТТТџџџџџџтттџџџџџўўўчџџџ9џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџЫџџџџяяяџPPPџџџџџkkkџіііџџџџџџџџїџџџyOзџџџџџџџџџB.?џ’kџ—o’џbˆџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ‡Yџ•mџ–o‘џwXsџB-@џ4#3џёџџџbbbџЃЃЃџЦЦЦџДДДџ†††џ999џџџ§KKKљтттџџџџџёёёџUUUџџџџџgggџљљљџџџџџџџџБџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџWџџџљџџџџЩЩЩџџџџџџЏЏЏџџџџџџџџџўўўїўўўKџџџ cГйщэлЙ у;'9џL4JџŠe†џ—o’џ’iџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџ…WџŽd‰џ—o’џ‘kŒџY@Vџ?*=џ>*<ѓ;Ћћџџџџџџџџчnnnзїїї§џџџџџџџџ“““џ џџџџ!!!џбббџџџџџўўў§џџџGџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџХџџџџ§§§џ\\\џџџџџ666џиииџўўўџџџџџўўўгџџџ7џџџџџџ+79->)<…?*=џC-AџzYvџ–n‘џ–m‘џ‡Yџ…Wџ…Wџ…Wџ…Wџ…Wџ…Wџˆ[‚џ”kŽџ—o’џ_~џC.Aџ?*=џ>*=Љ=*=qеѕћ§§їщЇїїїщџџџџўўўџсссџџџџџџrrrџќќќџџџџџџџџЧџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџOџџџѕџџџџкккџ000џџџџџFFFџёёёџџџџџџџџџџџџеџџџ/џџџџџџџџџџџџџџџџџџџџџ>)=7>*<ї?*=џ`E]џ•nџ–n‘џa‡џ…Wџ…Wџ…Wџ…Wџ…Wџ…WџfŠџ–o‘џ•mџ^D[џ?*=џ?*=ы>**=љ?*=џlNhџ–n‘џ–n‘џŽcˆџ…Wџ…Wџ…Wџ‰]„џ”lџ—o’џ“lŽџY?Vџ?*=џ?*=ћ?)=OџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџGџџџуџџџџџџџџѕѕѕџ~~~џџџџџџlllџќќќџџџџџџџџыџџџ+џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ[џџџљўўўџюююџVVVџџџџџџqqqџщщщџџџџџўўўџўўўяџџџ}џџџџџџџџџџџџџџџ@+;?)<е?*=џK4Iџ„aџ—o’џ•mџŽc‰џ‰\ƒџŒa‡џ”lџ–o‘џ•mџqQmџ@+>џ>*=§>*<Џ=*<џџџџџџџџџџџџџџџџџџџџџџџџўўўџџџыџџџџўўўџёёёџ{{{џџџџџџSSSџхххџџџџџџџџѕџџџqџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўўўџџџЅџџџ§џџџџмммџ===џџџџџџ]]]џэээџџџџџџџџџџџџїџџџЛџџџ3џџџџџџџџџџџџ?)>>џРРРџћћћџџџџџџџџџџџџѓџџџЅџџџ7ўўў џџџ?*<?*<­?*<џ@*=џaD]џŒfˆџ–n‘џ—o’џ—o’џ’jџyUuџD-Bџ?*=џ?)=ѕ?*=o?*?џџџџџџџџџџџџџџџџџџ5ўўў›ўўўѓџџџџџџџџџџџџЪЪЪџIIIџџџџџџ111џЧЧЧџўўўџџџџ§џџџХўўўџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ%џџџЯўўўџџџџџаааџ>>>џџџџџџџџѓѓѓџўўўџџџџџџџџџўўўуџџџЅџџџEћћћ L8J/?*=х?*<џ@+>џU:RџuQpџƒ\~џ{Uvџ_A\џE.Cџ?*=џ?*=ћ?*=—@'>џџџџџџџџџџџџ џџџ5џџџ›џџџпџџџџџџџџўўўџѕѕѕџЇЇЇџ###џџџџџџ џЪЪЪџ§§§џџџџџџџџпџџџ7џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўўў/џџџЫџџџџџџџџэээџRRRџџџџџџџ888џІІІџїїїџџџџџџџџџџџџџџџџџџџџпџџџ™­Є­—S@Qэ?*=џ?*=џ?*=џ?*=џ?*=џ?*=џ?*=џ?*=ѓ>)=‘M3Mџџџџџџ)ўўўQџџџƒџџџгўўў§џџџџџџџџџџџџљљљџТТТџMMMџџџџџџџBBBџаааџўўўџџџџџџџџсџџџCџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ5џџџЯџџџ§џџџџцццџuuuџ џџџџџџџPPPџГГГџ№№№џ§§§џџџџџџџџџџџџџќќќїмилїvguџL8JџB-@џ?*=џ?+=џH4FџYGWїЄšЃПюьюŸџџџБўўўЩџџџлџџџёџџџџџџџџџџџџўўўџєєєџЯЯЯџgggџџџџџџџџUUUџмммџўўўџџџџџџџџчўўўIџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ/џџџХџџџџџџџџ§§§џЇЇЇџ+++џџџџџџџџCCCџŽŽŽџгггџќќќџџџџџџџџџџџџџњњњџвЭвџЈŸЇџš™џŸ”žџТЛТџёяёџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўўўџчччџЅЅЅџWWWџ џџџџџџџџ†††џђђђџџџџџџџџџџџџзџџџIџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўўў%џџџЁџџџљџџџџќќќџкккџdddџџџџџџџџџџGGGџƒƒƒџУУУџкккџщщщџєєєџўўўџўўўџџџџџџџџџџџџџџџџџўўўџїїїџэээџсссџЬЬЬџЃЃЃџXXXџ$$$џ џџџџџџџ џEEEџЩЩЩџљљљџџџџџџџџћџџџЩџџџ/џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ џџџƒџџџэџџџџџџџџњњњџДДДџDDDџџџџџџџџџџџ џ???џYYYџqqqџ€€€џџ•••џџƒƒƒџuuuџ^^^џJJJџ...џ џџџџџџџџџџ'''џŸŸŸџэээџџџџџџџџџџџџ§ўўўŸџџџ!џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ;џџџЩџџџћџџџџўўўџєєєџБББџQQQџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ џ333џ’’’џчччџ§§§џџџџџџџџџџџџлџџџgџџџ џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ!ўўўƒџџџяџџџџџџџџџџџџєєєџГГГџiiiџџџџџџџџџџџџџџџџџџџџџџџџџџCCCџЃЃЃџуууџўўўџџџџџџџџџџџџћўўўЉџџџ9џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ%ўўў—џџџхџџџџџџџџџџџџџџџџєєєџЏЏЏџfffџ:::џџџџџџџџџџџџџџџџџ џ+++џMMMџ———џтттџџџџџџџџџџџџџџџџџџџџїџџџБџџџKџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ џџџ7џџџџџџчџџџћџџџџџџџџџџџџћћћџфффџЪЪЪџЅЅЅџ‚‚‚џZZZџ777џџџџџџџџ,,,џKKKџlllџ˜˜˜џПППџйййџёёёџџџџџџџџџџџџџџџџ§ўўўѓџџџНџџџYўўўџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўўўџџџwџџџЛџџџѕџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџјјјџщщщџтттџшшшџёёёџљљљџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ§џџџеўўў‘џџџ?џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ7џџџuџџџЗџџџнџџџэџџџљўўўџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ§џџџѓџџџхџџџЭўўў‹џџџKџџџ!џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџEџџџkўўў‡ўўўЋўўўЧџџџлўўўыўўўѓџџџїџџџѕџџџэџџџхџџџЯџџџЙџџџЁџџџ{ўўўWџџџ-џџџ џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ ўўўџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџgpodder-3.9.0/tools/test-auth-server.py0000644000016000001710000001001512654461624021224 0ustar jenkinsjenkins00000000000000#!/usr/bin/python # -*- coding: utf-8 -*- # Simple HTTP web server for testing HTTP Authentication (see bug 1539) # from our crappy-but-does-the-job department # Thomas Perl ; 2012-01-20 import BaseHTTPServer import sys import re import hashlib import datetime USERNAME = 'user@example.com' # Username used for HTTP Authentication PASSWORD = 'secret' # Password used for HTTP Authentication HOST, PORT = 'localhost', 8000 # Hostname and port for the HTTP server # When the script contents change, the feed's episodes each get a new GUID GUID = hashlib.sha1(open(__file__).read()).hexdigest() URL = 'http://%(HOST)s:%(PORT)s' % locals() FEEDNAME = sys.argv[0] # The title of the RSS feed FEEDFILE = 'feed.rss' # The "filename" of the feed on the server EPISODES = 'episode' # Base name for the episode files EPISODES_EXT = '.mp3' # Extension for the episode files EPISODES_MIME = 'audio/mpeg' # Mime type for the episode files EP_COUNT = 7 # Number of episodes in the feed SIZE = 500000 # Size (in bytes) of the episode downloads) def mkpubdates(items): """Generate fake pubDates (one each day, recently)""" current = datetime.datetime.now() - datetime.timedelta(days=items+3) for i in range(items): yield current.ctime() current += datetime.timedelta(days=1) def mkrss(items=EP_COUNT): """Generate a dumm RSS feed with a given number of items""" ITEMS = '\n'.join(""" Episode %(INDEX)s tag:test.gpodder.org,2012:%(GUID)s,%(URL)s,%(INDEX)s %(PUBDATE)s """ % dict(locals().items()+globals().items()) for INDEX, PUBDATE in enumerate(mkpubdates(items))) return """ %(FEEDNAME)s%(URL)s %(ITEMS)s """ % dict(locals().items()+globals().items()) def mkdata(size=SIZE): """Generate dummy data of a given size (in bytes)""" return ''.join(chr(32+(i%(127-32))) for i in range(size)) class AuthRequestHandler(BaseHTTPServer.BaseHTTPRequestHandler): FEEDFILE_PATH = '/%s' % FEEDFILE EPISODES_PATH = '/%s' % EPISODES def do_GET(self): authorized = False is_feed = False is_episode = False auth_header = self.headers.get('authorization', '') m = re.match(r'^Basic (.*)$', auth_header) if m is not None: auth_data = m.group(1).decode('base64').split(':', 1) if len(auth_data) == 2: username, password = auth_data print 'Got username:', username print 'Got password:', password if (username, password) == (USERNAME, PASSWORD): print 'Valid credentials provided.' authorized = True if self.path == self.FEEDFILE_PATH: print 'Feed request.' is_feed = True elif self.path.startswith(self.EPISODES_PATH): print 'Episode request.' is_episode = True if not authorized: print 'Not authorized - sending WWW-Authenticate header.' self.send_response(401) self.send_header('WWW-Authenticate', 'Basic realm="%s"' % sys.argv[0]) self.end_headers() self.wfile.close() return self.send_response(200) self.send_header('Content-type', 'application/xml' if is_feed else 'audio/mpeg') self.end_headers() self.wfile.write(mkrss() if is_feed else mkdata()) self.wfile.close() if __name__ == '__main__': httpd = BaseHTTPServer.HTTPServer((HOST, PORT), AuthRequestHandler) print """ Feed URL: %(URL)s/%(FEEDFILE)s Username: %(USERNAME)s Password: %(PASSWORD)s """ % locals() while True: httpd.handle_request() gpodder-3.9.0/share/0000755000016000001710000000000012654461626015377 5ustar jenkinsjenkins00000000000000gpodder-3.9.0/share/dbus-1/0000755000016000001710000000000012654461626016472 5ustar jenkinsjenkins00000000000000gpodder-3.9.0/share/dbus-1/services/0000755000016000001710000000000012654461626020315 5ustar jenkinsjenkins00000000000000gpodder-3.9.0/share/dbus-1/services/org.gpodder.service.in0000644000016000001710000000007512654461624024516 0ustar jenkinsjenkins00000000000000[D-BUS Service] Name=org.gpodder Exec=__PREFIX__/bin/gpodder gpodder-3.9.0/share/gpodder/0000755000016000001710000000000012654461626017023 5ustar jenkinsjenkins00000000000000gpodder-3.9.0/share/gpodder/images/0000755000016000001710000000000012654461626020270 5ustar jenkinsjenkins00000000000000gpodder-3.9.0/share/gpodder/images/podcast-3.png0000644000016000001710000001630612654461624022577 0ustar jenkinsjenkins00000000000000‰PNG  IHDR––<qтsBIT|dˆ pHYs3ч3чOНМГtEXtSoftwarewww.inkscape.org›ю<tEXtTitlegPodder podcast cover artуЂKS$tEXtAuthorThomas Perl щ>itEXtCreation Time2010-02-24XEЊФIDATxœэYS[йЙїš‘ЬŒСcЛСvЛЛ§ІгqђІSЇгuЊNїЭЙЩЗШE.s‘o‘›s“ЄъT'UЇOѕыJ:щЄлmИ=a3#&1H 4ющН„%ЄН%aіЏŠ’ж^{ §YУГžчYEQ(•Ж!#pјаД­™G_Щ7аб‚u`˜Я<Ю_wF#rЉ•Šж@лИ | |4•кЊ`ј №pk40"SЩЁ…5а6d>~ єsS#У№рЃ‘C хPТhК ќмЏЌеbХщpPkЗc4г&‘™X<ЮV4JJHф’РЏG#Зz k mЈј=№йnя›L&КZлщэюЁЋ­ЏЗЛнŽХjХl1Д-:eDE„TŠx,N8b:0ЫЫЩ Ічч$iЏЫўќj40лЏў}…5а6дќИXј^ЃПžw‡9{ІŸњ†FмО:œn7ЃоC%EakcƒЭPˆЕ`Ї/žsћС=‚kЋЛќr402ћІ:п(ЌЖЁї€џs_їИммИz+ƒC4wvтєИџitЊ–шц& 3ГмНoю|ЧFdГАHјїбРШЗ{еБЇА2Ђњ+`Ы}§кЅ!~ісGДvФэЋ+эшT5›ЁѓSS|ѕѕ_љўсHслIрЃНФЕЋА2Уп=rz*“ЩФЧофЦ7hыюЦ`0ькQHФbˆЂ€$ŠщёZ[™ŽŠРd2c2›1›-дджbЖXv-Њ( ‰IОљз7|љѕ­ТљWоmXм!ЌЬD§[rцTЕіZ>ћХ/Кzњц;n.‰"ЁuЂ››$ёb>ЊN…Бйэ8\nLц Ў•ХEюпЙУџчЯФтysїGР{…њн–lП'GT&“‰Я~ёKоНq/пˆ.Iсе6жзх’Е:$“ŒЧ ЏЎрёљёж7`2™Жпohnцн>@Qўы‹?хі\Ikцѓмњђ–o;UžIсуo28|e‡Јёsу/ ­ЎшЂz‹e™аъ sуЏHфїLxќ~‡‡љјУ›…—}–бЮ6лТЪXд—ћцЕKCмxџ[[ђjIOъ&EQ…ЂSˆЂРќд$‘p(яѕІЖ6оПўз. ^ђЛŒ†€ќыsr,ъ—›ŸмјmннyWomn\ ЦцЕNuЃ( ЫѓЖ67ђ^o?uŠ>ј?x\yfІAr†C#lo(џ6ЗдЋзiщьЪ3vІ ‚ѓѕ?NUœJ$ЖŸFZ:;ЙqѕzaбпfДДнcн$gCЙб_ЯхKјЖЏPd™ХЙ}>u ‘e™ЅРlо(хkld№ТE§ѕЙE{Hki[XŸцОћюр0Эy•‡ззRкАдy I%“lцЬЗ 'клywpИАшЇЦŒ“о'йWM&}=ЇpзНЖЊЫ’DhuEг†ыT?Ёр2JЮˆхіеqњdwžYјd mؘѕќмvвыjmЧпи˜gYпкм@о{Ч[ч˜ Š"бHdћЙЩdТWп@Wk{nБ&рЊ‘Д;ё6Нн=;lV[›;6!uŽ)б‚ iЯGoїЯŸIћЈoгйкN­ЫЕ§\–eтб-šЉsдˆnEђ&ё—‹Юќ  УH:рaЇУ‰Хjн~.Є’КЭJgY’…зn№f›ЇУYXЌХH:šHЛлkjђцWЙ•шш@кщ ‹йlЦjБ`ЕXs‹ДšЩщБœfk^DЁјm›ЖОv’ !ŠRкFФЬ "‰ЉDŠD,ЉЛзD1ПГ1[,8жУлцЈ39qЕv;ц— I*^Xžzўжњ§ В$пŠФˆEвщпcˆ)}OВš(є‰7šLдкэЌПЖsљђTd4awџ=Э1šŒ8<ЧŽї„Є@l3Fd}“p0ЬЦJIдЭеDa$ж‘ЁБи,xW—“йФЙїпсхНg–+нU‘ИrЄ„UШVx‹­№S'ё6ziь_Ж{"Ы2ЩhBЕ“G4–йbІЦQГo9ETвоqЯзьЇ­oЧщZo$Лт‹oХ+-єж +‹УэрТшПv›нІjн—sL§0ЉjЛбѕN7Ў%#QSёH 1UйУЕоzaeiшhdшчWhюiйП№!˜{>ЫТ+mЗbŒFЇ‡ћош !ЫщЩyВУоnaAкvњr/gЏŸУlUoѕ8ўh\ѓ­ЇзЙЧ?…B*‘$‰UеБ/ЧJXYълќщюz:* cwžkОSИк‘X$†ЌО3%ЅАjjkј№"§Јс/Ы2ЯО}B4Ќ]єГйjцф…žЬА'ЉБѕМŽ­А m+ъzч$чп?бTњ^ (ˆќ№ЯЧEљˆEЦŽFЌ5жЊіvуX +‹ЏйŸpP!K_*žфљїЯT@+Š‚,ЫШВŒєП{Ўj]šГшТЪріЛЙјуKиjK7IlЎn0ѓdКфzEA–ddYЩ;еи]я9ДmЋмшТЪЁж]ЫХRыоyЪыa™}1KhЙ8WчГ=BК†єcюя9i2{aй"ЛƒЏ€Bц1яНТВй:^—-•W#cИъ\јлJЎk7z‡ЯА<ГT”љ!06Kї@›z‡LйjгЎHk ЋЊеyXі–”Щz”Q…бП?ткП]ЇжSКwh!5N;'NЖА8qјРUIXš\ЄНПSе65ŸjЉЈАЊ~(T 1%№№Џї5Ы`wђтЗTŠф~4užЈш!шЧFX>8рёпЁЊпJЇЯE}‘Cm8.ЩSu7L3ž•r‹ тЉ"^'M'№5ћЈqдl[Ž“Б$‰X‚атСйe"ыUюЗ2dќС+Mїw_шй>ЄѓА,N.а=PМ]l7|ЭўЂ:JЅbТђЗдszЈoЯ0їZ™Z_ГŸžС^Жж#щSтчJ?%~rtœКІ:е'ѓо>МоЂBэ'дVн ?0ЎjЅьCЁЕЦЪхŸsљџ^9TюЇЯХЅ›C §ќЊ*щˆЦюНаdHьшя*ъКhx‹ШšКGy›*;PжЛ:МNЎўлѕ’z _ГŸЋŸ\/љєд­P„Х‰…’ъиЦЮ&L–т|аеnбdТг ^гCнЛ\7В;э\љјvRZз8ь џќЮ"ЗSВŒ?|…ЂвYŒfMХy>,O/ЉкHџ#V‚ВЫl1sщц–ѕŒ€&kІЮЂу‘ГЊЕ)KЫЉт6‚у[qеW‡О>Uы;(eжщЁ>œЅFя‚нUЫ™ЋgKЊcbtBuлV)~Qы‹kЊЖХгXW‘y–цwЌѕ84 OjюiСх+^ДЉx’™Їгъ5Р`(z#XmaMFM’ћю{_­oа3p ƒ–`ƒЁфeњє“I„ЄКQ?Хz˜jq@AЉ bаTXЃ†эќкKŠS"3*{xќžЂ„SM|Эе!,-<:іCSaЉ‘ярї*=:eeVнјє–ЪсйT9‚ЧjЗ•eфШE[aЉ|„жї Ю–О™‹ля.ъ GbЊnЫ=j*Ќrf№UИзЦJXнcl ъšПдWdEuCщ[%,­вRя~ЏвН\EaUх&ŠтQ;mSЙчYš KэџК7п+ЎJ=A•чYŽ"хЊ-ЌbлQ,š kuО|>зЋuцGk ЋЊІ*vв{Ќ7Œ%ˆЌЊыcДб№–j_„$JЊž‰SьнPзєaU1 ш hОЅ37ІОї@!j{($Ђъ Ћ]ъоЏЖѕНXБbб\Xѓ/DУъјЋяF<cNeaЉНш(f~#Ј|Ѕй\^/tЭ…Ѕ( Яo?rWнyŽЌВЭ'ЉržгbŒЗщь7*škŒ†ВfW.‹ЃЮњтc#ъ'›|4Ўњ*дяБLEІ;Sъњ‰лŽb(›иЬ“)цžMЋVпТx€ё/UЋ/—„Ъ‘пХžцЊЖЂЙŒѓЌВМЯПFt3Ъ™+gЁиєбŠТЋ‘1MљVЛЧ*і uw.J=сPї*л2Ь>›a#ІїJџЁнJ6‚!ЦюjDn2žH‡†Љ”БЅи/TэЋœCaEV7V7ИїхїдЗ5аrЊ•њЖ†=7k%Ad5АТтфA№ЂШ ЉD ЋJ›шEЯБT пraeY ЌАXС`4рђЙЗCь Єч9ЩX’ШкІъЋОƒ0~џЅjQEХ&В МœS5D^‹д”{Qём ю!6W7и,ƒ•ў ^ЮUК ™К<НДкф­ eeч‰T•Ю Їs4•ќQХl‡…ФтqФ‹oЙ=uЊГ%_’(‹чmƒ­э„[б(‚/,‹ЕМ›—:еOЎ&EAЖЂyѓЗ#АN.%ЄH&“y“e‹Е|юХ:Gƒ\a‰‚€ ŠЄ„МИЬљМ `+К…|m Дйk0•ySЇzБX­yТ’IЖЂ;\|Œ@žkРЬќ‘№ые™С`Р]WўmъФэЫзBdcƒ™љ+шY#№Uю+/''и\ЯѓіјtaщЄёјђCк6зCМœмq.аWFр9Ц’щљ9жзV‘r\6м>ж}ЎuмБ;ИМЏƒ…TŠphщќkИc ŒШР_ВЏJ’ФЋЉIB+ЏЃU 'кЋя@kђвмб‘ї<МКЪјєT^'ќe40"g Є_фОsћС=–чцЅзЋУК†.ѕs\щ \^/ЎКзi'%Iby.Рэї ‹~Џ-яЗ€э2ИЖЪЃЇOXYЬЯ‰йuІOЗkCЌ6ЇOчНœŸgєљS‚ky‘XЄЕ”жh`D~“[т›;пБ47‡˜c05[,tщг6п•NUa49й&Я3"•LВ№Эя ‹џ&ЃЅМНТ?ВO6"›|§нϘ~1–—G жщфдљszЯu АX­єœ;GMэы„ФВ,3=6ЦпoЫF$Яkуi 9Т Œ(РЏsK~џp„;їя˜ЬїжЌu:щИ€У]љuДСсrб;pZg~Š€Йё ю=ИЯїG /љuFC Нк†ў|–}n2™јЯOџƒСсašккv4`cmХ™Y’‰Ѓ}B˜NЋЭЦ‰Žvъvцт_šхс§ћќз*\ ўq40ђyю Лэеќ ш.BzіџЇ/гжˆsёэ=нys,плчccmѕu"ЁpсMuЊ“Щ„ЫыХэЋУ[_ПУUJ‘eцЦ'xњє њђ/…пя#вšЩcG0а6дмЖˆšL&>ў№&W.гезЛчKQ’ё8BJ@HЅ2“mb uŠХ€йbСbЕ`БZБйэ{њн ЉгccмН?Т—_п*U ŒьˆоUXmCяђLюз. ёс{pЂ­†–цŠž‰ЇЃВ,ГКАШb`ŽЏП§чnsЊ$№бh`флнЎпSXА-Ўџ&Їч№ИммИz‹чЮгдоŽз__VG}э$‰№ъ*KГs~ єъbЃЦщ­О?ф?ТЁ…•e mШм>>šŠЊHЇкX&эFѕp+ЛїwXŠV.mCFр*№3 hZ3•90Og?жIЧ;ЬggI{пЩјш•Фџ+Ћфы1›УjIENDЎB`‚gpodder-3.9.0/share/gpodder/images/directory-soundcloud.png0000644000016000001710000000063212654461624025156 0ustar jenkinsjenkins00000000000000‰PNG  IHDR‘h6sRGBЎЮщ pHYs  šœtIMEл .™o;,IDAT(Я•БJAEЯ› KтЂ…l IЋ h)bA;ПСB,§?УЦ/б/ажNHc)Б1.+‹й™}ЛAЃ’Ы‡™{поь‘ѕБuj В>a |CžRkќKСяХ$АрСPAyьџЈ/ˆ`Р О ŒР f ,T>d>–zLžoOUЇ/Nд FФ‰:1sMЭг`ћ8hя€~єннyёњ(NF ХЕƒ YXa\RƒЭЃтіЄК’z‘Хuiv‚жю_w)wьЮ™ž}якšхNАqhVǘЈ н-џЪШRKНgJ˜ќў’t0YГФ=\IzКHFе+УHГDТHF;еє—žf‰е!€о“izЌ~ ГШ’Яа|&?_"Ÿ‚Щ›iЁkIENDЎB`‚gpodder-3.9.0/share/gpodder/images/directory-opml.png0000644000016000001710000000241212654461624023744 0ustar jenkinsjenkins00000000000000‰PNG  IHDR(-SPLTE &YŸ&ZŸ&[Ÿ&[Ÿ$[Ђ$[Ђ$[Ђ$[Ђ%\ $\Ђ$\Ђ$\Ђ$\Ђ$\Ђ%] %]Ё$]Ё$]Ё$]Ё%]Ђ&^Ѓ(aЄ%d )dЄ%h ,hІ%k %j $l $nЁ$nЁ0nЇ$pЁ$qЁ$rЁ$sЁ$tЁ$uЁ6wЊ9{Ћ@„ЎC‰ЏGБJ‘ВN”ГO•ДQ˜ДS˜ЕT™ЖU™Жџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўџџ§ўўћ§§љќќѕњњяіјъѓѕфяђоь№мыяишэзчэжчьецьгфывфъатщЯсщЮршЫпчЫочЪочШнцЧмцХлхУкфСйуПиуМзсЙерЗдрДгпВбоАанЏанЎЯмЎЯмЎЯмЎЮмЎЮм­Эм­ЭмЌЭмЋЭлЊЭлЈЭкЇЬйІЫйЄЪиЂШзŸЦеœФд˜Тв’ПаŒМЭ…ИЪ~ДЧzБЦuЎУrЊТpЉСmЅПlЄПkЄПjЃОjЃОiЃОiЃОiЃОiЂОhЁНgЁНfЁНe НcŸМcžМažЛ]Й_œК^œЙ\›Й[›ИZ›ИYšЗWšЗ$Ђ$Ђ$Ё$ŒЂ$ŒЁ$‹Ђ$ŠЁ%ŠŸ$ˆЁ$ˆЁ&ˆ›$‡Ё$†Ё$„Ё(ƒ–$ƒЁ$‚Ё$Ё%Ё%}Ё%~Ё%|Ё+{Œ%{Ё$y %wЁ$wЁ1o{7bj%b &` &]Ÿ&] &[Ÿ;Z_&ZŸ&ZŸ&YŸCIJDDDCCCBBBAAA@@@???>>>>>>===<<<;;;:::999888777666555333222222111000///---,,,,,,+++***(((((('''&&&$$$$$$###!!!!!!ч )"RtRNS #+5@IQ[doy…ЉЗФгсёўќјђcabbнrhedfЮЖž‡|imuў|§‰§§ќћћ˜ќќќ§ўўЏИЯкфыђєњћќ§FY/tEXtTitleЈюв'tEXtAuthorЉЎЬH tEXtDescription !# tEXtCopyrightЌЬ:tEXtE-mail}›еtEXtURLxЃгёIDATг%БjУ0†o№Ћш‚‰@ˆ(оŠч{2к{2u1ДBЁd04›ЁЄ%`Lba!&Yќ8•глОџјяў"Т(Ѕ\$ойaE" bšІЧbIзЮєэ…›љЗ*ŠїІo•\ \сkvJЊkoOЮ4YP: єё†лльWжк_TјуLš*YуоZЫ#жЊУм;HhІџFќъ4цт~§‰ЧVnАЄ 8—b&eИo7xŽXг`V‡§Ыxф0„Лџ`ЅŸXШЋNћщ>itEXtCreation Time2010-02-24XEЊHIDATxœэYs[чЇрьApЇФE$%Jђ"Y–dI”уёMgq\н]ЩХLеLОE.r™‹|†Й˜LUOMWRSЧ•JZeЧ‘)G‹-YВ­)R\ЎизГЬ I‘ЮAђЪTsцТE.§фgtЗwуД;jћ M2b&4Ух?џ‰›зОЈ|;МЗ‘ИжVaјЛEIO%ˆ"—>ќˆwољ€Ž–- й\†L6…,ЫШŠŒЂШha+3а“Щ„й, ˜AРfБcЕn<… .†јќѓ+\ўфуЪљз`bn…‡“‹$в†?TKіЅАŠf3ƒнКš™ Ex0Й@$‘ощЧкьka1™Lєv4блбФьb”ћ“ ,E6-Јb№ aUаетЅЋХKh%ЮЧsFV%FEД hїЛЙtf“CXDузД]ŒпиK0™L>иТо:B_Їѓ V1„ЕьV‘ГG№ў›ј=FщІ­`kМN~xz€7‡ЛБZ„ЭOиЧТк6&КšљёЙ#hнZЌй~ФV•XE ЏіђЦс.ЬfЃ|o%†Аjdш@€їпРэАюєЃ4КкБO-2ЗУ"ˆЂ‹`.М XD36‹ˆЧiCvЗО§n—Ю qыс SЁ№N?NC ЋАцУ цЗtчА‰x6<Ют—uѕ•]R%^Ьœ;~vП‹лчїy‹†АМЇ2ЉŒДF„VQ еяЂ­ЩE›пM“ЛёkШъj&рsђхwSћ:ША!„ЕYIff!ЪЬBОЅЭ"въwбюwбюwуq6f}yŸЫЮЇЙvo’рr|ѓvЪђєZX•drгѓІчѓ•oќGоyмюУn][щw'Эf.ОоЧЭгLїЮМKVTВЙЭгёv•А*Y‰ЅX‰ЅИћ$HЛпEoGZ} Г0›LМuь vЋШЃЉн_ QQUщ,Ž-ЬHvЕАŠЈЊJp9ŸЁѓ•0Ы/CМЮЭOЎ';Б[Eю>йНU%‘ЪЂ([KWпТ*E–&Ca&Caк§nŽіЕвюwo~ЂЮ їДbЗŠм|0ГыjE%oQTА…UJh%Nh%NГзСБОЖ-ЇћыE_‡›EфкwSЛ&™CQUтлшЉŠ4ЦdDg–Ѓ)FяMђя73 ЃВs=FgРУ:йEl|'vЕЂ‚}"Ќ"бD†ыїŸѓ7ŸАйЙlщ€зЩХз{иЧЈ(е‹ і™АŠ„уi>ћzœыїŸ“ЪVЕ—vЭДњ\œ{ЅЇЌШ]Ѓ ЩJMЂ‚}*Ќ"“С0љћcN-lЩшЇ5н-^о<вЕyУ:’ЩЩyQејћизТ‚ќчн'A.п#ДVђC]ЭМzhу§ы… $39Rmzp]W…g ЕЩ•ЏмWЌр'хПOfrD…тjЉьŽЏ’ЂЩ Ÿ3Са'†:1зqˆ:жзF:+16НTЗ{–’7|ц4§ш*,‹(рВo-N)™ЩKfЧвЬ‡уЬЏьLqЕБщ%#IЮПrЗЃ~ОШ7w’ЮJ<ŸЏяF ’ЌHч4З­5ŒЫiГрДYhїЛ9вг‚ЊЊ,ЧR„VтЬ/'XŒ$ыŠВKqљцоюІЗНiѓ4СФ[Ч’ЩIЬЏдgХšЩЩš }•4ŒА*1™^W;ж ВЂ0Гe2&Из}В-Щ зПNh9ЮGКыPFгl2qсе^.п#ЉгђѓЉT:Їkmз†V%‚йLO{=эMdrљ!уY0Ќ{*ќФм K‘$#ЏїтЉУаhоzх Н=Ё‹ы'яžЩщоћяЪUЁЭ"2ир§SќјмaЛ›u56F“>§jœхh}ъ9Дњ\яoгќК’ЌKfы2Ѕи•Т*ХэАqъH7?9?ЬбоVнвс39‰По™ ИлМБяkЅЭявфZ*ЮJФSйК9РwНАŠи­"Џ t№гѓУМzЈ›EћQ^’ЎофYpeѓЦ5“ŸЬзњ9$Y!žЬдНРмžV‹(pЌЏŸœ?Т‘žЭэQЊЊrуў4Ї4Нюz8ЌЮ;PеЙŠЊ’Lчˆo3мE+іœАŠˆ‚™ƒ\:3ЈK<жн'AОy2Їљu+щ x8вгВ­s29™XrgwєиГТ*тuйyчd?ч^щСaг6.ўбд"їЦѕ }m ƒfяцХHŠ“ѓT&ЗућэyaщiѓёЃЗђ+H-y№lAwWŒйdтє№ #!TU%™){@Иo„љсёд‘n.МкƒUУ@Л;cГ<_азгфЖЏћO‘ЭЩD“й-eЮд“}%Ќ"Z}\:;D‹O›d U…ып?з}Ћ•веЎ\ФKfДїѓiСОф}“яž:ФБО6ДX8*ŠЪї&u­Yj^ь •Щя†жШSэ[aA~SWЕsёЕ> rs’ЬпОyІ›cWQUzк}јм™^ЪОV‘b‚ƒUњR™џўЙІ ŠЊ"+Ъъwў•MzY=1„U рuђоЉœікM спЯзt u ŠДјœ їДжt}Н1„U‚зiу§Sx]Е5&ч ­l?дЙ((EQ_:)sИ›ЕqƒStжьb”ЉP˜…p‚x*г06–—сАYxядР– ’/ЃИRЬфЖцЃSQQeSAБYNuжєŒzЂЋфЧgWŸ-wиZD‡MФiГ`ЗYp;Ќt<47P™kЋ(№іы}|њѕ8Бdѕ5ЎвY‰ып?ч'њ7lЃЊjеA‹У=-|36з;˜еН/ЭI29I.+Jінx‡ЭBW‹‡ю/эЭюК&3Ќ‡Э"ђƒyqеВЪ .Чy8ЙРpoљœЈA3ЧћкјњёlMзбƒ†™cЅ29žЮ,sѕю3ўxѕ>зОЭ‡ЇdЗ8”шЫnх'њjN‡џv"D,™)›kZ}ЌП­aЪ6•вxODо™:НхЦ§i>}ШшЗњ_†ЯeЏ:^%пCЧ’YЎо}ЖхљгvАY†З§PRXЅЈЊЪЬB”Ы7ЧИqџљŽlXйъsqіиС-ЕЭ‹I!™ЮMЄIЄsф$™щ…Јn•§^=дОуS‡J^XETžУќхњcn?žнђjK+Жљ^!ЩЪjn"%+ЩkBWЎпŸж%шЮхА2 qдF­ьaQ•Бщ%ўќх#О›‘“ыче?1д‰ЯѕЂNЂ$+Є29"‰ ёT>ТрeC],™б­ЊпыК\ЗZvАŠHВТїѓќљЫGŒЯ-зхž‚9_Ы=')D bЪl"ІJю= Kj?œ7yьєДћ4ПnЕьZaЩцdn=˜сыG3К$БЊЈЋІYQp;­œ<мYѕН$YсЦ§ч?ežWњwОИH‘]/Ќ"Of–љл‰šч^Ѕ.Й` WдђемpO §5lŒљ,f9šЊщ9зЃ3рСЅЏS іŒА ПХЪ•[OЧЗnš(Е-Щ%.•ЭЂЮ?X“}KD “ Кš_Зі”АщŸ~§tУPсвaMо†oЎЇнТ5јъ&цТКl‰2x 1V‡{NXŠЊ’ЮJ|~{‚лcseУZбт­•‘ђјЁЖЊїїQU•{OЕ_!6{5;аЕ`W KQT$Y)”с‘HЄѓЕЕ"ёєъj-™ЩqыС4Ÿп™а­JВйdтќ+=UŸџxz‰dZћhгЁFX*”є.ъjѕПb Їx*K4™!OMцХ“ЪфШф$r’ŒЌЌ/ŸБщ%ю= щім]-uU7‘W•oЧЕЖюц0н4К!“• n&Saї@“ Sў%<џ’GЭ‹Є8мф'ТyЫ9%пЋ…†љхМжЋœ[Їiі:tлУљЬб<› We‚x8ЕР‰ЁNln^юД[ш x™YŒjvЭэВiЅ(ъjнаlN&““Щd%вYЉАЯ`Žd&G2]ј*HMкdrљѓr’LNVdЅbЏџ‡TUјьі8іt;ЌUїZ9IсщŒіоžФ7ЬPЈ7йœЬ•[OШIњDБО6XНKхЩŒі™д}ўн}п ђќѕЮИ.зnі88иVKe~%ЁЙ›Ч"šikвІОV5ьx4~“лN_ЇŸЎ‚еиYЈВœ^ГЬ.՘даR=Š№ѕЃYNщPИџѕСŽЊЋ?YцФЖŽфЮ€gЧvxн1auЗz9=мНašЛOДсsйш x8uИ‹хXŠЏЮ0ЊНFТБ9к›нšOц;šнДљ]UU=~2ГЄ‹АюŒщ_ji=ъ>к­"џљьџАЭк Э?<=ШЯжЄбЭћгК,ŽїUW;4Ok^ЈЗНйНcAеUXMn;?ЎЉЇш xјhd˜@=–c)žЮjПыэhЊКъŸG0›hлЁM@ы&,гЪOЮбdчy—УЪOЮІЩS;ЅШзf5Е3}е™žЭi_лД3А‡…e~xzЛ†™ЛQрвщСšВcЩ 'Еп|№@u.•X2ЋљъА3А3ЛЪжEXЇ‡Лёыъqк8w|kIqglNѓr@]5ФEЭ-i[юЛЭяBЈУЎ•ш~GŸЫЮpЏ~щI]Э5yѓS™œцўК|\Tu–яYн0љyV§эYК ыЄЮ[Д™Lд\УрлЇ!2—ZЌ6ТtVу  ЅI›Ъ…лAWa™M&z:є№?ицЋ)8+Щ|ЋqlT‹ЯUU„i2гмЇйфЊm‘S К Ћ#ржДˆьFˆ‚ЙfcчИЦ+2“)o0­­‡C_•СˆЕ ЋАД*ЛЅ{еш‹&2лŠ•п ]-žЊЮгzялk=–s‹ЛЋjr/ Ќё“!mSр;е k)ЂmУ&jRs;ш*,­w‚xZ”xœ j[Ћ=рuVѕ%3šnынkщ*,ЉŽ{Йhg5Ž“ЪhWТdЂЊ}|U%ІёОоѓ,]…ЅчіГkяUЛХZUб|Гo•nЇ№._ъ*ЌZЪ,nџ^кИBДžgU;E4^HдЛ6МЎТšYЈ_0ПV=ЭЬBTгRCеAZšлSsЌD:ЧЂЮ›C>–IЋџpIV˜ЏЂŒіFTћекєQявнКЛtNъПЉжїˆЇД‹0pиФЊŒФQ{,НіЪоняішљс˜~ѕCcЩ,ї5–жйЩе ‡™ЌЖ+j‹А‡ьXOXНін”nљƒзя?GбИќbBcaUccЫ.бюs™LдЕКr]ю4ЗуцƒiЭЏ{glN—‚БI шZЊќƒjНЙe­eХЗCн$ќэxˆћЯДВЦІ—јњ‘>…ѓЕЖПUыNбКОj=чYu]*|љн‘xšЗŽЌКh…ЊТ­‡3К”*ЂѕЋкљжYлѕьБъžWј§ГyцУ Ю;АэА’љ•зя?Џ*oo;h.Ќj{,]bеЩеА# Ћ сўђQОvњлМ.Щs’ТєB„Ї3Ы<гЉ%ŠЊ’ЪH8lкќzЊ‚4ж^юБJy>сљ|ГЩDГзЫa]MBHІs$в9–ЂIЭW}[сЋG3šeU[рсдЂІ)ђб:КиvМvф{ˆХHВ.Vњ­ђhJћДАэ2 3ЙгQ%e}ДЂ(kЫ*юti8ƒ†УTЁ UЭkЇ3АšзL$жФP‰uЖи4>ЂP>аIВD2QЖ Z6ЋЦ D<†$—Џˆ,bCŒ– „E,ї$H’D"^Ї?kfŠ?e3RЉђ‰І(6ЦNCigЃЊ*ЉtŠlІla0SжcD#adхХpшВ;‹хk 0›Ьиm/œъ9I"[w7kІJLMŒOО/AРщЈ&­AcтvЙЪ&яёdœЉ‰5х7ЇЬРхв#c—+аыЎ.Щ`ясu•'G1Ц>Јlvй мVЋbLMŒГДВTfvhі5#ЋУ}еbСяmZ§YQ–W–*{ЌpУ™U€OŠGeIтёƒя‰–ЬђГ™ЖцV§Ÿм ЁiД— ƒ‘X”' Ke)sŸD&F•Ђєувwn|q•рByє@KSЛЕО™ƒУf/ы­TU%ИтЦW+›~ /,яW€ЇХwBAю|}“•ш‹B&“‰оЎ^Г1$ю7A ЗЋ|3ЊЅШ2woпb!Tж=%ЏЅМА"Ѓ9рзЅ-Ў}і)ГѓС2SНЭjх`чУќА0aЂЗѓ VЫ‹:В,37фкgŸV6џuAKeОТпЗ‹?DТ+ќѕђ_˜š+пПиыђаwРшЙі‚ азн‹лљ"nNEerю9Лђџˆ„ЫJ?н&Џ! DX‘‰QјUiЫ›зОрњпП ИX^Jбуt3иs›1чкГи­6†z№ИЪƒ1ƒ !n^хцЕ/*OљUAC@EtCdbє №‡вc—?љ˜ЛїюА)/LfГк8м;Hgk‡aŠиC‚@gkCНƒeУРrd™{п~УхO>Ў<ээЌВž‡љ—РaрфЭќзрЕзNвйвОкаd2бъoЁйчg9ВB4#™JъЖЃЉ>˜0сt8ёК=4ћќыNs‚‹!юоЛУџѕ_*Э пзLљ5злйз?вмVїяD‘K~Ф[чпІЇуц J<ЫВL*“"'IфЄ9IЂ.›l“ ‹(b-XD‡ЭБсЈЃ( SСiЎy•ЫŸ|\)ЊyрtdbtЊђМu…рыЙ| ”MЄЮ\ИШ;?ќКк:ёћšŒтf9ВТьќŸџЧПЏ7ЇЪяE&FЏ­wю†Т‚Uq§%=€ЏЩЯ…wпуф›gщhiЧыђЌ‰*4иЈЊJ,gn!ШЏnpэГO+WяЉўq#QС&Т‚еaёOц\ЅДЖwpітл #ррu{ёИм†)b—!+2БDœh<ЪвЪcяsу‹Ћ•ЦЯ"п?[oј+eSaјњGœРя€ŸЏїО Šєєbhј(=§‡№њšp8œˆ‚ˆ(ŠЦ`й`ЈфЃ>%Y"•JЌ051ЮиУLMŒWЮЃJљ№ЫШФшІY/[V_џШРo76kkЕйpЙ=8]Ў 'њ;ƒЂ($ ёXeфчFм&oЇКВiЫл€ЏФќј 0А­“ vOЩЛњ~_jќм лV_џˆјјјhљЛ„љ0Њ+EппvЉZXЅјњGЬРYраtн…зъЖС2а›eђљ3…з)ђбФ7 1z5ёџ@*тŠO^IENDЎB`‚gpodder-3.9.0/share/gpodder/images/directory-gpodder.png0000644000016000001710000000141412654461624024422 0ustar jenkinsjenkins00000000000000‰PNG  IHDRѓџasBIT|dˆ pHYs з зB(›xtEXtSoftwarewww.inkscape.org›ю<‰IDAT8Ѕ“_HSqЧПчwЇk›› MgšфŸ,Ь%•hI>Ta FBQ’ЋЇ^zЫ‚|щ%Ђ"IlŠр‹…Ž"LWCBHB-вКRЅKчцзЛэžТHш%і}=чћхœч3#‰„мџпг“IІlщыДџ]иWZЗЗІЌюQІлэ,ёь%жНкЗяUvпЫњн;JЧ&ЇŒЫЧСќь…^l2jŸфoц*+ЎdЄeЉ–wђіИќЖwbb"JЬ зЉЖ†XКщИX {Љ WYыї1Е†OАBgXКу’вС„IHR?ХтMSгЦgЦCTS\SЦI†з1GК*UEMжSLZЄvgŠV”K ‚aЄŒ(’+u&sпг˜ДТVŸьS ,IйКЭ]нП+IˆŒР‚H€X;Zk…Ў3 HѕЩЃ*ЄЭ<‚eѕqЪЃб*6œщoJ@ФЌТ&бПb"Jјr#6в:пIENDЎB`‚gpodder-3.9.0/share/gpodder/images/directory-tags.png0000644000016000001710000000134712654461624023741 0ustar jenkinsjenkins00000000000000‰PNG  IHDRѓџasBIT|dˆ pHYs з зB(›xtEXtSoftwarewww.inkscape.org›ю<dIDAT8•’KH”QЧџїћю‡AъЄNc™ЃiCZ™DЕ,ZЕzбs!„‹дn\”Н Є „шeXвТE2jж4Iт#ŸСlFАёћЦ{П{[˜вŒxрЌЮџїу8D)…•TO{ЫVЕ_YЊНьрБЏdE‚њz­УŸЬІFјnК\ЎћнГеšЎЄe$ Ъ}`B N yяЉ |Щ­OVщКўб“[рЫіњlЩђЮїЯ1:9^ЈY*…кAЧ‹ц]ЇыМy[rђ6л•ˆcj,lŽ…‡5@#бщ(‹ќœ€”*‚.9ы8МxТ‡–]Їэ.Їи“ыГ[ц ˆnCxx@уqѓlœѓћХЅЛ0  ъјЙдN€ЖЇwlx›žх.ёц9„1)8””№ц)jГпѕoЏž !“NЂo7Qв—iщkЫ7њ–1ЅцcвŠ!3лcЯtЏ‡R жœСyЂ@-ik2іњK–љk^ЈЙX :sтЧ`џœTIЮг&…€ВЌ%‚yиўО`<<<0$„Јќ{Ќ™†q`,<вѕЅЇгPDƒTRZZDЧЗ`Џ9дпїн4ŒŠЃЇЏN'ј•RxtГжF)kЫvЛЫKЖ•9•€R E(4ЧGУ!!ФО—ыcЩБјklŒБVWfVХŽВ)№Йї“159б+8Џ:Yн`$У ИзPЭcЏ3\ЎJ ‰8ч‡Юд4Ц—ƒ—ріѕ+”1і сœ9э_§‡nе]ЂpБЎIќ€пps$€ymы‡IENDЎB`‚gpodder-3.9.0/share/gpodder/images/directory-toplist.png0000644000016000001710000000161412654461624024476 0ustar jenkinsjenkins00000000000000‰PNG  IHDRѓџagAMAЏШ7ŠщbKGDџџџ НЇ“ pHYsHHFЩk> vpAg\Ц­УйIDAT8Ы’]lSuЦчЃЇп[Л­гMV”Mй”hDM€(!|ФD/Œw:ƒёуФ й ЦФ W%ќHШbТG:6и‚2“ кГnАЎДыКЖчєœгП“8I/x’'oђ\ќђц}‰*КНм*ѕ…џH№­зХЬЖ~ЊJЎЖЕдеѕдЌy~oS$євжзyl Н?Gqх­яwт_§Ћюяпrсћdуcn­гшмMЇжжЖU^ž ЖЃ§хw^ЇЛї9­*@O€l їЖрžžpќmЏДрлл"†PмЋ|ЮФ\yєnnxO‡_ъЉТ ВcЕФеI4џЕњЁ•OсjhPЕ@ЃЃxДцшjmнt Ъ8фЏ4–J ]/чŒ]АІt§СшјШ…ЩЪwЊaЩЭсхыоSЛZИ ˜ Œƒˆƒm#_ˆz=ž–'Ћpя‡Ќёз єЭР (-ŽsБEKЯЙЕт54ъХљЬ)0‹``РL"•uШ&ЙџЫиќхsњсОп+‡>УœђЦ*œ“g†ŸЎЩO{+ЂGѕх‚’e‚БФ%‹Ъ”Dђ|9=pІиїё•Ъ‘Ў Й§wџНфЁM*а%%ПŒ}nўЄ q!†џяьQЩ9Б‰OOЗџ‘7Жя?Шvqw]$"™rР‹s~бЊrPУЦPсР“~›CЧke3гЁиЄСљЎ#ьЩE€[†АЕ’ ­+ј@ˆи)Ь™TГbЬGЅYXИзŸтзXЏ6Еђb0ŒZу!іІPЄ–дH~  4№#хŠьЕ­”;Й€~s’уЇoг"ЮОVŽЎѓіŠfіJEЂkы‰Ў :ВД‰я.Ыbe3ї2ŽzvŒЯz/qЪЄг&`R80СŘЩov%SцЮЮ0‰Уг‹ `пГPДQgp ЯRЊжљ]a˜Еаrђ­ЦУќJ•7‚АМ’"zTXtSoftwarexкsLЩOJU№ЬMLO JMLЉ/œдЎ ЉMIENDЎB`‚gpodder-3.9.0/share/gpodder/images/directory-youtube.png0000644000016000001710000000067112654461624024476 0ustar jenkinsjenkins00000000000000‰PNG  IHDRѓџasRGBЎЮщ pHYs  šœtIMEл Њ'.хKIDAT8Ы’1HAEпžA,$gcэжvЂEB Ѕ`eeА;[c™&•U”‹4jQ Q”H gАђLЅ $‹НœYsбгпьџГ;gg‘z%'лйIIЙeй?oI\і^џ‚№єУQN€№ігBFqѓWсƒыСлѓЁвшєф=р§„FЇ7вР"&і6lЛ2Oє‰RJ&fж8)dPJсц/™St—з™OXЄмВa ‚ВўЭ&dћ~@L?Ž/P2›<џkУБ ях[Ь„nЂ3‘LЌj,урТxО–žЏ5/–4/–рњ *gцЬж*S;Ж6ймt:Ж~0ј­є№Љ*Т VУhъЭ­же*ьnЅДОЛ‡е=…іЧkXљЈ_1№ЯPС€ІЦ“(Чct‘Oˆˆ{ОњЉы"ЎєэћIENDЎB`‚gpodder-3.9.0/share/gpodder/images/podcast-4.png0000644000016000001710000001521112654461624022572 0ustar jenkinsjenkins00000000000000‰PNG  IHDR––<qтsBIT|dˆ pHYs3ч3чOНМГtEXtSoftwarewww.inkscape.org›ю<tEXtTitlegPodder podcast cover artуЂKS$tEXtAuthorThomas Perl щ>itEXtCreation Time2010-02-24XEЊ‡IDATxœэ[l\зyяћ>{fH)J–(Y–eEЖзЗФЕcцVлВjЧuмœœN›FZфЁ@ђ˜‡})>ДE —FsrфЄБІMlŸф$uhзvтkRKŽ%ы~уsнГї^ы<ь!53$ErЯо3Crџ‚š=ы6š?зх[пњ–"ЅЄUЦFИ8ь†€Еп-WSРyр\эїiрyрес)Z-\ +ЌБQХзДк˜„Ўр№рYрХсщ†)dЭТUр0№ р†0•&ЌŽ_Ž ЌM(kжиЈrј&pчJiUЭ@7m4УEYK›тFJ|ЗŒW-#ќUuHo_‘/ЎЖŠU klTIO_ZВU#нЗƒСk‡њ,К‘CеlTХDQ Vw!‘ТCHс—ёмІЮџœ‰3П 4{)ќх2> <1<"K+еАЂАЦF•нРsРэЭяY™~Ў§шу \ѓits+ŠЂ­ќ™К)}МъS—^тЬoОSœ^*й[Рч‡GфщЋ•uUa*УРїmѕЯ +ЫЎ[ОФінџUЫЌ§$t=Т/qщєПrцзGpBѓл—/ ШБхђ/+ЌšЈ~XѕЯЗ]?ЬѕЗ§Кžk­х ыЯ›сУЗџšЫ.вмПœИ–Vmј{КžJQ5ЎЛэq†і>Бь'Ѕ‡чЮрy“ј~Я›CјХ)!NT-ƒЎїЂit}нИЪїъsўФ“œzћ;ЭѓЏЫР]K ‹‹„U›ЈQ7ЇвŒ7~тЏшпvKMФ=wšRё=ЁЛЉV/R,Мл№LQtіоіU +[џјN 5aе6”ПQŸjшР`ƒ :•г8•ЋкХ6 NхЬЂян0ЗГуЦCЭIПQгвBuК e+гЯŽ=7фЂМHЙ ›‡bс]„hX Вуњ?ТЪ4Ќ o ав‚АkШАџshzяЂ‚67ЭаЖя{ 9йcjЭIябљЇŠЊ18tCJпЯуVЧcilТњС­^ЦїїŸЗь<иl~xtlTQч=?œєв};0ЌЁ†ЬхвoуkmТКЂR9й№кВЎ%нЗЃўб5Рн*;ёЙэЗЂЊѕлƒ’Њs!Іf&Ќ7œђЉ†зЊfг;ИП9й!•РG}ŸlHс{љš—А~‹†УўЁ{›эV <,`Xg<.†Ц%Ќg|ПБГБRƒЭI†T‚г4@рNмМLМši6;hzЊfд?кйаcщІЊІ2љ‰Аš~ЙсЕЊЅбMЛўбJнЙ?ЭАk>ъu…4Љ3!AˆFa)ŠšЙТ€к”"ўV%l–№:nвЮRўX -“+!a%Ф‚gсšЙE1‘вQEЪ*RКHYЙьЁШ„ @ЌТВ2CO5ЛЖж"œЌ"D сMз~f‚пў Rzq6/!FbжUQTХ,4­ЭXЌFњyќСMуЛёнq–\•$tж*PДt­Ќ+л™R8јеsxе3xЮY„7йС&,GW k)еBOэ]bЅ(у9gёЋgёЊgоL‡[˜ыPXЭ(ЊaУўТ›У­У-E$g;ЦКV3Њо‹•Н +{О{З|Зќ>RЌy'!B6œАъбŒmhЦ6RНŸТsЮр–тUŽЋб„XйаТК‚‚nэFЗvƒєp+P-ОяNtКa–M"Ќ:УО УО Я9‰Sј%~ѕ|Ї[Еси|ТЊCЗі [{№Ћp Џу9';нЄ УІж<šЙƒєРЃwЇј+мђћ$FижH6ЁыPAьм!В[G0г% ЪžDXK ъНЄњю'3xxЩ­І„•I„u4c™СУи} ЈіЪHцXЋРHпŒžК'џ евЛ$ѓЏ•IzЌUЂЈЉОЯ’|ЭZ9У&'жQA2[Оˆ;ˆвŠ`!Vі“K„У>@v№ЫhцŽ•o Єtrх#‰АZ@бzШ |+ћёN7Ѕ-Hщ#М<Ћ™cЦ:yїнЫ(Њ…Ђ˜ (ЉЂš l 5ƒЂ`ѕм‹fюЂ<ѓТ†ѕЂвGјГРъюШŒѕv Џс^[тE1PД4ЊжЊїЃщСoUя_—K{нкMv№Ы”gŸЧsЮtК9‘єTЋtЬм ƒ;^5№јt>lxWQ-T­ЭмŽnюB3wЎ‹‰ВЂЅIќ!NсuœќБЬaD]jЧ’ТСён‹T‹o š1ˆfюB7wЁ›;A5;нЬeБВwЁ›;)MџЙŽc_Hщ!М9ж**шRa-FтЛујю8ет›BЛУОУоп•CЇf‘йђ?)M=‹№з_№К@TГ„эuз‰Аš‘ЕЃ`ЉЬН„nэD–КЁЋЊоOfЫ—(N=ЛЎNIQ­§1„ЪЛч[РsNт9'Љ(zjІ}šumЇ€ЂeШlљ"Ѕщы~‡B B”"Yйn(;–”.nљ=ŠSЯPџмђ{ з>?ˆEЕШ ќсђЇТЛ)%ТŸ‹Ь\ВЁ„U№І(ЯМHa|”jёmшєq}E#нџЙšŸWw!ЅW iPЌЬ +Ќy„ŸЇ2їsђ—ŸФ)М†N[ЃъЛ+{WлаˆN0I8HЫ˜c­)Ъ8љџЂZјfіуX™;a™ЋjуЦъљNсѕŽддцSEdSиЧЈи№=V3RК8љW(L|Я9Еr†˜Аz>бБaQJ№gclBaЭ#МJSЯFЬй™R}їЕ}BиЇfb?ДЛi…5W9A~ќ)œќЋЇЮ=д6ЧA)*ЁЖgТыЫА jНЕ~UЄpkQ§ЊH?п=iщу^Х-ХЮ§>šйЦŠFКџ(N~/6#Њ”)Šm]ИФ+Ќд WяъkнВ№Іё§Z€5wПCVjсЯRœќ.Љž{1ГwЎœ!";зc'ŸŽіM‚”•кэ"эняьЊPбQATcАЁ!RT‚xWЮYМъЙ6o‡*љ_рUЯ`чlл>ЄЂeHnљ(О{1жzЅ(Rœz&ˆЗеs7э8­™CX=wуф_Ys^)œкАзљmЌu!Ќz5…™Й3s+Т›С-ЅZz7F›ŒФ)М†яMЮ=дЃЊ•Н п B_Ў†`и+vUмЏumnPѕVЯ=єl{‚TяЇQЕžиъђ*'(N=гЖ••;ДђќNJ„_l‹]j­Ќka- ш˜™лЩnСю{UяЅПz>˜\ћ…XЪЏGбвиЙƒЫО/…ƒяMЧj=o…!Ќy#}3й­_СЮ=K&МЉР,а†•ЊnэСЬмб№lоГ30Kt~.ЕKXuіGШn§ЌьяF>/~тфїктИ—ъF3Ж!…‹№цКrи[Š +, ЋчВƒ_‰|ON ‡тд3m—‚нїR”#ѕ—Š›-ЌЊоKКџвŸGеzWЮАZЄOiњпn УЂ”ЕНKUЯaчŒОŽйТšGЗЎ#;јeŒšс5 Єp(M?‡D ъЗaЌьы*ЪЭІЊ‰нџ0vпяE6ї~тдs­™"ЄXRPWPHї?Оќ6Гљ„UУHџй-‡#3MoŠвєжюzГ (СJХК9xОЎ6­А ˆu•|УО1’ђќъJ3?bUžRдxЌ,ЈzRЙћPдTи&ЖM-,;w(ВžРЋœЈХmX‚љоiAPkGUги}ї…o`›H„UУъ§$ЉоOER–Sј%ў|Ф™љЩxˆоi9ЌьЧаЬэ-—'‰Аъ03w`чбЪ‹”!J'П[s^n2о щ\wOфcжzА7cи7’xE1V'p§ ќЩ…7…є‹јо ЅЉgckЇnэТЬм[љ­ЋлLyцyЪГџUMЃhYT5ƒЂІQЕ,Ъќ3­UЯХйŒ5Ѓ[Л‡ЛЉчXn.$Ѕщ …Гь[9N%џ2Љž{cigЊїST‹яаqИтїЧ’~АaъчYn!Ўj}шЉНЉН5#`чЏбЌkБsRžљёТ3Y›+bZніJyіЇСeP175}3}€jщП#/ЛUКТбOјГT‹oR-ОИ%[{0R{б­ы` CRді~„?Ф•nИ#RPœќWzЗџ9J !–ЌžсDXЋ!p=>Š[> ІnюТА`ићлQ{mT‘ ?Vц„;I%џrшR…7Men Ля3Еѓ КЙ=ЕЏr"ђВ[ЁЛW…вЧsNQžљ1Х‰яр9Ї#._жй–ќК-•FГ€{3}kKU9љБк*1zR=УБ”л н-Ќ:|wœвдГ”&Пя^ WHƒ<Etѕ pzр4ckИz єJ3Я‡Ю5Œдѕ]ЗAНn„5W=Kqтхщџ@xг‹HY' њоЈYHkCQt2[Оив<Щ-ХiШъЖ^kн +АЙTKПfютпSšўс•јN т™аъzЃеЂ[БsПпRхщ!cˆ2hІoBгЗD^nX:+, HˆEњС1&щ1D50:њE„7‡яЭрЛ“o сЯ"ќR”pђЏ1wёяЂŸ-ƒ•НгО9t~п›Ф),Г—иЪBм­n`Х~]ј|oц”љsхйТkйј#Џќ[ЮП/ыгДŽEђуЃЄscЕ!цBzрМKчƒЫBP™{ +ѓБШ/E0гЅ<ѓуŽЋЏgхЋ6GYшMd50ŠJэЇŒЅкБюbэпхк{N-КŒ|Xщ­кїhЭHAiњ‡”І{@[EM‘ю$t~)œeЎ‚i EЕ"sj•u7ЧZ Ї№:љёAФ|Y’‘к‹aП’5–НT3§;‘—† ',Я9Iўв?тЛ—c­';ДІЭъzЄ(Q-Мq‹@OэCQг‘—ЛV6ЄА ™ПєOИхпЦV‡Њї’ъ§dшќ•ќЫ‘ЏEэАпVXИэKу‹Jcѕм‹Њ„Ъ+ќ9ЊЅw"n˜™жv Ђ`C q&Ž ќxц\ŠЂ‘Ю п™#ъ…Œnю -іЈи№Т‚+! у0LBpœ_3ТЙ ћо$nљƒˆ[дљ^kS XиЬŽ‹Toј-•jщн[`ЕИiо*›FXrp oФRЖiпњŒЂ[>†бЦePѕ\GЗxКТKећ1Ќ=5Wх, [6~Я9iхвЬаŒ­шQ_;Ї(ЄzюЅ4§яkЮмZv 3­ JOэС/t&uЧ„Ѕ(:Vі.ЬЬmhЦЖЋІѕн ЊЅwpЂ0*JŸтфгє\ѓg‘ЧЯ23ЗQ™ћY-шкЈ–о^XжœТЏ"-sЕtd(4гЗаЛ§/АsW€f bїнGяŽПŒфdŠ№‹”gкr9Э,П*Џ[9JWCЗіDZоZhГАTв§“йђT}эс„T-KfрѓЄm9 GЕјО;оRKогTр–Ѓѕ]WЕ š1i™ЋЎЛUeЗ>Ž•§xЫ%Y™лщйњ•'ШXz-Uя „ ZњuФ­щ\Џе6aЅћ .нкє\-р–с9g#jбТn{ЮйШЃ2oha™™лАВ‹Омє-XйЛ[*Ѓ<ћ“ˆZs3}sШЁZFюАЖїl•и…Ѕ(vп§Б•oї}К%‡9Я9…[‰жђ­Ј)ŒTИуjžs2вЖѓЌ№‡@BзwVЯ=5лT<(ЊнђіђLєs­АІзљ0т–€nFlГ[Б Ћ+ЬЬэ-хїн‹TKП‰Ј5†Е‡0ЁќъЅШ/XR;А2ŒUXšО­ ЛьЊжгђЙКЈ ‰Šš УJF~Wu'Жvb–žК>Ют0ZЌЫsNGоS!WdnхdЄэиp=VЄ1еWЌЋЏХn%ZoгАK§еоњЕZ4-J{mс1 +ОлИтЈЫ-ПAKЎ [Л 3ЯŠќžEiЫ”Єžxeм†Л§Ўаz]nхƒ VD(Њ…fюXsОрBЫhoSл<ЯŠUXэМЅ^ˆжы’Т‰|тЌ‡DпkЕ{Пq„Q]nљX$хЬЖЇ№н‰hлal a-„Єn~D[!Q +lOЅscаŽіЎ c–W=ЙбRHQСh+Dјs‘t лSD}ЃX;RаЫЛБE{)ЊЅџŽ4^C”УPиЅОяE;Ђšб–ЗRuqWPЩПљAzЄєЉЬНi™‘Ю M[ћ!‹ШЎЉ›o†md›•ˆ]XТ/Жv%œТk?киžQЉaNябyЂы…EkЋ‘Д-5Uц~[‰~зоsЮХтЕ )Ќ[OдWѕЖГзj–\*Zк'П‹с„TxГ'џЯкя\Mйў\Єх…§BЃžB(‘ЭГ–а„”‹RLЭП№н2R4Џв"ђЅ’ЂBўђ“x˜ Мъyђ—џ)Жgфѓ›а=VДnЪQѕXЭšТСwЫѕІT`сvЏZЦo žЁщб-SЅ(‘Њt,Ь-Ї№K —џ9ђсЊžШ ЛJИž"ђ+d;šбєfaёЊ Т:Џч€[„я"МЦa@‹кў!}Ъ3Яу^Ую§,FњРŠЇmЄєqЫЧЈЬ§,r‹євѕU‘Ђйаб5=VD1OU5г№кwg~УHwNЇЎЧЈ:иu‚дЭxќЅ…7Mqъ”щЂЇіaЄі jН(Z  §<ТŸ |вЫП|"Л^ѕ Њб­d!л.м ќ–нI)Кбш)сT]шp^іB&Яў?њЖ\Йѓ%OUТ^5ЛAм‚їpЫяХR~X упюt(Х',ЊšBmИ“Z2un‘9щД 4мУ17ёСЂIБ Ф5acagcмћ^žТдЩцdЯЋРЋРB_VšН@Ѕмш:’ЮоK#жvК1мwЅ|‚вь…њG—€Wес)€Ь?•Тgтм ™U5ЕЈР„Э‡ЙЙiA#?ћR4и0<"ХМЅЋсђтЫ'~Nеi ›щў$sТzB%ггxЬЮЉœaтф+Э Ÿ RМ_ШPœцТёЇЈ_E(ŠAnKk%Ќ_rƒ5ХДœџр)œbУ lЧ ДkxDКРзыS\:ўŸTЪ' 7ЬkШє$=зfЃЇяMGШЪХп2ўсЂЫІО^гRУІЯ`!@Їыј№­ПYЦ:Н…lп=QЖ;Ё‹ЩінC*н‡BјENОѓЗИNУюЧъ„5<"%№Ењ”SчоцєБo-:ЙbЇo$Зхaкф‘аTr[>Зhб&ЅЯЉcпbъмЂHЯ_ЋiЈ–ЛŽсљ"№t§ГѓG_`ќьš­Ж†Й•Сэ‡IйћZџ ]EЪоЧріУfГŸМфђ™#\8њbs–ЇkкY`ЉMК'€§Рэ˜NМё[wЦj(ŠIOn˜LЯ”KG)о:W^BTвй›БгPЕХ—вC  Q Ђk=Јzўм0З^ей@ј%Nћч.ВY]ю‘‹ŽH-),€БQeј аА%>Аѓ6ЎП§‘ВЏ'Ьёё„ѕ„ЄR>Щ‡o§ Sчоn~гю‘cKх\VXА ЎяSзsV–knј4CћF0ЬkZk{BWтV/qўƒQ.џЯце=е–Ќ ,XŸЃ6чЊЧЪєГmяgмyˆ”}нU‡Ш„юGј%*•SLœ}Ы'~жlќœч-рѓK ѕЌ(,€БQ% < |iЩBTtпzїГeзg0­­Јzš–FQ ’!ГлHс"ќ2ОŸЇZgђмߘŸвь…цyT=OO Шяш[•АцUпVМ*^е tгF3ьк­ї ]ƒ”јnЏZnіќ\Ž7ьT‹ь ЫБ&aŒ* pј]рі„nф8СVп‘zучjXГАцU р №№(Ьт7—мЈž^œпћ[+Ё…UЯиЈЂw‡€нРАГіЛГwШ&,ЧСy‡sЕпЇ М‰_­љшЕФџ§ЮEe йDIENDЎB`‚gpodder-3.9.0/share/gpodder/images/directory-examples.png0000644000016000001710000000162412654461624024617 0ustar jenkinsjenkins00000000000000‰PNG  IHDRѓџasBIT|dˆ pHYs з зB(›xtEXtSoftwarewww.inkscape.org›ю<tEXtTitleOptical Drive>gК ђIDAT8}“]L[ЧїЃ@соввліЖ|ц:Їйі0бУ“‰Ž_œйƒ. &‹„рчы}11ЮЈГaЂO5Ъ ѓуAgІО˜`‡… жл2‘VжKя--з M>ўDm^кл ttvМ8јв rџЁ1Э,о/>мАЕЕщщюйH&“зі2т>›$ž9ѓœЂЊ>RЉ‰ФA67ђHВLoяу-žЯhэћ–eХIЯЭЂ…кHЇгttvЩ˜m”ЖKБџ”ЫŽ`—m‚С6RзЏгъoeee…ЎЎNЧЉЛй>mлЎЫТТЊЏ™хх[„Т7oо XМGЉTЊхы^€xwгЬ k,--сkUЩ6qЛN П?іn2жژЗЙђУUœђЫЗ–а4ее5bБЋЋk$&pЪŽђі;oЙВ,п}э•7uйuIœъ{ЏЗ™o/e …УLџ>M4Њџ'‰bл6Ѕm[xuє \зхН.Ddи•M3УЉkˆЂШќќ<еj•@РЯккmt=B.ЗNScTљј“ Йяф)dYЎˆ;хђЯыwrФу=haэ—ЩЏ'‹ŠвB6›Уяo%›Эеu.OM}>ѕЛxМ›ѕѕ;T*•Yqзх›ємэээœ}сљо|ОPљђ‹ЏьАBUTД`Я>§мљЇАe?{њє3GŽ%9“„)С0ŒІ&ЏgRQеОЇž<ЩЖe1ёб%ІЇ“ђќ~?Ÿ8N?Z0ФOWЏАёзЦЏviЇЯ0ŒЂ000р ыСK‚(œKмwH:vь(ŠЂbYїј{s“ХХEn,ЬЛnе”Ф†s†alCЭ7ŽŒŒt!КC‚Рcр!мV@HКU&ЦЦЦї2џ§Й/ЂИ.7уIENDЎB`‚gpodder-3.9.0/share/gpodder/images/podcast-all.png0000644000016000001710000001431712654461624023205 0ustar jenkinsjenkins00000000000000‰PNG  IHDR––<qтsBIT|dˆ pHYs3щ3щы4№MtEXtSoftwarewww.inkscape.org›ю<tEXtTitlegPodder podcast cover artуЂKS$tEXtAuthorThomas Perl щ>itEXtCreation Time2010-02-24XEЊЭIDATxœэ{sкFїЧПК‚ИcЬХ—PЧvт$O;НLЇ§ЋoЈ/Ј/Њ6yži’ЦI1B0`ФUшіћУГ*q-iD~њЬxb‹јюйГgЯžeŽŽŽL„„Ќvг љ< …т ќќПќђ ВйьІкВХєz=ќќѓЯжпŸ+“Щ ‘HЌНQ!ŸсPт МнІib:ЎГ-![F4У0ї>f+ЌщtŠ/^јжЈэч›oО$Iї>…!О +ФBa…јB(Ќ_…т ЁАB|!Vˆ/„Т ё…PX!О +ФBa…јB(Ќ_…т ЁАB|С7a1 Q§К|`р8,іЯЛицc-‹ јёЧaš&fГ™ѕЃ(Ъ'‡CЈЊъW3|ЇX,ЂX,BзuЈЊzяЯl6Уd2iўџйiч›А У ‰ ‰мћИiš шt:шvЛЧ~7Щ8ŽЧqˆFЃї>ЎidYFПп‡,Ы0 cЭ-\/О Ы †aJЅJЅ№№сCL&tЛ]t:ШВќйєržчБГГƒЋ3‘ЭfГM7oхl\Xw‘$ 888€Іiшt:h4[kЩюcО3А:гѕѕѕgcЩ'ЌyxžЗ|˜VЋ…Z­EQ6нЌ•C:SЁP@ГйDЗлнzKhaЭS,‘Ячбl6QЏзЗксЗC”ЫeK`777›nвТlА€eY T*Ёбhръъ КЎoКY+'тсУ‡Fxџў=†УсІ›ф™­ Рp‡/Ојпџ=ііі6нпˆЧуxєшNNNlg›Ae+…EEЇЇЇxіь8Žлts|#•JсььlЋъjј6ЊЊŠџ§яE‘HЂ(~ђ{$БнEы•\.‡ЏПўЏ^НZћюэыыk ‡C‚QСѓМѕЛ рљемb–eqtt„h4ŠfГЙ’kњ‰oТ2M§~пўyйlЙ\йlvщ/ улoПХызЏзъє’;Ђб(вщ4вщ4bБивЉT*A’$TЋе@‡&6цМkš†vЛvЛmХurЙrЙмТўЯѓјђЫ/QЉT№ў§ћЗx1Іг)Іг)Z­xžG:ЖbX‹Ў1ІгiœЁRЉ6ќˆY!Бn§~•Jщt>D2™є|-†aprr‚D"wяоЊW“€oЇгЫВШчѓ(‹ љ‡бhgggИИИР`0№ЁЕЫHчНпяуХ‹xѕъеТїbБˆЏОњ*АNНahЕZxљђ%Z­жB€у8œœœ`wwз‡.G …Eшt:ј§їпq~~ОSNfSAFзuМџ/_ОФѕѕЕчˆ;У08<<\ШКћ‰oТ"І>NC’ЄЅ,GЋеТяПџŽ‹‹ Я7>—Ыс‹/ОXјНнˆХb–c.ТТЮЙІiЈзыx§њЕчЁa<|ја6ƒdјцcё<'Ož|ђКЎc6›Yi2Н^:rndYЦГgЯ u[Ъх2FЃЎЏЏ=}2™ ŠХЂѕЗišаuŠЂX ^†sEQ№їпc…BњuЧсјјoоМ „_ЙVчу8H’I’P(`њ§ОхавЄШВŒчЯŸуйГgžъЅ>~ќ“ЩЃбh™р У0рy<Я#ЃT*a6›Y““сpшjuMгФее&“ Ъх2ЕŒFЃ8::BЅRYХGYŠњX,Ы"›Этєє?ќ№?~LeЮEСџћ_Длmъїт8ЮГЅ[Ђ("ŸЯ[ЋЙ\ŽJ,нnчччžмгщt –ЙуМ3 ƒbБˆяПџЧЧЧЎSУ0№з_стт‚њ=Ђб(ž>}КВˆџ"ˆЂˆrЙŒ'Ož “ЩИ><уЭ›7ž,mЉTкјђO`„E  ?ќ№ЪхВkБбhрќќœњњ$FЖiHУйй™ыŒNUUМ{їЮ“ИЪхђFЎ',Щ`јњыЏ]‡ЧVЋ…ЋЋ+ъkяяя#‹-лФ•‹Хprr‚RЉфј<У0pqqA=,’К.юњ!‘Hр›oОБвxэИИИ ^#dGGG+hнj`{{{8::rДаЊЊЂRЉP‡\RЉдЦ„МА€[ПфЋЏОrьеІiтѕыз˜L&TзЬхr *fГY<~ќиq?цx<Цхх%ѕ5їїїWб4Яј&,У0аыѕ0 iквзcY=ТёёБэs4MУЋWЏЈccЋ№ЕІг)†У!EYIќH’$œ9енn?~ЄК^<Їš$,‚“хє-ŽЅiўќѓOыo–e‹ХЌ †x<Оаu Њ*ъѕњН“YдГgЯ\Џ•NЇ‘Эfбыѕj pћ%wЛ]ыožч‘H$Ќ,†EвxžЧЩЩ оМycл{џў=$IЂВК{{{шїћ+н ЁЊЊуѕж6†сpˆZ­†?ўјПўњ+ЊеъBжьшш;;;Ж“€+эЕV‰ІiИЙЙA­VУŸў‰Зoп:цЅйСѓ<Žm}.г4QЏзЉФFя—W4Msu96цc)Š‚zНŽп~ћ ѕzнѓ0т6\TЋUЊ›žH$Яч=Н7-Іib8ЂRЉрќќмѓІI’P.—mW…Кэээ­ЄЦ„ІiЧЎїvуЮЛІiЈVЋјэЗп< I<ЯущгЇЖCЭx<ІіCќ\Є&ŒF#М}ћ•JХ“•ЮfГŽ“–fГIе)AX:Н†VT@„E˜ЭfxљђЅЇxT,УщщЉэуЕZъІгњ*Ћ пяуќќœzі мFвэкG2qiXf8є"* @Тn‡2lаљ|оіІ+ŠBНё —ЫQЗsYEСљљ9ЕяХ0Œcи еjQЭ„%IZЈД”WQЁеjсЏПўЂ~О“^ЏзЉnњ:…мNf*• ЕИbБ˜mи@зuДZ-ЊыИšяВˆЈ€€ ИйUЋUЊчf2л›ЎЊ*>|јрzX,Ж‘ЕЕjЕJ=,юээй. Злm*+ŸNЇЉлІЊъBЂ6 Ќh4Šd2I•QZЏзЉ§'ЋE;sZ•еb†ZЈd ЦЁw †Y–]Џ‘L&Љf‡ŠЂ,,*`M‰~dГeЁPј$j4ЁZ­~`МЫљљ9‰„эIž„d2‰\.wЏˆdY†ІiЎСЪ\.чiђp—X,†УУУOіъКY–бh4lХЃ( .//WЅRЩЖ,ЫЎQvВеЮn]•йМlЭ.п-V,Уwп}‡ƒƒƒ%йХуqќч?џСЃGl_ojЕе{йЅђšІщ(^ТЂ‘rрvWауЧЧ?Ў8ŽC6›ХгЇOgž$Лд Qm–iЃыvУЁišЧ+)чЋА†С“'O\­MЉTrœѕДлmЊ›žЭfmЭ<ЭpШ0ЬBУa2™ФўўОc!Яѓ8::r.э&[;aGлT*ѕЏЖ†БВu]РgaRЏ Кэ2Ёqф9ŽГ zН•sыuС–aЧшј<<Яу№№аіёбhD5KtrРi^Яѓќ']г4 ‡У•–„ђUX^r,Ы:о0’)с†ХбuъІ{z ЙMїiV DQД]ЮЂ _ˆЂhљSЃбhх}­ѓю5ƒС-)f8s3ЭMї@єš‰ъTYѕpdз Їг)еы9ŽУx<і­іƒЏТђКшщ‚ –“sKу”zж" ЛNЏ1M“:l`‡[њВaаu}eўд}јšшчЕю‚›ƒ>ЉФaghz'ЫВžf†^?ЃišЎQЫъфкн#г4ЁifГйЪъvйсЋEгѓМ>Ÿ&ЏнЮъаNЃНX­Щdт)х‡&шH3ц8ЮvzŸХ2 ГйЬВR~GуЋАjЕѕЎ’fГIхœ/3œљ!,Rдƒг4бh4\ŸЇišЋXЩŽkЛзЯП'9ve^а[-,UUёіэ[з›4Ј7žвˆУn˜ љТя7НнnS _Эf“zшЄщvЛК‰ˆH ‰ћТ[-,ржс~ўќЙ­yo4xётu eYœЦЯZфІW*4{…;›Э№юн;ъ `9a)Šbe9ћЧ/жВV8ёќљsФb1$“IˆЂˆсpИаЩ_Усаv#СщšWWWЎ`-вnЗбэv!IbБ˜5YффЏNЇукŽЛŸг4M(Š‚ЩdB%?K ЌЕкЬx<^њLœЩdBNs~Wжuнъ4Ы@ГЖ9ЊЊ˜NЇ–ХєВїаQƒ4dq УРd2ё5&ЕЁАЖrРЈЂ(<а)ж–A‚œѓУ^ …Е%xдЊЖђћM(Ќ€є!ЯŽPX…,См˜o ЁАЉ,НэчD‡Т $ырs996ж†! ФA‹C-‹oТbY™LЦJ(г4ЭїфВM‰DРѓМ•ЧЃ‡…eЗу…ЌКЁ‘œы ц†(ŠїІ`›І У0,ЁЭNMгЖв!їТк‡Тљ“€лН…Й\ЊЊb4a4-Дh4†Б‚MгДN\Uгщ4Ы0Ћ$0>– V ВЧќlC@p]з-Ћ|ЗƒD"D"Єгikсx2™l§,№.ж<,Ы"™L"™LZ‡dvЛн@ћ#†aXУ;mG‚ ™LBг4єћ}OuГ‚L …5У0Шd2VНкЇы€dhВ,Лt›xžЗ\‚~ППіCгWMр…E`Y;;;HЇгшvЛ+ЏLqШ5MƒЊЊаuЧ­єœ@RвQQєћ§­"ЗFXŽуЯч‘Щdаэv=яђ™СЮЯbз%цH$‚BЁ€ЩdY–З.pКuТ"‚€bБˆl6‹fГЙ’žMRRц…ДiШљŽУсњH— рЋАEЯѓ`YжЗќjQёрСДZ-ЯщРѓ;‚‰eђ ў:эѓ[‰D‚  гщЦЧtТ7aщКnх]“иЧqV ‹WБ#—eYЋ ™SЎјќЬv+˜$$BкСqœѕ/ёП"‘ШJD‰DP,q}}јЁq-C!YТИяfDЃQФуqФуёЅœ`щEЭfг™ў†сЛDоgžС`†aF!IЂбшR…ќ9ŽCЁP@Зл thbу>жt:Хt:EЇг ˆХbHЅRŽYˆHШ,ќnšІхм_^^ІW“z D‘H’$§Ћњ-ЄЩВьыфe6.ЌyHRЏзC2™ФЮЮŽЕР;/7Ы‰Dp||ŒFЃсћст‹ ( E,ЫHЅR ,•JAлšЄ›фaЭ7Žхўйишіяќ—~WДПƒšЭ&2™ ђљМg_Œу8”Ыe\^^R\Р­хНЙЙС`0АцI’ЯчбnЗ%.лo‹ьЊн$ІiЂзысцц;;;иннѕД-œaЂRЉfXМ]збыѕ0‘JЅ\kЖоEEd2™ЅŽЧ[5О …ФbЈЊjMЩIФz:zšк›І‰NЇƒ~Пo•ЛікŽ‹‹ _ІщЄT8 WЬTНŠYUUt:H’„OУc<‡ЊЊKяР^Оцc‘ро]HйчС`€С`@§hš†Z­†RЉ„l6Kн–H$‚§§}ЊB^qZв!yX“ЩФг.›Щd‚?"—Ыyr2™ŒЕElгlФy'ѕIуё8JЅІг)ƒUƒišh6›˜NЇ(•JдН:•JYОШКр8ЮњœФg%EBмPUе——0L.—УЧ7žыˆГtЂб(ђљ<=z„нн]Њ8OЏзC­VѓtN ѓbСsЙ …•X У ЎqO`YЙ\ЮзUЊvlєняРВ, …NOOЉ|ŒёxŒ‹‹ OІџрр`Ѕй‹ Š"ђљ<ђљсКё-Žeš&ƒСПўŸ˜чD"D"сљ‹хy<@ЕZНїЦ’Zъ'''ЎЫ?Чaww—ъ`$;ШŠТ]DQДReьЊ;‘H$ЌН–їAБi|Хx<ŽС`АжŒиЕлH]зqssƒFЃwяо-Д2/Iіііlз4 зззTз"Ћf6›A–eДZ-\__/”:ЩdУДGС1 ГіЩЪF},Mг№сУќ§їпžІвРэMwђ‘Кн.U‚ј5~2NёёуGt:O]’wegyЩžKbБиB–sQсМЯf3\]]йрЗЃX,кЦjLгЄ^ОЩfГОг'L&ДZ-O!Žу#щуё˜z–ИЮb „Eeеj•њF1 у†ИЙЙЁ‚†q=+qUѓЉНXhQEA›EъѕЯe”А€лaутт‚:Ÿ[лLг4ЉѓuЧ{ƒѕЬpаж~`YvmЫYpы{еыujЫх6e™jЛz"‘X{Рt2™PЧн†q?­\—е ЄА€ФEуsё<яшШгlєdYжѓ1МЋ€фЅбH$l}ARwЫ ЏйЉ‹В6aq‡T*…BЁ€§§}фr9з/r:RŸш”ЖLћХ­b8ёxйl™LБXЬub@[Ф-иIsљкd~В–DПd2‰ННН{?й4aзлdYFПпwУЂ!їЭI:Дл0L&=­7ЮCЊтиUїыїћŽyUН^*q1C–х{уW“Щ„j"Iug[п-V6›Хƒl{I2™t]ІЁнтdqh’хAXШa…BС6єADч”NMN ЃСщЬkзa~–ЏТEХbбѕy<Я;FвЩ^C7ЂбЈmаЯсьяs#;~ЉƒС€JN~Эp‰D|_˜іѕъљ|žњ$“IGŸ‹vEпNД5?Н:ЗЄњ -NCКaTРЉmСЖ­>Кзы—фє|MгЈ†Še‡CЏŽ­з/HзМ27H-ˆћ жжZ,–e=пtЗр0œfaДГ&/,Вўцє]зЉтwvTдqУя%,п„E*НxСэ† W'оЉ7гмpžч=JIEq{ ЭЊƒSЇЅiгж  7ЫДЯзuъІлY/)НДxнэLгсhю›Si|б­–—…VMгЈŠwаlѕВЮhSVМ ‡vuПь ёЁhЎЧ0Œ­e§ь-жЭЭ ulІйlRнксlбзо§&кdERЫн RїЫ ;q|іТ€ЋЋ+Gq†fГIgZFXЄxэЂЏЗCUUtЛ]G1‚Дй Ыˆ#Тђ}I‡д"Эd2HЇгˆFЃр8Гй “ЩэvлSк.0œ,ŽІiЎТYd-ўHЅRˆD"С:vw:b8zJСжuнеr.#,ђzПђрзVфццЦЪ2Xц$‡сpˆѓѓsЧч8}ЕZЭuжЗhлH!5ржZfGRЗл]ИŠЂ йlКО‡Ÿ›+6Rmf™:UДУ™ыкЉВluНekymКF}`ѓБBЖ›PX!О +ФBa…јB(Ќ_…т ЁАB|!Vˆ/„Т ё…PX!О +ФBa…јB(Ќ_…т Жi3’$сЇŸ~Zg[BЖ Ї} ЖТbYvЃGf„l7сPт ŸXЌ §В]м-nЧч„ъЯ†p( ё…PX!О№lћ6z}YЊIENDЎB`‚gpodder-3.9.0/share/gpodder/images/podcast-1.png0000644000016000001710000001564312654461624022600 0ustar jenkinsjenkins00000000000000‰PNG  IHDR––<qтsBIT|dˆ pHYs3ч3чOНМГtEXtSoftwarewww.inkscape.org›ю<tEXtTitlegPodder podcast cover artуЂKS$tEXtAuthorThomas Perl щ>itEXtCreation Time2010-02-24XEЊЁIDATxœэ[pз™ЧнгsIƒdц&c ƒ1Цм’Ч& ЧВ“­ьfНыѕfэьVх)yЬCv_6•кѕzЋœЄRI,ЏљЖ;ФkЦ@Т12qБнf4Зž™юо‡ž3=H3н3#ЉUS=нчœaў:—я|пwMг(•A РРb hЩќЌ/Й+.—2?ћРЛšІ–ZИPЌА:С ьі_”к›Њр №2аМбЉiЉb ™ЖА:A~ ,/ІR›C№#рљЮi eZТъ„РO€ЛovЏ[’ЈuЛЉqЛбЕhS-hšЦ˜,–eфtz*|ќАSго˜jSV‡ ј€ч€Ž‰о—D‘Ж†к›šh_ДˆКšмn7— бс˜j[lЪˆЊ(ЈЉВ,ŠDш>žžЮ ‘V'buлЉiБ›•SauТbр%`ёНцкZИэ6ж._NM}=žК:NчЭ?•MеЁІRФC!Ц†‡9озЧO>сr8<б­'€=šжЃђn(ЌAи ќ˜Ÿ{Ноыeїw№ХЛюЂІЉ Q’ІџIlЊ5fl`€ЗOžфЕ?f87оrизЉi‡'+cRaeDѕ&рЮНО}љrйИ‘`K —ЋДO`Sе(Щ$Ѓ—.ёТ‘#Мезg|[vL&Ў …•ўо#ЇЇ’D‘o­YУŽћюУза0aC4M#)Ы$“I} WUTUle6ц":ˆЂˆшpрrЙpн`‘тЭЃGљЭ‰ЦљзU`§DУbА2ѕУфЬЉ.џДy3ЋзЎХхїTœ”ebб(r"W›ђ#.З €Ыэ.x?‰pђФ ўу№a"Щdю['€ЭЦ Н8AЯ‘#*IљоІMЌНїоQЅR)†$лЂšСhš†œHŒŸЉTО]дАv§zОЗi’˜'›5шšЩ#яŽŒ*ЯЄ№­5kИkэк‚љT,eјк5’В\к'ВЉ:’ВЬаеЋФЂбМы’лЭъЕkyьЎЛŒtdД3ЮИА2ѕŸфОЙ}љrЖoи€+Ш+%<:JxtдюЁf9йя9w РŽ иОМ`гх'9“ДмыQr,ъѕ^/пмАџ-ЗTfTВЭь%…ђЎљйwЯ=д{НЙ—яFзVfCљЧЙw=tћэ[Zђ+‰DlQЭAb‘ёXОБ}^k+Ў\iМѕЧ-їX;ЩйPnЎ­ek{;’Ч3ў„’N(зfюEЩйWtњ|lљТhЎ­ЭНm9К–Ц…Е7їн+VPлмœW№иФц}›9‚ІiЈknцўТЙж^1уЄїѕьUIYЛlYоž_*™$QhжЗ™c$тqв9fЩуaЭ­ЗЭ_я1ыљ9юЄзжа@m}ОгЇ=ЏВЩbœkе64а–ПГи ЂЛгод„ЇЎ.яa9‘АІ•63Ž„A žК:к›šŒЗ= ЂћЈsGSSоЄ=™Lъћ}66ш‹Имсахїs›С$,бЦ ŒЁщTQ.Я6ГуvOАІЦxKГˆMшюФžœо tOC›\Œ#˜ЧэЦя“з"‘гcеКнˆPЅ„aаЛiŽЦF4YFK&ѕWіїœkj$‚ йю53cgуp:ЉuЛЙvнЮе,‘їWуvјЈk%KZДWЁuvbвi”сa”ЁЁќзр šНxЈ*Œ=–(IдИн\Лn=ЈЯыП&tє*W/"I8цЯЧ1~С[Z4Š24DътEвчЮ‘ъяGЫї ВЉ0FэЬguСяGђћ‘/†M›@UIў9ЉsчH;GКПЭ^dT3BXˆ"RK RK оЭ›AQH_ОЌ ­ЏTџ HlЪРЬ–‡iб"ЄE‹№nнŠ::Š|ъrw7Ър`Ѕ[7'™Т2 ƒxЗlСЛe щЫ—‘{zHž:…joM•Y)Ќ\ЄцfЄцfќ;w’:{ЙЛ›doЏ='ØY/ЌqDчŠ8WЌ@K$HМџ>‰wпЕ{1‹˜;ТЪA№xєЁђОћH?NќШTƒoЗMiЬIa#IxжЏЧГnђЉSФџќg”ЋW+нЊYСмVQФНz5юіv’gЮчв/VКU3[XЙЎлnУuлmЄЮž%zрЪЕk•nеŒdЂHhРЙlС'ŸФПkТ!ч67ЦжE<їнG№ЉЇpFџкм[XS@ ьйCну#-\XщцЬlaMЉЕ•КПџ{ќЛw#фGлА…5]ЯКuЬ{њi\Зп^щжT-ЖАŠD№zЉщшРџ•Џ и | А…U"ž{яЅюёЧqдлpфbЉ+qє(ЉO?EpЛ\.§хv_џЗпЃО~Ц/ч RїФD_{ љдЉJ7Ї*АTXЉѓчI?гћФ@GCУјKlhРQ_ЃЁfШс‚лM`п>œK–§УаІ–˜f2…8ˆЊАМЋ‘j$R BСуСyы­8—,СЙd‰ю_хBsп}7Rk+c/О8;­іŠ‚‹С$ ŽГT…А&CK$Hіі’ьэ@єљВB[КGanUр˜?ŸКПћ;Ц^xTaы™‹Њъ^ † QеТ2ЂЦb$?ў˜фЧ 55сnoЧuчˆ…бИEpЙЈ}ь1"/ПŒмгSщц”ŽІЁ†BSтg”АŒЄH =xчвЅИWЏЦuћэеrАУA`я^DПŸјбЃ•nMёdE5Л-Ќq4дйГЄЮžEp:q­\‰gУ$CЊЫŠ јvэBˆ#ѕйgHЭЭxЗlбУ§+ИЊtпuЂпЯи /T0G Ђ‚9byO_ОЬXg'ЃџљŸШннэ1œ+VPћз`ШъSU”(*˜#ТЪЂ\ЛFЄЋ‹аГЯ’Ў`ДДдвBэc!Tуq|Š‚:2RrnŒ9%Ќ,щ+W§ќчD~џ{дББŠДAZ̘РУW—С7™D6e˜ž“ТЪ"їє0њГŸџѓŸЁ ц\+WиНЛьѕN„‹ЁŒŒ˜6M˜гТа’Ib2њЬ3ЄЮž-{§юЛяЦЗm[йы'cN0ЛчЖtьйƒѓж[ѓГјe^J8Œ28ˆ:4dZї[ Ър с_§ ЯНїтПџ~(уќЧЛu+j$BтНїЪV'щєДЌщгСвџ=СуA o~ЃІЁ†УzП+WєtDчЯW$ЙZти1в§§~XїЎ(ўЏ|5%љ—П”Ѕ>M–QУaЫVШеБ,ФК:ФК:œЫ–сйИQOЎ–ЭyѕйgЄ/\(›+Jz`€аГЯтпНw{{YъDЈйЛ—p,Fъм9ыъб4ДX 5БЎЊEX!ŠH­­H­­xЗlAKЅHѕіъ)‰њњ,ЗEiЩ$‘пџžдйГј|А<ћ’DЭ#0њЬ3zob6ЊŠO{{ІЊWXЇзwтКѓNДX љЃ{z,…—Ož$}щ5>Z–ЁQ№zЉйЗа/~anўзtZ7z–iѕ;#W…‚Я‡g§zъœргOуЙчKЪр счž#}щ’euф"-^ŒяK_2­<-зHe4ЉЬHaхтЈЏЧџаCџљŸёnоl™џМ‹ўх/I}њЉ%хёnнŠsЩ’в IЇQGFєaЕЬ9єgМАВˆО;˜ї/џ‚oл6DŸЯє:ДTŠ№oЋя7Z јЦ7Šћš†‰шНT…в–Яae<М[ЗќўїёnмЂЩQU‰tuщжz‹kjьй3­g4YFв3V№ЄY'Ќ,‚лoчN‚O>‰sщRгЫ‰Дh‘9jšnЅŸBдw)јОќeAа‡Н*?mN @ЌЋЃюoўяж­І8лiŠТиo‹rхŠ ­3ЎЊ"8xЗmЋКao"цЌАE|лЖщnТ†@‹A“eТПўЕyћ|šІЏ№вi§ЇІсНїов Їe`n +ƒГ­кя|Ч”,}ъи‘п§ЎДMђ\AЫ„ъsiž[XЄжVъОћ]Фкк’ЫJѕїћгŸІџр•ƒsб"М›6•аBыБ…•ƒЃБQOЂжиXrYёwо!ѕйgSЛYUu1нDPЙјwяFєћKhЁЕX*Ќф'ŸО]ЛJkЃ…Xъ%?Ž|ќxо5СуAЌЉ9цЭУЙb…žцКJц ‚зKэЗОEшч?G*К5aЌЋ‹кoћњgгДыЂ*quчнИ‘иыЏWх fewєг ”D"?)йЁCˆ55њq#+WъЋž s ~?ЕѕW„ž{ЎЄ–T_ёУ‡ѕ9QVPfЕбхТћХ/нПпД2ЭЂjцXъи‰> ќы_3ќЏџЪXg'ђЩ“hБXХк$ƒд~ћлХYщ5Mпr ‡‰ќЯџАФкЛukѕЄmЪЁj„•‹–L’<}šШK/1ќoџЦиѓЯWьИ7Ч‚г ‡OЅаЦЦєˆЃ‘Дx-•"ђт‹–ДOєљєр“*Ѓ*…•‡І‘ьэeє™gˆtuUфРJiёb{їN~C:­;ж Ђ ы9: Ў+ЩгЇ-ЫьчлЖ Њ,з|ѕ +‹І!ww3ђГŸщY‰Ыс_§jъц‰‰„”бM —оK:SююЖ$Fбйж†8…ьх`ж є#VFŸ}e` №Э„4}ћJŠaŒZAYг]Џ‹eV MCbє™gєиПЩ†5хuuјx шчх“'QKn‡[XХЂЊК2‘а—ћс0ъШˆnCКzU7L^НJшПў‹шkЏ™&Є‰№~щK8,(юaUЕd…(-\XљэЋGXЦЁ*+žHDЯ87<ŒrэšўжЏE"Кe;™,œИkбџц7–5Yp8Јљц7‹~>qьJ(db‹tђьmтІћj6—’ ‚ОдЮ}Сѕп;ї™—–ѓћ Џ[@ти1ЄІ&|лЗ[RОЋ­ їкЕE™<4E!ўЧ?оиЊ_юuыєƒ *шSaiЉZ<ЎџnysЌ!ђЪ+HЭЭ–сјкзOž,j“9~фО]ЛLЭ5сЈЋУежFђ“OL+sКTЯPh%šFшП mбљŽњњЂЗT4YFў№C“[žѕыM/s:Ь aЁRCџ§пЈmљvь(њйФћя›иїъе=}Ю @Йr…Б_ўв’Й‡Дp!Ў"ЗTRчЮ•фЉ:‚лtы­І–9*ž*вБ`~Ю`[b0ˆXW‡(с0ъш(ЉO?еSB^ОlJ}ђGнПџC™R^.Оћя/:д>ёс‡јwю4Е=ЎЖЖŠфЎ‡ ЫЕr%ўЏ~ч$aюRc#46тjkУџрƒЄ?џœШЋЏ’ќшЃ’ыŽОёЮeЫLŸЬЛ–-УЙdIQYяПoКАœ+VРІ–9UЪ>Š~?СќG‚пћоЄЂšiсB‚OШ'N˜кзŠІ—9Ъ",СэІю‰'гЪ=НЬЂ•Ё!Kr‰ЛЌdу­]pнђў0~Чхp˜УЇO#чЌEIЂaй2{Hœ‹ѕK—цH…8rц —ѓ}зњаЕЄ ЋSгRРrяиплЫШ… yЩі]uШЕdSY‚­­ИsSh#/ВПЗзxы2ZЪл+|Oл;гuт!Cј–џ–[Јkm­ЊгmЌA‚‹ЬЏG/^фЅ“'Юо•сCt 9Тъдw˜{ч[}}:q‚ЈСн"0>ЗЌXaЯЙf1Ђ$qK[~C ktp?8С[…sЋvцьDчy7tjк@gюЕчЛЛщющЩ›oИkjXАj ,MiS^AРпиШ‚;юШГАCfигУѓ…—э\/Чшюа!>р00žD3рrё6АКНпyк•d’ШЕk$FGI[tК–Е8\.МС ўЦFЄ ŽK’-ДjCгPвiдTŠ„,326FяеЋє pfhШ8ЪЅј[уD}"І$Ќ,‚Ај pг“Ен’D­лMлmoUšІ1&Ы„eйшљ9ЂлЉоИщІ%,€]%?ІЪl3гшCпъ{ОsšB™ЖАВt‚и ьО”7-ЏU\AwЃъоШю§M—Ђ…•K‡ ˆРр`1а Дd~ж—\ ЃЧ;\ЪќьGї&~7уЃWџиіVвчW>xIENDЎB`‚gpodder-3.9.0/share/gpodder/images/podcast-0.png0000644000016000001710000001634712654461624022601 0ustar jenkinsjenkins00000000000000‰PNG  IHDR––<qтsBIT|dˆ pHYs3ч3чOНМГtEXtSoftwarewww.inkscape.org›ю<tEXtTitlegPodder podcast cover artуЂKS$tEXtAuthorThomas Perl щ>itEXtCreation Time2010-02-24XEЊхIDATxœэipч™ч7№&E‘Hнж}й–%г‡|Хй•хLboЭ8‰]™I*Ч5›§0ЩЦUћХ[“IеЄv“ЩЌыЯŒЌЏI&ы(vlњeЩ:,Щ’Mр)о$юЃнћ €ЄHƒTџЊT$Кп~њEёЏїxоч}^Ђ(ф‹ЛCа7ї­@А2љГ:яh‚q`шOўьоŽz:%9_уК\…хюŒРнР!р аoe4Ъ‚!рuрUрАЇSs1ВhaЙ;№0№А:——j,.O/z:ЅE eQТrww?vЮWжhpUлЉЉЏDgа-ІNF‰+ŒLт "FЅ…%>їы%р1OЇšЯіМТrw­РkРіь{Ћ76ѓеo™ѕk7bЗ8чџ&eO0туѓЎ <џЬoИxЎwЖ"Ї€<RЯЕь\SXюa№2PŸ~НЁЅ†o}яvlнA/,ОіeO\ŽsъЬ1žљЩ іŒfпОфщ”оŸыљ9…•е›@Fіѕя>ШСƒ‡0 І9+%+211‚(E‰I1PСЅЁЁ":Fƒ “бŒI0Ѓзц,*J1^§~љГWГoEs‰kVa%ЛПcЄЕT‚бРќ8ЛЖп<‹h’ пуўa"брќ_NЃl0-T9ыЉЊЈЧiЏFЇ›9й:vђїЗ?Gущ—‡=Гu‹3„•ЈПOꘌКЮЩS?§Эю/ѓ^Ѕwј’&Іe‚еlЇЙ~ 5ЎЦїzЏ^цЩ'ўž‰Q_њхSРОь§lТz‘ДйŸ`4№гчžš!Њ`ФЧхОs#/бX&и­NкšnРaue\яє№ФзžЬnЙ^ђtJЇ_аЇHњЉ2\ ?ќёу3D5цфмх4Q-c‚aŸ^ўˆбЩЋз›нќз?ž]ќЁЄvІ˜VвЃўЃє›>ёрŒ1UџШ%КzO#ЫŠеX†ШŠЬХОOѕd\пН§fОіјЁьт?JjШlБ&ЭЃофЎурС3ž™ wшЂJежX*є ~ЦИo(укЂЁ9#О`' Ia%”ŸJ/ѕэџђ5ƒqъs ьхJџ9ѕk­Б$Ииw†`Ф?ѕй(˜љцїЩ.іTRKS-жнЄ-(oижЮ–MгЫ —ћЯ!+yGSh,Qd9>ЃaйЙmэWІ_ZMBKSТЪш0Пњ­/ЃзMї’Ѓ„вдЊq}{3КDƒ^рЋпњrvБCњdоСдUСh`нъѕSЅEІoXWi$шъBaкEЕ~нF B†sс ЛCаЇ"?Ї‚єінЕГЩ6UЪ'*F _c%A8Фœ˜њьАКиЕџ†є" РMzсФStмЕ7Уа„oЄpЕдX’Lј35qћ=ЗdЙWO"F} w›;ЫШАъгXкLј25бОК-ЛHЋžФ†‡)ьVЧдяR\$ІuƒYDbaв—эіŠь"MzЛi€D8БйdКЋ‰JcvD):ѕЩbВa4gФх­HkБъ+3їbiчBKХflF’›ўЇФ2?Ы1D9ЌљШ–11‚ЩhР$XpИ,L RЗ›ві§UзeЎd‹R,Џ—ЏЌИ&ЧњyЫЩŠLPœ УУ% Žт‹‡ѓЊƒFaˆХЇЕЁгщЈЊuІ Ћ:Ѓ§в2ќECЏгSaЊЁТTУŠЌ{бx()ИQЦ#}Œ„К ŠГкб("YсVњЌXeАn6и0[mдX[pЛvНŒ„=Œ†К {‰озR#›ВжlиŒ.VЗБЪЙ € 8ЩHШУHиУHш )0BГ$…•нX‰нЕЗk;ŠЂ0іаућ„Р$9ПqЂFn, aЅЃгщЈЗЕQok#.пЯерчєјЮ0КЄЭ<‹ШВV:Н‘цŠM4Wl"бяџ”пЦ#}ЅЎкВgY +ГСF{хnк+wˆг5q„nпidE Б.Ѕё/”‡Љš _фОЖ'X[ЕA?їц[мИnZЌйАЖднХњъ§\ž<ЦХЩˆХчЭwЁБЎkaЅ0,lЈЙ•5U7гэ;Iзј‡„$Э7–šАвєFVWоH›k=ОO87њ'Ђqm‡w.hТšНЮ€лЕƒ&ЧFЮНЭхЩусИѓs]оŠЩ`a[§}мЙъЏЈБЖ”К:K MX РenрЖ–Gйнx‹р˜џ ­+\ ­Ю-ЌpЌуќи;\š<†ЂyђчDkБ‰Qofkн=h§&•ц™Љ~4hТЪЇЙŽлZcuхžRWЅ,б„•РЖњћИЙщ!ŒKЉЋSVtŒеы?‹?6ŠQoFа›’?SŸЭ;&ƒu~CeN“c=•цorl№eЦТЫ[тЪЕѓУTX§ўOщїzЭ2&ƒ‡Б‡Љš SMђїЦ* zу5Ÿ-'lFЗ6ѓcoѓйјœЩ„—aб;яФЅфГТX<ЬxМoжP—Й:ы*jmnj­Ћ0•ywЃзщйT{'uV7Ч_]–^ћА@”чпНUra] ototˆ‹“ЁC—šЭMЭMЕЃО Ѕb ыЊoЁТT[в:щt:Жеп‹UЈрьш›%­Ыbу‹oЉR,;aЅ™nпiК}Їirl`}ѕ>Њ,Mѓ?X@жUп‚YАsbшЗeПЮ‹GKЙчё_ЖТJ'5ЋГЙY_НŸzлŒ|NEc•sfƒЃПžзЩX*ђ\gK:#!яѕ§Šїњ~…?6уЈДЂбh_У+ў х1ЩH'"ѓ\gТJ1КТ›нЯpvфЭ’э”^сXЧŽ†џP’wЯ†Ђ(ХIеœКзЅА 1ћ|т{ўЉdЎЗk;›jя(ЩЛг‰+q\еџdз­АR„%?]}™wћžЧ-~"пѕећKz#ЦЃcЊoм-шр}sэ]TYV$ГіE“ќЂˆr”АфK$X‹#ЪЅOI9ђ№VЯ/иT{€5•7еЩКЕю^ЂёPQ[NˆJЂкGYPa9Lедймѓ–‹JAќтиош0Ѓсю’ЌБЩŠЬ™‘УŒ„<ьj<ˆй`›џ!ащtьn|€h<ФHшJСп'+2aЩWаёeYИЬ‚Г`Їж:<ЇхМъЦ+^75ьт­ю_АЛёAъlЋŠђNНЮРЭM_сноч˜Œь=qY"$M<ѓNYk6L+++6ВВb#)@Ÿџ=ў3LFЎЮѓtў„%?яѕ=Я†š6TпZ”ЎбЈ7ГwхтЭюg ’{5сŸђCіH.™СЛEpАІъ&юl§Kюvџ5ЊoХnЌ*ш;ЮНУЛ}Я•Š[e*ие№€Њ6џQўЉтlМ]2ТJЇТTУ ЕЗsoлумжђ(MŽ }пhИ›З{Ÿ%+NRнŽЕЌЉКI[qE"›(zіщ%)ЌtjЌ-ммєюr›VчVtКТ|Ѕ 8С;НЯ2Q„n`sэ*-й9ЄŽЂ(„Ѕи8qETБf cЩ +…гTЫюЦИз§8Ћ+ї$№/ђnпs /Ћn;НЮР_Ъ)wW,С/Ž•4%гВV ›бХЖњћИЗэЛДTlQнО$Ч82№/єјЮЈn;‡Љšѕ_\pљИ'(N–|%žXvТJaьYqˆŽцЏс4зЋj[VdŽОЪчуGTЕ;-ЮЭSiЧчBQ"R€@lЌlВD/[aЅЈЕ­т@ы_БЕюе7_œ§#'ŽЊjs6Жеп7gАЂ(G ˆуѓ чЪВ€NЇgMеMмэўŽъ3ШOFў@o—bН‰Y‘rВл ‰оВLа{]+…EАssгWи^џUїОЦp—bjЌ-Д:ЗЂˆ™ђЧдFP›ыJX)к+ws{ы7T‹…—•8ќК K1›jя$*“1Sхa№К€Ы\Я­‰лЕ]{’хƒў!(NЊb/…BbВ—%Lz [ъюVе~ЁИn…‰dЖ;ў#ЛЊтXHояџgUМмŠ’”,K(JœT ЕЁf?•цмЇХтКVŠUЎmьmzƒ.џ$$иЧ_Ы83y1(Š‚ЌФ‘•LAЅаЃчЦІ/х]ЯBЃ +IЃ} ћ›Q%­в`А‹‹“‹sCL *žtnЮ-ЬFлjк\;ѓЌeaб„•FЕ™Ž–GБ љя >7њ&‘yЫeЖPзT:Л"”iR(ААЦТНŒ„<јЫШ#<NS-ЗЕ<†УT“—Y‘љшъЫsІќQ…И"Ѕ jqи'›kфUЧBRа@ПЎ‰#tML/{z3VЁ‹рР*8БьЦ*lkЪ"ЯB ›бЩў•СлНЯ‘ќ9л Šœњ7ЎHŒ‰фEЕLзbCЭ~ЮОU{В)jЉ$GёЧЂГn­47ВТБŽіѕTZJŸиftБхŸѓNя/ѓњУѕњЯQcmЁЭЕ39 WЯџdв[XW} чFпRЭІZ”Mhr*їељБNЌ‚sJduЖUшu†’дЩiЎgяЪ‡yПя…Em‡WHDAˆёHвПѕЏдYни•Њзё†šлИ0жYvлѕЫr№–|\ž<Юћ§/№лKџРЩЁп%cЕ‹O­ЕuСлс%Y$,љёGG ‰“ˆrIŽq|№Е‚дЯ*Tа^†)СЫRXщHr”+оќсЪ?rfфEБ…Фvјmѕ_˜ѕ^BL|БQ‚b"Xaц`МлwšЋС‹ЉпІк;Ъ.Dй +E\‘шš8ТW~Цgуя!ЩХ ЗmЏмEsХІD]d‰ˆРKŠ)Д ™нБЋ/#Я"К|qšjYхКvЬVБY2ТJ!ЪQЮў‰?xў‘Ы“Ч‹2Ђ( їРЖКћPe*ўiБяžŒraьн‚дqSэБ›+KNX)"R€SУПчАчq5аЅЊmEQPY‰—%dEDV$Н‘}Э‘зdтє№„‘$vЁдXširЌWнnЎ,YaЅŠјWЮuцЙ>—.$iЮЅ•:k+лыяЯЙОЂсФаПхќќЕиXs[AьцТ’VŠѓcяpєъoфсŸMHЪжшRlЊНƒŽu9зѕђфq|HАТБ‹PЁКн\X6Т‚DJШЗ{ž%(No,Mtk !ХsR6:рц_Щ9 UAсlœšzteГ8Н,„%+2’,‹G]сw—ў§ўѓiнZ2EЅЅHьЦЮgР|yђИъA˜Н–KFX ёФˆХУDЄ!бK 6Ž/:‚?щC K>Ђё AqœУнOѓщил­гцК9ч•8чЦўЄrƒx—ЙAuЛ‹хкТЪq0<Ї9˜б-%’В%–?bё0бx(™`5@PєтуЯ$aЩO4B”ЃФiЮгхEцјрk|tѕUПC:‚ЮШžцќќХ‰ЃD pS9ДZз$ˆrot8сеещ’онФЯDZŸдяКФx&!ŸДпхДп‹Я…ёwqYX_uKAьЗVlІЩБР…E?+Щ1ЮuВcЏ~ЎДЙvqrшї”rУХ‚КB…iПŽЌHФ1-эc„XВЕхФЂЋ$Чˆ'}?В"—LT)Ž]}…ЁPсђ-ьi<”ѓ’Ъgуя[Р1m‹СaЌЂСоЎЊЭХВdЦXљ +qощ§?,CbЧO‹3З<Бxї„Ъ5‚vзnеm.†ыBX№дџЉч#(ЅЯцМfˆЋX“Ћ ˜вi!\7ТєqЄџХ‚иЎЕЖвh_“гГУЁ+Du“К™ Vj--Њк\ %єKзh_ƒЭX‰Mp:Т’—шe0t‘^пй Їg>\ёž ЪВ’ЭHмПЙіƒ9…Ц(\ёž`‹Ъ1ь іЕŒ„ЛUЕЙPJ&Ќk ;ОHЃ}нЌУ^ЛбVhunсЦЦ ]цфаП3ЌТ ќфаoЉЕЕвh[З­tšыЉЖЌd<вПшg/OW]XŽ5œ§ЃЊ6JбЛBAofѓ#мпўŸY1‡ЈfЃСжЮ}ms{Ыcyя§SPјx№ѕМlЬХ†šŽœžѓF‡rфЕЈЗЕ•,ЌЛЈТВЋјBлДЛvцяиъмТ§э“w2ЕБp/нОOђВ1Ћœ[1шsлQ­і ^аЉЕ'O}6E–Upђ…і'ЈЪ#ak ЇЉŽћкО›їоП“УџŽЌВЭЈ7гšcŠЪnп)Uыф<ЁШ—ЂЫ ИЃѕи—j6-;wЖ~Ѓо’Г _t˜KъŸгм^™›)(NтSљХ†х,Ќэ їSkUъ[indwc~ЩіOМЁњжЉŽuXGNЯ/ЉZ—z›Л ЄчЃрТr˜ЊйP}kСьЏЎК1Џеќ8Щ…ёїTЌQ"#LЎqQЙЙ+цЦ Ј-вy@щ\X[ыюСPР™‰[ыюЩЫЦй‘7U_Џ[хЬ-ЁлPH§-b5%p”TX:О ЙжГiЉи”Ws9?іŽŠ5JxтsIўНЊГ\*Ї#_VН­ Г љІцCа›X‘чЕ‚ѕ:=ѕЖм" †Tю+ЬuЊк[Vњљƒ…&_7:ЌzK‘ыT_эq–ЫДЬZ,5˜-5в ѕњЯЊP“irъGњT­‡UЈШЫ-“ ЫFXjМЋзЇЎАjЌЭ9†сЉОпYфюА Т*цqfqr9Œ„=ЊЂGO­mбЯЩJœ@l\Еz8‹мTX!б[Hѓ™я’ђ—ЂШєљ?UЁ6гTšsK"ч‹ЋZbЯ *,ЕbЈŠљ.ЕЧYЙvAо˜КТrš–QW8јЌц3шїŸWХЮ@р3U—xrТPЛХZVcЌ 8СјRRч‹/6Њк96’U5ъ2зЉОWea™ vUэЭGС—tК&>,є+223ЋAPХCХsъЋ4DэГчЃТ:ЂКу1 шU=™YXђЉj/—n(ЊђiСАŒќX˜:|Ѕ`[VO §›ъa/jЯfs‰CSYеяЅG—sdknя+§ўѓœўНъvЯНЭ•lіTУu‘Žб[74зЉ9зЃˆнaбB“?9ЌъxЫу=Х‰СТdЦSЛ+Ьu9EŒЋ{тD1—uŠZxdр%&ЃCьj<ˆ>Чэ pzјџёЩШa •єBэЎ0з–b)ЗXEY=?іЃ!ЛWЂn‘ у‘~Ž ОІzXI6aЩ‡ЊeNrmБT>#Ї˜Ї…•dУъHИ›п_ўŸД:Зв^Й›&ћК9ƒт$Ed0аХя ЎxORŒд<В'bQЩїcЪqFІz‹•уX/JКХОЧї =ОO0шjЌ­иŒЎЉTXђ’МŒ†{TY`^,Ї‡пР"Ј#ЌёpnQ/M|ФXИG•:Њ/l_‹’чn€ФЉjlW“ЯTо`‘ нОгtћN—К9‘1+Tт™1@ЅLƒЃQоdkCŽgŸ] Sэушpfb2“Б№ёъKГqzмЈ( Ѓ.šq=0ЕJ<6ф%.O{{-šА4цРlДM§•ТМ3и=05ВЃ‘X(эaMX3бщt˜„щ+ !F3–Ÿњ3Z,€`hњ!С`Т’ІL ›й™Ьš ]3Iє@Ц|іЪхЬйY}eщв j”'ѕ•ЭŸ/vЭpXїш7вЏМs83ЖЉЁЊx{5–йЭлo|]ф =pJ]9ђж)ТбщX *G6syœ(ЅQzжJ*эгёeўаЇŽd„ GѕžNIІђ&Ц%™Я/NЧыt:жЎЬ-С…ЦђcmгŽŒЯ>ћ”И”сџ|нг)Щ)/зЋщwž{њ7ШђєБДUnœЖќВчi,}*эЕу+).ђмгџ7ЛиЋ0эy? Leќъ:лЭЉ3Ч3JovяХ /‹  ŒlrgžGєёЉЃt~5§в%ZJЫг)‰Р“щ%žўЩЏугЇ•VXЋитоW˜Zk”5:tlmлУ2b“"ќт'/d}2ЉЅŒЕТЉ8пСžQ^}%Г™kЈje}sщ,г(:tlhйM+гХ№Ъ+/32Бx‚„†€4ay:%ј~zЩчў:ЧNfКм 7АН§6­[М FvЌЙжњ з~ќ/ќгŒА№я'5€.ћфww‡№"№а”qЃŸ>їЭюŒrў№g=G№…ЦTљх…Ы^ЫцU{qX+3Ўї \тo§oHb<§ђKžNщсє Г ЫМLљЊjќїŸ§`†И'ц™xžЋ=3R$ _šKT0А`Њ[|Д1WŠе›љњ_?ФњЕБšs;‰AЃМˆФB|~ёЯ=§k>?у™­Ш)рйКПtцL шŸ%mƘŽAаsгm[ИѕюНЌ]ЛЛЭХdгZГ2'.';CЁ —Џ\цнУGјр­SйуЈt^ЫЈЯЦ‚„•Тн!м ќ˜ї<ЃY ІСEm}%:ƒЖ)ЃœPт2cУ^F‡&Г#?чт ?ес…ОcQТpw:рaр)@н#J5ЪK$–њ^Lw~.„E +…ЛC0w‡€ƒ@ю'%i”C$ТЈ^ЇжўKЮТJЧн!ш›€{V  X™ќYї 4 С8‰§§ЩŸ=$Ђ‰&cєђтџ„V‚TЫONГIENDЎB`‚gpodder-3.9.0/share/gpodder/examples/0000755000016000001710000000000012654461626020641 5ustar jenkinsjenkins00000000000000gpodder-3.9.0/share/gpodder/examples/hello_world.py0000644000016000001710000000320112654461624023517 0ustar jenkinsjenkins00000000000000 # Use a logger for debug output - this will be managed by gPodder import logging logger = logging.getLogger(__name__) # Provide some metadata that will be displayed in the gPodder GUI __title__ = 'Hello World Extension' __description__ = 'Explain in one sentence what this extension does.' __only_for__ = 'gtk, cli' __authors__ = 'Thomas Perl ' class gPodderExtension: # The extension will be instantiated the first time it's used # You can do some sanity checks here and raise an Exception if # you want to prevent the extension from being loaded.. def __init__(self, container): self.container = container # This function will be called when the extension is enabled or # loaded. This is when you want to create helper objects or hook # into various parts of gPodder. def on_load(self): logger.info('Extension is being loaded.') print '='*40 print 'container:', self.container print 'container.manager:', self.container.manager print 'container.config:', self.container.config print 'container.manager.core:', self.container.manager.core print 'container.manager.core.db:', self.container.manager.core.db print 'container.manager.core.config:', self.container.manager.core.config print 'container.manager.core.model:', self.container.manager.core.model print '='*40 # This function will be called when the extension is disabled or # when gPodder shuts down. You can use this to destroy/delete any # objects that you created in on_load(). def on_unload(self): logger.info('Extension is being unloaded.') gpodder-3.9.0/share/gpodder/examples/gpodder_mark_played.py0000644000016000001710000000216712654461624025213 0ustar jenkinsjenkins00000000000000#!/usr/bin/python # Example script that can be used as post-play extension in media players # # Set the configuration options "audio_played_dbus" and "video_played_dbus" # to True to let gPodder leave the played status untouched when playing # files in the media player. After playback has finished, call this script # with the filename of the played episodes as single argument. The episode # will be marked as played inside gPodder. # # Usage: gpodder_mark_played.py /path/to/episode.mp3 # (the gPodder GUI has to be running) # # Thomas Perl ; 2009-09-09 import sys import os if len(sys.argv) != 2: print >>sys.stderr, """ Usage: %s /path/to/episode.mp3 """ % (sys.argv[0],) sys.exit(1) filename = os.path.abspath(sys.argv[1]) import dbus import gpodder session_bus = dbus.SessionBus() proxy = session_bus.get_object(gpodder.dbus_bus_name, \ gpodder.dbus_gui_object_path) interface = dbus.Interface(proxy, gpodder.dbus_interface) if not interface.mark_episode_played(filename): print >>sys.stderr, 'Warning: Could not mark episode as played.' sys.exit(2) gpodder-3.9.0/share/gpodder/extensions/0000755000016000001710000000000012654461626021222 5ustar jenkinsjenkins00000000000000gpodder-3.9.0/share/gpodder/extensions/update_feeds_on_startup.py0000644000016000001710000000215112654461624026477 0ustar jenkinsjenkins00000000000000# -*- coding: utf-8 -*- # Starts episode update search on startup # # (c) 2012-10-13 Bernd Schlapsi # Released under the same license terms as gPodder itself. import gpodder import logging logger = logging.getLogger(__name__) _ = gpodder.gettext __title__ = _('Search for new episodes on startup') __description__ = _('Starts the search for new episodes on startup') __authors__ = 'Bernd Schlapsi ' __doc__ = 'http://wiki.gpodder.org/wiki/Extensions/SearchEpisodeOnStartup' __payment__ = 'https://flattr.com/submit/auto?user_id=BerndSch&url=http://wiki.gpodder.org/wiki/Extensions/SearchEpisodeOnStartup' __category__ = 'interface' __only_for__ = 'gtk' class gPodderExtension: def __init__(self, container): self.container = container self.config = self.container.config self.gpodder = None def on_ui_object_available(self, name, ui_object): if name == 'gpodder-gtk': self.gpodder = ui_object def on_ui_initialized(self, model, update_podcast_callback, download_episode_callback): self.gpodder.update_feed_cache() gpodder-3.9.0/share/gpodder/extensions/rockbox_coverart.py0000644000016000001710000000315312654461624025150 0ustar jenkinsjenkins00000000000000# Copies cover art to a file based device # # (c) 2014-04-10 Alex Mayer # Released under the same license terms as gPodder itself. import os import shutil # Use a logger for debug output - this will be managed by gPodder import logging logger = logging.getLogger(__name__) # Provide some metadata that will be displayed in the gPodder GUI __title__ = 'Rockbox Cover Art Sync' __description__ = 'Copy Cover Art To Rockboxed Media Player' __only_for__ = 'gtk, cli' __authors__ = 'Alex Mayer ' DefaultConfig = { "art_name_on_device": "cover.jpg" # The file name that will be used on the device for cover art } class gPodderExtension: def __init__(self, container): self.container = container self.config = self.container.config def on_episode_synced(self, device, episode): # check that we have the functions we need if hasattr(device, 'get_episode_folder_on_device'): # get the file and folder names we need episode_folder = os.path.dirname(episode.local_filename(False)) device_folder = device.get_episode_folder_on_device(episode) episode_art = os.path.join(episode_folder, "folder.jpg") device_art = os.path.join(device_folder, self.config.art_name_on_device) # make sure we have art to copy and it doesnt already exist if os.path.isfile(episode_art) and not os.path.isfile(device_art): logger.info('Syncing cover art for %s', episode.channel.title) # copy and rename art shutil.copy(episode_art, device_art) gpodder-3.9.0/share/gpodder/extensions/ubuntu_unity.py0000644000016000001710000000624112654461624024347 0ustar jenkinsjenkins00000000000000# -*- coding: utf-8 -*- # Ubuntu Unity Launcher Integration # Thomas Perl ; 2012-02-06 import gpodder _ = gpodder.gettext __title__ = _('Ubuntu Unity Integration') __description__ = _('Show download progress in the Unity Launcher icon.') __authors__ = 'Thomas Perl ' __category__ = 'desktop-integration' __only_for__ = 'unity' __mandatory_in__ = 'unity' __disable_in__ = 'win32' # FIXME: Due to the fact that we do not yet use the GI-style bindings, we will # have to run this module in its own interpreter and send commands to it using # the subprocess module. Once we use GI-style bindings, we can get rid of all # this and still expose the same "interface' (LauncherEntry and its methods) # to our callers. import os import subprocess import sys import logging if __name__ != '__main__': logger = logging.getLogger(__name__) class gPodderExtension: FILENAME = 'gpodder.desktop' def __init__(self, container): self.container = container self.process = None def on_load(self): logger.info('Starting Ubuntu Unity Integration.') os.environ['PYTHONPATH'] = os.pathsep.join(sys.path) self.process = subprocess.Popen(['python', __file__], stdin=subprocess.PIPE) def on_unload(self): logger.info('Killing process...') self.process.terminate() self.process.wait() logger.info('Process killed.') def on_download_progress(self, progress): try: self.process.stdin.write('progress %f\n' % progress) self.process.stdin.flush() except Exception, e: logger.debug('Ubuntu progress update failed.', exc_info=True) else: from gi.repository import Unity, GObject from gpodder import util import sys class InputReader: def __init__(self, fileobj, launcher): self.fileobj = fileobj self.launcher = launcher def read(self): while True: line = self.fileobj.readline() if not line: break try: command, value = line.strip().split() if command == 'progress': GObject.idle_add(launcher_entry.set_progress, float(value)) except: pass class LauncherEntry: FILENAME = 'gpodder.desktop' def __init__(self): self.launcher = Unity.LauncherEntry.get_for_desktop_id( self.FILENAME) def set_count(self, count): self.launcher.set_property('count', count) self.launcher.set_property('count_visible', count > 0) def set_progress(self, progress): self.launcher.set_property('progress', progress) self.launcher.set_property('progress_visible', 0. <= progress < 1.) GObject.threads_init() loop = GObject.MainLoop() util.run_in_background(loop.run) launcher_entry = LauncherEntry() reader = InputReader(sys.stdin, launcher_entry) reader.read() loop.quit() gpodder-3.9.0/share/gpodder/extensions/rm_ogg_cover.py0000644000016000001710000000574712654461624024257 0ustar jenkinsjenkins00000000000000#!/usr/bin/python # -*- coding: utf-8 -*- #### # 01/2011 Bernd Schlapsi # # This script is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # gPodder is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . # # Dependencies: # * python-mutagen (Mutagen is a Python module to handle audio metadata) # # This extension scripts removes coverart from all downloaded ogg files. # The reason for this script is that my media player (MEIZU SL6) # couldn't handle ogg files with included coverart import os import gpodder import logging logger = logging.getLogger(__name__) from mutagen.oggvorbis import OggVorbis _ = gpodder.gettext __title__ = _('Remove cover art from OGG files') __description__ = _('removes coverart from all downloaded ogg files') __authors__ = 'Bernd Schlapsi ' __doc__ = 'http://wiki.gpodder.org/wiki/Extensions/RemoveOGGCover' __payment__ = 'https://flattr.com/submit/auto?user_id=BerndSch&url=http://wiki.gpodder.org/wiki/Extensions/RemoveOGGCover' __category__ = 'post-download' DefaultConfig = { 'context_menu': True, # Show item in context menu } class gPodderExtension: def __init__(self, container): self.container = container self.config = self.container.config def on_episode_downloaded(self, episode): self.rm_ogg_cover(episode) def on_episodes_context_menu(self, episodes): if not self.config.context_menu: return None if 'audio/ogg' not in [e.mime_type for e in episodes if e.mime_type is not None and e.file_exists()]: return None return [(_('Remove cover art'), self._rm_ogg_covers)] def _rm_ogg_covers(self, episodes): for episode in episodes: self.rm_ogg_cover(episode) def rm_ogg_cover(self, episode): filename = episode.local_filename(create=False) if filename is None: return basename, extension = os.path.splitext(filename) if episode.file_type() != 'audio': return if extension.lower() != '.ogg': return try: ogg = OggVorbis(filename) found = False for key in ogg.keys(): if key.startswith('cover'): found = True ogg.pop(key) if found: logger.info('Removed cover art from OGG file: %s', filename) ogg.save() except Exception, e: logger.warn('Failed to remove OGG cover: %s', e, exc_info=True) gpodder-3.9.0/share/gpodder/extensions/episode_website_context_menu.py0000644000016000001710000000152612654461624027540 0ustar jenkinsjenkins00000000000000# -*- coding: utf-8 -*- # Add a context menu to show the episode website (bug 1958) # (c) 2014-10-20 Thomas Perl # Released under the same license terms as gPodder itself. import gpodder from gpodder import util import logging logger = logging.getLogger(__name__) _ = gpodder.gettext __title__ = _('"Open website" episode context menu') __description__ = _('Add a context menu item for opening the website of an episode') __authors__ = 'Thomas Perl ' __category__ = 'interface' __only_for__ = 'gtk' class gPodderExtension: def __init__(self, container): self.container = container def open_website(self, episodes): for episode in episodes: util.open_website(episode.link) def on_episodes_context_menu(self, episodes): return [(_('Open website'), self.open_website)] gpodder-3.9.0/share/gpodder/extensions/mpris-listener.py0000755000016000001710000002777412654461624024573 0ustar jenkinsjenkins00000000000000# -*- coding: utf-8 -*- # # gPodder extension for listening to notifications from MPRIS-capable # players and translating them to gPodder's Media Player D-Bus API # # Copyright (c) 2013-2014 Dov Feldstern # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . import collections import dbus import dbus.service import gpodder import logging import time import urllib import urlparse logger = logging.getLogger(__name__) _ = gpodder.gettext __title__ = _('MPRIS Listener') __description__ = _('Convert MPRIS notifications to gPodder Media Player D-Bus API') __authors__ = 'Dov Feldstern ' __doc__ = 'http://wiki.gpodder.org/wiki/Extensions/MprisListener' __category__ = 'desktop-integration' USECS_IN_SEC = 1000000 TrackInfo = collections.namedtuple('TrackInfo', ['uri', 'length', 'status', 'pos', 'rate']) def subsecond_difference(usec1, usec2): return abs(usec1 - usec2) < USECS_IN_SEC class CurrentTrackTracker(object): '''An instance of this class is responsible for tracking the state of the currently playing track -- it's playback status, playing position, etc. ''' def __init__(self, notifier): self.uri = None self.length = None self.pos = None self.rate = None self.status = None self._notifier = notifier self._prev_notif = () def _calc_update(self): now = time.time() logger.debug('CurrentTrackTracker: calculating at %d (status: %r)', now, self.status) try: if self.status != 'Playing': logger.debug('CurrentTrackTracker: not currently playing, no change') return if self.pos is None or self.rate is None: logger.debug('CurrentTrackTracker: unknown pos/rate, no change') return logger.debug('CurrentTrackTracker: %f @%f (diff: %f)', self.pos, self.rate, now - self._last_time) self.pos = self.pos + self.rate * (now - self._last_time) * USECS_IN_SEC finally: self._last_time = now def update_needed(self, current, updated): for field in updated: if field == 'pos': if not subsecond_difference(updated['pos'], current['pos']): return True elif updated[field] != current[field]: return True # no unequal field was found, no new info here! return False def update(self, **kwargs): # check if there is any new info here -- if not, no need to update! cur = self.getinfo()._asdict() if not self.update_needed(cur, kwargs): return # there *is* new info, go ahead and update... uri = kwargs.pop('uri', None) if uri is not None: length = kwargs.pop('length') # don't know how to handle uri with no length if uri != cur['uri']: # if this is a new uri, and the previous state was 'Playing', # notify that the previous track has stopped before updating to # the new track. if cur['status'] == 'Playing': logger.debug('notify Stopped: new uri: old %s new %s', cur['uri'], uri) self.notify_stop() self.uri = uri self.length = float(length) if 'pos' in kwargs: # If the position is being updated, and the current status was Playing # If the status *is* playing, and *was* playing, but the position # has changed discontinuously, notify a stop for the old position if ( cur['status'] == 'Playing' and (not kwargs.has_key('status') or kwargs['status'] == 'Playing') and not subsecond_difference(cur['pos'], kwargs['pos']) ): logger.debug('notify Stopped: playback discontinuity:' + 'calc: %f observed: %f', cur['pos'], kwargs['pos']) self.notify_stop() if ( (kwargs['pos']) == 0 and self.pos > (self.length - USECS_IN_SEC) and self.pos < (self.length + 2 * USECS_IN_SEC) ): logger.debug('fixing for position 0 (calculated pos: %f/%f [%f])', self.pos / USECS_IN_SEC, self.length / USECS_IN_SEC, (self.pos/USECS_IN_SEC)-(self.length/USECS_IN_SEC)) self.pos = self.length kwargs.pop('pos') # remove 'pos' even though we're not using it else: if self.pos is not None: logger.debug("%r %r", self.pos, self.length) logger.debug('not fixing for position 0 (calculated pos: %f/%f [%f])', self.pos / USECS_IN_SEC, self.length / USECS_IN_SEC, (self.pos/USECS_IN_SEC)-(self.length/USECS_IN_SEC)) self.pos = kwargs.pop('pos') if 'status' in kwargs: self.status = kwargs.pop('status') if 'rate' in kwargs: self.rate = kwargs.pop('rate') if kwargs: logger.error('unexpected update fields %r', kwargs) # notify about the current state if self.status == 'Playing': self.notify_playing() else: logger.debug('notify Stopped: status %s', self.status) self.notify_stop() def getinfo(self): self._calc_update() return TrackInfo(self.uri, self.length, self.status, self.pos, self.rate) def notify_stop(self): self.notify('Stopped') def notify_playing(self): self.notify('Playing') def notify(self, status): if ( self.uri is None or self.pos is None or self.status is None or self.length is None or self.length <= 0 ): return pos = self.pos // USECS_IN_SEC file_uri = urllib.url2pathname(urlparse.urlparse(self.uri).path).encode('utf-8') total_time = self.length // USECS_IN_SEC if status == 'Stopped': end_position = pos start_position = self._notifier.start_position if self._prev_notif != (start_position, end_position, total_time, file_uri): self._notifier.PlaybackStopped(start_position, end_position, total_time, file_uri) self._prev_notif = (start_position, end_position, total_time, file_uri) elif status == 'Playing': start_position = pos if self._prev_notif != (start_position, file_uri): self._notifier.PlaybackStarted(start_position, file_uri) self._prev_notif = (start_position, file_uri) self._notifier.start_position = start_position logger.info('CurrentTrackTracker: %s: %r', status, self) def __repr__(self): return '%s: %s at %d/%d (@%f)' % ( self.uri or 'None', self.status or 'None', (self.pos or 0) / USECS_IN_SEC, (self.length or 0) / USECS_IN_SEC, self.rate or 0) class MPRISDBusReceiver(object): INTERFACE_PROPS = 'org.freedesktop.DBus.Properties' SIGNAL_PROP_CHANGE = 'PropertiesChanged' PATH_MPRIS = '/org/mpris/MediaPlayer2' INTERFACE_MPRIS = 'org.mpris.MediaPlayer2.Player' SIGNAL_SEEKED = 'Seeked' OBJECT_VLC = 'org.mpris.MediaPlayer2.vlc' def __init__(self, bus, notifier): self.bus = bus self.cur = CurrentTrackTracker(notifier) self.bus.add_signal_receiver(self.on_prop_change, self.SIGNAL_PROP_CHANGE, self.INTERFACE_PROPS, None, self.PATH_MPRIS) self.bus.add_signal_receiver(self.on_seeked, self.SIGNAL_SEEKED, self.INTERFACE_MPRIS, None, None) def stop_receiving(self): self.bus.remove_signal_receiver(self.on_prop_change, self.SIGNAL_PROP_CHANGE, self.INTERFACE_PROPS, None, self.PATH_MPRIS) self.bus.remove_signal_receiver(self.on_seeked, self.SIGNAL_SEEKED, self.INTERFACE_MPRIS, None, None) def on_prop_change(self, interface_name, changed_properties, invalidated_properties, path=None): if interface_name != self.INTERFACE_MPRIS: logger.warn('unexpected interface: %s', interface_name) return collected_info = {} if changed_properties.has_key('PlaybackStatus'): collected_info['status'] = str(changed_properties['PlaybackStatus']) if changed_properties.has_key('Metadata'): collected_info['uri'] = changed_properties['Metadata']['xesam:url'] collected_info['length'] = changed_properties['Metadata']['mpris:length'] if changed_properties.has_key('Rate'): collected_info['rate'] = changed_properties['Rate'] collected_info['pos'] = self.query_position() if not collected_info.has_key('status'): collected_info['status'] = str(self.query_status()) logger.debug('collected info: %r', collected_info) self.cur.update(**collected_info) def on_seeked(self, position): logger.debug('seeked to pos: %f', position) self.cur.update(pos=position) def query_position(self): proxy = self.bus.get_object(self.OBJECT_VLC,self.PATH_MPRIS) props = dbus.Interface(proxy, self.INTERFACE_PROPS) return props.Get(self.INTERFACE_MPRIS, 'Position') def query_status(self): proxy = self.bus.get_object(self.OBJECT_VLC,self.PATH_MPRIS) props = dbus.Interface(proxy, self.INTERFACE_PROPS) return props.Get(self.INTERFACE_MPRIS, 'PlaybackStatus') class gPodderNotifier(dbus.service.Object): def __init__(self, bus, path): dbus.service.Object.__init__(self, bus, path) @dbus.service.signal(dbus_interface='org.gpodder.player', signature='us') def PlaybackStarted(self, start_position, file_uri): logger.info('PlaybackStarted: %s: %d', file_uri, start_position) @dbus.service.signal(dbus_interface='org.gpodder.player', signature='uuus') def PlaybackStopped(self, start_position, end_position, total_time, file_uri): logger.info('PlaybackStopped: %s: %d--%d/%d', file_uri, start_position, end_position, total_time) # Finally, this is the extension, which just pulls this all together class gPodderExtension: def __init__(self, container): self.container = container self.path = '/org/gpodder/player/notifier' def on_load(self): self.session_bus = gpodder.dbus_session_bus self.notifier = gPodderNotifier(self.session_bus, self.path) self.rcvr = MPRISDBusReceiver(self.session_bus, self.notifier) def on_unload(self): self.notifier.remove_from_connection(self.session_bus, self.path) self.rcvr.stop_receiving() gpodder-3.9.0/share/gpodder/extensions/ted_subtitles.py0000644000016000001710000000733112654461624024450 0ustar jenkinsjenkins00000000000000# -*- coding: utf-8 -*- # vi:si:et:sw=4:sts=4:ts=4 import os import json import logging import re from datetime import timedelta logger = logging.getLogger(__name__) import gpodder from gpodder import util _ = gpodder.gettext __title__ = _('Subtitle Downloader for TED Talks') __description__ = _('Downloads .srt subtitles for TED Talks Videos') __authors__ = 'Danilo Shiga ' __category__ = 'post-download' __only_for__ = 'gtk, cli' class gPodderExtension(object): """ TED Subtitle Download Extension Downloads ted subtitles """ def __init__(self, container): self.container = container def milli_to_srt(self, time): """Converts milliseconds to srt time format""" srt_time = timedelta(milliseconds=time) srt_time = str(srt_time) if '.' in srt_time: srt_time = srt_time.replace('.', ',')[:11] else: # ',000' required to be a valid srt line srt_time += ',000' return srt_time def ted_to_srt(self, jsonstring, introduration): """Converts the json object to srt format""" jsonobject = json.loads(jsonstring) srtContent = '' for captionIndex, caption in enumerate(jsonobject['captions'], 1): startTime = self.milli_to_srt(introduration + caption['startTime']) endTime = self.milli_to_srt(introduration + caption['startTime'] + caption['duration']) srtContent += ''.join([str(captionIndex), os.linesep, startTime, ' --> ', endTime, os.linesep, caption['content'], os.linesep * 2]) return srtContent def get_data_from_url(self, url): try: response = util.urlopen(url).read() except Exception, e: logger.warn("subtitle url returned error %s", e) return '' return response def get_srt_filename(self, audio_filename): basename, _ = os.path.splitext(audio_filename) return basename + '.srt' def on_episode_downloaded(self, episode): guid_result = re.search(r'talk.ted.com:(\d+)', episode.guid) if guid_result is not None: talkId = int(guid_result.group(1)) else: logger.debug('Not a TED Talk. Ignoring.') return sub_url = 'http://www.ted.com/talks/subtitles/id/%s/lang/eng' % talkId logger.info('subtitle url: %s', sub_url) sub_data = self.get_data_from_url(sub_url) if not sub_data: return logger.info('episode url: %s', episode.link) episode_data = self.get_data_from_url(episode.link) if not episode_data: return INTRO_DEFAULT = 15 try: # intro in the data could be 15 or 15.33 intro = episode_data intro = episode_data.split('introDuration":')[1] \ .split(',')[0] or INTRO_DEFAULT intro = int(float(intro)*1000) except (ValueError, IndexError), e: logger.info("Couldn't parse introDuration string: %s", intro) intro = INTRO_DEFAULT * 1000 current_filename = episode.local_filename(create=False) srt_filename = self.get_srt_filename(current_filename) sub = self.ted_to_srt(sub_data, int(intro)) try: with open(srt_filename, 'w+') as srtFile: srtFile.write(sub.encode("utf-8")) except Exception, e: logger.warn("Can't write srt file: %s",e) def on_episode_delete(self, episode, filename): srt_filename = self.get_srt_filename(filename) if os.path.exists(srt_filename): os.remove(srt_filename) gpodder-3.9.0/share/gpodder/extensions/tagging.py0000644000016000001710000002002112654461624023205 0ustar jenkinsjenkins00000000000000#!/usr/bin/python # -*- coding: utf-8 -*- #### # 01/2011 Bernd Schlapsi # # This script is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # gPodder is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . # # Dependencies: # * python-mutagen (Mutagen is a Python module to handle audio metadata) # # This extension script adds episode title and podcast title to the audio file # The episode title is written into the title tag # The podcast title is written into the album tag import base64 import datetime import mimetypes import os import gpodder from gpodder import coverart import logging logger = logging.getLogger(__name__) from mutagen import File from mutagen.flac import Picture from mutagen.mp3 import MP3 from mutagen.id3 import ID3, APIC from mutagen.mp4 import MP4Cover _ = gpodder.gettext __title__ = _('Tag downloaded files using Mutagen') __description__ = _('Add episode and podcast titles to MP3/OGG tags') __authors__ = 'Bernd Schlapsi ' __doc__ = 'http://wiki.gpodder.org/wiki/Extensions/Tagging' __payment__ = 'https://flattr.com/submit/auto?user_id=BerndSch&url=http://wiki.gpodder.org/wiki/Extensions/Tagging' __category__ = 'post-download' DefaultConfig = { 'strip_album_from_title': True, 'genre_tag': 'Podcast', 'always_remove_tags': False, 'auto_embed_coverart': False, } class AudioFile(object): def __init__(self, filename, album, title, genre, pubDate, cover): self.filename = filename self.album = album self.title = title self.genre = genre self.pubDate = pubDate self.cover = cover def remove_tags(self): audio = File(self.filename, easy=True) if audio.tags is not None: audio.delete() audio.save() def write_basic_tags(self): audio = File(self.filename, easy=True) if audio.tags is None: audio.add_tags() if self.album is not None: audio.tags['album'] = self.album if self.title is not None: audio.tags['title'] = self.title if self.genre is not None: audio.tags['genre'] = self.genre if self.pubDate is not None: audio.tags['date'] = self.pubDate audio.save() def insert_coverart(self): """ implement the cover art logic in the subclass """ None def get_cover_picture(self, cover): """ Returns mutage Picture class for the cover image Usefull for OGG and FLAC format Picture type = cover image see http://flac.sourceforge.net/documentation_tools_flac.html#encoding_options """ f = file(cover) p = Picture() p.type = 3 p.data = f.read() p.mime = mimetypes.guess_type(cover)[0] f.close() return p class OggFile(AudioFile): def __init__(self, filename, album, title, genre, pubDate, cover): super(OggFile, self).__init__(filename, album, title, genre, pubDate, cover) def insert_coverart(self): audio = File(self.filename, easy=True) p = self.get_cover_picture(self.cover) audio['METADATA_BLOCK_PICTURE'] = base64.b64encode(p.write()) audio.save() class Mp4File(AudioFile): def __init__(self, filename, album, title, genre, pubDate, cover): super(Mp4File, self).__init__(filename, album, title, genre, pubDate, cover) def insert_coverart(self): audio = File(self.filename) if self.cover.endswith('png'): cover_format = MP4Cover.FORMAT_PNG else: cover_format = MP4Cover.FORMAT_JPEG data = open(self.cover, 'rb').read() audio.tags['covr'] = [MP4Cover(data, cover_format)] audio.save() class Mp3File(AudioFile): def __init__(self, filename, album, title, genre, pubDate, cover): super(Mp3File, self).__init__(filename, album, title, genre, pubDate, cover) def insert_coverart(self): audio = MP3(self.filename, ID3=ID3) if audio.tags is None: audio.add_tags() audio.tags.add( APIC( encoding = 3, # 3 is for utf-8 mime = mimetypes.guess_type(self.cover)[0], type = 3, desc = u'Cover', data = open(self.cover).read() ) ) audio.save() class gPodderExtension: def __init__(self, container): self.container = container def on_episode_downloaded(self, episode): info = self.read_episode_info(episode) if info['filename'] is None: return self.write_info2file(info, episode) def get_audio(self, info, episode): audio = None cover = None if self.container.config.auto_embed_coverart: cover = self.get_cover(episode.channel) if info['filename'].endswith('.mp3'): audio = Mp3File(info['filename'], info['album'], info['title'], info['genre'], info['pubDate'], cover) elif info['filename'].endswith('.ogg'): audio = OggFile(info['filename'], info['album'], info['title'], info['genre'], info['pubDate'], cover) elif info['filename'].endswith('.m4a') or info['filename'].endswith('.mp4'): audio = Mp4File(info['filename'], info['album'], info['title'], info['genre'], info['pubDate'], cover) return audio def read_episode_info(self, episode): info = { 'filename': None, 'album': None, 'title': None, 'genre': None, 'pubDate': None } # read filename (incl. file path) from gPodder database info['filename'] = episode.local_filename(create=False, check_only=True) if info['filename'] is None: return # read title+album from gPodder database info['album'] = episode.channel.title title = episode.title if (self.container.config.strip_album_from_title and title and info['album'] and title.startswith(info['album'])): info['title'] = title[len(info['album']):].lstrip() else: info['title'] = title if self.container.config.genre_tag is not None: info['genre'] = self.container.config.genre_tag # convert pubDate to string try: pubDate = datetime.datetime.fromtimestamp(episode.pubDate) info['pubDate'] = pubDate.strftime('%Y-%m-%d %H:%M') except: try: # since version 3 the published date has a new/other name pubDate = datetime.datetime.fromtimestamp(episode.published) info['pubDate'] = pubDate.strftime('%Y-%m-%d %H:%M') except: info['pubDate'] = None return info def write_info2file(self, info, episode): audio = self.get_audio(info, episode) if self.container.config.always_remove_tags: audio.remove_tags() else: audio.write_basic_tags() if self.container.config.auto_embed_coverart: audio.insert_coverart() logger.info(u'tagging.on_episode_downloaded(%s/%s)', episode.channel.title, episode.title) def get_cover(self, podcast): downloader = coverart.CoverDownloader() return downloader.get_cover(podcast.cover_file, podcast.cover_url, podcast.url, podcast.title, None, None, True) gpodder-3.9.0/share/gpodder/extensions/audio_converter.py0000644000016000001710000001041412654461624024762 0ustar jenkinsjenkins00000000000000# -*- coding: utf-8 -*- # Convertes m4a audio files to mp3 # This requires ffmpeg to be installed. Also works as a context # menu item for already-downloaded files. # # (c) 2011-11-23 Bernd Schlapsi # Released under the same license terms as gPodder itself. import os import subprocess import gpodder from gpodder import util import logging logger = logging.getLogger(__name__) _ = gpodder.gettext __title__ = _('Convert audio files') __description__ = _('Transcode audio files to mp3/ogg') __authors__ = 'Bernd Schlapsi , Thomas Perl ' __doc__ = 'http://wiki.gpodder.org/wiki/Extensions/AudioConverter' __payment__ = 'https://flattr.com/submit/auto?user_id=BerndSch&url=http://wiki.gpodder.org/wiki/Extensions/AudioConverter' __category__ = 'post-download' DefaultConfig = { 'use_ogg': False, # Set to True to convert to .ogg (otherwise .mp3) 'context_menu': True, # Show the conversion option in the context menu } class gPodderExtension: MIME_TYPES = ('audio/x-m4a', 'audio/mp4', 'audio/mp4a-latm', 'audio/ogg', ) EXT = ('.m4a', '.ogg') CMD = {'avconv': {'.mp3': ['-i', '%(old_file)s', '-q:a', '2', '-id3v2_version', '3', '-write_id3v1', '1', '%(new_file)s'], '.ogg': ['-i', '%(old_file)s', '-q:a', '2', '%(new_file)s'] }, 'ffmpeg': {'.mp3': ['-i', '%(old_file)s', '-q:a', '2', '-id3v2_version', '3', '-write_id3v1', '1', '%(new_file)s'], '.ogg': ['-i', '%(old_file)s', '-q:a', '2', '%(new_file)s'] } } def __init__(self, container): self.container = container self.config = self.container.config # Dependency checks self.command = self.container.require_any_command(['avconv', 'ffmpeg']) # extract command without extension (.exe on Windows) from command-string self.command_without_ext = os.path.basename(os.path.splitext(self.command)[0]) def on_episode_downloaded(self, episode): self._convert_episode(episode) def _get_new_extension(self): return ('.ogg' if self.config.use_ogg else '.mp3') def _check_source(self, episode): if episode.extension() == self._get_new_extension(): return False if episode.mime_type in self.MIME_TYPES: return True # Also check file extension (bug 1770) if episode.extension() in self.EXT: return True return False def on_episodes_context_menu(self, episodes): if not self.config.context_menu: return None if not all(e.was_downloaded(and_exists=True) for e in episodes): return None if not any(self._check_source(episode) for episode in episodes): return None target_format = ('OGG' if self.config.use_ogg else 'MP3') menu_item = _('Convert to %(format)s') % {'format': target_format} return [(menu_item, self._convert_episodes)] def _convert_episode(self, episode): if not self._check_source(episode): return new_extension = self._get_new_extension() old_filename = episode.local_filename(create=False) filename, old_extension = os.path.splitext(old_filename) new_filename = filename + new_extension cmd_param = self.CMD[self.command_without_ext][new_extension] cmd = [self.command] + \ [param % {'old_file': old_filename, 'new_file': new_filename} for param in cmd_param] ffmpeg = subprocess.Popen(cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE) stdout, stderr = ffmpeg.communicate() if ffmpeg.returncode == 0: util.rename_episode_file(episode, new_filename) os.remove(old_filename) logger.info('Converted audio file to %(format)s.' % {'format': new_extension}) gpodder.user_extensions.on_notification_show(_('File converted'), episode.title) else: logger.warn('Error converting audio file: %s / %s', stdout, stderr) gpodder.user_extensions.on_notification_show(_('Conversion failed'), episode.title) def _convert_episodes(self, episodes): for episode in episodes: self._convert_episode(episode) gpodder-3.9.0/share/gpodder/extensions/normalize_audio.py0000644000016000001710000000611412654461624024755 0ustar jenkinsjenkins00000000000000# -*- coding: utf-8 -*- # This extension adjusts the volume of audio files to a standard level # Supported file formats are mp3 and ogg # # Requires: normalize-audio, mpg123 # # (c) 2011-11-06 Bernd Schlapsi # Released under the same license terms as gPodder itself. import os import subprocess import gpodder from gpodder import util import logging logger = logging.getLogger(__name__) _ = gpodder.gettext __title__ = _('Normalize audio with re-encoding') __description__ = _('Normalize the volume of audio files with normalize-audio') __authors__ = 'Bernd Schlapsi ' __doc__ = 'http://wiki.gpodder.org/wiki/Extensions/NormalizeAudio' __payment__ = 'https://flattr.com/submit/auto?user_id=BerndSch&url=http://wiki.gpodder.org/wiki/Extensions/NormalizeAudio' __category__ = 'post-download' DefaultConfig = { 'context_menu': True, # Show action in the episode list context menu } # a tuple of (extension, command) CONVERT_COMMANDS = { '.ogg': 'normalize-ogg', '.mp3': 'normalize-mp3', } class gPodderExtension: MIME_TYPES = ('audio/mpeg', 'audio/ogg', ) EXT = ('.mp3', '.ogg', ) def __init__(self, container): self.container = container # Dependency check self.container.require_command('normalize-ogg') self.container.require_command('normalize-mp3') self.container.require_command('normalize-audio') def on_load(self): logger.info('Extension "%s" is being loaded.' % __title__) def on_unload(self): logger.info('Extension "%s" is being unloaded.' % __title__) def on_episode_downloaded(self, episode): self._convert_episode(episode) def on_episodes_context_menu(self, episodes): if not self.container.config.context_menu: return None if not any(self._check_source(episode) for episode in episodes): return None return [(self.container.metadata.title, self.convert_episodes)] def _check_source(self, episode): if not episode.file_exists(): return False if episode.mime_type in self.MIME_TYPES: return True if episode.extension() in self.EXT: return True return False def _convert_episode(self, episode): if episode.file_type() != 'audio': return filename = episode.local_filename(create=False) if filename is None: return basename, extension = os.path.splitext(filename) cmd = [CONVERT_COMMANDS.get(extension, 'normalize-audio'), filename] p = subprocess.Popen(cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE) stdout, stderr = p.communicate() if p.returncode == 0: logger.info('normalize-audio processing successful.') gpodder.user_extensions.on_notification_show(_('File normalized'), episode.title) else: logger.warn('normalize-audio failed: %s / %s', stdout, stderr) def convert_episodes(self, episodes): for episode in episodes: self._convert_episode(episode) gpodder-3.9.0/share/gpodder/extensions/notification.py0000644000016000001710000000361412654461624024264 0ustar jenkinsjenkins00000000000000# -*- coding: utf-8 -*- # # gPodder - A media aggregator and podcast client # Copyright (c) 2005-2011 Thomas Perl and the gPodder Team # # gPodder is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 3 of the License, or # (at your option) any later version. # # gPodder is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . # # Bernd Schlapsi ; 2011-11-20 __title__ = 'Gtk+ Desktop Notifications' __description__ = 'Display notification bubbles for different events.' __category__ = 'desktop-integration' __only_for__ = 'gtk' __mandatory_in__ = 'gtk' __disable_in__ = 'win32' import gpodder import logging logger = logging.getLogger(__name__) try: import pynotify except ImportError: pynotify = None if pynotify is None: class gPodderExtension(object): def __init__(self, container): logger.info('Could not find PyNotify.') else: class gPodderExtension(object): def __init__(self, container): self.container = container def on_load(self): pynotify.init('gPodder') def on_unload(self): pynotify.uninit() def on_notification_show(self, title, message): if not message and not title: return notify = pynotify.Notification(title or '', message or '', gpodder.icon_file) try: notify.show() except: # See http://gpodder.org/bug/966 pass gpodder-3.9.0/share/gpodder/extensions/minimize_on_start.py0000644000016000001710000000102012654461624025315 0ustar jenkinsjenkins00000000000000# -*- coding: utf-8 -*- # Minimize gPodder's main window on startup # Thomas Perl ; 2012-07-31 import gpodder _ = gpodder.gettext __title__ = _('Minimize on start') __description__ = _('Minimizes the gPodder window on startup.') __category__ = 'interface' __only_for__ = 'gtk' class gPodderExtension: def __init__(self, container): self.container = container def on_ui_object_available(self, name, ui_object): if name == 'gpodder-gtk': ui_object.main_window.iconify() gpodder-3.9.0/share/gpodder/extensions/rename_download.py0000644000016000001710000000501712654461624024733 0ustar jenkinsjenkins00000000000000# -*- coding: utf-8 -*- # Rename files after download based on the episode title # Copyright (c) 2011-04-04 Thomas Perl # Licensed under the same terms as gPodder itself import os import gpodder from gpodder import util import logging logger = logging.getLogger(__name__) _ = gpodder.gettext __title__ = _('Rename episodes after download') __description__ = _('Rename episodes to "." on download') __authors__ = 'Bernd Schlapsi , Thomas Perl ' __doc__ = 'http://wiki.gpodder.org/wiki/Extensions/RenameAfterDownload' __payment__ = 'https://flattr.com/submit/auto?user_id=BerndSch&url=http://wiki.gpodder.org/wiki/Extensions/RenameAfterDownload' __category__ = 'post-download' DefaultConfig = { 'add_sortdate': False, # Add the sortdate as prefix 'add_podcast_title': False, # Add the podcast title as prefix } class gPodderExtension: def __init__(self, container): self.container = container self.config = self.container.config def on_episode_downloaded(self, episode): current_filename = episode.local_filename(create=False) new_filename = self.make_filename(current_filename, episode.title, episode.sortdate, episode.channel.title) if new_filename != current_filename: logger.info('Renaming: %s -> %s', current_filename, new_filename) os.rename(current_filename, new_filename) util.rename_episode_file(episode, new_filename) def make_filename(self, current_filename, title, sortdate, podcast_title): dirname = os.path.dirname(current_filename) filename = os.path.basename(current_filename) basename, ext = os.path.splitext(filename) new_basename = [] new_basename.append(util.sanitize_encoding(title) + ext) if self.config.add_podcast_title: new_basename.insert(0, podcast_title) if self.config.add_sortdate: new_basename.insert(0, sortdate) new_basename = ' - '.join(new_basename) # On Windows, force ASCII encoding for filenames (bug 1724) new_basename = util.sanitize_filename(new_basename, use_ascii=gpodder.ui.win32) new_filename = os.path.join(dirname, new_basename) if new_filename == current_filename: return current_filename for filename in util.generate_names(new_filename): # Avoid filename collisions if not os.path.exists(filename): return filename gpodder-3.9.0/share/gpodder/extensions/notification-win32.py0000755000016000001710000001002612654461624025222 0ustar jenkinsjenkins00000000000000# -*- coding: utf-8 -*- # # gPodder - A media aggregator and podcast client # Copyright (c) 2005-2016 Thomas Perl and the gPodder Team # # gPodder is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 3 of the License, or # (at your option) any later version. # # gPodder is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . # # Notification implementation for Windows # Sean Munkel; 2012-12-29 __title__ = 'Notification Bubbles for Windows' __description__ = 'Display notification bubbles for different events.' __authors__ = 'Sean Munkel ' __category__ = 'desktop-integration' __mandatory_in__ = 'win32' __only_for__ = 'win32' import functools import os import os.path import gpodder import pywintypes import win32gui import logging logger = logging.getLogger(__name__) IDI_APPLICATION = 32512 WM_TASKBARCREATED = win32gui.RegisterWindowMessage('TaskbarCreated') WM_TRAYMESSAGE = 1044 # based on http://code.activestate.com/recipes/334779/ class NotifyIcon(object): def __init__(self, hwnd): self._hwnd = hwnd self._id = 0 self._flags = win32gui.NIF_MESSAGE | win32gui.NIF_ICON self._callbackmessage = WM_TRAYMESSAGE path = os.path.join(os.path.dirname(__file__), '..', '..', 'icons', 'hicolor', '16x16', 'apps', 'gpodder.ico') icon_path = os.path.abspath(path) try: self._hicon = win32gui.LoadImage(None, icon_path, 1, 0, 0, 0x50) except pywintypes.error as e: logger.warn("Couldn't load gpodder icon for tray") self._hicon = win32gui.LoadIcon(0, IDI_APPLICATION) self._tip = '' self._info = '' self._timeout = 0 self._infotitle = '' self._infoflags = win32gui.NIIF_NONE win32gui.Shell_NotifyIcon(win32gui.NIM_ADD, self.notify_config_data) @property def notify_config_data(self): """ Function to retrieve the NOTIFYICONDATA Structure. """ return (self._hwnd, self._id, self._flags, self._callbackmessage, self._hicon, self._tip, self._info, self._timeout, self._infotitle, self._infoflags) def remove(self): """ Removes the tray icon. """ win32gui.Shell_NotifyIcon(win32gui.NIM_DELETE, self.notify_config_data) def set_tooltip(self, tooltip): """ Sets the tray icon tooltip. """ self._flags = self._flags | win32gui.NIF_TIP self._tip = tooltip.encode("mbcs") win32gui.Shell_NotifyIcon(win32gui.NIM_MODIFY, self.notify_config_data) def show_balloon(self, title, text, timeout=10, icon=win32gui.NIIF_NONE): """ Shows a balloon tooltip from the tray icon. """ self._flags = self._flags | win32gui.NIF_INFO self._infotitle = title.encode("mbcs") self._info = text.encode("mbcs") self._timeout = timeout * 1000 self._infoflags = icon win32gui.Shell_NotifyIcon(win32gui.NIM_MODIFY, self.notify_config_data) class gPodderExtension(object): def __init__(self, *args): self.notifier = None def on_ui_object_available(self, name, ui_object): def callback(self, window, *args): self.notifier = NotifyIcon(window.window.handle) if name == 'gpodder-gtk': ui_object.main_window.connect('realize', functools.partial(callback, self)) def on_notification_show(self, title, message): if self.notifier is not None: self.notifier.show_balloon(title, message) def on_unload(self): if self.notifier is not None: self.notifier.remove() gpodder-3.9.0/share/gpodder/extensions/enqueue_in_mediaplayer.py0000644000016000001710000001270712654461624026312 0ustar jenkinsjenkins00000000000000# -*- coding: utf-8 -*- # Extension script to add a context menu item for enqueueing episodes in a player # Requirements: gPodder 3.x (or "tres" branch newer than 2011-06-08) # (c) 2011-06-08 Thomas Perl # Released under the same license terms as gPodder itself. import subprocess import gpodder from gpodder import util import logging logger = logging.getLogger(__name__) _ = gpodder.gettext __title__ = _('Enqueue in media players') __description__ = _('Add a context menu item for enqueueing episodes in installed media players') __authors__ = 'Thomas Perl , Bernd Schlapsi ' __doc__ = 'http://wiki.gpodder.org/wiki/Extensions/EnqueueInMediaplayer' __payment__ = 'https://flattr.com/submit/auto?user_id=BerndSch&url=http://wiki.gpodder.org/wiki/Extensions/EnqueueInMediaplayer' __category__ = 'interface' __only_for__ = 'gtk' DefaultConfig = { 'enqueue_after_download': False, # Set to True to enqueue an episode right after downloading 'default_player': '', # Set to the player to be used for auto-enqueueing (otherwise pick first installed) } class Player(object): def __init__(self, slug, application, command): self.slug = slug self.application = application self.title = '/'.join((_('Enqueue in'), application)) self.command = command self.gpodder = None def is_installed(self): raise NotImplemented('Must be implemented by subclass') def open_files(self, filenames): raise NotImplemented('Must be implemented by subclass') def enqueue_episodes(self, episodes): filenames = [episode.get_playback_url() for episode in episodes] self.open_files(filenames) for episode in episodes: episode.playback_mark() if self.gpodder is not None: self.gpodder.update_episode_list_icons(selected=True) class FreeDesktopPlayer(Player): def is_installed(self): return util.find_command(self.command[0]) is not None def open_files(self, filenames): subprocess.Popen(self.command + filenames, stdout=subprocess.PIPE, stderr=subprocess.PIPE) class Win32Player(Player): def is_installed(self): if not gpodder.ui.win32: return False from gpodder.gtkui.desktopfile import win32_read_registry_key try: self.command = win32_read_registry_key(self.command) return True except Exception as e: logger.warn('Win32 player not found: %s (%s)', self.command, e) return False def open_files(self, filenames): for cmd in util.format_desktop_command(self.command, filenames): subprocess.Popen(cmd) PLAYERS = [ # Amarok, http://amarok.kde.org/ FreeDesktopPlayer('amarok', 'Amarok', ['amarok', '--play', '--append']), # VLC, http://videolan.org/ FreeDesktopPlayer('vlc', 'VLC', ['vlc', '--started-from-file', '--playlist-enqueue']), # Totem, https://live.gnome.org/Totem FreeDesktopPlayer('totem', 'Totem', ['totem', '--enqueue']), # DeaDBeeF, http://deadbeef.sourceforge.net/ FreeDesktopPlayer('deadbeef', 'DeaDBeeF', ['deadbeef', '--queue']), # gmusicbrowser, http://gmusicbrowser.org/ FreeDesktopPlayer('gmusicbrowser', 'gmusicbrowser', ['gmusicbrowser', '-enqueue']), # Audacious, http://audacious-media-player.org/ FreeDesktopPlayer('audacious', 'Audacious', ['audacious', '--enqueue']), # Clementine, http://www.clementine-player.org/ FreeDesktopPlayer('clementine', 'Clementine', ['clementine', '--append']), # Parole, http://docs.xfce.org/apps/parole/start FreeDesktopPlayer('parole', 'Parole', ['parole', '-a']), # Winamp 2.x, http://www.oldversion.com/windows/winamp/ Win32Player('winamp', 'Winamp', r'HKEY_CLASSES_ROOT\Winamp.File\shell\Enqueue\command'), # VLC media player, http://videolan.org/vlc/ Win32Player('vlc', 'VLC', r'HKEY_CLASSES_ROOT\VLC.mp3\shell\AddToPlaylistVLC\command'), # foobar2000, http://www.foobar2000.org/ Win32Player('foobar2000', 'foobar2000', r'HKEY_CLASSES_ROOT\foobar2000.MP3\shell\enqueue\command'), ] class gPodderExtension: def __init__(self, container): self.container = container self.config = container.config # Only display media players that can be found at extension load time self.players = filter(lambda player: player.is_installed(), PLAYERS) def on_ui_object_available(self, name, ui_object): if name == 'gpodder-gtk': for p in self.players: p.gpodder = ui_object def on_episodes_context_menu(self, episodes): if not any(e.file_exists() for e in episodes): return None return [(p.title, p.enqueue_episodes) for p in self.players] def on_episode_downloaded(self, episode): if self.config.enqueue_after_download: if not self.config.default_player and len(self.players): player = self.players[0] logger.info('Picking first installed player: %s (%s)', player.slug, player.application) else: player = next((player for player in self.players if self.config.default_player == player.slug), None) if player is None: logger.info('No player set, use one of: %r', [player.slug for player in self.players]) return logger.info('Enqueueing downloaded file in %s', player.application) player.enqueue_episodes([episode]) gpodder-3.9.0/share/gpodder/extensions/taskbar_progress.py0000755000016000001710000001464512654461624025162 0ustar jenkinsjenkins00000000000000# -*- coding: utf-8 -*- # # gPodder - A media aggregator and podcast client # Copyright (c) 2005-2016 Thomas Perl and the gPodder Team # # gPodder is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 3 of the License, or # (at your option) any later version. # # gPodder is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . # # Windows 7 taskbar progress # Sean Munkel; 2013-01-05 import gpodder _ = gpodder.gettext __title__ = _('Show download progress on the taskbar') __description__ = _('Displays the progress on the Windows taskbar.') __authors__ = 'Sean Munkel ' __category__ = 'desktop-integration' __only_for__ = 'win32' from ctypes import (c_ushort, c_int, c_uint, c_ulong, c_ulonglong, c_wchar_p, alignment, sizeof, Structure, POINTER) from comtypes import IUnknown, GUID, COMMETHOD, wireHWND, client from ctypes import HRESULT from ctypes.wintypes import tagRECT import functools import logging logger = logging.getLogger(__name__) WSTRING = c_wchar_p # values for enumeration 'TBPFLAG' TBPF_NOPROGRESS = 0 TBPF_INDETERMINATE = 1 TBPF_NORMAL = 2 TBPF_ERROR = 4 TBPF_PAUSED = 8 TBPFLAG = c_int # enum # values for enumeration 'TBATFLAG' TBATF_USEMDITHUMBNAIL = 1 TBATF_USEMDILIVEPREVIEW = 2 TBATFLAG = c_int # enum class tagTHUMBBUTTON(Structure): _fields_ = [ ('dwMask', c_ulong), ('iId', c_uint), ('iBitmap', c_uint), ('hIcon', POINTER(IUnknown)), ('szTip', c_ushort * 260), ('dwFlags', c_ulong)] class ITaskbarList(IUnknown): _case_insensitive_ = True _iid_ = GUID('{56FDF342-FD6D-11D0-958A-006097C9A090}') _idlflags_ = [] _methods_ = [ COMMETHOD([], HRESULT, 'HrInit'), COMMETHOD([], HRESULT, 'AddTab', (['in'], c_int, 'hwnd')), COMMETHOD([], HRESULT, 'DeleteTab', (['in'], c_int, 'hwnd')), COMMETHOD([], HRESULT, 'ActivateTab', (['in'], c_int, 'hwnd')), COMMETHOD([], HRESULT, 'SetActivateAlt', (['in'], c_int, 'hwnd'))] class ITaskbarList2(ITaskbarList): _case_insensitive_ = True _iid_ = GUID('{602D4995-B13A-429B-A66E-1935E44F4317}') _idlflags_ = [] _methods_ = [ COMMETHOD([], HRESULT, 'MarkFullscreenWindow', (['in'], c_int, 'hwnd'), (['in'], c_int, 'fFullscreen'))] class ITaskbarList3(ITaskbarList2): _case_insensitive_ = True _iid_ = GUID('{EA1AFB91-9E28-4B86-90E9-9E9F8A5EEFAF}') _idlflags_ = [] _methods_ = [ COMMETHOD([], HRESULT, 'SetProgressValue', (['in'], c_int, 'hwnd'), (['in'], c_ulonglong, 'ullCompleted'), (['in'], c_ulonglong, 'ullTotal')), COMMETHOD([], HRESULT, 'SetProgressState', (['in'], c_int, 'hwnd'), (['in'], TBPFLAG, 'tbpFlags')), COMMETHOD([], HRESULT, 'RegisterTab', (['in'], c_int, 'hwndTab'), (['in'], wireHWND, 'hwndMDI')), COMMETHOD([], HRESULT, 'UnregisterTab', (['in'], c_int, 'hwndTab')), COMMETHOD([], HRESULT, 'SetTabOrder', (['in'], c_int, 'hwndTab'), (['in'], c_int, 'hwndInsertBefore')), COMMETHOD([], HRESULT, 'SetTabActive', (['in'], c_int, 'hwndTab'), (['in'], c_int, 'hwndMDI'), (['in'], TBATFLAG, 'tbatFlags')), COMMETHOD([], HRESULT, 'ThumbBarAddButtons', (['in'], c_int, 'hwnd'), (['in'], c_uint, 'cButtons'), (['in'], POINTER(tagTHUMBBUTTON), 'pButton')), COMMETHOD([], HRESULT, 'ThumbBarUpdateButtons', (['in'], c_int, 'hwnd'), (['in'], c_uint, 'cButtons'), (['in'], POINTER(tagTHUMBBUTTON), 'pButton')), COMMETHOD([], HRESULT, 'ThumbBarSetImageList', (['in'], c_int, 'hwnd'), (['in'], POINTER(IUnknown), 'himl')), COMMETHOD([], HRESULT, 'SetOverlayIcon', (['in'], c_int, 'hwnd'), (['in'], POINTER(IUnknown), 'hIcon'), (['in'], WSTRING, 'pszDescription')), COMMETHOD([], HRESULT, 'SetThumbnailTooltip', (['in'], c_int, 'hwnd'), (['in'], WSTRING, 'pszTip')), COMMETHOD([], HRESULT, 'SetThumbnailClip', (['in'], c_int, 'hwnd'), (['in'], POINTER(tagRECT), 'prcClip'))] assert sizeof(tagTHUMBBUTTON) == 540, sizeof(tagTHUMBBUTTON) assert alignment(tagTHUMBBUTTON) == 4, alignment(tagTHUMBBUTTON) # based on http://stackoverflow.com/a/1744503/905256 class gPodderExtension: def __init__(self, container): self.container = container self.window_handle = None self.restart_warning = True def on_load(self): self.taskbar = client.CreateObject( '{56FDF344-FD6D-11d0-958A-006097C9A090}', interface=ITaskbarList3) self.taskbar.HrInit() def on_unload(self): if self.taskbar is not None: self.taskbar.SetProgressState(self.window_handle, TBPF_NOPROGRESS) def on_ui_object_available(self, name, ui_object): def callback(self, window, *args): self.window_handle = window.window.handle if name == 'gpodder-gtk': ui_object.main_window.connect('realize', functools.partial(callback, self)) def on_download_progress(self, progress): if self.window_handle is None: if not self.restart_warning: return logger.warn("No window handle available, a restart max fix this") self.restart_warning = False return if 0 < progress < 1: self.taskbar.SetProgressState(self.window_handle, TBPF_NORMAL) self.taskbar.SetProgressValue(self.window_handle, int(progress * 100), 100) else: self.taskbar.SetProgressState(self.window_handle, TBPF_NOPROGRESS) gpodder-3.9.0/share/gpodder/extensions/gtk_statusicon.py0000644000016000001710000000773412654461624024646 0ustar jenkinsjenkins00000000000000# -*- coding: utf-8 -*- # # Gtk Status Icon (gPodder bug 1495) # Thomas Perl ; 2012-07-31 # import gpodder import logging logger = logging.getLogger(__name__) _ = gpodder.gettext __title__ = _('Gtk Status Icon') __description__ = _('Show a status icon for Gtk-based Desktops.') __category__ = 'desktop-integration' __only_for__ = 'gtk' __disable_in__ = 'unity,win32' import gtk import os.path from gpodder.gtkui import draw DefaultConfig = { 'download_progress_bar': False, # draw progress bar on icon while downloading? } class gPodderExtension: def __init__(self, container): self.container = container self.config = self.container.config self.status_icon = None self.icon_name = None self.gpodder = None self.last_progress = 1 def set_icon(self, use_pixbuf=False): path = os.path.join(os.path.dirname(__file__), '..', '..', 'icons') icon_path = os.path.abspath(path) theme = gtk.icon_theme_get_default() theme.append_search_path(icon_path) if self.icon_name is None: if theme.has_icon('gpodder'): self.icon_name = 'gpodder' else: self.icon_name = 'stock_mic' if self.status_icon is None: self.status_icon = gtk.status_icon_new_from_icon_name(self.icon_name) return # If current mode matches desired mode, nothing to do. is_pixbuf = (self.status_icon.get_storage_type() == gtk.IMAGE_PIXBUF) if is_pixbuf == use_pixbuf: return if not use_pixbuf: self.status_icon.set_from_icon_name(self.icon_name) else: # Currently icon is not a pixbuf => was loaded by name, at which # point size was automatically determined. icon_size = self.status_icon.get_size() icon_pixbuf = theme.load_icon(self.icon_name, icon_size, gtk.ICON_LOOKUP_USE_BUILTIN) self.status_icon.set_from_pixbuf(icon_pixbuf) def on_load(self): self.set_icon() self.status_icon.connect('activate', self.on_toggle_visible) self.status_icon.set_has_tooltip(True) self.status_icon.set_tooltip_text("gPodder") def on_toggle_visible(self, status_icon): if self.gpodder is None: return visibility = self.gpodder.main_window.get_visible() self.gpodder.main_window.set_visible(not visibility) def on_unload(self): if self.status_icon is not None: self.status_icon.set_visible(False) self.status_icon = None self.icon_name = None def on_ui_object_available(self, name, ui_object): if name == 'gpodder-gtk': self.gpodder = ui_object def get_icon_pixbuf(self): assert self.status_icon is not None if self.status_icon.get_storage_type() != gtk.IMAGE_PIXBUF: self.set_icon(use_pixbuf=True) return self.status_icon.get_pixbuf() def on_download_progress(self, progress): logger.debug("download progress: %f", progress) if not self.config.download_progress_bar: # reset the icon in case option was turned off during download if self.last_progress < 1: self.last_progress = 1 self.set_icon() # in any case, we're now done return if progress == 1: self.set_icon() # no progress bar self.last_progress = progress return # Only update in 3-percent-steps to save some resources if abs(progress-self.last_progress) < 0.03 and progress > self.last_progress: return icon = self.get_icon_pixbuf().copy() progressbar = draw.progressbar_pixbuf(icon.get_width(), icon.get_height(), progress) progressbar.composite(icon, 0, 0, icon.get_width(), icon.get_height(), 0, 0, 1, 1, gtk.gdk.INTERP_NEAREST, 255) self.status_icon.set_from_pixbuf(icon) self.last_progress = progress gpodder-3.9.0/share/gpodder/extensions/ubuntu_appindicator.py0000644000016000001710000000377712654461624025667 0ustar jenkinsjenkins00000000000000# -*- coding: utf-8 -*- # Ubuntu AppIndicator Icon # Thomas Perl ; 2012-02-24 import gpodder _ = gpodder.gettext __title__ = _('Ubuntu App Indicator') __description__ = _('Show a status indicator in the top bar.') __authors__ = 'Thomas Perl ' __category__ = 'desktop-integration' __only_for__ = 'gtk' __mandatory_in__ = 'unity' __disable_in__ = 'win32' import appindicator import gtk import logging logger = logging.getLogger(__name__) DefaultConfig = { 'visible': True, # Set to False if you don't want to show the appindicator } class gPodderExtension: def __init__(self, container): self.container = container self.config = container.config self.indicator = None self.gpodder = None def on_load(self): if self.config.visible: self.indicator = appindicator.Indicator('gpodder', 'gpodder', appindicator.CATEGORY_APPLICATION_STATUS) self.indicator.set_status(appindicator.STATUS_ACTIVE) def _rebuild_menu(self): menu = gtk.Menu() toggle_visible = gtk.CheckMenuItem(_('Show main window')) toggle_visible.set_active(True) def on_toggle_visible(menu_item): if menu_item.get_active(): self.gpodder.main_window.show() else: self.gpodder.main_window.hide() toggle_visible.connect('activate', on_toggle_visible) menu.append(toggle_visible) menu.append(gtk.SeparatorMenuItem()) quit_gpodder = gtk.MenuItem(_('Quit')) def on_quit(menu_item): self.gpodder.on_gPodder_delete_event(self.gpodder.main_window) quit_gpodder.connect('activate', on_quit) menu.append(quit_gpodder) menu.show_all() self.indicator.set_menu(menu) def on_unload(self): self.indicator = None def on_ui_object_available(self, name, ui_object): if name == 'gpodder-gtk': self.gpodder = ui_object self._rebuild_menu() gpodder-3.9.0/share/gpodder/extensions/concatenate_videos.py0000644000016000001710000000656512654461624025443 0ustar jenkinsjenkins00000000000000# -*- coding: utf-8 -*- # Concatenate multiple videos to a single file using ffmpeg # 2014-05-03 Thomas Perl # Released under the same license terms as gPodder itself. import subprocess import gpodder from gpodder import util import gtk from gpodder.gtkui.interface.progress import ProgressIndicator import os import logging logger = logging.getLogger(__name__) _ = gpodder.gettext __title__ = _('Concatenate videos') __description__ = _('Add a context menu item for concatenating multiple videos') __authors__ = 'Thomas Perl ' __category__ = 'interface' __only_for__ = 'gtk' class gPodderExtension: def __init__(self, container): self.container = container self.gpodder = None self.have_ffmpeg = (util.find_command('ffmpeg') is not None) def on_ui_object_available(self, name, ui_object): if name == 'gpodder-gtk': self.gpodder = ui_object def _get_save_filename(self): dlg = gtk.FileChooserDialog(title=_('Save video'), parent=self.gpodder.get_dialog_parent(), action=gtk.FILE_CHOOSER_ACTION_SAVE) dlg.add_button(gtk.STOCK_CANCEL, gtk.RESPONSE_CANCEL) dlg.add_button(gtk.STOCK_SAVE, gtk.RESPONSE_OK) if dlg.run() == gtk.RESPONSE_OK: filename = dlg.get_filename() dlg.destroy() return filename dlg.destroy() def _concatenate_videos(self, episodes): episodes = self._get_sorted_episode_list(episodes) # TODO: Show file list dialog for reordering out_filename = self._get_save_filename() if out_filename is None: return list_filename = os.path.join(os.path.dirname(out_filename), '.' + os.path.splitext(os.path.basename(out_filename))[0] + '.txt') with open(list_filename, 'w') as fp: fp.write('\n'.join("file '%s'\n" % episode.local_filename(create=False) for episode in episodes)) indicator = ProgressIndicator(_('Concatenating video files'), _('Writing %(filename)s') % { 'filename': os.path.basename(out_filename) }, False, self.gpodder.get_dialog_parent()) def convert(): ffmpeg = subprocess.Popen(['ffmpeg', '-f', 'concat', '-nostdin', '-y', '-i', list_filename, '-c', 'copy', out_filename]) result = ffmpeg.wait() util.delete_file(list_filename) util.idle_add(lambda: indicator.on_finished()) util.idle_add(lambda: self.gpodder.show_message( _('Videos successfully converted') if result == 0 else _('Error converting videos'), _('Concatenation result'), important=True)) util.run_in_background(convert, True) def _is_downloaded_video(self, episode): return episode.file_exists() and episode.file_type() == 'video' def _get_sorted_episode_list(self, episodes): return sorted([e for e in episodes if self._is_downloaded_video(e)], key=lambda e: e.published) def on_episodes_context_menu(self, episodes): if self.gpodder is None or not self.have_ffmpeg: return None episodes = self._get_sorted_episode_list(episodes) if len(episodes) < 2: return None return [(_('Concatenate videos'), self._concatenate_videos)] gpodder-3.9.0/share/gpodder/extensions/video_converter.py0000644000016000001710000001004512654461624024767 0ustar jenkinsjenkins00000000000000# -*- coding: utf-8 -*- # Convertes video files to avi or mp4 # This requires ffmpeg to be installed. Also works as a context # menu item for already-downloaded files. # # (c) 2011-08-05 Thomas Perl # Released under the same license terms as gPodder itself. import os import subprocess import gpodder from gpodder import util from gpodder import youtube import logging logger = logging.getLogger(__name__) _ = gpodder.gettext __title__ = _('Convert video files') __description__ = _('Transcode video files to avi/mp4/m4v') __authors__ = 'Thomas Perl , Bernd Schlapsi ' __doc__ = 'http://wiki.gpodder.org/wiki/Extensions/VideoConverter' __payment__ = 'https://flattr.com/submit/auto?user_id=BerndSch&url=http://wiki.gpodder.org/wiki/Extensions/VideoConverter' __category__ = 'post-download' DefaultConfig = { 'output_format': 'mp4', # At the moment we support/test only mp4, m4v and avi 'context_menu': True, # Show the conversion option in the context menu } class gPodderExtension: MIME_TYPES = ('video/mp4', 'video/m4v', 'video/x-flv', ) EXT = ('.mp4', '.m4v', '.flv', ) CMD = {'avconv': ['-i', '%(old_file)s', '-codec', 'copy', '%(new_file)s'], 'ffmpeg': ['-i', '%(old_file)s', '-codec', 'copy', '%(new_file)s'] } def __init__(self, container): self.container = container self.config = self.container.config # Dependency checks self.command = self.container.require_any_command(['avconv', 'ffmpeg']) # extract command without extension (.exe on Windows) from command-string command_without_ext = os.path.basename(os.path.splitext(self.command)[0]) self.command_param = self.CMD[command_without_ext] def on_episode_downloaded(self, episode): self._convert_episode(episode) def _get_new_extension(self): ext = self.config.output_format if not ext.startswith('.'): ext = '.' + ext return ext def _check_source(self, episode): if episode.extension() == self._get_new_extension(): return False if episode.mime_type in self.MIME_TYPES: return True # Also check file extension (bug 1770) if episode.extension() in self.EXT: return True return False def on_episodes_context_menu(self, episodes): if not self.config.context_menu: return None if not all(e.was_downloaded(and_exists=True) for e in episodes): return None if not any(self._check_source(episode) for episode in episodes): return None menu_item = _('Convert to %(format)s') % {'format': self.config.output_format} return [(menu_item, self._convert_episodes)] def _convert_episode(self, episode): if not self._check_source(episode): return new_extension = self._get_new_extension() old_filename = episode.local_filename(create=False) filename, old_extension = os.path.splitext(old_filename) new_filename = filename + new_extension cmd = [self.command] + \ [param % {'old_file': old_filename, 'new_file': new_filename} for param in self.command_param] ffmpeg = subprocess.Popen(cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE) stdout, stderr = ffmpeg.communicate() if ffmpeg.returncode == 0: util.rename_episode_file(episode, new_filename) os.remove(old_filename) logger.info('Converted video file to %(format)s.' % {'format': self.config.output_format}) gpodder.user_extensions.on_notification_show(_('File converted'), episode.title) else: logger.warn('Error converting video file: %s / %s', stdout, stderr) gpodder.user_extensions.on_notification_show(_('Conversion failed'), episode.title) def _convert_episodes(self, episodes): for episode in episodes: self._convert_episode(episode) gpodder-3.9.0/share/gpodder/extensions/rockbox_convert2mp4.py0000644000016000001710000001234612654461624025512 0ustar jenkinsjenkins00000000000000#!/usr/bin/python # -*- coding: utf-8 -*- # Requirements: apt-get install python-kaa-metadata ffmpeg python-dbus # To use, copy it as a Python script into ~/.config/gpodder/extensions/rockbox_mp4_convert.py # See the module "gpodder.extensions" for a description of when each extension # gets called and what the parameters of each extension are. #Based on Rename files after download based on the episode title #And patch in Bug https://bugs.gpodder.org/show_bug.cgi?id=1263 # Copyright (c) 2011-04-06 Guy Sheffer # Copyright (c) 2011-04-04 Thomas Perl # Licensed under the same terms as gPodder itself import kaa.metadata import os import shlex import subprocess import gpodder from gpodder import util import logging logger = logging.getLogger(__name__) _ = gpodder.gettext __title__ = _('Convert video files to MP4 for Rockbox') __description__ = _('Converts all videos to a Rockbox-compatible format') __authors__ = 'Guy Sheffer , Thomas Perl , Bernd Schlapsi ' __category__ = 'post-download' DefaultConfig = { 'device_height': 176.0, 'device_width': 224.0, 'ffmpeg_options': '-vcodec mpeg2video -b 500k -ab 192k -ac 2 -ar 44100 -acodec libmp3lame', } ROCKBOX_EXTENSION = "mpg" EXTENTIONS_TO_CONVERT = ['.mp4',"." + ROCKBOX_EXTENSION] FFMPEG_CMD = 'ffmpeg -y -i "%(from)s" -s %(width)sx%(height)s %(options)s "%(to)s"' class gPodderExtension: def __init__(self, container): self.container = container program = shlex.split(FFMPEG_CMD)[0] if not util.find_command(program): raise ImportError("Couldn't find program '%s'" % program) def on_load(self): logger.info('Extension "%s" is being loaded.' % __title__) def on_unload(self): logger.info('Extension "%s" is being unloaded.' % __title__) def on_episode_downloaded(self, episode): current_filename = episode.local_filename(False) converted_filename = self._convert_mp4(episode, current_filename) if converted_filename is not None: util.rename_episode_file(episode, converted_filename) os.remove(current_filename) logger.info('Conversion for %s was successfully' % current_filename) gpodder.user_extensions.on_notification_show(_('File converted'), episode.title) def _get_rockbox_filename(self, origin_filename): if not os.path.exists(origin_filename): logger.info("File '%s' don't exists." % origin_filename) return None dirname = os.path.dirname(origin_filename) filename = os.path.basename(origin_filename) basename, ext = os.path.splitext(filename) if ext not in EXTENTIONS_TO_CONVERT: logger.info("Ignore file with file-extension %s." % ext) return None if filename.endswith(ROCKBOX_EXTENSION): new_filename = "%s-convert.%s" % (basename, ROCKBOX_EXTENSION) else: new_filename = "%s.%s" % (basename, ROCKBOX_EXTENSION) return os.path.join(dirname, new_filename) def _calc_resolution(self, video_width, video_height, device_width, device_height): if video_height is None: return None width_ratio = device_width / video_width height_ratio = device_height / video_height dest_width = device_width dest_height = width_ratio * video_height if dest_height > device_height: dest_width = height_ratio * video_width dest_height = device_height return (int(round(dest_width)), round(int(dest_height))) def _convert_mp4(self, episode, from_file): """Convert MP4 file to rockbox mpg file""" # generate new filename and check if the file already exists to_file = self._get_rockbox_filename(from_file) if to_file is None: return None if os.path.isfile(to_file): return to_file logger.info("Converting: %s", from_file) gpodder.user_extensions.on_notification_show("Converting", episode.title) # calculationg the new screen resolution info = kaa.metadata.parse(from_file) resolution = self._calc_resolution( info.video[0].width, info.video[0].height, self.container.config.device_width, self.container.config.device_height ) if resolution is None: logger.error("Error calculating the new screen resolution") return None convert_command = FFMPEG_CMD % { 'from': from_file, 'to': to_file, 'width': str(resolution[0]), 'height': str(resolution[1]), 'options': self.container.config.ffmpeg_options } # Prior to Python 2.7.3, this module (shlex) did not support Unicode input. convert_command = util.sanitize_encoding(convert_command) process = subprocess.Popen(shlex.split(convert_command), stdout=subprocess.PIPE, stderr=subprocess.PIPE) stdout, stderr = process.communicate() if process.returncode != 0: logger.error(stderr) return None gpodder.user_extensions.on_notification_show("Converting finished", episode.title) return to_file gpodder-3.9.0/share/gpodder/extensions/sonos.py0000644000016000001710000000455112654461624022740 0ustar jenkinsjenkins00000000000000# -*- coding: utf-8 -*- # Extension script to stream podcasts to Sonos speakers # Requirements: gPodder 3.x and the soco module (https://pypi.python.org/pypi/soco) # (c) 2013-01-19 Stefan KУЖgl # Released under the same license terms as gPodder itself. from functools import partial import gpodder _ = gpodder.gettext import logging logger = logging.getLogger(__name__) import soco import requests __title__ = _('Stream to Sonos') __description__ = _('Stream podcasts to Sonos speakers') __authors__ = 'Stefan KУЖgl ' __category__ = 'interface' __only_for__ = 'gtk' SONOS_CAN_PLAY = lambda e: 'audio' in e.file_type() class gPodderExtension: def __init__(self, container): sd = soco.SonosDiscovery() speaker_ips = sd.get_speaker_ips() logger.info('Found Sonos speakers: %s' % ', '.join(speaker_ips)) self.speakers = {} for speaker_ip in speaker_ips: controller = soco.SoCo(speaker_ip) try: info = controller.get_speaker_info() except requests.ConnectionError as ce: # ignore speakers we can't connect to continue name = info.get('zone_name', None) # devices that do not have a name are probably bridges if name: self.speakers[speaker_ip] = name def _stream_to_speaker(self, speaker_ip, episodes): """ Play or enqueue selected episodes """ urls = [episode.url for episode in episodes if SONOS_CAN_PLAY(episode)] logger.info('Streaming to Sonos %s: %s'%(speaker_ip, ', '.join(urls))) controller = soco.SoCo(speaker_ip) # enqueue and play for episode in episodes: controller.play_uri(episode.url) episode.playback_mark() controller.play() def on_episodes_context_menu(self, episodes): """ Adds a context menu for each Sonos speaker group """ # Only show context menu if we can play at least one file if not any(SONOS_CAN_PLAY(e) for e in episodes): return [] menu_entries = [] for speaker_ip, name in self.speakers.items(): callback = partial(self._stream_to_speaker, speaker_ip) item = ('/'.join((_('Stream to Sonos'), name)), callback) menu_entries.append(item) return menu_entries gpodder-3.9.0/share/gpodder/credits.txt0000644000016000001710000000634412654461624021226 0ustar jenkinsjenkins00000000000000Aaron Wright Adolfo Jayme Barrientos Adrien Beaucreux Alain Tauch Alessandro Campidori Alexander BostrУЖm Alex Bennee Alex Ghitza Alex Mayer Alistair Sutton Amiad Bareli Anders Kvist Andrea Carpineti Andreas BУЖttger Andreas Piesk Andrei Dolganov Andrew Bennett Andy Busch Antonio Roversi Aravind Seshadri Arne Stierman Asier Iturralde Sarasola Atheos Atte AndrУЉ Jensen audioworld Bastian Kleineidam Bastian Staeck Baurzhan Muftakhidinov Ben Hummon Bernd Schlapsi Bernhard Walle Bill Barnard Bill Peters BjУИrn Rasmussen Boryslav Larin brabadu bttfmcf Byeongkeon Kim Caleb Clarke Camille Moncelier Carlos Moffat Casey Watson Cesar Alcalde Chionsas Chris Arnold Chris Moffitt Christian BoxdУЖrfer Clark Burbidge Corey Goldberg corq Cory Albrecht daggpod Daniel Ramos Daniel Sandman Daniel Schaal Danilo Shiga darkmanx David Spreen David Х tancl Doug Hellmann Dov Feldstern Dudu Maroja Edouard Pellerin Eduard Baer Eduardo Maroja Eric Le Lay Eugene Nikolsky Fabio Fiorentini FFranci72 Filip KХ‚Ф™bczyk Floriano Scioscia Florian Richter Frank Harper Franz Seidl Fred Kwame FriedBunny Gergely Imreh Gerrit Sangel Gherhardt Mathisz Gilles Lehoux GonУЇalo Cordeiro GУЖtz Waschk Haim Roitgrund Harry Coal hatul Heinz Erhard Hex Holger Bauer Holger Leskien Iwan van der Kleijn jaah Janne Makela Jens Persson Jens Thiele JУЉrУДme Chabod Jerry Moss Jessica Henline Jim NygУЅrd JoУЃo Trindade Joel Calado John Ferguson John Rabotnik Jonas KУЖlker Jon Hedemann JУЖrg Thalheim JosУЉ Luis Fustel Joseph Bleau Joseph Wickremasinghe Josh Mondragon Julio AcuУБa Junio C Hamano JУМrgen Schinker Justin Forest Kitchener-Waterloo LUG Konstantin Ryabitsev kvikende Leonid Ponomarev Louis Carlioz Luigi Marco Antonio Villegas Vega Marcos HernУЁndez Mark Alford Marko Vertainen Markus Golser Martin Kjellqvist Matt Baker Maurizio Ballo Maxim Prohorov Mehmet Nur Olcay Michael Salim Mika Leppinen Mike Coulson Mikolaj Laczynski Mohammad Dashtizadeh Mohammadreza Abdollahzadeh Morten Juhl-Johansen ZУЖlde-FejУЉr Morten Nygaard У…snes M. Schneider Mykola Nikishov narf Neal H. Walfield Nelson Ferreira Nick L. Nick Sonneveld Nick Stevens Nicolas Quienot Niklas Fiekas Nikolaos Papagrigoriou Olivier Brisson Ondrej Vesely Ortwin Forster Paul Elliot Paul Rudkin Pavel MlФoch Peter Hoffmann Peter Hultqvist PhilF Philippe Dessante Philippe Gouaillier Pieter de Decker Preben Randhol psychedelys Rafael Ferreira Rafael ProenУЇa Rafi Rubin R.Bell red26wings Ricardo Miranda Richard Voigt Rigoberto Calleja Robert Willert Robert Young Roel Groeneveld Romain Janvier Salvatore Iovene Sam Freilich Scott Wegner Scott Worley Sean Munkel Sebastian Hanula Sebastian Krause Sebastian Semmler SУЉrgio Marques Sergio Villar Senin Seth Remington Shane Donohoe Shane Huntley Silvio Sisto SimУГ Albert i Beltran Simon Schubert sneakypete SPGoetze S. Rust Stefan KУЖgl Stefan Lohmaier Stephan Buys Steve Burdine Steve McCarthy Steven Oxley Stylianos Papanastasiou Teo Ramirez Thibauld Nion Thomas Matthijs Thomas Mills Hinkle Thomas Nilsson threexk Tim Gilbert Tim Michelsen Tim Preetz Todd Zullinger Tomas Matheson Tomasz Dominikowski Tomislav Jovanovic Tony Mancill TorbjУЖrn Wassberg Torstein Adolf Winterseth Ville-Pekka Vainio Vitaliy Bondar VladDrac Vladimir Rutsky Vladimir Voroshilov Vladimir Zemlyakov Wes Morgan Wilfred van Rooijen gpodder-3.9.0/share/gpodder/ui/0000755000016000001710000000000012654461626017440 5ustar jenkinsjenkins00000000000000gpodder-3.9.0/share/gpodder/ui/gtk/0000755000016000001710000000000012654461626020225 5ustar jenkinsjenkins00000000000000gpodder-3.9.0/share/gpodder/ui/gtk/gpodderchannel.ui0000644000016000001710000006320312654461624023543 0ustar jenkinsjenkins00000000000000 False 10 gPodder Podcast Editor True center-on-parent 500 400 dialog True False 5 True False end gtk-close True True True True True False False True False False 0 False True end 0 True True True False 10 7 4 5 10 True False 0 True end 1 4 1 2 True True False False True True 1 4 True False Section: 1 2 4 5 GTK_FILL True True automatic automatic in True True False word 4 6 7 Disable feed updates (pause subscription) True True False False True True 1 4 2 3 GTK_FILL Synchronize to MP3 player devices True True False False True True 1 4 3 4 GTK_FILL True False True False 4 GTK_FILL GTK_FILL True True True False True False gtk-add 3 4 4 5 GTK_FILL GTK_FILL True False 2 3 4 5 GTK_FILL True False Strategy: 1 2 5 6 GTK_FILL GTK_FILL True False 2 4 5 6 GTK_FILL True False General False True False 10 5 True False 0 <b>HTTP/FTP Authentication</b> True False False 0 True False 2 2 6 6 True False 0 Username: GTK_FILL True False 0 Password: 1 2 GTK_FILL True True т— False False True True 1 2 True True т— False False True True 1 2 1 2 False True 1 True False False True 2 True False 0 <b>Locations</b> True False False 3 True False 2 3 6 6 True False 0 Download to: GTK_FILL True True 0 download to label True start 1 3 True False 0 Website: 1 2 GTK_FILL True True 0 website label True end 1 2 1 2 True True True False True False web-browser 2 3 1 2 GTK_FILL False True 4 1 True False Advanced 1 False True True 1 btnOK gpodder-3.9.0/share/gpodder/ui/gtk/gpodderwelcome.ui0000644000016000001710000001241112654461624023561 0ustar jenkinsjenkins00000000000000 230 340 True Getting started False 2 True 12 12 True 6 1 2 6 True <big>Welcome to gPodder</big> True True 0.0 1.0 0 1 Your podcast list is empty. True 0.0 0.0 1 2 0 1 False 6 True True Choose from a list of example podcasts True True Add a podcast by entering its URL True Restore my subscriptions from gpodder.net True 1 2 5 end 6 True gtk-cancel True True False end gpodder-3.9.0/share/gpodder/ui/gtk/gpodderpreferences.ui0000755000016000001710000012472712654461624024450 0ustar jenkinsjenkins00000000000000 1000 100 10 10 0 200 360 0 1 1 0 0 30 0 10 1 0 7 True True False GTK_WIN_POS_CENTER_ON_PARENT 260 320 Preferences dialog 2 True 6 True 12 6 True 6 3 2 6 True Audio player: True 0.0 fill Video player: True 0.0 2 1 fill True 1 2 True 2 1 2 1 True gtk-edit True 2 3 fill True gtk-edit True 2 2 3 1 fill False True False 1 "All episodes" in podcast list True False 2 Use sections for podcast list True False 3 General 12 6 True 6 3 3 6 True True False 0 Preferred YouTube format: 0 1 fill True False 1 2 0 1 True False 0 YouTube API key (v3): 0 1 1 2 fill True 1 2 1 2 fill True gtk-jump-to True 1 2 2 3 fill True False 0 Preferred Vimeo format: 2 3 fill True False 1 2 2 3 False Video 12 6 True True True in GTK_POLICY_AUTOMATIC GTK_POLICY_AUTOMATIC True False True False True 1 True Extensions 6 6 3 7 6 True Synchronize subscriptions and episode actions True 2 3 1 Username: True 1.0 3 2 fill Password: True 1.0 4 3 fill Replace list on server with local subscriptions True 6 3 5 Device name: True 1.0 5 4 fill True 3 1 3 2 False True True 4 1 3 3 True 5 1 3 4 gpodder.net 1 12 6 True 6 True Update interval: True 0.0 0.1 False 0 True False bottom True adjustment_update_interval 1 False True False 2 6 True Maximum number of episodes per podcast: True 0.0 False adjustment_episode_limit True False 1 False 3 True False 4 6 True When new episodes are found: True 0.0 False True 1 False 5 Updating 2 12 6 True 6 True Delete played episodes: True 0.0 0.1 False 0 True bottom True adjustment_expiration 1 False Remove played episodes even if unfinished True False 1 Also remove unplayed episodes True False 2 Clean-up 3 True 12 6 True 6 2 6 6 True 1 Device type: right GTK_FILL True 1 2 True 1 Mountpoint: 1 2 GTK_FILL True True False 1 2 1 2 True 1 After syncing an episode: right 5 6 GTK_FILL True 1 2 5 6 Create playlists on device True True False True 2 2 3 True 1 Playlists Folder: 3 4 GTK_FILL True True False 1 2 3 4 Remove episodes deleted on device from gPodder True True False True 0 2 4 5 False 0 Only sync unplayed episodes True True False True False 1 Devices 4 2 5 end 6 True Edit config True gtk-close True True True True 1 False end gpodder-3.9.0/share/gpodder/ui/gtk/gpodder.ui0000644000016000001710000014131612654461624022214 0ustar jenkinsjenkins00000000000000 10240 0.5 0 0.5 0 50 1 0 1 0 menuPodcasts _Podcasts gtk-refresh itemUpdate Check for new episodes gtk-goto-bottom itemDownloadAllNew Download new episodes gtk-delete itemRemoveOldEpisodes Delete episodes gtk-preferences itemPreferences Preferences gtk-quit itemQuit Quit menuSubscriptions _Subscriptions gtk-find itemFind Discover new podcasts gtk-add itemAddChannel Add podcast via URL gtk-edit itemEditChannel Podcast settings gtk-remove itemRemoveChannel Unsubscribe gtk-remove Remove podcasts gtk-refresh itemUpdateChannel Update podcast gtk-open item_import_from_file Import from OPML file gtk-save-as itemExportChannels Export to OPML file Go to gpodder.net menuChannels _Episodes gtk-media-play itemPlaySelected Play gtk-open itemOpenSelected Open gtk-goto-bottom itemDownloadSelected Download gtk-stop item_cancel_download Cancel gtk-delete itemDeleteSelected Delete gtk-apply item_toggle_played Toggle new status gtk-dialog-authentication item_toggle_lock Change delete lock gtk-info item_episode_details Episode details menuExtras E_xtras gtk-refresh item_sync Sync to device item_update_youtube_subscriptions Update YouTube subscriptions menuView _View True itemShowToolbar Toolbar True itemShowDescription Episode descriptions item_view_episodes_all All episodes True item_view_episodes_all item_view_episodes_undeleted Hide deleted episodes item_view_episodes_all item_view_episodes_downloaded Downloaded episodes item_view_episodes_all item_view_episodes_unplayed Unplayed episodes False item_view_hide_boring_podcasts Hide podcasts without episodes menuHelp _Help gtk-help wiki User manual item_check_for_updates Software updates gtk-about itemAbout False gPodder GTK_WIN_POS_CENTER False False False False GDK_WINDOW_TYPE_HINT_NORMAL True False True False True GTK_PACK_DIRECTION_LTR GTK_PACK_DIRECTION_LTR 0 False False True True True Download True gtk-go-down True True True False False True True gtk-media-play True True True False False True True Cancel True gtk-cancel True True True False False True True True True False False True gtk-preferences True True False False True True True True False False True gtk-quit True True False False True 0 False True 5 True False True True True True GTK_POS_TOP False False 5 True True True False 5 True True GTK_POLICY_AUTOMATIC GTK_POLICY_AUTOMATIC GTK_SHADOW_IN GTK_CORNER_TOP_LEFT True True False False True False True False False False 0 True True 6 True gtk-close False True True False Check for new episodes True True 0 True True False 6 0.10000000149 PANGO_ELLIPSIZE_MIDDLE 0 True True True True True gtk-cancel 4 0 False False 0 True True 0 False False False False True 6 True True GTK_POLICY_AUTOMATIC GTK_POLICY_AUTOMATIC GTK_SHADOW_IN GTK_CORNER_TOP_LEFT True True True True True True False False False False False True True 6 True Filter: False True True gtk-close False True False True False True True Podcasts False False False False -1 False 5 True False 5 True True GTK_POLICY_AUTOMATIC GTK_POLICY_AUTOMATIC GTK_SHADOW_IN GTK_CORNER_TOP_LEFT True True False False True False True False False False 0 True True True 10 True 5 Limit rate to True True False True False True True 1 1 adjustment1 False True 0 KiB/s False False True True True 5 Limit downloads to True True False True False True True 1 adjustment2 False False 0 False False False True True Progress False False False False -1 False 0 True True 0 True True gpodder-3.9.0/share/gpodder/ui/gtk/gpodderconfigeditor.ui0000644000016000001710000001607412654461624024613 0ustar jenkinsjenkins00000000000000 True False gPodder Configuration Editor GTK_WIN_POS_CENTER_ON_PARENT True 750 450 False False False GDK_WINDOW_TYPE_HINT_DIALOG True False True False 5 True 5 True False 6 True Search for: False False False False -1 False 0 False False True True True 0 True т— False 0 True True True True Show All True True 0 False False 0 False False True True GTK_POLICY_AUTOMATIC GTK_POLICY_AUTOMATIC GTK_SHADOW_IN GTK_CORNER_TOP_LEFT True True True False False True False False False 0 True True True GTK_BUTTONBOX_END True True True True gtk-close True True False False False True gpodder-3.9.0/share/gpodder/ui/gtk/gpodderaddpodcast.ui0000644000016000001710000000772312654461624024246 0ustar jenkinsjenkins00000000000000 Add a new podcast dialog True 400 GTK_BUTTONBOX_END True gtk-cancel True True gtk-add false True 0 False True GTK_PACK_END 10 True False 5 True URL: 0 False False True True True 0 True True gtk-paste True True 0 False False 0 True True btn_close btn_add gpodder-3.9.0/share/gpodder/ui/gtk/gpodderepisodeselector.ui0000644000016000001710000003515012654461624025324 0ustar jenkinsjenkins00000000000000 False True Select episodes GTK_WIN_POS_CENTER_ON_PARENT True 600 400 False False False GDK_WINDOW_TYPE_HINT_DIALOG True False True False 5 True 5 additional text False False False False 0 -1 False 0 False False True True GTK_POLICY_AUTOMATIC GTK_POLICY_AUTOMATIC GTK_SHADOW_IN GTK_CORNER_TOP_LEFT True True False False False True False False False 0 True True True False 5 True True True True 0 0 0 0 0 0 True False 2 True gtk-apply 4 0 False False True Select all True False False False -1 False 0 False False 0 False False True True True True 0 0 0 0 0 0 True False 2 True gtk-revert-to-saved 4 0 False False True Select none True False False False -1 False 0 False False 0 False False True False False GTK_JUSTIFY_RIGHT False False 1 -1 False 0 True True 0 False True True False 5 False True Remove True True 0 False False True True gtk-cancel True True 0 False False True True True True True gtk-ok True True 0 False False 0 False True gpodder-3.9.0/share/gpodder/ui/gtk/gpodderpodcastdirectory.ui0000644000016000001710000002711312654461624025515 0ustar jenkinsjenkins00000000000000 False False 6 Find new podcasts True center-on-parent 600 400 dialog True False 6 True False end Select All True True False True False False 0 Select None True True False True False False 1 gtk-cancel True True True True True False True False False 2 gtk-add True True False True False False 3 False True end 0 True True True True never automatic in True True False False False True True False 5 True False 5 True False label False True 0 True True т€Ђ False False True True True True 1 ... True True True False True 2 False True 0 True True automatic automatic False True 1 True True never automatic in True True False True True 2 True True True True 1 btnSelectAll btnSelectNone btnCancel btnOK gpodder-3.9.0/share/man/0000755000016000001710000000000012654461626016152 5ustar jenkinsjenkins00000000000000gpodder-3.9.0/share/man/man1/0000755000016000001710000000000012654461626017006 5ustar jenkinsjenkins00000000000000gpodder-3.9.0/share/man/man1/gpodder.10000644000016000001710000000134712654461624020517 0ustar jenkinsjenkins00000000000000.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.47.3. .TH GPODDER "1" "February 2016" "gpodder 3.9.0" "User Commands" .SH NAME gpodder \- Media aggregator and podcast client .SH SYNOPSIS .B gpodder [\fI\,options\/\fR] .SH DESCRIPTION gPodder enables you to subscribe to media feeds (RSS, Atom, YouTube, Soundcloud, Vimeo and XSPF) and automatically download new content. .PP This is the gPodder GUI. See gpo(1) for the command\-line interface. .SH OPTIONS .TP \fB\-\-version\fR show program's version number and exit .TP \fB\-h\fR, \fB\-\-help\fR show this help message and exit .TP \fB\-v\fR, \fB\-\-verbose\fR print logging output on the console .TP \fB\-s\fR URL, \fB\-\-subscribe\fR=\fI\,URL\/\fR subscribe to the feed at URL gpodder-3.9.0/share/man/man1/gpo.10000644000016000001710000000424212654461624017655 0ustar jenkinsjenkins00000000000000.TH GPO "1" "May 2015" "gpodder 3.8.4" "User Commands" .SH NAME gpo \- Text mode interface of gPodder .SH SYNOPSIS .B gpo [\fI--verbose|-v\fR] [\fICOMMAND\fR] [\fIparams...\fR] .SH DESCRIPTION .PP gpo is the text mode interface of gPodder. Run it without any arguments to start the interactive shell (see below). Use "gpo help" to get a list of supported commands. .PP gpo can be used to manage podcasts from the command line without having to start gPodder. It can also be used to automate tasks such as downloading or updating feeds. .PP The database and files are the same as used by \fIgpodder(1)\fR. .SH INTERACTIVE SHELL MODE .PP If you run "gpo" without \fICOMMAND\fR it will enter its interactive shell mode. From there, you can type commands directly. When readline is available, this shell supports completion using . Podcast feed URLs are also completed for commands that take the URL of a podcast as argument. .PP Some commands (e.g. \fIsearch\fR and \fItoplist\fR) will provide a query in interactive shell mode (to subscribe to podcasts). These queries will not be shown when started directly from the command line. .SH COMMAND PREFIXES .PP For all commands, you can use only the first few characters instead of the full command, as long as the command is unique. If not, gpo will show you all matching commands and the shortest prefix of each. .PP Please note that future additions to the command set could change the shortest prefix of any given command, so usage of the full command in scripts is recommended (e.g. use "gpo update" and not "gpo up" in scripts and cronjobs). The short command prefixes are mostly useful for interactive usage. .SH EXAMPLES .PP .B gpo .RS 4 Enter interactive shell mode .RE .PP .B gpo update && gpo download .RS 4 Check for new episodes, then download all new episodes .RE .PP .B gpo search linux outlaws .RS 4 Search the directory for podcasts named "linux outlaws" .RE .PP .B gpo youtube http://youtube.com/watch?v=oHg5SJYRHA0 .RS 4 Print download URL of a YouTube video to stdout .RE .SH SEE ALSO .PP gpodder(1) .SH BUGS .PP If you find bugs, don't keep them for yourself! .PP Report bugs and feature requests at \fIhttp://bugs.gpodder.org/\fR gpodder-3.9.0/share/man/man1/gpodder-migrate2tres.10000644000016000001710000000112012654461624023112 0ustar jenkinsjenkins00000000000000.TH GPODDER-MIGRATE2TRES "1" "May 2012" "gpodder 3.2.0" "User Commands" .SH NAME gpodder-migrate2tres \- gpodder 2.x to 3.x profile migrator .SH SYNOPSIS .B gpodder-migrate2tres .SH DESCRIPTION Command-line utility to migrate user's gPodder 2.x configuration data for use with gPodder 3.x. Invoke the command with no options to migrate the configuration data for the current user. Feedback is provided. .PP The gpodder-backup utility (included with gPodder 2.x) can be used to backup the configuration prior to migration. There isn't currently a migration from gPodder 3.x to gPodder 2.x. gpodder-3.9.0/share/icons/0000755000016000001710000000000012654461626016512 5ustar jenkinsjenkins00000000000000gpodder-3.9.0/share/icons/hicolor/0000755000016000001710000000000012654461626020151 5ustar jenkinsjenkins00000000000000gpodder-3.9.0/share/icons/hicolor/22x22/0000755000016000001710000000000012654461626020730 5ustar jenkinsjenkins00000000000000gpodder-3.9.0/share/icons/hicolor/22x22/apps/0000755000016000001710000000000012654461626021673 5ustar jenkinsjenkins00000000000000gpodder-3.9.0/share/icons/hicolor/22x22/apps/gpodder.png0000644000016000001710000000251612654461624024027 0ustar jenkinsjenkins00000000000000‰PNG  IHDRФДl;sBIT|dˆ pHYs з зB(›xtEXtSoftwarewww.inkscape.org›ю<ЫIDAT8ЕдoLUu№яяwю9‡{Им{%! ё‚ (†9„d’l8P1T6‹й–CЭ5“­wеFoB}#Ќец›s 7›‹^PБЛЂЩецLВd9*є*о€ їЯЙЯ=їœЇMSТеZ}ЗпЛчљќЖgЯFDј?bљ‡ul№ €Ÿ$ў-,ФbБw‰шMUUeЧУ‡Йnн:фццB„“В,№ФˆhЉ—‡GЏ]Л+--%Ю9•••Qaa!I’D%%%488SUѕ9—2–BY(эщщIY­V:}њt2 Ц/ѕ_ п™КPU5qтФ 1FНННIUUo‘ќЗp2™ь‹2ЦшЪ•+‘P(єљžњ}чZЗь‹7ll\xџ“ЛTUыююжа№№p˜ˆ-vит­…BоэлЗЏRеееЁООО›љY+7ПжrHœY№с‹oЏп оuЙ\.g^^OЅRЬэv/(Šв`ќI3ЮŽЧуIЮ9577ыѕѕѕZ__х,ЯЁзwПAoПкE6[ бХ‹Щщtъьь$MгтDФ–…ЌЊъƒƒƒ1Y–ЩсpаммЉЊJgЯžЅЊЕЯгўлiяžНf$ЁH$BGŽ!‹ХB(Фˆшщd хсpИЈЅЅEб4 [Зn…нn‡$IЈ­­…wж‹yеђѕхL’$H’„ЃGBEРььЌ рі(оіbШ\–‰?ыMпїO3EQF#‘ШNMг^ёЯљ;ўРњс‘aђx<ђc№ЖgЗ•˜ІЩ2Ф Ÿћ†;Ц+vкœOUV 5miЮжЃ›пџz=vї7Џ‡LКЬЙЅXјFг4*eIІ—кwћяXёnЈhtЫRˆI=‘AŒё cШ^™W@Ue›2Bў0DYD†M‚wжk$ CБfJ›йЫrр›ЦшФwŸ|sуЋУЯ&СммPнЈˆ\c &L1Ѕk+dЩ #•F$c щTБ‚eЋЖœ D€ pp0јцяЧŒtz@фс™y_VAž‹“I`Ф!ZA 6Їэa!Р9‡ p€5€Ÿ''їfюЊ™)ыGўŸ/Ёiк‡œѓџ "Ђ'ЧqЖ›ІiэмЙг>}: EQ h4J]]]Іaˆ(0•Ю“Bˆ-їюнГt]Їp8LGMŒŒЄ._ИœsGœ;w.YWWGœs:~ќxк0ŒN"’Ÿ№œeY‰%K–P4ЅD"‘J&“Ÿд.­ЛЙvйzЋњЅ5WœŒГ5™L>иЛwЏЭ9ЇѓчЯ›BˆmO№Щ–e2™цC‡)wяоХсУ‡3›6m:R)•”€^}]Ішe‘Вb]зЛЧЦЦrUUUhnnжвщєЧцLж{ ЭfkOŸ>-Џ[З555cЌ1TTјоэјяšыК( ЭP‡ЌЁvяо]cšf`pp:::акк:=Nџ {і, ЄЄКЎУыѕТыѕЂъ•* YqŒ$†P^^Y–‘ЫхP__ŸЯшээUђљќМЉ"“Щс№C ЫЪЪР9Ч† АyѓfСЬ$сК„T*…7"‹1ПпшяяgІi.˜ВЩЖmЭ;pщв%†ііvtwwуdлIЬ›1‹#KpАх :;; …р8FFFБX, ‹,zЄ=yUмЏЈЈ(Лzѕ*FGGaYЮœ9ƒp8Œхбил Ю8ZZ?УЉoOЁДД===(,,tнcЧŽљmлЎЌ­­НЈiкЈІi+'?Œ™LЦШчѓЙ†††LCCƒИvэmнКU”FаЗ>Ѕ}[аЊЅеДhс"ЗЅЅ…t]OE"‘§–eДЕЕT\\LЛvэЪ›ІgOXз~6c, ПЖmЛЎ@+ИЙВ|•Оbё*еJXЭ ЁЅѕѓмpzшЇd2yBqdxxxvзйЎэЗnмnЈ{Ѓі…}ћїљ›››S€ЪЪJEЕеzзEˆ1i€ 1(C’бћс™sЖWНеŒб$ІЭ(РЅ?ЇуУСбЂyЎыЮ јљYЁYојx<љЭї'њ<<ЈЎXѓ]aЈp…а(IчгvšeŒ—Бй3УЂl^Йт!/ВЉ,dŸ Е@ј9 Чq h |^/r"“э­йЛќГЩ х/—U*ŸWИрœƒqЦ„ШІВАmœ3ˆ\Щ1ŠO…Њ"ˆœ !Йјc 7ЯЙдўHіoQ_яРйЅ‘rРџ21ЫœC *€іW)Œ1H’ЮђфТHŽузž_вCїЩЭхп™Иї#‹V.^Y(Уџ•ыŠjП/РTEŒ1Ц%‰qЦ!qЦ“8gŒe;ŸЪЄD*kњ\с2‰KƒТ_ ž;мy­sќ1РD‚1Ж|сk 90›ЩЩœ‘ ™— $3q€ї{dъыИв‘˜<ŠSžu<і<ыј!жњ‰bLi“IENDЎB`‚gpodder-3.9.0/share/icons/hicolor/scalable/0000755000016000001710000000000012654461626021717 5ustar jenkinsjenkins00000000000000gpodder-3.9.0/share/icons/hicolor/scalable/apps/0000755000016000001710000000000012654461626022662 5ustar jenkinsjenkins00000000000000gpodder-3.9.0/share/icons/hicolor/scalable/apps/gpodder.svg0000644000016000001710000022414612654461624025036 0ustar jenkinsjenkins00000000000000 image/svg+xml gpodder-3.9.0/share/icons/hicolor/48x48/0000755000016000001710000000000012654461626020750 5ustar jenkinsjenkins00000000000000gpodder-3.9.0/share/icons/hicolor/48x48/apps/0000755000016000001710000000000012654461626021713 5ustar jenkinsjenkins00000000000000gpodder-3.9.0/share/icons/hicolor/48x48/apps/gpodder.png0000644000016000001710000000722112654461624024045 0ustar jenkinsjenkins00000000000000‰PNG  IHDR00Wљ‡sBIT|dˆ pHYs з зB(›xtEXtSoftwarewww.inkscape.org›ю<IDAThэZ{p•E–џў7Й7Knб€&"a„$ Œ‚’D]Xv† e%‹ЂЃSЌЛŽ[eщЎШюрАГЛ%;3[,GВ;ј@H›†$Ѓ< ѓђ"Щ}пћuŸ§#Щ%!AA(­ЉкSеuЛћžюѓћѕ9нпљњ^bfќ9‹јЁмЊќ?Zєл<п(x @VпќчœP*јn—AК ›8 Р*I)ЧWVVЂЌЌ pЙ\pЙ\HHH€ЫхТƒ>ˆŒŒŒЫ6x@рVƒ™oЅ,RЖ—––rII Л\.РXЉї]зЙЄЄ„ПќђKfцf^ХЬк­`јЎMfў‡ЮЮNž?>`"тЉSЇђњѕыЙЖЖ–k*kИсы>wюWWWѓћяПЯsцЬ‰[Иpa?‘Ь,ОOБЬ\]WWЧcЦŒaМdЩnnnffnЊ­ЉнЕрGEMѓІ<цyhТ\џOљi)3Яeцdц+Gх 0NHHр/Ој‚™љ_™™О/П*--eЛнЮКЎѓ–-[˜™Л˜љЇЬŒYйsЊŸђ%ѕі Пф7ŸнТEг‹нљуf=з7жСЬЭЬ]Лvэb!ЇЇЇsCC3ѓЏО ‰›нФsš››їgffТnЗcЯž=ШЫЫћ@ €Џ В ŠтbGќюЁ~ьшщшa3 ЂWюѓЄяЮ#:вй7ЯћЖoп>rХŠ;v,:„„„„"e7шfž1~§Ъ+ЏРчѓсэЗпF^^о‰ђђђ‡‰ш."z’„О<3=гєСЬBаYGzЪЌБё8=2!!с?GѕћЂЂЂ† 6рфЩ“xъЉЇ`ѕЭ€nюнX]]§‹мм\L›6 •••ўтттіяпџfZZйl6jќКбQ4у ‘™8в’УfРЇ<јэ';Z4‡ˆ[ЛvmL||Œќќ|Lš4 Ы—/jлЖmіММі(ОКtаибˆьqйˆŠŠЄгOdђфЩ=z4Z[[UUU8vьа›Ђа­ РКўЭ.ЅDKK‹cоМyИњAсBчy@SG f >АНtщRDEEEŒ655€ щл|[6:ПЖЖЖрЅ—^B}}=`гІM˜9s&Lгv3cЪ”)Идq’A$''CˆоЕ"КЈгІMƒišzs;ЗлžžФХХЅhН—˜д™““4œ8NјўH›ˆ „ˆ€П–Dvvv|П477#...РП рЗ…PSzzњ ЛнŽёуЧйŒCТ4MКА "а?F)…@)"‚aHIIlИ7Œџ.aГй"КЎ#...в>sц /^ŒŒŒ Мїо{ "l6,†&ttuuEє[ZZ0fЬ<ќ№У˜5kжеѓќ677Нљ–\ ввЎЮcYzzzРЬPJaхЪ•(--ECCžyцДЗЗУэv# !кŒFjќH9Tб_Гf GŽСЅK— ”КrЗЩ€KУHJ‰ююn(ЅpсТ”——њюГЯ>УщгЇqGB Bš+}:VЎ\‰ТТТѓ6оЭ=РЬ(++‹И}У† HHH@ZZоzы-8ь.нƒдиЋЄЧЅOРжwЖBJ‰uыж!55O<ё6oо )%ЊЋЋaЗлЯ:Ž=EEEXЕj:;;я№ ?Coњ=ьCэFВбwvяо§ќюнЛ‘žžŽ‘#GтЕз^Cuu5RRR@D№x<Айl0 /^ФфIрљy?‡Эшнќž€л?§gджеТхrсZ››7oV[Зnнъёxо•Rж/YВDЏЉЉAaa!fЯžќќ|8Ю+шНбј{_м |џ @€ІщгЇЯ-,,МяЙчžВ*жoРч8Œљ ѕXћпИgђhl§Ї­ƒњ[[[1eЪПЧуЩeцzјУ‡Ч”••aпО}8yђ$&L˜€eЫ–сйgŸm0@э"DtŸнn?Жџ~{VVVЄПММO/{Kѓ—Уi1hLШ bчџў=2›6oј|>,[ЖЬwфШ‘­>ŸяяЈЇXиWfx<­ІІ/Ој"Š‹‹БnнКŽ>'ОѓНišO'&&ny§ѕзэгІMУ‡~ˆ ы7р'Г–тюФЛє‡†Œ6ТЏ?~ОАЯš>=7TQQADtРэvџ3ЏcЪр~‹Џ\ЙђЗѓцЭCAAоxуNїмвХ-r:Џz<žћЧСєи;У3'|Dt—Rъ>гf8r2'й’)фэђ ›пє‹a3рˆГƒ„@ €Э4!„€’ J*HЉ - –}+ t 0€O*їuЌџ4БЎA!$4}ўиŒћэwЅd@I)4M‹К …рѓ{Вс`–R Š%X1ЂЃэˆ‹‰…!LМИ;=пф(@8FW[woŠ­ нA(Љњ2йОї…HНo3 Э3;Ю5ˆAdЧDЧ ш "шПzЊ‘ hšCГС4Ѓњ•J*јЎРjјNzіW @г5 ѓВvЈЎЃЃЋ‚Dнu 0Ћ {T ThАћY1,eсAн})BВЗEƒFЊ‘ЗБoх7D4C‡i7ёеЉ3ОА”Пћьаt ЪRѕ№й рЛЙY1l&Ь(D„š/ЊнЧ§vї/ЏK@ј ідётЉйЙQбŽ(„УЌА–п`‚ІkAhЬ(VШBуХFдŸ;сЕЄЌ‚.Ÿx<оКЌЌvэRмп7Й6nмИhгŒw™РTВД|™3!е§ІirJТHЭeзMУ$У0aгM˜† C7a&tMƒbеKPI(f(Х`V`Ѕ ЙЗnY‚с ‚Ё‚Ё ћƒ~ЋЧзmyМna)KBы`RM„ПД u4LВ• Щ+utАR­^‡ЃыByyˆ™еРboR’Џ7Ј€“–І.z*ƒb›ƒ™юЖГcIQ‚.4Ї€p(Ь1GГтhы$)bH)$KАА@,ђ+(7Cv…•КRn%шВeШЦЦэDJ‘"&"Ѕ˜%@!X$!М:”?Ќы!—л-/єўю6јAFыж‰{~ѓ.—MX– >ЅL›iš–%4MXšRš`IIЉiJJSBSB(Ё„RBг4&f!„`f’DLJ)"RЊџ“Y !IЁЄJHЁ„JЉЄвЅЎ”$Ё ‡CзCšз4 #tьи1‹ћ€I%шъ­-ZДˆЮŸ?/:bc5—л-€АœNrZY–ERJ’2†TŒ$)%))ЩЁь$Ѓ{ыЌTdы“,45ПŸН§uMcсби4§ >wк\њHРъ\Pр=я8§%ЩКЭap$€ЙсpxњЁC‡єВВ2”••сфЩ“ˆFЃpRJєъе yyy3f rrrNxРЏ4мNСЬЗЃŒdц#Чч АпяgФfћ ‹‚ЧЧыж­уH$dцafу6ЩyЫ- Р UUUOЬŸ?Ÿ6oоŒ8"Bnn.† †СƒУ0 (ŠЧqP^^ŽcЧŽс№сУЈЋЋK0ынЛ7–/_ŽЩ“'P `я­Р-Е€\)х™W_}ЕеŒїщг‡_xсОpс3ѓ‰`CpУыЏМОjх/^{е4Эя2ѓ{џ›ЖlйRXTT„p8ŒО}ћтаЁCŸЯ7 РŸnFxрц7B/Пўњы хПџ§яcХŠхD4-”ŸEГUSV Оыn_Ј!”lE,Тƒ@n^'AкЯZ2&"Б8iЪ”)ыKJJ@D8qтž|ђI/€ є›”џІИяєщгs,X(((РВeЫ.  ’ˆ$Ђa5§j†љ:љќ>=ЎуЖb †бЋћŠЂŠoє+H&ЂОЊЊЎ'ЂЎы‡‰hqNNЮ “'OоћЬ3ЯжЏ_Э›7|ћ&фpsќг’%KаддПпuыжБЂ(QНЂЊj bЛКe•eošŽщЕЃv&Ь€ŒJфtыЩЧЯџ }’••5ѓљчŸWgܘ1$==}бљѓчїNš4iЩвЅKC§њѕМјт‹№O”›ас†}@џšššЃ={і$ЫВ№ьГЯbщвЅ‰шлЊЊО“œœ|oqqБіРрвЅKxх•W№Ю;я`jўt юyOfŠ"PеtПкђ*.|?ќсЁ(1НЂб({ь1їнwпlмИБЄЁЁс;sцЬМџўћ>|ј7ќўFИбГ@бЪ•+ЩВ,hš†yѓцСЖэEYЃiZ~iiЉяПџ~,^МЏ§ъ5dІf#УпЕ3лЖБuп[6ьXИp!„Иb˜ыж­SŠŠŠ<ГgЯžqтФ‰ІЬЬLпЙsчАvэZ >|n€]cЖoп˜8q"ВВВозu} 3ЯZГf2pр@! „AŸќф'€пxЎtZ1ћуЩИиX‹+V@Q”ФиxёzНиАaƒš’’тyюЙчЮ?Аwя^xРПx@П/ЏыКУЪЪЪ#GŽ„у8;u]џбœ9shќјё ХуЪ !`VЎ\‰ uчQ~ўгV OV—cвЄIШЭЭmZЫ’””„ЇŸ~ZлВeKnnn.ру?ЦŠ+ВŸўљчЪЪЪ0шЫ ябЃGp8 ШЯЯЧSO=FЃ™ХХХmoYњіэ‹§ ќм‰3f‰ЊK•(((hеЗ=O<ёрЙчžkۘ?>~њгŸbЯž=§eрiy`ЩЪЪBiiщ„ќќ|'ДЋxЫђ№д‡qЊКБM#pЁўЈЈ­@rВyyymfН=+xјс‡сКnсšШщ(‰o>|xи'Ÿ|‚нЛw'*gЯž )% [yяіˆ™1dШ$ћ’QuЉ =:gЁЩ Ђ[зЎPе˜(Dдf\ЫКAƒAUU8NkGzіьYр, #œ[Кt)о|ѓЭV•№ћ§швЅЫu3sB‘ддT˜бHЂ->Лqj„8†@ €#GŽДЊПQ шШ8›н>РЙЙЙзt|э™rJJ*,лК"Ф5Ь§ZхОћюƒІi­d8wюЄ”нбСaGЈjUUw~эE€–ПуэЉЉ)0m3СƒЎълђњйgŸС4ЭФX лЖI )%цЮ‹ъыыБdЩ’D{{QИБPxг>€™Q__)eBјŸџќчhhИ’Эv]?ўё}Ž;†.Щ1Ї™ž+jсШ‘#‰і;vрэЗпnuŸгЇOCJ )%\зmзQоH$шŸgffђеЁЮu]дзз'”ЏЎЎЦкЕkл >qтЄ”ЈЏЏGuMuт@”сЯ€GїррСƒ эЏЊЊJД_Нў}>юОћnј§~р6UUЕЖ{їю­*]зE]]]B0г4Fл .((3ујёу€.ў ‘@Д,§єг„p=zє@ЫЃpœ-Z)%Ž= EQцKKДeuЮЦŽџнЫВ ЅL8е8edd$Ц33vяо-=ЯЮ>}њЌ:t(vюм зuпBьTјgSGhзVTT ММ<сЄVЎ\‰nнК%кчЮ‹QЃFAJ‰7ЂwЗ>тJИўzŸo ЖЖ6l€”3fЬРНїо ШЬЬФъеЋ‘”””ААpEEХV-XА•••xщЅ—2ь0ˆMˆTхфф@зudee!;;йййиМy3ЖnнŠљѓчˆ>њћїяGяоНбЋW/H)qцЬькЕ Г†?вŠijRgzФK/Н„ЂЂ"†элЗЃЊЊ ™™™B$ж§ЁC‡`Y–`€wоyчж%K–<АpсB:thШДiгўkмИqшж­лqФRrя#іDщd{ u4%ЖШ4Э Уpˆш<€ГЊFŒ1HJyзЖmлкЕЈИЧ^Мx1VНЖ &џD­Лж6жр?З§ЋWЏЦ”)SкН93ЃИИXОѕж[5ЖmЧ7<нќ~гІMї-[Ж,сL ЅWЏ^˜рдЭ  €j‰`LD3ˆЈdгІM=ztХрѓЯ?GСˆ Щљ:FЦЖЫ|гў8{Йomy yyymкwьийГgР,f.iбdјg3jjjlнК;wюФСƒKѓЩ'ŸФђхЫы4M›Ž˜ѕмз$UUџ;%%eТО}ћдєєєVЪƒAL˜0ѕЕ x|є№hžvyиЎѕя­AНU‡Э›7cР€‰ЖѓчЯcтФ‰vuuѕЧyј:ЂєF,Mv€aѕѕѕwОёЦ˜7o АeЫ–ˆЯч `?p  ЂtUU?ЩЯЯяВ|љr‘••ИtщŠ‹‹љШс#єН‡~]зхuЂиАo-Њ/_@сИB5j?~ЋWЏ–Ь\ы8ЮfОабвЌ*--}pіьй;v,ЖlйrQUесЪoщуq"ЅЊъяЄ”zш!Оxё"янЛW‘=bР(ч›ЃЇwК\Sџ…|єdыwЌ1?ЛpъЄ5ћ !‚Žуќ€W™9ђ… к’р7лЖm›YTT„’’Œ?~?€ќ[ў†fыКўД”ВЪqœ7’““џчžžCOO,x 9Д!]y]ОTŽž>bžќќд?юљdїЏрoI €_‡BЁo'%%§Р?ЈНхя1Г`MsIPс qя\nЌ›šЂwFдmЛSlIЎу"5%нЃ]Ј,dц_vT†1cЦЈN-ю@"д‰ й‡П5уўя,^Мx €wт}ПЌ—ЄрJYуИЮuГ=qŠšQфtЯС‘O??20іоїŽю<№EcFй™u‚ІЉЯRŒѕ{;9=Кdz3вКjI^Ž|њСœoО[Йx1–ЕwЛ_’фххщдэмјсв`лУL{фKMB]гEоџбўˆdї5)БSa>Х‚Н.Q’В+HН[UФWrЬОnщн­ЌЎYЩнг{Ра иQЖeCBНyџtряй>Йх}кЕ€‘Ч<Ј“ђƒ4!ЧЕ0с8\ёЉэ„Ыї—яoќs•/8fh75sUЯЌœNХ‹FќГЦ…ТHѓwЁПЫŸаЉђBхїj.U?оi‚"Tж4… Э#вќiО_Њ№ћR””з–Кmйˆ†lDLИ’`ёzМЃЭ)ЋŒ Œžщ5<ЋпuO'E8ŽІp“lhjh †e(ђ2`)BT8.™ы˜eˆСafŽ0СT ВE*„шыёx’н5Ш“jЄS8AG-N34ш†Uз Хž&0CJ†k;pŽэТuмDтU–M)КOХі}л>пљбŽV‡™6 +кќ{њ}НSzrW8QЂ“@їЮBUё+J,ЅeY–Š4 lŠ4 tЄWJHщ‚YJ—Ѕы5%n„˜)%4]C''ь§№НАi…џАчOЛv_нЗЕ$5S-вз†юбa[6Hа_”rз"nў`ЩЊ@rJ2ЂŽ…}Gі˜ыkўиh4<Ъэ„ VY‰ВВВ˜жя9ќnHё|ЉIа $(ООъПX1b3›e†tc!Q€бЩ€П‹ŸŸ}bo{ЋY]waхх œ 4k–BWmEћ€цёЕЏжr’шYUˆEwfнЅfuЭVSќ)Ы†ЕсиЄл EмќЏ|ie17І%_™биGŒЏ (ŠEPT%Qˆa3Œъ‹pцќ™P]уE](ЪЮў™mp…bл–Љы– YšІEЫЪЪ\f–mšЧуёZBјН–2Ф`у[*”IšЂыў 5=-COKIGJВŠЂ€eќIƒЅK†dŽе7gpуFGЭБ2~mщ7ЎЎ#Ђи‚JHW" Ѓ)мˆЦP#74е[—›.ЫPИI`Г уьн%z@ ‚(J$-•(ьJt‰”ЮƒiбЈЕkз.—™ЙЅ ЫВ№+ф‰ъЗœШkRХzУвСЫЁўUѕŸїL}\зщЌЉšЃjЊ4TCК‡<К!tЭЃšGбu †j@зtEK —уЙ1гe –’e @vс6_з•f4т˜–щšQ–mR4U\щЊBЈAT;ьœq„[хЮ9†}N7I‘$f"NpYе%ЩR*QRЄцmhP‚Ž“0Я–pJJŠ4M# U6Б-ШU][qE(Њ[ћЂPЪТ0UIЊ*Є47šЂКJ2œІd2‘,Щ`JVHјDš€№рЇX2Тр0р2рpv˜рl3УaАЭЬЖdЖAl18шЁШ Kм’t„х`’2І,Л$˜\—‘”$]IpРУv…kЊŒА*EШT),„А{їю-у/y%`f&"wєшбІe Wj2т8Ў†Ћ MЈ`ж“ц VРЌиJTА”Ba• 2I)…"…`fbEBJС sЌ R&f…˜™nЙ`"—]—˜DL1‚Ы$„$—и%!Щu˜YH"—‰…$вУ‚„ЄHW‘ЎrА%ГlйŽ6ТFдiђкйwћœ’’mCЭЮfЮœIЇOŸІiR(#CЄƒЂЩуQМЁb{НТ )%Й^/Iз%–’пІгщЬюЩВL SGуš™™Qуё8ѕєєPEEƒСwG’$yЋЋЋЩfГQ*•"I’HQrД;(™LR4ЅЕЕ5*//ЇхххР‘ вщєv"‘€бhФЪЪ ЌV+М^/И `ww‡ƒZ­ŠЂhr#р ŠbШd2a}}fГcccащtаdŠ01>A~ПшъъJ—––юфA–хыЁPШрїћЕMMЯњ@+>ћC,?‘џџџџџџ>+>_P5MєT{џ‚U|џ}Sxџ‚V|џƒW}џƒW}џ„X~џ„Y~џ}Txџ|SwџzQtџC-Aщџџџџџџ@);8A+?јF.Cђ@+>ћA+?їC-AіmHiў…Wџ…WџsLnџC-AѕE/CѕrLmџ@+>њџџџџџџџџџ9+9‚s}3€j€ ,+œY;Vі…Wџ€Szџ:&8ї8(5M—‹—nB,@я?+=њџџџџџџџџџяяяNЭЭЭщщeeeєš™šќFBџхххџ&&&џыыыџ!!!џЬЬЬйџџџџџџџџџџџџрррЦ%%%џ,,,џіііџрррџїїїџ@;@џєєєџцццџкккџџеееаџџџџџџџџџџџџџџџ)ЧЧЧхRRRќ‡‡‡ј№№№џš˜™џC4AџДДДўђђђџYYYџџнннТџџџџџџџџџџџџџџџнннаџЃЃЃо969д7)6њB-Aї2-0ШZZZє...џйййхџџџ,џџџџџџџџџџџџџџџяяяRŽŽŽэqqq№нннХ››W—Œ•qуууЕiiiєgggѕъъъwџџџџџџџџџџџџџџџџџџџџџрррЃˆˆˆю$$$џыzzzђ222џgggітттИџџџџџџџџџџџџџџџџџџџџџџџџџџџхххcмммжНННфОООузззкчччtџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ€€€ј3Р€€€РРурјџџgpodder-3.9.0/share/icons/hicolor/40x40/0000755000016000001710000000000012654461626020730 5ustar jenkinsjenkins00000000000000gpodder-3.9.0/share/icons/hicolor/40x40/apps/0000755000016000001710000000000012654461626021673 5ustar jenkinsjenkins00000000000000gpodder-3.9.0/share/icons/hicolor/40x40/apps/gpodder.png0000644000016000001710000000531712654461624024031 0ustar jenkinsjenkins00000000000000‰PNG  IHDR((ŒўИmsBIT|dˆ pHYs з зB(›xtEXtSoftwarewww.inkscape.org›ю< LIDATX…э˜klTЧЧџ3їБынЕзј^Fь Аy цu І \J0%Бн6@x UˆV "MH›„†ІQЄBB‘?š)jŠq@СS0&сUqЄФ68Ж1Ло]пн{яЬщ№‚qЪ;m>єHѓaя™sЮoЯЬsц2"ТYјџрNђРѕ!љШ р+чСї}&xРЬііі‚={іx§~?RRR: 4ш!Дkз."Ђ‰w›AFwЎХ›333Ÿ7nŠŠŠ<ѓЬ3ЃЋЊЊ\„”…Г сЕ“0.s"рDуQ4‹ЫЈиYЦрнwпяПџОm†cвЄIиВeЫ•^`=P…'UUЅ 6а€.•••‘пя“'O’+ЮEkŠ^ЂчПB§ћЄгюнЛ)Ф†пяЇььlš0aЙ\.ZБb:tˆˆhЪƒюAoKKK–mл0 †aЄЬ™3ŠЂФFzz:В†dсТЗч`˜hѕЗ //ЏЫMгАzѕj;v xы­ЗP[[ iwZОлўЊЕЕЕ­ЊЊJ€ђђr,\ИPгuНKpUU1wо\\h=Ыm—0,{GНЂ((,,„"цМЁЁсћ/^̘—––NŸ>ммм.pc№рСEл!Є€ЫэъЇ( \.вгг*`CП~§b?c>|x,№ЭСSSS1# оОЎЎŒ1pЮ‘——ѓзиијр€ii7ь-ЫBRRc8x№ FЙsчЂ­­ qqq$ )кƒС˜ЭЂE‹0tшP”””@J ‡УqУљЕ іНрэК™Ц›3ЈiЎ\ЙЗлeЫ–сьйГ8~ќ8 ˜˜ˆ$O2z'ѕХ‡Елaл6Nœ8ВВ2@uu5Є”0ЭMMcc#ˆ(­ѓ(њOrзKЌ( ZZZ`š&šššbЯЅ”8ѕЯS№ъ‰pjNx=^œ:u @ 6gфШ‘B ЉЉ ЋWЏFNNš››С;r[К;vЩ eY8tшcXЕjt]‡ЯчCqq1vVьDŸзVыбGaгл›0lи0фхх!77ыж­C4EMMЕdЩ’ПOŸ>лЖm рgИЭ^Мm%Б,ЋѕљчŸONKKCss3ЊЋЋQYY ‡У№x<Ј­­EЩќ,КŒ1tD;№Юо?ЃіШaєьй3VM8€’’’‹@`В”ђЬSO=х ‡УШЯЯG~~>rrrЮsЮп№ЇЛ0 Р MMMMƒ њ№ƒ>ш1~ќx€mлјЩь9HД’0&c\ЬЈІюјжО„Šˆ‡“'O;wnЙmля `УхЫ—ЧWWWГ§ћїЃЖЖызЏЧДiг^№лЛьšnЦ RRRўЖuыVWZZжЌYCgС~ю[+bw™Лї‹нh№зущтЇeEEEG}}}­пяŸz‹ЫоžyWЎ\‰™3gЎ№в=€Ўы ЧLгLˆwЧ<єБ‡Lq‡с.ѓRАuw™}ЎщЋПУСlЇлkmmхt:?ўшЃz–––VткънћЅЩ4Э2Ци{НэeƒACбКЛБMУ3G˜n=ў№3ехЗъsss]ЎHТd…БŒБY`шпЛOЯ7Зэкі €ПtЮы’AЦ›2tЪ`Ю8Љaѕђžѓ{З:ОYІ yќ1o„]x<.t5дEЇъ*ЄfуРᧆђЄ-Ф^•+ƒc’D_ЎАФ$oВб;ЕЏ;ЕЧ#мЉ;БЛІв ЈWнŸ}іYЌы˜?lкŽИ8чTEQ„ašeлœsрр-k”$/ iЭїЊ\ыt;ѓFуtP3#нo–qn'n'šЎ\‚э.Ї‹Ч9нˆsЦAcl[@˜ЖmУяBUэЎ`G4œЕяФО†иС ШwђDuFСИЊД%U1B$MDŒдЈЩŠZ&,•šЊБx—y47Ђa Іѕнз^#Aд0‘ 'ТЋїрRJP”1 D8CЌŽAQ4и‚%ш(мb`МгkH[ЦЗЗ;—\саUtнB@t„щЛ?\;њ:Ѓл–;яZчuUУй~цf] Р3ŸъъъЈЙЙ™t]ПEDыˆH™Ќ]6‰$vљ§ў- №zНXО|9ьм‘иTЭG8FSSnнК…;wbѕъе_x €ёп`р—ћіэ#ЗлM‡"":Лўн:WыНдп§аxЃrщ;wю4бя;::hЪ”)дммLDє‹Щ0№яj:;;ЩхrQOOўhцД™_kq}jзкŸвюu{щ§њѕЩoОPл`љКuыœ>}кЪЯЯЇЖЖ6"Ђїџ“(DtaсТ…х+WЎDЧсУ‡3ЦдйЯЮЁwЋVЉz2 8 ‡>џYTq QZZJ@€эиБ#{џў§шээѕXќИ<ю7єЕЗЗ—‡B!”––†Z[[ПбййщьээЕ<ЃњћКƒС0Й‘гйй™нккъкИqЃ§Р400€K—.-а`щWЩяэоН›VЌXA%%%ё––ŠD"‰DЈЋЋ‹ђsђщЃw>І—ž_D{іьЁh4JБXŒbБЭŸ?ŸМ^/UTTаоН{‰ˆvLфg"~`уааˆNЇ3{йВePŠЂРчѓ!лхB0ФЕЁ+ЈЋЋ“)Š‚M›6!# ЃЃž}RŽ766R^^)ŠBЄыњ#§э•oгw^^AŒ1вuвщ4e2Ъd2 IUU@DD'Ÿ”С7n`xxšІСчѓ­NEQPьё ЅЇ И“% „УaУэvп748јX&рѕzBфцц‚1†UЋVЁЌЌ чЯŸ‡P8,В iY‡УшяяGII *++aY„€p8Œd2љЬD&к ЦH) …рїћqфШ@KK ОМи‡BwJŠKqюм9ј§~ФуqшКŽX,)%цЬ™ƒYГf!N;G€сЩ2ps€ЎышээХŒ3PXX‡УњњzPœыС4ЗŸљѓцЭƒ6l@,C:Жš››QUU…МММ(€oШ,€СЪЪJlйВ›7oЦ‰'`Злазз‡ЁЁ!ф:ђыЬУќч^Тgmm(//ЧѕызБ}ћv?~œ8чgЊЋЋkГйАvэкœƒўj``р€€)ЃŽ&Њ„*€мpгуёьоКukйš5kx$AmM-^}Ў3=ГКюЧе№em; г4Q[[›ŒD"ЏбЭЉTъЭюююМ“'O"ЂЉЉщВЂ(u‚“й С›­iZЯ’%KxOO˜т*цяT­Вщ §>œуєеќБї i!ФЮ‘‘‘]џФДР{gЯž§АЋЋ лЖmЛ rR"КТ›бооўCЗцОќт3ОЯлјЇ–eсѕЪ%’‡;ЮŸœKDїFeЕЕЕ нІ…–рoh6eQхЫ•Ї~ђЩчи ўЏО№Z#”1’УYЗ гИэПъ= Іњљзо,**јѕЂЏНтJDcѓЗ}С‹Щр­ЁD&“ўBлtЮY8Šмйn}jс4­ ЗP§ѓ• I“ЌЅПы<к<”еѓЊ_tк]нХ…™12ЄЇS"•ж5Ы’ B”нŠR•ЅЙЪЇWЈšЬbІaއ‰3d9В`ђ щВд,иИ 6Ё’С4LpСаМЙоэgО<ѓ9№P`’-,ё”А™ž9n)-pЮС91‚i…&ЩBA6шIІ5юШ"ЄFRрœСЮ Сф$гЧtTECЦШ0тBŽЮR№ЙN‡ЫžNe№ШЪ0€ c`‚сdTitИџ,~aP5вЄ#t7Є˜Q§ьП ТЭPєяњдщгьšЉС4MHгžєоТИррœC<гаq-xEџ[p€ЃО{А;5І>š М й9ŸhЊњ§Мœ|ЃИРc/ШЭч6Ў‚3ЮХ§cwFd=ƒ dЬ ЉЉ„OХ‘dœХb1C7гПIёдaкхœ1|ъд)ѓбL…qЦ6™ŸЧюХЊ†BC‹lL™Ч9w1Ц`аcŠB‚РЄ%9 €Р‘” ˜”ж] 4Iо–Œю’Bw$3њ-q)„T„сДлГcЬG`ŒБšš1(юpXиl6ХВ,Uч\Б)Š02ЁЉЊЊHžm2F&—жшЁ›siYŠ"…eI‹ШTLSJU•†ЉJ›&%O&3†a˜‰Ђ"Г —===&=pн$<ж­[‡SЇNaљђхиЗoм7аѓ‹:„={і ЉЉIhšMг№Рќ№sњтЦ*** Њ*4MУš5k х ЉX,3&8qтњћћ1::ŠЅK—BUU˜І‰ `№њFR#№ћ§PUgЮœAYYŠŠŠnl˜4(6cЦu$Ёы:жЎ]‹ттbDЃQdГY8UњЂ}hmmEmm-‚С тёјm3šш Иr:шщщAww7RЉ:;;Qu_5fM›рATUWМ^/‰6lи€7€@€блfTYY‰ЦЦF”””рєщгиН{7‚С zПяEйT?fU r.‚ццftttРчѓСыѕІЖmлfЕЕЕ! ЭKЇг?јЗŒ1С*&yфч;wю’тNџ‘ЧуљPБЬ0 5Pљ0ž}tЅџ%ЛBmй/ZКЎяЧу/’4qу…ЏŠ mˆ^ŠЎ43&ъыыК#„ѓц—зЬ-ѓ•МџXMЃчзЋ#pх8q=y'#с^ZжЋ”tйe*ф§BЪЇAмыt;ГэП.œVиќ;hIu§3šІюАi•J!B\ГlіI!gкЖе0Џт~ЅдWЎ%GRP‰м)yјщђ;:MъКƒЙЎ-ЯяђM-о‚Bt}ѕЩшH<биљЌчwзщКњђьВ9ГЫ‹Ыaf2ХFЦ(62Ц33Mб0­№^шІфH`Y6R#)ј‹+deYU>э›5Ж +kA л&и:№'{“Ј˜т)„ „B.Хмœ\ˆ< €ШY$ЦMŠ"!щDŠ"!Ѕ„царЬqтђрeЄŒЄ}]Йоѓm[­Ї"сsЪчЙ‹Іњрt8@тƒ7ЫЩ[(R‚2І‰”™Ц•kWp.к›3ЧFm+Лќьg3№3,™SїЂЎ:жкДЋŠJ!*RP@RJ UJ !!Є„"aл6SFRŽ™†Sa(B8ggЧп;9ђ)џ$>Ёы„bquC‰dЦЁ UЗ…­QP#]5 j6Є.l1І^r™ЎўЮ‹ЗmT&eяџ#юZ_ї‡J7?и*рIENDЎB`‚gpodder-3.9.0/share/applications/0000755000016000001710000000000012654461626020065 5ustar jenkinsjenkins00000000000000gpodder-3.9.0/share/applications/gpodder-url-handler.desktop.in0000644000016000001710000000037112654461624025723 0ustar jenkinsjenkins00000000000000[Desktop Entry] _Name=gPodder (subscribe to feed) Exec=__PREFIX__/bin/gpodder -s %u Icon=gpodder Terminal=false NoDisplay=true Type=Application MimeType=x-scheme-handler/gpodder;x-scheme-handler/feed;x-scheme-handler/podcast;x-scheme-handler/pcast; gpodder-3.9.0/share/applications/gpodder.desktop.in0000644000016000001710000000047112654461624023511 0ustar jenkinsjenkins00000000000000[Desktop Entry] _Name=gPodder _X-GNOME-FullName=gPodder Podcast Client _GenericName=Podcast Client _Comment=Subscribe to audio and video content from the web Exec=__PREFIX__/bin/gpodder Icon=gpodder Terminal=false Type=Application Categories=AudioVideo;Audio;Network;FileTransfer;News;GTK; StartupWMClass=gpodder gpodder-3.9.0/makefile0000644000016000001710000001157612654461624016005 0ustar jenkinsjenkins00000000000000# # gPodder - A media aggregator and podcast client # Copyright (c) 2005-2016 Thomas Perl and the gPodder Team # # gPodder is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 3 of the License, or # (at your option) any later version. # # gPodder is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . # # ########################################################################## BINFILE = bin/gpodder MANPAGE = share/man/man1/gpodder.1 GPODDER_SERVICE_FILE=share/dbus-1/services/org.gpodder.service GPODDER_SERVICE_FILE_IN=$(addsuffix .in,$(GPODDER_SERVICE_FILE)) DESKTOP_FILES_IN=$(wildcard share/applications/*.desktop.in) DESKTOP_FILES_IN_H=$(patsubst %.desktop.in,%.desktop.in.h,$(DESKTOP_FILES_IN)) DESKTOP_FILES=$(patsubst %.desktop.in,%.desktop,$(DESKTOP_FILES_IN)) MESSAGES = po/messages.pot POFILES = $(wildcard po/*.po) LOCALEDIR = share/locale MOFILES = $(patsubst po/%.po,$(LOCALEDIR)/%/LC_MESSAGES/gpodder.mo, $(POFILES)) UIFILES=$(wildcard share/gpodder/ui/gtk/*.ui) UIFILES_H=$(subst .ui,.ui.h,$(UIFILES)) GETTEXT_SOURCE=$(wildcard src/gpodder/*.py \ src/gpodder/gtkui/*.py \ src/gpodder/gtkui/interface/*.py \ src/gpodder/gtkui/desktop/*.py \ src/gpodder/plugins/*.py \ share/gpodder/extensions/*.py) GETTEXT_SOURCE += $(UIFILES_H) GETTEXT_SOURCE += $(wildcard bin/*) GETTEXT_SOURCE += $(DESKTOP_FILES_IN_H) DESTDIR ?= / PREFIX ?= /usr PYTHON ?= python HELP2MAN ?= help2man ########################################################################## help: @cat tools/make-help.txt ########################################################################## unittest: LC_ALL=C PYTHONPATH=src/ $(PYTHON) -m gpodder.unittests release: distclean $(PYTHON) setup.py sdist releasetest: unittest $(DESKTOP_FILES) $(POFILES) for f in $(DESKTOP_FILES); do desktop-file-validate $$f; done for f in $(POFILES); do msgfmt --check $$f; done $(GPODDER_SERVICE_FILE): $(GPODDER_SERVICE_FILE_IN) sed -e 's#__PREFIX__#$(PREFIX)#' $< >$@ %.desktop: %.desktop.in $(POFILES) sed -e 's#__PREFIX__#$(PREFIX)#' $< >$@.tmp intltool-merge -d -u po $@.tmp $@ rm -f $@.tmp %.desktop.in.h: %.desktop.in intltool-extract --quiet --type=gettext/ini $< install: messages $(GPODDER_SERVICE_FILE) $(DESKTOP_FILES) $(PYTHON) setup.py install --root=$(DESTDIR) --prefix=$(PREFIX) --optimize=1 release-win32: $(MAKE) -C tools/win32-setup cp tools/win32-setup/gpodder-*-setup.exe . $(MAKE) -C tools/win32-portable cp tools/win32-portable/gpodder-*-win32.zip . ########################################################################## manpage: $(MANPAGE) $(MANPAGE): src/gpodder/__init__.py $(BINFILE) LC_ALL=C $(HELP2MAN) --name="$(shell $(PYTHON) setup.py --description)" -N $(BINFILE) >$(MANPAGE) ########################################################################## messages: $(MOFILES) %.po: $(MESSAGES) msgmerge --silent $@ $< --output-file=$@ msgattrib --set-obsolete --ignore-file=$< -o $@ $@ msgattrib --no-obsolete -o $@ $@ $(LOCALEDIR)/%/LC_MESSAGES/gpodder.mo: po/%.po @mkdir -p $(@D) msgfmt $< -o $@ %.ui.h: %.ui intltool-extract --quiet --type=gettext/glade $< $(MESSAGES): $(GETTEXT_SOURCE) xgettext --from-code=utf-8 -LPython -k_:1 -kN_:1 -kN_:1,2 -kn_:1,2 -o $(MESSAGES) $^ ########################################################################## # This only works in a Git working commit, and assumes that the local Git # HEAD has already been pushed to the main repository. It's mainly useful # for the gPodder maintainer to quickly generate a commit link that can be # posted online in bug trackers and mailing lists. headlink: @echo http://gpodder.org/commit/`git show-ref HEAD | head -c8` ########################################################################## clean: $(PYTHON) setup.py clean find src/ '(' -name '*.pyc' -o -name '*.pyo' ')' -exec rm '{}' + find src/ -type d -name '__pycache__' -exec rm -r '{}' + find share/gpodder/ui/ -name '*.ui.h' -exec rm '{}' + rm -f MANIFEST .coverage messages.mo po/*.mo rm -f $(GPODDER_SERVICE_FILE) rm -f $(DESKTOP_FILES) $(DESKTOP_FILES_IN_H) rm -rf build $(LOCALEDIR) rm -f gpodder-*-win32.zip gpodder-*-setup.exe distclean: clean rm -rf dist -$(MAKE) -C tools/win32-portable distclean -$(MAKE) -C tools/win32-setup distclean ########################################################################## .PHONY: help unittest release releasetest install manpage clean distclean messages headlink release-win32 ########################################################################## gpodder-3.9.0/PKG-INFO0000644000016000001710000000042012654461626015366 0ustar jenkinsjenkins00000000000000Metadata-Version: 1.0 Name: gpodder Version: 3.9.0 Summary: Media aggregator and podcast client Home-page: http://gpodder.org/ Author: Thomas Perl Author-email: thp@gpodder.org License: GNU General Public License, version 3 or later Description: UNKNOWN Platform: UNKNOWN gpodder-3.9.0/README0000644000016000001710000001751712654461624015166 0ustar jenkinsjenkins00000000000000 ___ _ _ ____ __ _| _ \___ __| |__| |___ _ _ |__ / / _` | _/ _ \/ _` / _` / -_) '_| |_ \ \__, |_| \___/\__,_\__,_\___|_| |___/ |___/ Media aggregator and podcast client ............................................................................ Copyright 2005-2016 Thomas Perl and the gPodder Team [ LICENSE ] gPodder is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 3 of the License, or (at your option) any later version. gPodder is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . [ DEPENDENCIES ] - Python 2.7 or newer http://python.org/ - Feedparser 5.1.2 or newer http://code.google.com/p/feedparser/ - mygpoclient 1.7 or newer http://gpodder.org/mygpoclient/ - Python D-Bus bindings As an alternative to python-dbus on Mac OS X and Windows, you can use the dummy (no-op) D-Bus module provided in "tools/fake-dbus-module/". For quick testing, you can use the script tools/localdepends.py to install local copies of feedparser and mygpoclient into "src/" from PyPI. With this, you get a self-contained gPodder CLI codebase. [ GTK UI - ADDITIONAL DEPENDENCIES ] - PyGTK 2.16 or newer http://pygtk.org/ [ OPTIONAL DEPENDENCIES ] - Bluetooth file sending: gnome-obex-send or bluetooth-sendto - HTML shownotes: python-webkit - Size detection on Windows: PyWin32 - Native OS X support: ige-mac-integration - MP3 Player Sync Support: python-eyed3 (0.7 or newer) - iPod Sync Support: python-gpod [ BUILD DEPENDENCIES ] - help2man - intltool [ TEST DEPENDENCIES ] - python-minimock - python-coverage - desktop-file-utils [ TESTING ] To run tests, use... make unittest To set a specific python binary set PYTHON: PYTHON=python2 make unittest Tests in gPodder are written in two different ways: - doctests (see http://docs.python.org/2/library/doctest.html) - unittests (see http://docs.python.org/2/library/unittest.html) If you want to add doctests, simply write the doctest and make sure that the module appears in "doctest_modules" in src/gpodder/unittests.py. For example, the doctests in src/gpodder/util.py are added as 'util' (the "gpodder" prefix must not be specified there). If you want to add unit tests for a specific module (ex: gpodder.model), you should add the tests as gpodder.test.model, or in other words: The file src/gpodder/model.py is tested by src/gpodder/test/model.py After you've added the test, make sure that the module appears in "test_modules" in src/gpodder/unittests.py - for the example above, the unittests in src/gpodder/test/model.py are added as 'model'. For unit tests, coverage reporting happens for the tested module (that's why the test module name should mirror the module to be tested). [ RUNNING AND INSTALLATION ] To run gPodder from source, use.. bin/gpodder for the Gtk+ UI bin/gpo for the command-line interface To install gPodder system-wide, use "make install". By default, this will install *all* UIs and all translations. The following environment variables are processed by setup.py: LINGUAS space-separated list of languages to install GPODDER_INSTALL_UIS space-separated list of UIs to install GPODDER_MANPATH_NO_SHARE if set, install manpages to $PREFIX/man/man1 See setup.py for a list of recognized UIs. Example: Install the CLI and Gtk UI with German and Dutch translations: export LINGUAS="de nl" export GPODDER_INSTALL_UIS="cli gtk" make install The "make install" target also supports DESTDIR and PREFIX for installing into an alternative root (default /) and prefix (default /usr): make install DESTDIR=tmp/ PREFIX=/usr/local/ [ PYTHON 3 SUPPORT ] For Python 3 support, we recommend you use gPodder 4.x for now. [ PORTABLE MODE / ROAMING PROFILES ] The run-time environment variable GPODDER_HOME is used to set the location for storing the database and downloaded files. This can be used for multiple configurations or to store the download directory directly on a MP3 player or USB disk: export GPODDER_HOME=/media/usbdisk/gpodder-data/ [ CHANGING THE DOWNLOAD DIRECTORY ] The run-time environment variable GPODDER_DOWNLOAD_DIR is used to set the location for storing the downloads only (independent of the data directory GPODDER_HOME): export GPODDER_DOWNLOAD_DIR=/media/BigDisk/Podcasts/ In this case, the database and settings will be stored in the default location, with the downloads stored in /media/BigDisk/Podcasts/. Another example would be to set both environment variables: export GPODDER_HOME=~/.config/gpodder/ export GPODDER_DOWNLOAD_DIR=~/Podcasts/ This will store the database and settings files in ~/.config/gpodder/ and the downloads in ~/Podcasts/. If GPODDER_DOWNLOAD_DIR is not set, $GPODDER_HOME/Downloads/ will be used if it is set. [ LOGGING ] By default, gPodder writes log files to $GPODDER_HOME/Logs/ and removes them after a certain amount of times. To avoid this behavior, you can set the environment variable GPODDER_WRITE_LOGS to "no", e.g: export GPODDER_WRITE_LOGS=no [ EXTENSIONS ] Extensions are normally loaded from gPodder's "extensions/" folder (in share/gpodder/extensions/) and from $GPODDER_HOME/Extensions/ - you can override this by setting an environment variable: export GPODDER_EXTENSIONS="/path/to/extension1.py extension2.py" In addition to that, if you want to disable loading of all extensions, you can do this by setting the following environment variable to a non- empty value: export GPODDER_DISABLE_EXTENSIONS=yes If you want to report a bug, please try to disable all extensions and check if the bug still appears to see if an extension causes the bug. [ TRANSLATIONS ] These instructions are mostly useful for the maintainer, but they are documented here in case you want to update translations yourself: To upload a changed translation template: make messages # update translations from source make clean # remove temporary files after "make messages" tx push --source # upload po/messages.pot to transifex.net To download a translation that has been updated: tx pull -l XX -f # download po/XX.po from transifex.net To generate Git commit commands for the translation updates: python tools/i18n/generate_commits.py The "tx" command is provided by the Transifex client (transifex-client in Debian/Ubuntu) which can be obtained from: http://help.transifex.com/features/client/ [ MORE INFORMATION ] - Homepage http://gpodder.org/ - Bug tracker http://bugs.gpodder.org/ - Mailing list http://freelists.org/list/gpodder - IRC channel #gpodder on irc.freenode.net ............................................................................ Last updated: 2016-02-03 by Thomas Perl gpodder-3.9.0/src/0000755000016000001710000000000012654461626015064 5ustar jenkinsjenkins00000000000000gpodder-3.9.0/src/gpodder/0000755000016000001710000000000012654461626016510 5ustar jenkinsjenkins00000000000000gpodder-3.9.0/src/gpodder/feedcore.py0000644000016000001710000002367012654461624020644 0ustar jenkinsjenkins00000000000000# -*- coding: utf-8 -*- # # gPodder - A media aggregator and podcast client # Copyright (c) 2005-2016 Thomas Perl and the gPodder Team # # gPodder is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 3 of the License, or # (at your option) any later version. # # gPodder is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . # # # Generic feed fetching module for aggregators # Thomas Perl ; 2009-06-11 # import feedparser import logging logger = logging.getLogger(__name__) try: # Python 2 from rfc822 import mktime_tz except ImportError: # Python 3 from email.utils import mktime_tz # Version check to avoid bug 1648 feedparser_version = tuple(int(x) if x.isdigit() else x for x in feedparser.__version__.split('.')) feedparser_miniumum_version = (5, 1, 2) if feedparser_version < feedparser_miniumum_version: installed_version = feedparser.__version__ required_version = '.'.join(str(x) for x in feedparser_miniumum_version) logger.warn('Your feedparser is too old. Installed: %s, recommended: %s', installed_version, required_version) def patch_feedparser(): """Monkey-patch the Universal Feed Parser""" # Detect the 'plain' content type as 'text/plain' # http://code.google.com/p/feedparser/issues/detail?id=80 def mapContentType2(self, contentType): contentType = contentType.lower() if contentType == 'text' or contentType == 'plain': contentType = 'text/plain' elif contentType == 'html': contentType = 'text/html' elif contentType == 'xhtml': contentType = 'application/xhtml+xml' return contentType try: if feedparser._FeedParserMixin().mapContentType('plain') == 'plain': feedparser._FeedParserMixin.mapContentType = mapContentType2 except: pass # Fix parsing of Media RSS with feedparser, as described here: # http://code.google.com/p/feedparser/issues/detail?id=100#c4 def _start_media_content(self, attrsD): context = self._getContext() context.setdefault('media_content', []) context['media_content'].append(attrsD) try: feedparser._FeedParserMixin._start_media_content = _start_media_content except: pass # Fix problem with the EA.com official podcast # https://bugs.gpodder.org/show_bug.cgi?id=588 if '*/*' not in feedparser.ACCEPT_HEADER.split(','): feedparser.ACCEPT_HEADER += ',*/*' # Fix problem with YouTube feeds and pubDate/atom:modified # https://bugs.gpodder.org/show_bug.cgi?id=1492 # http://code.google.com/p/feedparser/issues/detail?id=310 def _end_updated(self): value = self.pop('updated') parsed_value = feedparser._parse_date(value) overwrite = ('youtube.com' not in self.baseuri) try: self._save('updated_parsed', parsed_value, overwrite=overwrite) except TypeError, te: logger.warn('Your feedparser version is too old: %s', te) try: feedparser._FeedParserMixin._end_updated = _end_updated except: pass patch_feedparser() class ExceptionWithData(Exception): """Base exception with additional payload""" def __init__(self, data): Exception.__init__(self) self.data = data def __str__(self): return '%s: %s' % (self.__class__.__name__, str(self.data)) # Temporary errors class Offline(Exception): pass class BadRequest(Exception): pass class InternalServerError(Exception): pass class WifiLogin(ExceptionWithData): pass # Fatal errors class Unsubscribe(Exception): pass class NotFound(Exception): pass class InvalidFeed(Exception): pass class UnknownStatusCode(ExceptionWithData): pass # Authentication error class AuthenticationRequired(Exception): pass # Successful status codes UPDATED_FEED, NEW_LOCATION, NOT_MODIFIED, CUSTOM_FEED = range(4) class Result: def __init__(self, status, feed=None): self.status = status self.feed = feed class Fetcher(object): # Supported types, see http://feedvalidator.org/docs/warning/EncodingMismatch.html FEED_TYPES = ('application/rss+xml', 'application/atom+xml', 'application/rdf+xml', 'application/xml', 'text/xml') def __init__(self, user_agent): self.user_agent = user_agent def _resolve_url(self, url): """Provide additional ways of resolving an URL Subclasses can override this method to provide more ways of resolving a given URL to a feed URL. If the Fetcher is in "autodiscovery" mode, it will try this method as a last resort for coming up with a feed URL. """ return None def _autodiscover_feed(self, feed): # First, try all elements if available for link in feed.feed.get('links', ()): is_feed = link.get('type', '') in self.FEED_TYPES is_alternate = link.get('rel', '') == 'alternate' url = link.get('href', None) if url and is_feed and is_alternate: try: return self._parse_feed(url, None, None, False) except Exception, e: pass # Second, try to resolve the URL url = self._resolve_url(feed.href) if url: result = self._parse_feed(url, None, None, False) result.status = NEW_LOCATION return result def _check_offline(self, feed): if not hasattr(feed, 'headers'): raise Offline() def _check_wifi_login_page(self, feed): html_page = 'text/html' in feed.headers.get('content-type', '') if not feed.version and feed.status == 302 and html_page: raise WifiLogin(feed.href) def _check_valid_feed(self, feed): if feed is None: raise InvalidFeed('feed is None') if not hasattr(feed, 'status'): raise InvalidFeed('feed has no status code') if not feed.version and feed.status != 304 and feed.status != 401: raise InvalidFeed('unknown feed type') def _normalize_status(self, status): # Based on Mark Pilgrim's "Atom aggregator behaviour" article if status in (200, 301, 302, 304, 400, 401, 403, 404, 410, 500): return status elif status >= 200 and status < 300: return 200 elif status >= 300 and status < 400: return 302 elif status >= 400 and status < 500: return 400 elif status >= 500 and status < 600: return 500 else: return status def _check_rss_redirect(self, feed): new_location = feed.feed.get('newlocation', None) if new_location: feed.href = feed.feed.newlocation return Result(NEW_LOCATION, feed) return None def _check_statuscode(self, feed): status = self._normalize_status(feed.status) if status == 200: return Result(UPDATED_FEED, feed) elif status == 301: return Result(NEW_LOCATION, feed) elif status == 302: return Result(UPDATED_FEED, feed) elif status == 304: return Result(NOT_MODIFIED, feed) if status == 400: raise BadRequest('bad request') elif status == 401: raise AuthenticationRequired('authentication required') elif status == 403: raise Unsubscribe('forbidden') elif status == 404: raise NotFound('not found') elif status == 410: raise Unsubscribe('resource is gone') elif status == 500: raise InternalServerError('internal server error') else: raise UnknownStatusCode(status) def _parse_feed(self, url, etag, modified, autodiscovery=True): if url.startswith('file://'): is_local = True url = url[len('file://'):] else: is_local = False feed = feedparser.parse(url, agent=self.user_agent, modified=modified, etag=etag) if is_local: if feed.version: feed.headers = {} return Result(UPDATED_FEED, feed) else: raise InvalidFeed('Not a valid feed file') else: self._check_offline(feed) self._check_wifi_login_page(feed) if feed.status != 304 and not feed.version and autodiscovery: feed = self._autodiscover_feed(feed).feed self._check_valid_feed(feed) redirect = self._check_rss_redirect(feed) if redirect is not None: return redirect return self._check_statuscode(feed) def fetch(self, url, etag=None, modified=None): return self._parse_feed(url, etag, modified) def get_pubdate(entry): """Try to determine the real pubDate of a feedparser entry This basically takes the updated_parsed value, but also uses some more advanced techniques to work around various issues with ugly feeds. "published" now also takes precedence over "updated" (with updated used as a fallback if published is not set/available). RSS' "pubDate" element is "updated", and will only be used if published_parsed is not available. """ pubdate = entry.get('published_parsed', None) if pubdate is None: pubdate = entry.get('updated_parsed', None) if pubdate is None: # Cannot determine pubdate - party like it's 1970! return 0 return mktime_tz(pubdate + (0,)) gpodder-3.9.0/src/gpodder/directory.py0000644000016000001710000001317412654461624021072 0ustar jenkinsjenkins00000000000000# -*- coding: utf-8 -*- # # gPodder - A media aggregator and podcast client # Copyright (c) 2005-2016 Thomas Perl and the gPodder Team # # gPodder is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 3 of the License, or # (at your option) any later version. # # gPodder is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . # # # gpodder.directory - Podcast directory and search providers # Thomas Perl ; 2014-10-22 # import gpodder _ = gpodder.gettext import urllib import json import os from gpodder import opml from gpodder import util class DirectoryEntry(object): def __init__(self, title, url, image=None, subscribers=-1, description=None): self.title = title self.url = url self.image = image self.subscribers = subscribers self.description = description class DirectoryTag(object): def __init__(self, tag, weight): self.tag = tag self.weight = weight class Provider(object): PROVIDER_SEARCH, PROVIDER_URL, PROVIDER_FILE, PROVIDER_TAGCLOUD, PROVIDER_STATIC = range(5) def __init__(self): self.name = '' self.kind = self.PROVIDER_SEARCH self.icon = None def on_search(self, query): # Should return a list of DirectoryEntry objects raise NotImplemented() def on_url(self, url): # Should return a list of DirectoryEntry objects raise NotImplemented() def on_file(self, filename): # Should return a list of DirectoryEntry objects raise NotImplemented() def on_tag(self, tag): # Should return a list of DirectoryEntry objects raise NotImplemented() def on_static(self): # Should return a list of DirectoryEntry objects raise NotImplemented() def get_tags(self): # Should return a list of DirectoryTag objects raise NotImplemented() def directory_entry_from_opml(url): return [DirectoryEntry(d['title'], d['url'], description=d['description']) for d in opml.Importer(url).items] def directory_entry_from_mygpo_json(url): return [DirectoryEntry(d['title'], d['url'], d['logo_url'], d['subscribers'], d['description']) for d in json.load(util.urlopen(url))] class GPodderNetSearchProvider(Provider): def __init__(self): self.name = _('gpodder.net search') self.kind = Provider.PROVIDER_SEARCH self.icon = 'directory-gpodder.png' def on_search(self, query): return directory_entry_from_mygpo_json('http://gpodder.net/search.json?q=' + urllib.quote(query)) class OpmlWebImportProvider(Provider): def __init__(self): self.name = _('OPML from web') self.kind = Provider.PROVIDER_URL self.icon = 'directory-opml.png' def on_url(self, url): return directory_entry_from_opml(url) class OpmlFileImportProvider(Provider): def __init__(self): self.name = _('OPML file') self.kind = Provider.PROVIDER_FILE self.icon = 'directory-opml.png' def on_file(self, filename): return directory_entry_from_opml(filename) class GPodderRecommendationsProvider(Provider): def __init__(self): self.name = _('Getting started') self.kind = Provider.PROVIDER_STATIC self.icon = 'directory-examples.png' def on_static(self): return directory_entry_from_opml('http://gpodder.org/directory.opml') class GPodderNetToplistProvider(Provider): def __init__(self): self.name = _('gpodder.net Top 50') self.kind = Provider.PROVIDER_STATIC self.icon = 'directory-toplist.png' def on_static(self): return directory_entry_from_mygpo_json('http://gpodder.net/toplist/50.json') class GPodderNetTagsProvider(Provider): def __init__(self): self.name = _('gpodder.net Tags') self.kind = Provider.PROVIDER_TAGCLOUD self.icon = 'directory-tags.png' def on_tag(self, tag): return directory_entry_from_mygpo_json('http://gpodder.net/api/2/tag/%s/50.json' % urllib.quote(tag)) def get_tags(self): return [DirectoryTag(d['tag'], d['usage']) for d in json.load(util.urlopen('http://gpodder.net/api/2/tags/40.json'))] class SoundcloudSearchProvider(Provider): def __init__(self): self.name = _('Soundcloud search') self.kind = Provider.PROVIDER_SEARCH self.icon = 'directory-soundcloud.png' def on_search(self, query): # XXX: This cross-import of the plugin here is bad, but it # works for now (no proper plugin architecture...) from gpodder.plugins.soundcloud import search_for_user return [DirectoryEntry(entry['username'], entry['permalink_url']) for entry in search_for_user(query)] class FixedOpmlFileProvider(Provider): def __init__(self, filename): self.name = _('Imported OPML file') self.kind = Provider.PROVIDER_STATIC self.icon = 'directory-opml.png' self.filename = filename def on_static(self): return directory_entry_from_opml(self.filename) PROVIDERS = [ GPodderRecommendationsProvider, None, GPodderNetSearchProvider, GPodderNetToplistProvider, #GPodderNetTagsProvider, None, OpmlWebImportProvider, #OpmlFileImportProvider, None, SoundcloudSearchProvider, ] gpodder-3.9.0/src/gpodder/dbsqlite.py0000644000016000001710000002171312654461624020673 0ustar jenkinsjenkins00000000000000# -*- coding: utf-8 -*- # # gPodder - A media aggregator and podcast client # Copyright (c) 2005-2016 Thomas Perl and the gPodder Team # # gPodder is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 3 of the License, or # (at your option) any later version. # # gPodder is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . # # # dbsqlite.py -- SQLite persistence layer for gPodder # # 2008-06-13 Justin Forest # 2010-04-24 Thomas Perl # from __future__ import with_statement import gpodder _ = gpodder.gettext import sys from sqlite3 import dbapi2 as sqlite import logging logger = logging.getLogger(__name__) from gpodder import schema from gpodder import util import threading import re class Database(object): TABLE_PODCAST = 'podcast' TABLE_EPISODE = 'episode' def __init__(self, filename): self.database_file = filename self._db = None self.lock = threading.RLock() def close(self): self.commit() with self.lock: cur = self.cursor() cur.execute("VACUUM") cur.close() self._db.close() self._db = None def purge(self, max_episodes, podcast_id): """ Deletes old episodes. Should be called before adding new episodes to a podcast. """ if max_episodes == 0: return with self.lock: cur = self.cursor() logger.debug('Purge requested for podcast %d', podcast_id) sql = """ DELETE FROM %s WHERE podcast_id = ? AND state <> ? AND id NOT IN (SELECT id FROM %s WHERE podcast_id = ? ORDER BY published DESC LIMIT ?)""" % (self.TABLE_EPISODE, self.TABLE_EPISODE) cur.execute(sql, (podcast_id, gpodder.STATE_DOWNLOADED, podcast_id, max_episodes)) cur.close() @property def db(self): if self._db is None: self._db = sqlite.connect(self.database_file, check_same_thread=False) # Check schema version, upgrade if necessary schema.upgrade(self._db, self.database_file) # Sanity checks for the data in the database schema.check_data(self) logger.debug('Database opened.') return self._db def cursor(self): return self.db.cursor() def commit(self): with self.lock: try: logger.debug('Commit.') self.db.commit() except Exception, e: logger.error('Cannot commit: %s', e, exc_info=True) def get_content_types(self, id): """Given a podcast ID, returns the content types""" with self.lock: cur = self.cursor() cur.execute('SELECT mime_type FROM %s WHERE podcast_id = ?' % self.TABLE_EPISODE, (id,)) for (mime_type,) in cur: yield mime_type cur.close() def get_podcast_statistics(self, podcast_id=None): """Given a podcast ID, returns the statistics for it If the podcast_id is omitted (using the default value), the statistics will be calculated over all podcasts. Returns a tuple (total, deleted, new, downloaded, unplayed) """ total, deleted, new, downloaded, unplayed = 0, 0, 0, 0, 0 with self.lock: cur = self.cursor() if podcast_id is not None: cur.execute('SELECT COUNT(*), state, is_new FROM %s WHERE podcast_id = ? GROUP BY state, is_new' % self.TABLE_EPISODE, (podcast_id,)) else: cur.execute('SELECT COUNT(*), state, is_new FROM %s GROUP BY state, is_new' % self.TABLE_EPISODE) for count, state, is_new in cur: total += count if state == gpodder.STATE_DELETED: deleted += count elif state == gpodder.STATE_NORMAL and is_new: new += count elif state == gpodder.STATE_DOWNLOADED: downloaded += count if is_new: unplayed += count cur.close() return (total, deleted, new, downloaded, unplayed) def load_podcasts(self, factory): logger.info('Loading podcasts') sql = 'SELECT * FROM %s' % self.TABLE_PODCAST with self.lock: cur = self.cursor() cur.execute(sql) keys = [desc[0] for desc in cur.description] result = map(lambda row: factory(dict(zip(keys, row)), self), cur) cur.close() return result def load_episodes(self, podcast, factory): assert podcast.id logger.info('Loading episodes for podcast %d', podcast.id) sql = 'SELECT * FROM %s WHERE podcast_id = ? ORDER BY published DESC' % self.TABLE_EPISODE args = (podcast.id,) with self.lock: cur = self.cursor() cur.execute(sql, args) keys = [desc[0] for desc in cur.description] result = map(lambda row: factory(dict(zip(keys, row))), cur) cur.close() return result def delete_podcast(self, podcast): assert podcast.id with self.lock: cur = self.cursor() logger.debug('delete_podcast: %d (%s)', podcast.id, podcast.url) cur.execute("DELETE FROM %s WHERE id = ?" % self.TABLE_PODCAST, (podcast.id, )) cur.execute("DELETE FROM %s WHERE podcast_id = ?" % self.TABLE_EPISODE, (podcast.id, )) cur.close() self.db.commit() def save_podcast(self, podcast): self._save_object(podcast, self.TABLE_PODCAST, schema.PodcastColumns) def save_episode(self, episode): self._save_object(episode, self.TABLE_EPISODE, schema.EpisodeColumns) def _save_object(self, o, table, columns): with self.lock: try: cur = self.cursor() values = [util.convert_bytes(getattr(o, name)) for name in columns] if o.id is None: qmarks = ', '.join('?'*len(columns)) sql = 'INSERT INTO %s (%s) VALUES (%s)' % (table, ', '.join(columns), qmarks) cur.execute(sql, values) o.id = cur.lastrowid else: qmarks = ', '.join('%s = ?' % name for name in columns) values.append(o.id) sql = 'UPDATE %s SET %s WHERE id = ?' % (table, qmarks) cur.execute(sql, values) except Exception, e: logger.error('Cannot save %s: %s', o, e, exc_info=True) cur.close() def get(self, sql, params=None): """ Returns the first cell of a query result, useful for COUNT()s. """ with self.lock: cur = self.cursor() if params is None: cur.execute(sql) else: cur.execute(sql, params) row = cur.fetchone() cur.close() if row is None: return None else: return row[0] def podcast_download_folder_exists(self, foldername): """ Returns True if a foldername for a channel exists. False otherwise. """ foldername = util.convert_bytes(foldername) return self.get("SELECT id FROM %s WHERE download_folder = ?" % self.TABLE_PODCAST, (foldername,)) is not None def episode_filename_exists(self, podcast_id, filename): """ Returns True if a filename for an episode exists. False otherwise. """ filename = util.convert_bytes(filename) return self.get("SELECT id FROM %s WHERE podcast_id = ? AND download_filename = ?" % self.TABLE_EPISODE, (podcast_id, filename,)) is not None def get_last_published(self, podcast): """ Look up the most recent publish date of a podcast. """ return self.get('SELECT MAX(published) FROM %s WHERE podcast_id = ?' % self.TABLE_EPISODE, (podcast.id,)) def delete_episode_by_guid(self, guid, podcast_id): """ Deletes episodes that have a specific GUID for a given channel. Used after feed updates for episodes that have disappeared from the feed. """ guid = util.convert_bytes(guid) with self.lock: cur = self.cursor() cur.execute('DELETE FROM %s WHERE podcast_id = ? AND guid = ?' % self.TABLE_EPISODE, (podcast_id, guid)) gpodder-3.9.0/src/gpodder/schema.py0000644000016000001710000002233512654461624020325 0ustar jenkinsjenkins00000000000000# -*- coding: utf-8 -*- # # gPodder - A media aggregator and podcast client # Copyright (c) 2005-2016 Thomas Perl and the gPodder Team # # gPodder is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 3 of the License, or # (at your option) any later version. # # gPodder is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . # # gpodder.schema - Database schema update and migration facility # Thomas Perl ; 2011-02-01 from sqlite3 import dbapi2 as sqlite import time import shutil import logging logger = logging.getLogger(__name__) EpisodeColumns = ( 'podcast_id', 'title', 'description', 'url', 'published', 'guid', 'link', 'file_size', 'mime_type', 'state', 'is_new', 'archive', 'download_filename', 'total_time', 'current_position', 'current_position_updated', 'last_playback', 'payment_url', ) PodcastColumns = ( 'title', 'url', 'link', 'description', 'cover_url', 'auth_username', 'auth_password', 'http_last_modified', 'http_etag', 'auto_archive_episodes', 'download_folder', 'pause_subscription', 'section', 'payment_url', 'download_strategy', 'sync_to_mp3_player', ) CURRENT_VERSION = 5 # SQL commands to upgrade old database versions to new ones # Each item is a tuple (old_version, new_version, sql_commands) that should be # applied to the database to migrate from old_version to new_version. UPGRADE_SQL = [ # Version 2: Section labels for the podcast list (1, 2, """ ALTER TABLE podcast ADD COLUMN section TEXT NOT NULL DEFAULT '' """), # Version 3: Flattr integration (+ invalidate http_* fields to force # a feed update, so that payment URLs are parsed during the next check) (2, 3, """ ALTER TABLE podcast ADD COLUMN payment_url TEXT NULL DEFAULT NULL ALTER TABLE episode ADD COLUMN payment_url TEXT NULL DEFAULT NULL UPDATE podcast SET http_last_modified=NULL, http_etag=NULL """), # Version 4: Per-podcast download strategy management (3, 4, """ ALTER TABLE podcast ADD COLUMN download_strategy INTEGER NOT NULL DEFAULT 0 """), # Version 5: Per-podcast MP3 player device synchronization option (4, 5, """ ALTER TABLE podcast ADD COLUMN sync_to_mp3_player INTEGER NOT NULL DEFAULT 1 """) ] def initialize_database(db): # Create table for podcasts db.execute(""" CREATE TABLE podcast ( id INTEGER PRIMARY KEY NOT NULL, title TEXT NOT NULL DEFAULT '', url TEXT NOT NULL DEFAULT '', link TEXT NOT NULL DEFAULT '', description TEXT NOT NULL DEFAULT '', cover_url TEXT NULL DEFAULT NULL, auth_username TEXT NULL DEFAULT NULL, auth_password TEXT NULL DEFAULT NULL, http_last_modified TEXT NULL DEFAULT NULL, http_etag TEXT NULL DEFAULT NULL, auto_archive_episodes INTEGER NOT NULL DEFAULT 0, download_folder TEXT NOT NULL DEFAULT '', pause_subscription INTEGER NOT NULL DEFAULT 0, section TEXT NOT NULL DEFAULT '', payment_url TEXT NULL DEFAULT NULL, download_strategy INTEGER NOT NULL DEFAULT 0, sync_to_mp3_player INTEGER NOT NULL DEFAULT 1 ) """) INDEX_SQL = """ CREATE UNIQUE INDEX idx_podcast_url ON podcast (url) CREATE UNIQUE INDEX idx_podcast_download_folder ON podcast (download_folder) """ for sql in INDEX_SQL.strip().split('\n'): db.execute(sql) # Create table for episodes db.execute(""" CREATE TABLE episode ( id INTEGER PRIMARY KEY NOT NULL, podcast_id INTEGER NOT NULL, title TEXT NOT NULL DEFAULT '', description TEXT NOT NULL DEFAULT '', url TEXT NOT NULL, published INTEGER NOT NULL DEFAULT 0, guid TEXT NOT NULL, link TEXT NOT NULL DEFAULT '', file_size INTEGER NOT NULL DEFAULT 0, mime_type TEXT NOT NULL DEFAULT 'application/octet-stream', state INTEGER NOT NULL DEFAULT 0, is_new INTEGER NOT NULL DEFAULT 0, archive INTEGER NOT NULL DEFAULT 0, download_filename TEXT NULL DEFAULT NULL, total_time INTEGER NOT NULL DEFAULT 0, current_position INTEGER NOT NULL DEFAULT 0, current_position_updated INTEGER NOT NULL DEFAULT 0, last_playback INTEGER NOT NULL DEFAULT 0, payment_url TEXT NULL DEFAULT NULL ) """) INDEX_SQL = """ CREATE INDEX idx_episode_podcast_id ON episode (podcast_id) CREATE UNIQUE INDEX idx_episode_download_filename ON episode (podcast_id, download_filename) CREATE UNIQUE INDEX idx_episode_guid ON episode (podcast_id, guid) CREATE INDEX idx_episode_state ON episode (state) CREATE INDEX idx_episode_is_new ON episode (is_new) CREATE INDEX idx_episode_archive ON episode (archive) CREATE INDEX idx_episode_published ON episode (published) """ for sql in INDEX_SQL.strip().split('\n'): db.execute(sql) # Create table for version info / metadata + insert initial data db.execute("""CREATE TABLE version (version integer)""") db.execute("INSERT INTO version (version) VALUES (%d)" % CURRENT_VERSION) db.commit() def upgrade(db, filename): if not list(db.execute('PRAGMA table_info(version)')): initialize_database(db) return version = db.execute('SELECT version FROM version').fetchone()[0] if version == CURRENT_VERSION: return # We are trying an upgrade - save the current version of the DB backup = '%s_upgraded-v%d_%d' % (filename, int(version), int(time.time())) try: shutil.copy(filename, backup) except Exception, e: raise Exception('Cannot create DB backup before upgrade: ' + e) db.execute("DELETE FROM version") for old_version, new_version, upgrade in UPGRADE_SQL: if version == old_version: for sql in upgrade.strip().split('\n'): db.execute(sql) version = new_version assert version == CURRENT_VERSION db.execute("INSERT INTO version (version) VALUES (%d)" % version) db.commit() if version != CURRENT_VERSION: raise Exception('Database schema version unknown') def convert_gpodder2_db(old_db, new_db): """Convert gPodder 2.x databases to the new format Both arguments should be SQLite3 connections to the corresponding databases. """ old_db = sqlite.connect(old_db) new_db_filename = new_db new_db = sqlite.connect(new_db) upgrade(new_db, new_db_filename) # Copy data for podcasts old_cur = old_db.cursor() columns = [x[1] for x in old_cur.execute('PRAGMA table_info(channels)')] for row in old_cur.execute('SELECT * FROM channels'): row = dict(zip(columns, row)) values = ( row['id'], row['override_title'] or row['title'], row['url'], row['link'], row['description'], row['image'], row['username'] or None, row['password'] or None, row['last_modified'] or None, row['etag'] or None, row['channel_is_locked'], row['foldername'], not row['feed_update_enabled'], '', None, 0, row['sync_to_devices'], ) new_db.execute(""" INSERT INTO podcast VALUES (%s) """ % ', '.join('?'*len(values)), values) old_cur.close() # Copy data for episodes old_cur = old_db.cursor() columns = [x[1] for x in old_cur.execute('PRAGMA table_info(episodes)')] for row in old_cur.execute('SELECT * FROM episodes'): row = dict(zip(columns, row)) values = ( row['id'], row['channel_id'], row['title'], row['description'], row['url'], row['pubDate'], row['guid'], row['link'], row['length'], row['mimetype'], row['state'], not row['played'], row['locked'], row['filename'], row['total_time'], row['current_position'], row['current_position_updated'], 0, None, ) new_db.execute(""" INSERT INTO episode VALUES (%s) """ % ', '.join('?'*len(values)), values) old_cur.close() old_db.close() new_db.commit() new_db.close() def check_data(db): # All episodes must be assigned to a podcast orphan_episodes = db.get('SELECT COUNT(id) FROM episode ' 'WHERE podcast_id NOT IN (SELECT id FROM podcast)') if orphan_episodes > 0: logger.error('Orphaned episodes found in database') gpodder-3.9.0/src/gpodder/download.py0000644000016000001710000010421612654461624020673 0ustar jenkinsjenkins00000000000000# -*- coding: utf-8 -*- # # gPodder - A media aggregator and podcast client # Copyright (c) 2005-2016 Thomas Perl and the gPodder Team # # gPodder is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 3 of the License, or # (at your option) any later version. # # gPodder is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . # # # download.py -- Download queue management # Thomas Perl 2007-09-15 # # Based on libwget.py (2005-10-29) # from __future__ import with_statement import logging logger = logging.getLogger(__name__) from gpodder import util from gpodder import youtube from gpodder import vimeo from gpodder import escapist_videos import gpodder import socket import threading import urllib import urlparse import shutil import os.path import os import time import collections import mimetypes import email from email.header import decode_header _ = gpodder.gettext def get_header_param(headers, param, header_name): """Extract a HTTP header parameter from a dict Uses the "email" module to retrieve parameters from HTTP headers. This can be used to get the "filename" parameter of the "content-disposition" header for downloads to pick a good filename. Returns None if the filename cannot be retrieved. """ value = None try: headers_string = ['%s:%s'%(k,v) for k,v in headers.items()] msg = email.message_from_string('\n'.join(headers_string)) if header_name in msg: raw_value = msg.get_param(param, header=header_name) if raw_value is not None: value = email.utils.collapse_rfc2231_value(raw_value) except Exception, e: logger.error('Cannot get %s from %s', param, header_name, exc_info=True) return value class ContentRange(object): # Based on: # http://svn.pythonpaste.org/Paste/WebOb/trunk/webob/byterange.py # # Copyright (c) 2007 Ian Bicking and Contributors # # 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. """ Represents the Content-Range header This header is ``start-stop/length``, where stop and length can be ``*`` (represented as None in the attributes). """ def __init__(self, start, stop, length): assert start >= 0, "Bad start: %r" % start assert stop is None or (stop >= 0 and stop >= start), ( "Bad stop: %r" % stop) self.start = start self.stop = stop self.length = length def __repr__(self): return '<%s %s>' % ( self.__class__.__name__, self) def __str__(self): if self.stop is None: stop = '*' else: stop = self.stop + 1 if self.length is None: length = '*' else: length = self.length return 'bytes %s-%s/%s' % (self.start, stop, length) def __iter__(self): """ Mostly so you can unpack this, like: start, stop, length = res.content_range """ return iter([self.start, self.stop, self.length]) @classmethod def parse(cls, value): """ Parse the header. May return None if it cannot parse. """ if value is None: return None value = value.strip() if not value.startswith('bytes '): # Unparseable return None value = value[len('bytes '):].strip() if '/' not in value: # Invalid, no length given return None range, length = value.split('/', 1) if '-' not in range: # Invalid, no range return None start, end = range.split('-', 1) try: start = int(start) if end == '*': end = None else: end = int(end) if length == '*': length = None else: length = int(length) except ValueError: # Parse problem return None if end is None: return cls(start, None, length) else: return cls(start, end-1, length) class DownloadCancelledException(Exception): pass class AuthenticationError(Exception): pass class gPodderDownloadHTTPError(Exception): def __init__(self, url, error_code, error_message): self.url = url self.error_code = error_code self.error_message = error_message class DownloadURLOpener(urllib.FancyURLopener): version = gpodder.user_agent # Sometimes URLs are not escaped correctly - try to fix them # (see RFC2396; Section 2.4.3. Excluded US-ASCII Characters) # FYI: The omission of "%" in the list is to avoid double escaping! ESCAPE_CHARS = dict((ord(c), u'%%%x'%ord(c)) for c in u' <>#"{}|\\^[]`') def __init__( self, channel): self.channel = channel self._auth_retry_counter = 0 urllib.FancyURLopener.__init__(self, None) def http_error_default(self, url, fp, errcode, errmsg, headers): """ FancyURLopener by default does not raise an exception when there is some unknown HTTP error code. We want to override this and provide a function to log the error and raise an exception, so we don't download the HTTP error page here. """ # The following two lines are copied from urllib.URLopener's # implementation of http_error_default void = fp.read() fp.close() raise gPodderDownloadHTTPError(url, errcode, errmsg) def redirect_internal(self, url, fp, errcode, errmsg, headers, data): """ This is the exact same function that's included with urllib except with "void = fp.read()" commented out. """ if 'location' in headers: newurl = headers['location'] elif 'uri' in headers: newurl = headers['uri'] else: return # This blocks forever(?) with certain servers (see bug #465) #void = fp.read() fp.close() # In case the server sent a relative URL, join with original: newurl = urlparse.urljoin(self.type + ":" + url, newurl) return self.open(newurl) # The following is based on Python's urllib.py "URLopener.retrieve" # Also based on http://mail.python.org/pipermail/python-list/2001-October/110069.html def http_error_206(self, url, fp, errcode, errmsg, headers, data=None): # The next line is taken from urllib's URLopener.open_http # method, at the end after the line "if errcode == 200:" return urllib.addinfourl(fp, headers, 'http:' + url) def retrieve_resume(self, url, filename, reporthook=None, data=None): """Download files from an URL; return (headers, real_url) Resumes a download if the local filename exists and the server supports download resuming. """ current_size = 0 tfp = None if os.path.exists(filename): try: current_size = os.path.getsize(filename) tfp = open(filename, 'ab') #If the file exists, then only download the remainder if current_size > 0: self.addheader('Range', 'bytes=%s-' % (current_size)) except: logger.warn('Cannot resume download: %s', filename, exc_info=True) tfp = None current_size = 0 if tfp is None: tfp = open(filename, 'wb') # Fix a problem with bad URLs that are not encoded correctly (bug 549) url = url.decode('ascii', 'ignore') url = url.translate(self.ESCAPE_CHARS) url = url.encode('ascii') url = urllib.unwrap(urllib.toBytes(url)) fp = self.open(url, data) headers = fp.info() if current_size > 0: # We told the server to resume - see if she agrees # See RFC2616 (206 Partial Content + Section 14.16) # XXX check status code here, too... range = ContentRange.parse(headers.get('content-range', '')) if range is None or range.start != current_size: # Ok, that did not work. Reset the download # TODO: seek and truncate if content-range differs from request tfp.close() tfp = open(filename, 'wb') current_size = 0 logger.warn('Cannot resume: Invalid Content-Range (RFC2616).') result = headers, fp.geturl() bs = 1024*8 size = -1 read = current_size blocknum = int(current_size/bs) if reporthook: if "content-length" in headers: size = int(headers.getrawheader("Content-Length")) + current_size reporthook(blocknum, bs, size) while read < size or size == -1: if size == -1: block = fp.read(bs) else: block = fp.read(min(size-read, bs)) if block == "": break read += len(block) tfp.write(block) blocknum += 1 if reporthook: reporthook(blocknum, bs, size) fp.close() tfp.close() del fp del tfp # raise exception if actual size does not match content-length header if size >= 0 and read < size: raise urllib.ContentTooShortError("retrieval incomplete: got only %i out " "of %i bytes" % (read, size), result) return result # end code based on urllib.py def prompt_user_passwd( self, host, realm): # Keep track of authentication attempts, fail after the third one self._auth_retry_counter += 1 if self._auth_retry_counter > 3: raise AuthenticationError(_('Wrong username/password')) if self.channel.auth_username or self.channel.auth_password: logger.debug('Authenticating as "%s" to "%s" for realm "%s".', self.channel.auth_username, host, realm) return ( self.channel.auth_username, self.channel.auth_password ) return (None, None) class DownloadQueueWorker(object): def __init__(self, queue, exit_callback, continue_check_callback, minimum_tasks): self.queue = queue self.exit_callback = exit_callback self.continue_check_callback = continue_check_callback # The minimum amount of tasks that should be downloaded by this worker # before using the continue_check_callback to determine if it might # continue accepting tasks. This can be used to forcefully start a # download, even if a download limit is in effect. self.minimum_tasks = minimum_tasks def __repr__(self): return threading.current_thread().getName() def run(self): logger.info('Starting new thread: %s', self) while True: # Check if this thread is allowed to continue accepting tasks # (But only after reducing minimum_tasks to zero - see above) if self.minimum_tasks > 0: self.minimum_tasks -= 1 elif not self.continue_check_callback(self): return try: task = self.queue.pop() logger.info('%s is processing: %s', self, task) task.run() task.recycle() except IndexError, e: logger.info('No more tasks for %s to carry out.', self) break self.exit_callback(self) class DownloadQueueManager(object): def __init__(self, config): self._config = config self.tasks = collections.deque() self.worker_threads_access = threading.RLock() self.worker_threads = [] def __exit_callback(self, worker_thread): with self.worker_threads_access: self.worker_threads.remove(worker_thread) def __continue_check_callback(self, worker_thread): with self.worker_threads_access: if len(self.worker_threads) > self._config.max_downloads and \ self._config.max_downloads_enabled: self.worker_threads.remove(worker_thread) return False else: return True def spawn_threads(self, force_start=False): """Spawn new worker threads if necessary If force_start is True, forcefully spawn a thread and let it process at least one episodes, even if a download limit is in effect at the moment. """ with self.worker_threads_access: if not len(self.tasks): return if force_start or len(self.worker_threads) == 0 or \ len(self.worker_threads) < self._config.max_downloads or \ not self._config.max_downloads_enabled: # We have to create a new thread here, there's work to do logger.info('Starting new worker thread.') # The new worker should process at least one task (the one # that we want to forcefully start) if force_start is True. if force_start: minimum_tasks = 1 else: minimum_tasks = 0 worker = DownloadQueueWorker(self.tasks, self.__exit_callback, self.__continue_check_callback, minimum_tasks) self.worker_threads.append(worker) util.run_in_background(worker.run) def are_queued_or_active_tasks(self): with self.worker_threads_access: return len(self.worker_threads) > 0 def add_task(self, task, force_start=False): """Add a new task to the download queue If force_start is True, ignore the download limit and forcefully start the download right away. """ if task.status != DownloadTask.INIT: # Remove the task from its current position in the # download queue (if any) to avoid race conditions # where two worker threads download the same file try: self.tasks.remove(task) except ValueError, e: pass task.status = DownloadTask.QUEUED if force_start: # Add the task to be taken on next pop self.tasks.append(task) else: # Add the task to the end of the queue self.tasks.appendleft(task) self.spawn_threads(force_start) class DownloadTask(object): """An object representing the download task of an episode You can create a new download task like this: task = DownloadTask(episode, gpodder.config.Config(CONFIGFILE)) task.status = DownloadTask.QUEUED task.run() While the download is in progress, you can access its properties: task.total_size # in bytes task.progress # from 0.0 to 1.0 task.speed # in bytes per second str(task) # name of the episode task.status # current status task.status_changed # True if the status has been changed (see below) task.url # URL of the episode being downloaded task.podcast_url # URL of the podcast this download belongs to task.episode # Episode object of this task You can cancel a running download task by setting its status: task.status = DownloadTask.CANCELLED The task will then abort as soon as possible (due to the nature of downloading data, this can take a while when the Internet is busy). The "status_changed" attribute gets set to True everytime the "status" attribute changes its value. After you get the value of the "status_changed" attribute, it is always reset to False: if task.status_changed: new_status = task.status # .. update the UI accordingly .. Obviously, this also means that you must have at most *one* place in your UI code where you check for status changes and broadcast the status updates from there. While the download is taking place and after the .run() method has finished, you can get the final status to check if the download was successful: if task.status == DownloadTask.DONE: # .. everything ok .. elif task.status == DownloadTask.FAILED: # .. an error happened, and the # error_message attribute is set .. print task.error_message elif task.status == DownloadTask.PAUSED: # .. user paused the download .. elif task.status == DownloadTask.CANCELLED: # .. user cancelled the download .. The difference between cancelling and pausing a DownloadTask is that the temporary file gets deleted when cancelling, but does not get deleted when pausing. Be sure to call .removed_from_list() on this task when removing it from the UI, so that it can carry out any pending clean-up actions (e.g. removing the temporary file when the task has not finished successfully; i.e. task.status != DownloadTask.DONE). The UI can call the method "notify_as_finished()" to determine if this episode still has still to be shown as "finished" download in a notification window. This will return True only the first time it is called when the status is DONE. After returning True once, it will always return False afterwards. The same thing works for failed downloads ("notify_as_failed()"). """ # Possible states this download task can be in STATUS_MESSAGE = (_('Added'), _('Queued'), _('Downloading'), _('Finished'), _('Failed'), _('Cancelled'), _('Paused')) (INIT, QUEUED, DOWNLOADING, DONE, FAILED, CANCELLED, PAUSED) = range(7) # Wheter this task represents a file download or a device sync operation ACTIVITY_DOWNLOAD, ACTIVITY_SYNCHRONIZE = range(2) # Minimum time between progress updates (in seconds) MIN_TIME_BETWEEN_UPDATES = 1. def __str__(self): return self.__episode.title def __get_status(self): return self.__status def __set_status(self, status): if status != self.__status: self.__status_changed = True self.__status = status status = property(fget=__get_status, fset=__set_status) def __get_status_changed(self): if self.__status_changed: self.__status_changed = False return True else: return False status_changed = property(fget=__get_status_changed) def __get_activity(self): return self.__activity def __set_activity(self, activity): self.__activity = activity activity = property(fget=__get_activity, fset=__set_activity) def __get_url(self): return self.__episode.url url = property(fget=__get_url) def __get_podcast_url(self): return self.__episode.channel.url podcast_url = property(fget=__get_podcast_url) def __get_episode(self): return self.__episode episode = property(fget=__get_episode) def cancel(self): if self.status in (self.DOWNLOADING, self.QUEUED): self.status = self.CANCELLED def removed_from_list(self): if self.status != self.DONE: util.delete_file(self.tempname) def __init__(self, episode, config): assert episode.download_task is None self.__status = DownloadTask.INIT self.__activity = DownloadTask.ACTIVITY_DOWNLOAD self.__status_changed = True self.__episode = episode self._config = config # Create the target filename and save it in the database self.filename = self.__episode.local_filename(create=True) self.tempname = self.filename + '.partial' self.total_size = self.__episode.file_size self.speed = 0.0 self.progress = 0.0 self.error_message = None # Have we already shown this task in a notification? self._notification_shown = False # Variables for speed limit and speed calculation self.__start_time = 0 self.__start_blocks = 0 self.__limit_rate_value = self._config.limit_rate_value self.__limit_rate = self._config.limit_rate # Progress update functions self._progress_updated = None self._last_progress_updated = 0. # If the tempname already exists, set progress accordingly if os.path.exists(self.tempname): try: already_downloaded = os.path.getsize(self.tempname) if self.total_size > 0: self.progress = max(0.0, min(1.0, float(already_downloaded)/self.total_size)) except OSError, os_error: logger.error('Cannot get size for %s', os_error) else: # "touch self.tempname", so we also get partial # files for resuming when the file is queued open(self.tempname, 'w').close() # Store a reference to this task in the episode episode.download_task = self def notify_as_finished(self): if self.status == DownloadTask.DONE: if self._notification_shown: return False else: self._notification_shown = True return True return False def notify_as_failed(self): if self.status == DownloadTask.FAILED: if self._notification_shown: return False else: self._notification_shown = True return True return False def add_progress_callback(self, callback): self._progress_updated = callback def status_updated(self, count, blockSize, totalSize): # We see a different "total size" while downloading, # so correct the total size variable in the thread if totalSize != self.total_size and totalSize > 0: self.total_size = float(totalSize) if self.__episode.file_size != self.total_size: logger.debug('Updating file size of %s to %s', self.filename, self.total_size) self.__episode.file_size = self.total_size self.__episode.save() if self.total_size > 0: self.progress = max(0.0, min(1.0, float(count*blockSize)/self.total_size)) if self._progress_updated is not None: diff = time.time() - self._last_progress_updated if diff > self.MIN_TIME_BETWEEN_UPDATES or self.progress == 1.: self._progress_updated(self.progress) self._last_progress_updated = time.time() self.calculate_speed(count, blockSize) if self.status == DownloadTask.CANCELLED: raise DownloadCancelledException() if self.status == DownloadTask.PAUSED: raise DownloadCancelledException() def calculate_speed(self, count, blockSize): if count % 5 == 0: now = time.time() if self.__start_time > 0: # Has rate limiting been enabled or disabled? if self.__limit_rate != self._config.limit_rate: # If it has been enabled then reset base time and block count if self._config.limit_rate: self.__start_time = now self.__start_blocks = count self.__limit_rate = self._config.limit_rate # Has the rate been changed and are we currently limiting? if self.__limit_rate_value != self._config.limit_rate_value and self.__limit_rate: self.__start_time = now self.__start_blocks = count self.__limit_rate_value = self._config.limit_rate_value passed = now - self.__start_time if passed > 0: speed = ((count-self.__start_blocks)*blockSize)/passed else: speed = 0 else: self.__start_time = now self.__start_blocks = count passed = now - self.__start_time speed = count*blockSize self.speed = float(speed) if self._config.limit_rate and speed > self._config.limit_rate_value: # calculate the time that should have passed to reach # the desired download rate and wait if necessary should_have_passed = float((count-self.__start_blocks)*blockSize)/(self._config.limit_rate_value*1024.0) if should_have_passed > passed: # sleep a maximum of 10 seconds to not cause time-outs delay = min(10.0, float(should_have_passed-passed)) time.sleep(delay) def recycle(self): self.episode.download_task = None def run(self): # Speed calculation (re-)starts here self.__start_time = 0 self.__start_blocks = 0 # If the download has already been cancelled, skip it if self.status == DownloadTask.CANCELLED: util.delete_file(self.tempname) self.progress = 0.0 self.speed = 0.0 return False # We only start this download if its status is "queued" if self.status != DownloadTask.QUEUED: return False # We are downloading this file right now self.status = DownloadTask.DOWNLOADING self._notification_shown = False try: # Resolve URL and start downloading the episode fmt_ids = youtube.get_fmt_ids(self._config.youtube) url = youtube.get_real_download_url(self.__episode.url, fmt_ids) url = vimeo.get_real_download_url(url, self._config.vimeo.fileformat) url = escapist_videos.get_real_download_url(url) url = url.strip() downloader = DownloadURLOpener(self.__episode.channel) # HTTP Status codes for which we retry the download retry_codes = (408, 418, 504, 598, 599) max_retries = max(0, self._config.auto.retries) # Retry the download on timeout (bug 1013) for retry in range(max_retries + 1): if retry > 0: logger.info('Retrying download of %s (%d)', url, retry) time.sleep(1) try: headers, real_url = downloader.retrieve_resume(url, self.tempname, reporthook=self.status_updated) # If we arrive here, the download was successful break except urllib.ContentTooShortError, ctse: if retry < max_retries: logger.info('Content too short: %s - will retry.', url) continue raise except socket.timeout, tmout: if retry < max_retries: logger.info('Socket timeout: %s - will retry.', url) continue raise except gPodderDownloadHTTPError, http: if retry < max_retries and http.error_code in retry_codes: logger.info('HTTP error %d: %s - will retry.', http.error_code, url) continue raise new_mimetype = headers.get('content-type', self.__episode.mime_type) old_mimetype = self.__episode.mime_type _basename, ext = os.path.splitext(self.filename) if new_mimetype != old_mimetype or util.wrong_extension(ext): logger.info('Updating mime type: %s => %s', old_mimetype, new_mimetype) old_extension = self.__episode.extension() self.__episode.mime_type = new_mimetype new_extension = self.__episode.extension() # If the desired filename extension changed due to the new # mimetype, we force an update of the local filename to fix the # extension. if old_extension != new_extension or util.wrong_extension(ext): self.filename = self.__episode.local_filename(create=True, force_update=True) # In some cases, the redirect of a URL causes the real filename to # be revealed in the final URL (e.g. http://gpodder.org/bug/1423) if real_url != url and not util.is_known_redirecter(real_url): realname, realext = util.filename_from_url(real_url) # Only update from redirect if the redirected-to filename has # a proper extension (this is needed for e.g. YouTube) if not util.wrong_extension(realext): real_filename = ''.join((realname, realext)) self.filename = self.__episode.local_filename(create=True, force_update=True, template=real_filename) logger.info('Download was redirected (%s). New filename: %s', real_url, os.path.basename(self.filename)) # Look at the Content-disposition header; use if if available disposition_filename = get_header_param(headers, 'filename', 'content-disposition') if disposition_filename is not None: try: disposition_filename.decode('ascii') except: logger.warn('Content-disposition header contains non-ASCII characters - ignoring') disposition_filename = None # Some servers do send the content-disposition header, but provide # an empty filename, resulting in an empty string here (bug 1440) if disposition_filename is not None and disposition_filename != '': # The server specifies a download filename - try to use it disposition_filename = os.path.basename(disposition_filename) self.filename = self.__episode.local_filename(create=True, \ force_update=True, template=disposition_filename) new_mimetype, encoding = mimetypes.guess_type(self.filename) if new_mimetype is not None: logger.info('Using content-disposition mimetype: %s', new_mimetype) self.__episode.mime_type = new_mimetype # Re-evaluate filename and tempname to take care of podcast renames # while downloads are running (which will change both file names) self.filename = self.__episode.local_filename(create=False) self.tempname = os.path.join(os.path.dirname(self.filename), os.path.basename(self.tempname)) shutil.move(self.tempname, self.filename) # Model- and database-related updates after a download has finished self.__episode.on_downloaded(self.filename) except DownloadCancelledException: logger.info('Download has been cancelled/paused: %s', self) if self.status == DownloadTask.CANCELLED: util.delete_file(self.tempname) self.progress = 0.0 self.speed = 0.0 except urllib.ContentTooShortError, ctse: self.status = DownloadTask.FAILED self.error_message = _('Missing content from server') except IOError, ioe: logger.error('%s while downloading "%s": %s', ioe.strerror, self.__episode.title, ioe.filename, exc_info=True) self.status = DownloadTask.FAILED d = {'error': ioe.strerror, 'filename': ioe.filename} self.error_message = _('I/O Error: %(error)s: %(filename)s') % d except gPodderDownloadHTTPError, gdhe: logger.error('HTTP %s while downloading "%s": %s', gdhe.error_code, self.__episode.title, gdhe.error_message, exc_info=True) self.status = DownloadTask.FAILED d = {'code': gdhe.error_code, 'message': gdhe.error_message} self.error_message = _('HTTP Error %(code)s: %(message)s') % d except Exception, e: self.status = DownloadTask.FAILED logger.error('Download failed: %s', str(e), exc_info=True) self.error_message = _('Error: %s') % (str(e),) if self.status == DownloadTask.DOWNLOADING: # Everything went well - we're done self.status = DownloadTask.DONE if self.total_size <= 0: self.total_size = util.calculate_size(self.filename) logger.info('Total size updated to %d', self.total_size) self.progress = 1.0 gpodder.user_extensions.on_episode_downloaded(self.__episode) return True self.speed = 0.0 # We finished, but not successfully (at least not really) return False gpodder-3.9.0/src/gpodder/sync.py0000644000016000001710000011543612654461624020046 0ustar jenkinsjenkins00000000000000# -*- coding: utf-8 -*- # # gPodder - A media aggregator and podcast client # Copyright (c) 2005-2016 Thomas Perl and the gPodder Team # # gPodder is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 3 of the License, or # (at your option) any later version. # # gPodder is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . # # sync.py -- Device synchronization # Thomas Perl 2007-12-06 # based on libipodsync.py (2006-04-05 Thomas Perl) # Ported to gPodder 3 by Joseph Wickremasinghe in June 2012 import gpodder from gpodder import util from gpodder import services from gpodder import download import logging logger = logging.getLogger(__name__) import calendar _ = gpodder.gettext # # TODO: Re-enable iPod and MTP sync support # pymtp_available = False gpod_available = True try: import gpod except: gpod_available = False logger.warning('Could not find gpod') #pymtp_available = True #try: # import gpodder.gpopymtp as pymtp #except: # pymtp_available = False # logger.warning('Could not load gpopymtp (libmtp not installed?).') try: import eyed3.mp3 except: logger.warning('Could not find eyed3.mp3') import os.path import glob import time if pymtp_available: class MTP(pymtp.MTP): sep = os.path.sep def __init__(self): pymtp.MTP.__init__(self) self.folders = {} def connect(self): pymtp.MTP.connect(self) self.folders = self.unfold(self.mtp.LIBMTP_Get_Folder_List(self.device)) def get_folder_list(self): return self.folders def unfold(self, folder, path=''): result = {} while folder: folder = folder.contents name = self.sep.join([path, folder.name]).lstrip(self.sep) result[name] = folder.folder_id if folder.child: result.update(self.unfold(folder.child, name)) folder = folder.sibling return result def mkdir(self, path): folder_id = 0 prefix = [] parts = path.split(self.sep) while parts: prefix.append(parts[0]) tmpath = self.sep.join(prefix) if self.folders.has_key(tmpath): folder_id = self.folders[tmpath] else: folder_id = self.create_folder(parts[0], parent=folder_id) # logger.info('Creating subfolder %s in %s (id=%u)' % (parts[0], self.sep.join(prefix), folder_id)) tmpath = self.sep.join(prefix + [parts[0]]) self.folders[tmpath] = folder_id # logger.info(">>> %s = %s" % (tmpath, folder_id)) del parts[0] # logger.info('MTP.mkdir: %s = %u' % (path, folder_id)) return folder_id def open_device(gui): config = gui._config device_type = gui._config.device_sync.device_type if device_type == 'ipod': return iPodDevice(config, gui.download_status_model, gui.download_queue_manager) elif device_type == 'filesystem': return MP3PlayerDevice(config, gui.download_status_model, gui.download_queue_manager) return None def get_track_length(filename): if util.find_command('mplayer') is not None: try: mplayer_output = os.popen('mplayer -msglevel all=-1 -identify -vo null -ao null -frames 0 "%s" 2>/dev/null' % filename).read() return int(float(mplayer_output[mplayer_output.index('ID_LENGTH'):].splitlines()[0][10:])*1000) except: pass else: logger.info('Please install MPlayer for track length detection.') try: mp3file = eyed3.mp3.Mp3AudioFile(filename) return int(mp3file.info.time_secs * 1000) except Exception, e: logger.warn('Could not determine length: %s', filename, exc_info=True) return int(60*60*1000*3) # Default is three hours (to be on the safe side) class SyncTrack(object): """ This represents a track that is on a device. You need to specify at least the following keyword arguments, because these will be used to display the track in the GUI. All other keyword arguments are optional and can be used to reference internal objects, etc... See the iPod synchronization code for examples. Keyword arguments needed: playcount (How often has the track been played?) podcast (Which podcast is this track from? Or: Folder name) released (The release date of the episode) If any of these fields is unknown, it should not be passed to the function (the values will default to None for all required fields). """ def __init__(self, title, length, modified, **kwargs): self.title = title self.length = length self.filesize = util.format_filesize(length) self.modified = modified # Set some (possible) keyword arguments to default values self.playcount = 0 self.podcast = None self.released = None # Convert keyword arguments to object attributes self.__dict__.update(kwargs) @property def playcount_str(self): return str(self.playcount) class Device(services.ObservableService): def __init__(self, config): self._config = config self.cancelled = False self.allowed_types = ['audio', 'video'] self.errors = [] self.tracks_list = [] signals = ['progress', 'sub-progress', 'status', 'done', 'post-done'] services.ObservableService.__init__(self, signals) def open(self): pass def cancel(self): self.cancelled = True self.notify('status', _('Cancelled by user')) def close(self): self.notify('status', _('Writing data to disk')) if self._config.device_sync.after_sync.sync_disks and not gpodder.ui.win32: os.system('sync') else: logger.warning('Not syncing disks. Unmount your device before unplugging.') return True def add_sync_tasks(self,tracklist, force_played=False, done_callback=None): for track in list(tracklist): # Filter tracks that are not meant to be synchronized does_not_exist = not track.was_downloaded(and_exists=True) exclude_played = (not track.is_new and self._config.device_sync.skip_played_episodes) wrong_type = track.file_type() not in self.allowed_types if does_not_exist or exclude_played or wrong_type: logger.info('Excluding %s from sync', track.title) tracklist.remove(track) if tracklist: for track in sorted(tracklist, key=lambda e: e.pubdate_prop): if self.cancelled: return False # XXX: need to check if track is added properly? sync_task=SyncTask(track) sync_task.status=sync_task.QUEUED sync_task.device=self self.download_status_model.register_task(sync_task) self.download_queue_manager.add_task(sync_task) else: logger.warning("No episodes to sync") if done_callback: done_callback() return True def remove_tracks(self, tracklist): for idx, track in enumerate(tracklist): if self.cancelled: return False self.notify('progress', idx, len(tracklist)) self.remove_track(track) return True def get_all_tracks(self): pass def add_track(self, track, reporthook=None): pass def remove_track(self, track): pass def get_free_space(self): pass def episode_on_device(self, episode): return self._track_on_device(episode.title) def _track_on_device(self, track_name): for t in self.tracks_list: title = t.title if track_name == title: return t return None class iPodDevice(Device): def __init__(self, config, download_status_model, download_queue_manager): Device.__init__(self, config) self.mountpoint = self._config.device_sync.device_folder self.download_status_model = download_status_model self.download_queue_manager = download_queue_manager self.itdb = None self.podcast_playlist = None def get_free_space(self): # Reserve 10 MiB for iTunesDB writing (to be on the safe side) RESERVED_FOR_ITDB = 1024*1024*10 result = util.get_free_disk_space(self.mountpoint) if result == -1: # Can't get free disk space return -1 return result - RESERVED_FOR_ITDB def open(self): Device.open(self) if not gpod_available or not os.path.isdir(self.mountpoint): return False self.notify('status', _('Opening iPod database')) self.itdb = gpod.itdb_parse(self.mountpoint, None) if self.itdb is None: return False self.itdb.mountpoint = self.mountpoint self.podcasts_playlist = gpod.itdb_playlist_podcasts(self.itdb) self.master_playlist = gpod.itdb_playlist_mpl(self.itdb) if self.podcasts_playlist: self.notify('status', _('iPod opened')) # build the initial tracks_list self.tracks_list = self.get_all_tracks() return True else: return False def close(self): if self.itdb is not None: self.notify('status', _('Saving iPod database')) gpod.itdb_write(self.itdb, None) self.itdb = None if self._config.ipod_write_gtkpod_extended: self.notify('status', _('Writing extended gtkpod database')) itunes_folder = os.path.join(self.mountpoint, 'iPod_Control', 'iTunes') ext_filename = os.path.join(itunes_folder, 'iTunesDB.ext') idb_filename = os.path.join(itunes_folder, 'iTunesDB') if os.path.exists(ext_filename) and os.path.exists(idb_filename): try: db = gpod.ipod.Database(self.mountpoint) gpod.gtkpod.parse(ext_filename, db, idb_filename) gpod.gtkpod.write(ext_filename, db, idb_filename) db.close() except: logger.error('Error writing iTunesDB.ext') else: logger.warning('Could not find %s or %s.', ext_filename, idb_filename) Device.close(self) return True def update_played_or_delete(self, channel, episodes, delete_from_db): """ Check whether episodes on ipod are played and update as played and delete if required. """ for episode in episodes: track = self.episode_on_device(episode) if track: gtrack = track.libgpodtrack if gtrack.playcount > 0: if delete_from_db and not gtrack.rating: logger.info('Deleting episode from db %s', gtrack.title) channel.delete_episode(episode) else: logger.info('Marking episode as played %s', gtrack.title) def purge(self): for track in gpod.sw_get_playlist_tracks(self.podcasts_playlist): if gpod.itdb_filename_on_ipod(track) is None: logger.info('Episode has no file: %s', track.title) # self.remove_track_gpod(track) elif track.playcount > 0 and not track.rating: logger.info('Purging episode: %s', track.title) self.remove_track_gpod(track) def get_all_tracks(self): tracks = [] for track in gpod.sw_get_playlist_tracks(self.podcasts_playlist): filename = gpod.itdb_filename_on_ipod(track) if filename is None: # This can happen if the episode is deleted on the device logger.info('Episode has no file: %s', track.title) self.remove_track_gpod(track) continue length = util.calculate_size(filename) timestamp = util.file_modification_timestamp(filename) modified = util.format_date(timestamp) try: released = gpod.itdb_time_mac_to_host(track.time_released) released = util.format_date(released) except ValueError, ve: # timestamp out of range for platform time_t (bug 418) logger.info('Cannot convert track time: %s', ve) released = 0 t = SyncTrack(track.title, length, modified, modified_sort=timestamp, libgpodtrack=track, playcount=track.playcount, released=released, podcast=track.artist) tracks.append(t) return tracks def remove_track(self, track): self.notify('status', _('Removing %s') % track.title) self.remove_track_gpod(track.libgpodtrack) def remove_track_gpod(self, track): filename = gpod.itdb_filename_on_ipod(track) try: gpod.itdb_playlist_remove_track(self.podcasts_playlist, track) except: logger.info('Track %s not in playlist', track.title) gpod.itdb_track_unlink(track) util.delete_file(filename) def add_track(self, episode,reporthook=None): self.notify('status', _('Adding %s') % episode.title) tracklist = gpod.sw_get_playlist_tracks(self.podcasts_playlist) podcasturls=[track.podcasturl for track in tracklist] if episode.url in podcasturls: # Mark as played on iPod if played locally (and set podcast flags) self.set_podcast_flags(tracklist[podcasturls.index(episode.url)], episode) return True original_filename = episode.local_filename(create=False) # The file has to exist, if we ought to transfer it, and therefore, # local_filename(create=False) must never return None as filename assert original_filename is not None local_filename = original_filename if util.calculate_size(original_filename) > self.get_free_space(): logger.error('Not enough space on %s, sync aborted...', self.mountpoint) d = {'episode': episode.title, 'mountpoint': self.mountpoint} message =_('Error copying %(episode)s: Not enough free space on %(mountpoint)s') self.errors.append(message % d) self.cancelled = True return False local_filename = episode.local_filename(create=False) (fn, extension) = os.path.splitext(local_filename) if extension.lower().endswith('ogg'): logger.error('Cannot copy .ogg files to iPod.') return False track = gpod.itdb_track_new() # Add release time to track if episode.published has a valid value if episode.published > 0: try: # libgpod>= 0.5.x uses a new timestamp format track.time_released = gpod.itdb_time_host_to_mac(int(episode.published)) except: # old (pre-0.5.x) libgpod versions expect mactime, so # we're going to manually build a good mactime timestamp here :) # # + 2082844800 for unixtime => mactime (1970 => 1904) track.time_released = int(episode.published + 2082844800) track.title = str(episode.title) track.album = str(episode.channel.title) track.artist = str(episode.channel.title) track.description = str(util.remove_html_tags(episode.description)) track.podcasturl = str(episode.url) track.podcastrss = str(episode.channel.url) track.tracklen = get_track_length(local_filename) track.size = os.path.getsize(local_filename) if episode.file_type() == 'audio': track.filetype = 'mp3' track.mediatype = 0x00000004 elif episode.file_type() == 'video': track.filetype = 'm4v' track.mediatype = 0x00000006 self.set_podcast_flags(track, episode) gpod.itdb_track_add(self.itdb, track, -1) gpod.itdb_playlist_add_track(self.master_playlist, track, -1) gpod.itdb_playlist_add_track(self.podcasts_playlist, track, -1) copied = gpod.itdb_cp_track_to_ipod(track, str(local_filename), None) reporthook(episode.file_size, 1, episode.file_size) # If the file has been converted, delete the temporary file here if local_filename != original_filename: util.delete_file(local_filename) return True def set_podcast_flags(self, track, episode): try: # Set several flags for to podcast values track.remember_playback_position = 0x01 track.flag1 = 0x02 track.flag2 = 0x01 track.flag3 = 0x01 track.flag4 = 0x01 except: logger.warning('Seems like your python-gpod is out-of-date.') class MP3PlayerDevice(Device): def __init__(self, config, download_status_model, download_queue_manager): Device.__init__(self, config) self.destination = util.sanitize_encoding(self._config.device_sync.device_folder) self.buffer_size = 1024*1024 # 1 MiB self.download_status_model = download_status_model self.download_queue_manager = download_queue_manager def get_free_space(self): return util.get_free_disk_space(self.destination) def open(self): Device.open(self) self.notify('status', _('Opening MP3 player')) if util.directory_is_writable(self.destination): self.notify('status', _('MP3 player opened')) self.tracks_list = self.get_all_tracks() return True return False def get_episode_folder_on_device(self, episode): if self._config.device_sync.one_folder_per_podcast: # Add channel title as subfolder folder = episode.channel.title # Clean up the folder name for use on limited devices folder = util.sanitize_filename(folder, self._config.device_sync.max_filename_length) folder = os.path.join(self.destination, folder) else: folder = self.destination return util.sanitize_encoding(folder) def get_episode_file_on_device(self, episode): # get the local file from_file = util.sanitize_encoding(episode.local_filename(create=False)) # get the formated base name filename_base = util.sanitize_filename(episode.sync_filename( self._config.device_sync.custom_sync_name_enabled, self._config.device_sync.custom_sync_name), self._config.device_sync.max_filename_length) # add the file extension to_file = filename_base + os.path.splitext(from_file)[1].lower() # dirty workaround: on bad (empty) episode titles, # we simply use the from_file basename # (please, podcast authors, FIX YOUR RSS FEEDS!) if os.path.splitext(to_file)[0] == '': to_file = os.path.basename(from_file) return to_file def add_track(self, episode,reporthook=None): self.notify('status', _('Adding %s') % episode.title.decode('utf-8', 'ignore')) # get the folder on the device folder = self.get_episode_folder_on_device(episode) filename = episode.local_filename(create=False) # The file has to exist, if we ought to transfer it, and therefore, # local_filename(create=False) must never return None as filename assert filename is not None from_file = util.sanitize_encoding(filename) # verify free space needed = util.calculate_size(from_file) free = self.get_free_space() if free == -1: logger.warn('Cannot determine free disk space on device') elif needed > free: d = {'path': self.destination, 'free': util.format_filesize(free), 'need': util.format_filesize(needed)} message =_('Not enough space in %(path)s: %(free)s available, but need at least %(need)s') raise SyncFailedException(message % d) # get the filename that will be used on the device to_file = self.get_episode_file_on_device(episode) to_file = util.sanitize_encoding(os.path.join(folder, to_file)) if not os.path.exists(folder): try: os.makedirs(folder) except: logger.error('Cannot create folder on MP3 player: %s', folder) return False if not os.path.exists(to_file): logger.info('Copying %s => %s', os.path.basename(from_file), to_file.decode(util.encoding)) self.copy_file_progress(from_file, to_file, reporthook) return True def copy_file_progress(self, from_file, to_file, reporthook=None): try: out_file = open(to_file, 'wb') except IOError, ioerror: d = {'filename': ioerror.filename, 'message': ioerror.strerror} self.errors.append(_('Error opening %(filename)s: %(message)s') % d) self.cancel() return False try: in_file = open(from_file, 'rb') except IOError, ioerror: d = {'filename': ioerror.filename, 'message': ioerror.strerror} self.errors.append(_('Error opening %(filename)s: %(message)s') % d) self.cancel() return False in_file.seek(0, os.SEEK_END) total_bytes = in_file.tell() in_file.seek(0) bytes_read = 0 s = in_file.read(self.buffer_size) while s: bytes_read += len(s) try: out_file.write(s) except IOError, ioerror: self.errors.append(ioerror.strerror) try: out_file.close() except: pass try: logger.info('Trying to remove partially copied file: %s' % to_file) os.unlink( to_file) logger.info('Yeah! Unlinked %s at least..' % to_file) except: logger.error('Error while trying to unlink %s. OH MY!' % to_file) self.cancel() return False reporthook(bytes_read, 1, total_bytes) s = in_file.read(self.buffer_size) out_file.close() in_file.close() return True def get_all_tracks(self): tracks = [] if self._config.one_folder_per_podcast: files = glob.glob(os.path.join(self.destination, '*', '*')) else: files = glob.glob(os.path.join(self.destination, '*')) for filename in files: (title, extension) = os.path.splitext(os.path.basename(filename)) length = util.calculate_size(filename) timestamp = util.file_modification_timestamp(filename) modified = util.format_date(timestamp) if self._config.one_folder_per_podcast: podcast_name = os.path.basename(os.path.dirname(filename)) else: podcast_name = None t = SyncTrack(title, length, modified, modified_sort=timestamp, filename=filename, podcast=podcast_name) tracks.append(t) return tracks def episode_on_device(self, episode): e = util.sanitize_filename(episode.sync_filename( self._config.device_sync.custom_sync_name_enabled, self._config.device_sync.custom_sync_name), self._config.device_sync.max_filename_length) return self._track_on_device(e) def remove_track(self, track): self.notify('status', _('Removing %s') % track.title) util.delete_file(track.filename) directory = os.path.dirname(track.filename) if self.directory_is_empty(directory) and self._config.one_folder_per_podcast: try: os.rmdir(directory) except: logger.error('Cannot remove %s', directory) def directory_is_empty(self, directory): files = glob.glob(os.path.join(directory, '*')) dotfiles = glob.glob(os.path.join(directory, '.*')) return len(files+dotfiles) == 0 class MTPDevice(Device): def __init__(self, config): Device.__init__(self, config) self.__model_name = None try: self.__MTPDevice = MTP() except NameError, e: # pymtp not available / not installed (see bug 924) logger.error('pymtp not found: %s', str(e)) self.__MTPDevice = None def __callback(self, sent, total): if self.cancelled: return -1 percentage = round(float(sent)/float(total)*100) text = ('%i%%' % percentage) self.notify('progress', sent, total, text) def __date_to_mtp(self, date): """ this function format the given date and time to a string representation according to MTP specifications: YYYYMMDDThhmmss.s return the string representation od the given date """ if not date: return "" try: d = time.gmtime(date) return time.strftime("%Y%m%d-%H%M%S.0Z", d) except Exception, exc: logger.error('ERROR: An error has happend while trying to convert date to an mtp string') return None def __mtp_to_date(self, mtp): """ this parse the mtp's string representation for date according to specifications (YYYYMMDDThhmmss.s) to a python time object """ if not mtp: return None try: mtp = mtp.replace(" ", "0") # replace blank with 0 to fix some invalid string d = time.strptime(mtp[:8] + mtp[9:13],"%Y%m%d%H%M%S") _date = calendar.timegm(d) if len(mtp)==20: # TIME ZONE SHIFTING: the string contains a hour/min shift relative to a time zone try: shift_direction=mtp[15] hour_shift = int(mtp[16:18]) minute_shift = int(mtp[18:20]) shift_in_sec = hour_shift * 3600 + minute_shift * 60 if shift_direction == "+": _date += shift_in_sec elif shift_direction == "-": _date -= shift_in_sec else: raise ValueError("Expected + or -") except Exception, exc: logger.warning('WARNING: ignoring invalid time zone information for %s (%s)') return max( 0, _date ) except Exception, exc: logger.warning('WARNING: the mtp date "%s" can not be parsed against mtp specification (%s)') return None def get_name(self): """ this function try to find a nice name for the device. First, it tries to find a friendly (user assigned) name (this name can be set by other application and is stored on the device). if no friendly name was assign, it tries to get the model name (given by the vendor). If no name is found at all, a generic one is returned. Once found, the name is cached internaly to prevent reading again the device return the name of the device """ if self.__model_name: return self.__model_name if self.__MTPDevice is None: return _('MTP device') self.__model_name = self.__MTPDevice.get_devicename() # actually libmtp.Get_Friendlyname if not self.__model_name or self.__model_name == "?????": self.__model_name = self.__MTPDevice.get_modelname() if not self.__model_name: self.__model_name = _('MTP device') return self.__model_name def open(self): Device.open(self) logger.info("opening the MTP device") self.notify('status', _('Opening the MTP device'), ) try: self.__MTPDevice.connect() # build the initial tracks_list self.tracks_list = self.get_all_tracks() except Exception, exc: logger.error('unable to find an MTP device (%s)') return False self.notify('status', _('%s opened') % self.get_name()) return True def close(self): logger.info("closing %s", self.get_name()) self.notify('status', _('Closing %s') % self.get_name()) try: self.__MTPDevice.disconnect() except Exception, exc: logger.error('unable to close %s (%s)', self.get_name()) return False self.notify('status', _('%s closed') % self.get_name()) Device.close(self) return True def add_track(self, episode): self.notify('status', _('Adding %s...') % episode.title) filename = str(self.convert_track(episode)) logger.info("sending %s (%s).", filename, episode.title) try: # verify free space needed = util.calculate_size(filename) free = self.get_free_space() if needed > free: logger.error('Not enough space on device %s: %s available, but need at least %s', self.get_name(), util.format_filesize(free), util.format_filesize(needed)) self.cancelled = True return False # fill metadata metadata = pymtp.LIBMTP_Track() metadata.title = str(episode.title) metadata.artist = str(episode.channel.title) metadata.album = str(episode.channel.title) metadata.genre = "podcast" metadata.date = self.__date_to_mtp(episode.published) metadata.duration = get_track_length(str(filename)) folder_name = '' if episode.mimetype.startswith('audio/') and self._config.mtp_audio_folder: folder_name = self._config.mtp_audio_folder if episode.mimetype.startswith('video/') and self._config.mtp_video_folder: folder_name = self._config.mtp_video_folder if episode.mimetype.startswith('image/') and self._config.mtp_image_folder: folder_name = self._config.mtp_image_folder if folder_name != '' and self._config.mtp_podcast_folders: folder_name += os.path.sep + str(episode.channel.title) # log('Target MTP folder: %s' % folder_name) if folder_name == '': folder_id = 0 else: folder_id = self.__MTPDevice.mkdir(folder_name) # send the file to_file = util.sanitize_filename(metadata.title) + episode.extension() self.__MTPDevice.send_track_from_file(filename, to_file, metadata, folder_id, callback=self.__callback) if gpodder.user_hooks is not None: gpodder.user_hooks.on_file_copied_to_mtp(self, filename, to_file) except: logger.error('unable to add episode %s', episode.title) return False return True def remove_track(self, sync_track): self.notify('status', _('Removing %s') % sync_track.mtptrack.title) logger.info("removing %s", sync_track.mtptrack.title) try: self.__MTPDevice.delete_object(sync_track.mtptrack.item_id) except Exception, exc: logger.error('unable remove file %s (%s)', sync_track.mtptrack.filename) logger.info('%s removed', sync_track.mtptrack.title) def get_all_tracks(self): try: listing = self.__MTPDevice.get_tracklisting(callback=self.__callback) except Exception, exc: logger.error('unable to get file listing %s (%s)') tracks = [] for track in listing: title = track.title if not title or title=="": title=track.filename if len(title) > 50: title = title[0:49] + '...' artist = track.artist if artist and len(artist) > 50: artist = artist[0:49] + '...' length = track.filesize age_in_days = 0 date = self.__mtp_to_date(track.date) if not date: modified = track.date # not a valid mtp date. Display what mtp gave anyway modified_sort = -1 # no idea how to sort invalid date else: modified = util.format_date(date) modified_sort = date t = SyncTrack(title, length, modified, modified_sort=modified_sort, mtptrack=track, podcast=artist) tracks.append(t) return tracks def get_free_space(self): if self.__MTPDevice is not None: return self.__MTPDevice.get_freespace() else: return 0 class SyncCancelledException(Exception): pass class SyncFailedException(Exception): pass class SyncTask(download.DownloadTask): # An object representing the synchronization task of an episode # Possible states this sync task can be in STATUS_MESSAGE = (_('Added'), _('Queued'), _('Synchronizing'), _('Finished'), _('Failed'), _('Cancelled'), _('Paused')) (INIT, QUEUED, DOWNLOADING, DONE, FAILED, CANCELLED, PAUSED) = range(7) def __str__(self): return self.__episode.title def __get_status(self): return self.__status def __set_status(self, status): if status != self.__status: self.__status_changed = True self.__status = status status = property(fget=__get_status, fset=__set_status) def __get_device(self): return self.__device def __set_device(self, device): self.__device = device device = property(fget=__get_device, fset=__set_device) def __get_status_changed(self): if self.__status_changed: self.__status_changed = False return True else: return False status_changed = property(fget=__get_status_changed) def __get_activity(self): return self.__activity def __set_activity(self, activity): self.__activity = activity activity = property(fget=__get_activity, fset=__set_activity) def __get_empty_string(self): return '' url = property(fget=__get_empty_string) podcast_url = property(fget=__get_empty_string) def __get_episode(self): return self.__episode episode = property(fget=__get_episode) def cancel(self): if self.status in (self.DOWNLOADING, self.QUEUED): self.status = self.CANCELLED def removed_from_list(self): # XXX: Should we delete temporary/incomplete files here? pass def __init__(self, episode): self.__status = SyncTask.INIT self.__activity = SyncTask.ACTIVITY_SYNCHRONIZE self.__status_changed = True self.__episode = episode # Create the target filename and save it in the database self.filename = self.__episode.local_filename(create=False) self.tempname = self.filename + '.partial' self.total_size = self.__episode.file_size self.speed = 0.0 self.progress = 0.0 self.error_message = None # Have we already shown this task in a notification? self._notification_shown = False # Variables for speed limit and speed calculation self.__start_time = 0 self.__start_blocks = 0 self.__limit_rate_value = 999 self.__limit_rate = 999 # Callbacks self._progress_updated = lambda x: None def notify_as_finished(self): if self.status == SyncTask.DONE: if self._notification_shown: return False else: self._notification_shown = True return True return False def notify_as_failed(self): if self.status == SyncTask.FAILED: if self._notification_shown: return False else: self._notification_shown = True return True return False def add_progress_callback(self, callback): self._progress_updated = callback def status_updated(self, count, blockSize, totalSize): # We see a different "total size" while downloading, # so correct the total size variable in the thread if totalSize != self.total_size and totalSize > 0: self.total_size = float(totalSize) if self.total_size > 0: self.progress = max(0.0, min(1.0, float(count*blockSize)/self.total_size)) self._progress_updated(self.progress) if self.status == SyncTask.CANCELLED: raise SyncCancelledException() if self.status == SyncTask.PAUSED: raise SyncCancelledException() def recycle(self): self.episode.download_task = None def run(self): # Speed calculation (re-)starts here self.__start_time = 0 self.__start_blocks = 0 # If the download has already been cancelled, skip it if self.status == SyncTask.CANCELLED: util.delete_file(self.tempname) self.progress = 0.0 self.speed = 0.0 return False # We only start this download if its status is "queued" if self.status != SyncTask.QUEUED: return False # We are synching this file right now self.status = SyncTask.DOWNLOADING self._notification_shown = False try: logger.info('Starting SyncTask') self.device.add_track(self.episode, reporthook=self.status_updated) except Exception, e: self.status = SyncTask.FAILED logger.error('Sync failed: %s', str(e), exc_info=True) self.error_message = _('Error: %s') % (str(e),) if self.status == SyncTask.DOWNLOADING: # Everything went well - we're done self.status = SyncTask.DONE if self.total_size <= 0: self.total_size = util.calculate_size(self.filename) logger.info('Total size updated to %d', self.total_size) self.progress = 1.0 gpodder.user_extensions.on_episode_synced(self.device, self.__episode) return True self.speed = 0.0 # We finished, but not successfully (at least not really) return False gpodder-3.9.0/src/gpodder/common.py0000644000016000001710000001125412654461624020353 0ustar jenkinsjenkins00000000000000# -*- coding: utf-8 -*- # # gPodder - A media aggregator and podcast client # Copyright (c) 2005-2016 Thomas Perl and the gPodder Team # # gPodder is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 3 of the License, or # (at your option) any later version. # # gPodder is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . # # gpodder.common - Common helper functions for all UIs # Thomas Perl ; 2012-08-16 import gpodder from gpodder import util import glob import os import logging logger = logging.getLogger(__name__) def clean_up_downloads(delete_partial=False): """Clean up temporary files left behind by old gPodder versions delete_partial - If True, also delete in-progress downloads """ temporary_files = glob.glob('%s/*/.tmp-*' % gpodder.downloads) if delete_partial: temporary_files += glob.glob('%s/*/*.partial' % gpodder.downloads) for tempfile in temporary_files: util.delete_file(tempfile) def find_partial_downloads(channels, start_progress_callback, progress_callback, finish_progress_callback): """Find partial downloads and match them with episodes channels - A list of all model.PodcastChannel objects start_progress_callback - A callback(count) when partial files are searched progress_callback - A callback(title, progress) when an episode was found finish_progress_callback - A callback(resumable_episodes) when finished """ # Look for partial file downloads partial_files = glob.glob(os.path.join(gpodder.downloads, '*', '*.partial')) count = len(partial_files) resumable_episodes = [] if count: start_progress_callback(count) candidates = [f[:-len('.partial')] for f in partial_files] found = 0 for channel in channels: for episode in channel.get_all_episodes(): filename = episode.local_filename(create=False, check_only=True) if filename in candidates: found += 1 progress_callback(episode.title, float(found)/count) candidates.remove(filename) partial_files.remove(filename+'.partial') if os.path.exists(filename): # The file has already been downloaded; # remove the leftover partial file util.delete_file(filename+'.partial') else: resumable_episodes.append(episode) if not candidates: break if not candidates: break for f in partial_files: logger.warn('Partial file without episode: %s', f) util.delete_file(f) finish_progress_callback(resumable_episodes) else: clean_up_downloads(True) def get_expired_episodes(channels, config): for channel in channels: for index, episode in enumerate(channel.get_episodes(gpodder.STATE_DOWNLOADED)): # Never consider archived episodes as old if episode.archive: continue # Download strategy "Only keep latest" if (channel.download_strategy == channel.STRATEGY_LATEST and index > 0): logger.info('Removing episode (only keep latest strategy): %s', episode.title) yield episode continue # Only expire episodes if the age in days is positive if config.episode_old_age < 1: continue # Never consider fresh episodes as old if episode.age_in_days() < config.episode_old_age: continue # Do not delete played episodes (except if configured) if not episode.is_new: if not config.auto_remove_played_episodes: continue # Do not delete unfinished episodes (except if configured) if not episode.is_finished(): if not config.auto_remove_unfinished_episodes: continue # Do not delete unplayed episodes (except if configured) if episode.is_new: if not config.auto_remove_unplayed_episodes: continue yield episode gpodder-3.9.0/src/gpodder/util.py0000644000016000001710000014772012654461624020050 0ustar jenkinsjenkins00000000000000# -*- coding: utf-8 -*- # # gPodder - A media aggregator and podcast client # Copyright (c) 2005-2016 Thomas Perl and the gPodder Team # Copyright (c) 2011 Neal H. Walfield # # gPodder is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 3 of the License, or # (at your option) any later version. # # gPodder is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . # # # util.py -- Misc utility functions # Thomas Perl 2007-08-04 # """Miscellaneous helper functions for gPodder This module provides helper and utility functions for gPodder that are not tied to any specific part of gPodder. """ import gpodder import logging logger = logging.getLogger(__name__) import os import os.path import platform import glob import stat import shlex import shutil import socket import sys import string import re import subprocess from htmlentitydefs import entitydefs import time import gzip import datetime import threading import urlparse import urllib import urllib2 import httplib import webbrowser import mimetypes import itertools import feedparser import StringIO import xml.dom.minidom if gpodder.ui.win32: try: import win32file except ImportError: logger.warn('Running on Win32 but win32api/win32file not installed.') win32file = None _ = gpodder.gettext N_ = gpodder.ngettext import locale try: locale.setlocale(locale.LC_ALL, '') except Exception, e: logger.warn('Cannot set locale (%s)', e, exc_info=True) # Native filesystem encoding detection encoding = sys.getfilesystemencoding() if encoding is None: if 'LANG' in os.environ and '.' in os.environ['LANG']: lang = os.environ['LANG'] (language, encoding) = lang.rsplit('.', 1) logger.info('Detected encoding: %s', encoding) elif gpodder.ui.win32: # To quote http://docs.python.org/howto/unicode.html: # ,,on Windows, Python uses the name "mbcs" to refer # to whatever the currently configured encoding is`` encoding = 'mbcs' else: encoding = 'iso-8859-15' logger.info('Assuming encoding: ISO-8859-15 ($LANG not set).') # Filename / folder name sanitization def _sanitize_char(c): if c in string.whitespace: return ' ' elif c in ',-.()': return c elif c in string.punctuation or ord(c) <= 31: return '_' return c SANITIZATION_TABLE = ''.join(map(_sanitize_char, map(chr, range(256)))) del _sanitize_char _MIME_TYPE_LIST = [ ('.aac', 'audio/aac'), ('.axa', 'audio/annodex'), ('.flac', 'audio/flac'), ('.m4b', 'audio/m4b'), ('.m4a', 'audio/mp4'), ('.mp3', 'audio/mpeg'), ('.spx', 'audio/ogg'), ('.oga', 'audio/ogg'), ('.ogg', 'audio/ogg'), ('.wma', 'audio/x-ms-wma'), ('.3gp', 'video/3gpp'), ('.axv', 'video/annodex'), ('.divx', 'video/divx'), ('.m4v', 'video/m4v'), ('.mp4', 'video/mp4'), ('.ogv', 'video/ogg'), ('.mov', 'video/quicktime'), ('.flv', 'video/x-flv'), ('.mkv', 'video/x-matroska'), ('.wmv', 'video/x-ms-wmv'), ('.opus', 'audio/opus'), ] _MIME_TYPES = dict((k, v) for v, k in _MIME_TYPE_LIST) _MIME_TYPES_EXT = dict(_MIME_TYPE_LIST) def make_directory( path): """ Tries to create a directory if it does not exist already. Returns True if the directory exists after the function call, False otherwise. """ if os.path.isdir( path): return True try: os.makedirs( path) except: logger.warn('Could not create directory: %s', path) return False return True def normalize_feed_url(url): """ Converts any URL to http:// or ftp:// so that it can be used with "wget". If the URL cannot be converted (invalid or unknown scheme), "None" is returned. This will also normalize feed:// and itpc:// to http://. >>> normalize_feed_url('itpc://example.org/podcast.rss') 'http://example.org/podcast.rss' If no URL scheme is defined (e.g. "curry.com"), we will simply assume the user intends to add a http:// feed. >>> normalize_feed_url('curry.com') 'http://curry.com/' There are even some more shortcuts for advanced users and lazy typists (see the source for details). >>> normalize_feed_url('fb:43FPodcast') 'http://feeds.feedburner.com/43FPodcast' It will also take care of converting the domain name to all-lowercase (because domains are not case sensitive): >>> normalize_feed_url('http://Example.COM/') 'http://example.com/' Some other minimalistic changes are also taken care of, e.g. a ? with an empty query is removed: >>> normalize_feed_url('http://example.org/test?') 'http://example.org/test' Username and password in the URL must not be affected by URL normalization (see gPodder bug 1942): >>> normalize_feed_url('http://UserName:PassWord@Example.com/') 'http://UserName:PassWord@example.com/' """ if not url or len(url) < 8: return None # This is a list of prefixes that you can use to minimize the amount of # keystrokes that you have to use. # Feel free to suggest other useful prefixes, and I'll add them here. PREFIXES = { 'fb:': 'http://feeds.feedburner.com/%s', 'yt:': 'http://www.youtube.com/rss/user/%s/videos.rss', 'sc:': 'http://soundcloud.com/%s', # YouTube playlists. To get a list of playlists per-user, use: # https://gdata.youtube.com/feeds/api/users//playlists 'ytpl:': 'http://gdata.youtube.com/feeds/api/playlists/%s', } for prefix, expansion in PREFIXES.iteritems(): if url.startswith(prefix): url = expansion % (url[len(prefix):],) break # Assume HTTP for URLs without scheme if not '://' in url: url = 'http://' + url scheme, netloc, path, query, fragment = urlparse.urlsplit(url) # Domain name is case insensitive, but username/password is not (bug 1942) if '@' in netloc: authentication, netloc = netloc.rsplit('@', 1) netloc = '@'.join((authentication, netloc.lower())) else: netloc = netloc.lower() # Schemes and domain names are case insensitive scheme = scheme.lower() # Normalize empty paths to "/" if path == '': path = '/' # feed://, itpc:// and itms:// are really http:// if scheme in ('feed', 'itpc', 'itms'): scheme = 'http' if scheme not in ('http', 'https', 'ftp', 'file'): return None # urlunsplit might return "a slighty different, but equivalent URL" return urlparse.urlunsplit((scheme, netloc, path, query, fragment)) def username_password_from_url(url): r""" Returns a tuple (username,password) containing authentication data from the specified URL or (None,None) if no authentication data can be found in the URL. See Section 3.1 of RFC 1738 (http://www.ietf.org/rfc/rfc1738.txt) >>> username_password_from_url('https://@host.com/') ('', None) >>> username_password_from_url('telnet://host.com/') (None, None) >>> username_password_from_url('ftp://foo:@host.com/') ('foo', '') >>> username_password_from_url('http://a:b@host.com/') ('a', 'b') >>> username_password_from_url(1) Traceback (most recent call last): ... ValueError: URL has to be a string or unicode object. >>> username_password_from_url(None) Traceback (most recent call last): ... ValueError: URL has to be a string or unicode object. >>> username_password_from_url('http://a@b:c@host.com/') ('a@b', 'c') >>> username_password_from_url('ftp://a:b:c@host.com/') ('a', 'b:c') >>> username_password_from_url('http://i%2Fo:P%40ss%3A@host.com/') ('i/o', 'P@ss:') >>> username_password_from_url('ftp://%C3%B6sterreich@host.com/') ('\xc3\xb6sterreich', None) >>> username_password_from_url('http://w%20x:y%20z@example.org/') ('w x', 'y z') >>> username_password_from_url('http://example.com/x@y:z@test.com/') (None, None) """ if type(url) not in (str, unicode): raise ValueError('URL has to be a string or unicode object.') (username, password) = (None, None) (scheme, netloc, path, params, query, fragment) = urlparse.urlparse(url) if '@' in netloc: (authentication, netloc) = netloc.rsplit('@', 1) if ':' in authentication: (username, password) = authentication.split(':', 1) # RFC1738 dictates that we should not allow ['/', '@', ':'] # characters in the username and password field (Section 3.1): # # 1. The "/" can't be in there at this point because of the way # urlparse (which we use above) works. # 2. Due to gPodder bug 1521, we allow "@" in the username and # password field. We use netloc.rsplit('@', 1), which will # make sure that we split it at the last '@' in netloc. # 3. The colon must be excluded (RFC2617, Section 2) in the # username, but is apparently allowed in the password. This # is handled by the authentication.split(':', 1) above, and # will cause any extraneous ':'s to be part of the password. username = urllib.unquote(username) password = urllib.unquote(password) else: username = urllib.unquote(authentication) return (username, password) def directory_is_writable(path): """ Returns True if the specified directory exists and is writable by the current user. """ return os.path.isdir(path) and os.access(path, os.W_OK) def calculate_size( path): """ Tries to calculate the size of a directory, including any subdirectories found. The returned value might not be correct if the user doesn't have appropriate permissions to list all subdirectories of the given path. """ if path is None: return 0L if os.path.dirname( path) == '/': return 0L if os.path.isfile( path): return os.path.getsize( path) if os.path.isdir( path) and not os.path.islink( path): sum = os.path.getsize( path) try: for item in os.listdir(path): try: sum += calculate_size(os.path.join(path, item)) except: logger.warn('Cannot get size for %s', path, exc_info=True) except: logger.warn('Cannot access %s', path, exc_info=True) return sum return 0L def file_modification_datetime(filename): """ Returns the modification date of the specified file as a datetime.datetime object or None if the modification date cannot be determined. """ if filename is None: return None if not os.access(filename, os.R_OK): return None try: s = os.stat(filename) timestamp = s[stat.ST_MTIME] return datetime.datetime.fromtimestamp(timestamp) except: logger.warn('Cannot get mtime for %s', filename, exc_info=True) return None def file_age_in_days(filename): """ Returns the age of the specified filename in days or zero if the modification date cannot be determined. """ dt = file_modification_datetime(filename) if dt is None: return 0 else: return (datetime.datetime.now()-dt).days def file_modification_timestamp(filename): """ Returns the modification date of the specified file as a number or -1 if the modification date cannot be determined. """ if filename is None: return -1 try: s = os.stat(filename) return s[stat.ST_MTIME] except: logger.warn('Cannot get modification timestamp for %s', filename) return -1 def file_age_to_string(days): """ Converts a "number of days" value to a string that can be used in the UI to display the file age. >>> file_age_to_string(0) '' >>> file_age_to_string(1) u'1 day ago' >>> file_age_to_string(2) u'2 days ago' """ if days < 1: return '' else: return N_('%(count)d day ago', '%(count)d days ago', days) % {'count':days} def is_system_file(filename): """ Checks to see if the given file is a system file. """ if gpodder.ui.win32 and win32file is not None: result = win32file.GetFileAttributes(filename) #-1 is returned by GetFileAttributes when an error occurs #0x4 is the FILE_ATTRIBUTE_SYSTEM constant return result != -1 and result & 0x4 != 0 else: return False def get_free_disk_space_win32(path): """ Win32-specific code to determine the free disk space remaining for a given path. Uses code from: http://mail.python.org/pipermail/python-list/2003-May/203223.html """ if win32file is None: # Cannot determine free disk space return -1 drive, tail = os.path.splitdrive(path) userFree, userTotal, freeOnDisk = win32file.GetDiskFreeSpaceEx(drive) return userFree def get_free_disk_space(path): """ Calculates the free disk space available to the current user on the file system that contains the given path. If the path (or its parent folder) does not yet exist, this function returns zero. """ if not os.path.exists(path): return -1 if gpodder.ui.win32: return get_free_disk_space_win32(path) s = os.statvfs(path) return s.f_bavail * s.f_bsize def format_date(timestamp): """ Converts a UNIX timestamp to a date representation. This function returns "Today", "Yesterday", a weekday name or the date in %x format, which (according to the Python docs) is the "Locale's appropriate date representation". Returns None if there has been an error converting the timestamp to a string representation. """ if timestamp is None: return None seconds_in_a_day = 60*60*24 today = time.localtime()[:3] yesterday = time.localtime(time.time() - seconds_in_a_day)[:3] try: timestamp_date = time.localtime(timestamp)[:3] except ValueError, ve: logger.warn('Cannot convert timestamp', exc_info=True) return None except TypeError, te: logger.warn('Cannot convert timestamp', exc_info=True) return None if timestamp_date == today: return _('Today') elif timestamp_date == yesterday: return _('Yesterday') try: diff = int( (time.time() - timestamp)/seconds_in_a_day ) except: logger.warn('Cannot convert "%s" to date.', timestamp, exc_info=True) return None try: timestamp = datetime.datetime.fromtimestamp(timestamp) except: return None if diff < 7: # Weekday name return str(timestamp.strftime('%A').decode(encoding)) else: # Locale's appropriate date representation return str(timestamp.strftime('%x')) def format_filesize(bytesize, use_si_units=False, digits=2): """ Formats the given size in bytes to be human-readable, Returns a localized "(unknown)" string when the bytesize has a negative value. """ si_units = ( ( 'kB', 10**3 ), ( 'MB', 10**6 ), ( 'GB', 10**9 ), ) binary_units = ( ( 'KiB', 2**10 ), ( 'MiB', 2**20 ), ( 'GiB', 2**30 ), ) try: bytesize = float( bytesize) except: return _('(unknown)') if bytesize < 0: return _('(unknown)') if use_si_units: units = si_units else: units = binary_units ( used_unit, used_value ) = ( 'B', bytesize ) for ( unit, value ) in units: if bytesize >= value: used_value = bytesize / float(value) used_unit = unit return ('%.'+str(digits)+'f %s') % (used_value, used_unit) def delete_file(filename): """Delete a file from the filesystem Errors (permissions errors or file not found) are silently ignored. """ try: os.remove(filename) except: pass def remove_html_tags(html): """ Remove HTML tags from a string and replace numeric and named entities with the corresponding character, so the HTML text can be displayed in a simple text view. """ if html is None: return None # If we would want more speed, we could make these global re_strip_tags = re.compile('<[^>]*>') re_unicode_entities = re.compile('&#(\d{2,4});') re_html_entities = re.compile('&(.{2,8});') re_newline_tags = re.compile('(]*>|<[/]?ul[^>]*>|)', re.I) re_listing_tags = re.compile(']*>', re.I) result = html # Convert common HTML elements to their text equivalent result = re_newline_tags.sub('\n', result) result = re_listing_tags.sub('\n * ', result) result = re.sub('<[Pp]>', '\n\n', result) # Remove all HTML/XML tags from the string result = re_strip_tags.sub('', result) # Convert numeric XML entities to their unicode character result = re_unicode_entities.sub(lambda x: unichr(int(x.group(1))), result) # Convert named HTML entities to their unicode character result = re_html_entities.sub(lambda x: unicode(entitydefs.get(x.group(1),''), 'iso-8859-1'), result) # Convert more than two newlines to two newlines result = re.sub('([\r\n]{2})([\r\n])+', '\\1', result) return result.strip() def wrong_extension(extension): """ Determine if a given extension looks like it's wrong (e.g. empty, extremely long or spaces) Returns True if the extension most likely is a wrong one and should be replaced. >>> wrong_extension('.mp3') False >>> wrong_extension('.divx') False >>> wrong_extension('mp3') True >>> wrong_extension('') True >>> wrong_extension('.12 - Everybody') True >>> wrong_extension('.mp3 ') True >>> wrong_extension('.') True >>> wrong_extension('.42') True """ if not extension: return True elif len(extension) > 5: return True elif ' ' in extension: return True elif extension == '.': return True elif not extension.startswith('.'): return True else: try: # "." is an invalid extension float(extension) return True except: pass return False def extension_from_mimetype(mimetype): """ Simply guesses what the file extension should be from the mimetype >>> extension_from_mimetype('audio/mp4') '.m4a' >>> extension_from_mimetype('audio/ogg') '.ogg' >>> extension_from_mimetype('audio/mpeg') '.mp3' >>> extension_from_mimetype('video/x-matroska') '.mkv' >>> extension_from_mimetype('wrong-mimetype') '' """ if mimetype in _MIME_TYPES: return _MIME_TYPES[mimetype] return mimetypes.guess_extension(mimetype) or '' def mimetype_from_extension(extension): """ Simply guesses what the mimetype should be from the file extension >>> mimetype_from_extension('.m4a') 'audio/mp4' >>> mimetype_from_extension('.ogg') 'audio/ogg' >>> mimetype_from_extension('.mp3') 'audio/mpeg' >>> mimetype_from_extension('.mkv') 'video/x-matroska' >>> mimetype_from_extension('._invalid_file_extension_') '' """ if extension in _MIME_TYPES_EXT: return _MIME_TYPES_EXT[extension] # Need to prepend something to the extension, so guess_type works type, encoding = mimetypes.guess_type('file'+extension) return type or '' def extension_correct_for_mimetype(extension, mimetype): """ Check if the given filename extension (e.g. ".ogg") is a possible extension for a given mimetype (e.g. "application/ogg") and return a boolean value (True if it's possible, False if not). Also do >>> extension_correct_for_mimetype('.ogg', 'application/ogg') True >>> extension_correct_for_mimetype('.ogv', 'video/ogg') True >>> extension_correct_for_mimetype('.ogg', 'audio/mpeg') False >>> extension_correct_for_mimetype('.m4a', 'audio/mp4') True >>> extension_correct_for_mimetype('mp3', 'audio/mpeg') Traceback (most recent call last): ... ValueError: "mp3" is not an extension (missing .) >>> extension_correct_for_mimetype('.mp3', 'audio mpeg') Traceback (most recent call last): ... ValueError: "audio mpeg" is not a mimetype (missing /) """ if not '/' in mimetype: raise ValueError('"%s" is not a mimetype (missing /)' % mimetype) if not extension.startswith('.'): raise ValueError('"%s" is not an extension (missing .)' % extension) if (extension, mimetype) in _MIME_TYPE_LIST: return True # Create a "default" extension from the mimetype, e.g. "application/ogg" # becomes ".ogg", "audio/mpeg" becomes ".mpeg", etc... default = ['.'+mimetype.split('/')[-1]] return extension in default+mimetypes.guess_all_extensions(mimetype) def filename_from_url(url): """ Extracts the filename and (lowercase) extension (with dot) from a URL, e.g. http://server.com/file.MP3?download=yes will result in the string ("file", ".mp3") being returned. This function will also try to best-guess the "real" extension for a media file (audio, video) by trying to match an extension to these types and recurse into the query string to find better matches, if the original extension does not resolve to a known type. http://my.net/redirect.php?my.net/file.ogg => ("file", ".ogg") http://server/get.jsp?file=/episode0815.MOV => ("episode0815", ".mov") http://s/redirect.mp4?http://serv2/test.mp4 => ("test", ".mp4") """ (scheme, netloc, path, para, query, fragid) = urlparse.urlparse(url) (filename, extension) = os.path.splitext(os.path.basename( urllib.unquote(path))) if file_type_by_extension(extension) is not None and not \ query.startswith(scheme+'://'): # We have found a valid extension (audio, video) # and the query string doesn't look like a URL return ( filename, extension.lower() ) # If the query string looks like a possible URL, try that first if len(query.strip()) > 0 and query.find('/') != -1: query_url = '://'.join((scheme, urllib.unquote(query))) (query_filename, query_extension) = filename_from_url(query_url) if file_type_by_extension(query_extension) is not None: return os.path.splitext(os.path.basename(query_url)) # No exact match found, simply return the original filename & extension return ( filename, extension.lower() ) def file_type_by_extension(extension): """ Tries to guess the file type by looking up the filename extension from a table of known file types. Will return "audio", "video" or None. >>> file_type_by_extension('.aif') 'audio' >>> file_type_by_extension('.3GP') 'video' >>> file_type_by_extension('.m4a') 'audio' >>> file_type_by_extension('.txt') is None True >>> file_type_by_extension(None) is None True >>> file_type_by_extension('ogg') Traceback (most recent call last): ... ValueError: Extension does not start with a dot: ogg """ if not extension: return None if not extension.startswith('.'): raise ValueError('Extension does not start with a dot: %s' % extension) extension = extension.lower() if extension in _MIME_TYPES_EXT: return _MIME_TYPES_EXT[extension].split('/')[0] # Need to prepend something to the extension, so guess_type works type, encoding = mimetypes.guess_type('file'+extension) if type is not None and '/' in type: filetype, rest = type.split('/', 1) if filetype in ('audio', 'video', 'image'): return filetype return None def get_first_line( s): """ Returns only the first line of a string, stripped so that it doesn't have whitespace before or after. """ return s.strip().split('\n')[0].strip() def object_string_formatter(s, **kwargs): """ Makes attributes of object passed in as keyword arguments available as {OBJECTNAME.ATTRNAME} in the passed-in string and returns a string with the above arguments replaced with the attribute values of the corresponding object. >>> class x: pass >>> a = x() >>> a.title = 'Hello world' >>> object_string_formatter('{episode.title}', episode=a) 'Hello world' >>> class x: pass >>> a = x() >>> a.published = 123 >>> object_string_formatter('Hi {episode.published} 456', episode=a) 'Hi 123 456' """ result = s for key, o in kwargs.iteritems(): matches = re.findall(r'\{%s\.([^\}]+)\}' % key, s) for attr in matches: if hasattr(o, attr): try: from_s = '{%s.%s}' % (key, attr) to_s = str(getattr(o, attr)) result = result.replace(from_s, to_s) except: logger.warn('Replace of "%s" failed for "%s".', attr, s) return result def format_desktop_command(command, filenames, start_position=None): """ Formats a command template from the "Exec=" line of a .desktop file to a string that can be invoked in a shell. Handled format strings: %U, %u, %F, %f and a fallback that appends the filename as first parameter of the command. Also handles non-standard %p which is replaced with the start_position (probably only makes sense if starting a single file). (see bug 1140) See http://standards.freedesktop.org/desktop-entry-spec/1.0/ar01s06.html Returns a list of commands to execute, either one for each filename if the application does not support multiple file names or one for all filenames (%U, %F or unknown). """ # Replace backslashes with slashes to fix win32 issues # (even on win32, "/" works, but "\" does not) command = command.replace('\\', '/') if start_position is not None: command = command.replace('%p', str(start_position)) command = shlex.split(command) command_before = command command_after = [] multiple_arguments = True for fieldcode in ('%U', '%F', '%u', '%f'): if fieldcode in command: command_before = command[:command.index(fieldcode)] command_after = command[command.index(fieldcode)+1:] multiple_arguments = fieldcode in ('%U', '%F') break if multiple_arguments: return [command_before + filenames + command_after] commands = [] for filename in filenames: commands.append(command_before+[filename]+command_after) return commands def url_strip_authentication(url): """ Strips authentication data from an URL. Returns the URL with the authentication data removed from it. >>> url_strip_authentication('https://host.com/') 'https://host.com/' >>> url_strip_authentication('telnet://foo:bar@host.com/') 'telnet://host.com/' >>> url_strip_authentication('ftp://billy@example.org') 'ftp://example.org' >>> url_strip_authentication('ftp://billy:@example.org') 'ftp://example.org' >>> url_strip_authentication('http://aa:bc@localhost/x') 'http://localhost/x' >>> url_strip_authentication('http://i%2Fo:P%40ss%3A@blubb.lan/u.html') 'http://blubb.lan/u.html' >>> url_strip_authentication('http://c:d@x.org/') 'http://x.org/' >>> url_strip_authentication('http://P%40%3A:i%2F@cx.lan') 'http://cx.lan' >>> url_strip_authentication('http://x@x.com:s3cret@example.com/') 'http://example.com/' """ url_parts = list(urlparse.urlsplit(url)) # url_parts[1] is the HOST part of the URL # Remove existing authentication data if '@' in url_parts[1]: url_parts[1] = url_parts[1].rsplit('@', 1)[1] return urlparse.urlunsplit(url_parts) def url_add_authentication(url, username, password): """ Adds authentication data (username, password) to a given URL in order to construct an authenticated URL. >>> url_add_authentication('https://host.com/', '', None) 'https://host.com/' >>> url_add_authentication('http://example.org/', None, None) 'http://example.org/' >>> url_add_authentication('telnet://host.com/', 'foo', 'bar') 'telnet://foo:bar@host.com/' >>> url_add_authentication('ftp://example.org', 'billy', None) 'ftp://billy@example.org' >>> url_add_authentication('ftp://example.org', 'billy', '') 'ftp://billy:@example.org' >>> url_add_authentication('http://localhost/x', 'aa', 'bc') 'http://aa:bc@localhost/x' >>> url_add_authentication('http://blubb.lan/u.html', 'i/o', 'P@ss:') 'http://i%2Fo:P@ss:@blubb.lan/u.html' >>> url_add_authentication('http://a:b@x.org/', 'c', 'd') 'http://c:d@x.org/' >>> url_add_authentication('http://i%2F:P%40%3A@cx.lan', 'P@x', 'i/') 'http://P@x:i%2F@cx.lan' >>> url_add_authentication('http://x.org/', 'a b', 'c d') 'http://a%20b:c%20d@x.org/' """ if username is None or username == '': return url # Relaxations of the strict quoting rules (bug 1521): # 1. Accept '@' in username and password # 2. Acecpt ':' in password only username = urllib.quote(username, safe='@') if password is not None: password = urllib.quote(password, safe='@:') auth_string = ':'.join((username, password)) else: auth_string = username url = url_strip_authentication(url) url_parts = list(urlparse.urlsplit(url)) # url_parts[1] is the HOST part of the URL url_parts[1] = '@'.join((auth_string, url_parts[1])) return urlparse.urlunsplit(url_parts) def urlopen(url, headers=None, data=None, timeout=None): """ An URL opener with the User-agent set to gPodder (with version) """ username, password = username_password_from_url(url) if username is not None or password is not None: url = url_strip_authentication(url) password_mgr = urllib2.HTTPPasswordMgrWithDefaultRealm() password_mgr.add_password(None, url, username, password) handler = urllib2.HTTPBasicAuthHandler(password_mgr) opener = urllib2.build_opener(handler) else: opener = urllib2.build_opener() if headers is None: headers = {} else: headers = dict(headers) headers.update({'User-agent': gpodder.user_agent}) request = urllib2.Request(url, data=data, headers=headers) if timeout is None: return opener.open(request) else: return opener.open(request, timeout=timeout) def get_real_url(url): """ Gets the real URL of a file and resolves all redirects. """ try: return urlopen(url).geturl() except: logger.error('Getting real url for %s', url, exc_info=True) return url def find_command(command): """ Searches the system's PATH for a specific command that is executable by the user. Returns the first occurence of an executable binary in the PATH, or None if the command is not available. On Windows, this also looks for ".bat" and ".exe" files if "" itself doesn't exist. """ if 'PATH' not in os.environ: return None for path in os.environ['PATH'].split(os.pathsep): command_file = os.path.join(path, command) if gpodder.ui.win32 and not os.path.exists(command_file): for extension in ('.bat', '.exe'): cmd = command_file + extension if os.path.isfile(cmd): command_file = cmd break if os.path.isfile(command_file) and os.access(command_file, os.X_OK): return command_file return None def idle_add(func, *args): """Run a function in the main GUI thread This is a wrapper function that does the Right Thing depending on if we are running on Gtk+, Qt or CLI. You should use this function if you are calling from a Python thread and modify UI data, so that you make sure that the function is called as soon as possible from the main UI thread. """ if gpodder.ui.gtk: import gobject gobject.idle_add(func, *args) else: func(*args) def bluetooth_available(): """ Returns True or False depending on the availability of bluetooth functionality on the system. """ if find_command('bluetooth-sendto') or \ find_command('gnome-obex-send'): return True else: return False def bluetooth_send_file(filename): """ Sends a file via bluetooth. This function tries to use "bluetooth-sendto", and if it is not available, it also tries "gnome-obex-send". """ command_line = None if find_command('bluetooth-sendto'): command_line = ['bluetooth-sendto'] elif find_command('gnome-obex-send'): command_line = ['gnome-obex-send'] if command_line is not None: command_line.append(filename) return (subprocess.Popen(command_line).wait() == 0) else: logger.error('Cannot send file. Please install "bluetooth-sendto" or "gnome-obex-send".') return False def format_time(value): """Format a seconds value to a string >>> format_time(0) '00:00' >>> format_time(20) '00:20' >>> format_time(3600) '01:00:00' >>> format_time(10921) '03:02:01' """ dt = datetime.datetime.utcfromtimestamp(value) if dt.hour == 0: return dt.strftime('%M:%S') else: return dt.strftime('%H:%M:%S') def parse_time(value): """Parse a time string into seconds >>> parse_time('00:00') 0 >>> parse_time('00:00:00') 0 >>> parse_time('00:20') 20 >>> parse_time('00:00:20') 20 >>> parse_time('01:00:00') 3600 >>> parse_time('03:02:01') 10921 >>> parse_time('61:08') 3668 >>> parse_time('25:03:30') 90210 >>> parse_time('25:3:30') 90210 >>> parse_time('61.08') 3668 """ if value == '': return 0 if not value: raise ValueError('Invalid value: %s' % (str(value),)) m = re.match(r'(\d+)[:.](\d\d?)[:.](\d\d?)', value) if m: hours, minutes, seconds = m.groups() return (int(hours) * 60 + int(minutes)) * 60 + int(seconds) m = re.match(r'(\d+)[:.](\d\d?)', value) if m: minutes, seconds = m.groups() return int(minutes) * 60 + int(seconds) return int(value) def format_seconds_to_hour_min_sec(seconds): """ Take the number of seconds and format it into a human-readable string (duration). >>> format_seconds_to_hour_min_sec(3834) u'1 hour, 3 minutes and 54 seconds' >>> format_seconds_to_hour_min_sec(3600) u'1 hour' >>> format_seconds_to_hour_min_sec(62) u'1 minute and 2 seconds' """ if seconds < 1: return N_('%(count)d second', '%(count)d seconds', seconds) % {'count':seconds} result = [] seconds = int(seconds) hours = seconds/3600 seconds = seconds%3600 minutes = seconds/60 seconds = seconds%60 if hours: result.append(N_('%(count)d hour', '%(count)d hours', hours) % {'count':hours}) if minutes: result.append(N_('%(count)d minute', '%(count)d minutes', minutes) % {'count':minutes}) if seconds: result.append(N_('%(count)d second', '%(count)d seconds', seconds) % {'count':seconds}) if len(result) > 1: return (' '+_('and')+' ').join((', '.join(result[:-1]), result[-1])) else: return result[0] def http_request(url, method='HEAD'): (scheme, netloc, path, parms, qry, fragid) = urlparse.urlparse(url) conn = httplib.HTTPConnection(netloc) start = len(scheme) + len('://') + len(netloc) conn.request(method, url[start:]) return conn.getresponse() def gui_open(filename): """ Open a file or folder with the default application set by the Desktop environment. This uses "xdg-open" on all systems with a few exceptions: on Win32, os.startfile() is used """ try: if gpodder.ui.win32: os.startfile(filename) elif gpodder.ui.osx: subprocess.Popen(['open', filename]) else: subprocess.Popen(['xdg-open', filename]) return True except: logger.error('Cannot open file/folder: "%s"', filename, exc_info=True) return False def open_website(url): """ Opens the specified URL using the default system web browser. This uses Python's "webbrowser" module, so make sure your system is set up correctly. """ run_in_background(lambda: webbrowser.open(url)) def convert_bytes(d): """ Convert byte strings to unicode strings This function will decode byte strings into unicode strings. Any other data types will be left alone. >>> convert_bytes(None) >>> convert_bytes(1) 1 >>> convert_bytes(4711L) 4711L >>> convert_bytes(True) True >>> convert_bytes(3.1415) 3.1415 >>> convert_bytes('Hello') u'Hello' >>> convert_bytes(u'Hey') u'Hey' """ if d is None: return d if any(isinstance(d, t) for t in (int, long, bool, float)): return d elif not isinstance(d, unicode): return d.decode('utf-8', 'ignore') return d def sanitize_encoding(filename): r""" Generate a sanitized version of a string (i.e. remove invalid characters and encode in the detected native language encoding). >>> sanitize_encoding('\x80') '' >>> sanitize_encoding(u'unicode') 'unicode' """ # The encoding problem goes away in Python 3.. hopefully! if sys.version_info >= (3, 0): return filename global encoding if not isinstance(filename, unicode): filename = filename.decode(encoding, 'ignore') return filename.encode(encoding, 'ignore') def sanitize_filename(filename, max_length=0, use_ascii=False): """ Generate a sanitized version of a filename that can be written on disk (i.e. remove/replace invalid characters and encode in the native language) and trim filename if greater than max_length (0 = no limit). If use_ascii is True, don't encode in the native language, but use only characters from the ASCII character set. """ if not isinstance(filename, unicode): filename = filename.decode(encoding, 'ignore') if max_length > 0 and len(filename) > max_length: logger.info('Limiting file/folder name "%s" to %d characters.', filename, max_length) filename = filename[:max_length] filename = filename.encode('ascii' if use_ascii else encoding, 'ignore') filename = filename.translate(SANITIZATION_TABLE) filename = filename.strip('.' + string.whitespace) return filename def find_mount_point(directory): """ Try to find the mount point for a given directory. If the directory is itself a mount point, return it. If not, remove the last part of the path and re-check if it's a mount point. If the directory resides on your root filesystem, "/" is returned. >>> find_mount_point('/') '/' >>> find_mount_point(u'/something') Traceback (most recent call last): ... ValueError: Convert unicode objects to str first. >>> find_mount_point(None) Traceback (most recent call last): ... ValueError: Directory names should be of type str. >>> find_mount_point(42) Traceback (most recent call last): ... ValueError: Directory names should be of type str. >>> from minimock import mock, restore >>> mocked_mntpoints = ('/', '/home', '/media/usbdisk', '/media/cdrom') >>> mock('os.path.ismount', returns_func=lambda x: x in mocked_mntpoints) >>> >>> # For mocking os.getcwd(), we simply use a lambda to avoid the >>> # massive output of "Called os.getcwd()" lines in this doctest >>> os.getcwd = lambda: '/home/thp' >>> >>> find_mount_point('.') Called os.path.ismount('/home/thp') Called os.path.ismount('/home') '/home' >>> find_mount_point('relativity') Called os.path.ismount('/home/thp/relativity') Called os.path.ismount('/home/thp') Called os.path.ismount('/home') '/home' >>> find_mount_point('/media/usbdisk/') Called os.path.ismount('/media/usbdisk') '/media/usbdisk' >>> find_mount_point('/home/thp/Desktop') Called os.path.ismount('/home/thp/Desktop') Called os.path.ismount('/home/thp') Called os.path.ismount('/home') '/home' >>> find_mount_point('/media/usbdisk/Podcasts/With Spaces') Called os.path.ismount('/media/usbdisk/Podcasts/With Spaces') Called os.path.ismount('/media/usbdisk/Podcasts') Called os.path.ismount('/media/usbdisk') '/media/usbdisk' >>> find_mount_point('/home/') Called os.path.ismount('/home') '/home' >>> find_mount_point('/media/cdrom/../usbdisk/blubb//') Called os.path.ismount('/media/usbdisk/blubb') Called os.path.ismount('/media/usbdisk') '/media/usbdisk' >>> restore() """ if isinstance(directory, unicode): # XXX: This is only valid for Python 2 - misleading error in Python 3? # We do not accept unicode strings, because they could fail when # trying to be converted to some native encoding, so fail loudly # and leave it up to the callee to encode into the proper encoding. raise ValueError('Convert unicode objects to str first.') if not isinstance(directory, str): # In Python 2, we assume it's a byte str; in Python 3, we assume # that it's a unicode str. The abspath/ismount/split functions of # os.path work with unicode str in Python 3, but not in Python 2. raise ValueError('Directory names should be of type str.') directory = os.path.abspath(directory) while directory != '/': if os.path.ismount(directory): return directory else: (directory, tail_data) = os.path.split(directory) return '/' # matches http:// and ftp:// and mailto:// protocolPattern = re.compile(r'^\w+://') def isabs(string): """ @return true if string is an absolute path or protocoladdress for addresses beginning in http:// or ftp:// or ldap:// - they are considered "absolute" paths. Source: http://code.activestate.com/recipes/208993/ """ if protocolPattern.match(string): return 1 return os.path.isabs(string) def commonpath(l1, l2, common=[]): """ helper functions for relpath Source: http://code.activestate.com/recipes/208993/ """ if len(l1) < 1: return (common, l1, l2) if len(l2) < 1: return (common, l1, l2) if l1[0] != l2[0]: return (common, l1, l2) return commonpath(l1[1:], l2[1:], common+[l1[0]]) def relpath(p1, p2): """ Finds relative path from p1 to p2 Source: http://code.activestate.com/recipes/208993/ """ pathsplit = lambda s: s.split(os.path.sep) (common,l1,l2) = commonpath(pathsplit(p1), pathsplit(p2)) p = [] if len(l1) > 0: p = [ ('..'+os.sep) * len(l1) ] p = p + l2 if len(p) is 0: return "." return os.path.join(*p) def get_hostname(): """Return the hostname of this computer This can be implemented in a different way on each platform and should yield a unique-per-user device ID. """ nodename = platform.node() if nodename: return nodename # Fallback - but can this give us "localhost"? return socket.gethostname() def detect_device_type(): """Device type detection for gpodder.net This function tries to detect on which kind of device gPodder is running on. Possible return values: desktop, laptop, mobile, server, other """ if glob.glob('/proc/acpi/battery/*'): # Linux: If we have a battery, assume Laptop return 'laptop' return 'desktop' def write_m3u_playlist(m3u_filename, episodes, extm3u=True): """Create an M3U playlist from a episode list If the parameter "extm3u" is False, the list of episodes should be a list of filenames, and no extended information will be written into the M3U files (#EXTM3U / #EXTINF). If the parameter "extm3u" is True (default), then the list of episodes should be PodcastEpisode objects, as the extended metadata will be taken from them. """ f = open(m3u_filename, 'w') if extm3u: # Mandatory header for extended playlists f.write('#EXTM3U\n') for episode in episodes: if not extm3u: # Episode objects are strings that contain file names f.write(episode+'\n') continue if episode.was_downloaded(and_exists=True): filename = episode.local_filename(create=False) assert filename is not None if os.path.dirname(filename).startswith(os.path.dirname(m3u_filename)): filename = filename[len(os.path.dirname(m3u_filename)+os.sep):] f.write('#EXTINF:0,'+episode.playlist_title()+'\n') f.write(filename+'\n') f.close() def generate_names(filename): basename, ext = os.path.splitext(filename) for i in itertools.count(): if i: yield '%s (%d)%s' % (basename, i+1, ext) else: yield filename def is_known_redirecter(url): """Check if a URL redirect is expected, and no filenames should be updated We usually honor URL redirects, and update filenames accordingly. In some cases (e.g. Soundcloud) this results in a worse filename, so we hardcode and detect these cases here to avoid renaming files for which we know that a "known good default" exists. The problem here is that by comparing the currently-assigned filename with the new filename determined by the URL, we cannot really determine which one is the "better" URL (e.g. "n5rMSpXrqmR9.128.mp3" for Soundcloud). """ # Soundcloud-hosted media downloads (we take the track name as filename) if url.startswith('http://ak-media.soundcloud.com/'): return True return False def atomic_rename(old_name, new_name): """Atomically rename/move a (temporary) file This is usually used when updating a file safely by writing the new contents into a temporary file and then moving the temporary file over the original file to replace it. """ if gpodder.ui.win32: # Win32 does not support atomic rename with os.rename shutil.move(old_name, new_name) else: os.rename(old_name, new_name) def check_command(self, cmd): """Check if a command line command/program exists""" # Prior to Python 2.7.3, this module (shlex) did not support Unicode input. cmd = sanitize_encoding(cmd) program = shlex.split(cmd)[0] return (find_command(program) is not None) def rename_episode_file(episode, filename): """Helper method to update a PodcastEpisode object Useful after renaming/converting its download file. """ if not os.path.exists(filename): raise ValueError('Target filename does not exist.') basename, extension = os.path.splitext(filename) episode.download_filename = os.path.basename(filename) episode.file_size = os.path.getsize(filename) episode.mime_type = mimetype_from_extension(extension) episode.save() episode.db.commit() def get_update_info(url='http://gpodder.org/downloads'): """ Get up to date release information from gpodder.org. Returns a tuple: (up_to_date, latest_version, release_date, days_since) Example result (up to date version, 20 days after release): (True, '3.0.4', '2012-01-24', 20) Example result (outdated version, 10 days after release): (False, '3.0.5', '2012-02-29', 10) """ data = urlopen(url).read() id_field_re = re.compile(r'<([a-z]*)[^>]*id="([^"]*)"[^>]*>([^<]*)') info = dict((m.group(2), m.group(3)) for m in id_field_re.finditer(data)) latest_version = info['latest-version'] release_date = info['release-date'] release_parsed = datetime.datetime.strptime(release_date, '%Y-%m-%d') days_since_release = (datetime.datetime.today() - release_parsed).days convert = lambda s: tuple(int(x) for x in s.split('.')) up_to_date = (convert(gpodder.__version__) >= convert(latest_version)) return up_to_date, latest_version, release_date, days_since_release def run_in_background(function, daemon=False): logger.debug('run_in_background: %s (%s)', function, str(daemon)) thread = threading.Thread(target=function) thread.setDaemon(daemon) thread.start() return thread def linux_get_active_interfaces(): """Get active network interfaces using 'ip link' Returns a list of active network interfaces or an empty list if the device is offline. The loopback interface is not included. """ process = subprocess.Popen(['ip', 'link'], stdout=subprocess.PIPE) data, _ = process.communicate() for interface, _ in re.findall(r'\d+: ([^:]+):.*state (UP|UNKNOWN)', data): if interface != 'lo': yield interface def osx_get_active_interfaces(): """Get active network interfaces using 'ifconfig' Returns a list of active network interfaces or an empty list if the device is offline. The loopback interface is not included. """ process = subprocess.Popen(['ifconfig'], stdout=subprocess.PIPE) stdout, _ = process.communicate() for i in re.split('\n(?!\t)', stdout, re.MULTILINE): b = re.match('(\\w+):.*status: (active|associated)$', i, re.MULTILINE | re.DOTALL) if b: yield b.group(1) def unix_get_active_interfaces(): """Get active network interfaces using 'ifconfig' Returns a list of active network interfaces or an empty list if the device is offline. The loopback interface is not included. """ process = subprocess.Popen(['ifconfig'], stdout=subprocess.PIPE) stdout, _ = process.communicate() for i in re.split('\n(?!\t)', stdout, re.MULTILINE): b = re.match('(\\w+):.*status: active$', i, re.MULTILINE | re.DOTALL) if b: yield b.group(1) def connection_available(): """Check if an Internet connection is available Returns True if a connection is available (or if there is no way to determine the connection). Returns False if no network interfaces are up (i.e. no connectivity). """ try: if gpodder.ui.win32: # FIXME: Implement for Windows return True elif gpodder.ui.osx: return len(list(osx_get_active_interfaces())) > 0 else: # By default, we assume we're not offline (bug 1730) offline = False if find_command('ifconfig') is not None: # If ifconfig is available, and it says we don't have # any active interfaces, assume we're offline if len(list(unix_get_active_interfaces())) == 0: offline = True # If we assume we're offline, try the "ip" command as fallback if offline and find_command('ip') is not None: if len(list(linux_get_active_interfaces())) == 0: offline = True else: offline = False return not offline return False except Exception, e: logger.warn('Cannot get connection status: %s', e, exc_info=True) # When we can't determine the connection status, act as if we're online (bug 1730) return True def website_reachable(url): """ Check if a specific website is available. """ if not connection_available(): # No network interfaces up - assume website not reachable return (False, None) try: response = urllib2.urlopen(url, timeout=1) return (True, response) except urllib2.URLError as err: pass return (False, None) def delete_empty_folders(top): for root, dirs, files in os.walk(top, topdown=False): for name in dirs: dirname = os.path.join(root, name) if not os.listdir(dirname): os.rmdir(dirname) gpodder-3.9.0/src/gpodder/model.py0000644000016000001710000014564012654461624020172 0ustar jenkinsjenkins00000000000000# -*- coding: utf-8 -*- # # gPodder - A media aggregator and podcast client # Copyright (c) 2005-2016 Thomas Perl and the gPodder Team # Copyright (c) 2011 Neal H. Walfield # # gPodder is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 3 of the License, or # (at your option) any later version. # # gPodder is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . # # # gpodder.model - Core model classes for gPodder (2009-08-13) # Based on libpodcasts.py (thp, 2005-10-29) # import gpodder from gpodder import util from gpodder import feedcore from gpodder import youtube from gpodder import vimeo from gpodder import escapist_videos from gpodder import schema from gpodder import coverart import logging logger = logging.getLogger(__name__) import os import re import glob import shutil import time import datetime import hashlib import feedparser import collections import string _ = gpodder.gettext class CustomFeed(feedcore.ExceptionWithData): pass class gPodderFetcher(feedcore.Fetcher): """ This class extends the feedcore Fetcher with the gPodder User-Agent and the Proxy handler based on the current settings in gPodder. """ custom_handlers = [] def __init__(self): feedcore.Fetcher.__init__(self, gpodder.user_agent) def fetch_channel(self, channel): etag = channel.http_etag modified = feedparser._parse_date(channel.http_last_modified) # If we have a username or password, rebuild the url with them included # Note: using a HTTPBasicAuthHandler would be pain because we need to # know the realm. It can be done, but I think this method works, too url = channel.authenticate_url(channel.url) for handler in self.custom_handlers: custom_feed = handler.handle_url(url) if custom_feed is not None: return feedcore.Result(feedcore.CUSTOM_FEED, custom_feed) return self.fetch(url, etag, modified) def _resolve_url(self, url): url = youtube.get_real_channel_url(url) url = vimeo.get_real_channel_url(url) url = escapist_videos.get_real_channel_url(url) return url @classmethod def register(cls, handler): cls.custom_handlers.append(handler) # The "register" method is exposed here for external usage register_custom_handler = gPodderFetcher.register # Our podcast model: # # database -> podcast -> episode -> download/playback # podcast.parent == db # podcast.children == [episode, ...] # episode.parent == podcast # # - normally: episode.children = (None, None) # - downloading: episode.children = (DownloadTask(), None) # - playback: episode.children = (None, PlaybackTask()) class PodcastModelObject(object): """ A generic base class for our podcast model providing common helper and utility functions. """ __slots__ = ('id', 'parent', 'children') @classmethod def create_from_dict(cls, d, *args): """ Create a new object, passing "args" to the constructor and then updating the object with the values from "d". """ o = cls(*args) # XXX: all(map(lambda k: hasattr(o, k), d))? for k, v in d.iteritems(): setattr(o, k, v) return o class PodcastEpisode(PodcastModelObject): """holds data for one object in a channel""" # In theory, Linux can have 255 bytes (not characters!) in a filename, but # filesystems like eCryptFS store metadata in the filename, making the # effective number of characters less than that. eCryptFS recommends # 140 chars, we use 120 here (140 - len(extension) - len(".partial")). # References: gPodder bug 1898, http://unix.stackexchange.com/a/32834 MAX_FILENAME_LENGTH = 120 __slots__ = schema.EpisodeColumns def _deprecated(self): raise Exception('Property is deprecated!') is_played = property(fget=_deprecated, fset=_deprecated) is_locked = property(fget=_deprecated, fset=_deprecated) def has_website_link(self): return bool(self.link) and (self.link != self.url or \ youtube.is_video_link(self.link)) @classmethod def from_feedparser_entry(cls, entry, channel): episode = cls(channel) episode.guid = entry.get('id', '') # Replace multi-space and newlines with single space (Maemo bug 11173) episode.title = re.sub('\s+', ' ', entry.get('title', '')) episode.link = entry.get('link', '') if 'content' in entry and len(entry['content']) and \ entry['content'][0].get('type', '') == 'text/html': episode.description = entry['content'][0].value else: episode.description = entry.get('summary', '') # Fallback to subtitle if summary is not available if not episode.description: episode.description = entry.get('subtitle', '') try: total_time = 0 # Parse iTunes-specific podcast duration metadata itunes_duration = entry.get('itunes_duration', '') if itunes_duration: total_time = util.parse_time(itunes_duration) # Parse time from YouTube descriptions if it's a YouTube feed if youtube.is_youtube_guid(episode.guid): result = re.search(r'Time:<[^>]*>\n<[^>]*>([:0-9]*)<', episode.description) if result: youtube_duration = result.group(1) total_time = util.parse_time(youtube_duration) episode.total_time = total_time except: pass episode.published = feedcore.get_pubdate(entry) enclosures = entry.get('enclosures', []) media_rss_content = entry.get('media_content', []) audio_available = any(e.get('type', '').startswith('audio/') \ for e in enclosures + media_rss_content) video_available = any(e.get('type', '').startswith('video/') \ for e in enclosures + media_rss_content) # XXX: Make it possible for hooks/extensions to override this by # giving them a list of enclosures and the "self" object (podcast) # and letting them sort and/or filter the list of enclosures to # get the desired enclosure picked by the algorithm below. filter_and_sort_enclosures = lambda x: x payment_info = [link['href'] for link in entry.get('links', []) if link['rel'] == 'payment'] if payment_info: episode.payment_url = payment_info[0] # Enclosures for e in filter_and_sort_enclosures(enclosures): episode.mime_type = e.get('type', 'application/octet-stream') if episode.mime_type == '': # See Maemo bug 10036 logger.warn('Fixing empty mimetype in ugly feed') episode.mime_type = 'application/octet-stream' if '/' not in episode.mime_type: continue # Skip images in feeds if audio or video is available (bug 979) # This must (and does) also look in Media RSS enclosures (bug 1430) if episode.mime_type.startswith('image/') and \ (audio_available or video_available): continue # If we have audio or video available later on, skip # 'application/octet-stream' data types (fixes Linux Outlaws) if episode.mime_type == 'application/octet-stream' and \ (audio_available or video_available): continue episode.url = util.normalize_feed_url(e.get('href', '')) if not episode.url: continue try: episode.file_size = int(e.length) or -1 except: episode.file_size = -1 return episode # Media RSS content for m in filter_and_sort_enclosures(media_rss_content): episode.mime_type = m.get('type', 'application/octet-stream') if '/' not in episode.mime_type: continue # Skip images in Media RSS if we have audio/video (bug 1444) if episode.mime_type.startswith('image/') and \ (audio_available or video_available): continue episode.url = util.normalize_feed_url(m.get('url', '')) if not episode.url: continue try: episode.file_size = int(m.get('filesize', 0)) or -1 except: episode.file_size = -1 try: episode.total_time = int(m.get('duration', 0)) or 0 except: episode.total_time = 0 return episode # Brute-force detection of any links for l in entry.get('links', ()): episode.url = util.normalize_feed_url(l.get('href', '')) if not episode.url: continue if ( youtube.is_video_link(episode.url) or \ vimeo.is_video_link(episode.url) or \ escapist_videos.is_video_link(episode.url) ): return episode # Check if we can resolve this link to a audio/video file filename, extension = util.filename_from_url(episode.url) file_type = util.file_type_by_extension(extension) if file_type is None and hasattr(l, 'type'): extension = util.extension_from_mimetype(l.type) file_type = util.file_type_by_extension(extension) # The link points to a audio or video file - use it! if file_type is not None: return episode return None def __init__(self, channel): self.parent = channel self.podcast_id = self.parent.id self.children = (None, None) self.id = None self.url = '' self.title = '' self.file_size = 0 self.mime_type = 'application/octet-stream' self.guid = '' self.description = '' self.link = '' self.published = 0 self.download_filename = None self.payment_url = None self.state = gpodder.STATE_NORMAL self.is_new = True self.archive = channel.auto_archive_episodes # Time attributes self.total_time = 0 self.current_position = 0 self.current_position_updated = 0 # Timestamp of last playback time self.last_playback = 0 @property def channel(self): return self.parent @property def db(self): return self.parent.parent.db @property def trimmed_title(self): """Return the title with the common prefix trimmed""" # Minimum amount of leftover characters after trimming. This # avoids things like "Common prefix 123" to become just "123". # If there are LEFTOVER_MIN or less characters after trimming, # the original title will be returned without trimming. LEFTOVER_MIN = 5 # "Podcast Name - Title" and "Podcast Name: Title" -> "Title" for postfix in (' - ', ': '): prefix = self.parent.title + postfix if (self.title.startswith(prefix) and len(self.title)-len(prefix) > LEFTOVER_MIN): return self.title[len(prefix):] regex_patterns = [ # "Podcast Name : ..." -> ": ..." r'^%s (\d+: .*)' % re.escape(self.parent.title), # "Episode : ..." -> ": ..." r'Episode (\d+:.*)', ] for pattern in regex_patterns: if re.match(pattern, self.title): title = re.sub(pattern, r'\1', self.title) if len(title) > LEFTOVER_MIN: return title # "#001: Title" -> "001: Title" if (not self.parent._common_prefix and re.match('^#\d+: ', self.title) and len(self.title)-1 > LEFTOVER_MIN): return self.title[1:] if (self.parent._common_prefix is not None and self.title.startswith(self.parent._common_prefix) and len(self.title)-len(self.parent._common_prefix) > LEFTOVER_MIN): return self.title[len(self.parent._common_prefix):] return self.title def _set_download_task(self, download_task): self.children = (download_task, self.children[1]) def _get_download_task(self): return self.children[0] download_task = property(_get_download_task, _set_download_task) @property def downloading(self): task = self.download_task if task is None: return False return task.status in (task.DOWNLOADING, task.QUEUED, task.PAUSED) def check_is_new(self): return (self.state == gpodder.STATE_NORMAL and self.is_new and not self.downloading) def save(self): gpodder.user_extensions.on_episode_save(self) self.db.save_episode(self) def on_downloaded(self, filename): self.state = gpodder.STATE_DOWNLOADED self.is_new = True self.file_size = os.path.getsize(filename) self.save() def set_state(self, state): self.state = state self.save() def playback_mark(self): self.is_new = False self.last_playback = int(time.time()) gpodder.user_extensions.on_episode_playback(self) self.save() def mark(self, state=None, is_played=None, is_locked=None): if state is not None: self.state = state if is_played is not None: self.is_new = not is_played # "Mark as new" must "undelete" the episode if self.is_new and self.state == gpodder.STATE_DELETED: self.state = gpodder.STATE_NORMAL if is_locked is not None: self.archive = is_locked self.save() def age_in_days(self): return util.file_age_in_days(self.local_filename(create=False, \ check_only=True)) age_int_prop = property(fget=age_in_days) def get_age_string(self): return util.file_age_to_string(self.age_in_days()) age_prop = property(fget=get_age_string) @property def description_html(self): # XXX: That's not a very well-informed heuristic to check # if the description already contains HTML. Better ideas? if '<' in self.description: return self.description return self.description.replace('\n', '
') def one_line_description(self): MAX_LINE_LENGTH = 120 desc = util.remove_html_tags(self.description or '') desc = re.sub('\s+', ' ', desc).strip() if not desc: return _('No description available') else: # Decode the description to avoid gPodder bug 1277 desc = util.convert_bytes(desc).strip() if len(desc) > MAX_LINE_LENGTH: return desc[:MAX_LINE_LENGTH] + '...' else: return desc def delete_from_disk(self): filename = self.local_filename(create=False, check_only=True) if filename is not None: gpodder.user_extensions.on_episode_delete(self, filename) util.delete_file(filename) self.set_state(gpodder.STATE_DELETED) def get_playback_url(self, fmt_ids=None, vimeo_fmt=None, allow_partial=False): """Local (or remote) playback/streaming filename/URL Returns either the local filename or a streaming URL that can be used to playback this episode. Also returns the filename of a partially downloaded file in case partial (preview) playback is desired. """ url = self.local_filename(create=False) if (allow_partial and url is not None and os.path.exists(url + '.partial')): return url + '.partial' if url is None or not os.path.exists(url): url = self.url url = youtube.get_real_download_url(url, fmt_ids) url = vimeo.get_real_download_url(url, vimeo_fmt) url = escapist_videos.get_real_download_url(url) return url def find_unique_file_name(self, filename, extension): # Remove leading and trailing whitespace + dots (to avoid hidden files) filename = filename.strip('.' + string.whitespace) + extension for name in util.generate_names(filename): if (not self.db.episode_filename_exists(self.podcast_id, name) or self.download_filename == name): return name def local_filename(self, create, force_update=False, check_only=False, template=None, return_wanted_filename=False): """Get (and possibly generate) the local saving filename Pass create=True if you want this function to generate a new filename if none exists. You only want to do this when planning to create/download the file after calling this function. Normally, you should pass create=False. This will only create a filename when the file already exists from a previous version of gPodder (where we used md5 filenames). If the file does not exist (and the filename also does not exist), this function will return None. If you pass force_update=True to this function, it will try to find a new (better) filename and move the current file if this is the case. This is useful if (during the download) you get more information about the file, e.g. the mimetype and you want to include this information in the file name generation process. If check_only=True is passed to this function, it will never try to rename the file, even if would be a good idea. Use this if you only want to check if a file exists. If "template" is specified, it should be a filename that is to be used as a template for generating the "real" filename. The generated filename is stored in the database for future access. If return_wanted_filename is True, the filename will not be written to the database, but simply returned by this function (for use by the "import external downloads" feature). """ if self.download_filename is None and (check_only or not create): return None ext = self.extension(may_call_local_filename=False).encode('utf-8', 'ignore') if not check_only and (force_update or not self.download_filename): # Avoid and catch gPodder bug 1440 and similar situations if template == '': logger.warn('Empty template. Report this podcast URL %s', self.channel.url) template = None # Try to find a new filename for the current file if template is not None: # If template is specified, trust the template's extension episode_filename, ext = os.path.splitext(template) else: episode_filename, _ = util.filename_from_url(self.url) fn_template = util.sanitize_filename(episode_filename, self.MAX_FILENAME_LENGTH) if 'redirect' in fn_template and template is None: # This looks like a redirection URL - force URL resolving! logger.warn('Looks like a redirection to me: %s', self.url) url = util.get_real_url(self.channel.authenticate_url(self.url)) logger.info('Redirection resolved to: %s', url) episode_filename, _ = util.filename_from_url(url) fn_template = util.sanitize_filename(episode_filename, self.MAX_FILENAME_LENGTH) # Use title for YouTube, Vimeo and Soundcloud downloads if (youtube.is_video_link(self.url) or vimeo.is_video_link(self.url) or escapist_videos.is_video_link(self.url) or fn_template == 'stream'): sanitized = util.sanitize_filename(self.title, self.MAX_FILENAME_LENGTH) if sanitized: fn_template = sanitized # If the basename is empty, use the md5 hexdigest of the URL if not fn_template or fn_template.startswith('redirect.'): logger.error('Report this feed: Podcast %s, episode %s', self.channel.url, self.url) fn_template = hashlib.md5(self.url).hexdigest() # Find a unique filename for this episode wanted_filename = self.find_unique_file_name(fn_template, ext) if return_wanted_filename: # return the calculated filename without updating the database return wanted_filename # The old file exists, but we have decided to want a different filename if self.download_filename and wanted_filename != self.download_filename: # there might be an old download folder crawling around - move it! new_file_name = os.path.join(self.channel.save_dir, wanted_filename) old_file_name = os.path.join(self.channel.save_dir, self.download_filename) if os.path.exists(old_file_name) and not os.path.exists(new_file_name): logger.info('Renaming %s => %s', old_file_name, new_file_name) os.rename(old_file_name, new_file_name) elif force_update and not os.path.exists(old_file_name): # When we call force_update, the file might not yet exist when we # call it from the downloading code before saving the file logger.info('Choosing new filename: %s', new_file_name) else: logger.warn('%s exists or %s does not', new_file_name, old_file_name) logger.info('Updating filename of %s to "%s".', self.url, wanted_filename) elif self.download_filename is None: logger.info('Setting download filename: %s', wanted_filename) self.download_filename = wanted_filename self.save() return os.path.join(util.sanitize_encoding(self.channel.save_dir), util.sanitize_encoding(self.download_filename)) def extension(self, may_call_local_filename=True): filename, ext = util.filename_from_url(self.url) if may_call_local_filename: filename = self.local_filename(create=False) if filename is not None: filename, ext = os.path.splitext(filename) # if we can't detect the extension from the url fallback on the mimetype if ext == '' or util.file_type_by_extension(ext) is None: ext = util.extension_from_mimetype(self.mime_type) return ext def mark_new(self): self.is_new = True self.save() def mark_old(self): self.is_new = False self.save() def file_exists(self): filename = self.local_filename(create=False, check_only=True) if filename is None: return False else: return os.path.exists(filename) def was_downloaded(self, and_exists=False): if self.state != gpodder.STATE_DOWNLOADED: return False if and_exists and not self.file_exists(): return False return True def sync_filename(self, use_custom=False, custom_format=None): if use_custom: return util.object_string_formatter(custom_format, episode=self, podcast=self.channel) else: return self.title def file_type(self): # Assume all YouTube/Vimeo links are video files if youtube.is_video_link(self.url) or vimeo.is_video_link(self.url) or escapist_videos.is_video_link(self.url): return 'video' return util.file_type_by_extension(self.extension()) @property def basename( self): return os.path.splitext( os.path.basename( self.url))[0] @property def pubtime(self): """ Returns published time as HHMM (or 0000 if not available) """ try: return datetime.datetime.fromtimestamp(self.published).strftime('%H%M') except: logger.warn('Cannot format pubtime: %s', self.title, exc_info=True) return '0000' def playlist_title(self): """Return a title for this episode in a playlist The title will be composed of the podcast name, the episode name and the publication date. The return value is the canonical representation of this episode in playlists (for example, M3U playlists). """ return '%s - %s (%s)' % (self.channel.title, \ self.title, \ self.cute_pubdate()) def cute_pubdate(self): result = util.format_date(self.published) if result is None: return '(%s)' % _('unknown') else: return result pubdate_prop = property(fget=cute_pubdate) def published_datetime(self): return datetime.datetime.fromtimestamp(self.published) @property def sortdate(self): return self.published_datetime().strftime('%Y-%m-%d') @property def pubdate_day(self): return self.published_datetime().strftime('%d') @property def pubdate_month(self): return self.published_datetime().strftime('%m') @property def pubdate_year(self): return self.published_datetime().strftime('%y') def is_finished(self): """Return True if this episode is considered "finished playing" An episode is considered "finished" when there is a current position mark on the track, and when the current position is greater than 99 percent of the total time or inside the last 10 seconds of a track. """ return self.current_position > 0 and self.total_time > 0 and \ (self.current_position + 10 >= self.total_time or \ self.current_position >= self.total_time*.99) def get_play_info_string(self, duration_only=False): duration = util.format_time(self.total_time) if duration_only and self.total_time > 0: return duration elif self.is_finished(): return '%s (%s)' % (_('Finished'), duration) elif self.current_position > 0 and \ self.current_position != self.total_time: position = util.format_time(self.current_position) return '%s / %s' % (position, duration) elif self.total_time > 0: return duration else: return '-' def update_from(self, episode): for k in ('title', 'url', 'description', 'link', 'published', 'guid', 'file_size', 'payment_url'): setattr(self, k, getattr(episode, k)) class PodcastChannel(PodcastModelObject): __slots__ = schema.PodcastColumns + ('_common_prefix',) UNICODE_TRANSLATE = {ord(u'УЖ'): u'o', ord(u'УЄ'): u'a', ord(u'УМ'): u'u'} # Enumerations for download strategy STRATEGY_DEFAULT, STRATEGY_LATEST = range(2) # Description and ordering of strategies STRATEGIES = [ (STRATEGY_DEFAULT, _('Default')), (STRATEGY_LATEST, _('Only keep latest')), ] MAX_FOLDERNAME_LENGTH = 60 SECONDS_PER_WEEK = 7*24*60*60 EpisodeClass = PodcastEpisode feed_fetcher = gPodderFetcher() def __init__(self, model, id=None): self.parent = model self.children = [] self.id = id self.url = None self.title = '' self.link = '' self.description = '' self.cover_url = None self.payment_url = None self.auth_username = '' self.auth_password = '' self.http_last_modified = None self.http_etag = None self.auto_archive_episodes = False self.download_folder = None self.pause_subscription = False self.sync_to_mp3_player = True self.section = _('Other') self._common_prefix = None self.download_strategy = PodcastChannel.STRATEGY_DEFAULT if self.id: self.children = self.db.load_episodes(self, self.episode_factory) self._determine_common_prefix() @property def model(self): return self.parent @property def db(self): return self.parent.db def get_download_strategies(self): for value, caption in PodcastChannel.STRATEGIES: yield self.download_strategy == value, value, caption def set_download_strategy(self, download_strategy): if download_strategy == self.download_strategy: return caption = dict(self.STRATEGIES).get(download_strategy) if caption is not None: logger.debug('Strategy for %s changed to %s', self.title, caption) self.download_strategy = download_strategy else: logger.warn('Cannot set strategy to %d', download_strategy) def rewrite_url(self, new_url): new_url = util.normalize_feed_url(new_url) if new_url is None: return None self.url = new_url self.http_etag = None self.http_last_modified = None self.save() return new_url def check_download_folder(self): """Check the download folder for externally-downloaded files This will try to assign downloaded files with episodes in the database. This will also cause missing files to be marked as deleted. """ known_files = set() for episode in self.get_episodes(gpodder.STATE_DOWNLOADED): if episode.was_downloaded(): filename = episode.local_filename(create=False) if filename is None: # No filename has been determined for this episode continue if not os.path.exists(filename): # File has been deleted by the user - simulate a # delete event (also marks the episode as deleted) logger.debug('Episode deleted: %s', filename) episode.delete_from_disk() continue known_files.add(filename) existing_files = set(filename for filename in \ glob.glob(os.path.join(self.save_dir, '*')) \ if not filename.endswith('.partial')) ignore_files = ['folder'+ext for ext in coverart.CoverDownloader.EXTENSIONS] external_files = existing_files.difference(list(known_files) + [os.path.join(self.save_dir, ignore_file) for ignore_file in ignore_files]) if not external_files: return all_episodes = self.get_all_episodes() for filename in external_files: found = False basename = os.path.basename(filename) existing = [e for e in all_episodes if e.download_filename == basename] if existing: existing = existing[0] logger.info('Importing external download: %s', filename) existing.on_downloaded(filename) continue for episode in all_episodes: wanted_filename = episode.local_filename(create=True, \ return_wanted_filename=True) if basename == wanted_filename: logger.info('Importing external download: %s', filename) episode.download_filename = basename episode.on_downloaded(filename) found = True break wanted_base, wanted_ext = os.path.splitext(wanted_filename) target_base, target_ext = os.path.splitext(basename) if wanted_base == target_base: # Filenames only differ by the extension wanted_type = util.file_type_by_extension(wanted_ext) target_type = util.file_type_by_extension(target_ext) # If wanted type is None, assume that we don't know # the right extension before the download (e.g. YouTube) # if the wanted type is the same as the target type, # assume that it's the correct file if wanted_type is None or wanted_type == target_type: logger.info('Importing external download: %s', filename) episode.download_filename = basename episode.on_downloaded(filename) found = True break if not found and not util.is_system_file(filename): logger.warn('Unknown external file: %s', filename) @classmethod def sort_key(cls, podcast): key = util.convert_bytes(podcast.title.lower()) return re.sub('^the ', '', key).translate(cls.UNICODE_TRANSLATE) @classmethod def load(cls, model, url, create=True, authentication_tokens=None,\ max_episodes=0): if isinstance(url, unicode): url = url.encode('utf-8') existing = filter(lambda p: p.url == url, model.get_podcasts()) if existing: return existing[0] if create: tmp = cls(model) tmp.url = url if authentication_tokens is not None: tmp.auth_username = authentication_tokens[0] tmp.auth_password = authentication_tokens[1] # Save podcast, so it gets an ID assigned before # updating the feed and adding saving episodes tmp.save() try: tmp.update(max_episodes) except Exception, e: logger.debug('Fetch failed. Removing buggy feed.') tmp.remove_downloaded() tmp.delete() raise # Determine the section in which this podcast should appear tmp.section = tmp._get_content_type() # Determine a new download folder now that we have the title tmp.get_save_dir(force_new=True) # Mark episodes as downloaded if files already exist (bug 902) tmp.check_download_folder() # Determine common prefix of episode titles tmp._determine_common_prefix() tmp.save() gpodder.user_extensions.on_podcast_subscribe(tmp) return tmp def episode_factory(self, d): """ This function takes a dictionary containing key-value pairs for episodes and returns a new PodcastEpisode object that is connected to this object. Returns: A new PodcastEpisode object """ return self.EpisodeClass.create_from_dict(d, self) def _consume_updated_title(self, new_title): # Replace multi-space and newlines with single space (Maemo bug 11173) new_title = re.sub('\s+', ' ', new_title).strip() # Only update the podcast-supplied title when we # don't yet have a title, or if the title is the # feed URL (e.g. we didn't find a title before). if not self.title or self.title == self.url: self.title = new_title # Start YouTube- and Vimeo-specific title FIX YOUTUBE_PREFIX = 'Uploads by ' VIMEO_PREFIX = 'Vimeo / ' if self.title.startswith(YOUTUBE_PREFIX): self.title = self.title[len(YOUTUBE_PREFIX):] + ' on YouTube' elif self.title.startswith(VIMEO_PREFIX): self.title = self.title[len(VIMEO_PREFIX):] + ' on Vimeo' # End YouTube- and Vimeo-specific title FIX def _consume_metadata(self, title, link, description, cover_url, payment_url): self._consume_updated_title(title) self.link = link self.description = description self.cover_url = cover_url self.payment_url = payment_url self.save() def _consume_custom_feed(self, custom_feed, max_episodes=0): self._consume_metadata(custom_feed.get_title(), custom_feed.get_link(), custom_feed.get_description(), custom_feed.get_image(), None) existing = self.get_all_episodes() existing_guids = [episode.guid for episode in existing] # Insert newly-found episodes into the database + local cache new_episodes, seen_guids = custom_feed.get_new_episodes(self, existing_guids) self.children.extend(new_episodes) self.remove_unreachable_episodes(existing, seen_guids, max_episodes) def _consume_updated_feed(self, feed, max_episodes=0): # Cover art URL cover_url = None if hasattr(feed.feed, 'image'): for attribute in ('href', 'url'): new_value = getattr(feed.feed.image, attribute, None) if new_value is not None: cover_url = new_value elif hasattr(feed.feed, 'icon'): cover_url = feed.feed.icon # Payment URL information payment_info = [link['href'] for link in feed.feed.get('links', []) if link['rel'] == 'payment'] if payment_info: payment_url = payment_info[0] else: payment_url = None self._consume_metadata(feed.feed.get('title', self.url), feed.feed.get('link', self.link), feed.feed.get('subtitle', self.description), cover_url, payment_url) # Load all episodes to update them properly. existing = self.get_all_episodes() # We have to sort the entries in descending chronological order, # because if the feed lists items in ascending order and has > # max_episodes old episodes, new episodes will not be shown. # See also: gPodder Bug 1186 entries = sorted(feed.entries, key=feedcore.get_pubdate, reverse=True) # We can limit the maximum number of entries that gPodder will parse if max_episodes > 0 and len(entries) > max_episodes: entries = entries[:max_episodes] # GUID-based existing episode list existing_guids = dict((e.guid, e) for e in existing) # Get most recent published of all episodes last_published = self.db.get_last_published(self) or 0 # Keep track of episode GUIDs currently seen in the feed seen_guids = set() # Number of new episodes found new_episodes = 0 # Search all entries for new episodes for entry in entries: episode = self.EpisodeClass.from_feedparser_entry(entry, self) if episode is not None: if not episode.title: logger.warn('Using filename as title for %s', episode.url) basename = os.path.basename(episode.url) episode.title, ext = os.path.splitext(basename) # Maemo bug 12073 if not episode.guid: logger.warn('Using download URL as GUID for %s', episode.title) episode.guid = episode.url seen_guids.add(episode.guid) else: continue # Detect (and update) existing episode based on GUIDs existing_episode = existing_guids.get(episode.guid, None) if existing_episode: existing_episode.update_from(episode) existing_episode.save() continue # Workaround for bug 340: If the episode has been # published earlier than one week before the most # recent existing episode, do not mark it as new. if episode.published < last_published - self.SECONDS_PER_WEEK: logger.debug('Episode with old date: %s', episode.title) episode.is_new = False if episode.is_new: new_episodes += 1 # Only allow a certain number of new episodes per update if (self.download_strategy == PodcastChannel.STRATEGY_LATEST and new_episodes > 1): episode.is_new = False episode.save() self.children.append(episode) self.remove_unreachable_episodes(existing, seen_guids, max_episodes) def remove_unreachable_episodes(self, existing, seen_guids, max_episodes): # Remove "unreachable" episodes - episodes that have not been # downloaded and that the feed does not list as downloadable anymore # Keep episodes that are currently being downloaded, though (bug 1534) if self.id is not None: episodes_to_purge = (e for e in existing if e.state != gpodder.STATE_DOWNLOADED and e.guid not in seen_guids and not e.downloading) for episode in episodes_to_purge: logger.debug('Episode removed from feed: %s (%s)', episode.title, episode.guid) gpodder.user_extensions.on_episode_removed_from_podcast(episode) self.db.delete_episode_by_guid(episode.guid, self.id) # Remove the episode from the "children" episodes list if self.children is not None: self.children.remove(episode) # This *might* cause episodes to be skipped if there were more than # max_episodes_per_feed items added to the feed between updates. # The benefit is that it prevents old episodes from apearing as new # in certain situations (see bug #340). self.db.purge(max_episodes, self.id) # TODO: Remove from self.children! # Sort episodes by pubdate, descending self.children.sort(key=lambda e: e.published, reverse=True) def update(self, max_episodes=0): try: result = self.feed_fetcher.fetch_channel(self) if result.status == feedcore.CUSTOM_FEED: self._consume_custom_feed(result.feed, max_episodes) elif result.status == feedcore.UPDATED_FEED: self._consume_updated_feed(result.feed, max_episodes) elif result.status == feedcore.NEW_LOCATION: url = result.feed.href logger.info('New feed location: %s => %s', self.url, url) if url in set(x.url for x in self.model.get_podcasts()): raise Exception('Already subscribed to ' + url) self.url = url self._consume_updated_feed(result.feed, max_episodes) elif result.status == feedcore.NOT_MODIFIED: pass if hasattr(result.feed, 'headers'): self.http_etag = result.feed.headers.get('etag', self.http_etag) self.http_last_modified = result.feed.headers.get('last-modified', self.http_last_modified) self.save() except Exception, e: # "Not really" errors #feedcore.AuthenticationRequired # Temporary errors #feedcore.Offline #feedcore.BadRequest #feedcore.InternalServerError #feedcore.WifiLogin # Permanent errors #feedcore.Unsubscribe #feedcore.NotFound #feedcore.InvalidFeed #feedcore.UnknownStatusCode gpodder.user_extensions.on_podcast_update_failed(self, e) raise gpodder.user_extensions.on_podcast_updated(self) # Re-determine the common prefix for all episodes self._determine_common_prefix() self.db.commit() def delete(self): self.db.delete_podcast(self) self.model._remove_podcast(self) def save(self): if self.download_folder is None: self.get_save_dir() gpodder.user_extensions.on_podcast_save(self) self.db.save_podcast(self) self.model._append_podcast(self) def get_statistics(self): if self.id is None: return (0, 0, 0, 0, 0) else: return self.db.get_podcast_statistics(self.id) @property def group_by(self): if not self.section: self.section = self._get_content_type() self.save() return self.section def _get_content_type(self): if 'youtube.com' in self.url or 'vimeo.com' in self.url or 'escapistmagazine.com' in self.url: return _('Video') audio, video, other = 0, 0, 0 for content_type in self.db.get_content_types(self.id): content_type = content_type.lower() if content_type.startswith('audio'): audio += 1 elif content_type.startswith('video'): video += 1 else: other += 1 if audio >= video: return _('Audio') elif video > other: return _('Video') return _('Other') def authenticate_url(self, url): return util.url_add_authentication(url, self.auth_username, self.auth_password) def rename(self, new_title): new_title = new_title.strip() if self.title == new_title: return new_folder_name = self.find_unique_folder_name(new_title) if new_folder_name and new_folder_name != self.download_folder: new_folder = os.path.join(gpodder.downloads, new_folder_name) old_folder = os.path.join(gpodder.downloads, self.download_folder) if os.path.exists(old_folder): if not os.path.exists(new_folder): # Old folder exists, new folder does not -> simply rename logger.info('Renaming %s => %s', old_folder, new_folder) os.rename(old_folder, new_folder) else: # Both folders exist -> move files and delete old folder logger.info('Moving files from %s to %s', old_folder, new_folder) for file in glob.glob(os.path.join(old_folder, '*')): shutil.move(file, new_folder) logger.info('Removing %s', old_folder) shutil.rmtree(old_folder, ignore_errors=True) self.download_folder = new_folder_name self.title = new_title self.save() def _determine_common_prefix(self): # We need at least 2 episodes for the prefix to be "common" ;) if len(self.children) < 2: self._common_prefix = '' return prefix = os.path.commonprefix([x.title for x in self.children]) # The common prefix must end with a space - otherwise it's not # on a word boundary, and we might end up chopping off too much if prefix and prefix[-1] != ' ': prefix = prefix[:prefix.rfind(' ')+1] self._common_prefix = prefix def get_all_episodes(self): return self.children def get_episodes(self, state): return filter(lambda e: e.state == state, self.get_all_episodes()) def find_unique_folder_name(self, download_folder): # Remove trailing dots to avoid errors on Windows (bug 600) # Also remove leading dots to avoid hidden folders on Linux download_folder = download_folder.strip('.' + string.whitespace) for folder_name in util.generate_names(download_folder): if (not self.db.podcast_download_folder_exists(folder_name) or self.download_folder == folder_name): return folder_name def get_save_dir(self, force_new=False): if self.download_folder is None or force_new: # we must change the folder name, because it has not been set manually fn_template = util.sanitize_filename(self.title, self.MAX_FOLDERNAME_LENGTH) if not fn_template: fn_template = util.sanitize_filename(self.url, self.MAX_FOLDERNAME_LENGTH) # Find a unique folder name for this podcast download_folder = self.find_unique_folder_name(fn_template) # Try removing the download folder if it has been created previously if self.download_folder is not None: folder = os.path.join(gpodder.downloads, self.download_folder) try: os.rmdir(folder) except OSError: logger.info('Old download folder is kept for %s', self.url) logger.info('Updating download_folder of %s to %s', self.url, download_folder) self.download_folder = download_folder self.save() save_dir = os.path.join(gpodder.downloads, self.download_folder) # Avoid encoding errors for OS-specific functions (bug 1570) save_dir = util.sanitize_encoding(save_dir) # Create save_dir if it does not yet exist if not util.make_directory(save_dir): logger.error('Could not create save_dir: %s', save_dir) return save_dir save_dir = property(fget=get_save_dir) def remove_downloaded(self): # Remove the download directory for episode in self.get_episodes(gpodder.STATE_DOWNLOADED): filename = episode.local_filename(create=False, check_only=True) if filename is not None: gpodder.user_extensions.on_episode_delete(episode, filename) shutil.rmtree(self.save_dir, True) @property def cover_file(self): return os.path.join(self.save_dir, 'folder') class Model(object): PodcastClass = PodcastChannel def __init__(self, db): self.db = db self.children = None def _append_podcast(self, podcast): if podcast not in self.children: self.children.append(podcast) def _remove_podcast(self, podcast): self.children.remove(podcast) gpodder.user_extensions.on_podcast_delete(self) def get_podcasts(self): def podcast_factory(dct, db): return self.PodcastClass.create_from_dict(dct, self, dct['id']) if self.children is None: self.children = self.db.load_podcasts(podcast_factory) # Check download folders for changes (bug 902) for podcast in self.children: podcast.check_download_folder() return self.children def load_podcast(self, url, create=True, authentication_tokens=None, max_episodes=0): assert all(url != podcast.url for podcast in self.get_podcasts()) return self.PodcastClass.load(self, url, create, authentication_tokens, max_episodes) @classmethod def podcast_sort_key(cls, podcast): return cls.PodcastClass.sort_key(podcast) @classmethod def episode_sort_key(cls, episode): return episode.published @classmethod def sort_episodes_by_pubdate(cls, episodes, reverse=False): """Sort a list of PodcastEpisode objects chronologically Returns a iterable, sorted sequence of the episodes """ return sorted(episodes, key=cls.episode_sort_key, reverse=reverse) gpodder-3.9.0/src/gpodder/opml.py0000644000016000001710000001576112654461624020041 0ustar jenkinsjenkins00000000000000# -*- coding: utf-8 -*- # # gPodder - A media aggregator and podcast client # Copyright (c) 2005-2016 Thomas Perl and the gPodder Team # # gPodder is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 3 of the License, or # (at your option) any later version. # # gPodder is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . # # # opml.py -- OPML import and export functionality # Thomas Perl 2007-08-19 # # based on: libopmlreader.py (2006-06-13) # libopmlwriter.py (2005-12-08) # """OPML import and export functionality This module contains helper classes to import subscriptions from OPML files on the web and to export a list of channel objects to valid OPML 1.1 files that can be used to backup or distribute gPodder's channel subscriptions. """ import logging logger = logging.getLogger(__name__) from gpodder import util import xml.dom.minidom import os.path import os import shutil from email.utils import formatdate import gpodder class Importer(object): """ Helper class to import an OPML feed from protocols supported by urllib2 (e.g. HTTP) and return a GTK ListStore that can be displayed in the GUI. This class should support standard OPML feeds and contains workarounds to support odeo.com feeds. """ VALID_TYPES = ('rss', 'link') def __init__( self, url): """ Parses the OPML feed from the given URL into a local data structure containing channel metadata. """ self.items = [] try: if os.path.exists(url): doc = xml.dom.minidom.parse(url) else: doc = xml.dom.minidom.parseString(util.urlopen(url).read()) for outline in doc.getElementsByTagName('outline'): # Make sure we are dealing with a valid link type (ignore case) otl_type = outline.getAttribute('type') if otl_type is None or otl_type.lower() not in self.VALID_TYPES: continue if outline.getAttribute('xmlUrl') or outline.getAttribute('url'): channel = { 'url': outline.getAttribute('xmlUrl') or outline.getAttribute('url'), 'title': outline.getAttribute('title') or outline.getAttribute('text') or outline.getAttribute('xmlUrl') or outline.getAttribute('url'), 'description': outline.getAttribute('text') or outline.getAttribute('xmlUrl') or outline.getAttribute('url'), } if channel['description'] == channel['title']: channel['description'] = channel['url'] for attr in ( 'url', 'title', 'description' ): channel[attr] = channel[attr].strip() self.items.append( channel) if not len(self.items): logger.info('OPML import finished, but no items found: %s', url) except: logger.error('Cannot import OPML from URL: %s', url, exc_info=True) class Exporter(object): """ Helper class to export a list of channel objects to a local file in OPML 1.1 format. See www.opml.org for the OPML specification. """ FEED_TYPE = 'rss' def __init__( self, filename): if filename is None: self.filename = None elif filename.endswith( '.opml') or filename.endswith( '.xml'): self.filename = filename else: self.filename = '%s.opml' % ( filename, ) def create_node( self, doc, name, content): """ Creates a simple XML Element node in a document with tag name "name" and text content "content", as in content and returns the element. """ node = doc.createElement( name) node.appendChild( doc.createTextNode( content)) return node def create_outline( self, doc, channel): """ Creates a OPML outline as XML Element node in a document for the supplied channel. """ outline = doc.createElement( 'outline') outline.setAttribute( 'title', channel.title) outline.setAttribute( 'text', channel.description) outline.setAttribute( 'xmlUrl', channel.url) outline.setAttribute( 'type', self.FEED_TYPE) return outline def write( self, channels): """ Creates a XML document containing metadata for each channel object in the "channels" parameter, which should be a list of channel objects. OPML 2.0 specification: http://www.opml.org/spec2 Returns True on success or False when there was an error writing the file. """ if self.filename is None: return False doc = xml.dom.minidom.Document() opml = doc.createElement('opml') opml.setAttribute('version', '2.0') doc.appendChild(opml) head = doc.createElement( 'head') head.appendChild( self.create_node( doc, 'title', 'gPodder subscriptions')) head.appendChild( self.create_node( doc, 'dateCreated', formatdate(localtime=True))) opml.appendChild( head) body = doc.createElement( 'body') for channel in channels: body.appendChild( self.create_outline( doc, channel)) opml.appendChild( body) try: data = doc.toprettyxml(encoding='utf-8', indent=' ', newl=os.linesep) # We want to have at least 512 KiB free disk space after # saving the opml data, if this is not possible, don't # try to save the new file, but keep the old one so we # don't end up with a clobbed, empty opml file. FREE_DISK_SPACE_AFTER = 1024*512 path = os.path.dirname(self.filename) or os.path.curdir available = util.get_free_disk_space(path) if available != -1 and available < 2*len(data)+FREE_DISK_SPACE_AFTER: # On Windows, if we have zero bytes available, assume that we have # not had the win32file module available + assume enough free space if not gpodder.ui.win32 or available > 0: logger.error('Not enough free disk space to save channel list to %s', self.filename) return False fp = open(self.filename+'.tmp', 'w') fp.write(data) fp.close() util.atomic_rename(self.filename+'.tmp', self.filename) except: logger.error('Could not open file for writing: %s', self.filename, exc_info=True) return False return True gpodder-3.9.0/src/gpodder/youtube.py0000644000016000001710000002277612654461624020572 0ustar jenkinsjenkins00000000000000# -*- coding: utf-8 -*- # # gPodder - A media aggregator and podcast client # Copyright (c) 2005-2016 Thomas Perl and the gPodder Team # # gPodder is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 3 of the License, or # (at your option) any later version. # # gPodder is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . # # gpodder.youtube - YouTube and related magic # Justin Forest 2008-10-13 # import gpodder from gpodder import util import os.path import logging logger = logging.getLogger(__name__) try: import simplejson as json except ImportError: import json import re import urllib try: # Python >= 2.6 from urlparse import parse_qs except ImportError: # Python < 2.6 from cgi import parse_qs # http://en.wikipedia.org/wiki/YouTube#Quality_and_codecs # format id, (preferred ids, path(?), description) # video bitrate, audio bitrate formats = [ # WebM VP8 video, Vorbis audio # Fallback to an MP4 version of same quality. # Try 34 (FLV 360p H.264 AAC) if 18 (MP4 360p) fails. # Fallback to 6 or 5 (FLV Sorenson H.263 MP3) if all fails. (46, ([46, 37, 45, 22, 44, 35, 43, 18, 6, 34, 5], '45/1280x720/99/0/0', 'WebM 1080p (1920x1080)')), # N/A, 192 kbps (45, ([45, 22, 44, 35, 43, 18, 6, 34, 5], '45/1280x720/99/0/0', 'WebM 720p (1280x720)')), # 2.0 Mbps, 192 kbps (44, ([44, 35, 43, 18, 6, 34, 5], '44/854x480/99/0/0', 'WebM 480p (854x480)')), # 1.0 Mbps, 128 kbps (43, ([43, 18, 6, 34, 5], '43/640x360/99/0/0', 'WebM 360p (640x360)')), # 0.5 Mbps, 128 kbps # MP4 H.264 video, AAC audio # Try 35 (FLV 480p H.264 AAC) between 720p and 360p because there's no MP4 480p. # Try 34 (FLV 360p H.264 AAC) if 18 (MP4 360p) fails. # Fallback to 6 or 5 (FLV Sorenson H.263 MP3) if all fails. (38, ([38, 37, 22, 35, 18, 34, 6, 5], '38/1920x1080/9/0/115', 'MP4 4K 3072p (4096x3072)')), # 5.0 - 3.5 Mbps, 192 kbps (37, ([37, 22, 35, 18, 34, 6, 5], '37/1920x1080/9/0/115', 'MP4 HD 1080p (1920x1080)')), # 4.3 - 3.0 Mbps, 192 kbps (22, ([22, 35, 18, 34, 6, 5], '22/1280x720/9/0/115', 'MP4 HD 720p (1280x720)')), # 2.9 - 2.0 Mbps, 192 kbps (18, ([18, 34, 6, 5], '18/640x360/9/0/115', 'MP4 360p (640x360)')), # 0.5 Mbps, 96 kbps # FLV H.264 video, AAC audio # Does not check for 360p MP4. # Fallback to 6 or 5 (FLV Sorenson H.263 MP3) if all fails. (35, ([35, 34, 6, 5], '35/854x480/9/0/115', 'FLV 480p (854x480)')), # 1 - 0.80 Mbps, 128 kbps (34, ([34, 6, 5], '34/640x360/9/0/115', 'FLV 360p (640x360)')), # 0.50 Mbps, 128 kbps # FLV Sorenson H.263 video, MP3 audio (6, ([6, 5], '5/480x270/7/0/0', 'FLV 270p (480x270)')), # 0.80 Mbps, 64 kbps (5, ([5], '5/320x240/7/0/0', 'FLV 240p (320x240)')), # 0.25 Mbps, 64 kbps ] formats_dict = dict(formats) V3_API_ENDPOINT = 'https://www.googleapis.com/youtube/v3' CHANNEL_VIDEOS_XML = 'https://www.youtube.com/feeds/videos.xml' class YouTubeError(Exception): pass def get_fmt_ids(youtube_config): fmt_ids = youtube_config.preferred_fmt_ids if not fmt_ids: format = formats_dict.get(youtube_config.preferred_fmt_id) if format is None: fmt_ids = [] else: fmt_ids, path, description = format return fmt_ids def get_real_download_url(url, preferred_fmt_ids=None): if not preferred_fmt_ids: preferred_fmt_ids, _, _ = formats_dict[22] # MP4 720p vid = get_youtube_id(url) if vid is not None: page = None url = 'http://www.youtube.com/get_video_info?&el=detailpage&video_id=' + vid while page is None: req = util.http_request(url, method='GET') if 'location' in req.msg: url = req.msg['location'] else: page = req.read() # Try to find the best video format available for this video # (http://forum.videohelp.com/topic336882-1800.html#1912972) def find_urls(page): r4 = re.search('url_encoded_fmt_stream_map=([^&]+)', page) if r4 is not None: fmt_url_map = urllib.unquote(r4.group(1)) for fmt_url_encoded in fmt_url_map.split(','): video_info = parse_qs(fmt_url_encoded) yield int(video_info['itag'][0]), video_info['url'][0] else: error_info = parse_qs(page) error_message = util.remove_html_tags(error_info['reason'][0]) raise YouTubeError('Cannot download video: %s' % error_message) fmt_id_url_map = sorted(find_urls(page), reverse=True) if not fmt_id_url_map: raise YouTubeError('fmt_url_map not found for video ID "%s"' % vid) # Default to the highest fmt_id if we don't find a match below _, url = fmt_id_url_map[0] formats_available = set(fmt_id for fmt_id, url in fmt_id_url_map) fmt_id_url_map = dict(fmt_id_url_map) for id in preferred_fmt_ids: id = int(id) if id in formats_available: format = formats_dict.get(id) if format is not None: _, _, description = format else: description = 'Unknown' logger.info('Found YouTube format: %s (fmt_id=%d)', description, id) url = fmt_id_url_map[id] break return url def get_youtube_id(url): r = re.compile('http[s]?://(?:[a-z]+\.)?youtube\.com/v/(.*)\.swf', re.IGNORECASE).match(url) if r is not None: return r.group(1) r = re.compile('http[s]?://(?:[a-z]+\.)?youtube\.com/watch\?v=([^&]*)', re.IGNORECASE).match(url) if r is not None: return r.group(1) r = re.compile('http[s]?://(?:[a-z]+\.)?youtube\.com/v/(.*)[?]', re.IGNORECASE).match(url) if r is not None: return r.group(1) return for_each_feed_pattern(lambda url, channel: channel, url, None) def is_video_link(url): return (get_youtube_id(url) is not None) def is_youtube_guid(guid): return guid.startswith('tag:youtube.com,2008:video:') def for_each_feed_pattern(func, url, fallback_result): """ Try to find the username for all possible YouTube feed/webpage URLs Will call func(url, channel) for each match, and if func() returns a result other than None, returns this. If no match is found or func() returns None, return fallback_result. """ CHANNEL_MATCH_PATTERNS = [ 'http[s]?://(?:[a-z]+\.)?youtube\.com/user/([a-z0-9]+)', 'http[s]?://(?:[a-z]+\.)?youtube\.com/profile?user=([a-z0-9]+)', 'http[s]?://(?:[a-z]+\.)?youtube\.com/channel/([-_a-zA-Z0-9]+)', 'http[s]?://(?:[a-z]+\.)?youtube\.com/rss/user/([a-z0-9]+)/videos\.rss', 'http[s]?://gdata.youtube.com/feeds/users/([^/]+)/uploads', 'http[s]?://gdata.youtube.com/feeds/base/users/([^/]+)/uploads', 'http[s]?://(?:[a-z]+\.)?youtube\.com/feeds/videos.xml\?channel_id=([-_a-zA-Z0-9]+)', ] for pattern in CHANNEL_MATCH_PATTERNS: m = re.match(pattern, url, re.IGNORECASE) if m is not None: result = func(url, m.group(1)) if result is not None: return result return fallback_result def get_real_channel_url(url): def return_user_feed(url, channel): result = 'https://gdata.youtube.com/feeds/users/{0}/uploads'.format(channel) logger.debug('YouTube link resolved: %s => %s', url, result) return result return for_each_feed_pattern(return_user_feed, url, url) def get_real_cover(url): def return_user_cover(url, channel): try: api_url = 'https://www.youtube.com/channel/{0}'.format(channel) data = util.urlopen(api_url).read() m = re.search(']* src=[\'"]([^\'"]+)[\'"][^>]*>', data) if m is not None: logger.debug('YouTube userpic for %s is: %s', url, m.group(1)) return m.group(1) except Exception as e: logger.warn('Could not retrieve cover art', exc_info=True) return None return None return for_each_feed_pattern(return_user_cover, url, None) def get_channels_for_user(username, api_key_v3): stream = util.urlopen('{0}/channels?forUsername={1}&part=id&key={2}'.format(V3_API_ENDPOINT, username, api_key_v3)) data = json.load(stream) return ['{0}?channel_id={1}'.format(CHANNEL_VIDEOS_XML, item['id']) for item in data['items']] def resolve_v3_url(url, api_key_v3): # Check if it's a YouTube feed, and if we have an API key, auto-resolve the channel if url and api_key_v3: _, user = for_each_feed_pattern(lambda url, channel: (url, channel), url, (None, None)) if user is not None: logger.info('Getting channels for YouTube user %s', user) new_urls = get_channels_for_user(user, api_key_v3) logger.debug('YouTube channels retrieved: %r', new_urls) if len(new_urls) == 1: return new_urls[0] return url gpodder-3.9.0/src/gpodder/player.py0000644000016000001710000000450412654461624020357 0ustar jenkinsjenkins00000000000000# -*- coding: utf-8 -*- # # gPodder - A media aggregator and podcast client # Copyright (c) 2005-2016 Thomas Perl and the gPodder Team # # gPodder is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 3 of the License, or # (at your option) any later version. # # gPodder is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . # # # gpodder.player - Podcatcher implementation of the Media Player D-Bus API # Thomas Perl ; 2010-04-25 # # Specification: http://gpodder.org/wiki/Media_Player_D-Bus_API # import gpodder import urllib class MediaPlayerDBusReceiver(object): INTERFACE = 'org.gpodder.player' SIGNAL_STARTED = 'PlaybackStarted' SIGNAL_STOPPED = 'PlaybackStopped' def __init__(self, on_play_event): self.on_play_event = on_play_event self.bus = gpodder.dbus_session_bus self.bus.add_signal_receiver(self.on_playback_started, \ self.SIGNAL_STARTED, \ self.INTERFACE, \ None, \ None) self.bus.add_signal_receiver(self.on_playback_stopped, \ self.SIGNAL_STOPPED, \ self.INTERFACE, \ None, \ None) def on_playback_started(self, position, file_uri): pass def on_playback_stopped(self, start, end, total, file_uri): # Assume the URI comes as quoted UTF-8 string, so decode # it first to utf-8 (should be no problem) for unquoting # to work correctly on this later on (Maemo bug 11811) if isinstance(file_uri, unicode): file_uri = file_uri.encode('utf-8') if file_uri.startswith('/'): file_uri = 'file://' + urllib.quote(file_uri) self.on_play_event(start, end, total, file_uri) gpodder-3.9.0/src/gpodder/extensions.py0000644000016000001710000004704112654461624021265 0ustar jenkinsjenkins00000000000000# -*- coding: utf-8 -*- # # gPodder - A media aggregator and podcast client # Copyright (c) 2005-2009 Thomas Perl and the gPodder Team # # gPodder is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 3 of the License, or # (at your option) any later version. # # gPodder is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . """ Loads and executes user extensions Extensions are Python scripts in "$GPODDER_HOME/Extensions". Each script must define a class named "gPodderExtension", otherwise it will be ignored. The extensions class defines several callbacks that will be called by gPodder at certain points. See the methods defined below for a list of callbacks and their parameters. For an example extension see share/gpodder/examples/extensions.py """ import glob import imp import inspect import json import os import functools import shlex import subprocess import sys import re from datetime import datetime import gpodder _ = gpodder.gettext from gpodder import util import logging logger = logging.getLogger(__name__) CATEGORY_DICT = { 'desktop-integration': _('Desktop Integration'), 'interface': _('Interface'), 'post-download': _('Post download'), } DEFAULT_CATEGORY = _('Other') def call_extensions(func): """Decorator to create handler functions in ExtensionManager Calls the specified function in all user extensions that define it. """ method_name = func.__name__ @functools.wraps(func) def handler(self, *args, **kwargs): result = None for container in self.containers: if not container.enabled or container.module is None: continue try: callback = getattr(container.module, method_name, None) if callback is None: continue # If the results are lists, concatenate them to show all # possible items that are generated by all extension together cb_res = callback(*args, **kwargs) if isinstance(result, list) and isinstance(cb_res, list): result.extend(cb_res) elif cb_res is not None: result = cb_res except Exception, exception: logger.error('Error in %s in %s: %s', container.filename, method_name, exception, exc_info=True) func(self, *args, **kwargs) return result return handler class ExtensionMetadata(object): # Default fallback metadata in case metadata fields are missing DEFAULTS = { 'description': _('No description for this extension.'), 'doc': None, 'payment': None, } SORTKEYS = { 'title': 1, 'description': 2, 'category': 3, 'authors': 4, 'only_for': 5, 'mandatory_in': 6, 'disable_in': 7, } def __init__(self, container, metadata): if 'title' not in metadata: metadata['title'] = container.name category = metadata.get('category', 'other') metadata['category'] = CATEGORY_DICT.get(category, DEFAULT_CATEGORY) self.__dict__.update(metadata) def __getattr__(self, name): try: return self.DEFAULTS[name] except KeyError, e: raise AttributeError(name, e) def get_sorted(self): kf = lambda x: self.SORTKEYS.get(x[0], 99) return sorted([(k, v) for k, v in self.__dict__.items()], key=kf) def check_ui(self, target, default): """Checks metadata information like __only_for__ = 'gtk' __mandatory_in__ = 'gtk' __disable_in__ = 'gtk' The metadata fields in an extension can be a string with comma-separated values for UIs. This will be checked against boolean variables in the "gpodder.ui" object. Example metadata field in an extension: __only_for__ = 'gtk' __only_for__ = 'unity' In this case, this function will return the value of the default if any of the following expressions will evaluate to True: gpodder.ui.gtk gpodder.ui.unity gpodder.ui.cli gpodder.ui.osx gpodder.ui.win32 New, unknown UIs are silently ignored and will evaluate to False. """ if not hasattr(self, target): return default uis = filter(None, [x.strip() for x in getattr(self, target).split(',')]) return any(getattr(gpodder.ui, ui.lower(), False) for ui in uis) @property def available_for_current_ui(self): return self.check_ui('only_for', True) @property def mandatory_in_current_ui(self): return self.check_ui('mandatory_in', False) @property def disable_in_current_ui(self): return self.check_ui('disable_in', False) class MissingDependency(Exception): def __init__(self, message, dependency, cause=None): Exception.__init__(self, message) self.dependency = dependency self.cause = cause class MissingModule(MissingDependency): pass class MissingCommand(MissingDependency): pass class ExtensionContainer(object): """An extension container wraps one extension module""" def __init__(self, manager, name, config, filename=None, module=None): self.manager = manager self.name = name self.config = config self.filename = filename self.module = module self.enabled = False self.error = None self.default_config = None self.parameters = None self.metadata = ExtensionMetadata(self, self._load_metadata(filename)) def require_command(self, command): """Checks if the given command is installed on the system Returns the complete path of the command @param command: String with the command name """ result = util.find_command(command) if result is None: msg = _('Command not found: %(command)s') % {'command': command} raise MissingCommand(msg, command) return result def require_any_command(self, command_list): """Checks if any of the given commands is installed on the system Returns the complete path of first found command in the list @param command: List with the commands name """ for command in command_list: result = util.find_command(command) if result is not None: return result msg = _('Need at least one of the following commands: %(list_of_commands)s') % \ {'list_of_commands': ', '.join(command_list)} raise MissingCommand(msg, ', '.join(command_list)) def _load_metadata(self, filename): if not filename or not os.path.exists(filename): return {} extension_py = open(filename).read() metadata = dict(re.findall("__([a-z_]+)__ = '([^']+)'", extension_py)) # Support for using gpodder.gettext() as _ to localize text localized_metadata = dict(re.findall("__([a-z_]+)__ = _\('([^']+)'\)", extension_py)) for key in localized_metadata: metadata[key] = gpodder.gettext(localized_metadata[key]) return metadata def set_enabled(self, enabled): if enabled and not self.enabled: try: self.load_extension() self.error = None self.enabled = True if hasattr(self.module, 'on_load'): self.module.on_load() except Exception, exception: logger.error('Cannot load %s from %s: %s', self.name, self.filename, exception, exc_info=True) if isinstance(exception, ImportError): # Wrap ImportError in MissingCommand for user-friendly # message (might be displayed in the GUI) match = re.match('No module named (.*)', exception.message) if match: module = match.group(1) msg = _('Python module not found: %(module)s') % { 'module': module } exception = MissingCommand(msg, module, exception) self.error = exception self.enabled = False elif not enabled and self.enabled: try: if hasattr(self.module, 'on_unload'): self.module.on_unload() except Exception, exception: logger.error('Failed to on_unload %s: %s', self.name, exception, exc_info=True) self.enabled = False def load_extension(self): """Load and initialize the gPodder extension module""" if self.module is not None: logger.info('Module already loaded.') return if not self.metadata.available_for_current_ui: logger.info('Not loading "%s" (only_for = "%s")', self.name, self.metadata.only_for) return basename, extension = os.path.splitext(os.path.basename(self.filename)) fp = open(self.filename, 'r') try: module_file = imp.load_module(basename, fp, self.filename, (extension, 'r', imp.PY_SOURCE)) finally: # Remove the .pyc file if it was created during import util.delete_file(self.filename + 'c') fp.close() self.default_config = getattr(module_file, 'DefaultConfig', {}) if self.default_config: self.manager.core.config.register_defaults({ 'extensions': { self.name: self.default_config, } }) self.config = getattr(self.manager.core.config.extensions, self.name) self.module = module_file.gPodderExtension(self) logger.info('Module loaded: %s', self.filename) class ExtensionManager(object): """Loads extensions and manages self-registering plugins""" def __init__(self, core): self.core = core self.filenames = os.environ.get('GPODDER_EXTENSIONS', '').split() self.containers = [] core.config.add_observer(self._config_value_changed) enabled_extensions = core.config.extensions.enabled if os.environ.get('GPODDER_DISABLE_EXTENSIONS', '') != '': logger.info('Disabling all extensions (from environment)') return for name, filename in self._find_extensions(): logger.debug('Found extension "%s" in %s', name, filename) config = getattr(core.config.extensions, name) container = ExtensionContainer(self, name, config, filename) if (name in enabled_extensions or container.metadata.mandatory_in_current_ui): container.set_enabled(True) if (name in enabled_extensions and container.metadata.disable_in_current_ui): container.set_enabled(False) self.containers.append(container) def shutdown(self): for container in self.containers: container.set_enabled(False) def _config_value_changed(self, name, old_value, new_value): if name != 'extensions.enabled': return for container in self.containers: new_enabled = (container.name in new_value) if new_enabled == container.enabled: continue logger.info('Extension "%s" is now %s', container.name, 'enabled' if new_enabled else 'disabled') container.set_enabled(new_enabled) if new_enabled and not container.enabled: logger.warn('Could not enable extension: %s', container.error) self.core.config.extensions.enabled = [x for x in self.core.config.extensions.enabled if x != container.name] def _find_extensions(self): extensions = {} if not self.filenames: builtins = os.path.join(gpodder.prefix, 'share', 'gpodder', 'extensions', '*.py') user_extensions = os.path.join(gpodder.home, 'Extensions', '*.py') self.filenames = glob.glob(builtins) + glob.glob(user_extensions) # Let user extensions override built-in extensions of the same name for filename in self.filenames: if not filename or not os.path.exists(filename): logger.info('Skipping non-existing file: %s', filename) continue name, _ = os.path.splitext(os.path.basename(filename)) extensions[name] = filename return sorted(extensions.items()) def get_extensions(self): """Get a list of all loaded extensions and their enabled flag""" return [c for c in self.containers if c.metadata.available_for_current_ui and not c.metadata.mandatory_in_current_ui and not c.metadata.disable_in_current_ui] # Define all known handler functions here, decorate them with the # "call_extension" decorator to forward all calls to extension scripts that have # the same function defined in them. If the handler functions here contain # any code, it will be called after all the extensions have been called. @call_extensions def on_ui_initialized(self, model, update_podcast_callback, download_episode_callback): """Called when the user interface is initialized. @param model: A gpodder.model.Model instance @param update_podcast_callback: Function to update a podcast feed @param download_episode_callback: Function to download an episode """ pass @call_extensions def on_podcast_subscribe(self, podcast): """Called when the user subscribes to a new podcast feed. @param podcast: A gpodder.model.PodcastChannel instance """ pass @call_extensions def on_podcast_updated(self, podcast): """Called when a podcast feed was updated This extension will be called even if there were no new episodes. @param podcast: A gpodder.model.PodcastChannel instance """ pass @call_extensions def on_podcast_update_failed(self, podcast, exception): """Called when a podcast update failed. @param podcast: A gpodder.model.PodcastChannel instance @param exception: The reason. """ pass @call_extensions def on_podcast_save(self, podcast): """Called when a podcast is saved to the database This extensions will be called when the user edits the metadata of the podcast or when the feed was updated. @param podcast: A gpodder.model.PodcastChannel instance """ pass @call_extensions def on_podcast_delete(self, podcast): """Called when a podcast is deleted from the database @param podcast: A gpodder.model.PodcastChannel instance """ pass @call_extensions def on_episode_playback(self, episode): """Called when an episode is played back This function will be called when the user clicks on "Play" or "Open" in the GUI to open an episode with the media player. @param episode: A gpodder.model.PodcastEpisode instance """ pass @call_extensions def on_episode_save(self, episode): """Called when an episode is saved to the database This extension will be called when a new episode is added to the database or when the state of an existing episode is changed. @param episode: A gpodder.model.PodcastEpisode instance """ pass @call_extensions def on_episode_downloaded(self, episode): """Called when an episode has been downloaded You can retrieve the filename via episode.local_filename(False) @param episode: A gpodder.model.PodcastEpisode instance """ pass @call_extensions def on_all_episodes_downloaded(self): """Called when all episodes has been downloaded """ pass @call_extensions def on_episode_synced(self, device, episode): """Called when an episode has been synced to device You can retrieve the filename via episode.local_filename(False) For MP3PlayerDevice: You can retrieve the filename on device via device.get_episode_file_on_device(episode) You can retrieve the folder name on device via device.get_episode_folder_on_device(episode) @param device: A gpodder.sync.Device instance @param episode: A gpodder.model.PodcastEpisode instance """ pass @call_extensions def on_episodes_context_menu(self, episodes): """Called when the episode list context menu is opened You can add additional context menu entries here. You have to return a list of tuples, where the first item is a label and the second item is a callable that will get the episode as its first and only parameter. Example return value: [('Mark as new', lambda episodes: ...)] @param episodes: A list of gpodder.model.PodcastEpisode instances """ pass @call_extensions def on_channel_context_menu(self, channel): """Called when the channel list context menu is opened You can add additional context menu entries here. You have to return a list of tuples, where the first item is a label and the second item is a callable that will get the channel as its first and only parameter. Example return value: [('Update channel', lambda channel: ...)] @param channel: A gpodder.model.PodcastChannel instance """ pass @call_extensions def on_episode_delete(self, episode, filename): """Called just before the episode's disk file is about to be deleted.""" pass @call_extensions def on_episode_removed_from_podcast(self, episode): """Called just before the episode is about to be removed from the podcast channel, e.g., when the episode has not been downloaded and it disappears from the feed. @param podcast: A gpodder.model.PodcastChannel instance """ pass @call_extensions def on_notification_show(self, title, message): """Called when a notification should be shown @param title: title of the notification @param message: message of the notification """ pass @call_extensions def on_download_progress(self, progress): """Called when the overall download progress changes @param progress: The current progress value (0..1) """ pass @call_extensions def on_ui_object_available(self, name, ui_object): """Called when an UI-specific object becomes available XXX: Experimental. This hook might go away without notice (and be replaced with something better). Only use for in-tree extensions. @param name: The name/ID of the object @param ui_object: The object itself """ pass gpodder-3.9.0/src/gpodder/feedservice.py0000644000016000001710000000532312654461624021347 0ustar jenkinsjenkins00000000000000# -*- coding: utf-8 -*- # # gPodder - A media aggregator and podcast client # Copyright (c) 2005-2016 Thomas Perl and the gPodder Team # # gPodder is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 3 of the License, or # (at your option) any later version. # # gPodder is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . # from mygpoclient import feeds import logging logger = logging.getLogger(__name__) def parse_entry(podcast, entry): download_url = entry['default_file']['url'] return podcast.episode_factory({ 'title': entry['title'], 'description': entry.get('description', ''), 'url': download_url, 'mime_type': entry['default_file']['mime_type'], 'file_size': entry.get('filesize', -1), 'guid': entry.get('guid', download_url), 'link': entry.get('link', ''), 'published': entry.get('released', 0), 'total_time': entry.get('duration', 0), }) def update_using_feedservice(podcasts): urls = [podcast.url for podcast in podcasts] client = feeds.FeedserviceClient() # Last modified + logo/etc.. result = client.parse_feeds(urls) for podcast in podcasts: feed = result.get_feed(podcast.url) if feed is None: logger.info('Feed not updated: %s', podcast.url) continue # Handle permanent redirects if feed.get('new_location', False): new_url = feed['new_location'] logger.info('Redirect %s => %s', podcast.url, new_url) podcast.url = new_url # Error handling if feed.get('errors', False): logger.error('Error parsing feed: %s', repr(feed['errors'])) continue # Update per-podcast metadata podcast.title = feed.get('title', podcast.url) podcast.link = feed.get('link', podcast.link) podcast.description = feed.get('description', podcast.description) podcast.cover_url = feed.get('logo', podcast.cover_url) #podcast.http_etag = feed.get('http_etag', podcast.http_etag) #podcast.http_last_modified = feed.get('http_last_modified', \ # podcast.http_last_modified) podcast.save() # Update episodes parsed_episodes = [parse_entry(podcast, entry) for entry in feed['episodes']] # ... gpodder-3.9.0/src/gpodder/plugins/0000755000016000001710000000000012654461626020171 5ustar jenkinsjenkins00000000000000gpodder-3.9.0/src/gpodder/plugins/__init__.py0000644000016000001710000000137312654461624022304 0ustar jenkinsjenkins00000000000000# -*- coding: utf-8 -*- # # gPodder - A media aggregator and podcast client # Copyright (c) 2005-2016 Thomas Perl and the gPodder Team # # gPodder is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 3 of the License, or # (at your option) any later version. # # gPodder is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . # gpodder-3.9.0/src/gpodder/plugins/soundcloud.py0000644000016000001710000001751712654461624022733 0ustar jenkinsjenkins00000000000000#!/usr/bin/python # -*- coding: utf-8 -*- # # gPodder - A media aggregator and podcast client # Copyright (c) 2005-2016 Thomas Perl and the gPodder Team # # gPodder is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 3 of the License, or # (at your option) any later version. # # gPodder is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . # # Soundcloud.com API client module for gPodder # Thomas Perl ; 2009-11-03 import gpodder _ = gpodder.gettext from gpodder import model from gpodder import util try: # For Python < 2.6, we use the "simplejson" add-on module import simplejson as json except ImportError: # Python 2.6 already ships with a nice "json" module import json import os import time import re import email import urllib # gPodder's consumer key for the Soundcloud API CONSUMER_KEY = 'zrweghtEtnZLpXf3mlm8mQ' def soundcloud_parsedate(s): """Parse a string into a unix timestamp Only strings provided by Soundcloud's API are parsed with this function (2009/11/03 13:37:00). """ m = re.match(r'(\d{4})/(\d{2})/(\d{2}) (\d{2}):(\d{2}):(\d{2})', s) return time.mktime([int(x) for x in m.groups()]+[0, 0, -1]) def get_param(s, param='filename', header='content-disposition'): """Get a parameter from a string of headers By default, this gets the "filename" parameter of the content-disposition header. This works fine for downloads from Soundcloud. """ msg = email.message_from_string(s) if header in msg: value = msg.get_param(param, header=header) decoded_list = email.header.decode_header(value) value = [] for part, encoding in decoded_list: if encoding: value.append(part.decode(encoding)) else: value.append(unicode(part)) return u''.join(value) return None def get_metadata(url): """Get file download metadata Returns a (size, type, name) from the given download URL. Will use the network connection to determine the metadata via the HTTP header fields. """ track_fp = util.urlopen(url) headers = track_fp.info() filesize = headers['content-length'] or '0' filetype = headers['content-type'] or 'application/octet-stream' headers_s = '\n'.join('%s:%s'%(k,v) for k, v in headers.items()) filename = get_param(headers_s) or os.path.basename(os.path.dirname(url)) track_fp.close() return filesize, filetype, filename class SoundcloudUser(object): def __init__(self, username): self.username = username self.cache_file = os.path.join(gpodder.home, 'Soundcloud') if os.path.exists(self.cache_file): try: self.cache = json.load(open(self.cache_file, 'r')) except: self.cache = {} else: self.cache = {} def commit_cache(self): json.dump(self.cache, open(self.cache_file, 'w')) def get_coverart(self): global CONSUMER_KEY key = ':'.join((self.username, 'avatar_url')) if key in self.cache: return self.cache[key] image = None try: json_url = 'http://api.soundcloud.com/users/%s.json?consumer_key=%s' % (self.username, CONSUMER_KEY) user_info = json.load(util.urlopen(json_url)) image = user_info.get('avatar_url', None) self.cache[key] = image finally: self.commit_cache() return image def get_tracks(self, feed): """Get a generator of tracks from a SC user The generator will give you a dictionary for every track it can find for its user.""" global CONSUMER_KEY try: json_url = 'http://api.soundcloud.com/users/%(user)s/%(feed)s.json?filter=downloadable&consumer_key=%(consumer_key)s' \ % { "user":self.username, "feed":feed, "consumer_key": CONSUMER_KEY } tracks = (track for track in json.load(util.urlopen(json_url)) \ if track['downloadable']) for track in tracks: # Prefer stream URL (MP3), fallback to download URL url = track.get('stream_url', track['download_url']) + \ '?consumer_key=%(consumer_key)s' \ % { 'consumer_key': CONSUMER_KEY } if url not in self.cache: try: self.cache[url] = get_metadata(url) except: continue filesize, filetype, filename = self.cache[url] yield { 'title': track.get('title', track.get('permalink')) or _('Unknown track'), 'link': track.get('permalink_url') or 'http://soundcloud.com/'+self.username, 'description': track.get('description') or _('No description available'), 'url': url, 'file_size': int(filesize), 'mime_type': filetype, 'guid': track.get('permalink', track.get('id')), 'published': soundcloud_parsedate(track.get('created_at', None)), } finally: self.commit_cache() class SoundcloudFeed(object): URL_REGEX = re.compile('http://([a-z]+\.)?soundcloud\.com/([^/]+)$', re.I) @classmethod def handle_url(cls, url): m = cls.URL_REGEX.match(url) if m is not None: subdomain, username = m.groups() return cls(username) def __init__(self, username): self.username = username self.sc_user = SoundcloudUser(username) def get_title(self): return _('%s on Soundcloud') % self.username def get_image(self): return self.sc_user.get_coverart() def get_link(self): return 'http://soundcloud.com/%s' % self.username def get_description(self): return _('Tracks published by %s on Soundcloud.') % self.username def get_new_episodes(self, channel, existing_guids): return self._get_new_episodes(channel, existing_guids, 'tracks') def _get_new_episodes(self, channel, existing_guids, track_type): tracks = [t for t in self.sc_user.get_tracks(track_type)] seen_guids = [track['guid'] for track in tracks] episodes = [] for track in tracks: if track['guid'] not in existing_guids: episode = channel.episode_factory(track) episode.save() episodes.append(episode) return episodes, seen_guids class SoundcloudFavFeed(SoundcloudFeed): URL_REGEX = re.compile('http://([a-z]+\.)?soundcloud\.com/([^/]+)/favorites', re.I) def __init__(self, username): super(SoundcloudFavFeed,self).__init__(username) def get_title(self): return _('%s\'s favorites on Soundcloud') % self.username def get_link(self): return 'http://soundcloud.com/%s/favorites' % self.username def get_description(self): return _('Tracks favorited by %s on Soundcloud.') % self.username def get_new_episodes(self, channel, existing_guids): return self._get_new_episodes(channel, existing_guids, 'favorites') # Register our URL handlers model.register_custom_handler(SoundcloudFeed) model.register_custom_handler(SoundcloudFavFeed) def search_for_user(query): json_url = 'http://api.soundcloud.com/users.json?q=%s&consumer_key=%s' % (urllib.quote(query), CONSUMER_KEY) return json.load(util.urlopen(json_url)) gpodder-3.9.0/src/gpodder/query.py0000644000016000001710000001221212654461624020223 0ustar jenkinsjenkins00000000000000# -*- coding: utf-8 -*- # # gPodder - A media aggregator and podcast client # Copyright (c) 2005-2016 Thomas Perl and the gPodder Team # # gPodder is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 3 of the License, or # (at your option) any later version. # # gPodder is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . # # # gpodder.query - Episode Query Language (EQL) implementation (2010-11-29) # import gpodder import re import datetime class Matcher(object): """Match implementation for EQL This class implements the low-level matching of EQL statements against episode objects. """ def __init__(self, episode): self._episode = episode def match(self, term): try: return bool(eval(term, {'__builtins__': None}, self)) except Exception, e: print e return False def __getitem__(self, k): episode = self._episode # Adjectives (for direct usage) if k == 'new': return (episode.state == gpodder.STATE_NORMAL and episode.is_new) elif k in ('downloaded', 'dl'): return episode.was_downloaded(and_exists=True) elif k in ('deleted', 'rm'): return episode.state == gpodder.STATE_DELETED elif k == 'played': return not episode.is_new elif k == 'downloading': return episode.downloading elif k == 'archive': return episode.archive elif k in ('finished', 'fin'): return episode.is_finished() elif k in ('video', 'audio'): return episode.file_type() == k elif k == 'torrent': return episode.url.endswith('.torrent') or 'torrent' in episode.mime_type # Nouns (for comparisons) if k in ('megabytes', 'mb'): return float(episode.file_size) / (1024*1024) elif k == 'title': return episode.title elif k == 'description': return episode.description elif k == 'since': return (datetime.datetime.now() - datetime.datetime.fromtimestamp(episode.published)).days elif k == 'age': return episode.age_in_days() elif k in ('minutes', 'min'): return float(episode.total_time) / 60 elif k in ('remaining', 'rem'): return float(episode.total_time - episode.current_position) / 60 raise KeyError(k) class EQL(object): """A Query in EQL Objects of this class represent a query on episodes using EQL. Example usage: >>> q = EQL('downloaded and megabytes > 10') >>> q.filter(channel.get_all_episodes()) >>> EQL('new and video').match(episode) Regular expression queries are also supported: >>> q = EQL('/^The.*/') >>> q = EQL('/community/i') Normal string matches are also supported: >>> q = EQL('"S04"') >>> q = EQL("'linux'") Normal EQL queries cannot be mixed with RegEx or string matching yet, so this does NOT work: >>> EQL('downloaded and /The.*/i') """ def __init__(self, query): self._query = query self._flags = 0 self._regex = False self._string = False # Regular expression based query match = re.match(r'^/(.*)/(i?)$', query) if match is not None: self._regex = True self._query, flags = match.groups() if flags == 'i': self._flags |= re.I # String based query match = re.match("^([\"'])(.*)(\\1)$", query) if match is not None: self._string = True a, query, b = match.groups() self._query = query.lower() # For everything else, compile the expression if not self._regex and not self._string: try: self._query = compile(query, '', 'eval') except Exception, e: print e self._query = None def match(self, episode): if self._query is None: return False if self._regex: return re.search(self._query, episode.title, self._flags) is not None elif self._string: return self._query in episode.title.lower() or self._query in episode.description.lower() return Matcher(episode).match(self._query) def filter(self, episodes): return filter(self.match, episodes) def UserEQL(query): """EQL wrapper for user input Automatically adds missing quotes around a non-EQL string for user-based input. In this case, EQL queries need to be enclosed in (). """ if query is None: return None if query == '' or (query and query[0] not in "(/'\""): return EQL("'%s'" % query) else: return EQL(query) gpodder-3.9.0/src/gpodder/minidb.py0000644000016000001710000001651312654461624020330 0ustar jenkinsjenkins00000000000000#!/usr/bin/python # -*- coding: utf-8 -*- # # gPodder - A media aggregator and podcast client # Copyright (c) 2005-2016 Thomas Perl and the gPodder Team # # gPodder is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 3 of the License, or # (at your option) any later version. # # gPodder is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . # # gpodder.minidb - A simple SQLite store for Python objects # Thomas Perl, 2010-01-28 # based on: "ORM wie eine Kirchenmaus - a very poor ORM implementation # by thp, 2009-11-29 (thp.io/about)" # This module is also available separately at: # http://thp.io/2010/minidb/ # For Python 2.5, we need to request the "with" statement from __future__ import with_statement try: import sqlite3.dbapi2 as sqlite except ImportError: try: from pysqlite2 import dbapi2 as sqlite except ImportError: raise Exception('Please install SQLite3 support.') import threading class Store(object): def __init__(self, filename=':memory:'): self.db = sqlite.connect(filename, check_same_thread=False) self.lock = threading.RLock() def _schema(self, class_): return class_.__name__, list(sorted(class_.__slots__)) def _set(self, o, slot, value): # Set a slot on the given object to value, doing a cast if # necessary. The value None is special-cased and never cast. cls = o.__class__.__slots__[slot] if value is not None: if isinstance(value, unicode): value = value.decode('utf-8') value = cls(value) setattr(o, slot, value) def commit(self): with self.lock: self.db.commit() def close(self): with self.lock: self.db.execute('VACUUM') self.db.close() def _register(self, class_): with self.lock: table, slots = self._schema(class_) cur = self.db.execute('PRAGMA table_info(%s)' % table) available = cur.fetchall() if available: available = [row[1] for row in available] missing_slots = (s for s in slots if s not in available) for slot in missing_slots: self.db.execute('ALTER TABLE %s ADD COLUMN %s TEXT' % (table, slot)) else: self.db.execute('CREATE TABLE %s (%s)' % (table, ', '.join('%s TEXT'%s for s in slots))) def convert(self, v): if isinstance(v, unicode): return v elif isinstance(v, str): # XXX: Rewrite ^^^ as "isinstance(v, bytes)" in Python 3 return v.decode('utf-8') else: return str(v) def update(self, o, **kwargs): self.remove(o) for k, v in kwargs.items(): setattr(o, k, v) self.save(o) def save(self, o): if hasattr(o, '__iter__'): klass = None for child in o: if klass is None: klass = child.__class__ self._register(klass) table, slots = self._schema(klass) if not isinstance(child, klass): raise ValueError('Only one type of object allowed') used = [s for s in slots if getattr(child, s, None) is not None] values = [self.convert(getattr(child, slot)) for slot in used] self.db.execute('INSERT INTO %s (%s) VALUES (%s)' % (table, ', '.join(used), ', '.join('?'*len(used))), values) return with self.lock: self._register(o.__class__) table, slots = self._schema(o.__class__) values = [self.convert(getattr(o, slot)) for slot in slots] self.db.execute('INSERT INTO %s (%s) VALUES (%s)' % (table, ', '.join(slots), ', '.join('?'*len(slots))), values) def delete(self, class_, **kwargs): with self.lock: self._register(class_) table, slots = self._schema(class_) sql = 'DELETE FROM %s' % (table,) if kwargs: sql += ' WHERE %s' % (' AND '.join('%s=?' % k for k in kwargs)) try: self.db.execute(sql, kwargs.values()) return True except Exception, e: return False def remove(self, o): if hasattr(o, '__iter__'): for child in o: self.remove(child) return with self.lock: self._register(o.__class__) table, slots = self._schema(o.__class__) # Use "None" as wildcard selector in remove actions slots = [s for s in slots if getattr(o, s, None) is not None] values = [self.convert(getattr(o, slot)) for slot in slots] self.db.execute('DELETE FROM %s WHERE %s' % (table, ' AND '.join('%s=?'%s for s in slots)), values) def load(self, class_, **kwargs): with self.lock: self._register(class_) table, slots = self._schema(class_) sql = 'SELECT %s FROM %s' % (', '.join(slots), table) if kwargs: sql += ' WHERE %s' % (' AND '.join('%s=?' % k for k in kwargs)) try: cur = self.db.execute(sql, kwargs.values()) except Exception, e: raise def apply(row): o = class_.__new__(class_) for attr, value in zip(slots, row): try: self._set(o, attr, value) except ValueError, ve: return None return o return filter(lambda x: x is not None, [apply(row) for row in cur]) def get(self, class_, **kwargs): result = self.load(class_, **kwargs) if result: return result[0] else: return None if __name__ == '__main__': class Person(object): __slots__ = {'username': str, 'id': int} def __init__(self, username, id): self.username = username self.id = id def __repr__(self): return '' % (self.username, self.id) m = Store() m.save(Person('User %d' % x, x*20) for x in range(50)) p = m.get(Person, id=200) print p m.remove(p) p = m.get(Person, id=200) # Remove some persons again (deletion by value!) m.remove(Person('User %d' % x, x*20) for x in range(40)) class Person(object): __slots__ = {'username': str, 'id': int, 'mail': str} def __init__(self, username, id, mail): self.username = username self.id = id self.mail = mail def __repr__(self): return '' % (self.username, self.mail) # A schema update takes place here m.save(Person('User %d' % x, x*20, 'user@home.com') for x in range(50)) print m.load(Person) gpodder-3.9.0/src/gpodder/__init__.py0000644000016000001710000001501712654461624020623 0ustar jenkinsjenkins00000000000000# -*- coding: utf-8 -*- # # gPodder - A media aggregator and podcast client # Copyright (c) 2005-2016 Thomas Perl and the gPodder Team # # gPodder is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 3 of the License, or # (at your option) any later version. # # gPodder is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . # # This metadata block gets parsed by setup.py - use single quotes only __tagline__ = 'Media aggregator and podcast client' __author__ = 'Thomas Perl ' __version__ = '3.9.0' __date__ = '2016-02-03' __relname__ = 'Helium Levitator' __copyright__ = 'ТЉ 2005-2016 Thomas Perl and the gPodder Team' __license__ = 'GNU General Public License, version 3 or later' __url__ = 'http://gpodder.org/' __version_info__ = tuple(int(x) for x in __version__.split('.')) import os import sys import platform import gettext import locale # Check if real hard dependencies are available try: import feedparser except ImportError: print """ Error: Module "feedparser" (python-feedparser) not found. The feedparser module can be downloaded from http://code.google.com/p/feedparser/ From a source checkout, you can download local copies of all CLI dependencies for debugging (will be placed into "src/"): python tools/localdepends.py """ sys.exit(1) del feedparser try: import mygpoclient except ImportError: print """ Error: Module "mygpoclient" (python-mygpoclient) not found. The mygpoclient module can be downloaded from http://thp.io/2010/mygpoclient/ From a source checkout, you can download local copies of all CLI dependencies for debugging (will be placed into "src/"): python tools/localdepends.py """ sys.exit(1) del mygpoclient try: import sqlite3 except ImportError: print """ Error: Module "sqlite3" not found. Build Python with SQLite 3 support or get it from http://code.google.com/p/pysqlite/ """ sys.exit(1) del sqlite3 # The User-Agent string for downloads user_agent = 'gPodder/%s (+%s)' % (__version__, __url__) # Are we running in GUI or console mode? class UI(object): def __init__(self): self.gtk = False self.cli = False ui = UI() # D-Bus specific interface names dbus_bus_name = 'org.gpodder' dbus_gui_object_path = '/gui' dbus_podcasts_object_path = '/podcasts' dbus_interface = 'org.gpodder.interface' dbus_podcasts = 'org.gpodder.podcasts' dbus_session_bus = None # Set "win32" to True if we are on Windows ui.win32 = (platform.system() == 'Windows') # Set "osx" to True if we are on Mac OS X ui.osx = (platform.system() == 'Darwin') # i18n setup (will result in "gettext" to be available) # Use _ = gpodder.gettext in modules to enable string translations textdomain = 'gpodder' locale_dir = gettext.bindtextdomain(textdomain) t = gettext.translation(textdomain, locale_dir, fallback=True) try: # Python 2 gettext = t.ugettext ngettext = t.ungettext except AttributeError: # Python 3 gettext = t.gettext ngettext = t.ngettext if ui.win32: try: # Workaround for bug 650 from gtk.glade import bindtextdomain bindtextdomain(textdomain, locale_dir) del bindtextdomain except: # Ignore for missing glade module pass del t # Set up textdomain for gtk.Builder (this accesses the C library functions) if hasattr(locale, 'bindtextdomain'): locale.bindtextdomain(textdomain, locale_dir) del locale_dir # Set up socket timeouts to fix bug 174 SOCKET_TIMEOUT = 60 import socket socket.setdefaulttimeout(SOCKET_TIMEOUT) del socket del SOCKET_TIMEOUT # Variables reserved for GUI-specific use (will be set accordingly) ui_folders = [] credits_file = None icon_file = None images_folder = None user_extensions = None # Episode states used in the database STATE_NORMAL, STATE_DOWNLOADED, STATE_DELETED = range(3) # Paths (gPodder's home folder, config, db, download and data prefix) home = None config_file = None database_file = None downloads = None prefix = None ENV_HOME, ENV_DOWNLOADS = 'GPODDER_HOME', 'GPODDER_DOWNLOAD_DIR' # Function to set a new gPodder home folder def set_home(new_home): global home, config_file, database_file, downloads home = os.path.abspath(new_home) config_file = os.path.join(home, 'Settings.json') database_file = os.path.join(home, 'Database') if ENV_DOWNLOADS not in os.environ: downloads = os.path.join(home, 'Downloads') def fixup_home(old_home): if ui.osx: new_home = os.path.expanduser(os.path.join('~', 'Library', 'Application Support', 'gPodder')) # Users who do not have the old home directory, or who have it but also # have the new home directory (to cater to situations where the user # might for some reason or the other have a ~/gPodder/ directory) get # to use the new, more OS X-ish home. if not os.path.exists(old_home) or os.path.exists(new_home): return new_home return old_home # Default locations for configuration and data files default_home = os.path.expanduser(os.path.join('~', 'gPodder')) default_home = fixup_home(default_home) set_home(os.environ.get(ENV_HOME, default_home)) if home != default_home: print >>sys.stderr, 'Storing data in', home, '(GPODDER_HOME is set)' if ENV_DOWNLOADS in os.environ: # Allow to relocate the downloads folder (pull request 4, bug 466) downloads = os.environ[ENV_DOWNLOADS] print >>sys.stderr, 'Storing downloads in %s (%s is set)' % (downloads, ENV_DOWNLOADS) # Plugins to load by default DEFAULT_PLUGINS = [ 'gpodder.plugins.soundcloud', ] def load_plugins(): """Load (non-essential) plugin modules This loads a default set of plugins, but you can use the environment variable "GPODDER_PLUGINS" to modify the list of plugins.""" PLUGINS = os.environ.get('GPODDER_PLUGINS', None) if PLUGINS is None: PLUGINS = DEFAULT_PLUGINS else: PLUGINS = PLUGINS.split() for plugin in PLUGINS: try: __import__(plugin) except Exception, e: print >>sys.stderr, 'Cannot load plugin: %s (%s)' % (plugin, e) gpodder-3.9.0/src/gpodder/vimeo.py0000644000016000001710000000702512654461624020203 0ustar jenkinsjenkins00000000000000# -*- coding: utf-8 -*- # # gPodder - A media aggregator and podcast client # Copyright (c) 2005-2016 Thomas Perl and the gPodder Team # # gPodder is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 3 of the License, or # (at your option) any later version. # # gPodder is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . # # # gpodder.vimeo - Vimeo download magic # Thomas Perl ; 2012-01-03 # import gpodder _ = gpodder.gettext from gpodder import util import logging logger = logging.getLogger(__name__) try: # For Python < 2.6, we use the "simplejson" add-on module import simplejson as json except ImportError: # Python 2.6 already ships with a nice "json" module import json import re VIMEOCOM_RE = re.compile(r'http[s]?://vimeo\.com/(channels/[^/]+|\d+)$', re.IGNORECASE) VIMEOCOM_VIDEO_RE = re.compile(r'http[s]?://vimeo.com/channels/(?:[^/])+/(\d+)$', re.IGNORECASE) MOOGALOOP_RE = re.compile(r'http[s]?://vimeo\.com/moogaloop\.swf\?clip_id=(\d+)$', re.IGNORECASE) SIGNATURE_RE = re.compile(r'"timestamp":(\d+),"signature":"([^"]+)"') # List of qualities, from lowest to highest FILEFORMAT_RANKING = ['270p', '360p', '720p', '1080p'] FORMATS = tuple((x, x) for x in FILEFORMAT_RANKING) class VimeoError(BaseException): pass def get_real_download_url(url, preferred_fileformat=None): video_id = get_vimeo_id(url) if video_id is None: return url data_config_url = 'https://player.vimeo.com/video/%s/config' % (video_id,) def get_urls(data_config_url): data_config_data = util.urlopen(data_config_url).read().decode('utf-8') data_config = json.loads(data_config_data) for fileinfo in data_config['request']['files'].values(): if not isinstance(fileinfo, list): continue for item in fileinfo: yield (item['quality'], item['url']) fileformat_to_url = dict(get_urls(data_config_url)) if preferred_fileformat is not None and preferred_fileformat in fileformat_to_url: logger.debug('Picking preferred format: %s', preferred_fileformat) return fileformat_to_url[preferred_fileformat] def fileformat_sort_key_func(fileformat): if fileformat in FILEFORMAT_RANKING: return FILEFORMAT_RANKING.index(fileformat) return 0 for fileformat in sorted(fileformat_to_url, key=fileformat_sort_key_func, reverse=True): logger.debug('Picking best format: %s', fileformat) return fileformat_to_url[fileformat] return url def get_vimeo_id(url): result = MOOGALOOP_RE.match(url) if result is not None: return result.group(1) result = VIMEOCOM_RE.match(url) if result is not None: return result.group(1) result = VIMEOCOM_VIDEO_RE.match(url) if result is not None: return result.group(1) return None def is_video_link(url): return (get_vimeo_id(url) is not None) def get_real_channel_url(url): result = VIMEOCOM_RE.match(url) if result is not None: return 'http://vimeo.com/%s/videos/rss' % result.group(1) return url def get_real_cover(url): return None gpodder-3.9.0/src/gpodder/log.py0000644000016000001710000000623312654461624017645 0ustar jenkinsjenkins00000000000000# -*- coding: utf-8 -*- # # gPodder - A media aggregator and podcast client # Copyright (c) 2005-2016 Thomas Perl and the gPodder Team # # gPodder is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 3 of the License, or # (at your option) any later version. # # gPodder is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . # # gpodder.log - Logging setup # Thomas Perl ; 2012-03-02 # Based on an initial draft by Neal Walfield import gpodder import glob import logging import os import sys import time import traceback logger = logging.getLogger(__name__) def setup(verbose=True): # Configure basic stdout logging STDOUT_FMT = '%(created)f [%(name)s] %(levelname)s: %(message)s' logging.basicConfig(format=STDOUT_FMT, level=logging.DEBUG if verbose else logging.WARNING) # Replace except hook with a custom one that logs it as an error original_excepthook = sys.excepthook def on_uncaught_exception(exctype, value, tb): message = ''.join(traceback.format_exception(exctype, value, tb)) logger.error('Uncaught exception: %s', message) original_excepthook(exctype, value, tb) sys.excepthook = on_uncaught_exception if os.environ.get('GPODDER_WRITE_LOGS', 'yes') != 'no': # Configure file based logging logging_basename = time.strftime('%Y-%m-%d.log') logging_directory = os.path.join(gpodder.home, 'Logs') if not os.path.isdir(logging_directory): try: os.makedirs(logging_directory) except: logger.warn('Cannot create output directory: %s', logging_directory) return False # Keep logs around for 5 days LOG_KEEP_DAYS = 5 # Purge old logfiles if they are older than LOG_KEEP_DAYS days old_logfiles = glob.glob(os.path.join(logging_directory, '*-*-*.log')) for old_logfile in old_logfiles: st = os.stat(old_logfile) if time.time() - st.st_mtime > 60*60*24*LOG_KEEP_DAYS: logger.info('Purging old logfile: %s', old_logfile) try: os.remove(old_logfile) except: logger.warn('Cannot purge logfile: %s', exc_info=True) root = logging.getLogger() logfile = os.path.join(logging_directory, logging_basename) file_handler = logging.FileHandler(logfile, 'a', 'utf-8') FILE_FMT = '%(asctime)s [%(name)s] %(levelname)s: %(message)s' file_handler.setFormatter(logging.Formatter(FILE_FMT)) root.addHandler(file_handler) logger.debug('==== gPodder starts up (ui=%s) ===', ', '.join(name for name in ('cli', 'gtk') if getattr(gpodder.ui, name, False))) return True gpodder-3.9.0/src/gpodder/dbusproxy.py0000644000016000001710000001251112654461624021117 0ustar jenkinsjenkins00000000000000#!/usr/bin/python # -*- coding: utf-8 -*- # # gPodder - A media aggregator and podcast client # Copyright (c) 2005-2016 Thomas Perl and the gPodder Team # # gPodder is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 3 of the License, or # (at your option) any later version. # # gPodder is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . # # gpodder.dbusproxy - Expose Podcasts over D-Bus # Based on a patch by Iwan van der Kleijn # See also: http://gpodder.org/bug/699 import gpodder from gpodder import util import dbus import dbus.service def safe_str(txt): if txt: return txt.encode() else: return '' def safe_first_line(txt): txt = safe_str(txt) lines = util.remove_html_tags(txt).strip().splitlines() if not lines or lines[0] == '': return '' else: return lines[0] class DBusPodcastsProxy(dbus.service.Object): """ Implements API accessible through D-Bus Methods on DBusPodcastsProxy can be called by D-Bus clients. They implement safe-guards to work safely over D-Bus while having type signatures applied for parameter and return values. """ #DBusPodcastsProxy(lambda: self.channels, self.on_itemUpdate_activate(), self.playback_episodes, self.download_episode_list, bus_name) def __init__(self, get_podcast_list, \ check_for_updates, playback_episodes, \ download_episodes, episode_from_uri, \ bus_name): self._get_podcasts = get_podcast_list self._on_check_for_updates = check_for_updates self._playback_episodes = playback_episodes self._download_episodes = download_episodes self._episode_from_uri = episode_from_uri dbus.service.Object.__init__(self, \ object_path=gpodder.dbus_podcasts_object_path, \ bus_name=bus_name) def _get_episode_refs(self, urls): """Get Episode instances associated with URLs""" episodes = [] for p in self._get_podcasts(): for e in p.get_all_episodes(): if e.url in urls: episodes.append(e) return episodes @dbus.service.method(dbus_interface=gpodder.dbus_podcasts, in_signature='', out_signature='a(ssss)') def get_podcasts(self): """Get all podcasts in gPodder's subscription list""" def podcast_to_tuple(podcast): title = safe_str(podcast.title) url = safe_str(podcast.url) description = safe_first_line(podcast.description) cover_file = '' return (title, url, description, cover_file) return [podcast_to_tuple(p) for p in self._get_podcasts()] @dbus.service.method(dbus_interface=gpodder.dbus_podcasts, in_signature='s', out_signature='ss') def get_episode_title(self, url): episode = self._episode_from_uri(url) if episode is not None: return episode.title, episode.channel.title return ('', '') @dbus.service.method(dbus_interface=gpodder.dbus_podcasts, in_signature='s', out_signature='a(sssssbbb)') def get_episodes(self, url): """Return all episodes of the podcast with the given URL""" podcast = None for channel in self._get_podcasts(): if channel.url == url: podcast = channel break if podcast is None: return [] def episode_to_tuple(episode): title = safe_str(episode.title) url = safe_str(episode.url) description = safe_first_line(episode.description) filename = safe_str(episode.download_filename) file_type = safe_str(episode.file_type()) is_new = (episode.state == gpodder.STATE_NORMAL and episode.is_new) is_downloaded = episode.was_downloaded(and_exists=True) is_deleted = (episode.state == gpodder.STATE_DELETED) return (title, url, description, filename, file_type, is_new, is_downloaded, is_deleted) return [episode_to_tuple(e) for e in podcast.get_all_episodes()] @dbus.service.method(dbus_interface=gpodder.dbus_podcasts, in_signature='as', out_signature='(bs)') def play_or_download_episode(self, urls): """Play (or download) a list of episodes given by URL""" episodes = self._get_episode_refs(urls) if not episodes: return (0, 'No episodes found') to_playback = [e for e in episodes if e.was_downloaded(and_exists=True)] to_download = [e for e in episodes if e not in to_playback] if to_playback: self._playback_episodes(to_playback) if to_download: self._download_episodes(to_download) return (1, 'Success') @dbus.service.method(dbus_interface=gpodder.dbus_podcasts, in_signature='', out_signature='') def check_for_updates(self): """Check for new episodes or offer subscriptions""" self._on_check_for_updates() gpodder-3.9.0/src/gpodder/escapist_videos.py0000644000016000001710000001267612654461624022260 0ustar jenkinsjenkins00000000000000# -*- coding: utf-8 -*- # # gPodder - A media aggregator and podcast client # Copyright (c) 2005-2016 Thomas Perl and the gPodder Team # # gPodder is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 3 of the License, or # (at your option) any later version. # # gPodder is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . # # # gpodder.escapist - Escapist Videos download magic # somini ; 2014-09-14 # import gpodder from gpodder import util import logging logger = logging.getLogger(__name__) try: # For Python < 2.6, we use the "simplejson" add-on module import simplejson as json except ImportError: # Python 2.6 already ships with a nice "json" module import json import re import urllib # This matches the more reliable URL ESCAPIST_NUMBER_RE = re.compile(r'http://www.escapistmagazine.com/videos/view/(\d+)', re.IGNORECASE) # This matches regular URL, mainly those that come in the RSS feeds ESCAPIST_REGULAR_RE = re.compile(r'http://www.escapistmagazine.com/videos/view/([\w-]+)/(\d+)-', re.IGNORECASE) # This finds the RSS for a given URL DATA_RSS_RE = re.compile(r'http://www.escapistmagazine.com/rss/videos/list/([1-9][0-9]*)\.xml') # This matches the "configuration". The important part is the JSON between the parens DATA_CONFIG_RE = re.compile(r'imsVideo\.play\((.*)\)\;\<\/script\>', re.IGNORECASE) # This matches the cover art for an RSS. We shouldn't parse XML with regex. DATA_COVERART_RE = re.compile(r'(http:.+\.jpg)') class EscapistError(BaseException): pass def get_real_download_url(url): video_id = get_escapist_id(url) if video_id is None: return url web_data = get_escapist_web(video_id) data_config_frag = DATA_CONFIG_RE.search(web_data) data_config_url = get_escapist_config_url(data_config_frag.group(1)) if data_config_url is None: raise EscapistError('Cannot parse configuration from the site') logger.debug('Config URL: %s', data_config_url) data_config_data = util.urlopen(data_config_url).read().decode('utf-8') #TODO: This second argument should get a real name real_url = get_escapist_real_url(data_config_data, data_config_frag.group(1)) if real_url is None: raise EscapistError('Cannot get MP4 URL from The Escapist') elif "sales-marketing/" in real_url: raise EscapistError('Oops, seems The Escapist blocked this IP. Wait a few days/weeks to get it unblocked') else: return real_url def get_escapist_id(url): result = ESCAPIST_NUMBER_RE.match(url) if result is not None: return result.group(1) result = ESCAPIST_REGULAR_RE.match(url) if result is not None: return result.group(2) return None def is_video_link(url): return (get_escapist_id(url) is not None) def get_real_channel_url(url): video_id = get_escapist_id(url) if video_id is None: return url web_data = get_escapist_web(video_id) data_config_frag = DATA_RSS_RE.search(web_data) if data_config_frag is None: raise EscapistError('Cannot get RSS URL from The Escapist') return data_config_frag.group(0) def get_real_cover(url): rss_url = get_real_channel_url(url) if rss_url is None: return None rss_data = util.urlopen(rss_url).read() rss_data_frag = DATA_COVERART_RE.search(rss_data) if rss_data_frag is None: return None return rss_data_frag.group(1) def get_escapist_web(video_id): if video_id is None: return None web_url = 'http://www.escapistmagazine.com/videos/view/%s' % video_id return util.urlopen(web_url).read() def get_escapist_config_url(data): if data is None: return None query_string = urllib.urlencode(json.loads(data)) return 'http://www.escapistmagazine.com/videos/vidconfig.php?%s' % query_string def get_escapist_real_url(data, config_json): if data is None: return None config_data = json.loads(config_json) if config_data is None: return None ## The data is scrambled, unscramble ## Direct port from 'imsVideos.prototype.processRequest' from the file 'ims_videos.min.js' one_hash = config_data["hash"] # Turn the string into numbers hash_n = [ ord(x) for x in one_hash ] # Split the data into 2char strings hex_hashes = [ data[x:x+2] for x in range(0,len(data),2) ] # Turn the strings into numbers, considering the hex value num_hashes = [ int(h, 16) for h in hex_hashes ] # Characters again, from the value # str_hashes = [ unichr(n) for n in num_hashes ] # Bitwise XOR num_hashes and the hash result_num = [] for idx in range(0,len(num_hashes)): result_num.append(num_hashes[idx]^hash_n[idx % len(hash_n)]) # At last, Numbers back into characters result = ''.join([unichr(x) for x in result_num]) # A wild JSON appears... # You use "Master Ball"... escapist_cfg = json.loads(result) # It's super effective! #TODO: There's a way to choose different video types, for now just pick MP4@480p return escapist_cfg["files"]["videos"][2]["src"] gpodder-3.9.0/src/gpodder/services.py0000644000016000001710000000350412654461624020705 0ustar jenkinsjenkins00000000000000# -*- coding: utf-8 -*- # # gPodder - A media aggregator and podcast client # Copyright (c) 2005-2016 Thomas Perl and the gPodder Team # # gPodder is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 3 of the License, or # (at your option) any later version. # # gPodder is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . # # # services.py -- Core Services for gPodder # Thomas Perl 2007-08-24 # # import gpodder _ = gpodder.gettext from gpodder import util class ObservableService(object): def __init__(self, signal_names=[]): self.observers = {} for signal in signal_names: self.observers[signal] = [] def register(self, signal_name, observer): if signal_name in self.observers: if not observer in self.observers[signal_name]: self.observers[signal_name].append(observer) return True return False def unregister(self, signal_name, observer): if signal_name in self.observers: if observer in self.observers[signal_name]: self.observers[signal_name].remove(observer) return True return False def notify(self, signal_name, *args): if signal_name in self.observers: for observer in self.observers[signal_name]: util.idle_add(observer, *args) return True return False gpodder-3.9.0/src/gpodder/config.py0000644000016000001710000002761012654461624020333 0ustar jenkinsjenkins00000000000000# -*- coding: utf-8 -*- # # gPodder - A media aggregator and podcast client # Copyright (c) 2005-2016 Thomas Perl and the gPodder Team # # gPodder is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 3 of the License, or # (at your option) any later version. # # gPodder is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . # # # config.py -- gPodder Configuration Manager # Thomas Perl 2007-11-02 # import gpodder from gpodder import util from gpodder import jsonconfig import atexit import os import shutil import time import logging _ = gpodder.gettext defaults = { # External applications used for playback 'player': { 'audio': 'default', 'video': 'default', }, # gpodder.net settings 'mygpo': { 'enabled': False, 'server': 'gpodder.net', 'username': '', 'password': '', 'device': { 'uid': util.get_hostname(), 'type': 'desktop', 'caption': _('gPodder on %s') % util.get_hostname(), }, }, # Various limits (downloading, updating, etc..) 'limit': { 'bandwidth': { 'enabled': False, 'kbps': 500.0, # maximum kB/s per download }, 'downloads': { 'enabled': True, 'concurrent': 1, }, 'episodes': 200, # max episodes per feed }, # Behavior of downloads 'downloads': { 'chronological_order': True, # download older episodes first }, # Automatic feed updates, download removal and retry on download timeout 'auto': { 'update': { 'enabled': False, 'frequency': 20, # minutes }, 'cleanup': { 'days': 7, 'played': False, 'unplayed': False, 'unfinished': True, }, 'retries': 3, # number of retries when downloads time out }, # Software updates from gpodder.org 'software_update': { 'check_on_startup': True, # check for updates on start 'last_check': 0, # unix timestamp of last update check 'interval': 5, # interval (in days) to check for updates }, 'ui': { # Settings for the Command-Line Interface 'cli': { 'colors': True, }, # Settings for the Gtk UI 'gtk': { 'state': { 'main_window': { 'width': 700, 'height': 500, 'x': -1, 'y': -1, 'maximized': False, 'paned_position': 200, 'episode_list_size': 200, }, 'episode_selector': { 'width': 600, 'height': 400, 'x': -1, 'y': -1, 'maximized': False, }, 'episode_window': { 'width': 500, 'height': 400, 'x': -1, 'y': -1, 'maximized': False, }, }, 'toolbar': False, 'html_shownotes': True, 'new_episodes': 'show', # ignore, show, queue, download 'live_search_delay': 200, 'podcast_list': { 'all_episodes': True, 'sections': True, 'view_mode': 1, 'hide_empty': False, }, 'episode_list': { 'descriptions': True, 'view_mode': 1, 'columns': int('110', 2), # bitfield of visible columns }, 'download_list': { 'remove_finished': True, }, }, }, # Synchronization with portable devices (MP3 players, etc..) 'device_sync': { 'device_type': 'none', # Possible values: 'none', 'filesystem', 'ipod' 'device_folder': '/media', 'one_folder_per_podcast': True, 'skip_played_episodes': True, 'delete_played_episodes': False, 'max_filename_length': 999, 'custom_sync_name': '{episode.sortdate}_{episode.title}', 'custom_sync_name_enabled': False, 'after_sync': { 'mark_episodes_played': False, 'delete_episodes': False, 'sync_disks': False, }, 'playlists': { 'create': True, 'two_way_sync': False, 'use_absolute_path': True, 'folder': 'Playlists', } }, 'youtube': { 'preferred_fmt_id': 18, # default fmt_id (see fallbacks in youtube.py) 'preferred_fmt_ids': [], # for advanced uses (custom fallback sequence) 'api_key_v3': '', # API key, register for one at https://developers.google.com/youtube/v3/ }, 'vimeo': { 'fileformat': '720p', # preferred file format (see vimeo.py) }, 'extensions': { 'enabled': [], }, } # The sooner this goes away, the better gPodderSettings_LegacySupport = { 'player': 'player.audio', 'videoplayer': 'player.video', 'limit_rate': 'limit.bandwidth.enabled', 'limit_rate_value': 'limit.bandwidth.kbps', 'max_downloads_enabled': 'limit.downloads.enabled', 'max_downloads': 'limit.downloads.concurrent', 'episode_old_age': 'auto.cleanup.days', 'auto_remove_played_episodes': 'auto.cleanup.played', 'auto_remove_unfinished_episodes': 'auto.cleanup.unfinished', 'auto_remove_unplayed_episodes': 'auto.cleanup.unplayed', 'max_episodes_per_feed': 'limit.episodes', 'show_toolbar': 'ui.gtk.toolbar', 'episode_list_descriptions': 'ui.gtk.episode_list.descriptions', 'podcast_list_view_all': 'ui.gtk.podcast_list.all_episodes', 'podcast_list_sections': 'ui.gtk.podcast_list.sections', 'enable_html_shownotes': 'ui.gtk.html_shownotes', 'episode_list_view_mode': 'ui.gtk.episode_list.view_mode', 'podcast_list_view_mode': 'ui.gtk.podcast_list.view_mode', 'podcast_list_hide_boring': 'ui.gtk.podcast_list.hide_empty', 'episode_list_columns': 'ui.gtk.episode_list.columns', 'auto_cleanup_downloads': 'ui.gtk.download_list.remove_finished', 'auto_update_feeds': 'auto.update.enabled', 'auto_update_frequency': 'auto.update.frequency', 'auto_download': 'ui.gtk.new_episodes', } logger = logging.getLogger(__name__) def config_value_to_string(config_value): config_type = type(config_value) if config_type == list: return ','.join(map(config_value_to_string, config_value)) elif config_type in (str, unicode): return config_value else: return str(config_value) def string_to_config_value(new_value, old_value): config_type = type(old_value) if config_type == list: return filter(None, [x.strip() for x in new_value.split(',')]) elif config_type == bool: return (new_value.strip().lower() in ('1', 'true')) else: return config_type(new_value) class Config(object): # Number of seconds after which settings are auto-saved WRITE_TO_DISK_TIMEOUT = 60 def __init__(self, filename='gpodder.json'): self.__json_config = jsonconfig.JsonConfig(default=defaults, on_key_changed=self._on_key_changed) self.__save_thread = None self.__filename = filename self.__observers = [] self.load() # If there is no configuration file, we create one here (bug 1511) if not os.path.exists(self.__filename): self.save() atexit.register(self.__atexit) def register_defaults(self, defaults): """ Register default configuration options (e.g. for extensions) This function takes a dictionary that will be merged into the current configuration if the keys don't yet exist. This can be used to add a default configuration for extension modules. """ self.__json_config._merge_keys(defaults) def add_observer(self, callback): """ Add a callback function as observer. This callback will be called when a setting changes. It should have this signature: observer(name, old_value, new_value) The "name" is the setting name, the "old_value" is the value that has been overwritten with "new_value". """ if callback not in self.__observers: self.__observers.append(callback) else: logger.warn('Observer already added: %s', repr(callback)) def remove_observer(self, callback): """ Remove an observer previously added to this object. """ if callback in self.__observers: self.__observers.remove(callback) else: logger.warn('Observer not added: %s', repr(callback)) def all_keys(self): return self.__json_config._keys_iter() def schedule_save(self): if self.__save_thread is None: self.__save_thread = util.run_in_background(self.save_thread_proc, True) def save_thread_proc(self): time.sleep(self.WRITE_TO_DISK_TIMEOUT) if self.__save_thread is not None: self.save() def __atexit(self): if self.__save_thread is not None: self.save() def save(self, filename=None): if filename is None: filename = self.__filename logger.info('Flushing settings to disk') try: fp = open(filename+'.tmp', 'wt') fp.write(repr(self.__json_config)) fp.close() util.atomic_rename(filename+'.tmp', filename) except: logger.error('Cannot write settings to %s', filename) util.delete_file(filename+'.tmp') raise self.__save_thread = None def load(self, filename=None): if filename is not None: self.__filename = filename if os.path.exists(self.__filename): try: data = open(self.__filename, 'rt').read() new_keys_added = self.__json_config._restore(data) except: logger.warn('Cannot parse config file: %s', self.__filename, exc_info=True) new_keys_added = False if new_keys_added: logger.info('New default keys added - saving config.') self.save() def toggle_flag(self, name): setattr(self, name, not getattr(self, name)) def update_field(self, name, new_value): """Update a config field, converting strings to the right types""" old_value = self._lookup(name) new_value = string_to_config_value(new_value, old_value) setattr(self, name, new_value) return True def _on_key_changed(self, name, old_value, value): if 'ui.gtk.state' not in name: # Only log non-UI state changes logger.debug('%s: %s -> %s', name, old_value, value) for observer in self.__observers: try: observer(name, old_value, value) except Exception, exception: logger.error('Error while calling observer %r: %s', observer, exception, exc_info=True) self.schedule_save() def __getattr__(self, name): if name in gPodderSettings_LegacySupport: name = gPodderSettings_LegacySupport[name] return getattr(self.__json_config, name) def __setattr__(self, name, value): if name.startswith('_'): object.__setattr__(self, name, value) return if name in gPodderSettings_LegacySupport: name = gPodderSettings_LegacySupport[name] setattr(self.__json_config, name, value) gpodder-3.9.0/src/gpodder/jsonconfig.py0000644000016000001710000001665412654461624021233 0ustar jenkinsjenkins00000000000000# -*- coding: utf-8 -*- # # gPodder - A media aggregator and podcast client # Copyright (c) 2005-2016 Thomas Perl and the gPodder Team # # gPodder is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 3 of the License, or # (at your option) any later version. # # gPodder is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . # # # jsonconfig.py -- JSON Config Backend # Thomas Perl 2012-01-18 # import copy try: # For Python < 2.6, we use the "simplejson" add-on module import simplejson as json except ImportError: # Python 2.6 already ships with a nice "json" module import json class JsonConfigSubtree(object): def __init__(self, parent, name): self._parent = parent self._name = name def __repr__(self): return '' % (self._name,) def _attr(self, name): return '.'.join((self._name, name)) def __getitem__(self, name): return self._parent._lookup(self._name).__getitem__(name) def __delitem__(self, name): self._parent._lookup(self._name).__delitem__(name) def __setitem__(self, name, value): self._parent._lookup(self._name).__setitem__(name, value) def __getattr__(self, name): if name == 'keys': # Kludge for using dict() on a JsonConfigSubtree return getattr(self._parent._lookup(self._name), name) return getattr(self._parent, self._attr(name)) def __setattr__(self, name, value): if name.startswith('_'): object.__setattr__(self, name, value) else: self._parent.__setattr__(self._attr(name), value) class JsonConfig(object): _INDENT = 2 def __init__(self, data=None, default=None, on_key_changed=None): """ Create a new JsonConfig object data: A JSON string that contains the data to load (optional) default: A dict that contains default config values (optional) on_key_changed: Callback when a value changes (optional) The signature of on_key_changed looks like this: func(name, old_value, new_value) name: The key name, e.g. "ui.gtk.show_toolbar" old_value: The old value, e.g. False new_value: The new value, e.g. True For newly-set keys, on_key_changed is also called. In this case, None will be the old_value: >>> def callback(*args): print 'callback:', args >>> c = JsonConfig(on_key_changed=callback) >>> c.a.b = 10 callback: ('a.b', None, 10) >>> c.a.b = 11 callback: ('a.b', 10, 11) >>> c.x.y.z = [1,2,3] callback: ('x.y.z', None, [1, 2, 3]) >>> c.x.y.z = 42 callback: ('x.y.z', [1, 2, 3], 42) Please note that dict-style access will not call on_key_changed: >>> def callback(*args): print 'callback:', args >>> c = JsonConfig(on_key_changed=callback) >>> c.a.b = 1 # This works as expected callback: ('a.b', None, 1) >>> c.a['c'] = 10 # This doesn't call on_key_changed! >>> del c.a['c'] # This also doesn't call on_key_changed! """ self._default = default self._data = copy.deepcopy(self._default) or {} self._on_key_changed = on_key_changed if data is not None: self._restore(data) def _restore(self, backup): """ Restore a previous state saved with repr() This function allows you to "snapshot" the current values of the configuration and reload them later on. Any missing default values will be added on top of the restored config. Returns True if new keys from the default config have been added, False if no keys have been added (backup contains all default keys) >>> c = JsonConfig() >>> c.a.b = 10 >>> backup = repr(c) >>> print c.a.b 10 >>> c.a.b = 11 >>> print c.a.b 11 >>> c._restore(backup) False >>> print c.a.b 10 """ self._data = json.loads(backup) # Add newly-added default configuration options if self._default is not None: return self._merge_keys(self._default) return False def _merge_keys(self, merge_source): """Merge keys from merge_source into this config object Return True if new keys were merged, False otherwise """ added_new_key = False # Recurse into the data and add missing items work_queue = [(self._data, merge_source)] while work_queue: data, default = work_queue.pop() for key, value in default.iteritems(): if key not in data: # Copy defaults for missing key data[key] = copy.deepcopy(value) added_new_key = True elif isinstance(value, dict): # Recurse into sub-dictionaries work_queue.append((data[key], value)) elif type(value) != type(data[key]): # Type mismatch of current value and default if type(value) == int and type(data[key]) == float: # Convert float to int if default value is int data[key] = int(data[key]) return added_new_key def __repr__(self): """ >>> c = JsonConfig('{"a": 1}') >>> print c { "a": 1 } """ return json.dumps(self._data, indent=self._INDENT, sort_keys=True) def _lookup(self, name): return reduce(lambda d, k: d[k], name.split('.'), self._data) def _keys_iter(self): work_queue = [] work_queue.append(([], self._data)) while work_queue: path, data = work_queue.pop(0) if isinstance(data, dict): for key in sorted(data.keys()): work_queue.append((path + [key], data[key])) else: yield '.'.join(path) def __getattr__(self, name): try: value = self._lookup(name) if not isinstance(value, dict): return value except KeyError: pass return JsonConfigSubtree(self, name) def __setattr__(self, name, value): if name.startswith('_'): object.__setattr__(self, name, value) return attrs = name.split('.') target_dict = self._data while attrs: attr = attrs.pop(0) if not attrs: old_value = target_dict.get(attr, None) if old_value != value or attr not in target_dict: target_dict[attr] = value if self._on_key_changed is not None: self._on_key_changed(name, old_value, value) break target = target_dict.get(attr, None) if target is None or not isinstance(target, dict): target_dict[attr] = target = {} target_dict = target gpodder-3.9.0/src/gpodder/core.py0000644000016000001710000000377712654461624020026 0ustar jenkinsjenkins00000000000000# -*- coding: utf-8 -*- # # gPodder - A media aggregator and podcast client # Copyright (c) 2005-2016 Thomas Perl and the gPodder Team # # gPodder is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 3 of the License, or # (at your option) any later version. # # gPodder is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . # # gpodder.core - Common functionality used by all UIs # Thomas Perl ; 2011-02-06 import gpodder from gpodder import util from gpodder import config from gpodder import dbsqlite from gpodder import extensions from gpodder import model class Core(object): def __init__(self, config_class=config.Config, database_class=dbsqlite.Database, model_class=model.Model): # Initialize the gPodder home directory util.make_directory(gpodder.home) # Open the database and configuration file self.db = database_class(gpodder.database_file) self.model = model_class(self.db) self.config = config_class(gpodder.config_file) # Load extension modules and install the extension manager gpodder.user_extensions = extensions.ExtensionManager(self) # Load installed/configured plugins gpodder.load_plugins() # Update the current device in the configuration self.config.mygpo.device.type = util.detect_device_type() def shutdown(self): # Notify all extensions that we are being shut down gpodder.user_extensions.shutdown() # Close the database and store outstanding changes self.db.close() gpodder-3.9.0/src/gpodder/gtkui/0000755000016000001710000000000012654461626017633 5ustar jenkinsjenkins00000000000000gpodder-3.9.0/src/gpodder/gtkui/draw.py0000644000016000001710000003000312654461624021134 0ustar jenkinsjenkins00000000000000# -*- coding: utf-8 -*- # # gPodder - A media aggregator and podcast client # Copyright (c) 2005-2016 Thomas Perl and the gPodder Team # # gPodder is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 3 of the License, or # (at your option) any later version. # # gPodder is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . # # # draw.py -- Draw routines for gPodder-specific graphics # Thomas Perl , 2007-11-25 # import gpodder import gtk import pango import pangocairo import cairo import StringIO import math class TextExtents(object): def __init__(self, ctx, text): tuple = ctx.text_extents(text) (self.x_bearing, self.y_bearing, self.width, self.height, self.x_advance, self.y_advance) = tuple EPISODE_LIST_ICON_SIZE = 16 RRECT_LEFT_SIDE = 1 RRECT_RIGHT_SIDE = 2 def draw_rounded_rectangle(ctx, x, y, w, h, r=10, left_side_width = None, sides_to_draw=0, close=False): assert left_side_width is not None x = int(x) offset = 0 if close: offset = 0.5 if sides_to_draw & RRECT_LEFT_SIDE: ctx.move_to(x+int(left_side_width)-offset, y+h) ctx.line_to(x+r, y+h) ctx.curve_to(x, y+h, x, y+h, x, y+h-r) ctx.line_to(x, y+r) ctx.curve_to(x, y, x, y, x+r, y) ctx.line_to(x+int(left_side_width)-offset, y) if close: ctx.line_to(x+int(left_side_width)-offset, y+h) if sides_to_draw & RRECT_RIGHT_SIDE: ctx.move_to(x+int(left_side_width)+offset, y) ctx.line_to(x+w-r, y) ctx.curve_to(x+w, y, x+w, y, x+w, y+r) ctx.line_to(x+w, y+h-r) ctx.curve_to(x+w, y+h, x+w, y+h, x+w-r, y+h) ctx.line_to(x+int(left_side_width)+offset, y+h) if close: ctx.line_to(x+int(left_side_width)+offset, y) def rounded_rectangle(ctx, x, y, width, height, radius=4.): """Simple rounded rectangle algorithmn http://www.cairographics.org/samples/rounded_rectangle/ """ degrees = math.pi / 180. ctx.new_sub_path() if width > radius: ctx.arc(x + width - radius, y + radius, radius, -90. * degrees, 0) ctx.arc(x + width - radius, y + height - radius, radius, 0, 90. * degrees) ctx.arc(x + radius, y + height - radius, radius, 90. * degrees, 180. * degrees) ctx.arc(x + radius, y + radius, radius, 180. * degrees, 270. * degrees) ctx.close_path() def draw_text_box_centered(ctx, widget, w_width, w_height, text, font_desc=None, add_progress=None): style = widget.rc_get_style() text_color = style.text[gtk.STATE_PRELIGHT] red, green, blue = text_color.red, text_color.green, text_color.blue text_color = [float(x)/65535. for x in (red, green, blue)] text_color.append(.5) if font_desc is None: font_desc = style.font_desc font_desc.set_size(14*pango.SCALE) pango_context = widget.create_pango_context() layout = pango.Layout(pango_context) layout.set_font_description(font_desc) layout.set_text(text) width, height = layout.get_pixel_size() ctx.move_to(w_width/2-width/2, w_height/2-height/2) ctx.set_source_rgba(*text_color) ctx.show_layout(layout) # Draw an optional progress bar below the text (same width) if add_progress is not None: bar_height = 10 ctx.set_source_rgba(*text_color) ctx.set_line_width(1.) rounded_rectangle(ctx, w_width/2-width/2-.5, w_height/2+height-.5, width+1, bar_height+1) ctx.stroke() rounded_rectangle(ctx, w_width/2-width/2, w_height/2+height, int(width*add_progress)+.5, bar_height) ctx.fill() def draw_cake(percentage, text=None, emblem=None, size=None): # Download percentage bar icon - it turns out the cake is a lie (d'oh!) # ..but the inital idea was to have a cake-style indicator, but that # didn't work as well as the progress bar, but the name stuck.. if size is None: size = EPISODE_LIST_ICON_SIZE surface = cairo.ImageSurface(cairo.FORMAT_ARGB32, size, size) ctx = pangocairo.CairoContext(cairo.Context(surface)) widget = gtk.ProgressBar() style = widget.rc_get_style() bgc = style.bg[gtk.STATE_NORMAL] fgc = style.bg[gtk.STATE_SELECTED] txc = style.text[gtk.STATE_NORMAL] border = 1.5 height = int(size*.4) width = size - 2*border y = (size - height) / 2 + .5 x = border # Background ctx.rectangle(x, y, width, height) ctx.set_source_rgb(bgc.red_float, bgc.green_float, bgc.blue_float) ctx.fill() # Filling if percentage > 0: fill_width = max(1, min(width-2, (width-2)*percentage+.5)) ctx.rectangle(x+1, y+1, fill_width, height-2) ctx.set_source_rgb(fgc.red_float, fgc.green_float, fgc.blue_float) ctx.fill() # Border ctx.rectangle(x, y, width, height) ctx.set_source_rgb(txc.red_float, txc.green_float, txc.blue_float) ctx.set_line_width(1) ctx.stroke() del ctx return surface def draw_text_pill(left_text, right_text, x=0, y=0, border=2, radius=14, font_desc=None): # Create temporary context to calculate the text size ctx = cairo.Context(cairo.ImageSurface(cairo.FORMAT_ARGB32, 1, 1)) # Use GTK+ style of a normal Button widget = gtk.Label() style = widget.rc_get_style() # Padding (in px) at the right edge of the image (for Ubuntu; bug 1533) padding_right = 7 x_border = border*2 if font_desc is None: font_desc = style.font_desc font_desc.set_weight(pango.WEIGHT_BOLD) pango_context = widget.create_pango_context() layout_left = pango.Layout(pango_context) layout_left.set_font_description(font_desc) layout_left.set_text(left_text) layout_right = pango.Layout(pango_context) layout_right.set_font_description(font_desc) layout_right.set_text(right_text) width_left, height_left = layout_left.get_pixel_size() width_right, height_right = layout_right.get_pixel_size() text_height = max(height_left, height_right) image_height = int(y+text_height+border*2) image_width = int(x+width_left+width_right+x_border*4+padding_right) surface = cairo.ImageSurface(cairo.FORMAT_ARGB32, image_width, image_height) ctx = pangocairo.CairoContext(cairo.Context(surface)) # Clip so as to not draw on the right padding (for Ubuntu; bug 1533) ctx.rectangle(0, 0, image_width - padding_right, image_height) ctx.clip() if left_text == '0': left_text = None if right_text == '0': right_text = None left_side_width = width_left + x_border*2 right_side_width = width_right + x_border*2 rect_width = left_side_width + right_side_width rect_height = text_height + border*2 if left_text is not None: draw_rounded_rectangle(ctx,x,y,rect_width,rect_height,radius, left_side_width, RRECT_LEFT_SIDE, right_text is None) linear = cairo.LinearGradient(x, y, x+left_side_width/2, y+rect_height/2) linear.add_color_stop_rgba(0, .8, .8, .8, .5) linear.add_color_stop_rgba(.4, .8, .8, .8, .7) linear.add_color_stop_rgba(.6, .8, .8, .8, .6) linear.add_color_stop_rgba(.9, .8, .8, .8, .8) linear.add_color_stop_rgba(1, .8, .8, .8, .9) ctx.set_source(linear) ctx.fill() xpos, ypos, width_left, height = x+1, y+1, left_side_width, rect_height-2 if right_text is None: width_left -= 2 draw_rounded_rectangle(ctx, xpos, ypos, rect_width, height, radius, width_left, RRECT_LEFT_SIDE, right_text is None) ctx.set_source_rgba(1., 1., 1., .3) ctx.set_line_width(1) ctx.stroke() draw_rounded_rectangle(ctx,x,y,rect_width,rect_height,radius, left_side_width, RRECT_LEFT_SIDE, right_text is None) ctx.set_source_rgba(.2, .2, .2, .6) ctx.set_line_width(1) ctx.stroke() ctx.move_to(x+x_border, y+1+border) ctx.set_source_rgba( 0, 0, 0, 1) ctx.show_layout(layout_left) ctx.move_to(x-1+x_border, y+border) ctx.set_source_rgba( 1, 1, 1, 1) ctx.show_layout(layout_left) if right_text is not None: draw_rounded_rectangle(ctx, x, y, rect_width, rect_height, radius, left_side_width, RRECT_RIGHT_SIDE, left_text is None) linear = cairo.LinearGradient(x+left_side_width, y, x+left_side_width+right_side_width/2, y+rect_height) linear.add_color_stop_rgba(0, .2, .2, .2, .9) linear.add_color_stop_rgba(.4, .2, .2, .2, .8) linear.add_color_stop_rgba(.6, .2, .2, .2, .6) linear.add_color_stop_rgba(.9, .2, .2, .2, .7) linear.add_color_stop_rgba(1, .2, .2, .2, .5) ctx.set_source(linear) ctx.fill() xpos, ypos, width, height = x, y+1, rect_width-1, rect_height-2 if left_text is None: xpos, width = x+1, rect_width-2 draw_rounded_rectangle(ctx, xpos, ypos, width, height, radius, left_side_width, RRECT_RIGHT_SIDE, left_text is None) ctx.set_source_rgba(1., 1., 1., .3) ctx.set_line_width(1) ctx.stroke() draw_rounded_rectangle(ctx, x, y, rect_width, rect_height, radius, left_side_width, RRECT_RIGHT_SIDE, left_text is None) ctx.set_source_rgba(.1, .1, .1, .6) ctx.set_line_width(1) ctx.stroke() ctx.move_to(x+left_side_width+x_border, y+1+border) ctx.set_source_rgba( 0, 0, 0, 1) ctx.show_layout(layout_right) ctx.move_to(x-1+left_side_width+x_border, y+border) ctx.set_source_rgba( 1, 1, 1, 1) ctx.show_layout(layout_right) return surface def draw_cake_pixbuf(percentage, text=None, emblem=None): return cairo_surface_to_pixbuf(draw_cake(percentage, text, emblem)) def draw_pill_pixbuf(left_text, right_text): return cairo_surface_to_pixbuf(draw_text_pill(left_text, right_text)) def cairo_surface_to_pixbuf(s): """ Converts a Cairo surface to a Gtk Pixbuf by encoding it as PNG and using the PixbufLoader. """ sio = StringIO.StringIO() try: s.write_to_png(sio) except: # Write an empty PNG file to the StringIO, so # in case of an error we have "something" to # load. This happens in PyCairo < 1.1.6, see: # http://webcvs.cairographics.org/pycairo/NEWS?view=markup # Thanks to Chris Arnold for reporting this bug sio.write('iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAAZiS0dEAP8A\n/wD/oL2nkwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB9cMEQkqIyxn3RkAAAAZdEVYdENv\nbW1lbnQAQ3JlYXRlZCB3aXRoIEdJTVBXgQ4XAAAADUlEQVQI12NgYGBgAAAABQABXvMqOgAAAABJ\nRU5ErkJggg==\n'.decode('base64')) pbl = gtk.gdk.PixbufLoader() pbl.write(sio.getvalue()) pbl.close() pixbuf = pbl.get_pixbuf() return pixbuf def progressbar_pixbuf(width, height, percentage): COLOR_BG = (.4, .4, .4, .4) COLOR_FG = (.2, .9, .2, 1.) COLOR_FG_HIGH = (1., 1., 1., .5) COLOR_BORDER = (0., 0., 0., 1.) surface = cairo.ImageSurface(cairo.FORMAT_ARGB32, width, height) ctx = cairo.Context(surface) padding = int(float(width)/8.0) bar_width = 2*padding bar_height = height - 2*padding bar_height_fill = bar_height*percentage # Background ctx.rectangle(padding, padding, bar_width, bar_height) ctx.set_source_rgba(*COLOR_BG) ctx.fill() # Foreground ctx.rectangle(padding, padding+bar_height-bar_height_fill, bar_width, bar_height_fill) ctx.set_source_rgba(*COLOR_FG) ctx.fill() ctx.rectangle(padding+bar_width/3, padding+bar_height-bar_height_fill, bar_width/4, bar_height_fill) ctx.set_source_rgba(*COLOR_FG_HIGH) ctx.fill() # Border ctx.rectangle(padding-.5, padding-.5, bar_width+1, bar_height+1) ctx.set_source_rgba(*COLOR_BORDER) ctx.set_line_width(1.) ctx.stroke() return cairo_surface_to_pixbuf(surface) gpodder-3.9.0/src/gpodder/gtkui/macosx.py0000644000016000001710000001065212654461624021501 0ustar jenkinsjenkins00000000000000# -*- coding: utf-8 -*- # # gPodder - A media aggregator and podcast client # Copyright (c) 2005-2016 Thomas Perl and the gPodder Team # # gPodder is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 3 of the License, or # (at your option) any later version. # # gPodder is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . # import struct import sys from gpodder import util def aeKeyword(fourCharCode): """transform four character code into a long""" return struct.unpack('I', fourCharCode)[0] # for the kCoreEventClass, kAEOpenDocuments, ... constants # comes with macpython from Carbon.AppleEvents import * # all this depends on pyObjc (http://pyobjc.sourceforge.net/). # There may be a way to achieve something equivalent with only # what's in MacPython (see for instance http://mail.python.org/pipermail/pythonmac-sig/2006-May/017373.html) # but I couldn't achieve this ! # Also note that it only works when gPodder is not running ! # For some reason I don't get the events afterwards... try: from AppKit import NSObject from AppKit import NSAppleEventManager from AppKit import NSAppleEventDescriptor class gPodderEventHandler(NSObject): """ handles Apple Events for : - Open With... (and dropping a file on the icon) - "subscribe to podcast" from firefox The code was largely inspired by gedit-osx-delegate.m, from the gedit project (see http://git.gnome.org/browse/gedit/tree/gedit/osx/gedit-osx-delegate.m?id=GEDIT_2_28_3). """ # keeps a reference to the gui.gPodder class gp = None def register(self, gp): """ register all handlers with NSAppleEventManager """ self.gp = gp aem = NSAppleEventManager.sharedAppleEventManager() aem.setEventHandler_andSelector_forEventClass_andEventID_( self, 'openFileEvent:reply:', aeKeyword(kCoreEventClass), aeKeyword(kAEOpenDocuments)) aem.setEventHandler_andSelector_forEventClass_andEventID_( self, 'subscribeEvent:reply:', aeKeyword('GURL'), aeKeyword('GURL')) def openFileEvent_reply_(self, event, reply): """ handles an 'Open With...' event""" urls = [] filelist = event.paramDescriptorForKeyword_(aeKeyword(keyDirectObject)) numberOfItems = filelist.numberOfItems() for i in range(1,numberOfItems+1): fileAliasDesc = filelist.descriptorAtIndex_(i) fileURLDesc = fileAliasDesc.coerceToDescriptorType_(aeKeyword(typeFileURL)) fileURLData = fileURLDesc.data() url = buffer(fileURLData.bytes(),0,fileURLData.length()) url = str(url) util.idle_add(self.gp.on_item_import_from_file_activate, None,url) urls.append(str(url)) print >>sys.stderr,("open Files :",urls) result = NSAppleEventDescriptor.descriptorWithInt32_(42) reply.setParamDescriptor_forKeyword_(result, aeKeyword('----')) def subscribeEvent_reply_(self, event, reply): """ handles a 'Subscribe to...' event""" filelist = event.paramDescriptorForKeyword_(aeKeyword(keyDirectObject)) fileURLData = filelist.data() url = buffer(fileURLData.bytes(),0,fileURLData.length()) url = str(url) print >>sys.stderr,("Subscribe to :"+url) util.idle_add(self.gp.subscribe_to_url, url) result = NSAppleEventDescriptor.descriptorWithInt32_(42) reply.setParamDescriptor_forKeyword_(result, aeKeyword('----')) # global reference to the handler (mustn't be destroyed) handler = gPodderEventHandler.alloc().init() except ImportError: print >> sys.stderr, """ Warning: pyobjc not found. Disabling "Subscribe with" events handling """ handler = None def register_handlers(gp): """ register the events handlers (and keep a reference to gPodder's instance)""" if handler is not None: handler.register(gp) gpodder-3.9.0/src/gpodder/gtkui/base.py0000644000016000001710000001120612654461624021115 0ustar jenkinsjenkins00000000000000# -*- coding: utf-8 -*- """ UI Base Module for GtkBuilder Based on SimpleGladeApp.py Copyright (C) 2004 Sandino Flores Moreno """ # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public # License as published by the Free Software Foundation; either # version 2.1 of the License, or (at your option) any later version. # # This library is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public # License along with this library; if not, write to the Free Software # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 # USA import os import sys import re import tokenize import gtk class GtkBuilderWidget(object): def __init__(self, ui_folders, textdomain, **kwargs): """ Loads the UI file from the specified folder (with translations from the textdomain) and initializes attributes. ui_folders: List of folders with GtkBuilder .ui files in search order textdomain: The textdomain to be used for translating strings **kwargs: Keyword arguments will be set as attributes to this window """ for key, value in kwargs.items(): setattr(self, key, value) self.builder = gtk.Builder() self.builder.set_translation_domain(textdomain) #print >>sys.stderr, 'Creating new from file', self.__class__.__name__ ui_file = '%s.ui' % self.__class__.__name__.lower() # Search for the UI file in the UI folders, stop after first match for ui_folder in ui_folders: filename = os.path.join(ui_folder, ui_file) if os.path.exists(filename): self.builder.add_from_file(filename) break self.builder.connect_signals(self) self.set_attributes() self.new() def set_attributes(self): """ Convert widget names to attributes of this object. It means a widget named vbox-dialog in GtkBuilder is refered using self.vbox_dialog in the code. """ for widget in self.builder.get_objects(): # Just to be safe - every widget from the builder is buildable if not isinstance(widget, gtk.Buildable): continue # The following call looks ugly, but see Gnome bug 591085 widget_name = gtk.Buildable.get_name(widget) widget_api_name = '_'.join(re.findall(tokenize.Name, widget_name)) if hasattr(self, widget_api_name): raise AttributeError("instance %s already has an attribute %s" % (self,widget_api_name)) else: setattr(self, widget_api_name, widget) @property def main_window(self): """Returns the main window of this GtkBuilderWidget""" return getattr(self, self.__class__.__name__) def new(self): """ Method called when the user interface is loaded and ready to be used. At this moment, the widgets are loaded and can be refered as self.widget_name """ pass def main(self): """ Starts the main loop of processing events. The default implementation calls gtk.main() Useful for applications that needs a non gtk main loop. For example, applications based on gstreamer needs to override this method with gst.main() Do not directly call this method in your programs. Use the method run() instead. """ gtk.main() def quit(self): """ Quit processing events. The default implementation calls gtk.main_quit() Useful for applications that needs a non gtk main loop. For example, applications based on gstreamer needs to override this method with gst.main_quit() """ gtk.main_quit() def run(self): """ Starts the main loop of processing events checking for Control-C. The default implementation checks wheter a Control-C is pressed, then calls on_keyboard_interrupt(). Use this method for starting programs. """ try: self.main() except KeyboardInterrupt: self.on_keyboard_interrupt() def on_keyboard_interrupt(self): """ This method is called by the default implementation of run() after a program is finished by pressing Control-C. """ pass gpodder-3.9.0/src/gpodder/gtkui/download.py0000644000016000001710000001346712654461624022025 0ustar jenkinsjenkins00000000000000# -*- coding: utf-8 -*- # # gPodder - A media aggregator and podcast client # Copyright (c) 2005-2016 Thomas Perl and the gPodder Team # # gPodder is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 3 of the License, or # (at your option) any later version. # # gPodder is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . # # # gpodder.gtkui.download -- Download management in GUIs (2009-08-24) # Based on code from gpodder.services (thp, 2007-08-24) # import gpodder from gpodder import util from gpodder import download import gtk import cgi import collections _ = gpodder.gettext class DownloadStatusModel(gtk.ListStore): # Symbolic names for our columns, so we know what we're up to C_TASK, C_NAME, C_URL, C_PROGRESS, C_PROGRESS_TEXT, C_ICON_NAME = range(6) SEARCH_COLUMNS = (C_NAME, C_URL) def __init__(self): gtk.ListStore.__init__(self, object, str, str, int, str, str) # Set up stock icon IDs for tasks self._status_ids = collections.defaultdict(lambda: None) self._status_ids[download.DownloadTask.DOWNLOADING] = gtk.STOCK_GO_DOWN self._status_ids[download.DownloadTask.DONE] = gtk.STOCK_APPLY self._status_ids[download.DownloadTask.FAILED] = gtk.STOCK_STOP self._status_ids[download.DownloadTask.CANCELLED] = gtk.STOCK_CANCEL self._status_ids[download.DownloadTask.PAUSED] = gtk.STOCK_MEDIA_PAUSE def _format_message(self, episode, message, podcast): episode = cgi.escape(episode) podcast = cgi.escape(podcast) return '%s\n%s - %s' % (episode, message, podcast) def request_update(self, iter, task=None): if task is None: # Ongoing update request from UI - get task from model task = self.get_value(iter, self.C_TASK) else: # Initial update request - update non-changing fields self.set(iter, self.C_TASK, task, self.C_URL, task.url) if task.status == task.FAILED: status_message = '%s: %s' % (\ task.STATUS_MESSAGE[task.status], \ task.error_message) elif task.status == task.DOWNLOADING: status_message = '%s (%.0f%%, %s/s)' % (\ task.STATUS_MESSAGE[task.status], \ task.progress*100, \ util.format_filesize(task.speed)) else: status_message = task.STATUS_MESSAGE[task.status] if task.progress > 0 and task.progress < 1: current = util.format_filesize(task.progress*task.total_size, digits=1) total = util.format_filesize(task.total_size, digits=1) # Remove unit from current if same as in total # (does: "12 MiB / 24 MiB" => "12 / 24 MiB") current = current.split() if current[-1] == total.split()[-1]: current.pop() current = ' '.join(current) progress_message = ' / '.join((current, total)) elif task.total_size > 0: progress_message = util.format_filesize(task.total_size, \ digits=1) else: progress_message = ('unknown size') self.set(iter, self.C_NAME, self._format_message(task.episode.title, status_message, task.episode.channel.title), self.C_PROGRESS, 100.*task.progress, \ self.C_PROGRESS_TEXT, progress_message, \ self.C_ICON_NAME, self._status_ids[task.status]) def __add_new_task(self, task): iter = self.append() self.request_update(iter, task) def register_task(self, task): util.idle_add(self.__add_new_task, task) def tell_all_tasks_to_quit(self): for row in self: task = row[DownloadStatusModel.C_TASK] if task is not None: # Pause currently-running (and queued) downloads if task.status in (task.QUEUED, task.DOWNLOADING): task.status = task.PAUSED # Delete cancelled and failed downloads if task.status in (task.CANCELLED, task.FAILED): task.removed_from_list() def are_downloads_in_progress(self): """ Returns True if there are any downloads in the QUEUED or DOWNLOADING status, False otherwise. """ for row in self: task = row[DownloadStatusModel.C_TASK] if task is not None and \ task.status in (task.DOWNLOADING, \ task.QUEUED): return True return False class DownloadTaskMonitor(object): """A helper class that abstracts download events""" def __init__(self, episode, on_can_resume, on_can_pause, on_finished): self.episode = episode self._status = None self._on_can_resume = on_can_resume self._on_can_pause = on_can_pause self._on_finished = on_finished def task_updated(self, task): if self.episode.url == task.episode.url and self._status != task.status: if task.status in (task.DONE, task.FAILED, task.CANCELLED): self._on_finished() elif task.status == task.PAUSED: self._on_can_resume() elif task.status in (task.QUEUED, task.DOWNLOADING): self._on_can_pause() self._status = task.status gpodder-3.9.0/src/gpodder/gtkui/model.py0000644000016000001710000007361212654461624021314 0ustar jenkinsjenkins00000000000000# -*- coding: utf-8 -*- # # gPodder - A media aggregator and podcast client # Copyright (c) 2005-2016 Thomas Perl and the gPodder Team # # gPodder is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 3 of the License, or # (at your option) any later version. # # gPodder is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . # # # gpodder.gtkui.model - GUI model classes for gPodder (2009-08-13) # Based on code from libpodcasts.py (thp, 2005-10-29) # import gpodder _ = gpodder.gettext from gpodder import util from gpodder import model from gpodder import query from gpodder import coverart import logging logger = logging.getLogger(__name__) from gpodder.gtkui import draw import os import gtk import gobject import cgi import re try: import gio have_gio = True except ImportError: have_gio = False # ---------------------------------------------------------- class GEpisode(model.PodcastEpisode): __slots__ = () @property def title_markup(self): return '%s\n%s' % (cgi.escape(self.title), cgi.escape(self.channel.title)) @property def markup_new_episodes(self): if self.file_size > 0: length_str = '%s; ' % util.format_filesize(self.file_size) else: length_str = '' return ('%s\n%s'+_('released %s')+ \ '; '+_('from %s')+'') % (\ cgi.escape(re.sub('\s+', ' ', self.title)), \ cgi.escape(length_str), \ cgi.escape(self.pubdate_prop), \ cgi.escape(re.sub('\s+', ' ', self.channel.title))) @property def markup_delete_episodes(self): if self.total_time and self.current_position: played_string = self.get_play_info_string() elif not self.is_new: played_string = _('played') else: played_string = _('unplayed') downloaded_string = self.get_age_string() if not downloaded_string: downloaded_string = _('today') return ('%s\n%s; %s; '+_('downloaded %s')+ \ '; '+_('from %s')+'') % (\ cgi.escape(self.title), \ cgi.escape(util.format_filesize(self.file_size)), \ cgi.escape(played_string), \ cgi.escape(downloaded_string), \ cgi.escape(self.channel.title)) class GPodcast(model.PodcastChannel): __slots__ = () EpisodeClass = GEpisode class Model(model.Model): PodcastClass = GPodcast # ---------------------------------------------------------- # Singleton indicator if a row is a section class SeparatorMarker(object): pass class SectionMarker(object): pass class EpisodeListModel(gtk.ListStore): C_URL, C_TITLE, C_FILESIZE_TEXT, C_EPISODE, C_STATUS_ICON, \ C_PUBLISHED_TEXT, C_DESCRIPTION, C_TOOLTIP, \ C_VIEW_SHOW_UNDELETED, C_VIEW_SHOW_DOWNLOADED, \ C_VIEW_SHOW_UNPLAYED, C_FILESIZE, C_PUBLISHED, \ C_TIME, C_TIME_VISIBLE, C_TOTAL_TIME, \ C_LOCKED = range(17) VIEW_ALL, VIEW_UNDELETED, VIEW_DOWNLOADED, VIEW_UNPLAYED = range(4) # In which steps the UI is updated for "loading" animations _UI_UPDATE_STEP = .03 # Steps for the "downloading" icon progress PROGRESS_STEPS = 20 def __init__(self, config, on_filter_changed=lambda has_episodes: None): gtk.ListStore.__init__(self, str, str, str, object, \ str, str, str, str, bool, bool, bool, \ gobject.TYPE_INT64, gobject.TYPE_INT64, str, bool, gobject.TYPE_INT64, bool) self._config = config # Callback for when the filter / list changes, gets one parameter # (has_episodes) that is True if the list has any episodes self._on_filter_changed = on_filter_changed # Filter to allow hiding some episodes self._filter = self.filter_new() self._sorter = gtk.TreeModelSort(self._filter) self._view_mode = self.VIEW_ALL self._search_term = None self._search_term_eql = None self._filter.set_visible_func(self._filter_visible_func) # Are we currently showing the "all episodes" view? self._all_episodes_view = False self.ICON_AUDIO_FILE = 'audio-x-generic' self.ICON_VIDEO_FILE = 'video-x-generic' self.ICON_IMAGE_FILE = 'image-x-generic' self.ICON_GENERIC_FILE = 'text-x-generic' self.ICON_DOWNLOADING = gtk.STOCK_GO_DOWN self.ICON_DELETED = gtk.STOCK_DELETE if 'KDE_FULL_SESSION' in os.environ: # Workaround until KDE adds all the freedesktop icons # See https://bugs.kde.org/show_bug.cgi?id=233505 and # http://gpodder.org/bug/553 self.ICON_DELETED = 'archive-remove' def _format_filesize(self, episode): if episode.file_size > 0: return util.format_filesize(episode.file_size, digits=1) else: return None def _filter_visible_func(self, model, iter): # If searching is active, set visibility based on search text if self._search_term is not None: episode = model.get_value(iter, self.C_EPISODE) if episode is None: return False try: return self._search_term_eql.match(episode) except Exception, e: return True if self._view_mode == self.VIEW_ALL: return True elif self._view_mode == self.VIEW_UNDELETED: return model.get_value(iter, self.C_VIEW_SHOW_UNDELETED) elif self._view_mode == self.VIEW_DOWNLOADED: return model.get_value(iter, self.C_VIEW_SHOW_DOWNLOADED) elif self._view_mode == self.VIEW_UNPLAYED: return model.get_value(iter, self.C_VIEW_SHOW_UNPLAYED) return True def get_filtered_model(self): """Returns a filtered version of this episode model The filtered version should be displayed in the UI, as this model can have some filters set that should be reflected in the UI. """ return self._sorter def has_episodes(self): """Returns True if episodes are visible (filtered) If episodes are visible with the current filter applied, return True (otherwise return False). """ return bool(len(self._filter)) def set_view_mode(self, new_mode): """Sets a new view mode for this model After setting the view mode, the filtered model might be updated to reflect the new mode.""" if self._view_mode != new_mode: self._view_mode = new_mode self._filter.refilter() self._on_filter_changed(self.has_episodes()) def get_view_mode(self): """Returns the currently-set view mode""" return self._view_mode def set_search_term(self, new_term): if self._search_term != new_term: self._search_term = new_term self._search_term_eql = query.UserEQL(new_term) self._filter.refilter() self._on_filter_changed(self.has_episodes()) def get_search_term(self): return self._search_term def _format_description(self, episode, include_description=False): title = episode.trimmed_title a, b = '', '' if episode.state != gpodder.STATE_DELETED and episode.is_new: a, b = '', '' if include_description and self._all_episodes_view: return '%s%s%s\n%s' % (a, cgi.escape(title), b, _('from %s') % cgi.escape(episode.channel.title)) elif include_description: description = episode.one_line_description() if description.startswith(title): description = description[len(title):].strip() return '%s%s%s\n%s' % (a, cgi.escape(title), b, cgi.escape(description)) else: return ''.join((a, cgi.escape(title), b)) def replace_from_channel(self, channel, include_description=False, treeview=None): """ Add episode from the given channel to this model. Downloading should be a callback. include_description should be a boolean value (True if description is to be added to the episode row, or False if not) """ # Remove old episodes in the list store self.clear() if treeview is not None: util.idle_add(treeview.queue_draw) self._all_episodes_view = getattr(channel, 'ALL_EPISODES_PROXY', False) # Avoid gPodder bug 1291 if channel is None: episodes = [] else: episodes = channel.get_all_episodes() if not isinstance(episodes, list): episodes = list(episodes) count = len(episodes) for position, episode in enumerate(episodes): iter = self.append((episode.url, \ episode.title, \ self._format_filesize(episode), \ episode, \ None, \ episode.cute_pubdate(), \ '', \ '', \ True, \ True, \ True, \ episode.file_size, \ episode.published, \ episode.get_play_info_string(), \ bool(episode.total_time), \ episode.total_time, \ episode.archive)) self.update_by_iter(iter, include_description) self._on_filter_changed(self.has_episodes()) def update_all(self, include_description=False): for row in self: self.update_by_iter(row.iter, include_description) def update_by_urls(self, urls, include_description=False): for row in self: if row[self.C_URL] in urls: self.update_by_iter(row.iter, include_description) def update_by_filter_iter(self, iter, include_description=False): # Convenience function for use by "outside" methods that use iters # from the filtered episode list model (i.e. all UI things normally) iter = self._sorter.convert_iter_to_child_iter(None, iter) self.update_by_iter(self._filter.convert_iter_to_child_iter(iter), include_description) def update_by_iter(self, iter, include_description=False): episode = self.get_value(iter, self.C_EPISODE) show_bullet = False show_padlock = False show_missing = False status_icon = None tooltip = [] view_show_undeleted = True view_show_downloaded = False view_show_unplayed = False icon_theme = gtk.icon_theme_get_default() if episode.downloading: tooltip.append('%s %d%%' % (_('Downloading'), int(episode.download_task.progress*100))) index = int(self.PROGRESS_STEPS*episode.download_task.progress) status_icon = 'gpodder-progress-%d' % index view_show_downloaded = True view_show_unplayed = True else: if episode.state == gpodder.STATE_DELETED: tooltip.append(_('Deleted')) status_icon = self.ICON_DELETED view_show_undeleted = False elif episode.state == gpodder.STATE_NORMAL and \ episode.is_new: tooltip.append(_('New episode')) view_show_downloaded = True view_show_unplayed = True elif episode.state == gpodder.STATE_DOWNLOADED: tooltip = [] view_show_downloaded = True view_show_unplayed = episode.is_new show_bullet = episode.is_new show_padlock = episode.archive show_missing = not episode.file_exists() filename = episode.local_filename(create=False, check_only=True) file_type = episode.file_type() if file_type == 'audio': tooltip.append(_('Downloaded episode')) status_icon = self.ICON_AUDIO_FILE elif file_type == 'video': tooltip.append(_('Downloaded video episode')) status_icon = self.ICON_VIDEO_FILE elif file_type == 'image': tooltip.append(_('Downloaded image')) status_icon = self.ICON_IMAGE_FILE else: tooltip.append(_('Downloaded file')) status_icon = self.ICON_GENERIC_FILE # Try to find a themed icon for this file if filename is not None and have_gio: file = gio.File(filename) if file.query_exists(): file_info = file.query_info('*') icon = file_info.get_icon() for icon_name in icon.get_names(): if icon_theme.has_icon(icon_name): status_icon = icon_name break if show_missing: tooltip.append(_('missing file')) else: if show_bullet: if file_type == 'image': tooltip.append(_('never displayed')) elif file_type in ('audio', 'video'): tooltip.append(_('never played')) else: tooltip.append(_('never opened')) else: if file_type == 'image': tooltip.append(_('displayed')) elif file_type in ('audio', 'video'): tooltip.append(_('played')) else: tooltip.append(_('opened')) if show_padlock: tooltip.append(_('deletion prevented')) if episode.total_time > 0 and episode.current_position: tooltip.append('%d%%' % (100.*float(episode.current_position)/float(episode.total_time),)) if episode.total_time: total_time = util.format_time(episode.total_time) if total_time: tooltip.append(total_time) tooltip = ', '.join(tooltip) description = self._format_description(episode, include_description) self.set(iter, \ self.C_STATUS_ICON, status_icon, \ self.C_VIEW_SHOW_UNDELETED, view_show_undeleted, \ self.C_VIEW_SHOW_DOWNLOADED, view_show_downloaded, \ self.C_VIEW_SHOW_UNPLAYED, view_show_unplayed, \ self.C_DESCRIPTION, description, \ self.C_TOOLTIP, tooltip, \ self.C_TIME, episode.get_play_info_string(), \ self.C_TIME_VISIBLE, bool(episode.total_time), \ self.C_TOTAL_TIME, episode.total_time, \ self.C_LOCKED, episode.archive, \ self.C_FILESIZE_TEXT, self._format_filesize(episode), \ self.C_FILESIZE, episode.file_size) class PodcastChannelProxy(object): ALL_EPISODES_PROXY = True def __init__(self, db, config, channels): self._db = db self._config = config self.channels = channels self.title = _('All episodes') self.description = _('from all podcasts') #self.parse_error = '' self.url = '' self.section = '' self.id = None self.cover_file = coverart.CoverDownloader.ALL_EPISODES_ID self.cover_url = None self.auth_username = None self.auth_password = None self.pause_subscription = False self.sync_to_mp3_player = False self.auto_archive_episodes = False def get_statistics(self): # Get the total statistics for all channels from the database return self._db.get_podcast_statistics() def get_all_episodes(self): """Returns a generator that yields every episode""" return Model.sort_episodes_by_pubdate((e for c in self.channels for e in c.get_all_episodes()), True) class PodcastListModel(gtk.ListStore): C_URL, C_TITLE, C_DESCRIPTION, C_PILL, C_CHANNEL, \ C_COVER, C_ERROR, C_PILL_VISIBLE, \ C_VIEW_SHOW_UNDELETED, C_VIEW_SHOW_DOWNLOADED, \ C_VIEW_SHOW_UNPLAYED, C_HAS_EPISODES, C_SEPARATOR, \ C_DOWNLOADS, C_COVER_VISIBLE, C_SECTION = range(16) SEARCH_COLUMNS = (C_TITLE, C_DESCRIPTION, C_SECTION) @classmethod def row_separator_func(cls, model, iter): return model.get_value(iter, cls.C_SEPARATOR) def __init__(self, cover_downloader): gtk.ListStore.__init__(self, str, str, str, gtk.gdk.Pixbuf, \ object, gtk.gdk.Pixbuf, str, bool, bool, bool, bool, \ bool, bool, int, bool, str) # Filter to allow hiding some episodes self._filter = self.filter_new() self._view_mode = -1 self._search_term = None self._filter.set_visible_func(self._filter_visible_func) self._cover_cache = {} self._max_image_side = 40 self._cover_downloader = cover_downloader self.ICON_DISABLED = 'gtk-media-pause' def _filter_visible_func(self, model, iter): # If searching is active, set visibility based on search text if self._search_term is not None: if model.get_value(iter, self.C_CHANNEL) == SectionMarker: return True key = self._search_term.lower() columns = (model.get_value(iter, c) for c in self.SEARCH_COLUMNS) return any((key in c.lower() for c in columns if c is not None)) if model.get_value(iter, self.C_SEPARATOR): return True elif self._view_mode == EpisodeListModel.VIEW_ALL: return model.get_value(iter, self.C_HAS_EPISODES) elif self._view_mode == EpisodeListModel.VIEW_UNDELETED: return model.get_value(iter, self.C_VIEW_SHOW_UNDELETED) elif self._view_mode == EpisodeListModel.VIEW_DOWNLOADED: return model.get_value(iter, self.C_VIEW_SHOW_DOWNLOADED) elif self._view_mode == EpisodeListModel.VIEW_UNPLAYED: return model.get_value(iter, self.C_VIEW_SHOW_UNPLAYED) return True def get_filtered_model(self): """Returns a filtered version of this episode model The filtered version should be displayed in the UI, as this model can have some filters set that should be reflected in the UI. """ return self._filter def set_view_mode(self, new_mode): """Sets a new view mode for this model After setting the view mode, the filtered model might be updated to reflect the new mode.""" if self._view_mode != new_mode: self._view_mode = new_mode self._filter.refilter() def get_view_mode(self): """Returns the currently-set view mode""" return self._view_mode def set_search_term(self, new_term): if self._search_term != new_term: self._search_term = new_term self._filter.refilter() def get_search_term(self): return self._search_term def enable_separators(self, channeltree): channeltree.set_row_separator_func(self._show_row_separator) def _show_row_separator(self, model, iter): return model.get_value(iter, self.C_SEPARATOR) def _resize_pixbuf_keep_ratio(self, url, pixbuf): """ Resizes a GTK Pixbuf but keeps its aspect ratio. Returns None if the pixbuf does not need to be resized or the newly resized pixbuf if it does. """ changed = False result = None if url in self._cover_cache: return self._cover_cache[url] # Resize if too wide if pixbuf.get_width() > self._max_image_side: f = float(self._max_image_side)/pixbuf.get_width() (width, height) = (int(pixbuf.get_width()*f), int(pixbuf.get_height()*f)) pixbuf = pixbuf.scale_simple(width, height, gtk.gdk.INTERP_BILINEAR) changed = True # Resize if too high if pixbuf.get_height() > self._max_image_side: f = float(self._max_image_side)/pixbuf.get_height() (width, height) = (int(pixbuf.get_width()*f), int(pixbuf.get_height()*f)) pixbuf = pixbuf.scale_simple(width, height, gtk.gdk.INTERP_BILINEAR) changed = True if changed: self._cover_cache[url] = pixbuf result = pixbuf return result def _resize_pixbuf(self, url, pixbuf): if pixbuf is None: return None return self._resize_pixbuf_keep_ratio(url, pixbuf) or pixbuf def _overlay_pixbuf(self, pixbuf, icon): try: icon_theme = gtk.icon_theme_get_default() emblem = icon_theme.load_icon(icon, self._max_image_side/2, 0) (width, height) = (emblem.get_width(), emblem.get_height()) xpos = pixbuf.get_width() - width ypos = pixbuf.get_height() - height if ypos < 0: # need to resize overlay for none standard icon size emblem = icon_theme.load_icon(icon, pixbuf.get_height() - 1, 0) (width, height) = (emblem.get_width(), emblem.get_height()) xpos = pixbuf.get_width() - width ypos = pixbuf.get_height() - height emblem.composite(pixbuf, xpos, ypos, width, height, xpos, ypos, 1, 1, gtk.gdk.INTERP_BILINEAR, 255) except: pass return pixbuf def _get_cover_image(self, channel, add_overlay=False): if self._cover_downloader is None: return None pixbuf = self._cover_downloader.get_cover(channel, avoid_downloading=True) pixbuf_overlay = self._resize_pixbuf(channel.url, pixbuf) if add_overlay and channel.pause_subscription: pixbuf_overlay = self._overlay_pixbuf(pixbuf_overlay, self.ICON_DISABLED) pixbuf_overlay.saturate_and_pixelate(pixbuf_overlay, 0.0, False) return pixbuf_overlay def _get_pill_image(self, channel, count_downloaded, count_unplayed): if count_unplayed > 0 or count_downloaded > 0: return draw.draw_pill_pixbuf(str(count_unplayed), str(count_downloaded)) else: return None def _format_description(self, channel, total, deleted, \ new, downloaded, unplayed): title_markup = cgi.escape(channel.title) if not channel.pause_subscription: description_markup = cgi.escape(util.get_first_line(channel.description) or ' ') else: description_markup = cgi.escape(_('Subscription paused')) d = [] if new: d.append('') d.append(title_markup) if new: d.append('') if description_markup.strip(): return ''.join(d+['\n', '', description_markup, '']) else: return ''.join(d) def _format_error(self, channel): #if channel.parse_error: # return str(channel.parse_error) #else: # return None return None def set_channels(self, db, config, channels): # Clear the model and update the list of podcasts self.clear() def channel_to_row(channel, add_overlay=False): return (channel.url, '', '', None, channel, self._get_cover_image(channel, add_overlay), '', True, True, True, True, True, False, 0, True, '') if config.podcast_list_view_all and channels: all_episodes = PodcastChannelProxy(db, config, channels) iter = self.append(channel_to_row(all_episodes)) self.update_by_iter(iter) # Separator item if not config.podcast_list_sections: self.append(('', '', '', None, SeparatorMarker, None, '', True, True, True, True, True, True, 0, False, '')) def key_func(pair): section, podcast = pair return (section, model.Model.podcast_sort_key(podcast)) if config.podcast_list_sections: def convert(channels): for channel in channels: yield (channel.group_by, channel) else: def convert(channels): for channel in channels: yield (None, channel) added_sections = [] old_section = None for section, channel in sorted(convert(channels), key=key_func): if old_section != section: it = self.append(('-', section, '', None, SectionMarker, None, '', True, True, True, True, True, False, 0, False, section)) added_sections.append(it) old_section = section iter = self.append(channel_to_row(channel, True)) self.update_by_iter(iter) # Update section header stats only after all podcasts # have been added to the list to get the stats right for it in added_sections: self.update_by_iter(it) def get_filter_path_from_url(self, url): # Return the path of the filtered model for a given URL child_path = self.get_path_from_url(url) if child_path is None: return None else: return self._filter.convert_child_path_to_path(child_path) def get_path_from_url(self, url): # Return the tree model path for a given URL if url is None: return None for row in self: if row[self.C_URL] == url: return row.path return None def update_first_row(self): # Update the first row in the model (for "all episodes" updates) self.update_by_iter(self.get_iter_first()) def update_by_urls(self, urls): # Given a list of URLs, update each matching row for row in self: if row[self.C_URL] in urls: self.update_by_iter(row.iter) def iter_is_first_row(self, iter): iter = self._filter.convert_iter_to_child_iter(iter) path = self.get_path(iter) return (path == (0,)) def update_by_filter_iter(self, iter): self.update_by_iter(self._filter.convert_iter_to_child_iter(iter)) def update_all(self): for row in self: self.update_by_iter(row.iter) def update_sections(self): for row in self: if row[self.C_CHANNEL] is SectionMarker: self.update_by_iter(row.iter) def update_by_iter(self, iter): if iter is None: return # Given a GtkTreeIter, update volatile information channel = self.get_value(iter, self.C_CHANNEL) if channel is SectionMarker: section = self.get_value(iter, self.C_TITLE) # This row is a section header - update its visibility flags channels = [c for c in (row[self.C_CHANNEL] for row in self) if isinstance(c, GPodcast) and c.section == section] # Calculate the stats over all podcasts of this section total, deleted, new, downloaded, unplayed = map(sum, zip(*[c.get_statistics() for c in channels])) # We could customized the section header here with the list # of channels and their stats (i.e. add some "new" indicator) description = ' %s' % ( cgi.escape(section)) self.set(iter, self.C_DESCRIPTION, description, self.C_SECTION, section, self.C_VIEW_SHOW_UNDELETED, total - deleted > 0, self.C_VIEW_SHOW_DOWNLOADED, downloaded + new > 0, self.C_VIEW_SHOW_UNPLAYED, unplayed + new > 0) if (not isinstance(channel, GPodcast) and not isinstance(channel, PodcastChannelProxy)): return total, deleted, new, downloaded, unplayed = channel.get_statistics() description = self._format_description(channel, total, deleted, new, \ downloaded, unplayed) pill_image = self._get_pill_image(channel, downloaded, unplayed) self.set(iter, \ self.C_TITLE, channel.title, \ self.C_DESCRIPTION, description, \ self.C_SECTION, channel.section, \ self.C_ERROR, self._format_error(channel), \ self.C_PILL, pill_image, \ self.C_PILL_VISIBLE, pill_image != None, \ self.C_VIEW_SHOW_UNDELETED, total - deleted > 0, \ self.C_VIEW_SHOW_DOWNLOADED, downloaded + new > 0, \ self.C_VIEW_SHOW_UNPLAYED, unplayed + new > 0, \ self.C_HAS_EPISODES, total > 0, \ self.C_DOWNLOADS, downloaded) def clear_cover_cache(self, podcast_url): if podcast_url in self._cover_cache: logger.info('Clearing cover from cache: %s', podcast_url) del self._cover_cache[podcast_url] def add_cover_by_channel(self, channel, pixbuf): # Remove older images from cache self.clear_cover_cache(channel.url) # Resize and add the new cover image pixbuf = self._resize_pixbuf(channel.url, pixbuf) if channel.pause_subscription: pixbuf = self._overlay_pixbuf(pixbuf, self.ICON_DISABLED) pixbuf.saturate_and_pixelate(pixbuf, 0.0, False) for row in self: if row[self.C_URL] == channel.url: row[self.C_COVER] = pixbuf break gpodder-3.9.0/src/gpodder/gtkui/main.py0000644000016000001710000045264112654461624021143 0ustar jenkinsjenkins00000000000000# -*- coding: utf-8 -*- # # gPodder - A media aggregator and podcast client # Copyright (c) 2005-2016 Thomas Perl and the gPodder Team # # gPodder is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 3 of the License, or # (at your option) any later version. # # gPodder is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . # import os import platform import gtk import gtk.gdk import gobject import pango import random import sys import shutil import subprocess import glob import time import threading import tempfile import collections import urllib import cgi import gpodder import dbus import dbus.service import dbus.mainloop import dbus.glib from gpodder import core from gpodder import feedcore from gpodder import util from gpodder import opml from gpodder import download from gpodder import my from gpodder import youtube from gpodder import player from gpodder import common import logging logger = logging.getLogger(__name__) _ = gpodder.gettext N_ = gpodder.ngettext from gpodder.gtkui.model import Model from gpodder.gtkui.model import PodcastListModel from gpodder.gtkui.model import EpisodeListModel from gpodder.gtkui.config import UIConfig from gpodder.gtkui.services import CoverDownloader from gpodder.gtkui.widgets import SimpleMessageArea from gpodder.gtkui.desktopfile import UserAppsReader from gpodder.gtkui.draw import draw_text_box_centered, draw_cake_pixbuf from gpodder.gtkui.draw import EPISODE_LIST_ICON_SIZE from gpodder.gtkui.interface.common import BuilderWidget from gpodder.gtkui.interface.common import TreeViewHelper from gpodder.gtkui.interface.addpodcast import gPodderAddPodcast from gpodder.gtkui.download import DownloadStatusModel from gpodder.gtkui.desktop.welcome import gPodderWelcome from gpodder.gtkui.desktop.channel import gPodderChannel from gpodder.gtkui.desktop.preferences import gPodderPreferences from gpodder.gtkui.desktop.episodeselector import gPodderEpisodeSelector from gpodder.gtkui.desktop.podcastdirectory import gPodderPodcastDirectory from gpodder.gtkui.interface.progress import ProgressIndicator from gpodder.gtkui.desktop.sync import gPodderSyncUI from gpodder.gtkui import shownotes from gpodder.dbusproxy import DBusPodcastsProxy from gpodder import extensions macapp = None if gpodder.ui.osx and getattr(gtk.gdk, 'WINDOWING', 'x11') == 'quartz': try: from gtkosx_application import * macapp = Application() except ImportError: print >> sys.stderr, """ Warning: gtk-mac-integration not found, disabling native menus """ class gPodder(BuilderWidget, dbus.service.Object): # Width (in pixels) of episode list icon EPISODE_LIST_ICON_WIDTH = 40 def __init__(self, bus_name, gpodder_core, options): dbus.service.Object.__init__(self, object_path=gpodder.dbus_gui_object_path, bus_name=bus_name) self.podcasts_proxy = DBusPodcastsProxy(lambda: self.channels, self.on_itemUpdate_activate, self.playback_episodes, self.download_episode_list, self.episode_object_by_uri, bus_name) self.core = gpodder_core self.config = self.core.config self.db = self.core.db self.model = self.core.model self.options = options BuilderWidget.__init__(self, None) def new(self): gpodder.user_extensions.on_ui_object_available('gpodder-gtk', self) self.toolbar.set_property('visible', self.config.show_toolbar) self.bluetooth_available = util.bluetooth_available() self.config.connect_gtk_window(self.main_window, 'main_window') self.config.connect_gtk_paned('ui.gtk.state.main_window.paned_position', self.channelPaned) self.main_window.show() self.player_receiver = player.MediaPlayerDBusReceiver(self.on_played) self.gPodder.connect('key-press-event', self.on_key_press) self.episode_columns_menu = None self.config.add_observer(self.on_config_changed) self.shownotes_pane = gtk.HBox() if shownotes.have_webkit and self.config.enable_html_shownotes: self.shownotes_object = shownotes.gPodderShownotesHTML(self.shownotes_pane) else: self.shownotes_object = shownotes.gPodderShownotesText(self.shownotes_pane) # Vertical paned for the episode list and shownotes self.vpaned = gtk.VPaned() paned = self.vbox_episode_list.get_parent() self.vbox_episode_list.reparent(self.vpaned) self.vpaned.child_set_property(self.vbox_episode_list, 'resize', True) self.vpaned.child_set_property(self.vbox_episode_list, 'shrink', False) self.vpaned.pack2(self.shownotes_pane, resize=False, shrink=False) self.vpaned.show() # Minimum height for both episode list and shownotes self.vbox_episode_list.set_size_request(-1, 100) self.shownotes_pane.set_size_request(-1, 100) self.config.connect_gtk_paned('ui.gtk.state.main_window.episode_list_size', self.vpaned) paned.add2(self.vpaned) self.new_episodes_window = None # Mac OS X-specific UI tweaks: Native main menu integration # http://sourceforge.net/apps/trac/gtk-osx/wiki/Integrate if macapp is not None: # Move the menu bar from the window to the Mac menu bar self.mainMenu.hide() macapp.set_menu_bar(self.mainMenu) # Reparent some items to the "Application" menu item = self.uimanager1.get_widget('/mainMenu/menuHelp/itemAbout') macapp.insert_app_menu_item(item, 0) macapp.insert_app_menu_item(gtk.SeparatorMenuItem(), 1) item = self.uimanager1.get_widget('/mainMenu/menuPodcasts/itemPreferences') macapp.insert_app_menu_item(item, 2) quit_item = self.uimanager1.get_widget('/mainMenu/menuPodcasts/itemQuit') quit_item.hide() # end Mac OS X specific UI tweaks self.download_status_model = DownloadStatusModel() self.download_queue_manager = download.DownloadQueueManager(self.config) self.itemShowToolbar.set_active(self.config.show_toolbar) self.itemShowDescription.set_active(self.config.episode_list_descriptions) self.config.connect_gtk_spinbutton('max_downloads', self.spinMaxDownloads) self.config.connect_gtk_togglebutton('max_downloads_enabled', self.cbMaxDownloads) self.config.connect_gtk_spinbutton('limit_rate_value', self.spinLimitDownloads) self.config.connect_gtk_togglebutton('limit_rate', self.cbLimitDownloads) # When the amount of maximum downloads changes, notify the queue manager changed_cb = lambda spinbutton: self.download_queue_manager.spawn_threads() self.spinMaxDownloads.connect('value-changed', changed_cb) # Keep a reference to the last add podcast dialog instance self._add_podcast_dialog = None self.default_title = None self.set_title(_('gPodder')) self.cover_downloader = CoverDownloader() # Generate list models for podcasts and their episodes self.podcast_list_model = PodcastListModel(self.cover_downloader) self.cover_downloader.register('cover-available', self.cover_download_finished) # Source IDs for timeouts for search-as-you-type self._podcast_list_search_timeout = None self._episode_list_search_timeout = None # Init the treeviews that we use self.init_podcast_list_treeview() self.init_episode_list_treeview() self.init_download_list_treeview() if self.config.podcast_list_hide_boring: self.item_view_hide_boring_podcasts.set_active(True) self.currently_updating = False self.download_tasks_seen = set() self.download_list_update_enabled = False self.download_task_monitors = set() # Subscribed channels self.active_channel = None self.channels = self.model.get_podcasts() # Set up the first instance of MygPoClient self.mygpo_client = my.MygPoClient(self.config) gpodder.user_extensions.on_ui_initialized(self.model, self.extensions_podcast_update_cb, self.extensions_episode_download_cb) # load list of user applications for audio playback self.user_apps_reader = UserAppsReader(['audio', 'video']) util.run_in_background(self.user_apps_reader.read) # Now, update the feed cache, when everything's in place self.btnUpdateFeeds.show() self.feed_cache_update_cancelled = False self.update_podcast_list_model() self.message_area = None self.partial_downloads_indicator = None util.run_in_background(self.find_partial_downloads) # Start the auto-update procedure self._auto_update_timer_source_id = None if self.config.auto_update_feeds: self.restart_auto_update_timer() # Find expired (old) episodes and delete them old_episodes = list(common.get_expired_episodes(self.channels, self.config)) if len(old_episodes) > 0: self.delete_episode_list(old_episodes, confirm=False) updated_urls = set(e.channel.url for e in old_episodes) self.update_podcast_list_model(updated_urls) # Do the initial sync with the web service if self.mygpo_client.can_access_webservice(): util.idle_add(self.mygpo_client.flush, True) # First-time users should be asked if they want to see the OPML if self.options.subscribe: util.idle_add(self.subscribe_to_url, self.options.subscribe) elif not self.channels: self.on_itemUpdate_activate() elif self.config.software_update.check_on_startup: # Check for software updates from gpodder.org diff = time.time() - self.config.software_update.last_check if diff > (60*60*24)*self.config.software_update.interval: self.config.software_update.last_check = int(time.time()) self.check_for_updates(silent=True) def find_partial_downloads(self): def start_progress_callback(count): self.partial_downloads_indicator = ProgressIndicator( _('Loading incomplete downloads'), _('Some episodes have not finished downloading in a previous session.'), False, self.get_dialog_parent()) self.partial_downloads_indicator.on_message(N_('%(count)d partial file', '%(count)d partial files', count) % {'count':count}) util.idle_add(self.wNotebook.set_current_page, 1) def progress_callback(title, progress): self.partial_downloads_indicator.on_message(title) self.partial_downloads_indicator.on_progress(progress) def finish_progress_callback(resumable_episodes): util.idle_add(self.partial_downloads_indicator.on_finished) self.partial_downloads_indicator = None if resumable_episodes: def offer_resuming(): self.download_episode_list_paused(resumable_episodes) resume_all = gtk.Button(_('Resume all')) def on_resume_all(button): selection = self.treeDownloads.get_selection() selection.select_all() selected_tasks, _, _, _, _, _ = self.downloads_list_get_selection() selection.unselect_all() self._for_each_task_set_status(selected_tasks, download.DownloadTask.QUEUED) self.message_area.hide() resume_all.connect('clicked', on_resume_all) self.message_area = SimpleMessageArea(_('Incomplete downloads from a previous session were found.'), (resume_all,)) self.vboxDownloadStatusWidgets.pack_start(self.message_area, expand=False) self.vboxDownloadStatusWidgets.reorder_child(self.message_area, 0) self.message_area.show_all() common.clean_up_downloads(delete_partial=False) util.idle_add(offer_resuming) else: util.idle_add(self.wNotebook.set_current_page, 0) common.find_partial_downloads(self.channels, start_progress_callback, progress_callback, finish_progress_callback) def episode_object_by_uri(self, uri): """Get an episode object given a local or remote URI This can be used to quickly access an episode object when all we have is its download filename or episode URL (e.g. from external D-Bus calls / signals, etc..) """ if uri.startswith('/'): uri = 'file://' + urllib.quote(uri) prefix = 'file://' + urllib.quote(gpodder.downloads) # By default, assume we can't pre-select any channel # but can match episodes simply via the download URL is_channel = lambda c: True is_episode = lambda e: e.url == uri if uri.startswith(prefix): # File is on the local filesystem in the download folder # Try to reduce search space by pre-selecting the channel # based on the folder name of the local file filename = urllib.unquote(uri[len(prefix):]) file_parts = filter(None, filename.split(os.sep)) if len(file_parts) != 2: return None foldername, filename = file_parts is_channel = lambda c: c.download_folder == foldername is_episode = lambda e: e.download_filename == filename # Deep search through channels and episodes for a match for channel in filter(is_channel, self.channels): for episode in filter(is_episode, channel.get_all_episodes()): return episode return None def on_played(self, start, end, total, file_uri): """Handle the "played" signal from a media player""" if start == 0 and end == 0 and total == 0: # Ignore bogus play event return elif end < start + 5: # Ignore "less than five seconds" segments, # as they can happen with seeking, etc... return logger.debug('Received play action: %s (%d, %d, %d)', file_uri, start, end, total) episode = self.episode_object_by_uri(file_uri) if episode is not None: file_type = episode.file_type() now = time.time() if total > 0: episode.total_time = total elif total == 0: # Assume the episode's total time for the action total = episode.total_time assert (episode.current_position_updated is None or now >= episode.current_position_updated) episode.current_position = end episode.current_position_updated = now episode.mark(is_played=True) episode.save() self.episode_list_status_changed([episode]) # Submit this action to the webservice self.mygpo_client.on_playback_full(episode, start, end, total) def on_add_remove_podcasts_mygpo(self): actions = self.mygpo_client.get_received_actions() if not actions: return False existing_urls = [c.url for c in self.channels] # Columns for the episode selector window - just one... columns = ( ('description', None, None, _('Action')), ) # A list of actions that have to be chosen from changes = [] # Actions that are ignored (already carried out) ignored = [] for action in actions: if action.is_add and action.url not in existing_urls: changes.append(my.Change(action)) elif action.is_remove and action.url in existing_urls: podcast_object = None for podcast in self.channels: if podcast.url == action.url: podcast_object = podcast break changes.append(my.Change(action, podcast_object)) else: ignored.append(action) # Confirm all ignored changes self.mygpo_client.confirm_received_actions(ignored) def execute_podcast_actions(selected): # In the future, we might retrieve the title from gpodder.net here, # but for now, we just use "None" to use the feed-provided title title = None add_list = [(title, c.action.url) for c in selected if c.action.is_add] remove_list = [c.podcast for c in selected if c.action.is_remove] # Apply the accepted changes locally self.add_podcast_list(add_list) self.remove_podcast_list(remove_list, confirm=False) # All selected items are now confirmed self.mygpo_client.confirm_received_actions(c.action for c in selected) # Revert the changes on the server rejected = [c.action for c in changes if c not in selected] self.mygpo_client.reject_received_actions(rejected) def ask(): # We're abusing the Episode Selector again ;) -- thp gPodderEpisodeSelector(self.main_window, \ title=_('Confirm changes from gpodder.net'), \ instructions=_('Select the actions you want to carry out.'), \ episodes=changes, \ columns=columns, \ size_attribute=None, \ stock_ok_button=gtk.STOCK_APPLY, \ callback=execute_podcast_actions, \ _config=self.config) # There are some actions that need the user's attention if changes: util.idle_add(ask) return True # We have no remaining actions - no selection happens return False def rewrite_urls_mygpo(self): # Check if we have to rewrite URLs since the last add rewritten_urls = self.mygpo_client.get_rewritten_urls() changed = False for rewritten_url in rewritten_urls: if not rewritten_url.new_url: continue for channel in self.channels: if channel.url == rewritten_url.old_url: logger.info('Updating URL of %s to %s', channel, rewritten_url.new_url) channel.url = rewritten_url.new_url channel.save() changed = True break if changed: util.idle_add(self.update_episode_list_model) def on_send_full_subscriptions(self): # Send the full subscription list to the gpodder.net client # (this will overwrite the subscription list on the server) indicator = ProgressIndicator(_('Uploading subscriptions'), \ _('Your subscriptions are being uploaded to the server.'), \ False, self.get_dialog_parent()) try: self.mygpo_client.set_subscriptions([c.url for c in self.channels]) util.idle_add(self.show_message, _('List uploaded successfully.')) except Exception, e: def show_error(e): message = str(e) if not message: message = e.__class__.__name__ self.show_message(message, \ _('Error while uploading'), \ important=True) util.idle_add(show_error, e) util.idle_add(indicator.on_finished) def on_button_subscribe_clicked(self, button): self.on_itemImportChannels_activate(button) def on_button_downloads_clicked(self, widget): self.downloads_window.show() def for_each_episode_set_task_status(self, episodes, status): episode_urls = set(episode.url for episode in episodes) model = self.treeDownloads.get_model() selected_tasks = [(gtk.TreeRowReference(model, row.path), \ model.get_value(row.iter, \ DownloadStatusModel.C_TASK)) for row in model \ if model.get_value(row.iter, DownloadStatusModel.C_TASK).url \ in episode_urls] self._for_each_task_set_status(selected_tasks, status) def on_treeview_button_pressed(self, treeview, event): if event.window != treeview.get_bin_window(): return False role = getattr(treeview, TreeViewHelper.ROLE) if role == TreeViewHelper.ROLE_PODCASTS: return self.currently_updating elif (role == TreeViewHelper.ROLE_EPISODES and event.button == 1): # Toggle episode "new" status by clicking the icon (bug 1432) result = treeview.get_path_at_pos(int(event.x), int(event.y)) if result is not None: path, column, x, y = result # The user clicked the icon if she clicked in the first column # and the x position is in the area where the icon resides if (x < self.EPISODE_LIST_ICON_WIDTH and column == treeview.get_columns()[0]): model = treeview.get_model() cursor_episode = model.get_value(model.get_iter(path), EpisodeListModel.C_EPISODE) new_value = cursor_episode.is_new selected_episodes = self.get_selected_episodes() # Avoid changing anything if the clicked episode is not # selected already - otherwise update all selected if cursor_episode in selected_episodes: for episode in selected_episodes: episode.mark(is_played=new_value) self.update_episode_list_icons(selected=True) self.update_podcast_list_model(selected=True) return True return event.button == 3 def on_treeview_podcasts_button_released(self, treeview, event): if event.window != treeview.get_bin_window(): return False return self.treeview_channels_show_context_menu(treeview, event) def on_treeview_episodes_button_released(self, treeview, event): if event.window != treeview.get_bin_window(): return False return self.treeview_available_show_context_menu(treeview, event) def on_treeview_downloads_button_released(self, treeview, event): if event.window != treeview.get_bin_window(): return False return self.treeview_downloads_show_context_menu(treeview, event) def on_entry_search_podcasts_changed(self, editable): if self.hbox_search_podcasts.get_property('visible'): def set_search_term(self, text): self.podcast_list_model.set_search_term(text) self._podcast_list_search_timeout = None return False if self._podcast_list_search_timeout is not None: gobject.source_remove(self._podcast_list_search_timeout) self._podcast_list_search_timeout = gobject.timeout_add( self.config.ui.gtk.live_search_delay, set_search_term, self, editable.get_chars(0, -1)) def on_entry_search_podcasts_key_press(self, editable, event): if event.keyval == gtk.keysyms.Escape: self.hide_podcast_search() return True def hide_podcast_search(self, *args): if self._podcast_list_search_timeout is not None: gobject.source_remove(self._podcast_list_search_timeout) self._podcast_list_search_timeout = None self.hbox_search_podcasts.hide() self.entry_search_podcasts.set_text('') self.podcast_list_model.set_search_term(None) self.treeChannels.grab_focus() def show_podcast_search(self, input_char): self.hbox_search_podcasts.show() self.entry_search_podcasts.insert_text(input_char, -1) self.entry_search_podcasts.grab_focus() self.entry_search_podcasts.set_position(-1) def init_podcast_list_treeview(self): # Set up podcast channel tree view widget column = gtk.TreeViewColumn('') iconcell = gtk.CellRendererPixbuf() iconcell.set_property('width', 45) column.pack_start(iconcell, False) column.add_attribute(iconcell, 'pixbuf', PodcastListModel.C_COVER) column.add_attribute(iconcell, 'visible', PodcastListModel.C_COVER_VISIBLE) namecell = gtk.CellRendererText() namecell.set_property('ellipsize', pango.ELLIPSIZE_END) column.pack_start(namecell, True) column.add_attribute(namecell, 'markup', PodcastListModel.C_DESCRIPTION) iconcell = gtk.CellRendererPixbuf() iconcell.set_property('xalign', 1.0) column.pack_start(iconcell, False) column.add_attribute(iconcell, 'pixbuf', PodcastListModel.C_PILL) column.add_attribute(iconcell, 'visible', PodcastListModel.C_PILL_VISIBLE) self.treeChannels.append_column(column) self.treeChannels.set_model(self.podcast_list_model.get_filtered_model()) # When no podcast is selected, clear the episode list model selection = self.treeChannels.get_selection() def select_function(selection, model, path, path_currently_selected): url = model.get_value(model.get_iter(path), PodcastListModel.C_URL) return (url != '-') selection.set_select_function(select_function, full=True) # Set up type-ahead find for the podcast list def on_key_press(treeview, event): if event.keyval == gtk.keysyms.Right: self.treeAvailable.grab_focus() elif event.keyval in (gtk.keysyms.Up, gtk.keysyms.Down): # If section markers exist in the treeview, we want to # "jump over" them when moving the cursor up and down selection = self.treeChannels.get_selection() model, it = selection.get_selected() if event.keyval == gtk.keysyms.Up: step = -1 else: step = 1 path = model.get_path(it) while True: path = (path[0]+step,) if path[0] < 0: # Valid paths must have a value >= 0 return True try: it = model.get_iter(path) except ValueError: # Already at the end of the list return True if model.get_value(it, PodcastListModel.C_URL) != '-': break self.treeChannels.set_cursor(path) elif event.keyval == gtk.keysyms.Escape: self.hide_podcast_search() elif event.state & gtk.gdk.CONTROL_MASK: # Don't handle type-ahead when control is pressed (so shortcuts # with the Ctrl key still work, e.g. Ctrl+A, ...) return True else: unicode_char_id = gtk.gdk.keyval_to_unicode(event.keyval) if unicode_char_id == 0: return False input_char = unichr(unicode_char_id) self.show_podcast_search(input_char) return True self.treeChannels.connect('key-press-event', on_key_press) self.treeChannels.connect('popup-menu', self.treeview_channels_show_context_menu) # Enable separators to the podcast list to separate special podcasts # from others (this is used for the "all episodes" view) self.treeChannels.set_row_separator_func(PodcastListModel.row_separator_func) TreeViewHelper.set(self.treeChannels, TreeViewHelper.ROLE_PODCASTS) def on_entry_search_episodes_changed(self, editable): if self.hbox_search_episodes.get_property('visible'): def set_search_term(self, text): self.episode_list_model.set_search_term(text) self._episode_list_search_timeout = None return False if self._episode_list_search_timeout is not None: gobject.source_remove(self._episode_list_search_timeout) self._episode_list_search_timeout = gobject.timeout_add( self.config.ui.gtk.live_search_delay, set_search_term, self, editable.get_chars(0, -1)) def on_entry_search_episodes_key_press(self, editable, event): if event.keyval == gtk.keysyms.Escape: self.hide_episode_search() return True def hide_episode_search(self, *args): if self._episode_list_search_timeout is not None: gobject.source_remove(self._episode_list_search_timeout) self._episode_list_search_timeout = None self.hbox_search_episodes.hide() self.entry_search_episodes.set_text('') self.episode_list_model.set_search_term(None) self.treeAvailable.grab_focus() def show_episode_search(self, input_char): self.hbox_search_episodes.show() self.entry_search_episodes.insert_text(input_char, -1) self.entry_search_episodes.grab_focus() self.entry_search_episodes.set_position(-1) def set_episode_list_column(self, index, new_value): mask = (1 << index) if new_value: self.config.episode_list_columns |= mask else: self.config.episode_list_columns &= ~mask def update_episode_list_columns_visibility(self): columns = TreeViewHelper.get_columns(self.treeAvailable) for index, column in enumerate(columns): visible = bool(self.config.episode_list_columns & (1 << index)) column.set_visible(visible) self.treeAvailable.columns_autosize() if self.episode_columns_menu is not None: children = self.episode_columns_menu.get_children() for index, child in enumerate(children): active = bool(self.config.episode_list_columns & (1 << index)) child.set_active(active) def on_episode_list_header_clicked(self, button, event): if event.button != 3: return False if self.episode_columns_menu is not None: self.episode_columns_menu.popup(None, None, None, event.button, \ event.time, None) return False def init_episode_list_treeview(self): # For loading the list model self.episode_list_model = EpisodeListModel(self.config, self.on_episode_list_filter_changed) if self.config.episode_list_view_mode == EpisodeListModel.VIEW_UNDELETED: self.item_view_episodes_undeleted.set_active(True) elif self.config.episode_list_view_mode == EpisodeListModel.VIEW_DOWNLOADED: self.item_view_episodes_downloaded.set_active(True) elif self.config.episode_list_view_mode == EpisodeListModel.VIEW_UNPLAYED: self.item_view_episodes_unplayed.set_active(True) else: self.item_view_episodes_all.set_active(True) self.episode_list_model.set_view_mode(self.config.episode_list_view_mode) self.treeAvailable.set_model(self.episode_list_model.get_filtered_model()) TreeViewHelper.set(self.treeAvailable, TreeViewHelper.ROLE_EPISODES) iconcell = gtk.CellRendererPixbuf() episode_list_icon_size = gtk.icon_size_register('episode-list', EPISODE_LIST_ICON_SIZE, EPISODE_LIST_ICON_SIZE) iconcell.set_property('stock-size', episode_list_icon_size) iconcell.set_fixed_size(self.EPISODE_LIST_ICON_WIDTH, -1) namecell = gtk.CellRendererText() namecell.set_property('ellipsize', pango.ELLIPSIZE_END) namecolumn = gtk.TreeViewColumn(_('Episode')) namecolumn.pack_start(iconcell, False) namecolumn.add_attribute(iconcell, 'icon-name', EpisodeListModel.C_STATUS_ICON) namecolumn.pack_start(namecell, True) namecolumn.add_attribute(namecell, 'markup', EpisodeListModel.C_DESCRIPTION) namecolumn.set_sort_column_id(EpisodeListModel.C_DESCRIPTION) namecolumn.set_sizing(gtk.TREE_VIEW_COLUMN_AUTOSIZE) namecolumn.set_resizable(True) namecolumn.set_expand(True) lockcell = gtk.CellRendererPixbuf() lockcell.set_fixed_size(40, -1) lockcell.set_property('stock-size', gtk.ICON_SIZE_MENU) lockcell.set_property('icon-name', 'emblem-readonly') namecolumn.pack_start(lockcell, False) namecolumn.add_attribute(lockcell, 'visible', EpisodeListModel.C_LOCKED) sizecell = gtk.CellRendererText() sizecell.set_property('xalign', 1) sizecolumn = gtk.TreeViewColumn(_('Size'), sizecell, text=EpisodeListModel.C_FILESIZE_TEXT) sizecolumn.set_sort_column_id(EpisodeListModel.C_FILESIZE) timecell = gtk.CellRendererText() timecell.set_property('xalign', 1) timecolumn = gtk.TreeViewColumn(_('Duration'), timecell, text=EpisodeListModel.C_TIME) timecolumn.set_sort_column_id(EpisodeListModel.C_TOTAL_TIME) releasecell = gtk.CellRendererText() releasecolumn = gtk.TreeViewColumn(_('Released'), releasecell, text=EpisodeListModel.C_PUBLISHED_TEXT) releasecolumn.set_sort_column_id(EpisodeListModel.C_PUBLISHED) namecolumn.set_reorderable(True) self.treeAvailable.append_column(namecolumn) for itemcolumn in (sizecolumn, timecolumn, releasecolumn): itemcolumn.set_reorderable(True) self.treeAvailable.append_column(itemcolumn) TreeViewHelper.register_column(self.treeAvailable, itemcolumn) # Add context menu to all tree view column headers for column in self.treeAvailable.get_columns(): label = gtk.Label(column.get_title()) label.show_all() column.set_widget(label) w = column.get_widget() while w is not None and not isinstance(w, gtk.Button): w = w.get_parent() w.connect('button-release-event', self.on_episode_list_header_clicked) # Create a new menu for the visible episode list columns for child in self.mainMenu.get_children(): if child.get_name() == 'menuView': submenu = child.get_submenu() item = gtk.MenuItem(_('Visible columns')) submenu.append(gtk.SeparatorMenuItem()) submenu.append(item) submenu.show_all() self.episode_columns_menu = gtk.Menu() item.set_submenu(self.episode_columns_menu) break # For each column that can be shown/hidden, add a menu item columns = TreeViewHelper.get_columns(self.treeAvailable) for index, column in enumerate(columns): item = gtk.CheckMenuItem(column.get_title()) self.episode_columns_menu.append(item) def on_item_toggled(item, index): self.set_episode_list_column(index, item.get_active()) item.connect('toggled', on_item_toggled, index) self.episode_columns_menu.show_all() # Update the visibility of the columns and the check menu items self.update_episode_list_columns_visibility() # Set up type-ahead find for the episode list def on_key_press(treeview, event): if event.keyval == gtk.keysyms.Left: self.treeChannels.grab_focus() elif event.keyval == gtk.keysyms.Escape: if self.hbox_search_episodes.get_property('visible'): self.hide_episode_search() else: self.shownotes_object.hide_pane() elif event.state & gtk.gdk.CONTROL_MASK: # Don't handle type-ahead when control is pressed (so shortcuts # with the Ctrl key still work, e.g. Ctrl+A, ...) return False else: unicode_char_id = gtk.gdk.keyval_to_unicode(event.keyval) if unicode_char_id == 0: return False input_char = unichr(unicode_char_id) self.show_episode_search(input_char) return True self.treeAvailable.connect('key-press-event', on_key_press) self.treeAvailable.connect('popup-menu', self.treeview_available_show_context_menu) self.treeAvailable.enable_model_drag_source(gtk.gdk.BUTTON1_MASK, \ (('text/uri-list', 0, 0),), gtk.gdk.ACTION_COPY) def drag_data_get(tree, context, selection_data, info, timestamp): uris = ['file://'+e.local_filename(create=False) \ for e in self.get_selected_episodes() \ if e.was_downloaded(and_exists=True)] uris.append('') # for the trailing '\r\n' selection_data.set(selection_data.target, 8, '\r\n'.join(uris)) self.treeAvailable.connect('drag-data-get', drag_data_get) selection = self.treeAvailable.get_selection() selection.set_mode(gtk.SELECTION_MULTIPLE) selection.connect('changed', self.on_episode_list_selection_changed) def on_episode_list_selection_changed(self, selection): # Update the toolbar buttons self.play_or_download() # and the shownotes self.shownotes_object.set_episodes(self.get_selected_episodes()) def init_download_list_treeview(self): # enable multiple selection support self.treeDownloads.get_selection().set_mode(gtk.SELECTION_MULTIPLE) self.treeDownloads.set_search_equal_func(TreeViewHelper.make_search_equal_func(DownloadStatusModel)) # columns and renderers for "download progress" tab # First column: [ICON] Episodename column = gtk.TreeViewColumn(_('Episode')) cell = gtk.CellRendererPixbuf() cell.set_property('stock-size', gtk.ICON_SIZE_BUTTON) column.pack_start(cell, expand=False) column.add_attribute(cell, 'icon-name', \ DownloadStatusModel.C_ICON_NAME) cell = gtk.CellRendererText() cell.set_property('ellipsize', pango.ELLIPSIZE_END) column.pack_start(cell, expand=True) column.add_attribute(cell, 'markup', DownloadStatusModel.C_NAME) column.set_sizing(gtk.TREE_VIEW_COLUMN_AUTOSIZE) column.set_expand(True) self.treeDownloads.append_column(column) # Second column: Progress cell = gtk.CellRendererProgress() cell.set_property('yalign', .5) cell.set_property('ypad', 6) column = gtk.TreeViewColumn(_('Progress'), cell, value=DownloadStatusModel.C_PROGRESS, \ text=DownloadStatusModel.C_PROGRESS_TEXT) column.set_sizing(gtk.TREE_VIEW_COLUMN_AUTOSIZE) column.set_expand(False) self.treeDownloads.append_column(column) column.set_property('min-width', 150) column.set_property('max-width', 150) self.treeDownloads.set_model(self.download_status_model) TreeViewHelper.set(self.treeDownloads, TreeViewHelper.ROLE_DOWNLOADS) self.treeDownloads.connect('popup-menu', self.treeview_downloads_show_context_menu) def on_treeview_expose_event(self, treeview, event): if event.window == treeview.get_bin_window(): model = treeview.get_model() if (model is not None and model.get_iter_first() is not None): return False role = getattr(treeview, TreeViewHelper.ROLE, None) if role is None: return False ctx = event.window.cairo_create() ctx.rectangle(event.area.x, event.area.y, event.area.width, event.area.height) ctx.clip() x, y, width, height, depth = event.window.get_geometry() progress = None if role == TreeViewHelper.ROLE_EPISODES: if self.currently_updating: text = _('Loading episodes') elif self.config.episode_list_view_mode != \ EpisodeListModel.VIEW_ALL: text = _('No episodes in current view') else: text = _('No episodes available') elif role == TreeViewHelper.ROLE_PODCASTS: if self.config.episode_list_view_mode != \ EpisodeListModel.VIEW_ALL and \ self.config.podcast_list_hide_boring and \ len(self.channels) > 0: text = _('No podcasts in this view') else: text = _('No subscriptions') elif role == TreeViewHelper.ROLE_DOWNLOADS: text = _('No active tasks') else: raise Exception('on_treeview_expose_event: unknown role') font_desc = None draw_text_box_centered(ctx, treeview, width, height, text, font_desc, progress) return False def enable_download_list_update(self): if not self.download_list_update_enabled: self.update_downloads_list() gobject.timeout_add(1500, self.update_downloads_list) self.download_list_update_enabled = True def cleanup_downloads(self): model = self.download_status_model all_tasks = [(gtk.TreeRowReference(model, row.path), row[0]) for row in model] changed_episode_urls = set() for row_reference, task in all_tasks: if task.status in (task.DONE, task.CANCELLED): model.remove(model.get_iter(row_reference.get_path())) try: # We don't "see" this task anymore - remove it; # this is needed, so update_episode_list_icons() # below gets the correct list of "seen" tasks self.download_tasks_seen.remove(task) except KeyError, key_error: pass changed_episode_urls.add(task.url) # Tell the task that it has been removed (so it can clean up) task.removed_from_list() # Tell the podcasts tab to update icons for our removed podcasts self.update_episode_list_icons(changed_episode_urls) # Update the downloads list one more time self.update_downloads_list(can_call_cleanup=False) def on_tool_downloads_toggled(self, toolbutton): if toolbutton.get_active(): self.wNotebook.set_current_page(1) else: self.wNotebook.set_current_page(0) def add_download_task_monitor(self, monitor): self.download_task_monitors.add(monitor) model = self.download_status_model if model is None: model = () for row in model: task = row[self.download_status_model.C_TASK] monitor.task_updated(task) def remove_download_task_monitor(self, monitor): self.download_task_monitors.remove(monitor) def set_download_progress(self, progress): gpodder.user_extensions.on_download_progress(progress) def update_downloads_list(self, can_call_cleanup=True): try: model = self.download_status_model downloading, synchronizing, failed, finished, queued, paused, others = 0, 0, 0, 0, 0, 0, 0 total_speed, total_size, done_size = 0, 0, 0 # Keep a list of all download tasks that we've seen download_tasks_seen = set() # Do not go through the list of the model is not (yet) available if model is None: model = () for row in model: self.download_status_model.request_update(row.iter) task = row[self.download_status_model.C_TASK] speed, size, status, progress, activity = task.speed, task.total_size, task.status, task.progress, task.activity # Let the download task monitors know of changes for monitor in self.download_task_monitors: monitor.task_updated(task) total_size += size done_size += size*progress download_tasks_seen.add(task) if (status == download.DownloadTask.DOWNLOADING and activity == download.DownloadTask.ACTIVITY_DOWNLOAD): downloading += 1 total_speed += speed elif (status == download.DownloadTask.DOWNLOADING and activity == download.DownloadTask.ACTIVITY_SYNCHRONIZE): synchronizing += 1 elif status == download.DownloadTask.FAILED: failed += 1 elif status == download.DownloadTask.DONE: finished += 1 elif status == download.DownloadTask.QUEUED: queued += 1 elif status == download.DownloadTask.PAUSED: paused += 1 else: others += 1 # Remember which tasks we have seen after this run self.download_tasks_seen = download_tasks_seen text = [_('Progress')] if downloading + failed + queued + synchronizing > 0: s = [] if downloading > 0: s.append(N_('%(count)d active', '%(count)d active', downloading) % {'count':downloading}) if synchronizing > 0: s.append(N_('%(count)d active', '%(count)d active', synchronizing) % {'count':synchronizing}) if failed > 0: s.append(N_('%(count)d failed', '%(count)d failed', failed) % {'count':failed}) if queued > 0: s.append(N_('%(count)d queued', '%(count)d queued', queued) % {'count':queued}) text.append(' (' + ', '.join(s)+')') self.labelDownloads.set_text(''.join(text)) title = [self.default_title] # Accessing task.status_changed has the side effect of re-setting # the changed flag, but we only do it once here so that's okay channel_urls = [task.podcast_url for task in self.download_tasks_seen if task.status_changed] episode_urls = [task.url for task in self.download_tasks_seen] if downloading > 0: title.append(N_('downloading %(count)d file', 'downloading %(count)d files', downloading) % {'count':downloading}) if total_size > 0: percentage = 100.0*done_size/total_size else: percentage = 0.0 self.set_download_progress(percentage/100.) total_speed = util.format_filesize(total_speed) title[1] += ' (%d%%, %s/s)' % (percentage, total_speed) if synchronizing > 0: title.append(N_('synchronizing %(count)d file', 'synchronizing %(count)d files', synchronizing) % {'count':synchronizing}) if queued > 0: title.append(N_('%(queued)d task queued', '%(queued)d tasks queued', queued) % {'queued':queued}) if (downloading + synchronizing + queued)==0: self.set_download_progress(1.) self.downloads_finished(self.download_tasks_seen) gpodder.user_extensions.on_all_episodes_downloaded() logger.info('All tasks have finished.') # Remove finished episodes if self.config.auto_cleanup_downloads and can_call_cleanup: self.cleanup_downloads() # Stop updating the download list here self.download_list_update_enabled = False self.gPodder.set_title(' - '.join(title)) self.update_episode_list_icons(episode_urls) self.play_or_download() if channel_urls: self.update_podcast_list_model(channel_urls) return self.download_list_update_enabled except Exception, e: logger.error('Exception happened while updating download list.', exc_info=True) self.show_message('%s\n\n%s' % (_('Please report this problem and restart gPodder:'), str(e)), _('Unhandled exception'), important=True) # We return False here, so the update loop won't be called again, # that's why we require the restart of gPodder in the message. return False def on_config_changed(self, *args): util.idle_add(self._on_config_changed, *args) def _on_config_changed(self, name, old_value, new_value): if name == 'ui.gtk.toolbar': self.toolbar.set_property('visible', new_value) elif name == 'ui.gtk.episode_list.descriptions': self.update_episode_list_model() elif name in ('auto.update.enabled', 'auto.update.frequency'): self.restart_auto_update_timer() elif name in ('ui.gtk.podcast_list.all_episodes', 'ui.gtk.podcast_list.sections'): # Force a update of the podcast list model self.update_podcast_list_model() elif name == 'ui.gtk.episode_list.columns': self.update_episode_list_columns_visibility() def on_treeview_query_tooltip(self, treeview, x, y, keyboard_tooltip, tooltip): # With get_bin_window, we get the window that contains the rows without # the header. The Y coordinate of this window will be the height of the # treeview header. This is the amount we have to subtract from the # event's Y coordinate to get the coordinate to pass to get_path_at_pos (x_bin, y_bin) = treeview.get_bin_window().get_position() y -= x_bin y -= y_bin (path, column, rx, ry) = treeview.get_path_at_pos( x, y) or (None,)*4 if not getattr(treeview, TreeViewHelper.CAN_TOOLTIP) or x > 50 or (column is not None and column != treeview.get_columns()[0]): setattr(treeview, TreeViewHelper.LAST_TOOLTIP, None) return False if path is not None: model = treeview.get_model() iter = model.get_iter(path) role = getattr(treeview, TreeViewHelper.ROLE) if role == TreeViewHelper.ROLE_EPISODES: id = model.get_value(iter, EpisodeListModel.C_URL) elif role == TreeViewHelper.ROLE_PODCASTS: id = model.get_value(iter, PodcastListModel.C_URL) if id == '-': # Section header - no tooltip here (for now at least) return False last_tooltip = getattr(treeview, TreeViewHelper.LAST_TOOLTIP) if last_tooltip is not None and last_tooltip != id: setattr(treeview, TreeViewHelper.LAST_TOOLTIP, None) return False setattr(treeview, TreeViewHelper.LAST_TOOLTIP, id) if role == TreeViewHelper.ROLE_EPISODES: description = model.get_value(iter, EpisodeListModel.C_TOOLTIP) if description: tooltip.set_text(description) else: return False elif role == TreeViewHelper.ROLE_PODCASTS: channel = model.get_value(iter, PodcastListModel.C_CHANNEL) if channel is None or not hasattr(channel, 'title'): return False error_str = model.get_value(iter, PodcastListModel.C_ERROR) if error_str: error_str = _('Feedparser error: %s') % cgi.escape(error_str.strip()) error_str = '%s' % error_str table = gtk.Table(rows=3, columns=3) table.set_row_spacings(5) table.set_col_spacings(5) table.set_border_width(5) heading = gtk.Label() heading.set_alignment(0, 1) heading.set_markup('%s\n%s' % (cgi.escape(channel.title), cgi.escape(channel.url))) table.attach(heading, 0, 1, 0, 1) table.attach(gtk.HSeparator(), 0, 3, 1, 2) if len(channel.description) < 500: description = channel.description else: pos = channel.description.find('\n\n') if pos == -1 or pos > 500: description = channel.description[:498]+'[...]' else: description = channel.description[:pos] description = gtk.Label(description) if error_str: description.set_markup(error_str) description.set_alignment(0, 0) description.set_line_wrap(True) table.attach(description, 0, 3, 2, 3) table.show_all() tooltip.set_custom(table) return True setattr(treeview, TreeViewHelper.LAST_TOOLTIP, None) return False def treeview_allow_tooltips(self, treeview, allow): setattr(treeview, TreeViewHelper.CAN_TOOLTIP, allow) def treeview_handle_context_menu_click(self, treeview, event): if event is None: selection = treeview.get_selection() return selection.get_selected_rows() x, y = int(event.x), int(event.y) path, column, rx, ry = treeview.get_path_at_pos(x, y) or (None,)*4 selection = treeview.get_selection() model, paths = selection.get_selected_rows() if path is None or (path not in paths and \ event.button == 3): # We have right-clicked, but not into the selection, # assume we don't want to operate on the selection paths = [] if path is not None and not paths and \ event.button == 3: # No selection or clicked outside selection; # select the single item where we clicked treeview.grab_focus() treeview.set_cursor(path, column, 0) paths = [path] if not paths: # Unselect any remaining items (clicked elsewhere) if hasattr(treeview, 'is_rubber_banding_active'): if not treeview.is_rubber_banding_active(): selection.unselect_all() else: selection.unselect_all() return model, paths def downloads_list_get_selection(self, model=None, paths=None): if model is None and paths is None: selection = self.treeDownloads.get_selection() model, paths = selection.get_selected_rows() can_queue, can_cancel, can_pause, can_remove, can_force = (True,)*5 selected_tasks = [(gtk.TreeRowReference(model, path), \ model.get_value(model.get_iter(path), \ DownloadStatusModel.C_TASK)) for path in paths] for row_reference, task in selected_tasks: if task.status != download.DownloadTask.QUEUED: can_force = False if task.status not in (download.DownloadTask.PAUSED, \ download.DownloadTask.FAILED, \ download.DownloadTask.CANCELLED): can_queue = False if task.status not in (download.DownloadTask.PAUSED, \ download.DownloadTask.QUEUED, \ download.DownloadTask.DOWNLOADING, \ download.DownloadTask.FAILED): can_cancel = False if task.status not in (download.DownloadTask.QUEUED, \ download.DownloadTask.DOWNLOADING): can_pause = False if task.status not in (download.DownloadTask.CANCELLED, \ download.DownloadTask.FAILED, \ download.DownloadTask.DONE): can_remove = False return selected_tasks, can_queue, can_cancel, can_pause, can_remove, can_force def downloads_finished(self, download_tasks_seen): # Separate tasks into downloads & syncs # Since calling notify_as_finished or notify_as_failed clears the flag, # need to iterate through downloads & syncs separately, else all sync # tasks will have their flags cleared if we do downloads first def filter_by_activity(activity, tasks): return filter(lambda task: task.activity == activity, tasks) download_tasks = filter_by_activity(download.DownloadTask.ACTIVITY_DOWNLOAD, download_tasks_seen) finished_downloads = [str(task) for task in download_tasks if task.notify_as_finished()] failed_downloads = ['%s (%s)' % (str(task), task.error_message) for task in download_tasks if task.notify_as_failed()] sync_tasks = filter_by_activity(download.DownloadTask.ACTIVITY_SYNCHRONIZE, download_tasks_seen) finished_syncs = [task for task in sync_tasks if task.notify_as_finished()] failed_syncs = [task for task in sync_tasks if task.notify_as_failed()] # Note that 'finished_ / failed_downloads' is a list of strings # Whereas 'finished_ / failed_syncs' is a list of SyncTask objects if finished_downloads and failed_downloads: message = self.format_episode_list(finished_downloads, 5) message += '\n\n%s\n' % _('Could not download some episodes:') message += self.format_episode_list(failed_downloads, 5) self.show_message(message, _('Downloads finished'), widget=self.labelDownloads) elif finished_downloads: message = self.format_episode_list(finished_downloads) self.show_message(message, _('Downloads finished'), widget=self.labelDownloads) elif failed_downloads: message = self.format_episode_list(failed_downloads) self.show_message(message, _('Downloads failed'), widget=self.labelDownloads) if finished_syncs and failed_syncs: message = self.format_episode_list(map((lambda task: str(task)),finished_syncs), 5) message += '\n\n%s\n' % _('Could not sync some episodes:') message += self.format_episode_list(map((lambda task: str(task)),failed_syncs), 5) self.show_message(message, _('Device synchronization finished'), True, widget=self.labelDownloads) elif finished_syncs: message = self.format_episode_list(map((lambda task: str(task)),finished_syncs)) self.show_message(message, _('Device synchronization finished'), widget=self.labelDownloads) elif failed_syncs: message = self.format_episode_list(map((lambda task: str(task)),failed_syncs)) self.show_message(message, _('Device synchronization failed'), True, widget=self.labelDownloads) # Do post-sync processing if required for task in finished_syncs: if self.config.device_sync.after_sync.mark_episodes_played: logger.info('Marking as played on transfer: %s', task.episode.url) task.episode.mark(is_played=True) if self.config.device_sync.after_sync.delete_episodes: logger.info('Removing episode after transfer: %s', task.episode.url) task.episode.delete_from_disk() self.sync_ui.device.close() # Update icon list to show changes, if any self.update_episode_list_icons(all=True) def format_episode_list(self, episode_list, max_episodes=10): """ Format a list of episode names for notifications Will truncate long episode names and limit the amount of episodes displayed (max_episodes=10). The episode_list parameter should be a list of strings. """ MAX_TITLE_LENGTH = 100 result = [] for title in episode_list[:min(len(episode_list), max_episodes)]: # Bug 1834: make sure title is a unicode string, # so it may be cut correctly on UTF-8 char boundaries title = util.convert_bytes(title) if len(title) > MAX_TITLE_LENGTH: middle = (MAX_TITLE_LENGTH/2)-2 title = '%s...%s' % (title[0:middle], title[-middle:]) result.append(cgi.escape(title)) result.append('\n') more_episodes = len(episode_list) - max_episodes if more_episodes > 0: result.append('(...') result.append(N_('%(count)d more episode', '%(count)d more episodes', more_episodes) % {'count':more_episodes}) result.append('...)') return (''.join(result)).strip() def _for_each_task_set_status(self, tasks, status, force_start=False): episode_urls = set() model = self.treeDownloads.get_model() for row_reference, task in tasks: if status == download.DownloadTask.QUEUED: # Only queue task when its paused/failed/cancelled (or forced) if task.status in (task.PAUSED, task.FAILED, task.CANCELLED) or force_start: self.download_queue_manager.add_task(task, force_start) self.enable_download_list_update() elif status == download.DownloadTask.CANCELLED: # Cancelling a download allowed when downloading/queued if task.status in (task.QUEUED, task.DOWNLOADING): task.status = status # Cancelling paused/failed downloads requires a call to .run() elif task.status in (task.PAUSED, task.FAILED): task.status = status # Call run, so the partial file gets deleted task.run() elif status == download.DownloadTask.PAUSED: # Pausing a download only when queued/downloading if task.status in (task.DOWNLOADING, task.QUEUED): task.status = status elif status is None: # Remove the selected task - cancel downloading/queued tasks if task.status in (task.QUEUED, task.DOWNLOADING): task.status = task.CANCELLED model.remove(model.get_iter(row_reference.get_path())) # Remember the URL, so we can tell the UI to update try: # We don't "see" this task anymore - remove it; # this is needed, so update_episode_list_icons() # below gets the correct list of "seen" tasks self.download_tasks_seen.remove(task) except KeyError, key_error: pass episode_urls.add(task.url) # Tell the task that it has been removed (so it can clean up) task.removed_from_list() else: # We can (hopefully) simply set the task status here task.status = status # Tell the podcasts tab to update icons for our removed podcasts self.update_episode_list_icons(episode_urls) # Update the tab title and downloads list self.update_downloads_list() def treeview_downloads_show_context_menu(self, treeview, event=None): model, paths = self.treeview_handle_context_menu_click(treeview, event) if not paths: if not hasattr(treeview, 'is_rubber_banding_active'): return True else: return not treeview.is_rubber_banding_active() if event is None or event.button == 3: selected_tasks, can_queue, can_cancel, can_pause, can_remove, can_force = \ self.downloads_list_get_selection(model, paths) def make_menu_item(label, stock_id, tasks, status, sensitive, force_start=False): # This creates a menu item for selection-wide actions item = gtk.ImageMenuItem(label) item.set_image(gtk.image_new_from_stock(stock_id, gtk.ICON_SIZE_MENU)) item.connect('activate', lambda item: self._for_each_task_set_status(tasks, status, force_start)) item.set_sensitive(sensitive) return item menu = gtk.Menu() if can_force: menu.append(make_menu_item(_('Start download now'), gtk.STOCK_GO_DOWN, selected_tasks, download.DownloadTask.QUEUED, True, True)) else: menu.append(make_menu_item(_('Download'), gtk.STOCK_GO_DOWN, selected_tasks, download.DownloadTask.QUEUED, can_queue, False)) menu.append(make_menu_item(_('Cancel'), gtk.STOCK_CANCEL, selected_tasks, download.DownloadTask.CANCELLED, can_cancel)) menu.append(make_menu_item(_('Pause'), gtk.STOCK_MEDIA_PAUSE, selected_tasks, download.DownloadTask.PAUSED, can_pause)) menu.append(gtk.SeparatorMenuItem()) menu.append(make_menu_item(_('Remove from list'), gtk.STOCK_REMOVE, selected_tasks, None, can_remove)) menu.show_all() if event is None: func = TreeViewHelper.make_popup_position_func(treeview) menu.popup(None, None, func, 3, 0) else: menu.popup(None, None, None, event.button, event.time) return True def on_mark_episodes_as_old(self, item): assert self.active_channel is not None for episode in self.active_channel.get_all_episodes(): if not episode.was_downloaded(and_exists=True): episode.mark(is_played=True) self.update_podcast_list_model(selected=True) self.update_episode_list_icons(all=True) def on_open_download_folder(self, item): assert self.active_channel is not None util.gui_open(self.active_channel.save_dir) def treeview_channels_show_context_menu(self, treeview, event=None): model, paths = self.treeview_handle_context_menu_click(treeview, event) if not paths: return True # Check for valid channel id, if there's no id then # assume that it is a proxy channel or equivalent # and cannot be operated with right click if self.active_channel.id is None: return True if event is None or event.button == 3: menu = gtk.Menu() item = gtk.ImageMenuItem( _('Update podcast')) item.set_image(gtk.image_new_from_stock(gtk.STOCK_REFRESH, gtk.ICON_SIZE_MENU)) item.connect('activate', self.on_itemUpdateChannel_activate) menu.append(item) menu.append(gtk.SeparatorMenuItem()) item = gtk.MenuItem(_('Open download folder')) item.connect('activate', self.on_open_download_folder) menu.append(item) menu.append(gtk.SeparatorMenuItem()) item = gtk.MenuItem(_('Mark episodes as old')) item.connect('activate', self.on_mark_episodes_as_old) menu.append(item) item = gtk.CheckMenuItem(_('Archive')) item.set_active(self.active_channel.auto_archive_episodes) item.connect('activate', self.on_channel_toggle_lock_activate) menu.append(item) item = gtk.ImageMenuItem(_('Remove podcast')) item.set_image(gtk.image_new_from_stock(gtk.STOCK_DELETE, gtk.ICON_SIZE_MENU)) item.connect( 'activate', self.on_itemRemoveChannel_activate) menu.append( item) result = gpodder.user_extensions.on_channel_context_menu(self.active_channel) if result: menu.append(gtk.SeparatorMenuItem()) for label, callback in result: item = gtk.MenuItem(label) item.connect('activate', lambda item, callback: callback(self.active_channel), callback) menu.append(item) menu.append(gtk.SeparatorMenuItem()) item = gtk.ImageMenuItem(_('Podcast settings')) item.set_image(gtk.image_new_from_stock(gtk.STOCK_INFO, gtk.ICON_SIZE_MENU)) item.connect('activate', self.on_itemEditChannel_activate) menu.append(item) menu.show_all() # Disable tooltips while we are showing the menu, so # the tooltip will not appear over the menu self.treeview_allow_tooltips(self.treeChannels, False) menu.connect('deactivate', lambda menushell: self.treeview_allow_tooltips(self.treeChannels, True)) if event is None: func = TreeViewHelper.make_popup_position_func(treeview) menu.popup(None, None, func, 3, 0) else: menu.popup(None, None, None, event.button, event.time) return True def cover_download_finished(self, channel, pixbuf): """ The Cover Downloader calls this when it has finished downloading (or registering, if already downloaded) a new channel cover, which is ready for displaying. """ util.idle_add(self.podcast_list_model.add_cover_by_channel, channel, pixbuf) def save_episodes_as_file(self, episodes): for episode in episodes: self.save_episode_as_file(episode) def save_episode_as_file(self, episode): PRIVATE_FOLDER_ATTRIBUTE = '_save_episodes_as_file_folder' if episode.was_downloaded(and_exists=True): folder = getattr(self, PRIVATE_FOLDER_ATTRIBUTE, None) copy_from = episode.local_filename(create=False) assert copy_from is not None copy_to = util.sanitize_filename(episode.sync_filename()) (result, folder) = self.show_copy_dialog(src_filename=copy_from, dst_filename=copy_to, dst_directory=folder) setattr(self, PRIVATE_FOLDER_ATTRIBUTE, folder) def copy_episodes_bluetooth(self, episodes): episodes_to_copy = [e for e in episodes if e.was_downloaded(and_exists=True)] def convert_and_send_thread(episode): for episode in episodes: filename = episode.local_filename(create=False) assert filename is not None destfile = os.path.join(tempfile.gettempdir(), \ util.sanitize_filename(episode.sync_filename())) (base, ext) = os.path.splitext(filename) if not destfile.endswith(ext): destfile += ext try: shutil.copyfile(filename, destfile) util.bluetooth_send_file(destfile) except: logger.error('Cannot copy "%s" to "%s".', filename, destfile) self.notification(_('Error converting file.'), _('Bluetooth file transfer'), important=True) util.delete_file(destfile) util.run_in_background(lambda: convert_and_send_thread(episodes_to_copy)) def _add_sub_menu(self, menu, label): root_item = gtk.MenuItem(label) menu.append(root_item) sub_menu = gtk.Menu() root_item.set_submenu(sub_menu) return sub_menu def _submenu_item_activate_hack(self, item, callback, *args): # See http://stackoverflow.com/questions/5221326/submenu-item-does-not-call-function-with-working-solution # Note that we can't just call the callback on button-press-event, as # it might be blocking (see http://gpodder.org/bug/1778), so we run # this in the GUI thread at a later point in time (util.idle_add). # Also, we also have to connect to the activate signal, as this is the # only signal that is fired when keyboard navigation is used. # It can happen that both (button-release-event and activate) signals # are fired, and we must avoid calling the callback twice. We do this # using a semaphore and only acquiring (but never releasing) it, making # sure that the util.idle_add() call below is only ever called once. only_once = threading.Semaphore(1) def handle_event(item, event=None): if only_once.acquire(False): util.idle_add(callback, *args) item.connect('button-press-event', handle_event) item.connect('activate', handle_event) def treeview_available_show_context_menu(self, treeview, event=None): model, paths = self.treeview_handle_context_menu_click(treeview, event) if not paths: if not hasattr(treeview, 'is_rubber_banding_active'): return True else: return not treeview.is_rubber_banding_active() if event is None or event.button == 3: episodes = self.get_selected_episodes() any_locked = any(e.archive for e in episodes) any_new = any(e.is_new for e in episodes) downloaded = all(e.was_downloaded(and_exists=True) for e in episodes) downloading = any(e.downloading for e in episodes) menu = gtk.Menu() (can_play, can_download, can_cancel, can_delete, open_instead_of_play) = self.play_or_download() if open_instead_of_play: item = gtk.ImageMenuItem(gtk.STOCK_OPEN) elif downloaded: item = gtk.ImageMenuItem(gtk.STOCK_MEDIA_PLAY) else: if downloading: item = gtk.ImageMenuItem(_('Preview')) else: item = gtk.ImageMenuItem(_('Stream')) item.set_image(gtk.image_new_from_stock(gtk.STOCK_MEDIA_PLAY, gtk.ICON_SIZE_MENU)) item.set_sensitive(can_play) item.connect('activate', self.on_playback_selected_episodes) menu.append(item) if not can_cancel: item = gtk.ImageMenuItem(_('Download')) item.set_image(gtk.image_new_from_stock(gtk.STOCK_GO_DOWN, gtk.ICON_SIZE_MENU)) item.set_sensitive(can_download) item.connect('activate', self.on_download_selected_episodes) menu.append(item) else: item = gtk.ImageMenuItem(gtk.STOCK_CANCEL) item.connect('activate', self.on_item_cancel_download_activate) menu.append(item) item = gtk.ImageMenuItem(gtk.STOCK_DELETE) item.set_sensitive(can_delete) item.connect('activate', self.on_btnDownloadedDelete_clicked) menu.append(item) result = gpodder.user_extensions.on_episodes_context_menu(episodes) if result: menu.append(gtk.SeparatorMenuItem()) submenus = {} for label, callback in result: key, sep, title = label.rpartition('/') item = gtk.ImageMenuItem(title) self._submenu_item_activate_hack(item, callback, episodes) if key: if key not in submenus: sub_menu = self._add_sub_menu(menu, key) submenus[key] = sub_menu else: sub_menu = submenus[key] sub_menu.append(item) else: menu.append(item) # Ok, this probably makes sense to only display for downloaded files if downloaded: menu.append(gtk.SeparatorMenuItem()) share_menu = self._add_sub_menu(menu, _('Send to')) item = gtk.ImageMenuItem(_('Local folder')) item.set_image(gtk.image_new_from_stock(gtk.STOCK_DIRECTORY, gtk.ICON_SIZE_MENU)) self._submenu_item_activate_hack(item, self.save_episodes_as_file, episodes) share_menu.append(item) if self.bluetooth_available: item = gtk.ImageMenuItem(_('Bluetooth device')) item.set_image(gtk.image_new_from_icon_name('bluetooth', gtk.ICON_SIZE_MENU)) self._submenu_item_activate_hack(item, self.copy_episodes_bluetooth, episodes) share_menu.append(item) menu.append(gtk.SeparatorMenuItem()) item = gtk.CheckMenuItem(_('New')) item.set_active(any_new) if any_new: item.connect('activate', lambda w: self.mark_selected_episodes_old()) else: item.connect('activate', lambda w: self.mark_selected_episodes_new()) menu.append(item) if downloaded: item = gtk.CheckMenuItem(_('Archive')) item.set_active(any_locked) item.connect('activate', lambda w: self.on_item_toggle_lock_activate( w, False, not any_locked)) menu.append(item) menu.append(gtk.SeparatorMenuItem()) # Single item, add episode information menu item item = gtk.ImageMenuItem(_('Episode details')) item.set_image(gtk.image_new_from_stock( gtk.STOCK_INFO, gtk.ICON_SIZE_MENU)) item.connect('activate', self.on_shownotes_selected_episodes) menu.append(item) menu.show_all() # Disable tooltips while we are showing the menu, so # the tooltip will not appear over the menu self.treeview_allow_tooltips(self.treeAvailable, False) menu.connect('deactivate', lambda menushell: self.treeview_allow_tooltips(self.treeAvailable, True)) if event is None: func = TreeViewHelper.make_popup_position_func(treeview) menu.popup(None, None, func, 3, 0) else: menu.popup(None, None, None, event.button, event.time) return True def set_title(self, new_title): self.default_title = new_title self.gPodder.set_title(new_title) def update_episode_list_icons(self, urls=None, selected=False, all=False): """ Updates the status icons in the episode list. If urls is given, it should be a list of URLs of episodes that should be updated. If urls is None, set ONE OF selected, all to True (the former updates just the selected episodes and the latter updates all episodes). """ descriptions = self.config.episode_list_descriptions if urls is not None: # We have a list of URLs to walk through self.episode_list_model.update_by_urls(urls, descriptions) elif selected and not all: # We should update all selected episodes selection = self.treeAvailable.get_selection() model, paths = selection.get_selected_rows() for path in reversed(paths): iter = model.get_iter(path) self.episode_list_model.update_by_filter_iter(iter, descriptions) elif all and not selected: # We update all (even the filter-hidden) episodes self.episode_list_model.update_all(descriptions) else: # Wrong/invalid call - have to specify at least one parameter raise ValueError('Invalid call to update_episode_list_icons') def episode_list_status_changed(self, episodes): self.update_episode_list_icons(set(e.url for e in episodes)) self.update_podcast_list_model(set(e.channel.url for e in episodes)) self.db.commit() def streaming_possible(self): # User has to have a media player set on the Desktop, or else we # would probably open the browser when giving a URL to xdg-open.. return (self.config.player and self.config.player != 'default') def playback_episodes_for_real(self, episodes): groups = collections.defaultdict(list) for episode in episodes: file_type = episode.file_type() if file_type == 'video' and self.config.videoplayer and \ self.config.videoplayer != 'default': player = self.config.videoplayer elif file_type == 'audio' and self.config.player and \ self.config.player != 'default': player = self.config.player else: player = 'default' # Mark episode as played in the database episode.playback_mark() self.mygpo_client.on_playback([episode]) fmt_ids = youtube.get_fmt_ids(self.config.youtube) vimeo_fmt = self.config.vimeo.fileformat allow_partial = (player != 'default') filename = episode.get_playback_url(fmt_ids, vimeo_fmt, allow_partial) # Determine the playback resume position - if the file # was played 100%, we simply start from the beginning resume_position = episode.current_position if resume_position == episode.total_time: resume_position = 0 # If Panucci is configured, use D-Bus to call it if player == 'panucci': try: PANUCCI_NAME = 'org.panucci.panucciInterface' PANUCCI_PATH = '/panucciInterface' PANUCCI_INTF = 'org.panucci.panucciInterface' o = gpodder.dbus_session_bus.get_object(PANUCCI_NAME, PANUCCI_PATH) i = dbus.Interface(o, PANUCCI_INTF) def on_reply(*args): pass def error_handler(filename, err): logger.error('Exception in D-Bus call: %s', str(err)) # Fallback: use the command line client for command in util.format_desktop_command('panucci', \ [filename]): logger.info('Executing: %s', repr(command)) subprocess.Popen(command) on_error = lambda err: error_handler(filename, err) # This method only exists in Panucci > 0.9 ('new Panucci') i.playback_from(filename, resume_position, \ reply_handler=on_reply, error_handler=on_error) continue # This file was handled by the D-Bus call except Exception, e: logger.error('Calling Panucci using D-Bus', exc_info=True) groups[player].append(filename) # Open episodes with system default player if 'default' in groups: for filename in groups['default']: logger.debug('Opening with system default: %s', filename) util.gui_open(filename) del groups['default'] # For each type now, go and create play commands for group in groups: for command in util.format_desktop_command(group, groups[group], resume_position): logger.debug('Executing: %s', repr(command)) subprocess.Popen(command) # Persist episode status changes to the database self.db.commit() # Flush updated episode status if self.mygpo_client.can_access_webservice(): self.mygpo_client.flush() def playback_episodes(self, episodes): # We need to create a list, because we run through it more than once episodes = list(Model.sort_episodes_by_pubdate(e for e in episodes if \ e.was_downloaded(and_exists=True) or self.streaming_possible())) try: self.playback_episodes_for_real(episodes) except Exception, e: logger.error('Error in playback!', exc_info=True) self.show_message(_('Please check your media player settings in the preferences dialog.'), \ _('Error opening player'), widget=self.toolPreferences) self.episode_list_status_changed(episodes) def play_or_download(self): if self.wNotebook.get_current_page() > 0: self.toolCancel.set_sensitive(True) return (False, False, False, False, False, False) if self.currently_updating: return (False, False, False, False, False, False) ( can_play, can_download, can_cancel, can_delete ) = (False,)*4 ( is_played, is_locked ) = (False,)*2 open_instead_of_play = False selection = self.treeAvailable.get_selection() if selection.count_selected_rows() > 0: (model, paths) = selection.get_selected_rows() for path in paths: try: episode = model.get_value(model.get_iter(path), EpisodeListModel.C_EPISODE) except TypeError, te: logger.error('Invalid episode at path %s', str(path)) continue if episode.file_type() not in ('audio', 'video'): open_instead_of_play = True if episode.was_downloaded(): can_play = episode.was_downloaded(and_exists=True) is_played = not episode.is_new is_locked = episode.archive if not can_play: can_download = True else: if episode.downloading: can_cancel = True else: can_download = True can_download = can_download and not can_cancel can_play = self.streaming_possible() or (can_play and not can_cancel and not can_download) can_delete = not can_cancel if open_instead_of_play: self.toolPlay.set_stock_id(gtk.STOCK_OPEN) else: self.toolPlay.set_stock_id(gtk.STOCK_MEDIA_PLAY) self.toolPlay.set_sensitive( can_play) self.toolDownload.set_sensitive( can_download) self.toolCancel.set_sensitive( can_cancel) self.item_cancel_download.set_sensitive(can_cancel) self.itemDownloadSelected.set_sensitive(can_download) self.itemOpenSelected.set_sensitive(can_play) self.itemPlaySelected.set_sensitive(can_play) self.itemDeleteSelected.set_sensitive(can_delete) self.item_toggle_played.set_sensitive(can_play) self.item_toggle_lock.set_sensitive(can_play) self.itemOpenSelected.set_visible(open_instead_of_play) self.itemPlaySelected.set_visible(not open_instead_of_play) return (can_play, can_download, can_cancel, can_delete, open_instead_of_play) def on_cbMaxDownloads_toggled(self, widget, *args): self.spinMaxDownloads.set_sensitive(self.cbMaxDownloads.get_active()) def on_cbLimitDownloads_toggled(self, widget, *args): self.spinLimitDownloads.set_sensitive(self.cbLimitDownloads.get_active()) def episode_new_status_changed(self, urls): self.update_podcast_list_model() self.update_episode_list_icons(urls) def update_podcast_list_model(self, urls=None, selected=False, select_url=None, sections_changed=False): """Update the podcast list treeview model If urls is given, it should list the URLs of each podcast that has to be updated in the list. If selected is True, only update the model contents for the currently-selected podcast - nothing more. The caller can optionally specify "select_url", which is the URL of the podcast that is to be selected in the list after the update is complete. This only works if the podcast list has to be reloaded; i.e. something has been added or removed since the last update of the podcast list). """ selection = self.treeChannels.get_selection() model, iter = selection.get_selected() is_section = lambda r: r[PodcastListModel.C_URL] == '-' is_separator = lambda r: r[PodcastListModel.C_SEPARATOR] sections_active = any(is_section(x) for x in self.podcast_list_model) if self.config.podcast_list_view_all: # Update "all episodes" view in any case (if enabled) self.podcast_list_model.update_first_row() # List model length minus 1, because of "All" list_model_length = len(self.podcast_list_model) - 1 else: list_model_length = len(self.podcast_list_model) force_update = (sections_active != self.config.podcast_list_sections or sections_changed) # Filter items in the list model that are not podcasts, so we get the # correct podcast list count (ignore section headers and separators) is_not_podcast = lambda r: is_section(r) or is_separator(r) list_model_length -= len(filter(is_not_podcast, self.podcast_list_model)) if selected and not force_update: # very cheap! only update selected channel if iter is not None: # If we have selected the "all episodes" view, we have # to update all channels for selected episodes: if self.config.podcast_list_view_all and \ self.podcast_list_model.iter_is_first_row(iter): urls = self.get_podcast_urls_from_selected_episodes() self.podcast_list_model.update_by_urls(urls) else: # Otherwise just update the selected row (a podcast) self.podcast_list_model.update_by_filter_iter(iter) if self.config.podcast_list_sections: self.podcast_list_model.update_sections() elif list_model_length == len(self.channels) and not force_update: # we can keep the model, but have to update some if urls is None: # still cheaper than reloading the whole list self.podcast_list_model.update_all() else: # ok, we got a bunch of urls to update self.podcast_list_model.update_by_urls(urls) if self.config.podcast_list_sections: self.podcast_list_model.update_sections() else: if model and iter and select_url is None: # Get the URL of the currently-selected podcast select_url = model.get_value(iter, PodcastListModel.C_URL) # Update the podcast list model with new channels self.podcast_list_model.set_channels(self.db, self.config, self.channels) try: selected_iter = model.get_iter_first() # Find the previously-selected URL in the new # model if we have an URL (else select first) if select_url is not None: pos = model.get_iter_first() while pos is not None: url = model.get_value(pos, PodcastListModel.C_URL) if url == select_url: selected_iter = pos break pos = model.iter_next(pos) if selected_iter is not None: selection.select_iter(selected_iter) self.on_treeChannels_cursor_changed(self.treeChannels) except: logger.error('Cannot select podcast in list', exc_info=True) def on_episode_list_filter_changed(self, has_episodes): pass # XXX: Remove? def update_episode_list_model(self): if self.channels and self.active_channel is not None: self.currently_updating = True self.episode_list_model.clear() def update(): descriptions = self.config.episode_list_descriptions self.episode_list_model.replace_from_channel(self.active_channel, descriptions) self.treeAvailable.get_selection().unselect_all() self.treeAvailable.scroll_to_point(0, 0) self.currently_updating = False self.play_or_download() util.idle_add(update) else: self.episode_list_model.clear() @dbus.service.method(gpodder.dbus_interface) def offer_new_episodes(self, channels=None): new_episodes = self.get_new_episodes(channels) if new_episodes: self.new_episodes_show(new_episodes) return True return False def add_podcast_list(self, podcasts, auth_tokens=None): """Subscribe to a list of podcast given (title, url) pairs If auth_tokens is given, it should be a dictionary mapping URLs to (username, password) tuples.""" if auth_tokens is None: auth_tokens = {} existing_urls = set(podcast.url for podcast in self.channels) # For a given URL, the desired title (or None) title_for_url = {} # Sort and split the URL list into five buckets queued, failed, existing, worked, authreq = [], [], [], [], [] for input_title, input_url in podcasts: url = util.normalize_feed_url(input_url) # Check if it's a YouTube feed, and if we have an API key, auto-resolve the channel url = youtube.resolve_v3_url(url, self.config.youtube.api_key_v3) if url is None: # Fail this one because the URL is not valid failed.append(input_url) elif url in existing_urls: # A podcast already exists in the list for this URL existing.append(url) # XXX: Should we try to update the title of the existing # subscription from input_title here if it is different? else: # This URL has survived the first round - queue for add title_for_url[url] = input_title queued.append(url) if url != input_url and input_url in auth_tokens: auth_tokens[url] = auth_tokens[input_url] error_messages = {} redirections = {} progress = ProgressIndicator(_('Adding podcasts'), \ _('Please wait while episode information is downloaded.'), \ parent=self.get_dialog_parent()) def on_after_update(): progress.on_finished() # Report already-existing subscriptions to the user if existing: title = _('Existing subscriptions skipped') message = _('You are already subscribed to these podcasts:') \ + '\n\n' + '\n'.join(cgi.escape(url) for url in existing) self.show_message(message, title, widget=self.treeChannels) # Report subscriptions that require authentication retry_podcasts = {} if authreq: for url in authreq: title = _('Podcast requires authentication') message = _('Please login to %s:') % (cgi.escape(url),) success, auth_tokens = self.show_login_dialog(title, message) if success: retry_podcasts[url] = auth_tokens else: # Stop asking the user for more login data retry_podcasts = {} for url in authreq: error_messages[url] = _('Authentication failed') failed.append(url) break # Report website redirections for url in redirections: title = _('Website redirection detected') message = _('The URL %(url)s redirects to %(target)s.') \ + '\n\n' + _('Do you want to visit the website now?') message = message % {'url': url, 'target': redirections[url]} if self.show_confirmation(message, title): util.open_website(url) else: break # Report failed subscriptions to the user if failed: title = _('Could not add some podcasts') message = _('Some podcasts could not be added to your list:') \ + '\n\n' + '\n'.join(cgi.escape('%s: %s' % (url, \ error_messages.get(url, _('Unknown')))) for url in failed) self.show_message(message, title, important=True) # Upload subscription changes to gpodder.net self.mygpo_client.on_subscribe(worked) # Fix URLs if mygpo has rewritten them self.rewrite_urls_mygpo() # If only one podcast was added, select it after the update if len(worked) == 1: url = worked[0] else: url = None # Update the list of subscribed podcasts self.update_podcast_list_model(select_url=url) # If we have authentication data to retry, do so here if retry_podcasts: podcasts = [(title_for_url.get(url), url) for url in retry_podcasts.keys()] self.add_podcast_list(podcasts, retry_podcasts) # This will NOT show new episodes for podcasts that have # been added ("worked"), but it will prevent problems with # multiple dialogs being open at the same time ;) return # Offer to download new episodes episodes = [] for podcast in self.channels: if podcast.url in worked: episodes.extend(podcast.get_all_episodes()) if episodes: episodes = list(Model.sort_episodes_by_pubdate(episodes, \ reverse=True)) self.new_episodes_show(episodes, \ selected=[e.check_is_new() for e in episodes]) @util.run_in_background def thread_proc(): # After the initial sorting and splitting, try all queued podcasts length = len(queued) for index, url in enumerate(queued): title = title_for_url.get(url) progress.on_progress(float(index)/float(length)) progress.on_message(title or url) try: # The URL is valid and does not exist already - subscribe! channel = self.model.load_podcast(url=url, create=True, \ authentication_tokens=auth_tokens.get(url, None), \ max_episodes=self.config.max_episodes_per_feed) try: username, password = util.username_password_from_url(url) except ValueError, ve: username, password = (None, None) if title is not None: # Prefer title from subscription source (bug 1711) channel.title = title if username is not None and channel.auth_username is None and \ password is not None and channel.auth_password is None: channel.auth_username = username channel.auth_password = password channel.save() self._update_cover(channel) except feedcore.AuthenticationRequired: if url in auth_tokens: # Fail for wrong authentication data error_messages[url] = _('Authentication failed') failed.append(url) else: # Queue for login dialog later authreq.append(url) continue except feedcore.WifiLogin, error: redirections[url] = error.data failed.append(url) error_messages[url] = _('Redirection detected') continue except Exception, e: logger.error('Subscription error: %s', e, exc_info=True) error_messages[url] = str(e) failed.append(url) continue assert channel is not None worked.append(channel.url) util.idle_add(on_after_update) def find_episode(self, podcast_url, episode_url): """Find an episode given its podcast and episode URL The function will return a PodcastEpisode object if the episode is found, or None if it's not found. """ for podcast in self.channels: if podcast_url == podcast.url: for episode in podcast.get_all_episodes(): if episode_url == episode.url: return episode return None def process_received_episode_actions(self): """Process/merge episode actions from gpodder.net This function will merge all changes received from the server to the local database and update the status of the affected episodes as necessary. """ indicator = ProgressIndicator(_('Merging episode actions'), \ _('Episode actions from gpodder.net are merged.'), \ False, self.get_dialog_parent()) while gtk.events_pending(): gtk.main_iteration(False) self.mygpo_client.process_episode_actions(self.find_episode) indicator.on_finished() self.db.commit() def _update_cover(self, channel): if channel is not None: self.cover_downloader.request_cover(channel) def show_update_feeds_buttons(self): # Make sure that the buttons for updating feeds # appear - this should happen after a feed update self.hboxUpdateFeeds.hide() self.btnUpdateFeeds.show() self.itemUpdate.set_sensitive(True) self.itemUpdateChannel.set_sensitive(True) def on_btnCancelFeedUpdate_clicked(self, widget): if not self.feed_cache_update_cancelled: self.pbFeedUpdate.set_text(_('Cancelling...')) self.feed_cache_update_cancelled = True self.btnCancelFeedUpdate.set_sensitive(False) else: self.show_update_feeds_buttons() def update_feed_cache(self, channels=None, show_new_episodes_dialog=True): if not util.connection_available(): self.show_message(_('Please connect to a network, then try again.'), _('No network connection'), important=True) return # Fix URLs if mygpo has rewritten them self.rewrite_urls_mygpo() if channels is None: # Only update podcasts for which updates are enabled channels = [c for c in self.channels if not c.pause_subscription] self.itemUpdate.set_sensitive(False) self.itemUpdateChannel.set_sensitive(False) self.feed_cache_update_cancelled = False self.btnCancelFeedUpdate.show() self.btnCancelFeedUpdate.set_sensitive(True) self.btnCancelFeedUpdate.set_image(gtk.image_new_from_stock(gtk.STOCK_STOP, gtk.ICON_SIZE_BUTTON)) self.hboxUpdateFeeds.show_all() self.btnUpdateFeeds.hide() count = len(channels) text = N_('Updating %(count)d feed...', 'Updating %(count)d feeds...', count) % {'count':count} self.pbFeedUpdate.set_text(text) self.pbFeedUpdate.set_fraction(0) @util.run_in_background def update_feed_cache_proc(): updated_channels = [] for updated, channel in enumerate(channels): if self.feed_cache_update_cancelled: break try: channel.update(max_episodes=self.config.max_episodes_per_feed) self._update_cover(channel) except Exception, e: d = {'url': cgi.escape(channel.url), 'message': cgi.escape(str(e))} if d['message']: message = _('Error while updating %(url)s: %(message)s') else: message = _('The feed at %(url)s could not be updated.') self.notification(message % d, _('Error while updating feed'), widget=self.treeChannels) logger.error('Error: %s', str(e), exc_info=True) updated_channels.append(channel) def update_progress(channel): self.update_podcast_list_model([channel.url]) # If the currently-viewed podcast is updated, reload episodes if self.active_channel is not None and \ self.active_channel == channel: logger.debug('Updated channel is active, updating UI') self.update_episode_list_model() d = {'podcast': channel.title, 'position': updated+1, 'total': count} progression = _('Updated %(podcast)s (%(position)d/%(total)d)') % d self.pbFeedUpdate.set_text(progression) self.pbFeedUpdate.set_fraction(float(updated+1)/float(count)) util.idle_add(update_progress, channel) def update_feed_cache_finish_callback(): # Process received episode actions for all updated URLs self.process_received_episode_actions() # If we are currently viewing "All episodes", update its episode list now if self.active_channel is not None and \ getattr(self.active_channel, 'ALL_EPISODES_PROXY', False): self.update_episode_list_model() if self.feed_cache_update_cancelled: # The user decided to abort the feed update self.show_update_feeds_buttons() # Only search for new episodes in podcasts that have been # updated, not in other podcasts (for single-feed updates) episodes = self.get_new_episodes([c for c in updated_channels]) if self.config.downloads.chronological_order: # download older episodes first episodes = list(Model.sort_episodes_by_pubdate(episodes)) if not episodes: # Nothing new here - but inform the user self.pbFeedUpdate.set_fraction(1.0) self.pbFeedUpdate.set_text(_('No new episodes')) self.feed_cache_update_cancelled = True self.btnCancelFeedUpdate.show() self.btnCancelFeedUpdate.set_sensitive(True) self.itemUpdate.set_sensitive(True) self.btnCancelFeedUpdate.set_image(gtk.image_new_from_stock(gtk.STOCK_APPLY, gtk.ICON_SIZE_BUTTON)) else: count = len(episodes) # New episodes are available self.pbFeedUpdate.set_fraction(1.0) if self.config.auto_download == 'download': self.download_episode_list(episodes) title = N_('Downloading %(count)d new episode.', 'Downloading %(count)d new episodes.', count) % {'count':count} self.show_message(title, _('New episodes available'), widget=self.labelDownloads) elif self.config.auto_download == 'queue': self.download_episode_list_paused(episodes) title = N_('%(count)d new episode added to download list.', '%(count)d new episodes added to download list.', count) % {'count':count} self.show_message(title, _('New episodes available'), widget=self.labelDownloads) else: if (show_new_episodes_dialog and self.config.auto_download == 'show'): self.new_episodes_show(episodes, notification=True) else: # !show_new_episodes_dialog or auto_download == 'ignore' message = N_('%(count)d new episode available', '%(count)d new episodes available', count) % {'count':count} self.pbFeedUpdate.set_text(message) self.show_update_feeds_buttons() util.idle_add(update_feed_cache_finish_callback) def on_gPodder_delete_event(self, widget, *args): """Called when the GUI wants to close the window Displays a confirmation dialog (and closes/hides gPodder) """ downloading = self.download_status_model.are_downloads_in_progress() if downloading: dialog = gtk.MessageDialog(self.gPodder, gtk.DIALOG_MODAL, gtk.MESSAGE_QUESTION, gtk.BUTTONS_NONE) dialog.add_button(gtk.STOCK_CANCEL, gtk.RESPONSE_CANCEL) quit_button = dialog.add_button(gtk.STOCK_QUIT, gtk.RESPONSE_CLOSE) title = _('Quit gPodder') message = _('You are downloading episodes. You can resume downloads the next time you start gPodder. Do you want to quit now?') dialog.set_title(title) dialog.set_markup('%s\n\n%s'%(title, message)) quit_button.grab_focus() result = dialog.run() dialog.destroy() if result == gtk.RESPONSE_CLOSE: self.close_gpodder() else: self.close_gpodder() return True def quit_cb(self, macapp): """Called when OSX wants to quit the app (Cmd-Q or gPodder > Quit) """ # Event can't really be cancelled - don't even try self.close_gpodder() return False def close_gpodder(self): """ clean everything and exit properly """ self.gPodder.hide() # Notify all tasks to to carry out any clean-up actions self.download_status_model.tell_all_tasks_to_quit() while gtk.events_pending(): gtk.main_iteration(False) self.core.shutdown() self.quit() if macapp is None: sys.exit(0) def delete_episode_list(self, episodes, confirm=True, skip_locked=True, callback=None): if not episodes: return False if skip_locked: episodes = [e for e in episodes if not e.archive] if not episodes: title = _('Episodes are locked') message = _('The selected episodes are locked. Please unlock the episodes that you want to delete before trying to delete them.') self.notification(message, title, widget=self.treeAvailable) return False count = len(episodes) title = N_('Delete %(count)d episode?', 'Delete %(count)d episodes?', count) % {'count':count} message = _('Deleting episodes removes downloaded files.') if confirm and not self.show_confirmation(message, title): return False progress = ProgressIndicator(_('Deleting episodes'), \ _('Please wait while episodes are deleted'), \ parent=self.get_dialog_parent()) def finish_deletion(episode_urls, channel_urls): progress.on_finished() # Episodes have been deleted - persist the database self.db.commit() self.update_episode_list_icons(episode_urls) self.update_podcast_list_model(channel_urls) self.play_or_download() @util.run_in_background def thread_proc(): episode_urls = set() channel_urls = set() episodes_status_update = [] for idx, episode in enumerate(episodes): progress.on_progress(float(idx)/float(len(episodes))) if not episode.archive or not skip_locked: progress.on_message(episode.title) episode.delete_from_disk() episode_urls.add(episode.url) channel_urls.add(episode.channel.url) episodes_status_update.append(episode) # Notify the web service about the status update + upload if self.mygpo_client.can_access_webservice(): self.mygpo_client.on_delete(episodes_status_update) self.mygpo_client.flush() if callback is None: util.idle_add(finish_deletion, episode_urls, channel_urls) else: util.idle_add(callback, episode_urls, channel_urls, progress) return True def on_itemRemoveOldEpisodes_activate(self, widget): self.show_delete_episodes_window() def show_delete_episodes_window(self, channel=None): """Offer deletion of episodes If channel is None, offer deletion of all episodes. Otherwise only offer deletion of episodes in the channel. """ columns = ( ('markup_delete_episodes', None, None, _('Episode')), ) msg_older_than = N_('Select older than %(count)d day', 'Select older than %(count)d days', self.config.episode_old_age) selection_buttons = { _('Select played'): lambda episode: not episode.is_new, _('Select finished'): lambda episode: episode.is_finished(), msg_older_than % {'count':self.config.episode_old_age}: lambda episode: episode.age_in_days() > self.config.episode_old_age, } instructions = _('Select the episodes you want to delete:') if channel is None: channels = self.channels else: channels = [channel] episodes = [] for channel in channels: for episode in channel.get_episodes(gpodder.STATE_DOWNLOADED): # Disallow deletion of locked episodes that still exist if not episode.archive or not episode.file_exists(): episodes.append(episode) selected = [not e.is_new or not e.file_exists() for e in episodes] gPodderEpisodeSelector(self.gPodder, title = _('Delete episodes'), instructions = instructions, \ episodes = episodes, selected = selected, columns = columns, \ stock_ok_button = gtk.STOCK_DELETE, callback = self.delete_episode_list, \ selection_buttons = selection_buttons, _config=self.config) def on_selected_episodes_status_changed(self): # The order of the updates here is important! When "All episodes" is # selected, the update of the podcast list model depends on the episode # list selection to determine which podcasts are affected. Updating # the episode list could remove the selection if a filter is active. self.update_podcast_list_model(selected=True) self.update_episode_list_icons(selected=True) self.db.commit() def mark_selected_episodes_new(self): for episode in self.get_selected_episodes(): episode.mark_new() self.on_selected_episodes_status_changed() def mark_selected_episodes_old(self): for episode in self.get_selected_episodes(): episode.mark_old() self.on_selected_episodes_status_changed() def on_item_toggle_played_activate( self, widget, toggle = True, new_value = False): for episode in self.get_selected_episodes(): if toggle: episode.mark(is_played=episode.is_new) else: episode.mark(is_played=new_value) self.on_selected_episodes_status_changed() def on_item_toggle_lock_activate(self, widget, toggle=True, new_value=False): for episode in self.get_selected_episodes(): if toggle: episode.mark(is_locked=not episode.archive) else: episode.mark(is_locked=new_value) self.on_selected_episodes_status_changed() def on_channel_toggle_lock_activate(self, widget, toggle=True, new_value=False): if self.active_channel is None: return self.active_channel.auto_archive_episodes = not self.active_channel.auto_archive_episodes self.active_channel.save() for episode in self.active_channel.get_all_episodes(): episode.mark(is_locked=self.active_channel.auto_archive_episodes) self.update_podcast_list_model(selected=True) self.update_episode_list_icons(all=True) def on_itemUpdateChannel_activate(self, widget=None): if self.active_channel is None: title = _('No podcast selected') message = _('Please select a podcast in the podcasts list to update.') self.show_message( message, title, widget=self.treeChannels) return # Dirty hack to check for "All episodes" (see gpodder.gtkui.model) if getattr(self.active_channel, 'ALL_EPISODES_PROXY', False): self.update_feed_cache() else: self.update_feed_cache(channels=[self.active_channel]) def on_itemUpdate_activate(self, widget=None): # Check if we have outstanding subscribe/unsubscribe actions self.on_add_remove_podcasts_mygpo() if self.channels: self.update_feed_cache() else: def show_welcome_window(): def on_show_example_podcasts(widget): welcome_window.main_window.response(gtk.RESPONSE_CANCEL) self.on_itemImportChannels_activate(None) def on_add_podcast_via_url(widget): welcome_window.main_window.response(gtk.RESPONSE_CANCEL) self.on_itemAddChannel_activate(None) def on_setup_my_gpodder(widget): welcome_window.main_window.response(gtk.RESPONSE_CANCEL) self.on_download_subscriptions_from_mygpo(None) welcome_window = gPodderWelcome(self.main_window, center_on_widget=self.main_window, on_show_example_podcasts=on_show_example_podcasts, on_add_podcast_via_url=on_add_podcast_via_url, on_setup_my_gpodder=on_setup_my_gpodder) welcome_window.main_window.run() welcome_window.main_window.destroy() util.idle_add(show_welcome_window) def download_episode_list_paused(self, episodes): self.download_episode_list(episodes, True) def download_episode_list(self, episodes, add_paused=False, force_start=False): enable_update = False if self.config.downloads.chronological_order: # Download episodes in chronological order (older episodes first) episodes = list(Model.sort_episodes_by_pubdate(episodes)) for episode in episodes: logger.debug('Downloading episode: %s', episode.title) if not episode.was_downloaded(and_exists=True): task_exists = False for task in self.download_tasks_seen: if episode.url == task.url: task_exists = True if task.status not in (task.DOWNLOADING, task.QUEUED): self.download_queue_manager.add_task(task, force_start) enable_update = True continue if task_exists: continue try: task = download.DownloadTask(episode, self.config) except Exception, e: d = {'episode': episode.title, 'message': str(e)} message = _('Download error while downloading %(episode)s: %(message)s') self.show_message(message % d, _('Download error'), important=True) logger.error('While downloading %s', episode.title, exc_info=True) continue if add_paused: task.status = task.PAUSED else: self.mygpo_client.on_download([task.episode]) self.download_queue_manager.add_task(task, force_start) self.download_status_model.register_task(task) enable_update = True if enable_update: self.enable_download_list_update() # Flush updated episode status if self.mygpo_client.can_access_webservice(): self.mygpo_client.flush() def cancel_task_list(self, tasks): if not tasks: return for task in tasks: if task.status in (task.QUEUED, task.DOWNLOADING): task.status = task.CANCELLED elif task.status == task.PAUSED: task.status = task.CANCELLED # Call run, so the partial file gets deleted task.run() self.update_episode_list_icons([task.url for task in tasks]) self.play_or_download() # Update the tab title and downloads list self.update_downloads_list() def new_episodes_show(self, episodes, notification=False, selected=None): columns = ( ('markup_new_episodes', None, None, _('Episode')), ) instructions = _('Select the episodes you want to download:') if self.new_episodes_window is not None: self.new_episodes_window.main_window.destroy() self.new_episodes_window = None def download_episodes_callback(episodes): self.new_episodes_window = None self.download_episode_list(episodes) if selected is None: # Select all by default selected = [True]*len(episodes) self.new_episodes_window = gPodderEpisodeSelector(self.gPodder, \ title=_('New episodes available'), \ instructions=instructions, \ episodes=episodes, \ columns=columns, \ selected=selected, \ stock_ok_button = 'gpodder-download', \ callback=download_episodes_callback, \ remove_callback=lambda e: e.mark_old(), \ remove_action=_('Mark as old'), \ remove_finished=self.episode_new_status_changed, \ _config=self.config, \ show_notification=False) def on_itemDownloadAllNew_activate(self, widget, *args): if not self.offer_new_episodes(): self.show_message(_('Please check for new episodes later.'), \ _('No new episodes available'), widget=self.btnUpdateFeeds) def get_new_episodes(self, channels=None): return [e for c in channels or self.channels for e in filter(lambda e: e.check_is_new(), c.get_all_episodes())] def commit_changes_to_database(self): """This will be called after the sync process is finished""" self.db.commit() def on_itemShowToolbar_activate(self, widget): self.config.show_toolbar = self.itemShowToolbar.get_active() def on_itemShowDescription_activate(self, widget): self.config.episode_list_descriptions = self.itemShowDescription.get_active() def on_item_view_hide_boring_podcasts_toggled(self, toggleaction): self.config.podcast_list_hide_boring = toggleaction.get_active() if self.config.podcast_list_hide_boring: self.podcast_list_model.set_view_mode(self.config.episode_list_view_mode) else: self.podcast_list_model.set_view_mode(-1) def on_item_view_episodes_changed(self, radioaction, current): if current == self.item_view_episodes_all: self.config.episode_list_view_mode = EpisodeListModel.VIEW_ALL elif current == self.item_view_episodes_undeleted: self.config.episode_list_view_mode = EpisodeListModel.VIEW_UNDELETED elif current == self.item_view_episodes_downloaded: self.config.episode_list_view_mode = EpisodeListModel.VIEW_DOWNLOADED elif current == self.item_view_episodes_unplayed: self.config.episode_list_view_mode = EpisodeListModel.VIEW_UNPLAYED self.episode_list_model.set_view_mode(self.config.episode_list_view_mode) if self.config.podcast_list_hide_boring: self.podcast_list_model.set_view_mode(self.config.episode_list_view_mode) def on_itemPreferences_activate(self, widget, *args): gPodderPreferences(self.main_window, \ _config=self.config, \ user_apps_reader=self.user_apps_reader, \ parent_window=self.main_window, \ mygpo_client=self.mygpo_client, \ on_send_full_subscriptions=self.on_send_full_subscriptions, \ on_itemExportChannels_activate=self.on_itemExportChannels_activate) def on_goto_mygpo(self, widget): self.mygpo_client.open_website() def on_download_subscriptions_from_mygpo(self, action=None): title = _('Login to gpodder.net') message = _('Please login to download your subscriptions.') def on_register_button_clicked(): util.open_website('http://gpodder.net/register/') success, (username, password) = self.show_login_dialog(title, message, self.config.mygpo.username, self.config.mygpo.password, register_callback=on_register_button_clicked) if not success: return self.config.mygpo.username = username self.config.mygpo.password = password dir = gPodderPodcastDirectory(self.gPodder, _config=self.config, \ custom_title=_('Subscriptions on gpodder.net'), \ add_podcast_list=self.add_podcast_list, hide_url_entry=True) # TODO: Refactor this into "gpodder.my" or mygpoclient, so that # we do not have to hardcode the URL here OPML_URL = 'http://gpodder.net/subscriptions/%s.opml' % self.config.mygpo.username url = util.url_add_authentication(OPML_URL, \ self.config.mygpo.username, \ self.config.mygpo.password) dir.download_opml_file(url) def on_itemAddChannel_activate(self, widget=None): self._add_podcast_dialog = gPodderAddPodcast(self.gPodder, \ add_podcast_list=self.add_podcast_list) def on_itemEditChannel_activate(self, widget, *args): if self.active_channel is None: title = _('No podcast selected') message = _('Please select a podcast in the podcasts list to edit.') self.show_message( message, title, widget=self.treeChannels) return gPodderChannel(self.main_window, channel=self.active_channel, update_podcast_list_model=self.update_podcast_list_model, cover_downloader=self.cover_downloader, sections=set(c.section for c in self.channels), clear_cover_cache=self.podcast_list_model.clear_cover_cache, _config=self.config) def on_itemMassUnsubscribe_activate(self, item=None): columns = ( ('title', None, None, _('Podcast')), ) # We're abusing the Episode Selector for selecting Podcasts here, # but it works and looks good, so why not? -- thp gPodderEpisodeSelector(self.main_window, \ title=_('Remove podcasts'), \ instructions=_('Select the podcast you want to remove.'), \ episodes=self.channels, \ columns=columns, \ size_attribute=None, \ stock_ok_button=_('Remove'), \ callback=self.remove_podcast_list, \ _config=self.config) def remove_podcast_list(self, channels, confirm=True): if not channels: return if len(channels) == 1: title = _('Removing podcast') info = _('Please wait while the podcast is removed') message = _('Do you really want to remove this podcast and its episodes?') else: title = _('Removing podcasts') info = _('Please wait while the podcasts are removed') message = _('Do you really want to remove the selected podcasts and their episodes?') if confirm and not self.show_confirmation(message, title): return progress = ProgressIndicator(title, info, parent=self.get_dialog_parent()) def finish_deletion(select_url): # Upload subscription list changes to the web service self.mygpo_client.on_unsubscribe([c.url for c in channels]) # Re-load the channels and select the desired new channel self.update_podcast_list_model(select_url=select_url) progress.on_finished() @util.run_in_background def thread_proc(): select_url = None for idx, channel in enumerate(channels): # Update the UI for correct status messages progress.on_progress(float(idx)/float(len(channels))) progress.on_message(channel.title) # Delete downloaded episodes channel.remove_downloaded() # cancel any active downloads from this channel for episode in channel.get_all_episodes(): if episode.downloading: episode.download_task.cancel() if len(channels) == 1: # get the URL of the podcast we want to select next if channel in self.channels: position = self.channels.index(channel) else: position = -1 if position == len(self.channels)-1: # this is the last podcast, so select the URL # of the item before this one (i.e. the "new last") select_url = self.channels[position-1].url else: # there is a podcast after the deleted one, so # we simply select the one that comes after it select_url = self.channels[position+1].url # Remove the channel and clean the database entries channel.delete() # Clean up downloads and download directories common.clean_up_downloads() # The remaining stuff is to be done in the GTK main thread util.idle_add(finish_deletion, select_url) def on_itemRemoveChannel_activate(self, widget, *args): if self.active_channel is None: title = _('No podcast selected') message = _('Please select a podcast in the podcasts list to remove.') self.show_message( message, title, widget=self.treeChannels) return self.remove_podcast_list([self.active_channel]) def get_opml_filter(self): filter = gtk.FileFilter() filter.add_pattern('*.opml') filter.add_pattern('*.xml') filter.set_name(_('OPML files')+' (*.opml, *.xml)') return filter def on_item_import_from_file_activate(self, widget, filename=None): if filename is None: dlg = gtk.FileChooserDialog(title=_('Import from OPML'), parent=self.main_window, action=gtk.FILE_CHOOSER_ACTION_OPEN) dlg.add_button(gtk.STOCK_CANCEL, gtk.RESPONSE_CANCEL) dlg.add_button(gtk.STOCK_OPEN, gtk.RESPONSE_OK) dlg.set_filter(self.get_opml_filter()) response = dlg.run() filename = None if response == gtk.RESPONSE_OK: filename = dlg.get_filename() dlg.destroy() if filename is not None: dir = gPodderPodcastDirectory(self.gPodder, _config=self.config, \ custom_title=_('Import podcasts from OPML file'), \ add_podcast_list=self.add_podcast_list, hide_url_entry=True) dir.download_opml_file(filename) def on_itemExportChannels_activate(self, widget, *args): if not self.channels: title = _('Nothing to export') message = _('Your list of podcast subscriptions is empty. Please subscribe to some podcasts first before trying to export your subscription list.') self.show_message(message, title, widget=self.treeChannels) return dlg = gtk.FileChooserDialog(title=_('Export to OPML'), parent=self.gPodder, action=gtk.FILE_CHOOSER_ACTION_SAVE) dlg.add_button(gtk.STOCK_CANCEL, gtk.RESPONSE_CANCEL) dlg.add_button(gtk.STOCK_SAVE, gtk.RESPONSE_OK) dlg.set_filter(self.get_opml_filter()) response = dlg.run() if response == gtk.RESPONSE_OK: filename = dlg.get_filename() dlg.destroy() exporter = opml.Exporter( filename) if filename is not None and exporter.write(self.channels): count = len(self.channels) title = N_('%(count)d subscription exported', '%(count)d subscriptions exported', count) % {'count':count} self.show_message(_('Your podcast list has been successfully exported.'), title, widget=self.treeChannels) else: self.show_message( _('Could not export OPML to file. Please check your permissions.'), _('OPML export failed'), important=True) else: dlg.destroy() def on_itemImportChannels_activate(self, widget, *args): self._podcast_directory = gPodderPodcastDirectory(self.main_window, _config=self.config, add_podcast_list=self.add_podcast_list) def on_homepage_activate(self, widget, *args): util.open_website(gpodder.__url__) def on_wiki_activate(self, widget, *args): util.open_website('http://gpodder.org/wiki/User_Manual') def on_check_for_updates_activate(self, widget): self.check_for_updates(silent=False) def check_for_updates(self, silent): """Check for updates and (optionally) show a message If silent=False, a message will be shown even if no updates are available (set silent=False when the check is manually triggered). """ up_to_date, version, released, days = util.get_update_info() if up_to_date and not silent: title = _('No updates available') message = _('You have the latest version of gPodder.') self.show_message(message, title, important=True) if not up_to_date: title = _('New version available') message = '\n'.join([ _('Installed version: %s') % gpodder.__version__, _('Newest version: %s') % version, _('Release date: %s') % released, '', _('Download the latest version from gpodder.org?'), ]) if self.show_confirmation(message, title): util.open_website('http://gpodder.org/downloads') def on_bug_tracker_activate(self, widget, *args): util.open_website('https://bugs.gpodder.org/enter_bug.cgi?product=gPodder&component=Application&version=%s' % gpodder.__version__) def on_item_support_activate(self, widget): util.open_website('http://gpodder.org/donate') def on_itemAbout_activate(self, widget, *args): dlg = gtk.Dialog(_('About gPodder'), self.main_window, \ gtk.DIALOG_MODAL) dlg.add_button(gtk.STOCK_CLOSE, gtk.RESPONSE_OK).show() dlg.set_resizable(False) bg = gtk.HBox(spacing=6) pb = gtk.gdk.pixbuf_new_from_file_at_size(gpodder.icon_file, 160, 160) bg.pack_start(gtk.image_new_from_pixbuf(pb), expand=False) vb = gtk.VBox() vb.set_spacing(6) label = gtk.Label() label.set_alignment(0, 1) label.set_markup('\n'.join(x.strip() for x in """ gPodder {version} ({date}) "{relname}" {copyright} License: {license}
Website ТЗ Donate ТЗ Bug Tracker """.format(version=gpodder.__version__, date=gpodder.__date__, relname=gpodder.__relname__, copyright=gpodder.__copyright__, license=gpodder.__license__, donate_url='http://gpodder.org/donate', bugs_url='https://bugs.gpodder.org/', url=cgi.escape(gpodder.__url__)).strip().split('\n'))) vb.pack_start(label) bg.pack_start(vb) bg.pack_start(gtk.Label()) dlg.vbox.pack_start(bg, expand=False) dlg.connect('response', lambda dlg, response: dlg.destroy()) dlg.vbox.show_all() dlg.run() def on_wNotebook_switch_page(self, notebook, page, page_num): if page_num == 0: self.play_or_download() # The message area in the downloads tab should be hidden # when the user switches away from the downloads tab if self.message_area is not None: self.message_area.hide() self.message_area = None else: self.toolDownload.set_sensitive(False) self.toolPlay.set_sensitive(False) self.toolCancel.set_sensitive(False) def on_treeChannels_row_activated(self, widget, path, *args): # double-click action of the podcast list or enter self.treeChannels.set_cursor(path) def on_treeChannels_cursor_changed(self, widget, *args): ( model, iter ) = self.treeChannels.get_selection().get_selected() if model is not None and iter is not None: old_active_channel = self.active_channel self.active_channel = model.get_value(iter, PodcastListModel.C_CHANNEL) if self.active_channel == old_active_channel: return # Dirty hack to check for "All episodes" (see gpodder.gtkui.model) if getattr(self.active_channel, 'ALL_EPISODES_PROXY', False): self.itemEditChannel.set_visible(False) self.itemRemoveChannel.set_visible(False) else: self.itemEditChannel.set_visible(True) self.itemRemoveChannel.set_visible(True) else: self.active_channel = None self.itemEditChannel.set_visible(False) self.itemRemoveChannel.set_visible(False) self.update_episode_list_model() def on_btnEditChannel_clicked(self, widget, *args): self.on_itemEditChannel_activate( widget, args) def get_podcast_urls_from_selected_episodes(self): """Get a set of podcast URLs based on the selected episodes""" return set(episode.channel.url for episode in \ self.get_selected_episodes()) def get_selected_episodes(self): """Get a list of selected episodes from treeAvailable""" selection = self.treeAvailable.get_selection() model, paths = selection.get_selected_rows() episodes = [model.get_value(model.get_iter(path), EpisodeListModel.C_EPISODE) for path in paths] return episodes def on_playback_selected_episodes(self, widget): self.playback_episodes(self.get_selected_episodes()) def on_shownotes_selected_episodes(self, widget): episodes = self.get_selected_episodes() self.shownotes_object.toggle_pane_visibility(episodes) def on_download_selected_episodes(self, widget): episodes = self.get_selected_episodes() self.download_episode_list(episodes) self.update_episode_list_icons([episode.url for episode in episodes]) self.play_or_download() def on_treeAvailable_row_activated(self, widget, path, view_column): """Double-click/enter action handler for treeAvailable""" self.on_shownotes_selected_episodes(widget) def restart_auto_update_timer(self): if self._auto_update_timer_source_id is not None: logger.debug('Removing existing auto update timer.') gobject.source_remove(self._auto_update_timer_source_id) self._auto_update_timer_source_id = None if self.config.auto_update_feeds and \ self.config.auto_update_frequency: interval = 60*1000*self.config.auto_update_frequency logger.debug('Setting up auto update timer with interval %d.', self.config.auto_update_frequency) self._auto_update_timer_source_id = gobject.timeout_add(\ interval, self._on_auto_update_timer) def _on_auto_update_timer(self): if not util.connection_available(): logger.debug('Skipping auto update (no connection available)') return True logger.debug('Auto update timer fired.') self.update_feed_cache() # Ask web service for sub changes (if enabled) if self.mygpo_client.can_access_webservice(): self.mygpo_client.flush() return True def on_treeDownloads_row_activated(self, widget, *args): # Use the standard way of working on the treeview selection = self.treeDownloads.get_selection() (model, paths) = selection.get_selected_rows() selected_tasks = [(gtk.TreeRowReference(model, path), model.get_value(model.get_iter(path), 0)) for path in paths] for tree_row_reference, task in selected_tasks: if task.status in (task.DOWNLOADING, task.QUEUED): task.status = task.PAUSED elif task.status in (task.CANCELLED, task.PAUSED, task.FAILED): self.download_queue_manager.add_task(task) self.enable_download_list_update() elif task.status == task.DONE: model.remove(model.get_iter(tree_row_reference.get_path())) self.play_or_download() # Update the tab title and downloads list self.update_downloads_list() def on_item_cancel_download_activate(self, widget): if self.wNotebook.get_current_page() == 0: selection = self.treeAvailable.get_selection() (model, paths) = selection.get_selected_rows() urls = [model.get_value(model.get_iter(path), \ self.episode_list_model.C_URL) for path in paths] selected_tasks = [task for task in self.download_tasks_seen \ if task.url in urls] else: selection = self.treeDownloads.get_selection() (model, paths) = selection.get_selected_rows() selected_tasks = [model.get_value(model.get_iter(path), \ self.download_status_model.C_TASK) for path in paths] self.cancel_task_list(selected_tasks) def on_btnCancelAll_clicked(self, widget, *args): self.cancel_task_list(self.download_tasks_seen) def on_btnDownloadedDelete_clicked(self, widget, *args): episodes = self.get_selected_episodes() if len(episodes) == 1: self.delete_episode_list(episodes, skip_locked=False) else: self.delete_episode_list(episodes) def on_key_press(self, widget, event): # Allow tab switching with Ctrl + PgUp/PgDown/Tab if event.state & gtk.gdk.CONTROL_MASK: if event.keyval == gtk.keysyms.Page_Up: self.wNotebook.prev_page() return True elif event.keyval == gtk.keysyms.Page_Down: self.wNotebook.next_page() return True elif event.keyval == gtk.keysyms.Tab: current_page = self.wNotebook.get_current_page() if current_page == self.wNotebook.get_n_pages()-1: self.wNotebook.set_current_page(0) else: self.wNotebook.next_page() return True return False def uniconify_main_window(self): if self.is_iconified(): # We need to hide and then show the window in WMs like Metacity # or KWin4 to move the window to the active workspace # (see http://gpodder.org/bug/1125) self.gPodder.hide() self.gPodder.show() self.gPodder.present() def iconify_main_window(self): if not self.is_iconified(): self.gPodder.iconify() @dbus.service.method(gpodder.dbus_interface) def show_gui_window(self): parent = self.get_dialog_parent() parent.present() @dbus.service.method(gpodder.dbus_interface) def subscribe_to_url(self, url): # Strip leading application protocol, so these URLs work: # gpodder://example.com/episodes.rss # gpodder:https://example.org/podcast.xml if url.startswith('gpodder:'): url = url[len('gpodder:'):] while url.startswith('/'): url = url[1:] self._add_podcast_dialog = gPodderAddPodcast(self.gPodder, add_podcast_list=self.add_podcast_list, preset_url=url) @dbus.service.method(gpodder.dbus_interface) def mark_episode_played(self, filename): if filename is None: return False for channel in self.channels: for episode in channel.get_all_episodes(): fn = episode.local_filename(create=False, check_only=True) if fn == filename: episode.mark(is_played=True) self.db.commit() self.update_episode_list_icons([episode.url]) self.update_podcast_list_model([episode.channel.url]) return True return False def extensions_podcast_update_cb(self, podcast): logger.debug('extensions_podcast_update_cb(%s)', podcast) self.update_feed_cache(channels=[podcast], show_new_episodes_dialog=False) def extensions_episode_download_cb(self, episode): logger.debug('extension_episode_download_cb(%s)', episode) self.download_episode_list(episodes=[episode]) def on_sync_to_device_activate(self, widget, episodes=None, force_played=True): self.sync_ui = gPodderSyncUI(self.config, self.notification, self.main_window, self.show_confirmation, self.update_episode_list_icons, self.update_podcast_list_model, self.toolPreferences, self.channels, self.download_status_model, self.download_queue_manager, self.enable_download_list_update, self.commit_changes_to_database, self.delete_episode_list) self.sync_ui.on_synchronize_episodes(self.channels, episodes, force_played) def on_update_youtube_subscriptions_activate(self, widget): if not self.config.youtube.api_key_v3: if self.show_confirmation('\n'.join((_('Please register a YouTube API key and set it in the preferences.'), _('Would you like to set up an API key now?'))), _('API key required')): self.on_itemPreferences_activate(self, widget) return failed_urls = [] migrated_users = [] for podcast in self.channels: url, user = youtube.for_each_feed_pattern(lambda url, channel: (url, channel), podcast.url, (None, None)) if url is not None and user is not None: try: logger.info('Getting channels for YouTube user %s (%s)', user, url) new_urls = youtube.get_channels_for_user(user, self.config.youtube.api_key_v3) logger.debug('YouTube channels retrieved: %r', new_urls) if len(new_urls) == 0 and youtube.get_youtube_id(url) is not None: logger.info('No need to update %s', url) continue if len(new_urls) != 1: failed_urls.append((url, _('No unique URL found'))) continue new_url = new_urls[0] if new_url in set(x.url for x in self.model.get_podcasts()): failed_urls.append((url, _('Already subscribed'))) continue logger.info('New feed location: %s => %s', url, new_url) podcast.url = new_url podcast.save() migrated_users.append(user) except Exception as e: logger.error('Exception happened while updating download list.', exc_info=True) self.show_message(_('Make sure the API key is correct. Error: %(message)s') % {'message': str(e)}, _('Error getting YouTube channels'), important=True) if migrated_users: self.show_message('\n'.join(migrated_users), _('Successfully migrated subscriptions')) elif not failed_urls: self.show_message(_('Subscriptions are up to date')) if failed_urls: self.show_message('\n'.join([_('These URLs failed:'), ''] + ['{0}: {1}'.format(url, message) for url, message in failed_urls]), _('Could not migrate some subscriptions'), important=True) def main(options=None): gobject.threads_init() gobject.set_application_name('gPodder') for i in range(EpisodeListModel.PROGRESS_STEPS + 1): pixbuf = draw_cake_pixbuf(float(i) / float(EpisodeListModel.PROGRESS_STEPS)) icon_name = 'gpodder-progress-%d' % i gtk.icon_theme_add_builtin_icon(icon_name, pixbuf.get_width(), pixbuf) gtk.window_set_default_icon_name('gpodder') gtk.about_dialog_set_url_hook(lambda dlg, link, data: util.open_website(link), None) try: dbus_main_loop = dbus.glib.DBusGMainLoop(set_as_default=True) gpodder.dbus_session_bus = dbus.SessionBus(dbus_main_loop) bus_name = dbus.service.BusName(gpodder.dbus_bus_name, bus=gpodder.dbus_session_bus) except dbus.exceptions.DBusException, dbe: logger.warn('Cannot get "on the bus".', exc_info=True) dlg = gtk.MessageDialog(None, gtk.DIALOG_MODAL, gtk.MESSAGE_ERROR, \ gtk.BUTTONS_CLOSE, _('Cannot start gPodder')) dlg.format_secondary_markup(_('D-Bus error: %s') % (str(dbe),)) dlg.set_title('gPodder') dlg.run() dlg.destroy() sys.exit(0) gp = gPodder(bus_name, core.Core(UIConfig, model_class=Model), options) if gpodder.ui.osx: from gpodder.gtkui import macosx # Handle "subscribe to podcast" events from firefox macosx.register_handlers(gp) # Handle quit event if macapp is not None: macapp.connect('NSApplicationBlockTermination', gp.quit_cb) macapp.ready() gp.run() gpodder-3.9.0/src/gpodder/gtkui/desktop/0000755000016000001710000000000012654461626021304 5ustar jenkinsjenkins00000000000000gpodder-3.9.0/src/gpodder/gtkui/desktop/channel.py0000644000016000001710000002063712654461624023274 0ustar jenkinsjenkins00000000000000# -*- coding: utf-8 -*- # # gPodder - A media aggregator and podcast client # Copyright (c) 2005-2016 Thomas Perl and the gPodder Team # # gPodder is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 3 of the License, or # (at your option) any later version. # # gPodder is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . # import gtk import gtk.gdk import gpodder _ = gpodder.gettext from gpodder import util from gpodder.gtkui.interface.common import BuilderWidget class gPodderChannel(BuilderWidget): MAX_SIZE = 120 def new(self): self.show_on_cover_load = True self.gPodderChannel.set_title( self.channel.title) self.entryTitle.set_text( self.channel.title) self.labelURL.set_text(self.channel.url) self.cbSkipFeedUpdate.set_active(self.channel.pause_subscription) self.cbEnableDeviceSync.set_active(self.channel.sync_to_mp3_player) self.section_list = gtk.ListStore(str) active_index = 0 for index, section in enumerate(sorted(self.sections)): self.section_list.append([section]) if section == self.channel.section: active_index = index self.combo_section.set_model(self.section_list) cell_renderer = gtk.CellRendererText() self.combo_section.pack_start(cell_renderer) self.combo_section.add_attribute(cell_renderer, 'text', 0) self.combo_section.set_active(active_index) self.strategy_list = gtk.ListStore(str, int) active_index = 0 for index, (checked, strategy_id, strategy) in \ enumerate(self.channel.get_download_strategies()): self.strategy_list.append([strategy, strategy_id]) if checked: active_index = index self.combo_strategy.set_model(self.strategy_list) cell_renderer = gtk.CellRendererText() self.combo_strategy.pack_start(cell_renderer) self.combo_strategy.add_attribute(cell_renderer, 'text', 0) self.combo_strategy.set_active(active_index) self.LabelDownloadTo.set_text( self.channel.save_dir) self.LabelWebsite.set_text( self.channel.link) if self.channel.auth_username: self.FeedUsername.set_text( self.channel.auth_username) if self.channel.auth_password: self.FeedPassword.set_text( self.channel.auth_password) self.cover_downloader.register('cover-available', self.cover_download_finished) self.cover_downloader.request_cover(self.channel) # Hide the website button if we don't have a valid URL if not self.channel.link: self.btn_website.hide_all() b = gtk.TextBuffer() b.set_text( self.channel.description) self.channel_description.set_buffer( b) #Add Drag and Drop Support flags = gtk.DEST_DEFAULT_ALL targets = [('text/uri-list', 0, 2), ('text/plain', 0, 4)] actions = gtk.gdk.ACTION_DEFAULT | gtk.gdk.ACTION_COPY self.imgCover.drag_dest_set(flags, targets, actions) self.imgCover.connect('drag_data_received', self.drag_data_received) border = 6 self.imgCover.set_size_request(*((self.MAX_SIZE+border*2,)*2)) self.imgCoverEventBox.connect('button-press-event', self.on_cover_popup_menu) def on_button_add_section_clicked(self, widget): text = self.show_text_edit_dialog(_('Add section'), _('New section:'), affirmative_text=gtk.STOCK_ADD) if text is not None: for index, (section,) in enumerate(self.section_list): if text == section: self.combo_section.set_active(index) return self.section_list.append([text]) self.combo_section.set_active(len(self.section_list)-1) def on_cover_popup_menu(self, widget, event): if event.button != 3: return menu = gtk.Menu() item = gtk.ImageMenuItem(gtk.STOCK_OPEN) item.connect('activate', self.on_btnDownloadCover_clicked) menu.append(item) item = gtk.ImageMenuItem(gtk.STOCK_REFRESH) item.connect('activate', self.on_btnClearCover_clicked) menu.append(item) menu.show_all() menu.popup(None, None, None, event.button, event.time, None) def on_btn_website_clicked(self, widget): util.open_website(self.channel.link) def on_btnDownloadCover_clicked(self, widget): dlg = gtk.FileChooserDialog(title=_('Select new podcast cover artwork'), parent=self.gPodderChannel, action=gtk.FILE_CHOOSER_ACTION_OPEN) dlg.add_button(gtk.STOCK_CANCEL, gtk.RESPONSE_CANCEL) dlg.add_button(gtk.STOCK_OPEN, gtk.RESPONSE_OK) if dlg.run() == gtk.RESPONSE_OK: url = dlg.get_uri() self.clear_cover_cache(self.channel.url) self.cover_downloader.replace_cover(self.channel, custom_url=url) dlg.destroy() def on_btnClearCover_clicked(self, widget): self.clear_cover_cache(self.channel.url) self.cover_downloader.replace_cover(self.channel, custom_url=False) def cover_download_finished(self, channel, pixbuf): def set_cover(channel, pixbuf): if self.channel == channel: self.imgCover.set_from_pixbuf(self.scale_pixbuf(pixbuf)) if self.show_on_cover_load: self.main_window.show() self.show_on_cover_load = False util.idle_add(set_cover, channel, pixbuf) def drag_data_received( self, widget, content, x, y, sel, ttype, time): files = sel.data.strip().split('\n') if len(files) != 1: self.show_message( _('You can only drop a single image or URL here.'), _('Drag and drop')) return file = files[0] if file.startswith('file://') or file.startswith('http://'): self.clear_cover_cache(self.channel.url) self.cover_downloader.replace_cover(self.channel, custom_url=file) return self.show_message( _('You can only drop local files and http:// URLs here.'), _('Drag and drop')) def on_gPodderChannel_destroy(self, widget, *args): self.cover_downloader.unregister('cover-available', self.cover_download_finished) def scale_pixbuf(self, pixbuf): # Resize if width is too large if pixbuf.get_width() > self.MAX_SIZE: f = float(self.MAX_SIZE)/pixbuf.get_width() (width, height) = (int(pixbuf.get_width()*f), int(pixbuf.get_height()*f)) pixbuf = pixbuf.scale_simple(width, height, gtk.gdk.INTERP_BILINEAR) # Resize if height is too large if pixbuf.get_height() > self.MAX_SIZE: f = float(self.MAX_SIZE)/pixbuf.get_height() (width, height) = (int(pixbuf.get_width()*f), int(pixbuf.get_height()*f)) pixbuf = pixbuf.scale_simple(width, height, gtk.gdk.INTERP_BILINEAR) return pixbuf def on_btnOK_clicked(self, widget, *args): self.channel.pause_subscription = self.cbSkipFeedUpdate.get_active() self.channel.sync_to_mp3_player = self.cbEnableDeviceSync.get_active() self.channel.rename(self.entryTitle.get_text()) self.channel.auth_username = self.FeedUsername.get_text().strip() self.channel.auth_password = self.FeedPassword.get_text() self.cover_downloader.unregister('cover-available', self.cover_download_finished) self.clear_cover_cache(self.channel.url) self.cover_downloader.request_cover(self.channel) new_section = self.section_list[self.combo_section.get_active()][0] if self.channel.section != new_section: self.channel.section = new_section section_changed = True else: section_changed = False new_strategy = self.strategy_list[self.combo_strategy.get_active()][1] self.channel.set_download_strategy(new_strategy) self.channel.save() self.main_window.destroy() self.update_podcast_list_model(selected=True, sections_changed=section_changed) gpodder-3.9.0/src/gpodder/gtkui/desktop/sync.py0000644000016000001710000003547112654461624022642 0ustar jenkinsjenkins00000000000000# -*- coding: utf-8 -*- # # gPodder - A media aggregator and podcast client # Copyright (c) 2005-2016 Thomas Perl and the gPodder Team # # gPodder is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 3 of the License, or # (at your option) any later version. # # gPodder is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . # # gpodder.gtkui.desktop.sync - Glue code between GTK+ UI and sync module # Thomas Perl ; 2009-09-05 (based on code from gui.py) # Ported to gPodder 3 by Joseph Wickremasinghe in June 2012 import os import gpodder _ = gpodder.gettext from gpodder import util from gpodder import sync from gpodder.gtkui.desktop.episodeselector import gPodderEpisodeSelector from gpodder.gtkui.desktop.deviceplaylist import gPodderDevicePlaylist import logging logger = logging.getLogger(__name__) class gPodderSyncUI(object): def __init__(self, config, notification, parent_window, show_confirmation, update_episode_list_icons, update_podcast_list_model, preferences_widget, channels, download_status_model, download_queue_manager, enable_download_list_update, commit_changes_to_database, delete_episode_list): self.device = None self._config = config self.notification = notification self.parent_window = parent_window self.show_confirmation = show_confirmation self.update_episode_list_icons = update_episode_list_icons self.update_podcast_list_model = update_podcast_list_model self.preferences_widget = preferences_widget self.channels=channels self.download_status_model = download_status_model self.download_queue_manager = download_queue_manager self.enable_download_list_update = enable_download_list_update self.commit_changes_to_database = commit_changes_to_database self.delete_episode_list=delete_episode_list def _filter_sync_episodes(self, channels, only_downloaded=False): """Return a list of episodes for device synchronization If only_downloaded is True, this will skip episodes that have not been downloaded yet and podcasts that are marked as "Do not synchronize to my device". """ episodes = [] for channel in channels: if only_downloaded or not channel.sync_to_mp3_player: logger.info('Skipping channel: %s', channel.title) continue for episode in channel.get_all_episodes(): if (episode.was_downloaded(and_exists=True) or not only_downloaded): episodes.append(episode) return episodes def _show_message_unconfigured(self): title = _('No device configured') message = _('Please set up your device in the preferences dialog.') self.notification(message, title, widget=self.preferences_widget, important=True) def _show_message_cannot_open(self): title = _('Cannot open device') message = _('Please check the settings in the preferences dialog.') self.notification(message, title, widget=self.preferences_widget, important=True) def on_synchronize_episodes(self, channels, episodes=None, force_played=True): device = sync.open_device(self) if device is None: return self._show_message_unconfigured() if not device.open(): return self._show_message_cannot_open() else: # Only set if device is configured and opened successfully self.device = device if episodes is None: force_played = False episodes = self._filter_sync_episodes(channels) def check_free_space(): # "Will we add this episode to the device?" def will_add(episode): # If already on-device, it won't take up any space if device.episode_on_device(episode): return False # Might not be synced if it's played already if (not force_played and self._config.device_sync.skip_played_episodes): return False # In all other cases, we expect the episode to be # synchronized to the device, so "answer" positive return True # "What is the file size of this episode?" def file_size(episode): filename = episode.local_filename(create=False) if filename is None: return 0 return util.calculate_size(str(filename)) # Calculate total size of sync and free space on device total_size = sum(file_size(e) for e in episodes if will_add(e)) free_space = max(device.get_free_space(), 0) if total_size > free_space: title = _('Not enough space left on device') message = (_('Additional free space required: %(required_space)s\nDo you want to continue?') % {'required_space': util.format_filesize(total_size - free_space)}) if not self.show_confirmation(message, title): device.cancel() device.close() return #enable updating of UI self.enable_download_list_update() #Update device playlists #General approach is as follows: #When a episode is downloaded and synched, it is added to the #standard playlist for that podcast which is then written to #the device. #After the user has played that episode on their device, they #can delete that episode from their device. #At the next sync, gPodder will then compare the standard #podcast-specific playlists on the device (as written by #gPodder during the last sync), with the episodes on the #device.If there is an episode referenced in the playlist #that is no longer on the device, gPodder will assume that #the episode has already been synced and subsequently deleted #from the device, and will hence mark that episode as deleted #in gPodder. If there are no playlists, nothing is deleted. #At the next sync, the playlists will be refreshed based on #the downloaded, undeleted episodes in gPodder, and the #cycle begins again... def resume_sync(episode_urls, channel_urls,progress): if progress is not None: progress.on_finished() #rest of sync process should continue here self.commit_changes_to_database() for current_channel in self.channels: #only sync those channels marked for syncing if (self._config.device_sync.device_type=='filesystem' and current_channel.sync_to_mp3_player and self._config.device_sync.playlists.create): #get playlist object playlist=gPodderDevicePlaylist(self._config, current_channel.title) #need to refresh episode list so that #deleted episodes aren't included in playlists episodes_for_playlist=sorted(current_channel.get_episodes(gpodder.STATE_DOWNLOADED), key=lambda ep: ep.published) #don't add played episodes to playlist if skip_played_episodes is True if self._config.device_sync.skip_played_episodes: episodes_for_playlist=filter(lambda ep: ep.is_new, episodes_for_playlist) playlist.write_m3u(episodes_for_playlist) #enable updating of UI self.enable_download_list_update() if (self._config.device_sync.device_type=='filesystem' and self._config.device_sync.playlists.create): title = _('Update successful') message = _('The playlist on your MP3 player has been updated.') self.notification(message, title, widget=self.preferences_widget) # Finally start the synchronization process @util.run_in_background def sync_thread_func(): device.add_sync_tasks(episodes, force_played=force_played, done_callback=self.enable_download_list_update) return if self._config.device_sync.playlists.create: try: episodes_to_delete=[] if self._config.device_sync.playlists.two_way_sync: for current_channel in self.channels: #only include channels that are included in the sync if current_channel.sync_to_mp3_player: #get playlist object playlist=gPodderDevicePlaylist(self._config, current_channel.title) #get episodes to be written to playlist episodes_for_playlist=sorted(current_channel.get_episodes(gpodder.STATE_DOWNLOADED), key=lambda ep: ep.published) episode_keys=map(playlist.get_absolute_filename_for_playlist, episodes_for_playlist) episode_dict=dict(zip(episode_keys, episodes_for_playlist)) #then get episodes in playlist (if it exists) already on device episodes_in_playlists = playlist.read_m3u() #if playlist doesn't exist (yet) episodes_in_playlist will be empty if episodes_in_playlists: for episode_filename in episodes_in_playlists: if not(os.path.exists(os.path.join(playlist.mountpoint, episode_filename))): #episode was synced but no longer on device #i.e. must have been deleted by user, so delete from gpodder try: episodes_to_delete.append(episode_dict[episode_filename]) except KeyError, ioe: logger.warn('Episode %s, removed from device has already been deleted from gpodder', episode_filename) #delete all episodes from gpodder (will prompt user) #not using playlists to delete def auto_delete_callback(episodes): if not episodes: #episodes were deleted on device #but user decided not to delete them from gpodder #so jump straight to sync logger.info ('Starting sync - no episodes selected for deletion') resume_sync([],[],None) else: #episodes need to be deleted from gpodder for episode_to_delete in episodes: logger.info("Deleting episode %s", episode_to_delete.title) logger.info ('Will start sync - after deleting episodes') self.delete_episode_list(episodes,False, True,resume_sync) return if episodes_to_delete: columns = ( ('markup_delete_episodes', None, None, _('Episode')), ) gPodderEpisodeSelector(self.parent_window, title = _('Episodes have been deleted on device'), instructions = 'Select the episodes you want to delete:', episodes = episodes_to_delete, selected = [True,]*len(episodes_to_delete), columns = columns, callback = auto_delete_callback, _config=self._config) else: logger.warning("Starting sync - no episodes to delete") resume_sync([],[],None) except IOError, ioe: title = _('Error writing playlist files') message = _(str(ioe)) self.notification(message, title, widget=self.preferences_widget) else: logger.info ('Not creating playlists - starting sync') resume_sync([],[],None) # This function is used to remove files from the device def cleanup_episodes(): # 'skip_played_episodes' must be used or else all the # played tracks will be copied then immediately deleted if (self._config.device_sync.delete_played_episodes and self._config.device_sync.skip_played_episodes): all_episodes = self._filter_sync_episodes(channels, only_downloaded=False) for local_episode in all_episodes: episode = device.episode_on_device(local_episode) if episode is None: continue if local_episode.state == gpodder.STATE_DELETED: logger.info('Removing episode from device: %s', episode.title) device.remove_track(episode) # When this is done, start the callback in the UI code util.idle_add(check_free_space) # This will run the following chain of actions: # 1. Remove old episodes (in worker thread) # 2. Check for free space (in UI thread) # 3. Sync the device (in UI thread) util.run_in_background(cleanup_episodes) gpodder-3.9.0/src/gpodder/gtkui/desktop/__init__.py0000644000016000001710000000137412654461624023420 0ustar jenkinsjenkins00000000000000# -*- coding: utf-8 -*- # # gPodder - A media aggregator and podcast client # Copyright (c) 2005-2016 Thomas Perl and the gPodder Team # # gPodder is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 3 of the License, or # (at your option) any later version. # # gPodder is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . # gpodder-3.9.0/src/gpodder/gtkui/desktop/deviceplaylist.py0000644000016000001710000001177012654461624024703 0ustar jenkinsjenkins00000000000000# -*- coding: utf-8 -*- # # gPodder - A media aggregator and podcast client # Copyright (c) 2005-2011 Thomas Perl and the gPodder Team # # gPodder is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 3 of the License, or # (at your option) any later version. # # gPodder is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . # import os import gpodder _ = gpodder.gettext from gpodder import util import logging logger = logging.getLogger(__name__) class gPodderDevicePlaylist(object): def __init__(self, config, playlist_name): self._config=config self.linebreak = '\r\n' self.playlist_file=util.sanitize_filename(playlist_name + '.m3u') self.playlist_folder = os.path.join(self._config.device_sync.device_folder, self._config.device_sync.playlists.folder) self.mountpoint = util.find_mount_point(util.sanitize_encoding(self.playlist_folder)) if self.mountpoint == '/': self.mountpoint = self.playlist_folder logger.warning('MP3 player resides on / - using %s as MP3 player root', self.mountpoint) self.playlist_absolute_filename=os.path.join(self.playlist_folder, self.playlist_file) def build_extinf(self, filename): #TO DO: Windows playlists # if self._config.mp3_player_playlist_win_path: # filename = filename.replace('\\', os.sep) # # rebuild the whole filename including the mountpoint # if self._config.device_sync.playlist_absolute_path: # absfile = os.path.join(self.mountpoint,filename) # else: #TODO: Test rel filenames # absfile = util.rel2abs(filename, os.path.dirname(self.playlist_file)) # fallback: use the basename of the file (title, extension) = os.path.splitext(os.path.basename(filename)) return "#EXTINF:0,%s%s" % (title.strip(), self.linebreak) def read_m3u(self): """ read all files from the existing playlist """ tracks = [] logger.info("Read data from the playlistfile %s" % self.playlist_absolute_filename) if os.path.exists(self.playlist_absolute_filename): for line in open(self.playlist_absolute_filename, 'r'): if not line.startswith('#EXT'): tracks.append(line.rstrip('\r\n')) return tracks def get_filename_for_playlist(self, episode): """ get the filename for the given episode for the playlist """ filename_base = util.sanitize_filename(episode.sync_filename( self._config.device_sync.custom_sync_name_enabled, self._config.device_sync.custom_sync_name), self._config.device_sync.max_filename_length) filename = filename_base + os.path.splitext(episode.local_filename(create=False))[1].lower() return filename def get_absolute_filename_for_playlist(self, episode): """ get the filename including full path for the given episode for the playlist """ filename = self.get_filename_for_playlist(episode) if self._config.device_sync.one_folder_per_podcast: filename = os.path.join(util.sanitize_filename(episode.channel.title), filename) if self._config.device_sync.playlist.absolute_path: filename = os.path.join(util.relpath(self.mountpoint, self._config.device_sync.device_folder), filename) return filename def write_m3u(self, episodes): """ write the list into the playlist on the device """ logger.info('Writing playlist file: %s', self.playlist_file) if not util.make_directory(self.playlist_folder): raise IOError(_('Folder %s could not be created.') % self.playlist_folder, _('Error writing playlist')) else: fp = open(os.path.join(self.playlist_folder, self.playlist_file), 'w') fp.write('#EXTM3U%s' % self.linebreak) for current_episode in episodes: filename_base = util.sanitize_filename(current_episode.sync_filename( self._config.device_sync.custom_sync_name_enabled, self._config.device_sync.custom_sync_name), self._config.device_sync.max_filename_length) filename = filename_base + os.path.splitext(current_episode.local_filename(create=False))[1].lower() filename = self.get_filename_for_playlist(current_episode) fp.write(self.build_extinf(filename)) filename = self.get_absolute_filename_for_playlist(current_episode) fp.write(filename) fp.write(self.linebreak) fp.close() gpodder-3.9.0/src/gpodder/gtkui/desktop/podcastdirectory.py0000644000016000001710000002660212654461624025244 0ustar jenkinsjenkins00000000000000# -*- coding: utf-8 -*- # # gPodder - A media aggregator and podcast client # Copyright (c) 2005-2016 Thomas Perl and the gPodder Team # # gPodder is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 3 of the License, or # (at your option) any later version. # # gPodder is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . # # # gpodder.gtkui.desktop.podcastdirectory - Podcast directory Gtk UI # Thomas Perl ; 2014-10-22 # import gtk import pango import cgi import os import gpodder _ = gpodder.gettext import logging logger = logging.getLogger(__name__) from gpodder import util from gpodder import directory from gpodder.gtkui.interface.common import BuilderWidget from gpodder.gtkui.interface.progress import ProgressIndicator from gpodder.gtkui.interface.tagcloud import TagCloud class DirectoryPodcastsModel(gtk.ListStore): C_SELECTED, C_MARKUP, C_TITLE, C_URL = range(4) def __init__(self, callback_can_subscribe): gtk.ListStore.__init__(self, bool, str, str, str) self.callback_can_subscribe = callback_can_subscribe def load(self, directory_entries): self.clear() for entry in directory_entries: if entry.subscribers != -1: self.append((False, '%s (%d)\n%s' % (cgi.escape(entry.title), entry.subscribers, cgi.escape(entry.url)), entry.title, entry.url)) else: self.append((False, '%s\n%s' % (cgi.escape(entry.title), cgi.escape(entry.url)), entry.title, entry.url)) self.callback_can_subscribe(len(self.get_selected_podcasts()) > 0) def toggle(self, path): self[path][self.C_SELECTED] = not self[path][self.C_SELECTED] self.callback_can_subscribe(len(self.get_selected_podcasts()) > 0) def set_selection_to(self, selected): for row in self: row[self.C_SELECTED] = selected self.callback_can_subscribe(len(self.get_selected_podcasts()) > 0) def get_selected_podcasts(self): return [(row[self.C_TITLE], row[self.C_URL]) for row in self if row[self.C_SELECTED]] class DirectoryProvidersModel(gtk.ListStore): C_WEIGHT, C_TEXT, C_ICON, C_PROVIDER = range(4) SEPARATOR = (pango.WEIGHT_NORMAL, '', None, None) def __init__(self, providers): gtk.ListStore.__init__(self, int, str, gtk.gdk.Pixbuf, object) for provider in providers: self.add_provider(provider() if provider else None) def add_provider(self, provider): if provider is None: self.append(self.SEPARATOR) else: try: pixbuf = gtk.gdk.pixbuf_new_from_file(os.path.join(gpodder.images_folder, provider.icon)) if provider.icon else None except Exception as e: logger.warn('Could not load icon: %s (%s)', provider.icon or '-', e) pixbuf = None self.append((pango.WEIGHT_NORMAL, provider.name, pixbuf, provider)) def is_row_separator(self, model, it): return self.get_value(it, self.C_PROVIDER) is None class gPodderPodcastDirectory(BuilderWidget): def new(self): if hasattr(self, 'custom_title'): self.main_window.set_title(self.custom_title) if not hasattr(self, 'add_podcast_list'): self.add_podcast_list = None self.providers_model = DirectoryProvidersModel(directory.PROVIDERS) self.podcasts_model = DirectoryPodcastsModel(self.on_can_subscribe_changed) self.current_provider = None self.podcasts_progress_indicator = None self.setup_providers_treeview() self.setup_podcasts_treeview() self.setup_tag_cloud() selection = self.tv_providers.get_selection() selection.select_path((0,)) self.on_tv_providers_row_activated(self.tv_providers, (0,), None) self.main_window.show() def download_opml_file(self, filename): self.providers_model.add_provider(directory.FixedOpmlFileProvider(filename)) self.tv_providers.set_cursor(len(self.providers_model)-1) def setup_podcasts_treeview(self): column = gtk.TreeViewColumn('') cell = gtk.CellRendererToggle() column.pack_start(cell, False) column.add_attribute(cell, 'active', DirectoryPodcastsModel.C_SELECTED) cell.connect('toggled', lambda cell, path: self.podcasts_model.toggle(path)) self.tv_podcasts.append_column(column) column = gtk.TreeViewColumn('') cell = gtk.CellRendererText() cell.set_property('ellipsize', pango.ELLIPSIZE_END) column.pack_start(cell) column.add_attribute(cell, 'markup', DirectoryPodcastsModel.C_MARKUP) self.tv_podcasts.append_column(column) self.tv_podcasts.set_model(self.podcasts_model) self.podcasts_model.append((False, 'a', 'b', 'c')) def setup_providers_treeview(self): column = gtk.TreeViewColumn('') cell = gtk.CellRendererPixbuf() column.pack_start(cell, False) column.add_attribute(cell, 'pixbuf', DirectoryProvidersModel.C_ICON) cell = gtk.CellRendererText() #cell.set_property('ellipsize', pango.ELLIPSIZE_END) column.pack_start(cell) column.add_attribute(cell, 'text', DirectoryProvidersModel.C_TEXT) column.add_attribute(cell, 'weight', DirectoryProvidersModel.C_WEIGHT) self.tv_providers.append_column(column) self.tv_providers.set_row_separator_func(self.providers_model.is_row_separator) self.tv_providers.set_model(self.providers_model) def setup_tag_cloud(self): self.tag_cloud = TagCloud() self.tag_cloud.set_size_request(-1, 130) self.tag_cloud.show_all() self.sw_tagcloud.add(self.tag_cloud) self.tag_cloud.connect('selected', self.on_tag_selected) def on_tag_selected(self, tag_cloud, tag): self.obtain_podcasts_with(lambda: self.current_provider.on_tag(tag)) def on_tv_providers_row_activated(self, treeview, path, column): it = self.providers_model.get_iter(path) for row in self.providers_model: row[DirectoryProvidersModel.C_WEIGHT] = pango.WEIGHT_NORMAL if it: self.providers_model.set_value(it, DirectoryProvidersModel.C_WEIGHT, pango.WEIGHT_BOLD) provider = self.providers_model.get_value(it, DirectoryProvidersModel.C_PROVIDER) self.use_provider(provider) def use_provider(self, provider): self.podcasts_model.clear() self.current_provider = provider if provider.kind == directory.Provider.PROVIDER_SEARCH: self.lb_search.set_text('Search:') self.bt_search.set_label('Search') elif provider.kind == directory.Provider.PROVIDER_URL: self.lb_search.set_text('URL:') self.bt_search.set_label('Download') elif provider.kind == directory.Provider.PROVIDER_FILE: self.lb_search.set_text('Filename:') self.bt_search.set_label('Open') elif provider.kind == directory.Provider.PROVIDER_TAGCLOUD: self.tag_cloud.clear_tags() @util.run_in_background def load_tags(): try: tags = [(t.tag, t.weight) for t in provider.get_tags()] except Exception as e: logger.warn('Got exception while loading tags: %s', e) tags = [] @util.idle_add def update_ui(): self.tag_cloud.set_tags(tags) elif provider.kind == directory.Provider.PROVIDER_STATIC: self.obtain_podcasts_with(provider.on_static) if provider.kind in (directory.Provider.PROVIDER_SEARCH, directory.Provider.PROVIDER_URL, directory.Provider.PROVIDER_FILE): self.en_query.set_text('') self.hb_text_entry.show() util.idle_add(self.en_query.grab_focus) else: self.hb_text_entry.hide() if provider.kind == directory.Provider.PROVIDER_TAGCLOUD: self.sw_tagcloud.show() else: self.sw_tagcloud.hide() def on_tv_providers_cursor_changed(self, treeview): path, column = treeview.get_cursor() self.on_tv_providers_row_activated(treeview, path, column) def obtain_podcasts_with(self, callback): if self.podcasts_progress_indicator is not None: self.podcasts_progress_indicator.on_finished() self.podcasts_progress_indicator = ProgressIndicator(_('Loading podcasts'), _('Please wait while the podcast list is downloaded'), parent=self.main_window) original_provider = self.current_provider self.en_query.set_sensitive(False) self.bt_search.set_sensitive(False) self.tag_cloud.set_sensitive(False) self.podcasts_model.clear() @util.run_in_background def download_data(): try: podcasts = callback() except Exception as e: logger.warn('Got exception while loading podcasts: %s', e) podcasts = [] @util.idle_add def update_ui(): if self.podcasts_progress_indicator is not None: self.podcasts_progress_indicator.on_finished() self.podcasts_progress_indicator = None if original_provider != self.current_provider: logger.warn('Ignoring update from old thread') return self.podcasts_model.load(podcasts or []) self.en_query.set_sensitive(True) self.bt_search.set_sensitive(True) self.tag_cloud.set_sensitive(True) self.en_query.grab_focus() def on_bt_search_clicked(self, widget): if self.current_provider is None: return query = self.en_query.get_text() @self.obtain_podcasts_with def load_data(): if self.current_provider.kind == directory.Provider.PROVIDER_SEARCH: return self.current_provider.on_search(query) elif self.current_provider.kind == directory.Provider.PROVIDER_URL: return self.current_provider.on_url(query) elif self.current_provider.kind == directory.Provider.PROVIDER_FILE: return self.current_provider.on_file(query) def on_can_subscribe_changed(self, can_subscribe): self.btnOK.set_sensitive(can_subscribe) def on_btnSelectAll_clicked(self, widget, *args): self.podcasts_model.set_selection_to(True) def on_btnSelectNone_clicked(self, widget, *args): self.podcasts_model.set_selection_to(False) def on_btnOK_clicked(self, widget, *args): urls = self.podcasts_model.get_selected_podcasts() self.main_window.destroy() # add channels that have been selected if self.add_podcast_list is not None: self.add_podcast_list(urls) def on_btnCancel_clicked(self, widget, *args): self.main_window.destroy() gpodder-3.9.0/src/gpodder/gtkui/desktop/episodeselector.py0000644000016000001710000004320512654461624025051 0ustar jenkinsjenkins00000000000000# -*- coding: utf-8 -*- # # gPodder - A media aggregator and podcast client # Copyright (c) 2005-2016 Thomas Perl and the gPodder Team # # gPodder is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 3 of the License, or # (at your option) any later version. # # gPodder is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . # import gtk import pango import cgi import gpodder _ = gpodder.gettext N_ = gpodder.ngettext from gpodder import util from gpodder.gtkui.interface.common import BuilderWidget from gpodder.gtkui.interface.common import TreeViewHelper class gPodderEpisodeSelector(BuilderWidget): """Episode selection dialog Optional keyword arguments that modify the behaviour of this dialog: - callback: Function that takes 1 parameter which is a list of the selected episodes (or empty list when none selected) - remove_callback: Function that takes 1 parameter which is a list of episodes that should be "removed" (see below) (default is None, which means remove not possible) - remove_action: Label for the "remove" action (default is "Remove") - remove_finished: Callback after all remove callbacks have finished (default is None, also depends on remove_callback) It will get a list of episode URLs that have been removed, so the main UI can update those - episodes: List of episodes that are presented for selection - selected: (optional) List of boolean variables that define the default checked state for the given episodes - selected_default: (optional) The default boolean value for the checked state if no other value is set (default is False) - columns: List of (name, sort_name, sort_type, caption) pairs for the columns, the name is the attribute name of the episode to be read from each episode object. The sort name is the attribute name of the episode to be used to sort this column. If the sort_name is None it will use the attribute name for sorting. The sort type is the type of the sort column. The caption attribute is the text that appear as column caption (default is [('title_markup', None, None, 'Episode'),]) - title: (optional) The title of the window + heading - instructions: (optional) A one-line text describing what the user should select / what the selection is for - stock_ok_button: (optional) Will replace the "OK" button with another GTK+ stock item to be used for the affirmative button of the dialog (e.g. can be gtk.STOCK_DELETE when the episodes to be selected will be deleted after closing the dialog) - selection_buttons: (optional) A dictionary with labels as keys and callbacks as values; for each key a button will be generated, and when the button is clicked, the callback will be called for each episode and the return value of the callback (True or False) will be the new selected state of the episode - size_attribute: (optional) The name of an attribute of the supplied episode objects that can be used to calculate the size of an episode; set this to None if no total size calculation should be done (in cases where total size is useless) (default is 'file_size') - tooltip_attribute: (optional) The name of an attribute of the supplied episode objects that holds the text for the tooltips when hovering over an episode (default is 'description') """ COLUMN_INDEX = 0 COLUMN_TOOLTIP = 1 COLUMN_TOGGLE = 2 COLUMN_ADDITIONAL = 3 def new( self): self._config.connect_gtk_window(self.gPodderEpisodeSelector, 'episode_selector', True) if not hasattr( self, 'callback'): self.callback = None if not hasattr(self, 'remove_callback'): self.remove_callback = None if not hasattr(self, 'remove_action'): self.remove_action = _('Remove') if not hasattr(self, 'remove_finished'): self.remove_finished = None if not hasattr( self, 'episodes'): self.episodes = [] if not hasattr( self, 'size_attribute'): self.size_attribute = 'file_size' if not hasattr(self, 'tooltip_attribute'): self.tooltip_attribute = 'description' if not hasattr( self, 'selection_buttons'): self.selection_buttons = {} if not hasattr( self, 'selected_default'): self.selected_default = False if not hasattr( self, 'selected'): self.selected = [self.selected_default]*len(self.episodes) if len(self.selected) < len(self.episodes): self.selected += [self.selected_default]*(len(self.episodes)-len(self.selected)) if not hasattr( self, 'columns'): self.columns = (('title_markup', None, None, _('Episode')),) if hasattr(self, 'title'): self.gPodderEpisodeSelector.set_title(self.title) if hasattr( self, 'instructions'): self.labelInstructions.set_text( self.instructions) self.labelInstructions.show_all() if hasattr(self, 'stock_ok_button'): if self.stock_ok_button == 'gpodder-download': self.btnOK.set_image(gtk.image_new_from_stock(gtk.STOCK_GO_DOWN, gtk.ICON_SIZE_BUTTON)) self.btnOK.set_label(_('Download')) else: self.btnOK.set_label(self.stock_ok_button) self.btnOK.set_use_stock(True) # check/uncheck column toggle_cell = gtk.CellRendererToggle() toggle_cell.connect( 'toggled', self.toggle_cell_handler) toggle_column = gtk.TreeViewColumn('', toggle_cell, active=self.COLUMN_TOGGLE) toggle_column.set_clickable(True) self.treeviewEpisodes.append_column(toggle_column) next_column = self.COLUMN_ADDITIONAL for name, sort_name, sort_type, caption in self.columns: renderer = gtk.CellRendererText() if next_column < self.COLUMN_ADDITIONAL + 1: renderer.set_property('ellipsize', pango.ELLIPSIZE_END) column = gtk.TreeViewColumn(caption, renderer, markup=next_column) column.set_clickable(False) column.set_resizable( True) # Only set "expand" on the first column if next_column < self.COLUMN_ADDITIONAL + 1: column.set_expand(True) if sort_name is not None: column.set_sort_column_id(next_column+1) else: column.set_sort_column_id(next_column) self.treeviewEpisodes.append_column( column) next_column += 1 if sort_name is not None: # add the sort column column = gtk.TreeViewColumn() column.set_clickable(False) column.set_visible(False) self.treeviewEpisodes.append_column( column) next_column += 1 column_types = [ int, str, bool ] # add string column type plus sort column type if it exists for name, sort_name, sort_type, caption in self.columns: column_types.append(str) if sort_name is not None: column_types.append(sort_type) self.model = gtk.ListStore( *column_types) tooltip = None for index, episode in enumerate( self.episodes): if self.tooltip_attribute is not None: try: tooltip = getattr(episode, self.tooltip_attribute) except: tooltip = None row = [ index, tooltip, self.selected[index] ] for name, sort_name, sort_type, caption in self.columns: if not hasattr(episode, name): row.append(None) else: row.append(getattr( episode, name)) if sort_name is not None: if not hasattr(episode, sort_name): row.append(None) else: row.append(getattr( episode, sort_name)) self.model.append( row) if self.remove_callback is not None: self.btnRemoveAction.show() self.btnRemoveAction.set_label(self.remove_action) # connect to tooltip signals if self.tooltip_attribute is not None: try: self.treeviewEpisodes.set_property('has-tooltip', True) self.treeviewEpisodes.connect('query-tooltip', self.treeview_episodes_query_tooltip) except: pass self.last_tooltip_episode = None self.episode_list_can_tooltip = True self.treeviewEpisodes.connect('button-press-event', self.treeview_episodes_button_pressed) self.treeviewEpisodes.connect('popup-menu', self.treeview_episodes_button_pressed) self.treeviewEpisodes.set_rules_hint( True) self.treeviewEpisodes.set_model( self.model) self.treeviewEpisodes.columns_autosize() # Focus the toggle column for Tab-focusing (bug 503) path, column = self.treeviewEpisodes.get_cursor() if path is not None: self.treeviewEpisodes.set_cursor(path, toggle_column) self.calculate_total_size() def treeview_episodes_query_tooltip(self, treeview, x, y, keyboard_tooltip, tooltip): # With get_bin_window, we get the window that contains the rows without # the header. The Y coordinate of this window will be the height of the # treeview header. This is the amount we have to subtract from the # event's Y coordinate to get the coordinate to pass to get_path_at_pos (x_bin, y_bin) = treeview.get_bin_window().get_position() y -= x_bin y -= y_bin (path, column, rx, ry) = treeview.get_path_at_pos(x, y) or (None,)*4 if not self.episode_list_can_tooltip or column != treeview.get_columns()[1]: self.last_tooltip_episode = None return False if path is not None: model = treeview.get_model() iter = model.get_iter(path) index = model.get_value(iter, self.COLUMN_INDEX) description = model.get_value(iter, self.COLUMN_TOOLTIP) if self.last_tooltip_episode is not None and self.last_tooltip_episode != index: self.last_tooltip_episode = None return False self.last_tooltip_episode = index description = util.remove_html_tags(description) # Bug 1825: make sure description is a unicode string, # so it may be cut correctly on UTF-8 char boundaries description = util.convert_bytes(description) if description is not None: if len(description) > 400: description = description[:398]+'[...]' tooltip.set_text(description) return True else: return False self.last_tooltip_episode = None return False def treeview_episodes_button_pressed(self, treeview, event=None): if event is None or event.button == 3: menu = gtk.Menu() if len(self.selection_buttons): for label in self.selection_buttons: item = gtk.MenuItem(label) item.connect('activate', self.custom_selection_button_clicked, label) menu.append(item) menu.append(gtk.SeparatorMenuItem()) item = gtk.MenuItem(_('Select all')) item.connect('activate', self.on_btnCheckAll_clicked) menu.append(item) item = gtk.MenuItem(_('Select none')) item.connect('activate', self.on_btnCheckNone_clicked) menu.append(item) menu.show_all() # Disable tooltips while we are showing the menu, so # the tooltip will not appear over the menu self.episode_list_can_tooltip = False menu.connect('deactivate', lambda menushell: self.episode_list_allow_tooltips()) if event is None: func = TreeViewHelper.make_popup_position_func(treeview) menu.popup(None, None, func, 3, 0) else: menu.popup(None, None, None, event.button, event.time) return True def episode_list_allow_tooltips(self): self.episode_list_can_tooltip = True def calculate_total_size( self): if self.size_attribute is not None: (total_size, count) = (0, 0) for episode in self.get_selected_episodes(): try: total_size += int(getattr( episode, self.size_attribute)) count += 1 except: pass text = [] if count == 0: text.append(_('Nothing selected')) text.append(N_('%(count)d episode', '%(count)d episodes', count) % {'count':count}) if total_size > 0: text.append(_('size: %s') % util.format_filesize(total_size)) self.labelTotalSize.set_text(', '.join(text)) self.btnOK.set_sensitive(count>0) self.btnRemoveAction.set_sensitive(count>0) if count > 0: self.btnCancel.set_label(gtk.STOCK_CANCEL) else: self.btnCancel.set_label(gtk.STOCK_CLOSE) else: self.btnOK.set_sensitive(False) self.btnRemoveAction.set_sensitive(False) for index, row in enumerate(self.model): if self.model.get_value(row.iter, self.COLUMN_TOGGLE) == True: self.btnOK.set_sensitive(True) self.btnRemoveAction.set_sensitive(True) break self.labelTotalSize.set_text('') def toggle_cell_handler( self, cell, path): model = self.treeviewEpisodes.get_model() model[path][self.COLUMN_TOGGLE] = not model[path][self.COLUMN_TOGGLE] self.calculate_total_size() def custom_selection_button_clicked(self, button, label): callback = self.selection_buttons[label] for index, row in enumerate( self.model): new_value = callback( self.episodes[index]) self.model.set_value( row.iter, self.COLUMN_TOGGLE, new_value) self.calculate_total_size() def on_btnCheckAll_clicked( self, widget): for row in self.model: self.model.set_value( row.iter, self.COLUMN_TOGGLE, True) self.calculate_total_size() def on_btnCheckNone_clicked( self, widget): for row in self.model: self.model.set_value( row.iter, self.COLUMN_TOGGLE, False) self.calculate_total_size() def on_remove_action_activate(self, widget): episodes = self.get_selected_episodes(remove_episodes=True) urls = [] for episode in episodes: urls.append(episode.url) self.remove_callback(episode) if self.remove_finished is not None: self.remove_finished(urls) self.calculate_total_size() # Close the window when there are no episodes left model = self.treeviewEpisodes.get_model() if model.get_iter_first() is None: self.on_btnCancel_clicked(None) def on_row_activated(self, treeview, path, view_column): model = treeview.get_model() iter = model.get_iter(path) value = model.get_value(iter, self.COLUMN_TOGGLE) model.set_value(iter, self.COLUMN_TOGGLE, not value) self.calculate_total_size() def get_selected_episodes( self, remove_episodes=False): selected_episodes = [] for index, row in enumerate( self.model): if self.model.get_value( row.iter, self.COLUMN_TOGGLE) == True: selected_episodes.append( self.episodes[self.model.get_value( row.iter, self.COLUMN_INDEX)]) if remove_episodes: for episode in selected_episodes: index = self.episodes.index(episode) iter = self.model.get_iter_first() while iter is not None: if self.model.get_value(iter, self.COLUMN_INDEX) == index: self.model.remove(iter) break iter = self.model.iter_next(iter) return selected_episodes def on_btnOK_clicked( self, widget): self.gPodderEpisodeSelector.destroy() if self.callback is not None: self.callback( self.get_selected_episodes()) def on_btnCancel_clicked( self, widget): self.gPodderEpisodeSelector.destroy() if self.callback is not None: self.callback([]) gpodder-3.9.0/src/gpodder/gtkui/desktop/preferences.py0000644000016000001710000007006212654461624024162 0ustar jenkinsjenkins00000000000000# -*- coding: utf-8 -*- # # gPodder - A media aggregator and podcast client # Copyright (c) 2005-2016 Thomas Perl and the gPodder Team # # gPodder is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 3 of the License, or # (at your option) any later version. # # gPodder is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . # import gtk import pango import cgi import urlparse import logging logger = logging.getLogger(__name__) import gpodder _ = gpodder.gettext N_ = gpodder.ngettext from gpodder import util from gpodder import youtube from gpodder import vimeo from gpodder.gtkui.interface.common import BuilderWidget from gpodder.gtkui.interface.common import TreeViewHelper from gpodder.gtkui.interface.configeditor import gPodderConfigEditor from gpodder.gtkui.desktopfile import PlayerListModel class NewEpisodeActionList(gtk.ListStore): C_CAPTION, C_AUTO_DOWNLOAD = range(2) ACTION_NONE, ACTION_ASK, ACTION_MINIMIZED, ACTION_ALWAYS = range(4) def __init__(self, config): gtk.ListStore.__init__(self, str, str) self._config = config self.append((_('Do nothing'), 'ignore')) self.append((_('Show episode list'), 'show')) self.append((_('Add to download list'), 'queue')) self.append((_('Download immediately'), 'download')) def get_index(self): for index, row in enumerate(self): if self._config.auto_download == row[self.C_AUTO_DOWNLOAD]: return index return 1 # Some sane default def set_index(self, index): self._config.auto_download = self[index][self.C_AUTO_DOWNLOAD] class DeviceTypeActionList(gtk.ListStore): C_CAPTION, C_DEVICE_TYPE = range(2) def __init__(self, config): gtk.ListStore.__init__(self, str, str) self._config = config self.append((_('None'), 'none')) self.append((_('iPod'), 'ipod')) self.append((_('Filesystem-based'), 'filesystem')) def get_index(self): for index, row in enumerate(self): if self._config.device_sync.device_type == row[self.C_DEVICE_TYPE]: return index return 0 # Some sane default def set_index(self, index): self._config.device_sync.device_type = self[index][self.C_DEVICE_TYPE] class OnSyncActionList(gtk.ListStore): C_CAPTION, C_ON_SYNC_DELETE, C_ON_SYNC_MARK_PLAYED = range(3) ACTION_NONE, ACTION_ASK, ACTION_MINIMIZED, ACTION_ALWAYS = range(4) def __init__(self, config): gtk.ListStore.__init__(self, str, bool, bool) self._config = config self.append((_('Do nothing'), False, False)) self.append((_('Mark as played'), False, True)) self.append((_('Delete from gPodder'), True, False)) def get_index(self): for index, row in enumerate(self): if (self._config.device_sync.after_sync.delete_episodes and row[self.C_ON_SYNC_DELETE]): return index if (self._config.device_sync.after_sync.mark_episodes_played and row[self.C_ON_SYNC_MARK_PLAYED] and not self._config.device_sync.after_sync.delete_episodes): return index return 0 # Some sane default def set_index(self, index): self._config.device_sync.after_sync.delete_episodes = self[index][self.C_ON_SYNC_DELETE] self._config.device_sync.after_sync.mark_episodes_played = self[index][self.C_ON_SYNC_MARK_PLAYED] class YouTubeVideoFormatListModel(gtk.ListStore): C_CAPTION, C_ID = range(2) def __init__(self, config): gtk.ListStore.__init__(self, str, int) self._config = config self.custom_fmt_ids = self._config.youtube.preferred_fmt_ids if self._config.youtube.preferred_fmt_ids: caption = _('Custom (%(format_ids)s)') % { 'format_ids': ', '.join(str(x) for x in self.custom_fmt_ids), } self.append((caption, -1)) for id, (fmt_id, path, description) in youtube.formats: self.append((description, id)) def get_index(self): if self._config.youtube.preferred_fmt_ids: return 0 for index, row in enumerate(self): if self._config.youtube.preferred_fmt_id == row[self.C_ID]: return index return 0 def set_index(self, index): value = self[index][self.C_ID] if value > 0: self._config.youtube.preferred_fmt_id = value # If we set a value, we need to unset the custom one, so that # the single value (preferred_fmt_id) gets used instead self._config.youtube.preferred_fmt_ids = [] else: # If the user selects the -1 value, it's our custom one, and # we need to restore the value for preferred_fmt_ids self._config.youtube.preferred_fmt_ids = self.custom_fmt_ids class VimeoVideoFormatListModel(gtk.ListStore): C_CAPTION, C_ID = range(2) def __init__(self, config): gtk.ListStore.__init__(self, str, str) self._config = config for fileformat, description in vimeo.FORMATS: self.append((description, fileformat)) def get_index(self): for index, row in enumerate(self): if self._config.vimeo.fileformat == row[self.C_ID]: return index return 0 def set_index(self, index): value = self[index][self.C_ID] if value > 0: self._config.vimeo.fileformat = value class gPodderPreferences(BuilderWidget): C_TOGGLE, C_LABEL, C_EXTENSION, C_SHOW_TOGGLE = range(4) def new(self): for cb in (self.combo_audio_player_app, self.combo_video_player_app): cellrenderer = gtk.CellRendererPixbuf() cb.pack_start(cellrenderer, False) cb.add_attribute(cellrenderer, 'pixbuf', PlayerListModel.C_ICON) cellrenderer = gtk.CellRendererText() cellrenderer.set_property('ellipsize', pango.ELLIPSIZE_END) cb.pack_start(cellrenderer, True) cb.add_attribute(cellrenderer, 'markup', PlayerListModel.C_NAME) cb.set_row_separator_func(PlayerListModel.is_separator) self.audio_player_model = self.user_apps_reader.get_model('audio') self.combo_audio_player_app.set_model(self.audio_player_model) index = self.audio_player_model.get_index(self._config.player) self.combo_audio_player_app.set_active(index) self.video_player_model = self.user_apps_reader.get_model('video') self.combo_video_player_app.set_model(self.video_player_model) index = self.video_player_model.get_index(self._config.videoplayer) self.combo_video_player_app.set_active(index) self.preferred_youtube_format_model = YouTubeVideoFormatListModel(self._config) self.combobox_preferred_youtube_format.set_model(self.preferred_youtube_format_model) cellrenderer = gtk.CellRendererText() self.combobox_preferred_youtube_format.pack_start(cellrenderer, True) self.combobox_preferred_youtube_format.add_attribute(cellrenderer, 'text', self.preferred_youtube_format_model.C_CAPTION) self.combobox_preferred_youtube_format.set_active(self.preferred_youtube_format_model.get_index()) self.preferred_vimeo_format_model = VimeoVideoFormatListModel(self._config) self.combobox_preferred_vimeo_format.set_model(self.preferred_vimeo_format_model) cellrenderer = gtk.CellRendererText() self.combobox_preferred_vimeo_format.pack_start(cellrenderer, True) self.combobox_preferred_vimeo_format.add_attribute(cellrenderer, 'text', self.preferred_vimeo_format_model.C_CAPTION) self.combobox_preferred_vimeo_format.set_active(self.preferred_vimeo_format_model.get_index()) self._config.connect_gtk_togglebutton('podcast_list_view_all', self.checkbutton_show_all_episodes) self._config.connect_gtk_togglebutton('podcast_list_sections', self.checkbutton_podcast_sections) self.update_interval_presets = [0, 10, 30, 60, 2*60, 6*60, 12*60] adjustment_update_interval = self.hscale_update_interval.get_adjustment() adjustment_update_interval.upper = len(self.update_interval_presets)-1 if self._config.auto_update_frequency in self.update_interval_presets: index = self.update_interval_presets.index(self._config.auto_update_frequency) self.hscale_update_interval.set_value(index) else: # Patch in the current "custom" value into the mix self.update_interval_presets.append(self._config.auto_update_frequency) self.update_interval_presets.sort() adjustment_update_interval.upper = len(self.update_interval_presets)-1 index = self.update_interval_presets.index(self._config.auto_update_frequency) self.hscale_update_interval.set_value(index) self._config.connect_gtk_spinbutton('max_episodes_per_feed', self.spinbutton_episode_limit) self.auto_download_model = NewEpisodeActionList(self._config) self.combo_auto_download.set_model(self.auto_download_model) cellrenderer = gtk.CellRendererText() self.combo_auto_download.pack_start(cellrenderer, True) self.combo_auto_download.add_attribute(cellrenderer, 'text', NewEpisodeActionList.C_CAPTION) self.combo_auto_download.set_active(self.auto_download_model.get_index()) if self._config.auto_remove_played_episodes: adjustment_expiration = self.hscale_expiration.get_adjustment() if self._config.episode_old_age > adjustment_expiration.get_upper(): # Patch the adjustment to include the higher current value adjustment_expiration.upper = self._config.episode_old_age self.hscale_expiration.set_value(self._config.episode_old_age) else: self.hscale_expiration.set_value(0) self._config.connect_gtk_togglebutton('auto_remove_unplayed_episodes', self.checkbutton_expiration_unplayed) self._config.connect_gtk_togglebutton('auto_remove_unfinished_episodes', self.checkbutton_expiration_unfinished) self.device_type_model = DeviceTypeActionList(self._config) self.combobox_device_type.set_model(self.device_type_model) cellrenderer = gtk.CellRendererText() self.combobox_device_type.pack_start(cellrenderer, True) self.combobox_device_type.add_attribute(cellrenderer, 'text', DeviceTypeActionList.C_CAPTION) self.combobox_device_type.set_active(self.device_type_model.get_index()) self.on_sync_model = OnSyncActionList(self._config) self.combobox_on_sync.set_model(self.on_sync_model) cellrenderer = gtk.CellRendererText() self.combobox_on_sync.pack_start(cellrenderer, True) self.combobox_on_sync.add_attribute(cellrenderer, 'text', OnSyncActionList.C_CAPTION) self.combobox_on_sync.set_active(self.on_sync_model.get_index()) self._config.connect_gtk_togglebutton('device_sync.skip_played_episodes', self.checkbutton_skip_played_episodes) self._config.connect_gtk_togglebutton('device_sync.playlists.create', self.checkbutton_create_playlists) self._config.connect_gtk_togglebutton('device_sync.playlists.two_way_sync', self.checkbutton_delete_using_playlists) # Have to do this before calling set_active on checkbutton_enable self._enable_mygpo = self._config.mygpo.enabled # Initialize the UI state with configuration settings self.checkbutton_enable.set_active(self._config.mygpo.enabled) self.entry_username.set_text(self._config.mygpo.username) self.entry_password.set_text(self._config.mygpo.password) self.entry_caption.set_text(self._config.mygpo.device.caption) self.entry_youtube_api_key.set_text(self._config.youtube.api_key_v3) # Disable mygpo sync while the dialog is open self._config.mygpo.enabled = False # Configure the extensions manager GUI self.set_extension_preferences() def set_extension_preferences(self): def search_equal_func(model, column, key, it): label = model.get_value(it, self.C_LABEL) if key.lower() in label.lower(): # from http://www.pygtk.org/docs/pygtk/class-gtktreeview.html: # "func should return False to indicate that the row matches # the search criteria." return False return True self.treeviewExtensions.set_search_equal_func(search_equal_func) toggle_cell = gtk.CellRendererToggle() toggle_cell.connect('toggled', self.on_extensions_cell_toggled) toggle_column = gtk.TreeViewColumn('') toggle_column.pack_start(toggle_cell, True) toggle_column.add_attribute(toggle_cell, 'active', self.C_TOGGLE) toggle_column.add_attribute(toggle_cell, 'visible', self.C_SHOW_TOGGLE) toggle_column.set_property('min-width', 32) self.treeviewExtensions.append_column(toggle_column) name_cell = gtk.CellRendererText() name_cell.set_property('ellipsize', pango.ELLIPSIZE_END) extension_column = gtk.TreeViewColumn(_('Name')) extension_column.pack_start(name_cell, True) extension_column.add_attribute(name_cell, 'markup', self.C_LABEL) extension_column.set_expand(True) self.treeviewExtensions.append_column(extension_column) self.extensions_model = gtk.ListStore(bool, str, object, bool) def key_func(pair): category, container = pair return (category, container.metadata.title) def convert(extensions): for container in extensions: yield (container.metadata.category, container) old_category = None for category, container in sorted(convert(gpodder.user_extensions.get_extensions()), key=key_func): if old_category != category: label = '%s' % cgi.escape(category) self.extensions_model.append((None, label, None, False)) old_category = category label = '%s\n%s' % ( cgi.escape(container.metadata.title), cgi.escape(container.metadata.description)) self.extensions_model.append((container.enabled, label, container, True)) self.treeviewExtensions.set_model(self.extensions_model) self.treeviewExtensions.columns_autosize() def on_treeview_extension_button_released(self, treeview, event): if event.window != treeview.get_bin_window(): return False if event.type == gtk.gdk.BUTTON_RELEASE and event.button == 3: return self.on_treeview_extension_show_context_menu(treeview, event) return False def on_treeview_extension_show_context_menu(self, treeview, event=None): selection = treeview.get_selection() model, paths = selection.get_selected_rows() container = model.get_value(model.get_iter(paths[0]), self.C_EXTENSION) if not container: return menu = gtk.Menu() if container.metadata.doc: menu_item = gtk.MenuItem(_('Documentation')) menu_item.connect('activate', self.open_weblink, container.metadata.doc) menu.append(menu_item) menu_item = gtk.MenuItem(_('Extension info')) menu_item.connect('activate', self.show_extension_info, model, container) menu.append(menu_item) if container.metadata.payment: menu_item = gtk.MenuItem(_('Support the author')) menu_item.connect('activate', self.open_weblink, container.metadata.payment) menu.append(menu_item) menu.show_all() if event is None: func = TreeViewHelper.make_popup_position_func(treeview) menu.popup(None, None, func, 3, 0) else: menu.popup(None, None, None, 3, 0) return True def on_extensions_cell_toggled(self, cell, path): model = self.treeviewExtensions.get_model() it = model.get_iter(path) container = model.get_value(it, self.C_EXTENSION) enabled_extensions = list(self._config.extensions.enabled) new_enabled = not model.get_value(it, self.C_TOGGLE) if new_enabled and container.name not in enabled_extensions: enabled_extensions.append(container.name) elif not new_enabled and container.name in enabled_extensions: enabled_extensions.remove(container.name) self._config.extensions.enabled = enabled_extensions now_enabled = (container.name in self._config.extensions.enabled) if new_enabled == now_enabled: model.set_value(it, self.C_TOGGLE, new_enabled) elif container.error is not None: self.show_message(container.error.message, _('Extension cannot be activated'), important=True) model.set_value(it, self.C_TOGGLE, False) def show_extension_info(self, w, model, container): if not container or not model: return # This is one ugly hack, but it displays the attributes of # the metadata object of the container.. info = '\n'.join('%s: %s' % tuple(map(cgi.escape, map(str, (key, value)))) for key, value in container.metadata.get_sorted()) self.show_message(info, _('Extension module info'), important=True) def open_weblink(self, w, url): util.open_website(url) def on_dialog_destroy(self, widget): # Re-enable mygpo sync if the user has selected it self._config.mygpo.enabled = self._enable_mygpo # Make sure the device is successfully created/updated self.mygpo_client.create_device() # Flush settings for mygpo client now self.mygpo_client.flush(now=True) def on_button_close_clicked(self, widget): self.main_window.destroy() def on_button_advanced_clicked(self, widget): self.main_window.destroy() gPodderConfigEditor(self.parent_window, _config=self._config) def on_combo_audio_player_app_changed(self, widget): index = self.combo_audio_player_app.get_active() self._config.player = self.audio_player_model.get_command(index) def on_combo_video_player_app_changed(self, widget): index = self.combo_video_player_app.get_active() self._config.videoplayer = self.video_player_model.get_command(index) def on_combobox_preferred_youtube_format_changed(self, widget): index = self.combobox_preferred_youtube_format.get_active() self.preferred_youtube_format_model.set_index(index) def on_combobox_preferred_vimeo_format_changed(self, widget): index = self.combobox_preferred_vimeo_format.get_active() self.preferred_vimeo_format_model.set_index(index) def on_button_audio_player_clicked(self, widget): result = self.show_text_edit_dialog(_('Configure audio player'), \ _('Command:'), \ self._config.player) if result: self._config.player = result index = self.audio_player_model.get_index(self._config.player) self.combo_audio_player_app.set_active(index) def on_button_video_player_clicked(self, widget): result = self.show_text_edit_dialog(_('Configure video player'), \ _('Command:'), \ self._config.videoplayer) if result: self._config.videoplayer = result index = self.video_player_model.get_index(self._config.videoplayer) self.combo_video_player_app.set_active(index) def format_update_interval_value(self, scale, value): value = int(value) if value == 0: return _('manually') elif value > 0 and len(self.update_interval_presets) > value: return util.format_seconds_to_hour_min_sec(self.update_interval_presets[value]*60) else: return str(value) def on_update_interval_value_changed(self, range): value = int(range.get_value()) self._config.auto_update_feeds = (value > 0) self._config.auto_update_frequency = self.update_interval_presets[value] def on_combo_auto_download_changed(self, widget): index = self.combo_auto_download.get_active() self.auto_download_model.set_index(index) def format_expiration_value(self, scale, value): value = int(value) if value == 0: return _('manually') else: return N_('after %(count)d day', 'after %(count)d days', value) % {'count':value} def on_expiration_value_changed(self, range): value = int(range.get_value()) if value == 0: self.checkbutton_expiration_unplayed.set_active(False) self._config.auto_remove_played_episodes = False self._config.auto_remove_unplayed_episodes = False else: self._config.auto_remove_played_episodes = True self._config.episode_old_age = value self.checkbutton_expiration_unplayed.set_sensitive(value > 0) self.checkbutton_expiration_unfinished.set_sensitive(value > 0) def on_enabled_toggled(self, widget): # Only update indirectly (see on_dialog_destroy) self._enable_mygpo = widget.get_active() def on_youtube_api_key_changed(self, widget): self._config.youtube.api_key_v3 = widget.get_text() def on_button_youtube_api_key_clicked(self, widget): util.open_website('http://wiki.gpodder.org/wiki/Youtube') def on_username_changed(self, widget): self._config.mygpo.username = widget.get_text() def on_password_changed(self, widget): self._config.mygpo.password = widget.get_text() def on_device_caption_changed(self, widget): self._config.mygpo.device.caption = widget.get_text() def on_button_overwrite_clicked(self, button): title = _('Replace subscription list on server') message = _('Remote podcasts that have not been added locally will be removed on the server. Continue?') if self.show_confirmation(message, title): @util.run_in_background def thread_proc(): self._config.mygpo.enabled = True self.on_send_full_subscriptions() self._config.mygpo.enabled = False def on_combobox_on_sync_changed(self, widget): index = self.combobox_on_sync.get_active() self.on_sync_model.set_index(index) def on_checkbutton_create_playlists_toggled(self, widget,device_type_changed=False): if not widget.get_active(): self._config.device_sync.playlists.create=False self.toggle_playlist_interface(False) #need to read value of checkbutton from interface, #rather than value of parameter else: self._config.device_sync.playlists.create=True self.toggle_playlist_interface(True) def toggle_playlist_interface(self, enabled): if enabled and self._config.device_sync.device_type == 'filesystem': self.btn_playlistfolder.set_sensitive(True) self.btn_playlistfolder.set_label(self._config.device_sync.playlists.folder) self.checkbutton_delete_using_playlists.set_sensitive(True) children = self.btn_playlistfolder.get_children() if children: label = children.pop() label.set_alignment(0., .5) else: self.btn_playlistfolder.set_sensitive(False) self.btn_playlistfolder.set_label('') self.checkbutton_delete_using_playlists.set_sensitive(False) def on_combobox_device_type_changed(self, widget): index = self.combobox_device_type.get_active() self.device_type_model.set_index(index) device_type = self._config.device_sync.device_type if device_type == 'none': self.btn_filesystemMountpoint.set_label('') self.btn_filesystemMountpoint.set_sensitive(False) self.checkbutton_create_playlists.set_sensitive(False) self.toggle_playlist_interface(False) self.checkbutton_delete_using_playlists.set_sensitive(False) self.combobox_on_sync.set_sensitive(False) self.checkbutton_skip_played_episodes.set_sensitive(False) elif device_type == 'filesystem': self.btn_filesystemMountpoint.set_label(self._config.device_sync.device_folder) self.btn_filesystemMountpoint.set_sensitive(True) self.checkbutton_create_playlists.set_sensitive(True) children = self.btn_filesystemMountpoint.get_children() if children: label = children.pop() label.set_alignment(0., .5) self.toggle_playlist_interface(self._config.device_sync.playlists.create) self.combobox_on_sync.set_sensitive(True) self.checkbutton_skip_played_episodes.set_sensitive(True) elif device_type == 'ipod': self.btn_filesystemMountpoint.set_label(self._config.device_sync.device_folder) self.btn_filesystemMountpoint.set_sensitive(True) self.checkbutton_create_playlists.set_sensitive(False) self.toggle_playlist_interface(False) self.checkbutton_delete_using_playlists.set_sensitive(False) self.combobox_on_sync.set_sensitive(False) self.checkbutton_skip_played_episodes.set_sensitive(False) children = self.btn_filesystemMountpoint.get_children() if children: label = children.pop() label.set_alignment(0., .5) else: # TODO: Add support for iPod and MTP devices pass def on_btn_device_mountpoint_clicked(self, widget): fs = gtk.FileChooserDialog(title=_('Select folder for mount point'), action=gtk.FILE_CHOOSER_ACTION_SELECT_FOLDER) fs.add_button(gtk.STOCK_CANCEL, gtk.RESPONSE_CANCEL) fs.add_button(gtk.STOCK_OPEN, gtk.RESPONSE_OK) fs.set_current_folder(self.btn_filesystemMountpoint.get_label()) if fs.run() == gtk.RESPONSE_OK: filename = fs.get_filename() if self._config.device_sync.device_type == 'filesystem': self._config.device_sync.device_folder = filename elif self._config.device_sync.device_type == 'ipod': self._config.device_sync.device_folder = filename # Request an update of the mountpoint button self.on_combobox_device_type_changed(None) fs.destroy() def on_btn_playlist_folder_clicked(self, widget): fs = gtk.FileChooserDialog(title=_('Select folder for playlists'), action=gtk.FILE_CHOOSER_ACTION_SELECT_FOLDER) fs.add_button(gtk.STOCK_CANCEL, gtk.RESPONSE_CANCEL) fs.add_button(gtk.STOCK_OPEN, gtk.RESPONSE_OK) fs.set_current_folder(self.btn_playlistfolder.get_label()) if fs.run() == gtk.RESPONSE_OK: filename = util.relpath(self._config.device_sync.device_folder, fs.get_filename()) if self._config.device_sync.device_type == 'filesystem': self._config.device_sync.playlists.folder = filename self.btn_playlistfolder.set_label(filename) children = self.btn_playlistfolder.get_children() if children: label = children.pop() label.set_alignment(0., .5) fs.destroy() gpodder-3.9.0/src/gpodder/gtkui/desktop/welcome.py0000644000016000001710000000260112654461624023306 0ustar jenkinsjenkins00000000000000# -*- coding: utf-8 -*- # # gPodder - A media aggregator and podcast client # Copyright (c) 2005-2016 Thomas Perl and the gPodder Team # # gPodder is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 3 of the License, or # (at your option) any later version. # # gPodder is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . # import gtk import gpodder _ = gpodder.gettext from gpodder.gtkui.interface.common import BuilderWidget class gPodderWelcome(BuilderWidget): PADDING = 10 def new(self): for widget in self.vbox_buttons.get_children(): for child in widget.get_children(): if isinstance(child, gtk.Alignment): child.set_padding(self.PADDING, self.PADDING, self.PADDING, self.PADDING) else: child.set_padding(self.PADDING, self.PADDING) def on_btnCancel_clicked(self, button): self.main_window.response(gtk.RESPONSE_CANCEL) gpodder-3.9.0/src/gpodder/gtkui/interface/0000755000016000001710000000000012654461626021573 5ustar jenkinsjenkins00000000000000gpodder-3.9.0/src/gpodder/gtkui/interface/addpodcast.py0000644000016000001710000000643512654461624024261 0ustar jenkinsjenkins00000000000000# -*- coding: utf-8 -*- # # gPodder - A media aggregator and podcast client # Copyright (c) 2005-2016 Thomas Perl and the gPodder Team # # gPodder is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 3 of the License, or # (at your option) any later version. # # gPodder is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . # import gtk import gpodder _ = gpodder.gettext from gpodder.gtkui.interface.common import BuilderWidget from gpodder import util class gPodderAddPodcast(BuilderWidget): def new(self): if not hasattr(self, 'add_podcast_list'): self.add_podcast_list = None if hasattr(self, 'custom_label'): self.label_add.set_text(self.custom_label) if hasattr(self, 'custom_title'): self.gPodderAddPodcast.set_title(self.custom_title) if hasattr(self, 'preset_url'): self.entry_url.set_text(self.preset_url) self.entry_url.connect('activate', self.on_entry_url_activate) self.gPodderAddPodcast.show() if not hasattr(self, 'preset_url'): # Fill the entry if a valid URL is in the clipboard, but # only if there's no preset_url available (see bug 1132) clipboard = gtk.Clipboard(selection='PRIMARY') def receive_clipboard_text(clipboard, text, second_try): # Heuristic: If there is a space in the clipboard # text, assume it's some arbitrary text, and no URL if text is not None and ' ' not in text: url = util.normalize_feed_url(text) if url is not None: self.entry_url.set_text(url) self.entry_url.set_position(-1) return if not second_try: clipboard = gtk.Clipboard() clipboard.request_text(receive_clipboard_text, True) clipboard.request_text(receive_clipboard_text, False) def on_btn_close_clicked(self, widget): self.gPodderAddPodcast.destroy() def on_btn_paste_clicked(self, widget): clipboard = gtk.Clipboard() clipboard.request_text(self.receive_clipboard_text) def receive_clipboard_text(self, clipboard, text, data=None): if text is not None: self.entry_url.set_text(text) else: self.show_message(_('Nothing to paste.'), _('Clipboard is empty')) def on_entry_url_changed(self, widget): self.btn_add.set_sensitive(self.entry_url.get_text().strip() != '') def on_entry_url_activate(self, widget): self.on_btn_add_clicked(widget) def on_btn_add_clicked(self, widget): url = self.entry_url.get_text() self.on_btn_close_clicked(widget) if self.add_podcast_list is not None: title = None # FIXME: Add title GUI element self.add_podcast_list([(title, url)]) gpodder-3.9.0/src/gpodder/gtkui/interface/common.py0000644000016000001710000002622512654461624023442 0ustar jenkinsjenkins00000000000000# -*- coding: utf-8 -*- # # gPodder - A media aggregator and podcast client # Copyright (c) 2005-2016 Thomas Perl and the gPodder Team # # gPodder is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 3 of the License, or # (at your option) any later version. # # gPodder is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . # import gtk import os import shutil import gpodder _ = gpodder.gettext from gpodder import util from gpodder.gtkui.base import GtkBuilderWidget class BuilderWidget(GtkBuilderWidget): def __init__(self, parent, **kwargs): self._window_iconified = False self._window_visible = False GtkBuilderWidget.__init__(self, gpodder.ui_folders, gpodder.textdomain, **kwargs) # Enable support for tracking iconified state if hasattr(self, 'on_iconify') and hasattr(self, 'on_uniconify'): self.main_window.connect('window-state-event', \ self._on_window_state_event_iconified) # Enable support for tracking visibility state self.main_window.connect('visibility-notify-event', \ self._on_window_state_event_visibility) if parent is not None: self.main_window.set_transient_for(parent) if hasattr(self, 'center_on_widget'): (x, y) = parent.get_position() a = self.center_on_widget.allocation (x, y) = (x + a.x, y + a.y) (w, h) = (a.width, a.height) (pw, ph) = self.main_window.get_size() self.main_window.move(x + w/2 - pw/2, y + h/2 - ph/2) def _on_window_state_event_visibility(self, widget, event): if event.state & gtk.gdk.VISIBILITY_FULLY_OBSCURED: self._window_visible = False else: self._window_visible = True return False def _on_window_state_event_iconified(self, widget, event): if event.new_window_state & gtk.gdk.WINDOW_STATE_ICONIFIED: if not self._window_iconified: self._window_iconified = True self.on_iconify() else: if self._window_iconified: self._window_iconified = False self.on_uniconify() return False def is_iconified(self): return self._window_iconified def notification(self, message, title=None, important=False, widget=None): util.idle_add(self.show_message, message, title, important, widget) def get_dialog_parent(self): """Return a gtk.Window that should be the parent of dialogs""" return self.main_window def show_message(self, message, title=None, important=False, widget=None): if important: dlg = gtk.MessageDialog(self.main_window, gtk.DIALOG_MODAL, gtk.MESSAGE_INFO, gtk.BUTTONS_OK) if title: dlg.set_title(str(title)) dlg.set_markup('%s\n\n%s' % (title, message)) else: dlg.set_markup('%s' % (message)) dlg.run() dlg.destroy() else: gpodder.user_extensions.on_notification_show(title, message) def show_confirmation(self, message, title=None): dlg = gtk.MessageDialog(self.main_window, gtk.DIALOG_MODAL, gtk.MESSAGE_QUESTION, gtk.BUTTONS_YES_NO) if title: dlg.set_title(str(title)) dlg.set_markup('%s\n\n%s' % (title, message)) else: dlg.set_markup('%s' % (message)) response = dlg.run() dlg.destroy() return response == gtk.RESPONSE_YES def show_text_edit_dialog(self, title, prompt, text=None, empty=False, \ is_url=False, affirmative_text=gtk.STOCK_OK): dialog = gtk.Dialog(title, self.get_dialog_parent(), \ gtk.DIALOG_MODAL | gtk.DIALOG_DESTROY_WITH_PARENT) dialog.add_button(gtk.STOCK_CANCEL, gtk.RESPONSE_CANCEL) dialog.add_button(affirmative_text, gtk.RESPONSE_OK) dialog.set_has_separator(False) dialog.set_default_size(300, -1) dialog.set_default_response(gtk.RESPONSE_OK) text_entry = gtk.Entry() text_entry.set_activates_default(True) if text is not None: text_entry.set_text(text) text_entry.select_region(0, -1) if not empty: def on_text_changed(editable): can_confirm = (editable.get_text() != '') dialog.set_response_sensitive(gtk.RESPONSE_OK, can_confirm) text_entry.connect('changed', on_text_changed) if text is None: dialog.set_response_sensitive(gtk.RESPONSE_OK, False) hbox = gtk.HBox() hbox.set_border_width(10) hbox.set_spacing(10) hbox.pack_start(gtk.Label(prompt), False, False) hbox.pack_start(text_entry, True, True) dialog.vbox.pack_start(hbox, True, True) dialog.show_all() response = dialog.run() result = text_entry.get_text() dialog.destroy() if response == gtk.RESPONSE_OK: return result else: return None def show_login_dialog(self, title, message, username=None, password=None, username_prompt=None, register_callback=None, register_text=None): if username_prompt is None: username_prompt = _('Username') if register_text is None: register_text = _('New user') dialog = gtk.MessageDialog( self.main_window, gtk.DIALOG_MODAL | gtk.DIALOG_DESTROY_WITH_PARENT, gtk.MESSAGE_QUESTION, gtk.BUTTONS_CANCEL) dialog.add_button(_('Login'), gtk.RESPONSE_OK) dialog.set_image(gtk.image_new_from_stock(gtk.STOCK_DIALOG_AUTHENTICATION, gtk.ICON_SIZE_DIALOG)) dialog.set_title(_('Authentication required')) dialog.set_markup('' + title + '') dialog.format_secondary_markup(message) dialog.set_default_response(gtk.RESPONSE_OK) if register_callback is not None: dialog.add_button(register_text, gtk.RESPONSE_HELP) username_entry = gtk.Entry() password_entry = gtk.Entry() username_entry.connect('activate', lambda w: password_entry.grab_focus()) password_entry.set_visibility(False) password_entry.set_activates_default(True) if username is not None: username_entry.set_text(username) if password is not None: password_entry.set_text(password) table = gtk.Table(2, 2) table.set_row_spacings(6) table.set_col_spacings(6) username_label = gtk.Label() username_label.set_markup('' + username_prompt + ':') username_label.set_alignment(0.0, 0.5) table.attach(username_label, 0, 1, 0, 1, gtk.FILL, 0) table.attach(username_entry, 1, 2, 0, 1) password_label = gtk.Label() password_label.set_markup('' + _('Password') + ':') password_label.set_alignment(0.0, 0.5) table.attach(password_label, 0, 1, 1, 2, gtk.FILL, 0) table.attach(password_entry, 1, 2, 1, 2) dialog.vbox.pack_end(table, True, True, 0) dialog.show_all() response = dialog.run() while response == gtk.RESPONSE_HELP: register_callback() response = dialog.run() password_entry.set_visibility(True) username = username_entry.get_text() password = password_entry.get_text() success = (response == gtk.RESPONSE_OK) dialog.destroy() return (success, (username, password)) def show_copy_dialog(self, src_filename, dst_filename=None, dst_directory=None, title=_('Select destination')): if dst_filename is None: dst_filename = src_filename if dst_directory is None: dst_directory = os.path.expanduser('~') base, extension = os.path.splitext(src_filename) if not dst_filename.endswith(extension): dst_filename += extension dlg = gtk.FileChooserDialog(title=title, parent=self.main_window, action=gtk.FILE_CHOOSER_ACTION_SAVE) dlg.add_button(gtk.STOCK_CANCEL, gtk.RESPONSE_CANCEL) dlg.add_button(gtk.STOCK_SAVE, gtk.RESPONSE_OK) dlg.set_do_overwrite_confirmation(True) dlg.set_current_name(os.path.basename(dst_filename)) dlg.set_current_folder(dst_directory) result = False folder = dst_directory if dlg.run() == gtk.RESPONSE_OK: result = True dst_filename = dlg.get_filename() folder = dlg.get_current_folder() if not dst_filename.endswith(extension): dst_filename += extension shutil.copyfile(src_filename, dst_filename) dlg.destroy() return (result, folder) class TreeViewHelper(object): """Container for gPodder-specific TreeView attributes.""" LAST_TOOLTIP = '_gpodder_last_tooltip' CAN_TOOLTIP = '_gpodder_can_tooltip' ROLE = '_gpodder_role' COLUMNS = '_gpodder_columns' # Enum for the role attribute ROLE_PODCASTS, ROLE_EPISODES, ROLE_DOWNLOADS = range(3) @classmethod def set(cls, treeview, role): setattr(treeview, cls.LAST_TOOLTIP, None) setattr(treeview, cls.CAN_TOOLTIP, True) setattr(treeview, cls.ROLE, role) @staticmethod def make_search_equal_func(gpodder_model): def func(model, column, key, iter): if model is None: return True key = key.lower() for column in gpodder_model.SEARCH_COLUMNS: if key in model.get_value(iter, column).lower(): return False return True return func @classmethod def register_column(cls, treeview, column): if not hasattr(treeview, cls.COLUMNS): setattr(treeview, cls.COLUMNS, []) columns = getattr(treeview, cls.COLUMNS) columns.append(column) @classmethod def get_columns(cls, treeview): return getattr(treeview, cls.COLUMNS, []) @staticmethod def make_popup_position_func(widget): def position_func(menu): x, y = widget.get_bin_window().get_origin() # If there's a selection, place the popup menu on top of # the first-selected row (otherwise in the top left corner) selection = widget.get_selection() model, paths = selection.get_selected_rows() if paths: path = paths[0] area = widget.get_cell_area(path, widget.get_column(0)) x += area.x y += area.y return (x, y, True) return position_func gpodder-3.9.0/src/gpodder/gtkui/interface/progress.py0000644000016000001710000000761612654461624024021 0ustar jenkinsjenkins00000000000000# -*- coding: utf-8 -*- # # gPodder - A media aggregator and podcast client # Copyright (c) 2005-2016 Thomas Perl and the gPodder Team # # gPodder is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 3 of the License, or # (at your option) any later version. # # gPodder is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . # import gtk import gobject import pango import gpodder _ = gpodder.gettext from gpodder.gtkui.widgets import SpinningProgressIndicator class ProgressIndicator(object): # Delayed time until window is shown (for short operations) DELAY = 500 # Time between GUI updates after window creation INTERVAL = 100 def __init__(self, title, subtitle=None, cancellable=False, parent=None): self.title = title self.subtitle = subtitle self.cancellable = cancellable self.parent = parent self.dialog = None self.progressbar = None self.indicator = None self._initial_message = None self._initial_progress = None self._progress_set = False self.source_id = gobject.timeout_add(self.DELAY, self._create_progress) def _on_delete_event(self, window, event): if self.cancellable: self.dialog.response(gtk.RESPONSE_CANCEL) return True def _create_progress(self): self.dialog = gtk.MessageDialog(self.parent, \ 0, 0, gtk.BUTTONS_CANCEL, self.subtitle or self.title) self.dialog.set_modal(True) self.dialog.connect('delete-event', self._on_delete_event) self.dialog.set_title(self.title) self.dialog.set_deletable(self.cancellable) # Avoid selectable text (requires PyGTK >= 2.22) if hasattr(self.dialog, 'get_message_area'): for label in self.dialog.get_message_area(): if isinstance(label, gtk.Label): label.set_selectable(False) self.dialog.set_response_sensitive(gtk.RESPONSE_CANCEL, \ self.cancellable) self.progressbar = gtk.ProgressBar() self.progressbar.set_ellipsize(pango.ELLIPSIZE_END) # If the window is shown after the first update, set the progress # info so that when the window appears, data is there already if self._initial_progress is not None: self.progressbar.set_fraction(self._initial_progress) if self._initial_message is not None: self.progressbar.set_text(self._initial_message) self.dialog.vbox.add(self.progressbar) self.indicator = SpinningProgressIndicator() self.dialog.set_image(self.indicator) self.dialog.show_all() gobject.source_remove(self.source_id) self.source_id = gobject.timeout_add(self.INTERVAL, self._update_gui) return False def _update_gui(self): if self.indicator: self.indicator.step_animation() if not self._progress_set and self.progressbar: self.progressbar.pulse() return True def on_message(self, message): if self.progressbar: self.progressbar.set_text(message) else: self._initial_message = message def on_progress(self, progress): self._progress_set = True if self.progressbar: self.progressbar.set_fraction(progress) else: self._initial_progress = progress def on_finished(self): if self.dialog is not None: self.dialog.destroy() gobject.source_remove(self.source_id) gpodder-3.9.0/src/gpodder/gtkui/interface/tagcloud.py0000644000016000001710000000667212654461624023760 0ustar jenkinsjenkins00000000000000# -*- coding: utf-8 -*- # # gPodder - A media aggregator and podcast client # Copyright (c) 2005-2016 Thomas Perl and the gPodder Team # # gPodder is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 3 of the License, or # (at your option) any later version. # # gPodder is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . # import gtk import gobject import cgi class TagCloud(gtk.Layout): __gsignals__ = { 'selected': (gobject.SIGNAL_RUN_LAST, gobject.TYPE_NONE, (gobject.TYPE_STRING,)) } def __init__(self, min_size=20, max_size=36): self.__gobject_init__() gtk.Layout.__init__(self) self._min_weight = 0 self._max_weight = 0 self._min_size = min_size self._max_size = max_size self._size = 0, 0 self._alloc_id = self.connect('size-allocate', self._on_size_allocate) self._in_relayout = False def clear_tags(self): for child in self.get_children(): self.remove(child) def set_tags(self, tags): tags = list(tags) self._min_weight = min(weight for tag, weight in tags) self._max_weight = max(weight for tag, weight in tags) for tag, weight in tags: label = gtk.Label() markup = '%s' % (1000*self._scale(weight), cgi.escape(tag)) label.set_markup(markup) button = gtk.ToolButton(label) button.connect('clicked', lambda b, t: self.emit('selected', t), tag) self.put(button, 1, 1) button.show_all() self.relayout() def _on_size_allocate(self, widget, allocation): self._size = (allocation.width, allocation.height) if not self._in_relayout: self.relayout() def _scale(self, weight): weight_range = float(self._max_weight-self._min_weight) ratio = float(weight-self._min_weight)/weight_range return int(self._min_size + (self._max_size-self._min_size)*ratio) def relayout(self): self._in_relayout = True x, y, max_h = 0, 0, 0 current_row = [] pw, ph = self._size def fixup_row(widgets, x, y, max_h): residue = (pw - x) x = int(residue/2) for widget in widgets: cw, ch = widget.size_request() self.move(widget, x, y+max(0, int((max_h-ch)/2))) x += cw + 10 for child in self.get_children(): w, h = child.size_request() if x + w > pw: fixup_row(current_row, x, y, max_h) y += max_h + 10 max_h, x = 0, 0 current_row = [] self.move(child, x, y) x += w + 10 max_h = max(max_h, h) current_row.append(child) fixup_row(current_row, x, y, max_h) self.set_size(pw, y+max_h) def unrelayout(): self._in_relayout = False return False gobject.idle_add(unrelayout) gobject.type_register(TagCloud) gpodder-3.9.0/src/gpodder/gtkui/interface/__init__.py0000644000016000001710000000137412654461624023707 0ustar jenkinsjenkins00000000000000# -*- coding: utf-8 -*- # # gPodder - A media aggregator and podcast client # Copyright (c) 2005-2016 Thomas Perl and the gPodder Team # # gPodder is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 3 of the License, or # (at your option) any later version. # # gPodder is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . # gpodder-3.9.0/src/gpodder/gtkui/interface/configeditor.py0000644000016000001710000001006512654461624024621 0ustar jenkinsjenkins00000000000000# -*- coding: utf-8 -*- # # gPodder - A media aggregator and podcast client # Copyright (c) 2005-2016 Thomas Perl and the gPodder Team # # gPodder is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 3 of the License, or # (at your option) any later version. # # gPodder is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . # import gtk import cgi import gpodder _ = gpodder.gettext from gpodder.gtkui.config import ConfigModel from gpodder.gtkui.interface.common import BuilderWidget class gPodderConfigEditor(BuilderWidget): def new(self): name_column = gtk.TreeViewColumn(_('Setting')) name_renderer = gtk.CellRendererText() name_column.pack_start(name_renderer) name_column.add_attribute(name_renderer, 'text', 0) name_column.add_attribute(name_renderer, 'style', 5) self.configeditor.append_column(name_column) value_column = gtk.TreeViewColumn(_('Set to')) value_check_renderer = gtk.CellRendererToggle() value_column.pack_start(value_check_renderer, expand=False) value_column.add_attribute(value_check_renderer, 'active', 7) value_column.add_attribute(value_check_renderer, 'visible', 6) value_column.add_attribute(value_check_renderer, 'activatable', 6) value_check_renderer.connect('toggled', self.value_toggled) value_renderer = gtk.CellRendererText() value_column.pack_start(value_renderer) value_column.add_attribute(value_renderer, 'text', 2) value_column.add_attribute(value_renderer, 'visible', 4) value_column.add_attribute(value_renderer, 'editable', 4) value_column.add_attribute(value_renderer, 'style', 5) value_renderer.connect('edited', self.value_edited) self.configeditor.append_column(value_column) self.model = ConfigModel(self._config) self.filter = self.model.filter_new() self.filter.set_visible_func(self.visible_func) self.configeditor.set_model(self.filter) self.configeditor.set_rules_hint(True) def visible_func(self, model, iter, user_data=None): text = self.entryFilter.get_text().lower() if text == '': return True else: # either the variable name or its value return (text in model.get_value(iter, 0).lower() or text in model.get_value(iter, 2).lower()) def value_edited(self, renderer, path, new_text): model = self.configeditor.get_model() iter = model.get_iter(path) name = model.get_value(iter, 0) type_cute = model.get_value(iter, 1) if not self._config.update_field(name, new_text): message = _('Cannot set %(field)s to %(value)s. Needed data type: %(datatype)s') d = {'field': cgi.escape(name), 'value': cgi.escape(new_text), 'datatype': cgi.escape(type_cute)} self.notification(message % d, _('Error setting option')) def value_toggled(self, renderer, path): model = self.configeditor.get_model() iter = model.get_iter(path) field_name = model.get_value(iter, 0) field_type = model.get_value(iter, 3) # Flip the boolean config flag if field_type == bool: self._config.toggle_flag(field_name) def on_entryFilter_changed(self, widget): self.filter.refilter() def on_btnShowAll_clicked(self, widget): self.entryFilter.set_text('') self.entryFilter.grab_focus() def on_btnClose_clicked(self, widget): self.gPodderConfigEditor.destroy() def on_gPodderConfigEditor_destroy(self, widget): self.model.stop_observing() gpodder-3.9.0/src/gpodder/gtkui/desktopfile.py0000644000016000001710000001477012654461624022525 0ustar jenkinsjenkins00000000000000# -*- coding: utf-8 -*- # # gPodder - A media aggregator and podcast client # Copyright (c) 2005-2016 Thomas Perl and the gPodder Team # # gPodder is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 3 of the License, or # (at your option) any later version. # # gPodder is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . # # # libplayers.py -- get list of potential playback apps # thomas perl 20060329 # # import glob import re import os import os.path import threading from ConfigParser import RawConfigParser import gobject import gtk import gtk.gdk import gpodder _ = gpodder.gettext import logging logger = logging.getLogger(__name__) # where are the .desktop files located? userappsdirs = [ '/usr/share/applications/', '/usr/local/share/applications/', '/usr/share/applications/kde/' ] # the name of the section in the .desktop files sect = 'Desktop Entry' class PlayerListModel(gtk.ListStore): C_ICON, C_NAME, C_COMMAND, C_CUSTOM = range(4) def __init__(self): gtk.ListStore.__init__(self, gtk.gdk.Pixbuf, str, str, bool) def insert_app(self, pixbuf, name, command): self.append((pixbuf, name, command, False)) def get_command(self, index): return self[index][self.C_COMMAND] def get_index(self, value): for index, row in enumerate(self): if value == row[self.C_COMMAND]: return index last_row = self[-1] name = _('Command: %s') % value if last_row[self.C_CUSTOM]: last_row[self.C_COMMAND] = value last_row[self.C_NAME] = name else: self.append((None, name, value, True)) return len(self)-1 @classmethod def is_separator(cls, model, iter): return model.get_value(iter, cls.C_COMMAND) == '' class UserApplication(object): def __init__(self, name, cmd, mime, icon): self.name = name self.cmd = cmd self.icon = icon self.mime = mime def get_icon(self): if self.icon is not None: # Load it from an absolute filename if os.path.exists(self.icon): try: return gtk.gdk.pixbuf_new_from_file_at_size(self.icon, 24, 24) except gobject.GError, ge: pass # Load it from the current icon theme (icon_name, extension) = os.path.splitext(os.path.basename(self.icon)) theme = gtk.IconTheme() if theme.has_icon(icon_name): return theme.load_icon(icon_name, 24, 0) def is_mime(self, mimetype): return self.mime.find(mimetype+'/') != -1 WIN32_APP_REG_KEYS = [ ('Winamp', ('audio',), r'HKEY_CLASSES_ROOT\Winamp.File\shell\Play\command'), ('foobar2000', ('audio',), r'HKEY_CLASSES_ROOT\Applications\foobar2000.exe\shell\open\command'), ('Windows Media Player 11', ('audio', 'video'), r'HKEY_CLASSES_ROOT\WMP11.AssocFile.MP3\shell\open\command'), ('QuickTime Player', ('audio', 'video'), r'HKEY_CLASSES_ROOT\QuickTime.mp3\shell\open\command'), ('VLC', ('audio', 'video'), r'HKEY_CLASSES_ROOT\VLC.mp3\shell\open\command'), ] def win32_read_registry_key(path): import _winreg rootmap = { 'HKEY_CLASSES_ROOT': _winreg.HKEY_CLASSES_ROOT, } parts = path.split('\\') root = parts.pop(0) key = _winreg.OpenKey(rootmap[root], parts.pop(0)) while parts: key = _winreg.OpenKey(key, parts.pop(0)) value, type_ = _winreg.QueryValueEx(key, '') if type_ == _winreg.REG_EXPAND_SZ: cmdline = re.sub(r'%([^%]+)%', lambda m: os.environ[m.group(1)], value) elif type_ == _winreg.REG_SZ: cmdline = value else: raise ValueError('Not a string: ' + path) return cmdline.replace('%1', '%f').replace('%L', '%f') class UserAppsReader(object): def __init__(self, mimetypes): self.apps = [] self.mimetypes = mimetypes self.__has_read = False self.__finished = threading.Event() self.__has_sep = False self.apps.append(UserApplication(_('Default application'), 'default', ';'.join((mime+'/*' for mime in self.mimetypes)), gtk.STOCK_OPEN)) def add_separator(self): self.apps.append(UserApplication('', '', ';'.join((mime+'/*' for mime in self.mimetypes)), '')) self.__has_sep = True def read( self): if self.__has_read: return self.__has_read = True if gpodder.ui.win32: import _winreg for caption, types, hkey in WIN32_APP_REG_KEYS: try: cmdline = win32_read_registry_key(hkey) self.apps.append(UserApplication(caption, cmdline, ';'.join(typ + '/*' for typ in types), None)) except Exception as e: logger.warn('Parse HKEY error: %s (%s)', hkey, e) for dir in userappsdirs: if os.path.exists( dir): for file in glob.glob(os.path.join(dir, '*.desktop')): self.parse_and_append( file) self.__finished.set() def parse_and_append( self, filename): try: parser = RawConfigParser() parser.read([filename]) if not parser.has_section(sect): return # Find out if we need it by comparing mime types app_mime = parser.get(sect, 'MimeType') for needed_type in self.mimetypes: if app_mime.find(needed_type+'/') != -1: app_name = parser.get(sect, 'Name') app_cmd = parser.get(sect, 'Exec') app_icon = parser.get(sect, 'Icon') if not self.__has_sep: self.add_separator() self.apps.append(UserApplication(app_name, app_cmd, app_mime, app_icon)) return except: return def get_model(self, mimetype): self.__finished.wait() model = PlayerListModel() for app in self.apps: if app.is_mime(mimetype): model.insert_app(app.get_icon(), app.name, app.cmd) return model gpodder-3.9.0/src/gpodder/gtkui/__init__.py0000644000016000001710000000137412654461624021747 0ustar jenkinsjenkins00000000000000# -*- coding: utf-8 -*- # # gPodder - A media aggregator and podcast client # Copyright (c) 2005-2016 Thomas Perl and the gPodder Team # # gPodder is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 3 of the License, or # (at your option) any later version. # # gPodder is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . # gpodder-3.9.0/src/gpodder/gtkui/widgets.py0000644000016000001710000001050412654461624021651 0ustar jenkinsjenkins00000000000000#!/usr/bin/python # -*- coding: utf-8 -*- # # gPodder - A media aggregator and podcast client # Copyright (c) 2005-2016 Thomas Perl and the gPodder Team # # gPodder is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 3 of the License, or # (at your option) any later version. # # gPodder is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . # # # widgets.py -- Additional widgets for gPodder # Thomas Perl 2009-03-31 # import gtk import gobject import pango import cgi class SimpleMessageArea(gtk.HBox): """A simple, yellow message area. Inspired by gedit. Original C source code: http://svn.gnome.org/viewvc/gedit/trunk/gedit/gedit-message-area.c """ def __init__(self, message, buttons=()): gtk.HBox.__init__(self, spacing=6) self.set_border_width(6) self.__in_style_set = False self.connect('style-set', self.__style_set) self.connect('expose-event', self.__expose_event) self.__label = gtk.Label() self.__label.set_alignment(0.0, 0.5) self.__label.set_line_wrap(False) self.__label.set_ellipsize(pango.ELLIPSIZE_END) self.__label.set_markup('%s' % cgi.escape(message)) self.pack_start(self.__label, expand=True, fill=True) hbox = gtk.HBox() for button in buttons: hbox.pack_start(button, expand=True, fill=False) self.pack_start(hbox, expand=False, fill=False) def set_markup(self, markup, line_wrap=True, min_width=3, max_width=100): # The longest line should determine the size of the label width_chars = max(len(line) for line in markup.splitlines()) # Enforce upper and lower limits for the width width_chars = max(min_width, min(max_width, width_chars)) self.__label.set_width_chars(width_chars) self.__label.set_markup(markup) self.__label.set_line_wrap(line_wrap) def __style_set(self, widget, previous_style): if self.__in_style_set: return w = gtk.Window(gtk.WINDOW_POPUP) w.set_name('gtk-tooltip') w.ensure_style() style = w.get_style() self.__in_style_set = True self.set_style(style) self.__label.set_style(style) self.__in_style_set = False w.destroy() self.queue_draw() def __expose_event(self, widget, event): style = widget.get_style() rect = widget.get_allocation() style.paint_flat_box(widget.window, gtk.STATE_NORMAL, gtk.SHADOW_OUT, None, widget, "tooltip", rect.x, rect.y, rect.width, rect.height) return False class SpinningProgressIndicator(gtk.Image): # Progress indicator loading inspired by glchess from gnome-games-clutter def __init__(self, size=32): gtk.Image.__init__(self) self._frames = [] self._frame_id = 0 # Load the progress indicator icon_theme = gtk.icon_theme_get_default() try: icon = icon_theme.load_icon('process-working', size, 0) width, height = icon.get_width(), icon.get_height() if width < size or height < size: size = min(width, height) for row in range(height/size): for column in range(width/size): frame = icon.subpixbuf(column*size, row*size, size, size) self._frames.append(frame) # Remove the first frame (the "idle" icon) if self._frames: self._frames.pop(0) self.step_animation() except: # FIXME: This is not very beautiful :/ self.set_from_stock(gtk.STOCK_EXECUTE, gtk.ICON_SIZE_BUTTON) def step_animation(self): if len(self._frames) > 1: self._frame_id += 1 if self._frame_id >= len(self._frames): self._frame_id = 0 self.set_from_pixbuf(self._frames[self._frame_id]) gpodder-3.9.0/src/gpodder/gtkui/services.py0000644000016000001710000001104312654461624022025 0ustar jenkinsjenkins00000000000000# -*- coding: utf-8 -*- # # gPodder - A media aggregator and podcast client # Copyright (c) 2005-2016 Thomas Perl and the gPodder Team # # gPodder is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 3 of the License, or # (at your option) any later version. # # gPodder is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . # # # gpodder.gtkui.services - UI parts for the services module (2009-08-24) # import gpodder _ = gpodder.gettext from gpodder.services import ObservableService import logging logger = logging.getLogger(__name__) from gpodder import util from gpodder import coverart import gtk class CoverDownloader(ObservableService): """ This class manages downloading cover art and notification of other parts of the system. Downloading cover art can happen either synchronously via get_cover() or in asynchronous mode via request_cover(). When in async mode, the cover downloader will send the cover via the 'cover-available' message (via the ObservableService). """ def __init__(self): self.downloader = coverart.CoverDownloader() signal_names = ['cover-available', 'cover-removed'] ObservableService.__init__(self, signal_names) def request_cover(self, channel, custom_url=None, avoid_downloading=False): """ Sends an asynchronous request to download a cover for the specific channel. After the cover has been downloaded, the "cover-available" signal will be sent with the channel url and new cover as pixbuf. If you specify a custom_url, the cover will be downloaded from the specified URL and not taken from the channel metadata. The optional parameter "avoid_downloading", when true, will make sure we return only already-downloaded covers and return None when we have no cover on the local disk. """ logger.debug('cover download request for %s', channel.url) util.run_in_background(lambda: self.__get_cover(channel, custom_url, True, avoid_downloading)) def get_cover(self, channel, custom_url=None, avoid_downloading=False): """ Sends a synchronous request to download a cover for the specified channel. The cover will be returned to the caller. The custom_url has the same semantics as in request_cover(). The optional parameter "avoid_downloading", when true, will make sure we return only already-downloaded covers and return None when we have no cover on the local disk. """ (url, pixbuf) = self.__get_cover(channel, custom_url, False, avoid_downloading) return pixbuf def replace_cover(self, channel, custom_url=None): """ This is a convenience function that deletes the current cover file and requests a new cover from the URL specified. """ self.request_cover(channel, custom_url) def __get_cover(self, channel, url, async=False, avoid_downloading=False): def get_filename(): return self.downloader.get_cover(channel.cover_file, url or channel.cover_url, channel.url, channel.title, channel.auth_username, channel.auth_password, not avoid_downloading) if url is not None: filename = get_filename() if filename.startswith(channel.cover_file): logger.info('Replacing cover: %s', filename) util.delete_file(filename) filename = get_filename() pixbuf = None try: pixbuf = gtk.gdk.pixbuf_new_from_file(filename) except Exception, e: logger.warn('Cannot load cover art', exc_info=True) if filename.startswith(channel.cover_file): logger.info('Deleting broken cover: %s', filename) util.delete_file(filename) filename = get_filename() pixbuf = gtk.gdk.pixbuf_new_from_file(filename) if async: self.notify('cover-available', channel, pixbuf) else: return (channel.url, pixbuf) gpodder-3.9.0/src/gpodder/gtkui/config.py0000644000016000001710000001365512654461624021462 0ustar jenkinsjenkins00000000000000# -*- coding: utf-8 -*- # # gPodder - A media aggregator and podcast client # Copyright (c) 2005-2016 Thomas Perl and the gPodder Team # # gPodder is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 3 of the License, or # (at your option) any later version. # # gPodder is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . # # # gpodder.gtkui.config -- Config object with GTK+ support (2009-08-24) # import gtk import pango import gpodder from gpodder import util from gpodder import config _ = gpodder.gettext class ConfigModel(gtk.ListStore): C_NAME, C_TYPE_TEXT, C_VALUE_TEXT, C_TYPE, C_EDITABLE, C_FONT_STYLE, \ C_IS_BOOLEAN, C_BOOLEAN_VALUE = range(8) def __init__(self, config): gtk.ListStore.__init__(self, str, str, str, object, \ bool, int, bool, bool) self._config = config self._fill_model() self._config.add_observer(self._on_update) def _type_as_string(self, type): if type == int: return _('Integer') elif type == float: return _('Float') elif type == bool: return _('Boolean') else: return _('String') def _fill_model(self): self.clear() for key in sorted(self._config.all_keys()): # Ignore Gtk window state data (position, size, ...) if key.startswith('ui.gtk.state.'): continue value = self._config._lookup(key) fieldtype = type(value) style = pango.STYLE_NORMAL #if value == default: # style = pango.STYLE_NORMAL #else: # style = pango.STYLE_ITALIC self.append((key, self._type_as_string(fieldtype), config.config_value_to_string(value), fieldtype, fieldtype is not bool, style, fieldtype is bool, bool(value))) def _on_update(self, name, old_value, new_value): for row in self: if row[self.C_NAME] == name: style = pango.STYLE_NORMAL #if new_value == self._config.Settings[name]: # style = pango.STYLE_NORMAL #else: # style = pango.STYLE_ITALIC new_value_text = config.config_value_to_string(new_value) self.set(row.iter, \ self.C_VALUE_TEXT, new_value_text, self.C_BOOLEAN_VALUE, bool(new_value), self.C_FONT_STYLE, style) break def stop_observing(self): self._config.remove_observer(self._on_update) class UIConfig(config.Config): def __init__(self, filename='gpodder.conf'): config.Config.__init__(self, filename) self.__ignore_window_events = False def connect_gtk_editable(self, name, editable): editable.delete_text(0, -1) editable.insert_text(str(getattr(self, name))) def _editable_changed(editable): setattr(self, name, editable.get_chars(0, -1)) editable.connect('changed', _editable_changed) def connect_gtk_spinbutton(self, name, spinbutton): spinbutton.set_value(getattr(self, name)) def _spinbutton_changed(spinbutton): setattr(self, name, spinbutton.get_value()) spinbutton.connect('value-changed', _spinbutton_changed) def connect_gtk_paned(self, name, paned): paned.set_position(getattr(self, name)) paned_child = paned.get_child1() def _child_size_allocate(x, y): setattr(self, name, paned.get_position()) paned_child.connect('size-allocate', _child_size_allocate) def connect_gtk_togglebutton(self, name, togglebutton): togglebutton.set_active(getattr(self, name)) def _togglebutton_toggled(togglebutton): setattr(self, name, togglebutton.get_active()) togglebutton.connect('toggled', _togglebutton_toggled) def connect_gtk_window(self, window, config_prefix, show_window=False): cfg = getattr(self.ui.gtk.state, config_prefix) if gpodder.ui.win32: window.set_gravity(gtk.gdk.GRAVITY_STATIC) window.resize(cfg.width, cfg.height) if cfg.x == -1 or cfg.y == -1: window.set_position(gtk.WIN_POS_CENTER_ON_PARENT) else: window.move(cfg.x, cfg.y) # Ignore events while we're connecting to the window self.__ignore_window_events = True def _receive_configure_event(widget, event): x_pos, y_pos = event.x, event.y width_size, height_size = event.width, event.height maximized = bool(event.window.get_state() & gtk.gdk.WINDOW_STATE_MAXIMIZED) if not self.__ignore_window_events and not maximized: cfg.x = x_pos cfg.y = y_pos cfg.width = width_size cfg.height = height_size window.connect('configure-event', _receive_configure_event) def _receive_window_state(widget, event): new_value = bool(event.new_window_state & gtk.gdk.WINDOW_STATE_MAXIMIZED) cfg.maximized = new_value window.connect('window-state-event', _receive_window_state) # After the window has been set up, we enable events again def _enable_window_events(): self.__ignore_window_events = False util.idle_add(_enable_window_events) if show_window: window.show() if cfg.maximized: window.maximize() gpodder-3.9.0/src/gpodder/gtkui/shownotes.py0000644000016000001710000001516112654461624022240 0ustar jenkinsjenkins00000000000000# -*- coding: utf-8 -*- # # gPodder - A media aggregator and podcast client # Copyright (c) 2005-2016 Thomas Perl and the gPodder Team # # gPodder is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 3 of the License, or # (at your option) any later version. # # gPodder is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . # import gtk import gtk.gdk import gobject import pango import os import cgi import gpodder _ = gpodder.gettext import logging logger = logging.getLogger(__name__) from gpodder import util from gpodder.gtkui.draw import draw_text_box_centered try: import webkit webview_signals = gobject.signal_list_names(webkit.WebView) if 'navigation-policy-decision-requested' in webview_signals: have_webkit = True else: logger.warn('Your WebKit is too old (gPodder bug 1001).') have_webkit = False except ImportError: have_webkit = False class gPodderShownotes: def __init__(self, shownotes_pane): self.shownotes_pane = shownotes_pane self.scrolled_window = gtk.ScrolledWindow() self.scrolled_window.set_shadow_type(gtk.SHADOW_IN) self.scrolled_window.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC) self.scrolled_window.add(self.init()) self.scrolled_window.show_all() self.da_message = gtk.DrawingArea() self.da_message.connect('expose-event', \ self.on_shownotes_message_expose_event) self.shownotes_pane.add(self.da_message) self.shownotes_pane.add(self.scrolled_window) self.set_complain_about_selection(True) self.hide_pane() # Either show the shownotes *or* a message, 'Please select an episode' def set_complain_about_selection(self, message=True): if message: self.scrolled_window.hide() self.da_message.show() else: self.da_message.hide() self.scrolled_window.show() def set_episodes(self, selected_episodes): if self.pane_is_visible: if len(selected_episodes) == 1: episode = selected_episodes[0] heading = episode.title subheading = _('from %s') % (episode.channel.title) self.update(heading, subheading, episode) self.set_complain_about_selection(False) else: self.set_complain_about_selection(True) def show_pane(self, selected_episodes): self.pane_is_visible = True self.set_episodes(selected_episodes) self.shownotes_pane.show() def hide_pane(self): self.pane_is_visible = False self.shownotes_pane.hide() def toggle_pane_visibility(self, selected_episodes): if self.pane_is_visible: self.hide_pane() else: self.show_pane(selected_episodes) def on_shownotes_message_expose_event(self, drawingarea, event): ctx = event.window.cairo_create() ctx.rectangle(event.area.x, event.area.y, \ event.area.width, event.area.height) ctx.clip() # paint the background white colormap = event.window.get_colormap() gc = event.window.new_gc(foreground=colormap.alloc_color('white')) event.window.draw_rectangle(gc, True, event.area.x, event.area.y, \ event.area.width, event.area.height) x, y, width, height, depth = event.window.get_geometry() text = _('Please select an episode') draw_text_box_centered(ctx, drawingarea, width, height, text, None, None) return False class gPodderShownotesText(gPodderShownotes): def init(self): self.text_view = gtk.TextView() self.text_view.set_wrap_mode(gtk.WRAP_WORD_CHAR) self.text_view.set_border_width(10) self.text_view.set_editable(False) self.text_buffer = gtk.TextBuffer() self.text_buffer.create_tag('heading', scale=pango.SCALE_LARGE, weight=pango.WEIGHT_BOLD) self.text_buffer.create_tag('subheading', scale=pango.SCALE_SMALL) self.text_view.set_buffer(self.text_buffer) self.text_view.modify_bg(gtk.STATE_NORMAL, gtk.gdk.color_parse('#ffffff')) return self.text_view def update(self, heading, subheading, episode): self.text_buffer.set_text('') self.text_buffer.insert_with_tags_by_name(self.text_buffer.get_end_iter(), heading, 'heading') self.text_buffer.insert_at_cursor('\n') self.text_buffer.insert_with_tags_by_name(self.text_buffer.get_end_iter(), subheading, 'subheading') self.text_buffer.insert_at_cursor('\n\n') self.text_buffer.insert(self.text_buffer.get_end_iter(), util.remove_html_tags(episode.description)) self.text_buffer.place_cursor(self.text_buffer.get_start_iter()) class gPodderShownotesHTML(gPodderShownotes): SHOWNOTES_HTML_TEMPLATE = """ %s
%s (%s)

%s

""" def init(self): self.html_view = webkit.WebView() self.html_view.connect('navigation-policy-decision-requested', self._navigation_policy_decision) self.html_view.load_html_string('', '') return self.html_view def _navigation_policy_decision(self, wv, fr, req, action, decision): REASON_LINK_CLICKED, REASON_OTHER = 0, 5 if action.get_reason() == REASON_LINK_CLICKED: util.open_website(req.get_uri()) decision.ignore() elif action.get_reason() == REASON_OTHER: decision.use() else: decision.ignore() def update(self, heading, subheading, episode): html = self.SHOWNOTES_HTML_TEMPLATE % ( cgi.escape(heading), cgi.escape(subheading), episode.get_play_info_string(), episode.description_html, ) url = os.path.dirname(episode.channel.url) self.html_view.load_html_string(html, url) gpodder-3.9.0/src/gpodder/my.py0000644000016000001710000005665612654461624017527 0ustar jenkinsjenkins00000000000000#!/usr/bin/python # -*- coding: utf-8 -*- # # gPodder - A media aggregator and podcast client # Copyright (c) 2005-2016 Thomas Perl and the gPodder Team # # gPodder is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 3 of the License, or # (at your option) any later version. # # gPodder is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . # # # my.py -- mygpo Client Abstraction for gPodder # Thomas Perl ; 2010-01-19 # import gpodder _ = gpodder.gettext import atexit import datetime import calendar import os import sys import time import logging logger = logging.getLogger(__name__) from gpodder import util from gpodder import minidb # Append gPodder's user agent to mygpoclient's user agent import mygpoclient mygpoclient.user_agent += ' ' + gpodder.user_agent # 2013-02-08: We should update this to 1.7 once we use the new features MYGPOCLIENT_REQUIRED = '1.4' if not hasattr(mygpoclient, 'require_version') or \ not mygpoclient.require_version(MYGPOCLIENT_REQUIRED): print >>sys.stderr, """ Please upgrade your mygpoclient library. See http://thp.io/2010/mygpoclient/ Required version: %s Installed version: %s """ % (MYGPOCLIENT_REQUIRED, mygpoclient.__version__) sys.exit(1) try: from mygpoclient.simple import MissingCredentials except ImportError: # if MissingCredentials does not yet exist in the installed version of # mygpoclient, we use an object that can never be raised/caught MissingCredentials = object() from mygpoclient import api from mygpoclient import public from mygpoclient import util as mygpoutil EPISODE_ACTIONS_BATCH_SIZE=100 # Database model classes class SinceValue(object): __slots__ = {'host': str, 'device_id': str, 'category': int, 'since': int} # Possible values for the "category" field PODCASTS, EPISODES = range(2) def __init__(self, host, device_id, category, since=0): self.host = host self.device_id = device_id self.category = category self.since = since class SubscribeAction(object): __slots__ = {'action_type': int, 'url': str} # Possible values for the "action_type" field ADD, REMOVE = range(2) def __init__(self, action_type, url): self.action_type = action_type self.url = url @property def is_add(self): return self.action_type == self.ADD @property def is_remove(self): return self.action_type == self.REMOVE @classmethod def add(cls, url): return cls(cls.ADD, url) @classmethod def remove(cls, url): return cls(cls.REMOVE, url) @classmethod def undo(cls, action): if action.is_add: return cls(cls.REMOVE, action.url) elif action.is_remove: return cls(cls.ADD, action.url) raise ValueError('Cannot undo action: %r' % action) # New entity name for "received" actions class ReceivedSubscribeAction(SubscribeAction): pass class UpdateDeviceAction(object): __slots__ = {'device_id': str, 'caption': str, 'device_type': str} def __init__(self, device_id, caption, device_type): self.device_id = device_id self.caption = caption self.device_type = device_type class EpisodeAction(object): __slots__ = {'podcast_url': str, 'episode_url': str, 'device_id': str, 'action': str, 'timestamp': int, 'started': int, 'position': int, 'total': int} def __init__(self, podcast_url, episode_url, device_id, \ action, timestamp, started, position, total): self.podcast_url = podcast_url self.episode_url = episode_url self.device_id = device_id self.action = action self.timestamp = timestamp self.started = started self.position = position self.total = total # New entity name for "received" actions class ReceivedEpisodeAction(EpisodeAction): pass class RewrittenUrl(object): __slots__ = {'old_url': str, 'new_url': str} def __init__(self, old_url, new_url): self.old_url = old_url self.new_url = new_url # End Database model classes # Helper class for displaying changes in the UI class Change(object): def __init__(self, action, podcast=None): self.action = action self.podcast = podcast @property def description(self): if self.action.is_add: return _('Add %s') % self.action.url else: return _('Remove %s') % self.podcast.title class MygPoClient(object): STORE_FILE = 'gpodder.net' FLUSH_TIMEOUT = 60 FLUSH_RETRIES = 3 def __init__(self, config): self._store = minidb.Store(os.path.join(gpodder.home, self.STORE_FILE)) self._config = config self._client = None # Initialize the _client attribute and register with config self.on_config_changed() assert self._client is not None self._config.add_observer(self.on_config_changed) self._worker_thread = None atexit.register(self._at_exit) def create_device(self): """Uploads the device changes to the server This should be called when device settings change or when the mygpo client functionality is enabled. """ # Remove all previous device update actions self._store.remove(self._store.load(UpdateDeviceAction)) # Insert our new update action action = UpdateDeviceAction(self.device_id, \ self._config.mygpo.device.caption, \ self._config.mygpo.device.type) self._store.save(action) def get_rewritten_urls(self): """Returns a list of rewritten URLs for uploads This should be called regularly. Every object returned should be merged into the database, and the old_url should be updated to new_url in every podcdast. """ rewritten_urls = self._store.load(RewrittenUrl) self._store.remove(rewritten_urls) return rewritten_urls def process_episode_actions(self, find_episode, on_updated=None): """Process received episode actions The parameter "find_episode" should be a function accepting two parameters (podcast_url and episode_url). It will be used to get an episode object that needs to be updated. It should return None if the requested episode does not exist. The optional callback "on_updated" should accept a single parameter (the episode object) and will be called whenever the episode data is changed in some way. """ logger.debug('Processing received episode actions...') for action in self._store.load(ReceivedEpisodeAction): if action.action not in ('play', 'delete'): # Ignore all other action types for now continue episode = find_episode(action.podcast_url, action.episode_url) if episode is None: # The episode does not exist on this client continue if action.action == 'play': logger.debug('Play action for %s', episode.url) episode.mark(is_played=True) if (action.timestamp > episode.current_position_updated and action.position is not None): logger.debug('Updating position for %s', episode.url) episode.current_position = action.position episode.current_position_updated = action.timestamp if action.total: logger.debug('Updating total time for %s', episode.url) episode.total_time = action.total episode.save() if on_updated is not None: on_updated(episode) elif action.action == 'delete': if not episode.was_downloaded(and_exists=True): # Set the episode to a "deleted" state logger.debug('Marking as deleted: %s', episode.url) episode.delete_from_disk() episode.save() if on_updated is not None: on_updated(episode) # Remove all received episode actions self._store.delete(ReceivedEpisodeAction) self._store.commit() logger.debug('Received episode actions processed.') def get_received_actions(self): """Returns a list of ReceivedSubscribeAction objects The list might be empty. All these actions have to be processed. The user should confirm which of these actions should be taken, the reest should be rejected. Use confirm_received_actions and reject_received_actions to return and finalize the actions received by this method in order to not receive duplicate actions. """ return self._store.load(ReceivedSubscribeAction) def confirm_received_actions(self, actions): """Confirm that a list of actions has been processed The UI should call this with a list of actions that have been accepted by the user and processed by the podcast backend. """ # Simply remove the received actions from the queue self._store.remove(actions) def reject_received_actions(self, actions): """Reject (undo) a list of ReceivedSubscribeAction objects The UI should call this with a list of actions that have been rejected by the user. A reversed set of actions will be uploaded to the server so that the state on the server matches the state on the client. """ # Create "undo" actions for received subscriptions self._store.save(SubscribeAction.undo(a) for a in actions) self.flush() # After we've handled the reverse-actions, clean up self._store.remove(actions) @property def host(self): return self._config.mygpo.server @property def device_id(self): return self._config.mygpo.device.uid def can_access_webservice(self): return self._config.mygpo.enabled and \ self._config.mygpo.username and \ self._config.mygpo.device.uid def set_subscriptions(self, urls): if self.can_access_webservice(): logger.debug('Uploading (overwriting) subscriptions...') self._client.put_subscriptions(self.device_id, urls) logger.debug('Subscription upload done.') else: raise Exception('Webservice access not enabled') def _convert_played_episode(self, episode, start, end, total): return EpisodeAction(episode.channel.url, \ episode.url, self.device_id, 'play', \ int(time.time()), start, end, total) def _convert_episode(self, episode, action): return EpisodeAction(episode.channel.url, \ episode.url, self.device_id, action, \ int(time.time()), None, None, None) def on_delete(self, episodes): logger.debug('Storing %d episode delete actions', len(episodes)) self._store.save(self._convert_episode(e, 'delete') for e in episodes) def on_download(self, episodes): logger.debug('Storing %d episode download actions', len(episodes)) self._store.save(self._convert_episode(e, 'download') for e in episodes) def on_playback_full(self, episode, start, end, total): logger.debug('Storing full episode playback action') self._store.save(self._convert_played_episode(episode, start, end, total)) def on_playback(self, episodes): logger.debug('Storing %d episode playback actions', len(episodes)) self._store.save(self._convert_episode(e, 'play') for e in episodes) def on_subscribe(self, urls): # Cancel previously-inserted "remove" actions self._store.remove(SubscribeAction.remove(url) for url in urls) # Insert new "add" actions self._store.save(SubscribeAction.add(url) for url in urls) self.flush() def on_unsubscribe(self, urls): # Cancel previously-inserted "add" actions self._store.remove(SubscribeAction.add(url) for url in urls) # Insert new "remove" actions self._store.save(SubscribeAction.remove(url) for url in urls) self.flush() def _at_exit(self): self._worker_proc(forced=True) self._store.commit() self._store.close() def _worker_proc(self, forced=False): if not forced: # Store the current contents of the queue database self._store.commit() logger.debug('Worker thread waiting for timeout') time.sleep(self.FLUSH_TIMEOUT) # Only work when enabled, UID set and allowed to work if self.can_access_webservice() and \ (self._worker_thread is not None or forced): self._worker_thread = None logger.debug('Worker thread starting to work...') for retry in range(self.FLUSH_RETRIES): must_retry = False if retry: logger.debug('Retrying flush queue...') # Update the device first, so it can be created if new for action in self._store.load(UpdateDeviceAction): if self.update_device(action): self._store.remove(action) else: must_retry = True # Upload podcast subscription actions actions = self._store.load(SubscribeAction) if self.synchronize_subscriptions(actions): self._store.remove(actions) else: must_retry = True # Upload episode actions actions = self._store.load(EpisodeAction) if self.synchronize_episodes(actions): self._store.remove(actions) else: must_retry = True if not must_retry or not self.can_access_webservice(): # No more pending actions, or no longer enabled. # Ready to quit. break logger.debug('Worker thread finished.') else: logger.info('Worker thread may not execute (disabled).') # Store the current contents of the queue database self._store.commit() def flush(self, now=False): if not self.can_access_webservice(): logger.warn('Flush requested, but sync disabled.') return if self._worker_thread is None or now: if now: logger.debug('Flushing NOW.') else: logger.debug('Flush requested.') self._worker_thread = util.run_in_background(lambda: self._worker_proc(now), True) else: logger.debug('Flush requested, already waiting.') def on_config_changed(self, name=None, old_value=None, new_value=None): if name in ('mygpo.username', 'mygpo.password', 'mygpo.server') \ or self._client is None: self._client = api.MygPodderClient(self._config.mygpo.username, self._config.mygpo.password, self._config.mygpo.server) logger.info('Reloading settings.') elif name.startswith('mygpo.device.'): # Update or create the device self.create_device() def synchronize_episodes(self, actions): logger.debug('Starting episode status sync.') def convert_to_api(action): dt = datetime.datetime.utcfromtimestamp(action.timestamp) action_ts = mygpoutil.datetime_to_iso8601(dt) return api.EpisodeAction(action.podcast_url, \ action.episode_url, action.action, \ action.device_id, action_ts, \ action.started, action.position, action.total) def convert_from_api(action): dt = mygpoutil.iso8601_to_datetime(action.timestamp) action_ts = calendar.timegm(dt.timetuple()) return ReceivedEpisodeAction(action.podcast, \ action.episode, action.device, \ action.action, action_ts, \ action.started, action.position, action.total) try: # Load the "since" value from the database since_o = self._store.get(SinceValue, host=self.host, \ device_id=self.device_id, \ category=SinceValue.EPISODES) # Use a default since object for the first-time case if since_o is None: since_o = SinceValue(self.host, self.device_id, SinceValue.EPISODES) # Step 1: Download Episode actions try: changes = self._client.download_episode_actions(since_o.since) received_actions = [convert_from_api(a) for a in changes.actions] logger.debug('Received %d episode actions', len(received_actions)) self._store.save(received_actions) # Save the "since" value for later use self._store.update(since_o, since=changes.since) except (MissingCredentials, mygpoclient.http.Unauthorized): # handle outside raise except Exception, e: logger.warn('Exception while polling for episodes.', exc_info=True) # Step 2: Upload Episode actions # Uploads are done in batches; uploading can resume if only parts # be uploaded; avoids empty uploads as well for lower in range(0, len(actions), EPISODE_ACTIONS_BATCH_SIZE): batch = actions[lower:lower+EPISODE_ACTIONS_BATCH_SIZE] # Convert actions to the mygpoclient format for uploading episode_actions = [convert_to_api(a) for a in batch] # Upload the episode actions self._client.upload_episode_actions(episode_actions) # Actions have been uploaded to the server - remove them self._store.remove(batch) logger.debug('Episode actions have been uploaded to the server.') return True except (MissingCredentials, mygpoclient.http.Unauthorized): logger.warn('Invalid credentials. Disabling gpodder.net.') self._config.mygpo.enabled = False return False except Exception, e: logger.error('Cannot upload episode actions: %s', str(e), exc_info=True) return False def synchronize_subscriptions(self, actions): logger.debug('Starting subscription sync.') try: # Load the "since" value from the database since_o = self._store.get(SinceValue, host=self.host, \ device_id=self.device_id, \ category=SinceValue.PODCASTS) # Use a default since object for the first-time case if since_o is None: since_o = SinceValue(self.host, self.device_id, SinceValue.PODCASTS) # Step 1: Pull updates from the server and notify the frontend result = self._client.pull_subscriptions(self.device_id, since_o.since) # Update the "since" value in the database self._store.update(since_o, since=result.since) # Store received actions for later retrieval (and in case we # have outdated actions in the database, simply remove them) for url in result.add: logger.debug('Received add action: %s', url) self._store.remove(ReceivedSubscribeAction.remove(url)) self._store.remove(ReceivedSubscribeAction.add(url)) self._store.save(ReceivedSubscribeAction.add(url)) for url in result.remove: logger.debug('Received remove action: %s', url) self._store.remove(ReceivedSubscribeAction.add(url)) self._store.remove(ReceivedSubscribeAction.remove(url)) self._store.save(ReceivedSubscribeAction.remove(url)) # Step 2: Push updates to the server and rewrite URLs (if any) actions = self._store.load(SubscribeAction) add = [a.url for a in actions if a.is_add] remove = [a.url for a in actions if a.is_remove] if add or remove: logger.debug('Uploading: +%d / -%d', len(add), len(remove)) # Only do a push request if something has changed result = self._client.update_subscriptions(self.device_id, add, remove) # Update the "since" value in the database self._store.update(since_o, since=result.since) # Store URL rewrites for later retrieval by GUI for old_url, new_url in result.update_urls: if new_url: logger.debug('Rewritten URL: %s', new_url) self._store.save(RewrittenUrl(old_url, new_url)) # Actions have been uploaded to the server - remove them self._store.remove(actions) logger.debug('All actions have been uploaded to the server.') return True except (MissingCredentials, mygpoclient.http.Unauthorized): logger.warn('Invalid credentials. Disabling gpodder.net.') self._config.mygpo.enabled = False return False except Exception, e: logger.error('Cannot upload subscriptions: %s', str(e), exc_info=True) return False def update_device(self, action): try: logger.debug('Uploading device settings...') self._client.update_device_settings(action.device_id, \ action.caption, action.device_type) logger.debug('Device settings uploaded.') return True except (MissingCredentials, mygpoclient.http.Unauthorized): logger.warn('Invalid credentials. Disabling gpodder.net.') self._config.mygpo.enabled = False return False except Exception, e: logger.error('Cannot update device %s: %s', self.device_id, str(e), exc_info=True) return False def get_devices(self): result = [] try: devices = self._client.get_devices() except (MissingCredentials, mygpoclient.http.Unauthorized): logger.warn('Invalid credentials. Disabling gpodder.net.') self._config.mygpo.enabled = False raise for d in devices: result.append((d.device_id, d.caption, d.type)) return result def open_website(self): util.open_website('http://' + self._config.mygpo.server) class Directory(object): def __init__(self): self.client = public.PublicClient() def toplist(self): return [(p.title or p.url, p.url) for p in self.client.get_toplist() if p.url] def search(self, query): return [(p.title or p.url, p.url) for p in self.client.search_podcasts(query) if p.url] gpodder-3.9.0/src/gpodder/coverart.py0000644000016000001710000001013612654461624020706 0ustar jenkinsjenkins00000000000000# -*- coding: utf-8 -*- # # gPodder - A media aggregator and podcast client # Copyright (c) 2005-2016 Thomas Perl and the gPodder Team # # gPodder is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 3 of the License, or # (at your option) any later version. # # gPodder is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . # # # gpodder.coverart - Unified cover art downloading module (2012-03-04) # import gpodder _ = gpodder.gettext import logging logger = logging.getLogger(__name__) from gpodder import util from gpodder import youtube import os class CoverDownloader(object): # File name extension dict, lists supported cover art extensions # Values: functions that check if some data is of that file type SUPPORTED_EXTENSIONS = { '.png': lambda d: d.startswith('\x89PNG\r\n\x1a\n\x00'), '.jpg': lambda d: d.startswith('\xff\xd8'), '.gif': lambda d: d.startswith('GIF89a') or d.startswith('GIF87a'), } EXTENSIONS = SUPPORTED_EXTENSIONS.keys() ALL_EPISODES_ID = ':gpodder:all-episodes:' # Low timeout to avoid unnecessary hangs of GUIs TIMEOUT = 5 def __init__(self): pass def get_cover_all_episodes(self): return self._default_filename('podcast-all.png') def get_cover(self, filename, cover_url, feed_url, title, username=None, password=None, download=False): # Detection of "all episodes" podcast if filename == self.ALL_EPISODES_ID: return self.get_cover_all_episodes() # Return already existing files for extension in self.EXTENSIONS: if os.path.exists(filename + extension): return filename + extension # If allowed to download files, do so here if download: # YouTube-specific cover art image resolver youtube_cover_url = youtube.get_real_cover(feed_url) if youtube_cover_url is not None: cover_url = youtube_cover_url if not cover_url: return self._fallback_filename(title) # We have to add username/password, because password-protected # feeds might keep their cover art also protected (bug 1521) if username is not None and password is not None: cover_url = util.url_add_authentication(cover_url, username, password) try: logger.info('Downloading cover art: %s', cover_url) data = util.urlopen(cover_url, timeout=self.TIMEOUT).read() except Exception, e: logger.warn('Cover art download failed: %s', e) return self._fallback_filename(title) try: extension = None for filetype, check in self.SUPPORTED_EXTENSIONS.items(): if check(data): extension = filetype break if extension is None: msg = 'Unknown file type: %s (%r)' % (cover_url, data[:6]) raise ValueError(msg) # Successfully downloaded the cover art - save it! fp = open(filename + extension, 'wb') fp.write(data) fp.close() return filename + extension except Exception, e: logger.warn('Cannot save cover art', exc_info=True) # Fallback to cover art based on the podcast title return self._fallback_filename(title) def _default_filename(self, basename): return os.path.join(gpodder.images_folder, basename) def _fallback_filename(self, title): return self._default_filename('podcast-%d.png' % (hash(title)%5)) gpodder-3.9.0/src/gpodder/unittests.py0000644000016000001710000000641112654461624021124 0ustar jenkinsjenkins00000000000000# -*- coding: utf-8 -*- # # gPodder - A media aggregator and podcast client # Copyright (c) 2005-2016 Thomas Perl and the gPodder Team # # gPodder is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 3 of the License, or # (at your option) any later version. # # gPodder is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . # # Run Doctests and Unittests for gPodder modules # 2009-02-25 Thomas Perl import doctest import unittest import sys try: # Unused here locally, but we import it to be able to give an early # warning about this missing dependency in order to avoid bogus errors. import minimock except ImportError, e: print >>sys.stderr, """ Error: Unit tests require the "minimock" module (python-minimock). Please install it before running the unit tests. """ sys.exit(2) # Main package and test package (for modules in main package) package = 'gpodder' test_package = '.'.join((package, 'test')) suite = unittest.TestSuite() coverage_modules = [] # Modules (in gpodder) for which doctests exist # ex: Doctests embedded in "gpodder.util", coverage reported for "gpodder.util" doctest_modules = ['util', 'jsonconfig'] for module in doctest_modules: doctest_mod = __import__('.'.join((package, module)), fromlist=[module]) suite.addTest(doctest.DocTestSuite(doctest_mod)) coverage_modules.append(doctest_mod) # Modules (in gpodder) for which unit tests (in gpodder.test) exist # ex: Tests are in "gpodder.test.model", coverage reported for "gpodder.model" test_modules = ['model'] for module in test_modules: test_mod = __import__('.'.join((test_package, module)), fromlist=[module]) coverage_mod = __import__('.'.join((package, module)), fromlist=[module]) suite.addTest(unittest.defaultTestLoader.loadTestsFromModule(test_mod)) coverage_modules.append(coverage_mod) try: # If you want a HTML-based test report, install HTMLTestRunner from: # http://tungwaiyip.info/software/HTMLTestRunner.html import HTMLTestRunner REPORT_FILENAME = 'test_report.html' runner = HTMLTestRunner.HTMLTestRunner(stream=open(REPORT_FILENAME, 'w')) print """ HTML Test Report will be written to %s """ % REPORT_FILENAME except ImportError: runner = unittest.TextTestRunner(verbosity=2) try: import coverage except ImportError: coverage = None if __name__ == '__main__': if coverage is not None: cov = coverage.Coverage() cov.erase() cov.start() result = runner.run(suite) if not result.wasSuccessful(): sys.exit(1) if coverage is not None: cov.stop() cov.report(coverage_modules) cov.erase() else: print >>sys.stderr, """ No coverage reporting done (Python module "coverage" is missing) Please install the python-coverage package to get coverage reporting. """ gpodder-3.9.0/src/gpodder/test/0000755000016000001710000000000012654461626017467 5ustar jenkinsjenkins00000000000000gpodder-3.9.0/src/gpodder/test/model.py0000644000016000001710000000330712654461624021142 0ustar jenkinsjenkins00000000000000# -*- coding: utf-8 -*- # # gPodder - A media aggregator and podcast client # Copyright (c) 2005-2016 Thomas Perl and the gPodder Team # # gPodder is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 3 of the License, or # (at your option) any later version. # # gPodder is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . # # gpodder.test.model - Unit tests for gpodder.model # Thomas Perl ; 2013-02-12 import unittest import gpodder from gpodder import model class TestEpisodePublishedProperties(unittest.TestCase): PUBLISHED_UNIXTIME = 1360666744 PUBLISHED_SORT = '2013-02-12' PUBLISHED_YEAR = '13' PUBLISHED_MONTH = '02' PUBLISHED_DAY = '12' def setUp(self): self.podcast = model.PodcastChannel(None) self.episode = model.PodcastEpisode(self.podcast) self.episode.published = self.PUBLISHED_UNIXTIME def test_sortdate(self): self.assertEqual(self.episode.sortdate, self.PUBLISHED_SORT) def test_pubdate_year(self): self.assertEqual(self.episode.pubdate_year, self.PUBLISHED_YEAR) def test_pubdate_month(self): self.assertEqual(self.episode.pubdate_month, self.PUBLISHED_MONTH) def test_pubdate_day(self): self.assertEqual(self.episode.pubdate_day, self.PUBLISHED_DAY) gpodder-3.9.0/src/gpodder/test/__init__.py0000644000016000001710000000137312654461624021602 0ustar jenkinsjenkins00000000000000# -*- coding: utf-8 -*- # # gPodder - A media aggregator and podcast client # Copyright (c) 2005-2016 Thomas Perl and the gPodder Team # # gPodder is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 3 of the License, or # (at your option) any later version. # # gPodder is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . # gpodder-3.9.0/MANIFEST.in0000644000016000001710000000021212654461624016024 0ustar jenkinsjenkins00000000000000include README COPYING MANIFEST.in ChangeLog makefile setup.py recursive-include share * recursive-include po * recursive-include tools * gpodder-3.9.0/setup.py0000644000016000001710000001611012654461624016004 0ustar jenkinsjenkins00000000000000#!/usr/bin/env python # # gPodder - A media aggregator and podcast client # Copyright (c) 2005-2016 Thomas Perl and the gPodder Team # # gPodder is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 3 of the License, or # (at your option) any later version. # # gPodder is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . # import glob import os import re import sys from distutils.core import setup installing = ('install' in sys.argv and '--help' not in sys.argv) # Read the metadata from gPodder's __init__ module (doesn't need importing) main_module = open('src/gpodder/__init__.py').read() metadata = dict(re.findall("__([a-z_]+)__\s*=\s*'([^']+)'", main_module)) author, email = re.match(r'^(.*) <(.*)>$', metadata['author']).groups() class MissingFile(BaseException): pass def info(message, item=None): print '=>', message, item if item is not None else '' def find_data_files(uis, scripts): # Support for installing only a subset of translations linguas = os.environ.get('LINGUAS', None) if linguas is not None: linguas = linguas.split() info('Selected languages (from $LINGUAS):', linguas) for dirpath, dirnames, filenames in os.walk('share'): if not filenames: continue # Skip data folders if we don't want the corresponding UI share_gpodder_ui = os.path.join('share', 'gpodder', 'ui') if uis is not None and dirpath.startswith(share_gpodder_ui): dirparts = dirpath.split(os.sep) if not any(part in uis for part in dirparts): info('Skipping folder:', dirpath) continue # Skip translations if $LINGUAS is set share_locale = os.path.join('share', 'locale') if linguas is not None and dirpath.startswith(share_locale): _, _, language, _ = dirpath.split(os.sep, 3) if language not in linguas: info('Skipping translation:', language) continue # Skip desktop stuff if we don't have any UIs requiring it skip_folder = False uis_requiring_freedesktop = ('gtk',) freedesktop_folders = ('icons', 'dbus-1', 'applications') for folder in freedesktop_folders: share_folder = os.path.join('share', folder) if dirpath.startswith(share_folder) and uis is not None: if not any(ui in uis_requiring_freedesktop for ui in uis): info('Skipping freedesktop.org folder:', dirpath) skip_folder = True break if skip_folder: continue # Skip manpages if their scripts are not going to be installed share_man = os.path.join('share', 'man') if dirpath.startswith(share_man): def have_script(filename): if not filename.endswith('.1'): return True basename, _ = os.path.splitext(filename) result = any(os.path.basename(s) == basename for s in scripts) if not result: info('Skipping manpage without script:', filename) return result filenames = filter(have_script, filenames) def convert_filename(filename): filename = os.path.join(dirpath, filename) # Skip header files generated by "make messages" if filename.endswith('.h'): return None # Skip .in files, but check if their target exist if filename.endswith('.in'): filename = filename[:-3] if installing and not os.path.exists(filename): raise MissingFile(filename) return None return filename filenames = filter(None, map(convert_filename, filenames)) if filenames: # Some distros/ports install manpages into $PREFIX/man instead # of $PREFIX/share/man (e.g. FreeBSD). To allow this, we strip # the "share/" part if the variable GPODDER_MANPATH_NO_SHARE is # set to any value in the environment. if dirpath.startswith(share_man): if 'GPODDER_MANPATH_NO_SHARE' in os.environ: dirpath = dirpath.replace(share_man, 'man') yield (dirpath, filenames) def find_packages(uis): src_gpodder = os.path.join('src', 'gpodder') for dirpath, dirnames, filenames in os.walk(src_gpodder): if '__init__.py' not in filenames: continue skip = False dirparts = dirpath.split(os.sep) dirparts.pop(0) package = '.'.join(dirparts) # Extract all parts of the package name ending in "ui" ui_parts = filter(lambda p: p.endswith('ui'), dirparts) if uis is not None and ui_parts: # Strip the trailing "ui", e.g. "gtkui" -> "gtk" folder_uis = map(lambda p: p[:-2], ui_parts) for folder_ui in folder_uis: if folder_ui not in uis: info('Skipping package:', package) skip = True break if not skip: yield package def find_scripts(uis): # Functions for scripts to check if they should be installed file_checks = { 'gpo': lambda uis: 'cli' in uis, 'gpodder': lambda uis: any(ui in uis for ui in ('gtk',)), } for dirpath, dirnames, filenames in os.walk('bin'): for filename in filenames: # If we have a set of uis, check if we can skip this file if uis is not None and filename in file_checks: if not file_checks[filename](uis): info('Skipping script:', filename) continue yield os.path.join(dirpath, filename) # Recognized UIs: cli, gtk (default: install all UIs) uis = os.environ.get('GPODDER_INSTALL_UIS', None) if uis is not None: uis = uis.split() info('Selected UIs (from $GPODDER_INSTALL_UIS):', uis) try: packages = list(sorted(find_packages(uis))) scripts = list(sorted(find_scripts(uis))) data_files = list(sorted(find_data_files(uis, scripts))) except MissingFile, mf: print >>sys.stderr, """ Missing file: %s If you want to install, use "make install" instead of using setup.py directly. See the README file for more information. """ % mf.message sys.exit(1) setup( name = 'gpodder', version = metadata['version'], description = metadata['tagline'], license = metadata['license'], url = metadata['url'], author = author, author_email = email, package_dir = {'': 'src'}, packages = packages, scripts = scripts, data_files = data_files, ) gpodder-3.9.0/po/0000755000016000001710000000000012654461626014713 5ustar jenkinsjenkins00000000000000gpodder-3.9.0/po/it.po0000644000016000001710000016713212654461625015700 0ustar jenkinsjenkins00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # # Translators: # , 2012. # Andrea Scarpino , 2011. # Thomas Perl , 2006. msgid "" msgstr "" "Project-Id-Version: gPodder\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2016-02-03 20:31+0000\n" "PO-Revision-Date: 2013-04-23 17:31+0100\n" "Last-Translator: Maurizio Ballo \n" "Language-Team: Italian (http://www.transifex.com/projects/p/gpodder/language/" "it/)\n" "Language: it\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" "X-Generator: Poedit 1.5.4\n" #: src/gpodder/config.py:55 #, python-format msgid "gPodder on %s" msgstr "gPodder su %s" #: src/gpodder/directory.py:95 #, fuzzy msgid "gpodder.net search" msgstr "gpodder.net" #: src/gpodder/directory.py:104 #, fuzzy msgid "OPML from web" msgstr "File OPML" #: src/gpodder/directory.py:113 #, fuzzy msgid "OPML file" msgstr "File OPML" #: src/gpodder/directory.py:122 share/gpodder/ui/gtk/gpodderwelcome.ui.h:1 msgid "Getting started" msgstr "Operazioni iniziali" #: src/gpodder/directory.py:131 #, fuzzy msgid "gpodder.net Top 50" msgstr "gpodder.net" #: src/gpodder/directory.py:140 #, fuzzy msgid "gpodder.net Tags" msgstr "gpodder.net" #: src/gpodder/directory.py:152 #, fuzzy msgid "Soundcloud search" msgstr "%s su Soundcloud" #: src/gpodder/directory.py:165 #, fuzzy msgid "Imported OPML file" msgstr "Importa da file OPML" #: src/gpodder/download.py:329 msgid "Wrong username/password" msgstr "Nome utente o password errati" #: src/gpodder/download.py:527 src/gpodder/sync.py:924 msgid "Added" msgstr "Aggiunto" #: src/gpodder/download.py:527 src/gpodder/sync.py:924 msgid "Queued" msgstr "In coda" #: src/gpodder/download.py:527 src/gpodder/gtkui/model.py:327 msgid "Downloading" msgstr "Download in corso" #: src/gpodder/download.py:528 src/gpodder/model.py:721 #: src/gpodder/sync.py:925 msgid "Finished" msgstr "Completato" #: src/gpodder/download.py:528 src/gpodder/sync.py:925 msgid "Failed" msgstr "Fallito" #: src/gpodder/download.py:528 src/gpodder/sync.py:925 msgid "Cancelled" msgstr "Annullato" #: src/gpodder/download.py:528 src/gpodder/sync.py:925 msgid "Paused" msgstr "In pausa" #: src/gpodder/download.py:862 msgid "Missing content from server" msgstr "Contenuti mancanti dal server" #: src/gpodder/download.py:868 #, python-format msgid "I/O Error: %(error)s: %(filename)s" msgstr "Errore I/O: %(error)s: %(filename)s" #: src/gpodder/download.py:875 #, python-format msgid "HTTP Error %(code)s: %(message)s" msgstr "Errore HTTP %(code)s: %(message)s" #: src/gpodder/download.py:879 src/gpodder/sync.py:1081 #, python-format msgid "Error: %s" msgstr "Errore: %s" #: src/gpodder/extensions.py:55 msgid "Desktop Integration" msgstr "Integrazione Desktop" #: src/gpodder/extensions.py:56 msgid "Interface" msgstr "Interfaccia" #: src/gpodder/extensions.py:57 msgid "Post download" msgstr "Dopo il download" #: src/gpodder/extensions.py:59 src/gpodder/model.py:779 #: src/gpodder/model.py:1225 msgid "Other" msgstr "Altro" #: src/gpodder/extensions.py:100 msgid "No description for this extension." msgstr "Nessuna descrizione per questa estensione." #: src/gpodder/extensions.py:212 #, python-format msgid "Command not found: %(command)s" msgstr "Comando non trovato: %(command)s" #: src/gpodder/extensions.py:228 #, python-format msgid "Need at least one of the following commands: %(list_of_commands)s" msgstr "Necessita almeno uno dei seguenti commandi: %(list_of_commands)s" #: src/gpodder/extensions.py:265 #, python-format msgid "Python module not found: %(module)s" msgstr "Modulo Python non installato: %(module)s" #: src/gpodder/model.py:446 src/gpodder/plugins/soundcloud.py:156 msgid "No description available" msgstr "Nessuna descrizione disponibile" #: src/gpodder/model.py:679 msgid "unknown" msgstr "sconosciuto" #: src/gpodder/model.py:746 msgid "Default" msgstr "Predefinito" #: src/gpodder/model.py:747 msgid "Only keep latest" msgstr "Tieni solo i piУЙ recenti" #: src/gpodder/model.py:1208 src/gpodder/model.py:1223 #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:10 msgid "Video" msgstr "Video" #: src/gpodder/model.py:1221 msgid "Audio" msgstr "Audio" #: src/gpodder/my.py:174 #, python-format msgid "Add %s" msgstr "Aggiungi %s" #: src/gpodder/my.py:176 #, python-format msgid "Remove %s" msgstr "Elimina %s" #: src/gpodder/sync.py:196 msgid "Cancelled by user" msgstr "Annullato dall'utente" #: src/gpodder/sync.py:199 msgid "Writing data to disk" msgstr "Scrittura dei dati su disco" #: src/gpodder/sync.py:295 msgid "Opening iPod database" msgstr "Apertura del database dell'iPod" #: src/gpodder/sync.py:305 msgid "iPod opened" msgstr "iPod aperto" #: src/gpodder/sync.py:316 msgid "Saving iPod database" msgstr "Salvataggio del database dell'iPod" #: src/gpodder/sync.py:321 msgid "Writing extended gtkpod database" msgstr "Scrittura avanzata del database gtkpod" #: src/gpodder/sync.py:397 src/gpodder/sync.py:680 src/gpodder/sync.py:874 #, python-format msgid "Removing %s" msgstr "Eliminazione di %s" #: src/gpodder/sync.py:412 src/gpodder/sync.py:557 #, python-format msgid "Adding %s" msgstr "Aggiunta di %s" #: src/gpodder/sync.py:430 #, python-format msgid "Error copying %(episode)s: Not enough free space on %(mountpoint)s" msgstr "" "Errore nella copia di %(episode)s: Spazio libero insufficente su " "%(mountpoint)s" #: src/gpodder/sync.py:515 msgid "Opening MP3 player" msgstr "Apertura del lettore MP3" #: src/gpodder/sync.py:518 msgid "MP3 player opened" msgstr "Lettore MP3 aperto" #: src/gpodder/sync.py:576 #, python-format msgid "" "Not enough space in %(path)s: %(free)s available, but need at least %(need)s" msgstr "" #: src/gpodder/sync.py:603 src/gpodder/sync.py:611 #, python-format msgid "Error opening %(filename)s: %(message)s" msgstr "Errore nell'apertura di %(filename)s: %(message)s" #: src/gpodder/sync.py:780 src/gpodder/sync.py:786 msgid "MTP device" msgstr "Dispositivo MTP" #: src/gpodder/sync.py:793 msgid "Opening the MTP device" msgstr "Apertura del dispositivo MTP" #: src/gpodder/sync.py:803 #, python-format msgid "%s opened" msgstr "%s aperto" #: src/gpodder/sync.py:808 #, python-format msgid "Closing %s" msgstr "Chiusura di %s" #: src/gpodder/sync.py:816 #, python-format msgid "%s closed" msgstr "%s chiuso" #: src/gpodder/sync.py:821 bin/gpo:708 #, python-format msgid "Adding %s..." msgstr "Aggiunta di %s..." #: src/gpodder/sync.py:924 msgid "Synchronizing" msgstr "Sincronizzazione" #: src/gpodder/util.py:429 #, python-format msgid "%(count)d day ago" msgid_plural "%(count)d days ago" msgstr[0] "%(count)d giorno fa" msgstr[1] "%(count)d giorni fa" #: src/gpodder/util.py:508 msgid "Today" msgstr "Oggi" #: src/gpodder/util.py:510 msgid "Yesterday" msgstr "Ieri" #: src/gpodder/util.py:553 src/gpodder/util.py:556 msgid "(unknown)" msgstr "(sconosciuto)" #: src/gpodder/util.py:1193 src/gpodder/util.py:1212 #, python-format msgid "%(count)d second" msgid_plural "%(count)d seconds" msgstr[0] "%(count)d secondo" msgstr[1] "%(count)d secondi" #: src/gpodder/util.py:1206 #, python-format msgid "%(count)d hour" msgid_plural "%(count)d hours" msgstr[0] "%(count)d ora" msgstr[1] "%(count)d ore" #: src/gpodder/util.py:1209 #, python-format msgid "%(count)d minute" msgid_plural "%(count)d minutes" msgstr[0] "%(count)d minuto" msgstr[1] "%(count)d minuti" #: src/gpodder/util.py:1215 msgid "and" msgstr "e" #: src/gpodder/gtkui/config.py:50 msgid "Integer" msgstr "Intero" #: src/gpodder/gtkui/config.py:52 msgid "Float" msgstr "In virgola mobile" #: src/gpodder/gtkui/config.py:54 msgid "Boolean" msgstr "Booleano" #: src/gpodder/gtkui/config.py:56 msgid "String" msgstr "Stringa" #: src/gpodder/gtkui/desktopfile.py:70 #, python-format msgid "Command: %s" msgstr "Comando: %s" #: src/gpodder/gtkui/desktopfile.py:150 msgid "Default application" msgstr "Applicazione predefinita" #: src/gpodder/gtkui/main.py:205 share/applications/gpodder.desktop.in.h:1 msgid "gPodder" msgstr "gPodder" #: src/gpodder/gtkui/main.py:288 msgid "Loading incomplete downloads" msgstr "Caricamento dei download incompleti" #: src/gpodder/gtkui/main.py:289 msgid "Some episodes have not finished downloading in a previous session." msgstr "" "Alcuni episodi non hanno completato il download in una precedente sessione." #: src/gpodder/gtkui/main.py:291 #, python-format msgid "%(count)d partial file" msgid_plural "%(count)d partial files" msgstr[0] "%(count)d file parziale" msgstr[1] "%(count)d file parziali" #: src/gpodder/gtkui/main.py:306 msgid "Resume all" msgstr "Ripristina tutti" #: src/gpodder/gtkui/main.py:316 msgid "Incomplete downloads from a previous session were found." msgstr "Trovati scaricamenti incompleti dall'ultima sessione." #: src/gpodder/gtkui/main.py:414 msgid "Action" msgstr "Azione" #: src/gpodder/gtkui/main.py:461 msgid "Confirm changes from gpodder.net" msgstr "Conferma i cambiamenti da gpodder.net" #: src/gpodder/gtkui/main.py:462 msgid "Select the actions you want to carry out." msgstr "Seleziona le azioni da eseguire." #: src/gpodder/gtkui/main.py:502 msgid "Uploading subscriptions" msgstr "Caricamento delle iscrizioni" #: src/gpodder/gtkui/main.py:503 msgid "Your subscriptions are being uploaded to the server." msgstr "Caricamento delle iscrizioni sul server in corso." #: src/gpodder/gtkui/main.py:508 msgid "List uploaded successfully." msgstr "Elenco caricato con successo." #: src/gpodder/gtkui/main.py:515 msgid "Error while uploading" msgstr "Errore nel caricamento" #: src/gpodder/gtkui/main.py:800 src/gpodder/gtkui/main.py:928 #: src/gpodder/gtkui/main.py:2622 src/gpodder/gtkui/main.py:2815 #: src/gpodder/gtkui/desktop/episodeselector.py:132 #: src/gpodder/gtkui/desktop/sync.py:270 msgid "Episode" msgstr "Episodio" #: src/gpodder/gtkui/main.py:819 msgid "Size" msgstr "Dimensione" #: src/gpodder/gtkui/main.py:824 msgid "Duration" msgstr "Durata" #: src/gpodder/gtkui/main.py:828 msgid "Released" msgstr "Rilasciato" #: src/gpodder/gtkui/main.py:855 msgid "Visible columns" msgstr "Colonne visualizzate" #: src/gpodder/gtkui/main.py:948 src/gpodder/gtkui/main.py:1108 #: share/gpodder/ui/gtk/gpodder.ui.h:45 msgid "Progress" msgstr "Avanzamento" #: src/gpodder/gtkui/main.py:982 msgid "Loading episodes" msgstr "Caricamento episodi" #: src/gpodder/gtkui/main.py:985 msgid "No episodes in current view" msgstr "Nessun episodio in questa schermata" #: src/gpodder/gtkui/main.py:987 msgid "No episodes available" msgstr "Nessun episodio disponibile" #: src/gpodder/gtkui/main.py:993 msgid "No podcasts in this view" msgstr "Nessun podcast in questa schermata" #: src/gpodder/gtkui/main.py:995 msgid "No subscriptions" msgstr "Nessuna iscrizione" #: src/gpodder/gtkui/main.py:997 msgid "No active tasks" msgstr "Nessuna attivitУ  in corso" #: src/gpodder/gtkui/main.py:1112 src/gpodder/gtkui/main.py:1114 #, python-format msgid "%(count)d active" msgid_plural "%(count)d active" msgstr[0] "%(count)d attivo" msgstr[1] "%(count)d attivi" #: src/gpodder/gtkui/main.py:1116 #, python-format msgid "%(count)d failed" msgid_plural "%(count)d failed" msgstr[0] "%(count)d fallito" msgstr[1] "%(count)d falliti" #: src/gpodder/gtkui/main.py:1118 #, python-format msgid "%(count)d queued" msgid_plural "%(count)d queued" msgstr[0] "%(count)d in coda" msgstr[1] "%(count)d in coda" #: src/gpodder/gtkui/main.py:1132 #, python-format msgid "downloading %(count)d file" msgid_plural "downloading %(count)d files" msgstr[0] "download di %(count)d file in corso" msgstr[1] "download di %(count)d file in corso" #: src/gpodder/gtkui/main.py:1142 #, python-format msgid "synchronizing %(count)d file" msgid_plural "synchronizing %(count)d files" msgstr[0] "sincronizzazione di %(count)d file" msgstr[1] "sincronizzazione di %(count)d file" #: src/gpodder/gtkui/main.py:1144 #, python-format msgid "%(queued)d task queued" msgid_plural "%(queued)d tasks queued" msgstr[0] "%(queued)d attivitУ  in coda" msgstr[1] "%(queued)d attivitУ  in coda" #: src/gpodder/gtkui/main.py:1168 msgid "Please report this problem and restart gPodder:" msgstr "Per favore segnala questo problema e riavvia gPodder:" #: src/gpodder/gtkui/main.py:1168 msgid "Unhandled exception" msgstr "Eccezione non gestita" #: src/gpodder/gtkui/main.py:1235 #, python-format msgid "Feedparser error: %s" msgstr "Errore nel feed: %s" #: src/gpodder/gtkui/main.py:1371 msgid "Could not download some episodes:" msgstr "Impossibile scaricare alcuni podcast:" #: src/gpodder/gtkui/main.py:1373 src/gpodder/gtkui/main.py:1376 msgid "Downloads finished" msgstr "Download completati" #: src/gpodder/gtkui/main.py:1379 msgid "Downloads failed" msgstr "Download falliti" #: src/gpodder/gtkui/main.py:1383 msgid "Could not sync some episodes:" msgstr "Impossibile sincronizzare alcuni podcast:" #: src/gpodder/gtkui/main.py:1385 src/gpodder/gtkui/main.py:1388 msgid "Device synchronization finished" msgstr "Sincronizzazione dispositivo eseguita" #: src/gpodder/gtkui/main.py:1391 msgid "Device synchronization failed" msgstr "Sincronizzazione dispositivo fallita" #: src/gpodder/gtkui/main.py:1434 #, python-format msgid "%(count)d more episode" msgid_plural "%(count)d more episodes" msgstr[0] "%(count)d di episodi" msgstr[1] "%(count)d di piУЙ episodi" #: src/gpodder/gtkui/main.py:1508 msgid "Start download now" msgstr "Avvia download ora" #: src/gpodder/gtkui/main.py:1510 src/gpodder/gtkui/main.py:1719 #: src/gpodder/gtkui/desktop/episodeselector.py:144 #: share/gpodder/ui/gtk/gpodder.ui.h:20 msgid "Download" msgstr "Scarica" #: src/gpodder/gtkui/main.py:1511 share/gpodder/ui/gtk/gpodder.ui.h:21 msgid "Cancel" msgstr "Annulla" #: src/gpodder/gtkui/main.py:1512 msgid "Pause" msgstr "Pausa" #: src/gpodder/gtkui/main.py:1514 msgid "Remove from list" msgstr "Rimuovi dall'elenco" #: src/gpodder/gtkui/main.py:1553 share/gpodder/ui/gtk/gpodder.ui.h:13 msgid "Update podcast" msgstr "Aggiorna podcast" #: src/gpodder/gtkui/main.py:1560 msgid "Open download folder" msgstr "Apri la cartella dei download" #: src/gpodder/gtkui/main.py:1566 msgid "Mark episodes as old" msgstr "Segna episodi come vecchi" #: src/gpodder/gtkui/main.py:1570 src/gpodder/gtkui/main.py:1778 msgid "Archive" msgstr "Archivia" #: src/gpodder/gtkui/main.py:1575 msgid "Remove podcast" msgstr "Elimina podcast" #: src/gpodder/gtkui/main.py:1590 share/gpodder/ui/gtk/gpodder.ui.h:10 msgid "Podcast settings" msgstr "Impostazioni podcast" #: src/gpodder/gtkui/main.py:1650 msgid "Error converting file." msgstr "Errore nella conversione del file." #: src/gpodder/gtkui/main.py:1650 msgid "Bluetooth file transfer" msgstr "Trasferimento file via Bluetooth" #: src/gpodder/gtkui/main.py:1709 msgid "Preview" msgstr "Anteprima" #: src/gpodder/gtkui/main.py:1711 msgid "Stream" msgstr "Flusso" #: src/gpodder/gtkui/main.py:1755 msgid "Send to" msgstr "Invia a" #: src/gpodder/gtkui/main.py:1757 msgid "Local folder" msgstr "Cartella locale" #: src/gpodder/gtkui/main.py:1762 msgid "Bluetooth device" msgstr "Dispositivo Bluetooth" #: src/gpodder/gtkui/main.py:1769 msgid "New" msgstr "Nuovo" #: src/gpodder/gtkui/main.py:1785 share/gpodder/ui/gtk/gpodder.ui.h:25 msgid "Episode details" msgstr "Informazioni sull'episodio" #: src/gpodder/gtkui/main.py:1938 msgid "Please check your media player settings in the preferences dialog." msgstr "" "Verifica le impostazioni del tuo lettore multimediale nella schermata delle " "preferenze." #: src/gpodder/gtkui/main.py:1939 msgid "Error opening player" msgstr "Errore nell'accesso al lettore" #: src/gpodder/gtkui/main.py:2178 msgid "Adding podcasts" msgstr "Aggiunta dei podcast" #: src/gpodder/gtkui/main.py:2179 msgid "Please wait while episode information is downloaded." msgstr "Attendi mentre i dettagli dell'episodio vengono scaricati." #: src/gpodder/gtkui/main.py:2186 msgid "Existing subscriptions skipped" msgstr "Ignorata iscrizione esistente" #: src/gpodder/gtkui/main.py:2187 msgid "You are already subscribed to these podcasts:" msgstr "Hai giУ  sottoscritto questi podcast:" #: src/gpodder/gtkui/main.py:2195 msgid "Podcast requires authentication" msgstr "Il podcast richiede autenticazione" #: src/gpodder/gtkui/main.py:2196 #, python-format msgid "Please login to %s:" msgstr "Effettuare il login su %s:" #: src/gpodder/gtkui/main.py:2204 src/gpodder/gtkui/main.py:2299 msgid "Authentication failed" msgstr "Autenticazione fallita" #: src/gpodder/gtkui/main.py:2210 msgid "Website redirection detected" msgstr "Rilevata ridirezione di un sito web" #: src/gpodder/gtkui/main.py:2211 #, python-format msgid "The URL %(url)s redirects to %(target)s." msgstr "L'indirizzo %(url)s viene ridiretto a %(target)s." #: src/gpodder/gtkui/main.py:2212 msgid "Do you want to visit the website now?" msgstr "Vuoi visitare il sito web ora?" #: src/gpodder/gtkui/main.py:2221 msgid "Could not add some podcasts" msgstr "Impossibile aggiungere alcuni podcast" #: src/gpodder/gtkui/main.py:2222 msgid "Some podcasts could not be added to your list:" msgstr "Non УЈ stato possibile aggiungere alcuni podcast alla tua lista:" #: src/gpodder/gtkui/main.py:2224 msgid "Unknown" msgstr "Sconosciuto" #: src/gpodder/gtkui/main.py:2308 msgid "Redirection detected" msgstr "Rilevata redirezione" #: src/gpodder/gtkui/main.py:2342 msgid "Merging episode actions" msgstr "Sincronizzazione delle azioni sugli episodi" #: src/gpodder/gtkui/main.py:2343 msgid "Episode actions from gpodder.net are merged." msgstr "Le azioni sugli episodi da gpodder.net sono state sincronizzate" #: src/gpodder/gtkui/main.py:2368 msgid "Cancelling..." msgstr "Annullamento..." #: src/gpodder/gtkui/main.py:2377 msgid "Please connect to a network, then try again." msgstr "Si prega di connettersi ad una rete e riprovare." #: src/gpodder/gtkui/main.py:2378 msgid "No network connection" msgstr "Nessuna connessione di rete" #: src/gpodder/gtkui/main.py:2399 #, python-format msgid "Updating %(count)d feed..." msgid_plural "Updating %(count)d feeds..." msgstr[0] "Aggiornamento di %(count)d feed..." msgstr[1] "Aggiornamento di %(count)d feed..." #: src/gpodder/gtkui/main.py:2417 #, python-format msgid "Error while updating %(url)s: %(message)s" msgstr "Errore nell'aggiornamento di %(url)s: %(message)s" #: src/gpodder/gtkui/main.py:2419 #, python-format msgid "The feed at %(url)s could not be updated." msgstr "Impossibile aggiornare il feed su %(url)s." #: src/gpodder/gtkui/main.py:2420 msgid "Error while updating feed" msgstr "Errore nell'aggiornamento del feed" #: src/gpodder/gtkui/main.py:2435 #, python-format msgid "Updated %(podcast)s (%(position)d/%(total)d)" msgstr "Aggiornati %(podcast)s (%(position)d/%(total)d)" #: src/gpodder/gtkui/main.py:2466 msgid "No new episodes" msgstr "Nessun nuovo episodio" #: src/gpodder/gtkui/main.py:2479 #, python-format msgid "Downloading %(count)d new episode." msgid_plural "Downloading %(count)d new episodes." msgstr[0] "Download di %(count)d nuovo episodio." msgstr[1] "Download di %(count)d nuovi episodi." #: src/gpodder/gtkui/main.py:2480 src/gpodder/gtkui/main.py:2484 #: src/gpodder/gtkui/main.py:2833 msgid "New episodes available" msgstr "Nuovi episodi disponibili" #: src/gpodder/gtkui/main.py:2483 #, python-format msgid "%(count)d new episode added to download list." msgid_plural "%(count)d new episodes added to download list." msgstr[0] "%(count)d nuovo episodio aggiunto all'elenco dei donwload." msgstr[1] "%(count)d nuovi episodi aggiunti all'elenco dei donwload." #: src/gpodder/gtkui/main.py:2490 #, python-format msgid "%(count)d new episode available" msgid_plural "%(count)d new episodes available" msgstr[0] "%(count)d nuovo episodio disponibile" msgstr[1] "%(count)d nuovi episodi disponibili" #: src/gpodder/gtkui/main.py:2509 msgid "Quit gPodder" msgstr "Chiudi gPodder" #: src/gpodder/gtkui/main.py:2510 msgid "" "You are downloading episodes. You can resume downloads the next time you " "start gPodder. Do you want to quit now?" msgstr "" "Al momento stai scaricando degli episodi. Puoi continuare i download al " "prossimo avvio di gPodder. Vuoi chiudere ora?" #: src/gpodder/gtkui/main.py:2559 msgid "Episodes are locked" msgstr "Gli episodi sono bloccati" #: src/gpodder/gtkui/main.py:2560 msgid "" "The selected episodes are locked. Please unlock the episodes that you want " "to delete before trying to delete them." msgstr "" "Gli episodi selezionati sono bloccati. Sblocca gli episodi che vuoi " "eliminare prima di provare ad eliminarli." #: src/gpodder/gtkui/main.py:2565 #, python-format msgid "Delete %(count)d episode?" msgid_plural "Delete %(count)d episodes?" msgstr[0] "Eliminare %(count)d episodio?" msgstr[1] "Eliminare %(count)d episodi?" #: src/gpodder/gtkui/main.py:2566 msgid "Deleting episodes removes downloaded files." msgstr "L'eliminazione degli episodi cancella i file scaricati." #: src/gpodder/gtkui/main.py:2571 msgid "Deleting episodes" msgstr "Eliminazione episodi" #: src/gpodder/gtkui/main.py:2572 msgid "Please wait while episodes are deleted" msgstr "Attendi mentre gli episodi vengono eliminati." #: src/gpodder/gtkui/main.py:2625 #, python-format msgid "Select older than %(count)d day" msgid_plural "Select older than %(count)d days" msgstr[0] "Seleziona i piУЙ vecchi di %(count)d giorno" msgstr[1] "Seleziona i piУЙ vecchi di %(count)d giorni" #: src/gpodder/gtkui/main.py:2627 msgid "Select played" msgstr "Seleziona i riprodotti" #: src/gpodder/gtkui/main.py:2628 msgid "Select finished" msgstr "Seleziona i terminati" #: src/gpodder/gtkui/main.py:2632 msgid "Select the episodes you want to delete:" msgstr "Seleziona gli episodi che vuoi eliminare:" #: src/gpodder/gtkui/main.py:2648 share/gpodder/ui/gtk/gpodder.ui.h:4 msgid "Delete episodes" msgstr "Elimina episodi" #: src/gpodder/gtkui/main.py:2703 src/gpodder/gtkui/main.py:2934 #: src/gpodder/gtkui/main.py:3034 msgid "No podcast selected" msgstr "Nessun podcast selezionato" #: src/gpodder/gtkui/main.py:2704 msgid "Please select a podcast in the podcasts list to update." msgstr "Seleziona un podcast nella lista per aggiornarlo." #: src/gpodder/gtkui/main.py:2774 #, python-format msgid "Download error while downloading %(episode)s: %(message)s" msgstr "Errore durante il download %(episode)s: %(message)s" #: src/gpodder/gtkui/main.py:2775 msgid "Download error" msgstr "Errore nel download" #: src/gpodder/gtkui/main.py:2818 msgid "Select the episodes you want to download:" msgstr "Seleziona gli episodi che vuoi scaricare:" #: src/gpodder/gtkui/main.py:2841 msgid "Mark as old" msgstr "Segna come ascoltato" #: src/gpodder/gtkui/main.py:2848 msgid "Please check for new episodes later." msgstr "Controlla se ci sono nuovi episodi piУЙ tardi." #: src/gpodder/gtkui/main.py:2849 msgid "No new episodes available" msgstr "Nessun nuovo episodio disponibile" #: src/gpodder/gtkui/main.py:2900 msgid "Login to gpodder.net" msgstr "Login su gpodder.net" #: src/gpodder/gtkui/main.py:2901 msgid "Please login to download your subscriptions." msgstr "Fare login per scaricare le iscrizioni." #: src/gpodder/gtkui/main.py:2916 msgid "Subscriptions on gpodder.net" msgstr "iscrizioni su gpodder.net" #: src/gpodder/gtkui/main.py:2935 msgid "Please select a podcast in the podcasts list to edit." msgstr "Seleziona un podcast nella lista per modificarlo." #: src/gpodder/gtkui/main.py:2949 msgid "Podcast" msgstr "Podcast" #: src/gpodder/gtkui/main.py:2955 share/gpodder/ui/gtk/gpodder.ui.h:12 msgid "Remove podcasts" msgstr "Elimina podcast" #: src/gpodder/gtkui/main.py:2956 msgid "Select the podcast you want to remove." msgstr "Seleziona il podcast che vuoi eliminare." #: src/gpodder/gtkui/main.py:2960 #: src/gpodder/gtkui/desktop/episodeselector.py:105 msgid "Remove" msgstr "Elimina" #: src/gpodder/gtkui/main.py:2969 msgid "Removing podcast" msgstr "Eliminazione del podcast" #: src/gpodder/gtkui/main.py:2970 msgid "Please wait while the podcast is removed" msgstr "Attendi mentre il podcast viene eliminato" #: src/gpodder/gtkui/main.py:2971 msgid "Do you really want to remove this podcast and its episodes?" msgstr "Vuoi veramente eliminare questo podcast con tutti gli episodi?" #: src/gpodder/gtkui/main.py:2973 msgid "Removing podcasts" msgstr "Eliminazione dei podcast" #: src/gpodder/gtkui/main.py:2974 msgid "Please wait while the podcasts are removed" msgstr "Attendi mentre i podcast vengono eliminati." #: src/gpodder/gtkui/main.py:2975 msgid "Do you really want to remove the selected podcasts and their episodes?" msgstr "Vuoi veramente eliminare i podcast selezionati con tutti gli episodi?" #: src/gpodder/gtkui/main.py:3035 msgid "Please select a podcast in the podcasts list to remove." msgstr "Seleziona un podcast nella lista per eliminarlo." #: src/gpodder/gtkui/main.py:3045 msgid "OPML files" msgstr "File OPML" #: src/gpodder/gtkui/main.py:3050 msgid "Import from OPML" msgstr "Importa da OPML" #: src/gpodder/gtkui/main.py:3064 msgid "Import podcasts from OPML file" msgstr "Importa podcast da file OPML" #: src/gpodder/gtkui/main.py:3071 msgid "Nothing to export" msgstr "Niente da esportare" #: src/gpodder/gtkui/main.py:3072 msgid "" "Your list of podcast subscriptions is empty. Please subscribe to some " "podcasts first before trying to export your subscription list." msgstr "" "La tua lista delle iscrizioni ai podcast УЈ vuota. Iscriviti a qualcuno prima " "di provare a esportare la lista." #: src/gpodder/gtkui/main.py:3076 msgid "Export to OPML" msgstr "Esporta in formato OPML" #: src/gpodder/gtkui/main.py:3087 #, python-format msgid "%(count)d subscription exported" msgid_plural "%(count)d subscriptions exported" msgstr[0] "%(count)d iscrizione esportata" msgstr[1] "%(count)d iscrizioni esportate" #: src/gpodder/gtkui/main.py:3088 msgid "Your podcast list has been successfully exported." msgstr "La tua lista dei podcast УЈ stata esportata correttamente." #: src/gpodder/gtkui/main.py:3090 msgid "Could not export OPML to file. Please check your permissions." msgstr "Impossibile esportare l'OPML su file. Verifica i tuoi permessi." #: src/gpodder/gtkui/main.py:3090 msgid "OPML export failed" msgstr "Esportazione OPML fallita" #: src/gpodder/gtkui/main.py:3117 msgid "No updates available" msgstr "Nessun aggiornamento disponibile" #: src/gpodder/gtkui/main.py:3118 msgid "You have the latest version of gPodder." msgstr "Hai la versione piУЙ recente di gPodder" #: src/gpodder/gtkui/main.py:3122 msgid "New version available" msgstr "Nuova versione disponibile" #: src/gpodder/gtkui/main.py:3124 #, python-format msgid "Installed version: %s" msgstr "Installata versione: %s" #: src/gpodder/gtkui/main.py:3125 #, python-format msgid "Newest version: %s" msgstr "Versione piУЙ recente: %s" #: src/gpodder/gtkui/main.py:3126 #, python-format msgid "Release date: %s" msgstr "Data di rilascio: %s" #: src/gpodder/gtkui/main.py:3128 msgid "Download the latest version from gpodder.org?" msgstr "Scaricare l'ultima versione da gpodder.org?" #: src/gpodder/gtkui/main.py:3141 msgid "About gPodder" msgstr "Info su gPodder" #: src/gpodder/gtkui/main.py:3424 #, fuzzy msgid "Please register a YouTube API key and set it in the preferences." msgstr "Configura il tuo dispositivo nella schermata delle preferenze." #: src/gpodder/gtkui/main.py:3425 msgid "Would you like to set up an API key now?" msgstr "" #: src/gpodder/gtkui/main.py:3425 msgid "API key required" msgstr "" #: src/gpodder/gtkui/main.py:3444 bin/gpo:631 #, fuzzy msgid "No unique URL found" msgstr "Nessun canale trovato" #: src/gpodder/gtkui/main.py:3449 bin/gpo:637 #, fuzzy msgid "Already subscribed" msgstr "GiУ  sottoscritto a %s." #: src/gpodder/gtkui/main.py:3458 bin/gpo:649 #, python-format msgid "Make sure the API key is correct. Error: %(message)s" msgstr "" #: src/gpodder/gtkui/main.py:3459 #, fuzzy msgid "Error getting YouTube channels" msgstr "Errore nell'impostazione dell'opzione" #: src/gpodder/gtkui/main.py:3462 #, fuzzy msgid "Successfully migrated subscriptions" msgstr "Aggiunto con successo %s." #: src/gpodder/gtkui/main.py:3464 #, fuzzy msgid "Subscriptions are up to date" msgstr "Sottoscrizione sospesa" #: src/gpodder/gtkui/main.py:3467 msgid "These URLs failed:" msgstr "" #: src/gpodder/gtkui/main.py:3469 #, fuzzy msgid "Could not migrate some subscriptions" msgstr "Impossibile aggiungere alcuni podcast" #: src/gpodder/gtkui/main.py:3493 msgid "Cannot start gPodder" msgstr "Impossibile avviare gPodder" #: src/gpodder/gtkui/main.py:3494 #, python-format msgid "D-Bus error: %s" msgstr "Errore D-Bus: %s" #: src/gpodder/gtkui/model.py:68 #, python-format msgid "released %s" msgstr "Data di rilascio %s" #: src/gpodder/gtkui/model.py:69 src/gpodder/gtkui/model.py:87 #: src/gpodder/gtkui/model.py:237 src/gpodder/gtkui/shownotes.py:84 #, python-format msgid "from %s" msgstr "da %s" #: src/gpodder/gtkui/model.py:80 src/gpodder/gtkui/model.py:393 msgid "played" msgstr "riprodotto" #: src/gpodder/gtkui/model.py:82 msgid "unplayed" msgstr "non riprodotto" #: src/gpodder/gtkui/model.py:85 msgid "today" msgstr "oggi" #: src/gpodder/gtkui/model.py:86 #, python-format msgid "downloaded %s" msgstr "scaricati %s" #: src/gpodder/gtkui/model.py:337 msgid "Deleted" msgstr "Eliminato" #: src/gpodder/gtkui/model.py:342 msgid "New episode" msgstr "Nuovo episodio" #: src/gpodder/gtkui/model.py:356 msgid "Downloaded episode" msgstr "Episodi scaricati" #: src/gpodder/gtkui/model.py:359 msgid "Downloaded video episode" msgstr "Episodi video scaricati" #: src/gpodder/gtkui/model.py:362 msgid "Downloaded image" msgstr "Immagine scaricata" #: src/gpodder/gtkui/model.py:365 msgid "Downloaded file" msgstr "File scaricato" #: src/gpodder/gtkui/model.py:380 msgid "missing file" msgstr "file mancante" #: src/gpodder/gtkui/model.py:384 msgid "never displayed" msgstr "mai mostrato" #: src/gpodder/gtkui/model.py:386 msgid "never played" msgstr "mai ascoltato" #: src/gpodder/gtkui/model.py:388 msgid "never opened" msgstr "mai aperto" #: src/gpodder/gtkui/model.py:391 msgid "displayed" msgstr "mostrato" #: src/gpodder/gtkui/model.py:395 msgid "opened" msgstr "aperto" #: src/gpodder/gtkui/model.py:397 msgid "deletion prevented" msgstr "eliminazione impedita" #: src/gpodder/gtkui/model.py:432 share/gpodder/ui/gtk/gpodder.ui.h:32 msgid "All episodes" msgstr "Tutti gli episodi" #: src/gpodder/gtkui/model.py:433 msgid "from all podcasts" msgstr "da tutti i podcast" #: src/gpodder/gtkui/model.py:625 msgid "Subscription paused" msgstr "Sottoscrizione sospesa" #: src/gpodder/gtkui/shownotes.py:118 #, fuzzy msgid "Please select an episode" msgstr "Seleziona episodi" #: src/gpodder/gtkui/interface/addpodcast.py:74 msgid "Nothing to paste." msgstr "Niente da incollare." #: src/gpodder/gtkui/interface/addpodcast.py:74 msgid "Clipboard is empty" msgstr "Gli appunti sono vuoti" #: src/gpodder/gtkui/interface/common.py:160 msgid "Username" msgstr "Nome utente" #: src/gpodder/gtkui/interface/common.py:163 msgid "New user" msgstr "Nuovo utente" #: src/gpodder/gtkui/interface/common.py:170 msgid "Login" msgstr "Login" #: src/gpodder/gtkui/interface/common.py:172 msgid "Authentication required" msgstr "Autenticazione richiesta" #: src/gpodder/gtkui/interface/common.py:203 msgid "Password" msgstr "Password" #: src/gpodder/gtkui/interface/common.py:225 msgid "Select destination" msgstr "Selezionare la destinazione" #: src/gpodder/gtkui/interface/configeditor.py:34 msgid "Setting" msgstr "Impostazione" #: src/gpodder/gtkui/interface/configeditor.py:41 msgid "Set to" msgstr "Imposta a" #: src/gpodder/gtkui/interface/configeditor.py:81 #, python-format msgid "Cannot set %(field)s to %(value)s. Needed data type: %(datatype)s" msgstr "" "Impossibile impostare %(field)s a %(value)s. Tipo di dato richiesto: " "%(datatype)s" #: src/gpodder/gtkui/interface/configeditor.py:85 msgid "Error setting option" msgstr "Errore nell'impostazione dell'opzione" #: src/gpodder/gtkui/desktop/channel.py:100 msgid "Add section" msgstr "Aggiungi sezione" #: src/gpodder/gtkui/desktop/channel.py:100 msgid "New section:" msgstr "Nuovo sezione:" #: src/gpodder/gtkui/desktop/channel.py:133 msgid "Select new podcast cover artwork" msgstr "Seleziona una nuova copertina per il podcast" #: src/gpodder/gtkui/desktop/channel.py:161 msgid "You can only drop a single image or URL here." msgstr "Puoi inserire una sola immagine o indirizzo qui." #: src/gpodder/gtkui/desktop/channel.py:161 #: src/gpodder/gtkui/desktop/channel.py:171 msgid "Drag and drop" msgstr "Drag & drop" #: src/gpodder/gtkui/desktop/channel.py:171 msgid "You can only drop local files and http:// URLs here." msgstr "Puoi inserire solo file locali e indirizzi http:// qui." #: src/gpodder/gtkui/desktop/deviceplaylist.py:98 #, python-format msgid "Folder %s could not be created." msgstr "La cartella %s non puУВ essere creata." #: src/gpodder/gtkui/desktop/deviceplaylist.py:98 msgid "Error writing playlist" msgstr "Errore scrittura playlist" #: src/gpodder/gtkui/desktop/episodeselector.py:288 #: share/gpodder/ui/gtk/gpodderepisodeselector.ui.h:2 msgid "Select all" msgstr "Seleziona tutti" #: src/gpodder/gtkui/desktop/episodeselector.py:292 #: share/gpodder/ui/gtk/gpodderepisodeselector.ui.h:3 msgid "Select none" msgstr "Deseleziona tutti" #: src/gpodder/gtkui/desktop/episodeselector.py:324 msgid "Nothing selected" msgstr "Nessun episodio selezionato." #: src/gpodder/gtkui/desktop/episodeselector.py:325 #, python-format msgid "%(count)d episode" msgid_plural "%(count)d episodes" msgstr[0] "%(count)d episodio" msgstr[1] "%(count)d episodi" #: src/gpodder/gtkui/desktop/episodeselector.py:327 #, python-format msgid "size: %s" msgstr "dimensione: %s" #: src/gpodder/gtkui/desktop/podcastdirectory.py:238 #, fuzzy msgid "Loading podcasts" msgstr "Aggiunta dei podcast" #: src/gpodder/gtkui/desktop/podcastdirectory.py:239 #, fuzzy msgid "Please wait while the podcast list is downloaded" msgstr "Attendi mentre il podcast viene eliminato" #: src/gpodder/gtkui/desktop/preferences.py:51 #: src/gpodder/gtkui/desktop/preferences.py:93 msgid "Do nothing" msgstr "Non fare nulla" #: src/gpodder/gtkui/desktop/preferences.py:52 msgid "Show episode list" msgstr "Mostra la lista degli episodi" #: src/gpodder/gtkui/desktop/preferences.py:53 msgid "Add to download list" msgstr "Aggiungi alla lista dei download" #: src/gpodder/gtkui/desktop/preferences.py:54 msgid "Download immediately" msgstr "Scarica subito" #: src/gpodder/gtkui/desktop/preferences.py:72 msgid "None" msgstr "Nessuno" #: src/gpodder/gtkui/desktop/preferences.py:73 msgid "iPod" msgstr "" #: src/gpodder/gtkui/desktop/preferences.py:74 msgid "Filesystem-based" msgstr "Basato su filesystem" #: src/gpodder/gtkui/desktop/preferences.py:94 msgid "Mark as played" msgstr "Segna come ascoltato" #: src/gpodder/gtkui/desktop/preferences.py:95 msgid "Delete from gPodder" msgstr "Elimina da gPodder" #: src/gpodder/gtkui/desktop/preferences.py:123 #, python-format msgid "Custom (%(format_ids)s)" msgstr "Personalizza (%(format_ids)s)" #: src/gpodder/gtkui/desktop/preferences.py:318 msgid "Name" msgstr "Nome" #: src/gpodder/gtkui/desktop/preferences.py:369 #, fuzzy msgid "Documentation" msgstr "Durata" #: src/gpodder/gtkui/desktop/preferences.py:374 #, fuzzy msgid "Extension info" msgstr "Info modulo estensione" #: src/gpodder/gtkui/desktop/preferences.py:379 msgid "Support the author" msgstr "" #: src/gpodder/gtkui/desktop/preferences.py:413 msgid "Extension cannot be activated" msgstr "Impossibile attivare l'estensione" #: src/gpodder/gtkui/desktop/preferences.py:426 msgid "Extension module info" msgstr "Info modulo estensione" #: src/gpodder/gtkui/desktop/preferences.py:463 msgid "Configure audio player" msgstr "Configura lettore audio" #: src/gpodder/gtkui/desktop/preferences.py:464 #: src/gpodder/gtkui/desktop/preferences.py:474 msgid "Command:" msgstr "Comando:" #: src/gpodder/gtkui/desktop/preferences.py:473 msgid "Configure video player" msgstr "Configura lettore video:" #: src/gpodder/gtkui/desktop/preferences.py:485 #: src/gpodder/gtkui/desktop/preferences.py:503 msgid "manually" msgstr "manualmente" #: src/gpodder/gtkui/desktop/preferences.py:505 #, python-format msgid "after %(count)d day" msgid_plural "after %(count)d days" msgstr[0] "dopo %(count)d giorno" msgstr[1] "dopo %(count)d giorni" #: src/gpodder/gtkui/desktop/preferences.py:541 msgid "Replace subscription list on server" msgstr "Sostituisci la lista delle iscrizioni sul server" #: src/gpodder/gtkui/desktop/preferences.py:542 msgid "" "Remote podcasts that have not been added locally will be removed on the " "server. Continue?" msgstr "" "I podcast remoti che non sono stati aggiunti in locale saranno eliminati dal " "server. Continuare?" #: src/gpodder/gtkui/desktop/preferences.py:621 msgid "Select folder for mount point" msgstr "Seleziona una cartella per il montaggio" #: src/gpodder/gtkui/desktop/preferences.py:638 msgid "Select folder for playlists" msgstr "Seleziona cartella per le playlist" #: src/gpodder/gtkui/desktop/sync.py:86 msgid "No device configured" msgstr "Nessun dispositivo configurato" #: src/gpodder/gtkui/desktop/sync.py:87 msgid "Please set up your device in the preferences dialog." msgstr "Configura il tuo dispositivo nella schermata delle preferenze." #: src/gpodder/gtkui/desktop/sync.py:91 msgid "Cannot open device" msgstr "Impossibile aprire il dispositivo" #: src/gpodder/gtkui/desktop/sync.py:92 msgid "Please check the settings in the preferences dialog." msgstr "Verifica le impostazioni nella schermata delle preferenze." #: src/gpodder/gtkui/desktop/sync.py:139 msgid "Not enough space left on device" msgstr "Non УЈ rimasto abbastanza spazio libero sul dispositivo" #: src/gpodder/gtkui/desktop/sync.py:140 #, python-format msgid "" "Additional free space required: %(required_space)s\n" "Do you want to continue?" msgstr "" "E' necessario spazio libero addizionale: %(required_space)s\n" "Vuoi continuare?" #: src/gpodder/gtkui/desktop/sync.py:199 msgid "Update successful" msgstr "Aggiornamento riuscito" #: src/gpodder/gtkui/desktop/sync.py:200 msgid "The playlist on your MP3 player has been updated." msgstr "La playlist sul lettore MP3 УЈ stata aggiornata." #: src/gpodder/gtkui/desktop/sync.py:274 msgid "Episodes have been deleted on device" msgstr "Gli episodi sono stati cancellati dal dispositivo" #: src/gpodder/gtkui/desktop/sync.py:285 msgid "Error writing playlist files" msgstr "Errore di scrittura playlist" #: src/gpodder/plugins/soundcloud.py:154 msgid "Unknown track" msgstr "Traccia sconosciuta" #: src/gpodder/plugins/soundcloud.py:181 #, python-format msgid "%s on Soundcloud" msgstr "%s su Soundcloud" #: src/gpodder/plugins/soundcloud.py:190 #, python-format msgid "Tracks published by %s on Soundcloud." msgstr "Tracce pubblicate da %s su Soundcloud." #: src/gpodder/plugins/soundcloud.py:217 #, python-format msgid "%s's favorites on Soundcloud" msgstr "I preferiti di %s su Soundcloud" #: src/gpodder/plugins/soundcloud.py:223 #, python-format msgid "Tracks favorited by %s on Soundcloud." msgstr "Tracce preferite di %s su Soundcloud." #: share/gpodder/extensions/audio_converter.py:20 msgid "Convert audio files" msgstr "Converti file audio" #: share/gpodder/extensions/audio_converter.py:21 msgid "Transcode audio files to mp3/ogg" msgstr "Codifica in file audio mp3/ogg " #: share/gpodder/extensions/audio_converter.py:84 #: share/gpodder/extensions/video_converter.py:86 #, python-format msgid "Convert to %(format)s" msgstr "Converti in %(format)s" #: share/gpodder/extensions/audio_converter.py:111 #: share/gpodder/extensions/rockbox_convert2mp4.py:65 #: share/gpodder/extensions/video_converter.py:111 msgid "File converted" msgstr "File convertito" #: share/gpodder/extensions/audio_converter.py:114 #: share/gpodder/extensions/video_converter.py:114 msgid "Conversion failed" msgstr "Conversione non riuscita" #: share/gpodder/extensions/concatenate_videos.py:20 #: share/gpodder/extensions/concatenate_videos.py:100 #, fuzzy msgid "Concatenate videos" msgstr "Converti file video" #: share/gpodder/extensions/concatenate_videos.py:21 #, fuzzy msgid "Add a context menu item for concatenating multiple videos" msgstr "" "Aggiungi al menУЙ contestuale del lettore riferimento agli episodi in coda" #: share/gpodder/extensions/concatenate_videos.py:37 msgid "Save video" msgstr "" #: share/gpodder/extensions/concatenate_videos.py:66 #, fuzzy msgid "Concatenating video files" msgstr "Converti file video" #: share/gpodder/extensions/concatenate_videos.py:67 #, python-format msgid "Writing %(filename)s" msgstr "" #: share/gpodder/extensions/concatenate_videos.py:78 msgid "Videos successfully converted" msgstr "" #: share/gpodder/extensions/concatenate_videos.py:79 #, fuzzy msgid "Error converting videos" msgstr "Errore nella conversione del file." #: share/gpodder/extensions/concatenate_videos.py:80 msgid "Concatenation result" msgstr "" #: share/gpodder/extensions/enqueue_in_mediaplayer.py:16 msgid "Enqueue in media players" msgstr "Metti in coda nel lettore multimediale" #: share/gpodder/extensions/enqueue_in_mediaplayer.py:17 msgid "" "Add a context menu item for enqueueing episodes in installed media players" msgstr "" "Aggiungi al menУЙ contestuale del lettore riferimento agli episodi in coda" #: share/gpodder/extensions/enqueue_in_mediaplayer.py:35 msgid "Enqueue in" msgstr "Accoda a" #: share/gpodder/extensions/episode_website_context_menu.py:14 msgid "\"Open website\" episode context menu" msgstr "" #: share/gpodder/extensions/episode_website_context_menu.py:15 #, fuzzy msgid "Add a context menu item for opening the website of an episode" msgstr "" "Aggiungi al menУЙ contestuale del lettore riferimento agli episodi in coda" #: share/gpodder/extensions/episode_website_context_menu.py:30 #, fuzzy msgid "Open website" msgstr "Sito Web:" #: share/gpodder/extensions/gtk_statusicon.py:14 msgid "Gtk Status Icon" msgstr "Icona di stato Gtk" #: share/gpodder/extensions/gtk_statusicon.py:15 msgid "Show a status icon for Gtk-based Desktops." msgstr "Mostra un'icona di stato per i desktop basati su Gtk." #: share/gpodder/extensions/minimize_on_start.py:10 msgid "Minimize on start" msgstr "Minimizzza all'avvio" #: share/gpodder/extensions/minimize_on_start.py:11 msgid "Minimizes the gPodder window on startup." msgstr "Minimizzza la finestra di gPodder all'avvio." #: share/gpodder/extensions/mpris-listener.py:33 msgid "MPRIS Listener" msgstr "" #: share/gpodder/extensions/mpris-listener.py:34 msgid "Convert MPRIS notifications to gPodder Media Player D-Bus API" msgstr "" #: share/gpodder/extensions/normalize_audio.py:21 msgid "Normalize audio with re-encoding" msgstr "Normalizza audio tramite ricodifica" #: share/gpodder/extensions/normalize_audio.py:22 msgid "Normalize the volume of audio files with normalize-audio" msgstr "Livella il volume dei file audio con normalizzatore-audio" #: share/gpodder/extensions/normalize_audio.py:99 msgid "File normalized" msgstr "File normalizzato" #: share/gpodder/extensions/rename_download.py:16 msgid "Rename episodes after download" msgstr "Rinomina episodi dopo il download" #: share/gpodder/extensions/rename_download.py:17 msgid "Rename episodes to \".\" on download" msgstr "" "Rinomina episodi in \".\" dopo il download" #: share/gpodder/extensions/rm_ogg_cover.py:37 msgid "Remove cover art from OGG files" msgstr "Rimuovi copertina dai file OGG" #: share/gpodder/extensions/rm_ogg_cover.py:38 msgid "removes coverart from all downloaded ogg files" msgstr "Rimuovi la copertina da tutti i download dei file ogg" #: share/gpodder/extensions/rm_ogg_cover.py:66 msgid "Remove cover art" msgstr "Rimuovi copertina" #: share/gpodder/extensions/rockbox_convert2mp4.py:26 msgid "Convert video files to MP4 for Rockbox" msgstr "Converti file video in MP4 per Rockbox" #: share/gpodder/extensions/rockbox_convert2mp4.py:27 msgid "Converts all videos to a Rockbox-compatible format" msgstr "Converti tutti i video in un formato compatibile con Rockbox" #: share/gpodder/extensions/sonos.py:19 share/gpodder/extensions/sonos.py:78 msgid "Stream to Sonos" msgstr "Invia a Sonos" #: share/gpodder/extensions/sonos.py:20 msgid "Stream podcasts to Sonos speakers" msgstr "Invia streaming podcast ad altoparlanti Sonos" #: share/gpodder/extensions/tagging.py:45 msgid "Tag downloaded files using Mutagen" msgstr "Tagga i file scaricati utilizzando Mutagen" #: share/gpodder/extensions/tagging.py:46 msgid "Add episode and podcast titles to MP3/OGG tags" msgstr "Aggiungi i titoli degli episodi e podcast ai tag MP3/OGG" #: share/gpodder/extensions/taskbar_progress.py:28 msgid "Show download progress on the taskbar" msgstr "Mostra progresso dei download nella barra" #: share/gpodder/extensions/taskbar_progress.py:29 msgid "Displays the progress on the Windows taskbar." msgstr "Visualizza avanzamento nella barra di Windows." #: share/gpodder/extensions/ted_subtitles.py:16 msgid "Subtitle Downloader for TED Talks" msgstr "Scarica sottotitoli per TED Talks" #: share/gpodder/extensions/ted_subtitles.py:17 msgid "Downloads .srt subtitles for TED Talks Videos" msgstr "Scarica sottotitoli con estensione .str per video TED Talks" #: share/gpodder/extensions/ubuntu_appindicator.py:10 msgid "Ubuntu App Indicator" msgstr "Indicatore Applicazione Ubuntu" #: share/gpodder/extensions/ubuntu_appindicator.py:11 msgid "Show a status indicator in the top bar." msgstr "Mostra indicatore di stato nella barra in alto." #: share/gpodder/extensions/ubuntu_appindicator.py:47 msgid "Show main window" msgstr "Mostra finestra principale" #: share/gpodder/extensions/ubuntu_appindicator.py:57 #: share/gpodder/ui/gtk/gpodder.ui.h:6 msgid "Quit" msgstr "Esci" #: share/gpodder/extensions/ubuntu_unity.py:10 msgid "Ubuntu Unity Integration" msgstr "UnitУ  d'Integrazione Ubuntu" #: share/gpodder/extensions/ubuntu_unity.py:11 msgid "Show download progress in the Unity Launcher icon." msgstr "Mostra progresso dei download nell'icona." #: share/gpodder/extensions/update_feeds_on_startup.py:14 msgid "Search for new episodes on startup" msgstr "All'avvio cerca nuovi episodi" #: share/gpodder/extensions/update_feeds_on_startup.py:15 msgid "Starts the search for new episodes on startup" msgstr "All'avvio esegui la ricerca di nuovi episodi" #: share/gpodder/extensions/video_converter.py:22 msgid "Convert video files" msgstr "Converti file video" #: share/gpodder/extensions/video_converter.py:23 msgid "Transcode video files to avi/mp4/m4v" msgstr "Codifica in file video avi/mp4m4v " #: share/gpodder/ui/gtk/gpodderaddpodcast.ui.h:1 msgid "Add a new podcast" msgstr "Aggiung un nuovo podcast" #: share/gpodder/ui/gtk/gpodderaddpodcast.ui.h:2 msgid "URL:" msgstr "Indirizzo:" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:1 msgid "gPodder Podcast Editor" msgstr "Editor dei Podcast di gPodder" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:2 msgid "Section:" msgstr "Sezione:" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:3 msgid "Disable feed updates (pause subscription)" msgstr "Disabilita aggiornamento dei feed (sottoscrizione sospesa)" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:4 msgid "Synchronize to MP3 player devices" msgstr "Sincronizza con lettori MP3" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:5 msgid "Strategy:" msgstr "Strategia: " #: share/gpodder/ui/gtk/gpodderchannel.ui.h:6 #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:6 msgid "General" msgstr "Generale" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:7 msgid "HTTP/FTP Authentication" msgstr "Autenticazione HTTP/FTP" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:8 #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:13 msgid "Username:" msgstr "Nome utente:" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:9 #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:14 msgid "Password:" msgstr "Password:" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:10 msgid "Locations" msgstr "Posizioni" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:11 msgid "Download to:" msgstr "Scarica in:" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:12 msgid "Website:" msgstr "Sito Web:" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:13 msgid "website label" msgstr "etichetta del sito" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:14 msgid "Advanced" msgstr "Avanzato" #: share/gpodder/ui/gtk/gpodderconfigeditor.ui.h:1 msgid "gPodder Configuration Editor" msgstr "Editor della Configurazione di gPodder" #: share/gpodder/ui/gtk/gpodderconfigeditor.ui.h:2 msgid "Search for:" msgstr "Cerca:" #: share/gpodder/ui/gtk/gpodderconfigeditor.ui.h:3 msgid "Show All" msgstr "Mostra Tutto" #: share/gpodder/ui/gtk/gpodderepisodeselector.ui.h:1 msgid "Select episodes" msgstr "Seleziona episodi" #: share/gpodder/ui/gtk/gpodderpodcastdirectory.ui.h:1 msgid "Find new podcasts" msgstr "Trova nuovi podcast" #: share/gpodder/ui/gtk/gpodderpodcastdirectory.ui.h:2 msgid "Select All" msgstr "Seleziona Tutti" #: share/gpodder/ui/gtk/gpodderpodcastdirectory.ui.h:3 msgid "Select None" msgstr "Seleziona Nessuno" #: share/gpodder/ui/gtk/gpodderpodcastdirectory.ui.h:4 msgid "label" msgstr "" #: share/gpodder/ui/gtk/gpodderpodcastdirectory.ui.h:5 msgid "..." msgstr "" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:1 #: share/gpodder/ui/gtk/gpodder.ui.h:5 msgid "Preferences" msgstr "Preferenze" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:2 msgid "Audio player:" msgstr "Riproduttore audio:" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:3 msgid "Video player:" msgstr "Riproduttore video:" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:4 msgid "\"All episodes\" in podcast list" msgstr "\"Tutti gli episodi\" nella lista degli episodi" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:5 msgid "Use sections for podcast list" msgstr "Usa le sezioni per la lista dei podcast" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:7 #, fuzzy msgid "Preferred YouTube format:" msgstr "Formato video preferito: " #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:8 msgid "YouTube API key (v3):" msgstr "" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:9 #, fuzzy msgid "Preferred Vimeo format:" msgstr "Formato video preferito: " #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:11 msgid "Extensions" msgstr "Estensioni" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:12 msgid "Synchronize subscriptions and episode actions" msgstr "Sincronizza le iscrizioni e le azioni sugli episodi" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:15 msgid "Replace list on server with local subscriptions" msgstr "Sostituisci la lista sul server con le iscrizioni in locale" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:16 msgid "Device name:" msgstr "Nome del dispositivo:" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:17 msgid "gpodder.net" msgstr "gpodder.net" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:18 msgid "Update interval:" msgstr "Intervallo di aggiornamento:" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:19 msgid "Maximum number of episodes per podcast:" msgstr "Massimo numero di episodi per podcast:" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:20 msgid "When new episodes are found:" msgstr "Quando vengono trovati nuovi episodi:" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:21 msgid "Updating" msgstr "Aggiornamento" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:22 msgid "Delete played episodes:" msgstr "Elimina gli episodi riprodotti:" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:23 msgid "Remove played episodes even if unfinished" msgstr "Elimina episodi riprodotti anche se non del tutto" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:24 msgid "Also remove unplayed episodes" msgstr "Elimina anche gli episodi non riprodotti" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:25 msgid "Clean-up" msgstr "Pulizia" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:26 msgid "Device type:" msgstr "Tipo di dispositivo:" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:27 msgid "Mountpoint:" msgstr "Mountpoint:" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:28 msgid "After syncing an episode:" msgstr "Dopo la sincronizzazione di un episodio:" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:29 msgid "Create playlists on device" msgstr "Crea playlist sull'unitУ  " #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:30 msgid "Playlists Folder:" msgstr "Cartella Playlist: " #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:31 msgid "Remove episodes deleted on device from gPodder" msgstr "Elimina da gPodder gli episodi cancellati sul dispositivo" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:32 msgid "Only sync unplayed episodes" msgstr "Sincronizza solo gli episodi non ascoltati" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:33 msgid "Devices" msgstr "Dispositivi" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:34 msgid "Edit config" msgstr "Modifica configurazione" #: share/gpodder/ui/gtk/gpodder.ui.h:1 msgid "_Podcasts" msgstr "_Podcast" #: share/gpodder/ui/gtk/gpodder.ui.h:2 msgid "Check for new episodes" msgstr "Cerca nuovi episodi" #: share/gpodder/ui/gtk/gpodder.ui.h:3 msgid "Download new episodes" msgstr "Scarica nuovi episodi" #: share/gpodder/ui/gtk/gpodder.ui.h:7 msgid "_Subscriptions" msgstr "I_scrizioni" #: share/gpodder/ui/gtk/gpodder.ui.h:8 msgid "Discover new podcasts" msgstr "Trova nuovi podcast" #: share/gpodder/ui/gtk/gpodder.ui.h:9 msgid "Add podcast via URL" msgstr "Aggiunta di podcast tramite URL" #: share/gpodder/ui/gtk/gpodder.ui.h:11 msgid "Unsubscribe" msgstr "Elimina iscrizione" #: share/gpodder/ui/gtk/gpodder.ui.h:14 msgid "Import from OPML file" msgstr "Importa da file OPML" #: share/gpodder/ui/gtk/gpodder.ui.h:15 msgid "Export to OPML file" msgstr "Esporta su file OPML" #: share/gpodder/ui/gtk/gpodder.ui.h:16 msgid "Go to gpodder.net" msgstr "Vai su gpodder.net" #: share/gpodder/ui/gtk/gpodder.ui.h:17 msgid "_Episodes" msgstr "_Episodi" #: share/gpodder/ui/gtk/gpodder.ui.h:18 msgid "Play" msgstr "Riproduci" #: share/gpodder/ui/gtk/gpodder.ui.h:19 msgid "Open" msgstr "Apri" #: share/gpodder/ui/gtk/gpodder.ui.h:22 msgid "Delete" msgstr "Elimina" #: share/gpodder/ui/gtk/gpodder.ui.h:23 msgid "Toggle new status" msgstr "Cambia stato Nuovo/Riprodotto" #: share/gpodder/ui/gtk/gpodder.ui.h:24 msgid "Change delete lock" msgstr "Modifica blocco di cancellazione" #: share/gpodder/ui/gtk/gpodder.ui.h:26 msgid "E_xtras" msgstr "E_xtra" #: share/gpodder/ui/gtk/gpodder.ui.h:27 msgid "Sync to device" msgstr "Sincronizza con il dispositivo" #: share/gpodder/ui/gtk/gpodder.ui.h:28 #, fuzzy msgid "Update YouTube subscriptions" msgstr "Nessuna iscrizione" #: share/gpodder/ui/gtk/gpodder.ui.h:29 msgid "_View" msgstr "_Visualizza" #: share/gpodder/ui/gtk/gpodder.ui.h:30 msgid "Toolbar" msgstr "Barra degli Strumenti" #: share/gpodder/ui/gtk/gpodder.ui.h:31 msgid "Episode descriptions" msgstr "Descrizioni degli episodi" #: share/gpodder/ui/gtk/gpodder.ui.h:33 msgid "Hide deleted episodes" msgstr "Nascondi episodi eliminati" #: share/gpodder/ui/gtk/gpodder.ui.h:34 msgid "Downloaded episodes" msgstr "Episodi scaricati" #: share/gpodder/ui/gtk/gpodder.ui.h:35 msgid "Unplayed episodes" msgstr "Episodi non riprodotti" #: share/gpodder/ui/gtk/gpodder.ui.h:36 msgid "Hide podcasts without episodes" msgstr "Nascondi podcast senza episodi" #: share/gpodder/ui/gtk/gpodder.ui.h:37 msgid "_Help" msgstr "_Aiuto" #: share/gpodder/ui/gtk/gpodder.ui.h:38 msgid "User manual" msgstr "Manuale utente online" #: share/gpodder/ui/gtk/gpodder.ui.h:39 msgid "Software updates" msgstr "Aggiornamento programma" #: share/gpodder/ui/gtk/gpodder.ui.h:40 msgid "Filter:" msgstr "Filtro:" #: share/gpodder/ui/gtk/gpodder.ui.h:41 msgid "Podcasts" msgstr "Podcast" #: share/gpodder/ui/gtk/gpodder.ui.h:42 msgid "Limit rate to" msgstr "Limita la velocitУ  a" #: share/gpodder/ui/gtk/gpodder.ui.h:43 msgid "KiB/s" msgstr "KiB/s" #: share/gpodder/ui/gtk/gpodder.ui.h:44 msgid "Limit downloads to" msgstr "Limita gli scaricamenti a" #: share/gpodder/ui/gtk/gpodderwelcome.ui.h:2 msgid "Welcome to gPodder" msgstr "Benvenuto in gPodder" #: share/gpodder/ui/gtk/gpodderwelcome.ui.h:3 msgid "Your podcast list is empty." msgstr "La tua lista dei podcast УЈ vuota." #: share/gpodder/ui/gtk/gpodderwelcome.ui.h:4 msgid "Choose from a list of example podcasts" msgstr "Scegli da una lista di podcast d'esempio" #: share/gpodder/ui/gtk/gpodderwelcome.ui.h:5 msgid "Add a podcast by entering its URL" msgstr "Aggiungi un podcast tramite il suo URL " #: share/gpodder/ui/gtk/gpodderwelcome.ui.h:6 msgid "Restore my subscriptions from gpodder.net" msgstr "Ripristina le mie sottoscrizioni da gpodder.net" #: bin/gpo:266 msgid "Podcast update requested by extensions." msgstr "Aggiornamento podcast richiesto dall'estensione." #: bin/gpo:270 msgid "Episode download requested by extensions." msgstr "Download dell'episodio richiesto dall'estensione." #: bin/gpo:323 #, python-format msgid "Invalid url: %s" msgstr "URL non valido: %s" #: bin/gpo:340 bin/gpo:416 bin/gpo:450 bin/gpo:582 bin/gpo:597 bin/gpo:717 #, python-format msgid "You are not subscribed to %s." msgstr "Non hai sottoscritto %s." #: bin/gpo:346 #, python-format msgid "Already subscribed to %s." msgstr "GiУ  sottoscritto a %s." #: bin/gpo:352 #, python-format msgid "Cannot subscribe to %s." msgstr "Impossibile sottoscrivere %s." #: bin/gpo:368 #, python-format msgid "Successfully added %s." msgstr "Aggiunto con successo %s." #: bin/gpo:386 msgid "This configuration option does not exist." msgstr "Questa opzione di configurazione non esiste." #: bin/gpo:390 msgid "Can only set leaf configuration nodes." msgstr "Puoi solo impostare la configurazione dei nodi." #: bin/gpo:404 #, python-format msgid "Renamed %(old_title)s to %(new_title)s." msgstr "Renaminati %(old_title)s in %(new_title)s." #: bin/gpo:420 #, python-format msgid "Unsubscribed from %s." msgstr "Elimina sottoscrizione da %s." #: bin/gpo:494 msgid "Updates disabled" msgstr "Aggiornamenti disabilitati" #: bin/gpo:505 #, python-format msgid "%(count)d new episode" msgid_plural "%(count)d new episodes" msgstr[0] "%(count)d episodio nuovo" msgstr[1] "%(count)d episodi nuovi" #: bin/gpo:511 msgid "Checking for new episodes" msgstr "Ricerca nuovi episodi..." #: bin/gpo:520 #, python-format msgid "Skipping %(podcast)s" msgstr "Salta %(podcast)s" #: bin/gpo:588 #, python-format msgid "Disabling feed update from %s." msgstr "Disalita aggiornamenti feed da %s." #: bin/gpo:603 #, python-format msgid "Enabling feed update from %s." msgstr "Abilita addiornamenti feed da %s." #: bin/gpo:616 #, python-format msgid "Please register a YouTube API key and set it using %(command)s." msgstr "" #: bin/gpo:643 #, fuzzy, python-format msgid "Changing: %(old_url)s => %(new_url)s" msgstr "Cambiato URL da %(old_url)s in %(new_url)s." #: bin/gpo:653 #, fuzzy msgid "Nothing to fix" msgstr "Niente da esportare" #: bin/gpo:672 msgid "No podcasts found." msgstr "Nessun podcast trovato." #: bin/gpo:686 msgid "Enter index to subscribe, ? for list" msgstr "Inserire indice da sottoscrivere, ? per la lista" #: bin/gpo:700 bin/gpo:704 msgid "Invalid value." msgstr "Valore non valido" #: bin/gpo:721 #, python-format msgid "Invalid URL: %s" msgstr "URL non valido: %s" #: bin/gpo:724 #, python-format msgid "Changed URL from %(old_url)s to %(new_url)s." msgstr "Cambiato URL da %(old_url)s in %(new_url)s." #: bin/gpo:782 #, python-format msgid "Syntax error: %(error)s" msgstr "Errore di Sintassi: %(error)s" #: bin/gpo:876 msgid "Ambiguous command. Did you mean.." msgstr "Comando ambiguo. Si ntendeva..." #: bin/gpo:880 msgid "The requested function is not available." msgstr "La funzione richiesta non УЈ disponibile." #: bin/gpodder:105 msgid "print logging output on the console" msgstr "Stampa dati di login sulla console" #: bin/gpodder:108 msgid "subscribe to the feed at URL" msgstr "Sottoscrivi feedi all' URL" #: bin/gpodder:113 msgid "Mac OS X application process number" msgstr "Numero processo applicazione di Mac OS X" #: share/applications/gpodder.desktop.in.h:2 msgid "gPodder Podcast Client" msgstr "Client per Podcast gPodder" #: share/applications/gpodder.desktop.in.h:3 msgid "Podcast Client" msgstr "Lista Podcast" #: share/applications/gpodder.desktop.in.h:4 msgid "Subscribe to audio and video content from the web" msgstr "Sottoscrivere contenuti audio e video da internet" #: share/applications/gpodder-url-handler.desktop.in.h:1 #, fuzzy msgid "gPodder (subscribe to feed)" msgstr "Sottoscrivi feedi all' URL" gpodder-3.9.0/po/el.po0000644000016000001710000020771212654461625015663 0ustar jenkinsjenkins00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # # Translators: # , 2011. # Konstantinos Georgokitsos , 2012. # Teo , 2011-2012. msgid "" msgstr "" "Project-Id-Version: gPodder\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2016-02-03 20:31+0000\n" "PO-Revision-Date: 2013-01-19 12:30+0000\n" "Last-Translator: Teo \n" "Language-Team: Greek (http://www.transifex.com/projects/p/gpodder/language/" "el/)\n" "Language: el\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" #: src/gpodder/config.py:55 #, python-format msgid "gPodder on %s" msgstr "ЮЄЮП gPodder ЯƒЯ„ЮП %s" #: src/gpodder/directory.py:95 #, fuzzy msgid "gpodder.net search" msgstr "gpodder.net" #: src/gpodder/directory.py:104 #, fuzzy msgid "OPML from web" msgstr "Ю‘ЯЯ‡ЮЕЮЏЮБ OPML" #: src/gpodder/directory.py:113 #, fuzzy msgid "OPML file" msgstr "Ю‘ЯЯ‡ЮЕЮЏЮБ OPML" #: src/gpodder/directory.py:122 share/gpodder/ui/gtk/gpodderwelcome.ui.h:1 msgid "Getting started" msgstr "ЮžЮЕЮКЮЙЮНЮЎЯƒЯ„ЮЕ" #: src/gpodder/directory.py:131 #, fuzzy msgid "gpodder.net Top 50" msgstr "gpodder.net" #: src/gpodder/directory.py:140 #, fuzzy msgid "gpodder.net Tags" msgstr "gpodder.net" #: src/gpodder/directory.py:152 #, fuzzy msgid "Soundcloud search" msgstr "%s ЯƒЯ„ЮП Soundcloud" #: src/gpodder/directory.py:165 #, fuzzy msgid "Imported OPML file" msgstr "Ю•ЮЙЯƒЮБЮГЯ‰ЮГЮЎ ЮБЯ€ЯŒ ЮБЯЯ‡ЮЕЮЏЮП OPML" #: src/gpodder/download.py:329 msgid "Wrong username/password" msgstr "Ю›ЮЌЮИЮПЯ‚ ЯŒЮНЮПЮМЮБ Я‡ЯЮЎЯƒЯ„ЮЗ/ЮКЯ‰ЮДЮЙЮКЯŒЯ‚ Я€ЯЯŒЯƒЮВЮБЯƒЮЗЯ‚" #: src/gpodder/download.py:527 src/gpodder/sync.py:924 msgid "Added" msgstr "Ю ЯЮПЯƒЯ„Ю­ЮИЮЗЮКЮЕ" #: src/gpodder/download.py:527 src/gpodder/sync.py:924 msgid "Queued" msgstr "ЮЃЮЕ ЮБЮНЮБЮМЮПЮНЮЎ" #: src/gpodder/download.py:527 src/gpodder/gtkui/model.py:327 msgid "Downloading" msgstr "Ю›ЮЎЯˆЮЗ" #: src/gpodder/download.py:528 src/gpodder/model.py:721 #: src/gpodder/sync.py:925 msgid "Finished" msgstr "ЮЄЮЕЮЛЮЕЮЏЯ‰ЯƒЮЕ" #: src/gpodder/download.py:528 src/gpodder/sync.py:925 msgid "Failed" msgstr "Ю‘Я€Ю­Я„Я…Я‡ЮЕ" #: src/gpodder/download.py:528 src/gpodder/sync.py:925 msgid "Cancelled" msgstr "Ю‘ЮКЯ…ЯЯŽЮИЮЗЮКЮЕ" #: src/gpodder/download.py:528 src/gpodder/sync.py:925 msgid "Paused" msgstr "Ю ЮБЯЯƒЮЗ" #: src/gpodder/download.py:862 msgid "Missing content from server" msgstr "Ю›ЮЕЮЏЯ€ЮЕЮЙ Я€ЮЕЯЮЙЮЕЯ‡ЯŒЮМЮЕЮНЮП ЮБЯ€ЯŒ Я„ЮПЮН ЮДЮЙЮБЮКЮПЮМЮЙЯƒЯ„ЮЎ" #: src/gpodder/download.py:868 #, python-format msgid "I/O Error: %(error)s: %(filename)s" msgstr "ЮЃЯ†ЮЌЮЛЮМЮБ I/O: %(error)s: %(filename)s" #: src/gpodder/download.py:875 #, python-format msgid "HTTP Error %(code)s: %(message)s" msgstr "ЮЃЯ†ЮЌЮЛЮМЮБ HTTP %(code)s: %(message)s" #: src/gpodder/download.py:879 src/gpodder/sync.py:1081 #, python-format msgid "Error: %s" msgstr "ЮЃЯ†ЮЌЮЛЮМЮБ: %s" #: src/gpodder/extensions.py:55 msgid "Desktop Integration" msgstr "" #: src/gpodder/extensions.py:56 #, fuzzy msgid "Interface" msgstr "Ю‘ЮКЮ­ЯЮБЮЙЮПЯ‚ ЮБЯЮЙЮИЮМЯŒЯ‚" #: src/gpodder/extensions.py:57 #, fuzzy msgid "Post download" msgstr "Ю ЮБЯЯƒЮЗ ЮЛЮЎЯˆЮЗЯ‚" #: src/gpodder/extensions.py:59 src/gpodder/model.py:779 #: src/gpodder/model.py:1225 msgid "Other" msgstr "Ю†ЮЛЮЛЮП" #: src/gpodder/extensions.py:100 msgid "No description for this extension." msgstr "Ю”ЮЕЮН Я…Я€ЮЌЯЯ‡ЮЕЮЙ Я€ЮЕЯЮЙЮГЯЮБЯ†ЮЎ ЮГЮЙЮБ ЮБЯ…Я„ЮЎ Я„ЮЗЮН ЮЕЯ€Ю­ЮКЯ„ЮБЯƒЮЗ." #: src/gpodder/extensions.py:212 #, python-format msgid "Command not found: %(command)s" msgstr "Ю”ЮЕЮН ЮВЯЮ­ЮИЮЗЮКЮЕ ЮЗ ЮЕЮНЯ„ЮПЮЛЮЎ: %(command)s" #: src/gpodder/extensions.py:228 #, python-format msgid "Need at least one of the following commands: %(list_of_commands)s" msgstr "" #: src/gpodder/extensions.py:265 #, fuzzy, python-format msgid "Python module not found: %(module)s" msgstr "ЮЄЮП python module \"%s\" ЮДЮЕЮН ЮЕЮЏЮНЮБЮЙ ЮЕЮГЮКЮБЯ„ЮЕЯƒЯ„ЮЗЮМЮ­ЮНЮП" #: src/gpodder/model.py:446 src/gpodder/plugins/soundcloud.py:156 msgid "No description available" msgstr "Ю”ЮЕЮН Я…Я€ЮЌЯЯ‡ЮЕЮЙ ЮДЮЙЮБЮИЮ­ЯƒЮЙЮМЮЗ Я€ЮЕЯЮЙЮГЯЮБЯ†ЮЎ" #: src/gpodder/model.py:679 msgid "unknown" msgstr "ЮЌЮГЮНЯ‰ЯƒЯ„ЮП" #: src/gpodder/model.py:746 msgid "Default" msgstr "" #: src/gpodder/model.py:747 msgid "Only keep latest" msgstr "" #: src/gpodder/model.py:1208 src/gpodder/model.py:1223 #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:10 msgid "Video" msgstr "Ю’ЮЏЮНЯ„ЮЕЮП" #: src/gpodder/model.py:1221 msgid "Audio" msgstr "Ю‰Я‡ЮПЯ‚" #: src/gpodder/my.py:174 #, python-format msgid "Add %s" msgstr "Ю ЯЮПЯƒЮИЮЎЮКЮЗ %s" #: src/gpodder/my.py:176 #, python-format msgid "Remove %s" msgstr "Ю‘Я†ЮБЮЏЯЮЕЯƒЮЗ %s" #: src/gpodder/sync.py:196 msgid "Cancelled by user" msgstr "Ю‘ЮКЯ…ЯЯŽЮИЮЗЮКЮЕ ЮБЯ€ЯŒ Я„ЮП Я‡ЯЮЎЯƒЯ„ЮЗ" #: src/gpodder/sync.py:199 msgid "Writing data to disk" msgstr "Ю•ЮГЮГЯЮБЯ†ЮЎ ЮДЮЕЮДЮПЮМЮ­ЮНЯ‰ЮН ЯƒЯ„ЮП ЮДЮЏЯƒЮКЮП" #: src/gpodder/sync.py:295 msgid "Opening iPod database" msgstr "Ю†ЮНЮПЮЙЮГЮМЮБ Я„ЮЗЯ‚ ЮВЮЌЯƒЮЗЯ‚ ЮДЮЕЮДЮПЮМЮ­ЮНЯ‰ЮН Я„ЮПЯ… iPod" #: src/gpodder/sync.py:305 msgid "iPod opened" msgstr "ЮЄЮП iPod ЮЌЮНЮПЮЙЮОЮЕ" #: src/gpodder/sync.py:316 msgid "Saving iPod database" msgstr "Ю‘Я€ЮПЮИЮЎЮКЮЕЯ…ЯƒЮЗ Я„ЮЗЯ‚ ЮВЮЌЯƒЮЗЯ‚ ЮДЮЕЮДЮПЮМЮ­ЮНЯ‰ЮН Я„ЮПЯ… iPod" #: src/gpodder/sync.py:321 msgid "Writing extended gtkpod database" msgstr "Ю•ЮГЮГЯЮБЯ†ЮЎ ЮЕЮКЯ„ЮЕЯ„ЮБЮМЮ­ЮНЮЗЯ‚ ЮВЮЌЯƒЮЗЯ‚ ЮДЮЕЮДЮПЮМЮ­ЮНЯ‰ЮН Я„ЮПЯ… gtkpod" #: src/gpodder/sync.py:397 src/gpodder/sync.py:680 src/gpodder/sync.py:874 #, python-format msgid "Removing %s" msgstr "Ю‘Я†ЮБЮЏЯЮЕЯƒЮЗ Я„ЮПЯ… %s" #: src/gpodder/sync.py:412 src/gpodder/sync.py:557 #, python-format msgid "Adding %s" msgstr "Ю ЯЮПЯƒЮИЮЎЮКЮЗ Я„ЮПЯ… %s" #: src/gpodder/sync.py:430 #, python-format msgid "Error copying %(episode)s: Not enough free space on %(mountpoint)s" msgstr "" "ЮЃЯ†ЮЌЮЛЮМЮБ ЮКЮБЯ„ЮЌ Я„ЮЗЮН ЮБЮНЯ„ЮЙЮГЯЮБЯ†ЮЎ %(episode)s: Ю”ЮЕЮН Я…Я€ЮЌЯЯ‡ЮЕЮЙ ЮБЯЮКЮЕЯ„ЯŒЯ‚ ЮЕЮЛЮЕЯЮИЮЕЯЮПЯ‚ Я‡ЯŽЯЮПЯ‚ " "ЯƒЯ„ЮП %(mountpoint)s" #: src/gpodder/sync.py:515 msgid "Opening MP3 player" msgstr "Ю†ЮНЮПЮЙЮГЮМЮБ Я„ЮПЯ… ЮБЮНЮБЯ€ЮБЯЮБЮГЯ‰ЮГЮ­ЮБ MP3" #: src/gpodder/sync.py:518 msgid "MP3 player opened" msgstr "ЮŸ ЮБЮНЮБЯ€ЮБЯЮБЮГЯ‰ЮГЮ­ЮБЯ‚ MP3 ЮЌЮНЮПЮЙЮОЮЕ" #: src/gpodder/sync.py:576 #, python-format msgid "" "Not enough space in %(path)s: %(free)s available, but need at least %(need)s" msgstr "" #: src/gpodder/sync.py:603 src/gpodder/sync.py:611 #, python-format msgid "Error opening %(filename)s: %(message)s" msgstr "ЮЃЯ†ЮЌЮЛЮМЮБ ЮКЮБЯ„ЮЌ Я„ЮП ЮЌЮНЮПЮЙЮГЮМЮБ %(filename)s: %(message)s" #: src/gpodder/sync.py:780 src/gpodder/sync.py:786 msgid "MTP device" msgstr "ЮЃЯ…ЯƒЮКЮЕЯ…ЮЎ MTP" #: src/gpodder/sync.py:793 msgid "Opening the MTP device" msgstr "Ю†ЮНЮПЮЙЮГЮМЮБ Я„ЮЗЯ‚ ЯƒЯ…ЯƒЮКЮЕЯ…ЮЎЯ‚ MTP" #: src/gpodder/sync.py:803 #, python-format msgid "%s opened" msgstr "ЮЄЮП %s ЮЌЮНЮПЮЙЮОЮЕ" #: src/gpodder/sync.py:808 #, python-format msgid "Closing %s" msgstr "ЮšЮЛЮЕЮЏЯƒЮЙЮМЮП Я„ЮПЯ… %s" #: src/gpodder/sync.py:816 #, python-format msgid "%s closed" msgstr "ЮЄЮП %s Ю­ЮКЮЛЮЕЮЙЯƒЮЕ" #: src/gpodder/sync.py:821 bin/gpo:708 #, python-format msgid "Adding %s..." msgstr "Ю ЯЮПЯƒЮИЮЎЮКЮЗ Я„ЮПЯ… %s..." #: src/gpodder/sync.py:924 msgid "Synchronizing" msgstr "ЮЃЯ…ЮГЯ‡ЯЮПЮНЮЙЯƒЮМЯŒЯ‚" #: src/gpodder/util.py:429 #, python-format msgid "%(count)d day ago" msgid_plural "%(count)d days ago" msgstr[0] "Ю ЯЮЙЮН ЮБЯ€ЯŒ %(count)d ЮЗЮМЮ­ЯЮБ" msgstr[1] "Ю ЯЮЙЮН ЮБЯ€ЯŒ %(count)d ЮЗЮМЮ­ЯЮЕЯ‚" #: src/gpodder/util.py:508 msgid "Today" msgstr "ЮЃЮЎЮМЮЕЯЮБ" #: src/gpodder/util.py:510 msgid "Yesterday" msgstr "ЮЇЮИЮЕЯ‚" #: src/gpodder/util.py:553 src/gpodder/util.py:556 msgid "(unknown)" msgstr "(ЮЌЮГЮНЯ‰ЯƒЯ„ЮП)" #: src/gpodder/util.py:1193 src/gpodder/util.py:1212 #, python-format msgid "%(count)d second" msgid_plural "%(count)d seconds" msgstr[0] "%(count)d ЮДЮЕЯ…Я„ЮЕЯЯŒЮЛЮЕЯ€Я„ЮП" msgstr[1] "%(count)d ЮДЮЕЯ…Я„ЮЕЯЯŒЮЛЮЕЯ€Я„ЮБ" #: src/gpodder/util.py:1206 #, python-format msgid "%(count)d hour" msgid_plural "%(count)d hours" msgstr[0] "%(count)d ЯŽЯЮБ" msgstr[1] "%(count)d ЯŽЯЮЕЯ‚" #: src/gpodder/util.py:1209 #, python-format msgid "%(count)d minute" msgid_plural "%(count)d minutes" msgstr[0] "%(count)d ЮЛЮЕЯ€Я„ЯŒ" msgstr[1] "%(count)d ЮЛЮЕЯ€Я„ЮЌ" #: src/gpodder/util.py:1215 msgid "and" msgstr "ЮКЮБЮЙ" #: src/gpodder/gtkui/config.py:50 msgid "Integer" msgstr "Ю‘ЮКЮ­ЯЮБЮЙЮПЯ‚ ЮБЯЮЙЮИЮМЯŒЯ‚" #: src/gpodder/gtkui/config.py:52 msgid "Float" msgstr "Float" #: src/gpodder/gtkui/config.py:54 msgid "Boolean" msgstr "Boolean" #: src/gpodder/gtkui/config.py:56 msgid "String" msgstr "String" #: src/gpodder/gtkui/desktopfile.py:70 #, python-format msgid "Command: %s" msgstr "Ю•ЮНЯ„ЮПЮЛЮЎ: %s" #: src/gpodder/gtkui/desktopfile.py:150 msgid "Default application" msgstr "Ю ЯЮПЮЕЯ€ЮЙЮЛЮЕЮГЮМЮ­ЮНЮЗ ЮЕЯ†ЮБЯЮМЮПЮГЮЎ" #: src/gpodder/gtkui/main.py:205 share/applications/gpodder.desktop.in.h:1 msgid "gPodder" msgstr "gPodder" #: src/gpodder/gtkui/main.py:288 msgid "Loading incomplete downloads" msgstr "ЮІЯŒЯЯ„Я‰ЯƒЮЗ ЮМЮЗ ЮПЮЛЮПЮКЮЛЮЗЯЯ‰ЮМЮ­ЮНЯ‰ЮН ЮЛЮЎЯˆЮЕЯ‰ЮН" #: src/gpodder/gtkui/main.py:289 msgid "Some episodes have not finished downloading in a previous session." msgstr "" "Ю”ЮЕЮН Ю­Я‡ЮЕЮЙ ЮПЮЛЮПЮКЮЛЮЗЯЯ‰ЮИЮЕЮЏ ЮЗ ЮЛЮЎЯˆЮЗ ЮПЯЮЙЯƒЮМЮ­ЮНЯ‰ЮН ЮЕЯ€ЮЕЮЙЯƒЮПЮДЮЏЯ‰ЮН ЯƒЮЕ Я€ЯЮПЮЗЮГЮПЯЮМЮЕЮНЮЗ ЯƒЯ…ЮНЮЕЮДЯЮЏЮБ." #: src/gpodder/gtkui/main.py:291 #, python-format msgid "%(count)d partial file" msgid_plural "%(count)d partial files" msgstr[0] "%(count)d ЮБЯ„ЮЕЮЛЮ­Я‚ ЮБЯЯ‡ЮЕЮЏЮП" msgstr[1] "%(count)d ЮБЯ„ЮЕЮЛЮЎ ЮБЯЯ‡ЮЕЮЏЮБ" #: src/gpodder/gtkui/main.py:306 msgid "Resume all" msgstr "ЮЃЯ…ЮНЮ­Я‡ЮЙЯƒЮЗ ЯŒЮЛЯ‰ЮН" #: src/gpodder/gtkui/main.py:316 msgid "Incomplete downloads from a previous session were found." msgstr "Ю’ЯЮ­ЮИЮЗЮКЮБЮН ЮБЯ„ЮЕЮЛЮЕЮЏЯ‚ ЮЛЮЎЯˆЮЕЮЙЯ‚ ЮБЯ€ЯŒ Я€ЯЮПЮЗЮГЮПЯЮМЮЕЮНЮЗ ЯƒЯ…ЮНЮЕЮДЯЮЏЮБ." #: src/gpodder/gtkui/main.py:414 msgid "Action" msgstr "Ю•ЮНЮ­ЯЮГЮЕЮЙЮБ" #: src/gpodder/gtkui/main.py:461 msgid "Confirm changes from gpodder.net" msgstr "Ю•Я€ЮЙЮВЮЕЮВЮБЮЏЯ‰ЯƒЮЗ ЮБЮЛЮЛЮБЮГЯŽЮН ЮБЯ€ЯŒ gpodder.net" #: src/gpodder/gtkui/main.py:462 msgid "Select the actions you want to carry out." msgstr "Ю•Я€ЮЏЮЛЮЕЮОЮЕ Я„ЮЙЯ‚ ЮЕЮНЮ­ЯЮГЮЕЮЙЮЕЯ‚ Я€ЮПЯ… ЮИЮ­ЮЛЮЕЮЙЯ‚ ЮНЮБ Я€ЯЮБЮГЮМЮБЯ„ЮПЯ€ЮПЮЙЮЎЯƒЮЕЮЙЯ‚." #: src/gpodder/gtkui/main.py:502 msgid "Uploading subscriptions" msgstr "ЮœЮЕЯ„ЮБЯ†ЯŒЯЯ„Я‰ЯƒЮЗ ЯƒЯ…ЮНЮДЯЮПЮМЯŽЮН" #: src/gpodder/gtkui/main.py:503 msgid "Your subscriptions are being uploaded to the server." msgstr "ЮŸЮЙ ЯƒЯ…ЮНЮДЯЮПЮМЮ­Я‚ ЯƒЮБЯ‚ ЮМЮЕЯ„ЮБЯ†ЮПЯЯ„ЯŽЮНЮПЮНЯ„ЮБЮЙ ЯƒЯ„ЮП ЮДЮЙЮБЮКЮПЮМЮЙЯƒЯ„ЮЎ." #: src/gpodder/gtkui/main.py:508 msgid "List uploaded successfully." msgstr "Ю— ЮЛЮЏЯƒЯ„ЮБ ЮМЮЕЯ„ЮБЯ†ЮПЯЯ„ЯŽЮИЮЗЮКЮЕ ЮМЮЕ ЮЕЯ€ЮЙЯ„Я…Я‡ЮЏЮБ." #: src/gpodder/gtkui/main.py:515 msgid "Error while uploading" msgstr "ЮЃЯ†ЮЌЮЛЮМЮБ ЮКЮБЯ„ЮЌ Я„ЮЗ ЮМЮЕЯ„ЮБЯ†ЯŒЯЯ„Я‰ЯƒЮЗ" #: src/gpodder/gtkui/main.py:800 src/gpodder/gtkui/main.py:928 #: src/gpodder/gtkui/main.py:2622 src/gpodder/gtkui/main.py:2815 #: src/gpodder/gtkui/desktop/episodeselector.py:132 #: src/gpodder/gtkui/desktop/sync.py:270 msgid "Episode" msgstr "Ю•Я€ЮЕЮЙЯƒЯŒЮДЮЙЮП" #: src/gpodder/gtkui/main.py:819 msgid "Size" msgstr "ЮœЮ­ЮГЮЕЮИЮПЯ‚" #: src/gpodder/gtkui/main.py:824 msgid "Duration" msgstr "Ю”ЮЙЮЌЯЮКЮЕЮЙЮБ" #: src/gpodder/gtkui/main.py:828 msgid "Released" msgstr "ЮšЯ…ЮКЮЛЮПЯ†ЯŒЯЮЗЯƒЮЕ" #: src/gpodder/gtkui/main.py:855 msgid "Visible columns" msgstr "ЮŸЯЮБЯ„Ю­Я‚ ЯƒЯ„ЮЎЮЛЮЕЯ‚" #: src/gpodder/gtkui/main.py:948 src/gpodder/gtkui/main.py:1108 #: share/gpodder/ui/gtk/gpodder.ui.h:45 msgid "Progress" msgstr "Ю ЯЯŒЮПЮДЮПЯ‚" #: src/gpodder/gtkui/main.py:982 msgid "Loading episodes" msgstr "ЮІЯŒЯЯ„Я‰ЯƒЮЗ ЮЕЯ€ЮЕЮЙЯƒЮПЮДЮЏЯ‰ЮН" #: src/gpodder/gtkui/main.py:985 msgid "No episodes in current view" msgstr "Ю”ЮЕЮН Я…Я€ЮЌЯЯ‡ЮПЯ…ЮН ЮЕЯ€ЮЕЮЙЯƒЯŒЮДЮЙЮБ ЯƒЯ„ЮЗЮН Я„ЯЮ­Я‡ЮПЯ…ЯƒЮБ Я€ЯЮПЮВЮПЮЛЮЎ" #: src/gpodder/gtkui/main.py:987 msgid "No episodes available" msgstr "Ю”ЮЕЮН Я…Я€ЮЌЯЯ‡ЮПЯ…ЮН ЮДЮЙЮБЮИЮ­ЯƒЮЙЮМЮБ ЮЕЯ€ЮЕЮЙЯƒЯŒЮДЮЙЮБ" #: src/gpodder/gtkui/main.py:993 msgid "No podcasts in this view" msgstr "Ю”ЮЕЮН Я…Я€ЮЌЯЯ‡ЮПЯ…ЮН podcasts ЯƒЮЕ ЮБЯ…Я„ЮЎЮН Я„ЮЗЮН Я€ЯЮПЮВЮПЮЛЮЎ" #: src/gpodder/gtkui/main.py:995 msgid "No subscriptions" msgstr "Ю”ЮЕЮН Я…Я€ЮЌЯЯ‡ЮПЯ…ЮН ЯƒЯ…ЮНЮДЯЮПЮМЮ­Я‚" #: src/gpodder/gtkui/main.py:997 msgid "No active tasks" msgstr "Ю”ЮЕЮН Я…Я€ЮЌЯЯ‡ЮПЯ…ЮН ЮЕЮНЮЕЯЮГЮ­Я‚ ЮДЮЙЮЕЯЮГЮБЯƒЮЏЮЕЯ‚" #: src/gpodder/gtkui/main.py:1112 src/gpodder/gtkui/main.py:1114 #, python-format msgid "%(count)d active" msgid_plural "%(count)d active" msgstr[0] "%(count)d ЮЕЮНЮЕЯЮГЮЎ" msgstr[1] "%(count)d ЮЕЮНЮЕЯЮГЮ­Я‚" #: src/gpodder/gtkui/main.py:1116 #, python-format msgid "%(count)d failed" msgid_plural "%(count)d failed" msgstr[0] "Ю‘Я€Ю­Я„Я…Я‡ЮЕ %(count)d" msgstr[1] "Ю‘Я€Ю­Я„Я…Я‡ЮБЮН %(count)d" #: src/gpodder/gtkui/main.py:1118 #, python-format msgid "%(count)d queued" msgid_plural "%(count)d queued" msgstr[0] "%(count)d ЯƒЮЕ ЮБЮНЮБЮМЮПЮНЮЎ" msgstr[1] "%(count)d ЯƒЮЕ ЮБЮНЮБЮМЮПЮНЮЎ" #: src/gpodder/gtkui/main.py:1132 #, python-format msgid "downloading %(count)d file" msgid_plural "downloading %(count)d files" msgstr[0] "ЮЛЮЎЯˆЮЗ %(count)d ЮБЯЯ‡ЮЕЮЏЮПЯ…" msgstr[1] "ЮЛЮЎЯˆЮЗ %(count)d ЮБЯЯ‡ЮЕЮЏЯ‰ЮН" #: src/gpodder/gtkui/main.py:1142 #, python-format msgid "synchronizing %(count)d file" msgid_plural "synchronizing %(count)d files" msgstr[0] "ЯƒЯ…ЮГЯ‡ЯЮПЮНЮЙЯƒЮМЯŒЯ‚ %(count)d ЮБЯЯ‡ЮЕЮЏЮПЯ…" msgstr[1] "ЯƒЯ…ЮГЯ‡ЯЮПЮНЮЙЯƒЮМЯŒЯ‚ %(count)d ЮБЯЯ‡ЮЕЮЏЯ‰ЮН" #: src/gpodder/gtkui/main.py:1144 #, python-format msgid "%(queued)d task queued" msgid_plural "%(queued)d tasks queued" msgstr[0] "" msgstr[1] "" #: src/gpodder/gtkui/main.py:1168 msgid "Please report this problem and restart gPodder:" msgstr "Ю ЮБЯЮБЮКЮБЮЛЯŽ ЮБЮНЮЌЯ†ЮЕЯЮЕ ЮБЯ…Я„ЯŒ Я„ЮП Я€ЯЯŒЮВЮЛЮЗЮМЮБ ЮКЮБЮЙ ЮЕЯ€ЮБЮНЮЕЮКЮКЮЏЮНЮЗЯƒЮЕ Я„ЮП gPodder:" #: src/gpodder/gtkui/main.py:1168 msgid "Unhandled exception" msgstr "Ю•ЮОЮБЮЏЯЮЕЯƒЮЗ Я€ЮПЯ… ЮДЮЕЮН ЮБЮНЯ„ЮЙЮМЮЕЯ„Я‰Я€ЮЏЯƒЯ„ЮЗЮКЮЕ" #: src/gpodder/gtkui/main.py:1235 #, python-format msgid "Feedparser error: %s" msgstr "ЮЃЯ†ЮЌЮЛЮМЮБ ЯƒЯ„ЮЗЮН ЮБЮНЮЌЮЛЯ…ЯƒЮЗ Я„ЮЗЯ‚ ЯЮПЮЎЯ‚: %s" #: src/gpodder/gtkui/main.py:1371 msgid "Could not download some episodes:" msgstr "Ю”ЮЕЮН ЮЎЯ„ЮБЮН ЮДЯ…ЮНЮБЯ„ЮЎ ЮЗ ЮЛЮЎЯˆЮЗ ЮКЮЌЯ€ЮПЮЙЯ‰ЮН ЮЕЯ€ЮЕЮЙЯƒЮПЮДЮЏЯ‰ЮН:" #: src/gpodder/gtkui/main.py:1373 src/gpodder/gtkui/main.py:1376 msgid "Downloads finished" msgstr "ЮŸЮЙ ЮЛЮЎЯˆЮЕЮЙЯ‚ Я„ЮЕЮЛЮЕЮЏЯ‰ЯƒЮБЮН" #: src/gpodder/gtkui/main.py:1379 msgid "Downloads failed" msgstr "Ю‘Я€ЮПЯ„Я…Я‡ЮЏЮБ ЮЛЮЎЯˆЮЕЯ‰ЮН" #: src/gpodder/gtkui/main.py:1383 msgid "Could not sync some episodes:" msgstr "Ю”ЮЕЮН ЮЎЯ„ЮБЮН ЮДЯ…ЮНЮБЯ„ЯŒЯ‚ ЮП ЯƒЯ…ЮГЯ‡ЯЮПЮНЮЙЯƒЮМЯŒЯ‚ ЮПЯЮЙЯƒЮМЮ­ЮНЯ‰ЮН ЮЕЯ€ЮЕЮЙЯƒЮПЮДЮЏЯ‰ЮН" #: src/gpodder/gtkui/main.py:1385 src/gpodder/gtkui/main.py:1388 msgid "Device synchronization finished" msgstr "ЮŸ ЯƒЯ…ЮГЯ‡ЯЮПЮНЮЙЯƒЮМЯŒЯ‚ Я„ЮЗЯ‚ ЯƒЯ…ЯƒЮКЮЕЯ…ЮЎЯ‚ ЮПЮЛЮПЮКЮЛЮЗЯЯŽЮИЮЗЮКЮЕ" #: src/gpodder/gtkui/main.py:1391 msgid "Device synchronization failed" msgstr "ЮŸ ЯƒЯ…ЮГЯ‡ЯЮПЮНЮЙЯƒЮМЯŒЯ‚ Я„ЮЗЯ‚ ЯƒЯ…ЯƒЮКЮЕЯ…ЮЎЯ‚ ЮБЯ€Ю­Я„Я…Я‡ЮЕ" #: src/gpodder/gtkui/main.py:1434 #, python-format msgid "%(count)d more episode" msgid_plural "%(count)d more episodes" msgstr[0] "Ю‘ЮКЯŒЮМЮБ %(count)d ЮЕЯ€ЮЕЮЙЯƒЯŒЮДЮЙЮП" msgstr[1] "Ю‘ЮКЯŒЮМЮБ %(count)d ЮЕЯ€ЮЕЮЙЯƒЯŒЮДЮЙЮБ" #: src/gpodder/gtkui/main.py:1508 msgid "Start download now" msgstr "Ю•ЮКЮКЮЏЮНЮЗЯƒЮЗ ЮЛЮЎЯˆЮЗЯ‚ Я„ЯŽЯЮБ" #: src/gpodder/gtkui/main.py:1510 src/gpodder/gtkui/main.py:1719 #: src/gpodder/gtkui/desktop/episodeselector.py:144 #: share/gpodder/ui/gtk/gpodder.ui.h:20 msgid "Download" msgstr "Ю›ЮЎЯˆЮЗ" #: src/gpodder/gtkui/main.py:1511 share/gpodder/ui/gtk/gpodder.ui.h:21 msgid "Cancel" msgstr "Ю‘ЮКЯЯЯ‰ЯƒЮЗ" #: src/gpodder/gtkui/main.py:1512 msgid "Pause" msgstr "Ю ЮБЯЯƒЮЗ" #: src/gpodder/gtkui/main.py:1514 msgid "Remove from list" msgstr "Ю‘Я†ЮБЮЏЯЮЕЯƒЮЗ ЮБЯ€ЯŒ Я„ЮЗ ЮЛЮЏЯƒЯ„ЮБ" #: src/gpodder/gtkui/main.py:1553 share/gpodder/ui/gtk/gpodder.ui.h:13 msgid "Update podcast" msgstr "Ю•ЮНЮЗЮМЮ­ЯЯ‰ЯƒЮЗ podcast" #: src/gpodder/gtkui/main.py:1560 msgid "Open download folder" msgstr "Ю†ЮНЮПЮЙЮГЮМЮБ Я†ЮБЮКЮ­ЮЛЮПЯ… ЮЛЮЎЯˆЮЕЯ‰ЮН" #: src/gpodder/gtkui/main.py:1566 msgid "Mark episodes as old" msgstr "ЮЃЮЎЮМЮБЮНЯƒЮЗ ЮЕЯ€ЮЙЯƒЮПЮДЮЏЯ‰ЮН Я‰Я‚ Я€ЮБЮЛЮЙЮЌ" #: src/gpodder/gtkui/main.py:1570 src/gpodder/gtkui/main.py:1778 msgid "Archive" msgstr "Ю‘ЯЯ‡ЮЕЮЙЮПЮИЮ­Я„ЮЗЯƒЮЗ" #: src/gpodder/gtkui/main.py:1575 msgid "Remove podcast" msgstr "Ю‘Я†ЮБЮЏЯЮЕЯƒЮЗ podcast" #: src/gpodder/gtkui/main.py:1590 share/gpodder/ui/gtk/gpodder.ui.h:10 msgid "Podcast settings" msgstr "ЮЁЯ…ЮИЮМЮЏЯƒЮЕЮЙЯ‚ Я„ЮПЯ… podcast" #: src/gpodder/gtkui/main.py:1650 msgid "Error converting file." msgstr "ЮЃЯ†ЮЌЮЛЮМЮБ ЮКЮБЯ„ЮЌ Я„ЮЗ ЮМЮЕЯ„ЮБЯ„ЯЮПЯ€ЮЎ Я„ЮПЯ… ЮБЯЯ‡ЮЕЮЏЮПЯ…." #: src/gpodder/gtkui/main.py:1650 msgid "Bluetooth file transfer" msgstr "ЮœЮЕЯ„ЮБЯ†ЮПЯЮЌ ЮБЯЯ‡ЮЕЮЏЮПЯ… ЮМЮ­ЯƒЯ‰ Bluetooth" #: src/gpodder/gtkui/main.py:1709 msgid "Preview" msgstr "Ю ЯЮПЮЕЯ€ЮЙЯƒЮКЯŒЯ€ЮЗЯƒЮЗ" #: src/gpodder/gtkui/main.py:1711 msgid "Stream" msgstr "Ю‘ЮНЮБЯ€ЮБЯЮБЮГЯ‰ЮГЮЎ" #: src/gpodder/gtkui/main.py:1755 msgid "Send to" msgstr "Ю‘Я€ЮПЯƒЯ„ЮПЮЛЮЎ Я€ЯЮПЯ‚" #: src/gpodder/gtkui/main.py:1757 msgid "Local folder" msgstr "ЮЄЮПЯ€ЮЙЮКЯŒЯ‚ Я†ЮЌЮКЮЕЮЛЮПЯ‚" #: src/gpodder/gtkui/main.py:1762 msgid "Bluetooth device" msgstr "ЮЃЯ…ЯƒЮКЮЕЯ…ЮЎ Bluetooth" #: src/gpodder/gtkui/main.py:1769 msgid "New" msgstr "ЮЮ­ЮП" #: src/gpodder/gtkui/main.py:1785 share/gpodder/ui/gtk/gpodder.ui.h:25 msgid "Episode details" msgstr "Ю›ЮЕЯ€Я„ЮПЮМЮ­ЯЮЕЮЙЮЕЯ‚ ЮЕЯ€ЮЕЮЙЯƒЮПЮДЮЏЮПЯ…" #: src/gpodder/gtkui/main.py:1938 msgid "Please check your media player settings in the preferences dialog." msgstr "" "Ю ЮБЯЮБЮКЮБЮЛЯŽ ЮЕЮЛЮ­ЮГЮОЯ„ЮЕ Я„ЮЙЯ‚ ЯЯ…ЮИЮМЮЏЯƒЮЕЮЙЯ‚ Я„ЮПЯ… ЮБЮНЮБЯ€ЮБЯЮБЮГЯ‰ЮГЮ­ЮБ Я„Я‰ЮН ЮМЮ­ЯƒЯ‰ЮН ЯƒЮБЯ‚ ЯƒЯ„ЮП Я€ЮБЯЮЌЮИЯ…ЯЮП " "ЮДЮЙЮБЮЛЯŒЮГЮПЯ… Я„Я‰ЮН Я€ЯЮПЯ„ЮЙЮМЮЎЯƒЮЕЯ‰ЮН." #: src/gpodder/gtkui/main.py:1939 msgid "Error opening player" msgstr "ЮЃЯ†ЮЌЮЛЮМЮБ ЮКЮБЯ„ЮЌ Я„ЮП ЮЌЮНЮПЮЙЮГЮМЮБ Я„ЮПЯ… ЮБЮНЮБЯ€ЮБЯЮБЮГЯ‰ЮГЮ­ЮБ" #: src/gpodder/gtkui/main.py:2178 msgid "Adding podcasts" msgstr "Ю ЯЮПЯƒЮИЮЎЮКЮЗ podcasts" #: src/gpodder/gtkui/main.py:2179 msgid "Please wait while episode information is downloaded." msgstr "Ю ЮБЯЮБЮКЮБЮЛЯŽ Я€ЮЕЯЮЏЮМЮЕЮНЮЕ ЮЕЮНЯŽ ЮГЮЏЮНЮЕЯ„ЮБЮЙ ЮЛЮЎЯˆЮЗ Я„Я‰ЮН Я€ЮЛЮЗЯЮПЯ†ЮПЯЮЙЯŽЮН Я„ЮПЯ… ЮЕЯ€ЮЕЮЙЯƒЮПЮДЮЏЮПЯ…." #: src/gpodder/gtkui/main.py:2186 msgid "Existing subscriptions skipped" msgstr "ЮŸЮЙ Я…Я€ЮЌЯЯ‡ЮПЯ…ЯƒЮЕЯ‚ ЯƒЯ…ЮНЮДЯЮПЮМЮ­Я‚ Я€ЮБЯЮБЮЛЮЕЮЏЯ†ЮИЮЗЮКЮБЮН" #: src/gpodder/gtkui/main.py:2187 msgid "You are already subscribed to these podcasts:" msgstr "ЮˆЯ‡ЮЕЮЙЯ‚ ЮЎЮДЮЗ ЮЕЮГЮГЯЮБЯ†ЮЕЮЏ ЯƒЮЕ ЮБЯ…Я„ЮЌ Я„ЮБ podcasts:" #: src/gpodder/gtkui/main.py:2195 msgid "Podcast requires authentication" msgstr "ЮЄЮП Podcast ЮБЯ€ЮБЮЙЯ„ЮЕЮЏ Я€ЮЙЯƒЯ„ЮПЯ€ЮПЮЏЮЗЯƒЮЗ" #: src/gpodder/gtkui/main.py:2196 #, python-format msgid "Please login to %s:" msgstr "Ю ЮБЯЮБЮКЮБЮЛЯŽ ЯƒЯ…ЮНЮДЮЕЮИЮЕЮЏЯ„ЮЕ ЯƒЯ„ЮП %s:" #: src/gpodder/gtkui/main.py:2204 src/gpodder/gtkui/main.py:2299 msgid "Authentication failed" msgstr "Ю— Я€ЮЙЯƒЯ„ЮПЯ€ЮПЮЏЮЗЯƒЮЗ ЮБЯ€Ю­Я„Я…Я‡ЮЕ" #: src/gpodder/gtkui/main.py:2210 msgid "Website redirection detected" msgstr "Ю•ЮНЯ„ЮПЯ€ЮЏЯƒЯ„ЮЗЮКЮЕ ЮБЮНЮБЮКЮБЯ„ЮЕЯЮИЯ…ЮНЯƒЮЗ ЮЙЯƒЯ„ЯŒЯ„ЮПЯ€ЮПЯ…" #: src/gpodder/gtkui/main.py:2211 #, python-format msgid "The URL %(url)s redirects to %(target)s." msgstr "Ю— ЮДЮЙЮЕЯЮИЯ…ЮНЯƒЮЗ (URL) %(url)s ЮБЮНЮБЮКЮБЯ„ЮЕЯ…ЮИЯЮНЮЕЮЙ Я€ЯЮПЯ‚ %(target)s." #: src/gpodder/gtkui/main.py:2212 msgid "Do you want to visit the website now?" msgstr "ޘޭЮЛЮЕЮЙЯ‚ ЮНЮБ ЮЕЯ€ЮЙЯƒЮКЮЕЯ†ЮИЮЕЮЏЯ‚ Я„ЮПЮН ЮЙЯƒЯ„ЯŒЯ„ЮПЯ€ЮП Я„ЯŽЯЮБ;" #: src/gpodder/gtkui/main.py:2221 msgid "Could not add some podcasts" msgstr "Ю”ЮЕЮН ЮЕЮЏЮНЮБЮЙ ЮДЯ…ЮНЮБЯ„ЮЎ ЮЗ Я€ЯЮПЯƒЮИЮЎЮКЮЗ ЮПЯЮЙЯƒЮМЮ­ЮНЯ‰ЮН podcasts" #: src/gpodder/gtkui/main.py:2222 msgid "Some podcasts could not be added to your list:" msgstr "ЮŸЯЮЙЯƒЮМЮ­ЮНЮБ podcasts ЮДЮЕЮН ЮИЮБ ЮМЯ€ЮПЯЮПЯЯƒЮБЮН ЮНЮБ Я€ЯЮПЯƒЯ„ЮЕЮИЮПЯЮН ЯƒЯ„ЮЗ ЮЛЮЏЯƒЯ„ЮБ ЯƒЮБЯ‚:" #: src/gpodder/gtkui/main.py:2224 msgid "Unknown" msgstr "Ю†ЮГЮНЯ‰ЯƒЯ„ЮП" #: src/gpodder/gtkui/main.py:2308 msgid "Redirection detected" msgstr "Ю‘ЮНЮЏЯ‡ЮНЮЕЯ…ЯƒЮЗ ЮБЯ…Я„ЯŒЮМЮБЯ„ЮЗЯ‚ ЮЕЮКЯ„ЯЮПЯ€ЮЎЯ‚" #: src/gpodder/gtkui/main.py:2342 msgid "Merging episode actions" msgstr "ЮЃЯ…ЮГЯ‡ЯŽЮНЮЕЯ…ЯƒЮЗ ЮЕЮНЮЕЯЮГЮЕЮЙЯŽЮН ЮЕЯ€ЮЕЮЙЯƒЮПЮДЮЏЮПЯ…" #: src/gpodder/gtkui/main.py:2343 msgid "Episode actions from gpodder.net are merged." msgstr "ЮŸЮЙ ЮЕЮНЮ­ЯЮГЮЕЮЙЮЕЯ‚ ЮЕЯ€ЮЕЮЙЯƒЮПЮДЮЏЮПЯ… ЮБЯ€ЯŒ Я„ЮП gpodder.net ЯƒЯ…ЮГЯ‡Я‰ЮНЮЕЯЯ„ЮЗЮКЮБЮН." #: src/gpodder/gtkui/main.py:2368 msgid "Cancelling..." msgstr "Ю‘ЮКЯЯЯ‰ЯƒЮЗ..." #: src/gpodder/gtkui/main.py:2377 msgid "Please connect to a network, then try again." msgstr "" #: src/gpodder/gtkui/main.py:2378 #, fuzzy msgid "No network connection" msgstr "ЮЮ­ЮП ЯŒЮНЮПЮМЮБ:" #: src/gpodder/gtkui/main.py:2399 #, python-format msgid "Updating %(count)d feed..." msgid_plural "Updating %(count)d feeds..." msgstr[0] "Ю•ЮНЮЗЮМЮ­ЯЯ‰ЯƒЮЗ %(count)d ЯЮПЮЎЯ‚..." msgstr[1] "Ю•ЮНЮЗЮМЮ­ЯЯ‰ЯƒЮЗ %(count)d ЯЮПЯŽЮН..." #: src/gpodder/gtkui/main.py:2417 #, python-format msgid "Error while updating %(url)s: %(message)s" msgstr "ЮЃЯ†ЮЌЮЛЮМЮБ ЮКЮБЯ„ЮЌ Я„ЮЗ ЮДЮЙЮЌЯЮКЮЕЮЙЮБ Я„ЮЗЯ‚ ЮЕЮНЮЗЮМЮ­ЯЯ‰ЯƒЮЗЯ‚ Я„ЮПЯ… %(url)s: %(message)s" #: src/gpodder/gtkui/main.py:2419 #, python-format msgid "The feed at %(url)s could not be updated." msgstr "Ю— ЯЮПЮЎ ЯƒЯ„ЮП %(url)s ЮДЮЕЮН ЮЎЯ„ЮБЮН ЮДЯ…ЮНЮБЯ„ЯŒ ЮНЮБ ЮЕЮНЮЗЮМЮЕЯЯ‰ЮИЮЕЮЏ." #: src/gpodder/gtkui/main.py:2420 msgid "Error while updating feed" msgstr "ЮЃЯ†ЮЌЮЛЮМЮБ ЮКЮБЯ„ЮЌ Я„ЮЗЮН ЮЕЮНЮЗЮМЮ­ЯЯ‰ЯƒЮЗ Я„ЮЗЯ‚ ЯЮПЮЎЯ‚" #: src/gpodder/gtkui/main.py:2435 #, python-format msgid "Updated %(podcast)s (%(position)d/%(total)d)" msgstr "Ю•ЮНЮЗЮМЮЕЯЯŽЮИЮЗЮКЮЕ Я„ЮП %(podcast)s (%(position)d/%(total)d)" #: src/gpodder/gtkui/main.py:2466 msgid "No new episodes" msgstr "Ю”ЮЕЮН Я…Я€ЮЌЯЯ‡ЮПЯ…ЮН ЮНЮ­ЮБ ЮЕЯ€ЮЕЮЙЯƒЯŒЮДЮЙЮБ" #: src/gpodder/gtkui/main.py:2479 #, python-format msgid "Downloading %(count)d new episode." msgid_plural "Downloading %(count)d new episodes." msgstr[0] "Ю›ЮЎЯˆЮЗ %(count)d ЮНЮ­ЮПЯ… ЮЕЯ€ЮЕЮЙЯƒЮПЮДЮЏЮПЯ…." msgstr[1] "Ю›ЮЎЯˆЮЗ %(count)d ЮНЮ­Я‰ЮН ЮЕЯ€ЮЕЮЙЯƒЮПЮДЮЏЯ‰ЮН." #: src/gpodder/gtkui/main.py:2480 src/gpodder/gtkui/main.py:2484 #: src/gpodder/gtkui/main.py:2833 msgid "New episodes available" msgstr "ЮЮ­ЮБ ЮЕЯ€ЮЕЮЙЯƒЯŒЮДЮЙЮБ ЮЕЮЏЮНЮБЮЙ ЮДЮЙЮБЮИЮ­ЯƒЮЙЮМЮБ" #: src/gpodder/gtkui/main.py:2483 #, python-format msgid "%(count)d new episode added to download list." msgid_plural "%(count)d new episodes added to download list." msgstr[0] "%(count)d ЮНЮ­ЮП ЮЕЯ€ЮЕЮЙЯƒЯŒЮДЮЙЮП Я€ЯЮПЯƒЯ„Ю­ЮИЮЗЮКЮЕ ЯƒЯ„ЮЗ ЮЛЮЏЯƒЯ„ЮБ ЮЛЮЎЯˆЮЕЯ‰ЮН." msgstr[1] "%(count)d ЮНЮ­ЮБ ЮЕЯ€ЮЕЮЙЯƒЯŒЮДЮЙЮБ Я€ЯЮПЯƒЯ„Ю­ЮИЮЗЮКЮБЮН ЯƒЯ„ЮЗ ЮЛЮЏЯƒЯ„ЮБ ЮЛЮЎЯˆЮЕЯ‰ЮН." #: src/gpodder/gtkui/main.py:2490 #, python-format msgid "%(count)d new episode available" msgid_plural "%(count)d new episodes available" msgstr[0] "%(count)d ЮНЮ­ЮП ЮЕЯ€ЮЕЮЙЯƒЯŒЮДЮЙЮП ЮДЮЙЮБЮИЮ­ЯƒЮЙЮМЮП" msgstr[1] "%(count)d ЮНЮ­ЮБ ЮЕЯ€ЮЕЮЙЯƒЯŒЮДЮЙЮБ ЮДЮЙЮБЮИЮ­ЯƒЮЙЮМЮБ" #: src/gpodder/gtkui/main.py:2509 msgid "Quit gPodder" msgstr "ЮˆЮОЮПЮДЮПЯ‚ ЮБЯ€ЯŒ Я„ЮП gPodder" #: src/gpodder/gtkui/main.py:2510 msgid "" "You are downloading episodes. You can resume downloads the next time you " "start gPodder. Do you want to quit now?" msgstr "" "Ю“ЮЏЮНЮЕЯ„ЮБЮЙ ЮЛЮЎЯˆЮЗ ЮЕЯ€ЮЕЮЙЯƒЮПЮДЮЏЯ‰ЮН. ЮœЯ€ЮПЯЮЕЮЏЯ‚ ЮНЮБ ЯƒЯ…ЮНЮЕЯ‡ЮЏЯƒЮЕЮЙЯ‚ Я„ЮЙЯ‚ ЮЛЮЎЯˆЮЕЮЙЯ‚ Я„ЮЗЮН ЮЕЯ€ЯŒЮМЮЕЮНЮЗ Я†ЮПЯЮЌ " "Я€ЮПЯ… ЮИЮБ ЮЕЮКЮКЮЙЮНЮЎЯƒЮЕЮЙЯ‚ Я„ЮП gPodder. ޘޭЮЛЮЕЮЙЯ‚ ЮНЮБ Я„ЮП ЮКЮЛЮЕЮЏЯƒЮЕЮЙЯ‚ Я„ЯŽЯЮБ;" #: src/gpodder/gtkui/main.py:2559 msgid "Episodes are locked" msgstr "ЮЄЮБ ЮЕЯ€ЮЕЮЙЯƒЯŒЮДЮЙЮБ ЮЕЮЏЮНЮБЮЙ ЮКЮЛЮЕЮЙЮДЯ‰ЮМЮ­ЮМЮБ" #: src/gpodder/gtkui/main.py:2560 msgid "" "The selected episodes are locked. Please unlock the episodes that you want " "to delete before trying to delete them." msgstr "" "ЮЄЮБ ЮЕЯ€ЮЙЮЛЮЕЮГЮМЮ­ЮНЮБ ЮЕЯ€ЮЕЮЙЯƒЯŒЮДЮЙЮБ ЮЕЮЏЮНЮБЮЙ ЮКЮЛЮЕЮЙЮДЯ‰ЮМЮ­ЮНЮБ. Ю ЮБЯЮБЮКЮБЮЛЯŽ ЮНЮБ ЮОЮЕЮКЮЛЮЕЮЙЮДЯŽЯƒЮЕЮЙЯ‚ Я„ЮБ " "ЮЕЯ€ЮЕЮЙЯƒЯŒЮДЮЙЮБ Я€ЮПЯ… ЮИЮ­ЮЛЮЕЮЙЯ‚ ЮНЮБ ЮДЮЙЮБЮГЯЮЌЯˆЮЕЮЙЯ‚ Я€ЯЮЙЮН Я€ЯЮПЯƒЯ€ЮБЮИЮЎЯƒЮЕЮЙЯ‚ ЮНЮБ Я„ЮБ ЮДЮЙЮБЮГЯЮЌЯˆЮЕЮЙЯ‚." #: src/gpodder/gtkui/main.py:2565 #, python-format msgid "Delete %(count)d episode?" msgid_plural "Delete %(count)d episodes?" msgstr[0] "ЮЮБ ЮДЮЙЮБЮГЯЮБЯ†ЮЕЮЏ %(count)d ЮЕЯ€ЮЕЮЙЯƒЯŒЮДЮЙЮП;" msgstr[1] "ЮЮБ ЮДЮЙЮБЮГЯЮБЯ†ЮПЯЮН %(count)d ЮЕЯ€ЮЕЮЙЯƒЯŒЮДЮЙЮБ;" #: src/gpodder/gtkui/main.py:2566 msgid "Deleting episodes removes downloaded files." msgstr "Ю— ЮДЮЙЮБЮГЯЮБЯ†ЮЎ Я„Я‰ЮН ЮЕЯ€ЮЕЮЙЯƒЮПЮДЮЏЯ‰ЮН ЮБЯ†ЮБЮЙЯЮЕЮЏ Я„ЮБ ЮЛЮЗЯ†ЮИЮ­ЮНЯ„ЮБ ЮБЯЯ‡ЮЕЮЏЮБ." #: src/gpodder/gtkui/main.py:2571 msgid "Deleting episodes" msgstr "Ю”ЮЙЮБЮГЯЮБЯ†ЮЎ ЮЕЯ€ЮЕЮЙЯƒЮПЮДЮЏЯ‰ЮН" #: src/gpodder/gtkui/main.py:2572 msgid "Please wait while episodes are deleted" msgstr "Ю ЮБЯЮБЮКЮБЮЛЯŽ Я€ЮЕЯЮЏЮМЮЕЮНЮЕ ЮЕЮНЯŽ Я„ЮБ ЮЕЯ€ЮЕЮЙЯƒЯŒЮДЮЙЮБ ЮДЮЙЮБЮГЯЮЌЯ†ЮПЮНЯ„ЮБЮЙ" #: src/gpodder/gtkui/main.py:2625 #, python-format msgid "Select older than %(count)d day" msgid_plural "Select older than %(count)d days" msgstr[0] "Ю•Я€ЮЏЮЛЮЕЮОЮЕ Я€ЮБЮЛЮБЮЙЯŒЯ„ЮЕЯЮБ ЮБЯ€ЯŒ %(count)d ЮЗЮМЮ­ЯЮБ" msgstr[1] "Ю•Я€ЮЏЮЛЮЕЮОЮЕ Я€ЮБЮЛЮБЮЙЯŒЯ„ЮЕЯЮБ ЮБЯ€ЯŒ %(count)d ЮЗЮМЮ­ЯЮЕЯ‚" #: src/gpodder/gtkui/main.py:2627 msgid "Select played" msgstr "Ю•Я€ЮЙЮЛЮПЮГЮЎ ЮБЮНЮБЯ€ЮБЯЮБЮГЮМЮ­ЮНЮПЯ…" #: src/gpodder/gtkui/main.py:2628 msgid "Select finished" msgstr "Ю•Я€ЮЙЮЛЮПЮГЮЎ ЮПЮЛЮПЮКЮЛЮЗЯЯ‰ЮМЮ­ЮНЯ‰ЮН" #: src/gpodder/gtkui/main.py:2632 msgid "Select the episodes you want to delete:" msgstr "Ю•Я€ЮЏЮЛЮЕЮОЮЕ Я„ЮБ ЮЕЯ€ЮЕЮЙЯƒЯŒЮДЮЙЮБ Я€ЮПЯ… ЮИЮ­ЮЛЮЕЮЙЯ‚ ЮНЮБ ЮДЮЙЮБЮГЯЮЌЯˆЮЕЮЙЯ‚:" #: src/gpodder/gtkui/main.py:2648 share/gpodder/ui/gtk/gpodder.ui.h:4 msgid "Delete episodes" msgstr "Ю”ЮЙЮБЮГЯЮБЯ†ЮЎ ЮЕЯ€ЮЕЮЙЯƒЮПЮДЮЏЯ‰ЮН" #: src/gpodder/gtkui/main.py:2703 src/gpodder/gtkui/main.py:2934 #: src/gpodder/gtkui/main.py:3034 msgid "No podcast selected" msgstr "Ю”ЮЕЮН Ю­Я‡ЮЕЮЙ ЮЕЯ€ЮЙЮЛЮЕЮГЮЕЮЏ ЮКЮБЮНЮ­ЮНЮБ podcast" #: src/gpodder/gtkui/main.py:2704 msgid "Please select a podcast in the podcasts list to update." msgstr "Ю ЮБЯЮБЮКЮБЮЛЯŽ ЮЕЯ€ЮЙЮЛЮ­ЮОЯ„ЮЕ Ю­ЮНЮБ podcast ЮБЯ€ЯŒ Я„ЮЗ ЮЛЮЏЯƒЯ„ЮБ Я„Я‰ЮН podcasts ЮГЮЙЮБ ЮЕЮНЮЗЮМЮ­ЯЯ‰ЯƒЮЗ." #: src/gpodder/gtkui/main.py:2774 #, python-format msgid "Download error while downloading %(episode)s: %(message)s" msgstr "ЮЃЯ†ЮЌЮЛЮМЮБ ЮКЮБЯ„ЮЌ Я„ЮЗ ЮДЮЙЮЌЯЮКЮЕЮЙЮБ Я„ЮЗЯ‚ ЮЛЮЎЯˆЮЗЯ‚ %(episode)s: %(message)s" #: src/gpodder/gtkui/main.py:2775 msgid "Download error" msgstr "ЮЃЯ†ЮЌЮЛЮМЮБ ЮЛЮЎЯˆЮЗЯ‚" #: src/gpodder/gtkui/main.py:2818 msgid "Select the episodes you want to download:" msgstr "Ю•Я€ЮЏЮЛЮЕЮОЮЕ Я„ЮБ ЮЕЯ€ЮЕЮЙЯƒЯŒЮДЮЙЮБ Я€ЮПЯ… ЮИЮ­ЮЛЮЕЮЙЯ‚ ЮНЮБ ЮКЮБЯ„ЮЕЮВЮЌЯƒЮЕЮЙЯ‚:" #: src/gpodder/gtkui/main.py:2841 msgid "Mark as old" msgstr "ЮЃЮЗЮМЮЕЮЏЯ‰ЯƒЮЗ Я‰Я‚ Я€ЮБЮЛЮЙЯŒ" #: src/gpodder/gtkui/main.py:2848 msgid "Please check for new episodes later." msgstr "Ю ЮБЯЮБЮКЮБЮЛЯŽ ЮЕЮЛЮ­ЮГЮОЯ„ЮЕ ЮГЮЙЮБ ЮНЮ­ЮБ ЮЕЯ€ЮЕЮЙЯƒЯŒЮДЮЙЮБ ЮБЯЮГЯŒЯ„ЮЕЯЮБ." #: src/gpodder/gtkui/main.py:2849 msgid "No new episodes available" msgstr "Ю”ЮЕЮН Я…Я€ЮЌЯЯ‡ЮПЯ…ЮН ЮНЮ­ЮБ ЮЕЯ€ЮЕЮЙЯƒЯŒЮДЮЙЮБ ЮДЮЙЮБЮИЮ­ЯƒЮЙЮМЮБ" #: src/gpodder/gtkui/main.py:2900 msgid "Login to gpodder.net" msgstr "ЮЃЯЮНЮДЮЕЯƒЮЗ ЯƒЯ„ЮП gpodder.net" #: src/gpodder/gtkui/main.py:2901 msgid "Please login to download your subscriptions." msgstr "Ю ЮБЯЮБЮКЮБЮЛЯŽ ЮКЮЌЮНЮЕ ЯƒЯЮНЮДЮЕЯƒЮЗ ЮГЮЙЮБ ЮНЮБ ЮКЮБЯ„ЮЕЮВЮЌЯƒЮЕЮЙЯ‚ Я„ЮЙЯ‚ ЯƒЯ…ЮНЮДЯЮПЮМЮ­Я‚ ЯƒЮПЯ…." #: src/gpodder/gtkui/main.py:2916 msgid "Subscriptions on gpodder.net" msgstr "ЮЃЯ…ЮНЮДЯЮПЮМЮ­Я‚ ЯƒЯ„ЮП gpodder.net" #: src/gpodder/gtkui/main.py:2935 msgid "Please select a podcast in the podcasts list to edit." msgstr "" "Ю ЮБЯЮБЮКЮБЮЛЯŽ ЮЕЯ€ЮЙЮЛЮ­ЮОЯ„ЮЕ Ю­ЮНЮБ podcast ЮБЯ€ЯŒ Я„ЮЗ ЮЛЮЏЯƒЯ„ЮБ Я„Я‰ЮН podcasts ЮГЮЙЮБ ЮНЮБ Я„ЮП " "ЮЕЯ€ЮЕЮОЮЕЯЮГЮБЯƒЯ„ЮЕЮЏЯ„ЮЕ." #: src/gpodder/gtkui/main.py:2949 msgid "Podcast" msgstr "Podcast" #: src/gpodder/gtkui/main.py:2955 share/gpodder/ui/gtk/gpodder.ui.h:12 msgid "Remove podcasts" msgstr "Ю‘Я†ЮБЮЏЯЮЕЯƒЮЗ podcasts" #: src/gpodder/gtkui/main.py:2956 msgid "Select the podcast you want to remove." msgstr "Ю•Я€ЮЏЮЛЮЕЮОЮЕ Я„ЮП podcast Я€ЮПЯ… ЮИЮ­ЮЛЮЕЮЙЯ‚ ЮНЮБ ЮБЯ†ЮБЮЙЯЮ­ЯƒЮЕЮЙЯ‚." #: src/gpodder/gtkui/main.py:2960 #: src/gpodder/gtkui/desktop/episodeselector.py:105 msgid "Remove" msgstr "Ю‘Я†ЮБЮЏЯЮЕЯƒЮЗ" #: src/gpodder/gtkui/main.py:2969 msgid "Removing podcast" msgstr "Ю‘Я†ЮБЮЏЯЮЕЯƒЮЗ Я„ЮПЯ… podcast" #: src/gpodder/gtkui/main.py:2970 msgid "Please wait while the podcast is removed" msgstr "Ю ЮБЯЮБЮКЮБЮЛЯŽ Я€ЮЕЯЮЏЮМЮЕЮНЮЕ ЮЕЮНЯŽ Я„ЮП podcast ЮБЯ†ЮБЮЙЯЮЕЮЏЯ„ЮБЮЙ" #: src/gpodder/gtkui/main.py:2971 msgid "Do you really want to remove this podcast and its episodes?" msgstr "ޘޭЮЛЮЕЮЙЯ‚ Я€ЯЮБЮГЮМЮБЯ„ЮЙЮКЮЌ ЮНЮБ ЮБЯ†ЮБЮЙЯЮ­ЯƒЮЕЮЙЯ‚ ЮБЯ…Я„ЯŒ Я„ЮП podcast ЮКЮБЮЙ Я„ЮБ ЮЕЯ€ЮЕЮЙЯƒЯŒЮДЮЙЮЌ Я„ЮПЯ…;" #: src/gpodder/gtkui/main.py:2973 msgid "Removing podcasts" msgstr "Ю‘Я†ЮБЮЏЯЮЕЯƒЮЗ Я„Я‰ЮН podcasts" #: src/gpodder/gtkui/main.py:2974 msgid "Please wait while the podcasts are removed" msgstr "Ю ЮБЯЮБЮКЮБЮЛЯŽ Я€ЮЕЯЮЏЮМЮЕЮНЮЕ ЮЕЮНЯŽ Я„ЮБ podcasts ЮБЯ†ЮБЮЙЯЮПЯЮНЯ„ЮБЮЙ" #: src/gpodder/gtkui/main.py:2975 msgid "Do you really want to remove the selected podcasts and their episodes?" msgstr "" "ޘޭЮЛЮЕЮЙЯ‚ Я€ЯЮБЮГЮМЮБЯ„ЮЙЮКЮЌ ЮНЮБ ЮБЯ†ЮБЮЙЯЮ­ЯƒЮЕЮЙЯ‚ Я„ЮБ ЮЕЯ€ЮЙЮЛЮЕЮГЮМЮ­ЮНЮБ podcasts ЮКЮБЮЙ Я„ЮБ ЮЕЯ€ЮЕЮЙЯƒЯŒЮДЮЙЮЌ Я„ЮПЯ…Я‚;" #: src/gpodder/gtkui/main.py:3035 msgid "Please select a podcast in the podcasts list to remove." msgstr "" "Ю ЮБЯЮБЮКЮБЮЛЯŽ ЮЕЯ€ЮЏЮЛЮЕЮОЮЕ Ю­ЮНЮБ podcast ЮБЯ€ЯŒ Я„ЮЗ ЮЛЮЏЯƒЯ„ЮБ Я„Я‰ЮН podcasts ЮГЮЙЮБ ЮНЮБ Я„ЮП ЮБЯ†ЮБЮЙЯЮ­ЯƒЮЕЮЙЯ‚." #: src/gpodder/gtkui/main.py:3045 msgid "OPML files" msgstr "Ю‘ЯЯ‡ЮЕЮЏЮБ OPML" #: src/gpodder/gtkui/main.py:3050 msgid "Import from OPML" msgstr "Ю•ЮЙЯƒЮБЮГЯ‰ЮГЮЎ ЮБЯ€ЯŒ OPML" #: src/gpodder/gtkui/main.py:3064 msgid "Import podcasts from OPML file" msgstr "Ю•ЮЙЯƒЮБЮГЯ‰ЮГЮЎ podcasts ЮБЯ€ЯŒ ЮБЯЯ‡ЮЕЮЏЮП OPML" #: src/gpodder/gtkui/main.py:3071 msgid "Nothing to export" msgstr "Ю”ЮЕЮН Я…Я€ЮЌЯЯ‡ЮЕЮЙ Я„ЮЏЯ€ЮПЯ„ЮБ Я€ЯЮПЯ‚ ЮЕЮОЮБЮГЯ‰ЮГЮЎ" #: src/gpodder/gtkui/main.py:3072 msgid "" "Your list of podcast subscriptions is empty. Please subscribe to some " "podcasts first before trying to export your subscription list." msgstr "" "Ю— ЮЛЮЏЯƒЯ„ЮБ Я„Я‰ЮН ЯƒЯ…ЮНЮДЯЮПЮМЯŽЮН podcast ЮЕЮЏЮНЮБЮЙ ЮЌЮДЮЕЮЙЮБ. Ю ЮБЯЮБЮКЮБЮЛЯŽ ЮЕЮГЮГЯЮЌЯˆЮПЯ… ЯƒЮЕ ЮКЮЌЯ€ЮПЮЙЮБ " "podcasts Я€ЯЯŽЯ„ЮБ Я€ЯЮЙЮН Я€ЯЮПЯƒЯ€ЮБЮИЮЎЯƒЮЕЮЙЯ‚ ЮНЮБ ЮЕЮОЮЌЮГЮЕЮЙЯ‚ Я„ЮЗ ЮЛЮЏЯƒЯ„ЮБ Я„Я‰ЮН ЯƒЯ…ЮНЮДЯЮПЮМЯŽЮН ЯƒЮПЯ…." #: src/gpodder/gtkui/main.py:3076 msgid "Export to OPML" msgstr "Ю•ЮОЮБЮГЯ‰ЮГЮЎ ЯƒЮЕ OPML" #: src/gpodder/gtkui/main.py:3087 #, python-format msgid "%(count)d subscription exported" msgid_plural "%(count)d subscriptions exported" msgstr[0] "Ю•ЮОЮЌЯ‡ЮИЮЗЮКЮЕ %(count)d ЯƒЯ…ЮНЮДЯЮПЮМЮЎ" msgstr[1] "Ю•ЮОЮЌЯ‡ЮИЮЗЮКЮБЮН %(count)d ЯƒЯ…ЮНЮДЯЮПЮМЮ­Я‚" #: src/gpodder/gtkui/main.py:3088 msgid "Your podcast list has been successfully exported." msgstr "ЮŸ ЮКЮБЯ„ЮЌЮЛЮПЮГЮПЯ‚ Я„Я‰ЮН podcast ЯƒЮБЯ‚ Ю­Я‡ЮЕЮЙ ЮЕЮОЮБЯ‡ЮИЮЕЮЏ ЮМЮЕ ЮЕЯ€ЮЙЯ„Я…Я‡ЮЏЮБ." #: src/gpodder/gtkui/main.py:3090 msgid "Could not export OPML to file. Please check your permissions." msgstr "" "Ю”ЮЕЮН ЮЎЯ„ЮБЮН ЮДЯ…ЮНЮБЯ„ЮЎ ЮЗ ЮЕЮОЮБЮГЯ‰ЮГЮЎ OPML ЯƒЮЕ ЮБЯЯ‡ЮЕЮЏЮП. Ю ЮБЯЮБЮКЮБЮЛЯŽ ЮЕЮЛЮ­ЮГЮОЯ„ЮЕ Я„ЮБ ЮДЮЙЮКЮБЮЙЯŽЮМЮБЯ„ЮБ ЯƒЮБЯ‚." #: src/gpodder/gtkui/main.py:3090 msgid "OPML export failed" msgstr "Ю‘Я€ЮПЯ„Я…Я‡ЮЏЮБ ЮЕЮОЮБЮГЯ‰ЮГЮЎЯ‚ OPML" #: src/gpodder/gtkui/main.py:3117 msgid "No updates available" msgstr "ЮšЮБЮМЮЏЮБ ЮДЮЙЮБЮИЮ­ЯƒЮЙЮМЮЗ ЮЕЮНЮЗЮМЮ­ЯЯ‰ЯƒЮЗ" #: src/gpodder/gtkui/main.py:3118 msgid "You have the latest version of gPodder." msgstr "ЮˆЯ‡ЮЕЯ„ЮЕ Я„ЮЗЮН Я„ЮЕЮЛЮЕЯ…Я„ЮБЮЏЮБ Ю­ЮКЮДЮПЯƒЮЗ Я„ЮПЯ… gPodder." #: src/gpodder/gtkui/main.py:3122 msgid "New version available" msgstr "ЮЮ­ЮБ ЮДЮЙЮБЮИЮ­ЯƒЮЙЮМЮЗ Ю­ЮКЮДЮПЯƒЮЗ" #: src/gpodder/gtkui/main.py:3124 #, python-format msgid "Installed version: %s" msgstr "Ю•ЮГЮКЮБЯ„ЮЕЯƒЯ„ЮЗЮМЮ­ЮНЮЗ Ю­ЮКЮДЮПЯƒЮЗ: %s" #: src/gpodder/gtkui/main.py:3125 #, python-format msgid "Newest version: %s" msgstr "ЮЮЕЯŒЯ„ЮЕЯЮЗ Ю­ЮКЮДЮПЯƒЮЗ: %s" #: src/gpodder/gtkui/main.py:3126 #, python-format msgid "Release date: %s" msgstr "Ю—ЮМЮЕЯЮПЮМЮЗЮНЮЏЮБ ЮДЮЙЮЌЮИЮЕЯƒЮЗЯ‚: %s" #: src/gpodder/gtkui/main.py:3128 msgid "Download the latest version from gpodder.org?" msgstr "Ю›ЮЎЯˆЮЗ Я„ЮЗЯ‚ Я„ЮЕЮЛЮЕЯ…Я„ЮБЮЏЮБЯ‚ Ю­ЮКЮДЮПЯƒЮЗЯ‚ ЮБЯ€ЯŒ Я„ЮП gpodder.org;" #: src/gpodder/gtkui/main.py:3141 msgid "About gPodder" msgstr "ЮЃЯ‡ЮЕЯ„ЮЙЮКЮЌ ЮМЮЕ Я„ЮП gPodder" #: src/gpodder/gtkui/main.py:3424 #, fuzzy msgid "Please register a YouTube API key and set it in the preferences." msgstr "" "Ю ЮБЯЮБЮКЮБЮЛЯŽ ЯЯ…ЮИЮМЮЏЯƒЯ„ЮЕ Я„ЮЗ ЯƒЯ…ЯƒЮКЮЕЯ…ЮЎ ЯƒЮБЯ‚ ЯƒЯ„ЮП Я€ЮБЯЮЌЮИЯ…ЯЮП ЮДЮЙЮБЮЛЯŒЮГЮПЯ… Я„Я‰ЮН Я€ЯЮПЯ„ЮЙЮМЮЎЯƒЮЕЯ‰ЮН." #: src/gpodder/gtkui/main.py:3425 msgid "Would you like to set up an API key now?" msgstr "" #: src/gpodder/gtkui/main.py:3425 msgid "API key required" msgstr "" #: src/gpodder/gtkui/main.py:3444 bin/gpo:631 #, fuzzy msgid "No unique URL found" msgstr "Ю”ЮЕ ЮВЯЮ­ЮИЮЗЮКЮБЮН ЮКЮБЮНЮЌЮЛЮЙЮБ" #: src/gpodder/gtkui/main.py:3449 bin/gpo:637 #, fuzzy msgid "Already subscribed" msgstr "Ю‘ЮДЯ…ЮНЮБЮМЮЏЮБ ЯƒЯ…ЮНЮДЯЮПЮМЮЎЯ‚ ЯƒЯ„ЮП %s." #: src/gpodder/gtkui/main.py:3458 bin/gpo:649 #, python-format msgid "Make sure the API key is correct. Error: %(message)s" msgstr "" #: src/gpodder/gtkui/main.py:3459 #, fuzzy msgid "Error getting YouTube channels" msgstr "ЮЃЯ†ЮЌЮЛЮМЮБ ЯƒЯ„ЮЗ ЯЯЮИЮМЮЙЯƒЮЗ ЮЕЯ€ЮЙЮЛЮПЮГЮЎЯ‚" #: src/gpodder/gtkui/main.py:3462 #, fuzzy msgid "Successfully migrated subscriptions" msgstr "Ю•Я€ЮЙЯ„Я…Я‡ЮЎЯ‚ Я€ЯЮПЯƒЮИЮЎЮКЮЗ Я„ЮПЯ… %s." #: src/gpodder/gtkui/main.py:3464 #, fuzzy msgid "Subscriptions are up to date" msgstr "Ю— ЯƒЯ…ЮНЮДЯЮПЮМЮЎ Я€ЮБЯЮИЮЗЮКЮЕ" #: src/gpodder/gtkui/main.py:3467 msgid "These URLs failed:" msgstr "" #: src/gpodder/gtkui/main.py:3469 #, fuzzy msgid "Could not migrate some subscriptions" msgstr "Ю”ЮЕЮН ЮЕЮЏЮНЮБЮЙ ЮДЯ…ЮНЮБЯ„ЮЎ ЮЗ Я€ЯЮПЯƒЮИЮЎЮКЮЗ ЮПЯЮЙЯƒЮМЮ­ЮНЯ‰ЮН podcasts" #: src/gpodder/gtkui/main.py:3493 msgid "Cannot start gPodder" msgstr "Ю”ЮЕЮН ЮЕЮЏЮНЮБЮЙ ЮДЯ…ЮНЮБЯ„ЮЎ ЮЗ ЮЕЮКЮКЮЏЮНЮЗЯƒЮЗ Я„ЮПЯ… gPodder" #: src/gpodder/gtkui/main.py:3494 #, python-format msgid "D-Bus error: %s" msgstr "ЮЃЯ†ЮЌЮЛЮМЮБ D-Bus: %s" #: src/gpodder/gtkui/model.py:68 #, python-format msgid "released %s" msgstr "ЮКЯ…ЮКЮЛЮПЯ†ЯŒЯЮЗЯƒЮЕ %s" #: src/gpodder/gtkui/model.py:69 src/gpodder/gtkui/model.py:87 #: src/gpodder/gtkui/model.py:237 src/gpodder/gtkui/shownotes.py:84 #, python-format msgid "from %s" msgstr "ЮБЯ€ЯŒ Я„ЮП %s" #: src/gpodder/gtkui/model.py:80 src/gpodder/gtkui/model.py:393 msgid "played" msgstr "ЮБЮНЮБЯ€ЮБЯЮБЮГЮМЮ­ЮНЮП" #: src/gpodder/gtkui/model.py:82 msgid "unplayed" msgstr "ЮМЮЗ ЮБЮНЮБЯ€ЮБЯЮБЮГЮМЮ­ЮНЮП" #: src/gpodder/gtkui/model.py:85 msgid "today" msgstr "ЯƒЮЎЮМЮЕЯЮБ" #: src/gpodder/gtkui/model.py:86 #, python-format msgid "downloaded %s" msgstr "Ю­ЮГЮЙЮНЮЕ ЮЛЮЎЯˆЮЗ %s" #: src/gpodder/gtkui/model.py:337 msgid "Deleted" msgstr "Ю”ЮЙЮБЮГЯЮЌЯ†ЮЗЮКЮЕ" #: src/gpodder/gtkui/model.py:342 msgid "New episode" msgstr "ЮЮ­ЮП ЮЕЯ€ЮЕЮЙЯƒЯŒЮДЮЙЮП" #: src/gpodder/gtkui/model.py:356 msgid "Downloaded episode" msgstr "ЮšЮБЯ„ЮЕЮВЮБЯƒЮМЮ­ЮНЮП ЮЕЯ€ЮЕЮЙЯƒЯŒЮДЮЙЮП" #: src/gpodder/gtkui/model.py:359 msgid "Downloaded video episode" msgstr "ЮšЮБЯ„ЮЕЮВЮБЯƒЮМЮ­ЮНЮП ЮЕЯ€ЮЕЮЙЯƒЯŒЮДЮЙЮП-ЮВЮЏЮНЯ„ЮЕЮП" #: src/gpodder/gtkui/model.py:362 msgid "Downloaded image" msgstr "ЮšЮБЯ„ЮЕЮВЮБЯƒЮМЮ­ЮНЮЗ ЮЕЮЙЮКЯŒЮНЮБ" #: src/gpodder/gtkui/model.py:365 msgid "Downloaded file" msgstr "ЮšЮБЯ„ЮЕЮВЮБЯƒЮМЮ­ЮНЮП ЮБЯЯ‡ЮЕЮЏЮП" #: src/gpodder/gtkui/model.py:380 msgid "missing file" msgstr "Я„ЮП ЮБЯЯ‡ЮЕЮЏЮП ЮЛЮЕЮЏЯ€ЮЕЮЙ" #: src/gpodder/gtkui/model.py:384 msgid "never displayed" msgstr "Я€ЮПЯ„Ю­ ЮДЮЕЮН Я€ЯЮПЮВЮЛЮЎЮИЮЗЮКЮЕ" #: src/gpodder/gtkui/model.py:386 msgid "never played" msgstr "Я€ЮПЯ„Ю­ ЮДЮЕЮН ЮБЮНЮБЯ€ЮБЯЮЌЯ‡ЮИЮЗЮКЮЕ" #: src/gpodder/gtkui/model.py:388 msgid "never opened" msgstr "Я€ЮПЯ„Ю­ ЮДЮЕЮН ЮБЮНЮПЮЏЯ‡Я„ЮЗЮКЮЕ" #: src/gpodder/gtkui/model.py:391 msgid "displayed" msgstr "Я€ЯЮПЮВЮЛЮЎЮИЮЗЮКЮЕ" #: src/gpodder/gtkui/model.py:395 msgid "opened" msgstr "ЮБЮНЮПЮЏЯ‡Я„ЮЗЮКЮЕ" #: src/gpodder/gtkui/model.py:397 msgid "deletion prevented" msgstr "ЮЗ ЮДЮЙЮБЮГЯЮБЯ†ЮЎ ЮЕЮМЯ€ЮПЮДЮЏЯƒЯ„ЮЗЮКЮЕ" #: src/gpodder/gtkui/model.py:432 share/gpodder/ui/gtk/gpodder.ui.h:32 msgid "All episodes" msgstr "ЮŒЮЛЮБ Я„ЮБ ЮЕЯ€ЮЕЮЙЯƒЯŒЮДЮЙЮБ" #: src/gpodder/gtkui/model.py:433 msgid "from all podcasts" msgstr "ЮБЯ€ЯŒ ЯŒЮЛЮБ Я„ЮБ podcasts" #: src/gpodder/gtkui/model.py:625 msgid "Subscription paused" msgstr "Ю— ЯƒЯ…ЮНЮДЯЮПЮМЮЎ Я€ЮБЯЮИЮЗЮКЮЕ" #: src/gpodder/gtkui/shownotes.py:118 #, fuzzy msgid "Please select an episode" msgstr "Ю•Я€ЮЙЮЛЮПЮГЮЎ ЮЕЯ€ЮЕЮЙЯƒЮПЮДЮЏЯ‰ЮН" #: src/gpodder/gtkui/interface/addpodcast.py:74 msgid "Nothing to paste." msgstr "Ю”ЮЕЮН Я…Я€ЮЌЯЯ‡ЮЕЮЙ Я„ЮЏЯ€ЮПЯ„ЮБ Я€ЯЮПЯ‚ ЮЕЯ€ЮЙЮКЯŒЮЛЮЛЮЗЯƒЮЗ." #: src/gpodder/gtkui/interface/addpodcast.py:74 msgid "Clipboard is empty" msgstr "ЮЄЮП Я€ЯЯŒЯ‡ЮЕЮЙЯЮП ЮЕЮЏЮНЮБЮЙ ЮЌЮДЮЕЮЙЮП" #: src/gpodder/gtkui/interface/common.py:160 msgid "Username" msgstr "ЮŒЮНЮПЮМЮБ Я‡ЯЮЎЯƒЯ„ЮЗ" #: src/gpodder/gtkui/interface/common.py:163 msgid "New user" msgstr "ЮЮ­ЮПЯ‚ Я‡ЯЮЎЯƒЯ„ЮЗЯ‚" #: src/gpodder/gtkui/interface/common.py:170 msgid "Login" msgstr "ЮЃЯЮНЮДЮЕЯƒЮЗ" #: src/gpodder/gtkui/interface/common.py:172 msgid "Authentication required" msgstr "Ю‘Я€ЮБЮЙЯ„ЮЕЮЏЯ„ЮБЮЙ Я€ЮЙЯƒЯ„ЮПЯ€ЮПЮЏЮЗЯƒЮЗ" #: src/gpodder/gtkui/interface/common.py:203 msgid "Password" msgstr "ЮšЯ‰ЮДЮЙЮКЯŒЯ‚ Я€ЯЯŒЯƒЮВЮБЯƒЮЗЯ‚" #: src/gpodder/gtkui/interface/common.py:225 msgid "Select destination" msgstr "Ю•Я€ЮЙЮЛЮПЮГЮЎ Я€ЯЮПЮПЯЮЙЯƒЮМЮПЯ" #: src/gpodder/gtkui/interface/configeditor.py:34 msgid "Setting" msgstr "ЮЁЯЮИЮМЮЙЯƒЮЗ" #: src/gpodder/gtkui/interface/configeditor.py:41 msgid "Set to" msgstr "ЮŸЯЮЙЯƒЮМЯŒЯ‚ Я‰Я‚" #: src/gpodder/gtkui/interface/configeditor.py:81 #, python-format msgid "Cannot set %(field)s to %(value)s. Needed data type: %(datatype)s" msgstr "" "Ю‘ЮДЯ…ЮНЮБЮМЮЏЮБ ЮПЯЮЙЯƒЮМЮПЯ %(field)s Я‰Я‚ %(value)s. Ю‘Я€ЮБЮЙЯ„ЮЕЮЏЯ„ЮБЮЙ Я„ЯЯ€ЮПЯ‚ ЮДЮЕЮДЮПЮМЮ­ЮНЯ‰ЮН: " "%(datatype)s" #: src/gpodder/gtkui/interface/configeditor.py:85 msgid "Error setting option" msgstr "ЮЃЯ†ЮЌЮЛЮМЮБ ЯƒЯ„ЮЗ ЯЯЮИЮМЮЙЯƒЮЗ ЮЕЯ€ЮЙЮЛЮПЮГЮЎЯ‚" #: src/gpodder/gtkui/desktop/channel.py:100 msgid "Add section" msgstr "Ю ЯЮПЯƒЮИЮЎЮКЮЗ Я„ЮМЮЎЮМЮБЯ„ЮПЯ‚" #: src/gpodder/gtkui/desktop/channel.py:100 msgid "New section:" msgstr "ЮЮ­ЮП Я„ЮМЮЎЮМЮБ" #: src/gpodder/gtkui/desktop/channel.py:133 msgid "Select new podcast cover artwork" msgstr "Ю•Я€ЮЙЮЛЮ­ЮОЯ„ЮЕ ЮНЮ­ЮП ЮЕЮОЯŽЯ†Я…ЮЛЮЛЮП podcast" #: src/gpodder/gtkui/desktop/channel.py:161 msgid "You can only drop a single image or URL here." msgstr "ЮœЯ€ЮПЯЮЕЮЏЯ‚ ЮНЮБ ЮБЯ€ЮПЮИЮ­ЯƒЮЕЮЙЯ‚ ЮМЮЏЮБ ЮМЯŒЮНЮП ЮЕЮЙЮКЯŒЮНЮБ ЮЎ ЮДЮЙЮЕЯЮИЯ…ЮНЯƒЮЗ (URL) ЮЕЮДЯŽ." #: src/gpodder/gtkui/desktop/channel.py:161 #: src/gpodder/gtkui/desktop/channel.py:171 msgid "Drag and drop" msgstr "ЮœЮЕЯ„ЮБЯ†ЮПЯЮЌ ЮКЮБЮЙ ЮБЯ€ЯŒЮИЮЕЯƒЮЗ" #: src/gpodder/gtkui/desktop/channel.py:171 msgid "You can only drop local files and http:// URLs here." msgstr "" "ЮœЯ€ЮПЯЮЕЮЏЯ‚ ЮНЮБ ЮБЯ€ЮПЮИЮ­ЯƒЮЕЮЙЯ‚ ЮМЯŒЮНЮП Я„ЮПЯ€ЮЙЮКЮЌ ЮБЯЯ‡ЮЕЮЏЮБ ЮКЮБЮЙ http:// ЮДЮЙЮЕЯ…ЮИЯЮНЯƒЮЕЮЙЯ‚ (URLs) ЮЕЮДЯŽ." #: src/gpodder/gtkui/desktop/deviceplaylist.py:98 #, fuzzy, python-format msgid "Folder %s could not be created." msgstr "Ю— ЯЮПЮЎ ЯƒЯ„ЮП %(url)s ЮДЮЕЮН ЮЎЯ„ЮБЮН ЮДЯ…ЮНЮБЯ„ЯŒ ЮНЮБ ЮЕЮНЮЗЮМЮЕЯЯ‰ЮИЮЕЮЏ." #: src/gpodder/gtkui/desktop/deviceplaylist.py:98 #, fuzzy msgid "Error writing playlist" msgstr "ЮЃЯ†ЮЌЮЛЮМЮБ ЮКЮБЯ„ЮЌ Я„ЮП ЮЌЮНЮПЮЙЮГЮМЮБ Я„ЮПЯ… ЮБЮНЮБЯ€ЮБЯЮБЮГЯ‰ЮГЮ­ЮБ" #: src/gpodder/gtkui/desktop/episodeselector.py:288 #: share/gpodder/ui/gtk/gpodderepisodeselector.ui.h:2 msgid "Select all" msgstr "Ю•Я€ЮЙЮЛЮПЮГЮЎ ЯŒЮЛЯ‰ЮН" #: src/gpodder/gtkui/desktop/episodeselector.py:292 #: share/gpodder/ui/gtk/gpodderepisodeselector.ui.h:3 msgid "Select none" msgstr "Ю‘Я€ЮПЮЕЯ€ЮЙЮЛЮПЮГЮЎ ЯŒЮЛЯ‰ЮН" #: src/gpodder/gtkui/desktop/episodeselector.py:324 msgid "Nothing selected" msgstr "Ю”ЮЕЮН Ю­Я‡ЮЕЮЙ ЮГЮЏЮНЮЕЮЙ ЮКЮБЮМЮЏЮБ ЮЕЯ€ЮЙЮЛЮПЮГЮЎ" #: src/gpodder/gtkui/desktop/episodeselector.py:325 #, python-format msgid "%(count)d episode" msgid_plural "%(count)d episodes" msgstr[0] "%(count)d ЮЕЯ€ЮЕЮЙЯƒЯŒЮДЮЙЮП" msgstr[1] "%(count)d ЮЕЯ€ЮЕЮЙЯƒЯŒЮДЮЙЮБ" #: src/gpodder/gtkui/desktop/episodeselector.py:327 #, python-format msgid "size: %s" msgstr "ЮМЮ­ЮГЮЕЮИЮПЯ‚: %s" #: src/gpodder/gtkui/desktop/podcastdirectory.py:238 #, fuzzy msgid "Loading podcasts" msgstr "Ю ЯЮПЯƒЮИЮЎЮКЮЗ podcasts" #: src/gpodder/gtkui/desktop/podcastdirectory.py:239 #, fuzzy msgid "Please wait while the podcast list is downloaded" msgstr "Ю ЮБЯЮБЮКЮБЮЛЯŽ Я€ЮЕЯЮЏЮМЮЕЮНЮЕ ЮЕЮНЯŽ Я„ЮП podcast ЮБЯ†ЮБЮЙЯЮЕЮЏЯ„ЮБЮЙ" #: src/gpodder/gtkui/desktop/preferences.py:51 #: src/gpodder/gtkui/desktop/preferences.py:93 msgid "Do nothing" msgstr "ЮЮБ ЮМЮЗ ЮГЮЏЮНЮЕЮЙ Я„ЮЏЯ€ЮПЯ„ЮБ" #: src/gpodder/gtkui/desktop/preferences.py:52 msgid "Show episode list" msgstr "Ю•ЮМЯ†ЮЌЮНЮЙЯƒЮЗ Я„ЮЗЯ‚ ЮЛЮЏЯƒЯ„ЮБЯ‚ ЮЕЯ€ЮЕЮЙЯƒЮПЮДЮЏЯ‰ЮН" #: src/gpodder/gtkui/desktop/preferences.py:53 msgid "Add to download list" msgstr "Ю ЯЮПЯƒЮИЮЎЮКЮЗ ЯƒЯ„ЮЗ ЮЛЮЏЯƒЯ„ЮБ Я„Я‰ЮН ЮЛЮЎЯˆЮЕЯ‰ЮН" #: src/gpodder/gtkui/desktop/preferences.py:54 msgid "Download immediately" msgstr "Ю›ЮЎЯˆЮЗ ЮБЮМЮ­ЯƒЯ‰Я‚" #: src/gpodder/gtkui/desktop/preferences.py:72 msgid "None" msgstr "ЮšЮБЮНЮ­ЮНЮБ" #: src/gpodder/gtkui/desktop/preferences.py:73 msgid "iPod" msgstr "" #: src/gpodder/gtkui/desktop/preferences.py:74 msgid "Filesystem-based" msgstr "Ю’ЮБЯƒЮЙЯƒЮМЮ­ЮНЮП ЯƒЮЕ ЯƒЯЯƒЯ„ЮЗЮМЮБ ЮБЯЯ‡ЮЕЮЏЯ‰ЮН" #: src/gpodder/gtkui/desktop/preferences.py:94 #, fuzzy msgid "Mark as played" msgstr "ЮЃЮЎЮМЮБЮНЯƒЮЗ Я‰Я‚ ЮБЮНЮБЯ€ЮБЯЮБЮГЮМЮ­ЮНЮП" #: src/gpodder/gtkui/desktop/preferences.py:95 msgid "Delete from gPodder" msgstr "Ю”ЮЙЮБЮГЯЮБЯ†ЮЎ ЮБЯ€ЯŒ Я„ЮП gPodder" #: src/gpodder/gtkui/desktop/preferences.py:123 #, python-format msgid "Custom (%(format_ids)s)" msgstr "" #: src/gpodder/gtkui/desktop/preferences.py:318 msgid "Name" msgstr "ЮŒЮНЮПЮМЮБ" #: src/gpodder/gtkui/desktop/preferences.py:369 #, fuzzy msgid "Documentation" msgstr "Ю”ЮЙЮЌЯЮКЮЕЮЙЮБ" #: src/gpodder/gtkui/desktop/preferences.py:374 #, fuzzy msgid "Extension info" msgstr "Ю•Я€ЮЕЮКЯ„ЮЌЯƒЮЕЮЙЯ‚" #: src/gpodder/gtkui/desktop/preferences.py:379 msgid "Support the author" msgstr "" #: src/gpodder/gtkui/desktop/preferences.py:413 msgid "Extension cannot be activated" msgstr "Ю— ЮЕЯ€Ю­ЮКЯ„ЮБЯƒЮЗ ЮДЮЕЮН ЮГЮЏЮНЮЕЯ„ЮБЮЙ ЮНЮБ ЮЕЮНЮЕЯЮГЮПЯ€ЮПЮЙЮЗЮИЮЕЮЏ" #: src/gpodder/gtkui/desktop/preferences.py:426 msgid "Extension module info" msgstr "" #: src/gpodder/gtkui/desktop/preferences.py:463 msgid "Configure audio player" msgstr "ЮЁЯЮИЮМЮЙЯƒЮЗ ЮБЮНЮБЯ€ЮБЯЮБЮГЯ‰ЮГЮ­ЮБ ЮЎЯ‡ЮПЯ…" #: src/gpodder/gtkui/desktop/preferences.py:464 #: src/gpodder/gtkui/desktop/preferences.py:474 msgid "Command:" msgstr "Ю•ЮНЯ„ЮПЮЛЮЎ:" #: src/gpodder/gtkui/desktop/preferences.py:473 msgid "Configure video player" msgstr "ЮЁЯЮИЮМЮЙЯƒЮЗ ЮБЮНЮБЯ€ЮБЯЮБЮГЯ‰ЮГЮ­ЮБ ЮВЮЏЮНЯ„ЮЕЮП" #: src/gpodder/gtkui/desktop/preferences.py:485 #: src/gpodder/gtkui/desktop/preferences.py:503 msgid "manually" msgstr "Я‡ЮЕЮЙЯЮПЮКЮЏЮНЮЗЯ„ЮБ" #: src/gpodder/gtkui/desktop/preferences.py:505 #, python-format msgid "after %(count)d day" msgid_plural "after %(count)d days" msgstr[0] "ЮМЮЕЯ„ЮЌ ЮБЯ€ЯŒ %(count)d ЮЗЮМЮ­ЯЮБ" msgstr[1] "ЮМЮЕЯ„ЮЌ ЮБЯ€ЯŒ %(count)d ЮЗЮМЮ­ЯЮЕЯ‚" #: src/gpodder/gtkui/desktop/preferences.py:541 msgid "Replace subscription list on server" msgstr "Ю‘ЮНЯ„ЮЙЮКЮБЯ„ЮБЯƒЯ„ЮЎЯƒЯ„ЮЕ Я„ЮЗ ЮЛЮЏЯƒЯ„ЮБ ЯƒЯ…ЮНЮДЯЮПЮМЯŽЮН ЯƒЯ„ЮП ЮДЮЙЮБЮКЮПЮМЮЙЯƒЯ„ЮЎ" #: src/gpodder/gtkui/desktop/preferences.py:542 msgid "" "Remote podcasts that have not been added locally will be removed on the " "server. Continue?" msgstr "" "Ю‘Я€ЮПЮМЮБЮКЯЯ…ЯƒЮМЮ­ЮНЮБ podcasts Я€ЮПЯ… ЮДЮЕЮН Ю­Я‡ЮПЯ…ЮН Я€ЯЮПЯƒЯ„ЮЕЮИЮЕЮЏ Я„ЮПЯ€ЮЙЮКЮЌ ЮИЮБ ЮБЯ†ЮБЮЙЯЮЕЮИЮПЯЮН ЮБЯ€ЯŒ Я„ЮП " "ЮДЮЙЮБЮКЮПЮМЮЙЯƒЯ„ЮЎ. ޘޭЮЛЮЕЯ„ЮЕ ЮБ ЯƒЯ…ЮНЮЕЯ‡ЮЏЯƒЮЕЯ„ЮЕ;" #: src/gpodder/gtkui/desktop/preferences.py:621 msgid "Select folder for mount point" msgstr "Ю•Я€ЮЙЮЛЮ­ЮОЯ„ЮЕ Я„ЮП Я†ЮЌЮКЮЕЮЛЮП ЮГЮЙЮБ Я„ЮП ЯƒЮЗЮМЮЕЮЏЮП Я€ЯЮПЯƒЮЌЯЯ„ЮЗЯƒЮЗЯ‚" #: src/gpodder/gtkui/desktop/preferences.py:638 #, fuzzy msgid "Select folder for playlists" msgstr "Ю•Я€ЮЙЮЛЮ­ЮОЯ„ЮЕ Я„ЮП Я†ЮЌЮКЮЕЮЛЮП ЮГЮЙЮБ Я„ЮП ЯƒЮЗЮМЮЕЮЏЮП Я€ЯЮПЯƒЮЌЯЯ„ЮЗЯƒЮЗЯ‚" #: src/gpodder/gtkui/desktop/sync.py:86 msgid "No device configured" msgstr "ЮšЮБЮМЮЏЮБ ЯƒЯ…ЯƒЮКЮЕЯ…ЮЎ ЮДЮЕЮН Ю­Я‡ЮЕЮЙ ЯЯ…ЮИЮМЮЙЯƒЯ„ЮЕЮЏ" #: src/gpodder/gtkui/desktop/sync.py:87 msgid "Please set up your device in the preferences dialog." msgstr "" "Ю ЮБЯЮБЮКЮБЮЛЯŽ ЯЯ…ЮИЮМЮЏЯƒЯ„ЮЕ Я„ЮЗ ЯƒЯ…ЯƒЮКЮЕЯ…ЮЎ ЯƒЮБЯ‚ ЯƒЯ„ЮП Я€ЮБЯЮЌЮИЯ…ЯЮП ЮДЮЙЮБЮЛЯŒЮГЮПЯ… Я„Я‰ЮН Я€ЯЮПЯ„ЮЙЮМЮЎЯƒЮЕЯ‰ЮН." #: src/gpodder/gtkui/desktop/sync.py:91 msgid "Cannot open device" msgstr "Ю‘ЮДЯ…ЮНЮБЮМЮЏЮБ ЮБЮНЮПЮЏЮГЮМЮБЯ„ЮПЯ‚ Я„ЮЗЯ‚ ЯƒЯ…ЯƒЮКЮЕЯ…ЮЎЯ‚" #: src/gpodder/gtkui/desktop/sync.py:92 msgid "Please check the settings in the preferences dialog." msgstr "Ю ЮБЯЮБЮКЮБЮЛЯŽ ЮЕЮЛЮ­ЮГЮОЯ„ЮЕ Я„ЮЙЯ‚ ЯЯ…ЮИЮМЮЏЯƒЮЕЮЙЯ‚ ЯƒЯ„ЮП Я€ЮБЯЮЌЮИЯ…ЯЮП ЮДЮЙЮБЮЛЯŒЮГЮПЯ… Я„Я‰ЮН Я€ЯЮПЯ„ЮЙЮМЮЎЯƒЮЕЯ‰ЮН." #: src/gpodder/gtkui/desktop/sync.py:139 msgid "Not enough space left on device" msgstr "Ю”ЮЕЮН Ю­Я‡ЮЕЮЙ ЮМЮЕЮЏЮНЮЕЮЙ ЮБЯЮКЮЕЯ„ЯŒЯ‚ Я‡ЯŽЯЮПЯ‚ ЯƒЯ„ЮЗ ЯƒЯ…ЯƒЮКЮЕЯ…ЮЎ" #: src/gpodder/gtkui/desktop/sync.py:140 #, fuzzy, python-format msgid "" "Additional free space required: %(required_space)s\n" "Do you want to continue?" msgstr "" "ЮЇЯЮЕЮЙЮЌЮЖЮЕЯ„ЮБЮЙ ЮНЮБ ЮЕЮЛЮЕЯ…ЮИЮЕЯЯŽЯƒЮЕЮЙЯ‚ %s.\n" "ޘޭЮЛЮЕЮЙЯ‚ ЮНЮБ ЯƒЯ…ЮНЮЕЯ‡ЮЏЯƒЮЕЮЙЯ‚;" #: src/gpodder/gtkui/desktop/sync.py:199 #, fuzzy msgid "Update successful" msgstr "Ю— ЮЛЮЏЯƒЯ„ЮБ ЮМЮЕЯ„ЮБЯ†ЮПЯЯ„ЯŽЮИЮЗЮКЮЕ ЮМЮЕ ЮЕЯ€ЮЙЯ„Я…Я‡ЮЏЮБ." #: src/gpodder/gtkui/desktop/sync.py:200 msgid "The playlist on your MP3 player has been updated." msgstr "" #: src/gpodder/gtkui/desktop/sync.py:274 msgid "Episodes have been deleted on device" msgstr "" #: src/gpodder/gtkui/desktop/sync.py:285 #, fuzzy msgid "Error writing playlist files" msgstr "ЮЃЯ†ЮЌЮЛЮМЮБ ЮКЮБЯ„ЮЌ Я„ЮЗ ЮМЮЕЯ„ЮБЯ„ЯЮПЯ€ЮЎ Я„ЮПЯ… ЮБЯЯ‡ЮЕЮЏЮПЯ…." #: src/gpodder/plugins/soundcloud.py:154 msgid "Unknown track" msgstr "Ю†ЮГЮНЯ‰ЯƒЯ„ЮП ЮКЮПЮМЮМЮЌЯ„ЮЙ" #: src/gpodder/plugins/soundcloud.py:181 #, python-format msgid "%s on Soundcloud" msgstr "%s ЯƒЯ„ЮП Soundcloud" #: src/gpodder/plugins/soundcloud.py:190 #, python-format msgid "Tracks published by %s on Soundcloud." msgstr "ЮšЮПЮМЮМЮЌЯ„ЮЙЮБ Я€ЮПЯ… ЮДЮЗЮМЮПЯƒЮЙЮЕЯЯ„ЮЗЮКЮБЮН ЮБЯ€ЯŒ %s ЯƒЯ„ЮП Soundcloud" #: src/gpodder/plugins/soundcloud.py:217 #, python-format msgid "%s's favorites on Soundcloud" msgstr "Ю‘ЮГЮБЯ€ЮЗЮМЮ­ЮНЮБ ЮБЯ€ЯŒ %s ЯƒЯ„ЮП Soundcloud" #: src/gpodder/plugins/soundcloud.py:223 #, python-format msgid "Tracks favorited by %s on Soundcloud." msgstr "Ю‘ЮГЮБЯ€ЮЗЮМЮ­ЮНЮБ ЮКЮПЮМЮМЮЌЯ„ЮЙЮБ ЮБЯ€ЯŒ %s ЯƒЯ„ЮП Soundcloud" #: share/gpodder/extensions/audio_converter.py:20 #, fuzzy msgid "Convert audio files" msgstr "Ю— ЮМЮЕЯ„ЮБЯ„ЯЮПЯ€ЮЎ ЮБЯ€Ю­Я„Я…Я‡ЮЕ" #: share/gpodder/extensions/audio_converter.py:21 msgid "Transcode audio files to mp3/ogg" msgstr "" #: share/gpodder/extensions/audio_converter.py:84 #: share/gpodder/extensions/video_converter.py:86 #, python-format msgid "Convert to %(format)s" msgstr "ЮœЮЕЯ„ЮБЯ„ЯЮПЯ€ЮЎ ЯƒЮЕ Я„ЯЯ€ЮП %(format)s" #: share/gpodder/extensions/audio_converter.py:111 #: share/gpodder/extensions/rockbox_convert2mp4.py:65 #: share/gpodder/extensions/video_converter.py:111 msgid "File converted" msgstr "Ю— ЮМЮЕЯ„ЮБЯ„ЯЮПЯ€ЮЎ ЮПЮЛЮПЮКЮЛЮЗЯЯŽЮИЮЗЮКЮЕ" #: share/gpodder/extensions/audio_converter.py:114 #: share/gpodder/extensions/video_converter.py:114 msgid "Conversion failed" msgstr "Ю— ЮМЮЕЯ„ЮБЯ„ЯЮПЯ€ЮЎ ЮБЯ€Ю­Я„Я…Я‡ЮЕ" #: share/gpodder/extensions/concatenate_videos.py:20 #: share/gpodder/extensions/concatenate_videos.py:100 #, fuzzy msgid "Concatenate videos" msgstr "Ю— ЮМЮЕЯ„ЮБЯ„ЯЮПЯ€ЮЎ ЮБЯ€Ю­Я„Я…Я‡ЮЕ" #: share/gpodder/extensions/concatenate_videos.py:21 msgid "Add a context menu item for concatenating multiple videos" msgstr "" #: share/gpodder/extensions/concatenate_videos.py:37 msgid "Save video" msgstr "" #: share/gpodder/extensions/concatenate_videos.py:66 #, fuzzy msgid "Concatenating video files" msgstr "Ю— ЮМЮЕЯ„ЮБЯ„ЯЮПЯ€ЮЎ ЮБЯ€Ю­Я„Я…Я‡ЮЕ" #: share/gpodder/extensions/concatenate_videos.py:67 #, python-format msgid "Writing %(filename)s" msgstr "" #: share/gpodder/extensions/concatenate_videos.py:78 msgid "Videos successfully converted" msgstr "" #: share/gpodder/extensions/concatenate_videos.py:79 #, fuzzy msgid "Error converting videos" msgstr "ЮЃЯ†ЮЌЮЛЮМЮБ ЮКЮБЯ„ЮЌ Я„ЮЗ ЮМЮЕЯ„ЮБЯ„ЯЮПЯ€ЮЎ Я„ЮПЯ… ЮБЯЯ‡ЮЕЮЏЮПЯ…." #: share/gpodder/extensions/concatenate_videos.py:80 msgid "Concatenation result" msgstr "" #: share/gpodder/extensions/enqueue_in_mediaplayer.py:16 msgid "Enqueue in media players" msgstr "" #: share/gpodder/extensions/enqueue_in_mediaplayer.py:17 msgid "" "Add a context menu item for enqueueing episodes in installed media players" msgstr "" #: share/gpodder/extensions/enqueue_in_mediaplayer.py:35 msgid "Enqueue in" msgstr "" #: share/gpodder/extensions/episode_website_context_menu.py:14 msgid "\"Open website\" episode context menu" msgstr "" #: share/gpodder/extensions/episode_website_context_menu.py:15 msgid "Add a context menu item for opening the website of an episode" msgstr "" #: share/gpodder/extensions/episode_website_context_menu.py:30 #, fuzzy msgid "Open website" msgstr "Ю™ЯƒЯ„ЯŒЯ„ЮПЯ€ЮПЯ‚:" #: share/gpodder/extensions/gtk_statusicon.py:14 msgid "Gtk Status Icon" msgstr "" #: share/gpodder/extensions/gtk_statusicon.py:15 msgid "Show a status icon for Gtk-based Desktops." msgstr "" #: share/gpodder/extensions/minimize_on_start.py:10 msgid "Minimize on start" msgstr "Ю•ЮЛЮБЯ‡ЮЙЯƒЯ„ЮПЯ€ЮПЮЏЮЗЯƒЮЗ ЮКЮБЯ„ЮЌ Я„ЮЗЮН Ю­ЮНЮБЯЮОЮЗ" #: share/gpodder/extensions/minimize_on_start.py:11 msgid "Minimizes the gPodder window on startup." msgstr "Ю•ЮЛЮБЯ‡ЮЙЯƒЯ„ЮПЯ€ЮПЮЏЮЗЯƒЮЗ Я„ЮПЯ… gPodder ЮКЮБЯ„ЮЌ Я„ЮЗЮН ЮЕЮКЮКЮЏЮНЮЗЯƒЮЗ" #: share/gpodder/extensions/mpris-listener.py:33 msgid "MPRIS Listener" msgstr "" #: share/gpodder/extensions/mpris-listener.py:34 msgid "Convert MPRIS notifications to gPodder Media Player D-Bus API" msgstr "" #: share/gpodder/extensions/normalize_audio.py:21 msgid "Normalize audio with re-encoding" msgstr "" #: share/gpodder/extensions/normalize_audio.py:22 msgid "Normalize the volume of audio files with normalize-audio" msgstr "" #: share/gpodder/extensions/normalize_audio.py:99 #, fuzzy msgid "File normalized" msgstr "ЮŒЮНЮПЮМЮБ ЮБЯЯ‡ЮЕЮЏЮПЯ…" #: share/gpodder/extensions/rename_download.py:16 msgid "Rename episodes after download" msgstr "ЮœЮЕЯ„ЮПЮНЮПЮМЮБЯƒЮЏЮБ Я„Я‰ЮН ЮЕЯ€ЮЕЮЙЯƒЮПЮДЮЏЯ‰ЮН ЮМЮЕЯ„ЮЌ Я„ЮЗ ЮЛЮЎЯˆЮЗ" #: share/gpodder/extensions/rename_download.py:17 msgid "Rename episodes to \".\" on download" msgstr "" #: share/gpodder/extensions/rm_ogg_cover.py:37 msgid "Remove cover art from OGG files" msgstr "Ю‘Я†ЮБЮЙЯЮ­ЯƒЯ„ЮЕ Я„ЮБ ЮЕЮОЯŽЯ†Я…ЮЛЮЛЮБ ЮБЯ€ЯŒ Я„ЮБ ЮБЯЯ‡ЮЕЮЏЮБ OGG" #: share/gpodder/extensions/rm_ogg_cover.py:38 msgid "removes coverart from all downloaded ogg files" msgstr "ЮБЯ†ЮБЮЙЯЮЕЮЏ Я„ЮБ ЮЕЮОЯŽЯ†Я…ЮЛЮЛЮБ ЮБЯ€ЯŒ ЯŒЮЛЮБ Я„ЮБ ЮБЯЯ‡ЮЕЮЏЮБ OGG" #: share/gpodder/extensions/rm_ogg_cover.py:66 msgid "Remove cover art" msgstr "Ю‘Я†ЮБЮЙЯЮ­ЯƒЯ„ЮЕ Я„ЮБ ЮЕЮОЯŽЯ†Я…ЮЛЮЛЮБ" #: share/gpodder/extensions/rockbox_convert2mp4.py:26 msgid "Convert video files to MP4 for Rockbox" msgstr "ЮœЮЕЯ„ЮБЯ„ЯЮПЯ€ЮЎ ЮБЯЯ‡ЮЕЮЏЯ‰ЮН ЮВЮЏЮНЯ„ЮЕЮП ЯƒЮЕ MP4 ЮГЮЙЮБ Я„ЮП Rockbox" #: share/gpodder/extensions/rockbox_convert2mp4.py:27 msgid "Converts all videos to a Rockbox-compatible format" msgstr "ЮœЮЕЯ„ЮБЯ„ЯЮПЯ€ЮЎ ЯŒЮЛЯ‰ЮН Я„Я‰ЮН ЮВЮЏЮНЯ„ЮЕЮП ЯƒЮЕ ЮМЮПЯЯ†ЮЎ ЯƒЯ…ЮМЮВЮБЯ„ЮЎ ЮМЮЕ Я„ЮП Rockbox" #: share/gpodder/extensions/sonos.py:19 share/gpodder/extensions/sonos.py:78 msgid "Stream to Sonos" msgstr "" #: share/gpodder/extensions/sonos.py:20 msgid "Stream podcasts to Sonos speakers" msgstr "" #: share/gpodder/extensions/tagging.py:45 msgid "Tag downloaded files using Mutagen" msgstr "" #: share/gpodder/extensions/tagging.py:46 #, fuzzy msgid "Add episode and podcast titles to MP3/OGG tags" msgstr "Ю•ЮМЯ†ЮЌЮНЮЙЯƒЮЗ \"ЮŒЮЛЮБ Я„ЮБ ЮЕЯ€ЮЕЮЙЯƒЯŒЮДЮЙЮБ\" ЯƒЯ„ЮЗ ЮЛЮЏЯƒЯ„ЮБ Я„Я‰ЮН podcast" #: share/gpodder/extensions/taskbar_progress.py:28 #, fuzzy msgid "Show download progress on the taskbar" msgstr "Ю ЯЮПЮВЮПЮЛЮЎ Я€ЯЮПЯŒЮДЮПЯ… ЮЛЮЎЯˆЮЗЯ‚ ЯƒЯ„ЮП ЮЕЮЙЮКЮПЮНЮЏЮДЮЙЮП Я„ЮПЯ… Unity Launcher." #: share/gpodder/extensions/taskbar_progress.py:29 msgid "Displays the progress on the Windows taskbar." msgstr "" #: share/gpodder/extensions/ted_subtitles.py:16 msgid "Subtitle Downloader for TED Talks" msgstr "" #: share/gpodder/extensions/ted_subtitles.py:17 msgid "Downloads .srt subtitles for TED Talks Videos" msgstr "" #: share/gpodder/extensions/ubuntu_appindicator.py:10 msgid "Ubuntu App Indicator" msgstr "" #: share/gpodder/extensions/ubuntu_appindicator.py:11 msgid "Show a status indicator in the top bar." msgstr "" #: share/gpodder/extensions/ubuntu_appindicator.py:47 msgid "Show main window" msgstr "Ю•ЮМЯ†ЮЌЮНЮЙЯƒЮЗ ЮВЮБЯƒЮЙЮКЮПЯ Я€ЮБЯЮБЮИЯЯЮПЯ…" #: share/gpodder/extensions/ubuntu_appindicator.py:57 #: share/gpodder/ui/gtk/gpodder.ui.h:6 msgid "Quit" msgstr "ЮˆЮОЮПЮДЮПЯ‚" #: share/gpodder/extensions/ubuntu_unity.py:10 msgid "Ubuntu Unity Integration" msgstr "Ю•ЮНЯƒЯ‰ЮМЮЌЯ„Я‰ЯƒЮЗ Ubuntu Unity" #: share/gpodder/extensions/ubuntu_unity.py:11 msgid "Show download progress in the Unity Launcher icon." msgstr "Ю ЯЮПЮВЮПЮЛЮЎ Я€ЯЮПЯŒЮДЮПЯ… ЮЛЮЎЯˆЮЗЯ‚ ЯƒЯ„ЮП ЮЕЮЙЮКЮПЮНЮЏЮДЮЙЮП Я„ЮПЯ… Unity Launcher." #: share/gpodder/extensions/update_feeds_on_startup.py:14 #, fuzzy msgid "Search for new episodes on startup" msgstr "ЮˆЮЛЮЕЮГЯ‡ЮПЯ‚ ЮГЮЙЮБ ЮНЮ­ЮБ ЮЕЯ€ЮЕЮЙЯƒЯŒЮДЮЙЮБ ЮКЮБЯ„ЮЌ Я„ЮЗЮН ЮЕЮКЮКЮЏЮНЮЗЯƒЮЗ" #: share/gpodder/extensions/update_feeds_on_startup.py:15 #, fuzzy msgid "Starts the search for new episodes on startup" msgstr "ЮˆЮЛЮЕЮГЯ‡ЮПЯ‚ ЮГЮЙЮБ ЮНЮ­ЮБ ЮЕЯ€ЮЕЮЙЯƒЯŒЮДЮЙЮБ ЮКЮБЯ„ЮЌ Я„ЮЗЮН ЮЕЮКЮКЮЏЮНЮЗЯƒЮЗ" #: share/gpodder/extensions/video_converter.py:22 #, fuzzy msgid "Convert video files" msgstr "Ю— ЮМЮЕЯ„ЮБЯ„ЯЮПЯ€ЮЎ ЮБЯ€Ю­Я„Я…Я‡ЮЕ" #: share/gpodder/extensions/video_converter.py:23 msgid "Transcode video files to avi/mp4/m4v" msgstr "" #: share/gpodder/ui/gtk/gpodderaddpodcast.ui.h:1 msgid "Add a new podcast" msgstr "Ю ЯЮПЯƒЮИЮ­ЯƒЯ„ЮЕ Ю­ЮНЮБ ЮНЮ­ЮП podcast" #: share/gpodder/ui/gtk/gpodderaddpodcast.ui.h:2 msgid "URL:" msgstr "Ю”ЮЙЮЕЯЮИЯ…ЮНЯƒЮЗ (URL):" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:1 msgid "gPodder Podcast Editor" msgstr "Ю•Я€ЮЕЮОЮЕЯЮГЮБЯƒЯ„ЮЎЯ‚ Podcast Я„ЮПЯ… gPodder" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:2 msgid "Section:" msgstr "ЮЄЮМЮЎЮМЮБ:" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:3 msgid "Disable feed updates (pause subscription)" msgstr "Ю‘Я€ЮЕЮНЮЕЯЮГЮПЯ€ЮПЮЏЮЗЯƒЮЗ Я„Я‰ЮН ЮЕЮНЮЗЮМЮЕЯЯŽЯƒЮЕЯ‰ЮН Я„ЮЗЯ‚ ЯЮПЮЎЯ‚ (Я€ЮБЯЯƒЮЗ ЯƒЯ…ЮНЮДЯЮПЮМЮЎЯ‚)" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:4 msgid "Synchronize to MP3 player devices" msgstr "" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:5 msgid "Strategy:" msgstr "" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:6 #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:6 msgid "General" msgstr "Ю“ЮЕЮНЮЙЮКЮЌ" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:7 msgid "HTTP/FTP Authentication" msgstr "Ю ЮЙЯƒЯ„ЮПЯ€ЮПЮЏЮЗЯƒЮЗ HTTP/FTP" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:8 #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:13 msgid "Username:" msgstr "ЮŒЮНЮПЮМЮБ Я‡ЯЮЎЯƒЯ„ЮЗ:" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:9 #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:14 msgid "Password:" msgstr "ЮšЯ‰ЮДЮЙЮКЯŒЯ‚ Я€ЯЯŒЯƒЮВЮБЯƒЮЗЯ‚:" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:10 msgid "Locations" msgstr "ЮЄЮПЯ€ЮПЮИЮЕЯƒЮЏЮЕЯ‚" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:11 msgid "Download to:" msgstr "Ю›ЮЎЯˆЮЗ ЯƒЯ„ЮП:" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:12 msgid "Website:" msgstr "Ю™ЯƒЯ„ЯŒЯ„ЮПЯ€ЮПЯ‚:" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:13 msgid "website label" msgstr "ЮЕЯ€ЮЙЮГЯЮБЯ†ЮЎ ЮЙЯƒЯ„ЯŒЯ„ЮПЯ€ЮПЯ…" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:14 msgid "Advanced" msgstr "Ю ЯЮПЯ‡Я‰ЯЮЗЮМЮ­ЮНЮЕЯ‚ ЯЯ…ЮИЮМЮЏЯƒЮЕЮЙЯ‚" #: share/gpodder/ui/gtk/gpodderconfigeditor.ui.h:1 msgid "gPodder Configuration Editor" msgstr "Ю•Я€ЮЕЮОЮЕЯЮГЮБЯƒЯ„ЮЎЯ‚ ЯЯ…ЮИЮМЮЏЯƒЮЕЯ‰ЮН gPodder" #: share/gpodder/ui/gtk/gpodderconfigeditor.ui.h:2 msgid "Search for:" msgstr "Ю‘ЮНЮБЮЖЮЎЯ„ЮЗЯƒЮЗ ЮГЮЙЮБ:" #: share/gpodder/ui/gtk/gpodderconfigeditor.ui.h:3 msgid "Show All" msgstr "Ю•ЮМЯ†ЮЌЮНЮЙЯƒЮЗ ЯŒЮЛЯ‰ЮН" #: share/gpodder/ui/gtk/gpodderepisodeselector.ui.h:1 msgid "Select episodes" msgstr "Ю•Я€ЮЙЮЛЮПЮГЮЎ ЮЕЯ€ЮЕЮЙЯƒЮПЮДЮЏЯ‰ЮН" #: share/gpodder/ui/gtk/gpodderpodcastdirectory.ui.h:1 msgid "Find new podcasts" msgstr "Ю’ЯЮЕЮЏЯ„ЮЕ ЮНЮ­ЮБ podcasts" #: share/gpodder/ui/gtk/gpodderpodcastdirectory.ui.h:2 msgid "Select All" msgstr "Ю•Я€ЮЙЮЛЮПЮГЮЎ ЯŒЮЛЯ‰ЮН" #: share/gpodder/ui/gtk/gpodderpodcastdirectory.ui.h:3 msgid "Select None" msgstr "Ю‘Я€ЮПЮЕЯ€ЮЙЮЛЮПЮГЮЎ ЯŒЮЛЯ‰ЮН" #: share/gpodder/ui/gtk/gpodderpodcastdirectory.ui.h:4 msgid "label" msgstr "" #: share/gpodder/ui/gtk/gpodderpodcastdirectory.ui.h:5 msgid "..." msgstr "" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:1 #: share/gpodder/ui/gtk/gpodder.ui.h:5 msgid "Preferences" msgstr "Ю ЯЮПЯ„ЮЙЮМЮЎЯƒЮЕЮЙЯ‚" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:2 msgid "Audio player:" msgstr "Ю‘ЮНЮБЯ€ЮБЯЮБЮГЯ‰ЮГЮ­ЮБЯ‚ ЮЎЯ‡ЮПЯ…:" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:3 msgid "Video player:" msgstr "Ю‘ЮНЮБЯ€ЮБЯЮБЮГЯ‰ЮГЮ­ЮБЯ‚ ЮВЮЏЮНЯ„ЮЕЮП:" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:4 msgid "\"All episodes\" in podcast list" msgstr "\"ЮŒЮЛЮБ Я„ЮБ ЮЕЯ€ЮЙЯƒЯŒЮДЮЙЮБ\" ЯƒЯ„ЮЗЮН ЮЛЮЏЯƒЯ„ЮБ Я„Я‰ЮН podcast" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:5 msgid "Use sections for podcast list" msgstr "ЮЇЯЮЎЯƒЮЗ Я„ЮМЮЗЮМЮЌЯ„Я‰ЮН ЮГЮЙЮБ Я„ЮЗЮН ЮЛЮЏЯƒЯ„ЮБ Я„Я‰ЮН podcast" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:7 msgid "Preferred YouTube format:" msgstr "" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:8 msgid "YouTube API key (v3):" msgstr "" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:9 msgid "Preferred Vimeo format:" msgstr "" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:11 msgid "Extensions" msgstr "Ю•Я€ЮЕЮКЯ„ЮЌЯƒЮЕЮЙЯ‚" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:12 msgid "Synchronize subscriptions and episode actions" msgstr "ЮЃЯ…ЮГЯ‡ЯЮПЮНЮЏЯƒЯ„ЮЕ Я„ЮЙЯ‚ ЯƒЯ…ЮНЮДЯЮПЮМЮ­Я‚ ЮКЮБЮЙ Я„ЮЙЯ‚ ЮЕЮНЮ­ЯЮГЮЕЮЙЮЕЯ‚ ЮЕЯ€ЮЕЮЙЯƒЮПЮДЮЏЮПЯ…" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:15 msgid "Replace list on server with local subscriptions" msgstr "Ю‘ЮНЯ„ЮЙЮКЮБЯ„ЮБЯƒЯ„ЮЎЯƒЯ„ЮЕ Я„ЮЗ ЮЛЮЏЯƒЯ„ЮБ ЯƒЯ„ЮП ЮДЮЙЮБЮКЮПЮМЮЙЯƒЯ„ЮЎ ЮМЮЕ Я„ЮЙЯ‚ Я„ЮПЯ€ЮЙЮКЮ­Я‚ ЯƒЯ…ЮНЮДЯЮПЮМЮ­Я‚" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:16 msgid "Device name:" msgstr "ЮŒЮНЮПЮМЮБ ЯƒЯ…ЯƒЮКЮЕЯ…ЮЎЯ‚:" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:17 msgid "gpodder.net" msgstr "gpodder.net" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:18 msgid "Update interval:" msgstr "Ю”ЮЙЮЌЯƒЯ„ЮЗЮМЮБ ЮЕЮНЮЗЮМЮ­ЯЯ‰ЯƒЮЗЯ‚:" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:19 msgid "Maximum number of episodes per podcast:" msgstr "ЮœЮ­ЮГЮЙЯƒЯ„ЮПЯ‚ ЮБЯЮЙЮИЮМЯŒЯ‚ ЮЕЯ€ЮЕЮЙЯƒЮПЮДЮЏЯ‰ЮН ЮБЮНЮЌ podcast:" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:20 msgid "When new episodes are found:" msgstr "ЮŒЯ„ЮБЮН ЮВЯЮЕЮИЮПЯЮН ЮНЮ­ЮБ ЮЕЯ€ЮЕЮЙЯƒЯŒЮДЮЙЮБ:" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:21 msgid "Updating" msgstr "Ю•ЮНЮЗЮМЮ­ЯЯ‰ЯƒЮЗ" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:22 msgid "Delete played episodes:" msgstr "Ю”ЮЙЮБЮГЯЮБЯ†ЮЎ ЮБЮНЮБЯ€ЮБЯЮБЮГЮМЮ­ЮНЯ‰ЮН ЮЕЯ€ЮЕЮЙЯƒЮПЮДЮЏЯ‰ЮН:" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:23 msgid "Remove played episodes even if unfinished" msgstr "Ю‘Я†ЮБЮЏЯЮЕЯƒЮЗ ЮБЯ„ЮЕЮЛЮЕЮЏЯ‰Я„Я‰ЮН ЮЕЯ€ЮЕЮЙЯƒЮПЮДЮЏЯ‰ЮН Я€ЮПЯ… Я€ЮБЮЏЯ‡Я„ЮЙЮКЮБЮН " #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:24 msgid "Also remove unplayed episodes" msgstr "Ю•Я€ЮЏЯƒЮЗЯ‚, ЮБЯ†ЮБЮЏЯЮЕЯƒЮЗ ЮМЮЗ ЮБЮНЮБЯ€ЮБЯЮБЮГЮМЮ­ЮНЯ‰ЮН ЮЕЯ€ЮЕЮЙЯƒЮПЮДЮЏЯ‰ЮН" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:25 msgid "Clean-up" msgstr "Ю•ЮКЮКЮБЮИЮЌЯЮЙЯƒЮЗ" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:26 msgid "Device type:" msgstr "ЮЄЯЯ€ЮПЯ‚ ЯƒЯ…ЯƒЮКЮЕЯ…ЮЎЯ‚:" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:27 msgid "Mountpoint:" msgstr "ЮЃЮЗЮМЮЕЮЏЮП Я€ЯЮПЯƒЮЌЯЯ„ЮЗЯƒЮЗЯ‚:" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:28 msgid "After syncing an episode:" msgstr "ЮœЮЕЯ„ЮЌ Я„ЮП ЯƒЯ…ЮГЯ‡ЯЮПЮНЮЙЯƒЮМЯŒ ЮЕЮНЯŒЯ‚ ЮЕЯ€ЮЕЮЙЯƒЮПЮДЮЏЮПЯ…:" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:29 #, fuzzy msgid "Create playlists on device" msgstr "Ю‘ЮНЯ„ЮЙЮКЮБЯ„ЮЌЯƒЯ„ЮБЯƒЮЗ ЮЛЮЏЯƒЯ„ЮБЯ‚ ЯƒЯ„ЮПЮН ЮДЮЙЮБЮКЮПЮМЮЙЯƒЯ„ЮЎ" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:30 #, fuzzy msgid "Playlists Folder:" msgstr "Ю†ЮДЮЕЮЙЮБ ЮЛЮЏЯƒЯ„ЮБ ЮБЮНЮБЯ€ЮБЯЮБЮГЯ‰ЮГЮЎЯ‚" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:31 msgid "Remove episodes deleted on device from gPodder" msgstr "" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:32 msgid "Only sync unplayed episodes" msgstr "ЮЃЯ…ЮГЯ‡ЯЮПЮНЮЙЯƒЮМЯŒЯ‚ ЮМЯŒЮНЮП Я„Я‰ЮН ЮМЮЗ ЮБЮНЮБЯ€ЮБЯЮБЮГЮМЮ­ЮНЯ‰ЮН ЮЕЯ€ЮЕЮЙЯƒЮПЮДЮЏЯ‰ЮН" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:33 msgid "Devices" msgstr "ЮЃЯ…ЯƒЮКЮЕЯ…Ю­Я‚" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:34 msgid "Edit config" msgstr "Ю•Я€ЮЕЮОЮЕЯЮГЮБЯƒЮЏЮБ ЯЯ…ЮИЮМЮЏЯƒЮЕЯ‰ЮН" #: share/gpodder/ui/gtk/gpodder.ui.h:1 msgid "_Podcasts" msgstr "_Podcasts" #: share/gpodder/ui/gtk/gpodder.ui.h:2 msgid "Check for new episodes" msgstr "ЮˆЮЛЮЕЮГЯ‡ЮПЯ‚ ЮГЮЙЮБ ЮНЮ­ЮБ ЮЕЯ€ЮЕЮЙЯƒЯŒЮДЮЙЮБ" #: share/gpodder/ui/gtk/gpodder.ui.h:3 msgid "Download new episodes" msgstr "Ю›ЮЎЯˆЮЗ ЮНЮ­Я‰ЮН ЮЕЯ€ЮЕЮЙЯƒЮПЮДЮЏЯ‰ЮН" #: share/gpodder/ui/gtk/gpodder.ui.h:7 msgid "_Subscriptions" msgstr "_ЮЃЯ…ЮНЮДЯЮПЮМЮ­Я‚" #: share/gpodder/ui/gtk/gpodder.ui.h:8 msgid "Discover new podcasts" msgstr "Ю‘ЮНЮБЮКЮБЮЛЯЯˆЯ„ЮЕ ЮНЮ­ЮБ podcasts" #: share/gpodder/ui/gtk/gpodder.ui.h:9 msgid "Add podcast via URL" msgstr "Ю ЯЮПЯƒЮИЮЎЮКЮЗ podcast ЮМЮ­ЯƒЯ‰ Я„ЮЗЯ‚ ЮДЮЙЮЕЯЮИЯ…ЮНЯƒЮЗЯ‚ (URL)" #: share/gpodder/ui/gtk/gpodder.ui.h:11 msgid "Unsubscribe" msgstr "ЮšЮБЯ„ЮЌЯЮГЮЗЯƒЮЗ ЯƒЯ…ЮНЮДЯЮПЮМЮЎЯ‚" #: share/gpodder/ui/gtk/gpodder.ui.h:14 msgid "Import from OPML file" msgstr "Ю•ЮЙЯƒЮБЮГЯ‰ЮГЮЎ ЮБЯ€ЯŒ ЮБЯЯ‡ЮЕЮЏЮП OPML" #: share/gpodder/ui/gtk/gpodder.ui.h:15 msgid "Export to OPML file" msgstr "Ю•ЮОЮБЮГЯ‰ЮГЮЎ ЯƒЮЕ ЮБЯЯ‡ЮЕЮЏЮП OPML" #: share/gpodder/ui/gtk/gpodder.ui.h:16 msgid "Go to gpodder.net" msgstr "ЮœЮЕЯ„ЮЌЮВЮБЯƒЮЗ ЯƒЯ„ЮП gpodder.net" #: share/gpodder/ui/gtk/gpodder.ui.h:17 msgid "_Episodes" msgstr "_Ю•Я€ЮЕЮЙЯƒЯŒЮДЮЙЮБ" #: share/gpodder/ui/gtk/gpodder.ui.h:18 msgid "Play" msgstr "Ю‘ЮНЮБЯ€ЮБЯЮБЮГЯ‰ЮГЮЎ" #: share/gpodder/ui/gtk/gpodder.ui.h:19 msgid "Open" msgstr "Ю†ЮНЮПЮЙЮГЮМЮБ" #: share/gpodder/ui/gtk/gpodder.ui.h:22 msgid "Delete" msgstr "Ю”ЮЙЮБЮГЯЮБЯ†ЮЎ" #: share/gpodder/ui/gtk/gpodder.ui.h:23 msgid "Toggle new status" msgstr "Ю•ЮНЮБЮЛЮЛЮБЮГЮЎ ЮКЮБЯ„ЮЌЯƒЯ„ЮБЯƒЮЗЯ‚ ЮНЮ­ЮПЯ…" #: share/gpodder/ui/gtk/gpodder.ui.h:24 msgid "Change delete lock" msgstr "Ю‘ЮЛЮЛЮБЮГЮЎ ЯƒЯ„ЮП ЮКЮЛЮЕЮЏЮДЯ‰ЮМЮБ Я„ЮЗЯ‚ ЮДЮЙЮБЮГЯЮБЯ†ЮЎЯ‚" #: share/gpodder/ui/gtk/gpodder.ui.h:26 msgid "E_xtras" msgstr "" #: share/gpodder/ui/gtk/gpodder.ui.h:27 msgid "Sync to device" msgstr "ЮЃЯ…ЮГЯ‡ЯЮПЮНЮЙЯƒЮМЯŒЯ‚ ЯƒЯ„ЮЗ ЯƒЯ…ЯƒЮКЮЕЯ…ЮЎ" #: share/gpodder/ui/gtk/gpodder.ui.h:28 #, fuzzy msgid "Update YouTube subscriptions" msgstr "Ю”ЮЕЮН Я…Я€ЮЌЯЯ‡ЮПЯ…ЮН ЯƒЯ…ЮНЮДЯЮПЮМЮ­Я‚" #: share/gpodder/ui/gtk/gpodder.ui.h:29 msgid "_View" msgstr "_Ю ЯЮПЮВЮПЮЛЮЎ" #: share/gpodder/ui/gtk/gpodder.ui.h:30 msgid "Toolbar" msgstr "Ю“ЯЮБЮМЮМЮЎ ЮЕЯЮГЮБЮЛЮЕЮЏЯ‰ЮН" #: share/gpodder/ui/gtk/gpodder.ui.h:31 msgid "Episode descriptions" msgstr "Ю ЮЕЯЮЙЮГЯЮБЯ†Ю­Я‚ ЮЕЯ€ЮЕЮЙЯƒЮПЮДЮЏЮПЯ…" #: share/gpodder/ui/gtk/gpodder.ui.h:33 msgid "Hide deleted episodes" msgstr "Ю‘Я€ЯŒЮКЯЯ…ЯˆЮЗ ЮДЮЙЮБЮГЯЮБЮМЮМЮ­ЮНЯ‰ЮН ЮЕЯ€ЮЕЮЙЯƒЮПЮДЮЏЯ‰ЮН" #: share/gpodder/ui/gtk/gpodder.ui.h:34 msgid "Downloaded episodes" msgstr "Ю›ЮЗЯ†ЮИЮ­ЮНЯ„ЮБ ЮЕЯ€ЮЕЮЙЯƒЯŒЮДЮЙЮБ" #: share/gpodder/ui/gtk/gpodder.ui.h:35 msgid "Unplayed episodes" msgstr "ЮœЮЗ ЮБЮНЮБЯ€ЮБЯЮБЮГЮМЮ­ЮНЮБ ЮЕЯ€ЮЕЮЙЯƒЯŒЮДЮЙЮБ" #: share/gpodder/ui/gtk/gpodder.ui.h:36 msgid "Hide podcasts without episodes" msgstr "Ю‘Я€ЯŒЮКЯЯ…ЯˆЮЗ Я„Я‰ЮН podcasts Я‡Я‰ЯЮЏЯ‚ ЮЕЯ€ЮЕЮЙЯƒЯŒЮДЮЙЮБ" #: share/gpodder/ui/gtk/gpodder.ui.h:37 msgid "_Help" msgstr "_Ю’ЮПЮЎЮИЮЕЮЙЮБ" #: share/gpodder/ui/gtk/gpodder.ui.h:38 msgid "User manual" msgstr "Ю•ЮГЯ‡ЮЕЮЙЯЮЏЮДЮЙЮП Я‡ЯЮЎЯƒЯ„ЮЗ" #: share/gpodder/ui/gtk/gpodder.ui.h:39 msgid "Software updates" msgstr "Ю•ЮНЮЗЮМЮЕЯЯŽЯƒЮЕЮЙЯ‚ ЮЛЮПЮГЮЙЯƒЮМЮЙЮКЮПЯ" #: share/gpodder/ui/gtk/gpodder.ui.h:40 msgid "Filter:" msgstr "ЮІЮЏЮЛЯ„ЯЮП:" #: share/gpodder/ui/gtk/gpodder.ui.h:41 msgid "Podcasts" msgstr "Podcasts" #: share/gpodder/ui/gtk/gpodder.ui.h:42 msgid "Limit rate to" msgstr "Ю ЮЕЯЮЙЮПЯЮЙЯƒЮМЯŒЯ‚ Я„ЮБЯ‡ЯЯ„ЮЗЯ„ЮБЯ‚ ЯƒЮЕ" #: share/gpodder/ui/gtk/gpodder.ui.h:43 msgid "KiB/s" msgstr "KiB/s" #: share/gpodder/ui/gtk/gpodder.ui.h:44 msgid "Limit downloads to" msgstr "Ю ЮЕЯЮЙЮПЯЮЙЯƒЮМЯŒЯ‚ ЮЛЮЎЯˆЮЕЯ‰ЮН ЯƒЮЕ" #: share/gpodder/ui/gtk/gpodderwelcome.ui.h:2 msgid "Welcome to gPodder" msgstr "ЮšЮБЮЛЯŽЯ‚ ЮЎЯЮИЮБЯ„ЮЕ ЯƒЯ„ЮП gPodder" #: share/gpodder/ui/gtk/gpodderwelcome.ui.h:3 msgid "Your podcast list is empty." msgstr "Ю— ЮЛЮЏЯƒЯ„ЮБ podcast ЮЕЮЏЮНЮБЮЙ ЮЌЮДЮЕЮЙЮБ." #: share/gpodder/ui/gtk/gpodderwelcome.ui.h:4 msgid "Choose from a list of example podcasts" msgstr "Ю•Я€ЮЙЮЛЮ­ЮОЯ„ЮЕ ЮБЯ€ЯŒ ЮМЮЏЮБ ЮЛЮЏЯƒЯ„ЮБ ЮМЮЕ Я€ЮБЯЮБЮДЮЕЮЏЮГЮМЮБЯ„ЮБ podcasts" #: share/gpodder/ui/gtk/gpodderwelcome.ui.h:5 msgid "Add a podcast by entering its URL" msgstr "Ю ЯЮПЯƒЮИЮЎЮКЮЗ ЮНЮ­ЮПЯ… podcast ЮЕЮЙЯƒЮЌЮГЮПЮНЯ„ЮБЯ‚ Я„ЮП URL Я„ЮПЯ…." #: share/gpodder/ui/gtk/gpodderwelcome.ui.h:6 msgid "Restore my subscriptions from gpodder.net" msgstr "Ю•Я€ЮБЮНЮБЯ†ЮПЯЮЌ Я„Я‰ЮН ЯƒЯ…ЮНЮДЯЮПЮМЯŽЮН ЮМЮПЯ… ЮБЯ€ЯŒ Я„ЮП gpodder.net" #: bin/gpo:266 msgid "Podcast update requested by extensions." msgstr "Ю— ЮЕЮНЮЗЮМЮ­ЯЯ‰ЯƒЮЗ Я„ЮПЯ… podcast ЮЖЮЗЯ„ЮЎЮИЮЗЮКЮЕ ЮБЯ€ЯŒ Я„ЮЙЯ‚ ЮЕЯ€ЮЕЮКЯ„ЮЌЯƒЮЕЮЙЯ‚." #: bin/gpo:270 msgid "Episode download requested by extensions." msgstr "" #: bin/gpo:323 #, python-format msgid "Invalid url: %s" msgstr "" #: bin/gpo:340 bin/gpo:416 bin/gpo:450 bin/gpo:582 bin/gpo:597 bin/gpo:717 #, fuzzy, python-format msgid "You are not subscribed to %s." msgstr "ЮˆЯ‡ЮЕЮЙЯ‚ ЮЎЮДЮЗ ЮЕЮГЮГЯЮБЯ†ЮЕЮЏ ЯƒЮЕ ЮБЯ…Я„ЮЌ Я„ЮБ podcasts:" #: bin/gpo:346 #, fuzzy, python-format msgid "Already subscribed to %s." msgstr "Ю‘ЮДЯ…ЮНЮБЮМЮЏЮБ ЯƒЯ…ЮНЮДЯЮПЮМЮЎЯ‚ ЯƒЯ„ЮП %s." #: bin/gpo:352 #, python-format msgid "Cannot subscribe to %s." msgstr "Ю‘ЮДЯ…ЮНЮБЮМЮЏЮБ ЯƒЯ…ЮНЮДЯЮПЮМЮЎЯ‚ ЯƒЯ„ЮП %s." #: bin/gpo:368 #, python-format msgid "Successfully added %s." msgstr "Ю•Я€ЮЙЯ„Я…Я‡ЮЎЯ‚ Я€ЯЮПЯƒЮИЮЎЮКЮЗ Я„ЮПЯ… %s." #: bin/gpo:386 msgid "This configuration option does not exist." msgstr "Ю‘Я…Я„ЮЎ ЮЗ ЮЕЯ€ЮЙЮЛЮПЮГЮЎ ЯЯЮИЮМЮЙЯƒЮЗЯ‚ ЮДЮЕЮН Я…Я€ЮЌЯЯ‡ЮЕЮЙ." #: bin/gpo:390 msgid "Can only set leaf configuration nodes." msgstr "ЮœЯŒЮНЮП ЮПЮЙ Я„ЮЕЯЮМЮБЯ„ЮЙЮКЮПЮЏ ЮКЯŒЮМЮВЮПЮЙ ЮМЯ€ЮПЯЮПЯЮН ЮНЮБ ЯЯ…ЮИЮМЮЙЯƒЯ„ЮПЯЮН." #: bin/gpo:404 #, python-format msgid "Renamed %(old_title)s to %(new_title)s." msgstr "" #: bin/gpo:420 #, fuzzy, python-format msgid "Unsubscribed from %s." msgstr "ЮšЮБЯ„ЮЌЯЮГЮЗЯƒЮЗ ЯƒЯ…ЮНЮДЯЮПЮМЮЎЯ‚" #: bin/gpo:494 msgid "Updates disabled" msgstr "ЮŸЮЙ ЮЕЮНЮЗЮМЮЕЯЯŽЯƒЮЕЮЙЯ‚ ЮБЯ€ЮЕЮНЮЕЯЮГЮПЯ€ЮПЮЙЮЎЮИЮЗЮКЮБЮН." #: bin/gpo:505 #, python-format msgid "%(count)d new episode" msgid_plural "%(count)d new episodes" msgstr[0] "%(count)d ЮНЮ­ЮП ЮЕЯ€ЮЕЮЙЯƒЯŒЮДЮЙЮП" msgstr[1] "%(count)d ЮНЮ­ЮБ ЮЕЯ€ЮЕЮЙЯƒЯŒЮДЮЙЮБ" #: bin/gpo:511 #, fuzzy msgid "Checking for new episodes" msgstr "ЮˆЮЛЮЕЮГЯ‡ЮПЯ‚ ЮГЮЙЮБ ЮНЮ­ЮБ ЮЕЯ€ЮЕЮЙЯƒЯŒЮДЮЙЮБ..." #: bin/gpo:520 #, fuzzy, python-format msgid "Skipping %(podcast)s" msgstr "Ю ЯЮПЯƒЮИЮЎЮКЮЗ podcasts" #: bin/gpo:588 #, python-format msgid "Disabling feed update from %s." msgstr "" #: bin/gpo:603 #, fuzzy, python-format msgid "Enabling feed update from %s." msgstr "Ю‘ЮНЮЌЮГЮНЯ‰ЯƒЮЗ ЮБЯЯ‡ЮЕЮЏЯ‰ЮН ЮБЯ€ЯŒ Я„ЮП %s" #: bin/gpo:616 #, python-format msgid "Please register a YouTube API key and set it using %(command)s." msgstr "" #: bin/gpo:643 #, python-format msgid "Changing: %(old_url)s => %(new_url)s" msgstr "" #: bin/gpo:653 #, fuzzy msgid "Nothing to fix" msgstr "Ю”ЮЕЮН Я…Я€ЮЌЯЯ‡ЮЕЮЙ Я„ЮЏЯ€ЮПЯ„ЮБ Я€ЯЮПЯ‚ ЮЕЮОЮБЮГЯ‰ЮГЮЎ" #: bin/gpo:672 msgid "No podcasts found." msgstr "Ю”ЮЕЮН ЮВЯЮ­ЮИЮЗЮКЮБЮН podcasts." #: bin/gpo:686 msgid "Enter index to subscribe, ? for list" msgstr "" #: bin/gpo:700 bin/gpo:704 msgid "Invalid value." msgstr "ЮœЮЗ Ю­ЮГЮКЯ…ЯЮЗ Я„ЮЙЮМЮЎ." #: bin/gpo:721 #, python-format msgid "Invalid URL: %s" msgstr "ЮœЮЗ Ю­ЮГЮКЯ…ЯЮП URL: %s" #: bin/gpo:724 #, python-format msgid "Changed URL from %(old_url)s to %(new_url)s." msgstr "" #: bin/gpo:782 #, python-format msgid "Syntax error: %(error)s" msgstr "ЮЃЯ…ЮНЯ„ЮБЮКЯ„ЮЙЮКЯŒ ЮЛЮЌЮИЮПЯ‚: %(error)s" #: bin/gpo:876 msgid "Ambiguous command. Did you mean.." msgstr "" #: bin/gpo:880 msgid "The requested function is not available." msgstr "Ю— ЮЖЮЗЯ„ЮПЯЮМЮЕЮНЮЗ ЮЛЮЕЮЙЯ„ЮПЯ…ЯЮГЮЏЮБ ЮДЮЕЮН ЮЕЮЏЮНЮБЮЙ ЮДЮЙЮБЮИЮ­ЯƒЮЙЮМЮЗ." #: bin/gpodder:105 #, fuzzy msgid "print logging output on the console" msgstr "Ю•ЮКЯ„ЯЯ€Я‰ЯƒЮЗ Я„ЮЗЯ‚ ЮЕЮОЮБЮГЯŒЮМЮЕЮНЮЗЯ‚ ЮБЯ€ЮПЯƒЯ†ЮБЮЛЮМЮЌЯ„Я‰ЯƒЮЗЯ‚ ЯƒЯ„ЮЗЮН Я€ЯЯŒЯ„Я…Я€ЮЗ Ю­ЮОЮПЮДЮП" #: bin/gpodder:108 #, fuzzy msgid "subscribe to the feed at URL" msgstr "Ю•ЮГЮГЯЮБЯ†ЮЎ ЯƒЯ„ЮП " #: bin/gpodder:113 msgid "Mac OS X application process number" msgstr "Ю‘ЯЮЙЮИЮМЯŒЯ‚ ЮДЮЙЮЕЯЮГЮБЯƒЮЏЮБ ЮЕЯ†ЮБЯЮМЮПЮГЮЎЯ‚ Mac OS X" #: share/applications/gpodder.desktop.in.h:2 msgid "gPodder Podcast Client" msgstr "Ю ЮЕЮЛЮЌЯ„ЮЗЯ‚ Podcast gPodder" #: share/applications/gpodder.desktop.in.h:3 msgid "Podcast Client" msgstr "Ю ЮЕЮЛЮЌЯ„ЮЗЯ‚ Podcast" #: share/applications/gpodder.desktop.in.h:4 msgid "Subscribe to audio and video content from the web" msgstr "Ю•ЮГЮГЯЮБЯ†ЮЎ ЯƒЮЕ Я€ЮЕЯЮЙЮЕЯ‡ЯŒЮМЮЕЮНЮП ЮЎЯ‡ЮПЯ… ЮКЮБЮЙ ЮВЮЏЮНЯ„ЮЕЮП ЮБЯ€ЯŒ Я„ЮПЮН ЮЙЯƒЯ„ЯŒ" #: share/applications/gpodder-url-handler.desktop.in.h:1 #, fuzzy msgid "gPodder (subscribe to feed)" msgstr "Ю•ЮГЮГЯЮБЯ†ЮЎ ЯƒЯ„ЮП " gpodder-3.9.0/po/cs_CZ.po0000644000016000001710000017024112654461625016260 0ustar jenkinsjenkins00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # # Translators: # David Х tancl , 2012. # , 2012. # , 2012. # Petr Х imУЁФek , 2013. # VУ­t Stanislav , 2012. msgid "" msgstr "" "Project-Id-Version: gPodder\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2016-02-03 20:31+0000\n" "PO-Revision-Date: 2013-03-05 15:01+0000\n" "Last-Translator: Thomas Perl \n" "Language-Team: Czech (Czech Republic) (http://www.transifex.com/projects/p/" "gpodder/language/cs_CZ/)\n" "Language: cs_CZ\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" #: src/gpodder/config.py:55 #, python-format msgid "gPodder on %s" msgstr "gPodder na %s" #: src/gpodder/directory.py:95 #, fuzzy msgid "gpodder.net search" msgstr "gpodder.net" #: src/gpodder/directory.py:104 #, fuzzy msgid "OPML from web" msgstr "Soubory OPML" #: src/gpodder/directory.py:113 #, fuzzy msgid "OPML file" msgstr "Soubory OPML" #: src/gpodder/directory.py:122 share/gpodder/ui/gtk/gpodderwelcome.ui.h:1 msgid "Getting started" msgstr "Уšvodem" #: src/gpodder/directory.py:131 #, fuzzy msgid "gpodder.net Top 50" msgstr "gpodder.net" #: src/gpodder/directory.py:140 #, fuzzy msgid "gpodder.net Tags" msgstr "gpodder.net" #: src/gpodder/directory.py:152 #, fuzzy msgid "Soundcloud search" msgstr "%s na Soundcloudu" #: src/gpodder/directory.py:165 #, fuzzy msgid "Imported OPML file" msgstr "Importovat z OPML souboru" #: src/gpodder/download.py:329 msgid "Wrong username/password" msgstr "Х patnУЉ jmУЉno/heslo" #: src/gpodder/download.py:527 src/gpodder/sync.py:924 msgid "Added" msgstr "PХ™idУЁno" #: src/gpodder/download.py:527 src/gpodder/sync.py:924 msgid "Queued" msgstr "ZaХ™azeno do fronty" #: src/gpodder/download.py:527 src/gpodder/gtkui/model.py:327 msgid "Downloading" msgstr "StahovУЁnУ­" #: src/gpodder/download.py:528 src/gpodder/model.py:721 #: src/gpodder/sync.py:925 msgid "Finished" msgstr "DokonФeno" #: src/gpodder/download.py:528 src/gpodder/sync.py:925 msgid "Failed" msgstr "Selhalo" #: src/gpodder/download.py:528 src/gpodder/sync.py:925 msgid "Cancelled" msgstr "ZruХЁeno" #: src/gpodder/download.py:528 src/gpodder/sync.py:925 msgid "Paused" msgstr "Pozastaveno" #: src/gpodder/download.py:862 msgid "Missing content from server" msgstr "PoznУЁmky" #: src/gpodder/download.py:868 #, python-format msgid "I/O Error: %(error)s: %(filename)s" msgstr "Chyba vstupu/vУНstupu: %(error)s: %(filename)s" #: src/gpodder/download.py:875 #, python-format msgid "HTTP Error %(code)s: %(message)s" msgstr "Chyba HTTP %(code)s: %(message)s" #: src/gpodder/download.py:879 src/gpodder/sync.py:1081 #, python-format msgid "Error: %s" msgstr "Chyba: %s" #: src/gpodder/extensions.py:55 msgid "Desktop Integration" msgstr "ZaФlenФ›nУ­ do pracovnУ­ho prostХ™edУ­" #: src/gpodder/extensions.py:56 msgid "Interface" msgstr "RozhranУ­" #: src/gpodder/extensions.py:57 msgid "Post download" msgstr "PХ™У­spФ›vek ke staХОenУ­" #: src/gpodder/extensions.py:59 src/gpodder/model.py:779 #: src/gpodder/model.py:1225 msgid "Other" msgstr "JinУН" #: src/gpodder/extensions.py:100 msgid "No description for this extension." msgstr "Pro tento doplnФ›k nenУ­ dostupnУН popis." #: src/gpodder/extensions.py:212 #, python-format msgid "Command not found: %(command)s" msgstr "PХ™У­kaz %(command)s nebyl nalezen" #: src/gpodder/extensions.py:228 #, python-format msgid "Need at least one of the following commands: %(list_of_commands)s" msgstr "" #: src/gpodder/extensions.py:265 #, python-format msgid "Python module not found: %(module)s" msgstr "Python modul %(module)s nebyl nalezen" #: src/gpodder/model.py:446 src/gpodder/plugins/soundcloud.py:156 msgid "No description available" msgstr "Popis nenУ­ k dispozici" #: src/gpodder/model.py:679 msgid "unknown" msgstr "neznУЁmУН" #: src/gpodder/model.py:746 msgid "Default" msgstr "VУНchozУ­" #: src/gpodder/model.py:747 msgid "Only keep latest" msgstr "Zachovat pouze poslednУ­" #: src/gpodder/model.py:1208 src/gpodder/model.py:1223 #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:10 msgid "Video" msgstr "Video" #: src/gpodder/model.py:1221 msgid "Audio" msgstr "Audio" #: src/gpodder/my.py:174 #, python-format msgid "Add %s" msgstr "PХ™idat %s" #: src/gpodder/my.py:176 #, python-format msgid "Remove %s" msgstr "Odebrat %s" #: src/gpodder/sync.py:196 msgid "Cancelled by user" msgstr "ZruХЁeno uХОivatelem" #: src/gpodder/sync.py:199 msgid "Writing data to disk" msgstr "ZapisovУЁnУ­ dat na disk" #: src/gpodder/sync.py:295 msgid "Opening iPod database" msgstr "OtevХ™enУ­ databУЁze iPodu" #: src/gpodder/sync.py:305 msgid "iPod opened" msgstr "iPod otevХ™en" #: src/gpodder/sync.py:316 msgid "Saving iPod database" msgstr "UklУЁdУЁnУ­ databУЁze iPodu" #: src/gpodder/sync.py:321 msgid "Writing extended gtkpod database" msgstr "ZapisovУЁnУ­ rozХЁУ­Х™enУЉ gtkpod databУЁze" #: src/gpodder/sync.py:397 src/gpodder/sync.py:680 src/gpodder/sync.py:874 #, python-format msgid "Removing %s" msgstr "OdstranФ›nУ­ %s" #: src/gpodder/sync.py:412 src/gpodder/sync.py:557 #, python-format msgid "Adding %s" msgstr "PХ™idУЁnУ­ %s" #: src/gpodder/sync.py:430 #, python-format msgid "Error copying %(episode)s: Not enough free space on %(mountpoint)s" msgstr "Chyba pХ™i kopУ­rovУЁnУ­ %(episode)s: NenУ­ dostatek mУ­sta v %(mountpoint)s" #: src/gpodder/sync.py:515 msgid "Opening MP3 player" msgstr "OtevУ­rУЁnУ­ MP3 pХ™ehrУЁvaФe" #: src/gpodder/sync.py:518 msgid "MP3 player opened" msgstr "MP3 pХ™ehrУЁvaФ otevХ™en" #: src/gpodder/sync.py:576 #, python-format msgid "" "Not enough space in %(path)s: %(free)s available, but need at least %(need)s" msgstr "" #: src/gpodder/sync.py:603 src/gpodder/sync.py:611 #, python-format msgid "Error opening %(filename)s: %(message)s" msgstr "Chyba pХ™i otevУ­rУЁnУ­ %(filename)s: %(message)s" #: src/gpodder/sync.py:780 src/gpodder/sync.py:786 msgid "MTP device" msgstr "MTP zaХ™У­zenУ­" #: src/gpodder/sync.py:793 msgid "Opening the MTP device" msgstr "OtevХ™enУ­ MTP zaХ™У­zenУ­" #: src/gpodder/sync.py:803 #, python-format msgid "%s opened" msgstr "%s otevХ™en" #: src/gpodder/sync.py:808 #, python-format msgid "Closing %s" msgstr "ZavУ­rУЁnУ­ %s" #: src/gpodder/sync.py:816 #, python-format msgid "%s closed" msgstr "%s zavХ™en" #: src/gpodder/sync.py:821 bin/gpo:708 #, python-format msgid "Adding %s..." msgstr "PХ™idУЁvУЁnУ­ %s..." #: src/gpodder/sync.py:924 msgid "Synchronizing" msgstr "Synchronizace" #: src/gpodder/util.py:429 #, python-format msgid "%(count)d day ago" msgid_plural "%(count)d days ago" msgstr[0] "PХ™ed %(count)d dnem" msgstr[1] "PХ™ed %(count)d dny" msgstr[2] "PХ™ed %(count)d dny" #: src/gpodder/util.py:508 msgid "Today" msgstr "Dnes" #: src/gpodder/util.py:510 msgid "Yesterday" msgstr "VФera" #: src/gpodder/util.py:553 src/gpodder/util.py:556 msgid "(unknown)" msgstr "(neznУЁmo)" #: src/gpodder/util.py:1193 src/gpodder/util.py:1212 #, python-format msgid "%(count)d second" msgid_plural "%(count)d seconds" msgstr[0] "%(count)d sekunda" msgstr[1] "%(count)d sekundy" msgstr[2] "%(count)d sekund" #: src/gpodder/util.py:1206 #, python-format msgid "%(count)d hour" msgid_plural "%(count)d hours" msgstr[0] "%(count)d hodina" msgstr[1] "%(count)d hodiny" msgstr[2] "%(count)d hodin" #: src/gpodder/util.py:1209 #, python-format msgid "%(count)d minute" msgid_plural "%(count)d minutes" msgstr[0] "%(count)d minuta" msgstr[1] "%(count)d minuty" msgstr[2] "%(count)d minut" #: src/gpodder/util.py:1215 msgid "and" msgstr "a" #: src/gpodder/gtkui/config.py:50 msgid "Integer" msgstr "CelУЉ ФУ­slo" #: src/gpodder/gtkui/config.py:52 msgid "Float" msgstr "DesetinnУЉ ФУ­slo" #: src/gpodder/gtkui/config.py:54 msgid "Boolean" msgstr "LogickУЁ hodnota" #: src/gpodder/gtkui/config.py:56 msgid "String" msgstr "՘etФ›zec" #: src/gpodder/gtkui/desktopfile.py:70 #, python-format msgid "Command: %s" msgstr "PХ™У­kaz: %s" #: src/gpodder/gtkui/desktopfile.py:150 msgid "Default application" msgstr "VУНchozУ­ aplikace" #: src/gpodder/gtkui/main.py:205 share/applications/gpodder.desktop.in.h:1 msgid "gPodder" msgstr "gPodder" #: src/gpodder/gtkui/main.py:288 msgid "Loading incomplete downloads" msgstr "NaФУ­tУЁnУ­ nedokonФenУНch stahovУЁnУ­" #: src/gpodder/gtkui/main.py:289 msgid "Some episodes have not finished downloading in a previous session." msgstr "StahovУЁnУ­ nФ›kterУНch epizod nebylo pХ™i minulУЉm spuХЁtФ›nУ­ dokonФeno." #: src/gpodder/gtkui/main.py:291 #, python-format msgid "%(count)d partial file" msgid_plural "%(count)d partial files" msgstr[0] "%(count)d neУКplnУН soubor" msgstr[1] "%(count)d neУКplnУЉ soubory" msgstr[2] "%(count)d neУКplnУНch souborХЏ" #: src/gpodder/gtkui/main.py:306 msgid "Resume all" msgstr "Obnovit vХЁe" #: src/gpodder/gtkui/main.py:316 msgid "Incomplete downloads from a previous session were found." msgstr "Byla nalezena nedokonФenУЁ stahovУЁnУ­ z minulУЉho spuХЁtФ›nУ­." #: src/gpodder/gtkui/main.py:414 msgid "Action" msgstr "Akce" #: src/gpodder/gtkui/main.py:461 msgid "Confirm changes from gpodder.net" msgstr "Potvrdit zmФ›ny z gpodder.net" #: src/gpodder/gtkui/main.py:462 msgid "Select the actions you want to carry out." msgstr "Vyberte akci, kterou chcete provУЉst" #: src/gpodder/gtkui/main.py:502 msgid "Uploading subscriptions" msgstr "NahrУЁvУЁnУ­ odbФ›rХЏ" #: src/gpodder/gtkui/main.py:503 msgid "Your subscriptions are being uploaded to the server." msgstr "VaХЁe odbФ›ry jsou nahrУЁvУЁny na server" #: src/gpodder/gtkui/main.py:508 msgid "List uploaded successfully." msgstr "Seznam byl УКspФ›ХЁnФ› nahrУЁn" #: src/gpodder/gtkui/main.py:515 msgid "Error while uploading" msgstr "PХ™i nahrУЁvУЁnУ­ doХЁlo k chybФ›" #: src/gpodder/gtkui/main.py:800 src/gpodder/gtkui/main.py:928 #: src/gpodder/gtkui/main.py:2622 src/gpodder/gtkui/main.py:2815 #: src/gpodder/gtkui/desktop/episodeselector.py:132 #: src/gpodder/gtkui/desktop/sync.py:270 msgid "Episode" msgstr "Epizoda" #: src/gpodder/gtkui/main.py:819 msgid "Size" msgstr "Velikost" #: src/gpodder/gtkui/main.py:824 msgid "Duration" msgstr "DУЉlka" #: src/gpodder/gtkui/main.py:828 msgid "Released" msgstr "VydУЁno" #: src/gpodder/gtkui/main.py:855 msgid "Visible columns" msgstr "ViditelnУЉ sloupce" #: src/gpodder/gtkui/main.py:948 src/gpodder/gtkui/main.py:1108 #: share/gpodder/ui/gtk/gpodder.ui.h:45 msgid "Progress" msgstr "PrХЏbФ›h" #: src/gpodder/gtkui/main.py:982 msgid "Loading episodes" msgstr "NaФУ­tУЁnУ­ epizod" #: src/gpodder/gtkui/main.py:985 msgid "No episodes in current view" msgstr "ХНУЁdnУЉ odbФ›ry v souФasnУЉm zobrazenУ­" #: src/gpodder/gtkui/main.py:987 msgid "No episodes available" msgstr "ХНУЁdnУЉ dostupnУЉ epizody" #: src/gpodder/gtkui/main.py:993 msgid "No podcasts in this view" msgstr "ХНУЁdnУЉ podcasty v tomto zobrazenУ­" #: src/gpodder/gtkui/main.py:995 msgid "No subscriptions" msgstr "ХНУЁdnУЉ odbФ›ry" #: src/gpodder/gtkui/main.py:997 msgid "No active tasks" msgstr "ХНУЁdnУЉ aktivnУ­ УКlohy" #: src/gpodder/gtkui/main.py:1112 src/gpodder/gtkui/main.py:1114 #, python-format msgid "%(count)d active" msgid_plural "%(count)d active" msgstr[0] "%(count)d aktivnУ­" msgstr[1] "%(count)d aktivnУ­" msgstr[2] "%(count)d aktivnУ­ch" #: src/gpodder/gtkui/main.py:1116 #, python-format msgid "%(count)d failed" msgid_plural "%(count)d failed" msgstr[0] "%(count)d selhal" msgstr[1] "%(count)d selhaly" msgstr[2] "%(count)d selhalo" #: src/gpodder/gtkui/main.py:1118 #, python-format msgid "%(count)d queued" msgid_plural "%(count)d queued" msgstr[0] "%(count)d ve frontФ›" msgstr[1] "%(count)d ve frontФ›" msgstr[2] "%(count)d ve frontФ›" #: src/gpodder/gtkui/main.py:1132 #, python-format msgid "downloading %(count)d file" msgid_plural "downloading %(count)d files" msgstr[0] "stahuje se %(count)d ve soubor" msgstr[1] "stahujУ­ se %(count)d ve soubory" msgstr[2] "stahuje se %(count)d ve souborХЏ" #: src/gpodder/gtkui/main.py:1142 #, python-format msgid "synchronizing %(count)d file" msgid_plural "synchronizing %(count)d files" msgstr[0] "synchronizace %(count)d souboru" msgstr[1] "synchronizace %(count)d souborХЏ" msgstr[2] "synchronizace %(count)d souborХЏ" #: src/gpodder/gtkui/main.py:1144 #, python-format msgid "%(queued)d task queued" msgid_plural "%(queued)d tasks queued" msgstr[0] "%(queued)d УКloha ve frontФ›" msgstr[1] "%(queued)d УКlohy ve frontФ›" msgstr[2] "%(queued)d УКloh ve frontФ›" #: src/gpodder/gtkui/main.py:1168 msgid "Please report this problem and restart gPodder:" msgstr "Nahlaste, prosУ­m, tento problУЉm a restartujte gPodder" #: src/gpodder/gtkui/main.py:1168 msgid "Unhandled exception" msgstr "NezvlУЁdnutУЁ vУНjimka" #: src/gpodder/gtkui/main.py:1235 #, python-format msgid "Feedparser error: %s" msgstr "Chyba pХ™i zpracovУЁnУ­ zdroje: %s" #: src/gpodder/gtkui/main.py:1371 msgid "Could not download some episodes:" msgstr "Nelze stУЁhnout nФ›kterУЉ epizody:" #: src/gpodder/gtkui/main.py:1373 src/gpodder/gtkui/main.py:1376 msgid "Downloads finished" msgstr "StahovУЁnУ­ dokonФeno" #: src/gpodder/gtkui/main.py:1379 msgid "Downloads failed" msgstr "StahovУЁnУ­ selhalo" #: src/gpodder/gtkui/main.py:1383 msgid "Could not sync some episodes:" msgstr "Nelze synchronizovat nФ›kterУЉ epizody:" #: src/gpodder/gtkui/main.py:1385 src/gpodder/gtkui/main.py:1388 msgid "Device synchronization finished" msgstr "Synchronizace se zaХ™У­zenУ­m dokonФena" #: src/gpodder/gtkui/main.py:1391 msgid "Device synchronization failed" msgstr "Synchronizace se zaХ™У­zenУ­m se nezdaХ™ila" #: src/gpodder/gtkui/main.py:1434 #, python-format msgid "%(count)d more episode" msgid_plural "%(count)d more episodes" msgstr[0] "%(count)d dalХЁУ­ epizoda" msgstr[1] "%(count)d dalХЁУ­ epizody" msgstr[2] "%(count)d dalХЁУ­ch epizod" #: src/gpodder/gtkui/main.py:1508 msgid "Start download now" msgstr "ZahУЁjit stahovУЁnУ­" #: src/gpodder/gtkui/main.py:1510 src/gpodder/gtkui/main.py:1719 #: src/gpodder/gtkui/desktop/episodeselector.py:144 #: share/gpodder/ui/gtk/gpodder.ui.h:20 msgid "Download" msgstr "StahovУЁnУ­" #: src/gpodder/gtkui/main.py:1511 share/gpodder/ui/gtk/gpodder.ui.h:21 msgid "Cancel" msgstr "ZruХЁeno" #: src/gpodder/gtkui/main.py:1512 msgid "Pause" msgstr "Pozastavit" #: src/gpodder/gtkui/main.py:1514 msgid "Remove from list" msgstr "Odstranit ze seznamu" #: src/gpodder/gtkui/main.py:1553 share/gpodder/ui/gtk/gpodder.ui.h:13 msgid "Update podcast" msgstr "Aktualizovat podcast" #: src/gpodder/gtkui/main.py:1560 msgid "Open download folder" msgstr "OtevХ™У­t sloХОku pro stahovУЁnУ­" #: src/gpodder/gtkui/main.py:1566 msgid "Mark episodes as old" msgstr "OznaФit epizody jako starУЉ" #: src/gpodder/gtkui/main.py:1570 src/gpodder/gtkui/main.py:1778 msgid "Archive" msgstr "Archivovat" #: src/gpodder/gtkui/main.py:1575 msgid "Remove podcast" msgstr "Odstranit podcast" #: src/gpodder/gtkui/main.py:1590 share/gpodder/ui/gtk/gpodder.ui.h:10 msgid "Podcast settings" msgstr "NastavenУ­ podcastХЏ" #: src/gpodder/gtkui/main.py:1650 msgid "Error converting file." msgstr "Chyba pХ™i pХ™evУЁdФ›nУ­ souboru" #: src/gpodder/gtkui/main.py:1650 msgid "Bluetooth file transfer" msgstr "PХ™enos souboru pХ™es bluetooth" #: src/gpodder/gtkui/main.py:1709 msgid "Preview" msgstr "UkУЁzka" #: src/gpodder/gtkui/main.py:1711 msgid "Stream" msgstr "Proud" #: src/gpodder/gtkui/main.py:1755 msgid "Send to" msgstr "Odeslat na" #: src/gpodder/gtkui/main.py:1757 msgid "Local folder" msgstr "MУ­stnУ­ sloХОka" #: src/gpodder/gtkui/main.py:1762 msgid "Bluetooth device" msgstr "ZaХ™У­zenУ­ bluetooth" #: src/gpodder/gtkui/main.py:1769 msgid "New" msgstr "NovУН" #: src/gpodder/gtkui/main.py:1785 share/gpodder/ui/gtk/gpodder.ui.h:25 msgid "Episode details" msgstr "Detaily epizody" #: src/gpodder/gtkui/main.py:1938 msgid "Please check your media player settings in the preferences dialog." msgstr "Zkontrolujte nastavenУ­ vaХЁeho pХ™ehrУЁvaФe v nabУ­dce moХОnosti" #: src/gpodder/gtkui/main.py:1939 msgid "Error opening player" msgstr "Chyba pХ™i otevУ­rУЁnУ­ pХ™ehrУЁvaФe" #: src/gpodder/gtkui/main.py:2178 msgid "Adding podcasts" msgstr "PХ™idУЁvУЁnУ­ podcastХЏ" #: src/gpodder/gtkui/main.py:2179 msgid "Please wait while episode information is downloaded." msgstr "Informace o epizodФ› se stahujУ­, Фekejte, prosУ­m" #: src/gpodder/gtkui/main.py:2186 msgid "Existing subscriptions skipped" msgstr "StУЁvajУ­cУ­ odbФ›ry pХ™eskoФeny" #: src/gpodder/gtkui/main.py:2187 msgid "You are already subscribed to these podcasts:" msgstr "Tyto podcasty jiХО odebУ­rУЁte:" #: src/gpodder/gtkui/main.py:2195 msgid "Podcast requires authentication" msgstr "Podcast poХОaduje autentizaci" #: src/gpodder/gtkui/main.py:2196 #, python-format msgid "Please login to %s:" msgstr "PХ™ihlaste se na %s:" #: src/gpodder/gtkui/main.py:2204 src/gpodder/gtkui/main.py:2299 msgid "Authentication failed" msgstr "Autentizace selhala" #: src/gpodder/gtkui/main.py:2210 msgid "Website redirection detected" msgstr "Bylo zaznamenУЁno pХ™esmФ›rovУЁnУ­ webovУЉ strУЁnky" #: src/gpodder/gtkui/main.py:2211 #, python-format msgid "The URL %(url)s redirects to %(target)s." msgstr "URL %(url)s se pХ™esmФ›rovУЁvУЁ na %(target)s." #: src/gpodder/gtkui/main.py:2212 msgid "Do you want to visit the website now?" msgstr "Chcete nynУ­ navХЁtУ­vit webovou strУЁnku" #: src/gpodder/gtkui/main.py:2221 msgid "Could not add some podcasts" msgstr "NФ›kterУЉ podcasty nemohly bУНt pХ™idУЁny" #: src/gpodder/gtkui/main.py:2222 msgid "Some podcasts could not be added to your list:" msgstr "NФ›kterУЉ podcasty nemohly bУНt pХ™idУЁny do vaХЁeho seznamu:" #: src/gpodder/gtkui/main.py:2224 msgid "Unknown" msgstr "NeznУЁmУН" #: src/gpodder/gtkui/main.py:2308 msgid "Redirection detected" msgstr "Bylo zaznamenУЁno pХ™esmФ›rovУЁnУ­" #: src/gpodder/gtkui/main.py:2342 msgid "Merging episode actions" msgstr "SlouФenУ­ akcУ­ epizody" #: src/gpodder/gtkui/main.py:2343 msgid "Episode actions from gpodder.net are merged." msgstr "Akce epizody z gpodder.net jsou slouФeny" #: src/gpodder/gtkui/main.py:2368 msgid "Cancelling..." msgstr "ZruХЁenУ­..." #: src/gpodder/gtkui/main.py:2377 msgid "Please connect to a network, then try again." msgstr "PХ™ipojte prosУ­m sУ­ХЅ a zkuste to znovu" #: src/gpodder/gtkui/main.py:2378 msgid "No network connection" msgstr "ХНУЁdnУЉ pХ™ipojenУ­ k sУ­ti" #: src/gpodder/gtkui/main.py:2399 #, python-format msgid "Updating %(count)d feed..." msgid_plural "Updating %(count)d feeds..." msgstr[0] "Aktualizace %(count)d zdroje..." msgstr[1] "Aktualizace %(count)d zdrojХЏ..." msgstr[2] "Aktualizace %(count)d zdrojХЏ..." #: src/gpodder/gtkui/main.py:2417 #, python-format msgid "Error while updating %(url)s: %(message)s" msgstr "Chyba pХ™i aktualizaci %(url)s: %(message)s" #: src/gpodder/gtkui/main.py:2419 #, python-format msgid "The feed at %(url)s could not be updated." msgstr "Zdroj na %(url)s se nepodaХ™ilo aktualizovat." #: src/gpodder/gtkui/main.py:2420 msgid "Error while updating feed" msgstr "Chyba pХ™i aktualizaci zdroje" #: src/gpodder/gtkui/main.py:2435 #, python-format msgid "Updated %(podcast)s (%(position)d/%(total)d)" msgstr "AktualizovУЁn %(podcast)s (%(position)d z %(total)d)" #: src/gpodder/gtkui/main.py:2466 msgid "No new episodes" msgstr "ХНУЁdnУЉ novУЉ epizody" #: src/gpodder/gtkui/main.py:2479 #, python-format msgid "Downloading %(count)d new episode." msgid_plural "Downloading %(count)d new episodes." msgstr[0] "StahovУЁnУ­ %(count)d novУЉ epizody" msgstr[1] "StahovУЁnУ­ %(count)d novУНch epizod" msgstr[2] "StahovУЁnУ­ %(count)d novУНch epizod" #: src/gpodder/gtkui/main.py:2480 src/gpodder/gtkui/main.py:2484 #: src/gpodder/gtkui/main.py:2833 msgid "New episodes available" msgstr "Jsou dostupnУЉ novУЉ epizody" #: src/gpodder/gtkui/main.py:2483 #, python-format msgid "%(count)d new episode added to download list." msgid_plural "%(count)d new episodes added to download list." msgstr[0] "%(count)d novУЁ epizoda pХ™idУЁna do seznamu stahovanУ­" msgstr[1] "%(count)d novУЉ epizody pХ™idУЁny do seznamu stahovanУ­" msgstr[2] "%(count)d novУНch epizod pХ™idУЁno do seznamu stahovanУ­" #: src/gpodder/gtkui/main.py:2490 #, python-format msgid "%(count)d new episode available" msgid_plural "%(count)d new episodes available" msgstr[0] "%(count)d novУЁ dostupnУЁ epizoda" msgstr[1] "%(count)d novУЉ dostupnУЉ epizody" msgstr[2] "%(count)d novУНch dostupnУНch epizod" #: src/gpodder/gtkui/main.py:2509 msgid "Quit gPodder" msgstr "UkonФit gPodder" #: src/gpodder/gtkui/main.py:2510 msgid "" "You are downloading episodes. You can resume downloads the next time you " "start gPodder. Do you want to quit now?" msgstr "" "Stahujete epizody. StahovУЁnУ­ mХЏХОete obnovit pХ™i pХ™У­ХЁtУ­m startu gPodderu. " "Chcete nynУ­ skonФit" #: src/gpodder/gtkui/main.py:2559 msgid "Episodes are locked" msgstr "Epizody jsou uzamФeny" #: src/gpodder/gtkui/main.py:2560 msgid "" "The selected episodes are locked. Please unlock the episodes that you want " "to delete before trying to delete them." msgstr "" "OznaФenУЉ epizody jsou uzamФenУЉ. Pro jejich smazУЁnУ­ je potХ™eba je nejprve " "odemknout." #: src/gpodder/gtkui/main.py:2565 #, python-format msgid "Delete %(count)d episode?" msgid_plural "Delete %(count)d episodes?" msgstr[0] "Odstranit %(count)d epizodu?" msgstr[1] "Smazat %(count)d epizody?" msgstr[2] "Smazat %(count)d epizod?" #: src/gpodder/gtkui/main.py:2566 msgid "Deleting episodes removes downloaded files." msgstr "OdstranФ›nУ­ epizod smaХОe staХОenУЉ soubory." #: src/gpodder/gtkui/main.py:2571 msgid "Deleting episodes" msgstr "OdstraХˆovУЁnУ­ epizod" #: src/gpodder/gtkui/main.py:2572 msgid "Please wait while episodes are deleted" msgstr "PoФkejte neХО budou epizody odstranФ›ny" #: src/gpodder/gtkui/main.py:2625 #, python-format msgid "Select older than %(count)d day" msgid_plural "Select older than %(count)d days" msgstr[0] "Vybrat starХЁУ­ neХО %(count)d den" msgstr[1] "Vybrat starХЁУ­ neХО %(count)d dny" msgstr[2] "Vybrat starХЁУ­ neХО %(count)d dnХЏ" #: src/gpodder/gtkui/main.py:2627 msgid "Select played" msgstr "Vybrat pХ™ehranУЉ" #: src/gpodder/gtkui/main.py:2628 msgid "Select finished" msgstr "Vybrat dokonФenУЉ" #: src/gpodder/gtkui/main.py:2632 msgid "Select the episodes you want to delete:" msgstr "Vyberte episody, kterУЉ chcete odstranit:" #: src/gpodder/gtkui/main.py:2648 share/gpodder/ui/gtk/gpodder.ui.h:4 msgid "Delete episodes" msgstr "Odstranit epizody" #: src/gpodder/gtkui/main.py:2703 src/gpodder/gtkui/main.py:2934 #: src/gpodder/gtkui/main.py:3034 msgid "No podcast selected" msgstr "ХНУЁdnУН podcast nebyl vybrУЁn" #: src/gpodder/gtkui/main.py:2704 msgid "Please select a podcast in the podcasts list to update." msgstr "Vyberte podcast ze seznamu, kterУН chcete aktualizovat" #: src/gpodder/gtkui/main.py:2774 #, python-format msgid "Download error while downloading %(episode)s: %(message)s" msgstr "Chyba stahovУЁnУ­ pХ™i stahovУЁnУ­ %(episode)s: %(message)s" #: src/gpodder/gtkui/main.py:2775 msgid "Download error" msgstr "Chyba stahovУЁnУ­" #: src/gpodder/gtkui/main.py:2818 msgid "Select the episodes you want to download:" msgstr "Vyberte episody, kterУЉ chcete stУЁhnout:" #: src/gpodder/gtkui/main.py:2841 msgid "Mark as old" msgstr "OznaФit jako starУЉ" #: src/gpodder/gtkui/main.py:2848 msgid "Please check for new episodes later." msgstr "Zkontrolovat novУЉ epizody pozdФ›ji." #: src/gpodder/gtkui/main.py:2849 msgid "No new episodes available" msgstr "ХНУЁdnУЉ novУЉ epizody" #: src/gpodder/gtkui/main.py:2900 msgid "Login to gpodder.net" msgstr "PХ™ihlaХЁovУЁnУ­ na gpodder.net" #: src/gpodder/gtkui/main.py:2901 msgid "Please login to download your subscriptions." msgstr "PХ™ihlaste se ke staХОenУ­ vaХЁich odbФ›rХЏ" #: src/gpodder/gtkui/main.py:2916 msgid "Subscriptions on gpodder.net" msgstr "OdbФ›ry na gpodder.net" #: src/gpodder/gtkui/main.py:2935 msgid "Please select a podcast in the podcasts list to edit." msgstr "Vyberte podcast, kterУН chcete upravit." #: src/gpodder/gtkui/main.py:2949 msgid "Podcast" msgstr "Podcast" #: src/gpodder/gtkui/main.py:2955 share/gpodder/ui/gtk/gpodder.ui.h:12 msgid "Remove podcasts" msgstr "Odstranit podcasty" #: src/gpodder/gtkui/main.py:2956 msgid "Select the podcast you want to remove." msgstr "Vyberte kterУН podcast chcete odstranit" #: src/gpodder/gtkui/main.py:2960 #: src/gpodder/gtkui/desktop/episodeselector.py:105 msgid "Remove" msgstr "Odstranit" #: src/gpodder/gtkui/main.py:2969 msgid "Removing podcast" msgstr "OdstraХˆovУЁnУ­ podcastu" #: src/gpodder/gtkui/main.py:2970 msgid "Please wait while the podcast is removed" msgstr "PoФkejte na odstranФ›nУ­ podcastu" #: src/gpodder/gtkui/main.py:2971 msgid "Do you really want to remove this podcast and its episodes?" msgstr "Chcete odstranit tento podcast a jeho epizody?" #: src/gpodder/gtkui/main.py:2973 msgid "Removing podcasts" msgstr "OdstraХˆovУЁnУ­ podcastХЏ" #: src/gpodder/gtkui/main.py:2974 msgid "Please wait while the podcasts are removed" msgstr "PoФkejte neХО budou podcasty odstraХˆeny" #: src/gpodder/gtkui/main.py:2975 msgid "Do you really want to remove the selected podcasts and their episodes?" msgstr "Opravdu chce odstranit vybranУЉ podcasty a jejich epizody?" #: src/gpodder/gtkui/main.py:3035 msgid "Please select a podcast in the podcasts list to remove." msgstr "Vyberte ze seznamu podcast kterУН chcete odstranit" #: src/gpodder/gtkui/main.py:3045 msgid "OPML files" msgstr "Soubory OPML" #: src/gpodder/gtkui/main.py:3050 msgid "Import from OPML" msgstr "Importovat z OPML" #: src/gpodder/gtkui/main.py:3064 msgid "Import podcasts from OPML file" msgstr "Importovat podcasty z OPML souboru" #: src/gpodder/gtkui/main.py:3071 msgid "Nothing to export" msgstr "Nic k exportovУЁnУ­" #: src/gpodder/gtkui/main.py:3072 msgid "" "Your list of podcast subscriptions is empty. Please subscribe to some " "podcasts first before trying to export your subscription list." msgstr "" "VУЁХЁ seznam podcastХЏ je prУЁzdnУН. ZaФnФ›te odebУ­rat nФ›jakУЉ podcasty, a potom " "mХЏХОete exportovat jejich seznam." #: src/gpodder/gtkui/main.py:3076 msgid "Export to OPML" msgstr "Exportovat do OPML" #: src/gpodder/gtkui/main.py:3087 #, python-format msgid "%(count)d subscription exported" msgid_plural "%(count)d subscriptions exported" msgstr[0] "%(count)d podcast exportovУЁn" msgstr[1] "%(count)d podcasty exportovУЁny" msgstr[2] "%(count)d podcastХЏ exportovУЁno" #: src/gpodder/gtkui/main.py:3088 msgid "Your podcast list has been successfully exported." msgstr "Seznam vaХЁich podcastХЏ byl УКspФ›ХЁnФ› exportovУЁn" #: src/gpodder/gtkui/main.py:3090 msgid "Could not export OPML to file. Please check your permissions." msgstr "Export do OPML souboru se nezdaХ™il. Zkontrolujte svУЁ oprУЁvnФ›nУ­." #: src/gpodder/gtkui/main.py:3090 msgid "OPML export failed" msgstr "Export do OPML selhal" #: src/gpodder/gtkui/main.py:3117 msgid "No updates available" msgstr "ХНУЁdnУЉ aktualizace nejsou k dispozici" #: src/gpodder/gtkui/main.py:3118 msgid "You have the latest version of gPodder." msgstr "MУЁte poslednУ­ verzi gPodderu." #: src/gpodder/gtkui/main.py:3122 msgid "New version available" msgstr "Je k dispozici novУЁ verze" #: src/gpodder/gtkui/main.py:3124 #, python-format msgid "Installed version: %s" msgstr "NainstalovanУЁ verze: %s" #: src/gpodder/gtkui/main.py:3125 #, python-format msgid "Newest version: %s" msgstr "NejnovФ›jХЁУ­ verze: %s" #: src/gpodder/gtkui/main.py:3126 #, python-format msgid "Release date: %s" msgstr "Datum vydУЁnУ­: %s" #: src/gpodder/gtkui/main.py:3128 msgid "Download the latest version from gpodder.org?" msgstr "StУЁhnout nejnovФ›jХЁУ­ verzi z gpodder.org?" #: src/gpodder/gtkui/main.py:3141 msgid "About gPodder" msgstr "O aplikaci gPodder" #: src/gpodder/gtkui/main.py:3424 #, fuzzy msgid "Please register a YouTube API key and set it in the preferences." msgstr "Nastavte, prosУ­m, zaХ™У­zenУ­ v dialogu pХ™edvoleb." #: src/gpodder/gtkui/main.py:3425 msgid "Would you like to set up an API key now?" msgstr "" #: src/gpodder/gtkui/main.py:3425 msgid "API key required" msgstr "" #: src/gpodder/gtkui/main.py:3444 bin/gpo:631 #, fuzzy msgid "No unique URL found" msgstr "Nenalezeny ХОУЁdnУЉ kanУЁly" #: src/gpodder/gtkui/main.py:3449 bin/gpo:637 #, fuzzy msgid "Already subscribed" msgstr "%s nelze odebУ­rat" #: src/gpodder/gtkui/main.py:3458 bin/gpo:649 #, python-format msgid "Make sure the API key is correct. Error: %(message)s" msgstr "" #: src/gpodder/gtkui/main.py:3459 #, fuzzy msgid "Error getting YouTube channels" msgstr "Chyba pХ™i nastavovУЁnУ­ moХОnosti" #: src/gpodder/gtkui/main.py:3462 #, fuzzy msgid "Successfully migrated subscriptions" msgstr "%s УКspФ›ХЁnФ› pХ™idУЁno " #: src/gpodder/gtkui/main.py:3464 #, fuzzy msgid "Subscriptions are up to date" msgstr "OdbФ›r pozastaven" #: src/gpodder/gtkui/main.py:3467 msgid "These URLs failed:" msgstr "" #: src/gpodder/gtkui/main.py:3469 #, fuzzy msgid "Could not migrate some subscriptions" msgstr "NФ›kterУЉ podcasty nemohly bУНt pХ™idУЁny" #: src/gpodder/gtkui/main.py:3493 msgid "Cannot start gPodder" msgstr "gPodder nelze spustit" #: src/gpodder/gtkui/main.py:3494 #, python-format msgid "D-Bus error: %s" msgstr "D-Bus chyba: %s" #: src/gpodder/gtkui/model.py:68 #, python-format msgid "released %s" msgstr "vydУЁno %s" #: src/gpodder/gtkui/model.py:69 src/gpodder/gtkui/model.py:87 #: src/gpodder/gtkui/model.py:237 src/gpodder/gtkui/shownotes.py:84 #, python-format msgid "from %s" msgstr "od %s" #: src/gpodder/gtkui/model.py:80 src/gpodder/gtkui/model.py:393 msgid "played" msgstr "pХ™ehrУЁno" #: src/gpodder/gtkui/model.py:82 msgid "unplayed" msgstr "nepХ™ehrУЁno" #: src/gpodder/gtkui/model.py:85 msgid "today" msgstr "dnes" #: src/gpodder/gtkui/model.py:86 #, python-format msgid "downloaded %s" msgstr "staХОeno %s" #: src/gpodder/gtkui/model.py:337 msgid "Deleted" msgstr "OdstranФ›no" #: src/gpodder/gtkui/model.py:342 msgid "New episode" msgstr "NovУЁ epizoda" #: src/gpodder/gtkui/model.py:356 msgid "Downloaded episode" msgstr "StaХОenУЁ epizoda" #: src/gpodder/gtkui/model.py:359 msgid "Downloaded video episode" msgstr "StaХОenУЁ video epizoda" #: src/gpodder/gtkui/model.py:362 msgid "Downloaded image" msgstr "StaХОenУН obrУЁzek" #: src/gpodder/gtkui/model.py:365 msgid "Downloaded file" msgstr "StaХОenУН soubor" #: src/gpodder/gtkui/model.py:380 msgid "missing file" msgstr "chybФ›jУ­cУ­ soubor" #: src/gpodder/gtkui/model.py:384 msgid "never displayed" msgstr "nikdy nezobrazeno" #: src/gpodder/gtkui/model.py:386 msgid "never played" msgstr "nikdy nepХ™ehrУЁno" #: src/gpodder/gtkui/model.py:388 msgid "never opened" msgstr "nikdy neotevХ™eno" #: src/gpodder/gtkui/model.py:391 msgid "displayed" msgstr "zobrazenУЉ" #: src/gpodder/gtkui/model.py:395 msgid "opened" msgstr "otevХ™enУЉ" #: src/gpodder/gtkui/model.py:397 msgid "deletion prevented" msgstr "zabrУЁnФ›no odstranФ›nУ­" #: src/gpodder/gtkui/model.py:432 share/gpodder/ui/gtk/gpodder.ui.h:32 msgid "All episodes" msgstr "VХЁechny epizody" #: src/gpodder/gtkui/model.py:433 msgid "from all podcasts" msgstr "ze vХЁech podcastХЏ" #: src/gpodder/gtkui/model.py:625 msgid "Subscription paused" msgstr "OdbФ›r pozastaven" #: src/gpodder/gtkui/shownotes.py:118 #, fuzzy msgid "Please select an episode" msgstr "Vybrat epizody" #: src/gpodder/gtkui/interface/addpodcast.py:74 msgid "Nothing to paste." msgstr "Nic k vloХОenУ­" #: src/gpodder/gtkui/interface/addpodcast.py:74 msgid "Clipboard is empty" msgstr "SchrУЁnka je prУЁzdnУЁ" #: src/gpodder/gtkui/interface/common.py:160 msgid "Username" msgstr "JmУЉno" #: src/gpodder/gtkui/interface/common.py:163 msgid "New user" msgstr "NovУН uХОivatel" #: src/gpodder/gtkui/interface/common.py:170 msgid "Login" msgstr "PХ™ihlУЁsit" #: src/gpodder/gtkui/interface/common.py:172 msgid "Authentication required" msgstr "NutnУЁ autentizace" #: src/gpodder/gtkui/interface/common.py:203 msgid "Password" msgstr "Heslo" #: src/gpodder/gtkui/interface/common.py:225 msgid "Select destination" msgstr "VУНbФ›r umУ­stФ›nУ­" #: src/gpodder/gtkui/interface/configeditor.py:34 msgid "Setting" msgstr "NastavenУ­" #: src/gpodder/gtkui/interface/configeditor.py:41 msgid "Set to" msgstr "Nastavit na" #: src/gpodder/gtkui/interface/configeditor.py:81 #, python-format msgid "Cannot set %(field)s to %(value)s. Needed data type: %(datatype)s" msgstr "" "%(field)s nemohlo bУНt nastaveno na %(value)s. PoХОadovanУН typ: %(datatype)s" #: src/gpodder/gtkui/interface/configeditor.py:85 msgid "Error setting option" msgstr "Chyba pХ™i nastavovУЁnУ­ moХОnosti" #: src/gpodder/gtkui/desktop/channel.py:100 msgid "Add section" msgstr "PХ™idat sekci" #: src/gpodder/gtkui/desktop/channel.py:100 msgid "New section:" msgstr "NovУЁ sekce:" #: src/gpodder/gtkui/desktop/channel.py:133 msgid "Select new podcast cover artwork" msgstr "Vyberte obal novУЉho podcastu" #: src/gpodder/gtkui/desktop/channel.py:161 msgid "You can only drop a single image or URL here." msgstr "Sem patХ™У­ pouze jedinУН obrУЁzek nebo URL adresa." #: src/gpodder/gtkui/desktop/channel.py:161 #: src/gpodder/gtkui/desktop/channel.py:171 msgid "Drag and drop" msgstr "TУЁhni a pusХЅ" #: src/gpodder/gtkui/desktop/channel.py:171 msgid "You can only drop local files and http:// URLs here." msgstr "Sem mХЏХОete pХ™etУЁhnout pouze mУ­stnУ­ soubory a http:// adresy." #: src/gpodder/gtkui/desktop/deviceplaylist.py:98 #, fuzzy, python-format msgid "Folder %s could not be created." msgstr "Zdroj na %(url)s se nepodaХ™ilo aktualizovat." #: src/gpodder/gtkui/desktop/deviceplaylist.py:98 #, fuzzy msgid "Error writing playlist" msgstr "Chyba pХ™i otevУ­rУЁnУ­ pХ™ehrУЁvaФe" #: src/gpodder/gtkui/desktop/episodeselector.py:288 #: share/gpodder/ui/gtk/gpodderepisodeselector.ui.h:2 msgid "Select all" msgstr "Vybrat vХЁe" #: src/gpodder/gtkui/desktop/episodeselector.py:292 #: share/gpodder/ui/gtk/gpodderepisodeselector.ui.h:3 msgid "Select none" msgstr "ZruХЁit vУНbФ›r" #: src/gpodder/gtkui/desktop/episodeselector.py:324 msgid "Nothing selected" msgstr "Nic nenУ­ vybrУЁno" #: src/gpodder/gtkui/desktop/episodeselector.py:325 #, python-format msgid "%(count)d episode" msgid_plural "%(count)d episodes" msgstr[0] "%(count)d epizoda" msgstr[1] "%(count)d epizody" msgstr[2] "%(count)d epizod" #: src/gpodder/gtkui/desktop/episodeselector.py:327 #, python-format msgid "size: %s" msgstr "velikost: %s" #: src/gpodder/gtkui/desktop/podcastdirectory.py:238 #, fuzzy msgid "Loading podcasts" msgstr "PХ™idУЁvУЁnУ­ podcastХЏ" #: src/gpodder/gtkui/desktop/podcastdirectory.py:239 #, fuzzy msgid "Please wait while the podcast list is downloaded" msgstr "PoФkejte na odstranФ›nУ­ podcastu" #: src/gpodder/gtkui/desktop/preferences.py:51 #: src/gpodder/gtkui/desktop/preferences.py:93 msgid "Do nothing" msgstr "Nic nedФ›lat" #: src/gpodder/gtkui/desktop/preferences.py:52 msgid "Show episode list" msgstr "Zobrazit seznam epizod" #: src/gpodder/gtkui/desktop/preferences.py:53 msgid "Add to download list" msgstr "PХ™idat do seznamu stahovanУНch" #: src/gpodder/gtkui/desktop/preferences.py:54 msgid "Download immediately" msgstr "StУЁhnout ihned" #: src/gpodder/gtkui/desktop/preferences.py:72 msgid "None" msgstr "ХНУЁdnУН" #: src/gpodder/gtkui/desktop/preferences.py:73 msgid "iPod" msgstr "" #: src/gpodder/gtkui/desktop/preferences.py:74 msgid "Filesystem-based" msgstr "ZaloХОenУН na souborovУЉm systУЉmu" #: src/gpodder/gtkui/desktop/preferences.py:94 msgid "Mark as played" msgstr "OznaФit jako pХ™ehranУЉ" #: src/gpodder/gtkui/desktop/preferences.py:95 msgid "Delete from gPodder" msgstr "Odstranit z aplikace gPodder" #: src/gpodder/gtkui/desktop/preferences.py:123 #, python-format msgid "Custom (%(format_ids)s)" msgstr "VlastnУ­ (%(format_ids)s)" #: src/gpodder/gtkui/desktop/preferences.py:318 msgid "Name" msgstr "JmУЉno" #: src/gpodder/gtkui/desktop/preferences.py:369 #, fuzzy msgid "Documentation" msgstr "DУЉlka" #: src/gpodder/gtkui/desktop/preferences.py:374 #, fuzzy msgid "Extension info" msgstr "Info o pХ™У­davnУЉm modulu" #: src/gpodder/gtkui/desktop/preferences.py:379 msgid "Support the author" msgstr "" #: src/gpodder/gtkui/desktop/preferences.py:413 msgid "Extension cannot be activated" msgstr "RozХЁУ­Х™enУ­ nemХЏХОe bУНt aktivovУЁno" #: src/gpodder/gtkui/desktop/preferences.py:426 msgid "Extension module info" msgstr "Info o pХ™У­davnУЉm modulu" #: src/gpodder/gtkui/desktop/preferences.py:463 msgid "Configure audio player" msgstr "Nastavit pХ™ehrУЁvaФ audia" #: src/gpodder/gtkui/desktop/preferences.py:464 #: src/gpodder/gtkui/desktop/preferences.py:474 msgid "Command:" msgstr "PХ™У­kaz:" #: src/gpodder/gtkui/desktop/preferences.py:473 msgid "Configure video player" msgstr "Nastavit pХ™ehrУЁvaФ videa" #: src/gpodder/gtkui/desktop/preferences.py:485 #: src/gpodder/gtkui/desktop/preferences.py:503 msgid "manually" msgstr "ruФnФ›" #: src/gpodder/gtkui/desktop/preferences.py:505 #, python-format msgid "after %(count)d day" msgid_plural "after %(count)d days" msgstr[0] "po %(count)d dni" msgstr[1] "po %(count)d dnech" msgstr[2] "po %(count)d dnech" #: src/gpodder/gtkui/desktop/preferences.py:541 msgid "Replace subscription list on server" msgstr "Nahradit seznam podcastХЏ na serveru" #: src/gpodder/gtkui/desktop/preferences.py:542 msgid "" "Remote podcasts that have not been added locally will be removed on the " "server. Continue?" msgstr "" "Podcasty na serveru, kterУЉ nejsou v mУ­stnУ­m seznamu, budou smazУЁny. " "PokraФovat?" #: src/gpodder/gtkui/desktop/preferences.py:621 msgid "Select folder for mount point" msgstr "Vyberte sloХОku pro pХ™У­pojnУН bod" #: src/gpodder/gtkui/desktop/preferences.py:638 #, fuzzy msgid "Select folder for playlists" msgstr "Vyberte sloХОku pro pХ™У­pojnУН bod" #: src/gpodder/gtkui/desktop/sync.py:86 msgid "No device configured" msgstr "ХНУЁdnУЉ nastavenУЉ zaХ™У­zenУ­" #: src/gpodder/gtkui/desktop/sync.py:87 msgid "Please set up your device in the preferences dialog." msgstr "Nastavte, prosУ­m, zaХ™У­zenУ­ v dialogu pХ™edvoleb." #: src/gpodder/gtkui/desktop/sync.py:91 msgid "Cannot open device" msgstr "Nelze otevХ™У­t zaХ™У­zenУ­" #: src/gpodder/gtkui/desktop/sync.py:92 msgid "Please check the settings in the preferences dialog." msgstr "Zkontrolujte nastavenУ­ v dialogu PХ™edvolby." #: src/gpodder/gtkui/desktop/sync.py:139 msgid "Not enough space left on device" msgstr "Na zaХ™У­zenУ­ nenУ­ dostatek mУ­sta." #: src/gpodder/gtkui/desktop/sync.py:140 #, python-format msgid "" "Additional free space required: %(required_space)s\n" "Do you want to continue?" msgstr "" "DalХЁУ­ volnУЉ vyХОadovanУЉ mУ­sto: %(required_space)s\n" "Chcete pokraФovat?" #: src/gpodder/gtkui/desktop/sync.py:199 #, fuzzy msgid "Update successful" msgstr "Seznam byl УКspФ›ХЁnФ› nahrУЁn" #: src/gpodder/gtkui/desktop/sync.py:200 msgid "The playlist on your MP3 player has been updated." msgstr "" #: src/gpodder/gtkui/desktop/sync.py:274 msgid "Episodes have been deleted on device" msgstr "" #: src/gpodder/gtkui/desktop/sync.py:285 #, fuzzy msgid "Error writing playlist files" msgstr "Chyba pХ™i pХ™evУЁdФ›nУ­ souboru" #: src/gpodder/plugins/soundcloud.py:154 msgid "Unknown track" msgstr "NeznУЁmУЁ stopa" #: src/gpodder/plugins/soundcloud.py:181 #, python-format msgid "%s on Soundcloud" msgstr "%s na Soundcloudu" #: src/gpodder/plugins/soundcloud.py:190 #, python-format msgid "Tracks published by %s on Soundcloud." msgstr "Stopy publikoval %s na Soundcloudu" #: src/gpodder/plugins/soundcloud.py:217 #, python-format msgid "%s's favorites on Soundcloud" msgstr "OblУ­benУЉ od %s na Soundcloud" #: src/gpodder/plugins/soundcloud.py:223 #, python-format msgid "Tracks favorited by %s on Soundcloud." msgstr "Sledovat oblУ­benУЉ %s na Soundcloud." #: share/gpodder/extensions/audio_converter.py:20 #, fuzzy msgid "Convert audio files" msgstr "PХ™i pХ™evodu doХЁlo k chybФ›" #: share/gpodder/extensions/audio_converter.py:21 #, fuzzy msgid "Transcode audio files to mp3/ogg" msgstr "PХ™ekУГdovat .ogg soubory. mp3 pomocУ­ ffmpeg" #: share/gpodder/extensions/audio_converter.py:84 #: share/gpodder/extensions/video_converter.py:86 #, python-format msgid "Convert to %(format)s" msgstr "PХ™evУЉst na %(format)s" #: share/gpodder/extensions/audio_converter.py:111 #: share/gpodder/extensions/rockbox_convert2mp4.py:65 #: share/gpodder/extensions/video_converter.py:111 msgid "File converted" msgstr "Soubor pХ™eveden" #: share/gpodder/extensions/audio_converter.py:114 #: share/gpodder/extensions/video_converter.py:114 msgid "Conversion failed" msgstr "PХ™i pХ™evodu doХЁlo k chybФ›" #: share/gpodder/extensions/concatenate_videos.py:20 #: share/gpodder/extensions/concatenate_videos.py:100 #, fuzzy msgid "Concatenate videos" msgstr "PХ™i pХ™evodu doХЁlo k chybФ›" #: share/gpodder/extensions/concatenate_videos.py:21 #, fuzzy msgid "Add a context menu item for concatenating multiple videos" msgstr "" "PХ™idat do kontextovУЉho menu poloХОku zaХ™azenУНch epizod do fronty v " "nainstalovanУНch pХ™ehrУЁvaФУ­ch mУЉdiУ­" #: share/gpodder/extensions/concatenate_videos.py:37 msgid "Save video" msgstr "" #: share/gpodder/extensions/concatenate_videos.py:66 #, fuzzy msgid "Concatenating video files" msgstr "PХ™i pХ™evodu doХЁlo k chybФ›" #: share/gpodder/extensions/concatenate_videos.py:67 #, python-format msgid "Writing %(filename)s" msgstr "" #: share/gpodder/extensions/concatenate_videos.py:78 msgid "Videos successfully converted" msgstr "" #: share/gpodder/extensions/concatenate_videos.py:79 #, fuzzy msgid "Error converting videos" msgstr "Chyba pХ™i pХ™evУЁdФ›nУ­ souboru" #: share/gpodder/extensions/concatenate_videos.py:80 msgid "Concatenation result" msgstr "" #: share/gpodder/extensions/enqueue_in_mediaplayer.py:16 msgid "Enqueue in media players" msgstr "ZaХ™adit do fronty pХ™ehrУЁvaФХЏ mУЉdiУ­" #: share/gpodder/extensions/enqueue_in_mediaplayer.py:17 msgid "" "Add a context menu item for enqueueing episodes in installed media players" msgstr "" "PХ™idat do kontextovУЉho menu poloХОku zaХ™azenУНch epizod do fronty v " "nainstalovanУНch pХ™ehrУЁvaФУ­ch mУЉdiУ­" #: share/gpodder/extensions/enqueue_in_mediaplayer.py:35 msgid "Enqueue in" msgstr "ZaХ™adit do" #: share/gpodder/extensions/episode_website_context_menu.py:14 msgid "\"Open website\" episode context menu" msgstr "" #: share/gpodder/extensions/episode_website_context_menu.py:15 #, fuzzy msgid "Add a context menu item for opening the website of an episode" msgstr "" "PХ™idat do kontextovУЉho menu poloХОku zaХ™azenУНch epizod do fronty v " "nainstalovanУНch pХ™ehrУЁvaФУ­ch mУЉdiУ­" #: share/gpodder/extensions/episode_website_context_menu.py:30 #, fuzzy msgid "Open website" msgstr "WebovУЁ strУЁnka:" #: share/gpodder/extensions/gtk_statusicon.py:14 msgid "Gtk Status Icon" msgstr "Gtk stavovУЁ ikona" #: share/gpodder/extensions/gtk_statusicon.py:15 msgid "Show a status icon for Gtk-based Desktops." msgstr "Zobrazit stavovou ikonu pro desktopy zaloХОenУЉ na Gtk" #: share/gpodder/extensions/minimize_on_start.py:10 msgid "Minimize on start" msgstr "Minimalizovat na startu" #: share/gpodder/extensions/minimize_on_start.py:11 msgid "Minimizes the gPodder window on startup." msgstr "Zminimalizuje okno aplikace gPodder na startu" #: share/gpodder/extensions/mpris-listener.py:33 msgid "MPRIS Listener" msgstr "" #: share/gpodder/extensions/mpris-listener.py:34 msgid "Convert MPRIS notifications to gPodder Media Player D-Bus API" msgstr "" #: share/gpodder/extensions/normalize_audio.py:21 msgid "Normalize audio with re-encoding" msgstr "Normalizovat audio" #: share/gpodder/extensions/normalize_audio.py:22 msgid "Normalize the volume of audio files with normalize-audio" msgstr "Normalizovat УКroveХˆ hlasitosti" #: share/gpodder/extensions/normalize_audio.py:99 msgid "File normalized" msgstr "Normalizace probФ›hla" #: share/gpodder/extensions/rename_download.py:16 msgid "Rename episodes after download" msgstr "Po staХОenУ­ pХ™ejmenovat epizody" #: share/gpodder/extensions/rename_download.py:17 msgid "Rename episodes to \".\" on download" msgstr "Po staХОenУ­ pХ™ejmenovat epizody na \".\"" #: share/gpodder/extensions/rm_ogg_cover.py:37 msgid "Remove cover art from OGG files" msgstr "Odstranit pХ™ebal z OGG souborХЏ" #: share/gpodder/extensions/rm_ogg_cover.py:38 msgid "removes coverart from all downloaded ogg files" msgstr "OdstranУ­ pХ™ebaly ze vХЁech staХОenУНch ogg souborХЏ" #: share/gpodder/extensions/rm_ogg_cover.py:66 msgid "Remove cover art" msgstr "Odstranit pХ™ebal" #: share/gpodder/extensions/rockbox_convert2mp4.py:26 msgid "Convert video files to MP4 for Rockbox" msgstr "PХ™evУЉst video soubory do MP4 pro Rockbox" #: share/gpodder/extensions/rockbox_convert2mp4.py:27 msgid "Converts all videos to a Rockbox-compatible format" msgstr "PХ™evede vХЁechna videa na Rockbox kompatibilnУ­ formУЁt" #: share/gpodder/extensions/sonos.py:19 share/gpodder/extensions/sonos.py:78 msgid "Stream to Sonos" msgstr "" #: share/gpodder/extensions/sonos.py:20 msgid "Stream podcasts to Sonos speakers" msgstr "" #: share/gpodder/extensions/tagging.py:45 msgid "Tag downloaded files using Mutagen" msgstr "OznaФit staХОenУЉ soubory pomocУ­ Mutagen" #: share/gpodder/extensions/tagging.py:46 msgid "Add episode and podcast titles to MP3/OGG tags" msgstr "PХ™idat nУЁzvy epizod a podcastХЏ do MP3/OGG tagХЏ" #: share/gpodder/extensions/taskbar_progress.py:28 #, fuzzy msgid "Show download progress on the taskbar" msgstr "Zobrazit postup stahovУЁnУ­ v ikonФ› Unity spouХЁtФ›Фe" #: share/gpodder/extensions/taskbar_progress.py:29 msgid "Displays the progress on the Windows taskbar." msgstr "" #: share/gpodder/extensions/ted_subtitles.py:16 msgid "Subtitle Downloader for TED Talks" msgstr "StahovУЁnУ­ titulkХЏ z TED Talks" #: share/gpodder/extensions/ted_subtitles.py:17 msgid "Downloads .srt subtitles for TED Talks Videos" msgstr "StУЁhne .srt titulky z TED Talks videУ­" #: share/gpodder/extensions/ubuntu_appindicator.py:10 msgid "Ubuntu App Indicator" msgstr "Ubuntu App indikУЁtor" #: share/gpodder/extensions/ubuntu_appindicator.py:11 msgid "Show a status indicator in the top bar." msgstr "Zobrazit indikУЁtor na hornУ­ liХЁtФ›" #: share/gpodder/extensions/ubuntu_appindicator.py:47 msgid "Show main window" msgstr "Zobrazit hlavnУ­ okno" #: share/gpodder/extensions/ubuntu_appindicator.py:57 #: share/gpodder/ui/gtk/gpodder.ui.h:6 msgid "Quit" msgstr "UkonФit" #: share/gpodder/extensions/ubuntu_unity.py:10 msgid "Ubuntu Unity Integration" msgstr "Integrace s Ubuntu Unity" #: share/gpodder/extensions/ubuntu_unity.py:11 msgid "Show download progress in the Unity Launcher icon." msgstr "Zobrazit postup stahovУЁnУ­ v ikonФ› Unity spouХЁtФ›Фe" #: share/gpodder/extensions/update_feeds_on_startup.py:14 msgid "Search for new episodes on startup" msgstr "PХ™i otevХ™enУ­ programu hledat novУЉ epizody" #: share/gpodder/extensions/update_feeds_on_startup.py:15 msgid "Starts the search for new episodes on startup" msgstr "ZaФУ­t hledat novУЉ epizody pХ™i startu programu" #: share/gpodder/extensions/video_converter.py:22 #, fuzzy msgid "Convert video files" msgstr "PХ™i pХ™evodu doХЁlo k chybФ›" #: share/gpodder/extensions/video_converter.py:23 #, fuzzy msgid "Transcode video files to avi/mp4/m4v" msgstr "PХ™ekУГdovat .ogg soubory. mp3 pomocУ­ ffmpeg" #: share/gpodder/ui/gtk/gpodderaddpodcast.ui.h:1 msgid "Add a new podcast" msgstr "PХ™idat novУН podcast" #: share/gpodder/ui/gtk/gpodderaddpodcast.ui.h:2 msgid "URL:" msgstr "URL:" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:1 msgid "gPodder Podcast Editor" msgstr "Editor podcastХЏ" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:2 msgid "Section:" msgstr "OddУ­l:" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:3 msgid "Disable feed updates (pause subscription)" msgstr "ZakУЁzat aktualizace zdroje (pozastavit odbФ›r)" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:4 msgid "Synchronize to MP3 player devices" msgstr "Synchronizovat s MP3 pХ™ehrУЁvaФem" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:5 msgid "Strategy:" msgstr "Strategie" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:6 #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:6 msgid "General" msgstr "ObecnУЉ" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:7 msgid "HTTP/FTP Authentication" msgstr "HTTP/FTP autentizace" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:8 #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:13 msgid "Username:" msgstr "JmУЉno:" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:9 #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:14 msgid "Password:" msgstr "Heslo:" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:10 msgid "Locations" msgstr "UmУ­stФ›nУ­" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:11 msgid "Download to:" msgstr "StУЁhnout do:" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:12 msgid "Website:" msgstr "WebovУЁ strУЁnka:" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:13 msgid "website label" msgstr "popisek strУЁnky" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:14 msgid "Advanced" msgstr "PokroФilУЉ" #: share/gpodder/ui/gtk/gpodderconfigeditor.ui.h:1 msgid "gPodder Configuration Editor" msgstr "Editor kanУЁlХЏ" #: share/gpodder/ui/gtk/gpodderconfigeditor.ui.h:2 msgid "Search for:" msgstr "Hledat:" #: share/gpodder/ui/gtk/gpodderconfigeditor.ui.h:3 msgid "Show All" msgstr "Zobrazit vХЁe" #: share/gpodder/ui/gtk/gpodderepisodeselector.ui.h:1 msgid "Select episodes" msgstr "Vybrat epizody" #: share/gpodder/ui/gtk/gpodderpodcastdirectory.ui.h:1 msgid "Find new podcasts" msgstr "Hledat novУЉ podcasty" #: share/gpodder/ui/gtk/gpodderpodcastdirectory.ui.h:2 msgid "Select All" msgstr "Vybrat vХЁe" #: share/gpodder/ui/gtk/gpodderpodcastdirectory.ui.h:3 msgid "Select None" msgstr "ZruХЁit vУНbФ›r" #: share/gpodder/ui/gtk/gpodderpodcastdirectory.ui.h:4 msgid "label" msgstr "" #: share/gpodder/ui/gtk/gpodderpodcastdirectory.ui.h:5 msgid "..." msgstr "" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:1 #: share/gpodder/ui/gtk/gpodder.ui.h:5 msgid "Preferences" msgstr "NastavenУ­" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:2 msgid "Audio player:" msgstr "PХ™ehrУЁvaФ audia:" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:3 msgid "Video player:" msgstr "PХ™ehrУЁvaФ videa:" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:4 msgid "\"All episodes\" in podcast list" msgstr "\"VХЁechny epizody\" v seznamu podcastХЏ" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:5 msgid "Use sections for podcast list" msgstr "PouХОУ­vat sekce v seznamu podcastХЏ" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:7 #, fuzzy msgid "Preferred YouTube format:" msgstr "PreferovanУН formУЁt videa" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:8 msgid "YouTube API key (v3):" msgstr "" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:9 #, fuzzy msgid "Preferred Vimeo format:" msgstr "PreferovanУН formУЁt videa" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:11 msgid "Extensions" msgstr "RozХЁУ­Х™enУ­" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:12 msgid "Synchronize subscriptions and episode actions" msgstr "Synchronizace odbФ›rХЏ a akcУ­ epizod" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:15 msgid "Replace list on server with local subscriptions" msgstr "Nahradit seznam na serveru mУ­stnУ­mi odbФ›ry" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:16 msgid "Device name:" msgstr "JmУЉno zaХ™У­zenУ­" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:17 msgid "gpodder.net" msgstr "gpodder.net" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:18 msgid "Update interval:" msgstr "Interval aktualizace:" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:19 msgid "Maximum number of episodes per podcast:" msgstr "MaximУЁlnУ­ poФet epizod v podcastu:" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:20 msgid "When new episodes are found:" msgstr "KdyХО jsou nalezeny novУЉ epizody" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:21 msgid "Updating" msgstr "Aktualizace" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:22 msgid "Delete played episodes:" msgstr "Odstranit pХ™ehranУЉ epizody" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:23 msgid "Remove played episodes even if unfinished" msgstr "Odstranit i epizody nepХ™ehranУЉ aХО do konce" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:24 msgid "Also remove unplayed episodes" msgstr "Odstranit i nepХ™ehranУЉ epizody" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:25 msgid "Clean-up" msgstr "VyФistit" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:26 msgid "Device type:" msgstr "Typ zaХ™У­zenУ­:" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:27 msgid "Mountpoint:" msgstr "PХ™У­pojnУН bod:" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:28 msgid "After syncing an episode:" msgstr "Po synchronizaci epizody" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:29 #, fuzzy msgid "Create playlists on device" msgstr "Nahradit seznam na serveru" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:30 #, fuzzy msgid "Playlists Folder:" msgstr "Seznam k pХ™ehrУЁnУ­ je prУЁzdnУН" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:31 msgid "Remove episodes deleted on device from gPodder" msgstr "" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:32 msgid "Only sync unplayed episodes" msgstr "Synchronizace pouze nepХ™ehranУНch epizod" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:33 msgid "Devices" msgstr "ZaХ™У­zenУ­" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:34 msgid "Edit config" msgstr "Upravit nastavenУ­" #: share/gpodder/ui/gtk/gpodder.ui.h:1 msgid "_Podcasts" msgstr "_Podcasty" #: share/gpodder/ui/gtk/gpodder.ui.h:2 msgid "Check for new episodes" msgstr "Zkontrolovat novУЉ epizody" #: share/gpodder/ui/gtk/gpodder.ui.h:3 msgid "Download new episodes" msgstr "StУЁhnout novУЉ epizody" #: share/gpodder/ui/gtk/gpodder.ui.h:7 msgid "_Subscriptions" msgstr "_OdbФ›ry" #: share/gpodder/ui/gtk/gpodder.ui.h:8 msgid "Discover new podcasts" msgstr "Objevit novУЉ podcasty" #: share/gpodder/ui/gtk/gpodder.ui.h:9 msgid "Add podcast via URL" msgstr "PХ™idat URL podcastu" #: share/gpodder/ui/gtk/gpodder.ui.h:11 msgid "Unsubscribe" msgstr "PХ™estat odebУ­rat" #: share/gpodder/ui/gtk/gpodder.ui.h:14 msgid "Import from OPML file" msgstr "Importovat z OPML souboru" #: share/gpodder/ui/gtk/gpodder.ui.h:15 msgid "Export to OPML file" msgstr "Exportovat do OPML souboru" #: share/gpodder/ui/gtk/gpodder.ui.h:16 msgid "Go to gpodder.net" msgstr "JУ­t na gpodder.net" #: share/gpodder/ui/gtk/gpodder.ui.h:17 msgid "_Episodes" msgstr "_Epizody" #: share/gpodder/ui/gtk/gpodder.ui.h:18 msgid "Play" msgstr "PХ™ehrУЁt" #: share/gpodder/ui/gtk/gpodder.ui.h:19 msgid "Open" msgstr "OtevХ™У­t" #: share/gpodder/ui/gtk/gpodder.ui.h:22 msgid "Delete" msgstr "Odstranit" #: share/gpodder/ui/gtk/gpodder.ui.h:23 msgid "Toggle new status" msgstr "PХ™epnout na novУН status" #: share/gpodder/ui/gtk/gpodder.ui.h:24 msgid "Change delete lock" msgstr "PХ™epnout pХ™У­znak smazУЁnУ­" #: share/gpodder/ui/gtk/gpodder.ui.h:26 msgid "E_xtras" msgstr "D_alХЁУ­ funkce" #: share/gpodder/ui/gtk/gpodder.ui.h:27 msgid "Sync to device" msgstr "Synchronizovat se zaХ™У­zenУ­m" #: share/gpodder/ui/gtk/gpodder.ui.h:28 #, fuzzy msgid "Update YouTube subscriptions" msgstr "ХНУЁdnУЉ odbФ›ry" #: share/gpodder/ui/gtk/gpodder.ui.h:29 msgid "_View" msgstr "_Zobrazit" #: share/gpodder/ui/gtk/gpodder.ui.h:30 msgid "Toolbar" msgstr "NУЁstrojovУЁ liХЁta" #: share/gpodder/ui/gtk/gpodder.ui.h:31 msgid "Episode descriptions" msgstr "Popis epizod" #: share/gpodder/ui/gtk/gpodder.ui.h:33 msgid "Hide deleted episodes" msgstr "SkrУНt odstranФ›nУЉ epizody" #: share/gpodder/ui/gtk/gpodder.ui.h:34 msgid "Downloaded episodes" msgstr "StaХОenУЉ epizody" #: share/gpodder/ui/gtk/gpodder.ui.h:35 msgid "Unplayed episodes" msgstr "NepХ™ehranУЉ epizody" #: share/gpodder/ui/gtk/gpodder.ui.h:36 msgid "Hide podcasts without episodes" msgstr "SkrУНt podcasty bez epizod" #: share/gpodder/ui/gtk/gpodder.ui.h:37 msgid "_Help" msgstr "_NУЁpovФ›da" #: share/gpodder/ui/gtk/gpodder.ui.h:38 msgid "User manual" msgstr "UХОivatelskУН nУЁvod" #: share/gpodder/ui/gtk/gpodder.ui.h:39 msgid "Software updates" msgstr "SoftwarovУЉ aktualizace" #: share/gpodder/ui/gtk/gpodder.ui.h:40 msgid "Filter:" msgstr "Filtr:" #: share/gpodder/ui/gtk/gpodder.ui.h:41 msgid "Podcasts" msgstr "Podcasty" #: share/gpodder/ui/gtk/gpodder.ui.h:42 msgid "Limit rate to" msgstr "Omezit ryhclost na" #: share/gpodder/ui/gtk/gpodder.ui.h:43 msgid "KiB/s" msgstr "KiB/s" #: share/gpodder/ui/gtk/gpodder.ui.h:44 msgid "Limit downloads to" msgstr "Omezit poФet stahovУЁnУ­ na" #: share/gpodder/ui/gtk/gpodderwelcome.ui.h:2 msgid "Welcome to gPodder" msgstr "VУ­tejte v gPodderu" #: share/gpodder/ui/gtk/gpodderwelcome.ui.h:3 msgid "Your podcast list is empty." msgstr "Seznam podcastХЏ je prУЁzdnУН." #: share/gpodder/ui/gtk/gpodderwelcome.ui.h:4 msgid "Choose from a list of example podcasts" msgstr "Vybrat ze seznamu ukУЁzkovУНch podcastХЏ" #: share/gpodder/ui/gtk/gpodderwelcome.ui.h:5 msgid "Add a podcast by entering its URL" msgstr "PХ™idejte podcast zadУЁnУ­m jeho URL" #: share/gpodder/ui/gtk/gpodderwelcome.ui.h:6 msgid "Restore my subscriptions from gpodder.net" msgstr "Obnovit mУЉ odbФ›ry z gpodder.net" #: bin/gpo:266 msgid "Podcast update requested by extensions." msgstr "Aktualizace podcastХЏ vyХОadovanУЉ rozХЁУ­Х™enУ­mi." #: bin/gpo:270 msgid "Episode download requested by extensions." msgstr "StaХОenУ­ epizody vyХОadovanУЉ rozХЁУ­Х™enУ­mi." #: bin/gpo:323 #, python-format msgid "Invalid url: %s" msgstr "NeplatnУЁ url: %s" #: bin/gpo:340 bin/gpo:416 bin/gpo:450 bin/gpo:582 bin/gpo:597 bin/gpo:717 #, python-format msgid "You are not subscribed to %s." msgstr "NeodebУ­rУЁte %s" #: bin/gpo:346 #, fuzzy, python-format msgid "Already subscribed to %s." msgstr "%s nelze odebУ­rat" #: bin/gpo:352 #, python-format msgid "Cannot subscribe to %s." msgstr "%s nelze odebУ­rat" #: bin/gpo:368 #, python-format msgid "Successfully added %s." msgstr "%s УКspФ›ХЁnФ› pХ™idУЁno " #: bin/gpo:386 msgid "This configuration option does not exist." msgstr "Tato moХОnost nastavenУ­ neexistuje." #: bin/gpo:390 msgid "Can only set leaf configuration nodes." msgstr "Lze nastavit jen koncovУЉ vФ›tve konfigurace." #: bin/gpo:404 #, python-format msgid "Renamed %(old_title)s to %(new_title)s." msgstr "%(old_title)s pХ™ejmenovУЁno na %(new_title)s." #: bin/gpo:420 #, python-format msgid "Unsubscribed from %s." msgstr "ZruХЁeno odebУ­rУЁnУ­ %s" #: bin/gpo:494 msgid "Updates disabled" msgstr "Aktualizace zakУЁzУЁny" #: bin/gpo:505 #, python-format msgid "%(count)d new episode" msgid_plural "%(count)d new episodes" msgstr[0] "%(count)d novУЁ epizoda" msgstr[1] "%(count)d novУЉ epizody" msgstr[2] "%(count)d novУНch epizod" #: bin/gpo:511 msgid "Checking for new episodes" msgstr "Zkontrolovat novУЉ epizody" #: bin/gpo:520 #, python-format msgid "Skipping %(podcast)s" msgstr "PХ™eskakovУЁnУ­ %(podcast)s" #: bin/gpo:588 #, python-format msgid "Disabling feed update from %s." msgstr "ZakУЁzУЁna aktualizace kanУЁlu z %s" #: bin/gpo:603 #, python-format msgid "Enabling feed update from %s." msgstr "Povolena aktualizace kanУЁlu z %s" #: bin/gpo:616 #, python-format msgid "Please register a YouTube API key and set it using %(command)s." msgstr "" #: bin/gpo:643 #, fuzzy, python-format msgid "Changing: %(old_url)s => %(new_url)s" msgstr "URL adresa zmФ›nФ›na z %(old_url)s na %(new_url)s." #: bin/gpo:653 #, fuzzy msgid "Nothing to fix" msgstr "Nic k exportovУЁnУ­" #: bin/gpo:672 msgid "No podcasts found." msgstr "Nebyly nalezeny ХОУЁdnУЉ podcasty" #: bin/gpo:686 msgid "Enter index to subscribe, ? for list" msgstr "Pro pХ™ihlУЁХЁenУ­ zadejte poХ™adovУЉ ФУ­slo, ? vypУ­ХЁe seznam" #: bin/gpo:700 bin/gpo:704 msgid "Invalid value." msgstr "NeplatnУЁ hodnota" #: bin/gpo:721 #, python-format msgid "Invalid URL: %s" msgstr "NeplatnУЁ URL adresa: %s" #: bin/gpo:724 #, python-format msgid "Changed URL from %(old_url)s to %(new_url)s." msgstr "URL adresa zmФ›nФ›na z %(old_url)s na %(new_url)s." #: bin/gpo:782 #, python-format msgid "Syntax error: %(error)s" msgstr "Chyba syntaxe: %(error)s" #: bin/gpo:876 #, fuzzy msgid "Ambiguous command. Did you mean.." msgstr "NejednoznaФnУН pХ™У­kaz. Mysleli jste..." #: bin/gpo:880 msgid "The requested function is not available." msgstr "PoХОadovanУЁ funkce nenУ­ dostupnУЁ." #: bin/gpodder:105 msgid "print logging output on the console" msgstr "Vytisknout vУНstup logovУЁnУ­ na konzoli" #: bin/gpodder:108 msgid "subscribe to the feed at URL" msgstr "PХ™ihlУЁsit k odbФ›ru na adrese URL" #: bin/gpodder:113 msgid "Mac OS X application process number" msgstr "Mac OS X: ФУ­slo procesu" #: share/applications/gpodder.desktop.in.h:2 msgid "gPodder Podcast Client" msgstr "Podcast klient gPodder" #: share/applications/gpodder.desktop.in.h:3 msgid "Podcast Client" msgstr "Podcast klient" #: share/applications/gpodder.desktop.in.h:4 msgid "Subscribe to audio and video content from the web" msgstr "OdebУ­rat audio a video obsah z internetu" #: share/applications/gpodder-url-handler.desktop.in.h:1 #, fuzzy msgid "gPodder (subscribe to feed)" msgstr "PХ™ihlУЁsit k odbФ›ru na adrese URL" gpodder-3.9.0/po/fr.po0000644000016000001710000016477012654461625015700 0ustar jenkinsjenkins00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # # Translators: # , 2012. # Ludovic LACOSTE , 2011. msgid "" msgstr "" "Project-Id-Version: gPodder\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2016-02-03 20:31+0000\n" "PO-Revision-Date: 2013-01-19 12:30+0000\n" "Last-Translator: Thomas Perl \n" "Language-Team: French (http://www.transifex.com/projects/p/gpodder/language/" "fr/)\n" "Language: fr\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n > 1);\n" #: src/gpodder/config.py:55 #, python-format msgid "gPodder on %s" msgstr "gPodder sur %s" #: src/gpodder/directory.py:95 #, fuzzy msgid "gpodder.net search" msgstr "gpodder.net" #: src/gpodder/directory.py:104 #, fuzzy msgid "OPML from web" msgstr "Fichier OPML" #: src/gpodder/directory.py:113 #, fuzzy msgid "OPML file" msgstr "Fichier OPML" #: src/gpodder/directory.py:122 share/gpodder/ui/gtk/gpodderwelcome.ui.h:1 #, fuzzy msgid "Getting started" msgstr "ParamУЈtre" #: src/gpodder/directory.py:131 #, fuzzy msgid "gpodder.net Top 50" msgstr "gpodder.net" #: src/gpodder/directory.py:140 #, fuzzy msgid "gpodder.net Tags" msgstr "gpodder.net" #: src/gpodder/directory.py:152 #, fuzzy msgid "Soundcloud search" msgstr "%s sur Soundcloud" #: src/gpodder/directory.py:165 #, fuzzy msgid "Imported OPML file" msgstr "Importer depuis un fichier OPML" #: src/gpodder/download.py:329 msgid "Wrong username/password" msgstr "Mauvais nom d'utilisateur / mot de passe" #: src/gpodder/download.py:527 src/gpodder/sync.py:924 msgid "Added" msgstr "AjoutУЉ" #: src/gpodder/download.py:527 src/gpodder/sync.py:924 msgid "Queued" msgstr "Mis en file d'attente" #: src/gpodder/download.py:527 src/gpodder/gtkui/model.py:327 msgid "Downloading" msgstr "En train de tУЉlУЉcharger" #: src/gpodder/download.py:528 src/gpodder/model.py:721 #: src/gpodder/sync.py:925 msgid "Finished" msgstr "TerminУЉ" #: src/gpodder/download.py:528 src/gpodder/sync.py:925 msgid "Failed" msgstr "EchouУЉ" #: src/gpodder/download.py:528 src/gpodder/sync.py:925 msgid "Cancelled" msgstr "AnnulУЉ" #: src/gpodder/download.py:528 src/gpodder/sync.py:925 msgid "Paused" msgstr "En pause" #: src/gpodder/download.py:862 msgid "Missing content from server" msgstr "Contenu manquant sur le serveur" #: src/gpodder/download.py:868 #, python-format msgid "I/O Error: %(error)s: %(filename)s" msgstr "Erreur E/S : %(error)s:%(filename)s" #: src/gpodder/download.py:875 #, python-format msgid "HTTP Error %(code)s: %(message)s" msgstr "Erreur HTTP %(code)s:%(message)s" #: src/gpodder/download.py:879 src/gpodder/sync.py:1081 #, python-format msgid "Error: %s" msgstr "Erreur: %s" #: src/gpodder/extensions.py:55 msgid "Desktop Integration" msgstr "" #: src/gpodder/extensions.py:56 #, fuzzy msgid "Interface" msgstr "Entier" #: src/gpodder/extensions.py:57 #, fuzzy msgid "Post download" msgstr "tУЉlУЉcharger" #: src/gpodder/extensions.py:59 src/gpodder/model.py:779 #: src/gpodder/model.py:1225 msgid "Other" msgstr "Autre" #: src/gpodder/extensions.py:100 msgid "No description for this extension." msgstr "Aucune description pour cette extension" #: src/gpodder/extensions.py:212 #, python-format msgid "Command not found: %(command)s" msgstr "" #: src/gpodder/extensions.py:228 #, python-format msgid "Need at least one of the following commands: %(list_of_commands)s" msgstr "" #: src/gpodder/extensions.py:265 #, python-format msgid "Python module not found: %(module)s" msgstr "" #: src/gpodder/model.py:446 src/gpodder/plugins/soundcloud.py:156 msgid "No description available" msgstr "Aucune description disponible" #: src/gpodder/model.py:679 msgid "unknown" msgstr "inconnu" #: src/gpodder/model.py:746 msgid "Default" msgstr "" #: src/gpodder/model.py:747 msgid "Only keep latest" msgstr "" #: src/gpodder/model.py:1208 src/gpodder/model.py:1223 #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:10 msgid "Video" msgstr "VidУЉo" #: src/gpodder/model.py:1221 msgid "Audio" msgstr "Audio" #: src/gpodder/my.py:174 #, python-format msgid "Add %s" msgstr "Ajouter %s" #: src/gpodder/my.py:176 #, python-format msgid "Remove %s" msgstr "Supprimer %s" #: src/gpodder/sync.py:196 #, fuzzy msgid "Cancelled by user" msgstr "AnnulУЉ" #: src/gpodder/sync.py:199 msgid "Writing data to disk" msgstr "" #: src/gpodder/sync.py:295 msgid "Opening iPod database" msgstr "" #: src/gpodder/sync.py:305 #, fuzzy msgid "iPod opened" msgstr "ouvert" #: src/gpodder/sync.py:316 msgid "Saving iPod database" msgstr "" #: src/gpodder/sync.py:321 msgid "Writing extended gtkpod database" msgstr "" #: src/gpodder/sync.py:397 src/gpodder/sync.py:680 src/gpodder/sync.py:874 #, fuzzy, python-format msgid "Removing %s" msgstr "Supprimer %s" #: src/gpodder/sync.py:412 src/gpodder/sync.py:557 #, fuzzy, python-format msgid "Adding %s" msgstr "Podcast anonyme" #: src/gpodder/sync.py:430 #, python-format msgid "Error copying %(episode)s: Not enough free space on %(mountpoint)s" msgstr "" #: src/gpodder/sync.py:515 #, fuzzy msgid "Opening MP3 player" msgstr "lu" #: src/gpodder/sync.py:518 #, fuzzy msgid "MP3 player opened" msgstr "lu" #: src/gpodder/sync.py:576 #, python-format msgid "" "Not enough space in %(path)s: %(free)s available, but need at least %(need)s" msgstr "" #: src/gpodder/sync.py:603 src/gpodder/sync.py:611 #, fuzzy, python-format msgid "Error opening %(filename)s: %(message)s" msgstr "Erreur pendant la mise У  jour %(url)s: %(message)s" #: src/gpodder/sync.py:780 src/gpodder/sync.py:786 #, fuzzy msgid "MTP device" msgstr "Nouveau pУЉriphУЉrique" #: src/gpodder/sync.py:793 #, fuzzy msgid "Opening the MTP device" msgstr "Nouveau pУЉriphУЉrique" #: src/gpodder/sync.py:803 #, fuzzy, python-format msgid "%s opened" msgstr "ouvert" #: src/gpodder/sync.py:808 #, fuzzy, python-format msgid "Closing %s" msgstr "tУЉlУЉcharger" #: src/gpodder/sync.py:816 #, python-format msgid "%s closed" msgstr "" #: src/gpodder/sync.py:821 bin/gpo:708 #, fuzzy, python-format msgid "Adding %s..." msgstr "Podcast anonyme" #: src/gpodder/sync.py:924 #, fuzzy msgid "Synchronizing" msgstr "Activer les bulles de notifications" #: src/gpodder/util.py:429 #, python-format msgid "%(count)d day ago" msgid_plural "%(count)d days ago" msgstr[0] "il y a %(count)d jour" msgstr[1] "il y a %(count)d jours" #: src/gpodder/util.py:508 msgid "Today" msgstr "Aujourd'hui" #: src/gpodder/util.py:510 msgid "Yesterday" msgstr "Hier" #: src/gpodder/util.py:553 src/gpodder/util.py:556 msgid "(unknown)" msgstr "(inconnu)" #: src/gpodder/util.py:1193 src/gpodder/util.py:1212 #, python-format msgid "%(count)d second" msgid_plural "%(count)d seconds" msgstr[0] "%(count)d seconde" msgstr[1] "%(count)d secondes" #: src/gpodder/util.py:1206 #, python-format msgid "%(count)d hour" msgid_plural "%(count)d hours" msgstr[0] "%(count)d heure" msgstr[1] "%(count)d heures" #: src/gpodder/util.py:1209 #, python-format msgid "%(count)d minute" msgid_plural "%(count)d minutes" msgstr[0] "%(count)d minute" msgstr[1] "%(count)d minutes" #: src/gpodder/util.py:1215 msgid "and" msgstr "et" #: src/gpodder/gtkui/config.py:50 msgid "Integer" msgstr "Entier" #: src/gpodder/gtkui/config.py:52 msgid "Float" msgstr "Flottant" #: src/gpodder/gtkui/config.py:54 msgid "Boolean" msgstr "BoolУЉen" #: src/gpodder/gtkui/config.py:56 msgid "String" msgstr "ChaУЎne" #: src/gpodder/gtkui/desktopfile.py:70 #, python-format msgid "Command: %s" msgstr "Commande: %s" #: src/gpodder/gtkui/desktopfile.py:150 msgid "Default application" msgstr "Application par dУЉfaut" #: src/gpodder/gtkui/main.py:205 share/applications/gpodder.desktop.in.h:1 msgid "gPodder" msgstr "gPodder" #: src/gpodder/gtkui/main.py:288 msgid "Loading incomplete downloads" msgstr "Chargement des tУЉlУЉchargements incomplets" #: src/gpodder/gtkui/main.py:289 msgid "Some episodes have not finished downloading in a previous session." msgstr "" "Certain УЉpisodes n'ont pas fini d'УЊtre tУЉlУЉchargУЉs dans une session " "prУЉcУЉdente" #: src/gpodder/gtkui/main.py:291 #, python-format msgid "%(count)d partial file" msgid_plural "%(count)d partial files" msgstr[0] "%(count)d fichier partiel" msgstr[1] "%(count)d fichiers partiels" #: src/gpodder/gtkui/main.py:306 msgid "Resume all" msgstr "Reprendre tout" #: src/gpodder/gtkui/main.py:316 msgid "Incomplete downloads from a previous session were found." msgstr "" "Des tУЉlУЉchargements incomplets d'une session prУЉcУЉdente ont УЉtУЉ trouvУЉs" #: src/gpodder/gtkui/main.py:414 msgid "Action" msgstr "Action" #: src/gpodder/gtkui/main.py:461 msgid "Confirm changes from gpodder.net" msgstr "Confirmer les changements depuis gpodder.net" #: src/gpodder/gtkui/main.py:462 msgid "Select the actions you want to carry out." msgstr "SУЉlectionner les actions que vous voulez effectuer" #: src/gpodder/gtkui/main.py:502 msgid "Uploading subscriptions" msgstr "Envoyer des abonnements" #: src/gpodder/gtkui/main.py:503 msgid "Your subscriptions are being uploaded to the server." msgstr "Vos abonnements ont УЉtУЉ envoyУЉs sur le serveur" #: src/gpodder/gtkui/main.py:508 msgid "List uploaded successfully." msgstr "Liste envoyУЉe avec succУЈs" #: src/gpodder/gtkui/main.py:515 msgid "Error while uploading" msgstr "Erreur durant l'envoi" #: src/gpodder/gtkui/main.py:800 src/gpodder/gtkui/main.py:928 #: src/gpodder/gtkui/main.py:2622 src/gpodder/gtkui/main.py:2815 #: src/gpodder/gtkui/desktop/episodeselector.py:132 #: src/gpodder/gtkui/desktop/sync.py:270 msgid "Episode" msgstr "У‰pisode" #: src/gpodder/gtkui/main.py:819 msgid "Size" msgstr "Taille" #: src/gpodder/gtkui/main.py:824 msgid "Duration" msgstr "DurУЉe" #: src/gpodder/gtkui/main.py:828 msgid "Released" msgstr "PubliУЉ le" #: src/gpodder/gtkui/main.py:855 msgid "Visible columns" msgstr "Colonnes visibles" #: src/gpodder/gtkui/main.py:948 src/gpodder/gtkui/main.py:1108 #: share/gpodder/ui/gtk/gpodder.ui.h:45 msgid "Progress" msgstr "Avancement" #: src/gpodder/gtkui/main.py:982 msgid "Loading episodes" msgstr "Chargement des УЉpisodes" #: src/gpodder/gtkui/main.py:985 msgid "No episodes in current view" msgstr "Aucun УЉpisode dans la vue courante" #: src/gpodder/gtkui/main.py:987 msgid "No episodes available" msgstr "Aucun УЉpisode disponible" #: src/gpodder/gtkui/main.py:993 msgid "No podcasts in this view" msgstr "Aucun podcast dans cette vue" #: src/gpodder/gtkui/main.py:995 msgid "No subscriptions" msgstr "Aucun abonnement" #: src/gpodder/gtkui/main.py:997 #, fuzzy msgid "No active tasks" msgstr "Aucun tУЉlУЉchargement en cours" #: src/gpodder/gtkui/main.py:1112 src/gpodder/gtkui/main.py:1114 #, python-format msgid "%(count)d active" msgid_plural "%(count)d active" msgstr[0] "%(count)d actif" msgstr[1] "%(count)d actifs" #: src/gpodder/gtkui/main.py:1116 #, python-format msgid "%(count)d failed" msgid_plural "%(count)d failed" msgstr[0] "%(count)d УЉchouУЉ" msgstr[1] "%(count)d УЉchouУЉs" #: src/gpodder/gtkui/main.py:1118 #, python-format msgid "%(count)d queued" msgid_plural "%(count)d queued" msgstr[0] "%(count)d mis en attente" msgstr[1] "%(count)d mis en attente" #: src/gpodder/gtkui/main.py:1132 #, python-format msgid "downloading %(count)d file" msgid_plural "downloading %(count)d files" msgstr[0] "tУЉlУЉcharge %(count)d fichier" msgstr[1] "tУЉlУЉcharge %(count)d fichiers" #: src/gpodder/gtkui/main.py:1142 #, python-format msgid "synchronizing %(count)d file" msgid_plural "synchronizing %(count)d files" msgstr[0] "" msgstr[1] "" #: src/gpodder/gtkui/main.py:1144 #, python-format msgid "%(queued)d task queued" msgid_plural "%(queued)d tasks queued" msgstr[0] "" msgstr[1] "" #: src/gpodder/gtkui/main.py:1168 msgid "Please report this problem and restart gPodder:" msgstr "Veuillez signaler ce problУЈme et redУЉmarrer gPodder:" #: src/gpodder/gtkui/main.py:1168 msgid "Unhandled exception" msgstr "Exception non traitУЉe" #: src/gpodder/gtkui/main.py:1235 #, python-format msgid "Feedparser error: %s" msgstr "Erreur de traitement du flux : %s" #: src/gpodder/gtkui/main.py:1371 #, fuzzy msgid "Could not download some episodes:" msgstr "Impossible d'ajouter certains podcasts" #: src/gpodder/gtkui/main.py:1373 src/gpodder/gtkui/main.py:1376 msgid "Downloads finished" msgstr "TУЉlУЉchargements terminУЉs" #: src/gpodder/gtkui/main.py:1379 msgid "Downloads failed" msgstr "TУЉlУЉchargements УЉchouУЉs" #: src/gpodder/gtkui/main.py:1383 #, fuzzy msgid "Could not sync some episodes:" msgstr "Impossible d'ajouter certains podcasts" #: src/gpodder/gtkui/main.py:1385 src/gpodder/gtkui/main.py:1388 #, fuzzy msgid "Device synchronization finished" msgstr "Activer les bulles de notifications" #: src/gpodder/gtkui/main.py:1391 #, fuzzy msgid "Device synchronization failed" msgstr "Activer les bulles de notifications" #: src/gpodder/gtkui/main.py:1434 #, python-format msgid "%(count)d more episode" msgid_plural "%(count)d more episodes" msgstr[0] "%(count)d УЉpisode de plus" msgstr[1] "%(count)d УЉpisodes de plus" #: src/gpodder/gtkui/main.py:1508 msgid "Start download now" msgstr "DУЉmarrer le tУЉlУЉchargement maintenant" #: src/gpodder/gtkui/main.py:1510 src/gpodder/gtkui/main.py:1719 #: src/gpodder/gtkui/desktop/episodeselector.py:144 #: share/gpodder/ui/gtk/gpodder.ui.h:20 msgid "Download" msgstr "TУЉlУЉcharger" #: src/gpodder/gtkui/main.py:1511 share/gpodder/ui/gtk/gpodder.ui.h:21 msgid "Cancel" msgstr "Annuler" #: src/gpodder/gtkui/main.py:1512 msgid "Pause" msgstr "Mettre en pause" #: src/gpodder/gtkui/main.py:1514 msgid "Remove from list" msgstr "Retirer de la liste" #: src/gpodder/gtkui/main.py:1553 share/gpodder/ui/gtk/gpodder.ui.h:13 msgid "Update podcast" msgstr "Mettre У  jour le podcast" #: src/gpodder/gtkui/main.py:1560 #, fuzzy msgid "Open download folder" msgstr "tУЉlУЉchargУЉ" #: src/gpodder/gtkui/main.py:1566 msgid "Mark episodes as old" msgstr "Marquer les УЉpisodes comme obsolУЈtes" #: src/gpodder/gtkui/main.py:1570 src/gpodder/gtkui/main.py:1778 msgid "Archive" msgstr "Archiver" #: src/gpodder/gtkui/main.py:1575 msgid "Remove podcast" msgstr "Supprimer le podcast" #: src/gpodder/gtkui/main.py:1590 share/gpodder/ui/gtk/gpodder.ui.h:10 msgid "Podcast settings" msgstr "ParamУЈtres du Podcast" #: src/gpodder/gtkui/main.py:1650 msgid "Error converting file." msgstr "Erreur pendant la conversion du fichier." #: src/gpodder/gtkui/main.py:1650 msgid "Bluetooth file transfer" msgstr "Transfert de fichier via Bluetooth" #: src/gpodder/gtkui/main.py:1709 msgid "Preview" msgstr "PrУЉvisualiser" #: src/gpodder/gtkui/main.py:1711 msgid "Stream" msgstr "Flux" #: src/gpodder/gtkui/main.py:1755 msgid "Send to" msgstr "Envoyer У " #: src/gpodder/gtkui/main.py:1757 msgid "Local folder" msgstr "Dossier local" #: src/gpodder/gtkui/main.py:1762 msgid "Bluetooth device" msgstr "PУЉriphУЉrique Bluetooth" #: src/gpodder/gtkui/main.py:1769 msgid "New" msgstr "Nouveaux" #: src/gpodder/gtkui/main.py:1785 share/gpodder/ui/gtk/gpodder.ui.h:25 msgid "Episode details" msgstr "DУЉtails de l'УЉpisode" #: src/gpodder/gtkui/main.py:1938 msgid "Please check your media player settings in the preferences dialog." msgstr "" "Veuillez vУЉrifier les prУЉfУЉrences de votre lecteur multimУЉdia dans la boУЎte " "de dialogue des prУЉfУЉrences" #: src/gpodder/gtkui/main.py:1939 msgid "Error opening player" msgstr "Erreur lors de l'ouverture du lecteur" #: src/gpodder/gtkui/main.py:2178 msgid "Adding podcasts" msgstr "Ajout de podcasts" #: src/gpodder/gtkui/main.py:2179 msgid "Please wait while episode information is downloaded." msgstr "" "Veuillez patienter pendant le tУЉlУЉchargement des informations de l'УЉpisode" #: src/gpodder/gtkui/main.py:2186 msgid "Existing subscriptions skipped" msgstr "Abonnements existants ignorУЉs" #: src/gpodder/gtkui/main.py:2187 msgid "You are already subscribed to these podcasts:" msgstr "Vous УЊtes dУЉjУ  abonnУЉs У  ces podcasts:" #: src/gpodder/gtkui/main.py:2195 msgid "Podcast requires authentication" msgstr "Ce podcast nУЉcessite une authentification" #: src/gpodder/gtkui/main.py:2196 #, python-format msgid "Please login to %s:" msgstr "Veuillez vous connecter sur %s:" #: src/gpodder/gtkui/main.py:2204 src/gpodder/gtkui/main.py:2299 msgid "Authentication failed" msgstr "У‰chec de l'authentification" #: src/gpodder/gtkui/main.py:2210 msgid "Website redirection detected" msgstr "Redirection de site Web dУЉtectУЉe" #: src/gpodder/gtkui/main.py:2211 #, python-format msgid "The URL %(url)s redirects to %(target)s." msgstr "L'URL %(url)s redirige vers %(target)s." #: src/gpodder/gtkui/main.py:2212 msgid "Do you want to visit the website now?" msgstr "Voulez-vous visitez le site web maintenant?" #: src/gpodder/gtkui/main.py:2221 msgid "Could not add some podcasts" msgstr "Impossible d'ajouter certains podcasts" #: src/gpodder/gtkui/main.py:2222 msgid "Some podcasts could not be added to your list:" msgstr "Certains podcast n'ont pas pu УЊtre ajoutУЉs У  votre liste:" #: src/gpodder/gtkui/main.py:2224 msgid "Unknown" msgstr "Inconnu" #: src/gpodder/gtkui/main.py:2308 msgid "Redirection detected" msgstr "Redirection dУЉtectУЉe" #: src/gpodder/gtkui/main.py:2342 msgid "Merging episode actions" msgstr "Fusion des actions de l'УЉpisode" #: src/gpodder/gtkui/main.py:2343 msgid "Episode actions from gpodder.net are merged." msgstr "Les actions de l'УЉpisode ont УЉtУЉ fusionnУЉes depuis gpodder.net" #: src/gpodder/gtkui/main.py:2368 msgid "Cancelling..." msgstr "Annulation..." #: src/gpodder/gtkui/main.py:2377 msgid "Please connect to a network, then try again." msgstr "" #: src/gpodder/gtkui/main.py:2378 #, fuzzy msgid "No network connection" msgstr "Nom de la nouvelle section:" #: src/gpodder/gtkui/main.py:2399 #, python-format msgid "Updating %(count)d feed..." msgid_plural "Updating %(count)d feeds..." msgstr[0] "Mise У  jour de %(count)d flux..." msgstr[1] "Mise У  jour de %(count)d flux..." #: src/gpodder/gtkui/main.py:2417 #, python-format msgid "Error while updating %(url)s: %(message)s" msgstr "Erreur pendant la mise У  jour %(url)s: %(message)s" #: src/gpodder/gtkui/main.py:2419 #, python-format msgid "The feed at %(url)s could not be updated." msgstr "Le flux de %(url)s n'a pas pu УЊtre mis У  jour" #: src/gpodder/gtkui/main.py:2420 msgid "Error while updating feed" msgstr "Erreur durant la mise У  jour du flux" #: src/gpodder/gtkui/main.py:2435 #, python-format msgid "Updated %(podcast)s (%(position)d/%(total)d)" msgstr "%(podcast)s mis У  jour (%(position)d/%(total)d)" #: src/gpodder/gtkui/main.py:2466 msgid "No new episodes" msgstr "Aucun nouvel УЉpisode" #: src/gpodder/gtkui/main.py:2479 #, python-format msgid "Downloading %(count)d new episode." msgid_plural "Downloading %(count)d new episodes." msgstr[0] "TУЉlУЉcharge %(count)d nouvel УЉpisode" msgstr[1] "TУЉlУЉcharge %(count)d nouvels УЉpisodes" #: src/gpodder/gtkui/main.py:2480 src/gpodder/gtkui/main.py:2484 #: src/gpodder/gtkui/main.py:2833 msgid "New episodes available" msgstr "De nouveaux УЉpisodes sont disponibles" #: src/gpodder/gtkui/main.py:2483 #, python-format msgid "%(count)d new episode added to download list." msgid_plural "%(count)d new episodes added to download list." msgstr[0] "%(count)d nouvel УЉpisode ajoutУЉ У  la liste de tУЉlУЉchargement" msgstr[1] "%(count)d nouvels УЉpisodes ajoutУЉs У  la liste de tУЉlУЉchargement" #: src/gpodder/gtkui/main.py:2490 #, python-format msgid "%(count)d new episode available" msgid_plural "%(count)d new episodes available" msgstr[0] "%(count)d nouvel УЉpisode disponible" msgstr[1] "%(count)d nouveaux УЉpisodes disponibles" #: src/gpodder/gtkui/main.py:2509 msgid "Quit gPodder" msgstr "Quitter gPodder" #: src/gpodder/gtkui/main.py:2510 msgid "" "You are downloading episodes. You can resume downloads the next time you " "start gPodder. Do you want to quit now?" msgstr "" "Vous УЊtes en train de tУЉlУЉcharger des УЉpisodes. Vous pourrez reprendre les " "tУЉlУЉchargements la prochaine fois que vous dУЉmarrerez gPodder. Voulez-vous " "quitter maintenant?" #: src/gpodder/gtkui/main.py:2559 msgid "Episodes are locked" msgstr "Des УЉpisodes sont verrouillУЉs" #: src/gpodder/gtkui/main.py:2560 msgid "" "The selected episodes are locked. Please unlock the episodes that you want " "to delete before trying to delete them." msgstr "" "Les УЉpisodes sУЉlectionnУЉs sont verrouillУЉs. Veuillez dУЉvУЉrrouillez les " "УЉpisodes que vous voulez supprimer avant de les supprimer" #: src/gpodder/gtkui/main.py:2565 #, python-format msgid "Delete %(count)d episode?" msgid_plural "Delete %(count)d episodes?" msgstr[0] "Supprimer %(count)d episode ?" msgstr[1] "Supprimer %(count)d episodes ?" #: src/gpodder/gtkui/main.py:2566 msgid "Deleting episodes removes downloaded files." msgstr "La suppression des УЉpisodes supprime les fichiers tУЉlУЉchargУЉs." #: src/gpodder/gtkui/main.py:2571 msgid "Deleting episodes" msgstr "Suppression des УЉpisodes" #: src/gpodder/gtkui/main.py:2572 msgid "Please wait while episodes are deleted" msgstr "Veuillez patienter pendant la suppresion des УЉpisodes" #: src/gpodder/gtkui/main.py:2625 #, python-format msgid "Select older than %(count)d day" msgid_plural "Select older than %(count)d days" msgstr[0] "SУЉlectionner les УЉpisodes datУЉs de plus de %(count)d jour" msgstr[1] "SУЉlectionner les УЉpisodes datУЉs de plus de %(count)d jours" #: src/gpodder/gtkui/main.py:2627 msgid "Select played" msgstr "SУЉlectionner les УЉpisodes lus" #: src/gpodder/gtkui/main.py:2628 msgid "Select finished" msgstr "SУЉlectionner les УЉpisodes terminУЉs" #: src/gpodder/gtkui/main.py:2632 msgid "Select the episodes you want to delete:" msgstr "SУЉlectionner les УЉpisodes que vous voulez supprimer:" #: src/gpodder/gtkui/main.py:2648 share/gpodder/ui/gtk/gpodder.ui.h:4 msgid "Delete episodes" msgstr "Supprimer des УЉpisodes" #: src/gpodder/gtkui/main.py:2703 src/gpodder/gtkui/main.py:2934 #: src/gpodder/gtkui/main.py:3034 msgid "No podcast selected" msgstr "Aucun podcast sУЉlectionnУЉ" #: src/gpodder/gtkui/main.py:2704 msgid "Please select a podcast in the podcasts list to update." msgstr "" "Veuillez sУЉlectionner dans la liste des podcasts un podcast У  mettre У  jour" #: src/gpodder/gtkui/main.py:2774 #, python-format msgid "Download error while downloading %(episode)s: %(message)s" msgstr "" "Erreur de tУЉlУЉchargement pendant le tУЉlУЉchargement de %(episode)s: " "%(message)s" #: src/gpodder/gtkui/main.py:2775 msgid "Download error" msgstr "Erreur de tУЉlУЉchargement" #: src/gpodder/gtkui/main.py:2818 msgid "Select the episodes you want to download:" msgstr "SУЉlectionner les УЉpisodes que vous voulez tУЉlУЉcharger:" #: src/gpodder/gtkui/main.py:2841 msgid "Mark as old" msgstr "DУЉfinir comme obsolУЈte" #: src/gpodder/gtkui/main.py:2848 msgid "Please check for new episodes later." msgstr "Veuillez vУЉrifier plus tard la prУЉsence de nouveaux УЉpisodes" #: src/gpodder/gtkui/main.py:2849 msgid "No new episodes available" msgstr "Aucun nouvel УЉpisode disponible" #: src/gpodder/gtkui/main.py:2900 msgid "Login to gpodder.net" msgstr "Se connecter sur gpodder.net" #: src/gpodder/gtkui/main.py:2901 msgid "Please login to download your subscriptions." msgstr "Veuillez vous connecter pour tУЉlУЉcharger vos abonnements" #: src/gpodder/gtkui/main.py:2916 msgid "Subscriptions on gpodder.net" msgstr "Abonnements sur gpodder.net" #: src/gpodder/gtkui/main.py:2935 msgid "Please select a podcast in the podcasts list to edit." msgstr "Veuillez sУЉlectionner dans la liste des podcasts un podcast У  УЉditer." #: src/gpodder/gtkui/main.py:2949 msgid "Podcast" msgstr "Podcast" #: src/gpodder/gtkui/main.py:2955 share/gpodder/ui/gtk/gpodder.ui.h:12 msgid "Remove podcasts" msgstr "Supprimer des podcasts" #: src/gpodder/gtkui/main.py:2956 msgid "Select the podcast you want to remove." msgstr "SУЉlectionner le podcast que vous voulez supprimer." #: src/gpodder/gtkui/main.py:2960 #: src/gpodder/gtkui/desktop/episodeselector.py:105 msgid "Remove" msgstr "Supprimer" #: src/gpodder/gtkui/main.py:2969 msgid "Removing podcast" msgstr "Suppresion du podcast" #: src/gpodder/gtkui/main.py:2970 msgid "Please wait while the podcast is removed" msgstr "Veuillez patienter pendant que le podcast est supprimУЉ" #: src/gpodder/gtkui/main.py:2971 msgid "Do you really want to remove this podcast and its episodes?" msgstr "" "УŠtes-vous vraiment sУЛr de vouloir supprimer ce podcast et tous ses УЉpisodes?" #: src/gpodder/gtkui/main.py:2973 msgid "Removing podcasts" msgstr "Suppression des podcasts" #: src/gpodder/gtkui/main.py:2974 msgid "Please wait while the podcasts are removed" msgstr "Veuillez patienter pendant que les podcasts sont supprimУЉs" #: src/gpodder/gtkui/main.py:2975 msgid "Do you really want to remove the selected podcasts and their episodes?" msgstr "" "УŠtes-vous vraiment sУЛr de vouloir supprimer le podcast sУЉlectionnУЉ ainsi que " "tous ses УЉpisodes?" #: src/gpodder/gtkui/main.py:3035 msgid "Please select a podcast in the podcasts list to remove." msgstr "" "Veuillez sУЉlectionner dans la liste des podcasts un podcast У  supprimer." #: src/gpodder/gtkui/main.py:3045 msgid "OPML files" msgstr "Fichier OPML" #: src/gpodder/gtkui/main.py:3050 msgid "Import from OPML" msgstr "Import depuis OPML" #: src/gpodder/gtkui/main.py:3064 msgid "Import podcasts from OPML file" msgstr "Importer des podcasts depuis un fichier OPML" #: src/gpodder/gtkui/main.py:3071 msgid "Nothing to export" msgstr "Rien У  exporter" #: src/gpodder/gtkui/main.py:3072 msgid "" "Your list of podcast subscriptions is empty. Please subscribe to some " "podcasts first before trying to export your subscription list." msgstr "" "Votre liste d'abonnements У  des podcasts est vide. Veuillez vous abonner У  " "des podcasts avant d'exporter votre liste d'abonnements." #: src/gpodder/gtkui/main.py:3076 msgid "Export to OPML" msgstr "Export vers OPML" #: src/gpodder/gtkui/main.py:3087 #, python-format msgid "%(count)d subscription exported" msgid_plural "%(count)d subscriptions exported" msgstr[0] "%(count)d abonnement exportУЉ" msgstr[1] "%(count)d abonnements exportУЉs" #: src/gpodder/gtkui/main.py:3088 msgid "Your podcast list has been successfully exported." msgstr "Votre liste de podcast a УЉtУЉ exportУЉe avec succУЈs" #: src/gpodder/gtkui/main.py:3090 msgid "Could not export OPML to file. Please check your permissions." msgstr "" "Impossible d'exporter OPML vers un fichier. Veuillez vУЉrifier les " "permissions." #: src/gpodder/gtkui/main.py:3090 msgid "OPML export failed" msgstr "L'export OPML a УЉchouУЉ" #: src/gpodder/gtkui/main.py:3117 #, fuzzy msgid "No updates available" msgstr "Aucun УЉpisode disponible" #: src/gpodder/gtkui/main.py:3118 msgid "You have the latest version of gPodder." msgstr "" #: src/gpodder/gtkui/main.py:3122 #, fuzzy msgid "New version available" msgstr "De nouveaux УЉpisodes sont disponibles" #: src/gpodder/gtkui/main.py:3124 #, python-format msgid "Installed version: %s" msgstr "" #: src/gpodder/gtkui/main.py:3125 #, python-format msgid "Newest version: %s" msgstr "" #: src/gpodder/gtkui/main.py:3126 #, fuzzy, python-format msgid "Release date: %s" msgstr "publiУЉ le" #: src/gpodder/gtkui/main.py:3128 #, fuzzy msgid "Download the latest version from gpodder.org?" msgstr "TУЉlУЉcharger mes abonnements depuis gpodder.net" #: src/gpodder/gtkui/main.py:3141 msgid "About gPodder" msgstr "A propos de gPodder" #: src/gpodder/gtkui/main.py:3424 #, fuzzy msgid "Please register a YouTube API key and set it in the preferences." msgstr "" "Veuillez vУЉrifier les prУЉfУЉrences de votre lecteur multimУЉdia dans la boУЎte " "de dialogue des prУЉfУЉrences" #: src/gpodder/gtkui/main.py:3425 msgid "Would you like to set up an API key now?" msgstr "" #: src/gpodder/gtkui/main.py:3425 msgid "API key required" msgstr "" #: src/gpodder/gtkui/main.py:3444 bin/gpo:631 #, fuzzy msgid "No unique URL found" msgstr "Aucune chaУЎne trouvУЉe" #: src/gpodder/gtkui/main.py:3449 bin/gpo:637 #, fuzzy msgid "Already subscribed" msgstr "Aucun abonnement" #: src/gpodder/gtkui/main.py:3458 bin/gpo:649 #, python-format msgid "Make sure the API key is correct. Error: %(message)s" msgstr "" #: src/gpodder/gtkui/main.py:3459 #, fuzzy msgid "Error getting YouTube channels" msgstr "Erreur pendant la dУЉfinition d'une option" #: src/gpodder/gtkui/main.py:3462 #, fuzzy msgid "Successfully migrated subscriptions" msgstr "%s ajoutУЉ avec succУЈs." #: src/gpodder/gtkui/main.py:3464 #, fuzzy msgid "Subscriptions are up to date" msgstr "Abonnement en pause" #: src/gpodder/gtkui/main.py:3467 msgid "These URLs failed:" msgstr "" #: src/gpodder/gtkui/main.py:3469 #, fuzzy msgid "Could not migrate some subscriptions" msgstr "Impossible d'ajouter certains podcasts" #: src/gpodder/gtkui/main.py:3493 msgid "Cannot start gPodder" msgstr "Impossible de dУЉmarrer gPodder" #: src/gpodder/gtkui/main.py:3494 #, python-format msgid "D-Bus error: %s" msgstr "Erreur D-Bus: %s" #: src/gpodder/gtkui/model.py:68 #, python-format msgid "released %s" msgstr "publiУЉ le %s" #: src/gpodder/gtkui/model.py:69 src/gpodder/gtkui/model.py:87 #: src/gpodder/gtkui/model.py:237 src/gpodder/gtkui/shownotes.py:84 #, python-format msgid "from %s" msgstr "de %s" #: src/gpodder/gtkui/model.py:80 src/gpodder/gtkui/model.py:393 msgid "played" msgstr "lu" #: src/gpodder/gtkui/model.py:82 msgid "unplayed" msgstr "non lu" #: src/gpodder/gtkui/model.py:85 msgid "today" msgstr "aujourd'hui" #: src/gpodder/gtkui/model.py:86 #, python-format msgid "downloaded %s" msgstr "%s tУЉlУЉchargУЉ" #: src/gpodder/gtkui/model.py:337 msgid "Deleted" msgstr "SupprimУЉ" #: src/gpodder/gtkui/model.py:342 msgid "New episode" msgstr "Nouvel УЉpisode" #: src/gpodder/gtkui/model.py:356 msgid "Downloaded episode" msgstr "У‰pisode tУЉlУЉchargУЉ" #: src/gpodder/gtkui/model.py:359 msgid "Downloaded video episode" msgstr "У‰pisode vidУЉo tУЉlУЉchargУЉ" #: src/gpodder/gtkui/model.py:362 msgid "Downloaded image" msgstr "Image tУЉlУЉchargУЉe" #: src/gpodder/gtkui/model.py:365 msgid "Downloaded file" msgstr "Fichier tУЉlУЉchargУЉ" #: src/gpodder/gtkui/model.py:380 msgid "missing file" msgstr "fichier manquant" #: src/gpodder/gtkui/model.py:384 msgid "never displayed" msgstr "jamais affichУЉ" #: src/gpodder/gtkui/model.py:386 msgid "never played" msgstr "jamais lu" #: src/gpodder/gtkui/model.py:388 msgid "never opened" msgstr "jamais ouvert" #: src/gpodder/gtkui/model.py:391 msgid "displayed" msgstr "affichУЉ" #: src/gpodder/gtkui/model.py:395 msgid "opened" msgstr "ouvert" #: src/gpodder/gtkui/model.py:397 msgid "deletion prevented" msgstr "suppression УЉvitУЉe" #: src/gpodder/gtkui/model.py:432 share/gpodder/ui/gtk/gpodder.ui.h:32 msgid "All episodes" msgstr "Tous les УЉpisodes" #: src/gpodder/gtkui/model.py:433 msgid "from all podcasts" msgstr "depuis tous les podcasts" #: src/gpodder/gtkui/model.py:625 msgid "Subscription paused" msgstr "Abonnement en pause" #: src/gpodder/gtkui/shownotes.py:118 #, fuzzy msgid "Please select an episode" msgstr "SУЉlectionner des УЉpisodes" #: src/gpodder/gtkui/interface/addpodcast.py:74 msgid "Nothing to paste." msgstr "Rien У  coller." #: src/gpodder/gtkui/interface/addpodcast.py:74 msgid "Clipboard is empty" msgstr "Presse-papiers vide" #: src/gpodder/gtkui/interface/common.py:160 msgid "Username" msgstr "Nom d'utilisateur" #: src/gpodder/gtkui/interface/common.py:163 msgid "New user" msgstr "Nouvel utilisateur" #: src/gpodder/gtkui/interface/common.py:170 msgid "Login" msgstr "Connexion" #: src/gpodder/gtkui/interface/common.py:172 msgid "Authentication required" msgstr "Authentification requise" #: src/gpodder/gtkui/interface/common.py:203 msgid "Password" msgstr "Mot de passe" #: src/gpodder/gtkui/interface/common.py:225 msgid "Select destination" msgstr "SУЉlectionner la destination" #: src/gpodder/gtkui/interface/configeditor.py:34 msgid "Setting" msgstr "ParamУЈtre" #: src/gpodder/gtkui/interface/configeditor.py:41 msgid "Set to" msgstr "DУЉfini У " #: src/gpodder/gtkui/interface/configeditor.py:81 #, python-format msgid "Cannot set %(field)s to %(value)s. Needed data type: %(datatype)s" msgstr "" "Impossible de dУЉfinir %(field)s У  %(value)s. NУЉcessite ce type de donnУЉe: " "%(datatype)s" #: src/gpodder/gtkui/interface/configeditor.py:85 msgid "Error setting option" msgstr "Erreur pendant la dУЉfinition d'une option" #: src/gpodder/gtkui/desktop/channel.py:100 #, fuzzy msgid "Add section" msgstr "Action" #: src/gpodder/gtkui/desktop/channel.py:100 #, fuzzy msgid "New section:" msgstr "Nom de la nouvelle section:" #: src/gpodder/gtkui/desktop/channel.py:133 msgid "Select new podcast cover artwork" msgstr "SУЉlectionner une nouvelle image de couverture pour le podcast" #: src/gpodder/gtkui/desktop/channel.py:161 msgid "You can only drop a single image or URL here." msgstr "Vous pouvez seulement glisser-dУЉposer une seule image ou une URL ici." #: src/gpodder/gtkui/desktop/channel.py:161 #: src/gpodder/gtkui/desktop/channel.py:171 msgid "Drag and drop" msgstr "Glisser-dУЉposer" #: src/gpodder/gtkui/desktop/channel.py:171 msgid "You can only drop local files and http:// URLs here." msgstr "" "Vous pouvez seulement dУЉposer des fichiers locaux ou des URL http:// ici." #: src/gpodder/gtkui/desktop/deviceplaylist.py:98 #, fuzzy, python-format msgid "Folder %s could not be created." msgstr "Le flux de %(url)s n'a pas pu УЊtre mis У  jour" #: src/gpodder/gtkui/desktop/deviceplaylist.py:98 #, fuzzy msgid "Error writing playlist" msgstr "Erreur lors de l'ouverture du lecteur" #: src/gpodder/gtkui/desktop/episodeselector.py:288 #: share/gpodder/ui/gtk/gpodderepisodeselector.ui.h:2 msgid "Select all" msgstr "SУЉlectionner tout" #: src/gpodder/gtkui/desktop/episodeselector.py:292 #: share/gpodder/ui/gtk/gpodderepisodeselector.ui.h:3 msgid "Select none" msgstr "SУЉlectionner aucun" #: src/gpodder/gtkui/desktop/episodeselector.py:324 msgid "Nothing selected" msgstr "Rien n'est sУЉlectionnУЉ" #: src/gpodder/gtkui/desktop/episodeselector.py:325 #, python-format msgid "%(count)d episode" msgid_plural "%(count)d episodes" msgstr[0] "%(count)d УЉpisode" msgstr[1] "%(count)d УЉpisodes" #: src/gpodder/gtkui/desktop/episodeselector.py:327 #, python-format msgid "size: %s" msgstr "taille: %s" #: src/gpodder/gtkui/desktop/podcastdirectory.py:238 #, fuzzy msgid "Loading podcasts" msgstr "Ajout de podcasts" #: src/gpodder/gtkui/desktop/podcastdirectory.py:239 #, fuzzy msgid "Please wait while the podcast list is downloaded" msgstr "Veuillez patienter pendant que le podcast est supprimУЉ" #: src/gpodder/gtkui/desktop/preferences.py:51 #: src/gpodder/gtkui/desktop/preferences.py:93 msgid "Do nothing" msgstr "Ne rien faire" #: src/gpodder/gtkui/desktop/preferences.py:52 msgid "Show episode list" msgstr "Afficher la liste des УЉpisodes" #: src/gpodder/gtkui/desktop/preferences.py:53 msgid "Add to download list" msgstr "Ajouter У  la liste de tУЉlУЉchargement" #: src/gpodder/gtkui/desktop/preferences.py:54 msgid "Download immediately" msgstr "TУЉlУЉcharge immУЉdiatemment" #: src/gpodder/gtkui/desktop/preferences.py:72 msgid "None" msgstr "" #: src/gpodder/gtkui/desktop/preferences.py:73 msgid "iPod" msgstr "" #: src/gpodder/gtkui/desktop/preferences.py:74 msgid "Filesystem-based" msgstr "" #: src/gpodder/gtkui/desktop/preferences.py:94 #, fuzzy msgid "Mark as played" msgstr "DУЉfinir comme obsolУЈte" #: src/gpodder/gtkui/desktop/preferences.py:95 msgid "Delete from gPodder" msgstr "" #: src/gpodder/gtkui/desktop/preferences.py:123 #, python-format msgid "Custom (%(format_ids)s)" msgstr "" #: src/gpodder/gtkui/desktop/preferences.py:318 msgid "Name" msgstr "Nom" #: src/gpodder/gtkui/desktop/preferences.py:369 #, fuzzy msgid "Documentation" msgstr "DurУЉe" #: src/gpodder/gtkui/desktop/preferences.py:374 #, fuzzy msgid "Extension info" msgstr "Extensions" #: src/gpodder/gtkui/desktop/preferences.py:379 msgid "Support the author" msgstr "" #: src/gpodder/gtkui/desktop/preferences.py:413 msgid "Extension cannot be activated" msgstr "" #: src/gpodder/gtkui/desktop/preferences.py:426 msgid "Extension module info" msgstr "" #: src/gpodder/gtkui/desktop/preferences.py:463 msgid "Configure audio player" msgstr "Configurer le lecteur audio" #: src/gpodder/gtkui/desktop/preferences.py:464 #: src/gpodder/gtkui/desktop/preferences.py:474 msgid "Command:" msgstr "Commande:" #: src/gpodder/gtkui/desktop/preferences.py:473 msgid "Configure video player" msgstr "Configurer le lecteur vidУЉo" #: src/gpodder/gtkui/desktop/preferences.py:485 #: src/gpodder/gtkui/desktop/preferences.py:503 msgid "manually" msgstr "manuellement" #: src/gpodder/gtkui/desktop/preferences.py:505 #, python-format msgid "after %(count)d day" msgid_plural "after %(count)d days" msgstr[0] "aprУЈs %(count)d jour" msgstr[1] "aprУЈs %(count)d jours" #: src/gpodder/gtkui/desktop/preferences.py:541 msgid "Replace subscription list on server" msgstr "Remplacer la liste des abonnements sur le serveur" #: src/gpodder/gtkui/desktop/preferences.py:542 msgid "" "Remote podcasts that have not been added locally will be removed on the " "server. Continue?" msgstr "" "Les podcasts distant qui n'ont pas УЉtУЉ ajoutУЉs localement seront retirУЉs du " "serveur. Continuer ?" #: src/gpodder/gtkui/desktop/preferences.py:621 msgid "Select folder for mount point" msgstr "" #: src/gpodder/gtkui/desktop/preferences.py:638 msgid "Select folder for playlists" msgstr "" #: src/gpodder/gtkui/desktop/sync.py:86 msgid "No device configured" msgstr "" #: src/gpodder/gtkui/desktop/sync.py:87 #, fuzzy msgid "Please set up your device in the preferences dialog." msgstr "" "Veuillez vУЉrifier les prУЉfУЉrences de votre lecteur multimУЉdia dans la boУЎte " "de dialogue des prУЉfУЉrences" #: src/gpodder/gtkui/desktop/sync.py:91 msgid "Cannot open device" msgstr "" #: src/gpodder/gtkui/desktop/sync.py:92 #, fuzzy msgid "Please check the settings in the preferences dialog." msgstr "" "Veuillez vУЉrifier les prУЉfУЉrences de votre lecteur multimУЉdia dans la boУЎte " "de dialogue des prУЉfУЉrences" #: src/gpodder/gtkui/desktop/sync.py:139 msgid "Not enough space left on device" msgstr "" #: src/gpodder/gtkui/desktop/sync.py:140 #, python-format msgid "" "Additional free space required: %(required_space)s\n" "Do you want to continue?" msgstr "" #: src/gpodder/gtkui/desktop/sync.py:199 #, fuzzy msgid "Update successful" msgstr "Liste envoyУЉe avec succУЈs" #: src/gpodder/gtkui/desktop/sync.py:200 msgid "The playlist on your MP3 player has been updated." msgstr "" #: src/gpodder/gtkui/desktop/sync.py:274 msgid "Episodes have been deleted on device" msgstr "" #: src/gpodder/gtkui/desktop/sync.py:285 #, fuzzy msgid "Error writing playlist files" msgstr "Erreur pendant la conversion du fichier." #: src/gpodder/plugins/soundcloud.py:154 msgid "Unknown track" msgstr "Piste inconnue" #: src/gpodder/plugins/soundcloud.py:181 #, python-format msgid "%s on Soundcloud" msgstr "%s sur Soundcloud" #: src/gpodder/plugins/soundcloud.py:190 #, python-format msgid "Tracks published by %s on Soundcloud." msgstr "Pistes publiУЉes par %s sur Soundcloud." #: src/gpodder/plugins/soundcloud.py:217 #, python-format msgid "%s's favorites on Soundcloud" msgstr "Favoris de %s sur Soundcloud" #: src/gpodder/plugins/soundcloud.py:223 #, python-format msgid "Tracks favorited by %s on Soundcloud." msgstr "Pistes mises en favoris par %s sur Soundcloud." #: share/gpodder/extensions/audio_converter.py:20 #, fuzzy msgid "Convert audio files" msgstr "Erreur pendant la conversion du fichier." #: share/gpodder/extensions/audio_converter.py:21 msgid "Transcode audio files to mp3/ogg" msgstr "" #: share/gpodder/extensions/audio_converter.py:84 #: share/gpodder/extensions/video_converter.py:86 #, python-format msgid "Convert to %(format)s" msgstr "" #: share/gpodder/extensions/audio_converter.py:111 #: share/gpodder/extensions/rockbox_convert2mp4.py:65 #: share/gpodder/extensions/video_converter.py:111 msgid "File converted" msgstr "" #: share/gpodder/extensions/audio_converter.py:114 #: share/gpodder/extensions/video_converter.py:114 #, fuzzy msgid "Conversion failed" msgstr "Erreur pendant la conversion du fichier." #: share/gpodder/extensions/concatenate_videos.py:20 #: share/gpodder/extensions/concatenate_videos.py:100 #, fuzzy msgid "Concatenate videos" msgstr "Erreur pendant la conversion du fichier." #: share/gpodder/extensions/concatenate_videos.py:21 msgid "Add a context menu item for concatenating multiple videos" msgstr "" #: share/gpodder/extensions/concatenate_videos.py:37 msgid "Save video" msgstr "" #: share/gpodder/extensions/concatenate_videos.py:66 #, fuzzy msgid "Concatenating video files" msgstr "Erreur pendant la conversion du fichier." #: share/gpodder/extensions/concatenate_videos.py:67 #, python-format msgid "Writing %(filename)s" msgstr "" #: share/gpodder/extensions/concatenate_videos.py:78 msgid "Videos successfully converted" msgstr "" #: share/gpodder/extensions/concatenate_videos.py:79 #, fuzzy msgid "Error converting videos" msgstr "Erreur pendant la conversion du fichier." #: share/gpodder/extensions/concatenate_videos.py:80 msgid "Concatenation result" msgstr "" #: share/gpodder/extensions/enqueue_in_mediaplayer.py:16 msgid "Enqueue in media players" msgstr "" #: share/gpodder/extensions/enqueue_in_mediaplayer.py:17 msgid "" "Add a context menu item for enqueueing episodes in installed media players" msgstr "" #: share/gpodder/extensions/enqueue_in_mediaplayer.py:35 msgid "Enqueue in" msgstr "" #: share/gpodder/extensions/episode_website_context_menu.py:14 msgid "\"Open website\" episode context menu" msgstr "" #: share/gpodder/extensions/episode_website_context_menu.py:15 msgid "Add a context menu item for opening the website of an episode" msgstr "" #: share/gpodder/extensions/episode_website_context_menu.py:30 #, fuzzy msgid "Open website" msgstr "Site web:" #: share/gpodder/extensions/gtk_statusicon.py:14 msgid "Gtk Status Icon" msgstr "" #: share/gpodder/extensions/gtk_statusicon.py:15 msgid "Show a status icon for Gtk-based Desktops." msgstr "" #: share/gpodder/extensions/minimize_on_start.py:10 msgid "Minimize on start" msgstr "" #: share/gpodder/extensions/minimize_on_start.py:11 msgid "Minimizes the gPodder window on startup." msgstr "" #: share/gpodder/extensions/mpris-listener.py:33 msgid "MPRIS Listener" msgstr "" #: share/gpodder/extensions/mpris-listener.py:34 msgid "Convert MPRIS notifications to gPodder Media Player D-Bus API" msgstr "" #: share/gpodder/extensions/normalize_audio.py:21 msgid "Normalize audio with re-encoding" msgstr "" #: share/gpodder/extensions/normalize_audio.py:22 msgid "Normalize the volume of audio files with normalize-audio" msgstr "" #: share/gpodder/extensions/normalize_audio.py:99 msgid "File normalized" msgstr "" #: share/gpodder/extensions/rename_download.py:16 #, fuzzy msgid "Rename episodes after download" msgstr "Lorsque de nouveaux УЉpisodes sont trouvУЉs:" #: share/gpodder/extensions/rename_download.py:17 msgid "Rename episodes to \".\" on download" msgstr "" #: share/gpodder/extensions/rm_ogg_cover.py:37 #, fuzzy msgid "Remove cover art from OGG files" msgstr "Importer depuis un fichier OPML" #: share/gpodder/extensions/rm_ogg_cover.py:38 msgid "removes coverart from all downloaded ogg files" msgstr "" #: share/gpodder/extensions/rm_ogg_cover.py:66 #, fuzzy msgid "Remove cover art" msgstr "Podcast anonyme" #: share/gpodder/extensions/rockbox_convert2mp4.py:26 msgid "Convert video files to MP4 for Rockbox" msgstr "" #: share/gpodder/extensions/rockbox_convert2mp4.py:27 msgid "Converts all videos to a Rockbox-compatible format" msgstr "" #: share/gpodder/extensions/sonos.py:19 share/gpodder/extensions/sonos.py:78 msgid "Stream to Sonos" msgstr "" #: share/gpodder/extensions/sonos.py:20 msgid "Stream podcasts to Sonos speakers" msgstr "" #: share/gpodder/extensions/tagging.py:45 msgid "Tag downloaded files using Mutagen" msgstr "" #: share/gpodder/extensions/tagging.py:46 #, fuzzy msgid "Add episode and podcast titles to MP3/OGG tags" msgstr "\"Tous les УЉpisodes\" dans la liste des podcasts" #: share/gpodder/extensions/taskbar_progress.py:28 msgid "Show download progress on the taskbar" msgstr "" #: share/gpodder/extensions/taskbar_progress.py:29 msgid "Displays the progress on the Windows taskbar." msgstr "" #: share/gpodder/extensions/ted_subtitles.py:16 msgid "Subtitle Downloader for TED Talks" msgstr "" #: share/gpodder/extensions/ted_subtitles.py:17 msgid "Downloads .srt subtitles for TED Talks Videos" msgstr "" #: share/gpodder/extensions/ubuntu_appindicator.py:10 msgid "Ubuntu App Indicator" msgstr "Indicateur Ubuntu App" #: share/gpodder/extensions/ubuntu_appindicator.py:11 msgid "Show a status indicator in the top bar." msgstr "" #: share/gpodder/extensions/ubuntu_appindicator.py:47 msgid "Show main window" msgstr "Afficher la fenУЊtre principale" #: share/gpodder/extensions/ubuntu_appindicator.py:57 #: share/gpodder/ui/gtk/gpodder.ui.h:6 msgid "Quit" msgstr "Quitter" #: share/gpodder/extensions/ubuntu_unity.py:10 msgid "Ubuntu Unity Integration" msgstr "" #: share/gpodder/extensions/ubuntu_unity.py:11 msgid "Show download progress in the Unity Launcher icon." msgstr "" #: share/gpodder/extensions/update_feeds_on_startup.py:14 #, fuzzy msgid "Search for new episodes on startup" msgstr "Veuillez vУЉrifier plus tard la prУЉsence de nouveaux УЉpisodes" #: share/gpodder/extensions/update_feeds_on_startup.py:15 #, fuzzy msgid "Starts the search for new episodes on startup" msgstr "Veuillez vУЉrifier plus tard la prУЉsence de nouveaux УЉpisodes" #: share/gpodder/extensions/video_converter.py:22 #, fuzzy msgid "Convert video files" msgstr "Erreur pendant la conversion du fichier." #: share/gpodder/extensions/video_converter.py:23 msgid "Transcode video files to avi/mp4/m4v" msgstr "" #: share/gpodder/ui/gtk/gpodderaddpodcast.ui.h:1 msgid "Add a new podcast" msgstr "Ajouter un nouveau podcast" #: share/gpodder/ui/gtk/gpodderaddpodcast.ui.h:2 msgid "URL:" msgstr "URL:" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:1 msgid "gPodder Podcast Editor" msgstr "У‰diteur de podcast gPodder" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:2 msgid "Section:" msgstr "Section:" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:3 msgid "Disable feed updates (pause subscription)" msgstr "DУЉsactiver la mise У  jour du flux (mettre en pause l'abonnement)" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:4 msgid "Synchronize to MP3 player devices" msgstr "" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:5 msgid "Strategy:" msgstr "" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:6 #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:6 msgid "General" msgstr "GУЉnУЉral" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:7 msgid "HTTP/FTP Authentication" msgstr "Authentification HTTP/FTP" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:8 #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:13 msgid "Username:" msgstr "Nom d'utilisateur:" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:9 #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:14 msgid "Password:" msgstr "Mot de passe:" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:10 msgid "Locations" msgstr "Emplacements" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:11 msgid "Download to:" msgstr "TУЉlУЉcharger vers:" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:12 msgid "Website:" msgstr "Site web:" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:13 msgid "website label" msgstr "label du site web" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:14 msgid "Advanced" msgstr "AvancУЉs" #: share/gpodder/ui/gtk/gpodderconfigeditor.ui.h:1 msgid "gPodder Configuration Editor" msgstr "У‰diteur de configuration gPodder" #: share/gpodder/ui/gtk/gpodderconfigeditor.ui.h:2 msgid "Search for:" msgstr "Chercher :" #: share/gpodder/ui/gtk/gpodderconfigeditor.ui.h:3 msgid "Show All" msgstr "Afficher tout" #: share/gpodder/ui/gtk/gpodderepisodeselector.ui.h:1 msgid "Select episodes" msgstr "SУЉlectionner des УЉpisodes" #: share/gpodder/ui/gtk/gpodderpodcastdirectory.ui.h:1 msgid "Find new podcasts" msgstr "Trouver des nouveaux podcasts" #: share/gpodder/ui/gtk/gpodderpodcastdirectory.ui.h:2 msgid "Select All" msgstr "SУЉlectionner tout" #: share/gpodder/ui/gtk/gpodderpodcastdirectory.ui.h:3 msgid "Select None" msgstr "Ne rien sУЉlectionner" #: share/gpodder/ui/gtk/gpodderpodcastdirectory.ui.h:4 msgid "label" msgstr "" #: share/gpodder/ui/gtk/gpodderpodcastdirectory.ui.h:5 msgid "..." msgstr "" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:1 #: share/gpodder/ui/gtk/gpodder.ui.h:5 msgid "Preferences" msgstr "PrУЉfУЉrences" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:2 msgid "Audio player:" msgstr "Lecteur audio:" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:3 msgid "Video player:" msgstr "Lecteur vidУЉo:" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:4 msgid "\"All episodes\" in podcast list" msgstr "\"Tous les УЉpisodes\" dans la liste des podcasts" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:5 msgid "Use sections for podcast list" msgstr "Utiliser des sections pour la liste des podcasts" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:7 msgid "Preferred YouTube format:" msgstr "" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:8 msgid "YouTube API key (v3):" msgstr "" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:9 msgid "Preferred Vimeo format:" msgstr "" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:11 msgid "Extensions" msgstr "Extensions" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:12 msgid "Synchronize subscriptions and episode actions" msgstr "Synchroniser les abonnements et les actions de l'УЉpisode" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:15 msgid "Replace list on server with local subscriptions" msgstr "Remplacer la liste du serveur avec les abonnements locaux" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:16 msgid "Device name:" msgstr "Nom du pУЉriphУЉrique:" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:17 msgid "gpodder.net" msgstr "gpodder.net" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:18 msgid "Update interval:" msgstr "Intervalle de mise У  jour:" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:19 msgid "Maximum number of episodes per podcast:" msgstr "Nombre maximum de podcasts par УЉpisode:" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:20 msgid "When new episodes are found:" msgstr "Lorsque de nouveaux УЉpisodes sont trouvУЉs:" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:21 msgid "Updating" msgstr "Mise У  jour" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:22 msgid "Delete played episodes:" msgstr "Supprimer les УЉpisodes jouУЉs:" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:23 msgid "Remove played episodes even if unfinished" msgstr "Supprimer les УЉpisodes lus, inachevУЉs compris" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:24 msgid "Also remove unplayed episodes" msgstr "Supprimer aussi les УЉpisodes non lus" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:25 msgid "Clean-up" msgstr "Nettoyage" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:26 #, fuzzy msgid "Device type:" msgstr "Nom du pУЉriphУЉrique:" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:27 msgid "Mountpoint:" msgstr "" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:28 msgid "After syncing an episode:" msgstr "" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:29 #, fuzzy msgid "Create playlists on device" msgstr "Remplacer la liste des abonnements sur le serveur" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:30 #, fuzzy msgid "Playlists Folder:" msgstr "Presse-papiers vide" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:31 msgid "Remove episodes deleted on device from gPodder" msgstr "" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:32 #, fuzzy msgid "Only sync unplayed episodes" msgstr "У‰pisode anonyme" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:33 #, fuzzy msgid "Devices" msgstr "Nom du pУЉriphУЉrique:" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:34 msgid "Edit config" msgstr "У‰diter la configuration" #: share/gpodder/ui/gtk/gpodder.ui.h:1 msgid "_Podcasts" msgstr "Podcasts" #: share/gpodder/ui/gtk/gpodder.ui.h:2 msgid "Check for new episodes" msgstr "VУЉrifier la prУЉsence de nouveaux УЉpisodes" #: share/gpodder/ui/gtk/gpodder.ui.h:3 msgid "Download new episodes" msgstr "TУЉlУЉcharger des nouveaux УЉpisodes" #: share/gpodder/ui/gtk/gpodder.ui.h:7 msgid "_Subscriptions" msgstr "Abonnements" #: share/gpodder/ui/gtk/gpodder.ui.h:8 msgid "Discover new podcasts" msgstr "DУЉcouvrir de nouveaux podcasts" #: share/gpodder/ui/gtk/gpodder.ui.h:9 msgid "Add podcast via URL" msgstr "Ajouter un podcast via son URL" #: share/gpodder/ui/gtk/gpodder.ui.h:11 msgid "Unsubscribe" msgstr "Se dУЉsabonner" #: share/gpodder/ui/gtk/gpodder.ui.h:14 msgid "Import from OPML file" msgstr "Importer depuis un fichier OPML" #: share/gpodder/ui/gtk/gpodder.ui.h:15 msgid "Export to OPML file" msgstr "Exporter vers un fichier OPML" #: share/gpodder/ui/gtk/gpodder.ui.h:16 msgid "Go to gpodder.net" msgstr "Aller sur gpodder.net" #: share/gpodder/ui/gtk/gpodder.ui.h:17 msgid "_Episodes" msgstr "У‰pisodes" #: share/gpodder/ui/gtk/gpodder.ui.h:18 msgid "Play" msgstr "Lire" #: share/gpodder/ui/gtk/gpodder.ui.h:19 msgid "Open" msgstr "Ouvrir" #: share/gpodder/ui/gtk/gpodder.ui.h:22 msgid "Delete" msgstr "Supprimer" #: share/gpodder/ui/gtk/gpodder.ui.h:23 msgid "Toggle new status" msgstr "Activer/DУЉsactiver le statut nouveau" #: share/gpodder/ui/gtk/gpodder.ui.h:24 msgid "Change delete lock" msgstr "Changer le verrou de suppression" #: share/gpodder/ui/gtk/gpodder.ui.h:26 msgid "E_xtras" msgstr "" #: share/gpodder/ui/gtk/gpodder.ui.h:27 #, fuzzy msgid "Sync to device" msgstr "PУЉriphУЉrique Bluetooth" #: share/gpodder/ui/gtk/gpodder.ui.h:28 #, fuzzy msgid "Update YouTube subscriptions" msgstr "Aucun abonnement" #: share/gpodder/ui/gtk/gpodder.ui.h:29 msgid "_View" msgstr "Vue" #: share/gpodder/ui/gtk/gpodder.ui.h:30 msgid "Toolbar" msgstr "Barre d'outils" #: share/gpodder/ui/gtk/gpodder.ui.h:31 msgid "Episode descriptions" msgstr "Description de l'УЉpisode" #: share/gpodder/ui/gtk/gpodder.ui.h:33 msgid "Hide deleted episodes" msgstr "Cacher les УЉpisodes supprimУЉs" #: share/gpodder/ui/gtk/gpodder.ui.h:34 msgid "Downloaded episodes" msgstr "У‰pisodes tУЉlУЉchargУЉs" #: share/gpodder/ui/gtk/gpodder.ui.h:35 msgid "Unplayed episodes" msgstr "У‰pisodes non lus" #: share/gpodder/ui/gtk/gpodder.ui.h:36 msgid "Hide podcasts without episodes" msgstr "Cacher les podcasts sans УЉpisode" #: share/gpodder/ui/gtk/gpodder.ui.h:37 msgid "_Help" msgstr "Aide" #: share/gpodder/ui/gtk/gpodder.ui.h:38 msgid "User manual" msgstr "Manuel d'utilisateur" #: share/gpodder/ui/gtk/gpodder.ui.h:39 msgid "Software updates" msgstr "" #: share/gpodder/ui/gtk/gpodder.ui.h:40 msgid "Filter:" msgstr "Filtre:" #: share/gpodder/ui/gtk/gpodder.ui.h:41 msgid "Podcasts" msgstr "Podcasts" #: share/gpodder/ui/gtk/gpodder.ui.h:42 msgid "Limit rate to" msgstr "Limiter le dУЉbit У " #: share/gpodder/ui/gtk/gpodder.ui.h:43 msgid "KiB/s" msgstr "KiB/s" #: share/gpodder/ui/gtk/gpodder.ui.h:44 msgid "Limit downloads to" msgstr "Limiter le nombre de tУЉlУЉchargements У " #: share/gpodder/ui/gtk/gpodderwelcome.ui.h:2 #, fuzzy msgid "Welcome to gPodder" msgstr "Bienvenue sur gPodder" #: share/gpodder/ui/gtk/gpodderwelcome.ui.h:3 #, fuzzy msgid "Your podcast list is empty." msgstr "Votre liste de podcast a УЉtУЉ exportУЉe avec succУЈs" #: share/gpodder/ui/gtk/gpodderwelcome.ui.h:4 msgid "Choose from a list of example podcasts" msgstr "Choisissez une liste d'exemples de podcasts" #: share/gpodder/ui/gtk/gpodderwelcome.ui.h:5 #, fuzzy msgid "Add a podcast by entering its URL" msgstr "Ajouter un podcast via son URL" #: share/gpodder/ui/gtk/gpodderwelcome.ui.h:6 #, fuzzy msgid "Restore my subscriptions from gpodder.net" msgstr "TУЉlУЉcharger mes abonnements depuis gpodder.net" #: bin/gpo:266 #, fuzzy msgid "Podcast update requested by extensions." msgstr "Ce podcast nУЉcessite une authentification" #: bin/gpo:270 msgid "Episode download requested by extensions." msgstr "" #: bin/gpo:323 #, python-format msgid "Invalid url: %s" msgstr "" #: bin/gpo:340 bin/gpo:416 bin/gpo:450 bin/gpo:582 bin/gpo:597 bin/gpo:717 #, fuzzy, python-format msgid "You are not subscribed to %s." msgstr "Vous УЊtes dУЉjУ  abonnУЉs У  ces podcasts:" #: bin/gpo:346 #, fuzzy, python-format msgid "Already subscribed to %s." msgstr "Aucun abonnement" #: bin/gpo:352 #, fuzzy, python-format msgid "Cannot subscribe to %s." msgstr "Aucun abonnement" #: bin/gpo:368 #, python-format msgid "Successfully added %s." msgstr "%s ajoutУЉ avec succУЈs." #: bin/gpo:386 msgid "This configuration option does not exist." msgstr "Cette option de configuration n'existe pas." #: bin/gpo:390 msgid "Can only set leaf configuration nodes." msgstr "" #: bin/gpo:404 #, python-format msgid "Renamed %(old_title)s to %(new_title)s." msgstr "Renommer %(old_title)s en %(new_title)s." #: bin/gpo:420 #, fuzzy, python-format msgid "Unsubscribed from %s." msgstr "Se dУЉsabonner" #: bin/gpo:494 #, fuzzy msgid "Updates disabled" msgstr "Podcast anonyme" #: bin/gpo:505 #, python-format msgid "%(count)d new episode" msgid_plural "%(count)d new episodes" msgstr[0] "%(count)d nouvel УЉpisode" msgstr[1] "%(count)d nouveaux УЉpisodes" #: bin/gpo:511 #, fuzzy msgid "Checking for new episodes" msgstr "VУЉrifier la prУЉsence de nouveaux УЉpisodes" #: bin/gpo:520 #, fuzzy, python-format msgid "Skipping %(podcast)s" msgstr "Ajout de podcasts" #: bin/gpo:588 #, python-format msgid "Disabling feed update from %s." msgstr "" #: bin/gpo:603 #, python-format msgid "Enabling feed update from %s." msgstr "" #: bin/gpo:616 #, python-format msgid "Please register a YouTube API key and set it using %(command)s." msgstr "" #: bin/gpo:643 #, python-format msgid "Changing: %(old_url)s => %(new_url)s" msgstr "" #: bin/gpo:653 #, fuzzy msgid "Nothing to fix" msgstr "Rien У  exporter" #: bin/gpo:672 msgid "No podcasts found." msgstr "Aucun podcast trouvУЉ." #: bin/gpo:686 msgid "Enter index to subscribe, ? for list" msgstr "" #: bin/gpo:700 bin/gpo:704 msgid "Invalid value." msgstr "" #: bin/gpo:721 #, python-format msgid "Invalid URL: %s" msgstr "" #: bin/gpo:724 #, python-format msgid "Changed URL from %(old_url)s to %(new_url)s." msgstr "" #: bin/gpo:782 #, python-format msgid "Syntax error: %(error)s" msgstr "" #: bin/gpo:876 msgid "Ambiguous command. Did you mean.." msgstr "" #: bin/gpo:880 msgid "The requested function is not available." msgstr "" #: bin/gpodder:105 #, fuzzy msgid "print logging output on the console" msgstr "Afficher les messages de debug sur la sortie standard" #: bin/gpodder:108 #, fuzzy msgid "subscribe to the feed at URL" msgstr "S'abonner У  l'URL donnУЉe" #: bin/gpodder:113 msgid "Mac OS X application process number" msgstr "NumУЉro de processus de l'application Mac OS X" #: share/applications/gpodder.desktop.in.h:2 msgid "gPodder Podcast Client" msgstr "Client de Podcasts gPodder" #: share/applications/gpodder.desktop.in.h:3 msgid "Podcast Client" msgstr "Client de podcasts" #: share/applications/gpodder.desktop.in.h:4 msgid "Subscribe to audio and video content from the web" msgstr "S'abonner У  du contenu audio et vidУЉo depuis le web" #: share/applications/gpodder-url-handler.desktop.in.h:1 #, fuzzy msgid "gPodder (subscribe to feed)" msgstr "S'abonner У  l'URL donnУЉe" gpodder-3.9.0/po/ko_KR.po0000644000016000001710000017133612654461625016272 0ustar jenkinsjenkins00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # FIRST AUTHOR , YEAR. # msgid "" msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2016-02-03 20:31+0000\n" "PO-Revision-Date: 2016-01-01 21:09+0900\n" "Last-Translator: \n" "Language-Team: \n" "Language: ko_KR\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" "X-Generator: Poedit 1.8.6\n" #: src/gpodder/config.py:55 #, python-format msgid "gPodder on %s" msgstr "gPodder on %s" #: src/gpodder/directory.py:95 msgid "gpodder.net search" msgstr "gpodder.net ь—ь„œ ъВ€ьƒ‰" #: src/gpodder/directory.py:104 msgid "OPML from web" msgstr "ь›Йь—ь„œ OPMLъА€ь Иь˜ЄъИА" #: src/gpodder/directory.py:113 msgid "OPML file" msgstr "OPML эŒŒьМ" #: src/gpodder/directory.py:122 share/gpodder/ui/gtk/gpodderwelcome.ui.h:1 msgid "Getting started" msgstr "ь‹œьž‘э•˜ъИА" #: src/gpodder/directory.py:131 msgid "gpodder.net Top 50" msgstr "gpodder.net Top 50" #: src/gpodder/directory.py:140 msgid "gpodder.net Tags" msgstr "gpodder.net эƒœъЗИ" #: src/gpodder/directory.py:152 msgid "Soundcloud search" msgstr "Soundcloudь—ь„œ ъВ€ьƒ‰" #: src/gpodder/directory.py:165 msgid "Imported OPML file" msgstr "ъА€ь Иь˜Ј эŒŒьМ" #: src/gpodder/download.py:329 msgid "Wrong username/password" msgstr "ьž˜ыЊЛыœ ь‚ЌьšЉьžьДыІ„/ь•”э˜И" #: src/gpodder/download.py:527 src/gpodder/sync.py:924 msgid "Added" msgstr "ьЖ”ъА€" #: src/gpodder/download.py:527 src/gpodder/sync.py:924 msgid "Queued" msgstr "ыŒ€ъИАьЄ‘" #: src/gpodder/download.py:527 src/gpodder/gtkui/model.py:327 msgid "Downloading" msgstr "ы‹ЄьšДыЁœы“œьЄ‘" #: src/gpodder/download.py:528 src/gpodder/model.py:721 #: src/gpodder/sync.py:925 msgid "Finished" msgstr "ь™„ыЃŒ" #: src/gpodder/download.py:528 src/gpodder/sync.py:925 msgid "Failed" msgstr "ь‹ЄэŒЈ" #: src/gpodder/download.py:528 src/gpodder/sync.py:925 msgid "Cancelled" msgstr "ьЗЈь†ŒыЈ" #: src/gpodder/download.py:528 src/gpodder/sync.py:925 msgid "Paused" msgstr "ьž ь‹œыЉˆьЖЄ" #: src/gpodder/download.py:862 msgid "Missing content from server" msgstr "ь„œыВ„ь—ь„œ ьЛЈэ…ьИ ыЅМ ьАОь„ ьˆ˜ ь—†ьŒ" #: src/gpodder/download.py:868 #, python-format msgid "I/O Error: %(error)s: %(filename)s" msgstr "I/O ь—ыŸЌ: %(error)s: %(filename)s" #: src/gpodder/download.py:875 #, python-format msgid "HTTP Error %(code)s: %(message)s" msgstr "HTTP ь—ыŸЌ %(code)s: %(message)s" #: src/gpodder/download.py:879 src/gpodder/sync.py:1081 #, python-format msgid "Error: %s" msgstr "ь—ыŸЌ: %s" #: src/gpodder/extensions.py:55 msgid "Desktop Integration" msgstr "ыАьŠЄэЌэƒ‘ э†Еэ•Љ" #: src/gpodder/extensions.py:56 msgid "Interface" msgstr "ьИэ„АэŽ˜ьДьŠЄ" # Need more context to translate it #: src/gpodder/extensions.py:57 msgid "Post download" msgstr "Post download" #: src/gpodder/extensions.py:59 src/gpodder/model.py:779 #: src/gpodder/model.py:1225 msgid "Other" msgstr "ы‹ЄыЅИ" #: src/gpodder/extensions.py:100 msgid "No description for this extension." msgstr "э™•ьžЅъИАыŠЅь— ыŒ€э•œ ь„ЄыЊ…ьД ь—†ьŠЕы‹ˆы‹Є." #: src/gpodder/extensions.py:212 #, python-format msgid "Command not found: %(command)s" msgstr "ыЊ…ы Йь–ДыЅМ ьАОьЇ€ ыЊЛэ–ˆьŠЕы‹ˆы‹Є: %(command)s" #: src/gpodder/extensions.py:228 #, python-format msgid "Need at least one of the following commands: %(list_of_commands)s" msgstr "" "ь•„ыž˜ ыЊ…ы Йь–ДьЄ‘ь—ь„œ ьЕœь†Œэ•œ э•˜ы‚˜ь˜ ыЊ…ы Йь–ДъА€ э”Ньš”э•Љы‹ˆы‹Є: %(list_of_commands)s" #: src/gpodder/extensions.py:265 #, python-format msgid "Python module not found: %(module)s" msgstr "эŒŒьДьЌ ыЊЈы“ˆь„ ьАОьЇ€ ыЊЛэ–ˆьŠЕы‹ˆы‹Є: %(module)s" #: src/gpodder/model.py:446 src/gpodder/plugins/soundcloud.py:156 msgid "No description available" msgstr "ь‚ЌьšЉъА€ыŠЅэ•œ ь„ЄыЊ…ьД ь—†ьŠЕы‹ˆы‹Є" #: src/gpodder/model.py:679 msgid "unknown" msgstr "ь•Œьˆ˜ь—†ыŠ”" #: src/gpodder/model.py:746 msgid "Default" msgstr "ъИАыГИ" #: src/gpodder/model.py:747 msgid "Only keep latest" msgstr "ьЕœь‹ ьœМыЁœ ьœ ьЇ€" #: src/gpodder/model.py:1208 src/gpodder/model.py:1223 #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:10 msgid "Video" msgstr "ыЙ„ы””ь˜Є" #: src/gpodder/model.py:1221 msgid "Audio" msgstr "ь˜Єы””ь˜Є" #: src/gpodder/my.py:174 #, python-format msgid "Add %s" msgstr "%s ьЖ”ъА€" #: src/gpodder/my.py:176 #, python-format msgid "Remove %s" msgstr "%s ь‚­ь œ" #: src/gpodder/sync.py:196 msgid "Cancelled by user" msgstr "ь‚ЌьšЉьž ьЗЈь†Œ" #: src/gpodder/sync.py:199 msgid "Writing data to disk" msgstr "ы””ьŠЄэЌь— ъИАыЁьЄ‘ьž…ы‹ˆы‹Є" #: src/gpodder/sync.py:295 msgid "Opening iPod database" msgstr "ь•„ьДэŒŸ ыАьДэ„АыВ ьДьŠЄыЅМ ь—ДъГ  ьžˆьŠЕы‹ˆы‹Є" #: src/gpodder/sync.py:305 msgid "iPod opened" msgstr "ь•„ьДэŒŸ ь—АъВАыЈ" #: src/gpodder/sync.py:316 msgid "Saving iPod database" msgstr "ь•„ьДэŒŸ ыАьДэ„АыВ ьДьŠЄь— ь €ьžЅэ•˜ъГ  ьžˆьŠЕы‹ˆы‹Є" #: src/gpodder/sync.py:321 msgid "Writing extended gtkpod database" msgstr "э™•ьžЅыœ gtkpod ыАьДэ„АыВ ьДьŠЄь— ъИАыЁэ•˜ъГ  ьžˆьŠЕы‹ˆы‹Є" #: src/gpodder/sync.py:397 src/gpodder/sync.py:680 src/gpodder/sync.py:874 #, python-format msgid "Removing %s" msgstr "%s ь‚­ь œьЄ‘" #: src/gpodder/sync.py:412 src/gpodder/sync.py:557 #, python-format msgid "Adding %s" msgstr "ьЖ”ъА€ьЄ‘ %s" #: src/gpodder/sync.py:430 #, python-format msgid "Error copying %(episode)s: Not enough free space on %(mountpoint)s" msgstr "%(episode)s ыГЕь‚ЌьЄ‘ ь—ыŸЌ: %(mountpoint)s ь— ъГЕъА„ьД ыЖ€ьЁБэ•Љы‹ˆы‹Є" #: src/gpodder/sync.py:515 msgid "Opening MP3 player" msgstr "MP3 э”Œы ˆьДь–Д ь—АъВАьЄ‘" #: src/gpodder/sync.py:518 msgid "MP3 player opened" msgstr "MP3 э”Œы ˆьДь–ДъА€ ь—АъВАыЈ" #: src/gpodder/sync.py:576 #, python-format msgid "" "Not enough space in %(path)s: %(free)s available, but need at least %(need)s" msgstr "" #: src/gpodder/sync.py:603 src/gpodder/sync.py:611 #, python-format msgid "Error opening %(filename)s: %(message)s" msgstr "эŒŒьМь—ЌыŠ”ьЄ‘ ь—ыŸЌ %(filename)s: %(message)s" #: src/gpodder/sync.py:780 src/gpodder/sync.py:786 msgid "MTP device" msgstr "MTPы””ыА”ьДьŠЄ" #: src/gpodder/sync.py:793 msgid "Opening the MTP device" msgstr "MTPы””ыА”ьДьŠЄыЅМ ь—АъВАьЄ‘ьž…ы‹ˆы‹Є" #: src/gpodder/sync.py:803 #, python-format msgid "%s opened" msgstr "%s ь—Ды ИьŠЕы‹ˆы‹Є" #: src/gpodder/sync.py:808 #, python-format msgid "Closing %s" msgstr "%s ьЂ…ыЃŒьЄ‘" #: src/gpodder/sync.py:816 #, python-format msgid "%s closed" msgstr "%s ь™„ыЃŒыЈ" #: src/gpodder/sync.py:821 bin/gpo:708 #, python-format msgid "Adding %s..." msgstr "%s ьЖ”ъА€ьЄ‘..." #: src/gpodder/sync.py:924 msgid "Synchronizing" msgstr "ы™ъИАэ™”ьЄ‘" #: src/gpodder/util.py:429 #, python-format msgid "%(count)d day ago" msgid_plural "%(count)d days ago" msgstr[0] "%(count)d ьМ ь „" #: src/gpodder/util.py:508 msgid "Today" msgstr "ь˜ЄыŠ˜" #: src/gpodder/util.py:510 msgid "Yesterday" msgstr "ь–Дь œ" #: src/gpodder/util.py:553 src/gpodder/util.py:556 msgid "(unknown)" msgstr "ь•Œьˆ˜ь—†ыŠ”" #: src/gpodder/util.py:1193 src/gpodder/util.py:1212 #, python-format msgid "%(count)d second" msgid_plural "%(count)d seconds" msgstr[0] "%(count)d ьДˆ" #: src/gpodder/util.py:1206 #, python-format msgid "%(count)d hour" msgid_plural "%(count)d hours" msgstr[0] "%(count)d ь‹œъА„" #: src/gpodder/util.py:1209 #, python-format msgid "%(count)d minute" msgid_plural "%(count)d minutes" msgstr[0] "%(count)d ыЖ„" #: src/gpodder/util.py:1215 msgid "and" msgstr "ъЗИыІЌъГ " #: src/gpodder/gtkui/config.py:50 msgid "Integer" msgstr "ьˆЋьž" #: src/gpodder/gtkui/config.py:52 msgid "Float" msgstr "ь†Œьˆ˜ь  ьˆЋьž" #: src/gpodder/gtkui/config.py:54 msgid "Boolean" msgstr "ыЖˆ(ьАИ/ъБАьЇ“)" #: src/gpodder/gtkui/config.py:56 msgid "String" msgstr "ыЌИьžь—Д" #: src/gpodder/gtkui/desktopfile.py:70 #, python-format msgid "Command: %s" msgstr "ыЊ…ы Йь–Д: %s" #: src/gpodder/gtkui/desktopfile.py:150 msgid "Default application" msgstr "ъИАыГИ ь–Дэ”ŒыІЌьМ€ьДь…˜" #: src/gpodder/gtkui/main.py:205 share/applications/gpodder.desktop.in.h:1 msgid "gPodder" msgstr "ьЇ€эŒŒы”" #: src/gpodder/gtkui/main.py:288 msgid "Loading incomplete downloads" msgstr "ь™„ыЃŒы˜ьЇ€ ь•Šь€ эŒŒьМы“Єь„ ыЁœы”ЉьЄ‘" #: src/gpodder/gtkui/main.py:289 msgid "Some episodes have not finished downloading in a previous session." msgstr "ьДь „ ь„Иь…˜ь—ь„œ, ыЊЈы“  ь—э”Мь†Œы“œыЅМ ы‹ЄьšДыЁœы“œ э•˜ьЇ€ ыЊЛэ–ˆьŠЕы‹ˆы‹Є" #: src/gpodder/gtkui/main.py:291 #, python-format msgid "%(count)d partial file" msgid_plural "%(count)d partial files" msgstr[0] "%(count)d ыЖ€ыЖ„ эŒŒьМ" #: src/gpodder/gtkui/main.py:306 msgid "Resume all" msgstr "ыЊЈы‘ ы‹Єь‹œ ь‹œьž‘" #: src/gpodder/gtkui/main.py:316 msgid "Incomplete downloads from a previous session were found." msgstr "ьДь „ ь„Иь…˜ь—ь„œ ь „ыЖ€ ы‹ЄьšДыЁœы“œ ы˜ьЇ€ ыЊЛэ•œ эŒŒьМьД ьžˆьŠЕы‹ˆы‹Є" #: src/gpodder/gtkui/main.py:414 msgid "Action" msgstr "ь•Ёь…˜" #: src/gpodder/gtkui/main.py:461 msgid "Confirm changes from gpodder.net" msgstr "gpodder.net ь—ь„œ ыГ€ъВНь‚Ќэ•­ э™•ьИ" #: src/gpodder/gtkui/main.py:462 msgid "Select the actions you want to carry out." msgstr "ьˆ˜э–‰э•  ь•Ёь…˜ь„ ь„ эƒэ•˜ь„Иьš”" #: src/gpodder/gtkui/main.py:502 msgid "Uploading subscriptions" msgstr "ъЕЌы…ы‚Дь—­ь„ ь—…ыЁœы“œьЄ‘" #: src/gpodder/gtkui/main.py:503 msgid "Your subscriptions are being uploaded to the server." msgstr "ъЕЌы…ы‚Дь—­ь„ ь„œыВ„ь— ь—…ыЁœы“œ э•˜ъГ  ьžˆьŠЕы‹ˆы‹Є" #: src/gpodder/gtkui/main.py:508 msgid "List uploaded successfully." msgstr "ыІЌьŠЄэŠИыЅМ ь—…ыЁœы“œ э–ˆьŠЕы‹ˆы‹Є" #: src/gpodder/gtkui/main.py:515 msgid "Error while uploading" msgstr "ь—…ыЁœы“œьЄ‘ ь—ыŸЌ" #: src/gpodder/gtkui/main.py:800 src/gpodder/gtkui/main.py:928 #: src/gpodder/gtkui/main.py:2622 src/gpodder/gtkui/main.py:2815 #: src/gpodder/gtkui/desktop/episodeselector.py:132 #: src/gpodder/gtkui/desktop/sync.py:270 msgid "Episode" msgstr "ь—э”Мь†Œы“œ" #: src/gpodder/gtkui/main.py:819 msgid "Size" msgstr "ь‚ЌьДьІˆ" #: src/gpodder/gtkui/main.py:824 msgid "Duration" msgstr "ъИАъА„" #: src/gpodder/gtkui/main.py:828 msgid "Released" msgstr "ыААэЌ" #: src/gpodder/gtkui/main.py:855 msgid "Visible columns" msgstr "ыГДьДыŠ” ьЛЌыŸМ" #: src/gpodder/gtkui/main.py:948 src/gpodder/gtkui/main.py:1108 #: share/gpodder/ui/gtk/gpodder.ui.h:45 msgid "Progress" msgstr "ьЇ„э–‰ьƒэ™Љ" #: src/gpodder/gtkui/main.py:982 msgid "Loading episodes" msgstr "ь—э”Мь†Œы“œыЅМ ыЖˆыŸЌь˜ЄъГ  ьžˆьŠЕы‹ˆы‹Є" #: src/gpodder/gtkui/main.py:985 msgid "No episodes in current view" msgstr "э˜„ьžЌыЗАь— ь—э”Мь†Œы“œъА€ ь—†ьŠЕы‹ˆы‹Є" #: src/gpodder/gtkui/main.py:987 msgid "No episodes available" msgstr "ь—э”Мь†Œы“œъА€ ь—†ьŠЕы‹ˆы‹Є" #: src/gpodder/gtkui/main.py:993 msgid "No podcasts in this view" msgstr "э˜„ьžЌ ыЗАь— эŒŸьКьŠЄэŠИъА€ ь—†ьŠЕы‹ˆы‹Є" #: src/gpodder/gtkui/main.py:995 msgid "No subscriptions" msgstr "ь„ЄыЊ…ьД ь—†ьŠЕы‹ˆы‹Є" #: src/gpodder/gtkui/main.py:997 msgid "No active tasks" msgstr "ы™ьž‘ьЄ‘ьИ эƒœьŠЄэЌъА€ ь—†ьŠЕы‹ˆы‹Є" #: src/gpodder/gtkui/main.py:1112 src/gpodder/gtkui/main.py:1114 #, python-format msgid "%(count)d active" msgid_plural "%(count)d active" msgstr[0] "%(count)d ь‹Єэ–‰ьЄ‘" #: src/gpodder/gtkui/main.py:1116 #, python-format msgid "%(count)d failed" msgid_plural "%(count)d failed" msgstr[0] "%(count)d ь‹ЄэŒЈ" #: src/gpodder/gtkui/main.py:1118 #, python-format msgid "%(count)d queued" msgid_plural "%(count)d queued" msgstr[0] "%(count)d ыŒ€ъИАьЄ‘" #: src/gpodder/gtkui/main.py:1132 #, python-format msgid "downloading %(count)d file" msgid_plural "downloading %(count)d files" msgstr[0] "%(count)d эŒŒьМь„ ы‹ЄьšДыЁœы“œ ьЄ‘" #: src/gpodder/gtkui/main.py:1142 #, python-format msgid "synchronizing %(count)d file" msgid_plural "synchronizing %(count)d files" msgstr[0] "%(count)d эŒŒьМь„ ы™ъИАэ™”ьЄ‘" #: src/gpodder/gtkui/main.py:1144 #, python-format msgid "%(queued)d task queued" msgid_plural "%(queued)d tasks queued" msgstr[0] "%(queued)d эƒœьŠЄэЌ ыŒ€ъИАьЄ‘" #: src/gpodder/gtkui/main.py:1168 msgid "Please report this problem and restart gPodder:" msgstr "ьД ыЌИь œь ь„ ыГДъГ э•˜ъГ , ьЇ€эŒŒы”ыЅМ ы‹Єь‹œ ь‹œьž‘э•Љы‹ˆы‹Є" #: src/gpodder/gtkui/main.py:1168 msgid "Unhandled exception" msgstr "ь˜ыІЌы˜ьЇ€ ь•Šь€ ь˜ˆь™И" #: src/gpodder/gtkui/main.py:1235 #, python-format msgid "Feedparser error: %s" msgstr "э”Мы“œэŒŒь„œ ь—ыŸЌ: %s" #: src/gpodder/gtkui/main.py:1371 msgid "Could not download some episodes:" msgstr "ь—э”Мь†Œы“œ ыЊ‡ъАœыЅМ ы‹ЄьšДыЁœы“œ э•˜ьЇ€ ыЊЛ э–ˆьŠЕы‹ˆы‹Є" #: src/gpodder/gtkui/main.py:1373 src/gpodder/gtkui/main.py:1376 msgid "Downloads finished" msgstr "ы‹ЄьšДыЁœы“œ ь™„ыЃŒ" #: src/gpodder/gtkui/main.py:1379 msgid "Downloads failed" msgstr "ы‹ЄьšДыЁœы“œ ь‹ЄэŒЈ" #: src/gpodder/gtkui/main.py:1383 msgid "Could not sync some episodes:" msgstr "ь—э”Мь†Œы“œ ыЊ‡ъАœыЅМ ы™ъИАэ™”э•˜ьЇ€ ыЊЛэ–ˆьŠЕы‹ˆы‹Є" #: src/gpodder/gtkui/main.py:1385 src/gpodder/gtkui/main.py:1388 msgid "Device synchronization finished" msgstr "ы””ыА”ьДьŠЄ ы™ъИАэ™”ъА€ ь™„ыЃŒы˜ь—ˆьŠЕы‹ˆы‹Є" #: src/gpodder/gtkui/main.py:1391 msgid "Device synchronization failed" msgstr "ы””ыА”ьДьŠЄ ы™ъИАэ™” ь‹ЄэŒЈ" #: src/gpodder/gtkui/main.py:1434 #, python-format msgid "%(count)d more episode" msgid_plural "%(count)d more episodes" msgstr[0] "ьЖ”ъА€ ь—э”Мь†Œы“œ %(count)d ъАœ" #: src/gpodder/gtkui/main.py:1508 msgid "Start download now" msgstr "ьЇ€ъИˆ ы‹ЄьšДыЁœы“œ ь‹œьž‘" #: src/gpodder/gtkui/main.py:1510 src/gpodder/gtkui/main.py:1719 #: src/gpodder/gtkui/desktop/episodeselector.py:144 #: share/gpodder/ui/gtk/gpodder.ui.h:20 msgid "Download" msgstr "ы‹ЄьšДыЁœы“œ" #: src/gpodder/gtkui/main.py:1511 share/gpodder/ui/gtk/gpodder.ui.h:21 msgid "Cancel" msgstr "ьЗЈь†Œ" #: src/gpodder/gtkui/main.py:1512 msgid "Pause" msgstr "ьž ь‹œыЉˆьЖЄ" #: src/gpodder/gtkui/main.py:1514 msgid "Remove from list" msgstr "ыІЌьŠЄэŠИь—ь„œ ь‚­ь œ" #: src/gpodder/gtkui/main.py:1553 share/gpodder/ui/gtk/gpodder.ui.h:13 msgid "Update podcast" msgstr "эŒŸьКьŠЄэŠИ ь—…ыАьДэŠИ" #: src/gpodder/gtkui/main.py:1560 msgid "Open download folder" msgstr "ы‹ЄьšДыЁœы“œ эДы” ь—ДъИА" #: src/gpodder/gtkui/main.py:1566 msgid "Mark episodes as old" msgstr "ьНь€ ь—э”Мь†Œы“œыЁœ э‘œь‹œ" #: src/gpodder/gtkui/main.py:1570 src/gpodder/gtkui/main.py:1778 msgid "Archive" msgstr "ыГДъД€" #: src/gpodder/gtkui/main.py:1575 msgid "Remove podcast" msgstr "эŒŸьКьŠЄэŠИ ь‚­ь œ" #: src/gpodder/gtkui/main.py:1590 share/gpodder/ui/gtk/gpodder.ui.h:10 msgid "Podcast settings" msgstr "эŒŸьКьŠЄэŠИ ь„ИэŒ…" #: src/gpodder/gtkui/main.py:1650 msgid "Error converting file." msgstr "эŒŒьМ ыГ€э™˜ ь—ыŸЌ" #: src/gpodder/gtkui/main.py:1650 msgid "Bluetooth file transfer" msgstr "ыИ”ыЃЈэˆЌьŠЄыЁœ эŒŒьМ ь „ь†Ё" #: src/gpodder/gtkui/main.py:1709 msgid "Preview" msgstr "ыЏИыІЌыГДъИА" #: src/gpodder/gtkui/main.py:1711 msgid "Stream" msgstr "ьŠЄэŠИыІМ" #: src/gpodder/gtkui/main.py:1755 msgid "Send to" msgstr "ыГДы‚ДъИА" # local ь„ ыВˆь—­э•  ь ь ˆэ•œ ы‹Јь–ДыЅМ ьЖ”ьВœэ•ДьЃМь„Иьš” #: src/gpodder/gtkui/main.py:1757 msgid "Local folder" msgstr "Local эДы”" #: src/gpodder/gtkui/main.py:1762 msgid "Bluetooth device" msgstr "ыИ”ыЃЈэˆЌьŠЄ ьžЅьɘ" #: src/gpodder/gtkui/main.py:1769 msgid "New" msgstr "ьƒˆ" #: src/gpodder/gtkui/main.py:1785 share/gpodder/ui/gtk/gpodder.ui.h:25 msgid "Episode details" msgstr "ь—э”Мь†Œы“œ ь„ЄыЊ…" #: src/gpodder/gtkui/main.py:1938 msgid "Please check your media player settings in the preferences dialog." msgstr "э™˜ъВНь„Єь •ь—ь„œ ыЏИы””ь–Д э”Œы ˆьДь–Д ь„Єь •ь„ э™•ьИэ•ДьЃМь„Иьš”" #: src/gpodder/gtkui/main.py:1939 msgid "Error opening player" msgstr "э”Œы ˆьДь–Д ь—ыŸЌ" #: src/gpodder/gtkui/main.py:2178 msgid "Adding podcasts" msgstr "эŒŸьКьŠЄэŠИ ьЖ”ъА€" #: src/gpodder/gtkui/main.py:2179 msgid "Please wait while episode information is downloaded." msgstr "ъИАы‹Єы ЄьЃМь„Иьš”. ь—э”Мь†Œы“œ ь •ыГДыЅМ ы‹ЄьšДыЁœы“œ ьЄ‘ьž…ы‹ˆы‹Є." #: src/gpodder/gtkui/main.py:2186 msgid "Existing subscriptions skipped" msgstr "ъЕЌы…ьЄ‘ьИъВƒь€ ъБДы„ˆыœ€ы‹ˆы‹Є" #: src/gpodder/gtkui/main.py:2187 msgid "You are already subscribed to these podcasts:" msgstr "ъЕЌы…э•˜ъГ  ьžˆыŠ” эŒŸьКьŠЄэŠИьž…ы‹ˆы‹Є" #: src/gpodder/gtkui/main.py:2195 msgid "Podcast requires authentication" msgstr "ьИьІьД э•„ьš”э•Љы‹ˆы‹Є" #: src/gpodder/gtkui/main.py:2196 #, python-format msgid "Please login to %s:" msgstr "%s ь— ыЁœъЗИьИэ•˜ь„Иьš”" #: src/gpodder/gtkui/main.py:2204 src/gpodder/gtkui/main.py:2299 msgid "Authentication failed" msgstr "ьИьІ ь‹ЄэŒЈ" #: src/gpodder/gtkui/main.py:2210 msgid "Website redirection detected" msgstr "ь›Йь‚ЌьДэŠИ ыІЌы‹ЄьДы ‰ь…˜ ъВ€ьЖœыЈ" #: src/gpodder/gtkui/main.py:2211 #, python-format msgid "The URL %(url)s redirects to %(target)s." msgstr "%(url)s ьД %(target)s ьœМыЁœ ыІЌы‹ЄьДы ‰ь…˜ ыЉы‹ˆы‹Є" #: src/gpodder/gtkui/main.py:2212 msgid "Do you want to visit the website now?" msgstr "ь›Йь‚ЌьДэŠИь— ыАЉыЌИэ•˜ь‹œъВ ьŠЕы‹ˆъЙŒ?" #: src/gpodder/gtkui/main.py:2221 msgid "Could not add some podcasts" msgstr "эŒŸьКьŠЄэŠИыЅМ ьЖ”ъА€э•˜ьЇ€ ыЊЛэ–ˆьŠЕы‹ˆы‹Є" #: src/gpodder/gtkui/main.py:2222 msgid "Some podcasts could not be added to your list:" msgstr "эŒŸьКьŠЄэŠИыЅМ ыІЌьŠЄэŠИь— ьЖ”ъА€э•˜ьЇ€ ыЊЛэ–ˆьŠЕы‹ˆы‹Є" #: src/gpodder/gtkui/main.py:2224 msgid "Unknown" msgstr "ь•Œьˆ˜ь—†ыŠ”" #: src/gpodder/gtkui/main.py:2308 msgid "Redirection detected" msgstr "ь›Йь‚ЌьДэŠИ ыІЌы‹ЄьДы ‰ь…˜ ъВ€ьЖœыЈ" #: src/gpodder/gtkui/main.py:2342 msgid "Merging episode actions" msgstr "ь—э”Мь†Œы“œ ь•Ёь…˜ь„ э•ЉьɘыŠ” ьЄ‘" #: src/gpodder/gtkui/main.py:2343 msgid "Episode actions from gpodder.net are merged." msgstr "gpodder.netь˜ ь—э”Мь†Œы“œ ь•Ёь…˜ь„ э•ЉьГЄьŠЕы‹ˆы‹Є" #: src/gpodder/gtkui/main.py:2368 msgid "Cancelling..." msgstr "ьЗЈь†ŒьЄ‘" #: src/gpodder/gtkui/main.py:2377 msgid "Please connect to a network, then try again." msgstr "ы„ЄэŠИь›ь— ь—АъВАэ•œ э›„, ы‹Єь‹œ ь‹œы„э•˜ь„Иьš”" #: src/gpodder/gtkui/main.py:2378 msgid "No network connection" msgstr "ы„ЄэŠИь›ь— ь—АъВАы˜ь–Д ьžˆьЇ€ ь•ŠьŠЕы‹ˆы‹Є" #: src/gpodder/gtkui/main.py:2399 #, python-format msgid "Updating %(count)d feed..." msgid_plural "Updating %(count)d feeds..." msgstr[0] " %(count)d э”Мы“œыЅМ ь—…ыАьДэŠИ ьЄ‘" #: src/gpodder/gtkui/main.py:2417 #, python-format msgid "Error while updating %(url)s: %(message)s" msgstr "%(url)s: %(message)s ь—…ыАьДэŠИэ•˜ыŠ” ьЄ‘ ь—ыŸЌ" #: src/gpodder/gtkui/main.py:2419 #, python-format msgid "The feed at %(url)s could not be updated." msgstr "%(url)s ь˜ э”Мы“œыЅМ ь—…ыАьДэŠИ э•  ьˆ˜ ь—†ьŠЕы‹ˆы‹Є" #: src/gpodder/gtkui/main.py:2420 msgid "Error while updating feed" msgstr "э”Мы“œыЅМ ь—…ыАьДэŠИэ•˜ыŠ” ьЄ‘ ь—ыŸЌ" #: src/gpodder/gtkui/main.py:2435 #, python-format msgid "Updated %(podcast)s (%(position)d/%(total)d)" msgstr "ь—…ыАьДэŠИыЈ %(podcast)s (%(position)d/%(total)d)" #: src/gpodder/gtkui/main.py:2466 msgid "No new episodes" msgstr "ьƒˆ ь—э”Мь†Œы“œъА€ ь—†ьŠЕы‹ˆы‹Є" #: src/gpodder/gtkui/main.py:2479 #, python-format msgid "Downloading %(count)d new episode." msgid_plural "Downloading %(count)d new episodes." msgstr[0] "ьƒˆ ь—э”Мь†Œы“œ %(count)d ъАœыЅМ ы‹ЄьšДыЁœы“œ ьЄ‘" #: src/gpodder/gtkui/main.py:2480 src/gpodder/gtkui/main.py:2484 #: src/gpodder/gtkui/main.py:2833 msgid "New episodes available" msgstr "ьƒˆ ь—э”Мь†Œы“œъА€ ьžˆьŠЕы‹ˆы‹Є" #: src/gpodder/gtkui/main.py:2483 #, python-format msgid "%(count)d new episode added to download list." msgid_plural "%(count)d new episodes added to download list." msgstr[0] "ы‹ЄьšДыЁœы“œ ыІЌьŠЄэŠИь—, ьƒˆыЁœьšД ь—э”Мь†Œы“œ %(count)dъАœыЅМ ьЖ”ъА€э•Љы‹ˆы‹Є" #: src/gpodder/gtkui/main.py:2490 #, python-format msgid "%(count)d new episode available" msgid_plural "%(count)d new episodes available" msgstr[0] "ьƒˆ ь—э”Мь†Œы“œ %(count)d ъАœъА€ ьžˆьŠЕы‹ˆы‹Є" #: src/gpodder/gtkui/main.py:2509 msgid "Quit gPodder" msgstr "ьЇ€эŒŒы” ьЂ…ыЃŒ" #: src/gpodder/gtkui/main.py:2510 msgid "" "You are downloading episodes. You can resume downloads the next time you " "start gPodder. Do you want to quit now?" msgstr "" "ь—э”Мь†Œы“œ ы‹ЄьšДыЁœы“œ ьЄ‘ьž…ы‹ˆы‹Є. ьЂ…ыЃŒ э›„ь—, ьЇ€эŒŒы”ыЅМ ь‹Єэ–‰э–ˆь„ ы•Œ, ы‹ЄьšДыЁœы“œыЅМ ы‹Єь‹œ " "ь‹œьž‘э•  ьˆ˜ ьžˆьŠЕы‹ˆы‹Є. ьЂ…ыЃŒ э• ъЙŒьš”?" #: src/gpodder/gtkui/main.py:2559 msgid "Episodes are locked" msgstr "ь—э”Мь†Œы“œъА€ ьž ъВМьŠЕы‹ˆы‹Є" #: src/gpodder/gtkui/main.py:2560 msgid "" "The selected episodes are locked. Please unlock the episodes that you want " "to delete before trying to delete them." msgstr "ь„ эƒэ•œ ь—э”Мь†Œы“œы“Єь€ ьž ъВЈ ьžˆьŠЕы‹ˆы‹Є. ь‚­ь œэ•˜ы ЄыЉД, ьž ъИˆь„ э•Дь œэ•ДьЃМь„Иьš”." #: src/gpodder/gtkui/main.py:2565 #, python-format msgid "Delete %(count)d episode?" msgid_plural "Delete %(count)d episodes?" msgstr[0] "%(count)d ъАœь˜ ь—э”Мь†Œы“œыЅМ ь‚­ь œэ•Љы‹ˆъЙŒ?" #: src/gpodder/gtkui/main.py:2566 msgid "Deleting episodes removes downloaded files." msgstr "ь—э”Мь†Œы“œь™€ ы‹ЄьšДыЁœы“œыœ эŒŒьМь„ ь‚­ь œэ•˜ъГ  ьžˆьŠЕы‹ˆы‹Є" #: src/gpodder/gtkui/main.py:2571 msgid "Deleting episodes" msgstr "ь—э”Мь†Œы“œ ь‚­ь œьЄ‘" #: src/gpodder/gtkui/main.py:2572 msgid "Please wait while episodes are deleted" msgstr "ь—э”Мь†Œы“œыЅМ ь‚­ь œэ•˜ъГ  ьžˆьŠЕы‹ˆы‹Є. ьž ь‹œыЇŒ ъИАы‹Єы ЄьЃМь„Иьš”" #: src/gpodder/gtkui/main.py:2625 #, python-format msgid "Select older than %(count)d day" msgid_plural "Select older than %(count)d days" msgstr[0] "%(count)d ьМьД ы„˜ь€ ъВƒы“Є ь„ эƒ" #: src/gpodder/gtkui/main.py:2627 msgid "Select played" msgstr "ьžЌьƒэ•œъВƒ ь„ эƒ" #: src/gpodder/gtkui/main.py:2628 msgid "Select finished" msgstr "ь™„ыЃŒыœъВƒ ь„ эƒ" #: src/gpodder/gtkui/main.py:2632 msgid "Select the episodes you want to delete:" msgstr "ь‚­ь œэ•  ь—э”Мь†Œы“œыЅМ ь„ эƒэ•˜ь„Иьš”" #: src/gpodder/gtkui/main.py:2648 share/gpodder/ui/gtk/gpodder.ui.h:4 msgid "Delete episodes" msgstr "ь—э”Мь†Œы“œ ь‚­ь œ" #: src/gpodder/gtkui/main.py:2703 src/gpodder/gtkui/main.py:2934 #: src/gpodder/gtkui/main.py:3034 msgid "No podcast selected" msgstr "эŒŸьКьŠЄэŠИъА€ ь„ эƒы˜ьЇ€ ь•Šь•˜ьŠЕы‹ˆы‹Є" #: src/gpodder/gtkui/main.py:2704 msgid "Please select a podcast in the podcasts list to update." msgstr "ь—…ыАьДэŠИэ•  эŒŸьКьŠЄэŠИыЅМ эŒŸьКьŠЄэŠИ ыІЌьŠЄэŠИь—ь„œ ь„ эƒэ•˜ь„Иьš”" #: src/gpodder/gtkui/main.py:2774 #, python-format msgid "Download error while downloading %(episode)s: %(message)s" msgstr "%(episode)s ы‹ЄьšДыЁœы“œ ьЄ‘ ь—ыŸЌ %(message)s" #: src/gpodder/gtkui/main.py:2775 msgid "Download error" msgstr "ы‹ЄьšДыЁœы“œ ь—ыŸЌ" #: src/gpodder/gtkui/main.py:2818 msgid "Select the episodes you want to download:" msgstr "ы‹ЄьšДыЁœы“œ э•˜ы ЄыŠ” ь—э”Мь†Œы“œыЅМ ь„ эƒэ•˜ь„Иьš”" #: src/gpodder/gtkui/main.py:2841 msgid "Mark as old" msgstr "ьžЌьƒэ•œ ъВƒьœМыЁœ э‘œь‹œ" #: src/gpodder/gtkui/main.py:2848 msgid "Please check for new episodes later." msgstr "ьƒˆыЁœьšД ь—э”Мь†Œы“œыЅМ ьœ„э•Д ы‚˜ьЄ‘ь— э™•ьИ э•˜ь„Иьš”" #: src/gpodder/gtkui/main.py:2849 msgid "No new episodes available" msgstr "ьƒˆыЁœьšД ь—э”Мь†Œы“œъА€ ь—†ьŠЕы‹ˆы‹Є" #: src/gpodder/gtkui/main.py:2900 msgid "Login to gpodder.net" msgstr "gpodder.netь— ыЁœъЗИьИ" #: src/gpodder/gtkui/main.py:2901 msgid "Please login to download your subscriptions." msgstr "ъЕЌы…э•œ эŒŸьКьŠЄэŠИыЅМ ы‹ЄьšДыЁœы“œ э•˜ы ЄыЉД ыЁœъЗИьИэ•˜ь„Иьš”" #: src/gpodder/gtkui/main.py:2916 msgid "Subscriptions on gpodder.net" msgstr "gpodder.netь—ь„œ ъЕЌы…э•Љы‹ˆы‹Є" #: src/gpodder/gtkui/main.py:2935 msgid "Please select a podcast in the podcasts list to edit." msgstr "эŒŸьКьŠЄэŠИыІЌьŠЄэŠИь—ь„œ ьˆ˜ь •э•  эŒŸьКЃэŠИыЅМ ь„ эƒэ•˜ь„Иьš”" #: src/gpodder/gtkui/main.py:2949 msgid "Podcast" msgstr "эŒŸьКьŠЄэŠИ" #: src/gpodder/gtkui/main.py:2955 share/gpodder/ui/gtk/gpodder.ui.h:12 msgid "Remove podcasts" msgstr "эŒŸьКьŠЄэŠИ ь‚­ь œ" #: src/gpodder/gtkui/main.py:2956 msgid "Select the podcast you want to remove." msgstr "ь‚­ь œэ•  эŒŸьКьŠЄэŠИыЅМ ь„ эƒэ•˜ь„Иьš”" #: src/gpodder/gtkui/main.py:2960 #: src/gpodder/gtkui/desktop/episodeselector.py:105 msgid "Remove" msgstr "ь‚­ь œ" #: src/gpodder/gtkui/main.py:2969 msgid "Removing podcast" msgstr "эŒŸьКьŠЄэŠИ ь‚­ь œьЄ‘" #: src/gpodder/gtkui/main.py:2970 msgid "Please wait while the podcast is removed" msgstr "эŒŸьКьŠЄэŠИыЅМ ь‚­ь œэ•˜ъГ  ьžˆьŠЕы‹ˆы‹Є. ьž ь‹œ ъИАы‹Єы ЄьЃМь„Иьš”" #: src/gpodder/gtkui/main.py:2971 msgid "Do you really want to remove this podcast and its episodes?" msgstr "эŒŸьКьŠЄэŠИь™€ ь—э”Мь†Œы“œыЅМ ь‚­ь œэ•˜ь‹œъВ ьŠЕы‹ˆъЙŒ?" #: src/gpodder/gtkui/main.py:2973 msgid "Removing podcasts" msgstr "эŒŸьКьŠЄэŠИ ь‚­ь œьЄ‘" #: src/gpodder/gtkui/main.py:2974 msgid "Please wait while the podcasts are removed" msgstr "эŒŸьКьŠЄэŠИыЅМ ь‚­ь œэ•˜ъГ  ьžˆьŠЕы‹ˆы‹Є. ьž ь‹œыЇŒ ъИАы‹Єы ЄьЃМь„Иьš”" #: src/gpodder/gtkui/main.py:2975 msgid "Do you really want to remove the selected podcasts and their episodes?" msgstr "ь„ эƒэ•œ эŒŸьКьŠЄэŠИь™€ ь—э”Мь†Œы“œыЅМ ь‚­ь œэ•˜ь‹œъВ ьŠЕы‹ˆъЙŒ?" #: src/gpodder/gtkui/main.py:3035 msgid "Please select a podcast in the podcasts list to remove." msgstr "эŒŸьКьŠЄэŠИ ыІЌьŠЄэŠИь—ь„œ ь‚­ь œэ•  эŒŸьКьŠЄэŠИыЅМ ь„ эƒэ•˜ь„Иьš”." #: src/gpodder/gtkui/main.py:3045 msgid "OPML files" msgstr "OPML эŒŒьМ" #: src/gpodder/gtkui/main.py:3050 msgid "Import from OPML" msgstr "OPML эŒŒьМь—ь„œ ыЖˆыŸЌь˜ЄъИА" #: src/gpodder/gtkui/main.py:3064 msgid "Import podcasts from OPML file" msgstr "OPMLэŒŒьМь—ь„œ эŒŸьКьŠЄэŠИыЅМ ыЖˆыŸЌь˜ЄъИА" #: src/gpodder/gtkui/main.py:3071 msgid "Nothing to export" msgstr "ы‚ДыГДы‚М ъВƒьД ь—†ьŠЕы‹ˆы‹Є" #: src/gpodder/gtkui/main.py:3072 msgid "" "Your list of podcast subscriptions is empty. Please subscribe to some " "podcasts first before trying to export your subscription list." msgstr "" "ъЕЌы…э•˜ъГ  ьžˆыŠ” эŒŸьКьŠЄэŠИъА€ ь—†ьŠЕы‹ˆы‹Є. ъЕЌы… ыЊЉыЁь„ ь™ИыЖ€эŒŒьМь— ь €ьžЅэ•˜ъИА ь „ь— эŒŸьК" "ьŠЄэŠИыЅМ ъЕЌы…э•˜ь„Иьš”" #: src/gpodder/gtkui/main.py:3076 msgid "Export to OPML" msgstr "OPMLыЁœ ы‚ДыГДы‚ДъИА" #: src/gpodder/gtkui/main.py:3087 #, python-format msgid "%(count)d subscription exported" msgid_plural "%(count)d subscriptions exported" msgstr[0] "%(count)d ъАœ ъЕЌы…ыЊЉыЁь„ ы‚ДыГДыƒˆьŠЕы‹ˆы‹Є" #: src/gpodder/gtkui/main.py:3088 msgid "Your podcast list has been successfully exported." msgstr "эŒŸьКьŠЄэŠИ ыІЌьŠЄэŠИыЅМ ы‚ДыГДыƒˆьŠЕы‹ˆы‹Є" #: src/gpodder/gtkui/main.py:3090 msgid "Could not export OPML to file. Please check your permissions." msgstr "OPMLэŒŒьМь„ ы‚ДыГДы‚ДьЇ€ ыЊЛэ–ˆьŠЕы‹ˆы‹Є. ъЖŒэ•œь„ э™•ьИэ•ДьЃМь„Иьš”" #: src/gpodder/gtkui/main.py:3090 msgid "OPML export failed" msgstr "OPML ы‚ДыГДы‚ДъИА ь‹ЄэŒЈ" #: src/gpodder/gtkui/main.py:3117 msgid "No updates available" msgstr "ь—…ыАьДэŠИъА€ ь—†ьŠЕы‹ˆы‹Є" #: src/gpodder/gtkui/main.py:3118 msgid "You have the latest version of gPodder." msgstr "gPodder ьЕœь‹ ыВ„ь „ь„ ь‚ЌьšЉьЄ‘ьž…ы‹ˆы‹Є" #: src/gpodder/gtkui/main.py:3122 msgid "New version available" msgstr "ьƒˆ ыВ„ь „ьД ьžˆьŠЕы‹ˆы‹Є" #: src/gpodder/gtkui/main.py:3124 #, python-format msgid "Installed version: %s" msgstr "ь„Єьɘыœ ыВ„ь „ : %s" #: src/gpodder/gtkui/main.py:3125 #, python-format msgid "Newest version: %s" msgstr "ьЕœь‹ ыВ„ь „: %s" #: src/gpodder/gtkui/main.py:3126 #, python-format msgid "Release date: %s" msgstr "ыААэЌ ы‚ ьЇœ: %s" #: src/gpodder/gtkui/main.py:3128 msgid "Download the latest version from gpodder.org?" msgstr "gpodder.orgь—ь„œ ьЕœь‹ ыВ„ь „ь„ ы‹ЄьšДыЁœы“œэ•˜ъВ ьŠЕы‹ˆъЙŒ?" #: src/gpodder/gtkui/main.py:3141 msgid "About gPodder" msgstr "gPodderь— ыŒ€э•Дь„œ" #: src/gpodder/gtkui/main.py:3424 msgid "Please register a YouTube API key and set it in the preferences." msgstr "ьœ эŠœыИŒ APIэ‚ЄыЅМ ы“БыЁэ•˜ъГ , ь„Єь •ь— ьЖ”ъА€э•ДьЃМь„Иьš”" #: src/gpodder/gtkui/main.py:3425 msgid "Would you like to set up an API key now?" msgstr "APIэ‚ЄыЅМ ьЇ€ъИˆ ь„Єь •э• ъЙŒьš”?" #: src/gpodder/gtkui/main.py:3425 msgid "API key required" msgstr "APIэ‚ЄъА€ э•„ьš”э•Љы‹ˆы‹Є" #: src/gpodder/gtkui/main.py:3444 bin/gpo:631 msgid "No unique URL found" msgstr "URLьД ь—†ьŠЕы‹ˆы‹Є" #: src/gpodder/gtkui/main.py:3449 bin/gpo:637 msgid "Already subscribed" msgstr "ьДыЏИ ъЕЌы…ьЄ‘" #: src/gpodder/gtkui/main.py:3458 bin/gpo:649 #, python-format msgid "Make sure the API key is correct. Error: %(message)s" msgstr "APIэ‚ЄъА€ ь˜ЌыА”ыЅИ э‚ЄьИьЇ€ э™•ьИэ•ДьЃМь„Иьš”. ь—ыŸЌ: %(message)s" #: src/gpodder/gtkui/main.py:3459 msgid "Error getting YouTube channels" msgstr "ьœ эŠœыИŒ ьБ„ы„ь„ ыЖˆыŸЌь˜ЄъИА ь—ыŸЌ" #: src/gpodder/gtkui/main.py:3462 msgid "Successfully migrated subscriptions" msgstr "ъЕЌыЊЉыЊЉыЁь„ ьДь „э–ˆьŠЕы‹ˆы‹Є" #: src/gpodder/gtkui/main.py:3464 msgid "Subscriptions are up to date" msgstr "ъЕЌы…ыЊЉыЁьД ь—…ыАьДэŠИ ы˜ь—ˆьŠЕы‹ˆы‹Є" #: src/gpodder/gtkui/main.py:3467 msgid "These URLs failed:" msgstr "URLы“ЄьД ь‹ЄэŒЈэ•Ј" #: src/gpodder/gtkui/main.py:3469 msgid "Could not migrate some subscriptions" msgstr "ыЊ‡ыЊ‡ ъЕЌы…ыЊЉыЁь„ ьДь „э•˜ьЇ€ ыЊЛэ–ˆьŠЕы‹ˆы‹Є" #: src/gpodder/gtkui/main.py:3493 msgid "Cannot start gPodder" msgstr "gPodderыЅМ ь‹œьž‘э•  ьˆ˜ ь—†ьŠЕы‹ˆы‹Є" #: src/gpodder/gtkui/main.py:3494 #, python-format msgid "D-Bus error: %s" msgstr "D-Bus ь—ыŸЌ: %s" #: src/gpodder/gtkui/model.py:68 #, python-format msgid "released %s" msgstr "ыААэЌ %s" #: src/gpodder/gtkui/model.py:69 src/gpodder/gtkui/model.py:87 #: src/gpodder/gtkui/model.py:237 src/gpodder/gtkui/shownotes.py:84 #, python-format msgid "from %s" msgstr "%s ь—ь„œ" #: src/gpodder/gtkui/model.py:80 src/gpodder/gtkui/model.py:393 msgid "played" msgstr "ьžЌьƒыЈ" #: src/gpodder/gtkui/model.py:82 msgid "unplayed" msgstr "ьžЌьƒь „" #: src/gpodder/gtkui/model.py:85 msgid "today" msgstr "ь˜ЄыŠ˜" #: src/gpodder/gtkui/model.py:86 #, python-format msgid "downloaded %s" msgstr "ы‹ЄьšДыЁœы“œыЈ %s" #: src/gpodder/gtkui/model.py:337 msgid "Deleted" msgstr "ь‚­ь œ" #: src/gpodder/gtkui/model.py:342 msgid "New episode" msgstr "ьƒˆыЁœьšД ь—э”Мь†Œы“œ" #: src/gpodder/gtkui/model.py:356 msgid "Downloaded episode" msgstr "ы‹ЄьšДыЁœы“œэ•œ ь—э”Мь†Œы“œ" #: src/gpodder/gtkui/model.py:359 msgid "Downloaded video episode" msgstr "ы‹ЄьšДыЁœы“œэ•œ ыЙ„ы””ь˜Є ь—э”Мь†Œы“œ" #: src/gpodder/gtkui/model.py:362 msgid "Downloaded image" msgstr "ы‹ЄьšДыЁœы“œэ•œ ьДыЏИьЇ€" #: src/gpodder/gtkui/model.py:365 msgid "Downloaded file" msgstr "ы‹ЄьšДыЁœы“œэ•œ эŒŒьМ" #: src/gpodder/gtkui/model.py:380 msgid "missing file" msgstr "ьАОь„ ьˆ˜ ь—†ыŠ” эŒŒьМ" #: src/gpodder/gtkui/model.py:384 msgid "never displayed" msgstr "ы””ьŠЄэ”Œы ˆьД э•˜ъИА ь „" #: src/gpodder/gtkui/model.py:386 msgid "never played" msgstr "ьžЌьƒэ•˜ъИА ь „" #: src/gpodder/gtkui/model.py:388 msgid "never opened" msgstr "ь—ДыІЌъИА ь „" #: src/gpodder/gtkui/model.py:391 msgid "displayed" msgstr "ы””ьŠЄэ”Œы ˆьДыЈ" #: src/gpodder/gtkui/model.py:395 msgid "opened" msgstr "ь—ДыІМ" #: src/gpodder/gtkui/model.py:397 msgid "deletion prevented" msgstr "ь‚­ь œ ыАЉьЇ€ыЈ" #: src/gpodder/gtkui/model.py:432 share/gpodder/ui/gtk/gpodder.ui.h:32 msgid "All episodes" msgstr "ыЊЈы“  ь—э”Мь†Œы“œ" #: src/gpodder/gtkui/model.py:433 msgid "from all podcasts" msgstr "ыЊЈы“  эŒŸьКьŠЄэŠИь—ь„œ" #: src/gpodder/gtkui/model.py:625 msgid "Subscription paused" msgstr "ъЕЌы… ьЄ‘ьЇ€ыЈ" #: src/gpodder/gtkui/shownotes.py:118 msgid "Please select an episode" msgstr "ь—э”Мь†Œы“œыЅМ ь„ эƒэ•˜ь„Иьš”" #: src/gpodder/gtkui/interface/addpodcast.py:74 msgid "Nothing to paste." msgstr "ыЖ™ь—Ќы„ЃъИА э•  ы‚ДьšЉ ь—†ьŒ" #: src/gpodder/gtkui/interface/addpodcast.py:74 msgid "Clipboard is empty" msgstr "эДыІНыГДы“œъА€ ыЙ„ь—ˆьŠЕы‹ˆы‹Є" #: src/gpodder/gtkui/interface/common.py:160 msgid "Username" msgstr "ь‚ЌьšЉьž ьДыІ„" #: src/gpodder/gtkui/interface/common.py:163 msgid "New user" msgstr "ьƒˆ ьœ ь €" #: src/gpodder/gtkui/interface/common.py:170 msgid "Login" msgstr "ыЁœъЗИьИ" #: src/gpodder/gtkui/interface/common.py:172 msgid "Authentication required" msgstr "ьИьІьД э•„ьš”э•Љы‹ˆы‹Є" #: src/gpodder/gtkui/interface/common.py:203 msgid "Password" msgstr "ь•”э˜И" #: src/gpodder/gtkui/interface/common.py:225 msgid "Select destination" msgstr "ыŒ€ьƒь„ ь„ эƒэ•˜ь„Иьš”" #: src/gpodder/gtkui/interface/configeditor.py:34 msgid "Setting" msgstr "ь…‹эŒ…" #: src/gpodder/gtkui/interface/configeditor.py:41 msgid "Set to" msgstr "Set to" #: src/gpodder/gtkui/interface/configeditor.py:81 #, python-format msgid "Cannot set %(field)s to %(value)s. Needed data type: %(datatype)s" msgstr "" "%(field)s э•„ы“œь— %(value)s ъА’ь„ ь €ьžЅэ•  ьˆ˜ ь—†ьŠЕы‹ˆы‹Є. ыАьДэ„А эƒ€ьž… э•„ьš”: " "%(datatype)s" #: src/gpodder/gtkui/interface/configeditor.py:85 msgid "Error setting option" msgstr "ь…‹эŒ… ь˜Еь…˜ ь—ыŸЌ" #: src/gpodder/gtkui/desktop/channel.py:100 msgid "Add section" msgstr "ь„Йь…˜ ьЖ”ъА€" #: src/gpodder/gtkui/desktop/channel.py:100 msgid "New section:" msgstr "ьƒˆ ь„Йь…˜:" #: src/gpodder/gtkui/desktop/channel.py:133 msgid "Select new podcast cover artwork" msgstr "ьƒˆ эŒŸьКьŠЄэŠИ ьЛЄыВ„ ь•„эŠИь›ь„ ь„ эƒэ•˜ь„Иьš”" #: src/gpodder/gtkui/desktop/channel.py:161 msgid "You can only drop a single image or URL here." msgstr "ьДыЏИьЇ€ ы˜ыŠ” URLь„ э•œъАœыЇŒ ы†“ь„ ьˆ˜ ьžˆьŠЕы‹ˆы‹Є" #: src/gpodder/gtkui/desktop/channel.py:161 #: src/gpodder/gtkui/desktop/channel.py:171 msgid "Drag and drop" msgstr "ы“œыž˜ъЗИ ь•Є ы“œыž" #: src/gpodder/gtkui/desktop/channel.py:171 msgid "You can only drop local files and http:// URLs here." msgstr "ыЁœьЛЌ эŒŒьМ ъГМ URLь„ э•œъАœыЇŒ ы†“ь„ ьˆ˜ ьžˆьŠЕы‹ˆы‹Є" #: src/gpodder/gtkui/desktop/deviceplaylist.py:98 #, python-format msgid "Folder %s could not be created." msgstr "%s эДы”ыЅМ ыЇŒы“Є ьˆ˜ ь—†ьŠЕы‹ˆы‹Є" #: src/gpodder/gtkui/desktop/deviceplaylist.py:98 msgid "Error writing playlist" msgstr "э”Œы ˆьД ыІЌьŠЄэŠИ ь €ьžЅ ь—ыŸЌ" #: src/gpodder/gtkui/desktop/episodeselector.py:288 #: share/gpodder/ui/gtk/gpodderepisodeselector.ui.h:2 msgid "Select all" msgstr "ь „ыЖ€ ь„ эƒ" #: src/gpodder/gtkui/desktop/episodeselector.py:292 #: share/gpodder/ui/gtk/gpodderepisodeselector.ui.h:3 msgid "Select none" msgstr "ыЊЈы‘ ь„ эƒ э•Дь œ" #: src/gpodder/gtkui/desktop/episodeselector.py:324 msgid "Nothing selected" msgstr "ь„ эƒыœ ъВƒ ь—†ьŒ" #: src/gpodder/gtkui/desktop/episodeselector.py:325 #, python-format msgid "%(count)d episode" msgid_plural "%(count)d episodes" msgstr[0] "%(count)d ъАœь˜ ь—э”Мь†Œы“œ" #: src/gpodder/gtkui/desktop/episodeselector.py:327 #, python-format msgid "size: %s" msgstr "эЌъИА: %s" #: src/gpodder/gtkui/desktop/podcastdirectory.py:238 msgid "Loading podcasts" msgstr "эŒŸьКьŠЄэŠИ ыЁœы”Љ" #: src/gpodder/gtkui/desktop/podcastdirectory.py:239 msgid "Please wait while the podcast list is downloaded" msgstr "эŒŸьКьŠЄэŠИ ыІЌьŠЄэŠИыЅМ ы‹ЄьšДыЁœы“œ э•˜ъГ  ьžˆьŠЕы‹ˆы‹Є. ьž ь‹œыЇŒ ъИАы‹Єы ЄьЃМь„Иьš”" #: src/gpodder/gtkui/desktop/preferences.py:51 #: src/gpodder/gtkui/desktop/preferences.py:93 msgid "Do nothing" msgstr "ь•„ыЌДъВƒы„ э•˜ьЇ€ ь•ŠъИА" #: src/gpodder/gtkui/desktop/preferences.py:52 msgid "Show episode list" msgstr "ь—э”Мь†Œы“œ ыІЌьŠЄэŠИ э‘œь‹œ" #: src/gpodder/gtkui/desktop/preferences.py:53 msgid "Add to download list" msgstr "ы‹ЄьšДыЁœы“œ ыІЌьŠЄэŠИь— ьЖ”ъА€" #: src/gpodder/gtkui/desktop/preferences.py:54 msgid "Download immediately" msgstr "ьІ‰ь‹œ ы‹ЄьšДыЁœы“œ" #: src/gpodder/gtkui/desktop/preferences.py:72 msgid "None" msgstr "ь—†ьŒ" #: src/gpodder/gtkui/desktop/preferences.py:73 msgid "iPod" msgstr "ь•„ьДэŒŸ" #: src/gpodder/gtkui/desktop/preferences.py:74 msgid "Filesystem-based" msgstr "эŒŒьМь‹œьŠЄэ…œ ъИАыА˜" #: src/gpodder/gtkui/desktop/preferences.py:94 msgid "Mark as played" msgstr "ьžЌьƒэ•œ ъВƒьœМыЁœ э‘œь‹œ" #: src/gpodder/gtkui/desktop/preferences.py:95 msgid "Delete from gPodder" msgstr "gPodderь—ь„œ ь‚­ь œ" #: src/gpodder/gtkui/desktop/preferences.py:123 #, python-format msgid "Custom (%(format_ids)s)" msgstr "ьЛЄьŠЄэ…€ (%(format_ids)s)" #: src/gpodder/gtkui/desktop/preferences.py:318 msgid "Name" msgstr "ьДыІ„" #: src/gpodder/gtkui/desktop/preferences.py:369 msgid "Documentation" msgstr "ыЌИь„œэ™”" #: src/gpodder/gtkui/desktop/preferences.py:374 msgid "Extension info" msgstr "э™•ьžЅ ь •ыГД" #: src/gpodder/gtkui/desktop/preferences.py:379 msgid "Support the author" msgstr "ь €ьžыЅМ э›„ь›э•˜ъИА" #: src/gpodder/gtkui/desktop/preferences.py:413 msgid "Extension cannot be activated" msgstr "э™•ьžЅъИАыŠЅь„ ь‚ЌьšЉэ•  ьˆ˜ ь—†ьŠЕы‹ˆы‹Є" #: src/gpodder/gtkui/desktop/preferences.py:426 msgid "Extension module info" msgstr "э™•ьžЅ ыЊЈы“ˆ ь •ыГД" #: src/gpodder/gtkui/desktop/preferences.py:463 msgid "Configure audio player" msgstr "ь˜Єы””ь˜Є э”Œы ˆьДь–Д ь„Єь •" #: src/gpodder/gtkui/desktop/preferences.py:464 #: src/gpodder/gtkui/desktop/preferences.py:474 msgid "Command:" msgstr "ыЊ…ы ь–Д:" #: src/gpodder/gtkui/desktop/preferences.py:473 msgid "Configure video player" msgstr "ыЙ„ы””ь˜Є э”Œы ˆьДь–Д ь„Єь •" #: src/gpodder/gtkui/desktop/preferences.py:485 #: src/gpodder/gtkui/desktop/preferences.py:503 msgid "manually" msgstr "ьˆ˜ы™ьœМыЁœ" #: src/gpodder/gtkui/desktop/preferences.py:505 #, python-format msgid "after %(count)d day" msgid_plural "after %(count)d days" msgstr[0] "%(count)d ьМ э›„ь—" #: src/gpodder/gtkui/desktop/preferences.py:541 msgid "Replace subscription list on server" msgstr "ь„œыВ„ь— ьžˆыŠ” ъЕЌы…ыЊЉыЁъГМ ъЕьВДэ•Љы‹ˆы‹Є" #: src/gpodder/gtkui/desktop/preferences.py:542 msgid "" "Remote podcasts that have not been added locally will be removed on the " "server. Continue?" msgstr "" "ь„œыВ„ь— ь €ьžЅы˜ь–Д ьžˆыŠ” эŒŸьКьŠЄэŠИ(ьД ьЛДэ“Јэ„Аь— ь €ьžЅы˜ь–Д ьžˆьЇ€ ь•ŠьŒ)ыЅМ ь‚­ь œ э•˜ь‹œъВ ьŠЕ" "ы‹ˆъЙŒ?" #: src/gpodder/gtkui/desktop/preferences.py:621 msgid "Select folder for mount point" msgstr "ыЇˆьšДэŠИ эЌьИэŠИыЁœ ь‚ЌьšЉэ•  эДы”ыЅМ ь„ эƒэ•˜ь„Иьš”" #: src/gpodder/gtkui/desktop/preferences.py:638 msgid "Select folder for playlists" msgstr "э”Œы ˆьДыІЌьŠЄэŠИыЅМ ьœ„э•œ эДы”ыЅМ ь„ эƒэ•˜ь„Иьš”" #: src/gpodder/gtkui/desktop/sync.py:86 msgid "No device configured" msgstr "ь„Єь •ыœ ы””ыА”ьДьŠЄъА€ ь—†ьŠЕы‹ˆы‹Є" #: src/gpodder/gtkui/desktop/sync.py:87 msgid "Please set up your device in the preferences dialog." msgstr "э™˜ъВНь„Єь • ы‹ЄьДь–МыЁœъЗИь—ь„œ ы””ыА”ьДьŠЄыЅМ ь…‹ь—…э•˜ь„Иьš”" #: src/gpodder/gtkui/desktop/sync.py:91 msgid "Cannot open device" msgstr "ы””ыА”ьДьŠЄыЅМ ь—Д ьˆ˜ ь—†ьŠЕы‹ˆы‹Є" #: src/gpodder/gtkui/desktop/sync.py:92 msgid "Please check the settings in the preferences dialog." msgstr "э™˜ъВНь„Єь • ы‹ЄьДь–МыЁœъЗИыЅМ э™•ьИэ•˜ь„Иьš”" #: src/gpodder/gtkui/desktop/sync.py:139 msgid "Not enough space left on device" msgstr "ы””ыА”ьДьŠЄь— ъГЕъА„ьД ыЖ€ьЁБэ•Љы‹ˆы‹Є" #: src/gpodder/gtkui/desktop/sync.py:140 #, python-format msgid "" "Additional free space required: %(required_space)s\n" "Do you want to continue?" msgstr "" "ь €ьžЅ ъГЕъА„ьД %(required_space)s ыЇŒэМ э•„ьš”э•Љы‹ˆы‹Є\n" "ъГ„ь†э•˜ь‹œъВ ьŠЕы‹ˆъЙŒ?" #: src/gpodder/gtkui/desktop/sync.py:199 msgid "Update successful" msgstr "ь—…ыАьДэŠИэ–ˆьŠЕы‹ˆы‹Є" #: src/gpodder/gtkui/desktop/sync.py:200 msgid "The playlist on your MP3 player has been updated." msgstr "MP3 э”Œы ˆьДь–Дь— ьžˆыŠ” э”Œы ˆьДыІЌьŠЄэŠИыЅМ ь—…ыАьДэŠИ э–ˆьŠЕы‹ˆы‹Є" #: src/gpodder/gtkui/desktop/sync.py:274 msgid "Episodes have been deleted on device" msgstr "ы””ыА”ь—ьŠЄь— ьžˆыŠ” ь—э”Мь†Œы“œыЅМ ь‚­ь œэ–ˆьŠЕы‹ˆы‹Є" #: src/gpodder/gtkui/desktop/sync.py:285 msgid "Error writing playlist files" msgstr "э”Œы ˆьДыІЌьŠЄэŠИ ь €ьžЅьЄ‘ ь—ыŸЌ" #: src/gpodder/plugins/soundcloud.py:154 msgid "Unknown track" msgstr "ь•Œьˆ˜ ь—†ыŠ” эŠИыž™" #: src/gpodder/plugins/soundcloud.py:181 #, python-format msgid "%s on Soundcloud" msgstr "Soundcloudь—ь„œ %s " #: src/gpodder/plugins/soundcloud.py:190 #, python-format msgid "Tracks published by %s on Soundcloud." msgstr "эŠИыž™ь€ %s ъА€ ь‚ЌьšДы“œ эДыМьšАы“œь—ь„œ ъВŒьžЌэ–ˆьŠЕы‹ˆы‹Є" #: src/gpodder/plugins/soundcloud.py:217 #, python-format msgid "%s's favorites on Soundcloud" msgstr "%sь˜ Soundcloudь— ьžˆыŠ” ьІъВЈьАОъИА" #: src/gpodder/plugins/soundcloud.py:223 #, python-format msgid "Tracks favorited by %s on Soundcloud." msgstr "%sьД Soundcloudь—ь„œ ьІъВЈьАОыŠ” эŠИыž™" #: share/gpodder/extensions/audio_converter.py:20 msgid "Convert audio files" msgstr "ь˜Єы””ь˜Є эŒŒьМ ыГ€э™˜" #: share/gpodder/extensions/audio_converter.py:21 msgid "Transcode audio files to mp3/ogg" msgstr "ь˜Єы””ь˜Є эŒŒьМь„ mp3/oggыЁœ ыГ€э™˜" #: share/gpodder/extensions/audio_converter.py:84 #: share/gpodder/extensions/video_converter.py:86 #, python-format msgid "Convert to %(format)s" msgstr "%(format)sьœМыЁœ ыГ€э™˜" #: share/gpodder/extensions/audio_converter.py:111 #: share/gpodder/extensions/rockbox_convert2mp4.py:65 #: share/gpodder/extensions/video_converter.py:111 msgid "File converted" msgstr "эŒŒьМ ыГ€э™˜ыЈ" #: share/gpodder/extensions/audio_converter.py:114 #: share/gpodder/extensions/video_converter.py:114 msgid "Conversion failed" msgstr "ыГ€э™˜ ь‹ЄэŒЈ" #: share/gpodder/extensions/concatenate_videos.py:20 #: share/gpodder/extensions/concatenate_videos.py:100 msgid "Concatenate videos" msgstr "ъД€ы ЈьžˆыŠ” ыЙ„ы””ь˜Є" #: share/gpodder/extensions/concatenate_videos.py:21 msgid "Add a context menu item for concatenating multiple videos" msgstr "ь—ЌыŸЌъАœь˜ ыЙ„ы””ь˜ЄыЅМ ь—АъВАэ•˜ъИА ьœ„э•œ, ьЛЈэ…ьŠЄэŠИ ыЉ”ы‰Д ь•„ьДэ…œ ьЖ”ъА€" #: share/gpodder/extensions/concatenate_videos.py:37 msgid "Save video" msgstr "ыЙ„ы””ь˜Є ь €ьžЅ" #: share/gpodder/extensions/concatenate_videos.py:66 msgid "Concatenating video files" msgstr "ь—АъВАыœ ыЙ„ы””ь˜Є эŒŒьМ" #: share/gpodder/extensions/concatenate_videos.py:67 #, python-format msgid "Writing %(filename)s" msgstr "%(filename)s ь €ьžЅьЄ‘" #: share/gpodder/extensions/concatenate_videos.py:78 msgid "Videos successfully converted" msgstr "ыЙ„ы””ь˜Є эŒŒьМь„ ыГ€э™˜э–ˆьŠЕы‹ˆы‹Є" #: share/gpodder/extensions/concatenate_videos.py:79 msgid "Error converting videos" msgstr "ыЙ„ы””ь˜Є ыГ€э™˜ ь—ыŸЌ" #: share/gpodder/extensions/concatenate_videos.py:80 msgid "Concatenation result" msgstr "ь—АъВА ъВАъГМ" #: share/gpodder/extensions/enqueue_in_mediaplayer.py:16 msgid "Enqueue in media players" msgstr "ыЏИы””ь–Д э”Œы ˆьДь–Дь˜ ыŒ€ъИАь—Дь— ьЖ”ъА€э•Ј" #: share/gpodder/extensions/enqueue_in_mediaplayer.py:17 msgid "" "Add a context menu item for enqueueing episodes in installed media players" msgstr "" "ыЏИы””ь–Д э”Œы ˆьДь–Дь˜ ыŒ€ъИАь—Дь— ь—э”Мь†Œы“œыЅМ ьЖ”ъА€э•˜ъИА ьœ„э•œ ьЛЈэ…ьŠЄэŠИ ыЉ”ы‰Д ь•„ьДэ…œ ьЖ”ъА€" #: share/gpodder/extensions/enqueue_in_mediaplayer.py:35 msgid "Enqueue in" msgstr "ыŒ€ъИАь—Дь— ьЖ”ъА€" #: share/gpodder/extensions/episode_website_context_menu.py:14 msgid "\"Open website\" episode context menu" msgstr "ь—э”Мь†Œы“œ ьЛЈэ…ьŠЄэŠИ ыЉ”ы‰Дь—ь„œ \"ь›Йь‚ЌьДэŠИ ь—ДъИА\"" #: share/gpodder/extensions/episode_website_context_menu.py:15 msgid "Add a context menu item for opening the website of an episode" msgstr "ь—э”Мь†Œы“œь˜ ь›Йь‚ЌьДэŠИыЅМ ь—ДъИА ьœ„э•Дь„œ, ьЛЈэ…ьŠЄэŠИ ыЉ”ы‰Д ь•„ьДэ…œ ьЖ”ъА€" #: share/gpodder/extensions/episode_website_context_menu.py:30 msgid "Open website" msgstr "ь›Йь‚ЌьДэŠИ ь—ДъИА" #: share/gpodder/extensions/gtk_statusicon.py:14 msgid "Gtk Status Icon" msgstr "Gtk ьƒэƒœ ь•„ьДь͘" #: share/gpodder/extensions/gtk_statusicon.py:15 msgid "Show a status icon for Gtk-based Desktops." msgstr " Gtk ъИАыА˜ь˜ ыАьŠЄэЌэƒ‘ь„ ьœ„э•Дь„œ, ьƒэƒœыЉ”ы‰Д ыГДьДъИА" #: share/gpodder/extensions/minimize_on_start.py:10 msgid "Minimize on start" msgstr "ьЕœь†Œэ™”ыœ ьƒэƒœыЁœ ь‹Єэ–‰э•Ј" #: share/gpodder/extensions/minimize_on_start.py:11 msgid "Minimizes the gPodder window on startup." msgstr "ьœˆы„ьšА ыЖ€эŒ…э•  ы•Œ, gPodder ьœˆы„ьšАыЅМ ьЕœь†Œэ™”э•œ ьƒэƒœыЁœ ь‹Єэ–‰э•Ј" #: share/gpodder/extensions/mpris-listener.py:33 msgid "MPRIS Listener" msgstr "MPRIS Listener" #: share/gpodder/extensions/mpris-listener.py:34 msgid "Convert MPRIS notifications to gPodder Media Player D-Bus API" msgstr "MPRIS ь•ŒыІМь„ gPodder ыЏИы””ь–Д э”Œы ˆьДь–Д D-Bus APIыЁœ ыГ€э™˜" #: share/gpodder/extensions/normalize_audio.py:21 msgid "Normalize audio with re-encoding" msgstr "ьžЌ ьИьН”ы”Љь„ э•Дь„œ ыГМыЅЈь„ ьžЌьЁАь •э•Ј" #: share/gpodder/extensions/normalize_audio.py:22 msgid "Normalize the volume of audio files with normalize-audio" msgstr "ьžЌьЁАь •ыœ ь˜Єы””ь˜ЄыЁœыЅМ ь‚ЌьšЉэ•Дь„œ, ь˜Єы””ь˜Є эŒŒьМь˜ ыГМыЅЈь„ ьžЌьЁАь •э•Ј" #: share/gpodder/extensions/normalize_audio.py:99 msgid "File normalized" msgstr "эŒŒьМ ыГМыЅЈ ьžЌьЁАь •ыЈ" #: share/gpodder/extensions/rename_download.py:16 msgid "Rename episodes after download" msgstr "ы‹ЄьšДыЁœы“œэ•œы’Є ь—э”Мь†Œы“œ ьДыІ„ ыГ€ъВН" #: share/gpodder/extensions/rename_download.py:17 msgid "Rename episodes to \".\" on download" msgstr "ы‹ЄьšДыЁœы“œэ›„ь— ь—э”Мь†Œы“œ ьДыІ„ь„ \".\"ыЁœ ыГ€ъВН" #: share/gpodder/extensions/rm_ogg_cover.py:37 msgid "Remove cover art from OGG files" msgstr "OGG эŒŒьМь—ь„œ ьЛЄыВ„ь•„эŠИ ь‚­ь œ" #: share/gpodder/extensions/rm_ogg_cover.py:38 msgid "removes coverart from all downloaded ogg files" msgstr "ы‹ЄьšДыЁœы“œэ•œ ыЊЈы“  ogg эŒŒьМь—ь„œ ьЛЄыВ„ь•„эŠИыЅМ ыЊЈы‘ ь‚­ь œ" #: share/gpodder/extensions/rm_ogg_cover.py:66 msgid "Remove cover art" msgstr "ьЛЄыВ„ь•„эŠИ ь‚­ь œ" #: share/gpodder/extensions/rockbox_convert2mp4.py:26 msgid "Convert video files to MP4 for Rockbox" msgstr "RockboxьšЉ mp4 эŒŒьМыЁœ ыЙ„ы””ь˜Є эŒŒьМь„ ыГ€э™˜" #: share/gpodder/extensions/rockbox_convert2mp4.py:27 msgid "Converts all videos to a Rockbox-compatible format" msgstr "ыЊЈы“  ыЙ„ы””ь˜Є эŒŒьМь„ Rockbox ь—ь„œ ьžЌьƒъА€ыŠЅэ•œ эЌыЇЗьœМыЁœ ыГ€э™˜" #: share/gpodder/extensions/sonos.py:19 share/gpodder/extensions/sonos.py:78 msgid "Stream to Sonos" msgstr "Sonosь—ь„œ ьžЌьƒ" #: share/gpodder/extensions/sonos.py:20 msgid "Stream podcasts to Sonos speakers" msgstr "эŒŸьКьŠЄэŠИыЅМ Sonos ьŠЄэ”МьЛЄь—ь„œ ьžЌьƒ" #: share/gpodder/extensions/tagging.py:45 msgid "Tag downloaded files using Mutagen" msgstr "MutagenьœМыЁœ ы‹ЄьšДыЁœы“œ эŒŒьМ эƒœъЗИэ•Ј" #: share/gpodder/extensions/tagging.py:46 msgid "Add episode and podcast titles to MP3/OGG tags" msgstr "ь—э”Мь†Œы“œь™€ эŒŸьКьŠЄэŠИ ь œыЊЉь„ MP3/OGG эƒœъЗИь— ьЖ”ъА€" #: share/gpodder/extensions/taskbar_progress.py:28 msgid "Show download progress on the taskbar" msgstr "эƒœьŠЄэЌыА”ь— ы‹ЄьšДыЁœы“œ ьЇ„э–‰ьƒэ™Љ э‘œь‹œ" #: share/gpodder/extensions/taskbar_progress.py:29 msgid "Displays the progress on the Windows taskbar." msgstr "ьœˆы„ьšА эƒœьŠЄыА”ь— ьЇ„э–‰ьƒэ™Љ э‘œь‹œ" #: share/gpodder/extensions/ted_subtitles.py:16 msgid "Subtitle Downloader for TED Talks" msgstr "TED Talks ыЙ„ы””ь˜Єь„ ьœ„э•œ ьžыЇ‰ ы‹ЄьšДыЁœы”" #: share/gpodder/extensions/ted_subtitles.py:17 msgid "Downloads .srt subtitles for TED Talks Videos" msgstr "TED Talks ыЙ„ы””ь˜Єь˜ .srt ьžыЇ‰ ы‹ЄьšДыЁœы“œ" #: share/gpodder/extensions/ubuntu_appindicator.py:10 msgid "Ubuntu App Indicator" msgstr "ьšАыЖ„эˆЌ ь•Б ьИы””ьМ€ьДэ„А" #: share/gpodder/extensions/ubuntu_appindicator.py:11 msgid "Show a status indicator in the top bar." msgstr "эƒ‘ыА”ь— ьƒэƒœ ьИы””ьМ€ьДэ„А э‘œь‹œ" #: share/gpodder/extensions/ubuntu_appindicator.py:47 msgid "Show main window" msgstr "ыЉ”ьИьœˆы„ьšА э‘œь‹œ" #: share/gpodder/extensions/ubuntu_appindicator.py:57 #: share/gpodder/ui/gtk/gpodder.ui.h:6 msgid "Quit" msgstr "ьЂ…ыЃŒ" #: share/gpodder/extensions/ubuntu_unity.py:10 msgid "Ubuntu Unity Integration" msgstr "ьšАыЖ„эˆЌ ьœ ы‹ˆэ‹А э†Еэ•Љ" #: share/gpodder/extensions/ubuntu_unity.py:11 msgid "Show download progress in the Unity Launcher icon." msgstr "ьœ ы‹ˆэ‹А ыŸАь˜ ь•„ьДь͘ь— ы‹ЄьšДыЁœы“œ ьЇ„э–‰ьƒэ™Љ э‘œь‹œ" #: share/gpodder/extensions/update_feeds_on_startup.py:14 msgid "Search for new episodes on startup" msgstr "ь‹Єэ–‰э•  ы•Œ ыЇˆы‹Є, ьƒˆыЁœьšД ь—э”Мь†Œы“œ э™•ьИ" #: share/gpodder/extensions/update_feeds_on_startup.py:15 msgid "Starts the search for new episodes on startup" msgstr "ь‹Єэ–‰э•  ы•Œ ыЇˆы‹Є, ьƒˆыЁœьšД ь—э”Мь†Œы“œ э™•ьИ" #: share/gpodder/extensions/video_converter.py:22 msgid "Convert video files" msgstr "ыЙ„ы””ь˜Є эŒŒьМ ыГ€э™˜" #: share/gpodder/extensions/video_converter.py:23 msgid "Transcode video files to avi/mp4/m4v" msgstr "ыЙ„ы””ь˜Є эŒŒьМь„ avi/mp4/m4vыЁœ ыГ€э™˜" #: share/gpodder/ui/gtk/gpodderaddpodcast.ui.h:1 msgid "Add a new podcast" msgstr "ьƒˆыЁœьšД эŒŸьКьŠЄэŠИ ьЖ”ъА€" #: share/gpodder/ui/gtk/gpodderaddpodcast.ui.h:2 msgid "URL:" msgstr "URL:" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:1 msgid "gPodder Podcast Editor" msgstr "gPodder эŒŸьКьŠЄэŠИ ь—ы””э„А" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:2 msgid "Section:" msgstr "ь„Йь…˜:" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:3 msgid "Disable feed updates (pause subscription)" msgstr "э”Мы“œ ь—…ыАьДэŠИ ьЄ‘ьЇ€ (ъЕЌы…ь„ ьž ь‹œ ыЉˆьЖЄ)" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:4 msgid "Synchronize to MP3 player devices" msgstr "MP3 э”Œы ˆьДь–Д ы””ыА”ьДьŠЄь™€ ы™ъИАэ™”" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:5 msgid "Strategy:" msgstr "ъГ„эš:" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:6 #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:6 msgid "General" msgstr "ьМыА˜ь ьИ" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:7 msgid "HTTP/FTP Authentication" msgstr "HTTP/FTP ьИьІ" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:8 #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:13 msgid "Username:" msgstr "ь‚ЌьšЉьž ьДыІ„:" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:9 #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:14 msgid "Password:" msgstr "ь•”э˜И:" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:10 msgid "Locations" msgstr "ьœ„ьɘ" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:11 msgid "Download to:" msgstr "ы‹ЄьšДыЁœы“œ ьžЅь†Œ:" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:12 msgid "Website:" msgstr "ь›Йь‚ЌьДэŠИ:" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:13 msgid "website label" msgstr "ь›Йь‚ЌьДэŠИ ыМыВЈ" # ыЌИыЇЅь„ ь•Œьˆ˜ъА€ ь—†ь–Дь„œ, ъЗИыƒЅ ь˜ь–ДыЁœ ы‘  #: share/gpodder/ui/gtk/gpodderchannel.ui.h:14 msgid "Advanced" msgstr "Advanced" #: share/gpodder/ui/gtk/gpodderconfigeditor.ui.h:1 msgid "gPodder Configuration Editor" msgstr "gPodder ь„Єь • ь—ы””э„А" #: share/gpodder/ui/gtk/gpodderconfigeditor.ui.h:2 msgid "Search for:" msgstr "ъВ€ьƒ‰:" #: share/gpodder/ui/gtk/gpodderconfigeditor.ui.h:3 msgid "Show All" msgstr "ыЊЈы‘ э‘œь‹œ" #: share/gpodder/ui/gtk/gpodderepisodeselector.ui.h:1 msgid "Select episodes" msgstr "ь—э”Мь†Œы“œ ь„ эƒ" #: share/gpodder/ui/gtk/gpodderpodcastdirectory.ui.h:1 msgid "Find new podcasts" msgstr "ьƒˆыЁœьšД эŒŸьКьŠЄэŠИ ьАОъИА" #: share/gpodder/ui/gtk/gpodderpodcastdirectory.ui.h:2 msgid "Select All" msgstr "ыЊЈы‘ ь„ эƒ" #: share/gpodder/ui/gtk/gpodderpodcastdirectory.ui.h:3 msgid "Select None" msgstr "ь„ эƒ ь•ˆэ•Ј" #: share/gpodder/ui/gtk/gpodderpodcastdirectory.ui.h:4 msgid "label" msgstr "ыМыВЈ" #: share/gpodder/ui/gtk/gpodderpodcastdirectory.ui.h:5 msgid "..." msgstr "..." #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:1 #: share/gpodder/ui/gtk/gpodder.ui.h:5 msgid "Preferences" msgstr "э™˜ъВНь„Єь •" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:2 msgid "Audio player:" msgstr "ь˜Єы””ь˜Є э”Œы ˆьДь–Д:" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:3 msgid "Video player:" msgstr "ыЙ„ы””ь˜Є э”Œы ˆьДь–Д:" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:4 msgid "\"All episodes\" in podcast list" msgstr "эŒŸьКьŠЄэŠИ ыІЌьŠЄэŠИь˜ ыЊЈы“  ь—э”Мь†Œы“œ" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:5 msgid "Use sections for podcast list" msgstr "эŒŸьКьŠЄэŠИ ыІЌьŠЄэŠИь— ь„Йь…˜ь„ ь‚ЌьšЉ" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:7 msgid "Preferred YouTube format:" msgstr "ъИАыГИ ьœ эŠœыИŒ эЌыЇЗ:" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:8 msgid "YouTube API key (v3):" msgstr "YouTube API э‚Є (v3):" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:9 msgid "Preferred Vimeo format:" msgstr "ъИАыГИ Vimeo эЌыЇЗ:" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:11 msgid "Extensions" msgstr "э™•ьžЅъИАыŠЅ" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:12 msgid "Synchronize subscriptions and episode actions" msgstr "ъЕЌы…ыЊЉыЁ/ь—э”Мь†Œы“œь˜ ь•Ёь…˜ь„ ы™ъИАэ™”" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:15 msgid "Replace list on server with local subscriptions" msgstr "ь„œыВ„ь— ьžˆыŠ” ъЕЌы…ыЊЉыЁь„ э˜„ьžЌ ъЕЌы…ыЊЉыЁьœМыЁœ ъГ ьВДэ•Љы‹ˆы‹Є" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:16 msgid "Device name:" msgstr "ы””ыА”ьДьŠЄ ьДыІ„:" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:17 msgid "gpodder.net" msgstr "gpodder.net" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:18 msgid "Update interval:" msgstr "ь—ЁыАьДэŠИ ъА„ъВЉ:" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:19 msgid "Maximum number of episodes per podcast:" msgstr "эŒŸьКьŠЄэŠИ э•˜ы‚˜ы‹Й ьЕœыŒ€ ь—э”Мь†Œы“œ ъАЏьˆ˜:" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:20 msgid "When new episodes are found:" msgstr "ьƒˆ ь—э”Мь†Œы“œъА€ э™•ьИы˜ыЉД:" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:21 msgid "Updating" msgstr "ь—…ыАьДэŠИ" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:22 msgid "Delete played episodes:" msgstr "ьžЌьƒэ•œ ь—э”Мь†Œы“œ ь‚­ь œ" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:23 msgid "Remove played episodes even if unfinished" msgstr "ыъЙŒьЇ€ ы‹Є ыГДьЇ€ ь•Šь€ ь—э”Мь†Œы“œ ь‚­ь œ" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:24 msgid "Also remove unplayed episodes" msgstr "ьžЌьƒэ•˜ьЇ€ ь•Šь€ ь—э”Мь†Œы“œы„ ь‚­ь œ" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:25 msgid "Clean-up" msgstr "ьВ­ь†Œ" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:26 msgid "Device type:" msgstr "ы””ыА”ьДьŠЄ ьЂ…ыЅ˜:" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:27 msgid "Mountpoint:" msgstr "ыЇˆьšДэŠИэЌьИэŠИ:" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:28 msgid "After syncing an episode:" msgstr "ь—э”Мь†Œы“œ ы™ъИАэ™” э›„:" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:29 msgid "Create playlists on device" msgstr "ы””ыА”ьДьŠЄь— э”Œы ˆьД ыІЌьŠЄэŠИ ыЇŒы“ЄъИА" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:30 msgid "Playlists Folder:" msgstr "э”Œы ˆьДыІЌьŠЄэŠИ эДы”:" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:31 msgid "Remove episodes deleted on device from gPodder" msgstr "ы””ыА”ьДьŠЄь—ь„œ ь‚­ь œэ•œ ь—э”Мь†Œы“œъА€ gPodderь— ьžˆы‹ЄыЉД ь‚­ь œэ•Ј" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:32 msgid "Only sync unplayed episodes" msgstr "ьžЌьƒэ•˜ьЇ€ ь•Šь€ ь—э”Мь†Œы“œыЇŒ ы™ъИАэ™”" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:33 msgid "Devices" msgstr "ы””ыА”ьДьŠЄ" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:34 msgid "Edit config" msgstr "ь„Єь •эŒŒьМ ьˆ˜ь •" #: share/gpodder/ui/gtk/gpodder.ui.h:1 msgid "_Podcasts" msgstr "_Podcasts" #: share/gpodder/ui/gtk/gpodder.ui.h:2 msgid "Check for new episodes" msgstr "ьƒˆ ь—э”Мь†Œы“œ э™•ьИ" #: share/gpodder/ui/gtk/gpodder.ui.h:3 msgid "Download new episodes" msgstr "ьƒˆ ь—э”Мь†Œы“œ ы‹ЄьšДыЁœы“œ" #: share/gpodder/ui/gtk/gpodder.ui.h:7 msgid "_Subscriptions" msgstr "_Subscriptions" #: share/gpodder/ui/gtk/gpodder.ui.h:8 msgid "Discover new podcasts" msgstr "ьƒˆ ь—э”Мь†Œы“œ ьАОъИА" #: share/gpodder/ui/gtk/gpodder.ui.h:9 msgid "Add podcast via URL" msgstr "эŒŸьКьŠЄэŠИь˜ URL ьЖ”ъА€" #: share/gpodder/ui/gtk/gpodder.ui.h:11 msgid "Unsubscribe" msgstr "ъЕЌы… ьЄ‘ьЇ€" #: share/gpodder/ui/gtk/gpodder.ui.h:14 msgid "Import from OPML file" msgstr "OPMLэŒŒьМь—ь„œ ыЖˆыŸЌь˜ЄъИА" #: share/gpodder/ui/gtk/gpodder.ui.h:15 msgid "Export to OPML file" msgstr "OPMLэŒŒьМыЁœ ы‚ДыГДы‚ДъИА" #: share/gpodder/ui/gtk/gpodder.ui.h:16 msgid "Go to gpodder.net" msgstr "gpodder.net ь—ДъИА" #: share/gpodder/ui/gtk/gpodder.ui.h:17 msgid "_Episodes" msgstr "_Episodes" #: share/gpodder/ui/gtk/gpodder.ui.h:18 msgid "Play" msgstr "ьžЌьƒ" #: share/gpodder/ui/gtk/gpodder.ui.h:19 msgid "Open" msgstr "ь—ДъИА" #: share/gpodder/ui/gtk/gpodder.ui.h:22 msgid "Delete" msgstr "ь‚­ь œ" #: share/gpodder/ui/gtk/gpodder.ui.h:23 msgid "Toggle new status" msgstr "ьƒˆ ьƒэƒœ э† ъИ€" #: share/gpodder/ui/gtk/gpodder.ui.h:24 msgid "Change delete lock" msgstr "ь‚­ь œ ьž ъИˆ ыГ€ъВН" #: share/gpodder/ui/gtk/gpodder.ui.h:26 msgid "E_xtras" msgstr "E_xtras" #: share/gpodder/ui/gtk/gpodder.ui.h:27 msgid "Sync to device" msgstr "ы””ыА”ьДьŠЄь™€ ы™ъИАэ™”" #: share/gpodder/ui/gtk/gpodder.ui.h:28 msgid "Update YouTube subscriptions" msgstr "ьœ эŠœыИŒ ъЕЌы…ыЊЉыЁ ь—…ыАьДэŠИ" #: share/gpodder/ui/gtk/gpodder.ui.h:29 msgid "_View" msgstr "_View" #: share/gpodder/ui/gtk/gpodder.ui.h:30 msgid "Toolbar" msgstr "эˆДыА”" #: share/gpodder/ui/gtk/gpodder.ui.h:31 msgid "Episode descriptions" msgstr "ь—э”Мь†Œы“œ ь„ЄыЊ…" #: share/gpodder/ui/gtk/gpodder.ui.h:33 msgid "Hide deleted episodes" msgstr "ь‚­ь œэ•œ ь—э”Мь†Œы“œ ьˆЈъЙ€" #: share/gpodder/ui/gtk/gpodder.ui.h:34 msgid "Downloaded episodes" msgstr "ы‹ЄьšДыЁœы“œэ•œ ь—э”Мь†Œы“œ" #: share/gpodder/ui/gtk/gpodder.ui.h:35 msgid "Unplayed episodes" msgstr "ьžЌьƒы˜ьЇ€ ь•Šь€ ь—э”Мь†Œы“œ" #: share/gpodder/ui/gtk/gpodder.ui.h:36 msgid "Hide podcasts without episodes" msgstr "эŒŸьКьŠЄэŠИыЇŒ ьˆЈъЙ€ (ь—э”Мь†Œы“œыŠ” ьˆЈъИАьЇ€ ь•ŠьŒ)" #: share/gpodder/ui/gtk/gpodder.ui.h:37 msgid "_Help" msgstr "_Help" #: share/gpodder/ui/gtk/gpodder.ui.h:38 msgid "User manual" msgstr "ь‚ЌьšЉьž ыЇЄы‰Дь–М" #: share/gpodder/ui/gtk/gpodder.ui.h:39 msgid "Software updates" msgstr "ь†Œэ”„эŠИь›Јь–Д ь—…ыАьДэŠИ" #: share/gpodder/ui/gtk/gpodder.ui.h:40 msgid "Filter:" msgstr "э•„э„А:" #: share/gpodder/ui/gtk/gpodder.ui.h:41 msgid "Podcasts" msgstr "эŒŸьКьŠЄэŠИ" #: share/gpodder/ui/gtk/gpodder.ui.h:42 msgid "Limit rate to" msgstr "ь œэ•œ ыЙ„ьœЈ" #: share/gpodder/ui/gtk/gpodder.ui.h:43 msgid "KiB/s" msgstr "KiB/s" #: share/gpodder/ui/gtk/gpodder.ui.h:44 msgid "Limit downloads to" msgstr "ы‹ЄьšДыЁœы“œ ь œэ•œэ•Ј" #: share/gpodder/ui/gtk/gpodderwelcome.ui.h:2 msgid "Welcome to gPodder" msgstr "gPodder э™˜ь˜э•Љы‹ˆы‹Є" #: share/gpodder/ui/gtk/gpodderwelcome.ui.h:3 msgid "Your podcast list is empty." msgstr "эŒŸьКьŠЄэŠИ ыІЌьŠЄэŠИъА€ ыЙ„ь–Д ьžˆьŠЕы‹ˆы‹Є" #: share/gpodder/ui/gtk/gpodderwelcome.ui.h:4 msgid "Choose from a list of example podcasts" msgstr "ь˜ˆь œ эŒŸьКьŠЄэŠИь—ь„œ ь„ эƒэ•˜ъИА" #: share/gpodder/ui/gtk/gpodderwelcome.ui.h:5 msgid "Add a podcast by entering its URL" msgstr "URLыЁœ эŒŸьКьŠЄэŠИ ьЖ”ъА€" #: share/gpodder/ui/gtk/gpodderwelcome.ui.h:6 msgid "Restore my subscriptions from gpodder.net" msgstr "gpodder.netь— ьžˆыŠ” ъЕЌы…ыЊЉыЁьœМыЁœ ыГЕь›э•Ј" #: bin/gpo:266 msgid "Podcast update requested by extensions." msgstr "э™•ьžЅъИАыŠЅь—ь„œ эŒŸьКьŠЄэŠИ ь—…ыАьДэŠИ э•Ј" # extensionsьД э™•ьžЅъИАыŠЅьД ыЇžыŠ”ьЇ€ ьЂ€ э—ЗъАˆыІЌы„Єьš” #: bin/gpo:270 msgid "Episode download requested by extensions." msgstr "э™•ьžЅъИАыŠЅь—ь„œ ь—э”Мь†Œы“œ ы‹ЄьšДыЁœы“œ э•Ј" #: bin/gpo:323 #, python-format msgid "Invalid url: %s" msgstr "ьž˜ыЊЛыœ url: %s" #: bin/gpo:340 bin/gpo:416 bin/gpo:450 bin/gpo:582 bin/gpo:597 bin/gpo:717 #, python-format msgid "You are not subscribed to %s." msgstr "%sыЅМ ъЕЌы…э•˜ъГ  ьžˆьЇ€ ь•ŠьŠЕы‹ˆы‹Є" #: bin/gpo:346 #, python-format msgid "Already subscribed to %s." msgstr "%sыŠ” ьДыЏИ ъЕЌы…ьЄ‘" #: bin/gpo:352 #, python-format msgid "Cannot subscribe to %s." msgstr "%sыЅМ ъЕЌы…э•  ьˆ˜ ь—†ьŠЕ" #: bin/gpo:368 #, python-format msgid "Successfully added %s." msgstr "%s ьД ьЖ”ъА€ыЈ" #: bin/gpo:386 msgid "This configuration option does not exist." msgstr "ь„Єь • ь˜Еь…˜ьД ь—†ьŠЕы‹ˆы‹Є" #: bin/gpo:390 msgid "Can only set leaf configuration nodes." msgstr "ъА€ьžЅ ы ь„Єь • ы…Иы“œь—ыЇŒ ьЇ€ь •ъА€ыŠЅэ•Ј" #: bin/gpo:404 #, python-format msgid "Renamed %(old_title)s to %(new_title)s." msgstr "ьДыЅДь„ %(old_title)s ь—ь„œ %(new_title)s ыГ€ъВНэ•Љы‹ˆы‹Є." #: bin/gpo:420 #, python-format msgid "Unsubscribed from %s." msgstr "%s ь—ь„œ ъЕЌы… ьЄ‘ьЇ€" #: bin/gpo:494 msgid "Updates disabled" msgstr "ъИˆьЇ€ыœ э•­ыЊЉы“Є ь—…ыАьДэŠИ" #: bin/gpo:505 #, python-format msgid "%(count)d new episode" msgid_plural "%(count)d new episodes" msgstr[0] "ьƒˆыЁœьšД ь—э”Мь†Œы“œ %(count)d ъАœ" #: bin/gpo:511 msgid "Checking for new episodes" msgstr "ьƒˆ ь—э”Мь†Œы“œ э™•ьИ" #: bin/gpo:520 #, python-format msgid "Skipping %(podcast)s" msgstr "%(podcast)s ыЅМ ъБДы„ˆыœ€" #: bin/gpo:588 #, python-format msgid "Disabling feed update from %s." msgstr "%sь—ь„œ э”Мы“œ ь—…ыАьДэŠИ ъИˆьЇ€" #: bin/gpo:603 #, python-format msgid "Enabling feed update from %s." msgstr "%sь—ь„œ э”Мы“œ ь—…ыАьДэŠИ э—ˆьšЉ" #: bin/gpo:616 #, python-format msgid "Please register a YouTube API key and set it using %(command)s." msgstr "ьœ эŠœыИŒ APIэ‚ЄыЅМ ы“БыЁэ•˜ъГ  %(command)s ь— ь‚ЌьšЉэ•˜ь„Иьš”" #: bin/gpo:643 #, python-format msgid "Changing: %(old_url)s => %(new_url)s" msgstr "ыГ€ъВНэ•Ј: %(old_url)s => %(new_url)s" #: bin/gpo:653 msgid "Nothing to fix" msgstr "ьˆ˜ь •э•  ъВƒьД ь—†ьŒ" #: bin/gpo:672 msgid "No podcasts found." msgstr "ь—э”Мь†Œы“œъА€ ь—†ьŠЕы‹ˆы‹Є" #: bin/gpo:686 msgid "Enter index to subscribe, ? for list" msgstr "? ь˜ ьˆœыВˆь„ ьž…ы Ѕэ•˜ь„Иьš”, ыІЌьŠЄэŠИь— ь‚ЌьšЉыЉы‹ˆы‹Є" #: bin/gpo:700 bin/gpo:704 msgid "Invalid value." msgstr "ьž˜ ыЊЛ ыœ ъА’" #: bin/gpo:721 #, python-format msgid "Invalid URL: %s" msgstr "ьž˜ыЊЛыœ URL: %s" #: bin/gpo:724 #, python-format msgid "Changed URL from %(old_url)s to %(new_url)s." msgstr "%(old_url)s ь„ %(new_url)s ыЁœ ыГ€ъВНэ•Ј" #: bin/gpo:782 #, python-format msgid "Syntax error: %(error)s" msgstr "Syntax ь—ыŸЌ: %(error)s" #: bin/gpo:876 msgid "Ambiguous command. Did you mean.." msgstr "ыЖˆыЖ„ыЊ…э•œ ыЊ…ы Йь–Дьž…ы‹ˆы‹Є" #: bin/gpo:880 msgid "The requested function is not available." msgstr "э•Ды‹Й ъИАыŠЅь„ ь‚ЌьšЉэ•  ьˆ˜ ь—†ьŠЕы‹ˆы‹Є" #: bin/gpodder:105 msgid "print logging output on the console" msgstr "ь͘ь†”ь— ыЁœъЗИыЅМ ьЖ•ы Ѕэ•Љы‹ˆы‹Є" #: bin/gpodder:108 msgid "subscribe to the feed at URL" msgstr "URLь— ьžˆыŠ” э”Мы“œыЅМ ъЕЌы…э•Љы‹ˆы‹Є" #: bin/gpodder:113 msgid "Mac OS X application process number" msgstr "ыЇЅ OS X ь–Дэ”ŒыІЌьМ€ьДь…˜ э”„ыЁœь„ИьŠЄ ыВˆэ˜И" #: share/applications/gpodder.desktop.in.h:2 msgid "gPodder Podcast Client" msgstr "gPodder эŒŸьКьŠЄэŠИ эДыМьДь–ИэŠИ" #: share/applications/gpodder.desktop.in.h:3 msgid "Podcast Client" msgstr "эŒŸьКьŠЄэŠИ эДыМьДь–ИэŠИ" #: share/applications/gpodder.desktop.in.h:4 msgid "Subscribe to audio and video content from the web" msgstr "ь›Йь—ь„œ ь˜Єы””ь˜Єь™€ ыЙ„ы””ь˜Є ъБДэ…ьИ ыЅМ ъЕЌы…э•Љы‹ˆы‹Є" #: share/applications/gpodder-url-handler.desktop.in.h:1 msgid "gPodder (subscribe to feed)" msgstr "gPodder (ъЕЌы…э•˜ъИА)" gpodder-3.9.0/po/gl.po0000644000016000001710000016777012654461625015676 0ustar jenkinsjenkins00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # # Translators: # GonУЇalo Cordeiro , 2009-2010,2012. # Teo Ramirez , 2007. msgid "" msgstr "" "Project-Id-Version: gPodder\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2016-02-03 20:31+0000\n" "PO-Revision-Date: 2013-01-19 12:30+0000\n" "Last-Translator: GonУЇalo Cordeiro \n" "Language-Team: Galician (http://www.transifex.com/projects/p/gpodder/" "language/gl/)\n" "Language: gl\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" #: src/gpodder/config.py:55 #, python-format msgid "gPodder on %s" msgstr "gPodder en %s" #: src/gpodder/directory.py:95 #, fuzzy msgid "gpodder.net search" msgstr "gpodder.net" #: src/gpodder/directory.py:104 #, fuzzy msgid "OPML from web" msgstr "Ficheiros OPML" #: src/gpodder/directory.py:113 #, fuzzy msgid "OPML file" msgstr "Ficheiros OPML" #: src/gpodder/directory.py:122 share/gpodder/ui/gtk/gpodderwelcome.ui.h:1 msgid "Getting started" msgstr "Comezar" #: src/gpodder/directory.py:131 #, fuzzy msgid "gpodder.net Top 50" msgstr "gpodder.net" #: src/gpodder/directory.py:140 #, fuzzy msgid "gpodder.net Tags" msgstr "gpodder.net" #: src/gpodder/directory.py:152 #, fuzzy msgid "Soundcloud search" msgstr "%s no Soundcloud" #: src/gpodder/directory.py:165 #, fuzzy msgid "Imported OPML file" msgstr "Importar dun ficheiro OPML" #: src/gpodder/download.py:329 msgid "Wrong username/password" msgstr "Nome de persoa usuaria ou contrasinal incorrecto" #: src/gpodder/download.py:527 src/gpodder/sync.py:924 msgid "Added" msgstr "Engadido" #: src/gpodder/download.py:527 src/gpodder/sync.py:924 msgid "Queued" msgstr "Na fila" #: src/gpodder/download.py:527 src/gpodder/gtkui/model.py:327 msgid "Downloading" msgstr "Descargando" #: src/gpodder/download.py:528 src/gpodder/model.py:721 #: src/gpodder/sync.py:925 msgid "Finished" msgstr "Finalizada" #: src/gpodder/download.py:528 src/gpodder/sync.py:925 msgid "Failed" msgstr "Fallou" #: src/gpodder/download.py:528 src/gpodder/sync.py:925 msgid "Cancelled" msgstr "Cancelado" #: src/gpodder/download.py:528 src/gpodder/sync.py:925 msgid "Paused" msgstr "Detida" #: src/gpodder/download.py:862 msgid "Missing content from server" msgstr "Faltan contidos do servidor" #: src/gpodder/download.py:868 #, python-format msgid "I/O Error: %(error)s: %(filename)s" msgstr "Erro de E/S: %(error)s: %(filename)s" #: src/gpodder/download.py:875 #, python-format msgid "HTTP Error %(code)s: %(message)s" msgstr "Erro de HTTP %(code)s: %(message)s" #: src/gpodder/download.py:879 src/gpodder/sync.py:1081 #, python-format msgid "Error: %s" msgstr "Erro: %s" #: src/gpodder/extensions.py:55 #, fuzzy msgid "Desktop Integration" msgstr "IntegraciУГn en Ubuntu Unity" #: src/gpodder/extensions.py:56 #, fuzzy msgid "Interface" msgstr "Enteiro" #: src/gpodder/extensions.py:57 #, fuzzy msgid "Post download" msgstr "Seleccionar os descargados" #: src/gpodder/extensions.py:59 src/gpodder/model.py:779 #: src/gpodder/model.py:1225 msgid "Other" msgstr "Outro" #: src/gpodder/extensions.py:100 msgid "No description for this extension." msgstr "Non hai unha descriciУГn para esta extensiУГn." #: src/gpodder/extensions.py:212 #, python-format msgid "Command not found: %(command)s" msgstr "Non se encontrou o comando: %(command)s" #: src/gpodder/extensions.py:228 #, python-format msgid "Need at least one of the following commands: %(list_of_commands)s" msgstr "" #: src/gpodder/extensions.py:265 #, python-format msgid "Python module not found: %(module)s" msgstr "Non se encontrou o mУГdulo de Python: %(module)s" #: src/gpodder/model.py:446 src/gpodder/plugins/soundcloud.py:156 msgid "No description available" msgstr "Sen descriciУГn dispoУБУ­bel" #: src/gpodder/model.py:679 msgid "unknown" msgstr "descoУБecido" #: src/gpodder/model.py:746 msgid "Default" msgstr "" #: src/gpodder/model.py:747 msgid "Only keep latest" msgstr "" #: src/gpodder/model.py:1208 src/gpodder/model.py:1223 #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:10 msgid "Video" msgstr "VУ­deo" #: src/gpodder/model.py:1221 msgid "Audio" msgstr "Audio" #: src/gpodder/my.py:174 #, python-format msgid "Add %s" msgstr "Engadir %s" #: src/gpodder/my.py:176 #, python-format msgid "Remove %s" msgstr "Eliminar %s" #: src/gpodder/sync.py:196 msgid "Cancelled by user" msgstr "Cancelado polo usuario" #: src/gpodder/sync.py:199 msgid "Writing data to disk" msgstr "Escribindo datos no disco" #: src/gpodder/sync.py:295 msgid "Opening iPod database" msgstr "Abrindo a base de datos do iPod" #: src/gpodder/sync.py:305 msgid "iPod opened" msgstr "Abriuse o iPod" #: src/gpodder/sync.py:316 msgid "Saving iPod database" msgstr "Gardando a base de datos do iPod" #: src/gpodder/sync.py:321 msgid "Writing extended gtkpod database" msgstr "Escribindo a base de datos gtkpod estendida" #: src/gpodder/sync.py:397 src/gpodder/sync.py:680 src/gpodder/sync.py:874 #, python-format msgid "Removing %s" msgstr "Eliminando %s" #: src/gpodder/sync.py:412 src/gpodder/sync.py:557 #, python-format msgid "Adding %s" msgstr "Engadindo %s" #: src/gpodder/sync.py:430 #, python-format msgid "Error copying %(episode)s: Not enough free space on %(mountpoint)s" msgstr "" "Produciuse un erro ao copiar %(episode)s: non hai espazo suficiente en " "%(mountpoint)s" #: src/gpodder/sync.py:515 msgid "Opening MP3 player" msgstr "Abrindo o reprodutor de MP3" #: src/gpodder/sync.py:518 msgid "MP3 player opened" msgstr "Abriuse o reprodutor de MP3" #: src/gpodder/sync.py:576 #, python-format msgid "" "Not enough space in %(path)s: %(free)s available, but need at least %(need)s" msgstr "" #: src/gpodder/sync.py:603 src/gpodder/sync.py:611 #, python-format msgid "Error opening %(filename)s: %(message)s" msgstr "Produciuse un erro ao abrir %(filename)s: %(message)s" #: src/gpodder/sync.py:780 src/gpodder/sync.py:786 msgid "MTP device" msgstr "Dispositivo MTP" #: src/gpodder/sync.py:793 msgid "Opening the MTP device" msgstr "Abrindo o dispositivo MTP" #: src/gpodder/sync.py:803 #, python-format msgid "%s opened" msgstr "%s estУЁ aberto" #: src/gpodder/sync.py:808 #, python-format msgid "Closing %s" msgstr "Pechando %s" #: src/gpodder/sync.py:816 #, python-format msgid "%s closed" msgstr "%s estУЁ pechado" #: src/gpodder/sync.py:821 bin/gpo:708 #, python-format msgid "Adding %s..." msgstr "Engadindo %s..." #: src/gpodder/sync.py:924 msgid "Synchronizing" msgstr "Sincronizando" #: src/gpodder/util.py:429 #, python-format msgid "%(count)d day ago" msgid_plural "%(count)d days ago" msgstr[0] "vai %(count)d dУ­a" msgstr[1] "vai %(count)d dУ­as" #: src/gpodder/util.py:508 msgid "Today" msgstr "Hoxe" #: src/gpodder/util.py:510 msgid "Yesterday" msgstr "Onte" #: src/gpodder/util.py:553 src/gpodder/util.py:556 msgid "(unknown)" msgstr "(descoУБecido)" #: src/gpodder/util.py:1193 src/gpodder/util.py:1212 #, python-format msgid "%(count)d second" msgid_plural "%(count)d seconds" msgstr[0] "%(count)d segundo" msgstr[1] "%(count)d segundos" #: src/gpodder/util.py:1206 #, python-format msgid "%(count)d hour" msgid_plural "%(count)d hours" msgstr[0] "%(count)d hora" msgstr[1] "%(count)d horas" #: src/gpodder/util.py:1209 #, python-format msgid "%(count)d minute" msgid_plural "%(count)d minutes" msgstr[0] "%(count)d minuto" msgstr[1] "%(count)d minutos" #: src/gpodder/util.py:1215 msgid "and" msgstr "e" #: src/gpodder/gtkui/config.py:50 msgid "Integer" msgstr "Enteiro" #: src/gpodder/gtkui/config.py:52 msgid "Float" msgstr "Flotante" #: src/gpodder/gtkui/config.py:54 msgid "Boolean" msgstr "Booleano" #: src/gpodder/gtkui/config.py:56 msgid "String" msgstr "Cadea" #: src/gpodder/gtkui/desktopfile.py:70 #, python-format msgid "Command: %s" msgstr "Comando: %s" #: src/gpodder/gtkui/desktopfile.py:150 msgid "Default application" msgstr "AplicaciУГn por defecto" #: src/gpodder/gtkui/main.py:205 share/applications/gpodder.desktop.in.h:1 msgid "gPodder" msgstr "gPodder" #: src/gpodder/gtkui/main.py:288 msgid "Loading incomplete downloads" msgstr "Cangando as descargas incompletas" #: src/gpodder/gtkui/main.py:289 msgid "Some episodes have not finished downloading in a previous session." msgstr "A descarga dalgУКns episodios nunha sesiУГn anterior non terminou." #: src/gpodder/gtkui/main.py:291 #, python-format msgid "%(count)d partial file" msgid_plural "%(count)d partial files" msgstr[0] "%(count)d ficheiro parcial" msgstr[1] "%(count)d ficheiros parciais" #: src/gpodder/gtkui/main.py:306 msgid "Resume all" msgstr "Retomar todas" #: src/gpodder/gtkui/main.py:316 msgid "Incomplete downloads from a previous session were found." msgstr "EncontrУЁronse descargas incompletas dunha sesiУГn anterior." #: src/gpodder/gtkui/main.py:414 msgid "Action" msgstr "AcciУГn" #: src/gpodder/gtkui/main.py:461 msgid "Confirm changes from gpodder.net" msgstr "Confirmar os cambios desde gpodder.net" #: src/gpodder/gtkui/main.py:462 msgid "Select the actions you want to carry out." msgstr "Seleccione as acciУГns que quere levar a cabo." #: src/gpodder/gtkui/main.py:502 msgid "Uploading subscriptions" msgstr "Enviando as subscriciУГns" #: src/gpodder/gtkui/main.py:503 msgid "Your subscriptions are being uploaded to the server." msgstr "As sУКas subscriciУГns estУЁn sendo enviadas ao servidor." #: src/gpodder/gtkui/main.py:508 msgid "List uploaded successfully." msgstr "A lista foi enviada con УЉxito." #: src/gpodder/gtkui/main.py:515 msgid "Error while uploading" msgstr "Erro ao enviar" #: src/gpodder/gtkui/main.py:800 src/gpodder/gtkui/main.py:928 #: src/gpodder/gtkui/main.py:2622 src/gpodder/gtkui/main.py:2815 #: src/gpodder/gtkui/desktop/episodeselector.py:132 #: src/gpodder/gtkui/desktop/sync.py:270 msgid "Episode" msgstr "Episodio" #: src/gpodder/gtkui/main.py:819 msgid "Size" msgstr "TamaУБo" #: src/gpodder/gtkui/main.py:824 msgid "Duration" msgstr "DuraciУГn" #: src/gpodder/gtkui/main.py:828 msgid "Released" msgstr "Data de lanzamento" #: src/gpodder/gtkui/main.py:855 msgid "Visible columns" msgstr "Columnas visУ­beis" #: src/gpodder/gtkui/main.py:948 src/gpodder/gtkui/main.py:1108 #: share/gpodder/ui/gtk/gpodder.ui.h:45 msgid "Progress" msgstr "Progreso" #: src/gpodder/gtkui/main.py:982 msgid "Loading episodes" msgstr "Cargando episodios" #: src/gpodder/gtkui/main.py:985 msgid "No episodes in current view" msgstr "Non hai ningУКn episodio na vista actual" #: src/gpodder/gtkui/main.py:987 msgid "No episodes available" msgstr "Non hai episodios dispoУБУ­beis" #: src/gpodder/gtkui/main.py:993 msgid "No podcasts in this view" msgstr "Non hai ningУКn podcast nesta vista" #: src/gpodder/gtkui/main.py:995 msgid "No subscriptions" msgstr "Sen subscriciУГns" #: src/gpodder/gtkui/main.py:997 msgid "No active tasks" msgstr "Non hai tarefas activas" #: src/gpodder/gtkui/main.py:1112 src/gpodder/gtkui/main.py:1114 #, python-format msgid "%(count)d active" msgid_plural "%(count)d active" msgstr[0] "%(count)d activa" msgstr[1] "%(count)d activas" #: src/gpodder/gtkui/main.py:1116 #, python-format msgid "%(count)d failed" msgid_plural "%(count)d failed" msgstr[0] "%(count)d fallou" msgstr[1] "%(count)d fallaron" #: src/gpodder/gtkui/main.py:1118 #, python-format msgid "%(count)d queued" msgid_plural "%(count)d queued" msgstr[0] "%(count)d na fila" msgstr[1] "%(count)d na fila" #: src/gpodder/gtkui/main.py:1132 #, python-format msgid "downloading %(count)d file" msgid_plural "downloading %(count)d files" msgstr[0] "descargando %(count)d ficheiro" msgstr[1] "descargando %(count)d ficheiros" #: src/gpodder/gtkui/main.py:1142 #, python-format msgid "synchronizing %(count)d file" msgid_plural "synchronizing %(count)d files" msgstr[0] "sincronizando %(count)d ficheiro" msgstr[1] "sincronizando %(count)d ficheiros" #: src/gpodder/gtkui/main.py:1144 #, python-format msgid "%(queued)d task queued" msgid_plural "%(queued)d tasks queued" msgstr[0] " %(queued)d tarefa na fila" msgstr[1] " %(queued)d tarefas na fila" #: src/gpodder/gtkui/main.py:1168 msgid "Please report this problem and restart gPodder:" msgstr "Informe deste problema e reinicie o gPodder:" #: src/gpodder/gtkui/main.py:1168 msgid "Unhandled exception" msgstr "ExcepciУГn non manexada" #: src/gpodder/gtkui/main.py:1235 #, python-format msgid "Feedparser error: %s" msgstr "Erro ao analizar o feed: %s" #: src/gpodder/gtkui/main.py:1371 msgid "Could not download some episodes:" msgstr "Non se puideron descargar algУКns episodios:" #: src/gpodder/gtkui/main.py:1373 src/gpodder/gtkui/main.py:1376 msgid "Downloads finished" msgstr "As descargas terminaron" #: src/gpodder/gtkui/main.py:1379 msgid "Downloads failed" msgstr "As descargas fallaron" #: src/gpodder/gtkui/main.py:1383 msgid "Could not sync some episodes:" msgstr "Non se puideron sincronizar algУКns episodios:" #: src/gpodder/gtkui/main.py:1385 src/gpodder/gtkui/main.py:1388 msgid "Device synchronization finished" msgstr "Rematou a sincronizaciУГn do dispositivo" #: src/gpodder/gtkui/main.py:1391 msgid "Device synchronization failed" msgstr "Produciuse un fallo ao sincronizar o dispositivo" #: src/gpodder/gtkui/main.py:1434 #, python-format msgid "%(count)d more episode" msgid_plural "%(count)d more episodes" msgstr[0] "%(count)d episodio mУЁis" msgstr[1] "%(count)d episodios mУЁis" #: src/gpodder/gtkui/main.py:1508 msgid "Start download now" msgstr "Comezar a descarga agora" #: src/gpodder/gtkui/main.py:1510 src/gpodder/gtkui/main.py:1719 #: src/gpodder/gtkui/desktop/episodeselector.py:144 #: share/gpodder/ui/gtk/gpodder.ui.h:20 msgid "Download" msgstr "Descargar" #: src/gpodder/gtkui/main.py:1511 share/gpodder/ui/gtk/gpodder.ui.h:21 msgid "Cancel" msgstr "Cancelar" #: src/gpodder/gtkui/main.py:1512 msgid "Pause" msgstr "Deter" #: src/gpodder/gtkui/main.py:1514 msgid "Remove from list" msgstr "Eliminar da lista" #: src/gpodder/gtkui/main.py:1553 share/gpodder/ui/gtk/gpodder.ui.h:13 msgid "Update podcast" msgstr "Actualizar o podcast" #: src/gpodder/gtkui/main.py:1560 msgid "Open download folder" msgstr "Abrir o cartafol de descargas" #: src/gpodder/gtkui/main.py:1566 msgid "Mark episodes as old" msgstr "Marcar os episodios como vellos" #: src/gpodder/gtkui/main.py:1570 src/gpodder/gtkui/main.py:1778 msgid "Archive" msgstr "Arquivar" #: src/gpodder/gtkui/main.py:1575 msgid "Remove podcast" msgstr "Eliminar podcast" #: src/gpodder/gtkui/main.py:1590 share/gpodder/ui/gtk/gpodder.ui.h:10 msgid "Podcast settings" msgstr "ConfiguraciУГn de podcasts" #: src/gpodder/gtkui/main.py:1650 msgid "Error converting file." msgstr "Erro ao converter o ficheiro." #: src/gpodder/gtkui/main.py:1650 msgid "Bluetooth file transfer" msgstr "Transferencia de ficheiros por Bluetooth" #: src/gpodder/gtkui/main.py:1709 msgid "Preview" msgstr "Previsualizar" #: src/gpodder/gtkui/main.py:1711 msgid "Stream" msgstr "Fluxo" #: src/gpodder/gtkui/main.py:1755 msgid "Send to" msgstr "Enviar a" #: src/gpodder/gtkui/main.py:1757 msgid "Local folder" msgstr "Cartafol local" #: src/gpodder/gtkui/main.py:1762 msgid "Bluetooth device" msgstr "Dispositivo bluetooth" #: src/gpodder/gtkui/main.py:1769 msgid "New" msgstr "Novo" #: src/gpodder/gtkui/main.py:1785 share/gpodder/ui/gtk/gpodder.ui.h:25 msgid "Episode details" msgstr "Detalles do episodio" #: src/gpodder/gtkui/main.py:1938 msgid "Please check your media player settings in the preferences dialog." msgstr "" "Verifique a configuraciУГn do seu reprodutor multimedia no dialogo de " "preferencias." #: src/gpodder/gtkui/main.py:1939 msgid "Error opening player" msgstr "Erro ao abrir o reprodutor" #: src/gpodder/gtkui/main.py:2178 msgid "Adding podcasts" msgstr "Engadindo podcasts" #: src/gpodder/gtkui/main.py:2179 msgid "Please wait while episode information is downloaded." msgstr "Agarde mentres se descarga a informaciУГn do episodio." #: src/gpodder/gtkui/main.py:2186 msgid "Existing subscriptions skipped" msgstr "OmitУ­ronse as subscriciУГns existentes" #: src/gpodder/gtkui/main.py:2187 msgid "You are already subscribed to these podcasts:" msgstr "Xa estУЁ subscrito a estes podcasts:" #: src/gpodder/gtkui/main.py:2195 msgid "Podcast requires authentication" msgstr "O podcast require autenticaciУГn" #: src/gpodder/gtkui/main.py:2196 #, python-format msgid "Please login to %s:" msgstr "Inicie unha sesiУГn en %s:" #: src/gpodder/gtkui/main.py:2204 src/gpodder/gtkui/main.py:2299 msgid "Authentication failed" msgstr "Fallou a autenticaciУГn" #: src/gpodder/gtkui/main.py:2210 msgid "Website redirection detected" msgstr "Detectouse unha redirecciУГn de sitio web" #: src/gpodder/gtkui/main.py:2211 #, python-format msgid "The URL %(url)s redirects to %(target)s." msgstr "O URL %(url)s redirecciona a %(target)s." #: src/gpodder/gtkui/main.py:2212 msgid "Do you want to visit the website now?" msgstr "Quere visitar agora o sitio web?" #: src/gpodder/gtkui/main.py:2221 msgid "Could not add some podcasts" msgstr "Non foi posУ­bel engadir algУКns podcasts" #: src/gpodder/gtkui/main.py:2222 msgid "Some podcasts could not be added to your list:" msgstr "AlgУКns podcasts non puideron ser engadidos УЁ sУКa lista:" #: src/gpodder/gtkui/main.py:2224 msgid "Unknown" msgstr "DescoУБecido" #: src/gpodder/gtkui/main.py:2308 msgid "Redirection detected" msgstr "Detectouse unha redirecciУГn" #: src/gpodder/gtkui/main.py:2342 msgid "Merging episode actions" msgstr "Combinando as acciУГns de episodios" #: src/gpodder/gtkui/main.py:2343 msgid "Episode actions from gpodder.net are merged." msgstr "As acciУГns de episodios de gpodder.net foron combinadas" #: src/gpodder/gtkui/main.py:2368 msgid "Cancelling..." msgstr "Cancelando..." #: src/gpodder/gtkui/main.py:2377 msgid "Please connect to a network, then try again." msgstr "" #: src/gpodder/gtkui/main.py:2378 #, fuzzy msgid "No network connection" msgstr "Nova secciУГn:" #: src/gpodder/gtkui/main.py:2399 #, python-format msgid "Updating %(count)d feed..." msgid_plural "Updating %(count)d feeds..." msgstr[0] "Actualizando %(count)d feed..." msgstr[1] "Actualizando %(count)d feeds..." #: src/gpodder/gtkui/main.py:2417 #, python-format msgid "Error while updating %(url)s: %(message)s" msgstr "Houbo un erro ao actualizar %(url)s: %(message)s" #: src/gpodder/gtkui/main.py:2419 #, python-format msgid "The feed at %(url)s could not be updated." msgstr "O fУ­o de %(url)s non se puido actualizar." #: src/gpodder/gtkui/main.py:2420 msgid "Error while updating feed" msgstr "Erro ao actualizar o fУ­o" #: src/gpodder/gtkui/main.py:2435 #, python-format msgid "Updated %(podcast)s (%(position)d/%(total)d)" msgstr "Actualizado %(podcast)s (%(position)d/%(total)d)" #: src/gpodder/gtkui/main.py:2466 msgid "No new episodes" msgstr "Non hai episodios novos" #: src/gpodder/gtkui/main.py:2479 #, python-format msgid "Downloading %(count)d new episode." msgid_plural "Downloading %(count)d new episodes." msgstr[0] "Descargando %(count)d episodio novo." msgstr[1] "Descargando %(count)d episodios novos." #: src/gpodder/gtkui/main.py:2480 src/gpodder/gtkui/main.py:2484 #: src/gpodder/gtkui/main.py:2833 msgid "New episodes available" msgstr "Hai episodios novos dispoУБУ­beis" #: src/gpodder/gtkui/main.py:2483 #, python-format msgid "%(count)d new episode added to download list." msgid_plural "%(count)d new episodes added to download list." msgstr[0] "Engadiuse %(count)d episodio novo УЁ lista de descargas." msgstr[1] "EngadУ­ronse %(count)d episodios novos УЁ lista de descargas." #: src/gpodder/gtkui/main.py:2490 #, python-format msgid "%(count)d new episode available" msgid_plural "%(count)d new episodes available" msgstr[0] "%(count)d episodio novo dispoУБУ­bel" msgstr[1] "%(count)d episodios novos dispoУБУ­beis" #: src/gpodder/gtkui/main.py:2509 msgid "Quit gPodder" msgstr "SaУ­r do gPodder" #: src/gpodder/gtkui/main.py:2510 msgid "" "You are downloading episodes. You can resume downloads the next time you " "start gPodder. Do you want to quit now?" msgstr "" "EstУЁ descargando episodios. Pode continuar as descargas a prУГxima vez que " "inicie o gPodder. Quere saУ­r agora?" #: src/gpodder/gtkui/main.py:2559 msgid "Episodes are locked" msgstr "Os episodios estУЁn bloqueados" #: src/gpodder/gtkui/main.py:2560 msgid "" "The selected episodes are locked. Please unlock the episodes that you want " "to delete before trying to delete them." msgstr "" "Os episodios seleccionados estУЁn bloqueados. Desbloquee os episodios que " "quere eliminar antes de tentar eliminalos." #: src/gpodder/gtkui/main.py:2565 #, python-format msgid "Delete %(count)d episode?" msgid_plural "Delete %(count)d episodes?" msgstr[0] "Quere eliminar %(count)d episodio?" msgstr[1] "Quere eliminar %(count)d episodios?" #: src/gpodder/gtkui/main.py:2566 msgid "Deleting episodes removes downloaded files." msgstr "A eliminaciУГn dos episodios borra os ficheiros descargados." #: src/gpodder/gtkui/main.py:2571 msgid "Deleting episodes" msgstr "Eliminando os episodios" #: src/gpodder/gtkui/main.py:2572 msgid "Please wait while episodes are deleted" msgstr "Agarde mentres se eliminan os episodios" #: src/gpodder/gtkui/main.py:2625 #, python-format msgid "Select older than %(count)d day" msgid_plural "Select older than %(count)d days" msgstr[0] "Seleccionar os que teУБan mУЁis de %(count)d dУ­a" msgstr[1] "Seleccionar os que teУБan mУЁis de %(count)d dУ­as" #: src/gpodder/gtkui/main.py:2627 msgid "Select played" msgstr "Seleccionar os reproducidos" #: src/gpodder/gtkui/main.py:2628 msgid "Select finished" msgstr "Seleccionar os finalizados" #: src/gpodder/gtkui/main.py:2632 msgid "Select the episodes you want to delete:" msgstr "Seleccione os episodios que quere eliminar:" #: src/gpodder/gtkui/main.py:2648 share/gpodder/ui/gtk/gpodder.ui.h:4 msgid "Delete episodes" msgstr "Eliminar episodios" #: src/gpodder/gtkui/main.py:2703 src/gpodder/gtkui/main.py:2934 #: src/gpodder/gtkui/main.py:3034 msgid "No podcast selected" msgstr "Non se seleccionou ningУКn podcast" #: src/gpodder/gtkui/main.py:2704 msgid "Please select a podcast in the podcasts list to update." msgstr "Seleccione un podcast da lista de podcasts para actualizalo." #: src/gpodder/gtkui/main.py:2774 #, python-format msgid "Download error while downloading %(episode)s: %(message)s" msgstr "Erro de descarga mentres se procesaba %(episode)s: %(message)s" #: src/gpodder/gtkui/main.py:2775 msgid "Download error" msgstr "Erro de descarga" #: src/gpodder/gtkui/main.py:2818 msgid "Select the episodes you want to download:" msgstr "Seleccione os episodios que quere descargar:" #: src/gpodder/gtkui/main.py:2841 msgid "Mark as old" msgstr "Marcar como antigo" #: src/gpodder/gtkui/main.py:2848 msgid "Please check for new episodes later." msgstr "Verificar por episodios novos mУЁis tarde." #: src/gpodder/gtkui/main.py:2849 msgid "No new episodes available" msgstr "Non hai episodios novos dispoУБУ­beis" #: src/gpodder/gtkui/main.py:2900 msgid "Login to gpodder.net" msgstr "Iniciar sesiУГn en gpodder.net" #: src/gpodder/gtkui/main.py:2901 msgid "Please login to download your subscriptions." msgstr "Inicie unha sesiУГn para descargar as sУКas subscriciУГns" #: src/gpodder/gtkui/main.py:2916 msgid "Subscriptions on gpodder.net" msgstr "SubscriciУГns en gpodder.net" #: src/gpodder/gtkui/main.py:2935 msgid "Please select a podcast in the podcasts list to edit." msgstr "Seleccione un podcast da lista de podcasts para editalo." #: src/gpodder/gtkui/main.py:2949 msgid "Podcast" msgstr "Podcast" #: src/gpodder/gtkui/main.py:2955 share/gpodder/ui/gtk/gpodder.ui.h:12 msgid "Remove podcasts" msgstr "Eliminar os podcast" #: src/gpodder/gtkui/main.py:2956 msgid "Select the podcast you want to remove." msgstr "Seleccione os podcasts que quere eliminar." #: src/gpodder/gtkui/main.py:2960 #: src/gpodder/gtkui/desktop/episodeselector.py:105 msgid "Remove" msgstr "Eliminar" #: src/gpodder/gtkui/main.py:2969 msgid "Removing podcast" msgstr "Eliminando o podcast" #: src/gpodder/gtkui/main.py:2970 msgid "Please wait while the podcast is removed" msgstr "Agarde mentres se elimina o podcast" #: src/gpodder/gtkui/main.py:2971 msgid "Do you really want to remove this podcast and its episodes?" msgstr "Quere eliminar este podcast e os seus episodios?" #: src/gpodder/gtkui/main.py:2973 msgid "Removing podcasts" msgstr "Eliminando os podcasts" #: src/gpodder/gtkui/main.py:2974 msgid "Please wait while the podcasts are removed" msgstr "Agarde mentres se eliminan os podcasts" #: src/gpodder/gtkui/main.py:2975 msgid "Do you really want to remove the selected podcasts and their episodes?" msgstr "Quere eliminar os podcast seleccionados e os seus episodios?" #: src/gpodder/gtkui/main.py:3035 msgid "Please select a podcast in the podcasts list to remove." msgstr "Seleccione un podcast da lista de podcasts para eliminalo." #: src/gpodder/gtkui/main.py:3045 msgid "OPML files" msgstr "Ficheiros OPML" #: src/gpodder/gtkui/main.py:3050 msgid "Import from OPML" msgstr "Importar de OPML" #: src/gpodder/gtkui/main.py:3064 msgid "Import podcasts from OPML file" msgstr "Importar podcasts dun ficheiro OPML" #: src/gpodder/gtkui/main.py:3071 msgid "Nothing to export" msgstr "Non hai nada para exportar" #: src/gpodder/gtkui/main.py:3072 msgid "" "Your list of podcast subscriptions is empty. Please subscribe to some " "podcasts first before trying to export your subscription list." msgstr "" "A sУКa lista de subscriciУГns estУЁ baleira. SubscrУ­base a algУКn podcast antes " "de tentar exportar a sУКa lista de subscriciУГns." #: src/gpodder/gtkui/main.py:3076 msgid "Export to OPML" msgstr "Exportar a OPML" #: src/gpodder/gtkui/main.py:3087 #, python-format msgid "%(count)d subscription exported" msgid_plural "%(count)d subscriptions exported" msgstr[0] "Exportouse %(count)d subscriciУГn" msgstr[1] "ExportУЁronse %(count)d subscriciУГns" #: src/gpodder/gtkui/main.py:3088 msgid "Your podcast list has been successfully exported." msgstr "A sУКa lista de podcasts foi exportada con УЉxito." #: src/gpodder/gtkui/main.py:3090 msgid "Could not export OPML to file. Please check your permissions." msgstr "Non se pode exportar o OPML ao ficheiro. Verifique os seus permisos." #: src/gpodder/gtkui/main.py:3090 msgid "OPML export failed" msgstr "Fallo ao exportar a OPML" #: src/gpodder/gtkui/main.py:3117 msgid "No updates available" msgstr "Non hai actualizaciУГns dispoУБУ­beis" #: src/gpodder/gtkui/main.py:3118 msgid "You have the latest version of gPodder." msgstr "Xa estУЁ a usar a УКltima versiУГn de gPodder." #: src/gpodder/gtkui/main.py:3122 msgid "New version available" msgstr "Hai unha nova versiУГn dispoУБУ­bel" #: src/gpodder/gtkui/main.py:3124 #, python-format msgid "Installed version: %s" msgstr "VersiУГn instalada: %s" #: src/gpodder/gtkui/main.py:3125 #, python-format msgid "Newest version: %s" msgstr "VersiУГn mУЁis nova: %s" #: src/gpodder/gtkui/main.py:3126 #, python-format msgid "Release date: %s" msgstr "Data de lanzamento: %s" #: src/gpodder/gtkui/main.py:3128 msgid "Download the latest version from gpodder.org?" msgstr "Quere descargar a УКltima versiУГn desde gpodder.org?" #: src/gpodder/gtkui/main.py:3141 msgid "About gPodder" msgstr "Sobre o gPodder" #: src/gpodder/gtkui/main.py:3424 #, fuzzy msgid "Please register a YouTube API key and set it in the preferences." msgstr "Configure o seu dispositivo no diУЁlogo das preferencias." #: src/gpodder/gtkui/main.py:3425 msgid "Would you like to set up an API key now?" msgstr "" #: src/gpodder/gtkui/main.py:3425 msgid "API key required" msgstr "" #: src/gpodder/gtkui/main.py:3444 bin/gpo:631 #, fuzzy msgid "No unique URL found" msgstr "Non se encontraron canles" #: src/gpodder/gtkui/main.py:3449 bin/gpo:637 #, fuzzy msgid "Already subscribed" msgstr "Non se pode subscribir a %s." #: src/gpodder/gtkui/main.py:3458 bin/gpo:649 #, python-format msgid "Make sure the API key is correct. Error: %(message)s" msgstr "" #: src/gpodder/gtkui/main.py:3459 #, fuzzy msgid "Error getting YouTube channels" msgstr "Erro ao definir a opciУГn" #: src/gpodder/gtkui/main.py:3462 #, fuzzy msgid "Successfully migrated subscriptions" msgstr "%s foi engadido con УЉxito." #: src/gpodder/gtkui/main.py:3464 #, fuzzy msgid "Subscriptions are up to date" msgstr "SubscriciУГn detida" #: src/gpodder/gtkui/main.py:3467 msgid "These URLs failed:" msgstr "" #: src/gpodder/gtkui/main.py:3469 #, fuzzy msgid "Could not migrate some subscriptions" msgstr "Non foi posУ­bel engadir algУКns podcasts" #: src/gpodder/gtkui/main.py:3493 msgid "Cannot start gPodder" msgstr "Non УЉ posУ­bel iniciar o gPodder" #: src/gpodder/gtkui/main.py:3494 #, python-format msgid "D-Bus error: %s" msgstr "Erro de D-Bus: %s" #: src/gpodder/gtkui/model.py:68 #, python-format msgid "released %s" msgstr "data de lanzamento %s" #: src/gpodder/gtkui/model.py:69 src/gpodder/gtkui/model.py:87 #: src/gpodder/gtkui/model.py:237 src/gpodder/gtkui/shownotes.py:84 #, python-format msgid "from %s" msgstr "de %s" #: src/gpodder/gtkui/model.py:80 src/gpodder/gtkui/model.py:393 msgid "played" msgstr "reproducido" #: src/gpodder/gtkui/model.py:82 msgid "unplayed" msgstr "non reproducido" #: src/gpodder/gtkui/model.py:85 msgid "today" msgstr "hoxe" #: src/gpodder/gtkui/model.py:86 #, python-format msgid "downloaded %s" msgstr "descargados %s" #: src/gpodder/gtkui/model.py:337 msgid "Deleted" msgstr "Eliminados" #: src/gpodder/gtkui/model.py:342 msgid "New episode" msgstr "Episodio novo" #: src/gpodder/gtkui/model.py:356 msgid "Downloaded episode" msgstr "Episodio descargado" #: src/gpodder/gtkui/model.py:359 msgid "Downloaded video episode" msgstr "Episodio de video descargado" #: src/gpodder/gtkui/model.py:362 msgid "Downloaded image" msgstr "Imaxe descargada" #: src/gpodder/gtkui/model.py:365 msgid "Downloaded file" msgstr "Ficheiro descargado" #: src/gpodder/gtkui/model.py:380 msgid "missing file" msgstr "falta o ficheiro" #: src/gpodder/gtkui/model.py:384 msgid "never displayed" msgstr "non visualizado nunca" #: src/gpodder/gtkui/model.py:386 msgid "never played" msgstr "non reproducido nunca" #: src/gpodder/gtkui/model.py:388 msgid "never opened" msgstr "non aberto nunca" #: src/gpodder/gtkui/model.py:391 msgid "displayed" msgstr "visualizado" #: src/gpodder/gtkui/model.py:395 msgid "opened" msgstr "aberto" #: src/gpodder/gtkui/model.py:397 msgid "deletion prevented" msgstr "impediuse unha eliminaciУГn" #: src/gpodder/gtkui/model.py:432 share/gpodder/ui/gtk/gpodder.ui.h:32 msgid "All episodes" msgstr "Todos os episodios" #: src/gpodder/gtkui/model.py:433 msgid "from all podcasts" msgstr "de todos os podcasts" #: src/gpodder/gtkui/model.py:625 msgid "Subscription paused" msgstr "SubscriciУГn detida" #: src/gpodder/gtkui/shownotes.py:118 #, fuzzy msgid "Please select an episode" msgstr "Seleccionar episodios" #: src/gpodder/gtkui/interface/addpodcast.py:74 msgid "Nothing to paste." msgstr "Non hai nada para colar." #: src/gpodder/gtkui/interface/addpodcast.py:74 msgid "Clipboard is empty" msgstr "O portapapeis estУЁ baleiro" #: src/gpodder/gtkui/interface/common.py:160 msgid "Username" msgstr "Nome de persoa usuaria" #: src/gpodder/gtkui/interface/common.py:163 msgid "New user" msgstr "Persoa usuaria nova" #: src/gpodder/gtkui/interface/common.py:170 msgid "Login" msgstr "Iniciar sesiУГn" #: src/gpodder/gtkui/interface/common.py:172 msgid "Authentication required" msgstr "AutenticaciУГn requirida" #: src/gpodder/gtkui/interface/common.py:203 msgid "Password" msgstr "Contrasinal" #: src/gpodder/gtkui/interface/common.py:225 msgid "Select destination" msgstr "Escolla un destino" #: src/gpodder/gtkui/interface/configeditor.py:34 msgid "Setting" msgstr "ConfiguraciУГn" #: src/gpodder/gtkui/interface/configeditor.py:41 msgid "Set to" msgstr "Estabelecer como" #: src/gpodder/gtkui/interface/configeditor.py:81 #, python-format msgid "Cannot set %(field)s to %(value)s. Needed data type: %(datatype)s" msgstr "" "Non se pode estabelecer %(field)s co valor %(value)s. PrecУ­sase o tipo de " "datos: %(datatype)s" #: src/gpodder/gtkui/interface/configeditor.py:85 msgid "Error setting option" msgstr "Erro ao definir a opciУГn" #: src/gpodder/gtkui/desktop/channel.py:100 msgid "Add section" msgstr "Engadir unha secciУГn" #: src/gpodder/gtkui/desktop/channel.py:100 msgid "New section:" msgstr "Nova secciУГn:" #: src/gpodder/gtkui/desktop/channel.py:133 msgid "Select new podcast cover artwork" msgstr "Seleccione unha portada nova para o podcast" #: src/gpodder/gtkui/desktop/channel.py:161 msgid "You can only drop a single image or URL here." msgstr "SУГ pode soltar unha imaxe ou URL aquУ­." #: src/gpodder/gtkui/desktop/channel.py:161 #: src/gpodder/gtkui/desktop/channel.py:171 msgid "Drag and drop" msgstr "Arrastrar e soltar" #: src/gpodder/gtkui/desktop/channel.py:171 msgid "You can only drop local files and http:// URLs here." msgstr "SУГ pode soltar ficheiros locais e URL http:// aquУ­." #: src/gpodder/gtkui/desktop/deviceplaylist.py:98 #, fuzzy, python-format msgid "Folder %s could not be created." msgstr "O fУ­o de %(url)s non se puido actualizar." #: src/gpodder/gtkui/desktop/deviceplaylist.py:98 #, fuzzy msgid "Error writing playlist" msgstr "Erro ao abrir o reprodutor" #: src/gpodder/gtkui/desktop/episodeselector.py:288 #: share/gpodder/ui/gtk/gpodderepisodeselector.ui.h:2 msgid "Select all" msgstr "Seleccionar todo" #: src/gpodder/gtkui/desktop/episodeselector.py:292 #: share/gpodder/ui/gtk/gpodderepisodeselector.ui.h:3 msgid "Select none" msgstr "Non seleccionar ningУКn" #: src/gpodder/gtkui/desktop/episodeselector.py:324 msgid "Nothing selected" msgstr "Non hai nada seleccionado" #: src/gpodder/gtkui/desktop/episodeselector.py:325 #, python-format msgid "%(count)d episode" msgid_plural "%(count)d episodes" msgstr[0] "%(count)d episodio" msgstr[1] "%(count)d episodios" #: src/gpodder/gtkui/desktop/episodeselector.py:327 #, python-format msgid "size: %s" msgstr "tamaУБo: %s" #: src/gpodder/gtkui/desktop/podcastdirectory.py:238 #, fuzzy msgid "Loading podcasts" msgstr "Engadindo podcasts" #: src/gpodder/gtkui/desktop/podcastdirectory.py:239 #, fuzzy msgid "Please wait while the podcast list is downloaded" msgstr "Agarde mentres se elimina o podcast" #: src/gpodder/gtkui/desktop/preferences.py:51 #: src/gpodder/gtkui/desktop/preferences.py:93 msgid "Do nothing" msgstr "Non facer nada" #: src/gpodder/gtkui/desktop/preferences.py:52 msgid "Show episode list" msgstr "Mostrar a lista de episodios" #: src/gpodder/gtkui/desktop/preferences.py:53 msgid "Add to download list" msgstr "Engadir УЁ lista de descargas" #: src/gpodder/gtkui/desktop/preferences.py:54 msgid "Download immediately" msgstr "Descargar inmediatamente" #: src/gpodder/gtkui/desktop/preferences.py:72 msgid "None" msgstr "NingУКn" #: src/gpodder/gtkui/desktop/preferences.py:73 msgid "iPod" msgstr "" #: src/gpodder/gtkui/desktop/preferences.py:74 msgid "Filesystem-based" msgstr "Baseado en sistema de ficheiros" #: src/gpodder/gtkui/desktop/preferences.py:94 msgid "Mark as played" msgstr "Marcar como reproducido" #: src/gpodder/gtkui/desktop/preferences.py:95 msgid "Delete from gPodder" msgstr "Eliminar do gPodder" #: src/gpodder/gtkui/desktop/preferences.py:123 #, fuzzy, python-format msgid "Custom (%(format_ids)s)" msgstr "Convertendo a %(format)s" #: src/gpodder/gtkui/desktop/preferences.py:318 msgid "Name" msgstr "Nome" #: src/gpodder/gtkui/desktop/preferences.py:369 #, fuzzy msgid "Documentation" msgstr "DuraciУГn" #: src/gpodder/gtkui/desktop/preferences.py:374 #, fuzzy msgid "Extension info" msgstr "InformaciУГn do mУГdulo de extensiУГn" #: src/gpodder/gtkui/desktop/preferences.py:379 msgid "Support the author" msgstr "" #: src/gpodder/gtkui/desktop/preferences.py:413 msgid "Extension cannot be activated" msgstr "Non se pode activar a extensiУГn" #: src/gpodder/gtkui/desktop/preferences.py:426 msgid "Extension module info" msgstr "InformaciУГn do mУГdulo de extensiУГn" #: src/gpodder/gtkui/desktop/preferences.py:463 msgid "Configure audio player" msgstr "Configurar o reprodutor de audio" #: src/gpodder/gtkui/desktop/preferences.py:464 #: src/gpodder/gtkui/desktop/preferences.py:474 msgid "Command:" msgstr "Comando:" #: src/gpodder/gtkui/desktop/preferences.py:473 msgid "Configure video player" msgstr "Configurar o reprodutor de vУ­deo" #: src/gpodder/gtkui/desktop/preferences.py:485 #: src/gpodder/gtkui/desktop/preferences.py:503 msgid "manually" msgstr "manualmente" #: src/gpodder/gtkui/desktop/preferences.py:505 #, python-format msgid "after %(count)d day" msgid_plural "after %(count)d days" msgstr[0] "despois de %(count)d dУ­a" msgstr[1] "despois de %(count)d dУ­as" #: src/gpodder/gtkui/desktop/preferences.py:541 msgid "Replace subscription list on server" msgstr "SubstituУ­r a lista de subscriciУГns do servidor" #: src/gpodder/gtkui/desktop/preferences.py:542 msgid "" "Remote podcasts that have not been added locally will be removed on the " "server. Continue?" msgstr "" "Os podcasts remotos que non foron engadidos localmente serУЁn eliminados do " "servidor. Quere continuar?" #: src/gpodder/gtkui/desktop/preferences.py:621 msgid "Select folder for mount point" msgstr "Seleccione o cartafol para o punto de montaxe" #: src/gpodder/gtkui/desktop/preferences.py:638 #, fuzzy msgid "Select folder for playlists" msgstr "Seleccione o cartafol para o punto de montaxe" #: src/gpodder/gtkui/desktop/sync.py:86 msgid "No device configured" msgstr "Non hai ningУКn dispositivo configurado" #: src/gpodder/gtkui/desktop/sync.py:87 msgid "Please set up your device in the preferences dialog." msgstr "Configure o seu dispositivo no diУЁlogo das preferencias." #: src/gpodder/gtkui/desktop/sync.py:91 msgid "Cannot open device" msgstr "Non foi posУ­bel abrir o dispositivo" #: src/gpodder/gtkui/desktop/sync.py:92 msgid "Please check the settings in the preferences dialog." msgstr "Verifique as configuraciУГns no diУЁlogo de preferencias." #: src/gpodder/gtkui/desktop/sync.py:139 msgid "Not enough space left on device" msgstr "Non hai espazo suficiente non dispositivo" #: src/gpodder/gtkui/desktop/sync.py:140 #, python-format msgid "" "Additional free space required: %(required_space)s\n" "Do you want to continue?" msgstr "" "У‰ preciso o seguinte espazo libre: %(required_space)s\n" "Quere continuar?" #: src/gpodder/gtkui/desktop/sync.py:199 #, fuzzy msgid "Update successful" msgstr "A lista foi enviada con УЉxito." #: src/gpodder/gtkui/desktop/sync.py:200 msgid "The playlist on your MP3 player has been updated." msgstr "" #: src/gpodder/gtkui/desktop/sync.py:274 msgid "Episodes have been deleted on device" msgstr "" #: src/gpodder/gtkui/desktop/sync.py:285 #, fuzzy msgid "Error writing playlist files" msgstr "Erro ao converter o ficheiro." #: src/gpodder/plugins/soundcloud.py:154 msgid "Unknown track" msgstr "Pista descoУБecida" #: src/gpodder/plugins/soundcloud.py:181 #, python-format msgid "%s on Soundcloud" msgstr "%s no Soundcloud" #: src/gpodder/plugins/soundcloud.py:190 #, python-format msgid "Tracks published by %s on Soundcloud." msgstr "Pistas publicadas por %s no Soundcloud." #: src/gpodder/plugins/soundcloud.py:217 #, python-format msgid "%s's favorites on Soundcloud" msgstr "Os favoritos de %s no Soundcloud" #: src/gpodder/plugins/soundcloud.py:223 #, python-format msgid "Tracks favorited by %s on Soundcloud." msgstr "As pistas etiqutadas como favoritas por %s no Soundcloud." #: share/gpodder/extensions/audio_converter.py:20 #, fuzzy msgid "Convert audio files" msgstr "Houbo un fallo na conversiУГn" #: share/gpodder/extensions/audio_converter.py:21 #, fuzzy msgid "Transcode audio files to mp3/ogg" msgstr "Transcodificar os ficheiros .m4a a .mp3 ou .ogg usando o ffmpeg" #: share/gpodder/extensions/audio_converter.py:84 #: share/gpodder/extensions/video_converter.py:86 #, python-format msgid "Convert to %(format)s" msgstr "Convertendo a %(format)s" #: share/gpodder/extensions/audio_converter.py:111 #: share/gpodder/extensions/rockbox_convert2mp4.py:65 #: share/gpodder/extensions/video_converter.py:111 msgid "File converted" msgstr "O ficheiro foi convertido" #: share/gpodder/extensions/audio_converter.py:114 #: share/gpodder/extensions/video_converter.py:114 msgid "Conversion failed" msgstr "Houbo un fallo na conversiУГn" #: share/gpodder/extensions/concatenate_videos.py:20 #: share/gpodder/extensions/concatenate_videos.py:100 #, fuzzy msgid "Concatenate videos" msgstr "Houbo un fallo na conversiУГn" #: share/gpodder/extensions/concatenate_videos.py:21 msgid "Add a context menu item for concatenating multiple videos" msgstr "" #: share/gpodder/extensions/concatenate_videos.py:37 msgid "Save video" msgstr "" #: share/gpodder/extensions/concatenate_videos.py:66 #, fuzzy msgid "Concatenating video files" msgstr "Houbo un fallo na conversiУГn" #: share/gpodder/extensions/concatenate_videos.py:67 #, python-format msgid "Writing %(filename)s" msgstr "" #: share/gpodder/extensions/concatenate_videos.py:78 msgid "Videos successfully converted" msgstr "" #: share/gpodder/extensions/concatenate_videos.py:79 #, fuzzy msgid "Error converting videos" msgstr "Erro ao converter o ficheiro." #: share/gpodder/extensions/concatenate_videos.py:80 msgid "Concatenation result" msgstr "" #: share/gpodder/extensions/enqueue_in_mediaplayer.py:16 msgid "Enqueue in media players" msgstr "" #: share/gpodder/extensions/enqueue_in_mediaplayer.py:17 msgid "" "Add a context menu item for enqueueing episodes in installed media players" msgstr "" #: share/gpodder/extensions/enqueue_in_mediaplayer.py:35 msgid "Enqueue in" msgstr "" #: share/gpodder/extensions/episode_website_context_menu.py:14 msgid "\"Open website\" episode context menu" msgstr "" #: share/gpodder/extensions/episode_website_context_menu.py:15 msgid "Add a context menu item for opening the website of an episode" msgstr "" #: share/gpodder/extensions/episode_website_context_menu.py:30 #, fuzzy msgid "Open website" msgstr "Sitio Web:" #: share/gpodder/extensions/gtk_statusicon.py:14 msgid "Gtk Status Icon" msgstr "Icona de estado GTK" #: share/gpodder/extensions/gtk_statusicon.py:15 msgid "Show a status icon for Gtk-based Desktops." msgstr "Mostrar unha icona de estado nos escritorios baseados en GTK" #: share/gpodder/extensions/minimize_on_start.py:10 msgid "Minimize on start" msgstr "Minimizar ao iniciar" #: share/gpodder/extensions/minimize_on_start.py:11 msgid "Minimizes the gPodder window on startup." msgstr "Minimiza a xanela do gPodder no inicio." #: share/gpodder/extensions/mpris-listener.py:33 msgid "MPRIS Listener" msgstr "" #: share/gpodder/extensions/mpris-listener.py:34 msgid "Convert MPRIS notifications to gPodder Media Player D-Bus API" msgstr "" #: share/gpodder/extensions/normalize_audio.py:21 msgid "Normalize audio with re-encoding" msgstr "Normalizar o audio ao recodificar" #: share/gpodder/extensions/normalize_audio.py:22 msgid "Normalize the volume of audio files with normalize-audio" msgstr "Normalizar o volume dos ficheiros de audio con ТЋnormalize-audioТЛ" #: share/gpodder/extensions/normalize_audio.py:99 msgid "File normalized" msgstr "O ficheiro foi normalizado" #: share/gpodder/extensions/rename_download.py:16 msgid "Rename episodes after download" msgstr "Renomear os episodios despois de os descargar" #: share/gpodder/extensions/rename_download.py:17 msgid "Rename episodes to \".\" on download" msgstr "" "Renomear os episodios como ТЋ.\" ao descargalos" #: share/gpodder/extensions/rm_ogg_cover.py:37 msgid "Remove cover art from OGG files" msgstr "Eliminar as portadas dos ficheiros OGG" #: share/gpodder/extensions/rm_ogg_cover.py:38 msgid "removes coverart from all downloaded ogg files" msgstr "Elimina as portadas de todos os ficheiros OGG descargados" #: share/gpodder/extensions/rm_ogg_cover.py:66 msgid "Remove cover art" msgstr "Eliminar as portadas" #: share/gpodder/extensions/rockbox_convert2mp4.py:26 msgid "Convert video files to MP4 for Rockbox" msgstr "Converter os ficheiros de vУ­deo a MP4 para Rockbox" #: share/gpodder/extensions/rockbox_convert2mp4.py:27 msgid "Converts all videos to a Rockbox-compatible format" msgstr "Converter todos os vУ­deos a un formato compatУ­bel con Rockbox" #: share/gpodder/extensions/sonos.py:19 share/gpodder/extensions/sonos.py:78 msgid "Stream to Sonos" msgstr "" #: share/gpodder/extensions/sonos.py:20 msgid "Stream podcasts to Sonos speakers" msgstr "" #: share/gpodder/extensions/tagging.py:45 msgid "Tag downloaded files using Mutagen" msgstr "Etiquetar os ficheiros descargados con Mutagen" #: share/gpodder/extensions/tagging.py:46 msgid "Add episode and podcast titles to MP3/OGG tags" msgstr "Engadir os tУ­tulos de episodio e de podcast УЁs etiquetas MP3/OGG" #: share/gpodder/extensions/taskbar_progress.py:28 #, fuzzy msgid "Show download progress on the taskbar" msgstr "Mostrar o progreso da descarga na icona do Lanzador de Ubuntu." #: share/gpodder/extensions/taskbar_progress.py:29 msgid "Displays the progress on the Windows taskbar." msgstr "" #: share/gpodder/extensions/ted_subtitles.py:16 msgid "Subtitle Downloader for TED Talks" msgstr "Descarga de subtУ­tulos para as charlas TED" #: share/gpodder/extensions/ted_subtitles.py:17 msgid "Downloads .srt subtitles for TED Talks Videos" msgstr "Descarga subtУКtulos .srt para os vУ­deos de charlas TED" #: share/gpodder/extensions/ubuntu_appindicator.py:10 msgid "Ubuntu App Indicator" msgstr "Indicador de aplicativo de Ubuntu" #: share/gpodder/extensions/ubuntu_appindicator.py:11 msgid "Show a status indicator in the top bar." msgstr "Mostrar un indicador de estado na barra superior." #: share/gpodder/extensions/ubuntu_appindicator.py:47 msgid "Show main window" msgstr "Mostrar a xanela principal" #: share/gpodder/extensions/ubuntu_appindicator.py:57 #: share/gpodder/ui/gtk/gpodder.ui.h:6 msgid "Quit" msgstr "SaУ­r" #: share/gpodder/extensions/ubuntu_unity.py:10 msgid "Ubuntu Unity Integration" msgstr "IntegraciУГn en Ubuntu Unity" #: share/gpodder/extensions/ubuntu_unity.py:11 msgid "Show download progress in the Unity Launcher icon." msgstr "Mostrar o progreso da descarga na icona do Lanzador de Ubuntu." #: share/gpodder/extensions/update_feeds_on_startup.py:14 #, fuzzy msgid "Search for new episodes on startup" msgstr "Verificar por episodios novos mУЁis tarde." #: share/gpodder/extensions/update_feeds_on_startup.py:15 #, fuzzy msgid "Starts the search for new episodes on startup" msgstr "Verificar por episodios novos mУЁis tarde." #: share/gpodder/extensions/video_converter.py:22 #, fuzzy msgid "Convert video files" msgstr "Houbo un fallo na conversiУГn" #: share/gpodder/extensions/video_converter.py:23 #, fuzzy msgid "Transcode video files to avi/mp4/m4v" msgstr "Transcodificar os ficheiros .m4a a .mp3 ou .ogg usando o ffmpeg" #: share/gpodder/ui/gtk/gpodderaddpodcast.ui.h:1 msgid "Add a new podcast" msgstr "Engadir un podcast novo" #: share/gpodder/ui/gtk/gpodderaddpodcast.ui.h:2 msgid "URL:" msgstr "URL:" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:1 msgid "gPodder Podcast Editor" msgstr "Editor de Podcasts gPodder" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:2 msgid "Section:" msgstr "SecciУГn:" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:3 msgid "Disable feed updates (pause subscription)" msgstr "Desactivar a actualizaciУГn de feeds (deter a subscriciУГn)" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:4 msgid "Synchronize to MP3 player devices" msgstr "" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:5 msgid "Strategy:" msgstr "" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:6 #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:6 msgid "General" msgstr "Xeral" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:7 msgid "HTTP/FTP Authentication" msgstr "AutenticaciУГn HTTP/FTP" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:8 #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:13 msgid "Username:" msgstr "Nome de persoa usuaria:" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:9 #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:14 msgid "Password:" msgstr "Contrasinal:" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:10 msgid "Locations" msgstr "LocalizaciУГns" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:11 msgid "Download to:" msgstr "Descargar a:" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:12 msgid "Website:" msgstr "Sitio Web:" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:13 msgid "website label" msgstr "etiqueta do sitio web" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:14 msgid "Advanced" msgstr "Avanzado" #: share/gpodder/ui/gtk/gpodderconfigeditor.ui.h:1 msgid "gPodder Configuration Editor" msgstr "Editor de configuraciУГn do gPodder" #: share/gpodder/ui/gtk/gpodderconfigeditor.ui.h:2 msgid "Search for:" msgstr "Buscar por:" #: share/gpodder/ui/gtk/gpodderconfigeditor.ui.h:3 msgid "Show All" msgstr "Mostrar todo" #: share/gpodder/ui/gtk/gpodderepisodeselector.ui.h:1 msgid "Select episodes" msgstr "Seleccionar episodios" #: share/gpodder/ui/gtk/gpodderpodcastdirectory.ui.h:1 msgid "Find new podcasts" msgstr "Encontrar podcast novos" #: share/gpodder/ui/gtk/gpodderpodcastdirectory.ui.h:2 msgid "Select All" msgstr "Seleccionar todo" #: share/gpodder/ui/gtk/gpodderpodcastdirectory.ui.h:3 msgid "Select None" msgstr "Deseleccionar todo" #: share/gpodder/ui/gtk/gpodderpodcastdirectory.ui.h:4 msgid "label" msgstr "" #: share/gpodder/ui/gtk/gpodderpodcastdirectory.ui.h:5 msgid "..." msgstr "" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:1 #: share/gpodder/ui/gtk/gpodder.ui.h:5 msgid "Preferences" msgstr "Preferencias" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:2 msgid "Audio player:" msgstr "Reprodutor de audio:" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:3 msgid "Video player:" msgstr "Reprodutor de vУ­deo:" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:4 msgid "\"All episodes\" in podcast list" msgstr "\"Todos os episodios\" na lista de podcasts" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:5 msgid "Use sections for podcast list" msgstr "Usar secciУГns na lista de podcasts" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:7 msgid "Preferred YouTube format:" msgstr "" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:8 msgid "YouTube API key (v3):" msgstr "" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:9 msgid "Preferred Vimeo format:" msgstr "" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:11 msgid "Extensions" msgstr "ExtensiУГns" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:12 msgid "Synchronize subscriptions and episode actions" msgstr "Sincronizar as acciУГns de subscriciУГn e episodios" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:15 msgid "Replace list on server with local subscriptions" msgstr "SubstituУ­r a lista do servidor coas subscriciУГns locais" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:16 msgid "Device name:" msgstr "Nome do dispositivo:" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:17 msgid "gpodder.net" msgstr "gpodder.net" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:18 msgid "Update interval:" msgstr "Intervalo de actualizaciУГn:" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:19 msgid "Maximum number of episodes per podcast:" msgstr "NУКmero mУЁximo de episodios por podcast:" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:20 msgid "When new episodes are found:" msgstr "Cando se encontren episodios novos:" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:21 msgid "Updating" msgstr "Actualizando" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:22 msgid "Delete played episodes:" msgstr "Eliminar os episodios reproducidos:" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:23 msgid "Remove played episodes even if unfinished" msgstr "Eliminar os episodios reproducidos incluso se non foron terminados" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:24 msgid "Also remove unplayed episodes" msgstr "Eliminar tamУЉn os episodios sen reproducir" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:25 msgid "Clean-up" msgstr "Limpar" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:26 msgid "Device type:" msgstr "Tipo de dispositivo" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:27 msgid "Mountpoint:" msgstr "Punto de montaxe:" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:28 msgid "After syncing an episode:" msgstr "Despois de sincronizar un episodio:" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:29 #, fuzzy msgid "Create playlists on device" msgstr "SubstituУ­r a lista do servidor" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:30 #, fuzzy msgid "Playlists Folder:" msgstr "A lista de reproduciУГn estУЁ baleira" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:31 msgid "Remove episodes deleted on device from gPodder" msgstr "" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:32 msgid "Only sync unplayed episodes" msgstr "Sincronizar sУГ os episodios sen reproducir" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:33 msgid "Devices" msgstr "Dispositivos" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:34 msgid "Edit config" msgstr "Editar a configuraciУГn" #: share/gpodder/ui/gtk/gpodder.ui.h:1 msgid "_Podcasts" msgstr "_Podcasts" #: share/gpodder/ui/gtk/gpodder.ui.h:2 msgid "Check for new episodes" msgstr "Verificar se hai episodios novos" #: share/gpodder/ui/gtk/gpodder.ui.h:3 msgid "Download new episodes" msgstr "Descargar episodios novos" #: share/gpodder/ui/gtk/gpodder.ui.h:7 msgid "_Subscriptions" msgstr "_SubscriciУГns" #: share/gpodder/ui/gtk/gpodder.ui.h:8 msgid "Discover new podcasts" msgstr "Descubrir novos podcasts" #: share/gpodder/ui/gtk/gpodder.ui.h:9 msgid "Add podcast via URL" msgstr "Engadir un podcast a travУЉs dun URL" #: share/gpodder/ui/gtk/gpodder.ui.h:11 msgid "Unsubscribe" msgstr "Cancelar a subscriciУГn" #: share/gpodder/ui/gtk/gpodder.ui.h:14 msgid "Import from OPML file" msgstr "Importar dun ficheiro OPML" #: share/gpodder/ui/gtk/gpodder.ui.h:15 msgid "Export to OPML file" msgstr "Exportar a un ficheiro OPML" #: share/gpodder/ui/gtk/gpodder.ui.h:16 msgid "Go to gpodder.net" msgstr "Ir a gpodder.net" #: share/gpodder/ui/gtk/gpodder.ui.h:17 msgid "_Episodes" msgstr "_Episodios" #: share/gpodder/ui/gtk/gpodder.ui.h:18 msgid "Play" msgstr "Reproducir" #: share/gpodder/ui/gtk/gpodder.ui.h:19 msgid "Open" msgstr "Abrir" #: share/gpodder/ui/gtk/gpodder.ui.h:22 msgid "Delete" msgstr "Eliminar" #: share/gpodder/ui/gtk/gpodder.ui.h:23 msgid "Toggle new status" msgstr "Alternar para o novo estado" #: share/gpodder/ui/gtk/gpodder.ui.h:24 msgid "Change delete lock" msgstr "Cambiar o bloqueo de eliminaciУГn" #: share/gpodder/ui/gtk/gpodder.ui.h:26 msgid "E_xtras" msgstr "E_xtras" #: share/gpodder/ui/gtk/gpodder.ui.h:27 msgid "Sync to device" msgstr "Sincronizar no dispositivo" #: share/gpodder/ui/gtk/gpodder.ui.h:28 #, fuzzy msgid "Update YouTube subscriptions" msgstr "Sen subscriciУГns" #: share/gpodder/ui/gtk/gpodder.ui.h:29 msgid "_View" msgstr "_Ver" #: share/gpodder/ui/gtk/gpodder.ui.h:30 msgid "Toolbar" msgstr "Barra de ferramentas" #: share/gpodder/ui/gtk/gpodder.ui.h:31 msgid "Episode descriptions" msgstr "DescriciУГns de episodio" #: share/gpodder/ui/gtk/gpodder.ui.h:33 msgid "Hide deleted episodes" msgstr "Ocultar os episodios eliminados" #: share/gpodder/ui/gtk/gpodder.ui.h:34 msgid "Downloaded episodes" msgstr "Episodios descargados" #: share/gpodder/ui/gtk/gpodder.ui.h:35 msgid "Unplayed episodes" msgstr "Episodios non reproducidos" #: share/gpodder/ui/gtk/gpodder.ui.h:36 msgid "Hide podcasts without episodes" msgstr "Ocultar os podcast sen episodios" #: share/gpodder/ui/gtk/gpodder.ui.h:37 msgid "_Help" msgstr "_Axuda" #: share/gpodder/ui/gtk/gpodder.ui.h:38 msgid "User manual" msgstr "Manual de persoa usuaria:" #: share/gpodder/ui/gtk/gpodder.ui.h:39 msgid "Software updates" msgstr "ActualizaciУГns de software" #: share/gpodder/ui/gtk/gpodder.ui.h:40 msgid "Filter:" msgstr "Filtro:" #: share/gpodder/ui/gtk/gpodder.ui.h:41 msgid "Podcasts" msgstr "Podcasts" #: share/gpodder/ui/gtk/gpodder.ui.h:42 msgid "Limit rate to" msgstr "Limitar a velocidade de descarga a" #: share/gpodder/ui/gtk/gpodder.ui.h:43 msgid "KiB/s" msgstr "KiB/s" #: share/gpodder/ui/gtk/gpodder.ui.h:44 msgid "Limit downloads to" msgstr "Limitar o nУКmero de descargas a" #: share/gpodder/ui/gtk/gpodderwelcome.ui.h:2 msgid "Welcome to gPodder" msgstr "Benvido/a ao gPodder" #: share/gpodder/ui/gtk/gpodderwelcome.ui.h:3 msgid "Your podcast list is empty." msgstr "A sУКa lista de podcasts estУЁ baleira." #: share/gpodder/ui/gtk/gpodderwelcome.ui.h:4 msgid "Choose from a list of example podcasts" msgstr "Seleccionar dunha lista de podcasts de exemplo" #: share/gpodder/ui/gtk/gpodderwelcome.ui.h:5 msgid "Add a podcast by entering its URL" msgstr "Engadir un podcast escribindo o seu URL" #: share/gpodder/ui/gtk/gpodderwelcome.ui.h:6 msgid "Restore my subscriptions from gpodder.net" msgstr "Recuperar as miУБas subscriciУГns desde gpodder.net" #: bin/gpo:266 msgid "Podcast update requested by extensions." msgstr "As extensiУГns requiriron unha actualizaciУГn de podcast." #: bin/gpo:270 msgid "Episode download requested by extensions." msgstr "As extensiУГns requiriron a descarga dun episodio." #: bin/gpo:323 #, fuzzy, python-format msgid "Invalid url: %s" msgstr "URL non vУЁlido: %s" #: bin/gpo:340 bin/gpo:416 bin/gpo:450 bin/gpo:582 bin/gpo:597 bin/gpo:717 #, python-format msgid "You are not subscribed to %s." msgstr "Non estУЁ subscrito a %s." #: bin/gpo:346 #, fuzzy, python-format msgid "Already subscribed to %s." msgstr "Non se pode subscribir a %s." #: bin/gpo:352 #, python-format msgid "Cannot subscribe to %s." msgstr "Non se pode subscribir a %s." #: bin/gpo:368 #, python-format msgid "Successfully added %s." msgstr "%s foi engadido con УЉxito." #: bin/gpo:386 msgid "This configuration option does not exist." msgstr "Esta opciУГn de configuraciУГn non existe." #: bin/gpo:390 msgid "Can only set leaf configuration nodes." msgstr "SУГ se poden definir nodos de configuraciУГn folla (leaf node)." #: bin/gpo:404 #, python-format msgid "Renamed %(old_title)s to %(new_title)s." msgstr "Renomeouse %(old_title)s como %(new_title)s." #: bin/gpo:420 #, python-format msgid "Unsubscribed from %s." msgstr "Eliminouse a subscriciУГn a %s." #: bin/gpo:494 msgid "Updates disabled" msgstr "As actualizaciУГns estУЁn desactivadas" #: bin/gpo:505 #, python-format msgid "%(count)d new episode" msgid_plural "%(count)d new episodes" msgstr[0] "%(count)d episodio novo" msgstr[1] "%(count)d episodios novos" #: bin/gpo:511 msgid "Checking for new episodes" msgstr "Verificando se hai episodios novos" #: bin/gpo:520 #, python-format msgid "Skipping %(podcast)s" msgstr "Omitindo %(podcast)s" #: bin/gpo:588 #, python-format msgid "Disabling feed update from %s." msgstr "Desactivando a actualizaciУГn do fУ­o de %s." #: bin/gpo:603 #, python-format msgid "Enabling feed update from %s." msgstr "Activando a actualizaciУГn do fУ­o de %s." #: bin/gpo:616 #, python-format msgid "Please register a YouTube API key and set it using %(command)s." msgstr "" #: bin/gpo:643 #, fuzzy, python-format msgid "Changing: %(old_url)s => %(new_url)s" msgstr "CambiУЁronse os URL de %(old_url)s a %(new_url)s." #: bin/gpo:653 #, fuzzy msgid "Nothing to fix" msgstr "Non hai nada para exportar" #: bin/gpo:672 msgid "No podcasts found." msgstr "Non se encontrou ningУКn podcast." #: bin/gpo:686 msgid "Enter index to subscribe, ? for list" msgstr "Introduza o index ao que se subscribir (use -?- para unha lista)" #: bin/gpo:700 bin/gpo:704 msgid "Invalid value." msgstr "Valor incorrecto." #: bin/gpo:721 #, python-format msgid "Invalid URL: %s" msgstr "URL non vУЁlido: %s" #: bin/gpo:724 #, python-format msgid "Changed URL from %(old_url)s to %(new_url)s." msgstr "CambiУЁronse os URL de %(old_url)s a %(new_url)s." #: bin/gpo:782 #, python-format msgid "Syntax error: %(error)s" msgstr "Erro de sintaxe: %(error)s" #: bin/gpo:876 #, fuzzy msgid "Ambiguous command. Did you mean.." msgstr "Comando ambiguo. QuerУ­a dicir..." #: bin/gpo:880 msgid "The requested function is not available." msgstr "A funciУГn solicitada non estУЁ dispoУБУ­bel." #: bin/gpodder:105 #, fuzzy msgid "print logging output on the console" msgstr "Imprimir a saУ­da de depuraciУГn na saУ­da estУЁndar" #: bin/gpodder:108 #, fuzzy msgid "subscribe to the feed at URL" msgstr "Subscribirse ao URL indicado" #: bin/gpodder:113 msgid "Mac OS X application process number" msgstr "NУКmero de proceso de aplicaciУГn de Mac OS X" #: share/applications/gpodder.desktop.in.h:2 msgid "gPodder Podcast Client" msgstr "Cliente de podcast gPodder" #: share/applications/gpodder.desktop.in.h:3 msgid "Podcast Client" msgstr "Cliente de podcast" #: share/applications/gpodder.desktop.in.h:4 msgid "Subscribe to audio and video content from the web" msgstr "Subscribirse a contidos de audio e vУ­deo desde a web" #: share/applications/gpodder-url-handler.desktop.in.h:1 #, fuzzy msgid "gPodder (subscribe to feed)" msgstr "Subscribirse ao URL indicado" gpodder-3.9.0/po/kk.po0000644000016000001710000020303512654461625015662 0ustar jenkinsjenkins00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # # Translators: # Baurzhan Muftakhidinov , 2010,2012. msgid "" msgstr "" "Project-Id-Version: gPodder\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2016-02-03 20:31+0000\n" "PO-Revision-Date: 2013-01-19 12:30+0000\n" "Last-Translator: Baurzhan Muftakhidinov \n" "Language-Team: Kazakh (http://www.transifex.com/projects/p/gpodder/language/" "kk/)\n" "Language: kk\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" #: src/gpodder/config.py:55 #, python-format msgid "gPodder on %s" msgstr "gPodder, %s" #: src/gpodder/directory.py:95 #, fuzzy msgid "gpodder.net search" msgstr "gpodder.net" #: src/gpodder/directory.py:104 #, fuzzy msgid "OPML from web" msgstr "OPML б„аАаЙаЛаДаАб€б‹" #: src/gpodder/directory.py:113 #, fuzzy msgid "OPML file" msgstr "OPML б„аАаЙаЛаДаАб€б‹" #: src/gpodder/directory.py:122 share/gpodder/ui/gtk/gpodderwelcome.ui.h:1 msgid "Getting started" msgstr "а‘аАбб‚аАбƒ вЏбˆб–аН" #: src/gpodder/directory.py:131 #, fuzzy msgid "gpodder.net Top 50" msgstr "gpodder.net" #: src/gpodder/directory.py:140 #, fuzzy msgid "gpodder.net Tags" msgstr "gpodder.net" #: src/gpodder/directory.py:152 #, fuzzy msgid "Soundcloud search" msgstr "%s Soundcloud-б‚аА" #: src/gpodder/directory.py:165 #, fuzzy msgid "Imported OPML file" msgstr "OPML б„аАаЙаЛб‹аНаАаН аИаМаПаОб€б‚б‚аАбƒ" #: src/gpodder/download.py:329 msgid "Wrong username/password" msgstr "вšаАб‚аЕ б‚б–б€аКаЕаЛаГб–/аПаАб€аОаЛбŒ" #: src/gpodder/download.py:527 src/gpodder/sync.py:924 msgid "Added" msgstr "вšаОбб‹аЛв“аАаН" #: src/gpodder/download.py:527 src/gpodder/sync.py:924 msgid "Queued" msgstr "аšаЕаЗаЕаКб‚аЕ" #: src/gpodder/download.py:527 src/gpodder/gtkui/model.py:327 msgid "Downloading" msgstr "а–вЏаКб‚аЕаЛбƒаДаЕ" #: src/gpodder/download.py:528 src/gpodder/model.py:721 #: src/gpodder/sync.py:925 msgid "Finished" msgstr "абв›б‚аАаЛв“аАаН" #: src/gpodder/download.py:528 src/gpodder/sync.py:925 msgid "Failed" msgstr "аЁг™б‚бб–аЗ аАбв›б‚аАаЛаДб‹" #: src/gpodder/download.py:528 src/gpodder/sync.py:925 msgid "Cancelled" msgstr "а‘аАб б‚аАб€б‚б‹аЛв“аАаН" #: src/gpodder/download.py:528 src/gpodder/sync.py:925 msgid "Paused" msgstr "абаЛаДаАб‚б‹аЛв“аАаН" #: src/gpodder/download.py:862 msgid "Missing content from server" msgstr "аЁаЕб€аВаЕб€аДаЕаН в›вБб€аАаМаА аЖаОв›" #: src/gpodder/download.py:868 #, python-format msgid "I/O Error: %(error)s: %(filename)s" msgstr "а•/аЈ в›аАб‚аЕбб–: %(error)s: %(filename)s" #: src/gpodder/download.py:875 #, python-format msgid "HTTP Error %(code)s: %(message)s" msgstr "HTTP в›аАб‚аЕбб– %(code)s: %(message)s" #: src/gpodder/download.py:879 src/gpodder/sync.py:1081 #, python-format msgid "Error: %s" msgstr "вšаАб‚аЕ: %s" #: src/gpodder/extensions.py:55 #, fuzzy msgid "Desktop Integration" msgstr "Ubuntu Unity аИаНб‚аЕаГб€аАб†аИббб‹" #: src/gpodder/extensions.py:56 #, fuzzy msgid "Interface" msgstr "а‘вЏб‚б–аН баАаН" #: src/gpodder/extensions.py:57 #, fuzzy msgid "Post download" msgstr "а–вЏаКб‚аЕаМаЕаНб– аАбаЛаДаАб‚бƒ" #: src/gpodder/extensions.py:59 src/gpodder/model.py:779 #: src/gpodder/model.py:1225 msgid "Other" msgstr "а‘аАбв›аА" #: src/gpodder/extensions.py:100 msgid "No description for this extension." msgstr "а‘вБаЛ аКаЕвЃаЕаЙб‚бƒ вЏбˆб–аН баИаМаАб‚б‚аАаМаАбб‹ аЖаОв›." #: src/gpodder/extensions.py:212 #, python-format msgid "Command not found: %(command)s" msgstr "аšаОаМаАаНаДаА б‚аАаБб‹аЛаМаАаДб‹: %(command)s" #: src/gpodder/extensions.py:228 #, python-format msgid "Need at least one of the following commands: %(list_of_commands)s" msgstr "" #: src/gpodder/extensions.py:265 #, python-format msgid "Python module not found: %(module)s" msgstr "Python аМаОаДбƒаЛб– б‚аАаБб‹аЛаМаАаДб‹: %(module)s" #: src/gpodder/model.py:446 src/gpodder/plugins/soundcloud.py:156 msgid "No description available" msgstr "ааНб‹в›б‚аАаМаАбб‹ аЖаОв›" #: src/gpodder/model.py:679 msgid "unknown" msgstr "аБаЕаЛаГб–бб–аЗ" #: src/gpodder/model.py:746 msgid "Default" msgstr "" #: src/gpodder/model.py:747 msgid "Only keep latest" msgstr "" #: src/gpodder/model.py:1208 src/gpodder/model.py:1223 #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:10 msgid "Video" msgstr "а’аИаДаЕаО" #: src/gpodder/model.py:1221 msgid "Audio" msgstr "абƒаДаИаО" #: src/gpodder/my.py:174 #, python-format msgid "Add %s" msgstr "вšаОббƒ %s" #: src/gpodder/my.py:176 #, python-format msgid "Remove %s" msgstr "гЈбˆб–б€бƒ %s" #: src/gpodder/sync.py:196 msgid "Cancelled by user" msgstr "аŸаАаЙаДаАаЛаАаНбƒбˆб‹ аБаОаЛаДб‹б€аМаАв“аАаН" #: src/gpodder/sync.py:199 msgid "Writing data to disk" msgstr "аœг™аЛб–аМаЕб‚б‚б– аДаИбаКб–аГаЕ аЖаАаЗбƒ" #: src/gpodder/sync.py:295 msgid "Opening iPod database" msgstr "iPod аДаЕб€аЕаКв›аОб€б‹аН аАбˆбƒ" #: src/gpodder/sync.py:305 msgid "iPod opened" msgstr "iPod аАбˆб‹аЛаДб‹" #: src/gpodder/sync.py:316 msgid "Saving iPod database" msgstr "iPod аДаЕб€аЕаКв›аОб€б‹аН баАв›б‚аАбƒ" #: src/gpodder/sync.py:321 msgid "Writing extended gtkpod database" msgstr "аšаЕвЃаЕаЙб‚б–аЛаГаЕаН gtkpod аДаЕб€аЕаКв›аОб€б‹аН аЖаАаЗбƒ" #: src/gpodder/sync.py:397 src/gpodder/sync.py:680 src/gpodder/sync.py:874 #, python-format msgid "Removing %s" msgstr "гЈбˆб–б€бƒаДаЕ %s" #: src/gpodder/sync.py:412 src/gpodder/sync.py:557 #, python-format msgid "Adding %s" msgstr "вšаОббƒаДаА %s" #: src/gpodder/sync.py:430 #, python-format msgid "Error copying %(episode)s: Not enough free space on %(mountpoint)s" msgstr "%(episode)s аКгЉбˆб–б€бƒ в›аАб‚аЕбб–: %(mountpoint)s б–бˆб–аНаДаЕ аБаОб аОб€б‹аН аЖаЕб‚аКб–аЛб–аКбб–аЗ" #: src/gpodder/sync.py:515 msgid "Opening MP3 player" msgstr "MP3 аПаЛаЕаЕб€б–аН аАбˆбƒ" #: src/gpodder/sync.py:518 msgid "MP3 player opened" msgstr "MP3 аПаЛаЕаЕб€б– аАбˆб‹аЛаДб‹" #: src/gpodder/sync.py:576 #, python-format msgid "" "Not enough space in %(path)s: %(free)s available, but need at least %(need)s" msgstr "" #: src/gpodder/sync.py:603 src/gpodder/sync.py:611 #, python-format msgid "Error opening %(filename)s: %(message)s" msgstr "%(filename)s аАбˆбƒ в›аАб‚аЕбб–: %(message)s" #: src/gpodder/sync.py:780 src/gpodder/sync.py:786 msgid "MTP device" msgstr "MTP в›вБб€б‹аЛв“б‹бб‹" #: src/gpodder/sync.py:793 msgid "Opening the MTP device" msgstr "MTP в›вБб€б‹аЛв“б‹бб‹аН аАбˆбƒ" #: src/gpodder/sync.py:803 #, python-format msgid "%s opened" msgstr "%s аАбˆб‹аЛаДб‹" #: src/gpodder/sync.py:808 #, python-format msgid "Closing %s" msgstr "а–аАаБбƒ %s" #: src/gpodder/sync.py:816 #, python-format msgid "%s closed" msgstr "%s аЖаАаБб‹аЛаДб‹" #: src/gpodder/sync.py:821 bin/gpo:708 #, python-format msgid "Adding %s..." msgstr "вšаОбб‹аЛбƒаДаА %s..." #: src/gpodder/sync.py:924 msgid "Synchronizing" msgstr "аЁаИаНб…б€аОаНаДаАаЛбƒ" #: src/gpodder/util.py:429 #, python-format msgid "%(count)d day ago" msgid_plural "%(count)d days ago" msgstr[0] "%(count)d аКвЏаН аБвБб€б‹аН" #: src/gpodder/util.py:508 msgid "Today" msgstr "а‘вЏаГб–аН" #: src/gpodder/util.py:510 msgid "Yesterday" msgstr "аšаЕбˆаЕ" #: src/gpodder/util.py:553 src/gpodder/util.py:556 msgid "(unknown)" msgstr "(аБаЕаЛаГб–бб–аЗ)" #: src/gpodder/util.py:1193 src/gpodder/util.py:1212 #, python-format msgid "%(count)d second" msgid_plural "%(count)d seconds" msgstr[0] "%(count)d баЕаКбƒаНаД" #: src/gpodder/util.py:1206 #, python-format msgid "%(count)d hour" msgid_plural "%(count)d hours" msgstr[0] "%(count)d баАв“аАб‚" #: src/gpodder/util.py:1209 #, python-format msgid "%(count)d minute" msgid_plural "%(count)d minutes" msgstr[0] "%(count)d аМаИаНбƒб‚" #: src/gpodder/util.py:1215 msgid "and" msgstr "аЖг™аНаЕ" #: src/gpodder/gtkui/config.py:50 msgid "Integer" msgstr "а‘вЏб‚б–аН баАаН" #: src/gpodder/gtkui/config.py:52 msgid "Float" msgstr "вšаАаЛв›б‹аМаАаЛб‹ баАаН" #: src/gpodder/gtkui/config.py:54 msgid "Boolean" msgstr "Boolean" #: src/gpodder/gtkui/config.py:56 msgid "String" msgstr "String" #: src/gpodder/gtkui/desktopfile.py:70 #, python-format msgid "Command: %s" msgstr "аšаОаМаАаНаДаА: %s" #: src/gpodder/gtkui/desktopfile.py:150 msgid "Default application" msgstr "ааЕаГб–аЗаГб– в›аОаЛаДаАаНаБаА" #: src/gpodder/gtkui/main.py:205 share/applications/gpodder.desktop.in.h:1 msgid "gPodder" msgstr "gPodder" #: src/gpodder/gtkui/main.py:288 msgid "Loading incomplete downloads" msgstr "аЂаОаЛб‹в› аЕаМаЕб аЖвЏаКб‚аЕаМаЕаЛаЕб€аДб– аАаЛбƒ" #: src/gpodder/gtkui/main.py:289 msgid "Some episodes have not finished downloading in a previous session." msgstr "ааЛаДб‹аНаДаАв“б‹ баЕббаИбаДаА аКаЕаЙаБб–б€ аЖвЏаКб‚аЕаМаЕаЛаЕб€ аАбв›б‚аАаЛаМаАв“аАаН." #: src/gpodder/gtkui/main.py:291 #, python-format msgid "%(count)d partial file" msgid_plural "%(count)d partial files" msgstr[0] "%(count)d б‚аОаЛб‹в› аЕаМаЕб б„аАаЙаЛ" #: src/gpodder/gtkui/main.py:306 msgid "Resume all" msgstr "а‘аАб€аЛб‹в“б‹аН аЖаАаЛв“аАбб‚б‹б€бƒ" #: src/gpodder/gtkui/main.py:316 msgid "Incomplete downloads from a previous session were found." msgstr "ааЛаДб‹аНаДаАв“б‹ баЕббаИбаДаАаН в›аАаЛв“аАаН аАбв›б‚аАаЛаМаАв“аАаН аЖвЏаКб‚аЕаМаЕаЛаЕб€ аБаАб€." #: src/gpodder/gtkui/main.py:414 msgid "Action" msgstr "г˜б€аЕаКаЕб‚" #: src/gpodder/gtkui/main.py:461 msgid "Confirm changes from gpodder.net" msgstr "gpodder.net-б‚аЕаН гЉаЗаГаЕб€б–бб‚аЕб€аДб– б€аАбб‚аАвЃб‹аЗ" #: src/gpodder/gtkui/main.py:462 msgid "Select the actions you want to carry out." msgstr "аžб€б‹аНаДаАбƒ вЏб–бˆаН г™б€аЕаКаЕб‚б‚б– б‚аАвЃаДаАвЃб‹аЗ." #: src/gpodder/gtkui/main.py:502 msgid "Uploading subscriptions" msgstr "а–аАаЗб‹аЛбƒаЛаАб€аДб‹ аЖвЏаКб‚аЕбƒ" #: src/gpodder/gtkui/main.py:503 msgid "Your subscriptions are being uploaded to the server." msgstr "а–аАаЗб‹аЛбƒаЛаАб€б‹вЃб‹аЗ баЕб€аВаЕб€аГаЕ аЖвЏаКб‚аЕаЛбƒаДаЕ." #: src/gpodder/gtkui/main.py:508 msgid "List uploaded successfully." msgstr "аЂб–аЗб–аМ бг™б‚б‚б– аЖвЏаКб‚аЕаЛаДб–." #: src/gpodder/gtkui/main.py:515 msgid "Error while uploading" msgstr "а–вЏаКб‚аЕбƒ аКаЕаЗб–аНаДаЕ в›аАб‚аЕ аКаЕб‚б‚б–" #: src/gpodder/gtkui/main.py:800 src/gpodder/gtkui/main.py:928 #: src/gpodder/gtkui/main.py:2622 src/gpodder/gtkui/main.py:2815 #: src/gpodder/gtkui/desktop/episodeselector.py:132 #: src/gpodder/gtkui/desktop/sync.py:270 msgid "Episode" msgstr "а­аПаИаЗаОаД" #: src/gpodder/gtkui/main.py:819 msgid "Size" msgstr "гЈаЛбˆаЕаМб–" #: src/gpodder/gtkui/main.py:824 msgid "Duration" msgstr "вАаЗаАв›б‚б‹в“б‹" #: src/gpodder/gtkui/main.py:828 msgid "Released" msgstr "аЈб‹в›в›аАаН" #: src/gpodder/gtkui/main.py:855 msgid "Visible columns" msgstr "аšгЉб€б–аНаЕб‚б–аН аБаАв“аАаНаДаАб€" #: src/gpodder/gtkui/main.py:948 src/gpodder/gtkui/main.py:1108 #: share/gpodder/ui/gtk/gpodder.ui.h:45 msgid "Progress" msgstr "а‘аАб€б‹бб‹" #: src/gpodder/gtkui/main.py:982 msgid "Loading episodes" msgstr "а­аПаИаЗаОаДб‚аАб€ аЖвЏаКб‚аЕаЛбƒаДаЕ" #: src/gpodder/gtkui/main.py:985 msgid "No episodes in current view" msgstr "ав“б‹аМаДаАв“б‹ аКгЉб€б–аНб–бб‚аЕ баПаИаЗаОаДб‚аАб€ аЖаОв›" #: src/gpodder/gtkui/main.py:987 msgid "No episodes available" msgstr "вšаОаЛаЖаЕб‚аЕб€аЛб–аК баПаИаЗаОаДб‚аАб€ аЖаОв›" #: src/gpodder/gtkui/main.py:993 msgid "No podcasts in this view" msgstr "а‘вБаЛ аКгЉб€б–аНб–бб‚аЕ аПаОаДаКаАбб‚б‚аАб€ аЖаОв›" #: src/gpodder/gtkui/main.py:995 msgid "No subscriptions" msgstr "а–аАаЗб‹аЛбƒаЛаАб€ аЖаОв›" #: src/gpodder/gtkui/main.py:997 msgid "No active tasks" msgstr "а‘аЕаЛбаЕаНаДб– б‚аАаПбб‹б€аМаАаЛаАб€ аЖаОв›" #: src/gpodder/gtkui/main.py:1112 src/gpodder/gtkui/main.py:1114 #, python-format msgid "%(count)d active" msgid_plural "%(count)d active" msgstr[0] "%(count)d аБаЕаЛбаЕаНаДб–" #: src/gpodder/gtkui/main.py:1116 #, python-format msgid "%(count)d failed" msgid_plural "%(count)d failed" msgstr[0] "%(count)d бг™б‚бб–аЗ" #: src/gpodder/gtkui/main.py:1118 #, python-format msgid "%(count)d queued" msgid_plural "%(count)d queued" msgstr[0] "%(count)d аКаЕаЗаЕаКб‚аЕ" #: src/gpodder/gtkui/main.py:1132 #, python-format msgid "downloading %(count)d file" msgid_plural "downloading %(count)d files" msgstr[0] "%(count)d б„аАаЙаЛ аЖвЏаКб‚аЕаЛбƒаДаЕ" #: src/gpodder/gtkui/main.py:1142 #, python-format msgid "synchronizing %(count)d file" msgid_plural "synchronizing %(count)d files" msgstr[0] "%(count)d б„аАаЙаЛаДб‹ баИаНб…б€аОаНаДаАбƒ" #: src/gpodder/gtkui/main.py:1144 #, python-format msgid "%(queued)d task queued" msgid_plural "%(queued)d tasks queued" msgstr[0] "%(queued)d б‚аАаПбб‹б€аМаА аКаЕаЗаЕаКб‚аЕ" #: src/gpodder/gtkui/main.py:1168 msgid "Please report this problem and restart gPodder:" msgstr "аžбб‹ аАв›аАбƒаЛб‹в› аЖгЉаНб–аНаДаЕ б…аАаБаАб€аЛаАаП, gPodder-аДб– в›аАаЙб‚аА в›аОбб‹вЃб‹аЗ:" #: src/gpodder/gtkui/main.py:1168 msgid "Unhandled exception" msgstr "а‘аАбв›аАб€б‹аЛаМаАаЙб‚б‹аН б‚гЉб‚аЕаНбˆаЕаЛб–аК" #: src/gpodder/gtkui/main.py:1235 #, python-format msgid "Feedparser error: %s" msgstr "аЂаАбаПаА гЉвЃаДаЕбƒб–бˆ в›аАб‚аЕбб–: %s" #: src/gpodder/gtkui/main.py:1371 msgid "Could not download some episodes:" msgstr "аšаЕаЙаБб–б€ баПаИаЗаОаДб‚аАб€аДб‹ аЖвЏаКб‚аЕаП аАаЛбƒ аМвЏаМаКб–аН аЕаМаЕб:" #: src/gpodder/gtkui/main.py:1373 src/gpodder/gtkui/main.py:1376 msgid "Downloads finished" msgstr "а–вЏаКб‚аЕаМаЕаЛаЕб€ аАбв›б‚аАаЛв“аАаН" #: src/gpodder/gtkui/main.py:1379 msgid "Downloads failed" msgstr "а–вЏаКб‚аЕаМаЕаЛаЕб€ бг™б‚бб–аЗ" #: src/gpodder/gtkui/main.py:1383 msgid "Could not sync some episodes:" msgstr "аšаЕаЙаБб–б€ баПаИаЗаОаДб‚аАб€аДб‹ баИаНб…б€аОаНаДаАбƒ аМвЏаМаКб–аН аЕаМаЕб:" #: src/gpodder/gtkui/main.py:1385 src/gpodder/gtkui/main.py:1388 msgid "Device synchronization finished" msgstr "вšвБб€б‹аЛв“б‹ баИаНб…б€аОаНаИаЗаАб†аИббб‹ аАбв›б‚аАаЛаДб‹" #: src/gpodder/gtkui/main.py:1391 msgid "Device synchronization failed" msgstr "вšвБб€б‹аЛв“б‹ баИаНб…б€аОаНаИаЗаАб†аИббб‹ бг™б‚бб–аЗ аАбв›б‚аАаЛаДб‹" #: src/gpodder/gtkui/main.py:1434 #, python-format msgid "%(count)d more episode" msgid_plural "%(count)d more episodes" msgstr[0] "б‚аАв“б‹ %(count)d баПаИаЗаОаД" #: src/gpodder/gtkui/main.py:1508 msgid "Start download now" msgstr "а–вЏаКб‚аЕаП аАаЛбƒаДб‹ в›аАаЗб–б€ аБаАбб‚аАбƒ" #: src/gpodder/gtkui/main.py:1510 src/gpodder/gtkui/main.py:1719 #: src/gpodder/gtkui/desktop/episodeselector.py:144 #: share/gpodder/ui/gtk/gpodder.ui.h:20 msgid "Download" msgstr "а–вЏаКб‚аЕаП аАаЛбƒ" #: src/gpodder/gtkui/main.py:1511 share/gpodder/ui/gtk/gpodder.ui.h:21 msgid "Cancel" msgstr "а‘аАб б‚аАб€б‚бƒ" #: src/gpodder/gtkui/main.py:1512 msgid "Pause" msgstr "абаЛаДаАб‚бƒ" #: src/gpodder/gtkui/main.py:1514 msgid "Remove from list" msgstr "аЂб–аЗб–аМаНаЕаН гЉбˆб–б€бƒ" #: src/gpodder/gtkui/main.py:1553 share/gpodder/ui/gtk/gpodder.ui.h:13 msgid "Update podcast" msgstr "аŸаОаДаКаАбб‚б‚б‹ аЖаАвЃаАб€б‚бƒ" #: src/gpodder/gtkui/main.py:1560 msgid "Open download folder" msgstr "а–вЏаКб‚аЕаМаЕаЛаЕб€ аБбƒаМаАбб‹аН аАбˆбƒ" #: src/gpodder/gtkui/main.py:1566 msgid "Mark episodes as old" msgstr "а­аПаИаЗаОаДб‚аАб€аДб‹ аЕбаКб– аДаЕаП аБаЕаЛаГб–аЛаЕбƒ" #: src/gpodder/gtkui/main.py:1570 src/gpodder/gtkui/main.py:1778 msgid "Archive" msgstr "аб€б…аИаВ" #: src/gpodder/gtkui/main.py:1575 msgid "Remove podcast" msgstr "аŸаОаДаКаАбб‚б‚б‹ гЉбˆб–б€бƒ" #: src/gpodder/gtkui/main.py:1590 share/gpodder/ui/gtk/gpodder.ui.h:10 msgid "Podcast settings" msgstr "аŸаОаДаКаАбб‚ аБаАаПб‚аАбƒаЛаАб€б‹" #: src/gpodder/gtkui/main.py:1650 msgid "Error converting file." msgstr "аЄаАаЙаЛаДб‹ б‚вЏб€аЛаЕаНаДб–б€бƒ в›аАб‚аЕаМаЕаН аАбв›б‚аАаЛаДб‹." #: src/gpodder/gtkui/main.py:1650 msgid "Bluetooth file transfer" msgstr "Bluetooth б„аАаЙаЛаДаАб€аМаЕаН аАаЛаМаАббƒ" #: src/gpodder/gtkui/main.py:1709 msgid "Preview" msgstr "ааЛаДб‹аН-аАаЛаА в›аАб€аАбƒ" #: src/gpodder/gtkui/main.py:1711 msgid "Stream" msgstr "ав“б‹аН" #: src/gpodder/gtkui/main.py:1755 msgid "Send to" msgstr "а–б–аБаЕб€бƒ" #: src/gpodder/gtkui/main.py:1757 msgid "Local folder" msgstr "а–аЕб€аГб–аЛб–аКб‚б– аБбƒаМаА" #: src/gpodder/gtkui/main.py:1762 msgid "Bluetooth device" msgstr "Bluetooth в›вБб€б‹аЛв“б‹бб‹" #: src/gpodder/gtkui/main.py:1769 msgid "New" msgstr "а–аАвЃаА" #: src/gpodder/gtkui/main.py:1785 share/gpodder/ui/gtk/gpodder.ui.h:25 msgid "Episode details" msgstr "а­аПаИаЗаОаД аАв›аПаАб€аАб‚б‹" #: src/gpodder/gtkui/main.py:1938 msgid "Please check your media player settings in the preferences dialog." msgstr "а‘аАаПб‚аАбƒаЛаАб€ б‚аЕб€аЕаЗаЕбб–аНаДаЕаГб– аМаЕаДаИаА аПаЛаЕаЕб€ аБаАаПб‚аАбƒаЛаАб€б‹аН б‚аЕаКбаЕб€б–вЃб–аЗ." #: src/gpodder/gtkui/main.py:1939 msgid "Error opening player" msgstr "аŸаЛаЕаЕб€аДб– аАбˆбƒ бг™б‚бб–аЗ" #: src/gpodder/gtkui/main.py:2178 msgid "Adding podcasts" msgstr "аŸаОаДаКаАбб‚б‚аАб€ в›аОбб‹аЛбƒаДаА" #: src/gpodder/gtkui/main.py:2179 msgid "Please wait while episode information is downloaded." msgstr "а­аПаИаЗаОаД аАв›аПаАб€аАб‚б‹ аЖвЏаКб‚аЕаЛаГаЕаНбˆаЕ аКвЏб‚аЕ б‚вБб€б‹вЃб‹аЗ." #: src/gpodder/gtkui/main.py:2186 msgid "Existing subscriptions skipped" msgstr "а‘аАб€ аБаОаЛб‹аП б‚вБб€в“аАаН аЖаАаЗб‹аЛбƒ аЕбаКаЕб€б–аЛаМаЕаДб–" #: src/gpodder/gtkui/main.py:2187 msgid "You are already subscribed to these podcasts:" msgstr "аЁб–аЗ аКаЕаЛаЕбб– аПаОаДаКаАбб‚б‚аАб€в“аА аЖаАаЗбƒаЛб‹ б‚вБб€бб‹аЗ:" #: src/gpodder/gtkui/main.py:2195 msgid "Podcast requires authentication" msgstr "аŸаОаДаКаАбб‚ аАбƒб‚аЕаНб‚аИб„аИаКаАб†аИбаНб‹ бвБб€аАаП б‚вБб€" #: src/gpodder/gtkui/main.py:2196 #, python-format msgid "Please login to %s:" msgstr "%s баАаЙб‚б‹аНаА аКб–б€б–вЃб–аЗ:" #: src/gpodder/gtkui/main.py:2204 src/gpodder/gtkui/main.py:2299 msgid "Authentication failed" msgstr "абƒб‚аЕаНб‚аИб„аИаКаАб†аИб бг™б‚бб–аЗ" #: src/gpodder/gtkui/main.py:2210 msgid "Website redirection detected" msgstr "а’аЕаБ баАаЙб‚ в›аАаЙб‚аА аБаАв“аДаАб€аЛаАбƒб‹ аАаНб‹в›б‚аАаЛаДб‹" #: src/gpodder/gtkui/main.py:2211 #, python-format msgid "The URL %(url)s redirects to %(target)s." msgstr "%(url)s URL-б‹ %(target)s аБаАв“аДаАб€аЛаАаП б‚вБб€." #: src/gpodder/gtkui/main.py:2212 msgid "Do you want to visit the website now?" msgstr "а’аЕаБ баАаЙб‚в›аА гЉб‚бƒаДб– в›аАаЗб–б€ в›аАаЛаАаЙбб‹аЗ аБаА?" #: src/gpodder/gtkui/main.py:2221 msgid "Could not add some podcasts" msgstr "аšаЕаЙаБб–б€ аПаОаДаКаАбб‚б‚аАб€аДб‹ в›аОббƒ аМвЏаМаКб–аН аЕаМаЕб" #: src/gpodder/gtkui/main.py:2222 msgid "Some podcasts could not be added to your list:" msgstr "аšаЕаЙаБб–б€ аПаОаДаКаАбб‚б‚аАб€аДб‹ б‚б–аЗб–аМб–вЃб–аЗаГаЕ в›аОббƒ аМвЏаМаКб–аН аЕаМаЕб:" #: src/gpodder/gtkui/main.py:2224 msgid "Unknown" msgstr "а‘аЕаЛаГб–бб–аЗ" #: src/gpodder/gtkui/main.py:2308 msgid "Redirection detected" msgstr "вšаАаЙб‚аА аБаАв“аДаАб€аЛаАбƒ аАаНб‹в›б‚аАаЛаДб‹" #: src/gpodder/gtkui/main.py:2342 msgid "Merging episode actions" msgstr "а­аПаИаЗаОаД г™б€аЕаКаЕб‚б‚аЕб€б–аН аБб–б€б–аКб‚б–б€бƒ" #: src/gpodder/gtkui/main.py:2343 msgid "Episode actions from gpodder.net are merged." msgstr "gpodder.net-б‚аЕаН баПаИаЗаОаД г™б€аЕаКаЕб‚б‚аЕб€б– аБб–б€б–аКб‚б–б€б–аЛаДб–." #: src/gpodder/gtkui/main.py:2368 msgid "Cancelling..." msgstr "а‘аАб б‚аАб€б‚бƒ..." #: src/gpodder/gtkui/main.py:2377 msgid "Please connect to a network, then try again." msgstr "" #: src/gpodder/gtkui/main.py:2378 #, fuzzy msgid "No network connection" msgstr "а–аАвЃаА аАб‚б‹:" #: src/gpodder/gtkui/main.py:2399 #, python-format msgid "Updating %(count)d feed..." msgid_plural "Updating %(count)d feeds..." msgstr[0] "%(count)d б‚аАбаПаА аЖаАвЃаАб€б‚б‹аЛбƒаДаА..." #: src/gpodder/gtkui/main.py:2417 #, python-format msgid "Error while updating %(url)s: %(message)s" msgstr "а–аАвЃаАб€б‚бƒ в›аАб‚аЕбб– %(url)s: %(message)s" #: src/gpodder/gtkui/main.py:2419 #, python-format msgid "The feed at %(url)s could not be updated." msgstr "%(url)s аАаДб€аЕбб–аНаДаЕаГб– б‚аАбаПаАаЛаАб€аДб‹ аЖаАвЃаАб€б‚бƒ аМвЏаМаКб–аН аЕаМаЕб." #: src/gpodder/gtkui/main.py:2420 msgid "Error while updating feed" msgstr "аЂаАбаПаАаНб‹ аЖаАвЃаАб€б‚бƒ бг™б‚бб–аЗ" #: src/gpodder/gtkui/main.py:2435 #, python-format msgid "Updated %(podcast)s (%(position)d/%(total)d)" msgstr "а–аАвЃаАб€б‚б‹аЛв“аАаН %(podcast)s (%(position)d/%(total)d)" #: src/gpodder/gtkui/main.py:2466 msgid "No new episodes" msgstr "а–аАвЃаА баПаИаЗаОаДб‚аАб€ аЖаОв›" #: src/gpodder/gtkui/main.py:2479 #, python-format msgid "Downloading %(count)d new episode." msgid_plural "Downloading %(count)d new episodes." msgstr[0] "%(count)d аЖаАвЃаА баПаИаЗаОаД аЖвЏаКб‚аЕаЛбƒаДаЕ." #: src/gpodder/gtkui/main.py:2480 src/gpodder/gtkui/main.py:2484 #: src/gpodder/gtkui/main.py:2833 msgid "New episodes available" msgstr "а–аАвЃаА баПаИаЗаОаДб‚аАб€ аБаАб€" #: src/gpodder/gtkui/main.py:2483 #, python-format msgid "%(count)d new episode added to download list." msgid_plural "%(count)d new episodes added to download list." msgstr[0] "%(count)d аЖаАвЃаА баПаИаЗаОаД аЖвЏаКб‚аЕаМаЕаЛаЕб€ б‚б–аЗб–аМб–аНаЕ в›аОбб‹аЛаДб‹." #: src/gpodder/gtkui/main.py:2490 #, python-format msgid "%(count)d new episode available" msgid_plural "%(count)d new episodes available" msgstr[0] "%(count)d аЖаАвЃаА баПаИаЗаОаД аБаАб€" #: src/gpodder/gtkui/main.py:2509 msgid "Quit gPodder" msgstr "gPodder-аДаАаН бˆб‹в“бƒ" #: src/gpodder/gtkui/main.py:2510 msgid "" "You are downloading episodes. You can resume downloads the next time you " "start gPodder. Do you want to quit now?" msgstr "" "вšаАаЗб–б€ аЖвЏаКб‚аЕаЛб–аП аЖаАб‚в›аАаН баПаИаЗаОаДб‚аАб€ аБаАб€. а–вЏаКб‚аЕаМаЕаЛаЕб€аДб– gPodder аКаЕаЛаЕбб– в›аОбб‹аЛв“аАаНаДаА " "аЖаАаЛв“аАбб‚б‹б€аА аАаЛаАбб‹аЗ. аЈб‹в“бƒаДб‹ в›аАаЛаАаЙбб‹аЗ аБаА?" #: src/gpodder/gtkui/main.py:2559 msgid "Episodes are locked" msgstr "а­аПаИаЗаОаДб‚аАб€ аБаЛаОаКб‚аАаЛв“аАаН" #: src/gpodder/gtkui/main.py:2560 msgid "" "The selected episodes are locked. Please unlock the episodes that you want " "to delete before trying to delete them." msgstr "" "аЂаАвЃаДаАаЛв“аАаН баПаИаЗаОаДб‚аАб€ аБаЛаОаКб‚аАаЛв“аАаН аБаОаЛб‹аП б‚вБб€. гЈбˆб–б€бƒ вЏбˆб–аН аОаЛаАб€аДб‹ аБаЛаОаКб‚аАбƒаДаАаН " "аБаОбаАб‚б‹вЃб‹аЗ." #: src/gpodder/gtkui/main.py:2565 #, python-format msgid "Delete %(count)d episode?" msgid_plural "Delete %(count)d episodes?" msgstr[0] "%(count)d баПаИаЗаОаДб‚б‹ гЉбˆб–б€бƒ аКаЕб€аЕаК аПаЕ?" #: src/gpodder/gtkui/main.py:2566 msgid "Deleting episodes removes downloaded files." msgstr "а­аПаИаЗаОаДб‚аАб€аДб‹ гЉбˆб–б€бƒ аЖвЏаКб‚аЕаЛб–аНаГаЕаН б„аАаЙаЛаДаАб€аДб‹ аДаА гЉбˆб–б€аЕаДб–." #: src/gpodder/gtkui/main.py:2571 msgid "Deleting episodes" msgstr "а­аПаИаЗаОаДб‚аАб€аДб‹ гЉбˆб–б€бƒ" #: src/gpodder/gtkui/main.py:2572 msgid "Please wait while episodes are deleted" msgstr "а­аПаИаЗаОаДб‚аАб€ гЉбˆб–б€б–аЛаГаЕаНбˆаЕ аКвЏб‚аЕ б‚вБб€б‹вЃб‹аЗ" #: src/gpodder/gtkui/main.py:2625 #, python-format msgid "Select older than %(count)d day" msgid_plural "Select older than %(count)d days" msgstr[0] "%(count)d аКвЏаНаНаЕаН аЕбаКб–бб–аН б‚аАвЃаДаАбƒ" #: src/gpodder/gtkui/main.py:2627 msgid "Select played" msgstr "аžаЙаНаАаЛв“аАаНаДб‹ б‚аАвЃаДаАбƒ" #: src/gpodder/gtkui/main.py:2628 msgid "Select finished" msgstr "абв›б‚аАаЛв“аАаНаДб‹ б‚аАвЃаДаАбƒ" #: src/gpodder/gtkui/main.py:2632 msgid "Select the episodes you want to delete:" msgstr "гЈбˆб–б€аГб–вЃб–аЗ аКаЕаЛаЕб‚б–аН баПаИаЗаОаДб‚аАб€аДб‹ б‚аАвЃаДаАвЃб‹аЗ:" #: src/gpodder/gtkui/main.py:2648 share/gpodder/ui/gtk/gpodder.ui.h:4 msgid "Delete episodes" msgstr "а­аПаИаЗаОаДб‚аАб€аДб‹ гЉбˆб–б€бƒ" #: src/gpodder/gtkui/main.py:2703 src/gpodder/gtkui/main.py:2934 #: src/gpodder/gtkui/main.py:3034 msgid "No podcast selected" msgstr "аŸаОаДаКаАбб‚ б‚аАвЃаДаАаЛаМаАаДб‹" #: src/gpodder/gtkui/main.py:2704 msgid "Please select a podcast in the podcasts list to update." msgstr "а–аАвЃаАб€б‚бƒ вЏбˆб–аН б‚б–аЗб–аМаНаЕаН аПаОаДаКаАбб‚б‚б‹ б‚аАвЃаДаАвЃб‹аЗ." #: src/gpodder/gtkui/main.py:2774 #, python-format msgid "Download error while downloading %(episode)s: %(message)s" msgstr "а–вЏаКб‚аЕбƒ в›аАб‚аЕбб– %(episode)s: %(message)s" #: src/gpodder/gtkui/main.py:2775 msgid "Download error" msgstr "а–вЏаКб‚аЕаП аАаЛбƒ в›аАб‚аЕбб–" #: src/gpodder/gtkui/main.py:2818 msgid "Select the episodes you want to download:" msgstr "а–вЏаКб‚аЕаГб–вЃб–аЗ аКаЕаЛаЕб‚б–аН баПаИаЗаОаДб‚аАб€аДб‹ б‚аАвЃаДаАвЃб‹аЗ:" #: src/gpodder/gtkui/main.py:2841 msgid "Mark as old" msgstr "а•баКб– аДаЕаП аБаЕаЛаГб–аЛаЕбƒ" #: src/gpodder/gtkui/main.py:2848 msgid "Please check for new episodes later." msgstr "а–аАвЃаА баПаИаЗаОаДб‚аАб€аДб‹ аКаЕаЙб–аН б‚аЕаКбаЕб€б–вЃб–аЗ." #: src/gpodder/gtkui/main.py:2849 msgid "No new episodes available" msgstr "а–аАвЃаА баПаИаЗаОаДб‚аАб€ аЖаОв›" #: src/gpodder/gtkui/main.py:2900 msgid "Login to gpodder.net" msgstr "Gpodder.net баАаЙб‚б‹аНаА аКб–б€бƒ" #: src/gpodder/gtkui/main.py:2901 msgid "Please login to download your subscriptions." msgstr "а–аАаЗб‹аЛбƒаЛаАб€б‹вЃб‹аЗаДб‹ аЖвЏаКб‚аЕаП аАаЛбƒ вЏбˆб–аН баАаЙб‚в›аА аКб–б€б–вЃб–аЗ." #: src/gpodder/gtkui/main.py:2916 msgid "Subscriptions on gpodder.net" msgstr "Gpodder.net-аГб– аЖаАаЗб‹аЛбƒаЛаАб€." #: src/gpodder/gtkui/main.py:2935 msgid "Please select a podcast in the podcasts list to edit." msgstr "аŸаОаДаКаАбб‚б‚аАб€ б‚б–аЗб–аМб–аНаЕаН б‚вЏаЗаЕб‚бƒ вЏбˆб–аН аБб–б€аЕбƒб–аН б‚аАвЃаДаАвЃб‹аЗ." #: src/gpodder/gtkui/main.py:2949 msgid "Podcast" msgstr "аŸаОаДаКаАбб‚" #: src/gpodder/gtkui/main.py:2955 share/gpodder/ui/gtk/gpodder.ui.h:12 msgid "Remove podcasts" msgstr "аŸаОаДаКаАбб‚б‚аАб€аДб‹ гЉбˆб–б€бƒ" #: src/gpodder/gtkui/main.py:2956 msgid "Select the podcast you want to remove." msgstr "гЈбˆб–б€аГб–вЃб–аЗ аКаЕаЛаЕб‚б–аН аПаОаДаКаАбб‚б‚б‹ б‚аАвЃаДаАвЃб‹аЗ." #: src/gpodder/gtkui/main.py:2960 #: src/gpodder/gtkui/desktop/episodeselector.py:105 msgid "Remove" msgstr "гЈбˆб–б€бƒ" #: src/gpodder/gtkui/main.py:2969 msgid "Removing podcast" msgstr "аŸаОаДаКаАбб‚б‚аАб€ гЉбˆб–б€б–аЛбƒаДаЕ" #: src/gpodder/gtkui/main.py:2970 msgid "Please wait while the podcast is removed" msgstr "аŸаОаДаКаАбб‚ гЉбˆб–б€б–аЛаГаЕаНбˆаЕ аКвЏб‚аЕ б‚вБб€б‹вЃб‹аЗ" #: src/gpodder/gtkui/main.py:2971 msgid "Do you really want to remove this podcast and its episodes?" msgstr "аžбб‹ аПаОаДаКаАбб‚ аПаЕаН аОаНб‹вЃ аБаАб€ баПаИаЗаОаДб‚аАб€б‹аН гЉбˆб–б€бƒаДб– бˆб‹аНб‹аМаЕаН в›аАаЛаАаЙбб‹аЗ аБаА?" #: src/gpodder/gtkui/main.py:2973 msgid "Removing podcasts" msgstr "аŸаОаДаКаАбб‚б‚аАб€аДб‹ гЉбˆб–б€бƒ" #: src/gpodder/gtkui/main.py:2974 msgid "Please wait while the podcasts are removed" msgstr "аŸаОаДаКаАбб‚б‚аАб€ гЉбˆб–б€б–аЛаГаЕаНбˆаЕ аКвЏб‚аЕ б‚вБб€б‹вЃб‹аЗ" #: src/gpodder/gtkui/main.py:2975 msgid "Do you really want to remove the selected podcasts and their episodes?" msgstr "" "аЂаАвЃаДаАаЛв“аАаН аПаОаДаКаАбб‚ аПаЕаН аОаНб‹вЃ аБаАб€аЛб‹в› баПаИаЗаОаДб‚аАб€б‹аН гЉбˆб–б€бƒаДб– бˆб‹аНб‹аМаЕаН в›аАаЛаАаЙбб‹аЗ аБаА?" #: src/gpodder/gtkui/main.py:3035 msgid "Please select a podcast in the podcasts list to remove." msgstr "аŸаОаДаКаАбб‚б‚аАб€ б‚б–аЗб–аМб–аНаЕаН гЉбˆб–б€бƒ вЏбˆб–аН аБб–б€аЕбƒб–аН б‚аАвЃаДаАвЃб‹аЗ." #: src/gpodder/gtkui/main.py:3045 msgid "OPML files" msgstr "OPML б„аАаЙаЛаДаАб€б‹" #: src/gpodder/gtkui/main.py:3050 msgid "Import from OPML" msgstr "OPML б„аАаЙаЛб‹аНаАаН аИаМаПаОб€б‚б‚аАбƒ" #: src/gpodder/gtkui/main.py:3064 msgid "Import podcasts from OPML file" msgstr "аŸаОаДаКаАбб‚б‚аАб€аДб‹ OPML б„аАаЙаЛб‹аНаАаН аИаМаПаОб€б‚б‚аАбƒ" #: src/gpodder/gtkui/main.py:3071 msgid "Nothing to export" msgstr "а­аКбаПаОб€б‚б‚аАаЛаАб‚б‹аН аЕбˆаНг™б€баЕ аЖаОв›" #: src/gpodder/gtkui/main.py:3072 msgid "" "Your list of podcast subscriptions is empty. Please subscribe to some " "podcasts first before trying to export your subscription list." msgstr "" "аЁб–аЗаДб–вЃ аПаОаДаКаАбб‚б‚аАб€ б‚б–аЗб–аМб–вЃб–аЗ аБаОб. а­аКбаПаОб€б‚б‚аАбƒ аАаЛаДб‹аНаДаА аБб–б€аНаЕбˆаЕ аПаОаДаКаАбб‚в›аА " "аЖаАаЗб‹аЛбƒб‹вЃб‹аЗ аКаЕб€аЕаК." #: src/gpodder/gtkui/main.py:3076 msgid "Export to OPML" msgstr "OPML б„аАаЙаЛб‹аНаА баКбаПаОб€б‚б‚аАбƒ" #: src/gpodder/gtkui/main.py:3087 #, python-format msgid "%(count)d subscription exported" msgid_plural "%(count)d subscriptions exported" msgstr[0] "%(count)d аЖаАаЗб‹аЛбƒ баКбаПаОб€б‚б‚аАаЛаДб‹" #: src/gpodder/gtkui/main.py:3088 msgid "Your podcast list has been successfully exported." msgstr "аЁб–аЗаДб–вЃ аПаОаДаКаАбб‚б‚аАб€ б‚б–аЗб–аМб–вЃб–аЗ бг™б‚б‚б– баКбаПаОб€б‚б‚аАаЛаДб‹." #: src/gpodder/gtkui/main.py:3090 msgid "Could not export OPML to file. Please check your permissions." msgstr "OPML б„аАаЙаЛв“аА баКбаПаОб€б‚б‹ бг™б‚бб–аЗ. а вБв›баАб‚б‚аАб€б‹вЃб‹аЗаДб‹ б‚аЕаКбаЕб€б–вЃб–аЗ." #: src/gpodder/gtkui/main.py:3090 msgid "OPML export failed" msgstr "OPML баКбаПаОб€б‚б‹ бг™б‚бб–аЗ" #: src/gpodder/gtkui/main.py:3117 msgid "No updates available" msgstr "а–аАвЃаАб€б‚бƒаЛаАб€ аЖаОв›" #: src/gpodder/gtkui/main.py:3118 msgid "You have the latest version of gPodder." msgstr "аЁб–аЗаДаЕ gPodder-аДб–вЃ аЕвЃ аЖаАвЃаА аНвБбв›аАбб‹ аОб€аНаАб‚б‹аЛв“аАаН." #: src/gpodder/gtkui/main.py:3122 msgid "New version available" msgstr "а–аАвЃаА аНвБбв›аАбб‹ в›аОаЛаЖаЕб‚аЕб€аЛб–аК" #: src/gpodder/gtkui/main.py:3124 #, python-format msgid "Installed version: %s" msgstr "аžб€аНаАб‚б‹аЛв“аАаН аНвБбв›аАбб‹: %s" #: src/gpodder/gtkui/main.py:3125 #, python-format msgid "Newest version: %s" msgstr "а–аАвЃаАаЛаАбƒ аНвБбв›аАбб‹ : %s" #: src/gpodder/gtkui/main.py:3126 #, python-format msgid "Release date: %s" msgstr "аЈб‹в“аАб€б‹аЛб‹аМ аКвЏаНб–: %s" #: src/gpodder/gtkui/main.py:3128 msgid "Download the latest version from gpodder.org?" msgstr "gpodder.org баАаЙб‚б‹аНаАаН баОвЃв“б‹ аНвБбв›аАбб‹аН аЖвЏаКб‚аЕаП аАаЛбƒ аКаЕб€аЕаК аПаЕ?" #: src/gpodder/gtkui/main.py:3141 msgid "About gPodder" msgstr "gPodder б‚бƒб€аАаЛб‹" #: src/gpodder/gtkui/main.py:3424 #, fuzzy msgid "Please register a YouTube API key and set it in the preferences." msgstr "а‘аАаПб‚аАбƒаЛаАб€ б‚аЕб€аЕаЗаЕбб–аНаДаЕ в›вБб€б‹аЛв“б‹вЃб‹аЗаДб‹ аБаАаПб‚аАвЃб‹аЗ." #: src/gpodder/gtkui/main.py:3425 msgid "Would you like to set up an API key now?" msgstr "" #: src/gpodder/gtkui/main.py:3425 msgid "API key required" msgstr "" #: src/gpodder/gtkui/main.py:3444 bin/gpo:631 #, fuzzy msgid "No unique URL found" msgstr "аб€аНаАаЛаАб€ б‚аАаБб‹аЛаМаАаДб‹" #: src/gpodder/gtkui/main.py:3449 bin/gpo:637 #, fuzzy msgid "Already subscribed" msgstr "%s вЏбˆб–аН аЖаАаЗб‹аЛбƒ аМвЏаМаКб–аН аЕаМаЕб." #: src/gpodder/gtkui/main.py:3458 bin/gpo:649 #, python-format msgid "Make sure the API key is correct. Error: %(message)s" msgstr "" #: src/gpodder/gtkui/main.py:3459 #, fuzzy msgid "Error getting YouTube channels" msgstr "аžаПб†аИбаНб‹ аОб€аНаАб‚бƒ бг™б‚бб–аЗ" #: src/gpodder/gtkui/main.py:3462 #, fuzzy msgid "Successfully migrated subscriptions" msgstr "%s бг™б‚б‚б– в›аОбб‹аЛаДб‹." #: src/gpodder/gtkui/main.py:3464 #, fuzzy msgid "Subscriptions are up to date" msgstr "а–аАаЗб‹аЛбƒ аАбаЛаДаАб‚б‹аЛаДб‹" #: src/gpodder/gtkui/main.py:3467 msgid "These URLs failed:" msgstr "" #: src/gpodder/gtkui/main.py:3469 #, fuzzy msgid "Could not migrate some subscriptions" msgstr "аšаЕаЙаБб–б€ аПаОаДаКаАбб‚б‚аАб€аДб‹ в›аОббƒ аМвЏаМаКб–аН аЕаМаЕб" #: src/gpodder/gtkui/main.py:3493 msgid "Cannot start gPodder" msgstr "gPodder в›аОббƒ аМвЏаМаКб–аН аЕаМаЕб" #: src/gpodder/gtkui/main.py:3494 #, python-format msgid "D-Bus error: %s" msgstr "D-Bus в›аАб‚аЕбб–: %s" #: src/gpodder/gtkui/model.py:68 #, python-format msgid "released %s" msgstr "%s бˆб‹в›в›аАаН" #: src/gpodder/gtkui/model.py:69 src/gpodder/gtkui/model.py:87 #: src/gpodder/gtkui/model.py:237 src/gpodder/gtkui/shownotes.py:84 #, python-format msgid "from %s" msgstr "в›аАаЙаДаАаН: %s" #: src/gpodder/gtkui/model.py:80 src/gpodder/gtkui/model.py:393 msgid "played" msgstr "аОаЙаНаАаЛв“аАаН" #: src/gpodder/gtkui/model.py:82 msgid "unplayed" msgstr "аОаЙаНаАаЛаМаАв“аАаН" #: src/gpodder/gtkui/model.py:85 msgid "today" msgstr "аБвЏаГб–аН" #: src/gpodder/gtkui/model.py:86 #, python-format msgid "downloaded %s" msgstr "аЖвЏаКб‚аЕаЛаГаЕаН %s" #: src/gpodder/gtkui/model.py:337 msgid "Deleted" msgstr "гЈбˆб–б€б–аЛаГаЕаН" #: src/gpodder/gtkui/model.py:342 msgid "New episode" msgstr "а–аАвЃаА баПаИаЗаОаД" #: src/gpodder/gtkui/model.py:356 msgid "Downloaded episode" msgstr "а–вЏаКб‚аЕаЛб–аП аАаЛб‹аНв“аАаН баПаИаЗаОаД" #: src/gpodder/gtkui/model.py:359 msgid "Downloaded video episode" msgstr "а–вЏаКб‚аЕаЛб–аП аАаЛб‹аНв“аАаН аВаИаДаЕаО баПаИаЗаОаД" #: src/gpodder/gtkui/model.py:362 msgid "Downloaded image" msgstr "а–вЏаКб‚аЕаЛб–аП аАаЛб‹аНв“аАаН ббƒб€аЕб‚" #: src/gpodder/gtkui/model.py:365 msgid "Downloaded file" msgstr "а–вЏаКб‚аЕаЛб–аП аАаЛб‹аНв“аАаН б„аАаЙаЛ" #: src/gpodder/gtkui/model.py:380 msgid "missing file" msgstr "б„аАаЙаЛ аЖаОв›" #: src/gpodder/gtkui/model.py:384 msgid "never displayed" msgstr "аБвБб€б‹аН аКгЉб€баЕб‚б–аЛаМаЕаГаЕаН" #: src/gpodder/gtkui/model.py:386 msgid "never played" msgstr "аБвБб€б‹аН аОаЙаНаАаЛаМаАв“аАаН" #: src/gpodder/gtkui/model.py:388 msgid "never opened" msgstr "аБвБб€б‹аН аАбˆб‹аЛаМаАв“аАаН" #: src/gpodder/gtkui/model.py:391 msgid "displayed" msgstr "аКгЉб€баЕб‚б–аЛаГаЕаН" #: src/gpodder/gtkui/model.py:395 msgid "opened" msgstr "аАбˆб‹аЛв“аАаН" #: src/gpodder/gtkui/model.py:397 msgid "deletion prevented" msgstr "гЉбˆб–б€бƒаГаЕ б€вБв›баАб‚ аЖаОв›" #: src/gpodder/gtkui/model.py:432 share/gpodder/ui/gtk/gpodder.ui.h:32 msgid "All episodes" msgstr "а‘аАб€аЛб‹в› баПаИаЗаОаДб‚аАб€" #: src/gpodder/gtkui/model.py:433 msgid "from all podcasts" msgstr "аБаАб€аЛб‹в› аПаОаДаКаАбб‚б‚аАб€аДаАаН" #: src/gpodder/gtkui/model.py:625 msgid "Subscription paused" msgstr "а–аАаЗб‹аЛбƒ аАбаЛаДаАб‚б‹аЛаДб‹" #: src/gpodder/gtkui/shownotes.py:118 #, fuzzy msgid "Please select an episode" msgstr "а­аПаИаЗаОаДб‚аАб€аДб‹ б‚аАвЃаДаАбƒ" #: src/gpodder/gtkui/interface/addpodcast.py:74 msgid "Nothing to paste." msgstr "аšб–б€б–бб‚б–б€бƒ вЏб–бˆаН аЕбˆаНг™б€баЕ аЖаОв›." #: src/gpodder/gtkui/interface/addpodcast.py:74 msgid "Clipboard is empty" msgstr "ааЛаМаАббƒ аБбƒб„аЕб€б– аБаОб" #: src/gpodder/gtkui/interface/common.py:160 msgid "Username" msgstr "аŸаАаЙаДаАаЛаАаНбƒбˆб‹ аАб‚б‹" #: src/gpodder/gtkui/interface/common.py:163 msgid "New user" msgstr "а–аАвЃаА аПаАаЙаДаАаЛаАаНбƒбˆб‹" #: src/gpodder/gtkui/interface/common.py:170 msgid "Login" msgstr "аšб–б€бƒ" #: src/gpodder/gtkui/interface/common.py:172 msgid "Authentication required" msgstr "абƒб‚аЕаНб‚аИб„аИаКаАб†аИб аКаЕб€аЕаК" #: src/gpodder/gtkui/interface/common.py:203 msgid "Password" msgstr "аŸаАб€аОаЛбŒ" #: src/gpodder/gtkui/interface/common.py:225 msgid "Select destination" msgstr "аžб€аНб‹аН аКгЉб€баЕб‚б–вЃб–аЗ" #: src/gpodder/gtkui/interface/configeditor.py:34 msgid "Setting" msgstr "а‘аАаПб‚аАаМаА" #: src/gpodder/gtkui/interface/configeditor.py:41 msgid "Set to" msgstr "аœг™аНаГаЕ аОб€аНаАб‚бƒ" #: src/gpodder/gtkui/interface/configeditor.py:81 #, python-format msgid "Cannot set %(field)s to %(value)s. Needed data type: %(datatype)s" msgstr "" "%(field)s в›аАаЗб–б€ %(value)s аМг™аНб–аНаЕ аОб€аНаАб‚бƒ аМвЏаМаКб–аН аЕаМаЕб. аšаЕб€аЕаК аАв›аПаАб€аАб‚ б‚вЏб€б–: " "%(datatype)s" #: src/gpodder/gtkui/interface/configeditor.py:85 msgid "Error setting option" msgstr "аžаПб†аИбаНб‹ аОб€аНаАб‚бƒ бг™б‚бб–аЗ" #: src/gpodder/gtkui/desktop/channel.py:100 msgid "Add section" msgstr "аЁаАаНаАб‚б‚б‹ в›аОббƒ" #: src/gpodder/gtkui/desktop/channel.py:100 msgid "New section:" msgstr "а–аАвЃаА баАаНаАб‚:" #: src/gpodder/gtkui/desktop/channel.py:133 msgid "Select new podcast cover artwork" msgstr "аŸаОаДаКаАбб‚ вЏбˆб–аН аЖаАвЃаА бб‹б€б‚б‹аН б‚аАвЃаДаАвЃб‹аЗ" #: src/gpodder/gtkui/desktop/channel.py:161 msgid "You can only drop a single image or URL here." msgstr "аžбб‹аНаДаА б‚аЕаК аБб–б€ ббƒб€аЕб‚ аНаЕ URL г™аКаЕаЛб–аП б‚аАбб‚аАаЙ аАаЛаАбб‹аЗ," #: src/gpodder/gtkui/desktop/channel.py:161 #: src/gpodder/gtkui/desktop/channel.py:171 msgid "Drag and drop" msgstr "вАбб‚аАаП аАаПаАб€бƒ аМаЕаН б‚аАбб‚аАбƒ" #: src/gpodder/gtkui/desktop/channel.py:171 msgid "You can only drop local files and http:// URLs here." msgstr "аžбб‹аНаДаА б‚аЕаК аЖаЕб€аГб–аЛб–аКб‚б– б„аАаЙаЛаДаАб€аДб‹ аМаЕаН http:// URL г™аКаЕаЛб–аП б‚аАбб‚аАаЙ аАаЛаАбб‹аЗ." #: src/gpodder/gtkui/desktop/deviceplaylist.py:98 #, fuzzy, python-format msgid "Folder %s could not be created." msgstr "%(url)s аАаДб€аЕбб–аНаДаЕаГб– б‚аАбаПаАаЛаАб€аДб‹ аЖаАвЃаАб€б‚бƒ аМвЏаМаКб–аН аЕаМаЕб." #: src/gpodder/gtkui/desktop/deviceplaylist.py:98 #, fuzzy msgid "Error writing playlist" msgstr "аŸаЛаЕаЕб€аДб– аАбˆбƒ бг™б‚бб–аЗ" #: src/gpodder/gtkui/desktop/episodeselector.py:288 #: share/gpodder/ui/gtk/gpodderepisodeselector.ui.h:2 msgid "Select all" msgstr "а‘аАб€аЛб‹в“б‹аН б‚аАвЃаДаАбƒ" #: src/gpodder/gtkui/desktop/episodeselector.py:292 #: share/gpodder/ui/gtk/gpodderepisodeselector.ui.h:3 msgid "Select none" msgstr "а•бˆб‚аЕвЃаЕ б‚аАвЃаДаАаМаАбƒ" #: src/gpodder/gtkui/desktop/episodeselector.py:324 msgid "Nothing selected" msgstr "а•бˆаНг™б€баЕ б‚аАвЃаДаАаЛаМаАаДб‹" #: src/gpodder/gtkui/desktop/episodeselector.py:325 #, python-format msgid "%(count)d episode" msgid_plural "%(count)d episodes" msgstr[0] "%(count)d баПаИаЗаОаД" #: src/gpodder/gtkui/desktop/episodeselector.py:327 #, python-format msgid "size: %s" msgstr "гЉаЛбˆаЕаМб–: %s" #: src/gpodder/gtkui/desktop/podcastdirectory.py:238 #, fuzzy msgid "Loading podcasts" msgstr "аŸаОаДаКаАбб‚б‚аАб€ в›аОбб‹аЛбƒаДаА" #: src/gpodder/gtkui/desktop/podcastdirectory.py:239 #, fuzzy msgid "Please wait while the podcast list is downloaded" msgstr "аŸаОаДаКаАбб‚ гЉбˆб–б€б–аЛаГаЕаНбˆаЕ аКвЏб‚аЕ б‚вБб€б‹вЃб‹аЗ" #: src/gpodder/gtkui/desktop/preferences.py:51 #: src/gpodder/gtkui/desktop/preferences.py:93 msgid "Do nothing" msgstr "а•бˆаНг™б€баЕ аЖаАбаАаМаАбƒ" #: src/gpodder/gtkui/desktop/preferences.py:52 msgid "Show episode list" msgstr "а­аПаИаЗаОаД б‚б–аЗб–аМб–аН аКгЉб€баЕб‚бƒ" #: src/gpodder/gtkui/desktop/preferences.py:53 msgid "Add to download list" msgstr "а–вЏаКб‚аЕаМаЕаЛаЕб€ б‚б–аЗб–аМб–аНаЕ в›аОббƒ" #: src/gpodder/gtkui/desktop/preferences.py:54 msgid "Download immediately" msgstr "вšаАаЗб–б€ аЖвЏаКб‚аЕаП аАаЛбƒ" #: src/gpodder/gtkui/desktop/preferences.py:72 msgid "None" msgstr "а•бˆаНг™б€баЕ" #: src/gpodder/gtkui/desktop/preferences.py:73 msgid "iPod" msgstr "" #: src/gpodder/gtkui/desktop/preferences.py:74 msgid "Filesystem-based" msgstr "аЄаАаЙаЛаДб‹в› аЖвЏаЙаЕаГаЕ аНаЕаГб–аЗаДаЕаЛаГаЕаН" #: src/gpodder/gtkui/desktop/preferences.py:94 msgid "Mark as played" msgstr "аžаЙаНаАаЛв“аАаН аЕб‚б–аП аБаЕаЛаГб–аЛаЕбƒ" #: src/gpodder/gtkui/desktop/preferences.py:95 msgid "Delete from gPodder" msgstr "gPodder-аДаЕаН гЉбˆб–б€бƒ" #: src/gpodder/gtkui/desktop/preferences.py:123 #, fuzzy, python-format msgid "Custom (%(format_ids)s)" msgstr "аЂаАвЃаДаАбƒб‹вЃб‹аЗбˆаА аПб–бˆб–аМаДб– аЖаОаЛаДаАб€" #: src/gpodder/gtkui/desktop/preferences.py:318 msgid "Name" msgstr "аб‚б‹" #: src/gpodder/gtkui/desktop/preferences.py:369 #, fuzzy msgid "Documentation" msgstr "вАаЗаАв›б‚б‹в“б‹" #: src/gpodder/gtkui/desktop/preferences.py:374 #, fuzzy msgid "Extension info" msgstr "аšаЕвЃаЕаЙб‚бƒ аМаОаДбƒаЛб–аНб–вЃ аАв›аПаАб€аАб‚б‹" #: src/gpodder/gtkui/desktop/preferences.py:379 msgid "Support the author" msgstr "" #: src/gpodder/gtkui/desktop/preferences.py:413 msgid "Extension cannot be activated" msgstr "аšаЕвЃаЕаЙб‚бƒаДб– аБаЕаЛбаЕаНаДб–б€бƒ аМвЏаМаКб–аН аЕаМаЕб" #: src/gpodder/gtkui/desktop/preferences.py:426 msgid "Extension module info" msgstr "аšаЕвЃаЕаЙб‚бƒ аМаОаДбƒаЛб–аНб–вЃ аАв›аПаАб€аАб‚б‹" #: src/gpodder/gtkui/desktop/preferences.py:463 msgid "Configure audio player" msgstr "абƒаДаИаО аПаЛаЕаЕб€аДб– аБаАаПб‚аАбƒ" #: src/gpodder/gtkui/desktop/preferences.py:464 #: src/gpodder/gtkui/desktop/preferences.py:474 msgid "Command:" msgstr "аšаОаМаАаНаДаА:" #: src/gpodder/gtkui/desktop/preferences.py:473 msgid "Configure video player" msgstr "а’аИаДаЕаО аПаЛаЕаЕб€аДб– аБаАаПб‚аАбƒ" #: src/gpodder/gtkui/desktop/preferences.py:485 #: src/gpodder/gtkui/desktop/preferences.py:503 msgid "manually" msgstr "в›аОаЛаМаЕаН" #: src/gpodder/gtkui/desktop/preferences.py:505 #, python-format msgid "after %(count)d day" msgid_plural "after %(count)d days" msgstr[0] "%(count)d аКвЏаНаНаЕаН аКаЕаЙб–аН" #: src/gpodder/gtkui/desktop/preferences.py:541 msgid "Replace subscription list on server" msgstr "аЁаЕб€аВаЕб€аДаЕаГб– б‚б–аЗб–аМаДб– аАаЛаМаАбб‚б‹б€бƒ" #: src/gpodder/gtkui/desktop/preferences.py:542 msgid "" "Remote podcasts that have not been added locally will be removed on the " "server. Continue?" msgstr "" "а–аЕб€аГб–аЛб–аКб‚б– в›аОбб‹аЛаМаАв“аАаН аПаОаДаКаАбб‚б‚аАб€ баЕб€аВаЕб€аДаЕаН аДаЕ гЉбˆб–б€б–аЛаЕаДб–. а–аАаЛв“аАбб‚б‹б€аАаМб‹аЗ аБаА?" #: src/gpodder/gtkui/desktop/preferences.py:621 msgid "Select folder for mount point" msgstr "аЂб–б€аКаЕбƒ аНвЏаКб‚аЕбб– вЏбˆб–аН аБбƒаМаАаНб‹ б‚аАвЃаДаАвЃб‹аЗ" #: src/gpodder/gtkui/desktop/preferences.py:638 #, fuzzy msgid "Select folder for playlists" msgstr "аЂб–б€аКаЕбƒ аНвЏаКб‚аЕбб– вЏбˆб–аН аБбƒаМаАаНб‹ б‚аАвЃаДаАвЃб‹аЗ" #: src/gpodder/gtkui/desktop/sync.py:86 msgid "No device configured" msgstr "вšвБб€б‹аЛв“б‹аЛаАб€ аБаАаПб‚аАаЛаМаАаДб‹" #: src/gpodder/gtkui/desktop/sync.py:87 msgid "Please set up your device in the preferences dialog." msgstr "а‘аАаПб‚аАбƒаЛаАб€ б‚аЕб€аЕаЗаЕбб–аНаДаЕ в›вБб€б‹аЛв“б‹вЃб‹аЗаДб‹ аБаАаПб‚аАвЃб‹аЗ." #: src/gpodder/gtkui/desktop/sync.py:91 msgid "Cannot open device" msgstr "вšвБб€б‹аЛв“б‹аНб‹ аАбˆбƒ аМвЏаМаКб–аН аЕаМаЕб" #: src/gpodder/gtkui/desktop/sync.py:92 msgid "Please check the settings in the preferences dialog." msgstr "а‘аАаПб‚аАбƒаЛаАб€ б‚аЕб€аЕаЗаЕбб–аНаДаЕаГб– аБаАаПб‚аАбƒаЛаАб€аДб‹ б‚аЕаКбаЕб€б–вЃб–аЗ." #: src/gpodder/gtkui/desktop/sync.py:139 msgid "Not enough space left on device" msgstr "вšвБб€б‹аЛв“б‹аДаА аБаОб аОб€б‹аН в›аАаЛаМаАаДб‹" #: src/gpodder/gtkui/desktop/sync.py:140 #, python-format msgid "" "Additional free space required: %(required_space)s\n" "Do you want to continue?" msgstr "" "вšаОбб‹аМбˆаА аБаОб аОб€б‹аН аКаЕб€аЕаК: %(required_space)s\n" "а–аАаЛв“аАбб‚б‹б€бƒаДб‹ в›аАаЛаАаЙбб‹аЗ аБаА?" #: src/gpodder/gtkui/desktop/sync.py:199 #, fuzzy msgid "Update successful" msgstr "аЂб–аЗб–аМ бг™б‚б‚б– аЖвЏаКб‚аЕаЛаДб–." #: src/gpodder/gtkui/desktop/sync.py:200 msgid "The playlist on your MP3 player has been updated." msgstr "" #: src/gpodder/gtkui/desktop/sync.py:274 msgid "Episodes have been deleted on device" msgstr "" #: src/gpodder/gtkui/desktop/sync.py:285 #, fuzzy msgid "Error writing playlist files" msgstr "аЄаАаЙаЛаДб‹ б‚вЏб€аЛаЕаНаДб–б€бƒ в›аАб‚аЕаМаЕаН аАбв›б‚аАаЛаДб‹." #: src/gpodder/plugins/soundcloud.py:154 msgid "Unknown track" msgstr "а‘аЕаЛаГб–бб–аЗ б‚б€аЕаК" #: src/gpodder/plugins/soundcloud.py:181 #, python-format msgid "%s on Soundcloud" msgstr "%s Soundcloud-б‚аА" #: src/gpodder/plugins/soundcloud.py:190 #, python-format msgid "Tracks published by %s on Soundcloud." msgstr "Soundcloud-в“б‹ %s аЖаАб€аИбаЛаАв“аАаН б‚б€аЕаКб‚аЕб€." #: src/gpodder/plugins/soundcloud.py:217 #, python-format msgid "%s's favorites on Soundcloud" msgstr "%s Soundcloud-б‚аАв“б‹ б‚аАвЃаДаАаМаАаЛб‹аЛаАб€б‹" #: src/gpodder/plugins/soundcloud.py:223 #, python-format msgid "Tracks favorited by %s on Soundcloud." msgstr "%s Soundcloud-б‚аА б‚аАвЃаДаАаМаАаЛб‹ аЕб‚б–аП аБаЕаЛаГб–аЛаЕаГаЕаН б‚б€аЕаКб‚аЕб€." #: share/gpodder/extensions/audio_converter.py:20 #, fuzzy msgid "Convert audio files" msgstr "аЂвЏб€аЛаЕаНаДб–б€бƒ бг™б‚бб–аЗ аАбв›б‚аАаЛаДб‹" #: share/gpodder/extensions/audio_converter.py:21 #, fuzzy msgid "Transcode audio files to mp3/ogg" msgstr ".m4a б„аАаЙаЛаДаАб€б‹аН ffmpeg аКгЉаМаЕаГб–аМаЕаН .mp3 аНаЕ .ogg аПб–бˆб–аМаДаЕб€б–аНаЕ б‚вЏб€аЛаЕаНаДб–б€бƒ" #: share/gpodder/extensions/audio_converter.py:84 #: share/gpodder/extensions/video_converter.py:86 #, python-format msgid "Convert to %(format)s" msgstr "%(format)s аПб–бˆб–аМб–аНаЕ б‚вЏб€аЛаЕаНаДб–б€бƒ" #: share/gpodder/extensions/audio_converter.py:111 #: share/gpodder/extensions/rockbox_convert2mp4.py:65 #: share/gpodder/extensions/video_converter.py:111 msgid "File converted" msgstr "аЄаАаЙаЛ б‚вЏб€аЛаЕаНаДб–б€б–аЛаДб–" #: share/gpodder/extensions/audio_converter.py:114 #: share/gpodder/extensions/video_converter.py:114 msgid "Conversion failed" msgstr "аЂвЏб€аЛаЕаНаДб–б€бƒ бг™б‚бб–аЗ аАбв›б‚аАаЛаДб‹" #: share/gpodder/extensions/concatenate_videos.py:20 #: share/gpodder/extensions/concatenate_videos.py:100 #, fuzzy msgid "Concatenate videos" msgstr "аЂвЏб€аЛаЕаНаДб–б€бƒ бг™б‚бб–аЗ аАбв›б‚аАаЛаДб‹" #: share/gpodder/extensions/concatenate_videos.py:21 msgid "Add a context menu item for concatenating multiple videos" msgstr "" #: share/gpodder/extensions/concatenate_videos.py:37 msgid "Save video" msgstr "" #: share/gpodder/extensions/concatenate_videos.py:66 #, fuzzy msgid "Concatenating video files" msgstr "аЂвЏб€аЛаЕаНаДб–б€бƒ бг™б‚бб–аЗ аАбв›б‚аАаЛаДб‹" #: share/gpodder/extensions/concatenate_videos.py:67 #, python-format msgid "Writing %(filename)s" msgstr "" #: share/gpodder/extensions/concatenate_videos.py:78 msgid "Videos successfully converted" msgstr "" #: share/gpodder/extensions/concatenate_videos.py:79 #, fuzzy msgid "Error converting videos" msgstr "аЄаАаЙаЛаДб‹ б‚вЏб€аЛаЕаНаДб–б€бƒ в›аАб‚аЕаМаЕаН аАбв›б‚аАаЛаДб‹." #: share/gpodder/extensions/concatenate_videos.py:80 msgid "Concatenation result" msgstr "" #: share/gpodder/extensions/enqueue_in_mediaplayer.py:16 msgid "Enqueue in media players" msgstr "" #: share/gpodder/extensions/enqueue_in_mediaplayer.py:17 msgid "" "Add a context menu item for enqueueing episodes in installed media players" msgstr "" #: share/gpodder/extensions/enqueue_in_mediaplayer.py:35 msgid "Enqueue in" msgstr "" #: share/gpodder/extensions/episode_website_context_menu.py:14 msgid "\"Open website\" episode context menu" msgstr "" #: share/gpodder/extensions/episode_website_context_menu.py:15 msgid "Add a context menu item for opening the website of an episode" msgstr "" #: share/gpodder/extensions/episode_website_context_menu.py:30 #, fuzzy msgid "Open website" msgstr "а’аЕаБ баАаЙб‚:" #: share/gpodder/extensions/gtk_statusicon.py:14 msgid "Gtk Status Icon" msgstr "Gtk в›аАаЛб‹аП-аКвЏаЙ б‚аАвЃаБаАбˆаАбб‹" #: share/gpodder/extensions/gtk_statusicon.py:15 msgid "Show a status icon for Gtk-based Desktops." msgstr "Gtk-аНаЕаГб–аЗб–аНаДаЕаГб– аЖвБаМб‹б вЏбб‚аЕаЛаДаЕб€б– вЏбˆб–аН в›аАаЛб‹аП-аКвЏаЙ б‚аАвЃаБаАбˆаАбб‹аН аКгЉб€баЕб‚бƒ" #: share/gpodder/extensions/minimize_on_start.py:10 msgid "Minimize on start" msgstr "а†баКаЕ в›аОбб‹аЛв“аАаН аКаЕаЗаДаЕ, б‚б€аЕаЙаГаЕ аЖаИаНаАбƒ." #: share/gpodder/extensions/minimize_on_start.py:11 msgid "Minimizes the gPodder window on startup." msgstr "а†баКаЕ в›аОбб‹аЛв“аАаН аКаЕаЗаДаЕ, gPodder б‚аЕб€аЕаЗаЕбб–аН б‚б€аЕаЙаГаЕ аЖаАбб‹б€аАаДб‹." #: share/gpodder/extensions/mpris-listener.py:33 msgid "MPRIS Listener" msgstr "" #: share/gpodder/extensions/mpris-listener.py:34 msgid "Convert MPRIS notifications to gPodder Media Player D-Bus API" msgstr "" #: share/gpodder/extensions/normalize_audio.py:21 msgid "Normalize audio with re-encoding" msgstr "" #: share/gpodder/extensions/normalize_audio.py:22 msgid "Normalize the volume of audio files with normalize-audio" msgstr "" #: share/gpodder/extensions/normalize_audio.py:99 #, fuzzy msgid "File normalized" msgstr "аЄаАаЙаЛ аАб‚б‹" #: share/gpodder/extensions/rename_download.py:16 msgid "Rename episodes after download" msgstr "а–вЏаКб‚аЕаП аАаЛб‹аНв“аАаНаНаАаН аКаЕаЙб–аН баПаИаЗаОаДб‚аАб€ аАб‚б‚аАб€б‹аН аАбƒб‹бб‚б‹б€бƒ" #: share/gpodder/extensions/rename_download.py:17 msgid "Rename episodes to \".\" on download" msgstr "" "а–вЏаКб‚аЕаП аАаЛбƒ аКаЕаЗб–аНаДаЕ баПаИаЗаОаДб‚аАб€аДб‹ \"<а­аПаИаЗаОаД аАб‚аАбƒб‹>.<аКаЕвЃаЕаЙб‚бƒб–>\" аЕб‚б–аП аАб‚б‹аН " "аАбƒб‹бб‚б‹б€бƒ" #: share/gpodder/extensions/rm_ogg_cover.py:37 msgid "Remove cover art from OGG files" msgstr "OGG б„аАаЙаЛаДаАб€б‹аНаАаН аАаЛбŒаБаОаМ аМвБв›аАаБаАаЛаАб€б‹аН аАаЛб‹аП б‚аАбб‚аАбƒ" #: share/gpodder/extensions/rm_ogg_cover.py:38 msgid "removes coverart from all downloaded ogg files" msgstr "" #: share/gpodder/extensions/rm_ogg_cover.py:66 msgid "Remove cover art" msgstr "ааЛбŒаБаОаМ аМвБв›аАаБаАаЛаАб€б‹аН аАаЛб‹аП б‚аАбб‚аАбƒ" #: share/gpodder/extensions/rockbox_convert2mp4.py:26 msgid "Convert video files to MP4 for Rockbox" msgstr "Rockbox вЏбˆб–аН аВаИаДаЕаО б„аАаЙаЛаДаАб€аДб‹ MP4-аКаЕ б‚вЏб€аЛаЕаНаДб–б€бƒ" #: share/gpodder/extensions/rockbox_convert2mp4.py:27 msgid "Converts all videos to a Rockbox-compatible format" msgstr "а‘аАб€аЛб‹в› б„аАаЙаЛаДаАб€аДб‹ Rockbox-аПаЕаН вЏаЙаЛаЕбб–аМаДб– аПб–бˆб–аМаГаЕ б‚вЏб€аЛаЕаНаДб–б€бƒ" #: share/gpodder/extensions/sonos.py:19 share/gpodder/extensions/sonos.py:78 msgid "Stream to Sonos" msgstr "" #: share/gpodder/extensions/sonos.py:20 msgid "Stream podcasts to Sonos speakers" msgstr "" #: share/gpodder/extensions/tagging.py:45 msgid "Tag downloaded files using Mutagen" msgstr "" #: share/gpodder/extensions/tagging.py:46 #, fuzzy msgid "Add episode and podcast titles to MP3/OGG tags" msgstr "аŸаОаДаКаАбб‚ б‚б–аЗб–аМб–аНаДаЕ \"а‘аАб€аЛб‹в› баПаИаЗаОаДб‚аАб€\" аКгЉб€баЕб‚бƒ" #: share/gpodder/extensions/taskbar_progress.py:28 #, fuzzy msgid "Show download progress on the taskbar" msgstr "Unity Launcher б‚аАвЃаБаАбˆаАбб‹аНаДаА аЖвЏаКб‚аЕаП аАаЛбƒ вЏб€аДб–бб–аН аКгЉб€баЕб‚бƒ." #: share/gpodder/extensions/taskbar_progress.py:29 msgid "Displays the progress on the Windows taskbar." msgstr "" #: share/gpodder/extensions/ted_subtitles.py:16 msgid "Subtitle Downloader for TED Talks" msgstr "" #: share/gpodder/extensions/ted_subtitles.py:17 msgid "Downloads .srt subtitles for TED Talks Videos" msgstr "" #: share/gpodder/extensions/ubuntu_appindicator.py:10 msgid "Ubuntu App Indicator" msgstr "Ubuntu App аИаНаДаИаКаАб‚аОб€б‹" #: share/gpodder/extensions/ubuntu_appindicator.py:11 msgid "Show a status indicator in the top bar." msgstr "вЎбб‚б–вЃаГб– аПаАаНаЕаЛаДаЕ в›аАаЛб‹аП-аКвЏаЙ аИаНаДаИаКаАб‚аОб€б‹аН аКгЉб€баЕб‚бƒ." #: share/gpodder/extensions/ubuntu_appindicator.py:47 msgid "Show main window" msgstr "а‘аАбб‚б‹ б‚аЕб€аЕаЗаЕаНб– аКгЉб€баЕб‚бƒ" #: share/gpodder/extensions/ubuntu_appindicator.py:57 #: share/gpodder/ui/gtk/gpodder.ui.h:6 msgid "Quit" msgstr "аЈб‹в“бƒ" #: share/gpodder/extensions/ubuntu_unity.py:10 msgid "Ubuntu Unity Integration" msgstr "Ubuntu Unity аИаНб‚аЕаГб€аАб†аИббб‹" #: share/gpodder/extensions/ubuntu_unity.py:11 msgid "Show download progress in the Unity Launcher icon." msgstr "Unity Launcher б‚аАвЃаБаАбˆаАбб‹аНаДаА аЖвЏаКб‚аЕаП аАаЛбƒ вЏб€аДб–бб–аН аКгЉб€баЕб‚бƒ." #: share/gpodder/extensions/update_feeds_on_startup.py:14 #, fuzzy msgid "Search for new episodes on startup" msgstr "вšаОбб‹аЛв“аАаНаДаА аЖаАвЃаА баПаИаЗаОаДб‚аАб€в“аА б‚аЕаКбаЕб€бƒ" #: share/gpodder/extensions/update_feeds_on_startup.py:15 #, fuzzy msgid "Starts the search for new episodes on startup" msgstr "вšаОбб‹аЛв“аАаНаДаА аЖаАвЃаА баПаИаЗаОаДб‚аАб€в“аА б‚аЕаКбаЕб€бƒ" #: share/gpodder/extensions/video_converter.py:22 #, fuzzy msgid "Convert video files" msgstr "аЂвЏб€аЛаЕаНаДб–б€бƒ бг™б‚бб–аЗ аАбв›б‚аАаЛаДб‹" #: share/gpodder/extensions/video_converter.py:23 #, fuzzy msgid "Transcode video files to avi/mp4/m4v" msgstr ".m4a б„аАаЙаЛаДаАб€б‹аН ffmpeg аКгЉаМаЕаГб–аМаЕаН .mp3 аНаЕ .ogg аПб–бˆб–аМаДаЕб€б–аНаЕ б‚вЏб€аЛаЕаНаДб–б€бƒ" #: share/gpodder/ui/gtk/gpodderaddpodcast.ui.h:1 msgid "Add a new podcast" msgstr "а–аАвЃаА аПаОаДаКаАбб‚б‚б‹ в›аОббƒ" #: share/gpodder/ui/gtk/gpodderaddpodcast.ui.h:2 msgid "URL:" msgstr "URL-б‹:" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:1 msgid "gPodder Podcast Editor" msgstr "gPodder аПаОаДаКаАбб‚ б‚вЏаЗаЕб‚бƒбˆб–бб–" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:2 msgid "Section:" msgstr "аЁаЕаКб†аИб:" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:3 msgid "Disable feed updates (pause subscription)" msgstr "аЂаАбаПаА аЖаАвЃаАб€б‚бƒб‹аН бгЉаНаДб–б€бƒ (аЖаАаЗб‹аЛбƒаДб‹ аАбаЛаДаАб‚бƒ)" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:4 #, fuzzy msgid "Synchronize to MP3 player devices" msgstr "аŸаЛаЕаЕб€аГаЕ баИаНб…б€аОаНаДаАбƒ" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:5 #, fuzzy msgid "Strategy:" msgstr "гЈбˆб–б€бƒ баАббаАб‚б‹:" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:6 #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:6 msgid "General" msgstr "а–аАаЛаПб‹" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:7 msgid "HTTP/FTP Authentication" msgstr "HTTP/FTP аАбƒб‚аЕаНб‚аИб„аИаКаАб†аИб" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:8 #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:13 msgid "Username:" msgstr "аŸаАаЙаДаАаЛаАаНбƒбˆб‹ аАб‚б‹:" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:9 #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:14 msgid "Password:" msgstr "аŸаАб€аОаЛбŒ:" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:10 msgid "Locations" msgstr "аžб€аНаАаЛаАббƒб‹" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:11 msgid "Download to:" msgstr "аЁаАв›б‚аАаЛаАб‚б‹аН аОб€аНб‹:" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:12 msgid "Website:" msgstr "а’аЕаБ баАаЙб‚:" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:13 msgid "website label" msgstr "аВаЕаБ баАаЙб‚ аБаЕаЛаГб–бб–" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:14 msgid "Advanced" msgstr "аšаЕвЃаЕаЙб‚б–аЛаГаЕаН" #: share/gpodder/ui/gtk/gpodderconfigeditor.ui.h:1 msgid "gPodder Configuration Editor" msgstr "gPodder аБаАаПб‚аАбƒаЛаАб€ б‚вЏаЗаЕб‚бƒбˆб–бб–" #: share/gpodder/ui/gtk/gpodderconfigeditor.ui.h:2 msgid "Search for:" msgstr "а†аЗаДаЕбƒ:" #: share/gpodder/ui/gtk/gpodderconfigeditor.ui.h:3 msgid "Show All" msgstr "а‘аАб€аЛб‹в“б‹аН аКгЉб€баЕб‚бƒ" #: share/gpodder/ui/gtk/gpodderepisodeselector.ui.h:1 msgid "Select episodes" msgstr "а­аПаИаЗаОаДб‚аАб€аДб‹ б‚аАвЃаДаАбƒ" #: share/gpodder/ui/gtk/gpodderpodcastdirectory.ui.h:1 msgid "Find new podcasts" msgstr "а–аАвЃаА аПаОаДаКаАбб‚б‚аАб€аДб‹ б–аЗаДаЕбƒ" #: share/gpodder/ui/gtk/gpodderpodcastdirectory.ui.h:2 msgid "Select All" msgstr "а‘аАб€аЛб‹в“б‹аН б‚аАвЃаДаАбƒ" #: share/gpodder/ui/gtk/gpodderpodcastdirectory.ui.h:3 msgid "Select None" msgstr "а•бˆб‚аЕвЃаЕ б‚аАвЃаДаАаМаАбƒ" #: share/gpodder/ui/gtk/gpodderpodcastdirectory.ui.h:4 msgid "label" msgstr "" #: share/gpodder/ui/gtk/gpodderpodcastdirectory.ui.h:5 msgid "..." msgstr "" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:1 #: share/gpodder/ui/gtk/gpodder.ui.h:5 msgid "Preferences" msgstr "а‘аАаПб‚аАбƒаЛаАб€" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:2 msgid "Audio player:" msgstr "абƒаДаИаО аПаЛаЕаЕб€:" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:3 msgid "Video player:" msgstr "а’аИаДаЕаО аПаЛаЕаЕб€:" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:4 msgid "\"All episodes\" in podcast list" msgstr "аŸаОаДаКаАбб‚б‚аАб€ б‚б–аЗб–аМб–аНаДаЕаГб– \"а‘аАб€аЛб‹в› баПаИаЗаОаДб‚аАб€\"" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:5 msgid "Use sections for podcast list" msgstr "аŸаОаДаКаАбб‚б‚аАб€ б‚б–аЗб–аМб– вЏбˆб–аН баЕаКб†аИбаЛаАб€аДб‹ в›аОаЛаДаАаНбƒ" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:7 msgid "Preferred YouTube format:" msgstr "" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:8 msgid "YouTube API key (v3):" msgstr "" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:9 msgid "Preferred Vimeo format:" msgstr "" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:11 msgid "Extensions" msgstr "аšаЕвЃаЕаЙб‚бƒаЛаЕб€" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:12 msgid "Synchronize subscriptions and episode actions" msgstr "а–аАаЗб‹аЛбƒаЛаАб€ аМаЕаН баПаИаЗаОаД г™б€аЕаКаЕб‚б‚аЕб€б–аН баИаНб…б€аОаНаДаАбƒ" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:15 msgid "Replace list on server with local subscriptions" msgstr "аЁаЕб€аВаЕб€аДаЕаГб– б‚б–аЗб–аМаДб– аЖаЕб€аГб–аЛб–аКб‚б– аНвБбв›аАбб‹аМаЕаН аАаЛаМаАбб‚б‹б€бƒ" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:16 msgid "Device name:" msgstr "вšвБб€б‹аЛв“б‹ аАб‚аАбƒб‹:" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:17 msgid "gpodder.net" msgstr "gpodder.net" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:18 msgid "Update interval:" msgstr "а–аАвЃаАб€б‚бƒ аМаЕб€аЗб–аМб–:" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:19 msgid "Maximum number of episodes per podcast:" msgstr "аŸаОаДаКаАбб‚ вЏбˆб–аН аМаАаКбаИаМаАаЛаДб‹ баПаИаЗаОаДб‚аАб€ баАаНб‹:" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:20 msgid "When new episodes are found:" msgstr "а–аАвЃаА баПаИаЗаОаДб‚аАб€ б‚аАаБб‹аЛв“аАаН аКаЕаЗаДаЕ:" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:21 msgid "Updating" msgstr "а–аАвЃаАб€б‚бƒ" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:22 msgid "Delete played episodes:" msgstr "аžаЙаНаАаЛв“аАаН баПаИаЗаОаДб‚аАб€аДб‹ гЉбˆб–б€бƒ:" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:23 msgid "Remove played episodes even if unfinished" msgstr "абв›б‚аАаЛаМаАв“аАаН аБаОаЛбаА аДаА аОаЙаНаАаЛв“аАаН баПаИаЗаОаДб‚аАб€б‹аН гЉбˆб–б€бƒ" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:24 msgid "Also remove unplayed episodes" msgstr "аžбб‹в“аАаНв›аОбаА аОаЙаНаАаЛаМаАв“аАаН баПаИаЗаОаДб‚аАб€аДб‹ гЉбˆб–б€бƒ" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:25 msgid "Clean-up" msgstr "аЂаАаЗаАб€б‚бƒ" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:26 msgid "Device type:" msgstr "вšвБб€б‹аЛв“б‹ б‚вЏб€б–:" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:27 msgid "Mountpoint:" msgstr "аЂб–б€аКаЕбƒ аНвЏаКб‚аЕбб–:" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:28 msgid "After syncing an episode:" msgstr "а­аПаИаЗаОаДб‚б‹ баИаНб…б€аОаНаДаАв“аАаНаНаАаН аКаЕаЙб–аН:" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:29 #, fuzzy msgid "Create playlists on device" msgstr "аЁаЕб€аВаЕб€аДаЕаГб– б‚б–аЗб–аМаДб– аАаЛаМаАбб‚б‹б€бƒ" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:30 #, fuzzy msgid "Playlists Folder:" msgstr "аžаЙаНаАб‚бƒ б‚б–аЗб–аМб– аБаОб" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:31 msgid "Remove episodes deleted on device from gPodder" msgstr "" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:32 msgid "Only sync unplayed episodes" msgstr "аЂаЕаК аОаЙаНаАаЛаМаАв“аАаН баПаИаЗаОаДб‚аАб€аДб‹ баИаНб…б€аОаНаДаАбƒ:" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:33 msgid "Devices" msgstr "вšвБб€б‹аЛв“б‹аЛаАб€" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:34 msgid "Edit config" msgstr "а‘аАаПб‚аАбƒаДб‹ б‚вЏаЗаЕб‚бƒ" #: share/gpodder/ui/gtk/gpodder.ui.h:1 msgid "_Podcasts" msgstr "аŸаОаДаКаА_бб‚б‚аАб€" #: share/gpodder/ui/gtk/gpodder.ui.h:2 msgid "Check for new episodes" msgstr "а–аАвЃаА баПаИаЗаОаДб‚аАб€в“аА б‚аЕаКбаЕб€бƒ" #: share/gpodder/ui/gtk/gpodder.ui.h:3 msgid "Download new episodes" msgstr "а–аАвЃаА баПаИаЗаОаДб‚аАб€аДб‹ аЖвЏаКб‚аЕаП аАаЛбƒ" #: share/gpodder/ui/gtk/gpodder.ui.h:7 msgid "_Subscriptions" msgstr "а–аАаЗ_б‹аЛбƒаЛаАб€" #: share/gpodder/ui/gtk/gpodder.ui.h:8 msgid "Discover new podcasts" msgstr "а–аАвЃаА аПаОаДаКаАбб‚б‚аАб€аДб‹ аАбˆбƒ" #: share/gpodder/ui/gtk/gpodder.ui.h:9 msgid "Add podcast via URL" msgstr "аŸаОаДаКаАбб‚б‚б‹ URL-аДаАаН в›аОббƒ" #: share/gpodder/ui/gtk/gpodder.ui.h:11 msgid "Unsubscribe" msgstr "а–аАаЗб‹аЛбƒаДаАаН аБаАб б‚аАб€б‚бƒ" #: share/gpodder/ui/gtk/gpodder.ui.h:14 msgid "Import from OPML file" msgstr "OPML б„аАаЙаЛб‹аНаАаН аИаМаПаОб€б‚б‚аАбƒ" #: share/gpodder/ui/gtk/gpodder.ui.h:15 msgid "Export to OPML file" msgstr "OPML б„аАаЙаЛб‹аНаА баКбаПаОб€б‚б‚аАбƒ" #: share/gpodder/ui/gtk/gpodder.ui.h:16 msgid "Go to gpodder.net" msgstr "Gpodder.net баАаЙб‚б‹аНаА гЉб‚бƒ" #: share/gpodder/ui/gtk/gpodder.ui.h:17 msgid "_Episodes" msgstr "_а­аПаИаЗаОаДб‚аАб€" #: share/gpodder/ui/gtk/gpodder.ui.h:18 msgid "Play" msgstr "аžаЙаНаАб‚бƒ" #: share/gpodder/ui/gtk/gpodder.ui.h:19 msgid "Open" msgstr "абˆбƒ" #: share/gpodder/ui/gtk/gpodder.ui.h:22 msgid "Delete" msgstr "гЈбˆб–б€бƒ" #: share/gpodder/ui/gtk/gpodder.ui.h:23 msgid "Toggle new status" msgstr "а–аАвЃаА аКвЏаЙб–аН аАбƒб‹бб‚б‹б€бƒ" #: share/gpodder/ui/gtk/gpodder.ui.h:24 msgid "Change delete lock" msgstr "а‘аЛаОаКб‚аАбƒаДб‹ аАбƒб‹бб‚б‹б€бƒ" #: share/gpodder/ui/gtk/gpodder.ui.h:26 msgid "E_xtras" msgstr "" #: share/gpodder/ui/gtk/gpodder.ui.h:27 msgid "Sync to device" msgstr "вšвБб€б‹аЛв“б‹в“аА баИаНб…б€аОаНаДаАбƒ" #: share/gpodder/ui/gtk/gpodder.ui.h:28 #, fuzzy msgid "Update YouTube subscriptions" msgstr "а–аАаЗб‹аЛбƒаЛаАб€ аЖаОв›" #: share/gpodder/ui/gtk/gpodder.ui.h:29 msgid "_View" msgstr "_аЂвЏб€б–" #: share/gpodder/ui/gtk/gpodder.ui.h:30 msgid "Toolbar" msgstr "аŸаАаНаЕаЛбŒ" #: share/gpodder/ui/gtk/gpodder.ui.h:31 msgid "Episode descriptions" msgstr "а­аПаИаЗаОаДб‚аАб€ аАаНб‹в›б‚аАаМаАаЛаАб€б‹" #: share/gpodder/ui/gtk/gpodder.ui.h:33 msgid "Hide deleted episodes" msgstr "гЈбˆб–б€б–аЛаГаЕаН баПаИаЗаОаДб‚аАб€аДб‹ аЖаАбб‹б€бƒ" #: share/gpodder/ui/gtk/gpodder.ui.h:34 msgid "Downloaded episodes" msgstr "а–вЏаКб‚аЕаЛаГаЕаН баПаИаЗаОаДб‚аАб€" #: share/gpodder/ui/gtk/gpodder.ui.h:35 msgid "Unplayed episodes" msgstr "аžаЙаНаАаЛаМаАв“аАаН баПаИаЗаОаДб‚аАб€" #: share/gpodder/ui/gtk/gpodder.ui.h:36 msgid "Hide podcasts without episodes" msgstr "а­аПаИаЗаОаДб‚аАб€б‹ аЖаОв› аПаОаДаКаАбб‚б‚аАб€аДб‹ аЖаАбб‹б€бƒ" #: share/gpodder/ui/gtk/gpodder.ui.h:37 msgid "_Help" msgstr "аšгЉ_аМаЕаК" #: share/gpodder/ui/gtk/gpodder.ui.h:38 msgid "User manual" msgstr "аŸаАаЙаДаАаЛаАаНбƒбˆб‹ в›вБаЖаАб‚б‚аАаМаАбб‹" #: share/gpodder/ui/gtk/gpodder.ui.h:39 msgid "Software updates" msgstr "а‘вš аЖаАвЃаАб€б‚бƒаЛаАб€б‹" #: share/gpodder/ui/gtk/gpodder.ui.h:40 msgid "Filter:" msgstr "аЁвЏаЗаГб–:" #: share/gpodder/ui/gtk/gpodder.ui.h:41 msgid "Podcasts" msgstr "аŸаОаДаКаАбб‚б‚аАб€" #: share/gpodder/ui/gtk/gpodder.ui.h:42 msgid "Limit rate to" msgstr "а–б‹аЛаДаАаМаДб‹в› бˆаЕаГб–" #: share/gpodder/ui/gtk/gpodder.ui.h:43 msgid "KiB/s" msgstr "аšа‘/б" #: share/gpodder/ui/gtk/gpodder.ui.h:44 msgid "Limit downloads to" msgstr "а–вЏаКб‚аЕаМаЕаЛаЕб€ баАаН бˆаЕаГб–" #: share/gpodder/ui/gtk/gpodderwelcome.ui.h:2 msgid "Welcome to gPodder" msgstr "gPodder-аГаЕ в›аОбˆ аКаЕаЛаДб–вЃб–аЗ" #: share/gpodder/ui/gtk/gpodderwelcome.ui.h:3 msgid "Your podcast list is empty." msgstr "аЁб–аЗаДб–вЃ аПаОаДаКаАбб‚б‚аАб€ б‚б–аЗб–аМб–вЃб–аЗ аБаОб." #: share/gpodder/ui/gtk/gpodderwelcome.ui.h:4 msgid "Choose from a list of example podcasts" msgstr "вЎаЛаГб– аПаОаДаКаАбб‚б‚аАб€ б‚б–аЗб–аМб–аНаЕаН б‚аАвЃаДаАвЃб‹аЗ" #: share/gpodder/ui/gtk/gpodderwelcome.ui.h:5 msgid "Add a podcast by entering its URL" msgstr "аŸаОаДаКаАбб‚б‚б‹ аОаНб‹вЃ бб–аЛб‚аЕаМаЕбб–аН аЕаНаГб–аЗбƒ аАб€в›б‹аЛб‹ в›аОбб‹вЃб‹аЗ" #: share/gpodder/ui/gtk/gpodderwelcome.ui.h:6 msgid "Restore my subscriptions from gpodder.net" msgstr "аœаЕаНб–вЃ аЖаАаЗб‹аЛбƒаЛаАб€б‹аМаДб‹ gpodder.net баАаЙб‚б‹аНаАаН в›аАаЛаПб‹аНаА аКаЕаЛб‚б–б€бƒ" #: bin/gpo:266 msgid "Podcast update requested by extensions." msgstr "аŸаОаДаКаАбб‚б‚б‹ аЖаАвЃаАб€б‚бƒ аКаЕвЃаЕаЙб‚бƒаЛаЕб€аМаЕаН бвБб€аАаЛв“аАаН." #: bin/gpo:270 msgid "Episode download requested by extensions." msgstr "а­аПаИаЗаОаДб‚б‹ аЖвЏаКб‚аЕаП аАаЛбƒ аКаЕвЃаЕаЙб‚бƒаЛаЕб€аМаЕаН бвБб€аАаЛв“аАаН." #: bin/gpo:323 #, fuzzy, python-format msgid "Invalid url: %s" msgstr "вšаАб‚аЕ URL: %s" #: bin/gpo:340 bin/gpo:416 bin/gpo:450 bin/gpo:582 bin/gpo:597 bin/gpo:717 #, python-format msgid "You are not subscribed to %s." msgstr "аЁб–аЗ %s вЏбˆб–аН аЖаАаЗб‹аЛв“аАаН аЖаОв›бб‹аЗ." #: bin/gpo:346 #, fuzzy, python-format msgid "Already subscribed to %s." msgstr "%s вЏбˆб–аН аЖаАаЗб‹аЛбƒ аМвЏаМаКб–аН аЕаМаЕб." #: bin/gpo:352 #, python-format msgid "Cannot subscribe to %s." msgstr "%s вЏбˆб–аН аЖаАаЗб‹аЛбƒ аМвЏаМаКб–аН аЕаМаЕб." #: bin/gpo:368 #, python-format msgid "Successfully added %s." msgstr "%s бг™б‚б‚б– в›аОбб‹аЛаДб‹." #: bin/gpo:386 msgid "This configuration option does not exist." msgstr "а‘аАаПб‚аАбƒаЛаАб€ аОаПб†аИббб‹ аЖаОв›." #: bin/gpo:390 msgid "Can only set leaf configuration nodes." msgstr "" #: bin/gpo:404 #, python-format msgid "Renamed %(old_title)s to %(new_title)s." msgstr "а•баКб– %(old_title)s аАб‚б‹ аЖаАвЃаА %(new_title)s аАб‚б‹аНаА гЉаЗаГаЕб€б‚б–аЛаДб–." #: bin/gpo:420 #, python-format msgid "Unsubscribed from %s." msgstr "%s вЏбˆб–аН аЖаАаЗб‹аЛбƒ гЉбˆб–б€б–аЛаДб–." #: bin/gpo:494 msgid "Updates disabled" msgstr "а–аАвЃаАб€б‚бƒаЛаАб€ бгЉаНаДб–б€бƒаЛб–." #: bin/gpo:505 #, python-format msgid "%(count)d new episode" msgid_plural "%(count)d new episodes" msgstr[0] "%(count)d аЖаАвЃаА баПаИаЗаОаД" #: bin/gpo:511 msgid "Checking for new episodes" msgstr "а–аАвЃаА баПаИаЗаОаДб‚аАб€в“аА б‚аЕаКбаЕб€бƒ" #: bin/gpo:520 #, python-format msgid "Skipping %(podcast)s" msgstr "%(podcast)s аАб‚б‚аАаП аКаЕб‚бƒ" #: bin/gpo:588 #, python-format msgid "Disabling feed update from %s." msgstr "%s вЏбˆб–аН б‚аАбаПаА аЖаАвЃаАб€б‚бƒб‹аН бгЉаНаДб–б€бƒ." #: bin/gpo:603 #, python-format msgid "Enabling feed update from %s." msgstr "%s вЏбˆб–аН б‚аАбаПаА аЖаАвЃаАб€б‚бƒб‹аН б–баКаЕ в›аОббƒ." #: bin/gpo:616 #, python-format msgid "Please register a YouTube API key and set it using %(command)s." msgstr "" #: bin/gpo:643 #, fuzzy, python-format msgid "Changing: %(old_url)s => %(new_url)s" msgstr "URL аЕбаКб– %(old_url)s аМг™аНб–аНаЕаН аЖаАвЃаА %(new_url)s аМг™аНб–аНаЕ гЉаЗаГаЕб€б‚б–аЛаДб–." #: bin/gpo:653 #, fuzzy msgid "Nothing to fix" msgstr "а­аКбаПаОб€б‚б‚аАаЛаАб‚б‹аН аЕбˆаНг™б€баЕ аЖаОв›" #: bin/gpo:672 msgid "No podcasts found." msgstr "аŸаОаДаКаАбб‚б‚аАб€ б‚аАаБб‹аЛаМаАаДб‹." #: bin/gpo:686 msgid "Enter index to subscribe, ? for list" msgstr "а–аАаЗб‹аЛбƒ вЏбˆб–аН аНгЉаМб–б€аДб– аЕаНаГб–аЗб–вЃб–аЗ, б‚б–аЗб–аМ вЏбˆб–аН ?" #: bin/gpo:700 bin/gpo:704 msgid "Invalid value." msgstr "аœг™аНб– в›аАб‚аЕ." #: bin/gpo:721 #, python-format msgid "Invalid URL: %s" msgstr "вšаАб‚аЕ URL: %s" #: bin/gpo:724 #, python-format msgid "Changed URL from %(old_url)s to %(new_url)s." msgstr "URL аЕбаКб– %(old_url)s аМг™аНб–аНаЕаН аЖаАвЃаА %(new_url)s аМг™аНб–аНаЕ гЉаЗаГаЕб€б‚б–аЛаДб–." #: bin/gpo:782 #, python-format msgid "Syntax error: %(error)s" msgstr "аЁаИаНб‚аАаКбаИб в›аАб‚аЕбб–: %(error)s" #: bin/gpo:876 #, fuzzy msgid "Ambiguous command. Did you mean.." msgstr "аšаОаМаАаНаДаА в›аАб‚аЕ. аœвЏаМаКб–аН, аКаЕаЛаЕбб–аНб– аЕаНаГб–аЗаГб–вЃб–аЗ аКаЕаЛаГаЕаН бˆб‹в“аАб€..." #: bin/gpo:880 msgid "The requested function is not available." msgstr "аЁвБб€аАаЛв“аАаН б„бƒаНаКб†аИб в›аОаЛаЖаЕб‚аЕб€бб–аЗ." #: bin/gpodder:105 #, fuzzy msgid "print logging output on the console" msgstr "а–гЉаНаДаЕбƒ аАв›аПаАб€аАб‚б‹аН бˆб‹в“б‹бв›аА бˆб‹в“аАб€бƒ" #: bin/gpodder:108 #, fuzzy msgid "subscribe to the feed at URL" msgstr "а‘аЕб€б–аЛаГаЕаН URL-аГаЕ аЖаАаЗб‹аЛбƒ" #: bin/gpodder:113 msgid "Mac OS X application process number" msgstr "Mac OS X в›аОаЛаДаАаНаБаАбб‹ вЏб€аДб–бб–аНб–вЃ аНаОаМаЕб€б–" #: share/applications/gpodder.desktop.in.h:2 msgid "gPodder Podcast Client" msgstr "gPodder аПаОаДаКаАбб‚б‚аАб€ аКаЛаИаЕаНб‚б–" #: share/applications/gpodder.desktop.in.h:3 msgid "Podcast Client" msgstr "аŸаОаДаКаАбб‚б‚аАб€ аКаЛаИаЕаНб‚б–" #: share/applications/gpodder.desktop.in.h:4 msgid "Subscribe to audio and video content from the web" msgstr "а’аЕаБб‚аЕаН аАбƒаДаИаО аМаЕаН аВаИаДаЕаО в›вБб€аАаМаАбб‹аНаА аЖаАаЗб‹аЛбƒ" #: share/applications/gpodder-url-handler.desktop.in.h:1 #, fuzzy msgid "gPodder (subscribe to feed)" msgstr "а‘аЕб€б–аЛаГаЕаН URL-аГаЕ аЖаАаЗб‹аЛбƒ" gpodder-3.9.0/po/ca.po0000644000016000001710000013352012654461625015641 0ustar jenkinsjenkins00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # # Translators: msgid "" msgstr "" "Project-Id-Version: gPodder\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2016-02-03 20:31+0000\n" "PO-Revision-Date: 2013-01-19 12:31+0000\n" "Last-Translator: Thomas Perl \n" "Language-Team: Catalan (http://www.transifex.com/projects/p/gpodder/language/" "ca/)\n" "Language: ca\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" #: src/gpodder/config.py:55 #, python-format msgid "gPodder on %s" msgstr "" #: src/gpodder/directory.py:95 msgid "gpodder.net search" msgstr "" #: src/gpodder/directory.py:104 msgid "OPML from web" msgstr "" #: src/gpodder/directory.py:113 msgid "OPML file" msgstr "" #: src/gpodder/directory.py:122 share/gpodder/ui/gtk/gpodderwelcome.ui.h:1 msgid "Getting started" msgstr "" #: src/gpodder/directory.py:131 msgid "gpodder.net Top 50" msgstr "" #: src/gpodder/directory.py:140 msgid "gpodder.net Tags" msgstr "" #: src/gpodder/directory.py:152 msgid "Soundcloud search" msgstr "" #: src/gpodder/directory.py:165 msgid "Imported OPML file" msgstr "" #: src/gpodder/download.py:329 msgid "Wrong username/password" msgstr "" #: src/gpodder/download.py:527 src/gpodder/sync.py:924 msgid "Added" msgstr "" #: src/gpodder/download.py:527 src/gpodder/sync.py:924 msgid "Queued" msgstr "" #: src/gpodder/download.py:527 src/gpodder/gtkui/model.py:327 msgid "Downloading" msgstr "" #: src/gpodder/download.py:528 src/gpodder/model.py:721 #: src/gpodder/sync.py:925 msgid "Finished" msgstr "" #: src/gpodder/download.py:528 src/gpodder/sync.py:925 msgid "Failed" msgstr "" #: src/gpodder/download.py:528 src/gpodder/sync.py:925 msgid "Cancelled" msgstr "" #: src/gpodder/download.py:528 src/gpodder/sync.py:925 msgid "Paused" msgstr "" #: src/gpodder/download.py:862 msgid "Missing content from server" msgstr "" #: src/gpodder/download.py:868 #, python-format msgid "I/O Error: %(error)s: %(filename)s" msgstr "" #: src/gpodder/download.py:875 #, python-format msgid "HTTP Error %(code)s: %(message)s" msgstr "" #: src/gpodder/download.py:879 src/gpodder/sync.py:1081 #, python-format msgid "Error: %s" msgstr "" #: src/gpodder/extensions.py:55 msgid "Desktop Integration" msgstr "" #: src/gpodder/extensions.py:56 msgid "Interface" msgstr "" #: src/gpodder/extensions.py:57 msgid "Post download" msgstr "" #: src/gpodder/extensions.py:59 src/gpodder/model.py:779 #: src/gpodder/model.py:1225 msgid "Other" msgstr "" #: src/gpodder/extensions.py:100 msgid "No description for this extension." msgstr "" #: src/gpodder/extensions.py:212 #, python-format msgid "Command not found: %(command)s" msgstr "" #: src/gpodder/extensions.py:228 #, python-format msgid "Need at least one of the following commands: %(list_of_commands)s" msgstr "" #: src/gpodder/extensions.py:265 #, python-format msgid "Python module not found: %(module)s" msgstr "" #: src/gpodder/model.py:446 src/gpodder/plugins/soundcloud.py:156 msgid "No description available" msgstr "" #: src/gpodder/model.py:679 msgid "unknown" msgstr "" #: src/gpodder/model.py:746 msgid "Default" msgstr "" #: src/gpodder/model.py:747 msgid "Only keep latest" msgstr "" #: src/gpodder/model.py:1208 src/gpodder/model.py:1223 #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:10 msgid "Video" msgstr "" #: src/gpodder/model.py:1221 msgid "Audio" msgstr "" #: src/gpodder/my.py:174 #, python-format msgid "Add %s" msgstr "" #: src/gpodder/my.py:176 #, python-format msgid "Remove %s" msgstr "" #: src/gpodder/sync.py:196 msgid "Cancelled by user" msgstr "" #: src/gpodder/sync.py:199 msgid "Writing data to disk" msgstr "" #: src/gpodder/sync.py:295 msgid "Opening iPod database" msgstr "" #: src/gpodder/sync.py:305 msgid "iPod opened" msgstr "" #: src/gpodder/sync.py:316 msgid "Saving iPod database" msgstr "" #: src/gpodder/sync.py:321 msgid "Writing extended gtkpod database" msgstr "" #: src/gpodder/sync.py:397 src/gpodder/sync.py:680 src/gpodder/sync.py:874 #, python-format msgid "Removing %s" msgstr "" #: src/gpodder/sync.py:412 src/gpodder/sync.py:557 #, python-format msgid "Adding %s" msgstr "" #: src/gpodder/sync.py:430 #, python-format msgid "Error copying %(episode)s: Not enough free space on %(mountpoint)s" msgstr "" #: src/gpodder/sync.py:515 msgid "Opening MP3 player" msgstr "" #: src/gpodder/sync.py:518 msgid "MP3 player opened" msgstr "" #: src/gpodder/sync.py:576 #, python-format msgid "" "Not enough space in %(path)s: %(free)s available, but need at least %(need)s" msgstr "" #: src/gpodder/sync.py:603 src/gpodder/sync.py:611 #, python-format msgid "Error opening %(filename)s: %(message)s" msgstr "" #: src/gpodder/sync.py:780 src/gpodder/sync.py:786 msgid "MTP device" msgstr "" #: src/gpodder/sync.py:793 msgid "Opening the MTP device" msgstr "" #: src/gpodder/sync.py:803 #, python-format msgid "%s opened" msgstr "" #: src/gpodder/sync.py:808 #, python-format msgid "Closing %s" msgstr "" #: src/gpodder/sync.py:816 #, python-format msgid "%s closed" msgstr "" #: src/gpodder/sync.py:821 bin/gpo:708 #, python-format msgid "Adding %s..." msgstr "" #: src/gpodder/sync.py:924 msgid "Synchronizing" msgstr "" #: src/gpodder/util.py:429 #, python-format msgid "%(count)d day ago" msgid_plural "%(count)d days ago" msgstr[0] "" msgstr[1] "" #: src/gpodder/util.py:508 msgid "Today" msgstr "" #: src/gpodder/util.py:510 msgid "Yesterday" msgstr "" #: src/gpodder/util.py:553 src/gpodder/util.py:556 msgid "(unknown)" msgstr "" #: src/gpodder/util.py:1193 src/gpodder/util.py:1212 #, python-format msgid "%(count)d second" msgid_plural "%(count)d seconds" msgstr[0] "" msgstr[1] "" #: src/gpodder/util.py:1206 #, python-format msgid "%(count)d hour" msgid_plural "%(count)d hours" msgstr[0] "" msgstr[1] "" #: src/gpodder/util.py:1209 #, python-format msgid "%(count)d minute" msgid_plural "%(count)d minutes" msgstr[0] "" msgstr[1] "" #: src/gpodder/util.py:1215 msgid "and" msgstr "" #: src/gpodder/gtkui/config.py:50 msgid "Integer" msgstr "" #: src/gpodder/gtkui/config.py:52 msgid "Float" msgstr "" #: src/gpodder/gtkui/config.py:54 msgid "Boolean" msgstr "" #: src/gpodder/gtkui/config.py:56 msgid "String" msgstr "" #: src/gpodder/gtkui/desktopfile.py:70 #, python-format msgid "Command: %s" msgstr "" #: src/gpodder/gtkui/desktopfile.py:150 msgid "Default application" msgstr "" #: src/gpodder/gtkui/main.py:205 share/applications/gpodder.desktop.in.h:1 msgid "gPodder" msgstr "" #: src/gpodder/gtkui/main.py:288 msgid "Loading incomplete downloads" msgstr "" #: src/gpodder/gtkui/main.py:289 msgid "Some episodes have not finished downloading in a previous session." msgstr "" #: src/gpodder/gtkui/main.py:291 #, python-format msgid "%(count)d partial file" msgid_plural "%(count)d partial files" msgstr[0] "" msgstr[1] "" #: src/gpodder/gtkui/main.py:306 msgid "Resume all" msgstr "" #: src/gpodder/gtkui/main.py:316 msgid "Incomplete downloads from a previous session were found." msgstr "" #: src/gpodder/gtkui/main.py:414 msgid "Action" msgstr "" #: src/gpodder/gtkui/main.py:461 msgid "Confirm changes from gpodder.net" msgstr "" #: src/gpodder/gtkui/main.py:462 msgid "Select the actions you want to carry out." msgstr "" #: src/gpodder/gtkui/main.py:502 msgid "Uploading subscriptions" msgstr "" #: src/gpodder/gtkui/main.py:503 msgid "Your subscriptions are being uploaded to the server." msgstr "" #: src/gpodder/gtkui/main.py:508 msgid "List uploaded successfully." msgstr "" #: src/gpodder/gtkui/main.py:515 msgid "Error while uploading" msgstr "" #: src/gpodder/gtkui/main.py:800 src/gpodder/gtkui/main.py:928 #: src/gpodder/gtkui/main.py:2622 src/gpodder/gtkui/main.py:2815 #: src/gpodder/gtkui/desktop/episodeselector.py:132 #: src/gpodder/gtkui/desktop/sync.py:270 msgid "Episode" msgstr "" #: src/gpodder/gtkui/main.py:819 msgid "Size" msgstr "" #: src/gpodder/gtkui/main.py:824 msgid "Duration" msgstr "" #: src/gpodder/gtkui/main.py:828 msgid "Released" msgstr "" #: src/gpodder/gtkui/main.py:855 msgid "Visible columns" msgstr "" #: src/gpodder/gtkui/main.py:948 src/gpodder/gtkui/main.py:1108 #: share/gpodder/ui/gtk/gpodder.ui.h:45 msgid "Progress" msgstr "" #: src/gpodder/gtkui/main.py:982 msgid "Loading episodes" msgstr "" #: src/gpodder/gtkui/main.py:985 msgid "No episodes in current view" msgstr "" #: src/gpodder/gtkui/main.py:987 msgid "No episodes available" msgstr "" #: src/gpodder/gtkui/main.py:993 msgid "No podcasts in this view" msgstr "" #: src/gpodder/gtkui/main.py:995 msgid "No subscriptions" msgstr "" #: src/gpodder/gtkui/main.py:997 msgid "No active tasks" msgstr "" #: src/gpodder/gtkui/main.py:1112 src/gpodder/gtkui/main.py:1114 #, python-format msgid "%(count)d active" msgid_plural "%(count)d active" msgstr[0] "" msgstr[1] "" #: src/gpodder/gtkui/main.py:1116 #, python-format msgid "%(count)d failed" msgid_plural "%(count)d failed" msgstr[0] "" msgstr[1] "" #: src/gpodder/gtkui/main.py:1118 #, python-format msgid "%(count)d queued" msgid_plural "%(count)d queued" msgstr[0] "" msgstr[1] "" #: src/gpodder/gtkui/main.py:1132 #, python-format msgid "downloading %(count)d file" msgid_plural "downloading %(count)d files" msgstr[0] "" msgstr[1] "" #: src/gpodder/gtkui/main.py:1142 #, python-format msgid "synchronizing %(count)d file" msgid_plural "synchronizing %(count)d files" msgstr[0] "" msgstr[1] "" #: src/gpodder/gtkui/main.py:1144 #, python-format msgid "%(queued)d task queued" msgid_plural "%(queued)d tasks queued" msgstr[0] "" msgstr[1] "" #: src/gpodder/gtkui/main.py:1168 msgid "Please report this problem and restart gPodder:" msgstr "" #: src/gpodder/gtkui/main.py:1168 msgid "Unhandled exception" msgstr "" #: src/gpodder/gtkui/main.py:1235 #, python-format msgid "Feedparser error: %s" msgstr "" #: src/gpodder/gtkui/main.py:1371 msgid "Could not download some episodes:" msgstr "" #: src/gpodder/gtkui/main.py:1373 src/gpodder/gtkui/main.py:1376 msgid "Downloads finished" msgstr "" #: src/gpodder/gtkui/main.py:1379 msgid "Downloads failed" msgstr "" #: src/gpodder/gtkui/main.py:1383 msgid "Could not sync some episodes:" msgstr "" #: src/gpodder/gtkui/main.py:1385 src/gpodder/gtkui/main.py:1388 msgid "Device synchronization finished" msgstr "" #: src/gpodder/gtkui/main.py:1391 msgid "Device synchronization failed" msgstr "" #: src/gpodder/gtkui/main.py:1434 #, python-format msgid "%(count)d more episode" msgid_plural "%(count)d more episodes" msgstr[0] "" msgstr[1] "" #: src/gpodder/gtkui/main.py:1508 msgid "Start download now" msgstr "" #: src/gpodder/gtkui/main.py:1510 src/gpodder/gtkui/main.py:1719 #: src/gpodder/gtkui/desktop/episodeselector.py:144 #: share/gpodder/ui/gtk/gpodder.ui.h:20 msgid "Download" msgstr "" #: src/gpodder/gtkui/main.py:1511 share/gpodder/ui/gtk/gpodder.ui.h:21 msgid "Cancel" msgstr "" #: src/gpodder/gtkui/main.py:1512 msgid "Pause" msgstr "" #: src/gpodder/gtkui/main.py:1514 msgid "Remove from list" msgstr "" #: src/gpodder/gtkui/main.py:1553 share/gpodder/ui/gtk/gpodder.ui.h:13 msgid "Update podcast" msgstr "" #: src/gpodder/gtkui/main.py:1560 msgid "Open download folder" msgstr "" #: src/gpodder/gtkui/main.py:1566 msgid "Mark episodes as old" msgstr "" #: src/gpodder/gtkui/main.py:1570 src/gpodder/gtkui/main.py:1778 msgid "Archive" msgstr "" #: src/gpodder/gtkui/main.py:1575 msgid "Remove podcast" msgstr "" #: src/gpodder/gtkui/main.py:1590 share/gpodder/ui/gtk/gpodder.ui.h:10 msgid "Podcast settings" msgstr "" #: src/gpodder/gtkui/main.py:1650 msgid "Error converting file." msgstr "" #: src/gpodder/gtkui/main.py:1650 msgid "Bluetooth file transfer" msgstr "" #: src/gpodder/gtkui/main.py:1709 msgid "Preview" msgstr "" #: src/gpodder/gtkui/main.py:1711 msgid "Stream" msgstr "" #: src/gpodder/gtkui/main.py:1755 msgid "Send to" msgstr "" #: src/gpodder/gtkui/main.py:1757 msgid "Local folder" msgstr "" #: src/gpodder/gtkui/main.py:1762 msgid "Bluetooth device" msgstr "" #: src/gpodder/gtkui/main.py:1769 msgid "New" msgstr "" #: src/gpodder/gtkui/main.py:1785 share/gpodder/ui/gtk/gpodder.ui.h:25 msgid "Episode details" msgstr "" #: src/gpodder/gtkui/main.py:1938 msgid "Please check your media player settings in the preferences dialog." msgstr "" #: src/gpodder/gtkui/main.py:1939 msgid "Error opening player" msgstr "" #: src/gpodder/gtkui/main.py:2178 msgid "Adding podcasts" msgstr "" #: src/gpodder/gtkui/main.py:2179 msgid "Please wait while episode information is downloaded." msgstr "" #: src/gpodder/gtkui/main.py:2186 msgid "Existing subscriptions skipped" msgstr "" #: src/gpodder/gtkui/main.py:2187 msgid "You are already subscribed to these podcasts:" msgstr "" #: src/gpodder/gtkui/main.py:2195 msgid "Podcast requires authentication" msgstr "" #: src/gpodder/gtkui/main.py:2196 #, python-format msgid "Please login to %s:" msgstr "" #: src/gpodder/gtkui/main.py:2204 src/gpodder/gtkui/main.py:2299 msgid "Authentication failed" msgstr "" #: src/gpodder/gtkui/main.py:2210 msgid "Website redirection detected" msgstr "" #: src/gpodder/gtkui/main.py:2211 #, python-format msgid "The URL %(url)s redirects to %(target)s." msgstr "" #: src/gpodder/gtkui/main.py:2212 msgid "Do you want to visit the website now?" msgstr "" #: src/gpodder/gtkui/main.py:2221 msgid "Could not add some podcasts" msgstr "" #: src/gpodder/gtkui/main.py:2222 msgid "Some podcasts could not be added to your list:" msgstr "" #: src/gpodder/gtkui/main.py:2224 msgid "Unknown" msgstr "" #: src/gpodder/gtkui/main.py:2308 msgid "Redirection detected" msgstr "" #: src/gpodder/gtkui/main.py:2342 msgid "Merging episode actions" msgstr "" #: src/gpodder/gtkui/main.py:2343 msgid "Episode actions from gpodder.net are merged." msgstr "" #: src/gpodder/gtkui/main.py:2368 msgid "Cancelling..." msgstr "" #: src/gpodder/gtkui/main.py:2377 msgid "Please connect to a network, then try again." msgstr "" #: src/gpodder/gtkui/main.py:2378 msgid "No network connection" msgstr "" #: src/gpodder/gtkui/main.py:2399 #, python-format msgid "Updating %(count)d feed..." msgid_plural "Updating %(count)d feeds..." msgstr[0] "" msgstr[1] "" #: src/gpodder/gtkui/main.py:2417 #, python-format msgid "Error while updating %(url)s: %(message)s" msgstr "" #: src/gpodder/gtkui/main.py:2419 #, python-format msgid "The feed at %(url)s could not be updated." msgstr "" #: src/gpodder/gtkui/main.py:2420 msgid "Error while updating feed" msgstr "" #: src/gpodder/gtkui/main.py:2435 #, python-format msgid "Updated %(podcast)s (%(position)d/%(total)d)" msgstr "" #: src/gpodder/gtkui/main.py:2466 msgid "No new episodes" msgstr "" #: src/gpodder/gtkui/main.py:2479 #, python-format msgid "Downloading %(count)d new episode." msgid_plural "Downloading %(count)d new episodes." msgstr[0] "" msgstr[1] "" #: src/gpodder/gtkui/main.py:2480 src/gpodder/gtkui/main.py:2484 #: src/gpodder/gtkui/main.py:2833 msgid "New episodes available" msgstr "" #: src/gpodder/gtkui/main.py:2483 #, python-format msgid "%(count)d new episode added to download list." msgid_plural "%(count)d new episodes added to download list." msgstr[0] "" msgstr[1] "" #: src/gpodder/gtkui/main.py:2490 #, python-format msgid "%(count)d new episode available" msgid_plural "%(count)d new episodes available" msgstr[0] "" msgstr[1] "" #: src/gpodder/gtkui/main.py:2509 msgid "Quit gPodder" msgstr "" #: src/gpodder/gtkui/main.py:2510 msgid "" "You are downloading episodes. You can resume downloads the next time you " "start gPodder. Do you want to quit now?" msgstr "" #: src/gpodder/gtkui/main.py:2559 msgid "Episodes are locked" msgstr "" #: src/gpodder/gtkui/main.py:2560 msgid "" "The selected episodes are locked. Please unlock the episodes that you want " "to delete before trying to delete them." msgstr "" #: src/gpodder/gtkui/main.py:2565 #, python-format msgid "Delete %(count)d episode?" msgid_plural "Delete %(count)d episodes?" msgstr[0] "" msgstr[1] "" #: src/gpodder/gtkui/main.py:2566 msgid "Deleting episodes removes downloaded files." msgstr "" #: src/gpodder/gtkui/main.py:2571 msgid "Deleting episodes" msgstr "" #: src/gpodder/gtkui/main.py:2572 msgid "Please wait while episodes are deleted" msgstr "" #: src/gpodder/gtkui/main.py:2625 #, python-format msgid "Select older than %(count)d day" msgid_plural "Select older than %(count)d days" msgstr[0] "" msgstr[1] "" #: src/gpodder/gtkui/main.py:2627 msgid "Select played" msgstr "" #: src/gpodder/gtkui/main.py:2628 msgid "Select finished" msgstr "" #: src/gpodder/gtkui/main.py:2632 msgid "Select the episodes you want to delete:" msgstr "" #: src/gpodder/gtkui/main.py:2648 share/gpodder/ui/gtk/gpodder.ui.h:4 msgid "Delete episodes" msgstr "" #: src/gpodder/gtkui/main.py:2703 src/gpodder/gtkui/main.py:2934 #: src/gpodder/gtkui/main.py:3034 msgid "No podcast selected" msgstr "" #: src/gpodder/gtkui/main.py:2704 msgid "Please select a podcast in the podcasts list to update." msgstr "" #: src/gpodder/gtkui/main.py:2774 #, python-format msgid "Download error while downloading %(episode)s: %(message)s" msgstr "" #: src/gpodder/gtkui/main.py:2775 msgid "Download error" msgstr "" #: src/gpodder/gtkui/main.py:2818 msgid "Select the episodes you want to download:" msgstr "" #: src/gpodder/gtkui/main.py:2841 msgid "Mark as old" msgstr "" #: src/gpodder/gtkui/main.py:2848 msgid "Please check for new episodes later." msgstr "" #: src/gpodder/gtkui/main.py:2849 msgid "No new episodes available" msgstr "" #: src/gpodder/gtkui/main.py:2900 msgid "Login to gpodder.net" msgstr "" #: src/gpodder/gtkui/main.py:2901 msgid "Please login to download your subscriptions." msgstr "" #: src/gpodder/gtkui/main.py:2916 msgid "Subscriptions on gpodder.net" msgstr "" #: src/gpodder/gtkui/main.py:2935 msgid "Please select a podcast in the podcasts list to edit." msgstr "" #: src/gpodder/gtkui/main.py:2949 msgid "Podcast" msgstr "" #: src/gpodder/gtkui/main.py:2955 share/gpodder/ui/gtk/gpodder.ui.h:12 msgid "Remove podcasts" msgstr "" #: src/gpodder/gtkui/main.py:2956 msgid "Select the podcast you want to remove." msgstr "" #: src/gpodder/gtkui/main.py:2960 #: src/gpodder/gtkui/desktop/episodeselector.py:105 msgid "Remove" msgstr "" #: src/gpodder/gtkui/main.py:2969 msgid "Removing podcast" msgstr "" #: src/gpodder/gtkui/main.py:2970 msgid "Please wait while the podcast is removed" msgstr "" #: src/gpodder/gtkui/main.py:2971 msgid "Do you really want to remove this podcast and its episodes?" msgstr "" #: src/gpodder/gtkui/main.py:2973 msgid "Removing podcasts" msgstr "" #: src/gpodder/gtkui/main.py:2974 msgid "Please wait while the podcasts are removed" msgstr "" #: src/gpodder/gtkui/main.py:2975 msgid "Do you really want to remove the selected podcasts and their episodes?" msgstr "" #: src/gpodder/gtkui/main.py:3035 msgid "Please select a podcast in the podcasts list to remove." msgstr "" #: src/gpodder/gtkui/main.py:3045 msgid "OPML files" msgstr "" #: src/gpodder/gtkui/main.py:3050 msgid "Import from OPML" msgstr "" #: src/gpodder/gtkui/main.py:3064 msgid "Import podcasts from OPML file" msgstr "" #: src/gpodder/gtkui/main.py:3071 msgid "Nothing to export" msgstr "" #: src/gpodder/gtkui/main.py:3072 msgid "" "Your list of podcast subscriptions is empty. Please subscribe to some " "podcasts first before trying to export your subscription list." msgstr "" #: src/gpodder/gtkui/main.py:3076 msgid "Export to OPML" msgstr "" #: src/gpodder/gtkui/main.py:3087 #, python-format msgid "%(count)d subscription exported" msgid_plural "%(count)d subscriptions exported" msgstr[0] "" msgstr[1] "" #: src/gpodder/gtkui/main.py:3088 msgid "Your podcast list has been successfully exported." msgstr "" #: src/gpodder/gtkui/main.py:3090 msgid "Could not export OPML to file. Please check your permissions." msgstr "" #: src/gpodder/gtkui/main.py:3090 msgid "OPML export failed" msgstr "" #: src/gpodder/gtkui/main.py:3117 msgid "No updates available" msgstr "" #: src/gpodder/gtkui/main.py:3118 msgid "You have the latest version of gPodder." msgstr "" #: src/gpodder/gtkui/main.py:3122 msgid "New version available" msgstr "" #: src/gpodder/gtkui/main.py:3124 #, python-format msgid "Installed version: %s" msgstr "" #: src/gpodder/gtkui/main.py:3125 #, python-format msgid "Newest version: %s" msgstr "" #: src/gpodder/gtkui/main.py:3126 #, python-format msgid "Release date: %s" msgstr "" #: src/gpodder/gtkui/main.py:3128 msgid "Download the latest version from gpodder.org?" msgstr "" #: src/gpodder/gtkui/main.py:3141 msgid "About gPodder" msgstr "" #: src/gpodder/gtkui/main.py:3424 msgid "Please register a YouTube API key and set it in the preferences." msgstr "" #: src/gpodder/gtkui/main.py:3425 msgid "Would you like to set up an API key now?" msgstr "" #: src/gpodder/gtkui/main.py:3425 msgid "API key required" msgstr "" #: src/gpodder/gtkui/main.py:3444 bin/gpo:631 msgid "No unique URL found" msgstr "" #: src/gpodder/gtkui/main.py:3449 bin/gpo:637 msgid "Already subscribed" msgstr "" #: src/gpodder/gtkui/main.py:3458 bin/gpo:649 #, python-format msgid "Make sure the API key is correct. Error: %(message)s" msgstr "" #: src/gpodder/gtkui/main.py:3459 msgid "Error getting YouTube channels" msgstr "" #: src/gpodder/gtkui/main.py:3462 msgid "Successfully migrated subscriptions" msgstr "" #: src/gpodder/gtkui/main.py:3464 msgid "Subscriptions are up to date" msgstr "" #: src/gpodder/gtkui/main.py:3467 msgid "These URLs failed:" msgstr "" #: src/gpodder/gtkui/main.py:3469 msgid "Could not migrate some subscriptions" msgstr "" #: src/gpodder/gtkui/main.py:3493 msgid "Cannot start gPodder" msgstr "" #: src/gpodder/gtkui/main.py:3494 #, python-format msgid "D-Bus error: %s" msgstr "" #: src/gpodder/gtkui/model.py:68 #, python-format msgid "released %s" msgstr "" #: src/gpodder/gtkui/model.py:69 src/gpodder/gtkui/model.py:87 #: src/gpodder/gtkui/model.py:237 src/gpodder/gtkui/shownotes.py:84 #, python-format msgid "from %s" msgstr "" #: src/gpodder/gtkui/model.py:80 src/gpodder/gtkui/model.py:393 msgid "played" msgstr "" #: src/gpodder/gtkui/model.py:82 msgid "unplayed" msgstr "" #: src/gpodder/gtkui/model.py:85 msgid "today" msgstr "" #: src/gpodder/gtkui/model.py:86 #, python-format msgid "downloaded %s" msgstr "" #: src/gpodder/gtkui/model.py:337 msgid "Deleted" msgstr "" #: src/gpodder/gtkui/model.py:342 msgid "New episode" msgstr "" #: src/gpodder/gtkui/model.py:356 msgid "Downloaded episode" msgstr "" #: src/gpodder/gtkui/model.py:359 msgid "Downloaded video episode" msgstr "" #: src/gpodder/gtkui/model.py:362 msgid "Downloaded image" msgstr "" #: src/gpodder/gtkui/model.py:365 msgid "Downloaded file" msgstr "" #: src/gpodder/gtkui/model.py:380 msgid "missing file" msgstr "" #: src/gpodder/gtkui/model.py:384 msgid "never displayed" msgstr "" #: src/gpodder/gtkui/model.py:386 msgid "never played" msgstr "" #: src/gpodder/gtkui/model.py:388 msgid "never opened" msgstr "" #: src/gpodder/gtkui/model.py:391 msgid "displayed" msgstr "" #: src/gpodder/gtkui/model.py:395 msgid "opened" msgstr "" #: src/gpodder/gtkui/model.py:397 msgid "deletion prevented" msgstr "" #: src/gpodder/gtkui/model.py:432 share/gpodder/ui/gtk/gpodder.ui.h:32 msgid "All episodes" msgstr "" #: src/gpodder/gtkui/model.py:433 msgid "from all podcasts" msgstr "" #: src/gpodder/gtkui/model.py:625 msgid "Subscription paused" msgstr "" #: src/gpodder/gtkui/shownotes.py:118 msgid "Please select an episode" msgstr "" #: src/gpodder/gtkui/interface/addpodcast.py:74 msgid "Nothing to paste." msgstr "" #: src/gpodder/gtkui/interface/addpodcast.py:74 msgid "Clipboard is empty" msgstr "" #: src/gpodder/gtkui/interface/common.py:160 msgid "Username" msgstr "" #: src/gpodder/gtkui/interface/common.py:163 msgid "New user" msgstr "" #: src/gpodder/gtkui/interface/common.py:170 msgid "Login" msgstr "" #: src/gpodder/gtkui/interface/common.py:172 msgid "Authentication required" msgstr "" #: src/gpodder/gtkui/interface/common.py:203 msgid "Password" msgstr "" #: src/gpodder/gtkui/interface/common.py:225 msgid "Select destination" msgstr "" #: src/gpodder/gtkui/interface/configeditor.py:34 msgid "Setting" msgstr "" #: src/gpodder/gtkui/interface/configeditor.py:41 msgid "Set to" msgstr "" #: src/gpodder/gtkui/interface/configeditor.py:81 #, python-format msgid "Cannot set %(field)s to %(value)s. Needed data type: %(datatype)s" msgstr "" #: src/gpodder/gtkui/interface/configeditor.py:85 msgid "Error setting option" msgstr "" #: src/gpodder/gtkui/desktop/channel.py:100 msgid "Add section" msgstr "" #: src/gpodder/gtkui/desktop/channel.py:100 msgid "New section:" msgstr "" #: src/gpodder/gtkui/desktop/channel.py:133 msgid "Select new podcast cover artwork" msgstr "" #: src/gpodder/gtkui/desktop/channel.py:161 msgid "You can only drop a single image or URL here." msgstr "" #: src/gpodder/gtkui/desktop/channel.py:161 #: src/gpodder/gtkui/desktop/channel.py:171 msgid "Drag and drop" msgstr "" #: src/gpodder/gtkui/desktop/channel.py:171 msgid "You can only drop local files and http:// URLs here." msgstr "" #: src/gpodder/gtkui/desktop/deviceplaylist.py:98 #, python-format msgid "Folder %s could not be created." msgstr "" #: src/gpodder/gtkui/desktop/deviceplaylist.py:98 msgid "Error writing playlist" msgstr "" #: src/gpodder/gtkui/desktop/episodeselector.py:288 #: share/gpodder/ui/gtk/gpodderepisodeselector.ui.h:2 msgid "Select all" msgstr "" #: src/gpodder/gtkui/desktop/episodeselector.py:292 #: share/gpodder/ui/gtk/gpodderepisodeselector.ui.h:3 msgid "Select none" msgstr "" #: src/gpodder/gtkui/desktop/episodeselector.py:324 msgid "Nothing selected" msgstr "" #: src/gpodder/gtkui/desktop/episodeselector.py:325 #, python-format msgid "%(count)d episode" msgid_plural "%(count)d episodes" msgstr[0] "" msgstr[1] "" #: src/gpodder/gtkui/desktop/episodeselector.py:327 #, python-format msgid "size: %s" msgstr "" #: src/gpodder/gtkui/desktop/podcastdirectory.py:238 msgid "Loading podcasts" msgstr "" #: src/gpodder/gtkui/desktop/podcastdirectory.py:239 msgid "Please wait while the podcast list is downloaded" msgstr "" #: src/gpodder/gtkui/desktop/preferences.py:51 #: src/gpodder/gtkui/desktop/preferences.py:93 msgid "Do nothing" msgstr "" #: src/gpodder/gtkui/desktop/preferences.py:52 msgid "Show episode list" msgstr "" #: src/gpodder/gtkui/desktop/preferences.py:53 msgid "Add to download list" msgstr "" #: src/gpodder/gtkui/desktop/preferences.py:54 msgid "Download immediately" msgstr "" #: src/gpodder/gtkui/desktop/preferences.py:72 msgid "None" msgstr "" #: src/gpodder/gtkui/desktop/preferences.py:73 msgid "iPod" msgstr "" #: src/gpodder/gtkui/desktop/preferences.py:74 msgid "Filesystem-based" msgstr "" #: src/gpodder/gtkui/desktop/preferences.py:94 msgid "Mark as played" msgstr "" #: src/gpodder/gtkui/desktop/preferences.py:95 msgid "Delete from gPodder" msgstr "" #: src/gpodder/gtkui/desktop/preferences.py:123 #, python-format msgid "Custom (%(format_ids)s)" msgstr "" #: src/gpodder/gtkui/desktop/preferences.py:318 msgid "Name" msgstr "" #: src/gpodder/gtkui/desktop/preferences.py:369 msgid "Documentation" msgstr "" #: src/gpodder/gtkui/desktop/preferences.py:374 msgid "Extension info" msgstr "" #: src/gpodder/gtkui/desktop/preferences.py:379 msgid "Support the author" msgstr "" #: src/gpodder/gtkui/desktop/preferences.py:413 msgid "Extension cannot be activated" msgstr "" #: src/gpodder/gtkui/desktop/preferences.py:426 msgid "Extension module info" msgstr "" #: src/gpodder/gtkui/desktop/preferences.py:463 msgid "Configure audio player" msgstr "" #: src/gpodder/gtkui/desktop/preferences.py:464 #: src/gpodder/gtkui/desktop/preferences.py:474 msgid "Command:" msgstr "" #: src/gpodder/gtkui/desktop/preferences.py:473 msgid "Configure video player" msgstr "" #: src/gpodder/gtkui/desktop/preferences.py:485 #: src/gpodder/gtkui/desktop/preferences.py:503 msgid "manually" msgstr "" #: src/gpodder/gtkui/desktop/preferences.py:505 #, python-format msgid "after %(count)d day" msgid_plural "after %(count)d days" msgstr[0] "" msgstr[1] "" #: src/gpodder/gtkui/desktop/preferences.py:541 msgid "Replace subscription list on server" msgstr "" #: src/gpodder/gtkui/desktop/preferences.py:542 msgid "" "Remote podcasts that have not been added locally will be removed on the " "server. Continue?" msgstr "" #: src/gpodder/gtkui/desktop/preferences.py:621 msgid "Select folder for mount point" msgstr "" #: src/gpodder/gtkui/desktop/preferences.py:638 msgid "Select folder for playlists" msgstr "" #: src/gpodder/gtkui/desktop/sync.py:86 msgid "No device configured" msgstr "" #: src/gpodder/gtkui/desktop/sync.py:87 msgid "Please set up your device in the preferences dialog." msgstr "" #: src/gpodder/gtkui/desktop/sync.py:91 msgid "Cannot open device" msgstr "" #: src/gpodder/gtkui/desktop/sync.py:92 msgid "Please check the settings in the preferences dialog." msgstr "" #: src/gpodder/gtkui/desktop/sync.py:139 msgid "Not enough space left on device" msgstr "" #: src/gpodder/gtkui/desktop/sync.py:140 #, python-format msgid "" "Additional free space required: %(required_space)s\n" "Do you want to continue?" msgstr "" #: src/gpodder/gtkui/desktop/sync.py:199 msgid "Update successful" msgstr "" #: src/gpodder/gtkui/desktop/sync.py:200 msgid "The playlist on your MP3 player has been updated." msgstr "" #: src/gpodder/gtkui/desktop/sync.py:274 msgid "Episodes have been deleted on device" msgstr "" #: src/gpodder/gtkui/desktop/sync.py:285 msgid "Error writing playlist files" msgstr "" #: src/gpodder/plugins/soundcloud.py:154 msgid "Unknown track" msgstr "" #: src/gpodder/plugins/soundcloud.py:181 #, python-format msgid "%s on Soundcloud" msgstr "" #: src/gpodder/plugins/soundcloud.py:190 #, python-format msgid "Tracks published by %s on Soundcloud." msgstr "" #: src/gpodder/plugins/soundcloud.py:217 #, python-format msgid "%s's favorites on Soundcloud" msgstr "" #: src/gpodder/plugins/soundcloud.py:223 #, python-format msgid "Tracks favorited by %s on Soundcloud." msgstr "" #: share/gpodder/extensions/audio_converter.py:20 msgid "Convert audio files" msgstr "" #: share/gpodder/extensions/audio_converter.py:21 msgid "Transcode audio files to mp3/ogg" msgstr "" #: share/gpodder/extensions/audio_converter.py:84 #: share/gpodder/extensions/video_converter.py:86 #, python-format msgid "Convert to %(format)s" msgstr "" #: share/gpodder/extensions/audio_converter.py:111 #: share/gpodder/extensions/rockbox_convert2mp4.py:65 #: share/gpodder/extensions/video_converter.py:111 msgid "File converted" msgstr "" #: share/gpodder/extensions/audio_converter.py:114 #: share/gpodder/extensions/video_converter.py:114 msgid "Conversion failed" msgstr "" #: share/gpodder/extensions/concatenate_videos.py:20 #: share/gpodder/extensions/concatenate_videos.py:100 msgid "Concatenate videos" msgstr "" #: share/gpodder/extensions/concatenate_videos.py:21 msgid "Add a context menu item for concatenating multiple videos" msgstr "" #: share/gpodder/extensions/concatenate_videos.py:37 msgid "Save video" msgstr "" #: share/gpodder/extensions/concatenate_videos.py:66 msgid "Concatenating video files" msgstr "" #: share/gpodder/extensions/concatenate_videos.py:67 #, python-format msgid "Writing %(filename)s" msgstr "" #: share/gpodder/extensions/concatenate_videos.py:78 msgid "Videos successfully converted" msgstr "" #: share/gpodder/extensions/concatenate_videos.py:79 msgid "Error converting videos" msgstr "" #: share/gpodder/extensions/concatenate_videos.py:80 msgid "Concatenation result" msgstr "" #: share/gpodder/extensions/enqueue_in_mediaplayer.py:16 msgid "Enqueue in media players" msgstr "" #: share/gpodder/extensions/enqueue_in_mediaplayer.py:17 msgid "" "Add a context menu item for enqueueing episodes in installed media players" msgstr "" #: share/gpodder/extensions/enqueue_in_mediaplayer.py:35 msgid "Enqueue in" msgstr "" #: share/gpodder/extensions/episode_website_context_menu.py:14 msgid "\"Open website\" episode context menu" msgstr "" #: share/gpodder/extensions/episode_website_context_menu.py:15 msgid "Add a context menu item for opening the website of an episode" msgstr "" #: share/gpodder/extensions/episode_website_context_menu.py:30 msgid "Open website" msgstr "" #: share/gpodder/extensions/gtk_statusicon.py:14 msgid "Gtk Status Icon" msgstr "" #: share/gpodder/extensions/gtk_statusicon.py:15 msgid "Show a status icon for Gtk-based Desktops." msgstr "" #: share/gpodder/extensions/minimize_on_start.py:10 msgid "Minimize on start" msgstr "" #: share/gpodder/extensions/minimize_on_start.py:11 msgid "Minimizes the gPodder window on startup." msgstr "" #: share/gpodder/extensions/mpris-listener.py:33 msgid "MPRIS Listener" msgstr "" #: share/gpodder/extensions/mpris-listener.py:34 msgid "Convert MPRIS notifications to gPodder Media Player D-Bus API" msgstr "" #: share/gpodder/extensions/normalize_audio.py:21 msgid "Normalize audio with re-encoding" msgstr "" #: share/gpodder/extensions/normalize_audio.py:22 msgid "Normalize the volume of audio files with normalize-audio" msgstr "" #: share/gpodder/extensions/normalize_audio.py:99 msgid "File normalized" msgstr "" #: share/gpodder/extensions/rename_download.py:16 msgid "Rename episodes after download" msgstr "" #: share/gpodder/extensions/rename_download.py:17 msgid "Rename episodes to \".\" on download" msgstr "" #: share/gpodder/extensions/rm_ogg_cover.py:37 msgid "Remove cover art from OGG files" msgstr "" #: share/gpodder/extensions/rm_ogg_cover.py:38 msgid "removes coverart from all downloaded ogg files" msgstr "" #: share/gpodder/extensions/rm_ogg_cover.py:66 msgid "Remove cover art" msgstr "" #: share/gpodder/extensions/rockbox_convert2mp4.py:26 msgid "Convert video files to MP4 for Rockbox" msgstr "" #: share/gpodder/extensions/rockbox_convert2mp4.py:27 msgid "Converts all videos to a Rockbox-compatible format" msgstr "" #: share/gpodder/extensions/sonos.py:19 share/gpodder/extensions/sonos.py:78 msgid "Stream to Sonos" msgstr "" #: share/gpodder/extensions/sonos.py:20 msgid "Stream podcasts to Sonos speakers" msgstr "" #: share/gpodder/extensions/tagging.py:45 msgid "Tag downloaded files using Mutagen" msgstr "" #: share/gpodder/extensions/tagging.py:46 msgid "Add episode and podcast titles to MP3/OGG tags" msgstr "" #: share/gpodder/extensions/taskbar_progress.py:28 msgid "Show download progress on the taskbar" msgstr "" #: share/gpodder/extensions/taskbar_progress.py:29 msgid "Displays the progress on the Windows taskbar." msgstr "" #: share/gpodder/extensions/ted_subtitles.py:16 msgid "Subtitle Downloader for TED Talks" msgstr "" #: share/gpodder/extensions/ted_subtitles.py:17 msgid "Downloads .srt subtitles for TED Talks Videos" msgstr "" #: share/gpodder/extensions/ubuntu_appindicator.py:10 msgid "Ubuntu App Indicator" msgstr "" #: share/gpodder/extensions/ubuntu_appindicator.py:11 msgid "Show a status indicator in the top bar." msgstr "" #: share/gpodder/extensions/ubuntu_appindicator.py:47 msgid "Show main window" msgstr "" #: share/gpodder/extensions/ubuntu_appindicator.py:57 #: share/gpodder/ui/gtk/gpodder.ui.h:6 msgid "Quit" msgstr "" #: share/gpodder/extensions/ubuntu_unity.py:10 msgid "Ubuntu Unity Integration" msgstr "" #: share/gpodder/extensions/ubuntu_unity.py:11 msgid "Show download progress in the Unity Launcher icon." msgstr "" #: share/gpodder/extensions/update_feeds_on_startup.py:14 msgid "Search for new episodes on startup" msgstr "" #: share/gpodder/extensions/update_feeds_on_startup.py:15 msgid "Starts the search for new episodes on startup" msgstr "" #: share/gpodder/extensions/video_converter.py:22 msgid "Convert video files" msgstr "" #: share/gpodder/extensions/video_converter.py:23 msgid "Transcode video files to avi/mp4/m4v" msgstr "" #: share/gpodder/ui/gtk/gpodderaddpodcast.ui.h:1 msgid "Add a new podcast" msgstr "" #: share/gpodder/ui/gtk/gpodderaddpodcast.ui.h:2 msgid "URL:" msgstr "" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:1 msgid "gPodder Podcast Editor" msgstr "" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:2 msgid "Section:" msgstr "" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:3 msgid "Disable feed updates (pause subscription)" msgstr "" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:4 msgid "Synchronize to MP3 player devices" msgstr "" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:5 msgid "Strategy:" msgstr "" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:6 #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:6 msgid "General" msgstr "" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:7 msgid "HTTP/FTP Authentication" msgstr "" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:8 #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:13 msgid "Username:" msgstr "" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:9 #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:14 msgid "Password:" msgstr "" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:10 msgid "Locations" msgstr "" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:11 msgid "Download to:" msgstr "" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:12 msgid "Website:" msgstr "" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:13 msgid "website label" msgstr "" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:14 msgid "Advanced" msgstr "" #: share/gpodder/ui/gtk/gpodderconfigeditor.ui.h:1 msgid "gPodder Configuration Editor" msgstr "" #: share/gpodder/ui/gtk/gpodderconfigeditor.ui.h:2 msgid "Search for:" msgstr "" #: share/gpodder/ui/gtk/gpodderconfigeditor.ui.h:3 msgid "Show All" msgstr "" #: share/gpodder/ui/gtk/gpodderepisodeselector.ui.h:1 msgid "Select episodes" msgstr "" #: share/gpodder/ui/gtk/gpodderpodcastdirectory.ui.h:1 msgid "Find new podcasts" msgstr "" #: share/gpodder/ui/gtk/gpodderpodcastdirectory.ui.h:2 msgid "Select All" msgstr "" #: share/gpodder/ui/gtk/gpodderpodcastdirectory.ui.h:3 msgid "Select None" msgstr "" #: share/gpodder/ui/gtk/gpodderpodcastdirectory.ui.h:4 msgid "label" msgstr "" #: share/gpodder/ui/gtk/gpodderpodcastdirectory.ui.h:5 msgid "..." msgstr "" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:1 #: share/gpodder/ui/gtk/gpodder.ui.h:5 msgid "Preferences" msgstr "" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:2 msgid "Audio player:" msgstr "" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:3 msgid "Video player:" msgstr "" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:4 msgid "\"All episodes\" in podcast list" msgstr "" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:5 msgid "Use sections for podcast list" msgstr "" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:7 msgid "Preferred YouTube format:" msgstr "" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:8 msgid "YouTube API key (v3):" msgstr "" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:9 msgid "Preferred Vimeo format:" msgstr "" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:11 msgid "Extensions" msgstr "" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:12 msgid "Synchronize subscriptions and episode actions" msgstr "" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:15 msgid "Replace list on server with local subscriptions" msgstr "" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:16 msgid "Device name:" msgstr "" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:17 msgid "gpodder.net" msgstr "" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:18 msgid "Update interval:" msgstr "" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:19 msgid "Maximum number of episodes per podcast:" msgstr "" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:20 msgid "When new episodes are found:" msgstr "" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:21 msgid "Updating" msgstr "" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:22 msgid "Delete played episodes:" msgstr "" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:23 msgid "Remove played episodes even if unfinished" msgstr "" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:24 msgid "Also remove unplayed episodes" msgstr "" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:25 msgid "Clean-up" msgstr "" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:26 msgid "Device type:" msgstr "" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:27 msgid "Mountpoint:" msgstr "" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:28 msgid "After syncing an episode:" msgstr "" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:29 msgid "Create playlists on device" msgstr "" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:30 msgid "Playlists Folder:" msgstr "" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:31 msgid "Remove episodes deleted on device from gPodder" msgstr "" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:32 msgid "Only sync unplayed episodes" msgstr "" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:33 msgid "Devices" msgstr "" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:34 msgid "Edit config" msgstr "" #: share/gpodder/ui/gtk/gpodder.ui.h:1 msgid "_Podcasts" msgstr "" #: share/gpodder/ui/gtk/gpodder.ui.h:2 msgid "Check for new episodes" msgstr "" #: share/gpodder/ui/gtk/gpodder.ui.h:3 msgid "Download new episodes" msgstr "" #: share/gpodder/ui/gtk/gpodder.ui.h:7 msgid "_Subscriptions" msgstr "" #: share/gpodder/ui/gtk/gpodder.ui.h:8 msgid "Discover new podcasts" msgstr "" #: share/gpodder/ui/gtk/gpodder.ui.h:9 msgid "Add podcast via URL" msgstr "" #: share/gpodder/ui/gtk/gpodder.ui.h:11 msgid "Unsubscribe" msgstr "" #: share/gpodder/ui/gtk/gpodder.ui.h:14 msgid "Import from OPML file" msgstr "" #: share/gpodder/ui/gtk/gpodder.ui.h:15 msgid "Export to OPML file" msgstr "" #: share/gpodder/ui/gtk/gpodder.ui.h:16 msgid "Go to gpodder.net" msgstr "" #: share/gpodder/ui/gtk/gpodder.ui.h:17 msgid "_Episodes" msgstr "" #: share/gpodder/ui/gtk/gpodder.ui.h:18 msgid "Play" msgstr "" #: share/gpodder/ui/gtk/gpodder.ui.h:19 msgid "Open" msgstr "" #: share/gpodder/ui/gtk/gpodder.ui.h:22 msgid "Delete" msgstr "" #: share/gpodder/ui/gtk/gpodder.ui.h:23 msgid "Toggle new status" msgstr "" #: share/gpodder/ui/gtk/gpodder.ui.h:24 msgid "Change delete lock" msgstr "" #: share/gpodder/ui/gtk/gpodder.ui.h:26 msgid "E_xtras" msgstr "" #: share/gpodder/ui/gtk/gpodder.ui.h:27 msgid "Sync to device" msgstr "" #: share/gpodder/ui/gtk/gpodder.ui.h:28 msgid "Update YouTube subscriptions" msgstr "" #: share/gpodder/ui/gtk/gpodder.ui.h:29 msgid "_View" msgstr "" #: share/gpodder/ui/gtk/gpodder.ui.h:30 msgid "Toolbar" msgstr "" #: share/gpodder/ui/gtk/gpodder.ui.h:31 msgid "Episode descriptions" msgstr "" #: share/gpodder/ui/gtk/gpodder.ui.h:33 msgid "Hide deleted episodes" msgstr "" #: share/gpodder/ui/gtk/gpodder.ui.h:34 msgid "Downloaded episodes" msgstr "" #: share/gpodder/ui/gtk/gpodder.ui.h:35 msgid "Unplayed episodes" msgstr "" #: share/gpodder/ui/gtk/gpodder.ui.h:36 msgid "Hide podcasts without episodes" msgstr "" #: share/gpodder/ui/gtk/gpodder.ui.h:37 msgid "_Help" msgstr "" #: share/gpodder/ui/gtk/gpodder.ui.h:38 msgid "User manual" msgstr "" #: share/gpodder/ui/gtk/gpodder.ui.h:39 msgid "Software updates" msgstr "" #: share/gpodder/ui/gtk/gpodder.ui.h:40 msgid "Filter:" msgstr "" #: share/gpodder/ui/gtk/gpodder.ui.h:41 msgid "Podcasts" msgstr "" #: share/gpodder/ui/gtk/gpodder.ui.h:42 msgid "Limit rate to" msgstr "" #: share/gpodder/ui/gtk/gpodder.ui.h:43 msgid "KiB/s" msgstr "" #: share/gpodder/ui/gtk/gpodder.ui.h:44 msgid "Limit downloads to" msgstr "" #: share/gpodder/ui/gtk/gpodderwelcome.ui.h:2 msgid "Welcome to gPodder" msgstr "" #: share/gpodder/ui/gtk/gpodderwelcome.ui.h:3 msgid "Your podcast list is empty." msgstr "" #: share/gpodder/ui/gtk/gpodderwelcome.ui.h:4 msgid "Choose from a list of example podcasts" msgstr "" #: share/gpodder/ui/gtk/gpodderwelcome.ui.h:5 msgid "Add a podcast by entering its URL" msgstr "" #: share/gpodder/ui/gtk/gpodderwelcome.ui.h:6 msgid "Restore my subscriptions from gpodder.net" msgstr "" #: bin/gpo:266 msgid "Podcast update requested by extensions." msgstr "" #: bin/gpo:270 msgid "Episode download requested by extensions." msgstr "" #: bin/gpo:323 #, python-format msgid "Invalid url: %s" msgstr "" #: bin/gpo:340 bin/gpo:416 bin/gpo:450 bin/gpo:582 bin/gpo:597 bin/gpo:717 #, python-format msgid "You are not subscribed to %s." msgstr "" #: bin/gpo:346 #, python-format msgid "Already subscribed to %s." msgstr "" #: bin/gpo:352 #, python-format msgid "Cannot subscribe to %s." msgstr "" #: bin/gpo:368 #, python-format msgid "Successfully added %s." msgstr "" #: bin/gpo:386 msgid "This configuration option does not exist." msgstr "" #: bin/gpo:390 msgid "Can only set leaf configuration nodes." msgstr "" #: bin/gpo:404 #, python-format msgid "Renamed %(old_title)s to %(new_title)s." msgstr "" #: bin/gpo:420 #, python-format msgid "Unsubscribed from %s." msgstr "" #: bin/gpo:494 msgid "Updates disabled" msgstr "" #: bin/gpo:505 #, python-format msgid "%(count)d new episode" msgid_plural "%(count)d new episodes" msgstr[0] "" msgstr[1] "" #: bin/gpo:511 msgid "Checking for new episodes" msgstr "" #: bin/gpo:520 #, python-format msgid "Skipping %(podcast)s" msgstr "" #: bin/gpo:588 #, python-format msgid "Disabling feed update from %s." msgstr "" #: bin/gpo:603 #, python-format msgid "Enabling feed update from %s." msgstr "" #: bin/gpo:616 #, python-format msgid "Please register a YouTube API key and set it using %(command)s." msgstr "" #: bin/gpo:643 #, python-format msgid "Changing: %(old_url)s => %(new_url)s" msgstr "" #: bin/gpo:653 msgid "Nothing to fix" msgstr "" #: bin/gpo:672 msgid "No podcasts found." msgstr "" #: bin/gpo:686 msgid "Enter index to subscribe, ? for list" msgstr "" #: bin/gpo:700 bin/gpo:704 msgid "Invalid value." msgstr "" #: bin/gpo:721 #, python-format msgid "Invalid URL: %s" msgstr "" #: bin/gpo:724 #, python-format msgid "Changed URL from %(old_url)s to %(new_url)s." msgstr "" #: bin/gpo:782 #, python-format msgid "Syntax error: %(error)s" msgstr "" #: bin/gpo:876 msgid "Ambiguous command. Did you mean.." msgstr "" #: bin/gpo:880 msgid "The requested function is not available." msgstr "" #: bin/gpodder:105 msgid "print logging output on the console" msgstr "" #: bin/gpodder:108 msgid "subscribe to the feed at URL" msgstr "" #: bin/gpodder:113 msgid "Mac OS X application process number" msgstr "" #: share/applications/gpodder.desktop.in.h:2 msgid "gPodder Podcast Client" msgstr "" #: share/applications/gpodder.desktop.in.h:3 msgid "Podcast Client" msgstr "" #: share/applications/gpodder.desktop.in.h:4 msgid "Subscribe to audio and video content from the web" msgstr "" #: share/applications/gpodder-url-handler.desktop.in.h:1 msgid "gPodder (subscribe to feed)" msgstr "" gpodder-3.9.0/po/nb.po0000644000016000001710000016112612654461625015660 0ustar jenkinsjenkins00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # # Translators: # Jim NygУЅrd , 2009, 2011, 2012. # Thomas Perl , 2006. # Torstein Adolf Winterseth , 2010. # Torstein Adolf Winterseth , 2010. msgid "" msgstr "" "Project-Id-Version: gPodder\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2016-02-03 20:31+0000\n" "PO-Revision-Date: 2013-01-19 12:30+0000\n" "Last-Translator: Thomas Perl \n" "Language-Team: Norwegian BokmУЅl (http://www.transifex.com/projects/p/gpodder/" "language/nb/)\n" "Language: nb\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" #: src/gpodder/config.py:55 #, python-format msgid "gPodder on %s" msgstr "gPodder pУЅ %s" #: src/gpodder/directory.py:95 #, fuzzy msgid "gpodder.net search" msgstr "gpodder.net" #: src/gpodder/directory.py:104 #, fuzzy msgid "OPML from web" msgstr "OPML-filer" #: src/gpodder/directory.py:113 #, fuzzy msgid "OPML file" msgstr "OPML-filer" #: src/gpodder/directory.py:122 share/gpodder/ui/gtk/gpodderwelcome.ui.h:1 #, fuzzy msgid "Getting started" msgstr "Innstillinger" #: src/gpodder/directory.py:131 #, fuzzy msgid "gpodder.net Top 50" msgstr "gpodder.net" #: src/gpodder/directory.py:140 #, fuzzy msgid "gpodder.net Tags" msgstr "gpodder.net" #: src/gpodder/directory.py:152 #, fuzzy msgid "Soundcloud search" msgstr "%s pУЅ Soundcloud" #: src/gpodder/directory.py:165 #, fuzzy msgid "Imported OPML file" msgstr "Importer fra OPML-fil" #: src/gpodder/download.py:329 msgid "Wrong username/password" msgstr "Feil brukernavn/passord" #: src/gpodder/download.py:527 src/gpodder/sync.py:924 msgid "Added" msgstr "Lagt til" #: src/gpodder/download.py:527 src/gpodder/sync.py:924 msgid "Queued" msgstr "I kУИ" #: src/gpodder/download.py:527 src/gpodder/gtkui/model.py:327 msgid "Downloading" msgstr "Laster ned" #: src/gpodder/download.py:528 src/gpodder/model.py:721 #: src/gpodder/sync.py:925 msgid "Finished" msgstr "Ferdig" #: src/gpodder/download.py:528 src/gpodder/sync.py:925 msgid "Failed" msgstr "Feilet" #: src/gpodder/download.py:528 src/gpodder/sync.py:925 msgid "Cancelled" msgstr "Avbrutt" #: src/gpodder/download.py:528 src/gpodder/sync.py:925 msgid "Paused" msgstr "Pauset" #: src/gpodder/download.py:862 msgid "Missing content from server" msgstr "Manglende innhold fra tjener" #: src/gpodder/download.py:868 #, python-format msgid "I/O Error: %(error)s: %(filename)s" msgstr "I/O feil: %(error)s: %(filename)s" #: src/gpodder/download.py:875 #, python-format msgid "HTTP Error %(code)s: %(message)s" msgstr "HTTP feil %(code)s: %(message)s" #: src/gpodder/download.py:879 src/gpodder/sync.py:1081 #, python-format msgid "Error: %s" msgstr "Feil: %s" #: src/gpodder/extensions.py:55 msgid "Desktop Integration" msgstr "" #: src/gpodder/extensions.py:56 #, fuzzy msgid "Interface" msgstr "Heltall" #: src/gpodder/extensions.py:57 #, fuzzy msgid "Post download" msgstr "Pause nedlasting" #: src/gpodder/extensions.py:59 src/gpodder/model.py:779 #: src/gpodder/model.py:1225 msgid "Other" msgstr "Annet" #: src/gpodder/extensions.py:100 #, fuzzy msgid "No description for this extension." msgstr "Ingen beskrivelse tilgjengelig." #: src/gpodder/extensions.py:212 #, fuzzy, python-format msgid "Command not found: %(command)s" msgstr "Fant ikke brukerkommando" #: src/gpodder/extensions.py:228 #, python-format msgid "Need at least one of the following commands: %(list_of_commands)s" msgstr "" #: src/gpodder/extensions.py:265 #, fuzzy, python-format msgid "Python module not found: %(module)s" msgstr "Python modul ТЋ%sТЛ er ikke installert" #: src/gpodder/model.py:446 src/gpodder/plugins/soundcloud.py:156 msgid "No description available" msgstr "Ingen beskrivelse tilgjengelig" #: src/gpodder/model.py:679 msgid "unknown" msgstr "ukjent" #: src/gpodder/model.py:746 msgid "Default" msgstr "" #: src/gpodder/model.py:747 msgid "Only keep latest" msgstr "" #: src/gpodder/model.py:1208 src/gpodder/model.py:1223 #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:10 msgid "Video" msgstr "Video" #: src/gpodder/model.py:1221 msgid "Audio" msgstr "Audio" #: src/gpodder/my.py:174 #, python-format msgid "Add %s" msgstr "Legg til %s" #: src/gpodder/my.py:176 #, python-format msgid "Remove %s" msgstr "Fjern %s?" #: src/gpodder/sync.py:196 msgid "Cancelled by user" msgstr "Avbrutt av bruker" #: src/gpodder/sync.py:199 msgid "Writing data to disk" msgstr "Skriver data til harddisken" #: src/gpodder/sync.py:295 msgid "Opening iPod database" msgstr "У…pner iPod database" #: src/gpodder/sync.py:305 msgid "iPod opened" msgstr "iPod УЅpnet" #: src/gpodder/sync.py:316 msgid "Saving iPod database" msgstr "Lagrer iPod database" #: src/gpodder/sync.py:321 msgid "Writing extended gtkpod database" msgstr "Skriver eksisterende gtkpod database" #: src/gpodder/sync.py:397 src/gpodder/sync.py:680 src/gpodder/sync.py:874 #, python-format msgid "Removing %s" msgstr "Fjerner %s" #: src/gpodder/sync.py:412 src/gpodder/sync.py:557 #, python-format msgid "Adding %s" msgstr "Legger til %s" #: src/gpodder/sync.py:430 #, python-format msgid "Error copying %(episode)s: Not enough free space on %(mountpoint)s" msgstr "Kan ikke kopiere %(episode)s: Ikke nok plass pУЅ %(mountpoint)s" #: src/gpodder/sync.py:515 msgid "Opening MP3 player" msgstr "У…pner MP3-spiller" #: src/gpodder/sync.py:518 msgid "MP3 player opened" msgstr "MP3-spiller УЅpnet" #: src/gpodder/sync.py:576 #, python-format msgid "" "Not enough space in %(path)s: %(free)s available, but need at least %(need)s" msgstr "" #: src/gpodder/sync.py:603 src/gpodder/sync.py:611 #, python-format msgid "Error opening %(filename)s: %(message)s" msgstr "Klarte ikke УЅ УЅpne %(filename)s: %(message)s" #: src/gpodder/sync.py:780 src/gpodder/sync.py:786 msgid "MTP device" msgstr "MTP-enhet" #: src/gpodder/sync.py:793 msgid "Opening the MTP device" msgstr "У…pner MTP-enhet" #: src/gpodder/sync.py:803 #, python-format msgid "%s opened" msgstr "%s УЅpnet" #: src/gpodder/sync.py:808 #, python-format msgid "Closing %s" msgstr "Lukker %s" #: src/gpodder/sync.py:816 #, python-format msgid "%s closed" msgstr "%s lukket" #: src/gpodder/sync.py:821 bin/gpo:708 #, python-format msgid "Adding %s..." msgstr "Legger til %s т€І" #: src/gpodder/sync.py:924 #, fuzzy msgid "Synchronizing" msgstr "Synkronisering" #: src/gpodder/util.py:429 #, python-format msgid "%(count)d day ago" msgid_plural "%(count)d days ago" msgstr[0] "%(count)d dag siden" msgstr[1] "%(count)d dager siden" #: src/gpodder/util.py:508 msgid "Today" msgstr "Idag" #: src/gpodder/util.py:510 msgid "Yesterday" msgstr "IgУЅr" #: src/gpodder/util.py:553 src/gpodder/util.py:556 msgid "(unknown)" msgstr "(ukjent)" #: src/gpodder/util.py:1193 src/gpodder/util.py:1212 #, python-format msgid "%(count)d second" msgid_plural "%(count)d seconds" msgstr[0] "%(count)d sekund" msgstr[1] "%(count)d sekunder" #: src/gpodder/util.py:1206 #, python-format msgid "%(count)d hour" msgid_plural "%(count)d hours" msgstr[0] "%(count)d time" msgstr[1] "%(count)d timer" #: src/gpodder/util.py:1209 #, python-format msgid "%(count)d minute" msgid_plural "%(count)d minutes" msgstr[0] "%(count)d minutt" msgstr[1] "%(count)d minutter" #: src/gpodder/util.py:1215 msgid "and" msgstr "og" #: src/gpodder/gtkui/config.py:50 msgid "Integer" msgstr "Heltall" #: src/gpodder/gtkui/config.py:52 msgid "Float" msgstr "Flyttall" #: src/gpodder/gtkui/config.py:54 msgid "Boolean" msgstr "Boolsk" #: src/gpodder/gtkui/config.py:56 msgid "String" msgstr "Streng" #: src/gpodder/gtkui/desktopfile.py:70 #, python-format msgid "Command: %s" msgstr "Kommando: %s" #: src/gpodder/gtkui/desktopfile.py:150 msgid "Default application" msgstr "Standardprogram" #: src/gpodder/gtkui/main.py:205 share/applications/gpodder.desktop.in.h:1 msgid "gPodder" msgstr "gPodder" #: src/gpodder/gtkui/main.py:288 msgid "Loading incomplete downloads" msgstr "Laster ufullstendige nedlasinger" #: src/gpodder/gtkui/main.py:289 msgid "Some episodes have not finished downloading in a previous session." msgstr "Noen episoder ble ikke fullstendig lastet ned i forrige УИkt." #: src/gpodder/gtkui/main.py:291 #, python-format msgid "%(count)d partial file" msgid_plural "%(count)d partial files" msgstr[0] "%(count)d uferdig fil" msgstr[1] "%(count)d uferdige filer" #: src/gpodder/gtkui/main.py:306 msgid "Resume all" msgstr "Gjenoppta alle" #: src/gpodder/gtkui/main.py:316 msgid "Incomplete downloads from a previous session were found." msgstr "Det finnes ufullstendige nedlastinger fra en tidligere УИkt." #: src/gpodder/gtkui/main.py:414 msgid "Action" msgstr "Handling" #: src/gpodder/gtkui/main.py:461 msgid "Confirm changes from gpodder.net" msgstr "Bekreft endringer fra gpodder.net" #: src/gpodder/gtkui/main.py:462 msgid "Select the actions you want to carry out." msgstr "Velg de handlingene du vil utfУИre." #: src/gpodder/gtkui/main.py:502 msgid "Uploading subscriptions" msgstr "Laster opp abonnementer" #: src/gpodder/gtkui/main.py:503 msgid "Your subscriptions are being uploaded to the server." msgstr "Laster opp abonnementer til tjeneren." #: src/gpodder/gtkui/main.py:508 msgid "List uploaded successfully." msgstr "Opplastingen er vellykket." #: src/gpodder/gtkui/main.py:515 msgid "Error while uploading" msgstr "Det skjedde en feil under opplastingen" #: src/gpodder/gtkui/main.py:800 src/gpodder/gtkui/main.py:928 #: src/gpodder/gtkui/main.py:2622 src/gpodder/gtkui/main.py:2815 #: src/gpodder/gtkui/desktop/episodeselector.py:132 #: src/gpodder/gtkui/desktop/sync.py:270 msgid "Episode" msgstr "Episode" #: src/gpodder/gtkui/main.py:819 msgid "Size" msgstr "StУИrrelse" #: src/gpodder/gtkui/main.py:824 msgid "Duration" msgstr "Varighet" #: src/gpodder/gtkui/main.py:828 msgid "Released" msgstr "Dato" #: src/gpodder/gtkui/main.py:855 msgid "Visible columns" msgstr "Synlige kolonner" #: src/gpodder/gtkui/main.py:948 src/gpodder/gtkui/main.py:1108 #: share/gpodder/ui/gtk/gpodder.ui.h:45 msgid "Progress" msgstr "Fremdrift" #: src/gpodder/gtkui/main.py:982 msgid "Loading episodes" msgstr "Laster episoder" #: src/gpodder/gtkui/main.py:985 msgid "No episodes in current view" msgstr "Ingen episoder her" #: src/gpodder/gtkui/main.py:987 msgid "No episodes available" msgstr "Ingen episoder tilgjengelige" #: src/gpodder/gtkui/main.py:993 msgid "No podcasts in this view" msgstr "Ingen podkaster her" #: src/gpodder/gtkui/main.py:995 msgid "No subscriptions" msgstr "Ingen abonnement" #: src/gpodder/gtkui/main.py:997 #, fuzzy msgid "No active tasks" msgstr "Ingen aktive nedlastinger" #: src/gpodder/gtkui/main.py:1112 src/gpodder/gtkui/main.py:1114 #, python-format msgid "%(count)d active" msgid_plural "%(count)d active" msgstr[0] "%(count)d aktiv" msgstr[1] "%(count)d aktive" #: src/gpodder/gtkui/main.py:1116 #, python-format msgid "%(count)d failed" msgid_plural "%(count)d failed" msgstr[0] "%(count)d feilet" msgstr[1] "%(count)d feilet" #: src/gpodder/gtkui/main.py:1118 #, python-format msgid "%(count)d queued" msgid_plural "%(count)d queued" msgstr[0] "%(count)d i kУИ" msgstr[1] "%(count)d i kУИ" #: src/gpodder/gtkui/main.py:1132 #, python-format msgid "downloading %(count)d file" msgid_plural "downloading %(count)d files" msgstr[0] "laster ned %(count)d fil" msgstr[1] "laster ned %(count)d filer" #: src/gpodder/gtkui/main.py:1142 #, python-format msgid "synchronizing %(count)d file" msgid_plural "synchronizing %(count)d files" msgstr[0] "" msgstr[1] "" #: src/gpodder/gtkui/main.py:1144 #, python-format msgid "%(queued)d task queued" msgid_plural "%(queued)d tasks queued" msgstr[0] "" msgstr[1] "" #: src/gpodder/gtkui/main.py:1168 msgid "Please report this problem and restart gPodder:" msgstr "VУІr snill УЅ rapporter dette problemet og start gPodder pУЅ nytt." #: src/gpodder/gtkui/main.py:1168 msgid "Unhandled exception" msgstr "Ikke hУЅndert unntak" #: src/gpodder/gtkui/main.py:1235 #, python-format msgid "Feedparser error: %s" msgstr "Kildeparserfeil: %s" #: src/gpodder/gtkui/main.py:1371 #, fuzzy msgid "Could not download some episodes:" msgstr "Klarte ikke legge til noen av podkastene" #: src/gpodder/gtkui/main.py:1373 src/gpodder/gtkui/main.py:1376 msgid "Downloads finished" msgstr "Nedlastinger er fullfУИrt" #: src/gpodder/gtkui/main.py:1379 msgid "Downloads failed" msgstr "Nedlastinger feilet" #: src/gpodder/gtkui/main.py:1383 #, fuzzy msgid "Could not sync some episodes:" msgstr "Klarte ikke legge til noen av podkastene" #: src/gpodder/gtkui/main.py:1385 src/gpodder/gtkui/main.py:1388 #, fuzzy msgid "Device synchronization finished" msgstr "Synkronisering ferdig." #: src/gpodder/gtkui/main.py:1391 #, fuzzy msgid "Device synchronization failed" msgstr "Enheten er synkronisert" #: src/gpodder/gtkui/main.py:1434 #, python-format msgid "%(count)d more episode" msgid_plural "%(count)d more episodes" msgstr[0] "%(count)d episode til" msgstr[1] "%(count)d episoder til" #: src/gpodder/gtkui/main.py:1508 msgid "Start download now" msgstr "Begynn nedlasting nУЅ" #: src/gpodder/gtkui/main.py:1510 src/gpodder/gtkui/main.py:1719 #: src/gpodder/gtkui/desktop/episodeselector.py:144 #: share/gpodder/ui/gtk/gpodder.ui.h:20 msgid "Download" msgstr "Last ned" #: src/gpodder/gtkui/main.py:1511 share/gpodder/ui/gtk/gpodder.ui.h:21 msgid "Cancel" msgstr "Avbryt" #: src/gpodder/gtkui/main.py:1512 msgid "Pause" msgstr "Pause" #: src/gpodder/gtkui/main.py:1514 msgid "Remove from list" msgstr "Fjern fra listen" #: src/gpodder/gtkui/main.py:1553 share/gpodder/ui/gtk/gpodder.ui.h:13 msgid "Update podcast" msgstr "Oppdater podkast" #: src/gpodder/gtkui/main.py:1560 msgid "Open download folder" msgstr "У…pne nedlastingsmappen" #: src/gpodder/gtkui/main.py:1566 msgid "Mark episodes as old" msgstr "Merk episoder som avspilt" #: src/gpodder/gtkui/main.py:1570 src/gpodder/gtkui/main.py:1778 msgid "Archive" msgstr "Arkiv" #: src/gpodder/gtkui/main.py:1575 msgid "Remove podcast" msgstr "Fjern podkaste" #: src/gpodder/gtkui/main.py:1590 share/gpodder/ui/gtk/gpodder.ui.h:10 msgid "Podcast settings" msgstr "Podkastinnstillinger" #: src/gpodder/gtkui/main.py:1650 msgid "Error converting file." msgstr "Feil under konvertering av fil." #: src/gpodder/gtkui/main.py:1650 msgid "Bluetooth file transfer" msgstr "FiloverfУИring over BlУЅtann" #: src/gpodder/gtkui/main.py:1709 msgid "Preview" msgstr "ForhУЅndsvisning" #: src/gpodder/gtkui/main.py:1711 msgid "Stream" msgstr "StrУИm" #: src/gpodder/gtkui/main.py:1755 msgid "Send to" msgstr "Send til" #: src/gpodder/gtkui/main.py:1757 msgid "Local folder" msgstr "Lokal mappe" #: src/gpodder/gtkui/main.py:1762 msgid "Bluetooth device" msgstr "BlУЅtannenheter" #: src/gpodder/gtkui/main.py:1769 msgid "New" msgstr "Ny" #: src/gpodder/gtkui/main.py:1785 share/gpodder/ui/gtk/gpodder.ui.h:25 msgid "Episode details" msgstr "Episodedetaljer" #: src/gpodder/gtkui/main.py:1938 msgid "Please check your media player settings in the preferences dialog." msgstr "Vennligst sjekk mediaspillerinnsillingene i innstillingsdialogen." #: src/gpodder/gtkui/main.py:1939 msgid "Error opening player" msgstr "Klarte ikke УЅ УЅpne avspiller" #: src/gpodder/gtkui/main.py:2178 msgid "Adding podcasts" msgstr "Legger til podkaster" #: src/gpodder/gtkui/main.py:2179 msgid "Please wait while episode information is downloaded." msgstr "Vennligst vent mens episodedetaljene lastes ned." #: src/gpodder/gtkui/main.py:2186 msgid "Existing subscriptions skipped" msgstr "Eksisterende abonnement er hoppet over" #: src/gpodder/gtkui/main.py:2187 msgid "You are already subscribed to these podcasts:" msgstr "Du abonnerer allerede pУЅ disse podkastene:" #: src/gpodder/gtkui/main.py:2195 msgid "Podcast requires authentication" msgstr "Podkasten krever autentisering" #: src/gpodder/gtkui/main.py:2196 #, python-format msgid "Please login to %s:" msgstr "Vennligst logg inn pУЅ %s:" #: src/gpodder/gtkui/main.py:2204 src/gpodder/gtkui/main.py:2299 msgid "Authentication failed" msgstr "Autentisering feilet" #: src/gpodder/gtkui/main.py:2210 msgid "Website redirection detected" msgstr "Omadressering av nettsiden oppdaget" #: src/gpodder/gtkui/main.py:2211 #, python-format msgid "The URL %(url)s redirects to %(target)s." msgstr "URL-en %(url)s videresendes til %(target)s." #: src/gpodder/gtkui/main.py:2212 msgid "Do you want to visit the website now?" msgstr "Vil du besУИke nettstedet nУЅ?" #: src/gpodder/gtkui/main.py:2221 msgid "Could not add some podcasts" msgstr "Klarte ikke legge til noen av podkastene" #: src/gpodder/gtkui/main.py:2222 msgid "Some podcasts could not be added to your list:" msgstr "Noen av podkastene kunne ikke legges til i listen:" #: src/gpodder/gtkui/main.py:2224 msgid "Unknown" msgstr "Ukjent" #: src/gpodder/gtkui/main.py:2308 msgid "Redirection detected" msgstr "Omadressering oppdaget" #: src/gpodder/gtkui/main.py:2342 msgid "Merging episode actions" msgstr "SlУЅr sammen episodehandlinger" #: src/gpodder/gtkui/main.py:2343 msgid "Episode actions from gpodder.net are merged." msgstr "Episodehandlinger fra gpodder.net er slУЅtt sammen." #: src/gpodder/gtkui/main.py:2368 msgid "Cancelling..." msgstr "Avbryter т€І" #: src/gpodder/gtkui/main.py:2377 msgid "Please connect to a network, then try again." msgstr "" #: src/gpodder/gtkui/main.py:2378 #, fuzzy msgid "No network connection" msgstr "Nytt navn:" #: src/gpodder/gtkui/main.py:2399 #, python-format msgid "Updating %(count)d feed..." msgid_plural "Updating %(count)d feeds..." msgstr[0] "Oppdaterer %(count)d strУИmт€І" msgstr[1] "Oppdaterer %(count)d strУИmmerт€І" #: src/gpodder/gtkui/main.py:2417 #, python-format msgid "Error while updating %(url)s: %(message)s" msgstr "Det skjedde en feil ved oppdatering av %(url)s: %(message)s" #: src/gpodder/gtkui/main.py:2419 #, python-format msgid "The feed at %(url)s could not be updated." msgstr "Kilden pУЅ %(url)s kunne ikke oppdateres." #: src/gpodder/gtkui/main.py:2420 msgid "Error while updating feed" msgstr "Feil ved oppdatering av strУИm" #: src/gpodder/gtkui/main.py:2435 #, python-format msgid "Updated %(podcast)s (%(position)d/%(total)d)" msgstr "Oppdatert %(podcast)s (%(position)d/%(total)d)" #: src/gpodder/gtkui/main.py:2466 msgid "No new episodes" msgstr "Ingen nye episoder" #: src/gpodder/gtkui/main.py:2479 #, python-format msgid "Downloading %(count)d new episode." msgid_plural "Downloading %(count)d new episodes." msgstr[0] "Laster ned %(count)d ny episode." msgstr[1] "Laster ned %(count)d nye episoder." #: src/gpodder/gtkui/main.py:2480 src/gpodder/gtkui/main.py:2484 #: src/gpodder/gtkui/main.py:2833 msgid "New episodes available" msgstr "Nye episoder er tilgjengelige" #: src/gpodder/gtkui/main.py:2483 #, python-format msgid "%(count)d new episode added to download list." msgid_plural "%(count)d new episodes added to download list." msgstr[0] "Lagt til %(count)d ny episode i nedlastingslisten." msgstr[1] "Lagt til %(count)d nye episoder i nedlastingslisten." #: src/gpodder/gtkui/main.py:2490 #, python-format msgid "%(count)d new episode available" msgid_plural "%(count)d new episodes available" msgstr[0] "%(count)d ny episode tilgjengelig" msgstr[1] "%(count)d nye episoder tilgjengelig" #: src/gpodder/gtkui/main.py:2509 msgid "Quit gPodder" msgstr "Avslutt gPodder" #: src/gpodder/gtkui/main.py:2510 msgid "" "You are downloading episodes. You can resume downloads the next time you " "start gPodder. Do you want to quit now?" msgstr "" "Du laster ned episoder. Nedlastingene kan gjenopptas neste gang du starter " "gPodder. Vil du avslutte nУЅ?" #: src/gpodder/gtkui/main.py:2559 msgid "Episodes are locked" msgstr "Episoder er lУЅst" #: src/gpodder/gtkui/main.py:2560 msgid "" "The selected episodes are locked. Please unlock the episodes that you want " "to delete before trying to delete them." msgstr "" "De valgte episodene er lУЅst, vennligst lУЅs opp de episodene du УИnsker УЅ " "slette og prУИv igjen." #: src/gpodder/gtkui/main.py:2565 #, python-format msgid "Delete %(count)d episode?" msgid_plural "Delete %(count)d episodes?" msgstr[0] "Slett %(count)d episode?" msgstr[1] "Slett %(count)d episoder?" #: src/gpodder/gtkui/main.py:2566 msgid "Deleting episodes removes downloaded files." msgstr "Sletting av episodene fjerner de nedlastede filene." #: src/gpodder/gtkui/main.py:2571 msgid "Deleting episodes" msgstr "Sletter episoder" #: src/gpodder/gtkui/main.py:2572 msgid "Please wait while episodes are deleted" msgstr "Vennligst vent mens episodene slettes" #: src/gpodder/gtkui/main.py:2625 #, python-format msgid "Select older than %(count)d day" msgid_plural "Select older than %(count)d days" msgstr[0] "Slett alle eldre enn %(count)d dag" msgstr[1] "Slett alle eldre enn %(count)d dager" #: src/gpodder/gtkui/main.py:2627 msgid "Select played" msgstr "Velg avspilte" #: src/gpodder/gtkui/main.py:2628 msgid "Select finished" msgstr "Velg ferdige" #: src/gpodder/gtkui/main.py:2632 msgid "Select the episodes you want to delete:" msgstr "Velg de episodene du vil slette:" #: src/gpodder/gtkui/main.py:2648 share/gpodder/ui/gtk/gpodder.ui.h:4 msgid "Delete episodes" msgstr "Fjern episoder" #: src/gpodder/gtkui/main.py:2703 src/gpodder/gtkui/main.py:2934 #: src/gpodder/gtkui/main.py:3034 msgid "No podcast selected" msgstr "Ingen podkaster er valgt" #: src/gpodder/gtkui/main.py:2704 msgid "Please select a podcast in the podcasts list to update." msgstr "Vennligst velg en podkast i listen som du vil oppdatere." #: src/gpodder/gtkui/main.py:2774 #, python-format msgid "Download error while downloading %(episode)s: %(message)s" msgstr "Det oppstod en feil ved nedlasting av %(episode)s: %(message)s" #: src/gpodder/gtkui/main.py:2775 msgid "Download error" msgstr "Feil under nedlasting" #: src/gpodder/gtkui/main.py:2818 msgid "Select the episodes you want to download:" msgstr "Velg de episodene du vil laste ned:" #: src/gpodder/gtkui/main.py:2841 msgid "Mark as old" msgstr "Marker som gammel" #: src/gpodder/gtkui/main.py:2848 msgid "Please check for new episodes later." msgstr "Se etter nye episoder senere." #: src/gpodder/gtkui/main.py:2849 msgid "No new episodes available" msgstr "Ingen nye episoder er tilgjengelige" #: src/gpodder/gtkui/main.py:2900 msgid "Login to gpodder.net" msgstr "Logg inn pУЅ gpodder.net" #: src/gpodder/gtkui/main.py:2901 msgid "Please login to download your subscriptions." msgstr "Logg inn for УЅ laste ned dine abonnementer." #: src/gpodder/gtkui/main.py:2916 msgid "Subscriptions on gpodder.net" msgstr "Abonnementer pУЅ gpodder.net" #: src/gpodder/gtkui/main.py:2935 msgid "Please select a podcast in the podcasts list to edit." msgstr "Vennligst velg en podkast du vil redigere." #: src/gpodder/gtkui/main.py:2949 msgid "Podcast" msgstr "Podkast" #: src/gpodder/gtkui/main.py:2955 share/gpodder/ui/gtk/gpodder.ui.h:12 msgid "Remove podcasts" msgstr "Fjern podkaster" #: src/gpodder/gtkui/main.py:2956 msgid "Select the podcast you want to remove." msgstr "Velg de podkastene du vil fjerne." #: src/gpodder/gtkui/main.py:2960 #: src/gpodder/gtkui/desktop/episodeselector.py:105 msgid "Remove" msgstr "Fjern" #: src/gpodder/gtkui/main.py:2969 msgid "Removing podcast" msgstr "Fjerner podkast" #: src/gpodder/gtkui/main.py:2970 msgid "Please wait while the podcast is removed" msgstr "Vennligst vent mens podkastene fjernes" #: src/gpodder/gtkui/main.py:2971 msgid "Do you really want to remove this podcast and its episodes?" msgstr "Er du sikker pУЅ at du vil slette denne podkasten og alle episodene?" #: src/gpodder/gtkui/main.py:2973 msgid "Removing podcasts" msgstr "Fjerner podkaster" #: src/gpodder/gtkui/main.py:2974 msgid "Please wait while the podcasts are removed" msgstr "Vennligst vent mens podkastene fjernes" #: src/gpodder/gtkui/main.py:2975 msgid "Do you really want to remove the selected podcasts and their episodes?" msgstr "Er du sikker pУЅ at du vil slette disse podkastene og alle episodene?" #: src/gpodder/gtkui/main.py:3035 msgid "Please select a podcast in the podcasts list to remove." msgstr "Vennligst velg en podkast i listen du vil fjerne." #: src/gpodder/gtkui/main.py:3045 msgid "OPML files" msgstr "OPML-filer" #: src/gpodder/gtkui/main.py:3050 msgid "Import from OPML" msgstr "Importer fra OPML" #: src/gpodder/gtkui/main.py:3064 msgid "Import podcasts from OPML file" msgstr "Importer podkaster fra OPML-fil" #: src/gpodder/gtkui/main.py:3071 msgid "Nothing to export" msgstr "Ingenting УЅ eksportere" #: src/gpodder/gtkui/main.py:3072 msgid "" "Your list of podcast subscriptions is empty. Please subscribe to some " "podcasts first before trying to export your subscription list." msgstr "" "Din abonnementsliste er tom, du mУЅ abonnere pУЅ noen podkaster fУИr du kan " "eksportere abonnementslisten." #: src/gpodder/gtkui/main.py:3076 msgid "Export to OPML" msgstr "Eksporter til OPML" #: src/gpodder/gtkui/main.py:3087 #, python-format msgid "%(count)d subscription exported" msgid_plural "%(count)d subscriptions exported" msgstr[0] "%(count)d abonnement eksportert" msgstr[1] "%(count)d abonnement eksportert" #: src/gpodder/gtkui/main.py:3088 msgid "Your podcast list has been successfully exported." msgstr "Abonnementslisten er eksportert." #: src/gpodder/gtkui/main.py:3090 msgid "Could not export OPML to file. Please check your permissions." msgstr "" "Klarte ikke УЅ eksportere til OPML-fil. Vennligst sjekk dine rettigheter." #: src/gpodder/gtkui/main.py:3090 msgid "OPML export failed" msgstr "OPML eksport feilet" #: src/gpodder/gtkui/main.py:3117 #, fuzzy msgid "No updates available" msgstr "Ingen episoder tilgjengelige" #: src/gpodder/gtkui/main.py:3118 msgid "You have the latest version of gPodder." msgstr "" #: src/gpodder/gtkui/main.py:3122 #, fuzzy msgid "New version available" msgstr "Nye episoder er tilgjengelige" #: src/gpodder/gtkui/main.py:3124 #, python-format msgid "Installed version: %s" msgstr "" #: src/gpodder/gtkui/main.py:3125 #, fuzzy, python-format msgid "Newest version: %s" msgstr "Sletter %s" #: src/gpodder/gtkui/main.py:3126 #, fuzzy, python-format msgid "Release date: %s" msgstr "utgitt: %s" #: src/gpodder/gtkui/main.py:3128 #, fuzzy msgid "Download the latest version from gpodder.org?" msgstr "Last ned mine abonnement fra gpodder.net" #: src/gpodder/gtkui/main.py:3141 msgid "About gPodder" msgstr "Om gPodder" #: src/gpodder/gtkui/main.py:3424 #, fuzzy msgid "Please register a YouTube API key and set it in the preferences." msgstr "Vennligst sett opp mediaspilleren i innstillingsdialogen." #: src/gpodder/gtkui/main.py:3425 msgid "Would you like to set up an API key now?" msgstr "" #: src/gpodder/gtkui/main.py:3425 msgid "API key required" msgstr "" #: src/gpodder/gtkui/main.py:3444 bin/gpo:631 #, fuzzy msgid "No unique URL found" msgstr "Fant ingen kanaler" #: src/gpodder/gtkui/main.py:3449 bin/gpo:637 #, fuzzy msgid "Already subscribed" msgstr "Klarte ikke УЅ synkronisere med iPod" #: src/gpodder/gtkui/main.py:3458 bin/gpo:649 #, python-format msgid "Make sure the API key is correct. Error: %(message)s" msgstr "" #: src/gpodder/gtkui/main.py:3459 #, fuzzy msgid "Error getting YouTube channels" msgstr "Klarte ikke УЅ sette valget" #: src/gpodder/gtkui/main.py:3462 msgid "Successfully migrated subscriptions" msgstr "" #: src/gpodder/gtkui/main.py:3464 #, fuzzy msgid "Subscriptions are up to date" msgstr "Abonnementer er pauset" #: src/gpodder/gtkui/main.py:3467 msgid "These URLs failed:" msgstr "" #: src/gpodder/gtkui/main.py:3469 #, fuzzy msgid "Could not migrate some subscriptions" msgstr "Klarte ikke legge til noen av podkastene" #: src/gpodder/gtkui/main.py:3493 msgid "Cannot start gPodder" msgstr "Klarte ikke starte gPodder." #: src/gpodder/gtkui/main.py:3494 #, python-format msgid "D-Bus error: %s" msgstr "D-Bus feil: %s" #: src/gpodder/gtkui/model.py:68 #, python-format msgid "released %s" msgstr "utgitt %s" #: src/gpodder/gtkui/model.py:69 src/gpodder/gtkui/model.py:87 #: src/gpodder/gtkui/model.py:237 src/gpodder/gtkui/shownotes.py:84 #, python-format msgid "from %s" msgstr "fra %s" #: src/gpodder/gtkui/model.py:80 src/gpodder/gtkui/model.py:393 msgid "played" msgstr "avspilt" #: src/gpodder/gtkui/model.py:82 msgid "unplayed" msgstr "ikke avspilt" #: src/gpodder/gtkui/model.py:85 msgid "today" msgstr "idag" #: src/gpodder/gtkui/model.py:86 #, python-format msgid "downloaded %s" msgstr "Lastet ned %s" #: src/gpodder/gtkui/model.py:337 msgid "Deleted" msgstr "Slettet" #: src/gpodder/gtkui/model.py:342 msgid "New episode" msgstr "Ny episode" #: src/gpodder/gtkui/model.py:356 msgid "Downloaded episode" msgstr "Episode lastet ned" #: src/gpodder/gtkui/model.py:359 msgid "Downloaded video episode" msgstr "Video lastet ned" #: src/gpodder/gtkui/model.py:362 msgid "Downloaded image" msgstr "Bilde lastet ned" #: src/gpodder/gtkui/model.py:365 msgid "Downloaded file" msgstr "Fil lastet ned" #: src/gpodder/gtkui/model.py:380 msgid "missing file" msgstr "mangler fil" #: src/gpodder/gtkui/model.py:384 msgid "never displayed" msgstr "aldri vist" #: src/gpodder/gtkui/model.py:386 msgid "never played" msgstr "aldri avspilt" #: src/gpodder/gtkui/model.py:388 msgid "never opened" msgstr "aldri УЅpnet" #: src/gpodder/gtkui/model.py:391 msgid "displayed" msgstr "vist" #: src/gpodder/gtkui/model.py:395 msgid "opened" msgstr "УЅpnet" #: src/gpodder/gtkui/model.py:397 msgid "deletion prevented" msgstr "sletting ikke tillatt" #: src/gpodder/gtkui/model.py:432 share/gpodder/ui/gtk/gpodder.ui.h:32 msgid "All episodes" msgstr "Alle episoder" #: src/gpodder/gtkui/model.py:433 msgid "from all podcasts" msgstr "fra alle podkaster" #: src/gpodder/gtkui/model.py:625 msgid "Subscription paused" msgstr "Abonnementer er pauset" #: src/gpodder/gtkui/shownotes.py:118 #, fuzzy msgid "Please select an episode" msgstr "Velg episoder" #: src/gpodder/gtkui/interface/addpodcast.py:74 msgid "Nothing to paste." msgstr "Ingenting УЅ lime inn." #: src/gpodder/gtkui/interface/addpodcast.py:74 msgid "Clipboard is empty" msgstr "Utklippstavla er tom" #: src/gpodder/gtkui/interface/common.py:160 msgid "Username" msgstr "Brukernavn" #: src/gpodder/gtkui/interface/common.py:163 msgid "New user" msgstr "Ny bruker" #: src/gpodder/gtkui/interface/common.py:170 msgid "Login" msgstr "Logg inn" #: src/gpodder/gtkui/interface/common.py:172 msgid "Authentication required" msgstr "Autentisering kreves" #: src/gpodder/gtkui/interface/common.py:203 msgid "Password" msgstr "Passord" #: src/gpodder/gtkui/interface/common.py:225 msgid "Select destination" msgstr "Velg mУЅl" #: src/gpodder/gtkui/interface/configeditor.py:34 msgid "Setting" msgstr "Innstilling" #: src/gpodder/gtkui/interface/configeditor.py:41 msgid "Set to" msgstr "Sett til" #: src/gpodder/gtkui/interface/configeditor.py:81 #, python-format msgid "Cannot set %(field)s to %(value)s. Needed data type: %(datatype)s" msgstr "" "Kan ikke sette %(field)s til %(value)s. Datatype %(datatype)s mУЅ brukes." #: src/gpodder/gtkui/interface/configeditor.py:85 msgid "Error setting option" msgstr "Klarte ikke УЅ sette valget" #: src/gpodder/gtkui/desktop/channel.py:100 #, fuzzy msgid "Add section" msgstr "Handling" #: src/gpodder/gtkui/desktop/channel.py:100 #, fuzzy msgid "New section:" msgstr "Nytt navn:" #: src/gpodder/gtkui/desktop/channel.py:133 msgid "Select new podcast cover artwork" msgstr "Velg et nytt omslagsbilde til podkasten" #: src/gpodder/gtkui/desktop/channel.py:161 msgid "You can only drop a single image or URL here." msgstr "Du kan bare slippe ett bilde eller en URL her." #: src/gpodder/gtkui/desktop/channel.py:161 #: src/gpodder/gtkui/desktop/channel.py:171 msgid "Drag and drop" msgstr "Dra og slipp" #: src/gpodder/gtkui/desktop/channel.py:171 msgid "You can only drop local files and http:// URLs here." msgstr "Du kan bare slippe lokale filer og http:// URL-er her." #: src/gpodder/gtkui/desktop/deviceplaylist.py:98 #, fuzzy, python-format msgid "Folder %s could not be created." msgstr "Kilden pУЅ %(url)s kunne ikke oppdateres." #: src/gpodder/gtkui/desktop/deviceplaylist.py:98 #, fuzzy msgid "Error writing playlist" msgstr "Klarte ikke УЅ УЅpne avspiller" #: src/gpodder/gtkui/desktop/episodeselector.py:288 #: share/gpodder/ui/gtk/gpodderepisodeselector.ui.h:2 msgid "Select all" msgstr "Velg alle" #: src/gpodder/gtkui/desktop/episodeselector.py:292 #: share/gpodder/ui/gtk/gpodderepisodeselector.ui.h:3 msgid "Select none" msgstr "Velg ingen" #: src/gpodder/gtkui/desktop/episodeselector.py:324 msgid "Nothing selected" msgstr "Ingenting er valgt" #: src/gpodder/gtkui/desktop/episodeselector.py:325 #, python-format msgid "%(count)d episode" msgid_plural "%(count)d episodes" msgstr[0] "%(count)d episode" msgstr[1] "%(count)d episoder" #: src/gpodder/gtkui/desktop/episodeselector.py:327 #, python-format msgid "size: %s" msgstr "stУИrrelse: %s" #: src/gpodder/gtkui/desktop/podcastdirectory.py:238 #, fuzzy msgid "Loading podcasts" msgstr "Legger til podkaster" #: src/gpodder/gtkui/desktop/podcastdirectory.py:239 #, fuzzy msgid "Please wait while the podcast list is downloaded" msgstr "Vennligst vent mens podkastene fjernes" #: src/gpodder/gtkui/desktop/preferences.py:51 #: src/gpodder/gtkui/desktop/preferences.py:93 msgid "Do nothing" msgstr "GjУИr ingenting" #: src/gpodder/gtkui/desktop/preferences.py:52 msgid "Show episode list" msgstr "Vis episodeliste" #: src/gpodder/gtkui/desktop/preferences.py:53 msgid "Add to download list" msgstr "Legg til for nedlasting" #: src/gpodder/gtkui/desktop/preferences.py:54 msgid "Download immediately" msgstr "Last ned nУЅ" #: src/gpodder/gtkui/desktop/preferences.py:72 msgid "None" msgstr "Ingen" #: src/gpodder/gtkui/desktop/preferences.py:73 msgid "iPod" msgstr "" #: src/gpodder/gtkui/desktop/preferences.py:74 msgid "Filesystem-based" msgstr "Filsystembasert" #: src/gpodder/gtkui/desktop/preferences.py:94 #, fuzzy msgid "Mark as played" msgstr "Marker som ikke avspilt" #: src/gpodder/gtkui/desktop/preferences.py:95 #, fuzzy msgid "Delete from gPodder" msgstr "Slett den fra gPodder" #: src/gpodder/gtkui/desktop/preferences.py:123 #, fuzzy, python-format msgid "Custom (%(format_ids)s)" msgstr "Egendefinerte formatstrenger" #: src/gpodder/gtkui/desktop/preferences.py:318 msgid "Name" msgstr "" #: src/gpodder/gtkui/desktop/preferences.py:369 #, fuzzy msgid "Documentation" msgstr "Varighet" #: src/gpodder/gtkui/desktop/preferences.py:374 msgid "Extension info" msgstr "" #: src/gpodder/gtkui/desktop/preferences.py:379 msgid "Support the author" msgstr "" #: src/gpodder/gtkui/desktop/preferences.py:413 msgid "Extension cannot be activated" msgstr "" #: src/gpodder/gtkui/desktop/preferences.py:426 msgid "Extension module info" msgstr "" #: src/gpodder/gtkui/desktop/preferences.py:463 msgid "Configure audio player" msgstr "Innstillinger for lydavspiller" #: src/gpodder/gtkui/desktop/preferences.py:464 #: src/gpodder/gtkui/desktop/preferences.py:474 msgid "Command:" msgstr "Kommando:" #: src/gpodder/gtkui/desktop/preferences.py:473 msgid "Configure video player" msgstr "Innstillinger for videoavspiller" #: src/gpodder/gtkui/desktop/preferences.py:485 #: src/gpodder/gtkui/desktop/preferences.py:503 msgid "manually" msgstr "manuell" #: src/gpodder/gtkui/desktop/preferences.py:505 #, python-format msgid "after %(count)d day" msgid_plural "after %(count)d days" msgstr[0] "etter %(count)d dag" msgstr[1] "etter %(count)d dager" #: src/gpodder/gtkui/desktop/preferences.py:541 msgid "Replace subscription list on server" msgstr "Erstatte abonnementslisten pУЅ tjeneren?" #: src/gpodder/gtkui/desktop/preferences.py:542 msgid "" "Remote podcasts that have not been added locally will be removed on the " "server. Continue?" msgstr "" "Podkaster i listen pУЅ tjeneren som ikke har abonnement lokalt vil bli " "slettet. Fortsette?" #: src/gpodder/gtkui/desktop/preferences.py:621 msgid "Select folder for mount point" msgstr "Velg mappe for monteringspunkt" #: src/gpodder/gtkui/desktop/preferences.py:638 #, fuzzy msgid "Select folder for playlists" msgstr "Velg mappe for monteringspunkt" #: src/gpodder/gtkui/desktop/sync.py:86 msgid "No device configured" msgstr "Ingen enhet er konfigurert" #: src/gpodder/gtkui/desktop/sync.py:87 msgid "Please set up your device in the preferences dialog." msgstr "Vennligst sett opp mediaspilleren i innstillingsdialogen." #: src/gpodder/gtkui/desktop/sync.py:91 msgid "Cannot open device" msgstr "Klarte ikke УЅ УЅpne enheten" #: src/gpodder/gtkui/desktop/sync.py:92 msgid "Please check the settings in the preferences dialog." msgstr "Vennligst sjekk innstillingene i innstillingsdialogen." #: src/gpodder/gtkui/desktop/sync.py:139 msgid "Not enough space left on device" msgstr "Ikke nok plass pУЅ enheten." #: src/gpodder/gtkui/desktop/sync.py:140 #, fuzzy, python-format msgid "" "Additional free space required: %(required_space)s\n" "Do you want to continue?" msgstr "" "Du mУЅ frigjУИre %s.\n" "Vil du fortsette?" #: src/gpodder/gtkui/desktop/sync.py:199 #, fuzzy msgid "Update successful" msgstr "Opplastingen er vellykket." #: src/gpodder/gtkui/desktop/sync.py:200 msgid "The playlist on your MP3 player has been updated." msgstr "" #: src/gpodder/gtkui/desktop/sync.py:274 msgid "Episodes have been deleted on device" msgstr "" #: src/gpodder/gtkui/desktop/sync.py:285 #, fuzzy msgid "Error writing playlist files" msgstr "Feil under konvertering av fil." #: src/gpodder/plugins/soundcloud.py:154 msgid "Unknown track" msgstr "Ukjent spor" #: src/gpodder/plugins/soundcloud.py:181 #, python-format msgid "%s on Soundcloud" msgstr "%s pУЅ Soundcloud" #: src/gpodder/plugins/soundcloud.py:190 #, python-format msgid "Tracks published by %s on Soundcloud." msgstr "Publiserte spor fra %s pУЅ Soundcloud." #: src/gpodder/plugins/soundcloud.py:217 #, python-format msgid "%s's favorites on Soundcloud" msgstr "%ss favoritter pУЅ Soundcloud" #: src/gpodder/plugins/soundcloud.py:223 #, python-format msgid "Tracks favorited by %s on Soundcloud." msgstr "Spor %s har markert som favoritter pУЅ Soundcloud." #: share/gpodder/extensions/audio_converter.py:20 #, fuzzy msgid "Convert audio files" msgstr "Konverterer fil" #: share/gpodder/extensions/audio_converter.py:21 msgid "Transcode audio files to mp3/ogg" msgstr "" #: share/gpodder/extensions/audio_converter.py:84 #: share/gpodder/extensions/video_converter.py:86 #, python-format msgid "Convert to %(format)s" msgstr "" #: share/gpodder/extensions/audio_converter.py:111 #: share/gpodder/extensions/rockbox_convert2mp4.py:65 #: share/gpodder/extensions/video_converter.py:111 #, fuzzy msgid "File converted" msgstr "iPod OGG-konvertering" #: share/gpodder/extensions/audio_converter.py:114 #: share/gpodder/extensions/video_converter.py:114 #, fuzzy msgid "Conversion failed" msgstr "Konverterer fil" #: share/gpodder/extensions/concatenate_videos.py:20 #: share/gpodder/extensions/concatenate_videos.py:100 #, fuzzy msgid "Concatenate videos" msgstr "Konverterer fil" #: share/gpodder/extensions/concatenate_videos.py:21 msgid "Add a context menu item for concatenating multiple videos" msgstr "" #: share/gpodder/extensions/concatenate_videos.py:37 msgid "Save video" msgstr "" #: share/gpodder/extensions/concatenate_videos.py:66 #, fuzzy msgid "Concatenating video files" msgstr "Konverterer fil" #: share/gpodder/extensions/concatenate_videos.py:67 #, python-format msgid "Writing %(filename)s" msgstr "" #: share/gpodder/extensions/concatenate_videos.py:78 msgid "Videos successfully converted" msgstr "" #: share/gpodder/extensions/concatenate_videos.py:79 #, fuzzy msgid "Error converting videos" msgstr "Feil under konvertering av fil." #: share/gpodder/extensions/concatenate_videos.py:80 msgid "Concatenation result" msgstr "" #: share/gpodder/extensions/enqueue_in_mediaplayer.py:16 msgid "Enqueue in media players" msgstr "" #: share/gpodder/extensions/enqueue_in_mediaplayer.py:17 msgid "" "Add a context menu item for enqueueing episodes in installed media players" msgstr "" #: share/gpodder/extensions/enqueue_in_mediaplayer.py:35 msgid "Enqueue in" msgstr "" #: share/gpodder/extensions/episode_website_context_menu.py:14 msgid "\"Open website\" episode context menu" msgstr "" #: share/gpodder/extensions/episode_website_context_menu.py:15 msgid "Add a context menu item for opening the website of an episode" msgstr "" #: share/gpodder/extensions/episode_website_context_menu.py:30 #, fuzzy msgid "Open website" msgstr "Nettside:" #: share/gpodder/extensions/gtk_statusicon.py:14 #, fuzzy msgid "Gtk Status Icon" msgstr "Statusikon" #: share/gpodder/extensions/gtk_statusicon.py:15 msgid "Show a status icon for Gtk-based Desktops." msgstr "" #: share/gpodder/extensions/minimize_on_start.py:10 msgid "Minimize on start" msgstr "" #: share/gpodder/extensions/minimize_on_start.py:11 msgid "Minimizes the gPodder window on startup." msgstr "" #: share/gpodder/extensions/mpris-listener.py:33 msgid "MPRIS Listener" msgstr "" #: share/gpodder/extensions/mpris-listener.py:34 msgid "Convert MPRIS notifications to gPodder Media Player D-Bus API" msgstr "" #: share/gpodder/extensions/normalize_audio.py:21 msgid "Normalize audio with re-encoding" msgstr "" #: share/gpodder/extensions/normalize_audio.py:22 msgid "Normalize the volume of audio files with normalize-audio" msgstr "" #: share/gpodder/extensions/normalize_audio.py:99 #, fuzzy msgid "File normalized" msgstr "Filnavn" #: share/gpodder/extensions/rename_download.py:16 #, fuzzy msgid "Rename episodes after download" msgstr "En episode lastet ned:" #: share/gpodder/extensions/rename_download.py:17 #, fuzzy msgid "Rename episodes to \".\" on download" msgstr "En ny episoder tilgjengelig for nedlasting" #: share/gpodder/extensions/rm_ogg_cover.py:37 #, fuzzy msgid "Remove cover art from OGG files" msgstr "Hent omslagsbilde fra fil" #: share/gpodder/extensions/rm_ogg_cover.py:38 msgid "removes coverart from all downloaded ogg files" msgstr "" #: share/gpodder/extensions/rm_ogg_cover.py:66 #, fuzzy msgid "Remove cover art" msgstr "Merk som ikke ny" #: share/gpodder/extensions/rockbox_convert2mp4.py:26 msgid "Convert video files to MP4 for Rockbox" msgstr "" #: share/gpodder/extensions/rockbox_convert2mp4.py:27 msgid "Converts all videos to a Rockbox-compatible format" msgstr "" #: share/gpodder/extensions/sonos.py:19 share/gpodder/extensions/sonos.py:78 msgid "Stream to Sonos" msgstr "" #: share/gpodder/extensions/sonos.py:20 msgid "Stream podcasts to Sonos speakers" msgstr "" #: share/gpodder/extensions/tagging.py:45 msgid "Tag downloaded files using Mutagen" msgstr "" #: share/gpodder/extensions/tagging.py:46 #, fuzzy msgid "Add episode and podcast titles to MP3/OGG tags" msgstr "Vis ТЋAlle episoderТЛ i podkastlisten" #: share/gpodder/extensions/taskbar_progress.py:28 msgid "Show download progress on the taskbar" msgstr "" #: share/gpodder/extensions/taskbar_progress.py:29 msgid "Displays the progress on the Windows taskbar." msgstr "" #: share/gpodder/extensions/ted_subtitles.py:16 msgid "Subtitle Downloader for TED Talks" msgstr "" #: share/gpodder/extensions/ted_subtitles.py:17 msgid "Downloads .srt subtitles for TED Talks Videos" msgstr "" #: share/gpodder/extensions/ubuntu_appindicator.py:10 msgid "Ubuntu App Indicator" msgstr "" #: share/gpodder/extensions/ubuntu_appindicator.py:11 msgid "Show a status indicator in the top bar." msgstr "" #: share/gpodder/extensions/ubuntu_appindicator.py:47 msgid "Show main window" msgstr "" #: share/gpodder/extensions/ubuntu_appindicator.py:57 #: share/gpodder/ui/gtk/gpodder.ui.h:6 msgid "Quit" msgstr "Avslutt" #: share/gpodder/extensions/ubuntu_unity.py:10 msgid "Ubuntu Unity Integration" msgstr "" #: share/gpodder/extensions/ubuntu_unity.py:11 msgid "Show download progress in the Unity Launcher icon." msgstr "" #: share/gpodder/extensions/update_feeds_on_startup.py:14 #, fuzzy msgid "Search for new episodes on startup" msgstr "Se etter nye episoder ved oppstart" #: share/gpodder/extensions/update_feeds_on_startup.py:15 #, fuzzy msgid "Starts the search for new episodes on startup" msgstr "Se etter nye episoder ved oppstart" #: share/gpodder/extensions/video_converter.py:22 #, fuzzy msgid "Convert video files" msgstr "Konverterer fil" #: share/gpodder/extensions/video_converter.py:23 msgid "Transcode video files to avi/mp4/m4v" msgstr "" #: share/gpodder/ui/gtk/gpodderaddpodcast.ui.h:1 msgid "Add a new podcast" msgstr "Legg til en ny podkast" #: share/gpodder/ui/gtk/gpodderaddpodcast.ui.h:2 msgid "URL:" msgstr "URL:" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:1 msgid "gPodder Podcast Editor" msgstr "gPodder podkastklient" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:2 msgid "Section:" msgstr "Gruppe:" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:3 msgid "Disable feed updates (pause subscription)" msgstr "SlУЅ av strУИmoppdateringer (sett i pause)" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:4 #, fuzzy msgid "Synchronize to MP3 player devices" msgstr "Synkroniserer med spiller" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:5 #, fuzzy msgid "Strategy:" msgstr "Slettemetode:" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:6 #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:6 msgid "General" msgstr "Generell" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:7 msgid "HTTP/FTP Authentication" msgstr "HTTP/FTP autentisering" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:8 #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:13 msgid "Username:" msgstr "Brukernavn:" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:9 #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:14 msgid "Password:" msgstr "Passord:" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:10 msgid "Locations" msgstr "Steder" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:11 msgid "Download to:" msgstr "Last ned til:" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:12 msgid "Website:" msgstr "Nettside:" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:13 msgid "website label" msgstr "nettsideetikett" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:14 msgid "Advanced" msgstr "Avansert" #: share/gpodder/ui/gtk/gpodderconfigeditor.ui.h:1 msgid "gPodder Configuration Editor" msgstr "gPodder oppsettsendrer" #: share/gpodder/ui/gtk/gpodderconfigeditor.ui.h:2 msgid "Search for:" msgstr "SУИk etter:" #: share/gpodder/ui/gtk/gpodderconfigeditor.ui.h:3 msgid "Show All" msgstr "Vis alle" #: share/gpodder/ui/gtk/gpodderepisodeselector.ui.h:1 msgid "Select episodes" msgstr "Velg episoder" #: share/gpodder/ui/gtk/gpodderpodcastdirectory.ui.h:1 msgid "Find new podcasts" msgstr "Let etter nye podkaster" #: share/gpodder/ui/gtk/gpodderpodcastdirectory.ui.h:2 msgid "Select All" msgstr "Velg alle" #: share/gpodder/ui/gtk/gpodderpodcastdirectory.ui.h:3 msgid "Select None" msgstr "Velg ingen" #: share/gpodder/ui/gtk/gpodderpodcastdirectory.ui.h:4 msgid "label" msgstr "" #: share/gpodder/ui/gtk/gpodderpodcastdirectory.ui.h:5 msgid "..." msgstr "" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:1 #: share/gpodder/ui/gtk/gpodder.ui.h:5 msgid "Preferences" msgstr "Innstillinger" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:2 msgid "Audio player:" msgstr "Lydavspiller:" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:3 msgid "Video player:" msgstr "Videoavspiller:" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:4 msgid "\"All episodes\" in podcast list" msgstr "\"Alle episoder\" i podkastlisten" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:5 msgid "Use sections for podcast list" msgstr "Bruk grupper i podkastlisten" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:7 msgid "Preferred YouTube format:" msgstr "" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:8 msgid "YouTube API key (v3):" msgstr "" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:9 msgid "Preferred Vimeo format:" msgstr "" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:11 msgid "Extensions" msgstr "" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:12 msgid "Synchronize subscriptions and episode actions" msgstr "Synkroniser abonnement og episodehendelser" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:15 msgid "Replace list on server with local subscriptions" msgstr "Erstatt listen pУЅ tjeneren med din lokale liste" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:16 msgid "Device name:" msgstr "Enhetsnavn:" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:17 msgid "gpodder.net" msgstr "gpodder.net" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:18 msgid "Update interval:" msgstr "Oppdateringsintervall: " #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:19 msgid "Maximum number of episodes per podcast:" msgstr "Maks antall episoder for hver podkast:" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:20 msgid "When new episodes are found:" msgstr "NУЅr nye episoder er funnet:" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:21 msgid "Updating" msgstr "Oppdaterer" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:22 msgid "Delete played episodes:" msgstr "Fjern avspilte episoder:" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:23 msgid "Remove played episodes even if unfinished" msgstr "Fjern avspilte episoder selv om de ikke er ferdige" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:24 msgid "Also remove unplayed episodes" msgstr "Fjern ogsУЅ ikke-avspilte episoder" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:25 msgid "Clean-up" msgstr "Rydd opp" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:26 msgid "Device type:" msgstr "Enhetstype:" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:27 msgid "Mountpoint:" msgstr "Monteringspunkt" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:28 msgid "After syncing an episode:" msgstr "Etter synkronisering av en episode:" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:29 #, fuzzy msgid "Create playlists on device" msgstr "Erstatte abonnementslisten pУЅ tjeneren?" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:30 #, fuzzy msgid "Playlists Folder:" msgstr "Spillelistenavn:" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:31 msgid "Remove episodes deleted on device from gPodder" msgstr "" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:32 msgid "Only sync unplayed episodes" msgstr "Ikke synkroniser avspilte episoder" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:33 msgid "Devices" msgstr "Enheter" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:34 msgid "Edit config" msgstr "Rediger innstillinger" #: share/gpodder/ui/gtk/gpodder.ui.h:1 msgid "_Podcasts" msgstr "_Podkaster" #: share/gpodder/ui/gtk/gpodder.ui.h:2 msgid "Check for new episodes" msgstr "Se etter nye episoder" #: share/gpodder/ui/gtk/gpodder.ui.h:3 msgid "Download new episodes" msgstr "Last ned nye episoder" #: share/gpodder/ui/gtk/gpodder.ui.h:7 msgid "_Subscriptions" msgstr "_Abonnement" #: share/gpodder/ui/gtk/gpodder.ui.h:8 msgid "Discover new podcasts" msgstr "Let etter nye podkaster" #: share/gpodder/ui/gtk/gpodder.ui.h:9 msgid "Add podcast via URL" msgstr "Legg til podkast fra URL" #: share/gpodder/ui/gtk/gpodder.ui.h:11 msgid "Unsubscribe" msgstr "Fjerne abonnementet" #: share/gpodder/ui/gtk/gpodder.ui.h:14 msgid "Import from OPML file" msgstr "Importer fra OPML-fil" #: share/gpodder/ui/gtk/gpodder.ui.h:15 msgid "Export to OPML file" msgstr "Eksporter til OPML-fil" #: share/gpodder/ui/gtk/gpodder.ui.h:16 msgid "Go to gpodder.net" msgstr "GУЅ til gpodder.net" #: share/gpodder/ui/gtk/gpodder.ui.h:17 msgid "_Episodes" msgstr "_Episoder" #: share/gpodder/ui/gtk/gpodder.ui.h:18 msgid "Play" msgstr "Spill av" #: share/gpodder/ui/gtk/gpodder.ui.h:19 msgid "Open" msgstr "У…pne" #: share/gpodder/ui/gtk/gpodder.ui.h:22 msgid "Delete" msgstr "Slett" #: share/gpodder/ui/gtk/gpodder.ui.h:23 msgid "Toggle new status" msgstr "Endre status" #: share/gpodder/ui/gtk/gpodder.ui.h:24 msgid "Change delete lock" msgstr "Endre slettelУЅs" #: share/gpodder/ui/gtk/gpodder.ui.h:26 msgid "E_xtras" msgstr "" #: share/gpodder/ui/gtk/gpodder.ui.h:27 #, fuzzy msgid "Sync to device" msgstr "Synkroniser enheten" #: share/gpodder/ui/gtk/gpodder.ui.h:28 #, fuzzy msgid "Update YouTube subscriptions" msgstr "Ingen abonnement" #: share/gpodder/ui/gtk/gpodder.ui.h:29 msgid "_View" msgstr "_Vis" #: share/gpodder/ui/gtk/gpodder.ui.h:30 msgid "Toolbar" msgstr "VerktУИylinje" #: share/gpodder/ui/gtk/gpodder.ui.h:31 msgid "Episode descriptions" msgstr "Episodedetaljer" #: share/gpodder/ui/gtk/gpodder.ui.h:33 msgid "Hide deleted episodes" msgstr "Ikke vis slettede episoder" #: share/gpodder/ui/gtk/gpodder.ui.h:34 msgid "Downloaded episodes" msgstr "Nedlastede episoder" #: share/gpodder/ui/gtk/gpodder.ui.h:35 msgid "Unplayed episodes" msgstr "Ikke avspilte episoder" #: share/gpodder/ui/gtk/gpodder.ui.h:36 msgid "Hide podcasts without episodes" msgstr "Gjem podkaster uten episoder" #: share/gpodder/ui/gtk/gpodder.ui.h:37 msgid "_Help" msgstr "_Hjelp" #: share/gpodder/ui/gtk/gpodder.ui.h:38 msgid "User manual" msgstr "Brukermanual" #: share/gpodder/ui/gtk/gpodder.ui.h:39 msgid "Software updates" msgstr "" #: share/gpodder/ui/gtk/gpodder.ui.h:40 msgid "Filter:" msgstr "Filter:" #: share/gpodder/ui/gtk/gpodder.ui.h:41 msgid "Podcasts" msgstr "Podkaster" #: share/gpodder/ui/gtk/gpodder.ui.h:42 msgid "Limit rate to" msgstr "Begrens hastighet til" #: share/gpodder/ui/gtk/gpodder.ui.h:43 msgid "KiB/s" msgstr "KiB/s" #: share/gpodder/ui/gtk/gpodder.ui.h:44 msgid "Limit downloads to" msgstr "Begrens nedlastinger til" #: share/gpodder/ui/gtk/gpodderwelcome.ui.h:2 #, fuzzy msgid "Welcome to gPodder" msgstr "Velkommen til gPodder" #: share/gpodder/ui/gtk/gpodderwelcome.ui.h:3 #, fuzzy msgid "Your podcast list is empty." msgstr "Abonnementslisten er tom." #: share/gpodder/ui/gtk/gpodderwelcome.ui.h:4 msgid "Choose from a list of example podcasts" msgstr "Velg fra en liste med eksempelpodkaster" #: share/gpodder/ui/gtk/gpodderwelcome.ui.h:5 #, fuzzy msgid "Add a podcast by entering its URL" msgstr "Legg til podkast fra URL" #: share/gpodder/ui/gtk/gpodderwelcome.ui.h:6 #, fuzzy msgid "Restore my subscriptions from gpodder.net" msgstr "Last ned mine abonnement fra gpodder.net" #: bin/gpo:266 #, fuzzy msgid "Podcast update requested by extensions." msgstr "Podkasten krever autentisering" #: bin/gpo:270 msgid "Episode download requested by extensions." msgstr "" #: bin/gpo:323 #, fuzzy, python-format msgid "Invalid url: %s" msgstr "Ugyldig URL" #: bin/gpo:340 bin/gpo:416 bin/gpo:450 bin/gpo:582 bin/gpo:597 bin/gpo:717 #, fuzzy, python-format msgid "You are not subscribed to %s." msgstr "Du abonnerer allerede pУЅ disse podkastene:" #: bin/gpo:346 #, fuzzy, python-format msgid "Already subscribed to %s." msgstr "Klarte ikke УЅ synkronisere med iPod" #: bin/gpo:352 #, fuzzy, python-format msgid "Cannot subscribe to %s." msgstr "Klarte ikke УЅ synkronisere med iPod" #: bin/gpo:368 #, python-format msgid "Successfully added %s." msgstr "" #: bin/gpo:386 msgid "This configuration option does not exist." msgstr "" #: bin/gpo:390 msgid "Can only set leaf configuration nodes." msgstr "" #: bin/gpo:404 #, python-format msgid "Renamed %(old_title)s to %(new_title)s." msgstr "" #: bin/gpo:420 #, fuzzy, python-format msgid "Unsubscribed from %s." msgstr "Fjerne abonnementet" #: bin/gpo:494 #, fuzzy msgid "Updates disabled" msgstr "Oppdater valgte" #: bin/gpo:505 #, python-format msgid "%(count)d new episode" msgid_plural "%(count)d new episodes" msgstr[0] "" msgstr[1] "" #: bin/gpo:511 #, fuzzy msgid "Checking for new episodes" msgstr "Ser etter nye episoder т€І" #: bin/gpo:520 #, fuzzy, python-format msgid "Skipping %(podcast)s" msgstr "Hopper over podcast: %s" #: bin/gpo:588 #, python-format msgid "Disabling feed update from %s." msgstr "" #: bin/gpo:603 #, fuzzy, python-format msgid "Enabling feed update from %s." msgstr "Leser filer fra %s" #: bin/gpo:616 #, python-format msgid "Please register a YouTube API key and set it using %(command)s." msgstr "" #: bin/gpo:643 #, python-format msgid "Changing: %(old_url)s => %(new_url)s" msgstr "" #: bin/gpo:653 #, fuzzy msgid "Nothing to fix" msgstr "Ingenting УЅ eksportere" #: bin/gpo:672 #, fuzzy msgid "No podcasts found." msgstr "Fant ingen podkaster" #: bin/gpo:686 msgid "Enter index to subscribe, ? for list" msgstr "" #: bin/gpo:700 bin/gpo:704 #, fuzzy msgid "Invalid value." msgstr "Ugyldig URL" #: bin/gpo:721 #, fuzzy, python-format msgid "Invalid URL: %s" msgstr "Ugyldig URL" #: bin/gpo:724 #, python-format msgid "Changed URL from %(old_url)s to %(new_url)s." msgstr "" #: bin/gpo:782 #, python-format msgid "Syntax error: %(error)s" msgstr "" #: bin/gpo:876 msgid "Ambiguous command. Did you mean.." msgstr "" #: bin/gpo:880 #, fuzzy msgid "The requested function is not available." msgstr "Denne funksjonen er ikke tilgjengelig for iPod." #: bin/gpodder:105 #, fuzzy msgid "print logging output on the console" msgstr "Skriv avlusningsdata til stdout" #: bin/gpodder:108 #, fuzzy msgid "subscribe to the feed at URL" msgstr "Abonner pУЅ den angitte ULRen" #: bin/gpodder:113 msgid "Mac OS X application process number" msgstr "Mac OS X programprosessnummer" #: share/applications/gpodder.desktop.in.h:2 msgid "gPodder Podcast Client" msgstr "gPodder podkastklient" #: share/applications/gpodder.desktop.in.h:3 msgid "Podcast Client" msgstr "Podkastklient" #: share/applications/gpodder.desktop.in.h:4 msgid "Subscribe to audio and video content from the web" msgstr "Abonner pУЅ lyd- og videopodkaster fra nettet" #: share/applications/gpodder-url-handler.desktop.in.h:1 #, fuzzy msgid "gPodder (subscribe to feed)" msgstr "Abonner pУЅ den angitte ULRen" gpodder-3.9.0/po/ro.po0000644000016000001710000016212512654461625015701 0ustar jenkinsjenkins00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # # Translators: msgid "" msgstr "" "Project-Id-Version: gPodder\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2016-02-03 20:31+0000\n" "PO-Revision-Date: 2013-01-19 12:31+0000\n" "Last-Translator: Thomas Perl \n" "Language-Team: LANGUAGE \n" "Language: ro\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=3; plural=(n==1?0:(((n%100>19)||((n%100==0)&&(n!=0)))?" "2:1));\n" #: src/gpodder/config.py:55 #, python-format msgid "gPodder on %s" msgstr "gPodder pe %s" #: src/gpodder/directory.py:95 #, fuzzy msgid "gpodder.net search" msgstr "Mergi la gpodder.org" #: src/gpodder/directory.py:104 #, fuzzy msgid "OPML from web" msgstr "FiШ™iere OPML" #: src/gpodder/directory.py:113 #, fuzzy msgid "OPML file" msgstr "FiШ™iere OPML" #: src/gpodder/directory.py:122 share/gpodder/ui/gtk/gpodderwelcome.ui.h:1 #, fuzzy msgid "Getting started" msgstr "Setare" #: src/gpodder/directory.py:131 #, fuzzy msgid "gpodder.net Top 50" msgstr "Mergi la gpodder.org" #: src/gpodder/directory.py:140 #, fuzzy msgid "gpodder.net Tags" msgstr "Mergi la gpodder.org" #: src/gpodder/directory.py:152 #, fuzzy msgid "Soundcloud search" msgstr "%s pe Soundcloud" #: src/gpodder/directory.py:165 #, fuzzy msgid "Imported OPML file" msgstr "ImportФƒ din fiШ™ier OPML" #: src/gpodder/download.py:329 msgid "Wrong username/password" msgstr "Numele sau parola este greШ™itФƒ" #: src/gpodder/download.py:527 src/gpodder/sync.py:924 msgid "Added" msgstr "AdФƒugat" #: src/gpodder/download.py:527 src/gpodder/sync.py:924 msgid "Queued" msgstr "AdФƒugat УЎn coada de aШ™teptare" #: src/gpodder/download.py:527 src/gpodder/gtkui/model.py:327 msgid "Downloading" msgstr "Se descarcФƒ" #: src/gpodder/download.py:528 src/gpodder/model.py:721 #: src/gpodder/sync.py:925 msgid "Finished" msgstr "Gata" #: src/gpodder/download.py:528 src/gpodder/sync.py:925 msgid "Failed" msgstr "EШ™uat" #: src/gpodder/download.py:528 src/gpodder/sync.py:925 msgid "Cancelled" msgstr "Sa renunШ›at" #: src/gpodder/download.py:528 src/gpodder/sync.py:925 msgid "Paused" msgstr "УŽntrerupt temporar" #: src/gpodder/download.py:862 msgid "Missing content from server" msgstr "ConШ›inutul lipseste de pe server" #: src/gpodder/download.py:868 #, python-format msgid "I/O Error: %(error)s: %(filename)s" msgstr "Eroare I/O: %(error)s: %(filename)s" #: src/gpodder/download.py:875 #, python-format msgid "HTTP Error %(code)s: %(message)s" msgstr "Eroare HTTP %(code)s: %(message)s" #: src/gpodder/download.py:879 src/gpodder/sync.py:1081 #, python-format msgid "Error: %s" msgstr "Eroare: %s" #: src/gpodder/extensions.py:55 msgid "Desktop Integration" msgstr "" #: src/gpodder/extensions.py:56 #, fuzzy msgid "Interface" msgstr "УŽntreg" #: src/gpodder/extensions.py:57 #, fuzzy msgid "Post download" msgstr "УŽntrerupe descФƒrcarea" #: src/gpodder/extensions.py:59 src/gpodder/model.py:779 #: src/gpodder/model.py:1225 msgid "Other" msgstr "Altele" #: src/gpodder/extensions.py:100 #, fuzzy msgid "No description for this extension." msgstr "Nu existФƒ disponibilФƒ nici o descriere." #: src/gpodder/extensions.py:212 #, python-format msgid "Command not found: %(command)s" msgstr "" #: src/gpodder/extensions.py:228 #, python-format msgid "Need at least one of the following commands: %(list_of_commands)s" msgstr "" #: src/gpodder/extensions.py:265 #, fuzzy, python-format msgid "Python module not found: %(module)s" msgstr "Modulul Python \"%s\" nu este instalat" #: src/gpodder/model.py:446 src/gpodder/plugins/soundcloud.py:156 msgid "No description available" msgstr "Nu existФƒ descriere" #: src/gpodder/model.py:679 msgid "unknown" msgstr "necunoscut" #: src/gpodder/model.py:746 msgid "Default" msgstr "" #: src/gpodder/model.py:747 msgid "Only keep latest" msgstr "" #: src/gpodder/model.py:1208 src/gpodder/model.py:1223 #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:10 msgid "Video" msgstr "" #: src/gpodder/model.py:1221 msgid "Audio" msgstr "" #: src/gpodder/my.py:174 #, python-format msgid "Add %s" msgstr "AdaugФƒ %s" #: src/gpodder/my.py:176 #, python-format msgid "Remove %s" msgstr "УŽndepФƒrteazФƒ %s" #: src/gpodder/sync.py:196 msgid "Cancelled by user" msgstr "Utilizatorul a renunШ›at" #: src/gpodder/sync.py:199 msgid "Writing data to disk" msgstr "Datele sunt scrise pe disc" #: src/gpodder/sync.py:295 msgid "Opening iPod database" msgstr "Deschide baza de date iPod" #: src/gpodder/sync.py:305 msgid "iPod opened" msgstr "iPod este deschis" #: src/gpodder/sync.py:316 msgid "Saving iPod database" msgstr "SalveazФƒ baza de date iPod" #: src/gpodder/sync.py:321 msgid "Writing extended gtkpod database" msgstr "" #: src/gpodder/sync.py:397 src/gpodder/sync.py:680 src/gpodder/sync.py:874 #, python-format msgid "Removing %s" msgstr "УŽndeparteaza %s" #: src/gpodder/sync.py:412 src/gpodder/sync.py:557 #, python-format msgid "Adding %s" msgstr "Adauga %s" #: src/gpodder/sync.py:430 #, python-format msgid "Error copying %(episode)s: Not enough free space on %(mountpoint)s" msgstr "" "Eroare la copierea %(episode)s: Nu existФƒ suficient spaШ›iu liber pe " "%(mountpoint)s" #: src/gpodder/sync.py:515 msgid "Opening MP3 player" msgstr "Deschide player MP3" #: src/gpodder/sync.py:518 msgid "MP3 player opened" msgstr "Player-ul MP3 deschis" #: src/gpodder/sync.py:576 #, python-format msgid "" "Not enough space in %(path)s: %(free)s available, but need at least %(need)s" msgstr "" #: src/gpodder/sync.py:603 src/gpodder/sync.py:611 #, python-format msgid "Error opening %(filename)s: %(message)s" msgstr "Eroare la deschiderea %(filename)s: %(message)s" #: src/gpodder/sync.py:780 src/gpodder/sync.py:786 msgid "MTP device" msgstr "Dispozitiv MTP" #: src/gpodder/sync.py:793 msgid "Opening the MTP device" msgstr "Deschide dispozitivul MTP" #: src/gpodder/sync.py:803 #, python-format msgid "%s opened" msgstr "%s deschis" #: src/gpodder/sync.py:808 #, python-format msgid "Closing %s" msgstr "УŽnchide %s" #: src/gpodder/sync.py:816 #, python-format msgid "%s closed" msgstr "%s УЎnchis" #: src/gpodder/sync.py:821 bin/gpo:708 #, python-format msgid "Adding %s..." msgstr "AdaugФƒ %s..." #: src/gpodder/sync.py:924 #, fuzzy msgid "Synchronizing" msgstr "Sincronizare" #: src/gpodder/util.py:429 #, python-format msgid "%(count)d day ago" msgid_plural "%(count)d days ago" msgstr[0] "" msgstr[1] "" msgstr[2] "" #: src/gpodder/util.py:508 msgid "Today" msgstr "AstФƒzi" #: src/gpodder/util.py:510 msgid "Yesterday" msgstr "Ieri" #: src/gpodder/util.py:553 src/gpodder/util.py:556 msgid "(unknown)" msgstr "(necunoscut)" #: src/gpodder/util.py:1193 src/gpodder/util.py:1212 #, python-format msgid "%(count)d second" msgid_plural "%(count)d seconds" msgstr[0] "" msgstr[1] "" msgstr[2] "" #: src/gpodder/util.py:1206 #, python-format msgid "%(count)d hour" msgid_plural "%(count)d hours" msgstr[0] "" msgstr[1] "" msgstr[2] "" #: src/gpodder/util.py:1209 #, python-format msgid "%(count)d minute" msgid_plural "%(count)d minutes" msgstr[0] "" msgstr[1] "" msgstr[2] "" #: src/gpodder/util.py:1215 msgid "and" msgstr "Ш™i" #: src/gpodder/gtkui/config.py:50 msgid "Integer" msgstr "УŽntreg" #: src/gpodder/gtkui/config.py:52 msgid "Float" msgstr "VirgulФƒ mobilФƒ" #: src/gpodder/gtkui/config.py:54 msgid "Boolean" msgstr "Binar" #: src/gpodder/gtkui/config.py:56 msgid "String" msgstr "ؘir de caractere" #: src/gpodder/gtkui/desktopfile.py:70 #, python-format msgid "Command: %s" msgstr "Linie de comandФƒ: %s" #: src/gpodder/gtkui/desktopfile.py:150 msgid "Default application" msgstr "AplicaШ›ia implicitФƒ" #: src/gpodder/gtkui/main.py:205 share/applications/gpodder.desktop.in.h:1 msgid "gPodder" msgstr "gPodder" #: src/gpodder/gtkui/main.py:288 msgid "Loading incomplete downloads" msgstr "Se УЎncarcФƒ descФƒrcФƒrile incomplete" #: src/gpodder/gtkui/main.py:289 msgid "Some episodes have not finished downloading in a previous session." msgstr "" "Unele episoade nu au fost descФƒrcate complet УЎntr-o sesiune anterioarФƒ." #: src/gpodder/gtkui/main.py:291 #, python-format msgid "%(count)d partial file" msgid_plural "%(count)d partial files" msgstr[0] "" msgstr[1] "" msgstr[2] "" #: src/gpodder/gtkui/main.py:306 msgid "Resume all" msgstr "Reia roate descФƒrcФƒrile" #: src/gpodder/gtkui/main.py:316 msgid "Incomplete downloads from a previous session were found." msgstr "Au fost gФƒsite descФƒrcФƒri incomplete dintr-o sesiune anterioarФƒ." #: src/gpodder/gtkui/main.py:414 msgid "Action" msgstr "AcШ›iune" #: src/gpodder/gtkui/main.py:461 msgid "Confirm changes from gpodder.net" msgstr "ConfirmФƒ modificФƒrile de la my.gpodder.org" #: src/gpodder/gtkui/main.py:462 msgid "Select the actions you want to carry out." msgstr "SelecteazФƒ acШ›iunea doritФƒ" #: src/gpodder/gtkui/main.py:502 msgid "Uploading subscriptions" msgstr "УŽncarcФƒ abonamentele" #: src/gpodder/gtkui/main.py:503 msgid "Your subscriptions are being uploaded to the server." msgstr "Abonamentele sunt УЎncФƒrcate pe server" #: src/gpodder/gtkui/main.py:508 msgid "List uploaded successfully." msgstr "Lista a fost УЎncФƒrcatФƒ cu succes" #: src/gpodder/gtkui/main.py:515 msgid "Error while uploading" msgstr "Eroare la УЎncФƒrcare" #: src/gpodder/gtkui/main.py:800 src/gpodder/gtkui/main.py:928 #: src/gpodder/gtkui/main.py:2622 src/gpodder/gtkui/main.py:2815 #: src/gpodder/gtkui/desktop/episodeselector.py:132 #: src/gpodder/gtkui/desktop/sync.py:270 msgid "Episode" msgstr "Episod" #: src/gpodder/gtkui/main.py:819 msgid "Size" msgstr "MФƒrime" #: src/gpodder/gtkui/main.py:824 msgid "Duration" msgstr "" #: src/gpodder/gtkui/main.py:828 msgid "Released" msgstr "Publicat" #: src/gpodder/gtkui/main.py:855 msgid "Visible columns" msgstr "" #: src/gpodder/gtkui/main.py:948 src/gpodder/gtkui/main.py:1108 #: share/gpodder/ui/gtk/gpodder.ui.h:45 msgid "Progress" msgstr "Progres" #: src/gpodder/gtkui/main.py:982 msgid "Loading episodes" msgstr "УŽncarcФƒ episoade" #: src/gpodder/gtkui/main.py:985 msgid "No episodes in current view" msgstr "Nu existФƒ episoade УЎn vizualizarea curentФƒ" #: src/gpodder/gtkui/main.py:987 msgid "No episodes available" msgstr "Nu existФƒ episoade disponibile" #: src/gpodder/gtkui/main.py:993 msgid "No podcasts in this view" msgstr "Nu existФƒ podcast-uri УЎn aceasta vizualizare" #: src/gpodder/gtkui/main.py:995 msgid "No subscriptions" msgstr "Nu existФƒ abonamente" #: src/gpodder/gtkui/main.py:997 #, fuzzy msgid "No active tasks" msgstr "Nu se descarcФƒ nimic" #: src/gpodder/gtkui/main.py:1112 src/gpodder/gtkui/main.py:1114 #, python-format msgid "%(count)d active" msgid_plural "%(count)d active" msgstr[0] "" msgstr[1] "" msgstr[2] "" #: src/gpodder/gtkui/main.py:1116 #, python-format msgid "%(count)d failed" msgid_plural "%(count)d failed" msgstr[0] "" msgstr[1] "" msgstr[2] "" #: src/gpodder/gtkui/main.py:1118 #, python-format msgid "%(count)d queued" msgid_plural "%(count)d queued" msgstr[0] "" msgstr[1] "" msgstr[2] "" #: src/gpodder/gtkui/main.py:1132 #, python-format msgid "downloading %(count)d file" msgid_plural "downloading %(count)d files" msgstr[0] "" msgstr[1] "" msgstr[2] "" #: src/gpodder/gtkui/main.py:1142 #, python-format msgid "synchronizing %(count)d file" msgid_plural "synchronizing %(count)d files" msgstr[0] "" msgstr[1] "" msgstr[2] "" #: src/gpodder/gtkui/main.py:1144 #, python-format msgid "%(queued)d task queued" msgid_plural "%(queued)d tasks queued" msgstr[0] "" msgstr[1] "" msgstr[2] "" #: src/gpodder/gtkui/main.py:1168 msgid "Please report this problem and restart gPodder:" msgstr "RaportaШ›i aceasta problema Ш™i reporniШ›i gPodder:" #: src/gpodder/gtkui/main.py:1168 msgid "Unhandled exception" msgstr "ExcepШ›ie netratatФƒ" #: src/gpodder/gtkui/main.py:1235 #, python-format msgid "Feedparser error: %s" msgstr "Eroare de parser: %s " #: src/gpodder/gtkui/main.py:1371 #, fuzzy msgid "Could not download some episodes:" msgstr "Anumite podcast-uri nu au fost adФƒugate" #: src/gpodder/gtkui/main.py:1373 src/gpodder/gtkui/main.py:1376 msgid "Downloads finished" msgstr "DescФƒrcФƒrile sau УЎncheiat" #: src/gpodder/gtkui/main.py:1379 msgid "Downloads failed" msgstr "DescФƒrcФƒrile au eШ™uate" #: src/gpodder/gtkui/main.py:1383 #, fuzzy msgid "Could not sync some episodes:" msgstr "Anumite podcast-uri nu au fost adФƒugate" #: src/gpodder/gtkui/main.py:1385 src/gpodder/gtkui/main.py:1388 #, fuzzy msgid "Device synchronization finished" msgstr "Dispozitiv sincronizat" #: src/gpodder/gtkui/main.py:1391 #, fuzzy msgid "Device synchronization failed" msgstr "Dispozitiv sincronizat" #: src/gpodder/gtkui/main.py:1434 #, python-format msgid "%(count)d more episode" msgid_plural "%(count)d more episodes" msgstr[0] "" msgstr[1] "" msgstr[2] "" #: src/gpodder/gtkui/main.py:1508 msgid "Start download now" msgstr "УŽncepe descФƒrcФƒrile acum" #: src/gpodder/gtkui/main.py:1510 src/gpodder/gtkui/main.py:1719 #: src/gpodder/gtkui/desktop/episodeselector.py:144 #: share/gpodder/ui/gtk/gpodder.ui.h:20 msgid "Download" msgstr "DescФƒrcare" #: src/gpodder/gtkui/main.py:1511 share/gpodder/ui/gtk/gpodder.ui.h:21 msgid "Cancel" msgstr "RenunШ›Фƒ" #: src/gpodder/gtkui/main.py:1512 msgid "Pause" msgstr "УŽntrerupt temporar" #: src/gpodder/gtkui/main.py:1514 msgid "Remove from list" msgstr "EliminФƒ din listФƒ" #: src/gpodder/gtkui/main.py:1553 share/gpodder/ui/gtk/gpodder.ui.h:13 msgid "Update podcast" msgstr "ActualizeazФƒ podcast" #: src/gpodder/gtkui/main.py:1560 msgid "Open download folder" msgstr "Deschide directorul de descФƒrcare" #: src/gpodder/gtkui/main.py:1566 #, fuzzy msgid "Mark episodes as old" msgstr "MarcheazФƒ episodul ca redat" #: src/gpodder/gtkui/main.py:1570 src/gpodder/gtkui/main.py:1778 msgid "Archive" msgstr "" #: src/gpodder/gtkui/main.py:1575 #, fuzzy msgid "Remove podcast" msgstr "УŽndepФƒrteazФƒ podcast-urile" #: src/gpodder/gtkui/main.py:1590 share/gpodder/ui/gtk/gpodder.ui.h:10 msgid "Podcast settings" msgstr "SetФƒri podcast" #: src/gpodder/gtkui/main.py:1650 msgid "Error converting file." msgstr "Eroare de conversie a fiШ™ierului." #: src/gpodder/gtkui/main.py:1650 msgid "Bluetooth file transfer" msgstr "Transfer fiШ™ier prin bluetooth" #: src/gpodder/gtkui/main.py:1709 msgid "Preview" msgstr "" #: src/gpodder/gtkui/main.py:1711 msgid "Stream" msgstr "Flux" #: src/gpodder/gtkui/main.py:1755 #, fuzzy msgid "Send to" msgstr "SetaШ›i pentru a" #: src/gpodder/gtkui/main.py:1757 msgid "Local folder" msgstr "" #: src/gpodder/gtkui/main.py:1762 #, fuzzy msgid "Bluetooth device" msgstr "SelecteazФƒ tipul de dispozitiv" #: src/gpodder/gtkui/main.py:1769 msgid "New" msgstr "" #: src/gpodder/gtkui/main.py:1785 share/gpodder/ui/gtk/gpodder.ui.h:25 msgid "Episode details" msgstr "Detalii despre episod" #: src/gpodder/gtkui/main.py:1938 msgid "Please check your media player settings in the preferences dialog." msgstr "VerificФƒ УЎn preferinШ›e setФƒrile player-ului media." #: src/gpodder/gtkui/main.py:1939 msgid "Error opening player" msgstr "Eroare la deschiderea player-ului" #: src/gpodder/gtkui/main.py:2178 msgid "Adding podcasts" msgstr "Se adaugФƒ podcast-uri" #: src/gpodder/gtkui/main.py:2179 msgid "Please wait while episode information is downloaded." msgstr "Astepta-Ш›i descФƒrcarea informaШ›iilor despre episod." #: src/gpodder/gtkui/main.py:2186 msgid "Existing subscriptions skipped" msgstr "Abonamente care nu au fost descФƒrcate" #: src/gpodder/gtkui/main.py:2187 msgid "You are already subscribed to these podcasts:" msgstr "La aceste podcast-uri existФƒ deja abonamente:" #: src/gpodder/gtkui/main.py:2195 msgid "Podcast requires authentication" msgstr "Acest podcast necesitФƒ autentificare" #: src/gpodder/gtkui/main.py:2196 #, python-format msgid "Please login to %s:" msgstr "Autentificare necesarФƒ pentru %s:" #: src/gpodder/gtkui/main.py:2204 src/gpodder/gtkui/main.py:2299 msgid "Authentication failed" msgstr "Autentificarea a eШ™uat" #: src/gpodder/gtkui/main.py:2210 msgid "Website redirection detected" msgstr "A fost detectatФƒ o redirecШ›ionare a paginii web" #: src/gpodder/gtkui/main.py:2211 #, python-format msgid "The URL %(url)s redirects to %(target)s." msgstr "URL-ul %(url)s vФƒ trimite la %(target)s." #: src/gpodder/gtkui/main.py:2212 msgid "Do you want to visit the website now?" msgstr "DoriШ›i sФƒ vizitaШ›i pagina de web acum?" #: src/gpodder/gtkui/main.py:2221 msgid "Could not add some podcasts" msgstr "Anumite podcast-uri nu au fost adФƒugate" #: src/gpodder/gtkui/main.py:2222 msgid "Some podcasts could not be added to your list:" msgstr "Anumite podcast-uri nu au fost adФƒugate УЎn listФƒ:" #: src/gpodder/gtkui/main.py:2224 msgid "Unknown" msgstr "Necunoscut" #: src/gpodder/gtkui/main.py:2308 msgid "Redirection detected" msgstr "Sa detectat o redirecШ›ionare" #: src/gpodder/gtkui/main.py:2342 #, fuzzy msgid "Merging episode actions" msgstr "SelectaШ›i episoadele" #: src/gpodder/gtkui/main.py:2343 #, fuzzy msgid "Episode actions from gpodder.net are merged." msgstr "DescarcФƒ abonamentele de la my.gpodder.org" #: src/gpodder/gtkui/main.py:2368 msgid "Cancelling..." msgstr "RenunШ›are..." #: src/gpodder/gtkui/main.py:2377 msgid "Please connect to a network, then try again." msgstr "" #: src/gpodder/gtkui/main.py:2378 #, fuzzy msgid "No network connection" msgstr "Nume nou:" #: src/gpodder/gtkui/main.py:2399 #, python-format msgid "Updating %(count)d feed..." msgid_plural "Updating %(count)d feeds..." msgstr[0] "" msgstr[1] "" msgstr[2] "" #: src/gpodder/gtkui/main.py:2417 #, python-format msgid "Error while updating %(url)s: %(message)s" msgstr "Eroare la aducerea la zi a %(url)s: %(message)s" #: src/gpodder/gtkui/main.py:2419 #, python-format msgid "The feed at %(url)s could not be updated." msgstr "Catalogul %(url)s nu a putut fi actualizat" #: src/gpodder/gtkui/main.py:2420 msgid "Error while updating feed" msgstr "Eroare la actualizarea feed-ului" #: src/gpodder/gtkui/main.py:2435 #, python-format msgid "Updated %(podcast)s (%(position)d/%(total)d)" msgstr "%(podcast)s adus la zi (%(position)d/%(total)d)" #: src/gpodder/gtkui/main.py:2466 msgid "No new episodes" msgstr "Nu existФƒ episoade noi." #: src/gpodder/gtkui/main.py:2479 #, python-format msgid "Downloading %(count)d new episode." msgid_plural "Downloading %(count)d new episodes." msgstr[0] "" msgstr[1] "" msgstr[2] "" #: src/gpodder/gtkui/main.py:2480 src/gpodder/gtkui/main.py:2484 #: src/gpodder/gtkui/main.py:2833 msgid "New episodes available" msgstr "Episoade noi sunt disponibile" #: src/gpodder/gtkui/main.py:2483 #, python-format msgid "%(count)d new episode added to download list." msgid_plural "%(count)d new episodes added to download list." msgstr[0] "" msgstr[1] "" msgstr[2] "" #: src/gpodder/gtkui/main.py:2490 #, python-format msgid "%(count)d new episode available" msgid_plural "%(count)d new episodes available" msgstr[0] "" msgstr[1] "" msgstr[2] "" #: src/gpodder/gtkui/main.py:2509 msgid "Quit gPodder" msgstr "УŽnchide gPodder" #: src/gpodder/gtkui/main.py:2510 msgid "" "You are downloading episodes. You can resume downloads the next time you " "start gPodder. Do you want to quit now?" msgstr "" "Se descarcФƒ episoade. Pute-Ш›i continua descФƒrcarea cФƒnd reporniШ›i gPodder." #: src/gpodder/gtkui/main.py:2559 msgid "Episodes are locked" msgstr "Episoadele sunt blocate" #: src/gpodder/gtkui/main.py:2560 msgid "" "The selected episodes are locked. Please unlock the episodes that you want " "to delete before trying to delete them." msgstr "" "Episoadele alese sunt blocate. DeblocaШ›i episoadele УЎnainte de a putea sa le " "Ш™tergeШ›i." #: src/gpodder/gtkui/main.py:2565 #, python-format msgid "Delete %(count)d episode?" msgid_plural "Delete %(count)d episodes?" msgstr[0] "" msgstr[1] "" msgstr[2] "" #: src/gpodder/gtkui/main.py:2566 #, fuzzy msgid "Deleting episodes removes downloaded files." msgstr "SelectaШ›i episoadele care trebuie УЎndepФƒrtate de pe dispozitiv." #: src/gpodder/gtkui/main.py:2571 #, fuzzy msgid "Deleting episodes" msgstr "SelectaШ›i episoadele" #: src/gpodder/gtkui/main.py:2572 msgid "Please wait while episodes are deleted" msgstr "AШ™teptaШ›i pУЂnФƒ cУЂnd episoadele au fost Ш™terse." #: src/gpodder/gtkui/main.py:2625 #, python-format msgid "Select older than %(count)d day" msgid_plural "Select older than %(count)d days" msgstr[0] "" msgstr[1] "" msgstr[2] "" #: src/gpodder/gtkui/main.py:2627 msgid "Select played" msgstr "SelecteazФƒ episoadele ascultate" #: src/gpodder/gtkui/main.py:2628 #, fuzzy msgid "Select finished" msgstr "Nu selecta nimic" #: src/gpodder/gtkui/main.py:2632 msgid "Select the episodes you want to delete:" msgstr "SelecteazФƒ episoadele ce trebuie Ш™terse:" #: src/gpodder/gtkui/main.py:2648 share/gpodder/ui/gtk/gpodder.ui.h:4 #, fuzzy msgid "Delete episodes" msgstr "УŽndepФƒrteazФƒ episoadele vechi" #: src/gpodder/gtkui/main.py:2703 src/gpodder/gtkui/main.py:2934 #: src/gpodder/gtkui/main.py:3034 msgid "No podcast selected" msgstr "Nici un podcast nu a fost selectat" #: src/gpodder/gtkui/main.py:2704 msgid "Please select a podcast in the podcasts list to update." msgstr "Selecteaza un podcast din listФƒ, ce trebuie adus la zi." #: src/gpodder/gtkui/main.py:2774 #, python-format msgid "Download error while downloading %(episode)s: %(message)s" msgstr "Eroare la descФƒrcarea %(episode)s: %(message)s" #: src/gpodder/gtkui/main.py:2775 msgid "Download error" msgstr "Eroare la descФƒrcare" #: src/gpodder/gtkui/main.py:2818 msgid "Select the episodes you want to download:" msgstr "SelecteazФƒ episoadele ce trebuie descФƒrcate:" #: src/gpodder/gtkui/main.py:2841 msgid "Mark as old" msgstr "Marcheaza ca vechi" #: src/gpodder/gtkui/main.py:2848 msgid "Please check for new episodes later." msgstr "VerificФƒ dacФƒ existФƒ episoade noi mai tУЂrziu. " #: src/gpodder/gtkui/main.py:2849 msgid "No new episodes available" msgstr "Nu existФƒ episoade noi" #: src/gpodder/gtkui/main.py:2900 #, fuzzy msgid "Login to gpodder.net" msgstr "Mergi la gpodder.org" #: src/gpodder/gtkui/main.py:2901 msgid "Please login to download your subscriptions." msgstr "" #: src/gpodder/gtkui/main.py:2916 #, fuzzy msgid "Subscriptions on gpodder.net" msgstr "Abonamente УЎncФƒrcate." #: src/gpodder/gtkui/main.py:2935 msgid "Please select a podcast in the podcasts list to edit." msgstr "SelecteazФƒ un podcast din listФƒ pentru a fi editat." #: src/gpodder/gtkui/main.py:2949 msgid "Podcast" msgstr "Podcast" #: src/gpodder/gtkui/main.py:2955 share/gpodder/ui/gtk/gpodder.ui.h:12 msgid "Remove podcasts" msgstr "УŽndepФƒrteazФƒ podcast-urile" #: src/gpodder/gtkui/main.py:2956 msgid "Select the podcast you want to remove." msgstr "SelectaШ›i podcast-ul dorit pentru a fi Ш™ters" #: src/gpodder/gtkui/main.py:2960 #: src/gpodder/gtkui/desktop/episodeselector.py:105 msgid "Remove" msgstr "УŽndepФƒrteazФƒ" #: src/gpodder/gtkui/main.py:2969 msgid "Removing podcast" msgstr "УŽndepФƒrteazФƒ podcast-ul" #: src/gpodder/gtkui/main.py:2970 msgid "Please wait while the podcast is removed" msgstr "AШ™teptaШ›i pУЂnФƒ la УЎndepФƒrtarea podcast-ului." #: src/gpodder/gtkui/main.py:2971 msgid "Do you really want to remove this podcast and its episodes?" msgstr "DoriШ›i sФƒ УЎndepФƒrtaШ›i acest podcast УЎmpreunФƒ cu toate episoadele?" #: src/gpodder/gtkui/main.py:2973 msgid "Removing podcasts" msgstr "Se УЎndepФƒrteazФƒ podcast-uri" #: src/gpodder/gtkui/main.py:2974 msgid "Please wait while the podcasts are removed" msgstr "AШ™teptaШ›i pУЂnФƒ la УЎndepФƒrtarea podcast-ului" #: src/gpodder/gtkui/main.py:2975 msgid "Do you really want to remove the selected podcasts and their episodes?" msgstr "DoriШ›i sФƒ УЎndepФƒrtaШ›i acest podcast УЎmpreunФƒ cu toate episoadele?" #: src/gpodder/gtkui/main.py:3035 msgid "Please select a podcast in the podcasts list to remove." msgstr "SelecteazФƒ un podcast din listФƒ pentru a fi УЎndepartat." #: src/gpodder/gtkui/main.py:3045 msgid "OPML files" msgstr "FiШ™iere OPML" #: src/gpodder/gtkui/main.py:3050 msgid "Import from OPML" msgstr "ImportФƒ din OPML" #: src/gpodder/gtkui/main.py:3064 msgid "Import podcasts from OPML file" msgstr "ImportФƒ podcast-uri din fiШ™iere OPML" #: src/gpodder/gtkui/main.py:3071 msgid "Nothing to export" msgstr "Nimic de exportat" #: src/gpodder/gtkui/main.py:3072 msgid "" "Your list of podcast subscriptions is empty. Please subscribe to some " "podcasts first before trying to export your subscription list." msgstr "" "Lista de abonamente pentru podcast-uri este goalФƒ. AboneazФƒ-te la podcast-" "uri УЎnainte de a УЎncerca sФƒ exporШ›i lista." #: src/gpodder/gtkui/main.py:3076 msgid "Export to OPML" msgstr "Export cФƒtre OPML" #: src/gpodder/gtkui/main.py:3087 #, python-format msgid "%(count)d subscription exported" msgid_plural "%(count)d subscriptions exported" msgstr[0] "" msgstr[1] "" msgstr[2] "" #: src/gpodder/gtkui/main.py:3088 msgid "Your podcast list has been successfully exported." msgstr "Lista de podcast-uri a fost exportatФƒ cu success." #: src/gpodder/gtkui/main.py:3090 msgid "Could not export OPML to file. Please check your permissions." msgstr "Nu s-a putut exporta OPML УЎn fiШ™ier. VerificaШ›i permisiunea." #: src/gpodder/gtkui/main.py:3090 msgid "OPML export failed" msgstr "Exportul OPML a eШ™uat" #: src/gpodder/gtkui/main.py:3117 #, fuzzy msgid "No updates available" msgstr "Nu existФƒ episoade disponibile" #: src/gpodder/gtkui/main.py:3118 msgid "You have the latest version of gPodder." msgstr "" #: src/gpodder/gtkui/main.py:3122 #, fuzzy msgid "New version available" msgstr "Episoade noi sunt disponibile" #: src/gpodder/gtkui/main.py:3124 #, python-format msgid "Installed version: %s" msgstr "" #: src/gpodder/gtkui/main.py:3125 #, fuzzy, python-format msgid "Newest version: %s" msgstr "Se Ш™terg: %s" #: src/gpodder/gtkui/main.py:3126 #, fuzzy, python-format msgid "Release date: %s" msgstr "Publicat: %s" #: src/gpodder/gtkui/main.py:3128 #, fuzzy msgid "Download the latest version from gpodder.org?" msgstr "DescarcФƒ abonamentele de la my.gpodder.org" #: src/gpodder/gtkui/main.py:3141 #, fuzzy msgid "About gPodder" msgstr "УŽnchide gPodder" #: src/gpodder/gtkui/main.py:3424 #, fuzzy msgid "Please register a YouTube API key and set it in the preferences." msgstr "Seta-Ш›i dispozitivul УЎn dialogul \"PreferinШ›e\"." #: src/gpodder/gtkui/main.py:3425 msgid "Would you like to set up an API key now?" msgstr "" #: src/gpodder/gtkui/main.py:3425 msgid "API key required" msgstr "" #: src/gpodder/gtkui/main.py:3444 bin/gpo:631 #, fuzzy msgid "No unique URL found" msgstr "Nu a fost gФƒsit nici un canal" #: src/gpodder/gtkui/main.py:3449 bin/gpo:637 #, fuzzy msgid "Already subscribed" msgstr "Nu se poate sincroniza dispozitivul iPod" #: src/gpodder/gtkui/main.py:3458 bin/gpo:649 #, python-format msgid "Make sure the API key is correct. Error: %(message)s" msgstr "" #: src/gpodder/gtkui/main.py:3459 #, fuzzy msgid "Error getting YouTube channels" msgstr "Eroare la setarea opШ›iunii %s" #: src/gpodder/gtkui/main.py:3462 msgid "Successfully migrated subscriptions" msgstr "" #: src/gpodder/gtkui/main.py:3464 #, fuzzy msgid "Subscriptions are up to date" msgstr "A_bonamente" #: src/gpodder/gtkui/main.py:3467 msgid "These URLs failed:" msgstr "" #: src/gpodder/gtkui/main.py:3469 #, fuzzy msgid "Could not migrate some subscriptions" msgstr "Anumite podcast-uri nu au fost adФƒugate" #: src/gpodder/gtkui/main.py:3493 msgid "Cannot start gPodder" msgstr "gPodder nu poate fi pornit" #: src/gpodder/gtkui/main.py:3494 #, python-format msgid "D-Bus error: %s" msgstr "Eroare D-Bus: %s" #: src/gpodder/gtkui/model.py:68 #, python-format msgid "released %s" msgstr "publicat %s" #: src/gpodder/gtkui/model.py:69 src/gpodder/gtkui/model.py:87 #: src/gpodder/gtkui/model.py:237 src/gpodder/gtkui/shownotes.py:84 #, python-format msgid "from %s" msgstr "de cФƒtre %s" #: src/gpodder/gtkui/model.py:80 src/gpodder/gtkui/model.py:393 msgid "played" msgstr "derulat" #: src/gpodder/gtkui/model.py:82 msgid "unplayed" msgstr "nederulat" #: src/gpodder/gtkui/model.py:85 msgid "today" msgstr "AstФƒzi" #: src/gpodder/gtkui/model.py:86 #, python-format msgid "downloaded %s" msgstr "descФƒrcate %s" #: src/gpodder/gtkui/model.py:337 msgid "Deleted" msgstr "ؘters" #: src/gpodder/gtkui/model.py:342 msgid "New episode" msgstr "Episod nou" #: src/gpodder/gtkui/model.py:356 msgid "Downloaded episode" msgstr "Episoade descФƒrcate" #: src/gpodder/gtkui/model.py:359 msgid "Downloaded video episode" msgstr "Episoade video descФƒrcate" #: src/gpodder/gtkui/model.py:362 msgid "Downloaded image" msgstr "Imagine descФƒrcatФƒ" #: src/gpodder/gtkui/model.py:365 msgid "Downloaded file" msgstr "FiШ™ier descФƒrcat" #: src/gpodder/gtkui/model.py:380 msgid "missing file" msgstr "fiШ™ier lipsФƒ" #: src/gpodder/gtkui/model.py:384 msgid "never displayed" msgstr "niciodatФƒ afiШ™at" #: src/gpodder/gtkui/model.py:386 msgid "never played" msgstr "niciodatФƒ ascultat" #: src/gpodder/gtkui/model.py:388 msgid "never opened" msgstr "niciodatФƒ deschis" #: src/gpodder/gtkui/model.py:391 msgid "displayed" msgstr "afiШ™at" #: src/gpodder/gtkui/model.py:395 msgid "opened" msgstr "deschis" #: src/gpodder/gtkui/model.py:397 msgid "deletion prevented" msgstr "Ш™tergere prevenitФƒ" #: src/gpodder/gtkui/model.py:432 share/gpodder/ui/gtk/gpodder.ui.h:32 msgid "All episodes" msgstr "Toate episoadele" #: src/gpodder/gtkui/model.py:433 msgid "from all podcasts" msgstr "din toate podcast-urile" #: src/gpodder/gtkui/model.py:625 #, fuzzy msgid "Subscription paused" msgstr "A_bonamente" #: src/gpodder/gtkui/shownotes.py:118 #, fuzzy msgid "Please select an episode" msgstr "SelectaШ›i episoadele" #: src/gpodder/gtkui/interface/addpodcast.py:74 msgid "Nothing to paste." msgstr "Nimic de lipit" #: src/gpodder/gtkui/interface/addpodcast.py:74 msgid "Clipboard is empty" msgstr "Tabelul de lipire este gol" #: src/gpodder/gtkui/interface/common.py:160 msgid "Username" msgstr "Nume utilizator" #: src/gpodder/gtkui/interface/common.py:163 msgid "New user" msgstr "Utilizator nou" #: src/gpodder/gtkui/interface/common.py:170 msgid "Login" msgstr "УŽnregistrare" #: src/gpodder/gtkui/interface/common.py:172 msgid "Authentication required" msgstr "Este necesarФƒ autentificarea" #: src/gpodder/gtkui/interface/common.py:203 msgid "Password" msgstr "ParolФƒ" #: src/gpodder/gtkui/interface/common.py:225 msgid "Select destination" msgstr "SelecteazФƒ destinaШ›ia" #: src/gpodder/gtkui/interface/configeditor.py:34 msgid "Setting" msgstr "Setare" #: src/gpodder/gtkui/interface/configeditor.py:41 msgid "Set to" msgstr "SetaШ›i pentru a" #: src/gpodder/gtkui/interface/configeditor.py:81 #, python-format msgid "Cannot set %(field)s to %(value)s. Needed data type: %(datatype)s" msgstr "" "Nu poate fi setatФƒ %(field)s la %(value)s. Este necesar tipul de datФƒ:" "%(datatype)s" #: src/gpodder/gtkui/interface/configeditor.py:85 msgid "Error setting option" msgstr "Eroare la setarea opШ›iunii %s" #: src/gpodder/gtkui/desktop/channel.py:100 #, fuzzy msgid "Add section" msgstr "AcШ›iune" #: src/gpodder/gtkui/desktop/channel.py:100 #, fuzzy msgid "New section:" msgstr "Nume nou:" #: src/gpodder/gtkui/desktop/channel.py:133 msgid "Select new podcast cover artwork" msgstr "SelecteazФƒ o noua copertФƒ pentru podcast" #: src/gpodder/gtkui/desktop/channel.py:161 msgid "You can only drop a single image or URL here." msgstr "Nu puteШ›i folosi decУЂt un singurФƒ o imagine sau URL aici." #: src/gpodder/gtkui/desktop/channel.py:161 #: src/gpodder/gtkui/desktop/channel.py:171 msgid "Drag and drop" msgstr "Drag and drop" #: src/gpodder/gtkui/desktop/channel.py:171 msgid "You can only drop local files and http:// URLs here." msgstr "" "УŽn acest loc nu puteШ›i folosi decУЂt fiШ™iere locale Ш™i URL-uri de tip http:// " #: src/gpodder/gtkui/desktop/deviceplaylist.py:98 #, fuzzy, python-format msgid "Folder %s could not be created." msgstr "Catalogul %(url)s nu a putut fi actualizat" #: src/gpodder/gtkui/desktop/deviceplaylist.py:98 #, fuzzy msgid "Error writing playlist" msgstr "Eroare la deschiderea player-ului" #: src/gpodder/gtkui/desktop/episodeselector.py:288 #: share/gpodder/ui/gtk/gpodderepisodeselector.ui.h:2 msgid "Select all" msgstr "SelecteazФƒ totul" #: src/gpodder/gtkui/desktop/episodeselector.py:292 #: share/gpodder/ui/gtk/gpodderepisodeselector.ui.h:3 msgid "Select none" msgstr "Nu selecta nimic" #: src/gpodder/gtkui/desktop/episodeselector.py:324 msgid "Nothing selected" msgstr "Nimic nu este selectat" #: src/gpodder/gtkui/desktop/episodeselector.py:325 #, python-format msgid "%(count)d episode" msgid_plural "%(count)d episodes" msgstr[0] "" msgstr[1] "" msgstr[2] "" #: src/gpodder/gtkui/desktop/episodeselector.py:327 #, python-format msgid "size: %s" msgstr "mФƒrime: %s" #: src/gpodder/gtkui/desktop/podcastdirectory.py:238 #, fuzzy msgid "Loading podcasts" msgstr "Se adaugФƒ podcast-uri" #: src/gpodder/gtkui/desktop/podcastdirectory.py:239 #, fuzzy msgid "Please wait while the podcast list is downloaded" msgstr "AШ™teptaШ›i pУЂnФƒ la УЎndepФƒrtarea podcast-ului." #: src/gpodder/gtkui/desktop/preferences.py:51 #: src/gpodder/gtkui/desktop/preferences.py:93 msgid "Do nothing" msgstr "Nimic" #: src/gpodder/gtkui/desktop/preferences.py:52 msgid "Show episode list" msgstr "AfiШ™eazФƒ lista cu episoade" #: src/gpodder/gtkui/desktop/preferences.py:53 msgid "Add to download list" msgstr "AdaugФƒ УЎn lista de descФƒrcФƒri" #: src/gpodder/gtkui/desktop/preferences.py:54 msgid "Download immediately" msgstr "DescarcФƒ imediat" #: src/gpodder/gtkui/desktop/preferences.py:72 msgid "None" msgstr "Nimic" #: src/gpodder/gtkui/desktop/preferences.py:73 msgid "iPod" msgstr "" #: src/gpodder/gtkui/desktop/preferences.py:74 #, fuzzy msgid "Filesystem-based" msgstr "MP3 player bazat pe sistem de fiШ™iere" #: src/gpodder/gtkui/desktop/preferences.py:94 #, fuzzy msgid "Mark as played" msgstr "Marcat ca neascultat" #: src/gpodder/gtkui/desktop/preferences.py:95 #, fuzzy msgid "Delete from gPodder" msgstr "ؘterge episodul din gPodder" #: src/gpodder/gtkui/desktop/preferences.py:123 #, fuzzy, python-format msgid "Custom (%(format_ids)s)" msgstr "ؘiruri de caractere specifice" #: src/gpodder/gtkui/desktop/preferences.py:318 msgid "Name" msgstr "" #: src/gpodder/gtkui/desktop/preferences.py:369 msgid "Documentation" msgstr "" #: src/gpodder/gtkui/desktop/preferences.py:374 msgid "Extension info" msgstr "" #: src/gpodder/gtkui/desktop/preferences.py:379 msgid "Support the author" msgstr "" #: src/gpodder/gtkui/desktop/preferences.py:413 msgid "Extension cannot be activated" msgstr "" #: src/gpodder/gtkui/desktop/preferences.py:426 msgid "Extension module info" msgstr "" #: src/gpodder/gtkui/desktop/preferences.py:463 msgid "Configure audio player" msgstr "ConfigureazФƒ playerul audio" #: src/gpodder/gtkui/desktop/preferences.py:464 #: src/gpodder/gtkui/desktop/preferences.py:474 msgid "Command:" msgstr "Linie de comandФƒ:" #: src/gpodder/gtkui/desktop/preferences.py:473 msgid "Configure video player" msgstr "ConfigureazФƒ playerul video" #: src/gpodder/gtkui/desktop/preferences.py:485 #: src/gpodder/gtkui/desktop/preferences.py:503 msgid "manually" msgstr "manual" #: src/gpodder/gtkui/desktop/preferences.py:505 #, python-format msgid "after %(count)d day" msgid_plural "after %(count)d days" msgstr[0] "" msgstr[1] "" msgstr[2] "" #: src/gpodder/gtkui/desktop/preferences.py:541 msgid "Replace subscription list on server" msgstr "УŽnlocuieШ™te lista de abonamente pe server" #: src/gpodder/gtkui/desktop/preferences.py:542 msgid "" "Remote podcasts that have not been added locally will be removed on the " "server. Continue?" msgstr "" "Podcast-uri remote care nu au fost adФƒugate local vor fi УЎndepФƒrtate de pe " "server. ContinuaШ›i?" #: src/gpodder/gtkui/desktop/preferences.py:621 #, fuzzy msgid "Select folder for mount point" msgstr "Selecta-Ш›i locul de montare al iPod-ului." #: src/gpodder/gtkui/desktop/preferences.py:638 #, fuzzy msgid "Select folder for playlists" msgstr "Selecta-Ш›i locul de montare al iPod-ului." #: src/gpodder/gtkui/desktop/sync.py:86 msgid "No device configured" msgstr "Nici un dispozitiv configurat" #: src/gpodder/gtkui/desktop/sync.py:87 msgid "Please set up your device in the preferences dialog." msgstr "Seta-Ш›i dispozitivul УЎn dialogul \"PreferinШ›e\"." #: src/gpodder/gtkui/desktop/sync.py:91 msgid "Cannot open device" msgstr "Dispozitivul nu a putut fi citit" #: src/gpodder/gtkui/desktop/sync.py:92 msgid "Please check the settings in the preferences dialog." msgstr "VerificaШ›i setФƒrile din dialogul \"PreferinШ›e\"." #: src/gpodder/gtkui/desktop/sync.py:139 msgid "Not enough space left on device" msgstr "Nu existФƒ suficient spaШ›iu pe dispozitiv" #: src/gpodder/gtkui/desktop/sync.py:140 #, fuzzy, python-format msgid "" "Additional free space required: %(required_space)s\n" "Do you want to continue?" msgstr "" "Trebuie eliberat %s\n" "DoriШ›i sФƒ continuaШ›i?" #: src/gpodder/gtkui/desktop/sync.py:199 #, fuzzy msgid "Update successful" msgstr "Lista a fost УЎncФƒrcatФƒ cu succes" #: src/gpodder/gtkui/desktop/sync.py:200 msgid "The playlist on your MP3 player has been updated." msgstr "" #: src/gpodder/gtkui/desktop/sync.py:274 msgid "Episodes have been deleted on device" msgstr "" #: src/gpodder/gtkui/desktop/sync.py:285 #, fuzzy msgid "Error writing playlist files" msgstr "Eroare de conversie a fiШ™ierului." #: src/gpodder/plugins/soundcloud.py:154 msgid "Unknown track" msgstr "PiesФƒ necunoscutФƒ" #: src/gpodder/plugins/soundcloud.py:181 #, python-format msgid "%s on Soundcloud" msgstr "%s pe Soundcloud" #: src/gpodder/plugins/soundcloud.py:190 #, python-format msgid "Tracks published by %s on Soundcloud." msgstr "Piese publicate de %s УЎn Soundcloud." #: src/gpodder/plugins/soundcloud.py:217 #, fuzzy, python-format msgid "%s's favorites on Soundcloud" msgstr "%s pe Soundcloud" #: src/gpodder/plugins/soundcloud.py:223 #, fuzzy, python-format msgid "Tracks favorited by %s on Soundcloud." msgstr "Piese publicate de %s УЎn Soundcloud." #: share/gpodder/extensions/audio_converter.py:20 #, fuzzy msgid "Convert audio files" msgstr "Eroare de conversie a fiШ™ierului." #: share/gpodder/extensions/audio_converter.py:21 msgid "Transcode audio files to mp3/ogg" msgstr "" #: share/gpodder/extensions/audio_converter.py:84 #: share/gpodder/extensions/video_converter.py:86 #, python-format msgid "Convert to %(format)s" msgstr "" #: share/gpodder/extensions/audio_converter.py:111 #: share/gpodder/extensions/rockbox_convert2mp4.py:65 #: share/gpodder/extensions/video_converter.py:111 #, fuzzy msgid "File converted" msgstr "Convertor OGG pentru iPod" #: share/gpodder/extensions/audio_converter.py:114 #: share/gpodder/extensions/video_converter.py:114 #, fuzzy msgid "Conversion failed" msgstr "Eroare de conversie a fiШ™ierului." #: share/gpodder/extensions/concatenate_videos.py:20 #: share/gpodder/extensions/concatenate_videos.py:100 #, fuzzy msgid "Concatenate videos" msgstr "Eroare de conversie a fiШ™ierului." #: share/gpodder/extensions/concatenate_videos.py:21 msgid "Add a context menu item for concatenating multiple videos" msgstr "" #: share/gpodder/extensions/concatenate_videos.py:37 msgid "Save video" msgstr "" #: share/gpodder/extensions/concatenate_videos.py:66 #, fuzzy msgid "Concatenating video files" msgstr "Eroare de conversie a fiШ™ierului." #: share/gpodder/extensions/concatenate_videos.py:67 #, python-format msgid "Writing %(filename)s" msgstr "" #: share/gpodder/extensions/concatenate_videos.py:78 msgid "Videos successfully converted" msgstr "" #: share/gpodder/extensions/concatenate_videos.py:79 #, fuzzy msgid "Error converting videos" msgstr "Eroare de conversie a fiШ™ierului." #: share/gpodder/extensions/concatenate_videos.py:80 msgid "Concatenation result" msgstr "" #: share/gpodder/extensions/enqueue_in_mediaplayer.py:16 msgid "Enqueue in media players" msgstr "" #: share/gpodder/extensions/enqueue_in_mediaplayer.py:17 msgid "" "Add a context menu item for enqueueing episodes in installed media players" msgstr "" #: share/gpodder/extensions/enqueue_in_mediaplayer.py:35 msgid "Enqueue in" msgstr "" #: share/gpodder/extensions/episode_website_context_menu.py:14 msgid "\"Open website\" episode context menu" msgstr "" #: share/gpodder/extensions/episode_website_context_menu.py:15 msgid "Add a context menu item for opening the website of an episode" msgstr "" #: share/gpodder/extensions/episode_website_context_menu.py:30 #, fuzzy msgid "Open website" msgstr "PaginФƒ web:" #: share/gpodder/extensions/gtk_statusicon.py:14 msgid "Gtk Status Icon" msgstr "" #: share/gpodder/extensions/gtk_statusicon.py:15 msgid "Show a status icon for Gtk-based Desktops." msgstr "" #: share/gpodder/extensions/minimize_on_start.py:10 msgid "Minimize on start" msgstr "" #: share/gpodder/extensions/minimize_on_start.py:11 msgid "Minimizes the gPodder window on startup." msgstr "" #: share/gpodder/extensions/mpris-listener.py:33 msgid "MPRIS Listener" msgstr "" #: share/gpodder/extensions/mpris-listener.py:34 msgid "Convert MPRIS notifications to gPodder Media Player D-Bus API" msgstr "" #: share/gpodder/extensions/normalize_audio.py:21 msgid "Normalize audio with re-encoding" msgstr "" #: share/gpodder/extensions/normalize_audio.py:22 msgid "Normalize the volume of audio files with normalize-audio" msgstr "" #: share/gpodder/extensions/normalize_audio.py:99 #, fuzzy msgid "File normalized" msgstr "Numele fiШ™ierului" #: share/gpodder/extensions/rename_download.py:16 #, fuzzy msgid "Rename episodes after download" msgstr "Un episod nou este disponibil pentru descФƒrcare" #: share/gpodder/extensions/rename_download.py:17 #, fuzzy msgid "Rename episodes to \".\" on download" msgstr "Un episod nou este disponibil pentru descФƒrcare" #: share/gpodder/extensions/rm_ogg_cover.py:37 #, fuzzy msgid "Remove cover art from OGG files" msgstr "SelecteazФƒ coperta dintre fiШ™iere" #: share/gpodder/extensions/rm_ogg_cover.py:38 msgid "removes coverart from all downloaded ogg files" msgstr "" #: share/gpodder/extensions/rm_ogg_cover.py:66 #, fuzzy msgid "Remove cover art" msgstr "УŽndeparteazФƒ semnul \"nou\"" #: share/gpodder/extensions/rockbox_convert2mp4.py:26 msgid "Convert video files to MP4 for Rockbox" msgstr "" #: share/gpodder/extensions/rockbox_convert2mp4.py:27 msgid "Converts all videos to a Rockbox-compatible format" msgstr "" #: share/gpodder/extensions/sonos.py:19 share/gpodder/extensions/sonos.py:78 msgid "Stream to Sonos" msgstr "" #: share/gpodder/extensions/sonos.py:20 msgid "Stream podcasts to Sonos speakers" msgstr "" #: share/gpodder/extensions/tagging.py:45 msgid "Tag downloaded files using Mutagen" msgstr "" #: share/gpodder/extensions/tagging.py:46 #, fuzzy msgid "Add episode and podcast titles to MP3/OGG tags" msgstr "AratФƒ \"Toate episoadele\" УЎn lista cu podcast-uri" #: share/gpodder/extensions/taskbar_progress.py:28 msgid "Show download progress on the taskbar" msgstr "" #: share/gpodder/extensions/taskbar_progress.py:29 msgid "Displays the progress on the Windows taskbar." msgstr "" #: share/gpodder/extensions/ted_subtitles.py:16 msgid "Subtitle Downloader for TED Talks" msgstr "" #: share/gpodder/extensions/ted_subtitles.py:17 msgid "Downloads .srt subtitles for TED Talks Videos" msgstr "" #: share/gpodder/extensions/ubuntu_appindicator.py:10 msgid "Ubuntu App Indicator" msgstr "" #: share/gpodder/extensions/ubuntu_appindicator.py:11 msgid "Show a status indicator in the top bar." msgstr "" #: share/gpodder/extensions/ubuntu_appindicator.py:47 msgid "Show main window" msgstr "" #: share/gpodder/extensions/ubuntu_appindicator.py:57 #: share/gpodder/ui/gtk/gpodder.ui.h:6 msgid "Quit" msgstr "IeШ™ire" #: share/gpodder/extensions/ubuntu_unity.py:10 msgid "Ubuntu Unity Integration" msgstr "" #: share/gpodder/extensions/ubuntu_unity.py:11 msgid "Show download progress in the Unity Launcher icon." msgstr "" #: share/gpodder/extensions/update_feeds_on_startup.py:14 #, fuzzy msgid "Search for new episodes on startup" msgstr "CautФƒ episoade noi la pornire" #: share/gpodder/extensions/update_feeds_on_startup.py:15 #, fuzzy msgid "Starts the search for new episodes on startup" msgstr "CautФƒ episoade noi la pornire" #: share/gpodder/extensions/video_converter.py:22 #, fuzzy msgid "Convert video files" msgstr "Eroare de conversie a fiШ™ierului." #: share/gpodder/extensions/video_converter.py:23 msgid "Transcode video files to avi/mp4/m4v" msgstr "" #: share/gpodder/ui/gtk/gpodderaddpodcast.ui.h:1 msgid "Add a new podcast" msgstr "AdaugФƒ un nou podcast" #: share/gpodder/ui/gtk/gpodderaddpodcast.ui.h:2 msgid "URL:" msgstr "URL:" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:1 msgid "gPodder Podcast Editor" msgstr "Editorul de podcast-uri gPodder" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:2 #, fuzzy msgid "Section:" msgstr "AcШ›iune" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:3 #, fuzzy msgid "Disable feed updates (pause subscription)" msgstr "ActiveazФƒ aduceri la zi euristice ale feed-ului" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:4 #, fuzzy msgid "Synchronize to MP3 player devices" msgstr "SincronizeazФƒ cu player-ul" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:5 #, fuzzy msgid "Strategy:" msgstr "ؘterge strategia:" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:6 #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:6 msgid "General" msgstr "General" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:7 msgid "HTTP/FTP Authentication" msgstr "Autentificare HTTP/FTP" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:8 #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:13 msgid "Username:" msgstr "Nume utilizator:" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:9 #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:14 msgid "Password:" msgstr "Parola:" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:10 msgid "Locations" msgstr "LocaШ›ii" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:11 msgid "Download to:" msgstr "DescarcФƒ pe:" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:12 msgid "Website:" msgstr "PaginФƒ web:" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:13 msgid "website label" msgstr "eticheta paginii de web" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:14 msgid "Advanced" msgstr "Avansat" #: share/gpodder/ui/gtk/gpodderconfigeditor.ui.h:1 msgid "gPodder Configuration Editor" msgstr "Editorul de configuraШ›ii gPodder" #: share/gpodder/ui/gtk/gpodderconfigeditor.ui.h:2 msgid "Search for:" msgstr "CautФƒ dupФƒ:" #: share/gpodder/ui/gtk/gpodderconfigeditor.ui.h:3 msgid "Show All" msgstr "AfiШ™eazФƒ toate" #: share/gpodder/ui/gtk/gpodderepisodeselector.ui.h:1 msgid "Select episodes" msgstr "SelectaШ›i episoadele" #: share/gpodder/ui/gtk/gpodderpodcastdirectory.ui.h:1 msgid "Find new podcasts" msgstr "CautФƒ podcast-uri noi" #: share/gpodder/ui/gtk/gpodderpodcastdirectory.ui.h:2 msgid "Select All" msgstr "SelecteazФƒ totul" #: share/gpodder/ui/gtk/gpodderpodcastdirectory.ui.h:3 msgid "Select None" msgstr "Nu selecta nimic" #: share/gpodder/ui/gtk/gpodderpodcastdirectory.ui.h:4 msgid "label" msgstr "" #: share/gpodder/ui/gtk/gpodderpodcastdirectory.ui.h:5 msgid "..." msgstr "" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:1 #: share/gpodder/ui/gtk/gpodder.ui.h:5 msgid "Preferences" msgstr "PreferinШ›e" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:2 msgid "Audio player:" msgstr "Player audio:" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:3 msgid "Video player:" msgstr "Player video:" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:4 #, fuzzy msgid "\"All episodes\" in podcast list" msgstr "AratФƒ \"Toate episoadele\" УЎn lista cu podcast-uri" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:5 #, fuzzy msgid "Use sections for podcast list" msgstr "Eroare la salvarea listei de podcast-uri" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:7 msgid "Preferred YouTube format:" msgstr "" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:8 msgid "YouTube API key (v3):" msgstr "" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:9 msgid "Preferred Vimeo format:" msgstr "" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:11 msgid "Extensions" msgstr "" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:12 msgid "Synchronize subscriptions and episode actions" msgstr "" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:15 msgid "Replace list on server with local subscriptions" msgstr "УŽnlocuieШ™te lista de pe server cu abonamentele locale" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:16 #, fuzzy msgid "Device name:" msgstr "Nume dispozitiv:" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:17 #, fuzzy msgid "gpodder.net" msgstr "Mergi la gpodder.org" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:18 msgid "Update interval:" msgstr "Intervalul de actualizare:" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:19 msgid "Maximum number of episodes per podcast:" msgstr "NumФƒrul maxim de episoade per podcast:" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:20 msgid "When new episodes are found:" msgstr "CУЂnd se gФƒsesc episoade noi:" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:21 msgid "Updating" msgstr "ActualizeazФƒ" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:22 #, fuzzy msgid "Delete played episodes:" msgstr "УŽndepФƒrteazФƒ episoadele redate" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:23 #, fuzzy msgid "Remove played episodes even if unfinished" msgstr "УŽndepФƒrteazФƒ podcast-urile de pe dispozitiv" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:24 msgid "Also remove unplayed episodes" msgstr "УŽndepФƒrteazФƒ de asemenea episoadele neredate" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:25 msgid "Clean-up" msgstr "CurФƒШ›Фƒ" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:26 #, fuzzy msgid "Device type:" msgstr "Nume dispozitiv:" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:27 #, fuzzy msgid "Mountpoint:" msgstr "loc de montare pentru iPod:" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:28 #, fuzzy msgid "After syncing an episode:" msgstr "Se deschide %d episod" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:29 #, fuzzy msgid "Create playlists on device" msgstr "УŽnlocuieШ™te lista de abonamente pe server" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:30 #, fuzzy msgid "Playlists Folder:" msgstr "Numele listei de redare:" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:31 msgid "Remove episodes deleted on device from gPodder" msgstr "" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:32 #, fuzzy msgid "Only sync unplayed episodes" msgstr "Episoade ne-redate" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:33 msgid "Devices" msgstr "Dispozitive" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:34 msgid "Edit config" msgstr "EditeazФƒ configurarea" #: share/gpodder/ui/gtk/gpodder.ui.h:1 msgid "_Podcasts" msgstr "_Podcast" #: share/gpodder/ui/gtk/gpodder.ui.h:2 msgid "Check for new episodes" msgstr "CautФƒ episoade noi" #: share/gpodder/ui/gtk/gpodder.ui.h:3 msgid "Download new episodes" msgstr "DescarcФƒ episoade noi" #: share/gpodder/ui/gtk/gpodder.ui.h:7 msgid "_Subscriptions" msgstr "A_bonamente" #: share/gpodder/ui/gtk/gpodder.ui.h:8 msgid "Discover new podcasts" msgstr "CautФƒ podcasturi noi" #: share/gpodder/ui/gtk/gpodder.ui.h:9 msgid "Add podcast via URL" msgstr "AdaugФƒ podcast via URL" #: share/gpodder/ui/gtk/gpodder.ui.h:11 msgid "Unsubscribe" msgstr "УŽntrerupe abonamentul" #: share/gpodder/ui/gtk/gpodder.ui.h:14 msgid "Import from OPML file" msgstr "ImportФƒ din fiШ™ier OPML" #: share/gpodder/ui/gtk/gpodder.ui.h:15 msgid "Export to OPML file" msgstr "ExportФƒ УЎn fiШ™ier OPML" #: share/gpodder/ui/gtk/gpodder.ui.h:16 msgid "Go to gpodder.net" msgstr "Mergi la gpodder.org" #: share/gpodder/ui/gtk/gpodder.ui.h:17 msgid "_Episodes" msgstr "_Episoade" #: share/gpodder/ui/gtk/gpodder.ui.h:18 msgid "Play" msgstr "Redare" #: share/gpodder/ui/gtk/gpodder.ui.h:19 msgid "Open" msgstr "Deschide" #: share/gpodder/ui/gtk/gpodder.ui.h:22 msgid "Delete" msgstr "ؘterge" #: share/gpodder/ui/gtk/gpodder.ui.h:23 msgid "Toggle new status" msgstr "" #: share/gpodder/ui/gtk/gpodder.ui.h:24 msgid "Change delete lock" msgstr "DezactiveazФƒ blocare la Ш™tergere " #: share/gpodder/ui/gtk/gpodder.ui.h:26 msgid "E_xtras" msgstr "" #: share/gpodder/ui/gtk/gpodder.ui.h:27 #, fuzzy msgid "Sync to device" msgstr "SincronizeazФƒ dispozitivul" #: share/gpodder/ui/gtk/gpodder.ui.h:28 #, fuzzy msgid "Update YouTube subscriptions" msgstr "Nu existФƒ abonamente" #: share/gpodder/ui/gtk/gpodder.ui.h:29 msgid "_View" msgstr "_Vizualizare" #: share/gpodder/ui/gtk/gpodder.ui.h:30 #, fuzzy msgid "Toolbar" msgstr "AratФƒ bara cu unelte" #: share/gpodder/ui/gtk/gpodder.ui.h:31 msgid "Episode descriptions" msgstr "Descrierea episoadelor" #: share/gpodder/ui/gtk/gpodder.ui.h:33 msgid "Hide deleted episodes" msgstr "Ascunde episoadele Ш™terse" #: share/gpodder/ui/gtk/gpodder.ui.h:34 msgid "Downloaded episodes" msgstr "Episoade descФƒrcate" #: share/gpodder/ui/gtk/gpodder.ui.h:35 msgid "Unplayed episodes" msgstr "Episoade ne-redate" #: share/gpodder/ui/gtk/gpodder.ui.h:36 msgid "Hide podcasts without episodes" msgstr "Ascunde podcast-uri fФƒrФƒ episoade" #: share/gpodder/ui/gtk/gpodder.ui.h:37 msgid "_Help" msgstr "_Ajutor" #: share/gpodder/ui/gtk/gpodder.ui.h:38 msgid "User manual" msgstr "Manualul utilizatorului" #: share/gpodder/ui/gtk/gpodder.ui.h:39 msgid "Software updates" msgstr "" #: share/gpodder/ui/gtk/gpodder.ui.h:40 msgid "Filter:" msgstr "Filtru:" #: share/gpodder/ui/gtk/gpodder.ui.h:41 msgid "Podcasts" msgstr "Podcast-uri" #: share/gpodder/ui/gtk/gpodder.ui.h:42 msgid "Limit rate to" msgstr "LimiteazФƒ rata la" #: share/gpodder/ui/gtk/gpodder.ui.h:43 msgid "KiB/s" msgstr "KiB/s" #: share/gpodder/ui/gtk/gpodder.ui.h:44 msgid "Limit downloads to" msgstr "LimiteazФƒ descФƒrcФƒrile la" #: share/gpodder/ui/gtk/gpodderwelcome.ui.h:2 #, fuzzy msgid "Welcome to gPodder" msgstr "Bine aШ›i venit la gPodder" #: share/gpodder/ui/gtk/gpodderwelcome.ui.h:3 #, fuzzy msgid "Your podcast list is empty." msgstr "Lista de podcast-uri este goalФƒ. Ce doriШ›i sФƒ faceШ›i" #: share/gpodder/ui/gtk/gpodderwelcome.ui.h:4 msgid "Choose from a list of example podcasts" msgstr "SelecteazФƒ dintr-o lista de exemple cu podcast-uri" #: share/gpodder/ui/gtk/gpodderwelcome.ui.h:5 #, fuzzy msgid "Add a podcast by entering its URL" msgstr "AdaugФƒ podcast via URL" #: share/gpodder/ui/gtk/gpodderwelcome.ui.h:6 #, fuzzy msgid "Restore my subscriptions from gpodder.net" msgstr "DescarcФƒ abonamentele de la my.gpodder.org" #: bin/gpo:266 #, fuzzy msgid "Podcast update requested by extensions." msgstr "Acest podcast necesitФƒ autentificare" #: bin/gpo:270 msgid "Episode download requested by extensions." msgstr "" #: bin/gpo:323 #, python-format msgid "Invalid url: %s" msgstr "" #: bin/gpo:340 bin/gpo:416 bin/gpo:450 bin/gpo:582 bin/gpo:597 bin/gpo:717 #, fuzzy, python-format msgid "You are not subscribed to %s." msgstr "La aceste podcast-uri existФƒ deja abonamente:" #: bin/gpo:346 #, fuzzy, python-format msgid "Already subscribed to %s." msgstr "Nu se poate sincroniza dispozitivul iPod" #: bin/gpo:352 #, fuzzy, python-format msgid "Cannot subscribe to %s." msgstr "Nu se poate sincroniza dispozitivul iPod" #: bin/gpo:368 #, python-format msgid "Successfully added %s." msgstr "" #: bin/gpo:386 msgid "This configuration option does not exist." msgstr "" #: bin/gpo:390 msgid "Can only set leaf configuration nodes." msgstr "" #: bin/gpo:404 #, python-format msgid "Renamed %(old_title)s to %(new_title)s." msgstr "" #: bin/gpo:420 #, fuzzy, python-format msgid "Unsubscribed from %s." msgstr "УŽntrerupe abonamentul" #: bin/gpo:494 #, fuzzy msgid "Updates disabled" msgstr "Adu la zi selecШ›ia" #: bin/gpo:505 #, python-format msgid "%(count)d new episode" msgid_plural "%(count)d new episodes" msgstr[0] "" msgstr[1] "" msgstr[2] "" #: bin/gpo:511 #, fuzzy msgid "Checking for new episodes" msgstr "CautФƒ episoade noi" #: bin/gpo:520 #, fuzzy, python-format msgid "Skipping %(podcast)s" msgstr "Se adaugФƒ podcast-uri" #: bin/gpo:588 #, python-format msgid "Disabling feed update from %s." msgstr "" #: bin/gpo:603 #, fuzzy, python-format msgid "Enabling feed update from %s." msgstr "CiteШ™te fiШ™iere de pe %s" #: bin/gpo:616 #, python-format msgid "Please register a YouTube API key and set it using %(command)s." msgstr "" #: bin/gpo:643 #, python-format msgid "Changing: %(old_url)s => %(new_url)s" msgstr "" #: bin/gpo:653 #, fuzzy msgid "Nothing to fix" msgstr "Nimic de exportat" #: bin/gpo:672 #, fuzzy msgid "No podcasts found." msgstr "Nu a fost gФƒsit nici un podcast" #: bin/gpo:686 msgid "Enter index to subscribe, ? for list" msgstr "" #: bin/gpo:700 bin/gpo:704 msgid "Invalid value." msgstr "" #: bin/gpo:721 #, python-format msgid "Invalid URL: %s" msgstr "" #: bin/gpo:724 #, python-format msgid "Changed URL from %(old_url)s to %(new_url)s." msgstr "" #: bin/gpo:782 #, python-format msgid "Syntax error: %(error)s" msgstr "" #: bin/gpo:876 msgid "Ambiguous command. Did you mean.." msgstr "" #: bin/gpo:880 #, fuzzy msgid "The requested function is not available." msgstr "AceastФƒ funcШ›ionalitate nu existФƒ pentru iPod." #: bin/gpodder:105 #, fuzzy msgid "print logging output on the console" msgstr "TipФƒreШ™te informaШ›iile de depanare pe stdout" #: bin/gpodder:108 msgid "subscribe to the feed at URL" msgstr "" #: bin/gpodder:113 msgid "Mac OS X application process number" msgstr "" #: share/applications/gpodder.desktop.in.h:2 #, fuzzy msgid "gPodder Podcast Client" msgstr "Editorul de podcast-uri gPodder" #: share/applications/gpodder.desktop.in.h:3 #, fuzzy msgid "Podcast Client" msgstr "Lista cu podcast-uri" #: share/applications/gpodder.desktop.in.h:4 msgid "Subscribe to audio and video content from the web" msgstr "" #: share/applications/gpodder-url-handler.desktop.in.h:1 #, fuzzy msgid "gPodder (subscribe to feed)" msgstr "Nu se poate sincroniza dispozitivul iPod" gpodder-3.9.0/po/fa_IR.po0000644000016000001710000013612712654461625016244 0ustar jenkinsjenkins00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # # Translators: # Mohammad Dashtizadeh , 2012. # Mohammadreza Abdollahzadeh , 2012. msgid "" msgstr "" "Project-Id-Version: gPodder\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2016-02-03 20:31+0000\n" "PO-Revision-Date: 2013-01-19 12:31+0000\n" "Last-Translator: Mohammad Dashtizadeh \n" "Language-Team: Persian (Iran) (http://www.transifex.com/projects/p/gpodder/" "language/fa_IR/)\n" "Language: fa_IR\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" #: src/gpodder/config.py:55 #, python-format msgid "gPodder on %s" msgstr "" #: src/gpodder/directory.py:95 msgid "gpodder.net search" msgstr "" #: src/gpodder/directory.py:104 msgid "OPML from web" msgstr "" #: src/gpodder/directory.py:113 msgid "OPML file" msgstr "" #: src/gpodder/directory.py:122 share/gpodder/ui/gtk/gpodderwelcome.ui.h:1 msgid "Getting started" msgstr "" #: src/gpodder/directory.py:131 msgid "gpodder.net Top 50" msgstr "" #: src/gpodder/directory.py:140 msgid "gpodder.net Tags" msgstr "" #: src/gpodder/directory.py:152 msgid "Soundcloud search" msgstr "" #: src/gpodder/directory.py:165 msgid "Imported OPML file" msgstr "" #: src/gpodder/download.py:329 msgid "Wrong username/password" msgstr "й†иЇй… кЉиЇиБиЈиБлŒ/кЏиАиБ йˆиЇк˜й‡ иЇиДиЊиЈиЇй‡" #: src/gpodder/download.py:527 src/gpodder/sync.py:924 msgid "Added" msgstr "иЇиЖиЇйй‡ иДиЏ" #: src/gpodder/download.py:527 src/gpodder/sync.py:924 msgid "Queued" msgstr "иЏиБ иЕй й‚иБиЇиБ кЏиБйиЊ" #: src/gpodder/download.py:527 src/gpodder/gtkui/model.py:327 msgid "Downloading" msgstr "иЏиБ и­иЇй„ иЏиЇй†й„йˆиЏ" #: src/gpodder/download.py:528 src/gpodder/model.py:721 #: src/gpodder/sync.py:925 msgid "Finished" msgstr "иЇиЊй…иЇй… лŒиЇйиЊй‡" #: src/gpodder/download.py:528 src/gpodder/sync.py:925 msgid "Failed" msgstr "й†иЇ й…йˆйй‚" #: src/gpodder/download.py:528 src/gpodder/sync.py:925 msgid "Cancelled" msgstr "й„иКйˆ иДиЏй‡" #: src/gpodder/download.py:528 src/gpodder/sync.py:925 msgid "Paused" msgstr "й…иЊйˆй‚й иДиЏй‡" #: src/gpodder/download.py:862 msgid "Missing content from server" msgstr "" #: src/gpodder/download.py:868 #, python-format msgid "I/O Error: %(error)s: %(filename)s" msgstr "" #: src/gpodder/download.py:875 #, python-format msgid "HTTP Error %(code)s: %(message)s" msgstr "" #: src/gpodder/download.py:879 src/gpodder/sync.py:1081 #, python-format msgid "Error: %s" msgstr "иЎиЗиЇ: %s" #: src/gpodder/extensions.py:55 msgid "Desktop Integration" msgstr "" #: src/gpodder/extensions.py:56 #, fuzzy msgid "Interface" msgstr "иЙиЏиЏ иЕи­лŒи­" #: src/gpodder/extensions.py:57 msgid "Post download" msgstr "" #: src/gpodder/extensions.py:59 src/gpodder/model.py:779 #: src/gpodder/model.py:1225 msgid "Other" msgstr "иЏлŒкЏиБ" #: src/gpodder/extensions.py:100 msgid "No description for this extension." msgstr "" #: src/gpodder/extensions.py:212 #, python-format msgid "Command not found: %(command)s" msgstr "" #: src/gpodder/extensions.py:228 #, python-format msgid "Need at least one of the following commands: %(list_of_commands)s" msgstr "" #: src/gpodder/extensions.py:265 #, python-format msgid "Python module not found: %(module)s" msgstr "" #: src/gpodder/model.py:446 src/gpodder/plugins/soundcloud.py:156 msgid "No description available" msgstr "й‡лŒк† иЊйˆиЖлŒи­лŒ й…й‡лŒиЇ й†лŒиГиЊ" #: src/gpodder/model.py:679 msgid "unknown" msgstr "й†иЇиДй†иЇиЎй‡" #: src/gpodder/model.py:746 msgid "Default" msgstr "" #: src/gpodder/model.py:747 msgid "Only keep latest" msgstr "" #: src/gpodder/model.py:1208 src/gpodder/model.py:1223 #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:10 msgid "Video" msgstr "йˆлŒиЏиІйˆ" #: src/gpodder/model.py:1221 msgid "Audio" msgstr "иЕйˆиЊ" #: src/gpodder/my.py:174 #, python-format msgid "Add %s" msgstr "иЇйиВйˆиЏй† %s" #: src/gpodder/my.py:176 #, python-format msgid "Remove %s" msgstr "и­иАй %s" #: src/gpodder/sync.py:196 msgid "Cancelled by user" msgstr "" #: src/gpodder/sync.py:199 msgid "Writing data to disk" msgstr "" #: src/gpodder/sync.py:295 msgid "Opening iPod database" msgstr "" #: src/gpodder/sync.py:305 msgid "iPod opened" msgstr "" #: src/gpodder/sync.py:316 msgid "Saving iPod database" msgstr "" #: src/gpodder/sync.py:321 msgid "Writing extended gtkpod database" msgstr "" #: src/gpodder/sync.py:397 src/gpodder/sync.py:680 src/gpodder/sync.py:874 #, python-format msgid "Removing %s" msgstr "" #: src/gpodder/sync.py:412 src/gpodder/sync.py:557 #, python-format msgid "Adding %s" msgstr "" #: src/gpodder/sync.py:430 #, python-format msgid "Error copying %(episode)s: Not enough free space on %(mountpoint)s" msgstr "" #: src/gpodder/sync.py:515 msgid "Opening MP3 player" msgstr "" #: src/gpodder/sync.py:518 msgid "MP3 player opened" msgstr "" #: src/gpodder/sync.py:576 #, python-format msgid "" "Not enough space in %(path)s: %(free)s available, but need at least %(need)s" msgstr "" #: src/gpodder/sync.py:603 src/gpodder/sync.py:611 #, python-format msgid "Error opening %(filename)s: %(message)s" msgstr "" #: src/gpodder/sync.py:780 src/gpodder/sync.py:786 msgid "MTP device" msgstr "" #: src/gpodder/sync.py:793 msgid "Opening the MTP device" msgstr "" #: src/gpodder/sync.py:803 #, python-format msgid "%s opened" msgstr "" #: src/gpodder/sync.py:808 #, python-format msgid "Closing %s" msgstr "" #: src/gpodder/sync.py:816 #, python-format msgid "%s closed" msgstr "" #: src/gpodder/sync.py:821 bin/gpo:708 #, python-format msgid "Adding %s..." msgstr "" #: src/gpodder/sync.py:924 msgid "Synchronizing" msgstr "" #: src/gpodder/util.py:429 #, python-format msgid "%(count)d day ago" msgid_plural "%(count)d days ago" msgstr[0] "" #: src/gpodder/util.py:508 msgid "Today" msgstr "иЇй…иБйˆиВ" #: src/gpodder/util.py:510 msgid "Yesterday" msgstr "иЏлŒиБйˆиВ" #: src/gpodder/util.py:553 src/gpodder/util.py:556 msgid "(unknown)" msgstr "(й†иЇй…иЙй„йˆй…)" #: src/gpodder/util.py:1193 src/gpodder/util.py:1212 #, python-format msgid "%(count)d second" msgid_plural "%(count)d seconds" msgstr[0] "" #: src/gpodder/util.py:1206 #, python-format msgid "%(count)d hour" msgid_plural "%(count)d hours" msgstr[0] "" #: src/gpodder/util.py:1209 #, python-format msgid "%(count)d minute" msgid_plural "%(count)d minutes" msgstr[0] "" #: src/gpodder/util.py:1215 msgid "and" msgstr "йˆ" #: src/gpodder/gtkui/config.py:50 msgid "Integer" msgstr "иЙиЏиЏ иЕи­лŒи­" #: src/gpodder/gtkui/config.py:52 msgid "Float" msgstr "иЙиЏиЏ иЇиЙиДиЇиБлŒ" #: src/gpodder/gtkui/config.py:54 msgid "Boolean" msgstr "иЈйˆй„лŒ" #: src/gpodder/gtkui/config.py:56 msgid "String" msgstr "иБиДиЊй‡ и­иБйˆй" #: src/gpodder/gtkui/desktopfile.py:70 #, python-format msgid "Command: %s" msgstr "" #: src/gpodder/gtkui/desktopfile.py:150 msgid "Default application" msgstr "иЈиБй†иЇй…й‡ йОлŒиДйиБиЖ" #: src/gpodder/gtkui/main.py:205 share/applications/gpodder.desktop.in.h:1 msgid "gPodder" msgstr "иЌлŒ йОиЇиЏиБ" #: src/gpodder/gtkui/main.py:288 msgid "Loading incomplete downloads" msgstr "иЈиЇиБ кЏиАиЇиБлŒ иЏиЇй†й„йˆиЏй‡иЇлŒ й†иЇкЉиЇй…й„" #: src/gpodder/gtkui/main.py:289 msgid "Some episodes have not finished downloading in a previous session." msgstr "" #: src/gpodder/gtkui/main.py:291 #, python-format msgid "%(count)d partial file" msgid_plural "%(count)d partial files" msgstr[0] "" #: src/gpodder/gtkui/main.py:306 msgid "Resume all" msgstr "иЇиВ иГиБкЏлŒиБлŒ й‡й…й‡" #: src/gpodder/gtkui/main.py:316 msgid "Incomplete downloads from a previous session were found." msgstr "" #: src/gpodder/gtkui/main.py:414 msgid "Action" msgstr "иЙй…й„" #: src/gpodder/gtkui/main.py:461 msgid "Confirm changes from gpodder.net" msgstr "" #: src/gpodder/gtkui/main.py:462 msgid "Select the actions you want to carry out." msgstr "" #: src/gpodder/gtkui/main.py:502 msgid "Uploading subscriptions" msgstr "" #: src/gpodder/gtkui/main.py:503 msgid "Your subscriptions are being uploaded to the server." msgstr "" #: src/gpodder/gtkui/main.py:508 msgid "List uploaded successfully." msgstr "й„лŒиГиЊ иЈиЇиБкЏиАиЇиБлŒт€Œй‡иЇлŒ й…йˆйй‚" #: src/gpodder/gtkui/main.py:515 msgid "Error while uploading" msgstr "иЎиЗиЇ иЏиБ иЈиЇиБкЏиАиЇиБлŒ" #: src/gpodder/gtkui/main.py:800 src/gpodder/gtkui/main.py:928 #: src/gpodder/gtkui/main.py:2622 src/gpodder/gtkui/main.py:2815 #: src/gpodder/gtkui/desktop/episodeselector.py:132 #: src/gpodder/gtkui/desktop/sync.py:270 msgid "Episode" msgstr "й‚иГй…иЊ" #: src/gpodder/gtkui/main.py:819 msgid "Size" msgstr "иЇй†иЏиЇиВй‡" #: src/gpodder/gtkui/main.py:824 msgid "Duration" msgstr "й…иЏиЊ" #: src/gpodder/gtkui/main.py:828 msgid "Released" msgstr "иЇй†иЊиДиЇиБ" #: src/gpodder/gtkui/main.py:855 msgid "Visible columns" msgstr "" #: src/gpodder/gtkui/main.py:948 src/gpodder/gtkui/main.py:1108 #: share/gpodder/ui/gtk/gpodder.ui.h:45 msgid "Progress" msgstr "" #: src/gpodder/gtkui/main.py:982 msgid "Loading episodes" msgstr "" #: src/gpodder/gtkui/main.py:985 msgid "No episodes in current view" msgstr "" #: src/gpodder/gtkui/main.py:987 msgid "No episodes available" msgstr "" #: src/gpodder/gtkui/main.py:993 msgid "No podcasts in this view" msgstr "" #: src/gpodder/gtkui/main.py:995 msgid "No subscriptions" msgstr "" #: src/gpodder/gtkui/main.py:997 msgid "No active tasks" msgstr "" #: src/gpodder/gtkui/main.py:1112 src/gpodder/gtkui/main.py:1114 #, python-format msgid "%(count)d active" msgid_plural "%(count)d active" msgstr[0] "" #: src/gpodder/gtkui/main.py:1116 #, python-format msgid "%(count)d failed" msgid_plural "%(count)d failed" msgstr[0] "" #: src/gpodder/gtkui/main.py:1118 #, python-format msgid "%(count)d queued" msgid_plural "%(count)d queued" msgstr[0] "" #: src/gpodder/gtkui/main.py:1132 #, python-format msgid "downloading %(count)d file" msgid_plural "downloading %(count)d files" msgstr[0] "" #: src/gpodder/gtkui/main.py:1142 #, python-format msgid "synchronizing %(count)d file" msgid_plural "synchronizing %(count)d files" msgstr[0] "" #: src/gpodder/gtkui/main.py:1144 #, python-format msgid "%(queued)d task queued" msgid_plural "%(queued)d tasks queued" msgstr[0] "" #: src/gpodder/gtkui/main.py:1168 msgid "Please report this problem and restart gPodder:" msgstr "" #: src/gpodder/gtkui/main.py:1168 msgid "Unhandled exception" msgstr "" #: src/gpodder/gtkui/main.py:1235 #, python-format msgid "Feedparser error: %s" msgstr "" #: src/gpodder/gtkui/main.py:1371 msgid "Could not download some episodes:" msgstr "" #: src/gpodder/gtkui/main.py:1373 src/gpodder/gtkui/main.py:1376 msgid "Downloads finished" msgstr "иЈиЇиБкЏлŒиБлŒ иЈй‡ иЇиЊй…иЇй… иБиГлŒиЏ" #: src/gpodder/gtkui/main.py:1379 msgid "Downloads failed" msgstr "иЙй…й„лŒиЇиЊ иЈиЇиБкЏлŒиБлŒ иДкЉиГиЊ иЎйˆиБиЏ" #: src/gpodder/gtkui/main.py:1383 msgid "Could not sync some episodes:" msgstr "" #: src/gpodder/gtkui/main.py:1385 src/gpodder/gtkui/main.py:1388 msgid "Device synchronization finished" msgstr "" #: src/gpodder/gtkui/main.py:1391 msgid "Device synchronization failed" msgstr "" #: src/gpodder/gtkui/main.py:1434 #, python-format msgid "%(count)d more episode" msgid_plural "%(count)d more episodes" msgstr[0] "" #: src/gpodder/gtkui/main.py:1508 msgid "Start download now" msgstr "иДиБйˆиЙ иЈиЇиБкЏлŒиБлŒ" #: src/gpodder/gtkui/main.py:1510 src/gpodder/gtkui/main.py:1719 #: src/gpodder/gtkui/desktop/episodeselector.py:144 #: share/gpodder/ui/gtk/gpodder.ui.h:20 msgid "Download" msgstr "иЈиЇиБкЏлŒиБлŒ" #: src/gpodder/gtkui/main.py:1511 share/gpodder/ui/gtk/gpodder.ui.h:21 msgid "Cancel" msgstr "й„иКйˆ" #: src/gpodder/gtkui/main.py:1512 msgid "Pause" msgstr "йˆй‚йй‡" #: src/gpodder/gtkui/main.py:1514 msgid "Remove from list" msgstr "" #: src/gpodder/gtkui/main.py:1553 share/gpodder/ui/gtk/gpodder.ui.h:13 msgid "Update podcast" msgstr "иЈиБйˆиВиБиГиЇй†лŒ йОиЇиЏкЉиГиЊ" #: src/gpodder/gtkui/main.py:1560 msgid "Open download folder" msgstr "" #: src/gpodder/gtkui/main.py:1566 msgid "Mark episodes as old" msgstr "" #: src/gpodder/gtkui/main.py:1570 src/gpodder/gtkui/main.py:1778 msgid "Archive" msgstr "иЂиБиДлŒйˆ" #: src/gpodder/gtkui/main.py:1575 msgid "Remove podcast" msgstr "и­иАй йОиЇиЏкЉиГиЊ" #: src/gpodder/gtkui/main.py:1590 share/gpodder/ui/gtk/gpodder.ui.h:10 msgid "Podcast settings" msgstr "" #: src/gpodder/gtkui/main.py:1650 msgid "Error converting file." msgstr "иЎиЗиЇ иЏиБ иЊиЈиЏлŒй„ йОиБйˆй†иЏй‡." #: src/gpodder/gtkui/main.py:1650 msgid "Bluetooth file transfer" msgstr "" #: src/gpodder/gtkui/main.py:1709 msgid "Preview" msgstr "йОлŒиД й†й…иЇлŒиД" #: src/gpodder/gtkui/main.py:1711 msgid "Stream" msgstr "иЌиБлŒиЇй†" #: src/gpodder/gtkui/main.py:1755 msgid "Send to" msgstr "иЇиБиГиЇй„ иЈй‡" #: src/gpodder/gtkui/main.py:1757 msgid "Local folder" msgstr "йОйˆиДй‡ й…и­й„лŒ" #: src/gpodder/gtkui/main.py:1762 msgid "Bluetooth device" msgstr "йˆиГлŒй„й‡ иЈй„йˆиЊйˆиГ" #: src/gpodder/gtkui/main.py:1769 msgid "New" msgstr "иЌиЏлŒиЏ" #: src/gpodder/gtkui/main.py:1785 share/gpodder/ui/gtk/gpodder.ui.h:25 msgid "Episode details" msgstr "" #: src/gpodder/gtkui/main.py:1938 msgid "Please check your media player settings in the preferences dialog." msgstr "" #: src/gpodder/gtkui/main.py:1939 msgid "Error opening player" msgstr "" #: src/gpodder/gtkui/main.py:2178 msgid "Adding podcasts" msgstr "иЇйиВйˆиЏй† йОиЇиЏкЉиГиЊй‡иЇ" #: src/gpodder/gtkui/main.py:2179 msgid "Please wait while episode information is downloaded." msgstr "" #: src/gpodder/gtkui/main.py:2186 msgid "Existing subscriptions skipped" msgstr "" #: src/gpodder/gtkui/main.py:2187 msgid "You are already subscribed to these podcasts:" msgstr "" #: src/gpodder/gtkui/main.py:2195 msgid "Podcast requires authentication" msgstr "" #: src/gpodder/gtkui/main.py:2196 #, python-format msgid "Please login to %s:" msgstr "" #: src/gpodder/gtkui/main.py:2204 src/gpodder/gtkui/main.py:2299 msgid "Authentication failed" msgstr "иЙиЏй… й…йˆйй‚лŒиЊ иЏиБ иЇи­иБиЇиВ и­йˆлŒиЊ" #: src/gpodder/gtkui/main.py:2210 msgid "Website redirection detected" msgstr "" #: src/gpodder/gtkui/main.py:2211 #, python-format msgid "The URL %(url)s redirects to %(target)s." msgstr "" #: src/gpodder/gtkui/main.py:2212 msgid "Do you want to visit the website now?" msgstr "" #: src/gpodder/gtkui/main.py:2221 msgid "Could not add some podcasts" msgstr "" #: src/gpodder/gtkui/main.py:2222 msgid "Some podcasts could not be added to your list:" msgstr "" #: src/gpodder/gtkui/main.py:2224 msgid "Unknown" msgstr "й†иЇ иДй†иЇиЎиЊй‡" #: src/gpodder/gtkui/main.py:2308 msgid "Redirection detected" msgstr "" #: src/gpodder/gtkui/main.py:2342 msgid "Merging episode actions" msgstr "" #: src/gpodder/gtkui/main.py:2343 msgid "Episode actions from gpodder.net are merged." msgstr "" #: src/gpodder/gtkui/main.py:2368 msgid "Cancelling..." msgstr "" #: src/gpodder/gtkui/main.py:2377 msgid "Please connect to a network, then try again." msgstr "" #: src/gpodder/gtkui/main.py:2378 msgid "No network connection" msgstr "" #: src/gpodder/gtkui/main.py:2399 #, python-format msgid "Updating %(count)d feed..." msgid_plural "Updating %(count)d feeds..." msgstr[0] "" #: src/gpodder/gtkui/main.py:2417 #, python-format msgid "Error while updating %(url)s: %(message)s" msgstr "" #: src/gpodder/gtkui/main.py:2419 #, python-format msgid "The feed at %(url)s could not be updated." msgstr "" #: src/gpodder/gtkui/main.py:2420 msgid "Error while updating feed" msgstr "" #: src/gpodder/gtkui/main.py:2435 #, python-format msgid "Updated %(podcast)s (%(position)d/%(total)d)" msgstr "" #: src/gpodder/gtkui/main.py:2466 msgid "No new episodes" msgstr "й‡лŒк† й‚иГй…иЊ иЌиЏлŒиЏлŒ йˆиЌйˆиЏ й†иЏиЇиБиЏ" #: src/gpodder/gtkui/main.py:2479 #, python-format msgid "Downloading %(count)d new episode." msgid_plural "Downloading %(count)d new episodes." msgstr[0] "" #: src/gpodder/gtkui/main.py:2480 src/gpodder/gtkui/main.py:2484 #: src/gpodder/gtkui/main.py:2833 msgid "New episodes available" msgstr "й‚иГй…иЊ иЌиЏлŒиЏ й…йˆиЌйˆиЏ иЇиГиЊ" #: src/gpodder/gtkui/main.py:2483 #, python-format msgid "%(count)d new episode added to download list." msgid_plural "%(count)d new episodes added to download list." msgstr[0] "" #: src/gpodder/gtkui/main.py:2490 #, python-format msgid "%(count)d new episode available" msgid_plural "%(count)d new episodes available" msgstr[0] "" #: src/gpodder/gtkui/main.py:2509 msgid "Quit gPodder" msgstr "иЎиБйˆиЌ иЇиВ иЌлŒ йОиЇиЏиБ" #: src/gpodder/gtkui/main.py:2510 msgid "" "You are downloading episodes. You can resume downloads the next time you " "start gPodder. Do you want to quit now?" msgstr "" #: src/gpodder/gtkui/main.py:2559 msgid "Episodes are locked" msgstr "й‚иГй…иЊй‡иЇ й‚йй„ иДиЏй‡ иЇй†иЏ" #: src/gpodder/gtkui/main.py:2560 msgid "" "The selected episodes are locked. Please unlock the episodes that you want " "to delete before trying to delete them." msgstr "" #: src/gpodder/gtkui/main.py:2565 #, python-format msgid "Delete %(count)d episode?" msgid_plural "Delete %(count)d episodes?" msgstr[0] "" #: src/gpodder/gtkui/main.py:2566 msgid "Deleting episodes removes downloaded files." msgstr "" #: src/gpodder/gtkui/main.py:2571 msgid "Deleting episodes" msgstr "" #: src/gpodder/gtkui/main.py:2572 msgid "Please wait while episodes are deleted" msgstr "" #: src/gpodder/gtkui/main.py:2625 #, python-format msgid "Select older than %(count)d day" msgid_plural "Select older than %(count)d days" msgstr[0] "" #: src/gpodder/gtkui/main.py:2627 msgid "Select played" msgstr "" #: src/gpodder/gtkui/main.py:2628 msgid "Select finished" msgstr "" #: src/gpodder/gtkui/main.py:2632 msgid "Select the episodes you want to delete:" msgstr "" #: src/gpodder/gtkui/main.py:2648 share/gpodder/ui/gtk/gpodder.ui.h:4 msgid "Delete episodes" msgstr "" #: src/gpodder/gtkui/main.py:2703 src/gpodder/gtkui/main.py:2934 #: src/gpodder/gtkui/main.py:3034 msgid "No podcast selected" msgstr "" #: src/gpodder/gtkui/main.py:2704 msgid "Please select a podcast in the podcasts list to update." msgstr "" #: src/gpodder/gtkui/main.py:2774 #, python-format msgid "Download error while downloading %(episode)s: %(message)s" msgstr "" #: src/gpodder/gtkui/main.py:2775 msgid "Download error" msgstr "" #: src/gpodder/gtkui/main.py:2818 msgid "Select the episodes you want to download:" msgstr "" #: src/gpodder/gtkui/main.py:2841 msgid "Mark as old" msgstr "" #: src/gpodder/gtkui/main.py:2848 msgid "Please check for new episodes later." msgstr "" #: src/gpodder/gtkui/main.py:2849 msgid "No new episodes available" msgstr "" #: src/gpodder/gtkui/main.py:2900 msgid "Login to gpodder.net" msgstr "" #: src/gpodder/gtkui/main.py:2901 msgid "Please login to download your subscriptions." msgstr "" #: src/gpodder/gtkui/main.py:2916 msgid "Subscriptions on gpodder.net" msgstr "" #: src/gpodder/gtkui/main.py:2935 msgid "Please select a podcast in the podcasts list to edit." msgstr "" #: src/gpodder/gtkui/main.py:2949 msgid "Podcast" msgstr "" #: src/gpodder/gtkui/main.py:2955 share/gpodder/ui/gtk/gpodder.ui.h:12 msgid "Remove podcasts" msgstr "" #: src/gpodder/gtkui/main.py:2956 msgid "Select the podcast you want to remove." msgstr "" #: src/gpodder/gtkui/main.py:2960 #: src/gpodder/gtkui/desktop/episodeselector.py:105 msgid "Remove" msgstr "" #: src/gpodder/gtkui/main.py:2969 msgid "Removing podcast" msgstr "" #: src/gpodder/gtkui/main.py:2970 msgid "Please wait while the podcast is removed" msgstr "" #: src/gpodder/gtkui/main.py:2971 msgid "Do you really want to remove this podcast and its episodes?" msgstr "" #: src/gpodder/gtkui/main.py:2973 msgid "Removing podcasts" msgstr "" #: src/gpodder/gtkui/main.py:2974 msgid "Please wait while the podcasts are removed" msgstr "" #: src/gpodder/gtkui/main.py:2975 msgid "Do you really want to remove the selected podcasts and their episodes?" msgstr "" #: src/gpodder/gtkui/main.py:3035 msgid "Please select a podcast in the podcasts list to remove." msgstr "" #: src/gpodder/gtkui/main.py:3045 msgid "OPML files" msgstr "" #: src/gpodder/gtkui/main.py:3050 msgid "Import from OPML" msgstr "" #: src/gpodder/gtkui/main.py:3064 msgid "Import podcasts from OPML file" msgstr "" #: src/gpodder/gtkui/main.py:3071 msgid "Nothing to export" msgstr "" #: src/gpodder/gtkui/main.py:3072 msgid "" "Your list of podcast subscriptions is empty. Please subscribe to some " "podcasts first before trying to export your subscription list." msgstr "" #: src/gpodder/gtkui/main.py:3076 msgid "Export to OPML" msgstr "" #: src/gpodder/gtkui/main.py:3087 #, python-format msgid "%(count)d subscription exported" msgid_plural "%(count)d subscriptions exported" msgstr[0] "" #: src/gpodder/gtkui/main.py:3088 msgid "Your podcast list has been successfully exported." msgstr "" #: src/gpodder/gtkui/main.py:3090 msgid "Could not export OPML to file. Please check your permissions." msgstr "" #: src/gpodder/gtkui/main.py:3090 msgid "OPML export failed" msgstr "" #: src/gpodder/gtkui/main.py:3117 msgid "No updates available" msgstr "" #: src/gpodder/gtkui/main.py:3118 msgid "You have the latest version of gPodder." msgstr "" #: src/gpodder/gtkui/main.py:3122 msgid "New version available" msgstr "" #: src/gpodder/gtkui/main.py:3124 #, python-format msgid "Installed version: %s" msgstr "" #: src/gpodder/gtkui/main.py:3125 #, python-format msgid "Newest version: %s" msgstr "" #: src/gpodder/gtkui/main.py:3126 #, python-format msgid "Release date: %s" msgstr "" #: src/gpodder/gtkui/main.py:3128 msgid "Download the latest version from gpodder.org?" msgstr "" #: src/gpodder/gtkui/main.py:3141 msgid "About gPodder" msgstr "" #: src/gpodder/gtkui/main.py:3424 msgid "Please register a YouTube API key and set it in the preferences." msgstr "" #: src/gpodder/gtkui/main.py:3425 msgid "Would you like to set up an API key now?" msgstr "" #: src/gpodder/gtkui/main.py:3425 msgid "API key required" msgstr "" #: src/gpodder/gtkui/main.py:3444 bin/gpo:631 msgid "No unique URL found" msgstr "" #: src/gpodder/gtkui/main.py:3449 bin/gpo:637 msgid "Already subscribed" msgstr "" #: src/gpodder/gtkui/main.py:3458 bin/gpo:649 #, python-format msgid "Make sure the API key is correct. Error: %(message)s" msgstr "" #: src/gpodder/gtkui/main.py:3459 msgid "Error getting YouTube channels" msgstr "" #: src/gpodder/gtkui/main.py:3462 msgid "Successfully migrated subscriptions" msgstr "" #: src/gpodder/gtkui/main.py:3464 msgid "Subscriptions are up to date" msgstr "" #: src/gpodder/gtkui/main.py:3467 msgid "These URLs failed:" msgstr "" #: src/gpodder/gtkui/main.py:3469 msgid "Could not migrate some subscriptions" msgstr "" #: src/gpodder/gtkui/main.py:3493 msgid "Cannot start gPodder" msgstr "" #: src/gpodder/gtkui/main.py:3494 #, python-format msgid "D-Bus error: %s" msgstr "" #: src/gpodder/gtkui/model.py:68 #, python-format msgid "released %s" msgstr "" #: src/gpodder/gtkui/model.py:69 src/gpodder/gtkui/model.py:87 #: src/gpodder/gtkui/model.py:237 src/gpodder/gtkui/shownotes.py:84 #, python-format msgid "from %s" msgstr "" #: src/gpodder/gtkui/model.py:80 src/gpodder/gtkui/model.py:393 msgid "played" msgstr "" #: src/gpodder/gtkui/model.py:82 msgid "unplayed" msgstr "" #: src/gpodder/gtkui/model.py:85 msgid "today" msgstr "иЇй…иБйˆиВ" #: src/gpodder/gtkui/model.py:86 #, python-format msgid "downloaded %s" msgstr "" #: src/gpodder/gtkui/model.py:337 msgid "Deleted" msgstr "" #: src/gpodder/gtkui/model.py:342 msgid "New episode" msgstr "" #: src/gpodder/gtkui/model.py:356 msgid "Downloaded episode" msgstr "" #: src/gpodder/gtkui/model.py:359 msgid "Downloaded video episode" msgstr "" #: src/gpodder/gtkui/model.py:362 msgid "Downloaded image" msgstr "" #: src/gpodder/gtkui/model.py:365 msgid "Downloaded file" msgstr "" #: src/gpodder/gtkui/model.py:380 msgid "missing file" msgstr "" #: src/gpodder/gtkui/model.py:384 msgid "never displayed" msgstr "" #: src/gpodder/gtkui/model.py:386 msgid "never played" msgstr "" #: src/gpodder/gtkui/model.py:388 msgid "never opened" msgstr "" #: src/gpodder/gtkui/model.py:391 msgid "displayed" msgstr "" #: src/gpodder/gtkui/model.py:395 msgid "opened" msgstr "" #: src/gpodder/gtkui/model.py:397 msgid "deletion prevented" msgstr "" #: src/gpodder/gtkui/model.py:432 share/gpodder/ui/gtk/gpodder.ui.h:32 msgid "All episodes" msgstr "" #: src/gpodder/gtkui/model.py:433 msgid "from all podcasts" msgstr "" #: src/gpodder/gtkui/model.py:625 msgid "Subscription paused" msgstr "" #: src/gpodder/gtkui/shownotes.py:118 msgid "Please select an episode" msgstr "" #: src/gpodder/gtkui/interface/addpodcast.py:74 msgid "Nothing to paste." msgstr "" #: src/gpodder/gtkui/interface/addpodcast.py:74 msgid "Clipboard is empty" msgstr "" #: src/gpodder/gtkui/interface/common.py:160 msgid "Username" msgstr "" #: src/gpodder/gtkui/interface/common.py:163 msgid "New user" msgstr "" #: src/gpodder/gtkui/interface/common.py:170 msgid "Login" msgstr "" #: src/gpodder/gtkui/interface/common.py:172 msgid "Authentication required" msgstr "" #: src/gpodder/gtkui/interface/common.py:203 msgid "Password" msgstr "" #: src/gpodder/gtkui/interface/common.py:225 msgid "Select destination" msgstr "" #: src/gpodder/gtkui/interface/configeditor.py:34 msgid "Setting" msgstr "" #: src/gpodder/gtkui/interface/configeditor.py:41 msgid "Set to" msgstr "" #: src/gpodder/gtkui/interface/configeditor.py:81 #, python-format msgid "Cannot set %(field)s to %(value)s. Needed data type: %(datatype)s" msgstr "" #: src/gpodder/gtkui/interface/configeditor.py:85 msgid "Error setting option" msgstr "" #: src/gpodder/gtkui/desktop/channel.py:100 msgid "Add section" msgstr "" #: src/gpodder/gtkui/desktop/channel.py:100 msgid "New section:" msgstr "" #: src/gpodder/gtkui/desktop/channel.py:133 msgid "Select new podcast cover artwork" msgstr "" #: src/gpodder/gtkui/desktop/channel.py:161 msgid "You can only drop a single image or URL here." msgstr "" #: src/gpodder/gtkui/desktop/channel.py:161 #: src/gpodder/gtkui/desktop/channel.py:171 msgid "Drag and drop" msgstr "" #: src/gpodder/gtkui/desktop/channel.py:171 msgid "You can only drop local files and http:// URLs here." msgstr "" #: src/gpodder/gtkui/desktop/deviceplaylist.py:98 #, python-format msgid "Folder %s could not be created." msgstr "" #: src/gpodder/gtkui/desktop/deviceplaylist.py:98 #, fuzzy msgid "Error writing playlist" msgstr "иЎиЗиЇ иЏиБ иЈиЇиБкЏиАиЇиБлŒ" #: src/gpodder/gtkui/desktop/episodeselector.py:288 #: share/gpodder/ui/gtk/gpodderepisodeselector.ui.h:2 msgid "Select all" msgstr "" #: src/gpodder/gtkui/desktop/episodeselector.py:292 #: share/gpodder/ui/gtk/gpodderepisodeselector.ui.h:3 msgid "Select none" msgstr "" #: src/gpodder/gtkui/desktop/episodeselector.py:324 msgid "Nothing selected" msgstr "" #: src/gpodder/gtkui/desktop/episodeselector.py:325 #, python-format msgid "%(count)d episode" msgid_plural "%(count)d episodes" msgstr[0] "" #: src/gpodder/gtkui/desktop/episodeselector.py:327 #, python-format msgid "size: %s" msgstr "" #: src/gpodder/gtkui/desktop/podcastdirectory.py:238 #, fuzzy msgid "Loading podcasts" msgstr "иЇйиВйˆиЏй† йОиЇиЏкЉиГиЊй‡иЇ" #: src/gpodder/gtkui/desktop/podcastdirectory.py:239 msgid "Please wait while the podcast list is downloaded" msgstr "" #: src/gpodder/gtkui/desktop/preferences.py:51 #: src/gpodder/gtkui/desktop/preferences.py:93 msgid "Do nothing" msgstr "" #: src/gpodder/gtkui/desktop/preferences.py:52 msgid "Show episode list" msgstr "" #: src/gpodder/gtkui/desktop/preferences.py:53 msgid "Add to download list" msgstr "" #: src/gpodder/gtkui/desktop/preferences.py:54 msgid "Download immediately" msgstr "" #: src/gpodder/gtkui/desktop/preferences.py:72 msgid "None" msgstr "" #: src/gpodder/gtkui/desktop/preferences.py:73 msgid "iPod" msgstr "" #: src/gpodder/gtkui/desktop/preferences.py:74 msgid "Filesystem-based" msgstr "" #: src/gpodder/gtkui/desktop/preferences.py:94 msgid "Mark as played" msgstr "" #: src/gpodder/gtkui/desktop/preferences.py:95 msgid "Delete from gPodder" msgstr "" #: src/gpodder/gtkui/desktop/preferences.py:123 #, python-format msgid "Custom (%(format_ids)s)" msgstr "" #: src/gpodder/gtkui/desktop/preferences.py:318 msgid "Name" msgstr "" #: src/gpodder/gtkui/desktop/preferences.py:369 #, fuzzy msgid "Documentation" msgstr "й…иЏиЊ" #: src/gpodder/gtkui/desktop/preferences.py:374 msgid "Extension info" msgstr "" #: src/gpodder/gtkui/desktop/preferences.py:379 msgid "Support the author" msgstr "" #: src/gpodder/gtkui/desktop/preferences.py:413 msgid "Extension cannot be activated" msgstr "" #: src/gpodder/gtkui/desktop/preferences.py:426 msgid "Extension module info" msgstr "" #: src/gpodder/gtkui/desktop/preferences.py:463 msgid "Configure audio player" msgstr "" #: src/gpodder/gtkui/desktop/preferences.py:464 #: src/gpodder/gtkui/desktop/preferences.py:474 msgid "Command:" msgstr "" #: src/gpodder/gtkui/desktop/preferences.py:473 msgid "Configure video player" msgstr "" #: src/gpodder/gtkui/desktop/preferences.py:485 #: src/gpodder/gtkui/desktop/preferences.py:503 msgid "manually" msgstr "" #: src/gpodder/gtkui/desktop/preferences.py:505 #, python-format msgid "after %(count)d day" msgid_plural "after %(count)d days" msgstr[0] "" #: src/gpodder/gtkui/desktop/preferences.py:541 msgid "Replace subscription list on server" msgstr "" #: src/gpodder/gtkui/desktop/preferences.py:542 msgid "" "Remote podcasts that have not been added locally will be removed on the " "server. Continue?" msgstr "" #: src/gpodder/gtkui/desktop/preferences.py:621 msgid "Select folder for mount point" msgstr "" #: src/gpodder/gtkui/desktop/preferences.py:638 msgid "Select folder for playlists" msgstr "" #: src/gpodder/gtkui/desktop/sync.py:86 msgid "No device configured" msgstr "" #: src/gpodder/gtkui/desktop/sync.py:87 msgid "Please set up your device in the preferences dialog." msgstr "" #: src/gpodder/gtkui/desktop/sync.py:91 msgid "Cannot open device" msgstr "" #: src/gpodder/gtkui/desktop/sync.py:92 msgid "Please check the settings in the preferences dialog." msgstr "" #: src/gpodder/gtkui/desktop/sync.py:139 msgid "Not enough space left on device" msgstr "" #: src/gpodder/gtkui/desktop/sync.py:140 #, python-format msgid "" "Additional free space required: %(required_space)s\n" "Do you want to continue?" msgstr "" #: src/gpodder/gtkui/desktop/sync.py:199 #, fuzzy msgid "Update successful" msgstr "й„лŒиГиЊ иЈиЇиБкЏиАиЇиБлŒт€Œй‡иЇлŒ й…йˆйй‚" #: src/gpodder/gtkui/desktop/sync.py:200 msgid "The playlist on your MP3 player has been updated." msgstr "" #: src/gpodder/gtkui/desktop/sync.py:274 msgid "Episodes have been deleted on device" msgstr "" #: src/gpodder/gtkui/desktop/sync.py:285 #, fuzzy msgid "Error writing playlist files" msgstr "иЎиЗиЇ иЏиБ иЊиЈиЏлŒй„ йОиБйˆй†иЏй‡." #: src/gpodder/plugins/soundcloud.py:154 msgid "Unknown track" msgstr "" #: src/gpodder/plugins/soundcloud.py:181 #, python-format msgid "%s on Soundcloud" msgstr "" #: src/gpodder/plugins/soundcloud.py:190 #, python-format msgid "Tracks published by %s on Soundcloud." msgstr "" #: src/gpodder/plugins/soundcloud.py:217 #, python-format msgid "%s's favorites on Soundcloud" msgstr "" #: src/gpodder/plugins/soundcloud.py:223 #, python-format msgid "Tracks favorited by %s on Soundcloud." msgstr "" #: share/gpodder/extensions/audio_converter.py:20 msgid "Convert audio files" msgstr "" #: share/gpodder/extensions/audio_converter.py:21 msgid "Transcode audio files to mp3/ogg" msgstr "" #: share/gpodder/extensions/audio_converter.py:84 #: share/gpodder/extensions/video_converter.py:86 #, python-format msgid "Convert to %(format)s" msgstr "" #: share/gpodder/extensions/audio_converter.py:111 #: share/gpodder/extensions/rockbox_convert2mp4.py:65 #: share/gpodder/extensions/video_converter.py:111 msgid "File converted" msgstr "" #: share/gpodder/extensions/audio_converter.py:114 #: share/gpodder/extensions/video_converter.py:114 msgid "Conversion failed" msgstr "" #: share/gpodder/extensions/concatenate_videos.py:20 #: share/gpodder/extensions/concatenate_videos.py:100 msgid "Concatenate videos" msgstr "" #: share/gpodder/extensions/concatenate_videos.py:21 msgid "Add a context menu item for concatenating multiple videos" msgstr "" #: share/gpodder/extensions/concatenate_videos.py:37 msgid "Save video" msgstr "" #: share/gpodder/extensions/concatenate_videos.py:66 msgid "Concatenating video files" msgstr "" #: share/gpodder/extensions/concatenate_videos.py:67 #, python-format msgid "Writing %(filename)s" msgstr "" #: share/gpodder/extensions/concatenate_videos.py:78 msgid "Videos successfully converted" msgstr "" #: share/gpodder/extensions/concatenate_videos.py:79 #, fuzzy msgid "Error converting videos" msgstr "иЎиЗиЇ иЏиБ иЊиЈиЏлŒй„ йОиБйˆй†иЏй‡." #: share/gpodder/extensions/concatenate_videos.py:80 msgid "Concatenation result" msgstr "" #: share/gpodder/extensions/enqueue_in_mediaplayer.py:16 msgid "Enqueue in media players" msgstr "" #: share/gpodder/extensions/enqueue_in_mediaplayer.py:17 msgid "" "Add a context menu item for enqueueing episodes in installed media players" msgstr "" #: share/gpodder/extensions/enqueue_in_mediaplayer.py:35 msgid "Enqueue in" msgstr "" #: share/gpodder/extensions/episode_website_context_menu.py:14 msgid "\"Open website\" episode context menu" msgstr "" #: share/gpodder/extensions/episode_website_context_menu.py:15 msgid "Add a context menu item for opening the website of an episode" msgstr "" #: share/gpodder/extensions/episode_website_context_menu.py:30 msgid "Open website" msgstr "" #: share/gpodder/extensions/gtk_statusicon.py:14 msgid "Gtk Status Icon" msgstr "" #: share/gpodder/extensions/gtk_statusicon.py:15 msgid "Show a status icon for Gtk-based Desktops." msgstr "" #: share/gpodder/extensions/minimize_on_start.py:10 msgid "Minimize on start" msgstr "" #: share/gpodder/extensions/minimize_on_start.py:11 msgid "Minimizes the gPodder window on startup." msgstr "" #: share/gpodder/extensions/mpris-listener.py:33 msgid "MPRIS Listener" msgstr "" #: share/gpodder/extensions/mpris-listener.py:34 msgid "Convert MPRIS notifications to gPodder Media Player D-Bus API" msgstr "" #: share/gpodder/extensions/normalize_audio.py:21 msgid "Normalize audio with re-encoding" msgstr "" #: share/gpodder/extensions/normalize_audio.py:22 msgid "Normalize the volume of audio files with normalize-audio" msgstr "" #: share/gpodder/extensions/normalize_audio.py:99 msgid "File normalized" msgstr "" #: share/gpodder/extensions/rename_download.py:16 msgid "Rename episodes after download" msgstr "" #: share/gpodder/extensions/rename_download.py:17 msgid "Rename episodes to \".\" on download" msgstr "" #: share/gpodder/extensions/rm_ogg_cover.py:37 msgid "Remove cover art from OGG files" msgstr "" #: share/gpodder/extensions/rm_ogg_cover.py:38 msgid "removes coverart from all downloaded ogg files" msgstr "" #: share/gpodder/extensions/rm_ogg_cover.py:66 msgid "Remove cover art" msgstr "" #: share/gpodder/extensions/rockbox_convert2mp4.py:26 msgid "Convert video files to MP4 for Rockbox" msgstr "" #: share/gpodder/extensions/rockbox_convert2mp4.py:27 msgid "Converts all videos to a Rockbox-compatible format" msgstr "" #: share/gpodder/extensions/sonos.py:19 share/gpodder/extensions/sonos.py:78 msgid "Stream to Sonos" msgstr "" #: share/gpodder/extensions/sonos.py:20 msgid "Stream podcasts to Sonos speakers" msgstr "" #: share/gpodder/extensions/tagging.py:45 msgid "Tag downloaded files using Mutagen" msgstr "" #: share/gpodder/extensions/tagging.py:46 msgid "Add episode and podcast titles to MP3/OGG tags" msgstr "" #: share/gpodder/extensions/taskbar_progress.py:28 msgid "Show download progress on the taskbar" msgstr "" #: share/gpodder/extensions/taskbar_progress.py:29 msgid "Displays the progress on the Windows taskbar." msgstr "" #: share/gpodder/extensions/ted_subtitles.py:16 msgid "Subtitle Downloader for TED Talks" msgstr "" #: share/gpodder/extensions/ted_subtitles.py:17 msgid "Downloads .srt subtitles for TED Talks Videos" msgstr "" #: share/gpodder/extensions/ubuntu_appindicator.py:10 msgid "Ubuntu App Indicator" msgstr "" #: share/gpodder/extensions/ubuntu_appindicator.py:11 msgid "Show a status indicator in the top bar." msgstr "" #: share/gpodder/extensions/ubuntu_appindicator.py:47 msgid "Show main window" msgstr "" #: share/gpodder/extensions/ubuntu_appindicator.py:57 #: share/gpodder/ui/gtk/gpodder.ui.h:6 msgid "Quit" msgstr "" #: share/gpodder/extensions/ubuntu_unity.py:10 msgid "Ubuntu Unity Integration" msgstr "" #: share/gpodder/extensions/ubuntu_unity.py:11 msgid "Show download progress in the Unity Launcher icon." msgstr "" #: share/gpodder/extensions/update_feeds_on_startup.py:14 msgid "Search for new episodes on startup" msgstr "" #: share/gpodder/extensions/update_feeds_on_startup.py:15 msgid "Starts the search for new episodes on startup" msgstr "" #: share/gpodder/extensions/video_converter.py:22 msgid "Convert video files" msgstr "" #: share/gpodder/extensions/video_converter.py:23 msgid "Transcode video files to avi/mp4/m4v" msgstr "" #: share/gpodder/ui/gtk/gpodderaddpodcast.ui.h:1 msgid "Add a new podcast" msgstr "" #: share/gpodder/ui/gtk/gpodderaddpodcast.ui.h:2 msgid "URL:" msgstr "" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:1 msgid "gPodder Podcast Editor" msgstr "" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:2 msgid "Section:" msgstr "" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:3 msgid "Disable feed updates (pause subscription)" msgstr "" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:4 msgid "Synchronize to MP3 player devices" msgstr "" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:5 msgid "Strategy:" msgstr "" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:6 #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:6 msgid "General" msgstr "" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:7 msgid "HTTP/FTP Authentication" msgstr "" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:8 #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:13 msgid "Username:" msgstr "" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:9 #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:14 msgid "Password:" msgstr "" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:10 msgid "Locations" msgstr "" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:11 msgid "Download to:" msgstr "" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:12 msgid "Website:" msgstr "" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:13 msgid "website label" msgstr "" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:14 msgid "Advanced" msgstr "" #: share/gpodder/ui/gtk/gpodderconfigeditor.ui.h:1 msgid "gPodder Configuration Editor" msgstr "" #: share/gpodder/ui/gtk/gpodderconfigeditor.ui.h:2 msgid "Search for:" msgstr "" #: share/gpodder/ui/gtk/gpodderconfigeditor.ui.h:3 msgid "Show All" msgstr "" #: share/gpodder/ui/gtk/gpodderepisodeselector.ui.h:1 msgid "Select episodes" msgstr "" #: share/gpodder/ui/gtk/gpodderpodcastdirectory.ui.h:1 msgid "Find new podcasts" msgstr "" #: share/gpodder/ui/gtk/gpodderpodcastdirectory.ui.h:2 msgid "Select All" msgstr "" #: share/gpodder/ui/gtk/gpodderpodcastdirectory.ui.h:3 msgid "Select None" msgstr "" #: share/gpodder/ui/gtk/gpodderpodcastdirectory.ui.h:4 msgid "label" msgstr "" #: share/gpodder/ui/gtk/gpodderpodcastdirectory.ui.h:5 msgid "..." msgstr "" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:1 #: share/gpodder/ui/gtk/gpodder.ui.h:5 msgid "Preferences" msgstr "" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:2 msgid "Audio player:" msgstr "" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:3 msgid "Video player:" msgstr "" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:4 msgid "\"All episodes\" in podcast list" msgstr "" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:5 msgid "Use sections for podcast list" msgstr "" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:7 msgid "Preferred YouTube format:" msgstr "" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:8 msgid "YouTube API key (v3):" msgstr "" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:9 msgid "Preferred Vimeo format:" msgstr "" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:11 msgid "Extensions" msgstr "" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:12 msgid "Synchronize subscriptions and episode actions" msgstr "" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:15 msgid "Replace list on server with local subscriptions" msgstr "" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:16 msgid "Device name:" msgstr "" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:17 msgid "gpodder.net" msgstr "" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:18 msgid "Update interval:" msgstr "" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:19 msgid "Maximum number of episodes per podcast:" msgstr "" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:20 msgid "When new episodes are found:" msgstr "" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:21 msgid "Updating" msgstr "" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:22 msgid "Delete played episodes:" msgstr "" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:23 msgid "Remove played episodes even if unfinished" msgstr "" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:24 msgid "Also remove unplayed episodes" msgstr "" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:25 msgid "Clean-up" msgstr "" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:26 msgid "Device type:" msgstr "" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:27 msgid "Mountpoint:" msgstr "" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:28 msgid "After syncing an episode:" msgstr "" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:29 msgid "Create playlists on device" msgstr "" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:30 msgid "Playlists Folder:" msgstr "" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:31 msgid "Remove episodes deleted on device from gPodder" msgstr "" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:32 msgid "Only sync unplayed episodes" msgstr "" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:33 msgid "Devices" msgstr "" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:34 msgid "Edit config" msgstr "" #: share/gpodder/ui/gtk/gpodder.ui.h:1 msgid "_Podcasts" msgstr "" #: share/gpodder/ui/gtk/gpodder.ui.h:2 msgid "Check for new episodes" msgstr "" #: share/gpodder/ui/gtk/gpodder.ui.h:3 msgid "Download new episodes" msgstr "" #: share/gpodder/ui/gtk/gpodder.ui.h:7 msgid "_Subscriptions" msgstr "" #: share/gpodder/ui/gtk/gpodder.ui.h:8 msgid "Discover new podcasts" msgstr "" #: share/gpodder/ui/gtk/gpodder.ui.h:9 msgid "Add podcast via URL" msgstr "" #: share/gpodder/ui/gtk/gpodder.ui.h:11 msgid "Unsubscribe" msgstr "" #: share/gpodder/ui/gtk/gpodder.ui.h:14 msgid "Import from OPML file" msgstr "" #: share/gpodder/ui/gtk/gpodder.ui.h:15 msgid "Export to OPML file" msgstr "" #: share/gpodder/ui/gtk/gpodder.ui.h:16 msgid "Go to gpodder.net" msgstr "" #: share/gpodder/ui/gtk/gpodder.ui.h:17 msgid "_Episodes" msgstr "" #: share/gpodder/ui/gtk/gpodder.ui.h:18 msgid "Play" msgstr "" #: share/gpodder/ui/gtk/gpodder.ui.h:19 msgid "Open" msgstr "" #: share/gpodder/ui/gtk/gpodder.ui.h:22 msgid "Delete" msgstr "" #: share/gpodder/ui/gtk/gpodder.ui.h:23 msgid "Toggle new status" msgstr "" #: share/gpodder/ui/gtk/gpodder.ui.h:24 msgid "Change delete lock" msgstr "" #: share/gpodder/ui/gtk/gpodder.ui.h:26 msgid "E_xtras" msgstr "" #: share/gpodder/ui/gtk/gpodder.ui.h:27 msgid "Sync to device" msgstr "" #: share/gpodder/ui/gtk/gpodder.ui.h:28 msgid "Update YouTube subscriptions" msgstr "" #: share/gpodder/ui/gtk/gpodder.ui.h:29 msgid "_View" msgstr "" #: share/gpodder/ui/gtk/gpodder.ui.h:30 msgid "Toolbar" msgstr "" #: share/gpodder/ui/gtk/gpodder.ui.h:31 msgid "Episode descriptions" msgstr "" #: share/gpodder/ui/gtk/gpodder.ui.h:33 msgid "Hide deleted episodes" msgstr "" #: share/gpodder/ui/gtk/gpodder.ui.h:34 msgid "Downloaded episodes" msgstr "" #: share/gpodder/ui/gtk/gpodder.ui.h:35 msgid "Unplayed episodes" msgstr "" #: share/gpodder/ui/gtk/gpodder.ui.h:36 msgid "Hide podcasts without episodes" msgstr "" #: share/gpodder/ui/gtk/gpodder.ui.h:37 msgid "_Help" msgstr "" #: share/gpodder/ui/gtk/gpodder.ui.h:38 msgid "User manual" msgstr "" #: share/gpodder/ui/gtk/gpodder.ui.h:39 msgid "Software updates" msgstr "" #: share/gpodder/ui/gtk/gpodder.ui.h:40 msgid "Filter:" msgstr "" #: share/gpodder/ui/gtk/gpodder.ui.h:41 msgid "Podcasts" msgstr "" #: share/gpodder/ui/gtk/gpodder.ui.h:42 msgid "Limit rate to" msgstr "" #: share/gpodder/ui/gtk/gpodder.ui.h:43 msgid "KiB/s" msgstr "" #: share/gpodder/ui/gtk/gpodder.ui.h:44 msgid "Limit downloads to" msgstr "" #: share/gpodder/ui/gtk/gpodderwelcome.ui.h:2 msgid "Welcome to gPodder" msgstr "" #: share/gpodder/ui/gtk/gpodderwelcome.ui.h:3 msgid "Your podcast list is empty." msgstr "" #: share/gpodder/ui/gtk/gpodderwelcome.ui.h:4 msgid "Choose from a list of example podcasts" msgstr "" #: share/gpodder/ui/gtk/gpodderwelcome.ui.h:5 msgid "Add a podcast by entering its URL" msgstr "" #: share/gpodder/ui/gtk/gpodderwelcome.ui.h:6 msgid "Restore my subscriptions from gpodder.net" msgstr "" #: bin/gpo:266 msgid "Podcast update requested by extensions." msgstr "" #: bin/gpo:270 msgid "Episode download requested by extensions." msgstr "" #: bin/gpo:323 #, python-format msgid "Invalid url: %s" msgstr "" #: bin/gpo:340 bin/gpo:416 bin/gpo:450 bin/gpo:582 bin/gpo:597 bin/gpo:717 #, python-format msgid "You are not subscribed to %s." msgstr "" #: bin/gpo:346 #, python-format msgid "Already subscribed to %s." msgstr "" #: bin/gpo:352 #, python-format msgid "Cannot subscribe to %s." msgstr "" #: bin/gpo:368 #, python-format msgid "Successfully added %s." msgstr "" #: bin/gpo:386 msgid "This configuration option does not exist." msgstr "" #: bin/gpo:390 msgid "Can only set leaf configuration nodes." msgstr "" #: bin/gpo:404 #, python-format msgid "Renamed %(old_title)s to %(new_title)s." msgstr "" #: bin/gpo:420 #, python-format msgid "Unsubscribed from %s." msgstr "" #: bin/gpo:494 msgid "Updates disabled" msgstr "" #: bin/gpo:505 #, python-format msgid "%(count)d new episode" msgid_plural "%(count)d new episodes" msgstr[0] "" #: bin/gpo:511 msgid "Checking for new episodes" msgstr "" #: bin/gpo:520 #, python-format msgid "Skipping %(podcast)s" msgstr "" #: bin/gpo:588 #, python-format msgid "Disabling feed update from %s." msgstr "" #: bin/gpo:603 #, python-format msgid "Enabling feed update from %s." msgstr "" #: bin/gpo:616 #, python-format msgid "Please register a YouTube API key and set it using %(command)s." msgstr "" #: bin/gpo:643 #, python-format msgid "Changing: %(old_url)s => %(new_url)s" msgstr "" #: bin/gpo:653 msgid "Nothing to fix" msgstr "" #: bin/gpo:672 msgid "No podcasts found." msgstr "" #: bin/gpo:686 msgid "Enter index to subscribe, ? for list" msgstr "" #: bin/gpo:700 bin/gpo:704 msgid "Invalid value." msgstr "" #: bin/gpo:721 #, python-format msgid "Invalid URL: %s" msgstr "" #: bin/gpo:724 #, python-format msgid "Changed URL from %(old_url)s to %(new_url)s." msgstr "" #: bin/gpo:782 #, python-format msgid "Syntax error: %(error)s" msgstr "" #: bin/gpo:876 msgid "Ambiguous command. Did you mean.." msgstr "" #: bin/gpo:880 msgid "The requested function is not available." msgstr "" #: bin/gpodder:105 msgid "print logging output on the console" msgstr "" #: bin/gpodder:108 msgid "subscribe to the feed at URL" msgstr "" #: bin/gpodder:113 msgid "Mac OS X application process number" msgstr "" #: share/applications/gpodder.desktop.in.h:2 msgid "gPodder Podcast Client" msgstr "" #: share/applications/gpodder.desktop.in.h:3 msgid "Podcast Client" msgstr "" #: share/applications/gpodder.desktop.in.h:4 msgid "Subscribe to audio and video content from the web" msgstr "" #: share/applications/gpodder-url-handler.desktop.in.h:1 msgid "gPodder (subscribe to feed)" msgstr "" gpodder-3.9.0/po/de.po0000644000016000001710000016765512654461625015666 0ustar jenkinsjenkins00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # # Translators: # Thomas Perl , 2012. msgid "" msgstr "" "Project-Id-Version: gPodder\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2016-02-03 20:31+0000\n" "PO-Revision-Date: 2015-05-24 19:53+0100\n" "Last-Translator: Thomas Perl \n" "Language-Team: German (http://www.transifex.com/projects/p/gpodder/language/" "de/)\n" "Language: de\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" "X-Generator: Poedit 1.5.4\n" #: src/gpodder/config.py:55 #, python-format msgid "gPodder on %s" msgstr "gPodder auf %s" #: src/gpodder/directory.py:95 msgid "gpodder.net search" msgstr "gpodder.net-Suche" #: src/gpodder/directory.py:104 msgid "OPML from web" msgstr "OPML vom Web" #: src/gpodder/directory.py:113 msgid "OPML file" msgstr "OPML-Datei" #: src/gpodder/directory.py:122 share/gpodder/ui/gtk/gpodderwelcome.ui.h:1 msgid "Getting started" msgstr "Erste Schritte" #: src/gpodder/directory.py:131 msgid "gpodder.net Top 50" msgstr "gpodder.net Top 50" #: src/gpodder/directory.py:140 msgid "gpodder.net Tags" msgstr "gpodder.net-Tags" #: src/gpodder/directory.py:152 msgid "Soundcloud search" msgstr "Soundcloud-Suche" #: src/gpodder/directory.py:165 msgid "Imported OPML file" msgstr "Importierte OPML-Datei" #: src/gpodder/download.py:329 msgid "Wrong username/password" msgstr "Falscher Benutzername/Passwort" #: src/gpodder/download.py:527 src/gpodder/sync.py:924 msgid "Added" msgstr "HinzugefУМgt" #: src/gpodder/download.py:527 src/gpodder/sync.py:924 msgid "Queued" msgstr "Eingereiht" #: src/gpodder/download.py:527 src/gpodder/gtkui/model.py:327 msgid "Downloading" msgstr "Herunterladen" #: src/gpodder/download.py:528 src/gpodder/model.py:721 #: src/gpodder/sync.py:925 msgid "Finished" msgstr "Fertig" #: src/gpodder/download.py:528 src/gpodder/sync.py:925 msgid "Failed" msgstr "Fehlgeschlagen" #: src/gpodder/download.py:528 src/gpodder/sync.py:925 msgid "Cancelled" msgstr "Abgebrochen" #: src/gpodder/download.py:528 src/gpodder/sync.py:925 msgid "Paused" msgstr "Pause" #: src/gpodder/download.py:862 msgid "Missing content from server" msgstr "Fehlender Inhalt vom Server" #: src/gpodder/download.py:868 #, python-format msgid "I/O Error: %(error)s: %(filename)s" msgstr "I/O Fehler: %(error)s: %(filename)s" #: src/gpodder/download.py:875 #, python-format msgid "HTTP Error %(code)s: %(message)s" msgstr "HTTP-Fehler %(code)s: %(message)s" #: src/gpodder/download.py:879 src/gpodder/sync.py:1081 #, python-format msgid "Error: %s" msgstr "Fehler: %s" #: src/gpodder/extensions.py:55 msgid "Desktop Integration" msgstr "Desktop-Integration" #: src/gpodder/extensions.py:56 msgid "Interface" msgstr "OberflУЄche" #: src/gpodder/extensions.py:57 msgid "Post download" msgstr "Nach Downloads" #: src/gpodder/extensions.py:59 src/gpodder/model.py:779 #: src/gpodder/model.py:1225 msgid "Other" msgstr "Andere" #: src/gpodder/extensions.py:100 msgid "No description for this extension." msgstr "Keine Beschreibung fУМr diese Erweiterung." #: src/gpodder/extensions.py:212 #, python-format msgid "Command not found: %(command)s" msgstr "Befehl nicht gefunden: %(command)s" #: src/gpodder/extensions.py:228 #, python-format msgid "Need at least one of the following commands: %(list_of_commands)s" msgstr "Brauche zumindest eines der folgenden Kommandos: %(list_of_commands)s" #: src/gpodder/extensions.py:265 #, python-format msgid "Python module not found: %(module)s" msgstr "Python-Modul nicht gefunden: %(module)s" #: src/gpodder/model.py:446 src/gpodder/plugins/soundcloud.py:156 msgid "No description available" msgstr "Keine Beschreibung verfУМgbar" #: src/gpodder/model.py:679 msgid "unknown" msgstr "unbekannt" #: src/gpodder/model.py:746 msgid "Default" msgstr "Standard" #: src/gpodder/model.py:747 msgid "Only keep latest" msgstr "Nur Neueste behalten" #: src/gpodder/model.py:1208 src/gpodder/model.py:1223 #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:10 msgid "Video" msgstr "Video" #: src/gpodder/model.py:1221 msgid "Audio" msgstr "Audio" #: src/gpodder/my.py:174 #, python-format msgid "Add %s" msgstr "Abonniere %s" #: src/gpodder/my.py:176 #, python-format msgid "Remove %s" msgstr "Entferne %s" #: src/gpodder/sync.py:196 msgid "Cancelled by user" msgstr "Vom User abgebrochen" #: src/gpodder/sync.py:199 msgid "Writing data to disk" msgstr "Schreibe Daten auf das GerУЄt" #: src/gpodder/sync.py:295 msgid "Opening iPod database" msgstr "У–ffnen iPod-Datenbank" #: src/gpodder/sync.py:305 msgid "iPod opened" msgstr "iPod geУЖffnet" #: src/gpodder/sync.py:316 msgid "Saving iPod database" msgstr "Speichere iPod-Datenbank" #: src/gpodder/sync.py:321 msgid "Writing extended gtkpod database" msgstr "Schreibe erweiterte gtkpod-Datenbank" #: src/gpodder/sync.py:397 src/gpodder/sync.py:680 src/gpodder/sync.py:874 #, python-format msgid "Removing %s" msgstr "Entferne %s" #: src/gpodder/sync.py:412 src/gpodder/sync.py:557 #, python-format msgid "Adding %s" msgstr "FУМge %s hinzu" #: src/gpodder/sync.py:430 #, python-format msgid "Error copying %(episode)s: Not enough free space on %(mountpoint)s" msgstr "" "Fehler beim Kopieren von %(episode)s: Nicht genУМgend freier Speicher auf " "%(mountpoint)s" #: src/gpodder/sync.py:515 msgid "Opening MP3 player" msgstr "У–ffne MP3-Player" #: src/gpodder/sync.py:518 msgid "MP3 player opened" msgstr "MP3-Player geУЖffnet" #: src/gpodder/sync.py:576 #, python-format msgid "" "Not enough space in %(path)s: %(free)s available, but need at least %(need)s" msgstr "" #: src/gpodder/sync.py:603 src/gpodder/sync.py:611 #, python-format msgid "Error opening %(filename)s: %(message)s" msgstr "Fehler beim У–ffnen von %(filename)s: %(message)s" #: src/gpodder/sync.py:780 src/gpodder/sync.py:786 msgid "MTP device" msgstr "MTP-GerУЄt" #: src/gpodder/sync.py:793 msgid "Opening the MTP device" msgstr "У–ffne MTP-GerУЄt" #: src/gpodder/sync.py:803 #, python-format msgid "%s opened" msgstr "%s geУЖffnet" #: src/gpodder/sync.py:808 #, python-format msgid "Closing %s" msgstr "SchlieУŸe %s" #: src/gpodder/sync.py:816 #, python-format msgid "%s closed" msgstr "%s geschlossen" #: src/gpodder/sync.py:821 bin/gpo:708 #, python-format msgid "Adding %s..." msgstr "FУМge %s hinzu..." #: src/gpodder/sync.py:924 msgid "Synchronizing" msgstr "Synchronisiere" #: src/gpodder/util.py:429 #, python-format msgid "%(count)d day ago" msgid_plural "%(count)d days ago" msgstr[0] "vor %(count)d Tag" msgstr[1] "vor %(count)d Tagen" #: src/gpodder/util.py:508 msgid "Today" msgstr "Heute" #: src/gpodder/util.py:510 msgid "Yesterday" msgstr "Gestern" #: src/gpodder/util.py:553 src/gpodder/util.py:556 msgid "(unknown)" msgstr "(unbekannt)" #: src/gpodder/util.py:1193 src/gpodder/util.py:1212 #, python-format msgid "%(count)d second" msgid_plural "%(count)d seconds" msgstr[0] "%(count)d Sekunde" msgstr[1] "%(count)d Sekunden" #: src/gpodder/util.py:1206 #, python-format msgid "%(count)d hour" msgid_plural "%(count)d hours" msgstr[0] "%(count)d Stunde" msgstr[1] "%(count)d Stunden" #: src/gpodder/util.py:1209 #, python-format msgid "%(count)d minute" msgid_plural "%(count)d minutes" msgstr[0] "%(count)d Minute" msgstr[1] "%(count)d Minuten" #: src/gpodder/util.py:1215 msgid "and" msgstr "und" #: src/gpodder/gtkui/config.py:50 msgid "Integer" msgstr "Integer" #: src/gpodder/gtkui/config.py:52 msgid "Float" msgstr "Float" #: src/gpodder/gtkui/config.py:54 msgid "Boolean" msgstr "Boolesch" #: src/gpodder/gtkui/config.py:56 msgid "String" msgstr "String" #: src/gpodder/gtkui/desktopfile.py:70 #, python-format msgid "Command: %s" msgstr "Kommando: %s" #: src/gpodder/gtkui/desktopfile.py:150 msgid "Default application" msgstr "Standard-Programm" #: src/gpodder/gtkui/main.py:205 share/applications/gpodder.desktop.in.h:1 msgid "gPodder" msgstr "gPodder" #: src/gpodder/gtkui/main.py:288 msgid "Loading incomplete downloads" msgstr "Lade unvollstУЄndige Downloads" #: src/gpodder/gtkui/main.py:289 msgid "Some episodes have not finished downloading in a previous session." msgstr "" "Einige Episoden wurden das letzte Mal nicht vollstУЄndig heruntergeladen." #: src/gpodder/gtkui/main.py:291 #, python-format msgid "%(count)d partial file" msgid_plural "%(count)d partial files" msgstr[0] "%(count)d unvollstУЄndige Datei" msgstr[1] "%(count)d unvollstУЄndige Dateien" #: src/gpodder/gtkui/main.py:306 msgid "Resume all" msgstr "Alle fortsetzen" #: src/gpodder/gtkui/main.py:316 msgid "Incomplete downloads from a previous session were found." msgstr "UnvollstУЄndige Downloads von einer frУМheren Sitzung gefunden." #: src/gpodder/gtkui/main.py:414 msgid "Action" msgstr "Aktion" #: src/gpodder/gtkui/main.py:461 msgid "Confirm changes from gpodder.net" msgstr "У„nderungen von gpodder.net bestУЄtigen" #: src/gpodder/gtkui/main.py:462 msgid "Select the actions you want to carry out." msgstr "WУЄhlen Sie die Aktionen, die Sie ausfУМhren mУЖchten." #: src/gpodder/gtkui/main.py:502 msgid "Uploading subscriptions" msgstr "Lade Abonnements hoch" #: src/gpodder/gtkui/main.py:503 msgid "Your subscriptions are being uploaded to the server." msgstr "Ihre Abonnements werden auf den Server geladen." #: src/gpodder/gtkui/main.py:508 msgid "List uploaded successfully." msgstr "Upload der Liste erfolgreich." #: src/gpodder/gtkui/main.py:515 msgid "Error while uploading" msgstr "Fehler beim Upload" #: src/gpodder/gtkui/main.py:800 src/gpodder/gtkui/main.py:928 #: src/gpodder/gtkui/main.py:2622 src/gpodder/gtkui/main.py:2815 #: src/gpodder/gtkui/desktop/episodeselector.py:132 #: src/gpodder/gtkui/desktop/sync.py:270 msgid "Episode" msgstr "Episode" #: src/gpodder/gtkui/main.py:819 msgid "Size" msgstr "GrУЖУŸe" #: src/gpodder/gtkui/main.py:824 msgid "Duration" msgstr "Dauer" #: src/gpodder/gtkui/main.py:828 msgid "Released" msgstr "VerУЖffentlicht" #: src/gpodder/gtkui/main.py:855 msgid "Visible columns" msgstr "Sichtbare Spalten" #: src/gpodder/gtkui/main.py:948 src/gpodder/gtkui/main.py:1108 #: share/gpodder/ui/gtk/gpodder.ui.h:45 msgid "Progress" msgstr "Fortschritt" #: src/gpodder/gtkui/main.py:982 msgid "Loading episodes" msgstr "Lade Episoden" #: src/gpodder/gtkui/main.py:985 msgid "No episodes in current view" msgstr "Keine Episoden in dieser Ansicht" #: src/gpodder/gtkui/main.py:987 msgid "No episodes available" msgstr "Keine Episoden verfУМgbar" #: src/gpodder/gtkui/main.py:993 msgid "No podcasts in this view" msgstr "Keine Podcasts in dieser Ansicht" #: src/gpodder/gtkui/main.py:995 msgid "No subscriptions" msgstr "Keine Abonnements" #: src/gpodder/gtkui/main.py:997 msgid "No active tasks" msgstr "Keine aktiven Tasks" #: src/gpodder/gtkui/main.py:1112 src/gpodder/gtkui/main.py:1114 #, python-format msgid "%(count)d active" msgid_plural "%(count)d active" msgstr[0] "%(count)d aktiv" msgstr[1] "%(count)d aktiv" #: src/gpodder/gtkui/main.py:1116 #, python-format msgid "%(count)d failed" msgid_plural "%(count)d failed" msgstr[0] "%(count)d fehlgeschlagen" msgstr[1] "%(count)d fehlgeschlagen" #: src/gpodder/gtkui/main.py:1118 #, python-format msgid "%(count)d queued" msgid_plural "%(count)d queued" msgstr[0] "%(count)d eingereiht" msgstr[1] "%(count)d eingereiht" #: src/gpodder/gtkui/main.py:1132 #, python-format msgid "downloading %(count)d file" msgid_plural "downloading %(count)d files" msgstr[0] "lade %(count)d Datei herunter" msgstr[1] "lade %(count)d Dateien herunter" #: src/gpodder/gtkui/main.py:1142 #, python-format msgid "synchronizing %(count)d file" msgid_plural "synchronizing %(count)d files" msgstr[0] "synchronisiere %(count)d Datei" msgstr[1] "synchronisiere %(count)d Dateien\t" #: src/gpodder/gtkui/main.py:1144 #, python-format msgid "%(queued)d task queued" msgid_plural "%(queued)d tasks queued" msgstr[0] "%(queued)d eingereiht" msgstr[1] "%(queued)d eingereiht" #: src/gpodder/gtkui/main.py:1168 msgid "Please report this problem and restart gPodder:" msgstr "Bitte diesen Fehler melden und gPodder neu starten:" #: src/gpodder/gtkui/main.py:1168 msgid "Unhandled exception" msgstr "Nicht behandelter Fehler" #: src/gpodder/gtkui/main.py:1235 #, python-format msgid "Feedparser error: %s" msgstr "Feedparser-Fehler: %s" #: src/gpodder/gtkui/main.py:1371 msgid "Could not download some episodes:" msgstr "Einige Podcasts konnten nicht heruntergeladen werden:" #: src/gpodder/gtkui/main.py:1373 src/gpodder/gtkui/main.py:1376 msgid "Downloads finished" msgstr "Downloads abgeschlossen" #: src/gpodder/gtkui/main.py:1379 msgid "Downloads failed" msgstr "Downloads fehlgeschlagen" #: src/gpodder/gtkui/main.py:1383 msgid "Could not sync some episodes:" msgstr "Einige Podcasts konnten nicht synchronisiert werden:" #: src/gpodder/gtkui/main.py:1385 src/gpodder/gtkui/main.py:1388 msgid "Device synchronization finished" msgstr "GerУЄte-Synchronisation abgeschlossen" #: src/gpodder/gtkui/main.py:1391 msgid "Device synchronization failed" msgstr "GerУЄte-Synchronisation fehlgeschlagen" #: src/gpodder/gtkui/main.py:1434 #, python-format msgid "%(count)d more episode" msgid_plural "%(count)d more episodes" msgstr[0] "%(count)d weitere Episode" msgstr[1] "%(count)d weitere Episoden" #: src/gpodder/gtkui/main.py:1508 msgid "Start download now" msgstr "Sofort herunterladen" #: src/gpodder/gtkui/main.py:1510 src/gpodder/gtkui/main.py:1719 #: src/gpodder/gtkui/desktop/episodeselector.py:144 #: share/gpodder/ui/gtk/gpodder.ui.h:20 msgid "Download" msgstr "Download" #: src/gpodder/gtkui/main.py:1511 share/gpodder/ui/gtk/gpodder.ui.h:21 msgid "Cancel" msgstr "Abbrechen" #: src/gpodder/gtkui/main.py:1512 msgid "Pause" msgstr "Pause" #: src/gpodder/gtkui/main.py:1514 msgid "Remove from list" msgstr "Von Liste entfernen" #: src/gpodder/gtkui/main.py:1553 share/gpodder/ui/gtk/gpodder.ui.h:13 msgid "Update podcast" msgstr "Podcast aktualisieren" #: src/gpodder/gtkui/main.py:1560 msgid "Open download folder" msgstr "Download-Ordner УЖffnen" #: src/gpodder/gtkui/main.py:1566 msgid "Mark episodes as old" msgstr "Episoden als alt markieren" #: src/gpodder/gtkui/main.py:1570 src/gpodder/gtkui/main.py:1778 msgid "Archive" msgstr "Archivieren" #: src/gpodder/gtkui/main.py:1575 msgid "Remove podcast" msgstr "Podcast entfernen" #: src/gpodder/gtkui/main.py:1590 share/gpodder/ui/gtk/gpodder.ui.h:10 msgid "Podcast settings" msgstr "Podcast-Einstellungen" #: src/gpodder/gtkui/main.py:1650 msgid "Error converting file." msgstr "Fehler beim Konvertieren der Datei." #: src/gpodder/gtkui/main.py:1650 msgid "Bluetooth file transfer" msgstr "Bluetooth Dateitransfer" #: src/gpodder/gtkui/main.py:1709 msgid "Preview" msgstr "Vorschau" #: src/gpodder/gtkui/main.py:1711 msgid "Stream" msgstr "Streamen" #: src/gpodder/gtkui/main.py:1755 msgid "Send to" msgstr "Senden an" #: src/gpodder/gtkui/main.py:1757 msgid "Local folder" msgstr "Lokaler Ordner" #: src/gpodder/gtkui/main.py:1762 msgid "Bluetooth device" msgstr "Bluetooth-GerУЄt" #: src/gpodder/gtkui/main.py:1769 msgid "New" msgstr "Neu" #: src/gpodder/gtkui/main.py:1785 share/gpodder/ui/gtk/gpodder.ui.h:25 msgid "Episode details" msgstr "Episoden-Details" #: src/gpodder/gtkui/main.py:1938 msgid "Please check your media player settings in the preferences dialog." msgstr "Bitte УМberprУМfen Sie die Medien-Player-Einstellungen." #: src/gpodder/gtkui/main.py:1939 msgid "Error opening player" msgstr "Fehler beim У–ffnen des Players" #: src/gpodder/gtkui/main.py:2178 msgid "Adding podcasts" msgstr "FУМge Podcasts hinzu" #: src/gpodder/gtkui/main.py:2179 msgid "Please wait while episode information is downloaded." msgstr "Bitte warten - Episoden-Informationen werden heruntergeladen." #: src/gpodder/gtkui/main.py:2186 msgid "Existing subscriptions skipped" msgstr "Existierende Abonnements УМbersprungen" #: src/gpodder/gtkui/main.py:2187 msgid "You are already subscribed to these podcasts:" msgstr "Sie haben diese Podcasts bereits abonniert:" #: src/gpodder/gtkui/main.py:2195 msgid "Podcast requires authentication" msgstr "Podcast benУЖtigt Authentifizierung" #: src/gpodder/gtkui/main.py:2196 #, python-format msgid "Please login to %s:" msgstr "Bitte auf %s einloggen:" #: src/gpodder/gtkui/main.py:2204 src/gpodder/gtkui/main.py:2299 msgid "Authentication failed" msgstr "Authentifizierung fehlgeschlagen" #: src/gpodder/gtkui/main.py:2210 msgid "Website redirection detected" msgstr "Webseiten-Weiterleitung erkannt" #: src/gpodder/gtkui/main.py:2211 #, python-format msgid "The URL %(url)s redirects to %(target)s." msgstr "Die URL %(url)s leitet zu %(target)s weiter." #: src/gpodder/gtkui/main.py:2212 msgid "Do you want to visit the website now?" msgstr "Wollen Sie die Webseite jetzt besuchen?" #: src/gpodder/gtkui/main.py:2221 msgid "Could not add some podcasts" msgstr "Einige Podcasts konnten nicht hinzugefУМgt werden" #: src/gpodder/gtkui/main.py:2222 msgid "Some podcasts could not be added to your list:" msgstr "Einige Podcasts konnten nicht zur Liste hinzugefУМgt werden:" #: src/gpodder/gtkui/main.py:2224 msgid "Unknown" msgstr "Unbekannt" #: src/gpodder/gtkui/main.py:2308 msgid "Redirection detected" msgstr "Weiterleitung erkannt" #: src/gpodder/gtkui/main.py:2342 msgid "Merging episode actions" msgstr "Verarbeite Episoden-Aktionen" #: src/gpodder/gtkui/main.py:2343 msgid "Episode actions from gpodder.net are merged." msgstr "Episoden-Aktionen von gpodder.net werden verarbeitet." #: src/gpodder/gtkui/main.py:2368 msgid "Cancelling..." msgstr "Abbrechen..." #: src/gpodder/gtkui/main.py:2377 msgid "Please connect to a network, then try again." msgstr "Bitte zu einem Netzwerk verbinden, dann erneut versuchen." #: src/gpodder/gtkui/main.py:2378 msgid "No network connection" msgstr "Keine Netzwerk-Verbindung" #: src/gpodder/gtkui/main.py:2399 #, python-format msgid "Updating %(count)d feed..." msgid_plural "Updating %(count)d feeds..." msgstr[0] "Aktualisiere %(count)d Feed..." msgstr[1] "Aktualisiere %(count)d Feeds..." #: src/gpodder/gtkui/main.py:2417 #, python-format msgid "Error while updating %(url)s: %(message)s" msgstr "Fehler beim Aktualisieren von %(url)s: %(message)s" #: src/gpodder/gtkui/main.py:2419 #, python-format msgid "The feed at %(url)s could not be updated." msgstr "Der Feed unter %(url)s konnte nicht aktualisiert werden." #: src/gpodder/gtkui/main.py:2420 msgid "Error while updating feed" msgstr "Fehler beim Aktualisieren des Feeds" #: src/gpodder/gtkui/main.py:2435 #, python-format msgid "Updated %(podcast)s (%(position)d/%(total)d)" msgstr "%(podcast)s aktualisiert (%(position)d/%(total)d)" #: src/gpodder/gtkui/main.py:2466 msgid "No new episodes" msgstr "Keine neuen Episoden" #: src/gpodder/gtkui/main.py:2479 #, python-format msgid "Downloading %(count)d new episode." msgid_plural "Downloading %(count)d new episodes." msgstr[0] "Lade %(count)d neue Episode herunter." msgstr[1] "Lade %(count)d neue Episoden herunter." #: src/gpodder/gtkui/main.py:2480 src/gpodder/gtkui/main.py:2484 #: src/gpodder/gtkui/main.py:2833 msgid "New episodes available" msgstr "Neue Episoden verfУМgbar" #: src/gpodder/gtkui/main.py:2483 #, python-format msgid "%(count)d new episode added to download list." msgid_plural "%(count)d new episodes added to download list." msgstr[0] "%(count)d neue Episode zur Download-Liste hinzugefУМgt." msgstr[1] "%(count)d neue Episoden zur Download-Liste hinzugefУМgt." #: src/gpodder/gtkui/main.py:2490 #, python-format msgid "%(count)d new episode available" msgid_plural "%(count)d new episodes available" msgstr[0] "%(count)d neue Episode verfУМgbar" msgstr[1] "%(count)d neue Episoden verfУМgbar" #: src/gpodder/gtkui/main.py:2509 msgid "Quit gPodder" msgstr "gPodder beenden" #: src/gpodder/gtkui/main.py:2510 msgid "" "You are downloading episodes. You can resume downloads the next time you " "start gPodder. Do you want to quit now?" msgstr "" "Sie laden momentan Episoden herunter. Sie kУЖnnen den Download beimnУЄchsten " "Start von gPodder fortsetzen. Wollen Sie gPodder jetzt beenden?" #: src/gpodder/gtkui/main.py:2559 msgid "Episodes are locked" msgstr "Episoden sind geschУМtzt" #: src/gpodder/gtkui/main.py:2560 msgid "" "The selected episodes are locked. Please unlock the episodes that you want " "to delete before trying to delete them." msgstr "" "Die gewУЄhlten Episoden sind geschУМtzt. Bitte heben Sie den Schutz fУМr die " "Episoden, die Sie lУЖschen wollen auf, bevor Sie versuchen, sie zu lУЖschen." #: src/gpodder/gtkui/main.py:2565 #, python-format msgid "Delete %(count)d episode?" msgid_plural "Delete %(count)d episodes?" msgstr[0] "%(count)d Episode lУЖschen?" msgstr[1] "%(count)d Episoden lУЖschen?" #: src/gpodder/gtkui/main.py:2566 msgid "Deleting episodes removes downloaded files." msgstr "Das LУЖschen von Episoden entfernt heruntergeladene Dateien." #: src/gpodder/gtkui/main.py:2571 msgid "Deleting episodes" msgstr "LУЖsche Episoden" #: src/gpodder/gtkui/main.py:2572 msgid "Please wait while episodes are deleted" msgstr "Bitte warten - Episoden werden gelУЖscht" #: src/gpodder/gtkui/main.py:2625 #, python-format msgid "Select older than %(count)d day" msgid_plural "Select older than %(count)d days" msgstr[0] "У„lter als %(count)d Tag auswУЄhlen" msgstr[1] "У„lter als %(count)d Tage auswУЄhlen" #: src/gpodder/gtkui/main.py:2627 msgid "Select played" msgstr "Abgespielte auswУЄhlen" #: src/gpodder/gtkui/main.py:2628 msgid "Select finished" msgstr "Fertige auswУЄhlen" #: src/gpodder/gtkui/main.py:2632 msgid "Select the episodes you want to delete:" msgstr "WУЄhlen Sie die Episoden, die Sie lУЖschen mУЖchten:" #: src/gpodder/gtkui/main.py:2648 share/gpodder/ui/gtk/gpodder.ui.h:4 msgid "Delete episodes" msgstr "Episoden lУЖschen" #: src/gpodder/gtkui/main.py:2703 src/gpodder/gtkui/main.py:2934 #: src/gpodder/gtkui/main.py:3034 msgid "No podcast selected" msgstr "Kein Podcast ausgewУЄhlt" #: src/gpodder/gtkui/main.py:2704 msgid "Please select a podcast in the podcasts list to update." msgstr "Bitte einen Podcast aus der Liste auswУЄhlen, um ihn zu aktualisieren." #: src/gpodder/gtkui/main.py:2774 #, python-format msgid "Download error while downloading %(episode)s: %(message)s" msgstr "Fehler beim Herunterladen von %(episode)s: %(message)s" #: src/gpodder/gtkui/main.py:2775 msgid "Download error" msgstr "Download-Fehler" #: src/gpodder/gtkui/main.py:2818 msgid "Select the episodes you want to download:" msgstr "WУЄhlen Sie die Episoden, die Sie herunterladen mУЖchten:" #: src/gpodder/gtkui/main.py:2841 msgid "Mark as old" msgstr "Als alt markieren" #: src/gpodder/gtkui/main.py:2848 msgid "Please check for new episodes later." msgstr "Bitte schauen Sie spУЄter nach neuen Episoden." #: src/gpodder/gtkui/main.py:2849 msgid "No new episodes available" msgstr "Keine neuen Episoden verfУМgbar" #: src/gpodder/gtkui/main.py:2900 msgid "Login to gpodder.net" msgstr "Login auf gpodder.net" #: src/gpodder/gtkui/main.py:2901 msgid "Please login to download your subscriptions." msgstr "Einloggen, um Abonnements herunterzuladen." #: src/gpodder/gtkui/main.py:2916 msgid "Subscriptions on gpodder.net" msgstr "Abonnements auf gpodder.net" #: src/gpodder/gtkui/main.py:2935 msgid "Please select a podcast in the podcasts list to edit." msgstr "Bitte wУЄhlen Sie einen Podcast aus ihrer Liste, um ihn zu editieren." #: src/gpodder/gtkui/main.py:2949 msgid "Podcast" msgstr "Podcast" #: src/gpodder/gtkui/main.py:2955 share/gpodder/ui/gtk/gpodder.ui.h:12 msgid "Remove podcasts" msgstr "Podcasts entfernen" #: src/gpodder/gtkui/main.py:2956 msgid "Select the podcast you want to remove." msgstr "WУЄhlen Sie die Podcasts, die Sie lУЖschen wollen." #: src/gpodder/gtkui/main.py:2960 #: src/gpodder/gtkui/desktop/episodeselector.py:105 msgid "Remove" msgstr "Entfernen" #: src/gpodder/gtkui/main.py:2969 msgid "Removing podcast" msgstr "Entferne Podcasts" #: src/gpodder/gtkui/main.py:2970 msgid "Please wait while the podcast is removed" msgstr "Bitte warten - der Podcast wird gelУЖscht" #: src/gpodder/gtkui/main.py:2971 msgid "Do you really want to remove this podcast and its episodes?" msgstr "Diesen Podcast und heruntergeladene Episoden wirklich entfernen?" #: src/gpodder/gtkui/main.py:2973 msgid "Removing podcasts" msgstr "Podcasts werden entfernt" #: src/gpodder/gtkui/main.py:2974 msgid "Please wait while the podcasts are removed" msgstr "Bitte warten - Podcasts werden entfernt" #: src/gpodder/gtkui/main.py:2975 msgid "Do you really want to remove the selected podcasts and their episodes?" msgstr "GewУЄhlte Podcasts und heruntergeladene Episoden wirklich entfernen?" #: src/gpodder/gtkui/main.py:3035 msgid "Please select a podcast in the podcasts list to remove." msgstr "" "Bitte einen Podcast in der Podcast-Liste auswУЄhlen, um ihn zu entfernen." #: src/gpodder/gtkui/main.py:3045 msgid "OPML files" msgstr "OPML Dateien" #: src/gpodder/gtkui/main.py:3050 msgid "Import from OPML" msgstr "Von OPML importieren" #: src/gpodder/gtkui/main.py:3064 msgid "Import podcasts from OPML file" msgstr "Podcasts von OPML-Datei importieren" #: src/gpodder/gtkui/main.py:3071 msgid "Nothing to export" msgstr "Nichts zu exportieren" #: src/gpodder/gtkui/main.py:3072 msgid "" "Your list of podcast subscriptions is empty. Please subscribe to some " "podcasts first before trying to export your subscription list." msgstr "" "Ihre Podcast-Abonnement-Liste ist leer. Bitte abonnieren Sie zuerst " "Podcasts, bevor Sie versuchen, die Abonnement-Liste zu exportieren." #: src/gpodder/gtkui/main.py:3076 msgid "Export to OPML" msgstr "Als OPML-Datei exportieren" #: src/gpodder/gtkui/main.py:3087 #, python-format msgid "%(count)d subscription exported" msgid_plural "%(count)d subscriptions exported" msgstr[0] "%(count)d Abonnement exportiert" msgstr[1] "%(count)d Abonnements exportiert" #: src/gpodder/gtkui/main.py:3088 msgid "Your podcast list has been successfully exported." msgstr "Ihre Podcast-Liste wurde erfolgreich exportiert." #: src/gpodder/gtkui/main.py:3090 msgid "Could not export OPML to file. Please check your permissions." msgstr "" "Konnte OPML nicht als Datei exportieren. Bitte УМberprУМfen Sie Ihre " "Berechtigungen." #: src/gpodder/gtkui/main.py:3090 msgid "OPML export failed" msgstr "OPML-Export fehlgeschlagen" #: src/gpodder/gtkui/main.py:3117 msgid "No updates available" msgstr "Keine Updates verfУМgbar" #: src/gpodder/gtkui/main.py:3118 msgid "You have the latest version of gPodder." msgstr "Sie haben die aktuelle gPodder-Version." #: src/gpodder/gtkui/main.py:3122 msgid "New version available" msgstr "Neue Version verfУМgbar" #: src/gpodder/gtkui/main.py:3124 #, python-format msgid "Installed version: %s" msgstr "Installierte Version: %s" #: src/gpodder/gtkui/main.py:3125 #, python-format msgid "Newest version: %s" msgstr "Neueste Version: %s" #: src/gpodder/gtkui/main.py:3126 #, python-format msgid "Release date: %s" msgstr "Erscheinungsdatum: %s" #: src/gpodder/gtkui/main.py:3128 msgid "Download the latest version from gpodder.org?" msgstr "Die neueste Version von gpodder.org laden?" #: src/gpodder/gtkui/main.py:3141 msgid "About gPodder" msgstr "Уœber gPodder" #: src/gpodder/gtkui/main.py:3424 msgid "Please register a YouTube API key and set it in the preferences." msgstr "" "Bitte einen YouTube-API-Key registrieren und in den Einstellungen " "konfigurieren." #: src/gpodder/gtkui/main.py:3425 msgid "Would you like to set up an API key now?" msgstr "Den API-Key jetzt einstellen?" #: src/gpodder/gtkui/main.py:3425 msgid "API key required" msgstr "API-Key benУЖtigt" #: src/gpodder/gtkui/main.py:3444 bin/gpo:631 msgid "No unique URL found" msgstr "Keine eindeutige URL gefunden" #: src/gpodder/gtkui/main.py:3449 bin/gpo:637 msgid "Already subscribed" msgstr "Bereits abonniert" #: src/gpodder/gtkui/main.py:3458 bin/gpo:649 #, python-format msgid "Make sure the API key is correct. Error: %(message)s" msgstr "Bitte sicherstellen, dass der API-Key korrekt ist. Fehler: %(message)s" #: src/gpodder/gtkui/main.py:3459 msgid "Error getting YouTube channels" msgstr "Fehler beim Laden der YouTube-KanУЄle" #: src/gpodder/gtkui/main.py:3462 msgid "Successfully migrated subscriptions" msgstr "Abonnements erfolgreich migriert" #: src/gpodder/gtkui/main.py:3464 msgid "Subscriptions are up to date" msgstr "Abonnements sind aktuell" #: src/gpodder/gtkui/main.py:3467 msgid "These URLs failed:" msgstr "Diese URLs schlugen fehl:" #: src/gpodder/gtkui/main.py:3469 msgid "Could not migrate some subscriptions" msgstr "Einige Abonnements konnten nicht migriert werden" #: src/gpodder/gtkui/main.py:3493 msgid "Cannot start gPodder" msgstr "gPodder kann nicht gestartet werden" #: src/gpodder/gtkui/main.py:3494 #, python-format msgid "D-Bus error: %s" msgstr "D-Bus-Fehler: %s" #: src/gpodder/gtkui/model.py:68 #, python-format msgid "released %s" msgstr "erschienen: %s" #: src/gpodder/gtkui/model.py:69 src/gpodder/gtkui/model.py:87 #: src/gpodder/gtkui/model.py:237 src/gpodder/gtkui/shownotes.py:84 #, python-format msgid "from %s" msgstr "von %s" #: src/gpodder/gtkui/model.py:80 src/gpodder/gtkui/model.py:393 msgid "played" msgstr "gespielt" #: src/gpodder/gtkui/model.py:82 msgid "unplayed" msgstr "nicht gespielt" #: src/gpodder/gtkui/model.py:85 msgid "today" msgstr "heute" #: src/gpodder/gtkui/model.py:86 #, python-format msgid "downloaded %s" msgstr "heruntergeladen: %s" #: src/gpodder/gtkui/model.py:337 msgid "Deleted" msgstr "GelУЖscht" #: src/gpodder/gtkui/model.py:342 msgid "New episode" msgstr "Neue Episode" #: src/gpodder/gtkui/model.py:356 msgid "Downloaded episode" msgstr "Heruntergeladene Episode" #: src/gpodder/gtkui/model.py:359 msgid "Downloaded video episode" msgstr "Heruntergeladene Video-Episode" #: src/gpodder/gtkui/model.py:362 msgid "Downloaded image" msgstr "Heruntergeladenes Bild" #: src/gpodder/gtkui/model.py:365 msgid "Downloaded file" msgstr "Heruntergeladene Datei" #: src/gpodder/gtkui/model.py:380 msgid "missing file" msgstr "Datei fehlt" #: src/gpodder/gtkui/model.py:384 msgid "never displayed" msgstr "nie angezeigt" #: src/gpodder/gtkui/model.py:386 msgid "never played" msgstr "nie abgespielt" #: src/gpodder/gtkui/model.py:388 msgid "never opened" msgstr "nie geУЖffnet" #: src/gpodder/gtkui/model.py:391 msgid "displayed" msgstr "angezeigt" #: src/gpodder/gtkui/model.py:395 msgid "opened" msgstr "geУЖffnet" #: src/gpodder/gtkui/model.py:397 msgid "deletion prevented" msgstr "LУЖschsperre" #: src/gpodder/gtkui/model.py:432 share/gpodder/ui/gtk/gpodder.ui.h:32 msgid "All episodes" msgstr "Alle Episoden" #: src/gpodder/gtkui/model.py:433 msgid "from all podcasts" msgstr "von allen Podcasts" #: src/gpodder/gtkui/model.py:625 msgid "Subscription paused" msgstr "Abonnement pausiert" #: src/gpodder/gtkui/shownotes.py:118 msgid "Please select an episode" msgstr "Bitte eine Episode auswУЄhlen" #: src/gpodder/gtkui/interface/addpodcast.py:74 msgid "Nothing to paste." msgstr "Nichts einzufУМgen." #: src/gpodder/gtkui/interface/addpodcast.py:74 msgid "Clipboard is empty" msgstr "Zwischenablage ist leer" #: src/gpodder/gtkui/interface/common.py:160 msgid "Username" msgstr "Benutzername" #: src/gpodder/gtkui/interface/common.py:163 msgid "New user" msgstr "Neuer User" #: src/gpodder/gtkui/interface/common.py:170 msgid "Login" msgstr "Login" #: src/gpodder/gtkui/interface/common.py:172 msgid "Authentication required" msgstr "Authentifizierung benУЖtigt" #: src/gpodder/gtkui/interface/common.py:203 msgid "Password" msgstr "Passwort" #: src/gpodder/gtkui/interface/common.py:225 msgid "Select destination" msgstr "Ziel auswУЄhlen" #: src/gpodder/gtkui/interface/configeditor.py:34 msgid "Setting" msgstr "Einstellung" #: src/gpodder/gtkui/interface/configeditor.py:41 msgid "Set to" msgstr "Gesetzt auf" #: src/gpodder/gtkui/interface/configeditor.py:81 #, python-format msgid "Cannot set %(field)s to %(value)s. Needed data type: %(datatype)s" msgstr "" "Kann %(field)s nicht auf %(value)s УЄndern. BenУЖtigter Datentyp: %(datatype)s" #: src/gpodder/gtkui/interface/configeditor.py:85 msgid "Error setting option" msgstr "Fehler beim Setzen der Option" #: src/gpodder/gtkui/desktop/channel.py:100 msgid "Add section" msgstr "Sektion hinzufУМgen" #: src/gpodder/gtkui/desktop/channel.py:100 msgid "New section:" msgstr "Neue Sektion:" #: src/gpodder/gtkui/desktop/channel.py:133 msgid "Select new podcast cover artwork" msgstr "Neues Podcast Cover Artwork auswУЄhlen" #: src/gpodder/gtkui/desktop/channel.py:161 msgid "You can only drop a single image or URL here." msgstr "Sie kУЖnnen nur ein Bild oder eine URL hier her ziehen." #: src/gpodder/gtkui/desktop/channel.py:161 #: src/gpodder/gtkui/desktop/channel.py:171 msgid "Drag and drop" msgstr "Drag und Drop" #: src/gpodder/gtkui/desktop/channel.py:171 msgid "You can only drop local files and http:// URLs here." msgstr "Sie kУЖnnen nur lokale Dateien und http://-URLs hier her ziehen." #: src/gpodder/gtkui/desktop/deviceplaylist.py:98 #, python-format msgid "Folder %s could not be created." msgstr "Der Ordner %s konnte nicht erstellt werden." #: src/gpodder/gtkui/desktop/deviceplaylist.py:98 msgid "Error writing playlist" msgstr "Fehler beim Schreiben der Wiedergabeliste" #: src/gpodder/gtkui/desktop/episodeselector.py:288 #: share/gpodder/ui/gtk/gpodderepisodeselector.ui.h:2 msgid "Select all" msgstr "Alle auswУЄhlen" #: src/gpodder/gtkui/desktop/episodeselector.py:292 #: share/gpodder/ui/gtk/gpodderepisodeselector.ui.h:3 msgid "Select none" msgstr "Nichts auswУЄhlen" #: src/gpodder/gtkui/desktop/episodeselector.py:324 msgid "Nothing selected" msgstr "Nichts ausgewУЄhlt" #: src/gpodder/gtkui/desktop/episodeselector.py:325 #, python-format msgid "%(count)d episode" msgid_plural "%(count)d episodes" msgstr[0] "%(count)d Episode" msgstr[1] "%(count)d Episoden" #: src/gpodder/gtkui/desktop/episodeselector.py:327 #, python-format msgid "size: %s" msgstr "GrУЖУŸe: %s" #: src/gpodder/gtkui/desktop/podcastdirectory.py:238 msgid "Loading podcasts" msgstr "Lade Podcasts" #: src/gpodder/gtkui/desktop/podcastdirectory.py:239 msgid "Please wait while the podcast list is downloaded" msgstr "Bitte warten wУЄhrend die Podcast-Liste geladen wird" #: src/gpodder/gtkui/desktop/preferences.py:51 #: src/gpodder/gtkui/desktop/preferences.py:93 msgid "Do nothing" msgstr "Nichts tun" #: src/gpodder/gtkui/desktop/preferences.py:52 msgid "Show episode list" msgstr "Liste mit Episoden anzeigen" #: src/gpodder/gtkui/desktop/preferences.py:53 msgid "Add to download list" msgstr "Zur Download-Liste hinzufУМgen" #: src/gpodder/gtkui/desktop/preferences.py:54 msgid "Download immediately" msgstr "Sofort herunterladen" #: src/gpodder/gtkui/desktop/preferences.py:72 msgid "None" msgstr "Keine" #: src/gpodder/gtkui/desktop/preferences.py:73 msgid "iPod" msgstr "iPod" #: src/gpodder/gtkui/desktop/preferences.py:74 msgid "Filesystem-based" msgstr "Dateisystem-basierter MP3 Player" #: src/gpodder/gtkui/desktop/preferences.py:94 msgid "Mark as played" msgstr "Als abgespielt markieren" #: src/gpodder/gtkui/desktop/preferences.py:95 msgid "Delete from gPodder" msgstr "In gPodder lУЖschen" #: src/gpodder/gtkui/desktop/preferences.py:123 #, python-format msgid "Custom (%(format_ids)s)" msgstr "Manuell (%(format_ids)s)" #: src/gpodder/gtkui/desktop/preferences.py:318 msgid "Name" msgstr "Name" #: src/gpodder/gtkui/desktop/preferences.py:369 msgid "Documentation" msgstr "Dokumentation" #: src/gpodder/gtkui/desktop/preferences.py:374 msgid "Extension info" msgstr "Infos zur Erweiterung" #: src/gpodder/gtkui/desktop/preferences.py:379 msgid "Support the author" msgstr "UnterstУМtze den Autor" #: src/gpodder/gtkui/desktop/preferences.py:413 msgid "Extension cannot be activated" msgstr "Erweiterung kann nicht aktiviert werden" #: src/gpodder/gtkui/desktop/preferences.py:426 msgid "Extension module info" msgstr "Info zum Erweiterungs-Modul" #: src/gpodder/gtkui/desktop/preferences.py:463 msgid "Configure audio player" msgstr "Audio-Player einrichten" #: src/gpodder/gtkui/desktop/preferences.py:464 #: src/gpodder/gtkui/desktop/preferences.py:474 msgid "Command:" msgstr "Kommando:" #: src/gpodder/gtkui/desktop/preferences.py:473 msgid "Configure video player" msgstr "Video-Player einrichten" #: src/gpodder/gtkui/desktop/preferences.py:485 #: src/gpodder/gtkui/desktop/preferences.py:503 msgid "manually" msgstr "manuell" #: src/gpodder/gtkui/desktop/preferences.py:505 #, python-format msgid "after %(count)d day" msgid_plural "after %(count)d days" msgstr[0] "nach %(count)d Tag" msgstr[1] "nach %(count)d Tagen" #: src/gpodder/gtkui/desktop/preferences.py:541 msgid "Replace subscription list on server" msgstr "Abonnement-Liste am Server ersetzen" #: src/gpodder/gtkui/desktop/preferences.py:542 msgid "" "Remote podcasts that have not been added locally will be removed on the " "server. Continue?" msgstr "" "Podcasts am Server, die lokal nicht hinzugefУМgt werden, werden am Server " "entfernt. Fortfahren?" #: src/gpodder/gtkui/desktop/preferences.py:621 msgid "Select folder for mount point" msgstr "Ordner des EinhУЄngepunkts wУЄhlen" #: src/gpodder/gtkui/desktop/preferences.py:638 msgid "Select folder for playlists" msgstr "Ordner fУМr Playliste auswУЄhlen" #: src/gpodder/gtkui/desktop/sync.py:86 msgid "No device configured" msgstr "Kein GerУЄt konfiguriert" #: src/gpodder/gtkui/desktop/sync.py:87 msgid "Please set up your device in the preferences dialog." msgstr "Bitte konfigurieren Sie Ihr GerУЄt im Einstellungs-Dialog." #: src/gpodder/gtkui/desktop/sync.py:91 msgid "Cannot open device" msgstr "Kann GerУЄt nicht УЖffnen" #: src/gpodder/gtkui/desktop/sync.py:92 msgid "Please check the settings in the preferences dialog." msgstr "Bitte УМberprУМfen Sie die Einstellungen." #: src/gpodder/gtkui/desktop/sync.py:139 msgid "Not enough space left on device" msgstr "UngenУМgend Speicherplatz am GerУЄt verfУМgbar" #: src/gpodder/gtkui/desktop/sync.py:140 #, python-format msgid "" "Additional free space required: %(required_space)s\n" "Do you want to continue?" msgstr "" "ZusУЄtzlicher Speicherplatz benУЖtigt: %(required_space)s\n" "Wollen Sie trotzdem fortfahren?" #: src/gpodder/gtkui/desktop/sync.py:199 msgid "Update successful" msgstr "Aktualisierung erfolgreich" #: src/gpodder/gtkui/desktop/sync.py:200 msgid "The playlist on your MP3 player has been updated." msgstr "Die Wiedergabeliste auf Ihrem MP3-Player wurde aktualisiert." #: src/gpodder/gtkui/desktop/sync.py:274 msgid "Episodes have been deleted on device" msgstr "Episoden wurden am GerУЄt gelУЖscht" #: src/gpodder/gtkui/desktop/sync.py:285 msgid "Error writing playlist files" msgstr "Fehler beim Schreiben der Wiedergabe-Liste" #: src/gpodder/plugins/soundcloud.py:154 msgid "Unknown track" msgstr "Unbekannter Track" #: src/gpodder/plugins/soundcloud.py:181 #, python-format msgid "%s on Soundcloud" msgstr "%s auf Soundcloud" #: src/gpodder/plugins/soundcloud.py:190 #, python-format msgid "Tracks published by %s on Soundcloud." msgstr "Tracks von %s auf Soundcloud." #: src/gpodder/plugins/soundcloud.py:217 #, python-format msgid "%s's favorites on Soundcloud" msgstr "%s's Favoriten auf Soundcloud" #: src/gpodder/plugins/soundcloud.py:223 #, python-format msgid "Tracks favorited by %s on Soundcloud." msgstr "Favorisierte Tracks von %s auf Soundcloud." #: share/gpodder/extensions/audio_converter.py:20 msgid "Convert audio files" msgstr "Audio-Dateien umwandeln" #: share/gpodder/extensions/audio_converter.py:21 msgid "Transcode audio files to mp3/ogg" msgstr "Audio-Dateien in mp3/ogg umwandeln" #: share/gpodder/extensions/audio_converter.py:84 #: share/gpodder/extensions/video_converter.py:86 #, python-format msgid "Convert to %(format)s" msgstr "Umwandeln in %(format)s" #: share/gpodder/extensions/audio_converter.py:111 #: share/gpodder/extensions/rockbox_convert2mp4.py:65 #: share/gpodder/extensions/video_converter.py:111 msgid "File converted" msgstr "Datei umgewandelt" #: share/gpodder/extensions/audio_converter.py:114 #: share/gpodder/extensions/video_converter.py:114 msgid "Conversion failed" msgstr "Umwandeln fehlgeschlagen" #: share/gpodder/extensions/concatenate_videos.py:20 #: share/gpodder/extensions/concatenate_videos.py:100 msgid "Concatenate videos" msgstr "Videos verketten" #: share/gpodder/extensions/concatenate_videos.py:21 msgid "Add a context menu item for concatenating multiple videos" msgstr "" "FУМgt einen Kontext-MenУМ-Eintrag ein, um mehrere Videos zu einem zu verketten" #: share/gpodder/extensions/concatenate_videos.py:37 msgid "Save video" msgstr "Video speichern" #: share/gpodder/extensions/concatenate_videos.py:66 msgid "Concatenating video files" msgstr "Video-Dateien werden verkettet" #: share/gpodder/extensions/concatenate_videos.py:67 #, python-format msgid "Writing %(filename)s" msgstr "Schreibe %(filename)s" #: share/gpodder/extensions/concatenate_videos.py:78 msgid "Videos successfully converted" msgstr "Videos erfolgreich umgewandelt" #: share/gpodder/extensions/concatenate_videos.py:79 msgid "Error converting videos" msgstr "Fehler beim Verketten der Videos" #: share/gpodder/extensions/concatenate_videos.py:80 msgid "Concatenation result" msgstr "Ergebnis des Verkettens" #: share/gpodder/extensions/enqueue_in_mediaplayer.py:16 msgid "Enqueue in media players" msgstr "In Media-Player-Playliste einreihen" #: share/gpodder/extensions/enqueue_in_mediaplayer.py:17 msgid "" "Add a context menu item for enqueueing episodes in installed media players" msgstr "" "FУМgt einen Kontext-MenУМ-Eintrag ein, um Episoden zur aktuellen Playliste " "hinzuzufУМgen" #: share/gpodder/extensions/enqueue_in_mediaplayer.py:35 msgid "Enqueue in" msgstr "HinzufУМgen zur Playliste von" #: share/gpodder/extensions/episode_website_context_menu.py:14 msgid "\"Open website\" episode context menu" msgstr "\"Webseite УЖffnen\" im Kontext-MenУМ" #: share/gpodder/extensions/episode_website_context_menu.py:15 msgid "Add a context menu item for opening the website of an episode" msgstr "" "FУМgt einen Eintrag ins Kontext-MenУМ fУМr das У–ffnen der Episoden-Webseite ein" #: share/gpodder/extensions/episode_website_context_menu.py:30 msgid "Open website" msgstr "Webseite УЖffnen" #: share/gpodder/extensions/gtk_statusicon.py:14 msgid "Gtk Status Icon" msgstr "Gtk Status-Icon" #: share/gpodder/extensions/gtk_statusicon.py:15 msgid "Show a status icon for Gtk-based Desktops." msgstr "Ein Status-Icon fУМr Gtk-basierte Desktops anzeigen." #: share/gpodder/extensions/minimize_on_start.py:10 msgid "Minimize on start" msgstr "Beim Start minimieren" #: share/gpodder/extensions/minimize_on_start.py:11 msgid "Minimizes the gPodder window on startup." msgstr "Minimiert das gPodder-Fenster beim Start." #: share/gpodder/extensions/mpris-listener.py:33 msgid "MPRIS Listener" msgstr "MPRIS-Integration" #: share/gpodder/extensions/mpris-listener.py:34 msgid "Convert MPRIS notifications to gPodder Media Player D-Bus API" msgstr "Wandelt MPRIS-Benachrichtigungen zur gPodder Media Player D-Bus API um" #: share/gpodder/extensions/normalize_audio.py:21 msgid "Normalize audio with re-encoding" msgstr "LautstУЄrke normalisieren (neu encodieren)" #: share/gpodder/extensions/normalize_audio.py:22 msgid "Normalize the volume of audio files with normalize-audio" msgstr "Die LautstУЄrke von Audio-Files mit normalize-audio anpassen" #: share/gpodder/extensions/normalize_audio.py:99 msgid "File normalized" msgstr "Datei normalisiert" #: share/gpodder/extensions/rename_download.py:16 msgid "Rename episodes after download" msgstr "Episoden nach dem Download umbenennen" #: share/gpodder/extensions/rename_download.py:17 msgid "Rename episodes to \".\" on download" msgstr "Episoden werden zu \".\" umbenannt" #: share/gpodder/extensions/rm_ogg_cover.py:37 msgid "Remove cover art from OGG files" msgstr "Cover-Artwork in OGG-Dateien entfernen" #: share/gpodder/extensions/rm_ogg_cover.py:38 msgid "removes coverart from all downloaded ogg files" msgstr "Entfernt Cover-Artwork von heruntergeladenen OGG-Dateien" #: share/gpodder/extensions/rm_ogg_cover.py:66 msgid "Remove cover art" msgstr "Cover-Artwork entfernen" #: share/gpodder/extensions/rockbox_convert2mp4.py:26 msgid "Convert video files to MP4 for Rockbox" msgstr "Video-Dateien in Rockbox-MP4 umwandeln" #: share/gpodder/extensions/rockbox_convert2mp4.py:27 msgid "Converts all videos to a Rockbox-compatible format" msgstr "Wandelt alle Videos in ein Rockbox-kompatibles Format um" #: share/gpodder/extensions/sonos.py:19 share/gpodder/extensions/sonos.py:78 msgid "Stream to Sonos" msgstr "Zu Sonos streamen" #: share/gpodder/extensions/sonos.py:20 msgid "Stream podcasts to Sonos speakers" msgstr "Gibt Podcasts auf Sonos-Lautsprechern wieder" #: share/gpodder/extensions/tagging.py:45 msgid "Tag downloaded files using Mutagen" msgstr "Heruntergeladene Dateien mit Mutagen taggen" #: share/gpodder/extensions/tagging.py:46 msgid "Add episode and podcast titles to MP3/OGG tags" msgstr "Episoden- und Podcast-Titel zu MP3/OGG-Tags hinzufУМgen" #: share/gpodder/extensions/taskbar_progress.py:28 msgid "Show download progress on the taskbar" msgstr "Download-Fortschritt in der Taskbar anzeigen" #: share/gpodder/extensions/taskbar_progress.py:29 msgid "Displays the progress on the Windows taskbar." msgstr "Zeigt den Fortschritt in der Windows-Taskbar an." #: share/gpodder/extensions/ted_subtitles.py:16 msgid "Subtitle Downloader for TED Talks" msgstr "Untertitel-Downloader fУМr TED Talks" #: share/gpodder/extensions/ted_subtitles.py:17 msgid "Downloads .srt subtitles for TED Talks Videos" msgstr "LУЄdt .srt-Untertitel fУМr TED Talks-Videos herunter" #: share/gpodder/extensions/ubuntu_appindicator.py:10 msgid "Ubuntu App Indicator" msgstr "Ubuntu App-Indikator" #: share/gpodder/extensions/ubuntu_appindicator.py:11 msgid "Show a status indicator in the top bar." msgstr "Einen Status-Indikator in der oberen Leiste anzeigen." #: share/gpodder/extensions/ubuntu_appindicator.py:47 msgid "Show main window" msgstr "Hauptfenster anzeigen" #: share/gpodder/extensions/ubuntu_appindicator.py:57 #: share/gpodder/ui/gtk/gpodder.ui.h:6 msgid "Quit" msgstr "Beenden" #: share/gpodder/extensions/ubuntu_unity.py:10 msgid "Ubuntu Unity Integration" msgstr "Integration fУМr Ubuntu Unity" #: share/gpodder/extensions/ubuntu_unity.py:11 msgid "Show download progress in the Unity Launcher icon." msgstr "Fortschritt von Downloads im Launcher-Icon anzeigen." #: share/gpodder/extensions/update_feeds_on_startup.py:14 msgid "Search for new episodes on startup" msgstr "Beim Start nach neuen Episoden suchen" #: share/gpodder/extensions/update_feeds_on_startup.py:15 msgid "Starts the search for new episodes on startup" msgstr "Sucht bei Programmstart nach neuen Episoden" #: share/gpodder/extensions/video_converter.py:22 msgid "Convert video files" msgstr "Video-Dateien umwandeln" #: share/gpodder/extensions/video_converter.py:23 msgid "Transcode video files to avi/mp4/m4v" msgstr "Video-Dateien in avi/mp4/m4v umwandeln" #: share/gpodder/ui/gtk/gpodderaddpodcast.ui.h:1 msgid "Add a new podcast" msgstr "Neuen Podcast hinzufУМgen" #: share/gpodder/ui/gtk/gpodderaddpodcast.ui.h:2 msgid "URL:" msgstr "Adresse:" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:1 msgid "gPodder Podcast Editor" msgstr "gPodder Podcast-Editor" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:2 msgid "Section:" msgstr "Sektion:" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:3 msgid "Disable feed updates (pause subscription)" msgstr "Feed-Updates deaktivieren (Abonnement pausieren)" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:4 msgid "Synchronize to MP3 player devices" msgstr "Mit portablen MP3-Playern synchronisieren" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:5 msgid "Strategy:" msgstr "Strategie:" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:6 #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:6 msgid "General" msgstr "Allgemeines" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:7 msgid "HTTP/FTP Authentication" msgstr "HTTP/FTP-Authentifizierung" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:8 #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:13 msgid "Username:" msgstr "Benutzername:" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:9 #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:14 msgid "Password:" msgstr "Passwort:" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:10 msgid "Locations" msgstr "Orte" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:11 msgid "Download to:" msgstr "Herunterladen nach:" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:12 msgid "Website:" msgstr "Webseite:" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:13 msgid "website label" msgstr "Website Label" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:14 msgid "Advanced" msgstr "Erweitert" #: share/gpodder/ui/gtk/gpodderconfigeditor.ui.h:1 msgid "gPodder Configuration Editor" msgstr "gPodder Konfigurations-Editor" #: share/gpodder/ui/gtk/gpodderconfigeditor.ui.h:2 msgid "Search for:" msgstr "Suche nach:" #: share/gpodder/ui/gtk/gpodderconfigeditor.ui.h:3 msgid "Show All" msgstr "Alle anzeigen" #: share/gpodder/ui/gtk/gpodderepisodeselector.ui.h:1 msgid "Select episodes" msgstr "Episoden auswУЄhlen" #: share/gpodder/ui/gtk/gpodderpodcastdirectory.ui.h:1 msgid "Find new podcasts" msgstr "Neue Podcasts finden" #: share/gpodder/ui/gtk/gpodderpodcastdirectory.ui.h:2 msgid "Select All" msgstr "Alle auswУЄhlen" #: share/gpodder/ui/gtk/gpodderpodcastdirectory.ui.h:3 msgid "Select None" msgstr "Nichts auswУЄhlen" #: share/gpodder/ui/gtk/gpodderpodcastdirectory.ui.h:4 msgid "label" msgstr "Label" #: share/gpodder/ui/gtk/gpodderpodcastdirectory.ui.h:5 msgid "..." msgstr "..." #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:1 #: share/gpodder/ui/gtk/gpodder.ui.h:5 msgid "Preferences" msgstr "Einstellungen" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:2 msgid "Audio player:" msgstr "Audio-Player:" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:3 msgid "Video player:" msgstr "Video-Player:" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:4 msgid "\"All episodes\" in podcast list" msgstr "\"Alle Episoden\" in Podcast-Liste" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:5 msgid "Use sections for podcast list" msgstr "Sektionen in Podcast-Liste verwenden" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:7 msgid "Preferred YouTube format:" msgstr "Bevorzugtes YouTube-Format:" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:8 msgid "YouTube API key (v3):" msgstr "YouTube-API-Key (v3):" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:9 msgid "Preferred Vimeo format:" msgstr "Bevorzugtes Vimeo-Format:" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:11 msgid "Extensions" msgstr "Erweiterungen" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:12 msgid "Synchronize subscriptions and episode actions" msgstr "Abonnements und Aktionen synchronisieren" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:15 msgid "Replace list on server with local subscriptions" msgstr "Liste am Server mit lokalen Abonnements ersetzen" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:16 msgid "Device name:" msgstr "GerУЄt-Name:" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:17 msgid "gpodder.net" msgstr "gpodder.net" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:18 msgid "Update interval:" msgstr "Aktualisierungs-Intervall:" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:19 msgid "Maximum number of episodes per podcast:" msgstr "Maximale Episoden pro Podcast:" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:20 msgid "When new episodes are found:" msgstr "Bei neuen Episoden:" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:21 msgid "Updating" msgstr "Aktualisieren" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:22 msgid "Delete played episodes:" msgstr "Gespielte Episoden lУЖschen:" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:23 msgid "Remove played episodes even if unfinished" msgstr "Abgespielte Episoden lУЖschen (auch wenn nicht fertig)" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:24 msgid "Also remove unplayed episodes" msgstr "Auch ungespielte Episoden lУЖschen" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:25 msgid "Clean-up" msgstr "AufrУЄumen" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:26 msgid "Device type:" msgstr "GerУЄt-Typ:" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:27 msgid "Mountpoint:" msgstr "EinhУЄngepunkt:" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:28 msgid "After syncing an episode:" msgstr "Nach dem Synchronisieren einer Episode:" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:29 msgid "Create playlists on device" msgstr "Wiedergabelisten am GerУЄt erstellen" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:30 msgid "Playlists Folder:" msgstr "Ordner fУМr Wiedergabelisten:" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:31 msgid "Remove episodes deleted on device from gPodder" msgstr "Am GerУЄt gelУЖschte Episoden in gPodder entfernen" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:32 msgid "Only sync unplayed episodes" msgstr "Nur ungespielte Episoden synchronisieren" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:33 msgid "Devices" msgstr "GerУЄte" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:34 msgid "Edit config" msgstr "Konfiguration bearbeiten" #: share/gpodder/ui/gtk/gpodder.ui.h:1 msgid "_Podcasts" msgstr "_Podcasts" #: share/gpodder/ui/gtk/gpodder.ui.h:2 msgid "Check for new episodes" msgstr "Nach neuen Episoden suchen" #: share/gpodder/ui/gtk/gpodder.ui.h:3 msgid "Download new episodes" msgstr "Neue Episoden herunterladen" #: share/gpodder/ui/gtk/gpodder.ui.h:7 msgid "_Subscriptions" msgstr "_Abonnements" #: share/gpodder/ui/gtk/gpodder.ui.h:8 msgid "Discover new podcasts" msgstr "Neue Podcasts entdecken" #: share/gpodder/ui/gtk/gpodder.ui.h:9 msgid "Add podcast via URL" msgstr "Podcast per URL hinzufУМgen" #: share/gpodder/ui/gtk/gpodder.ui.h:11 msgid "Unsubscribe" msgstr "Entfernen" #: share/gpodder/ui/gtk/gpodder.ui.h:14 msgid "Import from OPML file" msgstr "Von OPML-Datei importieren" #: share/gpodder/ui/gtk/gpodder.ui.h:15 msgid "Export to OPML file" msgstr "Zu OPML-Datei exportieren" #: share/gpodder/ui/gtk/gpodder.ui.h:16 msgid "Go to gpodder.net" msgstr "Gehe zu gpodder.net" #: share/gpodder/ui/gtk/gpodder.ui.h:17 msgid "_Episodes" msgstr "_Episoden" #: share/gpodder/ui/gtk/gpodder.ui.h:18 msgid "Play" msgstr "Abspielen" #: share/gpodder/ui/gtk/gpodder.ui.h:19 msgid "Open" msgstr "У–ffnen" #: share/gpodder/ui/gtk/gpodder.ui.h:22 msgid "Delete" msgstr "LУЖschen" #: share/gpodder/ui/gtk/gpodder.ui.h:23 msgid "Toggle new status" msgstr "Neu-Status wechseln" #: share/gpodder/ui/gtk/gpodder.ui.h:24 msgid "Change delete lock" msgstr "LУЖschsperre УЄndern" #: share/gpodder/ui/gtk/gpodder.ui.h:26 msgid "E_xtras" msgstr "E_xtras" #: share/gpodder/ui/gtk/gpodder.ui.h:27 msgid "Sync to device" msgstr "Mit GerУЄt synchronisieren" #: share/gpodder/ui/gtk/gpodder.ui.h:28 msgid "Update YouTube subscriptions" msgstr "YouTube-Abonnements aktualisieren" #: share/gpodder/ui/gtk/gpodder.ui.h:29 msgid "_View" msgstr "_Ansicht" #: share/gpodder/ui/gtk/gpodder.ui.h:30 msgid "Toolbar" msgstr "Toolbar" #: share/gpodder/ui/gtk/gpodder.ui.h:31 msgid "Episode descriptions" msgstr "Episoden-Beschreibungen" #: share/gpodder/ui/gtk/gpodder.ui.h:33 msgid "Hide deleted episodes" msgstr "GelУЖschte Episoden verstecken" #: share/gpodder/ui/gtk/gpodder.ui.h:34 msgid "Downloaded episodes" msgstr "Heruntergeladene Episoden" #: share/gpodder/ui/gtk/gpodder.ui.h:35 msgid "Unplayed episodes" msgstr "Nicht gespielte Episoden" #: share/gpodder/ui/gtk/gpodder.ui.h:36 msgid "Hide podcasts without episodes" msgstr "Podcasts ohne Episoden ausblenden" #: share/gpodder/ui/gtk/gpodder.ui.h:37 msgid "_Help" msgstr "_Hilfe" #: share/gpodder/ui/gtk/gpodder.ui.h:38 msgid "User manual" msgstr "Benutzerhandbuch" #: share/gpodder/ui/gtk/gpodder.ui.h:39 msgid "Software updates" msgstr "Software-Updates" #: share/gpodder/ui/gtk/gpodder.ui.h:40 msgid "Filter:" msgstr "Filter:" #: share/gpodder/ui/gtk/gpodder.ui.h:41 msgid "Podcasts" msgstr "Podcasts" #: share/gpodder/ui/gtk/gpodder.ui.h:42 msgid "Limit rate to" msgstr "Rate limitieren auf" #: share/gpodder/ui/gtk/gpodder.ui.h:43 msgid "KiB/s" msgstr "KiB/s" #: share/gpodder/ui/gtk/gpodder.ui.h:44 msgid "Limit downloads to" msgstr "Downloads limitieren auf" #: share/gpodder/ui/gtk/gpodderwelcome.ui.h:2 msgid "Welcome to gPodder" msgstr "Willkommen bei gPodder" #: share/gpodder/ui/gtk/gpodderwelcome.ui.h:3 msgid "Your podcast list is empty." msgstr "Ihre Podcast-Liste ist leer." #: share/gpodder/ui/gtk/gpodderwelcome.ui.h:4 msgid "Choose from a list of example podcasts" msgstr "WУЄhle Podcasts aus einer Liste von Beispiel-Podcasts" #: share/gpodder/ui/gtk/gpodderwelcome.ui.h:5 msgid "Add a podcast by entering its URL" msgstr "Podcast durch URL-Eingabe hinzufУМgen" #: share/gpodder/ui/gtk/gpodderwelcome.ui.h:6 msgid "Restore my subscriptions from gpodder.net" msgstr "Abonnements von gpodder.net wiederherstellen" #: bin/gpo:266 msgid "Podcast update requested by extensions." msgstr "Podcast-Update von Erweiterungen angefordert." #: bin/gpo:270 msgid "Episode download requested by extensions." msgstr "Episoden-Download von Erweiterung angefordert." #: bin/gpo:323 #, python-format msgid "Invalid url: %s" msgstr "UngУМltige URL: %s" #: bin/gpo:340 bin/gpo:416 bin/gpo:450 bin/gpo:582 bin/gpo:597 bin/gpo:717 #, python-format msgid "You are not subscribed to %s." msgstr "%s ist nicht abonniert." #: bin/gpo:346 #, python-format msgid "Already subscribed to %s." msgstr "%s ist bereits abonniert." #: bin/gpo:352 #, python-format msgid "Cannot subscribe to %s." msgstr "Kann %s nicht abonnieren." #: bin/gpo:368 #, python-format msgid "Successfully added %s." msgstr "%s erfolgreich hinzugefУМgt." #: bin/gpo:386 msgid "This configuration option does not exist." msgstr "Diese Konfigurations-Option existiert nicht." #: bin/gpo:390 msgid "Can only set leaf configuration nodes." msgstr "Nur Blatt-Knoten der Konfiguration kУЖnnen gesetzt werden." #: bin/gpo:404 #, python-format msgid "Renamed %(old_title)s to %(new_title)s." msgstr "%(old_title)s umbenannt zu %(new_title)s." #: bin/gpo:420 #, python-format msgid "Unsubscribed from %s." msgstr "Abonnement von %s gelУЖscht." #: bin/gpo:494 msgid "Updates disabled" msgstr "Updates deaktiviert" #: bin/gpo:505 #, python-format msgid "%(count)d new episode" msgid_plural "%(count)d new episodes" msgstr[0] "%(count)d neue Episode" msgstr[1] "%(count)d neue Episoden" #: bin/gpo:511 msgid "Checking for new episodes" msgstr "Suche nach neuen Episoden" #: bin/gpo:520 #, python-format msgid "Skipping %(podcast)s" msgstr "Уœberspringe %(podcast)s" #: bin/gpo:588 #, python-format msgid "Disabling feed update from %s." msgstr "Feed-Update fУМr %s deaktiviert." #: bin/gpo:603 #, python-format msgid "Enabling feed update from %s." msgstr "Aktiviere Feed-Update von %s." #: bin/gpo:616 #, python-format msgid "Please register a YouTube API key and set it using %(command)s." msgstr "Bitte einen YouTube-API-Key registrieren und mit %(command)s setzen." #: bin/gpo:643 #, python-format msgid "Changing: %(old_url)s => %(new_url)s" msgstr "У„ndere: %(old_url)s => %(new_url)s" #: bin/gpo:653 msgid "Nothing to fix" msgstr "Nichts zu korrigieren" #: bin/gpo:672 msgid "No podcasts found." msgstr "Keine Podcasts gefunden." #: bin/gpo:686 msgid "Enter index to subscribe, ? for list" msgstr "Index zum Abonnieren eingeben, ? fУМr Liste" #: bin/gpo:700 bin/gpo:704 msgid "Invalid value." msgstr "UngУМltiger Wert." #: bin/gpo:721 #, python-format msgid "Invalid URL: %s" msgstr "UngУМltige URL: %s" #: bin/gpo:724 #, python-format msgid "Changed URL from %(old_url)s to %(new_url)s." msgstr "URL von %(old_url)s zu %(new_url)s geУЄndert." #: bin/gpo:782 #, python-format msgid "Syntax error: %(error)s" msgstr "Syntax-Fehler: %(error)s" #: bin/gpo:876 msgid "Ambiguous command. Did you mean.." msgstr "Befehl nicht eindeutig. Meinten Sie..." #: bin/gpo:880 msgid "The requested function is not available." msgstr "Die angeforderte Funktion ist nicht verfУМgbar." #: bin/gpodder:105 msgid "print logging output on the console" msgstr "Logging-Output auf die Konsole schreiben" #: bin/gpodder:108 msgid "subscribe to the feed at URL" msgstr "Feed an der angegebenen URL abonnieren" #: bin/gpodder:113 msgid "Mac OS X application process number" msgstr "Mac OS X Prozess-Nummer" #: share/applications/gpodder.desktop.in.h:2 msgid "gPodder Podcast Client" msgstr "gPodder Podcast Client" #: share/applications/gpodder.desktop.in.h:3 msgid "Podcast Client" msgstr "Podcast-Client" #: share/applications/gpodder.desktop.in.h:4 msgid "Subscribe to audio and video content from the web" msgstr "Audio- und Video-Inhalte aus dem Web abonnieren" #: share/applications/gpodder-url-handler.desktop.in.h:1 msgid "gPodder (subscribe to feed)" msgstr "gPodder (Feed abonnieren)" gpodder-3.9.0/po/pl.po0000644000016000001710000017075712654461625015706 0ustar jenkinsjenkins00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # # Translators: # , 2013. # Tomasz Dominikowski , 2009. msgid "" msgstr "" "Project-Id-Version: gPodder\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2016-02-03 20:31+0000\n" "PO-Revision-Date: 2013-03-05 15:01+0000\n" "Last-Translator: Thomas Perl \n" "Language-Team: Polish (http://www.transifex.com/projects/p/gpodder/language/" "pl/)\n" "Language: pl\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 " "|| n%100>=20) ? 1 : 2);\n" #: src/gpodder/config.py:55 #, python-format msgid "gPodder on %s" msgstr "gPodder na %s" #: src/gpodder/directory.py:95 #, fuzzy msgid "gpodder.net search" msgstr "gpodder.net" #: src/gpodder/directory.py:104 #, fuzzy msgid "OPML from web" msgstr "Pliki OPML" #: src/gpodder/directory.py:113 #, fuzzy msgid "OPML file" msgstr "Pliki OPML" #: src/gpodder/directory.py:122 share/gpodder/ui/gtk/gpodderwelcome.ui.h:1 msgid "Getting started" msgstr "Jak zaczФ…Ф‡?" #: src/gpodder/directory.py:131 #, fuzzy msgid "gpodder.net Top 50" msgstr "gpodder.net" #: src/gpodder/directory.py:140 #, fuzzy msgid "gpodder.net Tags" msgstr "gpodder.net" #: src/gpodder/directory.py:152 #, fuzzy msgid "Soundcloud search" msgstr "%s na Soundcloud" #: src/gpodder/directory.py:165 #, fuzzy msgid "Imported OPML file" msgstr "Zaimportuj z pliku OPML" #: src/gpodder/download.py:329 msgid "Wrong username/password" msgstr "NieprawidХ‚owa nazwa uХМytkownika lub hasХ‚o" #: src/gpodder/download.py:527 src/gpodder/sync.py:924 msgid "Added" msgstr "Dodane" #: src/gpodder/download.py:527 src/gpodder/sync.py:924 msgid "Queued" msgstr "Skolejkowane" #: src/gpodder/download.py:527 src/gpodder/gtkui/model.py:327 msgid "Downloading" msgstr "Pobieranie" #: src/gpodder/download.py:528 src/gpodder/model.py:721 #: src/gpodder/sync.py:925 msgid "Finished" msgstr "UkoХ„czone" #: src/gpodder/download.py:528 src/gpodder/sync.py:925 msgid "Failed" msgstr "Nieudane" #: src/gpodder/download.py:528 src/gpodder/sync.py:925 msgid "Cancelled" msgstr "Anulowane" #: src/gpodder/download.py:528 src/gpodder/sync.py:925 msgid "Paused" msgstr "Wstrzymane" #: src/gpodder/download.py:862 msgid "Missing content from server" msgstr "Brak zawartoХ›ci na serwerze" #: src/gpodder/download.py:868 #, python-format msgid "I/O Error: %(error)s: %(filename)s" msgstr "BХ‚Ф…d we/wy: %(error)s: %(filename)s" #: src/gpodder/download.py:875 #, python-format msgid "HTTP Error %(code)s: %(message)s" msgstr "BХ‚Ф…d HTTP %(code)s: %(message)s" #: src/gpodder/download.py:879 src/gpodder/sync.py:1081 #, python-format msgid "Error: %s" msgstr "BХ‚Ф…d: %s" #: src/gpodder/extensions.py:55 msgid "Desktop Integration" msgstr "Integracja Pulpitu" #: src/gpodder/extensions.py:56 msgid "Interface" msgstr "Interfejs" #: src/gpodder/extensions.py:57 msgid "Post download" msgstr "Po Х›ciФ…gniФ™ciu" #: src/gpodder/extensions.py:59 src/gpodder/model.py:779 #: src/gpodder/model.py:1225 msgid "Other" msgstr "Inne" #: src/gpodder/extensions.py:100 msgid "No description for this extension." msgstr "Brak opisu dla tego rozszerzenia" #: src/gpodder/extensions.py:212 #, python-format msgid "Command not found: %(command)s" msgstr "Polecenie nie znalezione: %(command)s" #: src/gpodder/extensions.py:228 #, python-format msgid "Need at least one of the following commands: %(list_of_commands)s" msgstr "" #: src/gpodder/extensions.py:265 #, python-format msgid "Python module not found: %(module)s" msgstr "ModuХ‚ Pythona nie znaleziony: %(module)s" #: src/gpodder/model.py:446 src/gpodder/plugins/soundcloud.py:156 msgid "No description available" msgstr "Brak opisu" #: src/gpodder/model.py:679 msgid "unknown" msgstr "nieznany" #: src/gpodder/model.py:746 msgid "Default" msgstr "DomyХ›lnie" #: src/gpodder/model.py:747 msgid "Only keep latest" msgstr "Zachowaj tylko najnowsze" #: src/gpodder/model.py:1208 src/gpodder/model.py:1223 #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:10 msgid "Video" msgstr "Wideo" #: src/gpodder/model.py:1221 msgid "Audio" msgstr "Audio" #: src/gpodder/my.py:174 #, python-format msgid "Add %s" msgstr "Dodaj %s" #: src/gpodder/my.py:176 #, python-format msgid "Remove %s" msgstr "UsuХ„ %s" #: src/gpodder/sync.py:196 msgid "Cancelled by user" msgstr "Anulowane przez uХМytkownika" #: src/gpodder/sync.py:199 msgid "Writing data to disk" msgstr "Zapisywanie danych na dysk" #: src/gpodder/sync.py:295 msgid "Opening iPod database" msgstr "Otwieranie bazy danych iPoda" #: src/gpodder/sync.py:305 msgid "iPod opened" msgstr "iPod otwarty" #: src/gpodder/sync.py:316 msgid "Saving iPod database" msgstr "Nagrywanie bazy danych iPoda" #: src/gpodder/sync.py:321 msgid "Writing extended gtkpod database" msgstr "Zapisywanie rozszerzonej bazy gtkpod" #: src/gpodder/sync.py:397 src/gpodder/sync.py:680 src/gpodder/sync.py:874 #, python-format msgid "Removing %s" msgstr "Usuwanie %s" #: src/gpodder/sync.py:412 src/gpodder/sync.py:557 #, python-format msgid "Adding %s" msgstr "Dodawanie %s" #: src/gpodder/sync.py:430 #, python-format msgid "Error copying %(episode)s: Not enough free space on %(mountpoint)s" msgstr "" "BХ‚Ф…d kopiowania: %(episode)s: Brak wystarczajФ…cego wolnego miejsca na " "%(mountpoint)s" #: src/gpodder/sync.py:515 msgid "Opening MP3 player" msgstr "Otwieranie odtwarzacza MP3" #: src/gpodder/sync.py:518 msgid "MP3 player opened" msgstr "Odtwarzacz MP3 otwarty" #: src/gpodder/sync.py:576 #, python-format msgid "" "Not enough space in %(path)s: %(free)s available, but need at least %(need)s" msgstr "" #: src/gpodder/sync.py:603 src/gpodder/sync.py:611 #, python-format msgid "Error opening %(filename)s: %(message)s" msgstr "BХ‚Ф…d otwierania %(filename)s: %(message)s" #: src/gpodder/sync.py:780 src/gpodder/sync.py:786 msgid "MTP device" msgstr "UrzФ…dzenie MTP" #: src/gpodder/sync.py:793 msgid "Opening the MTP device" msgstr "Otwieranie urzФ…dzenia MTP" #: src/gpodder/sync.py:803 #, python-format msgid "%s opened" msgstr "%s otwarty" #: src/gpodder/sync.py:808 #, python-format msgid "Closing %s" msgstr "Zamykanie %s" #: src/gpodder/sync.py:816 #, python-format msgid "%s closed" msgstr "%s zamkniФ™ty" #: src/gpodder/sync.py:821 bin/gpo:708 #, python-format msgid "Adding %s..." msgstr "Dodawanie %s..." #: src/gpodder/sync.py:924 msgid "Synchronizing" msgstr "Synchronizowanie" #: src/gpodder/util.py:429 #, python-format msgid "%(count)d day ago" msgid_plural "%(count)d days ago" msgstr[0] "%(count)d dzieХ„ temu" msgstr[1] "%(count)d dni temu" msgstr[2] "%(count)d dni temu" #: src/gpodder/util.py:508 msgid "Today" msgstr "Dzisiaj" #: src/gpodder/util.py:510 msgid "Yesterday" msgstr "Wczoraj" #: src/gpodder/util.py:553 src/gpodder/util.py:556 msgid "(unknown)" msgstr "(nieznane)" #: src/gpodder/util.py:1193 src/gpodder/util.py:1212 #, python-format msgid "%(count)d second" msgid_plural "%(count)d seconds" msgstr[0] "%(count)d sekundФ™" msgstr[1] "%(count)d sekundy" msgstr[2] "%(count)d sekund" #: src/gpodder/util.py:1206 #, python-format msgid "%(count)d hour" msgid_plural "%(count)d hours" msgstr[0] "%(count)d godzinФ™" msgstr[1] "%(count)d godziny" msgstr[2] "%(count)d godzin" #: src/gpodder/util.py:1209 #, python-format msgid "%(count)d minute" msgid_plural "%(count)d minutes" msgstr[0] "%(count)d minutФ™" msgstr[1] "%(count)d minuty" msgstr[2] "%(count)d minut" #: src/gpodder/util.py:1215 msgid "and" msgstr "i" #: src/gpodder/gtkui/config.py:50 msgid "Integer" msgstr "Liczba caХ‚kowita" #: src/gpodder/gtkui/config.py:52 msgid "Float" msgstr "Liczba zmiennoprzecinkowa" #: src/gpodder/gtkui/config.py:54 msgid "Boolean" msgstr "Typ logiczny" #: src/gpodder/gtkui/config.py:56 msgid "String" msgstr "CiФ…g" #: src/gpodder/gtkui/desktopfile.py:70 #, python-format msgid "Command: %s" msgstr "Polecenie: %s" #: src/gpodder/gtkui/desktopfile.py:150 msgid "Default application" msgstr "DomyХ›lny program" #: src/gpodder/gtkui/main.py:205 share/applications/gpodder.desktop.in.h:1 msgid "gPodder" msgstr "gPodder" #: src/gpodder/gtkui/main.py:288 msgid "Loading incomplete downloads" msgstr "Wczytywanie nieukoХ„czonych pobraХ„" #: src/gpodder/gtkui/main.py:289 msgid "Some episodes have not finished downloading in a previous session." msgstr "NiektУГre odcinki nie zostaХ‚y caХ‚kowicie pobrane w poprzedniej sesji." #: src/gpodder/gtkui/main.py:291 #, python-format msgid "%(count)d partial file" msgid_plural "%(count)d partial files" msgstr[0] "%(count)d czФ™Х›ciowy plik" msgstr[1] "%(count)d czФ™Х›ciowe pliki" msgstr[2] "%(count)d czФ™Х›ciowych plikУГw" #: src/gpodder/gtkui/main.py:306 msgid "Resume all" msgstr "WznУГw wszystkie" #: src/gpodder/gtkui/main.py:316 msgid "Incomplete downloads from a previous session were found." msgstr "Odnaleziono nieukoХ„czone pobrania z poprzedniej sesji." #: src/gpodder/gtkui/main.py:414 msgid "Action" msgstr "DziaХ‚anie" #: src/gpodder/gtkui/main.py:461 msgid "Confirm changes from gpodder.net" msgstr "PotwierdХК zmiany z gpodder.net" #: src/gpodder/gtkui/main.py:462 msgid "Select the actions you want to carry out." msgstr "Zaznacz dziaХ‚ania do wykonania." #: src/gpodder/gtkui/main.py:502 msgid "Uploading subscriptions" msgstr "WysyХ‚anie subskrypcji" #: src/gpodder/gtkui/main.py:503 msgid "Your subscriptions are being uploaded to the server." msgstr "Twoje subskrypcje sФ… wysyХ‚ane na serwer." #: src/gpodder/gtkui/main.py:508 msgid "List uploaded successfully." msgstr "WysХ‚anie listy powiodХ‚o siФ™." #: src/gpodder/gtkui/main.py:515 msgid "Error while uploading" msgstr "BХ‚Ф…d podczas wysyХ‚ania" #: src/gpodder/gtkui/main.py:800 src/gpodder/gtkui/main.py:928 #: src/gpodder/gtkui/main.py:2622 src/gpodder/gtkui/main.py:2815 #: src/gpodder/gtkui/desktop/episodeselector.py:132 #: src/gpodder/gtkui/desktop/sync.py:270 msgid "Episode" msgstr "Odcinek" #: src/gpodder/gtkui/main.py:819 msgid "Size" msgstr "Rozmiar" #: src/gpodder/gtkui/main.py:824 msgid "Duration" msgstr "Czas trwania" #: src/gpodder/gtkui/main.py:828 msgid "Released" msgstr "Wydano" #: src/gpodder/gtkui/main.py:855 msgid "Visible columns" msgstr "Widoczne kolumny" #: src/gpodder/gtkui/main.py:948 src/gpodder/gtkui/main.py:1108 #: share/gpodder/ui/gtk/gpodder.ui.h:45 msgid "Progress" msgstr "PostФ™p" #: src/gpodder/gtkui/main.py:982 msgid "Loading episodes" msgstr "Wczytywanie odcinkУГw" #: src/gpodder/gtkui/main.py:985 msgid "No episodes in current view" msgstr "Brak odcinkУГw w bieХМФ…cym widoku" #: src/gpodder/gtkui/main.py:987 msgid "No episodes available" msgstr "Brak dostФ™pnych odcinkУГw" #: src/gpodder/gtkui/main.py:993 msgid "No podcasts in this view" msgstr "Brak podcastУГw w tym widoku" #: src/gpodder/gtkui/main.py:995 msgid "No subscriptions" msgstr "Brak subskrypcji" #: src/gpodder/gtkui/main.py:997 msgid "No active tasks" msgstr "Brak aktywnych zadaХ„" #: src/gpodder/gtkui/main.py:1112 src/gpodder/gtkui/main.py:1114 #, python-format msgid "%(count)d active" msgid_plural "%(count)d active" msgstr[0] "%(count)d aktywne" msgstr[1] "%(count)d aktywne" msgstr[2] "%(count)d aktywnych" #: src/gpodder/gtkui/main.py:1116 #, python-format msgid "%(count)d failed" msgid_plural "%(count)d failed" msgstr[0] "%(count)d nieudane" msgstr[1] "%(count)d nieudane" msgstr[2] "%(count)d nieudanych" #: src/gpodder/gtkui/main.py:1118 #, python-format msgid "%(count)d queued" msgid_plural "%(count)d queued" msgstr[0] "%(count)d zakolejkowano" msgstr[1] "%(count)d zakolejkowano" msgstr[2] "%(count)d zakolejkowano" #: src/gpodder/gtkui/main.py:1132 #, python-format msgid "downloading %(count)d file" msgid_plural "downloading %(count)d files" msgstr[0] "pobieranie %(count)d pliku" msgstr[1] "pobieranie %(count)d plikУГw" msgstr[2] "pobieranie %(count)d plikУГw" #: src/gpodder/gtkui/main.py:1142 #, python-format msgid "synchronizing %(count)d file" msgid_plural "synchronizing %(count)d files" msgstr[0] "synchronizowanie %(count)d pliku" msgstr[1] "synchronizowanie %(count)d plikУГw" msgstr[2] "synchronizowanie %(count)d plikУГw" #: src/gpodder/gtkui/main.py:1144 #, python-format msgid "%(queued)d task queued" msgid_plural "%(queued)d tasks queued" msgstr[0] "%(queued)d zadanie skolejkowane" msgstr[1] "%(queued)d zadania skolejkowane" msgstr[2] "%(queued)d zadaХ„ skolejkowanych" #: src/gpodder/gtkui/main.py:1168 msgid "Please report this problem and restart gPodder:" msgstr "ProszФ™ zgХ‚osiФ‡ ten problem i uruchomiФ‡ program gPodder ponownie:" #: src/gpodder/gtkui/main.py:1168 msgid "Unhandled exception" msgstr "NieobsХ‚ugiwany wyjФ…tek" #: src/gpodder/gtkui/main.py:1235 #, python-format msgid "Feedparser error: %s" msgstr "BХ‚Ф…d przetwarzania ХКrУГdeХ‚: %s" #: src/gpodder/gtkui/main.py:1371 msgid "Could not download some episodes:" msgstr "Nie moХМna pobraФ‡ pewnych odcinkУГw:" #: src/gpodder/gtkui/main.py:1373 src/gpodder/gtkui/main.py:1376 msgid "Downloads finished" msgstr "Pobrania ukoХ„czono" #: src/gpodder/gtkui/main.py:1379 msgid "Downloads failed" msgstr "Pobrania nie powiodХ‚y siФ™" #: src/gpodder/gtkui/main.py:1383 msgid "Could not sync some episodes:" msgstr "Nie moХМna zsynchronizowaФ‡ pewnych odcinkУГw:" #: src/gpodder/gtkui/main.py:1385 src/gpodder/gtkui/main.py:1388 msgid "Device synchronization finished" msgstr "Synchronizacja urzФ…dzenia zakoХ„czona" #: src/gpodder/gtkui/main.py:1391 msgid "Device synchronization failed" msgstr "Synchronizacja urzФ…dzenia nie powiodХ‚a siФ™" #: src/gpodder/gtkui/main.py:1434 #, python-format msgid "%(count)d more episode" msgid_plural "%(count)d more episodes" msgstr[0] "jeszcze %(count)d odcinek" msgstr[1] "jeszcze %(count)d odcinki" msgstr[2] "jeszcze %(count)d odcinkУГw" #: src/gpodder/gtkui/main.py:1508 msgid "Start download now" msgstr "Rozpocznij pobieranie" #: src/gpodder/gtkui/main.py:1510 src/gpodder/gtkui/main.py:1719 #: src/gpodder/gtkui/desktop/episodeselector.py:144 #: share/gpodder/ui/gtk/gpodder.ui.h:20 msgid "Download" msgstr "Pobierz" #: src/gpodder/gtkui/main.py:1511 share/gpodder/ui/gtk/gpodder.ui.h:21 msgid "Cancel" msgstr "Anuluj" #: src/gpodder/gtkui/main.py:1512 msgid "Pause" msgstr "Wstrzymaj" #: src/gpodder/gtkui/main.py:1514 msgid "Remove from list" msgstr "UsuХ„ z listy" #: src/gpodder/gtkui/main.py:1553 share/gpodder/ui/gtk/gpodder.ui.h:13 msgid "Update podcast" msgstr "Zaktualizuj podcast" #: src/gpodder/gtkui/main.py:1560 msgid "Open download folder" msgstr "OtwУГrz katalog pobraХ„" #: src/gpodder/gtkui/main.py:1566 msgid "Mark episodes as old" msgstr "Zaznacz odcinki jako stare" #: src/gpodder/gtkui/main.py:1570 src/gpodder/gtkui/main.py:1778 msgid "Archive" msgstr "Zarchiwizuj" #: src/gpodder/gtkui/main.py:1575 msgid "Remove podcast" msgstr "UsuХ„ podcast" #: src/gpodder/gtkui/main.py:1590 share/gpodder/ui/gtk/gpodder.ui.h:10 msgid "Podcast settings" msgstr "Ustawienia podcastu" #: src/gpodder/gtkui/main.py:1650 msgid "Error converting file." msgstr "BХ‚Ф…d podczas konwertowania pliku." #: src/gpodder/gtkui/main.py:1650 msgid "Bluetooth file transfer" msgstr "PrzesyХ‚ danych przez Bluetooth" #: src/gpodder/gtkui/main.py:1709 msgid "Preview" msgstr "PodglФ…d" #: src/gpodder/gtkui/main.py:1711 msgid "Stream" msgstr "OdtwУГrz strumieХ„" #: src/gpodder/gtkui/main.py:1755 msgid "Send to" msgstr "WyХ›lij do" #: src/gpodder/gtkui/main.py:1757 msgid "Local folder" msgstr "Katalog lokalny" #: src/gpodder/gtkui/main.py:1762 msgid "Bluetooth device" msgstr "UrzФ…dzenie Bluetooth" #: src/gpodder/gtkui/main.py:1769 msgid "New" msgstr "Nowy" #: src/gpodder/gtkui/main.py:1785 share/gpodder/ui/gtk/gpodder.ui.h:25 msgid "Episode details" msgstr "SzczegУГХ‚y odcinka" #: src/gpodder/gtkui/main.py:1938 msgid "Please check your media player settings in the preferences dialog." msgstr "" "ProszФ™ sprawdziФ‡ ustawienia odtwarzacza multimediУГw w oknie preferencji." #: src/gpodder/gtkui/main.py:1939 msgid "Error opening player" msgstr "BХ‚Ф…d podczas otwierania odtwarzacza" #: src/gpodder/gtkui/main.py:2178 msgid "Adding podcasts" msgstr "Dodawanie podcastУГw" #: src/gpodder/gtkui/main.py:2179 msgid "Please wait while episode information is downloaded." msgstr "ProszФ™ czekaФ‡, informacje o odcinkach sФ… pobierane." #: src/gpodder/gtkui/main.py:2186 msgid "Existing subscriptions skipped" msgstr "IstniejФ…ce subskrypcje pominiФ™to" #: src/gpodder/gtkui/main.py:2187 msgid "You are already subscribed to these podcasts:" msgstr "JuХМ subskrybujesz te podcasty:" #: src/gpodder/gtkui/main.py:2195 msgid "Podcast requires authentication" msgstr "Podcast wymaga uwierzytelnienia" #: src/gpodder/gtkui/main.py:2196 #, python-format msgid "Please login to %s:" msgstr "ProszФ™ siФ™ zalogowaФ‡ do %s:" #: src/gpodder/gtkui/main.py:2204 src/gpodder/gtkui/main.py:2299 msgid "Authentication failed" msgstr "Uwierzytelnienie nie powiodХ‚o siФ™" #: src/gpodder/gtkui/main.py:2210 msgid "Website redirection detected" msgstr "Wykryto przekierowanie" #: src/gpodder/gtkui/main.py:2211 #, python-format msgid "The URL %(url)s redirects to %(target)s." msgstr "Adres URL %(url)s przekierowuje do %(target)s." #: src/gpodder/gtkui/main.py:2212 msgid "Do you want to visit the website now?" msgstr "OdwiedziФ‡ witrynФ™ teraz?" #: src/gpodder/gtkui/main.py:2221 msgid "Could not add some podcasts" msgstr "Nie moХМna byХ‚o dodaФ‡ niektУГrych podcastУГw" #: src/gpodder/gtkui/main.py:2222 msgid "Some podcasts could not be added to your list:" msgstr "NiektУГre podcasty nie mogХ‚y zostaФ‡ dodane do listy:" #: src/gpodder/gtkui/main.py:2224 msgid "Unknown" msgstr "Nieznany" #: src/gpodder/gtkui/main.py:2308 msgid "Redirection detected" msgstr "Wykryto przekierowanie" #: src/gpodder/gtkui/main.py:2342 msgid "Merging episode actions" msgstr "ХФ…czenie dziaХ‚aХ„ na odcinkach" #: src/gpodder/gtkui/main.py:2343 msgid "Episode actions from gpodder.net are merged." msgstr "DziaХ‚ania na odcinkach z gpodder.net zostaХ‚y poХ‚Ф…czone." #: src/gpodder/gtkui/main.py:2368 msgid "Cancelling..." msgstr "Anulowanie..." #: src/gpodder/gtkui/main.py:2377 msgid "Please connect to a network, then try again." msgstr "ProszФ™ poХ‚Ф…czyФ‡ siФ™ z sieciФ…, potem sprУГbowaФ‡ ponownie." #: src/gpodder/gtkui/main.py:2378 msgid "No network connection" msgstr "Brak poХ‚Ф…czenia sieciowego" #: src/gpodder/gtkui/main.py:2399 #, python-format msgid "Updating %(count)d feed..." msgid_plural "Updating %(count)d feeds..." msgstr[0] "Aktualizowanie %(count)d ХКrУГdХ‚a..." msgstr[1] "Aktualizowanie %(count)d ХКrУГdeХ‚..." msgstr[2] "Aktualizowanie %(count)d ХКrУГdeХ‚..." #: src/gpodder/gtkui/main.py:2417 #, python-format msgid "Error while updating %(url)s: %(message)s" msgstr "BХ‚Ф…d podczas aktualizowania %(url)s: %(message)s" #: src/gpodder/gtkui/main.py:2419 #, python-format msgid "The feed at %(url)s could not be updated." msgstr "ХЙrУГdХ‚o %(url)s nie mogХ‚o zostaФ‡ zaktualizowane." #: src/gpodder/gtkui/main.py:2420 msgid "Error while updating feed" msgstr "BХ‚Ф…d podczas aktualizowania ХКrУГdХ‚a" #: src/gpodder/gtkui/main.py:2435 #, python-format msgid "Updated %(podcast)s (%(position)d/%(total)d)" msgstr "Zaktualizowano %(podcast)s (%(position)d/%(total)d)" #: src/gpodder/gtkui/main.py:2466 msgid "No new episodes" msgstr "Brak nowych odcinkУГw" #: src/gpodder/gtkui/main.py:2479 #, python-format msgid "Downloading %(count)d new episode." msgid_plural "Downloading %(count)d new episodes." msgstr[0] "Pobieranie %(count)d nowego odcinka." msgstr[1] "Pobieranie %(count)d nowych odcinkУГw." msgstr[2] "Pobieranie %(count)d nowych odcinkУГw." #: src/gpodder/gtkui/main.py:2480 src/gpodder/gtkui/main.py:2484 #: src/gpodder/gtkui/main.py:2833 msgid "New episodes available" msgstr "DostФ™pne nowe odcinki" #: src/gpodder/gtkui/main.py:2483 #, python-format msgid "%(count)d new episode added to download list." msgid_plural "%(count)d new episodes added to download list." msgstr[0] "%(count)d nowy odcinek dodany do listy pobraХ„." msgstr[1] "%(count)d nowe odcinki dodane do listy pobraХ„." msgstr[2] "%(count)d nowych odcinkУГw dodanych do listy pobraХ„." #: src/gpodder/gtkui/main.py:2490 #, python-format msgid "%(count)d new episode available" msgid_plural "%(count)d new episodes available" msgstr[0] "DostФ™pny %(count)d nowy odcinek" msgstr[1] "DostФ™pne %(count)d nowe odcinki" msgstr[2] "DostФ™pnych %(count)d nowych odcinkУГw" #: src/gpodder/gtkui/main.py:2509 msgid "Quit gPodder" msgstr "ZakoХ„cz gPodder" #: src/gpodder/gtkui/main.py:2510 msgid "" "You are downloading episodes. You can resume downloads the next time you " "start gPodder. Do you want to quit now?" msgstr "" "W trakcie pobierania odcinkУГw. MoХМna wznowiФ‡ pobieranie przy nastФ™pnym " "uruchomieniu programu gPodder. ZakoХ„czyФ‡ teraz?" #: src/gpodder/gtkui/main.py:2559 msgid "Episodes are locked" msgstr "Odcinki sФ… zablokowane" #: src/gpodder/gtkui/main.py:2560 msgid "" "The selected episodes are locked. Please unlock the episodes that you want " "to delete before trying to delete them." msgstr "" "Zaznaczone odcinki sФ… zablokowane. ProszФ™ odblokowaФ‡ odcinki, ktУГre naleХМy " "usunФ…Ф‡ zanim nastФ…pi prУГba ich usuniФ™cia." #: src/gpodder/gtkui/main.py:2565 #, python-format msgid "Delete %(count)d episode?" msgid_plural "Delete %(count)d episodes?" msgstr[0] "UsunФ…Ф‡ %(count)d odcinek?" msgstr[1] "UsunФ…Ф‡ %(count)d odcinki?" msgstr[2] "UsunФ…Ф‡ %(count)d odcinkУГw?" #: src/gpodder/gtkui/main.py:2566 msgid "Deleting episodes removes downloaded files." msgstr "UsuniФ™cie odcinkУГw oznacza usuniФ™cie pobranych plikУГw." #: src/gpodder/gtkui/main.py:2571 msgid "Deleting episodes" msgstr "Usuwanie odcinkУГw" #: src/gpodder/gtkui/main.py:2572 msgid "Please wait while episodes are deleted" msgstr "ProszФ™ czekaФ‡, odcinki sФ… usuwane" #: src/gpodder/gtkui/main.py:2625 #, python-format msgid "Select older than %(count)d day" msgid_plural "Select older than %(count)d days" msgstr[0] "Zaznacz starsze niХМ %(count)d dzieХ„" msgstr[1] "Zaznacz starsze niХМ %(count)d dni" msgstr[2] "Zaznacz starsze niХМ %(count)d dni" #: src/gpodder/gtkui/main.py:2627 msgid "Select played" msgstr "Zaznacz odtworzone" #: src/gpodder/gtkui/main.py:2628 msgid "Select finished" msgstr "WybУГr zakoХ„czono" #: src/gpodder/gtkui/main.py:2632 msgid "Select the episodes you want to delete:" msgstr "ProszФ™ zaznaczyФ‡ odcinki do usuniФ™cia:" #: src/gpodder/gtkui/main.py:2648 share/gpodder/ui/gtk/gpodder.ui.h:4 msgid "Delete episodes" msgstr "UsuХ„ odcinki" #: src/gpodder/gtkui/main.py:2703 src/gpodder/gtkui/main.py:2934 #: src/gpodder/gtkui/main.py:3034 msgid "No podcast selected" msgstr "Brak zaznaczonych podcastУГw" #: src/gpodder/gtkui/main.py:2704 msgid "Please select a podcast in the podcasts list to update." msgstr "ProszФ™ zaznaczyФ‡ podcast z listy podcastУГw do aktualizacji." #: src/gpodder/gtkui/main.py:2774 #, python-format msgid "Download error while downloading %(episode)s: %(message)s" msgstr "BХ‚Ф…d podczas pobierania %(episode)s: %(message)s" #: src/gpodder/gtkui/main.py:2775 msgid "Download error" msgstr "BХ‚Ф…d pobierania" #: src/gpodder/gtkui/main.py:2818 msgid "Select the episodes you want to download:" msgstr "ProszФ™ zaznaczyФ‡ odcinki do pobrania." #: src/gpodder/gtkui/main.py:2841 msgid "Mark as old" msgstr "Oznacz jako stary" #: src/gpodder/gtkui/main.py:2848 msgid "Please check for new episodes later." msgstr "ProszФ™ sprawdziФ‡ dostФ™pnoХ›Ф‡ nowych odcinkУГw pУГХКniej." #: src/gpodder/gtkui/main.py:2849 msgid "No new episodes available" msgstr "Brak dostФ™pnych nowych odcinkУГw" #: src/gpodder/gtkui/main.py:2900 msgid "Login to gpodder.net" msgstr "Zaloguj siФ™ do gpodder.net" #: src/gpodder/gtkui/main.py:2901 msgid "Please login to download your subscriptions." msgstr "ProszФ™ siФ™ zalogowaФ‡, aby pobraФ‡ subskrypcje." #: src/gpodder/gtkui/main.py:2916 msgid "Subscriptions on gpodder.net" msgstr "Subskrypcje na gpodder.net" #: src/gpodder/gtkui/main.py:2935 msgid "Please select a podcast in the podcasts list to edit." msgstr "ProszФ™ wybraФ‡ podcast z listy podcastУГw do zmodyfikowania." #: src/gpodder/gtkui/main.py:2949 msgid "Podcast" msgstr "Podcast" #: src/gpodder/gtkui/main.py:2955 share/gpodder/ui/gtk/gpodder.ui.h:12 msgid "Remove podcasts" msgstr "Usuwanie podcastУГw" #: src/gpodder/gtkui/main.py:2956 msgid "Select the podcast you want to remove." msgstr "ProszФ™ zaznaczyФ‡ podcast do usuniФ™cia:" #: src/gpodder/gtkui/main.py:2960 #: src/gpodder/gtkui/desktop/episodeselector.py:105 msgid "Remove" msgstr "UsuХ„" #: src/gpodder/gtkui/main.py:2969 msgid "Removing podcast" msgstr "Usuwanie podcastu" #: src/gpodder/gtkui/main.py:2970 msgid "Please wait while the podcast is removed" msgstr "ProszФ™ czekaФ‡, podcast jest usuwany" #: src/gpodder/gtkui/main.py:2971 msgid "Do you really want to remove this podcast and its episodes?" msgstr "Na pewno usunФ…Ф‡ ten podcast i wszystkie jego odcinki?" #: src/gpodder/gtkui/main.py:2973 msgid "Removing podcasts" msgstr "Usuwanie podcastУГw" #: src/gpodder/gtkui/main.py:2974 msgid "Please wait while the podcasts are removed" msgstr "ProszФ™ czekaФ‡, podcasty sФ… usuwane" #: src/gpodder/gtkui/main.py:2975 msgid "Do you really want to remove the selected podcasts and their episodes?" msgstr "Na pewno usunФ…Ф‡ zaznaczone podcasty i ich odcinki?" #: src/gpodder/gtkui/main.py:3035 msgid "Please select a podcast in the podcasts list to remove." msgstr "ProszФ™ wybraФ‡ podcast z listy podcastУГw do usuniФ™cia." #: src/gpodder/gtkui/main.py:3045 msgid "OPML files" msgstr "Pliki OPML" #: src/gpodder/gtkui/main.py:3050 msgid "Import from OPML" msgstr "Zaimportuj z OPML" #: src/gpodder/gtkui/main.py:3064 msgid "Import podcasts from OPML file" msgstr "Zaimportuj podcasty z pliku OPML" #: src/gpodder/gtkui/main.py:3071 msgid "Nothing to export" msgstr "Brak elementУГw do wyeksportowania" #: src/gpodder/gtkui/main.py:3072 msgid "" "Your list of podcast subscriptions is empty. Please subscribe to some " "podcasts first before trying to export your subscription list." msgstr "" "Lista subskrypcji jest pusta. NaleХМy najpierw dodaФ‡ subskrypcje jakichХ› " "podcastУГw." #: src/gpodder/gtkui/main.py:3076 msgid "Export to OPML" msgstr "Eksportuj do OPML" #: src/gpodder/gtkui/main.py:3087 #, python-format msgid "%(count)d subscription exported" msgid_plural "%(count)d subscriptions exported" msgstr[0] "Wyeksportowano %(count)d subskrypcjФ™" msgstr[1] "Wyeksportowano %(count)d subskrypcje" msgstr[2] "Wyeksportowano %(count)d subskrypcji" #: src/gpodder/gtkui/main.py:3088 msgid "Your podcast list has been successfully exported." msgstr "Wyeksportowanie listy podcastУГw powiodХ‚o siФ™." #: src/gpodder/gtkui/main.py:3090 msgid "Could not export OPML to file. Please check your permissions." msgstr "" "Nie moХМna byХ‚o wyeksportowaФ‡ OPML do pliku. ProszФ™ sprawdziФ‡ uprawnienia." #: src/gpodder/gtkui/main.py:3090 msgid "OPML export failed" msgstr "Eksport do OPML nie powiУГdХ‚ siФ™" #: src/gpodder/gtkui/main.py:3117 msgid "No updates available" msgstr "Brak aktualizacji" #: src/gpodder/gtkui/main.py:3118 msgid "You have the latest version of gPodder." msgstr "Masz najnowszФ… wersjФ™ gPoddera." #: src/gpodder/gtkui/main.py:3122 msgid "New version available" msgstr "Nowa wersja dostФ™pna" #: src/gpodder/gtkui/main.py:3124 #, python-format msgid "Installed version: %s" msgstr "Zainstalowana wersja: %s" #: src/gpodder/gtkui/main.py:3125 #, python-format msgid "Newest version: %s" msgstr "Najnowsza wersja: %s" #: src/gpodder/gtkui/main.py:3126 #, python-format msgid "Release date: %s" msgstr "Data wydania: %s" #: src/gpodder/gtkui/main.py:3128 msgid "Download the latest version from gpodder.org?" msgstr "Pobierz najnowszФ… wersjФ™ z gpodder.org?" #: src/gpodder/gtkui/main.py:3141 msgid "About gPodder" msgstr "O gPodderze" #: src/gpodder/gtkui/main.py:3424 #, fuzzy msgid "Please register a YouTube API key and set it in the preferences." msgstr "ProszФ™ ustaw swoje urzФ…dzenie w oknie ustawieХ„." #: src/gpodder/gtkui/main.py:3425 msgid "Would you like to set up an API key now?" msgstr "" #: src/gpodder/gtkui/main.py:3425 msgid "API key required" msgstr "" #: src/gpodder/gtkui/main.py:3444 bin/gpo:631 #, fuzzy msgid "No unique URL found" msgstr "Nie odnaleziono kanaХ‚УГw" #: src/gpodder/gtkui/main.py:3449 bin/gpo:637 #, fuzzy msgid "Already subscribed" msgstr "Nie moХМna subskrybowaФ‡ siФ™ do %s" #: src/gpodder/gtkui/main.py:3458 bin/gpo:649 #, python-format msgid "Make sure the API key is correct. Error: %(message)s" msgstr "" #: src/gpodder/gtkui/main.py:3459 #, fuzzy msgid "Error getting YouTube channels" msgstr "BХ‚Ф…d podczas ustawiania opcji" #: src/gpodder/gtkui/main.py:3462 #, fuzzy msgid "Successfully migrated subscriptions" msgstr "%s pomyХ›lnie dodany." #: src/gpodder/gtkui/main.py:3464 #, fuzzy msgid "Subscriptions are up to date" msgstr "Subskrypcja wstrzymana" #: src/gpodder/gtkui/main.py:3467 msgid "These URLs failed:" msgstr "" #: src/gpodder/gtkui/main.py:3469 #, fuzzy msgid "Could not migrate some subscriptions" msgstr "Nie moХМna byХ‚o dodaФ‡ niektУГrych podcastУГw" #: src/gpodder/gtkui/main.py:3493 msgid "Cannot start gPodder" msgstr "Nie moХМna uruchomiФ‡ programu gPodder" #: src/gpodder/gtkui/main.py:3494 #, python-format msgid "D-Bus error: %s" msgstr "BХ‚Ф…d D-Bus: %s" #: src/gpodder/gtkui/model.py:68 #, python-format msgid "released %s" msgstr "wydano %s" #: src/gpodder/gtkui/model.py:69 src/gpodder/gtkui/model.py:87 #: src/gpodder/gtkui/model.py:237 src/gpodder/gtkui/shownotes.py:84 #, python-format msgid "from %s" msgstr "od %s" #: src/gpodder/gtkui/model.py:80 src/gpodder/gtkui/model.py:393 msgid "played" msgstr "odtworzony" #: src/gpodder/gtkui/model.py:82 msgid "unplayed" msgstr "nieodtworzony" #: src/gpodder/gtkui/model.py:85 msgid "today" msgstr "dzisiaj" #: src/gpodder/gtkui/model.py:86 #, python-format msgid "downloaded %s" msgstr "pobrano %s" #: src/gpodder/gtkui/model.py:337 msgid "Deleted" msgstr "UsuniФ™te" #: src/gpodder/gtkui/model.py:342 msgid "New episode" msgstr "Nowy odcinek" #: src/gpodder/gtkui/model.py:356 msgid "Downloaded episode" msgstr "Pobrany odcinek" #: src/gpodder/gtkui/model.py:359 msgid "Downloaded video episode" msgstr "Pobrany odcinek wideo" #: src/gpodder/gtkui/model.py:362 msgid "Downloaded image" msgstr "Pobrany obraz" #: src/gpodder/gtkui/model.py:365 msgid "Downloaded file" msgstr "Pobrany plik" #: src/gpodder/gtkui/model.py:380 msgid "missing file" msgstr "brakujФ…cy plik" #: src/gpodder/gtkui/model.py:384 msgid "never displayed" msgstr "nigdy niewyХ›wietlany" #: src/gpodder/gtkui/model.py:386 msgid "never played" msgstr "nigdy nieodtwarzany" #: src/gpodder/gtkui/model.py:388 msgid "never opened" msgstr "nigdy nie otwarto" #: src/gpodder/gtkui/model.py:391 msgid "displayed" msgstr "wyХ›wietlony" #: src/gpodder/gtkui/model.py:395 msgid "opened" msgstr "otwarto" #: src/gpodder/gtkui/model.py:397 msgid "deletion prevented" msgstr "powstrzymano usuniФ™cie" #: src/gpodder/gtkui/model.py:432 share/gpodder/ui/gtk/gpodder.ui.h:32 msgid "All episodes" msgstr "Wszystkie odcinki" #: src/gpodder/gtkui/model.py:433 msgid "from all podcasts" msgstr "ze wszystkich podcastУГw" #: src/gpodder/gtkui/model.py:625 msgid "Subscription paused" msgstr "Subskrypcja wstrzymana" #: src/gpodder/gtkui/shownotes.py:118 #, fuzzy msgid "Please select an episode" msgstr "Wybierz odcinki" #: src/gpodder/gtkui/interface/addpodcast.py:74 msgid "Nothing to paste." msgstr "Brak zawartoХ›ci do wklejenia." #: src/gpodder/gtkui/interface/addpodcast.py:74 msgid "Clipboard is empty" msgstr "Schowek jest pusty." #: src/gpodder/gtkui/interface/common.py:160 msgid "Username" msgstr "Nazwa uХМytkownika" #: src/gpodder/gtkui/interface/common.py:163 msgid "New user" msgstr "Nowy uХМytk." #: src/gpodder/gtkui/interface/common.py:170 msgid "Login" msgstr "Zaloguj" #: src/gpodder/gtkui/interface/common.py:172 msgid "Authentication required" msgstr "Wymagane uwierzytelnienie" #: src/gpodder/gtkui/interface/common.py:203 msgid "Password" msgstr "HasХ‚o" #: src/gpodder/gtkui/interface/common.py:225 msgid "Select destination" msgstr "ProszФ™ wybraФ‡ miejsce docelowe" #: src/gpodder/gtkui/interface/configeditor.py:34 msgid "Setting" msgstr "Ustawienie" #: src/gpodder/gtkui/interface/configeditor.py:41 msgid "Set to" msgstr "Ustaw na" #: src/gpodder/gtkui/interface/configeditor.py:81 #, python-format msgid "Cannot set %(field)s to %(value)s. Needed data type: %(datatype)s" msgstr "" "Nie moХМna ustawiФ‡ %(field)s na %(value)s. Wymagany typ danych: %(datatype)s" #: src/gpodder/gtkui/interface/configeditor.py:85 msgid "Error setting option" msgstr "BХ‚Ф…d podczas ustawiania opcji" #: src/gpodder/gtkui/desktop/channel.py:100 msgid "Add section" msgstr "Dodanie sekcji" #: src/gpodder/gtkui/desktop/channel.py:100 msgid "New section:" msgstr "Nowa sekcja:" #: src/gpodder/gtkui/desktop/channel.py:133 msgid "Select new podcast cover artwork" msgstr "ProszФ™ wybraФ‡ nowФ… okХ‚adkФ™ dla podcastu" #: src/gpodder/gtkui/desktop/channel.py:161 msgid "You can only drop a single image or URL here." msgstr "MoХМna tutaj upuХ›ciФ‡ tylko pojedynczy obraz lub adres URL." #: src/gpodder/gtkui/desktop/channel.py:161 #: src/gpodder/gtkui/desktop/channel.py:171 msgid "Drag and drop" msgstr "PrzeciФ…gnij i upuХ›Ф‡" #: src/gpodder/gtkui/desktop/channel.py:171 msgid "You can only drop local files and http:// URLs here." msgstr "MoХМna tutaj tylko upuХ›ciФ‡ pliki lokalne i adresy URL http://." #: src/gpodder/gtkui/desktop/deviceplaylist.py:98 #, fuzzy, python-format msgid "Folder %s could not be created." msgstr "ХЙrУГdХ‚o %(url)s nie mogХ‚o zostaФ‡ zaktualizowane." #: src/gpodder/gtkui/desktop/deviceplaylist.py:98 #, fuzzy msgid "Error writing playlist" msgstr "BХ‚Ф…d podczas otwierania odtwarzacza" #: src/gpodder/gtkui/desktop/episodeselector.py:288 #: share/gpodder/ui/gtk/gpodderepisodeselector.ui.h:2 msgid "Select all" msgstr "Zaznacz wszystkie" #: src/gpodder/gtkui/desktop/episodeselector.py:292 #: share/gpodder/ui/gtk/gpodderepisodeselector.ui.h:3 msgid "Select none" msgstr "Odznacz wszystkie" #: src/gpodder/gtkui/desktop/episodeselector.py:324 msgid "Nothing selected" msgstr "Brak zaznaczenia" #: src/gpodder/gtkui/desktop/episodeselector.py:325 #, python-format msgid "%(count)d episode" msgid_plural "%(count)d episodes" msgstr[0] "%(count)d odcinek" msgstr[1] "%(count)d odcinki" msgstr[2] "%(count)d odcinkУГw" #: src/gpodder/gtkui/desktop/episodeselector.py:327 #, python-format msgid "size: %s" msgstr "rozmiar: %s" #: src/gpodder/gtkui/desktop/podcastdirectory.py:238 #, fuzzy msgid "Loading podcasts" msgstr "Dodawanie podcastУГw" #: src/gpodder/gtkui/desktop/podcastdirectory.py:239 #, fuzzy msgid "Please wait while the podcast list is downloaded" msgstr "ProszФ™ czekaФ‡, podcast jest usuwany" #: src/gpodder/gtkui/desktop/preferences.py:51 #: src/gpodder/gtkui/desktop/preferences.py:93 msgid "Do nothing" msgstr "Nic nie rУГb" #: src/gpodder/gtkui/desktop/preferences.py:52 msgid "Show episode list" msgstr "WyХ›wietl listФ™ odcinkУГw" #: src/gpodder/gtkui/desktop/preferences.py:53 msgid "Add to download list" msgstr "Dodaj do listy pobraХ„" #: src/gpodder/gtkui/desktop/preferences.py:54 msgid "Download immediately" msgstr "Pobierz natychmiast" #: src/gpodder/gtkui/desktop/preferences.py:72 msgid "None" msgstr "ХЛaden" #: src/gpodder/gtkui/desktop/preferences.py:73 msgid "iPod" msgstr "" #: src/gpodder/gtkui/desktop/preferences.py:74 msgid "Filesystem-based" msgstr "Oparty o system plikУГw" #: src/gpodder/gtkui/desktop/preferences.py:94 msgid "Mark as played" msgstr "Zaznacz jako odtworzony" #: src/gpodder/gtkui/desktop/preferences.py:95 msgid "Delete from gPodder" msgstr "UsuХ„ z gPoddera" #: src/gpodder/gtkui/desktop/preferences.py:123 #, python-format msgid "Custom (%(format_ids)s)" msgstr "Niestandardowy (%(format_ids)s)" #: src/gpodder/gtkui/desktop/preferences.py:318 msgid "Name" msgstr "Nazwa" #: src/gpodder/gtkui/desktop/preferences.py:369 #, fuzzy msgid "Documentation" msgstr "Czas trwania" #: src/gpodder/gtkui/desktop/preferences.py:374 #, fuzzy msgid "Extension info" msgstr "Informacja o module rozszerzenia" #: src/gpodder/gtkui/desktop/preferences.py:379 msgid "Support the author" msgstr "" #: src/gpodder/gtkui/desktop/preferences.py:413 msgid "Extension cannot be activated" msgstr "Rozszerzenie nie moХМe byФ‡ aktywowane" #: src/gpodder/gtkui/desktop/preferences.py:426 msgid "Extension module info" msgstr "Informacja o module rozszerzenia" #: src/gpodder/gtkui/desktop/preferences.py:463 msgid "Configure audio player" msgstr "Skonfiguruj odtwarzacz dХКwiФ™ku" #: src/gpodder/gtkui/desktop/preferences.py:464 #: src/gpodder/gtkui/desktop/preferences.py:474 msgid "Command:" msgstr "Polecenie:" #: src/gpodder/gtkui/desktop/preferences.py:473 msgid "Configure video player" msgstr "Skonfiguruj odtwarzacz wideo" #: src/gpodder/gtkui/desktop/preferences.py:485 #: src/gpodder/gtkui/desktop/preferences.py:503 msgid "manually" msgstr "RФ™cznie" #: src/gpodder/gtkui/desktop/preferences.py:505 #, python-format msgid "after %(count)d day" msgid_plural "after %(count)d days" msgstr[0] "po %(count)d dniu" msgstr[1] "po %(count)d dniach" msgstr[2] "po %(count)d dniach" #: src/gpodder/gtkui/desktop/preferences.py:541 msgid "Replace subscription list on server" msgstr "ZastФ…p listФ™ subskrypcji na serwerze" #: src/gpodder/gtkui/desktop/preferences.py:542 msgid "" "Remote podcasts that have not been added locally will be removed on the " "server. Continue?" msgstr "" "Zdalne podcasty ktУГre nie zostaХ‚y dodane lokalnie zostanФ… usuniФ™te na " "serwerze. KontynuowaФ‡?" #: src/gpodder/gtkui/desktop/preferences.py:621 msgid "Select folder for mount point" msgstr "Wybierz folder dla punktu montowania" #: src/gpodder/gtkui/desktop/preferences.py:638 #, fuzzy msgid "Select folder for playlists" msgstr "WybУГr katalogu jako punktu montowania" #: src/gpodder/gtkui/desktop/sync.py:86 msgid "No device configured" msgstr "ХЛadne urzФ…dzenie nie jest skonfigurowane" #: src/gpodder/gtkui/desktop/sync.py:87 msgid "Please set up your device in the preferences dialog." msgstr "ProszФ™ ustaw swoje urzФ…dzenie w oknie ustawieХ„." #: src/gpodder/gtkui/desktop/sync.py:91 msgid "Cannot open device" msgstr "Nie moХМna otworzyФ‡ urzФ…dzenia" #: src/gpodder/gtkui/desktop/sync.py:92 msgid "Please check the settings in the preferences dialog." msgstr "ProszФ™ sprawdХК ustawienia w oknie preferencji" #: src/gpodder/gtkui/desktop/sync.py:139 msgid "Not enough space left on device" msgstr "Brak wystarczajФ…cej iloХ›ci miejsca na urzФ…dzeniu" #: src/gpodder/gtkui/desktop/sync.py:140 #, python-format msgid "" "Additional free space required: %(required_space)s\n" "Do you want to continue?" msgstr "" "Dodatkowa wolna przestrzeХ„ wymagana: %(required_space)s\n" "Czy chcesz kontynuowaФ‡?" #: src/gpodder/gtkui/desktop/sync.py:199 #, fuzzy msgid "Update successful" msgstr "WysХ‚anie listy powiodХ‚o siФ™." #: src/gpodder/gtkui/desktop/sync.py:200 msgid "The playlist on your MP3 player has been updated." msgstr "" #: src/gpodder/gtkui/desktop/sync.py:274 msgid "Episodes have been deleted on device" msgstr "" #: src/gpodder/gtkui/desktop/sync.py:285 #, fuzzy msgid "Error writing playlist files" msgstr "BХ‚Ф…d podczas konwertowania pliku." #: src/gpodder/plugins/soundcloud.py:154 msgid "Unknown track" msgstr "Nieznana Х›cieХМka" #: src/gpodder/plugins/soundcloud.py:181 #, python-format msgid "%s on Soundcloud" msgstr "%s na Soundcloud" #: src/gpodder/plugins/soundcloud.py:190 #, python-format msgid "Tracks published by %s on Soundcloud." msgstr "ХšcieХМki opublikowane przez %s na Soundcloud." #: src/gpodder/plugins/soundcloud.py:217 #, python-format msgid "%s's favorites on Soundcloud" msgstr "Ulubione uХМytkownika %s na Soundcloud" #: src/gpodder/plugins/soundcloud.py:223 #, python-format msgid "Tracks favorited by %s on Soundcloud." msgstr "ХšcieХМki opublikowane przez uХМytkownika %s na Soundcloud." #: share/gpodder/extensions/audio_converter.py:20 #, fuzzy msgid "Convert audio files" msgstr "Konwersja nieudana" #: share/gpodder/extensions/audio_converter.py:21 #, fuzzy msgid "Transcode audio files to mp3/ogg" msgstr "Przekoduj pliki .ogg na .mp3 uХМywajФ…c ffmpeg" #: share/gpodder/extensions/audio_converter.py:84 #: share/gpodder/extensions/video_converter.py:86 #, python-format msgid "Convert to %(format)s" msgstr "Skonwertuj na %(format)s" #: share/gpodder/extensions/audio_converter.py:111 #: share/gpodder/extensions/rockbox_convert2mp4.py:65 #: share/gpodder/extensions/video_converter.py:111 msgid "File converted" msgstr "Plik skonwertowano" #: share/gpodder/extensions/audio_converter.py:114 #: share/gpodder/extensions/video_converter.py:114 msgid "Conversion failed" msgstr "Konwersja nieudana" #: share/gpodder/extensions/concatenate_videos.py:20 #: share/gpodder/extensions/concatenate_videos.py:100 #, fuzzy msgid "Concatenate videos" msgstr "Konwersja nieudana" #: share/gpodder/extensions/concatenate_videos.py:21 #, fuzzy msgid "Add a context menu item for concatenating multiple videos" msgstr "" "Dodaj element menu kontekstowego dla skolejkowanych odcinkУГw w " "zainstalowanych odtwarzaczach multimedialnych" #: share/gpodder/extensions/concatenate_videos.py:37 msgid "Save video" msgstr "" #: share/gpodder/extensions/concatenate_videos.py:66 #, fuzzy msgid "Concatenating video files" msgstr "Konwersja nieudana" #: share/gpodder/extensions/concatenate_videos.py:67 #, python-format msgid "Writing %(filename)s" msgstr "" #: share/gpodder/extensions/concatenate_videos.py:78 msgid "Videos successfully converted" msgstr "" #: share/gpodder/extensions/concatenate_videos.py:79 #, fuzzy msgid "Error converting videos" msgstr "BХ‚Ф…d podczas konwertowania pliku." #: share/gpodder/extensions/concatenate_videos.py:80 msgid "Concatenation result" msgstr "" #: share/gpodder/extensions/enqueue_in_mediaplayer.py:16 msgid "Enqueue in media players" msgstr "Skolejkuj w odtwarzaczach multimedialnych" #: share/gpodder/extensions/enqueue_in_mediaplayer.py:17 msgid "" "Add a context menu item for enqueueing episodes in installed media players" msgstr "" "Dodaj element menu kontekstowego dla skolejkowanych odcinkУГw w " "zainstalowanych odtwarzaczach multimedialnych" #: share/gpodder/extensions/enqueue_in_mediaplayer.py:35 msgid "Enqueue in" msgstr "Skolejkuj w" #: share/gpodder/extensions/episode_website_context_menu.py:14 msgid "\"Open website\" episode context menu" msgstr "" #: share/gpodder/extensions/episode_website_context_menu.py:15 #, fuzzy msgid "Add a context menu item for opening the website of an episode" msgstr "" "Dodaj element menu kontekstowego dla skolejkowanych odcinkУГw w " "zainstalowanych odtwarzaczach multimedialnych" #: share/gpodder/extensions/episode_website_context_menu.py:30 #, fuzzy msgid "Open website" msgstr "Witryna:" #: share/gpodder/extensions/gtk_statusicon.py:14 msgid "Gtk Status Icon" msgstr "Ikona statusu Gtk" #: share/gpodder/extensions/gtk_statusicon.py:15 msgid "Show a status icon for Gtk-based Desktops." msgstr "PokaХМ ikonФ™ statusu dla pulpitУГw opartych na Gtk" #: share/gpodder/extensions/minimize_on_start.py:10 msgid "Minimize on start" msgstr "Minimalizuj na starcie" #: share/gpodder/extensions/minimize_on_start.py:11 msgid "Minimizes the gPodder window on startup." msgstr "Minimalizuje okno gPoddera na starcie." #: share/gpodder/extensions/mpris-listener.py:33 msgid "MPRIS Listener" msgstr "" #: share/gpodder/extensions/mpris-listener.py:34 msgid "Convert MPRIS notifications to gPodder Media Player D-Bus API" msgstr "" #: share/gpodder/extensions/normalize_audio.py:21 msgid "Normalize audio with re-encoding" msgstr "Znormalizuj dХКwiФ™k ponownie kodujФ…c" #: share/gpodder/extensions/normalize_audio.py:22 msgid "Normalize the volume of audio files with normalize-audio" msgstr "Znormalizuj gХ‚oХ›noХ›Ф‡ plikУГw audio normalizacjФ… audio." #: share/gpodder/extensions/normalize_audio.py:99 msgid "File normalized" msgstr "Plik znormalizowano" #: share/gpodder/extensions/rename_download.py:16 msgid "Rename episodes after download" msgstr "ZmieХ„ nazwy odcinkУГw po pobraniu" #: share/gpodder/extensions/rename_download.py:17 msgid "Rename episodes to \".\" on download" msgstr "ZmieХ„ nazwy odcinkУГw na \".\" przy pobraniu" #: share/gpodder/extensions/rm_ogg_cover.py:37 msgid "Remove cover art from OGG files" msgstr "UsuХ„ okХ‚adki z plikУГw OGG" #: share/gpodder/extensions/rm_ogg_cover.py:38 msgid "removes coverart from all downloaded ogg files" msgstr "Usuwa okХ‚adki z wszystkich pobranych plikУГw ogg" #: share/gpodder/extensions/rm_ogg_cover.py:66 msgid "Remove cover art" msgstr "UsuХ„ okХ‚adkФ™" #: share/gpodder/extensions/rockbox_convert2mp4.py:26 msgid "Convert video files to MP4 for Rockbox" msgstr "Skonwertuj pliki wideo do MP4 dla Rockboksa" #: share/gpodder/extensions/rockbox_convert2mp4.py:27 msgid "Converts all videos to a Rockbox-compatible format" msgstr "Konwertuj wszystkie wideo do formatu Rockbox-kompatybilnego" #: share/gpodder/extensions/sonos.py:19 share/gpodder/extensions/sonos.py:78 msgid "Stream to Sonos" msgstr "" #: share/gpodder/extensions/sonos.py:20 msgid "Stream podcasts to Sonos speakers" msgstr "" #: share/gpodder/extensions/tagging.py:45 msgid "Tag downloaded files using Mutagen" msgstr "Taguj wszystkie pobrane pliki Mutagenem" #: share/gpodder/extensions/tagging.py:46 msgid "Add episode and podcast titles to MP3/OGG tags" msgstr "Dodaj tytuХ‚y odcinkУГw i podcastУГw do tagУГw MP3/OGG" #: share/gpodder/extensions/taskbar_progress.py:28 msgid "Show download progress on the taskbar" msgstr "" #: share/gpodder/extensions/taskbar_progress.py:29 msgid "Displays the progress on the Windows taskbar." msgstr "" #: share/gpodder/extensions/ted_subtitles.py:16 msgid "Subtitle Downloader for TED Talks" msgstr "Pobieracz napisУГw dla TED Talks" #: share/gpodder/extensions/ted_subtitles.py:17 msgid "Downloads .srt subtitles for TED Talks Videos" msgstr "Pobiera napisy w formacie .srt dla nagraХ„ TED Talks" #: share/gpodder/extensions/ubuntu_appindicator.py:10 msgid "Ubuntu App Indicator" msgstr "WskaХКnik Aplikacji Ubuntu" #: share/gpodder/extensions/ubuntu_appindicator.py:11 msgid "Show a status indicator in the top bar." msgstr "PokaХМ wskaХКnik statusu na gУГrnym pasku" #: share/gpodder/extensions/ubuntu_appindicator.py:47 msgid "Show main window" msgstr "PokaХМ gХ‚УГwne okno" #: share/gpodder/extensions/ubuntu_appindicator.py:57 #: share/gpodder/ui/gtk/gpodder.ui.h:6 msgid "Quit" msgstr "ZakoХ„cz" #: share/gpodder/extensions/ubuntu_unity.py:10 msgid "Ubuntu Unity Integration" msgstr "Integracja Ubuntu Unity" #: share/gpodder/extensions/ubuntu_unity.py:11 msgid "Show download progress in the Unity Launcher icon." msgstr "PokaХМ postФ™p pobierania w ikonie Unity Launcher" #: share/gpodder/extensions/update_feeds_on_startup.py:14 msgid "Search for new episodes on startup" msgstr "Szukaj nowych odcinkУГw przy starcie" #: share/gpodder/extensions/update_feeds_on_startup.py:15 msgid "Starts the search for new episodes on startup" msgstr "Rozpoczyna wyszukiwanie nowych odcinkУГw na starcie" #: share/gpodder/extensions/video_converter.py:22 #, fuzzy msgid "Convert video files" msgstr "Konwersja nieudana" #: share/gpodder/extensions/video_converter.py:23 #, fuzzy msgid "Transcode video files to avi/mp4/m4v" msgstr "Przekoduj pliki .ogg na .mp3 uХМywajФ…c ffmpeg" #: share/gpodder/ui/gtk/gpodderaddpodcast.ui.h:1 msgid "Add a new podcast" msgstr "Dodawanie nowego podcastu" #: share/gpodder/ui/gtk/gpodderaddpodcast.ui.h:2 msgid "URL:" msgstr "Adres URL:" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:1 msgid "gPodder Podcast Editor" msgstr "Edytor podcastУГw programu gPodder" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:2 msgid "Section:" msgstr "Sekcja:" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:3 msgid "Disable feed updates (pause subscription)" msgstr "WyХ‚Ф…cz aktualizowanie ХКrУГdeХ‚ (wstrzymuje subskrypcje)" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:4 msgid "Synchronize to MP3 player devices" msgstr "Synchronizuj z urzФ…dzeniami odtwarzajФ…cymi MP3" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:5 msgid "Strategy:" msgstr "Strategia:" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:6 #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:6 msgid "General" msgstr "OgУГlne" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:7 msgid "HTTP/FTP Authentication" msgstr "Uwierzytelnianie HTTP/FTP" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:8 #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:13 msgid "Username:" msgstr "Nazwa uХМytkownika:" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:9 #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:14 msgid "Password:" msgstr "HasХ‚o:" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:10 msgid "Locations" msgstr "PoХ‚oХМenia" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:11 msgid "Download to:" msgstr "Pobieranie do:" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:12 msgid "Website:" msgstr "Witryna:" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:13 msgid "website label" msgstr "etykieta witryny" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:14 msgid "Advanced" msgstr "Zaawansowane" #: share/gpodder/ui/gtk/gpodderconfigeditor.ui.h:1 msgid "gPodder Configuration Editor" msgstr "Edytor konfiguracji programu gPodder" #: share/gpodder/ui/gtk/gpodderconfigeditor.ui.h:2 msgid "Search for:" msgstr "Szukaj:" #: share/gpodder/ui/gtk/gpodderconfigeditor.ui.h:3 msgid "Show All" msgstr "WyХ›wietl wszystkie" #: share/gpodder/ui/gtk/gpodderepisodeselector.ui.h:1 msgid "Select episodes" msgstr "Wybierz odcinki" #: share/gpodder/ui/gtk/gpodderpodcastdirectory.ui.h:1 msgid "Find new podcasts" msgstr "ZnajdХК nowe podcasty" #: share/gpodder/ui/gtk/gpodderpodcastdirectory.ui.h:2 msgid "Select All" msgstr "Zaznacz wszystko" #: share/gpodder/ui/gtk/gpodderpodcastdirectory.ui.h:3 msgid "Select None" msgstr "Odznacz wszystko" #: share/gpodder/ui/gtk/gpodderpodcastdirectory.ui.h:4 msgid "label" msgstr "" #: share/gpodder/ui/gtk/gpodderpodcastdirectory.ui.h:5 msgid "..." msgstr "" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:1 #: share/gpodder/ui/gtk/gpodder.ui.h:5 msgid "Preferences" msgstr "Preferencje" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:2 msgid "Audio player:" msgstr "Odtwarzacz dХКwiФ™ku:" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:3 msgid "Video player:" msgstr "Odtwarzacz wideo:" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:4 msgid "\"All episodes\" in podcast list" msgstr "\"Wszystkie odcinki\" na liХ›cie podcastu" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:5 msgid "Use sections for podcast list" msgstr "UХМyj sekcji dla listy podcastu" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:7 #, fuzzy msgid "Preferred YouTube format:" msgstr "Preferowany format video:" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:8 msgid "YouTube API key (v3):" msgstr "" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:9 #, fuzzy msgid "Preferred Vimeo format:" msgstr "Preferowany format video:" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:11 msgid "Extensions" msgstr "Rozszerzenia" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:12 msgid "Synchronize subscriptions and episode actions" msgstr "Zsynchronizuj dziaХ‚ania na subskrypcjach i odcinkach" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:15 msgid "Replace list on server with local subscriptions" msgstr "ZamieХ„ listФ™ na serwerze uХМywajФ…c lokalnych subskrypcji" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:16 msgid "Device name:" msgstr "Nazwa urzФ…dzenia:" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:17 msgid "gpodder.net" msgstr "gpodder.net" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:18 msgid "Update interval:" msgstr "CzФ™stotliwoХ›Ф‡ aktualizacji:" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:19 msgid "Maximum number of episodes per podcast:" msgstr "Maksymalna liczba odcinkУГw na podcast:" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:20 msgid "When new episodes are found:" msgstr "Gdy nowe odcinki zostanФ… odnalezione:" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:21 msgid "Updating" msgstr "Aktualizowanie" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:22 msgid "Delete played episodes:" msgstr "Usuwanie odtworzonych odcinkУГw:" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:23 msgid "Remove played episodes even if unfinished" msgstr "UsuХ„ odtworzone odcinki nawet jeХ›li niezakoХ„czone" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:24 msgid "Also remove unplayed episodes" msgstr "Usuwanie takХМe nieodtworzonych odcinkУГw" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:25 msgid "Clean-up" msgstr "PorzФ…dkuj" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:26 msgid "Device type:" msgstr "Typ urzФ…dzenia:" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:27 msgid "Mountpoint:" msgstr "Punkt montowania:" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:28 msgid "After syncing an episode:" msgstr "Po synchronizacji odcinka:" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:29 #, fuzzy msgid "Create playlists on device" msgstr "ZastФ…p listФ™ subskrypcji na serwerze" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:30 #, fuzzy msgid "Playlists Folder:" msgstr "Nazwa listy odtwarzania:" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:31 msgid "Remove episodes deleted on device from gPodder" msgstr "" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:32 msgid "Only sync unplayed episodes" msgstr "Synchronizuj tylko nieodtwarzane odcinki" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:33 msgid "Devices" msgstr "UrzФ…dzenia" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:34 msgid "Edit config" msgstr "Zmodyfikuj konfiguracjФ™" #: share/gpodder/ui/gtk/gpodder.ui.h:1 msgid "_Podcasts" msgstr "_Podcasty" #: share/gpodder/ui/gtk/gpodder.ui.h:2 msgid "Check for new episodes" msgstr "SprawdХК dostФ™pnoХ›Ф‡ nowych" #: share/gpodder/ui/gtk/gpodder.ui.h:3 msgid "Download new episodes" msgstr "Pobierz nowe odcinki" #: share/gpodder/ui/gtk/gpodder.ui.h:7 msgid "_Subscriptions" msgstr "_Subskrypcje" #: share/gpodder/ui/gtk/gpodder.ui.h:8 msgid "Discover new podcasts" msgstr "ZnajdХК nowe podcasty" #: share/gpodder/ui/gtk/gpodder.ui.h:9 msgid "Add podcast via URL" msgstr "Dodaj podcast przez adres URL" #: share/gpodder/ui/gtk/gpodder.ui.h:11 msgid "Unsubscribe" msgstr "UsuХ„ subskrypcjФ™" #: share/gpodder/ui/gtk/gpodder.ui.h:14 msgid "Import from OPML file" msgstr "Zaimportuj z pliku OPML" #: share/gpodder/ui/gtk/gpodder.ui.h:15 msgid "Export to OPML file" msgstr "Wyeksportuj do pliku OPML" #: share/gpodder/ui/gtk/gpodder.ui.h:16 msgid "Go to gpodder.net" msgstr "PrzejdХК do gpodder.net" #: share/gpodder/ui/gtk/gpodder.ui.h:17 msgid "_Episodes" msgstr "_Odcinki" #: share/gpodder/ui/gtk/gpodder.ui.h:18 msgid "Play" msgstr "OdtwУГrz" #: share/gpodder/ui/gtk/gpodder.ui.h:19 msgid "Open" msgstr "OtwУГrz" #: share/gpodder/ui/gtk/gpodder.ui.h:22 msgid "Delete" msgstr "UsuХ„" #: share/gpodder/ui/gtk/gpodder.ui.h:23 msgid "Toggle new status" msgstr "PrzeХ‚Ф…cz nowy status" #: share/gpodder/ui/gtk/gpodder.ui.h:24 msgid "Change delete lock" msgstr "ZmieХ„ blokadФ™ usuwania" #: share/gpodder/ui/gtk/gpodder.ui.h:26 msgid "E_xtras" msgstr "D_odatki" #: share/gpodder/ui/gtk/gpodder.ui.h:27 msgid "Sync to device" msgstr "Synchronizuj z urzФ…dzeniem" #: share/gpodder/ui/gtk/gpodder.ui.h:28 #, fuzzy msgid "Update YouTube subscriptions" msgstr "Brak subskrypcji" #: share/gpodder/ui/gtk/gpodder.ui.h:29 msgid "_View" msgstr "_Widok" #: share/gpodder/ui/gtk/gpodder.ui.h:30 msgid "Toolbar" msgstr "Pasek narzФ™dzi" #: share/gpodder/ui/gtk/gpodder.ui.h:31 msgid "Episode descriptions" msgstr "Opisy odcinkУГw" #: share/gpodder/ui/gtk/gpodder.ui.h:33 msgid "Hide deleted episodes" msgstr "Ukrywanie usuniФ™tych odcinkУГw" #: share/gpodder/ui/gtk/gpodder.ui.h:34 msgid "Downloaded episodes" msgstr "Pobrane odcinki" #: share/gpodder/ui/gtk/gpodder.ui.h:35 msgid "Unplayed episodes" msgstr "Nieodtworzone odcinki" #: share/gpodder/ui/gtk/gpodder.ui.h:36 msgid "Hide podcasts without episodes" msgstr "Ukrywanie podcastУГw bez odcinkУГw" #: share/gpodder/ui/gtk/gpodder.ui.h:37 msgid "_Help" msgstr "Pomo_c" #: share/gpodder/ui/gtk/gpodder.ui.h:38 msgid "User manual" msgstr "Instr. uХМytk." #: share/gpodder/ui/gtk/gpodder.ui.h:39 msgid "Software updates" msgstr "Aktualizacje oprogramowania" #: share/gpodder/ui/gtk/gpodder.ui.h:40 msgid "Filter:" msgstr "Filtr:" #: share/gpodder/ui/gtk/gpodder.ui.h:41 msgid "Podcasts" msgstr "Podcasty" #: share/gpodder/ui/gtk/gpodder.ui.h:42 msgid "Limit rate to" msgstr "Ograniczenie prФ™dkoХ›ci do" #: share/gpodder/ui/gtk/gpodder.ui.h:43 msgid "KiB/s" msgstr "KiB/s" #: share/gpodder/ui/gtk/gpodder.ui.h:44 msgid "Limit downloads to" msgstr "Ograniczenie liczby pobraХ„ do" #: share/gpodder/ui/gtk/gpodderwelcome.ui.h:2 msgid "Welcome to gPodder" msgstr "Witaj w gPodderze" #: share/gpodder/ui/gtk/gpodderwelcome.ui.h:3 msgid "Your podcast list is empty." msgstr "Twoja lista podcastУГw jest pusta." #: share/gpodder/ui/gtk/gpodderwelcome.ui.h:4 msgid "Choose from a list of example podcasts" msgstr "Wybierz z listy przykХ‚adowych podcastУГw" #: share/gpodder/ui/gtk/gpodderwelcome.ui.h:5 msgid "Add a podcast by entering its URL" msgstr "Dodaj podcast wprowadzajФ…c jego URL" #: share/gpodder/ui/gtk/gpodderwelcome.ui.h:6 msgid "Restore my subscriptions from gpodder.net" msgstr "Wczytaj moje subskrypcje z gpodder.net" #: bin/gpo:266 msgid "Podcast update requested by extensions." msgstr "Aktualizacja podcastu ХМФ…dana przez rozszerzenia" #: bin/gpo:270 msgid "Episode download requested by extensions." msgstr "Pobranie odcinku ХМФ…dane przez rozszerzenia." #: bin/gpo:323 #, python-format msgid "Invalid url: %s" msgstr "NieprawidХ‚owy url: %s" #: bin/gpo:340 bin/gpo:416 bin/gpo:450 bin/gpo:582 bin/gpo:597 bin/gpo:717 #, python-format msgid "You are not subscribed to %s." msgstr "Nie subskrybujesz %s." #: bin/gpo:346 #, fuzzy, python-format msgid "Already subscribed to %s." msgstr "Nie moХМna subskrybowaФ‡ siФ™ do %s" #: bin/gpo:352 #, python-format msgid "Cannot subscribe to %s." msgstr "Nie moХМna subskrybowaФ‡ siФ™ do %s" #: bin/gpo:368 #, python-format msgid "Successfully added %s." msgstr "%s pomyХ›lnie dodany." #: bin/gpo:386 msgid "This configuration option does not exist." msgstr "Ta opcja konfiguracyjna nie istnieje." #: bin/gpo:390 msgid "Can only set leaf configuration nodes." msgstr "MoХМna ustawiФ‡ tylko wФ™zХ‚y konfiguracyjne liХ›ci." #: bin/gpo:404 #, python-format msgid "Renamed %(old_title)s to %(new_title)s." msgstr "Zmieniono nazwФ™ %(old_title)s na %(new_title)s." #: bin/gpo:420 #, python-format msgid "Unsubscribed from %s." msgstr "Odsubskrybowano %s" #: bin/gpo:494 msgid "Updates disabled" msgstr "Aktualizacje zablokowane" #: bin/gpo:505 #, python-format msgid "%(count)d new episode" msgid_plural "%(count)d new episodes" msgstr[0] "%(count)d nowy odcinek" msgstr[1] "%(count)d nowe odcinki" msgstr[2] "%(count)d nowych odcinkУГw" #: bin/gpo:511 msgid "Checking for new episodes" msgstr "Sprawdzanie za nowymi odcinkami" #: bin/gpo:520 #, python-format msgid "Skipping %(podcast)s" msgstr "PominiФ™cie %(podcast)s" #: bin/gpo:588 #, python-format msgid "Disabling feed update from %s." msgstr "Zablokuj aktualizacjФ™ kanaХ‚u z %s." #: bin/gpo:603 #, python-format msgid "Enabling feed update from %s." msgstr "WХ‚Ф…cz aktualizacjФ™ kanaХ‚u z %s." #: bin/gpo:616 #, python-format msgid "Please register a YouTube API key and set it using %(command)s." msgstr "" #: bin/gpo:643 #, fuzzy, python-format msgid "Changing: %(old_url)s => %(new_url)s" msgstr "Zmieniono URL z %(old_url)s na %(new_url)s." #: bin/gpo:653 #, fuzzy msgid "Nothing to fix" msgstr "Brak elementУГw do wyeksportowania" #: bin/gpo:672 msgid "No podcasts found." msgstr "Nie znaleziono podcastУГw." #: bin/gpo:686 msgid "Enter index to subscribe, ? for list" msgstr "WprowadХК index by subskrybowaФ‡, ? dla listy" #: bin/gpo:700 bin/gpo:704 msgid "Invalid value." msgstr "NieprawidХ‚owa wartoХ›Ф‡" #: bin/gpo:721 #, python-format msgid "Invalid URL: %s" msgstr "NieprawidХ‚owy URL: %s" #: bin/gpo:724 #, python-format msgid "Changed URL from %(old_url)s to %(new_url)s." msgstr "Zmieniono URL z %(old_url)s na %(new_url)s." #: bin/gpo:782 #, python-format msgid "Syntax error: %(error)s" msgstr "BХ‚Ф…d skХ‚adni: %(error)s" #: bin/gpo:876 msgid "Ambiguous command. Did you mean.." msgstr "" #: bin/gpo:880 msgid "The requested function is not available." msgstr "ХЛФ…dana funkcja nie jest dostФ™pna." #: bin/gpodder:105 msgid "print logging output on the console" msgstr "wypisz wyjХ›cie logowania na konsolФ™" #: bin/gpodder:108 msgid "subscribe to the feed at URL" msgstr "subskrybuj siФ™ do kanaХ‚u pod URLem" #: bin/gpodder:113 msgid "Mac OS X application process number" msgstr "Numer procesu aplikacji Mac OS X" #: share/applications/gpodder.desktop.in.h:2 msgid "gPodder Podcast Client" msgstr "Klient PodcastУГw gPodder" #: share/applications/gpodder.desktop.in.h:3 msgid "Podcast Client" msgstr "Klient PodcastУГw" #: share/applications/gpodder.desktop.in.h:4 msgid "Subscribe to audio and video content from the web" msgstr "Subskrybuj siФ™ do treХ›ci audio i wideo z sieci" #: share/applications/gpodder-url-handler.desktop.in.h:1 #, fuzzy msgid "gPodder (subscribe to feed)" msgstr "subskrybuj siФ™ do kanaХ‚u pod URLem" gpodder-3.9.0/po/he.po0000644000016000001710000017225612654461625015663 0ustar jenkinsjenkins00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # # Translators: # Amiad Bareli , 2010, 2011, 2012. # , 2011, 2012. # , 2011, 2012. msgid "" msgstr "" "Project-Id-Version: gPodder\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2016-02-03 20:31+0000\n" "PO-Revision-Date: 2013-01-19 12:30+0000\n" "Last-Translator: Thomas Perl \n" "Language-Team: Hebrew (http://www.transifex.com/projects/p/gpodder/language/" "he/)\n" "Language: he\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" #: src/gpodder/config.py:55 #, python-format msgid "gPodder on %s" msgstr "gPodder зЂзœ %s" #: src/gpodder/directory.py:95 #, fuzzy msgid "gpodder.net search" msgstr "gpodder.net" #: src/gpodder/directory.py:104 #, fuzzy msgid "OPML from web" msgstr "зЇз•з‘зІз™ OPML" #: src/gpodder/directory.py:113 #, fuzzy msgid "OPML file" msgstr "зЇз•з‘зІз™ OPML" #: src/gpodder/directory.py:122 share/gpodder/ui/gtk/gpodderwelcome.ui.h:1 msgid "Getting started" msgstr "зЊз—з™зœзЊ з”зЂз‘з•з“з”" #: src/gpodder/directory.py:131 #, fuzzy msgid "gpodder.net Top 50" msgstr "gpodder.net" #: src/gpodder/directory.py:140 #, fuzzy msgid "gpodder.net Tags" msgstr "gpodder.net" #: src/gpodder/directory.py:152 #, fuzzy msgid "Soundcloud search" msgstr "%s з‘жОSoundcloud" #: src/gpodder/directory.py:165 #, fuzzy msgid "Imported OPML file" msgstr "з™з™з‘з зžзЇз•з‘зЅ OPML" #: src/gpodder/download.py:329 msgid "Wrong username/password" msgstr "зЉз зžзЉзЊзžзЉ/зЁзЁзžз” зЉз’з•з™з™з" #: src/gpodder/download.py:527 src/gpodder/sync.py:924 msgid "Added" msgstr "з з•зЁзЃ" #: src/gpodder/download.py:527 src/gpodder/sync.py:924 msgid "Queued" msgstr "зžзžзЊз™зŸ" #: src/gpodder/download.py:527 src/gpodder/gtkui/model.py:327 msgid "Downloading" msgstr "зžз•зЈз™з“" #: src/gpodder/download.py:528 src/gpodder/model.py:721 #: src/gpodder/sync.py:925 msgid "Finished" msgstr "з”зЁзЊз™з™з" #: src/gpodder/download.py:528 src/gpodder/sync.py:925 msgid "Failed" msgstr "з з›зЉзœ" #: src/gpodder/download.py:528 src/gpodder/sync.py:925 msgid "Cancelled" msgstr "з‘з•з˜зœ" #: src/gpodder/download.py:528 src/gpodder/sync.py:925 msgid "Paused" msgstr "з”з•зЉз”з”" #: src/gpodder/download.py:862 msgid "Missing content from server" msgstr "з—зЁзЈ зЊз•з›зŸ зžз”зЉзЈзЊ" #: src/gpodder/download.py:868 #, python-format msgid "I/O Error: %(error)s: %(filename)s" msgstr "зЉз’з™ззЊ I/O: %(error)s: %(filename)sт€Ž" #: src/gpodder/download.py:875 #, python-format msgid "HTTP Error %(code)s: %(message)s" msgstr "зЉз’з™ззЊ HTTP %(code)s: %(message)sт€Ž" #: src/gpodder/download.py:879 src/gpodder/sync.py:1081 #, python-format msgid "Error: %s" msgstr "зЉз’з™зз”: %s" #: src/gpodder/extensions.py:55 #, fuzzy msgid "Desktop Integration" msgstr "зЉз™зœз•з‘ зЂз зžзžзЉзЇ Unity зЉзœ зз•з‘з•з з˜з•" #: src/gpodder/extensions.py:56 #, fuzzy msgid "Interface" msgstr "Integer" #: src/gpodder/extensions.py:57 #, fuzzy msgid "Post download" msgstr "з”зЉз”з” з”з•зЈз“з”" #: src/gpodder/extensions.py:59 src/gpodder/model.py:779 #: src/gpodder/model.py:1225 msgid "Other" msgstr "зз—зЈ" #: src/gpodder/extensions.py:100 msgid "No description for this extension." msgstr "зз™зŸ зЊз™зз•зЈз™з з–зžз™з з™з зœз”зЈз—з‘з” з–з•." #: src/gpodder/extensions.py:212 #, python-format msgid "Command not found: %(command)s" msgstr "з”зЄзЇз•з“з” зœз з зžзІзз”: %(command)s" #: src/gpodder/extensions.py:228 #, python-format msgid "Need at least one of the following commands: %(list_of_commands)s" msgstr "" #: src/gpodder/extensions.py:265 #, python-format msgid "Python module not found: %(module)s" msgstr "зžз•з“з•зœ зЄз™з™зЊз•зŸ зœз з зžзІз: %(module)s" #: src/gpodder/model.py:446 src/gpodder/plugins/soundcloud.py:156 msgid "No description available" msgstr "зз™зŸ зЊз™зз•зЈ з–зžз™зŸ" #: src/gpodder/model.py:679 msgid "unknown" msgstr "зœз з™з“з•зЂ" #: src/gpodder/model.py:746 msgid "Default" msgstr "" #: src/gpodder/model.py:747 msgid "Only keep latest" msgstr "" #: src/gpodder/model.py:1208 src/gpodder/model.py:1223 #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:10 msgid "Video" msgstr "з•з™з“зз•" #: src/gpodder/model.py:1221 msgid "Audio" msgstr "зЉзžзЂ" #: src/gpodder/my.py:174 #, python-format msgid "Add %s" msgstr "з”з•зЁзЃ ззЊ %s" #: src/gpodder/my.py:176 #, python-format msgid "Remove %s" msgstr "з”зЁзЈ ззЊ %s" #: src/gpodder/sync.py:196 msgid "Cancelled by user" msgstr "з‘з•з˜зœ з‘з™з“з™ зžзЉзЊзžзЉ" #: src/gpodder/sync.py:199 msgid "Writing data to disk" msgstr "з›з•зЊз‘ зžз™з“зЂ зœз›з•з зŸ" #: src/gpodder/sync.py:295 msgid "Opening iPod database" msgstr "зЄз•зЊз— з‘зЁз™зЁ з зЊз•з з™з зЉзœ iPod" #: src/gpodder/sync.py:305 msgid "iPod opened" msgstr "iPod з зЄзЊз—" #: src/gpodder/sync.py:316 msgid "Saving iPod database" msgstr "зЉз•зžзЈ з‘зЁз™зЁ з зЊз•з з™з зЉзœ iPod" #: src/gpodder/sync.py:321 msgid "Writing extended gtkpod database" msgstr "з›з•зЊз‘ зœз‘зЁз™зЁ з зЊз•з з™з зžз•зЈз—з‘ зЉзœ gtkpod" #: src/gpodder/sync.py:397 src/gpodder/sync.py:680 src/gpodder/sync.py:874 #, python-format msgid "Removing %s" msgstr "зžзЁз™зЈ ззЊ %s" #: src/gpodder/sync.py:412 src/gpodder/sync.py:557 #, python-format msgid "Adding %s" msgstr "зžз•зЁз™зЃ %s" #: src/gpodder/sync.py:430 #, python-format msgid "Error copying %(episode)s: Not enough free space on %(mountpoint)s" msgstr "зЉз’з™зз” з‘з”зЂзЊзЇзЊ %(episode)s: зз™зŸ з“з™ зžзЇз•з зЄз з•з™ з‘жО%(mountpoint)s" #: src/gpodder/sync.py:515 msgid "Opening MP3 player" msgstr "зЄз•зЊз— з з’зŸ MP3" #: src/gpodder/sync.py:518 msgid "MP3 player opened" msgstr "з з’зŸ MP3 з зЄзЊз—" #: src/gpodder/sync.py:576 #, python-format msgid "" "Not enough space in %(path)s: %(free)s available, but need at least %(need)s" msgstr "" #: src/gpodder/sync.py:603 src/gpodder/sync.py:611 #, python-format msgid "Error opening %(filename)s: %(message)s" msgstr "зЉз’з™зз” з‘зЄзЊз™з—зЊ %(filename)s: %(message)s" #: src/gpodder/sync.py:780 src/gpodder/sync.py:786 msgid "MTP device" msgstr "з”зЊзЇзŸ MTP" #: src/gpodder/sync.py:793 msgid "Opening the MTP device" msgstr "зЄз•зЊз— з”зЊзЇзŸ MTP" #: src/gpodder/sync.py:803 #, python-format msgid "%s opened" msgstr "%s з зЄзЊз—" #: src/gpodder/sync.py:808 #, python-format msgid "Closing %s" msgstr "зЁз•з’зЈ ззЊ %s" #: src/gpodder/sync.py:816 #, python-format msgid "%s closed" msgstr "%s з зЁз’зЈ" #: src/gpodder/sync.py:821 bin/gpo:708 #, python-format msgid "Adding %s..." msgstr "зžз•зЁз™зЃ ззЊ %s..." #: src/gpodder/sync.py:924 msgid "Synchronizing" msgstr "зžзЁз з›зЈзŸ" #: src/gpodder/util.py:429 #, python-format msgid "%(count)d day ago" msgid_plural "%(count)d days ago" msgstr[0] "зœзЄз з™ з™з•з" msgstr[1] "зœзЄз з™ %(count)d з™зžз™з" #: src/gpodder/util.py:508 msgid "Today" msgstr "з”з™з•з" #: src/gpodder/util.py:510 msgid "Yesterday" msgstr "ззЊзžз•зœ" #: src/gpodder/util.py:553 src/gpodder/util.py:556 msgid "(unknown)" msgstr "(зœз з™з“з•зЂ)" #: src/gpodder/util.py:1193 src/gpodder/util.py:1212 #, python-format msgid "%(count)d second" msgid_plural "%(count)d seconds" msgstr[0] "зЉз з™з™з” зз—зЊ" msgstr[1] "%(count)d зЉз з™з•зЊ" #: src/gpodder/util.py:1206 #, python-format msgid "%(count)d hour" msgid_plural "%(count)d hours" msgstr[0] "зЉзЂз” зз—зЊ" msgstr[1] "%(count)d зЉзЂз•зЊ" #: src/gpodder/util.py:1209 #, python-format msgid "%(count)d minute" msgid_plural "%(count)d minutes" msgstr[0] "з“зЇз” зз—зЊ" msgstr[1] "%(count)d з“зЇз•зЊ" #: src/gpodder/util.py:1215 msgid "and" msgstr "з•з’з" #: src/gpodder/gtkui/config.py:50 msgid "Integer" msgstr "Integer" #: src/gpodder/gtkui/config.py:52 msgid "Float" msgstr "Float" #: src/gpodder/gtkui/config.py:54 msgid "Boolean" msgstr "Boolean" #: src/gpodder/gtkui/config.py:56 msgid "String" msgstr "String" #: src/gpodder/gtkui/desktopfile.py:70 #, python-format msgid "Command: %s" msgstr "зЄзЇз•з“з”: %s" #: src/gpodder/gtkui/desktopfile.py:150 msgid "Default application" msgstr "з™з™зЉз•з з‘зЈз™зЈзЊ зžз—з“зœ" #: src/gpodder/gtkui/main.py:205 share/applications/gpodder.desktop.in.h:1 msgid "gPodder" msgstr "gPodder" #: src/gpodder/gtkui/main.py:288 msgid "Loading incomplete downloads" msgstr "з˜з•зЂзŸ з”з•зЈз“з•зЊ зЉзœз з”з•зЉзœзžз•" #: src/gpodder/gtkui/main.py:289 msgid "Some episodes have not finished downloading in a previous session." msgstr "з”з•зЈз“зЊ зžзЁзЄзЈ зЄзЈзЇз™з зœз з”зЁзЊз™з™зžз” з‘з”зЄзЂзœз” з”зЇз•з“зžзЊ." #: src/gpodder/gtkui/main.py:291 #, python-format msgid "%(count)d partial file" msgid_plural "%(count)d partial files" msgstr[0] "зЇз•з‘зЅ з—зœзЇз™ зз—з“" msgstr[1] "%(count)d зЇз‘зІз™з з—зœзЇз™з™з" #: src/gpodder/gtkui/main.py:306 msgid "Resume all" msgstr "з”зЊз—зœ зžз—з“зЉ з”з›зœ" #: src/gpodder/gtkui/main.py:316 msgid "Incomplete downloads from a previous session were found." msgstr "з зžзІзз• з”з•зЈз“з•зЊ зžз”з”зЄзЂзœз” з”зЇз•з“зžзЊ зЉзœз з”з•зЉзœзžз•." #: src/gpodder/gtkui/main.py:414 msgid "Action" msgstr "зЄзЂз•зœз”" #: src/gpodder/gtkui/main.py:461 msgid "Confirm changes from gpodder.net" msgstr "ззЉзЈ зЉз™з з•з™з™з зžжОgpodder.net" #: src/gpodder/gtkui/main.py:462 msgid "Select the actions you want to carry out." msgstr "з‘з—зЈ ззЊ з”зЄзЂз•зœз•зЊ зЉз‘зЈзІз•з зš зœз‘зІзЂ." #: src/gpodder/gtkui/main.py:502 msgid "Uploading subscriptions" msgstr "зžзЂзœз” з”зЈзЉзžз•зЊ" #: src/gpodder/gtkui/main.py:503 msgid "Your subscriptions are being uploaded to the server." msgstr "з”з”зЈзЉзžз•зЊ зЉзœзš з”з•зЂзœз• зœзЉзЈзЊ." #: src/gpodder/gtkui/main.py:508 msgid "List uploaded successfully." msgstr "зЈзЉз™зžз” з”з•зЂзœзЊз” з‘з”зІзœз—з”." #: src/gpodder/gtkui/main.py:515 msgid "Error while uploading" msgstr "з”зЊзЈз—зЉз” зЉз’з™зз” з‘з”зЂзœзз”" #: src/gpodder/gtkui/main.py:800 src/gpodder/gtkui/main.py:928 #: src/gpodder/gtkui/main.py:2622 src/gpodder/gtkui/main.py:2815 #: src/gpodder/gtkui/desktop/episodeselector.py:132 #: src/gpodder/gtkui/desktop/sync.py:270 msgid "Episode" msgstr "зЄзЈзЇ" #: src/gpodder/gtkui/main.py:819 msgid "Size" msgstr "з’з•з“зœ" #: src/gpodder/gtkui/main.py:824 msgid "Duration" msgstr "зžзЉзš" #: src/gpodder/gtkui/main.py:828 msgid "Released" msgstr "зЄз•зЈзЁз" #: src/gpodder/gtkui/main.py:855 msgid "Visible columns" msgstr "зЂзžз•з“з•зЊ зžз•зІз’з•зЊ" #: src/gpodder/gtkui/main.py:948 src/gpodder/gtkui/main.py:1108 #: share/gpodder/ui/gtk/gpodder.ui.h:45 msgid "Progress" msgstr "з”зЊзЇз“зžз•зЊ" #: src/gpodder/gtkui/main.py:982 msgid "Loading episodes" msgstr "з˜з•зЂзŸ зЄзЈзЇз™з" #: src/gpodder/gtkui/main.py:985 msgid "No episodes in current view" msgstr "зз™зŸ зЄзЈзЇз™з з‘зЊзІз•з’з” з–з•" #: src/gpodder/gtkui/main.py:987 msgid "No episodes available" msgstr "зз™зŸ зЄзЈзЇз™з з–зžз™з з™з" #: src/gpodder/gtkui/main.py:993 msgid "No podcasts in this view" msgstr "зз™зŸ зЄз•з“зЇзЁз˜з™з з‘зЊзІз•з’з” з–з•" #: src/gpodder/gtkui/main.py:995 msgid "No subscriptions" msgstr "зз™зŸ з”зЈзЉзžз•зЊ" #: src/gpodder/gtkui/main.py:997 msgid "No active tasks" msgstr "зз™зŸ зžзЉз™зžз•зЊ зЄзЂз™зœз•зЊ" #: src/gpodder/gtkui/main.py:1112 src/gpodder/gtkui/main.py:1114 #, python-format msgid "%(count)d active" msgid_plural "%(count)d active" msgstr[0] "зз—зЊ зЄзЂз™зœз”" msgstr[1] "%(count)d зЄзЂз™зœз•зЊ" #: src/gpodder/gtkui/main.py:1116 #, python-format msgid "%(count)d failed" msgid_plural "%(count)d failed" msgstr[0] "зз—зЊ з з›зЉзœз”" msgstr[1] "%(count)d з з›зЉзœз•" #: src/gpodder/gtkui/main.py:1118 #, python-format msgid "%(count)d queued" msgid_plural "%(count)d queued" msgstr[0] "зз—зЊ зžзžзЊз™з з”" msgstr[1] "%(count)d зžзžзЊз™з з•зЊ" #: src/gpodder/gtkui/main.py:1132 #, python-format msgid "downloading %(count)d file" msgid_plural "downloading %(count)d files" msgstr[0] "зžз•зЈз™з“ зЇз•з‘зЅ зз—з“" msgstr[1] "зžз•зЈз™з“ %(count)d зЇз‘зІз™з" #: src/gpodder/gtkui/main.py:1142 #, python-format msgid "synchronizing %(count)d file" msgid_plural "synchronizing %(count)d files" msgstr[0] "зžзЁз з›зЈзŸ зЇз•з‘зЅ зз—з“" msgstr[1] "зžзЁз з›зЈзŸ %(count)d зЇз‘зІз™з" #: src/gpodder/gtkui/main.py:1144 #, python-format msgid "%(queued)d task queued" msgid_plural "%(queued)d tasks queued" msgstr[0] "зžзЉз™зžз” зз—зЊ зžзžзЊз™з з”" msgstr[1] "%(queued)d зžзЉз™зžз•зЊ зžзžзЊз™з з•зЊ" #: src/gpodder/gtkui/main.py:1168 msgid "Please report this problem and restart gPodder:" msgstr "з“з•з•з— зЂзœ з”з‘зЂз™з” з”з–з• з•ззЊз—зœ ззЊ gPodder:" #: src/gpodder/gtkui/main.py:1168 msgid "Unhandled exception" msgstr "Unhandled exception" #: src/gpodder/gtkui/main.py:1235 #, python-format msgid "Feedparser error: %s" msgstr "зЉз’з™ззЊ зЊз—з‘з™зЈ з”з–з з”: %s" #: src/gpodder/gtkui/main.py:1371 msgid "Could not download some episodes:" msgstr "зœз з з™зЊзŸ зœз”з•зЈз™з“ з›зžз” зЄзЈзЇз™з:" #: src/gpodder/gtkui/main.py:1373 src/gpodder/gtkui/main.py:1376 msgid "Downloads finished" msgstr "з”з”з•зЈз“з•зЊ з”зЁзЊз™з™зžз•" #: src/gpodder/gtkui/main.py:1379 msgid "Downloads failed" msgstr "з”з•зЈз“з•зЊ з з›зЉзœз•" #: src/gpodder/gtkui/main.py:1383 msgid "Could not sync some episodes:" msgstr "зœз з з™зЊзŸ зœзЁз з›зЈзŸ з›зžз” зЄзЈзЇз™з:" #: src/gpodder/gtkui/main.py:1385 src/gpodder/gtkui/main.py:1388 msgid "Device synchronization finished" msgstr "зЁз з›зЈз•зŸ з”з”зЊзЇзŸ з”зЁзЊз™з™з" #: src/gpodder/gtkui/main.py:1391 msgid "Device synchronization failed" msgstr "зЁз з›зЈз•зŸ з”з”зЊзЇзŸ з з›зЉзœ" #: src/gpodder/gtkui/main.py:1434 #, python-format msgid "%(count)d more episode" msgid_plural "%(count)d more episodes" msgstr[0] "зз—з“ зЂз•з“ зЄзЈзЇ" msgstr[1] "зЂз•з“ %(count)d зЄзЈзЇз™з" #: src/gpodder/gtkui/main.py:1508 msgid "Start download now" msgstr "з”зЊз—зœ з”з•зЈз“з” зЂз›зЉз™з•" #: src/gpodder/gtkui/main.py:1510 src/gpodder/gtkui/main.py:1719 #: src/gpodder/gtkui/desktop/episodeselector.py:144 #: share/gpodder/ui/gtk/gpodder.ui.h:20 msgid "Download" msgstr "з”з•зЈз“" #: src/gpodder/gtkui/main.py:1511 share/gpodder/ui/gtk/gpodder.ui.h:21 msgid "Cancel" msgstr "з‘з˜зœ" #: src/gpodder/gtkui/main.py:1512 msgid "Pause" msgstr "з”зЉз”з”" #: src/gpodder/gtkui/main.py:1514 msgid "Remove from list" msgstr "з”зЁзЈ зžз”зЈзЉз™зžз”" #: src/gpodder/gtkui/main.py:1553 share/gpodder/ui/gtk/gpodder.ui.h:13 msgid "Update podcast" msgstr "зЂз“з›зŸ зЄз•з“зЇзЁз˜" #: src/gpodder/gtkui/main.py:1560 msgid "Open download folder" msgstr "зЄзЊз— зЊз™зЇз™з™зЊ з”з•зЈз“з”" #: src/gpodder/gtkui/main.py:1566 msgid "Mark episodes as old" msgstr "зЁзžзŸ зЄзЈзЇз™з з›з™зЉз з™з" #: src/gpodder/gtkui/main.py:1570 src/gpodder/gtkui/main.py:1778 msgid "Archive" msgstr "ззЈз›з™з•зŸ" #: src/gpodder/gtkui/main.py:1575 msgid "Remove podcast" msgstr "з”зЁзЈ зЄз•з“зЇзЁз˜" #: src/gpodder/gtkui/main.py:1590 share/gpodder/ui/gtk/gpodder.ui.h:10 msgid "Podcast settings" msgstr "з”з’з“зЈз•зЊ зЄз•з“зЇзЁз˜" #: src/gpodder/gtkui/main.py:1650 msgid "Error converting file." msgstr "зЉз’з™зз” з‘з”зžзЈзЊ зЇз•з‘зЅ." #: src/gpodder/gtkui/main.py:1650 msgid "Bluetooth file transfer" msgstr "з”зЂз‘зЈзЊ зЇз‘зІз™з з“зЈзš з‘зœз•з˜з•зЊзГ" #: src/gpodder/gtkui/main.py:1709 msgid "Preview" msgstr "зЊзІз•з’з” зžзЇз“з™зžз”" #: src/gpodder/gtkui/main.py:1711 msgid "Stream" msgstr "з”з–зЈз" #: src/gpodder/gtkui/main.py:1755 msgid "Send to" msgstr "зЉзœз— ззœ" #: src/gpodder/gtkui/main.py:1757 msgid "Local folder" msgstr "зЊз™зЇз™з” зžзЇз•зžз™зЊ" #: src/gpodder/gtkui/main.py:1762 msgid "Bluetooth device" msgstr "з”зЊзЇзŸ з‘зœз•з˜з•зЊзГ" #: src/gpodder/gtkui/main.py:1769 msgid "New" msgstr "з—з“зЉ" #: src/gpodder/gtkui/main.py:1785 share/gpodder/ui/gtk/gpodder.ui.h:25 msgid "Episode details" msgstr "зЄзЈз˜з™ з”зЄзЈзЇ" #: src/gpodder/gtkui/main.py:1938 msgid "Please check your media player settings in the preferences dialog." msgstr "зз з з‘з“з•зЇ ззЊ з”з’з“зЈз•зЊ з з’зŸ з”зžз“з™з” зЉзœзš з‘з—зœз•зŸ з”зžззЄз™з™з з™з." #: src/gpodder/gtkui/main.py:1939 msgid "Error opening player" msgstr "зЉз’з™зз” з‘зЄзЊз™з—зЊ з з’зŸ" #: src/gpodder/gtkui/main.py:2178 msgid "Adding podcasts" msgstr "зžз•зЁз™зЃ зЄз•з“зЇзЁз˜з™з" #: src/gpodder/gtkui/main.py:2179 msgid "Please wait while episode information is downloaded." msgstr "зз з з”зžзЊзŸ зЂз“ зЉзžз™з“зЂ з”зЄзЈзЇ з™зЈз“." #: src/gpodder/gtkui/main.py:2186 msgid "Existing subscriptions skipped" msgstr "з”зЈзЉзžз•зЊ зЇз™з™зžз•зЊ з“з•зœз’з•" #: src/gpodder/gtkui/main.py:2187 msgid "You are already subscribed to these podcasts:" msgstr "ззЊз” з›з‘зЈ зЈзЉз•з зœзЄз•з“зЇзЁз˜з™з з”ззœз”:" #: src/gpodder/gtkui/main.py:2195 msgid "Podcast requires authentication" msgstr "з”зЄз•з“зЇзЁз˜ з“з•зЈзЉ зз™зžз•зЊ" #: src/gpodder/gtkui/main.py:2196 #, python-format msgid "Please login to %s:" msgstr "з‘з‘зЇзЉз” з”зЊз—з‘зЈ ззœ %s:" #: src/gpodder/gtkui/main.py:2204 src/gpodder/gtkui/main.py:2299 msgid "Authentication failed" msgstr "зз™зžз•зЊ з з›зЉзœ" #: src/gpodder/gtkui/main.py:2210 msgid "Website redirection detected" msgstr "з”зЊз’зœз” з з™зЊз•з‘ зžз—з“зЉ зœззЊзЈ" #: src/gpodder/gtkui/main.py:2211 #, python-format msgid "The URL %(url)s redirects to %(target)s." msgstr "з”з›зЊз•з‘зЊ %(url)s зžзЄз з” зžз—з“зЉ ззœ %(target)s." #: src/gpodder/gtkui/main.py:2212 msgid "Do you want to visit the website now?" msgstr "ззЊз” зЈз•зІз” зœз‘зЇзЈ з‘ззЊзЈ зЂз›зЉз™з•?" #: src/gpodder/gtkui/main.py:2221 msgid "Could not add some podcasts" msgstr "зœз з™з›з•зœ зœз”з•зЁз™зЃ зžзЁзЄзЈ зЄз•з“зЇзЁз˜з™з" #: src/gpodder/gtkui/main.py:2222 msgid "Some podcasts could not be added to your list:" msgstr "з›зžз” зЄз•з“зЇзЁз˜з™з зœз з™з›з•зœз™з зœз”зЊз•з•зЁзЃ зœзЈзЉз™зžз” зЉзœзš:" #: src/gpodder/gtkui/main.py:2224 msgid "Unknown" msgstr "зœз з™з“з•зЂ" #: src/gpodder/gtkui/main.py:2308 msgid "Redirection detected" msgstr "з”зЊз’зœз” з з™зЊз•з‘ зžз—з“зЉ" #: src/gpodder/gtkui/main.py:2342 msgid "Merging episode actions" msgstr "з”зЉз•з•ззЊ зЄзЂз•зœз•зЊ зЄзЈзЇ" #: src/gpodder/gtkui/main.py:2343 msgid "Episode actions from gpodder.net are merged." msgstr "зЄзЂз•зœз•зЊ зЄзЈзЇ зžжОgpodder.net з”з•зЉз•з•." #: src/gpodder/gtkui/main.py:2368 msgid "Cancelling..." msgstr "зžз‘з˜зœ..." #: src/gpodder/gtkui/main.py:2377 msgid "Please connect to a network, then try again." msgstr "" #: src/gpodder/gtkui/main.py:2378 #, fuzzy msgid "No network connection" msgstr "зЉз з—з“зЉ:" #: src/gpodder/gtkui/main.py:2399 #, python-format msgid "Updating %(count)d feed..." msgid_plural "Updating %(count)d feeds..." msgstr[0] "зžзЂз“з›зŸ з”з–з з”..." msgstr[1] "зžзЂз“з›зŸ %(count)d з”з–з з•зЊ..." #: src/gpodder/gtkui/main.py:2417 #, python-format msgid "Error while updating %(url)s: %(message)s" msgstr "зЉз’з™зз” з‘зЂз“з›з•зŸ %(url)s: %(message)s" #: src/gpodder/gtkui/main.py:2419 #, python-format msgid "The feed at %(url)s could not be updated." msgstr "з”з”з–з з” з‘з›зЊз•з‘зЊ %(url)s зœз з™з›з•зœз” зœз”зЊзЂз“з›зŸ." #: src/gpodder/gtkui/main.py:2420 msgid "Error while updating feed" msgstr "зЉз’з™зз” з‘зЂз“з›з•зŸ з”з–з з”" #: src/gpodder/gtkui/main.py:2435 #, python-format msgid "Updated %(podcast)s (%(position)d/%(total)d)" msgstr "зžзЂз“з›зŸ ззЊ %(podcast)s (%(position)d/%(total)d)" #: src/gpodder/gtkui/main.py:2466 msgid "No new episodes" msgstr "зз™зŸ зЄзЈзЇз™з з—з“зЉз™з" #: src/gpodder/gtkui/main.py:2479 #, python-format msgid "Downloading %(count)d new episode." msgid_plural "Downloading %(count)d new episodes." msgstr[0] "зžз•зЈз™з“ зЄзЈзЇ з—з“зЉ." msgstr[1] "зžз•зЈз™з“ %(count)d зЄзЈзЇз™з з—з“зЉз™з." #: src/gpodder/gtkui/main.py:2480 src/gpodder/gtkui/main.py:2484 #: src/gpodder/gtkui/main.py:2833 msgid "New episodes available" msgstr "зЄзЈзЇз™з з—з“зЉз™з з–зžз™з з™з" #: src/gpodder/gtkui/main.py:2483 #, python-format msgid "%(count)d new episode added to download list." msgid_plural "%(count)d new episodes added to download list." msgstr[0] "зЄзЈзЇ з—з“зЉ з з•зЁзЃ зœзЈзЉз™зžзЊ з”з”з•зЈз“з•зЊ." msgstr[1] "%(count)d зЄзЈзЇз™з з—з“зЉз™з з з•зЁзЄз• зœзЈзЉз™зžзЊ з”з”з•зЈз“з•зЊ." #: src/gpodder/gtkui/main.py:2490 #, python-format msgid "%(count)d new episode available" msgid_plural "%(count)d new episodes available" msgstr[0] "зЄзЈзЇ з—з“зЉ з–зžз™зŸ" msgstr[1] "%(count)d зЄзЈзЇз™з з—з“зЉз™з з–зžз™з з™з" #: src/gpodder/gtkui/main.py:2509 msgid "Quit gPodder" msgstr "з™зІз™зз” зžжОgPodder" #: src/gpodder/gtkui/main.py:2510 msgid "" "You are downloading episodes. You can resume downloads the next time you " "start gPodder. Do you want to quit now?" msgstr "" "ззЊз” з‘ззžзІзЂ з”з•зЈз“зЊ зЄзЈзЇз™з. ззЊз” з™з›з•зœ зœз”зžзЉз™зš ззЊ з”з”з•зЈз“з•зЊ з‘з”зЄзЂзœз” з”з‘зз” зЉзœ gPodder. " "з”зз з‘зЈзІз•з зš зœзІззЊ?" #: src/gpodder/gtkui/main.py:2559 msgid "Episodes are locked" msgstr "з”зЄзЈзЇз™з з зЂз•зœз™з" #: src/gpodder/gtkui/main.py:2560 msgid "" "The selected episodes are locked. Please unlock the episodes that you want " "to delete before trying to delete them." msgstr "з”зЄзЈзЇз™з зЉз‘з—зЈзЊ з зЂз•зœз™з. зЉз—зЈзЈ ззЊ з”з зЂз™зœз” зЉзœз”з з›з“з™ зЉзЊз•з›зœ зœзžз—з•зЇ зз•зЊз." #: src/gpodder/gtkui/main.py:2565 #, python-format msgid "Delete %(count)d episode?" msgid_plural "Delete %(count)d episodes?" msgstr[0] "зœзžз—з•зЇ зЄзЈзЇ?" msgstr[1] "зœзžз—з•зЇ %(count)d зЄзЈзЇз™з?" #: src/gpodder/gtkui/main.py:2566 msgid "Deleting episodes removes downloaded files." msgstr "зžз•з—зЇ ззЊ з”зЄзЈзЇз™з з•зžзЁз™зЈ ззЊ з”зЇз‘зІз™з зЉз”з•зЈз“з•." #: src/gpodder/gtkui/main.py:2571 msgid "Deleting episodes" msgstr "зžз•з—зЇ зЄзЈзЇз™з" #: src/gpodder/gtkui/main.py:2572 msgid "Please wait while episodes are deleted" msgstr "зз з з”зžзЊзŸ з‘зЂзЊ зžз—з™зЇзЊ з”зЄзЈзЇз™з" #: src/gpodder/gtkui/main.py:2625 #, python-format msgid "Select older than %(count)d day" msgid_plural "Select older than %(count)d days" msgstr[0] "з‘з—зЈ з™зЉзŸ з™з•зЊзЈ зžз™з•з зз—з“" msgstr[1] "з‘з—зЈ з™зЉзŸ з™з•зЊзЈ зžжО%(count)d з™зžз™з" #: src/gpodder/gtkui/main.py:2627 msgid "Select played" msgstr "з‘з—зЈ зžз з•з’з з™з" #: src/gpodder/gtkui/main.py:2628 msgid "Select finished" msgstr "з‘з—зЈ зЄзЈзЇз™з зЉз”зЁзЊз™з™зžз•" #: src/gpodder/gtkui/main.py:2632 msgid "Select the episodes you want to delete:" msgstr "з‘з—зЈ ззЊ з”зЄзЈзЇз™з зЉз‘зЈзІз•з зš зœзžз—з•зЇ:" #: src/gpodder/gtkui/main.py:2648 share/gpodder/ui/gtk/gpodder.ui.h:4 msgid "Delete episodes" msgstr "зžз—зЇ зЄзЈзЇз™з" #: src/gpodder/gtkui/main.py:2703 src/gpodder/gtkui/main.py:2934 #: src/gpodder/gtkui/main.py:3034 msgid "No podcast selected" msgstr "зœз з з‘з—зЈз• зЄз•з“зЇзЁз˜з™з" #: src/gpodder/gtkui/main.py:2704 msgid "Please select a podcast in the podcasts list to update." msgstr "з‘з—зЈ зЄз•з“зЇзЁз˜ зžз”зЈзЉз™зžз” зœзЂз“з›з•зŸ." #: src/gpodder/gtkui/main.py:2774 #, python-format msgid "Download error while downloading %(episode)s: %(message)s" msgstr "з”зЊзЈз—зЉз” зЉз’з™зз” з‘з”з•зЈз“зЊ %(episode)s: %(message)s" #: src/gpodder/gtkui/main.py:2775 msgid "Download error" msgstr "зЉз’з™ззЊ з”з•зЈз“з”" #: src/gpodder/gtkui/main.py:2818 msgid "Select the episodes you want to download:" msgstr "з‘з—зЈ ззЊ з”зЄзЈзЇз™з зЉз‘зЈзІз•з зš зœз”з•зЈз™з“:" #: src/gpodder/gtkui/main.py:2841 msgid "Mark as old" msgstr "зЁзžзŸ з›з™зЉзŸ" #: src/gpodder/gtkui/main.py:2848 msgid "Please check for new episodes later." msgstr "зз з з‘з“з•зЇ зžзз•з—зЈ з™з•зЊзЈ зœзЄзЈзЇз™з з—з“зЉз™з." #: src/gpodder/gtkui/main.py:2849 msgid "No new episodes available" msgstr "зœз з–зžз™з з™з зЄзЈзЇз™з з—з“зЉз™з" #: src/gpodder/gtkui/main.py:2900 msgid "Login to gpodder.net" msgstr "з”зЊз—з‘зЈ ззœ gpodder.net" #: src/gpodder/gtkui/main.py:2901 msgid "Please login to download your subscriptions." msgstr "зз з з”зЊз—з‘зЈ з›з“з™ зœз”з•зЈз™з“ ззЊ з”з”зЈзЉзžз•зЊ зЉзœзš." #: src/gpodder/gtkui/main.py:2916 msgid "Subscriptions on gpodder.net" msgstr "з”зЈзЉзžз•зЊ з‘жОgpodder.net" #: src/gpodder/gtkui/main.py:2935 msgid "Please select a podcast in the podcasts list to edit." msgstr "з‘з—зЈ зЄз•з“зЇзЁз˜ зžз”зЈзЉз™зžз” зœзЂзЈз™з›з”." #: src/gpodder/gtkui/main.py:2949 msgid "Podcast" msgstr "зЄз•з“зЇзЁз˜" #: src/gpodder/gtkui/main.py:2955 share/gpodder/ui/gtk/gpodder.ui.h:12 msgid "Remove podcasts" msgstr "з”зЁзЈ зЄз•з“зЇзЁз˜з™з" #: src/gpodder/gtkui/main.py:2956 msgid "Select the podcast you want to remove." msgstr "з‘з—зЈ ззЊ з”зЄз•з“зЇзЁз˜ зЉз‘зЈзІз•з зš зœз”зЁз™зЈ." #: src/gpodder/gtkui/main.py:2960 #: src/gpodder/gtkui/desktop/episodeselector.py:105 msgid "Remove" msgstr "з”зЁзЈ" #: src/gpodder/gtkui/main.py:2969 msgid "Removing podcast" msgstr "зžзЁз™зЈ зЄз•з“зЇзЁз˜" #: src/gpodder/gtkui/main.py:2970 msgid "Please wait while the podcast is removed" msgstr "зз з з”зžзЊзŸ зœз”зЁзЈзЊ з”зЄз•з“зЇзЁз˜" #: src/gpodder/gtkui/main.py:2971 msgid "Do you really want to remove this podcast and its episodes?" msgstr "ззЊз” з‘з˜з•з— зЉз‘зЈзІз•з зš зœз”зЁз™зЈ ззЊ з”зЄз•з“зЇзЁз˜ з”з–з” з•ззЊ з”зЄзЈзЇз™з зЉзœз•?" #: src/gpodder/gtkui/main.py:2973 msgid "Removing podcasts" msgstr "зžзЁз™зЈ зЄз•з“зЇзЁз˜з™з" #: src/gpodder/gtkui/main.py:2974 msgid "Please wait while the podcasts are removed" msgstr "зз з з”зžзЊзŸ зœз”зЁзЈзЊ з”зЄз•з“зЇзЁз˜з™з" #: src/gpodder/gtkui/main.py:2975 msgid "Do you really want to remove the selected podcasts and their episodes?" msgstr "ззЊз” з‘з˜з•з— зЉз‘зЈзІз•з зš зœз”зЁз™зЈ ззЊ з”зЄз•з“зЇзЁз˜з™з з”з з‘з—зЈз™з з•ззЊ з”зЄзЈзЇз™з зЉзœз”з?" #: src/gpodder/gtkui/main.py:3035 msgid "Please select a podcast in the podcasts list to remove." msgstr "з‘з—зЈ зЄз•з“зЇзЁз˜ зžз”зЈзЉз™зžз” зœз”зЁзЈз”." #: src/gpodder/gtkui/main.py:3045 msgid "OPML files" msgstr "зЇз•з‘зІз™ OPML" #: src/gpodder/gtkui/main.py:3050 msgid "Import from OPML" msgstr "з™з™з‘з зžзЇз•з‘зЅ OPML" #: src/gpodder/gtkui/main.py:3064 msgid "Import podcasts from OPML file" msgstr "з™з™з‘з зЄз•з“зЇзЁз˜з™з зžзЇз•з‘зЅ OPML" #: src/gpodder/gtkui/main.py:3071 msgid "Nothing to export" msgstr "зз™зŸ з›зœз•з зœз™з™зІз•з" #: src/gpodder/gtkui/main.py:3072 msgid "" "Your list of podcast subscriptions is empty. Please subscribe to some " "podcasts first before trying to export your subscription list." msgstr "зЈзЉз™зžзЊ з”з”зЈзЉзžз•зЊ зЉзœзš зЈз™зЇз”. з”зЈзЉз зœз›зžз” зЄз•з“зЇзЁз˜з™з зœзЄз з™ з™з™зІз•з з”зЈзЉз™зžз”." #: src/gpodder/gtkui/main.py:3076 msgid "Export to OPML" msgstr "з™з™зІз зœзЇз•з‘зЅ OPML" #: src/gpodder/gtkui/main.py:3087 #, python-format msgid "%(count)d subscription exported" msgid_plural "%(count)d subscriptions exported" msgstr[0] "з”зЈзЉзžз” зз—зЊ з™з•зІзз”" msgstr[1] "%(count)d з”зЈзЉзžз•зЊ з™з•зІзз•" #: src/gpodder/gtkui/main.py:3088 msgid "Your podcast list has been successfully exported." msgstr "зЈзЉз™зžзЊ з”зЄз•з“зЇзЁз˜з™з зЉзœзš з™з•зІзз” з‘з”зІзœз—з”." #: src/gpodder/gtkui/main.py:3090 msgid "Could not export OPML to file. Please check your permissions." msgstr "зœз з з™зЊзŸ зœз™з™зІз зœзЇз•з‘зЅ OPML. з‘з“з•зЇ ззЊ з”з”зЈзЉзз•зЊ зЉзœзš." #: src/gpodder/gtkui/main.py:3090 msgid "OPML export failed" msgstr "з™з™зІз•з OPML з з›зЉзœ" #: src/gpodder/gtkui/main.py:3117 msgid "No updates available" msgstr "зз™зŸ зЂз“з›з•з з™з з–зžз™з з™з" #: src/gpodder/gtkui/main.py:3118 msgid "You have the latest version of gPodder." msgstr "з™зЉ зœзš ззЊ з”з’зЈзЁз” з”зЂз“з›з з™зЊ з‘з™з•зЊзЈ зЉзœ gPodder." #: src/gpodder/gtkui/main.py:3122 msgid "New version available" msgstr "з’зЈзЁз” з—з“зЉз” з–зžз™з з”" #: src/gpodder/gtkui/main.py:3124 #, python-format msgid "Installed version: %s" msgstr "з’зЈзЁз” зžз•зЊзЇз зЊ: %s" #: src/gpodder/gtkui/main.py:3125 #, python-format msgid "Newest version: %s" msgstr "з”з’зЈзЁз” з”з—з“зЉз” з‘з™з•зЊзЈ: %s" #: src/gpodder/gtkui/main.py:3126 #, python-format msgid "Release date: %s" msgstr "зЊззЈз™зš зЄзЈзЁз•з: %s" #: src/gpodder/gtkui/main.py:3128 msgid "Download the latest version from gpodder.org?" msgstr "зœз”з•зЈз™з“ ззЊ з”з’зЈзЁз” з”зЂз“з›з з™зЊ зžжОgpodder.org?" #: src/gpodder/gtkui/main.py:3141 msgid "About gPodder" msgstr "зЂзœ зз•з“з•зЊ gPodder" #: src/gpodder/gtkui/main.py:3424 #, fuzzy msgid "Please register a YouTube API key and set it in the preferences." msgstr "зз з з”з’з“зЈ ззЊ з”з”зЊзЇзŸ зЉзœзš з‘з—зœз•зŸ з”з”зЂз“зЄз•зЊ." #: src/gpodder/gtkui/main.py:3425 msgid "Would you like to set up an API key now?" msgstr "" #: src/gpodder/gtkui/main.py:3425 msgid "API key required" msgstr "" #: src/gpodder/gtkui/main.py:3444 bin/gpo:631 #, fuzzy msgid "No unique URL found" msgstr "зœз з зžзІзз• зЂзЈз•зІз™з" #: src/gpodder/gtkui/main.py:3449 bin/gpo:637 #, fuzzy msgid "Already subscribed" msgstr "зœз з з™зЊзŸ зœз”з™зЈзЉз зœжО%s." #: src/gpodder/gtkui/main.py:3458 bin/gpo:649 #, python-format msgid "Make sure the API key is correct. Error: %(message)s" msgstr "" #: src/gpodder/gtkui/main.py:3459 #, fuzzy msgid "Error getting YouTube channels" msgstr "зЉз’з™зз” з‘з”з’з“зЈзЊ ззЄзЉзЈз•зЊ" #: src/gpodder/gtkui/main.py:3462 #, fuzzy msgid "Successfully migrated subscriptions" msgstr "%s з з•зЁзЃ з‘з”зІзœз—з”." #: src/gpodder/gtkui/main.py:3464 #, fuzzy msgid "Subscriptions are up to date" msgstr "з”зЈзЉзžз” зžз•зЉз”зЊ" #: src/gpodder/gtkui/main.py:3467 msgid "These URLs failed:" msgstr "" #: src/gpodder/gtkui/main.py:3469 #, fuzzy msgid "Could not migrate some subscriptions" msgstr "зœз з™з›з•зœ зœз”з•зЁз™зЃ зžзЁзЄзЈ зЄз•з“зЇзЁз˜з™з" #: src/gpodder/gtkui/main.py:3493 msgid "Cannot start gPodder" msgstr "зœз з з™зЊзŸ зœз”зЄзЂз™зœ ззЊ gPodder" #: src/gpodder/gtkui/main.py:3494 #, python-format msgid "D-Bus error: %s" msgstr "зЉз’з™ззЊ D-Bus: %s" #: src/gpodder/gtkui/model.py:68 #, python-format msgid "released %s" msgstr "зЄз•зЈзЁз %s" #: src/gpodder/gtkui/model.py:69 src/gpodder/gtkui/model.py:87 #: src/gpodder/gtkui/model.py:237 src/gpodder/gtkui/shownotes.py:84 #, python-format msgid "from %s" msgstr "зžззЊ %s" #: src/gpodder/gtkui/model.py:80 src/gpodder/gtkui/model.py:393 msgid "played" msgstr "з”з•зЉзžзЂ" #: src/gpodder/gtkui/model.py:82 msgid "unplayed" msgstr "зœз з”з•зЉзžзЂ" #: src/gpodder/gtkui/model.py:85 msgid "today" msgstr "з”з™з•з" #: src/gpodder/gtkui/model.py:86 #, python-format msgid "downloaded %s" msgstr "з”з•зЈз“ %s" #: src/gpodder/gtkui/model.py:337 msgid "Deleted" msgstr "з зžз—зЇ" #: src/gpodder/gtkui/model.py:342 msgid "New episode" msgstr "зЄзЈзЇ з—з“зЉ" #: src/gpodder/gtkui/model.py:356 msgid "Downloaded episode" msgstr "зЄзЈзЇ з”з•зЈз“" #: src/gpodder/gtkui/model.py:359 msgid "Downloaded video episode" msgstr "зЄзЈзЇ з•з™з“зз• з”з•зЈз“" #: src/gpodder/gtkui/model.py:362 msgid "Downloaded image" msgstr "зЊзžз•з з” з”з•зЈз“з”" #: src/gpodder/gtkui/model.py:365 msgid "Downloaded file" msgstr "зЇз•з‘зЅ з”з•зЈз“" #: src/gpodder/gtkui/model.py:380 msgid "missing file" msgstr "зЇз•з‘зЅ з—зЁзЈ" #: src/gpodder/gtkui/model.py:384 msgid "never displayed" msgstr "зœз з”з•зІз’ зžзЂз•зœз" #: src/gpodder/gtkui/model.py:386 msgid "never played" msgstr "зœз з”з•зЉзžзЂ зžзЂз•зœз" #: src/gpodder/gtkui/model.py:388 msgid "never opened" msgstr "зœз з зЄзЊз— зžзЂз•зœз" #: src/gpodder/gtkui/model.py:391 msgid "displayed" msgstr "з”з•зІз’" #: src/gpodder/gtkui/model.py:395 msgid "opened" msgstr "з зЄзЊз—" #: src/gpodder/gtkui/model.py:397 msgid "deletion prevented" msgstr "зžз—з™зЇз” зžз з•зЂз”" #: src/gpodder/gtkui/model.py:432 share/gpodder/ui/gtk/gpodder.ui.h:32 msgid "All episodes" msgstr "з›зœ з”зЄзЈзЇз™з" #: src/gpodder/gtkui/model.py:433 msgid "from all podcasts" msgstr "зžз›зœ з”зЄз•з“зЇзЁз˜з™з" #: src/gpodder/gtkui/model.py:625 msgid "Subscription paused" msgstr "з”зЈзЉзžз” зžз•зЉз”зЊ" #: src/gpodder/gtkui/shownotes.py:118 #, fuzzy msgid "Please select an episode" msgstr "з‘з—зЈ зЄзЈзЇз™з" #: src/gpodder/gtkui/interface/addpodcast.py:74 msgid "Nothing to paste." msgstr "зз™зŸ з›зœз•з зœз”з“з‘з™зЇ." #: src/gpodder/gtkui/interface/addpodcast.py:74 msgid "Clipboard is empty" msgstr "з”зœз•з— зЈз™зЇ" #: src/gpodder/gtkui/interface/common.py:160 msgid "Username" msgstr "зЉз зžзЉзЊзžзЉ" #: src/gpodder/gtkui/interface/common.py:163 msgid "New user" msgstr "зžзЉзЊзžзЉ з—з“зЉ" #: src/gpodder/gtkui/interface/common.py:170 msgid "Login" msgstr "з”зЊз—з‘зЈ" #: src/gpodder/gtkui/interface/common.py:172 msgid "Authentication required" msgstr "з з“зЈзЉ зз™зžз•зЊ" #: src/gpodder/gtkui/interface/common.py:203 msgid "Password" msgstr "зЁзЁзžз”" #: src/gpodder/gtkui/interface/common.py:225 msgid "Select destination" msgstr "з‘з—зЈ з™зЂз“" #: src/gpodder/gtkui/interface/configeditor.py:34 msgid "Setting" msgstr "з”з’з“зЈз”" #: src/gpodder/gtkui/interface/configeditor.py:41 msgid "Set to" msgstr "з”з’з“зЈз”" #: src/gpodder/gtkui/interface/configeditor.py:81 #, python-format msgid "Cannot set %(field)s to %(value)s. Needed data type: %(datatype)s" msgstr "" "зœз з з™зЊзŸ зœз”з’з“з™зЈ з‘зЉз“з” %(field)s ззЊ з”зЂзЈзš %(value)s. зЁз•з’ зžз™з“зЂ з з“зЈзЉ: %(datatype)s" #: src/gpodder/gtkui/interface/configeditor.py:85 msgid "Error setting option" msgstr "зЉз’з™зз” з‘з”з’з“зЈзЊ ззЄзЉзЈз•зЊ" #: src/gpodder/gtkui/desktop/channel.py:100 msgid "Add section" msgstr "з”з•зЁзЃ зЇз‘з•зІз”" #: src/gpodder/gtkui/desktop/channel.py:100 msgid "New section:" msgstr "зЇз‘з•зІз” з—з“зЉз”:" #: src/gpodder/gtkui/desktop/channel.py:133 msgid "Select new podcast cover artwork" msgstr "з‘з—зЈ зЊзžз•з зЊ зЂз˜з™зЄз” з—з“зЉз” зœзЄз•з“зЇзЁз˜" #: src/gpodder/gtkui/desktop/channel.py:161 msgid "You can only drop a single image or URL here." msgstr "ззЊз” з™з›з•зœ зœз’зЈз•зЈ зЈзЇ зЊзžз•з з” зз—зЊ зз• з›зЊз•з‘зЊ зз™з з˜зЈз з˜ зœз›ззŸ." #: src/gpodder/gtkui/desktop/channel.py:161 #: src/gpodder/gtkui/desktop/channel.py:171 msgid "Drag and drop" msgstr "з’зЈз•зЈ з•зЉз—зЈзЈ" #: src/gpodder/gtkui/desktop/channel.py:171 msgid "You can only drop local files and http:// URLs here." msgstr "ззЊз” з™з›з•зœ зœз’зЈз•зЈ зœз›ззŸ зЈзЇ зЇз‘зІз™з зžзЇз•зžз™з™з з•з›зЊз•з‘з•зЊ http." #: src/gpodder/gtkui/desktop/deviceplaylist.py:98 #, fuzzy, python-format msgid "Folder %s could not be created." msgstr "з”з”з–з з” з‘з›зЊз•з‘зЊ %(url)s зœз з™з›з•зœз” зœз”зЊзЂз“з›зŸ." #: src/gpodder/gtkui/desktop/deviceplaylist.py:98 #, fuzzy msgid "Error writing playlist" msgstr "зЉз’з™зз” з‘зЄзЊз™з—зЊ з з’зŸ" #: src/gpodder/gtkui/desktop/episodeselector.py:288 #: share/gpodder/ui/gtk/gpodderepisodeselector.ui.h:2 msgid "Select all" msgstr "з‘з—зЈ з”з›зœ" #: src/gpodder/gtkui/desktop/episodeselector.py:292 #: share/gpodder/ui/gtk/gpodderepisodeselector.ui.h:3 msgid "Select none" msgstr "ззœ зЊз‘з—зЈ з›зœз•з" #: src/gpodder/gtkui/desktop/episodeselector.py:324 msgid "Nothing selected" msgstr "зœз з з‘з—зЈ з“з‘зЈ" #: src/gpodder/gtkui/desktop/episodeselector.py:325 #, python-format msgid "%(count)d episode" msgid_plural "%(count)d episodes" msgstr[0] "зЄзЈзЇ зз—з“" msgstr[1] "%(count)d зЄзЈзЇз™з" #: src/gpodder/gtkui/desktop/episodeselector.py:327 #, python-format msgid "size: %s" msgstr "з’з•з“зœ: %s" #: src/gpodder/gtkui/desktop/podcastdirectory.py:238 #, fuzzy msgid "Loading podcasts" msgstr "зžз•зЁз™зЃ зЄз•з“зЇзЁз˜з™з" #: src/gpodder/gtkui/desktop/podcastdirectory.py:239 #, fuzzy msgid "Please wait while the podcast list is downloaded" msgstr "зз з з”зžзЊзŸ зœз”зЁзЈзЊ з”зЄз•з“зЇзЁз˜" #: src/gpodder/gtkui/desktop/preferences.py:51 #: src/gpodder/gtkui/desktop/preferences.py:93 msgid "Do nothing" msgstr "ззœ зЊзЂзЉз” з“з‘зЈ" #: src/gpodder/gtkui/desktop/preferences.py:52 msgid "Show episode list" msgstr "з”зІз’ зЈзЉз™зžзЊ зЄзЈзЇз™з" #: src/gpodder/gtkui/desktop/preferences.py:53 msgid "Add to download list" msgstr "з”з•зЁзЃ зœзЈзЉз™зžзЊ з”з”з•зЈз“з•зЊ" #: src/gpodder/gtkui/desktop/preferences.py:54 msgid "Download immediately" msgstr "з”з•зЈз“ зžз™з“з™зЊ" #: src/gpodder/gtkui/desktop/preferences.py:72 msgid "None" msgstr "зœзœз" #: src/gpodder/gtkui/desktop/preferences.py:73 msgid "iPod" msgstr "" #: src/gpodder/gtkui/desktop/preferences.py:74 msgid "Filesystem-based" msgstr "зžз‘з•зЁзЁ зžзЂзЈз›зЊ зЇз‘зІз™з" #: src/gpodder/gtkui/desktop/preferences.py:94 msgid "Mark as played" msgstr "зЁзžзŸ з›зžз•зЉзžзЂ" #: src/gpodder/gtkui/desktop/preferences.py:95 msgid "Delete from gPodder" msgstr "зžз—зЇ зžжОgPodder" #: src/gpodder/gtkui/desktop/preferences.py:123 #, fuzzy, python-format msgid "Custom (%(format_ids)s)" msgstr "з”зžзЈ зœжО%(format)s" #: src/gpodder/gtkui/desktop/preferences.py:318 msgid "Name" msgstr "зЉз" #: src/gpodder/gtkui/desktop/preferences.py:369 #, fuzzy msgid "Documentation" msgstr "зžзЉзš" #: src/gpodder/gtkui/desktop/preferences.py:374 #, fuzzy msgid "Extension info" msgstr "зžз™з“зЂ зЂзœ зžз•з“з•зœ з”з”зЈз—з‘з”" #: src/gpodder/gtkui/desktop/preferences.py:379 msgid "Support the author" msgstr "" #: src/gpodder/gtkui/desktop/preferences.py:413 msgid "Extension cannot be activated" msgstr "зœз з з™зЊзŸ зœз”зЄзЂз™зœ ззЊ з”з”зЈз—з‘з”" #: src/gpodder/gtkui/desktop/preferences.py:426 msgid "Extension module info" msgstr "зžз™з“зЂ зЂзœ зžз•з“з•зœ з”з”зЈз—з‘з”" #: src/gpodder/gtkui/desktop/preferences.py:463 msgid "Configure audio player" msgstr "з”з’з“зЈ з з’зŸ зз•з“з™з•" #: src/gpodder/gtkui/desktop/preferences.py:464 #: src/gpodder/gtkui/desktop/preferences.py:474 msgid "Command:" msgstr "зЄзЇз•з“з”:" #: src/gpodder/gtkui/desktop/preferences.py:473 msgid "Configure video player" msgstr "з”з’з“зЈ з з’зŸ з•з™з“зз•" #: src/gpodder/gtkui/desktop/preferences.py:485 #: src/gpodder/gtkui/desktop/preferences.py:503 msgid "manually" msgstr "з™з“з з™зЊ" #: src/gpodder/gtkui/desktop/preferences.py:505 #, python-format msgid "after %(count)d day" msgid_plural "after %(count)d days" msgstr[0] "зз—зЈз™ з™з•з зз—з“" msgstr[1] "зз—зЈз™ %(count)d з™зžз™з" #: src/gpodder/gtkui/desktop/preferences.py:541 msgid "Replace subscription list on server" msgstr "з”з—зœзЃ зЈзЉз™зžзЊ з”зЈзЉзžз•зЊ з‘зЉзЈзЊ" #: src/gpodder/gtkui/desktop/preferences.py:542 msgid "" "Remote podcasts that have not been added locally will be removed on the " "server. Continue?" msgstr "зЄз•з“зЇзЁз˜з™з зžзЈз•з—зЇз™з зЉзœз з з•зЁзЄз• з‘зз•зЄзŸ зžзЇз•зžз™ з™з•зЁзЈз• зžз”зЉзЈзЊ. з”зз зœз”зžзЉз™зš?" #: src/gpodder/gtkui/desktop/preferences.py:621 msgid "Select folder for mount point" msgstr "з‘з—зЈ зЊз™зЇз™з™з” зœз зЇз•з“зЊ зЂз™з’з•зŸ" #: src/gpodder/gtkui/desktop/preferences.py:638 #, fuzzy msgid "Select folder for playlists" msgstr "з‘з—зЈ зЊз™зЇз™з™з” зœз зЇз•з“зЊ зЂз™з’з•зŸ" #: src/gpodder/gtkui/desktop/sync.py:86 msgid "No device configured" msgstr "зœз з”з•з’з“зЈ з”зЊзЇзŸ" #: src/gpodder/gtkui/desktop/sync.py:87 msgid "Please set up your device in the preferences dialog." msgstr "зз з з”з’з“зЈ ззЊ з”з”зЊзЇзŸ зЉзœзš з‘з—зœз•зŸ з”з”зЂз“зЄз•зЊ." #: src/gpodder/gtkui/desktop/sync.py:91 msgid "Cannot open device" msgstr "зœз з з™зЊзŸ зœзЄзЊз•з— ззЊ з”з”зЊзЇзŸ" #: src/gpodder/gtkui/desktop/sync.py:92 msgid "Please check the settings in the preferences dialog." msgstr "зз з з‘з“з•зЇ ззЊ з”з”з’з“зЈз•зЊ з‘з—зœз•зŸ з”з”зЂз“зЄз•зЊ." #: src/gpodder/gtkui/desktop/sync.py:139 msgid "Not enough space left on device" msgstr "зз™зŸ з“з™ зžзЇз•з зЄз з•з™ зЂзœ з”з”зЊзЇзŸ" #: src/gpodder/gtkui/desktop/sync.py:140 #, python-format msgid "" "Additional free space required: %(required_space)s\n" "Do you want to continue?" msgstr "" "з“зЈз•зЉ зžзЇз•з зЄз з•з™ з з•зЁзЃ: %(required_space)s\n" "з”зз зœз”зžзЉз™зš?" #: src/gpodder/gtkui/desktop/sync.py:199 #, fuzzy msgid "Update successful" msgstr "зЈзЉз™зžз” з”з•зЂзœзЊз” з‘з”зІзœз—з”." #: src/gpodder/gtkui/desktop/sync.py:200 msgid "The playlist on your MP3 player has been updated." msgstr "" #: src/gpodder/gtkui/desktop/sync.py:274 msgid "Episodes have been deleted on device" msgstr "" #: src/gpodder/gtkui/desktop/sync.py:285 #, fuzzy msgid "Error writing playlist files" msgstr "зЉз’з™зз” з‘з”зžзЈзЊ зЇз•з‘зЅ." #: src/gpodder/plugins/soundcloud.py:154 msgid "Unknown track" msgstr "зЈзІз•зЂз” зœз з™з“з•зЂз”" #: src/gpodder/plugins/soundcloud.py:181 #, python-format msgid "%s on Soundcloud" msgstr "%s з‘жОSoundcloud" #: src/gpodder/plugins/soundcloud.py:190 #, python-format msgid "Tracks published by %s on Soundcloud." msgstr "зЈзІз•зЂз•зЊ зЉзЄз•зЈзЁзžз• з‘з™з“з™ %s з‘жОSoundcloud." #: src/gpodder/plugins/soundcloud.py:217 #, python-format msgid "%s's favorites on Soundcloud" msgstr "з”зžз•зЂз“зЄз™з зЉзœ %s з‘жОSoundcloud" #: src/gpodder/plugins/soundcloud.py:223 #, python-format msgid "Tracks favorited by %s on Soundcloud." msgstr "зЈзІз•зЂз•зЊ зЉзžз•зЂз“зЄз•зЊ з‘з™з“з™ %s з‘жОSoundcloud." #: share/gpodder/extensions/audio_converter.py:20 #, fuzzy msgid "Convert audio files" msgstr "з”з”зžзЈз” з з›зЉзœз”" #: share/gpodder/extensions/audio_converter.py:21 #, fuzzy msgid "Transcode audio files to mp3/ogg" msgstr "з”зžзЈ зЇз•з‘зІз™ m4a зœжОmp3 зз• зœжОogg з‘ззžзІзЂз•зЊ ffmpeg" #: share/gpodder/extensions/audio_converter.py:84 #: share/gpodder/extensions/video_converter.py:86 #, python-format msgid "Convert to %(format)s" msgstr "з”зžзЈ зœжО%(format)s" #: share/gpodder/extensions/audio_converter.py:111 #: share/gpodder/extensions/rockbox_convert2mp4.py:65 #: share/gpodder/extensions/video_converter.py:111 msgid "File converted" msgstr "з”зЇз•з‘зЅ з”з•зžзЈ" #: share/gpodder/extensions/audio_converter.py:114 #: share/gpodder/extensions/video_converter.py:114 msgid "Conversion failed" msgstr "з”з”зžзЈз” з з›зЉзœз”" #: share/gpodder/extensions/concatenate_videos.py:20 #: share/gpodder/extensions/concatenate_videos.py:100 #, fuzzy msgid "Concatenate videos" msgstr "з”з”зžзЈз” з з›зЉзœз”" #: share/gpodder/extensions/concatenate_videos.py:21 msgid "Add a context menu item for concatenating multiple videos" msgstr "" #: share/gpodder/extensions/concatenate_videos.py:37 msgid "Save video" msgstr "" #: share/gpodder/extensions/concatenate_videos.py:66 #, fuzzy msgid "Concatenating video files" msgstr "з”з”зžзЈз” з з›зЉзœз”" #: share/gpodder/extensions/concatenate_videos.py:67 #, python-format msgid "Writing %(filename)s" msgstr "" #: share/gpodder/extensions/concatenate_videos.py:78 msgid "Videos successfully converted" msgstr "" #: share/gpodder/extensions/concatenate_videos.py:79 #, fuzzy msgid "Error converting videos" msgstr "зЉз’з™зз” з‘з”зžзЈзЊ зЇз•з‘зЅ." #: share/gpodder/extensions/concatenate_videos.py:80 msgid "Concatenation result" msgstr "" #: share/gpodder/extensions/enqueue_in_mediaplayer.py:16 msgid "Enqueue in media players" msgstr "" #: share/gpodder/extensions/enqueue_in_mediaplayer.py:17 msgid "" "Add a context menu item for enqueueing episodes in installed media players" msgstr "" #: share/gpodder/extensions/enqueue_in_mediaplayer.py:35 msgid "Enqueue in" msgstr "" #: share/gpodder/extensions/episode_website_context_menu.py:14 msgid "\"Open website\" episode context menu" msgstr "" #: share/gpodder/extensions/episode_website_context_menu.py:15 msgid "Add a context menu item for opening the website of an episode" msgstr "" #: share/gpodder/extensions/episode_website_context_menu.py:30 #, fuzzy msgid "Open website" msgstr "ззЊзЈ:" #: share/gpodder/extensions/gtk_statusicon.py:14 msgid "Gtk Status Icon" msgstr "" #: share/gpodder/extensions/gtk_statusicon.py:15 #, fuzzy msgid "Show a status icon for Gtk-based Desktops." msgstr "з”зІз’ ззЊ зžз—з•з•зŸ з”зžзІз‘ з‘зЁзЈз’зœ з”зЂзœз™з•зŸ." #: share/gpodder/extensions/minimize_on_start.py:10 msgid "Minimize on start" msgstr "зžз–зЂзЈ з‘з”зЄзЂзœз”" #: share/gpodder/extensions/minimize_on_start.py:11 msgid "Minimizes the gPodder window on startup." msgstr "зžзžз–зЂзЈ ззЊ з”з—зœз•зŸ зЉзœ gPodder з‘з”зЄзЂзœз” з”зЊз›з з”." #: share/gpodder/extensions/mpris-listener.py:33 msgid "MPRIS Listener" msgstr "" #: share/gpodder/extensions/mpris-listener.py:34 msgid "Convert MPRIS notifications to gPodder Media Player D-Bus API" msgstr "" #: share/gpodder/extensions/normalize_audio.py:21 msgid "Normalize audio with re-encoding" msgstr "з зЈзžзœ зЉзžзЂ з‘ззžзІзЂз•зЊ зЇз™з“з•з“ зžз—з“зЉ" #: share/gpodder/extensions/normalize_audio.py:22 msgid "Normalize the volume of audio files with normalize-audio" msgstr "з зЈзžзœ ззЊ зЂзІзžзЊ зЇз•з‘зІз™ з”зЉзžзЂ з‘ззžзІзЂз•зЊ normalize-audio" #: share/gpodder/extensions/normalize_audio.py:99 msgid "File normalized" msgstr "з”зЇз•з‘зЅ з з•зЈзžзœ" #: share/gpodder/extensions/rename_download.py:16 msgid "Rename episodes after download" msgstr "зЉз з” ззЊ зЉз з”зЄзЈзЇз™з зœзз—зЈ з”з”з•зЈз“з”" #: share/gpodder/extensions/rename_download.py:17 msgid "Rename episodes to \".\" on download" msgstr "зЉз з” з‘з”з•зЈз“з” ззЊ зЉз з”зЄзЈзЇз™з зœзžз‘з з” \".\"" #: share/gpodder/extensions/rm_ogg_cover.py:37 msgid "Remove cover art from OGG files" msgstr "з”зЁзЈ зЊзžз•з зЊ зЂз˜з™зЄз” зžзЇз•з‘зІз™ OGG" #: share/gpodder/extensions/rm_ogg_cover.py:38 msgid "removes coverart from all downloaded ogg files" msgstr "зžзЁз™зЈ ззЊ зЊзžз•з зЊ з”зЂз˜з™зЄз” зžз›зœ зЇз•з‘зІз™ ogg зЉз”з•зЈз“з•" #: share/gpodder/extensions/rm_ogg_cover.py:66 msgid "Remove cover art" msgstr "з”зЁзЈ зЊзžз•з зЊ зЂз˜з™зЄз”" #: share/gpodder/extensions/rockbox_convert2mp4.py:26 msgid "Convert video files to MP4 for Rockbox" msgstr "з”зžзЈ зЇз•з‘зІз™ з•з™з“зз• зœжОMP4 зЂз‘з•зЈ Rockbox" #: share/gpodder/extensions/rockbox_convert2mp4.py:27 msgid "Converts all videos to a Rockbox-compatible format" msgstr "зžзžз™зЈ ззЊ з›зœ з”зЁзЈз˜з•з з™з зœзЁз•з’ зЉзЊз•зз зœжОRockbox" #: share/gpodder/extensions/sonos.py:19 share/gpodder/extensions/sonos.py:78 msgid "Stream to Sonos" msgstr "" #: share/gpodder/extensions/sonos.py:20 msgid "Stream podcasts to Sonos speakers" msgstr "" #: share/gpodder/extensions/tagging.py:45 msgid "Tag downloaded files using Mutagen" msgstr "зЊз™з™з’ з‘ззžзІзЂз•зЊ Mutagen зЇз‘зІз™з зЉз”з•зЈз“з•" #: share/gpodder/extensions/tagging.py:46 msgid "Add episode and podcast titles to MP3/OGG tags" msgstr "з”з•зЁзЃ ззЊ з›з•зЊзЈз•зЊ з”зЄзЈзЇ з•з”зЄз•з“зЇзЁз˜ зœзЊз’з™ mp3/ogg" #: share/gpodder/extensions/taskbar_progress.py:28 #, fuzzy msgid "Show download progress on the taskbar" msgstr "з”зІз’ з”зЊзЇз“зžз•зЊ з”з•зЈз“з” з‘зз™зЇз•зŸ з”зžзЉз’зЈ зЉзœ Unity." #: share/gpodder/extensions/taskbar_progress.py:29 msgid "Displays the progress on the Windows taskbar." msgstr "" #: share/gpodder/extensions/ted_subtitles.py:16 msgid "Subtitle Downloader for TED Talks" msgstr "зžз•зЈз™з“ з›зЊз•з‘з™з•зЊ зЂз‘з•зЈ з”зЈзІзз•зЊ зЉзœ TED" #: share/gpodder/extensions/ted_subtitles.py:17 msgid "Downloads .srt subtitles for TED Talks Videos" msgstr "з”з•зЈз“зЊ з›зЊз•з‘з•з™з•зЊ srt зЂз‘з•зЈ зЁзЈз˜з•з з™ з”зЈзІзз•зЊ зЉзœ TED" #: share/gpodder/extensions/ubuntu_appindicator.py:10 msgid "Ubuntu App Indicator" msgstr "зžз—з•з•зŸ з™з™зЉз•з зЉзœ зз•з‘з•з з˜з•" #: share/gpodder/extensions/ubuntu_appindicator.py:11 msgid "Show a status indicator in the top bar." msgstr "з”зІз’ ззЊ зžз—з•з•зŸ з”зžзІз‘ з‘зЁзЈз’зœ з”зЂзœз™з•зŸ." #: share/gpodder/extensions/ubuntu_appindicator.py:47 msgid "Show main window" msgstr "з”зІз’ з—зœз•зŸ зЈззЉз™" #: share/gpodder/extensions/ubuntu_appindicator.py:57 #: share/gpodder/ui/gtk/gpodder.ui.h:6 msgid "Quit" msgstr "з™зІз™зз”" #: share/gpodder/extensions/ubuntu_unity.py:10 msgid "Ubuntu Unity Integration" msgstr "зЉз™зœз•з‘ зЂз зžзžзЉзЇ Unity зЉзœ зз•з‘з•з з˜з•" #: share/gpodder/extensions/ubuntu_unity.py:11 msgid "Show download progress in the Unity Launcher icon." msgstr "з”зІз’ з”зЊзЇз“зžз•зЊ з”з•зЈз“з” з‘зз™зЇз•зŸ з”зžзЉз’зЈ зЉзœ Unity." #: share/gpodder/extensions/update_feeds_on_startup.py:14 #, fuzzy msgid "Search for new episodes on startup" msgstr "з‘з“з•зЇ зз з™зЉз з зЄзЈзЇз™з з—з“зЉз™з з‘з”зЄзЂзœз”" #: share/gpodder/extensions/update_feeds_on_startup.py:15 #, fuzzy msgid "Starts the search for new episodes on startup" msgstr "з‘з“з•зЇ зз з™зЉз з зЄзЈзЇз™з з—з“зЉз™з з‘з”зЄзЂзœз”" #: share/gpodder/extensions/video_converter.py:22 #, fuzzy msgid "Convert video files" msgstr "з”з”зžзЈз” з з›зЉзœз”" #: share/gpodder/extensions/video_converter.py:23 #, fuzzy msgid "Transcode video files to avi/mp4/m4v" msgstr "з”зžзЈ зЇз•з‘зІз™ m4a зœжОmp3 зз• зœжОogg з‘ззžзІзЂз•зЊ ffmpeg" #: share/gpodder/ui/gtk/gpodderaddpodcast.ui.h:1 msgid "Add a new podcast" msgstr "з”з•зЁзЃ зЄз•з“зЇзЁз˜ з—з“зЉ" #: share/gpodder/ui/gtk/gpodderaddpodcast.ui.h:2 msgid "URL:" msgstr "з›зЊз•з‘зЊ:" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:1 msgid "gPodder Podcast Editor" msgstr "зЂз•зЈзš з”зЄз•з“зЇзЁз˜з™з зЉзœ gPodder" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:2 msgid "Section:" msgstr "зЇз‘з•зІз”:" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:3 msgid "Disable feed updates (pause subscription)" msgstr "з з˜зЈзœ зЂз“з›з•з з™ з”з–з з” (з”зЉз”з™з™зЊ з”з”зЈзЉзžз”)" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:4 msgid "Synchronize to MP3 player devices" msgstr "" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:5 msgid "Strategy:" msgstr "" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:6 #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:6 msgid "General" msgstr "з›зœзœз™" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:7 msgid "HTTP/FTP Authentication" msgstr "зз™зžз•зЊ HTTP/FTP" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:8 #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:13 msgid "Username:" msgstr "зЉз зžзЉзЊзžзЉ:" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:9 #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:14 msgid "Password:" msgstr "зЁзЁзžз”:" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:10 msgid "Locations" msgstr "зžз™зЇз•зžз™з" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:11 msgid "Download to:" msgstr "з”з•зЈз“ ззœ:" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:12 msgid "Website:" msgstr "ззЊзЈ:" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:13 msgid "website label" msgstr "зЊз•з•з™зЊ ззЊзЈ" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:14 msgid "Advanced" msgstr "зžзЊзЇз“з" #: share/gpodder/ui/gtk/gpodderconfigeditor.ui.h:1 msgid "gPodder Configuration Editor" msgstr "зЂз•зЈзš з”зЊзІз•зЈз” зЉзœ gPodder" #: share/gpodder/ui/gtk/gpodderconfigeditor.ui.h:2 msgid "Search for:" msgstr "з—з™зЄз•зЉ зЂз‘з•зЈ:" #: share/gpodder/ui/gtk/gpodderconfigeditor.ui.h:3 msgid "Show All" msgstr "з”зІз’ з”з›зœ" #: share/gpodder/ui/gtk/gpodderepisodeselector.ui.h:1 msgid "Select episodes" msgstr "з‘з—зЈ зЄзЈзЇз™з" #: share/gpodder/ui/gtk/gpodderpodcastdirectory.ui.h:1 msgid "Find new podcasts" msgstr "зžзІз зЄз•з“зЇзЁз˜з™з з—з“зЉз™з" #: share/gpodder/ui/gtk/gpodderpodcastdirectory.ui.h:2 msgid "Select All" msgstr "з‘з—зЈ з”з›зœ" #: share/gpodder/ui/gtk/gpodderpodcastdirectory.ui.h:3 msgid "Select None" msgstr "ззœ зЊз‘з—зЈ з›зœз•з" #: share/gpodder/ui/gtk/gpodderpodcastdirectory.ui.h:4 msgid "label" msgstr "" #: share/gpodder/ui/gtk/gpodderpodcastdirectory.ui.h:5 msgid "..." msgstr "" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:1 #: share/gpodder/ui/gtk/gpodder.ui.h:5 msgid "Preferences" msgstr "з”зЂз“зЄз•зЊ" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:2 msgid "Audio player:" msgstr "з з’зŸ зз•з“з™з•:" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:3 msgid "Video player:" msgstr "з з’зŸ з•з™з“зз•:" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:4 msgid "\"All episodes\" in podcast list" msgstr "\"з›зœ з”зЄзЈзЇз™з\" з‘зЈзЉз™зžзЊ з”зЄз•з“зЇзЁз˜з™з" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:5 msgid "Use sections for podcast list" msgstr "з”зЉзЊзžзЉ з‘зЇз‘з•зІз•зЊ з‘зЈзЉз™зžзЊ з”зЄз•з“зЇзЁз˜з™з" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:7 msgid "Preferred YouTube format:" msgstr "" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:8 msgid "YouTube API key (v3):" msgstr "" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:9 msgid "Preferred Vimeo format:" msgstr "" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:11 msgid "Extensions" msgstr "з”зЈз—з‘з•зЊ" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:12 msgid "Synchronize subscriptions and episode actions" msgstr "зЁз з›зЈзŸ зЄзЂз•зœз•зЊ зЉзœ з”зЈзЉзžз•зЊ з•зЄзЈзЇз™з" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:15 msgid "Replace list on server with local subscriptions" msgstr "з”з—зœзЃ ззЊ з”зЈзЉз™зžз” зЉзЂзœ з”зЉзЈзЊ з‘з”зЈзЉзžз•зЊ з”зžзЇз•зžз™з•зЊ" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:16 msgid "Device name:" msgstr "зЉз з”з”зЊзЇзŸ:" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:17 msgid "gpodder.net" msgstr "gpodder.net" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:18 msgid "Update interval:" msgstr "зЊз–зžз•зŸ зЂз“з›з•з з™з:" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:19 msgid "Maximum number of episodes per podcast:" msgstr "зžзЁзЄзЈ зžзЈз‘з™ зЉзœ зЄзЈзЇз™з зœзЄз•з“зЇзЁз˜:" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:20 msgid "When new episodes are found:" msgstr "з›зЉз зžзІзз™з зЄзЈзЇз™з з—з“зЉз™з:" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:21 msgid "Updating" msgstr "зЂз“з›з•з з™з" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:22 msgid "Delete played episodes:" msgstr "зžз—зЇ зЄзЈзЇз™з зЉз”з•зЉзžзЂз•:" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:23 msgid "Remove played episodes even if unfinished" msgstr "з”зЁзЈ зЄзЈзЇз™з зЉз з•з’з з• з’з зз зœз з”зЁзЊз™з™зžз•" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:24 msgid "Also remove unplayed episodes" msgstr "з”зЁзЈ з’з зЄзЈзЇз™з зЉзœз з”з•зЉзžзЂз•" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:25 msgid "Clean-up" msgstr "з з™зЇз•з™" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:26 msgid "Device type:" msgstr "зЁз•з’ з”з”зЊзЇзŸ:" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:27 msgid "Mountpoint:" msgstr "з зЇз•з“зЊ зЂз’з™з з”:" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:28 msgid "After syncing an episode:" msgstr "зз—зЈз™ зЁз з›зЈз•зŸ зЄзЈзЇ:" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:29 #, fuzzy msgid "Create playlists on device" msgstr "з”з—зœзЃ ззЊ з”зЈзЉз™зžз” з‘зЉзЈзЊ" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:30 #, fuzzy msgid "Playlists Folder:" msgstr "зЈзЉз™зžзЊ з”з”зЉзžзЂз” зЈз™зЇз”" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:31 msgid "Remove episodes deleted on device from gPodder" msgstr "" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:32 msgid "Only sync unplayed episodes" msgstr "зЁз з›зЈзŸ зЄзЈзЇз™з зЉзœз з”з•зЉзžзЂз• з‘зœз‘з“" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:33 msgid "Devices" msgstr "з”зЊзЇз з™з" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:34 msgid "Edit config" msgstr "зЂзЈз•зš зЊзІз•зЈз”" #: share/gpodder/ui/gtk/gpodder.ui.h:1 msgid "_Podcasts" msgstr "жЙжЙ_зЄз•з“зЇзЁз˜з™з" #: share/gpodder/ui/gtk/gpodder.ui.h:2 msgid "Check for new episodes" msgstr "з‘з“з•зЇ зœзЄзЈзЇз™з з—з“зЉз™з" #: share/gpodder/ui/gtk/gpodder.ui.h:3 msgid "Download new episodes" msgstr "з”з•зЈз“ зЄзЈзЇз™з з—з“зЉз™з" #: share/gpodder/ui/gtk/gpodder.ui.h:7 msgid "_Subscriptions" msgstr "_з”зЈзЉзžз•зЊ" #: share/gpodder/ui/gtk/gpodder.ui.h:8 msgid "Discover new podcasts" msgstr "з’зœз” зЄз•з“зЇзЁз˜з™з з—з“зЉз™з" #: share/gpodder/ui/gtk/gpodder.ui.h:9 msgid "Add podcast via URL" msgstr "з”з•зЁзЃ зЄз•з“зЇзЁз˜ зžз›зЊз•з‘зЊ зз™з з˜зЈз з˜" #: share/gpodder/ui/gtk/gpodder.ui.h:11 msgid "Unsubscribe" msgstr "з‘з˜зœ з”зЈзЉзžз”" #: share/gpodder/ui/gtk/gpodder.ui.h:14 msgid "Import from OPML file" msgstr "з™з™з‘з зžзЇз•з‘зЅ OPML" #: share/gpodder/ui/gtk/gpodder.ui.h:15 msgid "Export to OPML file" msgstr "з™з™зІз зœзЇз•з‘зЅ OPML" #: share/gpodder/ui/gtk/gpodder.ui.h:16 msgid "Go to gpodder.net" msgstr "зœзš ззœ gpodder.net" #: share/gpodder/ui/gtk/gpodder.ui.h:17 msgid "_Episodes" msgstr "зЄ_зЈзЇз™з" #: share/gpodder/ui/gtk/gpodder.ui.h:18 msgid "Play" msgstr "з з’зŸ" #: share/gpodder/ui/gtk/gpodder.ui.h:19 msgid "Open" msgstr "зЄзЊз—" #: share/gpodder/ui/gtk/gpodder.ui.h:22 msgid "Delete" msgstr "зžз—зЇ" #: share/gpodder/ui/gtk/gpodder.ui.h:23 msgid "Toggle new status" msgstr "зЂз‘з•зЈ зœзžзІз‘ з—з“зЉ" #: share/gpodder/ui/gtk/gpodder.ui.h:24 msgid "Change delete lock" msgstr "зЉз з” з зЂз™зœзЊ зžз—з™зЇз”" #: share/gpodder/ui/gtk/gpodder.ui.h:26 msgid "E_xtras" msgstr "зЊ_з•зЁзЄз•зЊ" #: share/gpodder/ui/gtk/gpodder.ui.h:27 msgid "Sync to device" msgstr "зЁз з›зЈзŸ зœз”зЊзЇзŸ" #: share/gpodder/ui/gtk/gpodder.ui.h:28 #, fuzzy msgid "Update YouTube subscriptions" msgstr "зз™зŸ з”зЈзЉзžз•зЊ" #: share/gpodder/ui/gtk/gpodder.ui.h:29 msgid "_View" msgstr "_зЊзІз•з’з”" #: share/gpodder/ui/gtk/gpodder.ui.h:30 msgid "Toolbar" msgstr "зЁзЈз’зœ з›зœз™з" #: share/gpodder/ui/gtk/gpodder.ui.h:31 msgid "Episode descriptions" msgstr "зЊз™зз•зЈ з”зЄзЈзЇ" #: share/gpodder/ui/gtk/gpodder.ui.h:33 msgid "Hide deleted episodes" msgstr "з”зЁзЊзЈ зЄзЈзЇз™з зЉз зžз—зЇз•" #: share/gpodder/ui/gtk/gpodder.ui.h:34 msgid "Downloaded episodes" msgstr "зЄзЈзЇз™з зЉз”з•зЈз“з•" #: share/gpodder/ui/gtk/gpodder.ui.h:35 msgid "Unplayed episodes" msgstr "зЄзЈзЇз™з зЉзœз з”з•зЉзžзЂз•" #: share/gpodder/ui/gtk/gpodder.ui.h:36 msgid "Hide podcasts without episodes" msgstr "з”зЁзЊзЈ зЄз•з“зЇзЁз˜з™з зœзœз зЄзЈзЇз™з" #: share/gpodder/ui/gtk/gpodder.ui.h:37 msgid "_Help" msgstr "_зЂз–зЈз”" #: share/gpodder/ui/gtk/gpodder.ui.h:38 msgid "User manual" msgstr "зžз“зЈз™зš зœзžзЉзЊзžзЉ" #: share/gpodder/ui/gtk/gpodder.ui.h:39 msgid "Software updates" msgstr "зЂз“з›з•з з™ зЊз›з з”" #: share/gpodder/ui/gtk/gpodder.ui.h:40 msgid "Filter:" msgstr "зžзЁз зŸ:" #: share/gpodder/ui/gtk/gpodder.ui.h:41 msgid "Podcasts" msgstr "зЄз•з“зЇзЁз˜з™з" #: share/gpodder/ui/gtk/gpodder.ui.h:42 msgid "Limit rate to" msgstr "з”з’з‘зœзЊ зЇзІз‘" #: share/gpodder/ui/gtk/gpodder.ui.h:43 msgid "KiB/s" msgstr "зЇзДз‘/зЉз з™з™з”" #: share/gpodder/ui/gtk/gpodder.ui.h:44 msgid "Limit downloads to" msgstr "з”з’з‘зœ з”з•зЈз“з•зЊ зœжО" #: share/gpodder/ui/gtk/gpodderwelcome.ui.h:2 msgid "Welcome to gPodder" msgstr "з‘зЈз•зš з”з‘з ззœ gPodder" #: share/gpodder/ui/gtk/gpodderwelcome.ui.h:3 msgid "Your podcast list is empty." msgstr "зЈзЉз™зžзЊ з”зЄз•з“зЇзЁз˜з™з зЉзœзš зЈз™зЇз”." #: share/gpodder/ui/gtk/gpodderwelcome.ui.h:4 msgid "Choose from a list of example podcasts" msgstr "з‘з—зЈ зžзЈзЉз™зžзЊ з”зЄз•з“зЇзЁз˜з™з зœз“з•з’зžз”" #: share/gpodder/ui/gtk/gpodderwelcome.ui.h:5 msgid "Add a podcast by entering its URL" msgstr "з”з•зЁзЃ зЄз•з“зЇзЁз˜ зЂзœжОз™з“з™ з”з–з зЊ з”з›зЊз•з‘зЊ зЉзœз•" #: share/gpodder/ui/gtk/gpodderwelcome.ui.h:6 msgid "Restore my subscriptions from gpodder.net" msgstr "зЉз—з–зЈ ззЊ з”з”зЈзЉзžз•зЊ зЉзœз™ зžжОgpodder.net" #: bin/gpo:266 msgid "Podcast update requested by extensions." msgstr "з”зЈз—з‘з•зЊ зžз‘зЇзЉз•зЊ зœзЂз“з›зŸ зЄз•з“зЇзЁз˜." #: bin/gpo:270 msgid "Episode download requested by extensions." msgstr "з”зЈз—з‘з•зЊ зžз‘зЇзЉз•зЊ зœз”з•зЈз™з“ зЄзЈзЇ." #: bin/gpo:323 #, fuzzy, python-format msgid "Invalid url: %s" msgstr "з›зЊз•з‘зЊ зз™з з˜зЈз з˜ зœз зЊзЇз™з з”: %s" #: bin/gpo:340 bin/gpo:416 bin/gpo:450 bin/gpo:582 bin/gpo:597 bin/gpo:717 #, python-format msgid "You are not subscribed to %s." msgstr "зз™з зš зЈзЉз•з зœжЙжО%s." #: bin/gpo:346 #, fuzzy, python-format msgid "Already subscribed to %s." msgstr "зœз з з™зЊзŸ зœз”з™зЈзЉз зœжО%s." #: bin/gpo:352 #, python-format msgid "Cannot subscribe to %s." msgstr "зœз з з™зЊзŸ зœз”з™зЈзЉз зœжО%s." #: bin/gpo:368 #, python-format msgid "Successfully added %s." msgstr "%s з з•зЁзЃ з‘з”зІзœз—з”." #: bin/gpo:386 msgid "This configuration option does not exist." msgstr "ззЄзЉзЈз•зЊ зЊзІз•зЈз” з–з• зз™з з” зЇз™з™зžзЊ." #: bin/gpo:390 msgid "Can only set leaf configuration nodes." msgstr "з з™зЊзŸ зœз”з’з“з™зЈ зЈзЇ зЂзœ зЉзœ зІз•зžзЊз™ зЊзІз•зЈз”." #: bin/gpo:404 #, python-format msgid "Renamed %(old_title)s to %(new_title)s." msgstr "з”зЉз зЉз•з з” зžжО%(old_title)s зœжО%(new_title)s." #: bin/gpo:420 #, python-format msgid "Unsubscribed from %s." msgstr "з”з”зЈзЉзžз” зœжО%s з‘з•з˜зœз”." #: bin/gpo:494 msgid "Updates disabled" msgstr "зЂз“з›з•з з™з зžз з•з˜зЈзœз™з" #: bin/gpo:505 #, python-format msgid "%(count)d new episode" msgid_plural "%(count)d new episodes" msgstr[0] "зЄзЈзЇ з—з“зЉ зз—з“" msgstr[1] "%(count)d зЄзЈзЇз™з з—з“зЉз™з" #: bin/gpo:511 msgid "Checking for new episodes" msgstr "з‘з•з“зЇ зœзЄзЈзЇз™з з—з“зЉз™з" #: bin/gpo:520 #, python-format msgid "Skipping %(podcast)s" msgstr "зžз“зœз’ зЂзœ %(podcast)s" #: bin/gpo:588 #, python-format msgid "Disabling feed update from %s." msgstr "зžз з˜зЈзœ зЂз“з›з•з з™ з”з–з з” зžжО%s." #: bin/gpo:603 #, python-format msgid "Enabling feed update from %s." msgstr "зžззЄзЉзЈ зЂз“з›з•з з™ з”з–з з” зžжО%s." #: bin/gpo:616 #, python-format msgid "Please register a YouTube API key and set it using %(command)s." msgstr "" #: bin/gpo:643 #, fuzzy, python-format msgid "Changing: %(old_url)s => %(new_url)s" msgstr "з”з›зЊз•з‘зЊ зЉз•з зЊз” зžжО%(old_url)s зœжО%(new_url)s." #: bin/gpo:653 #, fuzzy msgid "Nothing to fix" msgstr "зз™зŸ з›зœз•з зœз™з™зІз•з" #: bin/gpo:672 msgid "No podcasts found." msgstr "зœз з зžзІзз• зЄз•з“зЇзЁз˜з™з." #: bin/gpo:686 msgid "Enter index to subscribe, ? for list" msgstr "з”з–зŸ ззЊ з”зз™з з“зЇзЁ зœз”зЈзЉзžз”, ? з‘зЉз‘з™зœ зЈзЉз™зžз”" #: bin/gpo:700 bin/gpo:704 msgid "Invalid value." msgstr "зЂзЈзš зœз з—з•зЇз™." #: bin/gpo:721 #, python-format msgid "Invalid URL: %s" msgstr "з›зЊз•з‘зЊ зз™з з˜зЈз з˜ зœз зЊзЇз™з з”: %s" #: bin/gpo:724 #, python-format msgid "Changed URL from %(old_url)s to %(new_url)s." msgstr "з”з›зЊз•з‘зЊ зЉз•з зЊз” зžжО%(old_url)s зœжО%(new_url)s." #: bin/gpo:782 #, python-format msgid "Syntax error: %(error)s" msgstr "зЉз’з™ззЊ зЊз—з‘з™зЈ: %(error)s" #: bin/gpo:876 #, fuzzy msgid "Ambiguous command. Did you mean.." msgstr "зЄзЇз•з“з” з“з•жОзžзЉзžзЂз™зЊ. з”зз з”зЊз›з•з•з зЊ зœззœз”.." #: bin/gpo:880 msgid "The requested function is not available." msgstr "з”зЄз•з зЇзІз™з” з”зžз‘з•зЇзЉзЊ зз™з з” з–зžз™з з”." #: bin/gpodder:105 #, fuzzy msgid "print logging output on the console" msgstr "Print debugging output to stdout" #: bin/gpodder:108 #, fuzzy msgid "subscribe to the feed at URL" msgstr "з”з™зЈзЉз зœз›зЊз•з‘зЊ зЉз з™зЊз з”" #: bin/gpodder:113 msgid "Mac OS X application process number" msgstr "зžзЁзЄзЈ зЊз”зœз™зš зЉзœ з™з™зЉз•з Mac OS X" #: share/applications/gpodder.desktop.in.h:2 msgid "gPodder Podcast Client" msgstr "зœзЇз•з— з”зЄз•з“зЇзЁз˜з™з gPodder" #: share/applications/gpodder.desktop.in.h:3 msgid "Podcast Client" msgstr "зœзЇз•з— зЄз•з“зЇзЁз˜з™з" #: share/applications/gpodder.desktop.in.h:4 msgid "Subscribe to audio and video content from the web" msgstr "з”зЈзЉз зœзЊз•з›зŸ зЉзœ зЉзžзЂ з•з•з™з“зз• зžз”зЈзЉзЊ" #: share/applications/gpodder-url-handler.desktop.in.h:1 #, fuzzy msgid "gPodder (subscribe to feed)" msgstr "з”з™зЈзЉз зœз›зЊз•з‘зЊ зЉз з™зЊз з”" gpodder-3.9.0/po/sv.po0000644000016000001710000016433412654461626015716 0ustar jenkinsjenkins00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # # Translators: # Daniel Sandman , 2012. # Peter Hultqvist , 2011. # , 2012. # Thomas Perl , 2006. msgid "" msgstr "" "Project-Id-Version: gPodder\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2016-02-03 20:31+0000\n" "PO-Revision-Date: 2013-01-19 12:30+0000\n" "Last-Translator: Thomas Perl \n" "Language-Team: Swedish (http://www.transifex.com/projects/p/gpodder/language/" "sv/)\n" "Language: sv\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" #: src/gpodder/config.py:55 #, python-format msgid "gPodder on %s" msgstr "gPodder pУЅ %s" #: src/gpodder/directory.py:95 #, fuzzy msgid "gpodder.net search" msgstr "gpodder.net" #: src/gpodder/directory.py:104 #, fuzzy msgid "OPML from web" msgstr "OPML filer" #: src/gpodder/directory.py:113 #, fuzzy msgid "OPML file" msgstr "OPML filer" #: src/gpodder/directory.py:122 share/gpodder/ui/gtk/gpodderwelcome.ui.h:1 #, fuzzy msgid "Getting started" msgstr "InstУЄllningar" #: src/gpodder/directory.py:131 #, fuzzy msgid "gpodder.net Top 50" msgstr "gpodder.net" #: src/gpodder/directory.py:140 #, fuzzy msgid "gpodder.net Tags" msgstr "gpodder.net" #: src/gpodder/directory.py:152 #, fuzzy msgid "Soundcloud search" msgstr "%s i Soundcloud" #: src/gpodder/directory.py:165 #, fuzzy msgid "Imported OPML file" msgstr "Importera frУЅn OPML fil" #: src/gpodder/download.py:329 msgid "Wrong username/password" msgstr "Fel anvУЄndarnamn/lУЖsenord." #: src/gpodder/download.py:527 src/gpodder/sync.py:924 msgid "Added" msgstr "Tillagt" #: src/gpodder/download.py:527 src/gpodder/sync.py:924 msgid "Queued" msgstr "KУЖad" #: src/gpodder/download.py:527 src/gpodder/gtkui/model.py:327 msgid "Downloading" msgstr "Laddar ner" #: src/gpodder/download.py:528 src/gpodder/model.py:721 #: src/gpodder/sync.py:925 msgid "Finished" msgstr "Klar" #: src/gpodder/download.py:528 src/gpodder/sync.py:925 msgid "Failed" msgstr "Misslyckad" #: src/gpodder/download.py:528 src/gpodder/sync.py:925 msgid "Cancelled" msgstr "Avbruten" #: src/gpodder/download.py:528 src/gpodder/sync.py:925 msgid "Paused" msgstr "Pausad" #: src/gpodder/download.py:862 msgid "Missing content from server" msgstr "InnehУЅll frУЅn server saknas" #: src/gpodder/download.py:868 #, python-format msgid "I/O Error: %(error)s: %(filename)s" msgstr "I/O Fel: %(error)s: %(filename)s" #: src/gpodder/download.py:875 #, python-format msgid "HTTP Error %(code)s: %(message)s" msgstr "HTTP Fel: %(code)s: %(message)s" #: src/gpodder/download.py:879 src/gpodder/sync.py:1081 #, python-format msgid "Error: %s" msgstr "Fel: %s" #: src/gpodder/extensions.py:55 #, fuzzy msgid "Desktop Integration" msgstr "Ubuntu Unity-integration" #: src/gpodder/extensions.py:56 #, fuzzy msgid "Interface" msgstr "Heltal" #: src/gpodder/extensions.py:57 #, fuzzy msgid "Post download" msgstr "Pausa nedladdning" #: src/gpodder/extensions.py:59 src/gpodder/model.py:779 #: src/gpodder/model.py:1225 msgid "Other" msgstr "Annan" #: src/gpodder/extensions.py:100 msgid "No description for this extension." msgstr "Saknas beskrivning fУЖr den hУЄr extensionen" #: src/gpodder/extensions.py:212 #, fuzzy, python-format msgid "Command not found: %(command)s" msgstr "AnvУЄdar kommando finns inte" #: src/gpodder/extensions.py:228 #, python-format msgid "Need at least one of the following commands: %(list_of_commands)s" msgstr "" #: src/gpodder/extensions.py:265 #, fuzzy, python-format msgid "Python module not found: %(module)s" msgstr "Python modul \"%s\" ej installerad" #: src/gpodder/model.py:446 src/gpodder/plugins/soundcloud.py:156 msgid "No description available" msgstr "Ingen beskrivning tillgУЄnglig" #: src/gpodder/model.py:679 msgid "unknown" msgstr "okУЄnt" #: src/gpodder/model.py:746 msgid "Default" msgstr "" #: src/gpodder/model.py:747 msgid "Only keep latest" msgstr "" #: src/gpodder/model.py:1208 src/gpodder/model.py:1223 #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:10 msgid "Video" msgstr "Video" #: src/gpodder/model.py:1221 msgid "Audio" msgstr "Ljud" #: src/gpodder/my.py:174 #, python-format msgid "Add %s" msgstr "LУЄgg till %s" #: src/gpodder/my.py:176 #, python-format msgid "Remove %s" msgstr "Radera %s" #: src/gpodder/sync.py:196 msgid "Cancelled by user" msgstr "Avbruten av anvУЄndare" #: src/gpodder/sync.py:199 msgid "Writing data to disk" msgstr "Skriver data till hУЅrddisk" #: src/gpodder/sync.py:295 msgid "Opening iPod database" msgstr "У–ppnar iPod databas" #: src/gpodder/sync.py:305 msgid "iPod opened" msgstr "iPod УЖppnad" #: src/gpodder/sync.py:316 msgid "Saving iPod database" msgstr "Sparar iPod databas" #: src/gpodder/sync.py:321 msgid "Writing extended gtkpod database" msgstr "Skriver utУЖkad gtkpod databas" #: src/gpodder/sync.py:397 src/gpodder/sync.py:680 src/gpodder/sync.py:874 #, python-format msgid "Removing %s" msgstr "Raderar %s" #: src/gpodder/sync.py:412 src/gpodder/sync.py:557 #, python-format msgid "Adding %s" msgstr "LУЄgger till %s" #: src/gpodder/sync.py:430 #, python-format msgid "Error copying %(episode)s: Not enough free space on %(mountpoint)s" msgstr "" "Fel vid kopiering av %(episode)s: Inte tillrУЄckligt med ledigt diskutrymme " "pУЅ %(mountpoint)s" #: src/gpodder/sync.py:515 msgid "Opening MP3 player" msgstr "У–ppna MP3 spelare" #: src/gpodder/sync.py:518 msgid "MP3 player opened" msgstr "MP3 spelare УЖppnad" #: src/gpodder/sync.py:576 #, python-format msgid "" "Not enough space in %(path)s: %(free)s available, but need at least %(need)s" msgstr "" #: src/gpodder/sync.py:603 src/gpodder/sync.py:611 #, python-format msgid "Error opening %(filename)s: %(message)s" msgstr "Fel vid УЖppnande av %(filename)s: %(message)s" #: src/gpodder/sync.py:780 src/gpodder/sync.py:786 msgid "MTP device" msgstr "MTP enhet" #: src/gpodder/sync.py:793 msgid "Opening the MTP device" msgstr "У–ppnar MTP enheten" #: src/gpodder/sync.py:803 #, python-format msgid "%s opened" msgstr "%s УЖppnad" #: src/gpodder/sync.py:808 #, python-format msgid "Closing %s" msgstr "StУЄnger %s" #: src/gpodder/sync.py:816 #, python-format msgid "%s closed" msgstr "%s stУЄngd" #: src/gpodder/sync.py:821 bin/gpo:708 #, python-format msgid "Adding %s..." msgstr "LУЄgger till %s..." #: src/gpodder/sync.py:924 #, fuzzy msgid "Synchronizing" msgstr "Synkronisering" #: src/gpodder/util.py:429 #, python-format msgid "%(count)d day ago" msgid_plural "%(count)d days ago" msgstr[0] "%(count)d dag sedan" msgstr[1] "%(count)d dagar sedan" #: src/gpodder/util.py:508 msgid "Today" msgstr "Idag" #: src/gpodder/util.py:510 msgid "Yesterday" msgstr "IgУЅr" #: src/gpodder/util.py:553 src/gpodder/util.py:556 msgid "(unknown)" msgstr "(okУЄnt)" #: src/gpodder/util.py:1193 src/gpodder/util.py:1212 #, python-format msgid "%(count)d second" msgid_plural "%(count)d seconds" msgstr[0] "%(count)d sekund" msgstr[1] "%(count)d sekunder" #: src/gpodder/util.py:1206 #, python-format msgid "%(count)d hour" msgid_plural "%(count)d hours" msgstr[0] "%(count)d timme" msgstr[1] "%(count)d timmar" #: src/gpodder/util.py:1209 #, python-format msgid "%(count)d minute" msgid_plural "%(count)d minutes" msgstr[0] "%(count)d minut" msgstr[1] "%(count)d minuter" #: src/gpodder/util.py:1215 msgid "and" msgstr "och" #: src/gpodder/gtkui/config.py:50 msgid "Integer" msgstr "Heltal" #: src/gpodder/gtkui/config.py:52 msgid "Float" msgstr "Flyttal" #: src/gpodder/gtkui/config.py:54 msgid "Boolean" msgstr "Boolean" #: src/gpodder/gtkui/config.py:56 msgid "String" msgstr "StrУЄng" #: src/gpodder/gtkui/desktopfile.py:70 #, python-format msgid "Command: %s" msgstr "Kommando: %s" #: src/gpodder/gtkui/desktopfile.py:150 msgid "Default application" msgstr "FУЖrvald applikation" #: src/gpodder/gtkui/main.py:205 share/applications/gpodder.desktop.in.h:1 msgid "gPodder" msgstr "gPodder" #: src/gpodder/gtkui/main.py:288 msgid "Loading incomplete downloads" msgstr "Laddar inkompletta nedladdningar" #: src/gpodder/gtkui/main.py:289 msgid "Some episodes have not finished downloading in a previous session." msgstr "Nedladdningen av nУЅgra avsnitt avslutades inte under fУЖrra sessionen" #: src/gpodder/gtkui/main.py:291 #, python-format msgid "%(count)d partial file" msgid_plural "%(count)d partial files" msgstr[0] "%(count)d partiell fil" msgstr[1] "%(count)d partiella filer" #: src/gpodder/gtkui/main.py:306 msgid "Resume all" msgstr "У…teruppta alla" #: src/gpodder/gtkui/main.py:316 msgid "Incomplete downloads from a previous session were found." msgstr "OfullstУЄndiga nedladdningar frУЅn fУЖrra sessionen upptУЄcktes." #: src/gpodder/gtkui/main.py:414 msgid "Action" msgstr "HУЄndelse" #: src/gpodder/gtkui/main.py:461 msgid "Confirm changes from gpodder.net" msgstr "BekrУЄfta УЄndringar frУЅn gpodder.net" #: src/gpodder/gtkui/main.py:462 msgid "Select the actions you want to carry out." msgstr "VУЄlj de hУЄndelser du vill ska ske." #: src/gpodder/gtkui/main.py:502 msgid "Uploading subscriptions" msgstr "Laddar upp prenumerationer" #: src/gpodder/gtkui/main.py:503 msgid "Your subscriptions are being uploaded to the server." msgstr "Dina prenumerationer laddas upp till servern." #: src/gpodder/gtkui/main.py:508 msgid "List uploaded successfully." msgstr "Lista uppladdad." #: src/gpodder/gtkui/main.py:515 msgid "Error while uploading" msgstr "Fel under uppladdning" #: src/gpodder/gtkui/main.py:800 src/gpodder/gtkui/main.py:928 #: src/gpodder/gtkui/main.py:2622 src/gpodder/gtkui/main.py:2815 #: src/gpodder/gtkui/desktop/episodeselector.py:132 #: src/gpodder/gtkui/desktop/sync.py:270 msgid "Episode" msgstr "Avsnitt" #: src/gpodder/gtkui/main.py:819 msgid "Size" msgstr "Storlek" #: src/gpodder/gtkui/main.py:824 msgid "Duration" msgstr "varaktighet" #: src/gpodder/gtkui/main.py:828 msgid "Released" msgstr "Datum" #: src/gpodder/gtkui/main.py:855 msgid "Visible columns" msgstr "Synliga kolumner" #: src/gpodder/gtkui/main.py:948 src/gpodder/gtkui/main.py:1108 #: share/gpodder/ui/gtk/gpodder.ui.h:45 msgid "Progress" msgstr "FУЖrlopp" #: src/gpodder/gtkui/main.py:982 msgid "Loading episodes" msgstr "Laddar avsnitt" #: src/gpodder/gtkui/main.py:985 msgid "No episodes in current view" msgstr "Inga avsnitt i denna vy" #: src/gpodder/gtkui/main.py:987 msgid "No episodes available" msgstr "Inga avsnitt tillgУЄngliga" #: src/gpodder/gtkui/main.py:993 msgid "No podcasts in this view" msgstr "Inga poddsУЄndningar i denna vy" #: src/gpodder/gtkui/main.py:995 msgid "No subscriptions" msgstr "Inga prenumerationer" #: src/gpodder/gtkui/main.py:997 #, fuzzy msgid "No active tasks" msgstr "Inga aktiva nedladdningar" #: src/gpodder/gtkui/main.py:1112 src/gpodder/gtkui/main.py:1114 #, python-format msgid "%(count)d active" msgid_plural "%(count)d active" msgstr[0] "%(count)d aktiv" msgstr[1] "%(count)d aktiva" #: src/gpodder/gtkui/main.py:1116 #, python-format msgid "%(count)d failed" msgid_plural "%(count)d failed" msgstr[0] "%(count)d misslyckad" msgstr[1] "%(count)d misslyckade" #: src/gpodder/gtkui/main.py:1118 #, python-format msgid "%(count)d queued" msgid_plural "%(count)d queued" msgstr[0] "%(count)d kУЖlagd" msgstr[1] "%(count)d kУЖlagda" #: src/gpodder/gtkui/main.py:1132 #, python-format msgid "downloading %(count)d file" msgid_plural "downloading %(count)d files" msgstr[0] "laddar ner %(count)d fil" msgstr[1] "laddar ner %(count)d filer" #: src/gpodder/gtkui/main.py:1142 #, python-format msgid "synchronizing %(count)d file" msgid_plural "synchronizing %(count)d files" msgstr[0] "" msgstr[1] "" #: src/gpodder/gtkui/main.py:1144 #, python-format msgid "%(queued)d task queued" msgid_plural "%(queued)d tasks queued" msgstr[0] "" msgstr[1] "" #: src/gpodder/gtkui/main.py:1168 msgid "Please report this problem and restart gPodder:" msgstr "Var vУЄnlig rapportera detta problemet och starta om gPodder:" #: src/gpodder/gtkui/main.py:1168 msgid "Unhandled exception" msgstr "Ej hanterat undantag" #: src/gpodder/gtkui/main.py:1235 #, python-format msgid "Feedparser error: %s" msgstr "Fel vid tolkning av kanal: %s" #: src/gpodder/gtkui/main.py:1371 #, fuzzy msgid "Could not download some episodes:" msgstr "Kunde inte lУЄgga till nУЅgra av poddsУЄndningarna" #: src/gpodder/gtkui/main.py:1373 src/gpodder/gtkui/main.py:1376 msgid "Downloads finished" msgstr "Nedladdningar fУЄrdiga" #: src/gpodder/gtkui/main.py:1379 msgid "Downloads failed" msgstr "Nedladdningar misslyckades" #: src/gpodder/gtkui/main.py:1383 #, fuzzy msgid "Could not sync some episodes:" msgstr "Kunde inte lУЄgga till nУЅgra av poddsУЄndningarna" #: src/gpodder/gtkui/main.py:1385 src/gpodder/gtkui/main.py:1388 #, fuzzy msgid "Device synchronization finished" msgstr "Synkronisering klar." #: src/gpodder/gtkui/main.py:1391 #, fuzzy msgid "Device synchronization failed" msgstr "Enheten synkroniserad" #: src/gpodder/gtkui/main.py:1434 #, python-format msgid "%(count)d more episode" msgid_plural "%(count)d more episodes" msgstr[0] "%(count)d till avsnitt" msgstr[1] "%(count)d fler avsnitt" #: src/gpodder/gtkui/main.py:1508 msgid "Start download now" msgstr "Starta nedladdning nu" #: src/gpodder/gtkui/main.py:1510 src/gpodder/gtkui/main.py:1719 #: src/gpodder/gtkui/desktop/episodeselector.py:144 #: share/gpodder/ui/gtk/gpodder.ui.h:20 msgid "Download" msgstr "Ladda ner" #: src/gpodder/gtkui/main.py:1511 share/gpodder/ui/gtk/gpodder.ui.h:21 msgid "Cancel" msgstr "A_vbryt" #: src/gpodder/gtkui/main.py:1512 msgid "Pause" msgstr "Pausa" #: src/gpodder/gtkui/main.py:1514 msgid "Remove from list" msgstr "Radera frУЅn lista" #: src/gpodder/gtkui/main.py:1553 share/gpodder/ui/gtk/gpodder.ui.h:13 msgid "Update podcast" msgstr "Uppdatera poddsУЄndningar" #: src/gpodder/gtkui/main.py:1560 msgid "Open download folder" msgstr "У–ppna katalog fУЖr nedladdningar" #: src/gpodder/gtkui/main.py:1566 msgid "Mark episodes as old" msgstr "Markera avsnitt som spelat" #: src/gpodder/gtkui/main.py:1570 src/gpodder/gtkui/main.py:1778 msgid "Archive" msgstr "Arkiv" #: src/gpodder/gtkui/main.py:1575 msgid "Remove podcast" msgstr "Radera poddsУЄndning" #: src/gpodder/gtkui/main.py:1590 share/gpodder/ui/gtk/gpodder.ui.h:10 msgid "Podcast settings" msgstr "InstУЄllningar fУЖr PoddsУЄndare" #: src/gpodder/gtkui/main.py:1650 msgid "Error converting file." msgstr "Fel vid konvertering av fil." #: src/gpodder/gtkui/main.py:1650 msgid "Bluetooth file transfer" msgstr "Bluetooth filУЖverfУЖring" #: src/gpodder/gtkui/main.py:1709 msgid "Preview" msgstr "FУЖrhandsgranska" #: src/gpodder/gtkui/main.py:1711 msgid "Stream" msgstr "StrУЖm" #: src/gpodder/gtkui/main.py:1755 msgid "Send to" msgstr "Skicka till" #: src/gpodder/gtkui/main.py:1757 msgid "Local folder" msgstr "Lokal mapp" #: src/gpodder/gtkui/main.py:1762 msgid "Bluetooth device" msgstr "Bluetooth enhet" #: src/gpodder/gtkui/main.py:1769 msgid "New" msgstr "Ny" #: src/gpodder/gtkui/main.py:1785 share/gpodder/ui/gtk/gpodder.ui.h:25 msgid "Episode details" msgstr "Detaljer om avsnittet" #: src/gpodder/gtkui/main.py:1938 msgid "Please check your media player settings in the preferences dialog." msgstr "Var vУЄnlig kontrollera spelarens konfiguration under instУЄllningar." #: src/gpodder/gtkui/main.py:1939 msgid "Error opening player" msgstr "Fel vid УЖppnande av spelare" #: src/gpodder/gtkui/main.py:2178 msgid "Adding podcasts" msgstr "LУЄgger till poddsУЄndning" #: src/gpodder/gtkui/main.py:2179 msgid "Please wait while episode information is downloaded." msgstr "Var vУЄnlig vУЄnta medan avsnittets information laddas ned." #: src/gpodder/gtkui/main.py:2186 msgid "Existing subscriptions skipped" msgstr "Hoppar УЖver existerade prenumerationer" #: src/gpodder/gtkui/main.py:2187 msgid "You are already subscribed to these podcasts:" msgstr "Du prenumererar redan pУЅ dessa poddsУЄndningar:" #: src/gpodder/gtkui/main.py:2195 msgid "Podcast requires authentication" msgstr "PoddsУЄndningen krУЄver inloggning" #: src/gpodder/gtkui/main.py:2196 #, python-format msgid "Please login to %s:" msgstr "Logga in till %s:" #: src/gpodder/gtkui/main.py:2204 src/gpodder/gtkui/main.py:2299 msgid "Authentication failed" msgstr "Inloggning misslyckades" #: src/gpodder/gtkui/main.py:2210 msgid "Website redirection detected" msgstr "UpptУЄckte omdirigering av webbsidan " #: src/gpodder/gtkui/main.py:2211 #, python-format msgid "The URL %(url)s redirects to %(target)s." msgstr "Webbadressen %(url)s omdirigeras till %(target)s." #: src/gpodder/gtkui/main.py:2212 msgid "Do you want to visit the website now?" msgstr "Vill du besУЖka webbsidan nu ?" #: src/gpodder/gtkui/main.py:2221 msgid "Could not add some podcasts" msgstr "Kunde inte lУЄgga till nУЅgra av poddsУЄndningarna" #: src/gpodder/gtkui/main.py:2222 msgid "Some podcasts could not be added to your list:" msgstr "NУЅgra av poddsУЄndningarna kunde inte lУЄggas till din lista:" #: src/gpodder/gtkui/main.py:2224 msgid "Unknown" msgstr "OkУЄnd" #: src/gpodder/gtkui/main.py:2308 msgid "Redirection detected" msgstr "Omdirigering upptУЄcktes" #: src/gpodder/gtkui/main.py:2342 msgid "Merging episode actions" msgstr "Sammanfogar aktiviteter fУЖr avsnitt" #: src/gpodder/gtkui/main.py:2343 msgid "Episode actions from gpodder.net are merged." msgstr "Avsnittsaktiviteter frУЅn gpodder.net УЄr nu sammanfogade." #: src/gpodder/gtkui/main.py:2368 msgid "Cancelling..." msgstr "Avbryter..." #: src/gpodder/gtkui/main.py:2377 msgid "Please connect to a network, then try again." msgstr "" #: src/gpodder/gtkui/main.py:2378 #, fuzzy msgid "No network connection" msgstr "Nytt namn:" #: src/gpodder/gtkui/main.py:2399 #, python-format msgid "Updating %(count)d feed..." msgid_plural "Updating %(count)d feeds..." msgstr[0] "Uppdaterar %(count)d flУЖde..." msgstr[1] "Uppdaterar %(count)d flУЖden..." #: src/gpodder/gtkui/main.py:2417 #, python-format msgid "Error while updating %(url)s: %(message)s" msgstr "Fel vid uppdatering av %(url)s: %(message)s" #: src/gpodder/gtkui/main.py:2419 #, python-format msgid "The feed at %(url)s could not be updated." msgstr "Kanalen pУЅ %(url)s kunde inte uppdateras." #: src/gpodder/gtkui/main.py:2420 msgid "Error while updating feed" msgstr "Fel vid uppdatering av kanal" #: src/gpodder/gtkui/main.py:2435 #, python-format msgid "Updated %(podcast)s (%(position)d/%(total)d)" msgstr "Uppdaterad %(podcast)s (%(position)d/%(total)d)" #: src/gpodder/gtkui/main.py:2466 msgid "No new episodes" msgstr "Inga nya avsnitt" #: src/gpodder/gtkui/main.py:2479 #, python-format msgid "Downloading %(count)d new episode." msgid_plural "Downloading %(count)d new episodes." msgstr[0] "Laddar ner %(count)d nytt avsnitt." msgstr[1] "Laddar ner %(count)d nya avsnitt." #: src/gpodder/gtkui/main.py:2480 src/gpodder/gtkui/main.py:2484 #: src/gpodder/gtkui/main.py:2833 msgid "New episodes available" msgstr "Nya avsnitt finns tillgУЄngliga" #: src/gpodder/gtkui/main.py:2483 #, python-format msgid "%(count)d new episode added to download list." msgid_plural "%(count)d new episodes added to download list." msgstr[0] "%(count)d nytt avsnitt tillagt till nerladdningslistan." msgstr[1] "%(count)d nya avsnitt tillagda till nerladdningslistan." #: src/gpodder/gtkui/main.py:2490 #, python-format msgid "%(count)d new episode available" msgid_plural "%(count)d new episodes available" msgstr[0] "%(count)d nytt avsnitt tillgУЄngligt" msgstr[1] "%(count)d nya avsnitt tillgУЄngliga" #: src/gpodder/gtkui/main.py:2509 msgid "Quit gPodder" msgstr "Avsluta gPodder" #: src/gpodder/gtkui/main.py:2510 msgid "" "You are downloading episodes. You can resume downloads the next time you " "start gPodder. Do you want to quit now?" msgstr "" "Just nu laddar du ner avsnitt. Du kan УЅteruppta nerladdningen nУЄsta gУЅng du " "startar gPodder. Vill du avsluta nu?" #: src/gpodder/gtkui/main.py:2559 msgid "Episodes are locked" msgstr "Avsnitten УЄr lУЅsta" #: src/gpodder/gtkui/main.py:2560 msgid "" "The selected episodes are locked. Please unlock the episodes that you want " "to delete before trying to delete them." msgstr "" "De valda avsnitten УЄr lУЅsta. Var vУЄnlig lУЅs upp de avsnitt du УЖnskar radera " "innan du fУЖrsУЖker radera dem." #: src/gpodder/gtkui/main.py:2565 #, python-format msgid "Delete %(count)d episode?" msgid_plural "Delete %(count)d episodes?" msgstr[0] "Ta bort %(count)d avsnitt?" msgstr[1] "Ta bort %(count)d avsnitt?" #: src/gpodder/gtkui/main.py:2566 msgid "Deleting episodes removes downloaded files." msgstr "Borttagning av avsnitt tar УЄven bort nedladdade filer." #: src/gpodder/gtkui/main.py:2571 msgid "Deleting episodes" msgstr "Raderar avsnitt" #: src/gpodder/gtkui/main.py:2572 msgid "Please wait while episodes are deleted" msgstr "Var vУЄnlig vУЄnta medan avsnitten raderas" #: src/gpodder/gtkui/main.py:2625 #, python-format msgid "Select older than %(count)d day" msgid_plural "Select older than %(count)d days" msgstr[0] "Markera УЄldre УЄn %(count)d dag" msgstr[1] "Markera УЄldre УЄn %(count)d dagar" #: src/gpodder/gtkui/main.py:2627 msgid "Select played" msgstr "VУЄlj spelade" #: src/gpodder/gtkui/main.py:2628 msgid "Select finished" msgstr "Markera avslutade" #: src/gpodder/gtkui/main.py:2632 msgid "Select the episodes you want to delete:" msgstr "VУЄlj de avsnitt du УЖnskar radera:" #: src/gpodder/gtkui/main.py:2648 share/gpodder/ui/gtk/gpodder.ui.h:4 msgid "Delete episodes" msgstr "Radera avsnitt" #: src/gpodder/gtkui/main.py:2703 src/gpodder/gtkui/main.py:2934 #: src/gpodder/gtkui/main.py:3034 msgid "No podcast selected" msgstr "Ingen poddsУЄndning vald" #: src/gpodder/gtkui/main.py:2704 msgid "Please select a podcast in the podcasts list to update." msgstr "Var vУЄnlig vУЄlj en poddsУЄndning i poddsУЄndarlistan fУЖr att uppdatera." #: src/gpodder/gtkui/main.py:2774 #, python-format msgid "Download error while downloading %(episode)s: %(message)s" msgstr "Nedladdningsfel vid hУЄmtning av %(episode)s: %(message)s" #: src/gpodder/gtkui/main.py:2775 msgid "Download error" msgstr "Nedladdningsfel" #: src/gpodder/gtkui/main.py:2818 msgid "Select the episodes you want to download:" msgstr "VУЄlj de avsnitt du УЖnskar ladda ned:" #: src/gpodder/gtkui/main.py:2841 msgid "Mark as old" msgstr "Markera som gammal" #: src/gpodder/gtkui/main.py:2848 msgid "Please check for new episodes later." msgstr "Var vУЄnlig sУЖk senare efter nya avsnitt." #: src/gpodder/gtkui/main.py:2849 msgid "No new episodes available" msgstr "Inga nya avsnitt tillgУЄngliga" #: src/gpodder/gtkui/main.py:2900 msgid "Login to gpodder.net" msgstr "Logga in till gpodder.net" #: src/gpodder/gtkui/main.py:2901 msgid "Please login to download your subscriptions." msgstr "VУЄnligen logga in fУЖr att hУЄmta dina prenumerationer." #: src/gpodder/gtkui/main.py:2916 msgid "Subscriptions on gpodder.net" msgstr "Prenumerationer pУЅ gpodder.net" #: src/gpodder/gtkui/main.py:2935 msgid "Please select a podcast in the podcasts list to edit." msgstr "Var vУЄnlig vУЄlj en poddsУЄndning i listan att redigera." #: src/gpodder/gtkui/main.py:2949 msgid "Podcast" msgstr "PoddsУЄndning" #: src/gpodder/gtkui/main.py:2955 share/gpodder/ui/gtk/gpodder.ui.h:12 msgid "Remove podcasts" msgstr "Radera poddsУЄndning" #: src/gpodder/gtkui/main.py:2956 msgid "Select the podcast you want to remove." msgstr "VУЄlj de avsnitt du УЖnskar radera." #: src/gpodder/gtkui/main.py:2960 #: src/gpodder/gtkui/desktop/episodeselector.py:105 msgid "Remove" msgstr "Radera" #: src/gpodder/gtkui/main.py:2969 msgid "Removing podcast" msgstr "Raderar poddsУЄndning" #: src/gpodder/gtkui/main.py:2970 msgid "Please wait while the podcast is removed" msgstr "VУЄnligen vУЄnta medan poddsУЄndningen raderas" #: src/gpodder/gtkui/main.py:2971 msgid "Do you really want to remove this podcast and its episodes?" msgstr "" "Vill du verkligen radera denna poddsУЄndning och alla nedladdade avsnitt?" #: src/gpodder/gtkui/main.py:2973 msgid "Removing podcasts" msgstr "Raderar poddsУЄndning" #: src/gpodder/gtkui/main.py:2974 msgid "Please wait while the podcasts are removed" msgstr "VУЄnligen vУЄnta medan poddsУЄndningarna raderas" #: src/gpodder/gtkui/main.py:2975 msgid "Do you really want to remove the selected podcasts and their episodes?" msgstr "" "Vill du verkligen radera dessa poddsУЄndningar och alla nedladdade avsnitt?" #: src/gpodder/gtkui/main.py:3035 msgid "Please select a podcast in the podcasts list to remove." msgstr "Var vУЄnlig vУЄlj en poddsУЄndning att radera i poddsУЄndarlistan" #: src/gpodder/gtkui/main.py:3045 msgid "OPML files" msgstr "OPML filer" #: src/gpodder/gtkui/main.py:3050 msgid "Import from OPML" msgstr "Inportera frУЅn OPML" #: src/gpodder/gtkui/main.py:3064 msgid "Import podcasts from OPML file" msgstr "Importera poddsУЄndningar frУЅn en OPML fil" #: src/gpodder/gtkui/main.py:3071 msgid "Nothing to export" msgstr "Inget att exportera" #: src/gpodder/gtkui/main.py:3072 msgid "" "Your list of podcast subscriptions is empty. Please subscribe to some " "podcasts first before trying to export your subscription list." msgstr "" "Din lista pУЅ prenumerationer av poddsУЄndningar УЄr tom. Du behУЖver fУЖrst " "prenumerera pУЅ en poddsУЄndning innan du kan exportera din " "prenumerationslista." #: src/gpodder/gtkui/main.py:3076 msgid "Export to OPML" msgstr "Exportera till OPML" #: src/gpodder/gtkui/main.py:3087 #, python-format msgid "%(count)d subscription exported" msgid_plural "%(count)d subscriptions exported" msgstr[0] "%(count)d prenumeration exporterad" msgstr[1] "%(count)d prenumerationer exporterade" #: src/gpodder/gtkui/main.py:3088 msgid "Your podcast list has been successfully exported." msgstr "Din lista pУЅ poddsУЄndningar УЄr exporterad." #: src/gpodder/gtkui/main.py:3090 msgid "Could not export OPML to file. Please check your permissions." msgstr "" "Kunde inte exportera till OMPL-filen. Var vУЄnlig kontrollera dina skriv-" "rУЄttigheter." #: src/gpodder/gtkui/main.py:3090 msgid "OPML export failed" msgstr "OPML export misslyckades" #: src/gpodder/gtkui/main.py:3117 #, fuzzy msgid "No updates available" msgstr "Inga avsnitt tillgУЄngliga" #: src/gpodder/gtkui/main.py:3118 msgid "You have the latest version of gPodder." msgstr "" #: src/gpodder/gtkui/main.py:3122 #, fuzzy msgid "New version available" msgstr "Nya avsnitt finns tillgУЄngliga" #: src/gpodder/gtkui/main.py:3124 #, python-format msgid "Installed version: %s" msgstr "" #: src/gpodder/gtkui/main.py:3125 #, fuzzy, python-format msgid "Newest version: %s" msgstr "Raderar: %s" #: src/gpodder/gtkui/main.py:3126 #, fuzzy, python-format msgid "Release date: %s" msgstr "utgivet: %s" #: src/gpodder/gtkui/main.py:3128 #, fuzzy msgid "Download the latest version from gpodder.org?" msgstr "HУЄmta mina prenumerationer frУЅn gpodder.net" #: src/gpodder/gtkui/main.py:3141 msgid "About gPodder" msgstr "Om gPodder" #: src/gpodder/gtkui/main.py:3424 #, fuzzy msgid "Please register a YouTube API key and set it in the preferences." msgstr "Var vУЄnlig konfigurera din enhet i dialogen fУЖr InstУЄllningar." #: src/gpodder/gtkui/main.py:3425 msgid "Would you like to set up an API key now?" msgstr "" #: src/gpodder/gtkui/main.py:3425 msgid "API key required" msgstr "" #: src/gpodder/gtkui/main.py:3444 bin/gpo:631 #, fuzzy msgid "No unique URL found" msgstr "Inga kanaler hittades" #: src/gpodder/gtkui/main.py:3449 bin/gpo:637 #, fuzzy msgid "Already subscribed" msgstr "Kan inte prenumerera pУЅ %s." #: src/gpodder/gtkui/main.py:3458 bin/gpo:649 #, python-format msgid "Make sure the API key is correct. Error: %(message)s" msgstr "" #: src/gpodder/gtkui/main.py:3459 #, fuzzy msgid "Error getting YouTube channels" msgstr "Fel: InstУЄllningsalternativ" #: src/gpodder/gtkui/main.py:3462 #, fuzzy msgid "Successfully migrated subscriptions" msgstr "%s har lagts till." #: src/gpodder/gtkui/main.py:3464 #, fuzzy msgid "Subscriptions are up to date" msgstr "Prenumeration pausad" #: src/gpodder/gtkui/main.py:3467 msgid "These URLs failed:" msgstr "" #: src/gpodder/gtkui/main.py:3469 #, fuzzy msgid "Could not migrate some subscriptions" msgstr "Kunde inte lУЄgga till nУЅgra av poddsУЄndningarna" #: src/gpodder/gtkui/main.py:3493 msgid "Cannot start gPodder" msgstr "Kan inte starta gPodder" #: src/gpodder/gtkui/main.py:3494 #, python-format msgid "D-Bus error: %s" msgstr "D-Bus fel: %s" #: src/gpodder/gtkui/model.py:68 #, python-format msgid "released %s" msgstr "utgiven %s" #: src/gpodder/gtkui/model.py:69 src/gpodder/gtkui/model.py:87 #: src/gpodder/gtkui/model.py:237 src/gpodder/gtkui/shownotes.py:84 #, python-format msgid "from %s" msgstr "frУЅn %s" #: src/gpodder/gtkui/model.py:80 src/gpodder/gtkui/model.py:393 msgid "played" msgstr "spelad" #: src/gpodder/gtkui/model.py:82 msgid "unplayed" msgstr "ej spelad" #: src/gpodder/gtkui/model.py:85 msgid "today" msgstr "idag" #: src/gpodder/gtkui/model.py:86 #, python-format msgid "downloaded %s" msgstr "nedladdad %s" #: src/gpodder/gtkui/model.py:337 msgid "Deleted" msgstr "Raderad" #: src/gpodder/gtkui/model.py:342 msgid "New episode" msgstr "Nytt avsnitt:" #: src/gpodder/gtkui/model.py:356 msgid "Downloaded episode" msgstr "Nedladdat avsnitt" #: src/gpodder/gtkui/model.py:359 msgid "Downloaded video episode" msgstr "Nedladdat videoavsnitt" #: src/gpodder/gtkui/model.py:362 msgid "Downloaded image" msgstr "Nedladdad bild" #: src/gpodder/gtkui/model.py:365 msgid "Downloaded file" msgstr "Nedladdad fil" #: src/gpodder/gtkui/model.py:380 msgid "missing file" msgstr "saknad fil" #: src/gpodder/gtkui/model.py:384 msgid "never displayed" msgstr "aldrig visade" #: src/gpodder/gtkui/model.py:386 msgid "never played" msgstr "aldrig spelade" #: src/gpodder/gtkui/model.py:388 msgid "never opened" msgstr "aldrig УЖppnade" #: src/gpodder/gtkui/model.py:391 msgid "displayed" msgstr "visade" #: src/gpodder/gtkui/model.py:395 msgid "opened" msgstr "УЖppnad" #: src/gpodder/gtkui/model.py:397 msgid "deletion prevented" msgstr "radering УЄr fУЖrhindrad" #: src/gpodder/gtkui/model.py:432 share/gpodder/ui/gtk/gpodder.ui.h:32 msgid "All episodes" msgstr "Alla avsnitt" #: src/gpodder/gtkui/model.py:433 msgid "from all podcasts" msgstr "frУЅn alla poddsУЄndningar" #: src/gpodder/gtkui/model.py:625 msgid "Subscription paused" msgstr "Prenumeration pausad" #: src/gpodder/gtkui/shownotes.py:118 #, fuzzy msgid "Please select an episode" msgstr "VУЄlj avsnitt" #: src/gpodder/gtkui/interface/addpodcast.py:74 msgid "Nothing to paste." msgstr "Inget att klistra in." #: src/gpodder/gtkui/interface/addpodcast.py:74 msgid "Clipboard is empty" msgstr "Klippbordet УЄr tomt" #: src/gpodder/gtkui/interface/common.py:160 msgid "Username" msgstr "AnvУЄdarnamn" #: src/gpodder/gtkui/interface/common.py:163 msgid "New user" msgstr "Ny anvУЄndare" #: src/gpodder/gtkui/interface/common.py:170 msgid "Login" msgstr "Logga in" #: src/gpodder/gtkui/interface/common.py:172 msgid "Authentication required" msgstr "Inloggning krУЄvs" #: src/gpodder/gtkui/interface/common.py:203 msgid "Password" msgstr "LУЖsenord" #: src/gpodder/gtkui/interface/common.py:225 msgid "Select destination" msgstr "VУЄlj mУЅl" #: src/gpodder/gtkui/interface/configeditor.py:34 msgid "Setting" msgstr "InstУЄllning" #: src/gpodder/gtkui/interface/configeditor.py:41 msgid "Set to" msgstr "SУЄtt till" #: src/gpodder/gtkui/interface/configeditor.py:81 #, python-format msgid "Cannot set %(field)s to %(value)s. Needed data type: %(datatype)s" msgstr "" "Kan inte sУЄtta vУЄrdet fУЖr %(field)s. \"%(value)s\" mУЅste vara av typen " "%(datatype)s" #: src/gpodder/gtkui/interface/configeditor.py:85 msgid "Error setting option" msgstr "Fel: InstУЄllningsalternativ" #: src/gpodder/gtkui/desktop/channel.py:100 #, fuzzy msgid "Add section" msgstr "HУЄndelse" #: src/gpodder/gtkui/desktop/channel.py:100 #, fuzzy msgid "New section:" msgstr "Nytt namn:" #: src/gpodder/gtkui/desktop/channel.py:133 msgid "Select new podcast cover artwork" msgstr "VУЄlj ny omslagsbild fУЖr poddsУЄndning" #: src/gpodder/gtkui/desktop/channel.py:161 msgid "You can only drop a single image or URL here." msgstr "Du kan endast slУЄppa en fil eller webbadress УЅt gУЅngen hУЄr." #: src/gpodder/gtkui/desktop/channel.py:161 #: src/gpodder/gtkui/desktop/channel.py:171 msgid "Drag and drop" msgstr "Drag an drop (drag och slУЄpp)" #: src/gpodder/gtkui/desktop/channel.py:171 msgid "You can only drop local files and http:// URLs here." msgstr "Du kan endast slУЄppa lokala filer och http:// webbadresser hУЄr." #: src/gpodder/gtkui/desktop/deviceplaylist.py:98 #, fuzzy, python-format msgid "Folder %s could not be created." msgstr "Kanalen pУЅ %(url)s kunde inte uppdateras." #: src/gpodder/gtkui/desktop/deviceplaylist.py:98 #, fuzzy msgid "Error writing playlist" msgstr "Fel vid УЖppnande av spelare" #: src/gpodder/gtkui/desktop/episodeselector.py:288 #: share/gpodder/ui/gtk/gpodderepisodeselector.ui.h:2 msgid "Select all" msgstr "VУЄlj alla" #: src/gpodder/gtkui/desktop/episodeselector.py:292 #: share/gpodder/ui/gtk/gpodderepisodeselector.ui.h:3 msgid "Select none" msgstr "VУЄlj ingen" #: src/gpodder/gtkui/desktop/episodeselector.py:324 msgid "Nothing selected" msgstr "Ingenting valt" #: src/gpodder/gtkui/desktop/episodeselector.py:325 #, python-format msgid "%(count)d episode" msgid_plural "%(count)d episodes" msgstr[0] "%(count)d avsnitt" msgstr[1] "%(count)d avsnitt" #: src/gpodder/gtkui/desktop/episodeselector.py:327 #, python-format msgid "size: %s" msgstr "storlek: %s" #: src/gpodder/gtkui/desktop/podcastdirectory.py:238 #, fuzzy msgid "Loading podcasts" msgstr "LУЄgger till poddsУЄndning" #: src/gpodder/gtkui/desktop/podcastdirectory.py:239 #, fuzzy msgid "Please wait while the podcast list is downloaded" msgstr "VУЄnligen vУЄnta medan poddsУЄndningen raderas" #: src/gpodder/gtkui/desktop/preferences.py:51 #: src/gpodder/gtkui/desktop/preferences.py:93 msgid "Do nothing" msgstr "GУЖr ingenting" #: src/gpodder/gtkui/desktop/preferences.py:52 msgid "Show episode list" msgstr "Visa avsnittslistan" #: src/gpodder/gtkui/desktop/preferences.py:53 msgid "Add to download list" msgstr "LУЄgg till nedladdningslista" #: src/gpodder/gtkui/desktop/preferences.py:54 msgid "Download immediately" msgstr "Ladda ned omedelbart" #: src/gpodder/gtkui/desktop/preferences.py:72 msgid "None" msgstr "Ingen" #: src/gpodder/gtkui/desktop/preferences.py:73 msgid "iPod" msgstr "" #: src/gpodder/gtkui/desktop/preferences.py:74 #, fuzzy msgid "Filesystem-based" msgstr "Filsystem-baserad MP3 spelare" #: src/gpodder/gtkui/desktop/preferences.py:94 #, fuzzy msgid "Mark as played" msgstr "Markera som ej spelad" #: src/gpodder/gtkui/desktop/preferences.py:95 #, fuzzy msgid "Delete from gPodder" msgstr "Radera frУЅn gPodder" #: src/gpodder/gtkui/desktop/preferences.py:123 #, fuzzy, python-format msgid "Custom (%(format_ids)s)" msgstr "Egenformaterade strУЄngar" #: src/gpodder/gtkui/desktop/preferences.py:318 msgid "Name" msgstr "Namn" #: src/gpodder/gtkui/desktop/preferences.py:369 #, fuzzy msgid "Documentation" msgstr "varaktighet" #: src/gpodder/gtkui/desktop/preferences.py:374 #, fuzzy msgid "Extension info" msgstr "Modulinfo fУЖr extension" #: src/gpodder/gtkui/desktop/preferences.py:379 msgid "Support the author" msgstr "" #: src/gpodder/gtkui/desktop/preferences.py:413 msgid "Extension cannot be activated" msgstr "" #: src/gpodder/gtkui/desktop/preferences.py:426 msgid "Extension module info" msgstr "Modulinfo fУЖr extension" #: src/gpodder/gtkui/desktop/preferences.py:463 msgid "Configure audio player" msgstr "StУЄll in musik spelare" #: src/gpodder/gtkui/desktop/preferences.py:464 #: src/gpodder/gtkui/desktop/preferences.py:474 msgid "Command:" msgstr "Kommando:" #: src/gpodder/gtkui/desktop/preferences.py:473 msgid "Configure video player" msgstr "StУЄll in video spelare" #: src/gpodder/gtkui/desktop/preferences.py:485 #: src/gpodder/gtkui/desktop/preferences.py:503 msgid "manually" msgstr "manuellt" #: src/gpodder/gtkui/desktop/preferences.py:505 #, python-format msgid "after %(count)d day" msgid_plural "after %(count)d days" msgstr[0] "efter %(count)d dag" msgstr[1] "efter %(count)d dagar" #: src/gpodder/gtkui/desktop/preferences.py:541 msgid "Replace subscription list on server" msgstr "ErsУЄtt prenumerationslista pУЅ servern" #: src/gpodder/gtkui/desktop/preferences.py:542 msgid "" "Remote podcasts that have not been added locally will be removed on the " "server. Continue?" msgstr "" "FjУЄrrpoddsУЄndningar som inte har lagts till lokalt kommer att raderas frУЅn " "servern.FortsУЄtt?" #: src/gpodder/gtkui/desktop/preferences.py:621 msgid "Select folder for mount point" msgstr "VУЄlj monteringspunkt fУЖr iPod" #: src/gpodder/gtkui/desktop/preferences.py:638 #, fuzzy msgid "Select folder for playlists" msgstr "VУЄlj monteringspunkt fУЖr iPod" #: src/gpodder/gtkui/desktop/sync.py:86 msgid "No device configured" msgstr "Ingen enhet konfigurerad" #: src/gpodder/gtkui/desktop/sync.py:87 msgid "Please set up your device in the preferences dialog." msgstr "Var vУЄnlig konfigurera din enhet i dialogen fУЖr InstУЄllningar." #: src/gpodder/gtkui/desktop/sync.py:91 msgid "Cannot open device" msgstr "Kan inte УЖppna enhet" #: src/gpodder/gtkui/desktop/sync.py:92 msgid "Please check the settings in the preferences dialog." msgstr "Var vУЄnlig kontrollera konfigurationen i dialogen fУЖr InstУЄllningar." #: src/gpodder/gtkui/desktop/sync.py:139 msgid "Not enough space left on device" msgstr "Inte tillrУЄckligt med ledigt utrymme pУЅ enheten" #: src/gpodder/gtkui/desktop/sync.py:140 #, fuzzy, python-format msgid "" "Additional free space required: %(required_space)s\n" "Do you want to continue?" msgstr "" "Du behУЖver frigУЖra %s.\n" "Vill du fortsУЄtta?" #: src/gpodder/gtkui/desktop/sync.py:199 #, fuzzy msgid "Update successful" msgstr "Lista uppladdad." #: src/gpodder/gtkui/desktop/sync.py:200 msgid "The playlist on your MP3 player has been updated." msgstr "" #: src/gpodder/gtkui/desktop/sync.py:274 msgid "Episodes have been deleted on device" msgstr "" #: src/gpodder/gtkui/desktop/sync.py:285 #, fuzzy msgid "Error writing playlist files" msgstr "Fel vid konvertering av fil." #: src/gpodder/plugins/soundcloud.py:154 msgid "Unknown track" msgstr "OkУЄnt spУЅr" #: src/gpodder/plugins/soundcloud.py:181 #, python-format msgid "%s on Soundcloud" msgstr "%s i Soundcloud" #: src/gpodder/plugins/soundcloud.py:190 #, python-format msgid "Tracks published by %s on Soundcloud." msgstr "SpУЅr publicerade av %s i Soundcloud." #: src/gpodder/plugins/soundcloud.py:217 #, python-format msgid "%s's favorites on Soundcloud" msgstr "%ss favoriter i Soundcloud" #: src/gpodder/plugins/soundcloud.py:223 #, python-format msgid "Tracks favorited by %s on Soundcloud." msgstr "SpУЅr favoriserade av %s i Soundcloud" #: share/gpodder/extensions/audio_converter.py:20 #, fuzzy msgid "Convert audio files" msgstr "Konverterar fil" #: share/gpodder/extensions/audio_converter.py:21 msgid "Transcode audio files to mp3/ogg" msgstr "" #: share/gpodder/extensions/audio_converter.py:84 #: share/gpodder/extensions/video_converter.py:86 #, python-format msgid "Convert to %(format)s" msgstr "" #: share/gpodder/extensions/audio_converter.py:111 #: share/gpodder/extensions/rockbox_convert2mp4.py:65 #: share/gpodder/extensions/video_converter.py:111 #, fuzzy msgid "File converted" msgstr "iPod OGG konverterare" #: share/gpodder/extensions/audio_converter.py:114 #: share/gpodder/extensions/video_converter.py:114 #, fuzzy msgid "Conversion failed" msgstr "Konverterar fil" #: share/gpodder/extensions/concatenate_videos.py:20 #: share/gpodder/extensions/concatenate_videos.py:100 #, fuzzy msgid "Concatenate videos" msgstr "Konverterar fil" #: share/gpodder/extensions/concatenate_videos.py:21 msgid "Add a context menu item for concatenating multiple videos" msgstr "" #: share/gpodder/extensions/concatenate_videos.py:37 msgid "Save video" msgstr "" #: share/gpodder/extensions/concatenate_videos.py:66 #, fuzzy msgid "Concatenating video files" msgstr "Konverterar fil" #: share/gpodder/extensions/concatenate_videos.py:67 #, python-format msgid "Writing %(filename)s" msgstr "" #: share/gpodder/extensions/concatenate_videos.py:78 msgid "Videos successfully converted" msgstr "" #: share/gpodder/extensions/concatenate_videos.py:79 #, fuzzy msgid "Error converting videos" msgstr "Fel vid konvertering av fil." #: share/gpodder/extensions/concatenate_videos.py:80 msgid "Concatenation result" msgstr "" #: share/gpodder/extensions/enqueue_in_mediaplayer.py:16 msgid "Enqueue in media players" msgstr "" #: share/gpodder/extensions/enqueue_in_mediaplayer.py:17 msgid "" "Add a context menu item for enqueueing episodes in installed media players" msgstr "" #: share/gpodder/extensions/enqueue_in_mediaplayer.py:35 msgid "Enqueue in" msgstr "" #: share/gpodder/extensions/episode_website_context_menu.py:14 msgid "\"Open website\" episode context menu" msgstr "" #: share/gpodder/extensions/episode_website_context_menu.py:15 msgid "Add a context menu item for opening the website of an episode" msgstr "" #: share/gpodder/extensions/episode_website_context_menu.py:30 #, fuzzy msgid "Open website" msgstr "Webbsida:" #: share/gpodder/extensions/gtk_statusicon.py:14 #, fuzzy msgid "Gtk Status Icon" msgstr "Status ikon" #: share/gpodder/extensions/gtk_statusicon.py:15 #, fuzzy msgid "Show a status icon for Gtk-based Desktops." msgstr "Visa en statusindikator i УЖversta fУЄltet" #: share/gpodder/extensions/minimize_on_start.py:10 msgid "Minimize on start" msgstr "" #: share/gpodder/extensions/minimize_on_start.py:11 msgid "Minimizes the gPodder window on startup." msgstr "" #: share/gpodder/extensions/mpris-listener.py:33 msgid "MPRIS Listener" msgstr "" #: share/gpodder/extensions/mpris-listener.py:34 msgid "Convert MPRIS notifications to gPodder Media Player D-Bus API" msgstr "" #: share/gpodder/extensions/normalize_audio.py:21 msgid "Normalize audio with re-encoding" msgstr "" #: share/gpodder/extensions/normalize_audio.py:22 msgid "Normalize the volume of audio files with normalize-audio" msgstr "" #: share/gpodder/extensions/normalize_audio.py:99 #, fuzzy msgid "File normalized" msgstr "Filnamn" #: share/gpodder/extensions/rename_download.py:16 #, fuzzy msgid "Rename episodes after download" msgstr "ett avsnitt nerladdat" #: share/gpodder/extensions/rename_download.py:17 #, fuzzy msgid "Rename episodes to \".\" on download" msgstr "En ny episod УЄr tillgУЄngligt fУЖr nedladdning" #: share/gpodder/extensions/rm_ogg_cover.py:37 #, fuzzy msgid "Remove cover art from OGG files" msgstr "HУЄmta omslagsbild frУЅn fil" #: share/gpodder/extensions/rm_ogg_cover.py:38 msgid "removes coverart from all downloaded ogg files" msgstr "" #: share/gpodder/extensions/rm_ogg_cover.py:66 #, fuzzy msgid "Remove cover art" msgstr "Radera ny markering" #: share/gpodder/extensions/rockbox_convert2mp4.py:26 msgid "Convert video files to MP4 for Rockbox" msgstr "" #: share/gpodder/extensions/rockbox_convert2mp4.py:27 msgid "Converts all videos to a Rockbox-compatible format" msgstr "" #: share/gpodder/extensions/sonos.py:19 share/gpodder/extensions/sonos.py:78 msgid "Stream to Sonos" msgstr "" #: share/gpodder/extensions/sonos.py:20 msgid "Stream podcasts to Sonos speakers" msgstr "" #: share/gpodder/extensions/tagging.py:45 msgid "Tag downloaded files using Mutagen" msgstr "" #: share/gpodder/extensions/tagging.py:46 #, fuzzy msgid "Add episode and podcast titles to MP3/OGG tags" msgstr "Visa \"Alla avsnitt\" i poddsУЄndningslistan" #: share/gpodder/extensions/taskbar_progress.py:28 #, fuzzy msgid "Show download progress on the taskbar" msgstr "Visa nedladdningsindikator i Unity:s programstartikon" #: share/gpodder/extensions/taskbar_progress.py:29 msgid "Displays the progress on the Windows taskbar." msgstr "" #: share/gpodder/extensions/ted_subtitles.py:16 msgid "Subtitle Downloader for TED Talks" msgstr "" #: share/gpodder/extensions/ted_subtitles.py:17 msgid "Downloads .srt subtitles for TED Talks Videos" msgstr "" #: share/gpodder/extensions/ubuntu_appindicator.py:10 msgid "Ubuntu App Indicator" msgstr "Ubuntu programindikator" #: share/gpodder/extensions/ubuntu_appindicator.py:11 msgid "Show a status indicator in the top bar." msgstr "Visa en statusindikator i УЖversta fУЄltet" #: share/gpodder/extensions/ubuntu_appindicator.py:47 msgid "Show main window" msgstr "Visa huvudmeny" #: share/gpodder/extensions/ubuntu_appindicator.py:57 #: share/gpodder/ui/gtk/gpodder.ui.h:6 msgid "Quit" msgstr "Avsluta" #: share/gpodder/extensions/ubuntu_unity.py:10 msgid "Ubuntu Unity Integration" msgstr "Ubuntu Unity-integration" #: share/gpodder/extensions/ubuntu_unity.py:11 msgid "Show download progress in the Unity Launcher icon." msgstr "Visa nedladdningsindikator i Unity:s programstartikon" #: share/gpodder/extensions/update_feeds_on_startup.py:14 #, fuzzy msgid "Search for new episodes on startup" msgstr "SУЖk efter nya avsnitt vid uppstart" #: share/gpodder/extensions/update_feeds_on_startup.py:15 #, fuzzy msgid "Starts the search for new episodes on startup" msgstr "SУЖk efter nya avsnitt vid uppstart" #: share/gpodder/extensions/video_converter.py:22 #, fuzzy msgid "Convert video files" msgstr "Konverterar fil" #: share/gpodder/extensions/video_converter.py:23 msgid "Transcode video files to avi/mp4/m4v" msgstr "" #: share/gpodder/ui/gtk/gpodderaddpodcast.ui.h:1 msgid "Add a new podcast" msgstr "LУЄgg till en ny poddsУЄndning" #: share/gpodder/ui/gtk/gpodderaddpodcast.ui.h:2 msgid "URL:" msgstr "Webbadress:" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:1 msgid "gPodder Podcast Editor" msgstr "gPodder Redigerare fУЖr poddsУЄndningar" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:2 msgid "Section:" msgstr "Avsnitt:" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:3 msgid "Disable feed updates (pause subscription)" msgstr "Inaktivera flУЖdesuppdatering (inaktivera prenumeration)" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:4 #, fuzzy msgid "Synchronize to MP3 player devices" msgstr "Synkroniserar med iPod/spelare" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:5 #, fuzzy msgid "Strategy:" msgstr "Radera strategi:" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:6 #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:6 msgid "General" msgstr "AllmУЄnt" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:7 msgid "HTTP/FTP Authentication" msgstr "HTTP/FTP Inloggning" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:8 #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:13 msgid "Username:" msgstr "AnvУЄndarnamn:" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:9 #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:14 msgid "Password:" msgstr "LУЖsenord:" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:10 msgid "Locations" msgstr "Platser" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:11 msgid "Download to:" msgstr "Ladda ned till:" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:12 msgid "Website:" msgstr "Webbsida:" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:13 msgid "website label" msgstr "Webbsida etikett" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:14 msgid "Advanced" msgstr "Avancerat" #: share/gpodder/ui/gtk/gpodderconfigeditor.ui.h:1 msgid "gPodder Configuration Editor" msgstr "gPodder Redigerare av konfigurationer" #: share/gpodder/ui/gtk/gpodderconfigeditor.ui.h:2 msgid "Search for:" msgstr "SУЖk efter:" #: share/gpodder/ui/gtk/gpodderconfigeditor.ui.h:3 msgid "Show All" msgstr "Visa Alla " #: share/gpodder/ui/gtk/gpodderepisodeselector.ui.h:1 msgid "Select episodes" msgstr "VУЄlj avsnitt" #: share/gpodder/ui/gtk/gpodderpodcastdirectory.ui.h:1 msgid "Find new podcasts" msgstr "Hitta nya poddsУЄndningar" #: share/gpodder/ui/gtk/gpodderpodcastdirectory.ui.h:2 msgid "Select All" msgstr "VУЄlj alla" #: share/gpodder/ui/gtk/gpodderpodcastdirectory.ui.h:3 msgid "Select None" msgstr "VУЄlj ingen" #: share/gpodder/ui/gtk/gpodderpodcastdirectory.ui.h:4 msgid "label" msgstr "" #: share/gpodder/ui/gtk/gpodderpodcastdirectory.ui.h:5 msgid "..." msgstr "" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:1 #: share/gpodder/ui/gtk/gpodder.ui.h:5 msgid "Preferences" msgstr "InstУЄllningar" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:2 msgid "Audio player:" msgstr "Ljudspelare:" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:3 msgid "Video player:" msgstr "Videospelare:" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:4 msgid "\"All episodes\" in podcast list" msgstr "Visa \"Alla avsnitt\" i poddsУЄndningslistan" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:5 msgid "Use sections for podcast list" msgstr "AnvУЄnd avsnitt fУЖr podcast-lista" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:7 msgid "Preferred YouTube format:" msgstr "" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:8 msgid "YouTube API key (v3):" msgstr "" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:9 msgid "Preferred Vimeo format:" msgstr "" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:11 msgid "Extensions" msgstr "Extensioner" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:12 msgid "Synchronize subscriptions and episode actions" msgstr "Synkronisera prenumerations och avsnitts aktiviteter" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:15 msgid "Replace list on server with local subscriptions" msgstr "ErsУЄtt lista pУЅ server med lokala prenumerationer" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:16 msgid "Device name:" msgstr "Enhetsnamn:" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:17 msgid "gpodder.net" msgstr "gpodder.net" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:18 msgid "Update interval:" msgstr "Uppdateringsintervall:" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:19 msgid "Maximum number of episodes per podcast:" msgstr "Maximalt antal avsnitt per poddsУЄndning" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:20 msgid "When new episodes are found:" msgstr "NУЄr nya avsnitt finns tillgУЄngliga:" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:21 msgid "Updating" msgstr "Uppdatering" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:22 msgid "Delete played episodes:" msgstr "Radera spelade avsnitt" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:23 msgid "Remove played episodes even if unfinished" msgstr "Ta bort spelade avsnitt УЄven oavslutade." #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:24 msgid "Also remove unplayed episodes" msgstr "Radera УЄven ospelade avsnitt" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:25 msgid "Clean-up" msgstr "Rensa" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:26 msgid "Device type:" msgstr "Enhetstyp:" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:27 msgid "Mountpoint:" msgstr "Monteringspunkt:" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:28 msgid "After syncing an episode:" msgstr "Efter synkronisering av avsnitt:" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:29 #, fuzzy msgid "Create playlists on device" msgstr "Byt ut lista pУЅ server" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:30 #, fuzzy msgid "Playlists Folder:" msgstr "Namn pУЅ spellista:" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:31 msgid "Remove episodes deleted on device from gPodder" msgstr "" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:32 msgid "Only sync unplayed episodes" msgstr "Synka endast ospelade avsnitt" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:33 msgid "Devices" msgstr "Enheter" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:34 msgid "Edit config" msgstr "У„ndra konfiguration" #: share/gpodder/ui/gtk/gpodder.ui.h:1 msgid "_Podcasts" msgstr "_PoddsУЄndningar" #: share/gpodder/ui/gtk/gpodder.ui.h:2 msgid "Check for new episodes" msgstr "SУЖk efter nya avsnitt" #: share/gpodder/ui/gtk/gpodder.ui.h:3 msgid "Download new episodes" msgstr "Ladda ned nya avsnitt" #: share/gpodder/ui/gtk/gpodder.ui.h:7 msgid "_Subscriptions" msgstr "Prenumerationer" #: share/gpodder/ui/gtk/gpodder.ui.h:8 msgid "Discover new podcasts" msgstr "UpptУЄck nya poddsУЄndningar" #: share/gpodder/ui/gtk/gpodder.ui.h:9 msgid "Add podcast via URL" msgstr "LУЄgg till poddsУЄndning via webbadress" #: share/gpodder/ui/gtk/gpodder.ui.h:11 msgid "Unsubscribe" msgstr "Avsluta prenumeration" #: share/gpodder/ui/gtk/gpodder.ui.h:14 msgid "Import from OPML file" msgstr "Importera frУЅn OPML fil" #: share/gpodder/ui/gtk/gpodder.ui.h:15 msgid "Export to OPML file" msgstr "Exportera till OPML fil" #: share/gpodder/ui/gtk/gpodder.ui.h:16 msgid "Go to gpodder.net" msgstr "GУЅ till gpodder.net" #: share/gpodder/ui/gtk/gpodder.ui.h:17 msgid "_Episodes" msgstr "Avsnitt" #: share/gpodder/ui/gtk/gpodder.ui.h:18 msgid "Play" msgstr "Spela upp" #: share/gpodder/ui/gtk/gpodder.ui.h:19 msgid "Open" msgstr "У–ppna" #: share/gpodder/ui/gtk/gpodder.ui.h:22 msgid "Delete" msgstr "Radera" #: share/gpodder/ui/gtk/gpodder.ui.h:23 msgid "Toggle new status" msgstr "VУЄxla ny status" #: share/gpodder/ui/gtk/gpodder.ui.h:24 msgid "Change delete lock" msgstr "У„ndra raderingslУЅs " #: share/gpodder/ui/gtk/gpodder.ui.h:26 #, fuzzy msgid "E_xtras" msgstr "У–vrigt" #: share/gpodder/ui/gtk/gpodder.ui.h:27 #, fuzzy msgid "Sync to device" msgstr "Synkronisera med enhet" #: share/gpodder/ui/gtk/gpodder.ui.h:28 #, fuzzy msgid "Update YouTube subscriptions" msgstr "Inga prenumerationer" #: share/gpodder/ui/gtk/gpodder.ui.h:29 msgid "_View" msgstr "_Visa" #: share/gpodder/ui/gtk/gpodder.ui.h:30 msgid "Toolbar" msgstr "Visa verktygsfУЄlt" #: share/gpodder/ui/gtk/gpodder.ui.h:31 msgid "Episode descriptions" msgstr "Beskrivningar fУЖr avsnitt" #: share/gpodder/ui/gtk/gpodder.ui.h:33 msgid "Hide deleted episodes" msgstr "DУЖlj raderade avsnitt" #: share/gpodder/ui/gtk/gpodder.ui.h:34 msgid "Downloaded episodes" msgstr "Nedladdade avsnitt" #: share/gpodder/ui/gtk/gpodder.ui.h:35 msgid "Unplayed episodes" msgstr "Ej spelade avsnitt" #: share/gpodder/ui/gtk/gpodder.ui.h:36 msgid "Hide podcasts without episodes" msgstr "DУЖlj poddsУЄndningar utan avsnitt" #: share/gpodder/ui/gtk/gpodder.ui.h:37 msgid "_Help" msgstr "_HjУЄlp" #: share/gpodder/ui/gtk/gpodder.ui.h:38 msgid "User manual" msgstr "AnvУЄdarmanual" #: share/gpodder/ui/gtk/gpodder.ui.h:39 msgid "Software updates" msgstr "" #: share/gpodder/ui/gtk/gpodder.ui.h:40 msgid "Filter:" msgstr "Filter:" #: share/gpodder/ui/gtk/gpodder.ui.h:41 msgid "Podcasts" msgstr "PoddsУЄndningar" #: share/gpodder/ui/gtk/gpodder.ui.h:42 msgid "Limit rate to" msgstr "BegrУЄnsa hastigheten till" #: share/gpodder/ui/gtk/gpodder.ui.h:43 msgid "KiB/s" msgstr "KiB/s" #: share/gpodder/ui/gtk/gpodder.ui.h:44 msgid "Limit downloads to" msgstr "BegrУЄnsa nedladdningar till" #: share/gpodder/ui/gtk/gpodderwelcome.ui.h:2 #, fuzzy msgid "Welcome to gPodder" msgstr "VУЄlkommen till gPodder" #: share/gpodder/ui/gtk/gpodderwelcome.ui.h:3 #, fuzzy msgid "Your podcast list is empty." msgstr "Din lista УЖver prenumerationer УЄr tom." #: share/gpodder/ui/gtk/gpodderwelcome.ui.h:4 msgid "Choose from a list of example podcasts" msgstr "VУЄlj frУЅn en lista med exempel pУЅ poddsУЄndningar" #: share/gpodder/ui/gtk/gpodderwelcome.ui.h:5 #, fuzzy msgid "Add a podcast by entering its URL" msgstr "LУЄgg till poddsУЄndning via webbadress" #: share/gpodder/ui/gtk/gpodderwelcome.ui.h:6 #, fuzzy msgid "Restore my subscriptions from gpodder.net" msgstr "HУЄmta mina prenumerationer frУЅn gpodder.net" #: bin/gpo:266 msgid "Podcast update requested by extensions." msgstr "PodsУЄndningsuppdatering begУЄrd av extension" #: bin/gpo:270 msgid "Episode download requested by extensions." msgstr "Avsnittsnedladdning begУЄrd av extension" #: bin/gpo:323 #, fuzzy, python-format msgid "Invalid url: %s" msgstr "Ogiltig URL" #: bin/gpo:340 bin/gpo:416 bin/gpo:450 bin/gpo:582 bin/gpo:597 bin/gpo:717 #, python-format msgid "You are not subscribed to %s." msgstr "Du УЄr inte prenumerant av %s." #: bin/gpo:346 #, fuzzy, python-format msgid "Already subscribed to %s." msgstr "Kan inte prenumerera pУЅ %s." #: bin/gpo:352 #, python-format msgid "Cannot subscribe to %s." msgstr "Kan inte prenumerera pУЅ %s." #: bin/gpo:368 #, python-format msgid "Successfully added %s." msgstr "%s har lagts till." #: bin/gpo:386 msgid "This configuration option does not exist." msgstr "Denna konfigurationsinstУЄllning finns inte." #: bin/gpo:390 msgid "Can only set leaf configuration nodes." msgstr "" #: bin/gpo:404 #, python-format msgid "Renamed %(old_title)s to %(new_title)s." msgstr "DУЖp om %(old_title)s till %(new_title)s" #: bin/gpo:420 #, python-format msgid "Unsubscribed from %s." msgstr "Avsluta prenumeration av %s." #: bin/gpo:494 msgid "Updates disabled" msgstr "Uppdateringar inaktiverad" #: bin/gpo:505 #, python-format msgid "%(count)d new episode" msgid_plural "%(count)d new episodes" msgstr[0] "%(count)d nytt avsnitt" msgstr[1] "%(count)d nya avsnitt" #: bin/gpo:511 #, fuzzy msgid "Checking for new episodes" msgstr "SУЖk efter nya avsnitt..." #: bin/gpo:520 #, python-format msgid "Skipping %(podcast)s" msgstr "Hoppa УЖver %(podcast)s" #: bin/gpo:588 #, python-format msgid "Disabling feed update from %s." msgstr "Inaktivera flУЖdesuppdatering fУЖr %s." #: bin/gpo:603 #, python-format msgid "Enabling feed update from %s." msgstr "Aktivera flУЖdesuppdatering fУЖr %s." #: bin/gpo:616 #, python-format msgid "Please register a YouTube API key and set it using %(command)s." msgstr "" #: bin/gpo:643 #, fuzzy, python-format msgid "Changing: %(old_url)s => %(new_url)s" msgstr "У„ndrad adress frУЅn %(old_url)s till %(new_url)s." #: bin/gpo:653 #, fuzzy msgid "Nothing to fix" msgstr "Inget att exportera" #: bin/gpo:672 msgid "No podcasts found." msgstr "Inga podsУЄndningar hittade" #: bin/gpo:686 msgid "Enter index to subscribe, ? for list" msgstr "Ange index att prenumerera, ? till lista" #: bin/gpo:700 bin/gpo:704 msgid "Invalid value." msgstr "Ogiltigt vУЄrde." #: bin/gpo:721 #, python-format msgid "Invalid URL: %s" msgstr "Ogiltig adress:%s." #: bin/gpo:724 #, python-format msgid "Changed URL from %(old_url)s to %(new_url)s." msgstr "У„ndrad adress frУЅn %(old_url)s till %(new_url)s." #: bin/gpo:782 #, python-format msgid "Syntax error: %(error)s" msgstr "Syntax error: %(error)s" #: bin/gpo:876 #, fuzzy msgid "Ambiguous command. Did you mean.." msgstr "Tvetydigt kommando. Menade du..." #: bin/gpo:880 msgid "The requested function is not available." msgstr "Den efterfrУЅgade funktionen УЄr inte tillgУЄnglig." #: bin/gpodder:105 #, fuzzy msgid "print logging output on the console" msgstr "Skriv ut debug data pУЅ stdout" #: bin/gpodder:108 #, fuzzy msgid "subscribe to the feed at URL" msgstr "Prenumerera pУЅ kanal frУЅn webbadress" #: bin/gpodder:113 msgid "Mac OS X application process number" msgstr "Mac OS X programprocessnummer" #: share/applications/gpodder.desktop.in.h:2 msgid "gPodder Podcast Client" msgstr "gPodder Podcastklient" #: share/applications/gpodder.desktop.in.h:3 msgid "Podcast Client" msgstr "Podcastklient" #: share/applications/gpodder.desktop.in.h:4 msgid "Subscribe to audio and video content from the web" msgstr "Prenumerera pУЅ ljud och video frУЅn webben" #: share/applications/gpodder-url-handler.desktop.in.h:1 #, fuzzy msgid "gPodder (subscribe to feed)" msgstr "Prenumerera pУЅ kanal frУЅn webbadress" gpodder-3.9.0/po/pt_BR.po0000644000016000001710000016777712654461625016311 0ustar jenkinsjenkins00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # # Translators: # Dudu Maroja , 2010. # Eduardo Maroja , 2009. # Enrico Nicoletto , 2013. # Joel Calado , 2007. # Rafael Ferreira , 2012-2013. # Thomas Perl , 2006. msgid "" msgstr "" "Project-Id-Version: gPodder\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2016-02-03 20:31+0000\n" "PO-Revision-Date: 2013-03-05 15:01+0000\n" "Last-Translator: Thomas Perl \n" "Language-Team: Portuguese (Brazil) (http://www.transifex.com/projects/p/" "gpodder/language/pt_BR/)\n" "Language: pt_BR\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n > 1);\n" #: src/gpodder/config.py:55 #, python-format msgid "gPodder on %s" msgstr "gPodder em %s" #: src/gpodder/directory.py:95 #, fuzzy msgid "gpodder.net search" msgstr "gpodder.net" #: src/gpodder/directory.py:104 #, fuzzy msgid "OPML from web" msgstr "Arquivos OPML" #: src/gpodder/directory.py:113 #, fuzzy msgid "OPML file" msgstr "Arquivos OPML" #: src/gpodder/directory.py:122 share/gpodder/ui/gtk/gpodderwelcome.ui.h:1 msgid "Getting started" msgstr "ComeУЇando" #: src/gpodder/directory.py:131 #, fuzzy msgid "gpodder.net Top 50" msgstr "gpodder.net" #: src/gpodder/directory.py:140 #, fuzzy msgid "gpodder.net Tags" msgstr "gpodder.net" #: src/gpodder/directory.py:152 #, fuzzy msgid "Soundcloud search" msgstr "%s em Soundcloud" #: src/gpodder/directory.py:165 #, fuzzy msgid "Imported OPML file" msgstr "Importar de um arquivo OPML" #: src/gpodder/download.py:329 msgid "Wrong username/password" msgstr "Login/Password invУЁlidos" #: src/gpodder/download.py:527 src/gpodder/sync.py:924 msgid "Added" msgstr "Adicionado" #: src/gpodder/download.py:527 src/gpodder/sync.py:924 msgid "Queued" msgstr "Em espera" #: src/gpodder/download.py:527 src/gpodder/gtkui/model.py:327 msgid "Downloading" msgstr "Downloading" #: src/gpodder/download.py:528 src/gpodder/model.py:721 #: src/gpodder/sync.py:925 msgid "Finished" msgstr "Terminados" #: src/gpodder/download.py:528 src/gpodder/sync.py:925 msgid "Failed" msgstr "Falhou" #: src/gpodder/download.py:528 src/gpodder/sync.py:925 msgid "Cancelled" msgstr "Cancelado" #: src/gpodder/download.py:528 src/gpodder/sync.py:925 msgid "Paused" msgstr "Pausado" #: src/gpodder/download.py:862 msgid "Missing content from server" msgstr "ConteУКdo do servidor esta faltando" #: src/gpodder/download.py:868 #, python-format msgid "I/O Error: %(error)s: %(filename)s" msgstr "Erro de I/O: %(error)s: %(filename)s" #: src/gpodder/download.py:875 #, python-format msgid "HTTP Error %(code)s: %(message)s" msgstr "Erro de HTTP %(code)s: %(message)s" #: src/gpodder/download.py:879 src/gpodder/sync.py:1081 #, python-format msgid "Error: %s" msgstr "Erro: %s" #: src/gpodder/extensions.py:55 msgid "Desktop Integration" msgstr "IntegraУЇУЃo com a УЁrea de trabalho" #: src/gpodder/extensions.py:56 msgid "Interface" msgstr "Interface" #: src/gpodder/extensions.py:57 msgid "Post download" msgstr "PУГs-Download" #: src/gpodder/extensions.py:59 src/gpodder/model.py:779 #: src/gpodder/model.py:1225 msgid "Other" msgstr "Outro" #: src/gpodder/extensions.py:100 msgid "No description for this extension." msgstr "Nenhuma descriУЇУЃo para a extensУЃo" #: src/gpodder/extensions.py:212 #, python-format msgid "Command not found: %(command)s" msgstr "Comando nУЃo foi encontrado: %(command)s" #: src/gpodder/extensions.py:228 #, python-format msgid "Need at least one of the following commands: %(list_of_commands)s" msgstr "" #: src/gpodder/extensions.py:265 #, python-format msgid "Python module not found: %(module)s" msgstr "MУГdulo python nУЃo foi encontrado: %(module)s" #: src/gpodder/model.py:446 src/gpodder/plugins/soundcloud.py:156 msgid "No description available" msgstr "DescriУЇУЃo nУЃo disponУ­vel" #: src/gpodder/model.py:679 msgid "unknown" msgstr "desconhecido" #: src/gpodder/model.py:746 msgid "Default" msgstr "PadrУЃo" #: src/gpodder/model.py:747 msgid "Only keep latest" msgstr "Apenas manter as УКltimas" #: src/gpodder/model.py:1208 src/gpodder/model.py:1223 #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:10 msgid "Video" msgstr "VУ­deo" #: src/gpodder/model.py:1221 msgid "Audio" msgstr "Уudio" #: src/gpodder/my.py:174 #, python-format msgid "Add %s" msgstr "Adicionar %s" #: src/gpodder/my.py:176 #, python-format msgid "Remove %s" msgstr "Remove %s" #: src/gpodder/sync.py:196 msgid "Cancelled by user" msgstr "Cancelado pelo usuУЁrio" #: src/gpodder/sync.py:199 msgid "Writing data to disk" msgstr "Gravando dados no disco" #: src/gpodder/sync.py:295 msgid "Opening iPod database" msgstr "Abrindo o banco de dados do iPod" #: src/gpodder/sync.py:305 msgid "iPod opened" msgstr "iPod aberto" #: src/gpodder/sync.py:316 msgid "Saving iPod database" msgstr "Salvando o banco dando de dados do iPod" #: src/gpodder/sync.py:321 msgid "Writing extended gtkpod database" msgstr "Gravando banco de dados extendido do gtkpod" #: src/gpodder/sync.py:397 src/gpodder/sync.py:680 src/gpodder/sync.py:874 #, python-format msgid "Removing %s" msgstr "Removendo %s" #: src/gpodder/sync.py:412 src/gpodder/sync.py:557 #, python-format msgid "Adding %s" msgstr "Adicionando %s" #: src/gpodder/sync.py:430 #, python-format msgid "Error copying %(episode)s: Not enough free space on %(mountpoint)s" msgstr "Erro ao copiar %(episode)s: NУЃo hУЁ espaУЇo suficiente em %(mountpoint)s" #: src/gpodder/sync.py:515 msgid "Opening MP3 player" msgstr "Abrindo o tocador MP3" #: src/gpodder/sync.py:518 msgid "MP3 player opened" msgstr "Tocador MP3 aberto" #: src/gpodder/sync.py:576 #, python-format msgid "" "Not enough space in %(path)s: %(free)s available, but need at least %(need)s" msgstr "" #: src/gpodder/sync.py:603 src/gpodder/sync.py:611 #, python-format msgid "Error opening %(filename)s: %(message)s" msgstr "Erro ao abrir %(filename)s: %(message)s" #: src/gpodder/sync.py:780 src/gpodder/sync.py:786 msgid "MTP device" msgstr "Dispositivo MTP" #: src/gpodder/sync.py:793 msgid "Opening the MTP device" msgstr "Abrindo o dispositivo MTP" #: src/gpodder/sync.py:803 #, python-format msgid "%s opened" msgstr "%s aberto" #: src/gpodder/sync.py:808 #, python-format msgid "Closing %s" msgstr "Fechando %s" #: src/gpodder/sync.py:816 #, python-format msgid "%s closed" msgstr "%s fechado" #: src/gpodder/sync.py:821 bin/gpo:708 #, python-format msgid "Adding %s..." msgstr "Adicionando %s..." #: src/gpodder/sync.py:924 msgid "Synchronizing" msgstr "Sincronizando" #: src/gpodder/util.py:429 #, python-format msgid "%(count)d day ago" msgid_plural "%(count)d days ago" msgstr[0] "%(count)d dia atrУЁs" msgstr[1] "%(count)d dias atrУЁs" #: src/gpodder/util.py:508 msgid "Today" msgstr "Hoje" #: src/gpodder/util.py:510 msgid "Yesterday" msgstr "Ontem" #: src/gpodder/util.py:553 src/gpodder/util.py:556 msgid "(unknown)" msgstr "(desconhecido)" #: src/gpodder/util.py:1193 src/gpodder/util.py:1212 #, python-format msgid "%(count)d second" msgid_plural "%(count)d seconds" msgstr[0] "%(count)d segundo" msgstr[1] "%(count)d segundos" #: src/gpodder/util.py:1206 #, python-format msgid "%(count)d hour" msgid_plural "%(count)d hours" msgstr[0] "%(count)d hora" msgstr[1] "%(count)d horas" #: src/gpodder/util.py:1209 #, python-format msgid "%(count)d minute" msgid_plural "%(count)d minutes" msgstr[0] "%(count)d minuto" msgstr[1] "%(count)d minutos" #: src/gpodder/util.py:1215 msgid "and" msgstr "e" #: src/gpodder/gtkui/config.py:50 msgid "Integer" msgstr "Inteiro" #: src/gpodder/gtkui/config.py:52 msgid "Float" msgstr "Flutuante" #: src/gpodder/gtkui/config.py:54 msgid "Boolean" msgstr "Boleano" #: src/gpodder/gtkui/config.py:56 msgid "String" msgstr "Texto" #: src/gpodder/gtkui/desktopfile.py:70 #, python-format msgid "Command: %s" msgstr "Comando: %s" #: src/gpodder/gtkui/desktopfile.py:150 msgid "Default application" msgstr "Aplicativo PadrУЃo" #: src/gpodder/gtkui/main.py:205 share/applications/gpodder.desktop.in.h:1 msgid "gPodder" msgstr "gPodder" #: src/gpodder/gtkui/main.py:288 msgid "Loading incomplete downloads" msgstr "Carregando downloads incompletos" #: src/gpodder/gtkui/main.py:289 msgid "Some episodes have not finished downloading in a previous session." msgstr "Alguns episУГdios nУЃo terminaram de baixar na sessУЃo anterior." #: src/gpodder/gtkui/main.py:291 #, python-format msgid "%(count)d partial file" msgid_plural "%(count)d partial files" msgstr[0] "%(count)d arquivo parcial" msgstr[1] "%(count)d arquivos parciais" #: src/gpodder/gtkui/main.py:306 msgid "Resume all" msgstr "Resumir tudo" #: src/gpodder/gtkui/main.py:316 msgid "Incomplete downloads from a previous session were found." msgstr "Downloads incompletos de uma sessУЃo anterior foram encontrados." #: src/gpodder/gtkui/main.py:414 msgid "Action" msgstr "AУЇУЃo" #: src/gpodder/gtkui/main.py:461 msgid "Confirm changes from gpodder.net" msgstr "Confirmar alteraУЇУЕes do gpodder.net" #: src/gpodder/gtkui/main.py:462 msgid "Select the actions you want to carry out." msgstr "Selecione as aУЇУЕes que vocУЊ deseja executar." #: src/gpodder/gtkui/main.py:502 msgid "Uploading subscriptions" msgstr "Enviando InscriУЇУЕes" #: src/gpodder/gtkui/main.py:503 msgid "Your subscriptions are being uploaded to the server." msgstr "Sua lista de inscriУЇУЕes esta sendo enviada para o servidor." #: src/gpodder/gtkui/main.py:508 msgid "List uploaded successfully." msgstr "Envio efetuado com sucesso." #: src/gpodder/gtkui/main.py:515 msgid "Error while uploading" msgstr "Erro durante o envio" #: src/gpodder/gtkui/main.py:800 src/gpodder/gtkui/main.py:928 #: src/gpodder/gtkui/main.py:2622 src/gpodder/gtkui/main.py:2815 #: src/gpodder/gtkui/desktop/episodeselector.py:132 #: src/gpodder/gtkui/desktop/sync.py:270 msgid "Episode" msgstr "EspisУГdio" #: src/gpodder/gtkui/main.py:819 msgid "Size" msgstr "Tamanho" #: src/gpodder/gtkui/main.py:824 msgid "Duration" msgstr "DuraУЇУЃo" #: src/gpodder/gtkui/main.py:828 msgid "Released" msgstr "Publicado" #: src/gpodder/gtkui/main.py:855 msgid "Visible columns" msgstr "Colunas visУ­veis" #: src/gpodder/gtkui/main.py:948 src/gpodder/gtkui/main.py:1108 #: share/gpodder/ui/gtk/gpodder.ui.h:45 msgid "Progress" msgstr "Progresso" #: src/gpodder/gtkui/main.py:982 msgid "Loading episodes" msgstr "Lendo episУГdios" #: src/gpodder/gtkui/main.py:985 msgid "No episodes in current view" msgstr "Nenhum episУГdio nesta vizualizaУЇУЃo" #: src/gpodder/gtkui/main.py:987 msgid "No episodes available" msgstr "Nenhum EpisУГdio disponУ­vel" #: src/gpodder/gtkui/main.py:993 msgid "No podcasts in this view" msgstr "Nenhum podcast nesta visualizaУЇУЃo" #: src/gpodder/gtkui/main.py:995 msgid "No subscriptions" msgstr "Nenhuma inscriУЇУЃo" #: src/gpodder/gtkui/main.py:997 msgid "No active tasks" msgstr "Nenhuma tarefa ativa" #: src/gpodder/gtkui/main.py:1112 src/gpodder/gtkui/main.py:1114 #, python-format msgid "%(count)d active" msgid_plural "%(count)d active" msgstr[0] "%(count)d ativo" msgstr[1] "%(count)d ativos" #: src/gpodder/gtkui/main.py:1116 #, python-format msgid "%(count)d failed" msgid_plural "%(count)d failed" msgstr[0] "%(count)d falhou" msgstr[1] "%(count)d falharam" #: src/gpodder/gtkui/main.py:1118 #, python-format msgid "%(count)d queued" msgid_plural "%(count)d queued" msgstr[0] "%(count)d enfilerado" msgstr[1] "%(count)d enfilerados" #: src/gpodder/gtkui/main.py:1132 #, python-format msgid "downloading %(count)d file" msgid_plural "downloading %(count)d files" msgstr[0] "baixando %(count)d arquivo" msgstr[1] "baixando %(count)d arquivos" #: src/gpodder/gtkui/main.py:1142 #, python-format msgid "synchronizing %(count)d file" msgid_plural "synchronizing %(count)d files" msgstr[0] "sincronizando %(count)d arquivo" msgstr[1] "sincronizando %(count)d arquivos" #: src/gpodder/gtkui/main.py:1144 #, python-format msgid "%(queued)d task queued" msgid_plural "%(queued)d tasks queued" msgstr[0] "%(queued)d tarefa enfileirada" msgstr[1] "%(queued)d tarefas enfileiradas" #: src/gpodder/gtkui/main.py:1168 msgid "Please report this problem and restart gPodder:" msgstr "Por favor reporte este problema e reinicie o gPodder" #: src/gpodder/gtkui/main.py:1168 msgid "Unhandled exception" msgstr "EsseУЇУЃo nУЃo manejada" #: src/gpodder/gtkui/main.py:1235 #, python-format msgid "Feedparser error: %s" msgstr "Erro no feedparser: %s" #: src/gpodder/gtkui/main.py:1371 msgid "Could not download some episodes:" msgstr "NУЃo foi possУ­vel baixar alguns episУГdios:" #: src/gpodder/gtkui/main.py:1373 src/gpodder/gtkui/main.py:1376 msgid "Downloads finished" msgstr "Downloads completos" #: src/gpodder/gtkui/main.py:1379 msgid "Downloads failed" msgstr "Download falhou" #: src/gpodder/gtkui/main.py:1383 msgid "Could not sync some episodes:" msgstr "NУЃo foi possУ­vel sincronizar alguns episУГdios:" #: src/gpodder/gtkui/main.py:1385 src/gpodder/gtkui/main.py:1388 msgid "Device synchronization finished" msgstr "SincronizaУЇУЃo do dispositivo finalizou" #: src/gpodder/gtkui/main.py:1391 msgid "Device synchronization failed" msgstr "SincronizaУЇУЃo de dispositivo falhou" #: src/gpodder/gtkui/main.py:1434 #, python-format msgid "%(count)d more episode" msgid_plural "%(count)d more episodes" msgstr[0] "%(count)d episУГdio mais" msgstr[1] "%(count)d episУГdios mais" #: src/gpodder/gtkui/main.py:1508 msgid "Start download now" msgstr "Iniciar download agora" #: src/gpodder/gtkui/main.py:1510 src/gpodder/gtkui/main.py:1719 #: src/gpodder/gtkui/desktop/episodeselector.py:144 #: share/gpodder/ui/gtk/gpodder.ui.h:20 msgid "Download" msgstr "Download" #: src/gpodder/gtkui/main.py:1511 share/gpodder/ui/gtk/gpodder.ui.h:21 msgid "Cancel" msgstr "Cancelar" #: src/gpodder/gtkui/main.py:1512 msgid "Pause" msgstr "Pausar" #: src/gpodder/gtkui/main.py:1514 msgid "Remove from list" msgstr "Remover da lista" #: src/gpodder/gtkui/main.py:1553 share/gpodder/ui/gtk/gpodder.ui.h:13 msgid "Update podcast" msgstr "Atualizar podcast" #: src/gpodder/gtkui/main.py:1560 msgid "Open download folder" msgstr "Abrir pasta de Download" #: src/gpodder/gtkui/main.py:1566 msgid "Mark episodes as old" msgstr "Marcar episУГdios como velhos" #: src/gpodder/gtkui/main.py:1570 src/gpodder/gtkui/main.py:1778 msgid "Archive" msgstr "Arquivamento" #: src/gpodder/gtkui/main.py:1575 msgid "Remove podcast" msgstr "Remover podcast" #: src/gpodder/gtkui/main.py:1590 share/gpodder/ui/gtk/gpodder.ui.h:10 msgid "Podcast settings" msgstr "ConfiguraУЇУЕes do podcast" #: src/gpodder/gtkui/main.py:1650 msgid "Error converting file." msgstr "Erro ao converter o aquivo" #: src/gpodder/gtkui/main.py:1650 msgid "Bluetooth file transfer" msgstr "TransferУЊncia via Bluetooth" #: src/gpodder/gtkui/main.py:1709 msgid "Preview" msgstr "PrУЉ-visualizaУЇУЃo" #: src/gpodder/gtkui/main.py:1711 msgid "Stream" msgstr "Stream" #: src/gpodder/gtkui/main.py:1755 msgid "Send to" msgstr "Enviar para" #: src/gpodder/gtkui/main.py:1757 msgid "Local folder" msgstr "Pasta local" #: src/gpodder/gtkui/main.py:1762 msgid "Bluetooth device" msgstr "Dispositivo bluetooth" #: src/gpodder/gtkui/main.py:1769 msgid "New" msgstr "Novo" #: src/gpodder/gtkui/main.py:1785 share/gpodder/ui/gtk/gpodder.ui.h:25 msgid "Episode details" msgstr "Detalhes do episУГdio " #: src/gpodder/gtkui/main.py:1938 msgid "Please check your media player settings in the preferences dialog." msgstr "" "Por favor verifique as configuraУЇУЕes dos seu media player nas preferencias" #: src/gpodder/gtkui/main.py:1939 msgid "Error opening player" msgstr "Erro ao abrir o player" #: src/gpodder/gtkui/main.py:2178 msgid "Adding podcasts" msgstr "Adicionando podcasts" #: src/gpodder/gtkui/main.py:2179 msgid "Please wait while episode information is downloaded." msgstr "Por favor aguarde enquanto a informaУЇУЕes dos episУГdios e baixada" #: src/gpodder/gtkui/main.py:2186 msgid "Existing subscriptions skipped" msgstr "IncriУЇУЕes existentes ignoradas" #: src/gpodder/gtkui/main.py:2187 msgid "You are already subscribed to these podcasts:" msgstr "VocУЊ inscreveu estes podcasts" #: src/gpodder/gtkui/main.py:2195 msgid "Podcast requires authentication" msgstr "O Podcast exige autenticaУЇУЃo" #: src/gpodder/gtkui/main.py:2196 #, python-format msgid "Please login to %s:" msgstr "Por favor logue em %s" #: src/gpodder/gtkui/main.py:2204 src/gpodder/gtkui/main.py:2299 msgid "Authentication failed" msgstr "AutenticaУЇУЃo falhou" #: src/gpodder/gtkui/main.py:2210 msgid "Website redirection detected" msgstr "Redirecionamento de website detectado" #: src/gpodder/gtkui/main.py:2211 #, python-format msgid "The URL %(url)s redirects to %(target)s." msgstr "A URL %(url)s redireciona para %(target)s." #: src/gpodder/gtkui/main.py:2212 msgid "Do you want to visit the website now?" msgstr "VocУЊ deseja visitar o website agora?" #: src/gpodder/gtkui/main.py:2221 msgid "Could not add some podcasts" msgstr "NУЃo foi possУ­ovel adicionar alguns podcasts" #: src/gpodder/gtkui/main.py:2222 msgid "Some podcasts could not be added to your list:" msgstr "Alguns podcasts nУЃo foram adicionados a sua lista:" #: src/gpodder/gtkui/main.py:2224 msgid "Unknown" msgstr "Desconhecido" #: src/gpodder/gtkui/main.py:2308 msgid "Redirection detected" msgstr "Redirecionamento Detectado" #: src/gpodder/gtkui/main.py:2342 msgid "Merging episode actions" msgstr "Mesclando aУЇУЕes de episУГdios" #: src/gpodder/gtkui/main.py:2343 msgid "Episode actions from gpodder.net are merged." msgstr "AУЇУЕes de episУГdios do gpodder.net foram mescladas." #: src/gpodder/gtkui/main.py:2368 msgid "Cancelling..." msgstr "Cancelando..." #: src/gpodder/gtkui/main.py:2377 msgid "Please connect to a network, then try again." msgstr "Por favor conecte-se a uma rede e entУЃo tente novamente" #: src/gpodder/gtkui/main.py:2378 msgid "No network connection" msgstr "Sem conexУЃo de rede" #: src/gpodder/gtkui/main.py:2399 #, python-format msgid "Updating %(count)d feed..." msgid_plural "Updating %(count)d feeds..." msgstr[0] "Atualizando %(count)d fonte..." msgstr[1] "Atualizando %(count)d fontes..." #: src/gpodder/gtkui/main.py:2417 #, python-format msgid "Error while updating %(url)s: %(message)s" msgstr "Erro ao atualizar %(url)s: %(message)s" #: src/gpodder/gtkui/main.py:2419 #, python-format msgid "The feed at %(url)s could not be updated." msgstr "A fonte em %(url)s nУЃo pУДde ser atualizada." #: src/gpodder/gtkui/main.py:2420 msgid "Error while updating feed" msgstr "Erro durante a atualizaУЇУЃo do feed" #: src/gpodder/gtkui/main.py:2435 #, python-format msgid "Updated %(podcast)s (%(position)d/%(total)d)" msgstr "%(podcast)s (%(position)d/%(total)d) Atualizados" #: src/gpodder/gtkui/main.py:2466 msgid "No new episodes" msgstr "Sem novos episУГdios" #: src/gpodder/gtkui/main.py:2479 #, python-format msgid "Downloading %(count)d new episode." msgid_plural "Downloading %(count)d new episodes." msgstr[0] "Baixando %(count)d novo episУГdio." msgstr[1] "Baixando %(count)d novos episУГdios." #: src/gpodder/gtkui/main.py:2480 src/gpodder/gtkui/main.py:2484 #: src/gpodder/gtkui/main.py:2833 msgid "New episodes available" msgstr "Novo episУГdio disponУ­vel" #: src/gpodder/gtkui/main.py:2483 #, python-format msgid "%(count)d new episode added to download list." msgid_plural "%(count)d new episodes added to download list." msgstr[0] "%(count)d novo episУГdio foi adicionado У  lista de downloads." msgstr[1] "%(count)d novos episУГdios foram adicionados У  lista de downloads." #: src/gpodder/gtkui/main.py:2490 #, python-format msgid "%(count)d new episode available" msgid_plural "%(count)d new episodes available" msgstr[0] "%(count)d novo episУГdio disponУ­vel" msgstr[1] "%(count)d novos episУГdios disponУ­veis" #: src/gpodder/gtkui/main.py:2509 msgid "Quit gPodder" msgstr "Sair do gPodder" #: src/gpodder/gtkui/main.py:2510 msgid "" "You are downloading episodes. You can resume downloads the next time you " "start gPodder. Do you want to quit now?" msgstr "" "VocУЊ esta baiando episУГdios. VocУЊ pode continuar o downloaa da prУГxima vez " "que rodar o gPodder. Deseja sair agora?" #: src/gpodder/gtkui/main.py:2559 msgid "Episodes are locked" msgstr "Os espisУГdos estУЃo protegidos" #: src/gpodder/gtkui/main.py:2560 msgid "" "The selected episodes are locked. Please unlock the episodes that you want " "to delete before trying to delete them." msgstr "" "Os episУГdis selecionados estУЃo protegidos. Desproteja os episУГdios quevocУЊ " "pretende deletar primeiro." #: src/gpodder/gtkui/main.py:2565 #, python-format msgid "Delete %(count)d episode?" msgid_plural "Delete %(count)d episodes?" msgstr[0] "Excluir %(count)d episУГdio?" msgstr[1] "Excluir %(count)d episУГdios?" #: src/gpodder/gtkui/main.py:2566 msgid "Deleting episodes removes downloaded files." msgstr "Ao excluir episУГdios, estУЁ se removendo os arquivos baixados." #: src/gpodder/gtkui/main.py:2571 msgid "Deleting episodes" msgstr "Excluindo episУГdios" #: src/gpodder/gtkui/main.py:2572 msgid "Please wait while episodes are deleted" msgstr "Por favor aguarde enquanto os episУГdios sУЃo deletados." #: src/gpodder/gtkui/main.py:2625 #, python-format msgid "Select older than %(count)d day" msgid_plural "Select older than %(count)d days" msgstr[0] "Selecionar mais antigos do que %(count)d dia" msgstr[1] "Selecionar mais antigos do que %(count)d dias" #: src/gpodder/gtkui/main.py:2627 msgid "Select played" msgstr "Selecrinar os reprodizidos" #: src/gpodder/gtkui/main.py:2628 msgid "Select finished" msgstr "Selecionar finalizados" #: src/gpodder/gtkui/main.py:2632 msgid "Select the episodes you want to delete:" msgstr "Selecione os episУГdios que vocУЊ deseja deletar:" #: src/gpodder/gtkui/main.py:2648 share/gpodder/ui/gtk/gpodder.ui.h:4 msgid "Delete episodes" msgstr "Excluir episУГdios" #: src/gpodder/gtkui/main.py:2703 src/gpodder/gtkui/main.py:2934 #: src/gpodder/gtkui/main.py:3034 msgid "No podcast selected" msgstr "Nenhum podcast selecionado" #: src/gpodder/gtkui/main.py:2704 msgid "Please select a podcast in the podcasts list to update." msgstr "Por favor Selecione um podcast da lista para atualizУЁ-lo" #: src/gpodder/gtkui/main.py:2774 #, python-format msgid "Download error while downloading %(episode)s: %(message)s" msgstr "Erro ao baixar %(episode)s: %(message)s" #: src/gpodder/gtkui/main.py:2775 msgid "Download error" msgstr "Erro de download" #: src/gpodder/gtkui/main.py:2818 msgid "Select the episodes you want to download:" msgstr "Selecione o episУГdio que vocУЊ deseja baixar" #: src/gpodder/gtkui/main.py:2841 msgid "Mark as old" msgstr "Marque como antigo" #: src/gpodder/gtkui/main.py:2848 msgid "Please check for new episodes later." msgstr "Por faver verifique por novos episУГdios mais tarde." #: src/gpodder/gtkui/main.py:2849 msgid "No new episodes available" msgstr "Sem novos episУГdios disponУ­veis " #: src/gpodder/gtkui/main.py:2900 msgid "Login to gpodder.net" msgstr "Conectar ao gpodder.net" #: src/gpodder/gtkui/main.py:2901 msgid "Please login to download your subscriptions." msgstr "Por favor faУЇa o login para baixar suas inscriУЇУЕes." #: src/gpodder/gtkui/main.py:2916 msgid "Subscriptions on gpodder.net" msgstr "InscriУЇУЕes no gpodder.net" #: src/gpodder/gtkui/main.py:2935 msgid "Please select a podcast in the podcasts list to edit." msgstr "Por favor selecione um podcast da lista para edita-lo" #: src/gpodder/gtkui/main.py:2949 msgid "Podcast" msgstr "Podcast" #: src/gpodder/gtkui/main.py:2955 share/gpodder/ui/gtk/gpodder.ui.h:12 msgid "Remove podcasts" msgstr "Remover podcasts" #: src/gpodder/gtkui/main.py:2956 msgid "Select the podcast you want to remove." msgstr "Selecione o podcast que vocУЊ quer remover" #: src/gpodder/gtkui/main.py:2960 #: src/gpodder/gtkui/desktop/episodeselector.py:105 msgid "Remove" msgstr "Remover" #: src/gpodder/gtkui/main.py:2969 msgid "Removing podcast" msgstr "Removendo podcast" #: src/gpodder/gtkui/main.py:2970 msgid "Please wait while the podcast is removed" msgstr "Porfavor, aguarde enquanto o podcast УЉ removido" #: src/gpodder/gtkui/main.py:2971 msgid "Do you really want to remove this podcast and its episodes?" msgstr "VocУЊ realmente deseja remover este podcast e todos seus episУГdios?" #: src/gpodder/gtkui/main.py:2973 msgid "Removing podcasts" msgstr "Removendo podcasts" #: src/gpodder/gtkui/main.py:2974 msgid "Please wait while the podcasts are removed" msgstr "Porfavor, aguarde enquanto os podcasts sУЃo removidos" #: src/gpodder/gtkui/main.py:2975 msgid "Do you really want to remove the selected podcasts and their episodes?" msgstr "" "VocУЊ realmente deseja remover os podcasts selecionados e seus episУГdios?" #: src/gpodder/gtkui/main.py:3035 msgid "Please select a podcast in the podcasts list to remove." msgstr "Por favor selecione um podcast da lista para remove-lo" #: src/gpodder/gtkui/main.py:3045 msgid "OPML files" msgstr "Arquivos OPML" #: src/gpodder/gtkui/main.py:3050 msgid "Import from OPML" msgstr "Importar de um arquivo OPML" #: src/gpodder/gtkui/main.py:3064 msgid "Import podcasts from OPML file" msgstr "Importar podcasts de aquivo OPML" #: src/gpodder/gtkui/main.py:3071 msgid "Nothing to export" msgstr "Nada para exportar" #: src/gpodder/gtkui/main.py:3072 msgid "" "Your list of podcast subscriptions is empty. Please subscribe to some " "podcasts first before trying to export your subscription list." msgstr "" "Sua lista de inscriУЇУЃo de podcasts esta vazia, por favor se inscreva aluns " "podcasts antes de tentar exportar sua lista de incriУЇУЃo" #: src/gpodder/gtkui/main.py:3076 msgid "Export to OPML" msgstr "Exportar para OPML" #: src/gpodder/gtkui/main.py:3087 #, python-format msgid "%(count)d subscription exported" msgid_plural "%(count)d subscriptions exported" msgstr[0] "%(count)d inscriУЇУЃo exportada" msgstr[1] "%(count)d inscriУЇУЕes exportadas" #: src/gpodder/gtkui/main.py:3088 msgid "Your podcast list has been successfully exported." msgstr "Sua lista de podcasts foi exportada com sucesso." #: src/gpodder/gtkui/main.py:3090 msgid "Could not export OPML to file. Please check your permissions." msgstr "" "NУЃo foi possivel exportar para o aquivo OPML. Por favor verifique suas " "permissУЕes." #: src/gpodder/gtkui/main.py:3090 msgid "OPML export failed" msgstr "ExportaУЇУЃo para OPML falhou" #: src/gpodder/gtkui/main.py:3117 msgid "No updates available" msgstr "Nenhuma atualizaУЇУЃo disponУ­vel" #: src/gpodder/gtkui/main.py:3118 msgid "You have the latest version of gPodder." msgstr "VocУЊ possui a УКltima versУЃo do gPodder." #: src/gpodder/gtkui/main.py:3122 msgid "New version available" msgstr "Nova versУЃo disponУ­vel" #: src/gpodder/gtkui/main.py:3124 #, python-format msgid "Installed version: %s" msgstr "VersУЃo instalada: %s" #: src/gpodder/gtkui/main.py:3125 #, python-format msgid "Newest version: %s" msgstr "VersУЃo mais nova: %s" #: src/gpodder/gtkui/main.py:3126 #, python-format msgid "Release date: %s" msgstr "Data de lanУЇamento: %s" #: src/gpodder/gtkui/main.py:3128 msgid "Download the latest version from gpodder.org?" msgstr "Baixar a УКltima versУЃo do gpodder.org?" #: src/gpodder/gtkui/main.py:3141 msgid "About gPodder" msgstr "Sobre gPodder" #: src/gpodder/gtkui/main.py:3424 #, fuzzy msgid "Please register a YouTube API key and set it in the preferences." msgstr "Por favor configure seu dispositivo no diУЁlogo de preferУЊncias." #: src/gpodder/gtkui/main.py:3425 msgid "Would you like to set up an API key now?" msgstr "" #: src/gpodder/gtkui/main.py:3425 msgid "API key required" msgstr "" #: src/gpodder/gtkui/main.py:3444 bin/gpo:631 #, fuzzy msgid "No unique URL found" msgstr "Nenhum canal encontrado" #: src/gpodder/gtkui/main.py:3449 bin/gpo:637 #, fuzzy msgid "Already subscribed" msgstr "NУЃo foi possУ­vel se inscrever a %s." #: src/gpodder/gtkui/main.py:3458 bin/gpo:649 #, python-format msgid "Make sure the API key is correct. Error: %(message)s" msgstr "" #: src/gpodder/gtkui/main.py:3459 #, fuzzy msgid "Error getting YouTube channels" msgstr "Erro ao alterar a opУЇУЃo" #: src/gpodder/gtkui/main.py:3462 #, fuzzy msgid "Successfully migrated subscriptions" msgstr "%s adicionado com sucesso." #: src/gpodder/gtkui/main.py:3464 #, fuzzy msgid "Subscriptions are up to date" msgstr "InscriУЇУЃo pausada" #: src/gpodder/gtkui/main.py:3467 msgid "These URLs failed:" msgstr "" #: src/gpodder/gtkui/main.py:3469 #, fuzzy msgid "Could not migrate some subscriptions" msgstr "NУЃo foi possУ­ovel adicionar alguns podcasts" #: src/gpodder/gtkui/main.py:3493 msgid "Cannot start gPodder" msgstr "NУЃo foi possУ­vel iniciar o gPodder" #: src/gpodder/gtkui/main.py:3494 #, python-format msgid "D-Bus error: %s" msgstr "Erro de D-Bus: %s" #: src/gpodder/gtkui/model.py:68 #, python-format msgid "released %s" msgstr "publicado em %s" #: src/gpodder/gtkui/model.py:69 src/gpodder/gtkui/model.py:87 #: src/gpodder/gtkui/model.py:237 src/gpodder/gtkui/shownotes.py:84 #, python-format msgid "from %s" msgstr "De %s" #: src/gpodder/gtkui/model.py:80 src/gpodder/gtkui/model.py:393 msgid "played" msgstr "reproduzido" #: src/gpodder/gtkui/model.py:82 msgid "unplayed" msgstr "nУЃo reproduzido" #: src/gpodder/gtkui/model.py:85 msgid "today" msgstr "hoje" #: src/gpodder/gtkui/model.py:86 #, python-format msgid "downloaded %s" msgstr "baixado %s" #: src/gpodder/gtkui/model.py:337 msgid "Deleted" msgstr "Removido" #: src/gpodder/gtkui/model.py:342 msgid "New episode" msgstr "Novo episУГdio" #: src/gpodder/gtkui/model.py:356 msgid "Downloaded episode" msgstr "EpisУГdio baixado" #: src/gpodder/gtkui/model.py:359 msgid "Downloaded video episode" msgstr "EpisУГdio de vУ­deo baixado" #: src/gpodder/gtkui/model.py:362 msgid "Downloaded image" msgstr "Imagem baixada" #: src/gpodder/gtkui/model.py:365 msgid "Downloaded file" msgstr "Arquivo baixado" #: src/gpodder/gtkui/model.py:380 msgid "missing file" msgstr "arquivo faltando" #: src/gpodder/gtkui/model.py:384 msgid "never displayed" msgstr "nunca exibidos" #: src/gpodder/gtkui/model.py:386 msgid "never played" msgstr "nunca reproduzido" #: src/gpodder/gtkui/model.py:388 msgid "never opened" msgstr "nunca aberto" #: src/gpodder/gtkui/model.py:391 msgid "displayed" msgstr "exibido" #: src/gpodder/gtkui/model.py:395 msgid "opened" msgstr "aberto" #: src/gpodder/gtkui/model.py:397 msgid "deletion prevented" msgstr "remoУЇУЃo impedida" #: src/gpodder/gtkui/model.py:432 share/gpodder/ui/gtk/gpodder.ui.h:32 msgid "All episodes" msgstr "Todos os episУГdios" #: src/gpodder/gtkui/model.py:433 msgid "from all podcasts" msgstr "De todos os podcasts" #: src/gpodder/gtkui/model.py:625 msgid "Subscription paused" msgstr "InscriУЇУЃo pausada" #: src/gpodder/gtkui/shownotes.py:118 #, fuzzy msgid "Please select an episode" msgstr "Selecione os episУГdios" #: src/gpodder/gtkui/interface/addpodcast.py:74 msgid "Nothing to paste." msgstr "Nada para colar" #: src/gpodder/gtkui/interface/addpodcast.py:74 msgid "Clipboard is empty" msgstr "Area de transferУЊncia esta vazia" #: src/gpodder/gtkui/interface/common.py:160 msgid "Username" msgstr "Login" #: src/gpodder/gtkui/interface/common.py:163 msgid "New user" msgstr "Novo usuУЁrio" #: src/gpodder/gtkui/interface/common.py:170 msgid "Login" msgstr "Login" #: src/gpodder/gtkui/interface/common.py:172 msgid "Authentication required" msgstr "AutenticaУЇУЃo requerida" #: src/gpodder/gtkui/interface/common.py:203 msgid "Password" msgstr "Senha" #: src/gpodder/gtkui/interface/common.py:225 msgid "Select destination" msgstr "Selecione destino" #: src/gpodder/gtkui/interface/configeditor.py:34 msgid "Setting" msgstr "ConfiguraУЇУЕes" #: src/gpodder/gtkui/interface/configeditor.py:41 msgid "Set to" msgstr "Escolha para" #: src/gpodder/gtkui/interface/configeditor.py:81 #, python-format msgid "Cannot set %(field)s to %(value)s. Needed data type: %(datatype)s" msgstr "" "NУЃo foi possivel mudar de %(field)s para %(value)s.УЉ precido o tipo de dado: " "%(datatype)s" #: src/gpodder/gtkui/interface/configeditor.py:85 msgid "Error setting option" msgstr "Erro ao alterar a opУЇУЃo" #: src/gpodder/gtkui/desktop/channel.py:100 msgid "Add section" msgstr "Adicionar seУЇУЃo" #: src/gpodder/gtkui/desktop/channel.py:100 msgid "New section:" msgstr "Nova seУЇУЃo:" #: src/gpodder/gtkui/desktop/channel.py:133 msgid "Select new podcast cover artwork" msgstr "Selecione nova capa para o podcast" #: src/gpodder/gtkui/desktop/channel.py:161 msgid "You can only drop a single image or URL here." msgstr "VocУЊ pode arrastar apenas uma imagem ou URL aqui." #: src/gpodder/gtkui/desktop/channel.py:161 #: src/gpodder/gtkui/desktop/channel.py:171 msgid "Drag and drop" msgstr "Arraste e solte" #: src/gpodder/gtkui/desktop/channel.py:171 msgid "You can only drop local files and http:// URLs here." msgstr "VocУЊ pode somente soltar aquivos e URLs http:// aqui." #: src/gpodder/gtkui/desktop/deviceplaylist.py:98 #, fuzzy, python-format msgid "Folder %s could not be created." msgstr "A fonte em %(url)s nУЃo pУДde ser atualizada." #: src/gpodder/gtkui/desktop/deviceplaylist.py:98 #, fuzzy msgid "Error writing playlist" msgstr "Erro ao abrir o player" #: src/gpodder/gtkui/desktop/episodeselector.py:288 #: share/gpodder/ui/gtk/gpodderepisodeselector.ui.h:2 msgid "Select all" msgstr "Selecionar tudo" #: src/gpodder/gtkui/desktop/episodeselector.py:292 #: share/gpodder/ui/gtk/gpodderepisodeselector.ui.h:3 msgid "Select none" msgstr "Desselecionar todos" #: src/gpodder/gtkui/desktop/episodeselector.py:324 msgid "Nothing selected" msgstr "Nenhuma seleУЇУЃo" #: src/gpodder/gtkui/desktop/episodeselector.py:325 #, python-format msgid "%(count)d episode" msgid_plural "%(count)d episodes" msgstr[0] "%(count)d episУГdio" msgstr[1] "%(count)d episУГdios" #: src/gpodder/gtkui/desktop/episodeselector.py:327 #, python-format msgid "size: %s" msgstr "tamanho: %s" #: src/gpodder/gtkui/desktop/podcastdirectory.py:238 #, fuzzy msgid "Loading podcasts" msgstr "Adicionando podcasts" #: src/gpodder/gtkui/desktop/podcastdirectory.py:239 #, fuzzy msgid "Please wait while the podcast list is downloaded" msgstr "Porfavor, aguarde enquanto o podcast УЉ removido" #: src/gpodder/gtkui/desktop/preferences.py:51 #: src/gpodder/gtkui/desktop/preferences.py:93 msgid "Do nothing" msgstr "NУЃo faУЇa nada" #: src/gpodder/gtkui/desktop/preferences.py:52 msgid "Show episode list" msgstr "Exibir a lista de episУГdios" #: src/gpodder/gtkui/desktop/preferences.py:53 msgid "Add to download list" msgstr "Adicionar У  lista de downloads" #: src/gpodder/gtkui/desktop/preferences.py:54 msgid "Download immediately" msgstr "Baixar imediatamente" #: src/gpodder/gtkui/desktop/preferences.py:72 msgid "None" msgstr "Nenhum" #: src/gpodder/gtkui/desktop/preferences.py:73 msgid "iPod" msgstr "" #: src/gpodder/gtkui/desktop/preferences.py:74 msgid "Filesystem-based" msgstr "Baseado no sistema de arquivos" #: src/gpodder/gtkui/desktop/preferences.py:94 msgid "Mark as played" msgstr "Marcar como reproduzido" #: src/gpodder/gtkui/desktop/preferences.py:95 msgid "Delete from gPodder" msgstr "Excluir do gPodder" #: src/gpodder/gtkui/desktop/preferences.py:123 #, python-format msgid "Custom (%(format_ids)s)" msgstr "Personalizado (%(format_ids)s)" #: src/gpodder/gtkui/desktop/preferences.py:318 msgid "Name" msgstr "Nome" #: src/gpodder/gtkui/desktop/preferences.py:369 #, fuzzy msgid "Documentation" msgstr "DuraУЇУЃo" #: src/gpodder/gtkui/desktop/preferences.py:374 #, fuzzy msgid "Extension info" msgstr "InformaУЇУЃo de mУГdulo de extensУЃo" #: src/gpodder/gtkui/desktop/preferences.py:379 msgid "Support the author" msgstr "" #: src/gpodder/gtkui/desktop/preferences.py:413 msgid "Extension cannot be activated" msgstr "ExtensУЃo nУЃo pode ser ativada" #: src/gpodder/gtkui/desktop/preferences.py:426 msgid "Extension module info" msgstr "InformaУЇУЃo de mУГdulo de extensУЃo" #: src/gpodder/gtkui/desktop/preferences.py:463 msgid "Configure audio player" msgstr "Configurar o reprodutor de УЁudio" #: src/gpodder/gtkui/desktop/preferences.py:464 #: src/gpodder/gtkui/desktop/preferences.py:474 msgid "Command:" msgstr "Comando:" #: src/gpodder/gtkui/desktop/preferences.py:473 msgid "Configure video player" msgstr "Configurar reprodutor de vУ­deo" #: src/gpodder/gtkui/desktop/preferences.py:485 #: src/gpodder/gtkui/desktop/preferences.py:503 msgid "manually" msgstr "manualmente" #: src/gpodder/gtkui/desktop/preferences.py:505 #, python-format msgid "after %(count)d day" msgid_plural "after %(count)d days" msgstr[0] "depois de %(count)d dia" msgstr[1] "depois de %(count)d dias" #: src/gpodder/gtkui/desktop/preferences.py:541 msgid "Replace subscription list on server" msgstr "Substituir a lista de inscriУЇУЕes no servidor" #: src/gpodder/gtkui/desktop/preferences.py:542 msgid "" "Remote podcasts that have not been added locally will be removed on the " "server. Continue?" msgstr "" "Podcasts remotos que nУЃo foram adicionados localmente serУЃo removidos do " "servidor. continuar?" #: src/gpodder/gtkui/desktop/preferences.py:621 msgid "Select folder for mount point" msgstr "Selecionar pasta para ponto de montagem" #: src/gpodder/gtkui/desktop/preferences.py:638 #, fuzzy msgid "Select folder for playlists" msgstr "Selecionar pasta para ponto de montagem" #: src/gpodder/gtkui/desktop/sync.py:86 msgid "No device configured" msgstr "Nenhum dispositivo configurado" #: src/gpodder/gtkui/desktop/sync.py:87 msgid "Please set up your device in the preferences dialog." msgstr "Por favor configure seu dispositivo no diУЁlogo de preferУЊncias." #: src/gpodder/gtkui/desktop/sync.py:91 msgid "Cannot open device" msgstr "NУЃo foi possУ­vel abrir dispositivo" #: src/gpodder/gtkui/desktop/sync.py:92 msgid "Please check the settings in the preferences dialog." msgstr "Por favor verifique as configuraУЇУЕes no diУЁlogo de preferУЊncias" #: src/gpodder/gtkui/desktop/sync.py:139 msgid "Not enough space left on device" msgstr "NУЃo hУЁ espaУЇo suficiente no dispositivo" #: src/gpodder/gtkui/desktop/sync.py:140 #, python-format msgid "" "Additional free space required: %(required_space)s\n" "Do you want to continue?" msgstr "" "Precisa de espaУЇo livre adicional: %(required_space)s\n" "VocУЊ deseja continuar?" #: src/gpodder/gtkui/desktop/sync.py:199 #, fuzzy msgid "Update successful" msgstr "Envio efetuado com sucesso." #: src/gpodder/gtkui/desktop/sync.py:200 msgid "The playlist on your MP3 player has been updated." msgstr "" #: src/gpodder/gtkui/desktop/sync.py:274 msgid "Episodes have been deleted on device" msgstr "" #: src/gpodder/gtkui/desktop/sync.py:285 #, fuzzy msgid "Error writing playlist files" msgstr "Erro ao converter o aquivo" #: src/gpodder/plugins/soundcloud.py:154 msgid "Unknown track" msgstr "Faixa desconhecida" #: src/gpodder/plugins/soundcloud.py:181 #, python-format msgid "%s on Soundcloud" msgstr "%s em Soundcloud" #: src/gpodder/plugins/soundcloud.py:190 #, python-format msgid "Tracks published by %s on Soundcloud." msgstr "%s faixas publicadas no Soundcloud" #: src/gpodder/plugins/soundcloud.py:217 #, python-format msgid "%s's favorites on Soundcloud" msgstr "Favorito de %s no Soundcloud" #: src/gpodder/plugins/soundcloud.py:223 #, python-format msgid "Tracks favorited by %s on Soundcloud." msgstr "Trilhas favoritas por %s no Soundcloud." #: share/gpodder/extensions/audio_converter.py:20 #, fuzzy msgid "Convert audio files" msgstr "ConversУЃo falhou" #: share/gpodder/extensions/audio_converter.py:21 #, fuzzy msgid "Transcode audio files to mp3/ogg" msgstr "Transcodificar arquivos .ogg para .mp3 usando ffmpeg" #: share/gpodder/extensions/audio_converter.py:84 #: share/gpodder/extensions/video_converter.py:86 #, python-format msgid "Convert to %(format)s" msgstr "Converter para %(format)s" #: share/gpodder/extensions/audio_converter.py:111 #: share/gpodder/extensions/rockbox_convert2mp4.py:65 #: share/gpodder/extensions/video_converter.py:111 msgid "File converted" msgstr "Arquivo convertido" #: share/gpodder/extensions/audio_converter.py:114 #: share/gpodder/extensions/video_converter.py:114 msgid "Conversion failed" msgstr "ConversУЃo falhou" #: share/gpodder/extensions/concatenate_videos.py:20 #: share/gpodder/extensions/concatenate_videos.py:100 #, fuzzy msgid "Concatenate videos" msgstr "ConversУЃo falhou" #: share/gpodder/extensions/concatenate_videos.py:21 #, fuzzy msgid "Add a context menu item for concatenating multiple videos" msgstr "" "Adiciona um menu de contexto para enfileirar episУГdios em reprodutores de " "mУ­dia instalados" #: share/gpodder/extensions/concatenate_videos.py:37 msgid "Save video" msgstr "" #: share/gpodder/extensions/concatenate_videos.py:66 #, fuzzy msgid "Concatenating video files" msgstr "ConversУЃo falhou" #: share/gpodder/extensions/concatenate_videos.py:67 #, python-format msgid "Writing %(filename)s" msgstr "" #: share/gpodder/extensions/concatenate_videos.py:78 msgid "Videos successfully converted" msgstr "" #: share/gpodder/extensions/concatenate_videos.py:79 #, fuzzy msgid "Error converting videos" msgstr "Erro ao converter o aquivo" #: share/gpodder/extensions/concatenate_videos.py:80 msgid "Concatenation result" msgstr "" #: share/gpodder/extensions/enqueue_in_mediaplayer.py:16 msgid "Enqueue in media players" msgstr "Enfileirar em reprodutores de mУ­dia" #: share/gpodder/extensions/enqueue_in_mediaplayer.py:17 msgid "" "Add a context menu item for enqueueing episodes in installed media players" msgstr "" "Adiciona um menu de contexto para enfileirar episУГdios em reprodutores de " "mУ­dia instalados" #: share/gpodder/extensions/enqueue_in_mediaplayer.py:35 msgid "Enqueue in" msgstr "Enfileirar em" #: share/gpodder/extensions/episode_website_context_menu.py:14 msgid "\"Open website\" episode context menu" msgstr "" #: share/gpodder/extensions/episode_website_context_menu.py:15 #, fuzzy msgid "Add a context menu item for opening the website of an episode" msgstr "" "Adiciona um menu de contexto para enfileirar episУГdios em reprodutores de " "mУ­dia instalados" #: share/gpodder/extensions/episode_website_context_menu.py:30 #, fuzzy msgid "Open website" msgstr "Site:" #: share/gpodder/extensions/gtk_statusicon.py:14 msgid "Gtk Status Icon" msgstr "Уcone de status para GTK" #: share/gpodder/extensions/gtk_statusicon.py:15 msgid "Show a status icon for Gtk-based Desktops." msgstr "Mostra um У­cone de status para ambientes baseados em Gtk," #: share/gpodder/extensions/minimize_on_start.py:10 msgid "Minimize on start" msgstr "Minimizar no inУ­cio" #: share/gpodder/extensions/minimize_on_start.py:11 msgid "Minimizes the gPodder window on startup." msgstr "Minimiza a janela do gPodder na inicializaУЇУЃo." #: share/gpodder/extensions/mpris-listener.py:33 msgid "MPRIS Listener" msgstr "" #: share/gpodder/extensions/mpris-listener.py:34 msgid "Convert MPRIS notifications to gPodder Media Player D-Bus API" msgstr "" #: share/gpodder/extensions/normalize_audio.py:21 msgid "Normalize audio with re-encoding" msgstr "Normalizar УЁudio com recodificaУЇУЃo" #: share/gpodder/extensions/normalize_audio.py:22 msgid "Normalize the volume of audio files with normalize-audio" msgstr "Normalizar o volume de arquivos de УЁudio com normalize-audio" #: share/gpodder/extensions/normalize_audio.py:99 msgid "File normalized" msgstr "Arquivo normalizado" #: share/gpodder/extensions/rename_download.py:16 msgid "Rename episodes after download" msgstr "Renomear episУГdios depois de baixar" #: share/gpodder/extensions/rename_download.py:17 msgid "Rename episodes to \".\" on download" msgstr "Renomear episУГdiops para \".\" ao baixar" #: share/gpodder/extensions/rm_ogg_cover.py:37 msgid "Remove cover art from OGG files" msgstr "Remover arte da capa dos arquivos OGG" #: share/gpodder/extensions/rm_ogg_cover.py:38 msgid "removes coverart from all downloaded ogg files" msgstr "remove arte de capa de todos os arquivos ogg baixados" #: share/gpodder/extensions/rm_ogg_cover.py:66 msgid "Remove cover art" msgstr "Remover arte de capa" #: share/gpodder/extensions/rockbox_convert2mp4.py:26 msgid "Convert video files to MP4 for Rockbox" msgstr "Converter arquivos de vУ­deo para MP4 para Rockbox" #: share/gpodder/extensions/rockbox_convert2mp4.py:27 msgid "Converts all videos to a Rockbox-compatible format" msgstr "Converte todos os vУ­deos para um formato compatУ­vel com Rockbox" #: share/gpodder/extensions/sonos.py:19 share/gpodder/extensions/sonos.py:78 msgid "Stream to Sonos" msgstr "" #: share/gpodder/extensions/sonos.py:20 msgid "Stream podcasts to Sonos speakers" msgstr "" #: share/gpodder/extensions/tagging.py:45 msgid "Tag downloaded files using Mutagen" msgstr "Marcar tag em arquivos baixados usando Mutagen" #: share/gpodder/extensions/tagging.py:46 msgid "Add episode and podcast titles to MP3/OGG tags" msgstr "Adicionar tУ­tulos de episУГdios e podcast para as tags MP3/OGG" #: share/gpodder/extensions/taskbar_progress.py:28 #, fuzzy msgid "Show download progress on the taskbar" msgstr "Mostrar progresso do download no У­cone do LanУЇador do Unity." #: share/gpodder/extensions/taskbar_progress.py:29 msgid "Displays the progress on the Windows taskbar." msgstr "" #: share/gpodder/extensions/ted_subtitles.py:16 msgid "Subtitle Downloader for TED Talks" msgstr "Baixador de legendas para TED Talks" #: share/gpodder/extensions/ted_subtitles.py:17 msgid "Downloads .srt subtitles for TED Talks Videos" msgstr "Baixa legendas em .srt para TED Talks Videos" #: share/gpodder/extensions/ubuntu_appindicator.py:10 msgid "Ubuntu App Indicator" msgstr "App Indicator do Ubuntu" #: share/gpodder/extensions/ubuntu_appindicator.py:11 msgid "Show a status indicator in the top bar." msgstr "Mostrar um indicador de status na barra superior." #: share/gpodder/extensions/ubuntu_appindicator.py:47 msgid "Show main window" msgstr "Mostrar janela principal" #: share/gpodder/extensions/ubuntu_appindicator.py:57 #: share/gpodder/ui/gtk/gpodder.ui.h:6 msgid "Quit" msgstr "Sair" #: share/gpodder/extensions/ubuntu_unity.py:10 msgid "Ubuntu Unity Integration" msgstr "Ubuntu Unity Integration" #: share/gpodder/extensions/ubuntu_unity.py:11 msgid "Show download progress in the Unity Launcher icon." msgstr "Mostrar progresso do download no У­cone do LanУЇador do Unity." #: share/gpodder/extensions/update_feeds_on_startup.py:14 msgid "Search for new episodes on startup" msgstr "Pesquisar por novos episУГdios ao iniciar" #: share/gpodder/extensions/update_feeds_on_startup.py:15 msgid "Starts the search for new episodes on startup" msgstr "Inicia a pesquisa por novos episУГdios ao iniciar" #: share/gpodder/extensions/video_converter.py:22 #, fuzzy msgid "Convert video files" msgstr "ConversУЃo falhou" #: share/gpodder/extensions/video_converter.py:23 #, fuzzy msgid "Transcode video files to avi/mp4/m4v" msgstr "Transcodificar arquivos .ogg para .mp3 usando ffmpeg" #: share/gpodder/ui/gtk/gpodderaddpodcast.ui.h:1 msgid "Add a new podcast" msgstr "Adicionar um novo podcast" #: share/gpodder/ui/gtk/gpodderaddpodcast.ui.h:2 msgid "URL:" msgstr "URL:" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:1 msgid "gPodder Podcast Editor" msgstr "Editor de podcast gPodder" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:2 msgid "Section:" msgstr "SeУЇУЃo:" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:3 msgid "Disable feed updates (pause subscription)" msgstr "Desabilitar atualizaУЇУЃo de fontes (pausar inscriУЇУЃo)" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:4 msgid "Synchronize to MP3 player devices" msgstr "Sincronizar com dispositivos reprodutores de MP3" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:5 msgid "Strategy:" msgstr "EstratУЉgia:" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:6 #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:6 msgid "General" msgstr "Geral" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:7 msgid "HTTP/FTP Authentication" msgstr "AutenticaУЇУЃo HTTP/FTP" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:8 #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:13 msgid "Username:" msgstr "Login:" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:9 #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:14 msgid "Password:" msgstr "Senha:" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:10 msgid "Locations" msgstr "LocalizaУЇУЕes" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:11 msgid "Download to:" msgstr "Baixar para:" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:12 msgid "Website:" msgstr "Site:" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:13 msgid "website label" msgstr "TУ­tulo do Site" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:14 msgid "Advanced" msgstr "AvanУЇado" #: share/gpodder/ui/gtk/gpodderconfigeditor.ui.h:1 msgid "gPodder Configuration Editor" msgstr "Editor de configuraУЇУЃo do gPodder" #: share/gpodder/ui/gtk/gpodderconfigeditor.ui.h:2 msgid "Search for:" msgstr "Procurar por:" #: share/gpodder/ui/gtk/gpodderconfigeditor.ui.h:3 msgid "Show All" msgstr "Exibir todos" #: share/gpodder/ui/gtk/gpodderepisodeselector.ui.h:1 msgid "Select episodes" msgstr "Selecione os episУГdios" #: share/gpodder/ui/gtk/gpodderpodcastdirectory.ui.h:1 msgid "Find new podcasts" msgstr "Ache novos podcasts" #: share/gpodder/ui/gtk/gpodderpodcastdirectory.ui.h:2 msgid "Select All" msgstr "Selecione todos" #: share/gpodder/ui/gtk/gpodderpodcastdirectory.ui.h:3 msgid "Select None" msgstr "Desselecione todos" #: share/gpodder/ui/gtk/gpodderpodcastdirectory.ui.h:4 msgid "label" msgstr "" #: share/gpodder/ui/gtk/gpodderpodcastdirectory.ui.h:5 msgid "..." msgstr "" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:1 #: share/gpodder/ui/gtk/gpodder.ui.h:5 msgid "Preferences" msgstr "Preferencias" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:2 msgid "Audio player:" msgstr "Player de Audio" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:3 msgid "Video player:" msgstr "Player de vУ­deo" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:4 msgid "\"All episodes\" in podcast list" msgstr "\"Todos episУГdios\" na lista de podcast" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:5 msgid "Use sections for podcast list" msgstr "Usar seУЇУЕes para lista de podcast" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:7 #, fuzzy msgid "Preferred YouTube format:" msgstr "Formato preferido de vУ­deo:" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:8 msgid "YouTube API key (v3):" msgstr "" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:9 #, fuzzy msgid "Preferred Vimeo format:" msgstr "Formato preferido de vУ­deo:" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:11 msgid "Extensions" msgstr "ExtensУЕes" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:12 msgid "Synchronize subscriptions and episode actions" msgstr "Sincronizar inscriУЇУЕes e aУЇУЕes de episУГdios" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:15 msgid "Replace list on server with local subscriptions" msgstr "Substituir a lista de inscriУЇУЕes do servidor com a lista local" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:16 msgid "Device name:" msgstr "Nome do dispositivo:" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:17 msgid "gpodder.net" msgstr "gpodder.net" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:18 msgid "Update interval:" msgstr "Intervalo de atualizaУЇУЃo:" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:19 msgid "Maximum number of episodes per podcast:" msgstr "NУКmero mУЁximo de episУГdios por podcast:" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:20 msgid "When new episodes are found:" msgstr "Quando novos episУГdios forem encontrados:" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:21 msgid "Updating" msgstr "Atualizando" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:22 msgid "Delete played episodes:" msgstr "Excluir episУГdios reproduzidos:" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:23 msgid "Remove played episodes even if unfinished" msgstr "Remover episУГdios reproduzidos mesmo se nУЃo finalizados" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:24 msgid "Also remove unplayed episodes" msgstr "TambУЉm remover episУГdios nУЃo reproduzidos" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:25 msgid "Clean-up" msgstr "Limpeza" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:26 msgid "Device type:" msgstr "Tipo de dispositivo:" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:27 msgid "Mountpoint:" msgstr "Ponto de montagem:" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:28 msgid "After syncing an episode:" msgstr "Depois de sincronizar um episУГdio:" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:29 #, fuzzy msgid "Create playlists on device" msgstr "Substituir a lista no servidor" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:30 #, fuzzy msgid "Playlists Folder:" msgstr "Lista de reproduУЇУЃo vazia" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:31 msgid "Remove episodes deleted on device from gPodder" msgstr "" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:32 msgid "Only sync unplayed episodes" msgstr "Somente sincronizar episУГdios nУЃo reproduzidos" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:33 msgid "Devices" msgstr "Dispositivos" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:34 msgid "Edit config" msgstr "Editar configuraУЇУЃo" #: share/gpodder/ui/gtk/gpodder.ui.h:1 msgid "_Podcasts" msgstr "_Podcasts" #: share/gpodder/ui/gtk/gpodder.ui.h:2 msgid "Check for new episodes" msgstr "Verificar por novos episУГdios" #: share/gpodder/ui/gtk/gpodder.ui.h:3 msgid "Download new episodes" msgstr "Baixe novos episУГdios" #: share/gpodder/ui/gtk/gpodder.ui.h:7 msgid "_Subscriptions" msgstr "_InscriУЇУЕes" #: share/gpodder/ui/gtk/gpodder.ui.h:8 msgid "Discover new podcasts" msgstr "Descubra novos podcasts" #: share/gpodder/ui/gtk/gpodder.ui.h:9 msgid "Add podcast via URL" msgstr "Adicionar podcast via url" #: share/gpodder/ui/gtk/gpodder.ui.h:11 msgid "Unsubscribe" msgstr "remover inscriУЇУЃo" #: share/gpodder/ui/gtk/gpodder.ui.h:14 msgid "Import from OPML file" msgstr "Importar de um arquivo OPML" #: share/gpodder/ui/gtk/gpodder.ui.h:15 msgid "Export to OPML file" msgstr "Exportar para arquivo OPML" #: share/gpodder/ui/gtk/gpodder.ui.h:16 msgid "Go to gpodder.net" msgstr "Ir para gpodder.net" #: share/gpodder/ui/gtk/gpodder.ui.h:17 msgid "_Episodes" msgstr "_EpisУГdios" #: share/gpodder/ui/gtk/gpodder.ui.h:18 msgid "Play" msgstr "Reproduzir" #: share/gpodder/ui/gtk/gpodder.ui.h:19 msgid "Open" msgstr "Abrir" #: share/gpodder/ui/gtk/gpodder.ui.h:22 msgid "Delete" msgstr "Deletar" #: share/gpodder/ui/gtk/gpodder.ui.h:23 msgid "Toggle new status" msgstr "Alterar status" #: share/gpodder/ui/gtk/gpodder.ui.h:24 msgid "Change delete lock" msgstr "Mudar a proteУЇУЃo de remoУЇУЃo" #: share/gpodder/ui/gtk/gpodder.ui.h:26 msgid "E_xtras" msgstr "E_xtras" #: share/gpodder/ui/gtk/gpodder.ui.h:27 msgid "Sync to device" msgstr "Sincronizar com dispositivo" #: share/gpodder/ui/gtk/gpodder.ui.h:28 #, fuzzy msgid "Update YouTube subscriptions" msgstr "Nenhuma inscriУЇУЃo" #: share/gpodder/ui/gtk/gpodder.ui.h:29 msgid "_View" msgstr "E_xibir" #: share/gpodder/ui/gtk/gpodder.ui.h:30 msgid "Toolbar" msgstr "Barra de ferramentas" #: share/gpodder/ui/gtk/gpodder.ui.h:31 msgid "Episode descriptions" msgstr "DescriУЇУЃo do episУГdio" #: share/gpodder/ui/gtk/gpodder.ui.h:33 msgid "Hide deleted episodes" msgstr "Esconder episУГdios excluУ­dos" #: share/gpodder/ui/gtk/gpodder.ui.h:34 msgid "Downloaded episodes" msgstr "EpisУГdios baixados" #: share/gpodder/ui/gtk/gpodder.ui.h:35 msgid "Unplayed episodes" msgstr "EpisУГdios nУЃo reproduzidos" #: share/gpodder/ui/gtk/gpodder.ui.h:36 msgid "Hide podcasts without episodes" msgstr "Esconder podcasts sem episУГdios" #: share/gpodder/ui/gtk/gpodder.ui.h:37 msgid "_Help" msgstr "_Ajuda" #: share/gpodder/ui/gtk/gpodder.ui.h:38 msgid "User manual" msgstr "Manual do usuУЁrio" #: share/gpodder/ui/gtk/gpodder.ui.h:39 msgid "Software updates" msgstr "AtualizaУЇУЕes de softwares" #: share/gpodder/ui/gtk/gpodder.ui.h:40 msgid "Filter:" msgstr "Filtro:" #: share/gpodder/ui/gtk/gpodder.ui.h:41 msgid "Podcasts" msgstr "Podcasts" #: share/gpodder/ui/gtk/gpodder.ui.h:42 msgid "Limit rate to" msgstr "Limite a taxa de download a" #: share/gpodder/ui/gtk/gpodder.ui.h:43 msgid "KiB/s" msgstr "KiB/s" #: share/gpodder/ui/gtk/gpodder.ui.h:44 msgid "Limit downloads to" msgstr "Limite o download a" #: share/gpodder/ui/gtk/gpodderwelcome.ui.h:2 msgid "Welcome to gPodder" msgstr "Bem-vindo ao gPodder" #: share/gpodder/ui/gtk/gpodderwelcome.ui.h:3 msgid "Your podcast list is empty." msgstr "Seu podcast estУЁ vazio." #: share/gpodder/ui/gtk/gpodderwelcome.ui.h:4 msgid "Choose from a list of example podcasts" msgstr "Escolha de uma lista de exemplos de podcasts" #: share/gpodder/ui/gtk/gpodderwelcome.ui.h:5 msgid "Add a podcast by entering its URL" msgstr "Adicionar um podcast informando sua URL" #: share/gpodder/ui/gtk/gpodderwelcome.ui.h:6 msgid "Restore my subscriptions from gpodder.net" msgstr "Restaurar minhas inscriУЇУЕes do gpodder.net" #: bin/gpo:266 msgid "Podcast update requested by extensions." msgstr "AtualizaУЇУЃo do podcast exigida por extensУЕes." #: bin/gpo:270 msgid "Episode download requested by extensions." msgstr "Download de episУГdio exibido por extensУЕes." #: bin/gpo:323 #, python-format msgid "Invalid url: %s" msgstr "Url invУЁlida: %s" #: bin/gpo:340 bin/gpo:416 bin/gpo:450 bin/gpo:582 bin/gpo:597 bin/gpo:717 #, python-format msgid "You are not subscribed to %s." msgstr "VocУЊ nУЃo estУЁ inscrito a %s." #: bin/gpo:346 #, fuzzy, python-format msgid "Already subscribed to %s." msgstr "NУЃo foi possУ­vel se inscrever a %s." #: bin/gpo:352 #, python-format msgid "Cannot subscribe to %s." msgstr "NУЃo foi possУ­vel se inscrever a %s." #: bin/gpo:368 #, python-format msgid "Successfully added %s." msgstr "%s adicionado com sucesso." #: bin/gpo:386 msgid "This configuration option does not exist." msgstr "Essa opУЇУЃo de configuraУЇУЃo nУЃo existe." #: bin/gpo:390 msgid "Can only set leaf configuration nodes." msgstr "SУГ УЉ possУ­vel definir nУГs de configuraУЇУЃo de folha." #: bin/gpo:404 #, python-format msgid "Renamed %(old_title)s to %(new_title)s." msgstr "Renomeado %(old_title)s para %(new_title)s." #: bin/gpo:420 #, python-format msgid "Unsubscribed from %s." msgstr "Desinscreveu de %s." #: bin/gpo:494 msgid "Updates disabled" msgstr "AtualizaУЇУЕes desabilitadas" #: bin/gpo:505 #, python-format msgid "%(count)d new episode" msgid_plural "%(count)d new episodes" msgstr[0] "%(count)d novo episУГdio" msgstr[1] "%(count)d novos episУГdios" #: bin/gpo:511 msgid "Checking for new episodes" msgstr "Verificando por novos espisУГdios" #: bin/gpo:520 #, python-format msgid "Skipping %(podcast)s" msgstr "Pulando %(podcast)s" #: bin/gpo:588 #, python-format msgid "Disabling feed update from %s." msgstr "Desabilitando atualizaУЇУЃo de feed de %s." #: bin/gpo:603 #, python-format msgid "Enabling feed update from %s." msgstr "Habilitando atualizaУЇУЃo de feed de %s." #: bin/gpo:616 #, python-format msgid "Please register a YouTube API key and set it using %(command)s." msgstr "" #: bin/gpo:643 #, fuzzy, python-format msgid "Changing: %(old_url)s => %(new_url)s" msgstr "URL alterada de %(old_url)s para %(new_url)s." #: bin/gpo:653 #, fuzzy msgid "Nothing to fix" msgstr "Nada para exportar" #: bin/gpo:672 msgid "No podcasts found." msgstr "Nenhum podcast encontrado." #: bin/gpo:686 msgid "Enter index to subscribe, ? for list" msgstr "Digite o У­ndice para se inscrever, ? para listar" #: bin/gpo:700 bin/gpo:704 msgid "Invalid value." msgstr "Valor invУЁlido." #: bin/gpo:721 #, python-format msgid "Invalid URL: %s" msgstr "URL invУЁlida: %s" #: bin/gpo:724 #, python-format msgid "Changed URL from %(old_url)s to %(new_url)s." msgstr "URL alterada de %(old_url)s para %(new_url)s." #: bin/gpo:782 #, python-format msgid "Syntax error: %(error)s" msgstr "Erro de sintУЁxe: %(error)s" #: bin/gpo:876 #, fuzzy msgid "Ambiguous command. Did you mean.." msgstr "Comando ambУ­guo. VocУЊ quis dizer..." #: bin/gpo:880 msgid "The requested function is not available." msgstr "A funУЇУЃo chamada nУЃo estУЁ disponУ­vel." #: bin/gpodder:105 msgid "print logging output on the console" msgstr "imprime a saУ­da de logs para o console" #: bin/gpodder:108 msgid "subscribe to the feed at URL" msgstr "assina ao feed da URL" #: bin/gpodder:113 msgid "Mac OS X application process number" msgstr "NУКmero de processo de aplicativo do Mac OS X" #: share/applications/gpodder.desktop.in.h:2 msgid "gPodder Podcast Client" msgstr "Cliente de podcast gPodder" #: share/applications/gpodder.desktop.in.h:3 msgid "Podcast Client" msgstr "Cliente de podcast" #: share/applications/gpodder.desktop.in.h:4 msgid "Subscribe to audio and video content from the web" msgstr "Inscrever ao conteУКdo de УЁudio e vУ­deo da web" #: share/applications/gpodder-url-handler.desktop.in.h:1 #, fuzzy msgid "gPodder (subscribe to feed)" msgstr "assina ao feed da URL" gpodder-3.9.0/po/es_MX.po0000644000016000001710000017114312654461625016274 0ustar jenkinsjenkins00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # # Translators: # Rigoberto Calleja , 2012-2013. msgid "" msgstr "" "Project-Id-Version: gPodder\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2016-02-03 20:31+0000\n" "PO-Revision-Date: 2013-04-14 13:46-0600\n" "Last-Translator: Rigoberto Calleja \n" "Language-Team: Spanish (Mexico) (http://www.transifex.com/projects/p/gpodder/" "language/es_MX/)\n" "Language: es_MX\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" #: src/gpodder/config.py:55 #, python-format msgid "gPodder on %s" msgstr "gPodder en %s" #: src/gpodder/directory.py:95 #, fuzzy msgid "gpodder.net search" msgstr "gpodder.net" #: src/gpodder/directory.py:104 #, fuzzy msgid "OPML from web" msgstr "Archivos OPML" #: src/gpodder/directory.py:113 #, fuzzy msgid "OPML file" msgstr "Archivos OPML" #: src/gpodder/directory.py:122 share/gpodder/ui/gtk/gpodderwelcome.ui.h:1 msgid "Getting started" msgstr "Para empezar" #: src/gpodder/directory.py:131 #, fuzzy msgid "gpodder.net Top 50" msgstr "gpodder.net" #: src/gpodder/directory.py:140 #, fuzzy msgid "gpodder.net Tags" msgstr "gpodder.net" #: src/gpodder/directory.py:152 #, fuzzy msgid "Soundcloud search" msgstr "%s en SoundCloud" #: src/gpodder/directory.py:165 #, fuzzy msgid "Imported OPML file" msgstr "Importar desde archivo OPML" #: src/gpodder/download.py:329 msgid "Wrong username/password" msgstr "Usuario y/o contraseУБa incorrectos" #: src/gpodder/download.py:527 src/gpodder/sync.py:924 msgid "Added" msgstr "Agregado" #: src/gpodder/download.py:527 src/gpodder/sync.py:924 msgid "Queued" msgstr "En espera" #: src/gpodder/download.py:527 src/gpodder/gtkui/model.py:327 msgid "Downloading" msgstr "Descargando" #: src/gpodder/download.py:528 src/gpodder/model.py:721 #: src/gpodder/sync.py:925 msgid "Finished" msgstr "Terminado" #: src/gpodder/download.py:528 src/gpodder/sync.py:925 msgid "Failed" msgstr "FallУГ" #: src/gpodder/download.py:528 src/gpodder/sync.py:925 msgid "Cancelled" msgstr "Cancelado" #: src/gpodder/download.py:528 src/gpodder/sync.py:925 msgid "Paused" msgstr "En pausa" #: src/gpodder/download.py:862 msgid "Missing content from server" msgstr "Falta el contenido del servidor" #: src/gpodder/download.py:868 #, python-format msgid "I/O Error: %(error)s: %(filename)s" msgstr "Error de E/S: %(error)s: %(filename)s" #: src/gpodder/download.py:875 #, python-format msgid "HTTP Error %(code)s: %(message)s" msgstr "Error HTTP %(code)s: %(message)s" #: src/gpodder/download.py:879 src/gpodder/sync.py:1081 #, python-format msgid "Error: %s" msgstr "Error: %s" #: src/gpodder/extensions.py:55 msgid "Desktop Integration" msgstr "IntegraciУГn con el escritorio" #: src/gpodder/extensions.py:56 msgid "Interface" msgstr "Interfaz" #: src/gpodder/extensions.py:57 msgid "Post download" msgstr "Post-descarga" #: src/gpodder/extensions.py:59 src/gpodder/model.py:779 #: src/gpodder/model.py:1225 msgid "Other" msgstr "Otro" #: src/gpodder/extensions.py:100 msgid "No description for this extension." msgstr "No hay descripciУГn para esta extensiУГn." #: src/gpodder/extensions.py:212 #, python-format msgid "Command not found: %(command)s" msgstr "Comando no encontrado: %(command)s" #: src/gpodder/extensions.py:228 #, python-format msgid "Need at least one of the following commands: %(list_of_commands)s" msgstr "" "Se requiere al menos uno de los siguientes comandos: %(list_of_commands)s" #: src/gpodder/extensions.py:265 #, python-format msgid "Python module not found: %(module)s" msgstr "El siguiente mУГdulo de Python no fue encontrado: %(module)s" #: src/gpodder/model.py:446 src/gpodder/plugins/soundcloud.py:156 msgid "No description available" msgstr "No hay descripciУГn disponible" #: src/gpodder/model.py:679 msgid "unknown" msgstr "desconocido" #: src/gpodder/model.py:746 msgid "Default" msgstr "Por defecto" #: src/gpodder/model.py:747 msgid "Only keep latest" msgstr "Conservar УКnicamente el mУЁs reciente" #: src/gpodder/model.py:1208 src/gpodder/model.py:1223 #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:10 msgid "Video" msgstr "Video" #: src/gpodder/model.py:1221 msgid "Audio" msgstr "Audio" #: src/gpodder/my.py:174 #, python-format msgid "Add %s" msgstr "Agregar %s" #: src/gpodder/my.py:176 #, python-format msgid "Remove %s" msgstr "Eliminar %s" #: src/gpodder/sync.py:196 msgid "Cancelled by user" msgstr "Cancelado por el usuario" #: src/gpodder/sync.py:199 msgid "Writing data to disk" msgstr "Escribiendo datos al disco" #: src/gpodder/sync.py:295 msgid "Opening iPod database" msgstr "Abriendo base de datos de iPod" #: src/gpodder/sync.py:305 msgid "iPod opened" msgstr "iPod abierto" #: src/gpodder/sync.py:316 msgid "Saving iPod database" msgstr "Guardando base de datos de iPod" #: src/gpodder/sync.py:321 msgid "Writing extended gtkpod database" msgstr "Escribiendo base de datos extendida gtkpod" #: src/gpodder/sync.py:397 src/gpodder/sync.py:680 src/gpodder/sync.py:874 #, python-format msgid "Removing %s" msgstr "Eliminando %s" #: src/gpodder/sync.py:412 src/gpodder/sync.py:557 #, python-format msgid "Adding %s" msgstr "Agregando %s" #: src/gpodder/sync.py:430 #, python-format msgid "Error copying %(episode)s: Not enough free space on %(mountpoint)s" msgstr "" "Error al copiar %(episode)s: No hay suficiente espacio en %(mountpoint)s" #: src/gpodder/sync.py:515 msgid "Opening MP3 player" msgstr "Abriendo reproductor MP3" #: src/gpodder/sync.py:518 msgid "MP3 player opened" msgstr "Reproductor MP3 abierto" #: src/gpodder/sync.py:576 #, python-format msgid "" "Not enough space in %(path)s: %(free)s available, but need at least %(need)s" msgstr "" #: src/gpodder/sync.py:603 src/gpodder/sync.py:611 #, python-format msgid "Error opening %(filename)s: %(message)s" msgstr "Error al abrir %(filename)s: %(message)s" #: src/gpodder/sync.py:780 src/gpodder/sync.py:786 msgid "MTP device" msgstr "Dispositivo MTP" #: src/gpodder/sync.py:793 msgid "Opening the MTP device" msgstr "Abriendo el dispositivo MTP" #: src/gpodder/sync.py:803 #, python-format msgid "%s opened" msgstr "%s abierto" #: src/gpodder/sync.py:808 #, python-format msgid "Closing %s" msgstr "Cerrando %s" #: src/gpodder/sync.py:816 #, python-format msgid "%s closed" msgstr "%s cerrado" #: src/gpodder/sync.py:821 bin/gpo:708 #, python-format msgid "Adding %s..." msgstr "Agregando %s..." #: src/gpodder/sync.py:924 msgid "Synchronizing" msgstr "Sincronizando" #: src/gpodder/util.py:429 #, python-format msgid "%(count)d day ago" msgid_plural "%(count)d days ago" msgstr[0] "Hace %(count)d dУ­a" msgstr[1] "Hace %(count)d dУ­as" #: src/gpodder/util.py:508 msgid "Today" msgstr "Hoy" #: src/gpodder/util.py:510 msgid "Yesterday" msgstr "Ayer" #: src/gpodder/util.py:553 src/gpodder/util.py:556 msgid "(unknown)" msgstr "(desconocido)" #: src/gpodder/util.py:1193 src/gpodder/util.py:1212 #, python-format msgid "%(count)d second" msgid_plural "%(count)d seconds" msgstr[0] "%(count)d segundo" msgstr[1] "%(count)d segundos" #: src/gpodder/util.py:1206 #, python-format msgid "%(count)d hour" msgid_plural "%(count)d hours" msgstr[0] "%(count)d hora" msgstr[1] "%(count)d horas" #: src/gpodder/util.py:1209 #, python-format msgid "%(count)d minute" msgid_plural "%(count)d minutes" msgstr[0] "%(count)d minuto" msgstr[1] "%(count)d minutos" #: src/gpodder/util.py:1215 msgid "and" msgstr "y" #: src/gpodder/gtkui/config.py:50 msgid "Integer" msgstr "Entero" #: src/gpodder/gtkui/config.py:52 msgid "Float" msgstr "NУКmero de punto flotante" #: src/gpodder/gtkui/config.py:54 msgid "Boolean" msgstr "Booleano" #: src/gpodder/gtkui/config.py:56 msgid "String" msgstr "Cadena" #: src/gpodder/gtkui/desktopfile.py:70 #, python-format msgid "Command: %s" msgstr "Comando: %s" #: src/gpodder/gtkui/desktopfile.py:150 msgid "Default application" msgstr "AplicaciУГn por defecto" #: src/gpodder/gtkui/main.py:205 share/applications/gpodder.desktop.in.h:1 msgid "gPodder" msgstr "gPodder" #: src/gpodder/gtkui/main.py:288 msgid "Loading incomplete downloads" msgstr "Cargando descargas incompletas" #: src/gpodder/gtkui/main.py:289 msgid "Some episodes have not finished downloading in a previous session." msgstr "" "Algunos episodios no se terminaron de descargar en una sesiУГn anterior." #: src/gpodder/gtkui/main.py:291 #, python-format msgid "%(count)d partial file" msgid_plural "%(count)d partial files" msgstr[0] "%(count)d archivo parcial" msgstr[1] "%(count)d archivos parciales" #: src/gpodder/gtkui/main.py:306 msgid "Resume all" msgstr "Reanudar todos" #: src/gpodder/gtkui/main.py:316 msgid "Incomplete downloads from a previous session were found." msgstr "Se encontraron descargas incompletas de una sesiУГn anterior." #: src/gpodder/gtkui/main.py:414 msgid "Action" msgstr "AcciУГn" #: src/gpodder/gtkui/main.py:461 msgid "Confirm changes from gpodder.net" msgstr "Confirmar los cambios desde gpodder.net" #: src/gpodder/gtkui/main.py:462 msgid "Select the actions you want to carry out." msgstr "Seleccione las acciones que desea realizar." #: src/gpodder/gtkui/main.py:502 msgid "Uploading subscriptions" msgstr "Cargando suscripciones" #: src/gpodder/gtkui/main.py:503 msgid "Your subscriptions are being uploaded to the server." msgstr "Se estУЁn transfiriendo sus suscripciones al servidor." #: src/gpodder/gtkui/main.py:508 msgid "List uploaded successfully." msgstr "Lista transferida correctamente." #: src/gpodder/gtkui/main.py:515 msgid "Error while uploading" msgstr "Error de transferencia" #: src/gpodder/gtkui/main.py:800 src/gpodder/gtkui/main.py:928 #: src/gpodder/gtkui/main.py:2622 src/gpodder/gtkui/main.py:2815 #: src/gpodder/gtkui/desktop/episodeselector.py:132 #: src/gpodder/gtkui/desktop/sync.py:270 msgid "Episode" msgstr "Episodio" #: src/gpodder/gtkui/main.py:819 msgid "Size" msgstr "TamaУБo" #: src/gpodder/gtkui/main.py:824 msgid "Duration" msgstr "DuraciУГn" #: src/gpodder/gtkui/main.py:828 msgid "Released" msgstr "Publicado" #: src/gpodder/gtkui/main.py:855 msgid "Visible columns" msgstr "Columnas visibles" #: src/gpodder/gtkui/main.py:948 src/gpodder/gtkui/main.py:1108 #: share/gpodder/ui/gtk/gpodder.ui.h:45 msgid "Progress" msgstr "Avance" #: src/gpodder/gtkui/main.py:982 msgid "Loading episodes" msgstr "Cargando episodios" #: src/gpodder/gtkui/main.py:985 msgid "No episodes in current view" msgstr "No hay episodios en la vista actual" #: src/gpodder/gtkui/main.py:987 msgid "No episodes available" msgstr "No hay episodios disponibles" #: src/gpodder/gtkui/main.py:993 msgid "No podcasts in this view" msgstr "No hay podcasts en esta vista" #: src/gpodder/gtkui/main.py:995 msgid "No subscriptions" msgstr "No hay suscripciones" #: src/gpodder/gtkui/main.py:997 msgid "No active tasks" msgstr "No hay tareas activas" #: src/gpodder/gtkui/main.py:1112 src/gpodder/gtkui/main.py:1114 #, python-format msgid "%(count)d active" msgid_plural "%(count)d active" msgstr[0] "%(count)d activa" msgstr[1] "%(count)d activas" #: src/gpodder/gtkui/main.py:1116 #, python-format msgid "%(count)d failed" msgid_plural "%(count)d failed" msgstr[0] "%(count)d fallido" msgstr[1] "%(count)d fallidos" #: src/gpodder/gtkui/main.py:1118 #, python-format msgid "%(count)d queued" msgid_plural "%(count)d queued" msgstr[0] "%(count)d en espera" msgstr[1] "%(count)d en espera" #: src/gpodder/gtkui/main.py:1132 #, python-format msgid "downloading %(count)d file" msgid_plural "downloading %(count)d files" msgstr[0] "descargando %(count)d archivo" msgstr[1] "descargando %(count)d archivos" #: src/gpodder/gtkui/main.py:1142 #, python-format msgid "synchronizing %(count)d file" msgid_plural "synchronizing %(count)d files" msgstr[0] "sincronizando %(count)d archivo" msgstr[1] "sincronizando %(count)d archivos" #: src/gpodder/gtkui/main.py:1144 #, python-format msgid "%(queued)d task queued" msgid_plural "%(queued)d tasks queued" msgstr[0] "%(queued)d tarea en espera" msgstr[1] "%(queued)d tareas en espera" #: src/gpodder/gtkui/main.py:1168 msgid "Please report this problem and restart gPodder:" msgstr "Reporte este problema y reinicie gPodder:" #: src/gpodder/gtkui/main.py:1168 msgid "Unhandled exception" msgstr "ExcepciУГn no manejada" #: src/gpodder/gtkui/main.py:1235 #, python-format msgid "Feedparser error: %s" msgstr "Error del analizador sintУЁtico de fuentes: %s" #: src/gpodder/gtkui/main.py:1371 msgid "Could not download some episodes:" msgstr "No fue posible descargar algunos episodios:" #: src/gpodder/gtkui/main.py:1373 src/gpodder/gtkui/main.py:1376 msgid "Downloads finished" msgstr "Descargas finalizadas" #: src/gpodder/gtkui/main.py:1379 msgid "Downloads failed" msgstr "Las descargas fallaron" #: src/gpodder/gtkui/main.py:1383 msgid "Could not sync some episodes:" msgstr "No fue posible sincronizar algunos episodios:" #: src/gpodder/gtkui/main.py:1385 src/gpodder/gtkui/main.py:1388 msgid "Device synchronization finished" msgstr "Se concluyУГ la sincronizaciУГn del dispositivo" #: src/gpodder/gtkui/main.py:1391 msgid "Device synchronization failed" msgstr "La sincronizaciУГn del dispositivo fallУГ" #: src/gpodder/gtkui/main.py:1434 #, python-format msgid "%(count)d more episode" msgid_plural "%(count)d more episodes" msgstr[0] "%(count)d episodio mУЁs" msgstr[1] "%(count)d episodios mУЁs" #: src/gpodder/gtkui/main.py:1508 msgid "Start download now" msgstr "Iniciar descarga" #: src/gpodder/gtkui/main.py:1510 src/gpodder/gtkui/main.py:1719 #: src/gpodder/gtkui/desktop/episodeselector.py:144 #: share/gpodder/ui/gtk/gpodder.ui.h:20 msgid "Download" msgstr "Descargar" #: src/gpodder/gtkui/main.py:1511 share/gpodder/ui/gtk/gpodder.ui.h:21 msgid "Cancel" msgstr "Cancelar" #: src/gpodder/gtkui/main.py:1512 msgid "Pause" msgstr "Poner en pausa" #: src/gpodder/gtkui/main.py:1514 msgid "Remove from list" msgstr "Eliminar de la lista" #: src/gpodder/gtkui/main.py:1553 share/gpodder/ui/gtk/gpodder.ui.h:13 msgid "Update podcast" msgstr "Actualizar podcast" #: src/gpodder/gtkui/main.py:1560 msgid "Open download folder" msgstr "Abrir carpeta de descarga" #: src/gpodder/gtkui/main.py:1566 msgid "Mark episodes as old" msgstr "Marcar episodios como antiguos" #: src/gpodder/gtkui/main.py:1570 src/gpodder/gtkui/main.py:1778 msgid "Archive" msgstr "Archivar" #: src/gpodder/gtkui/main.py:1575 msgid "Remove podcast" msgstr "Eliminar podcast" #: src/gpodder/gtkui/main.py:1590 share/gpodder/ui/gtk/gpodder.ui.h:10 msgid "Podcast settings" msgstr "ConfiguraciУГn del podcast" #: src/gpodder/gtkui/main.py:1650 msgid "Error converting file." msgstr "Error al convertir archivo." #: src/gpodder/gtkui/main.py:1650 msgid "Bluetooth file transfer" msgstr "Transferencia de archivo vУ­a Bluetooth" #: src/gpodder/gtkui/main.py:1709 msgid "Preview" msgstr "Vista previa" #: src/gpodder/gtkui/main.py:1711 msgid "Stream" msgstr "Stream" #: src/gpodder/gtkui/main.py:1755 msgid "Send to" msgstr "Enviar a" #: src/gpodder/gtkui/main.py:1757 msgid "Local folder" msgstr "Carpeta local" #: src/gpodder/gtkui/main.py:1762 msgid "Bluetooth device" msgstr "Dispositivo Bluetooth" #: src/gpodder/gtkui/main.py:1769 msgid "New" msgstr "Nuevos" #: src/gpodder/gtkui/main.py:1785 share/gpodder/ui/gtk/gpodder.ui.h:25 msgid "Episode details" msgstr "Detalles del episodio" #: src/gpodder/gtkui/main.py:1938 msgid "Please check your media player settings in the preferences dialog." msgstr "" "Compruebe la configuraciУГn de su reproductor multimedia en las preferencias." #: src/gpodder/gtkui/main.py:1939 msgid "Error opening player" msgstr "Error al abrir el reproductor" #: src/gpodder/gtkui/main.py:2178 msgid "Adding podcasts" msgstr "Agregando podcasts" #: src/gpodder/gtkui/main.py:2179 msgid "Please wait while episode information is downloaded." msgstr "Espere mientras se descarga la informaciУГn del episodio." #: src/gpodder/gtkui/main.py:2186 msgid "Existing subscriptions skipped" msgstr "Las suscripciones existentes fueron omitidas" #: src/gpodder/gtkui/main.py:2187 msgid "You are already subscribed to these podcasts:" msgstr "Ya estУЁ suscrito a estos podcasts:" #: src/gpodder/gtkui/main.py:2195 msgid "Podcast requires authentication" msgstr "El podcast requiere autenticaciУГn" #: src/gpodder/gtkui/main.py:2196 #, python-format msgid "Please login to %s:" msgstr "Inicie sesiУГn en %s:" #: src/gpodder/gtkui/main.py:2204 src/gpodder/gtkui/main.py:2299 msgid "Authentication failed" msgstr "La autenticaciУГn fallУГ" #: src/gpodder/gtkui/main.py:2210 msgid "Website redirection detected" msgstr "Se detectУГ redirecciУГn del sitio Web" #: src/gpodder/gtkui/main.py:2211 #, python-format msgid "The URL %(url)s redirects to %(target)s." msgstr "La URL %(url)s redirige a %(target)s." #: src/gpodder/gtkui/main.py:2212 msgid "Do you want to visit the website now?" msgstr "ТПQuiere visitar el sitio web ahora?" #: src/gpodder/gtkui/main.py:2221 msgid "Could not add some podcasts" msgstr "No se pudieron agregar algunos podcasts" #: src/gpodder/gtkui/main.py:2222 msgid "Some podcasts could not be added to your list:" msgstr "No se pudieron agregar algunos podcasts a su lista:" #: src/gpodder/gtkui/main.py:2224 msgid "Unknown" msgstr "Desconocido" #: src/gpodder/gtkui/main.py:2308 msgid "Redirection detected" msgstr "RedirecciУГn detectada" #: src/gpodder/gtkui/main.py:2342 msgid "Merging episode actions" msgstr "Combinando acciones del episodio" #: src/gpodder/gtkui/main.py:2343 msgid "Episode actions from gpodder.net are merged." msgstr "Las acciones de los episodios de gpodder.net se combinaron" #: src/gpodder/gtkui/main.py:2368 msgid "Cancelling..." msgstr "Cancelando..." #: src/gpodder/gtkui/main.py:2377 msgid "Please connect to a network, then try again." msgstr "Por favor conУЉctese a una red e intente nuevamente." #: src/gpodder/gtkui/main.py:2378 msgid "No network connection" msgstr "No hay conexiУГn de red" #: src/gpodder/gtkui/main.py:2399 #, python-format msgid "Updating %(count)d feed..." msgid_plural "Updating %(count)d feeds..." msgstr[0] "Actualizando %(count)d fuente..." msgstr[1] "Actualizando %(count)d fuentes..." #: src/gpodder/gtkui/main.py:2417 #, python-format msgid "Error while updating %(url)s: %(message)s" msgstr "Error al actualizar %(url)s: %(message)s" #: src/gpodder/gtkui/main.py:2419 #, python-format msgid "The feed at %(url)s could not be updated." msgstr "La fuente en %(url)s no se pudo actualizar." #: src/gpodder/gtkui/main.py:2420 msgid "Error while updating feed" msgstr "Error al actualizar la fuente" #: src/gpodder/gtkui/main.py:2435 #, python-format msgid "Updated %(podcast)s (%(position)d/%(total)d)" msgstr "%(podcast)s actualizados (%(position)d/%(total)d)" #: src/gpodder/gtkui/main.py:2466 msgid "No new episodes" msgstr "No hay episodios nuevos" #: src/gpodder/gtkui/main.py:2479 #, python-format msgid "Downloading %(count)d new episode." msgid_plural "Downloading %(count)d new episodes." msgstr[0] "Descargando %(count)d episodio nuevo." msgstr[1] "Descargando %(count)d episodios nuevos." #: src/gpodder/gtkui/main.py:2480 src/gpodder/gtkui/main.py:2484 #: src/gpodder/gtkui/main.py:2833 msgid "New episodes available" msgstr "Hay episodios nuevos disponibles" #: src/gpodder/gtkui/main.py:2483 #, python-format msgid "%(count)d new episode added to download list." msgid_plural "%(count)d new episodes added to download list." msgstr[0] "%(count)d episodio nuevo fue agregado a la lista de descargas." msgstr[1] "" "%(count)d episodios nuevos fueron agregados a la lista de descargas." #: src/gpodder/gtkui/main.py:2490 #, python-format msgid "%(count)d new episode available" msgid_plural "%(count)d new episodes available" msgstr[0] "%(count)d nuevo episodio disponible" msgstr[1] "%(count)d nuevos episodios disponibles" #: src/gpodder/gtkui/main.py:2509 msgid "Quit gPodder" msgstr "Salir de gPodder" #: src/gpodder/gtkui/main.py:2510 msgid "" "You are downloading episodes. You can resume downloads the next time you " "start gPodder. Do you want to quit now?" msgstr "" "EstУЁ descargando episodios. Puede reanudar las descargas la prУГxima vez que " "inicie gPodder.ТПQuiere salir ahora?" #: src/gpodder/gtkui/main.py:2559 msgid "Episodes are locked" msgstr "Los episodios estУЁn bloqueados" #: src/gpodder/gtkui/main.py:2560 msgid "" "The selected episodes are locked. Please unlock the episodes that you want " "to delete before trying to delete them." msgstr "" "Los episodios seleccionados estУЁn bloqueados. Desbloquee los episodios que " "desea eliminar." #: src/gpodder/gtkui/main.py:2565 #, python-format msgid "Delete %(count)d episode?" msgid_plural "Delete %(count)d episodes?" msgstr[0] "ТПEliminar %(count)d episodio?" msgstr[1] "ТПEliminar %(count)d episodios?" #: src/gpodder/gtkui/main.py:2566 msgid "Deleting episodes removes downloaded files." msgstr "Al eliminar episodios se borran los archivos descargados." #: src/gpodder/gtkui/main.py:2571 msgid "Deleting episodes" msgstr "Eliminando episodios" #: src/gpodder/gtkui/main.py:2572 msgid "Please wait while episodes are deleted" msgstr "Espere mientras se eliminan los episodios" #: src/gpodder/gtkui/main.py:2625 #, python-format msgid "Select older than %(count)d day" msgid_plural "Select older than %(count)d days" msgstr[0] "Seleccionar anteriores a %(count)d dУ­a" msgstr[1] "Seleccionar anteriores a %(count)d dУ­as" #: src/gpodder/gtkui/main.py:2627 msgid "Select played" msgstr "Seleccionar reproducidos" #: src/gpodder/gtkui/main.py:2628 msgid "Select finished" msgstr "Seleccionar finalizados" #: src/gpodder/gtkui/main.py:2632 msgid "Select the episodes you want to delete:" msgstr "Seleccione los episodios que desea eliminar:" #: src/gpodder/gtkui/main.py:2648 share/gpodder/ui/gtk/gpodder.ui.h:4 msgid "Delete episodes" msgstr "Eliminar episodios" #: src/gpodder/gtkui/main.py:2703 src/gpodder/gtkui/main.py:2934 #: src/gpodder/gtkui/main.py:3034 msgid "No podcast selected" msgstr "No se seleccionУГ ningУКn podcast" #: src/gpodder/gtkui/main.py:2704 msgid "Please select a podcast in the podcasts list to update." msgstr "Seleccione un podcast de la lista para actualizar." #: src/gpodder/gtkui/main.py:2774 #, python-format msgid "Download error while downloading %(episode)s: %(message)s" msgstr "Error al descargar %(episode)s: %(message)s" #: src/gpodder/gtkui/main.py:2775 msgid "Download error" msgstr "Error de descarga" #: src/gpodder/gtkui/main.py:2818 msgid "Select the episodes you want to download:" msgstr "Seleccione los episodios que desea descargar:" #: src/gpodder/gtkui/main.py:2841 msgid "Mark as old" msgstr "Marcar como antiguo" #: src/gpodder/gtkui/main.py:2848 msgid "Please check for new episodes later." msgstr "Busque nuevos episodios mУЁs tarde." #: src/gpodder/gtkui/main.py:2849 msgid "No new episodes available" msgstr "No hay episodios nuevos disponibles" #: src/gpodder/gtkui/main.py:2900 msgid "Login to gpodder.net" msgstr "Iniciar sesiУГn en gpodder.net" #: src/gpodder/gtkui/main.py:2901 msgid "Please login to download your subscriptions." msgstr "Inicie sesiУГn para descargar sus suscripciones." #: src/gpodder/gtkui/main.py:2916 msgid "Subscriptions on gpodder.net" msgstr "Suscripciones en gpodder.net" #: src/gpodder/gtkui/main.py:2935 msgid "Please select a podcast in the podcasts list to edit." msgstr "Para editar, seleccione un podcast de la lista." #: src/gpodder/gtkui/main.py:2949 msgid "Podcast" msgstr "Podcast" #: src/gpodder/gtkui/main.py:2955 share/gpodder/ui/gtk/gpodder.ui.h:12 msgid "Remove podcasts" msgstr "Eliminar podcasts" #: src/gpodder/gtkui/main.py:2956 msgid "Select the podcast you want to remove." msgstr "Seleccione el podcast que desea eliminar." #: src/gpodder/gtkui/main.py:2960 #: src/gpodder/gtkui/desktop/episodeselector.py:105 msgid "Remove" msgstr "Eliminar" #: src/gpodder/gtkui/main.py:2969 msgid "Removing podcast" msgstr "Eliminando podcast" #: src/gpodder/gtkui/main.py:2970 msgid "Please wait while the podcast is removed" msgstr "Espere mientras se elimina el podcast" #: src/gpodder/gtkui/main.py:2971 msgid "Do you really want to remove this podcast and its episodes?" msgstr "ТПRealmente quiere eliminar este podcast y sus episodios?" #: src/gpodder/gtkui/main.py:2973 msgid "Removing podcasts" msgstr "Eliminando podcasts" #: src/gpodder/gtkui/main.py:2974 msgid "Please wait while the podcasts are removed" msgstr "Espere mientras los podcasts se eliminan" #: src/gpodder/gtkui/main.py:2975 msgid "Do you really want to remove the selected podcasts and their episodes?" msgstr "ТПRealmente quiere eliminar los podcasts seleccionados y sus episodios?" #: src/gpodder/gtkui/main.py:3035 msgid "Please select a podcast in the podcasts list to remove." msgstr "Seleccione un podcast de la lista para eliminar." #: src/gpodder/gtkui/main.py:3045 msgid "OPML files" msgstr "Archivos OPML" #: src/gpodder/gtkui/main.py:3050 msgid "Import from OPML" msgstr "Importar desde OPML" #: src/gpodder/gtkui/main.py:3064 msgid "Import podcasts from OPML file" msgstr "Importar podcasts desde un archivo OPML" #: src/gpodder/gtkui/main.py:3071 msgid "Nothing to export" msgstr "No hay nada que exportar" #: src/gpodder/gtkui/main.py:3072 msgid "" "Your list of podcast subscriptions is empty. Please subscribe to some " "podcasts first before trying to export your subscription list." msgstr "" "Su lista de suscripciones estУЁ vacУ­a. SuscrУ­base a algУКn podcast antes de " "exportarla." #: src/gpodder/gtkui/main.py:3076 msgid "Export to OPML" msgstr "Exportar a OPML" #: src/gpodder/gtkui/main.py:3087 #, python-format msgid "%(count)d subscription exported" msgid_plural "%(count)d subscriptions exported" msgstr[0] "%(count)d suscripciУГn exportada" msgstr[1] "%(count)d suscripciones exportadas" #: src/gpodder/gtkui/main.py:3088 msgid "Your podcast list has been successfully exported." msgstr "Su lista de podcasts se exportУГ correctamente." #: src/gpodder/gtkui/main.py:3090 msgid "Could not export OPML to file. Please check your permissions." msgstr "No se pudo exportar el archivo OPML. Verifique sus permisos." #: src/gpodder/gtkui/main.py:3090 msgid "OPML export failed" msgstr "FallУГ la exportaciУГn a OPML" #: src/gpodder/gtkui/main.py:3117 msgid "No updates available" msgstr "No hay actualizaciones disponibles" #: src/gpodder/gtkui/main.py:3118 msgid "You have the latest version of gPodder." msgstr "Usted tiene la УКltima versiУГn de gPodder." #: src/gpodder/gtkui/main.py:3122 msgid "New version available" msgstr "Nueva versiУГn disponible" #: src/gpodder/gtkui/main.py:3124 #, python-format msgid "Installed version: %s" msgstr "VersiУГn instalada: %s" #: src/gpodder/gtkui/main.py:3125 #, python-format msgid "Newest version: %s" msgstr "VersiУГn mУЁs reciente: %s" #: src/gpodder/gtkui/main.py:3126 #, python-format msgid "Release date: %s" msgstr "Fecha de publicaciУГn: %s" #: src/gpodder/gtkui/main.py:3128 msgid "Download the latest version from gpodder.org?" msgstr "ТПDesea descargar la versiУГn mas reciente desde gpodder.org?" #: src/gpodder/gtkui/main.py:3141 msgid "About gPodder" msgstr "Acerca de gPodder" #: src/gpodder/gtkui/main.py:3424 #, fuzzy msgid "Please register a YouTube API key and set it in the preferences." msgstr "" "Por favor configure su dispositivo en la caja de dialogo de preferencias." #: src/gpodder/gtkui/main.py:3425 msgid "Would you like to set up an API key now?" msgstr "" #: src/gpodder/gtkui/main.py:3425 msgid "API key required" msgstr "" #: src/gpodder/gtkui/main.py:3444 bin/gpo:631 #, fuzzy msgid "No unique URL found" msgstr "No se encontraron canales" #: src/gpodder/gtkui/main.py:3449 bin/gpo:637 #, fuzzy msgid "Already subscribed" msgstr "Ya estУЁ suscrito a %s." #: src/gpodder/gtkui/main.py:3458 bin/gpo:649 #, python-format msgid "Make sure the API key is correct. Error: %(message)s" msgstr "" #: src/gpodder/gtkui/main.py:3459 #, fuzzy msgid "Error getting YouTube channels" msgstr "Error al establecer opciУГn" #: src/gpodder/gtkui/main.py:3462 #, fuzzy msgid "Successfully migrated subscriptions" msgstr "%s fue agregado exitosamente." #: src/gpodder/gtkui/main.py:3464 #, fuzzy msgid "Subscriptions are up to date" msgstr "SuscripciУГn en pausa" #: src/gpodder/gtkui/main.py:3467 msgid "These URLs failed:" msgstr "" #: src/gpodder/gtkui/main.py:3469 #, fuzzy msgid "Could not migrate some subscriptions" msgstr "No se pudieron agregar algunos podcasts" #: src/gpodder/gtkui/main.py:3493 msgid "Cannot start gPodder" msgstr "No se puede iniciar gPodder" #: src/gpodder/gtkui/main.py:3494 #, python-format msgid "D-Bus error: %s" msgstr "Error de D-Bus: %s" #: src/gpodder/gtkui/model.py:68 #, python-format msgid "released %s" msgstr "publicado el %s" #: src/gpodder/gtkui/model.py:69 src/gpodder/gtkui/model.py:87 #: src/gpodder/gtkui/model.py:237 src/gpodder/gtkui/shownotes.py:84 #, python-format msgid "from %s" msgstr "de %s" #: src/gpodder/gtkui/model.py:80 src/gpodder/gtkui/model.py:393 msgid "played" msgstr "reproducidos" #: src/gpodder/gtkui/model.py:82 msgid "unplayed" msgstr "sin reproducir" #: src/gpodder/gtkui/model.py:85 msgid "today" msgstr "hoy" #: src/gpodder/gtkui/model.py:86 #, python-format msgid "downloaded %s" msgstr "%s descargado" #: src/gpodder/gtkui/model.py:337 msgid "Deleted" msgstr "Eliminados" #: src/gpodder/gtkui/model.py:342 msgid "New episode" msgstr "Episodio nuevo" #: src/gpodder/gtkui/model.py:356 msgid "Downloaded episode" msgstr "Episodio descargado" #: src/gpodder/gtkui/model.py:359 msgid "Downloaded video episode" msgstr "Episodio de video descargado" #: src/gpodder/gtkui/model.py:362 msgid "Downloaded image" msgstr "Imagen descargada" #: src/gpodder/gtkui/model.py:365 msgid "Downloaded file" msgstr "Archivo descargado" #: src/gpodder/gtkui/model.py:380 msgid "missing file" msgstr "archivo no encontrado" #: src/gpodder/gtkui/model.py:384 msgid "never displayed" msgstr "nunca mostrado" #: src/gpodder/gtkui/model.py:386 msgid "never played" msgstr "nunca reproducido" #: src/gpodder/gtkui/model.py:388 msgid "never opened" msgstr "nunca abierto" #: src/gpodder/gtkui/model.py:391 msgid "displayed" msgstr "mostrado" #: src/gpodder/gtkui/model.py:395 msgid "opened" msgstr "abierto" #: src/gpodder/gtkui/model.py:397 msgid "deletion prevented" msgstr "se evitУГ la eliminaciУГn" #: src/gpodder/gtkui/model.py:432 share/gpodder/ui/gtk/gpodder.ui.h:32 msgid "All episodes" msgstr "Todos los episodios" #: src/gpodder/gtkui/model.py:433 msgid "from all podcasts" msgstr "de todos los podcasts" #: src/gpodder/gtkui/model.py:625 msgid "Subscription paused" msgstr "SuscripciУГn en pausa" #: src/gpodder/gtkui/shownotes.py:118 #, fuzzy msgid "Please select an episode" msgstr "Seleccionar episodios" #: src/gpodder/gtkui/interface/addpodcast.py:74 msgid "Nothing to paste." msgstr "No hay nada que pegar." #: src/gpodder/gtkui/interface/addpodcast.py:74 msgid "Clipboard is empty" msgstr "El portapapeles estУЁ vacУ­o" #: src/gpodder/gtkui/interface/common.py:160 msgid "Username" msgstr "Nombre de usuario" #: src/gpodder/gtkui/interface/common.py:163 msgid "New user" msgstr "Usuario nuevo" #: src/gpodder/gtkui/interface/common.py:170 msgid "Login" msgstr "Iniciar sesiУГn" #: src/gpodder/gtkui/interface/common.py:172 msgid "Authentication required" msgstr "Se requiere autenticaciУГn" #: src/gpodder/gtkui/interface/common.py:203 msgid "Password" msgstr "ContraseУБa" #: src/gpodder/gtkui/interface/common.py:225 msgid "Select destination" msgstr "Seleccionar destino" #: src/gpodder/gtkui/interface/configeditor.py:34 msgid "Setting" msgstr "ConfiguraciУГn" #: src/gpodder/gtkui/interface/configeditor.py:41 msgid "Set to" msgstr "Establecer a" #: src/gpodder/gtkui/interface/configeditor.py:81 #, python-format msgid "Cannot set %(field)s to %(value)s. Needed data type: %(datatype)s" msgstr "" "No se puede establecer %(field)s a %(value)s. Se requiere el tipo de dato: " "%(datatype)s" #: src/gpodder/gtkui/interface/configeditor.py:85 msgid "Error setting option" msgstr "Error al establecer opciУГn" #: src/gpodder/gtkui/desktop/channel.py:100 msgid "Add section" msgstr "Agregar secciУГn" #: src/gpodder/gtkui/desktop/channel.py:100 msgid "New section:" msgstr "Nueva secciУГn:" #: src/gpodder/gtkui/desktop/channel.py:133 msgid "Select new podcast cover artwork" msgstr "Seleccionar nueva portada del podcast" #: src/gpodder/gtkui/desktop/channel.py:161 msgid "You can only drop a single image or URL here." msgstr "Solamente puede soltar una imagen o URL aquУ­." #: src/gpodder/gtkui/desktop/channel.py:161 #: src/gpodder/gtkui/desktop/channel.py:171 msgid "Drag and drop" msgstr "Arrastrar y soltar" #: src/gpodder/gtkui/desktop/channel.py:171 msgid "You can only drop local files and http:// URLs here." msgstr "Solamente puede soltar archivos locales y URLs http:// aquУ­." #: src/gpodder/gtkui/desktop/deviceplaylist.py:98 #, python-format msgid "Folder %s could not be created." msgstr "No se pudo crear la carpeta %s." #: src/gpodder/gtkui/desktop/deviceplaylist.py:98 msgid "Error writing playlist" msgstr "Error al escribir la lista de reproducciУГn" #: src/gpodder/gtkui/desktop/episodeselector.py:288 #: share/gpodder/ui/gtk/gpodderepisodeselector.ui.h:2 msgid "Select all" msgstr "Seleccionar todo" #: src/gpodder/gtkui/desktop/episodeselector.py:292 #: share/gpodder/ui/gtk/gpodderepisodeselector.ui.h:3 msgid "Select none" msgstr "No seleccionar nada" #: src/gpodder/gtkui/desktop/episodeselector.py:324 msgid "Nothing selected" msgstr "No hay nada seleccionado" #: src/gpodder/gtkui/desktop/episodeselector.py:325 #, python-format msgid "%(count)d episode" msgid_plural "%(count)d episodes" msgstr[0] "%(count)d episodio" msgstr[1] "%(count)d episodios" #: src/gpodder/gtkui/desktop/episodeselector.py:327 #, python-format msgid "size: %s" msgstr "tamaУБo: %s" #: src/gpodder/gtkui/desktop/podcastdirectory.py:238 #, fuzzy msgid "Loading podcasts" msgstr "Agregando podcasts" #: src/gpodder/gtkui/desktop/podcastdirectory.py:239 #, fuzzy msgid "Please wait while the podcast list is downloaded" msgstr "Espere mientras se elimina el podcast" #: src/gpodder/gtkui/desktop/preferences.py:51 #: src/gpodder/gtkui/desktop/preferences.py:93 msgid "Do nothing" msgstr "No hacer nada" #: src/gpodder/gtkui/desktop/preferences.py:52 msgid "Show episode list" msgstr "Mostrar lista de episodios" #: src/gpodder/gtkui/desktop/preferences.py:53 msgid "Add to download list" msgstr "Agregar a la lista de descargas" #: src/gpodder/gtkui/desktop/preferences.py:54 msgid "Download immediately" msgstr "Descargar inmediatamente" #: src/gpodder/gtkui/desktop/preferences.py:72 msgid "None" msgstr "Ninguna" #: src/gpodder/gtkui/desktop/preferences.py:73 msgid "iPod" msgstr "" #: src/gpodder/gtkui/desktop/preferences.py:74 msgid "Filesystem-based" msgstr "Basada en el sistema de archivos" #: src/gpodder/gtkui/desktop/preferences.py:94 msgid "Mark as played" msgstr "Marcar como reproducido" #: src/gpodder/gtkui/desktop/preferences.py:95 msgid "Delete from gPodder" msgstr "Eliminar de gPodder" #: src/gpodder/gtkui/desktop/preferences.py:123 #, python-format msgid "Custom (%(format_ids)s)" msgstr "Personalizado (%(format_ids)s)" #: src/gpodder/gtkui/desktop/preferences.py:318 msgid "Name" msgstr "Nombre" #: src/gpodder/gtkui/desktop/preferences.py:369 #, fuzzy msgid "Documentation" msgstr "DuraciУГn" #: src/gpodder/gtkui/desktop/preferences.py:374 #, fuzzy msgid "Extension info" msgstr "InformaciУГn del mУГdulo de extensiones" #: src/gpodder/gtkui/desktop/preferences.py:379 msgid "Support the author" msgstr "" #: src/gpodder/gtkui/desktop/preferences.py:413 msgid "Extension cannot be activated" msgstr "La extensiУГn no pudo ser activada" #: src/gpodder/gtkui/desktop/preferences.py:426 msgid "Extension module info" msgstr "InformaciУГn del mУГdulo de extensiones" #: src/gpodder/gtkui/desktop/preferences.py:463 msgid "Configure audio player" msgstr "Configurar reproductor de audio" #: src/gpodder/gtkui/desktop/preferences.py:464 #: src/gpodder/gtkui/desktop/preferences.py:474 msgid "Command:" msgstr "Comando:" #: src/gpodder/gtkui/desktop/preferences.py:473 msgid "Configure video player" msgstr "Configurar reproductor de video" #: src/gpodder/gtkui/desktop/preferences.py:485 #: src/gpodder/gtkui/desktop/preferences.py:503 msgid "manually" msgstr "manualmente" #: src/gpodder/gtkui/desktop/preferences.py:505 #, python-format msgid "after %(count)d day" msgid_plural "after %(count)d days" msgstr[0] "despuУЉs de %(count)d dУ­a" msgstr[1] "despuУЉs de %(count)d dУ­as" #: src/gpodder/gtkui/desktop/preferences.py:541 msgid "Replace subscription list on server" msgstr "Reemplazar la lista de suscripciones en el servidor" #: src/gpodder/gtkui/desktop/preferences.py:542 msgid "" "Remote podcasts that have not been added locally will be removed on the " "server. Continue?" msgstr "" "Los podcasts remotos que no han sido agregados localmente serУЁn eliminados " "del servidor.ТПDesea continuar?" #: src/gpodder/gtkui/desktop/preferences.py:621 msgid "Select folder for mount point" msgstr "Seleccione una carpeta como punto de montaje" #: src/gpodder/gtkui/desktop/preferences.py:638 msgid "Select folder for playlists" msgstr "Seleccione una carpeta para las listas de reproducciУГn" #: src/gpodder/gtkui/desktop/sync.py:86 msgid "No device configured" msgstr "No se ha configurado ningУКn dispositivo" #: src/gpodder/gtkui/desktop/sync.py:87 msgid "Please set up your device in the preferences dialog." msgstr "" "Por favor configure su dispositivo en la caja de dialogo de preferencias." #: src/gpodder/gtkui/desktop/sync.py:91 msgid "Cannot open device" msgstr "No fue posible abrir el dispositivo" #: src/gpodder/gtkui/desktop/sync.py:92 msgid "Please check the settings in the preferences dialog." msgstr "Por favor verifique la configuraciУГn en las preferencias." #: src/gpodder/gtkui/desktop/sync.py:139 msgid "Not enough space left on device" msgstr "No hay espacio suficiente disponible en el dispositivo" #: src/gpodder/gtkui/desktop/sync.py:140 #, python-format msgid "" "Additional free space required: %(required_space)s\n" "Do you want to continue?" msgstr "" "Se requieren: %(required_space)s de espacio libre disponible\n" "ТПDesea continuar?" #: src/gpodder/gtkui/desktop/sync.py:199 msgid "Update successful" msgstr "La actualizaciУГn fue exitosa" #: src/gpodder/gtkui/desktop/sync.py:200 msgid "The playlist on your MP3 player has been updated." msgstr "La lista de reproducciУГn en su reproductor MP3 ha sido actualizada." #: src/gpodder/gtkui/desktop/sync.py:274 msgid "Episodes have been deleted on device" msgstr "Los episodios han sido eliminados del dispositivo" #: src/gpodder/gtkui/desktop/sync.py:285 msgid "Error writing playlist files" msgstr "Error al escribir los archivos de la lista de reproducciУГn" #: src/gpodder/plugins/soundcloud.py:154 msgid "Unknown track" msgstr "CanciУГn desconocida" #: src/gpodder/plugins/soundcloud.py:181 #, python-format msgid "%s on Soundcloud" msgstr "%s en SoundCloud" #: src/gpodder/plugins/soundcloud.py:190 #, python-format msgid "Tracks published by %s on Soundcloud." msgstr "Canciones publicadas en SoundCloud por %s." #: src/gpodder/plugins/soundcloud.py:217 #, python-format msgid "%s's favorites on Soundcloud" msgstr "Favoritas de %s en SoundCloud" #: src/gpodder/plugins/soundcloud.py:223 #, python-format msgid "Tracks favorited by %s on Soundcloud." msgstr "Canciones favoritas de %s en SoundCloud." #: share/gpodder/extensions/audio_converter.py:20 msgid "Convert audio files" msgstr "Convertir archivos de audio" #: share/gpodder/extensions/audio_converter.py:21 msgid "Transcode audio files to mp3/ogg" msgstr "Convertir archivos de audio a mp3/ogg" #: share/gpodder/extensions/audio_converter.py:84 #: share/gpodder/extensions/video_converter.py:86 #, python-format msgid "Convert to %(format)s" msgstr "Convertir a %(format)s" #: share/gpodder/extensions/audio_converter.py:111 #: share/gpodder/extensions/rockbox_convert2mp4.py:65 #: share/gpodder/extensions/video_converter.py:111 msgid "File converted" msgstr "Archivo convertido" #: share/gpodder/extensions/audio_converter.py:114 #: share/gpodder/extensions/video_converter.py:114 msgid "Conversion failed" msgstr "La conversiУГn fallУГ" #: share/gpodder/extensions/concatenate_videos.py:20 #: share/gpodder/extensions/concatenate_videos.py:100 #, fuzzy msgid "Concatenate videos" msgstr "Convertir archivos de video" #: share/gpodder/extensions/concatenate_videos.py:21 #, fuzzy msgid "Add a context menu item for concatenating multiple videos" msgstr "" "Agregar elemento al menУК de contexto para poner en la lista de espera de los " "reproductores de medios instalados" #: share/gpodder/extensions/concatenate_videos.py:37 msgid "Save video" msgstr "" #: share/gpodder/extensions/concatenate_videos.py:66 #, fuzzy msgid "Concatenating video files" msgstr "Convertir archivos de video" #: share/gpodder/extensions/concatenate_videos.py:67 #, python-format msgid "Writing %(filename)s" msgstr "" #: share/gpodder/extensions/concatenate_videos.py:78 msgid "Videos successfully converted" msgstr "" #: share/gpodder/extensions/concatenate_videos.py:79 #, fuzzy msgid "Error converting videos" msgstr "Error al convertir archivo." #: share/gpodder/extensions/concatenate_videos.py:80 msgid "Concatenation result" msgstr "" #: share/gpodder/extensions/enqueue_in_mediaplayer.py:16 msgid "Enqueue in media players" msgstr "Poner en lista de espera de los reproductores de medios" #: share/gpodder/extensions/enqueue_in_mediaplayer.py:17 msgid "" "Add a context menu item for enqueueing episodes in installed media players" msgstr "" "Agregar elemento al menУК de contexto para poner en la lista de espera de los " "reproductores de medios instalados" #: share/gpodder/extensions/enqueue_in_mediaplayer.py:35 msgid "Enqueue in" msgstr "Poner en lista de espera" #: share/gpodder/extensions/episode_website_context_menu.py:14 msgid "\"Open website\" episode context menu" msgstr "" #: share/gpodder/extensions/episode_website_context_menu.py:15 #, fuzzy msgid "Add a context menu item for opening the website of an episode" msgstr "" "Agregar elemento al menУК de contexto para poner en la lista de espera de los " "reproductores de medios instalados" #: share/gpodder/extensions/episode_website_context_menu.py:30 #, fuzzy msgid "Open website" msgstr "Sitio Web:" #: share/gpodder/extensions/gtk_statusicon.py:14 msgid "Gtk Status Icon" msgstr "Уcono de estado de Gtk" #: share/gpodder/extensions/gtk_statusicon.py:15 msgid "Show a status icon for Gtk-based Desktops." msgstr "Mostrar un У­cono de estado en los escritorios basados en Gtk" #: share/gpodder/extensions/minimize_on_start.py:10 msgid "Minimize on start" msgstr "Minimizar al iniciar" #: share/gpodder/extensions/minimize_on_start.py:11 msgid "Minimizes the gPodder window on startup." msgstr "Minimiza la ventana de gPodder al iniciar." #: share/gpodder/extensions/mpris-listener.py:33 msgid "MPRIS Listener" msgstr "" #: share/gpodder/extensions/mpris-listener.py:34 msgid "Convert MPRIS notifications to gPodder Media Player D-Bus API" msgstr "" #: share/gpodder/extensions/normalize_audio.py:21 msgid "Normalize audio with re-encoding" msgstr "Normalizar audio a travУЉs de una recodificaciУГn" #: share/gpodder/extensions/normalize_audio.py:22 msgid "Normalize the volume of audio files with normalize-audio" msgstr "" "Normalizar el volumen de los archivos de audio a travУЉs de normalize-audio" #: share/gpodder/extensions/normalize_audio.py:99 msgid "File normalized" msgstr "Archivo normalizado" #: share/gpodder/extensions/rename_download.py:16 msgid "Rename episodes after download" msgstr "Renombrar episodios despues de descargarlos" #: share/gpodder/extensions/rename_download.py:17 msgid "Rename episodes to \".\" on download" msgstr "Renombrar episodios a \".\" al descargarlos" #: share/gpodder/extensions/rm_ogg_cover.py:37 msgid "Remove cover art from OGG files" msgstr "Eliminar portada de los archivos OGG" #: share/gpodder/extensions/rm_ogg_cover.py:38 msgid "removes coverart from all downloaded ogg files" msgstr "Elimina portada de todos los archivos OGG" #: share/gpodder/extensions/rm_ogg_cover.py:66 msgid "Remove cover art" msgstr "Eliminar portada" #: share/gpodder/extensions/rockbox_convert2mp4.py:26 msgid "Convert video files to MP4 for Rockbox" msgstr "Convertir archivos de video de MP4 a Rockbox" #: share/gpodder/extensions/rockbox_convert2mp4.py:27 msgid "Converts all videos to a Rockbox-compatible format" msgstr "Convierte todos los videos a un formato compatible con Rockbox" #: share/gpodder/extensions/sonos.py:19 share/gpodder/extensions/sonos.py:78 msgid "Stream to Sonos" msgstr "Enviar vУ­a 'stream' a Sonos" #: share/gpodder/extensions/sonos.py:20 msgid "Stream podcasts to Sonos speakers" msgstr "Enviar podcasts vУ­a 'stream' a bocinas Sonos" #: share/gpodder/extensions/tagging.py:45 msgid "Tag downloaded files using Mutagen" msgstr "Etiquetar los archivos descargados empleando Mutagen" #: share/gpodder/extensions/tagging.py:46 msgid "Add episode and podcast titles to MP3/OGG tags" msgstr "Agregar tУ­tulos del podcast y episodio a las etiquetas MP3/OGG" #: share/gpodder/extensions/taskbar_progress.py:28 msgid "Show download progress on the taskbar" msgstr "Mostrar el avance de la descarga en la barra de tareas" #: share/gpodder/extensions/taskbar_progress.py:29 msgid "Displays the progress on the Windows taskbar." msgstr "Mostrar el avance en la barra de tareas de Windows." #: share/gpodder/extensions/ted_subtitles.py:16 msgid "Subtitle Downloader for TED Talks" msgstr "Herramienta para descargar subtУ­tulos de conferencias TED" #: share/gpodder/extensions/ted_subtitles.py:17 msgid "Downloads .srt subtitles for TED Talks Videos" msgstr "Descargar subtУ­tulos '.srt' para los videos de las conferencias TED" #: share/gpodder/extensions/ubuntu_appindicator.py:10 msgid "Ubuntu App Indicator" msgstr "Indicador de aplicaciУГn de Ubuntu" #: share/gpodder/extensions/ubuntu_appindicator.py:11 msgid "Show a status indicator in the top bar." msgstr "Muestra un indicador de estado en la barra superior." #: share/gpodder/extensions/ubuntu_appindicator.py:47 msgid "Show main window" msgstr "Mostrar ventana principal" #: share/gpodder/extensions/ubuntu_appindicator.py:57 #: share/gpodder/ui/gtk/gpodder.ui.h:6 msgid "Quit" msgstr "Salir" #: share/gpodder/extensions/ubuntu_unity.py:10 msgid "Ubuntu Unity Integration" msgstr "IntegraciУГn con Unity de Ubuntu" #: share/gpodder/extensions/ubuntu_unity.py:11 msgid "Show download progress in the Unity Launcher icon." msgstr "Mostrar el avance de la descarga en el У­cono del lanzador de Unity." #: share/gpodder/extensions/update_feeds_on_startup.py:14 msgid "Search for new episodes on startup" msgstr "Buscar nuevos episodios al iniciar" #: share/gpodder/extensions/update_feeds_on_startup.py:15 msgid "Starts the search for new episodes on startup" msgstr "Inicia la bУКsqueda de nuevos episodios al iniciar" #: share/gpodder/extensions/video_converter.py:22 msgid "Convert video files" msgstr "Convertir archivos de video" #: share/gpodder/extensions/video_converter.py:23 msgid "Transcode video files to avi/mp4/m4v" msgstr "Convertir archivos de video a avi/mp4/m4v" #: share/gpodder/ui/gtk/gpodderaddpodcast.ui.h:1 msgid "Add a new podcast" msgstr "Agregar nuevo podcast" #: share/gpodder/ui/gtk/gpodderaddpodcast.ui.h:2 msgid "URL:" msgstr "URL:" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:1 msgid "gPodder Podcast Editor" msgstr "Editor de Podcast gPodder" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:2 msgid "Section:" msgstr "SecciУГn:" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:3 msgid "Disable feed updates (pause subscription)" msgstr "Desactivar actualizaciones de fuente (poner suscripciУГn en pausa)" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:4 msgid "Synchronize to MP3 player devices" msgstr "Sincronizar a dispositivos reproductores de MP3" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:5 msgid "Strategy:" msgstr "Estrategia:" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:6 #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:6 msgid "General" msgstr "General" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:7 msgid "HTTP/FTP Authentication" msgstr "AutenticaciУГn HTTP/FTP" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:8 #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:13 msgid "Username:" msgstr "Nombre de usuario:" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:9 #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:14 msgid "Password:" msgstr "ContraseУБa:" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:10 msgid "Locations" msgstr "Ubicaciones" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:11 msgid "Download to:" msgstr "Descargar a:" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:12 msgid "Website:" msgstr "Sitio Web:" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:13 msgid "website label" msgstr "etiqueta del sitio web" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:14 msgid "Advanced" msgstr "Avanzado" #: share/gpodder/ui/gtk/gpodderconfigeditor.ui.h:1 msgid "gPodder Configuration Editor" msgstr "Editor de configuraciУГn de gPodder" #: share/gpodder/ui/gtk/gpodderconfigeditor.ui.h:2 msgid "Search for:" msgstr "Buscar:" #: share/gpodder/ui/gtk/gpodderconfigeditor.ui.h:3 msgid "Show All" msgstr "Mostrar Todos" #: share/gpodder/ui/gtk/gpodderepisodeselector.ui.h:1 msgid "Select episodes" msgstr "Seleccionar episodios" #: share/gpodder/ui/gtk/gpodderpodcastdirectory.ui.h:1 msgid "Find new podcasts" msgstr "Buscar nuevos podcasts" #: share/gpodder/ui/gtk/gpodderpodcastdirectory.ui.h:2 msgid "Select All" msgstr "Seleccionar todos" #: share/gpodder/ui/gtk/gpodderpodcastdirectory.ui.h:3 msgid "Select None" msgstr "No seleccionar ninguno" #: share/gpodder/ui/gtk/gpodderpodcastdirectory.ui.h:4 msgid "label" msgstr "" #: share/gpodder/ui/gtk/gpodderpodcastdirectory.ui.h:5 msgid "..." msgstr "" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:1 #: share/gpodder/ui/gtk/gpodder.ui.h:5 msgid "Preferences" msgstr "Preferencias" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:2 msgid "Audio player:" msgstr "Reproductor de audio:" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:3 msgid "Video player:" msgstr "Reproductor de video:" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:4 msgid "\"All episodes\" in podcast list" msgstr "\"Todos los episodios\" en la lista de podcasts" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:5 msgid "Use sections for podcast list" msgstr "Usar secciones para la lista de podcasts" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:7 #, fuzzy msgid "Preferred YouTube format:" msgstr "Formato de video preferido:" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:8 msgid "YouTube API key (v3):" msgstr "" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:9 #, fuzzy msgid "Preferred Vimeo format:" msgstr "Formato de video preferido:" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:11 msgid "Extensions" msgstr "Extensiones" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:12 msgid "Synchronize subscriptions and episode actions" msgstr "Sincronizar suscripciones y acciones del episodio" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:15 msgid "Replace list on server with local subscriptions" msgstr "Reemplazar lista del servidor con suscripciones locales" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:16 msgid "Device name:" msgstr "Nombre del dispositivo:" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:17 msgid "gpodder.net" msgstr "gpodder.net" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:18 msgid "Update interval:" msgstr "Intervalo de actualizaciУГn:" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:19 msgid "Maximum number of episodes per podcast:" msgstr "NУКmero mУЁximo de episodios por podcast:" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:20 msgid "When new episodes are found:" msgstr "Cuando se encuentren episodios nuevos:" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:21 msgid "Updating" msgstr "Actualizando" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:22 msgid "Delete played episodes:" msgstr "Eliminar episodios reproducidos:" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:23 msgid "Remove played episodes even if unfinished" msgstr "Eliminar episodios reproducidos aunque no se hayan completado" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:24 msgid "Also remove unplayed episodes" msgstr "Eliminar tambiУЉn episodios sin reproducir" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:25 msgid "Clean-up" msgstr "Limpieza" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:26 msgid "Device type:" msgstr "Tipo de dispositivo:" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:27 msgid "Mountpoint:" msgstr "Punto de montaje:" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:28 msgid "After syncing an episode:" msgstr "DespuУЉs de sincronizar un episodio:" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:29 msgid "Create playlists on device" msgstr "Crear lista de reproducciУГn en dispositivo" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:30 msgid "Playlists Folder:" msgstr "Carpeta de listas de reproducciУГn:" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:31 msgid "Remove episodes deleted on device from gPodder" msgstr "" "Eliminar de gPodder aquellos episodios que sean borrados del dispositivo" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:32 msgid "Only sync unplayed episodes" msgstr "Sincronizar УКnicamente los episodios que no han sido reproducidos" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:33 msgid "Devices" msgstr "Dispositivos" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:34 msgid "Edit config" msgstr "Editar configuraciУГn" #: share/gpodder/ui/gtk/gpodder.ui.h:1 msgid "_Podcasts" msgstr "_Podcasts" #: share/gpodder/ui/gtk/gpodder.ui.h:2 msgid "Check for new episodes" msgstr "Buscar episodios nuevos" #: share/gpodder/ui/gtk/gpodder.ui.h:3 msgid "Download new episodes" msgstr "Descargar episodios nuevos" #: share/gpodder/ui/gtk/gpodder.ui.h:7 msgid "_Subscriptions" msgstr "_Suscripciones" #: share/gpodder/ui/gtk/gpodder.ui.h:8 msgid "Discover new podcasts" msgstr "Descubrir nuevos podcasts" #: share/gpodder/ui/gtk/gpodder.ui.h:9 msgid "Add podcast via URL" msgstr "Agregar podcast vУ­a URL" #: share/gpodder/ui/gtk/gpodder.ui.h:11 msgid "Unsubscribe" msgstr "Cancelar suscripciУГn" #: share/gpodder/ui/gtk/gpodder.ui.h:14 msgid "Import from OPML file" msgstr "Importar desde archivo OPML" #: share/gpodder/ui/gtk/gpodder.ui.h:15 msgid "Export to OPML file" msgstr "Exportar a archivo OPML" #: share/gpodder/ui/gtk/gpodder.ui.h:16 msgid "Go to gpodder.net" msgstr "Ir a gpodder.net" #: share/gpodder/ui/gtk/gpodder.ui.h:17 msgid "_Episodes" msgstr "_Episodios" #: share/gpodder/ui/gtk/gpodder.ui.h:18 msgid "Play" msgstr "Reproducir" #: share/gpodder/ui/gtk/gpodder.ui.h:19 msgid "Open" msgstr "Abrir" #: share/gpodder/ui/gtk/gpodder.ui.h:22 msgid "Delete" msgstr "Eliminar" #: share/gpodder/ui/gtk/gpodder.ui.h:23 msgid "Toggle new status" msgstr "Cambiar estado de nuevo" #: share/gpodder/ui/gtk/gpodder.ui.h:24 msgid "Change delete lock" msgstr "Cambiar bloqueo de eliminaciУГn" #: share/gpodder/ui/gtk/gpodder.ui.h:26 msgid "E_xtras" msgstr "E_xtras" #: share/gpodder/ui/gtk/gpodder.ui.h:27 msgid "Sync to device" msgstr "Sincronizar al dispositivo" #: share/gpodder/ui/gtk/gpodder.ui.h:28 #, fuzzy msgid "Update YouTube subscriptions" msgstr "No hay suscripciones" #: share/gpodder/ui/gtk/gpodder.ui.h:29 msgid "_View" msgstr "_Ver" #: share/gpodder/ui/gtk/gpodder.ui.h:30 msgid "Toolbar" msgstr "Barra de herramientas" #: share/gpodder/ui/gtk/gpodder.ui.h:31 msgid "Episode descriptions" msgstr "Descripciones de los episodios" #: share/gpodder/ui/gtk/gpodder.ui.h:33 msgid "Hide deleted episodes" msgstr "Ocultar episodios eliminados" #: share/gpodder/ui/gtk/gpodder.ui.h:34 msgid "Downloaded episodes" msgstr "Episodios descargados" #: share/gpodder/ui/gtk/gpodder.ui.h:35 msgid "Unplayed episodes" msgstr "Episodios sin reproducir" #: share/gpodder/ui/gtk/gpodder.ui.h:36 msgid "Hide podcasts without episodes" msgstr "Ocultar podcasts sin episodios" #: share/gpodder/ui/gtk/gpodder.ui.h:37 msgid "_Help" msgstr "Ay_uda" #: share/gpodder/ui/gtk/gpodder.ui.h:38 msgid "User manual" msgstr "Manual de usuario" #: share/gpodder/ui/gtk/gpodder.ui.h:39 msgid "Software updates" msgstr "Actualizaciones de software" #: share/gpodder/ui/gtk/gpodder.ui.h:40 msgid "Filter:" msgstr "Filtro:" #: share/gpodder/ui/gtk/gpodder.ui.h:41 msgid "Podcasts" msgstr "Podcasts" #: share/gpodder/ui/gtk/gpodder.ui.h:42 msgid "Limit rate to" msgstr "Limitar velocidad de descarga a" #: share/gpodder/ui/gtk/gpodder.ui.h:43 msgid "KiB/s" msgstr "KiB/s" #: share/gpodder/ui/gtk/gpodder.ui.h:44 msgid "Limit downloads to" msgstr "Limitar descargas a" #: share/gpodder/ui/gtk/gpodderwelcome.ui.h:2 msgid "Welcome to gPodder" msgstr "Bienvenido a gPodder" #: share/gpodder/ui/gtk/gpodderwelcome.ui.h:3 msgid "Your podcast list is empty." msgstr "Su lista de podcasts estУЁ vacУ­a." #: share/gpodder/ui/gtk/gpodderwelcome.ui.h:4 msgid "Choose from a list of example podcasts" msgstr "Elija de una lista de ejemplos de podcasts" #: share/gpodder/ui/gtk/gpodderwelcome.ui.h:5 msgid "Add a podcast by entering its URL" msgstr "Agregar podcast escribiendo su URL" #: share/gpodder/ui/gtk/gpodderwelcome.ui.h:6 msgid "Restore my subscriptions from gpodder.net" msgstr "Restaurar mis suscripciones desde gpodder.net" #: bin/gpo:266 msgid "Podcast update requested by extensions." msgstr "ActualizaciУГn de podcast solicitada por las extensiones." #: bin/gpo:270 msgid "Episode download requested by extensions." msgstr "Descarga de episodio solicitada por las extensiones." #: bin/gpo:323 #, python-format msgid "Invalid url: %s" msgstr "URL invУЁlido: %s" #: bin/gpo:340 bin/gpo:416 bin/gpo:450 bin/gpo:582 bin/gpo:597 bin/gpo:717 #, python-format msgid "You are not subscribed to %s." msgstr "No estУЁ suscrito a %s." #: bin/gpo:346 #, python-format msgid "Already subscribed to %s." msgstr "Ya estУЁ suscrito a %s." #: bin/gpo:352 #, python-format msgid "Cannot subscribe to %s." msgstr "No se puede suscribir a %s." #: bin/gpo:368 #, python-format msgid "Successfully added %s." msgstr "%s fue agregado exitosamente." #: bin/gpo:386 msgid "This configuration option does not exist." msgstr "Esta opciУГn de configuraciУГn no existe." #: bin/gpo:390 msgid "Can only set leaf configuration nodes." msgstr "Solamente se pueden establecer nodos-hoja de configuraciУГn." #: bin/gpo:404 #, python-format msgid "Renamed %(old_title)s to %(new_title)s." msgstr "Se renombrУГ %(old_title)s a %(new_title)s." #: bin/gpo:420 #, python-format msgid "Unsubscribed from %s." msgstr "SuscripciУГn cancelada desde %s." #: bin/gpo:494 msgid "Updates disabled" msgstr "Actualizaciones desactivadas" #: bin/gpo:505 #, python-format msgid "%(count)d new episode" msgid_plural "%(count)d new episodes" msgstr[0] "%(count)d episodio nuevo" msgstr[1] "%(count)d episodios nuevos" #: bin/gpo:511 msgid "Checking for new episodes" msgstr "Verificando si existen nuevos episodios" #: bin/gpo:520 #, python-format msgid "Skipping %(podcast)s" msgstr "Omitiendo %(podcast)s" #: bin/gpo:588 #, python-format msgid "Disabling feed update from %s." msgstr "Desactivando la actualizaciУГn de la fuente desde %s." #: bin/gpo:603 #, python-format msgid "Enabling feed update from %s." msgstr "Activando la actualizaciУГn de la fuente desde %s." #: bin/gpo:616 #, python-format msgid "Please register a YouTube API key and set it using %(command)s." msgstr "" #: bin/gpo:643 #, fuzzy, python-format msgid "Changing: %(old_url)s => %(new_url)s" msgstr "La URL fue cambiada de %(old_url)s a %(new_url)s." #: bin/gpo:653 #, fuzzy msgid "Nothing to fix" msgstr "No hay nada que exportar" #: bin/gpo:672 msgid "No podcasts found." msgstr "No se encontraron podcasts." #: bin/gpo:686 msgid "Enter index to subscribe, ? for list" msgstr "Introduzca el У­ndice para suscribirse, ? para la lista" #: bin/gpo:700 bin/gpo:704 msgid "Invalid value." msgstr "Valor no vУЁlido." #: bin/gpo:721 #, python-format msgid "Invalid URL: %s" msgstr "URL no vУЁlida: %s" #: bin/gpo:724 #, python-format msgid "Changed URL from %(old_url)s to %(new_url)s." msgstr "La URL fue cambiada de %(old_url)s a %(new_url)s." #: bin/gpo:782 #, python-format msgid "Syntax error: %(error)s" msgstr "Error de sintaxis: %(error)s" #: bin/gpo:876 msgid "Ambiguous command. Did you mean.." msgstr "Comando ambiguo. ТПQuiso decir...." #: bin/gpo:880 msgid "The requested function is not available." msgstr "La funciУГn solicitada no estУЁ disponible." #: bin/gpodder:105 msgid "print logging output on the console" msgstr "mostrar bitУЁcora en la consola" #: bin/gpodder:108 msgid "subscribe to the feed at URL" msgstr "suscribir a la fuente desde un URL" #: bin/gpodder:113 msgid "Mac OS X application process number" msgstr "NУКmero de proceso de aplicaciУГn de Mac OS X" #: share/applications/gpodder.desktop.in.h:2 msgid "gPodder Podcast Client" msgstr "Cliente de Podcasts gPodder" #: share/applications/gpodder.desktop.in.h:3 msgid "Podcast Client" msgstr "Cliente de podcasts" #: share/applications/gpodder.desktop.in.h:4 msgid "Subscribe to audio and video content from the web" msgstr "Suscribirse a contenido multimedia de la Web" #: share/applications/gpodder-url-handler.desktop.in.h:1 #, fuzzy msgid "gPodder (subscribe to feed)" msgstr "suscribir a la fuente desde un URL" gpodder-3.9.0/po/pt.po0000644000016000001710000016661612654461625015715 0ustar jenkinsjenkins00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # # Translators: # Joel Calado , 2007. # SУЉrgio Marques , 2010,2012-2013. # Thomas Perl , 2006. msgid "" msgstr "" "Project-Id-Version: gPodder\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2016-02-03 20:31+0000\n" "PO-Revision-Date: 2013-03-05 15:01+0000\n" "Last-Translator: Thomas Perl \n" "Language-Team: Portuguese (http://www.transifex.com/projects/p/gpodder/" "language/pt/)\n" "Language: pt\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" #: src/gpodder/config.py:55 #, python-format msgid "gPodder on %s" msgstr "gPodder em %s" #: src/gpodder/directory.py:95 #, fuzzy msgid "gpodder.net search" msgstr "gpodder.net" #: src/gpodder/directory.py:104 #, fuzzy msgid "OPML from web" msgstr "Ficheiros OPML" #: src/gpodder/directory.py:113 #, fuzzy msgid "OPML file" msgstr "Ficheiros OPML" #: src/gpodder/directory.py:122 share/gpodder/ui/gtk/gpodderwelcome.ui.h:1 msgid "Getting started" msgstr "IntroduУЇУЃo" #: src/gpodder/directory.py:131 #, fuzzy msgid "gpodder.net Top 50" msgstr "gpodder.net" #: src/gpodder/directory.py:140 #, fuzzy msgid "gpodder.net Tags" msgstr "gpodder.net" #: src/gpodder/directory.py:152 #, fuzzy msgid "Soundcloud search" msgstr "%s no Soundcloud" #: src/gpodder/directory.py:165 #, fuzzy msgid "Imported OPML file" msgstr "Importar de ficheiro OPML" #: src/gpodder/download.py:329 msgid "Wrong username/password" msgstr "Utilizador/senha invУЁlida" #: src/gpodder/download.py:527 src/gpodder/sync.py:924 msgid "Added" msgstr "Adicionado" #: src/gpodder/download.py:527 src/gpodder/sync.py:924 msgid "Queued" msgstr "Na fila" #: src/gpodder/download.py:527 src/gpodder/gtkui/model.py:327 msgid "Downloading" msgstr "A transferir" #: src/gpodder/download.py:528 src/gpodder/model.py:721 #: src/gpodder/sync.py:925 msgid "Finished" msgstr "ConcluУ­do" #: src/gpodder/download.py:528 src/gpodder/sync.py:925 msgid "Failed" msgstr "Falhou" #: src/gpodder/download.py:528 src/gpodder/sync.py:925 msgid "Cancelled" msgstr "Cancelado" #: src/gpodder/download.py:528 src/gpodder/sync.py:925 msgid "Paused" msgstr "Pausado" #: src/gpodder/download.py:862 msgid "Missing content from server" msgstr "O conteУКdo nУЃo existe no servidor" #: src/gpodder/download.py:868 #, python-format msgid "I/O Error: %(error)s: %(filename)s" msgstr "Erro E/S: %(error)s: %(filename)s" #: src/gpodder/download.py:875 #, python-format msgid "HTTP Error %(code)s: %(message)s" msgstr "Erro HTTP %(code)s: %(message)s" #: src/gpodder/download.py:879 src/gpodder/sync.py:1081 #, python-format msgid "Error: %s" msgstr "Erro: %s" #: src/gpodder/extensions.py:55 msgid "Desktop Integration" msgstr "IntegraУЇУЃo no ambiente de trabalho" #: src/gpodder/extensions.py:56 msgid "Interface" msgstr "Interface" #: src/gpodder/extensions.py:57 msgid "Post download" msgstr "Enviar transferУЊncia" #: src/gpodder/extensions.py:59 src/gpodder/model.py:779 #: src/gpodder/model.py:1225 msgid "Other" msgstr "Outros" #: src/gpodder/extensions.py:100 msgid "No description for this extension." msgstr "Sem descriУЇУЃo para esta extensУЃo." #: src/gpodder/extensions.py:212 #, python-format msgid "Command not found: %(command)s" msgstr "Comando nУЃo encontrado: %(command)s" #: src/gpodder/extensions.py:228 #, python-format msgid "Need at least one of the following commands: %(list_of_commands)s" msgstr "" #: src/gpodder/extensions.py:265 #, python-format msgid "Python module not found: %(module)s" msgstr "MУГdulo python nУЃo encontrado: %(module)s" #: src/gpodder/model.py:446 src/gpodder/plugins/soundcloud.py:156 msgid "No description available" msgstr "Sem descriУЇУЃo" #: src/gpodder/model.py:679 msgid "unknown" msgstr "desconhecido" #: src/gpodder/model.py:746 msgid "Default" msgstr "PadrУЃo" #: src/gpodder/model.py:747 msgid "Only keep latest" msgstr "Manter УКltima" #: src/gpodder/model.py:1208 src/gpodder/model.py:1223 #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:10 msgid "Video" msgstr "VУ­deo" #: src/gpodder/model.py:1221 msgid "Audio" msgstr "Уudio" #: src/gpodder/my.py:174 #, python-format msgid "Add %s" msgstr "Adicionar %s" #: src/gpodder/my.py:176 #, python-format msgid "Remove %s" msgstr "Remover %s" #: src/gpodder/sync.py:196 msgid "Cancelled by user" msgstr "Cancelado pelo utilizador" #: src/gpodder/sync.py:199 msgid "Writing data to disk" msgstr "A escrever dados no disco" #: src/gpodder/sync.py:295 msgid "Opening iPod database" msgstr "A abrir base de dados iPod" #: src/gpodder/sync.py:305 msgid "iPod opened" msgstr "iPod aberto" #: src/gpodder/sync.py:316 msgid "Saving iPod database" msgstr "A gravar base de dados iPod" #: src/gpodder/sync.py:321 msgid "Writing extended gtkpod database" msgstr "A escrever base de dados detalhada gtkpod" #: src/gpodder/sync.py:397 src/gpodder/sync.py:680 src/gpodder/sync.py:874 #, python-format msgid "Removing %s" msgstr "A remover %s" #: src/gpodder/sync.py:412 src/gpodder/sync.py:557 #, python-format msgid "Adding %s" msgstr "A adicionar %s" #: src/gpodder/sync.py:430 #, python-format msgid "Error copying %(episode)s: Not enough free space on %(mountpoint)s" msgstr "" "Erro ao copiar %(episode)s: nУЃo possui espaУЇo suficiente em %(mountpoint)s" #: src/gpodder/sync.py:515 msgid "Opening MP3 player" msgstr "A abrir leitor MP3" #: src/gpodder/sync.py:518 msgid "MP3 player opened" msgstr "Leitor MP3 aberto" #: src/gpodder/sync.py:576 #, python-format msgid "" "Not enough space in %(path)s: %(free)s available, but need at least %(need)s" msgstr "" #: src/gpodder/sync.py:603 src/gpodder/sync.py:611 #, python-format msgid "Error opening %(filename)s: %(message)s" msgstr "Erro ao abrir %(filename)s: %(message)s" #: src/gpodder/sync.py:780 src/gpodder/sync.py:786 msgid "MTP device" msgstr "Dispositivo MTP" #: src/gpodder/sync.py:793 msgid "Opening the MTP device" msgstr "A abrir dispositivo MTP" #: src/gpodder/sync.py:803 #, python-format msgid "%s opened" msgstr "%s aberto" #: src/gpodder/sync.py:808 #, python-format msgid "Closing %s" msgstr "A fechar %s" #: src/gpodder/sync.py:816 #, python-format msgid "%s closed" msgstr "%s fechado" #: src/gpodder/sync.py:821 bin/gpo:708 #, python-format msgid "Adding %s..." msgstr "A adicionar %s." #: src/gpodder/sync.py:924 msgid "Synchronizing" msgstr "A sincronizar" #: src/gpodder/util.py:429 #, python-format msgid "%(count)d day ago" msgid_plural "%(count)d days ago" msgstr[0] "%(count)d dia atrУЁs" msgstr[1] "%(count)d dias atrУЁs" #: src/gpodder/util.py:508 msgid "Today" msgstr "Hoje" #: src/gpodder/util.py:510 msgid "Yesterday" msgstr "Ontem" #: src/gpodder/util.py:553 src/gpodder/util.py:556 msgid "(unknown)" msgstr "(desconhecido)" #: src/gpodder/util.py:1193 src/gpodder/util.py:1212 #, python-format msgid "%(count)d second" msgid_plural "%(count)d seconds" msgstr[0] "%(count)d segundo" msgstr[1] "%(count)d segundos" #: src/gpodder/util.py:1206 #, python-format msgid "%(count)d hour" msgid_plural "%(count)d hours" msgstr[0] "%(count)d hora" msgstr[1] "%(count)d horas" #: src/gpodder/util.py:1209 #, python-format msgid "%(count)d minute" msgid_plural "%(count)d minutes" msgstr[0] "%(count)d minuto" msgstr[1] "%(count)d minutos" #: src/gpodder/util.py:1215 msgid "and" msgstr "e" #: src/gpodder/gtkui/config.py:50 msgid "Integer" msgstr "Inteiro" #: src/gpodder/gtkui/config.py:52 msgid "Float" msgstr "Flutuante" #: src/gpodder/gtkui/config.py:54 msgid "Boolean" msgstr "Booleano" #: src/gpodder/gtkui/config.py:56 msgid "String" msgstr "Texto" #: src/gpodder/gtkui/desktopfile.py:70 #, python-format msgid "Command: %s" msgstr "Comando: %s" #: src/gpodder/gtkui/desktopfile.py:150 msgid "Default application" msgstr "AplicaУЇУЃo padrУЃo" #: src/gpodder/gtkui/main.py:205 share/applications/gpodder.desktop.in.h:1 msgid "gPodder" msgstr "gPodder" #: src/gpodder/gtkui/main.py:288 msgid "Loading incomplete downloads" msgstr "A carregar transferУЊncias incompletas" #: src/gpodder/gtkui/main.py:289 msgid "Some episodes have not finished downloading in a previous session." msgstr "Alguns episУГdios da sessУЃo anterior nУЃo foram transferidos." #: src/gpodder/gtkui/main.py:291 #, python-format msgid "%(count)d partial file" msgid_plural "%(count)d partial files" msgstr[0] "%(count)d ficheiro parcial" msgstr[1] "%(count)d ficheiros parciais" #: src/gpodder/gtkui/main.py:306 msgid "Resume all" msgstr "Retomar todas" #: src/gpodder/gtkui/main.py:316 msgid "Incomplete downloads from a previous session were found." msgstr "Foram encontradas transferУЊncias incompletas da sessУЃo anterior." #: src/gpodder/gtkui/main.py:414 msgid "Action" msgstr "AУЇУЃo" #: src/gpodder/gtkui/main.py:461 msgid "Confirm changes from gpodder.net" msgstr "Confirmar alteraУЇУЕes de gpodder.net" #: src/gpodder/gtkui/main.py:462 msgid "Select the actions you want to carry out." msgstr "Selecione as aУЇУЕes a executar." #: src/gpodder/gtkui/main.py:502 msgid "Uploading subscriptions" msgstr "A enviar subscriУЇУЕes" #: src/gpodder/gtkui/main.py:503 msgid "Your subscriptions are being uploaded to the server." msgstr "As suas subscriУЇУЕes estУЃo a ser enviadas para o servidor." #: src/gpodder/gtkui/main.py:508 msgid "List uploaded successfully." msgstr "Lista enviada com sucesso." #: src/gpodder/gtkui/main.py:515 msgid "Error while uploading" msgstr "Erro ao enviar" #: src/gpodder/gtkui/main.py:800 src/gpodder/gtkui/main.py:928 #: src/gpodder/gtkui/main.py:2622 src/gpodder/gtkui/main.py:2815 #: src/gpodder/gtkui/desktop/episodeselector.py:132 #: src/gpodder/gtkui/desktop/sync.py:270 msgid "Episode" msgstr "EpisУГdio" #: src/gpodder/gtkui/main.py:819 msgid "Size" msgstr "Tamanho" #: src/gpodder/gtkui/main.py:824 msgid "Duration" msgstr "DuraУЇУЃo" #: src/gpodder/gtkui/main.py:828 msgid "Released" msgstr "Publicado" #: src/gpodder/gtkui/main.py:855 msgid "Visible columns" msgstr "Colunas visУ­veis" #: src/gpodder/gtkui/main.py:948 src/gpodder/gtkui/main.py:1108 #: share/gpodder/ui/gtk/gpodder.ui.h:45 msgid "Progress" msgstr "EvoluУЇУЃo" #: src/gpodder/gtkui/main.py:982 msgid "Loading episodes" msgstr "A carregar episУГdios" #: src/gpodder/gtkui/main.py:985 msgid "No episodes in current view" msgstr "Sem episУГdios na vista atual" #: src/gpodder/gtkui/main.py:987 msgid "No episodes available" msgstr "Sem episУГdios disponУ­veis" #: src/gpodder/gtkui/main.py:993 msgid "No podcasts in this view" msgstr "Sem podcasts nesta vista" #: src/gpodder/gtkui/main.py:995 msgid "No subscriptions" msgstr "Sem subscriУЇУЕes" #: src/gpodder/gtkui/main.py:997 msgid "No active tasks" msgstr "Sem tarefas ativas" #: src/gpodder/gtkui/main.py:1112 src/gpodder/gtkui/main.py:1114 #, python-format msgid "%(count)d active" msgid_plural "%(count)d active" msgstr[0] "%(count)d ativa" msgstr[1] "%(count)d ativas" #: src/gpodder/gtkui/main.py:1116 #, python-format msgid "%(count)d failed" msgid_plural "%(count)d failed" msgstr[0] "%(count)d falha" msgstr[1] "%(count)d falhas" #: src/gpodder/gtkui/main.py:1118 #, python-format msgid "%(count)d queued" msgid_plural "%(count)d queued" msgstr[0] "%(count)d na fila" msgstr[1] "%(count)d na fila" #: src/gpodder/gtkui/main.py:1132 #, python-format msgid "downloading %(count)d file" msgid_plural "downloading %(count)d files" msgstr[0] "A transferir %(count)d ficheiro" msgstr[1] "A transferir %(count)d ficheiros" #: src/gpodder/gtkui/main.py:1142 #, python-format msgid "synchronizing %(count)d file" msgid_plural "synchronizing %(count)d files" msgstr[0] "a sincronizar %(count)d ficheiro" msgstr[1] "a sincronizar %(count)d ficheiros" #: src/gpodder/gtkui/main.py:1144 #, python-format msgid "%(queued)d task queued" msgid_plural "%(queued)d tasks queued" msgstr[0] "%(queued)d tarefa na fila" msgstr[1] "%(queued)d tarefas na fila" #: src/gpodder/gtkui/main.py:1168 msgid "Please report this problem and restart gPodder:" msgstr "Reporte este problema e reinicie o gPodder:" #: src/gpodder/gtkui/main.py:1168 msgid "Unhandled exception" msgstr "ExceУЇУЃo nУЃo controlada" #: src/gpodder/gtkui/main.py:1235 #, python-format msgid "Feedparser error: %s" msgstr "Erro no processador de fontes: %s" #: src/gpodder/gtkui/main.py:1371 msgid "Could not download some episodes:" msgstr "NУЃo foi possУ­vel receber alguns episУГdios:" #: src/gpodder/gtkui/main.py:1373 src/gpodder/gtkui/main.py:1376 msgid "Downloads finished" msgstr "TransferУЊncias concluУ­das" #: src/gpodder/gtkui/main.py:1379 msgid "Downloads failed" msgstr "TransferУЊncias falhadas" #: src/gpodder/gtkui/main.py:1383 msgid "Could not sync some episodes:" msgstr "NУЃo foi possУ­vel sincronizar alguns episУГdios:" #: src/gpodder/gtkui/main.py:1385 src/gpodder/gtkui/main.py:1388 msgid "Device synchronization finished" msgstr "SincronizaУЇУЃo terminada" #: src/gpodder/gtkui/main.py:1391 msgid "Device synchronization failed" msgstr "Falha de sincronizaУЇУЃo" #: src/gpodder/gtkui/main.py:1434 #, python-format msgid "%(count)d more episode" msgid_plural "%(count)d more episodes" msgstr[0] "Mais %(count)d episУГdio" msgstr[1] "Mais %(count)d episУГdios" #: src/gpodder/gtkui/main.py:1508 msgid "Start download now" msgstr "Iniciar transferУЊncia" #: src/gpodder/gtkui/main.py:1510 src/gpodder/gtkui/main.py:1719 #: src/gpodder/gtkui/desktop/episodeselector.py:144 #: share/gpodder/ui/gtk/gpodder.ui.h:20 msgid "Download" msgstr "Transferir" #: src/gpodder/gtkui/main.py:1511 share/gpodder/ui/gtk/gpodder.ui.h:21 msgid "Cancel" msgstr "Cancelar" #: src/gpodder/gtkui/main.py:1512 msgid "Pause" msgstr "Pausar" #: src/gpodder/gtkui/main.py:1514 msgid "Remove from list" msgstr "Remover da lista" #: src/gpodder/gtkui/main.py:1553 share/gpodder/ui/gtk/gpodder.ui.h:13 msgid "Update podcast" msgstr "Atualizar podcast" #: src/gpodder/gtkui/main.py:1560 msgid "Open download folder" msgstr "Abrir pasta de transferУЊncias" #: src/gpodder/gtkui/main.py:1566 msgid "Mark episodes as old" msgstr "Marcar episУГdios como antigos" #: src/gpodder/gtkui/main.py:1570 src/gpodder/gtkui/main.py:1778 msgid "Archive" msgstr "Arquivo" #: src/gpodder/gtkui/main.py:1575 msgid "Remove podcast" msgstr "Remover podcast" #: src/gpodder/gtkui/main.py:1590 share/gpodder/ui/gtk/gpodder.ui.h:10 msgid "Podcast settings" msgstr "DefiniУЇУЕes do podcast" #: src/gpodder/gtkui/main.py:1650 msgid "Error converting file." msgstr "Erro ao converter ficheiro" #: src/gpodder/gtkui/main.py:1650 msgid "Bluetooth file transfer" msgstr "TransferУЊncia por bluetooth" #: src/gpodder/gtkui/main.py:1709 msgid "Preview" msgstr "AntevisУЃo" #: src/gpodder/gtkui/main.py:1711 msgid "Stream" msgstr "EmissУЃo" #: src/gpodder/gtkui/main.py:1755 msgid "Send to" msgstr "Enviar para" #: src/gpodder/gtkui/main.py:1757 msgid "Local folder" msgstr "Pasta local" #: src/gpodder/gtkui/main.py:1762 msgid "Bluetooth device" msgstr "Dispositivo Bluetooth" #: src/gpodder/gtkui/main.py:1769 msgid "New" msgstr "Novo" #: src/gpodder/gtkui/main.py:1785 share/gpodder/ui/gtk/gpodder.ui.h:25 msgid "Episode details" msgstr "Detalhes do episУГdio" #: src/gpodder/gtkui/main.py:1938 msgid "Please check your media player settings in the preferences dialog." msgstr "Verifique as definiУЇУЕes do leitor multimУЉdia nas preferУЊncias" #: src/gpodder/gtkui/main.py:1939 msgid "Error opening player" msgstr "Erro ao abrir o leitor" #: src/gpodder/gtkui/main.py:2178 msgid "Adding podcasts" msgstr "A adicionar podcasts" #: src/gpodder/gtkui/main.py:2179 msgid "Please wait while episode information is downloaded." msgstr "Aguarde enquanto a informaУЇУЃo do episУГdio УЉ transferida." #: src/gpodder/gtkui/main.py:2186 msgid "Existing subscriptions skipped" msgstr "SubscriУЇУЕes existentes ignoradas" #: src/gpodder/gtkui/main.py:2187 msgid "You are already subscribed to these podcasts:" msgstr "VocУЊ jУЁ subscreveu estes podcasts:" #: src/gpodder/gtkui/main.py:2195 msgid "Podcast requires authentication" msgstr "O podcast requer autenticaУЇУЃo" #: src/gpodder/gtkui/main.py:2196 #, python-format msgid "Please login to %s:" msgstr "Inicie sessУЃo em %s:" #: src/gpodder/gtkui/main.py:2204 src/gpodder/gtkui/main.py:2299 msgid "Authentication failed" msgstr "Falha ao autenticar" #: src/gpodder/gtkui/main.py:2210 msgid "Website redirection detected" msgstr "Detetado um reencaminhamento do sУ­tio web" #: src/gpodder/gtkui/main.py:2211 #, python-format msgid "The URL %(url)s redirects to %(target)s." msgstr "O URL %(url)s reencaminhou-o (a) para %(target)s." #: src/gpodder/gtkui/main.py:2212 msgid "Do you want to visit the website now?" msgstr "Pretende visitar agora o sУ­tio web?" #: src/gpodder/gtkui/main.py:2221 msgid "Could not add some podcasts" msgstr "NУЃo foi possУ­vel adicionar alguns podcasts" #: src/gpodder/gtkui/main.py:2222 msgid "Some podcasts could not be added to your list:" msgstr "Alguns podcasts nУЃo puderam ser adicionados У  sua lista:" #: src/gpodder/gtkui/main.py:2224 msgid "Unknown" msgstr "Desconhecido" #: src/gpodder/gtkui/main.py:2308 msgid "Redirection detected" msgstr "Reencaminhamento detetado" #: src/gpodder/gtkui/main.py:2342 msgid "Merging episode actions" msgstr "A unir aУЇУЕes de episУГdios" #: src/gpodder/gtkui/main.py:2343 msgid "Episode actions from gpodder.net are merged." msgstr "As aУЇУЕes dos episУГdios do gpodder.net foram unidas." #: src/gpodder/gtkui/main.py:2368 msgid "Cancelling..." msgstr "A cancelar..." #: src/gpodder/gtkui/main.py:2377 msgid "Please connect to a network, then try again." msgstr "Ligue a uma rede e tente novamente." #: src/gpodder/gtkui/main.py:2378 msgid "No network connection" msgstr "Sem ligaУЇУЃo У  rede" #: src/gpodder/gtkui/main.py:2399 #, python-format msgid "Updating %(count)d feed..." msgid_plural "Updating %(count)d feeds..." msgstr[0] "A atualizar %(count)d fonte..." msgstr[1] "A atualizar %(count)d fontes..." #: src/gpodder/gtkui/main.py:2417 #, python-format msgid "Error while updating %(url)s: %(message)s" msgstr "Erro ao atualizar %(url)s: %(message)s" #: src/gpodder/gtkui/main.py:2419 #, python-format msgid "The feed at %(url)s could not be updated." msgstr "A fonte %(url)s nУЃo foi atualizada." #: src/gpodder/gtkui/main.py:2420 msgid "Error while updating feed" msgstr "Erro ao atualizar a fonte" #: src/gpodder/gtkui/main.py:2435 #, python-format msgid "Updated %(podcast)s (%(position)d/%(total)d)" msgstr "Atualizado %(podcast)s (%(position)d/%(total)d)" #: src/gpodder/gtkui/main.py:2466 msgid "No new episodes" msgstr "Sem novos episУГdios" #: src/gpodder/gtkui/main.py:2479 #, python-format msgid "Downloading %(count)d new episode." msgid_plural "Downloading %(count)d new episodes." msgstr[0] "A transferir %(count)d novo episУГdio" msgstr[1] "A transferir %(count)d novos episУГdios" #: src/gpodder/gtkui/main.py:2480 src/gpodder/gtkui/main.py:2484 #: src/gpodder/gtkui/main.py:2833 msgid "New episodes available" msgstr "Novos episУГdios disponУ­veis" #: src/gpodder/gtkui/main.py:2483 #, python-format msgid "%(count)d new episode added to download list." msgid_plural "%(count)d new episodes added to download list." msgstr[0] "%(count)d novo episУГdio adicionado У  lista de transferУЊncia." msgstr[1] "%(count)d novos episУГdios adicionados У  lista de transferУЊncia." #: src/gpodder/gtkui/main.py:2490 #, python-format msgid "%(count)d new episode available" msgid_plural "%(count)d new episodes available" msgstr[0] "%(count)d novo episУГdio disponУ­vel" msgstr[1] "%(count)d novos episУГdios disponУ­veis" #: src/gpodder/gtkui/main.py:2509 msgid "Quit gPodder" msgstr "Sair do gPodder" #: src/gpodder/gtkui/main.py:2510 msgid "" "You are downloading episodes. You can resume downloads the next time you " "start gPodder. Do you want to quit now?" msgstr "" "Existem episУГdios a serem transferidos. Pode retomar as transferУЊncias na " "prУГxima vez que iniciar o gPodder. Pretende sair agora?" #: src/gpodder/gtkui/main.py:2559 msgid "Episodes are locked" msgstr "Os episУГdios estУЃo bloqueados" #: src/gpodder/gtkui/main.py:2560 msgid "" "The selected episodes are locked. Please unlock the episodes that you want " "to delete before trying to delete them." msgstr "" "Os episУГdios selecionados estУЃo bloqueados. Deve desbloqueУЁ-los antes de os " "eliminar." #: src/gpodder/gtkui/main.py:2565 #, python-format msgid "Delete %(count)d episode?" msgid_plural "Delete %(count)d episodes?" msgstr[0] "Eliminar %(count)d episУГdio?" msgstr[1] "Eliminar %(count)d episУГdios?" #: src/gpodder/gtkui/main.py:2566 msgid "Deleting episodes removes downloaded files." msgstr "Se eliminar os episУГdios, remove os ficheiros transferidos." #: src/gpodder/gtkui/main.py:2571 msgid "Deleting episodes" msgstr "A eliminar episУГdios" #: src/gpodder/gtkui/main.py:2572 msgid "Please wait while episodes are deleted" msgstr "Por favor aguarde pela eliminaУЇУЃo dos episУГdios" #: src/gpodder/gtkui/main.py:2625 #, python-format msgid "Select older than %(count)d day" msgid_plural "Select older than %(count)d days" msgstr[0] "Selecionar anteriores a %(count)d dias" msgstr[1] "Selecionar anteriores a %(count)d dias" #: src/gpodder/gtkui/main.py:2627 msgid "Select played" msgstr "Selecionar reproduzidos" #: src/gpodder/gtkui/main.py:2628 msgid "Select finished" msgstr "Selecionar terminados" #: src/gpodder/gtkui/main.py:2632 msgid "Select the episodes you want to delete:" msgstr "Selecione os episУГdios que pretende eliminar:" #: src/gpodder/gtkui/main.py:2648 share/gpodder/ui/gtk/gpodder.ui.h:4 msgid "Delete episodes" msgstr "Eliminar episУГdios" #: src/gpodder/gtkui/main.py:2703 src/gpodder/gtkui/main.py:2934 #: src/gpodder/gtkui/main.py:3034 msgid "No podcast selected" msgstr "Nenhum podcast selecionado" #: src/gpodder/gtkui/main.py:2704 msgid "Please select a podcast in the podcasts list to update." msgstr "Escolha, na lista, o podcast que pretende atualizar." #: src/gpodder/gtkui/main.py:2774 #, python-format msgid "Download error while downloading %(episode)s: %(message)s" msgstr "Erro ao transferir %(episode)s: %(message)s" #: src/gpodder/gtkui/main.py:2775 msgid "Download error" msgstr "Erro ao transferir" #: src/gpodder/gtkui/main.py:2818 msgid "Select the episodes you want to download:" msgstr "Selecione os episУГdios que pretende transferir:" #: src/gpodder/gtkui/main.py:2841 msgid "Mark as old" msgstr "Marcar como antigo" #: src/gpodder/gtkui/main.py:2848 msgid "Please check for new episodes later." msgstr "Verificar por episУГdios mais tarde." #: src/gpodder/gtkui/main.py:2849 msgid "No new episodes available" msgstr "Sem novos episУГdios" #: src/gpodder/gtkui/main.py:2900 msgid "Login to gpodder.net" msgstr "Iniciar sessУЃo em gpodder.net" #: src/gpodder/gtkui/main.py:2901 msgid "Please login to download your subscriptions." msgstr "Inicie a sessУЃo para transferir as suas subscriУЇУЕes." #: src/gpodder/gtkui/main.py:2916 msgid "Subscriptions on gpodder.net" msgstr "SubscriУЇУЕes em gpodder.net" #: src/gpodder/gtkui/main.py:2935 msgid "Please select a podcast in the podcasts list to edit." msgstr "Escolha, na lista, os podcasts que pretende editar." #: src/gpodder/gtkui/main.py:2949 msgid "Podcast" msgstr "Podcast" #: src/gpodder/gtkui/main.py:2955 share/gpodder/ui/gtk/gpodder.ui.h:12 msgid "Remove podcasts" msgstr "Remover podcasts" #: src/gpodder/gtkui/main.py:2956 msgid "Select the podcast you want to remove." msgstr "Selecione o podcast que pretende remover." #: src/gpodder/gtkui/main.py:2960 #: src/gpodder/gtkui/desktop/episodeselector.py:105 msgid "Remove" msgstr "Remover" #: src/gpodder/gtkui/main.py:2969 msgid "Removing podcast" msgstr "A remover podcast" #: src/gpodder/gtkui/main.py:2970 msgid "Please wait while the podcast is removed" msgstr "Aguarde pela remoУЇУЃo do podcast" #: src/gpodder/gtkui/main.py:2971 msgid "Do you really want to remove this podcast and its episodes?" msgstr "Pretende mesmo remover este podcasts e os seus episУГdios?" #: src/gpodder/gtkui/main.py:2973 msgid "Removing podcasts" msgstr "A remover podcasts" #: src/gpodder/gtkui/main.py:2974 msgid "Please wait while the podcasts are removed" msgstr "Por favor aguarde pela remoУЇУЃo dos podcasts" #: src/gpodder/gtkui/main.py:2975 msgid "Do you really want to remove the selected podcasts and their episodes?" msgstr "Deseja mesmo remover o podcast selecionado e os seus episУГdios?" #: src/gpodder/gtkui/main.py:3035 msgid "Please select a podcast in the podcasts list to remove." msgstr "Escolha, na lista, os podcasts a remover." #: src/gpodder/gtkui/main.py:3045 msgid "OPML files" msgstr "Ficheiros OPML" #: src/gpodder/gtkui/main.py:3050 msgid "Import from OPML" msgstr "Importar de OPML" #: src/gpodder/gtkui/main.py:3064 msgid "Import podcasts from OPML file" msgstr "Importar podcasts de um ficheiro OPML" #: src/gpodder/gtkui/main.py:3071 msgid "Nothing to export" msgstr "Nada a exportar" #: src/gpodder/gtkui/main.py:3072 msgid "" "Your list of podcast subscriptions is empty. Please subscribe to some " "podcasts first before trying to export your subscription list." msgstr "" "A sua lista de subscriУЇУЕes estУЁ vazia. Subscreva alguns podcasts antes de " "tentar exportar a sua lista de subscriУЇУЕes." #: src/gpodder/gtkui/main.py:3076 msgid "Export to OPML" msgstr "Exportar para OPML" #: src/gpodder/gtkui/main.py:3087 #, python-format msgid "%(count)d subscription exported" msgid_plural "%(count)d subscriptions exported" msgstr[0] "%(count)d subscriУЇУЃo exportada" msgstr[1] "%(count)d subscriУЇУЕes exportadas" #: src/gpodder/gtkui/main.py:3088 msgid "Your podcast list has been successfully exported." msgstr "A sua lista de podcasts foi exportada com sucesso." #: src/gpodder/gtkui/main.py:3090 msgid "Could not export OPML to file. Please check your permissions." msgstr "" "NУЃo foi possУ­vel exportar OPML para ficheiro. Verifique as suas permissУЕes." #: src/gpodder/gtkui/main.py:3090 msgid "OPML export failed" msgstr "Falha ao exportar OPML" #: src/gpodder/gtkui/main.py:3117 msgid "No updates available" msgstr "NУЃo existem atualizaУЇУЕes" #: src/gpodder/gtkui/main.py:3118 msgid "You have the latest version of gPodder." msgstr "JУЁ tem a versУЃo mais recente do gPodder." #: src/gpodder/gtkui/main.py:3122 msgid "New version available" msgstr "EstУЁ disponУ­vel uma nova versУЃo." #: src/gpodder/gtkui/main.py:3124 #, python-format msgid "Installed version: %s" msgstr "VersУЃo instalada: %s" #: src/gpodder/gtkui/main.py:3125 #, python-format msgid "Newest version: %s" msgstr "VersУЃo mais recente: %s" #: src/gpodder/gtkui/main.py:3126 #, python-format msgid "Release date: %s" msgstr "Data de disponibilizaУЇУЃo: %s" #: src/gpodder/gtkui/main.py:3128 msgid "Download the latest version from gpodder.org?" msgstr "Pretende transferir a nova versУЃo?" #: src/gpodder/gtkui/main.py:3141 msgid "About gPodder" msgstr "Sobre o gPodder" #: src/gpodder/gtkui/main.py:3424 #, fuzzy msgid "Please register a YouTube API key and set it in the preferences." msgstr "Tem que configurar o dispositivo nas preferУЊncias" #: src/gpodder/gtkui/main.py:3425 msgid "Would you like to set up an API key now?" msgstr "" #: src/gpodder/gtkui/main.py:3425 msgid "API key required" msgstr "" #: src/gpodder/gtkui/main.py:3444 bin/gpo:631 #, fuzzy msgid "No unique URL found" msgstr "Nenhum canal encontrado" #: src/gpodder/gtkui/main.py:3449 bin/gpo:637 #, fuzzy msgid "Already subscribed" msgstr "NУЃo УЉ possУ­vel subscrever %s." #: src/gpodder/gtkui/main.py:3458 bin/gpo:649 #, python-format msgid "Make sure the API key is correct. Error: %(message)s" msgstr "" #: src/gpodder/gtkui/main.py:3459 #, fuzzy msgid "Error getting YouTube channels" msgstr "Erro ao definir opУЇУЃo" #: src/gpodder/gtkui/main.py:3462 #, fuzzy msgid "Successfully migrated subscriptions" msgstr "%s foi adicionado com sucesso." #: src/gpodder/gtkui/main.py:3464 #, fuzzy msgid "Subscriptions are up to date" msgstr "SubscriУЇУЃo pausada" #: src/gpodder/gtkui/main.py:3467 msgid "These URLs failed:" msgstr "" #: src/gpodder/gtkui/main.py:3469 #, fuzzy msgid "Could not migrate some subscriptions" msgstr "NУЃo foi possУ­vel adicionar alguns podcasts" #: src/gpodder/gtkui/main.py:3493 msgid "Cannot start gPodder" msgstr "Incapaz de iniciar gPodder" #: src/gpodder/gtkui/main.py:3494 #, python-format msgid "D-Bus error: %s" msgstr "Erro D-Bus: %s" #: src/gpodder/gtkui/model.py:68 #, python-format msgid "released %s" msgstr "publicado %s" #: src/gpodder/gtkui/model.py:69 src/gpodder/gtkui/model.py:87 #: src/gpodder/gtkui/model.py:237 src/gpodder/gtkui/shownotes.py:84 #, python-format msgid "from %s" msgstr "por %s" #: src/gpodder/gtkui/model.py:80 src/gpodder/gtkui/model.py:393 msgid "played" msgstr "reproduzido" #: src/gpodder/gtkui/model.py:82 msgid "unplayed" msgstr "nУЃo reproduzido" #: src/gpodder/gtkui/model.py:85 msgid "today" msgstr "hoje" #: src/gpodder/gtkui/model.py:86 #, python-format msgid "downloaded %s" msgstr "transferido %s" #: src/gpodder/gtkui/model.py:337 msgid "Deleted" msgstr "Eliminado" #: src/gpodder/gtkui/model.py:342 msgid "New episode" msgstr "Novo episУГdio" #: src/gpodder/gtkui/model.py:356 msgid "Downloaded episode" msgstr "EpisУГdio transferido" #: src/gpodder/gtkui/model.py:359 msgid "Downloaded video episode" msgstr "VУ­deo transferido" #: src/gpodder/gtkui/model.py:362 msgid "Downloaded image" msgstr "Imagem transferida" #: src/gpodder/gtkui/model.py:365 msgid "Downloaded file" msgstr "Ficheiro transferido" #: src/gpodder/gtkui/model.py:380 msgid "missing file" msgstr "ficheiro em falta" #: src/gpodder/gtkui/model.py:384 msgid "never displayed" msgstr "nunca exibido" #: src/gpodder/gtkui/model.py:386 msgid "never played" msgstr "nunca reproduzido" #: src/gpodder/gtkui/model.py:388 msgid "never opened" msgstr "nunca aberto" #: src/gpodder/gtkui/model.py:391 msgid "displayed" msgstr "exibido" #: src/gpodder/gtkui/model.py:395 msgid "opened" msgstr "aberto" #: src/gpodder/gtkui/model.py:397 msgid "deletion prevented" msgstr "eliminaУЇУЃo prevenida" #: src/gpodder/gtkui/model.py:432 share/gpodder/ui/gtk/gpodder.ui.h:32 msgid "All episodes" msgstr "Todos os episУГdios" #: src/gpodder/gtkui/model.py:433 msgid "from all podcasts" msgstr "de todos os podcasts" #: src/gpodder/gtkui/model.py:625 msgid "Subscription paused" msgstr "SubscriУЇУЃo pausada" #: src/gpodder/gtkui/shownotes.py:118 #, fuzzy msgid "Please select an episode" msgstr "Selecione os episУГdios" #: src/gpodder/gtkui/interface/addpodcast.py:74 msgid "Nothing to paste." msgstr "Nada para colar" #: src/gpodder/gtkui/interface/addpodcast.py:74 msgid "Clipboard is empty" msgstr "A УЁrea de transferУЊncia estУЁ vazia" #: src/gpodder/gtkui/interface/common.py:160 msgid "Username" msgstr "Utilizador" #: src/gpodder/gtkui/interface/common.py:163 msgid "New user" msgstr "Novo utilizador" #: src/gpodder/gtkui/interface/common.py:170 msgid "Login" msgstr "Iniciar sessУЃo" #: src/gpodder/gtkui/interface/common.py:172 msgid "Authentication required" msgstr "Requer autenticaУЇУЃo" #: src/gpodder/gtkui/interface/common.py:203 msgid "Password" msgstr "Senha" #: src/gpodder/gtkui/interface/common.py:225 msgid "Select destination" msgstr "Selecione o destino" #: src/gpodder/gtkui/interface/configeditor.py:34 msgid "Setting" msgstr "DefiniУЇУЃo" #: src/gpodder/gtkui/interface/configeditor.py:41 msgid "Set to" msgstr "Definir para" #: src/gpodder/gtkui/interface/configeditor.py:81 #, python-format msgid "Cannot set %(field)s to %(value)s. Needed data type: %(datatype)s" msgstr "" "NУЃo УЉ possivel definir %(field)s para %(value)s. Requer o tipo de dados: " "%(datatype)s" #: src/gpodder/gtkui/interface/configeditor.py:85 msgid "Error setting option" msgstr "Erro ao definir opУЇУЃo" #: src/gpodder/gtkui/desktop/channel.py:100 msgid "Add section" msgstr "Adicionar secУЇУЃo" #: src/gpodder/gtkui/desktop/channel.py:100 msgid "New section:" msgstr "Nova secУЇУЃo:" #: src/gpodder/gtkui/desktop/channel.py:133 msgid "Select new podcast cover artwork" msgstr "Selecione uma nova imagem para o podcast" #: src/gpodder/gtkui/desktop/channel.py:161 msgid "You can only drop a single image or URL here." msgstr "SУГ pode arrastar para aqui uma imagem ou um URL." #: src/gpodder/gtkui/desktop/channel.py:161 #: src/gpodder/gtkui/desktop/channel.py:171 msgid "Drag and drop" msgstr "Arraste e largue" #: src/gpodder/gtkui/desktop/channel.py:171 msgid "You can only drop local files and http:// URLs here." msgstr "SУГ pode arrastar para aqui ficheiros locais e URLs http://." #: src/gpodder/gtkui/desktop/deviceplaylist.py:98 #, fuzzy, python-format msgid "Folder %s could not be created." msgstr "A fonte %(url)s nУЃo foi atualizada." #: src/gpodder/gtkui/desktop/deviceplaylist.py:98 #, fuzzy msgid "Error writing playlist" msgstr "Erro ao abrir o leitor" #: src/gpodder/gtkui/desktop/episodeselector.py:288 #: share/gpodder/ui/gtk/gpodderepisodeselector.ui.h:2 msgid "Select all" msgstr "Selecionar todos" #: src/gpodder/gtkui/desktop/episodeselector.py:292 #: share/gpodder/ui/gtk/gpodderepisodeselector.ui.h:3 msgid "Select none" msgstr "Selecionar nenhum" #: src/gpodder/gtkui/desktop/episodeselector.py:324 msgid "Nothing selected" msgstr "Nada selecionado" #: src/gpodder/gtkui/desktop/episodeselector.py:325 #, python-format msgid "%(count)d episode" msgid_plural "%(count)d episodes" msgstr[0] "%(count)d episУГdio" msgstr[1] "%(count)d episУГdios" #: src/gpodder/gtkui/desktop/episodeselector.py:327 #, python-format msgid "size: %s" msgstr "tamanho: %s" #: src/gpodder/gtkui/desktop/podcastdirectory.py:238 #, fuzzy msgid "Loading podcasts" msgstr "A adicionar podcasts" #: src/gpodder/gtkui/desktop/podcastdirectory.py:239 #, fuzzy msgid "Please wait while the podcast list is downloaded" msgstr "Aguarde pela remoУЇУЃo do podcast" #: src/gpodder/gtkui/desktop/preferences.py:51 #: src/gpodder/gtkui/desktop/preferences.py:93 msgid "Do nothing" msgstr "Nada fazer" #: src/gpodder/gtkui/desktop/preferences.py:52 msgid "Show episode list" msgstr "Mostrar lista de episУГdios" #: src/gpodder/gtkui/desktop/preferences.py:53 msgid "Add to download list" msgstr "Adicionar У  lista de transferУЊncias" #: src/gpodder/gtkui/desktop/preferences.py:54 msgid "Download immediately" msgstr "Transferir imediatamente" #: src/gpodder/gtkui/desktop/preferences.py:72 msgid "None" msgstr "Nenhum" #: src/gpodder/gtkui/desktop/preferences.py:73 msgid "iPod" msgstr "" #: src/gpodder/gtkui/desktop/preferences.py:74 msgid "Filesystem-based" msgstr "Sistema de ficheiros" #: src/gpodder/gtkui/desktop/preferences.py:94 msgid "Mark as played" msgstr "Marcar como reproduzido" #: src/gpodder/gtkui/desktop/preferences.py:95 msgid "Delete from gPodder" msgstr "Eliminar do gPodder" #: src/gpodder/gtkui/desktop/preferences.py:123 #, python-format msgid "Custom (%(format_ids)s)" msgstr "Personalizado (%(format_ids)s)" #: src/gpodder/gtkui/desktop/preferences.py:318 msgid "Name" msgstr "Nome" #: src/gpodder/gtkui/desktop/preferences.py:369 #, fuzzy msgid "Documentation" msgstr "DuraУЇУЃo" #: src/gpodder/gtkui/desktop/preferences.py:374 #, fuzzy msgid "Extension info" msgstr "InformaУЇУЕes da extensУЃo" #: src/gpodder/gtkui/desktop/preferences.py:379 msgid "Support the author" msgstr "" #: src/gpodder/gtkui/desktop/preferences.py:413 msgid "Extension cannot be activated" msgstr "A extensУЃo nУЃo pode ser ativada" #: src/gpodder/gtkui/desktop/preferences.py:426 msgid "Extension module info" msgstr "InformaУЇУЕes da extensУЃo" #: src/gpodder/gtkui/desktop/preferences.py:463 msgid "Configure audio player" msgstr "Configurar reprodutor de УЁudio" #: src/gpodder/gtkui/desktop/preferences.py:464 #: src/gpodder/gtkui/desktop/preferences.py:474 msgid "Command:" msgstr "Comando:" #: src/gpodder/gtkui/desktop/preferences.py:473 msgid "Configure video player" msgstr "Configurar reprodutor de vУ­deo" #: src/gpodder/gtkui/desktop/preferences.py:485 #: src/gpodder/gtkui/desktop/preferences.py:503 msgid "manually" msgstr "manualmente" #: src/gpodder/gtkui/desktop/preferences.py:505 #, python-format msgid "after %(count)d day" msgid_plural "after %(count)d days" msgstr[0] "apУГs %(count)d dia" msgstr[1] "apУГs %(count)d dias" #: src/gpodder/gtkui/desktop/preferences.py:541 msgid "Replace subscription list on server" msgstr "Substituir lista de subscriУЇУЕes no servidor" #: src/gpodder/gtkui/desktop/preferences.py:542 msgid "" "Remote podcasts that have not been added locally will be removed on the " "server. Continue?" msgstr "" "Os podcasts remotos que nУЃo forem adicionados localmente serУЃo removidos do " "servidor. Continuar?" #: src/gpodder/gtkui/desktop/preferences.py:621 msgid "Select folder for mount point" msgstr "Escolha a pasta para ponto de montagem" #: src/gpodder/gtkui/desktop/preferences.py:638 #, fuzzy msgid "Select folder for playlists" msgstr "Escolha a pasta para ponto de montagem" #: src/gpodder/gtkui/desktop/sync.py:86 msgid "No device configured" msgstr "Nenhum dispositivo configurado" #: src/gpodder/gtkui/desktop/sync.py:87 msgid "Please set up your device in the preferences dialog." msgstr "Tem que configurar o dispositivo nas preferУЊncias" #: src/gpodder/gtkui/desktop/sync.py:91 msgid "Cannot open device" msgstr "NУЃo foi possУ­vel abrir o dispositivo" #: src/gpodder/gtkui/desktop/sync.py:92 msgid "Please check the settings in the preferences dialog." msgstr "Verifique as definiУЇУЕes nas preferУЊncias" #: src/gpodder/gtkui/desktop/sync.py:139 msgid "Not enough space left on device" msgstr "NУЃo possui espaУЇo livre neste dispositivo" #: src/gpodder/gtkui/desktop/sync.py:140 #, python-format msgid "" "Additional free space required: %(required_space)s\n" "Do you want to continue?" msgstr "" "EspaУЇo livre necessУЁrio: %(required_space)s\n" "Continuar?" #: src/gpodder/gtkui/desktop/sync.py:199 #, fuzzy msgid "Update successful" msgstr "Lista enviada com sucesso." #: src/gpodder/gtkui/desktop/sync.py:200 msgid "The playlist on your MP3 player has been updated." msgstr "" #: src/gpodder/gtkui/desktop/sync.py:274 msgid "Episodes have been deleted on device" msgstr "" #: src/gpodder/gtkui/desktop/sync.py:285 #, fuzzy msgid "Error writing playlist files" msgstr "Erro ao converter ficheiro" #: src/gpodder/plugins/soundcloud.py:154 msgid "Unknown track" msgstr "Faixa desconhecida" #: src/gpodder/plugins/soundcloud.py:181 #, python-format msgid "%s on Soundcloud" msgstr "%s no Soundcloud" #: src/gpodder/plugins/soundcloud.py:190 #, python-format msgid "Tracks published by %s on Soundcloud." msgstr "Faixas publicadas por %s no Soundcloud." #: src/gpodder/plugins/soundcloud.py:217 #, python-format msgid "%s's favorites on Soundcloud" msgstr "Os favoritos de %s no Soundcloud" #: src/gpodder/plugins/soundcloud.py:223 #, python-format msgid "Tracks favorited by %s on Soundcloud." msgstr "Faixas favoritas de %s no Soundcloud." #: share/gpodder/extensions/audio_converter.py:20 #, fuzzy msgid "Convert audio files" msgstr "Falha na conversУЃo" #: share/gpodder/extensions/audio_converter.py:21 #, fuzzy msgid "Transcode audio files to mp3/ogg" msgstr "Converter ficheiros ogg para mp3 com o ffmpeg" #: share/gpodder/extensions/audio_converter.py:84 #: share/gpodder/extensions/video_converter.py:86 #, python-format msgid "Convert to %(format)s" msgstr "Converter para %(format)s" #: share/gpodder/extensions/audio_converter.py:111 #: share/gpodder/extensions/rockbox_convert2mp4.py:65 #: share/gpodder/extensions/video_converter.py:111 msgid "File converted" msgstr "Ficheiro convertido" #: share/gpodder/extensions/audio_converter.py:114 #: share/gpodder/extensions/video_converter.py:114 msgid "Conversion failed" msgstr "Falha na conversУЃo" #: share/gpodder/extensions/concatenate_videos.py:20 #: share/gpodder/extensions/concatenate_videos.py:100 #, fuzzy msgid "Concatenate videos" msgstr "Falha na conversУЃo" #: share/gpodder/extensions/concatenate_videos.py:21 #, fuzzy msgid "Add a context menu item for concatenating multiple videos" msgstr "" "Adicionar item no menu de contexto para colocar os episУГdios na fila dos " "reprodutores" #: share/gpodder/extensions/concatenate_videos.py:37 msgid "Save video" msgstr "" #: share/gpodder/extensions/concatenate_videos.py:66 #, fuzzy msgid "Concatenating video files" msgstr "Falha na conversУЃo" #: share/gpodder/extensions/concatenate_videos.py:67 #, python-format msgid "Writing %(filename)s" msgstr "" #: share/gpodder/extensions/concatenate_videos.py:78 msgid "Videos successfully converted" msgstr "" #: share/gpodder/extensions/concatenate_videos.py:79 #, fuzzy msgid "Error converting videos" msgstr "Erro ao converter ficheiro" #: share/gpodder/extensions/concatenate_videos.py:80 msgid "Concatenation result" msgstr "" #: share/gpodder/extensions/enqueue_in_mediaplayer.py:16 msgid "Enqueue in media players" msgstr "Colocar na fila do reprodutor multimУЉdia" #: share/gpodder/extensions/enqueue_in_mediaplayer.py:17 msgid "" "Add a context menu item for enqueueing episodes in installed media players" msgstr "" "Adicionar item no menu de contexto para colocar os episУГdios na fila dos " "reprodutores" #: share/gpodder/extensions/enqueue_in_mediaplayer.py:35 msgid "Enqueue in" msgstr "Colocar na fila de" #: share/gpodder/extensions/episode_website_context_menu.py:14 msgid "\"Open website\" episode context menu" msgstr "" #: share/gpodder/extensions/episode_website_context_menu.py:15 #, fuzzy msgid "Add a context menu item for opening the website of an episode" msgstr "" "Adicionar item no menu de contexto para colocar os episУГdios na fila dos " "reprodutores" #: share/gpodder/extensions/episode_website_context_menu.py:30 #, fuzzy msgid "Open website" msgstr "SУ­tio web:" #: share/gpodder/extensions/gtk_statusicon.py:14 msgid "Gtk Status Icon" msgstr "Уcone de estado GTK" #: share/gpodder/extensions/gtk_statusicon.py:15 msgid "Show a status icon for Gtk-based Desktops." msgstr "Mostrar У­cone de estado para os ambientes de trabalho GTK+" #: share/gpodder/extensions/minimize_on_start.py:10 msgid "Minimize on start" msgstr "Minimizar ao iniciar" #: share/gpodder/extensions/minimize_on_start.py:11 msgid "Minimizes the gPodder window on startup." msgstr "Minimiza o gPodder ao iniciar a sessУЃo." #: share/gpodder/extensions/mpris-listener.py:33 msgid "MPRIS Listener" msgstr "" #: share/gpodder/extensions/mpris-listener.py:34 msgid "Convert MPRIS notifications to gPodder Media Player D-Bus API" msgstr "" #: share/gpodder/extensions/normalize_audio.py:21 msgid "Normalize audio with re-encoding" msgstr "Normalizar som ao converter" #: share/gpodder/extensions/normalize_audio.py:22 msgid "Normalize the volume of audio files with normalize-audio" msgstr "Normalizar o volume dos ficheiros com o normalize-audio" #: share/gpodder/extensions/normalize_audio.py:99 msgid "File normalized" msgstr "Ficheiro normalizado" #: share/gpodder/extensions/rename_download.py:16 msgid "Rename episodes after download" msgstr "Mudar nome dos episУГdios apУГs a receУЇУЃo" #: share/gpodder/extensions/rename_download.py:17 msgid "Rename episodes to \".\" on download" msgstr "Mudar nome dos episУГdios para \".\" ao receber" #: share/gpodder/extensions/rm_ogg_cover.py:37 msgid "Remove cover art from OGG files" msgstr "Remover imagem dos ficheiros OGG" #: share/gpodder/extensions/rm_ogg_cover.py:38 msgid "removes coverart from all downloaded ogg files" msgstr "Remove a imagem dos ficheiros ogg transferidos" #: share/gpodder/extensions/rm_ogg_cover.py:66 msgid "Remove cover art" msgstr "Remover imagem" #: share/gpodder/extensions/rockbox_convert2mp4.py:26 msgid "Convert video files to MP4 for Rockbox" msgstr "Converter ficheiros de vУ­deo para Rockbox MP4" #: share/gpodder/extensions/rockbox_convert2mp4.py:27 msgid "Converts all videos to a Rockbox-compatible format" msgstr "Converter todos os vУ­deos para um formato compatУ­vel com o Rockbox" #: share/gpodder/extensions/sonos.py:19 share/gpodder/extensions/sonos.py:78 msgid "Stream to Sonos" msgstr "" #: share/gpodder/extensions/sonos.py:20 msgid "Stream podcasts to Sonos speakers" msgstr "" #: share/gpodder/extensions/tagging.py:45 msgid "Tag downloaded files using Mutagen" msgstr "Criar detalhes, via mutagen, nos ficheiros recebidos" #: share/gpodder/extensions/tagging.py:46 msgid "Add episode and podcast titles to MP3/OGG tags" msgstr "Adicionar tУ­tulo do episУГdio e podcast aos detalhes MP3/OGG" #: share/gpodder/extensions/taskbar_progress.py:28 #, fuzzy msgid "Show download progress on the taskbar" msgstr "Mostrar evoluУЇУЃo da transferУЊncia no lanУЇador Unity." #: share/gpodder/extensions/taskbar_progress.py:29 msgid "Displays the progress on the Windows taskbar." msgstr "" #: share/gpodder/extensions/ted_subtitles.py:16 msgid "Subtitle Downloader for TED Talks" msgstr "TransferУЊncia de legendas para Ted Talks" #: share/gpodder/extensions/ted_subtitles.py:17 msgid "Downloads .srt subtitles for TED Talks Videos" msgstr "Transfere as legendas .srt dos vУ­deos Ted Talks" #: share/gpodder/extensions/ubuntu_appindicator.py:10 msgid "Ubuntu App Indicator" msgstr "Indicador Ubuntu" #: share/gpodder/extensions/ubuntu_appindicator.py:11 msgid "Show a status indicator in the top bar." msgstr "Mostrar um indicador de estado na barra superior." #: share/gpodder/extensions/ubuntu_appindicator.py:47 msgid "Show main window" msgstr "Mostrar janela principal" #: share/gpodder/extensions/ubuntu_appindicator.py:57 #: share/gpodder/ui/gtk/gpodder.ui.h:6 msgid "Quit" msgstr "Sair" #: share/gpodder/extensions/ubuntu_unity.py:10 msgid "Ubuntu Unity Integration" msgstr "IntegraУЇУЃo com o Ubuntu Unity" #: share/gpodder/extensions/ubuntu_unity.py:11 msgid "Show download progress in the Unity Launcher icon." msgstr "Mostrar evoluУЇУЃo da transferУЊncia no lanУЇador Unity." #: share/gpodder/extensions/update_feeds_on_startup.py:14 msgid "Search for new episodes on startup" msgstr "Procurar episУГdios ao iniciar" #: share/gpodder/extensions/update_feeds_on_startup.py:15 msgid "Starts the search for new episodes on startup" msgstr "Iniciar procura de novos episУГdios ao iniciar" #: share/gpodder/extensions/video_converter.py:22 #, fuzzy msgid "Convert video files" msgstr "Falha na conversУЃo" #: share/gpodder/extensions/video_converter.py:23 #, fuzzy msgid "Transcode video files to avi/mp4/m4v" msgstr "Converter ficheiros ogg para mp3 com o ffmpeg" #: share/gpodder/ui/gtk/gpodderaddpodcast.ui.h:1 msgid "Add a new podcast" msgstr "Adicionar novo podcast" #: share/gpodder/ui/gtk/gpodderaddpodcast.ui.h:2 msgid "URL:" msgstr "URL:" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:1 msgid "gPodder Podcast Editor" msgstr "gPodder - Editor de Podcasts" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:2 msgid "Section:" msgstr "SecУЇУЃo:" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:3 msgid "Disable feed updates (pause subscription)" msgstr "Desativar atualizaУЇУЃo de fontes" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:4 msgid "Synchronize to MP3 player devices" msgstr "Sincronizar com dispositivos MP3" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:5 msgid "Strategy:" msgstr "EstratУЉgia:" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:6 #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:6 msgid "General" msgstr "Geral" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:7 msgid "HTTP/FTP Authentication" msgstr "AutenticaУЇУЃo HTTP/FTP" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:8 #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:13 msgid "Username:" msgstr "Utilizador:" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:9 #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:14 msgid "Password:" msgstr "Senha:" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:10 msgid "Locations" msgstr "LocalizaУЇУЕes" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:11 msgid "Download to:" msgstr "Transferir para:" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:12 msgid "Website:" msgstr "SУ­tio web:" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:13 msgid "website label" msgstr "marca do sУ­tio web" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:14 msgid "Advanced" msgstr "AvanУЇado" #: share/gpodder/ui/gtk/gpodderconfigeditor.ui.h:1 msgid "gPodder Configuration Editor" msgstr "gPodder - Editor de ConfiguraУЇУЕes" #: share/gpodder/ui/gtk/gpodderconfigeditor.ui.h:2 msgid "Search for:" msgstr "Procurar:" #: share/gpodder/ui/gtk/gpodderconfigeditor.ui.h:3 msgid "Show All" msgstr "Mostrar tudo" #: share/gpodder/ui/gtk/gpodderepisodeselector.ui.h:1 msgid "Select episodes" msgstr "Selecione os episУГdios" #: share/gpodder/ui/gtk/gpodderpodcastdirectory.ui.h:1 msgid "Find new podcasts" msgstr "Encontrar novos podcasts" #: share/gpodder/ui/gtk/gpodderpodcastdirectory.ui.h:2 msgid "Select All" msgstr "Selecionar tudo" #: share/gpodder/ui/gtk/gpodderpodcastdirectory.ui.h:3 msgid "Select None" msgstr "Selecionar nada" #: share/gpodder/ui/gtk/gpodderpodcastdirectory.ui.h:4 msgid "label" msgstr "" #: share/gpodder/ui/gtk/gpodderpodcastdirectory.ui.h:5 msgid "..." msgstr "" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:1 #: share/gpodder/ui/gtk/gpodder.ui.h:5 msgid "Preferences" msgstr "PreferУЊncias" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:2 msgid "Audio player:" msgstr "Reprodutor УЁudio:" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:3 msgid "Video player:" msgstr "Reprodutor vУ­deo:" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:4 msgid "\"All episodes\" in podcast list" msgstr "\"Todos os episУГdios\" na lista de podcasts" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:5 msgid "Use sections for podcast list" msgstr "Utilizar secУЇУЕes para a lista de podcasts" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:7 #, fuzzy msgid "Preferred YouTube format:" msgstr "Formato vУ­deo preferido:" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:8 msgid "YouTube API key (v3):" msgstr "" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:9 #, fuzzy msgid "Preferred Vimeo format:" msgstr "Formato vУ­deo preferido:" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:11 msgid "Extensions" msgstr "ExtensУЕes" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:12 msgid "Synchronize subscriptions and episode actions" msgstr "Sincronizar subscriУЇУЕes e episУГdios" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:15 msgid "Replace list on server with local subscriptions" msgstr "Substituir lista do servidor pelas subscriУЇУЕes locais" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:16 msgid "Device name:" msgstr "Nome do dispositivo:" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:17 msgid "gpodder.net" msgstr "gpodder.net" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:18 msgid "Update interval:" msgstr "Intervalo de atualizaУЇУЃo:" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:19 msgid "Maximum number of episodes per podcast:" msgstr "NУКmero mУЁximo de episУГdios por podcast:" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:20 msgid "When new episodes are found:" msgstr "Ao encontrar novos episУГdios:" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:21 msgid "Updating" msgstr "AtualizaУЇУЃo" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:22 msgid "Delete played episodes:" msgstr "Eliminar episУГdios reproduzidos:" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:23 msgid "Remove played episodes even if unfinished" msgstr "Remover podcasts reproduzidos mesmo se nУЃo totalmente" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:24 msgid "Also remove unplayed episodes" msgstr "Remover tambУЉm os episУГdios nУЃo reproduzidos" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:25 msgid "Clean-up" msgstr "Limpeza" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:26 msgid "Device type:" msgstr "Tipo de dispositivo:" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:27 msgid "Mountpoint:" msgstr "Ponto de montagem:" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:28 msgid "After syncing an episode:" msgstr "Depois de sincronizar um episУГdio:" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:29 #, fuzzy msgid "Create playlists on device" msgstr "Substituir lista no servidor" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:30 #, fuzzy msgid "Playlists Folder:" msgstr "Lista de reproduУЇУЃo vazia" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:31 msgid "Remove episodes deleted on device from gPodder" msgstr "" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:32 msgid "Only sync unplayed episodes" msgstr "Sincronizar os episУГdios nУЃo reproduzidos" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:33 msgid "Devices" msgstr "Dispositivos" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:34 msgid "Edit config" msgstr "Editar configuraУЇУЃo" #: share/gpodder/ui/gtk/gpodder.ui.h:1 msgid "_Podcasts" msgstr "_Podcasts" #: share/gpodder/ui/gtk/gpodder.ui.h:2 msgid "Check for new episodes" msgstr "Procurar novos episУГdios" #: share/gpodder/ui/gtk/gpodder.ui.h:3 msgid "Download new episodes" msgstr "Transferir novos episУГdios" #: share/gpodder/ui/gtk/gpodder.ui.h:7 msgid "_Subscriptions" msgstr "_SubscriУЇУЕes" #: share/gpodder/ui/gtk/gpodder.ui.h:8 msgid "Discover new podcasts" msgstr "Descobrir novos podcasts" #: share/gpodder/ui/gtk/gpodder.ui.h:9 msgid "Add podcast via URL" msgstr "Adicionar podcast via URL" #: share/gpodder/ui/gtk/gpodder.ui.h:11 msgid "Unsubscribe" msgstr "Remover subscriУЇУЃo" #: share/gpodder/ui/gtk/gpodder.ui.h:14 msgid "Import from OPML file" msgstr "Importar de ficheiro OPML" #: share/gpodder/ui/gtk/gpodder.ui.h:15 msgid "Export to OPML file" msgstr "Exportar para ficheiro OPML" #: share/gpodder/ui/gtk/gpodder.ui.h:16 msgid "Go to gpodder.net" msgstr "Ir para gpodder.net" #: share/gpodder/ui/gtk/gpodder.ui.h:17 msgid "_Episodes" msgstr "_EpisУГdios" #: share/gpodder/ui/gtk/gpodder.ui.h:18 msgid "Play" msgstr "Reproduzir" #: share/gpodder/ui/gtk/gpodder.ui.h:19 msgid "Open" msgstr "Abrir" #: share/gpodder/ui/gtk/gpodder.ui.h:22 msgid "Delete" msgstr "Eliminar" #: share/gpodder/ui/gtk/gpodder.ui.h:23 msgid "Toggle new status" msgstr "Alternar estado" #: share/gpodder/ui/gtk/gpodder.ui.h:24 msgid "Change delete lock" msgstr "Mudar bloqueio de eliminaУЇУЃo" #: share/gpodder/ui/gtk/gpodder.ui.h:26 msgid "E_xtras" msgstr "E_xtras" #: share/gpodder/ui/gtk/gpodder.ui.h:27 msgid "Sync to device" msgstr "Sincronizar com dispositivo" #: share/gpodder/ui/gtk/gpodder.ui.h:28 #, fuzzy msgid "Update YouTube subscriptions" msgstr "Sem subscriУЇУЕes" #: share/gpodder/ui/gtk/gpodder.ui.h:29 msgid "_View" msgstr "_Ver" #: share/gpodder/ui/gtk/gpodder.ui.h:30 msgid "Toolbar" msgstr "Barra de ferramentas" #: share/gpodder/ui/gtk/gpodder.ui.h:31 msgid "Episode descriptions" msgstr "DescriУЇУЃo do episУГdio" #: share/gpodder/ui/gtk/gpodder.ui.h:33 msgid "Hide deleted episodes" msgstr "Ocultar episУГdios eliminados" #: share/gpodder/ui/gtk/gpodder.ui.h:34 msgid "Downloaded episodes" msgstr "EpisУГdios transferidos" #: share/gpodder/ui/gtk/gpodder.ui.h:35 msgid "Unplayed episodes" msgstr "EpisУГdios nУЃo reproduzidos" #: share/gpodder/ui/gtk/gpodder.ui.h:36 msgid "Hide podcasts without episodes" msgstr "Ocultar podcasts sem episУГdios" #: share/gpodder/ui/gtk/gpodder.ui.h:37 msgid "_Help" msgstr "Aj_uda" #: share/gpodder/ui/gtk/gpodder.ui.h:38 msgid "User manual" msgstr "Manual de utilizador" #: share/gpodder/ui/gtk/gpodder.ui.h:39 msgid "Software updates" msgstr "AtualizaУЇУЕes do programa" #: share/gpodder/ui/gtk/gpodder.ui.h:40 msgid "Filter:" msgstr "Filtro:" #: share/gpodder/ui/gtk/gpodder.ui.h:41 msgid "Podcasts" msgstr "Podcasts" #: share/gpodder/ui/gtk/gpodder.ui.h:42 msgid "Limit rate to" msgstr "Limitar velocidade a" #: share/gpodder/ui/gtk/gpodder.ui.h:43 msgid "KiB/s" msgstr "KB/s" #: share/gpodder/ui/gtk/gpodder.ui.h:44 msgid "Limit downloads to" msgstr "Limitar transferУЊncias a" #: share/gpodder/ui/gtk/gpodderwelcome.ui.h:2 msgid "Welcome to gPodder" msgstr "Bem-vindo ao gPodder" #: share/gpodder/ui/gtk/gpodderwelcome.ui.h:3 msgid "Your podcast list is empty." msgstr "A lista de podcasts estУЁ vazia." #: share/gpodder/ui/gtk/gpodderwelcome.ui.h:4 msgid "Choose from a list of example podcasts" msgstr "Escolha uma lista de exemplos" #: share/gpodder/ui/gtk/gpodderwelcome.ui.h:5 msgid "Add a podcast by entering its URL" msgstr "Adicione um podcast atravУЉs de um URL." #: share/gpodder/ui/gtk/gpodderwelcome.ui.h:6 msgid "Restore my subscriptions from gpodder.net" msgstr "Restaurar as minhas subscriУЇУЕes do gPodder.net" #: bin/gpo:266 msgid "Podcast update requested by extensions." msgstr "AtualizaУЇУЃo de podcast solicitado pelas extensУЕes." #: bin/gpo:270 msgid "Episode download requested by extensions." msgstr "TransferУЊncia de episУГdio solicitada pelas extensУЕes." #: bin/gpo:323 #, python-format msgid "Invalid url: %s" msgstr "URL invУЁlido: %s" #: bin/gpo:340 bin/gpo:416 bin/gpo:450 bin/gpo:582 bin/gpo:597 bin/gpo:717 #, python-format msgid "You are not subscribed to %s." msgstr "VocУЊ ainda nУЃo subscreveu %s." #: bin/gpo:346 #, fuzzy, python-format msgid "Already subscribed to %s." msgstr "NУЃo УЉ possУ­vel subscrever %s." #: bin/gpo:352 #, python-format msgid "Cannot subscribe to %s." msgstr "NУЃo УЉ possУ­vel subscrever %s." #: bin/gpo:368 #, python-format msgid "Successfully added %s." msgstr "%s foi adicionado com sucesso." #: bin/gpo:386 msgid "This configuration option does not exist." msgstr "Esta opУЇУЃo nУЃo existe." #: bin/gpo:390 msgid "Can only set leaf configuration nodes." msgstr "SУГ pode definir estruturas dependentes." #: bin/gpo:404 #, python-format msgid "Renamed %(old_title)s to %(new_title)s." msgstr "Nome mudado de %(old_title)s para %(new_title)s." #: bin/gpo:420 #, python-format msgid "Unsubscribed from %s." msgstr "Cancelada a subscriУЇУЃo em %s." #: bin/gpo:494 msgid "Updates disabled" msgstr "AtualizaУЇУЕes inativas" #: bin/gpo:505 #, python-format msgid "%(count)d new episode" msgid_plural "%(count)d new episodes" msgstr[0] "%(count)d novo episУГdio" msgstr[1] "%(count)d novos episУГdios" #: bin/gpo:511 msgid "Checking for new episodes" msgstr "A procurar novos episУГdios" #: bin/gpo:520 #, python-format msgid "Skipping %(podcast)s" msgstr "A ignorar %(podcast)s" #: bin/gpo:588 #, python-format msgid "Disabling feed update from %s." msgstr "A desativar fonte de atualizaУЇУЃo de %s." #: bin/gpo:603 #, python-format msgid "Enabling feed update from %s." msgstr "A ativar fonte de atualizaУЇУЃo de %s." #: bin/gpo:616 #, python-format msgid "Please register a YouTube API key and set it using %(command)s." msgstr "" #: bin/gpo:643 #, fuzzy, python-format msgid "Changing: %(old_url)s => %(new_url)s" msgstr "URL alterado de %(old_url)s para %(new_url)s." #: bin/gpo:653 #, fuzzy msgid "Nothing to fix" msgstr "Nada a exportar" #: bin/gpo:672 msgid "No podcasts found." msgstr "Nenhum podcast encontrado." #: bin/gpo:686 msgid "Enter index to subscribe, ? for list" msgstr "Indique o У­ndice de subscriУЇУЃo ou ? para uma lista" #: bin/gpo:700 bin/gpo:704 msgid "Invalid value." msgstr "Valor invУЁlido." #: bin/gpo:721 #, python-format msgid "Invalid URL: %s" msgstr "URL invУЁlido: %s" #: bin/gpo:724 #, python-format msgid "Changed URL from %(old_url)s to %(new_url)s." msgstr "URL alterado de %(old_url)s para %(new_url)s." #: bin/gpo:782 #, python-format msgid "Syntax error: %(error)s" msgstr "Erro de sintaxe: %(error)s" #: bin/gpo:876 #, fuzzy msgid "Ambiguous command. Did you mean.." msgstr "Comando invУЁlido, SerУЁ que queria escrever..." #: bin/gpo:880 msgid "The requested function is not available." msgstr "A funУЇУЃo solicitada nУЃo estУЁ disponУ­vel." #: bin/gpodder:105 msgid "print logging output on the console" msgstr "mostrar mensagem de erros na consola" #: bin/gpodder:108 msgid "subscribe to the feed at URL" msgstr "subscrever a fonte do URL" #: bin/gpodder:113 msgid "Mac OS X application process number" msgstr "NУКmero do processo Mac OS X" #: share/applications/gpodder.desktop.in.h:2 msgid "gPodder Podcast Client" msgstr "gPodder - Programa de podcasts" #: share/applications/gpodder.desktop.in.h:3 msgid "Podcast Client" msgstr "Programa de podcasts" #: share/applications/gpodder.desktop.in.h:4 msgid "Subscribe to audio and video content from the web" msgstr "Subscrever conteУКdo УЁudio e vУ­deo na web" #: share/applications/gpodder-url-handler.desktop.in.h:1 #, fuzzy msgid "gPodder (subscribe to feed)" msgstr "subscrever a fonte do URL" gpodder-3.9.0/po/eu.po0000644000016000001710000016637612654461625015706 0ustar jenkinsjenkins00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # # Translators: # Asier Iturralde Sarasola , 2011-2013. msgid "" msgstr "" "Project-Id-Version: gPodder\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2016-02-03 20:31+0000\n" "PO-Revision-Date: 2013-01-23 00:23+0000\n" "Last-Translator: Asier Iturralde Sarasola \n" "Language-Team: Basque (http://www.transifex.com/projects/p/gpodder/language/" "eu/)\n" "Language: eu\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" #: src/gpodder/config.py:55 #, python-format msgid "gPodder on %s" msgstr "gPodder %s-n" #: src/gpodder/directory.py:95 #, fuzzy msgid "gpodder.net search" msgstr "gpodder.net" #: src/gpodder/directory.py:104 #, fuzzy msgid "OPML from web" msgstr "OPML fitxategiak" #: src/gpodder/directory.py:113 #, fuzzy msgid "OPML file" msgstr "OPML fitxategiak" #: src/gpodder/directory.py:122 share/gpodder/ui/gtk/gpodderwelcome.ui.h:1 msgid "Getting started" msgstr "Lehen pausoak" #: src/gpodder/directory.py:131 #, fuzzy msgid "gpodder.net Top 50" msgstr "gpodder.net" #: src/gpodder/directory.py:140 #, fuzzy msgid "gpodder.net Tags" msgstr "gpodder.net" #: src/gpodder/directory.py:152 #, fuzzy msgid "Soundcloud search" msgstr "%s Soundcloud-en" #: src/gpodder/directory.py:165 #, fuzzy msgid "Imported OPML file" msgstr "Inportatu OPML fitxategitik" #: src/gpodder/download.py:329 msgid "Wrong username/password" msgstr "Erabiltzaile-izen/pasahitz okerra" #: src/gpodder/download.py:527 src/gpodder/sync.py:924 msgid "Added" msgstr "Gehituta" #: src/gpodder/download.py:527 src/gpodder/sync.py:924 msgid "Queued" msgstr "Ilaran" #: src/gpodder/download.py:527 src/gpodder/gtkui/model.py:327 msgid "Downloading" msgstr "Deskargatzen" #: src/gpodder/download.py:528 src/gpodder/model.py:721 #: src/gpodder/sync.py:925 msgid "Finished" msgstr "Amaituta" #: src/gpodder/download.py:528 src/gpodder/sync.py:925 msgid "Failed" msgstr "Huts egin du" #: src/gpodder/download.py:528 src/gpodder/sync.py:925 msgid "Cancelled" msgstr "Bertan behera utzita" #: src/gpodder/download.py:528 src/gpodder/sync.py:925 msgid "Paused" msgstr "Pausarazita" #: src/gpodder/download.py:862 msgid "Missing content from server" msgstr "Edukia ez dago zerbitzarian" #: src/gpodder/download.py:868 #, python-format msgid "I/O Error: %(error)s: %(filename)s" msgstr "I/O Errorea: %(error)s: %(filename)s" #: src/gpodder/download.py:875 #, python-format msgid "HTTP Error %(code)s: %(message)s" msgstr "HTTP Errorea %(code)s: %(message)s" #: src/gpodder/download.py:879 src/gpodder/sync.py:1081 #, python-format msgid "Error: %s" msgstr "Errorea: %s" #: src/gpodder/extensions.py:55 #, fuzzy msgid "Desktop Integration" msgstr "Ubuntu Unity Integrazioa" #: src/gpodder/extensions.py:56 msgid "Interface" msgstr "Interfazea" #: src/gpodder/extensions.py:57 #, fuzzy msgid "Post download" msgstr "Hautatu erreproduzitutakoak" #: src/gpodder/extensions.py:59 src/gpodder/model.py:779 #: src/gpodder/model.py:1225 msgid "Other" msgstr "Bestelakoak" #: src/gpodder/extensions.py:100 msgid "No description for this extension." msgstr "Deskribapenik ez hedapen honentzat" #: src/gpodder/extensions.py:212 #, python-format msgid "Command not found: %(command)s" msgstr "Ez da komandoa aurkitu: %(command)s" #: src/gpodder/extensions.py:228 #, python-format msgid "Need at least one of the following commands: %(list_of_commands)s" msgstr "" #: src/gpodder/extensions.py:265 #, python-format msgid "Python module not found: %(module)s" msgstr "Ez da Python modulua aurkitu: %(module)s" #: src/gpodder/model.py:446 src/gpodder/plugins/soundcloud.py:156 msgid "No description available" msgstr "Ez dago deskribapenik eskuragarri" #: src/gpodder/model.py:679 msgid "unknown" msgstr "ezezaguna" #: src/gpodder/model.py:746 msgid "Default" msgstr "Lehenetsia" #: src/gpodder/model.py:747 msgid "Only keep latest" msgstr "Mantendu azkena soilik" #: src/gpodder/model.py:1208 src/gpodder/model.py:1223 #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:10 msgid "Video" msgstr "Bideoa" #: src/gpodder/model.py:1221 msgid "Audio" msgstr "Audioa" #: src/gpodder/my.py:174 #, python-format msgid "Add %s" msgstr "Gehitu %s" #: src/gpodder/my.py:176 #, python-format msgid "Remove %s" msgstr "Ezabatu %s" #: src/gpodder/sync.py:196 msgid "Cancelled by user" msgstr "Erabiltzaileak ezeztatua" #: src/gpodder/sync.py:199 msgid "Writing data to disk" msgstr "Datuak diskora idazten" #: src/gpodder/sync.py:295 msgid "Opening iPod database" msgstr "iPod datu-basea irekitzen" #: src/gpodder/sync.py:305 msgid "iPod opened" msgstr "iPod irekita" #: src/gpodder/sync.py:316 msgid "Saving iPod database" msgstr "iPod datu-basea gordetzen" #: src/gpodder/sync.py:321 msgid "Writing extended gtkpod database" msgstr "Hedatutako gtkpod datu-basea idazten" #: src/gpodder/sync.py:397 src/gpodder/sync.py:680 src/gpodder/sync.py:874 #, python-format msgid "Removing %s" msgstr "%s kentzen" #: src/gpodder/sync.py:412 src/gpodder/sync.py:557 #, python-format msgid "Adding %s" msgstr "%s gehitzen" #: src/gpodder/sync.py:430 #, python-format msgid "Error copying %(episode)s: Not enough free space on %(mountpoint)s" msgstr "" "Errorea %(episode)s kopiatzean: Ez dago behar adina leku libre " "%(mountpoint)s-(e)n" #: src/gpodder/sync.py:515 msgid "Opening MP3 player" msgstr "MP3 erreproduzitzailea irekitzen" #: src/gpodder/sync.py:518 msgid "MP3 player opened" msgstr "MP3 erreproduzitzailea irekita" #: src/gpodder/sync.py:576 #, python-format msgid "" "Not enough space in %(path)s: %(free)s available, but need at least %(need)s" msgstr "" #: src/gpodder/sync.py:603 src/gpodder/sync.py:611 #, python-format msgid "Error opening %(filename)s: %(message)s" msgstr "Errorea %(filename)s irekitzean: %(message)s" #: src/gpodder/sync.py:780 src/gpodder/sync.py:786 msgid "MTP device" msgstr "MTP gailua" #: src/gpodder/sync.py:793 msgid "Opening the MTP device" msgstr "MTP gailua irekitzen" #: src/gpodder/sync.py:803 #, python-format msgid "%s opened" msgstr "%s irekita" #: src/gpodder/sync.py:808 #, python-format msgid "Closing %s" msgstr "%s ixten" #: src/gpodder/sync.py:816 #, python-format msgid "%s closed" msgstr "%s itxita" #: src/gpodder/sync.py:821 bin/gpo:708 #, python-format msgid "Adding %s..." msgstr "%s gehitzen..." #: src/gpodder/sync.py:924 msgid "Synchronizing" msgstr "Sinkronizatzen" #: src/gpodder/util.py:429 #, python-format msgid "%(count)d day ago" msgid_plural "%(count)d days ago" msgstr[0] "Duela egun %(count)d" msgstr[1] "Duela %(count)d egun" #: src/gpodder/util.py:508 msgid "Today" msgstr "Gaur" #: src/gpodder/util.py:510 msgid "Yesterday" msgstr "Atzo" #: src/gpodder/util.py:553 src/gpodder/util.py:556 msgid "(unknown)" msgstr "(ezezaguna)" #: src/gpodder/util.py:1193 src/gpodder/util.py:1212 #, python-format msgid "%(count)d second" msgid_plural "%(count)d seconds" msgstr[0] "Segundu %(count)d" msgstr[1] "%(count)d segundu" #: src/gpodder/util.py:1206 #, python-format msgid "%(count)d hour" msgid_plural "%(count)d hours" msgstr[0] "Ordu %(count)d" msgstr[1] "%(count)d ordu" #: src/gpodder/util.py:1209 #, python-format msgid "%(count)d minute" msgid_plural "%(count)d minutes" msgstr[0] "Minutu %(count)d" msgstr[1] "%(count)d minutu" #: src/gpodder/util.py:1215 msgid "and" msgstr "eta" #: src/gpodder/gtkui/config.py:50 msgid "Integer" msgstr "Zenbaki osoa" #: src/gpodder/gtkui/config.py:52 msgid "Float" msgstr "Koma mugikorreko zenbakia" #: src/gpodder/gtkui/config.py:54 msgid "Boolean" msgstr "Boolearra" #: src/gpodder/gtkui/config.py:56 msgid "String" msgstr "Katea" #: src/gpodder/gtkui/desktopfile.py:70 #, python-format msgid "Command: %s" msgstr "Komandoa: %s" #: src/gpodder/gtkui/desktopfile.py:150 msgid "Default application" msgstr "Aplikazio lehenetsia" #: src/gpodder/gtkui/main.py:205 share/applications/gpodder.desktop.in.h:1 msgid "gPodder" msgstr "gPodder" #: src/gpodder/gtkui/main.py:288 msgid "Loading incomplete downloads" msgstr "Osatu gabeko deskargak kargatzen" #: src/gpodder/gtkui/main.py:289 msgid "Some episodes have not finished downloading in a previous session." msgstr "Zenbait atal osatu gabe gelditu ziren aurreko saio batean." #: src/gpodder/gtkui/main.py:291 #, python-format msgid "%(count)d partial file" msgid_plural "%(count)d partial files" msgstr[0] "Fitxategi %(count)d osatu gabe" msgstr[1] "%(count)d fitxategi osatu gabe" #: src/gpodder/gtkui/main.py:306 msgid "Resume all" msgstr "Berrekin guztiak" #: src/gpodder/gtkui/main.py:316 msgid "Incomplete downloads from a previous session were found." msgstr "Aurreko saio bateko osatu gabeko deskargak aurkitu dira." #: src/gpodder/gtkui/main.py:414 msgid "Action" msgstr "Ekintza" #: src/gpodder/gtkui/main.py:461 msgid "Confirm changes from gpodder.net" msgstr "Berretsi gpodder.net-eko aldaketak" #: src/gpodder/gtkui/main.py:462 msgid "Select the actions you want to carry out." msgstr "Hautatu burutu nahi dituzun ekintzak." #: src/gpodder/gtkui/main.py:502 msgid "Uploading subscriptions" msgstr "Harpidetzak igotzen" #: src/gpodder/gtkui/main.py:503 msgid "Your subscriptions are being uploaded to the server." msgstr "Zure harpidetzak zerbitzarira igotzen ari dira." #: src/gpodder/gtkui/main.py:508 msgid "List uploaded successfully." msgstr "Zerrenda behar bezala igo da." #: src/gpodder/gtkui/main.py:515 msgid "Error while uploading" msgstr "Errorea igotzean" #: src/gpodder/gtkui/main.py:800 src/gpodder/gtkui/main.py:928 #: src/gpodder/gtkui/main.py:2622 src/gpodder/gtkui/main.py:2815 #: src/gpodder/gtkui/desktop/episodeselector.py:132 #: src/gpodder/gtkui/desktop/sync.py:270 msgid "Episode" msgstr "Atala" #: src/gpodder/gtkui/main.py:819 msgid "Size" msgstr "Tamaina" #: src/gpodder/gtkui/main.py:824 msgid "Duration" msgstr "Iraupena" #: src/gpodder/gtkui/main.py:828 msgid "Released" msgstr "Argitalpen-data" #: src/gpodder/gtkui/main.py:855 msgid "Visible columns" msgstr "Ageriko zutabeak" #: src/gpodder/gtkui/main.py:948 src/gpodder/gtkui/main.py:1108 #: share/gpodder/ui/gtk/gpodder.ui.h:45 msgid "Progress" msgstr "Aurrerapena" #: src/gpodder/gtkui/main.py:982 msgid "Loading episodes" msgstr "Atalak kargatzen" #: src/gpodder/gtkui/main.py:985 msgid "No episodes in current view" msgstr "Ez dago atalik uneko ikuspegian" #: src/gpodder/gtkui/main.py:987 msgid "No episodes available" msgstr "Ez dago atalik eskuragarri" #: src/gpodder/gtkui/main.py:993 msgid "No podcasts in this view" msgstr "Ez dago podcast-ik ikuspegi honetan" #: src/gpodder/gtkui/main.py:995 msgid "No subscriptions" msgstr "Ez dago harpidetzarik" #: src/gpodder/gtkui/main.py:997 msgid "No active tasks" msgstr "Ataza aktiborik ez" #: src/gpodder/gtkui/main.py:1112 src/gpodder/gtkui/main.py:1114 #, python-format msgid "%(count)d active" msgid_plural "%(count)d active" msgstr[0] "%(count)d aktibo" msgstr[1] "%(count)d aktibo" #: src/gpodder/gtkui/main.py:1116 #, python-format msgid "%(count)d failed" msgid_plural "%(count)d failed" msgstr[0] "%(count)d-ek huts egin du" msgstr[1] "%(count)d-(e)k huts egin dute" #: src/gpodder/gtkui/main.py:1118 #, python-format msgid "%(count)d queued" msgid_plural "%(count)d queued" msgstr[0] "%(count)d ilaran" msgstr[1] "%(count)d ilaran" #: src/gpodder/gtkui/main.py:1132 #, python-format msgid "downloading %(count)d file" msgid_plural "downloading %(count)d files" msgstr[0] "Fitxategi %(count)d deskargatzen" msgstr[1] "%(count)d fitxategi deskargatzen" #: src/gpodder/gtkui/main.py:1142 #, python-format msgid "synchronizing %(count)d file" msgid_plural "synchronizing %(count)d files" msgstr[0] "Fitxategi %(count)d sinkronizatzen" msgstr[1] "%(count)d fitxategi sinkronizatzen" #: src/gpodder/gtkui/main.py:1144 #, python-format msgid "%(queued)d task queued" msgid_plural "%(queued)d tasks queued" msgstr[0] "Ataza %(queued)d ilaratuta" msgstr[1] "%(queued)d ataza ilaratuta" #: src/gpodder/gtkui/main.py:1168 msgid "Please report this problem and restart gPodder:" msgstr "Mesedez jakinarazi arazo hau eta gPodder berrabiarazi:" #: src/gpodder/gtkui/main.py:1168 msgid "Unhandled exception" msgstr "Kudeatu gabeko salbuespena" #: src/gpodder/gtkui/main.py:1235 #, python-format msgid "Feedparser error: %s" msgstr "Jario-analizatzaile errorea: %s" #: src/gpodder/gtkui/main.py:1371 msgid "Could not download some episodes:" msgstr "Ezin izan dira zenbait atal deskargatu:" #: src/gpodder/gtkui/main.py:1373 src/gpodder/gtkui/main.py:1376 msgid "Downloads finished" msgstr "Amaitutako deskargak" #: src/gpodder/gtkui/main.py:1379 msgid "Downloads failed" msgstr "Huts egindako deskargak" #: src/gpodder/gtkui/main.py:1383 msgid "Could not sync some episodes:" msgstr "Ezin izan dira zenbait atal sinkronizatu:" #: src/gpodder/gtkui/main.py:1385 src/gpodder/gtkui/main.py:1388 msgid "Device synchronization finished" msgstr "Gailua sinkronizatzea amaituta" #: src/gpodder/gtkui/main.py:1391 msgid "Device synchronization failed" msgstr "Gailua sinkronizatzeak huts egin du" #: src/gpodder/gtkui/main.py:1434 #, python-format msgid "%(count)d more episode" msgid_plural "%(count)d more episodes" msgstr[0] "Atal %(count)d gehiago" msgstr[1] "%(count)d atal gehiago" #: src/gpodder/gtkui/main.py:1508 msgid "Start download now" msgstr "Hasi deskarga orain" #: src/gpodder/gtkui/main.py:1510 src/gpodder/gtkui/main.py:1719 #: src/gpodder/gtkui/desktop/episodeselector.py:144 #: share/gpodder/ui/gtk/gpodder.ui.h:20 msgid "Download" msgstr "Deskarga" #: src/gpodder/gtkui/main.py:1511 share/gpodder/ui/gtk/gpodder.ui.h:21 msgid "Cancel" msgstr "Utzi" #: src/gpodder/gtkui/main.py:1512 msgid "Pause" msgstr "Pausarazi" #: src/gpodder/gtkui/main.py:1514 msgid "Remove from list" msgstr "Ezabatu zerrendatik" #: src/gpodder/gtkui/main.py:1553 share/gpodder/ui/gtk/gpodder.ui.h:13 msgid "Update podcast" msgstr "Eguneratu podcast-a" #: src/gpodder/gtkui/main.py:1560 msgid "Open download folder" msgstr "Ireki deskargen karpeta" #: src/gpodder/gtkui/main.py:1566 msgid "Mark episodes as old" msgstr "Markatu atalak zahar bezala" #: src/gpodder/gtkui/main.py:1570 src/gpodder/gtkui/main.py:1778 msgid "Archive" msgstr "Artxiboa" #: src/gpodder/gtkui/main.py:1575 msgid "Remove podcast" msgstr "Ezabatu podcast-a" #: src/gpodder/gtkui/main.py:1590 share/gpodder/ui/gtk/gpodder.ui.h:10 msgid "Podcast settings" msgstr "Podcast ezarpenak" #: src/gpodder/gtkui/main.py:1650 msgid "Error converting file." msgstr "Errorea fitxategia bihurtzean." #: src/gpodder/gtkui/main.py:1650 msgid "Bluetooth file transfer" msgstr "Bluetooth fitxategi-transferentzia" #: src/gpodder/gtkui/main.py:1709 msgid "Preview" msgstr "Aurrebista" #: src/gpodder/gtkui/main.py:1711 msgid "Stream" msgstr "Korrontea" #: src/gpodder/gtkui/main.py:1755 msgid "Send to" msgstr "Bidali honi" #: src/gpodder/gtkui/main.py:1757 msgid "Local folder" msgstr "Karpeta lokala" #: src/gpodder/gtkui/main.py:1762 msgid "Bluetooth device" msgstr "Bluetooth gailua" #: src/gpodder/gtkui/main.py:1769 msgid "New" msgstr "Berria" #: src/gpodder/gtkui/main.py:1785 share/gpodder/ui/gtk/gpodder.ui.h:25 msgid "Episode details" msgstr "Atalaren xehetasunak" #: src/gpodder/gtkui/main.py:1938 msgid "Please check your media player settings in the preferences dialog." msgstr "" "Mesedez egiaztatu zure erreproduzitzailearen ezarpenak hobespenak " "elkarrizketa-koadroan." #: src/gpodder/gtkui/main.py:1939 msgid "Error opening player" msgstr "Errorea erreproduzitzailea irekitzean" #: src/gpodder/gtkui/main.py:2178 msgid "Adding podcasts" msgstr "Podcast-ak gehitzen" #: src/gpodder/gtkui/main.py:2179 msgid "Please wait while episode information is downloaded." msgstr "Mesedez itxaron atalaren informazioa deskargatu bitartean." #: src/gpodder/gtkui/main.py:2186 msgid "Existing subscriptions skipped" msgstr "Existitzen diren harpidetzak ekidin dira" #: src/gpodder/gtkui/main.py:2187 msgid "You are already subscribed to these podcasts:" msgstr "Dagoeneko harpidetuta zaude honako podcast-etara:" #: src/gpodder/gtkui/main.py:2195 msgid "Podcast requires authentication" msgstr "Podcast-ak autorizazioa eskatzen du" #: src/gpodder/gtkui/main.py:2196 #, python-format msgid "Please login to %s:" msgstr "Mesedez hasi saioa %s-n:" #: src/gpodder/gtkui/main.py:2204 src/gpodder/gtkui/main.py:2299 msgid "Authentication failed" msgstr "Autentifikazioak huts egin du" #: src/gpodder/gtkui/main.py:2210 msgid "Website redirection detected" msgstr "Webgune birbidalketa detektatu da" #: src/gpodder/gtkui/main.py:2211 #, python-format msgid "The URL %(url)s redirects to %(target)s." msgstr "%(url)s URL-ak %(target)s-era birbidaltzen du." #: src/gpodder/gtkui/main.py:2212 msgid "Do you want to visit the website now?" msgstr "Webgunea orain bistarazi nahi duzu?" #: src/gpodder/gtkui/main.py:2221 msgid "Could not add some podcasts" msgstr "Zenbait podcast ezin izan dira gehitu" #: src/gpodder/gtkui/main.py:2222 msgid "Some podcasts could not be added to your list:" msgstr "Zenbait podcast ez dira zure zerrendara gehituko:" #: src/gpodder/gtkui/main.py:2224 msgid "Unknown" msgstr "Ezezaguna" #: src/gpodder/gtkui/main.py:2308 msgid "Redirection detected" msgstr "Birbidalketa detektatu da" #: src/gpodder/gtkui/main.py:2342 msgid "Merging episode actions" msgstr "Atal-ekintzak batzen" #: src/gpodder/gtkui/main.py:2343 msgid "Episode actions from gpodder.net are merged." msgstr "gpodder.net-eko atal-ekintzak batu dira" #: src/gpodder/gtkui/main.py:2368 msgid "Cancelling..." msgstr "Bertan behera uzten..." #: src/gpodder/gtkui/main.py:2377 msgid "Please connect to a network, then try again." msgstr "Mesedez konektatu sare batetara, ondoren saiatu berriro." #: src/gpodder/gtkui/main.py:2378 msgid "No network connection" msgstr "Sareko konexiorik ez" #: src/gpodder/gtkui/main.py:2399 #, python-format msgid "Updating %(count)d feed..." msgid_plural "Updating %(count)d feeds..." msgstr[0] "Jario %(count)d eguneratzen..." msgstr[1] "%(count)d jario eguneratzen..." #: src/gpodder/gtkui/main.py:2417 #, python-format msgid "Error while updating %(url)s: %(message)s" msgstr "Errorea %(url)s eguneratzean: %(message)s" #: src/gpodder/gtkui/main.py:2419 #, python-format msgid "The feed at %(url)s could not be updated." msgstr "%(url)s-eko jarioa ezin izan da eguneratu." #: src/gpodder/gtkui/main.py:2420 msgid "Error while updating feed" msgstr "Errorea jarioa eguneratzean" #: src/gpodder/gtkui/main.py:2435 #, python-format msgid "Updated %(podcast)s (%(position)d/%(total)d)" msgstr "%(podcast)s (%(position)d/%(total)d) eguneratuta" #: src/gpodder/gtkui/main.py:2466 msgid "No new episodes" msgstr "Ez dago atal berririk" #: src/gpodder/gtkui/main.py:2479 #, python-format msgid "Downloading %(count)d new episode." msgid_plural "Downloading %(count)d new episodes." msgstr[0] "Atal berri %(count)d deskargatzen." msgstr[1] "%(count)d atal berri deskargatzen." #: src/gpodder/gtkui/main.py:2480 src/gpodder/gtkui/main.py:2484 #: src/gpodder/gtkui/main.py:2833 msgid "New episodes available" msgstr "Atal berriak eskuragarri" #: src/gpodder/gtkui/main.py:2483 #, python-format msgid "%(count)d new episode added to download list." msgid_plural "%(count)d new episodes added to download list." msgstr[0] "Atal berri %(count)d gehitu da deskarga-zerrendara." msgstr[1] "%(count)d atal berri gehitu dira deskarga-zerrendara." #: src/gpodder/gtkui/main.py:2490 #, python-format msgid "%(count)d new episode available" msgid_plural "%(count)d new episodes available" msgstr[0] "Atal berri %(count)d eskuragarri" msgstr[1] "%(count)d atal berri eskuragarri" #: src/gpodder/gtkui/main.py:2509 msgid "Quit gPodder" msgstr "Irten gPodder-etik" #: src/gpodder/gtkui/main.py:2510 msgid "" "You are downloading episodes. You can resume downloads the next time you " "start gPodder. Do you want to quit now?" msgstr "" "Atalak deskargatzen ari zara. Deskargak berrekin ditzakezu gPodder " "abiarazten duzun hurrengo aldian. Aplikazioa itxi nahi duzu orain?" #: src/gpodder/gtkui/main.py:2559 msgid "Episodes are locked" msgstr "Atalak blokeatuta daude" #: src/gpodder/gtkui/main.py:2560 msgid "" "The selected episodes are locked. Please unlock the episodes that you want " "to delete before trying to delete them." msgstr "" "Hautatutako atalak blokeatuta daude. Mesedez desblokeatu ezabatu nahi " "dituzun atalak." #: src/gpodder/gtkui/main.py:2565 #, python-format msgid "Delete %(count)d episode?" msgid_plural "Delete %(count)d episodes?" msgstr[0] "Ezabatu atal %(count)d?" msgstr[1] "Ezabatu %(count)d atal?" #: src/gpodder/gtkui/main.py:2566 msgid "Deleting episodes removes downloaded files." msgstr "Atalak ezabatzeak deskargatutako fitxategiak ezabatzen ditu." #: src/gpodder/gtkui/main.py:2571 msgid "Deleting episodes" msgstr "Atalak ezabatzen" #: src/gpodder/gtkui/main.py:2572 msgid "Please wait while episodes are deleted" msgstr "Mesedez itxaron atalak ezabatu arte" #: src/gpodder/gtkui/main.py:2625 #, python-format msgid "Select older than %(count)d day" msgid_plural "Select older than %(count)d days" msgstr[0] "Hautatu egun %(count)d baino zaharragoak" msgstr[1] "Hautatu %(count)d egun baino zaharragoak" #: src/gpodder/gtkui/main.py:2627 msgid "Select played" msgstr "Hautatu erreproduzitutakoak" #: src/gpodder/gtkui/main.py:2628 msgid "Select finished" msgstr "Hautatu bukatutakoak" #: src/gpodder/gtkui/main.py:2632 msgid "Select the episodes you want to delete:" msgstr "Hautatu ezabatu nahi dituzun atalak:" #: src/gpodder/gtkui/main.py:2648 share/gpodder/ui/gtk/gpodder.ui.h:4 msgid "Delete episodes" msgstr "Ezabatu atalak" #: src/gpodder/gtkui/main.py:2703 src/gpodder/gtkui/main.py:2934 #: src/gpodder/gtkui/main.py:3034 msgid "No podcast selected" msgstr "Ez da podcast-ik hautatu" #: src/gpodder/gtkui/main.py:2704 msgid "Please select a podcast in the podcasts list to update." msgstr "Mesedez hautatu podcast-zerrendatik eguneratu nahi duzun podcast-a." #: src/gpodder/gtkui/main.py:2774 #, python-format msgid "Download error while downloading %(episode)s: %(message)s" msgstr "Deskarga errorea %(episode)s deskargatzean: %(message)s" #: src/gpodder/gtkui/main.py:2775 msgid "Download error" msgstr "Deskarga errorea" #: src/gpodder/gtkui/main.py:2818 msgid "Select the episodes you want to download:" msgstr "Hautatu deskargatu nahi dituzun atalak:" #: src/gpodder/gtkui/main.py:2841 msgid "Mark as old" msgstr "Markatu zahar bezala" #: src/gpodder/gtkui/main.py:2848 msgid "Please check for new episodes later." msgstr "Mesedez egiaztatu beranduago atal berririk badagoen." #: src/gpodder/gtkui/main.py:2849 msgid "No new episodes available" msgstr "Ez dago atal berririk eskuragarri" #: src/gpodder/gtkui/main.py:2900 msgid "Login to gpodder.net" msgstr "Saioa hasi gpodder.net-en" #: src/gpodder/gtkui/main.py:2901 msgid "Please login to download your subscriptions." msgstr "Mesedez saioa hasi harpidetzak deskargatzeko." #: src/gpodder/gtkui/main.py:2916 msgid "Subscriptions on gpodder.net" msgstr "gpodder.net-eko harpidetzak" #: src/gpodder/gtkui/main.py:2935 msgid "Please select a podcast in the podcasts list to edit." msgstr "Mesedez hautatu podcast-zerrendako podcast bat editatzeko." #: src/gpodder/gtkui/main.py:2949 msgid "Podcast" msgstr "Podcast" #: src/gpodder/gtkui/main.py:2955 share/gpodder/ui/gtk/gpodder.ui.h:12 msgid "Remove podcasts" msgstr "Ezabatu podcast-ak" #: src/gpodder/gtkui/main.py:2956 msgid "Select the podcast you want to remove." msgstr "Hautatu ezabatu nahi duzun podcast-a." #: src/gpodder/gtkui/main.py:2960 #: src/gpodder/gtkui/desktop/episodeselector.py:105 msgid "Remove" msgstr "Ezabatu" #: src/gpodder/gtkui/main.py:2969 msgid "Removing podcast" msgstr "Podcast-a ezabatzen" #: src/gpodder/gtkui/main.py:2970 msgid "Please wait while the podcast is removed" msgstr "Mesedez itxaron podcast-a ezabatu bitartean" #: src/gpodder/gtkui/main.py:2971 msgid "Do you really want to remove this podcast and its episodes?" msgstr "Ziur zaude podcast hau eta bere atal guztiak ezabatu nahi dituzula?" #: src/gpodder/gtkui/main.py:2973 msgid "Removing podcasts" msgstr "Podcast-ak ezabatzen" #: src/gpodder/gtkui/main.py:2974 msgid "Please wait while the podcasts are removed" msgstr "Mesedez itxaron podcast-ak ezabatu bitartean" #: src/gpodder/gtkui/main.py:2975 msgid "Do you really want to remove the selected podcasts and their episodes?" msgstr "" "Ziur zaude hautatutako podcast-ak eta beren atal guztiak ezabatu nahi " "dituzula?" #: src/gpodder/gtkui/main.py:3035 msgid "Please select a podcast in the podcasts list to remove." msgstr "Mesedez hautatu zerrendatik ezabatu nahi duzun podcast-a." #: src/gpodder/gtkui/main.py:3045 msgid "OPML files" msgstr "OPML fitxategiak" #: src/gpodder/gtkui/main.py:3050 msgid "Import from OPML" msgstr "Inportatu OPML-tik" #: src/gpodder/gtkui/main.py:3064 msgid "Import podcasts from OPML file" msgstr "Inportatu podcast-ak OPML fitxategitik" #: src/gpodder/gtkui/main.py:3071 msgid "Nothing to export" msgstr "Ez dago esportatzeko ezer" #: src/gpodder/gtkui/main.py:3072 msgid "" "Your list of podcast subscriptions is empty. Please subscribe to some " "podcasts first before trying to export your subscription list." msgstr "" "Zure podcast harpidetza-zerrenda hutsik dago. Mesedez harpidetu zenbait " "podcast-etara harpidetza-zerrenda esportatzen saiatu aurretik." #: src/gpodder/gtkui/main.py:3076 msgid "Export to OPML" msgstr "Esportatu OPML-ra" #: src/gpodder/gtkui/main.py:3087 #, python-format msgid "%(count)d subscription exported" msgid_plural "%(count)d subscriptions exported" msgstr[0] "Harpidetza %(count)d esportatuta" msgstr[1] "%(count)d harpidetza esportatuta" #: src/gpodder/gtkui/main.py:3088 msgid "Your podcast list has been successfully exported." msgstr "Zure podcast zerrenda behar bezala esportatu da." #: src/gpodder/gtkui/main.py:3090 msgid "Could not export OPML to file. Please check your permissions." msgstr "" " Ezin izan da OPML fitxategira esportatu. Mesedez egiaztatu zure baimenak." #: src/gpodder/gtkui/main.py:3090 msgid "OPML export failed" msgstr "OPML esportazioak huts egin du" #: src/gpodder/gtkui/main.py:3117 msgid "No updates available" msgstr "Ez dago eguneraketarik eskuragarri" #: src/gpodder/gtkui/main.py:3118 msgid "You have the latest version of gPodder." msgstr "gPodder-en azken bertsioa daukazu." #: src/gpodder/gtkui/main.py:3122 msgid "New version available" msgstr "Bertsio berria eskuragarri" #: src/gpodder/gtkui/main.py:3124 #, python-format msgid "Installed version: %s" msgstr "Instalatutako bertsioa: %s" #: src/gpodder/gtkui/main.py:3125 #, python-format msgid "Newest version: %s" msgstr "Bertsio berriena: %s" #: src/gpodder/gtkui/main.py:3126 #, python-format msgid "Release date: %s" msgstr "Argitalpen data: %s" #: src/gpodder/gtkui/main.py:3128 msgid "Download the latest version from gpodder.org?" msgstr "Azken bertsioa deskargatu gpodder.org-etik?" #: src/gpodder/gtkui/main.py:3141 msgid "About gPodder" msgstr "gPodder-i buruz" #: src/gpodder/gtkui/main.py:3424 #, fuzzy msgid "Please register a YouTube API key and set it in the preferences." msgstr "Mesedez konfiguratu zure gailua hobespenak elkarrizketa-koadroan." #: src/gpodder/gtkui/main.py:3425 msgid "Would you like to set up an API key now?" msgstr "" #: src/gpodder/gtkui/main.py:3425 msgid "API key required" msgstr "" #: src/gpodder/gtkui/main.py:3444 bin/gpo:631 #, fuzzy msgid "No unique URL found" msgstr "Ez da kanalik aurkitu" #: src/gpodder/gtkui/main.py:3449 bin/gpo:637 #, fuzzy msgid "Already subscribed" msgstr "Ezin da harpidetu %s-(e)ra" #: src/gpodder/gtkui/main.py:3458 bin/gpo:649 #, python-format msgid "Make sure the API key is correct. Error: %(message)s" msgstr "" #: src/gpodder/gtkui/main.py:3459 #, fuzzy msgid "Error getting YouTube channels" msgstr "Errorea aukera ezartzean" #: src/gpodder/gtkui/main.py:3462 #, fuzzy msgid "Successfully migrated subscriptions" msgstr "Behar bezala gehitu da %s." #: src/gpodder/gtkui/main.py:3464 #, fuzzy msgid "Subscriptions are up to date" msgstr "Harpidetza pausarazita" #: src/gpodder/gtkui/main.py:3467 msgid "These URLs failed:" msgstr "" #: src/gpodder/gtkui/main.py:3469 #, fuzzy msgid "Could not migrate some subscriptions" msgstr "Zenbait podcast ezin izan dira gehitu" #: src/gpodder/gtkui/main.py:3493 msgid "Cannot start gPodder" msgstr "Ezin izan da gPodder abiarazi" #: src/gpodder/gtkui/main.py:3494 #, python-format msgid "D-Bus error: %s" msgstr "D-Bus errorea: %s" #: src/gpodder/gtkui/model.py:68 #, python-format msgid "released %s" msgstr "%s-n argitaratua" #: src/gpodder/gtkui/model.py:69 src/gpodder/gtkui/model.py:87 #: src/gpodder/gtkui/model.py:237 src/gpodder/gtkui/shownotes.py:84 #, python-format msgid "from %s" msgstr "%s-tik" #: src/gpodder/gtkui/model.py:80 src/gpodder/gtkui/model.py:393 msgid "played" msgstr "erreproduzitua" #: src/gpodder/gtkui/model.py:82 msgid "unplayed" msgstr "erreproduzitu gabea" #: src/gpodder/gtkui/model.py:85 msgid "today" msgstr "gaur" #: src/gpodder/gtkui/model.py:86 #, python-format msgid "downloaded %s" msgstr "%s deskargatua" #: src/gpodder/gtkui/model.py:337 msgid "Deleted" msgstr "Ezabatua" #: src/gpodder/gtkui/model.py:342 msgid "New episode" msgstr "Atal berria" #: src/gpodder/gtkui/model.py:356 msgid "Downloaded episode" msgstr "Deskargatutako atala" #: src/gpodder/gtkui/model.py:359 msgid "Downloaded video episode" msgstr "Deskargatutako bideo-atala" #: src/gpodder/gtkui/model.py:362 msgid "Downloaded image" msgstr "Deskargatutako irudia" #: src/gpodder/gtkui/model.py:365 msgid "Downloaded file" msgstr "Deskargatutako fitxategia" #: src/gpodder/gtkui/model.py:380 msgid "missing file" msgstr "fitxategia falta da" #: src/gpodder/gtkui/model.py:384 msgid "never displayed" msgstr "inoiz bistarazi gabea" #: src/gpodder/gtkui/model.py:386 msgid "never played" msgstr "inoiz erreproduzitu gabea" #: src/gpodder/gtkui/model.py:388 msgid "never opened" msgstr "inoiz ireki gabea" #: src/gpodder/gtkui/model.py:391 msgid "displayed" msgstr "bistaratua" #: src/gpodder/gtkui/model.py:395 msgid "opened" msgstr "irekia" #: src/gpodder/gtkui/model.py:397 msgid "deletion prevented" msgstr "ezabaketa galarazita" #: src/gpodder/gtkui/model.py:432 share/gpodder/ui/gtk/gpodder.ui.h:32 msgid "All episodes" msgstr "Atal guztiak" #: src/gpodder/gtkui/model.py:433 msgid "from all podcasts" msgstr "podcast guztietakoak" #: src/gpodder/gtkui/model.py:625 msgid "Subscription paused" msgstr "Harpidetza pausarazita" #: src/gpodder/gtkui/shownotes.py:118 #, fuzzy msgid "Please select an episode" msgstr "Hautatu atalak" #: src/gpodder/gtkui/interface/addpodcast.py:74 msgid "Nothing to paste." msgstr "Ez dago zer itsatsirik." #: src/gpodder/gtkui/interface/addpodcast.py:74 msgid "Clipboard is empty" msgstr "Arbela hutsik dago" #: src/gpodder/gtkui/interface/common.py:160 msgid "Username" msgstr "Erabiltzaile-izena" #: src/gpodder/gtkui/interface/common.py:163 msgid "New user" msgstr "Erabiltzaile berria" #: src/gpodder/gtkui/interface/common.py:170 msgid "Login" msgstr "Saioa hasi" #: src/gpodder/gtkui/interface/common.py:172 msgid "Authentication required" msgstr "Autentifikazioa beharrezkoa da" #: src/gpodder/gtkui/interface/common.py:203 msgid "Password" msgstr "Pasahitza" #: src/gpodder/gtkui/interface/common.py:225 msgid "Select destination" msgstr "Hautatu helburua" #: src/gpodder/gtkui/interface/configeditor.py:34 msgid "Setting" msgstr "Ezarpena" #: src/gpodder/gtkui/interface/configeditor.py:41 msgid "Set to" msgstr "Ezarri hona" #: src/gpodder/gtkui/interface/configeditor.py:81 #, python-format msgid "Cannot set %(field)s to %(value)s. Needed data type: %(datatype)s" msgstr "" "Ezin izan da %(field)s-n %(value)s ezarri. Beharrezko datu mota: %(datatype)s" #: src/gpodder/gtkui/interface/configeditor.py:85 msgid "Error setting option" msgstr "Errorea aukera ezartzean" #: src/gpodder/gtkui/desktop/channel.py:100 msgid "Add section" msgstr "Gehitu saila" #: src/gpodder/gtkui/desktop/channel.py:100 msgid "New section:" msgstr "Sail berria:" #: src/gpodder/gtkui/desktop/channel.py:133 msgid "Select new podcast cover artwork" msgstr "Hautatu podcast-aren azal berria" #: src/gpodder/gtkui/desktop/channel.py:161 msgid "You can only drop a single image or URL here." msgstr "Irudi edo URL bakarra jaregin dezakezu hemen." #: src/gpodder/gtkui/desktop/channel.py:161 #: src/gpodder/gtkui/desktop/channel.py:171 msgid "Drag and drop" msgstr "Arrastatu eta jaregin" #: src/gpodder/gtkui/desktop/channel.py:171 msgid "You can only drop local files and http:// URLs here." msgstr "Fitxategi lokal eta http:// URL-ak soilik jaregin ditzazkezu hemen." #: src/gpodder/gtkui/desktop/deviceplaylist.py:98 #, fuzzy, python-format msgid "Folder %s could not be created." msgstr "%(url)s-eko jarioa ezin izan da eguneratu." #: src/gpodder/gtkui/desktop/deviceplaylist.py:98 #, fuzzy msgid "Error writing playlist" msgstr "Errorea erreproduzitzailea irekitzean" #: src/gpodder/gtkui/desktop/episodeselector.py:288 #: share/gpodder/ui/gtk/gpodderepisodeselector.ui.h:2 msgid "Select all" msgstr "Hautatu guztiak" #: src/gpodder/gtkui/desktop/episodeselector.py:292 #: share/gpodder/ui/gtk/gpodderepisodeselector.ui.h:3 msgid "Select none" msgstr "Bat ere ez hautatu" #: src/gpodder/gtkui/desktop/episodeselector.py:324 msgid "Nothing selected" msgstr "Ez dago ezer hautatuta" #: src/gpodder/gtkui/desktop/episodeselector.py:325 #, python-format msgid "%(count)d episode" msgid_plural "%(count)d episodes" msgstr[0] "Atal %(count)d" msgstr[1] "%(count)d atal" #: src/gpodder/gtkui/desktop/episodeselector.py:327 #, python-format msgid "size: %s" msgstr "tamaina: %s" #: src/gpodder/gtkui/desktop/podcastdirectory.py:238 #, fuzzy msgid "Loading podcasts" msgstr "Podcast-ak gehitzen" #: src/gpodder/gtkui/desktop/podcastdirectory.py:239 #, fuzzy msgid "Please wait while the podcast list is downloaded" msgstr "Mesedez itxaron podcast-a ezabatu bitartean" #: src/gpodder/gtkui/desktop/preferences.py:51 #: src/gpodder/gtkui/desktop/preferences.py:93 msgid "Do nothing" msgstr "Ez egin ezer" #: src/gpodder/gtkui/desktop/preferences.py:52 msgid "Show episode list" msgstr "Bistaratu atal zerrenda" #: src/gpodder/gtkui/desktop/preferences.py:53 msgid "Add to download list" msgstr "Gehitu deskarga zerrendara" #: src/gpodder/gtkui/desktop/preferences.py:54 msgid "Download immediately" msgstr "Deskargatu berehala" #: src/gpodder/gtkui/desktop/preferences.py:72 msgid "None" msgstr "Bat ere ez" #: src/gpodder/gtkui/desktop/preferences.py:73 msgid "iPod" msgstr "" #: src/gpodder/gtkui/desktop/preferences.py:74 msgid "Filesystem-based" msgstr "Fitxategi-sisteman oinarritua" #: src/gpodder/gtkui/desktop/preferences.py:94 msgid "Mark as played" msgstr "Markatu erreproduzituta bezala" #: src/gpodder/gtkui/desktop/preferences.py:95 msgid "Delete from gPodder" msgstr "Ezabatu gPodder-etik" #: src/gpodder/gtkui/desktop/preferences.py:123 #, python-format msgid "Custom (%(format_ids)s)" msgstr "Pertsonalizatua (%(format_ids)s)" #: src/gpodder/gtkui/desktop/preferences.py:318 msgid "Name" msgstr "Izena" #: src/gpodder/gtkui/desktop/preferences.py:369 #, fuzzy msgid "Documentation" msgstr "Iraupena" #: src/gpodder/gtkui/desktop/preferences.py:374 #, fuzzy msgid "Extension info" msgstr "Hedapen moduluaren informazioa" #: src/gpodder/gtkui/desktop/preferences.py:379 msgid "Support the author" msgstr "" #: src/gpodder/gtkui/desktop/preferences.py:413 msgid "Extension cannot be activated" msgstr "Ezin da hedapena aktibatu" #: src/gpodder/gtkui/desktop/preferences.py:426 msgid "Extension module info" msgstr "Hedapen moduluaren informazioa" #: src/gpodder/gtkui/desktop/preferences.py:463 msgid "Configure audio player" msgstr "Konfiguratu audio erreproduzitzailea" #: src/gpodder/gtkui/desktop/preferences.py:464 #: src/gpodder/gtkui/desktop/preferences.py:474 msgid "Command:" msgstr "Komandoa:" #: src/gpodder/gtkui/desktop/preferences.py:473 msgid "Configure video player" msgstr "Konfiguratu bideo erreproduzitzailea" #: src/gpodder/gtkui/desktop/preferences.py:485 #: src/gpodder/gtkui/desktop/preferences.py:503 msgid "manually" msgstr "eskuz" #: src/gpodder/gtkui/desktop/preferences.py:505 #, python-format msgid "after %(count)d day" msgid_plural "after %(count)d days" msgstr[0] "egun %(count)d geroago" msgstr[1] "%(count)d egun geroago" #: src/gpodder/gtkui/desktop/preferences.py:541 msgid "Replace subscription list on server" msgstr "Ordezkatu zerbitzariko harpidetza zerrenda" #: src/gpodder/gtkui/desktop/preferences.py:542 msgid "" "Remote podcasts that have not been added locally will be removed on the " "server. Continue?" msgstr "Lokalean gehitu ez diren urruneko podcast-ak ezabatuko dira. Jarraitu?" #: src/gpodder/gtkui/desktop/preferences.py:621 msgid "Select folder for mount point" msgstr "Hautatu karpeta muntaketa-punturako" #: src/gpodder/gtkui/desktop/preferences.py:638 #, fuzzy msgid "Select folder for playlists" msgstr "Hautatu karpeta muntaketa-punturako" #: src/gpodder/gtkui/desktop/sync.py:86 msgid "No device configured" msgstr "Gailurik ez konfiguratuta" #: src/gpodder/gtkui/desktop/sync.py:87 msgid "Please set up your device in the preferences dialog." msgstr "Mesedez konfiguratu zure gailua hobespenak elkarrizketa-koadroan." #: src/gpodder/gtkui/desktop/sync.py:91 msgid "Cannot open device" msgstr "Ezin da gailua ireki" #: src/gpodder/gtkui/desktop/sync.py:92 msgid "Please check the settings in the preferences dialog." msgstr "Mesedez egiaztatu ezarpenak hobespenak elkarrizketa-koadroan." #: src/gpodder/gtkui/desktop/sync.py:139 msgid "Not enough space left on device" msgstr "Ez dago leku libre nahikorik gailuan" #: src/gpodder/gtkui/desktop/sync.py:140 #, python-format msgid "" "Additional free space required: %(required_space)s\n" "Do you want to continue?" msgstr "" "Leku libre gehiago behar da: %(required_space)s\n" "Jarraitu nahi duzu?" #: src/gpodder/gtkui/desktop/sync.py:199 #, fuzzy msgid "Update successful" msgstr "Zerrenda behar bezala igo da." #: src/gpodder/gtkui/desktop/sync.py:200 msgid "The playlist on your MP3 player has been updated." msgstr "" #: src/gpodder/gtkui/desktop/sync.py:274 msgid "Episodes have been deleted on device" msgstr "" #: src/gpodder/gtkui/desktop/sync.py:285 #, fuzzy msgid "Error writing playlist files" msgstr "Errorea fitxategia bihurtzean." #: src/gpodder/plugins/soundcloud.py:154 msgid "Unknown track" msgstr "Pista ezezaguna" #: src/gpodder/plugins/soundcloud.py:181 #, python-format msgid "%s on Soundcloud" msgstr "%s Soundcloud-en" #: src/gpodder/plugins/soundcloud.py:190 #, python-format msgid "Tracks published by %s on Soundcloud." msgstr "%s-k Soundcloud-en argitaratutako pistak." #: src/gpodder/plugins/soundcloud.py:217 #, python-format msgid "%s's favorites on Soundcloud" msgstr "%s-ren gogokoak Soundcloud-en" #: src/gpodder/plugins/soundcloud.py:223 #, python-format msgid "Tracks favorited by %s on Soundcloud." msgstr "%s-k Soundcloud-en gustoko dituen pistak." #: share/gpodder/extensions/audio_converter.py:20 #, fuzzy msgid "Convert audio files" msgstr "Bihurketak huts egin du" #: share/gpodder/extensions/audio_converter.py:21 #, fuzzy msgid "Transcode audio files to mp3/ogg" msgstr "Transkodetu .m4a fitxategiak .mp3 edo .ogg-era ffmpeg erabiliz" #: share/gpodder/extensions/audio_converter.py:84 #: share/gpodder/extensions/video_converter.py:86 #, python-format msgid "Convert to %(format)s" msgstr "Bihurtu %(format)s-(e)ra" #: share/gpodder/extensions/audio_converter.py:111 #: share/gpodder/extensions/rockbox_convert2mp4.py:65 #: share/gpodder/extensions/video_converter.py:111 msgid "File converted" msgstr "Fitxategia bihurtuta" #: share/gpodder/extensions/audio_converter.py:114 #: share/gpodder/extensions/video_converter.py:114 msgid "Conversion failed" msgstr "Bihurketak huts egin du" #: share/gpodder/extensions/concatenate_videos.py:20 #: share/gpodder/extensions/concatenate_videos.py:100 #, fuzzy msgid "Concatenate videos" msgstr "Bihurketak huts egin du" #: share/gpodder/extensions/concatenate_videos.py:21 msgid "Add a context menu item for concatenating multiple videos" msgstr "" #: share/gpodder/extensions/concatenate_videos.py:37 msgid "Save video" msgstr "" #: share/gpodder/extensions/concatenate_videos.py:66 #, fuzzy msgid "Concatenating video files" msgstr "Bihurketak huts egin du" #: share/gpodder/extensions/concatenate_videos.py:67 #, python-format msgid "Writing %(filename)s" msgstr "" #: share/gpodder/extensions/concatenate_videos.py:78 msgid "Videos successfully converted" msgstr "" #: share/gpodder/extensions/concatenate_videos.py:79 #, fuzzy msgid "Error converting videos" msgstr "Errorea fitxategia bihurtzean." #: share/gpodder/extensions/concatenate_videos.py:80 msgid "Concatenation result" msgstr "" #: share/gpodder/extensions/enqueue_in_mediaplayer.py:16 msgid "Enqueue in media players" msgstr "" #: share/gpodder/extensions/enqueue_in_mediaplayer.py:17 msgid "" "Add a context menu item for enqueueing episodes in installed media players" msgstr "" #: share/gpodder/extensions/enqueue_in_mediaplayer.py:35 msgid "Enqueue in" msgstr "" #: share/gpodder/extensions/episode_website_context_menu.py:14 msgid "\"Open website\" episode context menu" msgstr "" #: share/gpodder/extensions/episode_website_context_menu.py:15 msgid "Add a context menu item for opening the website of an episode" msgstr "" #: share/gpodder/extensions/episode_website_context_menu.py:30 #, fuzzy msgid "Open website" msgstr "Webgunea:" #: share/gpodder/extensions/gtk_statusicon.py:14 msgid "Gtk Status Icon" msgstr "Gtk egoera-ikonoa" #: share/gpodder/extensions/gtk_statusicon.py:15 msgid "Show a status icon for Gtk-based Desktops." msgstr "Erakutsi egoera-ikono bat Gtk-n oinarritutako mahaigainetan." #: share/gpodder/extensions/minimize_on_start.py:10 msgid "Minimize on start" msgstr "Minimizatu abioan" #: share/gpodder/extensions/minimize_on_start.py:11 msgid "Minimizes the gPodder window on startup." msgstr "gPodder leihoa minimizatzen du abioan" #: share/gpodder/extensions/mpris-listener.py:33 msgid "MPRIS Listener" msgstr "" #: share/gpodder/extensions/mpris-listener.py:34 msgid "Convert MPRIS notifications to gPodder Media Player D-Bus API" msgstr "" #: share/gpodder/extensions/normalize_audio.py:21 msgid "Normalize audio with re-encoding" msgstr "Normalizatu audioa berkodetzearekin" #: share/gpodder/extensions/normalize_audio.py:22 msgid "Normalize the volume of audio files with normalize-audio" msgstr "Normalizatu audio fitxategien bolumena normalize-audio-rekin" #: share/gpodder/extensions/normalize_audio.py:99 msgid "File normalized" msgstr "Fitxategia normalizatuta" #: share/gpodder/extensions/rename_download.py:16 msgid "Rename episodes after download" msgstr "Berrizendatu atalak deskargatu ondoren" #: share/gpodder/extensions/rename_download.py:17 msgid "Rename episodes to \".\" on download" msgstr "" "Berrizendatu atalak deskargatzean honela: \".\"" #: share/gpodder/extensions/rm_ogg_cover.py:37 msgid "Remove cover art from OGG files" msgstr "Kendu azalak OGG fitxategietatik" #: share/gpodder/extensions/rm_ogg_cover.py:38 msgid "removes coverart from all downloaded ogg files" msgstr "azalak kentzen ditu deskargatutako ogg fitxategi guztietatik" #: share/gpodder/extensions/rm_ogg_cover.py:66 msgid "Remove cover art" msgstr "Kendu azalak" #: share/gpodder/extensions/rockbox_convert2mp4.py:26 msgid "Convert video files to MP4 for Rockbox" msgstr "Bihurtu bideo fitxategiak Rockbox-entzako MP4-ra" #: share/gpodder/extensions/rockbox_convert2mp4.py:27 msgid "Converts all videos to a Rockbox-compatible format" msgstr "Rockbox-ekin bateragarria den formatura bihurtzen ditu bideo guztiak" #: share/gpodder/extensions/sonos.py:19 share/gpodder/extensions/sonos.py:78 msgid "Stream to Sonos" msgstr "" #: share/gpodder/extensions/sonos.py:20 msgid "Stream podcasts to Sonos speakers" msgstr "" #: share/gpodder/extensions/tagging.py:45 msgid "Tag downloaded files using Mutagen" msgstr "Etiketatu deskargatutako fitxategiak Mutagen-ekin" #: share/gpodder/extensions/tagging.py:46 msgid "Add episode and podcast titles to MP3/OGG tags" msgstr "Gehitu atal eta podcast-aren izenburuak MP3/OGG etiketei" #: share/gpodder/extensions/taskbar_progress.py:28 #, fuzzy msgid "Show download progress on the taskbar" msgstr "Erakutsi deskargen aurrerapena Unity Abiarazlearen ikonoan." #: share/gpodder/extensions/taskbar_progress.py:29 msgid "Displays the progress on the Windows taskbar." msgstr "" #: share/gpodder/extensions/ted_subtitles.py:16 msgid "Subtitle Downloader for TED Talks" msgstr "TED Talks-entzako azpitituluen deskargatzailea" #: share/gpodder/extensions/ted_subtitles.py:17 msgid "Downloads .srt subtitles for TED Talks Videos" msgstr "TED Talks bideoentzako .srt azpitituluak deskargatzen ditu" #: share/gpodder/extensions/ubuntu_appindicator.py:10 msgid "Ubuntu App Indicator" msgstr "Ubuntu Aplikazio Adierazlea" #: share/gpodder/extensions/ubuntu_appindicator.py:11 msgid "Show a status indicator in the top bar." msgstr "Egoera-adierazle bat erakusten du goiko barran." #: share/gpodder/extensions/ubuntu_appindicator.py:47 msgid "Show main window" msgstr "Erakutsi leiho nagusia" #: share/gpodder/extensions/ubuntu_appindicator.py:57 #: share/gpodder/ui/gtk/gpodder.ui.h:6 msgid "Quit" msgstr "Irten" #: share/gpodder/extensions/ubuntu_unity.py:10 msgid "Ubuntu Unity Integration" msgstr "Ubuntu Unity Integrazioa" #: share/gpodder/extensions/ubuntu_unity.py:11 msgid "Show download progress in the Unity Launcher icon." msgstr "Erakutsi deskargen aurrerapena Unity Abiarazlearen ikonoan." #: share/gpodder/extensions/update_feeds_on_startup.py:14 msgid "Search for new episodes on startup" msgstr "Bilatu atal berriak abioan" #: share/gpodder/extensions/update_feeds_on_startup.py:15 msgid "Starts the search for new episodes on startup" msgstr "Atal berrien bilaketa hasten du abiaraztean" #: share/gpodder/extensions/video_converter.py:22 #, fuzzy msgid "Convert video files" msgstr "Bihurketak huts egin du" #: share/gpodder/extensions/video_converter.py:23 #, fuzzy msgid "Transcode video files to avi/mp4/m4v" msgstr "Transkodetu .m4a fitxategiak .mp3 edo .ogg-era ffmpeg erabiliz" #: share/gpodder/ui/gtk/gpodderaddpodcast.ui.h:1 msgid "Add a new podcast" msgstr "Gehitu podcast berri bat" #: share/gpodder/ui/gtk/gpodderaddpodcast.ui.h:2 msgid "URL:" msgstr "URL:" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:1 msgid "gPodder Podcast Editor" msgstr "gPodder Podcast Editorea" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:2 msgid "Section:" msgstr "Saila:" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:3 msgid "Disable feed updates (pause subscription)" msgstr "Desgaitu jario eguneraketak (harpidetza pausarazi)" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:4 msgid "Synchronize to MP3 player devices" msgstr "Sinkronizatu MP3 gailuekin" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:5 msgid "Strategy:" msgstr "Estrategia:" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:6 #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:6 msgid "General" msgstr "Orokorra" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:7 msgid "HTTP/FTP Authentication" msgstr "HTTP/FTP Autentifikazioa" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:8 #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:13 msgid "Username:" msgstr "Erabiltzaile-izena:" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:9 #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:14 msgid "Password:" msgstr "Pasahitza:" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:10 msgid "Locations" msgstr "Kokalekuak" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:11 msgid "Download to:" msgstr "Deskargatu hona:" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:12 msgid "Website:" msgstr "Webgunea:" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:13 msgid "website label" msgstr "webgune etiketa" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:14 msgid "Advanced" msgstr "Aurreratua" #: share/gpodder/ui/gtk/gpodderconfigeditor.ui.h:1 msgid "gPodder Configuration Editor" msgstr "gPodder Konfigurazio Editorea" #: share/gpodder/ui/gtk/gpodderconfigeditor.ui.h:2 msgid "Search for:" msgstr "Bilatu hau:" #: share/gpodder/ui/gtk/gpodderconfigeditor.ui.h:3 msgid "Show All" msgstr "Bistaratu guztiak" #: share/gpodder/ui/gtk/gpodderepisodeselector.ui.h:1 msgid "Select episodes" msgstr "Hautatu atalak" #: share/gpodder/ui/gtk/gpodderpodcastdirectory.ui.h:1 msgid "Find new podcasts" msgstr "Aurkitu podcast berriak" #: share/gpodder/ui/gtk/gpodderpodcastdirectory.ui.h:2 msgid "Select All" msgstr "Hautatu guztiak" #: share/gpodder/ui/gtk/gpodderpodcastdirectory.ui.h:3 msgid "Select None" msgstr "Ez hautatu ezer" #: share/gpodder/ui/gtk/gpodderpodcastdirectory.ui.h:4 msgid "label" msgstr "" #: share/gpodder/ui/gtk/gpodderpodcastdirectory.ui.h:5 msgid "..." msgstr "" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:1 #: share/gpodder/ui/gtk/gpodder.ui.h:5 msgid "Preferences" msgstr "Hobespenak" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:2 msgid "Audio player:" msgstr "Audio erreproduzitzailea:" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:3 msgid "Video player:" msgstr "Bideo erreproduzitzailea:" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:4 msgid "\"All episodes\" in podcast list" msgstr "Podcast zerrendako \"Atal guztiak\"" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:5 msgid "Use sections for podcast list" msgstr "Erabili sailak podcast zerrendan" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:7 #, fuzzy msgid "Preferred YouTube format:" msgstr "Bideo-formatu hobetsia:" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:8 msgid "YouTube API key (v3):" msgstr "" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:9 #, fuzzy msgid "Preferred Vimeo format:" msgstr "Bideo-formatu hobetsia:" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:11 msgid "Extensions" msgstr "Hedapenak" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:12 msgid "Synchronize subscriptions and episode actions" msgstr "Sinkronizatu harpidetzak eta atal-ekintzak" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:15 msgid "Replace list on server with local subscriptions" msgstr "Ordezkatu zerbitzariko zerrenda harpidetza lokalekin" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:16 msgid "Device name:" msgstr "Gailuaren izena:" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:17 msgid "gpodder.net" msgstr "gpodder.net" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:18 msgid "Update interval:" msgstr "Eguneraketa maiztasuna:" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:19 msgid "Maximum number of episodes per podcast:" msgstr "Atal kopuru maximoa podcast-eko:" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:20 msgid "When new episodes are found:" msgstr "Atal berriak aurkitzean:" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:21 msgid "Updating" msgstr "Eguneratzen" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:22 msgid "Delete played episodes:" msgstr "Ezabatu erreproduzitutako atalak:" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:23 msgid "Remove played episodes even if unfinished" msgstr "Ezabatu erreproduzitutako atalak bukatu gabe badaude ere" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:24 msgid "Also remove unplayed episodes" msgstr "Ezabatu baita erreproduzitu gabeko atalak" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:25 msgid "Clean-up" msgstr "Garbitu" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:26 msgid "Device type:" msgstr "Gailu mota:" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:27 msgid "Mountpoint:" msgstr "Muntaketa-puntua:" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:28 msgid "After syncing an episode:" msgstr "Atal bat sinkronizatu ondoren:" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:29 #, fuzzy msgid "Create playlists on device" msgstr "Ordezkatu zerbitzariko zerrenda" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:30 #, fuzzy msgid "Playlists Folder:" msgstr "Erreprodukzio-zerrenda hutsik" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:31 msgid "Remove episodes deleted on device from gPodder" msgstr "" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:32 msgid "Only sync unplayed episodes" msgstr "Sinkronizatu soilik erreproduzitu gabeko atalak" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:33 msgid "Devices" msgstr "Gailuak" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:34 msgid "Edit config" msgstr "Editatu konfigurazioa" #: share/gpodder/ui/gtk/gpodder.ui.h:1 msgid "_Podcasts" msgstr "_Podcast-ak" #: share/gpodder/ui/gtk/gpodder.ui.h:2 msgid "Check for new episodes" msgstr "Egiaztatu atal berririk badagoen" #: share/gpodder/ui/gtk/gpodder.ui.h:3 msgid "Download new episodes" msgstr "Deskargatu atal berriak" #: share/gpodder/ui/gtk/gpodder.ui.h:7 msgid "_Subscriptions" msgstr "_Harpidetzak" #: share/gpodder/ui/gtk/gpodder.ui.h:8 msgid "Discover new podcasts" msgstr "Aurkitu podcast berriak" #: share/gpodder/ui/gtk/gpodder.ui.h:9 msgid "Add podcast via URL" msgstr "Gehitu podcast-a URL bidez" #: share/gpodder/ui/gtk/gpodder.ui.h:11 msgid "Unsubscribe" msgstr "Harpidetza kendu" #: share/gpodder/ui/gtk/gpodder.ui.h:14 msgid "Import from OPML file" msgstr "Inportatu OPML fitxategitik" #: share/gpodder/ui/gtk/gpodder.ui.h:15 msgid "Export to OPML file" msgstr "Esportatu OPML fitxategira" #: share/gpodder/ui/gtk/gpodder.ui.h:16 msgid "Go to gpodder.net" msgstr "Joan gpodder.net-era" #: share/gpodder/ui/gtk/gpodder.ui.h:17 msgid "_Episodes" msgstr "_Atalak" #: share/gpodder/ui/gtk/gpodder.ui.h:18 msgid "Play" msgstr "Erreproduzitu" #: share/gpodder/ui/gtk/gpodder.ui.h:19 msgid "Open" msgstr "Ireki" #: share/gpodder/ui/gtk/gpodder.ui.h:22 msgid "Delete" msgstr "Ezabatu" #: share/gpodder/ui/gtk/gpodder.ui.h:23 msgid "Toggle new status" msgstr "Txandakatu egoera berria" #: share/gpodder/ui/gtk/gpodder.ui.h:24 msgid "Change delete lock" msgstr "Aldatu ezabaketa blokeoa" #: share/gpodder/ui/gtk/gpodder.ui.h:26 msgid "E_xtras" msgstr "_Gehigarriak" #: share/gpodder/ui/gtk/gpodder.ui.h:27 msgid "Sync to device" msgstr "Sinkronizatu gailua" #: share/gpodder/ui/gtk/gpodder.ui.h:28 #, fuzzy msgid "Update YouTube subscriptions" msgstr "Ez dago harpidetzarik" #: share/gpodder/ui/gtk/gpodder.ui.h:29 msgid "_View" msgstr "_Ikusi" #: share/gpodder/ui/gtk/gpodder.ui.h:30 msgid "Toolbar" msgstr "Tresna-barra" #: share/gpodder/ui/gtk/gpodder.ui.h:31 msgid "Episode descriptions" msgstr "Atalen deskribapenak" #: share/gpodder/ui/gtk/gpodder.ui.h:33 msgid "Hide deleted episodes" msgstr "Ezkutatu ezabatutako atalak" #: share/gpodder/ui/gtk/gpodder.ui.h:34 msgid "Downloaded episodes" msgstr "Deskargatutako atalak" #: share/gpodder/ui/gtk/gpodder.ui.h:35 msgid "Unplayed episodes" msgstr "Erreproduzitu gabeko atalak" #: share/gpodder/ui/gtk/gpodder.ui.h:36 msgid "Hide podcasts without episodes" msgstr "Ezkutatu atalik gabeko podcast-ak" #: share/gpodder/ui/gtk/gpodder.ui.h:37 msgid "_Help" msgstr "_Laguntza" #: share/gpodder/ui/gtk/gpodder.ui.h:38 msgid "User manual" msgstr "Erabiltzaile-gida" #: share/gpodder/ui/gtk/gpodder.ui.h:39 msgid "Software updates" msgstr "Software eguneraketak" #: share/gpodder/ui/gtk/gpodder.ui.h:40 msgid "Filter:" msgstr "Iragazkia:" #: share/gpodder/ui/gtk/gpodder.ui.h:41 msgid "Podcasts" msgstr "Podcast-ak" #: share/gpodder/ui/gtk/gpodder.ui.h:42 msgid "Limit rate to" msgstr "Mugatu deskarga-abiadura:" #: share/gpodder/ui/gtk/gpodder.ui.h:43 msgid "KiB/s" msgstr "KiB/s" #: share/gpodder/ui/gtk/gpodder.ui.h:44 msgid "Limit downloads to" msgstr "Mugatu deskarga-kopurua:" #: share/gpodder/ui/gtk/gpodderwelcome.ui.h:2 msgid "Welcome to gPodder" msgstr "Ongietorri gPodder-era" #: share/gpodder/ui/gtk/gpodderwelcome.ui.h:3 msgid "Your podcast list is empty." msgstr "Zure podcast zerrenda hutsik dago." #: share/gpodder/ui/gtk/gpodderwelcome.ui.h:4 msgid "Choose from a list of example podcasts" msgstr "Hautatu adibidetarako podcast zerrendatik" #: share/gpodder/ui/gtk/gpodderwelcome.ui.h:5 msgid "Add a podcast by entering its URL" msgstr "Gehitu podcast bat bere URL-a sartuz" #: share/gpodder/ui/gtk/gpodderwelcome.ui.h:6 msgid "Restore my subscriptions from gpodder.net" msgstr "Leheneratu nire harpidetzak gpodder.net-etik" #: bin/gpo:266 msgid "Podcast update requested by extensions." msgstr "Hedapenek eskatutako podcast eguneraketa." #: bin/gpo:270 msgid "Episode download requested by extensions." msgstr "Hedapenek eskatutako atalen deskarga." #: bin/gpo:323 #, python-format msgid "Invalid url: %s" msgstr "url baliogabea: %s" #: bin/gpo:340 bin/gpo:416 bin/gpo:450 bin/gpo:582 bin/gpo:597 bin/gpo:717 #, python-format msgid "You are not subscribed to %s." msgstr "Ez zaude %s-(e)ra harpidetuta" #: bin/gpo:346 #, fuzzy, python-format msgid "Already subscribed to %s." msgstr "Ezin da harpidetu %s-(e)ra" #: bin/gpo:352 #, python-format msgid "Cannot subscribe to %s." msgstr "Ezin da harpidetu %s-(e)ra" #: bin/gpo:368 #, python-format msgid "Successfully added %s." msgstr "Behar bezala gehitu da %s." #: bin/gpo:386 msgid "This configuration option does not exist." msgstr "Konfigurazio aukera hau ez da existitzen." #: bin/gpo:390 msgid "Can only set leaf configuration nodes." msgstr "Orri konfigurazio nodoak soilik ezarri daitezke." #: bin/gpo:404 #, python-format msgid "Renamed %(old_title)s to %(new_title)s." msgstr "%(old_title)s berrizendatuta %(new_title)s bezala." #: bin/gpo:420 #, python-format msgid "Unsubscribed from %s." msgstr "%s-(e)tik harpidetza kenduta." #: bin/gpo:494 msgid "Updates disabled" msgstr "Eguneraketak desgaituta" #: bin/gpo:505 #, python-format msgid "%(count)d new episode" msgid_plural "%(count)d new episodes" msgstr[0] "Atal berri %(count)d" msgstr[1] "%(count)d atal berri" #: bin/gpo:511 msgid "Checking for new episodes" msgstr "Atal berrien bila" #: bin/gpo:520 #, python-format msgid "Skipping %(podcast)s" msgstr "%(podcast)s saltatzen" #: bin/gpo:588 #, python-format msgid "Disabling feed update from %s." msgstr "%s-(e)ko jario eguneraketa desgaitzen." #: bin/gpo:603 #, python-format msgid "Enabling feed update from %s." msgstr "%s-(e)ko jario eguneraketa gaitzen." #: bin/gpo:616 #, python-format msgid "Please register a YouTube API key and set it using %(command)s." msgstr "" #: bin/gpo:643 #, fuzzy, python-format msgid "Changing: %(old_url)s => %(new_url)s" msgstr "URL-a aldatu da %(old_url)s-(e)tik %(new_url)s-(e)ra." #: bin/gpo:653 #, fuzzy msgid "Nothing to fix" msgstr "Ez dago esportatzeko ezer" #: bin/gpo:672 msgid "No podcasts found." msgstr "Ez da podcast-ik aurkitu." #: bin/gpo:686 msgid "Enter index to subscribe, ? for list" msgstr "Sartu indizea harpidetzeko, ? zerrendarako" #: bin/gpo:700 bin/gpo:704 msgid "Invalid value." msgstr "Baliogabeko balioa." #: bin/gpo:721 #, python-format msgid "Invalid URL: %s" msgstr "URL baliogabea: %s" #: bin/gpo:724 #, python-format msgid "Changed URL from %(old_url)s to %(new_url)s." msgstr "URL-a aldatu da %(old_url)s-(e)tik %(new_url)s-(e)ra." #: bin/gpo:782 #, python-format msgid "Syntax error: %(error)s" msgstr "Sintaxi errorea: %(error)s" #: bin/gpo:876 #, fuzzy msgid "Ambiguous command. Did you mean.." msgstr "Zalantzazko komandoa. Hau esan nahi al zenuen..." #: bin/gpo:880 msgid "The requested function is not available." msgstr "Eskatutako funtzioa ez dago eskuragarri." #: bin/gpodder:105 #, fuzzy msgid "print logging output on the console" msgstr "Inprimatu arazketa irteera stdout-era" #: bin/gpodder:108 #, fuzzy msgid "subscribe to the feed at URL" msgstr "Harpidetu zehaztutako URL-ra" #: bin/gpodder:113 msgid "Mac OS X application process number" msgstr "Mac OS X aplikazio prozesu zenbakia" #: share/applications/gpodder.desktop.in.h:2 msgid "gPodder Podcast Client" msgstr "gPodder Podcast Bezeroa" #: share/applications/gpodder.desktop.in.h:3 msgid "Podcast Client" msgstr "Podcast Bezeroa" #: share/applications/gpodder.desktop.in.h:4 msgid "Subscribe to audio and video content from the web" msgstr "Harpidetu sareko audio eta bideo edukira" #: share/applications/gpodder-url-handler.desktop.in.h:1 #, fuzzy msgid "gPodder (subscribe to feed)" msgstr "Harpidetu zehaztutako URL-ra" gpodder-3.9.0/po/es_ES.po0000644000016000001710000016703512654461625016264 0ustar jenkinsjenkins00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # # Translators: # Adolfo Jayme Barrientos , 2011-2013. # Marco Antonio Frias ButrУГn , 2012. # SimУГ Albert i Beltran , 2012. msgid "" msgstr "" "Project-Id-Version: gPodder\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2016-02-03 20:31+0000\n" "PO-Revision-Date: 2013-03-05 15:01+0000\n" "Last-Translator: Thomas Perl \n" "Language-Team: Spanish (Spain) (http://www.transifex.com/projects/p/gpodder/" "language/es_ES/)\n" "Language: es_ES\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" #: src/gpodder/config.py:55 #, python-format msgid "gPodder on %s" msgstr "gPodder en %s" #: src/gpodder/directory.py:95 #, fuzzy msgid "gpodder.net search" msgstr "gpodder.net" #: src/gpodder/directory.py:104 #, fuzzy msgid "OPML from web" msgstr "Archivos OPML" #: src/gpodder/directory.py:113 #, fuzzy msgid "OPML file" msgstr "Archivos OPML" #: src/gpodder/directory.py:122 share/gpodder/ui/gtk/gpodderwelcome.ui.h:1 msgid "Getting started" msgstr "Primeros pasos" #: src/gpodder/directory.py:131 #, fuzzy msgid "gpodder.net Top 50" msgstr "gpodder.net" #: src/gpodder/directory.py:140 #, fuzzy msgid "gpodder.net Tags" msgstr "gpodder.net" #: src/gpodder/directory.py:152 #, fuzzy msgid "Soundcloud search" msgstr "%s en Soundcloud" #: src/gpodder/directory.py:165 #, fuzzy msgid "Imported OPML file" msgstr "Importar desde archivo OPML" #: src/gpodder/download.py:329 msgid "Wrong username/password" msgstr "Nombre de usuario/contraseУБa incorrecto" #: src/gpodder/download.py:527 src/gpodder/sync.py:924 msgid "Added" msgstr "AУБadido" #: src/gpodder/download.py:527 src/gpodder/sync.py:924 msgid "Queued" msgstr "En cola" #: src/gpodder/download.py:527 src/gpodder/gtkui/model.py:327 msgid "Downloading" msgstr "Descargando" #: src/gpodder/download.py:528 src/gpodder/model.py:721 #: src/gpodder/sync.py:925 msgid "Finished" msgstr "Finalizado" #: src/gpodder/download.py:528 src/gpodder/sync.py:925 msgid "Failed" msgstr "Fallido" #: src/gpodder/download.py:528 src/gpodder/sync.py:925 msgid "Cancelled" msgstr "Cancelado" #: src/gpodder/download.py:528 src/gpodder/sync.py:925 msgid "Paused" msgstr "En pausa" #: src/gpodder/download.py:862 msgid "Missing content from server" msgstr "Falta el contenido del servidor" #: src/gpodder/download.py:868 #, python-format msgid "I/O Error: %(error)s: %(filename)s" msgstr "Error de E/S: %(error)s: %(filename)s" #: src/gpodder/download.py:875 #, python-format msgid "HTTP Error %(code)s: %(message)s" msgstr "Error HTTP %(code)s: %(message)s" #: src/gpodder/download.py:879 src/gpodder/sync.py:1081 #, python-format msgid "Error: %s" msgstr "Error: %s" #: src/gpodder/extensions.py:55 msgid "Desktop Integration" msgstr "IntegraciУГn con el escritorio" #: src/gpodder/extensions.py:56 msgid "Interface" msgstr "Interfaz" #: src/gpodder/extensions.py:57 msgid "Post download" msgstr "DespuУЉs de la descarga" #: src/gpodder/extensions.py:59 src/gpodder/model.py:779 #: src/gpodder/model.py:1225 msgid "Other" msgstr "Otros" #: src/gpodder/extensions.py:100 msgid "No description for this extension." msgstr "No hay descripciУГn para esta extensiУГn." #: src/gpodder/extensions.py:212 #, python-format msgid "Command not found: %(command)s" msgstr "Comando no encontrado: %(command)s" #: src/gpodder/extensions.py:228 #, python-format msgid "Need at least one of the following commands: %(list_of_commands)s" msgstr "" #: src/gpodder/extensions.py:265 #, python-format msgid "Python module not found: %(module)s" msgstr "MУГdulo Python no encontrado: %(module)s" #: src/gpodder/model.py:446 src/gpodder/plugins/soundcloud.py:156 msgid "No description available" msgstr "Sin descripciУГn disponible" #: src/gpodder/model.py:679 msgid "unknown" msgstr "desconocido" #: src/gpodder/model.py:746 msgid "Default" msgstr "Predeterminado" #: src/gpodder/model.py:747 msgid "Only keep latest" msgstr "Solo mantener los УКltimos" #: src/gpodder/model.py:1208 src/gpodder/model.py:1223 #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:10 msgid "Video" msgstr "VУ­deo" #: src/gpodder/model.py:1221 msgid "Audio" msgstr "Audio" #: src/gpodder/my.py:174 #, python-format msgid "Add %s" msgstr "AУБadir %s" #: src/gpodder/my.py:176 #, python-format msgid "Remove %s" msgstr "Quitar %s" #: src/gpodder/sync.py:196 msgid "Cancelled by user" msgstr "Cancelado por el usuario" #: src/gpodder/sync.py:199 msgid "Writing data to disk" msgstr "Escribiendo datos al disco" #: src/gpodder/sync.py:295 msgid "Opening iPod database" msgstr "Abriendo la base de datos del iPod" #: src/gpodder/sync.py:305 msgid "iPod opened" msgstr "iPod abierto" #: src/gpodder/sync.py:316 msgid "Saving iPod database" msgstr "Guardando la base de datos del iPod" #: src/gpodder/sync.py:321 msgid "Writing extended gtkpod database" msgstr "" #: src/gpodder/sync.py:397 src/gpodder/sync.py:680 src/gpodder/sync.py:874 #, python-format msgid "Removing %s" msgstr "Quitando %s" #: src/gpodder/sync.py:412 src/gpodder/sync.py:557 #, python-format msgid "Adding %s" msgstr "AУБadiendo %s" #: src/gpodder/sync.py:430 #, python-format msgid "Error copying %(episode)s: Not enough free space on %(mountpoint)s" msgstr "" #: src/gpodder/sync.py:515 msgid "Opening MP3 player" msgstr "Abriendo el reproductor de MP3" #: src/gpodder/sync.py:518 msgid "MP3 player opened" msgstr "Se abriУГ el reproductor de MP3" #: src/gpodder/sync.py:576 #, python-format msgid "" "Not enough space in %(path)s: %(free)s available, but need at least %(need)s" msgstr "" #: src/gpodder/sync.py:603 src/gpodder/sync.py:611 #, fuzzy, python-format msgid "Error opening %(filename)s: %(message)s" msgstr "Error al actualizar %(url)s: %(message)s" #: src/gpodder/sync.py:780 src/gpodder/sync.py:786 msgid "MTP device" msgstr "Dispositivo MTP" #: src/gpodder/sync.py:793 msgid "Opening the MTP device" msgstr "Abriendo el dispositivo MTP" #: src/gpodder/sync.py:803 #, python-format msgid "%s opened" msgstr "%s abierto" #: src/gpodder/sync.py:808 #, python-format msgid "Closing %s" msgstr "Cerrando %s" #: src/gpodder/sync.py:816 #, python-format msgid "%s closed" msgstr "%s cerrado" #: src/gpodder/sync.py:821 bin/gpo:708 #, python-format msgid "Adding %s..." msgstr "AУБadiendo %s..." #: src/gpodder/sync.py:924 msgid "Synchronizing" msgstr "Sincronizando" #: src/gpodder/util.py:429 #, python-format msgid "%(count)d day ago" msgid_plural "%(count)d days ago" msgstr[0] "Hace %(count)d dУ­a" msgstr[1] "Hace %(count)d dУ­as" #: src/gpodder/util.py:508 msgid "Today" msgstr "Hoy" #: src/gpodder/util.py:510 msgid "Yesterday" msgstr "Ayer" #: src/gpodder/util.py:553 src/gpodder/util.py:556 msgid "(unknown)" msgstr "(desconocido)" #: src/gpodder/util.py:1193 src/gpodder/util.py:1212 #, python-format msgid "%(count)d second" msgid_plural "%(count)d seconds" msgstr[0] "%(count)d segundo" msgstr[1] "%(count)d segundos" #: src/gpodder/util.py:1206 #, python-format msgid "%(count)d hour" msgid_plural "%(count)d hours" msgstr[0] "%(count)d hora" msgstr[1] "%(count)d horas" #: src/gpodder/util.py:1209 #, python-format msgid "%(count)d minute" msgid_plural "%(count)d minutes" msgstr[0] "%(count)d minuto" msgstr[1] "%(count)d minutos" #: src/gpodder/util.py:1215 msgid "and" msgstr "y" #: src/gpodder/gtkui/config.py:50 msgid "Integer" msgstr "Entero" #: src/gpodder/gtkui/config.py:52 msgid "Float" msgstr "Flotante" #: src/gpodder/gtkui/config.py:54 msgid "Boolean" msgstr "Booleano" #: src/gpodder/gtkui/config.py:56 msgid "String" msgstr "Cadena" #: src/gpodder/gtkui/desktopfile.py:70 #, python-format msgid "Command: %s" msgstr "Orden: %s" #: src/gpodder/gtkui/desktopfile.py:150 msgid "Default application" msgstr "AplicaciУГn predeterminada" #: src/gpodder/gtkui/main.py:205 share/applications/gpodder.desktop.in.h:1 msgid "gPodder" msgstr "gPodder" #: src/gpodder/gtkui/main.py:288 msgid "Loading incomplete downloads" msgstr "Cargando descargas incompletas" #: src/gpodder/gtkui/main.py:289 msgid "Some episodes have not finished downloading in a previous session." msgstr "" "Algunos episodios no se terminaron de descargar en una sesiУГn anterior." #: src/gpodder/gtkui/main.py:291 #, python-format msgid "%(count)d partial file" msgid_plural "%(count)d partial files" msgstr[0] "%(count)d archivo parcial" msgstr[1] "%(count)d archivos parciales" #: src/gpodder/gtkui/main.py:306 msgid "Resume all" msgstr "Continuar todo" #: src/gpodder/gtkui/main.py:316 msgid "Incomplete downloads from a previous session were found." msgstr "Se encontraron descargas incompletas de una sesiУГn anterior." #: src/gpodder/gtkui/main.py:414 msgid "Action" msgstr "AcciУГn" #: src/gpodder/gtkui/main.py:461 msgid "Confirm changes from gpodder.net" msgstr "Confirmar cambios de gpodder.net" #: src/gpodder/gtkui/main.py:462 msgid "Select the actions you want to carry out." msgstr "Seleccione las acciones que quiere realizar." #: src/gpodder/gtkui/main.py:502 msgid "Uploading subscriptions" msgstr "Subiendo suscripciones" #: src/gpodder/gtkui/main.py:503 msgid "Your subscriptions are being uploaded to the server." msgstr "Se estУЁn subiendo sus suscripciones al servidor." #: src/gpodder/gtkui/main.py:508 msgid "List uploaded successfully." msgstr "Lista subida correctamente." #: src/gpodder/gtkui/main.py:515 msgid "Error while uploading" msgstr "Error al subir" #: src/gpodder/gtkui/main.py:800 src/gpodder/gtkui/main.py:928 #: src/gpodder/gtkui/main.py:2622 src/gpodder/gtkui/main.py:2815 #: src/gpodder/gtkui/desktop/episodeselector.py:132 #: src/gpodder/gtkui/desktop/sync.py:270 msgid "Episode" msgstr "Episodio" #: src/gpodder/gtkui/main.py:819 msgid "Size" msgstr "TamaУБo" #: src/gpodder/gtkui/main.py:824 msgid "Duration" msgstr "DuraciУГn" #: src/gpodder/gtkui/main.py:828 msgid "Released" msgstr "Publicado" #: src/gpodder/gtkui/main.py:855 msgid "Visible columns" msgstr "Columnas visibles" #: src/gpodder/gtkui/main.py:948 src/gpodder/gtkui/main.py:1108 #: share/gpodder/ui/gtk/gpodder.ui.h:45 msgid "Progress" msgstr "Progreso" #: src/gpodder/gtkui/main.py:982 msgid "Loading episodes" msgstr "Cargando episodios" #: src/gpodder/gtkui/main.py:985 msgid "No episodes in current view" msgstr "No hay episodios en la vista actual" #: src/gpodder/gtkui/main.py:987 msgid "No episodes available" msgstr "No hay episodios disponibles" #: src/gpodder/gtkui/main.py:993 msgid "No podcasts in this view" msgstr "No hay podcast en esta vista" #: src/gpodder/gtkui/main.py:995 msgid "No subscriptions" msgstr "No hay suscripciones" #: src/gpodder/gtkui/main.py:997 msgid "No active tasks" msgstr "No hay tareas activas" #: src/gpodder/gtkui/main.py:1112 src/gpodder/gtkui/main.py:1114 #, python-format msgid "%(count)d active" msgid_plural "%(count)d active" msgstr[0] "%(count)d activa" msgstr[1] "%(count)d activas" #: src/gpodder/gtkui/main.py:1116 #, python-format msgid "%(count)d failed" msgid_plural "%(count)d failed" msgstr[0] "%(count)d fallida" msgstr[1] "%(count)d fallidas" #: src/gpodder/gtkui/main.py:1118 #, python-format msgid "%(count)d queued" msgid_plural "%(count)d queued" msgstr[0] "%(count)d en cola" msgstr[1] "%(count)d en cola" #: src/gpodder/gtkui/main.py:1132 #, python-format msgid "downloading %(count)d file" msgid_plural "downloading %(count)d files" msgstr[0] "descargando %(count)d archivo" msgstr[1] "descargando %(count)d archivos" #: src/gpodder/gtkui/main.py:1142 #, python-format msgid "synchronizing %(count)d file" msgid_plural "synchronizing %(count)d files" msgstr[0] "sincronizando %(count)d archivo" msgstr[1] "sincronizando %(count)d archivos" #: src/gpodder/gtkui/main.py:1144 #, python-format msgid "%(queued)d task queued" msgid_plural "%(queued)d tasks queued" msgstr[0] "%(queued)d tarea en la cola" msgstr[1] "%(queued)d tareas en la cola" #: src/gpodder/gtkui/main.py:1168 msgid "Please report this problem and restart gPodder:" msgstr "Informe de este problema y reinicie gPodder:" #: src/gpodder/gtkui/main.py:1168 msgid "Unhandled exception" msgstr "ExcepciУГn no controlada" #: src/gpodder/gtkui/main.py:1235 #, python-format msgid "Feedparser error: %s" msgstr "Error del analizador de fuentes: %s" #: src/gpodder/gtkui/main.py:1371 msgid "Could not download some episodes:" msgstr "No se pudieron descargar algunos episodios:" #: src/gpodder/gtkui/main.py:1373 src/gpodder/gtkui/main.py:1376 msgid "Downloads finished" msgstr "Descargas finalizadas" #: src/gpodder/gtkui/main.py:1379 msgid "Downloads failed" msgstr "Descargas fallidas" #: src/gpodder/gtkui/main.py:1383 msgid "Could not sync some episodes:" msgstr "No se pudieron sincronizar algunos episodios:" #: src/gpodder/gtkui/main.py:1385 src/gpodder/gtkui/main.py:1388 msgid "Device synchronization finished" msgstr "FinalizУГ la sincronizaciУГn del dispositivo" #: src/gpodder/gtkui/main.py:1391 msgid "Device synchronization failed" msgstr "FallУГ la sincronizaciУГn del dispositivo" #: src/gpodder/gtkui/main.py:1434 #, python-format msgid "%(count)d more episode" msgid_plural "%(count)d more episodes" msgstr[0] "%(count)d episodio mУЁs" msgstr[1] "%(count)d episodios mУЁs" #: src/gpodder/gtkui/main.py:1508 msgid "Start download now" msgstr "Iniciar la descarga ahora" #: src/gpodder/gtkui/main.py:1510 src/gpodder/gtkui/main.py:1719 #: src/gpodder/gtkui/desktop/episodeselector.py:144 #: share/gpodder/ui/gtk/gpodder.ui.h:20 msgid "Download" msgstr "Descargar" #: src/gpodder/gtkui/main.py:1511 share/gpodder/ui/gtk/gpodder.ui.h:21 msgid "Cancel" msgstr "Cancelar" #: src/gpodder/gtkui/main.py:1512 msgid "Pause" msgstr "Pausar" #: src/gpodder/gtkui/main.py:1514 msgid "Remove from list" msgstr "Quitar de la lista" #: src/gpodder/gtkui/main.py:1553 share/gpodder/ui/gtk/gpodder.ui.h:13 msgid "Update podcast" msgstr "Actualizar podcast" #: src/gpodder/gtkui/main.py:1560 msgid "Open download folder" msgstr "Abrir la carpeta de descarga" #: src/gpodder/gtkui/main.py:1566 msgid "Mark episodes as old" msgstr "Marcar episodios como antiguos" #: src/gpodder/gtkui/main.py:1570 src/gpodder/gtkui/main.py:1778 msgid "Archive" msgstr "Archivar" #: src/gpodder/gtkui/main.py:1575 msgid "Remove podcast" msgstr "Quitar podcast" #: src/gpodder/gtkui/main.py:1590 share/gpodder/ui/gtk/gpodder.ui.h:10 msgid "Podcast settings" msgstr "ConfiguraciУГn del podcast" #: src/gpodder/gtkui/main.py:1650 msgid "Error converting file." msgstr "Error al convertir el archivo." #: src/gpodder/gtkui/main.py:1650 msgid "Bluetooth file transfer" msgstr "Transferencia de archivo por Bluetooth" #: src/gpodder/gtkui/main.py:1709 msgid "Preview" msgstr "PrevisualizaciУГn" #: src/gpodder/gtkui/main.py:1711 msgid "Stream" msgstr "Stream" #: src/gpodder/gtkui/main.py:1755 msgid "Send to" msgstr "Enviar a" #: src/gpodder/gtkui/main.py:1757 msgid "Local folder" msgstr "Carpeta local" #: src/gpodder/gtkui/main.py:1762 msgid "Bluetooth device" msgstr "Dispositivo Bluetooth" #: src/gpodder/gtkui/main.py:1769 msgid "New" msgstr "Nuevo" #: src/gpodder/gtkui/main.py:1785 share/gpodder/ui/gtk/gpodder.ui.h:25 msgid "Episode details" msgstr "Detalles del episodio" #: src/gpodder/gtkui/main.py:1938 msgid "Please check your media player settings in the preferences dialog." msgstr "" "Compruebe las opciones del reproductor de medios en el diУЁlogo de " "preferencias." #: src/gpodder/gtkui/main.py:1939 msgid "Error opening player" msgstr "Error al abrir el reproductor" #: src/gpodder/gtkui/main.py:2178 msgid "Adding podcasts" msgstr "AУБadir podcasts" #: src/gpodder/gtkui/main.py:2179 msgid "Please wait while episode information is downloaded." msgstr "Espere mientras se descarga la informaciУГn del episodio." #: src/gpodder/gtkui/main.py:2186 msgid "Existing subscriptions skipped" msgstr "Suscripciones existentes omitidas" #: src/gpodder/gtkui/main.py:2187 msgid "You are already subscribed to these podcasts:" msgstr "Ya estУЁ suscrito a estos podcasts:" #: src/gpodder/gtkui/main.py:2195 msgid "Podcast requires authentication" msgstr "El podcast requiere autenticaciУГn:" #: src/gpodder/gtkui/main.py:2196 #, python-format msgid "Please login to %s:" msgstr "Inicie sesiУГn en %s:" #: src/gpodder/gtkui/main.py:2204 src/gpodder/gtkui/main.py:2299 msgid "Authentication failed" msgstr "FallУГ la autenticaciУГn" #: src/gpodder/gtkui/main.py:2210 msgid "Website redirection detected" msgstr "Se detectУГ redirecciУГn de sitio web" #: src/gpodder/gtkui/main.py:2211 #, python-format msgid "The URL %(url)s redirects to %(target)s." msgstr "La URL %(url)s redirige a %(target)s." #: src/gpodder/gtkui/main.py:2212 msgid "Do you want to visit the website now?" msgstr "ТПQuiere visitar el sitio web ahora?" #: src/gpodder/gtkui/main.py:2221 msgid "Could not add some podcasts" msgstr "No se pudieron aУБadir algunos podcasts" #: src/gpodder/gtkui/main.py:2222 msgid "Some podcasts could not be added to your list:" msgstr "No se pudieron aУБadir algunos podcasts a su lista:" #: src/gpodder/gtkui/main.py:2224 msgid "Unknown" msgstr "Desconocido" #: src/gpodder/gtkui/main.py:2308 msgid "Redirection detected" msgstr "RedirecciУГn detectada" #: src/gpodder/gtkui/main.py:2342 msgid "Merging episode actions" msgstr "Fusionando acciones de episodio" #: src/gpodder/gtkui/main.py:2343 msgid "Episode actions from gpodder.net are merged." msgstr "Las acciones de episodio de gpodder.net estУЁn fusionadas." #: src/gpodder/gtkui/main.py:2368 msgid "Cancelling..." msgstr "Cancelando..." #: src/gpodder/gtkui/main.py:2377 msgid "Please connect to a network, then try again." msgstr "ConУЉctese a una red, e intУЉntelo de nuevo." #: src/gpodder/gtkui/main.py:2378 msgid "No network connection" msgstr "No hay conexiУГn de red." #: src/gpodder/gtkui/main.py:2399 #, python-format msgid "Updating %(count)d feed..." msgid_plural "Updating %(count)d feeds..." msgstr[0] "Actualizando %(count)d fuente..." msgstr[1] "Actualizando %(count)d fuentes..." #: src/gpodder/gtkui/main.py:2417 #, python-format msgid "Error while updating %(url)s: %(message)s" msgstr "Error al actualizar %(url)s: %(message)s" #: src/gpodder/gtkui/main.py:2419 #, python-format msgid "The feed at %(url)s could not be updated." msgstr "La fuente en %(url)s no se pudo actualizar." #: src/gpodder/gtkui/main.py:2420 msgid "Error while updating feed" msgstr "Error al actualizar fuente" #: src/gpodder/gtkui/main.py:2435 #, python-format msgid "Updated %(podcast)s (%(position)d/%(total)d)" msgstr "%(podcast)s actualizados (%(position)d/%(total)d)" #: src/gpodder/gtkui/main.py:2466 msgid "No new episodes" msgstr "No hay episodios nuevos" #: src/gpodder/gtkui/main.py:2479 #, python-format msgid "Downloading %(count)d new episode." msgid_plural "Downloading %(count)d new episodes." msgstr[0] "Descargando %(count)d episodio nuevo." msgstr[1] "Descargando %(count)d episodios nuevos." #: src/gpodder/gtkui/main.py:2480 src/gpodder/gtkui/main.py:2484 #: src/gpodder/gtkui/main.py:2833 msgid "New episodes available" msgstr "Episodios nuevos disponibles" #: src/gpodder/gtkui/main.py:2483 #, python-format msgid "%(count)d new episode added to download list." msgid_plural "%(count)d new episodes added to download list." msgstr[0] "%(count)d episodio nuevo aУБadido a la lista de descargas." msgstr[1] "%(count)d episodios nuevos aУБadidos a la lista de descargas." #: src/gpodder/gtkui/main.py:2490 #, python-format msgid "%(count)d new episode available" msgid_plural "%(count)d new episodes available" msgstr[0] "%(count)d nuevo episodio disponible" msgstr[1] "%(count)d nuevos episodios disponibles" #: src/gpodder/gtkui/main.py:2509 msgid "Quit gPodder" msgstr "Salir de gPodder" #: src/gpodder/gtkui/main.py:2510 msgid "" "You are downloading episodes. You can resume downloads the next time you " "start gPodder. Do you want to quit now?" msgstr "" "EstУЁ descargando episodios. Puede continuar las descargas la prУГxima vez que " "abra gPodder. ТПQuiere salir ahora?" #: src/gpodder/gtkui/main.py:2559 msgid "Episodes are locked" msgstr "Los episodios estУЁn bloqueados" #: src/gpodder/gtkui/main.py:2560 msgid "" "The selected episodes are locked. Please unlock the episodes that you want " "to delete before trying to delete them." msgstr "" "Los episodios seleccionados estУЁn bloqueados. Desbloquee los episodios que " "quiere eliminar antes de intentar eliminarlos." #: src/gpodder/gtkui/main.py:2565 #, python-format msgid "Delete %(count)d episode?" msgid_plural "Delete %(count)d episodes?" msgstr[0] "ТПEliminar %(count)d episodio?" msgstr[1] "ТПEliminar %(count)d episodios?" #: src/gpodder/gtkui/main.py:2566 msgid "Deleting episodes removes downloaded files." msgstr "El eliminar episodios tabiУЉn quita los archivos descargados." #: src/gpodder/gtkui/main.py:2571 msgid "Deleting episodes" msgstr "Eliminando episodios" #: src/gpodder/gtkui/main.py:2572 msgid "Please wait while episodes are deleted" msgstr "Espere mientras se eliminan los episodios" #: src/gpodder/gtkui/main.py:2625 #, python-format msgid "Select older than %(count)d day" msgid_plural "Select older than %(count)d days" msgstr[0] "Seleccionar anteriores a %(count)d dУ­a" msgstr[1] "Seleccionar anteriores a %(count)d dУ­as" #: src/gpodder/gtkui/main.py:2627 msgid "Select played" msgstr "Seleccionar reproducidos" #: src/gpodder/gtkui/main.py:2628 msgid "Select finished" msgstr "Seleccionar finalizados" #: src/gpodder/gtkui/main.py:2632 msgid "Select the episodes you want to delete:" msgstr "Seleccione los episodios que quiere eliminar:" #: src/gpodder/gtkui/main.py:2648 share/gpodder/ui/gtk/gpodder.ui.h:4 msgid "Delete episodes" msgstr "Eliminar episodios" #: src/gpodder/gtkui/main.py:2703 src/gpodder/gtkui/main.py:2934 #: src/gpodder/gtkui/main.py:3034 msgid "No podcast selected" msgstr "No se seleccionУГ ningУКn podcast" #: src/gpodder/gtkui/main.py:2704 msgid "Please select a podcast in the podcasts list to update." msgstr "Seleccione un podcast de la lista para actualizar." #: src/gpodder/gtkui/main.py:2774 #, python-format msgid "Download error while downloading %(episode)s: %(message)s" msgstr "Error de descarga al descargar %(episode)s: %(message)s" #: src/gpodder/gtkui/main.py:2775 msgid "Download error" msgstr "Error de descarga" #: src/gpodder/gtkui/main.py:2818 msgid "Select the episodes you want to download:" msgstr "Seleccione los episodios que quiere descargar:" #: src/gpodder/gtkui/main.py:2841 msgid "Mark as old" msgstr "Marcar como antiguo" #: src/gpodder/gtkui/main.py:2848 msgid "Please check for new episodes later." msgstr "Busque nuevos episodios despuУЉs." #: src/gpodder/gtkui/main.py:2849 msgid "No new episodes available" msgstr "No hay episodios nuevos disponibles" #: src/gpodder/gtkui/main.py:2900 msgid "Login to gpodder.net" msgstr "Iniciar sesiУГn en gpodder.net" #: src/gpodder/gtkui/main.py:2901 msgid "Please login to download your subscriptions." msgstr "Inicie sesiУГn para descargar sus suscripciones." #: src/gpodder/gtkui/main.py:2916 msgid "Subscriptions on gpodder.net" msgstr "Suscripciones en gpodder.net" #: src/gpodder/gtkui/main.py:2935 msgid "Please select a podcast in the podcasts list to edit." msgstr "Seleccione un pocast en la lista para editar." #: src/gpodder/gtkui/main.py:2949 msgid "Podcast" msgstr "Podcast" #: src/gpodder/gtkui/main.py:2955 share/gpodder/ui/gtk/gpodder.ui.h:12 msgid "Remove podcasts" msgstr "Quitar podcasts" #: src/gpodder/gtkui/main.py:2956 msgid "Select the podcast you want to remove." msgstr "Seleccione el podcast que quiere quitar." #: src/gpodder/gtkui/main.py:2960 #: src/gpodder/gtkui/desktop/episodeselector.py:105 msgid "Remove" msgstr "Quitar" #: src/gpodder/gtkui/main.py:2969 msgid "Removing podcast" msgstr "Quitando podcast" #: src/gpodder/gtkui/main.py:2970 msgid "Please wait while the podcast is removed" msgstr "Espere mientras se quita el podcast" #: src/gpodder/gtkui/main.py:2971 msgid "Do you really want to remove this podcast and its episodes?" msgstr "ТПEstУЁ seguro de que quiere quitar este podcast y sus episodios?" #: src/gpodder/gtkui/main.py:2973 msgid "Removing podcasts" msgstr "Quitando podcasts" #: src/gpodder/gtkui/main.py:2974 msgid "Please wait while the podcasts are removed" msgstr "Espere mientras se quitan los podcasts" #: src/gpodder/gtkui/main.py:2975 msgid "Do you really want to remove the selected podcasts and their episodes?" msgstr "" "ТПEstУЁ seguro de que quiere quitar los podcasts seleccionados y sus episodios?" #: src/gpodder/gtkui/main.py:3035 msgid "Please select a podcast in the podcasts list to remove." msgstr "Seleccione un podcast en la lista para quitar." #: src/gpodder/gtkui/main.py:3045 msgid "OPML files" msgstr "Archivos OPML" #: src/gpodder/gtkui/main.py:3050 msgid "Import from OPML" msgstr "Importar desde OPML" #: src/gpodder/gtkui/main.py:3064 msgid "Import podcasts from OPML file" msgstr "Importar podcasts desde un archivo OPML" #: src/gpodder/gtkui/main.py:3071 msgid "Nothing to export" msgstr "No hay nada que exportar" #: src/gpodder/gtkui/main.py:3072 msgid "" "Your list of podcast subscriptions is empty. Please subscribe to some " "podcasts first before trying to export your subscription list." msgstr "" "Su lista de suscripciones a podcasts estУЁ vacУ­a. SuscrУ­base a algunos " "podcasts antes de tratar de exportar su lista de suscripciones." #: src/gpodder/gtkui/main.py:3076 msgid "Export to OPML" msgstr "Exportar a OPML" #: src/gpodder/gtkui/main.py:3087 #, python-format msgid "%(count)d subscription exported" msgid_plural "%(count)d subscriptions exported" msgstr[0] "%(count)d suscripciУГn exportada" msgstr[1] "%(count)d suscripciones exportadas" #: src/gpodder/gtkui/main.py:3088 msgid "Your podcast list has been successfully exported." msgstr "Su lista de podcast ha sido exportada correctamente." #: src/gpodder/gtkui/main.py:3090 msgid "Could not export OPML to file. Please check your permissions." msgstr "No se pudo exportar el archivo OPML. Verifique sus permisos." #: src/gpodder/gtkui/main.py:3090 msgid "OPML export failed" msgstr "FallУГ la exportaciУГn a OPML" #: src/gpodder/gtkui/main.py:3117 msgid "No updates available" msgstr "No hay actualizaciones disponibles" #: src/gpodder/gtkui/main.py:3118 msgid "You have the latest version of gPodder." msgstr "Usted tiene la УКltima versiУГn de gPodder." #: src/gpodder/gtkui/main.py:3122 msgid "New version available" msgstr "Nueva versiУГn disponible" #: src/gpodder/gtkui/main.py:3124 #, python-format msgid "Installed version: %s" msgstr "VersiУГn instalada: %s" #: src/gpodder/gtkui/main.py:3125 #, python-format msgid "Newest version: %s" msgstr "VersiУГn mУЁs reciente: %s" #: src/gpodder/gtkui/main.py:3126 #, python-format msgid "Release date: %s" msgstr "Fecha de lanzamiento: %s" #: src/gpodder/gtkui/main.py:3128 msgid "Download the latest version from gpodder.org?" msgstr "ТПDescargar la УКltima versiУГn desde gpodder.org?" #: src/gpodder/gtkui/main.py:3141 msgid "About gPodder" msgstr "Acerca de gPodder" #: src/gpodder/gtkui/main.py:3424 #, fuzzy msgid "Please register a YouTube API key and set it in the preferences." msgstr "Configure su dispositivo en el diУЁlogo de preferencias." #: src/gpodder/gtkui/main.py:3425 msgid "Would you like to set up an API key now?" msgstr "" #: src/gpodder/gtkui/main.py:3425 msgid "API key required" msgstr "" #: src/gpodder/gtkui/main.py:3444 bin/gpo:631 #, fuzzy msgid "No unique URL found" msgstr "No se encontraron canales" #: src/gpodder/gtkui/main.py:3449 bin/gpo:637 #, fuzzy msgid "Already subscribed" msgstr "No se puede suscribir a %s." #: src/gpodder/gtkui/main.py:3458 bin/gpo:649 #, python-format msgid "Make sure the API key is correct. Error: %(message)s" msgstr "" #: src/gpodder/gtkui/main.py:3459 #, fuzzy msgid "Error getting YouTube channels" msgstr "Error al establecer opciУГn" #: src/gpodder/gtkui/main.py:3462 #, fuzzy msgid "Successfully migrated subscriptions" msgstr "%s adicionado con УЉxito." #: src/gpodder/gtkui/main.py:3464 #, fuzzy msgid "Subscriptions are up to date" msgstr "SuscripciУГn pausada" #: src/gpodder/gtkui/main.py:3467 msgid "These URLs failed:" msgstr "" #: src/gpodder/gtkui/main.py:3469 #, fuzzy msgid "Could not migrate some subscriptions" msgstr "No se pudieron aУБadir algunos podcasts" #: src/gpodder/gtkui/main.py:3493 msgid "Cannot start gPodder" msgstr "No se puede iniciar gPodder" #: src/gpodder/gtkui/main.py:3494 #, python-format msgid "D-Bus error: %s" msgstr "Error de D-Bus: %s" #: src/gpodder/gtkui/model.py:68 #, python-format msgid "released %s" msgstr "publicado el %s" #: src/gpodder/gtkui/model.py:69 src/gpodder/gtkui/model.py:87 #: src/gpodder/gtkui/model.py:237 src/gpodder/gtkui/shownotes.py:84 #, python-format msgid "from %s" msgstr "de %s" #: src/gpodder/gtkui/model.py:80 src/gpodder/gtkui/model.py:393 msgid "played" msgstr "reproducidos" #: src/gpodder/gtkui/model.py:82 msgid "unplayed" msgstr "sin reproducir" #: src/gpodder/gtkui/model.py:85 msgid "today" msgstr "hoy" #: src/gpodder/gtkui/model.py:86 #, python-format msgid "downloaded %s" msgstr "descargado %s" #: src/gpodder/gtkui/model.py:337 msgid "Deleted" msgstr "Eliminado" #: src/gpodder/gtkui/model.py:342 msgid "New episode" msgstr "Episodio nuevo" #: src/gpodder/gtkui/model.py:356 msgid "Downloaded episode" msgstr "Episodio descargado" #: src/gpodder/gtkui/model.py:359 msgid "Downloaded video episode" msgstr "Episodio de vУ­deo descargadp" #: src/gpodder/gtkui/model.py:362 msgid "Downloaded image" msgstr "Imagen descargada" #: src/gpodder/gtkui/model.py:365 msgid "Downloaded file" msgstr "Archivo descargado" #: src/gpodder/gtkui/model.py:380 msgid "missing file" msgstr "archivo no encontrado" #: src/gpodder/gtkui/model.py:384 msgid "never displayed" msgstr "nunca mostrado" #: src/gpodder/gtkui/model.py:386 msgid "never played" msgstr "nunca reproducido" #: src/gpodder/gtkui/model.py:388 msgid "never opened" msgstr "nunca abierto" #: src/gpodder/gtkui/model.py:391 msgid "displayed" msgstr "mostrado" #: src/gpodder/gtkui/model.py:395 msgid "opened" msgstr "abierto" #: src/gpodder/gtkui/model.py:397 msgid "deletion prevented" msgstr "eliminaciУГn impedida" #: src/gpodder/gtkui/model.py:432 share/gpodder/ui/gtk/gpodder.ui.h:32 msgid "All episodes" msgstr "Todos los episodios" #: src/gpodder/gtkui/model.py:433 msgid "from all podcasts" msgstr "de todos los podcasts" #: src/gpodder/gtkui/model.py:625 msgid "Subscription paused" msgstr "SuscripciУГn pausada" #: src/gpodder/gtkui/shownotes.py:118 #, fuzzy msgid "Please select an episode" msgstr "Seleccionar episodios" #: src/gpodder/gtkui/interface/addpodcast.py:74 msgid "Nothing to paste." msgstr "No hay nada que pegar." #: src/gpodder/gtkui/interface/addpodcast.py:74 msgid "Clipboard is empty" msgstr "El portapapeles estУЁ vacУ­o." #: src/gpodder/gtkui/interface/common.py:160 msgid "Username" msgstr "Nombre de usuario" #: src/gpodder/gtkui/interface/common.py:163 msgid "New user" msgstr "Usuario nuevo" #: src/gpodder/gtkui/interface/common.py:170 msgid "Login" msgstr "Iniciar sesiУГn" #: src/gpodder/gtkui/interface/common.py:172 msgid "Authentication required" msgstr "Se requiere autenticaciУГn" #: src/gpodder/gtkui/interface/common.py:203 msgid "Password" msgstr "ContraseУБa" #: src/gpodder/gtkui/interface/common.py:225 msgid "Select destination" msgstr "Seleccionar destino" #: src/gpodder/gtkui/interface/configeditor.py:34 msgid "Setting" msgstr "Estableciendo" #: src/gpodder/gtkui/interface/configeditor.py:41 msgid "Set to" msgstr "Establecer a" #: src/gpodder/gtkui/interface/configeditor.py:81 #, python-format msgid "Cannot set %(field)s to %(value)s. Needed data type: %(datatype)s" msgstr "" "No se puede establecer %(field)s a %(value)s. Tipo de dato necesario: " "%(datatype)s" #: src/gpodder/gtkui/interface/configeditor.py:85 msgid "Error setting option" msgstr "Error al establecer opciУГn" #: src/gpodder/gtkui/desktop/channel.py:100 msgid "Add section" msgstr "AУБadir secciУГn" #: src/gpodder/gtkui/desktop/channel.py:100 msgid "New section:" msgstr "SecciУГn nueva:" #: src/gpodder/gtkui/desktop/channel.py:133 msgid "Select new podcast cover artwork" msgstr "Seleccione el nuevo arte de portada del podcast" #: src/gpodder/gtkui/desktop/channel.py:161 msgid "You can only drop a single image or URL here." msgstr "Solo puede soltar una sola imagen o URL aquУ­." #: src/gpodder/gtkui/desktop/channel.py:161 #: src/gpodder/gtkui/desktop/channel.py:171 msgid "Drag and drop" msgstr "Arrastrar y soltar" #: src/gpodder/gtkui/desktop/channel.py:171 msgid "You can only drop local files and http:// URLs here." msgstr "Solo puede soltar archivos locales y URL http:// aquУ­." #: src/gpodder/gtkui/desktop/deviceplaylist.py:98 #, fuzzy, python-format msgid "Folder %s could not be created." msgstr "La fuente en %(url)s no se pudo actualizar." #: src/gpodder/gtkui/desktop/deviceplaylist.py:98 #, fuzzy msgid "Error writing playlist" msgstr "Error al abrir el reproductor" #: src/gpodder/gtkui/desktop/episodeselector.py:288 #: share/gpodder/ui/gtk/gpodderepisodeselector.ui.h:2 msgid "Select all" msgstr "Seleccionar todo" #: src/gpodder/gtkui/desktop/episodeselector.py:292 #: share/gpodder/ui/gtk/gpodderepisodeselector.ui.h:3 msgid "Select none" msgstr "No seleccionar nada" #: src/gpodder/gtkui/desktop/episodeselector.py:324 msgid "Nothing selected" msgstr "No hay nada seleccionado" #: src/gpodder/gtkui/desktop/episodeselector.py:325 #, python-format msgid "%(count)d episode" msgid_plural "%(count)d episodes" msgstr[0] "%(count)d episodio" msgstr[1] "%(count)d episodios" #: src/gpodder/gtkui/desktop/episodeselector.py:327 #, python-format msgid "size: %s" msgstr "tamaУБo: %s" #: src/gpodder/gtkui/desktop/podcastdirectory.py:238 #, fuzzy msgid "Loading podcasts" msgstr "AУБadir podcasts" #: src/gpodder/gtkui/desktop/podcastdirectory.py:239 #, fuzzy msgid "Please wait while the podcast list is downloaded" msgstr "Espere mientras se quita el podcast" #: src/gpodder/gtkui/desktop/preferences.py:51 #: src/gpodder/gtkui/desktop/preferences.py:93 msgid "Do nothing" msgstr "No hacer nada" #: src/gpodder/gtkui/desktop/preferences.py:52 msgid "Show episode list" msgstr "Mostrar lista de episodios" #: src/gpodder/gtkui/desktop/preferences.py:53 msgid "Add to download list" msgstr "AУБadir a la lista de descargas" #: src/gpodder/gtkui/desktop/preferences.py:54 msgid "Download immediately" msgstr "Descargar inmediatamente" #: src/gpodder/gtkui/desktop/preferences.py:72 msgid "None" msgstr "Ninguno" #: src/gpodder/gtkui/desktop/preferences.py:73 msgid "iPod" msgstr "" #: src/gpodder/gtkui/desktop/preferences.py:74 msgid "Filesystem-based" msgstr "Basado en sistema de archivos" #: src/gpodder/gtkui/desktop/preferences.py:94 msgid "Mark as played" msgstr "Marcar como reproducido" #: src/gpodder/gtkui/desktop/preferences.py:95 msgid "Delete from gPodder" msgstr "Eliminar de gPodder" #: src/gpodder/gtkui/desktop/preferences.py:123 #, python-format msgid "Custom (%(format_ids)s)" msgstr "Personalizado (%(format_ids)s)" #: src/gpodder/gtkui/desktop/preferences.py:318 msgid "Name" msgstr "Nombre" #: src/gpodder/gtkui/desktop/preferences.py:369 #, fuzzy msgid "Documentation" msgstr "DuraciУГn" #: src/gpodder/gtkui/desktop/preferences.py:374 #, fuzzy msgid "Extension info" msgstr "InformaciУГn del mУГdulo de extensiones" #: src/gpodder/gtkui/desktop/preferences.py:379 msgid "Support the author" msgstr "" #: src/gpodder/gtkui/desktop/preferences.py:413 msgid "Extension cannot be activated" msgstr "La extensiУГn no puede ser activada" #: src/gpodder/gtkui/desktop/preferences.py:426 msgid "Extension module info" msgstr "InformaciУГn del mУГdulo de extensiones" #: src/gpodder/gtkui/desktop/preferences.py:463 msgid "Configure audio player" msgstr "Configurar reproductor de audio" #: src/gpodder/gtkui/desktop/preferences.py:464 #: src/gpodder/gtkui/desktop/preferences.py:474 msgid "Command:" msgstr "Orden:" #: src/gpodder/gtkui/desktop/preferences.py:473 msgid "Configure video player" msgstr "Configurar reproductor de vУ­deo" #: src/gpodder/gtkui/desktop/preferences.py:485 #: src/gpodder/gtkui/desktop/preferences.py:503 msgid "manually" msgstr "manualmente" #: src/gpodder/gtkui/desktop/preferences.py:505 #, python-format msgid "after %(count)d day" msgid_plural "after %(count)d days" msgstr[0] "despuУЉs de %(count)d dУ­a" msgstr[1] "despuУЉs de %(count)d dУ­as" #: src/gpodder/gtkui/desktop/preferences.py:541 msgid "Replace subscription list on server" msgstr "Reemplazar lista de suscripciУГn en el servidor" #: src/gpodder/gtkui/desktop/preferences.py:542 msgid "" "Remote podcasts that have not been added locally will be removed on the " "server. Continue?" msgstr "" "Los podcasts que no se aУБadieron localmente se eliminarУЁn del servidor.\n" "ТПContinuar?" #: src/gpodder/gtkui/desktop/preferences.py:621 msgid "Select folder for mount point" msgstr "Seleccione la carpeta para el punto de montaje" #: src/gpodder/gtkui/desktop/preferences.py:638 msgid "Select folder for playlists" msgstr "" #: src/gpodder/gtkui/desktop/sync.py:86 msgid "No device configured" msgstr "No hay dispositivos configurados." #: src/gpodder/gtkui/desktop/sync.py:87 msgid "Please set up your device in the preferences dialog." msgstr "Configure su dispositivo en el diУЁlogo de preferencias." #: src/gpodder/gtkui/desktop/sync.py:91 msgid "Cannot open device" msgstr "No se puede abrir el dispositivo" #: src/gpodder/gtkui/desktop/sync.py:92 msgid "Please check the settings in the preferences dialog." msgstr "Compruebe la configuraciУГn en el diУЁlogo de preferencias." #: src/gpodder/gtkui/desktop/sync.py:139 msgid "Not enough space left on device" msgstr "No queda espacio suficiente en el dispositivo" #: src/gpodder/gtkui/desktop/sync.py:140 #, python-format msgid "" "Additional free space required: %(required_space)s\n" "Do you want to continue?" msgstr "" #: src/gpodder/gtkui/desktop/sync.py:199 #, fuzzy msgid "Update successful" msgstr "Lista subida correctamente." #: src/gpodder/gtkui/desktop/sync.py:200 msgid "The playlist on your MP3 player has been updated." msgstr "" #: src/gpodder/gtkui/desktop/sync.py:274 msgid "Episodes have been deleted on device" msgstr "" #: src/gpodder/gtkui/desktop/sync.py:285 #, fuzzy msgid "Error writing playlist files" msgstr "Error al convertir el archivo." #: src/gpodder/plugins/soundcloud.py:154 msgid "Unknown track" msgstr "Pista desconocida" #: src/gpodder/plugins/soundcloud.py:181 #, python-format msgid "%s on Soundcloud" msgstr "%s en Soundcloud" #: src/gpodder/plugins/soundcloud.py:190 #, python-format msgid "Tracks published by %s on Soundcloud." msgstr "Pistas publicadas por %s en Soundcloud." #: src/gpodder/plugins/soundcloud.py:217 #, python-format msgid "%s's favorites on Soundcloud" msgstr "Favoritas de %s en Soundcloud" #: src/gpodder/plugins/soundcloud.py:223 #, python-format msgid "Tracks favorited by %s on Soundcloud." msgstr "Pistas favoritas de %s en Soundcloud." #: share/gpodder/extensions/audio_converter.py:20 #, fuzzy msgid "Convert audio files" msgstr "ConversiУГn fallida" #: share/gpodder/extensions/audio_converter.py:21 #, fuzzy msgid "Transcode audio files to mp3/ogg" msgstr "Convertir archivos .m4a a .mp3 o .ogg usando ffmpeg" #: share/gpodder/extensions/audio_converter.py:84 #: share/gpodder/extensions/video_converter.py:86 #, python-format msgid "Convert to %(format)s" msgstr "Convertir a %(format)s" #: share/gpodder/extensions/audio_converter.py:111 #: share/gpodder/extensions/rockbox_convert2mp4.py:65 #: share/gpodder/extensions/video_converter.py:111 msgid "File converted" msgstr "Archivo convertido" #: share/gpodder/extensions/audio_converter.py:114 #: share/gpodder/extensions/video_converter.py:114 msgid "Conversion failed" msgstr "ConversiУГn fallida" #: share/gpodder/extensions/concatenate_videos.py:20 #: share/gpodder/extensions/concatenate_videos.py:100 #, fuzzy msgid "Concatenate videos" msgstr "ConversiУГn fallida" #: share/gpodder/extensions/concatenate_videos.py:21 msgid "Add a context menu item for concatenating multiple videos" msgstr "" #: share/gpodder/extensions/concatenate_videos.py:37 msgid "Save video" msgstr "" #: share/gpodder/extensions/concatenate_videos.py:66 #, fuzzy msgid "Concatenating video files" msgstr "ConversiУГn fallida" #: share/gpodder/extensions/concatenate_videos.py:67 #, python-format msgid "Writing %(filename)s" msgstr "" #: share/gpodder/extensions/concatenate_videos.py:78 msgid "Videos successfully converted" msgstr "" #: share/gpodder/extensions/concatenate_videos.py:79 #, fuzzy msgid "Error converting videos" msgstr "Error al convertir el archivo." #: share/gpodder/extensions/concatenate_videos.py:80 msgid "Concatenation result" msgstr "" #: share/gpodder/extensions/enqueue_in_mediaplayer.py:16 msgid "Enqueue in media players" msgstr "Encolar en reproductores de medios" #: share/gpodder/extensions/enqueue_in_mediaplayer.py:17 msgid "" "Add a context menu item for enqueueing episodes in installed media players" msgstr "" #: share/gpodder/extensions/enqueue_in_mediaplayer.py:35 msgid "Enqueue in" msgstr "Encolar en" #: share/gpodder/extensions/episode_website_context_menu.py:14 msgid "\"Open website\" episode context menu" msgstr "" #: share/gpodder/extensions/episode_website_context_menu.py:15 msgid "Add a context menu item for opening the website of an episode" msgstr "" #: share/gpodder/extensions/episode_website_context_menu.py:30 #, fuzzy msgid "Open website" msgstr "Sitio web:" #: share/gpodder/extensions/gtk_statusicon.py:14 msgid "Gtk Status Icon" msgstr "Icono de estado de Gtk" #: share/gpodder/extensions/gtk_statusicon.py:15 msgid "Show a status icon for Gtk-based Desktops." msgstr "Muestra un icono de estado para escritorios basados en Gtk." #: share/gpodder/extensions/minimize_on_start.py:10 msgid "Minimize on start" msgstr "Minimizar al inicio" #: share/gpodder/extensions/minimize_on_start.py:11 msgid "Minimizes the gPodder window on startup." msgstr "Minimiza la ventana de gPodder al inicio." #: share/gpodder/extensions/mpris-listener.py:33 msgid "MPRIS Listener" msgstr "" #: share/gpodder/extensions/mpris-listener.py:34 msgid "Convert MPRIS notifications to gPodder Media Player D-Bus API" msgstr "" #: share/gpodder/extensions/normalize_audio.py:21 msgid "Normalize audio with re-encoding" msgstr "Normalizar audio con la re-codificaciУГn" #: share/gpodder/extensions/normalize_audio.py:22 msgid "Normalize the volume of audio files with normalize-audio" msgstr "Normalizar el volumen de archivos de audio con normalize-audio" #: share/gpodder/extensions/normalize_audio.py:99 msgid "File normalized" msgstr "Archivo normalizado" #: share/gpodder/extensions/rename_download.py:16 msgid "Rename episodes after download" msgstr "Renombrar episodios despuУЉs de la descarga" #: share/gpodder/extensions/rename_download.py:17 msgid "Rename episodes to \".\" on download" msgstr "Renombrar episodios ТЋ.ТЛ al descargar" #: share/gpodder/extensions/rm_ogg_cover.py:37 msgid "Remove cover art from OGG files" msgstr "Remover el arte de la tapa de archivos OGG" #: share/gpodder/extensions/rm_ogg_cover.py:38 msgid "removes coverart from all downloaded ogg files" msgstr "remueve el arte de la tapa de todos los archivos ogg descargados" #: share/gpodder/extensions/rm_ogg_cover.py:66 msgid "Remove cover art" msgstr "Remover el arte de la tapa" #: share/gpodder/extensions/rockbox_convert2mp4.py:26 msgid "Convert video files to MP4 for Rockbox" msgstr "Convertir archivos de vУ­deo a MP4 para Rockbox" #: share/gpodder/extensions/rockbox_convert2mp4.py:27 msgid "Converts all videos to a Rockbox-compatible format" msgstr "Convierte toso los vУ­deos a un formato compatible con Rockbox" #: share/gpodder/extensions/sonos.py:19 share/gpodder/extensions/sonos.py:78 msgid "Stream to Sonos" msgstr "" #: share/gpodder/extensions/sonos.py:20 msgid "Stream podcasts to Sonos speakers" msgstr "" #: share/gpodder/extensions/tagging.py:45 msgid "Tag downloaded files using Mutagen" msgstr "Etiquetar archivos descargados usando Mutagen" #: share/gpodder/extensions/tagging.py:46 msgid "Add episode and podcast titles to MP3/OGG tags" msgstr "Adicionar el tУ­tulo del episodio y podcast a las etiquetas MP3/OGG" #: share/gpodder/extensions/taskbar_progress.py:28 #, fuzzy msgid "Show download progress on the taskbar" msgstr "Muestra el progreso de descarga en el icono del lanzador de Unity." #: share/gpodder/extensions/taskbar_progress.py:29 msgid "Displays the progress on the Windows taskbar." msgstr "" #: share/gpodder/extensions/ted_subtitles.py:16 msgid "Subtitle Downloader for TED Talks" msgstr "" #: share/gpodder/extensions/ted_subtitles.py:17 msgid "Downloads .srt subtitles for TED Talks Videos" msgstr "Descarga subtУ­tulos .srt para los vУ­deos de TED Talks" #: share/gpodder/extensions/ubuntu_appindicator.py:10 msgid "Ubuntu App Indicator" msgstr "Indicador de aplicaciУГn de Ubuntu" #: share/gpodder/extensions/ubuntu_appindicator.py:11 msgid "Show a status indicator in the top bar." msgstr "Muestra un indicador de estado en la barra superior." #: share/gpodder/extensions/ubuntu_appindicator.py:47 msgid "Show main window" msgstr "Mostrar ventana principal" #: share/gpodder/extensions/ubuntu_appindicator.py:57 #: share/gpodder/ui/gtk/gpodder.ui.h:6 msgid "Quit" msgstr "Salir" #: share/gpodder/extensions/ubuntu_unity.py:10 msgid "Ubuntu Unity Integration" msgstr "IntegraciУГn con Ubuntu Unity" #: share/gpodder/extensions/ubuntu_unity.py:11 msgid "Show download progress in the Unity Launcher icon." msgstr "Muestra el progreso de descarga en el icono del lanzador de Unity." #: share/gpodder/extensions/update_feeds_on_startup.py:14 msgid "Search for new episodes on startup" msgstr "Buscar episodios nuevos al inicio" #: share/gpodder/extensions/update_feeds_on_startup.py:15 msgid "Starts the search for new episodes on startup" msgstr "Inicia la bУКsqueda de episodios nuevos al inicio" #: share/gpodder/extensions/video_converter.py:22 #, fuzzy msgid "Convert video files" msgstr "ConversiУГn fallida" #: share/gpodder/extensions/video_converter.py:23 #, fuzzy msgid "Transcode video files to avi/mp4/m4v" msgstr "Convertir archivos .m4a a .mp3 o .ogg usando ffmpeg" #: share/gpodder/ui/gtk/gpodderaddpodcast.ui.h:1 msgid "Add a new podcast" msgstr "AУБadir un podcast nuevo" #: share/gpodder/ui/gtk/gpodderaddpodcast.ui.h:2 msgid "URL:" msgstr "URL:" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:1 msgid "gPodder Podcast Editor" msgstr "Editor de podcasts gPodder" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:2 msgid "Section:" msgstr "SecciУГn:" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:3 msgid "Disable feed updates (pause subscription)" msgstr "Desactivar actualizaciones de fuente (pausar suscripciУГn)" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:4 msgid "Synchronize to MP3 player devices" msgstr "Sincronizar con dispositivos de reproducciУГn de MP3" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:5 msgid "Strategy:" msgstr "Estrategia:" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:6 #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:6 msgid "General" msgstr "General" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:7 msgid "HTTP/FTP Authentication" msgstr "AutenticaciУГn HTTP/FTP" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:8 #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:13 msgid "Username:" msgstr "Nombre de usuario:" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:9 #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:14 msgid "Password:" msgstr "ContraseУБa:" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:10 msgid "Locations" msgstr "UbicaciУГn" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:11 msgid "Download to:" msgstr "Descargar a:" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:12 msgid "Website:" msgstr "Sitio web:" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:13 msgid "website label" msgstr "etiqueta del sitio web" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:14 msgid "Advanced" msgstr "Avanzado" #: share/gpodder/ui/gtk/gpodderconfigeditor.ui.h:1 msgid "gPodder Configuration Editor" msgstr "Editor de configuraciУГn gPodder" #: share/gpodder/ui/gtk/gpodderconfigeditor.ui.h:2 msgid "Search for:" msgstr "Buscar:" #: share/gpodder/ui/gtk/gpodderconfigeditor.ui.h:3 msgid "Show All" msgstr "Mostrar todo" #: share/gpodder/ui/gtk/gpodderepisodeselector.ui.h:1 msgid "Select episodes" msgstr "Seleccionar episodios" #: share/gpodder/ui/gtk/gpodderpodcastdirectory.ui.h:1 msgid "Find new podcasts" msgstr "Encontrar nuevos podcasts" #: share/gpodder/ui/gtk/gpodderpodcastdirectory.ui.h:2 msgid "Select All" msgstr "Seleccionar todo" #: share/gpodder/ui/gtk/gpodderpodcastdirectory.ui.h:3 msgid "Select None" msgstr "No seleccionar nada" #: share/gpodder/ui/gtk/gpodderpodcastdirectory.ui.h:4 msgid "label" msgstr "" #: share/gpodder/ui/gtk/gpodderpodcastdirectory.ui.h:5 msgid "..." msgstr "" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:1 #: share/gpodder/ui/gtk/gpodder.ui.h:5 msgid "Preferences" msgstr "Preferencias" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:2 msgid "Audio player:" msgstr "Reproductor de audio:" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:3 msgid "Video player:" msgstr "Reproductor de vУ­deo:" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:4 msgid "\"All episodes\" in podcast list" msgstr "ТЋTodos los episodiosТЛ en la lista de podcasts" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:5 msgid "Use sections for podcast list" msgstr "Usar secciones para la lista de podcasts" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:7 #, fuzzy msgid "Preferred YouTube format:" msgstr "Formato de vУ­deo preferido:" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:8 msgid "YouTube API key (v3):" msgstr "" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:9 #, fuzzy msgid "Preferred Vimeo format:" msgstr "Formato de vУ­deo preferido:" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:11 msgid "Extensions" msgstr "Extensiones" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:12 msgid "Synchronize subscriptions and episode actions" msgstr "Sincronizar suscripciones y acciones de episodio" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:15 msgid "Replace list on server with local subscriptions" msgstr "Reemplazar lista en el servidor con suscripciones locales" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:16 msgid "Device name:" msgstr "Nombre de dispositivo:" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:17 msgid "gpodder.net" msgstr "gpodder.net" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:18 msgid "Update interval:" msgstr "Intervalo de actualizaciУГn:" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:19 msgid "Maximum number of episodes per podcast:" msgstr "NУКmero mУЁximo de episodios por podcast:" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:20 msgid "When new episodes are found:" msgstr "Cuando se encuentren episodios nuevos:" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:21 msgid "Updating" msgstr "Actualizando" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:22 msgid "Delete played episodes:" msgstr "Eliminar episodios reproducidos:" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:23 msgid "Remove played episodes even if unfinished" msgstr "Quitar episodios sin finalizar aУКn si no se completaron" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:24 msgid "Also remove unplayed episodes" msgstr "TambiУЉn quitar episodios sin reproducir" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:25 msgid "Clean-up" msgstr "Limpieza" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:26 msgid "Device type:" msgstr "Tipo de dispositivo:" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:27 msgid "Mountpoint:" msgstr "Punto de montaje:" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:28 msgid "After syncing an episode:" msgstr "DespuУЉs de sincronizar un episodio:" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:29 #, fuzzy msgid "Create playlists on device" msgstr "Reemplazar lista en el servidor" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:30 #, fuzzy msgid "Playlists Folder:" msgstr "Lista de reproducciУГn vacУ­a" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:31 msgid "Remove episodes deleted on device from gPodder" msgstr "" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:32 msgid "Only sync unplayed episodes" msgstr "Solo sincronizar episodios sin reproducir" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:33 msgid "Devices" msgstr "Dispositivos" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:34 msgid "Edit config" msgstr "Editar config." #: share/gpodder/ui/gtk/gpodder.ui.h:1 msgid "_Podcasts" msgstr "_Podcasts" #: share/gpodder/ui/gtk/gpodder.ui.h:2 msgid "Check for new episodes" msgstr "Comprobar episodios nuevos" #: share/gpodder/ui/gtk/gpodder.ui.h:3 msgid "Download new episodes" msgstr "Descargar episodios nuevos" #: share/gpodder/ui/gtk/gpodder.ui.h:7 msgid "_Subscriptions" msgstr "_Suscripciones" #: share/gpodder/ui/gtk/gpodder.ui.h:8 msgid "Discover new podcasts" msgstr "Descubrir nuevos podcasts" #: share/gpodder/ui/gtk/gpodder.ui.h:9 msgid "Add podcast via URL" msgstr "AУБadir podcast a travУЉs de URL" #: share/gpodder/ui/gtk/gpodder.ui.h:11 msgid "Unsubscribe" msgstr "Cancelar suscripciУГn" #: share/gpodder/ui/gtk/gpodder.ui.h:14 msgid "Import from OPML file" msgstr "Importar desde archivo OPML" #: share/gpodder/ui/gtk/gpodder.ui.h:15 msgid "Export to OPML file" msgstr "Exportar a archivo OPML" #: share/gpodder/ui/gtk/gpodder.ui.h:16 msgid "Go to gpodder.net" msgstr "Ir a gpodder.net" #: share/gpodder/ui/gtk/gpodder.ui.h:17 msgid "_Episodes" msgstr "_Episodios" #: share/gpodder/ui/gtk/gpodder.ui.h:18 msgid "Play" msgstr "Reproducir" #: share/gpodder/ui/gtk/gpodder.ui.h:19 msgid "Open" msgstr "Abrir" #: share/gpodder/ui/gtk/gpodder.ui.h:22 msgid "Delete" msgstr "Eliminar" #: share/gpodder/ui/gtk/gpodder.ui.h:23 msgid "Toggle new status" msgstr "Conmutar estado nuevo" #: share/gpodder/ui/gtk/gpodder.ui.h:24 msgid "Change delete lock" msgstr "Cambiar bloqueo de eliminaciУГn" #: share/gpodder/ui/gtk/gpodder.ui.h:26 msgid "E_xtras" msgstr "E_xtras" #: share/gpodder/ui/gtk/gpodder.ui.h:27 msgid "Sync to device" msgstr "Sincronizar al dispositivo" #: share/gpodder/ui/gtk/gpodder.ui.h:28 #, fuzzy msgid "Update YouTube subscriptions" msgstr "No hay suscripciones" #: share/gpodder/ui/gtk/gpodder.ui.h:29 msgid "_View" msgstr "_Ver" #: share/gpodder/ui/gtk/gpodder.ui.h:30 msgid "Toolbar" msgstr "Barra de herramientas" #: share/gpodder/ui/gtk/gpodder.ui.h:31 msgid "Episode descriptions" msgstr "Descripciones de episodios" #: share/gpodder/ui/gtk/gpodder.ui.h:33 msgid "Hide deleted episodes" msgstr "Ocultar episodios eliminados" #: share/gpodder/ui/gtk/gpodder.ui.h:34 msgid "Downloaded episodes" msgstr "Episodios descargados" #: share/gpodder/ui/gtk/gpodder.ui.h:35 msgid "Unplayed episodes" msgstr "Episodios sin reproducir" #: share/gpodder/ui/gtk/gpodder.ui.h:36 msgid "Hide podcasts without episodes" msgstr "Ocultar podcasts sin episodios" #: share/gpodder/ui/gtk/gpodder.ui.h:37 msgid "_Help" msgstr "Ay_uda" #: share/gpodder/ui/gtk/gpodder.ui.h:38 msgid "User manual" msgstr "Manual de usuario" #: share/gpodder/ui/gtk/gpodder.ui.h:39 msgid "Software updates" msgstr "Actualizaciones de software" #: share/gpodder/ui/gtk/gpodder.ui.h:40 msgid "Filter:" msgstr "Filtro:" #: share/gpodder/ui/gtk/gpodder.ui.h:41 msgid "Podcasts" msgstr "Podcasts" #: share/gpodder/ui/gtk/gpodder.ui.h:42 msgid "Limit rate to" msgstr "Limitar la velocidad de descarga a" #: share/gpodder/ui/gtk/gpodder.ui.h:43 msgid "KiB/s" msgstr "KiB/s" #: share/gpodder/ui/gtk/gpodder.ui.h:44 msgid "Limit downloads to" msgstr "Limitar descargas a" #: share/gpodder/ui/gtk/gpodderwelcome.ui.h:2 msgid "Welcome to gPodder" msgstr "Bienvenido a gPodder" #: share/gpodder/ui/gtk/gpodderwelcome.ui.h:3 msgid "Your podcast list is empty." msgstr "Su lista de podcast estУЁ vacУ­a." #: share/gpodder/ui/gtk/gpodderwelcome.ui.h:4 msgid "Choose from a list of example podcasts" msgstr "Elija de una lista de podcasts de ejemplo" #: share/gpodder/ui/gtk/gpodderwelcome.ui.h:5 msgid "Add a podcast by entering its URL" msgstr "Adicionar un podcast introduciendo su URL" #: share/gpodder/ui/gtk/gpodderwelcome.ui.h:6 msgid "Restore my subscriptions from gpodder.net" msgstr "Restaurar mis suscripciones desde gpodder.net" #: bin/gpo:266 msgid "Podcast update requested by extensions." msgstr "ActualizaciУГn del podcast solicitada por las extensiones." #: bin/gpo:270 msgid "Episode download requested by extensions." msgstr "Descarga del episodio solicitada por las extensiones." #: bin/gpo:323 #, python-format msgid "Invalid url: %s" msgstr "URL no vУЁlida: %s" #: bin/gpo:340 bin/gpo:416 bin/gpo:450 bin/gpo:582 bin/gpo:597 bin/gpo:717 #, python-format msgid "You are not subscribed to %s." msgstr "No estУЁ suscrito a %s." #: bin/gpo:346 #, fuzzy, python-format msgid "Already subscribed to %s." msgstr "No se puede suscribir a %s." #: bin/gpo:352 #, python-format msgid "Cannot subscribe to %s." msgstr "No se puede suscribir a %s." #: bin/gpo:368 #, python-format msgid "Successfully added %s." msgstr "%s adicionado con УЉxito." #: bin/gpo:386 msgid "This configuration option does not exist." msgstr "Esta opciУГn de configuraciУГn no existe." #: bin/gpo:390 msgid "Can only set leaf configuration nodes." msgstr "SУГlo se puede establecer la configuraciУГn de los nodos hoja." #: bin/gpo:404 #, python-format msgid "Renamed %(old_title)s to %(new_title)s." msgstr "Se renombrУГ %(old_title)s a %(new_title)s." #: bin/gpo:420 #, python-format msgid "Unsubscribed from %s." msgstr "SuscripciУГn cancelada desde %s." #: bin/gpo:494 msgid "Updates disabled" msgstr "Actualizaciones desactivadas" #: bin/gpo:505 #, python-format msgid "%(count)d new episode" msgid_plural "%(count)d new episodes" msgstr[0] "%(count)d episodio nuevo" msgstr[1] "%(count)d episodios nuevos" #: bin/gpo:511 msgid "Checking for new episodes" msgstr "Comprobando episodios nuevos" #: bin/gpo:520 #, python-format msgid "Skipping %(podcast)s" msgstr "Omitiendo %(podcast)s" #: bin/gpo:588 #, python-format msgid "Disabling feed update from %s." msgstr "Desactivando la actualizaciУГn de la fuente desde %s." #: bin/gpo:603 #, python-format msgid "Enabling feed update from %s." msgstr "Activando la actualizaciУГn de la fuente desde %s." #: bin/gpo:616 #, python-format msgid "Please register a YouTube API key and set it using %(command)s." msgstr "" #: bin/gpo:643 #, fuzzy, python-format msgid "Changing: %(old_url)s => %(new_url)s" msgstr "URL cambiada de %(old_url)s a %(new_url)s." #: bin/gpo:653 #, fuzzy msgid "Nothing to fix" msgstr "No hay nada que exportar" #: bin/gpo:672 msgid "No podcasts found." msgstr "No se encontraron podcasts." #: bin/gpo:686 msgid "Enter index to subscribe, ? for list" msgstr "Introduzca el indice para suscribirse, ? para la lista" #: bin/gpo:700 bin/gpo:704 msgid "Invalid value." msgstr "Valor no vУЁlido." #: bin/gpo:721 #, python-format msgid "Invalid URL: %s" msgstr "URL no vУЁlida: %s" #: bin/gpo:724 #, python-format msgid "Changed URL from %(old_url)s to %(new_url)s." msgstr "URL cambiada de %(old_url)s a %(new_url)s." #: bin/gpo:782 #, python-format msgid "Syntax error: %(error)s" msgstr "Error de sintaxis: %(error)s" #: bin/gpo:876 #, fuzzy msgid "Ambiguous command. Did you mean.." msgstr "Orden ambigua. QuizУЁ quiso decir..." #: bin/gpo:880 msgid "The requested function is not available." msgstr "La funciУГn solicitada no estУЁ disponible." #: bin/gpodder:105 #, fuzzy msgid "print logging output on the console" msgstr "Imprimir salida de depuraciУГn a stdout" #: bin/gpodder:108 #, fuzzy msgid "subscribe to the feed at URL" msgstr "Suscribirse a la URL proporcionada" #: bin/gpodder:113 msgid "Mac OS X application process number" msgstr "NУКmero de proceso de aplicaciУГn de Mac OS X" #: share/applications/gpodder.desktop.in.h:2 msgid "gPodder Podcast Client" msgstr "Cliente de podcasts gPodder" #: share/applications/gpodder.desktop.in.h:3 msgid "Podcast Client" msgstr "Cliente de podcasts" #: share/applications/gpodder.desktop.in.h:4 msgid "Subscribe to audio and video content from the web" msgstr "Suscribirse a contenido multimedia en la web" #: share/applications/gpodder-url-handler.desktop.in.h:1 #, fuzzy msgid "gPodder (subscribe to feed)" msgstr "Suscribirse a la URL proporcionada" gpodder-3.9.0/po/messages.pot0000644000016000001710000013352212654461625017253 0ustar jenkinsjenkins00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # FIRST AUTHOR , YEAR. # #, fuzzy msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2016-02-03 20:31+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" "Language: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=CHARSET\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n" #: src/gpodder/config.py:55 #, python-format msgid "gPodder on %s" msgstr "" #: src/gpodder/directory.py:95 msgid "gpodder.net search" msgstr "" #: src/gpodder/directory.py:104 msgid "OPML from web" msgstr "" #: src/gpodder/directory.py:113 msgid "OPML file" msgstr "" #: src/gpodder/directory.py:122 share/gpodder/ui/gtk/gpodderwelcome.ui.h:1 msgid "Getting started" msgstr "" #: src/gpodder/directory.py:131 msgid "gpodder.net Top 50" msgstr "" #: src/gpodder/directory.py:140 msgid "gpodder.net Tags" msgstr "" #: src/gpodder/directory.py:152 msgid "Soundcloud search" msgstr "" #: src/gpodder/directory.py:165 msgid "Imported OPML file" msgstr "" #: src/gpodder/download.py:329 msgid "Wrong username/password" msgstr "" #: src/gpodder/download.py:527 src/gpodder/sync.py:924 msgid "Added" msgstr "" #: src/gpodder/download.py:527 src/gpodder/sync.py:924 msgid "Queued" msgstr "" #: src/gpodder/download.py:527 src/gpodder/gtkui/model.py:327 msgid "Downloading" msgstr "" #: src/gpodder/download.py:528 src/gpodder/model.py:721 #: src/gpodder/sync.py:925 msgid "Finished" msgstr "" #: src/gpodder/download.py:528 src/gpodder/sync.py:925 msgid "Failed" msgstr "" #: src/gpodder/download.py:528 src/gpodder/sync.py:925 msgid "Cancelled" msgstr "" #: src/gpodder/download.py:528 src/gpodder/sync.py:925 msgid "Paused" msgstr "" #: src/gpodder/download.py:862 msgid "Missing content from server" msgstr "" #: src/gpodder/download.py:868 #, python-format msgid "I/O Error: %(error)s: %(filename)s" msgstr "" #: src/gpodder/download.py:875 #, python-format msgid "HTTP Error %(code)s: %(message)s" msgstr "" #: src/gpodder/download.py:879 src/gpodder/sync.py:1081 #, python-format msgid "Error: %s" msgstr "" #: src/gpodder/extensions.py:55 msgid "Desktop Integration" msgstr "" #: src/gpodder/extensions.py:56 msgid "Interface" msgstr "" #: src/gpodder/extensions.py:57 msgid "Post download" msgstr "" #: src/gpodder/extensions.py:59 src/gpodder/model.py:779 #: src/gpodder/model.py:1225 msgid "Other" msgstr "" #: src/gpodder/extensions.py:100 msgid "No description for this extension." msgstr "" #: src/gpodder/extensions.py:212 #, python-format msgid "Command not found: %(command)s" msgstr "" #: src/gpodder/extensions.py:228 #, python-format msgid "Need at least one of the following commands: %(list_of_commands)s" msgstr "" #: src/gpodder/extensions.py:265 #, python-format msgid "Python module not found: %(module)s" msgstr "" #: src/gpodder/model.py:446 src/gpodder/plugins/soundcloud.py:156 msgid "No description available" msgstr "" #: src/gpodder/model.py:679 msgid "unknown" msgstr "" #: src/gpodder/model.py:746 msgid "Default" msgstr "" #: src/gpodder/model.py:747 msgid "Only keep latest" msgstr "" #: src/gpodder/model.py:1208 src/gpodder/model.py:1223 #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:10 msgid "Video" msgstr "" #: src/gpodder/model.py:1221 msgid "Audio" msgstr "" #: src/gpodder/my.py:174 #, python-format msgid "Add %s" msgstr "" #: src/gpodder/my.py:176 #, python-format msgid "Remove %s" msgstr "" #: src/gpodder/sync.py:196 msgid "Cancelled by user" msgstr "" #: src/gpodder/sync.py:199 msgid "Writing data to disk" msgstr "" #: src/gpodder/sync.py:295 msgid "Opening iPod database" msgstr "" #: src/gpodder/sync.py:305 msgid "iPod opened" msgstr "" #: src/gpodder/sync.py:316 msgid "Saving iPod database" msgstr "" #: src/gpodder/sync.py:321 msgid "Writing extended gtkpod database" msgstr "" #: src/gpodder/sync.py:397 src/gpodder/sync.py:680 src/gpodder/sync.py:874 #, python-format msgid "Removing %s" msgstr "" #: src/gpodder/sync.py:412 src/gpodder/sync.py:557 #, python-format msgid "Adding %s" msgstr "" #: src/gpodder/sync.py:430 #, python-format msgid "Error copying %(episode)s: Not enough free space on %(mountpoint)s" msgstr "" #: src/gpodder/sync.py:515 msgid "Opening MP3 player" msgstr "" #: src/gpodder/sync.py:518 msgid "MP3 player opened" msgstr "" #: src/gpodder/sync.py:576 #, python-format msgid "" "Not enough space in %(path)s: %(free)s available, but need at least %(need)s" msgstr "" #: src/gpodder/sync.py:603 src/gpodder/sync.py:611 #, python-format msgid "Error opening %(filename)s: %(message)s" msgstr "" #: src/gpodder/sync.py:780 src/gpodder/sync.py:786 msgid "MTP device" msgstr "" #: src/gpodder/sync.py:793 msgid "Opening the MTP device" msgstr "" #: src/gpodder/sync.py:803 #, python-format msgid "%s opened" msgstr "" #: src/gpodder/sync.py:808 #, python-format msgid "Closing %s" msgstr "" #: src/gpodder/sync.py:816 #, python-format msgid "%s closed" msgstr "" #: src/gpodder/sync.py:821 bin/gpo:708 #, python-format msgid "Adding %s..." msgstr "" #: src/gpodder/sync.py:924 msgid "Synchronizing" msgstr "" #: src/gpodder/util.py:429 #, python-format msgid "%(count)d day ago" msgid_plural "%(count)d days ago" msgstr[0] "" msgstr[1] "" #: src/gpodder/util.py:508 msgid "Today" msgstr "" #: src/gpodder/util.py:510 msgid "Yesterday" msgstr "" #: src/gpodder/util.py:553 src/gpodder/util.py:556 msgid "(unknown)" msgstr "" #: src/gpodder/util.py:1193 src/gpodder/util.py:1212 #, python-format msgid "%(count)d second" msgid_plural "%(count)d seconds" msgstr[0] "" msgstr[1] "" #: src/gpodder/util.py:1206 #, python-format msgid "%(count)d hour" msgid_plural "%(count)d hours" msgstr[0] "" msgstr[1] "" #: src/gpodder/util.py:1209 #, python-format msgid "%(count)d minute" msgid_plural "%(count)d minutes" msgstr[0] "" msgstr[1] "" #: src/gpodder/util.py:1215 msgid "and" msgstr "" #: src/gpodder/gtkui/config.py:50 msgid "Integer" msgstr "" #: src/gpodder/gtkui/config.py:52 msgid "Float" msgstr "" #: src/gpodder/gtkui/config.py:54 msgid "Boolean" msgstr "" #: src/gpodder/gtkui/config.py:56 msgid "String" msgstr "" #: src/gpodder/gtkui/desktopfile.py:70 #, python-format msgid "Command: %s" msgstr "" #: src/gpodder/gtkui/desktopfile.py:150 msgid "Default application" msgstr "" #: src/gpodder/gtkui/main.py:205 share/applications/gpodder.desktop.in.h:1 msgid "gPodder" msgstr "" #: src/gpodder/gtkui/main.py:288 msgid "Loading incomplete downloads" msgstr "" #: src/gpodder/gtkui/main.py:289 msgid "Some episodes have not finished downloading in a previous session." msgstr "" #: src/gpodder/gtkui/main.py:291 #, python-format msgid "%(count)d partial file" msgid_plural "%(count)d partial files" msgstr[0] "" msgstr[1] "" #: src/gpodder/gtkui/main.py:306 msgid "Resume all" msgstr "" #: src/gpodder/gtkui/main.py:316 msgid "Incomplete downloads from a previous session were found." msgstr "" #: src/gpodder/gtkui/main.py:414 msgid "Action" msgstr "" #: src/gpodder/gtkui/main.py:461 msgid "Confirm changes from gpodder.net" msgstr "" #: src/gpodder/gtkui/main.py:462 msgid "Select the actions you want to carry out." msgstr "" #: src/gpodder/gtkui/main.py:502 msgid "Uploading subscriptions" msgstr "" #: src/gpodder/gtkui/main.py:503 msgid "Your subscriptions are being uploaded to the server." msgstr "" #: src/gpodder/gtkui/main.py:508 msgid "List uploaded successfully." msgstr "" #: src/gpodder/gtkui/main.py:515 msgid "Error while uploading" msgstr "" #: src/gpodder/gtkui/main.py:800 src/gpodder/gtkui/main.py:928 #: src/gpodder/gtkui/main.py:2622 src/gpodder/gtkui/main.py:2815 #: src/gpodder/gtkui/desktop/episodeselector.py:132 #: src/gpodder/gtkui/desktop/sync.py:270 msgid "Episode" msgstr "" #: src/gpodder/gtkui/main.py:819 msgid "Size" msgstr "" #: src/gpodder/gtkui/main.py:824 msgid "Duration" msgstr "" #: src/gpodder/gtkui/main.py:828 msgid "Released" msgstr "" #: src/gpodder/gtkui/main.py:855 msgid "Visible columns" msgstr "" #: src/gpodder/gtkui/main.py:948 src/gpodder/gtkui/main.py:1108 #: share/gpodder/ui/gtk/gpodder.ui.h:45 msgid "Progress" msgstr "" #: src/gpodder/gtkui/main.py:982 msgid "Loading episodes" msgstr "" #: src/gpodder/gtkui/main.py:985 msgid "No episodes in current view" msgstr "" #: src/gpodder/gtkui/main.py:987 msgid "No episodes available" msgstr "" #: src/gpodder/gtkui/main.py:993 msgid "No podcasts in this view" msgstr "" #: src/gpodder/gtkui/main.py:995 msgid "No subscriptions" msgstr "" #: src/gpodder/gtkui/main.py:997 msgid "No active tasks" msgstr "" #: src/gpodder/gtkui/main.py:1112 src/gpodder/gtkui/main.py:1114 #, python-format msgid "%(count)d active" msgid_plural "%(count)d active" msgstr[0] "" msgstr[1] "" #: src/gpodder/gtkui/main.py:1116 #, python-format msgid "%(count)d failed" msgid_plural "%(count)d failed" msgstr[0] "" msgstr[1] "" #: src/gpodder/gtkui/main.py:1118 #, python-format msgid "%(count)d queued" msgid_plural "%(count)d queued" msgstr[0] "" msgstr[1] "" #: src/gpodder/gtkui/main.py:1132 #, python-format msgid "downloading %(count)d file" msgid_plural "downloading %(count)d files" msgstr[0] "" msgstr[1] "" #: src/gpodder/gtkui/main.py:1142 #, python-format msgid "synchronizing %(count)d file" msgid_plural "synchronizing %(count)d files" msgstr[0] "" msgstr[1] "" #: src/gpodder/gtkui/main.py:1144 #, python-format msgid "%(queued)d task queued" msgid_plural "%(queued)d tasks queued" msgstr[0] "" msgstr[1] "" #: src/gpodder/gtkui/main.py:1168 msgid "Please report this problem and restart gPodder:" msgstr "" #: src/gpodder/gtkui/main.py:1168 msgid "Unhandled exception" msgstr "" #: src/gpodder/gtkui/main.py:1235 #, python-format msgid "Feedparser error: %s" msgstr "" #: src/gpodder/gtkui/main.py:1371 msgid "Could not download some episodes:" msgstr "" #: src/gpodder/gtkui/main.py:1373 src/gpodder/gtkui/main.py:1376 msgid "Downloads finished" msgstr "" #: src/gpodder/gtkui/main.py:1379 msgid "Downloads failed" msgstr "" #: src/gpodder/gtkui/main.py:1383 msgid "Could not sync some episodes:" msgstr "" #: src/gpodder/gtkui/main.py:1385 src/gpodder/gtkui/main.py:1388 msgid "Device synchronization finished" msgstr "" #: src/gpodder/gtkui/main.py:1391 msgid "Device synchronization failed" msgstr "" #: src/gpodder/gtkui/main.py:1434 #, python-format msgid "%(count)d more episode" msgid_plural "%(count)d more episodes" msgstr[0] "" msgstr[1] "" #: src/gpodder/gtkui/main.py:1508 msgid "Start download now" msgstr "" #: src/gpodder/gtkui/main.py:1510 src/gpodder/gtkui/main.py:1719 #: src/gpodder/gtkui/desktop/episodeselector.py:144 #: share/gpodder/ui/gtk/gpodder.ui.h:20 msgid "Download" msgstr "" #: src/gpodder/gtkui/main.py:1511 share/gpodder/ui/gtk/gpodder.ui.h:21 msgid "Cancel" msgstr "" #: src/gpodder/gtkui/main.py:1512 msgid "Pause" msgstr "" #: src/gpodder/gtkui/main.py:1514 msgid "Remove from list" msgstr "" #: src/gpodder/gtkui/main.py:1553 share/gpodder/ui/gtk/gpodder.ui.h:13 msgid "Update podcast" msgstr "" #: src/gpodder/gtkui/main.py:1560 msgid "Open download folder" msgstr "" #: src/gpodder/gtkui/main.py:1566 msgid "Mark episodes as old" msgstr "" #: src/gpodder/gtkui/main.py:1570 src/gpodder/gtkui/main.py:1778 msgid "Archive" msgstr "" #: src/gpodder/gtkui/main.py:1575 msgid "Remove podcast" msgstr "" #: src/gpodder/gtkui/main.py:1590 share/gpodder/ui/gtk/gpodder.ui.h:10 msgid "Podcast settings" msgstr "" #: src/gpodder/gtkui/main.py:1650 msgid "Error converting file." msgstr "" #: src/gpodder/gtkui/main.py:1650 msgid "Bluetooth file transfer" msgstr "" #: src/gpodder/gtkui/main.py:1709 msgid "Preview" msgstr "" #: src/gpodder/gtkui/main.py:1711 msgid "Stream" msgstr "" #: src/gpodder/gtkui/main.py:1755 msgid "Send to" msgstr "" #: src/gpodder/gtkui/main.py:1757 msgid "Local folder" msgstr "" #: src/gpodder/gtkui/main.py:1762 msgid "Bluetooth device" msgstr "" #: src/gpodder/gtkui/main.py:1769 msgid "New" msgstr "" #: src/gpodder/gtkui/main.py:1785 share/gpodder/ui/gtk/gpodder.ui.h:25 msgid "Episode details" msgstr "" #: src/gpodder/gtkui/main.py:1938 msgid "Please check your media player settings in the preferences dialog." msgstr "" #: src/gpodder/gtkui/main.py:1939 msgid "Error opening player" msgstr "" #: src/gpodder/gtkui/main.py:2178 msgid "Adding podcasts" msgstr "" #: src/gpodder/gtkui/main.py:2179 msgid "Please wait while episode information is downloaded." msgstr "" #: src/gpodder/gtkui/main.py:2186 msgid "Existing subscriptions skipped" msgstr "" #: src/gpodder/gtkui/main.py:2187 msgid "You are already subscribed to these podcasts:" msgstr "" #: src/gpodder/gtkui/main.py:2195 msgid "Podcast requires authentication" msgstr "" #: src/gpodder/gtkui/main.py:2196 #, python-format msgid "Please login to %s:" msgstr "" #: src/gpodder/gtkui/main.py:2204 src/gpodder/gtkui/main.py:2299 msgid "Authentication failed" msgstr "" #: src/gpodder/gtkui/main.py:2210 msgid "Website redirection detected" msgstr "" #: src/gpodder/gtkui/main.py:2211 #, python-format msgid "The URL %(url)s redirects to %(target)s." msgstr "" #: src/gpodder/gtkui/main.py:2212 msgid "Do you want to visit the website now?" msgstr "" #: src/gpodder/gtkui/main.py:2221 msgid "Could not add some podcasts" msgstr "" #: src/gpodder/gtkui/main.py:2222 msgid "Some podcasts could not be added to your list:" msgstr "" #: src/gpodder/gtkui/main.py:2224 msgid "Unknown" msgstr "" #: src/gpodder/gtkui/main.py:2308 msgid "Redirection detected" msgstr "" #: src/gpodder/gtkui/main.py:2342 msgid "Merging episode actions" msgstr "" #: src/gpodder/gtkui/main.py:2343 msgid "Episode actions from gpodder.net are merged." msgstr "" #: src/gpodder/gtkui/main.py:2368 msgid "Cancelling..." msgstr "" #: src/gpodder/gtkui/main.py:2377 msgid "Please connect to a network, then try again." msgstr "" #: src/gpodder/gtkui/main.py:2378 msgid "No network connection" msgstr "" #: src/gpodder/gtkui/main.py:2399 #, python-format msgid "Updating %(count)d feed..." msgid_plural "Updating %(count)d feeds..." msgstr[0] "" msgstr[1] "" #: src/gpodder/gtkui/main.py:2417 #, python-format msgid "Error while updating %(url)s: %(message)s" msgstr "" #: src/gpodder/gtkui/main.py:2419 #, python-format msgid "The feed at %(url)s could not be updated." msgstr "" #: src/gpodder/gtkui/main.py:2420 msgid "Error while updating feed" msgstr "" #: src/gpodder/gtkui/main.py:2435 #, python-format msgid "Updated %(podcast)s (%(position)d/%(total)d)" msgstr "" #: src/gpodder/gtkui/main.py:2466 msgid "No new episodes" msgstr "" #: src/gpodder/gtkui/main.py:2479 #, python-format msgid "Downloading %(count)d new episode." msgid_plural "Downloading %(count)d new episodes." msgstr[0] "" msgstr[1] "" #: src/gpodder/gtkui/main.py:2480 src/gpodder/gtkui/main.py:2484 #: src/gpodder/gtkui/main.py:2833 msgid "New episodes available" msgstr "" #: src/gpodder/gtkui/main.py:2483 #, python-format msgid "%(count)d new episode added to download list." msgid_plural "%(count)d new episodes added to download list." msgstr[0] "" msgstr[1] "" #: src/gpodder/gtkui/main.py:2490 #, python-format msgid "%(count)d new episode available" msgid_plural "%(count)d new episodes available" msgstr[0] "" msgstr[1] "" #: src/gpodder/gtkui/main.py:2509 msgid "Quit gPodder" msgstr "" #: src/gpodder/gtkui/main.py:2510 msgid "" "You are downloading episodes. You can resume downloads the next time you " "start gPodder. Do you want to quit now?" msgstr "" #: src/gpodder/gtkui/main.py:2559 msgid "Episodes are locked" msgstr "" #: src/gpodder/gtkui/main.py:2560 msgid "" "The selected episodes are locked. Please unlock the episodes that you want " "to delete before trying to delete them." msgstr "" #: src/gpodder/gtkui/main.py:2565 #, python-format msgid "Delete %(count)d episode?" msgid_plural "Delete %(count)d episodes?" msgstr[0] "" msgstr[1] "" #: src/gpodder/gtkui/main.py:2566 msgid "Deleting episodes removes downloaded files." msgstr "" #: src/gpodder/gtkui/main.py:2571 msgid "Deleting episodes" msgstr "" #: src/gpodder/gtkui/main.py:2572 msgid "Please wait while episodes are deleted" msgstr "" #: src/gpodder/gtkui/main.py:2625 #, python-format msgid "Select older than %(count)d day" msgid_plural "Select older than %(count)d days" msgstr[0] "" msgstr[1] "" #: src/gpodder/gtkui/main.py:2627 msgid "Select played" msgstr "" #: src/gpodder/gtkui/main.py:2628 msgid "Select finished" msgstr "" #: src/gpodder/gtkui/main.py:2632 msgid "Select the episodes you want to delete:" msgstr "" #: src/gpodder/gtkui/main.py:2648 share/gpodder/ui/gtk/gpodder.ui.h:4 msgid "Delete episodes" msgstr "" #: src/gpodder/gtkui/main.py:2703 src/gpodder/gtkui/main.py:2934 #: src/gpodder/gtkui/main.py:3034 msgid "No podcast selected" msgstr "" #: src/gpodder/gtkui/main.py:2704 msgid "Please select a podcast in the podcasts list to update." msgstr "" #: src/gpodder/gtkui/main.py:2774 #, python-format msgid "Download error while downloading %(episode)s: %(message)s" msgstr "" #: src/gpodder/gtkui/main.py:2775 msgid "Download error" msgstr "" #: src/gpodder/gtkui/main.py:2818 msgid "Select the episodes you want to download:" msgstr "" #: src/gpodder/gtkui/main.py:2841 msgid "Mark as old" msgstr "" #: src/gpodder/gtkui/main.py:2848 msgid "Please check for new episodes later." msgstr "" #: src/gpodder/gtkui/main.py:2849 msgid "No new episodes available" msgstr "" #: src/gpodder/gtkui/main.py:2900 msgid "Login to gpodder.net" msgstr "" #: src/gpodder/gtkui/main.py:2901 msgid "Please login to download your subscriptions." msgstr "" #: src/gpodder/gtkui/main.py:2916 msgid "Subscriptions on gpodder.net" msgstr "" #: src/gpodder/gtkui/main.py:2935 msgid "Please select a podcast in the podcasts list to edit." msgstr "" #: src/gpodder/gtkui/main.py:2949 msgid "Podcast" msgstr "" #: src/gpodder/gtkui/main.py:2955 share/gpodder/ui/gtk/gpodder.ui.h:12 msgid "Remove podcasts" msgstr "" #: src/gpodder/gtkui/main.py:2956 msgid "Select the podcast you want to remove." msgstr "" #: src/gpodder/gtkui/main.py:2960 #: src/gpodder/gtkui/desktop/episodeselector.py:105 msgid "Remove" msgstr "" #: src/gpodder/gtkui/main.py:2969 msgid "Removing podcast" msgstr "" #: src/gpodder/gtkui/main.py:2970 msgid "Please wait while the podcast is removed" msgstr "" #: src/gpodder/gtkui/main.py:2971 msgid "Do you really want to remove this podcast and its episodes?" msgstr "" #: src/gpodder/gtkui/main.py:2973 msgid "Removing podcasts" msgstr "" #: src/gpodder/gtkui/main.py:2974 msgid "Please wait while the podcasts are removed" msgstr "" #: src/gpodder/gtkui/main.py:2975 msgid "Do you really want to remove the selected podcasts and their episodes?" msgstr "" #: src/gpodder/gtkui/main.py:3035 msgid "Please select a podcast in the podcasts list to remove." msgstr "" #: src/gpodder/gtkui/main.py:3045 msgid "OPML files" msgstr "" #: src/gpodder/gtkui/main.py:3050 msgid "Import from OPML" msgstr "" #: src/gpodder/gtkui/main.py:3064 msgid "Import podcasts from OPML file" msgstr "" #: src/gpodder/gtkui/main.py:3071 msgid "Nothing to export" msgstr "" #: src/gpodder/gtkui/main.py:3072 msgid "" "Your list of podcast subscriptions is empty. Please subscribe to some " "podcasts first before trying to export your subscription list." msgstr "" #: src/gpodder/gtkui/main.py:3076 msgid "Export to OPML" msgstr "" #: src/gpodder/gtkui/main.py:3087 #, python-format msgid "%(count)d subscription exported" msgid_plural "%(count)d subscriptions exported" msgstr[0] "" msgstr[1] "" #: src/gpodder/gtkui/main.py:3088 msgid "Your podcast list has been successfully exported." msgstr "" #: src/gpodder/gtkui/main.py:3090 msgid "Could not export OPML to file. Please check your permissions." msgstr "" #: src/gpodder/gtkui/main.py:3090 msgid "OPML export failed" msgstr "" #: src/gpodder/gtkui/main.py:3117 msgid "No updates available" msgstr "" #: src/gpodder/gtkui/main.py:3118 msgid "You have the latest version of gPodder." msgstr "" #: src/gpodder/gtkui/main.py:3122 msgid "New version available" msgstr "" #: src/gpodder/gtkui/main.py:3124 #, python-format msgid "Installed version: %s" msgstr "" #: src/gpodder/gtkui/main.py:3125 #, python-format msgid "Newest version: %s" msgstr "" #: src/gpodder/gtkui/main.py:3126 #, python-format msgid "Release date: %s" msgstr "" #: src/gpodder/gtkui/main.py:3128 msgid "Download the latest version from gpodder.org?" msgstr "" #: src/gpodder/gtkui/main.py:3141 msgid "About gPodder" msgstr "" #: src/gpodder/gtkui/main.py:3424 msgid "Please register a YouTube API key and set it in the preferences." msgstr "" #: src/gpodder/gtkui/main.py:3425 msgid "Would you like to set up an API key now?" msgstr "" #: src/gpodder/gtkui/main.py:3425 msgid "API key required" msgstr "" #: src/gpodder/gtkui/main.py:3444 bin/gpo:631 msgid "No unique URL found" msgstr "" #: src/gpodder/gtkui/main.py:3449 bin/gpo:637 msgid "Already subscribed" msgstr "" #: src/gpodder/gtkui/main.py:3458 bin/gpo:649 #, python-format msgid "Make sure the API key is correct. Error: %(message)s" msgstr "" #: src/gpodder/gtkui/main.py:3459 msgid "Error getting YouTube channels" msgstr "" #: src/gpodder/gtkui/main.py:3462 msgid "Successfully migrated subscriptions" msgstr "" #: src/gpodder/gtkui/main.py:3464 msgid "Subscriptions are up to date" msgstr "" #: src/gpodder/gtkui/main.py:3467 msgid "These URLs failed:" msgstr "" #: src/gpodder/gtkui/main.py:3469 msgid "Could not migrate some subscriptions" msgstr "" #: src/gpodder/gtkui/main.py:3493 msgid "Cannot start gPodder" msgstr "" #: src/gpodder/gtkui/main.py:3494 #, python-format msgid "D-Bus error: %s" msgstr "" #: src/gpodder/gtkui/model.py:68 #, python-format msgid "released %s" msgstr "" #: src/gpodder/gtkui/model.py:69 src/gpodder/gtkui/model.py:87 #: src/gpodder/gtkui/model.py:237 src/gpodder/gtkui/shownotes.py:84 #, python-format msgid "from %s" msgstr "" #: src/gpodder/gtkui/model.py:80 src/gpodder/gtkui/model.py:393 msgid "played" msgstr "" #: src/gpodder/gtkui/model.py:82 msgid "unplayed" msgstr "" #: src/gpodder/gtkui/model.py:85 msgid "today" msgstr "" #: src/gpodder/gtkui/model.py:86 #, python-format msgid "downloaded %s" msgstr "" #: src/gpodder/gtkui/model.py:337 msgid "Deleted" msgstr "" #: src/gpodder/gtkui/model.py:342 msgid "New episode" msgstr "" #: src/gpodder/gtkui/model.py:356 msgid "Downloaded episode" msgstr "" #: src/gpodder/gtkui/model.py:359 msgid "Downloaded video episode" msgstr "" #: src/gpodder/gtkui/model.py:362 msgid "Downloaded image" msgstr "" #: src/gpodder/gtkui/model.py:365 msgid "Downloaded file" msgstr "" #: src/gpodder/gtkui/model.py:380 msgid "missing file" msgstr "" #: src/gpodder/gtkui/model.py:384 msgid "never displayed" msgstr "" #: src/gpodder/gtkui/model.py:386 msgid "never played" msgstr "" #: src/gpodder/gtkui/model.py:388 msgid "never opened" msgstr "" #: src/gpodder/gtkui/model.py:391 msgid "displayed" msgstr "" #: src/gpodder/gtkui/model.py:395 msgid "opened" msgstr "" #: src/gpodder/gtkui/model.py:397 msgid "deletion prevented" msgstr "" #: src/gpodder/gtkui/model.py:432 share/gpodder/ui/gtk/gpodder.ui.h:32 msgid "All episodes" msgstr "" #: src/gpodder/gtkui/model.py:433 msgid "from all podcasts" msgstr "" #: src/gpodder/gtkui/model.py:625 msgid "Subscription paused" msgstr "" #: src/gpodder/gtkui/shownotes.py:118 msgid "Please select an episode" msgstr "" #: src/gpodder/gtkui/interface/addpodcast.py:74 msgid "Nothing to paste." msgstr "" #: src/gpodder/gtkui/interface/addpodcast.py:74 msgid "Clipboard is empty" msgstr "" #: src/gpodder/gtkui/interface/common.py:160 msgid "Username" msgstr "" #: src/gpodder/gtkui/interface/common.py:163 msgid "New user" msgstr "" #: src/gpodder/gtkui/interface/common.py:170 msgid "Login" msgstr "" #: src/gpodder/gtkui/interface/common.py:172 msgid "Authentication required" msgstr "" #: src/gpodder/gtkui/interface/common.py:203 msgid "Password" msgstr "" #: src/gpodder/gtkui/interface/common.py:225 msgid "Select destination" msgstr "" #: src/gpodder/gtkui/interface/configeditor.py:34 msgid "Setting" msgstr "" #: src/gpodder/gtkui/interface/configeditor.py:41 msgid "Set to" msgstr "" #: src/gpodder/gtkui/interface/configeditor.py:81 #, python-format msgid "Cannot set %(field)s to %(value)s. Needed data type: %(datatype)s" msgstr "" #: src/gpodder/gtkui/interface/configeditor.py:85 msgid "Error setting option" msgstr "" #: src/gpodder/gtkui/desktop/channel.py:100 msgid "Add section" msgstr "" #: src/gpodder/gtkui/desktop/channel.py:100 msgid "New section:" msgstr "" #: src/gpodder/gtkui/desktop/channel.py:133 msgid "Select new podcast cover artwork" msgstr "" #: src/gpodder/gtkui/desktop/channel.py:161 msgid "You can only drop a single image or URL here." msgstr "" #: src/gpodder/gtkui/desktop/channel.py:161 #: src/gpodder/gtkui/desktop/channel.py:171 msgid "Drag and drop" msgstr "" #: src/gpodder/gtkui/desktop/channel.py:171 msgid "You can only drop local files and http:// URLs here." msgstr "" #: src/gpodder/gtkui/desktop/deviceplaylist.py:98 #, python-format msgid "Folder %s could not be created." msgstr "" #: src/gpodder/gtkui/desktop/deviceplaylist.py:98 msgid "Error writing playlist" msgstr "" #: src/gpodder/gtkui/desktop/episodeselector.py:288 #: share/gpodder/ui/gtk/gpodderepisodeselector.ui.h:2 msgid "Select all" msgstr "" #: src/gpodder/gtkui/desktop/episodeselector.py:292 #: share/gpodder/ui/gtk/gpodderepisodeselector.ui.h:3 msgid "Select none" msgstr "" #: src/gpodder/gtkui/desktop/episodeselector.py:324 msgid "Nothing selected" msgstr "" #: src/gpodder/gtkui/desktop/episodeselector.py:325 #, python-format msgid "%(count)d episode" msgid_plural "%(count)d episodes" msgstr[0] "" msgstr[1] "" #: src/gpodder/gtkui/desktop/episodeselector.py:327 #, python-format msgid "size: %s" msgstr "" #: src/gpodder/gtkui/desktop/podcastdirectory.py:238 msgid "Loading podcasts" msgstr "" #: src/gpodder/gtkui/desktop/podcastdirectory.py:239 msgid "Please wait while the podcast list is downloaded" msgstr "" #: src/gpodder/gtkui/desktop/preferences.py:51 #: src/gpodder/gtkui/desktop/preferences.py:93 msgid "Do nothing" msgstr "" #: src/gpodder/gtkui/desktop/preferences.py:52 msgid "Show episode list" msgstr "" #: src/gpodder/gtkui/desktop/preferences.py:53 msgid "Add to download list" msgstr "" #: src/gpodder/gtkui/desktop/preferences.py:54 msgid "Download immediately" msgstr "" #: src/gpodder/gtkui/desktop/preferences.py:72 msgid "None" msgstr "" #: src/gpodder/gtkui/desktop/preferences.py:73 msgid "iPod" msgstr "" #: src/gpodder/gtkui/desktop/preferences.py:74 msgid "Filesystem-based" msgstr "" #: src/gpodder/gtkui/desktop/preferences.py:94 msgid "Mark as played" msgstr "" #: src/gpodder/gtkui/desktop/preferences.py:95 msgid "Delete from gPodder" msgstr "" #: src/gpodder/gtkui/desktop/preferences.py:123 #, python-format msgid "Custom (%(format_ids)s)" msgstr "" #: src/gpodder/gtkui/desktop/preferences.py:318 msgid "Name" msgstr "" #: src/gpodder/gtkui/desktop/preferences.py:369 msgid "Documentation" msgstr "" #: src/gpodder/gtkui/desktop/preferences.py:374 msgid "Extension info" msgstr "" #: src/gpodder/gtkui/desktop/preferences.py:379 msgid "Support the author" msgstr "" #: src/gpodder/gtkui/desktop/preferences.py:413 msgid "Extension cannot be activated" msgstr "" #: src/gpodder/gtkui/desktop/preferences.py:426 msgid "Extension module info" msgstr "" #: src/gpodder/gtkui/desktop/preferences.py:463 msgid "Configure audio player" msgstr "" #: src/gpodder/gtkui/desktop/preferences.py:464 #: src/gpodder/gtkui/desktop/preferences.py:474 msgid "Command:" msgstr "" #: src/gpodder/gtkui/desktop/preferences.py:473 msgid "Configure video player" msgstr "" #: src/gpodder/gtkui/desktop/preferences.py:485 #: src/gpodder/gtkui/desktop/preferences.py:503 msgid "manually" msgstr "" #: src/gpodder/gtkui/desktop/preferences.py:505 #, python-format msgid "after %(count)d day" msgid_plural "after %(count)d days" msgstr[0] "" msgstr[1] "" #: src/gpodder/gtkui/desktop/preferences.py:541 msgid "Replace subscription list on server" msgstr "" #: src/gpodder/gtkui/desktop/preferences.py:542 msgid "" "Remote podcasts that have not been added locally will be removed on the " "server. Continue?" msgstr "" #: src/gpodder/gtkui/desktop/preferences.py:621 msgid "Select folder for mount point" msgstr "" #: src/gpodder/gtkui/desktop/preferences.py:638 msgid "Select folder for playlists" msgstr "" #: src/gpodder/gtkui/desktop/sync.py:86 msgid "No device configured" msgstr "" #: src/gpodder/gtkui/desktop/sync.py:87 msgid "Please set up your device in the preferences dialog." msgstr "" #: src/gpodder/gtkui/desktop/sync.py:91 msgid "Cannot open device" msgstr "" #: src/gpodder/gtkui/desktop/sync.py:92 msgid "Please check the settings in the preferences dialog." msgstr "" #: src/gpodder/gtkui/desktop/sync.py:139 msgid "Not enough space left on device" msgstr "" #: src/gpodder/gtkui/desktop/sync.py:140 #, python-format msgid "" "Additional free space required: %(required_space)s\n" "Do you want to continue?" msgstr "" #: src/gpodder/gtkui/desktop/sync.py:199 msgid "Update successful" msgstr "" #: src/gpodder/gtkui/desktop/sync.py:200 msgid "The playlist on your MP3 player has been updated." msgstr "" #: src/gpodder/gtkui/desktop/sync.py:274 msgid "Episodes have been deleted on device" msgstr "" #: src/gpodder/gtkui/desktop/sync.py:285 msgid "Error writing playlist files" msgstr "" #: src/gpodder/plugins/soundcloud.py:154 msgid "Unknown track" msgstr "" #: src/gpodder/plugins/soundcloud.py:181 #, python-format msgid "%s on Soundcloud" msgstr "" #: src/gpodder/plugins/soundcloud.py:190 #, python-format msgid "Tracks published by %s on Soundcloud." msgstr "" #: src/gpodder/plugins/soundcloud.py:217 #, python-format msgid "%s's favorites on Soundcloud" msgstr "" #: src/gpodder/plugins/soundcloud.py:223 #, python-format msgid "Tracks favorited by %s on Soundcloud." msgstr "" #: share/gpodder/extensions/audio_converter.py:20 msgid "Convert audio files" msgstr "" #: share/gpodder/extensions/audio_converter.py:21 msgid "Transcode audio files to mp3/ogg" msgstr "" #: share/gpodder/extensions/audio_converter.py:84 #: share/gpodder/extensions/video_converter.py:86 #, python-format msgid "Convert to %(format)s" msgstr "" #: share/gpodder/extensions/audio_converter.py:111 #: share/gpodder/extensions/rockbox_convert2mp4.py:65 #: share/gpodder/extensions/video_converter.py:111 msgid "File converted" msgstr "" #: share/gpodder/extensions/audio_converter.py:114 #: share/gpodder/extensions/video_converter.py:114 msgid "Conversion failed" msgstr "" #: share/gpodder/extensions/concatenate_videos.py:20 #: share/gpodder/extensions/concatenate_videos.py:100 msgid "Concatenate videos" msgstr "" #: share/gpodder/extensions/concatenate_videos.py:21 msgid "Add a context menu item for concatenating multiple videos" msgstr "" #: share/gpodder/extensions/concatenate_videos.py:37 msgid "Save video" msgstr "" #: share/gpodder/extensions/concatenate_videos.py:66 msgid "Concatenating video files" msgstr "" #: share/gpodder/extensions/concatenate_videos.py:67 #, python-format msgid "Writing %(filename)s" msgstr "" #: share/gpodder/extensions/concatenate_videos.py:78 msgid "Videos successfully converted" msgstr "" #: share/gpodder/extensions/concatenate_videos.py:79 msgid "Error converting videos" msgstr "" #: share/gpodder/extensions/concatenate_videos.py:80 msgid "Concatenation result" msgstr "" #: share/gpodder/extensions/enqueue_in_mediaplayer.py:16 msgid "Enqueue in media players" msgstr "" #: share/gpodder/extensions/enqueue_in_mediaplayer.py:17 msgid "" "Add a context menu item for enqueueing episodes in installed media players" msgstr "" #: share/gpodder/extensions/enqueue_in_mediaplayer.py:35 msgid "Enqueue in" msgstr "" #: share/gpodder/extensions/episode_website_context_menu.py:14 msgid "\"Open website\" episode context menu" msgstr "" #: share/gpodder/extensions/episode_website_context_menu.py:15 msgid "Add a context menu item for opening the website of an episode" msgstr "" #: share/gpodder/extensions/episode_website_context_menu.py:30 msgid "Open website" msgstr "" #: share/gpodder/extensions/gtk_statusicon.py:14 msgid "Gtk Status Icon" msgstr "" #: share/gpodder/extensions/gtk_statusicon.py:15 msgid "Show a status icon for Gtk-based Desktops." msgstr "" #: share/gpodder/extensions/minimize_on_start.py:10 msgid "Minimize on start" msgstr "" #: share/gpodder/extensions/minimize_on_start.py:11 msgid "Minimizes the gPodder window on startup." msgstr "" #: share/gpodder/extensions/mpris-listener.py:33 msgid "MPRIS Listener" msgstr "" #: share/gpodder/extensions/mpris-listener.py:34 msgid "Convert MPRIS notifications to gPodder Media Player D-Bus API" msgstr "" #: share/gpodder/extensions/normalize_audio.py:21 msgid "Normalize audio with re-encoding" msgstr "" #: share/gpodder/extensions/normalize_audio.py:22 msgid "Normalize the volume of audio files with normalize-audio" msgstr "" #: share/gpodder/extensions/normalize_audio.py:99 msgid "File normalized" msgstr "" #: share/gpodder/extensions/rename_download.py:16 msgid "Rename episodes after download" msgstr "" #: share/gpodder/extensions/rename_download.py:17 msgid "Rename episodes to \".\" on download" msgstr "" #: share/gpodder/extensions/rm_ogg_cover.py:37 msgid "Remove cover art from OGG files" msgstr "" #: share/gpodder/extensions/rm_ogg_cover.py:38 msgid "removes coverart from all downloaded ogg files" msgstr "" #: share/gpodder/extensions/rm_ogg_cover.py:66 msgid "Remove cover art" msgstr "" #: share/gpodder/extensions/rockbox_convert2mp4.py:26 msgid "Convert video files to MP4 for Rockbox" msgstr "" #: share/gpodder/extensions/rockbox_convert2mp4.py:27 msgid "Converts all videos to a Rockbox-compatible format" msgstr "" #: share/gpodder/extensions/sonos.py:19 share/gpodder/extensions/sonos.py:78 msgid "Stream to Sonos" msgstr "" #: share/gpodder/extensions/sonos.py:20 msgid "Stream podcasts to Sonos speakers" msgstr "" #: share/gpodder/extensions/tagging.py:45 msgid "Tag downloaded files using Mutagen" msgstr "" #: share/gpodder/extensions/tagging.py:46 msgid "Add episode and podcast titles to MP3/OGG tags" msgstr "" #: share/gpodder/extensions/taskbar_progress.py:28 msgid "Show download progress on the taskbar" msgstr "" #: share/gpodder/extensions/taskbar_progress.py:29 msgid "Displays the progress on the Windows taskbar." msgstr "" #: share/gpodder/extensions/ted_subtitles.py:16 msgid "Subtitle Downloader for TED Talks" msgstr "" #: share/gpodder/extensions/ted_subtitles.py:17 msgid "Downloads .srt subtitles for TED Talks Videos" msgstr "" #: share/gpodder/extensions/ubuntu_appindicator.py:10 msgid "Ubuntu App Indicator" msgstr "" #: share/gpodder/extensions/ubuntu_appindicator.py:11 msgid "Show a status indicator in the top bar." msgstr "" #: share/gpodder/extensions/ubuntu_appindicator.py:47 msgid "Show main window" msgstr "" #: share/gpodder/extensions/ubuntu_appindicator.py:57 #: share/gpodder/ui/gtk/gpodder.ui.h:6 msgid "Quit" msgstr "" #: share/gpodder/extensions/ubuntu_unity.py:10 msgid "Ubuntu Unity Integration" msgstr "" #: share/gpodder/extensions/ubuntu_unity.py:11 msgid "Show download progress in the Unity Launcher icon." msgstr "" #: share/gpodder/extensions/update_feeds_on_startup.py:14 msgid "Search for new episodes on startup" msgstr "" #: share/gpodder/extensions/update_feeds_on_startup.py:15 msgid "Starts the search for new episodes on startup" msgstr "" #: share/gpodder/extensions/video_converter.py:22 msgid "Convert video files" msgstr "" #: share/gpodder/extensions/video_converter.py:23 msgid "Transcode video files to avi/mp4/m4v" msgstr "" #: share/gpodder/ui/gtk/gpodderaddpodcast.ui.h:1 msgid "Add a new podcast" msgstr "" #: share/gpodder/ui/gtk/gpodderaddpodcast.ui.h:2 msgid "URL:" msgstr "" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:1 msgid "gPodder Podcast Editor" msgstr "" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:2 msgid "Section:" msgstr "" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:3 msgid "Disable feed updates (pause subscription)" msgstr "" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:4 msgid "Synchronize to MP3 player devices" msgstr "" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:5 msgid "Strategy:" msgstr "" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:6 #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:6 msgid "General" msgstr "" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:7 msgid "HTTP/FTP Authentication" msgstr "" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:8 #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:13 msgid "Username:" msgstr "" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:9 #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:14 msgid "Password:" msgstr "" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:10 msgid "Locations" msgstr "" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:11 msgid "Download to:" msgstr "" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:12 msgid "Website:" msgstr "" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:13 msgid "website label" msgstr "" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:14 msgid "Advanced" msgstr "" #: share/gpodder/ui/gtk/gpodderconfigeditor.ui.h:1 msgid "gPodder Configuration Editor" msgstr "" #: share/gpodder/ui/gtk/gpodderconfigeditor.ui.h:2 msgid "Search for:" msgstr "" #: share/gpodder/ui/gtk/gpodderconfigeditor.ui.h:3 msgid "Show All" msgstr "" #: share/gpodder/ui/gtk/gpodderepisodeselector.ui.h:1 msgid "Select episodes" msgstr "" #: share/gpodder/ui/gtk/gpodderpodcastdirectory.ui.h:1 msgid "Find new podcasts" msgstr "" #: share/gpodder/ui/gtk/gpodderpodcastdirectory.ui.h:2 msgid "Select All" msgstr "" #: share/gpodder/ui/gtk/gpodderpodcastdirectory.ui.h:3 msgid "Select None" msgstr "" #: share/gpodder/ui/gtk/gpodderpodcastdirectory.ui.h:4 msgid "label" msgstr "" #: share/gpodder/ui/gtk/gpodderpodcastdirectory.ui.h:5 msgid "..." msgstr "" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:1 #: share/gpodder/ui/gtk/gpodder.ui.h:5 msgid "Preferences" msgstr "" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:2 msgid "Audio player:" msgstr "" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:3 msgid "Video player:" msgstr "" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:4 msgid "\"All episodes\" in podcast list" msgstr "" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:5 msgid "Use sections for podcast list" msgstr "" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:7 msgid "Preferred YouTube format:" msgstr "" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:8 msgid "YouTube API key (v3):" msgstr "" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:9 msgid "Preferred Vimeo format:" msgstr "" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:11 msgid "Extensions" msgstr "" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:12 msgid "Synchronize subscriptions and episode actions" msgstr "" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:15 msgid "Replace list on server with local subscriptions" msgstr "" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:16 msgid "Device name:" msgstr "" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:17 msgid "gpodder.net" msgstr "" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:18 msgid "Update interval:" msgstr "" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:19 msgid "Maximum number of episodes per podcast:" msgstr "" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:20 msgid "When new episodes are found:" msgstr "" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:21 msgid "Updating" msgstr "" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:22 msgid "Delete played episodes:" msgstr "" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:23 msgid "Remove played episodes even if unfinished" msgstr "" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:24 msgid "Also remove unplayed episodes" msgstr "" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:25 msgid "Clean-up" msgstr "" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:26 msgid "Device type:" msgstr "" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:27 msgid "Mountpoint:" msgstr "" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:28 msgid "After syncing an episode:" msgstr "" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:29 msgid "Create playlists on device" msgstr "" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:30 msgid "Playlists Folder:" msgstr "" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:31 msgid "Remove episodes deleted on device from gPodder" msgstr "" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:32 msgid "Only sync unplayed episodes" msgstr "" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:33 msgid "Devices" msgstr "" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:34 msgid "Edit config" msgstr "" #: share/gpodder/ui/gtk/gpodder.ui.h:1 msgid "_Podcasts" msgstr "" #: share/gpodder/ui/gtk/gpodder.ui.h:2 msgid "Check for new episodes" msgstr "" #: share/gpodder/ui/gtk/gpodder.ui.h:3 msgid "Download new episodes" msgstr "" #: share/gpodder/ui/gtk/gpodder.ui.h:7 msgid "_Subscriptions" msgstr "" #: share/gpodder/ui/gtk/gpodder.ui.h:8 msgid "Discover new podcasts" msgstr "" #: share/gpodder/ui/gtk/gpodder.ui.h:9 msgid "Add podcast via URL" msgstr "" #: share/gpodder/ui/gtk/gpodder.ui.h:11 msgid "Unsubscribe" msgstr "" #: share/gpodder/ui/gtk/gpodder.ui.h:14 msgid "Import from OPML file" msgstr "" #: share/gpodder/ui/gtk/gpodder.ui.h:15 msgid "Export to OPML file" msgstr "" #: share/gpodder/ui/gtk/gpodder.ui.h:16 msgid "Go to gpodder.net" msgstr "" #: share/gpodder/ui/gtk/gpodder.ui.h:17 msgid "_Episodes" msgstr "" #: share/gpodder/ui/gtk/gpodder.ui.h:18 msgid "Play" msgstr "" #: share/gpodder/ui/gtk/gpodder.ui.h:19 msgid "Open" msgstr "" #: share/gpodder/ui/gtk/gpodder.ui.h:22 msgid "Delete" msgstr "" #: share/gpodder/ui/gtk/gpodder.ui.h:23 msgid "Toggle new status" msgstr "" #: share/gpodder/ui/gtk/gpodder.ui.h:24 msgid "Change delete lock" msgstr "" #: share/gpodder/ui/gtk/gpodder.ui.h:26 msgid "E_xtras" msgstr "" #: share/gpodder/ui/gtk/gpodder.ui.h:27 msgid "Sync to device" msgstr "" #: share/gpodder/ui/gtk/gpodder.ui.h:28 msgid "Update YouTube subscriptions" msgstr "" #: share/gpodder/ui/gtk/gpodder.ui.h:29 msgid "_View" msgstr "" #: share/gpodder/ui/gtk/gpodder.ui.h:30 msgid "Toolbar" msgstr "" #: share/gpodder/ui/gtk/gpodder.ui.h:31 msgid "Episode descriptions" msgstr "" #: share/gpodder/ui/gtk/gpodder.ui.h:33 msgid "Hide deleted episodes" msgstr "" #: share/gpodder/ui/gtk/gpodder.ui.h:34 msgid "Downloaded episodes" msgstr "" #: share/gpodder/ui/gtk/gpodder.ui.h:35 msgid "Unplayed episodes" msgstr "" #: share/gpodder/ui/gtk/gpodder.ui.h:36 msgid "Hide podcasts without episodes" msgstr "" #: share/gpodder/ui/gtk/gpodder.ui.h:37 msgid "_Help" msgstr "" #: share/gpodder/ui/gtk/gpodder.ui.h:38 msgid "User manual" msgstr "" #: share/gpodder/ui/gtk/gpodder.ui.h:39 msgid "Software updates" msgstr "" #: share/gpodder/ui/gtk/gpodder.ui.h:40 msgid "Filter:" msgstr "" #: share/gpodder/ui/gtk/gpodder.ui.h:41 msgid "Podcasts" msgstr "" #: share/gpodder/ui/gtk/gpodder.ui.h:42 msgid "Limit rate to" msgstr "" #: share/gpodder/ui/gtk/gpodder.ui.h:43 msgid "KiB/s" msgstr "" #: share/gpodder/ui/gtk/gpodder.ui.h:44 msgid "Limit downloads to" msgstr "" #: share/gpodder/ui/gtk/gpodderwelcome.ui.h:2 msgid "Welcome to gPodder" msgstr "" #: share/gpodder/ui/gtk/gpodderwelcome.ui.h:3 msgid "Your podcast list is empty." msgstr "" #: share/gpodder/ui/gtk/gpodderwelcome.ui.h:4 msgid "Choose from a list of example podcasts" msgstr "" #: share/gpodder/ui/gtk/gpodderwelcome.ui.h:5 msgid "Add a podcast by entering its URL" msgstr "" #: share/gpodder/ui/gtk/gpodderwelcome.ui.h:6 msgid "Restore my subscriptions from gpodder.net" msgstr "" #: bin/gpo:266 msgid "Podcast update requested by extensions." msgstr "" #: bin/gpo:270 msgid "Episode download requested by extensions." msgstr "" #: bin/gpo:323 #, python-format msgid "Invalid url: %s" msgstr "" #: bin/gpo:340 bin/gpo:416 bin/gpo:450 bin/gpo:582 bin/gpo:597 bin/gpo:717 #, python-format msgid "You are not subscribed to %s." msgstr "" #: bin/gpo:346 #, python-format msgid "Already subscribed to %s." msgstr "" #: bin/gpo:352 #, python-format msgid "Cannot subscribe to %s." msgstr "" #: bin/gpo:368 #, python-format msgid "Successfully added %s." msgstr "" #: bin/gpo:386 msgid "This configuration option does not exist." msgstr "" #: bin/gpo:390 msgid "Can only set leaf configuration nodes." msgstr "" #: bin/gpo:404 #, python-format msgid "Renamed %(old_title)s to %(new_title)s." msgstr "" #: bin/gpo:420 #, python-format msgid "Unsubscribed from %s." msgstr "" #: bin/gpo:494 msgid "Updates disabled" msgstr "" #: bin/gpo:505 #, python-format msgid "%(count)d new episode" msgid_plural "%(count)d new episodes" msgstr[0] "" msgstr[1] "" #: bin/gpo:511 msgid "Checking for new episodes" msgstr "" #: bin/gpo:520 #, python-format msgid "Skipping %(podcast)s" msgstr "" #: bin/gpo:588 #, python-format msgid "Disabling feed update from %s." msgstr "" #: bin/gpo:603 #, python-format msgid "Enabling feed update from %s." msgstr "" #: bin/gpo:616 #, python-format msgid "Please register a YouTube API key and set it using %(command)s." msgstr "" #: bin/gpo:643 #, python-format msgid "Changing: %(old_url)s => %(new_url)s" msgstr "" #: bin/gpo:653 msgid "Nothing to fix" msgstr "" #: bin/gpo:672 msgid "No podcasts found." msgstr "" #: bin/gpo:686 msgid "Enter index to subscribe, ? for list" msgstr "" #: bin/gpo:700 bin/gpo:704 msgid "Invalid value." msgstr "" #: bin/gpo:721 #, python-format msgid "Invalid URL: %s" msgstr "" #: bin/gpo:724 #, python-format msgid "Changed URL from %(old_url)s to %(new_url)s." msgstr "" #: bin/gpo:782 #, python-format msgid "Syntax error: %(error)s" msgstr "" #: bin/gpo:876 msgid "Ambiguous command. Did you mean.." msgstr "" #: bin/gpo:880 msgid "The requested function is not available." msgstr "" #: bin/gpodder:105 msgid "print logging output on the console" msgstr "" #: bin/gpodder:108 msgid "subscribe to the feed at URL" msgstr "" #: bin/gpodder:113 msgid "Mac OS X application process number" msgstr "" #: share/applications/gpodder.desktop.in.h:2 msgid "gPodder Podcast Client" msgstr "" #: share/applications/gpodder.desktop.in.h:3 msgid "Podcast Client" msgstr "" #: share/applications/gpodder.desktop.in.h:4 msgid "Subscribe to audio and video content from the web" msgstr "" #: share/applications/gpodder-url-handler.desktop.in.h:1 msgid "gPodder (subscribe to feed)" msgstr "" gpodder-3.9.0/po/nl.po0000644000016000001710000015771712654461625015705 0ustar jenkinsjenkins00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # # Translators: # Arne Stierman , 2012. # Michiel Pater , 2012. # Pieter De Decker , 2007. # Thomas Perl , 2006. msgid "" msgstr "" "Project-Id-Version: gPodder\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2016-02-03 20:31+0000\n" "PO-Revision-Date: 2013-01-19 12:30+0000\n" "Last-Translator: Thomas Perl \n" "Language-Team: Dutch (http://www.transifex.com/projects/p/gpodder/language/" "nl/)\n" "Language: nl\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" #: src/gpodder/config.py:55 #, python-format msgid "gPodder on %s" msgstr "gPodder heeft %s gevonden" #: src/gpodder/directory.py:95 #, fuzzy msgid "gpodder.net search" msgstr "gpodder.net" #: src/gpodder/directory.py:104 #, fuzzy msgid "OPML from web" msgstr "OPML bestanden" #: src/gpodder/directory.py:113 #, fuzzy msgid "OPML file" msgstr "OPML bestanden" #: src/gpodder/directory.py:122 share/gpodder/ui/gtk/gpodderwelcome.ui.h:1 msgid "Getting started" msgstr "Aan de slag" #: src/gpodder/directory.py:131 #, fuzzy msgid "gpodder.net Top 50" msgstr "gpodder.net" #: src/gpodder/directory.py:140 #, fuzzy msgid "gpodder.net Tags" msgstr "gpodder.net" #: src/gpodder/directory.py:152 #, fuzzy msgid "Soundcloud search" msgstr "%s op Soundcloud" #: src/gpodder/directory.py:165 #, fuzzy msgid "Imported OPML file" msgstr "Importeren van OPML bestand" #: src/gpodder/download.py:329 msgid "Wrong username/password" msgstr "Voer uw naam en wachtwoord in." #: src/gpodder/download.py:527 src/gpodder/sync.py:924 msgid "Added" msgstr "Toegevoegd" #: src/gpodder/download.py:527 src/gpodder/sync.py:924 msgid "Queued" msgstr "In wachtrij" #: src/gpodder/download.py:527 src/gpodder/gtkui/model.py:327 msgid "Downloading" msgstr "Downloaden" #: src/gpodder/download.py:528 src/gpodder/model.py:721 #: src/gpodder/sync.py:925 msgid "Finished" msgstr "Klaar" #: src/gpodder/download.py:528 src/gpodder/sync.py:925 msgid "Failed" msgstr "Mislukt" #: src/gpodder/download.py:528 src/gpodder/sync.py:925 msgid "Cancelled" msgstr "Geannuleerd" #: src/gpodder/download.py:528 src/gpodder/sync.py:925 msgid "Paused" msgstr "Pauze" #: src/gpodder/download.py:862 msgid "Missing content from server" msgstr "Ontbrekende componenten:" #: src/gpodder/download.py:868 #, python-format msgid "I/O Error: %(error)s: %(filename)s" msgstr "Fout bij het openen van %(error)s: %(filename)s" #: src/gpodder/download.py:875 #, python-format msgid "HTTP Error %(code)s: %(message)s" msgstr "Fout bij het openen van %(code)s: %(message)s" #: src/gpodder/download.py:879 src/gpodder/sync.py:1081 #, python-format msgid "Error: %s" msgstr "Fout: %s" #: src/gpodder/extensions.py:55 #, fuzzy msgid "Desktop Integration" msgstr "Ubuntu Unity Integratie" #: src/gpodder/extensions.py:56 #, fuzzy msgid "Interface" msgstr "Integer" #: src/gpodder/extensions.py:57 #, fuzzy msgid "Post download" msgstr "Selecteer afleveringen" #: src/gpodder/extensions.py:59 src/gpodder/model.py:779 #: src/gpodder/model.py:1225 msgid "Other" msgstr "Anders" #: src/gpodder/extensions.py:100 msgid "No description for this extension." msgstr "Geen omschrijving voor deze extensie" #: src/gpodder/extensions.py:212 #, python-format msgid "Command not found: %(command)s" msgstr "" #: src/gpodder/extensions.py:228 #, python-format msgid "Need at least one of the following commands: %(list_of_commands)s" msgstr "" #: src/gpodder/extensions.py:265 #, python-format msgid "Python module not found: %(module)s" msgstr "" #: src/gpodder/model.py:446 src/gpodder/plugins/soundcloud.py:156 msgid "No description available" msgstr "Geen beschrijving beschikbaar" #: src/gpodder/model.py:679 msgid "unknown" msgstr "onbekend" #: src/gpodder/model.py:746 msgid "Default" msgstr "" #: src/gpodder/model.py:747 msgid "Only keep latest" msgstr "" #: src/gpodder/model.py:1208 src/gpodder/model.py:1223 #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:10 msgid "Video" msgstr "Video" #: src/gpodder/model.py:1221 msgid "Audio" msgstr "Audio" #: src/gpodder/my.py:174 #, python-format msgid "Add %s" msgstr "Toevoegen van %s" #: src/gpodder/my.py:176 #, python-format msgid "Remove %s" msgstr "%s verwijderen?" #: src/gpodder/sync.py:196 msgid "Cancelled by user" msgstr "" #: src/gpodder/sync.py:199 msgid "Writing data to disk" msgstr "" #: src/gpodder/sync.py:295 msgid "Opening iPod database" msgstr "" #: src/gpodder/sync.py:305 msgid "iPod opened" msgstr "" #: src/gpodder/sync.py:316 msgid "Saving iPod database" msgstr "" #: src/gpodder/sync.py:321 msgid "Writing extended gtkpod database" msgstr "" #: src/gpodder/sync.py:397 src/gpodder/sync.py:680 src/gpodder/sync.py:874 #, python-format msgid "Removing %s" msgstr "" #: src/gpodder/sync.py:412 src/gpodder/sync.py:557 #, python-format msgid "Adding %s" msgstr "" #: src/gpodder/sync.py:430 #, python-format msgid "Error copying %(episode)s: Not enough free space on %(mountpoint)s" msgstr "" #: src/gpodder/sync.py:515 msgid "Opening MP3 player" msgstr "" #: src/gpodder/sync.py:518 msgid "MP3 player opened" msgstr "" #: src/gpodder/sync.py:576 #, python-format msgid "" "Not enough space in %(path)s: %(free)s available, but need at least %(need)s" msgstr "" #: src/gpodder/sync.py:603 src/gpodder/sync.py:611 #, python-format msgid "Error opening %(filename)s: %(message)s" msgstr "" #: src/gpodder/sync.py:780 src/gpodder/sync.py:786 msgid "MTP device" msgstr "" #: src/gpodder/sync.py:793 msgid "Opening the MTP device" msgstr "" #: src/gpodder/sync.py:803 #, python-format msgid "%s opened" msgstr "" #: src/gpodder/sync.py:808 #, python-format msgid "Closing %s" msgstr "" #: src/gpodder/sync.py:816 #, python-format msgid "%s closed" msgstr "" #: src/gpodder/sync.py:821 bin/gpo:708 #, python-format msgid "Adding %s..." msgstr "Toevoegen van %s..." #: src/gpodder/sync.py:924 msgid "Synchronizing" msgstr "" #: src/gpodder/util.py:429 #, python-format msgid "%(count)d day ago" msgid_plural "%(count)d days ago" msgstr[0] "%(count)d dag geleden" msgstr[1] "%(count)d dagen geleden" #: src/gpodder/util.py:508 msgid "Today" msgstr "Vandaag" #: src/gpodder/util.py:510 msgid "Yesterday" msgstr "Gisteren" #: src/gpodder/util.py:553 src/gpodder/util.py:556 msgid "(unknown)" msgstr "(onbekend)" #: src/gpodder/util.py:1193 src/gpodder/util.py:1212 #, python-format msgid "%(count)d second" msgid_plural "%(count)d seconds" msgstr[0] "%(count)d seconde" msgstr[1] "%(count)d seconden" #: src/gpodder/util.py:1206 #, python-format msgid "%(count)d hour" msgid_plural "%(count)d hours" msgstr[0] "%(count)d uur" msgstr[1] "%(count)d uren" #: src/gpodder/util.py:1209 #, python-format msgid "%(count)d minute" msgid_plural "%(count)d minutes" msgstr[0] "%(count)d minuut" msgstr[1] "%(count)d minuten" #: src/gpodder/util.py:1215 msgid "and" msgstr "en" #: src/gpodder/gtkui/config.py:50 msgid "Integer" msgstr "Integer" #: src/gpodder/gtkui/config.py:52 msgid "Float" msgstr "Float" #: src/gpodder/gtkui/config.py:54 msgid "Boolean" msgstr "Boolean" #: src/gpodder/gtkui/config.py:56 msgid "String" msgstr "String" #: src/gpodder/gtkui/desktopfile.py:70 #, python-format msgid "Command: %s" msgstr "Commando: %s" #: src/gpodder/gtkui/desktopfile.py:150 msgid "Default application" msgstr "Standaard programma" #: src/gpodder/gtkui/main.py:205 share/applications/gpodder.desktop.in.h:1 msgid "gPodder" msgstr "gPodder" #: src/gpodder/gtkui/main.py:288 msgid "Loading incomplete downloads" msgstr "Laden incomplete downloads" #: src/gpodder/gtkui/main.py:289 msgid "Some episodes have not finished downloading in a previous session." msgstr "De vorige keer zij sommige afleveringen niet volledig gedownload." #: src/gpodder/gtkui/main.py:291 #, python-format msgid "%(count)d partial file" msgid_plural "%(count)d partial files" msgstr[0] "%(count)d gedeeltelijk bestand" msgstr[1] "%(count)d gedeeltelijke bestanden" #: src/gpodder/gtkui/main.py:306 msgid "Resume all" msgstr "Hervat allen" #: src/gpodder/gtkui/main.py:316 msgid "Incomplete downloads from a previous session were found." msgstr "Onvolledige downloads van een vorige sessie gevonden." #: src/gpodder/gtkui/main.py:414 msgid "Action" msgstr "Actie" #: src/gpodder/gtkui/main.py:461 msgid "Confirm changes from gpodder.net" msgstr "Download lijst van gpodder.net" #: src/gpodder/gtkui/main.py:462 msgid "Select the actions you want to carry out." msgstr "Selecteer de afleveringen die u nu wilt downloaden." #: src/gpodder/gtkui/main.py:502 msgid "Uploading subscriptions" msgstr "Uploaden abonnementen" #: src/gpodder/gtkui/main.py:503 msgid "Your subscriptions are being uploaded to the server." msgstr "Uw abonnementenlijst is bijgewerkt." #: src/gpodder/gtkui/main.py:508 msgid "List uploaded successfully." msgstr "Lijst succesvol geУМpload." #: src/gpodder/gtkui/main.py:515 msgid "Error while uploading" msgstr "Fout tijdens uploaden" #: src/gpodder/gtkui/main.py:800 src/gpodder/gtkui/main.py:928 #: src/gpodder/gtkui/main.py:2622 src/gpodder/gtkui/main.py:2815 #: src/gpodder/gtkui/desktop/episodeselector.py:132 #: src/gpodder/gtkui/desktop/sync.py:270 msgid "Episode" msgstr "Aflevering" #: src/gpodder/gtkui/main.py:819 msgid "Size" msgstr "Grootte" #: src/gpodder/gtkui/main.py:824 msgid "Duration" msgstr "Duur" #: src/gpodder/gtkui/main.py:828 msgid "Released" msgstr "Uitgegeven" #: src/gpodder/gtkui/main.py:855 msgid "Visible columns" msgstr "Zichtbare kolommen" #: src/gpodder/gtkui/main.py:948 src/gpodder/gtkui/main.py:1108 #: share/gpodder/ui/gtk/gpodder.ui.h:45 msgid "Progress" msgstr "Voortgang" #: src/gpodder/gtkui/main.py:982 msgid "Loading episodes" msgstr "Downloaden van nieuwe afleveringen" #: src/gpodder/gtkui/main.py:985 msgid "No episodes in current view" msgstr "Geen afleveringen geselecteerd" #: src/gpodder/gtkui/main.py:987 msgid "No episodes available" msgstr "Geen afleveringen beschikbaar" #: src/gpodder/gtkui/main.py:993 msgid "No podcasts in this view" msgstr "Geen podcast geselecteerd" #: src/gpodder/gtkui/main.py:995 msgid "No subscriptions" msgstr "Geen abonnementen" #: src/gpodder/gtkui/main.py:997 msgid "No active tasks" msgstr "" #: src/gpodder/gtkui/main.py:1112 src/gpodder/gtkui/main.py:1114 #, python-format msgid "%(count)d active" msgid_plural "%(count)d active" msgstr[0] "%(count)d actief" msgstr[1] "%(count)d actief" #: src/gpodder/gtkui/main.py:1116 #, python-format msgid "%(count)d failed" msgid_plural "%(count)d failed" msgstr[0] "%(count)d mislukt" msgstr[1] "%(count)d mislukt" #: src/gpodder/gtkui/main.py:1118 #, python-format msgid "%(count)d queued" msgid_plural "%(count)d queued" msgstr[0] "%(count)d in de wachtrij" msgstr[1] "%(count)d in de wachtrij" #: src/gpodder/gtkui/main.py:1132 #, python-format msgid "downloading %(count)d file" msgid_plural "downloading %(count)d files" msgstr[0] "downloaden van %(count)d bestand" msgstr[1] "downloaden van %(count)d bestanden" #: src/gpodder/gtkui/main.py:1142 #, python-format msgid "synchronizing %(count)d file" msgid_plural "synchronizing %(count)d files" msgstr[0] "" msgstr[1] "" #: src/gpodder/gtkui/main.py:1144 #, python-format msgid "%(queued)d task queued" msgid_plural "%(queued)d tasks queued" msgstr[0] "" msgstr[1] "" #: src/gpodder/gtkui/main.py:1168 msgid "Please report this problem and restart gPodder:" msgstr "Maak a.u.b. melding van dit probleem en herstart gPodder:" #: src/gpodder/gtkui/main.py:1168 msgid "Unhandled exception" msgstr "Onbehandelde uitzondering" #: src/gpodder/gtkui/main.py:1235 #, python-format msgid "Feedparser error: %s" msgstr "Feedparser foutmelding: %s" #: src/gpodder/gtkui/main.py:1371 msgid "Could not download some episodes:" msgstr "" #: src/gpodder/gtkui/main.py:1373 src/gpodder/gtkui/main.py:1376 msgid "Downloads finished" msgstr "Downloads compleet" #: src/gpodder/gtkui/main.py:1379 msgid "Downloads failed" msgstr "Downloads mislukt" #: src/gpodder/gtkui/main.py:1383 msgid "Could not sync some episodes:" msgstr "" #: src/gpodder/gtkui/main.py:1385 src/gpodder/gtkui/main.py:1388 msgid "Device synchronization finished" msgstr "" #: src/gpodder/gtkui/main.py:1391 msgid "Device synchronization failed" msgstr "" #: src/gpodder/gtkui/main.py:1434 #, python-format msgid "%(count)d more episode" msgid_plural "%(count)d more episodes" msgstr[0] "Nog %(count)d aflevering" msgstr[1] "Nog %(count)d afleveringen" #: src/gpodder/gtkui/main.py:1508 msgid "Start download now" msgstr "Start download direct" #: src/gpodder/gtkui/main.py:1510 src/gpodder/gtkui/main.py:1719 #: src/gpodder/gtkui/desktop/episodeselector.py:144 #: share/gpodder/ui/gtk/gpodder.ui.h:20 msgid "Download" msgstr "Download" #: src/gpodder/gtkui/main.py:1511 share/gpodder/ui/gtk/gpodder.ui.h:21 msgid "Cancel" msgstr "Annuleren" #: src/gpodder/gtkui/main.py:1512 msgid "Pause" msgstr "Pauze" #: src/gpodder/gtkui/main.py:1514 msgid "Remove from list" msgstr "Verwijder van lijst" #: src/gpodder/gtkui/main.py:1553 share/gpodder/ui/gtk/gpodder.ui.h:13 msgid "Update podcast" msgstr "Update podcast" #: src/gpodder/gtkui/main.py:1560 msgid "Open download folder" msgstr "Open downloadmap" #: src/gpodder/gtkui/main.py:1566 msgid "Mark episodes as old" msgstr "Aflevering als afgespeeld markeren" #: src/gpodder/gtkui/main.py:1570 src/gpodder/gtkui/main.py:1778 msgid "Archive" msgstr "Archiveren" #: src/gpodder/gtkui/main.py:1575 msgid "Remove podcast" msgstr "Verwijder podcast" #: src/gpodder/gtkui/main.py:1590 share/gpodder/ui/gtk/gpodder.ui.h:10 msgid "Podcast settings" msgstr "Podcast instellingen" #: src/gpodder/gtkui/main.py:1650 msgid "Error converting file." msgstr "Fout bij conversie van bestand." #: src/gpodder/gtkui/main.py:1650 msgid "Bluetooth file transfer" msgstr "Bluetooth bestandsoverdracht" #: src/gpodder/gtkui/main.py:1709 msgid "Preview" msgstr "Voorvertoning" #: src/gpodder/gtkui/main.py:1711 msgid "Stream" msgstr "Streamen" #: src/gpodder/gtkui/main.py:1755 msgid "Send to" msgstr "Stuur naar" #: src/gpodder/gtkui/main.py:1757 msgid "Local folder" msgstr "Lokale map" #: src/gpodder/gtkui/main.py:1762 msgid "Bluetooth device" msgstr "Bluetooth apparaat" #: src/gpodder/gtkui/main.py:1769 msgid "New" msgstr "Nieuw" #: src/gpodder/gtkui/main.py:1785 share/gpodder/ui/gtk/gpodder.ui.h:25 msgid "Episode details" msgstr "Details aflevering" #: src/gpodder/gtkui/main.py:1938 msgid "Please check your media player settings in the preferences dialog." msgstr "Controleer uw mediaspeler instellingen bij Voorkeuren." #: src/gpodder/gtkui/main.py:1939 msgid "Error opening player" msgstr "Fout bij het openen van speler" #: src/gpodder/gtkui/main.py:2178 msgid "Adding podcasts" msgstr "Toevoegen van podcast" #: src/gpodder/gtkui/main.py:2179 msgid "Please wait while episode information is downloaded." msgstr "Moment geduld a.u.b.: informatie over de aflevering wordt opgehaald." #: src/gpodder/gtkui/main.py:2186 msgid "Existing subscriptions skipped" msgstr "EУЉn abonnement geУЋxporteerd" #: src/gpodder/gtkui/main.py:2187 msgid "You are already subscribed to these podcasts:" msgstr "U bent al geabonneerd op deze podcasts:" #: src/gpodder/gtkui/main.py:2195 msgid "Podcast requires authentication" msgstr "Podcast vereist authenticatie" #: src/gpodder/gtkui/main.py:2196 #, python-format msgid "Please login to %s:" msgstr "Log in op %s:" #: src/gpodder/gtkui/main.py:2204 src/gpodder/gtkui/main.py:2299 msgid "Authentication failed" msgstr "Authenticatie mislukt" #: src/gpodder/gtkui/main.py:2210 msgid "Website redirection detected" msgstr "Website omleiding gedetecteerd" #: src/gpodder/gtkui/main.py:2211 #, python-format msgid "The URL %(url)s redirects to %(target)s." msgstr "DE URL %(url)s verwijst naar %(target)s." #: src/gpodder/gtkui/main.py:2212 msgid "Do you want to visit the website now?" msgstr "Weet u zeker dat u gPodder wilt afsluiten?" #: src/gpodder/gtkui/main.py:2221 msgid "Could not add some podcasts" msgstr "De podcast kon niet worden toegevoegd." #: src/gpodder/gtkui/main.py:2222 msgid "Some podcasts could not be added to your list:" msgstr "Sommige podcasts konden niet toegevoegd worden aan uw lijst:" #: src/gpodder/gtkui/main.py:2224 msgid "Unknown" msgstr "Onbekend" #: src/gpodder/gtkui/main.py:2308 msgid "Redirection detected" msgstr "Verwijzing gedetecteerd" #: src/gpodder/gtkui/main.py:2342 msgid "Merging episode actions" msgstr "Verwerken aflevering acties" #: src/gpodder/gtkui/main.py:2343 msgid "Episode actions from gpodder.net are merged." msgstr "Aflevering acties van gpodder.net zijn samengevoegd." #: src/gpodder/gtkui/main.py:2368 msgid "Cancelling..." msgstr "Annuleren..." #: src/gpodder/gtkui/main.py:2377 msgid "Please connect to a network, then try again." msgstr "" #: src/gpodder/gtkui/main.py:2378 msgid "No network connection" msgstr "" #: src/gpodder/gtkui/main.py:2399 #, python-format msgid "Updating %(count)d feed..." msgid_plural "Updating %(count)d feeds..." msgstr[0] "Bijwerken van %(count)d feed..." msgstr[1] "Bijwerken van %(count)d feeds..." #: src/gpodder/gtkui/main.py:2417 #, python-format msgid "Error while updating %(url)s: %(message)s" msgstr "Fout tijdens updaten van %(url)s: %(message)s" #: src/gpodder/gtkui/main.py:2419 #, python-format msgid "The feed at %(url)s could not be updated." msgstr "Fout bij het openen van %(url)s" #: src/gpodder/gtkui/main.py:2420 msgid "Error while updating feed" msgstr "Fout tijdens het updaten van feed" #: src/gpodder/gtkui/main.py:2435 #, python-format msgid "Updated %(podcast)s (%(position)d/%(total)d)" msgstr "%(podcast)s (%(position)d/%(total)d) bijgewerkt." #: src/gpodder/gtkui/main.py:2466 msgid "No new episodes" msgstr "Geen nieuwe afleveringen" #: src/gpodder/gtkui/main.py:2479 #, python-format msgid "Downloading %(count)d new episode." msgid_plural "Downloading %(count)d new episodes." msgstr[0] "%(count)d nieuwe aflevering gedownload." msgstr[1] "%(count)d nieuwe afleveringen gedownload." #: src/gpodder/gtkui/main.py:2480 src/gpodder/gtkui/main.py:2484 #: src/gpodder/gtkui/main.py:2833 msgid "New episodes available" msgstr "Nieuwe afleveringen beschikbaar" #: src/gpodder/gtkui/main.py:2483 #, python-format msgid "%(count)d new episode added to download list." msgid_plural "%(count)d new episodes added to download list." msgstr[0] "%(count)d nieuwe aflevering aan download lijst toegevoegd." msgstr[1] "%(count)d nieuwe afleveringen aan download lijst toegevoegd." #: src/gpodder/gtkui/main.py:2490 #, python-format msgid "%(count)d new episode available" msgid_plural "%(count)d new episodes available" msgstr[0] "%(count)d nieuwe aflevering beschikbaar" msgstr[1] "%(count)d nieuwe afleveringen beschikbaar" #: src/gpodder/gtkui/main.py:2509 msgid "Quit gPodder" msgstr "gPodder afsluiten" #: src/gpodder/gtkui/main.py:2510 msgid "" "You are downloading episodes. You can resume downloads the next time you " "start gPodder. Do you want to quit now?" msgstr "" "U bent afleveringen aan het downloaden. U kan deze hervatten de volgende " "keer dat u gPodder start. Wilt u gPodder afsluiten?" #: src/gpodder/gtkui/main.py:2559 msgid "Episodes are locked" msgstr "Afleveringen zijn beveiligd" #: src/gpodder/gtkui/main.py:2560 msgid "" "The selected episodes are locked. Please unlock the episodes that you want " "to delete before trying to delete them." msgstr "" "De geselecteerde afleveringen zijn beveiligd. Verwijder de beveiliging en " "probeer het opnieuw." #: src/gpodder/gtkui/main.py:2565 #, python-format msgid "Delete %(count)d episode?" msgid_plural "Delete %(count)d episodes?" msgstr[0] "%(count)d aflevering verwijderen?" msgstr[1] "%(count)d afleveringen verwijderen?" #: src/gpodder/gtkui/main.py:2566 msgid "Deleting episodes removes downloaded files." msgstr "Selecteer de podcasts die u wilt verwijderen van uw apparaat." #: src/gpodder/gtkui/main.py:2571 msgid "Deleting episodes" msgstr "Afleveringen selecteren" #: src/gpodder/gtkui/main.py:2572 msgid "Please wait while episodes are deleted" msgstr "Wacht a.u.b terwijl de afleveringen verwijderd worden." #: src/gpodder/gtkui/main.py:2625 #, python-format msgid "Select older than %(count)d day" msgid_plural "Select older than %(count)d days" msgstr[0] "Ouder dan %(count)d dag" msgstr[1] "Ouder dan %(count)d dagen" #: src/gpodder/gtkui/main.py:2627 msgid "Select played" msgstr "Selecteer afgespeeld" #: src/gpodder/gtkui/main.py:2628 msgid "Select finished" msgstr "" #: src/gpodder/gtkui/main.py:2632 msgid "Select the episodes you want to delete:" msgstr "Selecteer de aflevering die u wilt verwijderen:" #: src/gpodder/gtkui/main.py:2648 share/gpodder/ui/gtk/gpodder.ui.h:4 msgid "Delete episodes" msgstr "Geselecteerde afleveringen verwijderen" #: src/gpodder/gtkui/main.py:2703 src/gpodder/gtkui/main.py:2934 #: src/gpodder/gtkui/main.py:3034 msgid "No podcast selected" msgstr "Geen podcast geselecteerd" #: src/gpodder/gtkui/main.py:2704 msgid "Please select a podcast in the podcasts list to update." msgstr "Selecteer een podcast die u wilt updaten." #: src/gpodder/gtkui/main.py:2774 #, python-format msgid "Download error while downloading %(episode)s: %(message)s" msgstr "Fout tijdens downloaden van: %(episode)s: %(message)s" #: src/gpodder/gtkui/main.py:2775 msgid "Download error" msgstr "Fout tijdens downloaden" #: src/gpodder/gtkui/main.py:2818 msgid "Select the episodes you want to download:" msgstr "Selecteer de afleveringen die u nu wilt downloaden." #: src/gpodder/gtkui/main.py:2841 msgid "Mark as old" msgstr "Markeer als afgespeeld" #: src/gpodder/gtkui/main.py:2848 msgid "Please check for new episodes later." msgstr "Controleren op nieuwe afleveringen" #: src/gpodder/gtkui/main.py:2849 msgid "No new episodes available" msgstr "Geen nieuwe afleveringen beschikbaar" #: src/gpodder/gtkui/main.py:2900 msgid "Login to gpodder.net" msgstr "Ga naar gpodder.net" #: src/gpodder/gtkui/main.py:2901 msgid "Please login to download your subscriptions." msgstr "U moet inloggen om uw abonnementen te downloaden" #: src/gpodder/gtkui/main.py:2916 msgid "Subscriptions on gpodder.net" msgstr "Upload abonnementen geslaagd." #: src/gpodder/gtkui/main.py:2935 msgid "Please select a podcast in the podcasts list to edit." msgstr "Kies een podcast uit de abonnementenlijst om ze te bewerken." #: src/gpodder/gtkui/main.py:2949 msgid "Podcast" msgstr "Podcast" #: src/gpodder/gtkui/main.py:2955 share/gpodder/ui/gtk/gpodder.ui.h:12 msgid "Remove podcasts" msgstr "Verwijder podcast" #: src/gpodder/gtkui/main.py:2956 msgid "Select the podcast you want to remove." msgstr "Selecteer de afleveringen die u wilt verwijderen" #: src/gpodder/gtkui/main.py:2960 #: src/gpodder/gtkui/desktop/episodeselector.py:105 msgid "Remove" msgstr "Verwijder" #: src/gpodder/gtkui/main.py:2969 msgid "Removing podcast" msgstr "Podcast wordt verwijderd" #: src/gpodder/gtkui/main.py:2970 msgid "Please wait while the podcast is removed" msgstr "Moment a.u.b. podcast wordt verwijderd" #: src/gpodder/gtkui/main.py:2971 msgid "Do you really want to remove this podcast and its episodes?" msgstr "" "Weet u zeker dat u deze podcast en alle gedownloade afleveringen wilt " "verwijderen?" #: src/gpodder/gtkui/main.py:2973 msgid "Removing podcasts" msgstr "Verwijderen van podcasts" #: src/gpodder/gtkui/main.py:2974 msgid "Please wait while the podcasts are removed" msgstr "Even wachten, de podcasts worden verwijderd" #: src/gpodder/gtkui/main.py:2975 msgid "Do you really want to remove the selected podcasts and their episodes?" msgstr "" "Weet u zeker dat u de geselecteerde podcasts en alle gedownloade " "afleveringen wilt verwijderen?" #: src/gpodder/gtkui/main.py:3035 msgid "Please select a podcast in the podcasts list to remove." msgstr "Selecteer een podcast in de lijst om te verwijderen" #: src/gpodder/gtkui/main.py:3045 msgid "OPML files" msgstr "OPML bestanden" #: src/gpodder/gtkui/main.py:3050 msgid "Import from OPML" msgstr "Importeren van OPML" #: src/gpodder/gtkui/main.py:3064 msgid "Import podcasts from OPML file" msgstr "Importeer podcasts van OPML bestand" #: src/gpodder/gtkui/main.py:3071 msgid "Nothing to export" msgstr "Niets om te exporteren" #: src/gpodder/gtkui/main.py:3072 msgid "" "Your list of podcast subscriptions is empty. Please subscribe to some " "podcasts first before trying to export your subscription list." msgstr "" "Uw abonnementenlijst is leeg. Abonneer u eerst op een podcast voordat u uw " "abonnementenlijst exporteert." #: src/gpodder/gtkui/main.py:3076 msgid "Export to OPML" msgstr "Naar OPML exporteren" #: src/gpodder/gtkui/main.py:3087 #, python-format msgid "%(count)d subscription exported" msgid_plural "%(count)d subscriptions exported" msgstr[0] "%(count)d abonnement geУЋxporteerd" msgstr[1] "%(count)d abonnementen geУЋxporteerd" #: src/gpodder/gtkui/main.py:3088 msgid "Your podcast list has been successfully exported." msgstr "De export van uw lijst met podcasts is geslaagd. " #: src/gpodder/gtkui/main.py:3090 msgid "Could not export OPML to file. Please check your permissions." msgstr "Kan OPML niet naar bestand exporteren. Controleer uw rechten." #: src/gpodder/gtkui/main.py:3090 msgid "OPML export failed" msgstr "Exporteren naar OPML mislukt" #: src/gpodder/gtkui/main.py:3117 msgid "No updates available" msgstr "Geen updates beschikbaar" #: src/gpodder/gtkui/main.py:3118 msgid "You have the latest version of gPodder." msgstr "Je hebt de laatste versie van gPodder" #: src/gpodder/gtkui/main.py:3122 msgid "New version available" msgstr "Nieuwe versie beschikbaar" #: src/gpodder/gtkui/main.py:3124 #, python-format msgid "Installed version: %s" msgstr "GeУЏnstalleerde versie: %s" #: src/gpodder/gtkui/main.py:3125 #, python-format msgid "Newest version: %s" msgstr "Nieuwste versie: %s" #: src/gpodder/gtkui/main.py:3126 #, python-format msgid "Release date: %s" msgstr "" #: src/gpodder/gtkui/main.py:3128 msgid "Download the latest version from gpodder.org?" msgstr "Download de laatste versie van gpodder.org?" #: src/gpodder/gtkui/main.py:3141 msgid "About gPodder" msgstr "Over gPodder" #: src/gpodder/gtkui/main.py:3424 #, fuzzy msgid "Please register a YouTube API key and set it in the preferences." msgstr "Controleer uw mediaspeler instellingen bij Voorkeuren." #: src/gpodder/gtkui/main.py:3425 msgid "Would you like to set up an API key now?" msgstr "" #: src/gpodder/gtkui/main.py:3425 msgid "API key required" msgstr "" #: src/gpodder/gtkui/main.py:3444 bin/gpo:631 #, fuzzy msgid "No unique URL found" msgstr "Geen feeds gevonden" #: src/gpodder/gtkui/main.py:3449 bin/gpo:637 #, fuzzy msgid "Already subscribed" msgstr "U bent al geabonneerd op deze podcasts:" #: src/gpodder/gtkui/main.py:3458 bin/gpo:649 #, python-format msgid "Make sure the API key is correct. Error: %(message)s" msgstr "" #: src/gpodder/gtkui/main.py:3459 #, fuzzy msgid "Error getting YouTube channels" msgstr "Fout bij toepassen instelling" #: src/gpodder/gtkui/main.py:3462 #, fuzzy msgid "Successfully migrated subscriptions" msgstr "Succesvol toegevoegd %s." #: src/gpodder/gtkui/main.py:3464 #, fuzzy msgid "Subscriptions are up to date" msgstr "Abonnement gepauzeerd" #: src/gpodder/gtkui/main.py:3467 msgid "These URLs failed:" msgstr "" #: src/gpodder/gtkui/main.py:3469 #, fuzzy msgid "Could not migrate some subscriptions" msgstr "De podcast kon niet worden toegevoegd." #: src/gpodder/gtkui/main.py:3493 msgid "Cannot start gPodder" msgstr "Niet mogelijk om gPodder te starten" #: src/gpodder/gtkui/main.py:3494 #, python-format msgid "D-Bus error: %s" msgstr "D-Bus error: %s" #: src/gpodder/gtkui/model.py:68 #, python-format msgid "released %s" msgstr "uitgegeven %s" #: src/gpodder/gtkui/model.py:69 src/gpodder/gtkui/model.py:87 #: src/gpodder/gtkui/model.py:237 src/gpodder/gtkui/shownotes.py:84 #, python-format msgid "from %s" msgstr "van %s" #: src/gpodder/gtkui/model.py:80 src/gpodder/gtkui/model.py:393 msgid "played" msgstr "afgespeeld" #: src/gpodder/gtkui/model.py:82 msgid "unplayed" msgstr "niet afgespeeld" #: src/gpodder/gtkui/model.py:85 msgid "today" msgstr "vandaag" #: src/gpodder/gtkui/model.py:86 #, python-format msgid "downloaded %s" msgstr "Download %s" #: src/gpodder/gtkui/model.py:337 msgid "Deleted" msgstr "Verwijderd" #: src/gpodder/gtkui/model.py:342 msgid "New episode" msgstr "Nieuwe aflevering" #: src/gpodder/gtkui/model.py:356 msgid "Downloaded episode" msgstr "Gedownloade aflevering" #: src/gpodder/gtkui/model.py:359 msgid "Downloaded video episode" msgstr "Gedownloade video aflevering" #: src/gpodder/gtkui/model.py:362 msgid "Downloaded image" msgstr "Gedownloade afbeelding" #: src/gpodder/gtkui/model.py:365 msgid "Downloaded file" msgstr "Gedownload bestand" #: src/gpodder/gtkui/model.py:380 msgid "missing file" msgstr "missend bestand" #: src/gpodder/gtkui/model.py:384 msgid "never displayed" msgstr "nooit weergegeven" #: src/gpodder/gtkui/model.py:386 msgid "never played" msgstr "nooit gespeeld" #: src/gpodder/gtkui/model.py:388 msgid "never opened" msgstr "nooit geopend" #: src/gpodder/gtkui/model.py:391 msgid "displayed" msgstr "weergegeven" #: src/gpodder/gtkui/model.py:395 msgid "opened" msgstr "geopend" #: src/gpodder/gtkui/model.py:397 msgid "deletion prevented" msgstr "verwijdering voorkomen" #: src/gpodder/gtkui/model.py:432 share/gpodder/ui/gtk/gpodder.ui.h:32 msgid "All episodes" msgstr "Alle afleveringen" #: src/gpodder/gtkui/model.py:433 msgid "from all podcasts" msgstr "van alle podcasts" #: src/gpodder/gtkui/model.py:625 msgid "Subscription paused" msgstr "Abonnement gepauzeerd" #: src/gpodder/gtkui/shownotes.py:118 #, fuzzy msgid "Please select an episode" msgstr "Afleveringen selecteren" #: src/gpodder/gtkui/interface/addpodcast.py:74 msgid "Nothing to paste." msgstr "Niets om te exporteren" #: src/gpodder/gtkui/interface/addpodcast.py:74 msgid "Clipboard is empty" msgstr "Klemboard is leeg" #: src/gpodder/gtkui/interface/common.py:160 msgid "Username" msgstr "Gebruikersnaam" #: src/gpodder/gtkui/interface/common.py:163 msgid "New user" msgstr "Nieuwe gebruiker" #: src/gpodder/gtkui/interface/common.py:170 msgid "Login" msgstr "Login" #: src/gpodder/gtkui/interface/common.py:172 msgid "Authentication required" msgstr "Authenticatie vereist" #: src/gpodder/gtkui/interface/common.py:203 msgid "Password" msgstr "Wachtwoord" #: src/gpodder/gtkui/interface/common.py:225 msgid "Select destination" msgstr "Kies bestemming" #: src/gpodder/gtkui/interface/configeditor.py:34 msgid "Setting" msgstr "Instelling" #: src/gpodder/gtkui/interface/configeditor.py:41 msgid "Set to" msgstr "Ingesteld op" #: src/gpodder/gtkui/interface/configeditor.py:81 #, python-format msgid "Cannot set %(field)s to %(value)s. Needed data type: %(datatype)s" msgstr "" "Kan de waarde van %(field)s niet veranderen naar %(value)s. " "Vereiste datatype: %(datatype)s" #: src/gpodder/gtkui/interface/configeditor.py:85 msgid "Error setting option" msgstr "Fout bij toepassen instelling" #: src/gpodder/gtkui/desktop/channel.py:100 msgid "Add section" msgstr "" #: src/gpodder/gtkui/desktop/channel.py:100 msgid "New section:" msgstr "" #: src/gpodder/gtkui/desktop/channel.py:133 msgid "Select new podcast cover artwork" msgstr "Selecteer afbeelding voor podcast" #: src/gpodder/gtkui/desktop/channel.py:161 msgid "You can only drop a single image or URL here." msgstr "U kan maar УЉУЉn afbeelding of URL naar hier slepen." #: src/gpodder/gtkui/desktop/channel.py:161 #: src/gpodder/gtkui/desktop/channel.py:171 msgid "Drag and drop" msgstr "Slepen" #: src/gpodder/gtkui/desktop/channel.py:171 msgid "You can only drop local files and http:// URLs here." msgstr "U kan hier enkel lokale bestanden en http://-URL's naartoe slepen." #: src/gpodder/gtkui/desktop/deviceplaylist.py:98 #, fuzzy, python-format msgid "Folder %s could not be created." msgstr "Fout bij het openen van %(url)s" #: src/gpodder/gtkui/desktop/deviceplaylist.py:98 #, fuzzy msgid "Error writing playlist" msgstr "Fout bij het openen van speler" #: src/gpodder/gtkui/desktop/episodeselector.py:288 #: share/gpodder/ui/gtk/gpodderepisodeselector.ui.h:2 msgid "Select all" msgstr "Alles selecteren" #: src/gpodder/gtkui/desktop/episodeselector.py:292 #: share/gpodder/ui/gtk/gpodderepisodeselector.ui.h:3 msgid "Select none" msgstr "Niets selecteren" #: src/gpodder/gtkui/desktop/episodeselector.py:324 msgid "Nothing selected" msgstr "Niets geselecteerd" #: src/gpodder/gtkui/desktop/episodeselector.py:325 #, python-format msgid "%(count)d episode" msgid_plural "%(count)d episodes" msgstr[0] "%(count)d aflevering" msgstr[1] "%(count)d afleveringen" #: src/gpodder/gtkui/desktop/episodeselector.py:327 #, python-format msgid "size: %s" msgstr "Totale grootte: %s" #: src/gpodder/gtkui/desktop/podcastdirectory.py:238 #, fuzzy msgid "Loading podcasts" msgstr "Toevoegen van podcast" #: src/gpodder/gtkui/desktop/podcastdirectory.py:239 #, fuzzy msgid "Please wait while the podcast list is downloaded" msgstr "Moment a.u.b. podcast wordt verwijderd" #: src/gpodder/gtkui/desktop/preferences.py:51 #: src/gpodder/gtkui/desktop/preferences.py:93 msgid "Do nothing" msgstr "Niets doen" #: src/gpodder/gtkui/desktop/preferences.py:52 msgid "Show episode list" msgstr "Afleveringen weergeven" #: src/gpodder/gtkui/desktop/preferences.py:53 msgid "Add to download list" msgstr "Voeg toe aan download lijst" #: src/gpodder/gtkui/desktop/preferences.py:54 msgid "Download immediately" msgstr "Download direct" #: src/gpodder/gtkui/desktop/preferences.py:72 msgid "None" msgstr "" #: src/gpodder/gtkui/desktop/preferences.py:73 msgid "iPod" msgstr "" #: src/gpodder/gtkui/desktop/preferences.py:74 msgid "Filesystem-based" msgstr "" #: src/gpodder/gtkui/desktop/preferences.py:94 msgid "Mark as played" msgstr "" #: src/gpodder/gtkui/desktop/preferences.py:95 msgid "Delete from gPodder" msgstr "" #: src/gpodder/gtkui/desktop/preferences.py:123 #, python-format msgid "Custom (%(format_ids)s)" msgstr "" #: src/gpodder/gtkui/desktop/preferences.py:318 msgid "Name" msgstr "Naam" #: src/gpodder/gtkui/desktop/preferences.py:369 #, fuzzy msgid "Documentation" msgstr "Duur" #: src/gpodder/gtkui/desktop/preferences.py:374 #, fuzzy msgid "Extension info" msgstr "Extensie module info" #: src/gpodder/gtkui/desktop/preferences.py:379 msgid "Support the author" msgstr "" #: src/gpodder/gtkui/desktop/preferences.py:413 msgid "Extension cannot be activated" msgstr "Extensie kan niet worden geactiveerd" #: src/gpodder/gtkui/desktop/preferences.py:426 msgid "Extension module info" msgstr "Extensie module info" #: src/gpodder/gtkui/desktop/preferences.py:463 msgid "Configure audio player" msgstr "Configureer audio speler" #: src/gpodder/gtkui/desktop/preferences.py:464 #: src/gpodder/gtkui/desktop/preferences.py:474 msgid "Command:" msgstr "Opdrachtregel:" #: src/gpodder/gtkui/desktop/preferences.py:473 msgid "Configure video player" msgstr "Configureer video speler" #: src/gpodder/gtkui/desktop/preferences.py:485 #: src/gpodder/gtkui/desktop/preferences.py:503 msgid "manually" msgstr "handmatig" #: src/gpodder/gtkui/desktop/preferences.py:505 #, python-format msgid "after %(count)d day" msgid_plural "after %(count)d days" msgstr[0] "na %(count)d dag" msgstr[1] "na %(count)d dagen" #: src/gpodder/gtkui/desktop/preferences.py:541 msgid "Replace subscription list on server" msgstr "Vervang abonnementen lijst op server" #: src/gpodder/gtkui/desktop/preferences.py:542 msgid "" "Remote podcasts that have not been added locally will be removed on the " "server. Continue?" msgstr "" "Podcasts op servers die niet lokaal worden toegevoegd, worden verwijderd op " "de server. Doorgaan?" #: src/gpodder/gtkui/desktop/preferences.py:621 msgid "Select folder for mount point" msgstr "" #: src/gpodder/gtkui/desktop/preferences.py:638 msgid "Select folder for playlists" msgstr "" #: src/gpodder/gtkui/desktop/sync.py:86 msgid "No device configured" msgstr "" #: src/gpodder/gtkui/desktop/sync.py:87 msgid "Please set up your device in the preferences dialog." msgstr "" #: src/gpodder/gtkui/desktop/sync.py:91 msgid "Cannot open device" msgstr "" #: src/gpodder/gtkui/desktop/sync.py:92 msgid "Please check the settings in the preferences dialog." msgstr "" #: src/gpodder/gtkui/desktop/sync.py:139 msgid "Not enough space left on device" msgstr "" #: src/gpodder/gtkui/desktop/sync.py:140 #, python-format msgid "" "Additional free space required: %(required_space)s\n" "Do you want to continue?" msgstr "" #: src/gpodder/gtkui/desktop/sync.py:199 #, fuzzy msgid "Update successful" msgstr "Lijst succesvol geУМpload." #: src/gpodder/gtkui/desktop/sync.py:200 msgid "The playlist on your MP3 player has been updated." msgstr "" #: src/gpodder/gtkui/desktop/sync.py:274 msgid "Episodes have been deleted on device" msgstr "" #: src/gpodder/gtkui/desktop/sync.py:285 #, fuzzy msgid "Error writing playlist files" msgstr "Fout bij conversie van bestand." #: src/gpodder/plugins/soundcloud.py:154 msgid "Unknown track" msgstr "onbekend" #: src/gpodder/plugins/soundcloud.py:181 #, python-format msgid "%s on Soundcloud" msgstr "%s op Soundcloud" #: src/gpodder/plugins/soundcloud.py:190 #, python-format msgid "Tracks published by %s on Soundcloud." msgstr "Tracks gepubliceerd door %s op Soundcloud." #: src/gpodder/plugins/soundcloud.py:217 #, python-format msgid "%s's favorites on Soundcloud" msgstr "%s's favorieten op Soundcloud" #: src/gpodder/plugins/soundcloud.py:223 #, python-format msgid "Tracks favorited by %s on Soundcloud." msgstr "Favoriete tracks van %s op SoundCloud." #: share/gpodder/extensions/audio_converter.py:20 #, fuzzy msgid "Convert audio files" msgstr "Conversie mislukt" #: share/gpodder/extensions/audio_converter.py:21 msgid "Transcode audio files to mp3/ogg" msgstr "" #: share/gpodder/extensions/audio_converter.py:84 #: share/gpodder/extensions/video_converter.py:86 #, python-format msgid "Convert to %(format)s" msgstr "" #: share/gpodder/extensions/audio_converter.py:111 #: share/gpodder/extensions/rockbox_convert2mp4.py:65 #: share/gpodder/extensions/video_converter.py:111 msgid "File converted" msgstr "" #: share/gpodder/extensions/audio_converter.py:114 #: share/gpodder/extensions/video_converter.py:114 msgid "Conversion failed" msgstr "Conversie mislukt" #: share/gpodder/extensions/concatenate_videos.py:20 #: share/gpodder/extensions/concatenate_videos.py:100 #, fuzzy msgid "Concatenate videos" msgstr "Conversie mislukt" #: share/gpodder/extensions/concatenate_videos.py:21 msgid "Add a context menu item for concatenating multiple videos" msgstr "" #: share/gpodder/extensions/concatenate_videos.py:37 msgid "Save video" msgstr "" #: share/gpodder/extensions/concatenate_videos.py:66 #, fuzzy msgid "Concatenating video files" msgstr "Conversie mislukt" #: share/gpodder/extensions/concatenate_videos.py:67 #, python-format msgid "Writing %(filename)s" msgstr "" #: share/gpodder/extensions/concatenate_videos.py:78 msgid "Videos successfully converted" msgstr "" #: share/gpodder/extensions/concatenate_videos.py:79 #, fuzzy msgid "Error converting videos" msgstr "Fout bij conversie van bestand." #: share/gpodder/extensions/concatenate_videos.py:80 msgid "Concatenation result" msgstr "" #: share/gpodder/extensions/enqueue_in_mediaplayer.py:16 msgid "Enqueue in media players" msgstr "" #: share/gpodder/extensions/enqueue_in_mediaplayer.py:17 msgid "" "Add a context menu item for enqueueing episodes in installed media players" msgstr "" #: share/gpodder/extensions/enqueue_in_mediaplayer.py:35 msgid "Enqueue in" msgstr "" #: share/gpodder/extensions/episode_website_context_menu.py:14 msgid "\"Open website\" episode context menu" msgstr "" #: share/gpodder/extensions/episode_website_context_menu.py:15 msgid "Add a context menu item for opening the website of an episode" msgstr "" #: share/gpodder/extensions/episode_website_context_menu.py:30 #, fuzzy msgid "Open website" msgstr "Website:" #: share/gpodder/extensions/gtk_statusicon.py:14 msgid "Gtk Status Icon" msgstr "" #: share/gpodder/extensions/gtk_statusicon.py:15 msgid "Show a status icon for Gtk-based Desktops." msgstr "" #: share/gpodder/extensions/minimize_on_start.py:10 msgid "Minimize on start" msgstr "" #: share/gpodder/extensions/minimize_on_start.py:11 msgid "Minimizes the gPodder window on startup." msgstr "" #: share/gpodder/extensions/mpris-listener.py:33 msgid "MPRIS Listener" msgstr "" #: share/gpodder/extensions/mpris-listener.py:34 msgid "Convert MPRIS notifications to gPodder Media Player D-Bus API" msgstr "" #: share/gpodder/extensions/normalize_audio.py:21 msgid "Normalize audio with re-encoding" msgstr "" #: share/gpodder/extensions/normalize_audio.py:22 msgid "Normalize the volume of audio files with normalize-audio" msgstr "" #: share/gpodder/extensions/normalize_audio.py:99 msgid "File normalized" msgstr "Bestand genormaliseerd" #: share/gpodder/extensions/rename_download.py:16 msgid "Rename episodes after download" msgstr "Hernoem afleveringen na het downloaden" #: share/gpodder/extensions/rename_download.py:17 msgid "Rename episodes to \".\" on download" msgstr "" #: share/gpodder/extensions/rm_ogg_cover.py:37 msgid "Remove cover art from OGG files" msgstr "Verwijder cover art van OGG bestanden" #: share/gpodder/extensions/rm_ogg_cover.py:38 msgid "removes coverart from all downloaded ogg files" msgstr "" #: share/gpodder/extensions/rm_ogg_cover.py:66 msgid "Remove cover art" msgstr "Verwijder cover art" #: share/gpodder/extensions/rockbox_convert2mp4.py:26 msgid "Convert video files to MP4 for Rockbox" msgstr "" #: share/gpodder/extensions/rockbox_convert2mp4.py:27 msgid "Converts all videos to a Rockbox-compatible format" msgstr "" #: share/gpodder/extensions/sonos.py:19 share/gpodder/extensions/sonos.py:78 msgid "Stream to Sonos" msgstr "" #: share/gpodder/extensions/sonos.py:20 msgid "Stream podcasts to Sonos speakers" msgstr "" #: share/gpodder/extensions/tagging.py:45 msgid "Tag downloaded files using Mutagen" msgstr "" #: share/gpodder/extensions/tagging.py:46 msgid "Add episode and podcast titles to MP3/OGG tags" msgstr "" #: share/gpodder/extensions/taskbar_progress.py:28 #, fuzzy msgid "Show download progress on the taskbar" msgstr "Weergeef de download vooruitgang in de Unity Launcher icoon." #: share/gpodder/extensions/taskbar_progress.py:29 msgid "Displays the progress on the Windows taskbar." msgstr "" #: share/gpodder/extensions/ted_subtitles.py:16 msgid "Subtitle Downloader for TED Talks" msgstr "" #: share/gpodder/extensions/ted_subtitles.py:17 msgid "Downloads .srt subtitles for TED Talks Videos" msgstr "" #: share/gpodder/extensions/ubuntu_appindicator.py:10 msgid "Ubuntu App Indicator" msgstr "Ubuntu App Indicator" #: share/gpodder/extensions/ubuntu_appindicator.py:11 msgid "Show a status indicator in the top bar." msgstr "" #: share/gpodder/extensions/ubuntu_appindicator.py:47 msgid "Show main window" msgstr "" #: share/gpodder/extensions/ubuntu_appindicator.py:57 #: share/gpodder/ui/gtk/gpodder.ui.h:6 msgid "Quit" msgstr "Sluiten" #: share/gpodder/extensions/ubuntu_unity.py:10 msgid "Ubuntu Unity Integration" msgstr "Ubuntu Unity Integratie" #: share/gpodder/extensions/ubuntu_unity.py:11 msgid "Show download progress in the Unity Launcher icon." msgstr "Weergeef de download vooruitgang in de Unity Launcher icoon." #: share/gpodder/extensions/update_feeds_on_startup.py:14 #, fuzzy msgid "Search for new episodes on startup" msgstr "Controleren op nieuwe afleveringen" #: share/gpodder/extensions/update_feeds_on_startup.py:15 #, fuzzy msgid "Starts the search for new episodes on startup" msgstr "Controleren op nieuwe afleveringen" #: share/gpodder/extensions/video_converter.py:22 #, fuzzy msgid "Convert video files" msgstr "Conversie mislukt" #: share/gpodder/extensions/video_converter.py:23 msgid "Transcode video files to avi/mp4/m4v" msgstr "" #: share/gpodder/ui/gtk/gpodderaddpodcast.ui.h:1 msgid "Add a new podcast" msgstr "Voeg een podcast toe" #: share/gpodder/ui/gtk/gpodderaddpodcast.ui.h:2 msgid "URL:" msgstr "URL:" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:1 msgid "gPodder Podcast Editor" msgstr "gPodder - podcast bewerken" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:2 msgid "Section:" msgstr "Sectie:" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:3 msgid "Disable feed updates (pause subscription)" msgstr "Stop feed updates (abonnement pauzeren)" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:4 msgid "Synchronize to MP3 player devices" msgstr "" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:5 msgid "Strategy:" msgstr "" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:6 #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:6 msgid "General" msgstr "Algemeen" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:7 msgid "HTTP/FTP Authentication" msgstr "HTTP/FTP-authenticatie" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:8 #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:13 msgid "Username:" msgstr "Gebruikersnaam:" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:9 #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:14 msgid "Password:" msgstr "Wachtwoord:" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:10 msgid "Locations" msgstr "Lokaties" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:11 msgid "Download to:" msgstr "Download naar:" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:12 msgid "Website:" msgstr "Website:" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:13 msgid "website label" msgstr "websitelabel" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:14 msgid "Advanced" msgstr "Geadvanceerd" #: share/gpodder/ui/gtk/gpodderconfigeditor.ui.h:1 msgid "gPodder Configuration Editor" msgstr "gPodder - configuratie bewerken" #: share/gpodder/ui/gtk/gpodderconfigeditor.ui.h:2 msgid "Search for:" msgstr "Zoek naar:" #: share/gpodder/ui/gtk/gpodderconfigeditor.ui.h:3 msgid "Show All" msgstr "Alles tonen" #: share/gpodder/ui/gtk/gpodderepisodeselector.ui.h:1 msgid "Select episodes" msgstr "Afleveringen selecteren" #: share/gpodder/ui/gtk/gpodderpodcastdirectory.ui.h:1 msgid "Find new podcasts" msgstr "Nieuwe podcasts zoeken" #: share/gpodder/ui/gtk/gpodderpodcastdirectory.ui.h:2 msgid "Select All" msgstr "Alles selecteren" #: share/gpodder/ui/gtk/gpodderpodcastdirectory.ui.h:3 msgid "Select None" msgstr "Niets selecteren" #: share/gpodder/ui/gtk/gpodderpodcastdirectory.ui.h:4 msgid "label" msgstr "" #: share/gpodder/ui/gtk/gpodderpodcastdirectory.ui.h:5 msgid "..." msgstr "" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:1 #: share/gpodder/ui/gtk/gpodder.ui.h:5 msgid "Preferences" msgstr "_Voorkeuren" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:2 msgid "Audio player:" msgstr "MP3-speler" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:3 msgid "Video player:" msgstr "MP3-speler" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:4 msgid "\"All episodes\" in podcast list" msgstr "\"Alle afleveringen\" in podcast lijst" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:5 msgid "Use sections for podcast list" msgstr "Secties in podcastlijst gebruikten" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:7 msgid "Preferred YouTube format:" msgstr "" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:8 msgid "YouTube API key (v3):" msgstr "" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:9 msgid "Preferred Vimeo format:" msgstr "" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:11 msgid "Extensions" msgstr "Extensies" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:12 msgid "Synchronize subscriptions and episode actions" msgstr "Synchroniseer abonnementen en aflevering acties" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:15 msgid "Replace list on server with local subscriptions" msgstr "Vervang lijst op server met lokale abonnementen" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:16 msgid "Device name:" msgstr "Apparaat" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:17 msgid "gpodder.net" msgstr "gpodder.net" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:18 msgid "Update interval:" msgstr "Update interval:" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:19 msgid "Maximum number of episodes per podcast:" msgstr "Maximum aantal afleveringen per podcast" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:20 msgid "When new episodes are found:" msgstr "Wanneer er nieuwe afleveringen beschikbaar zijn:" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:21 msgid "Updating" msgstr "Bijwerken" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:22 msgid "Delete played episodes:" msgstr "Afgespeelde afleveringen verwijderen:" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:23 msgid "Remove played episodes even if unfinished" msgstr "" "Afgespeelde afleveringen verwijderen zelfs wanneer ze niet volledige " "beluisterd zijn" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:24 msgid "Also remove unplayed episodes" msgstr "Verwijder niet afgespeelde afleveringen" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:25 msgid "Clean-up" msgstr "Opruiming" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:26 msgid "Device type:" msgstr "" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:27 msgid "Mountpoint:" msgstr "" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:28 msgid "After syncing an episode:" msgstr "" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:29 #, fuzzy msgid "Create playlists on device" msgstr "Vervang lijst op server" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:30 #, fuzzy msgid "Playlists Folder:" msgstr "Afspeellijst leeg" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:31 msgid "Remove episodes deleted on device from gPodder" msgstr "" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:32 msgid "Only sync unplayed episodes" msgstr "" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:33 msgid "Devices" msgstr "" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:34 msgid "Edit config" msgstr "Config bewerken" #: share/gpodder/ui/gtk/gpodder.ui.h:1 msgid "_Podcasts" msgstr "_Podcasts" #: share/gpodder/ui/gtk/gpodder.ui.h:2 msgid "Check for new episodes" msgstr "Controleren op nieuwe afleveringen" #: share/gpodder/ui/gtk/gpodder.ui.h:3 msgid "Download new episodes" msgstr "Download nieuwe afleveringen" #: share/gpodder/ui/gtk/gpodder.ui.h:7 msgid "_Subscriptions" msgstr "A_bonnementen" #: share/gpodder/ui/gtk/gpodder.ui.h:8 msgid "Discover new podcasts" msgstr "Nieuwe podcasts zoeken" #: share/gpodder/ui/gtk/gpodder.ui.h:9 msgid "Add podcast via URL" msgstr "Podcast toevoegen via URL" #: share/gpodder/ui/gtk/gpodder.ui.h:11 msgid "Unsubscribe" msgstr "Abonnement opzeggen" #: share/gpodder/ui/gtk/gpodder.ui.h:14 msgid "Import from OPML file" msgstr "Importeren van OPML bestand" #: share/gpodder/ui/gtk/gpodder.ui.h:15 msgid "Export to OPML file" msgstr "Naar OPML exporteren" #: share/gpodder/ui/gtk/gpodder.ui.h:16 msgid "Go to gpodder.net" msgstr "Ga naar gpodder.net" #: share/gpodder/ui/gtk/gpodder.ui.h:17 msgid "_Episodes" msgstr "_Afleveringen" #: share/gpodder/ui/gtk/gpodder.ui.h:18 msgid "Play" msgstr "Afspelen" #: share/gpodder/ui/gtk/gpodder.ui.h:19 msgid "Open" msgstr "Open" #: share/gpodder/ui/gtk/gpodder.ui.h:22 msgid "Delete" msgstr "Verwijder" #: share/gpodder/ui/gtk/gpodder.ui.h:23 msgid "Toggle new status" msgstr "Status veranderen" #: share/gpodder/ui/gtk/gpodder.ui.h:24 msgid "Change delete lock" msgstr "Vergrendeling veranderen" #: share/gpodder/ui/gtk/gpodder.ui.h:26 msgid "E_xtras" msgstr "" #: share/gpodder/ui/gtk/gpodder.ui.h:27 msgid "Sync to device" msgstr "" #: share/gpodder/ui/gtk/gpodder.ui.h:28 #, fuzzy msgid "Update YouTube subscriptions" msgstr "Geen abonnementen" #: share/gpodder/ui/gtk/gpodder.ui.h:29 msgid "_View" msgstr "_Tonen" #: share/gpodder/ui/gtk/gpodder.ui.h:30 msgid "Toolbar" msgstr "Werkbalk tonen" #: share/gpodder/ui/gtk/gpodder.ui.h:31 msgid "Episode descriptions" msgstr "Toon afleveringsbeschrijving" #: share/gpodder/ui/gtk/gpodder.ui.h:33 msgid "Hide deleted episodes" msgstr "Verberg verwijderde afleveringen" #: share/gpodder/ui/gtk/gpodder.ui.h:34 msgid "Downloaded episodes" msgstr "Gedownloade afleveringen" #: share/gpodder/ui/gtk/gpodder.ui.h:35 msgid "Unplayed episodes" msgstr "Niet gespeelde afleveringen" #: share/gpodder/ui/gtk/gpodder.ui.h:36 msgid "Hide podcasts without episodes" msgstr "Verberg podcasts zonder afleveringen" #: share/gpodder/ui/gtk/gpodder.ui.h:37 msgid "_Help" msgstr "_Help" #: share/gpodder/ui/gtk/gpodder.ui.h:38 msgid "User manual" msgstr "Handleiding" #: share/gpodder/ui/gtk/gpodder.ui.h:39 msgid "Software updates" msgstr "Software updates" #: share/gpodder/ui/gtk/gpodder.ui.h:40 msgid "Filter:" msgstr "Filter:" #: share/gpodder/ui/gtk/gpodder.ui.h:41 msgid "Podcasts" msgstr "Podcasts" #: share/gpodder/ui/gtk/gpodder.ui.h:42 msgid "Limit rate to" msgstr "Beperk downloadsnelheid tot" #: share/gpodder/ui/gtk/gpodder.ui.h:43 msgid "KiB/s" msgstr "KiB/s" #: share/gpodder/ui/gtk/gpodder.ui.h:44 msgid "Limit downloads to" msgstr "Beperk aantal downloads tot" #: share/gpodder/ui/gtk/gpodderwelcome.ui.h:2 msgid "Welcome to gPodder" msgstr "" #: share/gpodder/ui/gtk/gpodderwelcome.ui.h:3 msgid "Your podcast list is empty." msgstr "Je podcast lijst is leeg" #: share/gpodder/ui/gtk/gpodderwelcome.ui.h:4 msgid "Choose from a list of example podcasts" msgstr "Kies uit een lijst van voorbeeld podcasts" #: share/gpodder/ui/gtk/gpodderwelcome.ui.h:5 msgid "Add a podcast by entering its URL" msgstr "" #: share/gpodder/ui/gtk/gpodderwelcome.ui.h:6 msgid "Restore my subscriptions from gpodder.net" msgstr "" #: bin/gpo:266 msgid "Podcast update requested by extensions." msgstr "" #: bin/gpo:270 msgid "Episode download requested by extensions." msgstr "" #: bin/gpo:323 #, fuzzy, python-format msgid "Invalid url: %s" msgstr "Ongeldige URL: %s" #: bin/gpo:340 bin/gpo:416 bin/gpo:450 bin/gpo:582 bin/gpo:597 bin/gpo:717 #, python-format msgid "You are not subscribed to %s." msgstr "" #: bin/gpo:346 #, fuzzy, python-format msgid "Already subscribed to %s." msgstr "U bent al geabonneerd op deze podcasts:" #: bin/gpo:352 #, python-format msgid "Cannot subscribe to %s." msgstr "" #: bin/gpo:368 #, python-format msgid "Successfully added %s." msgstr "Succesvol toegevoegd %s." #: bin/gpo:386 msgid "This configuration option does not exist." msgstr "" #: bin/gpo:390 msgid "Can only set leaf configuration nodes." msgstr "" #: bin/gpo:404 #, python-format msgid "Renamed %(old_title)s to %(new_title)s." msgstr "" #: bin/gpo:420 #, python-format msgid "Unsubscribed from %s." msgstr "" #: bin/gpo:494 msgid "Updates disabled" msgstr "Updates uitgeschakeld" #: bin/gpo:505 #, python-format msgid "%(count)d new episode" msgid_plural "%(count)d new episodes" msgstr[0] "%(count)d nieuwe aflevering" msgstr[1] "%(count)d nieuwe afleveringen" #: bin/gpo:511 msgid "Checking for new episodes" msgstr "" #: bin/gpo:520 #, python-format msgid "Skipping %(podcast)s" msgstr "%(podcast)s overslaan" #: bin/gpo:588 #, python-format msgid "Disabling feed update from %s." msgstr "" #: bin/gpo:603 #, python-format msgid "Enabling feed update from %s." msgstr "" #: bin/gpo:616 #, python-format msgid "Please register a YouTube API key and set it using %(command)s." msgstr "" #: bin/gpo:643 #, python-format msgid "Changing: %(old_url)s => %(new_url)s" msgstr "" #: bin/gpo:653 #, fuzzy msgid "Nothing to fix" msgstr "Niets om te exporteren" #: bin/gpo:672 msgid "No podcasts found." msgstr "Geen podcasts gevonden." #: bin/gpo:686 msgid "Enter index to subscribe, ? for list" msgstr "" #: bin/gpo:700 bin/gpo:704 msgid "Invalid value." msgstr "" #: bin/gpo:721 #, python-format msgid "Invalid URL: %s" msgstr "Ongeldige URL: %s" #: bin/gpo:724 #, python-format msgid "Changed URL from %(old_url)s to %(new_url)s." msgstr "" #: bin/gpo:782 #, python-format msgid "Syntax error: %(error)s" msgstr "Syntax error: %(error)s" #: bin/gpo:876 msgid "Ambiguous command. Did you mean.." msgstr "" #: bin/gpo:880 msgid "The requested function is not available." msgstr "" #: bin/gpodder:105 #, fuzzy msgid "print logging output on the console" msgstr "Debuguitvoer naar stdout sturen" #: bin/gpodder:108 #, fuzzy msgid "subscribe to the feed at URL" msgstr "Kanaal importeren door opgave URL" #: bin/gpodder:113 msgid "Mac OS X application process number" msgstr "Mac OS X applicatie proces nummer" #: share/applications/gpodder.desktop.in.h:2 msgid "gPodder Podcast Client" msgstr "gPodder Podcast CliУЋnt" #: share/applications/gpodder.desktop.in.h:3 msgid "Podcast Client" msgstr "Podcast CliУЋnt" #: share/applications/gpodder.desktop.in.h:4 msgid "Subscribe to audio and video content from the web" msgstr "Abonneren op audio en video van het web" #: share/applications/gpodder-url-handler.desktop.in.h:1 #, fuzzy msgid "gPodder (subscribe to feed)" msgstr "Kanaal importeren door opgave URL" gpodder-3.9.0/po/cs.po0000644000016000001710000015734312654461625015674 0ustar jenkinsjenkins00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # # Translators: msgid "" msgstr "" "Project-Id-Version: gPodder\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2016-02-03 20:31+0000\n" "PO-Revision-Date: 2013-01-19 12:31+0000\n" "Last-Translator: Thomas Perl \n" "Language-Team: Czech (http://www.transifex.com/projects/p/gpodder/language/" "cs/)\n" "Language: cs\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" #: src/gpodder/config.py:55 #, fuzzy, python-format msgid "gPodder on %s" msgstr "gPodder nalezl %s" #: src/gpodder/directory.py:95 #, fuzzy msgid "gpodder.net search" msgstr "StУЁhnout do:" #: src/gpodder/directory.py:104 #, fuzzy msgid "OPML from web" msgstr "Export OPML skonФil neУКspФ›ХЁnФ›" #: src/gpodder/directory.py:113 #, fuzzy msgid "OPML file" msgstr "Export OPML skonФil neУКspФ›ХЁnФ›" #: src/gpodder/directory.py:122 share/gpodder/ui/gtk/gpodderwelcome.ui.h:1 #, fuzzy msgid "Getting started" msgstr "TextovУН Х™etФ›zec" #: src/gpodder/directory.py:131 #, fuzzy msgid "gpodder.net Top 50" msgstr "StУЁhnout do:" #: src/gpodder/directory.py:140 #, fuzzy msgid "gpodder.net Tags" msgstr "StУЁhnout do:" #: src/gpodder/directory.py:152 msgid "Soundcloud search" msgstr "" #: src/gpodder/directory.py:165 #, fuzzy msgid "Imported OPML file" msgstr "Export do OPML" #: src/gpodder/download.py:329 msgid "Wrong username/password" msgstr "" #: src/gpodder/download.py:527 src/gpodder/sync.py:924 #, fuzzy msgid "Added" msgstr "PokroФilУЉ" #: src/gpodder/download.py:527 src/gpodder/sync.py:924 msgid "Queued" msgstr "ZaХ™azeno do fronty" #: src/gpodder/download.py:527 src/gpodder/gtkui/model.py:327 #, fuzzy msgid "Downloading" msgstr "stahovУЁnУ­" #: src/gpodder/download.py:528 src/gpodder/model.py:721 #: src/gpodder/sync.py:925 msgid "Finished" msgstr "" #: src/gpodder/download.py:528 src/gpodder/sync.py:925 #, fuzzy msgid "Failed" msgstr "Filtr:" #: src/gpodder/download.py:528 src/gpodder/sync.py:925 #, fuzzy msgid "Cancelled" msgstr "ZruХЁit" #: src/gpodder/download.py:528 src/gpodder/sync.py:925 msgid "Paused" msgstr "" #: src/gpodder/download.py:862 msgid "Missing content from server" msgstr "" #: src/gpodder/download.py:868 #, fuzzy, python-format msgid "I/O Error: %(error)s: %(filename)s" msgstr "Chyba otevУ­rУЁnУ­ %s: %s" #: src/gpodder/download.py:875 #, fuzzy, python-format msgid "HTTP Error %(code)s: %(message)s" msgstr "Chyba otevУ­rУЁnУ­ %s: %s" #: src/gpodder/download.py:879 src/gpodder/sync.py:1081 #, fuzzy, python-format msgid "Error: %s" msgstr "Chyba otevУ­rУЁnУ­ %s: %s" #: src/gpodder/extensions.py:55 msgid "Desktop Integration" msgstr "" #: src/gpodder/extensions.py:56 #, fuzzy msgid "Interface" msgstr "CelУЉ ФУ­slo" #: src/gpodder/extensions.py:57 #, fuzzy msgid "Post download" msgstr "_ZruХЁit stahovУЁnУ­" #: src/gpodder/extensions.py:59 src/gpodder/model.py:779 #: src/gpodder/model.py:1225 msgid "Other" msgstr "" #: src/gpodder/extensions.py:100 #, fuzzy msgid "No description for this extension." msgstr "Popis nenУ­ dostupnУН" #: src/gpodder/extensions.py:212 #, python-format msgid "Command not found: %(command)s" msgstr "" #: src/gpodder/extensions.py:228 #, python-format msgid "Need at least one of the following commands: %(list_of_commands)s" msgstr "" #: src/gpodder/extensions.py:265 #, python-format msgid "Python module not found: %(module)s" msgstr "" #: src/gpodder/model.py:446 src/gpodder/plugins/soundcloud.py:156 msgid "No description available" msgstr "Popis nenУ­ dostupnУН" #: src/gpodder/model.py:679 #, fuzzy msgid "unknown" msgstr "(neznУЁmУН)" #: src/gpodder/model.py:746 msgid "Default" msgstr "" #: src/gpodder/model.py:747 msgid "Only keep latest" msgstr "" #: src/gpodder/model.py:1208 src/gpodder/model.py:1223 #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:10 msgid "Video" msgstr "" #: src/gpodder/model.py:1221 msgid "Audio" msgstr "" #: src/gpodder/my.py:174 #, fuzzy, python-format msgid "Add %s" msgstr "PХ™idУЁvУЁnУ­ %s" #: src/gpodder/my.py:176 #, fuzzy, python-format msgid "Remove %s" msgstr "Odstranit %s?" #: src/gpodder/sync.py:196 msgid "Cancelled by user" msgstr "ZruХЁeno uХОivatelem" #: src/gpodder/sync.py:199 msgid "Writing data to disk" msgstr "ZУЁpis dat na disk" #: src/gpodder/sync.py:295 msgid "Opening iPod database" msgstr "OtevУ­rУЁnУ­ databУЁze iPodu" #: src/gpodder/sync.py:305 msgid "iPod opened" msgstr "iPodu pХ™ipojen" #: src/gpodder/sync.py:316 msgid "Saving iPod database" msgstr "UklУЁdУЁm databУЁzi iPodu" #: src/gpodder/sync.py:321 #, fuzzy msgid "Writing extended gtkpod database" msgstr "ZУЁpis dat na disk" #: src/gpodder/sync.py:397 src/gpodder/sync.py:680 src/gpodder/sync.py:874 #, python-format msgid "Removing %s" msgstr "OdstraХˆuji %s" #: src/gpodder/sync.py:412 src/gpodder/sync.py:557 #, python-format msgid "Adding %s" msgstr "PХ™idУЁvУЁnУ­ %s" #: src/gpodder/sync.py:430 #, fuzzy, python-format msgid "Error copying %(episode)s: Not enough free space on %(mountpoint)s" msgstr "Chyba kopУ­rovУЁnУ­ %s: Nedostatek volnУЉho mУ­sta na %s" #: src/gpodder/sync.py:515 msgid "Opening MP3 player" msgstr "PХ™ipojovУЁnУ­ MP3 pХ™ehrУЁvaФe" #: src/gpodder/sync.py:518 msgid "MP3 player opened" msgstr "MP3 pХ™ehrУЁvaФ pХ™ipojen" #: src/gpodder/sync.py:576 #, python-format msgid "" "Not enough space in %(path)s: %(free)s available, but need at least %(need)s" msgstr "" #: src/gpodder/sync.py:603 src/gpodder/sync.py:611 #, fuzzy, python-format msgid "Error opening %(filename)s: %(message)s" msgstr "Chyba otevУ­rУЁnУ­ %s: %s" #: src/gpodder/sync.py:780 src/gpodder/sync.py:786 #, fuzzy msgid "MTP device" msgstr "VУНbФ›r zaХ™У­zenУ­" #: src/gpodder/sync.py:793 #, fuzzy msgid "Opening the MTP device" msgstr "KopУ­rovУЁnУ­ souborХЏ na zaХ™У­zenУ­" #: src/gpodder/sync.py:803 #, fuzzy, python-format msgid "%s opened" msgstr "iPodu pХ™ipojen" #: src/gpodder/sync.py:808 #, fuzzy, python-format msgid "Closing %s" msgstr "OdstraХˆuji %s" #: src/gpodder/sync.py:816 #, fuzzy, python-format msgid "%s closed" msgstr "%s je uzamФeno" #: src/gpodder/sync.py:821 bin/gpo:708 #, fuzzy, python-format msgid "Adding %s..." msgstr "PХ™idУЁvУЁnУ­ %s" #: src/gpodder/sync.py:924 #, fuzzy msgid "Synchronizing" msgstr "Synchronizace" #: src/gpodder/util.py:429 #, python-format msgid "%(count)d day ago" msgid_plural "%(count)d days ago" msgstr[0] "" msgstr[1] "" msgstr[2] "" #: src/gpodder/util.py:508 msgid "Today" msgstr "Dnes" #: src/gpodder/util.py:510 msgid "Yesterday" msgstr "VФera" #: src/gpodder/util.py:553 src/gpodder/util.py:556 msgid "(unknown)" msgstr "(neznУЁmУН)" #: src/gpodder/util.py:1193 src/gpodder/util.py:1212 #, python-format msgid "%(count)d second" msgid_plural "%(count)d seconds" msgstr[0] "" msgstr[1] "" msgstr[2] "" #: src/gpodder/util.py:1206 #, python-format msgid "%(count)d hour" msgid_plural "%(count)d hours" msgstr[0] "" msgstr[1] "" msgstr[2] "" #: src/gpodder/util.py:1209 #, python-format msgid "%(count)d minute" msgid_plural "%(count)d minutes" msgstr[0] "" msgstr[1] "" msgstr[2] "" #: src/gpodder/util.py:1215 msgid "and" msgstr "" #: src/gpodder/gtkui/config.py:50 msgid "Integer" msgstr "CelУЉ ФУ­slo" #: src/gpodder/gtkui/config.py:52 msgid "Float" msgstr "DesetinnУЉ ФУ­slo" #: src/gpodder/gtkui/config.py:54 msgid "Boolean" msgstr "PravdivostnУ­ hodnota" #: src/gpodder/gtkui/config.py:56 msgid "String" msgstr "TextovУН Х™etФ›zec" #: src/gpodder/gtkui/desktopfile.py:70 #, fuzzy, python-format msgid "Command: %s" msgstr "PХ™У­kazovУН Х™УЁdek:" #: src/gpodder/gtkui/desktopfile.py:150 msgid "Default application" msgstr "" #: src/gpodder/gtkui/main.py:205 share/applications/gpodder.desktop.in.h:1 #, fuzzy msgid "gPodder" msgstr "UkonФit gPodder" #: src/gpodder/gtkui/main.py:288 #, fuzzy msgid "Loading incomplete downloads" msgstr "OznaФit %s jako nestaХОenУЉ" #: src/gpodder/gtkui/main.py:289 msgid "Some episodes have not finished downloading in a previous session." msgstr "" #: src/gpodder/gtkui/main.py:291 #, python-format msgid "%(count)d partial file" msgid_plural "%(count)d partial files" msgstr[0] "" msgstr[1] "" msgstr[2] "" #: src/gpodder/gtkui/main.py:306 #, fuzzy msgid "Resume all" msgstr "staХОenУЉ soubory" #: src/gpodder/gtkui/main.py:316 msgid "Incomplete downloads from a previous session were found." msgstr "" #: src/gpodder/gtkui/main.py:414 msgid "Action" msgstr "" #: src/gpodder/gtkui/main.py:461 #, fuzzy msgid "Confirm changes from gpodder.net" msgstr "StУЁhnout do:" #: src/gpodder/gtkui/main.py:462 #, fuzzy msgid "Select the actions you want to carry out." msgstr "OznaФte epizody ke staХОenУ­." #: src/gpodder/gtkui/main.py:502 #, fuzzy msgid "Uploading subscriptions" msgstr "Popis" #: src/gpodder/gtkui/main.py:503 #, fuzzy msgid "Your subscriptions are being uploaded to the server." msgstr "Popis" #: src/gpodder/gtkui/main.py:508 msgid "List uploaded successfully." msgstr "" #: src/gpodder/gtkui/main.py:515 #, fuzzy msgid "Error while uploading" msgstr "Chyba aktualizace %s" #: src/gpodder/gtkui/main.py:800 src/gpodder/gtkui/main.py:928 #: src/gpodder/gtkui/main.py:2622 src/gpodder/gtkui/main.py:2815 #: src/gpodder/gtkui/desktop/episodeselector.py:132 #: src/gpodder/gtkui/desktop/sync.py:270 msgid "Episode" msgstr "Epizoda" #: src/gpodder/gtkui/main.py:819 msgid "Size" msgstr "Velikost" #: src/gpodder/gtkui/main.py:824 msgid "Duration" msgstr "" #: src/gpodder/gtkui/main.py:828 msgid "Released" msgstr "VyХЁlo" #: src/gpodder/gtkui/main.py:855 msgid "Visible columns" msgstr "" #: src/gpodder/gtkui/main.py:948 src/gpodder/gtkui/main.py:1108 #: share/gpodder/ui/gtk/gpodder.ui.h:45 msgid "Progress" msgstr "PrХЏbФ›h" #: src/gpodder/gtkui/main.py:982 #, fuzzy msgid "Loading episodes" msgstr "Stahuji epizody" #: src/gpodder/gtkui/main.py:985 #, fuzzy msgid "No episodes in current view" msgstr "NenУ­ vybrУЁn ХОУЁdnУН kanУЁl" #: src/gpodder/gtkui/main.py:987 #, fuzzy msgid "No episodes available" msgstr "Jsou dostupnУЉ novУЉ epizody" #: src/gpodder/gtkui/main.py:993 #, fuzzy msgid "No podcasts in this view" msgstr "NenУ­ vybrУЁn ХОУЁdnУН kanУЁl" #: src/gpodder/gtkui/main.py:995 #, fuzzy msgid "No subscriptions" msgstr "Popis" #: src/gpodder/gtkui/main.py:997 #, fuzzy msgid "No active tasks" msgstr "staХОenУЉ soubory" #: src/gpodder/gtkui/main.py:1112 src/gpodder/gtkui/main.py:1114 #, python-format msgid "%(count)d active" msgid_plural "%(count)d active" msgstr[0] "" msgstr[1] "" msgstr[2] "" #: src/gpodder/gtkui/main.py:1116 #, python-format msgid "%(count)d failed" msgid_plural "%(count)d failed" msgstr[0] "" msgstr[1] "" msgstr[2] "" #: src/gpodder/gtkui/main.py:1118 #, python-format msgid "%(count)d queued" msgid_plural "%(count)d queued" msgstr[0] "" msgstr[1] "" msgstr[2] "" #: src/gpodder/gtkui/main.py:1132 #, python-format msgid "downloading %(count)d file" msgid_plural "downloading %(count)d files" msgstr[0] "" msgstr[1] "" msgstr[2] "" #: src/gpodder/gtkui/main.py:1142 #, python-format msgid "synchronizing %(count)d file" msgid_plural "synchronizing %(count)d files" msgstr[0] "" msgstr[1] "" msgstr[2] "" #: src/gpodder/gtkui/main.py:1144 #, python-format msgid "%(queued)d task queued" msgid_plural "%(queued)d tasks queued" msgstr[0] "" msgstr[1] "" msgstr[2] "" #: src/gpodder/gtkui/main.py:1168 msgid "Please report this problem and restart gPodder:" msgstr "" #: src/gpodder/gtkui/main.py:1168 msgid "Unhandled exception" msgstr "" #: src/gpodder/gtkui/main.py:1235 #, python-format msgid "Feedparser error: %s" msgstr "" #: src/gpodder/gtkui/main.py:1371 #, fuzzy msgid "Could not download some episodes:" msgstr "NenУ­ moХОnУЉ pХ™idat kanУЁl" #: src/gpodder/gtkui/main.py:1373 src/gpodder/gtkui/main.py:1376 #, fuzzy msgid "Downloads finished" msgstr "gPodder dokonФil stahovУЁnУ­" #: src/gpodder/gtkui/main.py:1379 #, fuzzy msgid "Downloads failed" msgstr "StaХОeno" #: src/gpodder/gtkui/main.py:1383 #, fuzzy msgid "Could not sync some episodes:" msgstr "NenУ­ moХОnУЉ pХ™idat kanУЁl" #: src/gpodder/gtkui/main.py:1385 src/gpodder/gtkui/main.py:1388 #, fuzzy msgid "Device synchronization finished" msgstr "Synchronizace dokonФena." #: src/gpodder/gtkui/main.py:1391 #, fuzzy msgid "Device synchronization failed" msgstr "Po synchronizaci:" #: src/gpodder/gtkui/main.py:1434 #, python-format msgid "%(count)d more episode" msgid_plural "%(count)d more episodes" msgstr[0] "" msgstr[1] "" msgstr[2] "" #: src/gpodder/gtkui/main.py:1508 #, fuzzy msgid "Start download now" msgstr "Limit rychlosti stahovУЁnУ­ na" #: src/gpodder/gtkui/main.py:1510 src/gpodder/gtkui/main.py:1719 #: src/gpodder/gtkui/desktop/episodeselector.py:144 #: share/gpodder/ui/gtk/gpodder.ui.h:20 msgid "Download" msgstr "StУЁhnout" #: src/gpodder/gtkui/main.py:1511 share/gpodder/ui/gtk/gpodder.ui.h:21 msgid "Cancel" msgstr "ZruХЁit" #: src/gpodder/gtkui/main.py:1512 #, fuzzy msgid "Pause" msgstr "Hodnota" #: src/gpodder/gtkui/main.py:1514 #, fuzzy msgid "Remove from list" msgstr "Odstranit starУЉ episody" #: src/gpodder/gtkui/main.py:1553 share/gpodder/ui/gtk/gpodder.ui.h:13 #, fuzzy msgid "Update podcast" msgstr "%d oznaФenУНch epizod" #: src/gpodder/gtkui/main.py:1560 msgid "Open download folder" msgstr "OtevХ™У­t adresУЁХ™ pro stahovУЁnУ­" #: src/gpodder/gtkui/main.py:1566 #, fuzzy msgid "Mark episodes as old" msgstr "OznaФit epizody jako pХ™ehranУЉ" #: src/gpodder/gtkui/main.py:1570 src/gpodder/gtkui/main.py:1778 msgid "Archive" msgstr "" #: src/gpodder/gtkui/main.py:1575 #, fuzzy msgid "Remove podcast" msgstr "_PХ™ipojit se k novУЉmu kanУЁlu" #: src/gpodder/gtkui/main.py:1590 share/gpodder/ui/gtk/gpodder.ui.h:10 #, fuzzy msgid "Podcast settings" msgstr "Podcast" #: src/gpodder/gtkui/main.py:1650 msgid "Error converting file." msgstr "Chyba pХ™i konverzi souboru" #: src/gpodder/gtkui/main.py:1650 msgid "Bluetooth file transfer" msgstr "pХ™enos souborХЏ pХ™es Bluetooth" #: src/gpodder/gtkui/main.py:1709 msgid "Preview" msgstr "" #: src/gpodder/gtkui/main.py:1711 msgid "Stream" msgstr "" #: src/gpodder/gtkui/main.py:1755 msgid "Send to" msgstr "" #: src/gpodder/gtkui/main.py:1757 msgid "Local folder" msgstr "" #: src/gpodder/gtkui/main.py:1762 #, fuzzy msgid "Bluetooth device" msgstr "zaХ™У­zenУ­ bluetooth" #: src/gpodder/gtkui/main.py:1769 msgid "New" msgstr "" #: src/gpodder/gtkui/main.py:1785 share/gpodder/ui/gtk/gpodder.ui.h:25 #, fuzzy msgid "Episode details" msgstr "Epizoda" #: src/gpodder/gtkui/main.py:1938 #, fuzzy msgid "Please check your media player settings in the preferences dialog." msgstr "" "VybranУН pХ™ehrУЁvaФ nebyl nalezen. Zkontrolujte prosУ­m zvolenУН pХ™ehrУЁvaФ v " "nastavenУ­ programu." #: src/gpodder/gtkui/main.py:1939 #, fuzzy msgid "Error opening player" msgstr "Chyba spouХЁtФ›nУ­ pХ™ehrУЁvaФe: %s" #: src/gpodder/gtkui/main.py:2178 #, fuzzy msgid "Adding podcasts" msgstr "VynechУЁvУЁm kanУЁl: %s" #: src/gpodder/gtkui/main.py:2179 msgid "Please wait while episode information is downloaded." msgstr "" #: src/gpodder/gtkui/main.py:2186 #, fuzzy msgid "Existing subscriptions skipped" msgstr "Popis" #: src/gpodder/gtkui/main.py:2187 #, fuzzy msgid "You are already subscribed to these podcasts:" msgstr "K tomuto kanУЁlu jste jiХО pХ™ihlУЁХЁenУН: %s" #: src/gpodder/gtkui/main.py:2195 #, fuzzy msgid "Podcast requires authentication" msgstr "PХ™ihlУЁХЁenУ­ heslem" #: src/gpodder/gtkui/main.py:2196 #, python-format msgid "Please login to %s:" msgstr "" #: src/gpodder/gtkui/main.py:2204 src/gpodder/gtkui/main.py:2299 msgid "Authentication failed" msgstr "" #: src/gpodder/gtkui/main.py:2210 msgid "Website redirection detected" msgstr "" #: src/gpodder/gtkui/main.py:2211 #, python-format msgid "The URL %(url)s redirects to %(target)s." msgstr "" #: src/gpodder/gtkui/main.py:2212 #, fuzzy msgid "Do you want to visit the website now?" msgstr "SkuteФnФ› chcete ukonФit gPodder?" #: src/gpodder/gtkui/main.py:2221 #, fuzzy msgid "Could not add some podcasts" msgstr "NenУ­ moХОnУЉ pХ™idat kanУЁl" #: src/gpodder/gtkui/main.py:2222 msgid "Some podcasts could not be added to your list:" msgstr "" #: src/gpodder/gtkui/main.py:2224 #, fuzzy msgid "Unknown" msgstr "(neznУЁmУН)" #: src/gpodder/gtkui/main.py:2308 msgid "Redirection detected" msgstr "" #: src/gpodder/gtkui/main.py:2342 #, fuzzy msgid "Merging episode actions" msgstr "Vybrat epizody" #: src/gpodder/gtkui/main.py:2343 #, fuzzy msgid "Episode actions from gpodder.net are merged." msgstr "StУЁhnout do:" #: src/gpodder/gtkui/main.py:2368 #, fuzzy msgid "Cancelling..." msgstr "ZruХЁit" #: src/gpodder/gtkui/main.py:2377 msgid "Please connect to a network, then try again." msgstr "" #: src/gpodder/gtkui/main.py:2378 #, fuzzy msgid "No network connection" msgstr "UХОivatelskУЉ jmУЉno:" #: src/gpodder/gtkui/main.py:2399 #, python-format msgid "Updating %(count)d feed..." msgid_plural "Updating %(count)d feeds..." msgstr[0] "" msgstr[1] "" msgstr[2] "" #: src/gpodder/gtkui/main.py:2417 #, fuzzy, python-format msgid "Error while updating %(url)s: %(message)s" msgstr "Chyba otevУ­rУЁnУ­ %s: %s" #: src/gpodder/gtkui/main.py:2419 #, python-format msgid "The feed at %(url)s could not be updated." msgstr "" #: src/gpodder/gtkui/main.py:2420 #, fuzzy msgid "Error while updating feed" msgstr "Chyba aktualizace %s" #: src/gpodder/gtkui/main.py:2435 #, python-format msgid "Updated %(podcast)s (%(position)d/%(total)d)" msgstr "" #: src/gpodder/gtkui/main.py:2466 msgid "No new episodes" msgstr "ХНУЁdnУЉ novУЉ epizody" #: src/gpodder/gtkui/main.py:2479 #, python-format msgid "Downloading %(count)d new episode." msgid_plural "Downloading %(count)d new episodes." msgstr[0] "" msgstr[1] "" msgstr[2] "" #: src/gpodder/gtkui/main.py:2480 src/gpodder/gtkui/main.py:2484 #: src/gpodder/gtkui/main.py:2833 msgid "New episodes available" msgstr "Jsou dostupnУЉ novУЉ epizody" #: src/gpodder/gtkui/main.py:2483 #, python-format msgid "%(count)d new episode added to download list." msgid_plural "%(count)d new episodes added to download list." msgstr[0] "" msgstr[1] "" msgstr[2] "" #: src/gpodder/gtkui/main.py:2490 #, python-format msgid "%(count)d new episode available" msgid_plural "%(count)d new episodes available" msgstr[0] "" msgstr[1] "" msgstr[2] "" #: src/gpodder/gtkui/main.py:2509 msgid "Quit gPodder" msgstr "UkonФit gPodder" #: src/gpodder/gtkui/main.py:2510 msgid "" "You are downloading episodes. You can resume downloads the next time you " "start gPodder. Do you want to quit now?" msgstr "" #: src/gpodder/gtkui/main.py:2559 msgid "Episodes are locked" msgstr "Epizody jsou uzamФeny" #: src/gpodder/gtkui/main.py:2560 msgid "" "The selected episodes are locked. Please unlock the episodes that you want " "to delete before trying to delete them." msgstr "" "OznaФenУЉ epizody jsou uzamФenУЉ. Pro jejich smazУЁnУ­ je potХ™eba je nejprve " "odemФУ­t." #: src/gpodder/gtkui/main.py:2565 #, python-format msgid "Delete %(count)d episode?" msgid_plural "Delete %(count)d episodes?" msgstr[0] "" msgstr[1] "" msgstr[2] "" #: src/gpodder/gtkui/main.py:2566 #, fuzzy msgid "Deleting episodes removes downloaded files." msgstr "OznaФit epizody k odstranФ›nУ­ z iPodu" #: src/gpodder/gtkui/main.py:2571 #, fuzzy msgid "Deleting episodes" msgstr "Vybrat epizody" #: src/gpodder/gtkui/main.py:2572 #, fuzzy msgid "Please wait while episodes are deleted" msgstr "OznaФte epizody ke staХОenУ­." #: src/gpodder/gtkui/main.py:2625 #, python-format msgid "Select older than %(count)d day" msgid_plural "Select older than %(count)d days" msgstr[0] "" msgstr[1] "" msgstr[2] "" #: src/gpodder/gtkui/main.py:2627 msgid "Select played" msgstr "OznaФit pХ™ehranУЉ" #: src/gpodder/gtkui/main.py:2628 #, fuzzy msgid "Select finished" msgstr "ZruХЁit vУНbФ›r" #: src/gpodder/gtkui/main.py:2632 #, fuzzy msgid "Select the episodes you want to delete:" msgstr "OznaФte epizody ke staХОenУ­." #: src/gpodder/gtkui/main.py:2648 share/gpodder/ui/gtk/gpodder.ui.h:4 #, fuzzy msgid "Delete episodes" msgstr "Smazat oznaФenУЉ epizody" #: src/gpodder/gtkui/main.py:2703 src/gpodder/gtkui/main.py:2934 #: src/gpodder/gtkui/main.py:3034 #, fuzzy msgid "No podcast selected" msgstr "NenУ­ vybrУЁn ХОУЁdnУН kanУЁl" #: src/gpodder/gtkui/main.py:2704 #, fuzzy msgid "Please select a podcast in the podcasts list to update." msgstr "Vyberte si prosУ­m ze seznamu kanУЁl k УКpravУЁm." #: src/gpodder/gtkui/main.py:2774 #, python-format msgid "Download error while downloading %(episode)s: %(message)s" msgstr "" #: src/gpodder/gtkui/main.py:2775 #, fuzzy msgid "Download error" msgstr "StУЁhnout do:" #: src/gpodder/gtkui/main.py:2818 #, fuzzy msgid "Select the episodes you want to download:" msgstr "OznaФte epizody ke staХОenУ­." #: src/gpodder/gtkui/main.py:2841 #, fuzzy msgid "Mark as old" msgstr "OznaФit %s jako uХО pХ™ehranУЉ" #: src/gpodder/gtkui/main.py:2848 #, fuzzy msgid "Please check for new episodes later." msgstr "Zkontrolovat zda nevyХЁly novУЉ epizody" #: src/gpodder/gtkui/main.py:2849 #, fuzzy msgid "No new episodes available" msgstr "Jsou dostupnУЉ novУЉ epizody" #: src/gpodder/gtkui/main.py:2900 #, fuzzy msgid "Login to gpodder.net" msgstr "StУЁhnout do:" #: src/gpodder/gtkui/main.py:2901 #, fuzzy msgid "Please login to download your subscriptions." msgstr "Popis" #: src/gpodder/gtkui/main.py:2916 #, fuzzy msgid "Subscriptions on gpodder.net" msgstr "Popis" #: src/gpodder/gtkui/main.py:2935 #, fuzzy msgid "Please select a podcast in the podcasts list to edit." msgstr "Vyberte si prosУ­m ze seznamu kanУЁl k УКpravУЁm." #: src/gpodder/gtkui/main.py:2949 #, fuzzy msgid "Podcast" msgstr "Podcast" #: src/gpodder/gtkui/main.py:2955 share/gpodder/ui/gtk/gpodder.ui.h:12 #, fuzzy msgid "Remove podcasts" msgstr "_PХ™ipojit se k novУЉmu kanУЁlu" #: src/gpodder/gtkui/main.py:2956 #, fuzzy msgid "Select the podcast you want to remove." msgstr "OznaФte epizody ke staХОenУ­." #: src/gpodder/gtkui/main.py:2960 #: src/gpodder/gtkui/desktop/episodeselector.py:105 #, fuzzy msgid "Remove" msgstr "Odstranit %s" #: src/gpodder/gtkui/main.py:2969 #, fuzzy msgid "Removing podcast" msgstr "OdstraХˆuji %s" #: src/gpodder/gtkui/main.py:2970 #, fuzzy msgid "Please wait while the podcast is removed" msgstr "Vyberte si prosУ­m ze seznamu kanУЁl k УКpravУЁm." #: src/gpodder/gtkui/main.py:2971 #, fuzzy msgid "Do you really want to remove this podcast and its episodes?" msgstr "SkuteФnФ› chcete odstranit %s i vХЁechny dosud staХОenУЉ epizody?" #: src/gpodder/gtkui/main.py:2973 #, fuzzy msgid "Removing podcasts" msgstr "VynechУЁvУЁm kanУЁl: %s" #: src/gpodder/gtkui/main.py:2974 #, fuzzy msgid "Please wait while the podcasts are removed" msgstr "Vyberte si prosУ­m ze seznamu kanУЁl k УКpravУЁm." #: src/gpodder/gtkui/main.py:2975 #, fuzzy msgid "Do you really want to remove the selected podcasts and their episodes?" msgstr "SkuteФnФ› chcete odstranit %s i vХЁechny dosud staХОenУЉ epizody?" #: src/gpodder/gtkui/main.py:3035 #, fuzzy msgid "Please select a podcast in the podcasts list to remove." msgstr "Vyberte si prosУ­m ze seznamu kanУЁl k УКpravУЁm." #: src/gpodder/gtkui/main.py:3045 #, fuzzy msgid "OPML files" msgstr "Export OPML skonФil neУКspФ›ХЁnФ›" #: src/gpodder/gtkui/main.py:3050 #, fuzzy msgid "Import from OPML" msgstr "Export do OPML" #: src/gpodder/gtkui/main.py:3064 #, fuzzy msgid "Import podcasts from OPML file" msgstr "Odstranit podcasty z iPodu" #: src/gpodder/gtkui/main.py:3071 msgid "Nothing to export" msgstr "NenУ­ co exportovat" #: src/gpodder/gtkui/main.py:3072 #, fuzzy msgid "" "Your list of podcast subscriptions is empty. Please subscribe to some " "podcasts first before trying to export your subscription list." msgstr "" "VУЁХЁ seznam pХ™ihlУЁХЁenУНch kanУЁlХЏ je prУЁzdnУН. PХ™ihlaste se prosУ­m k nФ›jakУЉmu " "zdroji podcastu abyste mohli svХЏj seznam exportovat." #: src/gpodder/gtkui/main.py:3076 msgid "Export to OPML" msgstr "Export do OPML" #: src/gpodder/gtkui/main.py:3087 #, python-format msgid "%(count)d subscription exported" msgid_plural "%(count)d subscriptions exported" msgstr[0] "" msgstr[1] "" msgstr[2] "" #: src/gpodder/gtkui/main.py:3088 msgid "Your podcast list has been successfully exported." msgstr "" #: src/gpodder/gtkui/main.py:3090 msgid "Could not export OPML to file. Please check your permissions." msgstr "" "NenУ­ moХОnУЉ exportovat OPML do souboru. Zkontrolujte prosУ­m svУЁ pХ™У­stupovУЁ " "prУЁva." #: src/gpodder/gtkui/main.py:3090 msgid "OPML export failed" msgstr "Export OPML skonФil neУКspФ›ХЁnФ›" #: src/gpodder/gtkui/main.py:3117 #, fuzzy msgid "No updates available" msgstr "Jsou dostupnУЉ novУЉ epizody" #: src/gpodder/gtkui/main.py:3118 msgid "You have the latest version of gPodder." msgstr "" #: src/gpodder/gtkui/main.py:3122 #, fuzzy msgid "New version available" msgstr "Jsou dostupnУЉ novУЉ epizody" #: src/gpodder/gtkui/main.py:3124 #, python-format msgid "Installed version: %s" msgstr "" #: src/gpodder/gtkui/main.py:3125 #, fuzzy, python-format msgid "Newest version: %s" msgstr "OdstraХˆuji %s" #: src/gpodder/gtkui/main.py:3126 #, fuzzy, python-format msgid "Release date: %s" msgstr "VyХЁlo" #: src/gpodder/gtkui/main.py:3128 #, fuzzy msgid "Download the latest version from gpodder.org?" msgstr "StУЁhnout do:" #: src/gpodder/gtkui/main.py:3141 #, fuzzy msgid "About gPodder" msgstr "UkonФit gPodder" #: src/gpodder/gtkui/main.py:3424 #, fuzzy msgid "Please register a YouTube API key and set it in the preferences." msgstr "" "VybranУН pХ™ehrУЁvaФ nebyl nalezen. Zkontrolujte prosУ­m zvolenУН pХ™ehrУЁvaФ v " "nastavenУ­ programu." #: src/gpodder/gtkui/main.py:3425 msgid "Would you like to set up an API key now?" msgstr "" #: src/gpodder/gtkui/main.py:3425 msgid "API key required" msgstr "" #: src/gpodder/gtkui/main.py:3444 bin/gpo:631 #, fuzzy msgid "No unique URL found" msgstr "Nebyly nalezeny zdroje podcastu" #: src/gpodder/gtkui/main.py:3449 bin/gpo:637 #, fuzzy msgid "Already subscribed" msgstr "NenУ­ moХОnУЉ odpojit zaХ™У­zenУ­." #: src/gpodder/gtkui/main.py:3458 bin/gpo:649 #, python-format msgid "Make sure the API key is correct. Error: %(message)s" msgstr "" #: src/gpodder/gtkui/main.py:3459 #, fuzzy msgid "Error getting YouTube channels" msgstr "Chyba uklУЁdУЁnУ­ seznamu kanУЁlХЏ" #: src/gpodder/gtkui/main.py:3462 msgid "Successfully migrated subscriptions" msgstr "" #: src/gpodder/gtkui/main.py:3464 #, fuzzy msgid "Subscriptions are up to date" msgstr "Popis" #: src/gpodder/gtkui/main.py:3467 msgid "These URLs failed:" msgstr "" #: src/gpodder/gtkui/main.py:3469 #, fuzzy msgid "Could not migrate some subscriptions" msgstr "NenУ­ moХОnУЉ pХ™idat kanУЁl" #: src/gpodder/gtkui/main.py:3493 msgid "Cannot start gPodder" msgstr "" #: src/gpodder/gtkui/main.py:3494 #, fuzzy, python-format msgid "D-Bus error: %s" msgstr "Chyba otevУ­rУЁnУ­ %s: %s" #: src/gpodder/gtkui/model.py:68 #, fuzzy, python-format msgid "released %s" msgstr "VyХЁlo" #: src/gpodder/gtkui/model.py:69 src/gpodder/gtkui/model.py:87 #: src/gpodder/gtkui/model.py:237 src/gpodder/gtkui/shownotes.py:84 #, fuzzy, python-format msgid "from %s" msgstr "z %s" #: src/gpodder/gtkui/model.py:80 src/gpodder/gtkui/model.py:393 #, fuzzy msgid "played" msgstr "NepХ™ehranУЉ" #: src/gpodder/gtkui/model.py:82 #, fuzzy msgid "unplayed" msgstr "NepХ™ehranУЉ" #: src/gpodder/gtkui/model.py:85 #, fuzzy msgid "today" msgstr "Dnes" #: src/gpodder/gtkui/model.py:86 #, fuzzy, python-format msgid "downloaded %s" msgstr "StУЁhnout %s" #: src/gpodder/gtkui/model.py:337 #, fuzzy msgid "Deleted" msgstr "VyХЁlo" #: src/gpodder/gtkui/model.py:342 #, fuzzy msgid "New episode" msgstr "ХНУЁdnУЉ novУЉ epizody" #: src/gpodder/gtkui/model.py:356 #, fuzzy msgid "Downloaded episode" msgstr "StУЁhnout novУЉ epizody" #: src/gpodder/gtkui/model.py:359 #, fuzzy msgid "Downloaded video episode" msgstr "StУЁhnout novУЉ epizody" #: src/gpodder/gtkui/model.py:362 #, fuzzy msgid "Downloaded image" msgstr "StaХОeno" #: src/gpodder/gtkui/model.py:365 #, fuzzy msgid "Downloaded file" msgstr "StaХОeno" #: src/gpodder/gtkui/model.py:380 #, fuzzy msgid "missing file" msgstr "OdstraХˆuji soubory" #: src/gpodder/gtkui/model.py:384 #, fuzzy msgid "never displayed" msgstr "OznaФit pХ™ehranУЉ" #: src/gpodder/gtkui/model.py:386 #, fuzzy msgid "never played" msgstr "OznaФit pХ™ehranУЉ" #: src/gpodder/gtkui/model.py:388 #, fuzzy msgid "never opened" msgstr "OznaФit pХ™ehranУЉ" #: src/gpodder/gtkui/model.py:391 #, fuzzy msgid "displayed" msgstr "NepХ™ehranУЉ" #: src/gpodder/gtkui/model.py:395 #, fuzzy msgid "opened" msgstr "iPodu pХ™ipojen" #: src/gpodder/gtkui/model.py:397 msgid "deletion prevented" msgstr "" #: src/gpodder/gtkui/model.py:432 share/gpodder/ui/gtk/gpodder.ui.h:32 #, fuzzy msgid "All episodes" msgstr "Smazat epizody" #: src/gpodder/gtkui/model.py:433 #, fuzzy msgid "from all podcasts" msgstr "_Podcasty" #: src/gpodder/gtkui/model.py:625 #, fuzzy msgid "Subscription paused" msgstr "Popis" #: src/gpodder/gtkui/shownotes.py:118 #, fuzzy msgid "Please select an episode" msgstr "Vybrat epizody" #: src/gpodder/gtkui/interface/addpodcast.py:74 #, fuzzy msgid "Nothing to paste." msgstr "NenУ­ co exportovat" #: src/gpodder/gtkui/interface/addpodcast.py:74 msgid "Clipboard is empty" msgstr "" #: src/gpodder/gtkui/interface/common.py:160 #, fuzzy msgid "Username" msgstr "UХОivatelskУЉ jmУЉno:" #: src/gpodder/gtkui/interface/common.py:163 msgid "New user" msgstr "" #: src/gpodder/gtkui/interface/common.py:170 msgid "Login" msgstr "" #: src/gpodder/gtkui/interface/common.py:172 msgid "Authentication required" msgstr "" #: src/gpodder/gtkui/interface/common.py:203 #, fuzzy msgid "Password" msgstr "Heslo:" #: src/gpodder/gtkui/interface/common.py:225 msgid "Select destination" msgstr "VУНbФ›r umУ­stФ›nУ­" #: src/gpodder/gtkui/interface/configeditor.py:34 #, fuzzy msgid "Setting" msgstr "TextovУН Х™etФ›zec" #: src/gpodder/gtkui/interface/configeditor.py:41 msgid "Set to" msgstr "" #: src/gpodder/gtkui/interface/configeditor.py:81 #, fuzzy, python-format msgid "Cannot set %(field)s to %(value)s. Needed data type: %(datatype)s" msgstr "" "NenУ­ moХОnУЉ nastavit hodnotu od %s do %s.\n" "\n" "PoХОadovanУН datovУН typ: %s" #: src/gpodder/gtkui/interface/configeditor.py:85 #, fuzzy msgid "Error setting option" msgstr "Chyba uklУЁdУЁnУ­ seznamu kanУЁlХЏ" #: src/gpodder/gtkui/desktop/channel.py:100 #, fuzzy msgid "Add section" msgstr "Seznam kanУЁ_lХЏ" #: src/gpodder/gtkui/desktop/channel.py:100 #, fuzzy msgid "New section:" msgstr "UХОivatelskУЉ jmУЉno:" #: src/gpodder/gtkui/desktop/channel.py:133 msgid "Select new podcast cover artwork" msgstr "" #: src/gpodder/gtkui/desktop/channel.py:161 msgid "You can only drop a single image or URL here." msgstr "Sem patХ™У­ pouze jedinУН obrУЁzek nebo URL adresa." #: src/gpodder/gtkui/desktop/channel.py:161 #: src/gpodder/gtkui/desktop/channel.py:171 msgid "Drag and drop" msgstr "TУЁhni a pusХЅ" #: src/gpodder/gtkui/desktop/channel.py:171 msgid "You can only drop local files and http:// URLs here." msgstr "Sem mХЏХОete pХ™etУЁhnout pouze mУ­stnУ­ soubory a http:// adresy." #: src/gpodder/gtkui/desktop/deviceplaylist.py:98 #, python-format msgid "Folder %s could not be created." msgstr "" #: src/gpodder/gtkui/desktop/deviceplaylist.py:98 #, fuzzy msgid "Error writing playlist" msgstr "Chyba spouХЁtФ›nУ­ pХ™ehrУЁvaФe: %s" #: src/gpodder/gtkui/desktop/episodeselector.py:288 #: share/gpodder/ui/gtk/gpodderepisodeselector.ui.h:2 msgid "Select all" msgstr "OznaФit vХЁe" #: src/gpodder/gtkui/desktop/episodeselector.py:292 #: share/gpodder/ui/gtk/gpodderepisodeselector.ui.h:3 msgid "Select none" msgstr "ZruХЁit vУНbФ›r" #: src/gpodder/gtkui/desktop/episodeselector.py:324 msgid "Nothing selected" msgstr "NenУ­ nic vybrУЁno" #: src/gpodder/gtkui/desktop/episodeselector.py:325 #, python-format msgid "%(count)d episode" msgid_plural "%(count)d episodes" msgstr[0] "" msgstr[1] "" msgstr[2] "" #: src/gpodder/gtkui/desktop/episodeselector.py:327 #, fuzzy, python-format msgid "size: %s" msgstr "CelkovУЁ velikost: %s" #: src/gpodder/gtkui/desktop/podcastdirectory.py:238 #, fuzzy msgid "Loading podcasts" msgstr "VynechУЁvУЁm kanУЁl: %s" #: src/gpodder/gtkui/desktop/podcastdirectory.py:239 #, fuzzy msgid "Please wait while the podcast list is downloaded" msgstr "Vyberte si prosУ­m ze seznamu kanУЁl k УКpravУЁm." #: src/gpodder/gtkui/desktop/preferences.py:51 #: src/gpodder/gtkui/desktop/preferences.py:93 msgid "Do nothing" msgstr "Nic nedФ›lat" #: src/gpodder/gtkui/desktop/preferences.py:52 #, fuzzy msgid "Show episode list" msgstr "Epizoda" #: src/gpodder/gtkui/desktop/preferences.py:53 #, fuzzy msgid "Add to download list" msgstr "odkaz ke staХОenУ­" #: src/gpodder/gtkui/desktop/preferences.py:54 #, fuzzy msgid "Download immediately" msgstr "StaХОeno" #: src/gpodder/gtkui/desktop/preferences.py:72 #, fuzzy msgid "None" msgstr "iPodu pХ™ipojen" #: src/gpodder/gtkui/desktop/preferences.py:73 msgid "iPod" msgstr "" #: src/gpodder/gtkui/desktop/preferences.py:74 #, fuzzy msgid "Filesystem-based" msgstr "" "ХНУЁdnУН\n" "iPod\n" "SouborovУН MP3 pХ™ehrУЁvaФ" #: src/gpodder/gtkui/desktop/preferences.py:94 #, fuzzy msgid "Mark as played" msgstr "OznaФit %s jako dosud nepХ™ehrУЁvanУЉ" #: src/gpodder/gtkui/desktop/preferences.py:95 #, fuzzy msgid "Delete from gPodder" msgstr "Smazat epizody z poФУ­taФe" #: src/gpodder/gtkui/desktop/preferences.py:123 #, fuzzy, python-format msgid "Custom (%(format_ids)s)" msgstr "VlastnУ­ formУЁt Х™etФ›zcХЏ" #: src/gpodder/gtkui/desktop/preferences.py:318 msgid "Name" msgstr "" #: src/gpodder/gtkui/desktop/preferences.py:369 msgid "Documentation" msgstr "" #: src/gpodder/gtkui/desktop/preferences.py:374 msgid "Extension info" msgstr "" #: src/gpodder/gtkui/desktop/preferences.py:379 msgid "Support the author" msgstr "" #: src/gpodder/gtkui/desktop/preferences.py:413 msgid "Extension cannot be activated" msgstr "" #: src/gpodder/gtkui/desktop/preferences.py:426 msgid "Extension module info" msgstr "" #: src/gpodder/gtkui/desktop/preferences.py:463 #, fuzzy msgid "Configure audio player" msgstr "Editor kanУЁlХЏ" #: src/gpodder/gtkui/desktop/preferences.py:464 #: src/gpodder/gtkui/desktop/preferences.py:474 #, fuzzy msgid "Command:" msgstr "PХ™У­kazovУН Х™УЁdek:" #: src/gpodder/gtkui/desktop/preferences.py:473 #, fuzzy msgid "Configure video player" msgstr "MP3 pХ™ehrУЁvaФ" #: src/gpodder/gtkui/desktop/preferences.py:485 #: src/gpodder/gtkui/desktop/preferences.py:503 #, fuzzy msgid "manually" msgstr "UХОivatelskУЉ jmУЉno:" #: src/gpodder/gtkui/desktop/preferences.py:505 #, python-format msgid "after %(count)d day" msgid_plural "after %(count)d days" msgstr[0] "" msgstr[1] "" msgstr[2] "" #: src/gpodder/gtkui/desktop/preferences.py:541 #, fuzzy msgid "Replace subscription list on server" msgstr "Popis" #: src/gpodder/gtkui/desktop/preferences.py:542 msgid "" "Remote podcasts that have not been added locally will be removed on the " "server. Continue?" msgstr "" #: src/gpodder/gtkui/desktop/preferences.py:621 #, fuzzy msgid "Select folder for mount point" msgstr "Volba pХ™У­pojenУЉho bodu pro iPod" #: src/gpodder/gtkui/desktop/preferences.py:638 #, fuzzy msgid "Select folder for playlists" msgstr "Volba pХ™У­pojenУЉho bodu pro iPod" #: src/gpodder/gtkui/desktop/sync.py:86 msgid "No device configured" msgstr "NenУ­ nastavenУЉ ХОУЁdnУЉ zaХ™У­zenУ­" #: src/gpodder/gtkui/desktop/sync.py:87 #, fuzzy msgid "Please set up your device in the preferences dialog." msgstr "" "VybranУН pХ™ehrУЁvaФ nebyl nalezen. Zkontrolujte prosУ­m zvolenУН pХ™ehrУЁvaФ v " "nastavenУ­ programu." #: src/gpodder/gtkui/desktop/sync.py:91 msgid "Cannot open device" msgstr "NenУ­ moХОnУЉ pХ™ipojit zaХ™У­zenУ­" #: src/gpodder/gtkui/desktop/sync.py:92 #, fuzzy msgid "Please check the settings in the preferences dialog." msgstr "" "VybranУН pХ™ehrУЁvaФ nebyl nalezen. Zkontrolujte prosУ­m zvolenУН pХ™ehrУЁvaФ v " "nastavenУ­ programu." #: src/gpodder/gtkui/desktop/sync.py:139 #, fuzzy msgid "Not enough space left on device" msgstr "ХНУЁdnУЉ soubory na zaХ™У­zenУ­" #: src/gpodder/gtkui/desktop/sync.py:140 #, python-format msgid "" "Additional free space required: %(required_space)s\n" "Do you want to continue?" msgstr "" #: src/gpodder/gtkui/desktop/sync.py:199 msgid "Update successful" msgstr "" #: src/gpodder/gtkui/desktop/sync.py:200 msgid "The playlist on your MP3 player has been updated." msgstr "" #: src/gpodder/gtkui/desktop/sync.py:274 msgid "Episodes have been deleted on device" msgstr "" #: src/gpodder/gtkui/desktop/sync.py:285 #, fuzzy msgid "Error writing playlist files" msgstr "Chyba pХ™i konverzi souboru" #: src/gpodder/plugins/soundcloud.py:154 #, fuzzy msgid "Unknown track" msgstr "(neznУЁmУН)" #: src/gpodder/plugins/soundcloud.py:181 #, python-format msgid "%s on Soundcloud" msgstr "" #: src/gpodder/plugins/soundcloud.py:190 #, python-format msgid "Tracks published by %s on Soundcloud." msgstr "" #: src/gpodder/plugins/soundcloud.py:217 #, python-format msgid "%s's favorites on Soundcloud" msgstr "" #: src/gpodder/plugins/soundcloud.py:223 #, python-format msgid "Tracks favorited by %s on Soundcloud." msgstr "" #: share/gpodder/extensions/audio_converter.py:20 #, fuzzy msgid "Convert audio files" msgstr "Konverze souboru" #: share/gpodder/extensions/audio_converter.py:21 msgid "Transcode audio files to mp3/ogg" msgstr "" #: share/gpodder/extensions/audio_converter.py:84 #: share/gpodder/extensions/video_converter.py:86 #, python-format msgid "Convert to %(format)s" msgstr "" #: share/gpodder/extensions/audio_converter.py:111 #: share/gpodder/extensions/rockbox_convert2mp4.py:65 #: share/gpodder/extensions/video_converter.py:111 #, fuzzy msgid "File converted" msgstr "PouХОУ­t pХ™evadФ›Ф:" #: share/gpodder/extensions/audio_converter.py:114 #: share/gpodder/extensions/video_converter.py:114 #, fuzzy msgid "Conversion failed" msgstr "Konverze souboru" #: share/gpodder/extensions/concatenate_videos.py:20 #: share/gpodder/extensions/concatenate_videos.py:100 #, fuzzy msgid "Concatenate videos" msgstr "Konverze souboru" #: share/gpodder/extensions/concatenate_videos.py:21 msgid "Add a context menu item for concatenating multiple videos" msgstr "" #: share/gpodder/extensions/concatenate_videos.py:37 msgid "Save video" msgstr "" #: share/gpodder/extensions/concatenate_videos.py:66 #, fuzzy msgid "Concatenating video files" msgstr "Konverze souboru" #: share/gpodder/extensions/concatenate_videos.py:67 #, python-format msgid "Writing %(filename)s" msgstr "" #: share/gpodder/extensions/concatenate_videos.py:78 msgid "Videos successfully converted" msgstr "" #: share/gpodder/extensions/concatenate_videos.py:79 #, fuzzy msgid "Error converting videos" msgstr "Chyba pХ™i konverzi souboru" #: share/gpodder/extensions/concatenate_videos.py:80 msgid "Concatenation result" msgstr "" #: share/gpodder/extensions/enqueue_in_mediaplayer.py:16 msgid "Enqueue in media players" msgstr "" #: share/gpodder/extensions/enqueue_in_mediaplayer.py:17 msgid "" "Add a context menu item for enqueueing episodes in installed media players" msgstr "" #: share/gpodder/extensions/enqueue_in_mediaplayer.py:35 msgid "Enqueue in" msgstr "" #: share/gpodder/extensions/episode_website_context_menu.py:14 msgid "\"Open website\" episode context menu" msgstr "" #: share/gpodder/extensions/episode_website_context_menu.py:15 msgid "Add a context menu item for opening the website of an episode" msgstr "" #: share/gpodder/extensions/episode_website_context_menu.py:30 #, fuzzy msgid "Open website" msgstr "WebovУЁ strУЁnka:" #: share/gpodder/extensions/gtk_statusicon.py:14 #, fuzzy msgid "Gtk Status Icon" msgstr "Stav" #: share/gpodder/extensions/gtk_statusicon.py:15 msgid "Show a status icon for Gtk-based Desktops." msgstr "" #: share/gpodder/extensions/minimize_on_start.py:10 msgid "Minimize on start" msgstr "" #: share/gpodder/extensions/minimize_on_start.py:11 msgid "Minimizes the gPodder window on startup." msgstr "" #: share/gpodder/extensions/mpris-listener.py:33 msgid "MPRIS Listener" msgstr "" #: share/gpodder/extensions/mpris-listener.py:34 msgid "Convert MPRIS notifications to gPodder Media Player D-Bus API" msgstr "" #: share/gpodder/extensions/normalize_audio.py:21 msgid "Normalize audio with re-encoding" msgstr "" #: share/gpodder/extensions/normalize_audio.py:22 msgid "Normalize the volume of audio files with normalize-audio" msgstr "" #: share/gpodder/extensions/normalize_audio.py:99 msgid "File normalized" msgstr "" #: share/gpodder/extensions/rename_download.py:16 #, fuzzy msgid "Rename episodes after download" msgstr "jedna staХОenУЁ epizoda:" #: share/gpodder/extensions/rename_download.py:17 #, fuzzy msgid "Rename episodes to \".\" on download" msgstr "Jsou dostupnУЉ novУЉ epizody" #: share/gpodder/extensions/rm_ogg_cover.py:37 #, fuzzy msgid "Remove cover art from OGG files" msgstr "Odstranit starУЉ episody" #: share/gpodder/extensions/rm_ogg_cover.py:38 msgid "removes coverart from all downloaded ogg files" msgstr "" #: share/gpodder/extensions/rm_ogg_cover.py:66 #, fuzzy msgid "Remove cover art" msgstr "_PХ™ipojit se k novУЉmu kanУЁlu" #: share/gpodder/extensions/rockbox_convert2mp4.py:26 msgid "Convert video files to MP4 for Rockbox" msgstr "" #: share/gpodder/extensions/rockbox_convert2mp4.py:27 msgid "Converts all videos to a Rockbox-compatible format" msgstr "" #: share/gpodder/extensions/sonos.py:19 share/gpodder/extensions/sonos.py:78 msgid "Stream to Sonos" msgstr "" #: share/gpodder/extensions/sonos.py:20 msgid "Stream podcasts to Sonos speakers" msgstr "" #: share/gpodder/extensions/tagging.py:45 msgid "Tag downloaded files using Mutagen" msgstr "" #: share/gpodder/extensions/tagging.py:46 #, fuzzy msgid "Add episode and podcast titles to MP3/OGG tags" msgstr "Epizoda" #: share/gpodder/extensions/taskbar_progress.py:28 msgid "Show download progress on the taskbar" msgstr "" #: share/gpodder/extensions/taskbar_progress.py:29 msgid "Displays the progress on the Windows taskbar." msgstr "" #: share/gpodder/extensions/ted_subtitles.py:16 msgid "Subtitle Downloader for TED Talks" msgstr "" #: share/gpodder/extensions/ted_subtitles.py:17 msgid "Downloads .srt subtitles for TED Talks Videos" msgstr "" #: share/gpodder/extensions/ubuntu_appindicator.py:10 msgid "Ubuntu App Indicator" msgstr "" #: share/gpodder/extensions/ubuntu_appindicator.py:11 msgid "Show a status indicator in the top bar." msgstr "" #: share/gpodder/extensions/ubuntu_appindicator.py:47 msgid "Show main window" msgstr "" #: share/gpodder/extensions/ubuntu_appindicator.py:57 #: share/gpodder/ui/gtk/gpodder.ui.h:6 msgid "Quit" msgstr "" #: share/gpodder/extensions/ubuntu_unity.py:10 msgid "Ubuntu Unity Integration" msgstr "" #: share/gpodder/extensions/ubuntu_unity.py:11 msgid "Show download progress in the Unity Launcher icon." msgstr "" #: share/gpodder/extensions/update_feeds_on_startup.py:14 #, fuzzy msgid "Search for new episodes on startup" msgstr "Zkontrolovat zda nevyХЁly novУЉ epizody" #: share/gpodder/extensions/update_feeds_on_startup.py:15 #, fuzzy msgid "Starts the search for new episodes on startup" msgstr "Zkontrolovat zda nevyХЁly novУЉ epizody" #: share/gpodder/extensions/video_converter.py:22 #, fuzzy msgid "Convert video files" msgstr "Konverze souboru" #: share/gpodder/extensions/video_converter.py:23 msgid "Transcode video files to avi/mp4/m4v" msgstr "" #: share/gpodder/ui/gtk/gpodderaddpodcast.ui.h:1 #, fuzzy msgid "Add a new podcast" msgstr "_PХ™ipojit se k novУЉmu kanУЁlu" #: share/gpodder/ui/gtk/gpodderaddpodcast.ui.h:2 #, fuzzy msgid "URL:" msgstr "URL zdroje podcast:" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:1 #, fuzzy msgid "gPodder Podcast Editor" msgstr "Editor kanУЁlХЏ" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:2 msgid "Section:" msgstr "" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:3 msgid "Disable feed updates (pause subscription)" msgstr "" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:4 #, fuzzy msgid "Synchronize to MP3 player devices" msgstr "Synchronizuji iPod/pХ™ehrУЁvaФ" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:5 msgid "Strategy:" msgstr "" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:6 #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:6 msgid "General" msgstr "ObecnУЉ" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:7 msgid "HTTP/FTP Authentication" msgstr "HTTP/FTP autentizace" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:8 #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:13 msgid "Username:" msgstr "UХОivatelskУЉ jmУЉno:" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:9 #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:14 msgid "Password:" msgstr "Heslo:" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:10 msgid "Locations" msgstr "MУ­sta" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:11 msgid "Download to:" msgstr "StУЁhnout do:" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:12 msgid "Website:" msgstr "WebovУЁ strУЁnka:" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:13 msgid "website label" msgstr "nУЁlepka webu" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:14 msgid "Advanced" msgstr "PokroФilУЉ" #: share/gpodder/ui/gtk/gpodderconfigeditor.ui.h:1 msgid "gPodder Configuration Editor" msgstr "Editor kanУЁlХЏ" #: share/gpodder/ui/gtk/gpodderconfigeditor.ui.h:2 msgid "Search for:" msgstr "" #: share/gpodder/ui/gtk/gpodderconfigeditor.ui.h:3 msgid "Show All" msgstr "OznaФit vХЁe" #: share/gpodder/ui/gtk/gpodderepisodeselector.ui.h:1 msgid "Select episodes" msgstr "Vybrat epizody" #: share/gpodder/ui/gtk/gpodderpodcastdirectory.ui.h:1 #, fuzzy msgid "Find new podcasts" msgstr "_PХ™ipojit se k novУЉmu kanУЁlu" #: share/gpodder/ui/gtk/gpodderpodcastdirectory.ui.h:2 #, fuzzy msgid "Select All" msgstr "OznaФit vХЁe" #: share/gpodder/ui/gtk/gpodderpodcastdirectory.ui.h:3 #, fuzzy msgid "Select None" msgstr "ZruХЁit vУНbФ›r" #: share/gpodder/ui/gtk/gpodderpodcastdirectory.ui.h:4 msgid "label" msgstr "" #: share/gpodder/ui/gtk/gpodderpodcastdirectory.ui.h:5 msgid "..." msgstr "" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:1 #: share/gpodder/ui/gtk/gpodder.ui.h:5 #, fuzzy msgid "Preferences" msgstr "_Volby" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:2 #, fuzzy msgid "Audio player:" msgstr "MP3 pХ™ehrУЁvaФ" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:3 #, fuzzy msgid "Video player:" msgstr "MP3 pХ™ehrУЁvaФ" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:4 #, fuzzy msgid "\"All episodes\" in podcast list" msgstr "Epizoda" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:5 #, fuzzy msgid "Use sections for podcast list" msgstr "Chyba uklУЁdУЁnУ­ seznamu kanУЁlХЏ" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:7 msgid "Preferred YouTube format:" msgstr "" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:8 msgid "YouTube API key (v3):" msgstr "" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:9 msgid "Preferred Vimeo format:" msgstr "" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:11 msgid "Extensions" msgstr "" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:12 msgid "Synchronize subscriptions and episode actions" msgstr "" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:15 msgid "Replace list on server with local subscriptions" msgstr "" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:16 #, fuzzy msgid "Device name:" msgstr "ZaХ™У­zenУ­" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:17 #, fuzzy msgid "gpodder.net" msgstr "StУЁhnout do:" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:18 #, fuzzy msgid "Update interval:" msgstr "Stahuji zdroje podcastu" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:19 msgid "Maximum number of episodes per podcast:" msgstr "" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:20 #, fuzzy msgid "When new episodes are found:" msgstr "Jsou dostupnУЉ novУЉ epizody" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:21 #, fuzzy msgid "Updating" msgstr "PХ™idУЁvУЁnУ­ %s" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:22 #, fuzzy msgid "Delete played episodes:" msgstr "Odstranit starУЉ episody" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:23 #, fuzzy msgid "Remove played episodes even if unfinished" msgstr "Odstranit podcasty z iPodu" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:24 #, fuzzy msgid "Also remove unplayed episodes" msgstr "Odstranit starУЉ episody" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:25 #, fuzzy msgid "Clean-up" msgstr "VyФiХЁtФ›nУ­" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:26 #, fuzzy msgid "Device type:" msgstr "ZaХ™У­zenУ­" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:27 #, fuzzy msgid "Mountpoint:" msgstr "adresУЁХ™ iPodu:" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:28 #, fuzzy msgid "After syncing an episode:" msgstr "stahovУЁnУ­ %d epizod" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:29 #, fuzzy msgid "Create playlists on device" msgstr "Popis" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:30 #, fuzzy msgid "Playlists Folder:" msgstr "NУЁzev playlistu:" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:31 msgid "Remove episodes deleted on device from gPodder" msgstr "" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:32 #, fuzzy msgid "Only sync unplayed episodes" msgstr "Stahuji epizody" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:33 #, fuzzy msgid "Devices" msgstr "ZaХ™У­zenУ­" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:34 msgid "Edit config" msgstr "" #: share/gpodder/ui/gtk/gpodder.ui.h:1 msgid "_Podcasts" msgstr "_Podcasty" #: share/gpodder/ui/gtk/gpodder.ui.h:2 msgid "Check for new episodes" msgstr "Zkontrolovat zda nevyХЁly novУЉ epizody" #: share/gpodder/ui/gtk/gpodder.ui.h:3 msgid "Download new episodes" msgstr "StУЁhnout novУЉ epizody" #: share/gpodder/ui/gtk/gpodder.ui.h:7 #, fuzzy msgid "_Subscriptions" msgstr "Popis" #: share/gpodder/ui/gtk/gpodder.ui.h:8 #, fuzzy msgid "Discover new podcasts" msgstr "_PХ™ipojit se k novУЉmu kanУЁlu" #: share/gpodder/ui/gtk/gpodder.ui.h:9 #, fuzzy msgid "Add podcast via URL" msgstr "VynechУЁvУЁm kanУЁl: %s" #: share/gpodder/ui/gtk/gpodder.ui.h:11 #, fuzzy msgid "Unsubscribe" msgstr "Popis" #: share/gpodder/ui/gtk/gpodder.ui.h:14 #, fuzzy msgid "Import from OPML file" msgstr "Export do OPML" #: share/gpodder/ui/gtk/gpodder.ui.h:15 #, fuzzy msgid "Export to OPML file" msgstr "Export do OPML" #: share/gpodder/ui/gtk/gpodder.ui.h:16 #, fuzzy msgid "Go to gpodder.net" msgstr "StУЁhnout do:" #: share/gpodder/ui/gtk/gpodder.ui.h:17 #, fuzzy msgid "_Episodes" msgstr "Epizoda" #: share/gpodder/ui/gtk/gpodder.ui.h:18 #, fuzzy msgid "Play" msgstr "PХ™ehrУЁvaФ" #: share/gpodder/ui/gtk/gpodder.ui.h:19 msgid "Open" msgstr "" #: share/gpodder/ui/gtk/gpodder.ui.h:22 #, fuzzy msgid "Delete" msgstr "VyХЁlo" #: share/gpodder/ui/gtk/gpodder.ui.h:23 msgid "Toggle new status" msgstr "" #: share/gpodder/ui/gtk/gpodder.ui.h:24 #, fuzzy msgid "Change delete lock" msgstr "Seznam kanУЁ_lХЏ" #: share/gpodder/ui/gtk/gpodder.ui.h:26 #, fuzzy msgid "E_xtras" msgstr "OstatnУ­" #: share/gpodder/ui/gtk/gpodder.ui.h:27 #, fuzzy msgid "Sync to device" msgstr "_Synchronizace" #: share/gpodder/ui/gtk/gpodder.ui.h:28 #, fuzzy msgid "Update YouTube subscriptions" msgstr "Popis" #: share/gpodder/ui/gtk/gpodder.ui.h:29 #, fuzzy msgid "_View" msgstr "_ZobrazenУ­" #: share/gpodder/ui/gtk/gpodder.ui.h:30 #, fuzzy msgid "Toolbar" msgstr "Zobrazovat panel nУЁstrojХЏ" #: share/gpodder/ui/gtk/gpodder.ui.h:31 #, fuzzy msgid "Episode descriptions" msgstr "Zobrazovat popis epizody" #: share/gpodder/ui/gtk/gpodder.ui.h:33 #, fuzzy msgid "Hide deleted episodes" msgstr "Smazat epizody" #: share/gpodder/ui/gtk/gpodder.ui.h:34 #, fuzzy msgid "Downloaded episodes" msgstr "StУЁhnout novУЉ epizody" #: share/gpodder/ui/gtk/gpodder.ui.h:35 #, fuzzy msgid "Unplayed episodes" msgstr "Stahuji epizody" #: share/gpodder/ui/gtk/gpodder.ui.h:36 #, fuzzy msgid "Hide podcasts without episodes" msgstr "Odstranit kanУЁl vФetnФ› epizod?" #: share/gpodder/ui/gtk/gpodder.ui.h:37 msgid "_Help" msgstr "_NУЁpovФ›da" #: share/gpodder/ui/gtk/gpodder.ui.h:38 #, fuzzy msgid "User manual" msgstr "UХОivatelskУЉ jmУЉno:" #: share/gpodder/ui/gtk/gpodder.ui.h:39 msgid "Software updates" msgstr "" #: share/gpodder/ui/gtk/gpodder.ui.h:40 #, fuzzy msgid "Filter:" msgstr "Filtr:" #: share/gpodder/ui/gtk/gpodder.ui.h:41 msgid "Podcasts" msgstr "Podcast" #: share/gpodder/ui/gtk/gpodder.ui.h:42 #, fuzzy msgid "Limit rate to" msgstr "Limit rychlosti stahovУЁnУ­ na" #: share/gpodder/ui/gtk/gpodder.ui.h:43 msgid "KiB/s" msgstr "" #: share/gpodder/ui/gtk/gpodder.ui.h:44 #, fuzzy msgid "Limit downloads to" msgstr "Limit rychlosti stahovУЁnУ­ na" #: share/gpodder/ui/gtk/gpodderwelcome.ui.h:2 #, fuzzy msgid "Welcome to gPodder" msgstr "OznaФte epizody" #: share/gpodder/ui/gtk/gpodderwelcome.ui.h:3 #, fuzzy msgid "Your podcast list is empty." msgstr "Chyba uklУЁdУЁnУ­ seznamu kanУЁlХЏ" #: share/gpodder/ui/gtk/gpodderwelcome.ui.h:4 #, fuzzy msgid "Choose from a list of example podcasts" msgstr "_Podcasty" #: share/gpodder/ui/gtk/gpodderwelcome.ui.h:5 #, fuzzy msgid "Add a podcast by entering its URL" msgstr "VynechУЁvУЁm kanУЁl: %s" #: share/gpodder/ui/gtk/gpodderwelcome.ui.h:6 #, fuzzy msgid "Restore my subscriptions from gpodder.net" msgstr "StУЁhnout do:" #: bin/gpo:266 #, fuzzy msgid "Podcast update requested by extensions." msgstr "PХ™ihlУЁХЁenУ­ heslem" #: bin/gpo:270 msgid "Episode download requested by extensions." msgstr "" #: bin/gpo:323 #, python-format msgid "Invalid url: %s" msgstr "" #: bin/gpo:340 bin/gpo:416 bin/gpo:450 bin/gpo:582 bin/gpo:597 bin/gpo:717 #, fuzzy, python-format msgid "You are not subscribed to %s." msgstr "K tomuto kanУЁlu jste jiХО pХ™ihlУЁХЁenУН: %s" #: bin/gpo:346 #, fuzzy, python-format msgid "Already subscribed to %s." msgstr "NenУ­ moХОnУЉ odpojit zaХ™У­zenУ­." #: bin/gpo:352 #, fuzzy, python-format msgid "Cannot subscribe to %s." msgstr "NenУ­ moХОnУЉ odpojit zaХ™У­zenУ­." #: bin/gpo:368 #, python-format msgid "Successfully added %s." msgstr "" #: bin/gpo:386 msgid "This configuration option does not exist." msgstr "" #: bin/gpo:390 msgid "Can only set leaf configuration nodes." msgstr "" #: bin/gpo:404 #, python-format msgid "Renamed %(old_title)s to %(new_title)s." msgstr "" #: bin/gpo:420 #, fuzzy, python-format msgid "Unsubscribed from %s." msgstr "Popis" #: bin/gpo:494 #, fuzzy msgid "Updates disabled" msgstr "%d oznaФenУНch epizod" #: bin/gpo:505 #, python-format msgid "%(count)d new episode" msgid_plural "%(count)d new episodes" msgstr[0] "" msgstr[1] "" msgstr[2] "" #: bin/gpo:511 #, fuzzy msgid "Checking for new episodes" msgstr "Zkontrolovat zda nevyХЁly novУЉ epizody" #: bin/gpo:520 #, fuzzy, python-format msgid "Skipping %(podcast)s" msgstr "VynechУЁvУЁm kanУЁl: %s" #: bin/gpo:588 #, python-format msgid "Disabling feed update from %s." msgstr "" #: bin/gpo:603 #, fuzzy, python-format msgid "Enabling feed update from %s." msgstr "OdstraХˆuji soubory" #: bin/gpo:616 #, python-format msgid "Please register a YouTube API key and set it using %(command)s." msgstr "" #: bin/gpo:643 #, python-format msgid "Changing: %(old_url)s => %(new_url)s" msgstr "" #: bin/gpo:653 #, fuzzy msgid "Nothing to fix" msgstr "NenУ­ co exportovat" #: bin/gpo:672 #, fuzzy msgid "No podcasts found." msgstr "Nebyly nalezeny zdroje podcastu" #: bin/gpo:686 msgid "Enter index to subscribe, ? for list" msgstr "" #: bin/gpo:700 bin/gpo:704 msgid "Invalid value." msgstr "" #: bin/gpo:721 #, python-format msgid "Invalid URL: %s" msgstr "" #: bin/gpo:724 #, python-format msgid "Changed URL from %(old_url)s to %(new_url)s." msgstr "" #: bin/gpo:782 #, python-format msgid "Syntax error: %(error)s" msgstr "" #: bin/gpo:876 msgid "Ambiguous command. Did you mean.." msgstr "" #: bin/gpo:880 msgid "The requested function is not available." msgstr "" #: bin/gpodder:105 #, fuzzy msgid "print logging output on the console" msgstr "Vypisovat ladУ­cУ­ informace na standardnУ­ vУНstup" #: bin/gpodder:108 #, fuzzy msgid "subscribe to the feed at URL" msgstr "PХ™ihlУЁsit se k odbФ›ru z URL" #: bin/gpodder:113 msgid "Mac OS X application process number" msgstr "" #: share/applications/gpodder.desktop.in.h:2 #, fuzzy msgid "gPodder Podcast Client" msgstr "Editor kanУЁlХЏ" #: share/applications/gpodder.desktop.in.h:3 #, fuzzy msgid "Podcast Client" msgstr "Podcast" #: share/applications/gpodder.desktop.in.h:4 msgid "Subscribe to audio and video content from the web" msgstr "" #: share/applications/gpodder-url-handler.desktop.in.h:1 #, fuzzy msgid "gPodder (subscribe to feed)" msgstr "PХ™ihlУЁsit se k odbФ›ru z URL" gpodder-3.9.0/po/uk.po0000644000016000001710000020313712654461626015700 0ustar jenkinsjenkins00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # # Translators: # Thomas Perl , 2006. msgid "" msgstr "" "Project-Id-Version: gPodder\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2016-02-03 20:31+0000\n" "PO-Revision-Date: 2013-01-19 12:31+0000\n" "Last-Translator: Thomas Perl \n" "Language-Team: LANGUAGE \n" "Language: uk\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n" "%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" #: src/gpodder/config.py:55 #, python-format msgid "gPodder on %s" msgstr "gPodder аНаА %s" #: src/gpodder/directory.py:95 #, fuzzy msgid "gpodder.net search" msgstr "gpodder.net" #: src/gpodder/directory.py:104 #, fuzzy msgid "OPML from web" msgstr "аЄаАаЙаЛаИ OPML" #: src/gpodder/directory.py:113 #, fuzzy msgid "OPML file" msgstr "аЄаАаЙаЛаИ OPML" #: src/gpodder/directory.py:122 share/gpodder/ui/gtk/gpodderwelcome.ui.h:1 #, fuzzy msgid "Getting started" msgstr "аŸаАб€аАаМаЕб‚б€аИ" #: src/gpodder/directory.py:131 #, fuzzy msgid "gpodder.net Top 50" msgstr "gpodder.net" #: src/gpodder/directory.py:140 #, fuzzy msgid "gpodder.net Tags" msgstr "gpodder.net" #: src/gpodder/directory.py:152 #, fuzzy msgid "Soundcloud search" msgstr "%s аНаА Soundcloud" #: src/gpodder/directory.py:165 #, fuzzy msgid "Imported OPML file" msgstr "а†аМаПаОб€б‚бƒаВаАб‚аИ аЗ OPML-б„аАаЙаЛбƒ" #: src/gpodder/download.py:329 msgid "Wrong username/password" msgstr "ааЕаПб€аАаВаИаЛбŒаНаЕ б–аМ'б аКаОб€аИбб‚бƒаВаАб‡аА/аПаАб€аОаЛбŒ" #: src/gpodder/download.py:527 src/gpodder/sync.py:924 msgid "Added" msgstr "а”аОаДаАаНаО" #: src/gpodder/download.py:527 src/gpodder/sync.py:924 msgid "Queued" msgstr "а’ б‡аЕб€аЗб–" #: src/gpodder/download.py:527 src/gpodder/gtkui/model.py:327 msgid "Downloading" msgstr "а—аАаВаАаНб‚аАаЖбƒбŽ" #: src/gpodder/download.py:528 src/gpodder/model.py:721 #: src/gpodder/sync.py:925 msgid "Finished" msgstr "а—аАаВаЕб€бˆаЕаНаО" #: src/gpodder/download.py:528 src/gpodder/sync.py:925 msgid "Failed" msgstr "аŸаОаМаИаЛаКаА" #: src/gpodder/download.py:528 src/gpodder/sync.py:925 msgid "Cancelled" msgstr "аЁаКаАбаОаВаАаНаО" #: src/gpodder/download.py:528 src/gpodder/sync.py:925 msgid "Paused" msgstr "аŸб€аИаЗбƒаПаИаНаЕаНаО" #: src/gpodder/download.py:862 msgid "Missing content from server" msgstr "ааА баЕб€аВаЕб€б– аНаЕаМаАб” аКаОаНб‚аЕаНб‚бƒ" #: src/gpodder/download.py:868 #, python-format msgid "I/O Error: %(error)s: %(filename)s" msgstr "аŸаОаМаИаЛаКаА аВаВаОаДбƒ/аВаИаВаОаДбƒ: %(error)s: %(filename)s" #: src/gpodder/download.py:875 #, python-format msgid "HTTP Error %(code)s: %(message)s" msgstr "HTTP аПаОаМаИаЛаКаА %(code)s: %(message)s" #: src/gpodder/download.py:879 src/gpodder/sync.py:1081 #, python-format msgid "Error: %s" msgstr "аŸаОаМаИаЛаКаА: %s" #: src/gpodder/extensions.py:55 msgid "Desktop Integration" msgstr "" #: src/gpodder/extensions.py:56 #, fuzzy msgid "Interface" msgstr "аІб–аЛаЕ" #: src/gpodder/extensions.py:57 #, fuzzy msgid "Post download" msgstr "аŸб€аИаЗбƒаПаИаНаИб‚аИ аЗаАаВаАаНб‚аАаЖаЕаНаНб" #: src/gpodder/extensions.py:59 src/gpodder/model.py:779 #: src/gpodder/model.py:1225 msgid "Other" msgstr "а†аНбˆаЕ" #: src/gpodder/extensions.py:100 #, fuzzy msgid "No description for this extension." msgstr "аžаПаИб аВб–аДббƒб‚аНб–аЙ" #: src/gpodder/extensions.py:212 #, python-format msgid "Command not found: %(command)s" msgstr "" #: src/gpodder/extensions.py:228 #, python-format msgid "Need at least one of the following commands: %(list_of_commands)s" msgstr "" #: src/gpodder/extensions.py:265 #, fuzzy, python-format msgid "Python module not found: %(module)s" msgstr "аœаОаДбƒаЛбŒ Python \"%s\" аНаЕ аВбб‚аАаНаОаВаЛаЕаНаО" #: src/gpodder/model.py:446 src/gpodder/plugins/soundcloud.py:156 msgid "No description available" msgstr "аžаПаИб аВб–аДббƒб‚аНб–аЙ" #: src/gpodder/model.py:679 msgid "unknown" msgstr "аНаЕаВб–аДаОаМаИаЙ" #: src/gpodder/model.py:746 msgid "Default" msgstr "" #: src/gpodder/model.py:747 msgid "Only keep latest" msgstr "" #: src/gpodder/model.py:1208 src/gpodder/model.py:1223 #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:10 msgid "Video" msgstr "" #: src/gpodder/model.py:1221 msgid "Audio" msgstr "" #: src/gpodder/my.py:174 #, python-format msgid "Add %s" msgstr "а”аОаДаАб‚аИ %s" #: src/gpodder/my.py:176 #, python-format msgid "Remove %s" msgstr "а’аИаДаАаЛаИб‚аИ %s" #: src/gpodder/sync.py:196 msgid "Cancelled by user" msgstr "а’б–аДб…аИаЛаЕаНаО аКаОб€аИбб‚бƒаВаАб‡аЕаМ" #: src/gpodder/sync.py:199 msgid "Writing data to disk" msgstr "а—аБаЕб€аЕаЖаЕаНаНб аДаАаНаИб… аНаА аДаИбаК" #: src/gpodder/sync.py:295 msgid "Opening iPod database" msgstr "а’б–аДаКб€аИаВаАбŽ аБаАаЗбƒ аДаАаНаИб… iPod" #: src/gpodder/sync.py:305 msgid "iPod opened" msgstr "iPod аВб–аДаКб€аИб‚аИаЙ" #: src/gpodder/sync.py:316 msgid "Saving iPod database" msgstr "а—аБаЕб€аЕаЖаЕаНаНб аДаАаНаИб… iPod" #: src/gpodder/sync.py:321 msgid "Writing extended gtkpod database" msgstr "а—аБаЕб€б–аГаАаНаНб б€аОаЗбˆаИб€аЕаНаОб— gtkpod аБаАаЗаИ аДаАаНаИб…" #: src/gpodder/sync.py:397 src/gpodder/sync.py:680 src/gpodder/sync.py:874 #, python-format msgid "Removing %s" msgstr "а’аИаДаАаЛаЕаНаНб %s" #: src/gpodder/sync.py:412 src/gpodder/sync.py:557 #, python-format msgid "Adding %s" msgstr "а”аОаДаАбŽ %s" #: src/gpodder/sync.py:430 #, python-format msgid "Error copying %(episode)s: Not enough free space on %(mountpoint)s" msgstr "" "аŸаОаМаИаЛаКаА аКаОаПб–бŽаВаАаНаНб %(episode)s: ааЕаДаОбб‚аАб‚аНбŒаО аВб–аЛбŒаНаОаГаО аМб–бб†б аНаА %(mountpoint)s" #: src/gpodder/sync.py:515 msgid "Opening MP3 player" msgstr "а’б–аДаКб€аИаВаАбŽ MP3-аПаЛаЕб”б€" #: src/gpodder/sync.py:518 msgid "MP3 player opened" msgstr "аœа 3-аПаЛаЕб”б€ аВб–аДаКб€аИб‚аО" #: src/gpodder/sync.py:576 #, python-format msgid "" "Not enough space in %(path)s: %(free)s available, but need at least %(need)s" msgstr "" #: src/gpodder/sync.py:603 src/gpodder/sync.py:611 #, python-format msgid "Error opening %(filename)s: %(message)s" msgstr "аŸаОаМаИаЛаКаА аВб–аДаКб€аИаВаАаНаНб %(filename)s: %(message)s" #: src/gpodder/sync.py:780 src/gpodder/sync.py:786 msgid "MTP device" msgstr "MTP-аПб€аИбб‚б€б–аЙ" #: src/gpodder/sync.py:793 msgid "Opening the MTP device" msgstr "а’б–аДаКб€аИаВаАбŽ аœаЂа -аПб€аИбб‚б€б–аЙ" #: src/gpodder/sync.py:803 #, python-format msgid "%s opened" msgstr "%s аВб–аДаКб€аИб‚аО" #: src/gpodder/sync.py:808 #, python-format msgid "Closing %s" msgstr "а—аАаКб€аИаВаАбŽ %s" #: src/gpodder/sync.py:816 #, python-format msgid "%s closed" msgstr "%s аЗаАаКб€аИб‚аО" #: src/gpodder/sync.py:821 bin/gpo:708 #, python-format msgid "Adding %s..." msgstr "а”аОаДаАбŽ %s..." #: src/gpodder/sync.py:924 #, fuzzy msgid "Synchronizing" msgstr "аЁаИаНб…б€аОаНб–аЗаАб†б–б" #: src/gpodder/util.py:429 #, python-format msgid "%(count)d day ago" msgid_plural "%(count)d days ago" msgstr[0] "%(count)d аДаЕаНбŒ б‚аОаМбƒ" msgstr[1] "%(count)d аДаНб– б‚аОаМбƒ" msgstr[2] "%(count)d аДаНб–аВ б‚аОаМбƒ" #: src/gpodder/util.py:508 msgid "Today" msgstr "аЁбŒаОаГаОаДаНб–" #: src/gpodder/util.py:510 msgid "Yesterday" msgstr "а’б‡аОб€аА" #: src/gpodder/util.py:553 src/gpodder/util.py:556 msgid "(unknown)" msgstr "(аНаЕаВб–аДаОаМаО)" #: src/gpodder/util.py:1193 src/gpodder/util.py:1212 #, python-format msgid "%(count)d second" msgid_plural "%(count)d seconds" msgstr[0] "%(count)d баЕаКбƒаНаДаА" msgstr[1] "%(count)d баЕаКбƒаНаДаИ" msgstr[2] "%(count)d баЕаКбƒаНаД" #: src/gpodder/util.py:1206 #, python-format msgid "%(count)d hour" msgid_plural "%(count)d hours" msgstr[0] "%(count)d аГаОаДаИаНаА" msgstr[1] "%(count)d аГаОаДаИаНаИ" msgstr[2] "%(count)d аГаОаДаИаН" #: src/gpodder/util.py:1209 #, python-format msgid "%(count)d minute" msgid_plural "%(count)d minutes" msgstr[0] "%(count)d б…аВаИаЛаИаНаА" msgstr[1] "%(count)d б…аВаИаЛаИаНаИ" msgstr[2] "%(count)d б…аВаИаЛаИаН\t" #: src/gpodder/util.py:1215 msgid "and" msgstr "б‚аА" #: src/gpodder/gtkui/config.py:50 msgid "Integer" msgstr "аІб–аЛаЕ" #: src/gpodder/gtkui/config.py:52 msgid "Float" msgstr "а— аПаЛаАаВаАбŽб‡аОбŽ аКаОаМаОбŽ" #: src/gpodder/gtkui/config.py:54 msgid "Boolean" msgstr "а›аОаГб–б‡аНаЕ" #: src/gpodder/gtkui/config.py:56 msgid "String" msgstr "а баДаОаК" #: src/gpodder/gtkui/desktopfile.py:70 #, python-format msgid "Command: %s" msgstr "аšаОаМаАаНаДаА: %s" #: src/gpodder/gtkui/desktopfile.py:150 msgid "Default application" msgstr "аŸб€аОаГб€аАаМаА аЗаА аЗаАаМаОаВб‡бƒаВаАаНаНбаМ" #: src/gpodder/gtkui/main.py:205 share/applications/gpodder.desktop.in.h:1 msgid "gPodder" msgstr "gPodder" #: src/gpodder/gtkui/main.py:288 msgid "Loading incomplete downloads" msgstr "а—аАаВаАаНб‚аАаЖбƒбŽ аНаЕаЗаАаВаЕб€бˆаЕаНб– аЕаПб–аЗаОаДаИ" #: src/gpodder/gtkui/main.py:289 msgid "Some episodes have not finished downloading in a previous session." msgstr "а”аЕбаКб– аЕаПб–аЗаОаДаИ аНаЕаДаОаЗаАаВаАаНб‚аАаЖаИаЛаИббŒ аМаИаНбƒаЛаОаГаО б€аАаЗбƒ" #: src/gpodder/gtkui/main.py:291 #, python-format msgid "%(count)d partial file" msgid_plural "%(count)d partial files" msgstr[0] "%(count)d б‡аАбб‚аКаОаВаИаЙ б„аАаЙаЛ" msgstr[1] "%(count)d б‡аАбб‚аКаОаВаИб… б„аАаЙаЛаИ" msgstr[2] "%(count)d б‡аАбб‚аКаОаВаИб… б„аАаЙаЛб–аВ" #: src/gpodder/gtkui/main.py:306 msgid "Resume all" msgstr "а’б–аДаНаОаВаИб‚аИ аВбб– аЗаАаВаАаНб‚аАаЖаЕаНаНб" #: src/gpodder/gtkui/main.py:316 msgid "Incomplete downloads from a previous session were found." msgstr "а—аНаАаЙаДаЕаНб– аНаЕаЗаАаВаЕб€бˆаЕаНб– аВб–аД аМаИаНбƒаЛаОаГаО аЗаАаПбƒбаКбƒ аЗаАаВаАаНаАб‚аАаЖаЕаНаНб." #: src/gpodder/gtkui/main.py:414 msgid "Action" msgstr "а”б–б" #: src/gpodder/gtkui/main.py:461 msgid "Confirm changes from gpodder.net" msgstr "а—аАб‚аВаЕб€аДб– аЗаМб–аНаИ аЗ my.gpodder.org" #: src/gpodder/gtkui/main.py:462 msgid "Select the actions you want to carry out." msgstr "аžаБаЕб€б–б‚бŒ аДб–бŽ, баКбƒ аВаИ б…аОб‡аЕб‚аЕ аВаИаКаОаНаАб‚аИ." #: src/gpodder/gtkui/main.py:502 msgid "Uploading subscriptions" msgstr "а—аАаВаАаНб‚аАаЖбƒбŽ аПб–аДаПаИбаКаИ" #: src/gpodder/gtkui/main.py:503 msgid "Your subscriptions are being uploaded to the server." msgstr "а’аАбˆ баПаИбаОаК аПб–аДаПаИбаОаК аЗаАаВаАаНб‚аАаЖаЕаНаО аНаА баЕб€аВаЕб€." #: src/gpodder/gtkui/main.py:508 msgid "List uploaded successfully." msgstr "аЁаПаИбаОаК бƒбаПб–бˆаНаО аЗаАаВаАаНб‚аЕаЖаЕаНаО." #: src/gpodder/gtkui/main.py:515 msgid "Error while uploading" msgstr "аŸаОаМаИаЛаКаА аЗаАаВаАаНб‚аАаЖаЕаНаНб" #: src/gpodder/gtkui/main.py:800 src/gpodder/gtkui/main.py:928 #: src/gpodder/gtkui/main.py:2622 src/gpodder/gtkui/main.py:2815 #: src/gpodder/gtkui/desktop/episodeselector.py:132 #: src/gpodder/gtkui/desktop/sync.py:270 msgid "Episode" msgstr "а•аПб–аЗаОаД" #: src/gpodder/gtkui/main.py:819 msgid "Size" msgstr "а аОаЗаМб–б€" #: src/gpodder/gtkui/main.py:824 msgid "Duration" msgstr "" #: src/gpodder/gtkui/main.py:828 msgid "Released" msgstr "аžаПбƒаБаЛб–аКаОаВаАаНаО" #: src/gpodder/gtkui/main.py:855 msgid "Visible columns" msgstr "" #: src/gpodder/gtkui/main.py:948 src/gpodder/gtkui/main.py:1108 #: share/gpodder/ui/gtk/gpodder.ui.h:45 msgid "Progress" msgstr "аŸб€аОб†аЕб" #: src/gpodder/gtkui/main.py:982 msgid "Loading episodes" msgstr "а—аАаВаАаНб‚аАаЖбƒбŽ аЕаПб–аЗаОаДаИ" #: src/gpodder/gtkui/main.py:985 msgid "No episodes in current view" msgstr "ааЕаМаАб” аВб–аДаПаОаВб–аДаНаИб… аПаОаДаКаАбб‚б–аВ" #: src/gpodder/gtkui/main.py:987 msgid "No episodes available" msgstr "ааЕаМаАб” аДаОбб‚бƒаПаНаИб… аЕаПб–аЗаОаДб–аВ" #: src/gpodder/gtkui/main.py:993 msgid "No podcasts in this view" msgstr "ааЕаМаАб” аВб–аДаПаОаВб–аДаНаИб… аПаОаДаКаАбб‚б–аВ" #: src/gpodder/gtkui/main.py:995 msgid "No subscriptions" msgstr "ааЕаМаАб” аПб–аДаПаИбаОаК" #: src/gpodder/gtkui/main.py:997 #, fuzzy msgid "No active tasks" msgstr "ааЕаМаАб” аАаКб‚аИаВаНаИб… аЗаАаВаАаНб‚аАаЖаЕаНбŒ" #: src/gpodder/gtkui/main.py:1112 src/gpodder/gtkui/main.py:1114 #, python-format msgid "%(count)d active" msgid_plural "%(count)d active" msgstr[0] "%(count)d аАаКб‚аИаВаНаЕ" msgstr[1] "%(count)d аАаКб‚аИаВаНб–" msgstr[2] "%(count)d аАаКб‚аИаВаНаИб…" #: src/gpodder/gtkui/main.py:1116 #, python-format msgid "%(count)d failed" msgid_plural "%(count)d failed" msgstr[0] "%(count)d аНаЕ аЗаАаВаАаНб‚аАаЖаЕаНаО" msgstr[1] "%(count)d аНаЕ аЗаАаВаАаНб‚аАаЖаЕаНаО" msgstr[2] "%(count)d аНаЕ аЗаАаВаАаНб‚аАаЖаЕаНаО" #: src/gpodder/gtkui/main.py:1118 #, python-format msgid "%(count)d queued" msgid_plural "%(count)d queued" msgstr[0] "%(count)d аВ б‡аЕб€аЗб–" msgstr[1] "%(count)d аВ б‡аЕб€аЗб–" msgstr[2] "%(count)d аВ б‡аЕб€аЗб–" #: src/gpodder/gtkui/main.py:1132 #, python-format msgid "downloading %(count)d file" msgid_plural "downloading %(count)d files" msgstr[0] "аЗаАаВаАаНб‚аАаЖбƒбŽ %(count)d б„аАаЙаЛ" msgstr[1] "аЗаАаВаАаНб‚аАаЖбƒбŽ %(count)d б„аАаЙаЛаИ" msgstr[2] "аЗаАаВаАаНб‚аАаЖбƒбŽ %(count)d б„аАаЙаЛб–аВ" #: src/gpodder/gtkui/main.py:1142 #, python-format msgid "synchronizing %(count)d file" msgid_plural "synchronizing %(count)d files" msgstr[0] "" msgstr[1] "" msgstr[2] "" #: src/gpodder/gtkui/main.py:1144 #, python-format msgid "%(queued)d task queued" msgid_plural "%(queued)d tasks queued" msgstr[0] "" msgstr[1] "" msgstr[2] "" #: src/gpodder/gtkui/main.py:1168 msgid "Please report this problem and restart gPodder:" msgstr "а‘бƒаДбŒ аЛаАбаКаА, аПаОаВб–аДаОаМб‚аЕ аПб€аО б†бŽ аПб€аОаБаЛаЕаМбƒ б‚аА аПаЕб€аЕаЗаАаПбƒбб‚б–б‚бŒ gPodder:" #: src/gpodder/gtkui/main.py:1168 msgid "Unhandled exception" msgstr "ааЕаОаБб€аОаБаЛаЕаНаЕ аВаИаКаЛбŽб‡аЕаНаНб:" #: src/gpodder/gtkui/main.py:1235 #, python-format msgid "Feedparser error: %s" msgstr "аŸаОаМаИаЛаКаА аПаАб€баЕб€бƒ аПаОб‚аОаКб–аВ: %s" #: src/gpodder/gtkui/main.py:1371 #, fuzzy msgid "Could not download some episodes:" msgstr "ааЕ аЗаМб–аГ аДаОаДаАб‚аИ аДаЕбаКб– аПаОаДаКаАбб‚аИ" #: src/gpodder/gtkui/main.py:1373 src/gpodder/gtkui/main.py:1376 msgid "Downloads finished" msgstr "а’бб– аЗаАаВаАаНб‚аАаЖаЕаНаНб аЗаАаВаЕб€бˆаЕаНаО" #: src/gpodder/gtkui/main.py:1379 msgid "Downloads failed" msgstr "а—аБб–аЙ аЗаАаВаАаНб‚аАаЖаЕаНаНб" #: src/gpodder/gtkui/main.py:1383 #, fuzzy msgid "Could not sync some episodes:" msgstr "ааЕ аЗаМб–аГ аДаОаДаАб‚аИ аДаЕбаКб– аПаОаДаКаАбб‚аИ" #: src/gpodder/gtkui/main.py:1385 src/gpodder/gtkui/main.py:1388 #, fuzzy msgid "Device synchronization finished" msgstr "аЁаИаНб…б€аОаНб–аЗаАб†б–бŽ аЗаАаВаЕб€бˆаЕаНаО." #: src/gpodder/gtkui/main.py:1391 #, fuzzy msgid "Device synchronization failed" msgstr "аŸб€аИбб‚б€б–аЙ баИаНб…б€аОаНб–аЗаОаВаАаНаО" #: src/gpodder/gtkui/main.py:1434 #, python-format msgid "%(count)d more episode" msgid_plural "%(count)d more episodes" msgstr[0] "б‰аЕ %(count)d аЕаПб–аЗаОаД" msgstr[1] "б‰аЕ %(count)d аЕаПб–аЗаОаДаИ" msgstr[2] "б‰аЕ %(count)d аЕаПб–аЗаОаДб–аВ" #: src/gpodder/gtkui/main.py:1508 msgid "Start download now" msgstr "аŸаОб‡аАб‚аИ аЗаАаВаАаНб‚аАаЖаЕаНаНб" #: src/gpodder/gtkui/main.py:1510 src/gpodder/gtkui/main.py:1719 #: src/gpodder/gtkui/desktop/episodeselector.py:144 #: share/gpodder/ui/gtk/gpodder.ui.h:20 msgid "Download" msgstr "а—аАаВаАаНб‚аАаЖаИб‚аИ" #: src/gpodder/gtkui/main.py:1511 share/gpodder/ui/gtk/gpodder.ui.h:21 msgid "Cancel" msgstr "аЁаКаАббƒаВаАб‚аИ" #: src/gpodder/gtkui/main.py:1512 msgid "Pause" msgstr "аŸаАбƒаЗаА" #: src/gpodder/gtkui/main.py:1514 msgid "Remove from list" msgstr "а’аИаДаАаЛаИб‚аИ аЗб– баПаИбаКбƒ" #: src/gpodder/gtkui/main.py:1553 share/gpodder/ui/gtk/gpodder.ui.h:13 msgid "Update podcast" msgstr "аžаНаОаВаИб‚аИ аПаОаДаКаАбб‚" #: src/gpodder/gtkui/main.py:1560 msgid "Open download folder" msgstr "а’б–аДаКб€аИб‚аИ б‚аЕаКбƒ аЗаАаВаАаНб‚аАаЖаЕаНбŒ" #: src/gpodder/gtkui/main.py:1566 #, fuzzy msgid "Mark episodes as old" msgstr "аŸаОаЗаНаАб‡аИб‚аИ аЕаПб–аЗаОаД баК аПб€аОбаЛбƒб…аАаНаИаЙ" #: src/gpodder/gtkui/main.py:1570 src/gpodder/gtkui/main.py:1778 msgid "Archive" msgstr "" #: src/gpodder/gtkui/main.py:1575 msgid "Remove podcast" msgstr "а’аИаДаАаЛаИб‚аИ аПаОаДаКаАбб‚" #: src/gpodder/gtkui/main.py:1590 share/gpodder/ui/gtk/gpodder.ui.h:10 msgid "Podcast settings" msgstr "ааАаЛаАбˆб‚бƒаВаАаНаНб аПаОаДаКаАбб‚бƒ" #: src/gpodder/gtkui/main.py:1650 msgid "Error converting file." msgstr "аŸаОаМаИаЛаКаА аПб€аИ аКаОаНаВаЕб€б‚бƒаВаАаНаНб– б„аАаЙаЛаА." #: src/gpodder/gtkui/main.py:1650 msgid "Bluetooth file transfer" msgstr "аŸаЕб€аЕбаИаЛаАаНаНб б„аАаЙаЛбƒ б‡аЕб€аЕаЗ Bluetooth" #: src/gpodder/gtkui/main.py:1709 msgid "Preview" msgstr "" #: src/gpodder/gtkui/main.py:1711 msgid "Stream" msgstr "аŸаОб‚б–аК" #: src/gpodder/gtkui/main.py:1755 msgid "Send to" msgstr "а’б–аДаПб€аАаВаИб‚аИ аНаА" #: src/gpodder/gtkui/main.py:1757 msgid "Local folder" msgstr "а›аОаКаАаЛбŒаНаА б‚аЕаКаА" #: src/gpodder/gtkui/main.py:1762 msgid "Bluetooth device" msgstr "аŸб€аИбб‚б€б–аЙ Bluetooth" #: src/gpodder/gtkui/main.py:1769 msgid "New" msgstr "ааОаВаИаЙ" #: src/gpodder/gtkui/main.py:1785 share/gpodder/ui/gtk/gpodder.ui.h:25 msgid "Episode details" msgstr "а”аЕб‚аАаЛб– аЕаПб–аЗаОаДбƒ" #: src/gpodder/gtkui/main.py:1938 msgid "Please check your media player settings in the preferences dialog." msgstr "" "а‘бƒаДбŒ аЛаАбаКаА, аПаЕб€аЕаВб–б€б‚аЕ аНаАаЛаАбˆб‚бƒаВаАаНаНб аВаИаБаОб€бƒ аМаЕаДб–аАаПаЛаЕб”б€аА бƒ аДб–аАаЛаОаЗб– аŸаАб€аАаМаЕб‚б€аИ." #: src/gpodder/gtkui/main.py:1939 msgid "Error opening player" msgstr "аŸаОаМаИаЛаКаА аПб€аИ аВб–аДаКб€аИб‚б‚б– аПаЛаЕб”б€аА" #: src/gpodder/gtkui/main.py:2178 msgid "Adding podcasts" msgstr "а”аОаДаАбŽ аПаОаДаКаАбб‚аИ" #: src/gpodder/gtkui/main.py:2179 msgid "Please wait while episode information is downloaded." msgstr "а‘бƒаДбŒ аЛаАбаКаА, аПаОб‡аЕаКаАаЙб‚аЕ аПаОаКаИ б–аНб„аОб€аМаАб†б–б аПб€аО аЕаПб–аЗаОаДаИ аЗаАаВаАаНб‚аАаЖаИб‚бŒбб." #: src/gpodder/gtkui/main.py:2186 msgid "Existing subscriptions skipped" msgstr "а†баНбƒбŽб‡аИ аПб–аДаПаИбаКаИ аПб€аОаПбƒб‰аЕаНаО" #: src/gpodder/gtkui/main.py:2187 msgid "You are already subscribed to these podcasts:" msgstr "а’аИ аВаЖаЕ аПб–аДаПаИбаАаНб– аНаА б†б– аПаОаДаКаАбб‚аИ:" #: src/gpodder/gtkui/main.py:2195 msgid "Podcast requires authentication" msgstr "аŸаОаДаКаАбб‚ аВаИаМаАаГаАб” аАбƒб‚аЕаНб‚аИб„б–аКаАб†б–б—" #: src/gpodder/gtkui/main.py:2196 #, python-format msgid "Please login to %s:" msgstr "а‘бƒаДбŒ аЛаАбаКаА, бƒаВб–аЙаДб–б‚бŒ аДаО %s:" #: src/gpodder/gtkui/main.py:2204 src/gpodder/gtkui/main.py:2299 msgid "Authentication failed" msgstr "а—аБб–аЙ аАбƒб‚аЕаНб‚аИб„б–аКаАб†б–б—" #: src/gpodder/gtkui/main.py:2210 msgid "Website redirection detected" msgstr "ааА аВаЕаБ-баАаЙб‚б– аЗаНаАаЙаДаЕаНаО аПаЕб€аЕаПаОбаИаЛаАаНаНб" #: src/gpodder/gtkui/main.py:2211 #, python-format msgid "The URL %(url)s redirects to %(target)s." msgstr "URL %(url)s аПаЕб€аЕбаИаЛаАб” аДаО %(target)s." #: src/gpodder/gtkui/main.py:2212 msgid "Do you want to visit the website now?" msgstr "аЅаОб‡аЕб‚аЕ аПаЕб€аЕаЙб‚аИ аНаА баАаЙб‚?" #: src/gpodder/gtkui/main.py:2221 msgid "Could not add some podcasts" msgstr "ааЕ аЗаМб–аГ аДаОаДаАб‚аИ аДаЕбаКб– аПаОаДаКаАбб‚аИ" #: src/gpodder/gtkui/main.py:2222 msgid "Some podcasts could not be added to your list:" msgstr "а”аЕбаКб– аПаОаДаКаАбб‚аИ аНаЕ аМаОаЖбƒб‚бŒ аБбƒб‚аИ аДаОаДаАаНб– аДаО аВаАбˆаОаГаО баПаИбаКбƒ:" #: src/gpodder/gtkui/main.py:2224 msgid "Unknown" msgstr "ааЕаВб–аДаОаМаО" #: src/gpodder/gtkui/main.py:2308 msgid "Redirection detected" msgstr "а—аНаАаЙаДаЕаНаО аПаЕб€аЕаПаОбаИаЛаАаНаНб" #: src/gpodder/gtkui/main.py:2342 msgid "Merging episode actions" msgstr "а—аЛаИб‚б‚б аДб–аЙ аНаАаД аЕаПб–аЗаОаДаАаМаИ" #: src/gpodder/gtkui/main.py:2343 msgid "Episode actions from gpodder.net are merged." msgstr "а”б–б— аНаАаД аЕаПб–аЗаОаДаАаМаИ аЗаЛаИб‚б– аЗ аДаАаНаИаМаИ аЗ gpodder.net." #: src/gpodder/gtkui/main.py:2368 msgid "Cancelling..." msgstr "аЁаКаАбаОаВбƒбŽ..." #: src/gpodder/gtkui/main.py:2377 msgid "Please connect to a network, then try again." msgstr "" #: src/gpodder/gtkui/main.py:2378 #, fuzzy msgid "No network connection" msgstr "ааОаВаА аНаАаЗаВаА:" #: src/gpodder/gtkui/main.py:2399 #, python-format msgid "Updating %(count)d feed..." msgid_plural "Updating %(count)d feeds..." msgstr[0] "аžаНаОаВаЛбŽбŽ %(count)d аПаОб‚б–аК..." msgstr[1] "аžаНаОаВаЛбŽбŽ %(count)d аПаОб‚аОаКаИ..." msgstr[2] "аžаНаОаВаЛбŽбŽ %(count)d аПаОб‚аОаКб–аВ\t..." #: src/gpodder/gtkui/main.py:2417 #, python-format msgid "Error while updating %(url)s: %(message)s" msgstr "аŸаОаМаИаЛаКаА аОаНаОаВаЛаЕаНаНб %(url)s: %(message)s" #: src/gpodder/gtkui/main.py:2419 #, python-format msgid "The feed at %(url)s could not be updated." msgstr "ааЕ аВаДаАаЛаОбб аОаНаОаВаИб‚аИ аПаОб‚б–аК %(url)s." #: src/gpodder/gtkui/main.py:2420 msgid "Error while updating feed" msgstr "аŸаОаМаИаЛаКаА аОаНаОаВаЛаЕаНаНб аПаОб‚аОаКбƒ" #: src/gpodder/gtkui/main.py:2435 #, python-format msgid "Updated %(podcast)s (%(position)d/%(total)d)" msgstr "аžаНаОаВаЛаЕаНаО %(podcast)s (%(position)d/%(total)d)" #: src/gpodder/gtkui/main.py:2466 msgid "No new episodes" msgstr "ааЕаМаАб” аНаОаВаИб… аЕаПб–аЗаОаДб–аВ" #: src/gpodder/gtkui/main.py:2479 #, python-format msgid "Downloading %(count)d new episode." msgid_plural "Downloading %(count)d new episodes." msgstr[0] "а—аАаВаАаНб‚аАаЖбƒбŽ %(count)d аНаОаВаИаЙ аЕаПб–аЗаОаД." msgstr[1] "а—аАаВаАаНб‚аАаЖбƒбŽ %(count)d аНаОаВаИб… аЕаПб–аЗаОаДаИ." msgstr[2] "а—аАаВаАаНб‚аАаЖбƒбŽ %(count)d аНаОаВаИб… аЕаПб–аЗаОаДб–аВ." #: src/gpodder/gtkui/main.py:2480 src/gpodder/gtkui/main.py:2484 #: src/gpodder/gtkui/main.py:2833 msgid "New episodes available" msgstr "а”аОбб‚бƒаПаНб– аНаОаВб– аЕаПб–аЗаОаДаИ" #: src/gpodder/gtkui/main.py:2483 #, python-format msgid "%(count)d new episode added to download list." msgid_plural "%(count)d new episodes added to download list." msgstr[0] "%(count)d аНаОаВаИаЙ аЕаПб–аЗаОаД аДаОаДаАаНаИаЙ аДаО баПаИбаКбƒ аЗаАаВаАаНб‚аАаЖаЕаНаНб." msgstr[1] "%(count)d аНаОаВаИб… аЕаПб–аЗаОаДаИ аДаОаДаАаНб– аДаО баПаИбаКбƒ аЗаАаВаАаНб‚аАаЖаЕаНаНб." msgstr[2] "%(count)d аНаОаВаИб… аЕаПб–аЗаОаДб–аВ аДаОаДаАаНаО аДаО баПаИбаКбƒ аЗаАаВаАаНб‚аАаЖаЕаНаНб." #: src/gpodder/gtkui/main.py:2490 #, python-format msgid "%(count)d new episode available" msgid_plural "%(count)d new episodes available" msgstr[0] "ааАбаВаНаИаЙ %(count)d аНаОаВаИаЙ аЕаПб–аЗаОаД" msgstr[1] "ааАбаВаНб– %(count)d аНаОаВб– аЕаПб–аЗаОаДаИ" msgstr[2] "ааАбаВаНб– %(count)d аНаОаВаИб… аЕаПб–аЗаОаДб–аВ" #: src/gpodder/gtkui/main.py:2509 msgid "Quit gPodder" msgstr "а’аИаЙб‚аИ аЗ gPodder" #: src/gpodder/gtkui/main.py:2510 msgid "" "You are downloading episodes. You can resume downloads the next time you " "start gPodder. Do you want to quit now?" msgstr "" "а’аИ аЗаАаВаАаНб‚аАаЖбƒб”б‚аЕ аЕаПб–аЗаОаДаИ. а’аИ аМаОаЖаЕб‚аЕ аВб–аДаНаОаВаИб‚аИ аЗаАаВаАаНб‚аАаЖаЕаНаНб аНаАбб‚бƒаПаНаОаГаО б€аАаЗбƒ, " "аКаОаЛаИ аЗаАаПбƒбб‚аИб‚аЕ gPodder. аЅаОб‡аЕб‚аЕ аВаИаЙб‚аИ аЗаАб€аАаЗ?" #: src/gpodder/gtkui/main.py:2559 msgid "Episodes are locked" msgstr "а•аПб–аЗаОаДаИ аЗаАаБаЛаОаКаОаВаАаНб–" #: src/gpodder/gtkui/main.py:2560 msgid "" "The selected episodes are locked. Please unlock the episodes that you want " "to delete before trying to delete them." msgstr "" "аžаБб€аАаНб– аЕаПб–аЗаОаДаИ аЗаАаБаЛаОаКаОаВаАаНб–. а‘бƒаДбŒ аЛаАбаКаА, баПаОб‡аАб‚аКбƒ б€аОаЗаБаЛаОаКбƒаЙб‚аЕ аЕаПб–аЗаОаДаИ, б‰аОаБ " "аОб‚б€аИаМаАб‚аИ аМаОаЖаЛаИаВб–бб‚бŒ аВаИаДаАаЛаИб‚аИ б—б…." #: src/gpodder/gtkui/main.py:2565 #, python-format msgid "Delete %(count)d episode?" msgid_plural "Delete %(count)d episodes?" msgstr[0] "а’аИаДаАаЛаИб‚аИ %(count)d аЕаПб–аЗаОаД?" msgstr[1] "а’аИаДаАаЛаИб‚аИ %(count)d аЕаПб–аЗаОаДаИ?" msgstr[2] "а’аИаДаАаЛаИб‚аИ %(count)d аЕаПб–аЗаОаДб–аВ?" #: src/gpodder/gtkui/main.py:2566 msgid "Deleting episodes removes downloaded files." msgstr "а’аИаДаАаЛаЕаНаНб аЕаПб–аЗаОаДб–аВ аОаЗаНаАб‡аАб” аВаИаДаАаЛаЕаНаНб аЗаАаВаАаНб‚аАаЖаЕаНаИб… б„аАаЙаЛб–аВ." #: src/gpodder/gtkui/main.py:2571 msgid "Deleting episodes" msgstr "а’аИаДаАаЛббŽб‚бŒбб аЕаПб–аЗаОаДаИ" #: src/gpodder/gtkui/main.py:2572 msgid "Please wait while episodes are deleted" msgstr "а‘бƒаДбŒ аЛаАбаКаА, аПаОб‡аЕаКаАаЙб‚аЕ аПаОаКаИ аВаИаДаАаЛббŽб‚бŒбб аЕаПб–аЗаОаДаИ." #: src/gpodder/gtkui/main.py:2625 #, python-format msgid "Select older than %(count)d day" msgid_plural "Select older than %(count)d days" msgstr[0] "аžаБб€аАб‚аИ бб‚аАб€бˆб– аЗаА %(count)d аДаЕаНбŒ" msgstr[1] "аžаБб€аАб‚аИ бб‚аАб€бˆб– аЗаА %(count)d аДаНб–" msgstr[2] "аžаБб€аАб‚аИ бб‚аАб€бˆб– аЗаА %(count)d аДаНб–аВ\t" #: src/gpodder/gtkui/main.py:2627 msgid "Select played" msgstr "а’аИаБб€аАб‚аИ аПб€аОбаЛбƒб…аАаНб–" #: src/gpodder/gtkui/main.py:2628 msgid "Select finished" msgstr "аžаБб€аАаНаНб аЗаАаВаЕб€бˆаЕаНаО" #: src/gpodder/gtkui/main.py:2632 msgid "Select the episodes you want to delete:" msgstr "аžаБаЕб€б–б‚бŒ аЕаПб–аЗаОаДаИ, баКб– аВаИ б…аОб‡аЕб‚аЕ аВаИаДаАаЛаИб‚аИ:" #: src/gpodder/gtkui/main.py:2648 share/gpodder/ui/gtk/gpodder.ui.h:4 msgid "Delete episodes" msgstr "а’аИаДаАаЛаИб‚аИ аЕаПб–аЗаОаДаИ" #: src/gpodder/gtkui/main.py:2703 src/gpodder/gtkui/main.py:2934 #: src/gpodder/gtkui/main.py:3034 msgid "No podcast selected" msgstr "а–аОаДаНаИб… аПаОаДаКаАбб‚б–аВ аНаЕ аОаБб€аАаНаО" #: src/gpodder/gtkui/main.py:2704 msgid "Please select a podcast in the podcasts list to update." msgstr "а‘бƒаДбŒ аЛаАбаКаА, аОаБаЕб€б–б‚бŒ аОаНаОаВаЛбŽаВаАаНаИаЙ аПаОаДаКаАбб‚ аВ баПаИбаКбƒ аПаОаДаКаАбб‚б–аВ." #: src/gpodder/gtkui/main.py:2774 #, python-format msgid "Download error while downloading %(episode)s: %(message)s" msgstr "аŸаОаМаИаЛаКаА аЗаАаВаАаНб‚аАаЖаЕаНаНб %(episode)s: %(message)s" #: src/gpodder/gtkui/main.py:2775 msgid "Download error" msgstr "аŸаОаМаИаЛаКаА аЗаАаВаАаНб‚аАаЖаЕаНаНб" #: src/gpodder/gtkui/main.py:2818 msgid "Select the episodes you want to download:" msgstr "аžаБаЕб€б–б‚бŒ аЕаПб–аЗаОаДаИ, баКб– аВаИ б…аОб‡аЕб‚аЕ аЗаАаВаАаНб‚аАаЖаИб‚аИ." #: src/gpodder/gtkui/main.py:2841 msgid "Mark as old" msgstr "аŸаОаЗаНаАб‡аИб‚аИ бб‚аАб€аИаМ" #: src/gpodder/gtkui/main.py:2848 msgid "Please check for new episodes later." msgstr "аŸаЕб€аЕаВб–б€бб‚аИ аНаА аНаОаВб– аЕаПб–аЗаОаДаИ аПб–аЗаНб–бˆаЕ." #: src/gpodder/gtkui/main.py:2849 msgid "No new episodes available" msgstr "ааЕаМаАб” аДаОбб‚бƒаПаНаИб… аНаОаВаИб… аЕаПб–аЗаОаДб–аВ" #: src/gpodder/gtkui/main.py:2900 msgid "Login to gpodder.net" msgstr "аЃаВб–аЙб‚аИ аДаО gpodder.org" #: src/gpodder/gtkui/main.py:2901 msgid "Please login to download your subscriptions." msgstr "а‘бƒаДбŒ аЛаАбаКаА, бƒаВб–аЙаДб–б‚бŒ аВ аОаБаЛб–аКаОаВаИаЙ аЗаАаПаИб аДаЛб аЗаАаВаАаНб‚аАаЖаЕаНаНб аПб–аДаПаИбаОаК" #: src/gpodder/gtkui/main.py:2916 msgid "Subscriptions on gpodder.net" msgstr "аŸб–аДаПаИбаКаИ аНаА gpodder.net" #: src/gpodder/gtkui/main.py:2935 msgid "Please select a podcast in the podcasts list to edit." msgstr "а‘бƒаДбŒ аЛаАбаКаА, аОаБаЕб€б–б‚бŒ аПаОаДаКаАбб‚ аВ баПаИбаКбƒ аПаОаДаКаАбб‚б–аВ аДаЛб б€аЕаДаАаГбƒаВаАаНаНб." #: src/gpodder/gtkui/main.py:2949 msgid "Podcast" msgstr "аŸаОаДаКаАбб‚" #: src/gpodder/gtkui/main.py:2955 share/gpodder/ui/gtk/gpodder.ui.h:12 msgid "Remove podcasts" msgstr "а’аИаДаАаЛаИб‚аИ аПаОаДаКаАбб‚аИ" #: src/gpodder/gtkui/main.py:2956 msgid "Select the podcast you want to remove." msgstr "аžаБаЕб€б–б‚бŒ аПаОаДаКаАбб‚, баКаИаЙ аВаИ б…аОб‡аЕб‚аЕ аВаИаДаАаЛаИб‚аИ." #: src/gpodder/gtkui/main.py:2960 #: src/gpodder/gtkui/desktop/episodeselector.py:105 msgid "Remove" msgstr "а’аИаДаАаЛаИб‚аИ" #: src/gpodder/gtkui/main.py:2969 msgid "Removing podcast" msgstr "а’аИаДаАаЛббŽ аПаОаДаКаАбб‚" #: src/gpodder/gtkui/main.py:2970 msgid "Please wait while the podcast is removed" msgstr "а‘бƒаДбŒ аЛаАбаКаА, аПаОб‡аЕаКаАаЙб‚аЕ аПаОаКаИ аПаОаДаКаАбб‚ аВаИаДаАаЛбб”б‚бŒбб." #: src/gpodder/gtkui/main.py:2971 msgid "Do you really want to remove this podcast and its episodes?" msgstr "а’аИ аДб–аЙбаНаО аБаАаЖаАб”б‚аЕ аВаИаДаАаЛаИб‚аИ аПаОаДаКаАбб‚ б– аВбб– аЙаОаГаО аЕаПб–аЗаОаДаИ?" #: src/gpodder/gtkui/main.py:2973 msgid "Removing podcasts" msgstr "а’аИаДаАаЛббŽ аПаОаДаКаАбб‚аИ" #: src/gpodder/gtkui/main.py:2974 msgid "Please wait while the podcasts are removed" msgstr "а‘бƒаДбŒ аЛаАбаКаА, аПаОб‡аЕаКаАаЙб‚аЕ аПаОаКаИ аПаОаДаКаАбб‚аИ аВаИаДаАаЛббŽб‚бŒбб." #: src/gpodder/gtkui/main.py:2975 msgid "Do you really want to remove the selected podcasts and their episodes?" msgstr "а’аИ аДб–аЙбаНаО аБаАаЖаАб”б‚аЕ аВаИаДаАаЛаИб‚аИ аОаБб€аАаНб– аПаОаДаКаАбб‚аИ б‚аА аВбб– б—б…аНб– аЕаПб–аЗаОаДаИ?" #: src/gpodder/gtkui/main.py:3035 msgid "Please select a podcast in the podcasts list to remove." msgstr "а‘бƒаДбŒ аЛаАбаКаА, аОаБаЕб€б–б‚бŒ аПаОаДаКаАбб‚, баКаИаЙ б‚б€аЕаБаА аВаИаДаАаЛаИб‚аИ, аВ баПаИбаКбƒ аПаОаДаКаАбб‚б–аВ." #: src/gpodder/gtkui/main.py:3045 msgid "OPML files" msgstr "аЄаАаЙаЛаИ OPML" #: src/gpodder/gtkui/main.py:3050 msgid "Import from OPML" msgstr "а†аМаПаОб€б‚бƒаВаАб‚аИ аЗ OPML" #: src/gpodder/gtkui/main.py:3064 msgid "Import podcasts from OPML file" msgstr "а†аМаПаОб€б‚бƒаВаАб‚аИ аПаОаДаКаАбб‚аИ аЗ OPML-б„аАаЙаЛбƒ" #: src/gpodder/gtkui/main.py:3071 msgid "Nothing to export" msgstr "ааЕаМаАб” б‡аОаГаО аЕаКбаПаОб€б‚бƒаВаАб‚аИ" #: src/gpodder/gtkui/main.py:3072 msgid "" "Your list of podcast subscriptions is empty. Please subscribe to some " "podcasts first before trying to export your subscription list." msgstr "" "а’аАбˆ баПаИбаОаК аПб–аДаПаИбаОаК аНаА аПаОаДаКаАбб‚аИ аПбƒбб‚аИаЙ. а‘бƒаДбŒ аЛаАбаКаА, аПб–аДаПаИбˆб–б‚бŒбб аНаА баКб–ббŒ " "аПаОаДаКаАбб‚аИ аПаЕб€аЕаД б‚аИаМ, баК аНаАаМаАаГаАб‚аИбб аЕаКбаПаОб€б‚бƒаВаАб‚аИ баПаИбаОаК аПб–аДаПаИбаОаК." #: src/gpodder/gtkui/main.py:3076 msgid "Export to OPML" msgstr "а•аКбаПаОб€б‚бƒаВаАб‚аИ аВ OPML" #: src/gpodder/gtkui/main.py:3087 #, python-format msgid "%(count)d subscription exported" msgid_plural "%(count)d subscriptions exported" msgstr[0] "%(count)d аПб–аДаПаИбаКбƒ аЕаКбаПаОб€б‚аОаВаАаНаО" msgstr[1] "%(count)d аПб–аДаПаИбаКаИ аЕаКбаПаОб€б‚аОаВаАаНаО" msgstr[2] "%(count)d аПб–аДаПаИбаОаК аЕаКбаПаОб€б‚аОаВаАаНаО" #: src/gpodder/gtkui/main.py:3088 msgid "Your podcast list has been successfully exported." msgstr "а’аАбˆ баПаИбаОаК аПб–аДаПаИбаОаК бƒбаПб–бˆаНаО аЕаКбаПаОб€б‚аОаВаАаНаИаЙ." #: src/gpodder/gtkui/main.py:3090 msgid "Could not export OPML to file. Please check your permissions." msgstr "ааЕ аВаИаЙбˆаЛаО аЕаКбаПаОб€б‚бƒаВаАб‚аИ OPML б„аАаЙаЛ. а‘бƒаДбŒ аЛаАбаКаА, аПаЕб€аЕаВб–б€б‚аЕ аВаАбˆб– аПб€аАаВаА." #: src/gpodder/gtkui/main.py:3090 msgid "OPML export failed" msgstr "аŸаОаМаИаЛаКаА аЕаКбаПаОб€б‚бƒ OPML" #: src/gpodder/gtkui/main.py:3117 #, fuzzy msgid "No updates available" msgstr "ааЕаМаАб” аДаОбб‚бƒаПаНаИб… аЕаПб–аЗаОаДб–аВ" #: src/gpodder/gtkui/main.py:3118 msgid "You have the latest version of gPodder." msgstr "" #: src/gpodder/gtkui/main.py:3122 #, fuzzy msgid "New version available" msgstr "а”аОбб‚бƒаПаНаИаЙ аНаОаВаИаЙ аЕаПб–аЗаОаД" #: src/gpodder/gtkui/main.py:3124 #, python-format msgid "Installed version: %s" msgstr "" #: src/gpodder/gtkui/main.py:3125 #, fuzzy, python-format msgid "Newest version: %s" msgstr "а’аИаДаАаЛббŽ: %s" #: src/gpodder/gtkui/main.py:3126 #, fuzzy, python-format msgid "Release date: %s" msgstr "аОаПбƒаБаЛб–аКаОаВаАаНаО: %s" #: src/gpodder/gtkui/main.py:3128 #, fuzzy msgid "Download the latest version from gpodder.org?" msgstr "а—аАаВаАаНб‚аАаЖаИб‚аИ аПб–аДаПаИбаКаИ аЗ my.gpodder.org" #: src/gpodder/gtkui/main.py:3141 #, fuzzy msgid "About gPodder" msgstr "а’аИаЙб‚аИ аЗ gPodder" #: src/gpodder/gtkui/main.py:3424 #, fuzzy msgid "Please register a YouTube API key and set it in the preferences." msgstr "а‘бƒаДбŒ аЛаАбаКаА, аНаАаЛаАбˆб‚бƒаЙб‚аЕ аВаАбˆ аПб€аИбб‚б€б–аЙ бƒ аДб–аАаЛаОаЗб– аŸаАб€аАаМаЕб‚б€аИ." #: src/gpodder/gtkui/main.py:3425 msgid "Would you like to set up an API key now?" msgstr "" #: src/gpodder/gtkui/main.py:3425 msgid "API key required" msgstr "" #: src/gpodder/gtkui/main.py:3444 bin/gpo:631 #, fuzzy msgid "No unique URL found" msgstr "ааЕ аЗаНаАаЙаДаЕаНаО аКаАаНаАаЛб–аВ" #: src/gpodder/gtkui/main.py:3449 bin/gpo:637 #, fuzzy msgid "Already subscribed" msgstr "ааЕ аМаОаЖбƒ баИаНб…б€аОаНб–аЗбƒаВаАб‚аИббŒ аЗ iPod" #: src/gpodder/gtkui/main.py:3458 bin/gpo:649 #, python-format msgid "Make sure the API key is correct. Error: %(message)s" msgstr "" #: src/gpodder/gtkui/main.py:3459 #, fuzzy msgid "Error getting YouTube channels" msgstr "аŸаОаМаИаЛаКаА аЗаМб–аНаИ аНаАаЛаАбˆб‚бƒаВаАаНбŒ" #: src/gpodder/gtkui/main.py:3462 msgid "Successfully migrated subscriptions" msgstr "" #: src/gpodder/gtkui/main.py:3464 #, fuzzy msgid "Subscriptions are up to date" msgstr "аŸб–аДаПаИбаКбƒ аПб€аИаЗбƒаПаИаНаЕаНаО" #: src/gpodder/gtkui/main.py:3467 msgid "These URLs failed:" msgstr "" #: src/gpodder/gtkui/main.py:3469 #, fuzzy msgid "Could not migrate some subscriptions" msgstr "ааЕ аЗаМб–аГ аДаОаДаАб‚аИ аДаЕбаКб– аПаОаДаКаАбб‚аИ" #: src/gpodder/gtkui/main.py:3493 msgid "Cannot start gPodder" msgstr "ааЕ аМаОаЖбƒ аЗаАаПбƒбб‚аИб‚аИ gPodder" #: src/gpodder/gtkui/main.py:3494 #, python-format msgid "D-Bus error: %s" msgstr "аŸаОаМаИаЛаКаА D-Bus: %s" #: src/gpodder/gtkui/model.py:68 #, python-format msgid "released %s" msgstr "аОаПбƒаБаЛб–аКаОаВаАаНаО %s" #: src/gpodder/gtkui/model.py:69 src/gpodder/gtkui/model.py:87 #: src/gpodder/gtkui/model.py:237 src/gpodder/gtkui/shownotes.py:84 #, python-format msgid "from %s" msgstr "аВб–аД %s" #: src/gpodder/gtkui/model.py:80 src/gpodder/gtkui/model.py:393 msgid "played" msgstr "аПб€аОбаЛбƒб…аАаНаО" #: src/gpodder/gtkui/model.py:82 msgid "unplayed" msgstr "аНаЕаПб€аОбаЛбƒб…аАаНаО" #: src/gpodder/gtkui/model.py:85 msgid "today" msgstr "ббŒаОаГаОаДаНб–" #: src/gpodder/gtkui/model.py:86 #, python-format msgid "downloaded %s" msgstr "аЗаАаВаАаНб‚аАаЖаЕаНаО %s" #: src/gpodder/gtkui/model.py:337 msgid "Deleted" msgstr "а’аИаДаАаЛаЕаНб–" #: src/gpodder/gtkui/model.py:342 msgid "New episode" msgstr "ааОаВаИаЙ аЕаПб–аЗаОаД" #: src/gpodder/gtkui/model.py:356 msgid "Downloaded episode" msgstr "а•аПб–аЗаОаД аЗаАаВаАаНб‚аАаЖаЕаНаО" #: src/gpodder/gtkui/model.py:359 msgid "Downloaded video episode" msgstr "а’б–аДаЕаО-аЕаПб–аЗаОаД аЗаАаВаАаНб‚аАаЖаЕаНаО" #: src/gpodder/gtkui/model.py:362 msgid "Downloaded image" msgstr "а—аОаБб€аАаЖаЕаНаНб аЗаАаВаАаНб‚аАаЖаЕаНаО" #: src/gpodder/gtkui/model.py:365 msgid "Downloaded file" msgstr "аЄаАаЙаЛ аЗаАаВаАаНб‚аАаЖаЕаНаО" #: src/gpodder/gtkui/model.py:380 msgid "missing file" msgstr "аВб–аДббƒб‚аНб–аЙ б„аАаЙаЛ" #: src/gpodder/gtkui/model.py:384 msgid "never displayed" msgstr "аНаЕ аПаЕб€аЕаГаЛбаНбƒб‚аО" #: src/gpodder/gtkui/model.py:386 msgid "never played" msgstr "аНаЕ аВб–аДб‚аВаОб€бŽаВаАаЛаОббŒ" #: src/gpodder/gtkui/model.py:388 msgid "never opened" msgstr "аНаЕ аВб–аДаКб€аИаВаАаЛаОбб" #: src/gpodder/gtkui/model.py:391 msgid "displayed" msgstr "аПаЕб€аЕаГаЛбаНбƒб‚аО" #: src/gpodder/gtkui/model.py:395 msgid "opened" msgstr "аВб–аДаКб€аИаВаАаЛаОбб" #: src/gpodder/gtkui/model.py:397 msgid "deletion prevented" msgstr "аВаИаДаАаЛаЕаНаНб аЗаАаБаОб€аОаНаЕаНаО" #: src/gpodder/gtkui/model.py:432 share/gpodder/ui/gtk/gpodder.ui.h:32 msgid "All episodes" msgstr "а’бб– аЕаПб–аЗаОаДаИ" #: src/gpodder/gtkui/model.py:433 msgid "from all podcasts" msgstr "аЗ бƒбб–б… аПаОаДаКаАбб‚б–аВ" #: src/gpodder/gtkui/model.py:625 msgid "Subscription paused" msgstr "аŸб–аДаПаИбаКбƒ аПб€аИаЗбƒаПаИаНаЕаНаО" #: src/gpodder/gtkui/shownotes.py:118 #, fuzzy msgid "Please select an episode" msgstr "аžаБб€аАб‚аИ аЕаПб–аЗаОаДаИ" #: src/gpodder/gtkui/interface/addpodcast.py:74 msgid "Nothing to paste." msgstr "ааЕаМаАб” б‡аОаГаО аВбб‚аАаВаЛбб‚аИ." #: src/gpodder/gtkui/interface/addpodcast.py:74 msgid "Clipboard is empty" msgstr "а‘бƒб„аЕб€ аОаБаМб–аНбƒ аПбƒбб‚аИаЙ" #: src/gpodder/gtkui/interface/common.py:160 msgid "Username" msgstr "а†аМ'б аКаОб€аИбб‚бƒаВаАб‡аА:" #: src/gpodder/gtkui/interface/common.py:163 msgid "New user" msgstr "ааОаВаИаЙ аКаОб€аИбб‚бƒаВаАб‡" #: src/gpodder/gtkui/interface/common.py:170 msgid "Login" msgstr "а›аОаГб–аН" #: src/gpodder/gtkui/interface/common.py:172 msgid "Authentication required" msgstr "ааЕаОаБб…б–аДаНаА аАбƒб‚аЕаНб‚аИб„б–аКаАб†б–б" #: src/gpodder/gtkui/interface/common.py:203 msgid "Password" msgstr "аŸаАб€аОаЛбŒ" #: src/gpodder/gtkui/interface/common.py:225 msgid "Select destination" msgstr "аžаБаЕб€б–б‚бŒ б‚аЕаКбƒ аПб€аИаЗаНаАб‡аЕаНаНб" #: src/gpodder/gtkui/interface/configeditor.py:34 msgid "Setting" msgstr "аŸаАб€аАаМаЕб‚б€аИ" #: src/gpodder/gtkui/interface/configeditor.py:41 msgid "Set to" msgstr "а’бб‚аАаНаОаВаИб‚аИ бƒ" #: src/gpodder/gtkui/interface/configeditor.py:81 #, python-format msgid "Cannot set %(field)s to %(value)s. Needed data type: %(datatype)s" msgstr "" "ааЕ аВаДаАб”б‚бŒбб аВбб‚аАаНаОаВаИб‚аИ %(field)s бƒ %(value)s. ааЕаОаБб…б–аДаНаИаЙ б‚аИаП аДаАаНаИб…: " "%(datatype)s" #: src/gpodder/gtkui/interface/configeditor.py:85 msgid "Error setting option" msgstr "аŸаОаМаИаЛаКаА аЗаМб–аНаИ аНаАаЛаАбˆб‚бƒаВаАаНбŒ" #: src/gpodder/gtkui/desktop/channel.py:100 #, fuzzy msgid "Add section" msgstr "а”б–б" #: src/gpodder/gtkui/desktop/channel.py:100 #, fuzzy msgid "New section:" msgstr "ааОаВаА аНаАаЗаВаА:" #: src/gpodder/gtkui/desktop/channel.py:133 msgid "Select new podcast cover artwork" msgstr "аžаБаЕб€б–б‚бŒ аОаБаКаЛаАаДаИаНаКбƒ аДаЛб аНаОаВаОаГаО аПаОаДаКаАбб‚бƒ" #: src/gpodder/gtkui/desktop/channel.py:161 msgid "You can only drop a single image or URL here." msgstr "а’аИ аМаОаЖаЕб‚аЕ аКаИаНбƒб‚аИ ббŽаДаИ аЛаИбˆаЕ аОаДаИаН б„аАаЙаЛ б‡аИ аОаДаНаЕ аПаОбаИаЛаАаНаНб." #: src/gpodder/gtkui/desktop/channel.py:161 #: src/gpodder/gtkui/desktop/channel.py:171 msgid "Drag and drop" msgstr "аŸаЕб€аЕб‚баГаНб–б‚бŒ б‚аА аКаИаНбŒб‚аЕ" #: src/gpodder/gtkui/desktop/channel.py:171 msgid "You can only drop local files and http:// URLs here." msgstr "а’аИ аМаОаЖаЕб‚аЕ аКаИаДаАб‚аИ ббŽаДаИ б„аАаЙаЛаИ аЗ аВаАбˆаОаГаО аКаОаМаП'бŽб‚аЕб€аА б‚аА http:// аПаОбаИаЛаАаНаНб." #: src/gpodder/gtkui/desktop/deviceplaylist.py:98 #, fuzzy, python-format msgid "Folder %s could not be created." msgstr "ааЕ аВаДаАаЛаОбб аОаНаОаВаИб‚аИ аПаОб‚б–аК %(url)s." #: src/gpodder/gtkui/desktop/deviceplaylist.py:98 #, fuzzy msgid "Error writing playlist" msgstr "аŸаОаМаИаЛаКаА аПб€аИ аВб–аДаКб€аИб‚б‚б– аПаЛаЕб”б€аА" #: src/gpodder/gtkui/desktop/episodeselector.py:288 #: share/gpodder/ui/gtk/gpodderepisodeselector.ui.h:2 msgid "Select all" msgstr "а’аИаБб€аАб‚аИ аВбаЕ" #: src/gpodder/gtkui/desktop/episodeselector.py:292 #: share/gpodder/ui/gtk/gpodderepisodeselector.ui.h:3 msgid "Select none" msgstr "аб–б‡аОаГаО аНаЕ аОаБаИб€аАб‚аИ" #: src/gpodder/gtkui/desktop/episodeselector.py:324 msgid "Nothing selected" msgstr "аб–б‡аОаГаО аНаЕ аОаБб€аАаНаО" #: src/gpodder/gtkui/desktop/episodeselector.py:325 #, python-format msgid "%(count)d episode" msgid_plural "%(count)d episodes" msgstr[0] "%(count)d аЕаПб–аЗаОаД" msgstr[1] "%(count)d аЕаПб–аЗаОаДаИ" msgstr[2] "%(count)d аЕаПб–аЗаОаДб–аВ\t" #: src/gpodder/gtkui/desktop/episodeselector.py:327 #, python-format msgid "size: %s" msgstr "б€аОаЗаМб–б€: %s" #: src/gpodder/gtkui/desktop/podcastdirectory.py:238 #, fuzzy msgid "Loading podcasts" msgstr "а”аОаДаАбŽ аПаОаДаКаАбб‚аИ" #: src/gpodder/gtkui/desktop/podcastdirectory.py:239 #, fuzzy msgid "Please wait while the podcast list is downloaded" msgstr "а‘бƒаДбŒ аЛаАбаКаА, аПаОб‡аЕаКаАаЙб‚аЕ аПаОаКаИ аПаОаДаКаАбб‚ аВаИаДаАаЛбб”б‚бŒбб." #: src/gpodder/gtkui/desktop/preferences.py:51 #: src/gpodder/gtkui/desktop/preferences.py:93 msgid "Do nothing" msgstr "аб–б‡аОаГаО аНаЕ б€аОаБаИб‚аИ" #: src/gpodder/gtkui/desktop/preferences.py:52 msgid "Show episode list" msgstr "аŸаОаКаАаЗаАб‚аИ баПаИбаОаК аЕаПб–аЗаОаДб–аВ" #: src/gpodder/gtkui/desktop/preferences.py:53 msgid "Add to download list" msgstr "а”аОаДаАб‚аИ аДаО баПаИбаКбƒ аЗаАаВаАаНб‚аАаЖаЕаНаНб" #: src/gpodder/gtkui/desktop/preferences.py:54 msgid "Download immediately" msgstr "а—аАаВаАаНб‚аАаЖаИб‚аИ аНаЕаГаАаЙаНаО" #: src/gpodder/gtkui/desktop/preferences.py:72 msgid "None" msgstr "аб–б‰аО" #: src/gpodder/gtkui/desktop/preferences.py:73 msgid "iPod" msgstr "" #: src/gpodder/gtkui/desktop/preferences.py:74 msgid "Filesystem-based" msgstr "а— б„аАаЙаЛаОаВаОбŽ баИбб‚аЕаМаОбŽ" #: src/gpodder/gtkui/desktop/preferences.py:94 #, fuzzy msgid "Mark as played" msgstr "аŸаОаЗаНаАб‡аИб‚аИ баК аНаЕаПб€аОбаЛбƒб…аАаНаИаЙ" #: src/gpodder/gtkui/desktop/preferences.py:95 #, fuzzy msgid "Delete from gPodder" msgstr "а’аИаДаАаЛаИб‚аИ аЗ gPodder" #: src/gpodder/gtkui/desktop/preferences.py:123 #, fuzzy, python-format msgid "Custom (%(format_ids)s)" msgstr "а”аОаВб–аЛбŒаНаИаЙ б€баДаОаК б„аОб€аМаАб‚бƒ" #: src/gpodder/gtkui/desktop/preferences.py:318 msgid "Name" msgstr "" #: src/gpodder/gtkui/desktop/preferences.py:369 msgid "Documentation" msgstr "" #: src/gpodder/gtkui/desktop/preferences.py:374 msgid "Extension info" msgstr "" #: src/gpodder/gtkui/desktop/preferences.py:379 msgid "Support the author" msgstr "" #: src/gpodder/gtkui/desktop/preferences.py:413 msgid "Extension cannot be activated" msgstr "" #: src/gpodder/gtkui/desktop/preferences.py:426 msgid "Extension module info" msgstr "" #: src/gpodder/gtkui/desktop/preferences.py:463 msgid "Configure audio player" msgstr "ааАаЛаАбˆб‚бƒаВаАаНаНб аАбƒаДб–аО-аПб€аОаГб€аАаВаАб‡аА" #: src/gpodder/gtkui/desktop/preferences.py:464 #: src/gpodder/gtkui/desktop/preferences.py:474 msgid "Command:" msgstr "аšаОаМаАаНаДаА:" #: src/gpodder/gtkui/desktop/preferences.py:473 msgid "Configure video player" msgstr "ааАаЛаАбˆб‚бƒаВаАаНаНб аАбƒаДб–аО-аПб€аОаГб€аАаВаАб‡аА" #: src/gpodder/gtkui/desktop/preferences.py:485 #: src/gpodder/gtkui/desktop/preferences.py:503 msgid "manually" msgstr "аВб€бƒб‡аНбƒ" #: src/gpodder/gtkui/desktop/preferences.py:505 #, python-format msgid "after %(count)d day" msgid_plural "after %(count)d days" msgstr[0] "б‡аЕб€аЕаЗ %(count)d аДаЕаНбŒ" msgstr[1] "б‡аЕб€аЕаЗ %(count)d аДаНб–" msgstr[2] "б‡аЕб€аЕаЗ %(count)d аДаНб–аВ" #: src/gpodder/gtkui/desktop/preferences.py:541 msgid "Replace subscription list on server" msgstr "а—аАаМб–аНаИб‚аИ баПаИбаОаК аЗаАаВаАаНб‚аАаЖаЕаНаНб аНаА баЕб€аВаЕб€б–" #: src/gpodder/gtkui/desktop/preferences.py:542 msgid "" "Remote podcasts that have not been added locally will be removed on the " "server. Continue?" msgstr "" "а’б–аДаДаАаЛаЕаНаИаЙ аПаОаДаКаАбб‚, б‰аО аНаЕ аБбƒаВ аДаОаДаАаНаИаЙ аЛаОаКаАаЛбŒаНаО, аБбƒаДаЕ аВаИаДаАаЛаЕаНаИаЙ б–аЗ баЕб€аВаЕб€аА. " "аŸб€аОаДаОаВаЖаИб‚аИ?" #: src/gpodder/gtkui/desktop/preferences.py:621 msgid "Select folder for mount point" msgstr "аžаБаЕб€б–б‚бŒ б‚аЕаКбƒ аДаЛб б‚аОб‡аКаИ аМаОаНб‚бƒаВаАаНаНб" #: src/gpodder/gtkui/desktop/preferences.py:638 #, fuzzy msgid "Select folder for playlists" msgstr "аžаБаЕб€б–б‚бŒ б‚аЕаКбƒ аДаЛб б‚аОб‡аКаИ аМаОаНб‚бƒаВаАаНаНб" #: src/gpodder/gtkui/desktop/sync.py:86 msgid "No device configured" msgstr "аŸб€аИбб‚б€б–аЙ аНаЕ аНаАаЛаАбˆб‚аОаВаАаНаО" #: src/gpodder/gtkui/desktop/sync.py:87 msgid "Please set up your device in the preferences dialog." msgstr "а‘бƒаДбŒ аЛаАбаКаА, аНаАаЛаАбˆб‚бƒаЙб‚аЕ аВаАбˆ аПб€аИбб‚б€б–аЙ бƒ аДб–аАаЛаОаЗб– аŸаАб€аАаМаЕб‚б€аИ." #: src/gpodder/gtkui/desktop/sync.py:91 msgid "Cannot open device" msgstr "ааЕ аМаОаЖбƒ аВб–аДаКб€аИб‚аИ аПб€аИбб‚б€б–аЙ" #: src/gpodder/gtkui/desktop/sync.py:92 msgid "Please check the settings in the preferences dialog." msgstr "а‘бƒаДбŒ аЛаАбаКаА, аПаЕб€аЕаВб–б€б‚аЕ аНаАаЛаАбˆб‚бƒаВаАаНаНб бƒ аДб–аАаЛаОаЗб– аŸаАб€аАаМаЕб‚б€аИ." #: src/gpodder/gtkui/desktop/sync.py:139 msgid "Not enough space left on device" msgstr "ааЕаДаОбб‚аАб‚аНбŒаО аМб–бб†б аНаА аДаИбаКбƒ." #: src/gpodder/gtkui/desktop/sync.py:140 #, fuzzy, python-format msgid "" "Additional free space required: %(required_space)s\n" "Do you want to continue?" msgstr "" "а’аАаМ аНаЕаОаБб…б–аДаНаО аЗаВб–аЛбŒаНаИб‚аИ %s.\n" "а‘аАаЖаАб”б‚аЕ аПб€аОаДаОаВаЖаИб‚аИ?" #: src/gpodder/gtkui/desktop/sync.py:199 #, fuzzy msgid "Update successful" msgstr "аЁаПаИбаОаК бƒбаПб–бˆаНаО аЗаАаВаАаНб‚аЕаЖаЕаНаО." #: src/gpodder/gtkui/desktop/sync.py:200 msgid "The playlist on your MP3 player has been updated." msgstr "" #: src/gpodder/gtkui/desktop/sync.py:274 msgid "Episodes have been deleted on device" msgstr "" #: src/gpodder/gtkui/desktop/sync.py:285 #, fuzzy msgid "Error writing playlist files" msgstr "аŸаОаМаИаЛаКаА аПб€аИ аКаОаНаВаЕб€б‚бƒаВаАаНаНб– б„аАаЙаЛаА." #: src/gpodder/plugins/soundcloud.py:154 msgid "Unknown track" msgstr "ааЕаВб–аДаОаМаИаЙ б‚б€аЕаК" #: src/gpodder/plugins/soundcloud.py:181 #, python-format msgid "%s on Soundcloud" msgstr "%s аНаА Soundcloud" #: src/gpodder/plugins/soundcloud.py:190 #, python-format msgid "Tracks published by %s on Soundcloud." msgstr "аЂб€аЕаКаИ, аОаПбƒаБаЛб–аКаОаВаАаНб– %s аНаА Soundcloud." #: src/gpodder/plugins/soundcloud.py:217 #, python-format msgid "%s's favorites on Soundcloud" msgstr "%s аВ аОаБб€аАаНаИб… аНаА SoundCloud" #: src/gpodder/plugins/soundcloud.py:223 #, python-format msgid "Tracks favorited by %s on Soundcloud." msgstr "аЂб€аЕаКаИ, аЗаАаНаЕбаЕаНб– аВ аОаБб€аАаНаЕ %s аНаА Soundcloud." #: share/gpodder/extensions/audio_converter.py:20 #, fuzzy msgid "Convert audio files" msgstr "аОаДаИаН б„аАаЙаЛ" #: share/gpodder/extensions/audio_converter.py:21 msgid "Transcode audio files to mp3/ogg" msgstr "" #: share/gpodder/extensions/audio_converter.py:84 #: share/gpodder/extensions/video_converter.py:86 #, python-format msgid "Convert to %(format)s" msgstr "" #: share/gpodder/extensions/audio_converter.py:111 #: share/gpodder/extensions/rockbox_convert2mp4.py:65 #: share/gpodder/extensions/video_converter.py:111 #, fuzzy msgid "File converted" msgstr "аšаОаНаВаЕб€б‚аОб€ iPod OGG" #: share/gpodder/extensions/audio_converter.py:114 #: share/gpodder/extensions/video_converter.py:114 #, fuzzy msgid "Conversion failed" msgstr "аОаДаИаН б„аАаЙаЛ" #: share/gpodder/extensions/concatenate_videos.py:20 #: share/gpodder/extensions/concatenate_videos.py:100 #, fuzzy msgid "Concatenate videos" msgstr "аОаДаИаН б„аАаЙаЛ" #: share/gpodder/extensions/concatenate_videos.py:21 msgid "Add a context menu item for concatenating multiple videos" msgstr "" #: share/gpodder/extensions/concatenate_videos.py:37 msgid "Save video" msgstr "" #: share/gpodder/extensions/concatenate_videos.py:66 #, fuzzy msgid "Concatenating video files" msgstr "аОаДаИаН б„аАаЙаЛ" #: share/gpodder/extensions/concatenate_videos.py:67 #, python-format msgid "Writing %(filename)s" msgstr "" #: share/gpodder/extensions/concatenate_videos.py:78 msgid "Videos successfully converted" msgstr "" #: share/gpodder/extensions/concatenate_videos.py:79 #, fuzzy msgid "Error converting videos" msgstr "аŸаОаМаИаЛаКаА аПб€аИ аКаОаНаВаЕб€б‚бƒаВаАаНаНб– б„аАаЙаЛаА." #: share/gpodder/extensions/concatenate_videos.py:80 msgid "Concatenation result" msgstr "" #: share/gpodder/extensions/enqueue_in_mediaplayer.py:16 msgid "Enqueue in media players" msgstr "" #: share/gpodder/extensions/enqueue_in_mediaplayer.py:17 msgid "" "Add a context menu item for enqueueing episodes in installed media players" msgstr "" #: share/gpodder/extensions/enqueue_in_mediaplayer.py:35 msgid "Enqueue in" msgstr "" #: share/gpodder/extensions/episode_website_context_menu.py:14 msgid "\"Open website\" episode context menu" msgstr "" #: share/gpodder/extensions/episode_website_context_menu.py:15 msgid "Add a context menu item for opening the website of an episode" msgstr "" #: share/gpodder/extensions/episode_website_context_menu.py:30 #, fuzzy msgid "Open website" msgstr "аЁаАаЙб‚:" #: share/gpodder/extensions/gtk_statusicon.py:14 #, fuzzy msgid "Gtk Status Icon" msgstr "аЁб‚аАаН" #: share/gpodder/extensions/gtk_statusicon.py:15 msgid "Show a status icon for Gtk-based Desktops." msgstr "" #: share/gpodder/extensions/minimize_on_start.py:10 msgid "Minimize on start" msgstr "" #: share/gpodder/extensions/minimize_on_start.py:11 msgid "Minimizes the gPodder window on startup." msgstr "" #: share/gpodder/extensions/mpris-listener.py:33 msgid "MPRIS Listener" msgstr "" #: share/gpodder/extensions/mpris-listener.py:34 msgid "Convert MPRIS notifications to gPodder Media Player D-Bus API" msgstr "" #: share/gpodder/extensions/normalize_audio.py:21 msgid "Normalize audio with re-encoding" msgstr "" #: share/gpodder/extensions/normalize_audio.py:22 msgid "Normalize the volume of audio files with normalize-audio" msgstr "" #: share/gpodder/extensions/normalize_audio.py:99 #, fuzzy msgid "File normalized" msgstr "а†аМ'б б„аАаЙаЛбƒ" #: share/gpodder/extensions/rename_download.py:16 #, fuzzy msgid "Rename episodes after download" msgstr "ааЕаМаАб” аЕаПб–аЗаОаДб–аВ аДаЛб аЗаАаВаАаНб‚аАаЖаЕаНаНб" #: share/gpodder/extensions/rename_download.py:17 #, fuzzy msgid "Rename episodes to \".\" on download" msgstr "а”аОбб‚бƒаПаНаИаЙ аДаЛб аЗаАаВаАаНб‚аАаЖаЕаНаНб аОаДаИаН аНаОаВаИаЙ аЕаПб–аЗаОаД" #: share/gpodder/extensions/rm_ogg_cover.py:37 #, fuzzy msgid "Remove cover art from OGG files" msgstr "а’бб‚аАаНаОаВаИб‚аИ аОаБаКаЛаАаДаИаНаКбƒ аЗ б„аАаЙаЛбƒ" #: share/gpodder/extensions/rm_ogg_cover.py:38 msgid "removes coverart from all downloaded ogg files" msgstr "" #: share/gpodder/extensions/rm_ogg_cover.py:66 #, fuzzy msgid "Remove cover art" msgstr "аŸб€аИаБб€аАб‚аИ аПаОаЗаНаАб‡аКбƒ \"аНаОаВаЕ\"" #: share/gpodder/extensions/rockbox_convert2mp4.py:26 msgid "Convert video files to MP4 for Rockbox" msgstr "" #: share/gpodder/extensions/rockbox_convert2mp4.py:27 msgid "Converts all videos to a Rockbox-compatible format" msgstr "" #: share/gpodder/extensions/sonos.py:19 share/gpodder/extensions/sonos.py:78 msgid "Stream to Sonos" msgstr "" #: share/gpodder/extensions/sonos.py:20 msgid "Stream podcasts to Sonos speakers" msgstr "" #: share/gpodder/extensions/tagging.py:45 msgid "Tag downloaded files using Mutagen" msgstr "" #: share/gpodder/extensions/tagging.py:46 #, fuzzy msgid "Add episode and podcast titles to MP3/OGG tags" msgstr "аŸаОаКаАаЗбƒаВаАб‚аИ \"а’бб– аЕаПб–аОаЗаДаИ\" бƒ баПаИбаКбƒ аПаОаДаКаАбб‚б–аВ" #: share/gpodder/extensions/taskbar_progress.py:28 msgid "Show download progress on the taskbar" msgstr "" #: share/gpodder/extensions/taskbar_progress.py:29 msgid "Displays the progress on the Windows taskbar." msgstr "" #: share/gpodder/extensions/ted_subtitles.py:16 msgid "Subtitle Downloader for TED Talks" msgstr "" #: share/gpodder/extensions/ted_subtitles.py:17 msgid "Downloads .srt subtitles for TED Talks Videos" msgstr "" #: share/gpodder/extensions/ubuntu_appindicator.py:10 msgid "Ubuntu App Indicator" msgstr "" #: share/gpodder/extensions/ubuntu_appindicator.py:11 msgid "Show a status indicator in the top bar." msgstr "" #: share/gpodder/extensions/ubuntu_appindicator.py:47 msgid "Show main window" msgstr "" #: share/gpodder/extensions/ubuntu_appindicator.py:57 #: share/gpodder/ui/gtk/gpodder.ui.h:6 msgid "Quit" msgstr "а’аИаЙб‚аИ" #: share/gpodder/extensions/ubuntu_unity.py:10 msgid "Ubuntu Unity Integration" msgstr "" #: share/gpodder/extensions/ubuntu_unity.py:11 msgid "Show download progress in the Unity Launcher icon." msgstr "" #: share/gpodder/extensions/update_feeds_on_startup.py:14 #, fuzzy msgid "Search for new episodes on startup" msgstr "аŸаЕб€аЕаВб–б€бб‚аИ аНаА аНаОаВб– аЕаПб–аЗаОаДаИ аПб€аИ бб‚аАб€б‚б–" #: share/gpodder/extensions/update_feeds_on_startup.py:15 #, fuzzy msgid "Starts the search for new episodes on startup" msgstr "аŸаЕб€аЕаВб–б€бб‚аИ аНаА аНаОаВб– аЕаПб–аЗаОаДаИ аПб€аИ бб‚аАб€б‚б–" #: share/gpodder/extensions/video_converter.py:22 #, fuzzy msgid "Convert video files" msgstr "аОаДаИаН б„аАаЙаЛ" #: share/gpodder/extensions/video_converter.py:23 msgid "Transcode video files to avi/mp4/m4v" msgstr "" #: share/gpodder/ui/gtk/gpodderaddpodcast.ui.h:1 msgid "Add a new podcast" msgstr "а”аОаДаАб‚аИ аНаОаВаИаЙ аПаОаДаКаАбб‚" #: share/gpodder/ui/gtk/gpodderaddpodcast.ui.h:2 msgid "URL:" msgstr "URL:" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:1 msgid "gPodder Podcast Editor" msgstr "а аЕаДаАаКб‚аОб€ аПаОаДаКаАбб‚б–аВ gPodder" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:2 #, fuzzy msgid "Section:" msgstr "а”б–б" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:3 msgid "Disable feed updates (pause subscription)" msgstr "а—аАаБаОб€аОаНаИб‚аИ аОаНаОаВаЛаЕаНаНб аПаОб‚аОаКб–аВ (аПб€аИаЗбƒаПаИаНаИб‚аИ аПб–аДаПаИбаКбƒ)" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:4 #, fuzzy msgid "Synchronize to MP3 player devices" msgstr "аЁаИаНб…б€аОаНб–аЗбƒбŽ аЗ аПаЛаЕб”б€аОаМ" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:5 #, fuzzy msgid "Strategy:" msgstr "аЁб‚б€аАб‚аЕаГб–б аВаИаДаАаЛаЕаНаНб:" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:6 #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:6 msgid "General" msgstr "а“аОаЛаОаВаНаЕ" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:7 msgid "HTTP/FTP Authentication" msgstr "HTTP/FTP абƒб‚аЕаНб‚аИб„б–аКаАб†б–б" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:8 #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:13 msgid "Username:" msgstr "а†аМ'б аКаОб€аИбб‚бƒаВаАб‡аА:" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:9 #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:14 msgid "Password:" msgstr "аŸаАб€аОаЛбŒ:" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:10 msgid "Locations" msgstr "аœб–бб†аЕаЗаНаАб…аОаДаЖаЕаНаНб" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:11 msgid "Download to:" msgstr "а—аАаВаАаНб‚аАаЖбƒаВаАб‚аИ аДаО:" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:12 msgid "Website:" msgstr "аЁаАаЙб‚:" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:13 msgid "website label" msgstr "аМб–б‚аКаА аВаЕаБ-баАаЙб‚бƒ" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:14 msgid "Advanced" msgstr "а”аЕб‚аАаЛбŒаНб–бˆаЕ" #: share/gpodder/ui/gtk/gpodderconfigeditor.ui.h:1 msgid "gPodder Configuration Editor" msgstr "а аЕаДаАаКб‚аОб€ аНаАаЛаАбˆб‚бƒаВаАаНбŒ gPodder" #: share/gpodder/ui/gtk/gpodderconfigeditor.ui.h:2 msgid "Search for:" msgstr "аЈбƒаКаАб‚аИ:" #: share/gpodder/ui/gtk/gpodderconfigeditor.ui.h:3 msgid "Show All" msgstr "аŸаОаКаАаЗаАб‚аИ а’баЕ" #: share/gpodder/ui/gtk/gpodderepisodeselector.ui.h:1 msgid "Select episodes" msgstr "аžаБб€аАб‚аИ аЕаПб–аЗаОаДаИ" #: share/gpodder/ui/gtk/gpodderpodcastdirectory.ui.h:1 msgid "Find new podcasts" msgstr "а—аНаАаЙб‚аИ аНаОаВб– аПаОаДаКаАбб‚аИ" #: share/gpodder/ui/gtk/gpodderpodcastdirectory.ui.h:2 msgid "Select All" msgstr "аžаБб€аАб‚аИ аВбаЕ" #: share/gpodder/ui/gtk/gpodderpodcastdirectory.ui.h:3 msgid "Select None" msgstr "аб–б‡аОаГаО аНаЕ аОаБаИб€аАб‚аИ" #: share/gpodder/ui/gtk/gpodderpodcastdirectory.ui.h:4 msgid "label" msgstr "" #: share/gpodder/ui/gtk/gpodderpodcastdirectory.ui.h:5 msgid "..." msgstr "" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:1 #: share/gpodder/ui/gtk/gpodder.ui.h:5 msgid "Preferences" msgstr "_ааАаЛаАбˆб‚бƒаВаАаНаНб" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:2 msgid "Audio player:" msgstr "абƒаДб–аО-аПб€аОаГб€аАаВаАб‡:" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:3 msgid "Video player:" msgstr "а’б–аДаЕаО-аПб€аОаГб€аАаВаАб‡:" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:4 #, fuzzy msgid "\"All episodes\" in podcast list" msgstr "аŸаОаКаАаЗбƒаВаАб‚аИ \"а’бб– аЕаПб–аОаЗаДаИ\" бƒ баПаИбаКбƒ аПаОаДаКаАбб‚б–аВ" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:5 #, fuzzy msgid "Use sections for podcast list" msgstr "аŸаОаМаИаЛаКаА аЗаБаЕб€б–аГаАаНаНб баПаИбаКбƒ аПаОаДаКаАбб‚б–аВ" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:7 msgid "Preferred YouTube format:" msgstr "" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:8 msgid "YouTube API key (v3):" msgstr "" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:9 msgid "Preferred Vimeo format:" msgstr "" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:11 msgid "Extensions" msgstr "" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:12 msgid "Synchronize subscriptions and episode actions" msgstr "аЁаИаНб…б€аОаНб–аЗаОаВбƒаВаАб‚аИ аПб–аДаПаИбаКаИ б‚аА бб‚аАаН аЕаПб–аЗаОаДб–аВ" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:15 msgid "Replace list on server with local subscriptions" msgstr "а—аАаМб–аНаИб‚аИ баПаИбаОаК аНаА баЕб€аВаЕб€б– аЛаОаКаАаЛбŒаНаИаМаИ аПб–аДаПаИбаКаАаМаИ" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:16 msgid "Device name:" msgstr "ааАаЗаВаА аПб€аИбб‚б€аОбŽ:" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:17 msgid "gpodder.net" msgstr "gpodder.net" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:18 msgid "Update interval:" msgstr "а†аНб‚аЕб€аВаАаЛ аОаНаОаВаЛаЕаНаНб:" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:19 msgid "Maximum number of episodes per podcast:" msgstr "аœаАаКбаИаМаАаЛбŒаНаА аКб–аЛбŒаКб–бб‚бŒ аЕаПб–аЗаОаДб–аВ аНаА аПаОаДаКаАбб‚:" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:20 msgid "When new episodes are found:" msgstr "аšаОаЛаИ аЗаНаАаЙаДаЕаНб– аНаОаВб– аЕаПб–аЗаОаДаИ:" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:21 msgid "Updating" msgstr "аžаНаОаВаЛбŽбŽ..." #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:22 msgid "Delete played episodes:" msgstr "а’аИаДаАаЛаИб‚аИ бб‚аАб€б– аЕаПб–аЗаОаДаИ:" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:23 #, fuzzy msgid "Remove played episodes even if unfinished" msgstr "а’аИаДаАаЛбб‚аИ аПб€аОбаЛбƒб…аАаНб– аЕаПб–аЗаОаДаИ аЗ аПб€аИбб‚б€аОбŽ" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:24 msgid "Also remove unplayed episodes" msgstr "аЂаАаКаОаЖ аВаИаДаАаЛаИб‚аИ аНаЕаВб–аДб‚аВаОб€аЕаНб– аЕаПб–аЗаОаДаИ" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:25 msgid "Clean-up" msgstr "аžб‡аИбб‚аИб‚аИ" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:26 msgid "Device type:" msgstr "аЂаИаП аПб€аИбб‚б€аОбŽ:" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:27 msgid "Mountpoint:" msgstr "аЂаОб‡аКаА аМаОаНб‚бƒаВаАаНаНб:" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:28 msgid "After syncing an episode:" msgstr "аŸб–баЛб баИаНб…б€аОаНб–аЗаАб†б–б— аЕаПб–аЗаОаДбƒ:" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:29 #, fuzzy msgid "Create playlists on device" msgstr "а—аАаМб–аНаИб‚аИ баПаИбаОаК аЗаАаВаАаНб‚аАаЖаЕаНаНб аНаА баЕб€аВаЕб€б–" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:30 #, fuzzy msgid "Playlists Folder:" msgstr "ааАаЗаВаА баПаИбаКбƒ аЕаПб–аЗаОаДб–аВ:" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:31 msgid "Remove episodes deleted on device from gPodder" msgstr "" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:32 msgid "Only sync unplayed episodes" msgstr "аЁаИаНб…б€аОаНб–аЗбƒаВаАб‚аИ аЛаИбˆаЕ аНаЕаПб€аОбаЛбƒб…аАаНб– аЕаПб–аЗаОаДаИ" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:33 msgid "Devices" msgstr "аŸб€аИбб‚б€аОб—" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:34 msgid "Edit config" msgstr "а аЕаДаАаГбƒаВаАб‚аИ аНаАаЛаАбˆб‚бƒаВаАаНаНб" #: share/gpodder/ui/gtk/gpodder.ui.h:1 msgid "_Podcasts" msgstr "аŸаОаДаКаАбб‚аИ" #: share/gpodder/ui/gtk/gpodder.ui.h:2 msgid "Check for new episodes" msgstr "аŸаЕб€аЕаВб–б€аИб‚аИ аНаАбаВаНб–бб‚бŒ аНаОаВаИб… аЕаПб–аЗаОаДб–аВ" #: share/gpodder/ui/gtk/gpodder.ui.h:3 msgid "Download new episodes" msgstr "а—аАаВаАаНб‚аАаЖаИб‚аИ аНаОаВб– аЕаПб–аЗаОаДаИ" #: share/gpodder/ui/gtk/gpodder.ui.h:7 msgid "_Subscriptions" msgstr "_аŸб–аДаПаИбаКаИ" #: share/gpodder/ui/gtk/gpodder.ui.h:8 msgid "Discover new podcasts" msgstr "а—аНаАаЙб‚аИ аНаОаВб– аПаОаДаКаАбб‚аИ" #: share/gpodder/ui/gtk/gpodder.ui.h:9 msgid "Add podcast via URL" msgstr "а”аОаДаАб‚аИ аПаОаДаКаАбб‚ аЗаА аПаОбаИаЛаАаНаНбаМ" #: share/gpodder/ui/gtk/gpodder.ui.h:11 msgid "Unsubscribe" msgstr "а’б–аДаПаИбаАб‚аИбб" #: share/gpodder/ui/gtk/gpodder.ui.h:14 msgid "Import from OPML file" msgstr "а†аМаПаОб€б‚бƒаВаАб‚аИ аЗ OPML-б„аАаЙаЛбƒ" #: share/gpodder/ui/gtk/gpodder.ui.h:15 msgid "Export to OPML file" msgstr "а•аКбаПаОб€б‚бƒаВаАб‚аИ аДаО OPML-б„аАаЙаЛбƒ" #: share/gpodder/ui/gtk/gpodder.ui.h:16 msgid "Go to gpodder.net" msgstr "аŸаЕб€аЕаЙб‚аИ аНаА gpodder.org" #: share/gpodder/ui/gtk/gpodder.ui.h:17 msgid "_Episodes" msgstr "_а•аПб–аЗаОаДаИ" #: share/gpodder/ui/gtk/gpodder.ui.h:18 msgid "Play" msgstr "аЁаЛбƒб…аАб‚аИ" #: share/gpodder/ui/gtk/gpodder.ui.h:19 msgid "Open" msgstr "а’б–аДаКб€аИб‚аИ" #: share/gpodder/ui/gtk/gpodder.ui.h:22 msgid "Delete" msgstr "а’аИаДаАаЛаИб‚аИ" #: share/gpodder/ui/gtk/gpodder.ui.h:23 msgid "Toggle new status" msgstr "" #: share/gpodder/ui/gtk/gpodder.ui.h:24 msgid "Change delete lock" msgstr "а—аМб–аНаИб‚аИ аБаЛаОаКбƒаВаАаНаНб аДаЛб аВаИаДаАаЛаЕаНаНб" #: share/gpodder/ui/gtk/gpodder.ui.h:26 msgid "E_xtras" msgstr "" #: share/gpodder/ui/gtk/gpodder.ui.h:27 #, fuzzy msgid "Sync to device" msgstr "аЁаИаНб…б€аОаНб–аЗбƒбŽ аЗ аПб€аИбб‚б€аОб”аМ" #: share/gpodder/ui/gtk/gpodder.ui.h:28 #, fuzzy msgid "Update YouTube subscriptions" msgstr "ааЕаМаАб” аПб–аДаПаИбаОаК" #: share/gpodder/ui/gtk/gpodder.ui.h:29 msgid "_View" msgstr "_а’аИаГаЛбаД" #: share/gpodder/ui/gtk/gpodder.ui.h:30 #, fuzzy msgid "Toolbar" msgstr "аŸаОаКаАаЗаАб‚аИ аПаАаНаЕаЛбŒ б–аНбб‚б€бƒаМаЕаНб‚б–аВ" #: share/gpodder/ui/gtk/gpodder.ui.h:31 msgid "Episode descriptions" msgstr "аžаПаИб аЕаПб–аЗаОаДбƒ" #: share/gpodder/ui/gtk/gpodder.ui.h:33 msgid "Hide deleted episodes" msgstr "аŸб€аИб…аОаВаАб‚аИ аВаИаДаАаЛаЕаНб– аЕаПб–аЗаОаДаИ" #: share/gpodder/ui/gtk/gpodder.ui.h:34 msgid "Downloaded episodes" msgstr "а—аАаВаАаНб‚аАаЖаЕаНб– аЕаПб–аЗаОаДаИ" #: share/gpodder/ui/gtk/gpodder.ui.h:35 msgid "Unplayed episodes" msgstr "ааЕаПб€аОбаЛбƒб…аАаНб– аЕаПб–аЗаОаДаИ" #: share/gpodder/ui/gtk/gpodder.ui.h:36 msgid "Hide podcasts without episodes" msgstr "аЅаОаВаАб‚аИ аПаОаДаКаАбб‚аИ аБаЕаЗ аЕаПб–аЗаОаДб–аВ" #: share/gpodder/ui/gtk/gpodder.ui.h:37 msgid "_Help" msgstr "_а”аОаВб–аДаКаА" #: share/gpodder/ui/gtk/gpodder.ui.h:38 msgid "User manual" msgstr "а”аОаВб–аДаКаА аКаОб€аИбб‚бƒаВаАб‡аА" #: share/gpodder/ui/gtk/gpodder.ui.h:39 msgid "Software updates" msgstr "" #: share/gpodder/ui/gtk/gpodder.ui.h:40 msgid "Filter:" msgstr "аЄб–аЛбŒб‚б€:" #: share/gpodder/ui/gtk/gpodder.ui.h:41 msgid "Podcasts" msgstr "аŸаОаДаКаАбб‚аИ" #: share/gpodder/ui/gtk/gpodder.ui.h:42 msgid "Limit rate to" msgstr "аžаБаМаЕаЖаИб‚аИ бˆаВаИаДаКб–бб‚бŒ аЗаАаВаАаНб‚аАаЖаЕаНаНб аДаО:" #: share/gpodder/ui/gtk/gpodder.ui.h:43 msgid "KiB/s" msgstr "аšб–а‘/б" #: share/gpodder/ui/gtk/gpodder.ui.h:44 msgid "Limit downloads to" msgstr "аžаБаМаЕаЖаИб‚аИ аКб–аЛбŒаКб–бб‚бŒ аОаДаНаОб‡аАбаНаИб… аЗаАаВаАаНб‚аАаЖаЕаНбŒ аДаО:" #: share/gpodder/ui/gtk/gpodderwelcome.ui.h:2 #, fuzzy msgid "Welcome to gPodder" msgstr "gPodder аВб–б‚аАб” а’аАб!" #: share/gpodder/ui/gtk/gpodderwelcome.ui.h:3 #, fuzzy msgid "Your podcast list is empty." msgstr "а’аАбˆ баПаИбаОаК аПб–аДаПаИбаОаК аПбƒбб‚аИаЙ." #: share/gpodder/ui/gtk/gpodderwelcome.ui.h:4 msgid "Choose from a list of example podcasts" msgstr "аžаБб€аАб‚аИ аПаОаДаКаАбб‚ аЗб– баПаИбаКбƒ аПаОаДаКаАбб‚б–аВ-аПб€аИаКаЛаАаДб–аВ" #: share/gpodder/ui/gtk/gpodderwelcome.ui.h:5 #, fuzzy msgid "Add a podcast by entering its URL" msgstr "а”аОаДаАб‚аИ аПаОаДаКаАбб‚ аЗаА аПаОбаИаЛаАаНаНбаМ" #: share/gpodder/ui/gtk/gpodderwelcome.ui.h:6 #, fuzzy msgid "Restore my subscriptions from gpodder.net" msgstr "а—аАаВаАаНб‚аАаЖаИб‚аИ аПб–аДаПаИбаКаИ аЗ my.gpodder.org" #: bin/gpo:266 #, fuzzy msgid "Podcast update requested by extensions." msgstr "аŸаОаДаКаАбб‚ аВаИаМаАаГаАб” аАбƒб‚аЕаНб‚аИб„б–аКаАб†б–б—" #: bin/gpo:270 msgid "Episode download requested by extensions." msgstr "" #: bin/gpo:323 #, python-format msgid "Invalid url: %s" msgstr "" #: bin/gpo:340 bin/gpo:416 bin/gpo:450 bin/gpo:582 bin/gpo:597 bin/gpo:717 #, fuzzy, python-format msgid "You are not subscribed to %s." msgstr "а’аИ аВаЖаЕ аПб–аДаПаИбаАаНб– аНаА б†б– аПаОаДаКаАбб‚аИ:" #: bin/gpo:346 #, fuzzy, python-format msgid "Already subscribed to %s." msgstr "ааЕ аМаОаЖбƒ баИаНб…б€аОаНб–аЗбƒаВаАб‚аИббŒ аЗ iPod" #: bin/gpo:352 #, fuzzy, python-format msgid "Cannot subscribe to %s." msgstr "ааЕ аМаОаЖбƒ баИаНб…б€аОаНб–аЗбƒаВаАб‚аИббŒ аЗ iPod" #: bin/gpo:368 #, python-format msgid "Successfully added %s." msgstr "" #: bin/gpo:386 msgid "This configuration option does not exist." msgstr "" #: bin/gpo:390 msgid "Can only set leaf configuration nodes." msgstr "" #: bin/gpo:404 #, python-format msgid "Renamed %(old_title)s to %(new_title)s." msgstr "" #: bin/gpo:420 #, fuzzy, python-format msgid "Unsubscribed from %s." msgstr "а’б–аДаПаИбаАб‚аИбб" #: bin/gpo:494 #, fuzzy msgid "Updates disabled" msgstr "аžаНаОаВаИб‚аИ аОаБб€аАаНб–" #: bin/gpo:505 #, python-format msgid "%(count)d new episode" msgid_plural "%(count)d new episodes" msgstr[0] "%(count)d аНаОаВаИаЙ аЕаПб–аЗаОаД" msgstr[1] "%(count)d аНаОаВаИб… аЕаПб–аЗаОаДаИ" msgstr[2] "%(count)d аНаОаВаИб… аЕаПб–аЗаОаДб–аВ" #: bin/gpo:511 #, fuzzy msgid "Checking for new episodes" msgstr "аŸаЕб€аЕаВб–б€ббŽ аНаА аНаАбаВаНб–бб‚бŒ аНаОаВаИб… аЕаПб–аЗаОаДб–аВ..." #: bin/gpo:520 #, fuzzy, python-format msgid "Skipping %(podcast)s" msgstr "аŸб€аОаПбƒбаКаАбŽ аПаОаДаКаАбб‚: %s" #: bin/gpo:588 #, python-format msgid "Disabling feed update from %s." msgstr "" #: bin/gpo:603 #, fuzzy, python-format msgid "Enabling feed update from %s." msgstr "аЇаИб‚аАбŽ б„аАаЙаЛаИ аЗ %s" #: bin/gpo:616 #, python-format msgid "Please register a YouTube API key and set it using %(command)s." msgstr "" #: bin/gpo:643 #, python-format msgid "Changing: %(old_url)s => %(new_url)s" msgstr "" #: bin/gpo:653 #, fuzzy msgid "Nothing to fix" msgstr "ааЕаМаАб” б‡аОаГаО аЕаКбаПаОб€б‚бƒаВаАб‚аИ" #: bin/gpo:672 #, fuzzy msgid "No podcasts found." msgstr "ааЕ аЗаНаАаЙаДаЕаНаО аЖаОаДаНаИб… аПаОб‚аОаКб–аВ" #: bin/gpo:686 msgid "Enter index to subscribe, ? for list" msgstr "" #: bin/gpo:700 bin/gpo:704 msgid "Invalid value." msgstr "" #: bin/gpo:721 #, python-format msgid "Invalid URL: %s" msgstr "" #: bin/gpo:724 #, python-format msgid "Changed URL from %(old_url)s to %(new_url)s." msgstr "" #: bin/gpo:782 #, python-format msgid "Syntax error: %(error)s" msgstr "" #: bin/gpo:876 msgid "Ambiguous command. Did you mean.." msgstr "" #: bin/gpo:880 #, fuzzy msgid "The requested function is not available." msgstr "аІб б„бƒаНаКб†б–б аНаЕаДаОбб‚бƒаПаНаА аДаЛб iPod'б–аВ." #: bin/gpodder:105 #, fuzzy msgid "print logging output on the console" msgstr "а’аИаВаОаДаИб‚аИ аНаАаЛаАаГаОаДаЖаЕаНаНб б‡аЕб€аЕаЗ stdout" #: bin/gpodder:108 #, fuzzy msgid "subscribe to the feed at URL" msgstr "аŸб–аДаПаИбаАб‚аИббŒ аНаА аКаАаНаАаЛ б‡аЕб€аЕаЗ аПаОбаИаЛаАаНаНб" #: bin/gpodder:113 msgid "Mac OS X application process number" msgstr "" #: share/applications/gpodder.desktop.in.h:2 #, fuzzy msgid "gPodder Podcast Client" msgstr "а аЕаДаАаКб‚аОб€ аПаОаДаКаАбб‚б–аВ gPodder" #: share/applications/gpodder.desktop.in.h:3 #, fuzzy msgid "Podcast Client" msgstr "аЁаПаИбаОаК аПаОаДаКаАбб‚б–аВ" #: share/applications/gpodder.desktop.in.h:4 msgid "Subscribe to audio and video content from the web" msgstr "" #: share/applications/gpodder-url-handler.desktop.in.h:1 #, fuzzy msgid "gPodder (subscribe to feed)" msgstr "аŸб–аДаПаИбаАб‚аИббŒ аНаА аКаАаНаАаЛ б‡аЕб€аЕаЗ аПаОбаИаЛаАаНаНб" gpodder-3.9.0/po/zh_CN.po0000644000016000001710000014202212654461626016255 0ustar jenkinsjenkins00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # # Translators: # , 2012. # luojie , 2011. msgid "" msgstr "" "Project-Id-Version: gPodder\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2016-02-03 20:31+0000\n" "PO-Revision-Date: 2013-01-19 12:31+0000\n" "Last-Translator: Thomas Perl \n" "Language-Team: Chinese (China) (http://www.transifex.com/projects/p/gpodder/" "language/zh_CN/)\n" "Language: zh_CN\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" #: src/gpodder/config.py:55 #, python-format msgid "gPodder on %s" msgstr "gPodder хœЈ %s" #: src/gpodder/directory.py:95 #, fuzzy msgid "gpodder.net search" msgstr "gpodder.netщЉБхŠЈ" #: src/gpodder/directory.py:104 msgid "OPML from web" msgstr "" #: src/gpodder/directory.py:113 msgid "OPML file" msgstr "" #: src/gpodder/directory.py:122 share/gpodder/ui/gtk/gpodderwelcome.ui.h:1 #, fuzzy msgid "Getting started" msgstr "фН•ц­Ђ" #: src/gpodder/directory.py:131 #, fuzzy msgid "gpodder.net Top 50" msgstr "gpodder.netщЉБхŠЈ" #: src/gpodder/directory.py:140 #, fuzzy msgid "gpodder.net Tags" msgstr "gpodder.netщЉБхŠЈ" #: src/gpodder/directory.py:152 msgid "Soundcloud search" msgstr "" #: src/gpodder/directory.py:165 msgid "Imported OPML file" msgstr "" #: src/gpodder/download.py:329 msgid "Wrong username/password" msgstr "щ”™шЏЏчš„ ч”ЈцˆЗх/хЏ†ч " #: src/gpodder/download.py:527 src/gpodder/sync.py:924 msgid "Added" msgstr "хЗВцЗЛхŠ " #: src/gpodder/download.py:527 src/gpodder/sync.py:924 msgid "Queued" msgstr "хЗВх…ЅхК" #: src/gpodder/download.py:527 src/gpodder/gtkui/model.py:327 msgid "Downloading" msgstr "фИ‹шННфИ­" #: src/gpodder/download.py:528 src/gpodder/model.py:721 #: src/gpodder/sync.py:925 msgid "Finished" msgstr "хЗВхЎŒцˆ" #: src/gpodder/download.py:528 src/gpodder/sync.py:925 msgid "Failed" msgstr "хЄБшДЅ" #: src/gpodder/download.py:528 src/gpodder/sync.py:925 msgid "Cancelled" msgstr "х–цЖˆ" #: src/gpodder/download.py:528 src/gpodder/sync.py:925 msgid "Paused" msgstr "цš‚хœ" #: src/gpodder/download.py:862 msgid "Missing content from server" msgstr "цœхŠЁчЋЏчМКхЄБх†…хЎЙ" #: src/gpodder/download.py:868 #, python-format msgid "I/O Error: %(error)s: %(filename)s" msgstr "I/Oщ”™шЏЏ %(error)s: %(filename)s" #: src/gpodder/download.py:875 #, python-format msgid "HTTP Error %(code)s: %(message)s" msgstr "HTTPщ”™шЏЏ %(code)s: %(message)s" #: src/gpodder/download.py:879 src/gpodder/sync.py:1081 #, python-format msgid "Error: %s" msgstr "щ”™шЏЏ %s" #: src/gpodder/extensions.py:55 msgid "Desktop Integration" msgstr "" #: src/gpodder/extensions.py:56 #, fuzzy msgid "Interface" msgstr "ц•Дхž‹" #: src/gpodder/extensions.py:57 #, fuzzy msgid "Post download" msgstr "цИ…чЉКщ€‰ц‹Љ" #: src/gpodder/extensions.py:59 src/gpodder/model.py:779 #: src/gpodder/model.py:1225 msgid "Other" msgstr "х…ЖфЛ–" #: src/gpodder/extensions.py:100 msgid "No description for this extension." msgstr "" #: src/gpodder/extensions.py:212 #, python-format msgid "Command not found: %(command)s" msgstr "" #: src/gpodder/extensions.py:228 #, python-format msgid "Need at least one of the following commands: %(list_of_commands)s" msgstr "" #: src/gpodder/extensions.py:265 #, python-format msgid "Python module not found: %(module)s" msgstr "" #: src/gpodder/model.py:446 src/gpodder/plugins/soundcloud.py:156 msgid "No description available" msgstr "ц— фЛ‹чЛ" #: src/gpodder/model.py:679 msgid "unknown" msgstr "цœЊчŸЅ" #: src/gpodder/model.py:746 msgid "Default" msgstr "" #: src/gpodder/model.py:747 msgid "Only keep latest" msgstr "" #: src/gpodder/model.py:1208 src/gpodder/model.py:1223 #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:10 msgid "Video" msgstr "шЇ†щЂ‘" #: src/gpodder/model.py:1221 msgid "Audio" msgstr "щŸГщЂ‘" #: src/gpodder/my.py:174 #, python-format msgid "Add %s" msgstr "цЗЛхŠ  %s" #: src/gpodder/my.py:176 #, python-format msgid "Remove %s" msgstr "чЇЛщ™Є %s" #: src/gpodder/sync.py:196 #, fuzzy msgid "Cancelled by user" msgstr "х–цЖˆ" #: src/gpodder/sync.py:199 msgid "Writing data to disk" msgstr "" #: src/gpodder/sync.py:295 msgid "Opening iPod database" msgstr "" #: src/gpodder/sync.py:305 #, fuzzy msgid "iPod opened" msgstr "ц‰“хМ€шП‡чš„" #: src/gpodder/sync.py:316 msgid "Saving iPod database" msgstr "" #: src/gpodder/sync.py:321 msgid "Writing extended gtkpod database" msgstr "" #: src/gpodder/sync.py:397 src/gpodder/sync.py:680 src/gpodder/sync.py:874 #, fuzzy, python-format msgid "Removing %s" msgstr "чЇЛщ™Є %s" #: src/gpodder/sync.py:412 src/gpodder/sync.py:557 #, fuzzy, python-format msgid "Adding %s" msgstr "цЗЛхŠ ц’­хЎЂ..." #: src/gpodder/sync.py:430 #, python-format msgid "Error copying %(episode)s: Not enough free space on %(mountpoint)s" msgstr "" #: src/gpodder/sync.py:515 #, fuzzy msgid "Opening MP3 player" msgstr "ц‰“хМ€ц’­ц”Ох™Јщ”™шЏЏ" #: src/gpodder/sync.py:518 #, fuzzy msgid "MP3 player opened" msgstr "фЛŽцœЊц‰“хМ€чš„" #: src/gpodder/sync.py:576 #, python-format msgid "" "Not enough space in %(path)s: %(free)s available, but need at least %(need)s" msgstr "" #: src/gpodder/sync.py:603 src/gpodder/sync.py:611 #, fuzzy, python-format msgid "Error opening %(filename)s: %(message)s" msgstr "HTTPщ”™шЏЏ %(code)s: %(message)s" #: src/gpodder/sync.py:780 src/gpodder/sync.py:786 msgid "MTP device" msgstr "" #: src/gpodder/sync.py:793 msgid "Opening the MTP device" msgstr "" #: src/gpodder/sync.py:803 #, fuzzy, python-format msgid "%s opened" msgstr "ц‰“хМ€шП‡чš„" #: src/gpodder/sync.py:808 #, python-format msgid "Closing %s" msgstr "" #: src/gpodder/sync.py:816 #, python-format msgid "%s closed" msgstr "" #: src/gpodder/sync.py:821 bin/gpo:708 #, fuzzy, python-format msgid "Adding %s..." msgstr "цЗЛхŠ ц’­хЎЂ..." #: src/gpodder/sync.py:924 msgid "Synchronizing" msgstr "" #: src/gpodder/util.py:429 #, python-format msgid "%(count)d day ago" msgid_plural "%(count)d days ago" msgstr[0] "%(count)d ц—ЅфЙ‹х‰" #: src/gpodder/util.py:508 msgid "Today" msgstr "фЛŠц—Ѕ" #: src/gpodder/util.py:510 msgid "Yesterday" msgstr "ц˜Јц—Ѕ" #: src/gpodder/util.py:553 src/gpodder/util.py:556 msgid "(unknown)" msgstr "(фИц˜Ž)" #: src/gpodder/util.py:1193 src/gpodder/util.py:1212 #, python-format msgid "%(count)d second" msgid_plural "%(count)d seconds" msgstr[0] "%(count)d чЇ’" #: src/gpodder/util.py:1206 #, python-format msgid "%(count)d hour" msgid_plural "%(count)d hours" msgstr[0] "%(count)d хАц—Ж" #: src/gpodder/util.py:1209 #, python-format msgid "%(count)d minute" msgid_plural "%(count)d minutes" msgstr[0] "%(count)d хˆ†" #: src/gpodder/util.py:1215 msgid "and" msgstr " " #: src/gpodder/gtkui/config.py:50 msgid "Integer" msgstr "ц•Дхž‹" #: src/gpodder/gtkui/config.py:52 msgid "Float" msgstr "цЕЎч‚Й" #: src/gpodder/gtkui/config.py:54 msgid "Boolean" msgstr "хИƒфМІ" #: src/gpodder/gtkui/config.py:56 msgid "String" msgstr "х­—чЌІфИВ" #: src/gpodder/gtkui/desktopfile.py:70 #, python-format msgid "Command: %s" msgstr "х‘НфЛЄяМš %s" #: src/gpodder/gtkui/desktopfile.py:150 msgid "Default application" msgstr "щ˘шЎЄхК”ч”ЈчЈ‹хК" #: src/gpodder/gtkui/main.py:205 share/applications/gpodder.desktop.in.h:1 msgid "gPodder" msgstr "gPodder" #: src/gpodder/gtkui/main.py:288 msgid "Loading incomplete downloads" msgstr "шЏЛх–цœЊхЎŒцˆчš„фИ‹шНН" #: src/gpodder/gtkui/main.py:289 msgid "Some episodes have not finished downloading in a previous session." msgstr "фИŠфИ€цЌЁяМŒцœ‰фК›ч‰‡цЎЕцœЊхЎŒцˆфИ‹шННу€‚" #: src/gpodder/gtkui/main.py:291 #, python-format msgid "%(count)d partial file" msgid_plural "%(count)d partial files" msgstr[0] "%(count)d фИЊфИхЎŒц•Дц–‡фЛЖ" #: src/gpodder/gtkui/main.py:306 msgid "Resume all" msgstr "х…ЈщƒЈхЏхŠЈ" #: src/gpodder/gtkui/main.py:316 msgid "Incomplete downloads from a previous session were found." msgstr "х‘чŽАфИŠфИ€цЌЁч•™фИ‹чš„цœЊхЎŒцˆфИ‹шНН" #: src/gpodder/gtkui/main.py:414 msgid "Action" msgstr "цŒ‡фЛЄ" #: src/gpodder/gtkui/main.py:461 msgid "Confirm changes from gpodder.net" msgstr "шЏхЎžgpodder.netчš„х˜хŠЈ" #: src/gpodder/gtkui/main.py:462 msgid "Select the actions you want to carry out." msgstr "щ€‰ц‹ЉцƒГшІц‰ЇшЁŒчš„цŒ‡фЛЄ" #: src/gpodder/gtkui/main.py:502 msgid "Uploading subscriptions" msgstr "фИŠфМ шЎЂщ˜…щЁЙч›Ў" #: src/gpodder/gtkui/main.py:503 msgid "Your subscriptions are being uploaded to the server." msgstr "шЎЂщ˜…чš„шЎЁхˆ’хЗВчЛфИŠфМ хˆАцœхŠЁх™Ј" #: src/gpodder/gtkui/main.py:508 msgid "List uploaded successfully." msgstr "хˆ—шЁЈфИŠфМ цˆхŠŸ" #: src/gpodder/gtkui/main.py:515 msgid "Error while uploading" msgstr "фИŠфМ щ”™шЏЏ" #: src/gpodder/gtkui/main.py:800 src/gpodder/gtkui/main.py:928 #: src/gpodder/gtkui/main.py:2622 src/gpodder/gtkui/main.py:2815 #: src/gpodder/gtkui/desktop/episodeselector.py:132 #: src/gpodder/gtkui/desktop/sync.py:270 msgid "Episode" msgstr "ч‰‡цЎЕ" #: src/gpodder/gtkui/main.py:819 msgid "Size" msgstr "хЄЇхА" #: src/gpodder/gtkui/main.py:824 msgid "Duration" msgstr "ц—Жщ—Дщ•ПхКІ" #: src/gpodder/gtkui/main.py:828 msgid "Released" msgstr "х‘хИƒц—Жщ—Д" #: src/gpodder/gtkui/main.py:855 msgid "Visible columns" msgstr "хЏшЇхˆ—" #: src/gpodder/gtkui/main.py:948 src/gpodder/gtkui/main.py:1108 #: share/gpodder/ui/gtk/gpodder.ui.h:45 msgid "Progress" msgstr "шП›хКІ" #: src/gpodder/gtkui/main.py:982 msgid "Loading episodes" msgstr "шЏЛх–ч‰‡цЎЕфПЁцЏ" #: src/gpodder/gtkui/main.py:985 msgid "No episodes in current view" msgstr "хН“х‰шЇ†х›Оц— ч‰‡цЎЕ" #: src/gpodder/gtkui/main.py:987 msgid "No episodes available" msgstr "цВЁцœ‰хЏч”Јчš„ч‰‡цЎЕ" #: src/gpodder/gtkui/main.py:993 msgid "No podcasts in this view" msgstr "ц­ЄшЇ†х›Оц— ч‰‡цЎЕ" #: src/gpodder/gtkui/main.py:995 msgid "No subscriptions" msgstr "" #: src/gpodder/gtkui/main.py:997 msgid "No active tasks" msgstr "" #: src/gpodder/gtkui/main.py:1112 src/gpodder/gtkui/main.py:1114 #, python-format msgid "%(count)d active" msgid_plural "%(count)d active" msgstr[0] "" #: src/gpodder/gtkui/main.py:1116 #, python-format msgid "%(count)d failed" msgid_plural "%(count)d failed" msgstr[0] "" #: src/gpodder/gtkui/main.py:1118 #, python-format msgid "%(count)d queued" msgid_plural "%(count)d queued" msgstr[0] "" #: src/gpodder/gtkui/main.py:1132 #, python-format msgid "downloading %(count)d file" msgid_plural "downloading %(count)d files" msgstr[0] "" #: src/gpodder/gtkui/main.py:1142 #, python-format msgid "synchronizing %(count)d file" msgid_plural "synchronizing %(count)d files" msgstr[0] "" #: src/gpodder/gtkui/main.py:1144 #, python-format msgid "%(queued)d task queued" msgid_plural "%(queued)d tasks queued" msgstr[0] "" #: src/gpodder/gtkui/main.py:1168 msgid "Please report this problem and restart gPodder:" msgstr "" #: src/gpodder/gtkui/main.py:1168 msgid "Unhandled exception" msgstr "" #: src/gpodder/gtkui/main.py:1235 #, python-format msgid "Feedparser error: %s" msgstr "" #: src/gpodder/gtkui/main.py:1371 #, fuzzy msgid "Could not download some episodes:" msgstr "фИ‹шННчš„ч‰‡цЎЕ" #: src/gpodder/gtkui/main.py:1373 src/gpodder/gtkui/main.py:1376 msgid "Downloads finished" msgstr "фИ‹шННхЎŒцˆ" #: src/gpodder/gtkui/main.py:1379 msgid "Downloads failed" msgstr "фИ‹шННхЄБшДЅ" #: src/gpodder/gtkui/main.py:1383 #, fuzzy msgid "Could not sync some episodes:" msgstr "%(count)d чЇ’" #: src/gpodder/gtkui/main.py:1385 src/gpodder/gtkui/main.py:1388 msgid "Device synchronization finished" msgstr "" #: src/gpodder/gtkui/main.py:1391 msgid "Device synchronization failed" msgstr "" #: src/gpodder/gtkui/main.py:1434 #, python-format msgid "%(count)d more episode" msgid_plural "%(count)d more episodes" msgstr[0] "" #: src/gpodder/gtkui/main.py:1508 msgid "Start download now" msgstr "хМ€хЇ‹фИ‹шНН" #: src/gpodder/gtkui/main.py:1510 src/gpodder/gtkui/main.py:1719 #: src/gpodder/gtkui/desktop/episodeselector.py:144 #: share/gpodder/ui/gtk/gpodder.ui.h:20 msgid "Download" msgstr "фИ‹шНН" #: src/gpodder/gtkui/main.py:1511 share/gpodder/ui/gtk/gpodder.ui.h:21 msgid "Cancel" msgstr "х–цЖˆ" #: src/gpodder/gtkui/main.py:1512 msgid "Pause" msgstr "цš‚хœ" #: src/gpodder/gtkui/main.py:1514 msgid "Remove from list" msgstr "фЛŽхˆ—шЁЈфИ­чЇЛщ™Є" #: src/gpodder/gtkui/main.py:1553 share/gpodder/ui/gtk/gpodder.ui.h:13 msgid "Update podcast" msgstr "ц›Дц–Ац’­хЎЂ" #: src/gpodder/gtkui/main.py:1560 #, fuzzy msgid "Open download folder" msgstr "фИ‹шННчš„ц–‡фЛЖ" #: src/gpodder/gtkui/main.py:1566 msgid "Mark episodes as old" msgstr "ц ‡шЎАч‰‡цЎЕфИКц—Ї" #: src/gpodder/gtkui/main.py:1570 src/gpodder/gtkui/main.py:1778 msgid "Archive" msgstr "ц”Жш—" #: src/gpodder/gtkui/main.py:1575 msgid "Remove podcast" msgstr "чЇЛщ™Єц’­хЎЂ" #: src/gpodder/gtkui/main.py:1590 share/gpodder/ui/gtk/gpodder.ui.h:10 msgid "Podcast settings" msgstr "" #: src/gpodder/gtkui/main.py:1650 msgid "Error converting file." msgstr "шНЌцЂц–‡фЛЖщ”™шЏЏ" #: src/gpodder/gtkui/main.py:1650 msgid "Bluetooth file transfer" msgstr "ш“ч‰™ц–‡фЛЖфМ шО“" #: src/gpodder/gtkui/main.py:1709 msgid "Preview" msgstr "щЂ„шЇˆ" #: src/gpodder/gtkui/main.py:1711 msgid "Stream" msgstr "цЕхЊ’фН“" #: src/gpodder/gtkui/main.py:1755 msgid "Send to" msgstr "х‘щ€ш‡Г" #: src/gpodder/gtkui/main.py:1757 msgid "Local folder" msgstr "цœЌхœАц–‡фЛЖхЄЙ" #: src/gpodder/gtkui/main.py:1762 msgid "Bluetooth device" msgstr "ш“ч‰™шЎОхЄ‡" #: src/gpodder/gtkui/main.py:1769 msgid "New" msgstr "ц–А" #: src/gpodder/gtkui/main.py:1785 share/gpodder/ui/gtk/gpodder.ui.h:25 msgid "Episode details" msgstr "ч‰‡цЎЕчЛ†шŠ‚" #: src/gpodder/gtkui/main.py:1938 msgid "Please check your media player settings in the preferences dialog." msgstr "шЏЗхœЈщІ–щ€‰щЁЙхЏЙшЏцЁ†цЃ€цŸЅхЊ’фН“ц’­ц”Ох™ЈшЎОчНЎ" #: src/gpodder/gtkui/main.py:1939 msgid "Error opening player" msgstr "ц‰“хМ€ц’­ц”Ох™Јщ”™шЏЏ" #: src/gpodder/gtkui/main.py:2178 msgid "Adding podcasts" msgstr "цЗЛхŠ ц’­хЎЂ" #: src/gpodder/gtkui/main.py:2179 msgid "Please wait while episode information is downloaded." msgstr "" #: src/gpodder/gtkui/main.py:2186 msgid "Existing subscriptions skipped" msgstr "" #: src/gpodder/gtkui/main.py:2187 msgid "You are already subscribed to these podcasts:" msgstr "" #: src/gpodder/gtkui/main.py:2195 msgid "Podcast requires authentication" msgstr "" #: src/gpodder/gtkui/main.py:2196 #, python-format msgid "Please login to %s:" msgstr "" #: src/gpodder/gtkui/main.py:2204 src/gpodder/gtkui/main.py:2299 msgid "Authentication failed" msgstr "" #: src/gpodder/gtkui/main.py:2210 msgid "Website redirection detected" msgstr "" #: src/gpodder/gtkui/main.py:2211 #, python-format msgid "The URL %(url)s redirects to %(target)s." msgstr "" #: src/gpodder/gtkui/main.py:2212 msgid "Do you want to visit the website now?" msgstr "" #: src/gpodder/gtkui/main.py:2221 msgid "Could not add some podcasts" msgstr "" #: src/gpodder/gtkui/main.py:2222 msgid "Some podcasts could not be added to your list:" msgstr "" #: src/gpodder/gtkui/main.py:2224 msgid "Unknown" msgstr "" #: src/gpodder/gtkui/main.py:2308 msgid "Redirection detected" msgstr "" #: src/gpodder/gtkui/main.py:2342 msgid "Merging episode actions" msgstr "" #: src/gpodder/gtkui/main.py:2343 msgid "Episode actions from gpodder.net are merged." msgstr "" #: src/gpodder/gtkui/main.py:2368 msgid "Cancelling..." msgstr "" #: src/gpodder/gtkui/main.py:2377 msgid "Please connect to a network, then try again." msgstr "" #: src/gpodder/gtkui/main.py:2378 #, fuzzy msgid "No network connection" msgstr "ц— фЛ‹чЛ" #: src/gpodder/gtkui/main.py:2399 #, python-format msgid "Updating %(count)d feed..." msgid_plural "Updating %(count)d feeds..." msgstr[0] "" #: src/gpodder/gtkui/main.py:2417 #, python-format msgid "Error while updating %(url)s: %(message)s" msgstr "" #: src/gpodder/gtkui/main.py:2419 #, python-format msgid "The feed at %(url)s could not be updated." msgstr "" #: src/gpodder/gtkui/main.py:2420 msgid "Error while updating feed" msgstr "" #: src/gpodder/gtkui/main.py:2435 #, python-format msgid "Updated %(podcast)s (%(position)d/%(total)d)" msgstr "" #: src/gpodder/gtkui/main.py:2466 msgid "No new episodes" msgstr "" #: src/gpodder/gtkui/main.py:2479 #, python-format msgid "Downloading %(count)d new episode." msgid_plural "Downloading %(count)d new episodes." msgstr[0] "" #: src/gpodder/gtkui/main.py:2480 src/gpodder/gtkui/main.py:2484 #: src/gpodder/gtkui/main.py:2833 msgid "New episodes available" msgstr "" #: src/gpodder/gtkui/main.py:2483 #, python-format msgid "%(count)d new episode added to download list." msgid_plural "%(count)d new episodes added to download list." msgstr[0] "" #: src/gpodder/gtkui/main.py:2490 #, python-format msgid "%(count)d new episode available" msgid_plural "%(count)d new episodes available" msgstr[0] "" #: src/gpodder/gtkui/main.py:2509 msgid "Quit gPodder" msgstr "" #: src/gpodder/gtkui/main.py:2510 msgid "" "You are downloading episodes. You can resume downloads the next time you " "start gPodder. Do you want to quit now?" msgstr "" #: src/gpodder/gtkui/main.py:2559 msgid "Episodes are locked" msgstr "" #: src/gpodder/gtkui/main.py:2560 msgid "" "The selected episodes are locked. Please unlock the episodes that you want " "to delete before trying to delete them." msgstr "" #: src/gpodder/gtkui/main.py:2565 #, python-format msgid "Delete %(count)d episode?" msgid_plural "Delete %(count)d episodes?" msgstr[0] "" #: src/gpodder/gtkui/main.py:2566 msgid "Deleting episodes removes downloaded files." msgstr "" #: src/gpodder/gtkui/main.py:2571 msgid "Deleting episodes" msgstr "" #: src/gpodder/gtkui/main.py:2572 msgid "Please wait while episodes are deleted" msgstr "" #: src/gpodder/gtkui/main.py:2625 #, python-format msgid "Select older than %(count)d day" msgid_plural "Select older than %(count)d days" msgstr[0] "" #: src/gpodder/gtkui/main.py:2627 msgid "Select played" msgstr "" #: src/gpodder/gtkui/main.py:2628 msgid "Select finished" msgstr "" #: src/gpodder/gtkui/main.py:2632 msgid "Select the episodes you want to delete:" msgstr "" #: src/gpodder/gtkui/main.py:2648 share/gpodder/ui/gtk/gpodder.ui.h:4 msgid "Delete episodes" msgstr "хˆ щ™Єч‰‡цЎЕ" #: src/gpodder/gtkui/main.py:2703 src/gpodder/gtkui/main.py:2934 #: src/gpodder/gtkui/main.py:3034 msgid "No podcast selected" msgstr "" #: src/gpodder/gtkui/main.py:2704 msgid "Please select a podcast in the podcasts list to update." msgstr "" #: src/gpodder/gtkui/main.py:2774 #, python-format msgid "Download error while downloading %(episode)s: %(message)s" msgstr "" #: src/gpodder/gtkui/main.py:2775 msgid "Download error" msgstr "фИ‹шННщ”™шЏЏ" #: src/gpodder/gtkui/main.py:2818 msgid "Select the episodes you want to download:" msgstr "" #: src/gpodder/gtkui/main.py:2841 msgid "Mark as old" msgstr "" #: src/gpodder/gtkui/main.py:2848 msgid "Please check for new episodes later." msgstr "" #: src/gpodder/gtkui/main.py:2849 msgid "No new episodes available" msgstr "" #: src/gpodder/gtkui/main.py:2900 msgid "Login to gpodder.net" msgstr "ч™ЛхН• gpodder.net" #: src/gpodder/gtkui/main.py:2901 msgid "Please login to download your subscriptions." msgstr "" #: src/gpodder/gtkui/main.py:2916 msgid "Subscriptions on gpodder.net" msgstr "" #: src/gpodder/gtkui/main.py:2935 msgid "Please select a podcast in the podcasts list to edit." msgstr "" #: src/gpodder/gtkui/main.py:2949 msgid "Podcast" msgstr "" #: src/gpodder/gtkui/main.py:2955 share/gpodder/ui/gtk/gpodder.ui.h:12 msgid "Remove podcasts" msgstr "" #: src/gpodder/gtkui/main.py:2956 msgid "Select the podcast you want to remove." msgstr "" #: src/gpodder/gtkui/main.py:2960 #: src/gpodder/gtkui/desktop/episodeselector.py:105 msgid "Remove" msgstr "" #: src/gpodder/gtkui/main.py:2969 msgid "Removing podcast" msgstr "" #: src/gpodder/gtkui/main.py:2970 msgid "Please wait while the podcast is removed" msgstr "" #: src/gpodder/gtkui/main.py:2971 msgid "Do you really want to remove this podcast and its episodes?" msgstr "" #: src/gpodder/gtkui/main.py:2973 msgid "Removing podcasts" msgstr "" #: src/gpodder/gtkui/main.py:2974 msgid "Please wait while the podcasts are removed" msgstr "" #: src/gpodder/gtkui/main.py:2975 msgid "Do you really want to remove the selected podcasts and their episodes?" msgstr "" #: src/gpodder/gtkui/main.py:3035 msgid "Please select a podcast in the podcasts list to remove." msgstr "" #: src/gpodder/gtkui/main.py:3045 msgid "OPML files" msgstr "" #: src/gpodder/gtkui/main.py:3050 msgid "Import from OPML" msgstr "" #: src/gpodder/gtkui/main.py:3064 msgid "Import podcasts from OPML file" msgstr "" #: src/gpodder/gtkui/main.py:3071 msgid "Nothing to export" msgstr "" #: src/gpodder/gtkui/main.py:3072 msgid "" "Your list of podcast subscriptions is empty. Please subscribe to some " "podcasts first before trying to export your subscription list." msgstr "" #: src/gpodder/gtkui/main.py:3076 msgid "Export to OPML" msgstr "" #: src/gpodder/gtkui/main.py:3087 #, python-format msgid "%(count)d subscription exported" msgid_plural "%(count)d subscriptions exported" msgstr[0] "" #: src/gpodder/gtkui/main.py:3088 msgid "Your podcast list has been successfully exported." msgstr "" #: src/gpodder/gtkui/main.py:3090 msgid "Could not export OPML to file. Please check your permissions." msgstr "" #: src/gpodder/gtkui/main.py:3090 msgid "OPML export failed" msgstr "" #: src/gpodder/gtkui/main.py:3117 #, fuzzy msgid "No updates available" msgstr "цВЁцœ‰хЏч”Јчš„ч‰‡цЎЕ" #: src/gpodder/gtkui/main.py:3118 msgid "You have the latest version of gPodder." msgstr "" #: src/gpodder/gtkui/main.py:3122 #, fuzzy msgid "New version available" msgstr "ц— фЛ‹чЛ" #: src/gpodder/gtkui/main.py:3124 #, python-format msgid "Installed version: %s" msgstr "" #: src/gpodder/gtkui/main.py:3125 #, python-format msgid "Newest version: %s" msgstr "" #: src/gpodder/gtkui/main.py:3126 #, fuzzy, python-format msgid "Release date: %s" msgstr "х‘хИƒ %s" #: src/gpodder/gtkui/main.py:3128 #, fuzzy msgid "Download the latest version from gpodder.org?" msgstr "фИ‹шННщ”™шЏЏ" #: src/gpodder/gtkui/main.py:3141 msgid "About gPodder" msgstr "х…ГфКŽ gPodder" #: src/gpodder/gtkui/main.py:3424 #, fuzzy msgid "Please register a YouTube API key and set it in the preferences." msgstr "шЏЗхœЈщІ–щ€‰щЁЙхЏЙшЏцЁ†цЃ€цŸЅхЊ’фН“ц’­ц”Ох™ЈшЎОчНЎ" #: src/gpodder/gtkui/main.py:3425 msgid "Would you like to set up an API key now?" msgstr "" #: src/gpodder/gtkui/main.py:3425 msgid "API key required" msgstr "" #: src/gpodder/gtkui/main.py:3444 bin/gpo:631 #, fuzzy msgid "No unique URL found" msgstr "цВЁцœ‰ц‰ОхˆАщЂ‘щ“" #: src/gpodder/gtkui/main.py:3449 bin/gpo:637 #, fuzzy msgid "Already subscribed" msgstr "х–цЖˆшЎЂщ˜…" #: src/gpodder/gtkui/main.py:3458 bin/gpo:649 #, python-format msgid "Make sure the API key is correct. Error: %(message)s" msgstr "" #: src/gpodder/gtkui/main.py:3459 #, fuzzy msgid "Error getting YouTube channels" msgstr "щ”™шЏЏшЎОчНЎ" #: src/gpodder/gtkui/main.py:3462 msgid "Successfully migrated subscriptions" msgstr "" #: src/gpodder/gtkui/main.py:3464 #, fuzzy msgid "Subscriptions are up to date" msgstr "шЎЂщ˜…цš‚хœ" #: src/gpodder/gtkui/main.py:3467 msgid "These URLs failed:" msgstr "" #: src/gpodder/gtkui/main.py:3469 #, fuzzy msgid "Could not migrate some subscriptions" msgstr "фИ‹шННчš„ч‰‡цЎЕ" #: src/gpodder/gtkui/main.py:3493 msgid "Cannot start gPodder" msgstr "ц— цГ•хЏхŠЈ gPodder" #: src/gpodder/gtkui/main.py:3494 #, python-format msgid "D-Bus error: %s" msgstr "D-Bus щ”™шЏЏ %s" #: src/gpodder/gtkui/model.py:68 #, python-format msgid "released %s" msgstr "х‘хИƒ %s" #: src/gpodder/gtkui/model.py:69 src/gpodder/gtkui/model.py:87 #: src/gpodder/gtkui/model.py:237 src/gpodder/gtkui/shownotes.py:84 #, python-format msgid "from %s" msgstr "фЛŽ %s" #: src/gpodder/gtkui/model.py:80 src/gpodder/gtkui/model.py:393 msgid "played" msgstr "ц’­ц”ОшП‡чš„" #: src/gpodder/gtkui/model.py:82 msgid "unplayed" msgstr "цœЊц’­ц”Очš„" #: src/gpodder/gtkui/model.py:85 msgid "today" msgstr "фЛŠц—Ѕ" #: src/gpodder/gtkui/model.py:86 #, python-format msgid "downloaded %s" msgstr "фИ‹шННчš„ %s" #: src/gpodder/gtkui/model.py:337 msgid "Deleted" msgstr "хˆ щ™Єчš„" #: src/gpodder/gtkui/model.py:342 msgid "New episode" msgstr "ц–Ач‰‡цЎЕ" #: src/gpodder/gtkui/model.py:356 msgid "Downloaded episode" msgstr "фИ‹шННчš„ч‰‡цЎЕ" #: src/gpodder/gtkui/model.py:359 msgid "Downloaded video episode" msgstr "фИ‹шННчš„шЇ†щЂ‘ч‰‡цЎЕ" #: src/gpodder/gtkui/model.py:362 msgid "Downloaded image" msgstr "фИ‹шННчš„х›Оч‰‡" #: src/gpodder/gtkui/model.py:365 msgid "Downloaded file" msgstr "фИ‹шННчš„ц–‡фЛЖ" #: src/gpodder/gtkui/model.py:380 msgid "missing file" msgstr "чМКхЄБц–‡фЛЖ" #: src/gpodder/gtkui/model.py:384 msgid "never displayed" msgstr "фЛŽцœЊц˜ОчЄКчš„" #: src/gpodder/gtkui/model.py:386 msgid "never played" msgstr "фЛŽцœЊц’­ц”Очš„" #: src/gpodder/gtkui/model.py:388 msgid "never opened" msgstr "фЛŽцœЊц‰“хМ€чš„" #: src/gpodder/gtkui/model.py:391 msgid "displayed" msgstr "ц˜ОчЄКшП‡чš„" #: src/gpodder/gtkui/model.py:395 msgid "opened" msgstr "ц‰“хМ€шП‡чš„" #: src/gpodder/gtkui/model.py:397 msgid "deletion prevented" msgstr "хˆ щ™ЄшЂЋщ˜Лц­Ђ" #: src/gpodder/gtkui/model.py:432 share/gpodder/ui/gtk/gpodder.ui.h:32 msgid "All episodes" msgstr "х…ЈщƒЈч‰‡цЎЕ" #: src/gpodder/gtkui/model.py:433 msgid "from all podcasts" msgstr "" #: src/gpodder/gtkui/model.py:625 msgid "Subscription paused" msgstr "шЎЂщ˜…цš‚хœ" #: src/gpodder/gtkui/shownotes.py:118 #, fuzzy msgid "Please select an episode" msgstr "хˆ щ™Єч‰‡цЎЕ" #: src/gpodder/gtkui/interface/addpodcast.py:74 msgid "Nothing to paste." msgstr "цВЁцœ‰хЏфЛЅч˜шДДчš„" #: src/gpodder/gtkui/interface/addpodcast.py:74 msgid "Clipboard is empty" msgstr "х‰ЊшДДцПфИКчЉК" #: src/gpodder/gtkui/interface/common.py:160 msgid "Username" msgstr "ч”ЈцˆЗх" #: src/gpodder/gtkui/interface/common.py:163 msgid "New user" msgstr "ц–Ач”ЈцˆЗ" #: src/gpodder/gtkui/interface/common.py:170 msgid "Login" msgstr "ч™ЛхН•" #: src/gpodder/gtkui/interface/common.py:172 msgid "Authentication required" msgstr "" #: src/gpodder/gtkui/interface/common.py:203 msgid "Password" msgstr "хЏ†ч " #: src/gpodder/gtkui/interface/common.py:225 msgid "Select destination" msgstr "" #: src/gpodder/gtkui/interface/configeditor.py:34 msgid "Setting" msgstr "фН•ц­Ђ" #: src/gpodder/gtkui/interface/configeditor.py:41 msgid "Set to" msgstr "" #: src/gpodder/gtkui/interface/configeditor.py:81 #, python-format msgid "Cannot set %(field)s to %(value)s. Needed data type: %(datatype)s" msgstr "" #: src/gpodder/gtkui/interface/configeditor.py:85 msgid "Error setting option" msgstr "щ”™шЏЏшЎОчНЎ" #: src/gpodder/gtkui/desktop/channel.py:100 #, fuzzy msgid "Add section" msgstr "цŒ‡фЛЄ" #: src/gpodder/gtkui/desktop/channel.py:100 #, fuzzy msgid "New section:" msgstr "ц— фЛ‹чЛ" #: src/gpodder/gtkui/desktop/channel.py:133 msgid "Select new podcast cover artwork" msgstr "" #: src/gpodder/gtkui/desktop/channel.py:161 msgid "You can only drop a single image or URL here." msgstr "" #: src/gpodder/gtkui/desktop/channel.py:161 #: src/gpodder/gtkui/desktop/channel.py:171 msgid "Drag and drop" msgstr "ц‹–ц‹Н" #: src/gpodder/gtkui/desktop/channel.py:171 msgid "You can only drop local files and http:// URLs here." msgstr "" #: src/gpodder/gtkui/desktop/deviceplaylist.py:98 #, python-format msgid "Folder %s could not be created." msgstr "" #: src/gpodder/gtkui/desktop/deviceplaylist.py:98 #, fuzzy msgid "Error writing playlist" msgstr "ц‰“хМ€ц’­ц”Ох™Јщ”™шЏЏ" #: src/gpodder/gtkui/desktop/episodeselector.py:288 #: share/gpodder/ui/gtk/gpodderepisodeselector.ui.h:2 msgid "Select all" msgstr "щ€‰ц‹Љх…ЈщƒЈ" #: src/gpodder/gtkui/desktop/episodeselector.py:292 #: share/gpodder/ui/gtk/gpodderepisodeselector.ui.h:3 msgid "Select none" msgstr "цИ…чЉКщ€‰ц‹Љ" #: src/gpodder/gtkui/desktop/episodeselector.py:324 msgid "Nothing selected" msgstr "цВЁцœ‰щ€‰фИ­" #: src/gpodder/gtkui/desktop/episodeselector.py:325 #, python-format msgid "%(count)d episode" msgid_plural "%(count)d episodes" msgstr[0] "" #: src/gpodder/gtkui/desktop/episodeselector.py:327 #, python-format msgid "size: %s" msgstr "хЄЇхАяМš %s" #: src/gpodder/gtkui/desktop/podcastdirectory.py:238 #, fuzzy msgid "Loading podcasts" msgstr "цЗЛхŠ ц’­хЎЂ" #: src/gpodder/gtkui/desktop/podcastdirectory.py:239 msgid "Please wait while the podcast list is downloaded" msgstr "" #: src/gpodder/gtkui/desktop/preferences.py:51 #: src/gpodder/gtkui/desktop/preferences.py:93 msgid "Do nothing" msgstr "фЛ€фЙˆщƒНфИхš" #: src/gpodder/gtkui/desktop/preferences.py:52 msgid "Show episode list" msgstr "ц˜ОчЄКч‰‡цЎЕхˆ—шЁЈ" #: src/gpodder/gtkui/desktop/preferences.py:53 msgid "Add to download list" msgstr "" #: src/gpodder/gtkui/desktop/preferences.py:54 msgid "Download immediately" msgstr "" #: src/gpodder/gtkui/desktop/preferences.py:72 msgid "None" msgstr "" #: src/gpodder/gtkui/desktop/preferences.py:73 msgid "iPod" msgstr "" #: src/gpodder/gtkui/desktop/preferences.py:74 msgid "Filesystem-based" msgstr "" #: src/gpodder/gtkui/desktop/preferences.py:94 #, fuzzy msgid "Mark as played" msgstr "ц ‡шЎАфИК ц–А" #: src/gpodder/gtkui/desktop/preferences.py:95 msgid "Delete from gPodder" msgstr "" #: src/gpodder/gtkui/desktop/preferences.py:123 #, python-format msgid "Custom (%(format_ids)s)" msgstr "" #: src/gpodder/gtkui/desktop/preferences.py:318 msgid "Name" msgstr "" #: src/gpodder/gtkui/desktop/preferences.py:369 #, fuzzy msgid "Documentation" msgstr "ц—Жщ—Дщ•ПхКІ" #: src/gpodder/gtkui/desktop/preferences.py:374 msgid "Extension info" msgstr "" #: src/gpodder/gtkui/desktop/preferences.py:379 msgid "Support the author" msgstr "" #: src/gpodder/gtkui/desktop/preferences.py:413 msgid "Extension cannot be activated" msgstr "" #: src/gpodder/gtkui/desktop/preferences.py:426 msgid "Extension module info" msgstr "" #: src/gpodder/gtkui/desktop/preferences.py:463 msgid "Configure audio player" msgstr "" #: src/gpodder/gtkui/desktop/preferences.py:464 #: src/gpodder/gtkui/desktop/preferences.py:474 msgid "Command:" msgstr "х‘НфЛЄяМš" #: src/gpodder/gtkui/desktop/preferences.py:473 msgid "Configure video player" msgstr "шЎОчНЎшЇ†щЂ‘ц’­ц”Ох™Ј" #: src/gpodder/gtkui/desktop/preferences.py:485 #: src/gpodder/gtkui/desktop/preferences.py:503 msgid "manually" msgstr "ц‰‹хŠЈ" #: src/gpodder/gtkui/desktop/preferences.py:505 #, python-format msgid "after %(count)d day" msgid_plural "after %(count)d days" msgstr[0] "" #: src/gpodder/gtkui/desktop/preferences.py:541 msgid "Replace subscription list on server" msgstr "" #: src/gpodder/gtkui/desktop/preferences.py:542 msgid "" "Remote podcasts that have not been added locally will be removed on the " "server. Continue?" msgstr "" #: src/gpodder/gtkui/desktop/preferences.py:621 msgid "Select folder for mount point" msgstr "" #: src/gpodder/gtkui/desktop/preferences.py:638 msgid "Select folder for playlists" msgstr "" #: src/gpodder/gtkui/desktop/sync.py:86 msgid "No device configured" msgstr "" #: src/gpodder/gtkui/desktop/sync.py:87 #, fuzzy msgid "Please set up your device in the preferences dialog." msgstr "шЏЗхœЈщІ–щ€‰щЁЙхЏЙшЏцЁ†цЃ€цŸЅхЊ’фН“ц’­ц”Ох™ЈшЎОчНЎ" #: src/gpodder/gtkui/desktop/sync.py:91 msgid "Cannot open device" msgstr "" #: src/gpodder/gtkui/desktop/sync.py:92 #, fuzzy msgid "Please check the settings in the preferences dialog." msgstr "шЏЗхœЈщІ–щ€‰щЁЙхЏЙшЏцЁ†цЃ€цŸЅхЊ’фН“ц’­ц”Ох™ЈшЎОчНЎ" #: src/gpodder/gtkui/desktop/sync.py:139 msgid "Not enough space left on device" msgstr "" #: src/gpodder/gtkui/desktop/sync.py:140 #, python-format msgid "" "Additional free space required: %(required_space)s\n" "Do you want to continue?" msgstr "" #: src/gpodder/gtkui/desktop/sync.py:199 #, fuzzy msgid "Update successful" msgstr "хˆ—шЁЈфИŠфМ цˆхŠŸ" #: src/gpodder/gtkui/desktop/sync.py:200 msgid "The playlist on your MP3 player has been updated." msgstr "" #: src/gpodder/gtkui/desktop/sync.py:274 msgid "Episodes have been deleted on device" msgstr "" #: src/gpodder/gtkui/desktop/sync.py:285 #, fuzzy msgid "Error writing playlist files" msgstr "шНЌцЂц–‡фЛЖщ”™шЏЏ" #: src/gpodder/plugins/soundcloud.py:154 msgid "Unknown track" msgstr "" #: src/gpodder/plugins/soundcloud.py:181 #, python-format msgid "%s on Soundcloud" msgstr "" #: src/gpodder/plugins/soundcloud.py:190 #, python-format msgid "Tracks published by %s on Soundcloud." msgstr "" #: src/gpodder/plugins/soundcloud.py:217 #, python-format msgid "%s's favorites on Soundcloud" msgstr "" #: src/gpodder/plugins/soundcloud.py:223 #, python-format msgid "Tracks favorited by %s on Soundcloud." msgstr "" #: share/gpodder/extensions/audio_converter.py:20 #, fuzzy msgid "Convert audio files" msgstr "шНЌцЂц–‡фЛЖщ”™шЏЏ" #: share/gpodder/extensions/audio_converter.py:21 msgid "Transcode audio files to mp3/ogg" msgstr "" #: share/gpodder/extensions/audio_converter.py:84 #: share/gpodder/extensions/video_converter.py:86 #, python-format msgid "Convert to %(format)s" msgstr "" #: share/gpodder/extensions/audio_converter.py:111 #: share/gpodder/extensions/rockbox_convert2mp4.py:65 #: share/gpodder/extensions/video_converter.py:111 msgid "File converted" msgstr "" #: share/gpodder/extensions/audio_converter.py:114 #: share/gpodder/extensions/video_converter.py:114 #, fuzzy msgid "Conversion failed" msgstr "шНЌцЂц–‡фЛЖщ”™шЏЏ" #: share/gpodder/extensions/concatenate_videos.py:20 #: share/gpodder/extensions/concatenate_videos.py:100 #, fuzzy msgid "Concatenate videos" msgstr "шНЌцЂц–‡фЛЖщ”™шЏЏ" #: share/gpodder/extensions/concatenate_videos.py:21 msgid "Add a context menu item for concatenating multiple videos" msgstr "" #: share/gpodder/extensions/concatenate_videos.py:37 msgid "Save video" msgstr "" #: share/gpodder/extensions/concatenate_videos.py:66 #, fuzzy msgid "Concatenating video files" msgstr "шНЌцЂц–‡фЛЖщ”™шЏЏ" #: share/gpodder/extensions/concatenate_videos.py:67 #, python-format msgid "Writing %(filename)s" msgstr "" #: share/gpodder/extensions/concatenate_videos.py:78 msgid "Videos successfully converted" msgstr "" #: share/gpodder/extensions/concatenate_videos.py:79 #, fuzzy msgid "Error converting videos" msgstr "шНЌцЂц–‡фЛЖщ”™шЏЏ" #: share/gpodder/extensions/concatenate_videos.py:80 msgid "Concatenation result" msgstr "" #: share/gpodder/extensions/enqueue_in_mediaplayer.py:16 msgid "Enqueue in media players" msgstr "" #: share/gpodder/extensions/enqueue_in_mediaplayer.py:17 msgid "" "Add a context menu item for enqueueing episodes in installed media players" msgstr "" #: share/gpodder/extensions/enqueue_in_mediaplayer.py:35 msgid "Enqueue in" msgstr "" #: share/gpodder/extensions/episode_website_context_menu.py:14 msgid "\"Open website\" episode context menu" msgstr "" #: share/gpodder/extensions/episode_website_context_menu.py:15 msgid "Add a context menu item for opening the website of an episode" msgstr "" #: share/gpodder/extensions/episode_website_context_menu.py:30 msgid "Open website" msgstr "" #: share/gpodder/extensions/gtk_statusicon.py:14 msgid "Gtk Status Icon" msgstr "" #: share/gpodder/extensions/gtk_statusicon.py:15 msgid "Show a status icon for Gtk-based Desktops." msgstr "" #: share/gpodder/extensions/minimize_on_start.py:10 msgid "Minimize on start" msgstr "" #: share/gpodder/extensions/minimize_on_start.py:11 msgid "Minimizes the gPodder window on startup." msgstr "" #: share/gpodder/extensions/mpris-listener.py:33 msgid "MPRIS Listener" msgstr "" #: share/gpodder/extensions/mpris-listener.py:34 msgid "Convert MPRIS notifications to gPodder Media Player D-Bus API" msgstr "" #: share/gpodder/extensions/normalize_audio.py:21 msgid "Normalize audio with re-encoding" msgstr "" #: share/gpodder/extensions/normalize_audio.py:22 msgid "Normalize the volume of audio files with normalize-audio" msgstr "" #: share/gpodder/extensions/normalize_audio.py:99 msgid "File normalized" msgstr "" #: share/gpodder/extensions/rename_download.py:16 #, fuzzy msgid "Rename episodes after download" msgstr "ц ‡шЎАч‰‡цЎЕфИКц—Ї" #: share/gpodder/extensions/rename_download.py:17 msgid "Rename episodes to \".\" on download" msgstr "" #: share/gpodder/extensions/rm_ogg_cover.py:37 msgid "Remove cover art from OGG files" msgstr "" #: share/gpodder/extensions/rm_ogg_cover.py:38 msgid "removes coverart from all downloaded ogg files" msgstr "" #: share/gpodder/extensions/rm_ogg_cover.py:66 #, fuzzy msgid "Remove cover art" msgstr "чЇЛщ™Єц’­хЎЂ" #: share/gpodder/extensions/rockbox_convert2mp4.py:26 msgid "Convert video files to MP4 for Rockbox" msgstr "" #: share/gpodder/extensions/rockbox_convert2mp4.py:27 msgid "Converts all videos to a Rockbox-compatible format" msgstr "" #: share/gpodder/extensions/sonos.py:19 share/gpodder/extensions/sonos.py:78 msgid "Stream to Sonos" msgstr "" #: share/gpodder/extensions/sonos.py:20 msgid "Stream podcasts to Sonos speakers" msgstr "" #: share/gpodder/extensions/tagging.py:45 msgid "Tag downloaded files using Mutagen" msgstr "" #: share/gpodder/extensions/tagging.py:46 msgid "Add episode and podcast titles to MP3/OGG tags" msgstr "" #: share/gpodder/extensions/taskbar_progress.py:28 msgid "Show download progress on the taskbar" msgstr "" #: share/gpodder/extensions/taskbar_progress.py:29 msgid "Displays the progress on the Windows taskbar." msgstr "" #: share/gpodder/extensions/ted_subtitles.py:16 msgid "Subtitle Downloader for TED Talks" msgstr "" #: share/gpodder/extensions/ted_subtitles.py:17 msgid "Downloads .srt subtitles for TED Talks Videos" msgstr "" #: share/gpodder/extensions/ubuntu_appindicator.py:10 msgid "Ubuntu App Indicator" msgstr "" #: share/gpodder/extensions/ubuntu_appindicator.py:11 msgid "Show a status indicator in the top bar." msgstr "" #: share/gpodder/extensions/ubuntu_appindicator.py:47 msgid "Show main window" msgstr "" #: share/gpodder/extensions/ubuntu_appindicator.py:57 #: share/gpodder/ui/gtk/gpodder.ui.h:6 msgid "Quit" msgstr "" #: share/gpodder/extensions/ubuntu_unity.py:10 msgid "Ubuntu Unity Integration" msgstr "" #: share/gpodder/extensions/ubuntu_unity.py:11 msgid "Show download progress in the Unity Launcher icon." msgstr "" #: share/gpodder/extensions/update_feeds_on_startup.py:14 #, fuzzy msgid "Search for new episodes on startup" msgstr "ц˜ОчЄКч‰‡цЎЕхˆ—шЁЈ" #: share/gpodder/extensions/update_feeds_on_startup.py:15 msgid "Starts the search for new episodes on startup" msgstr "" #: share/gpodder/extensions/video_converter.py:22 #, fuzzy msgid "Convert video files" msgstr "шНЌцЂц–‡фЛЖщ”™шЏЏ" #: share/gpodder/extensions/video_converter.py:23 msgid "Transcode video files to avi/mp4/m4v" msgstr "" #: share/gpodder/ui/gtk/gpodderaddpodcast.ui.h:1 msgid "Add a new podcast" msgstr "" #: share/gpodder/ui/gtk/gpodderaddpodcast.ui.h:2 msgid "URL:" msgstr "" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:1 msgid "gPodder Podcast Editor" msgstr "" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:2 msgid "Section:" msgstr "" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:3 msgid "Disable feed updates (pause subscription)" msgstr "" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:4 msgid "Synchronize to MP3 player devices" msgstr "" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:5 msgid "Strategy:" msgstr "" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:6 #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:6 msgid "General" msgstr "" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:7 msgid "HTTP/FTP Authentication" msgstr "" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:8 #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:13 msgid "Username:" msgstr "" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:9 #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:14 msgid "Password:" msgstr "" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:10 msgid "Locations" msgstr "" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:11 msgid "Download to:" msgstr "" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:12 msgid "Website:" msgstr "" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:13 msgid "website label" msgstr "" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:14 msgid "Advanced" msgstr "" #: share/gpodder/ui/gtk/gpodderconfigeditor.ui.h:1 msgid "gPodder Configuration Editor" msgstr "" #: share/gpodder/ui/gtk/gpodderconfigeditor.ui.h:2 msgid "Search for:" msgstr "" #: share/gpodder/ui/gtk/gpodderconfigeditor.ui.h:3 msgid "Show All" msgstr "" #: share/gpodder/ui/gtk/gpodderepisodeselector.ui.h:1 msgid "Select episodes" msgstr "" #: share/gpodder/ui/gtk/gpodderpodcastdirectory.ui.h:1 msgid "Find new podcasts" msgstr "" #: share/gpodder/ui/gtk/gpodderpodcastdirectory.ui.h:2 msgid "Select All" msgstr "" #: share/gpodder/ui/gtk/gpodderpodcastdirectory.ui.h:3 msgid "Select None" msgstr "" #: share/gpodder/ui/gtk/gpodderpodcastdirectory.ui.h:4 msgid "label" msgstr "" #: share/gpodder/ui/gtk/gpodderpodcastdirectory.ui.h:5 msgid "..." msgstr "" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:1 #: share/gpodder/ui/gtk/gpodder.ui.h:5 msgid "Preferences" msgstr "" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:2 msgid "Audio player:" msgstr "" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:3 msgid "Video player:" msgstr "" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:4 msgid "\"All episodes\" in podcast list" msgstr "" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:5 msgid "Use sections for podcast list" msgstr "" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:7 msgid "Preferred YouTube format:" msgstr "" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:8 msgid "YouTube API key (v3):" msgstr "" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:9 msgid "Preferred Vimeo format:" msgstr "" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:11 msgid "Extensions" msgstr "" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:12 msgid "Synchronize subscriptions and episode actions" msgstr "" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:15 msgid "Replace list on server with local subscriptions" msgstr "" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:16 msgid "Device name:" msgstr "" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:17 msgid "gpodder.net" msgstr "" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:18 msgid "Update interval:" msgstr "" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:19 msgid "Maximum number of episodes per podcast:" msgstr "" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:20 msgid "When new episodes are found:" msgstr "" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:21 msgid "Updating" msgstr "" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:22 msgid "Delete played episodes:" msgstr "" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:23 msgid "Remove played episodes even if unfinished" msgstr "" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:24 msgid "Also remove unplayed episodes" msgstr "" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:25 msgid "Clean-up" msgstr "" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:26 #, fuzzy msgid "Device type:" msgstr "ц–АхчЇАяМš" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:27 msgid "Mountpoint:" msgstr "" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:28 msgid "After syncing an episode:" msgstr "" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:29 msgid "Create playlists on device" msgstr "" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:30 #, fuzzy msgid "Playlists Folder:" msgstr "х‰ЊшДДцПфИКчЉК" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:31 msgid "Remove episodes deleted on device from gPodder" msgstr "" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:32 msgid "Only sync unplayed episodes" msgstr "" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:33 #, fuzzy msgid "Devices" msgstr "ц–АхчЇАяМš" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:34 msgid "Edit config" msgstr "" #: share/gpodder/ui/gtk/gpodder.ui.h:1 msgid "_Podcasts" msgstr "" #: share/gpodder/ui/gtk/gpodder.ui.h:2 msgid "Check for new episodes" msgstr "" #: share/gpodder/ui/gtk/gpodder.ui.h:3 msgid "Download new episodes" msgstr "" #: share/gpodder/ui/gtk/gpodder.ui.h:7 msgid "_Subscriptions" msgstr "" #: share/gpodder/ui/gtk/gpodder.ui.h:8 msgid "Discover new podcasts" msgstr "" #: share/gpodder/ui/gtk/gpodder.ui.h:9 msgid "Add podcast via URL" msgstr "" #: share/gpodder/ui/gtk/gpodder.ui.h:11 msgid "Unsubscribe" msgstr "х–цЖˆшЎЂщ˜…" #: share/gpodder/ui/gtk/gpodder.ui.h:14 msgid "Import from OPML file" msgstr "" #: share/gpodder/ui/gtk/gpodder.ui.h:15 msgid "Export to OPML file" msgstr "" #: share/gpodder/ui/gtk/gpodder.ui.h:16 msgid "Go to gpodder.net" msgstr "" #: share/gpodder/ui/gtk/gpodder.ui.h:17 msgid "_Episodes" msgstr "" #: share/gpodder/ui/gtk/gpodder.ui.h:18 msgid "Play" msgstr "" #: share/gpodder/ui/gtk/gpodder.ui.h:19 msgid "Open" msgstr "" #: share/gpodder/ui/gtk/gpodder.ui.h:22 msgid "Delete" msgstr "хˆ щ™Є" #: share/gpodder/ui/gtk/gpodder.ui.h:23 msgid "Toggle new status" msgstr "" #: share/gpodder/ui/gtk/gpodder.ui.h:24 msgid "Change delete lock" msgstr "" #: share/gpodder/ui/gtk/gpodder.ui.h:26 msgid "E_xtras" msgstr "" #: share/gpodder/ui/gtk/gpodder.ui.h:27 #, fuzzy msgid "Sync to device" msgstr "ш“ч‰™шЎОхЄ‡" #: share/gpodder/ui/gtk/gpodder.ui.h:28 #, fuzzy msgid "Update YouTube subscriptions" msgstr "фИŠфМ шЎЂщ˜…щЁЙч›Ў" #: share/gpodder/ui/gtk/gpodder.ui.h:29 msgid "_View" msgstr "шЇ†х›О" #: share/gpodder/ui/gtk/gpodder.ui.h:30 msgid "Toolbar" msgstr "" #: share/gpodder/ui/gtk/gpodder.ui.h:31 msgid "Episode descriptions" msgstr "" #: share/gpodder/ui/gtk/gpodder.ui.h:33 msgid "Hide deleted episodes" msgstr "" #: share/gpodder/ui/gtk/gpodder.ui.h:34 msgid "Downloaded episodes" msgstr "" #: share/gpodder/ui/gtk/gpodder.ui.h:35 msgid "Unplayed episodes" msgstr "" #: share/gpodder/ui/gtk/gpodder.ui.h:36 msgid "Hide podcasts without episodes" msgstr "" #: share/gpodder/ui/gtk/gpodder.ui.h:37 msgid "_Help" msgstr "" #: share/gpodder/ui/gtk/gpodder.ui.h:38 msgid "User manual" msgstr "" #: share/gpodder/ui/gtk/gpodder.ui.h:39 msgid "Software updates" msgstr "" #: share/gpodder/ui/gtk/gpodder.ui.h:40 msgid "Filter:" msgstr "" #: share/gpodder/ui/gtk/gpodder.ui.h:41 msgid "Podcasts" msgstr "" #: share/gpodder/ui/gtk/gpodder.ui.h:42 msgid "Limit rate to" msgstr "" #: share/gpodder/ui/gtk/gpodder.ui.h:43 msgid "KiB/s" msgstr "" #: share/gpodder/ui/gtk/gpodder.ui.h:44 msgid "Limit downloads to" msgstr "" #: share/gpodder/ui/gtk/gpodderwelcome.ui.h:2 msgid "Welcome to gPodder" msgstr "" #: share/gpodder/ui/gtk/gpodderwelcome.ui.h:3 #, fuzzy msgid "Your podcast list is empty." msgstr "ц­ЄшЇ†х›Оц— ч‰‡цЎЕ" #: share/gpodder/ui/gtk/gpodderwelcome.ui.h:4 msgid "Choose from a list of example podcasts" msgstr "" #: share/gpodder/ui/gtk/gpodderwelcome.ui.h:5 msgid "Add a podcast by entering its URL" msgstr "" #: share/gpodder/ui/gtk/gpodderwelcome.ui.h:6 #, fuzzy msgid "Restore my subscriptions from gpodder.net" msgstr "шЏхЎžgpodder.netчš„х˜хŠЈ" #: bin/gpo:266 msgid "Podcast update requested by extensions." msgstr "" #: bin/gpo:270 msgid "Episode download requested by extensions." msgstr "" #: bin/gpo:323 #, python-format msgid "Invalid url: %s" msgstr "" #: bin/gpo:340 bin/gpo:416 bin/gpo:450 bin/gpo:582 bin/gpo:597 bin/gpo:717 #, python-format msgid "You are not subscribed to %s." msgstr "" #: bin/gpo:346 #, fuzzy, python-format msgid "Already subscribed to %s." msgstr "х–цЖˆшЎЂщ˜…" #: bin/gpo:352 #, python-format msgid "Cannot subscribe to %s." msgstr "" #: bin/gpo:368 #, python-format msgid "Successfully added %s." msgstr "" #: bin/gpo:386 msgid "This configuration option does not exist." msgstr "" #: bin/gpo:390 msgid "Can only set leaf configuration nodes." msgstr "" #: bin/gpo:404 #, python-format msgid "Renamed %(old_title)s to %(new_title)s." msgstr "" #: bin/gpo:420 #, fuzzy, python-format msgid "Unsubscribed from %s." msgstr "х–цЖˆшЎЂщ˜…" #: bin/gpo:494 #, fuzzy msgid "Updates disabled" msgstr "ц›Дц–Ах…ЈщƒЈ" #: bin/gpo:505 #, fuzzy, python-format msgid "%(count)d new episode" msgid_plural "%(count)d new episodes" msgstr[0] "%(count)d чЇ’" #: bin/gpo:511 #, fuzzy msgid "Checking for new episodes" msgstr "ц˜ОчЄКч‰‡цЎЕхˆ—шЁЈ" #: bin/gpo:520 #, fuzzy, python-format msgid "Skipping %(podcast)s" msgstr "цЗЛхŠ ц’­хЎЂ" #: bin/gpo:588 #, python-format msgid "Disabling feed update from %s." msgstr "" #: bin/gpo:603 #, python-format msgid "Enabling feed update from %s." msgstr "" #: bin/gpo:616 #, python-format msgid "Please register a YouTube API key and set it using %(command)s." msgstr "" #: bin/gpo:643 #, python-format msgid "Changing: %(old_url)s => %(new_url)s" msgstr "" #: bin/gpo:653 #, fuzzy msgid "Nothing to fix" msgstr "цВЁцœ‰хЏфЛЅч˜шДДчš„" #: bin/gpo:672 #, fuzzy msgid "No podcasts found." msgstr "цВЁцœ‰хК“х­˜" #: bin/gpo:686 msgid "Enter index to subscribe, ? for list" msgstr "" #: bin/gpo:700 bin/gpo:704 msgid "Invalid value." msgstr "" #: bin/gpo:721 #, python-format msgid "Invalid URL: %s" msgstr "" #: bin/gpo:724 #, python-format msgid "Changed URL from %(old_url)s to %(new_url)s." msgstr "" #: bin/gpo:782 #, python-format msgid "Syntax error: %(error)s" msgstr "" #: bin/gpo:876 msgid "Ambiguous command. Did you mean.." msgstr "" #: bin/gpo:880 msgid "The requested function is not available." msgstr "" #: bin/gpodder:105 #, fuzzy msgid "print logging output on the console" msgstr "ц˜ОчЄКdebugшО“х‡КхˆАstdout" #: bin/gpodder:108 #, fuzzy msgid "subscribe to the feed at URL" msgstr "шЎЂщ˜…чЛ™хЎšчš„URL" #: bin/gpodder:113 msgid "Mac OS X application process number" msgstr "Mac OS X чЈ‹хКшП›чЈ‹хЗч " #: share/applications/gpodder.desktop.in.h:2 msgid "gPodder Podcast Client" msgstr "gPodderц’­хЎЂхЎЂцˆЗчЋЏ" #: share/applications/gpodder.desktop.in.h:3 msgid "Podcast Client" msgstr "ц’­хЎЂхЎЂцˆЗчЋЏ" #: share/applications/gpodder.desktop.in.h:4 msgid "Subscribe to audio and video content from the web" msgstr "шЎЂщ˜…чН‘чЛœщŸГщЂ‘у€шЇ†щЂ‘шŠ‚ч›Ў" #: share/applications/gpodder-url-handler.desktop.in.h:1 #, fuzzy msgid "gPodder (subscribe to feed)" msgstr "шЎЂщ˜…чЛ™хЎšчš„URL" gpodder-3.9.0/po/id_ID.po0000644000016000001710000013310012654461625016220 0ustar jenkinsjenkins00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # # Translators: msgid "" msgstr "" "Project-Id-Version: gPodder\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2016-02-03 20:31+0000\n" "PO-Revision-Date: 2013-01-19 12:31+0000\n" "Last-Translator: Thomas Perl \n" "Language-Team: Indonesian (Indonesia) (http://www.transifex.com/projects/p/" "gpodder/language/id_ID/)\n" "Language: id_ID\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" #: src/gpodder/config.py:55 #, python-format msgid "gPodder on %s" msgstr "" #: src/gpodder/directory.py:95 msgid "gpodder.net search" msgstr "" #: src/gpodder/directory.py:104 msgid "OPML from web" msgstr "" #: src/gpodder/directory.py:113 msgid "OPML file" msgstr "" #: src/gpodder/directory.py:122 share/gpodder/ui/gtk/gpodderwelcome.ui.h:1 msgid "Getting started" msgstr "" #: src/gpodder/directory.py:131 msgid "gpodder.net Top 50" msgstr "" #: src/gpodder/directory.py:140 msgid "gpodder.net Tags" msgstr "" #: src/gpodder/directory.py:152 msgid "Soundcloud search" msgstr "" #: src/gpodder/directory.py:165 msgid "Imported OPML file" msgstr "" #: src/gpodder/download.py:329 msgid "Wrong username/password" msgstr "" #: src/gpodder/download.py:527 src/gpodder/sync.py:924 msgid "Added" msgstr "" #: src/gpodder/download.py:527 src/gpodder/sync.py:924 msgid "Queued" msgstr "" #: src/gpodder/download.py:527 src/gpodder/gtkui/model.py:327 msgid "Downloading" msgstr "" #: src/gpodder/download.py:528 src/gpodder/model.py:721 #: src/gpodder/sync.py:925 msgid "Finished" msgstr "" #: src/gpodder/download.py:528 src/gpodder/sync.py:925 msgid "Failed" msgstr "" #: src/gpodder/download.py:528 src/gpodder/sync.py:925 msgid "Cancelled" msgstr "" #: src/gpodder/download.py:528 src/gpodder/sync.py:925 msgid "Paused" msgstr "" #: src/gpodder/download.py:862 msgid "Missing content from server" msgstr "" #: src/gpodder/download.py:868 #, python-format msgid "I/O Error: %(error)s: %(filename)s" msgstr "" #: src/gpodder/download.py:875 #, python-format msgid "HTTP Error %(code)s: %(message)s" msgstr "" #: src/gpodder/download.py:879 src/gpodder/sync.py:1081 #, python-format msgid "Error: %s" msgstr "" #: src/gpodder/extensions.py:55 msgid "Desktop Integration" msgstr "" #: src/gpodder/extensions.py:56 msgid "Interface" msgstr "" #: src/gpodder/extensions.py:57 msgid "Post download" msgstr "" #: src/gpodder/extensions.py:59 src/gpodder/model.py:779 #: src/gpodder/model.py:1225 msgid "Other" msgstr "" #: src/gpodder/extensions.py:100 msgid "No description for this extension." msgstr "" #: src/gpodder/extensions.py:212 #, python-format msgid "Command not found: %(command)s" msgstr "" #: src/gpodder/extensions.py:228 #, python-format msgid "Need at least one of the following commands: %(list_of_commands)s" msgstr "" #: src/gpodder/extensions.py:265 #, python-format msgid "Python module not found: %(module)s" msgstr "" #: src/gpodder/model.py:446 src/gpodder/plugins/soundcloud.py:156 msgid "No description available" msgstr "" #: src/gpodder/model.py:679 msgid "unknown" msgstr "" #: src/gpodder/model.py:746 msgid "Default" msgstr "" #: src/gpodder/model.py:747 msgid "Only keep latest" msgstr "" #: src/gpodder/model.py:1208 src/gpodder/model.py:1223 #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:10 msgid "Video" msgstr "" #: src/gpodder/model.py:1221 msgid "Audio" msgstr "" #: src/gpodder/my.py:174 #, python-format msgid "Add %s" msgstr "" #: src/gpodder/my.py:176 #, python-format msgid "Remove %s" msgstr "" #: src/gpodder/sync.py:196 msgid "Cancelled by user" msgstr "" #: src/gpodder/sync.py:199 msgid "Writing data to disk" msgstr "" #: src/gpodder/sync.py:295 msgid "Opening iPod database" msgstr "" #: src/gpodder/sync.py:305 msgid "iPod opened" msgstr "" #: src/gpodder/sync.py:316 msgid "Saving iPod database" msgstr "" #: src/gpodder/sync.py:321 msgid "Writing extended gtkpod database" msgstr "" #: src/gpodder/sync.py:397 src/gpodder/sync.py:680 src/gpodder/sync.py:874 #, python-format msgid "Removing %s" msgstr "" #: src/gpodder/sync.py:412 src/gpodder/sync.py:557 #, python-format msgid "Adding %s" msgstr "" #: src/gpodder/sync.py:430 #, python-format msgid "Error copying %(episode)s: Not enough free space on %(mountpoint)s" msgstr "" #: src/gpodder/sync.py:515 msgid "Opening MP3 player" msgstr "" #: src/gpodder/sync.py:518 msgid "MP3 player opened" msgstr "" #: src/gpodder/sync.py:576 #, python-format msgid "" "Not enough space in %(path)s: %(free)s available, but need at least %(need)s" msgstr "" #: src/gpodder/sync.py:603 src/gpodder/sync.py:611 #, python-format msgid "Error opening %(filename)s: %(message)s" msgstr "" #: src/gpodder/sync.py:780 src/gpodder/sync.py:786 msgid "MTP device" msgstr "" #: src/gpodder/sync.py:793 msgid "Opening the MTP device" msgstr "" #: src/gpodder/sync.py:803 #, python-format msgid "%s opened" msgstr "" #: src/gpodder/sync.py:808 #, python-format msgid "Closing %s" msgstr "" #: src/gpodder/sync.py:816 #, python-format msgid "%s closed" msgstr "" #: src/gpodder/sync.py:821 bin/gpo:708 #, python-format msgid "Adding %s..." msgstr "" #: src/gpodder/sync.py:924 msgid "Synchronizing" msgstr "" #: src/gpodder/util.py:429 #, python-format msgid "%(count)d day ago" msgid_plural "%(count)d days ago" msgstr[0] "" #: src/gpodder/util.py:508 msgid "Today" msgstr "" #: src/gpodder/util.py:510 msgid "Yesterday" msgstr "" #: src/gpodder/util.py:553 src/gpodder/util.py:556 msgid "(unknown)" msgstr "" #: src/gpodder/util.py:1193 src/gpodder/util.py:1212 #, python-format msgid "%(count)d second" msgid_plural "%(count)d seconds" msgstr[0] "" #: src/gpodder/util.py:1206 #, python-format msgid "%(count)d hour" msgid_plural "%(count)d hours" msgstr[0] "" #: src/gpodder/util.py:1209 #, python-format msgid "%(count)d minute" msgid_plural "%(count)d minutes" msgstr[0] "" #: src/gpodder/util.py:1215 msgid "and" msgstr "" #: src/gpodder/gtkui/config.py:50 msgid "Integer" msgstr "" #: src/gpodder/gtkui/config.py:52 msgid "Float" msgstr "" #: src/gpodder/gtkui/config.py:54 msgid "Boolean" msgstr "" #: src/gpodder/gtkui/config.py:56 msgid "String" msgstr "" #: src/gpodder/gtkui/desktopfile.py:70 #, python-format msgid "Command: %s" msgstr "" #: src/gpodder/gtkui/desktopfile.py:150 msgid "Default application" msgstr "" #: src/gpodder/gtkui/main.py:205 share/applications/gpodder.desktop.in.h:1 msgid "gPodder" msgstr "" #: src/gpodder/gtkui/main.py:288 msgid "Loading incomplete downloads" msgstr "" #: src/gpodder/gtkui/main.py:289 msgid "Some episodes have not finished downloading in a previous session." msgstr "" #: src/gpodder/gtkui/main.py:291 #, python-format msgid "%(count)d partial file" msgid_plural "%(count)d partial files" msgstr[0] "" #: src/gpodder/gtkui/main.py:306 msgid "Resume all" msgstr "" #: src/gpodder/gtkui/main.py:316 msgid "Incomplete downloads from a previous session were found." msgstr "" #: src/gpodder/gtkui/main.py:414 msgid "Action" msgstr "" #: src/gpodder/gtkui/main.py:461 msgid "Confirm changes from gpodder.net" msgstr "" #: src/gpodder/gtkui/main.py:462 msgid "Select the actions you want to carry out." msgstr "" #: src/gpodder/gtkui/main.py:502 msgid "Uploading subscriptions" msgstr "" #: src/gpodder/gtkui/main.py:503 msgid "Your subscriptions are being uploaded to the server." msgstr "" #: src/gpodder/gtkui/main.py:508 msgid "List uploaded successfully." msgstr "" #: src/gpodder/gtkui/main.py:515 msgid "Error while uploading" msgstr "" #: src/gpodder/gtkui/main.py:800 src/gpodder/gtkui/main.py:928 #: src/gpodder/gtkui/main.py:2622 src/gpodder/gtkui/main.py:2815 #: src/gpodder/gtkui/desktop/episodeselector.py:132 #: src/gpodder/gtkui/desktop/sync.py:270 msgid "Episode" msgstr "" #: src/gpodder/gtkui/main.py:819 msgid "Size" msgstr "" #: src/gpodder/gtkui/main.py:824 msgid "Duration" msgstr "" #: src/gpodder/gtkui/main.py:828 msgid "Released" msgstr "" #: src/gpodder/gtkui/main.py:855 msgid "Visible columns" msgstr "" #: src/gpodder/gtkui/main.py:948 src/gpodder/gtkui/main.py:1108 #: share/gpodder/ui/gtk/gpodder.ui.h:45 msgid "Progress" msgstr "" #: src/gpodder/gtkui/main.py:982 msgid "Loading episodes" msgstr "" #: src/gpodder/gtkui/main.py:985 msgid "No episodes in current view" msgstr "" #: src/gpodder/gtkui/main.py:987 msgid "No episodes available" msgstr "" #: src/gpodder/gtkui/main.py:993 msgid "No podcasts in this view" msgstr "" #: src/gpodder/gtkui/main.py:995 msgid "No subscriptions" msgstr "" #: src/gpodder/gtkui/main.py:997 msgid "No active tasks" msgstr "" #: src/gpodder/gtkui/main.py:1112 src/gpodder/gtkui/main.py:1114 #, python-format msgid "%(count)d active" msgid_plural "%(count)d active" msgstr[0] "" #: src/gpodder/gtkui/main.py:1116 #, python-format msgid "%(count)d failed" msgid_plural "%(count)d failed" msgstr[0] "" #: src/gpodder/gtkui/main.py:1118 #, python-format msgid "%(count)d queued" msgid_plural "%(count)d queued" msgstr[0] "" #: src/gpodder/gtkui/main.py:1132 #, python-format msgid "downloading %(count)d file" msgid_plural "downloading %(count)d files" msgstr[0] "" #: src/gpodder/gtkui/main.py:1142 #, python-format msgid "synchronizing %(count)d file" msgid_plural "synchronizing %(count)d files" msgstr[0] "" #: src/gpodder/gtkui/main.py:1144 #, python-format msgid "%(queued)d task queued" msgid_plural "%(queued)d tasks queued" msgstr[0] "" #: src/gpodder/gtkui/main.py:1168 msgid "Please report this problem and restart gPodder:" msgstr "" #: src/gpodder/gtkui/main.py:1168 msgid "Unhandled exception" msgstr "" #: src/gpodder/gtkui/main.py:1235 #, python-format msgid "Feedparser error: %s" msgstr "" #: src/gpodder/gtkui/main.py:1371 msgid "Could not download some episodes:" msgstr "" #: src/gpodder/gtkui/main.py:1373 src/gpodder/gtkui/main.py:1376 msgid "Downloads finished" msgstr "" #: src/gpodder/gtkui/main.py:1379 msgid "Downloads failed" msgstr "" #: src/gpodder/gtkui/main.py:1383 msgid "Could not sync some episodes:" msgstr "" #: src/gpodder/gtkui/main.py:1385 src/gpodder/gtkui/main.py:1388 msgid "Device synchronization finished" msgstr "" #: src/gpodder/gtkui/main.py:1391 msgid "Device synchronization failed" msgstr "" #: src/gpodder/gtkui/main.py:1434 #, python-format msgid "%(count)d more episode" msgid_plural "%(count)d more episodes" msgstr[0] "" #: src/gpodder/gtkui/main.py:1508 msgid "Start download now" msgstr "" #: src/gpodder/gtkui/main.py:1510 src/gpodder/gtkui/main.py:1719 #: src/gpodder/gtkui/desktop/episodeselector.py:144 #: share/gpodder/ui/gtk/gpodder.ui.h:20 msgid "Download" msgstr "" #: src/gpodder/gtkui/main.py:1511 share/gpodder/ui/gtk/gpodder.ui.h:21 msgid "Cancel" msgstr "" #: src/gpodder/gtkui/main.py:1512 msgid "Pause" msgstr "" #: src/gpodder/gtkui/main.py:1514 msgid "Remove from list" msgstr "" #: src/gpodder/gtkui/main.py:1553 share/gpodder/ui/gtk/gpodder.ui.h:13 msgid "Update podcast" msgstr "" #: src/gpodder/gtkui/main.py:1560 msgid "Open download folder" msgstr "" #: src/gpodder/gtkui/main.py:1566 msgid "Mark episodes as old" msgstr "" #: src/gpodder/gtkui/main.py:1570 src/gpodder/gtkui/main.py:1778 msgid "Archive" msgstr "" #: src/gpodder/gtkui/main.py:1575 msgid "Remove podcast" msgstr "" #: src/gpodder/gtkui/main.py:1590 share/gpodder/ui/gtk/gpodder.ui.h:10 msgid "Podcast settings" msgstr "" #: src/gpodder/gtkui/main.py:1650 msgid "Error converting file." msgstr "" #: src/gpodder/gtkui/main.py:1650 msgid "Bluetooth file transfer" msgstr "" #: src/gpodder/gtkui/main.py:1709 msgid "Preview" msgstr "" #: src/gpodder/gtkui/main.py:1711 msgid "Stream" msgstr "" #: src/gpodder/gtkui/main.py:1755 msgid "Send to" msgstr "" #: src/gpodder/gtkui/main.py:1757 msgid "Local folder" msgstr "" #: src/gpodder/gtkui/main.py:1762 msgid "Bluetooth device" msgstr "" #: src/gpodder/gtkui/main.py:1769 msgid "New" msgstr "" #: src/gpodder/gtkui/main.py:1785 share/gpodder/ui/gtk/gpodder.ui.h:25 msgid "Episode details" msgstr "" #: src/gpodder/gtkui/main.py:1938 msgid "Please check your media player settings in the preferences dialog." msgstr "" #: src/gpodder/gtkui/main.py:1939 msgid "Error opening player" msgstr "" #: src/gpodder/gtkui/main.py:2178 msgid "Adding podcasts" msgstr "" #: src/gpodder/gtkui/main.py:2179 msgid "Please wait while episode information is downloaded." msgstr "" #: src/gpodder/gtkui/main.py:2186 msgid "Existing subscriptions skipped" msgstr "" #: src/gpodder/gtkui/main.py:2187 msgid "You are already subscribed to these podcasts:" msgstr "" #: src/gpodder/gtkui/main.py:2195 msgid "Podcast requires authentication" msgstr "" #: src/gpodder/gtkui/main.py:2196 #, python-format msgid "Please login to %s:" msgstr "" #: src/gpodder/gtkui/main.py:2204 src/gpodder/gtkui/main.py:2299 msgid "Authentication failed" msgstr "" #: src/gpodder/gtkui/main.py:2210 msgid "Website redirection detected" msgstr "" #: src/gpodder/gtkui/main.py:2211 #, python-format msgid "The URL %(url)s redirects to %(target)s." msgstr "" #: src/gpodder/gtkui/main.py:2212 msgid "Do you want to visit the website now?" msgstr "" #: src/gpodder/gtkui/main.py:2221 msgid "Could not add some podcasts" msgstr "" #: src/gpodder/gtkui/main.py:2222 msgid "Some podcasts could not be added to your list:" msgstr "" #: src/gpodder/gtkui/main.py:2224 msgid "Unknown" msgstr "" #: src/gpodder/gtkui/main.py:2308 msgid "Redirection detected" msgstr "" #: src/gpodder/gtkui/main.py:2342 msgid "Merging episode actions" msgstr "" #: src/gpodder/gtkui/main.py:2343 msgid "Episode actions from gpodder.net are merged." msgstr "" #: src/gpodder/gtkui/main.py:2368 msgid "Cancelling..." msgstr "" #: src/gpodder/gtkui/main.py:2377 msgid "Please connect to a network, then try again." msgstr "" #: src/gpodder/gtkui/main.py:2378 msgid "No network connection" msgstr "" #: src/gpodder/gtkui/main.py:2399 #, python-format msgid "Updating %(count)d feed..." msgid_plural "Updating %(count)d feeds..." msgstr[0] "" #: src/gpodder/gtkui/main.py:2417 #, python-format msgid "Error while updating %(url)s: %(message)s" msgstr "" #: src/gpodder/gtkui/main.py:2419 #, python-format msgid "The feed at %(url)s could not be updated." msgstr "" #: src/gpodder/gtkui/main.py:2420 msgid "Error while updating feed" msgstr "" #: src/gpodder/gtkui/main.py:2435 #, python-format msgid "Updated %(podcast)s (%(position)d/%(total)d)" msgstr "" #: src/gpodder/gtkui/main.py:2466 msgid "No new episodes" msgstr "" #: src/gpodder/gtkui/main.py:2479 #, python-format msgid "Downloading %(count)d new episode." msgid_plural "Downloading %(count)d new episodes." msgstr[0] "" #: src/gpodder/gtkui/main.py:2480 src/gpodder/gtkui/main.py:2484 #: src/gpodder/gtkui/main.py:2833 msgid "New episodes available" msgstr "" #: src/gpodder/gtkui/main.py:2483 #, python-format msgid "%(count)d new episode added to download list." msgid_plural "%(count)d new episodes added to download list." msgstr[0] "" #: src/gpodder/gtkui/main.py:2490 #, python-format msgid "%(count)d new episode available" msgid_plural "%(count)d new episodes available" msgstr[0] "" #: src/gpodder/gtkui/main.py:2509 msgid "Quit gPodder" msgstr "" #: src/gpodder/gtkui/main.py:2510 msgid "" "You are downloading episodes. You can resume downloads the next time you " "start gPodder. Do you want to quit now?" msgstr "" #: src/gpodder/gtkui/main.py:2559 msgid "Episodes are locked" msgstr "" #: src/gpodder/gtkui/main.py:2560 msgid "" "The selected episodes are locked. Please unlock the episodes that you want " "to delete before trying to delete them." msgstr "" #: src/gpodder/gtkui/main.py:2565 #, python-format msgid "Delete %(count)d episode?" msgid_plural "Delete %(count)d episodes?" msgstr[0] "" #: src/gpodder/gtkui/main.py:2566 msgid "Deleting episodes removes downloaded files." msgstr "" #: src/gpodder/gtkui/main.py:2571 msgid "Deleting episodes" msgstr "" #: src/gpodder/gtkui/main.py:2572 msgid "Please wait while episodes are deleted" msgstr "" #: src/gpodder/gtkui/main.py:2625 #, python-format msgid "Select older than %(count)d day" msgid_plural "Select older than %(count)d days" msgstr[0] "" #: src/gpodder/gtkui/main.py:2627 msgid "Select played" msgstr "" #: src/gpodder/gtkui/main.py:2628 msgid "Select finished" msgstr "" #: src/gpodder/gtkui/main.py:2632 msgid "Select the episodes you want to delete:" msgstr "" #: src/gpodder/gtkui/main.py:2648 share/gpodder/ui/gtk/gpodder.ui.h:4 msgid "Delete episodes" msgstr "" #: src/gpodder/gtkui/main.py:2703 src/gpodder/gtkui/main.py:2934 #: src/gpodder/gtkui/main.py:3034 msgid "No podcast selected" msgstr "" #: src/gpodder/gtkui/main.py:2704 msgid "Please select a podcast in the podcasts list to update." msgstr "" #: src/gpodder/gtkui/main.py:2774 #, python-format msgid "Download error while downloading %(episode)s: %(message)s" msgstr "" #: src/gpodder/gtkui/main.py:2775 msgid "Download error" msgstr "" #: src/gpodder/gtkui/main.py:2818 msgid "Select the episodes you want to download:" msgstr "" #: src/gpodder/gtkui/main.py:2841 msgid "Mark as old" msgstr "" #: src/gpodder/gtkui/main.py:2848 msgid "Please check for new episodes later." msgstr "" #: src/gpodder/gtkui/main.py:2849 msgid "No new episodes available" msgstr "" #: src/gpodder/gtkui/main.py:2900 msgid "Login to gpodder.net" msgstr "" #: src/gpodder/gtkui/main.py:2901 msgid "Please login to download your subscriptions." msgstr "" #: src/gpodder/gtkui/main.py:2916 msgid "Subscriptions on gpodder.net" msgstr "" #: src/gpodder/gtkui/main.py:2935 msgid "Please select a podcast in the podcasts list to edit." msgstr "" #: src/gpodder/gtkui/main.py:2949 msgid "Podcast" msgstr "" #: src/gpodder/gtkui/main.py:2955 share/gpodder/ui/gtk/gpodder.ui.h:12 msgid "Remove podcasts" msgstr "" #: src/gpodder/gtkui/main.py:2956 msgid "Select the podcast you want to remove." msgstr "" #: src/gpodder/gtkui/main.py:2960 #: src/gpodder/gtkui/desktop/episodeselector.py:105 msgid "Remove" msgstr "" #: src/gpodder/gtkui/main.py:2969 msgid "Removing podcast" msgstr "" #: src/gpodder/gtkui/main.py:2970 msgid "Please wait while the podcast is removed" msgstr "" #: src/gpodder/gtkui/main.py:2971 msgid "Do you really want to remove this podcast and its episodes?" msgstr "" #: src/gpodder/gtkui/main.py:2973 msgid "Removing podcasts" msgstr "" #: src/gpodder/gtkui/main.py:2974 msgid "Please wait while the podcasts are removed" msgstr "" #: src/gpodder/gtkui/main.py:2975 msgid "Do you really want to remove the selected podcasts and their episodes?" msgstr "" #: src/gpodder/gtkui/main.py:3035 msgid "Please select a podcast in the podcasts list to remove." msgstr "" #: src/gpodder/gtkui/main.py:3045 msgid "OPML files" msgstr "" #: src/gpodder/gtkui/main.py:3050 msgid "Import from OPML" msgstr "" #: src/gpodder/gtkui/main.py:3064 msgid "Import podcasts from OPML file" msgstr "" #: src/gpodder/gtkui/main.py:3071 msgid "Nothing to export" msgstr "" #: src/gpodder/gtkui/main.py:3072 msgid "" "Your list of podcast subscriptions is empty. Please subscribe to some " "podcasts first before trying to export your subscription list." msgstr "" #: src/gpodder/gtkui/main.py:3076 msgid "Export to OPML" msgstr "" #: src/gpodder/gtkui/main.py:3087 #, python-format msgid "%(count)d subscription exported" msgid_plural "%(count)d subscriptions exported" msgstr[0] "" #: src/gpodder/gtkui/main.py:3088 msgid "Your podcast list has been successfully exported." msgstr "" #: src/gpodder/gtkui/main.py:3090 msgid "Could not export OPML to file. Please check your permissions." msgstr "" #: src/gpodder/gtkui/main.py:3090 msgid "OPML export failed" msgstr "" #: src/gpodder/gtkui/main.py:3117 msgid "No updates available" msgstr "" #: src/gpodder/gtkui/main.py:3118 msgid "You have the latest version of gPodder." msgstr "" #: src/gpodder/gtkui/main.py:3122 msgid "New version available" msgstr "" #: src/gpodder/gtkui/main.py:3124 #, python-format msgid "Installed version: %s" msgstr "" #: src/gpodder/gtkui/main.py:3125 #, python-format msgid "Newest version: %s" msgstr "" #: src/gpodder/gtkui/main.py:3126 #, python-format msgid "Release date: %s" msgstr "" #: src/gpodder/gtkui/main.py:3128 msgid "Download the latest version from gpodder.org?" msgstr "" #: src/gpodder/gtkui/main.py:3141 msgid "About gPodder" msgstr "" #: src/gpodder/gtkui/main.py:3424 msgid "Please register a YouTube API key and set it in the preferences." msgstr "" #: src/gpodder/gtkui/main.py:3425 msgid "Would you like to set up an API key now?" msgstr "" #: src/gpodder/gtkui/main.py:3425 msgid "API key required" msgstr "" #: src/gpodder/gtkui/main.py:3444 bin/gpo:631 msgid "No unique URL found" msgstr "" #: src/gpodder/gtkui/main.py:3449 bin/gpo:637 msgid "Already subscribed" msgstr "" #: src/gpodder/gtkui/main.py:3458 bin/gpo:649 #, python-format msgid "Make sure the API key is correct. Error: %(message)s" msgstr "" #: src/gpodder/gtkui/main.py:3459 msgid "Error getting YouTube channels" msgstr "" #: src/gpodder/gtkui/main.py:3462 msgid "Successfully migrated subscriptions" msgstr "" #: src/gpodder/gtkui/main.py:3464 msgid "Subscriptions are up to date" msgstr "" #: src/gpodder/gtkui/main.py:3467 msgid "These URLs failed:" msgstr "" #: src/gpodder/gtkui/main.py:3469 msgid "Could not migrate some subscriptions" msgstr "" #: src/gpodder/gtkui/main.py:3493 msgid "Cannot start gPodder" msgstr "" #: src/gpodder/gtkui/main.py:3494 #, python-format msgid "D-Bus error: %s" msgstr "" #: src/gpodder/gtkui/model.py:68 #, python-format msgid "released %s" msgstr "" #: src/gpodder/gtkui/model.py:69 src/gpodder/gtkui/model.py:87 #: src/gpodder/gtkui/model.py:237 src/gpodder/gtkui/shownotes.py:84 #, python-format msgid "from %s" msgstr "" #: src/gpodder/gtkui/model.py:80 src/gpodder/gtkui/model.py:393 msgid "played" msgstr "" #: src/gpodder/gtkui/model.py:82 msgid "unplayed" msgstr "" #: src/gpodder/gtkui/model.py:85 msgid "today" msgstr "" #: src/gpodder/gtkui/model.py:86 #, python-format msgid "downloaded %s" msgstr "" #: src/gpodder/gtkui/model.py:337 msgid "Deleted" msgstr "" #: src/gpodder/gtkui/model.py:342 msgid "New episode" msgstr "" #: src/gpodder/gtkui/model.py:356 msgid "Downloaded episode" msgstr "" #: src/gpodder/gtkui/model.py:359 msgid "Downloaded video episode" msgstr "" #: src/gpodder/gtkui/model.py:362 msgid "Downloaded image" msgstr "" #: src/gpodder/gtkui/model.py:365 msgid "Downloaded file" msgstr "" #: src/gpodder/gtkui/model.py:380 msgid "missing file" msgstr "" #: src/gpodder/gtkui/model.py:384 msgid "never displayed" msgstr "" #: src/gpodder/gtkui/model.py:386 msgid "never played" msgstr "" #: src/gpodder/gtkui/model.py:388 msgid "never opened" msgstr "" #: src/gpodder/gtkui/model.py:391 msgid "displayed" msgstr "" #: src/gpodder/gtkui/model.py:395 msgid "opened" msgstr "" #: src/gpodder/gtkui/model.py:397 msgid "deletion prevented" msgstr "" #: src/gpodder/gtkui/model.py:432 share/gpodder/ui/gtk/gpodder.ui.h:32 msgid "All episodes" msgstr "" #: src/gpodder/gtkui/model.py:433 msgid "from all podcasts" msgstr "" #: src/gpodder/gtkui/model.py:625 msgid "Subscription paused" msgstr "" #: src/gpodder/gtkui/shownotes.py:118 msgid "Please select an episode" msgstr "" #: src/gpodder/gtkui/interface/addpodcast.py:74 msgid "Nothing to paste." msgstr "" #: src/gpodder/gtkui/interface/addpodcast.py:74 msgid "Clipboard is empty" msgstr "" #: src/gpodder/gtkui/interface/common.py:160 msgid "Username" msgstr "" #: src/gpodder/gtkui/interface/common.py:163 msgid "New user" msgstr "" #: src/gpodder/gtkui/interface/common.py:170 msgid "Login" msgstr "" #: src/gpodder/gtkui/interface/common.py:172 msgid "Authentication required" msgstr "" #: src/gpodder/gtkui/interface/common.py:203 msgid "Password" msgstr "" #: src/gpodder/gtkui/interface/common.py:225 msgid "Select destination" msgstr "" #: src/gpodder/gtkui/interface/configeditor.py:34 msgid "Setting" msgstr "" #: src/gpodder/gtkui/interface/configeditor.py:41 msgid "Set to" msgstr "" #: src/gpodder/gtkui/interface/configeditor.py:81 #, python-format msgid "Cannot set %(field)s to %(value)s. Needed data type: %(datatype)s" msgstr "" #: src/gpodder/gtkui/interface/configeditor.py:85 msgid "Error setting option" msgstr "" #: src/gpodder/gtkui/desktop/channel.py:100 msgid "Add section" msgstr "" #: src/gpodder/gtkui/desktop/channel.py:100 msgid "New section:" msgstr "" #: src/gpodder/gtkui/desktop/channel.py:133 msgid "Select new podcast cover artwork" msgstr "" #: src/gpodder/gtkui/desktop/channel.py:161 msgid "You can only drop a single image or URL here." msgstr "" #: src/gpodder/gtkui/desktop/channel.py:161 #: src/gpodder/gtkui/desktop/channel.py:171 msgid "Drag and drop" msgstr "" #: src/gpodder/gtkui/desktop/channel.py:171 msgid "You can only drop local files and http:// URLs here." msgstr "" #: src/gpodder/gtkui/desktop/deviceplaylist.py:98 #, python-format msgid "Folder %s could not be created." msgstr "" #: src/gpodder/gtkui/desktop/deviceplaylist.py:98 msgid "Error writing playlist" msgstr "" #: src/gpodder/gtkui/desktop/episodeselector.py:288 #: share/gpodder/ui/gtk/gpodderepisodeselector.ui.h:2 msgid "Select all" msgstr "" #: src/gpodder/gtkui/desktop/episodeselector.py:292 #: share/gpodder/ui/gtk/gpodderepisodeselector.ui.h:3 msgid "Select none" msgstr "" #: src/gpodder/gtkui/desktop/episodeselector.py:324 msgid "Nothing selected" msgstr "" #: src/gpodder/gtkui/desktop/episodeselector.py:325 #, python-format msgid "%(count)d episode" msgid_plural "%(count)d episodes" msgstr[0] "" #: src/gpodder/gtkui/desktop/episodeselector.py:327 #, python-format msgid "size: %s" msgstr "" #: src/gpodder/gtkui/desktop/podcastdirectory.py:238 msgid "Loading podcasts" msgstr "" #: src/gpodder/gtkui/desktop/podcastdirectory.py:239 msgid "Please wait while the podcast list is downloaded" msgstr "" #: src/gpodder/gtkui/desktop/preferences.py:51 #: src/gpodder/gtkui/desktop/preferences.py:93 msgid "Do nothing" msgstr "" #: src/gpodder/gtkui/desktop/preferences.py:52 msgid "Show episode list" msgstr "" #: src/gpodder/gtkui/desktop/preferences.py:53 msgid "Add to download list" msgstr "" #: src/gpodder/gtkui/desktop/preferences.py:54 msgid "Download immediately" msgstr "" #: src/gpodder/gtkui/desktop/preferences.py:72 msgid "None" msgstr "" #: src/gpodder/gtkui/desktop/preferences.py:73 msgid "iPod" msgstr "" #: src/gpodder/gtkui/desktop/preferences.py:74 msgid "Filesystem-based" msgstr "" #: src/gpodder/gtkui/desktop/preferences.py:94 msgid "Mark as played" msgstr "" #: src/gpodder/gtkui/desktop/preferences.py:95 msgid "Delete from gPodder" msgstr "" #: src/gpodder/gtkui/desktop/preferences.py:123 #, python-format msgid "Custom (%(format_ids)s)" msgstr "" #: src/gpodder/gtkui/desktop/preferences.py:318 msgid "Name" msgstr "" #: src/gpodder/gtkui/desktop/preferences.py:369 msgid "Documentation" msgstr "" #: src/gpodder/gtkui/desktop/preferences.py:374 msgid "Extension info" msgstr "" #: src/gpodder/gtkui/desktop/preferences.py:379 msgid "Support the author" msgstr "" #: src/gpodder/gtkui/desktop/preferences.py:413 msgid "Extension cannot be activated" msgstr "" #: src/gpodder/gtkui/desktop/preferences.py:426 msgid "Extension module info" msgstr "" #: src/gpodder/gtkui/desktop/preferences.py:463 msgid "Configure audio player" msgstr "" #: src/gpodder/gtkui/desktop/preferences.py:464 #: src/gpodder/gtkui/desktop/preferences.py:474 msgid "Command:" msgstr "" #: src/gpodder/gtkui/desktop/preferences.py:473 msgid "Configure video player" msgstr "" #: src/gpodder/gtkui/desktop/preferences.py:485 #: src/gpodder/gtkui/desktop/preferences.py:503 msgid "manually" msgstr "" #: src/gpodder/gtkui/desktop/preferences.py:505 #, python-format msgid "after %(count)d day" msgid_plural "after %(count)d days" msgstr[0] "" #: src/gpodder/gtkui/desktop/preferences.py:541 msgid "Replace subscription list on server" msgstr "" #: src/gpodder/gtkui/desktop/preferences.py:542 msgid "" "Remote podcasts that have not been added locally will be removed on the " "server. Continue?" msgstr "" #: src/gpodder/gtkui/desktop/preferences.py:621 msgid "Select folder for mount point" msgstr "" #: src/gpodder/gtkui/desktop/preferences.py:638 msgid "Select folder for playlists" msgstr "" #: src/gpodder/gtkui/desktop/sync.py:86 msgid "No device configured" msgstr "" #: src/gpodder/gtkui/desktop/sync.py:87 msgid "Please set up your device in the preferences dialog." msgstr "" #: src/gpodder/gtkui/desktop/sync.py:91 msgid "Cannot open device" msgstr "" #: src/gpodder/gtkui/desktop/sync.py:92 msgid "Please check the settings in the preferences dialog." msgstr "" #: src/gpodder/gtkui/desktop/sync.py:139 msgid "Not enough space left on device" msgstr "" #: src/gpodder/gtkui/desktop/sync.py:140 #, python-format msgid "" "Additional free space required: %(required_space)s\n" "Do you want to continue?" msgstr "" #: src/gpodder/gtkui/desktop/sync.py:199 msgid "Update successful" msgstr "" #: src/gpodder/gtkui/desktop/sync.py:200 msgid "The playlist on your MP3 player has been updated." msgstr "" #: src/gpodder/gtkui/desktop/sync.py:274 msgid "Episodes have been deleted on device" msgstr "" #: src/gpodder/gtkui/desktop/sync.py:285 msgid "Error writing playlist files" msgstr "" #: src/gpodder/plugins/soundcloud.py:154 msgid "Unknown track" msgstr "" #: src/gpodder/plugins/soundcloud.py:181 #, python-format msgid "%s on Soundcloud" msgstr "" #: src/gpodder/plugins/soundcloud.py:190 #, python-format msgid "Tracks published by %s on Soundcloud." msgstr "" #: src/gpodder/plugins/soundcloud.py:217 #, python-format msgid "%s's favorites on Soundcloud" msgstr "" #: src/gpodder/plugins/soundcloud.py:223 #, python-format msgid "Tracks favorited by %s on Soundcloud." msgstr "" #: share/gpodder/extensions/audio_converter.py:20 msgid "Convert audio files" msgstr "" #: share/gpodder/extensions/audio_converter.py:21 msgid "Transcode audio files to mp3/ogg" msgstr "" #: share/gpodder/extensions/audio_converter.py:84 #: share/gpodder/extensions/video_converter.py:86 #, python-format msgid "Convert to %(format)s" msgstr "" #: share/gpodder/extensions/audio_converter.py:111 #: share/gpodder/extensions/rockbox_convert2mp4.py:65 #: share/gpodder/extensions/video_converter.py:111 msgid "File converted" msgstr "" #: share/gpodder/extensions/audio_converter.py:114 #: share/gpodder/extensions/video_converter.py:114 msgid "Conversion failed" msgstr "" #: share/gpodder/extensions/concatenate_videos.py:20 #: share/gpodder/extensions/concatenate_videos.py:100 msgid "Concatenate videos" msgstr "" #: share/gpodder/extensions/concatenate_videos.py:21 msgid "Add a context menu item for concatenating multiple videos" msgstr "" #: share/gpodder/extensions/concatenate_videos.py:37 msgid "Save video" msgstr "" #: share/gpodder/extensions/concatenate_videos.py:66 msgid "Concatenating video files" msgstr "" #: share/gpodder/extensions/concatenate_videos.py:67 #, python-format msgid "Writing %(filename)s" msgstr "" #: share/gpodder/extensions/concatenate_videos.py:78 msgid "Videos successfully converted" msgstr "" #: share/gpodder/extensions/concatenate_videos.py:79 msgid "Error converting videos" msgstr "" #: share/gpodder/extensions/concatenate_videos.py:80 msgid "Concatenation result" msgstr "" #: share/gpodder/extensions/enqueue_in_mediaplayer.py:16 msgid "Enqueue in media players" msgstr "" #: share/gpodder/extensions/enqueue_in_mediaplayer.py:17 msgid "" "Add a context menu item for enqueueing episodes in installed media players" msgstr "" #: share/gpodder/extensions/enqueue_in_mediaplayer.py:35 msgid "Enqueue in" msgstr "" #: share/gpodder/extensions/episode_website_context_menu.py:14 msgid "\"Open website\" episode context menu" msgstr "" #: share/gpodder/extensions/episode_website_context_menu.py:15 msgid "Add a context menu item for opening the website of an episode" msgstr "" #: share/gpodder/extensions/episode_website_context_menu.py:30 msgid "Open website" msgstr "" #: share/gpodder/extensions/gtk_statusicon.py:14 msgid "Gtk Status Icon" msgstr "" #: share/gpodder/extensions/gtk_statusicon.py:15 msgid "Show a status icon for Gtk-based Desktops." msgstr "" #: share/gpodder/extensions/minimize_on_start.py:10 msgid "Minimize on start" msgstr "" #: share/gpodder/extensions/minimize_on_start.py:11 msgid "Minimizes the gPodder window on startup." msgstr "" #: share/gpodder/extensions/mpris-listener.py:33 msgid "MPRIS Listener" msgstr "" #: share/gpodder/extensions/mpris-listener.py:34 msgid "Convert MPRIS notifications to gPodder Media Player D-Bus API" msgstr "" #: share/gpodder/extensions/normalize_audio.py:21 msgid "Normalize audio with re-encoding" msgstr "" #: share/gpodder/extensions/normalize_audio.py:22 msgid "Normalize the volume of audio files with normalize-audio" msgstr "" #: share/gpodder/extensions/normalize_audio.py:99 msgid "File normalized" msgstr "" #: share/gpodder/extensions/rename_download.py:16 msgid "Rename episodes after download" msgstr "" #: share/gpodder/extensions/rename_download.py:17 msgid "Rename episodes to \".\" on download" msgstr "" #: share/gpodder/extensions/rm_ogg_cover.py:37 msgid "Remove cover art from OGG files" msgstr "" #: share/gpodder/extensions/rm_ogg_cover.py:38 msgid "removes coverart from all downloaded ogg files" msgstr "" #: share/gpodder/extensions/rm_ogg_cover.py:66 msgid "Remove cover art" msgstr "" #: share/gpodder/extensions/rockbox_convert2mp4.py:26 msgid "Convert video files to MP4 for Rockbox" msgstr "" #: share/gpodder/extensions/rockbox_convert2mp4.py:27 msgid "Converts all videos to a Rockbox-compatible format" msgstr "" #: share/gpodder/extensions/sonos.py:19 share/gpodder/extensions/sonos.py:78 msgid "Stream to Sonos" msgstr "" #: share/gpodder/extensions/sonos.py:20 msgid "Stream podcasts to Sonos speakers" msgstr "" #: share/gpodder/extensions/tagging.py:45 msgid "Tag downloaded files using Mutagen" msgstr "" #: share/gpodder/extensions/tagging.py:46 msgid "Add episode and podcast titles to MP3/OGG tags" msgstr "" #: share/gpodder/extensions/taskbar_progress.py:28 msgid "Show download progress on the taskbar" msgstr "" #: share/gpodder/extensions/taskbar_progress.py:29 msgid "Displays the progress on the Windows taskbar." msgstr "" #: share/gpodder/extensions/ted_subtitles.py:16 msgid "Subtitle Downloader for TED Talks" msgstr "" #: share/gpodder/extensions/ted_subtitles.py:17 msgid "Downloads .srt subtitles for TED Talks Videos" msgstr "" #: share/gpodder/extensions/ubuntu_appindicator.py:10 msgid "Ubuntu App Indicator" msgstr "" #: share/gpodder/extensions/ubuntu_appindicator.py:11 msgid "Show a status indicator in the top bar." msgstr "" #: share/gpodder/extensions/ubuntu_appindicator.py:47 msgid "Show main window" msgstr "" #: share/gpodder/extensions/ubuntu_appindicator.py:57 #: share/gpodder/ui/gtk/gpodder.ui.h:6 msgid "Quit" msgstr "" #: share/gpodder/extensions/ubuntu_unity.py:10 msgid "Ubuntu Unity Integration" msgstr "" #: share/gpodder/extensions/ubuntu_unity.py:11 msgid "Show download progress in the Unity Launcher icon." msgstr "" #: share/gpodder/extensions/update_feeds_on_startup.py:14 msgid "Search for new episodes on startup" msgstr "" #: share/gpodder/extensions/update_feeds_on_startup.py:15 msgid "Starts the search for new episodes on startup" msgstr "" #: share/gpodder/extensions/video_converter.py:22 msgid "Convert video files" msgstr "" #: share/gpodder/extensions/video_converter.py:23 msgid "Transcode video files to avi/mp4/m4v" msgstr "" #: share/gpodder/ui/gtk/gpodderaddpodcast.ui.h:1 msgid "Add a new podcast" msgstr "" #: share/gpodder/ui/gtk/gpodderaddpodcast.ui.h:2 msgid "URL:" msgstr "" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:1 msgid "gPodder Podcast Editor" msgstr "" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:2 msgid "Section:" msgstr "" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:3 msgid "Disable feed updates (pause subscription)" msgstr "" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:4 msgid "Synchronize to MP3 player devices" msgstr "" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:5 msgid "Strategy:" msgstr "" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:6 #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:6 msgid "General" msgstr "" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:7 msgid "HTTP/FTP Authentication" msgstr "" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:8 #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:13 msgid "Username:" msgstr "" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:9 #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:14 msgid "Password:" msgstr "" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:10 msgid "Locations" msgstr "" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:11 msgid "Download to:" msgstr "" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:12 msgid "Website:" msgstr "" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:13 msgid "website label" msgstr "" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:14 msgid "Advanced" msgstr "" #: share/gpodder/ui/gtk/gpodderconfigeditor.ui.h:1 msgid "gPodder Configuration Editor" msgstr "" #: share/gpodder/ui/gtk/gpodderconfigeditor.ui.h:2 msgid "Search for:" msgstr "" #: share/gpodder/ui/gtk/gpodderconfigeditor.ui.h:3 msgid "Show All" msgstr "" #: share/gpodder/ui/gtk/gpodderepisodeselector.ui.h:1 msgid "Select episodes" msgstr "" #: share/gpodder/ui/gtk/gpodderpodcastdirectory.ui.h:1 msgid "Find new podcasts" msgstr "" #: share/gpodder/ui/gtk/gpodderpodcastdirectory.ui.h:2 msgid "Select All" msgstr "" #: share/gpodder/ui/gtk/gpodderpodcastdirectory.ui.h:3 msgid "Select None" msgstr "" #: share/gpodder/ui/gtk/gpodderpodcastdirectory.ui.h:4 msgid "label" msgstr "" #: share/gpodder/ui/gtk/gpodderpodcastdirectory.ui.h:5 msgid "..." msgstr "" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:1 #: share/gpodder/ui/gtk/gpodder.ui.h:5 msgid "Preferences" msgstr "" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:2 msgid "Audio player:" msgstr "" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:3 msgid "Video player:" msgstr "" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:4 msgid "\"All episodes\" in podcast list" msgstr "" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:5 msgid "Use sections for podcast list" msgstr "" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:7 msgid "Preferred YouTube format:" msgstr "" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:8 msgid "YouTube API key (v3):" msgstr "" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:9 msgid "Preferred Vimeo format:" msgstr "" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:11 msgid "Extensions" msgstr "" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:12 msgid "Synchronize subscriptions and episode actions" msgstr "" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:15 msgid "Replace list on server with local subscriptions" msgstr "" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:16 msgid "Device name:" msgstr "" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:17 msgid "gpodder.net" msgstr "" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:18 msgid "Update interval:" msgstr "" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:19 msgid "Maximum number of episodes per podcast:" msgstr "" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:20 msgid "When new episodes are found:" msgstr "" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:21 msgid "Updating" msgstr "" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:22 msgid "Delete played episodes:" msgstr "" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:23 msgid "Remove played episodes even if unfinished" msgstr "" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:24 msgid "Also remove unplayed episodes" msgstr "" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:25 msgid "Clean-up" msgstr "" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:26 msgid "Device type:" msgstr "" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:27 msgid "Mountpoint:" msgstr "" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:28 msgid "After syncing an episode:" msgstr "" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:29 msgid "Create playlists on device" msgstr "" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:30 msgid "Playlists Folder:" msgstr "" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:31 msgid "Remove episodes deleted on device from gPodder" msgstr "" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:32 msgid "Only sync unplayed episodes" msgstr "" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:33 msgid "Devices" msgstr "" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:34 msgid "Edit config" msgstr "" #: share/gpodder/ui/gtk/gpodder.ui.h:1 msgid "_Podcasts" msgstr "" #: share/gpodder/ui/gtk/gpodder.ui.h:2 msgid "Check for new episodes" msgstr "" #: share/gpodder/ui/gtk/gpodder.ui.h:3 msgid "Download new episodes" msgstr "" #: share/gpodder/ui/gtk/gpodder.ui.h:7 msgid "_Subscriptions" msgstr "" #: share/gpodder/ui/gtk/gpodder.ui.h:8 msgid "Discover new podcasts" msgstr "" #: share/gpodder/ui/gtk/gpodder.ui.h:9 msgid "Add podcast via URL" msgstr "" #: share/gpodder/ui/gtk/gpodder.ui.h:11 msgid "Unsubscribe" msgstr "" #: share/gpodder/ui/gtk/gpodder.ui.h:14 msgid "Import from OPML file" msgstr "" #: share/gpodder/ui/gtk/gpodder.ui.h:15 msgid "Export to OPML file" msgstr "" #: share/gpodder/ui/gtk/gpodder.ui.h:16 msgid "Go to gpodder.net" msgstr "" #: share/gpodder/ui/gtk/gpodder.ui.h:17 msgid "_Episodes" msgstr "" #: share/gpodder/ui/gtk/gpodder.ui.h:18 msgid "Play" msgstr "" #: share/gpodder/ui/gtk/gpodder.ui.h:19 msgid "Open" msgstr "" #: share/gpodder/ui/gtk/gpodder.ui.h:22 msgid "Delete" msgstr "" #: share/gpodder/ui/gtk/gpodder.ui.h:23 msgid "Toggle new status" msgstr "" #: share/gpodder/ui/gtk/gpodder.ui.h:24 msgid "Change delete lock" msgstr "" #: share/gpodder/ui/gtk/gpodder.ui.h:26 msgid "E_xtras" msgstr "" #: share/gpodder/ui/gtk/gpodder.ui.h:27 msgid "Sync to device" msgstr "" #: share/gpodder/ui/gtk/gpodder.ui.h:28 msgid "Update YouTube subscriptions" msgstr "" #: share/gpodder/ui/gtk/gpodder.ui.h:29 msgid "_View" msgstr "" #: share/gpodder/ui/gtk/gpodder.ui.h:30 msgid "Toolbar" msgstr "" #: share/gpodder/ui/gtk/gpodder.ui.h:31 msgid "Episode descriptions" msgstr "" #: share/gpodder/ui/gtk/gpodder.ui.h:33 msgid "Hide deleted episodes" msgstr "" #: share/gpodder/ui/gtk/gpodder.ui.h:34 msgid "Downloaded episodes" msgstr "" #: share/gpodder/ui/gtk/gpodder.ui.h:35 msgid "Unplayed episodes" msgstr "" #: share/gpodder/ui/gtk/gpodder.ui.h:36 msgid "Hide podcasts without episodes" msgstr "" #: share/gpodder/ui/gtk/gpodder.ui.h:37 msgid "_Help" msgstr "" #: share/gpodder/ui/gtk/gpodder.ui.h:38 msgid "User manual" msgstr "" #: share/gpodder/ui/gtk/gpodder.ui.h:39 msgid "Software updates" msgstr "" #: share/gpodder/ui/gtk/gpodder.ui.h:40 msgid "Filter:" msgstr "" #: share/gpodder/ui/gtk/gpodder.ui.h:41 msgid "Podcasts" msgstr "" #: share/gpodder/ui/gtk/gpodder.ui.h:42 msgid "Limit rate to" msgstr "" #: share/gpodder/ui/gtk/gpodder.ui.h:43 msgid "KiB/s" msgstr "" #: share/gpodder/ui/gtk/gpodder.ui.h:44 msgid "Limit downloads to" msgstr "" #: share/gpodder/ui/gtk/gpodderwelcome.ui.h:2 msgid "Welcome to gPodder" msgstr "" #: share/gpodder/ui/gtk/gpodderwelcome.ui.h:3 msgid "Your podcast list is empty." msgstr "" #: share/gpodder/ui/gtk/gpodderwelcome.ui.h:4 msgid "Choose from a list of example podcasts" msgstr "" #: share/gpodder/ui/gtk/gpodderwelcome.ui.h:5 msgid "Add a podcast by entering its URL" msgstr "" #: share/gpodder/ui/gtk/gpodderwelcome.ui.h:6 msgid "Restore my subscriptions from gpodder.net" msgstr "" #: bin/gpo:266 msgid "Podcast update requested by extensions." msgstr "" #: bin/gpo:270 msgid "Episode download requested by extensions." msgstr "" #: bin/gpo:323 #, python-format msgid "Invalid url: %s" msgstr "" #: bin/gpo:340 bin/gpo:416 bin/gpo:450 bin/gpo:582 bin/gpo:597 bin/gpo:717 #, python-format msgid "You are not subscribed to %s." msgstr "" #: bin/gpo:346 #, python-format msgid "Already subscribed to %s." msgstr "" #: bin/gpo:352 #, python-format msgid "Cannot subscribe to %s." msgstr "" #: bin/gpo:368 #, python-format msgid "Successfully added %s." msgstr "" #: bin/gpo:386 msgid "This configuration option does not exist." msgstr "" #: bin/gpo:390 msgid "Can only set leaf configuration nodes." msgstr "" #: bin/gpo:404 #, python-format msgid "Renamed %(old_title)s to %(new_title)s." msgstr "" #: bin/gpo:420 #, python-format msgid "Unsubscribed from %s." msgstr "" #: bin/gpo:494 msgid "Updates disabled" msgstr "" #: bin/gpo:505 #, python-format msgid "%(count)d new episode" msgid_plural "%(count)d new episodes" msgstr[0] "" #: bin/gpo:511 msgid "Checking for new episodes" msgstr "" #: bin/gpo:520 #, python-format msgid "Skipping %(podcast)s" msgstr "" #: bin/gpo:588 #, python-format msgid "Disabling feed update from %s." msgstr "" #: bin/gpo:603 #, python-format msgid "Enabling feed update from %s." msgstr "" #: bin/gpo:616 #, python-format msgid "Please register a YouTube API key and set it using %(command)s." msgstr "" #: bin/gpo:643 #, python-format msgid "Changing: %(old_url)s => %(new_url)s" msgstr "" #: bin/gpo:653 msgid "Nothing to fix" msgstr "" #: bin/gpo:672 msgid "No podcasts found." msgstr "" #: bin/gpo:686 msgid "Enter index to subscribe, ? for list" msgstr "" #: bin/gpo:700 bin/gpo:704 msgid "Invalid value." msgstr "" #: bin/gpo:721 #, python-format msgid "Invalid URL: %s" msgstr "" #: bin/gpo:724 #, python-format msgid "Changed URL from %(old_url)s to %(new_url)s." msgstr "" #: bin/gpo:782 #, python-format msgid "Syntax error: %(error)s" msgstr "" #: bin/gpo:876 msgid "Ambiguous command. Did you mean.." msgstr "" #: bin/gpo:880 msgid "The requested function is not available." msgstr "" #: bin/gpodder:105 msgid "print logging output on the console" msgstr "" #: bin/gpodder:108 msgid "subscribe to the feed at URL" msgstr "" #: bin/gpodder:113 msgid "Mac OS X application process number" msgstr "" #: share/applications/gpodder.desktop.in.h:2 msgid "gPodder Podcast Client" msgstr "" #: share/applications/gpodder.desktop.in.h:3 msgid "Podcast Client" msgstr "" #: share/applications/gpodder.desktop.in.h:4 msgid "Subscribe to audio and video content from the web" msgstr "" #: share/applications/gpodder-url-handler.desktop.in.h:1 msgid "gPodder (subscribe to feed)" msgstr "" gpodder-3.9.0/po/ru.po0000644000016000001710000020013012654461626015675 0ustar jenkinsjenkins00000000000000# gPodder translation template. # Copyright (C) 2006 Thomas Perl # This file is distributed under the same license as the gPodder package. # Thomas Perl , 2006. # msgid "" msgstr "" "Project-Id-Version: gPodder 2.10+git\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2016-02-03 20:31+0000\n" "PO-Revision-Date: 2010-11-24 21:55+0300\n" "Last-Translator: Maxim Prohorov \n" "Language-Team: \n" "Language: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 " "|| n%100>=20) ? 1 : 2);\n" #: src/gpodder/config.py:55 #, python-format msgid "gPodder on %s" msgstr "gPodder аНаА %s" #: src/gpodder/directory.py:95 #, fuzzy msgid "gpodder.net search" msgstr "gpodder.net" #: src/gpodder/directory.py:104 #, fuzzy msgid "OPML from web" msgstr "OPML б„аАаЙаЛ" #: src/gpodder/directory.py:113 #, fuzzy msgid "OPML file" msgstr "аЄаАаЙаЛб‹ OPML" #: src/gpodder/directory.py:122 share/gpodder/ui/gtk/gpodderwelcome.ui.h:1 #, fuzzy msgid "Getting started" msgstr "ааАбб‚б€аОаЙаКаИ" #: src/gpodder/directory.py:131 #, fuzzy msgid "gpodder.net Top 50" msgstr "gpodder.net" #: src/gpodder/directory.py:140 #, fuzzy msgid "gpodder.net Tags" msgstr "gpodder.net" #: src/gpodder/directory.py:152 #, fuzzy msgid "Soundcloud search" msgstr "%s аНаА Soundcloud" #: src/gpodder/directory.py:165 #, fuzzy msgid "Imported OPML file" msgstr "а˜аМаПаОб€б‚ аИаЗ OPML" #: src/gpodder/download.py:329 msgid "Wrong username/password" msgstr "ааЕаВаЕб€аНаОаЕ аИаМб аПаОаЛбŒаЗаОаВаАб‚аЕаЛб/аПаАб€аОаЛбŒ" #: src/gpodder/download.py:527 src/gpodder/sync.py:924 msgid "Added" msgstr "а”аОаБаАаВаЛаЕаНаО" #: src/gpodder/download.py:527 src/gpodder/sync.py:924 msgid "Queued" msgstr "а’ аОб‡аЕб€аЕаДаИ" #: src/gpodder/download.py:527 src/gpodder/gtkui/model.py:327 msgid "Downloading" msgstr "а—аАаГб€бƒаЗаКаА" #: src/gpodder/download.py:528 src/gpodder/model.py:721 #: src/gpodder/sync.py:925 msgid "Finished" msgstr "а—аАаВаЕб€бˆаЕаНаО" #: src/gpodder/download.py:528 src/gpodder/sync.py:925 msgid "Failed" msgstr "аžбˆаИаБаКаА" #: src/gpodder/download.py:528 src/gpodder/sync.py:925 msgid "Cancelled" msgstr "аžб‚аМаЕаНаЕаНаО" #: src/gpodder/download.py:528 src/gpodder/sync.py:925 msgid "Paused" msgstr "аžбб‚аАаНаОаВаЛаЕаНаО" #: src/gpodder/download.py:862 msgid "Missing content from server" msgstr "аžб‚ббƒб‚бб‚аВбƒбŽб‚ аДаАаНаНб‹аЕ б баЕб€аВаЕб€аА" #: src/gpodder/download.py:868 #, python-format msgid "I/O Error: %(error)s: %(filename)s" msgstr "аžбˆаИаБаКаА аВаВаОаДаА/аВб‹аВаОаДаА: %(error)s: %(filename)s" #: src/gpodder/download.py:875 #, python-format msgid "HTTP Error %(code)s: %(message)s" msgstr "аžбˆаИаБаКаА HTTP %(code)s: %(message)s" #: src/gpodder/download.py:879 src/gpodder/sync.py:1081 #, python-format msgid "Error: %s" msgstr "аžбˆаИаБаКаА: %s" #: src/gpodder/extensions.py:55 msgid "Desktop Integration" msgstr "" #: src/gpodder/extensions.py:56 #, fuzzy msgid "Interface" msgstr "аІаЕаЛаОаЕ" #: src/gpodder/extensions.py:57 #, fuzzy msgid "Post download" msgstr "аŸб€аИаОбб‚аАаНаОаВаИб‚бŒ аЗаАаГб€бƒаЗаКбƒ." #: src/gpodder/extensions.py:59 src/gpodder/model.py:779 #: src/gpodder/model.py:1225 msgid "Other" msgstr "а”б€бƒаГаОаЕ" #: src/gpodder/extensions.py:100 #, fuzzy msgid "No description for this extension." msgstr "ааЕб‚ аОаПаИбаАаНаИб." #: src/gpodder/extensions.py:212 #, python-format msgid "Command not found: %(command)s" msgstr "" #: src/gpodder/extensions.py:228 #, python-format msgid "Need at least one of the following commands: %(list_of_commands)s" msgstr "" #: src/gpodder/extensions.py:265 #, fuzzy, python-format msgid "Python module not found: %(module)s" msgstr "Python module \"%s\" not installed" #: src/gpodder/model.py:446 src/gpodder/plugins/soundcloud.py:156 msgid "No description available" msgstr "ааЕб‚ аОаПаИбаАаНаИб" #: src/gpodder/model.py:679 msgid "unknown" msgstr "аНаЕаИаЗаВаЕбб‚аНаО" #: src/gpodder/model.py:746 msgid "Default" msgstr "" #: src/gpodder/model.py:747 msgid "Only keep latest" msgstr "" #: src/gpodder/model.py:1208 src/gpodder/model.py:1223 #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:10 msgid "Video" msgstr "а’аИаДаЕаО" #: src/gpodder/model.py:1221 msgid "Audio" msgstr "абƒаДаИаО" #: src/gpodder/my.py:174 #, python-format msgid "Add %s" msgstr "а”аОаБаАаВаЛаЕаНаИаЕ %s" #: src/gpodder/my.py:176 #, python-format msgid "Remove %s" msgstr "аЃаДаАаЛаИб‚бŒ %s?" #: src/gpodder/sync.py:196 msgid "Cancelled by user" msgstr "аžб‚аМаЕаНаЕаНаО аПаОаЛбŒаЗаОаВаАб‚аЕаЛаЕаМ" #: src/gpodder/sync.py:199 msgid "Writing data to disk" msgstr "а—аАаПаИббŒ аНаА аДаИбаК" #: src/gpodder/sync.py:295 msgid "Opening iPod database" msgstr "аžб‚аКб€б‹б‚аИб аБаАаЗб‹ аДаАаНаНб‹б… iPod" #: src/gpodder/sync.py:305 msgid "iPod opened" msgstr "iPod аОб‚аКб€б‹б‚" #: src/gpodder/sync.py:316 msgid "Saving iPod database" msgstr "аЁаОб…б€аАаНаЕаНаИаЕ аБаАаЗб‹ аДаАаНаНб‹б… iPod" #: src/gpodder/sync.py:321 msgid "Writing extended gtkpod database" msgstr "а—аАаПаИббŒ аВ аБаАаЗбƒ аДаАаНаНб‹б… gtkpod" #: src/gpodder/sync.py:397 src/gpodder/sync.py:680 src/gpodder/sync.py:874 #, python-format msgid "Removing %s" msgstr "аЃаДаАаЛаЕаНаИаЕ %s" #: src/gpodder/sync.py:412 src/gpodder/sync.py:557 #, python-format msgid "Adding %s" msgstr "а”аОаБаАаВаЛаЕаНаИаЕ %s" #: src/gpodder/sync.py:430 #, python-format msgid "Error copying %(episode)s: Not enough free space on %(mountpoint)s" msgstr "" "аžбˆаИаБаКаА аПб€аИ аКаОаПаИб€аОаВаАаНаИаИ %(episode)s: ааЕаДаОбб‚аАб‚аОб‡аНаО баВаОаБаОаДаНаОаГаО аМаЕбб‚аА аНаА " "%(mountpoint)s" #: src/gpodder/sync.py:515 msgid "Opening MP3 player" msgstr "аžб‚аКб€б‹б‚аИаЕ MP3 аПаЛаЕаЕб€аА" #: src/gpodder/sync.py:518 msgid "MP3 player opened" msgstr "MP3 аПаЛаЕаЕб€ аОб‚аКб€б‹б‚" #: src/gpodder/sync.py:576 #, python-format msgid "" "Not enough space in %(path)s: %(free)s available, but need at least %(need)s" msgstr "" #: src/gpodder/sync.py:603 src/gpodder/sync.py:611 #, python-format msgid "Error opening %(filename)s: %(message)s" msgstr "аžбˆаИаБаКаА аОб‚аКб€б‹б‚аИб %(filename)s: %(message)s" #: src/gpodder/sync.py:780 src/gpodder/sync.py:786 msgid "MTP device" msgstr "MTP бƒбб‚б€аОаЙбб‚аВаО" #: src/gpodder/sync.py:793 msgid "Opening the MTP device" msgstr "аžб‚аКб€б‹б‚аИаЕ MTP бƒбб‚б€аОаЙбб‚аВаА" #: src/gpodder/sync.py:803 #, python-format msgid "%s opened" msgstr "%s аОб‚аКб€б‹б‚аО" #: src/gpodder/sync.py:808 #, python-format msgid "Closing %s" msgstr "а—аАаКб€б‹б‚аИаЕ %s" #: src/gpodder/sync.py:816 #, python-format msgid "%s closed" msgstr "%s аЗаАаКб€б‹б‚аО" #: src/gpodder/sync.py:821 bin/gpo:708 #, python-format msgid "Adding %s..." msgstr "а”аОаБаАаВаЛаЕаНаИаЕ %s..." #: src/gpodder/sync.py:924 #, fuzzy msgid "Synchronizing" msgstr "аЁаИаНб…б€аОаНаИаЗаАб†аИб" #: src/gpodder/util.py:429 #, python-format msgid "%(count)d day ago" msgid_plural "%(count)d days ago" msgstr[0] "аžаДаИаН аДаЕаНбŒ аНаАаЗаАаД" msgstr[1] "%(count)d аДаНб аНаАаЗаАаД" msgstr[2] "%(count)d аДаНаЕаЙ аНаАаЗаАаД" #: src/gpodder/util.py:508 msgid "Today" msgstr "аЁаЕаГаОаДаНб" #: src/gpodder/util.py:510 msgid "Yesterday" msgstr "а’б‡аЕб€аА" #: src/gpodder/util.py:553 src/gpodder/util.py:556 msgid "(unknown)" msgstr "(аНаЕаИаЗаВаЕбб‚аНаО)" #: src/gpodder/util.py:1193 src/gpodder/util.py:1212 #, python-format msgid "%(count)d second" msgid_plural "%(count)d seconds" msgstr[0] "аžаДаНаА баЕаКбƒаНаДаА" msgstr[1] "%(count)d баЕаКбƒаНаДб‹" msgstr[2] "%(count)d баЕаКбƒаНаД" #: src/gpodder/util.py:1206 #, python-format msgid "%(count)d hour" msgid_plural "%(count)d hours" msgstr[0] "аОаДаИаН б‡аАб" msgstr[1] "%(count)d б‡аАбаА" msgstr[2] "%(count)d б‡аАбаОаВ" #: src/gpodder/util.py:1209 #, python-format msgid "%(count)d minute" msgid_plural "%(count)d minutes" msgstr[0] "аžаДаНаА аМаИаНбƒб‚аА" msgstr[1] "%(count)d аМаИаНбƒб‚б‹" msgstr[2] "%(count)d аМаИаНбƒб‚" #: src/gpodder/util.py:1215 msgid "and" msgstr "аИ" #: src/gpodder/gtkui/config.py:50 msgid "Integer" msgstr "аІаЕаЛаОаЕ" #: src/gpodder/gtkui/config.py:52 msgid "Float" msgstr "аЁ аПаЛаАаВаАбŽб‰аЕаЙ аЗаАаПбб‚аОаЙ" #: src/gpodder/gtkui/config.py:54 msgid "Boolean" msgstr "а‘бƒаЛаЕаВаО" #: src/gpodder/gtkui/config.py:56 msgid "String" msgstr "аЁб‚б€аОаКаА" #: src/gpodder/gtkui/desktopfile.py:70 #, python-format msgid "Command: %s" msgstr "аšаОаМаАаНаДаА: %s" #: src/gpodder/gtkui/desktopfile.py:150 msgid "Default application" msgstr "аŸб€аИаЛаОаЖаЕаНаИаЕ аПаО-бƒаМаОаЛб‡аАаНаИбŽ" #: src/gpodder/gtkui/main.py:205 share/applications/gpodder.desktop.in.h:1 msgid "gPodder" msgstr "gPodder" #: src/gpodder/gtkui/main.py:288 msgid "Loading incomplete downloads" msgstr "а’аОаЗаОаБаНаОаВаЛаЕаНаИаЕ аЗаАаГб€бƒаЗаКаИ" #: src/gpodder/gtkui/main.py:289 msgid "Some episodes have not finished downloading in a previous session." msgstr "" "аЁаО аВб€аЕаМаЕаНаИ аПб€аЕаДб‹аДбƒб‰аЕаГаО аЗаАаПбƒбаКаА аПб€аОаГб€аАаМаМб‹ аОбб‚аАаЛаИббŒ аНаЕаЗаАаВаЕб€бˆб‘аНаНб‹аЕ аЗаАаГб€бƒаЗаКаИ." #: src/gpodder/gtkui/main.py:291 #, python-format msgid "%(count)d partial file" msgid_plural "%(count)d partial files" msgstr[0] "аžаДаИаН аНаЕаЗаАаВаЕб€бˆб‘аНаНб‹аЙ б„аАаЙаЛ" msgstr[1] "%(count)d аНаЕаЗаАаВаЕб€бˆб‘аНаНб‹б… б„аАаЙаЛаА" msgstr[2] "%(count)d аНаЕаЗаАаВаЕб€бˆб‘аНаНб‹б… б„аАаЙаЛаОаВ" #: src/gpodder/gtkui/main.py:306 msgid "Resume all" msgstr "а’аОаЗаОаБаНаОаВаИб‚бŒ" #: src/gpodder/gtkui/main.py:316 msgid "Incomplete downloads from a previous session were found." msgstr "ааЕаКаОб‚аОб€б‹аЕ аЗаАаГб€бƒаЗаКаИ аБб‹аЛаИ аНаЕ аЗаАаВаЕб€бˆаЕаНб‹." #: src/gpodder/gtkui/main.py:414 msgid "Action" msgstr "а”аЕаЙбб‚аВаИаЕ" #: src/gpodder/gtkui/main.py:461 msgid "Confirm changes from gpodder.net" msgstr "аЁаОб…б€аАаНаИб‚бŒ аИаЗаМаЕаНаЕаНаИб б gpodder.net" #: src/gpodder/gtkui/main.py:462 msgid "Select the actions you want to carry out." msgstr "а’б‹аБаЕб€аИб‚аЕ аПаОаДаКаАбб‚б‹ аДаЛб бƒаДаАаЛаЕаНаИб." #: src/gpodder/gtkui/main.py:502 msgid "Uploading subscriptions" msgstr "аЁаОб…б€аАаНаЕаНаИаЕ аПаОаДаПаИбаКаОаК" #: src/gpodder/gtkui/main.py:503 msgid "Your subscriptions are being uploaded to the server." msgstr "аŸаОаДаПаИбаКаИ аЗаАаГб€бƒаЖаЕаНб‹ аНаА баЕб€аВаЕб€." #: src/gpodder/gtkui/main.py:508 msgid "List uploaded successfully." msgstr "аЁаПаИбаОаК бƒбаПаЕбˆаНаО баОб…б€аАаНаЕаН." #: src/gpodder/gtkui/main.py:515 msgid "Error while uploading" msgstr "аžбˆаИаБаКаА аПб€аИ аЗаАаГб€бƒаЗаКаЕ" #: src/gpodder/gtkui/main.py:800 src/gpodder/gtkui/main.py:928 #: src/gpodder/gtkui/main.py:2622 src/gpodder/gtkui/main.py:2815 #: src/gpodder/gtkui/desktop/episodeselector.py:132 #: src/gpodder/gtkui/desktop/sync.py:270 msgid "Episode" msgstr "а’б‹аПбƒбаК" #: src/gpodder/gtkui/main.py:819 msgid "Size" msgstr "а аАаЗаМаЕб€" #: src/gpodder/gtkui/main.py:824 msgid "Duration" msgstr "аŸб€аОаДаОаЛаЖаИб‚аЕаЛбŒаНаОбб‚бŒ" #: src/gpodder/gtkui/main.py:828 msgid "Released" msgstr "а’б‹бˆаЕаЛ" #: src/gpodder/gtkui/main.py:855 msgid "Visible columns" msgstr "а’аИаДаИаМб‹аЕ аКаОаЛаОаНаКаИ" #: src/gpodder/gtkui/main.py:948 src/gpodder/gtkui/main.py:1108 #: share/gpodder/ui/gtk/gpodder.ui.h:45 msgid "Progress" msgstr "аŸб€аОаГб€аЕбб" #: src/gpodder/gtkui/main.py:982 msgid "Loading episodes" msgstr "а—аАаГб€бƒаЗаКаА аВб‹аПбƒбаКаОаВ" #: src/gpodder/gtkui/main.py:985 msgid "No episodes in current view" msgstr "ааЕб‚ аВб‹аПбƒбаКаОаВ аДаЛб аОб‚аОаБб€аАаЖаЕаНаИб" #: src/gpodder/gtkui/main.py:987 msgid "No episodes available" msgstr "ааЕб‚ аДаОбб‚бƒаПаНб‹б… аВб‹аПбƒбаКаОаВ" #: src/gpodder/gtkui/main.py:993 msgid "No podcasts in this view" msgstr "ааЕб‚ аПаОаДаКаАбб‚аОаВ" #: src/gpodder/gtkui/main.py:995 msgid "No subscriptions" msgstr "ааЕб‚ аПаОаДаПаИбаОаК" #: src/gpodder/gtkui/main.py:997 #, fuzzy msgid "No active tasks" msgstr "ааЕб‚ аАаКб‚аИаВаНб‹б… аЗаАаГб€бƒаЗаОаК" #: src/gpodder/gtkui/main.py:1112 src/gpodder/gtkui/main.py:1114 #, python-format msgid "%(count)d active" msgid_plural "%(count)d active" msgstr[0] "аОаДаНаА аАаКб‚аИаВаНаАб" msgstr[1] "%(count)d аАаКб‚аИаВаНб‹б…" msgstr[2] "%(count)d аАаКб‚аИаВаНб‹б…" #: src/gpodder/gtkui/main.py:1116 #, python-format msgid "%(count)d failed" msgid_plural "%(count)d failed" msgstr[0] "аОбˆаИаБаКаА" msgstr[1] "%(count)d аОбˆаИаБаКаИ" msgstr[2] "%(count)d аОбˆаИаБаОаК" #: src/gpodder/gtkui/main.py:1118 #, python-format msgid "%(count)d queued" msgid_plural "%(count)d queued" msgstr[0] "аОаДаНаА аВ аОб‡аЕб€аЕаДаИ" msgstr[1] "%(count)d аВ аОб‡аЕб€аЕаДаИ" msgstr[2] "%(count)d аВ аОб‡аЕб€аЕаДаИ" #: src/gpodder/gtkui/main.py:1132 #, python-format msgid "downloading %(count)d file" msgid_plural "downloading %(count)d files" msgstr[0] "аЗаАаГб€бƒаЗаКаА б„аАаЙаЛаА" msgstr[1] "аЗаАаГб€бƒаЗаКаА %(count)dб… б„аАаЙаЛаОаВ" msgstr[2] "аЗаАаГб€бƒаЗаКаА %(count)dб‚аИ б„аАаЙаЛаОаВ" #: src/gpodder/gtkui/main.py:1142 #, fuzzy, python-format msgid "synchronizing %(count)d file" msgid_plural "synchronizing %(count)d files" msgstr[0] "аЗаАаГб€бƒаЗаКаА б„аАаЙаЛаА" msgstr[1] "аЗаАаГб€бƒаЗаКаА %(count)dб… б„аАаЙаЛаОаВ" msgstr[2] "аЗаАаГб€бƒаЗаКаА %(count)dб‚аИ б„аАаЙаЛаОаВ" #: src/gpodder/gtkui/main.py:1144 #, fuzzy, python-format msgid "%(queued)d task queued" msgid_plural "%(queued)d tasks queued" msgstr[0] "аОаДаНаА аВ аОб‡аЕб€аЕаДаИ" msgstr[1] "%(count)d аВ аОб‡аЕб€аЕаДаИ" msgstr[2] "%(count)d аВ аОб‡аЕб€аЕаДаИ" #: src/gpodder/gtkui/main.py:1168 msgid "Please report this problem and restart gPodder:" msgstr "аŸаОаЖаАаЛбƒаЙбб‚аА баОаОаБб‰аИб‚аЕ аОаБ бб‚аОаЙ аОбˆаИаБаКаЕ аИ аПаЕб€аЕаЗаАаПбƒбб‚аИб‚аЕ gPodder:" #: src/gpodder/gtkui/main.py:1168 msgid "Unhandled exception" msgstr "Unhandled exception" #: src/gpodder/gtkui/main.py:1235 #, python-format msgid "Feedparser error: %s" msgstr "аžбˆаИаБаКаА Feedparser: %s" #: src/gpodder/gtkui/main.py:1371 #, fuzzy msgid "Could not download some episodes:" msgstr "ааЕаВаОаЗаМаОаЖаНаО аДаОаБаАаВаИб‚бŒ аПаОаДаКаАбб‚б‹" #: src/gpodder/gtkui/main.py:1373 src/gpodder/gtkui/main.py:1376 msgid "Downloads finished" msgstr "а—аАаГб€бƒаЗаКаИ аВб‹аПаОаЛаНаЕаНб‹" #: src/gpodder/gtkui/main.py:1379 msgid "Downloads failed" msgstr "аžбˆаИаБаКаА" #: src/gpodder/gtkui/main.py:1383 #, fuzzy msgid "Could not sync some episodes:" msgstr "ааЕаВаОаЗаМаОаЖаНаО аДаОаБаАаВаИб‚бŒ аПаОаДаКаАбб‚б‹" #: src/gpodder/gtkui/main.py:1385 src/gpodder/gtkui/main.py:1388 #, fuzzy msgid "Device synchronization finished" msgstr "аЃбб‚б€аОаЙбб‚аВаО баИаНб…б€аОаНаИаЗаИб€аОаВаАаНаО" #: src/gpodder/gtkui/main.py:1391 #, fuzzy msgid "Device synchronization failed" msgstr "аЃбб‚б€аОаЙбб‚аВаО баИаНб…б€аОаНаИаЗаИб€аОаВаАаНаО" #: src/gpodder/gtkui/main.py:1434 #, python-format msgid "%(count)d more episode" msgid_plural "%(count)d more episodes" msgstr[0] "аžаДаИаН аВб‹аПбƒбаК" msgstr[1] "%(count)d аВб‹аПбƒбаКаА" msgstr[2] "%(count)d аВб‹аПбƒбаКаОаВ" #: src/gpodder/gtkui/main.py:1508 msgid "Start download now" msgstr "а—аАаГб€бƒаЗаИб‚бŒ баЕаЙб‡аАб" #: src/gpodder/gtkui/main.py:1510 src/gpodder/gtkui/main.py:1719 #: src/gpodder/gtkui/desktop/episodeselector.py:144 #: share/gpodder/ui/gtk/gpodder.ui.h:20 msgid "Download" msgstr "а—аАаГб€бƒаЗаКаА" #: src/gpodder/gtkui/main.py:1511 share/gpodder/ui/gtk/gpodder.ui.h:21 msgid "Cancel" msgstr "аžб‚аМаЕаНаА" #: src/gpodder/gtkui/main.py:1512 msgid "Pause" msgstr "аŸаАбƒаЗаА" #: src/gpodder/gtkui/main.py:1514 msgid "Remove from list" msgstr "аЃаДаАаЛаИб‚бŒ" #: src/gpodder/gtkui/main.py:1553 share/gpodder/ui/gtk/gpodder.ui.h:13 msgid "Update podcast" msgstr "аžаБаНаОаВаИб‚бŒ аПаОаДаКаАбб‚" #: src/gpodder/gtkui/main.py:1560 msgid "Open download folder" msgstr "аžб‚аКб€б‹б‚бŒ аКаАб‚аАаЛаОаГ аЗаАаГб€бƒаЗаОаК" #: src/gpodder/gtkui/main.py:1566 #, fuzzy msgid "Mark episodes as old" msgstr "аžб‚аМаЕб‚аИб‚бŒ аВб‹аПбƒбаК аКаАаК аПб€аОбаЛбƒбˆаАаНаНб‹аЙ" #: src/gpodder/gtkui/main.py:1570 src/gpodder/gtkui/main.py:1778 msgid "Archive" msgstr "аб€б…аИаВ" #: src/gpodder/gtkui/main.py:1575 msgid "Remove podcast" msgstr "аЃаДаАаЛаИб‚бŒ аПаОаДаКаАбб‚" #: src/gpodder/gtkui/main.py:1590 share/gpodder/ui/gtk/gpodder.ui.h:10 msgid "Podcast settings" msgstr "ааАбб‚б€аОаЙаКаИ аПаОаДаКаАбб‚аА" #: src/gpodder/gtkui/main.py:1650 msgid "Error converting file." msgstr "аžбˆаИаБаКаА аКаОаНаВаЕб€б‚аАб†аИаИ" #: src/gpodder/gtkui/main.py:1650 msgid "Bluetooth file transfer" msgstr "аŸаЕб€аЕаДаАб‡аА б„аАаЙаЛаОаВ аПаО Bluetooth" #: src/gpodder/gtkui/main.py:1709 msgid "Preview" msgstr "аŸб€аЕаВбŒбŽ" #: src/gpodder/gtkui/main.py:1711 msgid "Stream" msgstr "аŸаОб‚аОаК" #: src/gpodder/gtkui/main.py:1755 msgid "Send to" msgstr "аžб‚аПб€аАаВаИб‚бŒ" #: src/gpodder/gtkui/main.py:1757 msgid "Local folder" msgstr "аšаАб‚аАаЛаОаГ" #: src/gpodder/gtkui/main.py:1762 msgid "Bluetooth device" msgstr "Bluetooth" #: src/gpodder/gtkui/main.py:1769 msgid "New" msgstr "ааОаВб‹аЙ" #: src/gpodder/gtkui/main.py:1785 share/gpodder/ui/gtk/gpodder.ui.h:25 msgid "Episode details" msgstr "а”аЕб‚аАаЛаИ аВб‹аПбƒбаКаА" #: src/gpodder/gtkui/main.py:1938 msgid "Please check your media player settings in the preferences dialog." msgstr "аŸб€аОаВаЕб€бŒб‚аЕ аНаАбб‚б€аОаЙаКаИ аВаАбˆаЕаГаО бƒбб‚б€аОаЙбб‚аВаА" #: src/gpodder/gtkui/main.py:1939 msgid "Error opening player" msgstr "аžбˆаИаБаКаА аОб‚аКб€б‹б‚аИб бƒбб‚б€аОаЙбб‚аВаА" #: src/gpodder/gtkui/main.py:2178 msgid "Adding podcasts" msgstr "а”аОаБаАаВаЛаЕаНаИаЕ аПаОаДаКаАбб‚аОаВ" #: src/gpodder/gtkui/main.py:2179 msgid "Please wait while episode information is downloaded." msgstr "а—аАаГб€бƒаЖаАаЕб‚бб аИаНб„аОб€аМаАб†аИб аО аВб‹аПбƒбаКаЕ" #: src/gpodder/gtkui/main.py:2186 msgid "Existing subscriptions skipped" msgstr "аЁбƒб‰аЕбб‚аВбƒбŽб‰аИаЕ аПаОаДаПаИбаКаИ аПб€аОаПбƒб‰аЕаНб‹" #: src/gpodder/gtkui/main.py:2187 msgid "You are already subscribed to these podcasts:" msgstr "а’б‹ бƒаЖаЕ аПаОаДаПаИбаАаНб‹ аНаА бб‚аИ аПаОаДаКаАбб‚б‹:" #: src/gpodder/gtkui/main.py:2195 msgid "Podcast requires authentication" msgstr "а”аЛб аДаОбб‚бƒаПаА аНаЕаОаБб…аОаДаИаМаА аАбƒб‚аЕаНб‚аИб„аИаКаАб†аИб" #: src/gpodder/gtkui/main.py:2196 #, python-format msgid "Please login to %s:" msgstr "а’аОаЙаДаИб‚аЕ аВ %s:" #: src/gpodder/gtkui/main.py:2204 src/gpodder/gtkui/main.py:2299 msgid "Authentication failed" msgstr "аžбˆаИаБаКаА аАбƒб‚аЕаНб‚аИб„аИаКаАб†аИаИ" #: src/gpodder/gtkui/main.py:2210 msgid "Website redirection detected" msgstr "а—аАаМаЕб‡аЕаНаО аПаЕб€аЕаНаАаПб€аАаВаЛаЕаНаИаЕ" #: src/gpodder/gtkui/main.py:2211 #, python-format msgid "The URL %(url)s redirects to %(target)s." msgstr "%(url)s ббб‹аЛаАаЕб‚бб аНаА %(target)s. " #: src/gpodder/gtkui/main.py:2212 msgid "Do you want to visit the website now?" msgstr "аŸб€аОаДаОаЛаЖаИб‚бŒ?" #: src/gpodder/gtkui/main.py:2221 msgid "Could not add some podcasts" msgstr "ааЕаВаОаЗаМаОаЖаНаО аДаОаБаАаВаИб‚бŒ аПаОаДаКаАбб‚б‹" #: src/gpodder/gtkui/main.py:2222 msgid "Some podcasts could not be added to your list:" msgstr "а­б‚аИ аПаОаДаКаАбб‚б‹ аНаЕ аБб‹аЛаИ аДаОаБаАаВаЛаЕаНб‹:" #: src/gpodder/gtkui/main.py:2224 msgid "Unknown" msgstr "ааЕаИаЗаВаЕбб‚аНаО" #: src/gpodder/gtkui/main.py:2308 msgid "Redirection detected" msgstr "аŸаЕб€аЕаНаАаПб€аАаВаЛаЕаНаИаЕ" #: src/gpodder/gtkui/main.py:2342 msgid "Merging episode actions" msgstr "аЁаИаНб…б€аОаНаИаЗаАб†аИб аДаЕаЙбб‚аВаИаЙ" #: src/gpodder/gtkui/main.py:2343 msgid "Episode actions from gpodder.net are merged." msgstr "а”аЕаЙбб‚аВаИб аНаАаД баПаИаЗаОаДаАаМаИ баИаНб…б€аОаНаИаЗаИб€аОаВаАаНб‹." #: src/gpodder/gtkui/main.py:2368 msgid "Cancelling..." msgstr "аžб‚аМаЕаНбаЕб‚бб..." #: src/gpodder/gtkui/main.py:2377 msgid "Please connect to a network, then try again." msgstr "" #: src/gpodder/gtkui/main.py:2378 #, fuzzy msgid "No network connection" msgstr "ааОаВаОаЕ аИаМб:" #: src/gpodder/gtkui/main.py:2399 #, python-format msgid "Updating %(count)d feed..." msgid_plural "Updating %(count)d feeds..." msgstr[0] "аžаБаНаОаВаЛаЕаНаИаЕ %(count)d..." msgstr[1] "аžаБаНаОаВаЛаЕаНаИаЕ %(count)d..." msgstr[2] "аžаБаНаОаВаЛаЕаНаИаЕ %(count)d..." #: src/gpodder/gtkui/main.py:2417 #, python-format msgid "Error while updating %(url)s: %(message)s" msgstr "аžбˆаИаБаКаА аОаБаНаОаВаЛаЕаНаИб %(url)s: %(message)s" #: src/gpodder/gtkui/main.py:2419 #, python-format msgid "The feed at %(url)s could not be updated." msgstr "аŸаОаДаПаИбаКаА %(url)s аНаЕ аМаОаЖаЕб‚ аБб‹б‚бŒ аОаБаНаОаВаЛаЕаНаА." #: src/gpodder/gtkui/main.py:2420 msgid "Error while updating feed" msgstr "аžбˆаИаБаКаА аПб€аИ аОаБаНаОаВаЛаЕаНаИаИ аПаОаДаПаИбаКаИ" #: src/gpodder/gtkui/main.py:2435 #, python-format msgid "Updated %(podcast)s (%(position)d/%(total)d)" msgstr "аžаБаНаОаВаЛаЕаНаИаЕ %(podcast)s (%(position)d/%(total)d)" #: src/gpodder/gtkui/main.py:2466 msgid "No new episodes" msgstr "ааЕб‚ аНаОаВб‹б… аВб‹аПбƒбаКаОаВ" #: src/gpodder/gtkui/main.py:2479 #, python-format msgid "Downloading %(count)d new episode." msgid_plural "Downloading %(count)d new episodes." msgstr[0] "а—аАаГб€бƒаЗаКаА аНаОаВаОаГаО аВб‹аПбƒбаКаА." msgstr[1] "а—аАаГб€бƒаЗаКаА %(count)dб… аНаОаВб‹б… аВб‹аПбƒбаКаОаВ." msgstr[2] "а—аАаГб€бƒаЗаКаА %(count)dб‚аИ аНаОаВб‹б… аВб‹аПбƒбаКаОаВ." #: src/gpodder/gtkui/main.py:2480 src/gpodder/gtkui/main.py:2484 #: src/gpodder/gtkui/main.py:2833 msgid "New episodes available" msgstr "а”аОбб‚бƒаПаНб‹ аНаОаВб‹аЕ аВб‹аПбƒбаКаИ" #: src/gpodder/gtkui/main.py:2483 #, python-format msgid "%(count)d new episode added to download list." msgid_plural "%(count)d new episodes added to download list." msgstr[0] "ааОаВб‹аЙ аВб‹аПбƒбаК аДаОбб‚бƒаПаЕаН аДаЛб аЗаАаГб€бƒаЗаКаИ" msgstr[1] "%(count)d аНаОаВб‹б… аВб‹аПбƒбаКаА аДаОбб‚бƒаПаНб‹ аДаЛб аЗаАаГб€бƒаЗаКаИ" msgstr[2] "%(count)d аНаОаВб‹б… аВб‹аПбƒбаКаОаВ аДаОбб‚бƒаПаНаО аДаЛб аЗаАаГб€бƒаЗаКаИ" #: src/gpodder/gtkui/main.py:2490 #, python-format msgid "%(count)d new episode available" msgid_plural "%(count)d new episodes available" msgstr[0] "ааОаВб‹аЙ аВб‹аПбƒбаК" msgstr[1] "%(count)d аНаОаВб‹б… аВб‹аПбƒбаКаА" msgstr[2] "%(count)d аНаОаВб‹б… аВб‹аПбƒбаКаОаВ" #: src/gpodder/gtkui/main.py:2509 msgid "Quit gPodder" msgstr "а’б‹б…аОаД" #: src/gpodder/gtkui/main.py:2510 msgid "" "You are downloading episodes. You can resume downloads the next time you " "start gPodder. Do you want to quit now?" msgstr "" "а•бб‚бŒ аАаКб‚аИаВаНб‹аЕ аЗаАаГб€бƒаЗаКаИ. аžаНаИ аМаОаГбƒб‚ аБб‹б‚бŒ аПб€аОаДаОаЛаЖаЕаНб‹ аПб€аИ баЛаЕаДбƒбŽб‰аЕаМ аЗаАаПбƒбаКаЕ " "gPodder. а’б‹аЙб‚аИ?" #: src/gpodder/gtkui/main.py:2559 msgid "Episodes are locked" msgstr "а’б‹аПбƒбаКаИ аЗаАб‰аИб‰аЕаНб‹ аОб‚ бƒаДаАаЛаЕаНаИб" #: src/gpodder/gtkui/main.py:2560 msgid "" "The selected episodes are locked. Please unlock the episodes that you want " "to delete before trying to delete them." msgstr "" "а’б‹ аНаЕ аМаОаЖаЕб‚аЕ бƒаДаАаЛаИб‚бŒ бб‚аИ аВб‹аПбƒбаКаИ. аžб‚аКаЛбŽб‡аИб‚аЕ аЗаАаПб€аЕб‚ аВ аНаАбб‚б€аОаЙаКаАб… аВб‹аПбƒбаКаОаВ/" "аПаОаДаКаАбб‚аА. " #: src/gpodder/gtkui/main.py:2565 #, python-format msgid "Delete %(count)d episode?" msgid_plural "Delete %(count)d episodes?" msgstr[0] "аЃаДаАаЛаИб‚бŒ аВб‹аПбƒбаК?" msgstr[1] "аЃаДаАаЛаИб‚бŒ аВб‹аПбƒбаКаИ (%(count)d)?" msgstr[2] "аЃаДаАаЛаИб‚бŒ аВб‹аПбƒбаКаИ (%(count)d)?" #: src/gpodder/gtkui/main.py:2566 msgid "Deleting episodes removes downloaded files." msgstr "а—аАаГб€бƒаЖаЕаНаНб‹аЕ б„аАаЙаЛб‹ аБбƒаДбƒб‚ бƒаДаАаЛаЕаНб‹" #: src/gpodder/gtkui/main.py:2571 msgid "Deleting episodes" msgstr "аЃаДаАаЛаЕаНаИаЕ аВб‹аПбƒбаКаОаВ" #: src/gpodder/gtkui/main.py:2572 msgid "Please wait while episodes are deleted" msgstr "аŸаОаДаОаЖаДаИб‚аЕ, аВб‹аПбƒбаКаИ бƒаДаАаЛббŽб‚бб" #: src/gpodder/gtkui/main.py:2625 #, python-format msgid "Select older than %(count)d day" msgid_plural "Select older than %(count)d days" msgstr[0] "а’б‹аБб€аАб‚бŒ бб‚аАб€бˆаЕ б‡аЕаМ аОаДаИаН аДаЕаНбŒ" msgstr[1] "а’б‹аБб€аАб‚бŒ бб‚аАб€бˆаЕ б‡аЕаМ %(count)d аДаНб" msgstr[2] "а’б‹аБб€аАб‚бŒ бб‚аАб€бˆаЕ б‡аЕаМ %(count)d аДаНаЕаЙ" #: src/gpodder/gtkui/main.py:2627 msgid "Select played" msgstr "а’б‹аБб€аАб‚бŒ аПб€аОбаЛбƒбˆаАаНаНб‹аЕ" #: src/gpodder/gtkui/main.py:2628 msgid "Select finished" msgstr "а’б‹аБб€аАб‚бŒ аЗаАаВаЕб€бˆаЕаНаНб‹аЕ" #: src/gpodder/gtkui/main.py:2632 msgid "Select the episodes you want to delete:" msgstr "а’б‹аПбƒбаКаИ аДаЛб бƒаДаАаЛаЕаНаИб:" #: src/gpodder/gtkui/main.py:2648 share/gpodder/ui/gtk/gpodder.ui.h:4 msgid "Delete episodes" msgstr "аЃаДаАаЛаИб‚бŒ аВб‹аПбƒбаКаИ" #: src/gpodder/gtkui/main.py:2703 src/gpodder/gtkui/main.py:2934 #: src/gpodder/gtkui/main.py:3034 msgid "No podcast selected" msgstr "ааЕ аВб‹аБб€аАаНаО аПаОаДаКаАбб‚аОаВ" #: src/gpodder/gtkui/main.py:2704 msgid "Please select a podcast in the podcasts list to update." msgstr "аŸаОаДаКаАбб‚б‹ аДаЛб аОаБаНаОаВаЛаЕаНаИб" #: src/gpodder/gtkui/main.py:2774 #, python-format msgid "Download error while downloading %(episode)s: %(message)s" msgstr "аŸб€аОаИаЗаОбˆаЛаА аОбˆаИаБаКаА аПб€аИ аЗаАаГб€бƒаЗаКаЕ %(episode)s: %(message)s" #: src/gpodder/gtkui/main.py:2775 msgid "Download error" msgstr "аžбˆаИаБаКаА аЗаАаГб€бƒаЗаКаИ" #: src/gpodder/gtkui/main.py:2818 msgid "Select the episodes you want to download:" msgstr "аžб‚аМаЕб‚бŒб‚аЕ аВб‹аПбƒбаКаИ аДаЛб аЗаАаГб€бƒаЗаКаИ:" #: src/gpodder/gtkui/main.py:2841 msgid "Mark as old" msgstr "аЃаЖаЕ аПб€аОбаЛбƒбˆаАаНаО" #: src/gpodder/gtkui/main.py:2848 msgid "Please check for new episodes later." msgstr "аŸб€аОаВаЕб€бŒб‚аЕ аНаОаВб‹аЕ аВб‹аПбƒбаКаИ аПаОаЗаЖаЕ" #: src/gpodder/gtkui/main.py:2849 msgid "No new episodes available" msgstr "ааЕб‚ аНаОаВб‹б… аВб‹аПбƒбаКаОаВ" #: src/gpodder/gtkui/main.py:2900 msgid "Login to gpodder.net" msgstr "а—аАаЙб‚аИ аНаА gpodder.net" #: src/gpodder/gtkui/main.py:2901 msgid "Please login to download your subscriptions." msgstr "ааВб‚аОб€аИаЗбƒаЙб‚аЕббŒ, б‡б‚аОаБб‹ аЗаАаГб€бƒаЗаИб‚бŒ аПаОаДаПаИбаКаИ" #: src/gpodder/gtkui/main.py:2916 msgid "Subscriptions on gpodder.net" msgstr "аŸаОаДаПаИбаКаИ аНаА gpodder.net" #: src/gpodder/gtkui/main.py:2935 msgid "Please select a podcast in the podcasts list to edit." msgstr "а’б‹аБаЕб€аИб‚аЕ аПаОаДаКаАбб‚б‹ аДаЛб б€аЕаДаАаКб‚аИб€аОаВаАаНаИб." #: src/gpodder/gtkui/main.py:2949 msgid "Podcast" msgstr "аŸаОаДаКаАбб‚" #: src/gpodder/gtkui/main.py:2955 share/gpodder/ui/gtk/gpodder.ui.h:12 msgid "Remove podcasts" msgstr "аЃаДаАаЛаИб‚бŒ аПаОаДаКаАбб‚б‹" #: src/gpodder/gtkui/main.py:2956 msgid "Select the podcast you want to remove." msgstr "а’б‹аБаЕб€аИб‚аЕ аПаОаДаКаАбб‚б‹ аДаЛб бƒаДаАаЛаЕаНаИб." #: src/gpodder/gtkui/main.py:2960 #: src/gpodder/gtkui/desktop/episodeselector.py:105 msgid "Remove" msgstr "аЃаДаАаЛаИб‚бŒ" #: src/gpodder/gtkui/main.py:2969 msgid "Removing podcast" msgstr "аЃаДаАаЛаЕаНаИаЕ аПаОаДаКаАбб‚аА" #: src/gpodder/gtkui/main.py:2970 msgid "Please wait while the podcast is removed" msgstr "аŸаОаДаКаАбб‚ бƒаДаАаЛбаЕб‚бб" #: src/gpodder/gtkui/main.py:2971 msgid "Do you really want to remove this podcast and its episodes?" msgstr "а”аЕаЙбб‚аВаИб‚аЕаЛбŒаНаО бƒаДаАаЛаИб‚бŒ аПаОаДаКаАбб‚ аИ аВбаЕ аЗаАаГб€бƒаЖаЕаНаНб‹аЕ аВб‹аПбƒбаКаИ?" #: src/gpodder/gtkui/main.py:2973 msgid "Removing podcasts" msgstr "аЃаДаАаЛаЕаНаИаЕ аПаОаДаКаАбб‚аОаВ" #: src/gpodder/gtkui/main.py:2974 msgid "Please wait while the podcasts are removed" msgstr "аŸаОаДаКаАбб‚б‹ бƒаДаАаЛббŽб‚бб" #: src/gpodder/gtkui/main.py:2975 msgid "Do you really want to remove the selected podcasts and their episodes?" msgstr "а”аЕаЙбб‚аВаИб‚аЕаЛбŒаНаО бƒаДаАаЛаИб‚бŒ аПаОаДаКаАбб‚б‹ аИ аВбаЕ аЗаАаГб€бƒаЖаЕаНаНб‹аЕ аВб‹аПбƒбаКаИ?" #: src/gpodder/gtkui/main.py:3035 msgid "Please select a podcast in the podcasts list to remove." msgstr "а’б‹аБаЕб€аИб‚аЕ аПаОаДаКаАбб‚б‹ аДаЛб бƒаДаАаЛаЕаНаИб." #: src/gpodder/gtkui/main.py:3045 msgid "OPML files" msgstr "аЄаАаЙаЛб‹ OPML" #: src/gpodder/gtkui/main.py:3050 msgid "Import from OPML" msgstr "а˜аМаПаОб€б‚ аИаЗ OPML" #: src/gpodder/gtkui/main.py:3064 msgid "Import podcasts from OPML file" msgstr "а˜аМаПаОб€б‚ аПаОаДаКаАбб‚аОаВ аИаЗ OPML" #: src/gpodder/gtkui/main.py:3071 msgid "Nothing to export" msgstr "ааЕб‡аЕаГаО баКбаПаОб€б‚аИб€аОаВаАб‚бŒ" #: src/gpodder/gtkui/main.py:3072 msgid "" "Your list of podcast subscriptions is empty. Please subscribe to some " "podcasts first before trying to export your subscription list." msgstr "а’аАбˆ баПаИбаОаК аПаОаДаПаИбаОаК аПбƒбб‚. а”аОаБаАаВбŒб‚аЕ аПаОаДаКаАбб‚б‹ аПаЕб€аЕаД баКбаПаОб€б‚аОаМ." #: src/gpodder/gtkui/main.py:3076 msgid "Export to OPML" msgstr "а­аКбаПаОб€б‚ аВ OPML" #: src/gpodder/gtkui/main.py:3087 #, python-format msgid "%(count)d subscription exported" msgid_plural "%(count)d subscriptions exported" msgstr[0] "аŸаОаДаПаИбаКаА баКбаПаОб€б‚аИб€аОаВаАаНаА" msgstr[1] "%(count)d аПаОаДаПаИбаКаИ баКбаПаОб€б‚аИб€аОаВаАаНб‹" msgstr[2] "%(count)d аПаОаДаПаИбаОаК баКбаПаОб€б‚аИб€аОаВаАаНаО" #: src/gpodder/gtkui/main.py:3088 msgid "Your podcast list has been successfully exported." msgstr "а’аАбˆаИ аПаОаДаПаИбаКаИ бƒбаПаЕбˆаНаО баКбаПаОб€б‚аИб€аОаВаАаНб‹." #: src/gpodder/gtkui/main.py:3090 msgid "Could not export OPML to file. Please check your permissions." msgstr "аžбˆаИаБаКаА баКбаПаОб€б‚аА аВ OPML б„аАаЙаЛ. аŸб€аОаВаЕб€бŒб‚аЕ аПб€аАаВаА аНаА б‡б‚аЕаНаИаЕ/аЗаАаПаИббŒ." #: src/gpodder/gtkui/main.py:3090 msgid "OPML export failed" msgstr "аžбˆаИаБаКаА баКбаПаОб€б‚аА" #: src/gpodder/gtkui/main.py:3117 #, fuzzy msgid "No updates available" msgstr "ааЕб‚ аДаОбб‚бƒаПаНб‹б… аВб‹аПбƒбаКаОаВ" #: src/gpodder/gtkui/main.py:3118 msgid "You have the latest version of gPodder." msgstr "" #: src/gpodder/gtkui/main.py:3122 #, fuzzy msgid "New version available" msgstr "а”аОбб‚бƒаПаНб‹ аНаОаВб‹аЕ аВб‹аПбƒбаКаИ" #: src/gpodder/gtkui/main.py:3124 #, python-format msgid "Installed version: %s" msgstr "" #: src/gpodder/gtkui/main.py:3125 #, fuzzy, python-format msgid "Newest version: %s" msgstr "аЃаДаАаЛаЕаНаИаЕ: %s" #: src/gpodder/gtkui/main.py:3126 #, fuzzy, python-format msgid "Release date: %s" msgstr "аВб‹аПбƒб‰аЕаН: %s" #: src/gpodder/gtkui/main.py:3128 #, fuzzy msgid "Download the latest version from gpodder.org?" msgstr "а—аАаГб€бƒаЗаИб‚бŒ аМаОаИ аПаОаДаПаИбаКаИ б gpodder.net" #: src/gpodder/gtkui/main.py:3141 #, fuzzy msgid "About gPodder" msgstr "а’б‹б…аОаД" #: src/gpodder/gtkui/main.py:3424 #, fuzzy msgid "Please register a YouTube API key and set it in the preferences." msgstr "аЃаКаАаЖаИб‚аЕ аВаАбˆаЕ бƒбб‚б€аОаЙбб‚аВаО аВ б€аАаЗаДаЕаЛаЕ \"аЃбб‚б€аОаЙбб‚аВаО\" аНаАбб‚б€аОаЕаК gPodder" #: src/gpodder/gtkui/main.py:3425 msgid "Would you like to set up an API key now?" msgstr "" #: src/gpodder/gtkui/main.py:3425 msgid "API key required" msgstr "" #: src/gpodder/gtkui/main.py:3444 bin/gpo:631 #, fuzzy msgid "No unique URL found" msgstr "аšаАаНаАаЛб‹ аНаЕ аНаАаЙаДаЕаНб‹" #: src/gpodder/gtkui/main.py:3449 bin/gpo:637 #, fuzzy msgid "Already subscribed" msgstr "а’б‹ бƒаЖаЕ аПаОаДаПаИбаАаНб‹ аНаА бб‚аИ аПаОаДаКаАбб‚б‹:" #: src/gpodder/gtkui/main.py:3458 bin/gpo:649 #, python-format msgid "Make sure the API key is correct. Error: %(message)s" msgstr "" #: src/gpodder/gtkui/main.py:3459 #, fuzzy msgid "Error getting YouTube channels" msgstr "аžбˆаИаБаКаА аПаОаЛбƒб‡аЕаНаИб баПаИбаКаА" #: src/gpodder/gtkui/main.py:3462 #, fuzzy msgid "Successfully migrated subscriptions" msgstr "аœаОаИ аПаОаДаПаИбаКаИ" #: src/gpodder/gtkui/main.py:3464 #, fuzzy msgid "Subscriptions are up to date" msgstr "аŸаОаДаПаИбаКаА аПб€аИаОбб‚аАаНаОаВаЛаЕаНаА" #: src/gpodder/gtkui/main.py:3467 #, fuzzy msgid "These URLs failed:" msgstr "ааЕбƒаДаАб‡аНб‹аЕ аЗаАаГб€бƒаЗаКаИ:" #: src/gpodder/gtkui/main.py:3469 #, fuzzy msgid "Could not migrate some subscriptions" msgstr "ааЕаВаОаЗаМаОаЖаНаО аДаОаБаАаВаИб‚бŒ аПаОаДаКаАбб‚б‹" #: src/gpodder/gtkui/main.py:3493 msgid "Cannot start gPodder" msgstr "аžбˆаИаБаКаА аЗаАаПбƒбаКаА gPodder" #: src/gpodder/gtkui/main.py:3494 #, python-format msgid "D-Bus error: %s" msgstr "аžбˆаИаБаКаА D-Bus: %s" #: src/gpodder/gtkui/model.py:68 #, python-format msgid "released %s" msgstr "аВб‹аПбƒб‰аЕаН %s" #: src/gpodder/gtkui/model.py:69 src/gpodder/gtkui/model.py:87 #: src/gpodder/gtkui/model.py:237 src/gpodder/gtkui/shownotes.py:84 #, python-format msgid "from %s" msgstr "аОб‚ %s" #: src/gpodder/gtkui/model.py:80 src/gpodder/gtkui/model.py:393 msgid "played" msgstr "аПб€аОбаЛбƒбˆаАаН" #: src/gpodder/gtkui/model.py:82 msgid "unplayed" msgstr "аНаЕ аПб€аОбаЛбƒбˆаАаН" #: src/gpodder/gtkui/model.py:85 msgid "today" msgstr "баЕаГаОаДаНб" #: src/gpodder/gtkui/model.py:86 #, python-format msgid "downloaded %s" msgstr "аЗаАаГб€бƒаЖаЕаН %s" #: src/gpodder/gtkui/model.py:337 msgid "Deleted" msgstr "аЃаДаАаЛаЕаНаО" #: src/gpodder/gtkui/model.py:342 msgid "New episode" msgstr "ааОаВб‹аЙ аВб‹аПбƒбаК" #: src/gpodder/gtkui/model.py:356 msgid "Downloaded episode" msgstr "а—аАаГб€бƒаЖаЕаНаНб‹аЙ аВб‹аПбƒбаК" #: src/gpodder/gtkui/model.py:359 msgid "Downloaded video episode" msgstr "а—аАаГб€бƒаЖаЕаНаНб‹аЙ аВаИаДаЕаО-аВб‹аПбƒбаК" #: src/gpodder/gtkui/model.py:362 msgid "Downloaded image" msgstr "а—аАаГб€бƒаЖаЕаНаНаОаЕ аИаЗаОаБб€аАаЖаЕаНаИаЕ" #: src/gpodder/gtkui/model.py:365 msgid "Downloaded file" msgstr "а—аАаГб€бƒаЖаЕаНаНб‹аЙ б„аАаЙаЛ" #: src/gpodder/gtkui/model.py:380 msgid "missing file" msgstr "б„аАаЙаЛ аНаЕ аНаАаЙаДаЕаН" #: src/gpodder/gtkui/model.py:384 msgid "never displayed" msgstr "аНаЕ аПб€аОбаМаОб‚б€аЕаНаО" #: src/gpodder/gtkui/model.py:386 msgid "never played" msgstr "аНаИаКаОаГаДаА" #: src/gpodder/gtkui/model.py:388 msgid "never opened" msgstr "аНаИаКаОаГаДаА" #: src/gpodder/gtkui/model.py:391 msgid "displayed" msgstr "аПб€аОбаМаОб‚б€аЕаНаО" #: src/gpodder/gtkui/model.py:395 msgid "opened" msgstr "аОб‚аКб€б‹б‚аО" #: src/gpodder/gtkui/model.py:397 msgid "deletion prevented" msgstr "бƒаДаАаЛаЕаНаИаЕ аНаЕ аВаОаЗаМаОаЖаНаО" #: src/gpodder/gtkui/model.py:432 share/gpodder/ui/gtk/gpodder.ui.h:32 msgid "All episodes" msgstr "а’баЕ аВб‹аПбƒбаКаИ" #: src/gpodder/gtkui/model.py:433 msgid "from all podcasts" msgstr "аИаЗ аВбаЕб… аПаОаДаКаАбб‚аОаВ" #: src/gpodder/gtkui/model.py:625 msgid "Subscription paused" msgstr "аŸаОаДаПаИбаКаА аПб€аИаОбб‚аАаНаОаВаЛаЕаНаА" #: src/gpodder/gtkui/shownotes.py:118 #, fuzzy msgid "Please select an episode" msgstr "аŸаАбƒаЗаА" #: src/gpodder/gtkui/interface/addpodcast.py:74 msgid "Nothing to paste." msgstr "ааЕб‡аЕаГаО" #: src/gpodder/gtkui/interface/addpodcast.py:74 msgid "Clipboard is empty" msgstr "а‘бƒб„аЕб€ аОаБаМаЕаНаА аПбƒбб‚" #: src/gpodder/gtkui/interface/common.py:160 msgid "Username" msgstr "а˜аМб аПаОаЛбŒаЗаОаВаАб‚аЕаЛб" #: src/gpodder/gtkui/interface/common.py:163 msgid "New user" msgstr "ааОаВб‹аЙ аПаОаЛбŒаЗаОаВаАб‚аЕаЛбŒ" #: src/gpodder/gtkui/interface/common.py:170 msgid "Login" msgstr "а—аАаЙб‚аИ" #: src/gpodder/gtkui/interface/common.py:172 msgid "Authentication required" msgstr "ааЕаОаБб…аОаДаИаМаА аАбƒб‚аЕаНб‚аИб„аИаКаАб†аИб" #: src/gpodder/gtkui/interface/common.py:203 msgid "Password" msgstr "аŸаАб€аОаЛбŒ" #: src/gpodder/gtkui/interface/common.py:225 msgid "Select destination" msgstr "ааАаПб€аАаВаЛаЕаНаИаЕ" #: src/gpodder/gtkui/interface/configeditor.py:34 msgid "Setting" msgstr "аžаПб†аИаИ" #: src/gpodder/gtkui/interface/configeditor.py:41 msgid "Set to" msgstr "а—аНаАб‡аЕаНаИаЕ" #: src/gpodder/gtkui/interface/configeditor.py:81 #, python-format msgid "Cannot set %(field)s to %(value)s. Needed data type: %(datatype)s" msgstr "" "ааЕаВаОаЗаМаОаЖаНаО бƒбб‚аАаНаОаВаИб‚бŒ %(field)s аКаАаК %(value)s. аЂб€аЕаБбƒаЕаМб‹аЙ б‚аИаП аВб‹б€аАаЖаЕаНаИб: " "%(datatype)s" #: src/gpodder/gtkui/interface/configeditor.py:85 msgid "Error setting option" msgstr "аžбˆаИаБаКаА бƒбб‚аАаНаОаВаКаИ аПаАб€аАаМаЕб‚б€аА" #: src/gpodder/gtkui/desktop/channel.py:100 #, fuzzy msgid "Add section" msgstr "а”аЕаЙбб‚аВаИаЕ" #: src/gpodder/gtkui/desktop/channel.py:100 #, fuzzy msgid "New section:" msgstr "ааОаВаОаЕ аИаМб:" #: src/gpodder/gtkui/desktop/channel.py:133 msgid "Select new podcast cover artwork" msgstr "а’б‹аБаЕб€аИб‚аЕ аНаОаВбƒбŽ аОаБаЛаОаЖаКбƒ аДаЛб аПаОаДаКаАбб‚аА" #: src/gpodder/gtkui/desktop/channel.py:161 msgid "You can only drop a single image or URL here." msgstr "а’б‹ аМаОаЖаЕб‚аЕ аВбб‚аАаВаИб‚бŒ б‚аОаЛбŒаКаО аОаДаНаО аИаЗаОаБб€аАаЖаЕаНаИаЕ аИаЛаИ ббб‹аЛаКбƒ аНаА аНаЕаГаО." #: src/gpodder/gtkui/desktop/channel.py:161 #: src/gpodder/gtkui/desktop/channel.py:171 msgid "Drag and drop" msgstr "аŸаЕб€аЕб‚аАб‰аИб‚бŒ" #: src/gpodder/gtkui/desktop/channel.py:171 msgid "You can only drop local files and http:// URLs here." msgstr "" "аЂаОаЛбŒаКаО аЛаОаКаАаЛбŒаНб‹аЕ (file://) аИ аИаНб‚аЕб€аНаЕб‚ (http://) ббб‹аЛаКаИ аДаОбб‚бƒаПаНб‹ аДаЛб " "аПаЕб€аЕб‚аАбаКаИаВаАаНаИб" #: src/gpodder/gtkui/desktop/deviceplaylist.py:98 #, python-format msgid "Folder %s could not be created." msgstr "аšаАб‚аАаЛаОаГ %s аНаЕ аМаОаЖаЕб‚ аБб‹б‚бŒ баОаЗаДаАаН." #: src/gpodder/gtkui/desktop/deviceplaylist.py:98 msgid "Error writing playlist" msgstr "аžбˆаИаБаКаА аЗаАаПаИбаИ аПаЛаЕаЙаЛаИбб‚аА" #: src/gpodder/gtkui/desktop/episodeselector.py:288 #: share/gpodder/ui/gtk/gpodderepisodeselector.ui.h:2 msgid "Select all" msgstr "а’б‹аДаЕаЛаИб‚бŒ аВбаЕ" #: src/gpodder/gtkui/desktop/episodeselector.py:292 #: share/gpodder/ui/gtk/gpodderepisodeselector.ui.h:3 msgid "Select none" msgstr "аЁаБб€аОб аВб‹аБаОб€аА" #: src/gpodder/gtkui/desktop/episodeselector.py:324 msgid "Nothing selected" msgstr "ааИб‡аЕаГаО аНаЕ аВб‹аБб€аАаНаО" #: src/gpodder/gtkui/desktop/episodeselector.py:325 #, python-format msgid "%(count)d episode" msgid_plural "%(count)d episodes" msgstr[0] "аžаДаИаН аВб‹аПбƒбаК" msgstr[1] "%(count)d аВб‹аПбƒбаКаА" msgstr[2] "%(count)d аВб‹аПбƒбаКаОаВ" #: src/gpodder/gtkui/desktop/episodeselector.py:327 #, python-format msgid "size: %s" msgstr "б€аАаЗаМаЕб€: %s" #: src/gpodder/gtkui/desktop/podcastdirectory.py:238 #, fuzzy msgid "Loading podcasts" msgstr "а—аАаГб€бƒаЗаКаА" #: src/gpodder/gtkui/desktop/podcastdirectory.py:239 #, fuzzy msgid "Please wait while the podcast list is downloaded" msgstr "аŸаОаДаКаАбб‚ бƒаДаАаЛбаЕб‚бб" #: src/gpodder/gtkui/desktop/preferences.py:51 #: src/gpodder/gtkui/desktop/preferences.py:93 msgid "Do nothing" msgstr "ааИб‡аЕаГаО аНаЕ аДаЕаЛаАб‚бŒ" #: src/gpodder/gtkui/desktop/preferences.py:52 msgid "Show episode list" msgstr "аŸаОаКаАаЗаАб‚бŒ баПаИбаОаК аВб‹аПбƒбаКаОаВ" #: src/gpodder/gtkui/desktop/preferences.py:53 msgid "Add to download list" msgstr "а”аОаБаАаВаИб‚бŒ аВ баПаИбаОаК аЗаАаГб€бƒаЗаОаК" #: src/gpodder/gtkui/desktop/preferences.py:54 msgid "Download immediately" msgstr "а—аАаГб€бƒаЗаИб‚бŒ аНаЕаМаЕаДаЛаЕаНаНаО" #: src/gpodder/gtkui/desktop/preferences.py:72 msgid "None" msgstr "ааЕб‚" #: src/gpodder/gtkui/desktop/preferences.py:73 msgid "iPod" msgstr "iPod" #: src/gpodder/gtkui/desktop/preferences.py:74 msgid "Filesystem-based" msgstr "аЁ б„аАаЙаЛаОаВаОаЙ баИбб‚аЕаМаОаЙ" #: src/gpodder/gtkui/desktop/preferences.py:94 #, fuzzy msgid "Mark as played" msgstr "а•б‰б‘ аНаЕ аПб€аОбаЛбƒбˆаАаНаО" #: src/gpodder/gtkui/desktop/preferences.py:95 #, fuzzy msgid "Delete from gPodder" msgstr "аЃаДаАаЛаИб‚бŒ аВб‹аПбƒбаК" #: src/gpodder/gtkui/desktop/preferences.py:123 #, fuzzy, python-format msgid "Custom (%(format_ids)s)" msgstr "а˜аМб б„аАаЙаЛаА" #: src/gpodder/gtkui/desktop/preferences.py:318 msgid "Name" msgstr "" #: src/gpodder/gtkui/desktop/preferences.py:369 #, fuzzy msgid "Documentation" msgstr "аŸб€аОаДаОаЛаЖаИб‚аЕаЛбŒаНаОбб‚бŒ" #: src/gpodder/gtkui/desktop/preferences.py:374 msgid "Extension info" msgstr "" #: src/gpodder/gtkui/desktop/preferences.py:379 #, fuzzy msgid "Support the author" msgstr "аŸаОаДаДаЕб€аЖаКаА gPodder" #: src/gpodder/gtkui/desktop/preferences.py:413 msgid "Extension cannot be activated" msgstr "" #: src/gpodder/gtkui/desktop/preferences.py:426 msgid "Extension module info" msgstr "" #: src/gpodder/gtkui/desktop/preferences.py:463 msgid "Configure audio player" msgstr "ааАбб‚б€аОаИб‚бŒ аАбƒаДаИаО аПаЛаЕаЕб€" #: src/gpodder/gtkui/desktop/preferences.py:464 #: src/gpodder/gtkui/desktop/preferences.py:474 msgid "Command:" msgstr "аšаОаМаАаНаДаА:" #: src/gpodder/gtkui/desktop/preferences.py:473 msgid "Configure video player" msgstr "а’аИаДаЕаО аПаЛаЕаЕб€:" #: src/gpodder/gtkui/desktop/preferences.py:485 #: src/gpodder/gtkui/desktop/preferences.py:503 msgid "manually" msgstr "аВб€бƒб‡аНбƒбŽ" #: src/gpodder/gtkui/desktop/preferences.py:505 #, python-format msgid "after %(count)d day" msgid_plural "after %(count)d days" msgstr[0] "аНаА баЛаЕаДбƒбŽб‰аИаЙ аДаЕаНбŒ" msgstr[1] "б‡аЕб€аЕаЗ %(count)d аДаНб" msgstr[2] "б‡аЕб€аЕаЗ %(count)d аДаНаЕаЙ" #: src/gpodder/gtkui/desktop/preferences.py:541 msgid "Replace subscription list on server" msgstr "аŸаЕб€аЕаЗаАаПаИбаАб‚бŒ баПаИбаОаК аПаОаДаПаИбаОаК аНаА баЕб€аВаЕб€аЕ" #: src/gpodder/gtkui/desktop/preferences.py:542 msgid "" "Remote podcasts that have not been added locally will be removed on the " "server. Continue?" msgstr "" "аŸаОаДаПаИбаКаИ аНаА баЕб€аВаЕб€аЕ, аНаЕ баОб…б€аАаНаЕаНаНб‹аЕ аЛаОаКаАаЛбŒаНаО, аБбƒаДбƒб‚ аБаЕаЗаВаОаЗаВб€аАб‚аНаО бƒб‚аЕб€баНб‹. " "аŸб€аОаДаОаЛаЖаИб‚бŒ?" #: src/gpodder/gtkui/desktop/preferences.py:621 msgid "Select folder for mount point" msgstr "аЃаКаАаЖаИб‚аЕ б‚аОб‡аКбƒ аМаОаНб‚аИб€аОаВаАаНаИб" #: src/gpodder/gtkui/desktop/preferences.py:638 #, fuzzy msgid "Select folder for playlists" msgstr "а’б‹аБаЕб€аИб‚аЕ аДаИб€аЕаКб‚аОб€аИбŽ MP3 аПаЛаЕаЕб€аА" #: src/gpodder/gtkui/desktop/sync.py:86 msgid "No device configured" msgstr "аЃбб‚б€аОаЙбб‚аВаО аНаЕ аНаАбб‚б€аОаЕаНаО" #: src/gpodder/gtkui/desktop/sync.py:87 msgid "Please set up your device in the preferences dialog." msgstr "аЃаКаАаЖаИб‚аЕ аВаАбˆаЕ бƒбб‚б€аОаЙбб‚аВаО аВ б€аАаЗаДаЕаЛаЕ \"аЃбб‚б€аОаЙбб‚аВаО\" аНаАбб‚б€аОаЕаК gPodder" #: src/gpodder/gtkui/desktop/sync.py:91 msgid "Cannot open device" msgstr "ааЕаВаОаЗаМаОаЖаНаО аОб‚аКб€б‹б‚бŒ бƒбб‚б€аОаЙбб‚аВаО" #: src/gpodder/gtkui/desktop/sync.py:92 msgid "Please check the settings in the preferences dialog." msgstr "аŸб€аОаВаЕб€бŒб‚аЕ аНаАбб‚б€аОаЙаКаИ бƒбб‚б€аОаЙбб‚аВаА" #: src/gpodder/gtkui/desktop/sync.py:139 msgid "Not enough space left on device" msgstr "ааЕаДаОбб‚аАб‚аОб‡аНаО баВаОаБаОаДаНаОаГаО аМаЕбб‚аА аНаА бƒбб‚б€аОаЙбб‚аВаЕ" #: src/gpodder/gtkui/desktop/sync.py:140 #, fuzzy, python-format msgid "" "Additional free space required: %(required_space)s\n" "Do you want to continue?" msgstr "" "ааЕаОаБб…аОаДаИаМаО аОбаВаОаБаОаДаИб‚бŒ %s \n" "аНаА бƒбб‚б€аОаЙбб‚аВаЕ. аŸб€аОаДаОаЛаЖаИб‚бŒ?" #: src/gpodder/gtkui/desktop/sync.py:199 msgid "Update successful" msgstr "аžаБаНаОаВаЛаЕаНаИаЕ аЗаАаВаЕб€бˆаЕаНаО" #: src/gpodder/gtkui/desktop/sync.py:200 msgid "The playlist on your MP3 player has been updated." msgstr "аŸаЛаЕаЙаЛаИбб‚ бƒбб‚б€аОаЙбб‚аВаА аОаБаНаОаВаЛаЕаН" #: src/gpodder/gtkui/desktop/sync.py:274 #, fuzzy msgid "Episodes have been deleted on device" msgstr "ааОаВб‹аЕ аВб‹аПбƒбаКаИ аДаОбб‚бƒаПаНб‹ аДаЛб аЗаАаГб€бƒаЗаКаИ" #: src/gpodder/gtkui/desktop/sync.py:285 #, fuzzy msgid "Error writing playlist files" msgstr "аžбˆаИаБаКаА аЗаАаПаИбаИ б„аАаЙаЛаА аПаЛаЕаЙаЛаИбб‚аА" #: src/gpodder/plugins/soundcloud.py:154 msgid "Unknown track" msgstr "ааЕаИаЗаВаЕбб‚аНаО" #: src/gpodder/plugins/soundcloud.py:181 #, python-format msgid "%s on Soundcloud" msgstr "%s аНаА Soundcloud" #: src/gpodder/plugins/soundcloud.py:190 #, python-format msgid "Tracks published by %s on Soundcloud." msgstr "аšаОаМаПаОаЗаИб†аИаИ %s аНаА Soundcloud" #: src/gpodder/plugins/soundcloud.py:217 #, python-format msgid "%s's favorites on Soundcloud" msgstr "а˜аЗаБб€аАаНаНаОаЕ %s аНаА Soundcloud" #: src/gpodder/plugins/soundcloud.py:223 #, python-format msgid "Tracks favorited by %s on Soundcloud." msgstr "а˜аЗаБб€аАаНаНб‹аЕ б‚б€аЕаКаИ %s аНаА Soundcloud" #: share/gpodder/extensions/audio_converter.py:20 #, fuzzy msgid "Convert audio files" msgstr "аžбˆаИаБаКаА аКаОаНаВаЕб€б‚аАб†аИаИ" #: share/gpodder/extensions/audio_converter.py:21 msgid "Transcode audio files to mp3/ogg" msgstr "" #: share/gpodder/extensions/audio_converter.py:84 #: share/gpodder/extensions/video_converter.py:86 #, python-format msgid "Convert to %(format)s" msgstr "" #: share/gpodder/extensions/audio_converter.py:111 #: share/gpodder/extensions/rockbox_convert2mp4.py:65 #: share/gpodder/extensions/video_converter.py:111 #, fuzzy msgid "File converted" msgstr "аšаОаНаВаЕб€б‚аАб†аИб OGG аДаЛб iPod" #: share/gpodder/extensions/audio_converter.py:114 #: share/gpodder/extensions/video_converter.py:114 #, fuzzy msgid "Conversion failed" msgstr "аžбˆаИаБаКаА аКаОаНаВаЕб€б‚аАб†аИаИ" #: share/gpodder/extensions/concatenate_videos.py:20 #: share/gpodder/extensions/concatenate_videos.py:100 #, fuzzy msgid "Concatenate videos" msgstr "аžбˆаИаБаКаА аКаОаНаВаЕб€б‚аАб†аИаИ" #: share/gpodder/extensions/concatenate_videos.py:21 msgid "Add a context menu item for concatenating multiple videos" msgstr "" #: share/gpodder/extensions/concatenate_videos.py:37 msgid "Save video" msgstr "" #: share/gpodder/extensions/concatenate_videos.py:66 #, fuzzy msgid "Concatenating video files" msgstr "аžбˆаИаБаКаА аКаОаНаВаЕб€б‚аАб†аИаИ" #: share/gpodder/extensions/concatenate_videos.py:67 #, python-format msgid "Writing %(filename)s" msgstr "" #: share/gpodder/extensions/concatenate_videos.py:78 msgid "Videos successfully converted" msgstr "" #: share/gpodder/extensions/concatenate_videos.py:79 #, fuzzy msgid "Error converting videos" msgstr "аžбˆаИаБаКаА аКаОаНаВаЕб€б‚аАб†аИаИ" #: share/gpodder/extensions/concatenate_videos.py:80 msgid "Concatenation result" msgstr "" #: share/gpodder/extensions/enqueue_in_mediaplayer.py:16 msgid "Enqueue in media players" msgstr "" #: share/gpodder/extensions/enqueue_in_mediaplayer.py:17 msgid "" "Add a context menu item for enqueueing episodes in installed media players" msgstr "" #: share/gpodder/extensions/enqueue_in_mediaplayer.py:35 msgid "Enqueue in" msgstr "" #: share/gpodder/extensions/episode_website_context_menu.py:14 msgid "\"Open website\" episode context menu" msgstr "" #: share/gpodder/extensions/episode_website_context_menu.py:15 msgid "Add a context menu item for opening the website of an episode" msgstr "" #: share/gpodder/extensions/episode_website_context_menu.py:30 #, fuzzy msgid "Open website" msgstr "аŸаОбаЕб‚аИб‚бŒ баАаЙб‚" #: share/gpodder/extensions/gtk_statusicon.py:14 msgid "Gtk Status Icon" msgstr "" #: share/gpodder/extensions/gtk_statusicon.py:15 msgid "Show a status icon for Gtk-based Desktops." msgstr "" #: share/gpodder/extensions/minimize_on_start.py:10 msgid "Minimize on start" msgstr "" #: share/gpodder/extensions/minimize_on_start.py:11 msgid "Minimizes the gPodder window on startup." msgstr "" #: share/gpodder/extensions/mpris-listener.py:33 msgid "MPRIS Listener" msgstr "" #: share/gpodder/extensions/mpris-listener.py:34 msgid "Convert MPRIS notifications to gPodder Media Player D-Bus API" msgstr "" #: share/gpodder/extensions/normalize_audio.py:21 msgid "Normalize audio with re-encoding" msgstr "" #: share/gpodder/extensions/normalize_audio.py:22 msgid "Normalize the volume of audio files with normalize-audio" msgstr "" #: share/gpodder/extensions/normalize_audio.py:99 #, fuzzy msgid "File normalized" msgstr "аЄаАаЙаЛ" #: share/gpodder/extensions/rename_download.py:16 #, fuzzy msgid "Rename episodes after download" msgstr "ааОаВб‹аЙ аВб‹аПбƒбаК аДаОбб‚бƒаПаЕаН аДаЛб аЗаАаГб€бƒаЗаКаИ" #: share/gpodder/extensions/rename_download.py:17 #, fuzzy msgid "Rename episodes to \".\" on download" msgstr "ааОаВб‹аЙ аВб‹аПбƒбаК аДаОбб‚бƒаПаЕаН аДаЛб аЗаАаГб€бƒаЗаКаИ" #: share/gpodder/extensions/rm_ogg_cover.py:37 #, fuzzy msgid "Remove cover art from OGG files" msgstr "аЃбб‚аАаНаОаВаИб‚бŒ аОаБаЛаОаЖаКбƒ аИаЗ б„аАаЙаЛаА" #: share/gpodder/extensions/rm_ogg_cover.py:38 msgid "removes coverart from all downloaded ogg files" msgstr "" #: share/gpodder/extensions/rm_ogg_cover.py:66 #, fuzzy msgid "Remove cover art" msgstr "аЃаДаАаЛаИб‚бŒ " #: share/gpodder/extensions/rockbox_convert2mp4.py:26 msgid "Convert video files to MP4 for Rockbox" msgstr "" #: share/gpodder/extensions/rockbox_convert2mp4.py:27 msgid "Converts all videos to a Rockbox-compatible format" msgstr "" #: share/gpodder/extensions/sonos.py:19 share/gpodder/extensions/sonos.py:78 msgid "Stream to Sonos" msgstr "" #: share/gpodder/extensions/sonos.py:20 msgid "Stream podcasts to Sonos speakers" msgstr "" #: share/gpodder/extensions/tagging.py:45 msgid "Tag downloaded files using Mutagen" msgstr "" #: share/gpodder/extensions/tagging.py:46 #, fuzzy msgid "Add episode and podcast titles to MP3/OGG tags" msgstr "аŸаОаКаАаЗб‹аВаАб‚бŒ аВб‹аПбƒбаКаИ аИаЗ аВбаЕб… аПаОаДаКаАбб‚аОаВ" #: share/gpodder/extensions/taskbar_progress.py:28 msgid "Show download progress on the taskbar" msgstr "" #: share/gpodder/extensions/taskbar_progress.py:29 msgid "Displays the progress on the Windows taskbar." msgstr "" #: share/gpodder/extensions/ted_subtitles.py:16 msgid "Subtitle Downloader for TED Talks" msgstr "" #: share/gpodder/extensions/ted_subtitles.py:17 msgid "Downloads .srt subtitles for TED Talks Videos" msgstr "" #: share/gpodder/extensions/ubuntu_appindicator.py:10 msgid "Ubuntu App Indicator" msgstr "" #: share/gpodder/extensions/ubuntu_appindicator.py:11 msgid "Show a status indicator in the top bar." msgstr "" #: share/gpodder/extensions/ubuntu_appindicator.py:47 msgid "Show main window" msgstr "" #: share/gpodder/extensions/ubuntu_appindicator.py:57 #: share/gpodder/ui/gtk/gpodder.ui.h:6 msgid "Quit" msgstr "а’б‹б…аОаД" #: share/gpodder/extensions/ubuntu_unity.py:10 msgid "Ubuntu Unity Integration" msgstr "" #: share/gpodder/extensions/ubuntu_unity.py:11 msgid "Show download progress in the Unity Launcher icon." msgstr "" #: share/gpodder/extensions/update_feeds_on_startup.py:14 #, fuzzy msgid "Search for new episodes on startup" msgstr "аŸб€аОаВаЕб€бб‚бŒ аНаАаЛаИб‡аИаЕ аНаОаВб‹б… аВб‹аПбƒбаКаОаВ аПб€аИ аЗаАаПбƒбаКаЕ" #: share/gpodder/extensions/update_feeds_on_startup.py:15 #, fuzzy msgid "Starts the search for new episodes on startup" msgstr "аŸб€аОаВаЕб€бб‚бŒ аНаАаЛаИб‡аИаЕ аНаОаВб‹б… аВб‹аПбƒбаКаОаВ аПб€аИ аЗаАаПбƒбаКаЕ" #: share/gpodder/extensions/video_converter.py:22 #, fuzzy msgid "Convert video files" msgstr "аžбˆаИаБаКаА аКаОаНаВаЕб€б‚аАб†аИаИ" #: share/gpodder/extensions/video_converter.py:23 msgid "Transcode video files to avi/mp4/m4v" msgstr "" #: share/gpodder/ui/gtk/gpodderaddpodcast.ui.h:1 msgid "Add a new podcast" msgstr "а”аОаБаАаВаИб‚бŒ аНаОаВб‹аЙ аПаОаДаКаАбб‚" #: share/gpodder/ui/gtk/gpodderaddpodcast.ui.h:2 msgid "URL:" msgstr "аЁбб‹аЛаКаА:" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:1 msgid "gPodder Podcast Editor" msgstr "а аЕаДаАаКб‚аОб€ аПаОаДаКаАбб‚аОаВ gPodder" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:2 #, fuzzy msgid "Section:" msgstr "а”аЕаЙбб‚аВаИаЕ" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:3 msgid "Disable feed updates (pause subscription)" msgstr "аŸб€аИаОбб‚аАаНаОаВаИб‚бŒ аОаБаНаОаВаЛаЕаНаИаЕ аПаОаДаПаИбаКаИ" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:4 #, fuzzy msgid "Synchronize to MP3 player devices" msgstr "аЁаИаНб…б€аОаНаИаЗаАб†аИб " #: share/gpodder/ui/gtk/gpodderchannel.ui.h:5 #, fuzzy msgid "Strategy:" msgstr "аЁаПаОбаОаБ бƒаДаАаЛаЕаНаИб:" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:6 #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:6 msgid "General" msgstr "аžбаНаОаВаНаОаЕ" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:7 msgid "HTTP/FTP Authentication" msgstr "HTTP/FTP абƒб‚аЕаНб‚аИб„аИаКаАб†аИб" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:8 #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:13 msgid "Username:" msgstr "аŸаОаЛбŒаЗаОаВаАб‚аЕаЛбŒ:" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:9 #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:14 msgid "Password:" msgstr "аŸаАб€аОаЛбŒ:" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:10 msgid "Locations" msgstr "аœаЕбб‚аОб€аАбаПаОаЛаОаЖаЕаНаИб" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:11 msgid "Download to:" msgstr "а—аАаГб€бƒаЖаАб‚бŒ аВ:" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:12 msgid "Website:" msgstr "аЁаАаЙб‚:" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:13 msgid "website label" msgstr "а—аАаГаОаЛаОаВаОаК баАаЙб‚аА" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:14 msgid "Advanced" msgstr "а”аОаПаОаЛаНаИб‚аЕаЛбŒаНаО" #: share/gpodder/ui/gtk/gpodderconfigeditor.ui.h:1 msgid "gPodder Configuration Editor" msgstr "а аЕаДаАаКб‚аОб€ ааАбб‚б€аОаЕаК gPodder" #: share/gpodder/ui/gtk/gpodderconfigeditor.ui.h:2 msgid "Search for:" msgstr "а˜баКаАб‚бŒ: " #: share/gpodder/ui/gtk/gpodderconfigeditor.ui.h:3 msgid "Show All" msgstr "аŸаОаКаАаЗаАб‚бŒ аВбаЕ" #: share/gpodder/ui/gtk/gpodderepisodeselector.ui.h:1 msgid "Select episodes" msgstr "а’б‹аБб€аАб‚бŒ аВб‹аПбƒбаКаИ" #: share/gpodder/ui/gtk/gpodderpodcastdirectory.ui.h:1 msgid "Find new podcasts" msgstr "ааАаЙб‚аИ аПаОаДаКаАбб‚б‹" #: share/gpodder/ui/gtk/gpodderpodcastdirectory.ui.h:2 msgid "Select All" msgstr "а’б‹аБб€аАб‚бŒ аВбаЕ" #: share/gpodder/ui/gtk/gpodderpodcastdirectory.ui.h:3 msgid "Select None" msgstr "аžб‚аМаЕаНаА аВб‹аБаОб€аА" #: share/gpodder/ui/gtk/gpodderpodcastdirectory.ui.h:4 msgid "label" msgstr "" #: share/gpodder/ui/gtk/gpodderpodcastdirectory.ui.h:5 msgid "..." msgstr "" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:1 #: share/gpodder/ui/gtk/gpodder.ui.h:5 msgid "Preferences" msgstr "ааАбб‚б€аОаЙаКаИ" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:2 msgid "Audio player:" msgstr "абƒаДаИаО аПаЛаЕаЕб€:" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:3 msgid "Video player:" msgstr "а’аИаДаЕаО аПаЛаЕаЕб€:" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:4 #, fuzzy msgid "\"All episodes\" in podcast list" msgstr "аŸаОаКаАаЗб‹аВаАб‚бŒ аВб‹аПбƒбаКаИ аИаЗ аВбаЕб… аПаОаДаКаАбб‚аОаВ" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:5 #, fuzzy msgid "Use sections for podcast list" msgstr "аžбˆаИаБаКаА баОб…б€аАаНаЕаНаИб" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:7 msgid "Preferred YouTube format:" msgstr "" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:8 msgid "YouTube API key (v3):" msgstr "" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:9 msgid "Preferred Vimeo format:" msgstr "" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:11 msgid "Extensions" msgstr "" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:12 msgid "Synchronize subscriptions and episode actions" msgstr "аЁаИаНб…б€аОаНаИаЗаИб€аОаВаАб‚бŒ аПаОаДаПаИбаКаИ аИ аДаЕаЙбб‚аВаИб аНаАаД аНаИаМаИ" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:15 msgid "Replace list on server with local subscriptions" msgstr "аЁаОб…б€аАаНаИб‚бŒ баПаИбаОаК аПаОаДаПаИбаОаК аНаА баЕб€аВаЕб€аЕ" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:16 msgid "Device name:" msgstr "а˜аМб бƒбб‚б€аОаЙбб‚аВаА:" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:17 msgid "gpodder.net" msgstr "gpodder.net" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:18 msgid "Update interval:" msgstr "аŸаЕб€аИаОаД аОаБаНаОаВаЛаЕаНаИб:" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:19 msgid "Maximum number of episodes per podcast:" msgstr "аžаГб€аАаНаИб‡аИб‚бŒ аКаОаЛаИб‡аЕбб‚аВаО аВб‹аПбƒбаКаОаВ аВ аПаОаДаКаАбб‚аЕ:" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:20 msgid "When new episodes are found:" msgstr "аšаОаГаДаА аНаАаЙаДаЕаНб‹ аНаОаВб‹аЕ аВб‹аПбƒбаКаИ:" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:21 msgid "Updating" msgstr "аžаБаНаОаВаЛаЕаНаИаЕ" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:22 msgid "Delete played episodes:" msgstr "аЃаДаАаЛаИб‚бŒ аПб€аОбаЛбƒбˆаАаНаНб‹аЕ аВб‹аПбƒбаКаИ:" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:23 #, fuzzy msgid "Remove played episodes even if unfinished" msgstr "аЃаДаАаЛбб‚бŒ аПб€аОбаЛбƒбˆаАаНаНб‹аЕ аВб‹аПбƒбаКаИ б бƒбб‚б€аОаЙбб‚аВаА" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:24 msgid "Also remove unplayed episodes" msgstr "аЂаАаКаЖаЕ бƒаДаАаЛаИб‚бŒ аНаЕ аПб€аОбаЛбƒбˆаАаНаНб‹аЕ" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:25 msgid "Clean-up" msgstr "аžб‡аИбб‚аКаА" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:26 msgid "Device type:" msgstr "аЂаИаП бƒбб‚б€аОаЙбб‚аВаА:" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:27 msgid "Mountpoint:" msgstr "аŸбƒб‚бŒ аК бƒбб‚б€аОаЙбб‚аВбƒ:" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:28 msgid "After syncing an episode:" msgstr "аŸаОбаЛаЕ баИаНб…б€аОаНаИаЗаАб†аИаИ аВб‹аПбƒбаКаА:" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:29 #, fuzzy msgid "Create playlists on device" msgstr "аЃаДаАаЛаИб‚бŒ аПаОаДаКаАбб‚б‹ б бƒбб‚б€аОаЙбб‚аВаА?" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:30 #, fuzzy msgid "Playlists Folder:" msgstr "ааАаЗаВаАаНаИаЕ аПаЛаЕаЙаЛаИбб‚аА:" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:31 #, fuzzy msgid "Remove episodes deleted on device from gPodder" msgstr "аЃаДаАаЛбб‚бŒ аИаЗ gPodder аВб‹аПбƒбаКаИ, аПб€аОбаЛбƒбˆаАаНаНб‹аЕ аНаА iPod " #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:32 msgid "Only sync unplayed episodes" msgstr "ааЕ баИаНб…б€аОаНаИаЗаИб€аОаВаАб‚бŒ аПб€аОбаЛбƒбˆаАаНаНб‹аЕ аВб‹аПбƒбаКаИ" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:33 msgid "Devices" msgstr "аЃбб‚б€аОаЙбб‚аВаА" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:34 msgid "Edit config" msgstr "а аАббˆаИб€аЕаНаНб‹аЕ" #: share/gpodder/ui/gtk/gpodder.ui.h:1 msgid "_Podcasts" msgstr "_аŸаОаДаКаАбб‚б‹" #: share/gpodder/ui/gtk/gpodder.ui.h:2 msgid "Check for new episodes" msgstr "аŸб€аОаВаЕб€аИб‚бŒ аОаБаНаОаВаЛаЕаНаИб" #: share/gpodder/ui/gtk/gpodder.ui.h:3 msgid "Download new episodes" msgstr "а—аАаГб€бƒаЗаИб‚бŒ аНаОаВб‹аЕ аВб‹аПбƒбаКаИ" #: share/gpodder/ui/gtk/gpodder.ui.h:7 msgid "_Subscriptions" msgstr "аŸ_аОаДаПаИбаКаИ" #: share/gpodder/ui/gtk/gpodder.ui.h:8 msgid "Discover new podcasts" msgstr "аŸаОаИбаК аПаОаДаКаАбб‚аОаВ" #: share/gpodder/ui/gtk/gpodder.ui.h:9 msgid "Add podcast via URL" msgstr "а”аОаБаАаВаИб‚бŒ аПаО ббб‹аЛаКаЕ" #: share/gpodder/ui/gtk/gpodder.ui.h:11 msgid "Unsubscribe" msgstr "аЃаДаАаЛаИб‚бŒ" #: share/gpodder/ui/gtk/gpodder.ui.h:14 msgid "Import from OPML file" msgstr "а˜аМаПаОб€б‚ аИаЗ OPML" #: share/gpodder/ui/gtk/gpodder.ui.h:15 msgid "Export to OPML file" msgstr "а­аКбаПаОб€б‚ аВ OPML" #: share/gpodder/ui/gtk/gpodder.ui.h:16 msgid "Go to gpodder.net" msgstr "аžб‚аКб€б‹б‚бŒ gpodder.net" #: share/gpodder/ui/gtk/gpodder.ui.h:17 msgid "_Episodes" msgstr "_а’б‹аПбƒбаКаИ" #: share/gpodder/ui/gtk/gpodder.ui.h:18 msgid "Play" msgstr "а’аОбаПб€аОаИаЗаВаЕбб‚аИ" #: share/gpodder/ui/gtk/gpodder.ui.h:19 msgid "Open" msgstr "аžб‚аКб€б‹б‚бŒ" #: share/gpodder/ui/gtk/gpodder.ui.h:22 msgid "Delete" msgstr "аЃаДаАаЛаИб‚бŒ" #: share/gpodder/ui/gtk/gpodder.ui.h:23 msgid "Toggle new status" msgstr "аЃбб‚аАаНаОаВаИб‚бŒ аНаОаВб‹аЙ бб‚аАб‚бƒб" #: share/gpodder/ui/gtk/gpodder.ui.h:24 msgid "Change delete lock" msgstr "а’аОаЗаМаОаЖаНаОбб‚бŒ бƒаДаАаЛаЕаНаИб" #: share/gpodder/ui/gtk/gpodder.ui.h:26 msgid "E_xtras" msgstr "" #: share/gpodder/ui/gtk/gpodder.ui.h:27 #, fuzzy msgid "Sync to device" msgstr "аЁаИаНб…б€аОаНаИаЗаАб†аИб б бƒбб‚б€аОаЙбб‚аВаОаМ" #: share/gpodder/ui/gtk/gpodder.ui.h:28 #, fuzzy msgid "Update YouTube subscriptions" msgstr "аŸб€аИаОбб‚аАаНаОаВаИб‚бŒ аПаОаДаПаИбаКбƒ" #: share/gpodder/ui/gtk/gpodder.ui.h:29 msgid "_View" msgstr "а’_аИаД" #: share/gpodder/ui/gtk/gpodder.ui.h:30 #, fuzzy msgid "Toolbar" msgstr "аŸаАаНаЕаЛбŒ аИаНбб‚б€бƒаМаЕаНб‚аОаВ" #: share/gpodder/ui/gtk/gpodder.ui.h:31 msgid "Episode descriptions" msgstr "а”аЕб‚аАаЛаИ аВб‹аПбƒбаКаА(бˆаОбƒаНаОб‚б‹)" #: share/gpodder/ui/gtk/gpodder.ui.h:33 msgid "Hide deleted episodes" msgstr "аЁаКб€б‹б‚бŒ бƒаДаАаЛаЕаНаНб‹аЕ аВб‹аПбƒбаКаИ" #: share/gpodder/ui/gtk/gpodder.ui.h:34 msgid "Downloaded episodes" msgstr "а—аАаГб€бƒаЖаЕаНаНб‹аЕ аВб‹аПбƒбаКаИ" #: share/gpodder/ui/gtk/gpodder.ui.h:35 msgid "Unplayed episodes" msgstr "ааЕ аПб€аОбаЛбƒбˆаАаНаНб‹аЕ аВб‹аПбƒбаКаИ" #: share/gpodder/ui/gtk/gpodder.ui.h:36 msgid "Hide podcasts without episodes" msgstr "аЁаКб€б‹б‚бŒ аПаОаДаКаАбб‚б‹ аБаЕаЗ аВб‹аПбƒбаКаОаВ" #: share/gpodder/ui/gtk/gpodder.ui.h:37 msgid "_Help" msgstr "_аЁаПб€аАаВаКаА" #: share/gpodder/ui/gtk/gpodder.ui.h:38 msgid "User manual" msgstr "а бƒаКаОаВаОаДбб‚аВаО" #: share/gpodder/ui/gtk/gpodder.ui.h:39 msgid "Software updates" msgstr "" #: share/gpodder/ui/gtk/gpodder.ui.h:40 msgid "Filter:" msgstr "аЄаИаЛбŒб‚б€:" #: share/gpodder/ui/gtk/gpodder.ui.h:41 msgid "Podcasts" msgstr "аŸаОаДаКаАбб‚б‹" #: share/gpodder/ui/gtk/gpodder.ui.h:42 msgid "Limit rate to" msgstr "аžаГб€. баКаОб€аОбб‚бŒ" #: share/gpodder/ui/gtk/gpodder.ui.h:43 msgid "KiB/s" msgstr "аšаИа‘/б" #: share/gpodder/ui/gtk/gpodder.ui.h:44 msgid "Limit downloads to" msgstr "аœаАаКб. аАаКб‚аИаВаНб‹б…" #: share/gpodder/ui/gtk/gpodderwelcome.ui.h:2 #, fuzzy msgid "Welcome to gPodder" msgstr "а”аОаБб€аО аПаОаЖаАаЛаОаВаАб‚бŒ аВ gPodder" #: share/gpodder/ui/gtk/gpodderwelcome.ui.h:3 #, fuzzy msgid "Your podcast list is empty." msgstr "аЃ аВаАб аНаЕб‚ аПаОаДаПаИбаОаК. аЇб‚аО аВб‹ б…аОб‚аИб‚аЕ баДаЕаЛаАб‚бŒ?" #: share/gpodder/ui/gtk/gpodderwelcome.ui.h:4 msgid "Choose from a list of example podcasts" msgstr "а’б‹аБб€аАб‚бŒ аИаЗ баПаИбаКаА аПб€аИаМаЕб€б‹ аПаОаДаКаАбб‚аОаВ" #: share/gpodder/ui/gtk/gpodderwelcome.ui.h:5 #, fuzzy msgid "Add a podcast by entering its URL" msgstr "а”аОаБаАаВаИб‚бŒ аПаО ббб‹аЛаКаЕ" #: share/gpodder/ui/gtk/gpodderwelcome.ui.h:6 #, fuzzy msgid "Restore my subscriptions from gpodder.net" msgstr "а—аАаГб€бƒаЗаИб‚бŒ аМаОаИ аПаОаДаПаИбаКаИ б gpodder.net" #: bin/gpo:266 #, fuzzy msgid "Podcast update requested by extensions." msgstr "а”аЛб аДаОбб‚бƒаПаА аНаЕаОаБб…аОаДаИаМаА аАбƒб‚аЕаНб‚аИб„аИаКаАб†аИб" #: bin/gpo:270 msgid "Episode download requested by extensions." msgstr "" #: bin/gpo:323 #, python-format msgid "Invalid url: %s" msgstr "" #: bin/gpo:340 bin/gpo:416 bin/gpo:450 bin/gpo:582 bin/gpo:597 bin/gpo:717 #, fuzzy, python-format msgid "You are not subscribed to %s." msgstr "а’б‹ бƒаЖаЕ аПаОаДаПаИбаАаНб‹ аНаА бб‚аИ аПаОаДаКаАбб‚б‹:" #: bin/gpo:346 #, fuzzy, python-format msgid "Already subscribed to %s." msgstr "а’б‹ бƒаЖаЕ аПаОаДаПаИбаАаНб‹ аНаА бб‚аИ аПаОаДаКаАбб‚б‹:" #: bin/gpo:352 #, fuzzy, python-format msgid "Cannot subscribe to %s." msgstr "аЁаИаНб…б€аОаНаИаЗаАб†аИб б iPod аНаЕаВаОаЗаМаОаЖаНаА" #: bin/gpo:368 #, python-format msgid "Successfully added %s." msgstr "" #: bin/gpo:386 msgid "This configuration option does not exist." msgstr "" #: bin/gpo:390 msgid "Can only set leaf configuration nodes." msgstr "" #: bin/gpo:404 #, python-format msgid "Renamed %(old_title)s to %(new_title)s." msgstr "" #: bin/gpo:420 #, fuzzy, python-format msgid "Unsubscribed from %s." msgstr "аЃаДаАаЛаИб‚бŒ" #: bin/gpo:494 #, fuzzy msgid "Updates disabled" msgstr "аžаБаНаОаВаИб‚бŒ аВб‹аБб€аАаНаНаОаЕ" #: bin/gpo:505 #, python-format msgid "%(count)d new episode" msgid_plural "%(count)d new episodes" msgstr[0] "аОаДаИаН аНаОаВб‹аЙ аВб‹аПбƒбаК" msgstr[1] "%(count)d аНаОаВб‹б… аВб‹аПбƒбаКаА" msgstr[2] "%(count)d аНаОаВб‹б… аВб‹аПбƒбаКаОаВ" #: bin/gpo:511 #, fuzzy msgid "Checking for new episodes" msgstr "аŸаОаИбаК аНаОаВб‹б… аВб‹аПбƒбаКаОаВ..." #: bin/gpo:520 #, fuzzy, python-format msgid "Skipping %(podcast)s" msgstr "а”аОаБаАаВаЛаЕаНаИаЕ аПаОаДаКаАбб‚аОаВ" #: bin/gpo:588 #, python-format msgid "Disabling feed update from %s." msgstr "" #: bin/gpo:603 #, fuzzy, python-format msgid "Enabling feed update from %s." msgstr "аЇб‚аЕаНаИаЕ б„аАаЙаЛаОаВ аИаЗ %s" #: bin/gpo:616 #, python-format msgid "Please register a YouTube API key and set it using %(command)s." msgstr "" #: bin/gpo:643 #, python-format msgid "Changing: %(old_url)s => %(new_url)s" msgstr "" #: bin/gpo:653 #, fuzzy msgid "Nothing to fix" msgstr "ааЕб‡аЕаГаО баКбаПаОб€б‚аИб€аОаВаАб‚бŒ" #: bin/gpo:672 #, fuzzy msgid "No podcasts found." msgstr "ааЕб‚ аПаОаДаКаАбб‚аОаВ" #: bin/gpo:686 msgid "Enter index to subscribe, ? for list" msgstr "" #: bin/gpo:700 bin/gpo:704 msgid "Invalid value." msgstr "" #: bin/gpo:721 #, python-format msgid "Invalid URL: %s" msgstr "" #: bin/gpo:724 #, python-format msgid "Changed URL from %(old_url)s to %(new_url)s." msgstr "" #: bin/gpo:782 #, python-format msgid "Syntax error: %(error)s" msgstr "" #: bin/gpo:876 msgid "Ambiguous command. Did you mean.." msgstr "" #: bin/gpo:880 #, fuzzy msgid "The requested function is not available." msgstr "а­б‚аА аВаОаЗаМаОаЖаНаОбб‚бŒ аНаЕаДаОбб‚бƒаПаНаА аДаЛб iPod." #: bin/gpodder:105 #, fuzzy msgid "print logging output on the console" msgstr "аžб‚аЛаАаДаОб‡аНаАб аИаНб„аОб€аМаАб†аИб аВ stdout" #: bin/gpodder:108 #, fuzzy msgid "subscribe to the feed at URL" msgstr "аŸаОаДаПаИбаАб‚бŒбб аНаА аДаАаНаНбƒбŽ ббб‹аЛаКбƒ" #: bin/gpodder:113 msgid "Mac OS X application process number" msgstr "аНаОаМаЕб€ аПб€аОб†аЕббаА Mac OS X аАаПаПаЛаИаКаАб†аИаИ" #: share/applications/gpodder.desktop.in.h:2 #, fuzzy msgid "gPodder Podcast Client" msgstr "а аЕаДаАаКб‚аОб€ аПаОаДаКаАбб‚аОаВ gPodder" #: share/applications/gpodder.desktop.in.h:3 #, fuzzy msgid "Podcast Client" msgstr "аЁаПаИбаОаК аПаОаДаКаАбб‚аОаВ" #: share/applications/gpodder.desktop.in.h:4 msgid "Subscribe to audio and video content from the web" msgstr "аŸаОаДаПаИбаАб‚бŒбб аНаА аАбƒаДаИаО аИ аВаИаДаЕаО аКаОаНб‚аЕаНаГаЕаНб‚ баАаЙб‚аА" #: share/applications/gpodder-url-handler.desktop.in.h:1 #, fuzzy msgid "gPodder (subscribe to feed)" msgstr "аŸаОаДаПаИбаАб‚бŒбб аНаА аДаАаНаНбƒбŽ ббб‹аЛаКбƒ" gpodder-3.9.0/po/fi.po0000644000016000001710000016172012654461625015657 0ustar jenkinsjenkins00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # # Translators: # Thomas Perl , 2006. msgid "" msgstr "" "Project-Id-Version: gPodder\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2016-02-03 20:31+0000\n" "PO-Revision-Date: 2013-01-19 12:31+0000\n" "Last-Translator: Thomas Perl \n" "Language-Team: LANGUAGE \n" "Language: fi\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" #: src/gpodder/config.py:55 #, python-format msgid "gPodder on %s" msgstr "gPodder koneella %s" #: src/gpodder/directory.py:95 #, fuzzy msgid "gpodder.net search" msgstr "gpodder.net" #: src/gpodder/directory.py:104 #, fuzzy msgid "OPML from web" msgstr "OPML-tiedostot" #: src/gpodder/directory.py:113 #, fuzzy msgid "OPML file" msgstr "OPML-tiedostot" #: src/gpodder/directory.py:122 share/gpodder/ui/gtk/gpodderwelcome.ui.h:1 #, fuzzy msgid "Getting started" msgstr "Asetukset" #: src/gpodder/directory.py:131 #, fuzzy msgid "gpodder.net Top 50" msgstr "gpodder.net" #: src/gpodder/directory.py:140 #, fuzzy msgid "gpodder.net Tags" msgstr "gpodder.net" #: src/gpodder/directory.py:152 #, fuzzy msgid "Soundcloud search" msgstr "KУЄyttУЄjУЄtunnus %s Soundcloudissa" #: src/gpodder/directory.py:165 #, fuzzy msgid "Imported OPML file" msgstr "Tuo OPML-tiedostosta" #: src/gpodder/download.py:329 msgid "Wrong username/password" msgstr "Virheellinen kУЄyttУЄjУЄtunnus tai salasana" #: src/gpodder/download.py:527 src/gpodder/sync.py:924 msgid "Added" msgstr "LisУЄtty" #: src/gpodder/download.py:527 src/gpodder/sync.py:924 msgid "Queued" msgstr "Jonossa" #: src/gpodder/download.py:527 src/gpodder/gtkui/model.py:327 msgid "Downloading" msgstr "Ladataan" #: src/gpodder/download.py:528 src/gpodder/model.py:721 #: src/gpodder/sync.py:925 msgid "Finished" msgstr "Valmis" #: src/gpodder/download.py:528 src/gpodder/sync.py:925 msgid "Failed" msgstr "EpУЄonnistui" #: src/gpodder/download.py:528 src/gpodder/sync.py:925 msgid "Cancelled" msgstr "Peruttu" #: src/gpodder/download.py:528 src/gpodder/sync.py:925 msgid "Paused" msgstr "Tauolla" #: src/gpodder/download.py:862 msgid "Missing content from server" msgstr "Palvelimelta puuttuu sisУЄltУЖУЄ" #: src/gpodder/download.py:868 #, python-format msgid "I/O Error: %(error)s: %(filename)s" msgstr "SiirrУЄntУЄvirhe: %(error)s: %(filename)s" #: src/gpodder/download.py:875 #, python-format msgid "HTTP Error %(code)s: %(message)s" msgstr "HTTP-virhe: %(code)s: %(message)s" #: src/gpodder/download.py:879 src/gpodder/sync.py:1081 #, python-format msgid "Error: %s" msgstr "Virhe: %s" #: src/gpodder/extensions.py:55 msgid "Desktop Integration" msgstr "" #: src/gpodder/extensions.py:56 #, fuzzy msgid "Interface" msgstr "Kokonaisluku" #: src/gpodder/extensions.py:57 #, fuzzy msgid "Post download" msgstr "PysУЄytУЄ lataus" #: src/gpodder/extensions.py:59 src/gpodder/model.py:779 #: src/gpodder/model.py:1225 msgid "Other" msgstr "Muu" #: src/gpodder/extensions.py:100 #, fuzzy msgid "No description for this extension." msgstr "Kuvausta ei ole saatavilla." #: src/gpodder/extensions.py:212 #, fuzzy, python-format msgid "Command not found: %(command)s" msgstr "KУЄyttУЄjУЄn komentoa ei lУЖytynyt" #: src/gpodder/extensions.py:228 #, python-format msgid "Need at least one of the following commands: %(list_of_commands)s" msgstr "" #: src/gpodder/extensions.py:265 #, fuzzy, python-format msgid "Python module not found: %(module)s" msgstr "Python-moduulia т€%sт€ ei ole asennettu" #: src/gpodder/model.py:446 src/gpodder/plugins/soundcloud.py:156 msgid "No description available" msgstr "Kuvausta ei ole saatavilla" #: src/gpodder/model.py:679 msgid "unknown" msgstr "tuntematon" #: src/gpodder/model.py:746 msgid "Default" msgstr "" #: src/gpodder/model.py:747 msgid "Only keep latest" msgstr "" #: src/gpodder/model.py:1208 src/gpodder/model.py:1223 #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:10 msgid "Video" msgstr "" #: src/gpodder/model.py:1221 msgid "Audio" msgstr "" #: src/gpodder/my.py:174 #, python-format msgid "Add %s" msgstr "LisУЄУЄ %s" #: src/gpodder/my.py:176 #, python-format msgid "Remove %s" msgstr "Poista %s" #: src/gpodder/sync.py:196 msgid "Cancelled by user" msgstr "KУЄyttУЄjУЄn peruma" #: src/gpodder/sync.py:199 msgid "Writing data to disk" msgstr "Kirjoitetaan tietoja levylle" #: src/gpodder/sync.py:295 msgid "Opening iPod database" msgstr "Avataan iPodin tietokantaa" #: src/gpodder/sync.py:305 msgid "iPod opened" msgstr "iPod avattu" #: src/gpodder/sync.py:316 msgid "Saving iPod database" msgstr "Tallennetaan iPodin tietokanta" #: src/gpodder/sync.py:321 msgid "Writing extended gtkpod database" msgstr "Kirjoitetaan gtkpodin tietokantaa" #: src/gpodder/sync.py:397 src/gpodder/sync.py:680 src/gpodder/sync.py:874 #, python-format msgid "Removing %s" msgstr "Poistetaan %s" #: src/gpodder/sync.py:412 src/gpodder/sync.py:557 #, python-format msgid "Adding %s" msgstr "LisУЄtУЄУЄn %s" #: src/gpodder/sync.py:430 #, python-format msgid "Error copying %(episode)s: Not enough free space on %(mountpoint)s" msgstr "" "Virhe kopioitaessa jaksoa %(episode)s: LiitospisteessУЄ %(mountpoint)s ei ole " "riittУЄvУЄsti vapaata tilaa" #: src/gpodder/sync.py:515 msgid "Opening MP3 player" msgstr "Avataan MP3-soitinta" #: src/gpodder/sync.py:518 msgid "MP3 player opened" msgstr "MP3-soitin avattu" #: src/gpodder/sync.py:576 #, python-format msgid "" "Not enough space in %(path)s: %(free)s available, but need at least %(need)s" msgstr "" #: src/gpodder/sync.py:603 src/gpodder/sync.py:611 #, python-format msgid "Error opening %(filename)s: %(message)s" msgstr "Virhe avattaessa tiedostoa %(filename)s: %(message)s" #: src/gpodder/sync.py:780 src/gpodder/sync.py:786 msgid "MTP device" msgstr "MTP-laite" #: src/gpodder/sync.py:793 msgid "Opening the MTP device" msgstr "Avataan MTP-medialaitetta" #: src/gpodder/sync.py:803 #, python-format msgid "%s opened" msgstr "Laite %s on avattu" #: src/gpodder/sync.py:808 #, python-format msgid "Closing %s" msgstr "Suljetaan laitetta %s" #: src/gpodder/sync.py:816 #, python-format msgid "%s closed" msgstr "Laite %s on suljettu" #: src/gpodder/sync.py:821 bin/gpo:708 #, python-format msgid "Adding %s..." msgstr "LisУЄtУЄУЄn jaksoa %s..." #: src/gpodder/sync.py:924 #, fuzzy msgid "Synchronizing" msgstr "Synkronointi" #: src/gpodder/util.py:429 #, python-format msgid "%(count)d day ago" msgid_plural "%(count)d days ago" msgstr[0] "%(count)d pУЄivУЄ sitten" msgstr[1] "%(count)d pУЄivУЄУЄ sitten" #: src/gpodder/util.py:508 msgid "Today" msgstr "TУЄnУЄУЄn" #: src/gpodder/util.py:510 msgid "Yesterday" msgstr "Eilen" #: src/gpodder/util.py:553 src/gpodder/util.py:556 msgid "(unknown)" msgstr "(tuntematon)" #: src/gpodder/util.py:1193 src/gpodder/util.py:1212 #, python-format msgid "%(count)d second" msgid_plural "%(count)d seconds" msgstr[0] "%(count)d sekunti" msgstr[1] "%(count)d sekuntia" #: src/gpodder/util.py:1206 #, python-format msgid "%(count)d hour" msgid_plural "%(count)d hours" msgstr[0] "%(count)d tunti" msgstr[1] "%(count)d tuntia" #: src/gpodder/util.py:1209 #, python-format msgid "%(count)d minute" msgid_plural "%(count)d minutes" msgstr[0] "%(count)d minuutti" msgstr[1] "%(count)d minuuttia" #: src/gpodder/util.py:1215 msgid "and" msgstr "ja" #: src/gpodder/gtkui/config.py:50 msgid "Integer" msgstr "Kokonaisluku" #: src/gpodder/gtkui/config.py:52 msgid "Float" msgstr "Liukuluku" #: src/gpodder/gtkui/config.py:54 msgid "Boolean" msgstr "Totuusarvo" #: src/gpodder/gtkui/config.py:56 msgid "String" msgstr "Merkkijono" #: src/gpodder/gtkui/desktopfile.py:70 #, python-format msgid "Command: %s" msgstr "Komento: %s" #: src/gpodder/gtkui/desktopfile.py:150 msgid "Default application" msgstr "Oletussovellus" #: src/gpodder/gtkui/main.py:205 share/applications/gpodder.desktop.in.h:1 msgid "gPodder" msgstr "gPodder" #: src/gpodder/gtkui/main.py:288 msgid "Loading incomplete downloads" msgstr "Ladataan keskenerУЄiset lataukset" #: src/gpodder/gtkui/main.py:289 msgid "Some episodes have not finished downloading in a previous session." msgstr "Joidenkin jaksojen lataaminen jУЄi kesken aiemmalla kУЄyttУЖkerralla." #: src/gpodder/gtkui/main.py:291 #, python-format msgid "%(count)d partial file" msgid_plural "%(count)d partial files" msgstr[0] "%(count)d keskenerУЄinen tiedosto" msgstr[1] "%(count)d keskenerУЄistУЄ tiedostoa" #: src/gpodder/gtkui/main.py:306 msgid "Resume all" msgstr "Jatka kaikkien latausta" #: src/gpodder/gtkui/main.py:316 msgid "Incomplete downloads from a previous session were found." msgstr "LУЖydettiin keskenerУЄisiУЄ latauksia aiemmasta kУЄyttУЖkerrasta." #: src/gpodder/gtkui/main.py:414 msgid "Action" msgstr "Toiminto" #: src/gpodder/gtkui/main.py:461 msgid "Confirm changes from gpodder.net" msgstr "Vahvista muutokset gpodder.netistУЄ" #: src/gpodder/gtkui/main.py:462 msgid "Select the actions you want to carry out." msgstr "Valitse toiminnot, jotka haluat suorittaa." #: src/gpodder/gtkui/main.py:502 msgid "Uploading subscriptions" msgstr "Ladataan tilaukset palvelimelle" #: src/gpodder/gtkui/main.py:503 msgid "Your subscriptions are being uploaded to the server." msgstr "Tilauksia ladataan palvelimelle." #: src/gpodder/gtkui/main.py:508 msgid "List uploaded successfully." msgstr "Luettelon lУЄhettУЄminen onnistui." #: src/gpodder/gtkui/main.py:515 msgid "Error while uploading" msgstr "Virhe lУЄhetettУЄessУЄ palvelimelle" #: src/gpodder/gtkui/main.py:800 src/gpodder/gtkui/main.py:928 #: src/gpodder/gtkui/main.py:2622 src/gpodder/gtkui/main.py:2815 #: src/gpodder/gtkui/desktop/episodeselector.py:132 #: src/gpodder/gtkui/desktop/sync.py:270 msgid "Episode" msgstr "Jakso" #: src/gpodder/gtkui/main.py:819 msgid "Size" msgstr "Koko" #: src/gpodder/gtkui/main.py:824 #, fuzzy msgid "Duration" msgstr "Otsikko:" #: src/gpodder/gtkui/main.py:828 msgid "Released" msgstr "Julkaistu" #: src/gpodder/gtkui/main.py:855 msgid "Visible columns" msgstr "" #: src/gpodder/gtkui/main.py:948 src/gpodder/gtkui/main.py:1108 #: share/gpodder/ui/gtk/gpodder.ui.h:45 msgid "Progress" msgstr "Edistyminen" #: src/gpodder/gtkui/main.py:982 msgid "Loading episodes" msgstr "Ladataan jaksoja" #: src/gpodder/gtkui/main.py:985 msgid "No episodes in current view" msgstr "NykyisessУЄ nУЄkymУЄssУЄ ei ole yhtУЄУЄn jaksoa" #: src/gpodder/gtkui/main.py:987 msgid "No episodes available" msgstr "YhtУЄУЄn jaksoa ei ole saatavilla" #: src/gpodder/gtkui/main.py:993 msgid "No podcasts in this view" msgstr "TУЄssУЄ nУЄkymУЄssУЄ ei ole yhtУЄУЄn podcastia" #: src/gpodder/gtkui/main.py:995 msgid "No subscriptions" msgstr "Ei tilauksia" #: src/gpodder/gtkui/main.py:997 #, fuzzy msgid "No active tasks" msgstr "Ei aktiivisia latauksia" #: src/gpodder/gtkui/main.py:1112 src/gpodder/gtkui/main.py:1114 #, python-format msgid "%(count)d active" msgid_plural "%(count)d active" msgstr[0] "%(count)d aktiivinen" msgstr[1] "%(count)d aktiivista" #: src/gpodder/gtkui/main.py:1116 #, python-format msgid "%(count)d failed" msgid_plural "%(count)d failed" msgstr[0] "%(count)d epУЄonnistunut" msgstr[1] "%(count)d epУЄonnistunutta" #: src/gpodder/gtkui/main.py:1118 #, python-format msgid "%(count)d queued" msgid_plural "%(count)d queued" msgstr[0] "%(count)d jonossa" msgstr[1] "%(count)d jonossa" #: src/gpodder/gtkui/main.py:1132 #, python-format msgid "downloading %(count)d file" msgid_plural "downloading %(count)d files" msgstr[0] "ladataan %(count)d tiedosto" msgstr[1] "ladataan %(count)d tiedostoa" #: src/gpodder/gtkui/main.py:1142 #, python-format msgid "synchronizing %(count)d file" msgid_plural "synchronizing %(count)d files" msgstr[0] "" msgstr[1] "" #: src/gpodder/gtkui/main.py:1144 #, python-format msgid "%(queued)d task queued" msgid_plural "%(queued)d tasks queued" msgstr[0] "" msgstr[1] "" #: src/gpodder/gtkui/main.py:1168 msgid "Please report this problem and restart gPodder:" msgstr "Tee ilmoitus tУЄstУЄ ongelmasta ja kУЄynnistУЄ gPodder uudelleen:" #: src/gpodder/gtkui/main.py:1168 msgid "Unhandled exception" msgstr "KУЄsittelemУЄtУЖn poikkeus" #: src/gpodder/gtkui/main.py:1235 #, python-format msgid "Feedparser error: %s" msgstr "SyУЖtejУЄsentimen virhe: %s" #: src/gpodder/gtkui/main.py:1371 #, fuzzy msgid "Could not download some episodes:" msgstr "Joitakin podcasteja ei voitu lisУЄtУЄ" #: src/gpodder/gtkui/main.py:1373 src/gpodder/gtkui/main.py:1376 msgid "Downloads finished" msgstr "Lataukset ovat valmiita" #: src/gpodder/gtkui/main.py:1379 msgid "Downloads failed" msgstr "Lataukset epУЄonnistuivat" #: src/gpodder/gtkui/main.py:1383 #, fuzzy msgid "Could not sync some episodes:" msgstr "Joitakin podcasteja ei voitu lisУЄtУЄ" #: src/gpodder/gtkui/main.py:1385 src/gpodder/gtkui/main.py:1388 #, fuzzy msgid "Device synchronization finished" msgstr "Synkronointi on valmis." #: src/gpodder/gtkui/main.py:1391 #, fuzzy msgid "Device synchronization failed" msgstr "Laite on synkronoitu" #: src/gpodder/gtkui/main.py:1434 #, python-format msgid "%(count)d more episode" msgid_plural "%(count)d more episodes" msgstr[0] "%(count)d toinen jakso" msgstr[1] "%(count)d muuta jaksoa" #: src/gpodder/gtkui/main.py:1508 msgid "Start download now" msgstr "Aloita lataaminen nyt" #: src/gpodder/gtkui/main.py:1510 src/gpodder/gtkui/main.py:1719 #: src/gpodder/gtkui/desktop/episodeselector.py:144 #: share/gpodder/ui/gtk/gpodder.ui.h:20 msgid "Download" msgstr "Lataa" #: src/gpodder/gtkui/main.py:1511 share/gpodder/ui/gtk/gpodder.ui.h:21 msgid "Cancel" msgstr "Peru" #: src/gpodder/gtkui/main.py:1512 msgid "Pause" msgstr "Tauko" #: src/gpodder/gtkui/main.py:1514 msgid "Remove from list" msgstr "Poista luettelosta" #: src/gpodder/gtkui/main.py:1553 share/gpodder/ui/gtk/gpodder.ui.h:13 msgid "Update podcast" msgstr "PУЄivitУЄ podcast" #: src/gpodder/gtkui/main.py:1560 msgid "Open download folder" msgstr "Avaa latauskansio" #: src/gpodder/gtkui/main.py:1566 #, fuzzy msgid "Mark episodes as old" msgstr "Merkitse jakso soitetuksi" #: src/gpodder/gtkui/main.py:1570 src/gpodder/gtkui/main.py:1778 msgid "Archive" msgstr "" #: src/gpodder/gtkui/main.py:1575 msgid "Remove podcast" msgstr "Poista podcast" #: src/gpodder/gtkui/main.py:1590 share/gpodder/ui/gtk/gpodder.ui.h:10 msgid "Podcast settings" msgstr "Podcast-asetukset" #: src/gpodder/gtkui/main.py:1650 msgid "Error converting file." msgstr "Virhe tiedoston muuntamisessa." #: src/gpodder/gtkui/main.py:1650 msgid "Bluetooth file transfer" msgstr "Bluetooth-tiedostonsiirto" #: src/gpodder/gtkui/main.py:1709 msgid "Preview" msgstr "" #: src/gpodder/gtkui/main.py:1711 msgid "Stream" msgstr "Virta" #: src/gpodder/gtkui/main.py:1755 msgid "Send to" msgstr "LУЄhetУЄ" #: src/gpodder/gtkui/main.py:1757 msgid "Local folder" msgstr "Paikalliseen kansioon" #: src/gpodder/gtkui/main.py:1762 msgid "Bluetooth device" msgstr "яЛПBluetooth-laitteelle" #: src/gpodder/gtkui/main.py:1769 msgid "New" msgstr "Uusi" #: src/gpodder/gtkui/main.py:1785 share/gpodder/ui/gtk/gpodder.ui.h:25 msgid "Episode details" msgstr "Jakson tiedot" #: src/gpodder/gtkui/main.py:1938 msgid "Please check your media player settings in the preferences dialog." msgstr "Tarkista mediasoitinasetukset asetusikkunasta." #: src/gpodder/gtkui/main.py:1939 msgid "Error opening player" msgstr "Virhe soittimen avaamisessa" #: src/gpodder/gtkui/main.py:2178 msgid "Adding podcasts" msgstr "LisУЄtУЄУЄn podcasteja" #: src/gpodder/gtkui/main.py:2179 msgid "Please wait while episode information is downloaded." msgstr "Odota, jaksotietoja ladataan." #: src/gpodder/gtkui/main.py:2186 msgid "Existing subscriptions skipped" msgstr "Nykyiset tilaukset ohitettiin" #: src/gpodder/gtkui/main.py:2187 msgid "You are already subscribed to these podcasts:" msgstr "NУЄmУЄ podcastit on jo tilattu:" #: src/gpodder/gtkui/main.py:2195 msgid "Podcast requires authentication" msgstr "Podcast vaatii tunnistautumisen" #: src/gpodder/gtkui/main.py:2196 #, python-format msgid "Please login to %s:" msgstr "Kirjaudu kohteeseen %s:" #: src/gpodder/gtkui/main.py:2204 src/gpodder/gtkui/main.py:2299 msgid "Authentication failed" msgstr "Tunnistautuminen epУЄonnistui" #: src/gpodder/gtkui/main.py:2210 msgid "Website redirection detected" msgstr "Verkkosivun uudelleenohjaus on tunnistettu" #: src/gpodder/gtkui/main.py:2211 #, python-format msgid "The URL %(url)s redirects to %(target)s." msgstr "URL %(url)s ohjaa kohteeseen %(target)s." #: src/gpodder/gtkui/main.py:2212 msgid "Do you want to visit the website now?" msgstr "Haluatko vierailla verkkosivulla nyt?" #: src/gpodder/gtkui/main.py:2221 msgid "Could not add some podcasts" msgstr "Joitakin podcasteja ei voitu lisУЄtУЄ" #: src/gpodder/gtkui/main.py:2222 msgid "Some podcasts could not be added to your list:" msgstr "Joitakin podcasteja ei voitu lisУЄtУЄ luetteloon:" #: src/gpodder/gtkui/main.py:2224 msgid "Unknown" msgstr "Tuntematon" #: src/gpodder/gtkui/main.py:2308 msgid "Redirection detected" msgstr "Uudelleenohjaus tunnistettiin" #: src/gpodder/gtkui/main.py:2342 msgid "Merging episode actions" msgstr "YhdistetУЄУЄn jaksotoimintoja" #: src/gpodder/gtkui/main.py:2343 msgid "Episode actions from gpodder.net are merged." msgstr "Jaksotoimintoja yhdistetУЄУЄn gpodder.netistУЄ." #: src/gpodder/gtkui/main.py:2368 msgid "Cancelling..." msgstr "Perutaan..." #: src/gpodder/gtkui/main.py:2377 msgid "Please connect to a network, then try again." msgstr "" #: src/gpodder/gtkui/main.py:2378 #, fuzzy msgid "No network connection" msgstr "Uusi nimi:" #: src/gpodder/gtkui/main.py:2399 #, python-format msgid "Updating %(count)d feed..." msgid_plural "Updating %(count)d feeds..." msgstr[0] "PУЄivitetУЄУЄn %(count)d syУЖte..." msgstr[1] "PУЄivitetУЄУЄn %(count)d syУЖtettУЄ..." #: src/gpodder/gtkui/main.py:2417 #, python-format msgid "Error while updating %(url)s: %(message)s" msgstr "Virhe pУЄivitettУЄessУЄ %(url)s: %(message)s" #: src/gpodder/gtkui/main.py:2419 #, python-format msgid "The feed at %(url)s could not be updated." msgstr "Osoitteessa %(url)s olevaa syУЖtettУЄ ei voitu pУЄivittУЄУЄ." #: src/gpodder/gtkui/main.py:2420 msgid "Error while updating feed" msgstr "Virhe pУЄivitettУЄessУЄ syУЖtettУЄ" #: src/gpodder/gtkui/main.py:2435 #, python-format msgid "Updated %(podcast)s (%(position)d/%(total)d)" msgstr "PУЄivitettiin %(podcast)s (%(position)d/%(total)d)" #: src/gpodder/gtkui/main.py:2466 msgid "No new episodes" msgstr "Ei uusia jaksoja" #: src/gpodder/gtkui/main.py:2479 #, python-format msgid "Downloading %(count)d new episode." msgid_plural "Downloading %(count)d new episodes." msgstr[0] "Ladataan %(count)d uusi jakso." msgstr[1] "Ladataan %(count)d uutta jaksoa." #: src/gpodder/gtkui/main.py:2480 src/gpodder/gtkui/main.py:2484 #: src/gpodder/gtkui/main.py:2833 msgid "New episodes available" msgstr "Uusia jaksoja on saatavilla" #: src/gpodder/gtkui/main.py:2483 #, python-format msgid "%(count)d new episode added to download list." msgid_plural "%(count)d new episodes added to download list." msgstr[0] "%(count)d uusi jakso on lisУЄtty latausluetteloon." msgstr[1] "%(count)d uutta jaksoa on lisУЄtty latausluetteloon." #: src/gpodder/gtkui/main.py:2490 #, python-format msgid "%(count)d new episode available" msgid_plural "%(count)d new episodes available" msgstr[0] "%(count)d uusi jakso on saatavilla" msgstr[1] "%(count)d uutta jaksoa on saatavilla" #: src/gpodder/gtkui/main.py:2509 msgid "Quit gPodder" msgstr "Lopeta gPodder" #: src/gpodder/gtkui/main.py:2510 msgid "" "You are downloading episodes. You can resume downloads the next time you " "start gPodder. Do you want to quit now?" msgstr "" "Jaksojen lataaminen on kesken. Lataamista voidaan jatkaa, kun gPodder " "kУЄynnistetУЄУЄn seuraavan kerran. Haluatko lopettaa nyt?" #: src/gpodder/gtkui/main.py:2559 msgid "Episodes are locked" msgstr "Jaksot on lukittu" #: src/gpodder/gtkui/main.py:2560 msgid "" "The selected episodes are locked. Please unlock the episodes that you want " "to delete before trying to delete them." msgstr "" "Valitut jaksot on lukittu eikУЄ niitУЄ voi poistaa ennen kuin lukitukset " "poistetaan." #: src/gpodder/gtkui/main.py:2565 #, python-format msgid "Delete %(count)d episode?" msgid_plural "Delete %(count)d episodes?" msgstr[0] "Poistetaanko %(count)d jakso?" msgstr[1] "Poistetaanko %(count)d jaksoa?" #: src/gpodder/gtkui/main.py:2566 msgid "Deleting episodes removes downloaded files." msgstr "Valitse laitteelta poistettavat jaksot." #: src/gpodder/gtkui/main.py:2571 msgid "Deleting episodes" msgstr "Poistetaan jaksoja" #: src/gpodder/gtkui/main.py:2572 msgid "Please wait while episodes are deleted" msgstr "Odota, jaksot poistetaan" #: src/gpodder/gtkui/main.py:2625 #, python-format msgid "Select older than %(count)d day" msgid_plural "Select older than %(count)d days" msgstr[0] "Valitse %(count)d pУЄivУЄУЄ vanhemmat" msgstr[1] "Valitse %(count)d pУЄivУЄУЄ vanhemmat" #: src/gpodder/gtkui/main.py:2627 msgid "Select played" msgstr "Valitse soitetut" #: src/gpodder/gtkui/main.py:2628 msgid "Select finished" msgstr "Valitse valmiit" #: src/gpodder/gtkui/main.py:2632 msgid "Select the episodes you want to delete:" msgstr "Valitse jaksot, jotka haluat poistaa:" #: src/gpodder/gtkui/main.py:2648 share/gpodder/ui/gtk/gpodder.ui.h:4 msgid "Delete episodes" msgstr "Poista jaksot" #: src/gpodder/gtkui/main.py:2703 src/gpodder/gtkui/main.py:2934 #: src/gpodder/gtkui/main.py:3034 msgid "No podcast selected" msgstr "MitУЄУЄn podcastia ei ole valittu" #: src/gpodder/gtkui/main.py:2704 msgid "Please select a podcast in the podcasts list to update." msgstr "Valitse pУЄivitettУЄvУЄ podcast luettelosta." #: src/gpodder/gtkui/main.py:2774 #, python-format msgid "Download error while downloading %(episode)s: %(message)s" msgstr "Virhe ladattaessa jaksoa %(episode)s: %(message)s" #: src/gpodder/gtkui/main.py:2775 msgid "Download error" msgstr "Latausvirhe" #: src/gpodder/gtkui/main.py:2818 msgid "Select the episodes you want to download:" msgstr "Valitse ladattavat jaksot:" #: src/gpodder/gtkui/main.py:2841 msgid "Mark as old" msgstr "Merkitse vanhaksi" #: src/gpodder/gtkui/main.py:2848 msgid "Please check for new episodes later." msgstr "Etsi uusia jaksoja myУЖhemmin." #: src/gpodder/gtkui/main.py:2849 msgid "No new episodes available" msgstr "Uusia jaksoja ei ole saatavilla" #: src/gpodder/gtkui/main.py:2900 msgid "Login to gpodder.net" msgstr "Kirjaudu gpodder.net-osoitteeseen" #: src/gpodder/gtkui/main.py:2901 msgid "Please login to download your subscriptions." msgstr "Kirjaudu tilauksien lataamiseksi." #: src/gpodder/gtkui/main.py:2916 msgid "Subscriptions on gpodder.net" msgstr "gpodder.net-palvelun tilaukset" #: src/gpodder/gtkui/main.py:2935 msgid "Please select a podcast in the podcasts list to edit." msgstr "Valitse muokattava jakso podcast-luettelosta." #: src/gpodder/gtkui/main.py:2949 msgid "Podcast" msgstr "Podcast" #: src/gpodder/gtkui/main.py:2955 share/gpodder/ui/gtk/gpodder.ui.h:12 msgid "Remove podcasts" msgstr "Poista podcasteja" #: src/gpodder/gtkui/main.py:2956 msgid "Select the podcast you want to remove." msgstr "Valitse podcastit, jotka haluat poistaa." #: src/gpodder/gtkui/main.py:2960 #: src/gpodder/gtkui/desktop/episodeselector.py:105 msgid "Remove" msgstr "Poista" #: src/gpodder/gtkui/main.py:2969 msgid "Removing podcast" msgstr "Poistetaan podcast" #: src/gpodder/gtkui/main.py:2970 msgid "Please wait while the podcast is removed" msgstr "Odota, podcastia poistetaan" #: src/gpodder/gtkui/main.py:2971 msgid "Do you really want to remove this podcast and its episodes?" msgstr "Haluatko poistaa tУЄmУЄn podcastin ja sen jaksot?" #: src/gpodder/gtkui/main.py:2973 msgid "Removing podcasts" msgstr "Poistetaan podcasteja" #: src/gpodder/gtkui/main.py:2974 msgid "Please wait while the podcasts are removed" msgstr "Odota, podcasteja poistetaan" #: src/gpodder/gtkui/main.py:2975 msgid "Do you really want to remove the selected podcasts and their episodes?" msgstr "Haluatko poistaa valitut podcastit ja niiden jaksot?" #: src/gpodder/gtkui/main.py:3035 msgid "Please select a podcast in the podcasts list to remove." msgstr "Valitse poistettava podcast luettelosta." #: src/gpodder/gtkui/main.py:3045 msgid "OPML files" msgstr "OPML-tiedostot" #: src/gpodder/gtkui/main.py:3050 msgid "Import from OPML" msgstr "Tuo OPML-tiedostosta" #: src/gpodder/gtkui/main.py:3064 msgid "Import podcasts from OPML file" msgstr "Tuo podcastit OPML-tiedostosta" #: src/gpodder/gtkui/main.py:3071 msgid "Nothing to export" msgstr "Ei mitУЄУЄn vietУЄvУЄУЄ" #: src/gpodder/gtkui/main.py:3072 msgid "" "Your list of podcast subscriptions is empty. Please subscribe to some " "podcasts first before trying to export your subscription list." msgstr "" "Podcast-tilauksien luettelo on tyhjУЄ. Tilaa joitakin podcasteja ennen kuin " "yritУЄt viedУЄ tilausluetteloa." #: src/gpodder/gtkui/main.py:3076 msgid "Export to OPML" msgstr "Vie OPML:ksi" #: src/gpodder/gtkui/main.py:3087 #, python-format msgid "%(count)d subscription exported" msgid_plural "%(count)d subscriptions exported" msgstr[0] "Vietiin %(count)d tilaus" msgstr[1] "Vietiin %(count)d tilausta" #: src/gpodder/gtkui/main.py:3088 msgid "Your podcast list has been successfully exported." msgstr "Podcast-luettelon vienti onnistui." #: src/gpodder/gtkui/main.py:3090 msgid "Could not export OPML to file. Please check your permissions." msgstr "Ei voitu viedУЄ OPML-tiedostoksi. Tarkista tiedosto-oikeudet." #: src/gpodder/gtkui/main.py:3090 msgid "OPML export failed" msgstr "OPML-vienti epУЄonnistui" #: src/gpodder/gtkui/main.py:3117 #, fuzzy msgid "No updates available" msgstr "YhtУЄУЄn jaksoa ei ole saatavilla" #: src/gpodder/gtkui/main.py:3118 msgid "You have the latest version of gPodder." msgstr "" #: src/gpodder/gtkui/main.py:3122 #, fuzzy msgid "New version available" msgstr "Uusia jaksoja on saatavilla" #: src/gpodder/gtkui/main.py:3124 #, python-format msgid "Installed version: %s" msgstr "" #: src/gpodder/gtkui/main.py:3125 #, fuzzy, python-format msgid "Newest version: %s" msgstr "Poistetaan: %s" #: src/gpodder/gtkui/main.py:3126 #, fuzzy, python-format msgid "Release date: %s" msgstr "julkaistu: %s" #: src/gpodder/gtkui/main.py:3128 #, fuzzy msgid "Download the latest version from gpodder.org?" msgstr "Lataa tilaukset gpodder.netistУЄ" #: src/gpodder/gtkui/main.py:3141 #, fuzzy msgid "About gPodder" msgstr "Lopeta gPodder" #: src/gpodder/gtkui/main.py:3424 #, fuzzy msgid "Please register a YouTube API key and set it in the preferences." msgstr "Tee mediasoitinasetukset asetusikkunassa." #: src/gpodder/gtkui/main.py:3425 msgid "Would you like to set up an API key now?" msgstr "" #: src/gpodder/gtkui/main.py:3425 msgid "API key required" msgstr "" #: src/gpodder/gtkui/main.py:3444 bin/gpo:631 #, fuzzy msgid "No unique URL found" msgstr "Asemia ei lУЖytynyt" #: src/gpodder/gtkui/main.py:3449 bin/gpo:637 #, fuzzy msgid "Already subscribed" msgstr "Ei voi synkronoida iPodiin" #: src/gpodder/gtkui/main.py:3458 bin/gpo:649 #, python-format msgid "Make sure the API key is correct. Error: %(message)s" msgstr "" #: src/gpodder/gtkui/main.py:3459 #, fuzzy msgid "Error getting YouTube channels" msgstr "Virhe tehtУЄessУЄ asetusta" #: src/gpodder/gtkui/main.py:3462 msgid "Successfully migrated subscriptions" msgstr "" #: src/gpodder/gtkui/main.py:3464 #, fuzzy msgid "Subscriptions are up to date" msgstr "Tilaus on keskeytetty" #: src/gpodder/gtkui/main.py:3467 msgid "These URLs failed:" msgstr "" #: src/gpodder/gtkui/main.py:3469 #, fuzzy msgid "Could not migrate some subscriptions" msgstr "Joitakin podcasteja ei voitu lisУЄtУЄ" #: src/gpodder/gtkui/main.py:3493 msgid "Cannot start gPodder" msgstr "gPodderia ei voi kУЄynnistУЄУЄ" #: src/gpodder/gtkui/main.py:3494 #, python-format msgid "D-Bus error: %s" msgstr "D-Bus-virhe: %s" #: src/gpodder/gtkui/model.py:68 #, python-format msgid "released %s" msgstr "julkaistu %s" #: src/gpodder/gtkui/model.py:69 src/gpodder/gtkui/model.py:87 #: src/gpodder/gtkui/model.py:237 src/gpodder/gtkui/shownotes.py:84 #, python-format msgid "from %s" msgstr "kanavalta %s" #: src/gpodder/gtkui/model.py:80 src/gpodder/gtkui/model.py:393 msgid "played" msgstr "soitettu" #: src/gpodder/gtkui/model.py:82 msgid "unplayed" msgstr "soittamaton" #: src/gpodder/gtkui/model.py:85 msgid "today" msgstr "tУЄnУЄУЄn" #: src/gpodder/gtkui/model.py:86 #, python-format msgid "downloaded %s" msgstr "ladattu %s" #: src/gpodder/gtkui/model.py:337 msgid "Deleted" msgstr "Poistettu" #: src/gpodder/gtkui/model.py:342 msgid "New episode" msgstr "Uusi jakso" #: src/gpodder/gtkui/model.py:356 msgid "Downloaded episode" msgstr "Ladattu jakso" #: src/gpodder/gtkui/model.py:359 msgid "Downloaded video episode" msgstr "Ladattu videojakso" #: src/gpodder/gtkui/model.py:362 msgid "Downloaded image" msgstr "Ladattu kuva" #: src/gpodder/gtkui/model.py:365 msgid "Downloaded file" msgstr "Ladattu tiedosto" #: src/gpodder/gtkui/model.py:380 msgid "missing file" msgstr "яЛПpuuttuva tiedosto" #: src/gpodder/gtkui/model.py:384 msgid "never displayed" msgstr "ei koskaan nУЄytetty" #: src/gpodder/gtkui/model.py:386 msgid "never played" msgstr "ei koskaan soitettu" #: src/gpodder/gtkui/model.py:388 msgid "never opened" msgstr "ei koskaan avattu" #: src/gpodder/gtkui/model.py:391 msgid "displayed" msgstr "nУЄytetty" #: src/gpodder/gtkui/model.py:395 msgid "opened" msgstr "avattu" #: src/gpodder/gtkui/model.py:397 msgid "deletion prevented" msgstr "poistaminen on estetty" #: src/gpodder/gtkui/model.py:432 share/gpodder/ui/gtk/gpodder.ui.h:32 msgid "All episodes" msgstr "Kaikki jaksot" #: src/gpodder/gtkui/model.py:433 msgid "from all podcasts" msgstr "kaikista podcasteista" #: src/gpodder/gtkui/model.py:625 msgid "Subscription paused" msgstr "Tilaus on keskeytetty" #: src/gpodder/gtkui/shownotes.py:118 #, fuzzy msgid "Please select an episode" msgstr "Valitse jaksot" #: src/gpodder/gtkui/interface/addpodcast.py:74 msgid "Nothing to paste." msgstr "Ei mitУЄУЄn liitettУЄvУЄУЄ." #: src/gpodder/gtkui/interface/addpodcast.py:74 msgid "Clipboard is empty" msgstr "LeikepУЖytУЄ on tyhjУЄ" #: src/gpodder/gtkui/interface/common.py:160 msgid "Username" msgstr "KУЄyttУЄjУЄtunnus" #: src/gpodder/gtkui/interface/common.py:163 msgid "New user" msgstr "Uusi kУЄyttУЄjУЄ" #: src/gpodder/gtkui/interface/common.py:170 msgid "Login" msgstr "Kirjautuminen" #: src/gpodder/gtkui/interface/common.py:172 msgid "Authentication required" msgstr "Tunnistautuminen vaaditaan" #: src/gpodder/gtkui/interface/common.py:203 msgid "Password" msgstr "Salasana" #: src/gpodder/gtkui/interface/common.py:225 msgid "Select destination" msgstr "Valitse kohde" #: src/gpodder/gtkui/interface/configeditor.py:34 msgid "Setting" msgstr "Asetus" #: src/gpodder/gtkui/interface/configeditor.py:41 msgid "Set to" msgstr "Asetettu arvoon" #: src/gpodder/gtkui/interface/configeditor.py:81 #, python-format msgid "Cannot set %(field)s to %(value)s. Needed data type: %(datatype)s" msgstr "" "Asetusta %(field)s ei voida asettaa arvoon %(value)s. Tarvittava " "tietotyyppi: %(datatype)s" #: src/gpodder/gtkui/interface/configeditor.py:85 msgid "Error setting option" msgstr "Virhe tehtУЄessУЄ asetusta" #: src/gpodder/gtkui/desktop/channel.py:100 #, fuzzy msgid "Add section" msgstr "Toiminto" #: src/gpodder/gtkui/desktop/channel.py:100 #, fuzzy msgid "New section:" msgstr "Uusi nimi:" #: src/gpodder/gtkui/desktop/channel.py:133 msgid "Select new podcast cover artwork" msgstr "Valitse uusi podcastin kansi" #: src/gpodder/gtkui/desktop/channel.py:161 msgid "You can only drop a single image or URL here." msgstr "TУЄhУЄn voi pudottaa vain yhden kuvan tai osoitteen." #: src/gpodder/gtkui/desktop/channel.py:161 #: src/gpodder/gtkui/desktop/channel.py:171 msgid "Drag and drop" msgstr "VedУЄ ja pudota" #: src/gpodder/gtkui/desktop/channel.py:171 msgid "You can only drop local files and http:// URLs here." msgstr "TУЄhУЄn voi pudottaa vain paikallisia tiedostoja ja http://-osoitteita." #: src/gpodder/gtkui/desktop/deviceplaylist.py:98 #, fuzzy, python-format msgid "Folder %s could not be created." msgstr "Osoitteessa %(url)s olevaa syУЖtettУЄ ei voitu pУЄivittУЄУЄ." #: src/gpodder/gtkui/desktop/deviceplaylist.py:98 #, fuzzy msgid "Error writing playlist" msgstr "Virhe soittimen avaamisessa" #: src/gpodder/gtkui/desktop/episodeselector.py:288 #: share/gpodder/ui/gtk/gpodderepisodeselector.ui.h:2 msgid "Select all" msgstr "Valitse kaikki" #: src/gpodder/gtkui/desktop/episodeselector.py:292 #: share/gpodder/ui/gtk/gpodderepisodeselector.ui.h:3 msgid "Select none" msgstr "TyhjennУЄ valinta" #: src/gpodder/gtkui/desktop/episodeselector.py:324 msgid "Nothing selected" msgstr "MitУЄУЄn ei ole valittu" #: src/gpodder/gtkui/desktop/episodeselector.py:325 #, python-format msgid "%(count)d episode" msgid_plural "%(count)d episodes" msgstr[0] "%(count)d jakso" msgstr[1] "%(count)d jaksoa" #: src/gpodder/gtkui/desktop/episodeselector.py:327 #, python-format msgid "size: %s" msgstr "koko: %s" #: src/gpodder/gtkui/desktop/podcastdirectory.py:238 #, fuzzy msgid "Loading podcasts" msgstr "LisУЄtУЄУЄn podcasteja" #: src/gpodder/gtkui/desktop/podcastdirectory.py:239 #, fuzzy msgid "Please wait while the podcast list is downloaded" msgstr "Odota, podcastia poistetaan" #: src/gpodder/gtkui/desktop/preferences.py:51 #: src/gpodder/gtkui/desktop/preferences.py:93 msgid "Do nothing" msgstr "У„lУЄ tee mitУЄУЄn" #: src/gpodder/gtkui/desktop/preferences.py:52 msgid "Show episode list" msgstr "NУЄytУЄ jaksoluettelo" #: src/gpodder/gtkui/desktop/preferences.py:53 msgid "Add to download list" msgstr "LisУЄУЄ latausluetteloon" #: src/gpodder/gtkui/desktop/preferences.py:54 msgid "Download immediately" msgstr "Lataa heti" #: src/gpodder/gtkui/desktop/preferences.py:72 msgid "None" msgstr "Ei mitУЄУЄn" #: src/gpodder/gtkui/desktop/preferences.py:73 msgid "iPod" msgstr "" #: src/gpodder/gtkui/desktop/preferences.py:74 msgid "Filesystem-based" msgstr "TiedostojУЄrjestelmУЄpohjainen" #: src/gpodder/gtkui/desktop/preferences.py:94 #, fuzzy msgid "Mark as played" msgstr "Merkitse soittamattomaksi" #: src/gpodder/gtkui/desktop/preferences.py:95 #, fuzzy msgid "Delete from gPodder" msgstr "Poista gPodderista" #: src/gpodder/gtkui/desktop/preferences.py:123 #, fuzzy, python-format msgid "Custom (%(format_ids)s)" msgstr "Mukautetut muotomerkkijonot" #: src/gpodder/gtkui/desktop/preferences.py:318 msgid "Name" msgstr "" #: src/gpodder/gtkui/desktop/preferences.py:369 #, fuzzy msgid "Documentation" msgstr "Otsikko:" #: src/gpodder/gtkui/desktop/preferences.py:374 msgid "Extension info" msgstr "" #: src/gpodder/gtkui/desktop/preferences.py:379 msgid "Support the author" msgstr "" #: src/gpodder/gtkui/desktop/preferences.py:413 msgid "Extension cannot be activated" msgstr "" #: src/gpodder/gtkui/desktop/preferences.py:426 msgid "Extension module info" msgstr "" #: src/gpodder/gtkui/desktop/preferences.py:463 msgid "Configure audio player" msgstr "Lataa heti" #: src/gpodder/gtkui/desktop/preferences.py:464 #: src/gpodder/gtkui/desktop/preferences.py:474 msgid "Command:" msgstr "Kommentti:" #: src/gpodder/gtkui/desktop/preferences.py:473 msgid "Configure video player" msgstr "Videosoittimen asetukset" #: src/gpodder/gtkui/desktop/preferences.py:485 #: src/gpodder/gtkui/desktop/preferences.py:503 msgid "manually" msgstr "manuaalisesti" #: src/gpodder/gtkui/desktop/preferences.py:505 #, python-format msgid "after %(count)d day" msgid_plural "after %(count)d days" msgstr[0] "%(count)d pУЄivУЄn jУЄlkeen" msgstr[1] "%(count)d pУЄivУЄn jУЄlkeen" #: src/gpodder/gtkui/desktop/preferences.py:541 msgid "Replace subscription list on server" msgstr "Korvaa palvelimella oleva tilausluettelo" #: src/gpodder/gtkui/desktop/preferences.py:542 msgid "" "Remote podcasts that have not been added locally will be removed on the " "server. Continue?" msgstr "" "Palvelimelta poistetaan podcastit, joita ei ole lisУЄtty paikalliseen " "gPodderiin. Jatketaanko?" #: src/gpodder/gtkui/desktop/preferences.py:621 msgid "Select folder for mount point" msgstr "Valitse liitospisteenУЄ kУЄytettУЄvУЄ kansio" #: src/gpodder/gtkui/desktop/preferences.py:638 #, fuzzy msgid "Select folder for playlists" msgstr "Valitse liitospisteenУЄ kУЄytettУЄvУЄ kansio" #: src/gpodder/gtkui/desktop/sync.py:86 msgid "No device configured" msgstr "Laitetta ei ole asetettu" #: src/gpodder/gtkui/desktop/sync.py:87 msgid "Please set up your device in the preferences dialog." msgstr "Tee mediasoitinasetukset asetusikkunassa." #: src/gpodder/gtkui/desktop/sync.py:91 msgid "Cannot open device" msgstr "Laitetta ei voi avata" #: src/gpodder/gtkui/desktop/sync.py:92 msgid "Please check the settings in the preferences dialog." msgstr "Tarkista asetukset asetusikkunasta." #: src/gpodder/gtkui/desktop/sync.py:139 msgid "Not enough space left on device" msgstr "Laitteella ei ole riittУЄvУЄsti vapaata tilaa" #: src/gpodder/gtkui/desktop/sync.py:140 #, fuzzy, python-format msgid "" "Additional free space required: %(required_space)s\n" "Do you want to continue?" msgstr "" "Tilaa on vapautettava %s.\n" "Haluatko jatkaa?" #: src/gpodder/gtkui/desktop/sync.py:199 #, fuzzy msgid "Update successful" msgstr "Luettelon lУЄhettУЄminen onnistui." #: src/gpodder/gtkui/desktop/sync.py:200 msgid "The playlist on your MP3 player has been updated." msgstr "" #: src/gpodder/gtkui/desktop/sync.py:274 msgid "Episodes have been deleted on device" msgstr "" #: src/gpodder/gtkui/desktop/sync.py:285 #, fuzzy msgid "Error writing playlist files" msgstr "Virhe tiedoston muuntamisessa." #: src/gpodder/plugins/soundcloud.py:154 msgid "Unknown track" msgstr "Tuntematon kappale" #: src/gpodder/plugins/soundcloud.py:181 #, python-format msgid "%s on Soundcloud" msgstr "KУЄyttУЄjУЄtunnus %s Soundcloudissa" #: src/gpodder/plugins/soundcloud.py:190 #, python-format msgid "Tracks published by %s on Soundcloud." msgstr "KУЄyttУЄjУЄn %s julkaisemat kappaleet Soundcloudissa." #: src/gpodder/plugins/soundcloud.py:217 #, python-format msgid "%s's favorites on Soundcloud" msgstr "KУЄyttУЄjУЄn %s suosikit Soundcloudissa" #: src/gpodder/plugins/soundcloud.py:223 #, python-format msgid "Tracks favorited by %s on Soundcloud." msgstr "KУЄyttУЄjУЄn %s suosikit Soundcloudissa." #: share/gpodder/extensions/audio_converter.py:20 #, fuzzy msgid "Convert audio files" msgstr "Muunnetaan tiedostoa" #: share/gpodder/extensions/audio_converter.py:21 msgid "Transcode audio files to mp3/ogg" msgstr "" #: share/gpodder/extensions/audio_converter.py:84 #: share/gpodder/extensions/video_converter.py:86 #, python-format msgid "Convert to %(format)s" msgstr "" #: share/gpodder/extensions/audio_converter.py:111 #: share/gpodder/extensions/rockbox_convert2mp4.py:65 #: share/gpodder/extensions/video_converter.py:111 #, fuzzy msgid "File converted" msgstr "iPodien OGG-muunnin" #: share/gpodder/extensions/audio_converter.py:114 #: share/gpodder/extensions/video_converter.py:114 #, fuzzy msgid "Conversion failed" msgstr "Muunnetaan tiedostoa" #: share/gpodder/extensions/concatenate_videos.py:20 #: share/gpodder/extensions/concatenate_videos.py:100 #, fuzzy msgid "Concatenate videos" msgstr "Muunnetaan tiedostoa" #: share/gpodder/extensions/concatenate_videos.py:21 msgid "Add a context menu item for concatenating multiple videos" msgstr "" #: share/gpodder/extensions/concatenate_videos.py:37 msgid "Save video" msgstr "" #: share/gpodder/extensions/concatenate_videos.py:66 #, fuzzy msgid "Concatenating video files" msgstr "Muunnetaan tiedostoa" #: share/gpodder/extensions/concatenate_videos.py:67 #, python-format msgid "Writing %(filename)s" msgstr "" #: share/gpodder/extensions/concatenate_videos.py:78 msgid "Videos successfully converted" msgstr "" #: share/gpodder/extensions/concatenate_videos.py:79 #, fuzzy msgid "Error converting videos" msgstr "Virhe tiedoston muuntamisessa." #: share/gpodder/extensions/concatenate_videos.py:80 msgid "Concatenation result" msgstr "" #: share/gpodder/extensions/enqueue_in_mediaplayer.py:16 msgid "Enqueue in media players" msgstr "" #: share/gpodder/extensions/enqueue_in_mediaplayer.py:17 msgid "" "Add a context menu item for enqueueing episodes in installed media players" msgstr "" #: share/gpodder/extensions/enqueue_in_mediaplayer.py:35 msgid "Enqueue in" msgstr "" #: share/gpodder/extensions/episode_website_context_menu.py:14 msgid "\"Open website\" episode context menu" msgstr "" #: share/gpodder/extensions/episode_website_context_menu.py:15 msgid "Add a context menu item for opening the website of an episode" msgstr "" #: share/gpodder/extensions/episode_website_context_menu.py:30 #, fuzzy msgid "Open website" msgstr "Verkkosivu:" #: share/gpodder/extensions/gtk_statusicon.py:14 #, fuzzy msgid "Gtk Status Icon" msgstr "Tilakuvake" #: share/gpodder/extensions/gtk_statusicon.py:15 msgid "Show a status icon for Gtk-based Desktops." msgstr "" #: share/gpodder/extensions/minimize_on_start.py:10 msgid "Minimize on start" msgstr "" #: share/gpodder/extensions/minimize_on_start.py:11 msgid "Minimizes the gPodder window on startup." msgstr "" #: share/gpodder/extensions/mpris-listener.py:33 msgid "MPRIS Listener" msgstr "" #: share/gpodder/extensions/mpris-listener.py:34 msgid "Convert MPRIS notifications to gPodder Media Player D-Bus API" msgstr "" #: share/gpodder/extensions/normalize_audio.py:21 msgid "Normalize audio with re-encoding" msgstr "" #: share/gpodder/extensions/normalize_audio.py:22 msgid "Normalize the volume of audio files with normalize-audio" msgstr "" #: share/gpodder/extensions/normalize_audio.py:99 #, fuzzy msgid "File normalized" msgstr "Tiedostonimi" #: share/gpodder/extensions/rename_download.py:16 #, fuzzy msgid "Rename episodes after download" msgstr "yksi jakso ladattu:" #: share/gpodder/extensions/rename_download.py:17 #, fuzzy msgid "Rename episodes to \".\" on download" msgstr "Yksi uusi jakso on saatavilla" #: share/gpodder/extensions/rm_ogg_cover.py:37 #, fuzzy msgid "Remove cover art from OGG files" msgstr "Aseta kansikuva tiedostosta" #: share/gpodder/extensions/rm_ogg_cover.py:38 msgid "removes coverart from all downloaded ogg files" msgstr "" #: share/gpodder/extensions/rm_ogg_cover.py:66 #, fuzzy msgid "Remove cover art" msgstr "Poista uusi merkki" #: share/gpodder/extensions/rockbox_convert2mp4.py:26 msgid "Convert video files to MP4 for Rockbox" msgstr "" #: share/gpodder/extensions/rockbox_convert2mp4.py:27 msgid "Converts all videos to a Rockbox-compatible format" msgstr "" #: share/gpodder/extensions/sonos.py:19 share/gpodder/extensions/sonos.py:78 msgid "Stream to Sonos" msgstr "" #: share/gpodder/extensions/sonos.py:20 msgid "Stream podcasts to Sonos speakers" msgstr "" #: share/gpodder/extensions/tagging.py:45 msgid "Tag downloaded files using Mutagen" msgstr "" #: share/gpodder/extensions/tagging.py:46 #, fuzzy msgid "Add episode and podcast titles to MP3/OGG tags" msgstr "NУЄytУЄ т€Kaikki jaksotт€ podcast-luettelossa" #: share/gpodder/extensions/taskbar_progress.py:28 msgid "Show download progress on the taskbar" msgstr "" #: share/gpodder/extensions/taskbar_progress.py:29 msgid "Displays the progress on the Windows taskbar." msgstr "" #: share/gpodder/extensions/ted_subtitles.py:16 msgid "Subtitle Downloader for TED Talks" msgstr "" #: share/gpodder/extensions/ted_subtitles.py:17 msgid "Downloads .srt subtitles for TED Talks Videos" msgstr "" #: share/gpodder/extensions/ubuntu_appindicator.py:10 msgid "Ubuntu App Indicator" msgstr "" #: share/gpodder/extensions/ubuntu_appindicator.py:11 msgid "Show a status indicator in the top bar." msgstr "" #: share/gpodder/extensions/ubuntu_appindicator.py:47 msgid "Show main window" msgstr "" #: share/gpodder/extensions/ubuntu_appindicator.py:57 #: share/gpodder/ui/gtk/gpodder.ui.h:6 msgid "Quit" msgstr "Lopeta" #: share/gpodder/extensions/ubuntu_unity.py:10 msgid "Ubuntu Unity Integration" msgstr "" #: share/gpodder/extensions/ubuntu_unity.py:11 msgid "Show download progress in the Unity Launcher icon." msgstr "" #: share/gpodder/extensions/update_feeds_on_startup.py:14 #, fuzzy msgid "Search for new episodes on startup" msgstr "Etsi uusia jaksoja kУЄynnistettУЄessУЄ" #: share/gpodder/extensions/update_feeds_on_startup.py:15 #, fuzzy msgid "Starts the search for new episodes on startup" msgstr "Etsi uusia jaksoja kУЄynnistettУЄessУЄ" #: share/gpodder/extensions/video_converter.py:22 #, fuzzy msgid "Convert video files" msgstr "Muunnetaan tiedostoa" #: share/gpodder/extensions/video_converter.py:23 msgid "Transcode video files to avi/mp4/m4v" msgstr "" #: share/gpodder/ui/gtk/gpodderaddpodcast.ui.h:1 msgid "Add a new podcast" msgstr "LisУЄУЄ uusi podcast" #: share/gpodder/ui/gtk/gpodderaddpodcast.ui.h:2 msgid "URL:" msgstr "Osoite:" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:1 msgid "gPodder Podcast Editor" msgstr "gPodderin podcast-muokkain" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:2 #, fuzzy msgid "Section:" msgstr "Toiminto" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:3 msgid "Disable feed updates (pause subscription)" msgstr "Poista syУЖtteiden pУЄivitysheuristiikat kУЄytУЖstУЄ (katkaise tilaus)" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:4 #, fuzzy msgid "Synchronize to MP3 player devices" msgstr "Synkronoidaan soittimelle" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:5 #, fuzzy msgid "Strategy:" msgstr "Poistostrategia" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:6 #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:6 msgid "General" msgstr "Yleinen" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:7 msgid "HTTP/FTP Authentication" msgstr "HTTP/FTP-tunnistautuminen" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:8 #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:13 msgid "Username:" msgstr "KУЄyttУЄjУЄtunnus:" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:9 #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:14 msgid "Password:" msgstr "Salasana:" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:10 msgid "Locations" msgstr "Sijainnit" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:11 msgid "Download to:" msgstr "Lataa kohteeseen:" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:12 msgid "Website:" msgstr "Verkkosivu:" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:13 msgid "website label" msgstr "verkkosivun nimi" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:14 msgid "Advanced" msgstr "LisУЄasetukset" #: share/gpodder/ui/gtk/gpodderconfigeditor.ui.h:1 msgid "gPodder Configuration Editor" msgstr "gPodderin asetusten muokkain" #: share/gpodder/ui/gtk/gpodderconfigeditor.ui.h:2 msgid "Search for:" msgstr "Etsi:" #: share/gpodder/ui/gtk/gpodderconfigeditor.ui.h:3 msgid "Show All" msgstr "NУЄytУЄ kaikki" #: share/gpodder/ui/gtk/gpodderepisodeselector.ui.h:1 msgid "Select episodes" msgstr "Valitse jaksot" #: share/gpodder/ui/gtk/gpodderpodcastdirectory.ui.h:1 msgid "Find new podcasts" msgstr "Etsi uusia podcasteja" #: share/gpodder/ui/gtk/gpodderpodcastdirectory.ui.h:2 msgid "Select All" msgstr "Valitse kaikki" #: share/gpodder/ui/gtk/gpodderpodcastdirectory.ui.h:3 msgid "Select None" msgstr "Poista valinnat" #: share/gpodder/ui/gtk/gpodderpodcastdirectory.ui.h:4 msgid "label" msgstr "" #: share/gpodder/ui/gtk/gpodderpodcastdirectory.ui.h:5 msgid "..." msgstr "" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:1 #: share/gpodder/ui/gtk/gpodder.ui.h:5 msgid "Preferences" msgstr "Ominaisuudet" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:2 msgid "Audio player:" msgstr "Musiikkisoitin:" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:3 msgid "Video player:" msgstr "Videosoitin:" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:4 #, fuzzy msgid "\"All episodes\" in podcast list" msgstr "NУЄytУЄ т€Kaikki jaksotт€ podcast-luettelossa" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:5 #, fuzzy msgid "Use sections for podcast list" msgstr "Virhe podcast-luettelon tallentamisessa" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:7 msgid "Preferred YouTube format:" msgstr "" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:8 msgid "YouTube API key (v3):" msgstr "" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:9 msgid "Preferred Vimeo format:" msgstr "" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:11 msgid "Extensions" msgstr "" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:12 msgid "Synchronize subscriptions and episode actions" msgstr "Synkronoi tilaukset ja jaksotoiminnot" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:15 msgid "Replace list on server with local subscriptions" msgstr "Korvaa palvelimella oleva luettelo paikallisilla tilauksilla" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:16 msgid "Device name:" msgstr "Laitteen nimi:" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:17 msgid "gpodder.net" msgstr "gpodder.net" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:18 msgid "Update interval:" msgstr "PУЄivitysvУЄli:" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:19 msgid "Maximum number of episodes per podcast:" msgstr "Suurin jaksojen mУЄУЄrУЄ / podcast:" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:20 msgid "When new episodes are found:" msgstr "Kun uusia jaksoja on lУЖydetty:" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:21 msgid "Updating" msgstr "PУЄivitys" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:22 msgid "Delete played episodes:" msgstr "Poista soitetut jaksot:" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:23 #, fuzzy msgid "Remove played episodes even if unfinished" msgstr "Poista soitetut jaksot laitteelta" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:24 msgid "Also remove unplayed episodes" msgstr "Poista myУЖs soittamattomat jaksot" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:25 msgid "Clean-up" msgstr "Siivous" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:26 msgid "Device type:" msgstr "Laitteen tyyppi:" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:27 msgid "Mountpoint:" msgstr "Liitospiste:" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:28 msgid "After syncing an episode:" msgstr "Jakson synkronoinnin jУЄlkeen:" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:29 #, fuzzy msgid "Create playlists on device" msgstr "Korvaa palvelimella oleva tilausluettelo" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:30 #, fuzzy msgid "Playlists Folder:" msgstr "Soittolistan nimi:" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:31 msgid "Remove episodes deleted on device from gPodder" msgstr "" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:32 msgid "Only sync unplayed episodes" msgstr "Synkronoi vain soittamattomat jaksot" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:33 msgid "Devices" msgstr "Laitteet" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:34 msgid "Edit config" msgstr "Muokkaa asetuksia" #: share/gpodder/ui/gtk/gpodder.ui.h:1 msgid "_Podcasts" msgstr "_Podcastit" #: share/gpodder/ui/gtk/gpodder.ui.h:2 msgid "Check for new episodes" msgstr "Etsi uusia jaksoja" #: share/gpodder/ui/gtk/gpodder.ui.h:3 msgid "Download new episodes" msgstr "Lataa uudet jaksot" #: share/gpodder/ui/gtk/gpodder.ui.h:7 msgid "_Subscriptions" msgstr "_Tilaukset" #: share/gpodder/ui/gtk/gpodder.ui.h:8 msgid "Discover new podcasts" msgstr "Etsi uusia podcasteja" #: share/gpodder/ui/gtk/gpodder.ui.h:9 msgid "Add podcast via URL" msgstr "LisУЄУЄ podcast osoitteesta" #: share/gpodder/ui/gtk/gpodder.ui.h:11 msgid "Unsubscribe" msgstr "Peru tilaus" #: share/gpodder/ui/gtk/gpodder.ui.h:14 msgid "Import from OPML file" msgstr "Tuo OPML-tiedostosta" #: share/gpodder/ui/gtk/gpodder.ui.h:15 msgid "Export to OPML file" msgstr "Vie OPML-tiedostoon" #: share/gpodder/ui/gtk/gpodder.ui.h:16 msgid "Go to gpodder.net" msgstr "Mene gpodder.net-osoitteeseen" #: share/gpodder/ui/gtk/gpodder.ui.h:17 msgid "_Episodes" msgstr "_Jaksot" #: share/gpodder/ui/gtk/gpodder.ui.h:18 msgid "Play" msgstr "Toista" #: share/gpodder/ui/gtk/gpodder.ui.h:19 msgid "Open" msgstr "Avaa" #: share/gpodder/ui/gtk/gpodder.ui.h:22 msgid "Delete" msgstr "Poista" #: share/gpodder/ui/gtk/gpodder.ui.h:23 msgid "Toggle new status" msgstr "" #: share/gpodder/ui/gtk/gpodder.ui.h:24 msgid "Change delete lock" msgstr "Muuta poistolukkoa" #: share/gpodder/ui/gtk/gpodder.ui.h:26 msgid "E_xtras" msgstr "" #: share/gpodder/ui/gtk/gpodder.ui.h:27 #, fuzzy msgid "Sync to device" msgstr "Synkronoi laitteelle" #: share/gpodder/ui/gtk/gpodder.ui.h:28 #, fuzzy msgid "Update YouTube subscriptions" msgstr "Ei tilauksia" #: share/gpodder/ui/gtk/gpodder.ui.h:29 msgid "_View" msgstr "_NУЄytУЄ" #: share/gpodder/ui/gtk/gpodder.ui.h:30 #, fuzzy msgid "Toolbar" msgstr "NУЄytУЄ tyУЖkalurivi" #: share/gpodder/ui/gtk/gpodder.ui.h:31 msgid "Episode descriptions" msgstr "Jaksokuvaukset" #: share/gpodder/ui/gtk/gpodder.ui.h:33 msgid "Hide deleted episodes" msgstr "Piilota poistetut jaksot" #: share/gpodder/ui/gtk/gpodder.ui.h:34 msgid "Downloaded episodes" msgstr "Ladatut jaksot" #: share/gpodder/ui/gtk/gpodder.ui.h:35 msgid "Unplayed episodes" msgstr "Soittamattomat jaksot" #: share/gpodder/ui/gtk/gpodder.ui.h:36 msgid "Hide podcasts without episodes" msgstr "Piilota podcastit, joilla ei ole jaksoja" #: share/gpodder/ui/gtk/gpodder.ui.h:37 msgid "_Help" msgstr "O_hje" #: share/gpodder/ui/gtk/gpodder.ui.h:38 msgid "User manual" msgstr "KУЄyttУЖohje" #: share/gpodder/ui/gtk/gpodder.ui.h:39 msgid "Software updates" msgstr "" #: share/gpodder/ui/gtk/gpodder.ui.h:40 msgid "Filter:" msgstr "Suodin:" #: share/gpodder/ui/gtk/gpodder.ui.h:41 msgid "Podcasts" msgstr "Podcastit" #: share/gpodder/ui/gtk/gpodder.ui.h:42 msgid "Limit rate to" msgstr "Rajoita latausnopeus:" #: share/gpodder/ui/gtk/gpodder.ui.h:43 msgid "KiB/s" msgstr "KiB/s" #: share/gpodder/ui/gtk/gpodder.ui.h:44 msgid "Limit downloads to" msgstr "Rajoita latauksien mУЄУЄrУЄ:" #: share/gpodder/ui/gtk/gpodderwelcome.ui.h:2 #, fuzzy msgid "Welcome to gPodder" msgstr "Tervetuloa gPodderiin" #: share/gpodder/ui/gtk/gpodderwelcome.ui.h:3 #, fuzzy msgid "Your podcast list is empty." msgstr "Tilausluettelo on tyhjУЄ." #: share/gpodder/ui/gtk/gpodderwelcome.ui.h:4 msgid "Choose from a list of example podcasts" msgstr "Valitse esimerkkipodcastien luettelosta" #: share/gpodder/ui/gtk/gpodderwelcome.ui.h:5 #, fuzzy msgid "Add a podcast by entering its URL" msgstr "LisУЄУЄ podcast osoitteesta" #: share/gpodder/ui/gtk/gpodderwelcome.ui.h:6 #, fuzzy msgid "Restore my subscriptions from gpodder.net" msgstr "Lataa tilaukset gpodder.netistУЄ" #: bin/gpo:266 #, fuzzy msgid "Podcast update requested by extensions." msgstr "Podcast vaatii tunnistautumisen" #: bin/gpo:270 msgid "Episode download requested by extensions." msgstr "" #: bin/gpo:323 #, fuzzy, python-format msgid "Invalid url: %s" msgstr "Virheellinen URL" #: bin/gpo:340 bin/gpo:416 bin/gpo:450 bin/gpo:582 bin/gpo:597 bin/gpo:717 #, fuzzy, python-format msgid "You are not subscribed to %s." msgstr "NУЄmУЄ podcastit on jo tilattu:" #: bin/gpo:346 #, fuzzy, python-format msgid "Already subscribed to %s." msgstr "Ei voi synkronoida iPodiin" #: bin/gpo:352 #, fuzzy, python-format msgid "Cannot subscribe to %s." msgstr "Ei voi synkronoida iPodiin" #: bin/gpo:368 #, python-format msgid "Successfully added %s." msgstr "" #: bin/gpo:386 msgid "This configuration option does not exist." msgstr "" #: bin/gpo:390 msgid "Can only set leaf configuration nodes." msgstr "" #: bin/gpo:404 #, python-format msgid "Renamed %(old_title)s to %(new_title)s." msgstr "" #: bin/gpo:420 #, fuzzy, python-format msgid "Unsubscribed from %s." msgstr "Peru tilaus" #: bin/gpo:494 #, fuzzy msgid "Updates disabled" msgstr "PУЄivitУЄ valitut" #: bin/gpo:505 #, python-format msgid "%(count)d new episode" msgid_plural "%(count)d new episodes" msgstr[0] "%(count)d uusi jakso" msgstr[1] "%(count)d uutta jaksoa" #: bin/gpo:511 #, fuzzy msgid "Checking for new episodes" msgstr "EtsitУЄУЄn uusia jaksoja..." #: bin/gpo:520 #, fuzzy, python-format msgid "Skipping %(podcast)s" msgstr "Ohitetaan podcast: %s" #: bin/gpo:588 #, python-format msgid "Disabling feed update from %s." msgstr "" #: bin/gpo:603 #, fuzzy, python-format msgid "Enabling feed update from %s." msgstr "Luetaan tiedostoja hakemistosta %s" #: bin/gpo:616 #, python-format msgid "Please register a YouTube API key and set it using %(command)s." msgstr "" #: bin/gpo:643 #, python-format msgid "Changing: %(old_url)s => %(new_url)s" msgstr "" #: bin/gpo:653 #, fuzzy msgid "Nothing to fix" msgstr "Ei mitУЄУЄn vietУЄvУЄУЄ" #: bin/gpo:672 #, fuzzy msgid "No podcasts found." msgstr "Podcasteja ei lУЖytynyt" #: bin/gpo:686 msgid "Enter index to subscribe, ? for list" msgstr "" #: bin/gpo:700 bin/gpo:704 #, fuzzy msgid "Invalid value." msgstr "Virheellinen URL" #: bin/gpo:721 #, fuzzy, python-format msgid "Invalid URL: %s" msgstr "Virheellinen URL" #: bin/gpo:724 #, python-format msgid "Changed URL from %(old_url)s to %(new_url)s." msgstr "" #: bin/gpo:782 #, python-format msgid "Syntax error: %(error)s" msgstr "" #: bin/gpo:876 msgid "Ambiguous command. Did you mean.." msgstr "" #: bin/gpo:880 #, fuzzy msgid "The requested function is not available." msgstr "TУЄmУЄ ominaisuus ei ole kУЄytettУЄvissУЄ iPodeilla." #: bin/gpodder:105 #, fuzzy msgid "print logging output on the console" msgstr "Tulosta vianjУЄljitystietoja vakiotulosteeseen" #: bin/gpodder:108 #, fuzzy msgid "subscribe to the feed at URL" msgstr "Tilaa kanava osoitteesta" #: bin/gpodder:113 msgid "Mac OS X application process number" msgstr "" #: share/applications/gpodder.desktop.in.h:2 #, fuzzy msgid "gPodder Podcast Client" msgstr "gPodderin podcast-muokkain" #: share/applications/gpodder.desktop.in.h:3 #, fuzzy msgid "Podcast Client" msgstr "Podcast-luettelo" #: share/applications/gpodder.desktop.in.h:4 msgid "Subscribe to audio and video content from the web" msgstr "" #: share/applications/gpodder-url-handler.desktop.in.h:1 #, fuzzy msgid "gPodder (subscribe to feed)" msgstr "Tilaa kanava osoitteesta" gpodder-3.9.0/po/da.po0000644000016000001710000016126012654461625015644 0ustar jenkinsjenkins00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # # Translators: # <3xm@detfalskested.dk>, 2011. # Jon Hedemann , 2012. # Thomas Perl , 2009. msgid "" msgstr "" "Project-Id-Version: gPodder\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2016-02-03 20:31+0000\n" "PO-Revision-Date: 2013-01-19 12:30+0000\n" "Last-Translator: Thomas Perl \n" "Language-Team: Danish (http://www.transifex.com/projects/p/gpodder/language/" "da/)\n" "Language: da\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" #: src/gpodder/config.py:55 #, python-format msgid "gPodder on %s" msgstr "gPodder pУЅ %s" #: src/gpodder/directory.py:95 #, fuzzy msgid "gpodder.net search" msgstr "gpodder.net" #: src/gpodder/directory.py:104 #, fuzzy msgid "OPML from web" msgstr "OPML-filer" #: src/gpodder/directory.py:113 #, fuzzy msgid "OPML file" msgstr "OPML-filer" #: src/gpodder/directory.py:122 share/gpodder/ui/gtk/gpodderwelcome.ui.h:1 #, fuzzy msgid "Getting started" msgstr "Indstillinger" #: src/gpodder/directory.py:131 #, fuzzy msgid "gpodder.net Top 50" msgstr "gpodder.net" #: src/gpodder/directory.py:140 #, fuzzy msgid "gpodder.net Tags" msgstr "gpodder.net" #: src/gpodder/directory.py:152 #, fuzzy msgid "Soundcloud search" msgstr "%s pУЅ Soundcloud" #: src/gpodder/directory.py:165 #, fuzzy msgid "Imported OPML file" msgstr "ImportУЉr fra OPML-fil" #: src/gpodder/download.py:329 msgid "Wrong username/password" msgstr "Forkert brugernavn/adgangskode" #: src/gpodder/download.py:527 src/gpodder/sync.py:924 msgid "Added" msgstr "TilfУИjet" #: src/gpodder/download.py:527 src/gpodder/sync.py:924 msgid "Queued" msgstr "Sat i kУИ" #: src/gpodder/download.py:527 src/gpodder/gtkui/model.py:327 msgid "Downloading" msgstr "Downloader" #: src/gpodder/download.py:528 src/gpodder/model.py:721 #: src/gpodder/sync.py:925 msgid "Finished" msgstr "Afsluttet" #: src/gpodder/download.py:528 src/gpodder/sync.py:925 msgid "Failed" msgstr "Fejlet" #: src/gpodder/download.py:528 src/gpodder/sync.py:925 msgid "Cancelled" msgstr "Annulleret" #: src/gpodder/download.py:528 src/gpodder/sync.py:925 msgid "Paused" msgstr "Sat pУЅ pause" #: src/gpodder/download.py:862 msgid "Missing content from server" msgstr "Manglende data fra server" #: src/gpodder/download.py:868 #, python-format msgid "I/O Error: %(error)s: %(filename)s" msgstr "I/O-fejl: %(error)s: %(filename)s" #: src/gpodder/download.py:875 #, python-format msgid "HTTP Error %(code)s: %(message)s" msgstr "HTTP-fejl: %(code)s: %(message)s" #: src/gpodder/download.py:879 src/gpodder/sync.py:1081 #, python-format msgid "Error: %s" msgstr "Fejl: %s" #: src/gpodder/extensions.py:55 msgid "Desktop Integration" msgstr "" #: src/gpodder/extensions.py:56 #, fuzzy msgid "Interface" msgstr "Heltal" #: src/gpodder/extensions.py:57 #, fuzzy msgid "Post download" msgstr "SУІt download pУЅ pause" #: src/gpodder/extensions.py:59 src/gpodder/model.py:779 #: src/gpodder/model.py:1225 msgid "Other" msgstr "Andet" #: src/gpodder/extensions.py:100 #, fuzzy msgid "No description for this extension." msgstr "Ingen beskrivelse tilgУІngelig." #: src/gpodder/extensions.py:212 #, fuzzy, python-format msgid "Command not found: %(command)s" msgstr "Brugerkommando ikke fundet" #: src/gpodder/extensions.py:228 #, python-format msgid "Need at least one of the following commands: %(list_of_commands)s" msgstr "" #: src/gpodder/extensions.py:265 #, fuzzy, python-format msgid "Python module not found: %(module)s" msgstr "Python-modulet \"%s\" er ikke installeret" #: src/gpodder/model.py:446 src/gpodder/plugins/soundcloud.py:156 msgid "No description available" msgstr "Ingen tilgУІngelig beskrivelse" #: src/gpodder/model.py:679 msgid "unknown" msgstr "ukendt" #: src/gpodder/model.py:746 msgid "Default" msgstr "" #: src/gpodder/model.py:747 msgid "Only keep latest" msgstr "" #: src/gpodder/model.py:1208 src/gpodder/model.py:1223 #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:10 msgid "Video" msgstr "Video" #: src/gpodder/model.py:1221 msgid "Audio" msgstr "Lyd" #: src/gpodder/my.py:174 #, python-format msgid "Add %s" msgstr "TilfУИj %s" #: src/gpodder/my.py:176 #, python-format msgid "Remove %s" msgstr "Fjern %s" #: src/gpodder/sync.py:196 msgid "Cancelled by user" msgstr "Afbrudt af bruger" #: src/gpodder/sync.py:199 msgid "Writing data to disk" msgstr "Skriver data til disk" #: src/gpodder/sync.py:295 msgid "Opening iPod database" msgstr "У…bner iPod-database" #: src/gpodder/sync.py:305 msgid "iPod opened" msgstr "iPod УЅbnet" #: src/gpodder/sync.py:316 msgid "Saving iPod database" msgstr "Gemmer iPod-database" #: src/gpodder/sync.py:321 msgid "Writing extended gtkpod database" msgstr "Gemmer udvidet gtkpod-database" #: src/gpodder/sync.py:397 src/gpodder/sync.py:680 src/gpodder/sync.py:874 #, python-format msgid "Removing %s" msgstr "Fjerner %s" #: src/gpodder/sync.py:412 src/gpodder/sync.py:557 #, python-format msgid "Adding %s" msgstr "TilfУИjer %s" #: src/gpodder/sync.py:430 #, python-format msgid "Error copying %(episode)s: Not enough free space on %(mountpoint)s" msgstr "Fejl under kopiering af %(episode)s: Ikke plads nok pУЅ %(mountpoint)s" #: src/gpodder/sync.py:515 msgid "Opening MP3 player" msgstr "У…bner MP3-afspiller" #: src/gpodder/sync.py:518 msgid "MP3 player opened" msgstr "MP3-afspiller УЅbnet" #: src/gpodder/sync.py:576 #, python-format msgid "" "Not enough space in %(path)s: %(free)s available, but need at least %(need)s" msgstr "" #: src/gpodder/sync.py:603 src/gpodder/sync.py:611 #, python-format msgid "Error opening %(filename)s: %(message)s" msgstr "Fejl ved УЅbning af %(filename)s: %(message)s" #: src/gpodder/sync.py:780 src/gpodder/sync.py:786 msgid "MTP device" msgstr "MTP-enhed" #: src/gpodder/sync.py:793 msgid "Opening the MTP device" msgstr "У…bner MTP-enheden" #: src/gpodder/sync.py:803 #, python-format msgid "%s opened" msgstr "%s УЅbnet" #: src/gpodder/sync.py:808 #, python-format msgid "Closing %s" msgstr "Lukker %s" #: src/gpodder/sync.py:816 #, python-format msgid "%s closed" msgstr "%s lukket" #: src/gpodder/sync.py:821 bin/gpo:708 #, python-format msgid "Adding %s..." msgstr "TilfУИjer %s..." #: src/gpodder/sync.py:924 #, fuzzy msgid "Synchronizing" msgstr "Synkronisering" #: src/gpodder/util.py:429 #, python-format msgid "%(count)d day ago" msgid_plural "%(count)d days ago" msgstr[0] "for %(count)d dag siden" msgstr[1] "for %(count)d dage siden" #: src/gpodder/util.py:508 msgid "Today" msgstr "I dag" #: src/gpodder/util.py:510 msgid "Yesterday" msgstr "I gУЅr" #: src/gpodder/util.py:553 src/gpodder/util.py:556 msgid "(unknown)" msgstr "(ukendt)" #: src/gpodder/util.py:1193 src/gpodder/util.py:1212 #, python-format msgid "%(count)d second" msgid_plural "%(count)d seconds" msgstr[0] "%(count)d sekund" msgstr[1] "%(count)d sekunder" #: src/gpodder/util.py:1206 #, python-format msgid "%(count)d hour" msgid_plural "%(count)d hours" msgstr[0] "%(count)d time" msgstr[1] "%(count)d timer" #: src/gpodder/util.py:1209 #, python-format msgid "%(count)d minute" msgid_plural "%(count)d minutes" msgstr[0] "%(count)d minut" msgstr[1] "%(count)d minutter" #: src/gpodder/util.py:1215 msgid "and" msgstr "og" #: src/gpodder/gtkui/config.py:50 msgid "Integer" msgstr "Heltal" #: src/gpodder/gtkui/config.py:52 msgid "Float" msgstr "Kommatal" #: src/gpodder/gtkui/config.py:54 msgid "Boolean" msgstr "Boolsk vУІrdi" #: src/gpodder/gtkui/config.py:56 msgid "String" msgstr "Tekststreng" #: src/gpodder/gtkui/desktopfile.py:70 #, python-format msgid "Command: %s" msgstr "Kommando: %s" #: src/gpodder/gtkui/desktopfile.py:150 msgid "Default application" msgstr "Standardprogram" #: src/gpodder/gtkui/main.py:205 share/applications/gpodder.desktop.in.h:1 msgid "gPodder" msgstr "gPodder" #: src/gpodder/gtkui/main.py:288 msgid "Loading incomplete downloads" msgstr "IndlУІser uafsluttede downloads" #: src/gpodder/gtkui/main.py:289 msgid "Some episodes have not finished downloading in a previous session." msgstr "" "Download af nogle episoder er ikke blevet afsluttet i en tidligere " "programsession." #: src/gpodder/gtkui/main.py:291 #, python-format msgid "%(count)d partial file" msgid_plural "%(count)d partial files" msgstr[0] "%(count)d delvis fil" msgstr[1] "%(count)d delvise filer" #: src/gpodder/gtkui/main.py:306 msgid "Resume all" msgstr "Genoptag alle" #: src/gpodder/gtkui/main.py:316 msgid "Incomplete downloads from a previous session were found." msgstr "Der blev fundet uafsluttede downloads fra en tidligere programsession." #: src/gpodder/gtkui/main.py:414 msgid "Action" msgstr "Handling" #: src/gpodder/gtkui/main.py:461 msgid "Confirm changes from gpodder.net" msgstr "BekrУІft УІndringer fra gpodder.net" #: src/gpodder/gtkui/main.py:462 msgid "Select the actions you want to carry out." msgstr "VУІlg de handlinger, du УИnsker at udfУИre." #: src/gpodder/gtkui/main.py:502 msgid "Uploading subscriptions" msgstr "OverfУИrer abonnementer" #: src/gpodder/gtkui/main.py:503 msgid "Your subscriptions are being uploaded to the server." msgstr "Din abonnementsliste overfУИres til serveren." #: src/gpodder/gtkui/main.py:508 msgid "List uploaded successfully." msgstr "Abonnementsliste overfУИrt." #: src/gpodder/gtkui/main.py:515 msgid "Error while uploading" msgstr "OverfУИrselsfejl" #: src/gpodder/gtkui/main.py:800 src/gpodder/gtkui/main.py:928 #: src/gpodder/gtkui/main.py:2622 src/gpodder/gtkui/main.py:2815 #: src/gpodder/gtkui/desktop/episodeselector.py:132 #: src/gpodder/gtkui/desktop/sync.py:270 msgid "Episode" msgstr "Episode" #: src/gpodder/gtkui/main.py:819 msgid "Size" msgstr "StУИrrelse" #: src/gpodder/gtkui/main.py:824 msgid "Duration" msgstr "Varighed" #: src/gpodder/gtkui/main.py:828 msgid "Released" msgstr "Udgivet" #: src/gpodder/gtkui/main.py:855 msgid "Visible columns" msgstr "Synlige kolonner" #: src/gpodder/gtkui/main.py:948 src/gpodder/gtkui/main.py:1108 #: share/gpodder/ui/gtk/gpodder.ui.h:45 msgid "Progress" msgstr "Status" #: src/gpodder/gtkui/main.py:982 msgid "Loading episodes" msgstr "IndlУІser episoder" #: src/gpodder/gtkui/main.py:985 msgid "No episodes in current view" msgstr "Ingen episoder i aktuel visning" #: src/gpodder/gtkui/main.py:987 msgid "No episodes available" msgstr "Ingen tilgУІngelige episoder" #: src/gpodder/gtkui/main.py:993 msgid "No podcasts in this view" msgstr "Ingen podcasts i denne visning" #: src/gpodder/gtkui/main.py:995 msgid "No subscriptions" msgstr "Ingen abonnementer" #: src/gpodder/gtkui/main.py:997 #, fuzzy msgid "No active tasks" msgstr "Ingen aktive downloads" #: src/gpodder/gtkui/main.py:1112 src/gpodder/gtkui/main.py:1114 #, python-format msgid "%(count)d active" msgid_plural "%(count)d active" msgstr[0] "%(count)d aktiv" msgstr[1] "%(count)d aktive" #: src/gpodder/gtkui/main.py:1116 #, python-format msgid "%(count)d failed" msgid_plural "%(count)d failed" msgstr[0] "%(count)d fejlet" msgstr[1] "%(count)d fejlede" #: src/gpodder/gtkui/main.py:1118 #, python-format msgid "%(count)d queued" msgid_plural "%(count)d queued" msgstr[0] "%(count)d sat i kУИ" msgstr[1] "%(count)d sat i kУИ" #: src/gpodder/gtkui/main.py:1132 #, python-format msgid "downloading %(count)d file" msgid_plural "downloading %(count)d files" msgstr[0] "downloader %(count)d fil" msgstr[1] "downloader %(count)d filer" #: src/gpodder/gtkui/main.py:1142 #, python-format msgid "synchronizing %(count)d file" msgid_plural "synchronizing %(count)d files" msgstr[0] "" msgstr[1] "" #: src/gpodder/gtkui/main.py:1144 #, python-format msgid "%(queued)d task queued" msgid_plural "%(queued)d tasks queued" msgstr[0] "" msgstr[1] "" #: src/gpodder/gtkui/main.py:1168 msgid "Please report this problem and restart gPodder:" msgstr "RapportУЉr dette problem og genstart gPodder:" #: src/gpodder/gtkui/main.py:1168 msgid "Unhandled exception" msgstr "UhУЅndteret undtagelse" #: src/gpodder/gtkui/main.py:1235 #, python-format msgid "Feedparser error: %s" msgstr "Fejl i feedparser: %s" #: src/gpodder/gtkui/main.py:1371 #, fuzzy msgid "Could not download some episodes:" msgstr "Kunne ikke tilfУИje УЉn eller flere podcasts" #: src/gpodder/gtkui/main.py:1373 src/gpodder/gtkui/main.py:1376 msgid "Downloads finished" msgstr "Downloads fuldfУИrt" #: src/gpodder/gtkui/main.py:1379 msgid "Downloads failed" msgstr "Downloadfejl" #: src/gpodder/gtkui/main.py:1383 #, fuzzy msgid "Could not sync some episodes:" msgstr "Kunne ikke tilfУИje УЉn eller flere podcasts" #: src/gpodder/gtkui/main.py:1385 src/gpodder/gtkui/main.py:1388 #, fuzzy msgid "Device synchronization finished" msgstr "Synkronisering afsluttet." #: src/gpodder/gtkui/main.py:1391 #, fuzzy msgid "Device synchronization failed" msgstr "Enhed synkroniseret" #: src/gpodder/gtkui/main.py:1434 #, python-format msgid "%(count)d more episode" msgid_plural "%(count)d more episodes" msgstr[0] "%(count)d episode mere" msgstr[1] "%(count)d episoder mere" #: src/gpodder/gtkui/main.py:1508 msgid "Start download now" msgstr "Start download nu" #: src/gpodder/gtkui/main.py:1510 src/gpodder/gtkui/main.py:1719 #: src/gpodder/gtkui/desktop/episodeselector.py:144 #: share/gpodder/ui/gtk/gpodder.ui.h:20 msgid "Download" msgstr "Download" #: src/gpodder/gtkui/main.py:1511 share/gpodder/ui/gtk/gpodder.ui.h:21 msgid "Cancel" msgstr "AnnullУЉr" #: src/gpodder/gtkui/main.py:1512 msgid "Pause" msgstr "SУІt pУЅ pause" #: src/gpodder/gtkui/main.py:1514 msgid "Remove from list" msgstr "Fjern fra abonnementsliste" #: src/gpodder/gtkui/main.py:1553 share/gpodder/ui/gtk/gpodder.ui.h:13 msgid "Update podcast" msgstr "OpdatУЉr podcast" #: src/gpodder/gtkui/main.py:1560 msgid "Open download folder" msgstr "У…bn downloadmappe" #: src/gpodder/gtkui/main.py:1566 msgid "Mark episodes as old" msgstr "Mark episoder som gamle" #: src/gpodder/gtkui/main.py:1570 src/gpodder/gtkui/main.py:1778 msgid "Archive" msgstr "Arkiv" #: src/gpodder/gtkui/main.py:1575 msgid "Remove podcast" msgstr "Fjern podcast" #: src/gpodder/gtkui/main.py:1590 share/gpodder/ui/gtk/gpodder.ui.h:10 msgid "Podcast settings" msgstr "Podcast-indstillinger" #: src/gpodder/gtkui/main.py:1650 msgid "Error converting file." msgstr "Filkonverteringsfejl." #: src/gpodder/gtkui/main.py:1650 msgid "Bluetooth file transfer" msgstr "FiloverfУИrsel via Bluetooth" #: src/gpodder/gtkui/main.py:1709 msgid "Preview" msgstr "Eksempel" #: src/gpodder/gtkui/main.py:1711 msgid "Stream" msgstr "Stream" #: src/gpodder/gtkui/main.py:1755 msgid "Send to" msgstr "Send til" #: src/gpodder/gtkui/main.py:1757 msgid "Local folder" msgstr "Lokal mappe" #: src/gpodder/gtkui/main.py:1762 msgid "Bluetooth device" msgstr "Bluetooth-enhed" #: src/gpodder/gtkui/main.py:1769 msgid "New" msgstr "Ny" #: src/gpodder/gtkui/main.py:1785 share/gpodder/ui/gtk/gpodder.ui.h:25 msgid "Episode details" msgstr "Episodebeskrivelse" #: src/gpodder/gtkui/main.py:1938 msgid "Please check your media player settings in the preferences dialog." msgstr "KontrollУЉr det valgte afspilningsprogram under enhedsindstillingerne." #: src/gpodder/gtkui/main.py:1939 msgid "Error opening player" msgstr "Fejl ved УЅbning af afspiller" #: src/gpodder/gtkui/main.py:2178 msgid "Adding podcasts" msgstr "TilfУИjer podcasts" #: src/gpodder/gtkui/main.py:2179 msgid "Please wait while episode information is downloaded." msgstr "Vent venligst, mens episodebeskrivelserne downloades." #: src/gpodder/gtkui/main.py:2186 msgid "Existing subscriptions skipped" msgstr "Eksisterende abonnementsliste sprunget over" #: src/gpodder/gtkui/main.py:2187 msgid "You are already subscribed to these podcasts:" msgstr "Du abonnerer allerede pУЅ disse podcasts" #: src/gpodder/gtkui/main.py:2195 msgid "Podcast requires authentication" msgstr "Podcast krУІver godkendelse" #: src/gpodder/gtkui/main.py:2196 #, python-format msgid "Please login to %s:" msgstr "Log venligst ind pУЅ %s:" #: src/gpodder/gtkui/main.py:2204 src/gpodder/gtkui/main.py:2299 msgid "Authentication failed" msgstr "Godkendelse mislykket" #: src/gpodder/gtkui/main.py:2210 msgid "Website redirection detected" msgstr "Omdirigering fra hjemmeside detekteret" #: src/gpodder/gtkui/main.py:2211 #, python-format msgid "The URL %(url)s redirects to %(target)s." msgstr "URL'en %(url)s omdirigeres til %(target)s." #: src/gpodder/gtkui/main.py:2212 msgid "Do you want to visit the website now?" msgstr "Әnsker du at besУИge hjemmesiden nu?" #: src/gpodder/gtkui/main.py:2221 msgid "Could not add some podcasts" msgstr "Kunne ikke tilfУИje УЉn eller flere podcasts" #: src/gpodder/gtkui/main.py:2222 msgid "Some podcasts could not be added to your list:" msgstr "У‰n eller flere podcasts kunne ikke fУИjes til din abonnementsliste:" #: src/gpodder/gtkui/main.py:2224 msgid "Unknown" msgstr "Ukendt" #: src/gpodder/gtkui/main.py:2308 msgid "Redirection detected" msgstr "Omdirigering detekteret" #: src/gpodder/gtkui/main.py:2342 msgid "Merging episode actions" msgstr "Synkroniserer episodehandlinger" #: src/gpodder/gtkui/main.py:2343 msgid "Episode actions from gpodder.net are merged." msgstr "Episodehandlinger fra gpodder.net er nu synkroniseret med enhed." #: src/gpodder/gtkui/main.py:2368 msgid "Cancelling..." msgstr "Annullerer..." #: src/gpodder/gtkui/main.py:2377 msgid "Please connect to a network, then try again." msgstr "" #: src/gpodder/gtkui/main.py:2378 #, fuzzy msgid "No network connection" msgstr "Nyt navn:" #: src/gpodder/gtkui/main.py:2399 #, python-format msgid "Updating %(count)d feed..." msgid_plural "Updating %(count)d feeds..." msgstr[0] "Opdaterer %(count)d feed..." msgstr[1] "Opdaterer %(count)d feeds..." #: src/gpodder/gtkui/main.py:2417 #, python-format msgid "Error while updating %(url)s: %(message)s" msgstr "Fejl ved opdatering af %(url)s: %(message)s" #: src/gpodder/gtkui/main.py:2419 #, python-format msgid "The feed at %(url)s could not be updated." msgstr "Feedet %(url)s kunne ikke opdateres." #: src/gpodder/gtkui/main.py:2420 msgid "Error while updating feed" msgstr "Fejl ved opdatering af feed" #: src/gpodder/gtkui/main.py:2435 #, python-format msgid "Updated %(podcast)s (%(position)d/%(total)d)" msgstr "Har opdateret %(podcast)s (%(position)d/%(total)d)" #: src/gpodder/gtkui/main.py:2466 msgid "No new episodes" msgstr "Ingen nye episoder" #: src/gpodder/gtkui/main.py:2479 #, python-format msgid "Downloading %(count)d new episode." msgid_plural "Downloading %(count)d new episodes." msgstr[0] "Downloader %(count)d ny episode." msgstr[1] "Downloader %(count)d nye episoder." #: src/gpodder/gtkui/main.py:2480 src/gpodder/gtkui/main.py:2484 #: src/gpodder/gtkui/main.py:2833 msgid "New episodes available" msgstr "Nye episoder tilgУІngelige" #: src/gpodder/gtkui/main.py:2483 #, python-format msgid "%(count)d new episode added to download list." msgid_plural "%(count)d new episodes added to download list." msgstr[0] "%(count)d ny episode fУИjet til downloadslisten." msgstr[1] "%(count)d nye episoder fУИjet til downloadlisten." #: src/gpodder/gtkui/main.py:2490 #, python-format msgid "%(count)d new episode available" msgid_plural "%(count)d new episodes available" msgstr[0] "%(count)d ny episode tilgУІngelig" msgstr[1] "%(count)d ny episoder tilgУІngelige" #: src/gpodder/gtkui/main.py:2509 msgid "Quit gPodder" msgstr "Afslut gPodder" #: src/gpodder/gtkui/main.py:2510 msgid "" "You are downloading episodes. You can resume downloads the next time you " "start gPodder. Do you want to quit now?" msgstr "" "Du downloader episoder. Du kan genoptage download af disse episoder nУІste " "gang du starter gPodder. Әnsker du at afslutte nu?" #: src/gpodder/gtkui/main.py:2559 msgid "Episodes are locked" msgstr "Episoderne er lУЅst" #: src/gpodder/gtkui/main.py:2560 msgid "" "The selected episodes are locked. Please unlock the episodes that you want " "to delete before trying to delete them." msgstr "" "De valgte episoder er lУЅst. LУЅs de episoder op, som du УИnsker at slette, " "inden du forsУИger at slette dem." #: src/gpodder/gtkui/main.py:2565 #, python-format msgid "Delete %(count)d episode?" msgid_plural "Delete %(count)d episodes?" msgstr[0] "Slet %(count)d episode?" msgstr[1] "Slet %(count)d episoder?" #: src/gpodder/gtkui/main.py:2566 msgid "Deleting episodes removes downloaded files." msgstr "Sletning af episoder fjerner downloadede filer." #: src/gpodder/gtkui/main.py:2571 msgid "Deleting episodes" msgstr "Sletter episoder" #: src/gpodder/gtkui/main.py:2572 msgid "Please wait while episodes are deleted" msgstr "Vent venligst, mens episoderne slettes" #: src/gpodder/gtkui/main.py:2625 #, python-format msgid "Select older than %(count)d day" msgid_plural "Select older than %(count)d days" msgstr[0] "VУІlg УІldre end %(count)d dag" msgstr[1] "VУІlg УІldre end %(count)d dage" #: src/gpodder/gtkui/main.py:2627 msgid "Select played" msgstr "VУІlg afspillede" #: src/gpodder/gtkui/main.py:2628 msgid "Select finished" msgstr "Valgt afsluttet" #: src/gpodder/gtkui/main.py:2632 msgid "Select the episodes you want to delete:" msgstr "VУІlg de episoder, du УИnsker at slette:" #: src/gpodder/gtkui/main.py:2648 share/gpodder/ui/gtk/gpodder.ui.h:4 msgid "Delete episodes" msgstr "Slet episoder" #: src/gpodder/gtkui/main.py:2703 src/gpodder/gtkui/main.py:2934 #: src/gpodder/gtkui/main.py:3034 msgid "No podcast selected" msgstr "Ingen podcast valgt" #: src/gpodder/gtkui/main.py:2704 msgid "Please select a podcast in the podcasts list to update." msgstr "VУІlg en podcast fra listen for at opdatere den." #: src/gpodder/gtkui/main.py:2774 #, python-format msgid "Download error while downloading %(episode)s: %(message)s" msgstr "Fejl under download af %(episode)s: %(message)s" #: src/gpodder/gtkui/main.py:2775 msgid "Download error" msgstr "Downloadfejl" #: src/gpodder/gtkui/main.py:2818 msgid "Select the episodes you want to download:" msgstr "VУІlg de episoder, du УИnsker at downloade:" #: src/gpodder/gtkui/main.py:2841 msgid "Mark as old" msgstr "MarkУЉr som gammel" #: src/gpodder/gtkui/main.py:2848 msgid "Please check for new episodes later." msgstr "SУИg efter nye episoder senere." #: src/gpodder/gtkui/main.py:2849 msgid "No new episodes available" msgstr "Ingen nye episoder til rУЅdighed" #: src/gpodder/gtkui/main.py:2900 msgid "Login to gpodder.net" msgstr "Log ind pУЅ gpodder.net" #: src/gpodder/gtkui/main.py:2901 msgid "Please login to download your subscriptions." msgstr "Log ind for at downloade dine abonnementer." #: src/gpodder/gtkui/main.py:2916 msgid "Subscriptions on gpodder.net" msgstr "Abonnementer pУЅ gpodder.net" #: src/gpodder/gtkui/main.py:2935 msgid "Please select a podcast in the podcasts list to edit." msgstr "VУІlg en podcast fra listen for at redigere den." #: src/gpodder/gtkui/main.py:2949 msgid "Podcast" msgstr "Podcast" #: src/gpodder/gtkui/main.py:2955 share/gpodder/ui/gtk/gpodder.ui.h:12 msgid "Remove podcasts" msgstr "Fjern podcasts" #: src/gpodder/gtkui/main.py:2956 msgid "Select the podcast you want to remove." msgstr "VУІlg de episoder, du УИnsker at fjerne." #: src/gpodder/gtkui/main.py:2960 #: src/gpodder/gtkui/desktop/episodeselector.py:105 msgid "Remove" msgstr "Fjern" #: src/gpodder/gtkui/main.py:2969 msgid "Removing podcast" msgstr "Fjerner podcasts" #: src/gpodder/gtkui/main.py:2970 msgid "Please wait while the podcast is removed" msgstr "Vent venligst, mens denne podcast fjernes" #: src/gpodder/gtkui/main.py:2971 msgid "Do you really want to remove this podcast and its episodes?" msgstr "Әnsker du at fjerne denne podcast og alle de downloadede episoder?" #: src/gpodder/gtkui/main.py:2973 msgid "Removing podcasts" msgstr "Fjerner podcasts" #: src/gpodder/gtkui/main.py:2974 msgid "Please wait while the podcasts are removed" msgstr "Vent venligst, mens disse podcasts fjernes" #: src/gpodder/gtkui/main.py:2975 msgid "Do you really want to remove the selected podcasts and their episodes?" msgstr "" "Әnsker du at fjerne de valgte podcasts og alle de downloadede episoder?" #: src/gpodder/gtkui/main.py:3035 msgid "Please select a podcast in the podcasts list to remove." msgstr "VУІlg en podcast fra listen for at fjerne den." #: src/gpodder/gtkui/main.py:3045 msgid "OPML files" msgstr "OPML-filer" #: src/gpodder/gtkui/main.py:3050 msgid "Import from OPML" msgstr "ImportУЉr fra OPML" #: src/gpodder/gtkui/main.py:3064 msgid "Import podcasts from OPML file" msgstr "ImportУЉr podcasts fra OPML-fil" #: src/gpodder/gtkui/main.py:3071 msgid "Nothing to export" msgstr "Intet at eksportere" #: src/gpodder/gtkui/main.py:3072 msgid "" "Your list of podcast subscriptions is empty. Please subscribe to some " "podcasts first before trying to export your subscription list." msgstr "" "Din podcastabonnementsliste er tom. AbonnУЉr pУЅ podcasts, inden du forsУИger " "at eksportere abonnementslisten." #: src/gpodder/gtkui/main.py:3076 msgid "Export to OPML" msgstr "EksportУЉr til OPML" #: src/gpodder/gtkui/main.py:3087 #, python-format msgid "%(count)d subscription exported" msgid_plural "%(count)d subscriptions exported" msgstr[0] "%(count)d abonnement eksporteret" msgstr[1] "%(count)d abonnementer eksporteret" #: src/gpodder/gtkui/main.py:3088 msgid "Your podcast list has been successfully exported." msgstr "Eksport af podcastliste udfУИrt." #: src/gpodder/gtkui/main.py:3090 msgid "Could not export OPML to file. Please check your permissions." msgstr "Kunne ikke eksportere OPML til fil. KontrollУЉr dine filrettigheder." #: src/gpodder/gtkui/main.py:3090 msgid "OPML export failed" msgstr "Fejl ved OPML-eksport" #: src/gpodder/gtkui/main.py:3117 #, fuzzy msgid "No updates available" msgstr "Ingen tilgУІngelige episoder" #: src/gpodder/gtkui/main.py:3118 msgid "You have the latest version of gPodder." msgstr "" #: src/gpodder/gtkui/main.py:3122 #, fuzzy msgid "New version available" msgstr "Nye episoder tilgУІngelige" #: src/gpodder/gtkui/main.py:3124 #, python-format msgid "Installed version: %s" msgstr "" #: src/gpodder/gtkui/main.py:3125 #, fuzzy, python-format msgid "Newest version: %s" msgstr "Sletter: %s" #: src/gpodder/gtkui/main.py:3126 #, fuzzy, python-format msgid "Release date: %s" msgstr "udgivet: %s" #: src/gpodder/gtkui/main.py:3128 #, fuzzy msgid "Download the latest version from gpodder.org?" msgstr "Download mine abonnementer fra gpodder.net" #: src/gpodder/gtkui/main.py:3141 msgid "About gPodder" msgstr "Om gPodder" #: src/gpodder/gtkui/main.py:3424 #, fuzzy msgid "Please register a YouTube API key and set it in the preferences." msgstr "VУІlg din enhed i vinduet Indstillinger." #: src/gpodder/gtkui/main.py:3425 msgid "Would you like to set up an API key now?" msgstr "" #: src/gpodder/gtkui/main.py:3425 msgid "API key required" msgstr "" #: src/gpodder/gtkui/main.py:3444 bin/gpo:631 #, fuzzy msgid "No unique URL found" msgstr "Ingen kanaler fundet" #: src/gpodder/gtkui/main.py:3449 bin/gpo:637 #, fuzzy msgid "Already subscribed" msgstr "Kan ikke synkronisere med iPod" #: src/gpodder/gtkui/main.py:3458 bin/gpo:649 #, python-format msgid "Make sure the API key is correct. Error: %(message)s" msgstr "" #: src/gpodder/gtkui/main.py:3459 #, fuzzy msgid "Error getting YouTube channels" msgstr "Fejl ved lagring af indstilling" #: src/gpodder/gtkui/main.py:3462 msgid "Successfully migrated subscriptions" msgstr "" #: src/gpodder/gtkui/main.py:3464 #, fuzzy msgid "Subscriptions are up to date" msgstr "Abonnement sat pУЅ pause" #: src/gpodder/gtkui/main.py:3467 msgid "These URLs failed:" msgstr "" #: src/gpodder/gtkui/main.py:3469 #, fuzzy msgid "Could not migrate some subscriptions" msgstr "Kunne ikke tilfУИje УЉn eller flere podcasts" #: src/gpodder/gtkui/main.py:3493 msgid "Cannot start gPodder" msgstr "Kan ikke starte gPodder" #: src/gpodder/gtkui/main.py:3494 #, python-format msgid "D-Bus error: %s" msgstr "D-Bus-fejl: %s" #: src/gpodder/gtkui/model.py:68 #, python-format msgid "released %s" msgstr "udgivet %s" #: src/gpodder/gtkui/model.py:69 src/gpodder/gtkui/model.py:87 #: src/gpodder/gtkui/model.py:237 src/gpodder/gtkui/shownotes.py:84 #, python-format msgid "from %s" msgstr "fra %s" #: src/gpodder/gtkui/model.py:80 src/gpodder/gtkui/model.py:393 msgid "played" msgstr "afspillet" #: src/gpodder/gtkui/model.py:82 msgid "unplayed" msgstr "uafspillet" #: src/gpodder/gtkui/model.py:85 msgid "today" msgstr "i dag" #: src/gpodder/gtkui/model.py:86 #, python-format msgid "downloaded %s" msgstr "downloaded %s" #: src/gpodder/gtkui/model.py:337 msgid "Deleted" msgstr "Slettet" #: src/gpodder/gtkui/model.py:342 msgid "New episode" msgstr "Ny episode" #: src/gpodder/gtkui/model.py:356 msgid "Downloaded episode" msgstr "Download episode" #: src/gpodder/gtkui/model.py:359 msgid "Downloaded video episode" msgstr "Download video-episode" #: src/gpodder/gtkui/model.py:362 msgid "Downloaded image" msgstr "Downloaded billede" #: src/gpodder/gtkui/model.py:365 msgid "Downloaded file" msgstr "Downloaded fil" #: src/gpodder/gtkui/model.py:380 msgid "missing file" msgstr "manglende fil" #: src/gpodder/gtkui/model.py:384 msgid "never displayed" msgstr "aldrig vist" #: src/gpodder/gtkui/model.py:386 msgid "never played" msgstr "aldrig afspillet" #: src/gpodder/gtkui/model.py:388 msgid "never opened" msgstr "aldrig УЅbnet" #: src/gpodder/gtkui/model.py:391 msgid "displayed" msgstr "vist" #: src/gpodder/gtkui/model.py:395 msgid "opened" msgstr "УЅbnet" #: src/gpodder/gtkui/model.py:397 msgid "deletion prevented" msgstr "sletning forhindret" #: src/gpodder/gtkui/model.py:432 share/gpodder/ui/gtk/gpodder.ui.h:32 msgid "All episodes" msgstr "Alle episoder" #: src/gpodder/gtkui/model.py:433 msgid "from all podcasts" msgstr "fra alle podcasts" #: src/gpodder/gtkui/model.py:625 msgid "Subscription paused" msgstr "Abonnement sat pУЅ pause" #: src/gpodder/gtkui/shownotes.py:118 #, fuzzy msgid "Please select an episode" msgstr "VУІlg episoder" #: src/gpodder/gtkui/interface/addpodcast.py:74 msgid "Nothing to paste." msgstr "Intet at indsУІtte." #: src/gpodder/gtkui/interface/addpodcast.py:74 msgid "Clipboard is empty" msgstr "Udklipsholder er tom" #: src/gpodder/gtkui/interface/common.py:160 msgid "Username" msgstr "Brugernavn" #: src/gpodder/gtkui/interface/common.py:163 msgid "New user" msgstr "Ny bruger" #: src/gpodder/gtkui/interface/common.py:170 msgid "Login" msgstr "Log ind" #: src/gpodder/gtkui/interface/common.py:172 msgid "Authentication required" msgstr "KrУІver godkendelse" #: src/gpodder/gtkui/interface/common.py:203 msgid "Password" msgstr "Adgangskode" #: src/gpodder/gtkui/interface/common.py:225 msgid "Select destination" msgstr "VУІlg destination" #: src/gpodder/gtkui/interface/configeditor.py:34 msgid "Setting" msgstr "Indstilling" #: src/gpodder/gtkui/interface/configeditor.py:41 msgid "Set to" msgstr "Indstil til" #: src/gpodder/gtkui/interface/configeditor.py:81 #, python-format msgid "Cannot set %(field)s to %(value)s. Needed data type: %(datatype)s" msgstr "" "Kan ikke indstille %(field)s til %(value)s. NУИdvendig datatype: %(datatype)s" #: src/gpodder/gtkui/interface/configeditor.py:85 msgid "Error setting option" msgstr "Fejl ved lagring af indstilling" #: src/gpodder/gtkui/desktop/channel.py:100 #, fuzzy msgid "Add section" msgstr "Handling" #: src/gpodder/gtkui/desktop/channel.py:100 #, fuzzy msgid "New section:" msgstr "Nyt navn:" #: src/gpodder/gtkui/desktop/channel.py:133 msgid "Select new podcast cover artwork" msgstr "VУІlg nyt podcast-billede" #: src/gpodder/gtkui/desktop/channel.py:161 msgid "You can only drop a single image or URL here." msgstr "Du kan kun indsУІtte et enkelt billede eller en enkelt URL her." #: src/gpodder/gtkui/desktop/channel.py:161 #: src/gpodder/gtkui/desktop/channel.py:171 msgid "Drag and drop" msgstr "Drag and drop" #: src/gpodder/gtkui/desktop/channel.py:171 msgid "You can only drop local files and http:// URLs here." msgstr "Du kan kun indlУІgge lokale filer og HTTP://-adresser her." #: src/gpodder/gtkui/desktop/deviceplaylist.py:98 #, fuzzy, python-format msgid "Folder %s could not be created." msgstr "Feedet %(url)s kunne ikke opdateres." #: src/gpodder/gtkui/desktop/deviceplaylist.py:98 #, fuzzy msgid "Error writing playlist" msgstr "Fejl ved УЅbning af afspiller" #: src/gpodder/gtkui/desktop/episodeselector.py:288 #: share/gpodder/ui/gtk/gpodderepisodeselector.ui.h:2 msgid "Select all" msgstr "VУІlg alle" #: src/gpodder/gtkui/desktop/episodeselector.py:292 #: share/gpodder/ui/gtk/gpodderepisodeselector.ui.h:3 msgid "Select none" msgstr "VУІlg ingen" #: src/gpodder/gtkui/desktop/episodeselector.py:324 msgid "Nothing selected" msgstr "Intet valgt" #: src/gpodder/gtkui/desktop/episodeselector.py:325 #, python-format msgid "%(count)d episode" msgid_plural "%(count)d episodes" msgstr[0] "%(count)d episode" msgstr[1] "%(count)d episoder" #: src/gpodder/gtkui/desktop/episodeselector.py:327 #, python-format msgid "size: %s" msgstr "stУИrrelse: %s" #: src/gpodder/gtkui/desktop/podcastdirectory.py:238 #, fuzzy msgid "Loading podcasts" msgstr "TilfУИjer podcasts" #: src/gpodder/gtkui/desktop/podcastdirectory.py:239 #, fuzzy msgid "Please wait while the podcast list is downloaded" msgstr "Vent venligst, mens denne podcast fjernes" #: src/gpodder/gtkui/desktop/preferences.py:51 #: src/gpodder/gtkui/desktop/preferences.py:93 msgid "Do nothing" msgstr "GУИr intet" #: src/gpodder/gtkui/desktop/preferences.py:52 msgid "Show episode list" msgstr "Vis episodeliste" #: src/gpodder/gtkui/desktop/preferences.py:53 msgid "Add to download list" msgstr "FУИj til downloadliste" #: src/gpodder/gtkui/desktop/preferences.py:54 msgid "Download immediately" msgstr "Download straks" #: src/gpodder/gtkui/desktop/preferences.py:72 msgid "None" msgstr "Ingen" #: src/gpodder/gtkui/desktop/preferences.py:73 msgid "iPod" msgstr "" #: src/gpodder/gtkui/desktop/preferences.py:74 msgid "Filesystem-based" msgstr "Filsystem-baseret" #: src/gpodder/gtkui/desktop/preferences.py:94 #, fuzzy msgid "Mark as played" msgstr "MarkУЉr som uafspillet" #: src/gpodder/gtkui/desktop/preferences.py:95 #, fuzzy msgid "Delete from gPodder" msgstr "Slet fra gPodder" #: src/gpodder/gtkui/desktop/preferences.py:123 #, fuzzy, python-format msgid "Custom (%(format_ids)s)" msgstr "SУІrlige format-tekststrenge" #: src/gpodder/gtkui/desktop/preferences.py:318 msgid "Name" msgstr "" #: src/gpodder/gtkui/desktop/preferences.py:369 #, fuzzy msgid "Documentation" msgstr "Varighed" #: src/gpodder/gtkui/desktop/preferences.py:374 msgid "Extension info" msgstr "" #: src/gpodder/gtkui/desktop/preferences.py:379 msgid "Support the author" msgstr "" #: src/gpodder/gtkui/desktop/preferences.py:413 msgid "Extension cannot be activated" msgstr "" #: src/gpodder/gtkui/desktop/preferences.py:426 msgid "Extension module info" msgstr "" #: src/gpodder/gtkui/desktop/preferences.py:463 msgid "Configure audio player" msgstr "KonfigurУЉr lydafspiller" #: src/gpodder/gtkui/desktop/preferences.py:464 #: src/gpodder/gtkui/desktop/preferences.py:474 msgid "Command:" msgstr "Kommando:" #: src/gpodder/gtkui/desktop/preferences.py:473 msgid "Configure video player" msgstr "KonfigurУЉr videoafspiller:" #: src/gpodder/gtkui/desktop/preferences.py:485 #: src/gpodder/gtkui/desktop/preferences.py:503 msgid "manually" msgstr "manuelt" #: src/gpodder/gtkui/desktop/preferences.py:505 #, python-format msgid "after %(count)d day" msgid_plural "after %(count)d days" msgstr[0] "efter %(count)d dag" msgstr[1] "efter %(count)d dage" #: src/gpodder/gtkui/desktop/preferences.py:541 msgid "Replace subscription list on server" msgstr "Erstat abonnementsliste pУЅ server" #: src/gpodder/gtkui/desktop/preferences.py:542 msgid "" "Remote podcasts that have not been added locally will be removed on the " "server. Continue?" msgstr "" "Server-podcasts, der ikke er tilfУИjet lokalt, fjernes fra serveren. FortsУІt?" #: src/gpodder/gtkui/desktop/preferences.py:621 msgid "Select folder for mount point" msgstr "VУІlg mappe som indlУІsningspunkt" #: src/gpodder/gtkui/desktop/preferences.py:638 #, fuzzy msgid "Select folder for playlists" msgstr "VУІlg mappe som indlУІsningspunkt" #: src/gpodder/gtkui/desktop/sync.py:86 msgid "No device configured" msgstr "Ingen enhed konfigureret" #: src/gpodder/gtkui/desktop/sync.py:87 msgid "Please set up your device in the preferences dialog." msgstr "VУІlg din enhed i vinduet Indstillinger." #: src/gpodder/gtkui/desktop/sync.py:91 msgid "Cannot open device" msgstr "Kan ikke УЅbne enhed" #: src/gpodder/gtkui/desktop/sync.py:92 msgid "Please check the settings in the preferences dialog." msgstr "KontrollУЉr din konfiguration i vinduet Indstillinger." #: src/gpodder/gtkui/desktop/sync.py:139 msgid "Not enough space left on device" msgstr "Ikke plads nok tilbage pУЅ enheden" #: src/gpodder/gtkui/desktop/sync.py:140 #, fuzzy, python-format msgid "" "Additional free space required: %(required_space)s\n" "Do you want to continue?" msgstr "" "Mangler ledig hukommelse pУЅ %s.\n" "Vil du fortsУІttee?" #: src/gpodder/gtkui/desktop/sync.py:199 #, fuzzy msgid "Update successful" msgstr "Abonnementsliste overfУИrt." #: src/gpodder/gtkui/desktop/sync.py:200 msgid "The playlist on your MP3 player has been updated." msgstr "" #: src/gpodder/gtkui/desktop/sync.py:274 msgid "Episodes have been deleted on device" msgstr "" #: src/gpodder/gtkui/desktop/sync.py:285 #, fuzzy msgid "Error writing playlist files" msgstr "Filkonverteringsfejl." #: src/gpodder/plugins/soundcloud.py:154 msgid "Unknown track" msgstr "Ukendt spor" #: src/gpodder/plugins/soundcloud.py:181 #, python-format msgid "%s on Soundcloud" msgstr "%s pУЅ Soundcloud" #: src/gpodder/plugins/soundcloud.py:190 #, python-format msgid "Tracks published by %s on Soundcloud." msgstr "Spor udgivet af %s pУЅ Soundcloud." #: src/gpodder/plugins/soundcloud.py:217 #, python-format msgid "%s's favorites on Soundcloud" msgstr "%s favoritter pУЅ Soundcloud" #: src/gpodder/plugins/soundcloud.py:223 #, python-format msgid "Tracks favorited by %s on Soundcloud." msgstr "Favoritnumre udvalgt af %s pУЅ Soundcloud." #: share/gpodder/extensions/audio_converter.py:20 #, fuzzy msgid "Convert audio files" msgstr "Konverterer fil" #: share/gpodder/extensions/audio_converter.py:21 msgid "Transcode audio files to mp3/ogg" msgstr "" #: share/gpodder/extensions/audio_converter.py:84 #: share/gpodder/extensions/video_converter.py:86 #, python-format msgid "Convert to %(format)s" msgstr "" #: share/gpodder/extensions/audio_converter.py:111 #: share/gpodder/extensions/rockbox_convert2mp4.py:65 #: share/gpodder/extensions/video_converter.py:111 #, fuzzy msgid "File converted" msgstr "iPod OGG-konverter" #: share/gpodder/extensions/audio_converter.py:114 #: share/gpodder/extensions/video_converter.py:114 #, fuzzy msgid "Conversion failed" msgstr "Konverterer fil" #: share/gpodder/extensions/concatenate_videos.py:20 #: share/gpodder/extensions/concatenate_videos.py:100 #, fuzzy msgid "Concatenate videos" msgstr "Konverterer fil" #: share/gpodder/extensions/concatenate_videos.py:21 msgid "Add a context menu item for concatenating multiple videos" msgstr "" #: share/gpodder/extensions/concatenate_videos.py:37 msgid "Save video" msgstr "" #: share/gpodder/extensions/concatenate_videos.py:66 #, fuzzy msgid "Concatenating video files" msgstr "Konverterer fil" #: share/gpodder/extensions/concatenate_videos.py:67 #, python-format msgid "Writing %(filename)s" msgstr "" #: share/gpodder/extensions/concatenate_videos.py:78 msgid "Videos successfully converted" msgstr "" #: share/gpodder/extensions/concatenate_videos.py:79 #, fuzzy msgid "Error converting videos" msgstr "Filkonverteringsfejl." #: share/gpodder/extensions/concatenate_videos.py:80 msgid "Concatenation result" msgstr "" #: share/gpodder/extensions/enqueue_in_mediaplayer.py:16 msgid "Enqueue in media players" msgstr "" #: share/gpodder/extensions/enqueue_in_mediaplayer.py:17 msgid "" "Add a context menu item for enqueueing episodes in installed media players" msgstr "" #: share/gpodder/extensions/enqueue_in_mediaplayer.py:35 msgid "Enqueue in" msgstr "" #: share/gpodder/extensions/episode_website_context_menu.py:14 msgid "\"Open website\" episode context menu" msgstr "" #: share/gpodder/extensions/episode_website_context_menu.py:15 msgid "Add a context menu item for opening the website of an episode" msgstr "" #: share/gpodder/extensions/episode_website_context_menu.py:30 #, fuzzy msgid "Open website" msgstr "Hjemmeside:" #: share/gpodder/extensions/gtk_statusicon.py:14 #, fuzzy msgid "Gtk Status Icon" msgstr "Statusikon" #: share/gpodder/extensions/gtk_statusicon.py:15 msgid "Show a status icon for Gtk-based Desktops." msgstr "" #: share/gpodder/extensions/minimize_on_start.py:10 msgid "Minimize on start" msgstr "" #: share/gpodder/extensions/minimize_on_start.py:11 msgid "Minimizes the gPodder window on startup." msgstr "" #: share/gpodder/extensions/mpris-listener.py:33 msgid "MPRIS Listener" msgstr "" #: share/gpodder/extensions/mpris-listener.py:34 msgid "Convert MPRIS notifications to gPodder Media Player D-Bus API" msgstr "" #: share/gpodder/extensions/normalize_audio.py:21 msgid "Normalize audio with re-encoding" msgstr "" #: share/gpodder/extensions/normalize_audio.py:22 msgid "Normalize the volume of audio files with normalize-audio" msgstr "" #: share/gpodder/extensions/normalize_audio.py:99 #, fuzzy msgid "File normalized" msgstr "Filnavn" #: share/gpodder/extensions/rename_download.py:16 #, fuzzy msgid "Rename episodes after download" msgstr "УЉn episode downloadet:" #: share/gpodder/extensions/rename_download.py:17 #, fuzzy msgid "Rename episodes to \".\" on download" msgstr "Der er ingen nye episoder til download" #: share/gpodder/extensions/rm_ogg_cover.py:37 #, fuzzy msgid "Remove cover art from OGG files" msgstr "VУІlg cover fra fil" #: share/gpodder/extensions/rm_ogg_cover.py:38 msgid "removes coverart from all downloaded ogg files" msgstr "" #: share/gpodder/extensions/rm_ogg_cover.py:66 #, fuzzy msgid "Remove cover art" msgstr "Fjern podcast" #: share/gpodder/extensions/rockbox_convert2mp4.py:26 msgid "Convert video files to MP4 for Rockbox" msgstr "" #: share/gpodder/extensions/rockbox_convert2mp4.py:27 msgid "Converts all videos to a Rockbox-compatible format" msgstr "" #: share/gpodder/extensions/sonos.py:19 share/gpodder/extensions/sonos.py:78 msgid "Stream to Sonos" msgstr "" #: share/gpodder/extensions/sonos.py:20 msgid "Stream podcasts to Sonos speakers" msgstr "" #: share/gpodder/extensions/tagging.py:45 msgid "Tag downloaded files using Mutagen" msgstr "" #: share/gpodder/extensions/tagging.py:46 #, fuzzy msgid "Add episode and podcast titles to MP3/OGG tags" msgstr "Vis \"Alle episoder\" i podcastlisten" #: share/gpodder/extensions/taskbar_progress.py:28 msgid "Show download progress on the taskbar" msgstr "" #: share/gpodder/extensions/taskbar_progress.py:29 msgid "Displays the progress on the Windows taskbar." msgstr "" #: share/gpodder/extensions/ted_subtitles.py:16 msgid "Subtitle Downloader for TED Talks" msgstr "" #: share/gpodder/extensions/ted_subtitles.py:17 msgid "Downloads .srt subtitles for TED Talks Videos" msgstr "" #: share/gpodder/extensions/ubuntu_appindicator.py:10 msgid "Ubuntu App Indicator" msgstr "" #: share/gpodder/extensions/ubuntu_appindicator.py:11 msgid "Show a status indicator in the top bar." msgstr "" #: share/gpodder/extensions/ubuntu_appindicator.py:47 msgid "Show main window" msgstr "" #: share/gpodder/extensions/ubuntu_appindicator.py:57 #: share/gpodder/ui/gtk/gpodder.ui.h:6 msgid "Quit" msgstr "Afslut" #: share/gpodder/extensions/ubuntu_unity.py:10 msgid "Ubuntu Unity Integration" msgstr "" #: share/gpodder/extensions/ubuntu_unity.py:11 msgid "Show download progress in the Unity Launcher icon." msgstr "" #: share/gpodder/extensions/update_feeds_on_startup.py:14 #, fuzzy msgid "Search for new episodes on startup" msgstr "SУИg efter nye episoder ved opstart" #: share/gpodder/extensions/update_feeds_on_startup.py:15 #, fuzzy msgid "Starts the search for new episodes on startup" msgstr "SУИg efter nye episoder ved opstart" #: share/gpodder/extensions/video_converter.py:22 #, fuzzy msgid "Convert video files" msgstr "Konverterer fil" #: share/gpodder/extensions/video_converter.py:23 msgid "Transcode video files to avi/mp4/m4v" msgstr "" #: share/gpodder/ui/gtk/gpodderaddpodcast.ui.h:1 msgid "Add a new podcast" msgstr "TilfУИj ny podcast" #: share/gpodder/ui/gtk/gpodderaddpodcast.ui.h:2 msgid "URL:" msgstr "URL:" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:1 msgid "gPodder Podcast Editor" msgstr "Podcast-editor for gPodder" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:2 msgid "Section:" msgstr "Kategori:" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:3 msgid "Disable feed updates (pause subscription)" msgstr "DeaktivУЉr feedopdateringer (sУІt abonnement pУЅ hold)" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:4 #, fuzzy msgid "Synchronize to MP3 player devices" msgstr "Synkroniserer til afspiller" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:5 #, fuzzy msgid "Strategy:" msgstr "Sletningsprincip:" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:6 #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:6 msgid "General" msgstr "Generelt" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:7 msgid "HTTP/FTP Authentication" msgstr "HTTP-/FTP-godkendelse" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:8 #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:13 msgid "Username:" msgstr "Brugernavn:" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:9 #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:14 msgid "Password:" msgstr "Adgangskode:" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:10 msgid "Locations" msgstr "Placeringer" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:11 msgid "Download to:" msgstr "Download til:" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:12 msgid "Website:" msgstr "Hjemmeside:" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:13 msgid "website label" msgstr "NУИgleord for hjemmeside" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:14 msgid "Advanced" msgstr "Avanceret" #: share/gpodder/ui/gtk/gpodderconfigeditor.ui.h:1 msgid "gPodder Configuration Editor" msgstr "OpsУІtningseditor for gPodder" #: share/gpodder/ui/gtk/gpodderconfigeditor.ui.h:2 msgid "Search for:" msgstr "SУИg efter:" #: share/gpodder/ui/gtk/gpodderconfigeditor.ui.h:3 msgid "Show All" msgstr "Vis alle" #: share/gpodder/ui/gtk/gpodderepisodeselector.ui.h:1 msgid "Select episodes" msgstr "VУІlg episoder" #: share/gpodder/ui/gtk/gpodderpodcastdirectory.ui.h:1 msgid "Find new podcasts" msgstr "Find nye podcasts" #: share/gpodder/ui/gtk/gpodderpodcastdirectory.ui.h:2 msgid "Select All" msgstr "VУІlg alle" #: share/gpodder/ui/gtk/gpodderpodcastdirectory.ui.h:3 msgid "Select None" msgstr "VУІlg ingen" #: share/gpodder/ui/gtk/gpodderpodcastdirectory.ui.h:4 msgid "label" msgstr "" #: share/gpodder/ui/gtk/gpodderpodcastdirectory.ui.h:5 msgid "..." msgstr "" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:1 #: share/gpodder/ui/gtk/gpodder.ui.h:5 msgid "Preferences" msgstr "Indstillinger" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:2 msgid "Audio player:" msgstr "Lydafspiller:" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:3 msgid "Video player:" msgstr "Videoafspiller:" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:4 msgid "\"All episodes\" in podcast list" msgstr "\"Alle episoder\" i podcast-liste" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:5 msgid "Use sections for podcast list" msgstr "Brug kategorier til podcast-liste" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:7 msgid "Preferred YouTube format:" msgstr "" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:8 msgid "YouTube API key (v3):" msgstr "" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:9 msgid "Preferred Vimeo format:" msgstr "" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:11 msgid "Extensions" msgstr "" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:12 msgid "Synchronize subscriptions and episode actions" msgstr "SynkronisУЉr abonnementer og episodebeskrivelser" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:15 msgid "Replace list on server with local subscriptions" msgstr "Erstat listen pУЅ serveren med lokale abonnementer" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:16 msgid "Device name:" msgstr "Enhedsnavn:" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:17 msgid "gpodder.net" msgstr "gpodder.net" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:18 msgid "Update interval:" msgstr "Opdateringsinterval:" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:19 msgid "Maximum number of episodes per podcast:" msgstr "Maks. antal episoder pr. podcast:" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:20 msgid "When new episodes are found:" msgstr "NУЅr nye episoder er fundet:" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:21 msgid "Updating" msgstr "Opdaterer" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:22 msgid "Delete played episodes:" msgstr "Slet afspillede episoder:" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:23 msgid "Remove played episodes even if unfinished" msgstr "Fjern afspillede episoder selvom de kke er lyttet til ende" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:24 msgid "Also remove unplayed episodes" msgstr "Fjern ogsУЅ uafspillede episoder" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:25 msgid "Clean-up" msgstr "Oprydning" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:26 msgid "Device type:" msgstr "Enhedstype:" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:27 msgid "Mountpoint:" msgstr "IndlУІsningspunkt:" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:28 msgid "After syncing an episode:" msgstr "Efter synkronisering af en episode:" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:29 #, fuzzy msgid "Create playlists on device" msgstr "Erstat abonnementsliste pУЅ server" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:30 #, fuzzy msgid "Playlists Folder:" msgstr "Navn til afspilningsliste:" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:31 msgid "Remove episodes deleted on device from gPodder" msgstr "" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:32 msgid "Only sync unplayed episodes" msgstr "SynkronisУЉr kun uafspillede episoder" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:33 msgid "Devices" msgstr "Enheder" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:34 msgid "Edit config" msgstr "RedigУЉr konfigurationsfil" #: share/gpodder/ui/gtk/gpodder.ui.h:1 msgid "_Podcasts" msgstr "_Podcasts" #: share/gpodder/ui/gtk/gpodder.ui.h:2 msgid "Check for new episodes" msgstr "SУИg efter nye episoder" #: share/gpodder/ui/gtk/gpodder.ui.h:3 msgid "Download new episodes" msgstr "Download nye episoder" #: share/gpodder/ui/gtk/gpodder.ui.h:7 msgid "_Subscriptions" msgstr "_Abonnementer" #: share/gpodder/ui/gtk/gpodder.ui.h:8 msgid "Discover new podcasts" msgstr "Opdag nye podcasts" #: share/gpodder/ui/gtk/gpodder.ui.h:9 msgid "Add podcast via URL" msgstr "TilfУИj podcast via URL" #: share/gpodder/ui/gtk/gpodder.ui.h:11 msgid "Unsubscribe" msgstr "Fjern abonnement" #: share/gpodder/ui/gtk/gpodder.ui.h:14 msgid "Import from OPML file" msgstr "ImportУЉr fra OPML-fil" #: share/gpodder/ui/gtk/gpodder.ui.h:15 msgid "Export to OPML file" msgstr "EksportУЉr til OPML-fil" #: share/gpodder/ui/gtk/gpodder.ui.h:16 msgid "Go to gpodder.net" msgstr "GУЅ til gpodder.org" #: share/gpodder/ui/gtk/gpodder.ui.h:17 msgid "_Episodes" msgstr "_Episoder" #: share/gpodder/ui/gtk/gpodder.ui.h:18 msgid "Play" msgstr "Afspil" #: share/gpodder/ui/gtk/gpodder.ui.h:19 msgid "Open" msgstr "У…bn" #: share/gpodder/ui/gtk/gpodder.ui.h:22 msgid "Delete" msgstr "Slet" #: share/gpodder/ui/gtk/gpodder.ui.h:23 msgid "Toggle new status" msgstr "Skift \"ny\"-status" #: share/gpodder/ui/gtk/gpodder.ui.h:24 msgid "Change delete lock" msgstr "Skift sletningslУЅsekode" #: share/gpodder/ui/gtk/gpodder.ui.h:26 msgid "E_xtras" msgstr "" #: share/gpodder/ui/gtk/gpodder.ui.h:27 #, fuzzy msgid "Sync to device" msgstr "SynkronisУЉr med enhed" #: share/gpodder/ui/gtk/gpodder.ui.h:28 #, fuzzy msgid "Update YouTube subscriptions" msgstr "Ingen abonnementer" #: share/gpodder/ui/gtk/gpodder.ui.h:29 msgid "_View" msgstr "_Vis" #: share/gpodder/ui/gtk/gpodder.ui.h:30 msgid "Toolbar" msgstr "VУІrktУИjslinje" #: share/gpodder/ui/gtk/gpodder.ui.h:31 msgid "Episode descriptions" msgstr "Episodebeskrivelser" #: share/gpodder/ui/gtk/gpodder.ui.h:33 msgid "Hide deleted episodes" msgstr "Skjul slettede episoder" #: share/gpodder/ui/gtk/gpodder.ui.h:34 msgid "Downloaded episodes" msgstr "Downloadede episoder" #: share/gpodder/ui/gtk/gpodder.ui.h:35 msgid "Unplayed episodes" msgstr "Uafspillede episoder" #: share/gpodder/ui/gtk/gpodder.ui.h:36 msgid "Hide podcasts without episodes" msgstr "Skjul podcasts uden episoder" #: share/gpodder/ui/gtk/gpodder.ui.h:37 msgid "_Help" msgstr "_HjУІlp" #: share/gpodder/ui/gtk/gpodder.ui.h:38 msgid "User manual" msgstr "Brugermanual" #: share/gpodder/ui/gtk/gpodder.ui.h:39 msgid "Software updates" msgstr "" #: share/gpodder/ui/gtk/gpodder.ui.h:40 msgid "Filter:" msgstr "Filter:" #: share/gpodder/ui/gtk/gpodder.ui.h:41 msgid "Podcasts" msgstr "Podcasts" #: share/gpodder/ui/gtk/gpodder.ui.h:42 msgid "Limit rate to" msgstr "BegrУІns hastigheden til" #: share/gpodder/ui/gtk/gpodder.ui.h:43 msgid "KiB/s" msgstr "KiB/s" #: share/gpodder/ui/gtk/gpodder.ui.h:44 msgid "Limit downloads to" msgstr "BegrУІns downloads til" #: share/gpodder/ui/gtk/gpodderwelcome.ui.h:2 #, fuzzy msgid "Welcome to gPodder" msgstr "Velkommen til gPodder" #: share/gpodder/ui/gtk/gpodderwelcome.ui.h:3 #, fuzzy msgid "Your podcast list is empty." msgstr "Din abonnementsliste er tom." #: share/gpodder/ui/gtk/gpodderwelcome.ui.h:4 msgid "Choose from a list of example podcasts" msgstr "VУІlg fra listen over eksempler pУЅ podcasts" #: share/gpodder/ui/gtk/gpodderwelcome.ui.h:5 #, fuzzy msgid "Add a podcast by entering its URL" msgstr "TilfУИj podcast via URL" #: share/gpodder/ui/gtk/gpodderwelcome.ui.h:6 #, fuzzy msgid "Restore my subscriptions from gpodder.net" msgstr "Download mine abonnementer fra gpodder.net" #: bin/gpo:266 #, fuzzy msgid "Podcast update requested by extensions." msgstr "Podcast krУІver godkendelse" #: bin/gpo:270 msgid "Episode download requested by extensions." msgstr "" #: bin/gpo:323 #, fuzzy, python-format msgid "Invalid url: %s" msgstr "Ugyldig URL" #: bin/gpo:340 bin/gpo:416 bin/gpo:450 bin/gpo:582 bin/gpo:597 bin/gpo:717 #, fuzzy, python-format msgid "You are not subscribed to %s." msgstr "Du abonnerer allerede pУЅ disse podcasts" #: bin/gpo:346 #, fuzzy, python-format msgid "Already subscribed to %s." msgstr "Kan ikke synkronisere med iPod" #: bin/gpo:352 #, fuzzy, python-format msgid "Cannot subscribe to %s." msgstr "Kan ikke synkronisere med iPod" #: bin/gpo:368 #, python-format msgid "Successfully added %s." msgstr "" #: bin/gpo:386 msgid "This configuration option does not exist." msgstr "" #: bin/gpo:390 msgid "Can only set leaf configuration nodes." msgstr "" #: bin/gpo:404 #, python-format msgid "Renamed %(old_title)s to %(new_title)s." msgstr "" #: bin/gpo:420 #, fuzzy, python-format msgid "Unsubscribed from %s." msgstr "Fjern abonnement" #: bin/gpo:494 #, fuzzy msgid "Updates disabled" msgstr "OpdatУЉr valgte" #: bin/gpo:505 #, python-format msgid "%(count)d new episode" msgid_plural "%(count)d new episodes" msgstr[0] "%(count)d ny episode" msgstr[1] "%(count)d nye episoder" #: bin/gpo:511 #, fuzzy msgid "Checking for new episodes" msgstr "SУИger efter nye episoder..." #: bin/gpo:520 #, fuzzy, python-format msgid "Skipping %(podcast)s" msgstr "Springer podcast over: %s" #: bin/gpo:588 #, python-format msgid "Disabling feed update from %s." msgstr "" #: bin/gpo:603 #, fuzzy, python-format msgid "Enabling feed update from %s." msgstr "IndlУІser filer fra %s" #: bin/gpo:616 #, python-format msgid "Please register a YouTube API key and set it using %(command)s." msgstr "" #: bin/gpo:643 #, python-format msgid "Changing: %(old_url)s => %(new_url)s" msgstr "" #: bin/gpo:653 #, fuzzy msgid "Nothing to fix" msgstr "Intet at eksportere" #: bin/gpo:672 #, fuzzy msgid "No podcasts found." msgstr "Ingen podcasts fundet" #: bin/gpo:686 msgid "Enter index to subscribe, ? for list" msgstr "" #: bin/gpo:700 bin/gpo:704 #, fuzzy msgid "Invalid value." msgstr "Ugyldig URL" #: bin/gpo:721 #, fuzzy, python-format msgid "Invalid URL: %s" msgstr "Ugyldig URL" #: bin/gpo:724 #, python-format msgid "Changed URL from %(old_url)s to %(new_url)s." msgstr "" #: bin/gpo:782 #, python-format msgid "Syntax error: %(error)s" msgstr "" #: bin/gpo:876 msgid "Ambiguous command. Did you mean.." msgstr "" #: bin/gpo:880 #, fuzzy msgid "The requested function is not available." msgstr "Denne funktion er ikke tilgУІngelig pУЅ iPods." #: bin/gpodder:105 #, fuzzy msgid "print logging output on the console" msgstr "Send debugging-output til stdout" #: bin/gpodder:108 #, fuzzy msgid "subscribe to the feed at URL" msgstr "Abonner pУЅ den angivne URL" #: bin/gpodder:113 msgid "Mac OS X application process number" msgstr "Mac OS X applikationsprocesnummer" #: share/applications/gpodder.desktop.in.h:2 msgid "gPodder Podcast Client" msgstr "gPodder podcast-klient" #: share/applications/gpodder.desktop.in.h:3 msgid "Podcast Client" msgstr "Podcast-klient" #: share/applications/gpodder.desktop.in.h:4 msgid "Subscribe to audio and video content from the web" msgstr "Abonner pУЅ lyd- og videoindhold fra nettet" #: share/applications/gpodder-url-handler.desktop.in.h:1 #, fuzzy msgid "gPodder (subscribe to feed)" msgstr "Abonner pУЅ den angivne URL" gpodder-3.9.0/po/tr_TR.po0000644000016000001710000013307212654461626016313 0ustar jenkinsjenkins00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # # Translators: msgid "" msgstr "" "Project-Id-Version: gPodder\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2016-02-03 20:31+0000\n" "PO-Revision-Date: 2013-01-19 12:30+0000\n" "Last-Translator: Thomas Perl \n" "Language-Team: Turkish (Turkey) (http://www.transifex.com/projects/p/gpodder/" "language/tr_TR/)\n" "Language: tr_TR\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" #: src/gpodder/config.py:55 #, python-format msgid "gPodder on %s" msgstr "" #: src/gpodder/directory.py:95 msgid "gpodder.net search" msgstr "" #: src/gpodder/directory.py:104 msgid "OPML from web" msgstr "" #: src/gpodder/directory.py:113 msgid "OPML file" msgstr "" #: src/gpodder/directory.py:122 share/gpodder/ui/gtk/gpodderwelcome.ui.h:1 msgid "Getting started" msgstr "" #: src/gpodder/directory.py:131 msgid "gpodder.net Top 50" msgstr "" #: src/gpodder/directory.py:140 msgid "gpodder.net Tags" msgstr "" #: src/gpodder/directory.py:152 msgid "Soundcloud search" msgstr "" #: src/gpodder/directory.py:165 msgid "Imported OPML file" msgstr "" #: src/gpodder/download.py:329 msgid "Wrong username/password" msgstr "" #: src/gpodder/download.py:527 src/gpodder/sync.py:924 msgid "Added" msgstr "" #: src/gpodder/download.py:527 src/gpodder/sync.py:924 msgid "Queued" msgstr "" #: src/gpodder/download.py:527 src/gpodder/gtkui/model.py:327 msgid "Downloading" msgstr "" #: src/gpodder/download.py:528 src/gpodder/model.py:721 #: src/gpodder/sync.py:925 msgid "Finished" msgstr "" #: src/gpodder/download.py:528 src/gpodder/sync.py:925 msgid "Failed" msgstr "" #: src/gpodder/download.py:528 src/gpodder/sync.py:925 msgid "Cancelled" msgstr "" #: src/gpodder/download.py:528 src/gpodder/sync.py:925 msgid "Paused" msgstr "" #: src/gpodder/download.py:862 msgid "Missing content from server" msgstr "" #: src/gpodder/download.py:868 #, python-format msgid "I/O Error: %(error)s: %(filename)s" msgstr "" #: src/gpodder/download.py:875 #, python-format msgid "HTTP Error %(code)s: %(message)s" msgstr "" #: src/gpodder/download.py:879 src/gpodder/sync.py:1081 #, python-format msgid "Error: %s" msgstr "" #: src/gpodder/extensions.py:55 msgid "Desktop Integration" msgstr "" #: src/gpodder/extensions.py:56 msgid "Interface" msgstr "" #: src/gpodder/extensions.py:57 msgid "Post download" msgstr "" #: src/gpodder/extensions.py:59 src/gpodder/model.py:779 #: src/gpodder/model.py:1225 msgid "Other" msgstr "" #: src/gpodder/extensions.py:100 msgid "No description for this extension." msgstr "" #: src/gpodder/extensions.py:212 #, python-format msgid "Command not found: %(command)s" msgstr "" #: src/gpodder/extensions.py:228 #, python-format msgid "Need at least one of the following commands: %(list_of_commands)s" msgstr "" #: src/gpodder/extensions.py:265 #, python-format msgid "Python module not found: %(module)s" msgstr "" #: src/gpodder/model.py:446 src/gpodder/plugins/soundcloud.py:156 msgid "No description available" msgstr "" #: src/gpodder/model.py:679 msgid "unknown" msgstr "" #: src/gpodder/model.py:746 msgid "Default" msgstr "" #: src/gpodder/model.py:747 msgid "Only keep latest" msgstr "" #: src/gpodder/model.py:1208 src/gpodder/model.py:1223 #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:10 msgid "Video" msgstr "" #: src/gpodder/model.py:1221 msgid "Audio" msgstr "" #: src/gpodder/my.py:174 #, python-format msgid "Add %s" msgstr "" #: src/gpodder/my.py:176 #, python-format msgid "Remove %s" msgstr "" #: src/gpodder/sync.py:196 msgid "Cancelled by user" msgstr "" #: src/gpodder/sync.py:199 msgid "Writing data to disk" msgstr "" #: src/gpodder/sync.py:295 msgid "Opening iPod database" msgstr "" #: src/gpodder/sync.py:305 msgid "iPod opened" msgstr "" #: src/gpodder/sync.py:316 msgid "Saving iPod database" msgstr "" #: src/gpodder/sync.py:321 msgid "Writing extended gtkpod database" msgstr "" #: src/gpodder/sync.py:397 src/gpodder/sync.py:680 src/gpodder/sync.py:874 #, python-format msgid "Removing %s" msgstr "" #: src/gpodder/sync.py:412 src/gpodder/sync.py:557 #, python-format msgid "Adding %s" msgstr "" #: src/gpodder/sync.py:430 #, python-format msgid "Error copying %(episode)s: Not enough free space on %(mountpoint)s" msgstr "" #: src/gpodder/sync.py:515 msgid "Opening MP3 player" msgstr "" #: src/gpodder/sync.py:518 msgid "MP3 player opened" msgstr "" #: src/gpodder/sync.py:576 #, python-format msgid "" "Not enough space in %(path)s: %(free)s available, but need at least %(need)s" msgstr "" #: src/gpodder/sync.py:603 src/gpodder/sync.py:611 #, python-format msgid "Error opening %(filename)s: %(message)s" msgstr "" #: src/gpodder/sync.py:780 src/gpodder/sync.py:786 msgid "MTP device" msgstr "" #: src/gpodder/sync.py:793 msgid "Opening the MTP device" msgstr "" #: src/gpodder/sync.py:803 #, python-format msgid "%s opened" msgstr "" #: src/gpodder/sync.py:808 #, python-format msgid "Closing %s" msgstr "" #: src/gpodder/sync.py:816 #, python-format msgid "%s closed" msgstr "" #: src/gpodder/sync.py:821 bin/gpo:708 #, python-format msgid "Adding %s..." msgstr "" #: src/gpodder/sync.py:924 msgid "Synchronizing" msgstr "" #: src/gpodder/util.py:429 #, python-format msgid "%(count)d day ago" msgid_plural "%(count)d days ago" msgstr[0] "" #: src/gpodder/util.py:508 msgid "Today" msgstr "" #: src/gpodder/util.py:510 msgid "Yesterday" msgstr "" #: src/gpodder/util.py:553 src/gpodder/util.py:556 msgid "(unknown)" msgstr "" #: src/gpodder/util.py:1193 src/gpodder/util.py:1212 #, python-format msgid "%(count)d second" msgid_plural "%(count)d seconds" msgstr[0] "" #: src/gpodder/util.py:1206 #, python-format msgid "%(count)d hour" msgid_plural "%(count)d hours" msgstr[0] "" #: src/gpodder/util.py:1209 #, python-format msgid "%(count)d minute" msgid_plural "%(count)d minutes" msgstr[0] "" #: src/gpodder/util.py:1215 msgid "and" msgstr "" #: src/gpodder/gtkui/config.py:50 msgid "Integer" msgstr "" #: src/gpodder/gtkui/config.py:52 msgid "Float" msgstr "" #: src/gpodder/gtkui/config.py:54 msgid "Boolean" msgstr "" #: src/gpodder/gtkui/config.py:56 msgid "String" msgstr "" #: src/gpodder/gtkui/desktopfile.py:70 #, python-format msgid "Command: %s" msgstr "" #: src/gpodder/gtkui/desktopfile.py:150 msgid "Default application" msgstr "" #: src/gpodder/gtkui/main.py:205 share/applications/gpodder.desktop.in.h:1 msgid "gPodder" msgstr "" #: src/gpodder/gtkui/main.py:288 msgid "Loading incomplete downloads" msgstr "" #: src/gpodder/gtkui/main.py:289 msgid "Some episodes have not finished downloading in a previous session." msgstr "" #: src/gpodder/gtkui/main.py:291 #, python-format msgid "%(count)d partial file" msgid_plural "%(count)d partial files" msgstr[0] "" #: src/gpodder/gtkui/main.py:306 msgid "Resume all" msgstr "" #: src/gpodder/gtkui/main.py:316 msgid "Incomplete downloads from a previous session were found." msgstr "" #: src/gpodder/gtkui/main.py:414 msgid "Action" msgstr "" #: src/gpodder/gtkui/main.py:461 msgid "Confirm changes from gpodder.net" msgstr "" #: src/gpodder/gtkui/main.py:462 msgid "Select the actions you want to carry out." msgstr "" #: src/gpodder/gtkui/main.py:502 msgid "Uploading subscriptions" msgstr "" #: src/gpodder/gtkui/main.py:503 msgid "Your subscriptions are being uploaded to the server." msgstr "" #: src/gpodder/gtkui/main.py:508 msgid "List uploaded successfully." msgstr "" #: src/gpodder/gtkui/main.py:515 msgid "Error while uploading" msgstr "" #: src/gpodder/gtkui/main.py:800 src/gpodder/gtkui/main.py:928 #: src/gpodder/gtkui/main.py:2622 src/gpodder/gtkui/main.py:2815 #: src/gpodder/gtkui/desktop/episodeselector.py:132 #: src/gpodder/gtkui/desktop/sync.py:270 msgid "Episode" msgstr "" #: src/gpodder/gtkui/main.py:819 msgid "Size" msgstr "" #: src/gpodder/gtkui/main.py:824 msgid "Duration" msgstr "" #: src/gpodder/gtkui/main.py:828 msgid "Released" msgstr "" #: src/gpodder/gtkui/main.py:855 msgid "Visible columns" msgstr "" #: src/gpodder/gtkui/main.py:948 src/gpodder/gtkui/main.py:1108 #: share/gpodder/ui/gtk/gpodder.ui.h:45 msgid "Progress" msgstr "" #: src/gpodder/gtkui/main.py:982 msgid "Loading episodes" msgstr "" #: src/gpodder/gtkui/main.py:985 msgid "No episodes in current view" msgstr "" #: src/gpodder/gtkui/main.py:987 msgid "No episodes available" msgstr "" #: src/gpodder/gtkui/main.py:993 msgid "No podcasts in this view" msgstr "" #: src/gpodder/gtkui/main.py:995 msgid "No subscriptions" msgstr "" #: src/gpodder/gtkui/main.py:997 msgid "No active tasks" msgstr "" #: src/gpodder/gtkui/main.py:1112 src/gpodder/gtkui/main.py:1114 #, python-format msgid "%(count)d active" msgid_plural "%(count)d active" msgstr[0] "" #: src/gpodder/gtkui/main.py:1116 #, python-format msgid "%(count)d failed" msgid_plural "%(count)d failed" msgstr[0] "" #: src/gpodder/gtkui/main.py:1118 #, python-format msgid "%(count)d queued" msgid_plural "%(count)d queued" msgstr[0] "" #: src/gpodder/gtkui/main.py:1132 #, python-format msgid "downloading %(count)d file" msgid_plural "downloading %(count)d files" msgstr[0] "" #: src/gpodder/gtkui/main.py:1142 #, python-format msgid "synchronizing %(count)d file" msgid_plural "synchronizing %(count)d files" msgstr[0] "" #: src/gpodder/gtkui/main.py:1144 #, python-format msgid "%(queued)d task queued" msgid_plural "%(queued)d tasks queued" msgstr[0] "" #: src/gpodder/gtkui/main.py:1168 msgid "Please report this problem and restart gPodder:" msgstr "" #: src/gpodder/gtkui/main.py:1168 msgid "Unhandled exception" msgstr "" #: src/gpodder/gtkui/main.py:1235 #, python-format msgid "Feedparser error: %s" msgstr "" #: src/gpodder/gtkui/main.py:1371 msgid "Could not download some episodes:" msgstr "" #: src/gpodder/gtkui/main.py:1373 src/gpodder/gtkui/main.py:1376 msgid "Downloads finished" msgstr "" #: src/gpodder/gtkui/main.py:1379 msgid "Downloads failed" msgstr "" #: src/gpodder/gtkui/main.py:1383 msgid "Could not sync some episodes:" msgstr "" #: src/gpodder/gtkui/main.py:1385 src/gpodder/gtkui/main.py:1388 msgid "Device synchronization finished" msgstr "" #: src/gpodder/gtkui/main.py:1391 msgid "Device synchronization failed" msgstr "" #: src/gpodder/gtkui/main.py:1434 #, python-format msgid "%(count)d more episode" msgid_plural "%(count)d more episodes" msgstr[0] "" #: src/gpodder/gtkui/main.py:1508 msgid "Start download now" msgstr "" #: src/gpodder/gtkui/main.py:1510 src/gpodder/gtkui/main.py:1719 #: src/gpodder/gtkui/desktop/episodeselector.py:144 #: share/gpodder/ui/gtk/gpodder.ui.h:20 msgid "Download" msgstr "" #: src/gpodder/gtkui/main.py:1511 share/gpodder/ui/gtk/gpodder.ui.h:21 msgid "Cancel" msgstr "" #: src/gpodder/gtkui/main.py:1512 msgid "Pause" msgstr "" #: src/gpodder/gtkui/main.py:1514 msgid "Remove from list" msgstr "" #: src/gpodder/gtkui/main.py:1553 share/gpodder/ui/gtk/gpodder.ui.h:13 msgid "Update podcast" msgstr "" #: src/gpodder/gtkui/main.py:1560 msgid "Open download folder" msgstr "" #: src/gpodder/gtkui/main.py:1566 msgid "Mark episodes as old" msgstr "" #: src/gpodder/gtkui/main.py:1570 src/gpodder/gtkui/main.py:1778 msgid "Archive" msgstr "" #: src/gpodder/gtkui/main.py:1575 msgid "Remove podcast" msgstr "" #: src/gpodder/gtkui/main.py:1590 share/gpodder/ui/gtk/gpodder.ui.h:10 msgid "Podcast settings" msgstr "" #: src/gpodder/gtkui/main.py:1650 msgid "Error converting file." msgstr "" #: src/gpodder/gtkui/main.py:1650 msgid "Bluetooth file transfer" msgstr "" #: src/gpodder/gtkui/main.py:1709 msgid "Preview" msgstr "" #: src/gpodder/gtkui/main.py:1711 msgid "Stream" msgstr "" #: src/gpodder/gtkui/main.py:1755 msgid "Send to" msgstr "" #: src/gpodder/gtkui/main.py:1757 msgid "Local folder" msgstr "" #: src/gpodder/gtkui/main.py:1762 msgid "Bluetooth device" msgstr "" #: src/gpodder/gtkui/main.py:1769 msgid "New" msgstr "" #: src/gpodder/gtkui/main.py:1785 share/gpodder/ui/gtk/gpodder.ui.h:25 msgid "Episode details" msgstr "" #: src/gpodder/gtkui/main.py:1938 msgid "Please check your media player settings in the preferences dialog." msgstr "" #: src/gpodder/gtkui/main.py:1939 msgid "Error opening player" msgstr "" #: src/gpodder/gtkui/main.py:2178 msgid "Adding podcasts" msgstr "" #: src/gpodder/gtkui/main.py:2179 msgid "Please wait while episode information is downloaded." msgstr "" #: src/gpodder/gtkui/main.py:2186 msgid "Existing subscriptions skipped" msgstr "" #: src/gpodder/gtkui/main.py:2187 msgid "You are already subscribed to these podcasts:" msgstr "" #: src/gpodder/gtkui/main.py:2195 msgid "Podcast requires authentication" msgstr "" #: src/gpodder/gtkui/main.py:2196 #, python-format msgid "Please login to %s:" msgstr "" #: src/gpodder/gtkui/main.py:2204 src/gpodder/gtkui/main.py:2299 msgid "Authentication failed" msgstr "" #: src/gpodder/gtkui/main.py:2210 msgid "Website redirection detected" msgstr "" #: src/gpodder/gtkui/main.py:2211 #, python-format msgid "The URL %(url)s redirects to %(target)s." msgstr "" #: src/gpodder/gtkui/main.py:2212 msgid "Do you want to visit the website now?" msgstr "" #: src/gpodder/gtkui/main.py:2221 msgid "Could not add some podcasts" msgstr "" #: src/gpodder/gtkui/main.py:2222 msgid "Some podcasts could not be added to your list:" msgstr "" #: src/gpodder/gtkui/main.py:2224 msgid "Unknown" msgstr "" #: src/gpodder/gtkui/main.py:2308 msgid "Redirection detected" msgstr "" #: src/gpodder/gtkui/main.py:2342 msgid "Merging episode actions" msgstr "" #: src/gpodder/gtkui/main.py:2343 msgid "Episode actions from gpodder.net are merged." msgstr "" #: src/gpodder/gtkui/main.py:2368 msgid "Cancelling..." msgstr "" #: src/gpodder/gtkui/main.py:2377 msgid "Please connect to a network, then try again." msgstr "" #: src/gpodder/gtkui/main.py:2378 msgid "No network connection" msgstr "" #: src/gpodder/gtkui/main.py:2399 #, python-format msgid "Updating %(count)d feed..." msgid_plural "Updating %(count)d feeds..." msgstr[0] "" #: src/gpodder/gtkui/main.py:2417 #, python-format msgid "Error while updating %(url)s: %(message)s" msgstr "" #: src/gpodder/gtkui/main.py:2419 #, python-format msgid "The feed at %(url)s could not be updated." msgstr "" #: src/gpodder/gtkui/main.py:2420 msgid "Error while updating feed" msgstr "" #: src/gpodder/gtkui/main.py:2435 #, python-format msgid "Updated %(podcast)s (%(position)d/%(total)d)" msgstr "" #: src/gpodder/gtkui/main.py:2466 msgid "No new episodes" msgstr "" #: src/gpodder/gtkui/main.py:2479 #, python-format msgid "Downloading %(count)d new episode." msgid_plural "Downloading %(count)d new episodes." msgstr[0] "" #: src/gpodder/gtkui/main.py:2480 src/gpodder/gtkui/main.py:2484 #: src/gpodder/gtkui/main.py:2833 msgid "New episodes available" msgstr "" #: src/gpodder/gtkui/main.py:2483 #, python-format msgid "%(count)d new episode added to download list." msgid_plural "%(count)d new episodes added to download list." msgstr[0] "" #: src/gpodder/gtkui/main.py:2490 #, python-format msgid "%(count)d new episode available" msgid_plural "%(count)d new episodes available" msgstr[0] "" #: src/gpodder/gtkui/main.py:2509 msgid "Quit gPodder" msgstr "" #: src/gpodder/gtkui/main.py:2510 msgid "" "You are downloading episodes. You can resume downloads the next time you " "start gPodder. Do you want to quit now?" msgstr "" #: src/gpodder/gtkui/main.py:2559 msgid "Episodes are locked" msgstr "" #: src/gpodder/gtkui/main.py:2560 msgid "" "The selected episodes are locked. Please unlock the episodes that you want " "to delete before trying to delete them." msgstr "" #: src/gpodder/gtkui/main.py:2565 #, python-format msgid "Delete %(count)d episode?" msgid_plural "Delete %(count)d episodes?" msgstr[0] "" #: src/gpodder/gtkui/main.py:2566 msgid "Deleting episodes removes downloaded files." msgstr "" #: src/gpodder/gtkui/main.py:2571 msgid "Deleting episodes" msgstr "" #: src/gpodder/gtkui/main.py:2572 msgid "Please wait while episodes are deleted" msgstr "" #: src/gpodder/gtkui/main.py:2625 #, python-format msgid "Select older than %(count)d day" msgid_plural "Select older than %(count)d days" msgstr[0] "" #: src/gpodder/gtkui/main.py:2627 msgid "Select played" msgstr "" #: src/gpodder/gtkui/main.py:2628 msgid "Select finished" msgstr "" #: src/gpodder/gtkui/main.py:2632 msgid "Select the episodes you want to delete:" msgstr "" #: src/gpodder/gtkui/main.py:2648 share/gpodder/ui/gtk/gpodder.ui.h:4 msgid "Delete episodes" msgstr "" #: src/gpodder/gtkui/main.py:2703 src/gpodder/gtkui/main.py:2934 #: src/gpodder/gtkui/main.py:3034 msgid "No podcast selected" msgstr "" #: src/gpodder/gtkui/main.py:2704 msgid "Please select a podcast in the podcasts list to update." msgstr "" #: src/gpodder/gtkui/main.py:2774 #, python-format msgid "Download error while downloading %(episode)s: %(message)s" msgstr "" #: src/gpodder/gtkui/main.py:2775 msgid "Download error" msgstr "" #: src/gpodder/gtkui/main.py:2818 msgid "Select the episodes you want to download:" msgstr "" #: src/gpodder/gtkui/main.py:2841 msgid "Mark as old" msgstr "" #: src/gpodder/gtkui/main.py:2848 msgid "Please check for new episodes later." msgstr "" #: src/gpodder/gtkui/main.py:2849 msgid "No new episodes available" msgstr "" #: src/gpodder/gtkui/main.py:2900 msgid "Login to gpodder.net" msgstr "" #: src/gpodder/gtkui/main.py:2901 msgid "Please login to download your subscriptions." msgstr "" #: src/gpodder/gtkui/main.py:2916 msgid "Subscriptions on gpodder.net" msgstr "" #: src/gpodder/gtkui/main.py:2935 msgid "Please select a podcast in the podcasts list to edit." msgstr "" #: src/gpodder/gtkui/main.py:2949 msgid "Podcast" msgstr "" #: src/gpodder/gtkui/main.py:2955 share/gpodder/ui/gtk/gpodder.ui.h:12 msgid "Remove podcasts" msgstr "" #: src/gpodder/gtkui/main.py:2956 msgid "Select the podcast you want to remove." msgstr "" #: src/gpodder/gtkui/main.py:2960 #: src/gpodder/gtkui/desktop/episodeselector.py:105 msgid "Remove" msgstr "" #: src/gpodder/gtkui/main.py:2969 msgid "Removing podcast" msgstr "" #: src/gpodder/gtkui/main.py:2970 msgid "Please wait while the podcast is removed" msgstr "" #: src/gpodder/gtkui/main.py:2971 msgid "Do you really want to remove this podcast and its episodes?" msgstr "" #: src/gpodder/gtkui/main.py:2973 msgid "Removing podcasts" msgstr "" #: src/gpodder/gtkui/main.py:2974 msgid "Please wait while the podcasts are removed" msgstr "" #: src/gpodder/gtkui/main.py:2975 msgid "Do you really want to remove the selected podcasts and their episodes?" msgstr "" #: src/gpodder/gtkui/main.py:3035 msgid "Please select a podcast in the podcasts list to remove." msgstr "" #: src/gpodder/gtkui/main.py:3045 msgid "OPML files" msgstr "" #: src/gpodder/gtkui/main.py:3050 msgid "Import from OPML" msgstr "" #: src/gpodder/gtkui/main.py:3064 msgid "Import podcasts from OPML file" msgstr "" #: src/gpodder/gtkui/main.py:3071 msgid "Nothing to export" msgstr "" #: src/gpodder/gtkui/main.py:3072 msgid "" "Your list of podcast subscriptions is empty. Please subscribe to some " "podcasts first before trying to export your subscription list." msgstr "" #: src/gpodder/gtkui/main.py:3076 msgid "Export to OPML" msgstr "" #: src/gpodder/gtkui/main.py:3087 #, python-format msgid "%(count)d subscription exported" msgid_plural "%(count)d subscriptions exported" msgstr[0] "" #: src/gpodder/gtkui/main.py:3088 msgid "Your podcast list has been successfully exported." msgstr "" #: src/gpodder/gtkui/main.py:3090 msgid "Could not export OPML to file. Please check your permissions." msgstr "" #: src/gpodder/gtkui/main.py:3090 msgid "OPML export failed" msgstr "" #: src/gpodder/gtkui/main.py:3117 msgid "No updates available" msgstr "" #: src/gpodder/gtkui/main.py:3118 msgid "You have the latest version of gPodder." msgstr "" #: src/gpodder/gtkui/main.py:3122 msgid "New version available" msgstr "" #: src/gpodder/gtkui/main.py:3124 #, python-format msgid "Installed version: %s" msgstr "" #: src/gpodder/gtkui/main.py:3125 #, python-format msgid "Newest version: %s" msgstr "" #: src/gpodder/gtkui/main.py:3126 #, python-format msgid "Release date: %s" msgstr "" #: src/gpodder/gtkui/main.py:3128 msgid "Download the latest version from gpodder.org?" msgstr "" #: src/gpodder/gtkui/main.py:3141 msgid "About gPodder" msgstr "" #: src/gpodder/gtkui/main.py:3424 msgid "Please register a YouTube API key and set it in the preferences." msgstr "" #: src/gpodder/gtkui/main.py:3425 msgid "Would you like to set up an API key now?" msgstr "" #: src/gpodder/gtkui/main.py:3425 msgid "API key required" msgstr "" #: src/gpodder/gtkui/main.py:3444 bin/gpo:631 msgid "No unique URL found" msgstr "" #: src/gpodder/gtkui/main.py:3449 bin/gpo:637 msgid "Already subscribed" msgstr "" #: src/gpodder/gtkui/main.py:3458 bin/gpo:649 #, python-format msgid "Make sure the API key is correct. Error: %(message)s" msgstr "" #: src/gpodder/gtkui/main.py:3459 msgid "Error getting YouTube channels" msgstr "" #: src/gpodder/gtkui/main.py:3462 msgid "Successfully migrated subscriptions" msgstr "" #: src/gpodder/gtkui/main.py:3464 msgid "Subscriptions are up to date" msgstr "" #: src/gpodder/gtkui/main.py:3467 msgid "These URLs failed:" msgstr "" #: src/gpodder/gtkui/main.py:3469 msgid "Could not migrate some subscriptions" msgstr "" #: src/gpodder/gtkui/main.py:3493 msgid "Cannot start gPodder" msgstr "" #: src/gpodder/gtkui/main.py:3494 #, python-format msgid "D-Bus error: %s" msgstr "" #: src/gpodder/gtkui/model.py:68 #, python-format msgid "released %s" msgstr "" #: src/gpodder/gtkui/model.py:69 src/gpodder/gtkui/model.py:87 #: src/gpodder/gtkui/model.py:237 src/gpodder/gtkui/shownotes.py:84 #, python-format msgid "from %s" msgstr "" #: src/gpodder/gtkui/model.py:80 src/gpodder/gtkui/model.py:393 msgid "played" msgstr "" #: src/gpodder/gtkui/model.py:82 msgid "unplayed" msgstr "" #: src/gpodder/gtkui/model.py:85 msgid "today" msgstr "" #: src/gpodder/gtkui/model.py:86 #, python-format msgid "downloaded %s" msgstr "" #: src/gpodder/gtkui/model.py:337 msgid "Deleted" msgstr "" #: src/gpodder/gtkui/model.py:342 msgid "New episode" msgstr "" #: src/gpodder/gtkui/model.py:356 msgid "Downloaded episode" msgstr "" #: src/gpodder/gtkui/model.py:359 msgid "Downloaded video episode" msgstr "" #: src/gpodder/gtkui/model.py:362 msgid "Downloaded image" msgstr "" #: src/gpodder/gtkui/model.py:365 msgid "Downloaded file" msgstr "" #: src/gpodder/gtkui/model.py:380 msgid "missing file" msgstr "" #: src/gpodder/gtkui/model.py:384 msgid "never displayed" msgstr "" #: src/gpodder/gtkui/model.py:386 msgid "never played" msgstr "" #: src/gpodder/gtkui/model.py:388 msgid "never opened" msgstr "" #: src/gpodder/gtkui/model.py:391 msgid "displayed" msgstr "" #: src/gpodder/gtkui/model.py:395 msgid "opened" msgstr "" #: src/gpodder/gtkui/model.py:397 msgid "deletion prevented" msgstr "" #: src/gpodder/gtkui/model.py:432 share/gpodder/ui/gtk/gpodder.ui.h:32 msgid "All episodes" msgstr "" #: src/gpodder/gtkui/model.py:433 msgid "from all podcasts" msgstr "" #: src/gpodder/gtkui/model.py:625 msgid "Subscription paused" msgstr "" #: src/gpodder/gtkui/shownotes.py:118 msgid "Please select an episode" msgstr "" #: src/gpodder/gtkui/interface/addpodcast.py:74 msgid "Nothing to paste." msgstr "" #: src/gpodder/gtkui/interface/addpodcast.py:74 msgid "Clipboard is empty" msgstr "" #: src/gpodder/gtkui/interface/common.py:160 msgid "Username" msgstr "" #: src/gpodder/gtkui/interface/common.py:163 msgid "New user" msgstr "" #: src/gpodder/gtkui/interface/common.py:170 msgid "Login" msgstr "" #: src/gpodder/gtkui/interface/common.py:172 msgid "Authentication required" msgstr "" #: src/gpodder/gtkui/interface/common.py:203 msgid "Password" msgstr "" #: src/gpodder/gtkui/interface/common.py:225 msgid "Select destination" msgstr "" #: src/gpodder/gtkui/interface/configeditor.py:34 msgid "Setting" msgstr "" #: src/gpodder/gtkui/interface/configeditor.py:41 msgid "Set to" msgstr "" #: src/gpodder/gtkui/interface/configeditor.py:81 #, python-format msgid "Cannot set %(field)s to %(value)s. Needed data type: %(datatype)s" msgstr "" #: src/gpodder/gtkui/interface/configeditor.py:85 msgid "Error setting option" msgstr "" #: src/gpodder/gtkui/desktop/channel.py:100 msgid "Add section" msgstr "" #: src/gpodder/gtkui/desktop/channel.py:100 msgid "New section:" msgstr "" #: src/gpodder/gtkui/desktop/channel.py:133 msgid "Select new podcast cover artwork" msgstr "" #: src/gpodder/gtkui/desktop/channel.py:161 msgid "You can only drop a single image or URL here." msgstr "" #: src/gpodder/gtkui/desktop/channel.py:161 #: src/gpodder/gtkui/desktop/channel.py:171 msgid "Drag and drop" msgstr "" #: src/gpodder/gtkui/desktop/channel.py:171 msgid "You can only drop local files and http:// URLs here." msgstr "" #: src/gpodder/gtkui/desktop/deviceplaylist.py:98 #, python-format msgid "Folder %s could not be created." msgstr "" #: src/gpodder/gtkui/desktop/deviceplaylist.py:98 msgid "Error writing playlist" msgstr "" #: src/gpodder/gtkui/desktop/episodeselector.py:288 #: share/gpodder/ui/gtk/gpodderepisodeselector.ui.h:2 msgid "Select all" msgstr "" #: src/gpodder/gtkui/desktop/episodeselector.py:292 #: share/gpodder/ui/gtk/gpodderepisodeselector.ui.h:3 msgid "Select none" msgstr "" #: src/gpodder/gtkui/desktop/episodeselector.py:324 msgid "Nothing selected" msgstr "" #: src/gpodder/gtkui/desktop/episodeselector.py:325 #, python-format msgid "%(count)d episode" msgid_plural "%(count)d episodes" msgstr[0] "" #: src/gpodder/gtkui/desktop/episodeselector.py:327 #, python-format msgid "size: %s" msgstr "" #: src/gpodder/gtkui/desktop/podcastdirectory.py:238 msgid "Loading podcasts" msgstr "" #: src/gpodder/gtkui/desktop/podcastdirectory.py:239 msgid "Please wait while the podcast list is downloaded" msgstr "" #: src/gpodder/gtkui/desktop/preferences.py:51 #: src/gpodder/gtkui/desktop/preferences.py:93 msgid "Do nothing" msgstr "" #: src/gpodder/gtkui/desktop/preferences.py:52 msgid "Show episode list" msgstr "" #: src/gpodder/gtkui/desktop/preferences.py:53 msgid "Add to download list" msgstr "" #: src/gpodder/gtkui/desktop/preferences.py:54 msgid "Download immediately" msgstr "" #: src/gpodder/gtkui/desktop/preferences.py:72 msgid "None" msgstr "" #: src/gpodder/gtkui/desktop/preferences.py:73 msgid "iPod" msgstr "" #: src/gpodder/gtkui/desktop/preferences.py:74 msgid "Filesystem-based" msgstr "" #: src/gpodder/gtkui/desktop/preferences.py:94 msgid "Mark as played" msgstr "" #: src/gpodder/gtkui/desktop/preferences.py:95 msgid "Delete from gPodder" msgstr "" #: src/gpodder/gtkui/desktop/preferences.py:123 #, python-format msgid "Custom (%(format_ids)s)" msgstr "" #: src/gpodder/gtkui/desktop/preferences.py:318 msgid "Name" msgstr "" #: src/gpodder/gtkui/desktop/preferences.py:369 msgid "Documentation" msgstr "" #: src/gpodder/gtkui/desktop/preferences.py:374 msgid "Extension info" msgstr "" #: src/gpodder/gtkui/desktop/preferences.py:379 msgid "Support the author" msgstr "" #: src/gpodder/gtkui/desktop/preferences.py:413 msgid "Extension cannot be activated" msgstr "" #: src/gpodder/gtkui/desktop/preferences.py:426 msgid "Extension module info" msgstr "" #: src/gpodder/gtkui/desktop/preferences.py:463 msgid "Configure audio player" msgstr "" #: src/gpodder/gtkui/desktop/preferences.py:464 #: src/gpodder/gtkui/desktop/preferences.py:474 msgid "Command:" msgstr "" #: src/gpodder/gtkui/desktop/preferences.py:473 msgid "Configure video player" msgstr "" #: src/gpodder/gtkui/desktop/preferences.py:485 #: src/gpodder/gtkui/desktop/preferences.py:503 msgid "manually" msgstr "" #: src/gpodder/gtkui/desktop/preferences.py:505 #, python-format msgid "after %(count)d day" msgid_plural "after %(count)d days" msgstr[0] "" #: src/gpodder/gtkui/desktop/preferences.py:541 msgid "Replace subscription list on server" msgstr "" #: src/gpodder/gtkui/desktop/preferences.py:542 msgid "" "Remote podcasts that have not been added locally will be removed on the " "server. Continue?" msgstr "" #: src/gpodder/gtkui/desktop/preferences.py:621 msgid "Select folder for mount point" msgstr "" #: src/gpodder/gtkui/desktop/preferences.py:638 msgid "Select folder for playlists" msgstr "" #: src/gpodder/gtkui/desktop/sync.py:86 msgid "No device configured" msgstr "" #: src/gpodder/gtkui/desktop/sync.py:87 msgid "Please set up your device in the preferences dialog." msgstr "" #: src/gpodder/gtkui/desktop/sync.py:91 msgid "Cannot open device" msgstr "" #: src/gpodder/gtkui/desktop/sync.py:92 msgid "Please check the settings in the preferences dialog." msgstr "" #: src/gpodder/gtkui/desktop/sync.py:139 msgid "Not enough space left on device" msgstr "" #: src/gpodder/gtkui/desktop/sync.py:140 #, python-format msgid "" "Additional free space required: %(required_space)s\n" "Do you want to continue?" msgstr "" #: src/gpodder/gtkui/desktop/sync.py:199 msgid "Update successful" msgstr "" #: src/gpodder/gtkui/desktop/sync.py:200 msgid "The playlist on your MP3 player has been updated." msgstr "" #: src/gpodder/gtkui/desktop/sync.py:274 msgid "Episodes have been deleted on device" msgstr "" #: src/gpodder/gtkui/desktop/sync.py:285 msgid "Error writing playlist files" msgstr "" #: src/gpodder/plugins/soundcloud.py:154 msgid "Unknown track" msgstr "" #: src/gpodder/plugins/soundcloud.py:181 #, python-format msgid "%s on Soundcloud" msgstr "" #: src/gpodder/plugins/soundcloud.py:190 #, python-format msgid "Tracks published by %s on Soundcloud." msgstr "" #: src/gpodder/plugins/soundcloud.py:217 #, python-format msgid "%s's favorites on Soundcloud" msgstr "" #: src/gpodder/plugins/soundcloud.py:223 #, python-format msgid "Tracks favorited by %s on Soundcloud." msgstr "" #: share/gpodder/extensions/audio_converter.py:20 msgid "Convert audio files" msgstr "" #: share/gpodder/extensions/audio_converter.py:21 msgid "Transcode audio files to mp3/ogg" msgstr "" #: share/gpodder/extensions/audio_converter.py:84 #: share/gpodder/extensions/video_converter.py:86 #, python-format msgid "Convert to %(format)s" msgstr "" #: share/gpodder/extensions/audio_converter.py:111 #: share/gpodder/extensions/rockbox_convert2mp4.py:65 #: share/gpodder/extensions/video_converter.py:111 msgid "File converted" msgstr "" #: share/gpodder/extensions/audio_converter.py:114 #: share/gpodder/extensions/video_converter.py:114 msgid "Conversion failed" msgstr "" #: share/gpodder/extensions/concatenate_videos.py:20 #: share/gpodder/extensions/concatenate_videos.py:100 msgid "Concatenate videos" msgstr "" #: share/gpodder/extensions/concatenate_videos.py:21 msgid "Add a context menu item for concatenating multiple videos" msgstr "" #: share/gpodder/extensions/concatenate_videos.py:37 msgid "Save video" msgstr "" #: share/gpodder/extensions/concatenate_videos.py:66 msgid "Concatenating video files" msgstr "" #: share/gpodder/extensions/concatenate_videos.py:67 #, python-format msgid "Writing %(filename)s" msgstr "" #: share/gpodder/extensions/concatenate_videos.py:78 msgid "Videos successfully converted" msgstr "" #: share/gpodder/extensions/concatenate_videos.py:79 msgid "Error converting videos" msgstr "" #: share/gpodder/extensions/concatenate_videos.py:80 msgid "Concatenation result" msgstr "" #: share/gpodder/extensions/enqueue_in_mediaplayer.py:16 msgid "Enqueue in media players" msgstr "" #: share/gpodder/extensions/enqueue_in_mediaplayer.py:17 msgid "" "Add a context menu item for enqueueing episodes in installed media players" msgstr "" #: share/gpodder/extensions/enqueue_in_mediaplayer.py:35 msgid "Enqueue in" msgstr "" #: share/gpodder/extensions/episode_website_context_menu.py:14 msgid "\"Open website\" episode context menu" msgstr "" #: share/gpodder/extensions/episode_website_context_menu.py:15 msgid "Add a context menu item for opening the website of an episode" msgstr "" #: share/gpodder/extensions/episode_website_context_menu.py:30 msgid "Open website" msgstr "" #: share/gpodder/extensions/gtk_statusicon.py:14 msgid "Gtk Status Icon" msgstr "" #: share/gpodder/extensions/gtk_statusicon.py:15 msgid "Show a status icon for Gtk-based Desktops." msgstr "" #: share/gpodder/extensions/minimize_on_start.py:10 msgid "Minimize on start" msgstr "" #: share/gpodder/extensions/minimize_on_start.py:11 msgid "Minimizes the gPodder window on startup." msgstr "" #: share/gpodder/extensions/mpris-listener.py:33 msgid "MPRIS Listener" msgstr "" #: share/gpodder/extensions/mpris-listener.py:34 msgid "Convert MPRIS notifications to gPodder Media Player D-Bus API" msgstr "" #: share/gpodder/extensions/normalize_audio.py:21 msgid "Normalize audio with re-encoding" msgstr "" #: share/gpodder/extensions/normalize_audio.py:22 msgid "Normalize the volume of audio files with normalize-audio" msgstr "" #: share/gpodder/extensions/normalize_audio.py:99 msgid "File normalized" msgstr "" #: share/gpodder/extensions/rename_download.py:16 msgid "Rename episodes after download" msgstr "" #: share/gpodder/extensions/rename_download.py:17 msgid "Rename episodes to \".\" on download" msgstr "" #: share/gpodder/extensions/rm_ogg_cover.py:37 msgid "Remove cover art from OGG files" msgstr "" #: share/gpodder/extensions/rm_ogg_cover.py:38 msgid "removes coverart from all downloaded ogg files" msgstr "" #: share/gpodder/extensions/rm_ogg_cover.py:66 msgid "Remove cover art" msgstr "" #: share/gpodder/extensions/rockbox_convert2mp4.py:26 msgid "Convert video files to MP4 for Rockbox" msgstr "" #: share/gpodder/extensions/rockbox_convert2mp4.py:27 msgid "Converts all videos to a Rockbox-compatible format" msgstr "" #: share/gpodder/extensions/sonos.py:19 share/gpodder/extensions/sonos.py:78 msgid "Stream to Sonos" msgstr "" #: share/gpodder/extensions/sonos.py:20 msgid "Stream podcasts to Sonos speakers" msgstr "" #: share/gpodder/extensions/tagging.py:45 msgid "Tag downloaded files using Mutagen" msgstr "" #: share/gpodder/extensions/tagging.py:46 msgid "Add episode and podcast titles to MP3/OGG tags" msgstr "" #: share/gpodder/extensions/taskbar_progress.py:28 msgid "Show download progress on the taskbar" msgstr "" #: share/gpodder/extensions/taskbar_progress.py:29 msgid "Displays the progress on the Windows taskbar." msgstr "" #: share/gpodder/extensions/ted_subtitles.py:16 msgid "Subtitle Downloader for TED Talks" msgstr "" #: share/gpodder/extensions/ted_subtitles.py:17 msgid "Downloads .srt subtitles for TED Talks Videos" msgstr "" #: share/gpodder/extensions/ubuntu_appindicator.py:10 msgid "Ubuntu App Indicator" msgstr "" #: share/gpodder/extensions/ubuntu_appindicator.py:11 msgid "Show a status indicator in the top bar." msgstr "" #: share/gpodder/extensions/ubuntu_appindicator.py:47 msgid "Show main window" msgstr "" #: share/gpodder/extensions/ubuntu_appindicator.py:57 #: share/gpodder/ui/gtk/gpodder.ui.h:6 msgid "Quit" msgstr "" #: share/gpodder/extensions/ubuntu_unity.py:10 msgid "Ubuntu Unity Integration" msgstr "" #: share/gpodder/extensions/ubuntu_unity.py:11 msgid "Show download progress in the Unity Launcher icon." msgstr "" #: share/gpodder/extensions/update_feeds_on_startup.py:14 msgid "Search for new episodes on startup" msgstr "" #: share/gpodder/extensions/update_feeds_on_startup.py:15 msgid "Starts the search for new episodes on startup" msgstr "" #: share/gpodder/extensions/video_converter.py:22 msgid "Convert video files" msgstr "" #: share/gpodder/extensions/video_converter.py:23 msgid "Transcode video files to avi/mp4/m4v" msgstr "" #: share/gpodder/ui/gtk/gpodderaddpodcast.ui.h:1 msgid "Add a new podcast" msgstr "" #: share/gpodder/ui/gtk/gpodderaddpodcast.ui.h:2 msgid "URL:" msgstr "" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:1 msgid "gPodder Podcast Editor" msgstr "" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:2 msgid "Section:" msgstr "" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:3 msgid "Disable feed updates (pause subscription)" msgstr "" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:4 msgid "Synchronize to MP3 player devices" msgstr "" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:5 msgid "Strategy:" msgstr "" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:6 #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:6 msgid "General" msgstr "" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:7 msgid "HTTP/FTP Authentication" msgstr "" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:8 #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:13 msgid "Username:" msgstr "" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:9 #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:14 msgid "Password:" msgstr "" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:10 msgid "Locations" msgstr "" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:11 msgid "Download to:" msgstr "" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:12 msgid "Website:" msgstr "" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:13 msgid "website label" msgstr "" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:14 msgid "Advanced" msgstr "" #: share/gpodder/ui/gtk/gpodderconfigeditor.ui.h:1 msgid "gPodder Configuration Editor" msgstr "" #: share/gpodder/ui/gtk/gpodderconfigeditor.ui.h:2 msgid "Search for:" msgstr "" #: share/gpodder/ui/gtk/gpodderconfigeditor.ui.h:3 msgid "Show All" msgstr "" #: share/gpodder/ui/gtk/gpodderepisodeselector.ui.h:1 msgid "Select episodes" msgstr "" #: share/gpodder/ui/gtk/gpodderpodcastdirectory.ui.h:1 msgid "Find new podcasts" msgstr "" #: share/gpodder/ui/gtk/gpodderpodcastdirectory.ui.h:2 msgid "Select All" msgstr "" #: share/gpodder/ui/gtk/gpodderpodcastdirectory.ui.h:3 msgid "Select None" msgstr "" #: share/gpodder/ui/gtk/gpodderpodcastdirectory.ui.h:4 msgid "label" msgstr "" #: share/gpodder/ui/gtk/gpodderpodcastdirectory.ui.h:5 msgid "..." msgstr "" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:1 #: share/gpodder/ui/gtk/gpodder.ui.h:5 msgid "Preferences" msgstr "" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:2 msgid "Audio player:" msgstr "" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:3 msgid "Video player:" msgstr "" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:4 msgid "\"All episodes\" in podcast list" msgstr "" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:5 msgid "Use sections for podcast list" msgstr "" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:7 msgid "Preferred YouTube format:" msgstr "" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:8 msgid "YouTube API key (v3):" msgstr "" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:9 msgid "Preferred Vimeo format:" msgstr "" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:11 msgid "Extensions" msgstr "" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:12 msgid "Synchronize subscriptions and episode actions" msgstr "" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:15 msgid "Replace list on server with local subscriptions" msgstr "" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:16 msgid "Device name:" msgstr "" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:17 msgid "gpodder.net" msgstr "" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:18 msgid "Update interval:" msgstr "" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:19 msgid "Maximum number of episodes per podcast:" msgstr "" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:20 msgid "When new episodes are found:" msgstr "" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:21 msgid "Updating" msgstr "" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:22 msgid "Delete played episodes:" msgstr "" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:23 msgid "Remove played episodes even if unfinished" msgstr "" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:24 msgid "Also remove unplayed episodes" msgstr "" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:25 msgid "Clean-up" msgstr "" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:26 msgid "Device type:" msgstr "" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:27 msgid "Mountpoint:" msgstr "" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:28 msgid "After syncing an episode:" msgstr "" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:29 msgid "Create playlists on device" msgstr "" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:30 msgid "Playlists Folder:" msgstr "" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:31 msgid "Remove episodes deleted on device from gPodder" msgstr "" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:32 msgid "Only sync unplayed episodes" msgstr "" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:33 msgid "Devices" msgstr "" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:34 msgid "Edit config" msgstr "" #: share/gpodder/ui/gtk/gpodder.ui.h:1 msgid "_Podcasts" msgstr "" #: share/gpodder/ui/gtk/gpodder.ui.h:2 msgid "Check for new episodes" msgstr "" #: share/gpodder/ui/gtk/gpodder.ui.h:3 msgid "Download new episodes" msgstr "" #: share/gpodder/ui/gtk/gpodder.ui.h:7 msgid "_Subscriptions" msgstr "" #: share/gpodder/ui/gtk/gpodder.ui.h:8 msgid "Discover new podcasts" msgstr "" #: share/gpodder/ui/gtk/gpodder.ui.h:9 msgid "Add podcast via URL" msgstr "" #: share/gpodder/ui/gtk/gpodder.ui.h:11 msgid "Unsubscribe" msgstr "" #: share/gpodder/ui/gtk/gpodder.ui.h:14 msgid "Import from OPML file" msgstr "" #: share/gpodder/ui/gtk/gpodder.ui.h:15 msgid "Export to OPML file" msgstr "" #: share/gpodder/ui/gtk/gpodder.ui.h:16 msgid "Go to gpodder.net" msgstr "" #: share/gpodder/ui/gtk/gpodder.ui.h:17 msgid "_Episodes" msgstr "" #: share/gpodder/ui/gtk/gpodder.ui.h:18 msgid "Play" msgstr "" #: share/gpodder/ui/gtk/gpodder.ui.h:19 msgid "Open" msgstr "" #: share/gpodder/ui/gtk/gpodder.ui.h:22 msgid "Delete" msgstr "" #: share/gpodder/ui/gtk/gpodder.ui.h:23 msgid "Toggle new status" msgstr "" #: share/gpodder/ui/gtk/gpodder.ui.h:24 msgid "Change delete lock" msgstr "" #: share/gpodder/ui/gtk/gpodder.ui.h:26 msgid "E_xtras" msgstr "" #: share/gpodder/ui/gtk/gpodder.ui.h:27 msgid "Sync to device" msgstr "" #: share/gpodder/ui/gtk/gpodder.ui.h:28 msgid "Update YouTube subscriptions" msgstr "" #: share/gpodder/ui/gtk/gpodder.ui.h:29 msgid "_View" msgstr "" #: share/gpodder/ui/gtk/gpodder.ui.h:30 msgid "Toolbar" msgstr "" #: share/gpodder/ui/gtk/gpodder.ui.h:31 msgid "Episode descriptions" msgstr "" #: share/gpodder/ui/gtk/gpodder.ui.h:33 msgid "Hide deleted episodes" msgstr "" #: share/gpodder/ui/gtk/gpodder.ui.h:34 msgid "Downloaded episodes" msgstr "" #: share/gpodder/ui/gtk/gpodder.ui.h:35 msgid "Unplayed episodes" msgstr "" #: share/gpodder/ui/gtk/gpodder.ui.h:36 msgid "Hide podcasts without episodes" msgstr "" #: share/gpodder/ui/gtk/gpodder.ui.h:37 msgid "_Help" msgstr "" #: share/gpodder/ui/gtk/gpodder.ui.h:38 msgid "User manual" msgstr "" #: share/gpodder/ui/gtk/gpodder.ui.h:39 msgid "Software updates" msgstr "" #: share/gpodder/ui/gtk/gpodder.ui.h:40 msgid "Filter:" msgstr "" #: share/gpodder/ui/gtk/gpodder.ui.h:41 msgid "Podcasts" msgstr "" #: share/gpodder/ui/gtk/gpodder.ui.h:42 msgid "Limit rate to" msgstr "" #: share/gpodder/ui/gtk/gpodder.ui.h:43 msgid "KiB/s" msgstr "" #: share/gpodder/ui/gtk/gpodder.ui.h:44 msgid "Limit downloads to" msgstr "" #: share/gpodder/ui/gtk/gpodderwelcome.ui.h:2 msgid "Welcome to gPodder" msgstr "" #: share/gpodder/ui/gtk/gpodderwelcome.ui.h:3 msgid "Your podcast list is empty." msgstr "" #: share/gpodder/ui/gtk/gpodderwelcome.ui.h:4 msgid "Choose from a list of example podcasts" msgstr "" #: share/gpodder/ui/gtk/gpodderwelcome.ui.h:5 msgid "Add a podcast by entering its URL" msgstr "" #: share/gpodder/ui/gtk/gpodderwelcome.ui.h:6 msgid "Restore my subscriptions from gpodder.net" msgstr "" #: bin/gpo:266 msgid "Podcast update requested by extensions." msgstr "" #: bin/gpo:270 msgid "Episode download requested by extensions." msgstr "" #: bin/gpo:323 #, python-format msgid "Invalid url: %s" msgstr "" #: bin/gpo:340 bin/gpo:416 bin/gpo:450 bin/gpo:582 bin/gpo:597 bin/gpo:717 #, python-format msgid "You are not subscribed to %s." msgstr "" #: bin/gpo:346 #, python-format msgid "Already subscribed to %s." msgstr "" #: bin/gpo:352 #, python-format msgid "Cannot subscribe to %s." msgstr "" #: bin/gpo:368 #, python-format msgid "Successfully added %s." msgstr "" #: bin/gpo:386 msgid "This configuration option does not exist." msgstr "" #: bin/gpo:390 msgid "Can only set leaf configuration nodes." msgstr "" #: bin/gpo:404 #, python-format msgid "Renamed %(old_title)s to %(new_title)s." msgstr "" #: bin/gpo:420 #, python-format msgid "Unsubscribed from %s." msgstr "" #: bin/gpo:494 msgid "Updates disabled" msgstr "" #: bin/gpo:505 #, python-format msgid "%(count)d new episode" msgid_plural "%(count)d new episodes" msgstr[0] "" #: bin/gpo:511 msgid "Checking for new episodes" msgstr "" #: bin/gpo:520 #, python-format msgid "Skipping %(podcast)s" msgstr "" #: bin/gpo:588 #, python-format msgid "Disabling feed update from %s." msgstr "" #: bin/gpo:603 #, python-format msgid "Enabling feed update from %s." msgstr "" #: bin/gpo:616 #, python-format msgid "Please register a YouTube API key and set it using %(command)s." msgstr "" #: bin/gpo:643 #, python-format msgid "Changing: %(old_url)s => %(new_url)s" msgstr "" #: bin/gpo:653 msgid "Nothing to fix" msgstr "" #: bin/gpo:672 msgid "No podcasts found." msgstr "" #: bin/gpo:686 msgid "Enter index to subscribe, ? for list" msgstr "" #: bin/gpo:700 bin/gpo:704 msgid "Invalid value." msgstr "" #: bin/gpo:721 #, python-format msgid "Invalid URL: %s" msgstr "" #: bin/gpo:724 #, python-format msgid "Changed URL from %(old_url)s to %(new_url)s." msgstr "" #: bin/gpo:782 #, python-format msgid "Syntax error: %(error)s" msgstr "" #: bin/gpo:876 msgid "Ambiguous command. Did you mean.." msgstr "" #: bin/gpo:880 msgid "The requested function is not available." msgstr "" #: bin/gpodder:105 msgid "print logging output on the console" msgstr "" #: bin/gpodder:108 msgid "subscribe to the feed at URL" msgstr "" #: bin/gpodder:113 msgid "Mac OS X application process number" msgstr "" #: share/applications/gpodder.desktop.in.h:2 msgid "gPodder Podcast Client" msgstr "" #: share/applications/gpodder.desktop.in.h:3 msgid "Podcast Client" msgstr "" #: share/applications/gpodder.desktop.in.h:4 msgid "Subscribe to audio and video content from the web" msgstr "" #: share/applications/gpodder-url-handler.desktop.in.h:1 msgid "gPodder (subscribe to feed)" msgstr "" gpodder-3.9.0/po/es.po0000644000016000001710000016545312654461625015677 0ustar jenkinsjenkins00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # # Translators: # SimУГ Albert i Beltran , 2012. # Thomas Perl , 2006. msgid "" msgstr "" "Project-Id-Version: gPodder\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2016-02-03 20:31+0000\n" "PO-Revision-Date: 2013-01-19 12:31+0000\n" "Last-Translator: Thomas Perl \n" "Language-Team: Spanish (http://www.transifex.com/projects/p/gpodder/language/" "es/)\n" "Language: es\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" #: src/gpodder/config.py:55 #, python-format msgid "gPodder on %s" msgstr "gPodder en %s" #: src/gpodder/directory.py:95 #, fuzzy msgid "gpodder.net search" msgstr "gpodder.net" #: src/gpodder/directory.py:104 #, fuzzy msgid "OPML from web" msgstr "Archivos OPML" #: src/gpodder/directory.py:113 #, fuzzy msgid "OPML file" msgstr "Archivos OPML" #: src/gpodder/directory.py:122 share/gpodder/ui/gtk/gpodderwelcome.ui.h:1 #, fuzzy msgid "Getting started" msgstr "ConfiguraciУГn" #: src/gpodder/directory.py:131 #, fuzzy msgid "gpodder.net Top 50" msgstr "gpodder.net" #: src/gpodder/directory.py:140 #, fuzzy msgid "gpodder.net Tags" msgstr "gpodder.net" #: src/gpodder/directory.py:152 #, fuzzy msgid "Soundcloud search" msgstr "%s en Soundcloud" #: src/gpodder/directory.py:165 #, fuzzy msgid "Imported OPML file" msgstr "Importar de OPML" #: src/gpodder/download.py:329 msgid "Wrong username/password" msgstr "Nombre de usuario/contraseУБa incorrectos" #: src/gpodder/download.py:527 src/gpodder/sync.py:924 msgid "Added" msgstr "Agregado" #: src/gpodder/download.py:527 src/gpodder/sync.py:924 msgid "Queued" msgstr "Puesto en cola" #: src/gpodder/download.py:527 src/gpodder/gtkui/model.py:327 msgid "Downloading" msgstr "Descargando" #: src/gpodder/download.py:528 src/gpodder/model.py:721 #: src/gpodder/sync.py:925 msgid "Finished" msgstr "Terminado" #: src/gpodder/download.py:528 src/gpodder/sync.py:925 msgid "Failed" msgstr "Fallado" #: src/gpodder/download.py:528 src/gpodder/sync.py:925 msgid "Cancelled" msgstr "Cancelado" #: src/gpodder/download.py:528 src/gpodder/sync.py:925 msgid "Paused" msgstr "Pausado" #: src/gpodder/download.py:862 msgid "Missing content from server" msgstr "Falta contenido en el servidor" #: src/gpodder/download.py:868 #, python-format msgid "I/O Error: %(error)s: %(filename)s" msgstr "Error de Entrada/Salida: %(error)s: %(filename)s" #: src/gpodder/download.py:875 #, python-format msgid "HTTP Error %(code)s: %(message)s" msgstr "Error HTTP %(code)s: %(message)s" #: src/gpodder/download.py:879 src/gpodder/sync.py:1081 #, python-format msgid "Error: %s" msgstr "Error: %s" #: src/gpodder/extensions.py:55 #, fuzzy msgid "Desktop Integration" msgstr "IntegraciУГn con Ubuntu Unity" #: src/gpodder/extensions.py:56 #, fuzzy msgid "Interface" msgstr "Entero" #: src/gpodder/extensions.py:57 #, fuzzy msgid "Post download" msgstr "Cancelar descarga" #: src/gpodder/extensions.py:59 src/gpodder/model.py:779 #: src/gpodder/model.py:1225 msgid "Other" msgstr "Otro" #: src/gpodder/extensions.py:100 msgid "No description for this extension." msgstr "No hay descripciУГn para esta extensiУГn." #: src/gpodder/extensions.py:212 #, fuzzy, python-format msgid "Command not found: %(command)s" msgstr "Comando de usuario no encontrado" #: src/gpodder/extensions.py:228 #, python-format msgid "Need at least one of the following commands: %(list_of_commands)s" msgstr "" #: src/gpodder/extensions.py:265 #, fuzzy, python-format msgid "Python module not found: %(module)s" msgstr "MУГdulo python \"%s\" no instalado" #: src/gpodder/model.py:446 src/gpodder/plugins/soundcloud.py:156 msgid "No description available" msgstr "No hay una descripciУГn disponible" #: src/gpodder/model.py:679 msgid "unknown" msgstr "desconocido" #: src/gpodder/model.py:746 #, fuzzy msgid "Default" msgstr "Color predeterminado" #: src/gpodder/model.py:747 msgid "Only keep latest" msgstr "" #: src/gpodder/model.py:1208 src/gpodder/model.py:1223 #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:10 msgid "Video" msgstr "VУ­deo" #: src/gpodder/model.py:1221 msgid "Audio" msgstr "Audio" #: src/gpodder/my.py:174 #, python-format msgid "Add %s" msgstr "AУБadir %s" #: src/gpodder/my.py:176 #, python-format msgid "Remove %s" msgstr "Eliminar %s" #: src/gpodder/sync.py:196 msgid "Cancelled by user" msgstr "Cancelado por el usuario" #: src/gpodder/sync.py:199 msgid "Writing data to disk" msgstr "Escribiendo datos al disco" #: src/gpodder/sync.py:295 msgid "Opening iPod database" msgstr "Abriendo base de datos del iPod" #: src/gpodder/sync.py:305 msgid "iPod opened" msgstr "iPod abierto" #: src/gpodder/sync.py:316 msgid "Saving iPod database" msgstr "Guardando la base de datos del iPod" #: src/gpodder/sync.py:321 msgid "Writing extended gtkpod database" msgstr "Escribiendo base de datos extendida de gtkpod" #: src/gpodder/sync.py:397 src/gpodder/sync.py:680 src/gpodder/sync.py:874 #, python-format msgid "Removing %s" msgstr "Eliminando %s" #: src/gpodder/sync.py:412 src/gpodder/sync.py:557 #, python-format msgid "Adding %s" msgstr "AУБadiendo %s" #: src/gpodder/sync.py:430 #, python-format msgid "Error copying %(episode)s: Not enough free space on %(mountpoint)s" msgstr "" "Error al copiar %(episode)s: No hay suficiente espacio en %(mountpoint)s" #: src/gpodder/sync.py:515 msgid "Opening MP3 player" msgstr "Abriendo reproductor MP3" #: src/gpodder/sync.py:518 msgid "MP3 player opened" msgstr "reproductor MP3 abierto" #: src/gpodder/sync.py:576 #, python-format msgid "" "Not enough space in %(path)s: %(free)s available, but need at least %(need)s" msgstr "" #: src/gpodder/sync.py:603 src/gpodder/sync.py:611 #, python-format msgid "Error opening %(filename)s: %(message)s" msgstr "Error al abrir %(filename)s: %(message)s" #: src/gpodder/sync.py:780 src/gpodder/sync.py:786 msgid "MTP device" msgstr "Dispositivo MTP" #: src/gpodder/sync.py:793 msgid "Opening the MTP device" msgstr "Abriendo el dispositivo MTP" #: src/gpodder/sync.py:803 #, python-format msgid "%s opened" msgstr "%s abierto" #: src/gpodder/sync.py:808 #, python-format msgid "Closing %s" msgstr "Cerrando %s" #: src/gpodder/sync.py:816 #, python-format msgid "%s closed" msgstr "%s cerrado" #: src/gpodder/sync.py:821 bin/gpo:708 #, python-format msgid "Adding %s..." msgstr "AУБadiendo %s..." #: src/gpodder/sync.py:924 #, fuzzy msgid "Synchronizing" msgstr "SincronizaciУГn" #: src/gpodder/util.py:429 #, python-format msgid "%(count)d day ago" msgid_plural "%(count)d days ago" msgstr[0] "Hace %(count)d dУ­a" msgstr[1] "Hace %(count)d dУ­as" #: src/gpodder/util.py:508 msgid "Today" msgstr "Hoy" #: src/gpodder/util.py:510 msgid "Yesterday" msgstr "Ayer" #: src/gpodder/util.py:553 src/gpodder/util.py:556 msgid "(unknown)" msgstr "(desconocido)" #: src/gpodder/util.py:1193 src/gpodder/util.py:1212 #, python-format msgid "%(count)d second" msgid_plural "%(count)d seconds" msgstr[0] "%(count)d segundo" msgstr[1] "%(count)d segundos" #: src/gpodder/util.py:1206 #, python-format msgid "%(count)d hour" msgid_plural "%(count)d hours" msgstr[0] "%(count)d hora" msgstr[1] "%(count)d horas" #: src/gpodder/util.py:1209 #, python-format msgid "%(count)d minute" msgid_plural "%(count)d minutes" msgstr[0] "%(count)d minuto" msgstr[1] "%(count)d minutos" #: src/gpodder/util.py:1215 msgid "and" msgstr "y" #: src/gpodder/gtkui/config.py:50 msgid "Integer" msgstr "Entero" #: src/gpodder/gtkui/config.py:52 msgid "Float" msgstr "Flotante" #: src/gpodder/gtkui/config.py:54 msgid "Boolean" msgstr "Booleano" #: src/gpodder/gtkui/config.py:56 msgid "String" msgstr "Cadena" #: src/gpodder/gtkui/desktopfile.py:70 #, python-format msgid "Command: %s" msgstr "Comando: %s" #: src/gpodder/gtkui/desktopfile.py:150 msgid "Default application" msgstr "AplicaciУГn por defecto" #: src/gpodder/gtkui/main.py:205 share/applications/gpodder.desktop.in.h:1 msgid "gPodder" msgstr "gPodder" #: src/gpodder/gtkui/main.py:288 msgid "Loading incomplete downloads" msgstr "Cargando descargas incompletas" #: src/gpodder/gtkui/main.py:289 msgid "Some episodes have not finished downloading in a previous session." msgstr "Algunos capУ­tulos no terminaron de bajarse en una sesiУГn previa." #: src/gpodder/gtkui/main.py:291 #, python-format msgid "%(count)d partial file" msgid_plural "%(count)d partial files" msgstr[0] "%(count)d archivo parcial" msgstr[1] "%(count)d archivos parciales" #: src/gpodder/gtkui/main.py:306 msgid "Resume all" msgstr "Terminar todas" #: src/gpodder/gtkui/main.py:316 msgid "Incomplete downloads from a previous session were found." msgstr "Se encontraron descargas incompletas de una sesiУГn anterior." #: src/gpodder/gtkui/main.py:414 msgid "Action" msgstr "AcciУГn" #: src/gpodder/gtkui/main.py:461 msgid "Confirm changes from gpodder.net" msgstr "Confirmar cambios desde gpodder.net" #: src/gpodder/gtkui/main.py:462 msgid "Select the actions you want to carry out." msgstr "Seleccione las acciones que desea llevar a cabo." #: src/gpodder/gtkui/main.py:502 msgid "Uploading subscriptions" msgstr "Subiendo suscripciones" #: src/gpodder/gtkui/main.py:503 msgid "Your subscriptions are being uploaded to the server." msgstr "Tu lista de suscripciones estУЁ siendo subida al servidor." #: src/gpodder/gtkui/main.py:508 msgid "List uploaded successfully." msgstr "Lista subida con УЉxito." #: src/gpodder/gtkui/main.py:515 msgid "Error while uploading" msgstr "Error subiendo" #: src/gpodder/gtkui/main.py:800 src/gpodder/gtkui/main.py:928 #: src/gpodder/gtkui/main.py:2622 src/gpodder/gtkui/main.py:2815 #: src/gpodder/gtkui/desktop/episodeselector.py:132 #: src/gpodder/gtkui/desktop/sync.py:270 msgid "Episode" msgstr "CapУ­tulo" #: src/gpodder/gtkui/main.py:819 msgid "Size" msgstr "TamaУБo" #: src/gpodder/gtkui/main.py:824 msgid "Duration" msgstr "DuraciУГn" #: src/gpodder/gtkui/main.py:828 msgid "Released" msgstr "Fecha de lanzamiento" #: src/gpodder/gtkui/main.py:855 msgid "Visible columns" msgstr "Columnas visibles" #: src/gpodder/gtkui/main.py:948 src/gpodder/gtkui/main.py:1108 #: share/gpodder/ui/gtk/gpodder.ui.h:45 msgid "Progress" msgstr "Progreso" #: src/gpodder/gtkui/main.py:982 msgid "Loading episodes" msgstr "Cargando capУ­tulos" #: src/gpodder/gtkui/main.py:985 msgid "No episodes in current view" msgstr "No hay capУ­tulos en la vista actual" #: src/gpodder/gtkui/main.py:987 msgid "No episodes available" msgstr "No hay capУ­tulos disponibles" #: src/gpodder/gtkui/main.py:993 msgid "No podcasts in this view" msgstr "No hay podcasts en esta vista" #: src/gpodder/gtkui/main.py:995 msgid "No subscriptions" msgstr "No hay suscripciones" #: src/gpodder/gtkui/main.py:997 #, fuzzy msgid "No active tasks" msgstr "No hay descargas activas" #: src/gpodder/gtkui/main.py:1112 src/gpodder/gtkui/main.py:1114 #, python-format msgid "%(count)d active" msgid_plural "%(count)d active" msgstr[0] "%(count)d activa" msgstr[1] "%(count)d activas" #: src/gpodder/gtkui/main.py:1116 #, python-format msgid "%(count)d failed" msgid_plural "%(count)d failed" msgstr[0] "%(count)d fallida" msgstr[1] "%(count)d fallidas" #: src/gpodder/gtkui/main.py:1118 #, python-format msgid "%(count)d queued" msgid_plural "%(count)d queued" msgstr[0] "%(count)d en cola" msgstr[1] "%(count)d en cola" #: src/gpodder/gtkui/main.py:1132 #, python-format msgid "downloading %(count)d file" msgid_plural "downloading %(count)d files" msgstr[0] "descargando %(count)d archivo" msgstr[1] "descargando %(count)d archivos" #: src/gpodder/gtkui/main.py:1142 #, python-format msgid "synchronizing %(count)d file" msgid_plural "synchronizing %(count)d files" msgstr[0] "" msgstr[1] "" #: src/gpodder/gtkui/main.py:1144 #, python-format msgid "%(queued)d task queued" msgid_plural "%(queued)d tasks queued" msgstr[0] "" msgstr[1] "" #: src/gpodder/gtkui/main.py:1168 msgid "Please report this problem and restart gPodder:" msgstr "Por favor notifique sobre este problema y reinicie gPodder:" #: src/gpodder/gtkui/main.py:1168 msgid "Unhandled exception" msgstr "ExcepciУГn no capturada" #: src/gpodder/gtkui/main.py:1235 #, python-format msgid "Feedparser error: %s" msgstr "Error al procesar feeds RSS: %s" #: src/gpodder/gtkui/main.py:1371 #, fuzzy msgid "Could not download some episodes:" msgstr "No se pudo agregar algunas podcasts" #: src/gpodder/gtkui/main.py:1373 src/gpodder/gtkui/main.py:1376 msgid "Downloads finished" msgstr "Descargas finalizadas" #: src/gpodder/gtkui/main.py:1379 msgid "Downloads failed" msgstr "Descargas fallidas" #: src/gpodder/gtkui/main.py:1383 #, fuzzy msgid "Could not sync some episodes:" msgstr "No se pudo agregar algunas podcasts" #: src/gpodder/gtkui/main.py:1385 src/gpodder/gtkui/main.py:1388 #, fuzzy msgid "Device synchronization finished" msgstr "SincronizaciУГn finalizada" #: src/gpodder/gtkui/main.py:1391 #, fuzzy msgid "Device synchronization failed" msgstr "Dispositivo sincronizado" #: src/gpodder/gtkui/main.py:1434 #, python-format msgid "%(count)d more episode" msgid_plural "%(count)d more episodes" msgstr[0] "%(count)d episodio mУЁs" msgstr[1] "%(count)d episodios mУЁs" #: src/gpodder/gtkui/main.py:1508 msgid "Start download now" msgstr "Comenzar descargas ahora" #: src/gpodder/gtkui/main.py:1510 src/gpodder/gtkui/main.py:1719 #: src/gpodder/gtkui/desktop/episodeselector.py:144 #: share/gpodder/ui/gtk/gpodder.ui.h:20 msgid "Download" msgstr "Descarga" #: src/gpodder/gtkui/main.py:1511 share/gpodder/ui/gtk/gpodder.ui.h:21 msgid "Cancel" msgstr "Cancelar" #: src/gpodder/gtkui/main.py:1512 msgid "Pause" msgstr "Pausa" #: src/gpodder/gtkui/main.py:1514 msgid "Remove from list" msgstr "Eliminar de la lista" #: src/gpodder/gtkui/main.py:1553 share/gpodder/ui/gtk/gpodder.ui.h:13 msgid "Update podcast" msgstr "Actualizar podcast seleccionado" #: src/gpodder/gtkui/main.py:1560 msgid "Open download folder" msgstr "Abrir directorio de descarga" #: src/gpodder/gtkui/main.py:1566 msgid "Mark episodes as old" msgstr "Marcar episodios como antiguos" #: src/gpodder/gtkui/main.py:1570 src/gpodder/gtkui/main.py:1778 msgid "Archive" msgstr "Archivar" #: src/gpodder/gtkui/main.py:1575 msgid "Remove podcast" msgstr "Eliminar podcast" #: src/gpodder/gtkui/main.py:1590 share/gpodder/ui/gtk/gpodder.ui.h:10 msgid "Podcast settings" msgstr "Podcasts" #: src/gpodder/gtkui/main.py:1650 msgid "Error converting file." msgstr "Error al convertir archivo." #: src/gpodder/gtkui/main.py:1650 msgid "Bluetooth file transfer" msgstr "Transferencia de archivos por Bluetooth" #: src/gpodder/gtkui/main.py:1709 msgid "Preview" msgstr "PrevisualizaciУГn" #: src/gpodder/gtkui/main.py:1711 msgid "Stream" msgstr "Stream" #: src/gpodder/gtkui/main.py:1755 msgid "Send to" msgstr "Enviar a" #: src/gpodder/gtkui/main.py:1757 msgid "Local folder" msgstr "Carpeta local" #: src/gpodder/gtkui/main.py:1762 msgid "Bluetooth device" msgstr "Dispositivo bluetooth" #: src/gpodder/gtkui/main.py:1769 msgid "New" msgstr "Nuevo" #: src/gpodder/gtkui/main.py:1785 share/gpodder/ui/gtk/gpodder.ui.h:25 msgid "Episode details" msgstr "Detalles del capУ­tulo" #: src/gpodder/gtkui/main.py:1938 msgid "Please check your media player settings in the preferences dialog." msgstr "" "Por favor verifique los ajustes de su reproductor en el dialogo de " "preferencias." #: src/gpodder/gtkui/main.py:1939 msgid "Error opening player" msgstr "Error al abrir reproductor" #: src/gpodder/gtkui/main.py:2178 msgid "Adding podcasts" msgstr "Agregando podcasts" #: src/gpodder/gtkui/main.py:2179 msgid "Please wait while episode information is downloaded." msgstr "Por favor espere mientras se descarga informaciУГn del capУ­tulo." #: src/gpodder/gtkui/main.py:2186 msgid "Existing subscriptions skipped" msgstr "SubscripciУГn existente omitida" #: src/gpodder/gtkui/main.py:2187 msgid "You are already subscribed to these podcasts:" msgstr "Ya estУЁs suscrito a estas podcasts:" #: src/gpodder/gtkui/main.py:2195 msgid "Podcast requires authentication" msgstr "El podcast requiere autenticaciУГn" #: src/gpodder/gtkui/main.py:2196 #, python-format msgid "Please login to %s:" msgstr "Por favor inicie sesiУГn en %s:" #: src/gpodder/gtkui/main.py:2204 src/gpodder/gtkui/main.py:2299 msgid "Authentication failed" msgstr "Ha fallado la autenticaciУГn" #: src/gpodder/gtkui/main.py:2210 msgid "Website redirection detected" msgstr "RedirecciУГn de sitio web detectada" #: src/gpodder/gtkui/main.py:2211 #, python-format msgid "The URL %(url)s redirects to %(target)s." msgstr "La URL %(url)s redirige a %(target)s." #: src/gpodder/gtkui/main.py:2212 msgid "Do you want to visit the website now?" msgstr "ТПQuiere visitar el sitio web ahora?" #: src/gpodder/gtkui/main.py:2221 msgid "Could not add some podcasts" msgstr "No se pudo agregar algunas podcasts" #: src/gpodder/gtkui/main.py:2222 msgid "Some podcasts could not be added to your list:" msgstr "Algunos podcasts no pudieron ser agregados a su lista." #: src/gpodder/gtkui/main.py:2224 msgid "Unknown" msgstr "Desconocido" #: src/gpodder/gtkui/main.py:2308 msgid "Redirection detected" msgstr "RedirecciУГn detectada" #: src/gpodder/gtkui/main.py:2342 msgid "Merging episode actions" msgstr "Fusionando acciones de episodio" #: src/gpodder/gtkui/main.py:2343 msgid "Episode actions from gpodder.net are merged." msgstr "Acciones de episodio de gpodder.net se fusionaron." #: src/gpodder/gtkui/main.py:2368 msgid "Cancelling..." msgstr "Cancelando..." #: src/gpodder/gtkui/main.py:2377 msgid "Please connect to a network, then try again." msgstr "" #: src/gpodder/gtkui/main.py:2378 #, fuzzy msgid "No network connection" msgstr "Nuevo nombre:" #: src/gpodder/gtkui/main.py:2399 #, python-format msgid "Updating %(count)d feed..." msgid_plural "Updating %(count)d feeds..." msgstr[0] "Actualizando %(count)d fuente..." msgstr[1] "Actualizando %(count)d fuentes..." #: src/gpodder/gtkui/main.py:2417 #, python-format msgid "Error while updating %(url)s: %(message)s" msgstr "Error al actualizar %(url)s: %(message)s" #: src/gpodder/gtkui/main.py:2419 #, python-format msgid "The feed at %(url)s could not be updated." msgstr "El RSS en %(url)s no pudo ser actualizado." #: src/gpodder/gtkui/main.py:2420 msgid "Error while updating feed" msgstr "Error actualizando podcast" #: src/gpodder/gtkui/main.py:2435 #, python-format msgid "Updated %(podcast)s (%(position)d/%(total)d)" msgstr "Actualizado %(podcast)s (%(position)d/%(total)d)" #: src/gpodder/gtkui/main.py:2466 msgid "No new episodes" msgstr "No hay nuevos capУ­tulos" #: src/gpodder/gtkui/main.py:2479 #, python-format msgid "Downloading %(count)d new episode." msgid_plural "Downloading %(count)d new episodes." msgstr[0] "Descargando %(count)d episodio nuevo." msgstr[1] "Descargando %(count)d episodios nuevos." #: src/gpodder/gtkui/main.py:2480 src/gpodder/gtkui/main.py:2484 #: src/gpodder/gtkui/main.py:2833 msgid "New episodes available" msgstr "Nuevos capУ­tulos disponibles" #: src/gpodder/gtkui/main.py:2483 #, python-format msgid "%(count)d new episode added to download list." msgid_plural "%(count)d new episodes added to download list." msgstr[0] "%(count)d episodio nuevo aУБadido a la lista de descargas." msgstr[1] "%(count)d episodios nuevos aУБadidos a la lista de descargas." #: src/gpodder/gtkui/main.py:2490 #, python-format msgid "%(count)d new episode available" msgid_plural "%(count)d new episodes available" msgstr[0] "%(count)d nuevo episodio disponible" msgstr[1] "%(count)d nuevos episodios disponibles" #: src/gpodder/gtkui/main.py:2509 msgid "Quit gPodder" msgstr "Salir de gPodder" #: src/gpodder/gtkui/main.py:2510 msgid "" "You are downloading episodes. You can resume downloads the next time you " "start gPodder. Do you want to quit now?" msgstr "CapУ­tulos estУЁn siendo descargados." #: src/gpodder/gtkui/main.py:2559 msgid "Episodes are locked" msgstr "Los capУ­tulos estУЁn bloqueados" #: src/gpodder/gtkui/main.py:2560 msgid "" "The selected episodes are locked. Please unlock the episodes that you want " "to delete before trying to delete them." msgstr "" "Los capУ­tulos seleccionados estУЁn bloqueados. Por favor desbloquea los " "capУ­tulos que quieres borrar antes de intentar borrarlos." #: src/gpodder/gtkui/main.py:2565 #, python-format msgid "Delete %(count)d episode?" msgid_plural "Delete %(count)d episodes?" msgstr[0] "ТПEliminar %(count)d episodio?" msgstr[1] "ТПEliminar %(count)d episodios?" #: src/gpodder/gtkui/main.py:2566 msgid "Deleting episodes removes downloaded files." msgstr "Eliminar podcasts elimina tambiУЉn capУ­tulos descargados." #: src/gpodder/gtkui/main.py:2571 msgid "Deleting episodes" msgstr "Borrando capУ­tulos" #: src/gpodder/gtkui/main.py:2572 msgid "Please wait while episodes are deleted" msgstr "Por favor espere mientras se borran los capУ­tulos" #: src/gpodder/gtkui/main.py:2625 #, python-format msgid "Select older than %(count)d day" msgid_plural "Select older than %(count)d days" msgstr[0] "Seleccionar anteriores a %(count)d dУ­a" msgstr[1] "Seleccionar anteriores a %(count)d dУ­as" #: src/gpodder/gtkui/main.py:2627 msgid "Select played" msgstr "Seleccionar reproducidos" #: src/gpodder/gtkui/main.py:2628 msgid "Select finished" msgstr "Seleccionar finalizados" #: src/gpodder/gtkui/main.py:2632 msgid "Select the episodes you want to delete:" msgstr "Seleccione los capУ­tulos que desea eliminar:" #: src/gpodder/gtkui/main.py:2648 share/gpodder/ui/gtk/gpodder.ui.h:4 msgid "Delete episodes" msgstr "Borrar capУ­tulos" #: src/gpodder/gtkui/main.py:2703 src/gpodder/gtkui/main.py:2934 #: src/gpodder/gtkui/main.py:3034 msgid "No podcast selected" msgstr "NingУКn podcast seleccionado" #: src/gpodder/gtkui/main.py:2704 msgid "Please select a podcast in the podcasts list to update." msgstr "Por favor, seleccione un podcast de la lista para actualizar." #: src/gpodder/gtkui/main.py:2774 #, python-format msgid "Download error while downloading %(episode)s: %(message)s" msgstr "Error al bajar %(episode)s: %(message)s" #: src/gpodder/gtkui/main.py:2775 msgid "Download error" msgstr "Error de descarga" #: src/gpodder/gtkui/main.py:2818 msgid "Select the episodes you want to download:" msgstr "Seleccione los capУ­tulos que desea descargar:" #: src/gpodder/gtkui/main.py:2841 msgid "Mark as old" msgstr "Marcar como viejo" #: src/gpodder/gtkui/main.py:2848 msgid "Please check for new episodes later." msgstr "Por favor, busque nuevos capУ­tulos mУЁs tarde." #: src/gpodder/gtkui/main.py:2849 msgid "No new episodes available" msgstr "No hay nuevos capУ­tulos disponibles" #: src/gpodder/gtkui/main.py:2900 msgid "Login to gpodder.net" msgstr "Ingresar a su cuenta en gpodder.net" #: src/gpodder/gtkui/main.py:2901 msgid "Please login to download your subscriptions." msgstr "Por favor ingrese a su cuenta para bajar sus suscripciones" #: src/gpodder/gtkui/main.py:2916 msgid "Subscriptions on gpodder.net" msgstr "Suscripciones en gpodder.net" #: src/gpodder/gtkui/main.py:2935 msgid "Please select a podcast in the podcasts list to edit." msgstr "Por favor, seleccione un podcast de la lista para editar." #: src/gpodder/gtkui/main.py:2949 msgid "Podcast" msgstr "Podcast" #: src/gpodder/gtkui/main.py:2955 share/gpodder/ui/gtk/gpodder.ui.h:12 msgid "Remove podcasts" msgstr "Eliminar podcast" #: src/gpodder/gtkui/main.py:2956 msgid "Select the podcast you want to remove." msgstr "Seleccione el podcast que desea eliminar." #: src/gpodder/gtkui/main.py:2960 #: src/gpodder/gtkui/desktop/episodeselector.py:105 msgid "Remove" msgstr "Eliminar" #: src/gpodder/gtkui/main.py:2969 msgid "Removing podcast" msgstr "Eliminando podcast" #: src/gpodder/gtkui/main.py:2970 msgid "Please wait while the podcast is removed" msgstr "Por favor, espere mientras se elimina el podcast" #: src/gpodder/gtkui/main.py:2971 msgid "Do you really want to remove this podcast and its episodes?" msgstr "ТПRealmente desea eliminar este podcast y sus capУ­tulos?" #: src/gpodder/gtkui/main.py:2973 msgid "Removing podcasts" msgstr "Eliminando podcasts" #: src/gpodder/gtkui/main.py:2974 msgid "Please wait while the podcasts are removed" msgstr "Por favor, espere mientras se eliminan los podcasts" #: src/gpodder/gtkui/main.py:2975 msgid "Do you really want to remove the selected podcasts and their episodes?" msgstr "ТПRealmente desea eliminar los podcasts seleccionados y sus capУ­tulos?" #: src/gpodder/gtkui/main.py:3035 msgid "Please select a podcast in the podcasts list to remove." msgstr "Por favor, seleccione un podcast de la lista para eliminar." #: src/gpodder/gtkui/main.py:3045 msgid "OPML files" msgstr "Archivos OPML" #: src/gpodder/gtkui/main.py:3050 msgid "Import from OPML" msgstr "Importar de OPML" #: src/gpodder/gtkui/main.py:3064 msgid "Import podcasts from OPML file" msgstr "Importar podcasts de un archivo OPML" #: src/gpodder/gtkui/main.py:3071 msgid "Nothing to export" msgstr "Nada que exportar" #: src/gpodder/gtkui/main.py:3072 msgid "" "Your list of podcast subscriptions is empty. Please subscribe to some " "podcasts first before trying to export your subscription list." msgstr "" "Tu lista de suscripciones estУЁ vacУ­a. Por favor suscrУ­bete a algУКn podcast " "antes de exportar tu lista de suscripciones." #: src/gpodder/gtkui/main.py:3076 msgid "Export to OPML" msgstr "Exportar a OPML" #: src/gpodder/gtkui/main.py:3087 #, python-format msgid "%(count)d subscription exported" msgid_plural "%(count)d subscriptions exported" msgstr[0] "%(count)d suscripciУГn exportada" msgstr[1] "%(count)d suscripciones exportadas" #: src/gpodder/gtkui/main.py:3088 msgid "Your podcast list has been successfully exported." msgstr "Su lista de podcasts ha sido exportada de manera exitosa." #: src/gpodder/gtkui/main.py:3090 msgid "Could not export OPML to file. Please check your permissions." msgstr "No se puede exportar OPML a fichero. Por favor verifica tus permisos." #: src/gpodder/gtkui/main.py:3090 msgid "OPML export failed" msgstr "Fallo al exportar a OPML" #: src/gpodder/gtkui/main.py:3117 #, fuzzy msgid "No updates available" msgstr "No hay capУ­tulos disponibles" #: src/gpodder/gtkui/main.py:3118 msgid "You have the latest version of gPodder." msgstr "" #: src/gpodder/gtkui/main.py:3122 #, fuzzy msgid "New version available" msgstr "Nuevo capУ­tulo disponible" #: src/gpodder/gtkui/main.py:3124 #, python-format msgid "Installed version: %s" msgstr "" #: src/gpodder/gtkui/main.py:3125 #, fuzzy, python-format msgid "Newest version: %s" msgstr "Borrando: %s" #: src/gpodder/gtkui/main.py:3126 #, fuzzy, python-format msgid "Release date: %s" msgstr "publicado: %s" #: src/gpodder/gtkui/main.py:3128 #, fuzzy msgid "Download the latest version from gpodder.org?" msgstr "Descargar mis suscripciones desde gpodder.net" #: src/gpodder/gtkui/main.py:3141 msgid "About gPodder" msgstr "Acerca de gPodder" #: src/gpodder/gtkui/main.py:3424 #, fuzzy msgid "Please register a YouTube API key and set it in the preferences." msgstr "Por favor, configurar el dispositivo en el diУЁlogo de preferencias." #: src/gpodder/gtkui/main.py:3425 msgid "Would you like to set up an API key now?" msgstr "" #: src/gpodder/gtkui/main.py:3425 msgid "API key required" msgstr "" #: src/gpodder/gtkui/main.py:3444 bin/gpo:631 #, fuzzy msgid "No unique URL found" msgstr "No se encontraron canales" #: src/gpodder/gtkui/main.py:3449 bin/gpo:637 #, fuzzy msgid "Already subscribed" msgstr "No se puede suscribir a %s." #: src/gpodder/gtkui/main.py:3458 bin/gpo:649 #, python-format msgid "Make sure the API key is correct. Error: %(message)s" msgstr "" #: src/gpodder/gtkui/main.py:3459 #, fuzzy msgid "Error getting YouTube channels" msgstr "Error aplicando la opciУГn" #: src/gpodder/gtkui/main.py:3462 #, fuzzy msgid "Successfully migrated subscriptions" msgstr "%s adicionado con УЉxito." #: src/gpodder/gtkui/main.py:3464 #, fuzzy msgid "Subscriptions are up to date" msgstr "SuscripciУГn en pausa" #: src/gpodder/gtkui/main.py:3467 msgid "These URLs failed:" msgstr "" #: src/gpodder/gtkui/main.py:3469 #, fuzzy msgid "Could not migrate some subscriptions" msgstr "No se pudo agregar algunas podcasts" #: src/gpodder/gtkui/main.py:3493 msgid "Cannot start gPodder" msgstr "No se puede iniciar gPodder" #: src/gpodder/gtkui/main.py:3494 #, python-format msgid "D-Bus error: %s" msgstr "Error D-Bus: %s" #: src/gpodder/gtkui/model.py:68 #, python-format msgid "released %s" msgstr "publicado %s" #: src/gpodder/gtkui/model.py:69 src/gpodder/gtkui/model.py:87 #: src/gpodder/gtkui/model.py:237 src/gpodder/gtkui/shownotes.py:84 #, python-format msgid "from %s" msgstr "de %s" #: src/gpodder/gtkui/model.py:80 src/gpodder/gtkui/model.py:393 msgid "played" msgstr "escuchado" #: src/gpodder/gtkui/model.py:82 msgid "unplayed" msgstr "sin escuchar" #: src/gpodder/gtkui/model.py:85 msgid "today" msgstr "hoy" #: src/gpodder/gtkui/model.py:86 #, python-format msgid "downloaded %s" msgstr "%s descargado" #: src/gpodder/gtkui/model.py:337 msgid "Deleted" msgstr "Borrar" #: src/gpodder/gtkui/model.py:342 msgid "New episode" msgstr "Nuevos capУ­tulo" #: src/gpodder/gtkui/model.py:356 msgid "Downloaded episode" msgstr "Descargar capУ­tulo" #: src/gpodder/gtkui/model.py:359 msgid "Downloaded video episode" msgstr "Descargar capУ­tulos de video" #: src/gpodder/gtkui/model.py:362 msgid "Downloaded image" msgstr "Imagen descargado" #: src/gpodder/gtkui/model.py:365 msgid "Downloaded file" msgstr "Descargar archivo" #: src/gpodder/gtkui/model.py:380 msgid "missing file" msgstr "archivo inexistente" #: src/gpodder/gtkui/model.py:384 msgid "never displayed" msgstr "nunca reproducido" #: src/gpodder/gtkui/model.py:386 msgid "never played" msgstr "nunca reproducido" #: src/gpodder/gtkui/model.py:388 msgid "never opened" msgstr "nunca abierto" #: src/gpodder/gtkui/model.py:391 msgid "displayed" msgstr "reproducido" #: src/gpodder/gtkui/model.py:395 msgid "opened" msgstr "abierto" #: src/gpodder/gtkui/model.py:397 msgid "deletion prevented" msgstr "borrado impedido" #: src/gpodder/gtkui/model.py:432 share/gpodder/ui/gtk/gpodder.ui.h:32 msgid "All episodes" msgstr "Todos los capУ­tulos" #: src/gpodder/gtkui/model.py:433 msgid "from all podcasts" msgstr "de todos los podcasts" #: src/gpodder/gtkui/model.py:625 msgid "Subscription paused" msgstr "SuscripciУГn en pausa" #: src/gpodder/gtkui/shownotes.py:118 #, fuzzy msgid "Please select an episode" msgstr "Selecciona capУ­tulos" #: src/gpodder/gtkui/interface/addpodcast.py:74 msgid "Nothing to paste." msgstr "Nada para pegar." #: src/gpodder/gtkui/interface/addpodcast.py:74 msgid "Clipboard is empty" msgstr "El portapapeles estУЁ vacУ­o" #: src/gpodder/gtkui/interface/common.py:160 msgid "Username" msgstr "Nombre de usuario" #: src/gpodder/gtkui/interface/common.py:163 msgid "New user" msgstr "Usuario nuevo" #: src/gpodder/gtkui/interface/common.py:170 msgid "Login" msgstr "Iniciar sesiУГn" #: src/gpodder/gtkui/interface/common.py:172 msgid "Authentication required" msgstr "Requiere autenticaciУГn" #: src/gpodder/gtkui/interface/common.py:203 msgid "Password" msgstr "ContraseУБa" #: src/gpodder/gtkui/interface/common.py:225 msgid "Select destination" msgstr "Seleccione destino" #: src/gpodder/gtkui/interface/configeditor.py:34 msgid "Setting" msgstr "ConfiguraciУГn" #: src/gpodder/gtkui/interface/configeditor.py:41 msgid "Set to" msgstr "Cambiar a" #: src/gpodder/gtkui/interface/configeditor.py:81 #, python-format msgid "Cannot set %(field)s to %(value)s. Needed data type: %(datatype)s" msgstr "" "No se puede establecer %(field)s a %(value)s. Se necesita el tipo de dato: " "%(datatype)s" #: src/gpodder/gtkui/interface/configeditor.py:85 msgid "Error setting option" msgstr "Error aplicando la opciУГn" #: src/gpodder/gtkui/desktop/channel.py:100 #, fuzzy msgid "Add section" msgstr "AcciУГn" #: src/gpodder/gtkui/desktop/channel.py:100 #, fuzzy msgid "New section:" msgstr "Nuevo nombre:" #: src/gpodder/gtkui/desktop/channel.py:133 msgid "Select new podcast cover artwork" msgstr "Seleccione un nuevo carУЁtula para el podcast" #: src/gpodder/gtkui/desktop/channel.py:161 msgid "You can only drop a single image or URL here." msgstr "Solo puedes soltar una sola imagen o URL aquУ­." #: src/gpodder/gtkui/desktop/channel.py:161 #: src/gpodder/gtkui/desktop/channel.py:171 msgid "Drag and drop" msgstr "Arrastrar y soltar" #: src/gpodder/gtkui/desktop/channel.py:171 msgid "You can only drop local files and http:// URLs here." msgstr "Solo puedes soltar ficheros locales y URLs http:// aquУ­" #: src/gpodder/gtkui/desktop/deviceplaylist.py:98 #, fuzzy, python-format msgid "Folder %s could not be created." msgstr "El RSS en %(url)s no pudo ser actualizado." #: src/gpodder/gtkui/desktop/deviceplaylist.py:98 #, fuzzy msgid "Error writing playlist" msgstr "Error al abrir reproductor" #: src/gpodder/gtkui/desktop/episodeselector.py:288 #: share/gpodder/ui/gtk/gpodderepisodeselector.ui.h:2 msgid "Select all" msgstr "Seleccionar todo" #: src/gpodder/gtkui/desktop/episodeselector.py:292 #: share/gpodder/ui/gtk/gpodderepisodeselector.ui.h:3 msgid "Select none" msgstr "Seleccionar ninguno" #: src/gpodder/gtkui/desktop/episodeselector.py:324 msgid "Nothing selected" msgstr "Nada seleccionado" #: src/gpodder/gtkui/desktop/episodeselector.py:325 #, python-format msgid "%(count)d episode" msgid_plural "%(count)d episodes" msgstr[0] "%(count)d episodio" msgstr[1] "%(count)d episodios" #: src/gpodder/gtkui/desktop/episodeselector.py:327 #, python-format msgid "size: %s" msgstr "tamaУБo: %s" #: src/gpodder/gtkui/desktop/podcastdirectory.py:238 #, fuzzy msgid "Loading podcasts" msgstr "Agregando podcasts" #: src/gpodder/gtkui/desktop/podcastdirectory.py:239 #, fuzzy msgid "Please wait while the podcast list is downloaded" msgstr "Por favor, espere mientras se elimina el podcast" #: src/gpodder/gtkui/desktop/preferences.py:51 #: src/gpodder/gtkui/desktop/preferences.py:93 msgid "Do nothing" msgstr "No hacer nada" #: src/gpodder/gtkui/desktop/preferences.py:52 msgid "Show episode list" msgstr "Mostrar lista de capУ­tulos" #: src/gpodder/gtkui/desktop/preferences.py:53 msgid "Add to download list" msgstr "Agregar a lista de descarga" #: src/gpodder/gtkui/desktop/preferences.py:54 msgid "Download immediately" msgstr "Descargar inmediatamente" #: src/gpodder/gtkui/desktop/preferences.py:72 msgid "None" msgstr "Ninguno" #: src/gpodder/gtkui/desktop/preferences.py:73 msgid "iPod" msgstr "" #: src/gpodder/gtkui/desktop/preferences.py:74 msgid "Filesystem-based" msgstr "Basado en sistema de archivos" #: src/gpodder/gtkui/desktop/preferences.py:94 #, fuzzy msgid "Mark as played" msgstr "Marcar como no reproducido" #: src/gpodder/gtkui/desktop/preferences.py:95 #, fuzzy msgid "Delete from gPodder" msgstr "Borrarlo de gPodder" #: src/gpodder/gtkui/desktop/preferences.py:123 #, fuzzy, python-format msgid "Custom (%(format_ids)s)" msgstr "Formato de cadenas personalizado." #: src/gpodder/gtkui/desktop/preferences.py:318 msgid "Name" msgstr "Nombre" #: src/gpodder/gtkui/desktop/preferences.py:369 #, fuzzy msgid "Documentation" msgstr "DuraciУГn" #: src/gpodder/gtkui/desktop/preferences.py:374 #, fuzzy msgid "Extension info" msgstr "InformaciУГn del mУГdulo de extensiones" #: src/gpodder/gtkui/desktop/preferences.py:379 msgid "Support the author" msgstr "" #: src/gpodder/gtkui/desktop/preferences.py:413 msgid "Extension cannot be activated" msgstr "" #: src/gpodder/gtkui/desktop/preferences.py:426 msgid "Extension module info" msgstr "InformaciУГn del mУГdulo de extensiones" #: src/gpodder/gtkui/desktop/preferences.py:463 msgid "Configure audio player" msgstr "ConfiguraciУГn reproductor de sonido" #: src/gpodder/gtkui/desktop/preferences.py:464 #: src/gpodder/gtkui/desktop/preferences.py:474 msgid "Command:" msgstr "Comando:" #: src/gpodder/gtkui/desktop/preferences.py:473 msgid "Configure video player" msgstr "Configurar reproductor de video" #: src/gpodder/gtkui/desktop/preferences.py:485 #: src/gpodder/gtkui/desktop/preferences.py:503 msgid "manually" msgstr "manualmente" #: src/gpodder/gtkui/desktop/preferences.py:505 #, python-format msgid "after %(count)d day" msgid_plural "after %(count)d days" msgstr[0] "despuУЉs de %(count)d dУ­a" msgstr[1] "despuУЉs de %(count)d dУ­as" #: src/gpodder/gtkui/desktop/preferences.py:541 msgid "Replace subscription list on server" msgstr "Reemplazar lista de suscripciones en el servidor" #: src/gpodder/gtkui/desktop/preferences.py:542 msgid "" "Remote podcasts that have not been added locally will be removed on the " "server. Continue?" msgstr "" "Podcasts remotas que no han sido aУБadidos localmente serУЁn eliminadas del " "servidor. ТПContinuar?" #: src/gpodder/gtkui/desktop/preferences.py:621 msgid "Select folder for mount point" msgstr "Seleccione el directorio para punto de montaje" #: src/gpodder/gtkui/desktop/preferences.py:638 #, fuzzy msgid "Select folder for playlists" msgstr "Seleccione el directorio para punto de montaje" #: src/gpodder/gtkui/desktop/sync.py:86 msgid "No device configured" msgstr "No se ha configurado ningУКn dispositivo" #: src/gpodder/gtkui/desktop/sync.py:87 msgid "Please set up your device in the preferences dialog." msgstr "Por favor, configurar el dispositivo en el diУЁlogo de preferencias." #: src/gpodder/gtkui/desktop/sync.py:91 msgid "Cannot open device" msgstr "No se puede abrir dispositivo" #: src/gpodder/gtkui/desktop/sync.py:92 msgid "Please check the settings in the preferences dialog." msgstr "Por favor, compruebe la configuraciУГn en el diУЁlogo de preferencias." #: src/gpodder/gtkui/desktop/sync.py:139 msgid "Not enough space left on device" msgstr "No hay suficiente espacio en el dispositivo" #: src/gpodder/gtkui/desktop/sync.py:140 #, fuzzy, python-format msgid "" "Additional free space required: %(required_space)s\n" "Do you want to continue?" msgstr "" "Necesista liberar %s.\n" "ТПQuiere continuar?" #: src/gpodder/gtkui/desktop/sync.py:199 #, fuzzy msgid "Update successful" msgstr "Lista subida con УЉxito." #: src/gpodder/gtkui/desktop/sync.py:200 msgid "The playlist on your MP3 player has been updated." msgstr "" #: src/gpodder/gtkui/desktop/sync.py:274 msgid "Episodes have been deleted on device" msgstr "" #: src/gpodder/gtkui/desktop/sync.py:285 #, fuzzy msgid "Error writing playlist files" msgstr "Error al convertir archivo." #: src/gpodder/plugins/soundcloud.py:154 msgid "Unknown track" msgstr "Pista desconocida" #: src/gpodder/plugins/soundcloud.py:181 #, python-format msgid "%s on Soundcloud" msgstr "%s en Soundcloud" #: src/gpodder/plugins/soundcloud.py:190 #, python-format msgid "Tracks published by %s on Soundcloud." msgstr "Pistas publicadas por %s en Soundcloud." #: src/gpodder/plugins/soundcloud.py:217 #, python-format msgid "%s's favorites on Soundcloud" msgstr "Favoritos de %s en Soundcloud" #: src/gpodder/plugins/soundcloud.py:223 #, python-format msgid "Tracks favorited by %s on Soundcloud." msgstr "Pistas favoritas de %s en Soundcloud." #: share/gpodder/extensions/audio_converter.py:20 #, fuzzy msgid "Convert audio files" msgstr "Convirtiendo archivo" #: share/gpodder/extensions/audio_converter.py:21 msgid "Transcode audio files to mp3/ogg" msgstr "" #: share/gpodder/extensions/audio_converter.py:84 #: share/gpodder/extensions/video_converter.py:86 #, python-format msgid "Convert to %(format)s" msgstr "" #: share/gpodder/extensions/audio_converter.py:111 #: share/gpodder/extensions/rockbox_convert2mp4.py:65 #: share/gpodder/extensions/video_converter.py:111 #, fuzzy msgid "File converted" msgstr "Usar conversor:" #: share/gpodder/extensions/audio_converter.py:114 #: share/gpodder/extensions/video_converter.py:114 #, fuzzy msgid "Conversion failed" msgstr "Convirtiendo archivo" #: share/gpodder/extensions/concatenate_videos.py:20 #: share/gpodder/extensions/concatenate_videos.py:100 #, fuzzy msgid "Concatenate videos" msgstr "Convirtiendo archivo" #: share/gpodder/extensions/concatenate_videos.py:21 msgid "Add a context menu item for concatenating multiple videos" msgstr "" #: share/gpodder/extensions/concatenate_videos.py:37 msgid "Save video" msgstr "" #: share/gpodder/extensions/concatenate_videos.py:66 #, fuzzy msgid "Concatenating video files" msgstr "Convirtiendo archivo" #: share/gpodder/extensions/concatenate_videos.py:67 #, python-format msgid "Writing %(filename)s" msgstr "" #: share/gpodder/extensions/concatenate_videos.py:78 msgid "Videos successfully converted" msgstr "" #: share/gpodder/extensions/concatenate_videos.py:79 #, fuzzy msgid "Error converting videos" msgstr "Error al convertir archivo." #: share/gpodder/extensions/concatenate_videos.py:80 msgid "Concatenation result" msgstr "" #: share/gpodder/extensions/enqueue_in_mediaplayer.py:16 msgid "Enqueue in media players" msgstr "" #: share/gpodder/extensions/enqueue_in_mediaplayer.py:17 msgid "" "Add a context menu item for enqueueing episodes in installed media players" msgstr "" #: share/gpodder/extensions/enqueue_in_mediaplayer.py:35 msgid "Enqueue in" msgstr "" #: share/gpodder/extensions/episode_website_context_menu.py:14 msgid "\"Open website\" episode context menu" msgstr "" #: share/gpodder/extensions/episode_website_context_menu.py:15 msgid "Add a context menu item for opening the website of an episode" msgstr "" #: share/gpodder/extensions/episode_website_context_menu.py:30 #, fuzzy msgid "Open website" msgstr "Sitio Web:" #: share/gpodder/extensions/gtk_statusicon.py:14 #, fuzzy msgid "Gtk Status Icon" msgstr "Icono de estado" #: share/gpodder/extensions/gtk_statusicon.py:15 #, fuzzy msgid "Show a status icon for Gtk-based Desktops." msgstr "Muestra un indicador de estado en la barra superior." #: share/gpodder/extensions/minimize_on_start.py:10 msgid "Minimize on start" msgstr "" #: share/gpodder/extensions/minimize_on_start.py:11 msgid "Minimizes the gPodder window on startup." msgstr "" #: share/gpodder/extensions/mpris-listener.py:33 msgid "MPRIS Listener" msgstr "" #: share/gpodder/extensions/mpris-listener.py:34 msgid "Convert MPRIS notifications to gPodder Media Player D-Bus API" msgstr "" #: share/gpodder/extensions/normalize_audio.py:21 msgid "Normalize audio with re-encoding" msgstr "" #: share/gpodder/extensions/normalize_audio.py:22 msgid "Normalize the volume of audio files with normalize-audio" msgstr "" #: share/gpodder/extensions/normalize_audio.py:99 #, fuzzy msgid "File normalized" msgstr "Nombre de archivo" #: share/gpodder/extensions/rename_download.py:16 #, fuzzy msgid "Rename episodes after download" msgstr "un capУ­tulo descargado:" #: share/gpodder/extensions/rename_download.py:17 #, fuzzy msgid "Rename episodes to \".\" on download" msgstr "No hay nuevos capУ­tulos disponibles para descarga" #: share/gpodder/extensions/rm_ogg_cover.py:37 #, fuzzy msgid "Remove cover art from OGG files" msgstr "Eliminar de la lista" #: share/gpodder/extensions/rm_ogg_cover.py:38 msgid "removes coverart from all downloaded ogg files" msgstr "" #: share/gpodder/extensions/rm_ogg_cover.py:66 #, fuzzy msgid "Remove cover art" msgstr "Eliminar marca de nuevo" #: share/gpodder/extensions/rockbox_convert2mp4.py:26 msgid "Convert video files to MP4 for Rockbox" msgstr "" #: share/gpodder/extensions/rockbox_convert2mp4.py:27 msgid "Converts all videos to a Rockbox-compatible format" msgstr "" #: share/gpodder/extensions/sonos.py:19 share/gpodder/extensions/sonos.py:78 msgid "Stream to Sonos" msgstr "" #: share/gpodder/extensions/sonos.py:20 msgid "Stream podcasts to Sonos speakers" msgstr "" #: share/gpodder/extensions/tagging.py:45 msgid "Tag downloaded files using Mutagen" msgstr "" #: share/gpodder/extensions/tagging.py:46 #, fuzzy msgid "Add episode and podcast titles to MP3/OGG tags" msgstr "Mostrar \"Todos los episodios\" en lista de podcasts" #: share/gpodder/extensions/taskbar_progress.py:28 #, fuzzy msgid "Show download progress on the taskbar" msgstr "Muestra el progreso de descarga en el icono del lanzador de Unity." #: share/gpodder/extensions/taskbar_progress.py:29 msgid "Displays the progress on the Windows taskbar." msgstr "" #: share/gpodder/extensions/ted_subtitles.py:16 msgid "Subtitle Downloader for TED Talks" msgstr "" #: share/gpodder/extensions/ted_subtitles.py:17 msgid "Downloads .srt subtitles for TED Talks Videos" msgstr "" #: share/gpodder/extensions/ubuntu_appindicator.py:10 msgid "Ubuntu App Indicator" msgstr "Indicador de aplicaciУГn de Ubuntu" #: share/gpodder/extensions/ubuntu_appindicator.py:11 msgid "Show a status indicator in the top bar." msgstr "Muestra un indicador de estado en la barra superior." #: share/gpodder/extensions/ubuntu_appindicator.py:47 msgid "Show main window" msgstr "Mostrar ventana principal" #: share/gpodder/extensions/ubuntu_appindicator.py:57 #: share/gpodder/ui/gtk/gpodder.ui.h:6 msgid "Quit" msgstr "Salir" #: share/gpodder/extensions/ubuntu_unity.py:10 msgid "Ubuntu Unity Integration" msgstr "IntegraciУГn con Ubuntu Unity" #: share/gpodder/extensions/ubuntu_unity.py:11 msgid "Show download progress in the Unity Launcher icon." msgstr "Muestra el progreso de descarga en el icono del lanzador de Unity." #: share/gpodder/extensions/update_feeds_on_startup.py:14 #, fuzzy msgid "Search for new episodes on startup" msgstr "Actualizar lista de capУ­tulos al iniciar" #: share/gpodder/extensions/update_feeds_on_startup.py:15 #, fuzzy msgid "Starts the search for new episodes on startup" msgstr "Actualizar lista de capУ­tulos al iniciar" #: share/gpodder/extensions/video_converter.py:22 #, fuzzy msgid "Convert video files" msgstr "Convirtiendo archivo" #: share/gpodder/extensions/video_converter.py:23 msgid "Transcode video files to avi/mp4/m4v" msgstr "" #: share/gpodder/ui/gtk/gpodderaddpodcast.ui.h:1 msgid "Add a new podcast" msgstr "AУБadir un nuevo podcast" #: share/gpodder/ui/gtk/gpodderaddpodcast.ui.h:2 msgid "URL:" msgstr "URL:" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:1 msgid "gPodder Podcast Editor" msgstr "Editor de Podcasts gPodder" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:2 msgid "Section:" msgstr "SecciУГn:" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:3 msgid "Disable feed updates (pause subscription)" msgstr "Desactivar actualizaciones de fuente (pausar suscripciУГn)" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:4 #, fuzzy msgid "Synchronize to MP3 player devices" msgstr "Sincronizando con reproductor" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:5 #, fuzzy msgid "Strategy:" msgstr "Estrategia de borrado:" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:6 #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:6 msgid "General" msgstr "General" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:7 msgid "HTTP/FTP Authentication" msgstr "AutenticaciУГn HTTP/FTP" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:8 #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:13 msgid "Username:" msgstr "Nombre de usuario:" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:9 #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:14 msgid "Password:" msgstr "ContraseУБa:" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:10 msgid "Locations" msgstr "Ubicaciones" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:11 msgid "Download to:" msgstr "Descargar a:" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:12 msgid "Website:" msgstr "Sitio Web:" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:13 msgid "website label" msgstr "etiqueta del sitio web" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:14 msgid "Advanced" msgstr "Avanzado" #: share/gpodder/ui/gtk/gpodderconfigeditor.ui.h:1 msgid "gPodder Configuration Editor" msgstr "Editor de configuraciУГn de gPodder" #: share/gpodder/ui/gtk/gpodderconfigeditor.ui.h:2 msgid "Search for:" msgstr "Buscar:" #: share/gpodder/ui/gtk/gpodderconfigeditor.ui.h:3 msgid "Show All" msgstr "Mostrar Todo" #: share/gpodder/ui/gtk/gpodderepisodeselector.ui.h:1 msgid "Select episodes" msgstr "Selecciona capУ­tulos" #: share/gpodder/ui/gtk/gpodderpodcastdirectory.ui.h:1 msgid "Find new podcasts" msgstr "Buscar nuevos podcast" #: share/gpodder/ui/gtk/gpodderpodcastdirectory.ui.h:2 msgid "Select All" msgstr "Seleccionar todo" #: share/gpodder/ui/gtk/gpodderpodcastdirectory.ui.h:3 msgid "Select None" msgstr "Seleccionar ninguno" #: share/gpodder/ui/gtk/gpodderpodcastdirectory.ui.h:4 msgid "label" msgstr "" #: share/gpodder/ui/gtk/gpodderpodcastdirectory.ui.h:5 msgid "..." msgstr "" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:1 #: share/gpodder/ui/gtk/gpodder.ui.h:5 msgid "Preferences" msgstr "Preferencias" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:2 msgid "Audio player:" msgstr "Reproductor de audio:" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:3 msgid "Video player:" msgstr "Reproductor de video:" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:4 msgid "\"All episodes\" in podcast list" msgstr "ТЋTodos los episodiosТЛ en la lista de podcasts" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:5 msgid "Use sections for podcast list" msgstr "Usar secciones para la lista de podcasts" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:7 msgid "Preferred YouTube format:" msgstr "" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:8 msgid "YouTube API key (v3):" msgstr "" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:9 msgid "Preferred Vimeo format:" msgstr "" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:11 msgid "Extensions" msgstr "Extensiones" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:12 msgid "Synchronize subscriptions and episode actions" msgstr "Sincronizar suscripciones y acciones de capУ­tulos" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:15 msgid "Replace list on server with local subscriptions" msgstr "Reemplazar lista del servidor con suscripciones locales" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:16 msgid "Device name:" msgstr "Nombre de Dispositivo:" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:17 msgid "gpodder.net" msgstr "gpodder.net" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:18 msgid "Update interval:" msgstr "Intervalo de actualizaciУГn:" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:19 msgid "Maximum number of episodes per podcast:" msgstr "NУКmero mУЁximo de capУ­tulos por podcast:" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:20 msgid "When new episodes are found:" msgstr "Cuando se encuentran nuevos capУ­tulos:" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:21 msgid "Updating" msgstr "Actualizando" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:22 msgid "Delete played episodes:" msgstr "Eliminar capУ­tulos viejos:" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:23 msgid "Remove played episodes even if unfinished" msgstr "Eliminar episodios sin finalizar aУКn si no se completaron" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:24 msgid "Also remove unplayed episodes" msgstr "TambiУЉn eliminar capУ­tulos no escuchados" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:25 msgid "Clean-up" msgstr "Limpieza" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:26 msgid "Device type:" msgstr "Tipo de dispositivo:" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:27 msgid "Mountpoint:" msgstr "Punto de montaje:" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:28 msgid "After syncing an episode:" msgstr "Luego de sincronizar un capУ­tulo:" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:29 #, fuzzy msgid "Create playlists on device" msgstr "Reemplazar lista en el servidor" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:30 #, fuzzy msgid "Playlists Folder:" msgstr "Nombre de la lista de reproducciУГn:" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:31 msgid "Remove episodes deleted on device from gPodder" msgstr "" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:32 msgid "Only sync unplayed episodes" msgstr "Solo sincronizar capУ­tulos no reproducidos" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:33 msgid "Devices" msgstr "Dispositivos" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:34 msgid "Edit config" msgstr "Editar configuraciУГn" #: share/gpodder/ui/gtk/gpodder.ui.h:1 msgid "_Podcasts" msgstr "_Podcasts" #: share/gpodder/ui/gtk/gpodder.ui.h:2 msgid "Check for new episodes" msgstr "Actualizar lista de capУ­tulos" #: share/gpodder/ui/gtk/gpodder.ui.h:3 msgid "Download new episodes" msgstr "Descargar capУ­tulos nuevos" #: share/gpodder/ui/gtk/gpodder.ui.h:7 msgid "_Subscriptions" msgstr "_Suscripciones" #: share/gpodder/ui/gtk/gpodder.ui.h:8 msgid "Discover new podcasts" msgstr "Buscar nuevos podcast" #: share/gpodder/ui/gtk/gpodder.ui.h:9 msgid "Add podcast via URL" msgstr "Agregando podcast: %s" #: share/gpodder/ui/gtk/gpodder.ui.h:11 msgid "Unsubscribe" msgstr "Suscribir" #: share/gpodder/ui/gtk/gpodder.ui.h:14 msgid "Import from OPML file" msgstr "Importar de OPML" #: share/gpodder/ui/gtk/gpodder.ui.h:15 msgid "Export to OPML file" msgstr "Exportar a OPML" #: share/gpodder/ui/gtk/gpodder.ui.h:16 msgid "Go to gpodder.net" msgstr "Ir a gpodder.net" #: share/gpodder/ui/gtk/gpodder.ui.h:17 msgid "_Episodes" msgstr "_CapУ­tulos" #: share/gpodder/ui/gtk/gpodder.ui.h:18 msgid "Play" msgstr "Reproducir" #: share/gpodder/ui/gtk/gpodder.ui.h:19 msgid "Open" msgstr "Abrir" #: share/gpodder/ui/gtk/gpodder.ui.h:22 msgid "Delete" msgstr "Borrar" #: share/gpodder/ui/gtk/gpodder.ui.h:23 msgid "Toggle new status" msgstr "Conmutar estado nuevo" #: share/gpodder/ui/gtk/gpodder.ui.h:24 msgid "Change delete lock" msgstr "Cambiar a:" #: share/gpodder/ui/gtk/gpodder.ui.h:26 #, fuzzy msgid "E_xtras" msgstr "Extras" #: share/gpodder/ui/gtk/gpodder.ui.h:27 #, fuzzy msgid "Sync to device" msgstr "Sincronizar al dispositivo" #: share/gpodder/ui/gtk/gpodder.ui.h:28 #, fuzzy msgid "Update YouTube subscriptions" msgstr "No hay suscripciones" #: share/gpodder/ui/gtk/gpodder.ui.h:29 msgid "_View" msgstr "_Ver" #: share/gpodder/ui/gtk/gpodder.ui.h:30 msgid "Toolbar" msgstr "Barra de herramientas" #: share/gpodder/ui/gtk/gpodder.ui.h:31 msgid "Episode descriptions" msgstr "Mostrar descripciУГn del capУ­tulo" #: share/gpodder/ui/gtk/gpodder.ui.h:33 msgid "Hide deleted episodes" msgstr "Ocultar capУ­tulos borrados" #: share/gpodder/ui/gtk/gpodder.ui.h:34 msgid "Downloaded episodes" msgstr "Descargar capУ­tulos nuevos" #: share/gpodder/ui/gtk/gpodder.ui.h:35 msgid "Unplayed episodes" msgstr "Descargando capУ­tulos" #: share/gpodder/ui/gtk/gpodder.ui.h:36 msgid "Hide podcasts without episodes" msgstr "ТПEliminar el podcast y sus capУ­tulos?" #: share/gpodder/ui/gtk/gpodder.ui.h:37 msgid "_Help" msgstr "_Ayuda" #: share/gpodder/ui/gtk/gpodder.ui.h:38 msgid "User manual" msgstr "Manual del usuario" #: share/gpodder/ui/gtk/gpodder.ui.h:39 msgid "Software updates" msgstr "" #: share/gpodder/ui/gtk/gpodder.ui.h:40 msgid "Filter:" msgstr "Fallado" #: share/gpodder/ui/gtk/gpodder.ui.h:41 msgid "Podcasts" msgstr "Podcasts" #: share/gpodder/ui/gtk/gpodder.ui.h:42 msgid "Limit rate to" msgstr "Limitar la velocidad de descarga a" #: share/gpodder/ui/gtk/gpodder.ui.h:43 msgid "KiB/s" msgstr "KiB/s" #: share/gpodder/ui/gtk/gpodder.ui.h:44 msgid "Limit downloads to" msgstr "Limitar el nУКmero de descargas a" #: share/gpodder/ui/gtk/gpodderwelcome.ui.h:2 #, fuzzy msgid "Welcome to gPodder" msgstr "Bienvenido a gPodder" #: share/gpodder/ui/gtk/gpodderwelcome.ui.h:3 #, fuzzy msgid "Your podcast list is empty." msgstr "Tu lista de suscripciones estУЁ vacУ­a" #: share/gpodder/ui/gtk/gpodderwelcome.ui.h:4 msgid "Choose from a list of example podcasts" msgstr "Seleccionar de una lista de podcasts de ejemplo" #: share/gpodder/ui/gtk/gpodderwelcome.ui.h:5 #, fuzzy msgid "Add a podcast by entering its URL" msgstr "Agregando podcast: %s" #: share/gpodder/ui/gtk/gpodderwelcome.ui.h:6 #, fuzzy msgid "Restore my subscriptions from gpodder.net" msgstr "Descargar mis suscripciones desde gpodder.net" #: bin/gpo:266 msgid "Podcast update requested by extensions." msgstr "ActualizaciУГn del podcast solicitada por las extensiones." #: bin/gpo:270 msgid "Episode download requested by extensions." msgstr "Descarga del episodio solicitada por las extensiones." #: bin/gpo:323 #, fuzzy, python-format msgid "Invalid url: %s" msgstr "URL invУЁlida" #: bin/gpo:340 bin/gpo:416 bin/gpo:450 bin/gpo:582 bin/gpo:597 bin/gpo:717 #, python-format msgid "You are not subscribed to %s." msgstr "No estУЁ suscrito a %s." #: bin/gpo:346 #, fuzzy, python-format msgid "Already subscribed to %s." msgstr "No se puede suscribir a %s." #: bin/gpo:352 #, python-format msgid "Cannot subscribe to %s." msgstr "No se puede suscribir a %s." #: bin/gpo:368 #, python-format msgid "Successfully added %s." msgstr "%s adicionado con УЉxito." #: bin/gpo:386 msgid "This configuration option does not exist." msgstr "Esta opciУГn de configuraciУГn no existe." #: bin/gpo:390 msgid "Can only set leaf configuration nodes." msgstr "" #: bin/gpo:404 #, python-format msgid "Renamed %(old_title)s to %(new_title)s." msgstr "Se renombrУГ %(old_title)s a %(new_title)s." #: bin/gpo:420 #, python-format msgid "Unsubscribed from %s." msgstr "SuscripciУГn cancelada desde %s." #: bin/gpo:494 msgid "Updates disabled" msgstr "Actualizaciones desactivadas" #: bin/gpo:505 #, python-format msgid "%(count)d new episode" msgid_plural "%(count)d new episodes" msgstr[0] "%(count)d episodio nuevo" msgstr[1] "%(count)d episodios nuevos" #: bin/gpo:511 #, fuzzy msgid "Checking for new episodes" msgstr "Actualizar lista de capУ­tulos..." #: bin/gpo:520 #, python-format msgid "Skipping %(podcast)s" msgstr "Omitiendo %(podcast)s" #: bin/gpo:588 #, python-format msgid "Disabling feed update from %s." msgstr "Desactivando la actualizaciУГn de la fuente desde %s." #: bin/gpo:603 #, python-format msgid "Enabling feed update from %s." msgstr "Activando la actualizaciУГn de la fuente desde %s." #: bin/gpo:616 #, python-format msgid "Please register a YouTube API key and set it using %(command)s." msgstr "" #: bin/gpo:643 #, fuzzy, python-format msgid "Changing: %(old_url)s => %(new_url)s" msgstr "URL cambiada de %(old_url)s a %(new_url)s." #: bin/gpo:653 #, fuzzy msgid "Nothing to fix" msgstr "Nada que exportar" #: bin/gpo:672 msgid "No podcasts found." msgstr "No se encontraron podcasts." #: bin/gpo:686 msgid "Enter index to subscribe, ? for list" msgstr "Introduzca el indice para suscribirse, ? para la lista" #: bin/gpo:700 bin/gpo:704 msgid "Invalid value." msgstr "Valor no vУЁlido." #: bin/gpo:721 #, python-format msgid "Invalid URL: %s" msgstr "URL no vУЁlida: %s" #: bin/gpo:724 #, python-format msgid "Changed URL from %(old_url)s to %(new_url)s." msgstr "URL cambiada de %(old_url)s a %(new_url)s." #: bin/gpo:782 #, python-format msgid "Syntax error: %(error)s" msgstr "Error de sintaxis: %(error)s" #: bin/gpo:876 #, fuzzy msgid "Ambiguous command. Did you mean.." msgstr "Orden ambigua. QuizУЁ quiso decir..." #: bin/gpo:880 msgid "The requested function is not available." msgstr "La funciУГn solicitada no estУЁ disponible." #: bin/gpodder:105 #, fuzzy msgid "print logging output on the console" msgstr "Imprimir salida de depuraciУГn a stdout" #: bin/gpodder:108 #, fuzzy msgid "subscribe to the feed at URL" msgstr "Suscribirse a la URL proporcionada" #: bin/gpodder:113 msgid "Mac OS X application process number" msgstr "NУКmero de proceso de aplicaciУГn de Mac OS X" #: share/applications/gpodder.desktop.in.h:2 msgid "gPodder Podcast Client" msgstr "Cliente de podcasts gPodder" #: share/applications/gpodder.desktop.in.h:3 msgid "Podcast Client" msgstr "Cliente de podcasts" #: share/applications/gpodder.desktop.in.h:4 msgid "Subscribe to audio and video content from the web" msgstr "Suscribirse a contenido multimedia en la web" #: share/applications/gpodder-url-handler.desktop.in.h:1 #, fuzzy msgid "gPodder (subscribe to feed)" msgstr "Suscribirse a la URL proporcionada" gpodder-3.9.0/po/nn.po0000644000016000001710000015613112654461625015674 0ustar jenkinsjenkins00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # # Translators: # Thomas Perl , 2006. # Torstein Adolf Winterseth , 2010. # Torstein Adolf Winterseth , 2009, 2010. msgid "" msgstr "" "Project-Id-Version: gPodder\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2016-02-03 20:31+0000\n" "PO-Revision-Date: 2013-01-19 12:30+0000\n" "Last-Translator: Thomas Perl \n" "Language-Team: LANGUAGE \n" "Language: nn\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" #: src/gpodder/config.py:55 #, python-format msgid "gPodder on %s" msgstr "gPodder pУЅ %s" #: src/gpodder/directory.py:95 #, fuzzy msgid "gpodder.net search" msgstr "gpodder.net" #: src/gpodder/directory.py:104 #, fuzzy msgid "OPML from web" msgstr "OMPL-filer" #: src/gpodder/directory.py:113 #, fuzzy msgid "OPML file" msgstr "OMPL-filer" #: src/gpodder/directory.py:122 share/gpodder/ui/gtk/gpodderwelcome.ui.h:1 #, fuzzy msgid "Getting started" msgstr "Innstillingar" #: src/gpodder/directory.py:131 #, fuzzy msgid "gpodder.net Top 50" msgstr "gpodder.net" #: src/gpodder/directory.py:140 #, fuzzy msgid "gpodder.net Tags" msgstr "gpodder.net" #: src/gpodder/directory.py:152 #, fuzzy msgid "Soundcloud search" msgstr "%s pУЅ Soundcloud" #: src/gpodder/directory.py:165 #, fuzzy msgid "Imported OPML file" msgstr "Importer frУЅ OPML-fil" #: src/gpodder/download.py:329 msgid "Wrong username/password" msgstr "Feil brukarnamn/passord" #: src/gpodder/download.py:527 src/gpodder/sync.py:924 msgid "Added" msgstr "Lagt til" #: src/gpodder/download.py:527 src/gpodder/sync.py:924 msgid "Queued" msgstr "I kУИ" #: src/gpodder/download.py:527 src/gpodder/gtkui/model.py:327 msgid "Downloading" msgstr "Lastar ned" #: src/gpodder/download.py:528 src/gpodder/model.py:721 #: src/gpodder/sync.py:925 msgid "Finished" msgstr "Ferdig" #: src/gpodder/download.py:528 src/gpodder/sync.py:925 msgid "Failed" msgstr "Feila" #: src/gpodder/download.py:528 src/gpodder/sync.py:925 msgid "Cancelled" msgstr "Avbrote" #: src/gpodder/download.py:528 src/gpodder/sync.py:925 msgid "Paused" msgstr "Pausa" #: src/gpodder/download.py:862 msgid "Missing content from server" msgstr "Manglande innhald frУЅ tenaren" #: src/gpodder/download.py:868 #, python-format msgid "I/O Error: %(error)s: %(filename)s" msgstr "I/O-feil: %(error)s: %(filename)s" #: src/gpodder/download.py:875 #, python-format msgid "HTTP Error %(code)s: %(message)s" msgstr "HTTP-feil %(code)s: %(message)s" #: src/gpodder/download.py:879 src/gpodder/sync.py:1081 #, python-format msgid "Error: %s" msgstr "Feil: %s" #: src/gpodder/extensions.py:55 msgid "Desktop Integration" msgstr "" #: src/gpodder/extensions.py:56 #, fuzzy msgid "Interface" msgstr "Heiltal" #: src/gpodder/extensions.py:57 #, fuzzy msgid "Post download" msgstr "Pause nedlasting" #: src/gpodder/extensions.py:59 src/gpodder/model.py:779 #: src/gpodder/model.py:1225 msgid "Other" msgstr "Andre" #: src/gpodder/extensions.py:100 #, fuzzy msgid "No description for this extension." msgstr "Inga skildring tilgjengeleg." #: src/gpodder/extensions.py:212 #, python-format msgid "Command not found: %(command)s" msgstr "" #: src/gpodder/extensions.py:228 #, python-format msgid "Need at least one of the following commands: %(list_of_commands)s" msgstr "" #: src/gpodder/extensions.py:265 #, fuzzy, python-format msgid "Python module not found: %(module)s" msgstr "Python-modulen ТЋ%sТЛ er ikkje installert" #: src/gpodder/model.py:446 src/gpodder/plugins/soundcloud.py:156 msgid "No description available" msgstr "Ingen detaljar tilgjengeleg" #: src/gpodder/model.py:679 msgid "unknown" msgstr "ukjend" #: src/gpodder/model.py:746 msgid "Default" msgstr "" #: src/gpodder/model.py:747 msgid "Only keep latest" msgstr "" #: src/gpodder/model.py:1208 src/gpodder/model.py:1223 #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:10 msgid "Video" msgstr "" #: src/gpodder/model.py:1221 msgid "Audio" msgstr "" #: src/gpodder/my.py:174 #, python-format msgid "Add %s" msgstr "Legg til %s" #: src/gpodder/my.py:176 #, python-format msgid "Remove %s" msgstr "Fjern %s" #: src/gpodder/sync.py:196 msgid "Cancelled by user" msgstr "Avbroten av brukar." #: src/gpodder/sync.py:199 msgid "Writing data to disk" msgstr "Skriv data til disk" #: src/gpodder/sync.py:295 msgid "Opening iPod database" msgstr "Opnar iPod-database" #: src/gpodder/sync.py:305 msgid "iPod opened" msgstr "iPod opna" #: src/gpodder/sync.py:316 msgid "Saving iPod database" msgstr "Lagrar iPod-database" #: src/gpodder/sync.py:321 msgid "Writing extended gtkpod database" msgstr "Skriv utvida gtkpod-database" #: src/gpodder/sync.py:397 src/gpodder/sync.py:680 src/gpodder/sync.py:874 #, python-format msgid "Removing %s" msgstr "Fjernar %s" #: src/gpodder/sync.py:412 src/gpodder/sync.py:557 #, python-format msgid "Adding %s" msgstr "Legg til %s" #: src/gpodder/sync.py:430 #, python-format msgid "Error copying %(episode)s: Not enough free space on %(mountpoint)s" msgstr "" "Klarte ikkje kopiera %(episode)s: Ikkje nok ledig plass pУЅ %(mountpoint)s" #: src/gpodder/sync.py:515 msgid "Opening MP3 player" msgstr "Opnar MP3-spelar" #: src/gpodder/sync.py:518 msgid "MP3 player opened" msgstr "MP3-spelar opna" #: src/gpodder/sync.py:576 #, python-format msgid "" "Not enough space in %(path)s: %(free)s available, but need at least %(need)s" msgstr "" #: src/gpodder/sync.py:603 src/gpodder/sync.py:611 #, python-format msgid "Error opening %(filename)s: %(message)s" msgstr "Klarte ikkje opna %(filename)s: %(message)s" #: src/gpodder/sync.py:780 src/gpodder/sync.py:786 msgid "MTP device" msgstr "MTP-eining" #: src/gpodder/sync.py:793 msgid "Opening the MTP device" msgstr "Opnar MTP-eining" #: src/gpodder/sync.py:803 #, python-format msgid "%s opened" msgstr "%s opna" #: src/gpodder/sync.py:808 #, python-format msgid "Closing %s" msgstr "Lukkar %s" #: src/gpodder/sync.py:816 #, python-format msgid "%s closed" msgstr "%s lukka" #: src/gpodder/sync.py:821 bin/gpo:708 #, python-format msgid "Adding %s..." msgstr "Legg til %s ..." #: src/gpodder/sync.py:924 #, fuzzy msgid "Synchronizing" msgstr "Synkronisering" #: src/gpodder/util.py:429 #, python-format msgid "%(count)d day ago" msgid_plural "%(count)d days ago" msgstr[0] "" msgstr[1] "" #: src/gpodder/util.py:508 msgid "Today" msgstr "Idag" #: src/gpodder/util.py:510 msgid "Yesterday" msgstr "I gУЅr" #: src/gpodder/util.py:553 src/gpodder/util.py:556 msgid "(unknown)" msgstr "(ukjend)" #: src/gpodder/util.py:1193 src/gpodder/util.py:1212 #, python-format msgid "%(count)d second" msgid_plural "%(count)d seconds" msgstr[0] "" msgstr[1] "" #: src/gpodder/util.py:1206 #, python-format msgid "%(count)d hour" msgid_plural "%(count)d hours" msgstr[0] "" msgstr[1] "" #: src/gpodder/util.py:1209 #, python-format msgid "%(count)d minute" msgid_plural "%(count)d minutes" msgstr[0] "" msgstr[1] "" #: src/gpodder/util.py:1215 msgid "and" msgstr "og" #: src/gpodder/gtkui/config.py:50 msgid "Integer" msgstr "Heiltal" #: src/gpodder/gtkui/config.py:52 msgid "Float" msgstr "Flyttal" #: src/gpodder/gtkui/config.py:54 msgid "Boolean" msgstr "Boolsk" #: src/gpodder/gtkui/config.py:56 msgid "String" msgstr "Streng" #: src/gpodder/gtkui/desktopfile.py:70 #, python-format msgid "Command: %s" msgstr "Kommando: %s" #: src/gpodder/gtkui/desktopfile.py:150 msgid "Default application" msgstr "Standardprogram" #: src/gpodder/gtkui/main.py:205 share/applications/gpodder.desktop.in.h:1 msgid "gPodder" msgstr "gPodder" #: src/gpodder/gtkui/main.py:288 msgid "Loading incomplete downloads" msgstr "Lastar ufullstendige nedlastingar" #: src/gpodder/gtkui/main.py:289 msgid "Some episodes have not finished downloading in a previous session." msgstr "Somme episodar har ikkje vorte lasta ned ferdig i ei tidlegare УИkt." #: src/gpodder/gtkui/main.py:291 #, python-format msgid "%(count)d partial file" msgid_plural "%(count)d partial files" msgstr[0] "" msgstr[1] "" #: src/gpodder/gtkui/main.py:306 msgid "Resume all" msgstr "Fortset alle" #: src/gpodder/gtkui/main.py:316 msgid "Incomplete downloads from a previous session were found." msgstr "Ufullstendige nedlastingar frУЅ ei tidlegare УИkt vart funne." #: src/gpodder/gtkui/main.py:414 msgid "Action" msgstr "Handling" #: src/gpodder/gtkui/main.py:461 msgid "Confirm changes from gpodder.net" msgstr "Stadfest endringar frУЅ gpodder.net" #: src/gpodder/gtkui/main.py:462 msgid "Select the actions you want to carry out." msgstr "Vel handlingane du vil utfУИra" #: src/gpodder/gtkui/main.py:502 msgid "Uploading subscriptions" msgstr "Lastar opp abonnement" #: src/gpodder/gtkui/main.py:503 msgid "Your subscriptions are being uploaded to the server." msgstr "Dine abonnement vert lasta opp til tenaren." #: src/gpodder/gtkui/main.py:508 msgid "List uploaded successfully." msgstr "Opplastinga av liste var vellykka." #: src/gpodder/gtkui/main.py:515 msgid "Error while uploading" msgstr "Feil under opplasting" #: src/gpodder/gtkui/main.py:800 src/gpodder/gtkui/main.py:928 #: src/gpodder/gtkui/main.py:2622 src/gpodder/gtkui/main.py:2815 #: src/gpodder/gtkui/desktop/episodeselector.py:132 #: src/gpodder/gtkui/desktop/sync.py:270 msgid "Episode" msgstr "Episode" #: src/gpodder/gtkui/main.py:819 msgid "Size" msgstr "Storleik" #: src/gpodder/gtkui/main.py:824 msgid "Duration" msgstr "" #: src/gpodder/gtkui/main.py:828 msgid "Released" msgstr "Utgjeven" #: src/gpodder/gtkui/main.py:855 msgid "Visible columns" msgstr "" #: src/gpodder/gtkui/main.py:948 src/gpodder/gtkui/main.py:1108 #: share/gpodder/ui/gtk/gpodder.ui.h:45 msgid "Progress" msgstr "Framdrift" #: src/gpodder/gtkui/main.py:982 msgid "Loading episodes" msgstr "Lastar episodar" #: src/gpodder/gtkui/main.py:985 msgid "No episodes in current view" msgstr "Ingen episodar her" #: src/gpodder/gtkui/main.py:987 msgid "No episodes available" msgstr "Ingen episodar tilgjengeleg" #: src/gpodder/gtkui/main.py:993 msgid "No podcasts in this view" msgstr "Ingen podkastar her" #: src/gpodder/gtkui/main.py:995 msgid "No subscriptions" msgstr "Ingen abonnement" #: src/gpodder/gtkui/main.py:997 #, fuzzy msgid "No active tasks" msgstr "Ingen aktive nedlastingar" #: src/gpodder/gtkui/main.py:1112 src/gpodder/gtkui/main.py:1114 #, python-format msgid "%(count)d active" msgid_plural "%(count)d active" msgstr[0] "" msgstr[1] "" #: src/gpodder/gtkui/main.py:1116 #, python-format msgid "%(count)d failed" msgid_plural "%(count)d failed" msgstr[0] "" msgstr[1] "" #: src/gpodder/gtkui/main.py:1118 #, python-format msgid "%(count)d queued" msgid_plural "%(count)d queued" msgstr[0] "" msgstr[1] "" #: src/gpodder/gtkui/main.py:1132 #, python-format msgid "downloading %(count)d file" msgid_plural "downloading %(count)d files" msgstr[0] "" msgstr[1] "" #: src/gpodder/gtkui/main.py:1142 #, python-format msgid "synchronizing %(count)d file" msgid_plural "synchronizing %(count)d files" msgstr[0] "" msgstr[1] "" #: src/gpodder/gtkui/main.py:1144 #, python-format msgid "%(queued)d task queued" msgid_plural "%(queued)d tasks queued" msgstr[0] "" msgstr[1] "" #: src/gpodder/gtkui/main.py:1168 msgid "Please report this problem and restart gPodder:" msgstr "Ver god og rapporter dette problemet og start gPodder pУЅ nytt:" #: src/gpodder/gtkui/main.py:1168 msgid "Unhandled exception" msgstr "Ikkje-handtert unntak" #: src/gpodder/gtkui/main.py:1235 #, python-format msgid "Feedparser error: %s" msgstr "Kjeldetolkarfeil: %s" #: src/gpodder/gtkui/main.py:1371 #, fuzzy msgid "Could not download some episodes:" msgstr "Klarte ikkje leggja til somme podkastar" #: src/gpodder/gtkui/main.py:1373 src/gpodder/gtkui/main.py:1376 msgid "Downloads finished" msgstr "Nedlastingar er fullfУИrte" #: src/gpodder/gtkui/main.py:1379 msgid "Downloads failed" msgstr "Nedlastingar feila" #: src/gpodder/gtkui/main.py:1383 #, fuzzy msgid "Could not sync some episodes:" msgstr "Klarte ikkje leggja til somme podkastar" #: src/gpodder/gtkui/main.py:1385 src/gpodder/gtkui/main.py:1388 #, fuzzy msgid "Device synchronization finished" msgstr "Eining synkronisert" #: src/gpodder/gtkui/main.py:1391 #, fuzzy msgid "Device synchronization failed" msgstr "Eining synkronisert" #: src/gpodder/gtkui/main.py:1434 #, python-format msgid "%(count)d more episode" msgid_plural "%(count)d more episodes" msgstr[0] "" msgstr[1] "" #: src/gpodder/gtkui/main.py:1508 msgid "Start download now" msgstr "Start nedlasting no" #: src/gpodder/gtkui/main.py:1510 src/gpodder/gtkui/main.py:1719 #: src/gpodder/gtkui/desktop/episodeselector.py:144 #: share/gpodder/ui/gtk/gpodder.ui.h:20 msgid "Download" msgstr "Last ned" #: src/gpodder/gtkui/main.py:1511 share/gpodder/ui/gtk/gpodder.ui.h:21 msgid "Cancel" msgstr "Avbryt" #: src/gpodder/gtkui/main.py:1512 msgid "Pause" msgstr "Pause" #: src/gpodder/gtkui/main.py:1514 msgid "Remove from list" msgstr "Fjern frУЅ lista" #: src/gpodder/gtkui/main.py:1553 share/gpodder/ui/gtk/gpodder.ui.h:13 msgid "Update podcast" msgstr "Oppdater podkast" #: src/gpodder/gtkui/main.py:1560 msgid "Open download folder" msgstr "Opna nedlastingsmappe" #: src/gpodder/gtkui/main.py:1566 #, fuzzy msgid "Mark episodes as old" msgstr "Merk episode som avspelt" #: src/gpodder/gtkui/main.py:1570 src/gpodder/gtkui/main.py:1778 msgid "Archive" msgstr "" #: src/gpodder/gtkui/main.py:1575 msgid "Remove podcast" msgstr "Fjern podkast" #: src/gpodder/gtkui/main.py:1590 share/gpodder/ui/gtk/gpodder.ui.h:10 msgid "Podcast settings" msgstr "Podkastinnstillingar" #: src/gpodder/gtkui/main.py:1650 msgid "Error converting file." msgstr "Klarte ikkje konvertera fil." #: src/gpodder/gtkui/main.py:1650 msgid "Bluetooth file transfer" msgstr "FiloverfУИring via BlУЅtann" #: src/gpodder/gtkui/main.py:1709 msgid "Preview" msgstr "" #: src/gpodder/gtkui/main.py:1711 msgid "Stream" msgstr "Straum" #: src/gpodder/gtkui/main.py:1755 msgid "Send to" msgstr "Send til" #: src/gpodder/gtkui/main.py:1757 msgid "Local folder" msgstr "Lokal mappe" #: src/gpodder/gtkui/main.py:1762 msgid "Bluetooth device" msgstr "BlУЅtanneining" #: src/gpodder/gtkui/main.py:1769 msgid "New" msgstr "Ny" #: src/gpodder/gtkui/main.py:1785 share/gpodder/ui/gtk/gpodder.ui.h:25 msgid "Episode details" msgstr "Episodedetaljar" #: src/gpodder/gtkui/main.py:1938 msgid "Please check your media player settings in the preferences dialog." msgstr "Sjekk mediaspelarinnstillingane dine i innstillingsdialogen." #: src/gpodder/gtkui/main.py:1939 msgid "Error opening player" msgstr "Klarte ikkje opna spelar" #: src/gpodder/gtkui/main.py:2178 msgid "Adding podcasts" msgstr "Legg til podkast" #: src/gpodder/gtkui/main.py:2179 msgid "Please wait while episode information is downloaded." msgstr "Vent medan episodeinformasjon vert lasta ned." #: src/gpodder/gtkui/main.py:2186 msgid "Existing subscriptions skipped" msgstr "Eksisterande abonnement er hoppa over" #: src/gpodder/gtkui/main.py:2187 msgid "You are already subscribed to these podcasts:" msgstr "Du abonnerer alt pУЅ desse podkastane:" #: src/gpodder/gtkui/main.py:2195 msgid "Podcast requires authentication" msgstr "Podkast krev autentisering" #: src/gpodder/gtkui/main.py:2196 #, python-format msgid "Please login to %s:" msgstr "Logg inn til %s:" #: src/gpodder/gtkui/main.py:2204 src/gpodder/gtkui/main.py:2299 msgid "Authentication failed" msgstr "Autentisering feila" #: src/gpodder/gtkui/main.py:2210 msgid "Website redirection detected" msgstr "Nettstadsomadressering oppdaga" #: src/gpodder/gtkui/main.py:2211 #, python-format msgid "The URL %(url)s redirects to %(target)s." msgstr "Adressa %(url)s vert omadressert til %(target)s." #: src/gpodder/gtkui/main.py:2212 msgid "Do you want to visit the website now?" msgstr "Vil du vitje nettstaden no?" #: src/gpodder/gtkui/main.py:2221 msgid "Could not add some podcasts" msgstr "Klarte ikkje leggja til somme podkastar" #: src/gpodder/gtkui/main.py:2222 msgid "Some podcasts could not be added to your list:" msgstr "Klarte ikkje leggja til somme podkastar til lista di:" #: src/gpodder/gtkui/main.py:2224 msgid "Unknown" msgstr "Ukjend" #: src/gpodder/gtkui/main.py:2308 msgid "Redirection detected" msgstr "Omadressering oppdaga" #: src/gpodder/gtkui/main.py:2342 msgid "Merging episode actions" msgstr "Flett saman episodehandlingar" #: src/gpodder/gtkui/main.py:2343 msgid "Episode actions from gpodder.net are merged." msgstr "Episodehandlingar frУЅ gpodder.net er fletta saman." #: src/gpodder/gtkui/main.py:2368 msgid "Cancelling..." msgstr "Avbryt т€І" #: src/gpodder/gtkui/main.py:2377 msgid "Please connect to a network, then try again." msgstr "" #: src/gpodder/gtkui/main.py:2378 #, fuzzy msgid "No network connection" msgstr "Nytt namn:" #: src/gpodder/gtkui/main.py:2399 #, python-format msgid "Updating %(count)d feed..." msgid_plural "Updating %(count)d feeds..." msgstr[0] "" msgstr[1] "" #: src/gpodder/gtkui/main.py:2417 #, python-format msgid "Error while updating %(url)s: %(message)s" msgstr "Feil under oppdatering av %(url)s: %(message)s" #: src/gpodder/gtkui/main.py:2419 #, python-format msgid "The feed at %(url)s could not be updated." msgstr "Klarte ikkje oppdatera kjelda med adressa %(url)s" #: src/gpodder/gtkui/main.py:2420 msgid "Error while updating feed" msgstr "Klarte ikkje oppdatera kjelde" #: src/gpodder/gtkui/main.py:2435 #, python-format msgid "Updated %(podcast)s (%(position)d/%(total)d)" msgstr "Oppdatert %(podcast)s (%(position)d / %(total)d)" #: src/gpodder/gtkui/main.py:2466 msgid "No new episodes" msgstr "Ingen nye episodar" #: src/gpodder/gtkui/main.py:2479 #, python-format msgid "Downloading %(count)d new episode." msgid_plural "Downloading %(count)d new episodes." msgstr[0] "" msgstr[1] "" #: src/gpodder/gtkui/main.py:2480 src/gpodder/gtkui/main.py:2484 #: src/gpodder/gtkui/main.py:2833 msgid "New episodes available" msgstr "Nye episodar tilgjengeleg" #: src/gpodder/gtkui/main.py:2483 #, python-format msgid "%(count)d new episode added to download list." msgid_plural "%(count)d new episodes added to download list." msgstr[0] "" msgstr[1] "" #: src/gpodder/gtkui/main.py:2490 #, python-format msgid "%(count)d new episode available" msgid_plural "%(count)d new episodes available" msgstr[0] "" msgstr[1] "" #: src/gpodder/gtkui/main.py:2509 msgid "Quit gPodder" msgstr "Avslutt gPodder" #: src/gpodder/gtkui/main.py:2510 msgid "" "You are downloading episodes. You can resume downloads the next time you " "start gPodder. Do you want to quit now?" msgstr "" "Du lastar ned episodar. Du kan fortsetja nedlastingane neste gong du startar " "gPodder. Vil du avslutta no?" #: src/gpodder/gtkui/main.py:2559 msgid "Episodes are locked" msgstr "Episodane er lУЅst" #: src/gpodder/gtkui/main.py:2560 msgid "" "The selected episodes are locked. Please unlock the episodes that you want " "to delete before trying to delete them." msgstr "" "Dei valde episodane er lУЅst. LУЅs opp dei episodane du vil sletta og prУИv om " "att." #: src/gpodder/gtkui/main.py:2565 #, python-format msgid "Delete %(count)d episode?" msgid_plural "Delete %(count)d episodes?" msgstr[0] "" msgstr[1] "" #: src/gpodder/gtkui/main.py:2566 msgid "Deleting episodes removes downloaded files." msgstr "Sletting av episodar fjernar nedlasta filer." #: src/gpodder/gtkui/main.py:2571 msgid "Deleting episodes" msgstr "Slettar episodar" #: src/gpodder/gtkui/main.py:2572 msgid "Please wait while episodes are deleted" msgstr "Vent medan episodane vert sletta" #: src/gpodder/gtkui/main.py:2625 #, python-format msgid "Select older than %(count)d day" msgid_plural "Select older than %(count)d days" msgstr[0] "" msgstr[1] "" #: src/gpodder/gtkui/main.py:2627 msgid "Select played" msgstr "Vel avspela" #: src/gpodder/gtkui/main.py:2628 #, fuzzy msgid "Select finished" msgstr "Vel ingen" #: src/gpodder/gtkui/main.py:2632 msgid "Select the episodes you want to delete:" msgstr "Vel episodane du vil sletta:" #: src/gpodder/gtkui/main.py:2648 share/gpodder/ui/gtk/gpodder.ui.h:4 msgid "Delete episodes" msgstr "Slett episodar" #: src/gpodder/gtkui/main.py:2703 src/gpodder/gtkui/main.py:2934 #: src/gpodder/gtkui/main.py:3034 msgid "No podcast selected" msgstr "Ingen podkastar valde" #: src/gpodder/gtkui/main.py:2704 msgid "Please select a podcast in the podcasts list to update." msgstr "Vel ein podkast i lista som du vil oppdatera." #: src/gpodder/gtkui/main.py:2774 #, python-format msgid "Download error while downloading %(episode)s: %(message)s" msgstr "Det oppstod ein feil under nedlasting av %(episode)s: %(message)s" #: src/gpodder/gtkui/main.py:2775 msgid "Download error" msgstr "Nedlastingsfeil" #: src/gpodder/gtkui/main.py:2818 msgid "Select the episodes you want to download:" msgstr "Vel episodane du vil lasta ned:" #: src/gpodder/gtkui/main.py:2841 msgid "Mark as old" msgstr "Merk som gammal" #: src/gpodder/gtkui/main.py:2848 msgid "Please check for new episodes later." msgstr "Sjekk etter nye episodar seinare." #: src/gpodder/gtkui/main.py:2849 msgid "No new episodes available" msgstr "Ingen nye episodar tilgjengeleg." #: src/gpodder/gtkui/main.py:2900 msgid "Login to gpodder.net" msgstr "Logg inn til gpodder.net" #: src/gpodder/gtkui/main.py:2901 msgid "Please login to download your subscriptions." msgstr "Logg inn for УЅ lasta ned abonnementa dine." #: src/gpodder/gtkui/main.py:2916 msgid "Subscriptions on gpodder.net" msgstr "Abonnent pУЅ gpodder.net" #: src/gpodder/gtkui/main.py:2935 msgid "Please select a podcast in the podcasts list to edit." msgstr "Vel ein podkast i lista for УЅ redigera" #: src/gpodder/gtkui/main.py:2949 msgid "Podcast" msgstr "Podkast" #: src/gpodder/gtkui/main.py:2955 share/gpodder/ui/gtk/gpodder.ui.h:12 msgid "Remove podcasts" msgstr "Fjern podkastar" #: src/gpodder/gtkui/main.py:2956 msgid "Select the podcast you want to remove." msgstr "Vel podkastane du vil sletta." #: src/gpodder/gtkui/main.py:2960 #: src/gpodder/gtkui/desktop/episodeselector.py:105 msgid "Remove" msgstr "Fjern" #: src/gpodder/gtkui/main.py:2969 msgid "Removing podcast" msgstr "Fjernar podkast" #: src/gpodder/gtkui/main.py:2970 msgid "Please wait while the podcast is removed" msgstr "Vent medan podkasten vert fjerna" #: src/gpodder/gtkui/main.py:2971 msgid "Do you really want to remove this podcast and its episodes?" msgstr "Vil du fjerna denne podkasten og alle nedlasta episodar?" #: src/gpodder/gtkui/main.py:2973 msgid "Removing podcasts" msgstr "Fjernar podkastar" #: src/gpodder/gtkui/main.py:2974 msgid "Please wait while the podcasts are removed" msgstr "Vent medan podkastane vert fjerna" #: src/gpodder/gtkui/main.py:2975 msgid "Do you really want to remove the selected podcasts and their episodes?" msgstr "Vil du fjerna denne podkasten og alle nedlasta episodar?" #: src/gpodder/gtkui/main.py:3035 msgid "Please select a podcast in the podcasts list to remove." msgstr "Vel ein podkast i lista for УЅ fjerna." #: src/gpodder/gtkui/main.py:3045 msgid "OPML files" msgstr "OMPL-filer" #: src/gpodder/gtkui/main.py:3050 msgid "Import from OPML" msgstr "Importer frУЅ OPML" #: src/gpodder/gtkui/main.py:3064 msgid "Import podcasts from OPML file" msgstr "Importer podkastar frУЅ OPML-fil" #: src/gpodder/gtkui/main.py:3071 msgid "Nothing to export" msgstr "Ingenting УЅ eksportera" #: src/gpodder/gtkui/main.py:3072 msgid "" "Your list of podcast subscriptions is empty. Please subscribe to some " "podcasts first before trying to export your subscription list." msgstr "" "Lista di over podkastabonnement er tom. Abonner pУЅ nokre podkastar fУИr du " "prУИver УЅ eksportera abonnementslista di." #: src/gpodder/gtkui/main.py:3076 msgid "Export to OPML" msgstr "Eksporter til OPML" #: src/gpodder/gtkui/main.py:3087 #, python-format msgid "%(count)d subscription exported" msgid_plural "%(count)d subscriptions exported" msgstr[0] "" msgstr[1] "" #: src/gpodder/gtkui/main.py:3088 msgid "Your podcast list has been successfully exported." msgstr "Podkastlista di er eksportert." #: src/gpodder/gtkui/main.py:3090 msgid "Could not export OPML to file. Please check your permissions." msgstr "Klarte ikkje eksportera til OPML-fil. Sjekk rettane dine." #: src/gpodder/gtkui/main.py:3090 msgid "OPML export failed" msgstr "Klarte ikkje eksportera OPML" #: src/gpodder/gtkui/main.py:3117 #, fuzzy msgid "No updates available" msgstr "Ingen episodar tilgjengeleg" #: src/gpodder/gtkui/main.py:3118 msgid "You have the latest version of gPodder." msgstr "" #: src/gpodder/gtkui/main.py:3122 #, fuzzy msgid "New version available" msgstr "Nye episodar tilgjengeleg" #: src/gpodder/gtkui/main.py:3124 #, python-format msgid "Installed version: %s" msgstr "" #: src/gpodder/gtkui/main.py:3125 #, fuzzy, python-format msgid "Newest version: %s" msgstr "Slettar: %s" #: src/gpodder/gtkui/main.py:3126 #, fuzzy, python-format msgid "Release date: %s" msgstr "Utgjeven: %s" #: src/gpodder/gtkui/main.py:3128 #, fuzzy msgid "Download the latest version from gpodder.org?" msgstr "Last ned mine abonnement frУЅ gpodder.net" #: src/gpodder/gtkui/main.py:3141 #, fuzzy msgid "About gPodder" msgstr "Avslutt gPodder" #: src/gpodder/gtkui/main.py:3424 #, fuzzy msgid "Please register a YouTube API key and set it in the preferences." msgstr "Set opp eininga di i innstillingsdialogen." #: src/gpodder/gtkui/main.py:3425 msgid "Would you like to set up an API key now?" msgstr "" #: src/gpodder/gtkui/main.py:3425 msgid "API key required" msgstr "" #: src/gpodder/gtkui/main.py:3444 bin/gpo:631 #, fuzzy msgid "No unique URL found" msgstr "Ingen kanalar funne" #: src/gpodder/gtkui/main.py:3449 bin/gpo:637 #, fuzzy msgid "Already subscribed" msgstr "Klarte ikkje synkronisera til iPod" #: src/gpodder/gtkui/main.py:3458 bin/gpo:649 #, python-format msgid "Make sure the API key is correct. Error: %(message)s" msgstr "" #: src/gpodder/gtkui/main.py:3459 #, fuzzy msgid "Error getting YouTube channels" msgstr "Klarte ikkje stilla innstilling." #: src/gpodder/gtkui/main.py:3462 msgid "Successfully migrated subscriptions" msgstr "" #: src/gpodder/gtkui/main.py:3464 #, fuzzy msgid "Subscriptions are up to date" msgstr "_Abonnement" #: src/gpodder/gtkui/main.py:3467 msgid "These URLs failed:" msgstr "" #: src/gpodder/gtkui/main.py:3469 #, fuzzy msgid "Could not migrate some subscriptions" msgstr "Klarte ikkje leggja til somme podkastar" #: src/gpodder/gtkui/main.py:3493 msgid "Cannot start gPodder" msgstr "Klarte ikkje starta gPodder" #: src/gpodder/gtkui/main.py:3494 #, python-format msgid "D-Bus error: %s" msgstr "D-Bus-feil: %s" #: src/gpodder/gtkui/model.py:68 #, python-format msgid "released %s" msgstr "Utgjeven %s" #: src/gpodder/gtkui/model.py:69 src/gpodder/gtkui/model.py:87 #: src/gpodder/gtkui/model.py:237 src/gpodder/gtkui/shownotes.py:84 #, python-format msgid "from %s" msgstr "FrУЅ %s" #: src/gpodder/gtkui/model.py:80 src/gpodder/gtkui/model.py:393 msgid "played" msgstr "avspela" #: src/gpodder/gtkui/model.py:82 msgid "unplayed" msgstr "ikkje spela" #: src/gpodder/gtkui/model.py:85 msgid "today" msgstr "idag" #: src/gpodder/gtkui/model.py:86 #, python-format msgid "downloaded %s" msgstr "lasta ned %s" #: src/gpodder/gtkui/model.py:337 msgid "Deleted" msgstr "Sletta" #: src/gpodder/gtkui/model.py:342 msgid "New episode" msgstr "Ny episode" #: src/gpodder/gtkui/model.py:356 msgid "Downloaded episode" msgstr "Nedlasta episode" #: src/gpodder/gtkui/model.py:359 msgid "Downloaded video episode" msgstr "Nedlasta filmepisode" #: src/gpodder/gtkui/model.py:362 msgid "Downloaded image" msgstr "Nedlasta bilete" #: src/gpodder/gtkui/model.py:365 msgid "Downloaded file" msgstr "Nedlasta fil" #: src/gpodder/gtkui/model.py:380 msgid "missing file" msgstr "manglande fil" #: src/gpodder/gtkui/model.py:384 msgid "never displayed" msgstr "aldri vist" #: src/gpodder/gtkui/model.py:386 msgid "never played" msgstr "aldri avspela" #: src/gpodder/gtkui/model.py:388 msgid "never opened" msgstr "aldri opna" #: src/gpodder/gtkui/model.py:391 msgid "displayed" msgstr "vist" #: src/gpodder/gtkui/model.py:395 msgid "opened" msgstr "opna" #: src/gpodder/gtkui/model.py:397 msgid "deletion prevented" msgstr "sletting avverga" #: src/gpodder/gtkui/model.py:432 share/gpodder/ui/gtk/gpodder.ui.h:32 msgid "All episodes" msgstr "Alle episodar" #: src/gpodder/gtkui/model.py:433 msgid "from all podcasts" msgstr "frУЅ alle podkastar" #: src/gpodder/gtkui/model.py:625 #, fuzzy msgid "Subscription paused" msgstr "_Abonnement" #: src/gpodder/gtkui/shownotes.py:118 #, fuzzy msgid "Please select an episode" msgstr "Vel episodar" #: src/gpodder/gtkui/interface/addpodcast.py:74 msgid "Nothing to paste." msgstr "Ingenting УЅ lima inn." #: src/gpodder/gtkui/interface/addpodcast.py:74 msgid "Clipboard is empty" msgstr "Utklippstavle er tom" #: src/gpodder/gtkui/interface/common.py:160 msgid "Username" msgstr "Brukarnamn" #: src/gpodder/gtkui/interface/common.py:163 msgid "New user" msgstr "Ny brukar" #: src/gpodder/gtkui/interface/common.py:170 msgid "Login" msgstr "Logg inn" #: src/gpodder/gtkui/interface/common.py:172 msgid "Authentication required" msgstr "Autentisering trengst" #: src/gpodder/gtkui/interface/common.py:203 msgid "Password" msgstr "Passord" #: src/gpodder/gtkui/interface/common.py:225 msgid "Select destination" msgstr "Vel mУЅl" #: src/gpodder/gtkui/interface/configeditor.py:34 msgid "Setting" msgstr "Innstilling" #: src/gpodder/gtkui/interface/configeditor.py:41 msgid "Set to" msgstr "Set til" #: src/gpodder/gtkui/interface/configeditor.py:81 #, python-format msgid "Cannot set %(field)s to %(value)s. Needed data type: %(datatype)s" msgstr "" "Klarte ikkje setja %(field)s til %(value)s. PУЅkravt datatype: %(datatype)s" #: src/gpodder/gtkui/interface/configeditor.py:85 msgid "Error setting option" msgstr "Klarte ikkje stilla innstilling." #: src/gpodder/gtkui/desktop/channel.py:100 #, fuzzy msgid "Add section" msgstr "Handling" #: src/gpodder/gtkui/desktop/channel.py:100 #, fuzzy msgid "New section:" msgstr "Nytt namn:" #: src/gpodder/gtkui/desktop/channel.py:133 msgid "Select new podcast cover artwork" msgstr "Vel nytt podkastomslagsbilete" #: src/gpodder/gtkui/desktop/channel.py:161 msgid "You can only drop a single image or URL here." msgstr "Du kan berre sleppa eit enkelt bilete eller ei adresse her." #: src/gpodder/gtkui/desktop/channel.py:161 #: src/gpodder/gtkui/desktop/channel.py:171 msgid "Drag and drop" msgstr "Dreg og slepp" #: src/gpodder/gtkui/desktop/channel.py:171 msgid "You can only drop local files and http:// URLs here." msgstr "Du kan berre sleppa lokale filer og HTTP-adresser her." #: src/gpodder/gtkui/desktop/deviceplaylist.py:98 #, fuzzy, python-format msgid "Folder %s could not be created." msgstr "Klarte ikkje oppdatera kjelda med adressa %(url)s" #: src/gpodder/gtkui/desktop/deviceplaylist.py:98 #, fuzzy msgid "Error writing playlist" msgstr "Klarte ikkje opna spelar" #: src/gpodder/gtkui/desktop/episodeselector.py:288 #: share/gpodder/ui/gtk/gpodderepisodeselector.ui.h:2 msgid "Select all" msgstr "Vel alt" #: src/gpodder/gtkui/desktop/episodeselector.py:292 #: share/gpodder/ui/gtk/gpodderepisodeselector.ui.h:3 msgid "Select none" msgstr "Vel ingen" #: src/gpodder/gtkui/desktop/episodeselector.py:324 msgid "Nothing selected" msgstr "Ingen vald" #: src/gpodder/gtkui/desktop/episodeselector.py:325 #, python-format msgid "%(count)d episode" msgid_plural "%(count)d episodes" msgstr[0] "" msgstr[1] "" #: src/gpodder/gtkui/desktop/episodeselector.py:327 #, python-format msgid "size: %s" msgstr "storleik: %s" #: src/gpodder/gtkui/desktop/podcastdirectory.py:238 #, fuzzy msgid "Loading podcasts" msgstr "Legg til podkast" #: src/gpodder/gtkui/desktop/podcastdirectory.py:239 #, fuzzy msgid "Please wait while the podcast list is downloaded" msgstr "Vent medan podkasten vert fjerna" #: src/gpodder/gtkui/desktop/preferences.py:51 #: src/gpodder/gtkui/desktop/preferences.py:93 msgid "Do nothing" msgstr "Gjer ingenting" #: src/gpodder/gtkui/desktop/preferences.py:52 msgid "Show episode list" msgstr "Vis episodeliste" #: src/gpodder/gtkui/desktop/preferences.py:53 msgid "Add to download list" msgstr "Legg til nedlasting" #: src/gpodder/gtkui/desktop/preferences.py:54 msgid "Download immediately" msgstr "Last ned no" #: src/gpodder/gtkui/desktop/preferences.py:72 msgid "None" msgstr "Ingen" #: src/gpodder/gtkui/desktop/preferences.py:73 msgid "iPod" msgstr "" #: src/gpodder/gtkui/desktop/preferences.py:74 msgid "Filesystem-based" msgstr "Filsystembasert" #: src/gpodder/gtkui/desktop/preferences.py:94 #, fuzzy msgid "Mark as played" msgstr "Merk som uavspelt" #: src/gpodder/gtkui/desktop/preferences.py:95 #, fuzzy msgid "Delete from gPodder" msgstr "Slett han frУЅ gPodder" #: src/gpodder/gtkui/desktop/preferences.py:123 #, fuzzy, python-format msgid "Custom (%(format_ids)s)" msgstr "Tilpassa formatstrengar" #: src/gpodder/gtkui/desktop/preferences.py:318 msgid "Name" msgstr "" #: src/gpodder/gtkui/desktop/preferences.py:369 msgid "Documentation" msgstr "" #: src/gpodder/gtkui/desktop/preferences.py:374 msgid "Extension info" msgstr "" #: src/gpodder/gtkui/desktop/preferences.py:379 msgid "Support the author" msgstr "" #: src/gpodder/gtkui/desktop/preferences.py:413 msgid "Extension cannot be activated" msgstr "" #: src/gpodder/gtkui/desktop/preferences.py:426 msgid "Extension module info" msgstr "" #: src/gpodder/gtkui/desktop/preferences.py:463 msgid "Configure audio player" msgstr "Set opp lydeining" #: src/gpodder/gtkui/desktop/preferences.py:464 #: src/gpodder/gtkui/desktop/preferences.py:474 msgid "Command:" msgstr "Kommando:" #: src/gpodder/gtkui/desktop/preferences.py:473 msgid "Configure video player" msgstr "Set opp filmspelar" #: src/gpodder/gtkui/desktop/preferences.py:485 #: src/gpodder/gtkui/desktop/preferences.py:503 msgid "manually" msgstr "manuelt" #: src/gpodder/gtkui/desktop/preferences.py:505 #, python-format msgid "after %(count)d day" msgid_plural "after %(count)d days" msgstr[0] "" msgstr[1] "" #: src/gpodder/gtkui/desktop/preferences.py:541 msgid "Replace subscription list on server" msgstr "Byt ut abonnementlista pУЅ tenaren" #: src/gpodder/gtkui/desktop/preferences.py:542 msgid "" "Remote podcasts that have not been added locally will be removed on the " "server. Continue?" msgstr "" "Eksterne podkastar som ikkje har vorte lagt til lokalt vil verta fjerna pУЅ " "tenaren. Vil du fortsetja?" #: src/gpodder/gtkui/desktop/preferences.py:621 msgid "Select folder for mount point" msgstr "Vel mappe som monteringspunkt" #: src/gpodder/gtkui/desktop/preferences.py:638 #, fuzzy msgid "Select folder for playlists" msgstr "Vel mappe som monteringspunkt" #: src/gpodder/gtkui/desktop/sync.py:86 msgid "No device configured" msgstr "Inga eining er sett opp" #: src/gpodder/gtkui/desktop/sync.py:87 msgid "Please set up your device in the preferences dialog." msgstr "Set opp eininga di i innstillingsdialogen." #: src/gpodder/gtkui/desktop/sync.py:91 msgid "Cannot open device" msgstr "Klarte ikkje opna eining" #: src/gpodder/gtkui/desktop/sync.py:92 msgid "Please check the settings in the preferences dialog." msgstr "Sjekk innstillingane i innstillingsdialogen." #: src/gpodder/gtkui/desktop/sync.py:139 msgid "Not enough space left on device" msgstr "Ikkje nok plass att pУЅ eininga" #: src/gpodder/gtkui/desktop/sync.py:140 #, fuzzy, python-format msgid "" "Additional free space required: %(required_space)s\n" "Do you want to continue?" msgstr "" "Du mУЅ frigjera %s.\n" "Vil du fortsetja?" #: src/gpodder/gtkui/desktop/sync.py:199 #, fuzzy msgid "Update successful" msgstr "Opplastinga av liste var vellykka." #: src/gpodder/gtkui/desktop/sync.py:200 msgid "The playlist on your MP3 player has been updated." msgstr "" #: src/gpodder/gtkui/desktop/sync.py:274 msgid "Episodes have been deleted on device" msgstr "" #: src/gpodder/gtkui/desktop/sync.py:285 #, fuzzy msgid "Error writing playlist files" msgstr "Klarte ikkje konvertera fil." #: src/gpodder/plugins/soundcloud.py:154 msgid "Unknown track" msgstr "Ukjent spor" #: src/gpodder/plugins/soundcloud.py:181 #, python-format msgid "%s on Soundcloud" msgstr "%s pУЅ Soundcloud" #: src/gpodder/plugins/soundcloud.py:190 #, python-format msgid "Tracks published by %s on Soundcloud." msgstr "Spor publisert av %s pУЅ Soundcloud" #: src/gpodder/plugins/soundcloud.py:217 #, python-format msgid "%s's favorites on Soundcloud" msgstr "%ss favorittar pУЅ Soundcloud" #: src/gpodder/plugins/soundcloud.py:223 #, python-format msgid "Tracks favorited by %s on Soundcloud." msgstr "Spor favorisert av %s pУЅ Soundcloud." #: share/gpodder/extensions/audio_converter.py:20 #, fuzzy msgid "Convert audio files" msgstr "Klarte ikkje konvertera fil." #: share/gpodder/extensions/audio_converter.py:21 msgid "Transcode audio files to mp3/ogg" msgstr "" #: share/gpodder/extensions/audio_converter.py:84 #: share/gpodder/extensions/video_converter.py:86 #, python-format msgid "Convert to %(format)s" msgstr "" #: share/gpodder/extensions/audio_converter.py:111 #: share/gpodder/extensions/rockbox_convert2mp4.py:65 #: share/gpodder/extensions/video_converter.py:111 #, fuzzy msgid "File converted" msgstr "iPod OGG-konverterer" #: share/gpodder/extensions/audio_converter.py:114 #: share/gpodder/extensions/video_converter.py:114 #, fuzzy msgid "Conversion failed" msgstr "Klarte ikkje konvertera fil." #: share/gpodder/extensions/concatenate_videos.py:20 #: share/gpodder/extensions/concatenate_videos.py:100 #, fuzzy msgid "Concatenate videos" msgstr "Klarte ikkje konvertera fil." #: share/gpodder/extensions/concatenate_videos.py:21 msgid "Add a context menu item for concatenating multiple videos" msgstr "" #: share/gpodder/extensions/concatenate_videos.py:37 msgid "Save video" msgstr "" #: share/gpodder/extensions/concatenate_videos.py:66 #, fuzzy msgid "Concatenating video files" msgstr "Klarte ikkje konvertera fil." #: share/gpodder/extensions/concatenate_videos.py:67 #, python-format msgid "Writing %(filename)s" msgstr "" #: share/gpodder/extensions/concatenate_videos.py:78 msgid "Videos successfully converted" msgstr "" #: share/gpodder/extensions/concatenate_videos.py:79 #, fuzzy msgid "Error converting videos" msgstr "Klarte ikkje konvertera fil." #: share/gpodder/extensions/concatenate_videos.py:80 msgid "Concatenation result" msgstr "" #: share/gpodder/extensions/enqueue_in_mediaplayer.py:16 msgid "Enqueue in media players" msgstr "" #: share/gpodder/extensions/enqueue_in_mediaplayer.py:17 msgid "" "Add a context menu item for enqueueing episodes in installed media players" msgstr "" #: share/gpodder/extensions/enqueue_in_mediaplayer.py:35 msgid "Enqueue in" msgstr "" #: share/gpodder/extensions/episode_website_context_menu.py:14 msgid "\"Open website\" episode context menu" msgstr "" #: share/gpodder/extensions/episode_website_context_menu.py:15 msgid "Add a context menu item for opening the website of an episode" msgstr "" #: share/gpodder/extensions/episode_website_context_menu.py:30 #, fuzzy msgid "Open website" msgstr "Nettstad:" #: share/gpodder/extensions/gtk_statusicon.py:14 msgid "Gtk Status Icon" msgstr "" #: share/gpodder/extensions/gtk_statusicon.py:15 msgid "Show a status icon for Gtk-based Desktops." msgstr "" #: share/gpodder/extensions/minimize_on_start.py:10 msgid "Minimize on start" msgstr "" #: share/gpodder/extensions/minimize_on_start.py:11 msgid "Minimizes the gPodder window on startup." msgstr "" #: share/gpodder/extensions/mpris-listener.py:33 msgid "MPRIS Listener" msgstr "" #: share/gpodder/extensions/mpris-listener.py:34 msgid "Convert MPRIS notifications to gPodder Media Player D-Bus API" msgstr "" #: share/gpodder/extensions/normalize_audio.py:21 msgid "Normalize audio with re-encoding" msgstr "" #: share/gpodder/extensions/normalize_audio.py:22 msgid "Normalize the volume of audio files with normalize-audio" msgstr "" #: share/gpodder/extensions/normalize_audio.py:99 #, fuzzy msgid "File normalized" msgstr "Filnamn" #: share/gpodder/extensions/rename_download.py:16 #, fuzzy msgid "Rename episodes after download" msgstr "У‰in ny episode er klar for nedlasting" #: share/gpodder/extensions/rename_download.py:17 #, fuzzy msgid "Rename episodes to \".\" on download" msgstr "У‰in ny episode er klar for nedlasting" #: share/gpodder/extensions/rm_ogg_cover.py:37 #, fuzzy msgid "Remove cover art from OGG files" msgstr "Vel omslag frУЅ fil" #: share/gpodder/extensions/rm_ogg_cover.py:38 msgid "removes coverart from all downloaded ogg files" msgstr "" #: share/gpodder/extensions/rm_ogg_cover.py:66 #, fuzzy msgid "Remove cover art" msgstr "Fjern nytt merke" #: share/gpodder/extensions/rockbox_convert2mp4.py:26 msgid "Convert video files to MP4 for Rockbox" msgstr "" #: share/gpodder/extensions/rockbox_convert2mp4.py:27 msgid "Converts all videos to a Rockbox-compatible format" msgstr "" #: share/gpodder/extensions/sonos.py:19 share/gpodder/extensions/sonos.py:78 msgid "Stream to Sonos" msgstr "" #: share/gpodder/extensions/sonos.py:20 msgid "Stream podcasts to Sonos speakers" msgstr "" #: share/gpodder/extensions/tagging.py:45 msgid "Tag downloaded files using Mutagen" msgstr "" #: share/gpodder/extensions/tagging.py:46 #, fuzzy msgid "Add episode and podcast titles to MP3/OGG tags" msgstr "Vis ТЋAlle episodarТЛ i podkastliste" #: share/gpodder/extensions/taskbar_progress.py:28 msgid "Show download progress on the taskbar" msgstr "" #: share/gpodder/extensions/taskbar_progress.py:29 msgid "Displays the progress on the Windows taskbar." msgstr "" #: share/gpodder/extensions/ted_subtitles.py:16 msgid "Subtitle Downloader for TED Talks" msgstr "" #: share/gpodder/extensions/ted_subtitles.py:17 msgid "Downloads .srt subtitles for TED Talks Videos" msgstr "" #: share/gpodder/extensions/ubuntu_appindicator.py:10 msgid "Ubuntu App Indicator" msgstr "" #: share/gpodder/extensions/ubuntu_appindicator.py:11 msgid "Show a status indicator in the top bar." msgstr "" #: share/gpodder/extensions/ubuntu_appindicator.py:47 msgid "Show main window" msgstr "" #: share/gpodder/extensions/ubuntu_appindicator.py:57 #: share/gpodder/ui/gtk/gpodder.ui.h:6 msgid "Quit" msgstr "Avslutt" #: share/gpodder/extensions/ubuntu_unity.py:10 msgid "Ubuntu Unity Integration" msgstr "" #: share/gpodder/extensions/ubuntu_unity.py:11 msgid "Show download progress in the Unity Launcher icon." msgstr "" #: share/gpodder/extensions/update_feeds_on_startup.py:14 #, fuzzy msgid "Search for new episodes on startup" msgstr "SjУЅ etter nye episodar under oppstart" #: share/gpodder/extensions/update_feeds_on_startup.py:15 #, fuzzy msgid "Starts the search for new episodes on startup" msgstr "SjУЅ etter nye episodar under oppstart" #: share/gpodder/extensions/video_converter.py:22 #, fuzzy msgid "Convert video files" msgstr "Klarte ikkje konvertera fil." #: share/gpodder/extensions/video_converter.py:23 msgid "Transcode video files to avi/mp4/m4v" msgstr "" #: share/gpodder/ui/gtk/gpodderaddpodcast.ui.h:1 msgid "Add a new podcast" msgstr "Legg til ein ny podkast" #: share/gpodder/ui/gtk/gpodderaddpodcast.ui.h:2 msgid "URL:" msgstr "Adresse:" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:1 msgid "gPodder Podcast Editor" msgstr "Podkastendrar" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:2 #, fuzzy msgid "Section:" msgstr "Handling" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:3 #, fuzzy msgid "Disable feed updates (pause subscription)" msgstr "Bruk smart kjeldeoppdatering" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:4 #, fuzzy msgid "Synchronize to MP3 player devices" msgstr "Synkroniserer til spelar" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:5 #, fuzzy msgid "Strategy:" msgstr "Slettingstrategi" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:6 #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:6 msgid "General" msgstr "Generelt" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:7 msgid "HTTP/FTP Authentication" msgstr "HTTP/FTP-autentisering" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:8 #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:13 msgid "Username:" msgstr "Brukarnamn:" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:9 #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:14 msgid "Password:" msgstr "Passord:" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:10 msgid "Locations" msgstr "Plasseringar" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:11 msgid "Download to:" msgstr "Last ned til:" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:12 msgid "Website:" msgstr "Nettstad:" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:13 msgid "website label" msgstr "nettstadsetikett" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:14 msgid "Advanced" msgstr "Avansert" #: share/gpodder/ui/gtk/gpodderconfigeditor.ui.h:1 msgid "gPodder Configuration Editor" msgstr "Innstillingsendrar" #: share/gpodder/ui/gtk/gpodderconfigeditor.ui.h:2 msgid "Search for:" msgstr "SУИk etter:" #: share/gpodder/ui/gtk/gpodderconfigeditor.ui.h:3 msgid "Show All" msgstr "Vis alt" #: share/gpodder/ui/gtk/gpodderepisodeselector.ui.h:1 msgid "Select episodes" msgstr "Vel episodar" #: share/gpodder/ui/gtk/gpodderpodcastdirectory.ui.h:1 msgid "Find new podcasts" msgstr "Finn nye podkastar" #: share/gpodder/ui/gtk/gpodderpodcastdirectory.ui.h:2 msgid "Select All" msgstr "Vel alt" #: share/gpodder/ui/gtk/gpodderpodcastdirectory.ui.h:3 msgid "Select None" msgstr "Vel ingen" #: share/gpodder/ui/gtk/gpodderpodcastdirectory.ui.h:4 msgid "label" msgstr "" #: share/gpodder/ui/gtk/gpodderpodcastdirectory.ui.h:5 msgid "..." msgstr "" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:1 #: share/gpodder/ui/gtk/gpodder.ui.h:5 msgid "Preferences" msgstr "Innstillingar" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:2 msgid "Audio player:" msgstr "Lydspelar:" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:3 msgid "Video player:" msgstr "Filmspelar:" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:4 #, fuzzy msgid "\"All episodes\" in podcast list" msgstr "Vis ТЋAlle episodarТЛ i podkastliste" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:5 #, fuzzy msgid "Use sections for podcast list" msgstr "Klarte ikkje lagra podkastliste" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:7 msgid "Preferred YouTube format:" msgstr "" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:8 msgid "YouTube API key (v3):" msgstr "" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:9 msgid "Preferred Vimeo format:" msgstr "" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:11 msgid "Extensions" msgstr "" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:12 msgid "Synchronize subscriptions and episode actions" msgstr "Synkroniser abonnementar og episodehandlingar" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:15 msgid "Replace list on server with local subscriptions" msgstr "Byt ut liste pУЅ tenar med lokale abonnement" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:16 msgid "Device name:" msgstr "Einingsnamn:" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:17 msgid "gpodder.net" msgstr "gpodder.net" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:18 msgid "Update interval:" msgstr "Oppdateringsintervall:" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:19 msgid "Maximum number of episodes per podcast:" msgstr "Maksimultalet pУЅ episodar per podkast:" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:20 msgid "When new episodes are found:" msgstr "NУЅr nye episodar er funne:" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:21 msgid "Updating" msgstr "Oppdaterer" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:22 msgid "Delete played episodes:" msgstr "Slett spela episodar:" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:23 #, fuzzy msgid "Remove played episodes even if unfinished" msgstr "Fjern spela episodar frУЅ eining" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:24 msgid "Also remove unplayed episodes" msgstr "Fjern УВg uspela episodar" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:25 msgid "Clean-up" msgstr "Rydd opp" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:26 msgid "Device type:" msgstr "Einingstype:" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:27 msgid "Mountpoint:" msgstr "Monteringspunkt:" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:28 msgid "After syncing an episode:" msgstr "Etter ein episode er synkronisert:" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:29 #, fuzzy msgid "Create playlists on device" msgstr "Byt ut abonnementlista pУЅ tenaren" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:30 #, fuzzy msgid "Playlists Folder:" msgstr "Namn pУЅ spelelista:" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:31 msgid "Remove episodes deleted on device from gPodder" msgstr "" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:32 msgid "Only sync unplayed episodes" msgstr "Berre synkroniser uavspela episodar" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:33 msgid "Devices" msgstr "Einingar" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:34 msgid "Edit config" msgstr "Rediger innstillingar" #: share/gpodder/ui/gtk/gpodder.ui.h:1 msgid "_Podcasts" msgstr "_Podkastar" #: share/gpodder/ui/gtk/gpodder.ui.h:2 msgid "Check for new episodes" msgstr "Sjekk etter nye episodar" #: share/gpodder/ui/gtk/gpodder.ui.h:3 msgid "Download new episodes" msgstr "Last ned nye episodar" #: share/gpodder/ui/gtk/gpodder.ui.h:7 msgid "_Subscriptions" msgstr "_Abonnement" #: share/gpodder/ui/gtk/gpodder.ui.h:8 msgid "Discover new podcasts" msgstr "Finn nye podkastar" #: share/gpodder/ui/gtk/gpodder.ui.h:9 msgid "Add podcast via URL" msgstr "Legg til podkast via ei adresse" #: share/gpodder/ui/gtk/gpodder.ui.h:11 msgid "Unsubscribe" msgstr "Fjern abonnement" #: share/gpodder/ui/gtk/gpodder.ui.h:14 msgid "Import from OPML file" msgstr "Importer frУЅ OPML-fil" #: share/gpodder/ui/gtk/gpodder.ui.h:15 msgid "Export to OPML file" msgstr "Eksporter til OPML-fil" #: share/gpodder/ui/gtk/gpodder.ui.h:16 msgid "Go to gpodder.net" msgstr "GУЅ til gpodder.net" #: share/gpodder/ui/gtk/gpodder.ui.h:17 msgid "_Episodes" msgstr "_Episodar" #: share/gpodder/ui/gtk/gpodder.ui.h:18 msgid "Play" msgstr "Spel" #: share/gpodder/ui/gtk/gpodder.ui.h:19 msgid "Open" msgstr "Opna" #: share/gpodder/ui/gtk/gpodder.ui.h:22 msgid "Delete" msgstr "Slett" #: share/gpodder/ui/gtk/gpodder.ui.h:23 msgid "Toggle new status" msgstr "" #: share/gpodder/ui/gtk/gpodder.ui.h:24 msgid "Change delete lock" msgstr "Skift slettelУЅs" #: share/gpodder/ui/gtk/gpodder.ui.h:26 msgid "E_xtras" msgstr "" #: share/gpodder/ui/gtk/gpodder.ui.h:27 #, fuzzy msgid "Sync to device" msgstr "Synkroniser til eining" #: share/gpodder/ui/gtk/gpodder.ui.h:28 #, fuzzy msgid "Update YouTube subscriptions" msgstr "Ingen abonnement" #: share/gpodder/ui/gtk/gpodder.ui.h:29 msgid "_View" msgstr "_Vis" #: share/gpodder/ui/gtk/gpodder.ui.h:30 #, fuzzy msgid "Toolbar" msgstr "Vis verktУИylinje" #: share/gpodder/ui/gtk/gpodder.ui.h:31 msgid "Episode descriptions" msgstr "Episodeskildringar" #: share/gpodder/ui/gtk/gpodder.ui.h:33 msgid "Hide deleted episodes" msgstr "GУИym sletta episodar" #: share/gpodder/ui/gtk/gpodder.ui.h:34 msgid "Downloaded episodes" msgstr "Nedlasta episodar" #: share/gpodder/ui/gtk/gpodder.ui.h:35 msgid "Unplayed episodes" msgstr "Uavspela episodar" #: share/gpodder/ui/gtk/gpodder.ui.h:36 msgid "Hide podcasts without episodes" msgstr "GУИym podkastar utan episodar" #: share/gpodder/ui/gtk/gpodder.ui.h:37 msgid "_Help" msgstr "_Hjelp" #: share/gpodder/ui/gtk/gpodder.ui.h:38 msgid "User manual" msgstr "Brukarmanual" #: share/gpodder/ui/gtk/gpodder.ui.h:39 msgid "Software updates" msgstr "" #: share/gpodder/ui/gtk/gpodder.ui.h:40 msgid "Filter:" msgstr "Filter:" #: share/gpodder/ui/gtk/gpodder.ui.h:41 msgid "Podcasts" msgstr "Podkastar" #: share/gpodder/ui/gtk/gpodder.ui.h:42 msgid "Limit rate to" msgstr "Avgrens rate til" #: share/gpodder/ui/gtk/gpodder.ui.h:43 msgid "KiB/s" msgstr "KiB/s" #: share/gpodder/ui/gtk/gpodder.ui.h:44 msgid "Limit downloads to" msgstr "Avgrens nedlastingar til" #: share/gpodder/ui/gtk/gpodderwelcome.ui.h:2 #, fuzzy msgid "Welcome to gPodder" msgstr "Velkommen til gPodder" #: share/gpodder/ui/gtk/gpodderwelcome.ui.h:3 #, fuzzy msgid "Your podcast list is empty." msgstr "Podkastlista di er tom. Kva vil du gjera?" #: share/gpodder/ui/gtk/gpodderwelcome.ui.h:4 msgid "Choose from a list of example podcasts" msgstr "Vel frУЅ ei liste med dУИmepodkastar" #: share/gpodder/ui/gtk/gpodderwelcome.ui.h:5 #, fuzzy msgid "Add a podcast by entering its URL" msgstr "Legg til podkast via ei adresse" #: share/gpodder/ui/gtk/gpodderwelcome.ui.h:6 #, fuzzy msgid "Restore my subscriptions from gpodder.net" msgstr "Last ned mine abonnement frУЅ gpodder.net" #: bin/gpo:266 #, fuzzy msgid "Podcast update requested by extensions." msgstr "Podkast krev autentisering" #: bin/gpo:270 msgid "Episode download requested by extensions." msgstr "" #: bin/gpo:323 #, python-format msgid "Invalid url: %s" msgstr "" #: bin/gpo:340 bin/gpo:416 bin/gpo:450 bin/gpo:582 bin/gpo:597 bin/gpo:717 #, fuzzy, python-format msgid "You are not subscribed to %s." msgstr "Du abonnerer alt pУЅ desse podkastane:" #: bin/gpo:346 #, fuzzy, python-format msgid "Already subscribed to %s." msgstr "Klarte ikkje synkronisera til iPod" #: bin/gpo:352 #, fuzzy, python-format msgid "Cannot subscribe to %s." msgstr "Klarte ikkje synkronisera til iPod" #: bin/gpo:368 #, python-format msgid "Successfully added %s." msgstr "" #: bin/gpo:386 msgid "This configuration option does not exist." msgstr "" #: bin/gpo:390 msgid "Can only set leaf configuration nodes." msgstr "" #: bin/gpo:404 #, python-format msgid "Renamed %(old_title)s to %(new_title)s." msgstr "" #: bin/gpo:420 #, fuzzy, python-format msgid "Unsubscribed from %s." msgstr "Fjern abonnement" #: bin/gpo:494 #, fuzzy msgid "Updates disabled" msgstr "Oppdater valde" #: bin/gpo:505 #, python-format msgid "%(count)d new episode" msgid_plural "%(count)d new episodes" msgstr[0] "" msgstr[1] "" #: bin/gpo:511 #, fuzzy msgid "Checking for new episodes" msgstr "Sjekkar etter nye episodar т€І" #: bin/gpo:520 #, fuzzy, python-format msgid "Skipping %(podcast)s" msgstr "Legg til podkast" #: bin/gpo:588 #, python-format msgid "Disabling feed update from %s." msgstr "" #: bin/gpo:603 #, fuzzy, python-format msgid "Enabling feed update from %s." msgstr "Leser filer frУЅ %s" #: bin/gpo:616 #, python-format msgid "Please register a YouTube API key and set it using %(command)s." msgstr "" #: bin/gpo:643 #, python-format msgid "Changing: %(old_url)s => %(new_url)s" msgstr "" #: bin/gpo:653 #, fuzzy msgid "Nothing to fix" msgstr "Ingenting УЅ eksportera" #: bin/gpo:672 #, fuzzy msgid "No podcasts found." msgstr "Ingen podkastar funne." #: bin/gpo:686 msgid "Enter index to subscribe, ? for list" msgstr "" #: bin/gpo:700 bin/gpo:704 msgid "Invalid value." msgstr "" #: bin/gpo:721 #, python-format msgid "Invalid URL: %s" msgstr "" #: bin/gpo:724 #, python-format msgid "Changed URL from %(old_url)s to %(new_url)s." msgstr "" #: bin/gpo:782 #, python-format msgid "Syntax error: %(error)s" msgstr "" #: bin/gpo:876 msgid "Ambiguous command. Did you mean.." msgstr "" #: bin/gpo:880 #, fuzzy msgid "The requested function is not available." msgstr "Denne funksjonen er ikkje tilgjengeleg for iPod-ar." #: bin/gpodder:105 #, fuzzy msgid "print logging output on the console" msgstr "Skriv avlusningsutdata til ТЋstdoutТЛ" #: bin/gpodder:108 msgid "subscribe to the feed at URL" msgstr "" #: bin/gpodder:113 msgid "Mac OS X application process number" msgstr "" #: share/applications/gpodder.desktop.in.h:2 #, fuzzy msgid "gPodder Podcast Client" msgstr "Podkastendrar" #: share/applications/gpodder.desktop.in.h:3 #, fuzzy msgid "Podcast Client" msgstr "Podkastliste" #: share/applications/gpodder.desktop.in.h:4 msgid "Subscribe to audio and video content from the web" msgstr "" #: share/applications/gpodder-url-handler.desktop.in.h:1 #, fuzzy msgid "gPodder (subscribe to feed)" msgstr "Klarte ikkje synkronisera til iPod" gpodder-3.9.0/po/tr.po0000644000016000001710000013773212654461626015715 0ustar jenkinsjenkins00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # # Translators: # , 2011. msgid "" msgstr "" "Project-Id-Version: gPodder\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2016-02-03 20:31+0000\n" "PO-Revision-Date: 2013-01-19 12:31+0000\n" "Last-Translator: Thomas Perl \n" "Language-Team: Turkish (http://www.transifex.com/projects/p/gpodder/language/" "tr/)\n" "Language: tr\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" #: src/gpodder/config.py:55 #, python-format msgid "gPodder on %s" msgstr "" #: src/gpodder/directory.py:95 #, fuzzy msgid "gpodder.net search" msgstr "gpodder.net" #: src/gpodder/directory.py:104 #, fuzzy msgid "OPML from web" msgstr "OPML dosyalarФБ" #: src/gpodder/directory.py:113 #, fuzzy msgid "OPML file" msgstr "OPML dosyalarФБ" #: src/gpodder/directory.py:122 share/gpodder/ui/gtk/gpodderwelcome.ui.h:1 #, fuzzy msgid "Getting started" msgstr "Ayar" #: src/gpodder/directory.py:131 #, fuzzy msgid "gpodder.net Top 50" msgstr "gpodder.net" #: src/gpodder/directory.py:140 #, fuzzy msgid "gpodder.net Tags" msgstr "gpodder.net" #: src/gpodder/directory.py:152 msgid "Soundcloud search" msgstr "" #: src/gpodder/directory.py:165 #, fuzzy msgid "Imported OPML file" msgstr "OPML dosyalarФБ" #: src/gpodder/download.py:329 msgid "Wrong username/password" msgstr "" #: src/gpodder/download.py:527 src/gpodder/sync.py:924 msgid "Added" msgstr "" #: src/gpodder/download.py:527 src/gpodder/sync.py:924 msgid "Queued" msgstr "" #: src/gpodder/download.py:527 src/gpodder/gtkui/model.py:327 msgid "Downloading" msgstr "" #: src/gpodder/download.py:528 src/gpodder/model.py:721 #: src/gpodder/sync.py:925 msgid "Finished" msgstr "" #: src/gpodder/download.py:528 src/gpodder/sync.py:925 msgid "Failed" msgstr "" #: src/gpodder/download.py:528 src/gpodder/sync.py:925 msgid "Cancelled" msgstr "ФАptal Edildi" #: src/gpodder/download.py:528 src/gpodder/sync.py:925 msgid "Paused" msgstr "Durduruldu" #: src/gpodder/download.py:862 msgid "Missing content from server" msgstr "" #: src/gpodder/download.py:868 #, python-format msgid "I/O Error: %(error)s: %(filename)s" msgstr "" #: src/gpodder/download.py:875 #, python-format msgid "HTTP Error %(code)s: %(message)s" msgstr "" #: src/gpodder/download.py:879 src/gpodder/sync.py:1081 #, python-format msgid "Error: %s" msgstr "Hata: %s" #: src/gpodder/extensions.py:55 msgid "Desktop Integration" msgstr "" #: src/gpodder/extensions.py:56 msgid "Interface" msgstr "" #: src/gpodder/extensions.py:57 #, fuzzy msgid "Post download" msgstr "SeУЇilmedi" #: src/gpodder/extensions.py:59 src/gpodder/model.py:779 #: src/gpodder/model.py:1225 msgid "Other" msgstr "DiФŸer" #: src/gpodder/extensions.py:100 msgid "No description for this extension." msgstr "" #: src/gpodder/extensions.py:212 #, python-format msgid "Command not found: %(command)s" msgstr "" #: src/gpodder/extensions.py:228 #, python-format msgid "Need at least one of the following commands: %(list_of_commands)s" msgstr "" #: src/gpodder/extensions.py:265 #, python-format msgid "Python module not found: %(module)s" msgstr "" #: src/gpodder/model.py:446 src/gpodder/plugins/soundcloud.py:156 msgid "No description available" msgstr "" #: src/gpodder/model.py:679 msgid "unknown" msgstr "bilinmiyor" #: src/gpodder/model.py:746 msgid "Default" msgstr "" #: src/gpodder/model.py:747 msgid "Only keep latest" msgstr "" #: src/gpodder/model.py:1208 src/gpodder/model.py:1223 #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:10 msgid "Video" msgstr "Video" #: src/gpodder/model.py:1221 msgid "Audio" msgstr "Ses" #: src/gpodder/my.py:174 #, python-format msgid "Add %s" msgstr "%s Ekle" #: src/gpodder/my.py:176 #, python-format msgid "Remove %s" msgstr "%s kaldФБr" #: src/gpodder/sync.py:196 #, fuzzy msgid "Cancelled by user" msgstr "ФАptal Edildi" #: src/gpodder/sync.py:199 msgid "Writing data to disk" msgstr "" #: src/gpodder/sync.py:295 msgid "Opening iPod database" msgstr "" #: src/gpodder/sync.py:305 msgid "iPod opened" msgstr "" #: src/gpodder/sync.py:316 msgid "Saving iPod database" msgstr "" #: src/gpodder/sync.py:321 msgid "Writing extended gtkpod database" msgstr "" #: src/gpodder/sync.py:397 src/gpodder/sync.py:680 src/gpodder/sync.py:874 #, fuzzy, python-format msgid "Removing %s" msgstr "%s kaldФБr" #: src/gpodder/sync.py:412 src/gpodder/sync.py:557 #, fuzzy, python-format msgid "Adding %s" msgstr "Podcastler ekleniyor" #: src/gpodder/sync.py:430 #, python-format msgid "Error copying %(episode)s: Not enough free space on %(mountpoint)s" msgstr "" #: src/gpodder/sync.py:515 msgid "Opening MP3 player" msgstr "" #: src/gpodder/sync.py:518 msgid "MP3 player opened" msgstr "" #: src/gpodder/sync.py:576 #, python-format msgid "" "Not enough space in %(path)s: %(free)s available, but need at least %(need)s" msgstr "" #: src/gpodder/sync.py:603 src/gpodder/sync.py:611 #, python-format msgid "Error opening %(filename)s: %(message)s" msgstr "" #: src/gpodder/sync.py:780 src/gpodder/sync.py:786 msgid "MTP device" msgstr "" #: src/gpodder/sync.py:793 msgid "Opening the MTP device" msgstr "" #: src/gpodder/sync.py:803 #, python-format msgid "%s opened" msgstr "" #: src/gpodder/sync.py:808 #, python-format msgid "Closing %s" msgstr "" #: src/gpodder/sync.py:816 #, python-format msgid "%s closed" msgstr "" #: src/gpodder/sync.py:821 bin/gpo:708 #, python-format msgid "Adding %s..." msgstr "" #: src/gpodder/sync.py:924 msgid "Synchronizing" msgstr "" #: src/gpodder/util.py:429 #, python-format msgid "%(count)d day ago" msgid_plural "%(count)d days ago" msgstr[0] "" #: src/gpodder/util.py:508 msgid "Today" msgstr "BugУМn" #: src/gpodder/util.py:510 msgid "Yesterday" msgstr "DУМn" #: src/gpodder/util.py:553 src/gpodder/util.py:556 msgid "(unknown)" msgstr "(Bilinmiyor)" #: src/gpodder/util.py:1193 src/gpodder/util.py:1212 #, python-format msgid "%(count)d second" msgid_plural "%(count)d seconds" msgstr[0] "%(count)d saniye" #: src/gpodder/util.py:1206 #, python-format msgid "%(count)d hour" msgid_plural "%(count)d hours" msgstr[0] "%(count)d saat" #: src/gpodder/util.py:1209 #, python-format msgid "%(count)d minute" msgid_plural "%(count)d minutes" msgstr[0] "%(count)d dakika" #: src/gpodder/util.py:1215 msgid "and" msgstr "ve" #: src/gpodder/gtkui/config.py:50 msgid "Integer" msgstr "" #: src/gpodder/gtkui/config.py:52 msgid "Float" msgstr "" #: src/gpodder/gtkui/config.py:54 msgid "Boolean" msgstr "" #: src/gpodder/gtkui/config.py:56 msgid "String" msgstr "" #: src/gpodder/gtkui/desktopfile.py:70 #, python-format msgid "Command: %s" msgstr "Komut: %s" #: src/gpodder/gtkui/desktopfile.py:150 msgid "Default application" msgstr "VarsayФБlan uygulama" #: src/gpodder/gtkui/main.py:205 share/applications/gpodder.desktop.in.h:1 msgid "gPodder" msgstr "gPodder" #: src/gpodder/gtkui/main.py:288 msgid "Loading incomplete downloads" msgstr "" #: src/gpodder/gtkui/main.py:289 msgid "Some episodes have not finished downloading in a previous session." msgstr "" #: src/gpodder/gtkui/main.py:291 #, python-format msgid "%(count)d partial file" msgid_plural "%(count)d partial files" msgstr[0] "" #: src/gpodder/gtkui/main.py:306 msgid "Resume all" msgstr "" #: src/gpodder/gtkui/main.py:316 msgid "Incomplete downloads from a previous session were found." msgstr "" #: src/gpodder/gtkui/main.py:414 msgid "Action" msgstr "Eylem" #: src/gpodder/gtkui/main.py:461 msgid "Confirm changes from gpodder.net" msgstr "" #: src/gpodder/gtkui/main.py:462 msgid "Select the actions you want to carry out." msgstr "" #: src/gpodder/gtkui/main.py:502 msgid "Uploading subscriptions" msgstr "" #: src/gpodder/gtkui/main.py:503 msgid "Your subscriptions are being uploaded to the server." msgstr "" #: src/gpodder/gtkui/main.py:508 msgid "List uploaded successfully." msgstr "" #: src/gpodder/gtkui/main.py:515 msgid "Error while uploading" msgstr "" #: src/gpodder/gtkui/main.py:800 src/gpodder/gtkui/main.py:928 #: src/gpodder/gtkui/main.py:2622 src/gpodder/gtkui/main.py:2815 #: src/gpodder/gtkui/desktop/episodeselector.py:132 #: src/gpodder/gtkui/desktop/sync.py:270 msgid "Episode" msgstr "BУЖlУМm" #: src/gpodder/gtkui/main.py:819 msgid "Size" msgstr "Boyut" #: src/gpodder/gtkui/main.py:824 msgid "Duration" msgstr "SУМre" #: src/gpodder/gtkui/main.py:828 msgid "Released" msgstr "" #: src/gpodder/gtkui/main.py:855 msgid "Visible columns" msgstr "" #: src/gpodder/gtkui/main.py:948 src/gpodder/gtkui/main.py:1108 #: share/gpodder/ui/gtk/gpodder.ui.h:45 msgid "Progress" msgstr "Ilerleme" #: src/gpodder/gtkui/main.py:982 msgid "Loading episodes" msgstr "BУЖlУМmler yУМkleniyor " #: src/gpodder/gtkui/main.py:985 msgid "No episodes in current view" msgstr "" #: src/gpodder/gtkui/main.py:987 msgid "No episodes available" msgstr "BУЖlУМm yok" #: src/gpodder/gtkui/main.py:993 msgid "No podcasts in this view" msgstr "" #: src/gpodder/gtkui/main.py:995 msgid "No subscriptions" msgstr "" #: src/gpodder/gtkui/main.py:997 msgid "No active tasks" msgstr "" #: src/gpodder/gtkui/main.py:1112 src/gpodder/gtkui/main.py:1114 #, python-format msgid "%(count)d active" msgid_plural "%(count)d active" msgstr[0] "%(count)d aktif" #: src/gpodder/gtkui/main.py:1116 #, python-format msgid "%(count)d failed" msgid_plural "%(count)d failed" msgstr[0] "%(count)d baХŸarФБsФБz" #: src/gpodder/gtkui/main.py:1118 #, python-format msgid "%(count)d queued" msgid_plural "%(count)d queued" msgstr[0] "" #: src/gpodder/gtkui/main.py:1132 #, python-format msgid "downloading %(count)d file" msgid_plural "downloading %(count)d files" msgstr[0] "" #: src/gpodder/gtkui/main.py:1142 #, fuzzy, python-format msgid "synchronizing %(count)d file" msgid_plural "synchronizing %(count)d files" msgstr[0] "%(count)d baХŸarФБsФБz" #: src/gpodder/gtkui/main.py:1144 #, python-format msgid "%(queued)d task queued" msgid_plural "%(queued)d tasks queued" msgstr[0] "" #: src/gpodder/gtkui/main.py:1168 msgid "Please report this problem and restart gPodder:" msgstr "" #: src/gpodder/gtkui/main.py:1168 msgid "Unhandled exception" msgstr "" #: src/gpodder/gtkui/main.py:1235 #, python-format msgid "Feedparser error: %s" msgstr "" #: src/gpodder/gtkui/main.py:1371 #, fuzzy msgid "Could not download some episodes:" msgstr "ФАndirilenler" #: src/gpodder/gtkui/main.py:1373 src/gpodder/gtkui/main.py:1376 msgid "Downloads finished" msgstr "ФАndirme bitti" #: src/gpodder/gtkui/main.py:1379 msgid "Downloads failed" msgstr "ФАndirme baХŸarФБsФБz" #: src/gpodder/gtkui/main.py:1383 #, fuzzy msgid "Could not sync some episodes:" msgstr "%(count)d bУЖlУМm" #: src/gpodder/gtkui/main.py:1385 src/gpodder/gtkui/main.py:1388 msgid "Device synchronization finished" msgstr "" #: src/gpodder/gtkui/main.py:1391 #, fuzzy msgid "Device synchronization failed" msgstr "Kimlik doФŸrulama baХŸarФБsФБz " #: src/gpodder/gtkui/main.py:1434 #, python-format msgid "%(count)d more episode" msgid_plural "%(count)d more episodes" msgstr[0] "" #: src/gpodder/gtkui/main.py:1508 msgid "Start download now" msgstr "" #: src/gpodder/gtkui/main.py:1510 src/gpodder/gtkui/main.py:1719 #: src/gpodder/gtkui/desktop/episodeselector.py:144 #: share/gpodder/ui/gtk/gpodder.ui.h:20 msgid "Download" msgstr "" #: src/gpodder/gtkui/main.py:1511 share/gpodder/ui/gtk/gpodder.ui.h:21 msgid "Cancel" msgstr "Iptal" #: src/gpodder/gtkui/main.py:1512 msgid "Pause" msgstr "Duraklat" #: src/gpodder/gtkui/main.py:1514 msgid "Remove from list" msgstr "" #: src/gpodder/gtkui/main.py:1553 share/gpodder/ui/gtk/gpodder.ui.h:13 msgid "Update podcast" msgstr "" #: src/gpodder/gtkui/main.py:1560 #, fuzzy msgid "Open download folder" msgstr "ФАndirme baХŸarФБsФБz" #: src/gpodder/gtkui/main.py:1566 msgid "Mark episodes as old" msgstr "" #: src/gpodder/gtkui/main.py:1570 src/gpodder/gtkui/main.py:1778 msgid "Archive" msgstr "ArХŸiv" #: src/gpodder/gtkui/main.py:1575 msgid "Remove podcast" msgstr "Podcast kaldФБr" #: src/gpodder/gtkui/main.py:1590 share/gpodder/ui/gtk/gpodder.ui.h:10 msgid "Podcast settings" msgstr "Podcast ayarlarФБ" #: src/gpodder/gtkui/main.py:1650 msgid "Error converting file." msgstr "" #: src/gpodder/gtkui/main.py:1650 msgid "Bluetooth file transfer" msgstr "" #: src/gpodder/gtkui/main.py:1709 msgid "Preview" msgstr "У–nizleme" #: src/gpodder/gtkui/main.py:1711 msgid "Stream" msgstr "" #: src/gpodder/gtkui/main.py:1755 msgid "Send to" msgstr "" #: src/gpodder/gtkui/main.py:1757 msgid "Local folder" msgstr "" #: src/gpodder/gtkui/main.py:1762 msgid "Bluetooth device" msgstr "Bluetooth cihazФБ" #: src/gpodder/gtkui/main.py:1769 msgid "New" msgstr "Yeni" #: src/gpodder/gtkui/main.py:1785 share/gpodder/ui/gtk/gpodder.ui.h:25 msgid "Episode details" msgstr "BУЖlУМm detaylarФБ" #: src/gpodder/gtkui/main.py:1938 msgid "Please check your media player settings in the preferences dialog." msgstr "" #: src/gpodder/gtkui/main.py:1939 msgid "Error opening player" msgstr "" #: src/gpodder/gtkui/main.py:2178 msgid "Adding podcasts" msgstr "Podcastler ekleniyor" #: src/gpodder/gtkui/main.py:2179 msgid "Please wait while episode information is downloaded." msgstr "" #: src/gpodder/gtkui/main.py:2186 msgid "Existing subscriptions skipped" msgstr "" #: src/gpodder/gtkui/main.py:2187 msgid "You are already subscribed to these podcasts:" msgstr "" #: src/gpodder/gtkui/main.py:2195 msgid "Podcast requires authentication" msgstr "" #: src/gpodder/gtkui/main.py:2196 #, python-format msgid "Please login to %s:" msgstr "" #: src/gpodder/gtkui/main.py:2204 src/gpodder/gtkui/main.py:2299 msgid "Authentication failed" msgstr "Kimlik doФŸrulama baХŸarФБsФБz " #: src/gpodder/gtkui/main.py:2210 msgid "Website redirection detected" msgstr "" #: src/gpodder/gtkui/main.py:2211 #, python-format msgid "The URL %(url)s redirects to %(target)s." msgstr "" #: src/gpodder/gtkui/main.py:2212 msgid "Do you want to visit the website now?" msgstr "" #: src/gpodder/gtkui/main.py:2221 msgid "Could not add some podcasts" msgstr "" #: src/gpodder/gtkui/main.py:2222 msgid "Some podcasts could not be added to your list:" msgstr "" #: src/gpodder/gtkui/main.py:2224 msgid "Unknown" msgstr "Bilinmiyor" #: src/gpodder/gtkui/main.py:2308 msgid "Redirection detected" msgstr "" #: src/gpodder/gtkui/main.py:2342 msgid "Merging episode actions" msgstr "" #: src/gpodder/gtkui/main.py:2343 msgid "Episode actions from gpodder.net are merged." msgstr "" #: src/gpodder/gtkui/main.py:2368 msgid "Cancelling..." msgstr "" #: src/gpodder/gtkui/main.py:2377 msgid "Please connect to a network, then try again." msgstr "" #: src/gpodder/gtkui/main.py:2378 #, fuzzy msgid "No network connection" msgstr "Yeni bУЖlУМm" #: src/gpodder/gtkui/main.py:2399 #, python-format msgid "Updating %(count)d feed..." msgid_plural "Updating %(count)d feeds..." msgstr[0] "" #: src/gpodder/gtkui/main.py:2417 #, python-format msgid "Error while updating %(url)s: %(message)s" msgstr "" #: src/gpodder/gtkui/main.py:2419 #, python-format msgid "The feed at %(url)s could not be updated." msgstr "" #: src/gpodder/gtkui/main.py:2420 msgid "Error while updating feed" msgstr "" #: src/gpodder/gtkui/main.py:2435 #, python-format msgid "Updated %(podcast)s (%(position)d/%(total)d)" msgstr "" #: src/gpodder/gtkui/main.py:2466 msgid "No new episodes" msgstr "" #: src/gpodder/gtkui/main.py:2479 #, python-format msgid "Downloading %(count)d new episode." msgid_plural "Downloading %(count)d new episodes." msgstr[0] "" #: src/gpodder/gtkui/main.py:2480 src/gpodder/gtkui/main.py:2484 #: src/gpodder/gtkui/main.py:2833 msgid "New episodes available" msgstr "Yeni bУЖlУМmler mevcut" #: src/gpodder/gtkui/main.py:2483 #, python-format msgid "%(count)d new episode added to download list." msgid_plural "%(count)d new episodes added to download list." msgstr[0] "" #: src/gpodder/gtkui/main.py:2490 #, python-format msgid "%(count)d new episode available" msgid_plural "%(count)d new episodes available" msgstr[0] "%(count)d yeni bУЖlУМmler mevcut" #: src/gpodder/gtkui/main.py:2509 msgid "Quit gPodder" msgstr "gPodder УЇФБkФБХŸ" #: src/gpodder/gtkui/main.py:2510 msgid "" "You are downloading episodes. You can resume downloads the next time you " "start gPodder. Do you want to quit now?" msgstr "" #: src/gpodder/gtkui/main.py:2559 msgid "Episodes are locked" msgstr "" #: src/gpodder/gtkui/main.py:2560 msgid "" "The selected episodes are locked. Please unlock the episodes that you want " "to delete before trying to delete them." msgstr "" #: src/gpodder/gtkui/main.py:2565 #, python-format msgid "Delete %(count)d episode?" msgid_plural "Delete %(count)d episodes?" msgstr[0] "%(count)d bУЖlУМmУМ sil?" #: src/gpodder/gtkui/main.py:2566 msgid "Deleting episodes removes downloaded files." msgstr "" #: src/gpodder/gtkui/main.py:2571 msgid "Deleting episodes" msgstr "BУЖlУМmler siliniyor" #: src/gpodder/gtkui/main.py:2572 msgid "Please wait while episodes are deleted" msgstr "" #: src/gpodder/gtkui/main.py:2625 #, python-format msgid "Select older than %(count)d day" msgid_plural "Select older than %(count)d days" msgstr[0] "" #: src/gpodder/gtkui/main.py:2627 msgid "Select played" msgstr "" #: src/gpodder/gtkui/main.py:2628 msgid "Select finished" msgstr "" #: src/gpodder/gtkui/main.py:2632 msgid "Select the episodes you want to delete:" msgstr "" #: src/gpodder/gtkui/main.py:2648 share/gpodder/ui/gtk/gpodder.ui.h:4 msgid "Delete episodes" msgstr "BУЖlУМm Sil" #: src/gpodder/gtkui/main.py:2703 src/gpodder/gtkui/main.py:2934 #: src/gpodder/gtkui/main.py:3034 msgid "No podcast selected" msgstr "" #: src/gpodder/gtkui/main.py:2704 msgid "Please select a podcast in the podcasts list to update." msgstr "" #: src/gpodder/gtkui/main.py:2774 #, python-format msgid "Download error while downloading %(episode)s: %(message)s" msgstr "" #: src/gpodder/gtkui/main.py:2775 msgid "Download error" msgstr "ФАndirme hatasФБ" #: src/gpodder/gtkui/main.py:2818 msgid "Select the episodes you want to download:" msgstr "" #: src/gpodder/gtkui/main.py:2841 msgid "Mark as old" msgstr "" #: src/gpodder/gtkui/main.py:2848 msgid "Please check for new episodes later." msgstr "" #: src/gpodder/gtkui/main.py:2849 msgid "No new episodes available" msgstr "" #: src/gpodder/gtkui/main.py:2900 msgid "Login to gpodder.net" msgstr "Gpodder.net giriХŸ" #: src/gpodder/gtkui/main.py:2901 msgid "Please login to download your subscriptions." msgstr "" #: src/gpodder/gtkui/main.py:2916 msgid "Subscriptions on gpodder.net" msgstr "" #: src/gpodder/gtkui/main.py:2935 msgid "Please select a podcast in the podcasts list to edit." msgstr "" #: src/gpodder/gtkui/main.py:2949 msgid "Podcast" msgstr "Podcast" #: src/gpodder/gtkui/main.py:2955 share/gpodder/ui/gtk/gpodder.ui.h:12 msgid "Remove podcasts" msgstr "Podcast kaldФБr" #: src/gpodder/gtkui/main.py:2956 msgid "Select the podcast you want to remove." msgstr "" #: src/gpodder/gtkui/main.py:2960 #: src/gpodder/gtkui/desktop/episodeselector.py:105 msgid "Remove" msgstr "KaldФБr" #: src/gpodder/gtkui/main.py:2969 msgid "Removing podcast" msgstr "Podcast kaldФБrФБlФБyor" #: src/gpodder/gtkui/main.py:2970 msgid "Please wait while the podcast is removed" msgstr "" #: src/gpodder/gtkui/main.py:2971 msgid "Do you really want to remove this podcast and its episodes?" msgstr "" #: src/gpodder/gtkui/main.py:2973 msgid "Removing podcasts" msgstr "Podcastler kaldФБrФБlФБyor" #: src/gpodder/gtkui/main.py:2974 msgid "Please wait while the podcasts are removed" msgstr "" #: src/gpodder/gtkui/main.py:2975 msgid "Do you really want to remove the selected podcasts and their episodes?" msgstr "" #: src/gpodder/gtkui/main.py:3035 msgid "Please select a podcast in the podcasts list to remove." msgstr "" #: src/gpodder/gtkui/main.py:3045 msgid "OPML files" msgstr "OPML dosyalarФБ" #: src/gpodder/gtkui/main.py:3050 msgid "Import from OPML" msgstr "" #: src/gpodder/gtkui/main.py:3064 msgid "Import podcasts from OPML file" msgstr "" #: src/gpodder/gtkui/main.py:3071 msgid "Nothing to export" msgstr "" #: src/gpodder/gtkui/main.py:3072 msgid "" "Your list of podcast subscriptions is empty. Please subscribe to some " "podcasts first before trying to export your subscription list." msgstr "" #: src/gpodder/gtkui/main.py:3076 msgid "Export to OPML" msgstr "" #: src/gpodder/gtkui/main.py:3087 #, python-format msgid "%(count)d subscription exported" msgid_plural "%(count)d subscriptions exported" msgstr[0] "" #: src/gpodder/gtkui/main.py:3088 msgid "Your podcast list has been successfully exported." msgstr "" #: src/gpodder/gtkui/main.py:3090 msgid "Could not export OPML to file. Please check your permissions." msgstr "" #: src/gpodder/gtkui/main.py:3090 msgid "OPML export failed" msgstr "" #: src/gpodder/gtkui/main.py:3117 #, fuzzy msgid "No updates available" msgstr "BУЖlУМm yok" #: src/gpodder/gtkui/main.py:3118 msgid "You have the latest version of gPodder." msgstr "" #: src/gpodder/gtkui/main.py:3122 #, fuzzy msgid "New version available" msgstr "Yeni bУЖlУМmler mevcut" #: src/gpodder/gtkui/main.py:3124 #, python-format msgid "Installed version: %s" msgstr "" #: src/gpodder/gtkui/main.py:3125 #, python-format msgid "Newest version: %s" msgstr "" #: src/gpodder/gtkui/main.py:3126 #, python-format msgid "Release date: %s" msgstr "" #: src/gpodder/gtkui/main.py:3128 #, fuzzy msgid "Download the latest version from gpodder.org?" msgstr "ФАndirme hatasФБ" #: src/gpodder/gtkui/main.py:3141 msgid "About gPodder" msgstr "gPodder HakkФБnda" #: src/gpodder/gtkui/main.py:3424 msgid "Please register a YouTube API key and set it in the preferences." msgstr "" #: src/gpodder/gtkui/main.py:3425 msgid "Would you like to set up an API key now?" msgstr "" #: src/gpodder/gtkui/main.py:3425 msgid "API key required" msgstr "" #: src/gpodder/gtkui/main.py:3444 bin/gpo:631 msgid "No unique URL found" msgstr "" #: src/gpodder/gtkui/main.py:3449 bin/gpo:637 msgid "Already subscribed" msgstr "" #: src/gpodder/gtkui/main.py:3458 bin/gpo:649 #, python-format msgid "Make sure the API key is correct. Error: %(message)s" msgstr "" #: src/gpodder/gtkui/main.py:3459 msgid "Error getting YouTube channels" msgstr "" #: src/gpodder/gtkui/main.py:3462 msgid "Successfully migrated subscriptions" msgstr "" #: src/gpodder/gtkui/main.py:3464 msgid "Subscriptions are up to date" msgstr "" #: src/gpodder/gtkui/main.py:3467 msgid "These URLs failed:" msgstr "" #: src/gpodder/gtkui/main.py:3469 #, fuzzy msgid "Could not migrate some subscriptions" msgstr "ФАndirilenler" #: src/gpodder/gtkui/main.py:3493 msgid "Cannot start gPodder" msgstr "" #: src/gpodder/gtkui/main.py:3494 #, python-format msgid "D-Bus error: %s" msgstr "" #: src/gpodder/gtkui/model.py:68 #, python-format msgid "released %s" msgstr "" #: src/gpodder/gtkui/model.py:69 src/gpodder/gtkui/model.py:87 #: src/gpodder/gtkui/model.py:237 src/gpodder/gtkui/shownotes.py:84 #, python-format msgid "from %s" msgstr "" #: src/gpodder/gtkui/model.py:80 src/gpodder/gtkui/model.py:393 msgid "played" msgstr "" #: src/gpodder/gtkui/model.py:82 msgid "unplayed" msgstr "" #: src/gpodder/gtkui/model.py:85 msgid "today" msgstr "bugУМn" #: src/gpodder/gtkui/model.py:86 #, python-format msgid "downloaded %s" msgstr "" #: src/gpodder/gtkui/model.py:337 msgid "Deleted" msgstr "Silindi" #: src/gpodder/gtkui/model.py:342 msgid "New episode" msgstr "Yeni bУЖlУМm" #: src/gpodder/gtkui/model.py:356 msgid "Downloaded episode" msgstr "" #: src/gpodder/gtkui/model.py:359 msgid "Downloaded video episode" msgstr "" #: src/gpodder/gtkui/model.py:362 msgid "Downloaded image" msgstr "" #: src/gpodder/gtkui/model.py:365 msgid "Downloaded file" msgstr "" #: src/gpodder/gtkui/model.py:380 msgid "missing file" msgstr "" #: src/gpodder/gtkui/model.py:384 msgid "never displayed" msgstr "" #: src/gpodder/gtkui/model.py:386 msgid "never played" msgstr "" #: src/gpodder/gtkui/model.py:388 msgid "never opened" msgstr "" #: src/gpodder/gtkui/model.py:391 msgid "displayed" msgstr "" #: src/gpodder/gtkui/model.py:395 msgid "opened" msgstr "" #: src/gpodder/gtkui/model.py:397 msgid "deletion prevented" msgstr "" #: src/gpodder/gtkui/model.py:432 share/gpodder/ui/gtk/gpodder.ui.h:32 msgid "All episodes" msgstr "TУМm bУЖlУМmler" #: src/gpodder/gtkui/model.py:433 msgid "from all podcasts" msgstr "" #: src/gpodder/gtkui/model.py:625 msgid "Subscription paused" msgstr "" #: src/gpodder/gtkui/shownotes.py:118 #, fuzzy msgid "Please select an episode" msgstr "BУЖlУМm seУЇin" #: src/gpodder/gtkui/interface/addpodcast.py:74 msgid "Nothing to paste." msgstr "" #: src/gpodder/gtkui/interface/addpodcast.py:74 msgid "Clipboard is empty" msgstr "" #: src/gpodder/gtkui/interface/common.py:160 msgid "Username" msgstr "KullanФБcФБ AdФБ" #: src/gpodder/gtkui/interface/common.py:163 msgid "New user" msgstr "Yeni kullanФБcФБ" #: src/gpodder/gtkui/interface/common.py:170 msgid "Login" msgstr "GiriХŸ" #: src/gpodder/gtkui/interface/common.py:172 msgid "Authentication required" msgstr "" #: src/gpodder/gtkui/interface/common.py:203 msgid "Password" msgstr "Parola" #: src/gpodder/gtkui/interface/common.py:225 msgid "Select destination" msgstr "" #: src/gpodder/gtkui/interface/configeditor.py:34 msgid "Setting" msgstr "Ayar" #: src/gpodder/gtkui/interface/configeditor.py:41 msgid "Set to" msgstr "" #: src/gpodder/gtkui/interface/configeditor.py:81 #, python-format msgid "Cannot set %(field)s to %(value)s. Needed data type: %(datatype)s" msgstr "" #: src/gpodder/gtkui/interface/configeditor.py:85 msgid "Error setting option" msgstr "" #: src/gpodder/gtkui/desktop/channel.py:100 #, fuzzy msgid "Add section" msgstr "Eylem" #: src/gpodder/gtkui/desktop/channel.py:100 #, fuzzy msgid "New section:" msgstr "Yeni bУЖlУМm" #: src/gpodder/gtkui/desktop/channel.py:133 msgid "Select new podcast cover artwork" msgstr "" #: src/gpodder/gtkui/desktop/channel.py:161 msgid "You can only drop a single image or URL here." msgstr "" #: src/gpodder/gtkui/desktop/channel.py:161 #: src/gpodder/gtkui/desktop/channel.py:171 msgid "Drag and drop" msgstr "" #: src/gpodder/gtkui/desktop/channel.py:171 msgid "You can only drop local files and http:// URLs here." msgstr "" #: src/gpodder/gtkui/desktop/deviceplaylist.py:98 #, python-format msgid "Folder %s could not be created." msgstr "" #: src/gpodder/gtkui/desktop/deviceplaylist.py:98 msgid "Error writing playlist" msgstr "" #: src/gpodder/gtkui/desktop/episodeselector.py:288 #: share/gpodder/ui/gtk/gpodderepisodeselector.ui.h:2 msgid "Select all" msgstr "Hepsini seУЇ" #: src/gpodder/gtkui/desktop/episodeselector.py:292 #: share/gpodder/ui/gtk/gpodderepisodeselector.ui.h:3 msgid "Select none" msgstr "" #: src/gpodder/gtkui/desktop/episodeselector.py:324 msgid "Nothing selected" msgstr "" #: src/gpodder/gtkui/desktop/episodeselector.py:325 #, python-format msgid "%(count)d episode" msgid_plural "%(count)d episodes" msgstr[0] "%(count)d bУЖlУМm" #: src/gpodder/gtkui/desktop/episodeselector.py:327 #, python-format msgid "size: %s" msgstr "boyutu: %s" #: src/gpodder/gtkui/desktop/podcastdirectory.py:238 #, fuzzy msgid "Loading podcasts" msgstr "Podcastler ekleniyor" #: src/gpodder/gtkui/desktop/podcastdirectory.py:239 msgid "Please wait while the podcast list is downloaded" msgstr "" #: src/gpodder/gtkui/desktop/preferences.py:51 #: src/gpodder/gtkui/desktop/preferences.py:93 msgid "Do nothing" msgstr "" #: src/gpodder/gtkui/desktop/preferences.py:52 msgid "Show episode list" msgstr "" #: src/gpodder/gtkui/desktop/preferences.py:53 msgid "Add to download list" msgstr "" #: src/gpodder/gtkui/desktop/preferences.py:54 msgid "Download immediately" msgstr "" #: src/gpodder/gtkui/desktop/preferences.py:72 msgid "None" msgstr "" #: src/gpodder/gtkui/desktop/preferences.py:73 msgid "iPod" msgstr "" #: src/gpodder/gtkui/desktop/preferences.py:74 msgid "Filesystem-based" msgstr "" #: src/gpodder/gtkui/desktop/preferences.py:94 msgid "Mark as played" msgstr "" #: src/gpodder/gtkui/desktop/preferences.py:95 msgid "Delete from gPodder" msgstr "" #: src/gpodder/gtkui/desktop/preferences.py:123 #, python-format msgid "Custom (%(format_ids)s)" msgstr "" #: src/gpodder/gtkui/desktop/preferences.py:318 msgid "Name" msgstr "" #: src/gpodder/gtkui/desktop/preferences.py:369 #, fuzzy msgid "Documentation" msgstr "SУМre" #: src/gpodder/gtkui/desktop/preferences.py:374 msgid "Extension info" msgstr "" #: src/gpodder/gtkui/desktop/preferences.py:379 msgid "Support the author" msgstr "" #: src/gpodder/gtkui/desktop/preferences.py:413 msgid "Extension cannot be activated" msgstr "" #: src/gpodder/gtkui/desktop/preferences.py:426 msgid "Extension module info" msgstr "" #: src/gpodder/gtkui/desktop/preferences.py:463 msgid "Configure audio player" msgstr "" #: src/gpodder/gtkui/desktop/preferences.py:464 #: src/gpodder/gtkui/desktop/preferences.py:474 msgid "Command:" msgstr "Komut:" #: src/gpodder/gtkui/desktop/preferences.py:473 msgid "Configure video player" msgstr "" #: src/gpodder/gtkui/desktop/preferences.py:485 #: src/gpodder/gtkui/desktop/preferences.py:503 msgid "manually" msgstr "" #: src/gpodder/gtkui/desktop/preferences.py:505 #, python-format msgid "after %(count)d day" msgid_plural "after %(count)d days" msgstr[0] "%(count)d gУМn sonra" #: src/gpodder/gtkui/desktop/preferences.py:541 msgid "Replace subscription list on server" msgstr "" #: src/gpodder/gtkui/desktop/preferences.py:542 msgid "" "Remote podcasts that have not been added locally will be removed on the " "server. Continue?" msgstr "" #: src/gpodder/gtkui/desktop/preferences.py:621 msgid "Select folder for mount point" msgstr "" #: src/gpodder/gtkui/desktop/preferences.py:638 msgid "Select folder for playlists" msgstr "" #: src/gpodder/gtkui/desktop/sync.py:86 msgid "No device configured" msgstr "" #: src/gpodder/gtkui/desktop/sync.py:87 msgid "Please set up your device in the preferences dialog." msgstr "" #: src/gpodder/gtkui/desktop/sync.py:91 msgid "Cannot open device" msgstr "" #: src/gpodder/gtkui/desktop/sync.py:92 msgid "Please check the settings in the preferences dialog." msgstr "" #: src/gpodder/gtkui/desktop/sync.py:139 msgid "Not enough space left on device" msgstr "" #: src/gpodder/gtkui/desktop/sync.py:140 #, python-format msgid "" "Additional free space required: %(required_space)s\n" "Do you want to continue?" msgstr "" #: src/gpodder/gtkui/desktop/sync.py:199 msgid "Update successful" msgstr "" #: src/gpodder/gtkui/desktop/sync.py:200 msgid "The playlist on your MP3 player has been updated." msgstr "" #: src/gpodder/gtkui/desktop/sync.py:274 msgid "Episodes have been deleted on device" msgstr "" #: src/gpodder/gtkui/desktop/sync.py:285 msgid "Error writing playlist files" msgstr "" #: src/gpodder/plugins/soundcloud.py:154 msgid "Unknown track" msgstr "Bilinmeyen parУЇa" #: src/gpodder/plugins/soundcloud.py:181 #, python-format msgid "%s on Soundcloud" msgstr "" #: src/gpodder/plugins/soundcloud.py:190 #, python-format msgid "Tracks published by %s on Soundcloud." msgstr "" #: src/gpodder/plugins/soundcloud.py:217 #, python-format msgid "%s's favorites on Soundcloud" msgstr "" #: src/gpodder/plugins/soundcloud.py:223 #, python-format msgid "Tracks favorited by %s on Soundcloud." msgstr "" #: share/gpodder/extensions/audio_converter.py:20 #, fuzzy msgid "Convert audio files" msgstr "ФАndirme baХŸarФБsФБz" #: share/gpodder/extensions/audio_converter.py:21 msgid "Transcode audio files to mp3/ogg" msgstr "" #: share/gpodder/extensions/audio_converter.py:84 #: share/gpodder/extensions/video_converter.py:86 #, python-format msgid "Convert to %(format)s" msgstr "" #: share/gpodder/extensions/audio_converter.py:111 #: share/gpodder/extensions/rockbox_convert2mp4.py:65 #: share/gpodder/extensions/video_converter.py:111 msgid "File converted" msgstr "" #: share/gpodder/extensions/audio_converter.py:114 #: share/gpodder/extensions/video_converter.py:114 #, fuzzy msgid "Conversion failed" msgstr "ФАndirme baХŸarФБsФБz" #: share/gpodder/extensions/concatenate_videos.py:20 #: share/gpodder/extensions/concatenate_videos.py:100 #, fuzzy msgid "Concatenate videos" msgstr "ФАndirme baХŸarФБsФБz" #: share/gpodder/extensions/concatenate_videos.py:21 msgid "Add a context menu item for concatenating multiple videos" msgstr "" #: share/gpodder/extensions/concatenate_videos.py:37 msgid "Save video" msgstr "" #: share/gpodder/extensions/concatenate_videos.py:66 #, fuzzy msgid "Concatenating video files" msgstr "ФАndirme baХŸarФБsФБz" #: share/gpodder/extensions/concatenate_videos.py:67 #, python-format msgid "Writing %(filename)s" msgstr "" #: share/gpodder/extensions/concatenate_videos.py:78 msgid "Videos successfully converted" msgstr "" #: share/gpodder/extensions/concatenate_videos.py:79 #, fuzzy msgid "Error converting videos" msgstr "ФАndirme baХŸarФБsФБz" #: share/gpodder/extensions/concatenate_videos.py:80 msgid "Concatenation result" msgstr "" #: share/gpodder/extensions/enqueue_in_mediaplayer.py:16 msgid "Enqueue in media players" msgstr "" #: share/gpodder/extensions/enqueue_in_mediaplayer.py:17 msgid "" "Add a context menu item for enqueueing episodes in installed media players" msgstr "" #: share/gpodder/extensions/enqueue_in_mediaplayer.py:35 msgid "Enqueue in" msgstr "" #: share/gpodder/extensions/episode_website_context_menu.py:14 msgid "\"Open website\" episode context menu" msgstr "" #: share/gpodder/extensions/episode_website_context_menu.py:15 msgid "Add a context menu item for opening the website of an episode" msgstr "" #: share/gpodder/extensions/episode_website_context_menu.py:30 #, fuzzy msgid "Open website" msgstr "Web Sitesi:" #: share/gpodder/extensions/gtk_statusicon.py:14 msgid "Gtk Status Icon" msgstr "" #: share/gpodder/extensions/gtk_statusicon.py:15 msgid "Show a status icon for Gtk-based Desktops." msgstr "" #: share/gpodder/extensions/minimize_on_start.py:10 msgid "Minimize on start" msgstr "" #: share/gpodder/extensions/minimize_on_start.py:11 msgid "Minimizes the gPodder window on startup." msgstr "" #: share/gpodder/extensions/mpris-listener.py:33 msgid "MPRIS Listener" msgstr "" #: share/gpodder/extensions/mpris-listener.py:34 msgid "Convert MPRIS notifications to gPodder Media Player D-Bus API" msgstr "" #: share/gpodder/extensions/normalize_audio.py:21 msgid "Normalize audio with re-encoding" msgstr "" #: share/gpodder/extensions/normalize_audio.py:22 msgid "Normalize the volume of audio files with normalize-audio" msgstr "" #: share/gpodder/extensions/normalize_audio.py:99 msgid "File normalized" msgstr "" #: share/gpodder/extensions/rename_download.py:16 msgid "Rename episodes after download" msgstr "" #: share/gpodder/extensions/rename_download.py:17 msgid "Rename episodes to \".\" on download" msgstr "" #: share/gpodder/extensions/rm_ogg_cover.py:37 msgid "Remove cover art from OGG files" msgstr "" #: share/gpodder/extensions/rm_ogg_cover.py:38 msgid "removes coverart from all downloaded ogg files" msgstr "" #: share/gpodder/extensions/rm_ogg_cover.py:66 #, fuzzy msgid "Remove cover art" msgstr "Podcast kaldФБr" #: share/gpodder/extensions/rockbox_convert2mp4.py:26 msgid "Convert video files to MP4 for Rockbox" msgstr "" #: share/gpodder/extensions/rockbox_convert2mp4.py:27 msgid "Converts all videos to a Rockbox-compatible format" msgstr "" #: share/gpodder/extensions/sonos.py:19 share/gpodder/extensions/sonos.py:78 msgid "Stream to Sonos" msgstr "" #: share/gpodder/extensions/sonos.py:20 msgid "Stream podcasts to Sonos speakers" msgstr "" #: share/gpodder/extensions/tagging.py:45 msgid "Tag downloaded files using Mutagen" msgstr "" #: share/gpodder/extensions/tagging.py:46 msgid "Add episode and podcast titles to MP3/OGG tags" msgstr "" #: share/gpodder/extensions/taskbar_progress.py:28 msgid "Show download progress on the taskbar" msgstr "" #: share/gpodder/extensions/taskbar_progress.py:29 msgid "Displays the progress on the Windows taskbar." msgstr "" #: share/gpodder/extensions/ted_subtitles.py:16 msgid "Subtitle Downloader for TED Talks" msgstr "" #: share/gpodder/extensions/ted_subtitles.py:17 msgid "Downloads .srt subtitles for TED Talks Videos" msgstr "" #: share/gpodder/extensions/ubuntu_appindicator.py:10 msgid "Ubuntu App Indicator" msgstr "" #: share/gpodder/extensions/ubuntu_appindicator.py:11 msgid "Show a status indicator in the top bar." msgstr "" #: share/gpodder/extensions/ubuntu_appindicator.py:47 msgid "Show main window" msgstr "" #: share/gpodder/extensions/ubuntu_appindicator.py:57 #: share/gpodder/ui/gtk/gpodder.ui.h:6 msgid "Quit" msgstr "У‡ФБkФБХŸ" #: share/gpodder/extensions/ubuntu_unity.py:10 msgid "Ubuntu Unity Integration" msgstr "" #: share/gpodder/extensions/ubuntu_unity.py:11 msgid "Show download progress in the Unity Launcher icon." msgstr "" #: share/gpodder/extensions/update_feeds_on_startup.py:14 #, fuzzy msgid "Search for new episodes on startup" msgstr "Yeni bУЖlУМm" #: share/gpodder/extensions/update_feeds_on_startup.py:15 msgid "Starts the search for new episodes on startup" msgstr "" #: share/gpodder/extensions/video_converter.py:22 #, fuzzy msgid "Convert video files" msgstr "ФАndirme baХŸarФБsФБz" #: share/gpodder/extensions/video_converter.py:23 msgid "Transcode video files to avi/mp4/m4v" msgstr "" #: share/gpodder/ui/gtk/gpodderaddpodcast.ui.h:1 msgid "Add a new podcast" msgstr "Yeni bir bУЖlУМm ekle" #: share/gpodder/ui/gtk/gpodderaddpodcast.ui.h:2 msgid "URL:" msgstr "URL:" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:1 msgid "gPodder Podcast Editor" msgstr "gPodder Podcast Editor" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:2 msgid "Section:" msgstr "" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:3 msgid "Disable feed updates (pause subscription)" msgstr "" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:4 msgid "Synchronize to MP3 player devices" msgstr "" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:5 msgid "Strategy:" msgstr "" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:6 #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:6 msgid "General" msgstr "Genel" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:7 msgid "HTTP/FTP Authentication" msgstr "" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:8 #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:13 msgid "Username:" msgstr "KullanФБcФБ AdФБ:" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:9 #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:14 msgid "Password:" msgstr "Parola:" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:10 msgid "Locations" msgstr "" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:11 msgid "Download to:" msgstr "" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:12 msgid "Website:" msgstr "Web Sitesi:" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:13 msgid "website label" msgstr "web sitesi etiketi" #: share/gpodder/ui/gtk/gpodderchannel.ui.h:14 msgid "Advanced" msgstr "" #: share/gpodder/ui/gtk/gpodderconfigeditor.ui.h:1 msgid "gPodder Configuration Editor" msgstr "gPodder YapФБlandФБrma EditorУМ" #: share/gpodder/ui/gtk/gpodderconfigeditor.ui.h:2 msgid "Search for:" msgstr "Arama:" #: share/gpodder/ui/gtk/gpodderconfigeditor.ui.h:3 msgid "Show All" msgstr "TУМmУМnУМ GУЖster" #: share/gpodder/ui/gtk/gpodderepisodeselector.ui.h:1 msgid "Select episodes" msgstr "BУЖlУМm seУЇin" #: share/gpodder/ui/gtk/gpodderpodcastdirectory.ui.h:1 msgid "Find new podcasts" msgstr "Yeni bУЖlУМm bul" #: share/gpodder/ui/gtk/gpodderpodcastdirectory.ui.h:2 msgid "Select All" msgstr "TУМmУМnУМ SeУЇin" #: share/gpodder/ui/gtk/gpodderpodcastdirectory.ui.h:3 msgid "Select None" msgstr "SeУЇilmedi" #: share/gpodder/ui/gtk/gpodderpodcastdirectory.ui.h:4 msgid "label" msgstr "" #: share/gpodder/ui/gtk/gpodderpodcastdirectory.ui.h:5 msgid "..." msgstr "" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:1 #: share/gpodder/ui/gtk/gpodder.ui.h:5 msgid "Preferences" msgstr "Tercihler" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:2 msgid "Audio player:" msgstr "Ses УЇalar:" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:3 msgid "Video player:" msgstr "Video oynatФБcФБ:" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:4 msgid "\"All episodes\" in podcast list" msgstr "" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:5 msgid "Use sections for podcast list" msgstr "" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:7 msgid "Preferred YouTube format:" msgstr "" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:8 msgid "YouTube API key (v3):" msgstr "" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:9 msgid "Preferred Vimeo format:" msgstr "" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:11 msgid "Extensions" msgstr "" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:12 msgid "Synchronize subscriptions and episode actions" msgstr "" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:15 msgid "Replace list on server with local subscriptions" msgstr "" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:16 msgid "Device name:" msgstr "Cihaz adФБ:" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:17 msgid "gpodder.net" msgstr "gpodder.net" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:18 msgid "Update interval:" msgstr "" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:19 msgid "Maximum number of episodes per podcast:" msgstr "" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:20 msgid "When new episodes are found:" msgstr "" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:21 msgid "Updating" msgstr "GУМncelleniyor" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:22 msgid "Delete played episodes:" msgstr "" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:23 msgid "Remove played episodes even if unfinished" msgstr "" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:24 msgid "Also remove unplayed episodes" msgstr "" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:25 msgid "Clean-up" msgstr "" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:26 #, fuzzy msgid "Device type:" msgstr "Cihaz adФБ:" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:27 msgid "Mountpoint:" msgstr "" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:28 msgid "After syncing an episode:" msgstr "" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:29 msgid "Create playlists on device" msgstr "" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:30 msgid "Playlists Folder:" msgstr "" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:31 msgid "Remove episodes deleted on device from gPodder" msgstr "" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:32 msgid "Only sync unplayed episodes" msgstr "" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:33 #, fuzzy msgid "Devices" msgstr "Cihaz adФБ:" #: share/gpodder/ui/gtk/gpodderpreferences.ui.h:34 msgid "Edit config" msgstr "" #: share/gpodder/ui/gtk/gpodder.ui.h:1 msgid "_Podcasts" msgstr "_Podcastlar" #: share/gpodder/ui/gtk/gpodder.ui.h:2 msgid "Check for new episodes" msgstr "" #: share/gpodder/ui/gtk/gpodder.ui.h:3 msgid "Download new episodes" msgstr "" #: share/gpodder/ui/gtk/gpodder.ui.h:7 msgid "_Subscriptions" msgstr "" #: share/gpodder/ui/gtk/gpodder.ui.h:8 msgid "Discover new podcasts" msgstr "" #: share/gpodder/ui/gtk/gpodder.ui.h:9 msgid "Add podcast via URL" msgstr "" #: share/gpodder/ui/gtk/gpodder.ui.h:11 msgid "Unsubscribe" msgstr "" #: share/gpodder/ui/gtk/gpodder.ui.h:14 msgid "Import from OPML file" msgstr "" #: share/gpodder/ui/gtk/gpodder.ui.h:15 msgid "Export to OPML file" msgstr "" #: share/gpodder/ui/gtk/gpodder.ui.h:16 msgid "Go to gpodder.net" msgstr "gpodder.net'e git" #: share/gpodder/ui/gtk/gpodder.ui.h:17 msgid "_Episodes" msgstr "_BУЖlУМmler" #: share/gpodder/ui/gtk/gpodder.ui.h:18 msgid "Play" msgstr "Oynat" #: share/gpodder/ui/gtk/gpodder.ui.h:19 msgid "Open" msgstr "AУЇ" #: share/gpodder/ui/gtk/gpodder.ui.h:22 msgid "Delete" msgstr "Sil" #: share/gpodder/ui/gtk/gpodder.ui.h:23 msgid "Toggle new status" msgstr "" #: share/gpodder/ui/gtk/gpodder.ui.h:24 msgid "Change delete lock" msgstr "" #: share/gpodder/ui/gtk/gpodder.ui.h:26 msgid "E_xtras" msgstr "" #: share/gpodder/ui/gtk/gpodder.ui.h:27 #, fuzzy msgid "Sync to device" msgstr "Bluetooth cihazФБ" #: share/gpodder/ui/gtk/gpodder.ui.h:28 msgid "Update YouTube subscriptions" msgstr "" #: share/gpodder/ui/gtk/gpodder.ui.h:29 msgid "_View" msgstr "" #: share/gpodder/ui/gtk/gpodder.ui.h:30 msgid "Toolbar" msgstr "AraУЇ У‡ubuФŸu" #: share/gpodder/ui/gtk/gpodder.ui.h:31 msgid "Episode descriptions" msgstr "" #: share/gpodder/ui/gtk/gpodder.ui.h:33 msgid "Hide deleted episodes" msgstr "" #: share/gpodder/ui/gtk/gpodder.ui.h:34 msgid "Downloaded episodes" msgstr "" #: share/gpodder/ui/gtk/gpodder.ui.h:35 msgid "Unplayed episodes" msgstr "" #: share/gpodder/ui/gtk/gpodder.ui.h:36 msgid "Hide podcasts without episodes" msgstr "" #: share/gpodder/ui/gtk/gpodder.ui.h:37 msgid "_Help" msgstr "_YardФБm" #: share/gpodder/ui/gtk/gpodder.ui.h:38 msgid "User manual" msgstr "KullanФБm kФБlavuzu" #: share/gpodder/ui/gtk/gpodder.ui.h:39 msgid "Software updates" msgstr "" #: share/gpodder/ui/gtk/gpodder.ui.h:40 msgid "Filter:" msgstr "Filtre:" #: share/gpodder/ui/gtk/gpodder.ui.h:41 msgid "Podcasts" msgstr "Podcastlar" #: share/gpodder/ui/gtk/gpodder.ui.h:42 msgid "Limit rate to" msgstr "" #: share/gpodder/ui/gtk/gpodder.ui.h:43 msgid "KiB/s" msgstr "KiB/s" #: share/gpodder/ui/gtk/gpodder.ui.h:44 msgid "Limit downloads to" msgstr "" #: share/gpodder/ui/gtk/gpodderwelcome.ui.h:2 #, fuzzy msgid "Welcome to gPodder" msgstr "gPoddera hoХŸgeldiniz" #: share/gpodder/ui/gtk/gpodderwelcome.ui.h:3 msgid "Your podcast list is empty." msgstr "" #: share/gpodder/ui/gtk/gpodderwelcome.ui.h:4 msgid "Choose from a list of example podcasts" msgstr "" #: share/gpodder/ui/gtk/gpodderwelcome.ui.h:5 msgid "Add a podcast by entering its URL" msgstr "" #: share/gpodder/ui/gtk/gpodderwelcome.ui.h:6 msgid "Restore my subscriptions from gpodder.net" msgstr "" #: bin/gpo:266 msgid "Podcast update requested by extensions." msgstr "" #: bin/gpo:270 msgid "Episode download requested by extensions." msgstr "" #: bin/gpo:323 #, python-format msgid "Invalid url: %s" msgstr "" #: bin/gpo:340 bin/gpo:416 bin/gpo:450 bin/gpo:582 bin/gpo:597 bin/gpo:717 #, python-format msgid "You are not subscribed to %s." msgstr "" #: bin/gpo:346 #, python-format msgid "Already subscribed to %s." msgstr "" #: bin/gpo:352 #, python-format msgid "Cannot subscribe to %s." msgstr "" #: bin/gpo:368 #, python-format msgid "Successfully added %s." msgstr "" #: bin/gpo:386 msgid "This configuration option does not exist." msgstr "" #: bin/gpo:390 msgid "Can only set leaf configuration nodes." msgstr "" #: bin/gpo:404 #, python-format msgid "Renamed %(old_title)s to %(new_title)s." msgstr "" #: bin/gpo:420 #, python-format msgid "Unsubscribed from %s." msgstr "" #: bin/gpo:494 #, fuzzy msgid "Updates disabled" msgstr "TУМmУМnУМ gУМncelle" #: bin/gpo:505 #, fuzzy, python-format msgid "%(count)d new episode" msgid_plural "%(count)d new episodes" msgstr[0] "%(count)d bУЖlУМm" #: bin/gpo:511 #, fuzzy msgid "Checking for new episodes" msgstr "Yeni bУЖlУМm" #: bin/gpo:520 #, fuzzy, python-format msgid "Skipping %(podcast)s" msgstr "Podcastler ekleniyor" #: bin/gpo:588 #, python-format msgid "Disabling feed update from %s." msgstr "" #: bin/gpo:603 #, python-format msgid "Enabling feed update from %s." msgstr "" #: bin/gpo:616 #, python-format msgid "Please register a YouTube API key and set it using %(command)s." msgstr "" #: bin/gpo:643 #, python-format msgid "Changing: %(old_url)s => %(new_url)s" msgstr "" #: bin/gpo:653 msgid "Nothing to fix" msgstr "" #: bin/gpo:672 #, fuzzy msgid "No podcasts found." msgstr "Podcast kaldФБr" #: bin/gpo:686 msgid "Enter index to subscribe, ? for list" msgstr "" #: bin/gpo:700 bin/gpo:704 msgid "Invalid value." msgstr "" #: bin/gpo:721 #, python-format msgid "Invalid URL: %s" msgstr "" #: bin/gpo:724 #, python-format msgid "Changed URL from %(old_url)s to %(new_url)s." msgstr "" #: bin/gpo:782 #, python-format msgid "Syntax error: %(error)s" msgstr "" #: bin/gpo:876 msgid "Ambiguous command. Did you mean.." msgstr "" #: bin/gpo:880 msgid "The requested function is not available." msgstr "" #: bin/gpodder:105 msgid "print logging output on the console" msgstr "" #: bin/gpodder:108 msgid "subscribe to the feed at URL" msgstr "" #: bin/gpodder:113 msgid "Mac OS X application process number" msgstr "" #: share/applications/gpodder.desktop.in.h:2 msgid "gPodder Podcast Client" msgstr "gPodder Podcast ФАstemci" #: share/applications/gpodder.desktop.in.h:3 msgid "Podcast Client" msgstr "Podcast ФАstemci" #: share/applications/gpodder.desktop.in.h:4 msgid "Subscribe to audio and video content from the web" msgstr "" #: share/applications/gpodder-url-handler.desktop.in.h:1 msgid "gPodder (subscribe to feed)" msgstr "" gpodder-3.9.0/bin/0000755000016000001710000000000012654461626015045 5ustar jenkinsjenkins00000000000000gpodder-3.9.0/bin/gpodder0000755000016000001710000001306112654461624016416 0ustar jenkinsjenkins00000000000000#!/usr/bin/env python # -*- coding: utf-8 -*- # # gPodder - A media aggregator and podcast client # Copyright (c) 2005-2016 Thomas Perl and the gPodder Team # # gPodder is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 3 of the License, or # (at your option) any later version. # # gPodder is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . # """ gPodder enables you to subscribe to media feeds (RSS, Atom, YouTube, Soundcloud, Vimeo and XSPF) and automatically download new content. This is the gPodder GUI. See gpo(1) for the command-line interface. """ import sys import os import os.path import platform import logging import gettext import subprocess logger = logging.getLogger(__name__) try: import dbus import dbus.glib have_dbus = True except ImportError: print >>sys.stderr, """ Warning: python-dbus not found. Disabling D-Bus support. """ have_dbus = False from optparse import OptionParser def main(): # Paths to important files gpodder_script = sys.argv[0] while os.path.islink(gpodder_script): gpodder_script = os.readlink(gpodder_script) gpodder_dir = os.path.join(os.path.dirname(gpodder_script), '..') prefix = os.path.abspath(os.path.normpath(gpodder_dir)) src_dir = os.path.join(prefix, 'src') locale_dir = os.path.join(prefix, 'share', 'locale') ui_folder = os.path.join(prefix, 'share', 'gpodder', 'ui') credits_file = os.path.join(prefix, 'share', 'gpodder', 'credits.txt') images_folder = os.path.join(prefix, 'share', 'gpodder', 'images') icon_file = os.path.join(prefix, 'share', 'icons', 'hicolor', 'scalable', 'apps', 'gpodder.svg') if os.path.exists(os.path.join(src_dir, 'gpodder', '__init__.py')): # Run gPodder from local source folder (not installed) sys.path.insert(0, src_dir) # on Mac OS X, read from the defaults database the locale of the user if platform.system() == 'Darwin' and 'LANG' not in os.environ: locale_cmd = ('defaults', 'read', 'NSGlobalDomain', 'AppleLocale') process = subprocess.Popen(locale_cmd, stdout=subprocess.PIPE) output, error_output = process.communicate() # the output is a string like 'fr_FR', and we need 'fr_FR.utf-8' user_locale = output.strip() + '.UTF-8' os.environ['LANG'] = user_locale print >>sys.stderr, 'Setting locale to', user_locale # Set up the path to translation files gettext.bindtextdomain('gpodder', locale_dir) import gpodder gpodder.prefix = prefix # Enable i18n for gPodder translations _ = gpodder.gettext # Set up paths to folder with GtkBuilder files and gpodder.svg gpodder.ui_folders.append(ui_folder) gpodder.credits_file = credits_file gpodder.images_folder = images_folder gpodder.icon_file = icon_file s_usage = 'usage: %%prog [options]\n\n%s' % ( __doc__.strip() ) s_version = '%%prog %s' % ( gpodder.__version__ ) parser = OptionParser( usage = s_usage, version = s_version) parser.add_option("-v", "--verbose", action="store_true", dest="verbose", default=False, help=_("print logging output on the console")) parser.add_option('-s', '--subscribe', dest='subscribe', metavar='URL', help=_('subscribe to the feed at URL')) # On Mac OS X, support the "psn" parameter for compatibility (bug 939) if gpodder.ui.osx: parser.add_option('-p', '--psn', dest='macpsn', metavar='PSN', help=_('Mac OS X application process number')) options, args = parser.parse_args(sys.argv) gpodder.ui.gtk = True gpodder.ui.unity = (os.environ.get('DESKTOP_SESSION', 'unknown').lower() in ('ubuntu', 'ubuntu-2d')) from gpodder import log log.setup(options.verbose) if have_dbus: # Try to find an already-running instance of gPodder session_bus = dbus.SessionBus() # Obtain a reference to an existing instance; don't call get_object if # such an instance doesn't exist as it *will* create a new instance if session_bus.name_has_owner(gpodder.dbus_bus_name): try: remote_object = session_bus.get_object(gpodder.dbus_bus_name, gpodder.dbus_gui_object_path) # An instance of GUI is already running logger.info('Activating existing instance via D-Bus.') remote_object.show_gui_window( dbus_interface=gpodder.dbus_interface) if options.subscribe: remote_object.subscribe_to_url(options.subscribe) return except dbus.exceptions.DBusException, dbus_exception: logger.info('Cannot connect to remote object.', exc_info=True) if not gpodder.ui.win32 and os.environ.get('DISPLAY', '') == '': logger.error('Cannot start gPodder: $DISPLAY is not set.') sys.exit(1) if gpodder.ui.gtk: from gpodder.gtkui import main gpodder.ui_folders.insert(0, os.path.join(ui_folder, 'gtk')) main.main(options) else: logger.error('No GUI selected.') if __name__ == '__main__': main() gpodder-3.9.0/bin/gpodder-migrate2tres0000755000016000001710000000740212654461624021026 0ustar jenkinsjenkins00000000000000#!/usr/bin/env python # -*- coding: utf-8 -*- # # gPodder - A media aggregator and podcast client # Copyright (c) 2005-2016 Thomas Perl and the gPodder Team # # gPodder is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 3 of the License, or # (at your option) any later version. # # gPodder is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . # # gpodder-migrate2tres - Migrate data from gPodder 2.x to gPodder 3 # by Thomas Perl ; 2011-04-28 import sys import os import re import ConfigParser import shutil gpodder_script = sys.argv[0] if os.path.islink(gpodder_script): gpodder_script = os.readlink(gpodder_script) gpodder_dir = os.path.join(os.path.dirname(gpodder_script), '..') prefix = os.path.abspath(os.path.normpath(gpodder_dir)) src_dir = os.path.join(prefix, 'src') if os.path.exists(os.path.join(src_dir, 'gpodder', '__init__.py')): # Run gPodder from local source folder (not installed) sys.path.insert(0, src_dir) import gpodder gpodder.prefix = prefix from gpodder import schema from gpodder import util old_database = os.path.expanduser('~/.config/gpodder/database.sqlite') new_database = gpodder.database_file old_config = os.path.expanduser('~/.config/gpodder/gpodder.conf') new_config = gpodder.config_file if not os.path.exists(old_database): print >>sys.stderr, """ Turns out that you never ran gPodder 2. Can't find this required file: %(old_database)s """ % locals() sys.exit(1) old_downloads = None if os.path.exists(old_config): parser = ConfigParser.RawConfigParser() parser.read(old_config) try: old_downloads = parser.get('gpodder-conf-1', 'download_dir') except ConfigParser.NoSectionError: # The file is empty / section (gpodder-conf-1) not found pass except ConfigParser.NoOptionError: # The section is available, but the key (download_dir) is not pass if old_downloads is None: # The user has no configuration. This usually happens when # only the CLI version of gPodder is used. In this case, the # download directory is most likely the default (bug 1434) old_downloads = os.path.expanduser('~/gpodder-downloads') new_downloads = gpodder.downloads if not os.path.exists(old_downloads): print >>sys.stderr, """ Old download directory does not exist. Creating empty one. """ os.makedirs(old_downloads) if any(os.path.exists(x) for x in (new_database, new_downloads)): print >>sys.stderr, """ Existing gPodder 3 user data found. To continue, please remove: %(new_database)s %(new_downloads)s """ % locals() sys.exit(1) print >>sys.stderr, """ Would carry out the following actions: Move downloads from %(old_downloads)s to %(new_downloads)s Convert database from %(old_database)s to %(new_database)s """ % locals() result = raw_input('Continue? (Y/n) ') if result in 'Yy': util.make_directory(gpodder.home) schema.convert_gpodder2_db(old_database, new_database) if not os.path.exists(new_database): print >>sys.stderr, 'Could not convert database.' sys.exit(1) shutil.move(old_downloads, new_downloads) if not os.path.exists(new_downloads): print >>sys.stderr, 'Could not move downloads.' sys.exit(1) print 'Done. Have fun with gPodder 3!' gpodder-3.9.0/bin/gpo0000755000016000001710000007204412654461624015565 0ustar jenkinsjenkins00000000000000#!/usr/bin/env python # -*- coding: utf-8 -*- # # gPodder - A media aggregator and podcast client # Copyright (c) 2005-2016 Thomas Perl and the gPodder Team # # gPodder is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 3 of the License, or # (at your option) any later version. # # gPodder is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . # # gpo - A better command-line interface to gPodder using the gPodder API # by Thomas Perl ; 2009-05-07 """ Usage: gpo [--verbose|-v] [COMMAND] [params...] - Subscription management - subscribe URL [TITLE] Subscribe to a new feed at URL (as TITLE) search QUERY Search the gpodder.net directory for QUERY toplist Show the gpodder.net top-subscribe podcasts import FILENAME|URL Subscribe to all podcasts in an OPML file export FILENAME Export all subscriptions to an OPML file rename URL TITLE Rename feed at URL to TITLE unsubscribe URL Unsubscribe from feed at URL enable URL Enable feed updates for the feed at URL disable URL Disable feed updates for the feed at URL info URL Show information about feed at URL list List all subscribed podcasts update [URL] Check for new episodes (all or only at URL) - Episode management - download [URL] Download new episodes (all or only from URL) pending [URL] List new episodes (all or only from URL) episodes [URL] List episodes (all or only from URL) - Configuration - set [key] [value] List one (all) keys or set to a new value - Other commands - youtube URL Resolve the YouTube URL to a download URL youtubefix Migrate old YouTube subscriptions to new feeds rewrite OLDURL NEWURL Change the feed URL of [OLDURL] to [NEWURL] """ from __future__ import print_function import sys import collections import os import re import inspect import functools import contextlib try: import readline except ImportError: readline = None import shlex import pydoc import logging try: import termios import fcntl import struct except ImportError: termios = None fcntl = None struct = None # A poor man's argparse/getopt - but it works for our use case :) verbose = False for flag in ('-v', '--verbose'): if flag in sys.argv: sys.argv.remove(flag) verbose = True break gpodder_script = sys.argv[0] if os.path.islink(gpodder_script): gpodder_script = os.readlink(gpodder_script) gpodder_dir = os.path.join(os.path.dirname(gpodder_script), '..') # TODO: Read parent directory links as well (/bin -> /usr/bin, like on Fedora, see Bug #1618) # This would allow /usr/share/gpodder/ (not /share/gpodder/) to be found from /bin/gpodder prefix = os.path.abspath(os.path.normpath(gpodder_dir)) src_dir = os.path.join(prefix, 'src') if os.path.exists(os.path.join(src_dir, 'gpodder', '__init__.py')): # Run gPodder from local source folder (not installed) sys.path.insert(0, src_dir) import gpodder _ = gpodder.gettext N_ = gpodder.ngettext gpodder.images_folder = os.path.join(prefix, 'share', 'gpodder', 'images') gpodder.prefix = prefix # This is the command-line UI variant gpodder.ui.cli = True have_ansi = sys.stdout.isatty() and not gpodder.ui.win32 interactive_console = sys.stdin.isatty() and sys.stdout.isatty() is_single_command = False from gpodder import log log.setup(verbose) from gpodder import core from gpodder import download from gpodder import my from gpodder import opml from gpodder import util from gpodder import youtube from gpodder import model from gpodder import common from gpodder.config import config_value_to_string def incolor(color_id, s): if have_ansi and cli._config.ui.cli.colors: return '\033[9%dm%s\033[0m' % (color_id, s) return s def safe_print(*args, **kwargs): def convert(arg): return unicode(util.convert_bytes(arg)) ofile = kwargs.get('file', sys.stdout) output = u' '.join(map(convert, args)) if ofile.encoding is None: output = util.sanitize_encoding(output) else: output = output.encode(ofile.encoding, 'replace') try: ofile.write(output) except Exception, e: print(""" *** ENCODING FAIL *** Please report this to http://bugs.gpodder.org/: args = %s map(convert, args) = %s Exception = %s """ % (repr(args), repr(map(convert, args)), e)) ofile.write(kwargs.get('end', os.linesep)) ofile.flush() # On Python 3 the encoding insanity is gone, so our safe_print() # function simply becomes the normal print() function. Good stuff! if sys.version_info >= (3,): safe_print = print # ANSI Colors: red = 1, green = 2, yellow = 3, blue = 4 inred, ingreen, inyellow, inblue = (functools.partial(incolor, x) for x in range(1, 5)) def FirstArgumentIsPodcastURL(function): """Decorator for functions that take a podcast URL as first arg""" setattr(function, '_first_arg_is_podcast', True) return function def get_terminal_size(): if None in (termios, fcntl, struct): return (80, 24) s = struct.pack('HHHH', 0, 0, 0, 0) stdout = sys.stdout.fileno() x = fcntl.ioctl(stdout, termios.TIOCGWINSZ, s) rows, cols, xp, yp = struct.unpack('HHHH', x) return rows, cols class gPodderCli(object): COLUMNS = 80 EXIT_COMMANDS = ('quit', 'exit', 'bye') def __init__(self): self.core = core.Core() self._db = self.core.db self._config = self.core.config self._model = self.core.model self._current_action = '' self._commands = dict((name.rstrip('_'), func) for name, func in inspect.getmembers(self) if inspect.ismethod(func) and not name.startswith('_')) self._prefixes, self._expansions = self._build_prefixes_expansions() self._prefixes.update({'?': 'help'}) self._valid_commands = sorted(self._prefixes.values()) gpodder.user_extensions.on_ui_initialized(self.core.model, self._extensions_podcast_update_cb, self._extensions_episode_download_cb) @contextlib.contextmanager def _action(self, msg, *args): self._start_action(msg, *args) try: yield self._finish_action() except Exception as ex: logger.warning('Action could not be completed', exc_info=True) self._finish_action(False) def _run_cleanups(self): # Find expired (old) episodes and delete them old_episodes = list(common.get_expired_episodes(self._model.get_podcasts(), self._config)) if old_episodes: with self._action('Cleaning up old downloads'): for old_episode in old_episodes: old_episode.delete_from_disk() def _build_prefixes_expansions(self): prefixes = {} expansions = collections.defaultdict(list) names = sorted(self._commands.keys()) names.extend(self.EXIT_COMMANDS) # Generator for all prefixes of a given string (longest first) # e.g. ['gpodder', 'gpodde', 'gpodd', 'gpod', 'gpo', 'gp', 'g'] mkprefixes = lambda n: (n[:x] for x in xrange(len(n), 0, -1)) # Return True if the given prefix is unique in "names" is_unique = lambda p: len([n for n in names if n.startswith(p)]) == 1 for name in names: is_still_unique = True unique_expansion = None for prefix in mkprefixes(name): if is_unique(prefix): unique_expansion = '[%s]%s' % (prefix, name[len(prefix):]) prefixes[prefix] = name continue if unique_expansion is not None: expansions[prefix].append(unique_expansion) continue return prefixes, expansions def _extensions_podcast_update_cb(self, podcast): self._info(_('Podcast update requested by extensions.')) self._update_podcast(podcast) def _extensions_episode_download_cb(self, episode): self._info(_('Episode download requested by extensions.')) self._download_episode(episode) def _start_action(self, msg, *args): line = util.convert_bytes(msg % args) if len(line) > self.COLUMNS-7: line = line[:self.COLUMNS-7-3] + '...' else: line = line + (' '*(self.COLUMNS-7-len(line))) self._current_action = line safe_print(self._current_action, end='') def _update_action(self, progress): if have_ansi: progress = '%3.0f%%' % (progress*100.,) result = '['+inblue(progress)+']' safe_print('\r' + self._current_action + result, end='') def _finish_action(self, success=True, skip=False): if skip: result = '['+inyellow('SKIP')+']' elif success: result = '['+ingreen('DONE')+']' else: result = '['+inred('FAIL')+']' if have_ansi: safe_print('\r' + self._current_action + result) else: safe_print(result) self._current_action = '' def _atexit(self): self.core.shutdown() # ------------------------------------------------------------------- def import_(self, url): for channel in opml.Importer(url).items: self.subscribe(channel['url'], channel.get('title')) def export(self, filename): podcasts = self._model.get_podcasts() opml.Exporter(filename).write(podcasts) def get_podcast(self, url, create=False, check_only=False): """Get a specific podcast by URL Returns a podcast object for the URL or None if the podcast has not been subscribed to. """ url = util.normalize_feed_url(url) if url is None: self._error(_('Invalid url: %s') % url) return None # Check if it's a YouTube feed, and if we have an API key, auto-resolve the channel url = youtube.resolve_v3_url(url, self._config.youtube.api_key_v3) # Subscribe to new podcast if create: return self._model.load_podcast(url, create=True, max_episodes=self._config.max_episodes_per_feed) # Load existing podcast for podcast in self._model.get_podcasts(): if podcast.url == url: return podcast if not check_only: self._error(_('You are not subscribed to %s.') % url) return None def subscribe(self, url, title=None): existing = self.get_podcast(url, check_only=True) if existing is not None: self._error(_('Already subscribed to %s.') % existing.url) return True try: podcast = self.get_podcast(url, create=True) if podcast is None: self._error(_('Cannot subscribe to %s.') % url) return True if title is not None: podcast.rename(title) podcast.save() except Exception, e: logger.warn('Cannot subscribe: %s', e, exc_info=True) if hasattr(e, 'strerror'): self._error(e.strerror) else: self._error(str(e)) return True self._db.commit() self._info(_('Successfully added %s.' % url)) return True def _print_config(self, search_for): for key in self._config.all_keys(): if search_for is None or search_for.lower() in key.lower(): value = config_value_to_string(self._config._lookup(key)) safe_print(key, '=', value) def set(self, key=None, value=None): if value is None: self._print_config(key) return try: current_value = self._config._lookup(key) current_type = type(current_value) except KeyError: self._error(_('This configuration option does not exist.')) return if current_type == dict: self._error(_('Can only set leaf configuration nodes.')) return self._config.update_field(key, value) self.set(key) @FirstArgumentIsPodcastURL def rename(self, url, title): podcast = self.get_podcast(url) if podcast is not None: old_title = podcast.title podcast.rename(title) self._db.commit() self._info(_('Renamed %(old_title)s to %(new_title)s.') % { 'old_title': util.convert_bytes(old_title), 'new_title': util.convert_bytes(title), }) return True @FirstArgumentIsPodcastURL def unsubscribe(self, url): podcast = self.get_podcast(url) if podcast is None: self._error(_('You are not subscribed to %s.') % url) else: podcast.delete() self._db.commit() self._error(_('Unsubscribed from %s.') % url) return True def is_episode_new(self, episode): return (episode.state == gpodder.STATE_NORMAL and episode.is_new) def _episodesList(self, podcast): def status_str(episode): # is new if self.is_episode_new(episode): return u' * ' # is downloaded if (episode.state == gpodder.STATE_DOWNLOADED): return u' т–‰ ' # is deleted if (episode.state == gpodder.STATE_DELETED): return u' т–‘ ' return u' ' episodes = (u'%3d. %s %s' % (i+1, status_str(e), e.title) for i, e in enumerate(podcast.get_all_episodes())) return episodes @FirstArgumentIsPodcastURL def info(self, url): podcast = self.get_podcast(url) if podcast is None: self._error(_('You are not subscribed to %s.') % url) else: def feed_update_status_msg(podcast): if podcast.pause_subscription: return "disabled" return "enabled" title, url, status = podcast.title, podcast.url, \ feed_update_status_msg(podcast) episodes = self._episodesList(podcast) episodes = u'\n '.join(episodes) self._pager(u""" Title: %(title)s URL: %(url)s Feed update is %(status)s Episodes: %(episodes)s """ % locals()) return True @FirstArgumentIsPodcastURL def episodes(self, url=None): output = [] for podcast in self._model.get_podcasts(): podcast_printed = False if url is None or podcast.url == url: episodes = self._episodesList(podcast) episodes = u'\n '.join(episodes) output.append(u""" Episodes from %s: %s """ % (podcast.url, episodes)) self._pager(u'\n'.join(output)) return True def list(self): for podcast in self._model.get_podcasts(): if not podcast.pause_subscription: safe_print('#', ingreen(podcast.title)) else: safe_print('#', inred(podcast.title), '-', _('Updates disabled')) safe_print(podcast.url) return True def _update_podcast(self, podcast): with self._action(' %s', podcast.title): podcast.update() def _pending_message(self, count): return N_('%(count)d new episode', '%(count)d new episodes', count) % {'count': count} @FirstArgumentIsPodcastURL def update(self, url=None): count = 0 safe_print(_('Checking for new episodes')) for podcast in self._model.get_podcasts(): if url is not None and podcast.url != url: continue if not podcast.pause_subscription: self._update_podcast(podcast) count += sum(1 for e in podcast.get_all_episodes() if self.is_episode_new(e)) else: self._start_action(_('Skipping %(podcast)s') % { 'podcast': podcast.title}) self._finish_action(skip=True) util.delete_empty_folders(gpodder.downloads) safe_print(inblue(self._pending_message(count))) return True @FirstArgumentIsPodcastURL def pending(self, url=None): count = 0 for podcast in self._model.get_podcasts(): podcast_printed = False if url is None or podcast.url == url: for episode in podcast.get_all_episodes(): if self.is_episode_new(episode): if not podcast_printed: safe_print('#', ingreen(podcast.title)) podcast_printed = True safe_print(' ', episode.title) count += 1 util.delete_empty_folders(gpodder.downloads) safe_print(inblue(self._pending_message(count))) return True def _download_episode(self, episode): with self._action('Downloading %s', episode.title): task = download.DownloadTask(episode, self._config) task.add_progress_callback(self._update_action) task.status = download.DownloadTask.QUEUED task.run() @FirstArgumentIsPodcastURL def download(self, url=None): episodes = [] for podcast in self._model.get_podcasts(): if url is None or podcast.url == url: for episode in podcast.get_all_episodes(): if self.is_episode_new(episode): episodes.append(episode) if self._config.downloads.chronological_order: # download older episodes first episodes = list(model.Model.sort_episodes_by_pubdate(episodes)) last_podcast = None for episode in episodes: if episode.channel != last_podcast: safe_print(inblue(episode.channel.title)) last_podcast = episode.channel self._download_episode(episode) util.delete_empty_folders(gpodder.downloads) safe_print(len(episodes), 'episodes downloaded.') return True @FirstArgumentIsPodcastURL def disable(self, url): podcast = self.get_podcast(url) if podcast is None: self._error(_('You are not subscribed to %s.') % url) else: if not podcast.pause_subscription: podcast.pause_subscription = True podcast.save() self._db.commit() self._error(_('Disabling feed update from %s.') % url) return True @FirstArgumentIsPodcastURL def enable(self, url): podcast = self.get_podcast(url) if podcast is None: self._error(_('You are not subscribed to %s.') % url) else: if podcast.pause_subscription: podcast.pause_subscription = False podcast.save() self._db.commit() self._error(_('Enabling feed update from %s.') % url) return True def youtube(self, url): fmt_ids = youtube.get_fmt_ids(self._config.youtube) yurl = youtube.get_real_download_url(url, fmt_ids) safe_print(yurl) return True def youtubefix(self): if not self._config.youtube.api_key_v3: self._error(_('Please register a YouTube API key and set it using %(command)s.') % { 'command': 'set youtube.api_key_v3 KEY', }) return False reported_anything = False for podcast in self._model.get_podcasts(): url, user = youtube.for_each_feed_pattern(lambda url, channel: (url, channel), podcast.url, (None, None)) if url is not None and user is not None: try: logger.info('Getting channels for YouTube user %s (%s)', user, url) new_urls = youtube.get_channels_for_user(user, self._config.youtube.api_key_v3) logger.debug('YouTube channels retrieved: %r', new_urls) if len(new_urls) != 1: self._info('%s: %s' % (url, _('No unique URL found'))) reported_anything = True continue new_url = new_urls[0] if new_url in set(x.url for x in self._model.get_podcasts()): self._info('%s: %s' % (url, _('Already subscribed'))) reported_anything = True continue logger.info('New feed location: %s => %s', url, new_url) self._info(_('Changing: %(old_url)s => %(new_url)s') % {'old_url': url, 'new_url': new_url}) reported_anything = True podcast.url = new_url podcast.save() except Exception as e: logger.error('Exception happened while updating download list.', exc_info=True) self._error(_('Make sure the API key is correct. Error: %(message)s') % {'message': str(e)}) return False if not reported_anything: self._info(_('Nothing to fix')) return True def search(self, *terms): query = ' '.join(terms) if not query: return directory = my.Directory() results = directory.search(query) self._show_directory_results(results) def toplist(self): directory = my.Directory() results = directory.toplist() self._show_directory_results(results, True) def _show_directory_results(self, results, multiple=False): if not results: self._error(_('No podcasts found.')) return if not interactive_console or is_single_command: safe_print('\n'.join(url for title, url in results)) return def show_list(): self._pager('\n'.join(u'%3d: %s\n %s' % (index+1, title, url if title != url else '') for index, (title, url) in enumerate(results))) show_list() msg = _('Enter index to subscribe, ? for list') while True: index = raw_input(msg + ': ') if not index: return if index == '?': show_list() continue try: index = int(index) except ValueError: self._error(_('Invalid value.')) continue if not (1 <= index <= len(results)): self._error(_('Invalid value.')) continue title, url = results[index-1] self._info(_('Adding %s...') % title) self.subscribe(url) if not multiple: break @FirstArgumentIsPodcastURL def rewrite(self, old_url, new_url): podcast = self.get_podcast(old_url) if podcast is None: self._error(_('You are not subscribed to %s.') % old_url) else: result = podcast.rewrite_url(new_url) if result is None: self._error(_('Invalid URL: %s') % new_url) else: new_url = result self._error(_('Changed URL from %(old_url)s to %(new_url)s.') % { 'old_url': old_url, 'new_url': new_url, }) return True def help(self): safe_print(stylize(__doc__), file=sys.stderr, end='') return True # ------------------------------------------------------------------- def _pager(self, output): if have_ansi: # Need two additional rows for command prompt rows_needed = len(output.splitlines()) + 2 rows, cols = get_terminal_size() if rows_needed < rows: safe_print(output) else: pydoc.pager(util.sanitize_encoding(output)) else: safe_print(output) def _shell(self): safe_print(os.linesep.join(x.strip() for x in (""" gPodder %(__version__)s "%(__relname__)s" (%(__date__)s) - %(__url__)s %(__copyright__)s License: %(__license__)s Entering interactive shell. Type 'help' for help. Press Ctrl+D (EOF) or type 'quit' to quit. """ % gpodder.__dict__).splitlines())) cli._run_cleanups() if readline is not None: readline.parse_and_bind('tab: complete') readline.set_completer(self._tab_completion) readline.set_completer_delims(' ') while True: try: line = raw_input('gpo> ') except EOFError: safe_print('') break except KeyboardInterrupt: safe_print('') continue if self._prefixes.get(line, line) in self.EXIT_COMMANDS: break try: args = shlex.split(line) except ValueError, value_error: self._error(_('Syntax error: %(error)s') % {'error': value_error}) continue try: self._parse(args) except KeyboardInterrupt: self._error('Keyboard interrupt.') except EOFError: self._error('EOF.') self._atexit() def _error(self, *args): safe_print(inred(' '.join(args)), file=sys.stderr) # Warnings look like error messages for now _warn = _error def _info(self, *args): safe_print(*args) def _checkargs(self, func, command_line): args, varargs, keywords, defaults = inspect.getargspec(func) args.pop(0) # Remove "self" from args defaults = defaults or () minarg, maxarg = len(args)-len(defaults), len(args) if len(command_line) < minarg or (len(command_line) > maxarg and \ varargs is None): self._error('Wrong argument count for %s.' % func.__name__) return False return func(*command_line) def _tab_completion_podcast(self, text, count): """Tab completion for podcast URLs""" urls = [p.url for p in self._model.get_podcasts() if text in p.url] if count < len(urls): return urls[count] return None def _tab_completion(self, text, count): """Tab completion function for readline""" if readline is None: return None current_line = readline.get_line_buffer() if text == current_line: for name in self._valid_commands: if name.startswith(text): if count == 0: return name else: count -= 1 else: args = current_line.split() command = args.pop(0) command_function = getattr(self, command, None) if not command_function: return None if getattr(command_function, '_first_arg_is_podcast', False): if not args or (len(args) == 1 and not current_line.endswith(' ')): return self._tab_completion_podcast(text, count) return None def _parse_single(self, command_line): try: result = self._parse(command_line) except KeyboardInterrupt: self._error('Keyboard interrupt.') result = -1 self._atexit() return result def _parse(self, command_line): if not command_line: return False command = command_line.pop(0) # Resolve command aliases command = self._prefixes.get(command, command) if command in self._commands: func = self._commands[command] if inspect.ismethod(func): return self._checkargs(func, command_line) if command in self._expansions: safe_print(_('Ambiguous command. Did you mean..')) for cmd in self._expansions[command]: safe_print(' ', inblue(cmd)) else: self._error(_('The requested function is not available.')) return False def stylize(s): s = re.sub(r' .{27}', lambda m: inblue(m.group(0)), s) s = re.sub(r' - .*', lambda m: ingreen(m.group(0)), s) return s if __name__ == '__main__': logger = logging.getLogger(__name__) cli = gPodderCli() args = sys.argv[1:] if args: is_single_command = True cli._run_cleanups() cli._parse_single(args) elif interactive_console: cli._shell() else: safe_print(__doc__, end='')